{"version":3,"file":"js/application-fc499d0b118fdf1f4566.js","mappings":"qTAAA,IAAIA,EAAM,CACT,sBAAuB,MACvB,8BAA+B,MAC/B,wBAAyB,MACzB,4BAA6B,KAC7B,gCAAiC,KACjC,mCAAoC,MACpC,gCAAiC,MACjC,mBAAoB,MACpB,sCAAuC,MACvC,uCAAwC,MACxC,kBAAmB,MACnB,YAAa,MACb,gBAAiB,MACjB,iBAAkB,MAClB,kBAAmB,MACnB,sBAAuB,MACvB,2BAA4B,MAC5B,yBAA0B,MAC1B,2BAA4B,MAC5B,qBAAsB,MACtB,4BAA6B,MAC7B,8BAA+B,MAC/B,+BAAgC,OAIjC,SAASC,EAAeC,GACvB,IAAIC,EAAKC,EAAsBF,GAC/B,OAAOG,EAAoBF,EAC5B,CACA,SAASC,EAAsBF,GAC9B,IAAIG,EAAoBC,EAAEN,EAAKE,GAAM,CACpC,IAAIK,EAAI,IAAIC,MAAM,uBAAyBN,EAAM,KAEjD,MADAK,EAAEE,KAAO,mBACHF,CACP,CACA,OAAOP,EAAIE,EACZ,CACAD,EAAeS,KAAO,WACrB,OAAOC,OAAOD,KAAKV,EACpB,EACAC,EAAeW,QAAUR,EACzBS,EAAOC,QAAUb,EACjBA,EAAeE,GAAK,K,muECvCdY,SAASC,UAAUC,UACvBF,SAASC,UAAUC,QAAUC,MAAMF,UAAUC,SAW5C,CAACE,QAAQH,UAAWI,cAAcJ,UAAWK,aAAaL,WALvDC,SAAQ,SAAUK,GACpBA,EAAKC,OAASD,EAAKC,QAAU,WAC3BC,KAAKC,WAAWC,YAAYF,KAC9B,CACF,I,iGCZWG,EAAY,WAAH,OACpBC,EAAAA,cAACC,EAAAA,EAAG,CACFC,QAAQ,OACRC,WAAW,SACXC,eAAe,SACfC,MAAO,CAAEC,OAAQ,SAEjBN,EAAAA,cAACO,EAAAA,EAAU,CACT,cAAY,cACZC,KAAK,KACLH,MAAO,CAAEI,MAAO,WAEd,E,WCZKC,EAAY,WAAH,OACpBV,EAAAA,cAACC,EAAAA,EAAG,CACFC,QAAQ,OACRC,WAAW,SACXC,eAAe,SACfC,MAAO,CAAEC,OAAQ,SAEjBN,EAAAA,cAACW,EAAAA,EAAS,CAAC,cAAY,aAAaH,KAAK,KAAKH,MAAO,CAAEI,MAAO,WAC1D,E,2ICZKG,EAAc,CACzBC,gBAAgB,EAChBC,YAAY,EACZC,UAAW,EACXC,SAAU,EACVC,SAAU,IACVC,mBAAoB,EACpBC,gBAAgB,EAChBC,gBAAgB,EAChBtC,KAAM,CACJ,CAAEuC,KAAM,OAAQC,OAAQ,IACxB,CAAED,KAAM,qBAAsBC,OAAQ,IACtC,CAAED,KAAM,eAAgBC,OAAQ,IAChC,CAAED,KAAM,cAAeC,OAAQ,MCMnC,QAjBmB,SAACC,EAAKC,IACvBC,EAAAA,EAAAA,GAAM,CACJC,OAAQ,OACRC,IAAK,iBACLC,KAAM,CACJL,IAAAA,EACAM,sBAAuBL,GAEzBM,QAAS,CACP,mBAAoBC,OAAOf,SAASgB,KACpC,eAAgBC,SACbC,kBAAkB,cAAc,GAChCC,aAAa,aAGtB,ECjBO,IAAMC,EAAW,SAACC,EAAMC,GAC7B,IAAIC,EACJ,OAAO,WAAkB,IAAC,IAADC,EAAA,KAAAC,EAAAC,UAAAC,OAANC,EAAI,IAAAtD,MAAAmD,GAAAI,EAAA,EAAAA,EAAAJ,EAAAI,IAAJD,EAAIC,GAAAH,UAAAG,GACrBC,aAAaP,GACbA,EAAQQ,YAAW,kBAAMV,EAAKW,MAAMR,EAAMI,EAAK,GAAEN,EACnD,CACF,ECLA,SAAgB,cAAgB,sCAAsC,YAAc,oCAAoC,WAAa,mCAAmC,qBAAuB,6CAA6C,oBAAsB,4CAA4C,qBAAuB,6CAA6C,kBAAoB,0CAA0C,yBAA2B,iDAAiD,kBAAoB,0CAA0C,uBAAyB,+CAA+C,uBAAyB,+CAA+C,kBAAoB,2C,whECDvtB,I,IAAMW,EAAY,SACvBC,GAGI,IAFJC,EAAST,UAAAC,OAAA,QAAAS,IAAAV,UAAA,GAAAA,UAAA,GAAG,GACZW,EAAcX,UAAAC,OAAA,QAAAS,IAAAV,UAAA,GAAAA,UAAA,GAAG,YAuCjB,OAAOQ,EACHA,EACGI,QAAO,SAAAC,GAAA,IAAGC,EAAOD,EAAPC,QAAO,OAAOA,GAAWA,EAAQb,MAAM,IACjDvE,KAAI,SAAAqF,GAAwB,IAArB/D,EAAI+D,EAAJ/D,KAAM8D,EAAOC,EAAPD,QACNE,E,+VAAeC,CAAA,GAAQjE,GAS7B,OAPA8D,EAAQnE,SAAQ,SAACuE,GACfF,EAAgBE,EAAMrC,KA5CF,SAACsC,GAAwB,IAAlBC,EAAOpB,UAAAC,OAAA,QAAAS,IAAAV,UAAA,GAAAA,UAAA,GAAG,GACzCqB,GAAY,EACZC,EAAgB,EAEdC,EAAsB,SAACC,GAC3B,GAAIF,EAAgBE,EAAOvB,OAASQ,EAAW,CAC7C,IAAMgB,EAAkBD,EAAOE,MAAM,EAAGjB,EAAYa,GAGpD,OAFAA,GAAiBG,EAAgBxB,OACjCoB,GAAY,EACLI,CACT,CAEA,OADAH,GAAiBE,EAAOvB,OACjBuB,CACT,EAEMG,EAAUP,EAAQQ,QAAO,SAACC,EAAGC,EAAgBC,GAAS,IAADC,EAAAC,EAAAH,EAAA,GAArBI,EAAKF,EAAA,GAAEG,EAAGH,EAAA,GACxCI,EAAcb,EAAoBJ,EAAKO,MAAMJ,EAAeY,IAC5DG,EAAmBd,EAAoBJ,EAAKO,MAAMQ,EAAOC,EAAM,IAC/DG,EACJP,IAAQX,EAAQnB,OAAS,EACrBsB,EAAoBJ,EAAKO,MAAMS,EAAM,IACrC,GAEAtD,EAAG,SAAA0D,OAAYR,GAQrB,OAPAF,EAAIW,KACFlF,EAAAmF,cAAA,QAAM5D,IAAKA,GACRuD,EACD9E,EAAAmF,cAAA,UAAQC,UAAW/B,GAAiB0B,GACnCC,IAGET,CACT,GAAG,IAEH,OAAOR,EAAS,GAAAkB,OAAAI,EAAOhB,GAAO,CAAE,QAASA,CAC3C,CASuCiB,CAC3B1B,EAAM2B,MACN3B,EAAM4B,QAEV,IAEO,CAAE9B,gBAAAA,EAAiBF,QAAAA,EAC5B,IACF,EACN,E,8mECnCA,IAAMiC,EAAKC,IAAAA,KAAgBC,GAErBC,EAES,mBAFTA,EAGO,eAHPA,EAIS,+BAJTA,EAKW,aALXA,EAMe,kBAKfC,GAAaC,EAAAA,EAAAA,IAAOC,EAAAA,GAAKC,KAAZF,CAAiBG,IAAAA,EAAAC,EAAA,oHACdC,EAAAA,EAAOC,OACAD,EAAAA,EAAOE,OAGZF,EAAAA,EAAOG,QAIzBC,EAAa,SAAH/B,GAA8B,IAAxBgC,EAAIhC,EAAJgC,KAAMC,EAAUjC,EAAViC,WAG1B,OAFuBxD,EAAUuD,EAAKpC,MAAM,EAZxB,IAcEhG,KAAI,SAACsI,EAAQjC,EAAKkC,GACtC,IAAyBC,EAAQF,EAAzBhD,gBACFmD,EAAUF,EAAIhE,OAAS,GAAK8B,IAAQkC,EAAIhE,OAAS,EAEvD,OACE3C,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC+F,EAAAA,GAAKC,KAAI,CAACzE,IAAKqF,EAAIE,KAAM1B,UAAWK,EAAGE,EAAOoB,oBAC7C/G,EAAAA,cAACgH,EAAAA,EAAI,CAACC,KAAI,SAAAhC,OAAW2B,EAAIE,OACvB9G,EAAAA,cAACkH,EAAAA,EAAI,CACH/G,WAAW,SACXiF,UAAWK,EAAGE,EAAOwB,yBAErBnH,EAAAA,cAACkH,EAAAA,EAAI,CAAC/G,WAAW,SAASC,eAAe,UACvCJ,EAAAA,cAAA,OACEoH,IAAG,YAAAnC,OAAc2B,EAAIvF,MACrBgG,IAAKT,EAAIU,eACTlC,UAAWK,EAAGE,EAAO4B,2BAGzBvH,EAAAA,cAACkH,EAAAA,EAAI,CAACM,YAAY,KAAKC,UAAU,UAC/BzH,EAAAA,cAAC0H,EAAAA,EAAU,KAAEd,EAAIvF,MACjBrB,EAAAA,cAAC0H,EAAAA,EAAU,CAACjH,MAAM,UAAUmG,EAAIe,wBAKvCd,GACC7G,EAAAA,cAAC6F,EAAU,CAACtE,IAAKkF,GACfzG,EAAAA,cAACgH,EAAAA,EAAI,CAACC,KAAI,yBAAAhC,OAA2BwB,IACnCzG,EAAAA,cAACkH,EAAAA,EAAI,CACH/G,WAAW,SACXiF,UAAWK,EAAGE,EAAOwB,yBAErBnH,EAAAA,cAAC0H,EAAAA,EAAU,KAAC,uBAO1B,GACF,EAQME,EAAgCxF,GANR,SAACqE,EAAYoB,GAAK,OAC9CC,EAAW,gCAAiC,CAC1CC,wBAAyBtB,EACzBuB,yBAA0BH,GACzB,GAEiE,KAChEI,IAAenC,EAAAA,EAAAA,IAAOoC,EAAAA,EAAPpC,CAAcqC,IAAAA,EAAAjC,EAAA,0BAiJnC,SA7IyB,SAAHxB,GAMf,IAAD0D,EALJC,EAAiB3D,EAAjB2D,kBACAC,EAAI5D,EAAJ4D,KACAC,EAAe7D,EAAf6D,gBAAeC,EAAA9D,EACf+D,eAAAA,OAAc,IAAAD,EAAG,GAAEA,EACnBE,EAAiBhE,EAAjBgE,kBAEiEC,EAAAhE,GAAxBiE,EAAAA,EAAAA,UAASH,GAAe,GAA1DhC,EAAUkC,EAAA,GAAEE,EAAkBF,EAAA,GAC/BG,EAAgBJ,GAAqBG,GAC3CE,EAAAA,EAAAA,YAAU,WACRD,EAAcL,EAChB,GAAG,CAACA,IAEJ,IAGEO,EAAArE,GAHwBiE,EAAAA,EAAAA,UAAS,CACjCK,iBAAkB,GAClBC,gBAAiB,WACjB,GAHKC,EAAKH,EAAA,GAAEI,EAAQJ,EAAA,GAKhBK,EAAiB,SAACC,GAAQ,OAC9BF,EAAQzF,EAAAA,EAAC,CAAC,EACLwF,GACAG,GACF,GAELP,EAAAA,EAAAA,YAAU,WACHT,GACH7G,EAAAA,EAAM8H,IAAIlB,GAAmBmB,MAAK,SAACC,GACjC,IAAMH,EAAW,CACfhB,KAAM,IAAIoB,EAAAA,EAAKD,EAAI7H,KAAMhB,IAEvB6F,IACF6C,EAASL,iBAAmBK,EAAShB,KAAKqB,OAAOlD,IAEnD4C,EAAeC,EACjB,GAEJ,GAAG,KAEHP,EAAAA,EAAAA,YAAU,WACJtC,EAAW9D,OAAS,GACtB0G,EAAe,CACbJ,iBAAkBX,EACdA,EAAKqB,OAAOlD,GACZ0C,EAAMb,KAAKqB,OAAOlD,KAExBmB,EAA8BnB,EAAY0C,EAAMF,iBAAiBtG,SAEjE0G,EAAe,CACbJ,iBAAkB,IAGxB,GAAG,CAACxC,IAeJ,OACEzG,EAAAA,cAACkH,EAAAA,EAAI,CACHO,UAAU,SACVrH,eAAe,SACfgF,UAAWK,EAAGE,EAAOiE,gBAErB5J,EAAAA,cAACiI,GAAY,CACX4B,aAAa,MACbtL,GAAG,oBACH6G,UAAWK,EAAGE,EAAOmE,aACrBC,SACExB,IACCA,EAAgByB,UACbzB,EAAgByB,UAAYzB,EAAgB3G,KAAKe,QAEvDsH,YA3BC1B,EAGc,OAAfA,QAAe,IAAfA,GAAAA,EAAiByB,QACZpE,EAEW,OAAf2C,QAAe,IAAfA,GAAAA,EAAiByB,SAA2B,OAAfzB,QAAe,IAAfA,GAAAA,EAAiB3G,KAAKe,OAGjDiD,EAFEA,EANAA,EA2BLL,MAAOkB,EACPyD,QAAS,WAAF,OACLzD,EAAW9D,OAAS,GACpB0G,EAAe,CAAEH,gBAAiB,WAAY,EAEhDiB,OAAQ,WAAF,OAAQd,EAAe,CAAEH,gBAAiB,UAAW,EAC3DkB,SAAU,SAACzL,GACT,IAAM0L,EAAM1L,EAAE2L,OAAO/E,MACrBuD,EAAcuB,GACdhB,EAAe,CACbH,gBAAiBmB,EAAI1H,OAAS,EAAI,UAAY,UAElD,EACA4H,SAAU,WAAF,OACLxI,OAAOf,SAASiG,KAAI,yBAAAhC,OAA4BwB,EAAY,IAGjEzG,EAAAA,cAACC,EAAAA,EAAG,CACFmF,UAAWK,EAAG,GAADR,OAEiB,YAA1BkE,EAAMD,gBACFvD,EAAO6E,qBACP7E,EAAO8E,qBAEb9E,EAAO+E,uBAGT1K,EAAAA,cAAC2K,EAAAA,EAAI,KACH3K,EAAAA,cAAC+F,EAAAA,GAAI,CACHX,UAAWK,EAAGE,EAAOiF,mBACrBC,YAAa,SAAClM,GAAC,OAAKA,EAAEmM,gBAAgB,GAEtC9K,EAAAA,cAAC+F,EAAAA,GAAKgF,QAAO,CAAC3F,UAAWK,EAAGE,EAAOqF,2BACG,KAAb,QAAtB5C,EAAAe,EAAMF,wBAAgB,IAAAb,OAAA,EAAtBA,EAAwBzF,QACvB3C,EAAAA,cAACiL,EAAAA,EAAC,CAAC7F,UAAWK,EAAGE,EAAOuF,oBACrB/B,EAAMQ,OAAS/D,EAAiBA,GAGnC5F,EAAAA,cAACuG,EAAU,CACTC,KAAM2C,EAAMF,iBACZxC,WAAYA,QAS9B,E,8DCjOa0E,GAA6B,SAACxM,GACzCA,EAAEmM,iBAEFM,GAAEzM,EAAE2L,QAAQe,MAAM,CAChBC,aAAc,KAElB,E,yxCCVA,IAAM1F,GACG,QADHA,GAEI,SAFJA,GAGW,iBAGX2F,GAAU,SAAAC,GACd,SAAAD,EAAYE,GAAO,O,4FAAAC,CAAA,KAAAH,GAAAI,GAAA,KAAAJ,EAAA,CACXE,GACR,CAAC,O,sRAAAG,CAAAL,EAAAC,G,EAAAD,G,EAAA,EAAAhK,IAAA,cAAAgE,MAED,SAAYsG,EAAcC,EAAUC,GAClC,MAAM,GAAN9G,OAAU4G,EAAY,KAAA5G,OAAI6G,EAAQ,KAAA7G,OAAI8G,EACxC,GAAC,CAAAxK,IAAA,kBAAAgE,MAED,SAAgByG,GACd,MAAM,IAAN/G,OAA6B,WAAlB+G,EAASC,KAAoB,UAAY,aAAY,KAAAhH,OAAI+G,EAASlF,KAC/E,GAAC,CAAAvF,IAAA,gBAAAgE,MAED,SAAc0B,EAAMpD,GAClB,OACE7D,EAAAA,cAAA,OAAKuB,IAAG,GAAA0D,OAAKgC,EAAI,KAAAhC,OAAIpB,GAAQuB,UAAU,0BACrCpF,EAAAA,cAAA,KAAGiH,KAAMA,GAAOpD,GAGtB,GAAC,CAAAtC,IAAA,2BAAAgE,MAED,SAAyBsG,GAAe,IAADrJ,EAAA,KAC/B0J,EAAQ,CAACtM,KAAKuM,cAAcN,EAAc,QAIhD,OAHAjM,KAAK6L,MAAMW,WAAW/M,SAAQ,SAAA2M,GAC5BE,EAAMhH,KAAK1C,EAAK2J,cAAc3J,EAAK6J,gBAAgBL,GAAWA,EAAS3K,MACzE,IACO6K,CACT,GAAC,CAAA3K,IAAA,SAAAgE,MAED,WACE,IAAA+G,EAWI1M,KAAK6L,MAVPI,EAAYS,EAAZT,aACAU,EAAQD,EAARC,SACAC,EAAiBF,EAAjBE,kBACAC,EAAYH,EAAZG,aACAC,EAAaJ,EAAbI,cACAC,EAAYL,EAAZK,aACAC,EAAUN,EAAVM,WACAC,EAAWP,EAAXO,YACAC,EAAiBR,EAAjBQ,kBACAC,EAAUT,EAAVS,WAGF,OACE/M,EAAAA,cAAA,OAAKoF,UAAU,yBACbpF,EAAAA,cAAA,OAAKoF,UAAU,uCACbpF,EAAAA,cAAA,QAAMoF,UAAU,4BAA2BpF,EAAAA,cAAA,KAAGoF,UAAU,eAAiB,SAE3EpF,EAAAA,cAAA,OAAKoF,UAAU,yCACbpF,EAAAA,cAAA,OAAKoF,UAAU,6BACbpF,EAAAA,cAAA,MAAIoF,UAAU,mCAAkC,YAChDpF,EAAAA,cAAA,OAAKoF,UAAU,mCAAkCpF,EAAAA,cAAA,KAAGiH,KAAMrH,KAAKoN,YAAYnB,EAAc,UAAW,SAAS,SAE/G7L,EAAAA,cAAA,MAAIoF,UAAU,SACdpF,EAAAA,cAAA,OAAKoF,UAAU,6BACbpF,EAAAA,cAAA,MAAIoF,UAAU,mCAAkC,cAC/CxF,KAAKqN,yBAAyBpB,IAGjC7L,EAAAA,cAAA,MAAIoF,UAAU,SACbpF,EAAAA,cAAA,OAAKoF,UAAU,6BACdpF,EAAAA,cAAA,MAAIoF,UAAU,mCAAkC,qBAC/CxF,KAAKuM,cAAcO,EAAe,aAClC9M,KAAKuM,cAAcQ,EAAc,YACjC/M,KAAKuM,cAAcI,EAAU,OAC7B3M,KAAKuM,cAAcK,EAAmB,oBACtC5M,KAAKuM,cAAcM,EAAc,4BAClCzM,EAAAA,cAAA,OAAKoF,UAAU,0BACbpF,EAAAA,cAAA,KAAGiH,KAAK,eAAeiG,QAAS/B,IAA4B,mBAG3D4B,EAGC/M,EAAAA,cAAAA,EAAAA,SAAA,KACGJ,KAAKuM,cAAcU,EAAajH,IAChChG,KAAKuM,cAAcW,EAAmBlH,KAJzChG,KAAKuM,cAAcS,EAAYhH,MAY7C,M,2FAAC,CApFa,CAAS5F,EAAAA,WAyGzB,Y,yxCC1GA,IAAMmN,GAAuB,CAC3BC,KAAM,sBACNC,MAAO,uBACPC,KAAM,uBAGFC,GAAQ,SAAA/B,GACZ,SAAA+B,EAAY9B,GAAQ,IAADjJ,EAO8C,O,4FAP9CkJ,CAAA,KAAA6B,IACjB/K,EAAAmJ,GAAA,KAAA4B,EAAA,CAAM9B,KACDtC,MAAQ,CACXqE,OAAQhL,EAAKiJ,MAAMgC,eAIrBjL,EAAKkL,oBAAsBlL,EAAKkL,oBAAoBC,KAAInL,GAAOA,CACjE,CAAC,O,sRAAAoJ,CAAA2B,EAAA/B,G,EAAA+B,G,EAAA,EAAAhM,IAAA,sBAAAgE,MAED,WACE3F,KAAKwJ,SAAS,CAAEoE,QAAS5N,KAAKuJ,MAAMqE,QACtC,GAAC,CAAAjM,IAAA,qBAAAgE,MAED,WAEE3F,KAAKwJ,SAAS,CAAEoE,QAAQ,GAC1B,GAAC,CAAAjM,IAAA,SAAAgE,MAED,WAAU,IAADqI,EAAA,KACPtB,EAMI1M,KAAK6L,MALPoC,EAAavB,EAAbuB,cACAC,EAAiBxB,EAAjBwB,kBACAC,EAAczB,EAAdyB,eACA3I,EAASkH,EAATlH,UACA4I,EAAU1B,EAAV0B,WAGMR,EAAW5N,KAAKuJ,MAAhBqE,OAEFS,EAAyBd,GAAqBW,GAC9CI,EAAkBzI,KAAG,WAAYwI,EAAwB,CAC7D,iBAAkBT,IAGpB,OACExN,EAAAA,cAAA,QAAMoF,UAAWA,GACfpF,EAAAA,cAAA,QAAMoF,UAAW8I,GAEflO,EAAAA,cAAA,QAAMoF,UAAU,mBAAmB8H,QAAStN,KAAK8N,qBAC9CK,GAGH/N,EAAAA,cAAA,OACEoF,UAAU,6CAEV/E,MAAO2N,EACPd,QAAS,WACPW,GAAiBD,EAAKF,qBACxB,GAEC9N,KAAK6L,MAAM0C,WAKtB,M,2FAAC,CAzDW,CAASnO,EAAAA,WAsEvBuN,GAASa,aAAe,CACtBN,kBAAmB,OACnBL,eAAe,GAGjB,YCrFA,UAAeY,E,SAAAA,GAAed,ICJ9B,IAAgB,aAAe,qCAAqC,SAAW,iCAAiC,kBAAoB,0CAA0C,MAAQ,8BAA8B,QAAU,gCAAgC,OAAS,gCCKvQ,IAAM9H,GAAKC,IAAAA,KAAgBC,IAErBC,GACI,SADJA,GAEW,iBAGX0I,GAAS,WAAH,OACVtO,EAAAA,cAAA,OACE,UAAQ,cACRoF,UAAWK,GAAGE,GAAO4I,eACrBvO,EAAAA,cAAA,QAAMoF,UAAWK,GAAGE,GAAO6I,YACvB,EAiDR,MClEA,GDoBmB,SAAHhK,GAA4D,IAAtDiK,EAAKjK,EAALiK,MAAOC,EAAOlK,EAAPkK,QAAS7B,EAAWrI,EAAXqI,YAAaC,EAAiBtI,EAAjBsI,kBACjD,OACE9M,EAAAA,cAACuN,GAAQ,CACPS,WAAY,CAAEW,MAAO,SACrBb,kBAAkB,OAClBC,eAAgB/N,EAAAA,cAACsO,GAAM,OAEvBtO,EAAAA,cAAA,OAAKoF,UAAWK,GAAGE,GAAOiJ,oBACxB5O,EAAAA,cAAA,OACE,UAAQ,gBACRoF,UAAWK,GAAGE,GAAO8I,QACpBA,GAEHzO,EAAAA,cAAA,OACE,UAAQ,eACRoF,UAAWK,GAAGE,GAAO+I,UACpBA,GAEH1O,EAAAA,cAAA,OAAKoF,UAAWK,GAAGE,GAAOkJ,SAExB7O,EAAAA,cAAA,OACE,UAAQ,wBACRoF,UAAWK,GAAG,iBACdyH,QAAS,WAAF,OAAQnL,OAAOf,SAAW8L,CAAiB,GACjDlH,IAGH5F,EAAAA,cAAA,OACE,UAAQ,wBACRoF,UAAWK,GAAG,iBACdyH,QAAS,WAAF,OAAQnL,OAAOf,SAAW6L,CAAW,GAC3CjH,MAMb,E,unDE9CA,IAAMA,GACS,uBADTA,GAEQ,eAFRA,GAGU,iBAHVA,GAIC,MAJDA,GAKY,mBALZA,GAMM,WANNA,GAOG,SAPHA,GAQO,YAGPkJ,GAAgB,SACpBC,EACA/C,EACAgD,EACAC,EACAC,EACAC,GAEoB,qBAATC,MACTA,KAAK,QAASL,EAAQ,CACpBM,eAAgBrD,EAChBsD,YAAaN,EACbG,UAAAA,IAGJrH,EAAW,oBAAD7C,OAAqBgK,G,kWAAYtL,CAAA,CACzC4L,SAAUlO,MACP6N,GAEP,EAEMM,GAAY,SAAAhE,GAChB,SAAAgE,EAAY/D,GAAQ,IAADjJ,EAO8C,O,4FAP9CkJ,CAAA,KAAA8D,IACjBhN,EAAAmJ,GAAA,KAAA6D,EAAA,CAAM/D,KACDtC,MAAQ,CACXsG,QAAShE,EAAMgE,QACfC,cAAejE,EAAMiE,eAGvBlN,EAAKmN,aAAevN,EAASI,EAAKmN,aAAahC,KAAInL,GAAQ,IAAIA,CACjE,CAAC,O,sRAAAoJ,CAAA4D,EAAAhE,G,EAAAgE,G,EAAA,EAAAjO,IAAA,oBAAAgE,MAED,WACExD,OAAO6N,iBAAiB,SAAUhQ,KAAK+P,aACzC,GAAC,CAAApO,IAAA,uBAAAgE,MAED,WACExD,OAAO8N,oBAAoB,SAAUjQ,KAAK+P,aAC5C,GAAC,CAAApO,IAAA,eAAAgE,MAED,WACE,GAAI3F,KAAK6L,MAAMqE,gBAAiB,CAC9B,IAAMC,EAAUhO,OAAOiO,aAAe/N,SAASgO,gBAAgBC,UAE/DtQ,KAAKwJ,SAAS,CACZqG,QAASM,GAAW,GAExB,CACF,GAAC,CAAAxO,IAAA,eAAAgE,MAED,SAAa4K,GAEX,OADa5G,KAAIxH,OAAQ,CAAC,WAAY,QAAS,IACnCqO,QAAQD,IAAS,CAC/B,GAAC,CAAA5O,IAAA,cAAAgE,MAED,WAGE,MAFkB,UAED8K,KAAKtO,OAAOf,SAASiG,MAAQlF,OAAOf,SAASiG,KAAO,IACvE,GAAC,CAAA1F,IAAA,0BAAAgE,MAED,WACE,IAAQsH,EAAgBjN,KAAK6L,MAArBoB,YAGR,OAFiBjN,KAAK0Q,cAEP,GAAArL,OACR4H,EAAW,cAAA5H,OAAarF,KAAK0Q,eAChCzD,CACN,GAAC,CAAAtL,IAAA,SAAAgE,MAED,WACE,IAAA+G,EAuBI1M,KAAK6L,MAtBPsB,EAAUT,EAAVS,WACAwD,EAAWjE,EAAXiE,YACAC,EAAclE,EAAdkE,eACAC,EAAkBnE,EAAlBmE,mBACAC,EAAUpE,EAAVoE,WACAC,EAAmBrE,EAAnBqE,oBACA1H,EAAgBqD,EAAhBrD,iBACAyD,EAAaJ,EAAbI,cACAC,EAAYL,EAAZK,aACAC,EAAUN,EAAVM,WACAE,EAAiBR,EAAjBQ,kBACAP,EAAQD,EAARC,SACAE,EAAYH,EAAZG,aACAD,EAAiBF,EAAjBE,kBACAX,EAAYS,EAAZT,aACAxD,EAAiBiE,EAAjBjE,kBACA+D,EAAUE,EAAVF,WACAwE,EAAmBtE,EAAnBsE,oBACArI,EAAe+D,EAAf/D,gBACA9B,EAAU6F,EAAV7F,WACAqC,EAAawD,EAAbxD,cACAR,EAAIgE,EAAJhE,KAGIuI,EAAgBpL,KACpB,eACA,mCACA,CAAE,eAAgB7F,KAAKuJ,MAAMsG,SAAwC,IAA7B7P,KAAKuJ,MAAMuG,gBAGrD,OACE1P,EAAAA,cAAA,UAAQoF,UAAWyL,GACjB7Q,EAAAA,cAAA,OAAKoF,UAAU,2BACbpF,EAAAA,cAAA,OAAKoF,UAAU,QACbpF,EAAAA,cAAA,KAAGiH,KAAM0J,GACP3Q,EAAAA,cAAA,OACEqH,IAAKoJ,EACLrJ,IAAKxB,GACLrH,GAAG,eACH6G,UAAU,8BAIhBpF,EAAAA,cAAA,OAAKoF,UAAU,4BACXwL,GACA5Q,EAAAA,cAAC8Q,GAAgB,CACfJ,WAAYA,EACZzH,iBAAkBA,EAClBwD,aAAcA,EACdpE,kBAAmBA,EACnB0I,oBAAqB5F,GACrB5C,gBAAiBA,EACjB9B,WAAYA,EACZqC,cAAeA,EACfR,KAAMA,KAIZtI,EAAAA,cAAA,OAAKoF,UAAU,kBACbpF,EAAAA,cAAA,KACEiH,KAAMyF,EACNpC,OAAO,SACP4C,QAAS,WAAF,OACL4B,GACE,QACA,OACA,qBACA,2BACD,EAEHkC,IAAI,cAEHpL,IAEH5F,EAAAA,cAAA,KAAGiH,KAAM0F,GAAe/G,IACxB5F,EAAAA,cAAA,KACEiH,KAAMsF,EACNnH,UAAWK,KAAG,oBAAqB,CACjCwL,OAAQrR,KAAKsR,aAAa3E,MAG3B3G,IAEH5F,EAAAA,cAAA,KAAGiH,KAAMuF,GAAoB5G,IAC7B5F,EAAAA,cAAA,KACEiH,KAAMwF,EACNrH,UAAWK,KAAG,sBAAuB,CACnCwL,OAAQrR,KAAKsR,aAAazE,MAG3B7G,IAEH5F,EAAAA,cAAA,KAAGiH,KAAK,eAAeiG,QAAS/B,IAC7BvF,IAEDmH,EASA/M,EAAAA,cAACmR,GAAU,CACTtE,YAAajN,KAAKwR,0BAClBtE,kBAAmBA,EACnB2B,MAAO8B,EAAY9B,MACnBC,QAAS8B,EAAenP,OAZ1BrB,EAAAA,cAAA,KACE,UAAQ,wBACRiH,KAAM2F,EACNxH,UAAWK,KAAG,wBAEbG,KAWP5F,EAAAA,cAACuL,GAAU,CACTM,aAAcA,EACdkB,WAAYA,EACZH,WAAYA,EACZC,YAAajN,KAAKwR,0BAClBtE,kBAAmBA,EACnByD,YAAaA,EACb7D,cAAeA,EACfC,aAAcA,EACdJ,SAAUA,EACVC,kBAAmBA,EACnBC,aAAcA,EACdL,WAAYA,KAKtB,M,2FAAC,CApLe,CAASpM,EAAAA,WA0N3B,Y,yOC1PyB8F,EAAAA,EAAAA,IAAOoB,EAAAA,EAAPpB,CAAYG,KAAAA,GAAAC,GAAA,oHAQXJ,EAAAA,EAAAA,IAAOoB,EAAAA,EAAPpB,CAAYqC,KAAAA,GAAAjC,GAAA,mHAQpBJ,EAAAA,GAAOuL,IAAGC,KAAAA,GAAApL,GAAA,4CAKVJ,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWyL,KAAAA,GAAArL,GAAA,6CArB7B,I,SA0BMsL,IAAiB1L,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAW2L,KAAAA,GAAAvL,GAAA,2PAiB5BwL,GAAQ5L,EAAAA,GAAOuL,IAAGM,KAAAA,GAAAzL,GAAA,kLAEFC,EAAAA,EAAOyL,MACPzL,EAAAA,EAAOE,QAQvBwL,IAAa/L,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWgM,KAAAA,GAAA5L,GAAA,wcACRC,EAAAA,EAAOyL,MAQPzL,EAAAA,EAAOE,OAMd0L,GAAAA,EAAQC,IAejBC,IAAenM,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWoM,KAAAA,GAAAhM,GAAA,4mBAFZ,GAiCZwL,IAUFS,IAAiBrM,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWsM,KAAAA,GAAAlM,GAAA,qjBAEZC,EAAAA,EAAOE,OAuBXF,EAAAA,EAAOE,QAiHnBgM,KA5FavM,EAAAA,EAAAA,IAAOkB,EAAAA,EAAPlB,CAAYwM,KAAAA,GAAApM,GAAA,8BAIZJ,EAAAA,EAAAA,IAAOyM,GAAAA,EAAPzM,CAAa0M,KAAAA,GAAAtM,GAAA,0HASTJ,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAW2M,KAAAA,GAAAvM,GAAA,yMAcfJ,EAAAA,GAAOuL,IAAGqB,KAAAA,GAAAxM,GAAA,uIAOCJ,EAAAA,GAAO6M,OAAMC,KAAAA,GAAA1M,GAAA,0dAgB1BJ,EAAAA,EAAAA,IAAO+M,EAAAA,GAAP/M,CAAUgN,KAAAA,GAAA5M,GAAA,oDAKNJ,EAAAA,EAAAA,IAAOkB,EAAAA,EAAPlB,CAAYiN,KAAAA,GAAA7M,GAAA,6HAUZJ,EAAAA,EAAAA,IAAO6E,EAAAA,EAAP7E,CAAYkN,KAAAA,GAAA9M,GAAA,wJACjB6L,GAAAA,EAAQkB,GACF9M,EAAAA,EAAOyL,MAEhBG,GAAAA,EAAQkB,KAIAnN,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWoN,KAAAA,GAAAhN,GAAA,iKACVC,EAAAA,EAAOyL,MAEhBG,GAAAA,EAAQoB,GACTpB,GAAAA,EAAQqB,GAIIjN,EAAAA,EAAOkN,QAIfvN,EAAAA,GAAOwN,IAAGC,KAAAA,GAAArN,GAAA,2FAEAC,EAAAA,EAAOkN,OAErBtB,GAAAA,EAAQkB,IAGQnN,EAAAA,GAAOwN,IAAGE,KAAAA,GAAAtN,GAAA,2FAEZC,EAAAA,EAAOkN,OAErBtB,GAAAA,EAAQkB,KAGdQ,IAAuB3N,EAAAA,EAAAA,IAAOyM,GAAAA,EAAMmB,OAAb5N,CAAoB6N,KAAAA,GAAAzN,GAAA,0CACpBC,EAAAA,EAAOE,QAG9BuN,IAAgB9N,EAAAA,EAAAA,IAAOyM,GAAAA,EAAPzM,CAAa+N,KAAAA,GAAA3N,GAAA,yBAI7B4N,IAAoBhO,EAAAA,EAAAA,IAAOyM,GAAAA,EAAMwB,KAAbjO,CAAkBkO,KAAAA,GAAA9N,GAAA,8CAKtC+N,IAAiBnO,EAAAA,EAAAA,IAAOoB,EAAAA,EAAPpB,CAAYoO,KAAAA,GAAAhO,GAAA,0RAGhB6L,GAAAA,EAAQoB,IAgBrBgB,IAAmBrO,EAAAA,EAAAA,IAAOoB,EAAAA,EAAPpB,CAAYsO,KAAAA,GAAAlO,GAAA,6JAU/BmO,IAAgBvO,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWwO,KAAAA,GAAApO,GAAA,kE,gxBC5TjC,IAAMqO,GAAYzO,EAAAA,GAAO0O,GAAEvO,KAAAA,GAAAC,GAAA,q1BASd6L,GAAAA,EAAQoB,GAEChN,EAAAA,EAAOkN,QAyCvBoB,IAAe3O,EAAAA,EAAAA,IAAO4O,GAAAA,EAAP5O,CAAcqC,KAAAA,GAAAjC,GAAA,sPAc7BsL,GAAiB1L,EAAAA,GAAOwN,IAAGhC,KAAAA,GAAApL,GAAA,wLAapByO,GAAiB,SAAHnQ,GAAkD,IAA5CoQ,EAAQpQ,EAARoQ,SAAUC,EAAMrQ,EAANqQ,OAAQC,EAAkBtQ,EAAlBsQ,mBAC3CC,E,kWAAcpR,CAAA,CAClBqR,eAAe,EACfC,MAAM,EACNC,UAAU,EACVC,aAAc,EACdC,eAAgB,EAChBC,MAAM,EACNC,gBAAgB,EAChBC,WAAY,SAACN,GAAI,OAAKjV,EAAAA,cAACuU,GAAS,KAAEU,EAAiB,EACnDO,UACExV,EAAAA,cAACmS,GAAc,KACbnS,EAAAA,cAACU,EAAS,OAGd+U,UACEzV,EAAAA,cAACmS,GAAc,KACbnS,EAAAA,cAACD,EAAS,QAGX6U,GAGL,OACE5U,EAAAA,cAACyU,GAAiBM,EACT,OAANF,QAAM,IAANA,OAAM,EAANA,EAAQzW,KAAI,SAACsX,EAAOC,GAAK,OACxB3V,EAAAA,cAACwR,GAAc,CAACjQ,IAAKmU,EAAM/T,KACzB3B,EAAAA,cAAC0R,GAAK,CACJrK,IAAKqO,EAAM/T,IACXuL,QAAS4H,EACT,uBAAA7P,OAAsB0Q,KAET,IAIzB,E,wiCC2CA,SA1JoB,SAAHnR,GASV,IARLoR,EAAOpR,EAAPoR,QAAOC,EAAArR,EACPiK,MAAAA,OAAK,IAAAoH,EAAG,sBAAqBA,EAAAC,EAAAtR,EAC7BkK,QAAAA,OAAO,IAAAoH,EAAG,UAASA,EAAAC,EAAAvR,EACnBwR,eAAAA,OAAc,IAAAD,EAAG,GAAEA,EACnBE,EAAczR,EAAdyR,eACAC,EAAU1R,EAAV0R,WAAUC,EAAA3R,EACVsK,cAAAA,OAAa,IAAAqH,EAAG,WAAO,EAACA,EAAAC,EAAA5R,EACxBuI,WAAAA,OAAU,IAAAqJ,GAAQA,EAEZxQ,GAAOyQ,EAAAA,GAAAA,MAC4C1N,EAAAhE,IAAfiE,EAAAA,EAAAA,WAAS,GAAM,GAAlD0N,EAAa3N,EAAA,GAAE4N,EAAgB5N,EAAA,GACWK,EAAArE,IAAfiE,EAAAA,EAAAA,WAAS,GAAM,GAA1C4N,EAASxN,EAAA,GAAEyN,EAAYzN,EAAA,GAExB0N,GAAmBC,EAAAA,EAAAA,cAAY,WAC9B5U,OAAO6U,aAIZ9H,EAAc,OAAQ,QAAS,aAAc,uBAC7C2H,GAAa,GAEb1U,OAAO6U,WAAWC,SAChB,yBACA,cACA,MACA,SAACC,GACCA,EAAKC,KAAK,CACRC,MAAOvI,EACPwI,QAASvI,EACTwI,wBAAyBtB,EACzBuB,0BAA2BnB,EAC3BoB,wBAAyBnB,EACzBoB,2BAA4BnB,IAG9BY,EAAKQ,WAAU,WAGb,OAFAf,GAAiB,GACjBzH,EAAc,SAAU,OAAQ,aAAc,sBACvC,CACT,GACF,IAEJ,GAAG,CACD8G,EACAnH,EACAC,EACAsH,EACAC,EACAC,EACApH,IAGIyI,GAAoBZ,EAAAA,EAAAA,cAAY,WACpCF,GAAa,GACb3H,EACE,QACA,QACA,aACA,sBACA,CAAE0I,UAAWlB,EAAgB,EAAI,GACjCA,EAAgB,EAAI,EAExB,GAAG,CAACA,EAAexH,IAEnB,OACE9O,EAAAA,cAAA,OAAK,cAAY,gBACd+M,EACC/M,EAAAA,cAACyX,GAAAA,EAAM,CAACC,QAAQ,YAAYxK,QAASwJ,EAAkBlW,KAAK,MACzDoF,EAAK+R,EAAE,mBAAoB,CAAEC,aAAc,gBAG9C5X,EAAAA,cAAC6X,GAAAA,EAAO,CACNC,QAASlS,EAAK+R,EAAE,sBAAuB,CACrCC,aAAc,kCAEhBG,UAAU,SACVC,QAAQ,SAERhY,EAAAA,cAACC,EAAAA,EAAG,CAACC,QAAQ,SACXF,EAAAA,cAACyX,GAAAA,EAAM,CACLC,QAAQ,YACRxK,QAASwJ,EACTlW,KAAK,KACLuJ,UAAQ,GAEPnE,EAAK+R,EAAE,mBAAoB,CAAEC,aAAc,kBAKpD5X,EAAAA,cAACuS,GAAAA,EAAK,CAAC0F,KAAMzB,EAAW0B,eAAgBX,GACtCvX,EAAAA,cAACuS,GAAAA,EAAMmB,OAAM,CAACyE,QAASZ,GACpB3R,EAAK+R,EAAE,mBAAoB,CAAEC,aAAc,gBAE9C5X,EAAAA,cAACuS,GAAAA,EAAMwB,KAAI,CAAC1T,MAAO,CAAE+X,WAAY,IAC/BpY,EAAAA,cAACC,EAAAA,EAAG,KACAqW,EAQAtW,EAAAA,cAACC,EAAAA,EAAG,KACFD,EAAAA,cAACqY,EAAAA,GAAE,KACAzS,EAAK+R,EAAE,kBAAmB,CACzBC,aACE,0EACD,KAGL5X,EAAAA,cAACiL,EAAAA,EAAC,KACCrF,EAAK+R,EAAE,8BAA+B,CACrCC,aACE,iFACA,IACHhC,GAEH5V,EAAAA,cAACiL,EAAAA,EAAC,KACCrF,EAAK+R,EAAE,sBAAuB,CAC7BC,aACE,mFAzBR5X,EAAAA,cAACiL,EAAAA,EAAC,CAAC1M,GAAG,qBACHqH,EAAK+R,EAAE,4BAA6B,CACnCC,aACE,kJA2BNtB,GAAiBtW,EAAAA,cAAA,QAAMzB,GAAG,kBAE5ByB,EAAAA,cAACiL,EAAAA,EAAC,CAAC1M,GAAG,kBAAkB8B,MAAO,CAAEH,QAAS,SACvC0F,EAAK+R,EAAE,mBAAoB,CAC1BC,aACE,gFAQlB,E,qNC5IA,I,SAAMU,IAAmBxS,EAAAA,EAAAA,IAAOoB,EAAAA,EAAPpB,CAAYG,KAAAA,GAAAC,GAAA,mHAQ/BqS,IAAoBzS,EAAAA,EAAAA,IAAOoB,EAAAA,EAAPpB,CAAYqC,KAAAA,GAAAjC,GAAA,wGAGtBC,EAAAA,EAAOyL,OAKjB4G,GAAY1S,EAAAA,GAAOuL,IAAGC,KAAAA,GAAApL,GAAA,2CAKtBuS,IAAY3S,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWyL,KAAAA,GAAArL,GAAA,+HAKPC,EAAAA,EAAOC,QAGvBsS,IAAmB5S,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAW2L,KAAAA,GAAAvL,GAAA,8HAMnB6L,GAAAA,EAAQC,IAInBN,GAAQ5L,EAAAA,GAAOuL,IAAGM,KAAAA,GAAAzL,GAAA,kCAIlB+L,IAAenM,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWgM,KAAAA,GAAA5L,GAAA,mMAiB1ByS,IAASC,EAAAA,EAAAA,IAAG1G,KAAAA,GAAAhM,GAAA,yPAqBZ2S,IAAiB/S,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWsM,KAAAA,GAAAlM,GAAA,sDAC9ByS,IAIEG,IAAiBhT,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWwM,KAAAA,GAAApM,GAAA,qDAC9ByS,IAIEI,IAAajT,EAAAA,EAAAA,IAAOkB,EAAAA,EAAPlB,CAAY0M,KAAAA,GAAAtM,GAAA,6BAIzB8S,IAAalT,EAAAA,EAAAA,IAAOyM,GAAAA,EAAPzM,CAAa2M,KAAAA,GAAAvM,GAAA,yHAS1B+S,IAAiBnT,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAW4M,KAAAA,GAAAxM,GAAA,yMAc5BgT,GAAapT,EAAAA,GAAOuL,IAAGuB,KAAAA,GAAA1M,GAAA,uIAOvBiT,GAAwBrT,EAAAA,GAAO6M,OAAMG,KAAAA,GAAA5M,GAAA,ydAgBrCkT,IAAatT,EAAAA,EAAAA,IAAO+M,EAAAA,GAAP/M,CAAUiN,KAAAA,GAAA7M,GAAA,+FAIV6L,GAAAA,EAAQkB,IAGrBoG,IAAevT,EAAAA,EAAAA,IAAOkB,EAAAA,EAAPlB,CAAYkN,KAAAA,GAAA9M,GAAA,4HAU3BoT,IAAexT,EAAAA,EAAAA,IAAO6E,EAAAA,EAAP7E,CAAYoN,KAAAA,GAAAhN,GAAA,wJACjB6L,GAAAA,EAAQkB,GACF9M,EAAAA,EAAOyL,MAEhBG,GAAAA,EAAQkB,IAIfsG,IAAezT,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWyN,KAAAA,GAAArN,GAAA,iKACVC,EAAAA,EAAOyL,MAEhBG,GAAAA,EAAQoB,GACTpB,GAAAA,EAAQqB,GAIIjN,EAAAA,EAAOkN,QAIzBmG,GAAU1T,EAAAA,GAAOwN,IAAGE,KAAAA,GAAAtN,GAAA,4FAEA,SAAA1B,GAAQ,OAAAA,EAAL/D,OAAqB0F,EAAAA,EAAOkN,MAAM,GAEnDtB,GAAAA,EAAQkB,IAGdwG,IAAkB3T,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAW6N,KAAAA,GAAAzN,GAAA,4FAO7BwT,IAAa5T,EAAAA,EAAAA,IAAO6T,GAAAA,GAAKjG,OAAZ5N,CAAmB+N,KAAAA,GAAA3N,GAAA,+EAMhC0T,IAAiB9T,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWkO,KAAAA,GAAA9N,GAAA,uIAGzB6L,GAAAA,EAAQC,IAOX6H,IAAgB/T,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWoO,KAAAA,GAAAhO,GAAA,wG,wECnNpB4T,GAA4B,CACvC,CACE7S,KAAM,IACN5F,KAAM,WACNyF,KAAM,KAER,CACEG,KAAM,gBACN5F,KAAM,MACNyF,KAAM,OAER,CACEG,KAAM,YACN5F,KAAM,MACNyF,KAAM,aAIGiT,GAAgB,CAC3BC,OAAQ,WACRC,WAAY,WACZC,UAAW,YAGAC,GAAwB,CACnC,CACEC,KAAMpa,EAAAA,cAACqa,GAAAA,EAAM,CAAC7Z,KAAK,OACnBwO,MAAO,aACP/H,KAAM,gEACNqT,OAAQ,aAEV,CACEF,KAAMpa,EAAAA,cAACua,GAAAA,EAAW,CAAC/Z,KAAK,OACxBwO,MAAO,mBACP/H,KAAM,sHACNqT,OAAQ,aAEV,CACEF,KAAMpa,EAAAA,cAACwa,GAAAA,EAAS,CAACha,KAAK,OACtBwO,MAAO,iBACP/H,KAAM,gDACNqT,OAAQ,WAEV,CACEF,KAAMpa,EAAAA,cAACya,GAAAA,EAAS,CAACja,KAAK,OACtBwO,MAAO,cACP/H,KAAM,8GACNqT,OAAQ,QAEV,CACEF,KAAMpa,EAAAA,cAAC0a,GAAAA,EAAY,CAACla,KAAK,OACzBwO,MAAO,kBACP/H,KAAM,yEACNqT,OAAQ,YAEV,CACEF,KAAMpa,EAAAA,cAAC2a,GAAAA,EAAQ,CAACna,KAAK,OACrBwO,MAAO,aACP/H,KAAM,QACNqT,OAAQ,Q,mHCnDZ,IAAMM,IAAmB9U,EAAAA,EAAAA,IAAOoB,EAAAA,EAAPpB,CAAYG,KAAAA,GAAAC,GAAA,gFACRC,EAAAA,EAAOG,QAK9BuU,IAAuB/U,EAAAA,EAAAA,IAAOmF,EAAAA,EAAPnF,CAASqC,KAAAA,GAAAjC,GAAA,sCAC3BC,EAAAA,EAAO2U,OAMZC,IAAwBjV,EAAAA,EAAAA,IAAOoB,EAAAA,EAAPpB,CAAYwL,KAAAA,GAAApL,GAAA,4DAsF1C,SApEwB,SAAH1B,GAAA,IAXUwW,EAAYC,EACnCC,EAUmBtU,EAAGpC,EAAHoC,IAAG,OAC5B5G,EAAAA,cAACqZ,GAAY,CAACpS,KAAI,SAAAhC,OAAW2B,EAAIE,MAAQ4Q,QAAQ,QAC/C1X,EAAAA,cAAC2K,EAAAA,EAAI,CAAC+M,QAAQ,aACZ1X,EAAAA,cAACkH,EAAAA,EAAI,CACHO,UAAU,SACV0T,QAAQ,KACR9a,MAAO,CAAE+a,UAAW,QAASC,SAAU,UAEvCrb,EAAAA,cAAC4a,GAAgB,CAACO,QAAQ,gBAAgB/a,eAAe,UACtDwG,EAAI0U,WACHtb,EAAAA,cAACub,GAAAA,GAAQ,CACPjb,OAAQ,IACRD,MAAO,CACLH,QAAS,OACTE,eAAgB,SAChBD,WAAY,SACZG,OAAQ,UAGVN,EAAAA,cAAA,OACEqH,IAAKT,EAAI0U,UACTjb,MAAO,CACLmb,MAAO,OACPC,UAAW,QAEbrU,IAAG,YAAAnC,OAAc2B,EAAIvF,UAK7BrB,EAAAA,cAAC+a,GAAqB,CACpBtT,UAAU,SACV2Q,WAAW,KACXsD,KAAK,IACLtb,eAAe,gBAEfJ,EAAAA,cAACqY,EAAAA,GAAE,KAAEzR,EAAIvF,MACTrB,EAAAA,cAACkH,EAAAA,EAAI,CACH/G,WAAW,SACXwb,OAAO,kBACPtb,MAAO,CAAE+a,UAAW,SAEpBpb,EAAAA,cAAC0H,EAAAA,EAAU,CAACkU,OAAO,QjBnFP,SAAEC,EAAKC,EAAGC,GAChC,GAAIF,EAAIlZ,QAAUmZ,EAAK,OAAOD,EAC9B,IAAMG,EAAYH,EAAII,OAAO,EAAGH,EAAE,GAClC,OAAQC,EACJC,EAAUC,OAAO,EAAGD,EAAUE,YAAY,MAC1CF,GAAa,KACnB,CiB8EeG,CAASvV,EAAIe,mBAAoB,KAAK,KAG3C3H,EAAAA,cAACC,EAAAA,EAAG,KACFD,EAAAA,cAAC6a,GAAoB,MA1DFG,EA2DMpU,EAAIoU,WA3DEC,EA2DyB,SAAfrU,EAAIwV,OA1DjDlB,EAAmBF,EACtB5c,KAAI,SAACie,GAAS,OAAKtC,GAAcsC,EAAU,IAC3C/Y,OAAOgZ,SACNrB,GACFC,EAAiBhW,KAAK,QAGjBgW,EAAiBqB,KAAK,aAyDd,E,yOC3FjB,IAAMC,IAAgB1W,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWG,KAAAA,GAAAC,GAAA,0CACJC,EAAAA,EAAOG,QAG9BmW,IAAc3W,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWqC,KAAAA,GAAAjC,GAAA,0CACFC,EAAAA,EAAOG,QA+BpC,SA5BsB,WACpB,IAAMV,GAAOyQ,EAAAA,GAAAA,MACb,OACErW,EAAAA,cAAC0c,GAAAA,EAAQC,QAAO,CAACtc,MAAO,CAAEuc,OAAQ,EAAGC,SAAU,QAASrB,MAAO,SAC7Dxb,EAAAA,cAACwc,GAAa,CAACtc,QAAQ,OAAOib,QAAQ,KAAK2B,IAAI,KAAK3c,WAAW,UAC7DH,EAAAA,cAAC+c,GAAAA,EAAU,CAACtc,MAAO0F,EAAAA,EAAO6W,SAC1Bhd,EAAAA,cAAC0H,EAAAA,EAAU,CAACkU,OAAO,MAAMhW,EAAK+R,EAAE,yBAElC3X,EAAAA,cAACyc,GAAW,CAACvc,QAAQ,cAAcib,QAAQ,KAAK2B,IAAI,MAClD9c,EAAAA,cAAC0H,EAAAA,EAAU,CAACkU,OAAO,SAChBhW,EAAK+R,EAAE,iCAAkC,IAC1C3X,EAAAA,cAACgH,EAAAA,EAAI,CAACC,KAAK,qBAAqBrB,EAAK+R,EAAE,wBAEzC3X,EAAAA,cAAC0H,EAAAA,EAAU,CAACkU,OAAO,SAChBhW,EAAK+R,EAAE,iCAEV3X,EAAAA,cAACgH,EAAAA,EAAI,CACHC,KAAK,sFACLqD,OAAO,SACPlF,UAAU,gBAETQ,EAAK+R,EAAE,2BAA2B,IAAC3X,EAAAA,cAACid,GAAAA,EAAY,CAACzc,KAAK,SAKjE,ECkPA,SA7PkB,SAAHgE,GAOR,IANLoC,EAAGpC,EAAHoC,IACAsW,EAAW1Y,EAAX0Y,YACAC,EAAe3Y,EAAf2Y,gBAAeC,EAAA5Y,EACf6Y,YAAAA,OAAW,IAAAD,EAAG,EAACA,EACftO,EAAatK,EAAbsK,cACAwO,EAAI9Y,EAAJ8Y,KAEM1X,GAAOyQ,EAAAA,GAAAA,MAEXkH,EAaE3W,EAbF2W,SACAC,EAYE5W,EAZF4W,iBACAC,EAWE7W,EAXF6W,YACAC,EAUE9W,EAVF8W,iBACAtB,EASExV,EATFwV,OACA/a,EAQEuF,EARFvF,KACAsG,EAOEf,EAPFe,mBACAgW,EAME/W,EANF+W,WACArW,EAKEV,EALFU,eACAsW,EAIEhX,EAJFgX,aACAC,EAGEjX,EAHFiX,OACAC,EAEElX,EAFFkX,+BACAC,EACEnX,EADFmX,mBAGIC,EAAeX,GAAe,EAE9BY,EAAc,CAClB,CACE1f,GAAI,WACJ2f,KAAM,WAAF,OAAQle,EAAAA,cAACme,GAAAA,EAAQ,KAAG,EACxBC,YAAa,UACb7Y,MAAOgY,EACPc,WAAW,GAEb,CACE9f,GAAI,eACJ2f,KAAM,WAAF,OAAQle,EAAAA,cAACse,GAAAA,EAAI,KAAG,EACpBF,YAAa,cACb7Y,MAAOsY,GAAUN,EACjBc,WAAW,GAEb,CACE9f,GAAI,gBACJ2f,KAAM,WAAF,OAAQle,EAAAA,cAACue,GAAAA,EAAQ,KAAG,EACxBH,YAAa,WACb7Y,MAAOK,EAAK4Y,SAASR,EAAc,CAAES,UAAW,IAChDJ,UAAWN,IAIf,OACE/d,EAAAA,cAAC2Z,GAAAA,GAAI,CAAC,cAAY,aAAatZ,MAAO,CAAEmb,MAAO,SAC7Cxb,EAAAA,cAAC0Z,GAAU,KACT1Z,EAAAA,cAACyZ,GAAe,KACdzZ,EAAAA,cAACC,EAAAA,EAAG,CAACkb,QAAQ,WACXnb,EAAAA,cAAC2Z,GAAAA,GAAK+E,YAAW,CAAC/C,OAAO,MACvB3b,EAAAA,cAAC0e,GAAAA,EAAW,KACV1e,EAAAA,cAAC2e,GAAAA,EAAU,CACT1X,KAAK,QACLyQ,QAAQ,WACR0C,KAAMpa,EAAAA,cAAC4e,GAAAA,EAAW,CAACne,MAAO0F,EAAAA,EAAO0Y,SACjC,cAAY,sBAEZ7e,EAAAA,cAAC0H,EAAAA,EAAU,CAACkU,OAAO,KAAKnb,MAAM,SAASa,OAAO,QAC3CsE,EAAK+R,EAAE,8BAOlB3X,EAAAA,cAAC4Z,GAAc,CAAC1Z,QAAQ,OAAOE,eAAe,iBAC5CJ,EAAAA,cAACC,EAAAA,EAAG,CAACC,QAAQ,OAAO4e,SAAS,QAC3B9e,EAAAA,cAACuY,GAAiB,CAChBwG,YAAY,KACZ3e,eAAe,SACfD,WAAW,SACX,cAAY,eAEZH,EAAAA,cAACwY,GAAS,CACRnR,IACEC,IACU,OAAVqW,QAAU,IAAVA,OAAU,EAAVA,EAAYhc,MACZI,OAAOid,UAAU,2BAKvBhf,EAAAA,cAAC2Z,GAAAA,GAAKsF,MAAK,KACTjf,EAAAA,cAACoZ,GAAU,CAAC,cAAY,YAAY/X,GACpCrB,EAAAA,cAACqY,EAAAA,GAAE,CACD,cAAY,yBACZhY,MAAO,CAAE6e,WAAY,MAEpBvX,GAGH3H,EAAAA,cAAC4Z,GAAc,CACb1Z,QAAQ,WACRE,eAAe,aACf0c,IAAI,KACJqC,UAAU,KACVL,SAAS,QAERb,EAAY7f,KACX,SAAAsG,GAAA,IAAGnG,EAAEmG,EAAFnG,GAAI2f,EAAIxZ,EAAJwZ,KAAME,EAAW1Z,EAAX0Z,YAAa7Y,EAAKb,EAALa,MAAgB,OAAAb,EAAT2Z,WAE7Bre,EAAAA,cAAC6X,GAAAA,EAAO,CACNtW,IAAKhD,EACLuZ,QAASlS,EAAK+R,EAAE,UAAD1S,OAAWmZ,EAAW,WAAW,CAC9C7Y,MAAAA,IAEFwS,UAAU,SACVC,QAAQ,SAERhY,EAAAA,cAACkH,EAAAA,EAAI,CACH/G,WAAW,SACX,qBAAA8E,OAAoB1G,GACpB8B,MAAO,CAAEmb,MAAO,SAEhBxb,EAAAA,cAACke,EAAI,MACLle,EAAAA,cAAC6Z,GAAa,CAACuF,WAAW,MACP,aAAhBhB,EACCpe,EAAAA,cAAA,YACGuF,EAAM,IAAEK,EAAK+R,EAAE,UAAD1S,OAAWmZ,KAG5Bpe,EAAAA,cAAA,YACG4F,EAAK+R,EAAE,UAAD1S,OAAWmZ,IAAe,IAAE7Y,KAM9C,IAGJuY,GACC9d,EAAAA,cAACkH,EAAAA,EAAI,CAAC/G,WAAW,UACfH,EAAAA,cAAC0c,GAAAA,EAAO,CACN5E,QAAS9X,EAAAA,cAACqf,GAAa,MACvBtH,UAAU,SACVC,QAAQ,SAERhY,EAAAA,cAACsf,GAAAA,EAAI,CACHla,UAAU,iBACV3E,MAAM,OACN,cAAY,qBACZJ,MAAO,CAAEkf,aAAc,UAEvBvf,EAAAA,cAACkH,EAAAA,EAAI,CAAC/G,WAAW,UACfH,EAAAA,cAAC+c,GAAAA,EAAU,MACX/c,EAAAA,cAACC,EAAAA,EAAG,CAAC0b,OAAO,WACT/V,EAAK+R,EAAE,6BAQR,SAAXyE,GACCpc,EAAAA,cAACkH,EAAAA,EAAI,CAAC/G,WAAW,SAAS,cAAY,YACpCH,EAAAA,cAACsf,GAAAA,EAAI,CACHla,UAAU,iBACV3E,MAAM,UACNJ,MAAO,CAAEkf,aAAc,UAEtB3Z,EAAK+R,EAAE,oBAQpB3X,EAAAA,cAACC,EAAAA,EAAG,CAACC,QAAQ,OAAO4c,IAAI,MACtB9c,EAAAA,cAACC,EAAAA,EAAG,CAAC8e,YAAY,MACdvB,GAAoBC,EACnBzd,EAAAA,cAACwf,GAAW,CACV5J,QAASvU,EACT2U,eAAgB0H,EAChBzH,eAAgBuH,EAChBtH,WAAYuH,EACZhP,MAAW,OAAJ6O,QAAI,IAAJA,OAAI,EAAJA,EAAM7O,MACbC,QAASwO,EACTpO,cAAeA,EACf/B,WAAgB,OAAJuQ,QAAI,IAAJA,OAAI,EAAJA,EAAMvQ,WAClB0S,YAAgB,OAAH7Y,QAAG,IAAHA,OAAG,EAAHA,EAAK8Y,YAGpB1f,EAAAA,cAAC2e,GAAAA,EAAU,CACT1X,KAAM2W,EACNlG,QAAQ,YACRlX,KAAK,KACL0M,QAAS,WAAF,OACL4B,EACE,QACA,OACA,YACA,oBACD,EAEHxE,OAAO,UAEN1E,EAAK+R,EAAE,qBAIbwF,QAOf,E,mICpPA,IAAMwC,GAAgB7Z,EAAAA,GAAOwN,IAAGrN,KAAAA,GAAAC,GAAA,4CAI1BsT,GAAU1T,EAAAA,GAAOwN,IAAGnL,KAAAA,GAAAjC,GAAA,2EAEGC,EAAAA,EAAOG,QAI9BsZ,IAAW9Z,EAAAA,EAAAA,IAAOoB,EAAAA,GAAM2Y,MAAM,CAAEza,UAAW,aAAhCU,CAA8CwL,KAAAA,GAAApL,GAAA,qdAGpDC,EAAAA,EAAO0Y,QAMM,SAACpT,GAAK,OACxBA,EAAMwF,OAAS9K,EAAAA,EAAO2Z,SAAW,aAAa,GAW5B3Z,EAAAA,EAAOG,OAClBH,EAAAA,EAAO0Y,OAEM1Y,EAAAA,EAAO2Z,UAK3BC,IAAoBja,EAAAA,EAAAA,IAAOoB,EAAAA,EAAPpB,CAAYyL,KAAAA,GAAArL,GAAA,uEAUhCgL,GAAe,SAACf,GAGpB,OANe,WAAH,IAAI0L,EAAGnZ,UAAAC,OAAA,QAAAS,IAAAV,UAAA,GAAAA,UAAA,GAAG,GAAIsd,EAAMtd,UAAAC,OAAA,QAAAS,IAAAV,UAAA,GAAAA,UAAA,GAAG,GAAE,OACgB,IAArDmZ,EAAIzL,QAAQ4P,EAAQnE,EAAIlZ,OAASqd,EAAOrd,OAAe,CAKhDsd,EAFUle,OAAOf,UAAY,CAAEkf,SAAU,KACxCA,SACkB/P,EAC5B,EA2DA,SAzDwB,SAAH3L,GAAA,IAAM4H,EAAU5H,EAAV4H,WAAU,OACnCpM,EAAAA,cAAC2f,GAAa,KACZ3f,EAAAA,cAAC+f,GAAiB,CAAC1f,MAAO,CAAEsb,OAAQ,SAAWlU,UAAU,UACtDqS,GAA0B1b,KAAI,SAAC4N,GAAQ,OACtChM,EAAAA,cAACqZ,GAAY,CACX,0BAAApU,OAAyB+G,EAAS3K,MAClC4F,KAAM+E,EAAS/E,KACf1F,IAAKyK,EAASlF,MAEd9G,EAAAA,cAAC4f,GAAQ,CACPzE,QAAQ,QACRhb,WAAW,SACX8Q,OAAQC,GAAalF,EAASlF,OAE7BkF,EAAS3K,MAEC,IAEjBrB,EAAAA,cAACwZ,GAAO,MACRxZ,EAAAA,cAACC,EAAAA,EAAG,CAACkgB,cAAc,KAAK3Y,YAAY,KAAK4Y,aAAa,MACpDpgB,EAAAA,cAACqY,EAAAA,GAAE,KAAC,eAELjM,EAAWhO,KAAI,SAAC4N,GAAQ,OACvBhM,EAAAA,cAACqZ,GAAY,CACXpS,KAAI,IAAAhC,OAAwB,WAAlB+G,EAASC,KAAoB,UAAY,aAAY,KAAAhH,OAC7D+G,EAASlF,MAEXvF,IAAKyK,EAASlF,KACd,0BAAA7B,OAAyB+G,EAASlF,OAElC9G,EAAAA,cAAC4f,GAAQ,CACPzE,QAAQ,QACRhb,WAAW,SACX8Q,OAAQC,GAAa,IAADjM,OACI,WAAlB+G,EAASC,KAAoB,UAAY,aAAY,KAAAhH,OACvD+G,EAASlF,QAIZkF,EAAS3K,MAEC,KAGL,E,4ICrGlB,IAAMgf,GAAWva,EAAAA,GAAOwa,GAAEra,KAAAA,GAAAC,GAAA,wCAIpBqa,IAAWza,EAAAA,EAAAA,IAAO0a,EAAAA,GAAP1a,CAAUqC,KAAAA,GAAAjC,GAAA,6BAIrBua,IAAa3a,EAAAA,EAAAA,IAAO4a,GAAAA,EAAP5a,CAAYwL,KAAAA,GAAApL,GAAA,wEACpBC,EAAAA,EAAO2Z,UA4ClB,SAvCkB,WAChB,OACE9f,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACugB,GAAQ,KAAC,cACVvgB,EAAAA,cAACiL,EAAAA,EAAC,KAAC,uDAEHjL,EAAAA,cAACugB,GAAQ,KAAC,qBAEVvgB,EAAAA,cAAC0H,EAAAA,EAAU,CAACiZ,GAAG,KAAKtgB,MAAO,CAAEugB,cAAe,SAC1C5gB,EAAAA,cAACqgB,GAAQ,KACPrgB,EAAAA,cAACygB,GAAU,MAAG,mEAGhBzgB,EAAAA,cAACqgB,GAAQ,KACPrgB,EAAAA,cAACygB,GAAU,MAAG,mBAEdzgB,EAAAA,cAAC+Y,GAAU,CACT9R,KAAK,wFACLqD,OAAO,UACR,qDAEa,IAAI,sCAGpBtK,EAAAA,cAACqgB,GAAQ,KACPrgB,EAAAA,cAACygB,GAAU,MACXzgB,EAAAA,cAAC+Y,GAAU,CACT9R,KAAK,+CACLqD,OAAO,UACR,uBAEa,IAAI,yDAM5B,ECyDA,SAhHsB,SAACuW,EAAMC,GAC3B,IAAMC,EAAY9e,SAASkD,cAAc,OACzC4b,EAAUC,UAAYH,EAAKI,OAC3Bhf,SAASif,KAAKC,YAAYJ,GAO1B,IAgBIpf,EAhBEyf,EAAeL,EAAUM,qBAAqB,UAAU3hB,KAAK,GAC7D4hB,EAAeP,EAAUM,qBAAqB,UAAU3hB,KAAK,GAMnE,IAAK4hB,IAAiBF,EAMpB,OALAnf,SAASif,KAAKphB,YAAYihB,QAC1BD,EAAc,CACZS,YAAaV,EACbW,MAAO,OAWPJ,GACFzf,EAAMyf,EAAa/Z,IACnB+Z,EAAaK,cAAc3hB,YAAYshB,IAEvCzf,EAAM2f,EAAaja,IAQrB,IAAMqa,EAAYX,EAAUY,uBAC1B,6BAEFZ,EAAUjhB,YAAY4hB,EAAUhiB,KAAK,IACrCuC,SAASif,KAAKphB,YAAYihB,GAE1B,IAAMxiB,EAAKoD,EACRigB,UAAUjgB,EAAIua,YAAY,KAAO,GACjC2F,MAAM,KAAK,GACXA,MAAM,KAAK,GAERC,EAAI7f,SAASkD,cAAc,UACjC2c,EAAE7V,KAAO,kBACT6V,EAAEza,IAAG,wCAAApC,OAA2C1G,EAAE,UAClDujB,EAAEC,OAAQ,EAEV,IAAMC,EAAK/f,SAASkD,cAAc,UAClC6c,EAAG/V,KAAO,kBACV+V,EAAG3a,IAAM,kDACT2a,EAAGD,OAAQ,EAEX9f,SAASggB,KAAKC,OAAOJ,GACrB7f,SAASggB,KAAKC,OAAOF,GAErBlB,EAAc,CACZU,MACExhB,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OACEoF,UAAS,6BAAAH,OAA+B1G,EAAE,mBAC1C8B,MAAO,CACLC,OAAQ,QACRkb,MAAO,QACPoB,OAAQ,EACRuF,SAAU,aAGZniB,EAAAA,cAAA,OACEoF,UAAU,gBACV/E,MAAO,CACLC,OAAQ,OACR8hB,KAAM,EACNC,QAAS,EACTC,SAAU,SACVH,SAAU,WACVI,IAAK,EACLC,WAAY,gBACZhH,MAAO,SAGTxb,EAAAA,cAAA,OACEqH,IAAG,wCAAApC,OAA0C1G,EAAE,WAC/C8B,MAAO,CACLiD,OAAQ,YACRhD,OAAQ,OACRmiB,UAAW,UACXjH,MAAO,QAETpU,IAAI,GACJ,cAAY,YAMtBma,YAAaR,EAAU2B,WAE3B,E,u/CC1GA,IAAMjK,GAAY3S,EAAAA,GAAOwN,IAAGrN,KAAAA,GAAAC,GAAA,6BAGtBc,IAAOlB,EAAAA,EAAAA,IAAO6c,GAAP7c,CAAyBqC,KAAAA,GAAAjC,GAAA,oCAGhC0c,GAAgB9c,EAAAA,GAAOwN,IAAGhC,KAAAA,GAAApL,GAAA,+DAKhC,SAAS2c,GAAcre,GAA+B,IAA5Bse,EAAOte,EAAPse,QAASC,EAAcve,EAAdue,eACqBC,EAAAre,GAA9B3E,EAAAA,SAAe+iB,GAAe,GAA/C9K,EAAI+K,EAAA,GAAEC,EAAOD,EAAA,GAEpB,IACI1jB,MAAM4jB,QAAQJ,KAAYA,EAAQngB,QACpCmgB,EAAQK,OAAM,SAACC,GAAC,OAAqB,OAAhBA,EAAEC,SAAkB,IAEzC,OAAOrjB,EAAAA,cAAAA,EAAAA,SAAA,MAGT,IAAMqjB,EAAYN,EACdD,EAAQxf,QAAO,SAACggB,GAAO,OAAKA,EAAQC,mBAAqBR,CAAc,IACvE1d,GAAIyd,GAASU,UAERD,EAAT5e,GAA+B0e,EAAS,GAAf,GAAhBE,iBACHE,EAAkB,kBAExB,OACEzjB,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACwgB,EAAAA,GAAE,KAAC,WAAS+C,GACbvjB,EAAAA,cAACyY,GAAS,KACRzY,EAAAA,cAACgH,GAAI,CAACkG,QAAS,WAAF,OAAQ+V,GAAQ,EAAK,GAAGQ,IAEvCzjB,EAAAA,cAACuS,GAAAA,EAAK,CAAC2F,eAAgB,WAAF,OAAQ+K,GAAQ,EAAM,EAAEhL,KAAMA,EAAMuD,MAAM,MAC7Dxb,EAAAA,cAACuS,GAAAA,EAAMmB,OAAM,CAACyE,QAAS,WAAF,OAAQ8K,GAAQ,EAAM,GACxCQ,GAEHzjB,EAAAA,cAACuS,GAAAA,EAAMwB,KAAI,KACRsP,EAAUjlB,KAAI,SAACklB,EAAS7e,GAAG,OAC1BzE,EAAAA,cAACA,EAAAA,SAAc,CAACuB,IAAKkD,EAAM,GACzBzE,EAAAA,cAAC4iB,GAAa,KACZ5iB,EAAAA,cAACwgB,EAAAA,GAAE,KAAE8C,EAAQC,kBACbvjB,EAAAA,cAAA,YAAOsjB,EAAQI,aAEjB1jB,EAAAA,cAACiL,EAAAA,EAAC,KAAEqY,EAAQD,WACG,KAGrBrjB,EAAAA,cAACuS,GAAAA,EAAMoR,OAAM,KACX3jB,EAAAA,cAACuS,GAAAA,EAAMqR,cAAa,KAClB5jB,EAAAA,cAACyX,GAAAA,EAAM,CAACC,QAAQ,UAAUxK,QAAS,WAAF,OAAQ+V,GAAQ,EAAM,GAAE,YAQrE,CAaAJ,GAAezU,aAAe,CAC5B0U,QAAS,CAAC,CAAEO,UAAW,KAAMK,WAAY,GAAIH,iBAAkB,MAGjE,Y,+hCCxCA,SAvCoB,SAAH/e,GAA4B,IAAtBqf,EAAcrf,EAAdqf,eAC6Blb,EAAAhE,IAAZiE,EAAAA,EAAAA,UAAS,IAAG,GAA3Ckb,EAAWnb,EAAA,GAAEob,EAAcpb,EAAA,IAElCI,EAAAA,EAAAA,YAAU,WACR8a,EAAeC,EACjB,GAAG,CAACA,IAMJ,OAEE9jB,EAAAA,cAAA,OACEoF,UAAU,4BAGV8H,QAAS,SAACvO,GAAC,OAAKA,EAAEqlB,iBAAiB,GAGnChkB,EAAAA,cAAA,SACEoF,UAAU,0BACV6G,KAAK,OACL1G,MAAOue,EACP1Z,SAAU,SAACzL,GAAC,OAAKolB,EAAeplB,EAAE2L,OAAO/E,MAAM,EAC/C0E,YAAY,WAEdjK,EAAAA,cAAA,UACEoF,UAAU,kCACV8H,QAtBc,WAClB6W,EAAe,GACjB,IAwBF,E,yxCC7BA,IAAME,GACE,WADFA,GAEc,mBAGhBC,GAAiB,EAEfC,GAAa,SAAA3Y,GACjB,SAAA2Y,EAAY1Y,GAAQ,IAADjJ,EAOgC,O,4FAPhCkJ,CAAA,KAAAyY,IACjB3hB,EAAAmJ,GAAA,KAAAwY,EAAA,CAAM1Y,KACDtC,MAAQ,CACXib,UAAW,KACXN,YAAa,IAGfthB,EAAK6hB,aAAe7hB,EAAK6hB,aAAa1W,KAAInL,GAAOA,CACnD,CAAC,O,sRAAAoJ,CAAAuY,EAAA3Y,G,EAAA2Y,G,EAAA,EAAA5iB,IAAA,eAAAgE,MAED,SAAa6e,GACXxkB,KAAKwJ,SAAS,CAAEgb,UAAAA,GAClB,GAAC,CAAA7iB,IAAA,eAAAgE,MAED,SAAaue,GACXlkB,KAAKwJ,SAAS,CAAC0a,YAAAA,GACjB,GAAC,CAAAviB,IAAA,kBAAAgE,MAED,WAAmB,IAADqI,EAAA,KACR0W,EAAc1kB,KAAK6L,MAAnB6Y,UACAR,EAAgBlkB,KAAKuJ,MAArB2a,YACR,OAAOQ,EAAUhhB,QAAO,SAAAoL,GAAO,OAAuE,IAAlEA,EAAQrN,KAAKkjB,cAAcnU,QAAQ0T,EAAYS,cAAoB,IAAGnmB,KAAI,SAACsQ,GAAO,OAEpH1O,EAAAA,cAAA,KACEkN,QAAU,WAAH,OAASU,EAAK4W,aAAa9V,EAAQnQ,GAAG,EAC7C6G,UAAU,gBACV7D,IAAG,GAAA0D,OAAKyJ,EAAQrN,KAAI,KAAA4D,OAAIyJ,EAAQnQ,GAAE,KAAA0G,OAAIif,OAErCxV,EAAQrN,KACP,GAER,GAAC,CAAAE,IAAA,SAAAgE,MAED,WACE,IAMIkf,EANJnY,EAA8B1M,KAAK6L,MAA3BiZ,EAAMpY,EAANoY,OAAQJ,EAAShY,EAATgY,UACRF,EAAcxkB,KAAKuJ,MAAnBib,UACFra,GAAYqa,EAEZO,EAAkBL,EAAUM,MAAK,SAACC,GAAC,OAAMA,EAAEtmB,IAAM6lB,CAAS,IAGhE,GAAIO,EAAiB,CACnB,IAAMnjB,EAAS,CACb,WAAcmjB,EAAgBpmB,GAC9B,aAAgBomB,EAAgBtjB,KAChC,aAAgBsjB,EAAgBG,cAGlCL,EAAY,GAAAxf,OAAMyf,EAAM,KAAAzf,OAAI8f,KAAAA,UAAavjB,GAC3C,CAEA,OACExB,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACuN,GAAQ,CACPnI,UAAU,iBACVyI,eAAa,EACbC,kBAAkB,QAClBC,eACE/N,EAAAA,cAAA,QAAMoF,UAAWK,KAAG,0BAA0B,4BAC5CzF,EAAAA,cAAA,OAAKoF,UAAU,iBAEXuf,EACEA,EAAgBtjB,KAChB4iB,IAGNjkB,EAAAA,cAAA,OAAKoF,UAAU,uCAInBpF,EAAAA,cAACglB,GAAW,CACVnB,eAAgBjkB,KAAKykB,eAEtBzkB,KAAKqlB,mBAERjlB,EAAAA,cAAA,KACEiH,KAAMwd,EACNrf,UAAWK,KAAG,kBAAmB,gBAAiB,CAAEsE,SAAAA,KAEnDka,IAIT,M,2FAAC,CApFgB,CAASjkB,EAAAA,WAkG5B,Y,kgCC7GA,IAMaklB,GAAe,CAC1B,eAAgB,oBAGLC,GAAa,WAAH,IAAIrjB,EAAOY,UAAAC,OAAA,QAAAS,IAAAV,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,OAAAiB,GAAAA,GAAA,GAVF,CACnC,eAAgB1B,SACbmjB,cAAc,2BACdjjB,aAAa,aASbL,EAAO,ECdZ,UAAgB,gBAAkB,wCAAwC,OAAS,+BAA+B,YAAc,oCAAoC,cAAgB,sCAAsC,aAAe,qCAAqC,WAAa,mCAAmC,QAAU,gCAAgC,aAAe,sCCAvX,IAAgB,eAAiB,uCAAuC,eAAiB,uCAAuC,cAAgB,sCAAsC,kBAAoB,0CAA0C,qBAAuB,8C,yxCCI3Q,IAAM2D,GAAKC,IAAAA,KAAgBC,IAErB+W,GAAO,SAAAlR,GAAA,SAAAkR,IAAA,O,4FAAAhR,CAAA,KAAAgR,GAAA/Q,GAAA,KAAA+Q,EAAAha,UAAA,Q,sRAAAkJ,CAAA8Q,EAAAlR,G,EAAAkR,G,EAAA,EAAAnb,IAAA,SAAAgE,MACX,WACE,IAAA+G,EAII1M,KAAK6L,MAHPrG,EAASkH,EAATlH,UACA+I,EAAQ7B,EAAR6B,SACAgU,EAAQ7V,EAAR6V,SAGF,OACEniB,EAAAA,cAAA,OAAKoF,UAAWK,GAAGE,GAAO0f,eAAgBjgB,IACxCpF,EAAAA,cAAA,OAAKoF,UAAWK,GAAGE,GAAO2f,cAAe,2BAEzCtlB,EAAAA,cAAA,OAAKoF,UAAWK,GAAGE,GAAO4f,eAAgB5f,GAAO,GAADV,OAAIkd,EAAQ,qBACzDhU,GAIT,M,2FAAC,CAjBU,CAASnO,EAAAA,WA0BtB0c,GAAQtO,aAAe,CACrB+T,SAAU,UAGZ,Y,yyCC5BA,IAAM1c,GAAKC,KAAAA,KAAgBC,IAErBse,GACS,gBADTA,GAEY,cAFZA,GAGQ,cAHRA,GAII,SAJJA,GAKI,SALJA,GAOF,uGAPEA,GAQG,gDARHA,GAUF,iFAGEuB,GACY,SAACC,EAAqBzP,EAAgB0P,GACpD,OAAOjkB,EAAAA,EAAAA,GAAMgkB,EAAqB,CAChC/jB,OAAQ,OACRE,KAAM,CAAE8b,iBAAkB1H,EAAgB0P,MAAAA,GAC1C5jB,QAASqjB,GAAWD,KAExB,EAGIS,GAAoB,SAAAna,GACxB,SAAAma,EAAYla,GAAQ,IAADjJ,EAE2C,O,4FAF3CkJ,CAAA,KAAAia,IACjBnjB,EAAAmJ,GAAA,KAAAga,EAAA,CAAMla,KACDtC,MAAQ,CAAEuc,MAAO,GAAIE,aAAa,EAAOC,MAAO,MAAOrjB,CAC9D,CAAC,O,sRAAAoJ,CAAA+Z,EAAAna,G,EAAAma,E,EAAA,EAAApkB,IAAA,oBAAAgE,MAED,WAAqB,IAADqI,EAAA,KAClBxC,GAAE,0BAA0B0a,GAAG1a,GAAEC,MAAM0a,aAAa,WAClDnY,EAAKoY,SAAS,GAChB,GACF,GAAC,CAAAzkB,IAAA,iBAAAgE,MAED,SAAeqgB,GACbhmB,KAAKwJ,SAAS,CAAEwc,YAAAA,GAClB,GAAC,CAAArkB,IAAA,WAAAgE,MAED,SAASmgB,GACP9lB,KAAKwJ,SAAS,CAAEsc,MAAAA,GAClB,GAAC,CAAAnkB,IAAA,WAAAgE,MAED,SAASsgB,GACPjmB,KAAKwJ,SAAS,CAAEyc,MAAAA,GAClB,GAAC,CAAAtkB,IAAA,iBAAAgE,MAED,WACE,IAAA+G,EAA+D1M,KAAK6L,MAA5Dga,EAAmBnZ,EAAnBmZ,oBAAqBzP,EAAc1J,EAAd0J,eAAgBlH,EAAaxC,EAAbwC,cACvCmX,EAAOrmB,KAEb4lB,GACkBC,EAAqBzP,EAAgBpW,KAAKuJ,MAAMuc,OAC/Dlc,MAAK,SAAC0c,GACDA,EAAS9J,QAAU,KAAO8J,EAAS9J,QAAU,MAC/C6J,EAAKE,gBAAe,GACpBrX,EAAc,SAAU,OAAQ,mBAEpC,IAAE,OACK,WACLmX,EAAKG,SAASnC,GAChB,IACF7Y,GAAEC,MAAMgb,OACV,GAAC,CAAA9kB,IAAA,SAAAgE,MAED,WAAU,IAAD+gB,EAAA,KACPC,EAAsC3mB,KAAKuJ,MAAnCyc,EAAWW,EAAXX,YAAaF,EAAKa,EAALb,MAAOG,EAAKU,EAALV,MAC5BW,EAAqC5mB,KAAK6L,MAAlCgb,EAASD,EAATC,UAAW3X,EAAa0X,EAAb1X,cAEnB,OACE9O,EAAAA,cAAA,OAAKoF,UAAWK,GAAGE,GAAO+gB,0BACxB1mB,EAAAA,cAAA,OAAKoF,UAAWK,GAAGE,GAAOghB,kBACvBd,GACC7lB,EAAAA,cAAC0c,GAAO,CAACtX,UAAWK,GAAGE,GAAOihB,UAAW3C,IAE1CwC,GAAab,EACZ5lB,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC0c,GAAO,CAACtX,UAAWK,GAAGE,GAAOihB,UAAW3C,IACzCjkB,EAAAA,cAAA,OAAKoF,UAAWK,GAAGE,GAAOgN,OAAQ,gBAAiB,aAChDsR,KAILjkB,EAAAA,cAAA,KACEiH,KAAK,yBACL+J,IAAI,aACJ9D,QAAS,WAAF,OACL4B,EACE,OACA,QACA,kBACA,+BACD,GAGH9O,EAAAA,cAACyX,GAAAA,EAAM,CAAC1N,SAAU8b,EAAOrlB,KAAK,MAC3ByjB,MAKTjkB,EAAAA,cAAA,OACEzB,GAAG,wBACH6G,UAAWK,GAAG,QAASE,GAAOkhB,cAC9BxmB,MAAO,CAAEH,QAAS,SAElBF,EAAAA,cAAA,UAAKikB,IAELjkB,EAAAA,cAAA,WACEA,EAAAA,cAAA,YACEuF,MAAOmgB,EACPtb,SAAU,SAACzL,GAAC,OAAK2nB,EAAKN,SAASrnB,EAAE2L,OAAO/E,MAAM,EAC9C0E,YAAaga,GACb7e,UAAWK,GAAGE,GAAOmhB,eAIzB9mB,EAAAA,cAAA,OAAKoF,UAAWK,GAAGE,GAAOohB,cACxB/mB,EAAAA,cAAA,OAAKoF,UAAWK,GAAGE,GAAOqhB,gBACxBhnB,EAAAA,cAAA,KACEiH,KAAK,IACL+J,IAAI,cACJ5L,UAAWK,GACTE,GAAOshB,aACP,gBACA,sBAEF/Z,QAAS,WAAF,OACL4B,EACE,QACA,QACA,kBACA,8BACA,CAAEoY,aAAcZ,EAAKnd,MAAMyc,aAC5B,GAGF3B,IAEHjkB,EAAAA,cAAA,KACEiH,KAAK,IACL7B,UAAWK,GACTE,GAAOshB,aACP,gBACA,sBAEF/Z,QAAS,WAAF,OAAQoZ,EAAKa,gBAAgB,GAEnClD,OAOf,I,8FAAC,CApIuB,CAASjkB,EAAAA,WA8InC,Y,gBCzJA,SArBoB,WAClB,OACEA,EAAAA,cAAA,OACEwb,MAAM,MACNlb,OAAO,KACP8mB,QAAQ,aACRC,KAAK,OACLC,MAAM,8BAENtnB,EAAAA,cAAA,QACEunB,EAAE,kvJACFF,KAAK,UAEPrnB,EAAAA,cAAA,QACEunB,EAAE,kGACFF,KAAK,YAIb,E,giCCPA,IAAMG,IAAgBC,EAAAA,EAAAA,iBAITC,GAAiB,SAAHljB,GAAsB,IAAhB2J,EAAQ3J,EAAR2J,SAIiBxF,EAAAhE,IAAZiE,EAAAA,EAAAA,UAAS,IAAG,GAAzCnC,EAAUkC,EAAA,GAAEG,EAAaH,EAAA,GACMK,EAAArE,IAAdiE,EAAAA,EAAAA,UAAS,MAAK,GAA/BN,EAAIU,EAAA,GAAE2e,EAAO3e,EAAA,GACwC4e,EAAAjjB,IAAZiE,EAAAA,EAAAA,UAAS,IAAG,GAArDK,EAAgB2e,EAAA,GAAEC,EAAmBD,EAAA,GACIE,EAAAnjB,IAAdiE,EAAAA,EAAAA,WAAS,GAAK,GAAzCmf,EAASD,EAAA,GAAEE,EAAYF,EAAA,IAE9B/e,EAAAA,EAAAA,YAAU,WAERtH,EAAAA,EAAM8H,IAAI,gBAAgBC,MAAK,SAACC,GAC9Bke,EAAQ,IAAIje,EAAAA,EAAKD,EAAI7H,KAAMhB,IAC3BonB,GAAa,EACf,GACF,GAAG,IAEH,IAAMC,GAAgBC,EAAAA,EAAAA,UACpB,kBACE9lB,GAAS,SAAC+lB,GACR,GAAI7f,GAAQ6f,EAAKxlB,OAlBI,EAkByB,CAC5C,IAAMO,EAAUoF,EAAKqB,OAAOwe,GAAM/jB,MAAM,EAlBrB,IAmBnByjB,EAAoB3kB,GACpB4E,EAAW,gCAAiC,CAC1CC,wBAAyBogB,EACzBngB,yBAA0B9E,EAAQP,QAEtC,MACEklB,EAAoB,GAExB,GA7BmB,IA6BD,GACpB,CAACvf,KAGHS,EAAAA,EAAAA,YAAU,WACRkf,EAAcxhB,EAChB,GAAG,CAACA,EAAYwhB,IAGhB,IAAMG,GAAeF,EAAAA,EAAAA,UACnB,iBAAO,CAAEzhB,WAAAA,EAAYqC,cAAAA,EAAeG,iBAAAA,EAAkB8e,UAAAA,EAAW,GACjE,CAACthB,EAAYqC,EAAeG,EAAkB8e,IAGhD,OACE/nB,EAAAA,cAACwnB,GAAca,SAAQ,CAAC9iB,MAAO6iB,GAC5Bja,EAGP,ECYA,SAnEsB,SAAH3J,GAAiC,IAA3BtB,EAAOsB,EAAPtB,QAASuD,EAAUjC,EAAViC,WAE1Bb,GAAOyQ,EAAAA,GAAAA,MACPiS,EAAqBrlB,EAAiB,OAAPC,QAAO,IAAPA,OAAO,EAAPA,EAASkB,MAAM,EAF9B,IAItB,OAAOkkB,EAAmB3lB,OAAS,EACjC2lB,EAAmBlqB,KAAI,SAACsI,EAAQjC,EAAKkC,GACnC,IAAyBC,EAAQF,EAAzBhD,gBACFmD,EAAUF,EAAIhE,OAAS,GAAK8B,IAAQkC,EAAIhE,OAAS,EAEvD,OACE3C,EAAAA,cAACC,EAAAA,EAAG,CAACsB,IAAKqF,EAAIE,KAAM,cAAY,kBAC9B9G,EAAAA,cAACqZ,GAAY,CAACpS,KAAI,SAAAhC,OAAW2B,EAAIE,OAC/B9G,EAAAA,cAACuZ,GAAY,KACXvZ,EAAAA,cAACkH,EAAAA,EAAI,CAAC/G,WAAW,UACfH,EAAAA,cAACkH,EAAAA,EAAI,CAAC/G,WAAW,SAASC,eAAe,UACvCJ,EAAAA,cAAA,OACEoH,IAAG,YAAAnC,OAAc2B,EAAIvF,MACrBgG,IAAKT,EAAIU,eACTjH,MAAO,CAAEmb,MAAO,OAAQC,UAAW,WAGvCzb,EAAAA,cAACkH,EAAAA,EAAI,CAACM,YAAY,KAAKC,UAAU,UAC/BzH,EAAAA,cAAC0H,EAAAA,EAAU,CAACkU,OAAO,QAAQhV,EAAIvF,MAC/BrB,EAAAA,cAAC0H,EAAAA,EAAU,CAACkU,OAAO,OAAOnb,MAAM,UAC7BmG,EAAIe,wBAMdd,GACC7G,EAAAA,cAACC,EAAAA,EAAG,CACF,cAAY,mBACZC,QAAQ,cACR4c,IAAI,KACJ1c,eAAe,YAEfJ,EAAAA,cAACwZ,GAAO,MACRxZ,EAAAA,cAAC2e,GAAAA,EAAU,CACTpd,IAAKkF,EACLQ,KAAI,yBAAAhC,OAA2BwB,IAE9Bb,EAAK+R,EAAE,oBAMpB,IAEA3X,EAAAA,cAAC0H,EAAAA,EAAU,CACT,cAAY,aACZtC,UAAU,iBACV3E,MAAM,SACNa,OAAO,YAENsE,EAAK+R,EAAE,oBAGd,E,mICxDA,IAAM4Q,IAAYziB,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWG,KAAAA,GAAAC,GAAA,mQAIP,SAAA1B,GAAkB,OAAAA,EAAfgkB,iBACFriB,EAAAA,EAAOkN,MAAM,IAIZ,SAAA3O,GAAa,OAAAA,EAAV+jB,YAA+BtiB,EAAAA,EAAOG,MAAM,IASjE0e,IAAclf,EAAAA,EAAAA,IAAO4iB,GAAAA,EAAP5iB,CAAaqC,KAAAA,GAAAjC,GAAA,+LAc3ByiB,IAAe7iB,EAAAA,EAAAA,IAAO2R,GAAAA,EAAP3R,CAAcwL,KAAAA,GAAApL,GAAA,kFAIXC,EAAAA,EAAOE,QAIzBuiB,IAAoB9iB,EAAAA,EAAAA,IAAOwT,GAAPxT,CAAoByL,KAAAA,GAAArL,GAAA,qGA4E9C,SApEkB,SAAH3C,GAA0B,IAApBslB,EAAYtlB,EAAZslB,aAEbjjB,GAAOyQ,EAAAA,GAAAA,MACbyS,GFnD6BC,EAAAA,EAAAA,YAAWvB,IEmDhC/gB,EAAUqiB,EAAVriB,WAAYqC,EAAaggB,EAAbhgB,cAAeG,EAAgB6f,EAAhB7f,iBAAkB8e,EAASe,EAATf,UAE/CiB,GAAYC,EAAAA,EAAAA,UAelB,OAbAlgB,EAAAA,EAAAA,YAAU,WACR,IAAMmgB,EAAqB,SAACC,GACtBH,EAAUI,UAAYJ,EAAUI,QAAQC,SAASF,EAAM7e,SACzDxB,EAAc,GAElB,EAGA,OADA7G,SAAS2N,iBAAiB,YAAasZ,GAChC,WACLjnB,SAAS4N,oBAAoB,YAAaqZ,EAC5C,CACF,GAAG,CAACpgB,IAGF9I,EAAAA,cAACC,EAAAA,EAAG,CAACI,MAAO,CAAE8hB,SAAU,YAAcmH,IAAKN,GACzChpB,EAAAA,cAACuoB,GAAS,CACRC,gBAA6B,OAAZK,QAAY,IAAZA,OAAY,EAAZA,EAAcL,gBAC/BC,WAAwB,OAAZI,QAAY,IAAZA,OAAY,EAAZA,EAAcJ,WAC1BvoB,QAAQ,OACR4c,IAAI,KACJ3c,WAAW,UAEXH,EAAAA,cAAC2oB,GAAY,CACXvO,KAAMpa,EAAAA,cAACkI,GAAAA,EAAM,MACb1H,KAAK,KACL,aAAW,SACXkX,QAAQ,WACRjX,MAAO0F,EAAAA,EAAO2U,QAEhB9a,EAAAA,cAACglB,GAAW,CACV,cAAY,eACZ/Y,KAAK,OACL5K,KAAK,eACL,aAAW,eACX4I,YAAarE,EAAK+R,EAAE,sBACpBpS,MAAOkB,EACP2D,SAAU,SAACzL,GAAC,OAAKmK,EAAcnK,EAAE2L,OAAO/E,MAAM,KAGjDkB,EAAW9D,OA7Cc,GA8CxB3C,EAAAA,cAAC4oB,GAAiB,KACfb,EACC/nB,EAAAA,cAAC0H,EAAAA,EAAU,CAACkU,OAAO,OAAOnb,MAAM,SAASa,OAAO,YAC7CsE,EAAK+R,EAAE,yBAGV3X,EAAAA,cAACupB,GAAa,CAACrmB,QAAS+F,EAAkBxC,WAAYA,KAMlE,E,qJC5GA,IAAM+iB,IAAa1jB,EAAAA,EAAAA,IAAO2R,GAAAA,EAAP3R,CAAcG,KAAAA,GAAAC,GAAA,4DAEXC,EAAAA,EAAOC,QAGvBqjB,IAAW3jB,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWqC,KAAAA,GAAAjC,GAAA,gNACNC,EAAAA,EAAOC,OAQLD,EAAAA,EAAOG,QAwE/B,SApEoB,WAClB,IACMV,GAAOyQ,EAAAA,GAAAA,MAGPqT,EAAWvP,GAAsB7V,QAAO,SAACqlB,EAAMjqB,EAAM+E,GAMzD,OALIA,EALgB,IAKQ,EAC1BklB,EAAKzkB,KAAK,CAACxF,IAEXiqB,EAAKA,EAAKhnB,OAAS,GAAGuC,KAAKxF,GAEtBiqB,CACT,GAAG,IAyBGC,EACJ5pB,EAAAA,cAACsZ,GAAY,KACXtZ,EAAAA,cAAC6pB,GAAAA,EAAI,CAACC,QAAQ,KAAKC,QAAQ,MACxBL,EAAStrB,KAAI,SAAC4rB,EAAKC,GAClB,IAAMC,EAAM,OAAAjlB,OAAUglB,GACtB,OACEjqB,EAAAA,cAAC6pB,GAAAA,EAAKM,IAAG,CAAC5oB,IAAK2oB,GACZF,EAAI5rB,KAAI,SAACsB,EAAM0qB,GAAS,OA9Bd,SAAC1qB,EAAM6B,GAAG,OAC/BvB,EAAAA,cAAC6pB,GAAAA,EAAKQ,IAAG,CAAC9oB,IAAKA,GACbvB,EAAAA,cAACqZ,GAAY,CACXpS,KAAMvH,EAAKuH,KACXqD,OAAO,SACP,yBAAArF,OAAwBvF,EAAK4a,SAE7Bta,EAAAA,cAACypB,GAAQ,CACPvpB,QAAQ,cACR4c,IAAI,KACJ3B,QAAQ,KACRhb,WAAW,SACXC,eAAe,UAEdV,EAAK0a,KACNpa,EAAAA,cAAC0H,EAAAA,EAAU,CAACkU,OAAO,QAAQta,OAAO,YAC/BsE,EAAK+R,EAAEjY,EAAKsP,UAIV,CAWCsb,CAAe5qB,EAAK,OAADuF,OAASmlB,GAAY,IAIhD,MAKN,OACEpqB,EAAAA,cAACC,EAAAA,EAAG,CAAC,cAAY,eAAeC,QAAQ,QACtCF,EAAAA,cAACuqB,GAAAA,EAAc,CAACxS,UAAU,SAASD,QAAS8R,GAC1C5pB,EAAAA,cAACwpB,GAAU,CACTpP,KAAMpa,EAAAA,cAACse,GAAAA,EAAI,MACX9d,KAAK,KACL,aAAYoF,EAAK+R,EAAE,4BACnBD,QAAQ,eAKlB,E,0iCChGA,I,SAAMtJ,GAAe,CACnBoc,WAAY,CACV5jB,IAAK,CAAC,EACN0W,KAAM,CAAC,EACPmN,oBAAqB,CACnBC,QAAS,GACTC,SAAS,GAEXC,oCAAoC,EACpC1N,YAAa,GACboG,QAAS,GACTjG,YAAa,CAAC,EACdwN,mBAAmB,GAErBC,OAAQ,CAAC,EACTC,QAAS,CACPvkB,KAAM,GACN4F,WAAY,GACZ4e,MAAO,KAILC,IAAaxD,EAAAA,EAAAA,iBAENyD,GAAgB,WAAH,OAASnC,EAAAA,EAAAA,YAAWkC,GAAY,EAE7CE,GAAqB,SAAH3mB,GAKxB,IAJL2J,EAAQ3J,EAAR2J,SACAqc,EAAUhmB,EAAVgmB,WACAO,EAAOvmB,EAAPumB,QACAD,EAAMtmB,EAANsmB,OAEM1C,GAAeF,EAAAA,EAAAA,UACnB,kBAAAvkB,GAAAA,GAAC,CAAD,EACKyK,IAAY,IACfoc,WAAAA,EACAM,OAAAA,EACAC,QAAAA,GAAO,GAET,CAACP,EAAYM,EAAQC,IAGvB,OACE/qB,EAAAA,cAACirB,GAAW5C,SAAQ,CAAC9iB,MAAO6iB,GAAeja,EAE/C,E,mHC/BA,IAAMid,IAAYtlB,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWG,KAAAA,GAAAC,GAAA,+HACPC,EAAAA,EAAOkN,OAKLlN,EAAAA,EAAOG,QAIzB+kB,IAAcvlB,EAAAA,EAAAA,IAAO4B,EAAAA,EAAP5B,CAAkBqC,KAAAA,GAAAjC,GAAA,wGAOhC0Z,IAAW9Z,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWwL,KAAAA,GAAApL,GAAA,yGACT6L,GAAAA,EAAQqB,GAIHjN,EAAAA,EAAOkN,QA2G/B,SAvGmB,WACjB,IAAMzN,GAAOyQ,EAAAA,GAAAA,MACLyU,EAAWI,KAAXJ,OAENta,EAMEsa,EANFta,eACAD,EAKEua,EALFva,YACAxD,EAIE+d,EAJF/d,WACAH,EAGEke,EAHFle,WACAC,EAEEie,EAFFje,YACAC,EACEge,EADFhe,kBAGF,IAAKC,EACH,OACE/M,EAAAA,cAAC2e,GAAAA,EAAU,CAAC,cAAY,eAAe1X,KAAM2F,EAAYpM,KAAK,MAC3DoF,EAAK+R,EAAE,iBAKd,IAAMiS,EACJ5pB,EAAAA,cAACsZ,GAAY,KACXtZ,EAAAA,cAAC6pB,GAAAA,EAAI,CAACC,QAAQ,KAAKC,QAAQ,MACzB/pB,EAAAA,cAAC6pB,GAAAA,EAAKM,IAAG,KACPnqB,EAAAA,cAAC6pB,GAAAA,EAAKQ,IAAG,CAACiB,SAAU,IAClBtrB,EAAAA,cAACC,EAAAA,EAAG,CAACkb,QAAQ,QAAQjb,QAAQ,OAAO4c,IAAI,KAAK3c,WAAW,UACtDH,EAAAA,cAAC0H,EAAAA,EAAU,CAACkU,OAAO,OAAOta,OAAO,YAC9BiP,EAAY9B,QAGjBzO,EAAAA,cAACwZ,GAAO,MACRxZ,EAAAA,cAACqZ,GAAY,CAACpS,KAAM6F,EAAmBxC,OAAO,SAC5CtK,EAAAA,cAAC4f,GAAQ,CACP1f,QAAQ,OACR4c,IAAI,KACJ3c,WAAW,SACXgb,QAAQ,SAERnb,EAAAA,cAACme,GAAAA,EAAQ,MACTne,EAAAA,cAAC0H,EAAAA,EAAU,CAACkU,OAAO,SAChBhW,EAAK+R,EAAE,2BAId3X,EAAAA,cAACwZ,GAAO,MACRxZ,EAAAA,cAACqZ,GAAY,CAACpS,KAAM4F,EAAavC,OAAO,SACtCtK,EAAAA,cAAC4f,GAAQ,CACP1f,QAAQ,OACR4c,IAAI,KACJ3c,WAAW,SACXgb,QAAQ,SAERnb,EAAAA,cAACurB,GAAAA,EAAM,CACL9qB,MAAO0F,EAAAA,EAAOqlB,MACdnE,KAAMlhB,EAAAA,EAAOqlB,MACbC,OAAQtlB,EAAAA,EAAOqlB,QAEjBxrB,EAAAA,cAAC0H,EAAAA,EAAU,CAACkU,OAAO,QAAQnb,MAAM,SAC9BmF,EAAK+R,EAAE,wBAUxB,OACE3X,EAAAA,cAACuqB,GAAAA,EAAc,CAACxS,UAAU,eAAeD,QAAS8R,GAChD5pB,EAAAA,cAACorB,GAAS,CACRlrB,QAAQ,OACR4c,IAAI,KACJ3B,QAAQ,KACRhb,WAAW,SACX,cAAY,eAEZH,EAAAA,cAACsO,GAAAA,GAAM,CAAC,aAAW,aAAa9N,KAAK,KAAKH,MAAO,CAAEqrB,OAAQ,YACzD1rB,EAAAA,cAACsO,GAAAA,GAAO4P,KAAI,CAAC9D,KAAMpa,EAAAA,cAAC2rB,GAAAA,EAAM,SAE5B3rB,EAAAA,cAACC,EAAAA,EAAG,CACFC,QAAQ,OACRG,MAAO,CACLmoB,gBAAiBriB,EAAAA,EAAOyL,MACxB2N,aAAc,OACdjf,OAAQ,QAEV6a,QAAQ,MAERnb,EAAAA,cAACqrB,GAAW,CACVjmB,UAAU,iBACVwW,OAAO,OACPta,OAAO,WACP,aAAYkP,EAAenP,MAE1BmP,EAAenP,QAM5B,E,ogCC9IO,IAAMuqB,GAAgB,SAACZ,GAC5B,IAAwEriB,EAAAhE,IAA1CiE,EAAAA,EAAAA,UAAS7G,OAAO8pB,WAAWb,GAAOxnB,SAAQ,GAAjEA,EAAOmF,EAAA,GAAEmjB,EAAUnjB,EAAA,GAY1B,OAVAI,EAAAA,EAAAA,YAAU,WACR,IAAMgjB,EAAiBhqB,OAAO8pB,WAAWb,GAEnCgB,EAAe,WAAH,OAASF,EAAWC,EAAevoB,QAAS,EAI9D,OAHAuoB,EAAenc,iBAAiB,SAAUoc,GAGnC,kBAAMD,EAAelc,oBAAoB,SAAUmc,EAAc,CAC1E,GAAG,CAAChB,IAEGxnB,CACT,ECQA,SAtBmB,WACjB,OACExD,EAAAA,cAAA,OACEwb,MAAM,KACNlb,OAAO,KACP8mB,QAAQ,YACRC,KAAK,OACLC,MAAM,6BACN,cAAY,eAEZtnB,EAAAA,cAAA,QACEunB,EAAE,+RACFF,KAAK,UAEPrnB,EAAAA,cAAA,QACEunB,EAAE,oGACFF,KAAK,YAIb,E,kBCdA,I,MAAM5N,IAAkB3T,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWG,K,GAAA,iC,qBAAAA,G,4EACbE,EAAAA,EAAOyL,OAgC7B,SA7BmB,SAAHpN,GAAA,IAAMynB,EAAUznB,EAAVynB,WAAYtb,EAAmBnM,EAAnBmM,oBAAqBub,EAAK1nB,EAAL0nB,MAAK,OAC1DlsB,EAAAA,cAACyZ,GAAe,CACdvZ,QAAQ,OACRE,eAAe,gBACf+a,QAAQ,SAERnb,EAAAA,cAACqZ,GAAY,CAACpS,KAAM0J,GAClB3Q,EAAAA,cAACC,EAAAA,EAAG,CAACC,QAAQ,cAAc4c,IAAI,KAAK3c,WAAW,UAC7CH,EAAAA,cAACmsB,GAAU,MACXnsB,EAAAA,cAAC0H,EAAAA,EAAU,CAACkU,OAAO,KAAKta,OAAO,YAC5B4qB,KAIPlsB,EAAAA,cAACyX,GAAAA,EAAM,CACLC,QAAQ,WACR0C,KAAMpa,EAAAA,cAACosB,GAAAA,EAAK,MACZlf,QAAS+e,EACT,cAAY,eAEE,E,6HCnBpB,IAAMI,IAAgBvmB,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWG,KAAAA,GAAAC,GAAA,oDACXC,EAAAA,EAAOC,QAIvBwZ,IAAW9Z,EAAAA,EAAAA,IAAO6Y,GAAAA,EAAP7Y,CAAkBqC,KAAAA,GAAAjC,GAAA,kEAyCnC,SApCiB,WACf,IAAMN,GAAOyQ,EAAAA,GAAAA,MACb,OACErW,EAAAA,cAACqsB,GAAa,KACZrsB,EAAAA,cAACC,EAAAA,EAAG,CAACC,QAAQ,QAAQigB,cAAc,MACjCngB,EAAAA,cAAC0H,EAAAA,EAAU,CAACtC,UAAU,gBACnBQ,EAAK+R,EAAE,0BAIZ3X,EAAAA,cAACwZ,GAAO,CAAC/Y,MAAO0F,EAAAA,EAAOG,SAEvBtG,EAAAA,cAACkH,EAAAA,EAAI,CAACO,UAAU,SAASqV,IAAI,MAC1B3C,GAAsB/b,KAAI,SAACsB,GAAI,OAC9BM,EAAAA,cAAC4f,GAAQ,CACPre,IAAK7B,EAAKuH,KACVA,KAAMvH,EAAKuH,KACXqlB,OAAK,EACL5U,QAAQ,WACR6U,KAAK,OACL/rB,KAAK,MAELR,EAAAA,cAAC0H,EAAAA,EAAU,CACTkU,OAAO,OACPta,OAAO,WACP8D,UAAU,kBAETQ,EAAK+R,EAAEjY,EAAKsP,QAEN,KAKrB,E,OC5CA,IAAMwd,IAAa1mB,EAAAA,EAAAA,IAAO6Y,GAAAA,EAAP7Y,CAAkBG,KAAAA,G,gHAAAC,CAAA,kEA6FrC,SAxFoB,SAAH1B,GAKV,IAJL+L,EAAW/L,EAAX+L,YACAC,EAAchM,EAAdgM,eACA1D,EAAiBtI,EAAjBsI,kBACAD,EAAWrI,EAAXqI,YAEMjH,GAAOyQ,EAAAA,GAAAA,MACb,OACErW,EAAAA,cAACC,EAAAA,EAAG,CACFC,QAAQ,cACR4c,IAAI,KACJ1c,eAAe,SACfD,WAAW,UAEXH,EAAAA,cAACC,EAAAA,EAAG,CAACC,QAAQ,cAAc4c,IAAI,KAAK3c,WAAW,UAC7CH,EAAAA,cAACsO,GAAAA,GAAM,CACL,aAAY1I,EAAK+R,EAAE,sBACnBnX,KAAK,KACLH,MAAO,CAAEmb,MAAO,OAAQlb,OAAQ,SAEhCN,EAAAA,cAACsO,GAAAA,GAAO4P,KAAI,CAAC9D,KAAMpa,EAAAA,cAAC2rB,GAAAA,EAAM,CAACnrB,KAAK,UAElCR,EAAAA,cAAC0H,EAAAA,EAAU,CAACtC,UAAU,kBAAkBmL,EAAY9B,QAGtDzO,EAAAA,cAAC0H,EAAAA,EAAU,CACTtC,UAAU,iBACVwW,OAAO,KACPta,OAAO,WACP,aAAYkP,EAAenP,MAE1BmP,EAAenP,MAGlBrB,EAAAA,cAACC,EAAAA,EAAG,CAACC,QAAQ,cAAc4c,IAAI,KAAKzc,MAAO,CAAEmb,MAAO,SAClDxb,EAAAA,cAACwsB,GAAU,CACTvlB,KAAM6F,EACNxC,OAAO,QACPoN,QAAQ,YACR4U,OAAK,EACL9rB,KAAK,MAELR,EAAAA,cAACC,EAAAA,EAAG,CACFC,QAAQ,OACR4c,IAAI,KACJ3c,WAAW,SACXC,eAAe,aACf+a,QAAQ,SAERnb,EAAAA,cAACme,GAAAA,EAAQ,MACTne,EAAAA,cAAC0H,EAAAA,EAAU,CAACtC,UAAU,iBAAiBwW,OAAO,SAC3ChW,EAAK+R,EAAE,2BAKd3X,EAAAA,cAACwsB,GAAU,CACTvlB,KAAM4F,EACNvC,OAAO,QACPoN,QAAQ,YACR4U,OAAK,EACL9rB,KAAK,MAELR,EAAAA,cAACC,EAAAA,EAAG,CACFC,QAAQ,OACR4c,IAAI,KACJ3c,WAAW,SACXC,eAAe,aACf+a,QAAQ,SAERnb,EAAAA,cAACurB,GAAAA,EAAM,CAAC9qB,MAAO0F,EAAAA,EAAOqlB,QACtBxrB,EAAAA,cAAC0H,EAAAA,EAAU,CAACtC,UAAU,iBAAiBwW,OAAO,QAAQnb,MAAM,SACzDmF,EAAK+R,EAAE,qBAOtB,E,OC3FA,IAAM8U,IAAkB3mB,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWG,KAAAA,G,gHAAAC,CAAA,iEACbC,EAAAA,EAAOyL,MACHzL,EAAAA,EAAOG,QAuCjC,SApCmB,SAAH9B,GAOT,IANLuI,EAAUvI,EAAVuI,WACAH,EAAUpI,EAAVoI,WACA2D,EAAW/L,EAAX+L,YACAC,EAAchM,EAAdgM,eACA1D,EAAiBtI,EAAjBsI,kBACAD,EAAWrI,EAAXqI,YAEMjH,GAAOyQ,EAAAA,GAAAA,MAEb,OACErW,EAAAA,cAACysB,GAAe,CAACtR,QAAQ,MACrBpO,EAKA/M,EAAAA,cAAC0sB,GAAW,CACVnc,YAAaA,EACbC,eAAgBA,EAChB1D,kBAAmBA,EACnBD,YAAaA,IARf7M,EAAAA,cAAC2e,GAAAA,EAAU,CAAC1X,KAAM2F,EAAY0f,OAAK,EAAC9rB,KAAK,MACtCoF,EAAK+R,EAAE,iBAYlB,E,OC5BA,IAAMgV,IAAc7mB,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWG,KAAAA,G,gHAAAC,CAAA,qDACTC,EAAAA,EAAOyL,OA0C7B,SAtCmB,SAAHpN,GAAwB,IAAlBynB,EAAUznB,EAAVynB,WACdrmB,GAAOyQ,EAAAA,GAAAA,MACLyU,EAAWI,KAAXJ,OAENna,EAOEma,EAPFna,oBACA/D,EAMEke,EANFle,WACA4D,EAKEsa,EALFta,eACAD,EAIEua,EAJFva,YACAxD,EAGE+d,EAHF/d,WACAF,EAEEie,EAFFje,YACAC,EACEge,EADFhe,kBAEF,OACE9M,EAAAA,cAAC2sB,GAAW,CAACzsB,QAAQ,eACnBF,EAAAA,cAAC4sB,GAAU,CACTX,WAAYA,EACZtb,oBAAqBA,EACrBub,MAAOtmB,EAAK+R,EAAE,2BAGhB3X,EAAAA,cAAC6sB,GAAQ,MAET7sB,EAAAA,cAAC8sB,GAAU,CACT/f,WAAYA,EACZH,WAAYA,EACZ2D,YAAaA,EACbC,eAAgBA,EAChB1D,kBAAmBA,EACnBD,YAAaA,IAIrB,E,uoCCxBA,IAAMkgB,IAAajnB,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWG,KAAAA,GAAAC,GAAA,0BAIxBwN,GAAS5N,EAAAA,GAAOglB,OAAM3iB,KAAAA,GAAAjC,GAAA,qLAKNC,EAAAA,EAAOyL,MACAzL,EAAAA,EAAOG,OACrByL,GAAAA,EAAQC,IAKjBgb,IAAelnB,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWwL,KAAAA,GAAApL,GAAA,4DAM1B+mB,IAAsBnnB,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWyL,KAAAA,GAAArL,GAAA,6UAMjBC,EAAAA,EAAOyL,OAEhB,SAAApN,GAAS,OAAAA,EAANgJ,OAAuB,EAAI,CAAC,IAC7B,SAAA9I,GAAS,OAAAA,EAAN8I,OAAuB,WAAa,YAAY,IAMlD,SAAAjK,GAAS,OAAAA,EAANiK,OAAuB,UAAY,QAAQ,IAkF9D,SA/Ee,SAAH/J,GAA6B,IAAvBypB,EAAezpB,EAAfypB,gBACmCvkB,EAAAhE,IAAfiE,EAAAA,EAAAA,WAAS,GAAM,GAA5CukB,EAAUxkB,EAAA,GAAEykB,EAAazkB,EAAA,GAC1B0kB,EAAWzB,GAAc,sBACzB0B,EAAW1B,GAAc,sBACzB2B,EAAY3B,GAAc,uBAC1BhmB,GAAOyQ,EAAAA,GAAAA,MAEL1F,EADWua,KAAXJ,OACAna,oBAEFsb,EAAa,WAAH,OAASmB,GAAeD,EAAY,EAEpD,OACEntB,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC0T,GAAM,CAAC,cAAY,cAClB1T,EAAAA,cAACgtB,GAAY,CACX9sB,QAAQ,OACRib,QAAQ,KACRhb,WAAW,SACXC,eAAe,gBACf0c,IAAI,MAEJ9c,EAAAA,cAACqZ,GAAY,CAACpS,KAAM0J,GAClB3Q,EAAAA,cAAC+sB,GAAU,CACT7sB,QAAQ,cACR4c,IAAI,KACJ3c,WAAW,SACX,cAAY,gBAEVotB,EAA8BvtB,EAAAA,cAACmsB,GAAU,MAA7BnsB,EAAAA,cAACwtB,GAAW,MAC1BxtB,EAAAA,cAAC0H,EAAAA,EAAU,CACTkU,OAAO,KACPta,OAAO,WACPjB,MAAO,CAAEotB,SAAU,SAElB7nB,EAAK+R,EAAE,6BAKZ2V,GAAYJ,GACZltB,EAAAA,cAACC,EAAAA,EAAG,CAACytB,KAAM,GAAI,cAAY,kBACzB1tB,EAAAA,cAAC2tB,GAAS,OAIZN,EAMArtB,EAAAA,cAACyX,GAAAA,EAAM,CACL,cAAY,qBACZC,QAAQ,WACR0C,KAAMpa,EAAAA,cAAC4tB,GAAAA,EAAI,MACX1gB,QAAS+e,IATXjsB,EAAAA,cAACC,EAAAA,EAAG,CAACC,QAAQ,cAAc4c,IAAI,KAAK3c,WAAW,UAC7CH,EAAAA,cAAC6tB,GAAW,MACZ7tB,EAAAA,cAAC8tB,GAAU,QAYhBR,GAAYJ,GACXltB,EAAAA,cAACC,EAAAA,EAAG,CAACkgB,cAAc,KAAK,cAAY,iBAClCngB,EAAAA,cAAC2tB,GAAS,QAIfN,GACCrtB,EAAAA,cAACitB,GAAmB,CAACzf,OAAQ2f,EAAY,cAAY,eACnDntB,EAAAA,cAACuL,GAAU,CAAC0gB,WAAYA,KAKlC,EC3GA,SA1BmB,WACjB,OACEjsB,EAAAA,cAAA,OACEwb,MAAM,KACNlb,OAAO,KACP8mB,QAAQ,YACRC,KAAK,OACLC,MAAM,8BAENtnB,EAAAA,cAAA,QACEunB,EAAE,2NACFF,KAAK,QACL0G,YAAY,OACZtC,OAAO,UACPuC,YAAY,QAEdhuB,EAAAA,cAAA,QACEunB,EAAE,mNACFF,KAAK,QACLoE,OAAO,UACPuC,YAAY,QAIpB,E,+ICbA,IAAMC,IAAiBnoB,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWG,KAAAA,GAAAC,GAAA,8HAU5BgoB,IAAsBpoB,EAAAA,EAAAA,IAAO7F,EAAAA,EAAP6F,CAAWqC,KAAAA,GAAAjC,GAAA,+HAUjCioB,IAAsBroB,EAAAA,EAAAA,IAAOoB,EAAAA,EAAPpB,CAAYwL,KAAAA,GAAApL,GAAA,yEAQlCkoB,IAAsBtoB,EAAAA,EAAAA,IAAOuoB,GAAAA,EAAPvoB,CAAgByL,KAAAA,GAAArL,GAAA,yEAgF5C,SA1EsB,SAAH1B,GAAqC,IAA/BgC,EAAIhC,EAAJgC,KAAM4F,EAAU5H,EAAV4H,WAAY4e,EAAKxmB,EAALwmB,MACzCxkB,EACGlD,QAAO,SAACsD,GAAG,OAAKA,EAAIvF,KAAKitB,WAAW,SAAS,IAC7ClwB,KACC,SAACwI,GAAG,OACDA,EAAIe,mBAAqBf,EAAIe,mBAAmB4mB,QAAQ,IAAK,MAAM,IAG1E,IAAMjmB,EAAO,IAAIoB,EAAAA,EAAKlD,EAAM5F,GACtB4tB,EAAWxD,EACb1iB,EAAKqB,OAAOqhB,GAAO5sB,KAAI,SAACsI,GAAM,OAAKA,EAAOhH,IAAI,IAC9C8G,EASJ,OAPAgoB,EACGlrB,QAAO,SAACsD,GAAG,OAAKA,EAAIvF,KAAKitB,WAAW,SAAS,IAC7ClwB,KACC,SAACwI,GAAG,OACDA,EAAIe,mBAAqBf,EAAIe,mBAAmB4mB,QAAQ,OAAQ,GAAG,IAIxEvuB,EAAAA,cAACkH,EAAAA,EAAI,KACFkF,EAAWzJ,OAAS,GACnB3C,EAAAA,cAACiuB,GAAc,KACbjuB,EAAAA,cAACyuB,GAAe,CAACriB,WAAYA,KAGhCoiB,EAAS7rB,OAAS,EACjB3C,EAAAA,cAACkuB,GAAmB,KAClBluB,EAAAA,cAACouB,GAAmB,CAClBM,SAAU,CACRhB,KAAM,UACNiB,aAAc,MAEhBvuB,eAAe,SACfwuB,MAAM,MACNC,KAAK,QAEJL,EAASpwB,KAAI,SAAC2sB,GAAO,OACpB/qB,EAAAA,cAAC8uB,GAAe,CAACloB,IAAKmkB,EAASxpB,IAAKwpB,EAAQjkB,MAAQ,MAK1D9G,EAAAA,cAACmuB,GAAmB,CAAC/tB,eAAe,UAClCJ,EAAAA,cAAC0H,EAAAA,EAAU,CAACjH,MAAM,UAChBT,EAAAA,cAAC+uB,GAAS,QAMtB,E,uCCjGMC,GAAiB,SAACpoB,GAAG,OACzBnF,EAAAA,EAAAA,GAAM,CACJC,OAAQ,OACRC,IAAK,yBACLC,KAAM,CACJgF,IAAAA,GAEF9E,QAAS,CACP,eAAgBG,SAASmjB,cAAc,2BAA2B/gB,UAEnE,E,iqDCiBL,IAAM4qB,GAAe,CACnBjV,OAAQ,WACRC,WAAY,WACZC,UAAW,YAGPgV,GAAe,SAAH1qB,GAQX,IAAD2qB,EAPJvoB,EAAGpC,EAAHoC,IACA6jB,EAAmBjmB,EAAnBimB,oBACAG,EAAkCpmB,EAAlComB,mCACA1N,EAAW1Y,EAAX0Y,YACAI,EAAI9Y,EAAJ8Y,KACA8R,EAAW5qB,EAAX4qB,YACA9L,EAAO9e,EAAP8e,QAGE/F,EAyBE3W,EAzBF2W,SACA9O,EAwBE7H,EAxBF6H,MACApN,EAuBEuF,EAvBFvF,KACAwf,EAsBEja,EAtBFia,KACAnB,EAqBE9Y,EArBF8Y,UAEAlC,GAmBE5W,EApBFyoB,QAoBEzoB,EAnBF4W,kBACAC,EAkBE7W,EAlBF6W,YACA9V,EAiBEf,EAjBFe,mBACAgW,EAgBE/W,EAhBF+W,WACArW,EAeEV,EAfFU,eACAgoB,EAcE1oB,EAdF0oB,QACAC,EAaE3oB,EAbF2oB,eACAvU,EAYEpU,EAZFoU,WACA0C,EAWE9W,EAXF8W,iBACAK,EAUEnX,EAVFmX,mBACAyR,EASE5oB,EATF4oB,aACA5R,EAQEhX,EARFgX,aACA6R,EAOE7oB,EAPF6oB,YACA3rB,EAME8C,EANF9C,QACA4rB,EAKE9oB,EALF8oB,UACAC,EAIE/oB,EAJF+oB,mBAEAC,GAEEhpB,EAHFipB,kBAGEjpB,EAFFgpB,gBACAE,EACElpB,EADFkpB,gCAGIC,GACM,OAAV/U,QAAU,IAAVA,OAAU,EAAVA,EAAY5c,KAAI,SAACie,GAAS,OAAK4S,GAAa5S,EAAU,IAAE/Y,OAAOgZ,WAC/D,CAAC,EAE4C3T,EAAAhE,IAAfiE,EAAAA,EAAAA,WAAS,GAAM,GAAxConB,EAAQrnB,EAAA,GAAEsnB,EAAWtnB,EAAA,GACtBunB,EAAiB,WAAH,OAASD,GAAaD,EAAU,EAC9ClhB,EAAgB,SACpBC,EACA/C,EACAgD,EACAC,EACAC,EACAC,GAEoB,qBAATC,MACTA,KAAK,QAASL,EAAQ,CACpBM,eAAgBrD,EAChBsD,YAAaN,EACbG,UAAAA,IAGJrH,EAAW,oBAAD7C,OAAqBgK,G,kWAAYtL,CAAA,CACzC4L,SAAUlO,GACP6N,GAEP,EAEMihB,EAAmB,CAAEC,SAAU,EAAGC,SAAU,IAC5CC,EAAkB,CAAEF,SAAU,EAAGC,SAAU,IAK/CrnB,EAAArE,IAHkCiE,EAAAA,EAAAA,UAAS,CAC3C4Y,MAAO,KACPD,YAAa,OACb,GAHKgP,EAAUvnB,EAAA,GAAE8X,EAAa9X,EAAA,GAI2B4e,EAAAjjB,IAAfiE,EAAAA,EAAAA,WAAS,GAAM,GAApD4nB,EAAc5I,EAAA,GAAE6I,EAAiB7I,EAAA,GACkBE,EAAAnjB,IAAZiE,EAAAA,EAAAA,UAAS,IAAG,GAAnD8nB,GAAe5I,EAAA,GAAE6I,GAAkB7I,EAAA,GACpC/S,GAAiB,CACrBC,eAAe,EACfC,MAAM,EACNC,UAAU,EACV0b,MAAO,IACPzb,aAAc,EACdC,eAAgB,EAChBC,MAAM,EACNC,gBAAgB,EAChBub,aAAc,SAACC,EAAMnb,GACnB7G,EAAc,QAAS,eAAgB6G,EAAO,uBAAwB,CACpEA,MAAAA,IAEFgb,GACY,IAAVhb,GAAe4a,EAAW/O,MACtB,GACAiO,EAAYc,EAAW/O,MAAQ7L,EAAQ,EAAIA,GAAOhU,IAE1D,EACA6T,UACExV,EAAAA,cAAC2iB,GAAqB,KACpB3iB,EAAAA,cAAA,OAAKqH,IAAM2X,UAAU,qCAAuC5X,IAAI,MAGpEqO,UACEzV,EAAAA,cAAC2iB,GAAqB,KACpB3iB,EAAAA,cAAA,OAAKqH,IAAM2X,UAAU,sCAAwC5X,IAAI,QAWvE2B,EAAAA,EAAAA,YAAU,WACRgoB,GAAclQ,EAAMC,EACtB,GAAG,IAqLH,OACE9gB,EAAAA,cAAAA,EAAAA,SAAA,MACc,OAAXyvB,QAAW,IAAXA,OAAW,EAAXA,EAAa9sB,QAAS,GACrB3C,EAAAA,cAAC2iB,GAAiB,CAChB1K,KAAMuY,EACNtY,eAAgB,WAAF,OAAQuY,GAAkB,EAAM,GAE9CzwB,EAAAA,cAAC2iB,GAAqB,KACpB3iB,EAAAA,cAACC,EAAAA,EAAG,CAACI,MAAO,CAAE8hB,SAAU,aACtBniB,EAAAA,cAAC2iB,GAA4B,CAC3BzV,QAAS,WAAF,OAAQujB,GAAkB,EAAM,IAEzCzwB,EAAAA,cAAC2iB,GAAiB,CAChBtb,IAAKqpB,KAAiC,QAAlBvB,EAAIM,EAAY,UAAE,IAAAN,OAAA,EAAdA,EAAgBxtB,KACxCyF,IAAI,QAOdpH,EAAAA,cAACkH,EAAAA,EAAI,CAAC9G,eAAe,UACnBJ,EAAAA,cAACwP,GAAiB4f,GAClBpvB,EAAAA,cAACkH,EAAAA,EAAI,CAACO,UAAU,UACdzH,EAAAA,cAAC2iB,GAAgB,CAACxH,QAAQ,cACxBnb,EAAAA,cAAC6pB,GAAAA,EAAI,CAACmH,YAAY,WAAWlH,QAAS,CAAEsG,SAAU,QAChDpwB,EAAAA,cAAC6pB,GAAAA,EAAKM,IAAG,KACPnqB,EAAAA,cAAC6pB,GAAAA,EAAKQ,IAAG,CAACiB,SAAU6E,GAClBnwB,EAAAA,cAACkH,EAAAA,EAAI,CAAC/G,WAAW,SAASwuB,aAAa,MACrC3uB,EAAAA,cAAC2iB,GAAuB,CACtB5D,YAAY,KACZ3e,eAAe,SACfD,WAAW,UAEXH,EAAAA,cAAC2iB,GAAgB,CACftb,IACEC,IACU,OAAVqW,QAAU,IAAVA,OAAU,EAAVA,EAAYhc,MACZqd,UAAU,2BAIhBhf,EAAAA,cAACkH,EAAAA,EAAI,CAACO,UAAU,SAASrH,eAAe,UACtCJ,EAAAA,cAAC6S,EAAAA,GAAE,KAAExR,GACLrB,EAAAA,cAACiL,EAAAA,EAAC,CAAC5K,MAAO,CAAEsuB,aAAc,EAAGxP,UAAW,SACrCxX,MAKT3H,EAAAA,cAAC6pB,GAAAA,EAAKQ,IAAG,CAACiB,SAAUgF,GAClBtwB,EAAAA,cAACkH,EAAAA,EAAI,CACH9G,eAAe,SACfD,WAAW,SACXE,MAAO,CAAEC,OAAQ,SAEjBN,EAAAA,cAACC,EAAAA,EAAG,CAAC8e,YAAY,MA3OX,WACtB,GAAIW,EACF,OAAO1f,EAAAA,cAACyX,GAAAA,EAAM,CAAC1N,UAAQ,GAAC,aAG1B,GAAIgU,EAAoB,CACtB,IAAKT,EAAKvQ,WACR,OACE/M,EAAAA,cAAA,QAAM0B,OAAO,OAAOqN,OAAO,iBACzB/O,EAAAA,cAAA,SACEiM,KAAK,SACL5K,KAAK,qBACLkE,MAAOtD,SAASmjB,cAAc,2BAA2B/gB,UAE3DrE,EAAAA,cAACyX,GAAAA,EAAM,CAACxL,KAAK,SAAS,UAAQ,wBAAwBzL,KAAK,MAAK,qBAOtE,IAAK8c,EAAK2T,eAAgB,CACxB,GAAIrG,EACF,OACE5qB,EAAAA,cAAC2lB,GAAoB,CACnBF,oBAAqBgF,EAAoBC,QACzC1U,eAAgB0H,EAChB+I,UAAWgE,EAAoBE,QAC/B7b,cAAeA,IAIrB,IAAMzK,EACJrE,EAAAA,cAAC0c,GAAAA,EAAQC,QAAO,KACd3c,EAAAA,cAACC,EAAAA,EAAG,CAACkb,QAAQ,MACXnb,EAAAA,cAACiL,EAAAA,EAAC,KAAC,mDAIT,OACEjL,EAAAA,cAAC0c,GAAAA,EAAO,CAAC5E,QAASzT,EAAS2T,QAAQ,QAAQzW,IAAI,cAC5C,kBACCvB,EAAAA,cAACC,EAAAA,EAAG,KACFD,EAAAA,cAACyX,GAAAA,EAAM,CAAC1N,UAAQ,EAAC,UAAQ,yBAAwB,eAG7C,GAId,CACA,GAAIylB,EACF,OACExvB,EAAAA,cAACyX,GAAAA,EAAM,CACLlZ,GAAG,qBACH2O,QAAS,WACP4B,EACE,QACA,SACA,cACA,0BAEFkgB,GAAepoB,GACf7E,OAAOf,SAAWwuB,CACpB,GACD,cAKP,CACA,OAAO,IACT,CAmKyCrS,IACtBK,GAAoBC,EACnBzd,EAAAA,cAACwf,GAAW,CACV5J,QAASvU,EACT2U,eAAgB0H,EAChBzH,eAAgBuH,EAChBtH,WAAYuH,EACZhP,MAAW,OAAJ6O,QAAI,IAAJA,OAAI,EAAJA,EAAM7O,MACbC,QAASwO,EACTpO,cAAeA,EACf/B,YAAY,IAGd/M,EAAAA,cAAC2e,GAAAA,EAAU,CACT1X,KAAM2W,EACNlG,QAAQ,YACRxK,QAAS,WAAF,OACL4B,EACE,QACA,OACA,YACA,oBACD,EAEHxE,OAAO,UACR,gBAOTtK,EAAAA,cAAC6pB,GAAAA,EAAKM,IAAG,KACPnqB,EAAAA,cAAC6pB,GAAAA,EAAKQ,IAAG,CAACiB,SAAU6E,GAClBnwB,EAAAA,cAAC2iB,GAAmB,CAACxD,UAAU,MAC7Bnf,EAAAA,cAAC0U,GAAAA,EAAWK,GACTwb,EAAW/O,MACa,KAAb,OAAXiO,QAAW,IAAXA,OAAW,EAAXA,EAAa9sB,SACZ3C,EAAAA,cAACiL,EAAAA,EAAC,KACAjL,EAAAA,cAAA,OACEqH,IAAM2X,UAAU,6BAChB5X,IAAI,GACJ/G,MAAO,CAAEmb,MAAO,QAASlb,OAAQ,YAI3B,OAAXmvB,QAAW,IAAXA,OAAW,EAAXA,EAAarxB,KAAI,SAACsX,GAAK,OACtB1V,EAAAA,cAAC2iB,GAAY,CACXtb,IAAKqO,EAAM/T,IACXJ,IAAKmU,EAAM/T,IACXuL,QAAS,WAAF,OAAQujB,GAAkB,EAAK,GACtC,MAIRzwB,EAAAA,cAACC,EAAAA,EAAG,CAACmF,UAAU,oBAAoB+Z,UAAU,OAC3Cnf,EAAAA,cAACC,EAAAA,EAAG,CACFixB,wBAAyB,CACvBC,OAAQZ,EAAWhP,aAErBnc,UAAU,2BAIhBpF,EAAAA,cAAC6pB,GAAAA,EAAKQ,IAAG,CAACiB,SAAUgF,GAClBtwB,EAAAA,cAACC,EAAAA,EAAG,CAACkf,UAAU,MACbnf,EAAAA,cAAC2K,EAAAA,EAAI,KACFilB,GAnOnB5vB,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACC,EAAAA,EAAG,CAACI,MAAO,CAAE+wB,aAAc,oBAAqBjW,QAAS,SACxDnb,EAAAA,cAACkH,EAAAA,EAAI,CACHgG,QAASgjB,EACTmB,aAAa,aACblxB,WAAW,UAEV6vB,EAAWhwB,EAAAA,cAACsxB,GAAAA,EAAS,MAAMtxB,EAAAA,cAACuxB,GAAAA,EAAW,MACxCvxB,EAAAA,cAAA,OACEqH,IAAM2X,UAAU,qBAChB5X,IAAI,GACJ/G,MAAO,CAAEmH,YAAa,MAAO4Y,aAAc,WAG9C4P,GACChwB,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACiL,EAAAA,EAAC,CAAC5K,MAAO,CAAEotB,SAAU,SACpBztB,EAAAA,cAAA,SAAG,uDAELA,EAAAA,cAACiL,EAAAA,EAAC,CAAC5K,MAAO,CAAEotB,SAAU,SAAU,gJAI9BztB,EAAAA,cAAC2iB,GAAiB,CAChB1b,KAAM6oB,EACNxlB,OAAO,UAEN,KAAK,oCAERtK,EAAAA,cAAA,WACAA,EAAAA,cAAA,WACAA,EAAAA,cAAA,SAAG,mFAIHA,EAAAA,cAAC2iB,GAAiB,CAChB1b,KAAK,sFACLqD,OAAO,UAEN,KAAK,uCAMhBtK,EAAAA,cAAA,YAuLgBA,EAAAA,cAACC,EAAAA,EAAG,CAACkb,QAAQ,MACV4U,EAAmBptB,OAAS,GAC3B3C,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACwgB,EAAAA,GAAE,KAAC,QACJxgB,EAAAA,cAACiL,EAAAA,EAAC,KAAE8kB,EAAmBxT,KAAK,SAGjB,OAAdgT,QAAc,IAAdA,OAAc,EAAdA,EAAgB5sB,QAAS,GACxB3C,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACwgB,EAAAA,GAAE,KAAC,YACJxgB,EAAAA,cAACiL,EAAAA,EAAC,KAAEskB,EAAehT,KAAK,QAG3BzY,SA/LnB4rB,GAAa3wB,OAAOD,KAAK4wB,GAAW/sB,OAAS,IACtC,OAAPmB,QAAO,IAAPA,OAAO,EAAPA,EAASnB,QAAS,KAClB3C,EAAAA,SACGwgB,EAAAA,GAEExZ,EAAAA,EAaEwqB,GAAAA,EAGJ1tB,EAAQ1F,KAAI,SAACqzB,EAAQhtB,GAAG,OACvBzE,EAAAA,cAACC,EAAAA,EAAG,CAACI,MAAO,CAAE+wB,aAAc,qBAAuB7vB,IAAKkD,GACtDzE,EAAAA,cAACiL,EAAAA,EAAC,KAAEwmB,GACA,IAEP1yB,OAAOD,KAAK4wB,GAAWtxB,KAAI,SAACqzB,GAC3B,IAAMC,EAAKhC,EAAU+B,GACrB,OAAO3tB,EAAQ6tB,SAASF,GAAU,KAChCzxB,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACiL,EAAAA,EAAC,KACAjL,EAAAA,cAAA,cACGyxB,EAAO,KAAGC,EAAG/uB,OAAO,MAGzB3C,EAAAA,cAACC,EAAAA,EAAG,CACFI,MAAO,CACLsuB,aAAc,OACdyC,aAAc,sBAGhBpxB,EAAAA,cAAA,UACG0xB,EAAGtzB,KAAI,SAACwzB,GAAa,OACpB5xB,EAAAA,cAAA,UAAK4xB,EAAmB,MAMpC,MA+IgB5xB,EAAAA,cAAC6iB,GAAc,CACbC,QAAS6M,EACT5M,eAAgBO,IAElBtjB,EAAAA,cAACwgB,EAAAA,GAAE,KAAC,WACJxgB,EAAAA,cAACiL,EAAAA,EAAC,KAAC,SACHjL,EAAAA,cAACiL,EAAAA,EAAC,CACA5K,MAAO,CACL8f,cAAe,OACfiR,aAAc,sBAGhBpxB,EAAAA,cAAC2iB,GAAiB,CAChB1b,KAAI,UAAAhC,OAAYwJ,GAChBnE,OAAO,SACP4C,QAAS,WAAF,OACL4B,EACE,QACA,OACA,QACA,gBACD,GAGFL,IAILzO,EAAAA,cAACiL,EAAAA,EAAC,KAAC,WACHjL,EAAAA,cAACiL,EAAAA,EAAC,KACAjL,EAAAA,cAAC2iB,GAAiB,CAChB1b,KAAM2W,GAAgB0R,EACtBhlB,OAAO,SACP4C,QAAS,WAAF,OACL4B,EACE,QACA,OACA,UACA,kBACD,GAGFyO,GAAYlc,OAMvBrB,EAAAA,cAACC,EAAAA,EAAG,CAACkf,UAAU,MACbnf,EAAAA,cAAC2K,EAAAA,EAAI,KACH3K,EAAAA,cAACC,EAAAA,EAAG,CAACkb,QAAQ,MACXnb,EAAAA,cAAA,OACEqH,IAAM2X,UAAU,iBAChB5X,IAAI,YACJ/G,MAAO,CACLmb,MAAO,OACPlb,OAAQ,OACRuxB,MAAO,OACP9S,YAAa,UAGjB/e,EAAAA,cAACwgB,EAAAA,GAAE,KAAC,qBACJxgB,EAAAA,cAACiL,EAAAA,EAAC,KAAC,WAEDjL,EAAAA,cAAC2iB,GAAiB,CAChB1b,KAAK,wFACLqD,OAAO,SACP4C,QAAS,WAAF,OACL4B,EACE,QACA,OACA,eACA,uBACD,GAGF,IAAI,0BACmB,KACN,SAEpB9O,EAAAA,cAAC2iB,GAAiB,CAChB1b,KAAK,mCACLqD,OAAO,SACP4C,QAAS,WAAF,OACL4B,EACE,QACA,OACA,YACA,oBACD,GAGF,IAAI,oBACa,eAc9C,EAiDAogB,GAAa9gB,aAAe,CAC1BxH,IAAK,CACH8oB,UAAW,CAAC,EACZhS,kBAAmB,EACnBK,oBAAoB,EACpByR,aAAc,GACd5R,cAAc,EACd9Z,QAAS,GACT2rB,YAAa,GACbnoB,eAAgB,GAChBqoB,mBAAoB,KACpBE,mBAAmB,EACnBD,gBAAgB,EAChBE,gCAAiC,IAEnCrF,oBAAqB,CACnBC,QAAS,GACTC,SAAS,GAEXC,oCAAoC,GAGtC,Y,ogCC3nBO,I,GAAMkH,GAAgB,WAA2C,IAA1CC,EAAMrvB,UAAAC,OAAA,QAAAS,IAAAV,UAAA,GAAAA,UAAA,GAAG,EAAGsvB,IAAiBtvB,UAAAC,OAAA,QAAAS,IAAAV,UAAA,KAAAA,UAAA,GACIiG,EAAAhE,IAA3BiE,EAAAA,EAAAA,UAASopB,GAAkB,GAAtD3T,EAAS1V,EAAA,GAAEspB,EAAYtpB,EAAA,GACxBupB,GAAajJ,EAAAA,EAAAA,QAAO,MAGpBkJ,GAAkBxb,EAAAA,EAAAA,cAAY,WAClC,GAAKub,EAAW9I,QAAhB,CAIA,IAAAgJ,EAAwBF,EAAW9I,QAAQiJ,wBAAnC9P,EAAG6P,EAAH7P,IAAK+P,EAAMF,EAANE,OACPC,EACJhQ,EAAMwP,GAAU,GAAKO,EAASP,GAAUhwB,OAAOywB,YACjDP,EAAaM,EALb,CAMF,GAAG,CAACR,IAeJ,OAZAhpB,EAAAA,EAAAA,YAAU,WAMR,OALAopB,IACApwB,OAAO6N,iBAAiB,SAAUuiB,GAClCpwB,OAAO6N,iBAAiB,SAAUuiB,GAG3B,WACLpwB,OAAO8N,oBAAoB,SAAUsiB,GACrCpwB,OAAO8N,oBAAoB,SAAUsiB,EACvC,CACF,GAAG,CAACA,IAEG,CAAC9T,EAAW6T,EACrB,E,ogCC7BA,IAAMO,IAAO3sB,EAAAA,EAAAA,IAAOoB,EAAAA,EAAPpB,CAAYG,KAAAA,G,gHAAAC,CAAA,gIAsFzB,SAhFyB,SAAH1B,GAAyB,IAAnB4qB,EAAW5qB,EAAX4qB,YACwCsD,EAAA/tB,GAAjBmtB,GAAc,IAAG,GAA3DlhB,EAAmB8hB,EAAA,GAAEC,EAAiBD,EAAA,GACG/pB,EAAAhE,IAAZiE,EAAAA,EAAAA,UAAS,IAAG,GAAzCnC,EAAUkC,EAAA,GAAEG,EAAaH,EAAA,GAG9BK,EAAArE,IAFsBiE,EAAAA,EAAAA,UAAS,CAC/Be,OAAQ,SAACwe,GAAI,OAAKrf,EAAcqf,EAAK,IACrC,GAFK7f,EAAIU,EAAA,GAAE2e,EAAO3e,EAAA,GAMlB4e,EAAAjjB,IAH4CiE,EAAAA,EAAAA,UAAS,CACrDoB,SAAS,EACTpI,KAAM,KACN,GAHK2G,EAAeqf,EAAA,GAAEgL,EAAkBhL,EAAA,GAwB1C,OAnBA7e,EAAAA,EAAAA,YAAU,WACRtH,EAAAA,EAAM8H,IAAI,gBAAgBC,MAAK,SAACC,GAC9BA,EAAI7H,KACD0B,QAAO,SAACsD,GAAG,OAAKA,EAAIvF,KAAKitB,WAAW,SAAS,IAC7ClwB,KACC,SAACwI,GAAG,OACDA,EAAIe,mBAAqBf,EAAIe,mBAAmB4mB,QAC/C,IACA,MACD,IAEPqE,EAAmB,CACjB5oB,SAAS,EACTpI,KAAM6H,EAAI7H,OAEZ+lB,EAAQ,IAAIje,EAAAA,EAAKD,EAAI7H,KAAMhB,GAC7B,GACF,GAAG,IAGDZ,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACwP,GAAYzQ,OAAA8zB,OAAA,CACXjiB,oBAAqBA,EACrBtI,KAAMA,EACNC,gBAAiBA,EACjB9B,WAAYA,EACZqC,cAAeA,GACXsmB,IAENpvB,EAAAA,cAACyyB,GAAI,CAACtX,QAAQ,KAAK/a,eAAe,SAASD,WAAW,UACpDH,EAAAA,cAACkH,EAAAA,EAAI,CACH9G,eAAe,SACfD,WAAW,SACXsH,UAAU,SACVoV,SAAS,QAET7c,EAAAA,cAACC,EAAAA,EAAG,CAACkgB,cAAc,KAAKwO,aAAa,MACnC3uB,EAAAA,cAAC0H,EAAAA,EAAU,CACTjH,MAAM,SACNa,OAAO,OACPjB,MAAO,CAAEotB,SAAU,OAAQqF,WAAY,SACxC,qCAIH9yB,EAAAA,cAACC,EAAAA,EAAG,CACFqpB,IAAKqJ,EACLtyB,MAAO,CAAEmb,MAAO,OAAQH,SAAU,QAASwB,SAAU,UAEpDjM,GACC5Q,EAAAA,cAAC8Q,GAAgB,CACfzI,kBAAkB,eAClBC,KAAMA,EACNC,gBAAiBA,EACjB9B,WAAYA,EACZqC,cAAeA,OAQ/B,ECxFA,UAAeiqB,E,SAAAA,GAAa,CAC1BC,OAAQ,KACRC,aAAc,CACZC,GAAI,CACFC,OAAQ,CACNvsB,IAAK,eACLwsB,UAAW,YACXC,QAAS,mBACTC,KAAM,eACNC,SAAU,WACVC,IAAK,MACLC,cAAe,iBACfC,OAAQ,SACRC,cAAe,kBAEjBC,KAAM,CACJC,QAAS,oCAEX/I,OAAQ,CACNgJ,QAAS,WACTC,eAAgB,+BAChBC,YAAa,eACbC,mBAAoB,0CACpBC,SAAU,WACVC,gBACE,wDACFC,cAAe,mBACfC,KAAM,QAERD,cAAe,CACblI,MAAO,0CACPoI,gBACE,gJACFC,KAAM,wCACNC,eACE,kFACFC,UAAW,oCAEbjK,WAAY,CACVkK,eAAgB,mBAChBC,YAAa,gDACbC,WAAY,cACZC,eAAgB,iDAChBC,UAAW,gDACXC,sBACE,qDACFC,2BACE,gJACFC,oBAAqB,mCACrBC,qBACE,kFACFC,yBAA0B,mCAC1B9F,QAAS,CACPnD,MAAO,UACPkJ,eAAgB,oCAChBC,OAAQ,WACR/F,QAAS,wBACTgG,KAAM,OACN/T,YACE,wXACFgU,qBACE,6DACFC,eAAgB,4CAChBC,gBACE,gJACFC,gBAAiB,sBACjBC,gBAAiB,kCACjBC,qBAAsB,CACpBrU,YACE,qEACFsU,IAAK,+CACLC,GAAI,mDAENC,4BAA6B,CAC3BxU,YACE,sGACFsU,IAAK,8DACLC,GAAI,kEAENE,iBAAkB,CAChBzU,YAAa,mCACbsU,IAAK,kCACLC,GAAI,uCAGRG,SAAU,CACRC,uBACE,iDACFC,8BACE,qEACFC,OAAQ,qDACRC,cACE,uNACFC,SAAU,eACVC,UAAW,qBACXC,aAAc,wBACdC,QAAS,4BACTC,oBAAqB,iCACrBC,oBAAqB,kCACrBC,wBAAyB,4BACzBlH,UAAW,YACXmH,cACE,0LACFC,0BACE,sHACFC,kBACE,kGACFC,OACE,6HACFC,UACE,wFACFC,eACE,yDACFC,WACE,iLACFC,SACE,oGACFC,wBACE,kDACFC,+BAAgC,mCAChCC,cAAe,+BACfC,UAAW,oCACXC,cACE,kFACFC,cACE,uEACFC,aAAc,sDACdC,cACE,2EACFC,YACE,yGACFC,cACE,6FACFC,eAAgB,qCAChBjC,GAAI,KACJD,IAAK,MACLmC,kBACE,yFACFC,aAAc,gBACdC,iBAAkB,qBAClBC,qBAAsB,iCACtBC,UAAW,aAEbC,MAAO,CACLC,aAAc,8BACdC,mBACE,gGAEJC,iBACE,2JACFC,qBACE,mDACFC,OAAQ,CACNjqB,MAAO,QACP6gB,QAAS,WAEXqJ,OAAQ,CACN1C,SAAU,wBACVjqB,SAAU,aACVonB,UAAW,oBACXwF,QAAS,UACTnqB,MAAO,QACPoqB,SAAU,WACVC,cAAe,gBACfC,aAAc,gBACdC,WAAY,eACZC,SAAU,WACVC,aAAc,2BACdC,QAAS,sBACTC,QAAS,UACTC,MAAO,yBACPptB,KAAM,OACNqjB,QAAS,UACTgK,aAAc,wBACdC,QAAS,WACTC,YAAa,eACblW,QAAS,UACTmW,cAAe,CACbld,KAAM,WACNmd,aAAc,0BACdC,MAAO,SACPvG,UAAW,qBAEbwG,YAAa,wBACbtE,KAAM,QAERuE,QAAS,CACPC,oBAAqB,CACnB7f,WACE,sGACFC,UACE,mIACF6f,KAAM,qMAERT,aAAc,uCACdM,YAAa,CACX5f,OAAQ,cACRC,WAAY,cACZC,UAAW,cAEbqf,QAAS,CACPS,SAAU,WACVC,cAAe,iBACfC,yBAA0B,+BAE5BC,eACE,gPACFC,YAAa,mCACbC,gBAAiB,oBACjBC,YAAa,CACXpO,MAAO,gCACPlU,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","sources":["webpack://marketplace/./public/images/ sync ^\\.\\/.*$","webpack://marketplace/./app/frontend/react/shared/polyfill.js","webpack://marketplace/./app/frontend/react/components/Arrows/ArrowNext.jsx","webpack://marketplace/./app/frontend/react/components/Arrows/ArrowPrev.jsx","webpack://marketplace/./app/frontend/react/shared/utils/fuseConfig.js","webpack://marketplace/./app/frontend/scripts/analytics.js","webpack://marketplace/./app/frontend/react/shared/utils/helpers.js","webpack://marketplace/./app/frontend/react/components/TopNavBar/TopNavSearchForm/styles.module.scss?6089","webpack://marketplace/./app/frontend/utils/highlight.jsx","webpack://marketplace/./app/frontend/react/components/TopNavBar/TopNavSearchForm/TopNavSearchForm.jsx","webpack://marketplace/./app/frontend/react/shared/utils/modalUtil.js","webpack://marketplace/./app/frontend/react/components/TopNavBar/MobileMenu.jsx","webpack://marketplace/./app/frontend/react/shared/Dropdown/Dropdown.jsx","webpack://marketplace/./app/frontend/react/shared/Dropdown/index.js","webpack://marketplace/./app/frontend/react/components/TopNavBar/UserAvatar/styles.module.scss?445c","webpack://marketplace/./app/frontend/react/components/TopNavBar/UserAvatar/UserAvatar.jsx","webpack://marketplace/./app/frontend/react/components/TopNavBar/UserAvatar/index.js","webpack://marketplace/./app/frontend/react/components/TopNavBar/TopNavHeader.jsx","webpack://marketplace/./app/frontend/react/styles/v2.jsx","webpack://marketplace/./app/frontend/react/components/SingleCarousel/index.jsx","webpack://marketplace/./app/frontend/react/components/ContactForm.jsx","webpack://marketplace/./app/frontend/react/styles/index.jsx","webpack://marketplace/./app/frontend/react/consts.jsx","webpack://marketplace/./app/frontend/react/components/ListingsAppCard.jsx","webpack://marketplace/./app/frontend/react/components/SecurtyBadge/index.jsx","webpack://marketplace/./app/frontend/react/components/AppHeader.jsx","webpack://marketplace/./app/frontend/react/components/ListingsSidebar.jsx","webpack://marketplace/./app/frontend/react/components/NoResults.jsx","webpack://marketplace/./app/frontend/react/components/WistiaExtract.jsx","webpack://marketplace/./app/frontend/react/components/VersionHistory.jsx","webpack://marketplace/./app/frontend/react/shared/SearchInput/index.jsx","webpack://marketplace/./app/frontend/react/components/CompanyPicker/index.jsx","webpack://marketplace/./app/frontend/utils/apiUtil.js","webpack://marketplace/./app/frontend/react/components/InstallRequestButton/styles.module.scss?9be0","webpack://marketplace/./app/frontend/react/shared/Popover/styles.module.scss?7a38","webpack://marketplace/./app/frontend/react/shared/Popover/index.js","webpack://marketplace/./app/frontend/react/components/InstallRequestButton/index.jsx","webpack://marketplace/./app/frontend/react/components/ProcoreLogo/index.jsx","webpack://marketplace/./app/frontend/react/context/SearchContext.jsx","webpack://marketplace/./app/frontend/react/components/SearchBar/SearchResults.jsx","webpack://marketplace/./app/frontend/react/components/SearchBar/index.jsx","webpack://marketplace/./app/frontend/react/components/SupportMenu/index.jsx","webpack://marketplace/./app/frontend/react/context/AppContext.jsx","webpack://marketplace/./app/frontend/react/components/ProfileBox/index.jsx","webpack://marketplace/./app/frontend/react/hooks/useMediaQuery.js","webpack://marketplace/./app/frontend/react/components/ProcoreLogo/MobileLogo.jsx","webpack://marketplace/./app/frontend/react/components/MobileMenu/MenuHeader.jsx","webpack://marketplace/./app/frontend/react/components/MobileMenu/MenuBody.jsx","webpack://marketplace/./app/frontend/react/components/MobileMenu/UserSection.jsx","webpack://marketplace/./app/frontend/react/components/MobileMenu/MenuFooter.jsx","webpack://marketplace/./app/frontend/react/components/MobileMenu/index.jsx","webpack://marketplace/./app/frontend/react/components/Navbar/index.jsx","webpack://marketplace/./app/frontend/react/components/PlayButton/index.jsx","webpack://marketplace/./app/frontend/react/views/V1/Listings/ListingsIndex.jsx","webpack://marketplace/./app/frontend/react/api/index.js","webpack://marketplace/./app/frontend/react/views/V1/Listings/ListingsShow.jsx","webpack://marketplace/./app/frontend/react/hooks/useVisibility.js","webpack://marketplace/./app/frontend/react/views/V1/Index/MarketplaceIndex.jsx","webpack://marketplace/./app/frontend/react/views/V2/i18n.js","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/Pricing.jsx","webpack://marketplace/./app/frontend/react/hooks/useSanitizedString.js","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/Overview.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/Functionality.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/Security.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/Support.styles.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/Support.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/utils/RegionModal.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/utils/VersionHistoryModal.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/utils/AppType.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/SideBar.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/utils.js","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/MediaCarousel/ImageModal.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/VideoPreview.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/MediaCarousel/MainCarousel.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/MediaCarousel/ThumbnailCarousel.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/MediaCarousel/index.jsx","webpack://marketplace/./app/frontend/react/hooks/useIntersection.js","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/SectionNav.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/AppDetails.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/index.jsx","webpack://marketplace/./app/frontend/react/views/V2/MarketplaceListing/MarketplaceListing.jsx","webpack://marketplace/./app/frontend/react/views/V2/MarketplaceListing/index.jsx","webpack://marketplace/./app/frontend/react/views/V2/FAQ/FAQ.jsx","webpack://marketplace/./app/frontend/react/views/V2/FAQ/index.jsx","webpack://marketplace/./app/frontend/packs/application.js","webpack://marketplace/./app/frontend/scripts/modal.js","webpack://marketplace/./app/frontend/scripts/animations.js"],"sourcesContent":["var map = {\n\t\"./Copliot-Badge.png\": 17373,\n\t\"./app-image-placeholder.png\": 34724,\n\t\"./app-store-icons.png\": 45757,\n\t\"./app_marketplace_logo_V2\": 9630,\n\t\"./app_marketplace_logo_V2.svg\": 9630,\n\t\"./app_marketplace_logo_split.png\": 33985,\n\t\"./appmarketplace_crane_bg.jpg\": 99263,\n\t\"./background.jpg\": 10249,\n\t\"./banner-backgrounds/arrow-left.png\": 62923,\n\t\"./banner-backgrounds/arrow-right.png\": 74676,\n\t\"./community.png\": 27666,\n\t\"./contact\": 10574,\n\t\"./contact.svg\": 10574,\n\t\"./document.png\": 58810,\n\t\"./helpful-links\": 74552,\n\t\"./helpful-links.svg\": 74552,\n\t\"./lets-work-together.jpg\": 23470,\n\t\"./logo-placeholder.png\": 58432,\n\t\"./marketplace_header.png\": 95530,\n\t\"./privacy-icon.png\": 89879,\n\t\"./procore_marketplace.png\": 82169,\n\t\"./security-trust-header.png\": 43610,\n\t\"./submit_an_idea_icon_v1.png\": 48341\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 10452;","import 'core-js/stable';\nimport 'regenerator-runtime/runtime';\n\n// NodeList.forEach\n// https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach\nif ( !NodeList.prototype.forEach ) {\n NodeList.prototype.forEach = Array.prototype.forEach;\n}\n\n// ChildNode.remove\n// https://developer.mozilla.org/en-US/docs/Web/API/ChildNode/remove\n(function (arr) {\n arr.forEach(function (item) {\n item.remove = item.remove || function () {\n this.parentNode.removeChild(this);\n };\n });\n})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);\n","import React from 'react';\nimport { ArrowRight } from '@procore/core-icons';\nimport { Box } from '@procore/core-react';\n\nexport const ArrowNext = () => (\n \n \n \n);\n","import React from 'react';\nimport { ArrowLeft } from '@procore/core-icons';\nimport { Box } from '@procore/core-react';\n\nexport const ArrowPrev = () => (\n \n \n \n);\n","export const FUSE_CONFIG = {\n ignoreLocation: true,\n shouldSort: true,\n threshold: 0,\n location: 0,\n distance: 90000, // Set distance to be large to account for long fields\n minMatchCharLength: 2,\n includeMatches: true,\n findAllMatches: false,\n keys: [\n { name: 'name', weight: 50 },\n { name: 'search_description', weight: 30 },\n { name: 'how_it_works', weight: 25 },\n { name: 'description', weight: 20 },\n ]\n};\n","import axios from 'axios';\n\nconst trackEvent = (key, params) => {\n axios({\n method: 'post',\n url: '/api/analytics',\n data: {\n key,\n additional_properties: params,\n },\n headers: {\n 'X-Forwarded-Host': window.location.host,\n 'X-CSRF-TOKEN': document\n .getElementsByName('csrf-token')[0]\n .getAttribute('content'),\n },\n });\n};\n\nexport default trackEvent;\n","export const debounce = (func, delay) => {\n let timer;\n return function(...args) {\n clearTimeout(timer);\n timer = setTimeout(() => func.apply(this, args), delay);\n };\n};\n\nexport const truncate = ( str, n, useWordBoundary ) => {\n if (str.length <= n) { return str; }\n const subString = str.substr(0, n-1);\n return (useWordBoundary\n ? subString.substr(0, subString.lastIndexOf(\" \"))\n : subString) + \"...\";\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"searchWrapper\":\"styles-module__searchWrapper___gJhL\",\"searchInput\":\"styles-module__searchInput__JB2Vo\",\"searchForm\":\"styles-module__searchForm__o00Lu\",\"searchResultsWrapper\":\"styles-module__searchResultsWrapper___Gfg3\",\"searchResultsHidden\":\"styles-module__searchResultsHidden__cvWyn\",\"searchResultsVisible\":\"styles-module__searchResultsVisible__J6rbM\",\"searchResultsMenu\":\"styles-module__searchResultsMenu__nFuLV\",\"searchResultsMenuOptions\":\"styles-module__searchResultsMenuOptions__HEXEH\",\"searchResultsItem\":\"styles-module__searchResultsItem__A6G8Y\",\"searchResultsItemInner\":\"styles-module__searchResultsItemInner__C8uzX\",\"searchResultsThumbnail\":\"styles-module__searchResultsThumbnail__hrr1I\",\"searchResultsText\":\"styles-module__searchResultsText__a_UDO\"};","export const highlight = (\n results,\n maxLength = 40,\n highlightClass = 'highlight'\n) => {\n const renderHighlightedText = (text, regions = []) => {\n let truncated = false;\n let currStringLen = 0;\n\n const checkLengthAndTrunc = (string) => {\n if (currStringLen + string.length > maxLength) {\n const truncatedString = string.slice(0, maxLength - currStringLen);\n currStringLen += truncatedString.length;\n truncated = true;\n return truncatedString;\n }\n currStringLen += string.length;\n return string;\n };\n\n const content = regions.reduce((acc, [start, end], idx) => {\n const beforeMatch = checkLengthAndTrunc(text.slice(currStringLen, start));\n const highlightedMatch = checkLengthAndTrunc(text.slice(start, end + 1));\n const afterMatch =\n idx === regions.length - 1\n ? checkLengthAndTrunc(text.slice(end + 1))\n : '';\n\n const key = `match_${idx}`;\n acc.push(\n \n {beforeMatch}\n {highlightedMatch}\n {afterMatch}\n \n );\n return acc;\n }, []);\n\n return truncated ? [...content, '...'] : content;\n };\n\n return results\n ? results\n .filter(({ matches }) => matches && matches.length)\n .map(({ item, matches }) => {\n const highlightedItem = { ...item };\n\n matches.forEach((match) => {\n highlightedItem[match.key] = renderHighlightedText(\n match.value,\n match.indices\n );\n });\n\n return { highlightedItem, matches };\n })\n : [];\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Fuse from 'fuse.js';\nimport {\n Box,\n Card,\n colors,\n Flex,\n Link,\n Menu,\n Search,\n P,\n Typography,\n} from '@procore/core-react';\nimport classNames from 'classnames/bind';\nimport axios from 'axios';\nimport styled from 'styled-components';\nimport { FUSE_CONFIG } from '@/react/shared/utils/fuseConfig';\nimport trackEvent from '@/scripts/analytics';\nimport { debounce } from '@/react/shared/utils/helpers';\nimport styles from './styles.module.scss';\nimport { highlight } from '@/utils/highlight';\n\nconst cx = classNames.bind(styles);\n\nconst i18n = {\n logoAltText: 'App Marketplace Logo',\n noAppsFound: 'No apps found...',\n searching: 'Searching...',\n searchError: 'Error retrieving search data',\n searchLoading: 'Loading...',\n searchPlaceholder: 'Search for apps',\n};\n\nconst RESULTS_LIMIT = 7;\n\nconst StyledItem = styled(Menu.Item)`\n background-color: ${colors.gray96};\n border-bottom: 1px solid ${colors.gray85};\n\n &:hover {\n background-color: ${colors.gray90};\n }\n`;\n\nconst AppResults = ({ apps, searchTerm }) => {\n const limitedResults = highlight(apps.slice(0, RESULTS_LIMIT));\n\n return limitedResults.map((result, idx, arr) => {\n const { highlightedItem: app } = result;\n const viewAll = arr.length > 1 && idx === arr.length - 1;\n\n return (\n <>\n \n \n \n \n \n \n \n {app.name}\n {app.search_description}\n \n \n \n \n {viewAll && (\n \n \n \n View All Results\n \n \n \n )}\n \n );\n });\n};\n\nconst handleSearchAnalytics = (searchTerm, count) =>\n trackEvent('marketplace.apps.search.input', {\n marketplace_search_term: searchTerm,\n marketplace_search_count: count,\n });\n\nconst debounceHandleSearchAnalytics = debounce(handleSearchAnalytics, 500);\nconst StyledSearch = styled(Search)`\n width: 100%;\n`;\n\nconst TopNavSearchForm = ({\n appsSearchApiPath,\n fuse,\n searchDataState,\n propSearchTerm = '',\n propSetSearchTerm,\n}) => {\n const [searchTerm, setLocalSearchTerm] = useState(propSearchTerm);\n const setSearchTerm = propSetSearchTerm || setLocalSearchTerm;\n useEffect(() => {\n setSearchTerm(propSearchTerm);\n }, [propSearchTerm]);\n\n const [state, setState] = useState({\n appSearchResults: [],\n showResultsMenu: 'hidden',\n });\n\n const handleSetState = (newState) =>\n setState({\n ...state,\n ...newState,\n });\n\n useEffect(() => {\n if (!fuse) {\n axios.get(appsSearchApiPath).then((res) => {\n const newState = {\n fuse: new Fuse(res.data, FUSE_CONFIG),\n };\n if (searchTerm) {\n newState.appSearchResults = newState.fuse.search(searchTerm);\n }\n handleSetState(newState);\n });\n }\n }, []);\n\n useEffect(() => {\n if (searchTerm.length > 2) {\n handleSetState({\n appSearchResults: fuse\n ? fuse.search(searchTerm)\n : state.fuse.search(searchTerm),\n });\n debounceHandleSearchAnalytics(searchTerm, state.appSearchResults.length);\n } else {\n handleSetState({\n appSearchResults: [],\n });\n }\n }, [searchTerm]);\n\n const placeholderText = () => {\n if (!searchDataState) {\n return i18n.searchPlaceholder;\n }\n if (searchDataState?.loading) {\n return i18n.searchLoading;\n }\n if (!searchDataState?.loading && !searchDataState?.data.length) {\n return i18n.searchError;\n }\n return i18n.searchPlaceholder;\n };\n\n return (\n \n \n searchTerm.length > 2 &&\n handleSetState({ showResultsMenu: 'visible' })\n }\n onBlur={() => handleSetState({ showResultsMenu: 'hidden' })}\n onChange={(e) => {\n const val = e.target.value;\n setSearchTerm(val);\n handleSetState({\n showResultsMenu: val.length > 2 ? 'visible' : 'hidden',\n });\n }}\n onSubmit={() =>\n (window.location.href = `/search_results?query=${searchTerm}`)\n }\n />\n \n \n e.preventDefault()}\n >\n \n {state.appSearchResults?.length === 0 ? (\n

\n {state.search ? i18n.searching : i18n.noAppsFound}\n

\n ) : (\n \n )}\n
\n \n
\n \n \n );\n};\n\nTopNavSearchForm.propTypes = {\n appsSearchApiPath: PropTypes.string.isRequired,\n fuse: PropTypes.object,\n searchDataState: PropTypes.object,\n propSearchTerm: PropTypes.string,\n propSetSearchTerm: PropTypes.func,\n};\n\nexport default TopNavSearchForm;\n","/**\n * This helper will open up a jquery modal from a click event.\n * The Click target must be a link whose href is the ID\n * of the modal you wish to open.\n * Ex: \n * http://jquerymodal.com/\n * NOTE: This can only be used where jquery.modal is defined.\n */\nexport const triggerModalFromClickEvent = (e) => {\n e.preventDefault();\n\n $(e.target).modal({\n fadeDuration: 500\n });\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { triggerModalFromClickEvent } from '../../shared/utils/modalUtil';\n\nconst i18n = {\n login: 'Login',\n logout: 'Logout',\n changeCompany: 'Change Company'\n};\n\nclass MobileMenu extends React.Component {\n constructor(props) {\n super(props);\n }\n\n getLinkPath(appsBasePath, paramKey, paramVal) {\n return `${appsBasePath}?${paramKey}=${paramVal}`;\n };\n\n getCategoryPath(category) {\n return `/${category.type === 'region' ? 'regions' : 'categories'}/${category.slug}`;\n };\n\n getMobileLink(href, text) {\n return(\n
\n {text}\n
\n );\n }\n\n getCategoriesMobileLinks(appsBasePath) {\n const links = [this.getMobileLink(appsBasePath, 'All')];\n this.props.categories.forEach(category => {\n links.push(this.getMobileLink(this.getCategoryPath(category), category.name))\n });\n return links;\n };\n\n render() {\n const {\n appsBasePath,\n faqsPath,\n partnerSignupPath,\n buildAppPath,\n communityPath,\n webinarsPath,\n signInPath,\n signOutPath,\n changeCompanyPath,\n isSignedIn,\n } = this.props;\n\n return (\n
\n
\n Menu\n
\n
\n
\n
Featured
\n \n
\n
\n
\n
Categories
\n {this.getCategoriesMobileLinks(appsBasePath)}\n
\n\n
\n
\n
Other Information
\n {this.getMobileLink(communityPath, 'Community')}\n {this.getMobileLink(webinarsPath, 'Webinars')}\n {this.getMobileLink(faqsPath, 'FAQ')}\n {this.getMobileLink(partnerSignupPath, 'Become a Partner')}\n {this.getMobileLink(buildAppPath, 'Build an App/Integration')}\n \n {\n !isSignedIn ? (\n this.getMobileLink(signInPath, i18n.login)\n ) : (\n <>\n {this.getMobileLink(signOutPath, i18n.logout)}\n {this.getMobileLink(changeCompanyPath, i18n.changeCompany)}\n \n )\n }\n
\n
\n
\n );\n }\n}\n\nMobileMenu.propTypes = {\n isSignedIn: PropTypes.bool.isRequired,\n currentUser: PropTypes.shape({\n email: PropTypes.string,\n procore_id: PropTypes.number,\n }),\n signInPath: PropTypes.string.isRequired,\n signOutPath: PropTypes.string.isRequired,\n appsBasePath: PropTypes.string.isRequired,\n faqsPath: PropTypes.string.isRequired,\n partnerSignupPath: PropTypes.string.isRequired,\n buildAppPath: PropTypes.string.isRequired,\n communityPath: PropTypes.string.isRequired,\n webinarsPath: PropTypes.string.isRequired,\n categories: PropTypes.array.isRequired,\n changeCompanyPath: PropTypes.string.isRequired,\n};\n\nexport default MobileMenu;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\n\n/**\n * For this component to have onClickOutside functionality, it must be wrapped\n * by the higher order component 'OnClickOutside'\n */\n\nconst DIRECTIONS_CLASS_MAP = {\n east: 'dropdown--drop-east',\n south: 'dropdown--drop-south',\n west: 'dropdown--drop-west',\n};\n\nclass Dropdown extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isOpen: this.props.isOpenInitial,\n };\n\n // Pre-bind context of toggleDropdownState function\n this.toggleDropdownState = this.toggleDropdownState.bind(this);\n }\n\n toggleDropdownState() {\n this.setState({ isOpen: !this.state.isOpen });\n }\n\n handleClickOutside() {\n // User has clicked off of the dropdown, so close it\n this.setState({ isOpen: false });\n }\n\n render() {\n const {\n closeOnSelect,\n dropdownDirection,\n dropdownTarget,\n className,\n menuStyles,\n } = this.props;\n\n const { isOpen } = this.state;\n\n const dropdownDirectionClass = DIRECTIONS_CLASS_MAP[dropdownDirection];\n const dropdownClasses = cx('dropdown', dropdownDirectionClass, {\n 'dropdown--open': isOpen,\n });\n\n return (\n \n \n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}\n \n {dropdownTarget}\n \n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}\n {\n closeOnSelect && this.toggleDropdownState();\n }}\n >\n {this.props.children}\n \n \n \n );\n }\n}\n\nDropdown.propTypes = {\n menuStyles: PropTypes.shape({}),\n dropdownTarget: PropTypes.node.isRequired,\n dropdownDirection: PropTypes.oneOf(['east', 'south', 'west']),\n isOpenInitial: PropTypes.bool,\n className: PropTypes.string,\n closeOnSelect: PropTypes.bool,\n children: PropTypes.node,\n};\n\nDropdown.defaultProps = {\n dropdownDirection: 'east',\n isOpenInitial: false,\n};\n\nexport default Dropdown;\n","import Dropdown from './Dropdown';\nimport OnClickOutside from 'react-onclickoutside';\n\n// Wrap component in Higher Order OnClickOutside Component for handling\n// when user clicks off of dropdown\nexport default OnClickOutside(Dropdown);\n","// extracted by mini-css-extract-plugin\nexport default {\"avatarCircle\":\"styles-module__avatarCircle__R99og\",\"userIcon\":\"styles-module__userIcon__gkEOB\",\"dropdownContainer\":\"styles-module__dropdownContainer__OpqHu\",\"email\":\"styles-module__email__mnAaQ\",\"company\":\"styles-module__company__kt3RR\",\"footer\":\"styles-module__footer__GfmB8\"};","import React from 'react'\nimport PropTypes from 'prop-types';\nimport Dropdown from '@/react/shared/Dropdown';\nimport classNames from 'classnames/bind';\nimport styles from './styles.module.scss';\n\nconst cx = classNames.bind(styles);\n\nconst i18n = {\n logout: 'Logout',\n changeCompany: 'Change Company'\n};\n\nconst Avatar = () => (\n \n \n \n);\n\nconst UserAvatar = ({ email, company, signOutPath, changeCompanyPath }) => {\n return (\n }\n >\n
\n \n {email}\n
\n \n {company}\n \n
\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}\n window.location = changeCompanyPath}>\n {i18n.changeCompany}\n
\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}\n window.location = signOutPath}>\n {i18n.logout}\n \n \n \n \n )\n};\n\nUserAvatar.propTypes = {\n email: PropTypes.string.isRequired,\n company: PropTypes.string.isRequired,\n signOutPath: PropTypes.string.isRequired,\n changeCompanyPath: PropTypes.string.isRequired\n};\n\nexport default UserAvatar;\n","import UserAvatar from './UserAvatar';\nexport default UserAvatar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport get from 'lodash.get';\nimport MobileMenu from './MobileMenu';\nimport { triggerModalFromClickEvent } from '../../shared/utils/modalUtil';\nimport UserAvatar from './UserAvatar';\nimport './TopNavHeader.scss';\nimport { debounce } from '../../shared/utils/helpers';\nimport trackEvent from '../../../scripts/analytics';\nimport { TopNavSearchForm } from './index';\n\nconst i18n = {\n logoAltText: 'App Marketplace Logo',\n buildAnApp: 'Build an App',\n submitAnIdea: 'Submit an Idea',\n faq: 'FAQ',\n becomeAPartner: 'Become a Partner',\n webinars: 'Webinars',\n login: 'Log In',\n community: 'Community',\n};\n\nconst sendAnalytics = (\n action,\n category,\n label,\n procoreLabel,\n procoreAdditionalFields,\n gtagValue\n) => {\n if (typeof gtag !== 'undefined') {\n gtag('event', action, {\n event_category: category,\n event_label: label,\n gtagValue,\n });\n }\n trackEvent(`marketplace.apps.${procoreLabel}`, {\n app_name: name,\n ...procoreAdditionalFields,\n });\n};\n\nclass TopNavHeader extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isSolid: props.isSolid,\n searchOpacity: props.searchOpacity,\n };\n\n this.handleScroll = debounce(this.handleScroll.bind(this), 50);\n }\n\n componentDidMount() {\n window.addEventListener('scroll', this.handleScroll);\n }\n\n componentWillUnmount() {\n window.removeEventListener('scroll', this.handleScroll);\n }\n\n handleScroll() {\n if (this.props.animateOnScroll) {\n const yOffset = window.pageYOffset || document.documentElement.scrollTop;\n\n this.setState({\n isSolid: yOffset >= 1,\n });\n }\n }\n\n isLinkActive(path) {\n const href = get(window, ['location', 'href'], '');\n return href.indexOf(path) > -1;\n }\n\n fallBackUrl () {\n const pathRegex = /apps\\S+/;\n\n return pathRegex.exec(window.location.href) ? window.location.href : null;\n };\n\n signOutWithFallbackPath () {\n const { signOutPath } = this.props;\n const fallBack = this.fallBackUrl();\n\n return fallBack\n ? `${signOutPath}?fallback=${this.fallBackUrl()}`\n : signOutPath;\n };\n\n render() {\n const {\n isSignedIn,\n currentUser,\n currentCompany,\n marketplaceLogoURL,\n searchPath,\n marketplaceBasePath,\n appSearchResults,\n communityPath,\n webinarsPath,\n signInPath,\n changeCompanyPath,\n faqsPath,\n buildAppPath,\n partnerSignupPath,\n appsBasePath,\n appsSearchApiPath,\n categories,\n isHeroSearchVisible,\n searchDataState,\n searchTerm,\n setSearchTerm,\n fuse,\n } = this.props;\n\n const headerClasses = cx(\n 'pc-mp-header',\n 'pc-mp-header--pc-mp-large-header',\n { 'solid-header': this.state.isSolid || this.state.searchOpacity === 1 }\n );\n\n return (\n
\n
\n
\n \n \n \n
\n
\n {!isHeroSearchVisible && (\n \n )}\n
\n
\n \n sendAnalytics(\n 'click',\n 'Link',\n 'Community - Header',\n 'community_header.clicked'\n )\n }\n rel=\"noreferrer\"\n >\n {i18n.community}\n \n {i18n.webinars}\n \n {i18n.faq}\n \n {i18n.becomeAPartner}\n \n {i18n.buildAnApp}\n \n \n {i18n.submitAnIdea}\n \n {!isSignedIn ? (\n \n {i18n.login}\n \n ) : (\n \n )}\n
\n \n
\n
\n );\n }\n}\n\nTopNavHeader.propTypes = {\n signInPath: PropTypes.string.isRequired,\n signOutPath: PropTypes.string.isRequired,\n isSignedIn: PropTypes.bool.isRequired,\n currentUser: PropTypes.shape({\n email: PropTypes.string,\n procore_id: PropTypes.number,\n }).isRequired,\n marketplaceBasePath: PropTypes.string.isRequired,\n procoreBasePath: PropTypes.string.isRequired,\n appsBasePath: PropTypes.string.isRequired,\n partnerSignupPath: PropTypes.string.isRequired,\n communityPath: PropTypes.string.isRequired,\n webinarsPath: PropTypes.string.isRequired,\n faqsPath: PropTypes.string.isRequired,\n buildAppPath: PropTypes.string.isRequired,\n appSearchResults: PropTypes.array.isRequired,\n searchPath: PropTypes.string.isRequired,\n appsSearchApiPath: PropTypes.string.isRequired,\n marketplaceLogoURL: PropTypes.string.isRequired,\n animateOnScroll: PropTypes.bool,\n isSolid: PropTypes.bool,\n searchOpacity: PropTypes.number,\n categories: PropTypes.array.isRequired,\n currentCompany: PropTypes.shape({\n name: PropTypes.string,\n }).isRequired,\n changeCompanyPath: PropTypes.string.isRequired,\n isHeroSearchVisible: PropTypes.bool,\n searchDataState: PropTypes.string,\n searchTerm: PropTypes.string,\n setSearchTerm: PropTypes.func,\n fuse: PropTypes.object,\n};\n\nexport default TopNavHeader;\n","import styled from 'styled-components';\nimport {\n Box,\n Flex,\n Link,\n Modal,\n H1,\n Card,\n spacing,\n colors,\n} from '@procore/core-react';\n\nconst SmallLogoWrapper = styled(Flex)`\n width: 75px;\n height: 75px;\n background: #ffffff;\n border: 1px solid #c2c2c2;\n padding: 10px;\n`;\n\nconst MediumLogoWrapper = styled(Flex)`\n width: 100px;\n height: 100px;\n background: #ffffff;\n margin: 0px 38px 0px 0px;\n padding: 0px;\n`;\n\nconst SmallLogo = styled.img`\n width: 100%;\n height: auto;\n`;\n\nconst Container = styled(Box)`\n width: 100%;\n margin: 0 auto;\n`;\n\nconst SlideContainer = styled(Box)`\n width: 100%;\n height: 150px;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n\n @media (min-width: 600px) {\n height: 290px;\n }\n\n @media (min-width: 768px) {\n height: 352px;\n }\n`;\n\nconst Slide = styled.img`\n display: block;\n background-color: ${colors.white};\n border: 1px solid ${colors.gray85};\n border-radius: 4px;\n width: 100%;\n height: 100%;\n object-fit: cover;\n cursor: pointer;\n`;\n\nconst EmptySlide = styled(Box)`\n background-color: ${colors.white};\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 100%;\n border-radius: 4px;\n object-fit: cover;\n border: 1px solid ${colors.gray85};\n cursor: pointer;\n height: 150px;\n\n .dialog {\n width: 100%;\n padding: ${spacing.lg}px;\n\n @media (min-width: 768px) {\n width: 312px;\n padding: 0;\n }\n }\n\n @media (min-width: 768px) {\n height: 352px;\n }\n`;\n\nconst arrowMargin = 64;\n\nconst SlickWrapper = styled(Box)`\n margin: 0;\n width: 272px;\n\n @media (min-width: 552px) {\n width: 356px;\n margin: 0 ${arrowMargin}px;\n }\n\n @media (min-width: 600px) {\n width: 532px;\n }\n\n @media (min-width: 768px) {\n width: 644px;\n }\n\n .slick-arrow {\n &:before {\n color: #1d3243;\n }\n }\n\n &.thumbnail-carousel {\n .slick-track {\n display: flex;\n align-items: center;\n margin: 0 2px;\n }\n\n .slick-current {\n ${Slide} {\n border-color: #0033a1;\n box-shadow:\n 0px 0px 0px 2px #0033a1 inset,\n 0px 0px 0px 2px #0033a1;\n }\n }\n }\n`;\n\nconst ArrowContainer = styled(Box)`\n background: white;\n border: 1px solid ${colors.gray85};\n width: 24px;\n height: 24px;\n border-radius: 50%;\n z-index: 1;\n\n &:before {\n content: none;\n }\n\n &.slick-prev {\n left: -32px;\n }\n\n &.slick-next {\n right: -32px;\n }\n\n svg {\n transform: scale(0.75);\n }\n\n &:hover {\n background: ${colors.gray85};\n }\n\n @media (min-width: 480px) {\n width: 48px;\n height: 48px;\n\n &.slick-prev {\n left: -64px;\n }\n\n &.slick-next {\n right: -64px;\n }\n\n svg {\n transform: scale(1);\n }\n }\n`;\n\nconst OrangeLink = styled(Link)`\n color: #ff5200;\n`;\n\nconst ImageModal = styled(Modal)`\n background: transparent;\n box-shadow: none;\n overflow: visible;\n > div {\n overflow: visible;\n }\n`;\n\nconst ModalImageBody = styled(Box)`\n width: 90vw;\n height: 90vh;\n max-width: none;\n justify-content: center;\n overflow: visible;\n position: relative;\n display: flex;\n\n > div > div {\n max-height: none;\n }\n`;\n\nconst ModalImage = styled.img`\n object-fit: contain;\n box-shadow: 0px 0px 32px -4px hsl(200deg 10% 15% / 64%);\n max-width: 100%;\n max-height: 100%;\n`;\n\nconst CloseImageModalButton = styled.button`\n position: absolute;\n top: -10px;\n right: -10px;\n border-radius: 50%;\n width: 25px;\n height: 25px;\n background-color: #000;\n border: 2px solid #fff;\n\n &:after {\n content: '\\\\00d7';\n color: #fff;\n }\n`;\n\nconst NameText = styled(H1)`\n font-size: 44px;\n margin: 8px auto;\n`;\n\nconst UnstyledLink = styled(Link)`\n color: inherit;\n text-decoration: none;\n\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n`;\n\nconst DropdownMenu = styled(Card)`\n margin-top: ${spacing.sm}px;\n background-color: ${colors.white};\n border-radius: 8px;\n padding: ${spacing.sm}px;\n box-shadow: 0px 4px 28px 0px rgba(0, 0, 0, 0.28);\n`;\n\nconst DropdownItem = styled(Box)`\n background-color: ${colors.white};\n border-radius: 8px;\n padding: ${spacing.md}px;\n margin: ${spacing.xs}px 0;\n width: 100%;\n\n &:hover {\n background-color: ${colors.gray94};\n }\n`;\n\nconst Divider = styled.div`\n width: 100%;\n border-top: 1px solid ${colors.gray94};\n height: 2px;\n margin: ${spacing.sm}px 0;\n`;\n\nconst LargeSpacingDivider = styled.div`\n width: 100%;\n border-top: 1px solid ${colors.gray94};\n height: 2px;\n margin: ${spacing.sm}px 0;\n`;\n\nconst UnderlineModalHeader = styled(Modal.Header)`\n border-bottom: 1px solid ${colors.gray85};\n`;\n\nconst MinWidthModal = styled(Modal)`\n width: 40%;\n`;\n\nconst MinWidthModalBody = styled(Modal.Body)`\n width: 100%;\n max-width: 100%;\n`;\n\nconst MediaContainer = styled(Flex)`\n max-width: 1200px;\n @media (max-width: 768px) {\n margin: 48px ${spacing.md}px;\n }\n\n @media (min-width: 769px) {\n margin: 48px 48px;\n }\n\n @media (min-width: 1200px) {\n margin: 48px 120px;\n }\n\n @media (min-width: 1920px) {\n margin: 48px 360px;\n }\n`;\n\nconst SidebarContainer = styled(Flex)`\n justify-content: center;\n margin-left: 32px;\n\n @media (min-width: 1024px) {\n justify-content: flex-start;\n margin-left: 50px;\n }\n`;\n\nconst UnderlineLink = styled(Box)`\n a {\n text-decoration: underline !important;\n }\n`;\n\nexport {\n Container,\n SmallLogo,\n SmallLogoWrapper,\n MediumLogoWrapper,\n NameText,\n SlickWrapper,\n Slide,\n OrangeLink,\n ImageModal,\n ModalImageBody,\n ModalImage,\n CloseImageModalButton,\n UnstyledLink,\n DropdownMenu,\n DropdownItem,\n Divider,\n LargeSpacingDivider,\n ArrowContainer,\n UnderlineModalHeader,\n MinWidthModal,\n MinWidthModalBody,\n MediaContainer,\n SidebarContainer,\n UnderlineLink,\n EmptySlide,\n SlideContainer,\n};\n","import React from 'react';\nimport PT from 'prop-types';\nimport Slider from 'react-slick';\nimport { colors, spacing } from '@procore/core-react';\nimport styled from 'styled-components';\nimport { Slide, ArrowContainer } from '@/react/styles/v2';\nimport { ArrowNext, ArrowPrev } from '../Arrows';\n\nconst SlickDots = styled.ul`\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n left: 50%;\n transform: translateX(-50%);\n gap: 4px;\n border-radius: 16px;\n padding: ${spacing.md}px;\n margin: 0 auto;\n background-color: ${colors.gray94};\n bottom: -36px;\n\n @media (min-width: 768px) {\n bottom: -59px;\n }\n\n & > li {\n margin: 0;\n width: 6px;\n height: 6px;\n\n &.slick-active {\n width: 8px;\n height: 8px;\n\n & > button {\n &::before {\n font-size: 8px;\n }\n }\n }\n\n & > button {\n width: auto;\n height: auto;\n padding: 0;\n\n &::before {\n width: auto;\n height: auto;\n line-height: 0;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n transition: all 0.2s ease;\n }\n }\n }\n`;\n\nconst StyledSlider = styled(Slider)`\n .slick-track {\n display: flex !important; // have to do this to override css\n align-items: stretch;\n }\n\n .slick-slide {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n }\n`;\n\nconst SlideContainer = styled.div`\n width: 100%;\n height: 183px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n\n @media (min-width: 768px) {\n height: 496px;\n }\n`;\n\nexport const SingleCarousel = ({ settings, slides, handleOnSlideClick }) => {\n const sliderSettings = {\n focusOnSelect: false,\n dots: true,\n infinite: true,\n slidesToShow: 1,\n slidesToScroll: 1,\n fade: false,\n adaptiveHeight: false,\n appendDots: (dots) => {dots},\n prevArrow: (\n \n \n \n ),\n nextArrow: (\n \n \n \n ),\n ...settings,\n };\n\n return (\n \n {slides?.map((slide, index) => (\n \n \n \n ))}\n \n );\n};\n\nSingleCarousel.propTypes = {\n slides: PT.arrayOf(\n PT.shape({\n url: PT.string.isRequired,\n })\n ).isRequired,\n settings: PT.shape({}),\n handleOnSlideClick: PT.func,\n};\n","import React, { useState, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Box,\n Button,\n H2,\n Modal,\n P,\n Tooltip,\n useI18nContext,\n} from '@procore/core-react';\n\nconst ContactForm = ({\n appName,\n email = 'example@example.com',\n company = 'Company',\n developerAppId = '',\n contactUsEmail,\n createLead,\n sendAnalytics = () => {},\n isSignedIn = false,\n}) => {\n const i18n = useI18nContext();\n const [formSubmitted, setFormSubmitted] = useState(false);\n const [modalOpen, setModalOpen] = useState(false);\n\n const openContactModal = useCallback(() => {\n if (!window.MktoForms2) {\n return;\n }\n\n sendAnalytics('open', 'Modal', 'Contact Us', 'contact_form.opened');\n setModalOpen(true);\n\n window.MktoForms2.loadForm(\n '//app-sj11.marketo.com',\n '788-HIQ-636',\n 6597,\n (form) => {\n form.vals({\n Email: email,\n Company: company,\n Marketplace_Interest__c: appName,\n marketplaceDeveloperAppId: developerAppId,\n marketplacePartnerEmail: contactUsEmail,\n marketplaceProcoreBuiltApp: createLead,\n });\n\n form.onSuccess(() => {\n setFormSubmitted(true);\n sendAnalytics('submit', 'Form', 'Contact Us', 'contact_form.sent');\n return false;\n });\n }\n );\n }, [\n appName,\n email,\n company,\n developerAppId,\n contactUsEmail,\n createLead,\n sendAnalytics,\n ]);\n\n const closeContactModal = useCallback(() => {\n setModalOpen(false);\n sendAnalytics(\n 'close',\n 'Modal',\n 'Contact Us',\n 'contact_form.closed',\n { sent_form: formSubmitted ? 1 : 0 },\n formSubmitted ? 1 : 0\n );\n }, [formSubmitted, sendAnalytics]);\n\n return (\n
\n {isSignedIn ? (\n \n ) : (\n \n \n \n {i18n.t('labels.contactUs', { defaultValue: 'Contact Us' })}\n \n \n \n )}\n \n \n {i18n.t('labels.contactUs', { defaultValue: 'Contact Us' })}\n \n \n \n {!formSubmitted ? (\n

\n {i18n.t('contactUs.formDescription', {\n defaultValue:\n 'Please fill out the form below. A representative will be in touch with you shortly with more information on pricing and how to get started.',\n })}\n

\n ) : (\n \n

\n {i18n.t('labels.thankYou', {\n defaultValue:\n 'Thanks for visiting our App Marketplace and requesting information on',\n })}\n !\n

\n

\n {i18n.t('contactUs.thanksForVisiting', {\n defaultValue:\n 'We have received your request and a representative will contact you shortly.',\n })}{' '}\n {appName}\n

\n

\n {i18n.t('contactUs.submitted', {\n defaultValue:\n 'We have received your request and a representative will contact you shortly.',\n })}\n

\n
\n )}\n {!formSubmitted &&
}\n\n

\n {i18n.t('contactUs.issues', {\n defaultValue:\n 'If you are having issues viewing the form, please disable your Adblock.',\n })}\n

\n \n \n \n
\n );\n};\n\nContactForm.propTypes = {\n appName: PropTypes.string.isRequired,\n email: PropTypes.string,\n company: PropTypes.string,\n developerAppId: PropTypes.string,\n contactUsEmail: PropTypes.string,\n createLead: PropTypes.bool,\n sendAnalytics: PropTypes.func,\n isSignedIn: PropTypes.bool,\n};\n\nexport default ContactForm;\n","import styled, { css } from 'styled-components';\nimport {\n Box,\n Flex,\n Link,\n Modal,\n H1,\n Card,\n spacing,\n colors,\n Page,\n} from '@procore/core-react';\n\nconst SmallLogoWrapper = styled(Flex)`\n width: 75px;\n height: 75px;\n background: #ffffff;\n border: 1px solid #c2c2c2;\n padding: 10px;\n`;\n\nconst MediumLogoWrapper = styled(Flex)`\n width: 100px;\n height: 100px;\n background: ${colors.white};\n margin-right: 38px;\n padding: 0px;\n`;\n\nconst SmallLogo = styled.img`\n width: 100%;\n height: auto;\n`;\n\nconst Container = styled(Box)`\n max-width: 1200px;\n width: 100%;\n margin: 0 auto;\n min-height: calc(100vh - 45px);\n background-color: ${colors.gray96};\n`;\n\nconst ContentContainer = styled(Box)`\n max-width: 780px;\n width: 100%;\n margin: 0 auto;\n\n @media (max-width: 768px) {\n padding: 0 ${spacing.lg}px;\n }\n`;\n\nconst Slide = styled.img`\n object-fit: contain;\n`;\n\nconst SlickWrapper = styled(Box)`\n .slick-arrow {\n transition: opacity 0.3s;\n opacity: 0;\n\n &:before {\n color: #1d3243;\n }\n }\n\n &:hover {\n .slick-arrow {\n opacity: 1;\n }\n }\n`;\n\nconst arrows = css`\n background: #1d3243;\n width: 50px;\n height: 75px;\n padding: 10px;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n &:before {\n content: none;\n }\n\n &:hover {\n background: #1d3243;\n }\n`;\n\nconst SlickArrowPrev = styled(Box)`\n ${arrows}\n transform: translate(-20px, -50%);\n`;\n\nconst SlickArrowNext = styled(Box)`\n ${arrows}\n transform: translate(20px, -50%);\n`;\n\nconst OrangeLink = styled(Link)`\n color: #ff5200;\n`;\n\nconst ImageModal = styled(Modal)`\n background: transparent;\n box-shadow: none;\n overflow: visible;\n > div {\n overflow: visible;\n }\n`;\n\nconst ModalImageBody = styled(Box)`\n width: 90vw;\n height: 90vh;\n max-width: none;\n justify-content: center;\n overflow: visible;\n position: relative;\n display: flex;\n\n > div > div {\n max-height: none;\n }\n`;\n\nconst ModalImage = styled.img`\n object-fit: contain;\n box-shadow: 0px 0px 32px -4px hsl(200deg 10% 15% / 64%);\n max-width: 100%;\n max-height: 100%;\n`;\n\nconst CloseImageModalButton = styled.button`\n position: absolute;\n top: -10px;\n right: -10px;\n border-radius: 50%;\n width: 25px;\n height: 25px;\n background-color: #000;\n border: 2px solid #fff;\n\n &:after {\n content: '\\\\00d7';\n color: #fff;\n }\n`;\n\nconst HeaderText = styled(H1)`\n font-size: 34px;\n display: block;\n line-height: 40px;\n margin-bottom: ${spacing.sm}px;\n`;\n\nconst UnstyledLink = styled(Link)`\n color: inherit;\n text-decoration: none;\n\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n`;\n\nconst DropdownMenu = styled(Card)`\n margin-top: ${spacing.sm}px;\n background-color: ${colors.white};\n border-radius: 8px;\n padding: ${spacing.sm}px;\n box-shadow: 0px 4px 28px 0px rgba(0, 0, 0, 0.28);\n`;\n\nconst DropdownItem = styled(Box)`\n background-color: ${colors.white};\n border-radius: 8px;\n padding: ${spacing.md}px;\n margin: ${spacing.xs}px 0;\n width: 100%;\n\n &:hover {\n background-color: ${colors.gray94};\n }\n`;\n\nconst Divider = styled.div`\n width: 100%;\n border-top: 1px solid ${({ color }) => color || colors.gray94};\n height: 2px;\n margin: ${spacing.sm}px 0;\n`;\n\nconst HeaderContainer = styled(Box)`\n max-width: 1344px;\n width: 100%;\n margin: 0 auto;\n padding-bottom: 32px;\n`;\n\nconst PageHeader = styled(Page.Header)`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nconst ResponsiveFlex = styled(Box)`\n flex-direction: column;\n flex-wrap: wrap;\n gap: ${spacing.lg}px;\n\n @media (min-width: 576px) {\n flex-direction: row;\n }\n`;\n\nconst TruncatedText = styled(Box)`\n max-width: 230px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\nexport {\n Container,\n SmallLogo,\n SmallLogoWrapper,\n MediumLogoWrapper,\n HeaderText,\n SlickArrowNext,\n SlickArrowPrev,\n SlickWrapper,\n Slide,\n OrangeLink,\n ImageModal,\n ModalImageBody,\n ModalImage,\n CloseImageModalButton,\n UnstyledLink,\n DropdownMenu,\n DropdownItem,\n Divider,\n ContentContainer,\n HeaderContainer,\n PageHeader,\n ResponsiveFlex,\n TruncatedText,\n};\n","import React from 'react';\nimport {\n Wrench,\n PeopleGroup,\n Handshake,\n LightBulb,\n BookInfo,\n Presentation,\n} from '@procore/core-icons';\n\nexport const ADDITIONAL_CATEGORY_LINKS = [\n {\n href: '/',\n name: 'Featured',\n slug: '/',\n },\n {\n href: '/featured/new',\n name: 'New',\n slug: 'new',\n },\n {\n href: '/listings',\n name: 'All',\n slug: 'listings',\n },\n];\n\nexport const COMPONENT_MAP = {\n iframe: 'Embedded',\n fullscreen: 'Embedded',\n sidepanel: 'Embedded',\n};\n\nexport const NAVIGATION_MENU_ITEMS = [\n {\n icon: ,\n label: 'navbar.app',\n href: 'https://developers.procore.com/documentation/partner-overview',\n testid: 'build-app',\n },\n {\n icon: ,\n label: 'navbar.community',\n href: 'https://community.procore.com/s/?utm_source=header&utm_medium=link&utm_campaign=Community%20Header&utm_id=community',\n testid: 'community',\n },\n {\n icon: ,\n label: 'navbar.partner',\n href: 'https://developers.procore.com/partner-signup',\n testid: 'partner',\n },\n {\n icon: ,\n label: 'navbar.idea',\n href: 'https://feedback.procore.com/forums/183340-customer-feedback-for-procore-technologies-inc?category_id=78299',\n testid: 'idea',\n },\n {\n icon: ,\n label: 'navbar.webinars',\n href: 'https://www.procore.com/virtual-training?groups=integration-spotlights',\n testid: 'webinars',\n },\n {\n icon: ,\n label: 'navbar.faq',\n href: '/faqs',\n testid: 'faq',\n },\n];\n","import React from 'react';\nimport {\n Box,\n Card,\n colors,\n Flex,\n H2,\n P,\n Typography,\n} from '@procore/core-react';\nimport PT from 'prop-types';\nimport LazyLoad from 'react-lazyload';\nimport styled from 'styled-components';\n\nimport { truncate } from '@/react/shared/utils/helpers';\nimport { UnstyledLink } from '@/react/styles';\nimport { COMPONENT_MAP } from '@/react/consts';\n\nconst BottomBorderFlex = styled(Flex)`\n border-bottom: 1px solid ${colors.gray90};\n min-height: 100px;\n width: 100%;\n`;\n\nconst StyledComponentsText = styled(P)`\n color: ${colors.black};\n margin: 0;\n`;\n\n// IE specific CSS fix to prevent\n// text from overflowing container\nconst FlexFullWidthChildren = styled(Flex)`\n width: 100%;\n & > * {\n width: 100%;\n }\n`;\n\nconst renderComponentString = (components, isBeta) => {\n const mappedComponents = components\n .map((component) => COMPONENT_MAP[component])\n .filter(Boolean);\n if (isBeta) {\n mappedComponents.push('Beta');\n }\n\n return mappedComponents.join(' | ');\n};\n\nconst ListingsAppCard = ({ app }) => (\n \n \n \n \n {app.image_url && (\n \n \n \n )}\n \n \n

{app.name}

\n \n \n {truncate(app.search_description, 100, true)}\n \n \n \n \n {renderComponentString(app.components, app.status === 'beta')}\n \n \n \n \n
\n
\n);\n\nListingsAppCard.propTypes = {\n app: PT.shape({\n components: PT.arrayOf(PT.string).isRequired,\n image_url: PT.string.isRequired,\n slug: PT.string.isRequired,\n name: PT.string.isRequired,\n search_description: PT.string.isRequired,\n status: PT.string.isRequired,\n }).isRequired,\n};\n\nexport default ListingsAppCard;\n","import React from 'react';\nimport { ExternalLink, ShieldStar } from '@procore/core-icons';\nimport {\n Box,\n colors,\n Link,\n Popover,\n Typography,\n useI18nContext,\n} from '@procore/core-react';\nimport styled from 'styled-components';\n\nconst PopoverHeader = styled(Box)`\n border-bottom: 1px solid ${colors.gray90};\n`;\n\nconst PopoverBody = styled(Box)`\n border-bottom: 1px solid ${colors.gray90};\n`;\n\nconst SecurityBadge = () => {\n const i18n = useI18nContext();\n return (\n \n \n \n {i18n.t('securityBadge.title')}\n \n \n \n {i18n.t('securityBadge.partnerAnswered')}{' '}\n {i18n.t('securityBadge.link')}\n \n \n {i18n.t('securityBadge.responsibility')}\n \n \n {i18n.t('securityBadge.learnMore')} \n \n \n \n );\n};\n\nexport default SecurityBadge;\n","import React from 'react';\nimport PT from 'prop-types';\nimport {\n Box,\n Breadcrumbs,\n colors,\n Flex,\n H2,\n LinkButton,\n Page,\n Pill,\n Typography,\n useI18nContext,\n Tooltip,\n Popover,\n} from '@procore/core-react';\nimport {\n Building,\n ChevronLeft,\n Download,\n Help,\n ShieldStar,\n} from '@procore/core-icons';\nimport ContactForm from './ContactForm';\nimport {\n HeaderContainer,\n HeaderText,\n MediumLogoWrapper,\n PageHeader,\n ResponsiveFlex,\n SmallLogo,\n TruncatedText,\n} from '@/react/styles';\nimport SecurityBadge from './SecurtyBadge';\n\nconst AppHeader = ({\n app,\n companyName,\n getActionButton,\n metricsData = 0,\n sendAnalytics,\n user,\n}) => {\n const i18n = useI18nContext();\n const {\n built_by,\n contact_us_email,\n create_lead,\n developer_app_id,\n status,\n name,\n search_description,\n small_logo,\n small_logo_url,\n price_button,\n seller,\n security_questionnaire_visible,\n direct_installable,\n } = app;\n\n const installCount = metricsData || 0;\n\n const headerIcons = [\n {\n id: 'built-by',\n Icon: () => ,\n translation: 'builtBy',\n value: built_by,\n isVisible: true,\n },\n {\n id: 'supported-by',\n Icon: () => ,\n translation: 'supportedBy',\n value: seller || built_by,\n isVisible: true,\n },\n {\n id: 'install-count',\n Icon: () => ,\n translation: 'installs',\n value: i18n.toNumber(installCount, { precision: 0 }),\n isVisible: direct_installable,\n },\n ];\n\n return (\n \n \n \n \n \n \n }\n data-testid=\"header-breadcrumbs\"\n >\n \n {i18n.t('global.appMarketplace')}\n \n \n \n \n \n\n \n \n \n \n \n\n \n {name}\n \n {search_description}\n \n\n \n {headerIcons.map(\n ({ id, Icon, translation, value, isVisible }) =>\n isVisible && (\n \n \n \n \n {translation === 'installs' ? (\n \n {value} {i18n.t(`header.${translation}`)}\n \n ) : (\n \n {i18n.t(`header.${translation}`)} {value}\n \n )}\n \n \n \n )\n )}\n\n {security_questionnaire_visible && (\n \n }\n placement=\"bottom\"\n trigger=\"hover\"\n >\n \n \n \n \n {i18n.t('header.securityBadge')}\n \n \n \n \n \n )}\n\n {status === 'beta' && (\n \n \n {i18n.t('header.beta')}\n \n \n )}\n \n \n \n\n \n \n {contact_us_email || create_lead ? (\n \n ) : (\n \n sendAnalytics(\n 'click',\n 'Link',\n 'Learn How',\n 'learn_how.clicked'\n )\n }\n target=\"_blank\"\n >\n {i18n.t('labels.learnHow')}\n \n )}\n \n {getActionButton()}\n \n \n \n \n \n );\n};\n\nAppHeader.propTypes = {\n app: PT.shape({\n built_by: PT.string.isRequired,\n contact_us_email: PT.string,\n create_lead: PT.bool,\n developer_app_id: PT.string,\n installCount: PT.string,\n status: PT.string.isRequired,\n name: PT.string.isRequired,\n price_button: PT.string,\n search_description: PT.string.isRequired,\n small_logo: PT.shape({\n url: PT.string,\n }).isRequired,\n security_questionnaire_visible: PT.bool,\n installed: PT.bool,\n direct_installable: PT.bool,\n small_logo_url: PT.string,\n seller: PT.string,\n }),\n companyName: PT.string.isRequired,\n getActionButton: PT.func.isRequired,\n metricsData: PT.shape({\n app_installations: PT.shape({\n rows: PT.arrayOf(PT.shape({})).isRequired,\n }),\n }),\n sendAnalytics: PT.func.isRequired,\n user: PT.shape({\n email: PT.string,\n isSignedIn: PT.bool,\n }).isRequired,\n};\n\nexport default AppHeader;\n","import React from 'react';\nimport { Box, H2, Flex, colors } from '@procore/core-react';\nimport PT from 'prop-types';\nimport styled from 'styled-components';\n\nimport { ADDITIONAL_CATEGORY_LINKS } from '@/react/consts';\nimport { UnstyledLink } from '@/react/styles';\n\nconst StyledSidebar = styled.div`\n background-color: transparent;\n`;\n\nconst Divider = styled.div`\n margin: 24px;\n border-bottom: 1px solid ${colors.gray90};\n height: 1px;\n`;\n\nconst MenuItem = styled(Flex).attrs({ className: 'menu-item' })`\n font-family: inherit;\n font-size: 14px;\n color: ${colors.gray15};\n cursor: pointer;\n position: relative;\n transition: all 0.2s ease-in-out 0s;\n\n &:after {\n background-color: ${(props) =>\n props.active ? colors.orange50 : 'transparent'};\n content: '';\n height: 100%;\n left: 0px;\n position: absolute;\n top: 0px;\n transition: all 0.2s ease-in-out 0s;\n width: 5px;\n }\n\n &:hover {\n background-color: ${colors.gray90};\n color: ${colors.gray15};\n &:after {\n background-color: ${colors.orange50};\n }\n }\n`;\n\nconst FlexMenuContainer = styled(Flex)`\n flex-direction: column;\n & > * {\n width: 100%;\n }\n`;\n\nconst endsWith = (str = '', suffix = '') =>\n str.indexOf(suffix, str.length - suffix.length) !== -1;\n\nconst isLinkActive = (path) => {\n const location = window.location || { pathname: '' };\n const { pathname } = location;\n return endsWith(pathname, path);\n};\n\nconst ListingsSidebar = ({ categories }) => (\n \n \n {ADDITIONAL_CATEGORY_LINKS.map((category) => (\n \n \n {category.name}\n \n \n ))}\n \n \n

Categories

\n
\n {categories.map((category) => (\n \n \n {category.name}\n \n \n ))}\n
\n
\n);\n\nListingsSidebar.propTypes = {\n categories: PT.arrayOf(\n PT.shape({\n name: PT.string.isRequired,\n slug: PT.string.isRequired,\n type: PT.string.isRequired,\n })\n ).isRequired,\n};\n\nexport default ListingsSidebar;\n","import React from 'react';\nimport { H3, P, Typography, colors } from '@procore/core-react';\nimport { Plus } from '@procore/core-icons/dist';\nimport styled from 'styled-components';\nimport { OrangeLink } from '@/react/styles';\n\nconst StyledLI = styled.li`\n margin: 10px 0 10px -45px;\n`;\n\nconst StyledH3 = styled(H3)`\n margin: 30px 0;\n`;\n\nconst StyledPlus = styled(Plus)`\n color: ${colors.orange50};\n margin-bottom: -0.5em;\n margin-right: 5px;\n`;\n\nconst NoResults = () => {\n return (\n <>\n No results\n

Sorry, we did not find any results for your search.

\n\n Might we suggest:\n\n \n \n \n Browsing our app categories to find what you may be looking for\n \n \n \n Visiting the \n \n Procore Community: Integrations / App Marketplace\n {' '}\n and discuss your needs with others\n \n \n \n \n Making a suggestion\n {' '}\n so we can start working on delivering your app needs\n \n \n \n );\n};\n\nexport default NoResults;\n","import React from 'react';\n\nconst WistiaExtract = (html, setParsedHTML) => {\n const container = document.createElement('div');\n container.innerHTML = html.trim();\n document.body.appendChild(container);\n\n /**\n * Wistia script and iframe are always first items of HTML\n * so they render at top of page\n */\n\n const wistiaIframe = container.getElementsByTagName('iframe').item(0);\n const wistiaScript = container.getElementsByTagName('script').item(0);\n\n /**\n * If no script or iframe, we remove the fake container\n * and set the raw HTML as is\n */\n if (!wistiaScript && !wistiaIframe) {\n document.body.removeChild(container);\n setParsedHTML({\n description: html,\n video: null,\n });\n return;\n }\n\n let url;\n\n /**\n * Some videos are embedded via iframe, others embedded via script\n */\n\n if (wistiaIframe) {\n url = wistiaIframe.src;\n wistiaIframe.parentElement.removeChild(wistiaIframe);\n } else {\n url = wistiaScript.src;\n }\n\n /**\n * Below we generate the scripts and DOM necessary to allow\n * for the video to be inserted into the media slider\n */\n\n const wistiaDom = container.getElementsByClassName(\n 'wistia_responsive_padding'\n );\n container.removeChild(wistiaDom.item(0));\n document.body.removeChild(container);\n\n const id = url\n .substring(url.lastIndexOf('/') + 1)\n .split('.')[0]\n .split('?')[0];\n\n const s = document.createElement('script');\n s.type = 'text/javascript';\n s.src = `https://fast.wistia.com/embed/medias/${id}.jsonp`;\n s.async = true;\n\n const s1 = document.createElement('script');\n s1.type = 'text/javascript';\n s1.src = 'https://fast.wistia.com/assets/external/E-v1.js';\n s1.async = true;\n\n document.head.append(s);\n document.head.append(s1);\n\n setParsedHTML({\n video: (\n <>\n \n \n \n \n \n \n ),\n description: container.outerHTML,\n });\n};\n\nexport default WistiaExtract;\n","import { Button, H3, Modal, P } from '@procore/core-react';\nimport PT from 'prop-types';\nimport React from 'react';\nimport styled from 'styled-components';\nimport * as Styles from '@/react/styles';\n\nconst Container = styled.div`\n margin: 14px 0;\n`;\nconst Link = styled(Styles.OrangeLink)`\n text-decoration: none;\n`;\nconst SectionHeader = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\nfunction VersionHistory({ history, showingVersion }) {\n const [open, setOpen] = React.useState(showingVersion);\n\n if (\n !(Array.isArray(history) && history.length) ||\n history.every((v) => v.changelog === null)\n ) {\n return <>;\n }\n\n const changelog = showingVersion\n ? history.filter((version) => version.semantic_version === showingVersion)\n : [...history].reverse();\n\n const [{ semantic_version }] = changelog;\n const VERSION_HISTORY = 'Version History';\n\n return (\n <>\n

Version {semantic_version}

\n \n setOpen(true)}>{VERSION_HISTORY}\n \n setOpen(false)} open={open} width=\"md\">\n setOpen(false)}>\n {VERSION_HISTORY}\n \n \n {changelog.map((version, idx) => (\n \n \n

{version.semantic_version}

\n {version.created_at}\n
\n

{version.changelog}

\n
\n ))}\n
\n \n \n \n \n \n
\n \n );\n}\n\nVersionHistory.propTypes = {\n history: PT.arrayOf(\n PT.shape({\n changelog: PT.string,\n created_at: PT.string,\n semantic_version: PT.string,\n })\n ),\n showingVersion: PT.string,\n};\n\nVersionHistory.defaultProps = {\n history: [{ changelog: null, created_at: '', semantic_version: '' }],\n};\n\nexport default VersionHistory;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nconst SearchInput = ({ onSearchChange }) => {\n const [searchValue, setSearchValue] = useState('');\n\n useEffect(() => {\n onSearchChange(searchValue);\n }, [searchValue]);\n\n const clearSearch = () => {\n setSearchValue('');\n };\n\n return (\n /* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */\n e.stopPropagation()}\n >\n { }\n setSearchValue(e.target.value)}\n placeholder=\"Search\"\n />\n \n \n );\n};\n\nSearchInput.propTypes = {\n onSearchChange: PropTypes.func.isRequired,\n};\n\nexport default SearchInput;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport qs from 'qs';\nimport Dropdown from '@/react/shared/Dropdown';\nimport SearchInput from '@/react/shared/SearchInput';\n\nconst I18n = {\n cont: 'Continue',\n select_a_company: 'Select a Company'\n};\n\nlet companyCounter = 0;\n\nclass CompanyPicker extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n companyId: null,\n searchValue: '',\n };\n\n this.handleSearch = this.handleSearch.bind(this);\n }\n\n setCompanyId(companyId) {\n this.setState({ companyId });\n }\n\n handleSearch(searchValue) {\n this.setState({searchValue});\n }\n\n renderCompanies() {\n const { companies } = this.props;\n const { searchValue } = this.state;\n return companies.filter(company => (company.name.toLowerCase().indexOf(searchValue.toLowerCase()) === 0)).map((company) => (\n /* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */\n this.setCompanyId(company.id) }\n className='dropdown-item'\n key={`${company.name}-${company.id}-${companyCounter++}`}\n >\n {company.name}\n \n ))\n }\n\n render() {\n const { linkTo, companies } = this.props;\n const { companyId } = this.state;\n const disabled = !companyId;\n\n const selectedCompany = companies.find((c) => (c.id == companyId));\n\n let continuePath;\n if (selectedCompany) {\n const params = {\n 'company_id': selectedCompany.id,\n 'company_name': selectedCompany.name,\n 'company_root': selectedCompany.procore_root,\n };\n\n continuePath = `${linkTo}?${qs.stringify(params)}`;\n }\n\n return (\n <>\n \n
\n {\n selectedCompany ?\n selectedCompany.name :\n I18n.select_a_company\n }\n
\n
\n \n }\n >\n \n {this.renderCompanies()}\n \n \n {I18n.cont}\n \n \n );\n }\n}\n\nCompanyPicker.propTypes = {\n companies: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number,\n name: PropTypes.string,\n procore_root: PropTypes.string,\n })\n ),\n linkTo: PropTypes.string,\n};\n\nexport default CompanyPicker;\n","/**\n * Private Helpers\n */\nconst _getSharedBaseHeaders = () => ({\n 'X-CSRF-TOKEN': document\n .querySelector('meta[name=\"csrf-token\"]')\n .getAttribute('content'),\n});\n\nexport const POST_HEADERS = {\n 'Content-Type': 'application/json',\n};\n\nexport const getHeaders = (headers = {}) => ({\n ..._getSharedBaseHeaders(),\n ...headers,\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"buttonContainer\":\"styles-module__buttonContainer__K3ZmC\",\"button\":\"styles-module__button__bVyZy\",\"modalFooter\":\"styles-module__modalFooter__nSPIt\",\"footerButtons\":\"styles-module__footerButtons__lCRar\",\"footerButton\":\"styles-module__footerButton__VvQTL\",\"notesInput\":\"styles-module__notesInput__JxhGH\",\"popover\":\"styles-module__popover__QZv6Y\",\"requestModal\":\"styles-module__requestModal__hfC_7\"};","// extracted by mini-css-extract-plugin\nexport default {\"popoverWrapper\":\"styles-module__popoverWrapper__nMNoS\",\"popoverContent\":\"styles-module__popoverContent__WOMFV\",\"popoverTarget\":\"styles-module__popoverTarget__N0L_6\",\"topPopoverContent\":\"styles-module__topPopoverContent__f_X3r\",\"bottomPopoverContent\":\"styles-module__bottomPopoverContent__DUm68\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames/bind';\nimport styles from './styles.module.scss';\n\nconst cx = classNames.bind(styles);\n\nclass Popover extends React.Component {\n render() {\n const {\n className,\n children,\n position,\n } = this.props;\n\n return (\n
\n
\n\n
\n {children}\n
\n
\n );\n }\n}\n\nPopover.propTypes = {\n className: PropTypes.string,\n children: PropTypes.node,\n position: PropTypes.string\n};\n\nPopover.defaultProps = {\n position: 'bottom'\n}\n\nexport default Popover;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport axios from 'axios';\nimport { Button } from '@procore/core-react';\nimport { getHeaders, POST_HEADERS } from '@/utils/apiUtil';\nimport styles from './styles.module.scss';\nimport Popover from '@/react/shared/Popover';\n\nconst cx = classNames.bind(styles);\n\nconst I18n = {\n requestSent: 'App Requested',\n requestInstall: 'Request App',\n modalTitle: 'Request App',\n cancel: 'Cancel',\n submit: 'Submit',\n notesPlaceholder:\n 'Only company administrators can install apps. Include an optional note for your administrators here.',\n error: 'Something went wrong, please try again later.',\n sentInfo:\n 'Your request to install this app has been sent to your company administrators.',\n};\n\nconst api = {\n requestInstall: (installRequestsPath, developerAppId, notes) => {\n return axios(installRequestsPath, {\n method: 'post',\n data: { developer_app_id: developerAppId, notes },\n headers: getHeaders(POST_HEADERS),\n });\n },\n};\n\nclass InstallRequestButton extends React.Component {\n constructor(props) {\n super(props);\n this.state = { notes: '', requestSent: false, error: null };\n }\n\n componentDidMount() {\n $('#install-request-modal').on($.modal.AFTER_CLOSE, () => {\n this.setNotes('');\n });\n }\n\n setRequestSent(requestSent) {\n this.setState({ requestSent });\n }\n\n setNotes(notes) {\n this.setState({ notes });\n }\n\n setError(error) {\n this.setState({ error });\n }\n\n requestInstall() {\n const { installRequestsPath, developerAppId, sendAnalytics } = this.props;\n const self = this;\n\n api\n .requestInstall(installRequestsPath, developerAppId, this.state.notes)\n .then((response) => {\n if (response.status >= 200 && response.status <= 299) {\n self.setRequestSent(true);\n sendAnalytics('submit', 'Form', 'Install Request');\n }\n })\n .catch(() => {\n self.setError(I18n.error);\n });\n $.modal.close();\n }\n\n render() {\n const { requestSent, notes, error } = this.state;\n const { requested, sendAnalytics } = this.props;\n\n return (\n
\n
\n {error && (\n {I18n.error}\n )}\n {requested || requestSent ? (\n <>\n {I18n.sentInfo}\n
\n {I18n.requestSent}\n
\n \n ) : (\n \n sendAnalytics(\n 'open',\n 'Modal',\n 'Install Request',\n 'installation_request.clicked'\n )\n }\n >\n \n \n )}\n
\n \n

{I18n.modalTitle}

\n\n
\n this.setNotes(e.target.value)}\n placeholder={I18n.notesPlaceholder}\n className={cx(styles.notesInput)}\n />\n
\n\n
\n
\n \n sendAnalytics(\n 'close',\n 'Modal',\n 'Install Request',\n 'installation_request.closed',\n { request_sent: this.state.requestSent }\n )\n }\n >\n {I18n.cancel}\n \n this.requestInstall()}\n >\n {I18n.submit}\n \n
\n
\n
\n
\n );\n }\n}\n\nInstallRequestButton.propTypes = {\n installRequestsPath: PropTypes.string.isRequired,\n developerAppId: PropTypes.number.isRequired,\n requested: PropTypes.bool,\n sendAnalytics: PropTypes.func.isRequired,\n};\n\nexport default InstallRequestButton;\n","import React from 'react';\n\nconst ProcoreLogo = () => {\n return (\n \n \n \n \n );\n};\n\nexport default ProcoreLogo;\n","import React, {\n createContext,\n useContext,\n useState,\n useEffect,\n useMemo,\n} from 'react';\nimport PT from 'prop-types';\nimport Fuse from 'fuse.js';\nimport axios from 'axios';\nimport { FUSE_CONFIG } from '@/react/shared/utils/fuseConfig';\nimport { debounce } from '@/react/shared/utils/helpers';\nimport trackEvent from '@/scripts/analytics';\n\nconst SearchContext = createContext();\n\nexport const useSearch = () => useContext(SearchContext);\n\nexport const SearchProvider = ({ children }) => {\n const DEBOUNCE_DELAY = 300;\n const SEARCH_TERM_LENGTH = 2;\n const MAX_SEARCH_RESULTS = 15;\n const [searchTerm, setSearchTerm] = useState('');\n const [fuse, setFuse] = useState(null);\n const [appSearchResults, setAppSearchResults] = useState([]);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n // Fetch and initialize Fuse only once\n axios.get('/search_data').then((res) => {\n setFuse(new Fuse(res.data, FUSE_CONFIG));\n setIsLoading(false);\n });\n }, []);\n\n const performSearch = useMemo(\n () =>\n debounce((term) => {\n if (fuse && term.length > SEARCH_TERM_LENGTH) {\n const results = fuse.search(term).slice(0, MAX_SEARCH_RESULTS);\n setAppSearchResults(results);\n trackEvent('marketplace.apps.search.input', {\n marketplace_search_term: term,\n marketplace_search_count: results.length,\n });\n } else {\n setAppSearchResults([]);\n }\n }, DEBOUNCE_DELAY),\n [fuse]\n );\n\n useEffect(() => {\n performSearch(searchTerm);\n }, [searchTerm, performSearch]);\n\n // Memoize the context value to avoid unnecessary re-renders\n const contextValue = useMemo(\n () => ({ searchTerm, setSearchTerm, appSearchResults, isLoading }),\n [searchTerm, setSearchTerm, appSearchResults, isLoading]\n );\n\n return (\n \n {children}\n \n );\n};\n\nSearchProvider.propTypes = {\n children: PT.node.isRequired,\n};\n","import React from 'react';\nimport PT from 'prop-types';\nimport {\n Box,\n Flex,\n LinkButton,\n Typography,\n useI18nContext,\n} from '@procore/core-react';\nimport { UnstyledLink, DropdownItem, Divider } from '@/react/styles';\nimport { highlight } from '@/utils/highlight';\n\nconst SearchResults = ({ results, searchTerm }) => {\n const RESULTS_LIMIT = 7;\n const i18n = useI18nContext();\n const highlightedResults = highlight(results?.slice(0, RESULTS_LIMIT));\n\n return highlightedResults.length > 0 ? (\n highlightedResults.map((result, idx, arr) => {\n const { highlightedItem: app } = result;\n const viewAll = arr.length > 1 && idx === arr.length - 1;\n\n return (\n \n \n \n \n \n \n \n \n {app.name}\n \n {app.search_description}\n \n \n \n \n \n {viewAll && (\n \n \n \n {i18n.t('labels.viewAll')}\n \n \n )}\n \n );\n })\n ) : (\n \n {i18n.t('labels.noResults')}\n \n );\n};\n\nSearchResults.propTypes = {\n results: PT.arrayOf(PT.shape({})).isRequired,\n searchTerm: PT.string.isRequired,\n};\n\nexport default SearchResults;\n","import React, { useEffect, useRef } from 'react';\nimport PT from 'prop-types';\nimport styled from 'styled-components';\nimport {\n Button,\n Box,\n Input,\n colors,\n useI18nContext,\n Typography,\n} from '@procore/core-react';\nimport { Search } from '@procore/core-icons';\nimport { useSearch } from '@/react/context/SearchContext';\nimport { DropdownMenu } from '@/react/styles';\nimport SearchResults from './SearchResults';\n\nconst SearchBox = styled(Box)`\n border-radius: 100px;\n width: 100%;\n padding: 6px 16px 6px 8px;\n background-color: ${({ backgroundColor }) =>\n backgroundColor || colors.gray94};\n\n &:hover,\n &:focus-within {\n background-color: ${({ hoverColor }) => hoverColor || colors.gray90};\n }\n\n @media (min-width: 576px) {\n min-width: 428px;\n }\n border-bottom: none;\n`;\n\nconst SearchInput = styled(Input)`\n display: block;\n border: none;\n padding: 0px;\n width: 100%;\n background-color: inherit;\n\n &:focus {\n border: none;\n outline: none;\n box-shadow: none;\n }\n`;\n\nconst SearchButton = styled(Button)`\n border-radius: 100px;\n\n &:hover {\n background-color: ${colors.gray85};\n }\n`;\n\nconst SearchResultsMenu = styled(DropdownMenu)`\n position: absolute;\n left: 0;\n right: 0;\n max-height: 650px;\n overflow-y: auto;\n`;\n\nconst SearchBar = ({ styledSearch }) => {\n const SEARCH_TERM_THRESHOLD = 2;\n const i18n = useI18nContext();\n const { searchTerm, setSearchTerm, appSearchResults, isLoading } =\n useSearch();\n const searchRef = useRef();\n\n useEffect(() => {\n const handleClickOutside = (event) => {\n if (searchRef.current && !searchRef.current.contains(event.target)) {\n setSearchTerm('');\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [setSearchTerm]);\n\n return (\n \n \n }\n size=\"md\"\n aria-label=\"Search\"\n variant=\"tertiary\"\n color={colors.black}\n />\n setSearchTerm(e.target.value)}\n />\n \n {searchTerm.length > SEARCH_TERM_THRESHOLD && (\n \n {isLoading ? (\n \n {i18n.t('labels.searchLoading')}\n \n ) : (\n \n )}\n \n )}\n \n );\n};\n\nSearchBar.propTypes = {\n styledSearch: PT.shape({\n backgroundColor: PT.string,\n hoverColor: PT.string,\n }),\n};\n\nexport default SearchBar;\n","import React from 'react';\nimport { Help } from '@procore/core-icons';\nimport styled from 'styled-components';\nimport {\n Box,\n Grid,\n OverlayTrigger,\n Typography,\n useI18nContext,\n Button,\n colors,\n} from '@procore/core-react';\nimport { DropdownMenu, UnstyledLink } from '@/react/styles';\nimport { NAVIGATION_MENU_ITEMS } from '@/react/consts';\n\nconst InfoButton = styled(Button)`\n border-radius: 100px;\n background-color: ${colors.gray96};\n`;\n\nconst MenuTile = styled(Box)`\n background-color: ${colors.gray96};\n width: 124px;\n height: 124px;\n border-radius: 8px;\n text-align: center;\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${colors.gray90};\n }\n`;\n\nconst SupportMenu = () => {\n const ITEMS_PER_ROW = 2;\n const i18n = useI18nContext();\n\n // group menuItems into pairs for 2x3 layout using\n const menuRows = NAVIGATION_MENU_ITEMS.reduce((rows, item, idx) => {\n if (idx % ITEMS_PER_ROW === 0) {\n rows.push([item]);\n } else {\n rows[rows.length - 1].push(item);\n }\n return rows;\n }, []);\n\n const renderMenuItem = (item, key) => (\n \n \n \n {item.icon}\n \n {i18n.t(item.label)}\n \n \n \n \n );\n\n const renderMenu = (\n \n \n {menuRows.map((row, rowIndex) => {\n const rowKey = `row_${rowIndex}`;\n return (\n \n {row.map((item, itemIndex) =>\n renderMenuItem(item, `row_${itemIndex}`)\n )}\n \n );\n })}\n \n \n );\n\n return (\n \n \n }\n size=\"lg\"\n aria-label={i18n.t('ariaLabels.supportButton')}\n variant=\"secondary\"\n />\n \n \n );\n};\n\nexport default SupportMenu;\n","import React, { useMemo, createContext, useContext } from 'react';\nimport PT from 'prop-types';\n\nconst defaultProps = {\n appDetails: {\n app: {},\n user: {},\n installationRequest: {\n apiPath: '',\n present: false,\n },\n companyInstallationRequestsEnabled: false,\n companyName: '',\n version: '',\n metricsData: {},\n sectionNavEnabled: false,\n },\n header: {},\n listing: {\n apps: [],\n categories: [],\n query: '',\n },\n};\n\nconst AppContext = createContext();\n\nexport const useAppContext = () => useContext(AppContext);\n\nexport const AppContextProvider = ({\n children,\n appDetails,\n listing,\n header,\n}) => {\n const contextValue = useMemo(\n () => ({\n ...defaultProps, // Fill any missing values from defaultProps\n appDetails,\n header,\n listing,\n }),\n [appDetails, header, listing]\n );\n\n return (\n {children}\n );\n};\n\nAppContextProvider.propTypes = {\n children: PT.node.isRequired,\n appDetails: PT.shape({\n app: PT.shape({\n built_by: PT.string,\n email: PT.string,\n name: PT.string,\n html: PT.string,\n installed: PT.bool,\n pricing: PT.bool,\n create_lead: PT.bool,\n contact_us_email: PT.string,\n search_description: PT.string,\n small_logo: PT.shape({\n url: PT.string,\n }),\n small_logo_url: PT.string,\n website: PT.string,\n category_names: PT.arrayOf(PT.string),\n components: PT.arrayOf(PT.string),\n developer_app_id: PT.string,\n direct_installable: PT.bool,\n install_path: PT.string,\n price_button: PT.string,\n screenshots: PT.arrayOf(\n PT.shape({\n url: PT.string,\n })\n ),\n regions: PT.arrayOf(PT.string),\n countries: PT.shape({}),\n security_questionnaire_visible: PT.bool,\n security_questionnaire_document: PT.string,\n seller: PT.string,\n }),\n installationRequest: PT.shape({\n apiPath: PT.string,\n present: PT.bool,\n }).isRequired,\n companyName: PT.string.isRequired,\n user: PT.shape({\n email: PT.string,\n isCompanyAdmin: PT.bool.isRequired,\n isSignedIn: PT.bool.isRequired,\n }).isRequired,\n companyInstallationRequestsEnabled: PT.bool,\n metricsData: PT.shape({}),\n wistiaId: PT.string,\n }),\n header: PT.shape({}).isRequired,\n listing: PT.shape({\n apps: PT.shape([]),\n categories: PT.shape([]),\n query: PT.string,\n }),\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport {\n Avatar,\n Box,\n colors,\n Grid,\n LinkButton,\n OverlayTrigger,\n spacing,\n Typography,\n useI18nContext,\n} from '@procore/core-react';\nimport { Building, Import, Person } from '@procore/core-icons';\nimport { useAppContext } from '@/react/context/AppContext';\nimport { DropdownMenu, Divider, UnstyledLink } from '@/react/styles';\n\nconst StyledBox = styled(Box)`\n background-color: ${colors.gray94};\n border-radius: 10px;\n cursor: pointer;\n\n &:hover {\n background-color: ${colors.gray90};\n }\n`;\n\nconst CompanyName = styled(Typography)`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100px;\n`;\n\nconst MenuItem = styled(Box)`\n border-radius: ${spacing.xs}px;\n text-align: center;\n\n &:hover {\n background-color: ${colors.gray94};\n }\n`;\n\nconst ProfileBox = () => {\n const i18n = useI18nContext();\n const { header } = useAppContext();\n const {\n currentCompany,\n currentUser,\n isSignedIn,\n signInPath,\n signOutPath,\n changeCompanyPath,\n } = header;\n\n if (!isSignedIn) {\n return (\n \n {i18n.t('labels.login')}\n \n );\n }\n\n const renderMenu = (\n \n \n \n \n \n \n {currentUser.email}\n \n \n \n \n \n \n \n {i18n.t('navbar.companySwitch')}\n \n \n \n \n \n \n \n \n {i18n.t('navbar.logout')}\n \n \n \n \n \n \n \n );\n\n return (\n \n \n \n } />\n \n \n \n {currentCompany.name}\n \n \n \n \n );\n};\n\nexport default ProfileBox;\n","import { useState, useEffect } from 'react';\n\nexport const useMediaQuery = (query) => {\n const [matches, setMatches] = useState(window.matchMedia(query).matches);\n\n useEffect(() => {\n const mediaQueryList = window.matchMedia(query);\n\n const handleChange = () => setMatches(mediaQueryList.matches);\n mediaQueryList.addEventListener('change', handleChange);\n\n // Cleanup listener on unmount\n return () => mediaQueryList.removeEventListener('change', handleChange);\n }, [query]);\n\n return matches;\n};\n","import React from 'react';\n\nconst MobileLogo = () => {\n return (\n \n \n \n \n );\n};\n\nexport default MobileLogo;\n","import React from 'react';\nimport PT from 'prop-types';\nimport { Box, Button, colors, Typography } from '@procore/core-react';\nimport { Clear } from '@procore/core-icons';\nimport styled from 'styled-components';\nimport { UnstyledLink } from '@/react/styles';\nimport MobileLogo from '../ProcoreLogo/MobileLogo';\n\nconst HeaderContainer = styled(Box)`\n background-color: ${colors.white};\n`;\n\nconst MenuHeader = ({ toggleMenu, marketplaceBasePath, title }) => (\n \n \n \n \n \n {title}\n \n \n \n }\n onClick={toggleMenu}\n data-testid=\"close-menu\"\n />\n \n);\n\nMenuHeader.propTypes = {\n toggleMenu: PT.func.isRequired,\n marketplaceBasePath: PT.string.isRequired,\n title: PT.string.isRequired,\n};\n\nexport default MenuHeader;\n","import React from 'react';\nimport {\n Box,\n Typography,\n Flex,\n colors,\n useI18nContext,\n LinkButton,\n} from '@procore/core-react';\nimport styled from 'styled-components';\nimport { Divider } from '@/react/styles';\nimport { NAVIGATION_MENU_ITEMS } from '@/react/consts';\n\nconst BodyContainer = styled(Box)`\n background-color: ${colors.gray96};\n flex-grow: 1;\n`;\n\nconst MenuItem = styled(LinkButton)`\n align-items: center;\n justify-content: flex-start;\n`;\n\nconst MenuBody = () => {\n const i18n = useI18nContext();\n return (\n \n \n \n {i18n.t('navbar.supportCenter')}\n \n \n\n \n\n \n {NAVIGATION_MENU_ITEMS.map((item) => (\n \n \n {i18n.t(item.label)}\n \n \n ))}\n \n \n );\n};\n\nexport default MenuBody;\n","import React from 'react';\nimport PT from 'prop-types';\nimport {\n LinkButton,\n Typography,\n Box,\n Avatar,\n useI18nContext,\n colors,\n} from '@procore/core-react';\nimport { Building, Import, Person } from '@procore/core-icons';\nimport styled from 'styled-components';\n\nconst FullButton = styled(LinkButton)`\n align-items: center;\n justify-content: flex-start;\n`;\n\nconst UserSection = ({\n currentUser,\n currentCompany,\n changeCompanyPath,\n signOutPath,\n}) => {\n const i18n = useI18nContext();\n return (\n \n \n \n } />\n \n {currentUser.email}\n \n\n \n {currentCompany.name}\n \n\n \n \n \n \n \n {i18n.t('navbar.companySwitch')}\n \n \n \n\n \n \n \n \n {i18n.t('navbar.logout')}\n \n \n \n \n \n );\n};\n\nUserSection.propTypes = {\n currentUser: PT.shape({ email: PT.string }).isRequired,\n currentCompany: PT.shape({ name: PT.string }).isRequired,\n changeCompanyPath: PT.string.isRequired,\n signOutPath: PT.string.isRequired,\n};\n\nexport default UserSection;\n","import React from 'react';\nimport PT from 'prop-types';\nimport { Box, colors, LinkButton, useI18nContext } from '@procore/core-react';\nimport styled from 'styled-components';\nimport UserSection from './UserSection';\n\nconst FooterContainer = styled(Box)`\n background-color: ${colors.white};\n border-top: 1px solid ${colors.gray90};\n`;\n\nconst MenuFooter = ({\n isSignedIn,\n signInPath,\n currentUser,\n currentCompany,\n changeCompanyPath,\n signOutPath,\n}) => {\n const i18n = useI18nContext();\n\n return (\n \n {!isSignedIn ? (\n \n {i18n.t('labels.login')}\n \n ) : (\n \n )}\n \n );\n};\n\nMenuFooter.propTypes = {\n isSignedIn: PT.bool.isRequired,\n signInPath: PT.string.isRequired,\n currentUser: PT.shape({}),\n currentCompany: PT.shape({}),\n changeCompanyPath: PT.string,\n signOutPath: PT.string,\n};\nexport default MenuFooter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Box, colors, useI18nContext } from '@procore/core-react';\nimport styled from 'styled-components';\nimport { useAppContext } from '@/react/context/AppContext';\nimport MenuHeader from './MenuHeader';\nimport MenuBody from './MenuBody';\nimport MenuFooter from './MenuFooter';\n\nconst MenuWrapper = styled(Box)`\n background-color: ${colors.white};\n height: 100vh;\n`;\n\nconst MobileMenu = ({ toggleMenu }) => {\n const i18n = useI18nContext();\n const { header } = useAppContext();\n const {\n marketplaceBasePath,\n signInPath,\n currentCompany,\n currentUser,\n isSignedIn,\n signOutPath,\n changeCompanyPath,\n } = header;\n return (\n \n \n\n \n\n \n \n );\n};\n\nMobileMenu.propTypes = {\n toggleMenu: PropTypes.func.isRequired,\n};\n\nexport default MobileMenu;\n","import React, { useState } from 'react';\nimport PT from 'prop-types';\nimport {\n Box,\n Button,\n colors,\n spacing,\n Typography,\n useI18nContext,\n} from '@procore/core-react';\nimport styled from 'styled-components';\nimport { List } from '@procore/core-icons';\nimport ProcoreLogo from '../ProcoreLogo';\nimport SearchBar from '../SearchBar';\nimport SupportMenu from '../SupportMenu';\nimport ProfileBox from '../ProfileBox';\nimport { UnstyledLink } from '../../styles';\nimport { useAppContext } from '@/react/context/AppContext';\nimport { useMediaQuery } from '@/react/hooks/useMediaQuery';\nimport MobileLogo from '../ProcoreLogo/MobileLogo';\nimport MobileMenu from '../MobileMenu';\n\nconst StyledLogo = styled(Box)`\n width: 100%;\n`;\n\nconst Header = styled.header`\n position: sticky;\n top: 0;\n right: 0;\n left: 0;\n background-color: ${colors.white};\n border-bottom: 1px solid ${colors.gray90};\n padding: 0 ${spacing.lg}px;\n width: 100%;\n z-index: 10000;\n`;\n\nconst NavContainer = styled(Box)`\n @media (min-width: 768px) {\n flex: 1;\n }\n`;\n\nconst MobileMenuContainer = styled(Box)`\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n background-color: ${colors.white};\n box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);\n opacity: ${({ isOpen }) => (isOpen ? 1 : 0)};\n transform: ${({ isOpen }) => (isOpen ? 'scale(1)' : 'scale(0.8)')};\n transform-origin: bottom center;\n transition:\n opacity 0.15s ease,\n transform 0.25s ease;\n z-index: 10001;\n visibility: ${({ isOpen }) => (isOpen ? 'visible' : 'hidden')};\n`;\n\nconst Navbar = ({ isSearchVisible }) => {\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n const isMobile = useMediaQuery('(max-width: 768px)');\n const isTablet = useMediaQuery('(max-width: 992px)');\n const isDesktop = useMediaQuery('(max-width: 1200px)');\n const i18n = useI18nContext();\n const { header } = useAppContext();\n const { marketplaceBasePath } = header;\n\n const toggleMenu = () => setIsMenuOpen(!isMenuOpen);\n\n return (\n <>\n
\n \n \n \n {!isDesktop ? : }\n \n {i18n.t('global.appMarketplace')}\n \n \n \n\n {!isTablet && isSearchVisible && (\n \n \n \n )}\n\n {!isMobile ? (\n \n \n \n \n ) : (\n }\n onClick={toggleMenu}\n />\n )}\n \n\n {isTablet && isSearchVisible && (\n \n \n \n )}\n
\n {isMobile && (\n \n \n \n )}\n \n );\n};\n\nNavbar.propTypes = {\n isSearchVisible: PT.bool.isRequired,\n};\n\nexport default Navbar;\n","import React from 'react';\n\nconst PlayButton = () => {\n return (\n \n \n \n \n );\n};\n\nexport default PlayButton;\n","import React from 'react';\n\nimport { Box, Flex, FlexList, Typography } from '@procore/core-react';\nimport PT from 'prop-types';\nimport styled from 'styled-components';\nimport Fuse from 'fuse.js';\nimport { FUSE_CONFIG } from '@/react/shared/utils/fuseConfig';\nimport {\n ListingsAppCard,\n ListingsSidebar,\n NoResults,\n} from '@/react/components';\n\nconst SidebarWrapper = styled(Box)`\n @media (min-width: 1001px) {\n flex: 0 1 20%;\n }\n\n @media (max-width: 1000px) {\n display: none;\n }\n`;\n\nconst ListingsAppsWrapper = styled(Box)`\n @media (min-width: 1001px) {\n flex: 0 1 80%;\n }\n\n @media (max-width: 1000px) {\n flex: 1 0 100%;\n }\n`;\n\nconst AppsNotFoundWrapper = styled(Flex)`\n flex: 0 1 80%;\n margin-left: auto;\n margin-right: auto;\n`;\n\n// Core React Flexlist removes margin on last child,\n// which causes weird wrapping in our case here.\nconst FlexListMarginChild = styled(FlexList)`\n & > *:last-child {\n margin-right: 32px !important;\n }\n`;\n\nconst ListingsIndex = ({ apps, categories, query }) => {\n apps\n .filter((app) => app.name.startsWith('Arcoro'))\n .map(\n (app) =>\n (app.search_description = app.search_description.replace(/^/, 'HR '))\n );\n\n const fuse = new Fuse(apps, FUSE_CONFIG);\n const listings = query\n ? fuse.search(query).map((result) => result.item)\n : apps;\n\n listings\n .filter((app) => app.name.startsWith('Arcoro'))\n .map(\n (app) =>\n (app.search_description = app.search_description.replace(/^HR /, ''))\n );\n\n return (\n \n {categories.length > 0 && (\n \n \n \n )}\n {listings.length > 0 ? (\n \n \n {listings.map((listing) => (\n \n ))}\n \n \n ) : (\n \n \n \n \n \n )}\n \n );\n};\n\nListingsIndex.propTypes = {\n apps: PT.arrayOf(\n PT.shape({\n image_url: PT.string.isRequired,\n search_description: PT.string.isRequired,\n components: PT.arrayOf(PT.string).isRequired,\n slug: PT.string.isRequired,\n name: PT.string.isRequired,\n })\n ).isRequired,\n query: PT.string,\n categories: PT.arrayOf(\n PT.shape({\n name: PT.string.isRequired,\n slug: PT.string.isRequired,\n type: PT.string.isRequired,\n })\n ).isRequired,\n};\n\nexport default ListingsIndex;\n","import axios from 'axios';\n\nconst appInstallPost = (app) =>\n axios({\n method: 'post',\n url: '/apps/app_installation',\n data: {\n app,\n },\n headers: {\n 'X-CSRF-TOKEN': document.querySelector('meta[name=\"csrf-token\"]').content,\n },\n });\n\nexport { appInstallPost };\n","/* eslint-disable */\nimport React, { useEffect, useState } from 'react';\nimport {\n Box,\n Button,\n Card,\n Flex,\n LinkButton,\n Grid,\n H1,\n H3,\n Link,\n P,\n Popover,\n} from '@procore/core-react';\nimport { ChevronDown, ChevronUp, Info } from '@procore/core-icons';\nimport PT from 'prop-types';\nimport Slider from 'react-slick';\nimport trackEvent from '../../../../scripts/analytics';\nimport * as Styles from '@/react/styles';\nimport {\n WistiaExtract,\n VersionHistory,\n TopNavHeader,\n InstallRequestButton,\n ContactForm,\n} from '@/react/components';\nimport { appInstallPost } from '@/react/api';\n\nconst componentMap = {\n iframe: 'Embedded',\n fullscreen: 'Embedded',\n sidepanel: 'Embedded',\n};\n\nconst ListingsShow = ({\n app,\n installationRequest,\n companyInstallationRequestsEnabled,\n companyName,\n user,\n headerProps,\n version,\n}) => {\n const {\n built_by,\n email,\n name,\n html,\n installed,\n pricing,\n contact_us_email,\n create_lead,\n search_description,\n small_logo,\n small_logo_url,\n website,\n category_names,\n components,\n developer_app_id,\n direct_installable,\n install_path,\n price_button,\n screenshots,\n regions,\n countries,\n versioning_history,\n new_draft_preview,\n security_badge,\n security_questionnaire_document,\n } = app;\n\n const filteredComponents =\n components?.map((component) => componentMap[component]).filter(Boolean) ||\n {};\n\n const [expanded, setExpanded] = useState(false);\n const toggleExpanded = () => setExpanded(!expanded);\n const sendAnalytics = (\n action,\n category,\n label,\n procoreLabel,\n procoreAdditionalFields,\n gtagValue\n ) => {\n if (typeof gtag !== 'undefined') {\n gtag('event', action, {\n event_category: category,\n event_label: label,\n gtagValue,\n });\n }\n trackEvent(`marketplace.apps.${procoreLabel}`, {\n app_name: name,\n ...procoreAdditionalFields,\n });\n };\n\n const colWidthsContent = { tabletLg: 8, tabletMd: 12 };\n const colWidthSidebar = { tabletLg: 4, tabletMd: 12 };\n\n const [parsedHTML, setParsedHTML] = useState({\n video: null,\n description: null,\n });\n const [imageModalOpen, setImageModalOpen] = useState(false);\n const [currentImageUrl, setCurrentImageUrl] = useState('');\n const sliderSettings = {\n focusOnSelect: false,\n dots: true,\n infinite: true,\n speed: 500,\n slidesToShow: 1,\n slidesToScroll: 1,\n fade: true,\n adaptiveHeight: true,\n beforeChange: (curr, index) => {\n sendAnalytics('click', 'Media Slider', index, 'media_slider.changed', {\n index,\n });\n setCurrentImageUrl(\n index === 0 && parsedHTML.video\n ? ''\n : screenshots[parsedHTML.video ? index - 1 : index].url\n );\n },\n prevArrow: (\n \n \"\"\n \n ),\n nextArrow: (\n \n \"\"\n \n ),\n };\n\n /**\n * Extracts Wistia video and script from HTML passed in from dev portal\n * so we can render it in the media slider\n * This can be removed if we migrate away from using raw HTML\n */\n\n useEffect(() => {\n WistiaExtract(html, setParsedHTML);\n }, []);\n\n const getActionButton = () => {\n if (installed) {\n return ;\n }\n\n if (direct_installable) {\n if (!user.isSignedIn) {\n return (\n \n \n \n \n );\n }\n\n if (!user.isCompanyAdmin) {\n if (companyInstallationRequestsEnabled) {\n return (\n \n );\n }\n const content = (\n \n \n

You must be a company admin to install an app

\n
\n
\n );\n return (\n \n {() => (\n \n \n \n )}\n \n );\n }\n if (install_path) {\n return (\n {\n sendAnalytics(\n 'click',\n 'Button',\n 'Install App',\n 'install_button.clicked'\n );\n appInstallPost(app);\n window.location = install_path;\n }}\n >\n Install App\n \n );\n }\n }\n return null;\n };\n\n const renderSecurityCertifiedSection = () => (\n <>\n \n \n {expanded ? : }\n \n \n {expanded && (\n <>\n

\n Partner Security Review | Self-Certified Responses\n

\n

\n The following partner has supplied answers to a set of standard\n questions, self-certifying their adherence to specific security\n requirements.\n \n {' '}View the partner's answers here.\n \n
\n
\n \n The partner is solely responsible for the accuracy of the\n information provided.\n \n \n {' '}Learn more about the badge here.\n \n

\n \n )}\n
\n
\n \n );\n\n const renderRegions = () => {\n ((countries && Object.keys(countries).length > 0) ||\n regions?.length > 0) && (\n <>\n

\n Available in {}\n \n sendAnalytics(\n 'click',\n 'Link',\n 'Supported Regions FAQ',\n 'supported_regions_faq.clicked'\n )\n }\n href=\"https://support.procore.com/faq/what-are-supported-regions-on-apps\"\n style={{ color: 'gray' }}\n target=\"_blank\"\n >\n \n \n

\n {regions.map((region, idx) => (\n \n

{region}

\n
\n ))}\n {Object.keys(countries).map((region) => {\n const rc = countries[region];\n return regions.includes(region) ? null : (\n <>\n

\n \n {region} ({rc.length})\n \n

\n \n
    \n {rc.map((regionCountry) => (\n
  • {regionCountry}
  • \n ))}\n
\n \n \n );\n })}\n \n );\n };\n\n return (\n <>\n {screenshots?.length > 0 && (\n setImageModalOpen(false)}\n >\n \n \n setImageModalOpen(false)}\n />\n \n \n \n \n )}\n\n \n \n \n \n \n \n \n \n \n \n \n \n

{name}

\n

\n {search_description}\n

\n
\n
\n
\n \n \n {getActionButton()}\n {contact_us_email || create_lead ? (\n \n ) : (\n \n sendAnalytics(\n 'click',\n 'Link',\n 'Learn How',\n 'learn_how.clicked'\n )\n }\n target=\"_blank\"\n >\n Learn How\n \n )}\n
\n \n \n \n \n \n \n {parsedHTML.video}\n {screenshots?.length === 0 && (\n

\n \n

\n )}\n {screenshots?.map((slide) => (\n setImageModalOpen(true)}\n />\n ))}\n
\n
\n \n \n \n
\n \n \n \n {security_badge && renderSecurityCertifiedSection()}\n \n {filteredComponents.length > 0 && (\n <>\n

Type

\n

{filteredComponents.join(', ')}

\n \n )}\n {category_names?.length > 0 && (\n <>\n

Category

\n

{category_names.join(', ')}

\n \n )}\n {regions && renderRegions()}\n \n

Support

\n

Email

\n \n \n sendAnalytics(\n 'click',\n 'Link',\n 'Email',\n 'email.clicked'\n )\n }\n >\n {email}\n \n

\n\n

Website

\n

\n \n sendAnalytics(\n 'click',\n 'Link',\n 'Website',\n 'website.clicked'\n )\n }\n >\n {built_by || name}\n \n

\n
\n
\n
\n \n \n \n \n

Ask the Community

\n

\n Join the\n \n sendAnalytics(\n 'click',\n 'Link',\n 'Integrations',\n 'integrations.clicked'\n )\n }\n >\n {' '}\n integrations discussion{' '}\n \n in the\n \n sendAnalytics(\n 'click',\n 'Link',\n 'Community',\n 'community.clicked'\n )\n }\n >\n {' '}\n Procore Community{' '}\n \n

\n
\n
\n
\n
\n
\n \n \n
\n \n \n );\n};\n\nListingsShow.propTypes = {\n app: PT.shape({\n built_by: PT.string.isRequired,\n email: PT.string.isRequired,\n name: PT.string.isRequired,\n html: PT.string.isRequired,\n installed: PT.bool.isRequired,\n pricing: PT.bool.isRequired,\n create_lead: PT.bool,\n contact_us_email: PT.string,\n search_description: PT.string.isRequired,\n small_logo: PT.shape({\n url: PT.string,\n }).isRequired,\n small_logo_url: PT.string,\n website: PT.string.isRequired,\n category_names: PT.arrayOf(PT.string).isRequired,\n components: PT.arrayOf(PT.string).isRequired,\n developer_app_id: PT.string,\n direct_installable: PT.bool,\n install_path: PT.string,\n price_button: PT.string,\n screenshots: PT.arrayOf(\n PT.shape({\n url: PT.string.isRequired,\n })\n ),\n regions: PT.arrayOf(PT.string),\n countries: PT.shape({}),\n security_badge: PT.bool,\n security_questionnaire_document: PT.string,\n }),\n installationRequest: PT.shape({\n apiPath: PT.string,\n present: PT.bool,\n }),\n companyName: PT.string.isRequired,\n user: PT.shape({\n email: PT.string,\n isCompanyAdmin: PT.bool.isRequired,\n isSignedIn: PT.bool.isRequired,\n }).isRequired,\n companyInstallationRequestsEnabled: PT.bool,\n new_draft_preview: PT.bool,\n metricsData: PT.shape({}),\n};\n\nListingsShow.defaultProps = {\n app: {\n countries: {},\n developer_app_id: -1,\n direct_installable: false,\n install_path: '',\n price_button: false,\n regions: [],\n screenshots: [],\n small_logo_url: '',\n versioning_history: null,\n new_draft_preview: false,\n security_badge: false,\n security_questionnaire_document: '',\n },\n installationRequest: {\n apiPath: '',\n present: false,\n },\n companyInstallationRequestsEnabled: false,\n};\n\nexport default ListingsShow;\n","import { useEffect, useRef, useState, useCallback } from 'react';\n\n/**\n * Custom hook to check if an element is within the viewport.\n *\n * @param {number} offset - Number of pixels for offset from the top.\n * @param {boolean} initialVisibility - Initial visibility state, default is true.\n * @returns {[boolean, React.RefObject]} isVisible and ref to attach to the element.\n */\nexport const useVisibility = (offset = 0, initialVisibility = true) => {\n const [isVisible, setIsVisible] = useState(initialVisibility);\n const elementRef = useRef(null);\n\n // Avoid re-creating it on each render\n const checkVisibility = useCallback(() => {\n if (!elementRef.current) {\n return;\n }\n\n const { top, bottom } = elementRef.current.getBoundingClientRect();\n const withinViewport =\n top + offset >= 0 && bottom - offset <= window.innerHeight;\n setIsVisible(withinViewport);\n }, [offset]);\n\n // Setup event listeners for scroll and resize\n useEffect(() => {\n checkVisibility(); // Initial check\n window.addEventListener('scroll', checkVisibility);\n window.addEventListener('resize', checkVisibility);\n\n // Cleanup event listeners\n return () => {\n window.removeEventListener('scroll', checkVisibility);\n window.removeEventListener('resize', checkVisibility);\n };\n }, [checkVisibility]);\n\n return [isVisible, elementRef];\n};\n","import React, { useEffect, useState } from 'react';\nimport { Box, Flex, Typography } from '@procore/core-react';\nimport PT from 'prop-types';\nimport styled from 'styled-components';\nimport Fuse from 'fuse.js';\nimport axios from 'axios';\nimport { FUSE_CONFIG } from '@/react/shared/utils/fuseConfig';\nimport { useVisibility } from '@/react/hooks/useVisibility';\nimport { TopNavHeader, TopNavSearchForm } from '@/react/components';\n\nconst Hero = styled(Flex)`\n background: url(/images/marketplace_header.png) no-repeat top center;\n background-size: cover;\n height: 400px;\n`;\n\nconst MarketplaceIndex = ({ headerProps }) => {\n const [isHeroSearchVisible, heroSearchElement] = useVisibility(50);\n const [searchTerm, setSearchTerm] = useState('');\n const [fuse, setFuse] = useState({\n search: (term) => setSearchTerm(term),\n });\n const [searchDataState, setSearchDataState] = useState({\n loading: true,\n data: [],\n });\n\n useEffect(() => {\n axios.get('/search_data').then((res) => {\n res.data\n .filter((app) => app.name.startsWith('Arcoro'))\n .map(\n (app) =>\n (app.search_description = app.search_description.replace(\n /^/,\n 'HR '\n ))\n );\n setSearchDataState({\n loading: false,\n data: res.data,\n });\n setFuse(new Fuse(res.data, FUSE_CONFIG));\n });\n }, []);\n\n return (\n <>\n \n \n \n \n \n Explore integrations for Procore\n \n \n \n {isHeroSearchVisible && (\n \n )}\n \n \n \n \n );\n};\n\nMarketplaceIndex.propTypes = {\n headerProps: PT.shape({}).isRequired,\n};\n\nexport default MarketplaceIndex;\n","import { createI18njs } from '@procore/core-i18n-js';\n\nexport default createI18njs({\n locale: 'en',\n translations: {\n en: {\n navbar: {\n app: 'Build an App',\n community: 'Community',\n partner: 'Become a Partner',\n idea: 'Post an Idea',\n webinars: 'Webinars',\n faq: 'FAQ',\n companySwitch: 'Change Company',\n logout: 'Logout',\n supportCenter: 'Support Center',\n },\n hero: {\n tagline: 'Explore Integrations for Procore',\n },\n header: {\n builtBy: 'Built by',\n builtByOverlay: '%{value} developed this app.',\n supportedBy: 'Supported by',\n supportedByOverlay: '%{value} provides support for this app.',\n installs: 'Installs',\n installsOverlay:\n 'This app is installed by at least %{value} companies.',\n securityBadge: 'Security & Trust',\n beta: 'Beta',\n },\n securityBadge: {\n title: 'Security & Trust Partner Self-Certified',\n partnerAnswered:\n 'The following Partner has supplied answers to a set of standard questions, self-certifying their adherence to specific security requirements.',\n link: 'View the Partner’s answers here.',\n responsibility:\n 'The Partner is solely responsible for the accuracy of the information provided.',\n learnMore: 'Learn more about the badge here.',\n },\n appDetails: {\n loginToInstall: 'Login to Install',\n mustBeAdmin: 'You must be a company admin to install an app',\n installApp: 'Install App',\n noHelpfulLinks: 'The partner did not provide any helpful links.',\n noRegions: 'The partner did not provide this information.',\n partnerSecurityReview:\n 'Partner Security Review | Self-Certified Responses',\n partnerSecurityDescription:\n 'The following partner has supplied answers to a set of standard questions, self-certifying their adherence to specific security requirements.',\n partnerSecurityLink: \"View the partner's answers here.\",\n partnerSecurityBadge:\n 'The partner is solely responsible for the accuracy of the information provided.',\n partnerSecurityBadgeLink: 'Learn more about the badge here.',\n pricing: {\n title: 'Pricing',\n titleNoPricing: 'Pricing Information Not Available',\n soldBy: 'Sold By ',\n website: 'Visit Pricing Website',\n faqs: 'FAQs',\n description:\n \"Our application offers flexible pricing plans to suit the needs of every user. Whether you are an individual, a small business, or a large enterprise, we have a plan that fits your budget and requirements. Each plan includes a variety of features designed to help you get the most out of our application. Explore our pricing options and choose the one that's right for you.\",\n descriptionNoPricing:\n 'The pricing details for this app have not been specified. ',\n contactPartner: 'Contact the partner for more information.',\n faqsHeaderPart1:\n 'These standard questions are answered by our partners to ensure transparency. Procore isn’t responsible for the pricing details, please ',\n faqsHeaderPart2: 'contact the partner',\n faqsHeaderPart3: ' for more detailed information.',\n subscriptionRequired: {\n description:\n 'Does the app require an additional subscription to another system?',\n yes: 'Yes, an additional subscription is required.',\n no: 'No, an additional subscription is not required.',\n },\n thirdPartyConnectorRequired: {\n description:\n 'Is there a third-party connector needed for the integration, or is it included in the subscription?',\n yes: 'Yes, a third-party connector is needed for the integration.',\n no: 'No, a third-party connector is not needed for the integration.',\n },\n freeTrialOffered: {\n description: 'Does the app offer a free trial?',\n yes: 'Yes, a free trial is available.',\n no: 'No, a free trial is not available.',\n },\n },\n security: {\n informationNotProvided:\n 'Security & Compliance Information Not Provided',\n informationNotProvidedDetails:\n 'The Partner did not provide the Security & Compliance information.',\n review: 'Partner Security Review | Self-Certified Responses',\n reviewDetails:\n 'This partner has provided answers to a set of standard questions, self-certifying their adherence to specific security requirements. The Partner is solely responsible for the accuracy of the information provided.',\n aboutApp: 'About %{app}',\n legalName: 'COMPANY LEGAL NAME',\n headquarters: 'HEADQUARTERS LOCATION',\n privacy: 'Privacy & Data Governance',\n informationSecurity: 'Information Security Practices',\n applicationSecurity: 'Application Security / Features',\n dataProcessingLocations: 'Data Processing Locations',\n countries: 'COUNTRIES',\n subprocessors:\n 'Does your company engage subprocessors / vendors (e.g. cloud hosting providers, backup vendors, service providers, etc.) (“Subprocessors”) to process or store customer data?',\n subprocessorsPersonalData:\n 'Do you or your subprocessors process or store sensitive personal data as part of the services/products you provide?',\n dedicatedFunction:\n 'Does your company have a dedicated security function (e.g., security employees and management)?',\n audits:\n 'Does your company undertake audits or other reviews to ensure security controls are implemented and operating effectively?',\n hasAudits:\n 'Yes. Regular internal audits and external reviews are conducted to ensure compliance.',\n accredidations:\n 'Are you accredited to any relevant security standards?',\n penTesting:\n 'Do you undertake penetration testing (or similar technical security testing, code review or vulnerability assessment); and are you able to provide copies of results/findings?',\n dataLoss:\n 'Do you have mechanisms to notify Procore and customers in case of a security breach or data loss?',\n vulnerabilityDisclosure:\n 'Do you have a vulnerability disclosure program?',\n vulnerabilityDisclosureProgram: 'Vulnerability Disclosure Program',\n disclosureUrl: 'URL to Public Facing Program',\n bugBounty: 'Do you have a bug bounty program?',\n aesEncryption:\n 'Is customer data encrypted at rest a minimum standard of AES-256 or equivalent?',\n tlsEncryption:\n 'Is customer data encrypted in transit a minimum standard of TLS 1.2?',\n ssoSupported: 'Does your application support Single Sign On (SSO)?',\n samlSupported:\n 'Does your application support Security Assertion Markup Language (SAML)?',\n mfaRequired:\n 'Is multifactor authentication (MFA) required for back-end system access used to process customer data?',\n pfasSupported:\n 'Does your integration support authenticated requests to Procore File Access Service (FAS)?',\n contactMessage: 'Yes. For security issues, contact ',\n no: 'No',\n yes: 'Yes',\n technicalMeasures:\n 'What technical measures does your company implement to protect customer personal data?',\n securityTeam: 'SECURITY TEAM',\n bugBountyProgram: 'BUG BOUNTY PROGRAM',\n vulnerabilityProgram: 'SECURITY VULNERABILITY PROGRAM',\n standards: 'STANDARDS',\n },\n media: {\n titleNoMedia: 'No Media Content To Display',\n descriptionNoMedia:\n 'No media content has been uploaded yet. Upload content to enhance your marketplace listing. ',\n },\n toolsInformation:\n 'Tools information not declared by the Partner. This app may not require specific Procore tools for its proper functionality. If you have any questions, ',\n toolsInformationLink:\n 'please contact the partner for more information.',\n labels: {\n email: 'EMAIL',\n website: 'WEBSITE',\n },\n titles: {\n security: 'Security & Compliance',\n category: 'Categories',\n community: 'Ask the Community',\n contact: 'Contact',\n email: 'Email',\n features: 'Features',\n functionality: 'Functionality',\n helpfulLinks: 'Helpful Links',\n howItWorks: 'How it Works',\n overview: 'Overview',\n requirements: 'Integration Requirements',\n summary: 'Integration Summary',\n support: 'Support',\n tools: 'Required Procore Tools',\n type: 'Type',\n website: 'Website',\n embeddedType: 'Embedded Display Type',\n appType: 'App Type',\n availableIn: 'Available in',\n version: 'Version',\n joinCommunity: {\n join: 'Join the',\n integrations: 'integrations discussion',\n inThe: 'in the',\n community: 'Procore Community',\n },\n displayType: 'Embedded Display Type',\n faqs: 'FAQs',\n },\n sideBar: {\n embeddedTypePopover: {\n fullscreen:\n 'Occupies the entire Procore window, providing an immersive and comprehensive interface for the app.',\n sidepanel:\n 'Displays the app in a fixed-width panel on the right side of the Procore interface, ideal for contextual tools and quick access.',\n both: 'This app offers the flexibility in how it is display within Procore, either occupying the entire window for an immersive experience and in a fixed-width side panel for quick, contextual access.',\n },\n embeddedType: 'Learn more about display types here.',\n displayType: {\n iframe: 'Full Screen',\n fullscreen: 'Full Screen',\n sidepanel: 'Side Panel',\n },\n appType: {\n embedded: 'Embedded',\n dataConnector: 'Data Connector',\n dataConnectorAndEmbedded: 'Data Connector and Embedded',\n },\n appTypePopover:\n 'This app utilizes Procore APIs to offer seamless data connection integration and supports an immersive experience through an embedded interface within Procore, providing streamlined workflows and comprehensive data exchange capabilities.',\n appTypeLink: 'Learn more about app types here.',\n returnToListing: 'Return to Listing',\n regionModal: {\n title: 'Country & Region Availability',\n trigger: 'View Available Regions',\n },\n historyModal: {\n title: 'Version History',\n trigger: 'View App History',\n noChangelog: 'No description provided',\n },\n },\n sectionNav: {\n overview: 'Overview',\n functionality: 'Functionality',\n requirements: 'Requirements',\n support: 'Support',\n security: 'Security & Compliance',\n pricing: 'Pricing',\n },\n },\n contactUs: {\n formDescription:\n 'Please fill out the form below. A representative will be in touch with you shortly with more information on pricing and how to get started.',\n thanksForVisiting:\n 'Thanks for visiting our App Marketplace and requesting information on',\n submitted:\n 'We have received your request and a representative will contact you shortly.',\n issues:\n 'If you are having issues viewing the form, please disable your Adblock.',\n mustLogIn: 'Log in to contact the Partner',\n },\n labels: {\n myAccount: 'My Account',\n login: 'Login',\n searchInput: 'Search for Apps',\n searchLoading: 'Searching...',\n noResults: 'No results found',\n viewAll: 'View All Results',\n learnHow: 'Learn how',\n contactUs: 'Contact Us',\n installed: 'Installed',\n thankYou: 'Thank You',\n close: 'Close',\n },\n ariaLabels: {\n supportButton: 'Open Support Menu',\n account: 'My Account',\n },\n global: {\n appMarketplace: 'App Marketplace',\n },\n },\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Box,\n Grid,\n Flex,\n Typography,\n H1,\n H2,\n H3,\n P,\n Link,\n colors,\n spacing,\n useI18nContext,\n} from '@procore/core-react';\nimport { ArrowRight } from '@procore/core-icons';\nimport * as Styles from '@/react/styles';\n\nconst PricingSection = ({\n pricingDescription,\n subscriptionRequired,\n connectorRequired,\n hasTrials,\n pricingUrl,\n email,\n soldBy,\n}) => {\n const i18n = useI18nContext();\n\n return (\n <>\n {!pricingDescription && (\n \n \n \n

\n {i18n.t('appDetails.pricing.titleNoPricing')}\n

\n

\n {i18n.t('appDetails.pricing.descriptionNoPricing')}\n \n \n {i18n.t('appDetails.pricing.contactPartner')}\n \n \n

\n
\n \n )}\n\n {pricingDescription && (\n \n \n \n \n

\n {i18n.t('appDetails.pricing.title')}\n

\n \n

\n {i18n.t('appDetails.pricing.soldBy')}\n {soldBy}\n

\n

\n {pricingDescription}\n

\n {pricingUrl && (\n

\n \n {i18n.t('appDetails.pricing.website')}\n \n \n

\n )}\n
\n
\n\n \n

{i18n.t('appDetails.pricing.faqs')}

\n\n \n \n {i18n.t('appDetails.pricing.faqsHeaderPart1')}\n \n \n \n {i18n.t('appDetails.pricing.faqsHeaderPart2')}\n \n \n \n {i18n.t('appDetails.pricing.faqsHeaderPart3')}\n \n \n\n \n

\n {i18n.t(\n 'appDetails.pricing.subscriptionRequired.description'\n )}\n

\n

\n {i18n.t(\n `appDetails.pricing.subscriptionRequired.${\n subscriptionRequired ? 'yes' : 'no'\n }`\n )}\n

\n
\n\n \n\n \n

\n {i18n.t(\n 'appDetails.pricing.thirdPartyConnectorRequired.description'\n )}\n

\n

\n {i18n.t(\n `appDetails.pricing.thirdPartyConnectorRequired.${\n connectorRequired ? 'yes' : 'no'\n }`\n )}\n

\n \n\n \n\n \n

\n {i18n.t('appDetails.pricing.freeTrialOffered.description')}\n

\n

\n {i18n.t(\n `appDetails.pricing.freeTrialOffered.${\n hasTrials ? 'yes' : 'no'\n }`\n )}\n

\n
\n \n
\n \n \n )}\n \n );\n};\n\nPricingSection.propTypes = {\n pricingDescription: PropTypes.string,\n subscriptionRequired: PropTypes.bool,\n connectorRequired: PropTypes.bool,\n hasTrials: PropTypes.bool,\n pricingUrl: PropTypes.string,\n email: PropTypes.string,\n soldBy: PropTypes.string,\n};\n\nexport default PricingSection;\n","import { useState, useEffect } from 'react';\nimport sanitizeHtml from 'sanitize-html';\n\nconst sanitizeOptions = {\n allowedTags: ['a', 'li', 'ul', 'h1', 'h2', 'h3', 'div'],\n allowedAttributes: {\n a: ['href', 'style', 'target'],\n li: ['style'],\n div: ['style'],\n },\n allowedStyles: {\n '*': {\n color: [/^.*$/], // Allow any color\n },\n },\n};\n\nexport const useSanitizedString = (string) => {\n const [sanitizedString, setSanitizedString] = useState('');\n\n useEffect(() => {\n setSanitizedString(sanitizeHtml(string, sanitizeOptions));\n }, [string]);\n\n return sanitizedString;\n};\n\nexport const useSanitizedArray = (array) => {\n const [sanitizedArray, setSanitizedArray] = useState([]);\n\n useEffect(() => {\n setSanitizedArray(\n array.map((string) => sanitizeHtml(string, sanitizeOptions))\n );\n }, [array]);\n\n return sanitizedArray;\n};\n","import React from 'react';\nimport PT from 'prop-types';\nimport { Box, Flex, H1, H2, useI18nContext } from '@procore/core-react';\nimport { useSanitizedString } from '@/react/hooks/useSanitizedString';\n\nconst OverviewSection = ({ description }) => {\n const i18n = useI18nContext();\n\n const sanitizedDescription = useSanitizedString(description);\n\n return (\n \n \n

{i18n.t('appDetails.titles.overview')}

\n
\n \n

{i18n.t('appDetails.titles.summary')}

\n
\n \n \n );\n};\n\nOverviewSection.propTypes = {\n description: PT.string.isRequired,\n};\n\nexport default OverviewSection;\n","import React from 'react';\nimport PT from 'prop-types';\nimport { Box, Flex, H1, H2, Link, useI18nContext } from '@procore/core-react';\nimport { Info } from '@procore/core-icons';\nimport sanitizeHtml from 'sanitize-html';\nimport { useSanitizedArray } from '@/react/hooks/useSanitizedString';\n\nconst FunctionalitySection = ({\n howItWorks,\n features,\n requirements,\n tools,\n}) => {\n const i18n = useI18nContext();\n const sanitizedHowItWorks = sanitizeHtml(howItWorks);\n const sanitizedFeatures = useSanitizedArray(features);\n const sanitizedRequirements = useSanitizedArray(requirements);\n\n return (\n \n \n

\n {i18n.t('appDetails.titles.functionality')}\n

\n
\n\n \n

\n {i18n.t('appDetails.titles.howItWorks')}\n

\n
\n \n\n {features && (\n <>\n \n

\n {i18n.t('appDetails.titles.features')}\n

\n
\n
    \n {sanitizedFeatures.map((feature) => (\n \n
  • \n \n ))}\n
\n \n )}\n\n {requirements && (\n <>\n \n

\n {i18n.t('appDetails.titles.requirements')}\n

\n
\n
    \n {sanitizedRequirements.map((requirement) => (\n \n
  • \n \n ))}\n
\n \n )}\n\n \n

{i18n.t('appDetails.titles.tools')}

\n
\n\n {tools?.length > 0 ? (\n
    \n {tools.map((tool) => (\n \n
  • {tool}
  • \n
    \n ))}\n
\n ) : (\n \n \n \n {i18n.t('appDetails.toolsInformation')}\n \n {i18n.t('appDetails.toolsInformationLink')}\n \n \n \n )}\n \n );\n};\n\nFunctionalitySection.propTypes = {\n howItWorks: PT.string.isRequired,\n features: PT.arrayOf(PT.string),\n requirements: PT.arrayOf(PT.string),\n tools: PT.arrayOf(PT.string),\n};\n\nexport default FunctionalitySection;\n","import React, { useState } from 'react';\nimport PT from 'prop-types';\nimport {\n Flex,\n H1,\n H2,\n Link,\n Typography,\n colors,\n useI18nContext,\n} from '@procore/core-react';\nimport {\n Building,\n Check,\n ChevronDown,\n ChevronUp,\n Clear,\n Location,\n RibbonPerson,\n ShieldStar,\n} from '@procore/core-icons';\nimport styled from 'styled-components';\nimport { useSanitizedString } from '@/react/hooks/useSanitizedString';\n\nconst maxContentWidth = '780px';\n\nconst Logo = styled.img`\n height: 96px;\n width: 96px;\n`;\n\nconst Label = styled(Typography)`\n margin: 12px 0px 0px 0px;\n font-weight: 600;\n`;\n\nconst BreakingLine = styled.hr`\n border: 0;\n border-top: 1px solid ${colors.gray70};\n margin: 24px 0px;\n width: 100%;\n`;\n\nconst ConditionalLine = ({ condition, affirmative, negative, testId }) => {\n return (\n \n {condition ? (\n \n ) : (\n \n )}\n \n \n {condition ? affirmative : negative}\n \n \n \n );\n};\n\nConditionalLine.propTypes = {\n condition: PT.bool.isRequired,\n affirmative: PT.node.isRequired,\n negative: PT.node.isRequired,\n testId: PT.string.isRequired,\n};\n\nconst CollapsibleSection = ({\n title,\n children,\n openSection,\n setOpenSection,\n sectionId,\n testId,\n}) => {\n const open = openSection === sectionId;\n\n return (\n setOpenSection(openSection === sectionId ? '' : sectionId)}\n data-testid={testId}\n >\n \n

{title}

\n {open ? : }\n \n \n {open && children}\n \n );\n};\n\nCollapsibleSection.propTypes = {\n title: PT.string,\n children: PT.node.isRequired,\n openSection: PT.string.isRequired,\n setOpenSection: PT.func.isRequired,\n sectionId: PT.string.isRequired,\n testId: PT.string.isRequired,\n};\n\nconst SecuritySection = ({ app, questionnaire }) => {\n const i18n = useI18nContext();\n const [openSection, setOpenSection] = useState('');\n\n const sanitizedAbout = useSanitizedString(app.about);\n\n if (!app.security_questionnaire_visible || !questionnaire) {\n return (\n \n

{i18n.t('appDetails.titles.security')}

\n \n \n \n \n \n

\n {i18n.t('appDetails.security.informationNotProvided')}\n

\n
\n \n {i18n.t('appDetails.security.informationNotProvidedDetails')}\n \n
\n
\n \n

\n {i18n.t('appDetails.security.aboutApp', { app: app.built_by })}\n

\n \n \n \n \n );\n }\n\n const securityStandards = [\n ...questionnaire.security_standards.map(\n (standard) => standard.standard_name\n ),\n ...(questionnaire.other_security_standards === ''\n ? []\n : [questionnaire.other_security_standards]),\n ];\n\n return (\n \n

{i18n.t('appDetails.titles.security')}

\n\n \n \n \n \n

\n {i18n.t('appDetails.security.review')}\n

\n
\n
\n \n {`${i18n.t('appDetails.security.reviewDetails')} `}\n \n {i18n.t('appDetails.partnerSecurityBadgeLink')}\n \n \n \n\n \n

\n {i18n.t('appDetails.security.aboutApp', { app: app.built_by })}\n

\n \n \n \n
\n\n \n \n\n \n \n \n \n {questionnaire.company_legal_name}\n \n \n \n \n {i18n.t('appDetails.security.headquarters')}\n \n \n \n \n \n {questionnaire.headquarters_country}\n \n \n \n \n\n \n \n \n {i18n.t('appDetails.security.dataProcessingLocations')}\n \n \n {i18n.t('appDetails.security.countries')}\n \n \n \n \n \n {questionnaire.data_processing_locations.join(', ')}\n \n \n \n \n\n \n {i18n.t('appDetails.security.subprocessors')}\n \n \n\n \n\n \n {i18n.t('appDetails.security.subprocessorsPersonalData')}\n \n \n \n\n \n \n {i18n.t('appDetails.security.dedicatedFunction')}\n \n \n {i18n.t('appDetails.security.contactMessage')}\n \n {questionnaire.security_email}\n \n \n }\n negative={i18n.t('appDetails.security.no')}\n testId=\"dedicated-security\"\n />\n\n \n\n \n {i18n.t('appDetails.security.audits')}\n \n \n\n \n\n \n {i18n.t('appDetails.security.technicalMeasures')}\n \n \n {i18n.t('appDetails.security.securityTeam')}\n \n \n \n {`${i18n.t('appDetails.security.yes')}. `}\n \n \n {questionnaire.security_email}\n \n \n \n \n }\n negative={i18n.t('appDetails.security.no')}\n testId=\"security-team\"\n />\n\n \n {i18n.t('appDetails.security.bugBountyProgram')}\n \n \n\n \n {i18n.t('appDetails.security.vulnerabilityProgram')}\n \n \n \n {`${i18n.t('appDetails.security.yes')}. `}\n \n \n {questionnaire.disclosure_program_url}\n \n \n \n \n }\n negative={i18n.t('appDetails.security.no')}\n testId=\"vulnerability-program\"\n />\n\n \n\n \n {i18n.t('appDetails.security.accredidations')}\n \n \n {i18n.t('appDetails.security.standards')}\n \n \n {`${i18n.t('appDetails.security.yes')}. `}\n {securityStandards.join(', ')}\n \n }\n negative={i18n.t('appDetails.security.no')}\n testId=\"accredidations\"\n />\n\n \n\n \n {i18n.t('appDetails.security.penTesting')}\n \n \n\n \n\n \n {i18n.t('appDetails.security.dataLoss')}\n \n \n\n \n\n \n {i18n.t('appDetails.security.vulnerabilityDisclosure')}\n \n \n {`${i18n.t('appDetails.security.yes')}. `}\n \n \n {i18n.t(\n 'appDetails.security.vulnerabilityDisclosureProgram'\n )}\n \n \n \n }\n negative={i18n.t('appDetails.security.no')}\n testId=\"disclosure-program\"\n />\n\n \n\n \n {i18n.t('appDetails.security.bugBounty')}\n \n \n \n\n \n \n {i18n.t('appDetails.security.aesEncryption')}\n \n \n\n \n\n \n {i18n.t('appDetails.security.tlsEncryption')}\n \n \n\n \n {i18n.t('appDetails.security.ssoSupported')}\n \n \n\n \n\n \n {i18n.t('appDetails.security.samlSupported')}\n \n \n\n \n {i18n.t('appDetails.security.mfaRequired')}\n \n \n\n \n {i18n.t('appDetails.security.pfasSupported')}\n \n \n \n \n \n );\n};\n\nSecuritySection.propTypes = {\n app: PT.shape({\n about: PT.string,\n built_by: PT.string,\n security_questionnaire_visible: PT.bool,\n }),\n questionnaire: PT.shape({\n can_notify_procore: PT.bool.isRequired,\n company_legal_name: PT.string.isRequired,\n data_processing_locations: PT.arrayOf(PT.string),\n disclosure_program_url: PT.string.isRequired,\n has_bug_bounty_program: PT.bool.isRequired,\n has_data_encryption_at_rest: PT.bool.isRequired,\n has_data_encryption_in_transit: PT.bool.isRequired,\n has_disclosure_program: PT.bool.isRequired,\n has_fas_support: PT.bool.isRequired,\n has_mfa_support: PT.bool.isRequired,\n has_penetration_testing: PT.bool.isRequired,\n has_saml_support: PT.bool.isRequired,\n has_security_audits: PT.bool.isRequired,\n has_security_contact: PT.bool.isRequired,\n has_security_standards: PT.bool.isRequired,\n has_sensitive_data: PT.bool.isRequired,\n has_sso_support: PT.bool.isRequired,\n has_subprocessors: PT.bool.isRequired,\n headquarters_country: PT.string.isRequired,\n other_security_standards: PT.string.isRequired,\n security_email: PT.string.isRequired,\n security_standards: PT.arrayOf(\n PT.shape({\n variant: PT.string,\n standard_name: PT.string,\n })\n ),\n sensitive_data_handling_details: PT.string.isRequired,\n subprocessors_details: PT.string.isRequired,\n }),\n};\n\nexport default SecuritySection;\n","import styled from 'styled-components';\nimport { Flex, H1, H2, Link, Typography } from '@procore/core-react';\nimport { ExternalLink } from '@procore/core-icons';\n\nconst ContactContainer = styled(Flex)`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 6px;\n flex: 1 0 0;\n max-width: 100%;\n`;\n\nconst ContactsContainer = styled(Flex)`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n flex: 1 0 0;\n height: 100%;\n overflow: hidden;\n`;\n\nconst ContactType = styled(Typography)`\n font-feature-settings:\n 'liga' off,\n 'clig' off;\n\n font-size: 12px;\n font-style: normal;\n font-weight: 600;\n line-height: 16px;\n letter-spacing: 1px;\n text-transform: uppercase;\n`;\n\nconst DualSectionsContainer = styled(Flex)`\n display: flex;\n align-items: stretch;\n gap: 48px;\n align-self: stretch;\n width: 100%;\n max-width: 684px;\n flex-wrap: nowrap;\n`;\n\nconst EmptyState = styled(Typography)`\n color: #595552;\n width: 100%;\n font-size: 18px;\n font-style: normal;\n font-weight: 400;\n line-height: 24px;\n`;\n\nconst HelpfulLinksContainer = styled(Flex)`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 6px;\n max-width: 100%;\n`;\n\nconst LinksContainer = styled(Flex)`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n flex: 1 0 50%;\n max-width: 50%;\n`;\n\nconst Logo = styled.img`\n width: 96px;\n height: 96px;\n flex-shrink: 0;\n align-self: center;\n`;\n\nconst SectionContainer = styled(Flex)`\n display: flex;\n align-items: stretch;\n gap: 18px;\n flex: 1 1 50%;\n align-self: stretch;\n max-width: 50%;\n`;\n\nconst StyledExternalLink = styled(ExternalLink)`\n width: 16px;\n height: 16px;\n`;\n\nconst StyledExternalLinkContainer = styled(Flex)`\n display: inline-flex;\n margin-left: 4px;\n vertical-align: middle;\n`;\n\nconst StyledH1 = styled(H1)`\n color: var(--procore-procore-black-000000, #000);\n font-feature-settings:\n 'liga' off,\n 'clig' off;\n\n font-size: 28px;\n font-style: normal;\n font-weight: 700;\n line-height: 36px;\n letter-spacing: -0.75px;\n`;\n\nconst StyledH2 = styled(H2)`\n color: var(--procore-procore-black-000000, #000);\n font-feature-settings:\n 'liga' off,\n 'clig' off;\n\n font-size: 24px;\n font-style: normal;\n font-weight: 700;\n line-height: 32px; /* 133.333% */\n letter-spacing: -0.25px;\n`;\n\nconst StyledLink = styled(Link)`\n color: var(--Blue-blue-45, #2066df);\n display: inline-block;\n vertical-align: bottom;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-wrap: wrap;\n max-width: 100%;\n line-height: 24px;\n`;\n\nconst SupportCard = styled(Flex)`\n background: var(--bw-white, #fff);\n display: flex;\n padding: 48px;\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n gap: 32px;\n align-self: stretch;\n width: 100%;\n max-width: 780px;\n margin: 48px auto;\n`;\n\nexport {\n ContactContainer,\n ContactsContainer,\n ContactType,\n DualSectionsContainer,\n EmptyState,\n HelpfulLinksContainer,\n LinksContainer,\n Logo,\n SectionContainer,\n StyledExternalLink,\n StyledExternalLinkContainer,\n StyledH1,\n StyledH2,\n StyledLink,\n SupportCard,\n};\n","import React from 'react';\nimport PT from 'prop-types';\nimport { useI18nContext } from '@procore/core-react';\nimport {\n ContactContainer,\n ContactsContainer,\n ContactType,\n DualSectionsContainer,\n EmptyState,\n HelpfulLinksContainer,\n LinksContainer,\n Logo,\n SectionContainer,\n StyledExternalLink,\n StyledExternalLinkContainer,\n StyledH1,\n StyledH2,\n StyledLink,\n SupportCard,\n} from './Support.styles';\n\nconst SupportSection = ({ name, website, contactUsEmail, helpfulLinks }) => {\n const i18n = useI18nContext();\n\n return (\n \n {i18n.t('appDetails.titles.support')}\n \n \n \n \n {i18n.t('appDetails.titles.helpfulLinks')}\n \n {helpfulLinks.length ? (\n helpfulLinks.map(({ url, label }) => (\n \n {label}\n \n \n \n \n ))\n ) : (\n {i18n.t('appDetails.noHelpfulLinks')}\n )}\n \n \n \n \n \n \n {i18n.t('appDetails.titles.contact')}\n {contactUsEmail && (\n \n \n {i18n.t('appDetails.labels.email')}\n \n \n {contactUsEmail}\n \n \n )}\n {website && name && (\n \n \n {i18n.t('appDetails.labels.website')}\n \n \n {name}\n \n \n \n \n \n )}\n \n \n \n \n );\n};\n\nSupportSection.propTypes = {\n name: PT.string.isRequired,\n website: PT.string.isRequired,\n contactUsEmail: PT.string.isRequired,\n helpfulLinks: PT.arrayOf(\n PT.shape({\n url: PT.string.isRequired,\n label: PT.string.isRequired,\n })\n ),\n};\n\nexport default SupportSection;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Modal,\n Link,\n useI18nContext,\n H3,\n Flex,\n Typography,\n spacing,\n Button,\n} from '@procore/core-react';\nimport styled from 'styled-components';\nimport {\n UnderlineModalHeader,\n MinWidthModal,\n MinWidthModalBody,\n LargeSpacingDivider,\n} from '@/react/styles/v2';\nimport { UnderlineLink } from '../../../../../styles/v2';\n\nconst CountryList = styled.ul`\n padding-left: ${spacing.lg}px;\n min-width: 200px;\n width: 100%;\n`;\n\nexport const RegionModal = ({ regions, countries }) => {\n const i18n = useI18nContext();\n const [isRegionsOpen, setIsRegionsOpen] = useState(false);\n\n // split the countries for a region into max 3 columns of length 10 or less\n const [mappedCountries, setMappedCountries] = useState({});\n useEffect(() => {\n const newMappedCountries = {};\n Object.keys(countries).forEach((region) => {\n const columns = [];\n let column = [];\n const maxLength = Math.ceil(countries[region].length / 3);\n countries[region].forEach((country) => {\n if (column.length >= maxLength) {\n columns.push(column);\n column = [];\n }\n column.push(country);\n });\n columns.push(column);\n newMappedCountries[region] = columns;\n });\n setMappedCountries(newMappedCountries);\n }, [countries]);\n\n return (\n <>\n \n setIsRegionsOpen(!isRegionsOpen)}>\n {i18n.t('appDetails.sideBar.regionModal.trigger')}\n \n \n setIsRegionsOpen(false)}\n open={isRegionsOpen}\n >\n \n {i18n.t('appDetails.sideBar.regionModal.title')}\n \n \n {regions &&\n regions.length > 0 &&\n regions.map((region, regionIndex) => {\n return (\n \n

{`${region}${\n countries[region]?.length > 0\n ? ` (${countries[region].length})`\n : ''\n }`}

\n {mappedCountries[region] && (\n \n {mappedCountries[region].map((column, index) => {\n return (\n \n \n {column.map((country) => {\n return (\n
  • \n \n {country}\n \n
  • \n );\n })}\n
    \n
    \n );\n })}\n
    \n )}\n {regionIndex !== regions.length - 1 && (\n \n )}\n \n );\n })}\n
    \n \n \n \n \n \n \n \n );\n};\n\nRegionModal.propTypes = {\n regions: PropTypes.arrayOf(PropTypes.string).isRequired,\n countries: PropTypes.object.isRequired,\n};\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Link,\n Modal,\n useI18nContext,\n Button,\n H3,\n Flex,\n P,\n Typography,\n spacing,\n} from '@procore/core-react';\nimport {\n UnderlineModalHeader,\n MinWidthModal,\n MinWidthModalBody,\n} from '@/react/styles/v2';\nimport styled from 'styled-components';\nimport { UnderlineLink } from '@/react/styles/v2';\n\n// non-standard color in design\nconst DividerSection = styled(Flex)`\n border-bottom: 1px solid #a3a4a6;\n padding-top: ${spacing.lg}px;\n &:last-child {\n border-bottom: none;\n }\n &:first-child {\n padding-top: ${spacing.lg}px;\n }\n`;\n\nexport const VersionHistoryModal = ({ versionHistory }) => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const i18n = useI18nContext();\n return (\n <>\n \n setIsModalOpen(true)}>\n {i18n.t('appDetails.sideBar.historyModal.trigger')}\n \n \n setIsModalOpen(false)}\n style={{ minWidth: '40%' }}\n >\n \n {i18n.t('appDetails.sideBar.historyModal.title')}\n \n \n {versionHistory.map((version) => (\n \n

    {version.semantic_version}

    \n \n {version.created_at}\n \n

    \n {version.changelog ||\n i18n.t('appDetails.sideBar.historyModal.noChangelog')}\n

    \n
    \n ))}\n
    \n \n \n \n \n \n );\n};\n\nVersionHistoryModal.propTypes = {\n versionHistory: PropTypes.array,\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Flex,\n Popover,\n Typography,\n useI18nContext,\n Link,\n} from '@procore/core-react';\nimport { ExternalLink, Info } from '@procore/core-icons';\nimport { UnderlineLink } from '@/react/styles/v2';\n\nconst EMBEDDED_TYPES = ['iframe', 'fullscreen', 'sidepanel'];\nconst embeddedType = {\n fullscreen: 0,\n sidepanel: 1,\n both: 2,\n};\n\nconst getEmbeddedType = (components) => {\n if (components.length === 0) {\n return embeddedType.fullscreen;\n }\n let fullscreen = false;\n let sidepanel = false;\n components.forEach((component) => {\n if (component === 'fullscreen' || component === 'iframe') {\n fullscreen = true;\n }\n if (component === 'sidepanel') {\n sidepanel = true;\n }\n });\n\n if (fullscreen && sidepanel) {\n return embeddedType.both;\n }\n if (fullscreen) {\n return embeddedType.fullscreen;\n }\n return embeddedType.sidepanel;\n};\n\nconst getType = (components) => {\n if (components.length === 0) {\n return 'dataConnector';\n }\n let dataConnector = false;\n let embedded = false;\n components.forEach((component) => {\n if (component === 'oauth') {\n dataConnector = true;\n }\n if (EMBEDDED_TYPES.includes(component)) {\n embedded = true;\n }\n });\n\n if (dataConnector && embedded) {\n return 'dataConnectorAndEmbedded';\n }\n if (dataConnector) {\n return 'dataConnector';\n }\n return 'embedded';\n};\n\nexport const hasEmbedded = (components) => {\n return components.some((component) => EMBEDDED_TYPES.includes(component));\n};\n\nexport const AppType = ({ components }) => {\n const i18n = useI18nContext();\n const overlay = (\n \n \n \n {i18n.t('appDetails.sideBar.appTypePopover')}\n \n \n \n \n \n {i18n.t('appDetails.sideBar.appTypeLink')}{' '}\n \n \n \n \n \n \n \n );\n return (\n \n \n {i18n.t(`appDetails.sideBar.appType.${getType(components)}`)}\n \n \n {() => }\n \n \n );\n};\n\nAppType.propTypes = {\n components: PropTypes.arrayOf(PropTypes.string).isRequired,\n};\n\nconst EmbeddedTypePopover = ({ type }) => {\n const i18n = useI18nContext();\n let content = '';\n switch (type) {\n case embeddedType.fullscreen:\n content = i18n.t('appDetails.sideBar.embeddedTypePopover.fullscreen');\n break;\n case embeddedType.sidepanel:\n content = i18n.t('appDetails.sideBar.embeddedTypePopover.sidepanel');\n break;\n case embeddedType.both:\n content = i18n.t('appDetails.sideBar.embeddedTypePopover.both');\n break;\n default:\n content = 'missingContent';\n }\n return {content};\n};\n\nEmbeddedTypePopover.propTypes = {\n type: PropTypes.number.isRequired,\n};\n\nexport const EmbeddedType = ({ components }) => {\n const i18n = useI18nContext();\n const translatedComponents = components\n .filter((component) => EMBEDDED_TYPES.includes(component))\n .map((component) => i18n.t(`appDetails.sideBar.displayType.${component}`));\n const embeddedType = getEmbeddedType(components);\n const overlay = (\n \n \n \n \n \n \n \n {i18n.t('appDetails.sideBar.embeddedType')}{' '}\n \n \n \n \n \n \n \n );\n return (\n \n \n {translatedComponents.join(', ')}\n \n \n {() => }\n \n \n );\n};\n\nEmbeddedType.propTypes = {\n components: PropTypes.arrayOf(PropTypes.string).isRequired,\n};\n","import React, { useEffect, useState } from 'react';\nimport PT from 'prop-types';\nimport {\n Box,\n useI18nContext,\n Link,\n Pill,\n colors,\n spacing,\n Flex,\n Typography,\n} from '@procore/core-react';\nimport { ExternalLink } from '@procore/core-icons';\nimport styled from 'styled-components';\nimport { useAppContext } from '@/react/context/AppContext';\nimport { RegionModal } from '../utils/RegionModal';\nimport { VersionHistoryModal } from '../utils/VersionHistoryModal';\nimport { AppType, EmbeddedType, hasEmbedded } from '../utils/AppType';\nimport { UnderlineLink } from '@/react/styles/v2';\n\nconst CategoryPill = styled(Pill)`\n color: white;\n background-color: ${colors.blue50};\n font-weight: 400;\n font-size: 18px;\n line-height: 24px;\n letter-spacing: 0.48px;\n border-radius: 16px;\n padding: ${spacing.xxs}px ${spacing.md}px;\n`;\n\nconst SectionLabel = styled(Typography)`\n color: ${colors.black};\n font-feature-settings:\n 'liga' off,\n 'clig' off;\n font-size: 14px;\n font-style: normal;\n font-weight: 600;\n line-height: 20px;\n letter-spacing: 0.64px;\n text-transform: uppercase;\n`;\n\nconst RowGapFlex = styled(Flex)`\n row-gap: ${spacing.sm}px;\n`;\n\n \nconst SideBarSection = ({ title, children, testId }) => (\n \n \n {title}\n \n {children}\n \n);\n\nSideBarSection.propTypes = {\n title: PT.string.isRequired,\n children: PT.node.isRequired,\n testId: PT.string.isRequired,\n};\n\nconst SideBar = () => {\n const i18n = useI18nContext();\n\n const {\n appDetails: { app, version },\n } = useAppContext();\n\n const {\n built_by,\n name,\n website,\n category_names,\n regions,\n countries,\n versioning_history,\n components,\n } = app;\n\n // last version in the versioning history array\n const latestVersion =\n versioning_history?.[versioning_history.length - 1]?.semantic_version;\n\n const [hasEmbeddedComponents, setHasEmbeddedComponents] = useState(\n hasEmbedded(components)\n );\n useEffect(() => {\n setHasEmbeddedComponents(hasEmbedded(components));\n }, [components]);\n\n const displayVersion = version || latestVersion;\n\n return (\n
    \n \n \n \n \n {hasEmbeddedComponents && (\n \n \n \n )}\n \n \n {category_names?.map((category) => (\n \n {category}\n \n ))}\n \n \n \n {regions?.length === 0 ? (\n <>{i18n.t('appDetails.noRegions')}\n ) : (\n <>\n \n {regions?.map((region) => (\n {`${region}${\n countries[region] ? ` (${countries[region].length})` : ''\n }; `}\n ))}\n \n \n \n )}\n \n {displayVersion && (\n \n \n {displayVersion}\n \n \n \n )}\n \n {/* styling bug here around no anchor underline */}\n \n \n {built_by || name} {' '}\n \n \n \n \n
    \n );\n};\n\nexport default SideBar;\n","import trackEvent from '@/scripts/analytics';\n\nexport const sendAnalytics = (\n action,\n category,\n label,\n procoreLabel,\n procoreAdditionalFields,\n gtagValue\n) => {\n if (typeof gtag !== 'undefined') {\n gtag('event', action, {\n event_category: category,\n event_label: label,\n gtagValue,\n });\n }\n trackEvent(`marketplace.apps.${procoreLabel}`, {\n app_name: name,\n ...procoreAdditionalFields,\n });\n};\n","import React from 'react';\nimport PT from 'prop-types';\nimport styled from 'styled-components';\nimport {\n Box,\n Button,\n colors,\n H1,\n Modal,\n spacing,\n Typography,\n useI18nContext,\n} from '@procore/core-react';\nimport { SingleCarousel } from '@/react/components';\n\nconst ModalLogo = styled.img`\n width: 75px;\n height: 75px;\n object-fit: cover;\n margin-right: ${spacing.lg}px;\n`;\n\nconst MediaSection = styled(Modal.Section)`\n width: calc(100% - 36px);\n margin: 0 auto;\n\n @media (min-width: 768px) {\n width: calc(100% - 132px);\n }\n`;\n\nconst ModalBody = styled(Modal.Body)`\n border-top: 1px solid ${colors.gray85};\n border-bottom: 1px solid ${colors.gray85};\n height: 100%;\n\n &:focus-within {\n outline: none;\n }\n\n @media (min-width: 768px) {\n height: 612px;\n }\n`;\n\nconst ImageModal = ({\n logoURL,\n appName,\n tagline,\n slides,\n isOpen,\n imageURL,\n onClose,\n}) => {\n const i18n = useI18nContext();\n return (\n \n \n \n \n

    {appName}

    \n \n {tagline}\n \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nImageModal.propTypes = {\n logoURL: PT.string.isRequired,\n appName: PT.string.isRequired,\n tagline: PT.string.isRequired,\n slides: PT.arrayOf(\n PT.shape({\n url: PT.string.isRequired,\n })\n ),\n isOpen: PT.bool.isRequired,\n imageURL: PT.string.isRequired,\n onClose: PT.func.isRequired,\n};\n\nexport default ImageModal;\n","import React from 'react';\nimport PT from 'prop-types';\nimport styled from 'styled-components';\nimport { Box } from '@procore/core-react';\n\nconst WistiaImage = styled.img`\n filter: blur(5px);\n height: 100%;\n object-fit: contain;\n width: 100%;\n`;\n\nconst WistiaEmbed = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n`;\n\nexport const VideoPreview = ({ wistiaId }) => {\n return (\n \n \n \n \n \n );\n};\n\nVideoPreview.propTypes = {\n wistiaId: PT.string,\n};\n","import React from 'react';\nimport PT from 'prop-types';\nimport Slider from 'react-slick';\nimport { ImageStack } from '@procore/core-icons';\nimport { Box, H3, Typography, useI18nContext } from '@procore/core-react';\nimport {\n Slide,\n ArrowContainer,\n EmptySlide,\n SlideContainer,\n} from '@/react/styles/v2';\nimport { VideoPreview } from '../Sections/VideoPreview';\nimport { ArrowPrev, ArrowNext } from '@/react/components';\n\nconst MainCarousel = ({\n screenshots,\n wistiaId,\n onBeforeChange,\n setMainCarousel,\n thumbnailCarousel,\n openImageModal,\n}) => {\n const i18n = useI18nContext();\n const settings = {\n focusOnSelect: false,\n dots: false,\n infinite: false,\n slidesToShow: 1,\n slidesToScroll: 1,\n fade: false,\n adaptiveHeight: true,\n beforeChange: onBeforeChange,\n prevArrow: (\n \n \n \n ),\n nextArrow: (\n \n \n \n ),\n };\n\n return screenshots.length !== 0 ? (\n \n {wistiaId && (\n \n \n \n )}\n {screenshots?.map((slide, index) => (\n \n \n \n ))}\n \n ) : (\n \n \n \n

    {i18n.t('appDetails.media.titleNoMedia')}

    \n \n {i18n.t('appDetails.media.descriptionNoMedia')}\n \n \n
    \n );\n};\n\nMainCarousel.propTypes = {\n screenshots: PT.arrayOf(\n PT.shape({\n url: PT.string.isRequired,\n })\n ),\n wistiaId: PT.string,\n onBeforeChange: PT.func.isRequired,\n setMainCarousel: PT.func.isRequired,\n thumbnailCarousel: PT.shape({}),\n openImageModal: PT.func.isRequired,\n};\n\nexport default MainCarousel;\n","import React from 'react';\nimport PT from 'prop-types';\nimport Slider from 'react-slick';\nimport { Box, spacing } from '@procore/core-react';\nimport styled from 'styled-components';\nimport { Slide } from '@/react/styles/v2';\nimport { PlayButton } from '@/react/components';\n\nconst MAX_THUMBNAIL_SLIDES = 3.25;\nconst VideoThumbnail = styled(Box)`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n\n & > svg {\n display: block;\n position: absolute;\n top: 50%;\n left: calc(50% - ${spacing.sm}px);\n transform: translate(-50%, -50%);\n cursor: pointer;\n }\n`;\n\nconst ThumbnailCarousel = ({\n screenshots,\n wistiaId,\n setThumbnailCarousel,\n mainCarousel,\n}) => {\n const settings = {\n slidesToShow: MAX_THUMBNAIL_SLIDES,\n slidesToScroll: 1,\n arrows: false,\n infinite: false,\n focusOnSelect: true,\n responsive: [\n {\n breakpoint: 768,\n settings: { slidesToShow: MAX_THUMBNAIL_SLIDES * 0.75 },\n },\n ],\n };\n\n return screenshots.length !== 0 ? (\n \n {wistiaId && (\n \n \n \n \n )}\n {screenshots?.map((slide, index) => (\n \n \n \n ))}\n \n ) : null;\n};\n\nThumbnailCarousel.propTypes = {\n screenshots: PT.arrayOf(\n PT.shape({\n url: PT.string.isRequired,\n })\n ).isRequired,\n wistiaId: PT.string,\n setThumbnailCarousel: PT.func.isRequired,\n mainCarousel: PT.shape({}),\n};\n\nexport default ThumbnailCarousel;\n","import React, { useCallback, useState } from 'react';\nimport PT from 'prop-types';\nimport { Flex } from '@procore/core-react';\nimport { SlickWrapper } from '@/react/styles/v2';\nimport { sendAnalytics } from '../../utils';\nimport ImageModal from './ImageModal';\nimport MainCarousel from './MainCarousel';\nimport ThumbnailCarousel from './ThumbnailCarousel';\n\nconst MediaCarousel = ({\n screenshots,\n wistiaId,\n appName,\n tagline,\n logoURL,\n}) => {\n const [mainCarousel, setMainCarousel] = useState(null);\n const [thumbnailCarousel, setThumbnailCarousel] = useState(null);\n const [imageModalOpen, setImageModalOpen] = useState(false);\n const [currentImageUrl, setCurrentImageUrl] = useState('');\n\n const handleBeforeChange = useCallback(\n (_, next) => {\n sendAnalytics('click', 'Media Slider', next, 'media_slider.changed', {\n index: next,\n });\n setCurrentImageUrl(\n next === 0 && wistiaId\n ? ''\n : screenshots[wistiaId ? next - 1 : next]?.url\n );\n },\n [screenshots, wistiaId]\n );\n\n return (\n <>\n {screenshots?.length > 0 && (\n setImageModalOpen(false)}\n slides={screenshots}\n />\n )}\n\n \n \n {/* Main Carousel */}\n setImageModalOpen(true)}\n />\n \n\n {/* Thumbnail Carousel */}\n \n \n \n \n \n );\n};\n\nMediaCarousel.propTypes = {\n screenshots: PT.arrayOf(\n PT.shape({\n url: PT.string.isRequired,\n })\n ),\n wistiaId: PT.string,\n appName: PT.string.isRequired,\n tagline: PT.string.isRequired,\n logoURL: PT.string.isRequired,\n};\n\nexport default MediaCarousel;\n","import { useState, useEffect } from 'react';\n\n// Hook that returns a boolean value indicating whether the target element is in the viewport\n\nexport const useIntersection = (targetRefs) => {\n const [currentIntersections, setCurrentIntersections] = useState({});\n const [lastIntersection, setLastIntersection] = useState(null);\n useEffect(() => {\n const intersectionMap = targetRefs.reduce((acc, ref) => {\n if (ref.current && !acc[ref.current.id]) {\n acc[ref.current.id] = false;\n }\n return acc;\n }, currentIntersections);\n setCurrentIntersections(intersectionMap);\n }, [targetRefs.current]);\n \n\n useEffect(() => {\n const observer = new IntersectionObserver(\n ([entry]) => {\n setLastIntersection((previous) => {\n if (entry.isIntersecting) {\n return entry.target.id;\n }\n return previous;\n });\n },\n { threshold: 0.5 }\n );\n\n targetRefs.forEach((ref) => {\n if (ref.current) {\n observer.observe(ref.current);\n }\n });\n\n return () => {\n targetRefs.forEach((ref) => {\n if (ref.current) {\n observer.unobserve(ref.current);\n }\n });\n\n observer.disconnect();\n };\n }, [targetRefs]);\n\n return lastIntersection;\n};\n","import React, { useState, useEffect, useMemo } from 'react';\nimport {\n Flex,\n Typography,\n spacing,\n useI18nContext,\n colors,\n} from '@procore/core-react';\nimport styled from 'styled-components';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { useIntersection } from '../../../../../hooks/useIntersection';\n\nconst HEADER_HEIGHT = 72;\nconst HEADER_HEIGHT_MOBILE = 120;\n\nexport const ScrollAnchor = styled.div`\n scroll-margin-top: 140px;\n @media (max-width: 992px) {\n scroll-margin-top: 190px;\n }\n`;\n\nconst LocalTab = styled.div`\n padding: ${spacing.sm}px;\n cursor: pointer;\n transition: background-color 0.2s;\n background-color: white;\n &:hover {\n background-color: ${colors.gray94};\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n }\n border-bottom: 3px solid ${({ active }) => (active ? 'black' : colors.gray85)};\n margin-bottom: -3px;\n ${({ active }) => active && 'font-weight: semibold;'}\n`;\n\nconst NavContainer = styled.div`\n position: sticky;\n top: ${HEADER_HEIGHT}px;\n z-index: 10000;\n width: 100vw;\n background-color: white;\n @media (max-width: 992px) {\n top: ${HEADER_HEIGHT_MOBILE}px;\n }\n\n overflow-x: auto;\n overflow-y: hidden;\n /* Hide scrollbar for WebKit browsers */\n &::-webkit-scrollbar {\n display: none;\n }\n\n /* Hide scrollbar for Firefox */\n scrollbar-width: none;\n`;\n\nconst BorderBox = styled.div`\n border-bottom: 3px solid ${colors.gray85};\n width: 100%;\n @media (max-width: 700px) {\n width: max-content;\n }\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nconst FlexContainer = styled.div`\n width: 100%;\n max-width: 1344px;\n`;\n\nconst MediaResponsiveFlex = styled(Flex)`\n @media (max-width: 768px) {\n gap: ${spacing.sm}px;\n }\n gap: ${spacing.lg}px;\n background-color: white;\n width: max-content;\n`;\n\nexport const SectionNav = ({ sections }) => {\n const i18n = useI18nContext();\n const sectionRefs = useMemo(\n () => sections.map((section) => section.ref),\n [sections]\n );\n const [overRideActiveSection, setOverRideActiveSection] = useState(null);\n const [activeSection, setActiveSection] = useState(null);\n const lastIntersection = useIntersection(sectionRefs);\n useEffect(() => {\n if (!overRideActiveSection) {\n setActiveSection(() => lastIntersection);\n }\n }, [lastIntersection]);\n\n return (\n \n \n \n \n {sections.map((section, index) => (\n {\n section.ref.current.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n });\n setOverRideActiveSection(section.id);\n setActiveSection(section.id);\n setTimeout(() => {\n setOverRideActiveSection(null);\n }, 800);\n }}\n data-testid={`section-nav-${section.id}`}\n >\n \n {i18n.t(section.title)}\n \n \n ))}\n \n \n \n \n );\n};\n\nSectionNav.propTypes = {\n sections: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n ref: PropTypes.object.isRequired,\n title: PropTypes.string.isRequired,\n })\n ).isRequired,\n};\n","import React, { useRef } from 'react';\nimport {\n Box,\n Button,\n colors,\n spacing,\n Flex,\n Grid,\n P,\n Popover,\n useI18nContext,\n Typography,\n} from '@procore/core-react';\nimport { Check } from '@procore/core-icons';\nimport PricingSection from './components/Sections/Pricing';\n\nimport { appInstallPost } from '@/react/api';\nimport { MediaContainer, SidebarContainer } from '@/react/styles/v2';\nimport * as Styles from '@/react/styles';\nimport { AppHeader, InstallRequestButton } from '@/react/components';\nimport { useAppContext } from '@/react/context/AppContext';\n\nimport {\n OverviewSection,\n SideBar,\n SupportSection,\n FunctionalitySection,\n SecuritySection,\n} from './components/Sections';\nimport { sendAnalytics } from './utils';\nimport MediaCarousel from './components/MediaCarousel';\nimport { ScrollAnchor, SectionNav } from './components/Sections/SectionNav';\n\nconst AppDetails = () => {\n const i18n = useI18nContext();\n const {\n appDetails: {\n app,\n metricsData,\n installationRequest,\n companyInstallationRequestsEnabled,\n companyName,\n user,\n wistiaId,\n sectionNavEnabled,\n },\n } = useAppContext();\n\n const {\n installed,\n developer_app_id,\n direct_installable,\n install_path,\n screenshots,\n seller,\n built_by,\n small_logo,\n small_logo_url,\n } = app;\n\n const colWidthsContent = { desktopSm: 8, tabletLg: 12 };\n const colWidthSidebar = { desktopSm: 4, tabletLg: 12 };\n\n const overviewRef = useRef(null);\n const functionalityRef = useRef(null);\n const pricingRef = useRef(null);\n const securityRef = useRef(null);\n const supportRef = useRef(null);\n\n const getActionButton = () => {\n if (installed) {\n return (\n \n \n \n {i18n.t('labels.installed')}\n \n \n );\n }\n\n if (direct_installable) {\n if (!user.isSignedIn) {\n return (\n
    \n \n \n {i18n.t('appDetails.loginToInstall')}\n \n \n );\n }\n\n if (!user.isCompanyAdmin) {\n if (companyInstallationRequestsEnabled) {\n return (\n \n );\n }\n\n const content = (\n \n \n

    {i18n.t('appDetails.mustBeAdmin')}

    \n
    \n
    \n );\n\n return (\n \n {() => (\n \n \n {i18n.t('appDetails.installApp')}\n \n \n )}\n \n );\n }\n\n if (install_path) {\n return (\n {\n sendAnalytics(\n 'click',\n 'Button',\n 'Install App',\n 'install_button.clicked'\n );\n appInstallPost(app);\n window.location = install_path;\n }}\n size=\"lg\"\n >\n {i18n.t('appDetails.installApp')}\n \n );\n }\n }\n return null;\n };\n\n return (\n \n \n \n {sectionNavEnabled && (\n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AppDetails;\n","import React from 'react';\nimport PT from 'prop-types';\nimport { I18nProvider } from '@procore/core-react';\nimport i18n from '../i18n';\nimport AppDetails from './AppDetails';\nimport { AppContextProvider } from '@/react/context/AppContext';\nimport { SearchProvider } from '@/react/context/SearchContext';\nimport { Navbar } from '@/react/components';\n\nconst MarketplaceAppContainer = ({ appDetails, header }) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nMarketplaceAppContainer.propTypes = {\n appDetails: PT.shape({}).isRequired,\n header: PT.shape({}).isRequired,\n};\n\nexport default MarketplaceAppContainer;\n","import React from 'react';\n\nimport {\n Box,\n colors,\n Flex,\n FlexList,\n Typography,\n useI18nContext,\n} from '@procore/core-react';\nimport styled from 'styled-components';\nimport Fuse from 'fuse.js';\nimport { FUSE_CONFIG } from '@/react/shared/utils/fuseConfig';\nimport { useAppContext } from '@/react/context/AppContext';\nimport { useVisibility } from '@/react/hooks/useVisibility';\n\nimport {\n ListingsAppCard,\n ListingsSidebar,\n NoResults,\n Navbar,\n SearchBar,\n} from '@/react/components';\n\nconst SidebarWrapper = styled(Box)`\n @media (min-width: 1001px) {\n flex: 0 1 20%;\n }\n\n @media (max-width: 1000px) {\n display: none;\n }\n`;\n\nconst ListingsAppsWrapper = styled(Box)`\n @media (min-width: 1001px) {\n flex: 0 1 80%;\n }\n\n @media (max-width: 1000px) {\n flex: 1 0 100%;\n }\n`;\n\nconst AppsNotFoundWrapper = styled(Flex)`\n flex: 0 1 80%;\n margin-left: auto;\n margin-right: auto;\n`;\n\n// Core React Flexlist removes margin on last child,\n// which causes weird wrapping in our case here.\nconst FlexListMarginChild = styled(FlexList)`\n & > *:last-child {\n margin-right: 32px !important;\n }\n`;\n\nconst ListingContainer = styled.div`\n max-width: 1200px;\n margin: 50px auto;\n`;\n\nconst Hero = styled(Box)`\n background: url(/images/marketplace_header.png) no-repeat top center;\n background-size: cover;\n height: 400px;\n`;\n\nconst MarketplaceListing = () => {\n const [isVisible, elementRef] = useVisibility(100);\n const { listing } = useAppContext();\n const i18n = useI18nContext();\n const { apps, categories, query } = listing;\n\n apps\n .filter((app) => app.name.startsWith('Arcoro'))\n .map(\n (app) =>\n (app.search_description = app.search_description.replace(/^/, 'HR '))\n );\n\n const fuse = new Fuse(apps, FUSE_CONFIG);\n const listings = query\n ? fuse.search(query).map((result) => result.item)\n : apps;\n\n listings\n .filter((app) => app.name.startsWith(' '))\n .map(\n (app) =>\n (app.search_description = app.search_description.replace(/^HR /, ''))\n );\n\n return (\n <>\n \n\n \n \n {i18n.t('hero.tagline')}\n \n \n \n \n \n\n \n \n {categories.length > 0 && (\n \n \n \n )}\n {listings.length > 0 ? (\n \n \n {listings.map((listing) => (\n \n ))}\n \n \n ) : (\n \n \n \n \n \n )}\n \n \n \n );\n};\n\nexport default MarketplaceListing;\n","import React from 'react';\nimport PT from 'prop-types';\nimport { I18nProvider } from '@procore/core-react';\nimport i18n from '../i18n';\nimport { AppContextProvider } from '@/react/context/AppContext';\nimport { SearchProvider } from '@/react/context/SearchContext';\nimport MarketplaceListing from './MarketplaceListing';\n\nconst MarketplaceListingContainer = ({ listing, header }) => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nMarketplaceListingContainer.propTypes = {\n header: PT.shape({}).isRequired,\n listing: PT.shape({\n apps: PT.shape([]),\n query: PT.string,\n categories: PT.shape([]),\n }).isRequired,\n};\n\nexport default MarketplaceListingContainer;\n","import React from 'react';\nimport PT from 'prop-types';\nimport { Box, colors, Typography, useI18nContext } from '@procore/core-react';\nimport styled from 'styled-components';\n\nconst Container = styled(Box)`\n max-width: 940px;\n width: 100%;\n margin: 0 auto;\n`;\n\nconst FAQBox = styled(Box)`\n background-color: ${colors.white};\n border-radius: 8px;\n\n a {\n color: ${colors.orange50};\n text-decoration: underline !important;\n\n &:hover {\n color: ${colors.orange40};\n }\n }\n`;\n\nconst FAQ = ({ faqs }) => {\n const i18n = useI18nContext();\n return (\n \n {i18n.t('appDetails.titles.faqs')}\n \n {faqs &&\n faqs.length !== 0 &&\n faqs.map((faq) => (\n \n {faq.question}\n \n \n ))}\n \n \n );\n};\n\nFAQ.propTypes = {\n faqs: PT.arrayOf(PT.shape({})).isRequired,\n};\n\nexport default FAQ;\n","import React from 'react';\nimport PT from 'prop-types';\nimport { I18nProvider } from '@procore/core-react';\nimport { AppContextProvider } from '@/react/context/AppContext';\nimport { SearchProvider } from '@/react/context/SearchContext';\nimport { Navbar } from '@/react/components';\nimport i18n from '../i18n';\nimport FAQ from './FAQ';\n\nconst FAQContainer = ({ faqs, header }) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nFAQContainer.propTypes = {\n faqs: PT.arrayOf(PT.shape({})).isRequired,\n header: PT.shape({}).isRequired,\n};\n\nexport default FAQContainer;\n","const images = require.context('../../../public/images', true);\nwindow.imagePath = (name) => images(`./${name}`, true);\n\nimport 'stylesheets/application.scss';\nimport '../react/shared/polyfill';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport $ from 'jquery';\nimport 'jquery-modal';\n\nimport \"slick-carousel/slick/slick.css\";\nimport \"slick-carousel/slick/slick-theme.css\";\n\nimport '@/scripts';\n\nimport {\n TopNavSearchForm,\n TopNavHeader,\n CompanyPicker,\n InstallRequestButton,\n} from '@/react/components';\nimport Popover from '@/react/shared/Popover';\nimport {\n ListingsIndex,\n ListingsShow,\n MarketplaceIndex,\n} from '@/react/views/V1';\nimport {\n MarketplaceListingContainer,\n MarketplaceAppContainer,\n FAQContainer,\n} from '@/react/views/V2';\n\n// Make React/Jquery Dependencies Global For Rails View Consumption\nwindow.React = React;\nwindow.ReactDOM = ReactDOM;\nwindow.$ = $;\nwindow.jQuery = $;\n\nwindow.TopNavSearchForm = TopNavSearchForm;\nwindow.TopNavHeader = TopNavHeader;\nwindow.Popover = Popover;\nwindow.CompanyPicker = CompanyPicker;\nwindow.InstallRequestButton = InstallRequestButton;\nwindow.ListingsIndex = ListingsIndex;\nwindow.ListingsShow = ListingsShow;\nwindow.MarketplaceListingContainer = MarketplaceListingContainer;\nwindow.MarketplaceAppContainer = MarketplaceAppContainer;\nwindow.Index = MarketplaceIndex;\nwindow.FAQContainer = FAQContainer;\n","$(function() {\n $('[data-behavior=\"modal\"]').click(function(event) {\n event.preventDefault();\n\n $(this).modal({\n fadeDuration: 500\n });\n })\n});\n\n\n// Procore Modal\n$(function() {\n $('[data-behavior=\"modal\"]').click(function(event) {\n event.preventDefault();\n\n $(this).modal({\n fadeDuration: 500\n });\n })\n});\n","$(document).ready(function() {\n // Functions for mobile menu slideout\n $(\"html\").on(\"click\", \".pc-mp-header--menu-button-container\", function() {\n $('.pc-mp-header--menu-sections-container').toggleClass(\"opened\");\n $('body').toggleClass(\"no-scroll\");\n });\n});\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","NodeList","prototype","forEach","Array","Element","CharacterData","DocumentType","item","remove","this","parentNode","removeChild","ArrowNext","React","Box","display","alignItems","justifyContent","style","height","ArrowRight","size","color","ArrowPrev","ArrowLeft","FUSE_CONFIG","ignoreLocation","shouldSort","threshold","location","distance","minMatchCharLength","includeMatches","findAllMatches","name","weight","key","params","axios","method","url","data","additional_properties","headers","window","host","document","getElementsByName","getAttribute","debounce","func","delay","timer","_this","_len","arguments","length","args","_key","clearTimeout","setTimeout","apply","highlight","results","maxLength","undefined","highlightClass","filter","_ref3","matches","_ref4","highlightedItem","_objectSpread","match","text","regions","truncated","currStringLen","checkLengthAndTrunc","string","truncatedString","slice","content","reduce","acc","_ref","idx","_ref2","_slicedToArray","start","end","beforeMatch","highlightedMatch","afterMatch","concat","push","createElement","className","_toConsumableArray","renderHighlightedText","value","indices","cx","classNames","styles","i18n","StyledItem","styled","Menu","Item","_templateObject","_taggedTemplateLiteral","colors","gray96","gray85","gray90","AppResults","apps","searchTerm","result","arr","app","viewAll","slug","searchResultsItem","Link","href","Flex","searchResultsItemInner","alt","src","small_logo_url","searchResultsThumbnail","paddingLeft","direction","Typography","search_description","debounceHandleSearchAnalytics","count","trackEvent","marketplace_search_term","marketplace_search_count","StyledSearch","Search","_templateObject2","_state$appSearchResul","appsSearchApiPath","fuse","searchDataState","_ref2$propSearchTerm","propSearchTerm","propSetSearchTerm","_useState2","useState","setLocalSearchTerm","setSearchTerm","useEffect","_useState4","appSearchResults","showResultsMenu","state","setState","handleSetState","newState","get","then","res","Fuse","search","searchWrapper","autoComplete","searchInput","disabled","loading","placeholder","onFocus","onBlur","onChange","val","target","onSubmit","searchResultsVisible","searchResultsHidden","searchResultsWrapper","Card","searchResultsMenu","onMouseDown","preventDefault","Options","searchResultsMenuOptions","P","searchResultsText","triggerModalFromClickEvent","$","modal","fadeDuration","MobileMenu","_React$Component","props","_classCallCheck","_callSuper","_inherits","appsBasePath","paramKey","paramVal","category","type","links","getMobileLink","categories","getCategoryPath","_this$props","faqsPath","partnerSignupPath","buildAppPath","communityPath","webinarsPath","signInPath","signOutPath","changeCompanyPath","isSignedIn","getLinkPath","getCategoriesMobileLinks","onClick","DIRECTIONS_CLASS_MAP","east","south","west","Dropdown","isOpen","isOpenInitial","toggleDropdownState","bind","_this2","closeOnSelect","dropdownDirection","dropdownTarget","menuStyles","dropdownDirectionClass","dropdownClasses","children","defaultProps","OnClickOutside","Avatar","avatarCircle","userIcon","email","company","right","dropdownContainer","footer","sendAnalytics","action","label","procoreLabel","procoreAdditionalFields","gtagValue","gtag","event_category","event_label","app_name","TopNavHeader","isSolid","searchOpacity","handleScroll","addEventListener","removeEventListener","animateOnScroll","yOffset","pageYOffset","documentElement","scrollTop","path","indexOf","exec","fallBackUrl","currentUser","currentCompany","marketplaceLogoURL","searchPath","marketplaceBasePath","isHeroSearchVisible","headerClasses","TopNavSearchForm","openIdeaSubmitModal","rel","active","isLinkActive","UserAvatar","signOutWithFallbackPath","img","_templateObject3","_templateObject4","SlideContainer","_templateObject5","Slide","_templateObject6","white","EmptySlide","_templateObject7","spacing","lg","SlickWrapper","_templateObject8","ArrowContainer","_templateObject9","LargeSpacingDivider","_templateObject10","Modal","_templateObject11","_templateObject12","_templateObject13","button","_templateObject14","H1","_templateObject15","_templateObject16","_templateObject17","sm","_templateObject18","md","xs","gray94","div","_templateObject19","_templateObject20","UnderlineModalHeader","Header","_templateObject21","MinWidthModal","_templateObject22","MinWidthModalBody","Body","_templateObject23","MediaContainer","_templateObject24","SidebarContainer","_templateObject25","UnderlineLink","_templateObject26","SlickDots","ul","StyledSlider","Slider","SingleCarousel","settings","slides","handleOnSlideClick","sliderSettings","focusOnSelect","dots","infinite","slidesToShow","slidesToScroll","fade","adaptiveHeight","appendDots","prevArrow","nextArrow","slide","index","appName","_ref$email","_ref$company","_ref$developerAppId","developerAppId","contactUsEmail","createLead","_ref$sendAnalytics","_ref$isSignedIn","useI18nContext","formSubmitted","setFormSubmitted","modalOpen","setModalOpen","openContactModal","useCallback","MktoForms2","loadForm","form","vals","Email","Company","Marketplace_Interest__c","marketplaceDeveloperAppId","marketplacePartnerEmail","marketplaceProcoreBuiltApp","onSuccess","closeContactModal","sent_form","Button","variant","t","defaultValue","Tooltip","overlay","placement","trigger","open","onClickOverlay","onClose","paddingTop","H2","SmallLogoWrapper","MediumLogoWrapper","SmallLogo","Container","ContentContainer","arrows","css","SlickArrowPrev","SlickArrowNext","OrangeLink","ImageModal","ModalImageBody","ModalImage","CloseImageModalButton","HeaderText","UnstyledLink","DropdownMenu","DropdownItem","Divider","HeaderContainer","PageHeader","Page","ResponsiveFlex","TruncatedText","ADDITIONAL_CATEGORY_LINKS","COMPONENT_MAP","iframe","fullscreen","sidepanel","NAVIGATION_MENU_ITEMS","icon","Wrench","testid","PeopleGroup","Handshake","LightBulb","Presentation","BookInfo","BottomBorderFlex","StyledComponentsText","black","FlexFullWidthChildren","components","isBeta","mappedComponents","padding","minHeight","minWidth","image_url","LazyLoad","width","maxHeight","grow","margin","intent","str","n","useWordBoundary","subString","substr","lastIndexOf","truncate","status","component","Boolean","join","PopoverHeader","PopoverBody","Popover","Content","zIndex","maxWidth","gap","ShieldStar","blue50","ExternalLink","companyName","getActionButton","_ref$metricsData","metricsData","user","built_by","contact_us_email","create_lead","developer_app_id","small_logo","price_button","seller","security_questionnaire_visible","direct_installable","installCount","headerIcons","Icon","Building","translation","isVisible","Help","Download","toNumber","precision","Breadcrumbs","LinkButton","ChevronLeft","gray15","flexWrap","marginRight","imagePath","Title","fontWeight","marginTop","marginLeft","SecurityBadge","Pill","borderRadius","ContactForm","isInstalled","installed","StyledSidebar","MenuItem","attrs","orange50","FlexMenuContainer","suffix","endsWith","pathname","paddingBottom","paddingRight","StyledLI","li","StyledH3","H3","StyledPlus","Plus","as","listStyleType","html","setParsedHTML","container","innerHTML","trim","body","appendChild","wistiaIframe","getElementsByTagName","wistiaScript","description","video","parentElement","wistiaDom","getElementsByClassName","substring","split","s","async","s1","head","append","position","left","opacity","overflow","top","transition","objectFit","outerHTML","Styles","SectionHeader","VersionHistory","history","showingVersion","_React$useState2","setOpen","isArray","every","v","changelog","version","semantic_version","reverse","VERSION_HISTORY","created_at","Footer","FooterButtons","onSearchChange","searchValue","setSearchValue","stopPropagation","I18n","companyCounter","CompanyPicker","companyId","handleSearch","companies","toLowerCase","setCompanyId","continuePath","linkTo","selectedCompany","find","c","procore_root","qs","SearchInput","renderCompanies","POST_HEADERS","getHeaders","querySelector","popoverWrapper","popoverTarget","popoverContent","api","installRequestsPath","notes","InstallRequestButton","requestSent","error","on","AFTER_CLOSE","setNotes","self","response","setRequestSent","setError","close","_this3","_this$state","_this$props2","requested","installRequestContainer","buttonContainer","popover","requestModal","notesInput","modalFooter","footerButtons","footerButton","request_sent","requestInstall","viewBox","fill","xmlns","d","SearchContext","createContext","SearchProvider","setFuse","_useState6","setAppSearchResults","_useState8","isLoading","setIsLoading","performSearch","useMemo","term","contextValue","Provider","highlightedResults","SearchBox","backgroundColor","hoverColor","Input","SearchButton","SearchResultsMenu","styledSearch","_useSearch","useContext","searchRef","useRef","handleClickOutside","event","current","contains","ref","SearchResults","InfoButton","MenuTile","menuRows","rows","renderMenu","Grid","gutterX","gutterY","row","rowIndex","rowKey","Row","itemIndex","Col","renderMenuItem","OverlayTrigger","appDetails","installationRequest","apiPath","present","companyInstallationRequestsEnabled","sectionNavEnabled","header","listing","query","AppContext","useAppContext","AppContextProvider","StyledBox","CompanyName","colWidth","Import","red50","stroke","cursor","Person","useMediaQuery","matchMedia","setMatches","mediaQueryList","handleChange","toggleMenu","title","MobileLogo","Clear","BodyContainer","block","role","FullButton","FooterContainer","UserSection","MenuWrapper","MenuHeader","MenuBody","MenuFooter","StyledLogo","NavContainer","MobileMenuContainer","isSearchVisible","isMenuOpen","setIsMenuOpen","isMobile","isTablet","isDesktop","ProcoreLogo","fontSize","flex","SearchBar","List","SupportMenu","ProfileBox","fillOpacity","strokeWidth","SidebarWrapper","ListingsAppsWrapper","AppsNotFoundWrapper","FlexListMarginChild","FlexList","startsWith","replace","listings","ListingsSidebar","boxProps","marginBottom","space","wrap","ListingsAppCard","NoResults","appInstallPost","componentMap","ListingsShow","_screenshots$","headerProps","pricing","website","category_names","install_path","screenshots","countries","versioning_history","security_badge","new_draft_preview","security_questionnaire_document","filteredComponents","expanded","setExpanded","toggleExpanded","colWidthsContent","tabletLg","tabletMd","colWidthSidebar","parsedHTML","imageModalOpen","setImageModalOpen","currentImageUrl","setCurrentImageUrl","speed","beforeChange","curr","WistiaExtract","colStackCap","isCompanyAdmin","dangerouslySetInnerHTML","__html","borderBottom","alignContent","ChevronUp","ChevronDown","Info","region","rc","includes","regionCountry","float","useVisibility","offset","initialVisibility","setIsVisible","elementRef","checkVisibility","_elementRef$current$g","getBoundingClientRect","bottom","withinViewport","innerHeight","Hero","_useVisibility2","heroSearchElement","setSearchDataState","assign","lineHeight","createI18njs","locale","translations","en","navbar","community","partner","idea","webinars","faq","companySwitch","logout","supportCenter","hero","tagline","builtBy","builtByOverlay","supportedBy","supportedByOverlay","installs","installsOverlay","securityBadge","beta","partnerAnswered","link","responsibility","learnMore","loginToInstall","mustBeAdmin","installApp","noHelpfulLinks","noRegions","partnerSecurityReview","partnerSecurityDescription","partnerSecurityLink","partnerSecurityBadge","partnerSecurityBadgeLink","titleNoPricing","soldBy","faqs","descriptionNoPricing","contactPartner","faqsHeaderPart1","faqsHeaderPart2","faqsHeaderPart3","subscriptionRequired","yes","no","thirdPartyConnectorRequired","freeTrialOffered","security","informationNotProvided","informationNotProvidedDetails","review","reviewDetails","aboutApp","legalName","headquarters","privacy","informationSecurity","applicationSecurity","dataProcessingLocations","subprocessors","subprocessorsPersonalData","dedicatedFunction","audits","hasAudits","accredidations","penTesting","dataLoss","vulnerabilityDisclosure","vulnerabilityDisclosureProgram","disclosureUrl","bugBounty","aesEncryption","tlsEncryption","ssoSupported","samlSupported","mfaRequired","pfasSupported","contactMessage","technicalMeasures","securityTeam","bugBountyProgram","vulnerabilityProgram","standards","media","titleNoMedia","descriptionNoMedia","toolsInformation","toolsInformationLink","labels","titles","contact","features","functionality","helpfulLinks","howItWorks","overview","requirements","summary","support","tools","embeddedType","appType","availableIn","joinCommunity","integrations","inThe","displayType","sideBar","embeddedTypePopover","both","embedded","dataConnector","dataConnectorAndEmbedded","appTypePopover","appTypeLink","returnToListing","regionModal","historyModal","noChangelog","sectionNav","contactUs","formDescription","thanksForVisiting","submitted","issues","mustLogIn","myAccount","login","searchLoading","noResults","learnHow","thankYou","ariaLabels","supportButton","account","global","appMarketplace","pricingDescription","connectorRequired","hasTrials","pricingUrl","blue45","tabletSm","textDecoration","gray70","sanitizeOptions","allowedTags","allowedAttributes","a","allowedStyles","useSanitizedString","sanitizedString","setSanitizedString","sanitizeHtml","useSanitizedArray","array","sanitizedArray","setSanitizedArray","sanitizedDescription","sanitizedHowItWorks","sanitizedFeatures","sanitizedRequirements","feature","requirement","tool","Logo","Label","BreakingLine","hr","ConditionalLine","condition","affirmative","negative","testId","Check","green30","red30","CollapsibleSection","openSection","setOpenSection","sectionId","questionnaire","sanitizedAbout","about","securityStandards","security_standards","standard","standard_name","other_security_standards","blue94","RibbonPerson","gray40","company_legal_name","headquarters_country","Location","gray30","data_processing_locations","has_subprocessors","subprocessors_details","has_sensitive_data","sensitive_data_handling_details","has_security_contact","security_email","has_security_audits","has_bug_bounty_program","has_disclosure_program","disclosure_program_url","has_security_standards","has_penetration_testing","can_notify_procore","has_data_encryption_at_rest","has_data_encryption_in_transit","has_sso_support","has_saml_support","has_mfa_support","has_fas_support","ContactContainer","ContactsContainer","ContactType","DualSectionsContainer","EmptyState","HelpfulLinksContainer","LinksContainer","SectionContainer","StyledExternalLink","StyledExternalLinkContainer","StyledH1","StyledH2","StyledLink","SupportCard","CountryList","RegionModal","isRegionsOpen","setIsRegionsOpen","mappedCountries","setMappedCountries","newMappedCountries","columns","column","Math","ceil","country","regionIndex","_countries$region","alignSelf","DividerSection","VersionHistoryModal","versionHistory","isModalOpen","setIsModalOpen","w","EMBEDDED_TYPES","getEmbeddedType","hasEmbedded","some","AppType","getType","EmbeddedTypePopover","EmbeddedType","translatedComponents","CategoryPill","xxs","SectionLabel","RowGapFlex","SideBarSection","_versioning_history","_useAppContext$appDet","latestVersion","hasEmbeddedComponents","setHasEmbeddedComponents","displayVersion","rowGap","ModalLogo","MediaSection","Section","ModalBody","logoURL","imageURL","WistiaImage","WistiaEmbed","VideoPreview","wistiaId","onBeforeChange","setMainCarousel","thumbnailCarousel","openImageModal","asNavFor","ImageStack","VideoThumbnail","setThumbnailCarousel","mainCarousel","responsive","breakpoint","MAX_THUMBNAIL_SLIDES","PlayButton","handleBeforeChange","_","next","_screenshots","MainCarousel","ThumbnailCarousel","ScrollAnchor","LocalTab","BorderBox","FlexContainer","MediaResponsiveFlex","SectionNav","sections","sectionRefs","section","overRideActiveSection","setOverRideActiveSection","activeSection","setActiveSection","lastIntersection","targetRefs","currentIntersections","setCurrentIntersections","setLastIntersection","intersectionMap","observer","IntersectionObserver","entry","previous","isIntersecting","observe","unobserve","disconnect","useIntersection","scrollIntoView","behavior","overviewRef","functionalityRef","pricingRef","securityRef","supportRef","AppHeader","desktopSm","MediaCarousel","SideBar","OverviewSection","border","borderTop","FunctionalitySection","how_it_works","feature_bullets","product_tools","xxl","background","PricingSection","pricing_description","subscription_required","connector_required","has_trials","pricing_url","SecuritySection","security_questionnaire","SupportSection","helpful_links","I18nProvider","Navbar","AppDetails","ListingContainer","MarketplaceListing","FAQBox","orange40","question","answer","FAQ","images","require","ReactDOM","jQuery","ListingsIndex","MarketplaceListingContainer","MarketplaceAppContainer","Index","MarketplaceIndex","FAQContainer","click","ready","toggleClass"],"sourceRoot":""}