{"version":3,"file":"static/js/15.84c23da5be54b2ad5ff4.chunk.js","mappings":";yYAQA,QAAgBA,GACZC,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKC,UAAW,GAAGF,EAAME,8BACxBF,aAAK,EAALA,EAAOG,MAAOF,EAAAA,cAAA,OAAKC,UAAW,GAAGF,EAAME,2BAA4BF,aAAK,EAALA,EAAOG,UC4D9EC,gnBAAL,SAAKA,GACDA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,+CACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,iBACAA,EAAAA,EAAA,oBACH,CAPD,CAAKA,IAAAA,EAAO,KAyBN,MAAOC,UAA0BJ,IAAAA,UAwBnCK,YAAYN,GACRO,MAAMP,GAxBH,KAAAQ,MAAiC,CACpCC,QAAQ,EACRC,MAAO,GACPC,SAAU,GACVC,gBAAiB,GACjBC,QAAST,EAAQU,OACjBC,gBAAiB,KACjBC,kBAAmB,GAGhB,KAAAC,qBAAuC,CAC1CC,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCC,GAAI,CAAEH,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCE,GAAI,CAAEJ,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,IAEvCG,UAAU,GAGP,KAAAC,gBAAqDzB,IAAAA,YAE3C,KAAA0B,iBAAuD1B,IAAAA,YAwEvD,KAAA2B,kBAAoB,KACjC,MACIC,WAAW,sBAAEC,EAAqB,2BAAEC,EAA0B,uBAAEC,IAChEC,KAAKjC,MAET,OACIC,IAAAA,cAAA,QACIC,UAAU,wCAAuC,aACrC4B,EACZI,KAAK,mCACLC,KAAK,OACLC,aAAa,MACbC,SAAUJ,KAAKK,iBAEdL,KAAKzB,MAAMI,iBAAmB2B,EAAAA,gBAAgBC,YAAYP,KAAKzB,MAAMI,kBAClEX,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,SAAOC,UAAW,2CAA4CuC,QAAS,6CAClET,GAEL/B,IAAAA,cAAA,UACIyC,GAAG,6CACHxC,UAAU,kFACVyC,SAAUV,KAAKW,2BAEdX,KAAKY,qBAIlB5C,IAAAA,cAAA,OAAKC,UAAU,qEACXD,IAAAA,cAAA,SACI6C,KAAK,OACLC,WAAS,eACGhB,EACZ7B,UAAU,0DACV8C,YAAajB,EACbkB,MAAOhB,KAAKzB,MAAME,MAClBiC,SAAUV,KAAKiB,eACfC,IAAKlB,KAAKP,gBACV0B,UAAW,MAEfnD,IAAAA,cAAA,UAAQC,UAAU,0CAAyC,aAAa4B,EAAuBuB,MAAM,aAEtG,EAIE,KAAAf,gBAAmBgB,IAChCA,EAAMC,iBAEN,MAAM7C,EAAQ8C,IAAIvB,KAAM,gCAAiC,MAEpDvB,IAILuB,KAAKwB,SAAS,CACV5C,QAAST,EAAQsD,UAGrBzB,KAAK0B,kBAAkBjD,GAClBkD,MAAKC,IACoB,IAAlBA,EAAOC,OACP7B,KAAKwB,SAAS,CACV9C,SAAUkD,EACVhD,QAAST,EAAQ2D,WAGrB9B,KAAKwB,SAAS,CACV9C,SAAUkD,EACVhD,QAAST,EAAQ4D,iBAI5BC,OAAMC,IACHjC,KAAKwB,SAAS,CACV5C,QAAST,EAAQ+D,OACnB,IACJ,EAGO,KAAAC,yBAA4Bd,IACzCrB,KAAKwB,SAAS,CACVY,kBAAmBf,EAAMgB,OAAOrB,OAClC,EAGW,KAAAsB,cAAgBC,UAC7B,MAAM,cACFC,EACAC,SACIC,aAAa,UAAEC,KAEnB3C,KAAKjC,MAAM6E,QACTC,EAAgB,IAAIC,EAAAA,qBAAqBC,EAAQC,SAAUL,EAAW,QAAIM,EAAWjD,KAAKjC,MAAM6E,QAAQH,SACxGS,QAAuBC,EAAAA,EAAAA,oBAAmBN,EAAeL,GAE/D,IAAKU,EAED,OADAlD,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MAAM,oCAC5BoB,QAAQC,QAAQ,IAG3B,MAAMC,QAAmBvD,KAAKwD,sBAAsBT,GAQpD,OANA/C,KAAKwB,SAAS,CACViC,0BAA2BF,EAC3B3E,QAAST,EAAQuF,qBACjB5E,gBAAiBoE,IAGdK,CAAU,EAGJ,KAAAtC,eAAkBI,IAC/BrB,KAAKwB,SAAS,CACV/C,MAAO4C,EAAMgB,OAAOrB,OACtB,EAGW,KAAA2C,0BAA4B,KACzC3D,KAAKwB,SAAS,CACV5C,QAAST,EAAQ4D,aACnB,EAGW,KAAA6B,qBAAwB3D,IACrC,MAAM4D,EAAa5D,GAAQ6D,SAAS7D,EAAK8D,QAAQ,IAAIC,OAAOhE,KAAKzB,MAAME,MAAO,KAAM,oBAEpF,OACIT,IAAAA,cAAA,OACIC,UAAU,0CAEVgG,wBAAyB,CAAEC,OAAQL,GAAc,KACnD,EAIO,KAAAM,iBAAmB,IACzBnE,KAAKjC,MAAM6B,UAAUwE,0BACvBL,QAAQ,UAAW/D,KAAKzB,MAAMG,SAASmD,OAAOwC,YAC9CN,QAAQ,YAAa,GAAG/D,KAAKjC,MAAM6B,UAAU0E,4BAA4BtE,KAAKzB,MAAMG,SAASmD,OAAS,EAAI,IAAM,MAuExG,KAAA0C,0BAA4BhC,UACzC,MAAM,gBACFiC,EACA5B,SAAS,cAAEJ,GAAe,oCAC1BiC,GACAzE,KAAKjC,MACH2G,EAAY1E,KAAKzB,MAAMQ,kBACvB4F,EAAQF,EACR,IAAIG,EAAAA,4BACAJ,EACAK,EAAO9B,QAAQC,SACf6B,EAAOC,SACPD,EAAO9B,QAAQgC,sBAAwB,KACvCN,EACAC,GAEJ,IAAIE,EAAAA,4BACAJ,EACAK,EAAO9B,QAAQC,SACf6B,EAAOC,SACPD,EAAO9B,QAAQgC,sBAAwB,MAE3CnD,QAAeoD,EAAAA,EAAAA,wBAAuBL,EAAOnC,GAOnD,OANAxC,KAAKwB,SAAS,CACVhD,QAAQ,EACRyG,YAAY,IAGhBC,OAAOC,SAASC,SACTxD,CAAM,EAuCA,KAAAjB,0BAA6BU,IAC1CrB,KAAKwB,SAAS,CACVzC,kBAAmBsG,OAAOC,SAASjE,EAAMgB,OAAOrB,MAAO,KACzD,EA+CW,KAAAuE,oBAAsB,KACnC,GAAIvF,KAAKzB,MAAMC,OAAQ,CACnB,MAAMgH,GAAUC,EAAAA,EAAAA,kBAAiB,QAASzF,KAAKjC,MAAM2H,iBAAmB,uBAAwB,KAChGC,EAAAA,EAAAA,kBAAiB3F,KAAKjC,MAAM2H,iBAAmBF,EAAS,wBACxDxF,KAAK4F,eACL5F,KAAKN,iBAAiBmG,QAASC,QAGnC9F,KAAKwB,SAAS,CACVhD,QAASwB,KAAKzB,MAAMC,OACpBI,QAAST,EAAQU,SAGjBmB,KAAKzB,MAAM0G,aACXC,OAAOC,SAASC,SAChBpF,KAAKwB,SAAS,CACVyD,YAAY,KA5ZxB,CAEOc,sBAAmB,IAAAC,EACM,QAA5BA,EAAAhG,KAAKP,gBAAgBoG,eAAO,IAAAG,GAA5BA,EAA8BF,OAClC,CAEOG,oBACHjG,KAAK4F,cACT,CAEOM,uBAAoB,IAAAC,EACK,QAA5BA,EAAAnG,KAAKP,gBAAgBoG,eAAO,IAAAM,GAA5BA,EAA8BL,OAClC,CAEcM,oBACV,OAAOpG,KAAKzB,MAAMK,UAAYT,EAAQuF,oBAC1C,CAEO2C,sBAAsBC,EAAoCC,GAC7D,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,QAAUuI,CAInD,CAEOE,SACH,MACI5G,WAAW,qBAAE6G,EAAoB,kBAAEC,IACnC1G,KAAKjC,MAEH4I,EAAUC,EAAAA,EAAA,GACT5G,KAAKjC,OAAK,IACbE,UAAW,2BACX4I,OAAQ7G,KAAKuF,oBACb/G,OAAQwB,KAAKzB,MAAMC,OACnBsI,UAAWL,IAGf,OACIzI,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAC+I,EAAAA,MAAKC,OAAAC,OAAA,GAAKN,GACP3I,IAAAA,cAACkJ,EAAAA,YAAW,CAACL,OAAQ7G,KAAKuF,qBACrBvF,KAAKoG,eACFpI,IAAAA,cAAA,UACI6C,KAAK,SACL5C,UAAU,yBAAwB,aACtByI,EACZS,QAASnH,KAAK2D,4BAGrB8C,GAEJzG,KAAKoH,kBAEVpJ,IAAAA,cAAA,UACI6C,KAAK,SACL5C,UAAU,2CAA0C,aACxCwI,EACZU,QAASnH,KAAKuF,oBACdrE,IAAKlB,KAAKN,kBAEV1B,IAAAA,cAAA,aACCyI,GAIjB,CAgJQW,iBACJ,OAAQpH,KAAKzB,MAAMK,SACf,KAAKT,EAAQuF,qBACT,MAAM,gBAAE5E,EAAe,0BAAE2E,GAA8BzD,KAAKzB,MACtD8I,EAAST,EAAAA,EAAA,GACR5G,KAAKjC,OAAK,IACbuJ,cAAetH,KAAKjC,MAAMuJ,eAAiBtH,KAAKhB,qBAChD+D,QAASjE,EACTyE,WAAYE,EACZ8D,qBAAsBvH,KAAKuE,0BAC3BiD,wBAAyBxH,KAAKmC,yBAC9BsF,oBAAqBzH,KAAK4D,qBAC1B8D,WAAY1H,KAAKL,sBAGrB,OAAO3B,IAAAA,cAAC0F,EAAoBsD,OAAAC,OAAA,GAAKI,IAErC,KAAKlJ,EAAQ4D,YACT,MAAM4F,EAAYf,EAAAA,EAAA,GACX5G,KAAKjC,OAAK,IACbuJ,cAAetH,KAAKjC,MAAMuJ,eAAiBtH,KAAKhB,qBAChD4I,aAAc5H,KAAKsC,cACnB5D,SAAUsB,KAAKzB,MAAMG,SACrB+I,oBAAqBzH,KAAK4D,qBAC1B8D,WAAY1H,KAAKL,oBACjBkI,sBAAuB7H,KAAKmE,mBAGhC,OACInG,IAAAA,cAAC8J,EAAAA,UAAS,KACN9J,IAAAA,cAAC+D,EAAWiF,OAAAC,OAAA,GAAKU,KAI7B,KAAKxJ,EAAQsD,QACT,OACIzD,IAAAA,cAAC8J,EAAAA,UAAS,KACL9H,KAAKL,oBACN3B,IAAAA,cAAC+J,EAAO,CAAC9J,UAAU,2BAA2BC,IAAK8B,KAAKjC,MAAM6B,UAAUoI,4BAIpF,KAAK7J,EAAQ2D,SACT,MAAM,0BAAEmG,EAAyB,+BAAEC,GAAmClI,KAAKjC,MAAM6B,UAEjF,OACI5B,IAAAA,cAAC8J,EAAAA,UAAS,KACN9J,IAAAA,cAAA,KAAGC,UAAU,iDAAiD+B,KAAKmE,oBAClEnE,KAAKL,oBACN3B,IAAAA,cAACmK,EAAiB,CAAClG,MAAOgG,EAA2B/J,IAAKgK,KAItE,KAAK/J,EAAQ+D,MACT,OACIlE,IAAAA,cAAC8J,EAAAA,UAAS,KACL9H,KAAKL,oBACN3B,IAAAA,cAAA,OAAKC,UAAU,mBAAkB,YAAW,aACvC+B,KAAKjC,MAAM6B,UAAUwI,qBAKtC,QACI,OAAOpK,IAAAA,cAAC8J,EAAAA,UAAS,KAAE9H,KAAKL,qBAEpC,CAsCQiG,eACJ,MAAM,oCAAEnB,EAAmC,SAAE4D,GAAarI,KAAKjC,MAGzDY,EAAkB8F,GAAuC4D,EAAWA,EAAW,GAG/E3D,GAAY4D,EAAAA,EAAAA,IAAatI,KAAKjC,MAAM6E,QAAQH,UAClD8F,EAAAA,EAAAA,mBAAkB7D,GAElB1E,KAAKwB,SAAS,CACV7C,gBAAiBA,EACjBI,kBAAmB2F,GAE3B,CAEQ9D,mBACJ,MAAM,gBAAEjC,EAAe,kBAAEI,GAAsBiB,KAAKzB,MACpD,OAAII,GAAmB2B,EAAAA,gBAAgBC,YAAY5B,GACxCA,EAAgB6J,KAAKC,IAExB,MAAMC,EAAaD,EAAezF,WAAajE,EAC/C,OACIf,IAAAA,cAAA,UAAQgD,MAAOyH,EAAezF,SAAU2F,IAAKF,EAAezF,SAAU4F,SAAUF,EAAU,gBAAiBA,GACtGD,EAAeI,KACX,IAId,EACX,CAQQnH,kBAAkBoH,GACtB,MACIlG,SAAS,cACLJ,EACAC,SACIC,aAAa,UAAEC,MAGvB3C,KAAKjC,OACH,kBAAEgB,GAAsBiB,KAAKzB,MAC7BwK,EAA6C,CAAC,EAcpD,OAZAA,EAAoBC,QAAU,CAC1BC,UAAWtG,EACXuG,UAAWnK,GAMXgK,EAAoBI,mBAAoB,EAE5CJ,EAAoBK,gBAAkB,IAAIN,MAEnCO,EAAAA,EAAAA,uBAAsB,CAAEC,cAAe9G,GAAiBuG,EACnE,CAEQxG,4BAA4BQ,GAChC,MACIH,SAAS,cACLJ,EACAC,SACIC,aAAa,UAAEC,MAGvB3C,KAAKjC,MACH0C,EAAKsC,EAAQwG,gBAAkBxG,EAAQwG,gBAAkBxG,EAAQC,SAEvE,OAAOwG,EAAAA,EAAAA,iCACH,IAAIC,EAAAA,qCAAqChJ,EAAIkC,EAAW,GAAI3C,KAAKjC,MAAM6E,QAAQH,SAC/ED,EAER,GA5XUkH,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,kCC/FP,MAAOC,UAAiB5L,EAAAA,cAG1BK,YAAYN,EAAuBQ,GAC/BD,MAAMP,GAHO,KAAA8L,WAAiD7L,EAAAA,YA2CjD,KAAA8L,WAAczI,IAC3BrB,KAAKwB,SAAS,CAAEuI,cAAe1I,EAAMgB,OAAOrB,QAExChB,KAAKjC,MAAM2C,UACXV,KAAKjC,MAAM2C,SAAS,CAChBsJ,WAAYhK,KAAKjC,MAAMiM,WACvBC,SAAU5I,EAAMgB,OAAOrB,MACvBkJ,cAAe7I,EAAMgB,OAAO8H,aA9CpCnK,KAAKzB,MAAQ,CACTwL,cAAe,GAEvB,CAEO9D,oBACCjG,KAAK6J,WAAWhE,UAChB7F,KAAK6J,WAAWhE,QAAQkE,cAAgB,EAEhD,CAEOvD,SACH,MAAM,WAAEwD,EAAU,aAAEI,EAAY,aAAEC,GAAiBrK,KAAKjC,MAExD,OACIC,EAAAA,cAAA,UACIyC,GAAI,uBAAuBuJ,IAC3B9I,IAAKlB,KAAK6J,WAAU,aACRQ,EACZpM,UAAU,uBACVyC,SAAUV,KAAK8J,YAEdM,EAAa5B,KACT8B,GACGA,GACItM,EAAAA,cAAA,UACIgD,MAAOsJ,EAAK7J,GACZkI,IAAK2B,EAAK7J,GACVmI,UAAW5I,KAAKzB,MAAMwL,gBAAmBO,EAAK7J,GAAE,iBAChCT,KAAKzB,MAAMwL,gBAAmBO,EAAK7J,IAElD6J,EAAKtJ,SAMlC,EC3EG,MAAMmH,EAAqBpK,GAC9BC,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKC,UAAU,8CACfD,EAAAA,cAAA,OAAKC,UAAU,4CAA4CF,EAAMkE,OACjEjE,EAAAA,cAAA,OAAKC,UAAU,iEAAiEF,EAAMG,oBCqB9F,IAAqBqM,EAArB,cAAmDvM,EAAAA,cAS/CK,YAAYN,GACRO,MAAMP,GAHO,KAAAyM,SAA8CxM,EAAAA,YA2G9C,KAAAyM,aAAe,KAC5B,MAAMC,OAA8BzH,IAAnBjD,KAAKjC,MAAM4M,IAAoB,EAAI3K,KAAKjC,MAAM4M,IAE3DC,MAAM5K,KAAKzB,MAAMsM,eAAiB7K,KAAKzB,MAAMsM,aAAeH,EAC5D1K,KAAKjC,MAAM2C,UAAYV,KAAKjC,MAAM2C,SAASgK,GAE3C1K,KAAKjC,MAAM2C,UAAYV,KAAKjC,MAAM2C,SAASV,KAAKzB,MAAMsM,eA7G1D7K,KAAKzB,MAAQ,CAAEsM,aAAc9M,EAAM+M,cAAgB,GACnD9K,KAAK+K,cAAgB/K,KAAK+K,cAAcC,KAAKhL,OAE7CiL,EAAAA,EAAAA,KACI,IAAMjL,KAAKjC,MAAM+M,eACjB,KACI9K,KAAKwB,SAAS,CAAEqJ,aAAc7K,KAAKjC,MAAM+M,cAAgB,GAAI,GAGzE,CAEOtE,SACH,MAAM0E,EAA8B,GAAGlL,KAAKjC,MAAMoN,+CAC5CC,EAA6B,GAAGpL,KAAKjC,MAAMsN,+CAC3CC,EAAWtL,KAAKjC,MAAM+M,eAAiB9K,KAAKjC,MAAM4M,IAClDY,EAAcvL,KAAKjC,MAAM+M,eAAiB9K,KAAKjC,MAAMyN,IACrDC,EAAezL,KAAKzB,MAAMsM,aAChC,IAAIa,EAAa,GACbJ,EAEAI,EAAa,WACN1L,KAAKjC,MAAMuN,WAElBI,EAAa,cAEjB,MAAMC,EAAoBC,GAAmB,KACzC5L,KAAK6L,qBAAqBD,EAAO,EAGrC,OACI5N,EAAAA,cAAA,OAAKC,UAAU,YACXD,EAAAA,cAAA,UACIsN,SAAUtL,KAAKjC,MAAMuN,UAAYA,EACjCQ,MAAOR,EAAW,GAAKtL,KAAKjC,MAAMgO,yBAClC9N,UAAW,gCAAgCyN,IAC3CvE,QAASwE,GAAkB,GAAE,8BAEjB,GAAG3L,KAAKjC,MAAMgO,2BAC1BC,UAAW,EACX5K,MAAM,aAENpD,EAAAA,cAAA,QAAMC,UAAWiN,KAErBlN,EAAAA,cAAA,SACI6C,KAAK,SACL5C,UAAU,iBACVgO,QAAQ,SACRjL,MAAOyK,EACP/K,SAAUV,KAAK+K,cACfmB,OAAQlM,KAAKyK,aAAY,YACf,SAAQ,aACN,GAAGzK,KAAKjC,MAAMoO,yBAC1BjM,KAAK,aAAY,gBACF,EAAC,gBACDF,KAAKjC,MAAMyN,IAAG,gBACdC,EACfvK,IAAKlB,KAAKwK,SACVc,SAAUtL,KAAKjC,MAAMuN,WAEzBtN,EAAAA,cAAA,UACIsN,SAAUtL,KAAKjC,MAAMuN,UAAYC,EACjCO,MAAOP,EAAc,GAAKvL,KAAKjC,MAAMqO,yBACrCnO,UAAW,iCAAgCsN,EAAc,WAAa,IACtEpE,QAASwE,EAAiB,GAAE,8BAEhB,GAAG3L,KAAKjC,MAAMqO,2BAC1BJ,UAAW,EACX5K,MAAM,aAENpD,EAAAA,cAAA,QAAMC,UAAWmN,KAIjC,CAEQS,qBAAqBD,GACzB,MAAMS,EAAkBrM,KAAKzB,MAAMsM,aAAee,EAE9CS,GAAmB,GAAKA,GAAmBrM,KAAKjC,MAAMyN,KACtDxL,KAAKjC,MAAM2C,UAAYV,KAAKjC,MAAM2C,SAAS2L,EAEnD,CAEQtB,cAAcuB,GAClB,MAAMb,EAAepG,OAAOC,SAASgH,EAAEjK,OAAOrB,MAAO,IAC/C0J,OAA8BzH,IAAnBjD,KAAKjC,MAAM4M,IAAoB,EAAI3K,KAAKjC,MAAM4M,IACzD4B,EACFvM,KAAKwK,UAAYxK,KAAKwK,SAAS3E,SAAW7F,KAAKwK,SAAS3E,mBAAmB2G,kBAAoBxM,KAAKwK,SAAS3E,QAE7G4F,EAAezL,KAAKjC,MAAMyN,IAC1BxL,KAAKwB,SAAS,CAAEqJ,aAAc7K,KAAKjC,MAAMyN,MAEzCxL,KAAKwB,SAAS,CAAEqJ,aAAcY,IAAgB,KAC1CgB,KAAS,KACA7B,MAAM5K,KAAKzB,MAAMsM,eAAmB7K,KAAKzB,MAAMsM,aAAeH,IAAa6B,IAC5EA,EAAaG,aAAa,gBAAiBjB,EAAapH,YACxDkI,EAAaG,aAAa,QAASjB,EAAapH,eAErD,IALHoI,EAKS,GAGrB,GA/GclC,EAAAoC,aAAwC,CAClDhC,IAAK,EACLQ,oBAAqB,eACrBE,oBAAqB,eAJRd,GAAqBb,EAAAA,EAAAA,IAAA,CADzCkD,EAAAA,IACoBrC,klBCwBf,MAAO7G,UAA6B1F,IAAAA,UAGtCK,YAAYN,GACRO,MAAMP,GAHF,KAAA8O,mBAAyB,CAAC,EA6LjB,KAAAC,oBAAuBC,GACpC/M,KAAKjC,MAAM6B,UAAUoN,sBAAsBjJ,QAAQ,mBAAoBgJ,GAE1D,KAAAE,sBAAwB1K,UAErCvC,KAAKwB,SAAS,CACV0L,QAAQ,EACRC,qBAAqB,EACrBC,OAAMxG,EAAAA,EAAA,GAAO5G,KAAKzB,MAAM6O,QAAM,IAAEC,SAAKpK,MAGzC,MAAMqK,EAAoBtN,KAAKzB,MAAMgF,WAChCiF,KAAI+E,GAAaA,EAAUC,mBAAmBnJ,aAC9CoJ,QAAO5M,IAASb,KAAK6M,mBAAmBhM,KAE7Cb,KAAKwB,SAAS,CACV4L,OAAQ,CAAEG,UAAWD,KAErBA,EAAkBzL,OAAS,EAC3B7B,KAAKwB,SAAS,CACV0L,QAAQ,IAKhBlN,KAAKjC,MACAwJ,qBAAoBX,EAAC,CAAC,EAAI5G,KAAKzB,QAC/BoD,MAAK+L,IAEEA,EAAOC,eACP3N,KAAKwB,SAAS,CACV0L,QAAQ,EACRC,qBAAqB,OAIhCnL,OAAMC,IACH,MAAM,4BAAE2L,EAA2B,0BAAEC,GAA8B7N,KAAKjC,MAAM6B,UAC9E,IAAIkO,EAGAA,EADqB,wDAArB7L,EAAMA,MAAMhC,KACG2N,EAEAC,EAGnB7N,KAAKwB,SAAS,CACV0L,QAAQ,EACRE,OAAMxG,EAAAA,EAAA,GAAO5G,KAAKzB,MAAM6O,QAAM,IAAEC,IAAKS,MAEzC9N,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MAAM,sCAAsC,GAC3E,EAGO,KAAA8L,kBAAqBC,IAClChO,KAAKwB,SAAS,CACVsD,SAAUkJ,EACVC,WAAYD,EAAWhO,KAAKjC,MAAMgF,QAAQmL,OAC5C,EAGW,KAAAC,sBAAwB,CACrCC,EACAC,KAEA,GAAIA,GAAcD,EAAqBE,gBACnC,OAAOF,EAAqBE,gBAAgBC,MAAKhB,GAAaA,EAAUvK,YAAcqL,GAG1E,EAIH,KAAAG,oBAAsBjM,UAAyD,IAAAkM,EAC5F,MAAM,QAAE1L,EAAO,WAAEQ,EAAU,QAAEX,GAAY5C,KAAKjC,OACxC,cACFyE,EACAC,SACIC,aAAa,UAAEC,KAEnBC,EAGE8L,EAA6C,QAApBD,EAAGzO,KAAKzB,MAAM6O,cAAM,IAAAqB,GAAW,QAAXA,EAAjBA,EAAmBlB,iBAAS,IAAAkB,OAAA,EAA5BA,EAA8BhB,QAAOhN,GAAMA,IAAOkO,EAAU3E,WAAW3F,aAEzGrE,KAAKwB,SAAS,CACV0L,QAAQ,EACRC,qBAAqB,EACrByB,gBAAgB,EAChBxB,OAAQ,CAAEC,SAAKpK,EAAWsK,UAAWmB,KAIzC1O,KAAK6M,mBAAmB8B,EAAU3E,aAAe2E,EAAU1E,SAE3D,MAAM4E,EAAmBtL,aAAU,EAAVA,EACnBiF,KAAI+E,IACK,CACHC,mBAAoBD,EAAUC,mBAC9BsB,eACI9O,KAAKmO,sBAAsBZ,EAAWvN,KAAK6M,mBAAmBU,EAAUC,sBACxED,EAAUuB,eACdC,oBAAqBxB,EAAUwB,wBAGtCtB,QAAOF,GACGA,GAAaA,EAAUuB,iBAGhCE,QAAuB7L,EAAAA,EAAAA,oBACzB,IAAIL,EAAAA,qBACAC,EAAQwG,gBAAkBxG,EAAQwG,gBAAkBxG,EAAQC,SAC5DL,EACAkM,OACA5L,EACAjD,KAAKjC,MAAM6E,QAAQH,SAEvBD,GAGJ,IAAKwM,EAID,YAHAhP,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MACzB,gDAAgDc,EAAQwG,gBAAkBxG,EAAQwG,gBAAkBxG,EAAQC,YAKpH,MAAMiM,EAAiB,IAAIxF,EAAAA,qCACvBuF,EAAehM,SACfL,EACAkM,EACA7O,KAAKjC,MAAM6E,QAAQH,SAEjByM,QAA0B1F,EAAAA,EAAAA,iCAAgCyF,EAAgBzM,GAEhF,IAAK0M,EAKD,OAJAlP,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MAAM,qEACnCjC,KAAKwB,SAAS,CACVoN,gBAAgB,IAKxB,MAAMO,EAAoB,IAAIC,EAAAA,6CAC1BrM,EAAQwG,gBAAkBxG,EAAQwG,gBAAkBxG,EAAQC,SAC5DL,GAIE0M,QAA6BC,EAAAA,EAAAA,4CAA2CH,EAAmB3M,GAC3F+M,EAAa,IAAIC,EAAAA,6BAA6BzM,EAAQC,SAAUL,GAChE8M,QAAqBC,EAAAA,EAAAA,4BAA2BH,EAAY/M,GAElE,IAAKiN,EAKD,OAJAzP,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MAAM,gEACnCjC,KAAKwB,SAAS,CACVoN,gBAAgB,IAKxB5O,KAAKwB,SAAS,CACVoN,gBAAgB,EAChBe,yBAA2BN,GAAwBA,EAAqB,SAAOpM,EAC/E2M,YAAaH,EAAaI,WAAa9M,EAAQmL,OAC/C3K,WAAY2L,EAAkBY,MAAK,CAACC,EAAGC,IAAMD,EAAEvC,mBAAqBwC,EAAExC,qBACtEzK,QAASiM,GACX,EAGW,KAAAiB,iBAAmB,CAACC,EAAuBtQ,KACxD,OAAQsQ,GACJ,KAAK,EACD,OAAOtQ,EAAUuQ,0BACrB,KAAK,EACD,OAAOvQ,EAAUwQ,kCACrB,KAAK,EACD,OAAOxQ,EAAUyQ,yBACrB,KAAK,EACD,OAAOzQ,EAAU0Q,0BACrB,QACI,MAAO,KA7WftQ,KAAKzB,MAAQ,CACTuG,SAAU,EACV8K,UAAW7R,EAAMgF,QAAQmL,MACzBD,WAAYlQ,EAAMgF,QAAQmL,MAC1BnL,QAAShF,EAAMgF,QACfQ,WAAYxF,EAAMwF,WAAWuM,MAAK,CAACC,EAAGC,IAAMD,EAAEvC,mBAAqBwC,EAAExC,qBACrEX,mBAAoB,CAAC,EACrB+B,gBAAgB,EAChBzB,qBAAqB,EAE7B,CAEO9G,sBAAsBC,EAAuCC,GAChE,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,QAAUuI,CAInD,CAEOE,SAAM,IAAA+J,EAAAC,EAAAC,EAAAC,EAAAC,EACT,MACI/N,SACIJ,eACIoO,gBAAgB,YAAElO,IAEtBD,SAAS,aAAEoO,IAEfjR,WAAW,sBACPkR,EAAqB,8BACrBC,EAA6B,yBAC7BhF,EAAwB,yBACxBK,EAAwB,oBACxB4E,EAAmB,kCACnBC,EAAiC,gBACjCC,GACH,cACD5J,EAAa,oBACbG,GACAzH,KAAKjC,OACH,eAAE6Q,EAAc,QAAE7L,EAAO,SAAE+B,EAAQ,UAAE8K,EAAS,WAAE3B,EAAU,oBAAEd,EAAmB,OAAEC,GAAWpN,KAAKzB,MACjG4S,EAA0BnR,KAAKjC,MAAM0G,oCAAsC,0BAA4B,GAC7G,OACIzG,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAC8J,EAAAA,UAAS,KACL9H,KAAKjC,MAAM2J,WACZ1J,IAAAA,cAAA,OAAKC,UAAU,4CACXD,IAAAA,cAAA,OAAKC,UAAU,8DACXD,IAAAA,cAAA,OAAKC,UAAU,8DACXD,IAAAA,cAACoT,EAAAA,GAAK,CACFC,QAAqB,QAAdd,EAAExN,EAAQ8F,YAAI,IAAA0H,EAAAA,EAAI,QACzBK,eAAgB5Q,KAAKjC,MAAM6E,QAAQJ,cAAcoO,eACjDU,IAA6B,QAA1Bd,EAAEzN,aAAO,EAAPA,EAASwO,uBAAe,IAAAf,EAAAA,EAAI,GACjCgB,YAKK,QALMf,GACPgB,EAAAA,EAAAA,qBACI1O,aAAO,EAAPA,EAAS2O,OACThP,EAC8B,QADnBgO,EACX1Q,KAAKjC,MAAM6E,QAAQH,QAAQkP,WAAG,IAAAjB,GAAQ,QAARA,EAA9BA,EAAgC7L,cAAM,IAAA6L,OAAA,EAAtCA,EAAwCkB,yBAC3C,IAAAnB,EAAAA,EAAI,GAETxS,UAAU,YACVqJ,cAAeA,EACfuJ,aAAcA,EACdgB,oBAAoB,UAExB7T,IAAAA,cAAA,OAAKC,UAAU,iDACXD,IAAAA,cAAA,OAAKC,UAAU,yCAAyC8E,aAAO,EAAPA,EAAS2O,QAChEjK,EAAiC,QAAdkJ,EAAC5N,aAAO,EAAPA,EAAS8F,YAAI,IAAA8H,EAAAA,EAAI,IACtC3S,IAAAA,cAAA,OAAKC,UAAU,iDACV8S,EACA,IACA/Q,KAAK8R,aAAalC,IAEvB5R,IAAAA,cAAA,OAAKC,UAAU,0CACVgT,EACA,IACAlO,aAAO,EAAPA,EAASgC,wBAItB/G,IAAAA,cAAA,OAAKC,UAAU,wDAAwD+B,KAAK+R,wBAEhF/T,IAAAA,cAAA,OAAKC,UAAU,sBACXD,IAAAA,cAAA,WAAMgT,GACNhT,IAAAA,cAACuM,EAAqB,CAClB9J,GAAG,qDACHqK,aAAchG,EACdpE,SAAUV,KAAK+N,kBACf5B,uBAAuB,mCACvBX,IAAK,IACLO,yBAA0BA,EAC1BK,yBAA0BA,MAItCpO,IAAAA,cAAA,OAAKC,UAAW,kDAAkDkT,KAC7DD,EACA,IACAlR,KAAK8R,aAAa7D,KAG3BjQ,IAAAA,cAACgU,EAAAA,YAAW,KACP7E,GACGnP,IAAAA,cAAA,OACIC,UAAU,oEAAmE,YACnE,YACViC,KAAK,SAELlC,IAAAA,cAAA,sBAAkB,SACjBgC,KAAKiS,4BAGb7E,aAAM,EAANA,EAAQC,MACLrP,IAAAA,cAAA,OAAKC,UAAU,kEACXD,IAAAA,cAAA,QAAMC,UAAU,2BAA0B,cAAa,SACtDmP,EAAOC,KAGhBrP,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAWkU,IAAW,0DAA2D,CAAE,UAAWnS,KAAKzB,MAAM2O,SAAS,aACtG4D,EACZ3J,QAASnH,KAAKiN,sBACd3B,SAAUsD,GAETkC,IAKrB,CAEQmB,0BACJ,MAAMG,EAAyBpS,KAAKzB,MAAMgF,WACrCiF,KAAI+E,IAAY,IAAA8E,EACb,IAAIC,EAAmC,QAA5BD,EAAG9E,EAAUe,uBAAe,IAAA+D,GAEtC,QAFsCA,EAAzBA,EAA2B9D,MACrCvN,GAASA,EAAMgC,WAAahD,KAAK6M,mBAAmBU,EAAUC,6BACjE,IAAA6E,OAAA,EAFaA,EAEXE,MAIH,OAHqC,IAAjChF,EAAUC,qBACV8E,EAAU,QAAQA,KAEfA,CAAO,IAEjB7E,QAAOzM,GAASA,IAErB,OAAOhB,KAAKjC,MAAM6B,UAAU4S,0BACvBzO,QAAQ,UAAW/D,KAAKzB,MAAMuG,SAAST,YACvCN,QAAQ,yBAA0B,GAAG/D,KAAKzB,MAAMwE,QAAQ8F,SAAS7B,OAAOyL,OAAOL,GAAwBM,KAAK,QACrH,CAEQX,sBACJ,MAAM,WAAExO,GAAevD,KAAKzB,OACtB,UAAEqB,GAAcI,KAAKjC,MAE3B,OAAOwF,aAAU,EAAVA,EAAYiF,KAAK+E,IAAmC,IAAAoF,EACvD,MAAM,gBAAErE,EAAe,mBAAEd,GAAuBD,EAK1CR,EAAgB/M,KAAKiQ,iBAAiBzC,EAAoB5N,GAC1DwK,EAAqCkE,EAAkBA,EAAgB9F,KALtDxH,IAA4B,CAC/CP,GAAIO,EAAMgC,SACVhC,MAAOA,EAAMuR,OAAS,OAG4F,GAGtH,OAFAnI,EAAawI,QAAQ,CAAEnS,GAAI,EAAGO,MAAO,YAAY+L,MAG7C/O,IAAAA,cAAA,OAAK2K,IAAK6E,GACNxP,IAAAA,cAAA,WAAM+O,IACY,QAAjB4F,EAAA3S,KAAKzB,MAAM6O,cAAM,IAAAuF,GAAW,QAAXA,EAAjBA,EAAmBpF,iBAAS,IAAAoF,OAAA,EAA5BA,EAA8BE,SAASrF,EAAmBnJ,cACvDrG,IAAAA,cAAC8U,EAAAA,MAAK,CAAC1R,MAAM,SAAS2R,WAAS,eAAa/S,KAAK8M,oBAAoBC,IACjE/O,IAAAA,cAAA,OAAKC,UAAU,oBAAmB,cAAa,QAC3CD,IAAAA,cAAA,QAAMC,UAAU,6BAChBD,IAAAA,cAAA,YAAOgC,KAAK8M,oBAAoBC,MAI5C/O,IAAAA,cAAC4L,EAAQ,CACLI,WAAYwD,EACZnD,aAAcrK,KAAKiQ,iBAAiBzC,EAAoB5N,GACxDwK,aAAcA,EACd1J,SAAUV,KAAKwO,sBAEjB,GAGlB,CA2LQsD,aAAakB,GACjB,MACIpQ,SACIqQ,kBAAkB,eACdC,EAAc,aAGdC,KAGRnT,KAAKjC,MAET,OAAOmV,EAAeF,EAAMI,QAAQ,GAAID,EAC5C,ECpaG,MAAMpR,EAAehE,IACxB,MAAM,SACFW,EACAkE,SACIJ,eACIoO,gBAAgB,YAAElO,IAEtBD,SAAS,aAAEoO,GACXoC,kBAAkB,eACdC,EAAc,aAGdC,IAEP,aACDvL,EAAY,oBACZH,EAAmB,sBACnBI,EACAjI,WAAW,wBAAEyT,GAAyB,cACtC/L,GACAvJ,EAEJ,OACIC,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,KAAGC,UAAU,gDAA+C,YAAW,aAClE4J,KAEJ9J,EAAM2J,WACP1J,IAAAA,cAAA,OAAKC,UAAU,0CACVS,EAAS8J,KAAI,CAACzF,EAA8BuQ,KAAiB,IAAAC,EAAA9C,EAAA+C,EAC1D,MAAM,MAAEtF,EAAK,OAAEwD,EAAM,KAAE7I,EAAI,gBAAE0I,GAAoBxO,EAC3CiQ,EAAQE,EAAehF,EAAMkF,QAAQ,GAAID,GACzCM,EAAyE,QAAvDF,GAAGG,EAAAA,EAAAA,kBAAiBnC,QAAAA,EAAmB,GAAI7O,UAAY,IAAA6Q,EAAAA,EAAI,GAC7EI,EAA2G,QAAhGlD,GAAGgB,EAAAA,EAAAA,qBAAoBC,EAAQhP,EAAsC,QAA3B8Q,EAAEzV,EAAM6E,QAAQH,QAAQkP,WAAG,IAAA6B,GAAQ,QAARA,EAAzBA,EAA2B3O,cAAM,IAAA2O,OAAA,EAAjCA,EAAmC5B,yBAAiB,IAAAnB,EAAAA,EAAI,GAErH,OACIzS,IAAAA,cAAA,OAAK2K,IAAK,WAAW2K,IAASrV,UAAU,qCACpCD,IAAAA,cAAA,OAAKC,UAAU,8DACXD,IAAAA,cAACoT,EAAAA,GAAK,CACFC,QAASxI,QAAAA,EAAQ,QACjB+H,eAAgB7S,EAAM6E,QAAQJ,cAAcoO,eAC5CU,IAAKmC,EACLjC,YAAamC,EACb1V,UAAU,YACV4S,aAAcA,EACdvJ,cAAeA,EACfuK,oBAAoB,UAExB7T,IAAAA,cAAA,OAAKC,UAAU,gDAA+C,YAAW,UACrED,IAAAA,cAAA,OAAKC,UAAU,yCAAyCyT,GACvDjK,EAAoBoB,QAAAA,EAAQ,MAGrC7K,IAAAA,cAAA,OAAKC,UAAU,sDACXD,IAAAA,cAAA,YAAOgV,GACPhV,IAAAA,cAAC4V,EAAmB,CAAC7Q,QAASA,EAAS8Q,WAAYR,EAAyBzL,aAAcA,KAE5F,KAInB,EAULgM,EAAuB7V,IACzB,MAAOmP,EAAQ4G,IAAWC,EAAAA,EAAAA,WAAS,IAC7B,QAAEhR,EAAO,WAAE8Q,EAAU,aAAEjM,GAAiB7J,EACxCiW,EAAkBhW,IAAAA,aAAkBuE,UACtCuR,GAAS5G,SACHtF,EAAa7E,GACnB+Q,GAAS5G,EAAO,GACjB,CAACtF,EAAcsF,EAAQnK,IAE1B,OACI/E,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAWkU,IAAW,mDAAoD,CAAE,UAAWjF,IAAS,aACpF,GAAGnK,EAAQ8F,QAASgL,IAChC1M,QAAS6M,GAERH,EACI,gOChFX,MAAOI,UAAiCjW,EAAAA,cAA9CK,kCACW,KAAAE,MAAwC,CAC3C2V,eAAe,EACfC,kBAAkB,GAmHL,KAAAC,WAAc/S,IACLrB,KAAKjC,MAAMsW,cAAcC,MAAKC,GAAQA,EAAKC,kBAG7DxU,KAAKwB,SAAS,CAAE0S,eAAe,IAE/BlU,KAAKjC,MAAM0W,sBAEXzU,KAAKwB,SAAS,CAAE0S,eAAe,MAItB,KAAAQ,cAAiBrT,IAC9BrB,KAAKwB,SAAS,CACV2S,kBAAkB,IAGtBnU,KAAKjC,MAAM4W,mBAAmB,CAEtC,CAnIWC,gCACH7W,EACAQ,GAEA,MAAM8V,EAAgBtW,EAAMsW,cAAcxS,OACpCgT,EAAkB9W,EAAMsW,cAAcC,MAAKC,GAAQA,EAAKC,gBAC9D,IAAIjO,uWAASK,CAAA,GAAQrI,GAKrB,OAJAgI,EAAY,CACR2N,cAAiC,IAAlBG,GAAuBQ,EACtCV,iBAAoC,IAAlBE,GAEf9N,CACX,CAEOC,SAAM,IAAAsO,EACT,MAAM,qBACFrO,EAAoB,sBACpB5G,EAAqB,qBACrBkV,EAAoB,2BACpBjV,EAA0B,uBAC1BC,EAAsB,wBACtBsT,EAAuB,sBACvBvC,EAAqB,8BACrBC,EAA6B,eAC7BiE,EAAc,yBACdjJ,EAAwB,yBACxBK,EAAwB,oBACxB4E,EAAmB,kCACnBC,EAAiC,0BACjChJ,EAAyB,+BACzBC,EAA8B,mBAC9BE,EAAkB,0BAClB+H,EAAyB,kCACzBC,EAAiC,yBACjCC,EAAwB,0BACxBC,EAAyB,2BACzB2E,EAA0B,8BAC1BC,EAA6B,0BAC7B9Q,EAAyB,0BACzBE,EAAyB,0BACzBkO,EAAyB,gBACzBtB,EAAe,yBACflJ,EAAwB,4BACxB4F,EAA2B,0BAC3BC,EAAyB,sBACzBb,GACAhN,KAAKjC,MAAM6B,UAETuV,EAAe,CACjBvS,QAAS5C,KAAKjC,MAAM6E,QACpB8C,iBAAkB1F,KAAKjC,MAAM2H,iBAC7B9F,UAAW,CACP6G,uBACA5G,wBACAkV,uBACAjV,6BACAC,yBACAsT,0BACAvC,wBACAC,gCACAiE,iBACAjJ,2BACAK,2BACA4E,sBACAC,oCACAhJ,4BACAC,iCACAE,qBACA+H,4BACAC,oCACAC,2BACAC,4BACAlM,4BACAE,4BACAkO,4BACAtB,kBACAlJ,2BACA4F,8BACAC,4BACAb,yBAEJ1F,cAAetH,KAAKjC,MAAM8G,OAAOyC,cACjC9C,gBAAiBxE,KAAKjC,MAAMyG,gBAC5BC,oCAAqCzE,KAAKjC,MAAM0G,oCAChD4D,SAAkC,QAA1ByM,EAAE9U,KAAKjC,MAAMqX,KAAK/M,gBAAQ,IAAAyM,OAAA,EAAxBA,EAA0BlT,QAGxC,OACI5D,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAACI,EAAiB4I,OAAAC,OAAA,GAAKkO,IACvBnX,EAAAA,cAACkU,EAAAA,OAAM,CACH/K,QAASnH,KAAKoU,WACd9I,SAAUtL,KAAKzB,MAAM2V,cACrBjW,UAAU,sBAAqB,aACnBgX,GAEZjX,EAAAA,cAAA,cACEgC,KAAKjC,MAAMsX,gBAAkBJ,GAEnCjX,EAAAA,cAACkU,EAAAA,OAAM,CACH/K,QAASnH,KAAK0U,cACdpJ,SAAUtL,KAAKzB,MAAM4V,iBACrBlW,UAAU,kBAAiB,aACfiX,GAEZlX,EAAAA,cAAA,cACEgC,KAAKjC,MAAMsX,gBAAkBH,GAI/C,ECKG,MC1DDI,EAA4BvX,IAC9B,MAAM,kBAAEwX,EAAiB,gBAAEC,EAAe,SAAE1Q,EAAQ,SAAE2Q,GAAa1X,GAC7D,OAAE2X,EAAM,UAAExM,GAAcsM,GACxB,WAAEG,EAAU,aAAEC,GAAiBH,EAErC,MAAO,CACHI,YAAaA,IAAOxU,IAChBqU,GACIH,EAAkBO,aAClBH,EAAWJ,EAAkBO,YAAYC,eAAgBjR,EAAU4Q,EAAQxM,EAAU,EAE7F8M,cAAeA,IAAO3U,GAAyCqU,GAAUE,EAAa7X,EAAMwX,mBAC/F,EAQCU,EAASlY,IACX,MAAM,mBAAEmY,EAAkB,iCAAEC,EAAgC,eAAEC,EAAc,uBAAEC,GAA2BtY,EAAM6B,WACxG0W,EAAYC,IAAiBxC,EAAAA,EAAAA,WAAS,GAOvClN,EAAS7I,IAAAA,aAAkB,KAC7BuY,GAAeD,EAAW,GAC3B,CAACA,IAEJ,OACItY,IAAAA,cAAA,OAAKC,UAAW,gCACZD,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAW,6BAAyC,aACxCmY,EAAc,YACfrY,EAAMuV,MACjBnM,QAASN,IAEZyP,GACGtY,IAAAA,cAAA,OAAKC,UAAW,uBACZD,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAU,2BACVkJ,QApBU9F,IAC1BtD,EAAMyY,uBAAuBzY,EAAM,EAoBnB+N,MAAOuK,EAAsB,aACjBA,GAAsB,QAIrCI,EACG1Y,EAAM2Y,SACN3Y,EAAM4Y,sBACNR,EACAb,EAAyBvX,GAAOiY,iBAEnCS,EACG1Y,EAAM2Y,SACN3Y,EAAM6Y,mBACNV,EACAZ,EAAyBvX,GAAO8X,gBAI1C,EAIRY,EAAkBA,CACpBC,EACAzY,EACA4V,EACAjM,IAEA5J,IAAAA,cAACkU,EAAAA,OAAM,cAAa2B,EAAY5V,UAAWA,EAAWkJ,QAASS,EAAckE,MAAO+H,GAC/E6C,EAAW7C,EAAa,IAI3BgD,EAAyBA,CAC3B5Y,EACA4V,EACAjM,IAEA5J,IAAAA,cAACkU,EAAAA,OAAM,cAAa2B,EAAY5V,UAAWA,EAAWkJ,QAASS,EAAckE,MAAO+H,GAC/EA,GASHiD,EAAsBA,CAACvB,EAAgD5Q,IACzEtD,IAEAkU,EAAkBwB,WAAaxB,EAAkBwB,UAEjDpS,EAAM8Q,SAASuB,SAASzB,EAAmBlU,EAAMgB,OAAO4U,QAAQ,EAmG9DC,EAAqBnZ,IACvB,MAAOoZ,EAAaC,IAAkBrD,EAAAA,EAAAA,WAAS,GACzClN,EAAS7I,IAAAA,aAAkB,KAC7BoZ,GAAgBD,EAAY,GAC7B,CAACA,IAEElZ,EAAY,mDACZoZ,EAA4B,GAAGpZ,uBACrC,OACID,IAAAA,cAAA,OAAKC,UAAWA,GACZD,IAAAA,cAACkU,EAAAA,OAAM,CAACjU,UAAW,GAAGA,YAAmB,aAAc,GAAIkJ,QAASN,IACnEsQ,GACGnZ,IAAAA,cAAA,OAAKC,UAAWoZ,GACXR,EACG,qDACA,aACAvB,EAAyBvX,GAAO8X,eAEnCgB,EACG,wDACA,cACAvB,EAAyBvX,GAAOiY,kBAI1C,EAgDRsB,EAAkBA,CACpBC,EACAC,EACAzZ,IACEiQ,IACEuJ,GACAA,EAAiBC,EAASxJ,EAAUjQ,IAItC0Z,EAAoBA,CAAC1Z,EAAgCyZ,KACvD,MAAM,SAAE/B,EAAQ,UAAE7V,EAAS,SAAEkF,GAAa/G,GACpC,iBAAEwZ,GAAqB9B,EAC7B,OACIzX,IAAAA,cAACuM,EAAqB,CAClBO,aAAchG,EACdpE,SAAU4W,EAAgBC,EAAkBC,EAASzZ,GACrDyN,IAAK,UACLW,uBAAwBvM,EAAUuM,uBAClCC,yBAA0BxM,EAAUwM,yBACpCL,yBAA0BnM,EAAUmM,yBACpCT,SAAUvN,EAAM2Z,6BAClB,EAIGC,EAAsBA,CAC/B1Z,EACA2E,EACAgV,EACAC,EACAC,EACAxQ,KACoB,IAAAyQ,EAAAC,EAUpB,OACIha,IAAAA,cAACoT,EAAAA,GAAK,CACFR,eAAgBhO,SAAsB,QAAfmV,EAAPnV,EAASJ,qBAAa,IAAAuV,OAAA,EAAtBA,EAAwBnH,eACxC3S,UAAWA,EACXoT,QAASuG,EACT9L,MAAO8L,EACPtG,IAAKuG,EACLrG,YAAasG,EACbjH,aAAcjO,SAAgB,QAAToV,EAAPpV,EAASH,eAAO,IAAAuV,OAAA,EAAhBA,EAAkBnH,aAChCvJ,cAAeA,GAlBsB,CACzCrI,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCC,GAAI,CAAEH,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCE,GAAI,CAAEJ,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,IAEvCG,UAAU,GAaNqS,oBAAoB,QACpB7F,SAAU,GACZ,EAIGiM,EAAwBla,IACjC,MAAM2G,EAAY3G,EAAMyX,gBAAgBtM,UAGxC,IAFAX,EAAAA,EAAAA,mBAAkB7D,IAEb3G,EAAM6E,QAAQH,QAAQyV,KAAKC,QAAUzT,IAAcpE,EAAAA,gBAAgBC,YAAYxC,EAAMsK,UACtF,OAAO,KAGX,MAAM+P,EAAUra,EAAMsK,SAASkG,MAAKjE,GAAQA,EAAKtH,WAAa0B,IAE9D,OAAK0T,GAAYA,EAAQvP,KAIlB7K,IAAAA,cAAA,OAAKC,UAAU,gCAAgCma,EAAQvP,MAHnD,IAG8D,EAGvEwP,EAAgBta,IAClB,MAAM,MAAEiV,EAAK,QAAEpQ,EAAO,SAAE0V,EAAQ,eAAEC,EAAc,UAAE3Y,GAAc7B,EAEhE,OAAIiV,EAEIhV,IAAAA,cAACwa,EAAAA,eAAc,CACX/X,GAAI6X,EACJG,SAAUF,EACVnD,KAAM,CAAEpC,SACR/U,UAAU,8CACVya,cAAe9Y,EAAU8Y,cACzBC,kBAAmB/Y,EAAU+Y,kBAC7BC,iBAAkBhZ,EAAUgZ,iBAC5BhW,QAASA,IAId,IAAI,EAmBTiW,EAAuB9a,IACzB,MAAM,MAAEkE,GAAUlE,EAClB,OAAKkE,GACM,EAEC,EAWH6W,EAAqB/a,IAA+D,IAAAgb,EAC7F,MAAM,kBAAExD,EAAiB,WAAEyD,GAAejb,EACpCkC,EAAoC,QAAhC8Y,EAAGxD,EAAkBO,mBAAW,IAAAiD,OAAA,EAA7BA,EAA+BhD,eAAelN,KAErDtF,EApCwBxF,KAC9B,MAAM,kBAAEwX,GAAsBxX,EAE9B,OAAKwX,EAAkBO,aAAgBP,EAAkBO,YAAYC,eAAekD,WAI7E1D,EAAkBO,YAAYC,eAAekD,WAAWzQ,KAAI+E,IAC/D,GAAKA,EAAUuB,gBAAmBvB,EAAUuB,eAAeyD,MAI3D,OAAOhF,EAAUuB,eAAeyD,KAAK,IAR9B,EAST,EAuBiB2G,CAAyBnb,GAC5C,IAAKwX,EAAkBO,YACnB,MAAO,GAGX,MAAMqD,EAAcH,EAChBhb,IAAAA,cAAA,KAAGC,UAAU,kDAAkDmb,KAAMJ,GAChE/Y,GAGLjC,IAAAA,cAAA,OAAKC,UAAU,mDAAmDgC,GAGhEoZ,EAAyB9V,EAAWmP,KAAK,MAE/C,OACI1U,IAAAA,cAAA,OAAKC,UAAU,8CACXD,IAAAA,cAAA,OAAKC,UAAU,mDAAmDkb,GAClEnb,IAAAA,cAAA,OAAKC,UAAU,wDAAwDob,GACrE,EC7diCrb,EAAAA,uoBC2H/C,IAAMsb,GAAN,cAAiCtb,EAAAA,UAY7BK,YAAYN,EAAsDQ,GAC9DD,MAAMP,GA2RO,KAAAwb,yCAA2C,KACxD,IAAI9U,GAAsC,EACR,IAAA+U,EAA9BxZ,KAAKjC,MAAMqX,KAAKqE,eAChBhV,GACuC,QAAnC+U,EAAAxZ,KAAKjC,MAAMqX,KAAKqE,aAAa7X,cAAM,IAAA4X,GAElC,QAFkCA,EAAnCA,EAAqCjL,MACjCmL,GAA4B,2DAAjBA,EAAQ7Q,cACtB,IAAA2Q,OAAA,EAFDA,EAEGG,aAAa,GAExB,OAAOlV,CAAmC,EAG7B,KAAAmV,mBAAqB,KAClC,MAAM,QAAEhX,EAAO,UAAEhD,GAAcI,KAAKjC,OAC9B,UAAEqF,GAAcR,GAChB,6BAAEiX,EAA4B,6BAAEC,GAAiCla,EACjEma,EAAQ/Z,KAAKzB,MAAMyb,iBACnBC,EAAmBF,GAASA,EAAMlY,QAAUkY,EAAMtM,QAAO8G,GAAQA,EAAKwC,YAAWvO,KAAI+L,GAAQA,EAAKiB,kBAExG,GAAIyE,GAAoBA,EAAiBpY,OAAS,EAAG,CACjD,MAAMqY,EAAgBD,EAAiB,GAAGtM,cAEpCwM,EAAoC,KAC1CC,EAAAA,EAAAA,6BAA4B,CAAE9Q,cAAe1G,EAAQJ,eAAiB0X,EAAgBD,GACjFtY,MAAKY,UACFvC,KAAKwB,SAAS,CACV6Y,YAAaP,EACbQ,gBAAiB,UACjBC,aAAc,eACd/b,QAAQ,UAGN,IAAI6E,SAAQC,GAAWkX,WAAWlX,EAAS6W,KACjDjV,OAAOC,SAASC,QAAQ,IAE3BpD,OAAMC,IACHmB,EAAUqX,QAAQ,4EAClBrX,EAAUnB,MAAMA,GAChBjC,KAAKwB,SAAS,CACV6Y,YAAaR,EACbS,gBAAiB,UACjBC,aAAc,eACd/b,QAAQ,GACV,MAKD,KAAAkc,yBAA2B,KAAa,IAAAC,EACrD,IAAIC,GAAMC,EAAAA,EAAAA,IAAW,gBAAiB7a,KAAKjC,MAAM6E,QAAQJ,gBAAkB,GAE3E,OADAoY,EAAMA,EAAI/H,SAAS,KAAO+H,EAAIE,OAAO,EAAGF,EAAIG,QAAQ,MAAQH,EAC3B,QAAjCD,EAAI3a,KAAKjC,MAAMqX,KAAK4F,qBAAa,IAAAL,GAAQ,QAARA,EAA7BA,EAA+B/Y,cAAM,IAAA+Y,GAArCA,EAAuCM,YAAYC,GAC5C,GAAGN,QAAU5a,KAAKjC,MAAMqX,KAAK4F,cAAcpZ,OAAOqZ,YAAYC,KAElE,EAAE,EAGI,KAAAC,qBAAuB5Y,UACpC,MACM8R,EADQrU,KAAKzB,MAAMyb,iBACGvM,QAAO8G,GAAQA,EAAKwC,YAChD,GAAI1C,EAAcxS,OAAS,EACvB,IAAK,MAAMuZ,KAAe/G,EAAe,KAAAgH,EAAAC,EAAAC,EAAAC,EAAAC,EACrC,MAAMjE,EAAwD,QAAjD6D,EAA0B,QAA1BC,EAAGF,EAAYtF,mBAAW,IAAAwF,OAAA,EAAvBA,EAAyBvF,eAAerE,cAAM,IAAA2J,EAAAA,EAAI,GAC5DtY,EAAiD,QAA1CwY,EAA0B,QAA1BC,EAAGJ,EAAYtF,mBAAW,IAAA0F,OAAA,EAAvBA,EAAyBzF,sBAAc,IAAAwF,EAAAA,EAAI,CACvDvY,SAAU,EACV0Y,iBAAkB,EAClB7L,UAAW,EACX3B,MAAO,EACPyN,cAAe,GAEb7W,EAA+C,QAAvC2W,EAAGL,EAAY5F,gBAAgBoG,gBAAQ,IAAAH,EAAAA,EAAI,EACzD,GAAIzb,KAAKuZ,2CAA4C,CACjD,MAAM7U,EAAY0W,EAAY5F,gBAAgBtM,gBACxClJ,KAAK6b,cAAc9Y,EAAS+B,EAAU0S,EAAS9S,cAE/C1E,KAAK6b,cAAc9Y,EAAS+B,EAAU0S,GAIxD,OAAOnU,QAAQC,aAAQ,EAAO,EA+C1B,KAAAwY,0BAA6B/d,IACjC,MAAM,UAAE6B,EAAS,oCAAE6E,GAAwC1G,GACrD,yBAAEge,GAA6Bnc,EAErC,MAAO,CACHoc,iBAAkBhc,KAAKic,iCAAiCle,GACxDme,gBAAiBzX,GAAuC0X,GAA+Bpe,GACvFqe,gBAAiB3X,GACbzG,EAAAA,cAACkU,EAAAA,OAAM,CAACjU,UAAU,uDAAuDkJ,QAASnH,KAAKqc,0BAA0Bte,IAC5Gge,GAGTO,mBAAoB7X,GAAuCzG,EAAAA,cAACue,EAAAA,mBAAkBvV,OAAAC,OAAA,GAAKlJ,IACtF,EAGG,KAAAse,0BAA6Bte,GAAsC,KACvEiC,KAAKwc,qBAAqBze,EAAM,EAG5B,KAAAye,qBAAwBze,IAC5B,MACIqX,MAAM,cAAE4F,GAAe,SACvBvF,GACA1X,GACE,iBAAE0e,GAAqBhH,EAEzBgH,GACAA,EAAiBzB,EAAcC,YAAYC,KAgBlC,KAAAwB,eAAkBC,GAC3BC,EAAAA,GAASC,UACF,IAAIC,IAAI5X,OAAOC,SAASiU,MAE5B,IAAI0D,IAAIH,EAAW/B,IAAImC,WAAW3D,MAM5B,KAAA4D,eAAiB,KAC9Bhd,KAAKwB,SAAS,CACVgW,QAASxX,KAAKzB,MAAMiZ,QACpB6C,YAAara,KAAKzB,MAAM8b,YACxBC,gBAAiBta,KAAKzB,MAAM+b,gBAC5BC,aAAcva,KAAKzB,MAAMgc,aACzB/b,OAAQwB,KAAKzB,MAAMC,OACnBye,gCAAgC,GAClC,EAGW,KAAAC,6BAA+B,KAA6B,IAAAC,EACzE,IAAKnd,KAAKzB,MAAM6e,0BACZ,OAAO,KAEX,MAAM3Y,GAC0B,QAA5B0Y,EAAAnd,KAAKjC,MAAMqX,KAAKqE,oBAAY,IAAA0D,GAAQ,QAARA,EAA5BA,EAA8Bvb,cAAM,IAAAub,GAA4F,QAA5FA,EAApCA,EAAsC5O,MAAKmL,GAA4B,2DAAjBA,EAAQ7Q,cAAkE,IAAAsU,OAAA,EAAhIA,EACMxD,aAAa,EAEvB,OACI3b,EAAAA,cAACqf,EAAAA,sBAAqB,CAClBpf,UAAU,gCACVwC,GAAIT,KAAKjC,MAAM0C,GACfgY,SAAUzY,KAAKjC,MAAM0a,SACrB7V,QAAS5C,KAAKjC,MAAM6E,QACpB0a,cAAetd,KAAKud,0CACpBnI,KAAMpV,KAAKzB,MAAM6e,0BACjBI,UAAWxd,KAAKzB,MAAM0e,+BACtBQ,QAASzd,KAAKgd,eACdvY,oCAAqCA,GACvC,EAaO,KAAAiZ,kBAAoB,KACjC,MAAM,OAAE7Y,EAAM,QAAEjC,EAAO,KAAEwS,EAAI,UAAExV,GAAcI,KAAKjC,MAC5Cid,EAAgB5F,GAAQA,EAAK4F,eAAiB5F,EAAK4F,cAAcpZ,OACvE,IAAKoZ,EACD,OAAO,KAGX,MAAM2C,EAAU3d,KAAK0c,eAAe9Z,EAAQH,SACtCmb,EAAe/Y,EAAO+Y,cAAgB,GAEtCC,EADoB7d,KAAK8d,wBACOF,EAChCG,EAAa/C,GAAiBA,EAAcgD,WAC5CC,EAAere,EAAUse,gBACzBC,EAAWve,EAAUwe,YAE3B,OAAIL,GAAcH,EACP,KAIP5f,EAAAA,cAACqgB,EAAAA,uBAAsB,CACnBpgB,UAAW,GAAG+B,KAAK/B,wBACnBiC,KAAK,aAAY,aACLN,EAAU0e,oBACtB1D,IAAK+C,EAAQvE,KACbmF,IAAI,OACJC,MAAOT,EACPH,aAAcA,EACda,aAAcZ,EACdI,aAAcje,KAAK0e,YAAYT,GAC/BE,SAAUne,KAAK2e,YAAYR,GAC3BS,kBAAmBX,EACnBY,cAAeV,GACjB,EAkFO,KAAAW,wBAA2B/gB,IACxC,IAAIQ,EAAQ,CACRwgB,oBAAqB/e,KAAKzB,MAAMwgB,oBAEhChhB,IACAQ,EAAKqI,GAAAA,GAAA,GACErI,GACA,CACCygB,qBAAqBC,EAAAA,EAAAA,6BAA4BlhB,MAI7DiC,KAAKwB,SAASjD,EAAM,EAIP,KAAA2gB,yBAA2B,CACxCC,EACAvc,EACA8B,KAEA,MAAMsU,GAAaoG,EAAAA,EAAAA,mBAAkBD,EAAgBvc,EAAQJ,mBAAeS,GAC5E,IAAKoc,EAAAA,iBAAiBC,mBAAmBtG,SAA6B/V,IAAdyB,EAAyB,CAC7E,MAAM6a,EAAc,IAAIzC,IAAI9D,EAAY9T,OAAOC,SAASiU,MAExD,OADAmG,EAAYC,aAAaC,IAAI,YAAa,GAAG/a,QAAAA,EAAa,KACnD6a,EAAYnG,KAGvB,OAAOJ,CAAU,EAIJ,KAAA0G,WAAa,KAC1B1f,KAAKwB,SAAS,CACVhD,QAAQ,GACV,EAGW,KAAAmhB,gBAAkBpd,MAAOiV,EAAiB1S,EAAkB/G,KACzE,MAAM,QAAE6E,EAAO,KAAEwS,EAAI,UAAEhS,EAAS,OAAEyB,EAAM,UAAEjF,GAAcI,KAAKjC,OACvD,cAAEid,GAAkB5F,EAE1B,GAAIxS,GACIoY,SAAAA,EAAepZ,OAAQ,CACvB,MAAMge,EAAyB5E,EAAcpZ,OAAOie,mBACpD,GAAID,EAAwB,CACxB,MAAME,EAAiBF,EAAuBG,WACzChG,GAA6BA,EAAMvE,gBAAgBE,SAAW8B,IAE7DwI,EAAkBpZ,GAAA,GAAQgZ,EAAuBE,IACvD,GAAIF,EAAuBE,GAAgBtK,gBAAgBoG,WAAa9W,EACpE,OAEJ,MAAMmb,EAAeD,EAAmBxK,gBAAgBoG,SACxDoE,EAAmBxK,gBAAgBoG,SAAW9W,EAC9C,MAAM,YAAEgR,GAAyBkK,EAATzL,GAAI2L,EAAAA,EAAAA,GAAKF,EAAkBG,IAG/CpiB,IACAA,EAAM+G,SAAWA,EACjB9E,KAAKwB,SAAS,CACVwd,qBAAqBC,EAAAA,EAAAA,6BAA4BlhB,MAIzDiC,KAAKwB,SAAS,CACVkW,6BAA6B,KAGjC0I,EAAAA,EAAAA,6BAA4B,CAAE9W,cAAe1G,EAAQJ,eAAiBwY,EAAcpZ,OAAOqZ,YAAYC,GAAI,CACvG3G,EAAKiB,kBAEJ7T,MAAK0e,IASF,GARArgB,KAAKwB,SAAS,CACVgW,UACA6C,YAAa,GACbC,gBAAiB,UACjBC,aAAc,eACd7C,6BAA6B,EAC7BlZ,QAAQ,IAER6hB,EAAM,CACN,MAAMC,EAAUD,EAAK9R,MAAKwL,GAASA,EAAMrE,SAAW8B,IACpDoI,EAAuBE,GAAgBtK,gBAAkB8K,EACzD,MAAMC,EAAe,IAAIX,GACzBW,EAAaT,GAAkB,CAAEhK,cAAaN,gBAAiB8K,GAC/D,MAAME,EAAoB5Z,GAAAA,GAAA,GAAQoU,EAAcpZ,QAAM,IAAE6e,iBAAkBF,IAC1E3d,EAAQJ,cAAcke,OAClB,IAAIC,EAAAA,8BAA8B/d,EAAQJ,cAAcoO,eAAgB/L,GACxE2b,OAIXxe,OAAMC,IACHmB,EAAUqX,QAAQ,6DAClBrX,EAAUnB,MAAMA,GAChB,MAAMoY,EAAcza,EAAUghB,mCAC1B7iB,GACAA,IAAUA,EAAMyX,gBAAgBoG,SAAWqE,GAC3CjgB,KAAKwB,SAAS,CACVgW,UACA6C,cACAC,gBAAiB,SACjBC,aAAc,8BACd7C,6BAA6B,EAC7BlZ,QAAQ,EACRwgB,qBAAqBC,EAAAA,EAAAA,6BAA4BlhB,OAGrDiiB,EAAmBxK,gBAAgBoG,SAAWqE,EAC9CjgB,KAAKwB,SAAS,CACVgW,UACA6C,cACAC,gBAAiB,SACjBC,aAAc,8BACd7C,6BAA6B,EAC7BlZ,QAAQ,WASvB,KAAAqd,cAAgBtZ,MAC7BQ,EACA+B,EACA0S,EACA9S,KAEA,MAAM,QAAE9B,EAAO,KAAEwS,EAAI,UAAExV,EAAS,UAAEwD,GAAcpD,KAAKjC,OAC/C,KAAE8iB,GAASzL,GACX,qBAAE0L,EAAoB,0BAAEC,GAA8BnhB,EAE5D,GAAIgD,GACIie,EAAKjf,OAAQ,CACb,MAAMof,EAAwB,CAC1Bje,UACAke,MAAOnc,EACPJ,mBAGEmc,EAAKjf,OACNsf,iBAAiBF,GACjBrf,MAAMC,IACH,GAAsB,YAAlBA,EAAO8L,OACP,OAAOgC,EAAAA,EAAAA,4BACH,IAAIF,EAAAA,6BACAzM,EAAQC,SACRhD,KAAKjC,MAAM6E,QAAQJ,cAAcoO,eAAelO,YAAYC,UAC5DI,GAEJ/C,KAAKjC,MAAM6E,QAAQJ,eACrBb,MAAKwf,IACH,IAAKA,EACD,OAAOC,EAAAA,GAAYC,OAAO,oCAG9B,MAAMC,EAAsD,iBAAzC1e,EAAQ+O,IAAI9M,OAAO0c,kBAetC,OAdAvhB,KAAKwB,SAAS,CACVgW,UACA6C,YAAa,GACbC,gBAAiB,UACjBC,aAAc,eACd/b,QAAQ,EACRye,gCAAiCqE,EACjClE,0BAA2B,CACvBra,UACA0M,aAAc0R,EACdrc,YAEJia,oBAAoB,IAEjBqC,EAAAA,GAAY9d,SAAS,IAGhC,OAAQ1B,EAAO4f,WACX,IAAK,cACD,GAAI5e,EAAQ+O,IAAI9M,OAAO4c,2BAA4B,KAAAC,EAAAC,EAC/C,MAAMC,GACS,QAAXF,EAAAb,EAAKjf,cAAM,IAAA8f,OAAA,EAAXA,EAAab,KAAKgB,aACP,QADgBF,EAC3Bd,EAAKjf,cAAM,IAAA+f,GAAsE,QAAtEA,EAAXA,EAAad,KAAKgB,UAAUtT,MAAK3M,GAAUA,EAAOkgB,YAAc/e,EAAQC,kBAAS,IAAA2e,OAAA,EAAjFA,EAAmF/F,UACjFmG,EAAiB,oBAAoBnf,EAAQ+O,IAAI9M,OAAO4c,+DAgB9D,OAfAzhB,KAAKwB,SAAS,CACVgW,UACA6C,iBACyBpX,IAArB2e,GACMd,EACK/c,QAAQ,gBAAiB6d,EAAiBvd,YAC1CN,QACG,gBACAnB,EAAQ+O,IAAI9M,OAAO4c,2BAA2Bpd,aAEtD0d,EACVzH,gBAAiB,SACjBC,aAAc,8BACd/b,QAAQ,IAEL4iB,EAAAA,GAAY9d,UAChB,CACH,MAAMye,EAAiB,yFAQvB,OAPA/hB,KAAKwB,SAAS,CACVgW,UACA6C,YAAa0H,EACbzH,gBAAiB,SACjBC,aAAc,8BACd/b,QAAQ,IAEL4iB,EAAAA,GAAY9d,UAE3B,IAAK,gBAAiB,IAAA0e,EAQlB,OAPAhiB,KAAKwB,SAAS,CACVgW,UACA6C,aAAgC,QAAnB2H,EAAApgB,EAAOqgB,oBAAY,IAAAD,OAAA,EAAnBA,EAAqBE,mBAAoBnB,EACtDzG,gBAAiB,SACjBC,aAAc,8BACd/b,QAAQ,IAEL4iB,EAAAA,GAAY9d,UAEvB,QASI,OARAF,EAAU+e,MAAM,mFAChBniB,KAAKwB,SAAS,CACVgW,UACA6C,YAAa0G,EACbzG,gBAAiB,SACjBC,aAAc,8BACd/b,QAAQ,IAEL4iB,EAAAA,GAAY9d,cAIlCtB,OAAOC,IACJmB,EAAUqX,QAAQxY,EAAMmgB,SACxBhf,EAAU+e,MAAM,yFACZ9C,EAAAA,iBAAiBC,mBAAmBrd,EAAMmgB,SAC1CpiB,KAAKwB,SAAS,CACVgW,UACA6C,YAAapY,EAAMmgB,QACnB9H,gBAAiB,SACjBC,aAAc,8BACd/b,QAAQ,IAGZwB,KAAKwB,SAAS,CACVgW,UACA6C,YAAa0G,EACbzG,gBAAiB,SACjBC,aAAc,8BACd/b,QAAQ,SAQnB,KAAA6jB,kCAAoC9f,UACjD,MAAM,QAAEK,EAAO,KAAEwS,EAAI,UAAEhS,GAAcpD,KAAKjC,OACpC,cAAEid,GAAkB5F,EAE1B,GAAIxS,GAAWA,EAAQJ,cAAe,CAClC,MAAM2X,EAAoC,IAE1C,GADkBvX,EAAQH,QAAQyV,KAAKoK,iBAAmB1f,EAAQH,QAAQyV,KAAKqK,OAC3EC,MAAaxH,GAAAA,EAAepZ,QAAU2S,EAAM,CAC5C,MAAMkO,QAAsBC,EAAAA,EAAAA,kBAAgBC,EAAAA,EAAAA,4BAA2B/f,EAAQJ,eAAgBI,EAAQJ,eACvG,IAAIiC,GAAsC,EACM,IAAAme,EAAhD,GAAItiB,EAAAA,gBAAgBC,YAAYkiB,GAC5Bhe,GAGK,QAFDme,EAAAH,EAAclU,MACTkL,GAAqD,2DAAtBA,EAAa5Q,cAChD,IAAA+Z,OAAA,EAFDA,EAEGjJ,aAAa,EAExB,MAAMjV,GAAY4D,EAAAA,EAAAA,IAAa1F,EAAQJ,cAAcoO,gBACjDnM,IACA8P,EAAKiB,gBAAgBtM,UAAYxE,IAErC0V,EAAAA,EAAAA,6BAA4B,CAAE9Q,cAAe1G,EAAQJ,eAAiB+R,EAAKiB,gBAAgB7H,cAAgB,CACvG4G,EAAKiB,kBAEJ7T,MAAKY,gBAEI,IAAIc,SAAQC,GAAWkX,WAAWlX,EAAS6W,KACjDjV,OAAOC,SAASC,QAAQ,IAE3BpD,OAAMC,IACHmB,EAAUqX,QAAQ,4EAClBrX,EAAUnB,MAAMA,EAAM,SAG9BmB,EAAUqX,QACN,qHAMC,KAAAoI,gBAAkBtgB,UAC/B2C,OAAOC,SAASC,SACT/B,QAAQC,WAeX,KAAAwf,gBAAkBvgB,UAA4C,IAAAwgB,EAClE,MACI3N,MAAM,cAAE4F,GAAe,QACvBpY,EAAO,oCACP6B,GACA1G,EAEEilB,EAAa,IACbC,EAA2C,CAC7CC,OAAQ,CACJC,IAAKH,EACLI,KAAM,IAIRC,EAAsC,IAAIC,EAAAA,oCAC5CtI,EAAcC,YAAYC,GAC1B+H,GAGJ,IAAIpD,QAA2B0D,EAAAA,GAAAA,sCAAqCF,EAAqCzgB,EAAQJ,eAE7GghB,EAA6B,GACjC,MAAMC,QAAkBC,EAAAA,EAAAA,cAAa3lB,EAAM6E,QAAQJ,eAC7Cqe,EAAO4C,EAAU5C,KAEvB,GADyBA,SAAe,QAAXkC,EAAJlC,EAAMgB,iBAAS,IAAAkB,OAAA,EAAfA,EAAiBxU,MAAKoV,IAAuC,IAA3BA,EAASC,gBAEhE5jB,KAAKwB,SAAS,CAAEsM,aAAc,qDAAsD+V,aAAc,eAC/F,CACH7jB,KAAKwB,SAAS,CAAEsiB,gBAAiB,IACjC,IAAK,IAAIC,EAAOf,EAAYnD,EAAmB9F,MAAMlY,OAAS,EAAGkiB,GAAQf,EAAY,CACjF,MAAMgB,EAAwBnE,EAAmB9F,MAAMvR,KAAI4S,IAAc,IAAA6I,EASrE,OARcrd,GAAA,CACV8K,OAA+B,QAAzBuS,EAAE7I,EAAYtF,mBAAW,IAAAmO,OAAA,EAAvBA,EAAyBlO,eAAerE,OAChDoQ,UAAW1G,EAAY5F,gBAAgBsM,UACvClG,SAAUR,EAAY5F,gBAAgBoG,SACtCsI,WAAY,GACZC,oBAAqB/I,EAAY5F,gBAAgB4O,eAC7C3f,GAAuC,CAAEC,UAAW0W,EAAY5F,gBAAgBtM,WAEzE,UAEbmb,EAAAA,GAAAA,mBACF,CAAE/a,cAAe1G,EAAQJ,eACzBihB,EAAU5C,KAAK3F,GACf8I,EACAP,EAAU5C,KAAKyD,SACjBtiB,OAAMC,IAAQ,IAAAsiB,EAAAC,EAGZ,MAFA5hB,EAAQQ,UAAUqhB,MAAgB,QAAXF,EAACtiB,EAAMmT,YAAI,IAAAmP,OAAA,EAAVA,EAAYG,mBACpC9hB,EAAQQ,UAAUqhB,MAAM,yCACR,QAAhBD,EAAMviB,EAAMmT,YAAI,IAAAoP,OAAA,EAAVA,EAAYE,iBAAiB,IAEvC1kB,KAAKwB,UAASmjB,IAAa,CACvBb,gBAAiBa,EAAUb,gBAAkBE,EAAUniB,WAE3D2hB,EAAiBA,EAAeoB,OAAOZ,GACvCX,EAAoCJ,oBAAoBC,OAAQE,KAAOW,EACvElE,QAA2B0D,EAAAA,GAAAA,sCAAqCF,EAAqCzgB,EAAQJ,qBAE3GihB,EAAUoB,YAAY,CAAC,GAC7B7kB,KAAK8kB,cAAa,KAoBnB,KAAA7I,iCAAoCle,IACvC,MACIqX,MAAM,cAAE4F,GAAe,SACvBvC,EAAQ,GACRhY,EAAE,QACFmC,EAAO,iBACP8C,EAAgB,UAChB9F,EAAS,oCACT6E,GACA1G,GAEE,2BACFgnB,EAA0B,sBAC1BC,EAAqB,wBACrBC,EAAuB,wBACvBC,EAAuB,wBACvBC,EAAuB,0BACvBC,EAAyB,gCACzBC,GACAzlB,EAEE0d,EAAgB,CAClB0H,wBACAC,0BACAC,0BACAC,0BACAC,4BACAC,mCAyBEC,EAlBgBC,EAAC7X,EAAsC4P,EAA+BkI,KACxF,MAAM,wBAAEP,EAAuB,wBAAEC,EAAuB,wBAAEC,GAA4B7H,EAEtF,MAAe,YAAX5P,EACO,GAAGyX,OAGC,YAAXzX,EACOwX,EAGI,WAAXxX,EACoB,OAAb8X,EAAoBA,EAAWP,EAGnC,EAAE,EAGKM,CAAcvlB,KAAKzB,MAAMslB,aAAcvG,EAAetd,KAAKzB,MAAMuP,cAC7E2X,EAAqBzlB,KAAKzB,MAAMslB,aAAa6B,cAC7ClgB,GAAUC,EAAAA,EAAAA,kBAAiB,QAASC,EAAmBigB,EAAAA,kBAAkBC,wBACzEC,GAA4BC,EAAAA,EAAAA,wBAAuBpgB,EAAmBF,GAEtEugB,EAAkC,CACpCzI,gBACArf,UAAW,iCACXwnB,qBACAO,KAAMV,EACN9H,UAAWxd,KAAKzB,MAAMif,UACtBsH,aAAc9kB,KAAK8kB,cAGjBmB,EAAmBjoB,EAAAA,cAACkoB,EAAAA,cAAalf,OAAAC,OAAA,GAAK8e,IAEtCrnB,EAAWsc,EAAc6E,mBAAmBrX,KAAI+L,GAAQA,EAAKuB,cAAarI,QAAOqI,GAAeA,IAEtG,OACI9X,EAAAA,cAAAA,EAAAA,SAAA,KACKioB,EACDjoB,EAAAA,cAAA,SAAAgJ,OAAAC,OAAA,CACIhJ,UAAW,4EACsB,IAA7B+c,EAAcgD,YAAoBhD,EAAc6E,mBAAmBvL,MAAKC,GAAQA,EAAKC,gBAC/E,WACA,IACR,aACUuQ,EACZzZ,SAAuC,IAA7B0P,EAAcgD,YAAoBhD,EAAc6E,mBAAmBvL,MAAKC,GAAQA,EAAKC,gBAC/F3T,KAAK,SACLsG,QAAS5E,UACLvC,KAAKwB,SAAS,CAAEqiB,aAAc,UAAWrG,WAAW,IACpD,UACUxd,KAAK8iB,gBAAgB/kB,GAC3BiC,KAAKwB,SAAS,CACV2kB,4BAA4B,EAC5BtC,aAAc,YAEpB,MAAO5hB,GACLjC,KAAKwB,SAAS,CACVqiB,aAAc,SACd/V,aAAc,wDAItB+X,GAEHd,GAEL/mB,EAAAA,cAACooB,EAAAA,uBAAsBpf,OAAAC,OAAA,CACnBhJ,UAAU,iCACVwC,GAAIA,EACJgY,SAAUA,EACV7V,QAASA,EACT0a,cAAe+H,EACfjQ,KAAM,CACFiR,WAAYrmB,KAAKzB,MAAMulB,gBACvB9I,cAAeA,EAAcC,YAC7Bvc,YAEJ8e,UAAWxd,KAAKzB,MAAM4nB,2BACtB1I,QAnFwB6I,KAChCtmB,KAAKwB,SAAS,CAAEsM,aAAc,GAAIqY,4BAA4B,GAAQ,EAmF9D1hB,oCAAqCA,IAAuC,GACvEA,GAAuC,CAAEC,UAAW,KAE9D,EAIH,KAAAogB,aAAgBtmB,IACpBwB,KAAKwB,SAAS,CAAEgc,UAAWhf,GAAS,EAGvB,KAAA+nB,gBAAkB,KAC/B,MAAM,QAAE3jB,EAAO,KAAEwS,EAAI,UAAEhS,EAAS,UAAExD,GAAcI,KAAKjC,OAC/C,cAAEid,GAAkB5F,EAE1B,GAAIxS,GAAWA,EAAQJ,cAAe,CAElC,GADkBI,EAAQH,QAAQyV,KAAKoK,iBAAmB1f,EAAQH,QAAQyV,KAAKqK,OAC9DvH,GAAiBA,EAAcpZ,OAAQ,EACpD4kB,EAAAA,EAAAA,aAAY,CAAEld,cAAe1G,EAAQJ,eAAiBwY,EAAcpZ,OAAOqZ,aACtEtZ,OACAK,OAAOC,IAAiB,IAAAwkB,EACrBrjB,EAAUqX,QAAQ,qDAClBrX,EAAUnB,MAAMA,GAChBjC,KAAKwB,SAAS,CACVgW,SAA6B,QAApBiP,EAAAzL,EAAcpZ,cAAM,IAAA6kB,OAAA,EAApBA,EAAsBxL,YAAYC,KAAM,GACjDb,YAAaza,EAAU8mB,8BACvBpM,gBAAiB,SACjBC,aAAc,8BACd/b,QAAQ,GACV,IAEV,MAAMmoB,GAAU9L,EAAAA,EAAAA,IAAW,oBAAqB7a,KAAKjC,MAAM6E,QAAQJ,eAC/DmkB,GACAzhB,OAAOC,SAAS8B,OAAO0f,QAG3BvjB,EAAUqX,QAAQ,uFAGtBrX,EAAUqX,QAAQ,sDAQT,KAAAmM,aAAe,KAC5B,MAAM,QAAEhkB,GAAY5C,KAAKjC,MAGzB,GAAI6E,EAAQH,SAAWG,EAAQH,QAAQokB,QAA0C,WAAhCjkB,EAAQH,QAAQokB,OAAOC,KACpE,MAAO,KAGX,GAAIlK,EAAAA,GAASC,WAAa3X,OAAO6hB,WAAY,CACzC,MAAMlW,EAAejO,EAAQH,QAAQoO,aACrC,GAAIA,EACA,OAAIA,EAAa3R,IAAMgG,OAAO6hB,YAAclW,EAAa3R,GAAGE,EACjD,KACAyR,EAAamW,IAAM9hB,OAAO6hB,YAAclW,EAAamW,GAAG5nB,EACxD,KACAyR,EAAaoW,IAAM/hB,OAAO6hB,YAAclW,EAAaoW,GAAG7nB,EACxD,KACAyR,EAAavR,IAAM4F,OAAO6hB,YAAclW,EAAavR,GAAGF,EACxD,KAEJ,KAIf,MAAO,IAAI,EAQE,KAAAsf,YAAewI,GAExBlpB,EAAAA,cAAA,OAAKC,UAAU,wBACXD,EAAAA,cAAA,QAAMC,UAAW,GAAG+B,KAAKjC,MAAM8G,OAAO5G,6BAA4B,cAAc,SAChFD,EAAAA,cAAA,QAAMC,UAAU,aAAaipB,IAUxB,KAAAvI,YAAewI,GAExBnpB,EAAAA,cAAA,OAAKC,UAAU,wBACXD,EAAAA,cAAA,QAAMC,UAAU,aAAakpB,GAC7BnpB,EAAAA,cAAA,QAAMC,UAAW,GAAG+B,KAAKjC,MAAM8G,OAAO5G,8BAA6B,cAAc,UA1sCzF+B,KAAK/B,UAAY,oBACjB+B,KAAKonB,UACDrpB,EAAM6E,QAAQH,SAAW1E,EAAM6E,QAAQH,QAAQokB,QAAgD,WAAtC9oB,EAAM6E,QAAQH,QAAQokB,OAAOC,KAAoB,KAAO,KACrH9mB,KAAKqnB,gBAAkBrnB,KAAKqnB,gBAAgBrc,KAAKhL,MAEjDA,KAAKzB,MAAQ,CACTiZ,QAAS,GACT6C,YAAa,GACbC,gBAAiB,UACjBC,aAAc,eACd/b,QAAQ,EACRye,gCAAgC,EAChCqK,qCAAqC,EACrCtN,iBAAkB,GAClB+E,oBAAoB,EACpBrH,6BAA6B,EAC7BmM,aAAc,UACdrG,WAAW,EACXsG,gBAAiB,EACjBqC,4BAA4B,EAC5BrY,aAAc,IAGlB9N,KAAK0F,kBAAmB6hB,EAAAA,EAAAA,oBACpBvnB,KAAKjC,MAAM6E,QAAQH,QAAQ+kB,kBAC3BxnB,KAAKjC,MAAM0pB,aACXznB,KAAKjC,MAAMqF,WAEfpD,KAAKqnB,mBAEDzK,EAAAA,GAASC,WAAc7c,KAAKjC,MAAM6E,QAAQH,QAAQyV,KAAKoK,iBAAoBtiB,KAAKjC,MAAM6E,QAAQH,QAAQilB,OAAOC,UAC7GziB,OAAOC,SAAS8B,OAAOjH,KAAKjC,MAAM6E,QAAQH,QAAQyV,KAAK0P,WAAa,IAE5E,CAvCclR,eACV,MAA0B,OAAnB1W,KAAKonB,WAAyC,OAAnBpnB,KAAKonB,SAC3C,CAwCO7kB,0BACHvC,KAAKwB,SAAS,CAAC,GACf,MAAMwZ,QAAsBhb,KAAKjC,MAAMqX,KAAK4F,cAC5Chb,KAAKjC,MAAM8G,OAAO+S,QAASoO,MAAOhL,aAAa,EAAbA,EAAeC,YAAYpS,OAAQ,GACrE7I,KAAKwB,SAAS,CACVwY,iBAAkBgB,aAAa,EAAbA,EAAe6E,qBAGjCjD,EAAAA,GAASC,YACT3X,OAAO2iB,iBAAiB,SAAU7nB,KAAKqnB,iBACvCrnB,KAAKqnB,kBAEb,CAEOS,uBACClL,EAAAA,GAASC,WACT3X,OAAO6iB,oBAAoB,SAAU/nB,KAAKqnB,gBAElD,CAEOhhB,sBACHC,EACAC,GAEA,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,QAAUuI,CAInD,CAEOE,SACH,MAAM,QAAEoR,EAAO,UAAE3Z,GAAc+B,KAAKjC,MAAM8G,QACpC,4BAAEmjB,EAA2B,+BAAEC,GAAmCjoB,KAAKjC,MAAM6B,WAC7E,cAAEob,EAAa,KAAE6F,GAAS7gB,KAAKjC,MAAMqX,KAE3C,GAAoB,YAAhByL,EAAKnT,QAAwBwa,EAAAA,iBAAiBC,kBAAkBnN,IAA2C,YAAzBA,EAActN,OAAsB,CACtH,MAAM0a,EAAUxhB,GAAAA,GAAA,GACR5G,KAAKjC,OAAuD,IAChEub,mBAAoB,CAChB+O,YAAaroB,KAAKjC,MAClBE,UAAWkU,IAAWnS,KAAK/B,UAAWA,IAE1CyP,OAAQ,UACR4a,cAAetqB,EAAAA,cAAC+J,EAAO,CAAC9J,UAAW+B,KAAK/B,UAAWC,IAAK8B,KAAKjC,MAAM6B,UAAUoI,2BAC7E4P,QAASA,GAAW5Z,EAAAA,cAACuqB,EAAAA,QAAOvhB,OAAAC,OAAA,CAAChJ,UAAW,GAAG+B,KAAK/B,sBAA0B2Z,IAC1EhY,UAAWI,KAAKjC,MAAM6B,YAE1B,OAAOI,KAAKjC,MAAMyqB,WAAWJ,GAGjC,GAAoB,WAAhBvH,EAAKnT,QAAgD,WAAzBsN,EAActN,OAAqB,CAC/D,MAAM0a,EAAUxhB,GAAAA,GAAA,GACR5G,KAAKjC,OAAuD,IAChEub,mBAAoB,CAChB+O,YAAaroB,KAAKjC,MAClBE,UAAWkU,IAAW,GAAGnS,KAAK/B,YAAaA,IAE/CyP,OAAQ,SACR4a,cAAetqB,EAAAA,cAACyqB,EAAAA,gCAA+B,CAACC,UAAU,SAAS1C,KAAMiC,IACzErQ,QAASA,GAAW5Z,EAAAA,cAACuqB,EAAAA,QAAOvhB,OAAAC,OAAA,CAAChJ,UAAW,GAAG+B,KAAK/B,sBAA0B2Z,IAC1EhY,UAAWI,KAAKjC,MAAM6B,YAG1B,OAAOI,KAAKjC,MAAMyqB,WAAWJ,GAGjC,MAAMO,EAAsB3N,GAAiBA,EAAcpZ,OACrDie,EAAqB8I,GAAuBA,EAAoB9I,mBAEtE,IAAK8I,IAAwB9I,GAAoD,IAA9BA,EAAmBhe,OAAc,CAChF,GAAI8mB,IAAwB3oB,KAAK4oB,gBAAkBhM,EAAAA,GAASC,UAExD,OADA3X,OAAOC,SAASiU,KAAOpZ,KAAK0a,2BACrB,KAGX,MAAMmO,EAAcjiB,GAAAA,GAAA,GACZ5G,KAAKjC,OAAuD,IAChEub,mBAAoB,CAChB+O,YAAaroB,KAAKjC,MAClBE,UAAWkU,IAAW,GAAGnS,KAAK/B,YAAaA,IAE/CyP,OAAQ,QACR4a,cAAetqB,EAAAA,cAACyqB,EAAAA,gCAA+B,CAACC,UAAU,QAAQ1C,KAAMgC,IACxEpQ,QAASA,GAAW5Z,EAAAA,cAACuqB,EAAAA,QAAOvhB,OAAAC,OAAA,CAAChJ,UAAW,GAAG+B,KAAK/B,sBAA0B2Z,IAC1EhY,UAAWI,KAAKjC,MAAM6B,UACtBkpB,aACIH,GACA3oB,KAAK+oB,4BAA4BJ,EAAqB3oB,KAAKuZ,4CAC/DyP,qBAAsBL,GAAuB3oB,KAAKipB,6BAA6BN,EAAoB1N,YAAYC,IAC/GgO,qBAAsB,CAClBjrB,UAAW,GAAG+B,KAAK/B,uBACnBkrB,IAAK,SAIb,OAAOnpB,KAAKjC,MAAMyqB,WAAWK,GAGjC,MAAMxhB,EAAST,GAAAA,GAAA,GACP5G,KAAKjC,OAAuD,IAChEub,mBAAoB,CAChB+O,YAAaroB,KAAKjC,MAClBE,UAAWkU,IAAW,GAAGnS,KAAK/B,YAAaA,IAE/CyP,OAAQ,UACR0b,sBAAuBppB,KAAKzB,MAAMC,QAC9BR,EAAAA,cAAA,OAAKC,UAAW,GAAG+B,KAAK/B,6BACpBD,EAAAA,cAAC8U,EAAAA,MAAK,CAAC1R,MAAOpB,KAAKzB,MAAM+b,gBAAiB9b,OAAQwB,KAAKzB,MAAMC,OAAQqI,OAAQ7G,KAAK0f,YAC9E1hB,EAAAA,cAAA,oBAAgB,aAAagC,KAAKzB,MAAM8b,eAIpDzC,QAASA,GAAW5Z,EAAAA,cAACuqB,EAAAA,QAAOvhB,OAAAC,OAAA,CAAChJ,UAAW,GAAG+B,KAAK/B,sBAA0B2Z,IAC1EsR,qBAAsB,CAClBjrB,UAAW,GAAG+B,KAAK/B,uBACnBkrB,IAAK,OAETE,cAAe,CACXprB,UAAW,GAAG+B,KAAK/B,mBACnBkrB,IAAK,QACLjpB,KAAM,QAEVopB,iBAAkB,CACdrrB,UAAW,GAAG+B,KAAK/B,uBACnBkrB,IAAK,MAETI,qBAAsBvpB,KAAKwpB,yBAAyBxpB,KAAKjC,MAAM6B,WAC/DmW,eAAgB,CACZ9X,UAAW,GAAG+B,KAAK/B,6BACnBkrB,IAAK,KAETM,WAAYzpB,KAAK0pB,qBACjBC,UAAW,CAAEC,eAAgBC,IAAS7pB,KAAK2f,gBAAiB,MAC5DmJ,aAAc9oB,KAAK+oB,4BAA4BJ,EAAqB3oB,KAAKuZ,4CACzEuQ,WAAY9pB,KAAK0d,oBACjBqM,sBAAuB/pB,KAAKkd,+BAC5B8L,qBAAsBhpB,KAAKipB,6BAA6BN,EAAoB1N,YAAYC,IACxF6D,mBAAoB/e,KAAKzB,MAAMwgB,mBAC/BvI,uBAAwBxW,KAAK8e,wBAC7BE,oBAAqBhf,KAAKzB,MAAMygB,oBAChCtI,SAAU1W,KAAK0W,WAGnB,OAAO1W,KAAKjC,MAAMyqB,WAAWnhB,EACjC,CAEO2P,SAASzC,EAAmCwC,GAC/CxC,EAAKwC,UAAYA,EAEjB,MAAMiT,EACFhqB,KAAKzB,MAAMyb,iBAAiBxR,KAAIzF,IAAU,IAAAknB,EAAAC,EAItC,OAHuB,QAAnBD,EAAAlnB,EAAQ+S,mBAAW,IAAAmU,OAAA,EAAnBA,EAAqBlU,eAAerE,WAA2B,QAArBwY,EAAK3V,EAAKuB,mBAAW,IAAAoU,OAAA,EAAhBA,EAAkBnU,eAAerE,UAChF6C,EAAKwC,UAAYA,GAEdhU,CAAO,KACZ,GAEV/C,KAAKwB,SAAS,CACVwY,iBAAkBgQ,GAE1B,CAEOG,YAAYpT,GACf,MAAMiT,EACFhqB,KAAKzB,MAAMyb,iBAAiBxR,KAAI+L,IAC5BA,EAAKwC,UAAYA,EACVxC,MACL,GAEVvU,KAAKwB,SAAS,CACVwY,iBAAkBgQ,GAE1B,CAEQR,yBAAyB5pB,GAC7B,MAAM,aACFwqB,EAAY,kBACZC,EAAiB,YACjBC,EAAW,qBACXC,EAAoB,eACpBC,EAAc,oBACdC,EAAmB,mBACnBC,EAAkB,kBAClBC,EAAiB,uBACjBC,GACAhrB,EACEirB,EAA2C,CAC7CT,aAAcA,EACdU,cAAeT,EACflR,YAAamR,EACbS,iBAAkBR,EAClBS,WAAYR,EACZS,gBAAiBR,EACjBS,eAAgBR,EAChBC,oBACA5Q,MAAO/Z,KAAKzB,MAAMyb,iBAClBtD,SAAU1W,KAAK0W,SACf9O,aAAemP,IACX/W,KAAKmqB,YAAYpT,EAAU,EAE/BtS,oCAAqCzE,KAAKuZ,2CAC1CqR,uBAAwBA,GAG5B,OAAO5sB,EAAAA,cAACmtB,EAAAA,0BAAyBnkB,OAAAC,OAAA,GAAK4jB,GAC1C,CAEQ5B,6BAA6BzkB,GACjC,OACIxG,EAAAA,cAACiW,EAAwBjN,OAAAC,OAAA,GACjBjH,KAAKjC,MAAK,CACdyG,gBAAiBA,EACjB6P,cAAerU,KAAKzB,MAAMyb,kBAAoBha,KAAKzB,MAAMyb,iBAAiBvM,QAAO8G,GAAQA,EAAKwC,YAC9FtC,oBAAqBzU,KAAKmb,qBAC1BxG,kBAAmB3U,KAAK4Z,mBACxBvE,eAAgBrV,KAAK0W,SACrBjS,oCAAqCzE,KAAKuZ,2CAC1C7T,iBAAkB1F,KAAK0F,mBAGnC,CAEQ0lB,2CACJ,MAAO,CACHC,mBAAoBrrB,KAAKjC,MAAM6B,UAAUyrB,mBACzCC,6BAA8BtrB,KAAKjC,MAAM6B,UAAU0rB,6BACnDC,mCAAoCvrB,KAAKjC,MAAM6B,UAAU2rB,mCACzDC,mCAAoCxrB,KAAKjC,MAAM6B,UAAU4rB,mCACzDC,sCAAuCzrB,KAAKjC,MAAM6B,UAAU6rB,sCAC5DC,kCAAmC1rB,KAAKjC,MAAM6B,UAAU8rB,kCAEhE,CAEQnO,0CACJ,MAAO,CACH8N,mBAAoBrrB,KAAKjC,MAAM6B,UAAUyrB,mBACzCC,6BAA8BtrB,KAAKjC,MAAM6B,UAAU0rB,6BACnDK,iCAAkC3rB,KAAKjC,MAAM6B,UAAU+rB,iCACvDC,oCAAqC5rB,KAAKjC,MAAM6B,UAAUgsB,oCAC1DC,iCAAkC7rB,KAAKjC,MAAM6B,UAAUisB,iCACvDnT,cAAe1Y,KAAKjC,MAAM6B,UAAU8Y,cACpCC,kBAAmB3Y,KAAKjC,MAAM6B,UAAU+Y,kBACxCC,iBAAkB5Y,KAAKjC,MAAM6B,UAAUgZ,iBAE/C,CAmFQmQ,4BACJ/N,EACAvW,GAEA,MAAM,GAAEhE,EAAE,SAAEgY,EAAQ,QAAE7V,EAAO,UAAEhD,GAAcI,KAAKjC,OAC5C,2BACFgnB,EAA0B,yBAC1B+G,EAAwB,yBACxB/P,EAAwB,sBACxBiJ,EAAqB,wBACrBC,EAAuB,wBACvBC,EAAuB,wBACvBC,EAAuB,0BACvBC,GACAxlB,EAEEmsB,EAAmD,CACrD3W,KAAM,CAAE4F,iBACRva,KACAgY,WACA7V,UACA8C,iBAAkB1F,KAAK0F,iBACvB+P,SAAU,CACNuW,iBAAkBhsB,KAAK6iB,gBACvBpG,iBAAkBzc,KAAKumB,iBAE3B9hB,sCACAwnB,iCAAkCjsB,KAAKksB,0CAA0CtsB,GACjFA,UAAW,CACPmlB,6BACA+G,2BACA/P,2BACAkJ,0BACAC,0BACAC,0BACAH,wBACAI,4BACAC,gCAAiCrlB,KAAKorB,6CAI9C,OAAOprB,KAAK8b,0BAA0BiQ,EAC1C,CAkCQG,0CAA0CtsB,GAC9C,MAAO,CACHusB,yBAA0BvsB,EAAUwsB,6BACpCC,wBAAyBzsB,EAAU0sB,mBACnCC,2BAA4B3sB,EAAU0sB,mBACtCE,yBAA0B,GAC1BC,yBAA0B7sB,EAAU6sB,yBACpCC,yBAA0B9sB,EAAU+sB,8BACpCC,+BAAgChtB,EAAUitB,eAElD,CA8CQjE,eACJ,OAAwC,IAAjC5oB,KAAK8d,uBAChB,CAEQA,wBACJ,MAAMF,EAAe5d,KAAKjC,MAAM8G,OAAO+Y,cAAgB,GACvD,OAAQ5d,KAAKjC,MAAM6E,QAAQH,QAAQhE,QAAUuB,KAAKjC,MAAM6E,QAAQH,QAAQhE,MAAMslB,KAAOnG,GAAiB,CAC1G,CAuCQ8L,qBACJ,MAAM,iBACFoD,EAAgB,eAChB1W,EAAc,uBACdC,EAAsB,UACtB0W,EAAS,kBACTpU,EAAiB,iBACjBC,EAAgB,oCAChBoU,EAAmC,sCACnCC,EAAqC,0BACrC9c,EAAyB,yBACzBE,EAAwB,0BACxBC,EAAyB,uBACzBnE,EAAsB,iBACtB+gB,EAAgB,yBAChB9gB,EAAwB,yBACxBL,EAAwB,+BACxBohB,EAA8B,8BAC9BC,GACAptB,KAAKjC,MAAM6B,WAET,QAAEgD,EAAO,UAAEQ,EAAS,KAAEgS,GAASpV,KAAKjC,OACpC,SAAEsK,GAAa+M,GACf,cAAE9N,GAAkBtH,KAAKjC,MAAM8G,OAErC,OAAO7E,KAAKzB,MAAMyb,iBAAiBxR,KAAI,CAAC+L,EAAMjB,KAAS,IAAA+Z,EAiDnD,MFnlB0B1oB,KAAsE,IAAA2oB,EACxG,MAAM,kBACF/X,EAAiB,gBACjBC,EAAe,MACfxC,EAAK,QACLpQ,EAAO,cACP0E,EAAa,SACbxC,EAAQ,UACRlF,EAAS,SACT8W,EAAQ,oCACRjS,GACAE,EACE5B,EAAUwS,EAAkBO,aAC5B,OAAEJ,EAAM,cAAE0O,GAAkB5O,GAC5B,iCAAEW,EAAgC,mBAAED,EAAkB,iBAAE4W,GAAqBltB,EACnF,IAAKmD,EACD,OAAO,KAGX,MAAM,OAAE2O,EAAM,gBAAEH,GAAoBxO,EAAQgT,eACtC+B,GAAgBrG,EAAAA,EAAAA,qBAClBC,EACA9O,EAAQJ,cAAcoO,eAAelO,YAClB,QAD6B4qB,EAChD1qB,EAAQH,QAAQkP,WAAG,IAAA2b,GAAQ,QAARA,EAAnBA,EAAqBzoB,cAAM,IAAAyoB,OAAA,EAA3BA,EAA6B1b,kBAE3BgF,EAAqBjS,EAAM+R,SAAW,0BAA4B,mDAClEC,EAAwBhS,EAAM+R,SAAW,6BAA+B,sDAE9E,MAAO,CACHA,WACAjS,oCAAqCA,EACrC8oB,WACIvvB,IAAAA,cAAA,SAAOC,UAAU,sBACbD,IAAAA,cAAA,sBACgB8uB,EACZ7uB,UAAU,iBACV4C,KAAK,WACLoW,QAAS1B,EAAkBwB,UAAS,eACtBxB,EAAkBwB,UAChCrW,SAAUoW,EAAoBvB,EAAmB5Q,KAErD3G,IAAAA,cAAA,QAAMC,UAAU,eAGxB0K,IAAK+M,EACL8X,mBAAoB/oB,GAAuCwT,EAAqBtT,GAChFylB,aAAczS,EACV,8CACA/U,EACAG,EAAQgT,eAAelN,KACvB0I,EACAuG,EACAxQ,GAEJmmB,YAAa3U,EAAkBnU,GAC/B8K,aAAcuD,GAASqF,EAAa1T,GACpCmmB,cAAe/nB,GACX/E,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,OAAKC,UAAU,gDAAgDyT,GAC9C,KAAhB/M,EAAM1C,MACHjE,IAAAA,cAAA,OAAKC,UAAU,sDAAsD4a,EAAoBlU,SAEzF1B,GAIZyqB,qBAAsB1a,EAClBhV,IAAAA,cAAA,OAAKC,UAAU,yDAAyDmmB,GAAiBpR,EAAMoR,oBAE/FnhB,EAEJiX,cAAexE,EACfiY,cACKlpB,GACDgS,EACI9R,EAAM+R,SACNC,EACAR,EACAb,EAAyB3Q,GAAOqR,iBAExC4X,oBAAqB5vB,IAAAA,cAAA,WAAMyZ,EAAkB9S,EAAO+Q,IACpDuV,gBAAiBnmB,EACjB+oB,gBACKppB,GACDgS,EAAgB9R,EAAM+R,SAAUE,EAAoBV,EAAoBZ,EAAyB3Q,GAAOkR,eAC5GiY,mBACKpX,GAAYjS,EACTzG,IAAAA,cAACkZ,EAAiBlQ,OAAAC,OAAA,GAAKtC,EAAK,CAAEiS,mBAAoBA,EAAoBD,sBAAuBA,UAE7F1T,EAER8qB,MAAO/vB,IAAAA,cAACiY,EAAKjP,OAAAC,OAAA,GAAKtC,EAAK,CAAEiS,mBAAoBA,EAAoBD,sBAAuBA,KACxFrL,SAAU3G,EAAM6P,cACnB,EEsfcwZ,CAhD8C,CACjDzY,kBAAmBhB,EACnBiB,gBAAiBjB,EAAKiB,gBACtBxC,MAAuB,QAAlBqa,EAAE9Y,EAAKuB,mBAAW,IAAAuX,OAAA,EAAhBA,EAAkBY,aACzBhsB,MAAOsS,EAAKtS,MACZuS,cAAeD,EAAKC,cACpB5R,UACA8U,4BAA6B1X,KAAKzB,MAAMmZ,4BACxCsB,WAAYzE,EAAKuB,YACX9V,KAAKkf,yBAAyB3K,EAAKuB,YAAYC,eAAgBnT,EAAS2R,EAAKiB,gBAAgBtM,WAC7F,GACN5B,gBACAlE,YACAkV,SAAUtY,KAAKjC,MAAM0C,GACrB8X,eAAgBvY,KAAKjC,MAAM0a,SAC3B3T,SAAUyP,EAAKiB,gBAAgBoG,SAC/BnG,SAAU,CACNE,WAAY3V,KAAK6b,cACjBjG,aAAc5V,KAAKqiB,kCACnB9K,iBAAkBvX,KAAK2f,gBACvB3I,SAAUhX,KAAKgX,SAAShM,KAAKhL,OAEjCJ,UAAW,CACPktB,mBACA1W,iBACAC,yBACAlG,4BACAE,2BACAC,4BACAoI,cAAeqU,EACfpU,oBACAC,mBACAzM,yBACAgK,iCAAkC8W,EAClC/W,mBAAoB8W,EACpBE,mBACA9gB,2BACAL,2BACAohB,iCACAC,iCAEJ9Z,QACAoD,SAAU1W,KAAK0W,SACfF,uBAAwBxW,KAAK8e,wBAC7Bra,oCAAqCzE,KAAKuZ,2CAC1ClR,SAAUA,GAAYA,EAASzG,QAGe,GAE1D,CA2iBQylB,kBACJrnB,KAAKonB,UAAYpnB,KAAK4mB,cAC1B,IA9pCAld,EAAAA,EAAAA,IAAA,CADCwkB,EAAAA,IAAU,kCAGDxkB,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,+BA0CTD,EAAAA,EAAAA,IAAA,CADCykB,EAAAA,IAAM,uCAjDL7U,IAAkB5P,EAAAA,EAAAA,IAAA,CADvBkD,EAAAA,IACK0M,IA8tCN,YAEM6C,GAAkCpe,IACpC,MAAM,iCAAEkuB,EAAgC,UAAErsB,EAAS,QAAEgD,EAAO,SAAE6S,GAAa1X,EAC3E,OACIC,EAAAA,cAACowB,EAAAA,6BAA4B,CACzBpC,iBAAkBvW,EAASuW,iBAC3B/tB,UAAU,iCACV2E,QAASA,EACTnC,GAAI1C,EAAM0C,GACV2U,KAAM,CAAE4F,cAAejd,EAAMqX,KAAK4F,cAAcC,aAChDxC,SAAU1a,EAAM0a,SAChBwT,iCAAkCA,EAClCU,8BAA+B/sB,EAAUksB,yBACzCrnB,qCAAmC,GACrC,6ECr4CV,MAgHM4pB,EAAcA,CAACtrB,EAAsCurB,EAAuBhF,KAC9E,IAAKvmB,EACD,OAAO,KAGX,MAAM,IACF4F,EAAG,WACH4kB,EAAU,mBACVC,EAAkB,aAClBpD,EAAY,aACZ3a,EAAY,cACZqb,EAAa,eACb+C,EAAc,aACdF,EAAY,YACZF,EAAW,qBACXC,EAAoB,oBACpBE,EAAmB,gBACnB3C,EAAe,MACf8C,EAAK,SACLrX,EAAQ,kBACRoX,EAAiB,oCACjBrpB,EAAmC,SACnC6G,GACAvI,EAYEwrB,EAViBjjB,EACjB,CACIkjB,cAAe,OACfC,QAAS,IAEb,CACID,cAAe,OACfC,QAAS,GAKnB,OACIzwB,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,CAAC0B,IAAKA,EAAK1K,UAAW,GAAGqrB,EAAkBrrB,aAAiBqrB,GAC7DtrB,EAAAA,cAAA,UAAKuvB,IACH7W,GAAYjS,GAAuCzG,EAAAA,cAAA,MAAI2wB,MAAOJ,GAAiBf,GACjFxvB,EAAAA,cAAA,MAAI2wB,MAAOJ,GAAiBnE,GAC3B1T,EACG1Y,EAAAA,cAAA,UACIA,EAAAA,cAAA,WAAM8sB,GACN9sB,EAAAA,cAAA,OAAK2wB,MAAOJ,GACPD,EAAa,IAAG,IAChBrD,IAITjtB,EAAAA,cAAA,UAAK8sB,IAEPpU,GAAY1Y,EAAAA,cAAA,MAAI2wB,MAAOJ,GAAiBd,IACxC/W,GAAY1Y,EAAAA,cAAA,MAAI2wB,MAAOJ,GAAiB9e,IACxCiH,GAAY1Y,EAAAA,cAAA,MAAI2wB,MAAOJ,GAAiBb,IACxChX,GAAY1Y,EAAAA,cAAA,MAAI2wB,MAAOJ,GAAiBX,GACzClX,GAAY1Y,EAAAA,cAAA,MAAI2wB,MAAOJ,GAAiBR,IACvCrX,IAAajS,GACXzG,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,MAAI2wB,MAAOJ,GAAiBV,GAC5B7vB,EAAAA,cAAA,UAAK2vB,IAGb3vB,EAAAA,cAAA,MAAI2wB,MAAOJ,GAAiBT,GACzB,EAIf,EArLmE/vB,IAC/D,MAAM,mBACFub,EAAkB,OAClB5L,EAAM,cACN4a,EAAa,QACb1Q,EAAO,cACPyR,EAAa,qBACbE,EAAoB,WACpBE,EAAU,iBACVH,EAAgB,sBAChBF,EAAqB,qBACrBF,EAAoB,aACpBJ,EAAY,WACZgB,EAAU,sBACVC,EAAqB,qBACrBf,EAAoB,mBACpBjK,EAAkB,oBAClBC,EAAmB,uBACnBxI,EACA5W,WAAW,eACPitB,EAAc,kBACdxC,EAAiB,YACjBC,EAAW,qBACXC,EAAoB,eACpBC,EAAc,oBACdC,EAAmB,uBACnBG,IAEJ7sB,EAEE6wB,EAAgB5wB,EAAAA,aAAkB,KACpCwY,GAA0BA,OAAuBvT,EAAU,GAC5D,CAACuT,IAEJ,OACIxY,EAAAA,cAAC6wB,EAAAA,OAAM7nB,OAAAC,OAAA,GAAKqS,GACP1B,EACAsR,GACGlrB,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKiiB,GACLJ,aAAY,EAAZA,EAAc9M,iBACd8M,aAAY,EAAZA,EAAc5M,eACd4M,aAAY,EAAZA,EAAc1M,eACd0M,aAAY,EAAZA,EAAcxM,oBACbyC,GAAsBqK,GAG/BJ,EACW,YAAXtb,GAAwB4a,EACxBe,GAAiBI,GAAcA,EAAW5nB,OAAS,GAChD7D,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAU,8BACZD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKoiB,GACLE,EACDvrB,EAAAA,cAAA,aACKyrB,GACGA,EAAWjhB,KAAIzF,GACJsrB,EAAYtrB,EAAS0nB,EAAqBnB,OAIhEQ,GAGRC,EACD/rB,EAAAA,cAAC+I,EAAAA,MAAK,CACF+nB,cAAc,sCACdhuB,WAAS,EACTiuB,MAAM,EACNC,gBAAgB,aAChBxwB,OAAQugB,EACRlY,OAAQ+nB,GAER5wB,EAAAA,cAACkJ,EAAAA,YAAW,CAACL,OAAQ+nB,GAAa,mBAClC5wB,EAAAA,cAAC8J,EAAAA,UAAS,KACN9J,EAAAA,cAAA,UACIA,EAAAA,cAAA,UAAKghB,aAAmB,EAAnBA,EAAqBoL,cAC1BpsB,EAAAA,cAAA,MAAIC,UAAU,gBACVD,EAAAA,cAAA,YAAOssB,EAAW,KACjBtL,aAAmB,EAAnBA,EAAqByO,aAE1BzvB,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAO4sB,EAAsB,KAC5B5L,aAAmB,EAAnBA,EAAqBwO,oBAE1BxvB,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOqsB,EAAiB,KACvBrL,aAAmB,EAAnBA,EAAqB8L,eAE1B9sB,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOusB,EAAoB,KAC1B,IACAvL,aAAmB,EAAnBA,EAAqBvP,cAE1BzR,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOwsB,EAAc,KACpB,IACAxL,aAAmB,EAAnBA,EAAqB0O,sBAE1B1vB,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOysB,EAAmB,KACzBzL,aAAmB,EAAnBA,EAAqB4O,qBAEzBxE,GAAyBprB,EAAAA,cAAA,UAAKorB,KAGvCprB,EAAAA,cAACgU,EAAAA,YAAW,KACRhU,EAAAA,cAACkU,EAAAA,OAAM,CAAC/K,QAASynB,GAAgB/B,KAGpC,oFC/GjB,MAAMoC,EAAgEjxB,IAAAA,YA6DtE,EAtC8ED,IAC5E,MAAMmxB,EAAkBlxB,IAAAA,aAAkB,KAClC,GACL,KACImxB,EAAiCC,IAAkCrb,EAAAA,EAAAA,WAAS,GAC7Esb,EAAsBrxB,IAAAA,aAAkB,KAC5CoxB,GAA+B,EAAK,GACnC,IAEH,OACEpxB,IAAAA,cAAAA,IAAAA,SAAA,KACEA,IAAAA,cAAA,UACEC,UAAU,6DACVmD,MAAM,UACN+F,QAASkoB,EACTnuB,IAAK+tB,EAAyB,aAClBlxB,EAAMuxB,yBAEjBvxB,EAAMuxB,yBAETtxB,IAAAA,cAACuxB,EAAAA,wBAAuB,CACtBtxB,UAAU,iCACVuf,UAAW2R,EACXK,gBAAgB,EAChB1K,aAAcsK,EACdxsB,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACV2U,KAAM,CAAC,EACPqD,SAAU1a,EAAM0a,SAChB6E,cAAevf,EAAM0xB,mCACrBC,SAAUR,EACVS,UAAW5xB,EAAM6xB,uBACjBC,iBAAkBZ,IAEnB,oFCbP,MAAMa,UAAkB9xB,EAAAA,cAIpBK,YAAmBN,GACfO,MAAMP,GA4BO,KAAAgyB,sBAAyB1uB,IACtC,MAAMY,EAA+B,KAAvBZ,EAAMgB,OAAOrB,MAAe,GAAKhB,KAAKzB,MAAM0D,MAC1DjC,KAAKwB,SAAS,CACVwuB,oBAAqB3uB,EAAMgB,OAAOrB,MAAOiB,QACzCguB,WAAY5uB,EAAMgB,OAAOrB,OAC3B,EAOW,KAAAkvB,gBAAmBzM,IAChC,IAAKA,EACD,OAEJ,MAAM0M,EAAenwB,KAAKzB,MAAMyxB,oBAEhCvM,EAAU2M,aAAa,CAAEC,UAAWF,IAC/BxuB,MAAKC,IACoB,YAAlBA,EAAO8L,OAEP1N,KAAKwB,SAAS,CAAEwuB,oBAAqB,GAAI/tB,MAAO,GAAIguB,UAAU,IAClC,iBAArBruB,EAAO4f,UACdxhB,KAAKwB,SAAS,CAAES,MAAOjC,KAAKjC,MAAMuyB,8BAElCtwB,KAAKwB,SAAS,CAAES,MAAOjC,KAAKjC,MAAMwyB,+BAGzCvuB,OAAM,KACHhC,KAAKwB,SAAS,CAAES,MAAOjC,KAAKjC,MAAMyyB,+BAAgC,GACpE,EAQO,KAAAC,iBAAoBhN,GAAuCpiB,IACxEA,EAAMC,iBACNtB,KAAKkwB,gBAAgBzM,EAAU,EAQlB,KAAAiN,sBAAyBjN,GAAsC,KAC5EzjB,KAAKkwB,gBAAgBzM,EAAU,EAUlB,KAAAkN,YAAc,CAACC,EAA8BC,EAAkCpN,KAE5F,MAAMqN,GAAahL,EAAAA,EAAAA,wBAAuB9lB,KAAKjC,MAAM2H,iBAAmB1F,KAAKwF,SAE7E,OACIxH,EAAAA,cAAA,QAAMoC,SAAUJ,KAAKywB,iBAAiBhN,GAAYxlB,UAAU,kCACxDD,EAAAA,cAAA,OAAKC,UAAU,yBACXD,EAAAA,cAAA,SACIC,UAAU,4BACVyC,SAAUV,KAAK+vB,sBACf/uB,MAAOhB,KAAKzB,MAAMyxB,oBAClBjvB,YAAa6vB,IAEjB5yB,EAAAA,cAACkU,EAAAA,OAAMlL,OAAAC,OAAA,CACH6E,MAAO+kB,EACP5yB,UAAU,gCACVkJ,QAASnH,KAAK0wB,sBAAsBjN,GACpCnY,UAAWtL,KAAKzB,MAAM0xB,UAClBa,KAGT,EASE,KAAAC,iBAAmB,CAACtN,EAAmCpiB,KAA2B,IAAA2vB,EAC/F,IAAKvN,EACD,OAEJ,MAAMwN,EAAqD,QAAjDD,EAAG3vB,EAAM6vB,cAAcC,aAAa,qBAAa,IAAAH,EAAAA,EAAI,GAC/DvN,EAAU2N,iBAAiB,CACvBC,WAAY,CAACJ,KAEZtvB,MAAKC,IACoB,YAAlBA,EAAO8L,QACP1N,KAAKwB,SAAS,CAAES,MAAO,QAG9BD,OAAM,KACHhC,KAAKwB,SAAS,CAAES,MAAOjC,KAAKjC,MAAMuzB,kCAAmC,GACvE,EASO,KAAAC,wBAA2BxzB,IACxC,IAAKA,EAAM8iB,OAAS9iB,EAAM8iB,KAAKA,KAAK2Q,UAAYlxB,EAAAA,gBAAgBC,YAAYxC,EAAM8iB,KAAKA,KAAK2Q,SACxF,OAOJ,MAAMC,EAA0BpwB,IAC5BrB,KAAK+wB,iBAAiBhzB,EAAM8iB,KAAMxf,EAAM,EAG5C,OACIrD,EAAAA,cAAAA,EAAAA,SAAA,KAEQD,EAAM8iB,KAAKA,KAAK2Q,QAAQhpB,KAAKkpB,IACzB,MAAM5qB,EAAY/I,EAAM4zB,4BAA6BC,EAAAA,EAAAA,QAAO7zB,EAAM4zB,2BAA4B5zB,EAAM8zB,gBAAiBH,EAAOI,MAAQ,GAEpI,OACI9zB,EAAAA,cAAA,OAAK2K,IAAK+oB,EAAOI,KAAM7zB,UAAU,kCAC7BD,EAAAA,cAAA,OAAKC,UAAU,8BACV,QACDD,EAAAA,cAAA,QAAMC,UAAU,mCACXyzB,EAAOI,MAEX,YAGL9zB,EAAAA,cAACkU,EAAAA,OAAM,CACHpG,MAAO/N,EAAM8zB,gBACb5zB,UAAU,mCACVkJ,QAASsqB,EAAsB,aACnBC,EAAOI,KAAI,aACXhrB,IAEd,IAInB,EArLP9G,KAAKwF,SAAUC,EAAAA,EAAAA,kBAAiB,QAASzF,KAAKjC,MAAM2H,iBAAmBigB,EAAAA,kBAAkBoM,gBACzF/xB,KAAKzB,MAAQ,CACTyxB,oBAAqB,GACrB/tB,MAAO,GACPguB,UAAU,EAElB,CAEOzpB,SACH,OACIxI,EAAAA,cAAA,WACIA,EAAAA,cAAA,OAAKC,UAAU,0BACV+B,KAAKjC,MAAMi0B,sBAEfhyB,KAAK2wB,YAAY3wB,KAAKjC,MAAM6yB,qBAAsB5wB,KAAKjC,MAAM8yB,yBAA0B7wB,KAAKjC,MAAM8iB,MACnG7iB,EAAAA,cAAA,KAAGC,UAAW+B,KAAKzB,MAAM0D,MAAQ,mBAAqB,GAAE,YAAY,aAC/DjC,KAAKzB,MAAM0D,OAEfjC,KAAKuxB,wBAAwBvxB,KAAKjC,OAG/C,EAqKJ,gJCxNA,MA0BMk0B,EAAc1vB,UAChB2C,OAAOC,SAASC,QAAQ,EAsBf8sB,EAA+Hn0B,IACxI,MAAM,kBAEFo0B,EAAiB,eAAEC,EAAc,cAAEC,EAAa,OAChD3kB,EAAM,cACN4a,EAAa,QACb1Q,EAAO,eACP0a,EAAc,0BACdC,EAAyB,4BACzBC,GACAz0B,EAEJ,OADA00B,QAAQC,IAAIH,GAERv0B,EAAAA,cAAC6wB,EAAAA,OAAM7nB,OAAAC,OAAA,GAAKkrB,GACPva,EACW,YAAXlK,GAAwB4a,EACb,UAAX5a,GACC1P,EAAAA,cAAC20B,EAAAA,QAAgC,CAC/B/vB,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVgY,SAAU1a,EAAM0a,SAChBrD,KAAM,CAAC,EACPka,wBAAyBvxB,EAAM6B,UAAUgzB,4BACzChD,uBAAwBqC,EACxBxC,oCA3CmC7vB,EA2C2C7B,EAAM6B,UA1CzF,CACHusB,yBAA0BvsB,EAAUizB,0BACpCxG,wBAAyBzsB,EAAU0sB,mBACnCC,2BAA4B3sB,EAAU2sB,2BACtCC,yBAA0B5sB,EAAUkzB,+BAEpCrG,yBAA0B7sB,EAAU6sB,yBAEpCC,yBAA0B9sB,EAAUmzB,8BACpCnG,+BAAgChtB,EAAUozB,6CAoCtCh1B,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAU,IACA,YAAXyP,GACK0kB,GAAmBE,GACpBhyB,EAAAA,gBAAgBC,YAAY+xB,GAUzBC,EATAv0B,EAAAA,cAAA,OAAKC,UAAU,iCACXD,EAAAA,cAAA,MAAIC,UAAU,yCACTF,EAAM6B,UAAUqzB,kCAErBj1B,EAAAA,cAAA,KAAGC,UAAU,sCACRF,EAAM6B,UAAUszB,+BAEpBX,GAGZC,GAEHJ,GAAkBE,GAAkBhyB,EAAAA,gBAAgBC,YAAY+xB,IAC9Dt0B,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKmrB,GACLE,EAAe9pB,KAAKwS,GA9FbmY,EAACnY,EAA8CoY,KAGvE,MAAM,IAAEzqB,EAAG,gBAAE0qB,EAAe,mBAAEC,EAAkB,2BAAEC,EAA0B,aAAE5F,EAAY,kBAAE6F,GAAsBxY,EAE5GyY,EAAiDH,EACjDI,EAAyBD,EAA0B11B,MAAM41B,SAAS9xB,OAGxE,GAAI6xB,EAF8B,EAG9B,IAAK,IAAIpgB,EAAQ,EAAGA,EAHU,EAG0BogB,EAAwBpgB,IAC5EmgB,EAA0B11B,MAAM41B,SAASC,KAAK51B,EAAAA,cAAA,iBAItD,OACIA,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,CAAC0B,IAAKA,EAAK1K,UAAWm1B,EAAwBn1B,WAAem1B,GAC7DI,EACAF,EACAD,EACA1F,EACA4F,EACE,EAyEgBJ,CAAoBnY,EAAeqX,OAjEfzyB,KAoElC,EAIjB,sFC1HA,MAAMqvB,EAAgEjxB,IAAAA,YA6DtE,EAtC8ED,IAC5E,MAAMmxB,EAAkBlxB,IAAAA,aAAkB,KAClC,GACL,KACImxB,EAAiCC,IAAkCrb,EAAAA,EAAAA,WAAS,GAC7Esb,EAAsBrxB,IAAAA,aAAkB,KAC5CoxB,GAA+B,EAAK,GACnC,IAEH,OACEpxB,IAAAA,cAAAA,IAAAA,SAAA,KACEA,IAAAA,cAAA,UACEC,UAAU,6DACVmD,MAAM,UACN+F,QAASkoB,EACTnuB,IAAK+tB,EAAyB,aAClBlxB,EAAMuxB,yBAEjBvxB,EAAMuxB,yBAETtxB,IAAAA,cAACuxB,EAAAA,wBAAuB,CACtBtxB,UAAU,iCACVuf,UAAW2R,EACXK,gBAAgB,EAChB1K,aAAcsK,EACdxsB,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACV2U,KAAM,CAAC,EACPqD,SAAU1a,EAAM0a,SAChB6E,cAAevf,EAAM0xB,mCACrBC,SAAUR,EACVS,UAAW5xB,EAAM6xB,uBACjBC,iBAAkBZ,IAEnB,66BCdP,MAAMa,UAAkB9xB,EAAAA,UAIpBK,YAAYN,EAAwBQ,GAChCD,MAAMP,GAJO,KAAA81B,qBAAuB,cAoCjC,KAAAC,iBAAoBC,IACvB,MAAMC,EAAYh0B,KAAKjC,MAAMk2B,cAAc1lB,MAAK2lB,IAAC,IAAAC,EAAA,OAAoB,QAAhBA,EAAAD,EAAEE,sBAAc,IAAAD,OAAA,EAAhBA,EAAkBE,iBAAkBN,EAAYM,aAAa,IAClH,GAAIL,EAAW,KAAAM,EACX,MAAMC,EAAcv0B,KAAKw0B,WAAWx0B,KAAKy0B,0BAEzC,OADqC,QAAzBH,EAAGN,EAAUU,oBAAY,IAAAJ,GAAuC,QAAvCA,EAAtBA,EAAwB/lB,MAAKomB,GAAOA,EAAIC,OAASL,WAAY,IAAAD,OAAA,EAA7DA,EAA+DrD,KAGlF,OAAO,IAAI,EAkBE,KAAAhwB,eAAkBqL,IAC/B,MAAMrK,EAA2B,KAAnBqK,EAAEjK,OAAOrB,MAAe,GAAKhB,KAAKzB,MAAM0D,MACtDjC,KAAKwB,SAAS,CACVwuB,oBAAqB1jB,EAAEjK,OAAOrB,MAAOiB,QACrCguB,WAAY3jB,EAAEjK,OAAOrB,OACvB,EAGW,KAAAkvB,gBAAmBzM,IAChC,IAAKA,IAAcA,EAAU5C,KACzB,OAEJ,MAAMsP,EAAenwB,KAAKzB,MAAMyxB,oBAC1BK,EAAYrwB,KAAK8zB,iBAAiB3D,GACxC1M,EAAU2M,aAAa,CAAEC,UAAWA,GAAaF,IAC5CxuB,MAAKC,IACF,GAAsB,YAAlBA,EAAO8L,OAAsB,CAE7B1N,KAAKwB,SAAS,CAAEwuB,oBAAqB,GAAI/tB,MAAO,GAAIguB,UAAU,IAC9D,MAAM4E,EClICC,EAACC,EAAiBC,EAAmBnU,KAC5D,MAAMgU,EAAKjuB,EAAA,GAAQia,GACboU,EAAiBJ,EAAMK,iBAAmB,GAC1CC,EAAe,CACjB,cAAe,oEACftsB,KAAMksB,EACNhmB,oBAAqB,GACrBqmB,UAAWJ,EACXK,sBAAuB,IAErBC,EAAUL,EAAelV,WAAUhQ,IAAC,IAAAwlB,EAAA,OAAU,QAANA,EAAAxlB,EAAElH,YAAI,IAAA0sB,OAAA,EAANA,EAAQlB,iBAAkBU,EAAQV,aAAa,IAW7F,OARIiB,GAAW,EACVL,EAAeK,GAAqCF,UAAYJ,EAEjEC,EAAerB,KAAKuB,GAGxBN,EAAMK,gBAAkBD,EAEjBJ,CAAK,ED6GkBC,CAAmB90B,KAAK6zB,qBAAsB1D,EAAc1M,EAAU5C,MAC/E4C,EAAU+R,WAAW,CAACC,cAAeZ,QACd,iBAArBjzB,EAAO4f,UACdxhB,KAAKwB,SAAS,CAAES,MAAOjC,KAAKjC,MAAMuyB,8BAElCtwB,KAAKwB,SAAS,CAAES,MAAOjC,KAAKjC,MAAMwyB,+BAGzCvuB,OAAMC,IACHjC,KAAKwB,SAAS,CAAES,MAAOjC,KAAKjC,MAAMyyB,+BAAgC,GACpE,EAGO,KAAAG,YAAc,CAACC,EAA8BC,EAAkCpN,KAC5F,MAMMqN,GAAahL,EAAAA,EAAAA,wBAAuB9lB,KAAKjC,MAAM2H,iBAAmB1F,KAAKwF,SAE7E,OACIxH,EAAAA,cAAA,QAAMoC,SATSiB,IACfA,EAAMC,iBAAkBtB,KAAKkwB,gBAAgBzM,EAAU,EAQ5BxlB,UAAU,kCACjCD,EAAAA,cAAA,OAAKC,UAAU,yBACXD,EAAAA,cAAA,SACIC,UAAU,4BAA2B,aACzB2yB,EACZlwB,SAAUV,KAAKiB,eACfD,MAAOhB,KAAKzB,MAAMyxB,oBAClBjvB,YAAa6vB,IAEjB5yB,EAAAA,cAACkU,EAAAA,OAAMlL,OAAAC,OAAA,CACH6E,MAAO+kB,EACP5yB,UAAU,gCACVkJ,QAlBS9F,IACrBrB,KAAKkwB,gBAAgBzM,EAAU,EAkBnBnY,UAAWtL,KAAKzB,MAAM0xB,UAClBa,GAEHD,IAGN,EAIE,KAAAE,iBAAmB,CAACtN,EAAmCpiB,KACpE,IAAKoiB,EACD,OAEJ,MAAMwN,EAAO5vB,EAAM6vB,cAAcC,aAAa,eAAiB,GAC/D1N,EAAU2N,iBAAiB,CACvBC,WAAY,CAACJ,KAEZtvB,MAAKC,IACF,GAAsB,YAAlBA,EAAO8L,OAAsB,CAC7B,MAAMmnB,EClKMa,EAACX,EAAiBlU,KAC9C,MAAMgU,EAAKjuB,EAAA,GAAQia,GACboU,EAAiBJ,EAAMK,iBAAmB,GAC1CI,EAAUL,EAAelV,WAAUhQ,IAAC,IAAA4lB,EAAA,OAAU,QAANA,EAAA5lB,EAAElH,YAAI,IAAA8sB,OAAA,EAANA,EAAQtB,iBAAkBU,EAAQV,aAAa,IAO7F,OAJIiB,GAAW,IACVL,EAAeK,GAAqCF,UAAY,IAErEP,EAAMK,gBAAkBD,EACjBJ,CAAK,EDwJkBa,CAAwB11B,KAAK6zB,qBAAsBpQ,EAAU5C,MACtE4C,EAAU+R,WAAW,CAACC,cAAeZ,EAAOe,qBAAsB,CAAEV,gBAAiBL,EAAMK,iBAAmB,MACnHl1B,KAAKwB,SAAS,CAAES,MAAO,SAI9BD,OAAM,KACHhC,KAAKwB,SAAS,CAAES,MAAOjC,KAAKjC,MAAMuzB,kCAAmC,GACvE,EAIO,KAAAuE,mBAAqB,CAAC5E,EAAcxN,KACjD,KAAKA,GAAcA,EAAU5C,MAAS4C,EAAU5C,KAAKgB,WAAiD,IAApC4B,EAAU5C,KAAKgB,UAAUhgB,QAAiBovB,GACxG,OAEJ,IAAI6E,EAAiB,EACrB,IAAK,MAAMvhB,KAAQkP,EAAU5C,KAAKgB,UAC9B,GAAItN,EAAKwhB,cACL,IAAK,MAAMC,KAAgBzhB,EAAKwhB,cACxBC,EAAaC,eAAiBhF,IAC9B6E,GAAkBE,EAAaE,cAK/C,OAAyB,EAAlBJ,CAAmB,EAGb,KAAAvE,wBAA2BxzB,IACxC,KAAKA,EAAM8iB,MAAS9iB,EAAM8iB,KAAKA,MAAS9iB,EAAM8iB,KAAKA,KAAK2Q,SAAazzB,EAAM8iB,KAAKA,KAAK2Q,QAAQ3vB,OAAS,GAClG,OAGJ,MAAMkvB,EAAoB1vB,IACtBrB,KAAK+wB,iBAAiBhzB,EAAM8iB,KAAMxf,EAAM,EAE5C,IAAI80B,EAA4B,EAChC,IAAK,MAAMzE,KAAU3zB,EAAM8iB,KAAKA,KAAK2Q,QAAS,KAAA4E,EAC1C,MAAMN,EAAiB91B,KAAK61B,mBAA8B,QAAZO,EAAC1E,EAAOI,YAAI,IAAAsE,EAAAA,EAAI,GAAIr4B,EAAM8iB,MACpEiV,IACAK,GAA6BL,GAIrC,OACI93B,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKC,UAAU,4BACXD,EAAAA,cAAA,OAAKC,UAAU,oCACV+B,KAAKjC,MAAMs4B,6BAEhBr4B,EAAAA,cAACwa,EAAAA,eAAc,CACXpD,KAAM,CACFpC,MAAO,CACHsjB,wBAAyBH,IAIjCvzB,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVgY,SAAU1a,EAAM0a,SAChBxa,UAAU,oCAIdF,EAAM8iB,KAAKA,KAAK2Q,QAAQhpB,KAAKkpB,IACzB,MAAM5qB,EAAY/I,EAAM4zB,4BAA6BC,EAAAA,EAAAA,QAAO7zB,EAAM4zB,2BAA4B5zB,EAAM8zB,gBAAiBH,EAAOI,MAAQ,GAEpI,OACI9zB,EAAAA,cAAA,OAAK2K,IAAK+oB,EAAOI,KAAM7zB,UAAU,kCAC7BD,EAAAA,cAAA,OAAKC,UAAU,8BACVyzB,EAAOI,KACP,IAAG,IAEJ9zB,EAAAA,cAACwa,EAAAA,eAAc,CACXpD,KAAM,CACFpC,MAAO,CACHsjB,wBAAyBt2B,KAAK61B,mBAAmBnE,EAAOI,MAAQ,GAAI/zB,EAAM8iB,QAIlFje,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVgY,SAAU1a,EAAM0a,SAChBxa,UAAU,wCACZ,KAGND,EAAAA,cAACkU,EAAAA,OAAM,CACHpG,MAAO/N,EAAM8zB,gBACb5zB,UAAU,mCACVkJ,QAAS4pB,EAAgB,aACbW,EAAOI,KAAI,aACXhrB,GAEX/I,EAAM8zB,iBAET,IAInB,EAxOP7xB,KAAKwF,SAAUC,EAAAA,EAAAA,kBAAiB,QAASzF,KAAKjC,MAAM2H,iBAAmBigB,EAAAA,kBAAkBoM,gBACzF/xB,KAAKzB,MAAQ,CACTg4B,gBAAgB,EAChBvG,oBAAqB,GACrB/tB,MAAO,GACPguB,UAAU,EAElB,CAEO5pB,sBAAsBC,GACzB,OAAItG,KAAKjC,MAAMs4B,8BAAgC/vB,EAAU+vB,2BAI7D,CAEO7B,WAAWI,GAId,MAAO,GAHMA,EAAK4B,iBACJC,OAAO7B,EAAK8B,WAAa,GAAGC,SAAS,EAAG,QAC1CF,OAAO7B,EAAKgC,WAAWD,SAAS,EAAG,MAEnD,CAEOlC,yBACH,MAAMoC,EAAQ,IAAIC,KACZC,EAAMF,EAAMG,SACZC,EAAOJ,EAAMD,UAAYG,GAAe,IAARA,GAAa,EAAI,GAEvD,OADe,IAAID,KAAKD,EAAMK,QAAQD,GAE1C,CAYOzwB,SACH,OACIxI,EAAAA,cAAA,WACIA,EAAAA,cAAA,OAAKC,UAAU,0BACV+B,KAAKjC,MAAMi0B,sBAEfhyB,KAAK2wB,YAAY3wB,KAAKjC,MAAM6yB,qBAAsB5wB,KAAKjC,MAAM8yB,yBAA0B7wB,KAAKjC,MAAM8iB,MACnG7iB,EAAAA,cAAA,KAAGC,UAAW+B,KAAKzB,MAAM0D,MAAQ,mBAAqB,GAAE,YAAY,aAC/DjC,KAAKzB,MAAM0D,OAEfjC,KAAKuxB,wBAAwBvxB,KAAKjC,OAG/C,EAwLG,MAAMo5B,EAA+DC,EAAAA,GAAiBC,wBACzF,iXAAWzwB,CAAA,CACT0wB,UAAWxH,GApQiB,CAAC,IAwQnC,uyBE9NA,MAuCM7T,EAAoCsb,IACtC,MAAOzpB,EAAc0pB,GAAmBx5B,EAAAA,SAAe,KAChDmoB,EAA4BsR,GAAiCz5B,EAAAA,UAAe,IAC5E6lB,EAAc6T,GAAmB15B,EAAAA,SAA6C,YAC9Ewf,EAAWsH,GAAgB9mB,EAAAA,UAAe,IAC1C8lB,EAAiB6T,GAAsB35B,EAAAA,SAAe,IAEzDoX,MAAM,cAAE4F,GAAe,SACvBvC,EAAQ,GACRhY,EAAE,QACFmC,EAAO,iBACP8C,EAAgB,cAChB4X,EAAa,oCACb7Y,EAAmC,cACnCmzB,GACAL,GAEE,wBAEFtS,EAAuB,wBACvBC,EAAuB,wBACvBC,EAAuB,gCAEvBE,GACA/H,EA6BEgI,EAtBgBC,EAClB7X,EACAuX,EACAC,EACAC,EACAK,IAEe,YAAX9X,EACO,GAAGyX,OAGC,YAAXzX,EACOwX,EAGI,WAAXxX,EACoB,OAAb8X,EAAoBA,EAAWP,EAGnC,GAGOM,CAAc1B,EAAcoB,EAAyBC,EAAyBC,EAAyBrX,GACnH2X,EAAqB5B,EAAa6B,cAClClgB,GAAUC,EAAAA,EAAAA,kBAAiB,QAASC,EAAmBigB,EAAAA,kBAAkBC,wBACzEC,GAA4BC,EAAAA,EAAAA,wBAAuBpgB,EAAmBF,GAEtEugB,EAAkC,CACpCzI,gBACArf,UAAW,iCACXwnB,qBACAO,KAAMV,EACN9H,YACAsH,gBAGEmB,EAAmBjoB,EAAAA,cAACkoB,EAAAA,cAAalf,OAAAC,OAAA,GAAK8e,IAEtCrnB,EAAWsc,EAAc6E,mBAAmBrX,KAAI+L,GAAQA,EAAKuB,cAAarI,QAAOqI,GAAeA,IAEtG,OACI9X,EAAAA,cAAAA,EAAAA,SAAA,KACKioB,EACDjoB,EAAAA,cAAA,OAAKC,UAAU,4CACXD,EAAAA,cAAA,SAAAgJ,OAAAC,OAAA,CACIhJ,UAAWkU,IACP,6DAC6B,IAA7B6I,EAAcgD,YAAoBhD,EAAc6E,mBAAmBvL,MAAKC,GAAQA,EAAKC,gBAC/E,WACA,IACT,aACWojB,EACZtsB,SAAuC,IAA7B0P,EAAcgD,YAAoBhD,EAAc6E,mBAAmBvL,MAAKC,GAAQA,EAAKC,gBAC/F3T,KAAK,SACLsG,QAAS5E,UACLm1B,EAAgB,WAChB5S,GAAa,GACb,UACUhC,EAAgByU,EAAsBI,EAAoBH,EAAiB1S,EAAc4S,GAC/FD,GAA8B,GAC9BC,EAAgB,WAClB,MAAOz1B,GACLy1B,EAAgB,UAChBF,EAAgB,uDAGpB3R,GAEH+R,IAGT55B,EAAAA,cAACooB,EAAAA,uBAAsBpf,OAAAC,OAAA,CACnBhJ,UAAU,iCACVwC,GAAIA,EACJgY,SAAUA,EACV7V,QAASA,EACT0a,cAAe+H,EACfjQ,KAAM,CACFiR,WAAYvC,EACZ9I,cAAeA,EAAcC,YAC7Bvc,YAEJ8e,UAAW2I,EACX1I,QAxFwB6I,KAChCkR,EAAgB,IAChBC,GAA8B,EAAM,EAuF5BhzB,oCAAqCA,IAAuC,GACvEA,GAAuC,CAAEC,UAAW,KAE9D,EAILoe,EAAkBvgB,MACpBxE,EACA45B,EACAH,EACA1S,EACA4S,KACA,IAAA3U,EACA,MACI3N,MAAM,cAAE4F,GAAe,QACvBpY,EAAO,oCACP6B,GACA1G,EAEEilB,EAAa,IACbC,EAA2C,CAC7CC,OAAQ,CACJC,IAAKH,EACLI,KAAM,IAIRC,EAAsC,IAAIC,EAAAA,oCAAoCtI,EAAcC,YAAYC,GAAI+H,GAElH,IAAIpD,QAA2B0D,EAAAA,EAAAA,sCAAqCF,EAAqCzgB,EAAQJ,eAE7GghB,EAA6B,GACjC,MAAMC,QAAkBC,EAAAA,EAAAA,cAAa9gB,EAAQJ,eACvCqe,EAAO4C,EAAU5C,KAEvB,GADyBA,SAAe,QAAXkC,EAAJlC,EAAMgB,iBAAS,IAAAkB,OAAA,EAAfA,EAAiBxU,MAAKoV,IAAuC,IAA3BA,EAASC,gBAEhE4T,EAAgB,sDAChBE,EAAgB,cACb,CACHC,EAAmB,GACnB,IAAK,IAAI5T,EAAOf,EAAYnD,EAAmB9F,MAAMlY,OAAS,EAAGkiB,GAAQf,EAAY,CACjF,MAAMgB,EAAwBnE,EAAmB9F,MAAMvR,KAAI4S,IAAc,IAAAC,EASrE,OARczU,EAAA,CACV8K,OAA+B,QAAzB2J,EAAED,EAAYtF,mBAAW,IAAAuF,OAAA,EAAvBA,EAAyBtF,eAAerE,OAChDoQ,UAAW1G,EAAY5F,gBAAgBsM,UACvClG,SAAUR,EAAY5F,gBAAgBoG,SACtCsI,WAAY,GACZC,oBAAqB/I,EAAY5F,gBAAgB4O,eAC7C3f,GAAuC,CAAEC,UAAW0W,EAAY5F,gBAAgBtM,WAEzE,UAEbmb,EAAAA,EAAAA,mBAAkB,CAAE/a,cAAe1G,EAAQJ,eAAiBihB,EAAU5C,KAAK3F,GAAI8I,EAAWP,EAAU5C,KAAKyD,SAAStiB,OACpHC,IAAQ,IAAAsiB,EAAAC,EAGJ,MAFA5hB,EAAQQ,UAAUqhB,MAAgB,QAAXF,EAACtiB,EAAMmT,YAAI,IAAAmP,OAAA,EAAVA,EAAYG,mBACpC9hB,EAAQQ,UAAUqhB,MAAM,yCACR,QAAhBD,EAAMviB,EAAMmT,YAAI,IAAAoP,OAAA,EAAVA,EAAYE,iBAAiB,IAG3CiT,GAAmBE,GAAaA,EAAY7T,EAAUniB,SACtD2hB,EAAiBA,EAAeoB,OAAOZ,GACvCX,EAAoCJ,oBAAoBC,OAAQE,KAAOW,EACvElE,QAA2B0D,EAAAA,EAAAA,sCAAqCF,EAAqCzgB,EAAQJ,qBAE3GihB,EAAUoB,YAAY,CAAC,GAC7BC,GAAa,KAIfmN,EAAc1vB,UAChB2C,OAAOC,SAASC,QAAQ,EAsBf8sB,EAC+Cn0B,IACxD,MAAM,kBAEFo0B,EAAiB,eACjBC,EAAc,cACdC,EAAa,OACb3kB,EAAM,cACN4a,EAAa,QACb1Q,EAAO,eACP0a,EAAc,0BACdC,EAAyB,4BACzBC,GACAz0B,EAEJ,OACIC,EAAAA,cAAC6wB,EAAAA,OAAM7nB,OAAAC,OAAA,GAAKkrB,GACPva,EACW,YAAXlK,GAAwB4a,EACb,UAAX5a,GACG1P,EAAAA,cAAC20B,EAAAA,QAAgC,CAC7B/vB,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVgY,SAAU1a,EAAM0a,SAChBrD,KAAM,CAAC,EACPka,wBAAyBvxB,EAAM6B,UAAUgzB,4BACzChD,uBAAwBqC,EACxBxC,oCA9C+B7vB,EA8C+C7B,EAAM6B,UA7C7F,CACHusB,yBAA0BvsB,EAAUizB,0BACpCxG,wBAAyBzsB,EAAU0sB,mBACnCC,2BAA4B3sB,EAAU2sB,2BACtCC,yBAA0B5sB,EAAUkzB,+BAEpCrG,yBAA0B7sB,EAAU6sB,yBAEpCC,yBAA0B9sB,EAAUmzB,8BACpCnG,+BAAgChtB,EAAUozB,6CAuCtCh1B,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAU,IACA,YAAXyP,GAA0B0kB,GAAmBE,GAAmBhyB,EAAAA,gBAAgBC,YAAY+xB,GAOzFC,EANAv0B,EAAAA,cAAA,OAAKC,UAAU,iCACXD,EAAAA,cAAA,MAAIC,UAAU,yCAAyCF,EAAM6B,UAAUqzB,kCACvEj1B,EAAAA,cAAA,KAAGC,UAAU,sCAAsCF,EAAM6B,UAAUszB,+BAClEX,GAKRC,GAEJJ,GAAkBE,GAAkBhyB,EAAAA,gBAAgBC,YAAY+xB,IAC7Dt0B,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKmrB,GACLE,EAAe9pB,KAAIwS,GAnSZmY,EACxBnY,EACAjd,EACAq1B,KAGA,MAAM,IAAEzqB,EAAG,gBAAE0qB,EAAe,mBAAEC,EAAkB,2BAAEC,EAA0B,aAAE5F,EAAY,kBAAE6F,GAAsBxY,EAE5Guc,EAAwBh2B,IAAM8xB,EAAiB,wBACrDZ,QAAQC,IAAIc,GAEZ,MAAMC,EAAiDH,EACjDI,EAAyBD,EAA0B11B,MAAM41B,SAAS9xB,OAGxE,GAAI6xB,EAF8B,EAG9B,IAAK,IAAIpgB,EAAQ,EAAGA,EAHU,EAG0BogB,EAAwBpgB,IAC5EmgB,EAA0B11B,MAAM41B,SAASC,KAAK51B,EAAAA,cAAA,iBAGtD,MAAM85B,EAA4BP,EAAqBniB,KAAK4F,cAAc6E,mBAAmBvL,MAAKC,GAAQA,EAAKC,gBAE/G,OACIxW,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,CAAC0B,IAAKA,EAAK1K,UAAWm1B,EAAwBn1B,WAAem1B,GAC7DI,EACAF,EAEDt1B,EAAAA,cAAA,OAAKC,UAAU,2CACV65B,GACG95B,EAAAA,cAAA,KAAGC,UAAU,0DAAwD,8CAExEge,EAAiCsb,IAErC5J,EACA4F,EACE,EAiQgBJ,CAAoBnY,EAAejd,EAAOs0B,OAhEtBzyB,KAoElC,EAIjB,gNCpTA,SAASm4B,EACLn1B,EACA6V,EACAuf,EACAC,EACAC,EACApxB,GAAkB,IAAAqxB,EAElB,IAAKF,EACD,OAAO,KAGX,MAAMG,EAAwC,QAA3BD,EAAGD,aAAY,EAAZA,EAAc7zB,kBAAU,IAAA8zB,EAAAA,OAAIl1B,EAC5Co1B,EAhCV,SAA4BC,EAAiBD,GAEzC,GAAIC,GAAUD,EAAiB,CAC3B,MAAME,EAAgBD,EAAOllB,QAFP,GAGtB,OAAOwe,EAAAA,EAAAA,QAAOyG,GAAmB,GAAIE,EAAe,IAAK,CAE7D,MAAO,EACX,CAyB4BC,CAAmBP,EAAWnxB,GAEtD,OACI9I,IAAAA,cAACy6B,EAAAA,gBAAe,CACZ71B,QAASA,EACTnC,GAAIu3B,EACJvf,SAAUA,EACVwf,UAAWA,EACXS,YAAaN,EACbO,UAAQ,EACR7xB,UAAWuxB,EACXjjB,KAAM,CAAC,GAGnB,CAwFO,MAAMwjB,EAAwDC,IAWhE,IAXiE,KAClEzjB,EAAI,QACJxS,EAAO,cACP0E,EAAa,YACbwxB,EAAW,cACXpgB,EAAa,kBACbC,EAAiB,gBACjB0f,EAAe,SACf5f,EAAQ,GAERhY,GACHo4B,EACG,MAAM91B,EAAUqS,EAAKrS,QACrB,OAAKA,EAKD/E,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,OAAKC,UAAU,4BACXD,IAAAA,cAAA,OAAKC,UAAU,mCAxD/B,SACI2S,EACAtJ,EACAuJ,EACAkoB,EACA1nB,GAEA,IAAK0nB,IAAaloB,IAAiBvJ,EAC/B,OAAO,KAEX,MAAM0xB,EAAsB,CACxB1nB,IAAKynB,EACL1nB,QAASA,GAAoB,IAE3B4nB,EAAa,CACfpoB,eACAvJ,iBAGJ,OADA2xB,EAAW3xB,cAAc4xB,iBAAkB,EACpCl7B,IAAAA,cAACoT,EAAAA,GAAKpK,OAAAC,OAAA,GAAK+xB,EAAaC,EAAU,CAAEroB,eAAgBA,EAAgBiB,oBAAoB,UACnG,CAqCqBsnB,CACGv2B,EAAQJ,cAAcoO,eACtBtJ,EACA1E,EAAQH,QAAQoO,aAChB9N,EAAQwO,gBACRxO,EAAQ8F,OAGhB7K,IAAAA,cAAA,OAAKC,UAAU,qCACXD,IAAAA,cAAA,MAAIC,UAAU,mCAAmC8E,EAAQ8F,MAxG7E,SACIjG,EACA6V,EACA2gB,EACAC,EACAC,EACAR,EACApgB,EACAC,GAEA,MAAM3F,EAAsB,CACxBnD,UAAWwpB,EACX1d,cAAe2d,EACfhD,wBAAyBgD,GAG7B,OACIt7B,IAAAA,cAACwa,EAAAA,eAAc,CACX5V,QAASA,EACTnC,GAAI24B,EACJ3gB,SAAUA,EACVrD,KAAM,CAAEpC,SACR8lB,YAAaA,EACbpgB,cAAeA,EACfC,kBAAmBA,GAG/B,CA8EqB4gB,CAAY32B,EAAS6V,EAAUhY,EAAIsC,EAAQ8M,UAAW9M,EAAQmL,MAAO4qB,EAAapgB,EAAeC,IA/K3F6gB,EAgLYz2B,EAAQ02B,YA/KpCz7B,IAAAA,cAAA,KAAGC,UAAU,kCAAkCu7B,KAgLpC52B,EAAQ+O,IAAI9M,OAAO60B,YACjB3B,EAAan1B,EAAS6V,EAAUhY,EAAIsC,EAAQ42B,cAAe52B,EAAQ62B,aAAcvB,MApB1F,KA9Jf,IAA2BmB,CAqLhB,EC1ELK,EAAeA,CAACvvB,EAA8BvM,KAAqF,IAAA+7B,EACrI,MAAMC,EAAczvB,EAAKsN,SA1FPoiB,EAACC,EAAkCl8B,KACrD,MAAM6S,EAAiB7S,EAAM6S,eAC7B,OACI5S,EAAAA,cAACk8B,EAAAA,GAAa,CACVlU,KAAMiU,EACN9Q,IAAI,IACJlrB,UAAU,sDACVk8B,UAAW,CAKPC,OAAQ/4B,IACJtD,EAAMs8B,2BAA2Bh5B,EAAM,EAE3CuP,mBAEN,EAyE8BopB,CAAc1vB,EAAKsN,QAAS7Z,GAC1Du8B,EAAgBhwB,EAAKiwB,SAhEPC,EAACC,EAAwC18B,KAC7D,MAAM6S,EAAiB7S,EAAM6S,eAC7B,OACI5S,EAAAA,cAACk8B,EAAAA,GAAa,CACVlU,KAAMyU,EACNtR,IAAI,IACJlrB,UAAU,2DACVk8B,UAAW,CAKPC,OAAQ/4B,IACJtD,EAAMs8B,2BAA2Bh5B,EAAM,EAE3CuP,mBAEN,EA+CgC4pB,CAAgBlwB,EAAKiwB,QAASx8B,GAC9D28B,EAAsB,QAAbZ,EAAGxvB,EAAKqwB,aAAK,IAAAb,OAAA,EAAVA,EAAYtxB,KAAI,CAACoyB,EAAqBtnB,IArCxCunB,EAACD,EAAqB78B,EAA2C+8B,KACjF,MAAMC,EAAoC,CACtCj0B,UAAW8zB,EAAQ9zB,UACnB7I,UAAW,4DACX+8B,SAAUJ,EAAQI,SAClBC,QAASL,EAAQK,QAAQC,eACzBC,aAAcP,EAAQQ,eACtBl7B,KAAM,UAEJ0Q,EAAiB7S,EAAM6S,eAC7B,OACI5S,EAAAA,cAACk8B,EAAAA,GAAa,CACVvxB,IAAKmyB,EACLO,KAAMN,EACNZ,UAAW,CAKPmB,aAAcj6B,IACVtD,EAAMw9B,+BAA+BT,EAAWz5B,EAAM,EAE1DuP,mBAEN,EAcKiqB,CAAYD,EAAS78B,EAAOuV,KAGvC,MAAO,CACHkoB,sBAAuB,CAAEv9B,UAAW,iDACpC2Z,QAASmiB,EACT/T,KAAMsU,EACNK,MAAOD,EACPe,2BAA4B,CAAEx9B,UAAW,4DACzCy9B,2BAA4B,CAAEz9B,UAAW,uDAC5C,EAQQ09B,EACT59B,IAEA,MAAM,kBAAE69B,GAAsB79B,EAC9B,GAAK69B,EAIL,OAAO/B,EAAa+B,EAAmB79B,EAAM,MCjIrC89B,EAgCAC,imBAhCZ,SAAYD,GACRA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,iCACAA,EAAAA,EAAA,uCACAA,EAAAA,EAAA,uCACAA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,uCACAA,EAAAA,EAAA,gCACAA,EAAAA,EAAA,kCACAA,EAAAA,EAAA,yCACAA,EAAAA,EAAA,0DACAA,EAAAA,EAAA,sDACAA,EAAAA,EAAA,8DACAA,EAAAA,EAAA,yDACAA,EAAAA,EAAA,gCACAA,EAAAA,EAAA,mCACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,2BACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,8BACAA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,+CACAA,EAAAA,EAAA,kDACAA,EAAAA,EAAA,wCACH,CA1BD,CAAYA,IAAAA,EAAkB,KAgC9B,SAAYC,GACRA,EAAA,gBACAA,EAAA,wBACH,CAHD,CAAYA,IAAAA,EAAY,KAuCjB,MAAMC,UAAoB/9B,IAAAA,UAW7BK,YAAmBN,GACfO,MAAMP,GALF,KAAAi+B,oBAA8B,EAE9B,KAAAC,SAAwD,KA8CzD,KAAAC,oBAAsB,KACzB,GAAItf,EAAAA,GAASC,UAAW,CACpB,MAAMsf,EAA4Bn8B,KAAKjC,MAAMq+B,gBAC7C,GAA0C,OAAtCD,EAA0Bt2B,QAC1B,OAAOs2B,EAA0Bt2B,QAAQw2B,WAAW,CAG5C,EAOb,KAAAC,qBAAuB,KAC1B,GAAI1f,EAAAA,GAASC,UAAW,CACpB,MAAMsf,EAA4Bn8B,KAAKjC,MAAMq+B,gBAC7C,GAA0C,OAAtCD,EAA0Bt2B,QAC1B,OAAOs2B,EAA0Bt2B,QAAQ02B,YAAY,CAG7C,EAQb,KAAAC,gBAAmBC,IAEtB,MAGM76B,EAHQ,IAAIoC,OAAO,8CAA+C,KAGnD04B,KAAKD,GAE1B,OAAO76B,EACD,CACI+6B,OAAQt3B,OAAOC,SAAS1D,EAAO,GAAI,IACnCg7B,OAAQv3B,OAAOC,SAAS1D,EAAO,GAAI,IACnCi7B,OAAQx3B,OAAOC,SAAS1D,EAAO,GAAI,KAEvC,CACI+6B,OARW,EASXC,OATW,EAUXC,OAVW,EAWd,EAUJ,KAAAC,sBAAwB,CAAC9W,EAAc+W,EAAkBC,EAAqBC,KAAuB,IAAAC,EAAAC,EACxG,MAAMC,EAAsBvB,EAAmBuB,YACzCx6B,EAAgD,QAAzCs6B,EAAuB,QAAvBC,EAAGn9B,KAAKq9B,QAAQx3B,eAAO,IAAAs3B,OAAA,EAApBA,EAAsBG,WAAW,aAAK,IAAAJ,EAAAA,EAAIl9B,KAAKi8B,SAC/D,GAAIr5B,GAAW5C,KAAKg8B,mBAAoB,CACpC,MAAMuB,EAAgB1B,EAAmB0B,cACnCC,EAAoB3B,EAAmB2B,kBACvCC,EAAc76B,EAAQ86B,YAAY1X,GAAM2X,MAAQJ,EACtD36B,EAAQg7B,UAAY,QAAQZ,EAASL,WAAWK,EAASJ,WAAWI,EAASH,WAAWI,MACpFrgB,EAAAA,GAASC,WAAaghB,SAASC,KAAKC,eAAqE,QAApDF,SAASC,KAAKC,cAAc5M,aAAa,OAC9FvuB,EAAQo7B,SAAShY,EAAM+W,EAAO,GAAKU,EAAcL,EAAcG,EAAgBH,EAAaL,EAAO,GAAKS,GAExG56B,EAAQo7B,SAAShY,EAAM+W,EAAO,GAAKU,EAAcL,EAAcG,EAAgBH,EAAaL,EAAO,GAAKS,EAAkB,GAU/H,KAAAS,WAAa,CAACjY,EAAc+W,KAA0B,IAAAmB,EAAAC,EACzD,MAAM,MAAE/8B,EAAQ06B,EAAa16B,MAAK,eAAEg9B,EAAiBtC,EAAasC,gBAAmBp+B,KAAKjC,MACpFq/B,EAAsBvB,EAAmBuB,YACzCx6B,EAAgD,QAAzCs7B,EAAuB,QAAvBC,EAAGn+B,KAAKq9B,QAAQx3B,eAAO,IAAAs4B,OAAA,EAApBA,EAAsBb,WAAW,aAAK,IAAAY,EAAAA,EAAIl+B,KAAKi8B,SAC/D,GAAIr5B,GAAW5C,KAAKg8B,mBAAoB,CACpC,MAAMqC,EAAexC,EAAmBwC,aAClCd,EAAgB1B,EAAmB0B,cACnCC,EAAoB3B,EAAmB2B,kBACvCC,EAAc76B,EAAQ86B,YAAY1X,GAAM2X,MAAQJ,EAChDe,EAAkBvB,EAAO,GAAKU,EAAcL,EAC5CmB,EAAkBxB,EAAO,GAAKsB,EAAejB,EAC7CoB,EAAUH,EAAejB,EAE/Bx6B,EAAQ67B,YACR77B,EAAQ87B,OAAOJ,EAAkBE,EAASD,GAC1C37B,EAAQ+7B,OAAOL,EAAkBb,EAAce,EAASD,GACxD37B,EAAQg8B,MACJN,EAAkBb,EAClBc,EACAD,EAAkBb,EAClBc,EAAkBC,EAClBA,GAEJ57B,EAAQ+7B,OAAOL,EAAkBb,EAAac,EAAkBF,EAAeG,GAC/E57B,EAAQg8B,MACJN,EAAkBb,EAClBc,EAAkBF,EAClBC,EAAkBb,EAAce,EAChCD,EAAkBF,EAClBG,GAEJ57B,EAAQ+7B,OAAOL,EAAkBE,EAASD,EAAkBF,GAC5Dz7B,EAAQg8B,MAAMN,EAAiBC,EAAkBF,EAAcC,EAAiBC,EAAkBC,EAASA,GAC3G57B,EAAQ+7B,OAAOL,EAAiBC,EAAkBC,GAClD57B,EAAQg8B,MAAMN,EAAiBC,EAAiBD,EAAkBE,EAASD,EAAiBC,GAC5F57B,EAAQ+7B,OAAOL,EAAkBE,EAASD,GAC1C37B,EAAQi8B,SACRj8B,EAAQk8B,YACRl8B,EAAQg7B,UAAYx8B,EACpBwB,EAAQm8B,OACRn8B,EAAQg7B,UAAYQ,EAChBxhB,EAAAA,GAASC,WAAaghB,SAASC,KAAKC,eAAqE,QAApDF,SAASC,KAAKC,cAAc5M,aAAa,OAC9FvuB,EAAQo7B,SAAShY,EAAM+W,EAAO,GAAKU,EAAcL,EAAcG,EAAgBH,EAAaL,EAAO,GAAKS,GAExG56B,EAAQo7B,SAAShY,EAAM+W,EAAO,GAAKU,EAAcL,EAAcG,EAAgBH,EAAaL,EAAO,GAAKS,EAAkB,GAS/H,KAAAwB,gBAAmBjC,IAA0B,IAAAkC,EAChD,MAAM,MAAE79B,EAAQ06B,EAAa16B,MAAK,eAAEg9B,EAAiBtC,EAAasC,gBAAmBp+B,KAAKjC,MACpF8V,EAA4C,QAAlCorB,EAAGj/B,KAAKjC,MAAMmhC,4BAAoB,IAAAD,OAAA,EAA/BA,EAAiCprB,WACpD,IAAIsrB,EAAsBtD,EAAmBuD,0BAC7C,MAAMC,EAAiBtC,EAAO,GACxBuC,EAAiBvC,EAAO,GACxBwC,EAAoB1D,EAAmB2D,wBACvCC,EAAS5D,EAAmB6D,aAC5BC,EAAW9D,EAAmB8D,SAC9BC,EAAa/D,EAAmB+D,WAChCC,EAAWhE,EAAmBgE,SACpC,IAAIC,EAAkBjE,EAAmBkE,qBACzC,MAAMC,EAAsBhgC,KAAKw8B,gBAAgB4B,EAAe6B,qBAK1DC,EAAUA,KAAK,IAAAC,EAAAC,EACjB,MAAMx9B,EAAgD,QAAzCu9B,EAAuB,QAAvBC,EAAGpgC,KAAKq9B,QAAQx3B,eAAO,IAAAu6B,OAAA,EAApBA,EAAsB9C,WAAW,aAAK,IAAA6C,EAAAA,EAAIngC,KAAKi8B,SAC1Dr5B,IAGLA,EAAQ67B,YACR77B,EAAQy9B,QAAQhB,EAAgBC,EAAgBG,EAAQN,EAAqBQ,EAAUC,EAAYC,GACnGj9B,EAAQg7B,UAAYx8B,EACpBwB,EAAQm8B,OACRn8B,EAAQg7B,UAAYx8B,EAChByS,IACIsrB,EAAsBI,GACtBe,sBAAsBJ,GACtBlgC,KAAK88B,sBAAsBjpB,EAAYkpB,EAAQiD,EAAqBF,GACpEA,GAAmBjE,EAAmB0E,iBACtCpB,KAEAn/B,KAAKi+B,WAAWpqB,EAAY,CAACwrB,EAAgBC,KAAgB,EAKrEt/B,KAAKg8B,oBACLkE,GAAU,EAQX,KAAAM,kBAAqBzD,IAA0B,IAAA0D,EAClD,MAAM,MAAEr/B,EAAQ06B,EAAa16B,MAAK,eAAEg9B,EAAiBtC,EAAasC,gBAAmBp+B,KAAKjC,MACpF8V,EAA4C,QAAlC4sB,EAAGzgC,KAAKjC,MAAMmhC,4BAAoB,IAAAuB,OAAA,EAA/BA,EAAiC5sB,WACpD,IAAIsrB,EAAsBtD,EAAmB6E,4BAC7C,MAAMrB,EAAiBtC,EAAO,GACxBuC,EAAiBvC,EAAO,GACxBwC,EAAoB1D,EAAmB8E,0BACvChB,EAAW9D,EAAmB8D,SAC9BiB,EAAc/E,EAAmB+E,YACjCC,EAAchF,EAAmBgF,YACjCC,EAAajF,EAAmBiF,WAChCrB,EAAS5D,EAAmBkF,eAC5BnB,EAAa/D,EAAmB+D,WAChCC,EAAWhE,EAAmBgE,SACpC,IAAImB,EAAmBnF,EAAmBoF,sBAC1C,MAAMjB,EAAsBhgC,KAAKw8B,gBAAgB4B,EAAe6B,qBAK1DC,EAAUA,KAAK,IAAAgB,EAAAC,EACjB,MAAMv+B,EAAgD,QAAzCs+B,EAAuB,QAAvBC,EAAGnhC,KAAKq9B,QAAQx3B,eAAO,IAAAs7B,OAAA,EAApBA,EAAsB7D,WAAW,aAAK,IAAA4D,EAAAA,EAAIlhC,KAAKi8B,SAC1Dr5B,IAGLA,EAAQ67B,YACR77B,EAAQw+B,UAAU/B,EAAiBuB,EAAatB,EAAiBsB,EAAaE,EAAYD,GAC1Fj+B,EAAQy9B,QAAQhB,EAAgBC,EAAgBG,EAAQN,EAAqBQ,EAAUC,EAAYC,GACnGj9B,EAAQg7B,UAAYx8B,EACpBwB,EAAQm8B,OACJQ,EAAoBJ,GAAuBtrB,IAC3CysB,sBAAsBJ,GACtBlgC,KAAK88B,sBAAsBjpB,EAAYkpB,EAAQiD,EAAqBgB,GACpEA,GAAoBnF,EAAmB0E,iBACvCpB,KAAsB,EAI1Bn/B,KAAKg8B,oBACLkE,GAAU,EAQX,KAAAmB,WAActE,IAA0B,IAAAuE,EAAAC,EAC3C,MAAM,MAAEngC,EAAQ06B,EAAa16B,MAAK,SAAEogC,GAAaxhC,KAAKjC,MAChD0jC,EAA2B5F,EAAmB4F,iBAC9C7B,EAAqB/D,EAAmB+D,WACxCh9B,EAAgD,QAAzC0+B,EAAuB,QAAvBC,EAAGvhC,KAAKq9B,QAAQx3B,eAAO,IAAA07B,OAAA,EAApBA,EAAsBjE,WAAW,aAAK,IAAAgE,EAAAA,EAAIthC,KAAKi8B,SACzDwD,EAAsB,OAAb+B,GAAkC,OAAbA,EAAoBzE,EAAO,GAAK0E,EAAmB1E,EAAO,GACzFn6B,IAGLA,EAAQg7B,UAAYx8B,EACpBwB,EAAQ67B,YACR77B,EAAQ8+B,YAActgC,EACtBwB,EAAQ++B,IAAI5E,EAAO,GAAIA,EAAO,GAAI0C,EAAQG,EAAYgC,KAAKC,GAAKJ,GAChE7+B,EAAQk8B,YACRl8B,EAAQi8B,SACRj8B,EAAQm8B,OAAM,EAQX,KAAA+C,YAAe/E,IAClB,MAAM,SAAEgF,GAAa/hC,KAAKjC,MACpBikC,EAAuBnG,EAAmBmG,aAC1CC,EAAuBpG,EAAmBoG,aAG1CtE,EAAQ39B,KAAKk8B,sBACbgG,EAAQvE,GAASoE,GAAYA,EAAWC,EAAerE,EAAQoE,EAAWE,EAChF,OAAOlF,EAAOv0B,KAAI25B,GAASA,EAAQD,GAAM,EAMtC,KAAAE,qBAAuB,KAC1B,MAAM,QAAEC,GAAYriC,KAAKjC,MACzBskC,EAAQC,MAAM95B,KAAI+5B,IACdviC,KAAKqhC,WAAWrhC,KAAK8hC,YAAYS,EAAKxF,SAC/B,OACT,EAQC,KAAAyF,cAAiBD,IACpB,MAAME,EAAeziC,KAAK8hC,YAAYS,EAAKxF,QAC3C,MAAO,CAAC0F,EAAa,GAAIA,EAAa,GAAG,EAOtC,KAAAC,cAAiBH,IAChBA,EAAKI,QAAU3iC,KAAKq9B,QAAQx3B,UAC5B7F,KAAKqhC,WAAWrhC,KAAK8hC,YAAYS,EAAKxF,SACtC/8B,KAAKg/B,gBAAgBuD,EAAKI,QAAQ,EAQnC,KAAAC,eAAkBL,IACrB,GAAIviC,KAAKq9B,QAAQx3B,QAAS,CAAC,IAADg9B,EACtB,MAAMjgC,EAA+C,QAAxCigC,EAAG7iC,KAAKq9B,QAAQx3B,QAAQy3B,WAAW,aAAK,IAAAuF,EAAAA,EAAI7iC,KAAKi8B,SACxD6G,EAA0BjH,EAAmBkH,iBAC7CC,EAA0BnH,EAAmBoH,iBAEnD,IAAKrgC,EACD,OAEJA,EAAQw+B,UAAU0B,EAAiBE,EAAiBhjC,KAAKq9B,QAAQx3B,QAAQ83B,MAAO39B,KAAKq9B,QAAQx3B,QAAQq9B,QACrGljC,KAAKoiC,uBACDG,EAAKI,QACL3iC,KAAKwgC,kBAAkB+B,EAAKI,OAAO,GAWxC,KAAAQ,MAAQ,CAACZ,EAAajvB,IAAmBjS,IAC5C,MAAM,QAAE8F,GAAYnH,KAAKjC,MACrBoJ,IACA9F,EAAMC,iBACN6F,EAAQo7B,EAAMjvB,EAAOjS,GAAO,EAU7B,KAAA+hC,QAAU,CAACb,EAAajvB,IAAmBjS,IAC9C,MAAM,aAAEgiC,GAAiBrjC,KAAKjC,MAC9BiC,KAAK0iC,cAAcH,GACfc,GACAA,EAAad,EAAMjvB,EAAOjS,EAAO,EAUlC,KAAAiiC,SAAW,CAACf,EAAajvB,IAAmBjS,IAC/C,MAAM,aAAEkiC,GAAiBvjC,KAAKjC,MAE9BiC,KAAK4iC,eAAeL,GAEhBgB,GACAA,EAAahB,EAAMjvB,EAAOjS,EAAO,EAQlC,KAAAmiC,YAAc,KAAoB,IAAAC,EAAAC,EACrC,MAAM,QAAErB,EAAO,SAAEb,GAAaxhC,KAAKjC,MAC7B8V,EAA4C,QAA/B4vB,EAAAzjC,KAAKjC,MAAMmhC,4BAAoB,IAAAuE,GAA/BA,EAAiC5vB,WAAa7T,KAAKjC,MAAMmhC,qBAAqBrrB,WAAa,GACxGxC,EAAyC,QAA/BqyB,EAAA1jC,KAAKjC,MAAMmhC,4BAAoB,IAAAwE,GAA/BA,EAAiCryB,QAAUrR,KAAKjC,MAAMmhC,qBAAqB7tB,QAAU,GAC/FowB,EAA2B5F,EAAmB4F,iBAEpD,OAAOY,EAAQC,MAAM95B,KAAI,CAAC+5B,EAAMjvB,KAAS,IAAAqwB,EACrC,MAAMlB,EAAeziC,KAAK8hC,YAAYS,EAAKxF,QACrC6G,EAAWrB,EAAKxF,OAAO,GAAK0E,EACjB,OAAbD,IACAiB,EAAa,GAAKmB,GAEtB,MAAMjB,EAAS3iC,KAAKwiC,cAAcD,GAC5BsB,EAAYj9B,EAAAA,EAAA,GAAQ27B,GAAI,IAAEE,eAAcE,WACxCmB,EAAU,QAAQxwB,IAClBywB,EAAyB1yB,EAC1BtN,QAAQ,eAAgB8P,GAA0B,IAClD9P,QAAQ,gBAAyC,QAAxB4/B,EAAApB,EAAKyB,2BAAmB,IAAAL,GAAxBA,EAA0B96B,KAAO05B,EAAKyB,oBAAoBn7B,KAAO,IAC/F,OACI7K,IAAAA,cAAA,QACI2K,IAAKm7B,EACLG,MAAM,SACNlH,OAAQ0F,EAAa/vB,KAAK,KAC1B2wB,aAAcrjC,KAAKojC,QAAQS,EAAcvwB,GACzCiwB,aAAcvjC,KAAKsjC,SAASO,EAAcvwB,GAC1CnM,QAASnH,KAAKmjC,MAAMU,EAAcvwB,GAClC4wB,QAASlkC,KAAKojC,QAAQS,EAAcvwB,GACpCpH,OAAQlM,KAAKsjC,SAASO,EAAcvwB,GACpC8F,KAAMmpB,EAAKvpB,WACXhN,SAAU,EACVm4B,IAAKJ,EAAsB,aACfA,GACd,GAER,EAMC,KAAAK,WAAa,KAAW,IAAAC,EAAAC,EAAAC,EAC3B,IAAKvkC,KAAKq9B,QAAQx3B,UAAY7F,KAAKwkC,iBAAiB3+B,UAAY7F,KAAKykC,WAAW5+B,QAC5E,OAGJ,MAAM,MAAEzE,EAAK,OAAEsjC,GAAW1kC,KAAKjC,MACzBikC,EAAuBnG,EAAmBmG,aAC1C2C,EAAwB9I,EAAmB8I,cAE3CC,EAAwC,QAA7BP,EAAGrkC,KAAKk8B,6BAAqB,IAAAmI,EAAAA,EAAIrC,EAC5C6C,EAA0C,QAA9BP,EAAGtkC,KAAKs8B,8BAAsB,IAAAgI,EAAAA,EAAIK,EAEpD3kC,KAAKq9B,QAAQx3B,QAAQ83B,MAAQiH,EAC7B5kC,KAAKq9B,QAAQx3B,QAAQq9B,OAAS2B,EAC9B7kC,KAAKykC,WAAW5+B,QAAQ8oB,MAAMgP,MAAQ,GAAGiH,MAEzC,MAAMhiC,EAA+C,QAAxC2hC,EAAGvkC,KAAKq9B,QAAQx3B,QAAQy3B,WAAW,aAAK,IAAAiH,EAAAA,EAAIvkC,KAAKi8B,SACzDr5B,IAGLA,EAAQg7B,UAAYx8B,QAAAA,EAAS,GAEzBsjC,GACAA,IAGJ1kC,KAAKoiC,uBAAsB,EApd3BpiC,KAAKwkC,iBAAmBxmC,IAAAA,YACxBgC,KAAKykC,WAAazmC,IAAAA,YAClBgC,KAAKq9B,QAAUr/B,IAAAA,WACnB,CAKOiI,oBACH,MAAM,SAAEu7B,GAAaxhC,KAAKjC,MAC1BiC,KAAKokC,aACLpkC,KAAKg8B,mBAAkC,OAAbwF,GAAkC,OAAbA,EAC/CxhC,KAAKwjC,cACLxjC,KAAKi8B,SAAW,IACpB,CAKO6I,qBACH,MAAM,SAAEtD,GAAaxhC,KAAKjC,MAC1BiC,KAAKokC,aACLpkC,KAAKg8B,mBAAkC,OAAbwF,GAAkC,OAAbA,CACnD,CAOOn7B,sBAAsBC,GACzB,IAAIy+B,GAAe,EAInB,OAHIz+B,IAActG,KAAKjC,QACnBgnC,GAAe,GAEZA,CACX,CAubOv+B,SAAM,IAAAw+B,EACT,MAAM,UAAEC,EAAS,QAAE5C,EAAO,eAAEzxB,GAAmB5Q,KAAKjC,MAEpD,OACIC,IAAAA,cAAA,OAAKC,UAAU,6BAA6BiD,IAAKlB,KAAKykC,YAClDzmC,IAAAA,cAACoT,EAAAA,GAAK,CACFE,IAAK2zB,EAAU3zB,IACf4zB,OAAQ,IAAI7C,EAAQpiC,OACpBkkC,IAAK9B,EAAQpiC,KACbiB,IAAKlB,KAAKwkC,iBACVtB,OAAQ+B,EAAU/B,OAClBvF,MAAOsH,EAAUtH,MACjB1/B,UAAU,uBACVqJ,cAAe29B,EAAU39B,cACzBuJ,aAAyC,QAA7Bm0B,EAAEp0B,EAAeC,oBAAY,IAAAm0B,EAAAA,EAAI,CAAC,EAC9Cp0B,eAAgBA,IAEpB5S,IAAAA,cAAA,UAAQkD,IAAKlB,KAAKq9B,QAASp/B,UAAU,4BACrCD,IAAAA,cAAA,OAAKiC,KAAMoiC,EAAQpiC,KAAMhC,UAAU,wBAC9B+B,KAAKwjC,eAItB,ukBCliBG,IAAK2B,GAAZ,SAAYA,GACRA,EAAAA,EAAA,uCACAA,EAAA,iBACAA,EAAA,eACH,CAJD,CAAYA,IAAAA,EAAoB,KAWzB,MAAMC,UAAoBpnC,EAAAA,cAiB7BK,YAAmBN,GACfO,MAAMP,GAbO,KAAAsnC,yBAAmC,IAEnC,KAAAC,wBAAkC,IAElC,KAAAC,cAAyB,GAuDnC,KAAAC,gBAAkB,CAACjD,EAAyBx/B,EAA8Bg6B,EAAkB/jB,KACnF,IAADxI,EAAN+xB,GACDviC,KAAKulC,cAAc3R,KAAK,CACpB6R,OAAQ1iC,EAAQC,SAASqB,WACzB04B,SACA2I,gBAAwC,QAAzBl1B,EAAEzN,EAAQwO,uBAAe,IAAAf,EAAAA,EAAI,GAC5CwI,aACAgrB,oBAAqBjhC,GACtB,EAkBJ,KAAA4iC,kBAAoB,KACvB,MAAMC,GAAWlvB,EAAAA,EAAAA,UAAS,CAAEpE,QAASuzB,EAAAA,YAAYC,QAASljC,QAAS5C,KAAKjC,MAAM6E,QAAQH,UACtFzC,KAAKwB,SAAS,CAAE66B,YAAar8B,KAAKk8B,sBAAuB0J,aACzD5lC,KAAKg8B,mBAAkC,OAAb4J,GAAkC,OAAbA,CAAiB,EAiD7D,KAAAG,kBAAoB,KAA6B,IAAAC,EACpD,MAAM,OAAEnhC,EAAM,QAAEjC,GAAY5C,KAAKjC,MAG3BkoC,EAAiBjmC,KAAKjC,MAAMqX,KAAK1W,SAASkD,OAChD,GAAIiD,EAAOqhC,cAAgBD,EACvB,IAAK,MAAMljC,KAAWkjC,EAClB,IAAK,MAAME,KAAiBthC,EAAOqhC,aAC/B,GAAInjC,EAAQ2O,SAAWy0B,EAAcC,OAAQ,CAAC,IAAD71B,EAAA81B,EAAAC,EAAAC,EACzC,MAAMvtB,GAAawtB,EAAAA,EAAAA,uBAAkC,QAAbj2B,EAACxN,EAAQ8F,YAAI,IAAA0H,EAAAA,EAAI,GAAIxN,EAAQC,SAAUJ,EAAQJ,mBAAeS,GAChG85B,EAAS,CACY,QADZsJ,EACXF,EAAcM,iBAAS,IAAAJ,EAAAA,EATX,EAUW,QADmBC,EAC1CH,EAAcO,iBAAS,IAAAJ,EAAAA,EAVX,EAWQ,QADsBC,EAC1CJ,EAAc1G,cAAM,IAAA8G,EAAAA,EAXR,GAaVhE,EAAOviC,KAAKulC,cAAch3B,MAAKo4B,GAAeC,KAAKC,UAAUF,EAAY5J,UAAY6J,KAAKC,UAAU9J,KAC1G/8B,KAAKwlC,gBAAgBjD,EAAMx/B,EAASg6B,EAAQ/jB,EAAY,CAKxE,MAAM8tB,EAAuB,CACzB7mC,KAAM,OAAOD,KAAK+mC,oBAClBzE,MAAOtiC,KAAKulC,cAAc1jC,OApBA,EAoByB7B,KAAKulC,cAAgB,IAI5E,OACIvnC,EAAAA,cAAC+9B,EAAW,CACRyF,SAAUxhC,KAAKzB,MAAMqnC,SACrBh1B,eAAgB5Q,KAAKjC,MAAM6E,QAAQJ,cAAcoO,eACjD+sB,MAAO39B,KAAKzB,MAAM89B,YAClB0F,SAAU/hC,KAAKjC,MAAM8G,OAAO+/B,YAC5Bz9B,QAASnH,KAAKgnC,UACd9C,QAASlkC,KAAKgnC,UACd3D,aAAcrjC,KAAKgnC,UACnBzD,aAAcvjC,KAAKinC,UACnBhC,UAAwC,QAA/Be,EAAEhmC,KAAKjC,MAAM8G,OAAOqiC,mBAAW,IAAAlB,EAAAA,EAAI,CAAC,EAC7C3D,QAASyE,EACT1K,gBAAiBp8B,KAAKmnC,iBACtBjI,qBAAsB,CAClB7tB,QAASrR,KAAKjC,MAAM6B,UAAUwnC,uCAC9BvzB,WAAY7T,KAAKjC,MAAM6B,UAAUynC,oBAEvC,EAUH,KAAAL,UAAY,CAACzE,EAAajvB,EAAejS,KAC5CrB,KAAKwB,SAAS,CAAE+gC,OAAM+E,aAAc,6BAChCtnC,KAAKjC,MAAMslC,cACXrjC,KAAKjC,MAAMslC,aAAad,EAAMjvB,EAAOjS,GAEF,UAAnCA,EAAMR,KAAKo/B,qBAAmCjgC,KAAKg8B,oBACnD92B,OAAOqiC,KAAKhF,EAAKvpB,WAAY,QAAS,EAOvC,KAAAiuB,UAAY,KACXjnC,KAAKg8B,oBACLh8B,KAAKwnC,YAAa,EAOnB,KAAAA,WAAa,KAChBxnC,KAAKwB,SAAS,CAAE+gC,KAAM,KAAM+E,aAAc,IAAK,EAO5C,KAAAG,uBAAyB,KAAsB,IAAAC,EAClD,GAAmB,QAAnBA,EAAI1nC,KAAKzB,MAAMgkC,YAAI,IAAAmF,GAAfA,EAAiB1D,oBAAqB,CAAC,IAAD2D,EAAAC,EACtC,MAEMlC,EAA0B,GAFH1lC,KAAKjC,MAAM6E,QAAQH,QAAQC,YAAYmlC,eACZ,QAA1CF,EAAW3nC,KAAKzB,MAAMgkC,KAAKmD,uBAAe,IAAAiC,EAAAA,EAAI,KAEtD5kC,EAA+B/C,KAAKzB,MAAMgkC,KAAKyB,oBAGrD,OAFAjhC,EAAQwO,gBAAkBm0B,EAGtB1nC,EAAAA,cAAC46B,EAAsB,CACnBh2B,QAAS5C,KAAKjC,MAAM6E,QACpB0E,cAAetH,KAAKjC,MAAM8G,OAAOijC,qBACjCrnC,GAAkB,QAAhBmnC,EAAE7kC,EAAQ2O,cAAM,IAAAk2B,EAAAA,EAAI,GACtBnvB,SAAUzY,KAAKjC,MAAM0a,UAAY,GACjCrD,KAAM,CAAErS,YACV,CAGV,OAAO/E,EAAAA,QAAc,EAOlB,KAAA+pC,kBAAoB,KACvB,MAAM,KAAExF,GAASviC,KAAKzB,MAEtB,OACIP,EAAAA,cAAAA,EAAAA,SAAA,MACKukC,aAAI,EAAJA,EAAMI,SACH3kC,EAAAA,cAAA,OAAKC,UAAU,gCAAgCiD,IAAKlB,KAAKgoC,oBACrDhqC,EAAAA,cAAA,OAAKC,UAAU,wCAAwC0K,IAAK45B,EAAKkD,SAC3DzlC,KAAKg8B,oBAAsBh+B,EAAAA,cAAA,UAAQmJ,QAASnH,KAAKwnC,WAAYvpC,UAAU,iBACxEskC,EAAKyB,qBAAuBhkC,KAAKynC,0BAChCznC,KAAKg8B,oBACHh+B,EAAAA,cAAA,KAAGob,KAAMmpB,EAAKvpB,WAAY/a,UAAU,mBAC/B+B,KAAKjC,MAAM6B,UAAUynC,qBAM3C,EAQJ,KAAAY,cAAgB,IACZjqC,EAAAA,cAAAA,EAAAA,SAAA,MAAIgC,KAAKg8B,oBAAsBh+B,EAAAA,cAAA,OAAKC,UAAW+B,KAAKzB,MAAM+oC,gBAQ9D,KAAAY,wBAA0B,KAAa,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAC1C,MAAMvpC,EAAuBgB,KAAKwoC,0BAC5BC,EAAkE,QAAtCN,EAAAnoC,KAAKjC,MAAM8G,OAAOijC,4BAAoB,IAAAK,GAAtCA,EAAwClpC,UACjB,QAD0BmpC,EAC7EpoC,KAAKjC,MAAM8G,OAAOijC,qBAAqB7oC,UAAUK,UAAE,IAAA8oC,OAAA,EAAnDA,EAAqDhpC,EACpB,QADqBipC,EACtDrpC,EAAqBC,UAAUK,UAAE,IAAA+oC,OAAA,EAAjCA,EAAmCjpC,EAGnCspC,EAA2BD,GAAwDzoC,KAAKqlC,0BACxF,KAAE9C,EAAI,YAAElG,EAAW,SAAEuJ,GAAa5lC,KAAKzB,MACvC8gC,EAAkC,QAApBiJ,EAAG/F,SAAY,QAARgG,EAAJhG,EAAMI,cAAM,IAAA4F,OAAA,EAAZA,EAAe,UAAE,IAAAD,EAAAA,EAAIjM,EAHhB,EAItBsM,EAAqBtJ,EAAiBqJ,EAAmBA,EAJnC,EAM5B,IAAIE,GAAoBvM,EAAcqM,GANV,EAc5B,MAPiB,OAAb9C,GAAkC,OAAbA,GAAkC,OAAbA,IAEtCgD,EADAD,EATyB,EAMLtJ,EAAiBqJ,EALjB,EAWTC,GAGZC,CAAQ,EAQZ,KAAAC,wBAA0B,KAAa,IAAAC,EAAAC,EAAAC,EAC1C,MAAMhqC,EAAuBgB,KAAKwoC,0BAC5BS,EAAmE,QAAtCH,EAAA9oC,KAAKjC,MAAM8G,OAAOijC,4BAAoB,IAAAgB,GAAtCA,EAAwC7pC,UAClB,QAD2B8pC,EAC9E/oC,KAAKjC,MAAM8G,OAAOijC,qBAAqB7oC,UAAUK,UAAE,IAAAypC,OAAA,EAAnDA,EAAqD1pC,EACpB,QADqB2pC,EACtDhqC,EAAqBC,UAAUK,UAAE,IAAA0pC,OAAA,EAAjCA,EAAmC3pC,GAEnC,KAAEkjC,EAAI,SAAEqD,GAAa5lC,KAAKzB,MAC1B2qC,EAA0BD,GAA0DjpC,KAAKslC,wBAE/F,IAAIsD,GADoB5oC,KAAKs8B,uBAAyB4M,GAH1B,EAKsC,IAADC,EAAAC,EAAhD,OAAbxD,GAAkC,OAAbA,GAAkC,OAAbA,IAC1CgD,GAA6B,QAAlBO,EAAC5G,SAAY,QAAR6G,EAAJ7G,EAAMI,cAAM,IAAAyG,OAAA,EAAZA,EAAe,UAAE,IAAAD,EAAAA,EAAInpC,KAAKs8B,uBANd,GAMsD4M,EANtD,GAQ5B,OAAON,CAAQ,EAOZ,KAAAJ,wBAA0B,KACyB,CAClDvpC,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,KACvCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,KACvCE,GAAI,CAAEJ,EAAG,kBAAmBC,EAAG,IAAKC,EAAG,MAE3CG,UAAU,IAUX,KAAA6pC,QAAWhoC,IACd,GAAIA,EAAMsH,MAAQw8B,EAAqBmE,SAAU,CAC7C,MAAMjnC,EAAsBhB,EAAMgB,OAClC,GAAwB,SAApBA,EAAOknC,SAAqB,CAC5B,MAAMhH,EAAwBlgC,EAC1BkgC,EAAKnpB,MACLlU,OAAOqiC,KAAKhF,EAAKnpB,KAAM,QAAQ,EAIvC/X,EAAMsH,MAAQw8B,EAAqBqE,QACnCxpC,KAAKwnC,YAAa,EAQnB,KAAAtL,oBAAsB,KAEzB,GAAItf,EAAAA,GAA0BC,UAAW,CACrC,MAAMsf,EAA4Bn8B,KAAKmnC,iBACvC,GAA0C,OAAtChL,EAA0Bt2B,QAC1B,OAAOs2B,EAA0Bt2B,QAAQw2B,WAAW,CAG5D,OAP6B,CAOV,EAOhB,KAAAC,qBAAuB,KAE1B,GAAI1f,EAAAA,GAA0BC,UAAW,CACrC,MAAMsf,EAA4Bn8B,KAAKmnC,iBACvC,GAA0C,OAAtChL,EAA0Bt2B,QAC1B,OAAOs2B,EAA0Bt2B,QAAQ02B,YAAY,CAG7D,OAP8B,CAOV,EAkBjB,KAAAkN,iBAAoBpoC,IACvBrB,KAAKjC,MAAM8G,OAAO+S,QAASoO,KAAO3kB,EAAMgB,OAAOrB,KAAK,EAOjD,KAAA0oC,sBAAyBroC,IAC5BrB,KAAKjC,MAAM8G,OAAO8kC,UAAYtoC,EAAMgB,OAAOrB,KAAK,EAuC7C,KAAA4oC,8BAAgC,KACnC,MAAM,MAAEjP,GAAU36B,KAAKjC,MAAM8G,OACvBW,GAAUC,EAAAA,EAAAA,kBAAiB,QAASzF,KAAK6pC,kBAAmB,IAElE,OAAOlP,aAAK,EAALA,EAAOnyB,KAAI,CAACshC,EAAiCx2B,KAChD9N,EAAQukC,cAAcC,MAAQF,EAAS9O,SACvC,MAAMlK,GAAahL,EAAAA,EAAAA,wBAAuB9lB,KAAK6pC,kBAAmBrkC,GAC5DykC,EAAS32B,EACTynB,EAAoC,CACtCj0B,UAAWgjC,EAAShjC,UACpB7I,UAAW,uCACX+8B,SAAU8O,EAAS9O,SACnBC,QAAS6O,EAAS7O,QAAQC,eAC1BC,aAAc2O,EAASI,iBACvBhqC,KAAM,SACN01B,qBAAsB9E,GAG1B,OACI9yB,EAAAA,cAAC4e,EAAAA,GAAa,CACVjU,IAAKshC,EACL5O,KAAMN,EACNZ,UAAW,CAKPmB,aAAcj6B,IACVrB,KAAKmqC,qBAAqB72B,EAAOjS,EAAM,EAE3CuP,eAAgB5Q,KAAKjC,MAAM6E,QAAQH,UAEzC,GAER,EAOC,KAAA2nC,gCAAkC,KAAkC,IAAAC,EACvE,MAAM,QAAEzyB,GAAY5X,KAAKjC,MAAM8G,OAE/B,OACI+S,GACI5Z,EAAAA,cAAC4e,EAAAA,GAAa,CACV3e,UAAU,mCACVkrB,IAAgB,QAAbkhB,EAAEzyB,EAAQuR,WAAG,IAAAkhB,EAAAA,EAAI,KACpBrkB,KAAMpO,EAAQoO,KACdmU,UAAW,CAAEC,OAAQp6B,KAAKypC,iBAAkB74B,eAAgB5Q,KAAKjC,MAAM6E,QAAQH,UAEtF,EAQF,KAAA6nC,kCAAoC,KACvC,MAAM,UAAEX,GAAc3pC,KAAKjC,MAAM8G,OAEjC,OACI8kC,GACI3rC,EAAAA,cAAC4e,EAAAA,GAA0B,CACvBoJ,KAAM2jB,EACN1rC,UAAU,kCACVk8B,UAAW,CAAEC,OAAQp6B,KAAK0pC,sBAAuB94B,eAAgB5Q,KAAKjC,MAAM6E,QAAQH,UAE3F,EAQF,KAAA8nC,iBAAmB,KACtB,MAAM,YAAErD,GAAgBlnC,KAAKjC,MAAM8G,OACnC,IAAI2lC,EAAwB,GAC5B,GAAItD,SAAAA,EAAa51B,IAAK,CAAC,IAADm5B,EAClB,MAAMC,EAAoBxD,EAAY51B,IAAIq5B,MAAM,KAC1CC,EAAuB,EAE7BJ,EAAoC,QAAvBC,EADaC,EAAkBA,EAAkB7oC,OAAS+oC,GAAcD,MAAM,KACzD,UAAE,IAAAF,EAAAA,EAAI,EAAG,CAE/C,OAAOD,CAAa,EAOP,KAAAK,oBAAuBxpC,IAAqB,IAAAypC,EACtB,QAAnCA,EAAI9qC,KAAKgoC,mBAAmBniC,eAAO,IAAAilC,GAA/BA,EAAiCC,SAAS1pC,EAAMgB,SAGpDrC,KAAKwnC,YAAY,EA1hBjBxnC,KAAK6pC,mBAAoBtiB,EAAAA,EAAAA,oBACrBvnB,KAAKjC,MAAM6E,QAAQH,QAAQ+kB,kBAC3BxnB,KAAKjC,MAAM0pB,aACXznB,KAAKjC,MAAMqF,WAEf,MAAMwiC,GAAWlvB,EAAAA,EAAAA,UAAS,CAAEpE,QAASuzB,EAAAA,YAAYC,QAASljC,QAAS5C,KAAKjC,MAAM6E,QAAQH,UACtFzC,KAAK+mC,kBAAoB,oBAAoB/mC,KAAKuqC,qBAClDvqC,KAAKzB,MAAQ,CACT89B,YAAa,EACbkG,KAAM,KACNqD,WACA0B,aAAc,IAElBtnC,KAAKg8B,mBAAkC,OAAb4J,GAAkC,OAAbA,EAC/C5lC,KAAKmnC,iBAAmBnpC,EAAAA,YACxBgC,KAAKgoC,mBAAqBhqC,EAAAA,WAC9B,CAEOiI,oBAUH,GATI2W,EAAAA,GAA0BC,YAC1B3X,OAAO2iB,iBAAiB,SAAU7nB,KAAK2lC,mBACvC9H,SAAShW,iBAAiB,UAAW7nB,KAAKqpC,SAAS,GACnDxL,SAAShW,iBAAiB,YAAa7nB,KAAK6qC,sBAEhDrwB,YAAW,KACPxa,KAAK2lC,mBAAmB,GACzBR,EAAqB6F,iBAEpBpuB,EAAAA,GAA0BC,WAAa7c,KAAKmnC,iBAAiBthC,QAAS,CACtE,MAAMolC,EAAoCjrC,KAAKmnC,iBAAiBthC,QAAQqlC,uBACpE,4CAEA5qC,EAAAA,gBAAgBC,YAAY4qC,MAAMC,KAAKH,KACvCA,EAAO,GAAGI,gBAAgB,SAAS,CAG/C,CAwBOvjB,uBACClL,EAAAA,GAA0BC,YAC1B3X,OAAO6iB,oBAAoB,SAAU/nB,KAAK2lC,mBAC1C9H,SAAS9V,oBAAoB,UAAY/nB,KAAKqpC,SAAsC,GACpFxL,SAAS9V,oBAAoB,YAAa/nB,KAAK6qC,qBAAqB,GAE5E,CAeOrkC,SACH,MAAMa,EAAST,EAAAA,EAAA,GACP5G,KAAKjC,OAAmD,IAC5DutC,qBAAsB,CAClBjjB,YAAaroB,KAAKjC,MAClBE,UAAWkU,IAAW,mBAAoBnS,KAAK+mC,kBAAmB/mC,KAAKjC,MAAM8G,OAAO5G,YAExFstC,4BAA6B,CACzBpiB,IAAK,MACLlrB,UAAWkU,IAAW,2BAA4BnS,KAAK+mC,kBAAmB/mC,KAAKjC,MAAM8G,OAAO5G,WAC5FiD,IAAKlB,KAAKmnC,kBAEdpF,SAAU/hC,KAAKjC,MAAM8G,OAAO+/B,YAC5B4G,YAAaxrC,KAAK+lC,oBAClB0F,QAASzrC,KAAKioC,gBACdyD,YAAa1rC,KAAK+nC,oBAClB4D,wBAAyB3rC,KAAKkoC,0BAC9B0D,uBAAwB5rC,KAAK6oC,0BAC7B/8B,MAAO9L,KAAKoqC,kCACZpkB,KAAMhmB,KAAKsqC,oCACX3P,MAAO36B,KAAK4pC,gCACZiC,iBAAkB,CAAE5tC,UAAW,6BAC/B6tC,oBAAqB,CAAE7tC,UAAW,kCAClC29B,kBAAmBD,EAA6B,CAC5C/qB,eAAgB5Q,KAAKjC,MAAM6E,QAAQH,QACnCm5B,kBAAmB57B,KAAKjC,MAAM8G,OAAO+2B,kBACrCvB,2BAA4Br6B,KAAKq6B,2BACjC0R,gCAAiC/rC,KAAK+rC,gCACtCxQ,+BAAgCv7B,KAAKu7B,iCAEzCyQ,qBAAsBhsC,KAAKq6B,2BAC3B4R,0BAA2BjsC,KAAK+rC,gCAChCG,yBAA0BlsC,KAAKq6B,6BAGnC,OAAOr6B,KAAKjC,MAAMyqB,WAAWnhB,EACjC,CAyQO8iC,qBAAqBrP,EAAmBz5B,GACvCrB,KAAKjC,MAAM8G,OAAO81B,OAAS36B,KAAKjC,MAAM8G,OAAO81B,MAAMt1B,OAAOy1B,MAC1D96B,KAAKjC,MAAM8G,OAAO81B,MAAMt1B,OAAOy1B,IAAYE,SAAW35B,EAAMgB,OAAOrB,MAE3E,CAsBOq5B,2BAA2Bh5B,GAC1BrB,KAAKjC,MAAM8G,OAAO+2B,oBAClB57B,KAAKjC,MAAM8G,OAAO+2B,kBAAkBhkB,QAAUvW,EAAMgB,OAAOrB,MAEnE,CAOOu6B,+BAA+BT,EAAmBz5B,GAAoC,IAAA8qC,EACzF,MAAMvQ,EAAuD,QAAtCuQ,EAAGnsC,KAAKjC,MAAM8G,OAAO+2B,yBAAiB,IAAAuQ,EAAAA,EAAI,CAAC,EAC9DvQ,EAAkBjB,QAClBiB,EAAkBjB,MAAMt1B,OAAOy1B,IAAYE,SAAW35B,EAAMgB,OAAOrB,MAE3E,CAMO+qC,gCAAgC1qC,GAC/BrB,KAAKjC,MAAM8G,OAAO+2B,oBAClB57B,KAAKjC,MAAM8G,OAAO+2B,kBAAkBrB,QAAUl5B,EAAMgB,OAAOrB,MAEnE,EA2GJ,2GCloBA,MAiBaorC,EAAmDruC,IAC5D,OACIC,EAAAA,cAAC6wB,EAAAA,OAAM7nB,OAAAC,OAAA,GAAKlJ,EAAMutC,sBACdttC,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAMwtC,6BACXxtC,EAAMytC,YACPxtC,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAM8tC,iBAAgB,CAAE5tC,UAAWF,EAAM8tC,iBAAmB9tC,EAAM8tC,iBAAiB5tC,UAAY,KACpGF,EAAM+N,MACN/N,EAAMioB,KACNjoB,EAAM69B,oBAzBMA,EAyBuC79B,EAAM69B,kBAvBtE59B,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAK20B,EAAkBJ,uBACvBI,EAAkBhkB,QACnB5Z,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAK20B,EAAkBH,4BACvBG,EAAkB5V,KACnBhoB,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAK20B,EAAkBF,4BAA6BE,EAAkBjB,UAoBvE38B,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAM+tC,oBAAmB,CAAE7tC,UAAWF,EAAM+tC,oBAAsB/tC,EAAM+tC,oBAAoB7tC,UAAY,KAC7GF,EAAM48B,SAInB38B,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAU,0CACV0wB,MAAO,CAAE0d,IAAK,GAAGtuC,EAAM6tC,2BAA4BU,KAAM,GAAGvuC,EAAM4tC,8BAEjE5tC,EAAM0tC,QACN1tC,EAAM2tC,cApCU9P,KAsChB,EAIjB,0qBC5BA,MAAM2Q,UAAuBvuC,EAAAA,cAKzBK,YAAYN,EAAsCQ,GAC9CD,MAAMP,GAmDO,KAAAyuC,uBAAyB,KAClCxsC,KAAKjC,MAAM6E,SAAW5C,KAAKjC,MAAM6E,QAAQH,SAAWzC,KAAKjC,MAAM6E,QAAQH,QAAQgqC,UAC/EzsC,KAAKjC,MAAM6E,QAAQH,QAAQgqC,QAAQhtB,IAAI,mBAAmBzf,KAAKjC,MAAM0C,KAAM,QAC3ET,KAAKwB,SAAS,CAAEkrC,iBAAiB,IAAQ,EAOhC,KAAAC,MAAQ,KACrB,MAAM,MAAEC,GAAU5sC,KAAKjC,MACjB8uC,EAAY7sC,KAAKzB,MAAMuuC,eAAiBF,GAASA,EAAMhuC,SAAWguC,EAAMhuC,QAAQiD,OAAS,GAAK,EAAI7B,KAAKzB,MAAMuuC,YAAc,EAE7H9sC,KAAK+sC,UACL/sC,KAAKwB,SAAS,CAAEwrC,UAAU,EAAMF,YAAaD,IAE7C7sC,KAAKwB,SAAS,CAAEsrC,YAAaD,GAAa,EAOjC,KAAAI,UAAY,KACzB,MAAML,EAAQ5sC,KAAKjC,MAAM6uC,OAAS5sC,KAAKjC,MAAM6uC,MAAMhuC,QAC7CiuC,EAAuC,IAA3B7sC,KAAKzB,MAAMuuC,YAAqBF,EAAQA,EAAM/qC,OAAS,EAAI,EAAK7B,KAAKzB,MAAMuuC,YAAc,EAEvG9sC,KAAK+sC,UACL/sC,KAAKwB,SAAS,CAAEwrC,UAAU,EAAMF,YAAaD,IAE7C7sC,KAAKwB,SAAS,CAAEsrC,YAAaD,GAAa,EAIjC,KAAAK,WAAa,KAC1BltC,KAAK+sC,WAAY,CAAI,EAGR,KAAAI,UAAY,KACzBntC,KAAK+sC,WAAY,EACjB/sC,KAAKwB,SAAS,CAAEwrC,UAAU,GAAQ,EAOrB,KAAAI,WAAcC,IACvBrtC,KAAK+sC,WAGT/sC,KAAKwB,SAAS,CAAEsrC,YAAaO,GAAW,EAtGxCrtC,KAAKzB,MAAQ,CAAEuuC,YAAa,EAAGE,UAAU,EAAON,iBAAiB,GACjE1sC,KAAK+sC,WAAY,EACjB/sC,KAAK0F,kBAAmB6hB,EAAAA,EAAAA,oBACpBvnB,KAAKjC,MAAM6E,QAAQH,QAAQ+kB,kBAC3BxnB,KAAKjC,MAAM0pB,aACXznB,KAAKjC,MAAMqF,UAEnB,CAEO6C,oBACCjG,KAAKjC,MAAM6E,SAAW5C,KAAKjC,MAAM6E,QAAQH,SAAWzC,KAAKjC,MAAM6E,QAAQH,QAAQgqC,cACIxpC,IAA/EjD,KAAKjC,MAAM6E,QAAQH,QAAQgqC,QAAQa,IAAI,mBAAmBttC,KAAKjC,MAAM0C,QACrET,KAAKjC,MAAM6E,QAAQH,QAAQgqC,QAAQhtB,IAAI,mBAAmBzf,KAAKjC,MAAM0C,KAAM,SAC3ET,KAAKwB,SAAS,CAAEkrC,iBAAiB,IAG7C,CAEOlmC,SACH,GAAIxG,KAAKzB,MAAMmuC,gBACX,OAAO,KAGX,MAAM,UAAEzuC,GAAc+B,KAAKjC,MAAM8G,OAE3BwC,EAAST,EAAAA,EAAAA,EAAA,GAGR5G,KAAKjC,OACLiC,KAAKzB,OAAK,IACbmH,iBAAkB1F,KAAK0F,iBACvB6nC,kBAAmB,CACfllB,YAAaroB,KAAKjC,MAClBE,UAAWkU,IAAW,cAAelU,IAEzCuvC,eAAgBxtC,KAAKzB,MAAMyuC,SAAW,YAAc,GACpDS,KAAMztC,KAAK2sC,MACXe,SAAU1tC,KAAKitC,UACfU,yBAA0B3tC,KAAKotC,WAC/BQ,sBAAuB5tC,KAAKwsC,uBAC5BqB,eAAgB7tC,KAAKmtC,UACrBW,gBAAiB9tC,KAAKktC,aAG1B,OAAOltC,KAAKjC,MAAMyqB,WAAWnhB,EACjC,EA6DJ,gHC9HA,MAAM0mC,EAAiBhwC,IACnB,IAAIygB,EAAQ,GAEZ,OADAA,EAAQzgB,EAAM6uC,OAAS7uC,EAAM6uC,MAAMhuC,SAAWb,EAAM6uC,MAAMhuC,QAAQiD,OAAS,EAAI9D,EAAM6uC,MAAMhuC,QAAU,GAC9F4f,CAAK,EA+BhB,EA7BmDzgB,GAC/CC,EAAAA,cAAC6wB,EAAAA,OAAM7nB,OAAAC,OAAA,GAAKlJ,EAAMwvC,kBAAuBxvC,EAAMiwC,uBAAuBjwC,IAClEC,EAAAA,cAACiwC,EAAAA,SAAQ,CACLhwC,UAAWkU,IAAWpU,EAAMyvC,gBAC5BV,YAAa/uC,EAAM+uC,YACnBW,KAAM1vC,EAAM0vC,KACZC,SAAU3vC,EAAM2vC,SAChBQ,QAAOnwC,EAAM8G,OAAOspC,cAAe,QACnCC,KAAMrwC,EAAM8G,OAAOwpC,SAAW,gBAAaprC,EAC3CorC,SAAUtwC,EAAM8G,OAAOwpC,SACvBC,SAAUvwC,EAAM8G,OAAOypC,SACvBC,eAAgBxwC,EAAM8G,OAAO0pC,eAAiBxwC,EAAM8G,OAAO0pC,oBAAiBtrC,EAC5Eub,MAAOuvB,EAAchwC,GACrBywC,YAAazwC,EAAM8G,OAAO2pC,YAC1BC,eAAgB1wC,EAAM8G,OAAO4pC,eAC7Bd,yBAA0B5vC,EAAM4vC,yBAChCC,sBAAuB7vC,EAAM6vC,sBAC7Bc,wBAAyB3wC,EAAM6B,WAAa7B,EAAM6B,UAAU+uC,0BAC5DC,kBAAmB7wC,EAAM6B,WAAa7B,EAAM6B,UAAUivC,kBACtDC,kBAAmB/wC,EAAM6B,WAAa7B,EAAM6B,UAAUse,gBACtD6wB,kBAAmBhxC,EAAM6B,WAAa7B,EAAM6B,UAAUwe,YACtDyvB,eAAgB9vC,EAAM8vC,eACtBC,gBAAiB/vC,EAAM+vC,gBACvBpoC,iBAAkB3H,EAAM2H,iBACxBspC,SAAUjxC,EAAM8G,OAAOmqC,6ZCenC,MAOM9lB,EAPoCnrB,IACtC,MAAM,sBAAEkxC,GAA0BlxC,EAAM0X,UAClC,QAAE+B,GAAYzZ,EAEpBkxC,GAAyBz3B,GAAWy3B,EAAsBz3B,EAAQ,EAYhE03B,EAAoCvqC,GAAqC,KAC3EukB,EAAyCvkB,EAAM,EAGtCwqC,EAAuBxqC,IAChC,MAAM,GACFuW,EAAE,cACFF,EAAa,gCACbo0B,EAA+B,mBAC/BC,EAAkB,SAClB55B,EAAQ,KACRxV,EAAI,cACJqH,EAAa,QACb1E,EAAO,iBACP8C,EAAgB,uBAChB4pC,GACA3qC,EAEJ,IAAKuW,EACD,OAAO,KAGX,MASM,UAAEq0B,GAAc95B,EAEtB,MAAO,CACH9M,IAAK,GAAGuS,aACRoY,mBAAoBkc,EAA2B5sC,EAASoY,EAAc6E,mBAAoBvY,EAAegoC,GACzGG,uBAAwBC,EAAiB/qC,GACzC6uB,kBACIx1B,EAAAA,cAAA,WACIA,EAAAA,cAAA,OAAKC,UAAU,sCACXD,EAAAA,cAAA,KAAGob,KAlBcsB,MAAa,IAAAi1B,EAC1C,MAAM/0B,EAAwD,QAArD+0B,GAAG90B,EAAAA,EAAAA,IAAW,gBAAiBjY,EAAQJ,sBAAc,IAAAmtC,EAAAA,EAAI,GAC5DC,EAAYh1B,EAAI/H,SAAS,KAAO,IAAM,IAC5C,OAAIqI,EACO,GAAGN,IAAMg1B,OAAe10B,IAE5B,EAAE,EAYYR,GAA0B,aAAcza,GAC5CA,IAGTjC,EAAAA,cAAA,OAAKC,UAAU,iCACV+c,EAAcgD,WACd,IAAG,cAGRhgB,EAAAA,cAAA,MAAIoD,MAAM,aAGlBiyB,gBACIr1B,EAAAA,cAAA,OAAKC,UAAU,4CACXD,EAAAA,cAAC6xC,EAAAA,gCAA+B,CAC5BpvC,GAAIya,EACJtY,QAASA,EACT6V,SAAU9T,EAAM4T,eAChBnD,KAAM,CACF4F,cAAerW,EAAMqW,eAEzB/c,UAAU,uCACV25B,cAAejzB,EAAMmrC,aACrBxyB,cAAe3Y,EAAM/E,UACrB8F,iBAAkBA,EAClBjB,oCAAqCE,EAAMF,uCAIvDkpB,aACI3vB,EAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAU,iCAAgC,aAC9BmxC,EACZjoC,QAAS+nC,EAAiCvqC,KAGlD4uB,2BAA4B8b,GAAsBA,EAAmB7wC,QAAU6wC,EAAmBh1B,aAC9Frc,EAAAA,cAAA,OAAKC,UAAU,4BACXD,EAAAA,cAAC8U,EAAAA,MAAK,CAAC1R,MAAOiuC,EAAmB/0B,gBAAiB9b,OAAQ6wC,EAAmB7wC,OAAQqI,OAAQ0oC,GACzFvxC,EAAAA,cAAA,YAAOqxC,EAAmBh1B,eAIzC,EAQC01B,EAAkB/2B,GAAuB,KAC3C9T,OAAOC,SAAS8B,OAAO+R,EAAW,EAGhCw2B,EAA6BA,CAC/B5sC,EACAid,EACAvY,EACAgoC,KAEA,MAAMtwC,EAAuC,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCE,GAAI,CAAEJ,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCG,UAAU,GAGd,GAAIqgB,EAAoB,CACpB,MAAMoB,EAAQpB,EAAmBhe,OAAS,EAAIge,EAAmBhe,OAAS,EAE1E,OACI7D,EAAAA,cAAA,OAAKC,UAAU,sCACV4hB,aAAkB,EAAlBA,EAAoBmwB,MAAM,EAAG/uB,GAAOzY,KAAI+L,IAAO,IAAA07B,EAAAC,EAAAhmB,EAAAmD,EAAA8iB,EAAAC,EAAA3/B,EAAA4/B,EAAA/iB,EAC5C,MAAMtU,EAAazE,EAAKuB,YAClBoJ,EAAyB3K,EAAKuB,YAAYC,eAAgBnT,EAAS2R,SAAqB,QAAjB07B,EAAJ17B,EAAMiB,uBAAe,IAAAy6B,OAAA,EAArBA,EAAuB/mC,WAC1F,GAEN,OACIlL,EAAAA,cAACoT,EAAAA,GAAK,CACFC,QAA8C,QAAvC6+B,EAAkB,QAAlBhmB,EAAE3V,EAAKuB,mBAAW,IAAAoU,OAAA,EAAhBA,EAAkBnU,eAAelN,YAAI,IAAAqnC,EAAAA,EAAI,QAClDt/B,eAAgBhO,EAAQJ,cAAcoO,eACtCjI,IAAqB,QAAlB0kB,EAAE9Y,EAAKuB,mBAAW,IAAAuX,OAAA,EAAhBA,EAAkBtX,eAAelN,KACtCyI,IAAqD,QAAlD6+B,EAAkB,QAAlBC,EAAE77B,EAAKuB,mBAAW,IAAAs6B,OAAA,EAAhBA,EAAkBr6B,eAAexE,uBAAe,IAAA4+B,EAAAA,EAAI,GACzD3+B,YAKK,QALMf,GACPgB,EAAAA,EAAAA,qBACoB,QADD4+B,EACf97B,EAAKuB,mBAAW,IAAAu6B,OAAA,EAAhBA,EAAkBt6B,eAAerE,OACjC9O,EAAQJ,cAAcoO,eAAelO,YAClB,QAD6B4qB,EAChD1qB,EAAQH,QAAQkP,WAAG,IAAA2b,GAAQ,QAARA,EAAnBA,EAAqBzoB,cAAM,IAAAyoB,OAAA,EAA3BA,EAA6B1b,yBAChC,IAAAnB,EAAAA,EAAI,GAETI,aAAcjO,EAAQH,QAAQoO,aAC9BvJ,cAAeA,QAAAA,EAAiBtI,EAChC6S,oBAAoB,QACpB1K,QAASmoC,GAA0BS,EAAe/2B,GAClD/a,UAAWqxC,EAAyB,eAAiB,IACvD,IAGR,CAGd,OAAOtxC,EAAAA,cAAA,OAAKC,UAAU,sCAAuC,EAI3DihB,EAA2BA,CAACC,EAA+Bvc,EAAuB8B,KACpF,MAAMsU,GAAaoG,EAAAA,EAAAA,mBAAkBD,EAAgBvc,EAAQJ,mBAAeS,GAC5E,IAAKoc,EAAAA,iBAAiBC,mBAAmBtG,SAA6B/V,IAAdyB,EAAyB,CAC7E,MAAMiZ,EAAU,IAAIb,IAAI9D,EAAY9T,OAAOC,SAASiU,MAEpD,OADAuE,EAAQ6B,aAAaC,IAAI,YAAa,GAAG/a,QAAAA,EAAa,KAC/CiZ,EAAQvE,IAAK,CAExB,OAAOJ,CAAU,EAGf02B,EAAoB3xC,IACtB,MAAM,KAAEkC,GAASlC,EACjB,MAAO,GAAGkC,GAAM,uBC7Nb,MAAMqwC,EAAiFzX,IAAmC,IAAlC,UAAE56B,EAAS,UAAEyqB,EAAS,KAAE1C,GAAM6S,EACzH,OAAQnQ,GACJ,IAAK,QACD,OAAO1qB,EAAAA,cAAA,KAAGC,UAAWkU,IAAW,sCAAuClU,IAAa+nB,GACxF,IAAK,SACD,OAAOhoB,EAAAA,cAAA,KAAGC,UAAWkU,IAAW,uCAAwClU,IAAa+nB,GAEzF,QACI,OAAOhoB,EAAAA,cAAA,KAAGC,UAAU,yCAAyC+nB,GAAU,iLCfnF,MAAMiJ,EAAgEjxB,IAAAA,YA4DtE,EAtC6ED,IACzE,MAAMmxB,EAAkBlxB,IAAAA,aAAkB,KAChC,GACP,KACImxB,EAAiCC,IAAkCrb,EAAAA,EAAAA,WAAS,GAC7Esb,EAAsBrxB,IAAAA,aAAkB,KAC1CoxB,GAA+B,EAAK,GACrC,IAEH,OACIpxB,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,UACIC,UAAU,6DACVmD,MAAM,UACN+F,QAASkoB,EACTnuB,IAAK+tB,EAAyB,aAClBlxB,EAAMuxB,yBAEjBvxB,EAAMuxB,yBAEXtxB,IAAAA,cAACuxB,EAAAA,wBAAuB,CACpBtxB,UAAU,iCACVuf,UAAW2R,EACXK,gBAAgB,EAChB1K,aAAcsK,EACdxsB,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACV2U,KAAM,CAAC,EACPqD,SAAU1a,EAAM0a,SAChB6E,cAAevf,EAAM0xB,mCACrBC,SAAUR,EACVS,UAAW5xB,EAAM6xB,uBACjBC,iBAAkBZ,IAEvB,ukBCZX,IAAMkD,EAAN,cAAgCn0B,EAAAA,UAC5BK,YAAYN,GACRO,MAAMP,GAmIO,KAAAwb,yCAA2C,KACxD,IAAI9U,GAAsC,EACP,IAAD+U,EAA9BxZ,KAAKjC,MAAMqX,KAAKqE,eAChBhV,GACuC,QAAnC+U,EAAAxZ,KAAKjC,MAAMqX,KAAKqE,aAAa7X,cAAM,IAAA4X,GAElC,QAFkCA,EAAnCA,EAAqCjL,MACjCmL,GAA4B,2DAAjBA,EAAQ7Q,cACtB,IAAA2Q,OAAA,EAFDA,EAEGG,aAAa,GAExB,OAAOlV,CAAmC,EAgD7B,KAAAib,WAAa,KAC1B1f,KAAKwB,SAAS,CACVhD,QAAQ,GACV,EAGW,KAAAyzB,YAAc1vB,UAC3B2C,OAAOC,SAASC,QAAQ,EAGX,KAAAmrC,+BAAkCr2B,IAC/C,MAAM,QAAEtX,EAAO,KAAEwS,EAAI,UAAEhS,EAAS,UAAExD,GAAcI,KAAKjC,OAC/C,eAAEu0B,GAAmBld,EAE3B,GAAIxS,GAAWA,EAAQJ,cAAe,CAElC,GADkBI,EAAQH,QAAQyV,KAAKoK,iBAAmB1f,EAAQH,QAAQyV,KAAKqK,OAC9D+P,EAAe1wB,QAAU0wB,EAAe1wB,OAAO,IAAMsY,EAAe,CACjF,MAAMc,EAAgBsX,EAAe1wB,OAAO2M,MAAKiiC,GAAKA,EAAEv1B,YAAYC,KAAOhB,IACvEc,GACAwL,EAAAA,EAAAA,aAAY,CAAEld,cAAe1G,EAAQJ,eAAiBwY,EAAcC,aAC/DtZ,OACAK,OAAOC,IACJmB,EAAUqX,QAAQ,0DAClBrX,EAAUnB,MAAMA,GAChBjC,KAAKwB,SAAS,CACVgW,QAAS0C,EACTu2B,oBAAqB7wC,EAAU8mB,8BAC/BpM,gBAAiB,SACjBC,aAAc,8BACd/b,QAAQ,GACV,IAELmD,KAAK3B,KAAKiyB,aACVjwB,OAAOC,IACJmB,EAAUqX,QAAQ,0DAClBrX,EAAUnB,MAAMA,EAAM,IAG9BmB,EAAUqX,QAAQ,sFAAsF,MAG5GrX,EAAUqX,QAAQ,yDAAyD,GAnOnFza,KAAKzB,MAAQ,CACTiZ,QAAS,GACT6C,YAAa,GACbo2B,oBAAqB,GACrBn2B,gBAAiB,UACjBC,aAAc,eACd/b,QAAQ,EAEhB,CAEO+D,0BACHvC,KAAKwB,SAAS,CAAC,EACnB,CAEO6E,sBACHC,EACAC,GAEA,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,MAAMqX,OAAS9O,EAAU8O,IAIlE,CAEO5O,SAAM,IAAAkqC,EAAAC,EACT,MAAM,UAAE1yC,EAAS,QAAE2Z,GAAY5X,KAAKjC,MAAM8G,QACpC,uBAAE+rC,EAAsB,4BAAEhe,GAAgC5yB,KAAKjC,MAAM6B,WACrE,eAAE0yB,GAAmBtyB,KAAKjC,MAAMqX,KAChCy7B,EAAqBve,GAAkBA,EAAe1wB,OACtDkvC,EAAwC,QAAhBJ,EAAG94B,aAAO,EAAPA,EAASoO,YAAI,IAAA0qB,EAAAA,EAAI1wC,KAAKjC,MAAM6B,UAAUmxC,uBAEvE,GAA8B,YAA1Bze,EAAe5kB,OAAsB,CAAC,IAAD28B,EACrC,MAAMjiB,EAAUxhB,EAAAA,EAAA,GACR5G,KAAKjC,OAAyD,IAClEo0B,kBAAmB,CACf9J,YAAaroB,KAAKjC,MAClBE,UAAWkU,IAAW,oBAAqBlU,IAE/CyP,OAAQ,UACR4a,cAAetqB,EAAAA,cAAC+J,EAAAA,EAAO,CAAC9J,UAAU,oBAAoBC,IAAK8B,KAAKjC,MAAM6B,UAAUoI,2BAChF4P,QACI5Z,EAAAA,cAACuqB,EAAAA,QAAO,CAACtqB,UAAU,6BAA6BkrB,IAAiB,QAAdkhB,EAAEzyB,aAAO,EAAPA,EAASuR,WAAG,IAAAkhB,EAAAA,EAAA,KAAmBrkB,KAAM8qB,MAGlG,OAAO9wC,KAAKjC,MAAMyqB,WAAWJ,EAAY,CAG7C,GAAIyoB,GAAoD,IAA9BA,EAAmBhvC,OAAc,CAAC,IAADmvC,EAEvD,MAAMnoB,EAAcjiB,EAAAA,EAAA,GACZ5G,KAAKjC,OAAyD,IAClEo0B,kBAAmB,CACf9J,YAAaroB,KAAKjC,MAClBE,UAAWkU,IAAW,oBAAqBlU,IAE/CyP,OAAQ,QACR4a,cAAetqB,EAAAA,cAACsyC,EAAAA,EAA8B,CAAC5nB,UAAU,QAAQ1C,KAAM4qB,IACvEre,0BACIv0B,EAAAA,cAAC20B,EAAgC,CAC7B/vB,QAAS5C,KAAKjC,MAAM6E,QACpBnC,GAAIT,KAAKjC,MAAM0C,GACfgY,SAAUzY,KAAKjC,MAAM0a,SACrBrD,KAAM,CAAC,EACPka,wBAAyBsD,EACzBhD,uBAAwB5vB,KAAKiyB,YAC7BxC,mCAAoCzvB,KAAKksB,0CAA0ClsB,KAAKjC,MAAM6B,aAGtGgY,QACI5Z,EAAAA,cAACuqB,EAAAA,QAAO,CAACtqB,UAAU,6BAA6BkrB,IAAiB,QAAd6nB,EAAEp5B,aAAO,EAAPA,EAASuR,WAAG,IAAA6nB,EAAAA,EAAA,KAAmBhrB,KAAM8qB,MAIlG,OAAO9wC,KAAKjC,MAAMyqB,WAAWK,EAAgB,CAGjD,MAAMxhB,EAAST,EAAAA,EAAA,GACP5G,KAAKjC,OAAyD,IAClEo0B,kBAAmB,CACf9J,YAAaroB,KAAKjC,MAClBE,UAAWkU,IAAW,oBAAqBlU,IAE/CyP,OAAQ,UACRkK,QAAS5Z,EAAAA,cAACuqB,EAAAA,QAAO,CAACtqB,UAAU,6BAA6BkrB,IAAiB,QAAdwnB,EAAE/4B,aAAO,EAAPA,EAASuR,WAAG,IAAAwnB,EAAAA,EAAA,KAAmB3qB,KAAM8qB,IACnGve,0BACIv0B,EAAAA,cAAC20B,EAAgC,CAC7B/vB,QAAS5C,KAAKjC,MAAM6E,QACpBnC,GAAIT,KAAKjC,MAAM0C,GACfgY,SAAUzY,KAAKjC,MAAM0a,SACrBrD,KAAM,CAAC,EACPka,wBAAyBsD,EACzBhD,uBAAwB5vB,KAAKiyB,YAC7BxC,mCAAoCzvB,KAAKksB,0CAA0ClsB,KAAKjC,MAAM6B,aAGtG4yB,4BAA6BxyB,KAAKzB,MAAMC,QAAUwB,KAAKzB,MAAMkyC,qBACzDzyC,EAAAA,cAAA,OAAKC,UAAU,sCACXD,EAAAA,cAAC8U,EAAAA,MAAK,CAAC1R,MAAOpB,KAAKzB,MAAM+b,gBAAiB9b,OAAQwB,KAAKzB,MAAMC,OAAQqI,OAAQ7G,KAAK0f,YAC9E1hB,EAAAA,cAAA,YAAOgC,KAAKzB,MAAMkyC,uBAI9Bre,eAAgB,CACZn0B,UAAW,+BACXkrB,IAAK,MAETkJ,cAAe,CACXp0B,UAAW,0BACXkrB,IAAK,MAETmJ,eAAgBue,GAAsB7wC,KAAKixC,yBAAyBJ,KAGxE,OAAO7wC,KAAKjC,MAAMyqB,WAAWnhB,EACjC,CAEQ6kB,0CAA0CtsB,GAC9C,MAAO,CACHusB,yBAA0BvsB,EAAUizB,0BACpCxG,wBAAyBzsB,EAAU0sB,mBACnCC,2BAA4B3sB,EAAU2sB,2BACtCC,yBAA0B5sB,EAAUkzB,+BAEpCrG,yBAA0B7sB,EAAU6sB,yBAEpCC,yBAA0B9sB,EAAUmzB,8BACpCnG,+BAAgChtB,EAAUozB,yCAElD,CAaQie,yBAAyB3e,GAC7B,MAAM,QAAE1vB,EAAO,UAAEQ,GAAcpD,KAAKjC,OAC9B,cAAEuJ,EAAa,uBAAEgoC,GAA2BtvC,KAAKjC,MAAM8G,OAC7D,OAAOytB,EAAe9pB,KAAI,CAACwS,EAA8B1H,KACrD,MAAM49B,EAAkD,CACpD7B,mBAAoBrvC,KAAKzB,MACzB2c,GAAIF,EAAcC,YAAYC,GAC9Bjb,KAAM+a,EAAcC,YAAYpS,KAChCmS,gBACApY,UACA0E,gBACAgoC,yBACAF,gCAAiC,SACjCU,aAAc9vC,KAAKjC,MAAM6B,UAAUsW,mBACnC5C,QACAkE,QAASwD,EAAcC,YAAYC,GACnC9X,YACAkV,SAAUtY,KAAKjC,MAAM0C,GACrB8X,eAAgBvY,KAAKjC,MAAM0a,SAC3BhD,SAAU,CACNw5B,sBAAuBjvC,KAAKuwC,+BAC5BhB,UAAWvvC,KAAK0f,YAEpB9f,UAAW,CACPolB,sBAAuBhlB,KAAKjC,MAAM6B,UAAUolB,sBAC5CC,wBAAyBjlB,KAAKjC,MAAM6B,UAAUqlB,wBAC9CC,wBAAyBllB,KAAKjC,MAAM6B,UAAUslB,wBAC9CC,wBAAyBnlB,KAAKjC,MAAM6B,UAAUulB,wBAC9CC,0BAA2BplB,KAAKjC,MAAM6B,UAAUwlB,0BAChDC,gCAAiC,CAC7BgG,mBAAoBrrB,KAAKjC,MAAM6B,UAAUyrB,mBACzCC,6BAA8BtrB,KAAKjC,MAAM6B,UAAU0rB,6BACnDC,mCAAoCvrB,KAAKjC,MAAM6B,UAAU2rB,mCACzDC,mCAAoCxrB,KAAKjC,MAAM6B,UAAU4rB,mCACzDC,sCAAuCzrB,KAAKjC,MAAM6B,UAAU6rB,sCAC5DC,kCAAmC1rB,KAAKjC,MAAM6B,UAAU8rB,oCAGhEjnB,oCAAqCzE,KAAKuZ,4CAG9C,OAAO41B,EAAAA,EAAAA,GAAoB+B,EAAsB,GAEzD,GA3LE/e,GAAiBzoB,EAAAA,EAAAA,IAAA,CADtBkD,EAAAA,IACKulB,GA4ON,iHCtRO,MAAMgf,EAA+DpzC,IACxE,MAAM,kBACFo0B,EAAiB,OACjBzkB,EAAM,cACN4a,EAAa,QACb1Q,EAAO,eACPwa,EAAc,eACdE,EAAc,cACdD,EAAa,0BACbE,EAAyB,4BACzBC,GACAz0B,EAEJ,OACIC,EAAAA,cAAC6wB,EAAAA,OAAM7nB,OAAAC,OAAA,GAAKkrB,GACPva,EACW,YAAXlK,GAAwB4a,EACzBtqB,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAU,IACXs0B,EACAC,GAEJJ,GAAkBE,GAAkBA,EAAezwB,OAAS,GACzD7D,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKmrB,GACLE,GACGA,EAAe9pB,KAAIwS,GACRo2B,EAAqBp2B,EAAeqX,MAItD,EAIX+e,EAAuBA,CAACp2B,EAA8CqX,KACxE,MAAM,IAAE1pB,EAAG,gBAAE0qB,EAAe,mBAAEC,EAAkB,2BAAEC,EAA0B,aAAE5F,EAAY,kBAAE6F,GAAsBxY,EAClH,OACIhd,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,CAAC0B,IAAKA,EAAK1K,UAAWo0B,EAAep0B,WAAeo0B,GACpDmB,EACAF,EACAD,EACA1F,EACA4F,EACE,EAIf,iDClDA,QAAgBx1B,GACZC,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKC,UAAW,GAAGF,EAAME,8BACxBF,aAAK,EAALA,EAAOG,MAAOF,EAAAA,cAAA,OAAKC,UAAW,GAAGF,EAAME,2BAA4BF,aAAK,EAALA,EAAOG,+TCqB5E,MAAM+V,UAAiCjW,EAAAA,cAA9CK,cAAA,oBACW,KAAAE,MAAwC,CAC3C2V,eAAe,EACfC,kBAAkB,GAkHL,KAAAC,WAAc/S,IAC3BrB,KAAKwB,SAAS,CACV0S,eAAe,IAGnBlU,KAAKjC,MAAM0W,sBAEXzU,KAAKwB,SAAS,CACV0S,eAAe,GACjB,EAGW,KAAAQ,cAAiBrT,IAC9BrB,KAAKwB,SAAS,CACV2S,kBAAkB,IAGtBnU,KAAKjC,MAAM4W,mBAAmB,CAEtC,CAlIWC,gCACH7W,EACAQ,GAEA,MAAM8V,EAAgBtW,EAAMsW,cAAcxS,OAC1C,IAAI0E,uWAASK,CAAA,GAAQrI,GAKrB,OAJAgI,EAAY,CACR2N,cAAiC,IAAlBG,EACfF,iBAAoC,IAAlBE,GAEf9N,CACX,CAEOC,SAAM,IAAAsO,EACT,MAAM,qBACFrO,EAAoB,sBACpB5G,EAAqB,qBACrBkV,EAAoB,2BACpBjV,EAA0B,uBAC1BC,EAAsB,wBACtBsT,EAAuB,sBACvBvC,EAAqB,8BACrBC,EAA6B,eAC7BiE,EAAc,yBACdjJ,EAAwB,yBACxBK,EAAwB,oBACxB4E,EAAmB,kCACnBC,EAAiC,0BACjChJ,EAAyB,+BACzBC,EAA8B,mBAC9BE,EAAkB,0BAClB+H,EAAyB,kCACzBC,EAAiC,yBACjCC,EAAwB,0BACxBC,EAAyB,2BACzB2E,EAA0B,8BAC1BC,EAA6B,0BAC7B9Q,EAAyB,0BACzBE,EAAyB,0BACzBkO,EAAyB,gBACzBtB,EAAe,yBACflJ,EAAwB,4BACxB4F,EAA2B,0BAC3BC,EAAyB,sBACzBb,GACAhN,KAAKjC,MAAM6B,UAETuV,EAAe,CACjBvS,QAAS5C,KAAKjC,MAAM6E,QACpB8C,iBAAkB1F,KAAKjC,MAAM2H,iBAC7B9F,UAAW,CACP6G,uBACA5G,wBACAkV,uBACAjV,6BACAC,yBACAsT,0BACAvC,wBACAC,gCACAiE,iBACAjJ,2BACAK,2BACA4E,sBACAC,oCACAhJ,4BACAC,iCACAE,qBACA+H,4BACAC,oCACAC,2BACAC,4BACAlM,4BACAE,4BACAkO,4BACAtB,kBACAlJ,2BACA4F,8BACAC,4BACAb,yBAEJ1F,cAAetH,KAAKjC,MAAM8G,OAAOyC,cACjC9C,gBAAiBxE,KAAKjC,MAAMyG,gBAC5BC,oCAAqCzE,KAAKjC,MAAM0G,oCAChD4D,SAAkC,QAA1ByM,EAAE9U,KAAKjC,MAAMqX,KAAK/M,gBAAQ,IAAAyM,OAAA,EAAxBA,EAA0BlT,QAGxC,OACI5D,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAACI,EAAAA,GAAiB4I,OAAAC,OAAA,GAAKkO,IACvBnX,EAAAA,cAACkU,EAAAA,OAAM,CACH/K,QAASnH,KAAKoU,WACd9I,SAAUtL,KAAKzB,MAAM2V,cACrBjW,UAAU,sBAAqB,aACnBgX,GAEZjX,EAAAA,cAAA,cACEgC,KAAKjC,MAAMsX,gBAAkBJ,GAEnCjX,EAAAA,cAACkU,EAAAA,OAAM,CACH/K,QAASnH,KAAK0U,cACdpJ,SAAUtL,KAAKzB,MAAM4V,iBACrBlW,UAAU,kBAAiB,aACfiX,GAEZlX,EAAAA,cAAA,cACEgC,KAAKjC,MAAMsX,gBAAkBH,GAI/C,iGC5EC/W,6tBAAL,SAAKA,GACDA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,+CACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,iBACAA,EAAAA,EAAA,oBACH,CAPD,CAAKA,IAAAA,EAAO,KAyBL,MAAMC,UAA0BJ,IAAAA,UAwBnCK,YAAYN,GACRO,MAAMP,GAxBH,KAAAQ,MAAiC,CACpCC,QAAQ,EACRC,MAAO,GACPC,SAAU,GACVC,gBAAiB,GACjBC,QAAST,EAAQU,OACjBC,gBAAiB,KACjBC,kBAAmB,GAGhB,KAAAC,qBAAuC,CAC1CC,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCC,GAAI,CAAEH,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCE,GAAI,CAAEJ,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,IAEvCG,UAAU,GAGP,KAAAC,gBAAqDzB,IAAAA,YAE3C,KAAA0B,iBAAuD1B,IAAAA,YAwEvD,KAAA2B,kBAAoB,KACjC,MACIC,WAAW,sBAAEC,EAAqB,2BAAEC,EAA0B,uBAAEC,IAChEC,KAAKjC,MAET,OACIC,IAAAA,cAAA,QACIC,UAAU,wCAAuC,aACrC4B,EACZI,KAAK,mCACLC,KAAK,OACLC,aAAa,MACbC,SAAUJ,KAAKK,iBAEdL,KAAKzB,MAAMI,iBAAmB2B,EAAAA,gBAAgBC,YAAYP,KAAKzB,MAAMI,kBAClEX,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,SAAOC,UAAW,2CAA4CuC,QAAS,6CAClET,GAEL/B,IAAAA,cAAA,UACIyC,GAAG,6CACHxC,UAAU,kFACVyC,SAAUV,KAAKW,2BAEdX,KAAKY,qBAIlB5C,IAAAA,cAAA,OAAKC,UAAU,qEACXD,IAAAA,cAAA,SACI6C,KAAK,OACLC,WAAS,eACGhB,EACZ7B,UAAU,0DACV8C,YAAajB,EACbkB,MAAOhB,KAAKzB,MAAME,MAClBiC,SAAUV,KAAKiB,eACfC,IAAKlB,KAAKP,gBACV0B,UAAW,MAEfnD,IAAAA,cAAA,UAAQC,UAAU,0CAAyC,aAAa4B,EAAuBuB,MAAM,aAEtG,EAIE,KAAAf,gBAAmBgB,IAChCA,EAAMC,iBAEN,MAAM7C,EAAQ8C,IAAIvB,KAAM,gCAAiC,MAEpDvB,IAILuB,KAAKwB,SAAS,CACV5C,QAAST,EAAQsD,UAGrBzB,KAAK0B,kBAAkBjD,GAClBkD,MAAKC,IACoB,IAAlBA,EAAOC,OACP7B,KAAKwB,SAAS,CACV9C,SAAUkD,EACVhD,QAAST,EAAQ2D,WAGrB9B,KAAKwB,SAAS,CACV9C,SAAUkD,EACVhD,QAAST,EAAQ4D,aAClB,IAGVC,OAAMC,IACHjC,KAAKwB,SAAS,CACV5C,QAAST,EAAQ+D,OACnB,IACJ,EAGO,KAAAC,yBAA4Bd,IACzCrB,KAAKwB,SAAS,CACVY,kBAAmBf,EAAMgB,OAAOrB,OAClC,EAGW,KAAAsB,cAAgBC,UAC7B,MAAM,cACFC,EACAC,SACIC,aAAa,UAAEC,KAEnB3C,KAAKjC,MAAM6E,QACTC,EAAgB,IAAIC,EAAAA,qBAAqBC,EAAQC,SAAUL,EAAW,QAAIM,EAAWjD,KAAKjC,MAAM6E,QAAQH,SACxGS,QAAuBC,EAAAA,EAAAA,oBAAmBN,EAAeL,GAE/D,IAAKU,EAED,OADAlD,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MAAM,oCAC5BoB,QAAQC,QAAQ,IAG3B,MAAMC,QAAmBvD,KAAKwD,sBAAsBT,GAQpD,OANA/C,KAAKwB,SAAS,CACViC,0BAA2BF,EAC3B3E,QAAST,EAAQuF,qBACjB5E,gBAAiBoE,IAGdK,CAAU,EAGJ,KAAAtC,eAAkBI,IAC/BrB,KAAKwB,SAAS,CACV/C,MAAO4C,EAAMgB,OAAOrB,OACtB,EAGW,KAAA2C,0BAA4B,KACzC3D,KAAKwB,SAAS,CACV5C,QAAST,EAAQ4D,aACnB,EAGW,KAAA6B,qBAAwB3D,IACrC,MAAM4D,EAAa5D,GAAQ6D,SAAS7D,EAAK8D,QAAQ,IAAIC,OAAOhE,KAAKzB,MAAME,MAAO,KAAM,oBAEpF,OACIT,IAAAA,cAAA,OACIC,UAAU,0CAEVgG,wBAAyB,CAAEC,OAAQL,GAAc,KACnD,EAIO,KAAAM,iBAAmB,IACzBnE,KAAKjC,MAAM6B,UAAUwE,0BACvBL,QAAQ,UAAW/D,KAAKzB,MAAMG,SAASmD,OAAOwC,YAC9CN,QAAQ,YAAa,GAAG/D,KAAKjC,MAAM6B,UAAU0E,4BAA4BtE,KAAKzB,MAAMG,SAASmD,OAAS,EAAI,IAAM,MAuExG,KAAA0C,0BAA4BhC,UACzC,MAAM,gBACFiC,EACA5B,SAAS,cAAEJ,GAAe,oCAC1BiC,GACAzE,KAAKjC,MACH2G,EAAY1E,KAAKzB,MAAMQ,kBACvB4F,EAAQF,EACR,IAAIG,EAAAA,4BACAJ,EACAK,EAAO9B,QAAQC,SACf6B,EAAOC,SACPD,EAAO9B,QAAQgC,sBAAwB,KACvCN,EACAC,GAEJ,IAAIE,EAAAA,4BACAJ,EACAK,EAAO9B,QAAQC,SACf6B,EAAOC,SACPD,EAAO9B,QAAQgC,sBAAwB,MAE3CnD,QAAeoD,EAAAA,EAAAA,wBAAuBL,EAAOnC,GAOnD,OANAxC,KAAKwB,SAAS,CACVhD,QAAQ,EACRyG,YAAY,IAGhBC,OAAOC,SAASC,SACTxD,CAAM,EAuCA,KAAAjB,0BAA6BU,IAC1CrB,KAAKwB,SAAS,CACVzC,kBAAmBsG,OAAOC,SAASjE,EAAMgB,OAAOrB,MAAO,KACzD,EA+CW,KAAAuE,oBAAsB,KACnC,GAAIvF,KAAKzB,MAAMC,OAAQ,CACnB,MAAMgH,GAAUC,EAAAA,EAAAA,kBAAiB,QAASzF,KAAKjC,MAAM2H,iBAAmB,uBAAwB,KAChGC,EAAAA,EAAAA,kBAAiB3F,KAAKjC,MAAM2H,iBAAmBF,EAAS,wBACxDxF,KAAK4F,eACL5F,KAAKN,iBAAiBmG,QAASC,OAAQ,CAG3C9F,KAAKwB,SAAS,CACVhD,QAASwB,KAAKzB,MAAMC,OACpBI,QAAST,EAAQU,SAGjBmB,KAAKzB,MAAM0G,aACXC,OAAOC,SAASC,SAChBpF,KAAKwB,SAAS,CACVyD,YAAY,IACb,CA7ZX,CAEOc,sBAAmB,IAAAC,EACM,QAA5BA,EAAAhG,KAAKP,gBAAgBoG,eAAO,IAAAG,GAA5BA,EAA8BF,OAClC,CAEOG,oBACHjG,KAAK4F,cACT,CAEOM,uBAAoB,IAAAC,EACK,QAA5BA,EAAAnG,KAAKP,gBAAgBoG,eAAO,IAAAM,GAA5BA,EAA8BL,OAClC,CAEcM,oBACV,OAAOpG,KAAKzB,MAAMK,UAAYT,EAAQuF,oBAC1C,CAEO2C,sBAAsBC,EAAoCC,GAC7D,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,QAAUuI,CAInD,CAEOE,SACH,MACI5G,WAAW,qBAAE6G,EAAoB,kBAAEC,IACnC1G,KAAKjC,MAEH4I,EAAUC,EAAAA,EAAA,GACT5G,KAAKjC,OAAK,IACbE,UAAW,2BACX4I,OAAQ7G,KAAKuF,oBACb/G,OAAQwB,KAAKzB,MAAMC,OACnBsI,UAAWL,IAGf,OACIzI,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAC+I,EAAAA,MAAKC,OAAAC,OAAA,GAAKN,GACP3I,IAAAA,cAACkJ,EAAAA,YAAW,CAACL,OAAQ7G,KAAKuF,qBACrBvF,KAAKoG,eACFpI,IAAAA,cAAA,UACI6C,KAAK,SACL5C,UAAU,yBAAwB,aACtByI,EACZS,QAASnH,KAAK2D,4BAGrB8C,GAEJzG,KAAKoH,kBAEVpJ,IAAAA,cAAA,UACI6C,KAAK,SACL5C,UAAU,2CAA0C,aACxCwI,EACZU,QAASnH,KAAKuF,oBACdrE,IAAKlB,KAAKN,kBAEV1B,IAAAA,cAAA,aACCyI,GAIjB,CAgJQW,iBACJ,OAAQpH,KAAKzB,MAAMK,SACf,KAAKT,EAAQuF,qBACT,MAAM,gBAAE5E,EAAe,0BAAE2E,GAA8BzD,KAAKzB,MACtD8I,EAAST,EAAAA,EAAA,GACR5G,KAAKjC,OAAK,IACbuJ,cAAetH,KAAKjC,MAAMuJ,eAAiBtH,KAAKhB,qBAChD+D,QAASjE,EACTyE,WAAYE,EACZ8D,qBAAsBvH,KAAKuE,0BAC3BiD,wBAAyBxH,KAAKmC,yBAC9BsF,oBAAqBzH,KAAK4D,qBAC1B8D,WAAY1H,KAAKL,sBAGrB,OAAO3B,IAAAA,cAAC0F,EAAoBsD,OAAAC,OAAA,GAAKI,IAErC,KAAKlJ,EAAQ4D,YACT,MAAM4F,EAAYf,EAAAA,EAAA,GACX5G,KAAKjC,OAAK,IACbuJ,cAAetH,KAAKjC,MAAMuJ,eAAiBtH,KAAKhB,qBAChD4I,aAAc5H,KAAKsC,cACnB5D,SAAUsB,KAAKzB,MAAMG,SACrB+I,oBAAqBzH,KAAK4D,qBAC1B8D,WAAY1H,KAAKL,oBACjBkI,sBAAuB7H,KAAKmE,mBAGhC,OACInG,IAAAA,cAAC8J,EAAAA,UAAS,KACN9J,IAAAA,cAAC+D,EAAWiF,OAAAC,OAAA,GAAKU,KAI7B,KAAKxJ,EAAQsD,QACT,OACIzD,IAAAA,cAAC8J,EAAAA,UAAS,KACL9H,KAAKL,oBACN3B,IAAAA,cAAC+J,EAAAA,EAAO,CAAC9J,UAAU,2BAA2BC,IAAK8B,KAAKjC,MAAM6B,UAAUoI,4BAIpF,KAAK7J,EAAQ2D,SACT,MAAM,0BAAEmG,EAAyB,+BAAEC,GAAmClI,KAAKjC,MAAM6B,UAEjF,OACI5B,IAAAA,cAAC8J,EAAAA,UAAS,KACN9J,IAAAA,cAAA,KAAGC,UAAU,iDAAiD+B,KAAKmE,oBAClEnE,KAAKL,oBACN3B,IAAAA,cAACmK,EAAiB,CAAClG,MAAOgG,EAA2B/J,IAAKgK,KAItE,KAAK/J,EAAQ+D,MACT,OACIlE,IAAAA,cAAC8J,EAAAA,UAAS,KACL9H,KAAKL,oBACN3B,IAAAA,cAAA,OAAKC,UAAU,mBAAkB,YAAW,aACvC+B,KAAKjC,MAAM6B,UAAUwI,qBAKtC,QACI,OAAOpK,IAAAA,cAAC8J,EAAAA,UAAS,KAAE9H,KAAKL,qBAEpC,CAsCQiG,eACJ,MAAM,oCAAEnB,EAAmC,SAAE4D,GAAarI,KAAKjC,MAGzDY,EAAkB8F,GAAuC4D,EAAWA,EAAW,GAG/E3D,GAAY4D,EAAAA,EAAAA,IAAatI,KAAKjC,MAAM6E,QAAQH,UAClD8F,EAAAA,EAAAA,mBAAkB7D,GAElB1E,KAAKwB,SAAS,CACV7C,gBAAiBA,EACjBI,kBAAmB2F,GAE3B,CAEQ9D,mBACJ,MAAM,gBAAEjC,EAAe,kBAAEI,GAAsBiB,KAAKzB,MACpD,OAAII,GAAmB2B,EAAAA,gBAAgBC,YAAY5B,GACxCA,EAAgB6J,KAAKC,IAExB,MAAMC,EAAaD,EAAezF,WAAajE,EAC/C,OACIf,IAAAA,cAAA,UAAQgD,MAAOyH,EAAezF,SAAU2F,IAAKF,EAAezF,SAAU4F,SAAUF,EAAU,gBAAiBA,GACtGD,EAAeI,KACX,IAId,EACX,CAQQnH,kBAAkBoH,GACtB,MACIlG,SAAS,cACLJ,EACAC,SACIC,aAAa,UAAEC,MAGvB3C,KAAKjC,OACH,kBAAEgB,GAAsBiB,KAAKzB,MAC7BwK,EAA6C,CAAC,EAcpD,OAZAA,EAAoBC,QAAU,CAC1BC,UAAWtG,EACXuG,UAAWnK,GAMXgK,EAAoBI,mBAAoB,EAE5CJ,EAAoBK,gBAAkBN,GAE/BO,EAAAA,EAAAA,uBAAsB,CAAEC,cAAe9G,GAAiBuG,EACnE,CAEQxG,4BAA4BQ,GAChC,MACIH,SAAS,cACLJ,EACAC,SACIC,aAAa,UAAEC,MAGvB3C,KAAKjC,MACH0C,EAAKsC,EAAQwG,gBAAkBxG,EAAQwG,gBAAkBxG,EAAQC,SAEvE,OAAOwG,EAAAA,EAAAA,iCACH,IAAIC,EAAAA,qCAAqChJ,EAAIkC,EAAW,GAAI3C,KAAKjC,MAAM6E,QAAQH,SAC/ED,EAER,GA5XUkH,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,kCC/FN,MAAMC,UAAiB5L,EAAAA,cAG1BK,YAAYN,EAAuBQ,GAC/BD,MAAMP,GAHO,KAAA8L,WAAiD7L,EAAAA,YA2CjD,KAAA8L,WAAczI,IAC3BrB,KAAKwB,SAAS,CAAEuI,cAAe1I,EAAMgB,OAAOrB,QAExChB,KAAKjC,MAAM2C,UACXV,KAAKjC,MAAM2C,SAAS,CAChBsJ,WAAYhK,KAAKjC,MAAMiM,WACvBC,SAAU5I,EAAMgB,OAAOrB,MACvBkJ,cAAe7I,EAAMgB,OAAO8H,WAC7B,EA/CPnK,KAAKzB,MAAQ,CACTwL,cAAe,GAEvB,CAEO9D,oBACCjG,KAAK6J,WAAWhE,UAChB7F,KAAK6J,WAAWhE,QAAQkE,cAAgB,EAEhD,CAEOvD,SACH,MAAM,WAAEwD,EAAU,aAAEI,EAAY,aAAEC,GAAiBrK,KAAKjC,MAExD,OACIC,EAAAA,cAAA,UACIyC,GAAI,uBAAuBuJ,IAC3B9I,IAAKlB,KAAK6J,WAAU,aACRQ,EACZpM,UAAU,uBACVyC,SAAUV,KAAK8J,YAEdM,EAAa5B,KACT8B,GACGA,GACItM,EAAAA,cAAA,UACIgD,MAAOsJ,EAAK7J,GACZkI,IAAK2B,EAAK7J,GACVmI,UAAW5I,KAAKzB,MAAMwL,gBAAmBO,EAAK7J,GAAE,iBAChCT,KAAKzB,MAAMwL,gBAAmBO,EAAK7J,IAElD6J,EAAKtJ,SAMlC,EC3EG,MAAMmH,EAAqBpK,GAC9BC,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKC,UAAU,8CACfD,EAAAA,cAAA,OAAKC,UAAU,4CAA4CF,EAAMkE,OACjEjE,EAAAA,cAAA,OAAKC,UAAU,iEAAiEF,EAAMG,0ECqB9F,IAAqBqM,EAArB,cAAmDvM,EAAAA,cAS/CK,YAAYN,GACRO,MAAMP,GAHO,KAAAyM,SAA8CxM,EAAAA,YA2G9C,KAAAyM,aAAe,KAC5B,MAAMC,OAA8BzH,IAAnBjD,KAAKjC,MAAM4M,IAAoB,EAAI3K,KAAKjC,MAAM4M,IAE3DC,MAAM5K,KAAKzB,MAAMsM,eAAiB7K,KAAKzB,MAAMsM,aAAeH,EAC5D1K,KAAKjC,MAAM2C,UAAYV,KAAKjC,MAAM2C,SAASgK,GAE3C1K,KAAKjC,MAAM2C,UAAYV,KAAKjC,MAAM2C,SAASV,KAAKzB,MAAMsM,aAAc,EA7GxE7K,KAAKzB,MAAQ,CAAEsM,aAAc9M,EAAM+M,cAAgB,GACnD9K,KAAK+K,cAAgB/K,KAAK+K,cAAcC,KAAKhL,OAE7CiL,EAAAA,EAAAA,KACI,IAAMjL,KAAKjC,MAAM+M,eACjB,KACI9K,KAAKwB,SAAS,CAAEqJ,aAAc7K,KAAKjC,MAAM+M,cAAgB,GAAI,GAGzE,CAEOtE,SACH,MAAM0E,EAA8B,GAAGlL,KAAKjC,MAAMoN,+CAC5CC,EAA6B,GAAGpL,KAAKjC,MAAMsN,+CAC3CC,EAAWtL,KAAKjC,MAAM+M,eAAiB9K,KAAKjC,MAAM4M,IAClDY,EAAcvL,KAAKjC,MAAM+M,eAAiB9K,KAAKjC,MAAMyN,IACrDC,EAAezL,KAAKzB,MAAMsM,aAChC,IAAIa,EAAa,GACbJ,EAEAI,EAAa,WACN1L,KAAKjC,MAAMuN,WAElBI,EAAa,cAEjB,MAAMC,EAAoBC,GAAmB,KACzC5L,KAAK6L,qBAAqBD,EAAO,EAGrC,OACI5N,EAAAA,cAAA,OAAKC,UAAU,YACXD,EAAAA,cAAA,UACIsN,SAAUtL,KAAKjC,MAAMuN,UAAYA,EACjCQ,MAAOR,EAAW,GAAKtL,KAAKjC,MAAMgO,yBAClC9N,UAAW,gCAAgCyN,IAC3CvE,QAASwE,GAAkB,GAAE,8BAEjB,GAAG3L,KAAKjC,MAAMgO,2BAC1BC,UAAW,EACX5K,MAAM,aAENpD,EAAAA,cAAA,QAAMC,UAAWiN,KAErBlN,EAAAA,cAAA,SACI6C,KAAK,SACL5C,UAAU,iBACVgO,QAAQ,SACRjL,MAAOyK,EACP/K,SAAUV,KAAK+K,cACfmB,OAAQlM,KAAKyK,aAAY,YACf,SAAQ,aACN,GAAGzK,KAAKjC,MAAMoO,yBAC1BjM,KAAK,aAAY,gBACF,EAAC,gBACDF,KAAKjC,MAAMyN,IAAG,gBACdC,EACfvK,IAAKlB,KAAKwK,SACVc,SAAUtL,KAAKjC,MAAMuN,WAEzBtN,EAAAA,cAAA,UACIsN,SAAUtL,KAAKjC,MAAMuN,UAAYC,EACjCO,MAAOP,EAAc,GAAKvL,KAAKjC,MAAMqO,yBACrCnO,UAAW,iCAAgCsN,EAAc,WAAa,IACtEpE,QAASwE,EAAiB,GAAE,8BAEhB,GAAG3L,KAAKjC,MAAMqO,2BAC1BJ,UAAW,EACX5K,MAAM,aAENpD,EAAAA,cAAA,QAAMC,UAAWmN,KAIjC,CAEQS,qBAAqBD,GACzB,MAAMS,EAAkBrM,KAAKzB,MAAMsM,aAAee,EAE9CS,GAAmB,GAAKA,GAAmBrM,KAAKjC,MAAMyN,KACtDxL,KAAKjC,MAAM2C,UAAYV,KAAKjC,MAAM2C,SAAS2L,EAEnD,CAEQtB,cAAcuB,GAClB,MAAMb,EAAepG,OAAOC,SAASgH,EAAEjK,OAAOrB,MAAO,IAC/C0J,OAA8BzH,IAAnBjD,KAAKjC,MAAM4M,IAAoB,EAAI3K,KAAKjC,MAAM4M,IACzD4B,EACFvM,KAAKwK,UAAYxK,KAAKwK,SAAS3E,SAAW7F,KAAKwK,SAAS3E,mBAAmB2G,kBAAoBxM,KAAKwK,SAAS3E,QAE7G4F,EAAezL,KAAKjC,MAAMyN,IAC1BxL,KAAKwB,SAAS,CAAEqJ,aAAc7K,KAAKjC,MAAMyN,MAEzCxL,KAAKwB,SAAS,CAAEqJ,aAAcY,IAAgB,KAC1CgB,KAAS,KACA7B,MAAM5K,KAAKzB,MAAMsM,eAAmB7K,KAAKzB,MAAMsM,aAAeH,IAAa6B,IAC5EA,EAAaG,aAAa,gBAAiBjB,EAAapH,YACxDkI,EAAaG,aAAa,QAASjB,EAAapH,YAAY,GAEjE,IALHoI,EAKS,GAGrB,GA/GclC,EAAAoC,aAAwC,CAClDhC,IAAK,EACLQ,oBAAqB,eACrBE,oBAAqB,eAJRd,GAAqBb,EAAAA,EAAAA,IAAA,CADzCkD,EAAAA,IACoBrC,GA2HpB,+kBCnGM,MAAM7G,UAA6B1F,IAAAA,UAGtCK,YAAYN,GACRO,MAAMP,GAHF,KAAA8O,mBAAyB,CAAC,EA6LjB,KAAAC,oBAAuBC,GACpC/M,KAAKjC,MAAM6B,UAAUoN,sBAAsBjJ,QAAQ,mBAAoBgJ,GAE1D,KAAAE,sBAAwB1K,UAErCvC,KAAKwB,SAAS,CACV0L,QAAQ,EACRC,qBAAqB,EACrBC,OAAMxG,EAAAA,EAAA,GAAO5G,KAAKzB,MAAM6O,QAAM,IAAEC,SAAKpK,MAGzC,MAAMqK,EAAoBtN,KAAKzB,MAAMgF,WAChCiF,KAAI+E,GAAaA,EAAUC,mBAAmBnJ,aAC9CoJ,QAAO5M,IAASb,KAAK6M,mBAAmBhM,KAE7Cb,KAAKwB,SAAS,CACV4L,OAAQ,CAAEG,UAAWD,KAErBA,EAAkBzL,OAAS,EAC3B7B,KAAKwB,SAAS,CACV0L,QAAQ,IAKhBlN,KAAKjC,MACAwJ,qBAAoBX,EAAC,CAAC,EAAI5G,KAAKzB,QAC/BoD,MAAK+L,IAEEA,EAAOC,eACP3N,KAAKwB,SAAS,CACV0L,QAAQ,EACRC,qBAAqB,GACtB,IAGVnL,OAAMC,IACH,MAAM,4BAAE2L,EAA2B,0BAAEC,GAA8B7N,KAAKjC,MAAM6B,UAC9E,IAAIkO,EAGAA,EADqB,wDAArB7L,EAAMA,MAAMhC,KACG2N,EAEAC,EAGnB7N,KAAKwB,SAAS,CACV0L,QAAQ,EACRE,OAAMxG,EAAAA,EAAA,GAAO5G,KAAKzB,MAAM6O,QAAM,IAAEC,IAAKS,MAEzC9N,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MAAM,sCAAsC,GAC3E,EAGO,KAAA8L,kBAAqBC,IAClChO,KAAKwB,SAAS,CACVsD,SAAUkJ,EACVC,WAAYD,EAAWhO,KAAKjC,MAAMgF,QAAQmL,OAC5C,EAGW,KAAAC,sBAAwB,CACrCC,EACAC,KAEA,GAAIA,GAAcD,EAAqBE,gBACnC,OAAOF,EAAqBE,gBAAgBC,MAAKhB,GAAaA,EAAUvK,YAAcqL,GAG1E,EAIH,KAAAG,oBAAsBjM,UAAyD,IAAAkM,EAC5F,MAAM,QAAE1L,EAAO,WAAEQ,EAAU,QAAEX,GAAY5C,KAAKjC,OACxC,cACFyE,EACAC,SACIC,aAAa,UAAEC,KAEnBC,EAGE8L,EAA6C,QAApBD,EAAGzO,KAAKzB,MAAM6O,cAAM,IAAAqB,GAAW,QAAXA,EAAjBA,EAAmBlB,iBAAS,IAAAkB,OAAA,EAA5BA,EAA8BhB,QAAOhN,GAAMA,IAAOkO,EAAU3E,WAAW3F,aAEzGrE,KAAKwB,SAAS,CACV0L,QAAQ,EACRC,qBAAqB,EACrByB,gBAAgB,EAChBxB,OAAQ,CAAEC,SAAKpK,EAAWsK,UAAWmB,KAIzC1O,KAAK6M,mBAAmB8B,EAAU3E,aAAe2E,EAAU1E,SAE3D,MAAM4E,EAAmBtL,aAAU,EAAVA,EACnBiF,KAAI+E,IACK,CACHC,mBAAoBD,EAAUC,mBAC9BsB,eACI9O,KAAKmO,sBAAsBZ,EAAWvN,KAAK6M,mBAAmBU,EAAUC,sBACxED,EAAUuB,eACdC,oBAAqBxB,EAAUwB,wBAGtCtB,QAAOF,GACGA,GAAaA,EAAUuB,iBAGhCE,QAAuB7L,EAAAA,EAAAA,oBACzB,IAAIL,EAAAA,qBACAC,EAAQwG,gBAAkBxG,EAAQwG,gBAAkBxG,EAAQC,SAC5DL,EACAkM,OACA5L,EACAjD,KAAKjC,MAAM6E,QAAQH,SAEvBD,GAGJ,IAAKwM,EAID,YAHAhP,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MACzB,gDAAgDc,EAAQwG,gBAAkBxG,EAAQwG,gBAAkBxG,EAAQC,YAKpH,MAAMiM,EAAiB,IAAIxF,EAAAA,qCACvBuF,EAAehM,SACfL,EACAkM,EACA7O,KAAKjC,MAAM6E,QAAQH,SAEjByM,QAA0B1F,EAAAA,EAAAA,iCAAgCyF,EAAgBzM,GAEhF,IAAK0M,EAKD,OAJAlP,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MAAM,qEACnCjC,KAAKwB,SAAS,CACVoN,gBAAgB,IAKxB,MAAMO,EAAoB,IAAIC,EAAAA,6CAC1BrM,EAAQwG,gBAAkBxG,EAAQwG,gBAAkBxG,EAAQC,SAC5DL,GAIE0M,QAA6BC,EAAAA,EAAAA,4CAA2CH,EAAmB3M,GAC3F+M,EAAa,IAAIC,EAAAA,6BAA6BzM,EAAQC,SAAUL,GAChE8M,QAAqBC,EAAAA,EAAAA,4BAA2BH,EAAY/M,GAElE,IAAKiN,EAKD,OAJAzP,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MAAM,gEACnCjC,KAAKwB,SAAS,CACVoN,gBAAgB,IAKxB5O,KAAKwB,SAAS,CACVoN,gBAAgB,EAChBe,yBAA2BN,GAAwBA,EAAqB,SAAOpM,EAC/E2M,YAAaH,EAAaI,WAAa9M,EAAQmL,OAC/C3K,WAAY2L,EAAkBY,MAAK,CAACC,EAAGC,IAAMD,EAAEvC,mBAAqBwC,EAAExC,qBACtEzK,QAASiM,GACX,EAGW,KAAAiB,iBAAmB,CAACC,EAAuBtQ,KACxD,OAAQsQ,GACJ,KAAK,EACD,OAAOtQ,EAAUuQ,0BACrB,KAAK,EACD,OAAOvQ,EAAUwQ,kCACrB,KAAK,EACD,OAAOxQ,EAAUyQ,yBACrB,KAAK,EACD,OAAOzQ,EAAU0Q,0BACrB,QACI,MAAO,GAAG,EA7WlBtQ,KAAKzB,MAAQ,CACTuG,SAAU,EACV8K,UAAW7R,EAAMgF,QAAQmL,MACzBD,WAAYlQ,EAAMgF,QAAQmL,MAC1BnL,QAAShF,EAAMgF,QACfQ,WAAYxF,EAAMwF,WAAWuM,MAAK,CAACC,EAAGC,IAAMD,EAAEvC,mBAAqBwC,EAAExC,qBACrEX,mBAAoB,CAAC,EACrB+B,gBAAgB,EAChBzB,qBAAqB,EAE7B,CAEO9G,sBAAsBC,EAAuCC,GAChE,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,QAAUuI,CAInD,CAEOE,SAAM,IAAA+J,EAAAC,EAAAC,EAAAC,EAAAC,EACT,MACI/N,SACIJ,eACIoO,gBAAgB,YAAElO,IAEtBD,SAAS,aAAEoO,IAEfjR,WAAW,sBACPkR,EAAqB,8BACrBC,EAA6B,yBAC7BhF,EAAwB,yBACxBK,EAAwB,oBACxB4E,EAAmB,kCACnBC,EAAiC,gBACjCC,GACH,cACD5J,EAAa,oBACbG,GACAzH,KAAKjC,OACH,eAAE6Q,EAAc,QAAE7L,EAAO,SAAE+B,EAAQ,UAAE8K,EAAS,WAAE3B,EAAU,oBAAEd,EAAmB,OAAEC,GAAWpN,KAAKzB,MACjG4S,EAA0BnR,KAAKjC,MAAM0G,oCAAsC,0BAA4B,GAC7G,OACIzG,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAC8J,EAAAA,UAAS,KACL9H,KAAKjC,MAAM2J,WACZ1J,IAAAA,cAAA,OAAKC,UAAU,4CACXD,IAAAA,cAAA,OAAKC,UAAU,8DACXD,IAAAA,cAAA,OAAKC,UAAU,8DACXD,IAAAA,cAACoT,EAAAA,GAAK,CACFC,QAAqB,QAAdd,EAAExN,EAAQ8F,YAAI,IAAA0H,EAAAA,EAAI,QACzBK,eAAgB5Q,KAAKjC,MAAM6E,QAAQJ,cAAcoO,eACjDU,IAA6B,QAA1Bd,EAAEzN,aAAO,EAAPA,EAASwO,uBAAe,IAAAf,EAAAA,EAAI,GACjCgB,YAKK,QALMf,GACPgB,EAAAA,EAAAA,qBACI1O,aAAO,EAAPA,EAAS2O,OACThP,EAC8B,QADnBgO,EACX1Q,KAAKjC,MAAM6E,QAAQH,QAAQkP,WAAG,IAAAjB,GAAQ,QAARA,EAA9BA,EAAgC7L,cAAM,IAAA6L,OAAA,EAAtCA,EAAwCkB,yBAC3C,IAAAnB,EAAAA,EAAI,GAETxS,UAAU,YACVqJ,cAAeA,EACfuJ,aAAcA,EACdgB,oBAAoB,UAExB7T,IAAAA,cAAA,OAAKC,UAAU,iDACXD,IAAAA,cAAA,OAAKC,UAAU,yCAAyC8E,aAAO,EAAPA,EAAS2O,QAChEjK,EAAiC,QAAdkJ,EAAC5N,aAAO,EAAPA,EAAS8F,YAAI,IAAA8H,EAAAA,EAAI,IACtC3S,IAAAA,cAAA,OAAKC,UAAU,iDACV8S,EACA,IACA/Q,KAAK8R,aAAalC,IAEvB5R,IAAAA,cAAA,OAAKC,UAAU,0CACVgT,EACA,IACAlO,aAAO,EAAPA,EAASgC,wBAItB/G,IAAAA,cAAA,OAAKC,UAAU,wDAAwD+B,KAAK+R,wBAEhF/T,IAAAA,cAAA,OAAKC,UAAU,sBACXD,IAAAA,cAAA,WAAMgT,GACNhT,IAAAA,cAACuM,EAAqB,CAClB9J,GAAG,qDACHqK,aAAchG,EACdpE,SAAUV,KAAK+N,kBACf5B,uBAAuB,mCACvBX,IAAK,IACLO,yBAA0BA,EAC1BK,yBAA0BA,MAItCpO,IAAAA,cAAA,OAAKC,UAAW,kDAAkDkT,KAC7DD,EACA,IACAlR,KAAK8R,aAAa7D,KAG3BjQ,IAAAA,cAACgU,EAAAA,YAAW,KACP7E,GACGnP,IAAAA,cAAA,OACIC,UAAU,oEAAmE,YACnE,YACViC,KAAK,SAELlC,IAAAA,cAAA,sBAAkB,SACjBgC,KAAKiS,4BAGb7E,aAAM,EAANA,EAAQC,MACLrP,IAAAA,cAAA,OAAKC,UAAU,kEACXD,IAAAA,cAAA,QAAMC,UAAU,2BAA0B,cAAa,SACtDmP,EAAOC,KAGhBrP,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAWkU,IAAW,0DAA2D,CAAE,UAAWnS,KAAKzB,MAAM2O,SAAS,aACtG4D,EACZ3J,QAASnH,KAAKiN,sBACd3B,SAAUsD,GAETkC,IAKrB,CAEQmB,0BACJ,MAAMG,EAAyBpS,KAAKzB,MAAMgF,WACrCiF,KAAI+E,IAAY,IAAA8E,EACb,IAAIC,EAAmC,QAA5BD,EAAG9E,EAAUe,uBAAe,IAAA+D,GAEtC,QAFsCA,EAAzBA,EAA2B9D,MACrCvN,GAASA,EAAMgC,WAAahD,KAAK6M,mBAAmBU,EAAUC,6BACjE,IAAA6E,OAAA,EAFaA,EAEXE,MAIH,OAHqC,IAAjChF,EAAUC,qBACV8E,EAAU,QAAQA,KAEfA,CAAO,IAEjB7E,QAAOzM,GAASA,IAErB,OAAOhB,KAAKjC,MAAM6B,UAAU4S,0BACvBzO,QAAQ,UAAW/D,KAAKzB,MAAMuG,SAAST,YACvCN,QAAQ,yBAA0B,GAAG/D,KAAKzB,MAAMwE,QAAQ8F,SAAS7B,OAAOyL,OAAOL,GAAwBM,KAAK,QACrH,CAEQX,sBACJ,MAAM,WAAExO,GAAevD,KAAKzB,OACtB,UAAEqB,GAAcI,KAAKjC,MAE3B,OAAOwF,aAAU,EAAVA,EAAYiF,KAAK+E,IAAmC,IAAAoF,EACvD,MAAM,gBAAErE,EAAe,mBAAEd,GAAuBD,EAK1CR,EAAgB/M,KAAKiQ,iBAAiBzC,EAAoB5N,GAC1DwK,EAAqCkE,EAAkBA,EAAgB9F,KALtDxH,IAA4B,CAC/CP,GAAIO,EAAMgC,SACVhC,MAAOA,EAAMuR,OAAS,OAG4F,GAGtH,OAFAnI,EAAawI,QAAQ,CAAEnS,GAAI,EAAGO,MAAO,YAAY+L,MAG7C/O,IAAAA,cAAA,OAAK2K,IAAK6E,GACNxP,IAAAA,cAAA,WAAM+O,IACY,QAAjB4F,EAAA3S,KAAKzB,MAAM6O,cAAM,IAAAuF,GAAW,QAAXA,EAAjBA,EAAmBpF,iBAAS,IAAAoF,OAAA,EAA5BA,EAA8BE,SAASrF,EAAmBnJ,cACvDrG,IAAAA,cAAC8U,EAAAA,MAAK,CAAC1R,MAAM,SAAS2R,WAAS,eAAa/S,KAAK8M,oBAAoBC,IACjE/O,IAAAA,cAAA,OAAKC,UAAU,oBAAmB,cAAa,QAC3CD,IAAAA,cAAA,QAAMC,UAAU,6BAChBD,IAAAA,cAAA,YAAOgC,KAAK8M,oBAAoBC,MAI5C/O,IAAAA,cAAC4L,EAAQ,CACLI,WAAYwD,EACZnD,aAAcrK,KAAKiQ,iBAAiBzC,EAAoB5N,GACxDwK,aAAcA,EACd1J,SAAUV,KAAKwO,sBAEjB,GAGlB,CA2LQsD,aAAakB,GACjB,MACIpQ,SACIqQ,kBAAkB,eACdC,EAAc,aAGdC,KAGRnT,KAAKjC,MAET,OAAOmV,EAAeF,EAAMI,QAAQ,GAAID,EAC5C,OCpaG,MAAMpR,EAAehE,IACxB,MAAM,SACFW,EACAkE,SACIJ,eACIoO,gBAAgB,YAAElO,IAEtBD,SAAS,aAAEoO,GACXoC,kBAAkB,eACdC,EAAc,aAGdC,IAEP,aACDvL,EAAY,oBACZH,EAAmB,sBACnBI,EACAjI,WAAW,wBAAEyT,GAAyB,cACtC/L,GACAvJ,EAEJ,OACIC,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,KAAGC,UAAU,gDAA+C,YAAW,aAClE4J,KAEJ9J,EAAM2J,WACP1J,IAAAA,cAAA,OAAKC,UAAU,0CACVS,EAAS8J,KAAI,CAACzF,EAA8BuQ,KAAiB,IAAAC,EAAA9C,EAAA+C,EAC1D,MAAM,MAAEtF,EAAK,OAAEwD,EAAM,KAAE7I,EAAI,gBAAE0I,GAAoBxO,EAC3CiQ,EAAQE,EAAehF,EAAMkF,QAAQ,GAAID,GACzCM,EAAyE,QAAvDF,GAAGG,EAAAA,EAAAA,kBAAiBnC,QAAAA,EAAmB,GAAI7O,UAAY,IAAA6Q,EAAAA,EAAI,GAC7EI,EAA2G,QAAhGlD,GAAGgB,EAAAA,EAAAA,qBAAoBC,EAAQhP,EAAsC,QAA3B8Q,EAAEzV,EAAM6E,QAAQH,QAAQkP,WAAG,IAAA6B,GAAQ,QAARA,EAAzBA,EAA2B3O,cAAM,IAAA2O,OAAA,EAAjCA,EAAmC5B,yBAAiB,IAAAnB,EAAAA,EAAI,GAErH,OACIzS,IAAAA,cAAA,OAAK2K,IAAK,WAAW2K,IAASrV,UAAU,qCACpCD,IAAAA,cAAA,OAAKC,UAAU,8DACXD,IAAAA,cAACoT,EAAAA,GAAK,CACFC,QAASxI,QAAAA,EAAQ,QACjB+H,eAAgB7S,EAAM6E,QAAQJ,cAAcoO,eAC5CU,IAAKmC,EACLjC,YAAamC,EACb1V,UAAU,YACV4S,aAAcA,EACdvJ,cAAeA,EACfuK,oBAAoB,UAExB7T,IAAAA,cAAA,OAAKC,UAAU,gDAA+C,YAAW,UACrED,IAAAA,cAAA,OAAKC,UAAU,yCAAyCyT,GACvDjK,EAAoBoB,QAAAA,EAAQ,MAGrC7K,IAAAA,cAAA,OAAKC,UAAU,sDACXD,IAAAA,cAAA,YAAOgV,GACPhV,IAAAA,cAAC4V,EAAmB,CAAC7Q,QAASA,EAAS8Q,WAAYR,EAAyBzL,aAAcA,KAE5F,KAInB,EAULgM,EAAuB7V,IACzB,MAAOmP,EAAQ4G,IAAWC,EAAAA,EAAAA,WAAS,IAC7B,QAAEhR,EAAO,WAAE8Q,EAAU,aAAEjM,GAAiB7J,EACxCiW,EAAkBhW,IAAAA,aAAkBuE,UACtCuR,GAAS5G,SACHtF,EAAa7E,GACnB+Q,GAAS5G,EAAO,GACjB,CAACtF,EAAcsF,EAAQnK,IAE1B,OACI/E,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAWkU,IAAW,mDAAoD,CAAE,UAAWjF,IAAS,aACpF,GAAGnK,EAAQ8F,QAASgL,IAChC1M,QAAS6M,GAERH,EACI,wBCrDjB,MAAMw9B,EAA4BtzC,GAAsC,KACpEye,EAAqBze,EAAM,EAGlBuzC,EAA4BvzC,IACrC,MAAM,UAAE6B,EAAS,oCAAE6E,GAAwC1G,GACrD,yBAAEge,GAA6Bnc,EAErC,MAAO,CACHoc,iBAAkBC,EAAiCle,GACnDme,gBAAiBzX,GAAuC0X,EAA+Bpe,GACvFqe,gBAAiB3X,GACbzG,EAAAA,cAACkU,EAAAA,OAAM,CAACjU,UAAU,uDAAuDkJ,QAASkqC,EAAyBtzC,IACtGge,GAGTO,mBAAoB7X,GAAuCzG,EAAAA,cAACue,EAAkBvV,OAAAC,OAAA,GAAKlJ,IACtF,EAGCye,EAAwBze,IAC1B,MACIqX,MAAM,cAAE4F,GAAe,SACvBvF,GACA1X,GACE,iBAAE0e,GAAqBhH,EAEzBgH,GACAA,EAAiBzB,EAAcC,YAAYC,GAAI,EAIjDe,EAAoCle,IACtC,MACIqX,MAAM,cAAE4F,GAAe,SACvBvC,EAAQ,GACRhY,EAAE,QACFmC,EAAO,iBACP8C,EAAgB,UAChB9F,EAAS,oCACT6E,GACA1G,GACE,2BACFgnB,EAA0B,sBAC1BC,EAAqB,wBACrBC,EAAuB,wBACvBC,EAAuB,wBACvBC,EAAuB,0BACvBC,EAAyB,gCACzBC,GACAzlB,EAEE0d,EAAgB,CAClB0H,wBACAC,0BACAC,0BACAC,0BACAC,4BACAC,mCAGJ,OACIrnB,EAAAA,cAAC6xC,EAAAA,gCAA+B,CAC5BjtC,QAASA,EACTnC,GAAIA,EACJgY,SAAUA,EACVrD,KAAM,CAAE4F,iBACR/c,UAAU,GACV25B,cAAe7S,EACfzH,cAAeA,EACf5X,iBAAkBA,EAClBjB,oCAAqCA,GACvC,EAIJ0X,EAAkCpe,IACpC,MAAM,iCAAEkuB,EAAgC,UAAErsB,EAAS,QAAEgD,EAAO,SAAE6S,GAAa1X,EAC3E,OACIC,EAAAA,cAACowB,EAAAA,6BAA4B,CACzBpC,iBAAkBvW,EAASuW,iBAC3B/tB,UAAU,iCACV2E,QAASA,EACTnC,GAAI1C,EAAM0C,GACV2U,KAAM,CAAE4F,cAAejd,EAAMqX,KAAK4F,cAAcC,aAChDxC,SAAU1a,EAAM0a,SAChBwT,iCAAkCA,EAClCU,8BAA+B/sB,EAAUksB,yBACzCrnB,qCAAmC,GACrC,EAIV,IAAI8sC,EACG,MAAMh1B,EAA4Dxe,IACrE,MAAOyzC,EAAqCC,IAA0C19B,EAAAA,EAAAA,WAAS,IACxF29B,EAA+BtiB,GAAkCpxB,EAAAA,UAAe,GAYjF2zC,EAAoBA,KACtBF,GAAwCD,EAAoC,GAG5Ep8B,MAAM,cAAE4F,GAAe,UACvBpb,EAAS,iCACTqsB,EAAgC,QAChCrpB,GACA7E,EAEEE,EAAY,+BAEZ2zC,EAAmB5zC,EAAAA,YACnBioB,EACFjoB,EAAAA,cAACuxB,EAAAA,wBAAuB,CACpBsiB,sBAAuB72B,EAAcC,YACrCuU,gBAAc,EACdvxB,UAAU,iCACVuf,UAAWk0B,EACX5sB,aAAcsK,EACdxsB,QAASA,EACTnC,GAAI1C,EAAM0C,GACV2U,KAAMrX,EAAMqX,KACZoe,kBAAmBz1B,EAAMqX,KAAK4F,cAAcC,YAAYpS,KACxD4P,SAAU1a,EAAM0a,SAChB6E,cAAe2O,EACfyD,SApC0BoiB,KAAK,IAAAC,EACnCnvC,EAAQQ,UAAU+e,MAAM,oCACJ,QAApB4vB,EAAAR,SAAoB,IAAAQ,GAApBA,EAAsBjsC,OAAO,EAmCzB6pB,UAAW5xB,EAAM0X,SAASuW,mBAG5BgmB,EAAiC,iCAAiCC,EAAAA,OAAOC,KAAKC,iBAEpF,OACIn0C,EAAAA,cAAA,OAAKC,UAAW,GAAGA,eACdgoB,EACDjoB,EAAAA,cAACkU,EAAAA,OAAM,CACHjU,UACIuzC,EACM,GAAGvzC,wCACH,GAAGA,0CAEbkJ,QAASwqC,EACTS,SAAUR,EAAgB,gBACZ,OAAM,gBACLJ,EACf/wC,GAAIuxC,GAEJh0C,EAAAA,cAAA,QAAMC,UAAW,GAAGA,4CAAqD,YAE7ED,EAAAA,cAACq0C,EAAAA,QAAO,mBACaL,EACjB/zC,UAAW,GAAGA,+CACdO,OAAQgzC,EACRc,UAAU,SACVjwC,OAAQuvC,EACR/qC,OAAQ8qC,EACRzxC,KAAK,UAAS,eACAsxC,GAEdxzC,EAAAA,cAACkU,EAAAA,OAAM,CAACjU,UAAW,GAAGA,qDAA8DkJ,QAhEnE9F,IACzBkwC,EAAuBlwC,EAAMgB,OAC7B+sB,GAA+B,GAC/B/tB,EAAMC,gBAAgB,GA8DT1B,EAAUksB,0BAGf9tB,EAAAA,cAACkU,EAAAA,OAAM,CACH/K,QAASkqC,EAAyBtzC,GAClCE,UAAW,GAAGA,qDACdiC,KAAK,UAEJ,WAGP,EC/IRoV,EAA4BvX,IAC9B,MAAM,kBAAEwX,EAAiB,gBAAEC,EAAe,SAAE1Q,EAAQ,SAAE2Q,GAAa1X,GAC7D,OAAE2X,EAAM,UAAExM,GAAcsM,GACxB,WAAEG,EAAU,aAAEC,GAAiBH,EAErC,MAAO,CACHI,YAAaA,IAAOxU,IAChBqU,GACIH,EAAkBO,aAClBH,EAAWJ,EAAkBO,YAAYC,eAAgBjR,EAAU4Q,EAAQxM,EAAU,EAE7F8M,cAAeA,IAAO3U,GAAyCqU,GAAUE,EAAa7X,EAAMwX,mBAC/F,EAQCU,EAASlY,IACX,MAAM,mBAAEmY,EAAkB,iCAAEC,EAAgC,eAAEC,EAAc,uBAAEC,GAA2BtY,EAAM6B,WACxG0W,EAAYC,IAAiBxC,EAAAA,EAAAA,WAAS,GAOvClN,EAAS7I,IAAAA,aAAkB,KAC7BuY,GAAeD,EAAW,GAC3B,CAACA,IAEJ,OACItY,IAAAA,cAAA,OAAKC,UAAW,gCACZD,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAW,6BAAyC,aACxCmY,EAAc,YACfrY,EAAMuV,MACjBnM,QAASN,IAEZyP,GACGtY,IAAAA,cAAA,OAAKC,UAAW,uBACZD,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAU,2BACVkJ,QApBU9F,IAC1BtD,EAAMyY,uBAAuBzY,EAAM,EAoBnB+N,MAAOuK,EAAsB,aACjBA,GAAsB,QAIrCI,EACG1Y,EAAM2Y,SACN3Y,EAAM4Y,sBACNR,EACAb,EAAyBvX,GAAOiY,iBAEnCS,EACG1Y,EAAM2Y,SACN3Y,EAAM6Y,mBACNV,EACAZ,EAAyBvX,GAAO8X,gBAI1C,EAIRY,EAAkBA,CACpBC,EACAzY,EACA4V,EACAjM,IAEA5J,IAAAA,cAACkU,EAAAA,OAAM,cAAa2B,EAAY5V,UAAWA,EAAWkJ,QAASS,EAAckE,MAAO+H,GAC/E6C,EAAW7C,EAAa,IAI3BgD,EAAyBA,CAC3B5Y,EACA4V,EACAjM,IAEA5J,IAAAA,cAACkU,EAAAA,OAAM,cAAa2B,EAAY5V,UAAWA,EAAWkJ,QAASS,EAAckE,MAAO+H,GAC/EA,GASHiD,EAAsBA,CAACvB,EAAgD5Q,IACzEtD,IAEAkU,EAAkBwB,WAAaxB,EAAkBwB,UAEjDpS,EAAM8Q,SAASuB,SAASzB,EAAmBlU,EAAMgB,OAAO4U,QAAQ,EAGvD+W,EAAyBrpB,IAAsE,IAAA2oB,EACxG,MAAM,kBACF/X,EAAiB,gBACjBC,EAAe,MACfxC,EAAK,QACLpQ,EAAO,cACP0E,EAAa,SACbxC,EAAQ,UACRlF,EAAS,SACT8W,EAAQ,oCACRjS,GACAE,EACE5B,EAAUwS,EAAkBO,aAC5B,OAAEJ,EAAM,cAAE0O,GAAkB5O,GAC5B,iCAAEW,EAAgC,mBAAED,EAAkB,iBAAE4W,GAAqBltB,EACnF,IAAKmD,EACD,OAAO,KAGX,MAAM,OAAE2O,EAAM,gBAAEH,GAAoBxO,EAAQgT,eACtC+B,GAAgBrG,EAAAA,EAAAA,qBAClBC,EACA9O,EAAQJ,cAAcoO,eAAelO,YAClB,QAD6B4qB,EAChD1qB,EAAQH,QAAQkP,WAAG,IAAA2b,GAAQ,QAARA,EAAnBA,EAAqBzoB,cAAM,IAAAyoB,OAAA,EAA3BA,EAA6B1b,kBAE3BgF,EAAqBjS,EAAM+R,SAAW,0BAA4B,mDAClEC,EAAwBhS,EAAM+R,SAAW,6BAA+B,sDAE9E,MAAO,CACHA,WACAjS,oCAAqCA,EACrC8oB,WACIvvB,IAAAA,cAAA,SAAOC,UAAU,sBACbD,IAAAA,cAAA,sBACgB8uB,EACZ7uB,UAAU,iBACV4C,KAAK,WACLoW,QAAS1B,EAAkBwB,UAAS,eACtBxB,EAAkBwB,UAChCrW,SAAUoW,EAAoBvB,EAAmB5Q,KAErD3G,IAAAA,cAAA,QAAMC,UAAU,eAGxB0K,IAAK+M,EACL8X,mBAAoB/oB,GAAuCwT,EAAqBtT,GAChFylB,aAAczS,EACV,8CACA/U,EACAG,EAAQgT,eAAelN,KACvB0I,EACAuG,EACAxQ,GAEJmmB,YAAa3U,GAAkBnU,GAC/B8K,aAAcuD,GAASqF,EAAa1T,GACpCmmB,cAAe/nB,GACX/E,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,OAAKC,UAAU,gDAAgDyT,GAC9C,SAAhB/M,EAAM1C,MACHjE,IAAAA,cAAA,OAAKC,UAAU,sDAAsD4a,GAAoBlU,SAEzF1B,GAIZyqB,qBAAsB1a,EAClBhV,IAAAA,cAAA,OAAKC,UAAU,yDAAyDmmB,GAAiBpR,EAAMoR,oBAE/FnhB,EAEJiX,cAAexE,EACfiY,cACKlpB,GACDgS,EACI9R,EAAM+R,SACNC,EACAR,EACAb,EAAyB3Q,GAAOqR,iBAExC4X,oBAAqB5vB,IAAAA,cAAA,WAAMyZ,EAAkB9S,EAAO+Q,IACpDuV,gBAAiBnmB,EACjB+oB,gBACKppB,GACDgS,EAAgB9R,EAAM+R,SAAUE,EAAoBV,EAAoBZ,EAAyB3Q,GAAOkR,eAC5GiY,mBACKpX,GAAYjS,EACTzG,IAAAA,cAACkZ,EAAiBlQ,OAAAC,OAAA,GAAKtC,EAAK,CAAEiS,mBAAoBA,EAAoBD,sBAAuBA,UAE7F1T,EAER8qB,MAAO/vB,IAAAA,cAACiY,EAAKjP,OAAAC,OAAA,GAAKtC,EAAK,CAAEiS,mBAAoBA,EAAoBD,sBAAuBA,KACxFrL,SAAU3G,EAAM6P,cACnB,EAGC0C,EAAqBnZ,IACvB,MAAOoZ,EAAaC,IAAkBrD,EAAAA,EAAAA,WAAS,GACzClN,EAAS7I,IAAAA,aAAkB,KAC7BoZ,GAAgBD,EAAY,GAC7B,CAACA,IAEElZ,EAAY,mDACZoZ,EAA4B,GAAGpZ,uBACrC,OACID,IAAAA,cAAA,OAAKC,UAAWA,GACZD,IAAAA,cAACkU,EAAAA,OAAM,CAACjU,UAAW,GAAGA,YAAmB,aAAc,GAAIkJ,QAASN,IACnEsQ,GACGnZ,IAAAA,cAAA,OAAKC,UAAWoZ,GACXR,EACG,qDACA,aACAvB,EAAyBvX,GAAO8X,eAEnCgB,EACG,wDACA,cACAvB,EAAyBvX,GAAOiY,kBAI1C,EAIDiJ,EAA+Bta,IAA2E,IAAA4tC,EACnH,MAAM,kBAAEh9B,EAAiB,gBAAEC,EAAe,MAAExC,EAAK,QAAEpQ,EAAO,cAAE0E,EAAa,oCAAE7C,GAAwCE,EAC7G5B,EAAUwS,EAAkBO,aAC5B,OAAEJ,EAAM,cAAE0O,GAAkB5O,EAClC,IAAKzS,EACD,OAEJ,MAAM,OAAE2O,EAAM,gBAAEH,GAAoBxO,EAAQgT,eACtC+B,GAAgBrG,EAAAA,EAAAA,qBAClBC,EACA9O,EAAQJ,cAAcoO,eAAelO,YAClB,QAD6B6vC,EAChD3vC,EAAQH,QAAQkP,WAAG,IAAA4gC,GAAQ,QAARA,EAAnBA,EAAqB1tC,cAAM,IAAA0tC,OAAA,EAA3BA,EAA6B3gC,kBAGjC,MAAO,CACH4b,mBAAoB/oB,GAAuCwT,EAAqBtT,GAChFylB,aAAczS,EACV,YACA/U,EACAG,EAAQgT,eAAelN,KACvB0I,EACAuG,EACAxQ,GAEJmmB,YAAa3U,GAAkBnU,GAC/B8K,aAAcuD,GAASqF,EAAa1T,GACpCmmB,cAAepZ,EACfgc,qBAAsBtJ,IAAiBpR,aAAK,EAALA,EAAOoR,eAC9CwJ,oBAAqBnW,EAAkB9S,EAAO+Q,GACjD,EAeC4B,EAAkBA,CACpBC,EACAC,EACAzZ,IACEiQ,IACEuJ,GACAA,EAAiBC,EAASxJ,EAAUjQ,EAAO,EAI7C0Z,EAAoBA,CAAC1Z,EAAgCyZ,KACvD,MAAM,SAAE/B,EAAQ,UAAE7V,EAAS,SAAEkF,GAAa/G,GACpC,iBAAEwZ,GAAqB9B,EAC7B,OACIzX,IAAAA,cAACuM,EAAqB,CAClBO,aAAchG,EACdpE,SAAU4W,EAAgBC,EAAkBC,EAASzZ,GACrDyN,IAAK,UACLW,uBAAwBvM,EAAUuM,uBAClCC,yBAA0BxM,EAAUwM,yBACpCL,yBAA0BnM,EAAUmM,yBACpCT,SAAUvN,EAAM2Z,6BAClB,EAIGC,EAAsBA,CAC/B1Z,EACA2E,EACAgV,EACAC,EACAC,EACAxQ,KACoB,IAAAyQ,EAAAC,EAUpB,OACIha,IAAAA,cAACoT,EAAAA,GAAK,CACFR,eAAgBhO,SAAsB,QAAfmV,EAAPnV,EAASJ,qBAAa,IAAAuV,OAAA,EAAtBA,EAAwBnH,eACxC3S,UAAWA,EACXoT,QAASuG,EACT9L,MAAO8L,EACPtG,IAAKuG,EACLrG,YAAasG,EACbjH,aAAcjO,SAAgB,QAAToV,EAAPpV,EAASH,eAAO,IAAAuV,OAAA,EAAhBA,EAAkBnH,aAChCvJ,cAAeA,GAlBsB,CACzCrI,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCC,GAAI,CAAEH,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCE,GAAI,CAAEJ,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,IAEvCG,UAAU,GAaNqS,oBAAoB,QACpB7F,SAAU,GACZ,EAIGiM,EAAwBla,IACjC,MAAM2G,EAAY3G,EAAMyX,gBAAgBtM,UAGxC,IAFAX,EAAAA,EAAAA,mBAAkB7D,IAEb3G,EAAM6E,QAAQH,QAAQyV,KAAKC,QAAUzT,IAAcpE,EAAAA,gBAAgBC,YAAYxC,EAAMsK,UACtF,OAAO,KAGX,MAAM+P,EAAUra,EAAMsK,SAASkG,MAAKjE,GAAQA,EAAKtH,WAAa0B,IAE9D,OAAK0T,GAAYA,EAAQvP,KAIlB7K,IAAAA,cAAA,OAAKC,UAAU,gCAAgCma,EAAQvP,MAHnD,IAG8D,EAGvEwP,EAAgBta,IAClB,MAAM,MAAEiV,EAAK,QAAEpQ,EAAO,SAAE0V,EAAQ,eAAEC,EAAc,UAAE3Y,GAAc7B,EAEhE,OAAIiV,EAEIhV,IAAAA,cAACwa,EAAAA,eAAc,CACX/X,GAAI6X,EACJG,SAAUF,EACVnD,KAAM,CAAEpC,SACR/U,UAAU,8CACVya,cAAe9Y,EAAU8Y,cACzBC,kBAAmB/Y,EAAU+Y,kBAC7BC,iBAAkBhZ,EAAUgZ,iBAC5BhW,QAASA,IAId,IAAI,EAmBTiW,GAAuB9a,IACzB,MAAM,MAAEkE,EAAK,UAAErC,GAAc7B,EAE7B,IAAKkE,EACD,MAAO,GASX,MANsB,CAClBuwC,IAAK5yC,EAAUwtB,8BACfqlB,WAAY7yC,EAAUutB,+BACtBulB,KAAM,IAGWzwC,EAAM,EAGlB6W,GAAqB/a,IAA+D,IAAAgb,EAC7F,MAAM,kBAAExD,EAAiB,WAAEyD,GAAejb,EACpCkC,EAAoC,QAAhC8Y,EAAGxD,EAAkBO,mBAAW,IAAAiD,OAAA,EAA7BA,EAA+BhD,eAAelN,KAErDtF,EApCwBxF,KAC9B,MAAM,kBAAEwX,GAAsBxX,EAE9B,OAAKwX,EAAkBO,aAAgBP,EAAkBO,YAAYC,eAAekD,WAI7E1D,EAAkBO,YAAYC,eAAekD,WAAWzQ,KAAI+E,IAC/D,GAAKA,EAAUuB,gBAAmBvB,EAAUuB,eAAeyD,MAI3D,OAAOhF,EAAUuB,eAAeyD,KAAK,IAR9B,EAST,EAuBiB2G,CAAyBnb,GAC5C,IAAKwX,EAAkBO,YACnB,MAAO,GAGX,MAAMqD,EAAcH,EAChBhb,IAAAA,cAAA,KAAGC,UAAU,kDAAkDmb,KAAMJ,GAChE/Y,GAGLjC,IAAAA,cAAA,OAAKC,UAAU,mDAAmDgC,GAGhEoZ,EAAyB9V,EAAWmP,KAAK,MAE/C,OACI1U,IAAAA,cAAA,OAAKC,UAAU,8CACXD,IAAAA,cAAA,OAAKC,UAAU,mDAAmDkb,GAClEnb,IAAAA,cAAA,OAAKC,UAAU,wDAAwDob,GACrE,ECrfDoP,GAAmFoQ,IAAmC,IAAlC,UAAE56B,EAAS,UAAEyqB,EAAS,KAAE1C,GAAM6S,EAC3H,OAAQnQ,GACJ,IAAK,QACD,OAAO1qB,EAAAA,cAAA,KAAGC,UAAWkU,IAAW,yCAA0ClU,IAAa+nB,GAC3F,IAAK,SACD,OAAOhoB,EAAAA,cAAA,KAAGC,UAAWkU,IAAW,0CAA2ClU,IAAa+nB,GAE5F,QACI,OAAOhoB,EAAAA,cAAA,KAAGC,UAAU,4CAA4C+nB,GAAU,iOCgB/E,MAAMmF,WAAkCntB,EAAAA,cAA/CK,cAAA,oBACW,KAAAE,MAAyC,CAC5CwY,WAAW,GAGE,KAAA47B,mBAA6B,WAYvC,KAAAC,YAAc,IAAOvxC,IACxBrB,KAAKwB,SACD,CACIuV,UAAW/W,KAAKzB,MAAMwY,YAE1B,KACI/W,KAAKjC,MAAM6J,cAAc5H,KAAKzB,MAAMwY,UAAU,GAErD,CAkCT,CApDWnC,gCACH7W,EACAQ,GAEA,MAAMs0C,EAAe90C,EAAMgc,MAAMtM,QAAO8G,IAASA,EAAKwC,YAAWlV,OACjE,IAAI0E,yWAASK,CAAA,GAAQrI,GAErB,OADAgI,EAAY,CAAEwQ,UAA4B,IAAjB87B,GAClBtsC,CACX,CAaOC,SACH,OACIxI,EAAAA,cAAA,aACIA,EAAAA,cAAA,MAAIC,UAAW,GAAG+B,KAAK2yC,mCACnB30C,EAAAA,cAAA,MAAI80C,MAAM,MAAK,aAAa9yC,KAAKjC,MAAM4sB,mBACnC3sB,EAAAA,cAAA,SAAOC,UAAU,sBACbD,EAAAA,cAAA,sBACgBgC,KAAKjC,MAAM4sB,kBACvB1sB,UAAU,iBACV4C,KAAK,WAAU,eACDb,KAAKzB,MAAMwY,UACzBE,QAASjX,KAAKzB,MAAMwY,UACpBrW,SAAUV,KAAK4yC,gBAEnB50C,EAAAA,cAAA,QAAMC,UAAU,iBAGtB+B,KAAKjC,MAAM2Y,UAAY1W,KAAKjC,MAAM0G,oCAChCzG,EAAAA,cAAA,MAAI80C,MAAM,OAAO9yC,KAAKjC,MAAM6sB,wBAC5B,KACF5qB,KAAKjC,MAAM2Y,SAA4D,KAAjD1Y,EAAAA,cAAA,MAAI80C,MAAM,OAAO9yC,KAAKjC,MAAMqsB,cACpDpsB,EAAAA,cAAA,MAAI80C,MAAM,OAAO9yC,KAAKjC,MAAM+sB,eAC1B9qB,KAAKjC,MAAM2Y,SAA2D,KAAhD1Y,EAAAA,cAAA,MAAI80C,MAAM,OAAO9yC,KAAKjC,MAAMob,aAClDnZ,KAAKjC,MAAM2Y,SAAgE,KAArD1Y,EAAAA,cAAA,MAAI80C,MAAM,OAAO9yC,KAAKjC,MAAMgtB,kBAClD/qB,KAAKjC,MAAM2Y,SAA0D,KAA/C1Y,EAAAA,cAAA,MAAI80C,MAAM,OAAO9yC,KAAKjC,MAAMitB,YAClDhrB,KAAKjC,MAAM2Y,SAA+D,KAApD1Y,EAAAA,cAAA,MAAI80C,MAAM,OAAO9yC,KAAKjC,MAAMktB,iBAClDjrB,KAAKjC,MAAM2Y,SAA8D1Y,EAAAA,cAAA,WAAnDA,EAAAA,cAAA,MAAI80C,MAAM,OAAO9yC,KAAKjC,MAAMmtB,iBAIpE,y3BC6BJ,IAAM5R,EAAN,cAAiCtb,EAAAA,UAY7BK,YAAYN,EAAgDQ,GACxDD,MAAMP,GAqRO,KAAAwb,yCAA2C,KACxD,IAAI9U,GAAsC,EACP,IAAD+U,EAA9BxZ,KAAKjC,MAAMqX,KAAKqE,eAChBhV,GACuC,QAAnC+U,EAAAxZ,KAAKjC,MAAMqX,KAAKqE,aAAa7X,cAAM,IAAA4X,GAElC,QAFkCA,EAAnCA,EAAqCjL,MACjCmL,GAA4B,2DAAjBA,EAAQ7Q,cACtB,IAAA2Q,OAAA,EAFDA,EAEGG,aAAa,GAExB,OAAOlV,CAAmC,EAG7B,KAAAmV,mBAAqB,KAClC,MAAM,QAAEhX,EAAO,UAAEhD,GAAcI,KAAKjC,OAC9B,UAAEqF,GAAcR,GAChB,6BAAEiX,EAA4B,6BAAEC,GAAiCla,EACjEma,EAAQ/Z,KAAKzB,MAAMyb,iBACnBC,EAAmBF,GAASA,EAAMlY,QAAUkY,EAAMtM,QAAO8G,GAAQA,EAAKwC,YAAWvO,KAAI+L,GAAQA,EAAKiB,kBAExG,GAAIyE,GAAoBA,EAAiBpY,OAAS,EAAG,CACjD,MAAMqY,EAAgBD,EAAiB,GAAGtM,cAEpCwM,EAAoC,KAC1CC,EAAAA,EAAAA,6BAA4B,CAAE9Q,cAAe1G,EAAQJ,eAAiB0X,EAAgBD,GACjFtY,MAAKY,UACFvC,KAAKwB,SAAS,CACV6Y,YAAaP,EACbQ,gBAAiB,UACjBC,aAAc,eACd/b,QAAQ,UAGN,IAAI6E,SAAQC,GAAWkX,WAAWlX,EAAS6W,KACjDjV,OAAOC,SAASC,QAAQ,IAE3BpD,OAAMC,IACHmB,EAAUqX,QAAQ,4EAClBrX,EAAUnB,MAAMA,GAChBjC,KAAKwB,SAAS,CACV6Y,YAAaR,EACbS,gBAAiB,UACjBC,aAAc,eACd/b,QAAQ,GACV,GACH,GAIE,KAAAkc,yBAA2B,KAAa,IAAAC,EACrD,IAAIC,GAAMC,EAAAA,EAAAA,IAAW,gBAAiB7a,KAAKjC,MAAM6E,QAAQJ,gBAAkB,GAE3E,OADAoY,EAAMA,EAAI/H,SAAS,KAAO+H,EAAIE,OAAO,EAAGF,EAAIG,QAAQ,MAAQH,EAC3B,QAAjCD,EAAI3a,KAAKjC,MAAMqX,KAAK4F,qBAAa,IAAAL,GAAQ,QAARA,EAA7BA,EAA+B/Y,cAAM,IAAA+Y,GAArCA,EAAuCM,YAAYC,GAC5C,GAAGN,QAAU5a,KAAKjC,MAAMqX,KAAK4F,cAAcpZ,OAAOqZ,YAAYC,KAElE,EAAE,EAGI,KAAAC,qBAAuB5Y,UACpC,MACM8R,EADQrU,KAAKzB,MAAMyb,iBACGvM,QAAO8G,GAAQA,EAAKwC,YAChD,GAAI1C,EAAcxS,OAAS,EACvB,IAAK,MAAMuZ,KAAe/G,EAAe,CAAC,IAADgH,EAAAC,EAAAC,EAAAC,EAAAC,EACrC,MAAMjE,EAAwD,QAAjD6D,EAA0B,QAA1BC,EAAGF,EAAYtF,mBAAW,IAAAwF,OAAA,EAAvBA,EAAyBvF,eAAerE,cAAM,IAAA2J,EAAAA,EAAI,GAC5DtY,EAAiD,QAA1CwY,EAA0B,QAA1BC,EAAGJ,EAAYtF,mBAAW,IAAA0F,OAAA,EAAvBA,EAAyBzF,sBAAc,IAAAwF,EAAAA,EAAI,CACvDvY,SAAU,EACV0Y,iBAAkB,EAClB7L,UAAW,EACX3B,MAAO,EACPyN,cAAe,GAEb7W,EAA+C,QAAvC2W,EAAGL,EAAY5F,gBAAgBoG,gBAAQ,IAAAH,EAAAA,EAAI,EACzD,GAAIzb,KAAKuZ,2CAA4C,CACjD,MAAM7U,EAAY0W,EAAY5F,gBAAgBtM,gBACxClJ,KAAK6b,cAAc9Y,EAAS+B,EAAU0S,EAAS9S,EAAW,YAE1D1E,KAAK6b,cAAc9Y,EAAS+B,EAAU0S,EAAQ,CAIhE,OAAOnU,QAAQC,aAAQ,EAAO,EA2DjB,KAAAoZ,eAAkBC,GAC3BC,EAAAA,GAASC,UACF,IAAIC,IAAI5X,OAAOC,SAASiU,MAE5B,IAAI0D,IAAIH,EAAW/B,IAAImC,WAAW3D,MAM5B,KAAA4D,eAAiB,KAC9Bhd,KAAKwB,SAAS,CACVgW,QAASxX,KAAKzB,MAAMiZ,QACpB6C,YAAara,KAAKzB,MAAM8b,YACxBC,gBAAiBta,KAAKzB,MAAM+b,gBAC5BC,aAAcva,KAAKzB,MAAMgc,aACzB/b,OAAQwB,KAAKzB,MAAMC,OACnBye,gCAAgC,GAClC,EAGW,KAAAC,6BAA+B,KAA6B,IAAAC,EACzE,IAAKnd,KAAKzB,MAAM6e,0BACZ,OAAO,KAEX,MAAM3Y,GAC0B,QAA5B0Y,EAAAnd,KAAKjC,MAAMqX,KAAKqE,oBAAY,IAAA0D,GAAQ,QAARA,EAA5BA,EAA8Bvb,cAAM,IAAAub,GAA4F,QAA5FA,EAApCA,EAAsC5O,MAAKmL,GAA4B,2DAAjBA,EAAQ7Q,cAAkE,IAAAsU,OAAA,EAAhIA,EACMxD,aAAa,EAEvB,OACI3b,EAAAA,cAACqf,EAAAA,sBAAqB,CAClBpf,UAAU,gCACVwC,GAAIT,KAAKjC,MAAM0C,GACfgY,SAAUzY,KAAKjC,MAAM0a,SACrB7V,QAAS5C,KAAKjC,MAAM6E,QACpB0a,cAAetd,KAAKud,0CACpBnI,KAAMpV,KAAKzB,MAAM6e,0BACjBI,UAAWxd,KAAKzB,MAAM0e,+BACtBQ,QAASzd,KAAKgd,eACdvY,oCAAqCA,GACvC,EAaO,KAAAiZ,kBAAoB,KACjC,MAAM,OAAE7Y,EAAM,QAAEjC,EAAO,KAAEwS,EAAI,UAAExV,GAAcI,KAAKjC,MAC5Cid,EAAgB5F,GAAQA,EAAK4F,eAAiB5F,EAAK4F,cAAcpZ,OACvE,IAAKoZ,EACD,OAAO,KAGX,MAAM2C,EAAU3d,KAAK0c,eAAe9Z,EAAQH,SACtCmb,EAAe/Y,EAAO+Y,cAAgB,GAEtCC,EADoB7d,KAAK8d,wBACOF,EAChCG,EAAa/C,GAAiBA,EAAcgD,WAC5CC,EAAere,EAAUse,gBACzBC,EAAWve,EAAUwe,YAE3B,OAAIL,GAAcH,EACP,KAIP5f,EAAAA,cAACqgB,EAAAA,uBAAsB,CACnBpgB,UAAW,GAAG+B,KAAK/B,wBACnBiC,KAAK,aAAY,aACLN,EAAU0e,oBACtB1D,IAAK+C,EAAQvE,KACbmF,IAAI,OACJC,MAAOT,EACPH,aAAcA,EACda,aAAcZ,EACdI,aAAcje,KAAK0e,YAAYT,GAC/BE,SAAUne,KAAK2e,YAAYR,GAC3BS,kBAAmBX,EACnBY,cAAeV,GACjB,EAkFO,KAAAW,wBAA2B/gB,IACxC,IAAIQ,EAAQ,CACRwgB,oBAAqB/e,KAAKzB,MAAMwgB,oBAEhChhB,IACAQ,EAAKqI,EAAAA,EAAA,GACErI,GACA,CACCygB,qBAAqBC,EAAAA,EAAAA,6BAA4BlhB,MAI7DiC,KAAKwB,SAASjD,EAAM,EAIP,KAAA2gB,yBAA2B,CACxCC,EACAvc,EACA8B,KAEA,MAAMsU,GAAaoG,EAAAA,EAAAA,mBAAkBD,EAAgBvc,EAAQJ,mBAAeS,GAC5E,IAAKoc,EAAAA,iBAAiBC,mBAAmBtG,SAA6B/V,IAAdyB,EAAyB,CAC7E,MAAM6a,EAAc,IAAIzC,IAAI9D,EAAY9T,OAAOC,SAASiU,MAExD,OADAmG,EAAYC,aAAaC,IAAI,YAAa,GAAG/a,QAAAA,EAAa,KACnD6a,EAAYnG,IAAK,CAG5B,OAAOJ,CAAU,EAIJ,KAAA0G,WAAa,KAC1B1f,KAAKwB,SAAS,CACVhD,QAAQ,GACV,EAGW,KAAAmhB,gBAAkBpd,MAAOiV,EAAiB1S,EAAkB/G,KACzE,MAAM,QAAE6E,EAAO,KAAEwS,EAAI,UAAEhS,EAAS,OAAEyB,EAAM,UAAEjF,GAAcI,KAAKjC,OACvD,cAAEid,GAAkB5F,EAE1B,GAAIxS,GACIoY,SAAAA,EAAepZ,OAAQ,CACvB,MAAMge,EAAyB5E,EAAcpZ,OAAOie,mBACpD,GAAID,EAAwB,CACxB,MAAME,EAAiBF,EAAuBG,WACzChG,GAA6BA,EAAMvE,gBAAgBE,SAAW8B,IAE7DwI,EAAkBpZ,EAAA,GAAQgZ,EAAuBE,IACvD,GAAIF,EAAuBE,GAAgBtK,gBAAgBoG,WAAa9W,EACpE,OAEJ,MAAMmb,EAAeD,EAAmBxK,gBAAgBoG,SACxDoE,EAAmBxK,gBAAgBoG,SAAW9W,EAC9C,MAAM,YAAEgR,GAAyBkK,EAATzL,GAAI2L,EAAAA,EAAAA,GAAKF,EAAkBG,GAG/CpiB,IACAA,EAAM+G,SAAWA,EACjB9E,KAAKwB,SAAS,CACVwd,qBAAqBC,EAAAA,EAAAA,6BAA4BlhB,MAIzDiC,KAAKwB,SAAS,CACVkW,6BAA6B,KAGjC0I,EAAAA,EAAAA,6BAA4B,CAAE9W,cAAe1G,EAAQJ,eAAiBwY,EAAcpZ,OAAOqZ,YAAYC,GAAI,CACvG3G,EAAKiB,kBAEJ7T,MAAK0e,IASF,GARArgB,KAAKwB,SAAS,CACVgW,UACA6C,YAAa,GACbC,gBAAiB,UACjBC,aAAc,eACd7C,6BAA6B,EAC7BlZ,QAAQ,IAER6hB,EAAM,CACN,MAAMC,EAAUD,EAAK9R,MAAKwL,GAASA,EAAMrE,SAAW8B,IACpDoI,EAAuBE,GAAgBtK,gBAAkB8K,EACzD,MAAMC,EAAe,IAAIX,GACzBW,EAAaT,GAAkB,CAAEhK,cAAaN,gBAAiB8K,GAC/D,MAAME,EAAoB5Z,EAAAA,EAAA,GAAQoU,EAAcpZ,QAAM,IAAE6e,iBAAkBF,IAC1E3d,EAAQJ,cAAcke,OAClB,IAAIC,EAAAA,8BAA8B/d,EAAQJ,cAAcoO,eAAgB/L,GACxE2b,EACF,KAGTxe,OAAMC,IACHmB,EAAUqX,QAAQ,6DAClBrX,EAAUnB,MAAMA,GAChB,MAAMoY,EAAcza,EAAUghB,mCAC1B7iB,GACAA,IAAUA,EAAMyX,gBAAgBoG,SAAWqE,GAC3CjgB,KAAKwB,SAAS,CACVgW,UACA6C,cACAC,gBAAiB,SACjBC,aAAc,8BACd7C,6BAA6B,EAC7BlZ,QAAQ,EACRwgB,qBAAqBC,EAAAA,EAAAA,6BAA4BlhB,OAGrDiiB,EAAmBxK,gBAAgBoG,SAAWqE,EAC9CjgB,KAAKwB,SAAS,CACVgW,UACA6C,cACAC,gBAAiB,SACjBC,aAAc,8BACd7C,6BAA6B,EAC7BlZ,QAAQ,IACT,GAER,CAAD,GAML,KAAAqd,cAAgBtZ,MAC7BQ,EACA+B,EACA0S,EACA9S,KAEA,MAAM,QAAE9B,EAAO,KAAEwS,EAAI,UAAExV,EAAS,UAAEwD,GAAcpD,KAAKjC,OAC/C,KAAE8iB,GAASzL,GACX,qBAAE0L,EAAoB,0BAAEC,GAA8BnhB,EAE5D,GAAIgD,GACIie,EAAKjf,OAAQ,CACb,MAAMof,EAAwB,CAC1Bje,UACAke,MAAOnc,EACPJ,mBAGEmc,EAAKjf,OACNsf,iBAAiBF,GACjBrf,MAAMC,IACH,GAAsB,YAAlBA,EAAO8L,OACP,OAAOgC,EAAAA,EAAAA,4BACH,IAAIF,EAAAA,6BACAzM,EAAQC,SACRhD,KAAKjC,MAAM6E,QAAQJ,cAAcoO,eAAelO,YAAYC,UAC5DI,GAEJ/C,KAAKjC,MAAM6E,QAAQJ,eACrBb,MAAKwf,IACH,IAAKA,EACD,OAAOC,EAAAA,GAAYC,OAAO,oCAG9B,MAAMC,EAAsD,iBAAzC1e,EAAQ+O,IAAI9M,OAAO0c,kBAetC,OAdAvhB,KAAKwB,SAAS,CACVgW,UACA6C,YAAa,GACbC,gBAAiB,UACjBC,aAAc,eACd/b,QAAQ,EACRye,gCAAiCqE,EACjClE,0BAA2B,CACvBra,UACA0M,aAAc0R,EACdrc,YAEJia,oBAAoB,IAEjBqC,EAAAA,GAAY9d,SAAS,IAGhC,OAAQ1B,EAAO4f,WACX,IAAK,cACD,GAAI5e,EAAQ+O,IAAI9M,OAAO4c,2BAA4B,CAAC,IAADC,EAAAC,EAC/C,MAAMC,GACS,QAAXF,EAAAb,EAAKjf,cAAM,IAAA8f,OAAA,EAAXA,EAAab,KAAKgB,aACP,QADgBF,EAC3Bd,EAAKjf,cAAM,IAAA+f,GAAsE,QAAtEA,EAAXA,EAAad,KAAKgB,UAAUtT,MAAK3M,GAAUA,EAAOkgB,YAAc/e,EAAQC,kBAAS,IAAA2e,OAAA,EAAjFA,EAAmF/F,UACjFmG,EAAiB,oBAAoBnf,EAAQ+O,IAAI9M,OAAO4c,+DAgB9D,OAfAzhB,KAAKwB,SAAS,CACVgW,UACA6C,iBACyBpX,IAArB2e,GACMd,EACK/c,QAAQ,gBAAiB6d,EAAiBvd,YAC1CN,QACG,gBACAnB,EAAQ+O,IAAI9M,OAAO4c,2BAA2Bpd,aAEtD0d,EACVzH,gBAAiB,SACjBC,aAAc,8BACd/b,QAAQ,IAEL4iB,EAAAA,GAAY9d,SAAU,CAC1B,CACH,MAAMye,EAAiB,yFAQvB,OAPA/hB,KAAKwB,SAAS,CACVgW,UACA6C,YAAa0H,EACbzH,gBAAiB,SACjBC,aAAc,8BACd/b,QAAQ,IAEL4iB,EAAAA,GAAY9d,SAAU,CAErC,IAAK,gBAAkB,IAAD0e,EAQlB,OAPAhiB,KAAKwB,SAAS,CACVgW,UACA6C,aAAgC,QAAnB2H,EAAApgB,EAAOqgB,oBAAY,IAAAD,OAAA,EAAnBA,EAAqBE,mBAAoBnB,EACtDzG,gBAAiB,SACjBC,aAAc,8BACd/b,QAAQ,IAEL4iB,EAAAA,GAAY9d,UAEvB,QASI,OARAF,EAAU+e,MAAM,mFAChBniB,KAAKwB,SAAS,CACVgW,UACA6C,YAAa0G,EACbzG,gBAAiB,SACjBC,aAAc,8BACd/b,QAAQ,IAEL4iB,EAAAA,GAAY9d,UAAS,IAI3CtB,OAAOC,IACJmB,EAAUqX,QAAQxY,EAAMmgB,SACxBhf,EAAU+e,MAAM,yFACZ9C,EAAAA,iBAAiBC,mBAAmBrd,EAAMmgB,SAC1CpiB,KAAKwB,SAAS,CACVgW,UACA6C,YAAapY,EAAMmgB,QACnB9H,gBAAiB,SACjBC,aAAc,8BACd/b,QAAQ,IAGZwB,KAAKwB,SAAS,CACVgW,UACA6C,YAAa0G,EACbzG,gBAAiB,SACjBC,aAAc,8BACd/b,QAAQ,GACT,GAER,CAAD,EAKD,KAAA6jB,kCAAoC9f,UACjD,MAAM,QAAEK,EAAO,KAAEwS,EAAI,UAAEhS,GAAcpD,KAAKjC,OACpC,cAAEid,GAAkB5F,EAE1B,GAAIxS,GAAWA,EAAQJ,cAAe,CAClC,MAAM2X,EAAoC,IAE1C,GADkBvX,EAAQH,QAAQyV,KAAKoK,iBAAmB1f,EAAQH,QAAQyV,KAAKqK,OAC3EC,MAAaxH,GAAAA,EAAepZ,QAAU2S,EAAM,CAC5C,MAAMkO,QAAsBC,EAAAA,EAAAA,kBAAgBC,EAAAA,EAAAA,4BAA2B/f,EAAQJ,eAAgBI,EAAQJ,eACvG,IAAIiC,GAAsC,EACO,IAADme,EAAhD,GAAItiB,EAAAA,gBAAgBC,YAAYkiB,GAC5Bhe,GAGK,QAFDme,EAAAH,EAAclU,MACTkL,GAAqD,2DAAtBA,EAAa5Q,cAChD,IAAA+Z,OAAA,EAFDA,EAEGjJ,aAAa,EAExB,MAAMjV,GAAY4D,EAAAA,EAAAA,IAAa1F,EAAQJ,cAAcoO,gBACjDnM,IACA8P,EAAKiB,gBAAgBtM,UAAYxE,IAErC0V,EAAAA,EAAAA,6BAA4B,CAAE9Q,cAAe1G,EAAQJ,eAAiB+R,EAAKiB,gBAAgB7H,cAAgB,CACvG4G,EAAKiB,kBAEJ7T,MAAKY,gBAEI,IAAIc,SAAQC,GAAWkX,WAAWlX,EAAS6W,KACjDjV,OAAOC,SAASC,QAAQ,IAE3BpD,OAAMC,IACHmB,EAAUqX,QAAQ,4EAClBrX,EAAUnB,MAAMA,EAAM,GACvB,MAEPmB,EAAUqX,QACN,kHACH,GAKI,KAAAoI,gBAAkBtgB,UAC/B2C,OAAOC,SAASC,SACT/B,QAAQC,WAGF,KAAAijB,gBAAkB,KAC/B,MAAM,QAAE3jB,EAAO,KAAEwS,EAAI,UAAEhS,EAAS,UAAExD,GAAcI,KAAKjC,OAC/C,cAAEid,GAAkB5F,EAE1B,GAAIxS,GAAWA,EAAQJ,cAAe,CAElC,GADkBI,EAAQH,QAAQyV,KAAKoK,iBAAmB1f,EAAQH,QAAQyV,KAAKqK,OAC9DvH,GAAiBA,EAAcpZ,OAAQ,EACpD4kB,EAAAA,EAAAA,aAAY,CAAEld,cAAe1G,EAAQJ,eAAiBwY,EAAcpZ,OAAOqZ,aACtEtZ,OACAK,OAAOC,IAAiB,IAAAwkB,EACrBrjB,EAAUqX,QAAQ,qDAClBrX,EAAUnB,MAAMA,GAChBjC,KAAKwB,SAAS,CACVgW,SAA6B,QAApBiP,EAAAzL,EAAcpZ,cAAM,IAAA6kB,OAAA,EAApBA,EAAsBxL,YAAYC,KAAM,GACjDb,YAAaza,EAAU8mB,8BACvBpM,gBAAiB,SACjBC,aAAc,8BACd/b,QAAQ,GACV,IAEV,MAAMmoB,GAAU9L,EAAAA,EAAAA,IAAW,oBAAqB7a,KAAKjC,MAAM6E,QAAQJ,eAC/DmkB,GACAzhB,OAAOC,SAAS8B,OAAO0f,EAAQ,MAGnCvjB,EAAUqX,QAAQ,iFAAiF,MAGvGrX,EAAUqX,QAAQ,oDAAqD,EAQ9D,KAAAmM,aAAe,KAC5B,MAAM,QAAEhkB,GAAY5C,KAAKjC,MAGzB,GAAI6E,EAAQH,SAAWG,EAAQH,QAAQokB,QAA0C,WAAhCjkB,EAAQH,QAAQokB,OAAOC,KACpE,MAAO,KAGX,GAAIlK,EAAAA,GAASC,WAAa3X,OAAO6hB,WAAY,CACzC,MAAMlW,EAAejO,EAAQH,QAAQoO,aACrC,GAAIA,EACA,OAAIA,EAAa3R,IAAMgG,OAAO6hB,YAAclW,EAAa3R,GAAGE,EACjD,KACAyR,EAAamW,IAAM9hB,OAAO6hB,YAAclW,EAAamW,GAAG5nB,EACxD,KACAyR,EAAaoW,IAAM/hB,OAAO6hB,YAAclW,EAAaoW,GAAG7nB,EACxD,KACAyR,EAAavR,IAAM4F,OAAO6hB,YAAclW,EAAavR,GAAGF,EACxD,KAEJ,IAAI,CAInB,MAAO,IAAI,EAQE,KAAAsf,YAAewI,GAExBlpB,EAAAA,cAAA,OAAKC,UAAU,wBACXD,EAAAA,cAAA,QAAMC,UAAW,GAAG+B,KAAKjC,MAAM8G,OAAO5G,6BAA4B,cAAc,SAChFD,EAAAA,cAAA,QAAMC,UAAU,aAAaipB,IAUxB,KAAAvI,YAAewI,GAExBnpB,EAAAA,cAAA,OAAKC,UAAU,wBACXD,EAAAA,cAAA,QAAMC,UAAU,aAAakpB,GAC7BnpB,EAAAA,cAAA,QAAMC,UAAW,GAAG+B,KAAKjC,MAAM8G,OAAO5G,8BAA6B,cAAc,UA38BzF+B,KAAK/B,UAAY,oBACjB+B,KAAKonB,UACDrpB,EAAM6E,QAAQH,SAAW1E,EAAM6E,QAAQH,QAAQokB,QAAgD,WAAtC9oB,EAAM6E,QAAQH,QAAQokB,OAAOC,KAAoB,KAAO,KACrH9mB,KAAKqnB,gBAAkBrnB,KAAKqnB,gBAAgBrc,KAAKhL,MAEjDA,KAAKzB,MAAQ,CACTiZ,QAAS,GACT6C,YAAa,GACbC,gBAAiB,UACjBC,aAAc,eACd/b,QAAQ,EACRye,gCAAgC,EAChCqK,qCAAqC,EACrCtN,iBAAkB,GAClB+E,oBAAoB,EACpBrH,6BAA6B,GAEjC1X,KAAK0F,kBAAmB6hB,EAAAA,EAAAA,oBACpBvnB,KAAKjC,MAAM6E,QAAQH,QAAQ+kB,kBAC3BxnB,KAAKjC,MAAM0pB,aACXznB,KAAKjC,MAAMqF,WAEfpD,KAAKqnB,mBAEDzK,EAAAA,GAASC,WAAc7c,KAAKjC,MAAM6E,QAAQH,QAAQyV,KAAKoK,iBAAoBtiB,KAAKjC,MAAM6E,QAAQH,QAAQilB,OAAOC,UAC7GziB,OAAOC,SAAS8B,OAAOjH,KAAKjC,MAAM6E,QAAQH,QAAQyV,KAAK0P,WAAa,IAE5E,CAjCclR,eACV,MAA0B,OAAnB1W,KAAKonB,WAAyC,OAAnBpnB,KAAKonB,SAC3C,CAkCO7kB,0BACHvC,KAAKwB,SAAS,CAAC,GACf,MAAMwZ,QAAsBhb,KAAKjC,MAAMqX,KAAK4F,cAC5Chb,KAAKjC,MAAM8G,OAAO+S,QAASoO,MAAOhL,aAAa,EAAbA,EAAeC,YAAYpS,OAAQ,GACrE7I,KAAKwB,SAAS,CACVwY,iBAAkBgB,aAAa,EAAbA,EAAe6E,qBAGjCjD,EAAAA,GAASC,YACT3X,OAAO2iB,iBAAiB,SAAU7nB,KAAKqnB,iBACvCrnB,KAAKqnB,kBAEb,CAEOS,uBACClL,EAAAA,GAASC,WACT3X,OAAO6iB,oBAAoB,SAAU/nB,KAAKqnB,gBAElD,CAEOhhB,sBACHC,EACAC,GAEA,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,QAAUuI,CAInD,CAEOE,SACH,MAAM,QAAEoR,EAAO,UAAE3Z,GAAc+B,KAAKjC,MAAM8G,QACpC,4BAAEmjB,EAA2B,+BAAEC,GAAmCjoB,KAAKjC,MAAM6B,WAC7E,cAAEob,EAAa,KAAE6F,GAAS7gB,KAAKjC,MAAMqX,KAE3C,GAAoB,YAAhByL,EAAKnT,QAAwBwa,EAAAA,iBAAiBC,kBAAkBnN,IAA2C,YAAzBA,EAActN,OAAsB,CACtH,MAAM0a,EAAUxhB,EAAAA,EAAA,GACR5G,KAAKjC,OAAiD,IAC1Dub,mBAAoB,CAChB+O,YAAaroB,KAAKjC,MAClBE,UAAWkU,IAAWnS,KAAK/B,UAAWA,IAE1CyP,OAAQ,UACR4a,cAAetqB,EAAAA,cAAC+J,EAAAA,EAAO,CAAC9J,UAAW+B,KAAK/B,UAAWC,IAAK8B,KAAKjC,MAAM6B,UAAUoI,2BAC7E4P,QAASA,GAAW5Z,EAAAA,cAACuqB,EAAAA,QAAOvhB,OAAAC,OAAA,CAAChJ,UAAW,GAAG+B,KAAK/B,sBAA0B2Z,IAC1EhY,UAAWI,KAAKjC,MAAM6B,YAE1B,OAAOI,KAAKjC,MAAMyqB,WAAWJ,EAAY,CAG7C,GAAoB,WAAhBvH,EAAKnT,QAAgD,WAAzBsN,EAActN,OAAqB,CAC/D,MAAM0a,EAAUxhB,EAAAA,EAAA,GACR5G,KAAKjC,OAAiD,IAC1Dub,mBAAoB,CAChB+O,YAAaroB,KAAKjC,MAClBE,UAAWkU,IAAW,GAAGnS,KAAK/B,YAAaA,IAE/CyP,OAAQ,SACR4a,cAAetqB,EAAAA,cAACyqB,EAAAA,gCAA+B,CAACC,UAAU,SAAS1C,KAAMiC,IACzErQ,QAASA,GAAW5Z,EAAAA,cAACuqB,EAAAA,QAAOvhB,OAAAC,OAAA,CAAChJ,UAAW,GAAG+B,KAAK/B,sBAA0B2Z,IAC1EhY,UAAWI,KAAKjC,MAAM6B,YAG1B,OAAOI,KAAKjC,MAAMyqB,WAAWJ,EAAY,CAG7C,MAAMO,EAAsB3N,GAAiBA,EAAcpZ,OACrDie,EAAqB8I,GAAuBA,EAAoB9I,mBAEtE,IAAK8I,IAAwB9I,GAAoD,IAA9BA,EAAmBhe,OAAc,CAChF,GAAI8mB,IAAwB3oB,KAAK4oB,gBAAkBhM,EAAAA,GAASC,UAExD,OADA3X,OAAOC,SAASiU,KAAOpZ,KAAK0a,2BACrB,KAGX,MAAMmO,EAAcjiB,EAAAA,EAAA,GACZ5G,KAAKjC,OAAiD,IAC1Dub,mBAAoB,CAChB+O,YAAaroB,KAAKjC,MAClBE,UAAWkU,IAAW,GAAGnS,KAAK/B,YAAaA,IAE/CyP,OAAQ,QACR4a,cAAetqB,EAAAA,cAACyqB,EAAAA,gCAA+B,CAACC,UAAU,QAAQ1C,KAAMgC,IACxEpQ,QAASA,GAAW5Z,EAAAA,cAACuqB,EAAAA,QAAOvhB,OAAAC,OAAA,CAAChJ,UAAW,GAAG+B,KAAK/B,sBAA0B2Z,IAC1EhY,UAAWI,KAAKjC,MAAM6B,UACtBkpB,aACIH,GACA3oB,KAAK+oB,4BAA4BJ,EAAqB3oB,KAAKuZ,4CAC/DyP,qBAAsBL,GAAuB3oB,KAAKipB,6BAA6BN,EAAoB1N,YAAYC,IAC/GgO,qBAAsB,CAClBjrB,UAAW,GAAG+B,KAAK/B,uBACnBkrB,IAAK,SAIb,OAAOnpB,KAAKjC,MAAMyqB,WAAWK,EAAgB,CAGjD,MAAMxhB,EAAST,EAAAA,EAAA,GACP5G,KAAKjC,OAAiD,IAC1Dub,mBAAoB,CAChB+O,YAAaroB,KAAKjC,MAClBE,UAAWkU,IAAW,GAAGnS,KAAK/B,YAAaA,IAE/CyP,OAAQ,UACR0b,sBAAuBppB,KAAKzB,MAAMC,QAC9BR,EAAAA,cAAA,OAAKC,UAAW,GAAG+B,KAAK/B,6BACpBD,EAAAA,cAAC8U,EAAAA,MAAK,CAAC1R,MAAOpB,KAAKzB,MAAM+b,gBAAiB9b,OAAQwB,KAAKzB,MAAMC,OAAQqI,OAAQ7G,KAAK0f,YAC9E1hB,EAAAA,cAAA,oBAAgB,aAAagC,KAAKzB,MAAM8b,eAIpDzC,QAASA,GAAW5Z,EAAAA,cAACuqB,EAAAA,QAAOvhB,OAAAC,OAAA,CAAChJ,UAAW,GAAG+B,KAAK/B,sBAA0B2Z,IAC1EsR,qBAAsB,CAClBjrB,UAAW,GAAG+B,KAAK/B,uBACnBkrB,IAAK,OAETE,cAAe,CACXprB,UAAW,GAAG+B,KAAK/B,mBACnBkrB,IAAK,QACLjpB,KAAM,QAEVopB,iBAAkB,CACdrrB,UAAW,GAAG+B,KAAK/B,uBACnBkrB,IAAK,MAETI,qBAAsBvpB,KAAKwpB,yBAAyBxpB,KAAKjC,MAAM6B,WAC/DmW,eAAgB,CACZ9X,UAAW,GAAG+B,KAAK/B,6BACnBkrB,IAAK,KAETM,WAAYzpB,KAAK0pB,qBACjBC,UAAW,CAAEC,eAAgBC,IAAS7pB,KAAK2f,gBAAiB,MAC5DmJ,aAAc9oB,KAAK+oB,4BAA4BJ,EAAqB3oB,KAAKuZ,4CACzEuQ,WAAY9pB,KAAK0d,oBACjBqM,sBAAuB/pB,KAAKkd,+BAC5B8L,qBAAsBhpB,KAAKipB,6BAA6BN,EAAoB1N,YAAYC,IACxF6D,mBAAoB/e,KAAKzB,MAAMwgB,mBAC/BvI,uBAAwBxW,KAAK8e,wBAC7BE,oBAAqBhf,KAAKzB,MAAMygB,oBAChCtI,SAAU1W,KAAK0W,WAGnB,OAAO1W,KAAKjC,MAAMyqB,WAAWnhB,EACjC,CAEO2P,SAASzC,EAAmCwC,GAC/CxC,EAAKwC,UAAYA,EAEjB,MAAMiT,EACFhqB,KAAKzB,MAAMyb,iBAAiBxR,KAAIzF,IAAU,IAAAknB,EAAAC,EAItC,OAHuB,QAAnBD,EAAAlnB,EAAQ+S,mBAAW,IAAAmU,OAAA,EAAnBA,EAAqBlU,eAAerE,WAA2B,QAArBwY,EAAK3V,EAAKuB,mBAAW,IAAAoU,OAAA,EAAhBA,EAAkBnU,eAAerE,UAChF6C,EAAKwC,UAAYA,GAEdhU,CAAO,KACZ,GAEV/C,KAAKwB,SAAS,CACVwY,iBAAkBgQ,GAE1B,CAEOG,YAAYpT,GACf,MAAMiT,EACFhqB,KAAKzB,MAAMyb,iBAAiBxR,KAAI+L,IAC5BA,EAAKwC,UAAYA,EACVxC,MACL,GAEVvU,KAAKwB,SAAS,CACVwY,iBAAkBgQ,GAE1B,CAEQR,yBAAyB5pB,GAC7B,MAAM,aACFwqB,EAAY,kBACZC,EAAiB,YACjBC,EAAW,qBACXC,EAAoB,eACpBC,EAAc,oBACdC,EAAmB,mBACnBC,EAAkB,kBAClBC,EAAiB,uBACjBC,GACAhrB,EACEirB,EAA2C,CAC7CT,aAAcA,EACdU,cAAeT,EACflR,YAAamR,EACbS,iBAAkBR,EAClBS,WAAYR,EACZS,gBAAiBR,EACjBS,eAAgBR,EAChBC,oBACA5Q,MAAO/Z,KAAKzB,MAAMyb,iBAClBtD,SAAU1W,KAAK0W,SACf9O,aAAemP,IACX/W,KAAKmqB,YAAYpT,EAAU,EAE/BtS,oCAAqCzE,KAAKuZ,2CAC1CqR,uBAAwBA,GAG5B,OAAO5sB,EAAAA,cAACmtB,EAAAA,0BAAyBnkB,OAAAC,OAAA,GAAK4jB,GAC1C,CAEQ5B,6BAA6BzkB,GACjC,OACIxG,EAAAA,cAACiW,EAAAA,EAAwBjN,OAAAC,OAAA,GACjBjH,KAAKjC,MAAK,CACdyG,gBAAiBA,EACjB6P,cAAerU,KAAKzB,MAAMyb,kBAAoBha,KAAKzB,MAAMyb,iBAAiBvM,QAAO8G,GAAQA,EAAKwC,YAC9FtC,oBAAqBzU,KAAKmb,qBAC1BxG,kBAAmB3U,KAAK4Z,mBACxBvE,eAAgBrV,KAAK0W,SACrBjS,oCAAqCzE,KAAKuZ,2CAC1C7T,iBAAkB1F,KAAK0F,mBAGnC,CAEQ0lB,2CACJ,MAAO,CACHC,mBAAoBrrB,KAAKjC,MAAM6B,UAAUyrB,mBACzCC,6BAA8BtrB,KAAKjC,MAAM6B,UAAU0rB,6BACnDC,mCAAoCvrB,KAAKjC,MAAM6B,UAAU2rB,mCACzDC,mCAAoCxrB,KAAKjC,MAAM6B,UAAU4rB,mCACzDC,sCAAuCzrB,KAAKjC,MAAM6B,UAAU6rB,sCAC5DC,kCAAmC1rB,KAAKjC,MAAM6B,UAAU8rB,kCAEhE,CAEQnO,0CACJ,MAAO,CACH8N,mBAAoBrrB,KAAKjC,MAAM6B,UAAUyrB,mBACzCC,6BAA8BtrB,KAAKjC,MAAM6B,UAAU0rB,6BACnDK,iCAAkC3rB,KAAKjC,MAAM6B,UAAU+rB,iCACvDC,oCAAqC5rB,KAAKjC,MAAM6B,UAAUgsB,oCAC1DC,iCAAkC7rB,KAAKjC,MAAM6B,UAAUisB,iCACvDnT,cAAe1Y,KAAKjC,MAAM6B,UAAU8Y,cACpCC,kBAAmB3Y,KAAKjC,MAAM6B,UAAU+Y,kBACxCC,iBAAkB5Y,KAAKjC,MAAM6B,UAAUgZ,iBAE/C,CAmFQmQ,4BACJ/N,EACAvW,GAEA,MAAM,GAAEhE,EAAE,SAAEgY,EAAQ,QAAE7V,EAAO,UAAEhD,GAAcI,KAAKjC,OAC5C,2BACFgnB,EAA0B,yBAC1B+G,EAAwB,yBACxB/P,EAAwB,sBACxBiJ,EAAqB,wBACrBC,EAAuB,wBACvBC,EAAuB,wBACvBC,EAAuB,0BACvBC,GACAxlB,EAEEmsB,EAAmD,CACrD3W,KAAM,CAAE4F,iBACRva,KACAgY,WACA7V,UACA8C,iBAAkB1F,KAAK0F,iBACvB+P,SAAU,CACNuW,iBAAkBhsB,KAAK6iB,gBACvBpG,iBAAkBzc,KAAKumB,iBAE3B9hB,sCACAwnB,iCAAkCjsB,KAAKksB,0CAA0CtsB,GACjFA,UAAW,CACPmlB,6BACA+G,2BACA/P,2BACAkJ,0BACAC,0BACAC,0BACAH,wBACAI,4BACAC,gCAAiCrlB,KAAKorB,6CAI9C,OAAOkmB,EAAAA,EAAAA,0BAAyBvlB,EACpC,CAEQG,0CAA0CtsB,GAC9C,MAAO,CACHusB,yBAA0BvsB,EAAUwsB,6BACpCC,wBAAyBzsB,EAAU0sB,mBACnCC,2BAA4B3sB,EAAU0sB,mBACtCE,yBAA0B,GAC1BC,yBAA0B7sB,EAAU6sB,yBACpCC,yBAA0B9sB,EAAU+sB,8BACpCC,+BAAgChtB,EAAUitB,eAElD,CA8CQjE,eACJ,OAAwC,IAAjC5oB,KAAK8d,uBAChB,CAEQA,wBACJ,MAAMF,EAAe5d,KAAKjC,MAAM8G,OAAO+Y,cAAgB,GACvD,OAAQ5d,KAAKjC,MAAM6E,QAAQH,QAAQhE,QAAUuB,KAAKjC,MAAM6E,QAAQH,QAAQhE,MAAMslB,KAAOnG,GAAiB,CAC1G,CAuCQ8L,qBACJ,MAAM,iBACFoD,EAAgB,eAChB1W,EAAc,uBACdC,EAAsB,UACtB0W,EAAS,kBACTpU,EAAiB,iBACjBC,EAAgB,oCAChBoU,EAAmC,sCACnCC,EAAqC,0BACrC9c,EAAyB,yBACzBE,EAAwB,0BACxBC,EAAyB,uBACzBnE,EAAsB,iBACtB+gB,EAAgB,yBAChB9gB,EAAwB,yBACxBL,EAAwB,+BACxBohB,EAA8B,8BAC9BC,GACAptB,KAAKjC,MAAM6B,WAET,QAAEgD,EAAO,UAAEQ,EAAS,KAAEgS,GAASpV,KAAKjC,OACpC,SAAEsK,GAAa+M,GACf,cAAE9N,GAAkBtH,KAAKjC,MAAM8G,OAErC,OAAO7E,KAAKzB,MAAMyb,iBAAiBxR,KAAI,CAAC+L,EAAMjB,KAAS,IAAA+Z,EACnD,MAAM0lB,EAA+C,CACjDx9B,kBAAmBhB,EACnBiB,gBAAiBjB,EAAKiB,gBACtBxC,MAAuB,QAAlBqa,EAAE9Y,EAAKuB,mBAAW,IAAAuX,OAAA,EAAhBA,EAAkBY,aACzBhsB,MAAOsS,EAAKtS,MACZuS,cAAeD,EAAKC,cACpB5R,UACA8U,4BAA6B1X,KAAKzB,MAAMmZ,4BACxCsB,WAAYzE,EAAKuB,YACX9V,KAAKkf,yBAAyB3K,EAAKuB,YAAYC,eAAgBnT,EAAS2R,EAAKiB,gBAAgBtM,WAC7F,GACN5B,gBACAlE,YACAkV,SAAUtY,KAAKjC,MAAM0C,GACrB8X,eAAgBvY,KAAKjC,MAAM0a,SAC3B3T,SAAUyP,EAAKiB,gBAAgBoG,SAC/BnG,SAAU,CACNE,WAAY3V,KAAK6b,cACjBjG,aAAc5V,KAAKqiB,kCACnB9K,iBAAkBvX,KAAK2f,gBACvB3I,SAAUhX,KAAKgX,SAAShM,KAAKhL,OAEjCJ,UAAW,CACPktB,mBACA1W,iBACAC,yBACAlG,4BACAE,2BACAC,4BACAoI,cAAeqU,EACfpU,oBACAC,mBACAzM,yBACAgK,iCAAkC8W,EAClC/W,mBAAoB8W,EACpBE,mBACA9gB,2BACAL,2BACAohB,iCACAC,iCAEJ9Z,QACAoD,SAAU1W,KAAK0W,SACfF,uBAAwBxW,KAAK8e,wBAC7Bra,oCAAqCzE,KAAKuZ,2CAC1ClR,SAAUA,GAAYA,EAASzG,QAGnC,OAAOosB,EAAAA,EAAAA,uBAAsB+kB,EAAqB,GAE1D,CAkVQ1rB,kBACJrnB,KAAKonB,UAAYpnB,KAAK4mB,cAC1B,IA/5BAld,EAAAA,EAAAA,IAAA,CADCwkB,EAAAA,IAAU,iCAGDxkB,EAAAA,EAAAA,IAAA,CAATC,EAAAA,IAAQ,8BAoCTD,EAAAA,EAAAA,IAAA,CADCykB,EAAAA,IAAM,sCA3CL7U,GAAkB5P,EAAAA,EAAAA,IAAA,CADvBkD,EAAAA,IACK0M,GA+9BN,qFCnlCA,MAgHM+U,EAAcA,CAACtrB,EAAsCurB,EAAuBhF,KAC9E,IAAKvmB,EACD,OAAO,KAGX,MAAM,IACF4F,EAAG,WACH4kB,EAAU,mBACVC,EAAkB,aAClBpD,EAAY,aACZ3a,EAAY,cACZqb,EAAa,eACb+C,EAAc,aACdF,EAAY,YACZF,EAAW,qBACXC,EAAoB,oBACpBE,EAAmB,gBACnB3C,EAAe,MACf8C,EAAK,SACLrX,EAAQ,kBACRoX,EAAiB,oCACjBrpB,EAAmC,SACnC6G,GACAvI,EAYEwrB,EAViBjjB,EACjB,CACIkjB,cAAe,OACfC,QAAS,IAEb,CACID,cAAe,OACfC,QAAS,GAKnB,OACIzwB,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,CAAC0B,IAAKA,EAAK1K,UAAW,GAAGqrB,EAAkBrrB,aAAiBqrB,GAC7DtrB,EAAAA,cAAA,UAAKuvB,IACH7W,GAAYjS,GAAuCzG,EAAAA,cAAA,MAAI2wB,MAAOJ,GAAiBf,GACjFxvB,EAAAA,cAAA,MAAI2wB,MAAOJ,GAAiBnE,GAC3B1T,EACG1Y,EAAAA,cAAA,UACIA,EAAAA,cAAA,WAAM8sB,GACN9sB,EAAAA,cAAA,OAAK2wB,MAAOJ,GACPD,EAAa,IAAG,IAChBrD,IAITjtB,EAAAA,cAAA,UAAK8sB,IAEPpU,GAAY1Y,EAAAA,cAAA,MAAI2wB,MAAOJ,GAAiBd,IACxC/W,GAAY1Y,EAAAA,cAAA,MAAI2wB,MAAOJ,GAAiB9e,IACxCiH,GAAY1Y,EAAAA,cAAA,MAAI2wB,MAAOJ,GAAiBb,IACxChX,GAAY1Y,EAAAA,cAAA,MAAI2wB,MAAOJ,GAAiBX,GACzClX,GAAY1Y,EAAAA,cAAA,MAAI2wB,MAAOJ,GAAiBR,IACvCrX,IAAajS,GACXzG,EAAAA,cAAA,MAAI2wB,MAAOJ,GACNV,EACAF,GAGT3vB,EAAAA,cAAA,MAAI2wB,MAAOJ,GAAiBT,GACzB,EAIf,EArLmE/vB,IAC/D,MAAM,mBACFub,EAAkB,OAClB5L,EAAM,cACN4a,EAAa,QACb1Q,EAAO,cACPyR,EAAa,qBACbE,EAAoB,WACpBE,EAAU,iBACVH,EAAgB,sBAChBF,EAAqB,qBACrBF,EAAoB,aACpBJ,EAAY,WACZgB,EAAU,sBACVC,EAAqB,qBACrBf,EAAoB,mBACpBjK,EAAkB,oBAClBC,EAAmB,uBACnBxI,EACA5W,WAAW,eACPitB,EAAc,kBACdxC,EAAiB,YACjBC,EAAW,qBACXC,EAAoB,eACpBC,EAAc,oBACdC,EAAmB,uBACnBG,IAEJ7sB,EAEE6wB,EAAgB5wB,EAAAA,aAAkB,KACpCwY,GAA0BA,OAAuBvT,EAAU,GAC5D,CAACuT,IAEJ,OACIxY,EAAAA,cAAC6wB,EAAAA,OAAM7nB,OAAAC,OAAA,GAAKqS,GACP1B,EACAsR,GACGlrB,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKiiB,GACLJ,aAAY,EAAZA,EAAc9M,iBACd8M,aAAY,EAAZA,EAAc5M,eACd4M,aAAY,EAAZA,EAAc1M,eACd0M,aAAY,EAAZA,EAAcxM,oBACbyC,GAAsBqK,GAG/BJ,EACW,YAAXtb,GAAwB4a,EACxBe,GAAiBI,GAAcA,EAAW5nB,OAAS,GAChD7D,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAU,8BACZD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKoiB,GACLE,EACDvrB,EAAAA,cAAA,aACKyrB,GACGA,EAAWjhB,KAAIzF,GACJsrB,EAAYtrB,EAAS0nB,EAAqBnB,OAIhEQ,GAGRC,EACD/rB,EAAAA,cAAC+I,EAAAA,MAAK,CACF+nB,cAAc,sCACdhuB,WAAS,EACTiuB,MAAM,EACNC,gBAAgB,aAChBxwB,OAAQugB,EACRlY,OAAQ+nB,GAER5wB,EAAAA,cAACkJ,EAAAA,YAAW,CAACL,OAAQ+nB,GAAa,mBAClC5wB,EAAAA,cAAC8J,EAAAA,UAAS,KACN9J,EAAAA,cAAA,UACIA,EAAAA,cAAA,UAAKghB,aAAmB,EAAnBA,EAAqBoL,cAC1BpsB,EAAAA,cAAA,MAAIC,UAAU,gBACVD,EAAAA,cAAA,YAAOssB,EAAW,KACjBtL,aAAmB,EAAnBA,EAAqByO,aAE1BzvB,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAO4sB,EAAsB,KAC5B5L,aAAmB,EAAnBA,EAAqBwO,oBAE1BxvB,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOqsB,EAAiB,KACvBrL,aAAmB,EAAnBA,EAAqB8L,eAE1B9sB,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOusB,EAAoB,KAC1B,IACAvL,aAAmB,EAAnBA,EAAqBvP,cAE1BzR,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOwsB,EAAc,KACpB,IACAxL,aAAmB,EAAnBA,EAAqB0O,sBAE1B1vB,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOysB,EAAmB,KACzBzL,aAAmB,EAAnBA,EAAqB4O,qBAEzBxE,GAAyBprB,EAAAA,cAAA,UAAKorB,KAGvCprB,EAAAA,cAACgU,EAAAA,YAAW,KACRhU,EAAAA,cAACkU,EAAAA,OAAM,CAAC/K,QAASynB,GAAgB/B,KAGpC,s0BCpCV,MAAMmmB,UAAiCh1C,IAAAA,cAyB1CK,YAAmBN,GACfO,MAAMP,GAwKF,KAAAk1C,wBAA2BC,IAC/B,MAAMC,EAASnzC,KAAKzB,MAAM60C,sBAC1B,GAAIpzC,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAOwuC,yBAA2BF,EAAU,EAAG,CACtE,MAAMG,EAAW,GACjB,IAAK,IAAIhgC,EAAQ,EAAGA,EAAQ6/B,EAAS7/B,IACjCggC,EAAS1f,KACL51B,IAAAA,cAAA,MAAIC,UAAU,GAAG0K,IAAK2K,GAClBtV,IAAAA,cAAA,OAAKC,UAAU,0BAI3B,OAAOq1C,CAAS,CAEd,EAOO,KAAAC,uBAA0BnN,IAAwB,IAAAoN,EAC/DC,EAAAA,GAAuBC,SAAS1zC,KAAKjC,MAAM6E,QAAQH,QAA2C,QAApC+wC,EAAExzC,KAAKjC,MAAMqX,KAAKu+B,0BAAkB,IAAAH,OAAA,EAAlCA,EAAoC5xC,QAAQgyC,eAAexN,GACvHpmC,KAAKwB,UAASqyC,IAAgB,IAAAC,EAC1B,MAAO,CACHC,aAAwC,QAA5BD,EAAED,EAAcE,oBAAY,IAAAD,OAAA,EAA1BA,EAA4BrmC,QAAOnD,GAAQA,EAAK87B,SAAWA,IAC5E,GACH,EAMW,KAAA4N,qBAAmC,KAChDh0C,KAAKwB,UAASqyC,IAAgB,IAAAI,EAC1B,MAAO,CACHC,aAAsC,QAA1BD,EAAEJ,EAAcK,kBAAU,IAAAD,EAAAA,EAAIj0C,KAAKm0C,kCAClD,GACH,EAMW,KAAAC,mCAAqC,KAAK,IAAAC,EACvDZ,EAAAA,GAAuBC,SAAS1zC,KAAKjC,MAAM6E,QAAQH,QAA2C,QAApC4xC,EAAEr0C,KAAKjC,MAAMqX,KAAKu+B,0BAAkB,IAAAU,OAAA,EAAlCA,EAAoCzyC,QAAQ0yC,WACxGt0C,KAAKwB,SAAS,CAAEuyC,aAAc,IAAK,EAnNnC/zC,KAAKzB,MAAQ,CAAC,EAEdyB,KAAKu0C,YAAc,GAAGvB,EAAyB/0C,aAAa+B,KAAKjC,MAAM0C,MAAMwxC,EAAAA,OAAOC,KAAKC,iBACzFa,EAAyBwB,qBAAuBx0C,KAAKu0C,YAErDv0C,KAAKm0C,kCAAmC,CAC5C,CAEOluC,oBAAiB,IAAAwuC,EAChBz0C,KAAKu0C,cAAgBvB,EAAyBwB,uBAIlDx0C,KAAK00C,gBACLjB,EAAAA,GAAuBC,SAAS1zC,KAAKjC,MAAM6E,QAAQH,QAA2C,QAApCgyC,EAAEz0C,KAAKjC,MAAMqX,KAAKu+B,0BAAkB,IAAAc,OAAA,EAAlCA,EAAoC7yC,QAAQ+yC,kBAAkBC,UACtH,CACIC,WAAY70C,KAAKu0C,YAKjBO,QAASA,KACL90C,KAAKm0C,kCAAmC,EAExCn0C,KAAK00C,eAAe,IAIpC,CAEO5sB,uBAAoB,IAAAitB,EACvBtB,EAAAA,GAAuBC,SACnB1zC,KAAKjC,MAAM6E,QAAQH,QACe,QADRsyC,EAC1B/0C,KAAKjC,MAAMqX,KAAKu+B,0BAAkB,IAAAoB,OAAA,EAAlCA,EAAoCnzC,QACtC+yC,kBAAkBK,YAAYh1C,KAAKu0C,YACzC,CAEO/tC,SAAM,IAAAyuC,EAAAC,EACT,GAAIl1C,KAAKu0C,cAAgBvB,EAAyBwB,qBAC9C,OAAO,KAGX,MAAMntC,EAAST,EAAAA,EAAA,GACR5G,KAAKjC,OAAK,IACbsqB,YAAa,CACTA,YAAaroB,KAAKjC,MAClBE,UAAW+0C,EAAyB/0C,UACpCwC,GAAIT,KAAKu0C,aAEbY,eAAgBn1C,KAAKo1C,wBACrBC,oBAAoB,EACpBC,gCAAiCt1C,KAAKm0C,mCAGpCjB,EAAclzC,KAAKu1C,oCAA2D,QAAxBN,EAACj1C,KAAKzB,MAAMw1C,oBAAY,IAAAkB,EAAAA,EAAgC,QAAhCC,EAAIl1C,KAAKjC,MAAMqX,KAAK2+B,oBAAY,IAAAmB,OAAA,EAA5BA,EAA8BtzC,QAEtH,IAAKtB,EAAAA,gBAAgBC,YAAY2yC,GAC7B,OAAOlzC,KAAKjC,MAAMyqB,WAAWnhB,GAGjCA,EAAUguC,oBAAqB,EAE/B,MAAMG,EAAgBx1C,KAAKy1C,oBAiB3B,OAhBKvtB,EAAAA,iBAAiBC,kBAAkBqtB,KACpCnuC,EAAUquC,cAAgB11C,KAAKjC,MAAM6B,UAAU+1C,4CAC1C5xC,QAAQ,MAAOmvC,EAAYrxC,OAAOwC,YAClCN,QAAQ,MAAOyxC,EAAcnxC,aAGtCgD,EAAU6sC,WAAal0C,KAAKzB,MAAM21C,WAClC7sC,EAAUuuC,oBAAsB51C,KAAKg0C,qBACrC3sC,EAAUwuC,iBAAmB71C,KAAK81C,qBAAqB5C,GACvD7rC,EAAU0uC,wBAA0B/1C,KAAKizC,wBAAwBC,GACjE7rC,EAAU2uC,uBAAwBn7B,EAAAA,EAAAA,IAAW,qBAAsB7a,KAAKjC,MAAM6E,QAAQJ,eACtF6E,EAAU4uC,kCAAoCj2C,KAAKo0C,mCACnD/sC,EAAU6uC,sBAAwBl2C,KAAKuzC,uBACvClsC,EAAU8uC,qBAAuBn2C,KAAKo2C,4BAA4B/uC,EAAU2uC,uBAC5E3uC,EAAUgvC,eAAiBr2C,KAAKs2C,wBAEzBt2C,KAAKjC,MAAMyqB,WAAWnhB,EACjC,CACQkuC,oCAAoCrC,GAAwD,IAAAqD,EAChG,MAAM7xC,GAAY4D,EAAAA,EAAAA,IAAatI,KAAKjC,MAAM6E,QAAQH,UAClD8F,EAAAA,EAAAA,mBAAkB7D,GAElB,OAD0F,QAAlE6xC,EAAGrD,aAAW,EAAXA,EAAazlC,QAAO1K,GAAWA,EAAQ2B,YAAcA,WAAU,IAAA6xC,EAAAA,EAAI,EAElG,CACQh0C,sBAAmB,IAAAi0C,EACvB,MAAMh4B,EAAQi1B,EAAAA,GAAuBC,SAAS1zC,KAAKjC,MAAM6E,QAAQH,QAA2C,QAApC+zC,EAAEx2C,KAAKjC,MAAMqX,KAAKu+B,0BAAkB,IAAA6C,OAAA,EAAlCA,EAAoC50C,QAAQ4c,MAChH7Z,EAAQ,IAAI8xC,EAAAA,2CAA2Cj4B,GACvD00B,QAAoBwD,EAAAA,EAAAA,6CAA4C/xC,EAAO3E,KAAKjC,MAAM6E,QAAQJ,eAC1Fm0C,EAAyB32C,KAAKu1C,oCAAoCrC,GACxElzC,KAAKwB,SAAS,CAAEuyC,aAAc4C,IAC9B32C,KAAK42C,0BAA0BD,EACnC,CAEQC,0BAA0B1D,GAC9B,GAAIA,GAAe5yC,EAAAA,gBAAgBC,YAAY2yC,GAAc,CACzD,MAAM2D,EAAQ72C,KAAKy1C,oBACnB,GAAIoB,GAAS72C,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAOwuC,wBAAyB,CAChE,MAAMyD,EAAcD,EAAQ3D,EAAYrxC,OAExC,OADA7B,KAAKwB,SAAS,CAAE4xC,sBAAuB0D,IAChCA,CAAY,CAAD,CAI9B,CAEQhB,qBAAqBp3C,GACzB,MAAMq4C,EAAiC,GAAG/D,EAAyBgE,6CAC7DC,EAAwB,GAAGF,mBAC3BG,EAAuB,GAAGlE,EAAyBgE,kCAEzD,OAAOt4C,EAAS8J,KAAI0qC,IAChB,MAAMnwC,EAAUmwC,EAAYnwC,QAE5B,IAAIo0C,EACJ,GAAI/f,EAAAA,GAAiBva,UAAW,CAAC,IAADu6B,EAC5B,MAAMp+B,GAAaoG,EAAAA,EAAAA,mBAAkBrc,EAAS/C,KAAKjC,MAAM6E,QAAQJ,eAC3Dmb,EAAU,IAAIb,IAAI9D,EAAY9T,OAAOC,SAASiU,OAChDi+B,EAAAA,EAAAA,IAAiBr3C,KAAKjC,MAAM6E,QAAQJ,cAAcoO,iBAClD+M,EAAQ6B,aAAaC,IAAI,YAAa,GAAGyzB,EAAYxuC,aAEvC,QAAlB0yC,EAAAr0C,EAAQkW,kBAAU,IAAAm+B,GAAlBA,EAAoB5uC,KAAI+E,IAAY,IAAA8E,EAChC,MAAMilC,EAAyC,QAA3BjlC,EAAG9E,EAAUuB,sBAAc,IAAAuD,OAAA,EAAxBA,EAA0BE,MACjD,IAAK8M,EAAAA,iBAAiBC,mBAAmBg4B,GAAiB,CACtD,MAAMvqC,GAAgBwqC,EAAAA,EAAAA,6CAA4ChqC,EAAUC,oBAC5EmQ,EAAQ6B,aAAaC,IAAI1S,EAAeuqC,EAAiB,KAGjEH,EAAkBx5B,EAAQvE,IAAK,CAGnC,MAAO,CACH+9B,kBACAjE,cACAsE,2BACIx5C,IAAAA,cAACy5C,EAAAA,GAAmC,CAChCx5C,UAAW,GAAG+0C,EAAyBgE,4BACvCp3C,UAAWI,KAAKjC,MAAM6B,UACtBwmC,OAAQ8M,EAAY9M,OACpB2J,eAAgB/vC,KAAKuzC,uBACrB3wC,QAAS5C,KAAKjC,MAAM6E,QACpBnC,GAAIT,KAAKjC,MAAM0C,GACfgY,SAAUzY,KAAKjC,MAAM0a,SACrBrD,KAAM,CAAC,IAGfgV,aACIpsB,IAAAA,cAAA,KAAGC,UAAW84C,EAAgC39B,KAAM+9B,GAC/Cn3C,KAAK2X,oBAAoBs/B,EAAuB/D,EAAYnwC,UAGrE20C,YACI15C,IAAAA,cAAA,KAAGC,UAAWi5C,EAAsB99B,KAAM+9B,GACrCjE,EAAYnwC,QAAQ8F,MAGhC,GAET,CAsDQ4sC,oBACJ,MAAM7P,GAAWlvB,EAAAA,EAAAA,UAAS,CAAEpE,QAASuzB,EAAAA,YAAYC,QAASljC,QAAS5C,KAAKjC,MAAM6E,QAAQH,UACtF,MAAiB,OAAbmjC,GAAkC,OAAbA,EACd5lC,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAO8yC,qCAElC33C,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAO+yC,qCACzC,CAQQjgC,oBAAoB1Z,EAAmB8E,GAAuB,IAAAyN,EAAAC,EAAAC,EAClE,GAAIwX,EAAAA,iBAAiBC,kBAAkBplB,GACnC,OAGJ,MAAM80C,EAAuB,kBACvB74C,EAAuC,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAG04C,EAAsBz4C,EAAG,EAAGC,EAAG,GACxCC,GAAI,CAAEH,EAAG04C,EAAsBz4C,EAAG,EAAGC,EAAG,GACxCE,GAAI,CAAEJ,EAAG04C,EAAsBz4C,EAAG,EAAGC,EAAG,IAE5CG,UAAU,GAGd,OACIxB,IAAAA,cAACoT,EAAAA,GAAK,CACFzI,IAAK5F,EAAQ8F,KACbyI,IAA4B,QAAzBd,EAAEzN,EAAQwO,uBAAe,IAAAf,EAAAA,EAAI,GAChCgB,YAKK,QALMf,GACPgB,EAAAA,EAAAA,qBACI1O,EAAQ2O,OACR1R,KAAKjC,MAAM6E,QAAQJ,cAAcoO,eAAelO,YAClB,QAD6BgO,EAC3D1Q,KAAKjC,MAAM6E,QAAQH,QAAQkP,WAAG,IAAAjB,GAAQ,QAARA,EAA9BA,EAAgC7L,cAAM,IAAA6L,OAAA,EAAtCA,EAAwCkB,yBAC3C,IAAAnB,EAAAA,EAAI,GAETI,aAAc7Q,KAAKjC,MAAM6E,QAAQH,QAAQoO,aACzCvJ,cAAetI,EACf6S,oBAAoB,QACpB5T,UAAWA,EACX2S,eAAgB5Q,KAAKjC,MAAM6E,QAAQJ,cAAcoO,gBAG7D,CAEQwkC,wBAAqB,IAAA0C,EACzB,MAAMC,EAAwC,QAAxBD,EAAG93C,KAAKzB,MAAM21C,kBAAU,IAAA4D,EAAAA,EAAI93C,KAAKm0C,iCACjD6D,EAA2B,GAAGhF,EAAyBiF,wCAC7D,IAAIC,EAAoB,GAAGlF,EAAyBmF,oCAKpD,OAJKJ,IACDG,EAAoB,GAAGlF,EAAyBmF,sCAG7C,CACHl6C,UAAWkU,IAAW6lC,EAA0BhF,EAAyBmF,wBAAyBD,GAClG/wC,QAASnH,KAAKg0C,qBACd9zC,KAAM,SACN8L,SAAU,EAElB,CAEQoqC,4BAA4BJ,GAChC,OACIh4C,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAW,GAAG+0C,EAAyBoF,oCACvCh/B,KAAM48B,EACNlqC,MAAO9L,KAAKjC,MAAM6B,UAAUy4C,4CAE3Br4C,KAAKjC,MAAM6B,UAAUy4C,2CAGlC,CAEQ/B,wBACJ,OACIt4C,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAW,GAAG+0C,EAAyBoF,6BACvCtsC,MAAO9L,KAAKjC,MAAM6B,UAAU04C,4CAC5BnxC,QAASnH,KAAKo0C,oCAEbp0C,KAAKjC,MAAM6B,UAAU04C,4CAGlC,EAxUuBtF,EAAA/0C,UAAY,gCAEZ+0C,EAAAuF,mBAAqB,GAAGvF,EAAyB/0C,uBAEjD+0C,EAAAiF,uBAAyB,GAAGjF,EAAyBuF,qCAErDvF,EAAAwF,gBAAkB,GAAGxF,EAAyBiF,iCAE9CjF,EAAAyF,qBAAuB,GAAGzF,EAAyBwF,yBAEnDxF,EAAA0F,eAAiB,GAAG1F,EAAyBiF,gCAE7CjF,EAAAgE,kBAAoB,GAAGhE,EAAyB0F,8BAEhD1F,EAAAoF,gBAAkB,GAAGpF,EAAyBiF,iCAE9CjF,EAAAmF,wBAA0B,GAAGnF,EAAyBwF,4BA2TjF,6KC9YO,MAAMG,EAAgG56C,IAAQ,IAAA66C,EAAAC,EAAAC,EACjH,IAAK/6C,EAAMs3C,mBACP,OAAO,KAGX,MAAM0C,EAAmC,QAAnBa,EAAG76C,EAAMm2C,kBAAU,IAAA0E,EAAAA,EAAI76C,EAAMu3C,gCAE7CiD,EAAqBpmC,IACvB6gC,EAAAA,yBAAyBiF,uBACzBF,EAAmB,GAAK,GAAG/E,EAAAA,yBAAyBiF,qCAGxD,OACIj6C,EAAAA,cAAC6wB,EAAAA,OAAM7nB,OAAAC,OAAA,GAAKlJ,EAAMsqB,aACdrqB,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAW+0C,EAAAA,yBAAyBuF,oBACtCv6C,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAWs6C,GACbv6C,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAW,GAAG+0C,EAAAA,yBAAyBiF,2CACzCj6C,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAMo3C,gBACZn3C,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAW+0C,EAAAA,yBAAyBwF,iBACtCx6C,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAW+0C,EAAAA,yBAAyByF,sBACtCz6C,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAW,GAAG+0C,EAAAA,yBAAyByF,+BAC7Cz6C,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAW,GAAG+0C,EAAAA,yBAAyByF,mCACxC16C,EAAM6B,UAAUm5C,oCAErB/6C,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAW,GAAG+0C,EAAAA,yBAAyByF,kCACxC16C,EAAM23C,kBAKvB13C,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAW+0C,EAAAA,yBAAyB0F,eAAgBvvB,IAAI,SAC1DnrB,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAU,GAAGkrB,IAAI,SACnBnrB,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAW+0C,EAAAA,yBAAyBgE,kBAAmB7tB,IAAI,MACtC,QAD0C0vB,EAChE96C,EAAM83C,wBAAgB,IAAAgD,OAAA,EAAtBA,EAAwBrwC,KAAIwwC,GAErBh7C,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAU,GAAGkrB,IAAI,KAAKxgB,IAAKqwC,EAAK9F,YAAY9M,QAC7C4S,EAAKxB,2BACLwB,EAAK5uB,gBAIjBrsB,EAAMg4C,yBAEX/3C,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAW+0C,EAAAA,yBAAyBgE,kBAAmB7tB,IAAI,MACtC,QAD0C2vB,EAChE/6C,EAAM83C,wBAAgB,IAAAiD,OAAA,EAAtBA,EAAwBtwC,KAAIwwC,GAErBh7C,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAU,GAAGkrB,IAAI,KAAKxgB,IAAKqwC,EAAK9F,YAAY9M,QAC7ChP,EAAAA,GAAiBva,UAAYm8B,EAAKtB,iBAAcz0C,SAQ7EjF,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAW+0C,EAAAA,yBAAyBoF,iBACrCr6C,EAAMs4C,eACNt4C,EAAMo4C,wBAId,EAIjB,oLClDY8C,kCAAZ,SAAYA,GACRA,EAAAA,EAAA,eACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,kBACAA,EAAAA,EAAA,iBACH,CAVD,CAAYA,IAAAA,EAA2B,KAehC,MAAMC,UAA6Bl7C,IAAAA,cAC9B4W,2BAA2B7R,GAC/B,OAAImlB,EAAAA,iBAAiBC,kBAAkBplB,EAAQo2C,eACpC,KAIPn7C,IAAAA,cAAA,YACK+E,EAAQq2C,aACRr2C,EAAQo2C,cAGrB,CAEQvkC,2BAA2B7R,GAAuB,IAAAs2C,EACtD,OAAInxB,EAAAA,iBAAiBoxB,WAAsC,QAA5BD,EAACt2C,EAAQw2C,2BAAmB,IAAAF,OAAA,EAA3BA,EAA6BG,aAClD,KAGJx7C,IAAAA,cAAA,YAAO+E,EAAQw2C,oBAAqBC,cAC/C,CAEQ5kC,0BAA0B7R,GAC9B,OAAImlB,EAAAA,iBAAiBC,kBAAkBplB,EAAQ02C,cACpC,KAGJz7C,IAAAA,cAAA,YAAO+E,EAAQ02C,aAC1B,CAEQ7kC,0BAA0B7R,GAC9B,OAAImlB,EAAAA,iBAAiBC,kBAAkBplB,EAAQ22C,YACpC,KAGJ17C,IAAAA,cAAA,YAAO+E,EAAQ22C,WAC1B,CAEQ9kC,uBAAuB7R,GAC3B,OAAImlB,EAAAA,iBAAiBC,kBAAkBplB,EAAQqyB,WACpC,KAIJp3B,IAAAA,cAAA,QAAMiG,yBAAyB01C,EAAAA,EAAAA,IAAgB52C,EAAQqyB,YAClE,CAEA/2B,YAAmBN,GACfO,MAAMP,EACV,CAEOyI,SAAM,IAAAozC,EACT,MAAMC,EAAgB75C,KAAKjC,MAAM87C,cACjC,GAAI3xB,EAAAA,iBAAiBC,kBAAkB0xB,GACnC,OAAO,KAGX,OAAQA,EAAcC,eAClB,KAAKb,EAA4Bc,KAE7B,OAAO/7C,IAAAA,cAAA,aACX,KAAKi7C,EAA4Be,SAC7B,OAAOd,EAAqBe,oBAAoBJ,GACpD,KAAKZ,EAA4BiB,SAC7B,OAAOhB,EAAqBiB,oBAAoBN,GACpD,KAAKZ,EAA4BmB,QAC7B,OAAOlB,EAAqBmB,mBAAmBR,GACnD,KAAKZ,EAA4BqB,QAC7B,OAAOpB,EAAqBqB,mBAAmBV,GACnD,KAAKZ,EAA4BjzB,KAC7B,OAAOkzB,EAAqBsB,gBAAgBX,GAChD,KAAKZ,EAA4BwB,QAC7B,OAAOz6C,KAAK06C,qBAAqBb,GACrC,KAAKZ,EAA4B0B,MAE7B,OADA36C,KAAKjC,MAAMqF,UAAUqX,QAAQ,oEACtB,KACX,KAAKw+B,EAA4BphC,MAE7B,OADA7X,KAAKjC,MAAMqF,UAAUqX,QAAQ,oEACtB,KACX,QAEI,OADAza,KAAKjC,MAAMqF,UAAUqX,QAAQ,kCAA6D,QAA7Dm/B,EAAkCC,EAAcC,qBAAa,IAAAF,EAAAA,EAAI,2BACvF,KAEnB,CAEQc,qBAAqB33C,GACzB,OAAIA,EAAQ63C,aACD58C,IAAAA,cAAA,YAAOgC,KAAKjC,MAAM6B,UAAUi7C,+CAEhC78C,IAAAA,cAAA,YAAOgC,KAAKjC,MAAM6B,UAAUk7C,+CACvC,gBCxGJ,MAAMC,EACFh9C,IAEA,MAAMoJ,GAAU6zC,EAAAA,EAAAA,cAAY,KACxBj9C,EAAMgyC,eAAehyC,EAAMqoC,OAAO,GACnC,CAACroC,KAEE,UAAEE,GAAcF,EAEtB,OAAOC,IAAAA,cAACkU,EAAAA,OAAM,CAACjU,UAAWA,EAAW6N,MAAO/N,EAAM6B,UAAUq7C,gDAAiD9zC,QAASA,GAAW,EAQxHswC,EACT15C,GACCC,IAAAA,cAAoB+8C,EAA+Ch9C,qICU5Dm9C,EA2FAC,swBA3FZ,SAAYD,GACRA,EAAA,YACAA,EAAA,eACH,CAHD,CAAYA,IAAAA,EAAa,KA2FzB,SAAYC,GACRA,EAAAA,EAAA,eACAA,EAAAA,EAAA,gBACH,CAHD,CAAYA,IAAAA,EAAwB,KAQ7B,MAAMC,UAA0Bp9C,IAAAA,UA8FnCK,YAAmBN,GACfO,MAAMP,GAmJO,KAAAs9C,gCAAkC,KAAW,IAAA7H,EAC1DC,EAAAA,GAAuBC,SAAS1zC,KAAKjC,MAAM6E,QAAQH,QAA2C,QAApC+wC,EAAExzC,KAAKjC,MAAMqX,KAAKu+B,0BAAkB,IAAAH,OAAA,EAAlCA,EAAoC5xC,QAAQ0yC,WACxGt0C,KAAKwB,SAAS,CAAEuyC,aAAc,IAAK,EAMtB,KAAAuH,4BAA8B,KAAW,IAAAC,EAEtD,GAAwB,QAAxBA,EAAIv7C,KAAKw7C,uBAAe,IAAAD,GAApBA,EAAsB11C,QAAS,CAC/B,MAAM41C,EAAyDz7C,KAAKw7C,gBAAgB31C,QAAQqlC,uBACxFkQ,EAAkBM,sBAElBp7C,EAAAA,gBAAgBC,YAAY4qC,MAAMC,KAAKqQ,MACnC7+B,EAAAA,GAASC,WAAaghB,SAAS8d,gBAAgBC,UANtC,EAOTH,EAA4B,GAAGI,UAAUxuC,IAAI+tC,EAAkBU,4BAE/DL,EAA4B,GAAGI,UAAUE,OAAOX,EAAkBU,4BAA2B,GA+B5F,KAAAE,cAAiB36C,IAAwC,IAAA46C,EAC5C,QAA1BA,EAAAj8C,KAAKk8C,6BAAqB,IAAAD,GAAS,QAATA,EAA1BA,EAA4Bp2C,eAAO,IAAAo2C,GAAnCA,EAAqCE,SAAS,CAAE9P,IAAKhrC,EAAM6vB,cAAc0qB,UAAWtP,KAAMjrC,EAAM6vB,cAAckrB,aAC9Gp8C,KAAKq8C,qBAAqB,EAQb,KAAAC,mBAAsBC,IAAuC,IAAAC,EAAAC,EAAAC,EAC1E,MAAMC,EAAoC,QAA3BH,EAAGx8C,KAAK48C,2BAAmB,IAAAJ,OAAA,EAAxBA,EAA0B32C,QAC5C,IAAK82C,EACD,OAGJ,IAKIE,EALAC,EAAoC,QAA3BL,EAAGz8C,KAAK+8C,2BAAmB,IAAAN,GAAS,QAATA,EAAxBA,EAA0B52C,eAAO,IAAA42C,OAAA,EAAjCA,EAAmCpgB,iBACjCp5B,IAAd65C,IACAA,EAAY98C,KAAKg9C,iBAIrB,MAAMC,EAAiBrb,KAAKsb,KAAKP,EAAUP,YAC3C,GAAIG,IAAcpB,EAAyB7O,KAAM,CAC7CuQ,EAAkBI,EAAiBH,EACnC,MAAMK,EAAkB,EACxBN,EAAkBjb,KAAKp2B,IAAIqxC,EAAiBM,EAAiB,KAC1D,CACH,MAAMC,EAAYT,EAAUU,YAAcV,EAAUtgB,YACpDwgB,EAAkBI,EAAiBH,EACnCD,EAAkBjb,KAAKj3B,IAAIkyC,EAAiBO,EAAW,CAGvDxgC,EAAAA,GAASC,WAAkE,SAA1B,QAA3B6/B,EAAA7e,SAASC,KAAKC,qBAAa,IAAA2e,OAAA,EAA3BA,EAA6BvrB,aAAa,UAChE0rB,GAAmBA,GAGvBF,EAAUR,SAAS,CACf9P,IAAKsQ,EAAUf,UACftP,KAAMuQ,IAGV78C,KAAKwB,UAASqyC,IACV,QAA6C5wC,IAAzC4wC,EAAcyJ,uBACd,MAAO,CAAC,EAEZ,IAAIC,EAAS,EAIb,OAHIhB,IAAcpB,EAAyB7O,OACvCiR,GAAU,GAEP,CACHD,uBAAwBzJ,EAAcyJ,uBAAyBC,EAC/DC,qBAAsB1mB,KAAK2mB,MAC3BC,wBAAoBz6C,EACvB,IAGLjD,KAAKq8C,qBAAqB,EAOb,KAAAsB,qBAAuB,KAAK,IAAAC,EACrChhC,EAAAA,GAASC,WAAkE,SAA1B,QAA3B+gC,EAAA/f,SAASC,KAAKC,qBAAa,IAAA6f,OAAA,EAA3BA,EAA6BzsB,aAAa,QAChEnxB,KAAKs8C,mBAAmBnB,EAAyB0C,OAEjD79C,KAAKs8C,mBAAmBnB,EAAyB7O,KAAM,EAQ9C,KAAAwR,iBAAmB,KAAK,IAAAC,EACjCnhC,EAAAA,GAASC,WAAkE,SAA1B,QAA3BkhC,EAAAlgB,SAASC,KAAKC,qBAAa,IAAAggB,OAAA,EAA3BA,EAA6B5sB,aAAa,QAChEnxB,KAAKs8C,mBAAmBnB,EAAyB7O,MAEjDtsC,KAAKs8C,mBAAmBnB,EAAyB0C,MAAO,EAO/C,KAAAb,cAAgB,KAAa,IAAAgB,EAC1C,MAAMrB,EAAoC,QAA3BqB,EAAGh+C,KAAK48C,2BAAmB,IAAAoB,OAAA,EAAxBA,EAA0Bn4C,QACtC+/B,GAAWlvB,EAAAA,EAAAA,UAAS,CAAEpE,QAASuzB,EAAAA,YAAYC,QAASljC,QAAS5C,KAAKjC,MAAM6E,QAAQH,UACtF,IAAIq6C,EAAoB,IAcxB,MAZiB,OAAblX,GAAqB+W,EACrBG,EAAYH,GAAaA,EAAUtgB,YAAc,EAC5B,OAAbuJ,GAAkC,OAAbA,IAAsB+W,EAG/CA,IACAG,EAAYH,GAAaA,EAAUtgB,YAAc,GAHrDygB,EAAYH,GAAaA,EAAUtgB,YAAc,EAOrDygB,EAAYlb,KAAKqc,MAAMnB,GAEhBA,CAAS,EAMH,KAAAT,oBAAsB,KAAK,IAAA6B,EAAAC,EACxC,MAAMxB,EAAoC,QAA3BuB,EAAGl+C,KAAK48C,2BAAmB,IAAAsB,OAAA,EAAxBA,EAA0Br4C,QAC5C,IAAK82C,EACD,OAGJ,MACMS,EAAYT,EAAUU,YAAcV,EAAUtgB,YAC9C4gB,EAAiBrb,KAAKsb,KAAKP,EAAUP,YAEvCx/B,EAAAA,GAASC,WAAkE,SAA1B,QAA3BshC,EAAAtgB,SAASC,KAAKC,qBAAa,IAAAogB,OAAA,EAA3BA,EAA6BhtB,aAAa,SAC5D8rB,GALuB,EAMnBj9C,KAAKo+C,yBACLp+C,KAAKo+C,wBAAyB,EAC9Bp+C,KAAKq+C,eAEDr+C,KAAKo+C,yBACbp+C,KAAKo+C,wBAAyB,EAC9Bp+C,KAAKq+C,eAGLpB,GAAkBG,EACdp9C,KAAKs+C,6BACLt+C,KAAKs+C,4BAA6B,EAClCt+C,KAAKq+C,eAEDr+C,KAAKs+C,6BACbt+C,KAAKs+C,4BAA6B,EAClCt+C,KAAKq+C,iBAGLpB,GAzBuB,EA0BnBj9C,KAAKs+C,6BACLt+C,KAAKs+C,4BAA6B,EAClCt+C,KAAKq+C,eAEDr+C,KAAKs+C,6BACbt+C,KAAKs+C,4BAA6B,EAClCt+C,KAAKq+C,eAGLpB,GAAkBG,EACdp9C,KAAKo+C,yBACLp+C,KAAKo+C,wBAAyB,EAC9Bp+C,KAAKq+C,eAEDr+C,KAAKo+C,yBACbp+C,KAAKo+C,wBAAyB,EAC9Bp+C,KAAKq+C,eAAa,EASb,KAAA9K,uBAA0BnN,IAAwB,IAAAiO,EAC/DZ,EAAAA,GAAuBC,SAAS1zC,KAAKjC,MAAM6E,QAAQH,QAA2C,QAApC4xC,EAAEr0C,KAAKjC,MAAMqX,KAAKu+B,0BAAkB,IAAAU,OAAA,EAAlCA,EAAoCzyC,QAAQgyC,eAAexN,GACvHpmC,KAAKwB,UAASqyC,IAAgB,IAAAC,EAC1B,IAAIyK,EAAqB1K,EAAcyJ,uBAIvC,OAHIiB,IAAuBv+C,KAAKo+C,wBAA0Bp+C,KAAKs+C,6BAC3DC,GAAsB,GAEnB,CACHxK,aAAwC,QAA5BD,EAAED,EAAcE,oBAAY,IAAAD,OAAA,EAA1BA,EAA4BrmC,QAAOnD,GAAQA,EAAK87B,SAAWA,IACzEoX,qBAAsB1mB,KAAK2mB,MAC3BC,wBAAoBz6C,EACpBq6C,uBAAwBiB,EAC3B,GACH,EA2BW,KAAAC,eAAkBpY,GAAmB,KAClDpmC,KAAKy+C,oBAAsBrY,EAE3BpmC,KAAKwB,SAAS,CACVg8C,qBAAsB1mB,KAAK2mB,MAC3BC,mBAAoBtX,GACtB,EAQW,KAAAsY,gBAAmBtY,GAAmB,KAC/CpmC,KAAKy+C,sBAAwBrY,IAIjCpmC,KAAKy+C,yBAAsBx7C,EAC3BwJ,KAAS,KACLzM,KAAKwB,SAAS,CACVg8C,qBAAsB1mB,KAAK2mB,MAC3BC,wBAAoBz6C,GACtB,GACH,IAAG,EAuHO,KAAA07C,QAAU,KACvB,MAAMC,GAAoB/jC,EAAAA,EAAAA,IAAW,OAAQ7a,KAAKjC,MAAM6E,QAAQJ,gBAAkB,GACxD,KAAtBq7B,SAASghB,SACT35C,OAAOC,SAASiU,KAAOwlC,EAEvB15C,OAAO45C,QAAQC,MAAO,EAtiB1B/+C,KAAKu0C,YAAc,GAAG6G,EAAkBn9C,aAAa+B,KAAKjC,MAAM0C,MAAMwxC,EAAAA,OAAOC,KAAKC,iBAElFnyC,KAAKzB,MAAQ,CACTw1C,kBAAc9wC,EACdu6C,qBAAsB1mB,KAAK2mB,MAC3BC,wBAAoBz6C,EACpBq6C,uBAAwB,GAG5Bt9C,KAAKw7C,gBAAkBx9C,IAAAA,YACvBgC,KAAKk8C,sBAAwBl+C,IAAAA,YAC7BgC,KAAK48C,oBAAsB5+C,IAAAA,YAC3BgC,KAAK+8C,oBAAsB/+C,IAAAA,WAC/B,CA3DQ4W,kCAAkClW,GACtC,MAAMsgD,EAAiBtgD,EAAS8J,KAAIzF,IAAO,IAAAk8C,EAAA,OAA0B,QAA1BA,EAAIl8C,EAAQi8C,sBAAc,IAAAC,OAAA,EAAtBA,EAAwBC,kBAAkB,IACnFC,EAAsC7+C,EAAAA,gBAAgB8+C,QAAQJ,GAG9DK,EAAqB/+C,EAAAA,gBAAgBg/C,YACvCH,EACK1xC,QAAOosC,GAHY,IAGKA,EAAc0F,mBACtC/2C,KAAIqxC,GAAiBA,EAAchxC,QAEtC22C,EAA2Bl/C,EAAAA,gBAAgBm/C,OAAOJ,GAKxD,OAJ6B/+C,EAAAA,gBAAgBg/C,YACzCE,EAAyBh3C,KAAIvI,GAAQk/C,EAAkB5wC,MAAKsrC,GAAiBA,EAAchxC,OAAS5I,MAI5G,CAEQ2U,8BAA8BlW,GAClC,MAAM6E,EAAa7E,EAAS8J,KAAIzF,GAAWA,EAAQ0qB,YAAYxU,aACzDymC,EAAoCp/C,EAAAA,gBAAgB8+C,QAAQ77C,GAAYkK,QAC1EF,IAAc2a,EAAAA,iBAAiBC,kBAAkB5a,EAAUuB,kBAGzD6wC,EAAer/C,EAAAA,gBAAgBg/C,YAAYI,EAAcl3C,KAAI+E,GAAaA,EAAUC,sBAG1F,OAF2BlN,EAAAA,gBAAgBm/C,OAAOE,EAGtD,CAEQ/qC,iCAAiC7R,GACrC,OAAIsc,EAAAA,iBAAiBC,mBAAmBvc,aAAO,EAAPA,EAAS02B,aACtC,KAEJz7B,IAAAA,cAAA,KAAGC,UAAW,GAAGm9C,EAAkBn9C,0BAA2B8E,EAAS02B,YAClF,CAEQ7kB,qCACJ,MAAO,CACH3W,UAAWm9C,EAAkBwE,mBAErC,CAoBO35C,oBAAiB,IAAAwuC,EACpBz0C,KAAK00C,gBACLjB,EAAAA,GAAuBC,SAAS1zC,KAAKjC,MAAM6E,QAAQH,QAA2C,QAApCgyC,EAAEz0C,KAAKjC,MAAMqX,KAAKu+B,0BAAkB,IAAAc,OAAA,EAAlCA,EAAoC7yC,QAAQ+yC,kBAAkBC,UACtH,CACIC,WAAY70C,KAAKu0C,YAKjBO,QAASA,KAEL90C,KAAK00C,eAAe,IAI5B93B,EAAAA,GAASC,WACT3X,OAAO2iB,iBAAiB,UAAU,KAC9B7nB,KAAKs7C,6BAA6B,IAG1Ct7C,KAAKs7C,6BACT,CAEOxzB,uBAAoB,IAAAitB,EACvBtB,EAAAA,GAAuBC,SACnB1zC,KAAKjC,MAAM6E,QAAQH,QACe,QADRsyC,EAC1B/0C,KAAKjC,MAAMqX,KAAKu+B,0BAAkB,IAAAoB,OAAA,EAAlCA,EAAoCnzC,QACtC+yC,kBAAkBK,YAAYh1C,KAAKu0C,YACzC,CAEOluC,sBACHC,EACAC,GAEA,OAAIvG,KAAKzB,MAAMw1C,eAAiBxtC,EAAUwtC,cAAgB/zC,KAAKjC,QAAUuI,IAKrEtG,KAAKzB,MAAMm/C,qBAAuBn3C,EAAUm3C,oBAC5C19C,KAAKzB,MAAM++C,yBAA2B/2C,EAAU+2C,uBAExD,CAEO92C,SAAM,IAAAyuC,EAAAC,EACT,MAAM7tC,EAAST,EAAAA,EAAA,GACR5G,KAAKjC,OAAK,IACbsqB,YAAa,CACTA,YAAaroB,KAAKjC,MAClBE,UAAWm9C,EAAkBn9C,WAEjC4hD,+BAAgC7/C,KAAKq7C,gCACrChG,oBAAoB,EACpByK,gBAAgB,EAChBloC,QAAS5X,KAAK+/C,iBACdC,QAAShgD,KAAKigD,iBACd5J,eAAgBr2C,KAAKs2C,wBACrB4J,wBAAyB9E,EAAkB+E,8BAC3CC,gBAAiBpgD,KAAKqgD,yBACtBC,YAAatgD,KAAKugD,qBAClBC,eAAgBxgD,KAAKygD,8BACrBC,gBACI1iD,IAAAA,cAAA,OAAKC,UAAW,GAAGm9C,EAAkBn9C,8BAA+B+B,KAAKjC,MAAM6uC,MAAM+T,+BAIvF5M,EAAsC,QAA1BkB,EAAGj1C,KAAKzB,MAAMw1C,oBAAY,IAAAkB,EAAAA,EAAIj1C,KAAK4gD,qCAAiE,QAA7B1L,EAACl1C,KAAKjC,MAAMqX,KAAK2+B,oBAAY,IAAAmB,OAAA,EAA5BA,EAA8BtzC,QACxH,QAAqBqB,IAAjB8wC,EACA,OAAO/zC,KAAKjC,MAAMyqB,WAAWnhB,GAIjC,IADuBrH,KAAKjC,MAAM6E,QAAQH,QAAQgqC,QAAQoU,mBAClCvgD,EAAAA,gBAAgBC,YAAYwzC,GAEhD,OADA1sC,EAAUy4C,gBAAiB,EACpB9/C,KAAKjC,MAAMyqB,WAAWnhB,GAG7B/G,EAAAA,gBAAgBC,YAAYwzC,KAC5B1sC,EAAUy5C,iBAAmB9gD,KAAKjC,MAAM6B,UAAUmhD,2BAA2Bh9C,QAAQ,MAAOgwC,EAAalyC,OAAOwC,aAGpHrE,KAAKq8C,sBACL,MAAM2E,EAAuBhhD,KAAK81C,qBAAqB/B,GACjDkN,EAAwBjhD,KAAKkhD,yBAAyBnN,GACtDoN,EAYA,GA4BN,OA3BAF,SAAAA,EAAuBz4C,KAAI+E,IACvB,MAAM+pC,EAAiBt3C,KAAKohD,0BAA0B7zC,EAAWyzC,GAEjE,OADAG,EAAsBvtB,KAAK0jB,GACpB6J,CAAqB,IAEhC95C,EAAUguC,oBAAqB,EAC/BhuC,EAAUg6C,eAAiBrhD,KAAKw7C,gBAChCn0C,EAAUi6C,qBAAuBthD,KAAKk8C,sBACtC70C,EAAUk6C,mBAAqBvhD,KAAK48C,oBACpCv1C,EAAUm6C,mBAAqBxhD,KAAK+8C,oBACpC11C,EAAUm2C,qBAAuBx9C,KAAKzB,MAAMi/C,qBAC5Cn2C,EAAUq2C,mBAAqB19C,KAAKzB,MAAMm/C,mBAC1Cr2C,EAAUo6C,0BAA4BzhD,KAAKs+C,2BAC3Cj3C,EAAUq6C,sBAAwB1hD,KAAKo+C,uBACvC/2C,EAAUi2C,uBAAyBt9C,KAAKzB,MAAM++C,uBAC9Cj2C,EAAUs6C,oBAAsB3hD,KAAK29C,qBACrCt2C,EAAUu6C,gBAAkB5hD,KAAK89C,iBACjCz2C,EAAUw6C,aAAe7hD,KAAKg8C,cAC9B30C,EAAUy6C,cAAgB9hD,KAAKw+C,eAC/Bn3C,EAAU06C,eAAiB/hD,KAAK0+C,gBAChCr3C,EAAU6uC,sBAAwBl2C,KAAKuzC,uBACvClsC,EAAUwuC,iBAAmBmL,EAC7B35C,EAAU26C,mBAAqB5G,EAAkB6G,uBAAuBlO,GACxE1sC,EAAU66C,gBAAkBf,EAC5B95C,EAAU86C,qBAAuB/G,EAAkBgH,2BAA2BrO,GAC9E1sC,EAAUg7C,oBAAsBriD,KAAKsiD,uBAAuBj7C,EAAU86C,qBAAsB96C,EAAUwuC,kBAE/F71C,KAAKjC,MAAMyqB,WAAWnhB,EACjC,CA6BQu5C,qCACJ1N,GAAqD,IAAAqD,EAErD,MAAM7xC,GAAY4D,EAAAA,EAAAA,IAAatI,KAAKjC,MAAM6E,QAAQH,UAClD8F,EAAAA,EAAAA,mBAAkB7D,GAElB,OAD0F,QAAlE6xC,EAAGrD,aAAW,EAAXA,EAAazlC,QAAO1K,GAAWA,EAAQ2B,YAAcA,WAAU,IAAA6xC,EAAAA,OAAItzC,CAElG,CAEQV,sBAAmB,IAAAi0C,EACvB,MAAMh4B,EAAQi1B,EAAAA,GAAuBC,SAAS1zC,KAAKjC,MAAM6E,QAAQH,QAA2C,QAApC+zC,EAAEx2C,KAAKjC,MAAMqX,KAAKu+B,0BAAkB,IAAA6C,OAAA,EAAlCA,EAAoC50C,QAAQ4c,MAChH7Z,EAAQ,IAAI49C,EAAAA,GAAoC/jC,GACtD,IAAI00B,QACEsP,EAAAA,EAAAA,IAAqC79C,EAAO3E,KAAKjC,MAAM6E,QAAQJ,eAAeb,MAAK2I,IACrF4oC,EAAc5oC,CAAI,IAEtB,MAAMqsC,EAAyB32C,KAAK4gD,qCAAqC1N,GACzElzC,KAAKwB,SAAS,CAAEuyC,aAAc4C,GAClC,CAmMQ8L,iBAAiB1/C,GAAmC,IAAA2/C,EACxD,MAAMC,EAAgBriD,EAAAA,gBAAgBC,YAAYP,KAAKjC,MAAM6uC,MAAMgW,YAAc5iD,KAAKjC,MAAM6uC,MAAMgW,WAAW,GAAK,KAClH,GAAI16B,EAAAA,iBAAiBC,kBAAkBw6B,GACnC,OAAO,KAGX,MAAM91C,EAAmD,QAAjC61C,EAAG3/C,EAAQ0qB,YAAYxU,kBAAU,IAAAypC,OAAA,EAA9BA,EAAgCj1C,QAAOF,IAAS,IAAA8E,EAAA,OAA4B,QAA5BA,EAAI9E,EAAUuB,sBAAc,IAAAuD,OAAA,EAAxBA,EAA0BE,KAAK,IAE9G,OAAOvU,IAAAA,aAAmB2kD,EAAqC,CAC3DE,kBAAmB9/C,EAAQ0qB,YAAYzqB,SACvC6J,sBAER,CAyCQ8K,oBAAoB1Z,EAAmB8E,GAAuB,IAAAyN,EAAAC,EAClE,MACI7N,SACIJ,eACIoO,gBAAgB,YAAElO,IAEtBD,SACIkP,KAAK,iBAAEC,MAGf5R,KAAKjC,MAET,GAAImqB,EAAAA,iBAAiBC,kBAAkBplB,GACnC,OAGJ,MAAM+/C,EAAwB,kBACxB9jD,EAAuC,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAG2jD,EAAuB1jD,EAAG,EAAGC,EAAG,GACzCC,GAAI,CAAEH,EAAG2jD,EAAuB1jD,EAAG,EAAGC,EAAG,GACzCE,GAAI,CAAEJ,EAAG2jD,EAAuB1jD,EAAG,EAAGC,EAAG,IAE7CG,UAAU,GAGd,OACIxB,IAAAA,cAACoT,EAAAA,GAAK,CACFC,QAAStO,aAAO,EAAPA,EAAS8F,KAClBF,IAAK5F,EAAQ8F,KACbyI,IAA4B,QAAzBd,EAAEzN,EAAQwO,uBAAe,IAAAf,EAAAA,EAAI,GAChCgB,YAA+E,QAApEf,GAAEgB,EAAAA,EAAAA,qBAAoB1O,EAAQ2O,OAAQhP,EAAakP,UAAiB,IAAAnB,EAAAA,EAAI,GACnFI,aAAc7Q,KAAKjC,MAAM6E,QAAQH,QAAQoO,aACzCvJ,cAAetI,EACf6S,oBAAoB,QACpB5T,UAAWA,EACX2S,eAAgB5Q,KAAKjC,MAAM6E,QAAQJ,cAAcoO,gBAG7D,CAEQmyC,qBAAqB3c,GACzB,MAAM4c,EAAqBhjD,KAAKzB,MAAMm/C,qBAAuBtX,EAC7D,IAAIoS,EAAkB4C,EAAkB6H,yBAIxC,OAHID,IACAxK,EAAkBrmC,IAAWqmC,EAAiB,uCAE3C,CACHv6C,UAAWu6C,EACX7vC,IAAK,GAAG6vC,cAA4BpS,KAAUpmC,KAAKzB,MAAMm/C,sBAAsB19C,KAAKzB,MAAM++C,yBAC1Fja,aAAcrjC,KAAKw+C,eAAepY,GAClC7C,aAAcvjC,KAAK0+C,gBAAgBtY,GAE3C,CAEQ8c,mBAAmB9c,GACvB,MAAM4c,EAAqBhjD,KAAKzB,MAAMm/C,qBAAuBtX,EAC7D,IAAI+c,EAAgB/H,EAAkBgI,mBAItC,OAHIJ,IACAG,EAAgBhxC,IAAWgxC,EAAe,uCAEvC,CACHllD,UAAWklD,EACXx6C,IAAK,GAAGw6C,cAA0B/c,KAAUpmC,KAAKzB,MAAMm/C,qBACvDra,aAAcrjC,KAAKw+C,eAAepY,GAClC7C,aAAcvjC,KAAK0+C,gBAAgBtY,GACnClmC,KAAM,WACN8L,SAAU,EAElB,CAEQq3C,qBAAqB/qB,GAAuB,IAAAgrB,EAChD,GAAIp7B,EAAAA,iBAAiBC,kBAAkBmQ,aAAM,EAANA,EAAQirB,eAC3C,OAAO,KAGX,MAAMC,EAAclrB,EAIpB,OACIt6B,IAAAA,cAACy6B,EAAAA,gBAAe,CACZR,UAAWurB,EAAYD,cACvB5qB,UAAQ,EACR7xB,WAAW8qB,EAAAA,EAAAA,QAAO5xB,KAAKjC,MAAM6B,UAAU6jD,4CAA6CD,EAAYD,cAAe,KAC/G7qB,YAAa,GAA2B,QAA3B4qB,EAAGE,EAAYE,oBAAY,IAAAJ,EAAAA,EAPpB,IAQpBK,iCAA+B,EAC/BvuC,KAAM,CAAC,EACPxS,QAAS5C,KAAKjC,MAAM6E,QACpBnC,GAAIT,KAAKjC,MAAM0C,GACfgY,SAAUzY,KAAKjC,MAAM0a,UAGjC,CAEQgoC,8BACJ,OACIziD,IAAAA,cAACkU,EAAAA,OAAMlL,OAAAC,OAAA,CACHhJ,UAAU,uCACN+B,KAAKjC,MAAMqF,UAAS,CACxBlD,KAAK,SACLkZ,KAAK,IACLjS,QAASnH,KAAK2+C,QACd7yC,MAAO9L,KAAKjC,MAAM6B,UAAUgkD,sBAE3B5jD,KAAKjC,MAAM6B,UAAUgkD,oBAGlC,CAgBQC,kBAAkBC,GACtB,OAAIA,IAAgBC,EAAAA,qBAAqBC,MAC9BhkD,KAAKjC,MAAM6B,UAAUqkD,2CAE5BH,IAAgBC,EAAAA,qBAAqBG,KAC9BlkD,KAAKjC,MAAM6B,UAAUukD,0CAG5BL,IAAgBC,EAAAA,qBAAqBK,MAC9BpkD,KAAKjC,MAAM6B,UAAUykD,gDADhC,CAIJ,CAEQjD,0BAA0B0C,EAAqBplD,GACnD,MAAM4lD,EAAqB,GAAGlJ,EAAkBmJ,qCAAqCT,IAC/EU,EAAuBxkD,KAAK6jD,kBAAkBC,GAC9C/2C,GAAgBwqC,EAAAA,EAAAA,6CAA4CuM,GAClE,IAAIW,EAAyBvJ,EAAcl1B,KAE3C,MAAM0+B,EAAgE1kD,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAO8/C,wBAEhGrkD,EAAAA,gBAAgBC,YAAYmkD,IAC3BA,SAAAA,EAAiC7xC,SAAS+xC,EAAAA,eAAe7K,OAD1Dz5C,MAEAokD,IAAAA,EAAiC7xC,SAAS9F,KAE1C03C,EAAyBvJ,EAAc2J,QAG3C,MAAMC,EAAyBpmD,EAAS8J,KAAIu8C,IAAkB,IAAAC,EAC1D,IAEIC,EAFA13C,EAAgC,GAChC23C,EAAoB,GAEI,QAA5BF,EAAAhlD,KAAKjC,MAAMqX,KAAK2+B,oBAAY,IAAAiR,GAAQ,QAARA,EAA5BA,EAA8BpjD,cAAM,IAAAojD,GAApCA,EAAsCx8C,KAAI28C,IACwD,IAADC,EAAAC,EAAzFF,EAAkB13B,YAAYzqB,WAAa+hD,EAAgBhiD,QAAQ0qB,YAAYzqB,WAC/EuK,EAAoD,QAA3C63C,EAA+B,QAA/BC,EAAGF,EAAkB5hD,kBAAU,IAAA8hD,OAAA,EAA5BA,EAA8B9hD,kBAAU,IAAA6hD,EAAAA,EAAI,IAE5D,OAAO73C,CAAS,IAGhBk3C,IAA2BvJ,EAAc2J,SACzCI,EACIjnD,IAAAA,cAAA,OAAKC,UAAU,2BACVsP,EAAU/E,KAAI88C,GAEPtnD,IAAAA,cAAA,OACIC,UAAU,+BACV0K,IAAK,gCAAgCo8C,EAAgBhiD,QAAQqjC,UAE5Dkf,EAAe1jD,OAAO4G,KAAI+8C,IAAgB,IAAAC,EACvC,IAAIC,EACJ,MAAMC,EA8BA,QA9BQF,EACVD,EAAc/8C,KAAiBm9C,IAAa,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACxC,IAAIC,GAA8B,EAClC,MAAMx5C,EAAmE,QAAjD+4C,EAAGb,EAAgBhiD,QAAQ0qB,YAAYxU,kBAAU,IAAA2sC,OAAA,EAA9CA,EAAgDn4C,QACvEnD,GAAQA,EAAKkD,qBAAuBm4C,EAAWn4C,qBAEnDX,SAAAA,EAAoBrE,KAAI89C,IAAoB,IAAAC,EAQxC,YANyCtjD,IAArCqjD,EAAkBx3C,gBAClBw3C,EAAkBx3C,eAAe03C,eACJ,QADeD,EACxCZ,EAAW72C,sBAAc,IAAAy3C,OAAA,EAAzBA,EAA2BC,eAE/BH,GAAqB,GAElBA,CAAkB,IAGzBV,EAAWn4C,qBAAuBs2C,IAClC2B,EAAqBE,EAAWn4C,oBAEpC,MAAM0C,EAAgBnD,EACtB,MAAO,CACHq5B,OAAQ,GAAsC,QAAtCyf,EAA4B,QAA5BC,EAAGH,EAAW72C,sBAAc,IAAAg3C,OAAA,EAAzBA,EAA2B9iD,gBAAQ,IAAA6iD,EAAAA,EAAI,MACvC,QADyCE,EAA6B,QAA7BC,EAAIL,EAAW72C,sBAAc,IAAAk3C,OAAA,EAAzBA,EAClDzzC,aAAK,IAAAwzC,EAAAA,EAAI,KACf/kD,MAAuC,QAAlCilD,EAA2B,QAA3BC,EAAEP,EAAW72C,sBAAc,IAAAo3C,OAAA,EAAzBA,EAA2B3zC,aAAK,IAAA0zC,EAAAA,EAAI,GAC3C/1C,gBACAu2C,aAAuC,QAA3BN,EAAER,EAAW72C,sBAAc,IAAAq3C,OAAA,EAAzBA,EAA2BO,aACzC3tB,SAAmC,QAA3BqtB,EAAET,EAAW72C,sBAAc,IAAAs3C,OAAA,EAAzBA,EAA2BO,SACrCC,UAAWP,EACd,WACH,IAAAb,EAAAA,EAAI,GACV,OAAIC,GAAsBA,IAAuB3B,EAEzC9lD,IAAAA,cAAC6oD,EAAAA,gBAAe,CACZl+C,IAAKm7C,EACLphD,YAAa1C,KAAKjC,MAAM6E,QAAQH,QAAQC,YACxC2d,KAAMqlC,EACNoB,oBAAoB,IAIzB,IAAI,SASnCrC,IAA2BvJ,EAAcl1B,MACzCzY,EAAU/E,KAAI8B,GACHA,EAAK1I,OAAO4G,KAAIgW,GACZA,EAAMhW,KAAI+8C,IACb,GAAIA,EAAc/3C,qBAAuBs2C,EAAa,CAAC,IAADiD,EAAAC,EAClD,MAAMC,EACY,KAAd/B,EACMllD,KAAKjC,MAAM6B,UAAUsnD,0BACrBlnD,KAAKjC,MAAM6B,UAAUsnD,0BAA0BnjD,QAAQ,IAAK,IACtEmhD,IAAwBtzB,EAAAA,EAAAA,QAAOq1B,EAAmE,QAArCF,EAA8B,QAA9BC,EAAEzB,EAAcz2C,sBAAc,IAAAk4C,OAAA,EAA5BA,EAA8Bz0C,aAAK,IAAAw0C,EAAAA,EAAI,GAAI,CAE9G,OAAO7B,CAAS,QAMhC,MAAMiC,EAAiB,CACnBnkD,SAAU+hD,EAAgBhiD,QAAQ0qB,YAAYzqB,SAC9CuP,MAAO2yC,EACPsB,YAAa1C,EACb6C,SAAU5B,EAAgBhiD,QAAQ0qB,YAAYlc,iBAGlD,MAAO,CACH41C,iBACApC,kBACAqC,KACIppD,IAAAA,cAAA,OAAK2K,IAAK,GAAGo8C,EAAgBhiD,QAAQqjC,UAAUke,KAC1CG,IAA2BvJ,EAAc2J,OAASI,EAAekC,EAAe50C,OAG5F,IAEL,MAAO,CACHuxC,cACA/2C,cAAey3C,EACfF,qBACAQ,yBAER,CACQxC,uBAAuBtD,EAAkCtgD,GAC7D,OAAOsgD,EAAex2C,KAAIqxC,IACtB,MAAMwN,EAAyB,GAAGjM,EAAkBkM,6CAA6CzN,EAAchxC,OAEzG0+C,EAAsB7oD,EAAS8J,KAAIu8C,IAAkB,IAAAyC,EACvD,MAAMC,EAA6D,QAAzCD,EAAGzC,EAAgBhiD,QAAQi8C,sBAAc,IAAAwI,OAAA,EAAtCA,EAAwCtI,mBAAmB3wC,MACpFm5C,GAAyBA,EAAsB7+C,OAASgxC,EAAchxC,OAG1E,MAAO,CACH4+C,uBACA1C,kBACAqC,KACIppD,IAAAA,cAAA,OAAK2K,IAAK,GAAGo8C,EAAgBhiD,QAAQqjC,UAAUihB,KAC3CrpD,IAAAA,cAACk7C,EAAAA,GAAoB,CACjBW,cAAe4N,EACfrkD,UAAWpD,KAAKjC,MAAMqF,UACtBR,QAAS5C,KAAKjC,MAAM6E,QACpBhD,UAAWI,KAAKjC,MAAM6B,aAIrC,IAGL,MAAO,CACHi6C,gBACAwN,yBACAE,sBACH,GAET,CAEQxH,iBACJ,OAAO/hD,IAAAA,cAACuqB,EAAAA,QAAO,CAACtqB,UAAW,GAAGm9C,EAAkBn9C,oBAAqB+nB,KAAMhmB,KAAKjC,MAAM6B,UAAU+nD,wBACpG,CAEQ1H,iBACJ,OAAOjiD,IAAAA,cAAA,OAAKC,UAAW,GAAGm9C,EAAkBn9C,sBAAuB+B,KAAKjC,MAAM6B,UAAUgoD,6BAC5F,CAEQtR,wBACJ,OACIt4C,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAW,GAAGm9C,EAAkBwE,uCAAsC,aAC1D5/C,KAAKjC,MAAM6B,UAAUioD,yCACjC1gD,QAASnH,KAAKq7C,iCAEbr7C,KAAKjC,MAAM6B,UAAUkoD,oCAGlC,CAOQ5G,yBAAyBxiD,GAC7B,MAAM6E,EAAa7E,EAAS8J,KAAIzF,GAAWA,EAAQ0qB,YAAYxU,aACzDymC,EAAoCp/C,EAAAA,gBAAgB8+C,QAAQ77C,GAE5Do8C,EAAer/C,EAAAA,gBAAgBg/C,YAAYI,EAAcl3C,KAAI+E,GAAaA,EAAUC,sBAG1F,OAF2BlN,EAAAA,gBAAgBm/C,OAAOE,EAGtD,CAEQU,yBACJ,OACIriD,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAWkU,IAAWipC,EAAkB2M,sBAAuB,GAAG3M,EAAkB2M,mCACpF7nD,KAAK,SACLiH,QAASnH,KAAK29C,qBACdqK,QAAShoD,KAAK29C,sBAEd3/C,IAAAA,cAAA,QAAMC,UAAW,GAAGm9C,EAAkB2M,wCAAuC,cAAc,SAC3F/pD,IAAAA,cAAA,QAAMC,UAAU,sBAAsB+B,KAAKjC,MAAM6B,UAAUqoD,kCAGvE,CAEQ1H,qBACJ,OACIviD,IAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAWkU,IAAWipC,EAAkB2M,sBAAuB,GAAG3M,EAAkB2M,+BACpF7nD,KAAK,SACLiH,QAASnH,KAAK89C,iBACdkK,QAAShoD,KAAK89C,kBAEd9/C,IAAAA,cAAA,QAAMC,UAAW,GAAGm9C,EAAkB2M,oCAAmC,cAAc,SACvF/pD,IAAAA,cAAA,QAAMC,UAAU,sBAAsB+B,KAAKjC,MAAM6B,UAAUsoD,8BAGvE,CAEQC,kCAAkC/hB,GACtC,OACIpoC,IAAAA,cAACy5C,EAAAA,GAAmC,CAChCx5C,UAAW,GAAGm9C,EAAkBgN,8BAChCz/C,IAAKy9B,EACLxmC,UAAWI,KAAKjC,MAAM6B,UACtBwmC,OAAQA,EACR2J,eAAgB/vC,KAAKuzC,uBACrB3wC,QAAS5C,KAAKjC,MAAM6E,QACpBnC,GAAIT,KAAKjC,MAAM0C,GACfgY,SAAUzY,KAAKjC,MAAM0a,SACrBrD,KAAM,CAAC,GAGnB,CAEQ0gC,qBAAqBp3C,GACzB,MAAM2pD,GAAmB//C,EAAAA,EAAAA,IAAatI,KAAKjC,MAAM6E,QAAQH,SAEzD,OADA8F,EAAAA,EAAAA,mBAAkB8/C,GACX3pD,EAAS8J,KAAIzF,IAChB,IAAIulD,EACJ,GAAIlxB,EAAAA,GAAiBva,UAAW,CAAC,IAAD0rC,EAC5B,MAAMvvC,GAAaoG,EAAAA,EAAAA,mBAAkBrc,EAAQ0qB,YAAaztB,KAAKjC,MAAM6E,QAAQJ,eACvEmb,EAAU,IAAIb,IAAI9D,EAAY9T,OAAOC,SAASiU,OAChDi+B,EAAAA,EAAAA,IAAiBr3C,KAAKjC,MAAM6E,QAAQJ,cAAcoO,iBAClD+M,EAAQ6B,aAAaC,IAAI,YAAa,GAAG1c,EAAQ2B,aAEvB,QAA9B6jD,EAAAxlD,EAAQ0qB,YAAYxU,kBAAU,IAAAsvC,GAA9BA,EAAgC//C,KAAI+E,IAAY,IAAAi7C,EAC5C,MAAMlR,EAAyC,QAA3BkR,EAAGj7C,EAAUuB,sBAAc,IAAA05C,OAAA,EAAxBA,EAA0Bj2C,MACjD,IAAK8M,EAAAA,iBAAiBC,mBAAmBg4B,GAAiB,CACtD,MAAMvqC,GAAgBwqC,EAAAA,EAAAA,6CAA4ChqC,EAAUC,oBAC5EmQ,EAAQ6B,aAAaC,IAAI1S,EAAeuqC,EAAiB,KAGjEgR,EAAiB3qC,EAAQvE,IAAK,CAElC,MAAM4pC,EAAqBhjD,KAAKzB,MAAMm/C,qBAAuB36C,EAAQqjC,OACrE,IAAI+c,EAAgB/H,EAAkB6H,yBAClCD,IACAG,EAAgBhxC,IAAWgxC,EAAe,uCAE9C,MAAMsF,EAAuB1lD,EAAQ2B,YAAc2jD,EAE7CtR,EAAiC,GAAGqE,EAAkBgN,+CACtDnR,EAAwB,GAAGF,mBAC3BG,EAAuB,GAAGkE,EAAkBgN,oCAC5CM,EAAwB,GAAGtN,EAAkBgN,qCAC7CO,EAAe3oD,KAAKg9C,gBACpBruB,EAAQ,CACVgP,MAAO,GAAGgrB,MACVC,SAAU,GAAGD,MACbE,SAAU,GAAGF,OAEjB,MAAO,CACHG,mBAAoB,CAChB7qD,UAAWklD,EACXx6C,IAAK5F,EAAQqjC,OACbllC,IAAKlB,KAAK+8C,oBACV1Z,aAAcrjC,KAAKw+C,eAAez7C,EAAQqjC,QAC1C7C,aAAcvjC,KAAK0+C,gBAAgB37C,EAAQqjC,QAC3ClmC,KAAM,WACN8L,SAAU,EACV2iB,MAAOA,GAEX5rB,UACAiW,WAAYsvC,EACZ9Q,2BAA4Bx3C,KAAKmoD,kCAAkCplD,EAAQqjC,QAC3Ehc,aACIpsB,IAAAA,cAAA,OAAKC,UAAW84C,EAAgCpuC,IAAK5F,EAAQqjC,QACxDpmC,KAAK2X,oBAAoBs/B,EAAuBl0C,EAAQ0qB,cAGjEiqB,YACI15C,IAAAA,cAAA,KAAGC,UAAWi5C,EAAsB99B,KAAMkvC,EAAgB3/C,IAAK5F,EAAQqjC,QAClErjC,EAAQ0qB,YAAY5kB,MAG7B4G,aACIzR,IAAAA,cAAA,OAAKC,UAAWyqD,EAAuB//C,IAAK5F,EAAQqjC,QAC/CrjC,EAAQiQ,OACLhV,IAAAA,cAACwa,EAAAA,eAAc,CACX5V,QAAS5C,KAAKjC,MAAM6E,QACpBnC,GAAIT,KAAKjC,MAAM0C,GACfgY,SAAUzY,KAAKjC,MAAM0a,SACrBrD,KAAM,CAAEpC,MAAOjQ,EAAQiQ,OACvB0F,cAAe1Y,KAAKjC,MAAM6B,UAAUmpD,sCACpCpwC,kBAAmB3Y,KAAKjC,MAAM6B,UAAUopD,0CACxCpwC,iBAAkB5Y,KAAKjC,MAAM6B,UAAUqpD,4CAKvDC,UAAWlpD,KAAKyiD,iBAAiB1/C,GACjC0lD,uBACAU,yBACInrD,IAAAA,cAACkU,EAAAA,OAAM,CAACkH,KAAMkvC,EAAgBx8C,MAAO9L,KAAKjC,MAAM6B,UAAUwpD,+CACrDppD,KAAKjC,MAAM6B,UAAUwpD,+CAG9BC,eAAgBrpD,KAAKkjD,mBAAmBngD,EAAQqjC,QAChDkjB,iBAAkBtpD,KAAK+iD,qBAAqBhgD,EAAQqjC,QACpDmjB,mBACuBtmD,IAAnBF,EAAQu1B,OAAuBt6B,IAAAA,cAAA,OAAK2K,IAAK5F,EAAQqjC,QAASpmC,KAAKqjD,qBAAqBtgD,EAAQu1B,cAAiBr1B,EACjHumD,wBAC4BvmD,IAAxBF,EAAQ0qB,YACJzvB,IAAAA,cAAA,OAAK2K,IAAK5F,EAAQqjC,QAASgV,EAAkBqO,0BAA0B1mD,EAAQ0qB,mBAE/ExqB,EAEX,GAET,EA5+BuBm4C,EAAAn9C,UAAoB,yBAEpBm9C,EAAAnD,uBAAyB,GAAGmD,EAAkBn9C,4BAE9Cm9C,EAAA7C,mBAAqB,GAAG6C,EAAkBnD,oCAE1CmD,EAAA1C,eAAiB,GAAG0C,EAAkB7C,4BAEtC6C,EAAAM,qBAAuB,GAAGN,EAAkB1C,yBAE5C0C,EAAAgN,oBAAsB,GAAGhN,EAAkBM,oCAE3CN,EAAA2M,sBAAwB,GAAG3M,EAAkB1C,0BAE7C0C,EAAAsO,mBAAqB,GAAGtO,EAAkB1C,uBAE1C0C,EAAApE,kBAAoB,GAAGoE,EAAkB1C,sBAEzC0C,EAAAmJ,uBAAyB,GAAGnJ,EAAkBsO,qCAE9CtO,EAAAkM,2BAA6B,GAAGlM,EAAkBsO,yCAElDtO,EAAAuO,yBAA2B,GAAGvO,EAAkB1C,8BAEhD0C,EAAA6H,yBAA2B,GAAG7H,EAAkBpE,iCAEhDoE,EAAAgI,mBAAqB,GAAGhI,EAAkBpE,0BAE1CoE,EAAAwE,mBAAqB,GAAGxE,EAAkBn9C,wBAE1Cm9C,EAAAU,2BAA6B,GAAGV,EAAkBM,+BAElDN,EAAAwO,oCAAsC,GAAGxO,EAAkBuO,wCA+8BtF,6KC9nCA,MAAME,EAA2BA,CAC7Bp3C,EAIAq3C,EACAxM,IAEO7qC,EAAOjK,KAAI,CAACxH,EAAOsS,IAClBA,IAAUgqC,EAENt/C,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,CACD0B,IAAK3H,EAAM+jD,gBAAgBuE,iBAAiB3gD,KACxC3H,EAAM+jD,gBAAgBuE,iBAAgB,CAC1CppD,KAAK,WACL6pD,SAAS,IACTp7B,MAAO3tB,EAAM+jD,gBAAgB+D,mBAAmBn6B,QAE/Cm7B,GAIN9rD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,CAAC0B,IAAK2K,GAAWtS,EAAM+jD,gBAAgBuE,iBAAgB,CAAE36B,MAAO3tB,EAAM+jD,gBAAgB+D,mBAAmBn6B,WAUvHq7B,EAAqBA,CACvBv3C,EAIAirC,IAEOjrC,EAAOjK,KAAIxH,GAEVhD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GACGjG,EAAM+jD,gBAAgBsE,eAAc,CACxC1gD,IAAK,GAAG3H,EAAM+jD,gBAAgBhiD,QAAQqjC,UAAUsX,IAChD/uB,MAAO3tB,EAAM+jD,gBAAgB+D,mBAAmBn6B,QAE/C3tB,EAAMomD,QAUV6C,EAAkFlsD,IAAQ,IAAA86C,EAAAC,EAAAoR,EAAAC,EAAAC,EAAAC,EAAAC,EACnG,OACItsD,EAAAA,cAAC6wB,EAAAA,OAAM7nB,OAAAC,OAAA,GAAKlJ,EAAMsqB,aACbtqB,EAAMyiD,eACNziD,EAAM6Z,QACP5Z,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAW,GAAGm9C,EAAAA,kBAAkBn9C,iCAAkCF,EAAM+iD,kBAC7E/iD,EAAM+hD,gBAAkB/hD,EAAMs3C,wBAAqBpyC,EAAYlF,EAAMiiD,QACrEjiD,EAAM+hD,eAAiB/hD,EAAM2iD,qBAAkBz9C,EAChDjF,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAMmiD,0BACVniD,EAAM+hD,gBAAkB/hD,EAAMs3C,mBAAqBt3C,EAAMs4C,oBAAiBpzC,GAE/ElF,EAAMs3C,mBACHr3C,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAWm9C,EAAAA,kBAAkBnD,wBAC/Bj6C,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAWm9C,EAAAA,kBAAkB7C,oBAC/Bv6C,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAWm9C,EAAAA,kBAAkB1C,eAAgBx3C,IAAKnD,EAAMsjD,gBAC1DrjD,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAW,GAAGm9C,EAAAA,kBAAkBM,wBAClC19C,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAW,GAAGm9C,EAAAA,kBAAkBM,0CAChCx6C,IAAKnD,EAAMujD,sBAEVvjD,EAAM0jD,2BAA6B1jD,EAAMqiD,gBAC1CpiD,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAWkU,IACPipC,EAAAA,kBAAkBpE,kBAClB,GAAGoE,EAAAA,kBAAkBM,qCAEzBx7C,KAAK,QAEkB,QAFZ24C,EAEV96C,EAAM83C,wBAAgB,IAAAgD,OAAA,EAAtBA,EAAwBrwC,KAAIu8C,IACzB,MAAM0D,EAAuB1D,EAAgB0D,qBACvC8B,EAAmB,GAAGnP,EAAAA,kBAAkBgN,+BAC9C,OACIpqD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GACG89C,EAAgB+D,mBAAkB,CACtCngD,IAAKo8C,EAAgB+D,mBAAmBngD,IACxCgmB,MAAOo2B,EAAgB+D,mBAAmBn6B,QAEzCo2B,EAAgBvN,2BAChBuN,EAAgB36B,aAChBgN,EAAAA,GAAiBva,UAAYkoC,EAAgBrN,iBAAcz0C,EAC3D8hD,EAAgBt1C,aACjBzR,EAAAA,cAAC0wB,EAAAA,KAAI,CAACzwB,UAAWssD,EAAkB5hD,IAAKo8C,EAAgBhiD,QAAQqjC,QAC3DqiB,EACK1D,EAAgBmE,UAChBnE,EAAgBoE,0BAEvB,KAIlBprD,EAAM2jD,uBAAyB3jD,EAAMuiD,cAG9CtiD,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAWm9C,EAAAA,kBAAkBsO,mBAC7Bc,SAAUzsD,EAAM8jD,aAChB3gD,IAAKnD,EAAMwjD,oBAEY,QAFMzI,EAE5B/6C,EAAM83C,wBAAgB,IAAAiD,OAAA,EAAtBA,EAAwBtwC,KAAI,CAAC8vB,EAAQ3vB,KAAO,IAAA8hD,EAAAC,EACzC,YAAgCznD,IAAzBq1B,EAAOixB,eAAuC,IAAR5gD,EACzC3K,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAWkU,IACP,GAAGipC,EAAAA,kBAAkBsO,iCACrBtO,EAAAA,kBAAkBpE,oBAGtBh5C,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAWm9C,EAAAA,kBAAkBuO,yBAC7BhhD,IAAK,UAAU5K,EAAMu/C,yBACrBp9C,KAAK,QAEkB,QAFZuqD,EAEV1sD,EAAM83C,wBAAgB,IAAA4U,OAAA,EAAtBA,EAAwBjiD,KAAI,CAACu8C,EAAiBzxC,IACvCA,IAAUvV,EAAMu/C,uBAEZt/C,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,CACD0B,IAAKo8C,EAAgBuE,iBAAiB3gD,KAClCo8C,EAAgBuE,iBAAgB,CACpCppD,KAAK,WACL6pD,SAAS,IACTp7B,MAAOo2B,EAAgB+D,mBAAmBn6B,QAEzC5wB,EAAM6B,UAAU+qD,oCAKzB3sD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,CACD0B,IAAKo8C,EAAgBuE,iBAAiB3gD,KAClCo8C,EAAgBuE,iBAAgB,CACpCppD,KAAK,OACL6pD,SAAS,KACTp7B,MAAOo2B,EAAgB+D,mBAAmBn6B,YAK1D3wB,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAW,GAAGm9C,EAAAA,kBAAkBuO,4BAA4BvO,EAAAA,kBAAkBwO,sCAC9E1pD,KAAK,QAEkB,QAFZwqD,EAEV3sD,EAAM83C,wBAAgB,IAAA6U,OAAA,EAAtBA,EAAwBliD,KAAIu8C,GAErB/mD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GACG89C,EAAgBsE,eAAc,CAClC1gD,IAAK,GAAGo8C,EAAgBhiD,QAAQqjC,UAAUroC,EAAM2/C,qBAChD/uB,MAAOo2B,EAAgB+D,mBAAmBn6B,QAEzCo2B,EAAgBwE,wBAOrCtmD,CACH,IAEkB,QADrBinD,EACDnsD,EAAM83C,wBAAgB,IAAAqU,OAAA,EAAtBA,EAAwB1hD,KAAI,CAACgxB,EAAa7wB,KAAO,IAAAiiD,EAAAC,EAC9C,YAA0C5nD,IAAnCu2B,EAAYgwB,oBAA4C,IAAR7gD,EACnD3K,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAWkU,IACP,GAAGipC,EAAAA,kBAAkBsO,sCACrBtO,EAAAA,kBAAkBpE,oBAGtBh5C,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAWm9C,EAAAA,kBAAkBuO,yBAC7BhhD,IAAK,eAAe5K,EAAMu/C,yBAC1Bp9C,KAAK,QAEkB,QAFZ0qD,EAEV7sD,EAAM83C,wBAAgB,IAAA+U,OAAA,EAAtBA,EAAwBpiD,KAAI,CAACu8C,EAAiBzxC,IACvCA,IAAUvV,EAAMu/C,uBAEZt/C,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,CACD0B,IAAKo8C,EAAgBuE,iBAAiB3gD,KAClCo8C,EAAgBuE,iBAAgB,CACpCppD,KAAK,WACL6pD,SAAS,IACTp7B,MAAOo2B,EAAgB+D,mBAAmBn6B,QAEzC5wB,EAAM6B,UAAUkrD,yCAKzB9sD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,CACD0B,IAAKo8C,EAAgBuE,iBAAiB3gD,KAClCo8C,EAAgBuE,iBAAgB,CACpCppD,KAAK,OACL6pD,SAAS,KACTp7B,MAAOo2B,EAAgB+D,mBAAmBn6B,YAK1D3wB,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAW,GAAGm9C,EAAAA,kBAAkBuO,4BAA4BvO,EAAAA,kBAAkBwO,sCAC9E1pD,KAAK,QAEkB,QAFZ2qD,EAEV9sD,EAAM83C,wBAAgB,IAAAgV,OAAA,EAAtBA,EAAwBriD,KAAIu8C,GAErB/mD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GACG89C,EAAgBsE,eAAc,CAClC1gD,IAAK,GAAGo8C,EAAgBhiD,QAAQqjC,UAAUroC,EAAM2/C,qBAChD/uB,MAAOo2B,EAAgB+D,mBAAmBn6B,QAEzCo2B,EAAgByE,6BAOrCvmD,CACH,IAEiB,QADpBknD,EACDpsD,EAAMmkD,uBAAe,IAAAiI,OAAA,EAArBA,EAAuB3hD,KAAI2+C,IAEpBA,aAAc,EAAdA,EAAgBp6C,gBACZ/O,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAWkU,IACPipC,EAAAA,kBAAkBmJ,uBAClBnJ,EAAAA,kBAAkBpE,kBAClBmQ,EAAe7C,oBAEnB37C,IAAKw+C,EAAe7C,oBAEpBtmD,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAWm9C,EAAAA,kBAAkBuO,yBAC7BhhD,IAAK,GAAGw+C,EAAep6C,iBAAiBhP,EAAMu/C,yBAC9Cp9C,KAAK,QAEJ2pD,EACG1C,EAAerC,uBACfqC,EAAep6C,cACfhP,EAAMu/C,yBAIdt/C,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAW,GAAGm9C,EAAAA,kBAAkBuO,4BAA4BvO,EAAAA,kBAAkBwO,sCAC9E1pD,KAAK,QAEJ8pD,EAAmB7C,EAAerC,uBAAwB/mD,EAAM2/C,wBAM3D,QADxB0M,EACDrsD,EAAMskD,2BAAmB,IAAA+H,OAAA,EAAzBA,EAA2B5hD,KAAIuiD,IAC0D,IAA/E1rC,EAAAA,iBAAiB2rC,cAAcD,EAAmBlR,cAAczkB,WACnEp3B,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAWkU,IACPipC,EAAAA,kBAAkBkM,2BAClBlM,EAAAA,kBAAkBpE,kBAClB+T,EAAmB1D,wBAEvB1+C,IAAKoiD,EAAmB1D,wBAExBrpD,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAWm9C,EAAAA,kBAAkBuO,yBAC7BhhD,IAAK,GAAGoiD,EAAmBlR,cAAchxC,QAAQ9K,EAAMu/C,yBACvDp9C,KAAK,QAEJ2pD,EACGkB,EAAmBxD,oBACnBwD,EAAmBlR,cAAchxC,KACjC9K,EAAMu/C,yBAGdt/C,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAW,GAAGm9C,EAAAA,kBAAkBuO,4BAA4BvO,EAAAA,kBAAkBwO,sCAC9E1pD,KAAK,QAEJ8pD,EAAmBe,EAAmBxD,oBAAqBxpD,EAAM2/C,2BAI1Ez6C,IAGRjF,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAWkU,IACP,GAAGipC,EAAAA,kBAAkBsO,8BACrBtO,EAAAA,kBAAkBpE,oBAGtBh5C,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAWm9C,EAAAA,kBAAkBuO,yBAC7BhhD,IAAK,OAAO5K,EAAMu/C,yBAClBp9C,KAAK,QAEkB,QAFZmqD,EAEVtsD,EAAM83C,wBAAgB,IAAAwU,OAAA,EAAtBA,EAAwB7hD,KAAI,CAACu8C,EAAiBzxC,IACvCA,IAAUvV,EAAMu/C,uBAEZt/C,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,CACD0B,IAAKo8C,EAAgBuE,iBAAiB3gD,KAClCo8C,EAAgBuE,iBAAgB,CACpCppD,KAAK,WACL6pD,SAAS,IACTp7B,MAAOo2B,EAAgB+D,mBAAmBn6B,QAEzC5wB,EAAM6B,UAAUqrD,iCAKzBjtD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,CACD0B,IAAKo8C,EAAgBuE,iBAAiB3gD,KAClCo8C,EAAgBuE,iBAAgB,CACpC36B,MAAOo2B,EAAgB+D,mBAAmBn6B,YAK1D3wB,EAAAA,cAAC0wB,EAAAA,KAAI,CACDzwB,UAAW,GAAGm9C,EAAAA,kBAAkBuO,4BAA4BvO,EAAAA,kBAAkBwO,sCAC9E1pD,KAAK,QAEkB,QAFZoqD,EAEVvsD,EAAM83C,wBAAgB,IAAAyU,OAAA,EAAtBA,EAAwB9hD,KAAIu8C,GAErB/mD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GACG89C,EAAgBsE,eAAc,CAClC1gD,IAAK,GAAGo8C,EAAgBhiD,QAAQqjC,UAAUroC,EAAM2/C,qBAChD/uB,MAAOo2B,EAAgB+D,mBAAmBn6B,QAEzCo2B,EAAgBhiD,QAAQ0qB,YAAY/b,qBAWzEzO,EAEC,EAIjB,6HC3WO,MAAMioD,EAA4DryB,IAA+D,IAA9D,qBAAEsyB,EAAoB,MAAEC,EAAK,iBAAE1lD,EAAgB,QAAE+X,GAASob,EAChI,MAAMrzB,GAAUC,EAAAA,EAAAA,kBAAiB,QAASC,EAAmBigB,EAAAA,kBAAkB0lC,kBACzEv6B,GAAahL,EAAAA,EAAAA,wBAAuBpgB,EAAmBF,GAC7D,OACIxH,EAAAA,cAAA,SAAAgJ,OAAAC,OAAA,CAAQhJ,UAAU,gCAA+B,aAAaktD,EAAsBhkD,QAASsW,GAAaqT,GACtG9yB,EAAAA,cAAA,QAAMC,UAAU,uCAAsC,kBACjDmtD,GAEA,aCLV,MAAME,EAAgDzyB,IAA8D,IAA7D,MAAE8B,EAAK,eAAE/pB,EAAc,aAAE0qB,EAAY,iBAAE51B,GAAkBmzB,EACnH,MAAM0yB,EAAgBC,EAAkB7wB,EAAOj1B,GAC/C,OACI1H,EAAAA,cAAA,QAAMC,UAAU,0BACXstD,GAAiBA,EAAc1pD,OAAS,EACrC7D,EAAAA,cAACk8B,EAAAA,GAAc,CAACS,MAAO4wB,EAAepxB,UAAW,CAAEmB,eAAc1qB,oBACjE,KACD,EAIT46C,EAAoBA,CAACC,EAAwB/lD,KAC/C,IAAK+lD,GAAgC,IAApBA,EAAS5pD,OACtB,OAAO,KAEX,MAAM0pD,EAAuC,GAoB7C,OAnBAE,EAASC,SAAQ,CAACrwB,EAAM/nB,KAEpB,MAAM9N,GAAUC,EAAAA,EAAAA,kBAAiB,QAASC,EAAkB,GAAI,IAC1Ds1B,EAAWK,EAAKL,SAAWK,EAAKL,SAAW,GACjDx1B,EAAQukC,cAAcC,MAAQhP,EAC9B,MAAMlK,GAAahL,EAAAA,EAAAA,wBAAuBpgB,EAAkBF,GACtDu1B,EAAoC,CACtCj0B,UAAWu0B,EAAKv0B,UAChB7I,UAAW,wBACX+8B,SAAUK,EAAKL,SACfC,QAASI,EAAKJ,QAAQC,eACtBC,aAAcE,EAAKF,aACnBj7B,KAAM,OACN01B,qBAAsB9E,EACtB3pB,SAASxB,EAAAA,EAAAA,kBAAiBD,EAAkBF,EAASw1B,IAEzDuwB,EAAc33B,KAAKmH,EAAa,IAG7BwwB,CAAa,ECvCXI,EAA8C9yB,IAA2C,IAA1C,KAAE7S,EAAI,aAAEsV,EAAY,eAAE1qB,GAAgBioB,EAC9F,OAAO76B,EAAAA,cAACk8B,EAAAA,GAAa,CAACj8B,UAAU,wBAAwBkrB,IAAI,OAAOnD,KAAMA,EAAMmU,UAAW,CAAEC,OAAQkB,EAAc1qB,mBAAoB,ukBC0B1I,MAAMg7C,UAAoB5tD,EAAAA,cAA1BK,cAAA,oBACW,KAAAE,MAA2B,CAC9BwuC,WAAW,EACX8e,WAAW,EACX/e,YAAa,GAGA,KAAApnC,kBAAsC6hB,EAAAA,EAAAA,oBACnDvnB,KAAKjC,MAAM6E,QAAQH,QAAQ+kB,kBAC3BxnB,KAAKjC,MAAM0pB,aACXznB,KAAKjC,MAAMqF,WAmER,KAAAqmC,iBAAoBpoC,IACnBrB,KAAKjC,MAAM8G,OAAOinD,gBAAkB9rD,KAAKjC,MAAM8G,OAAOinD,eAAe,KACrE9rD,KAAKjC,MAAM8G,OAAOinD,eAAe,GAAG9lC,KAAO3kB,EAAMgB,OAAOrB,MAAM,EAI/D,KAAAmpC,qBAAwBrP,GAAuBz5B,IAClD,GAAIrB,KAAKjC,MAAM8G,OAAOinD,gBAAkB9rD,KAAKjC,MAAM8G,OAAOinD,eAAe,GAAI,CACzE,MAAMnxB,EAAQ36B,KAAKjC,MAAM8G,OAAOinD,eAAe,GAAGnxB,MAC9CA,IACAA,EAAMG,GAAWE,SAAW35B,EAAMgB,OAAOrB,MAAK,GAKzC,KAAA2rC,MAAQ,KACrB,MAAME,EAAY7sC,KAAK+rD,cAAgB,EAAI/rD,KAAKzB,MAAMuuC,YAAc,EACpE9sC,KAAKotC,WAAWP,EAAU,EAGb,KAAAI,UAAY,KACzB,MAAMJ,EAAY7sC,KAAKgsD,eACjBhsD,KAAKjC,MAAM8G,OAAOinD,eACd9rD,KAAKjC,MAAM8G,OAAOinD,eAAejqD,OAAS,EAC1C,EACJ7B,KAAKzB,MAAMuuC,YAAc,EAC/B9sC,KAAKotC,WAAWP,EAAU,EAGb,KAAAO,WAAc95B,IACvBtT,KAAKzB,MAAMwuC,WAGf/sC,KAAKwB,SAAS,CAAEsrC,YAAax5B,GAAQ,EAGxB,KAAA04C,aAAe,IAAiC,IAA3BhsD,KAAKzB,MAAMuuC,YAEhC,KAAAif,YAAc,IAC3B/rD,KAAKjC,MAAM8G,OAAOinD,gBAAkB9rD,KAAKzB,MAAMuuC,cAAgB9sC,KAAKjC,MAAM8G,OAAOinD,eAAejqD,OAAS,EAE5F,KAAA6d,WAAa,KAC1B1f,KAAKwB,SAAS,CAAEqqD,WAAW,GAAQ,CAE3C,CA5GWrlD,SACH,MAAM,eAAEslD,EAAc,eAAErd,EAAc,SAAEH,EAAQ,YAAEE,EAAW,SAAEH,EAAQ,UAAEpwC,EAAY,IAAO+B,KAAKjC,MAAM8G,QACjG,qBAAEsmD,EAAoB,iBAAEc,EAAgB,WAAEC,EAAU,gBAAEC,GAAoBnsD,KAAKjC,MAAM6B,WACrF,UAAEisD,EAAS,YAAE/e,GAAgB9sC,KAAKzB,MAExC,IAAKstD,EAED,OADA7rD,KAAKjC,MAAM6E,QAAQQ,UAAUnB,MAAM,sDAC5B,KAGX,MAAMoF,EAAST,EAAAA,EAAA,GAGR5G,KAAKjC,OAAK,IACbE,UAAWkU,IAAW,kBAAmBlU,GACzC4tD,YACAtc,UAAWvvC,KAAK0f,WAChB0sC,YAAapsD,KAAKmqC,qBAClBkiB,WAAYrsD,KAAKypC,iBAEjB6iB,iBAAkB,CACdruD,UAAWkU,IAAW,kBAAmBlU,GACzCoqB,YAAaroB,KAAKjC,MAClBmC,KAAM,SACN,aAAcisD,GAElBI,qBAAsB,CAClBpjC,IAAKwiC,GAETa,sBAAuB,CACnBrjC,IAAKmiC,EACL5lD,iBAAkB1F,KAAK0F,kBAE3B+mD,aAAc,CAAExuD,UAAW,4BAC3ByuD,gBAAiBR,EACjBJ,iBACAhf,cACA6f,cAAe,CACXxjC,IAAK8kB,EAAAA,SACLhwC,UAAW,4BACX6uC,cACAW,KAAMztC,KAAK2sC,MACXe,SAAU1tC,KAAKitC,UACfU,yBAA0B3tC,KAAKotC,WAC/Bwf,cAAepe,EACfF,WACAE,cACAH,YAEJwe,YAAape,GACTzwC,EAAAA,cAACktD,EAAsBlkD,OAAAC,OAAA,GACf,CACAwW,QAASzd,KAAK0f,WACd0rC,MAAOa,EACPd,uBACAzlD,iBAAkB1F,KAAK0F,sBAMvC,OAAO1F,KAAKjC,MAAMyqB,WAAWnhB,EACjC,EAgDJ,qFC1JA,MAmCA,EAnCyDtJ,IACrD,MAAM,iBACFuuD,EAAgB,aAChBG,EAAY,YACZI,EAAW,eACXf,EAAc,qBACdS,EAAoB,sBACpBC,EAAqB,cACrBG,EAAa,gBACbD,EAAe,YACfN,EAAW,WACXC,GACAtuD,EAEE+uD,EACFhB,GACAA,EAAetjD,KAAI,CAAC4Z,EAAS9O,IAErBtV,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKwlD,EAAY,CAAE9jD,IAAK2K,EAAK,YAAY,MAAMpT,KAAK,YACrDlC,EAAAA,cAAA,QAAMC,UAAU,WAAWyuD,GAC1BtqC,EAAQ4D,MAAQhoB,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKslD,EAAoB,CAAEvmC,KAAM5D,EAAQ4D,KAAM7e,QAASklD,KAC7EjqC,EAAQuY,OAASvY,EAAQuY,MAAM94B,OAAS,GACrC7D,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKulD,EAAqB,CAAE7xB,MAAOvY,EAAQuY,MAAOxzB,QAASilD,QAMpF,OACIpuD,EAAAA,cAAC6wB,EAAAA,OAAM7nB,OAAAC,OAAA,GAAKqlD,GACRtuD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAK0lD,EAAa,CAAEnuC,MAAOsuC,KAC/BD,EACI,mDCMV,MAKP,GALsCE,EAAAA,EAAAA,IAA2B,CAC7DtsD,GAAI,gEACJ0tB,OApCJ5rB,eAA4BoC,EAA8BqoD,GACtD,IA6BJ,SAAsBroD,GAClB,OAAOA,KAAWA,EAAMy0B,aAAez0B,EAAMsoD,QACjD,CA/BSC,CAAavoD,GAEd,OADAqoD,EAAIvoC,MAAM,4EAA4E9f,KAC/E,GAGX,MAAMoY,EACF,GAAGpY,EAAMwoD,wCAAwCxoD,EAAMy0B,2BAC3Cz0B,EAAMsoD,sBACLtoD,EAAMhC,oBACTgC,EAAMyoD,SAEpB,OAAOC,EAAAA,EAAAA,IAAoBtwC,EAAY,OAAQpY,EAAM2oD,eAAgB,CAAEziC,QAAS,CAAE0iC,cAAe,YAAY5oD,EAAM6oD,mBAC9G7rD,MAAK8rD,GACsB,MAApBA,EAAS//C,QAAsC,MAApB+/C,EAAS//C,QACpCs/C,EAAIvoC,MAAM,2DACVuoC,EAAIvoC,MAAMgpC,EAASr4C,MACZ,IAEJq4C,EAASr4C,OAEnBpT,OAAMC,IACH+qD,EAAIvoC,MAAM,2DACVuoC,EAAI5pD,UAAUsqD,UAAUzrD,GACxB+qD,EAAI5pD,UAAU+e,MAAM,2DACpB6qC,EAAIvoC,MAAMxiB,GACH,KAEnB,2KC9BO,MAAM0rD,EAoCTtvD,YACI+6B,EACA6zB,EACAtqD,EACAyqD,EACAE,EACAE,EACAL,GAWG,KAAAS,YAAc,IAAM,mBAEpB,KAAAC,mBAAqB,IAAM,mBAE3B,KAAAC,cAAgB,IAAiB,OAbpC9tD,KAAKo5B,UAAYA,EACjBp5B,KAAKitD,SAAWA,EAChBjtD,KAAK2C,UAAYA,EACjB3C,KAAKotD,OAASA,EACdptD,KAAKstD,eAAiBA,EACtBttD,KAAKwtD,cAAgBA,EACrBxtD,KAAKmtD,gBAAkBA,CAC3B,gBC6BJ,MAAMY,EAAiBhwD,GAA6B,KAChDqC,EAASrC,EAAM,EAONiwD,EAAejwD,IACxB,MAAMyH,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS1H,EAAM2H,iBAAmBigB,EAAAA,kBAAkBsoC,cAC/EC,GAAwBpoC,EAAAA,EAAAA,wBAAuB/nB,EAAM2H,iBAAmBF,GAC9EA,EAAQukC,cAAcC,MAAQrkB,EAAAA,kBAAkBwoC,OAChD,MAAMC,GAAwBtoC,EAAAA,EAAAA,wBAAuB/nB,EAAM2H,iBAAmBF,GAC9E,MAAO,CACH6oD,MAAO,CACHllC,IAAKpiB,EAAAA,MACL9I,UAAWF,EAAMuwD,SAAWC,IAAWxwD,EAAMuwD,SAAU,4BAA8B,2CACrFznD,OAAQ9I,EAAMywD,cACdx/B,gBAAiB,aACjBxwB,OAAQT,EAAMS,OACdiwD,eAAgB1wD,EAAM2wD,WAE1BC,YAAaC,EAAgB7wD,GAC7B8wD,YAAa,CAAE1lC,IAAKnX,EAAAA,YAAa/T,UAAW,0BAC5C6wD,UAAW,CAAE3lC,IAAKrhB,EAAAA,UAAW7J,UAAW,wBACxC8wD,aACI/wD,IAAAA,cAACkU,EAAAA,OAAMlL,OAAAC,OAAA,CAAChJ,UAAU,yBAAyBkJ,QAASpJ,EAAMywD,eAAmBN,GACxEnwD,EAAM6B,UAAUovD,yBAGzBC,aACIjxD,IAAAA,cAACkU,EAAAA,OAAMlL,OAAAC,OAAA,CACHhJ,UAAU,yBACVkJ,QAAS4mD,EAAchwD,IACnBqwD,EAAqB,CACzB9iD,SAAU4jD,EAAenxD,KAExBA,EAAM6B,UAAUuvD,wBAGzB72B,OAAQ82B,EAAarxD,GACrBsxD,YAAaC,EAAavxD,GAC1BwxD,WAAYA,EAAWxxD,GACvByxD,WAAYA,EAAWzxD,GACvB0xD,UAAWA,EAAU1xD,GACrB2xD,UAAWA,EAAU3xD,GACrB4xD,iBAAkBC,EAAkB7xD,GACpC8xD,KAAM,CAAE1mC,IAAK,OAAQlrB,UAAW,uBAAwBkC,aAAc,OACtE2vD,SAAU,CAAE3mC,IAAK,MAAOlrB,UAAW,sBAAuBkC,aAAc,OACxE8B,MACIjE,IAAAA,cAAC8U,EAAAA,MAAK,CAAC7U,UAAU,wBAAwBO,OAAQT,EAAMgyD,SAAU3uD,MAAM,UAClErD,EAAM6B,UAAUowD,kBAG5B,EAGCpB,EAAmB7wD,GAEjBC,IAAAA,cAACkJ,EAAAA,YAAW,CAACL,OAAQ9I,EAAMywD,cAAevwD,UAAU,0BAC/CF,EAAMkyD,YAAclyD,EAAMkyD,WAAWC,SAAWnyD,EAAM6B,UAAUuwD,qBAAuBpyD,EAAM6B,UAAUwwD,uBAK9GlB,EAAkBnxD,IACZA,EAAMu6B,SAAW+3B,EAA2BtyD,EAAMuyD,cAAgBD,EAA2BtyD,EAAMwyD,aAGzGnB,EAAgBrxD,GAEdC,IAAAA,cAACy6B,EAAAA,gBAAe,CACZE,UAAU,EACVV,UAAW,EACXnxB,UAAW/I,EAAM6B,UAAU4wD,sBAC3BC,cAAe1yD,EAAMu6B,OACrB11B,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM2yD,SACVj4C,SAAU1a,EAAM4yD,WAChBv7C,KAAM,CAAC,EACPzM,IAAI,UACJjI,SAAU3C,EAAM6yD,iBAKtBtB,EAAgBvxD,GAEdC,IAAAA,cAAA,SAAOC,UAAU,+BAA+B0K,IAAI,gBAC/C5K,EAAM6B,UAAUixD,kBAAiB,KAKxCtB,EAAcxxD,IAChB,MAAMoD,EAAYpD,EAAM6E,QAAQ+O,IAAI9M,OAAOisD,qBAE3C,OACI9yD,IAAAA,cAAA,SACImD,UAAWA,EACXV,GAAI,eAAe1C,EAAMgzD,kBACzBrwD,SAAU3C,EAAMizD,cAChBhwD,MAAOjD,EAAMwyD,YAAW,gBACV,OACdtyD,UAAU,wBAAuB,aACrBF,EAAM6B,UAAUqxD,sBAC9B,EAIJzB,EAAczxD,GAEZC,IAAAA,cAAA,SAAOC,UAAU,8BAA8BuC,QAAS,eAAezC,EAAMgzD,mBACxEhzD,EAAM6B,UAAUsxD,kBAOvBzB,EAAa1xD,IACf,MAAMoD,EAAYpD,EAAM6E,QAAQ+O,IAAI9M,OAAOssD,oBAC3C,OACInzD,IAAAA,cAAA,YACImD,UAAWA,EACXlD,UAAU,uBACVwC,GAAI,kBAAkB1C,EAAMgzD,kBAC5BrwD,SAAU3C,EAAMu9B,aAChB81B,KAAMjwD,EAVc,GAWpBH,MAAOjD,EAAMuyD,WAAU,gBACT,OAAM,aACRvyD,EAAM6B,UAAUyxD,iBAC9B,EAIJ3B,EAAa3xD,GAEXC,IAAAA,cAAA,SAAOwC,QAAS,kBAAkBzC,EAAMgzD,kBAAmB9yD,UAAU,8BAChEF,EAAM6B,UAAU0xD,iBAKvB1B,EAAqB7xD,IACvB,MAAMwzD,EAAmBxzD,EAAM6B,UAAU4xD,wBAAwB7mB,MAAM,OACjE8mB,EAAqB1zD,EAAM6B,UAAU4xD,wBAAwBE,WAAW,OACxEC,EAAmB5zD,EAAM6B,UAAU4xD,wBAAwBI,SAAS,OACpEjC,GAAmB90C,EAAAA,EAAAA,IAAW,mBAAoB9c,EAAM6E,QAAQJ,eAChEgD,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS1H,EAAM2H,iBAAmBigB,EAAAA,kBAAkBksC,eAC/EC,GAAyBhsC,EAAAA,EAAAA,wBAAuB/nB,EAAM2H,iBAAmBF,GAE/E,OACIxH,IAAAA,cAAA,KAAGC,UAAU,0BACRwzD,EAAqB,GAAKF,EAAiB,GAC5CvzD,IAAAA,cAAA,IAAAgJ,OAAAC,OAAA,CAAGmS,KAAMu2C,EAAkBoC,IAAI,aAAa1vD,OAAO,SAASpE,UAAU,YAAe6zD,GAChF/zD,EAAM6B,UAAUoyD,oBAEpBL,EAAmB,GAAKF,EAAqBF,EAAiB,GAAKA,EAAiB,GACrF,EAINnxD,EAAYrC,IACVA,EAAMgF,SACNkvD,EACIl0D,EAAMgF,QACNhF,EAAMwyD,YACNxyD,EAAMuyD,WACNvyD,EAAMu6B,OACNv6B,EAAM6E,QACN7E,EAAMkyD,WACNlyD,EAAMm0D,iBACR,EAQJ7B,EAA8BrqC,GACzBA,EACFjiB,QAAQ,IAAIC,OAAO,eAAgB,KAAM,KACzCD,QAAQ,IAAIC,OAAO,OAAQ,KAAM,KACjCmuD,OAGIF,EAAeA,CACxBlvD,EACA+I,EACAka,EACAsS,EACA11B,EACAqtD,EACAmC,KAEA,MAAM,QAAE3vD,GAAYG,GACd,KAAEsV,GAASzV,EACjB,GAAIyV,GAAQzV,EAAS,CACjB,MAAMkC,EAAQ,IAAIgpD,EACd5qD,EAAQC,SAASqB,YACjBguD,EAAAA,EAAAA,iBAAgBzvD,EAAQJ,eACxBC,EAAQC,YAAYC,UAAU0B,WAC9B5B,EAAQ2qD,OACR,CACIj0C,YAAapW,GAAWA,EAAQ8F,KAChCyvB,SACAg4B,WAAYD,EAA2BrqC,GACvCla,MAAOukD,EAA2BvkD,GAClCwmD,UAAWp6C,EAAKq6C,aAChBC,SAAUt6C,EAAKjY,MAEnBwC,EAAQyV,KAAKqK,OACbkwC,EAAAA,EAAAA,sBAAqB7vD,EAAQJ,iBAGjCkwD,EAAAA,EAAAA,GAAiB/tD,EAAO/B,EAAQJ,eAC3Bb,MAAKuuD,IACF,MAAMyC,EAASzC,EACT,CACI53B,SACAxsB,MAAOukD,EAA2BvkD,GAClCwkD,WAAYD,EAA2BrqC,GACvC4sC,kBAAmB,IAAI97B,KACvB+7B,gBAAiB5C,EAAaA,EAAW4C,gBAAkB,EAC3DC,gBAAiB7C,EAAaA,EAAW6C,gBAAkB,EAC3D5C,WACAsC,SAAU/vD,EAAQyV,KAAK66C,WAAatwD,EAAQyV,KAAKjY,MAErDgwD,EAEA+C,EAAiB,IAAIC,EAAAA,EAAmBtuD,EAAMy0B,UAAYz0B,EAAMsoD,SAAUtoD,EAAM6oD,cAAe7oD,EAAMwoD,iBAC3GvqD,EAAQJ,cAAcke,OAAOsyC,EAAgBL,GAEzCP,GACAA,IAAqBlC,EAAU,IAGtCluD,OAAM,KACH,MAAMo3B,EAAYr2B,EAAQC,SAC1BJ,EAAQQ,UAAUnB,MAAM,sDAAsDm3B,KAC9Ex2B,EAAQQ,UAAU+e,MAAM,sDAAsDiX,KAC1Eg5B,GACAA,GAAmB,EAAO,GAE/B,8CC3TR,MAAMc,EAAwC,kBAExCC,EAA2C,2GCKjD,MAAMC,EAAkBr1D,IAC3B,MAAM,eAAEs1D,GAAmBt1D,EACrBu1D,EAA4BD,EAAeC,mBAAqB,EACtE,OAA0B,IAAtBA,EACO,GAEJ,CACHC,EAAWx1D,EAAO,EAAGs1D,EAAeG,WAAYF,GAChDC,EAAWx1D,EAAO,EAAGs1D,EAAeI,WAAYH,GAChDC,EAAWx1D,EAAO,EAAGs1D,EAAeK,WAAYJ,GAChDC,EAAWx1D,EAAO,EAAGs1D,EAAeM,WAAYL,GAChDC,EAAWx1D,EAAO,EAAGs1D,EAAeO,WAAYN,GACnD,EAGCC,EAAaA,CAACx1D,EAA6B81D,EAAe5yC,EAAgB6yC,KAC5E7yC,EAAQA,GAAS,EAEjB,MAAM8yC,EAA4B,KADlCD,EAAaA,GAAc,GACW,EAAI7yC,EAAQ6yC,EAC5CE,EAAmB,IAAIC,KAAKC,aAAan2D,EAAMqvD,OAAQ,CAAEz+B,MAAO,YAAaiD,OAAOmiC,GACpFjtD,GAAY8qB,EAAAA,EAAAA,QAAO7zB,EAAM6B,UAAUu0D,iBAAkBN,EAAOG,GAElE,MAAO,CACHI,UACIp2D,IAAAA,cAAA,sBAAkB,OAAOC,UAAU,8BAC9B41D,GAGTE,WACI/1D,IAAAA,cAAA,sBAAkB,OAAOC,UAAU,oCAC9B+1D,GAGTK,IAAKr2D,IAAAA,cAACs2D,EAAAA,SAAQ,CAACtzD,MAAoB,IAAb+yD,EAAkBvoD,IAAK,IAAK1E,UAAWA,EAAW7I,UAAU,8BAClFs2D,YAAa,CACTprC,IAAK,SACLlrB,UAAW,6BACXkJ,QAASA,KACLpJ,EAAMoJ,QAAQ0sD,EAAM,GAG/B,EAGQW,EAA8Dz2D,GAEnEC,IAAAA,cAAA,KAAGC,UAAU,iCACRF,EAAM02D,QAAQlR,cACd,IAAG,OAKHmR,EAAuD32D,GACzDC,IAAAA,cAAA,KAAGC,UAAU,+BAA+BF,EAAM02D,QAAQnB,6uBC9CrE,IAAMqB,EAAN,cAA+B32D,EAAAA,cAC3BK,YAAYN,GACRO,MAAMP,GA6DH,KAAA62D,oBAAuBvzD,GAA0CrB,KAAKjC,MAAM8G,OAAO+S,QAASoO,KAAO3kB,EAAMgB,OAAOrB,MA5DnHhB,KAAK60D,eAAiB70D,KAAK60D,eAAe7pD,KAAKhL,KACnD,CAEOwG,SACH,MAAM,UAAE5G,GAAcI,KAAKjC,OACrB,UAAEE,EAAS,QAAE2Z,GAAY5X,KAAKjC,MAAM8G,QAEtCwuD,gBAAkBzxD,OAAQyxD,IAC1BrzD,KAAKjC,MAAMqX,KACTsjB,EAAc26B,GAAkBA,EAAeC,kBAAoB,GAAGD,EAAeC,oBAAsB,IAE3GwB,EAAgBC,IAAU,uBAAwB92D,GAClDoJ,EAAST,EAAAA,EAAA,GACR5G,KAAKjC,OAAK,IACbE,UAAW62D,EACXnrC,UAAW,CACPkrC,eAAgB70D,KAAK60D,gBAEzBxsC,YAAa,CACTA,YAAaroB,KAAKjC,MAClBE,UAAW62D,GAEfE,eAAgB3B,GACVD,EAAAA,EAAAA,IAAe,CACXC,iBACAzzD,UAASgH,EAAA,GAAOhH,GAChBwtD,OAAQptD,KAAKjC,MAAM6E,QAAQH,QAAQ2qD,OACnCjmD,QAASnH,KAAK60D,iBAElB,GACNtR,cAAe8P,GACXr1D,EAAAA,cAACy6B,EAAAA,gBAAe,CACZR,UAAWo7B,EAAe9P,cAC1B7qB,YAAaA,EACb5xB,WAAW8qB,EAAAA,EAAAA,QAAO5xB,KAAKjC,MAAM6B,UAAUq1D,uBAAwB5B,EAAe9P,cAAe,KAC7F5qB,UAAQ,EACR/1B,QAAS5C,KAAKjC,MAAM6E,QACpBsyD,WAAS,EACTz0D,GAAIT,KAAKjC,MAAM0C,GACfgY,SAAUzY,KAAKjC,MAAM0a,SACrBrD,KAAM,CAAC,IAGf+/C,cAAe9B,GAAkBr1D,EAAAA,cAACw2D,EAAAA,GAAmB,CAACC,QAASpB,IAC/D+B,aAAc/B,GAAkBr1D,EAAAA,cAAC02D,EAAAA,GAAY,CAACD,QAASpB,IACvDgC,oBAAqB,CAAEp3D,UAAW,iCAClC2Z,QAASA,GACL5Z,EAAAA,cAACk8B,EAAAA,GAAa,CACVj8B,UAAU,gCACVkrB,IAAKvR,EAAQuR,KAAO,KACpBnD,KAAMpO,EAAQoO,KACdmU,UAAW,CAAEC,OAAQp6B,KAAK40D,oBAAqBhkD,eAAgB5Q,KAAKjC,MAAM6E,QAAQH,WAG1F6yD,eAAgB,CAAEr3D,UAAW,qCAGjC,OAAO+B,KAAKjC,MAAMyqB,WAAWnhB,EACjC,CAIOwtD,eAAehB,GAClB,MAAM0B,EAAY,GAAG1B,IACrB7zD,KAAKjC,MAAM6E,QAAQJ,cAAcke,QAAO80C,EAAAA,EAAAA,gCAA+B,CAAED,cAAc,CAAEA,aAC7F,GApEEZ,GAAgBjrD,EAAAA,EAAAA,IAAA,CADrBkD,EAAAA,IACK+nD,GAuEN,oFCnGA,MAeMc,EAAiB13D,GAEfC,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAMw2D,aACXx2D,EAAMq2D,UACNr2D,EAAMs2D,IACNt2D,EAAMg2D,YAKnB,EAzBmEh2D,IAC/D,MAAM,QAAE6Z,EAAO,eAAEo9C,EAAc,eAAEM,EAAc,YAAEjtC,GAAgBtqB,EAEjE,OACIC,EAAAA,cAAC6wB,EAAAA,OAAM7nB,OAAAC,OAAA,GAAKohB,GACPzQ,EACD5Z,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKquD,GACLN,EAAexsD,KAAI8B,GACTmrD,EAAcnrD,MAGxB,yKCuBV,MAKP,GAL6CyiD,EAAAA,EAAAA,IAA2B,CACpEtsD,GAAI,mEACJ0tB,OAtCJ5rB,eAAmCoC,EAAiCqoD,GAChE,IA+BJ,SAAsBroD,GAClB,OAAOA,GAASA,EAAMurD,SAASruD,OAAS,GAAK8C,EAAMsoD,SAASprD,OAAS,GAAK8C,EAAMyoD,OAAOvrD,OAAS,GAAK8C,EAAM+wD,UAAU7zD,OAAS,CAClI,CAjCSqrD,CAAavoD,GACd,MAAM,IAAIzC,MACN,mDAAmDyC,EAAMurD,qBAAqBvrD,EAAMsoD,oBAAoBtoD,EAAMyoD,WAItH,MAAMrwC,EACF,GAAGpY,EAAMwoD,wCAAwCxoD,EAAMurD,qBAA0BvrD,EAAMsoD,mBAAwBtoD,EAAMyoD,SAEnHuI,EAAc,CAChBC,gBAAiBjxD,EAAMixD,iBAGrBC,EAAgB,CAClBhrC,QAAS,CACL0iC,cAAe,YAAY5oD,EAAM+wD,cAIzC,OAAOrI,EAAAA,EAAAA,IAAqBtwC,EAAY,OAAQ44C,EAAaE,GACxDl0D,MAAK8rD,GACyB,MAApBA,EAAS//C,QAAsC,MAApB+/C,EAAS//C,SAE9C1L,OAAMC,IACH+qD,EAAIvoC,MAAM,yDACVuoC,EAAI5pD,UAAUsqD,UAAUzrD,GACxB+qD,EAAI5pD,UAAU+e,MAAM,0DACb,IAEnB,ICMO,MAKP,GAL+C4qC,EAAAA,EAAAA,IAA2B,CACtEtsD,GAAI,qEACJ0tB,OAtCJ5rB,eAAqCoC,EAAmCqoD,GACpE,IA+BJ,SAAsBroD,GAClB,OAAOA,GAASA,EAAMurD,SAASruD,OAAS,GAAK8C,EAAMsoD,SAASprD,OAAS,GAAK8C,EAAMyoD,OAAOvrD,OAAS,GAAK8C,EAAM+wD,UAAU7zD,OAAS,CAClI,CAjCSqrD,CAAavoD,GACd,MAAM,IAAIzC,MACN,mDAAmDyC,EAAMurD,qBAAqBvrD,EAAMsoD,qBAAqBtoD,EAAMyoD,WAIvH,MAAMrwC,EACF,GAAGpY,EAAMwoD,qCAAqCxoD,EAAMurD,qBAA0BvrD,EAAMsoD,mBAAwBtoD,EAAMyoD,SAEhHuI,EAAc,CAChBG,YAAanxD,EAAMmxD,WAGjBD,EAAgB,CAClBhrC,QAAS,CACL0iC,cAAe,YAAY5oD,EAAM+wD,cAIzC,OAAOrI,EAAAA,EAAAA,IAAqBtwC,EAAY,OAAQ44C,EAAaE,GACxDl0D,MAAK8rD,GACyB,MAApBA,EAAS//C,QAAsC,MAApB+/C,EAAS//C,SAE9C1L,OAAMC,IACH+qD,EAAIvoC,MAAM,sDACVuoC,EAAI5pD,UAAUsqD,UAAUzrD,GACxB+qD,EAAI5pD,UAAU+e,MAAM,uDACb,IAEnB,QChCY4zC,mBAAZ,SAAYA,GACRA,EAAA,qBACAA,EAAA,mBACAA,EAAA,oBACAA,EAAA,aACH,CALD,CAAYA,IAAAA,EAAqB,KAU1B,MAAMC,EAaT33D,YAAY6xD,EAAkBjD,EAAkBG,EAAgBwI,EAAyBF,EAAmBvI,GASrG,KAAAS,YAAc,IAAM,sBAEpB,KAAAC,mBAAqB,IAAM,sBAE3B,KAAAC,cAAgB,IAAiB,OAZpC9tD,KAAKkwD,SAAWA,EAChBlwD,KAAKitD,SAAWA,EAChBjtD,KAAKotD,OAASA,EACdptD,KAAK41D,gBAAkBA,EACvB51D,KAAK01D,UAAYA,EACjB11D,KAAKmtD,gBAAkBA,CAC3B,oECXG,MAAM8I,EAA4Cl4D,IACrD,MAAM,YAAEm4D,EAAW,UAAEt2D,EAAS,aAAE8jD,EAAY,uBAAEyS,GAA2Bp4D,EAEzE,OACIC,EAAAA,cAAA,oBAAgB,SAASC,UAAU,YAC9B2zB,EAAAA,EAAAA,QACGhyB,EAAUw2D,oBACVC,EAAsBH,EAAaC,GACnCG,EAAoBJ,EAAaxS,EAAcyS,GAC/CzS,GAED,EA2BF6S,EAA8Cx4D,IACvD,MAAM,YAAEm4D,EAAW,UAAEt2D,EAAS,aAAE8jD,EAAY,uBAAEyS,GAA2Bp4D,EACnEy4D,EAAoBx4D,EAAAA,aAAkB,IACjCy4D,EAAqB14D,IAC7B,CAACA,IACE24D,EAAgB14D,EAAAA,aAAkB,IAC7B24D,EAAiB54D,IACzB,CAACA,IACEyH,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS1H,EAAM2H,iBAAmBigB,EAAAA,kBAAkBixC,MAC/EC,GAAgB/wC,EAAAA,EAAAA,wBAAuB/nB,EAAM2H,iBAAmBF,GACtEA,EAAQukC,cAAcC,MAAQrkB,EAAAA,kBAAkBmxC,SAChD,MAAMC,GAAoBjxC,EAAAA,EAAAA,wBAAuB/nB,EAAM2H,iBAAmBF,GAE1E,OACIxH,EAAAA,cAAA,OAAKC,UAAU,kCACV+4D,EAAiBd,IACdl4D,EAAAA,cAAA,SAAAgJ,OAAAC,OAAA,CACIE,QAASqvD,EACTv4D,UAAU,4BAA2B,aACzBg5D,EACRr3D,EAAUs3D,oBACVhB,EACAxS,EACAyS,GACA,IAEAY,GAEHn3D,EAAUu3D,oBAGlBC,EAAalB,EAAaxS,EAAcyS,IACrCn4D,EAAAA,cAAA,SAAAgJ,OAAAC,OAAA,CACIE,QAASuvD,EACTz4D,UAAU,wBAAuB,aACrBg5D,EACRr3D,EAAUs3D,oBACVhB,EACAxS,EACAyS,GACA,IAEAU,GAEHj3D,EAAUy3D,gBAGjB,EAIRL,EAAoBd,GACfA,EAAc,EAGnBkB,EAAeA,CAAClB,EAAqBxS,EAAsByS,IACtDmB,EAAe5T,EAAcyS,GAA0BD,EAG5DqB,EAAoBpB,GACfv0B,KAAKj3B,IAAI,GAAIwrD,GAGlBmB,EAAiBA,CAAC5T,EAAsByS,IACnCv0B,KAAKsb,KAAKwG,EAAe6T,EAAiBpB,IAG/Cc,EAAuBA,CACzBC,EACAhB,EACAxS,EACAyS,EACAqB,EACAC,KAEA,MAAMC,EAAeF,EAAa,GAAK,EACvC,OAAO5lC,EAAAA,EAAAA,QACHslC,EACAb,EAAsBH,EAAaC,EAAwBD,EAAcwB,GACzEpB,EAAoBJ,EAAaxS,EAAcyS,EAAwBD,EAAcwB,GACrFhU,EACH,EAGC2S,EAAwBA,CAACH,EAAqBC,EAAgCsB,MACvEA,GAAQvB,GAAe,GAAKqB,EAAiBpB,GAA0B,EAG9EG,EAAsBA,CAACJ,EAAqBxS,EAAsByS,EAAgCsB,KACpG,MACME,GADWF,GAAQvB,GACUqB,EAAiBpB,GACpD,OAAOwB,EAAkBjU,EAAeiU,EAAkBjU,CAAY,EAGpE+S,EAAuBl0D,gBACnBxE,EAAM65D,cACRvB,EAAsBt4D,EAAMm4D,YAAan4D,EAAMo4D,wBAA0B,EAAIoB,EAAiBx5D,EAAMo4D,wBACpGp4D,EAAM85D,qBACN95D,EAAM+5D,uBACN/5D,EAAMm4D,YAAc,GACpB,EACH,EAGCS,EAAmBp0D,gBACfxE,EAAM65D,cACRtB,EAAoBv4D,EAAMm4D,YAAan4D,EAAM2lD,aAAc3lD,EAAMo4D,wBACjEp4D,EAAM85D,qBACN95D,EAAM+5D,uBACN/5D,EAAMm4D,YAAc,GACpB,EACH,EC7GL,IAAI6B,EAMG,MAuDDC,EAAcj6D,IAChB,MAAMk6D,EAAQ,GACd,IAAK,MAAMC,KAAUH,EAA8B,CAC/C,MAAMI,EAAU,iBAAiBD,EAAOvvD,MAClCsO,EAAUihD,EAAOvvD,MAAQ5K,EAAMq6D,YACrCH,EAAMrkC,KACF51B,IAAAA,cAAA,OAAKC,UAAU,8BAA8B0K,IAAKuvD,EAAOvvD,KACrD3K,IAAAA,cAAA,SACIC,UAAU,kBACV4C,KAAK,QACLZ,KAAK,eACLQ,GAAI03D,EAAO,WACDD,EAAOvvD,IACjB3H,MAAOk3D,EAAOl3D,MACdiW,QAASA,EAAO,eACFA,EACdvW,SAAU3C,EAAMs6D,gBAEpBr6D,IAAAA,cAAA,SAAOC,UAAU,kBAAkBuC,QAAS23D,GACvCD,EAAOl3D,QAGlB,CAGN,OAAOhD,IAAAA,cAAA,gBAAWi6D,EAAiB,sBCvFhC,MAyCD3/B,EAAUv6B,GAERC,IAAAA,cAACy6B,EAAAA,gBAAe,CACZE,UAAQ,EACRV,UAAWl6B,EAAM40D,OAAOr6B,OACxBxxB,WAAW8qB,EAAAA,EAAAA,QAAO7zB,EAAM6B,UAAU04D,0BAA4B,GAAIv6D,EAAM40D,OAAOr6B,OAAQ,KACvF11B,QAAS7E,EAAM6E,QACf3E,UAAU,0BACVwC,GAAI1C,EAAM2yD,SACVj4C,SAAU1a,EAAM4yD,WAChBv7C,KAAM,CAAC,IAebmjD,EAAoBA,CAACx6D,EAAyB+3D,KAChD,MAAM0C,EAXSC,EAAC16D,EAAyB+3D,KACzC,IAAK,IAAI4C,EAAI,EAAGA,EAAI36D,EAAM46D,aAAa92D,OAAQ62D,IAC3C,GAAI36D,EAAM46D,aAAaD,GAAGxI,WAAanyD,EAAM40D,OAAOzC,SAChD,OAAOnyD,EAAM46D,aAAaD,GAAGE,WAAa9C,EAIlD,OAAO,CAAK,EAII2C,CAAW16D,EAAO+3D,GAC5B+C,EAAa96D,EAAM+6D,cAAgBN,IAAWO,EAAAA,EAAAA,IAAah7D,EAAM6E,QAAQH,SAAW,WAAa,GACvG,IAAIxE,EAAY63D,EAAY,wBAA0B,2BACtD73D,EAAY,GAAGA,KAAa46D,IAC5B,MAAMzN,EAAQ0K,EAAY/3D,EAAM6B,UAAUo5D,cAAgBj7D,EAAM6B,UAAUq5D,aAC1E,IAAIC,GAAapD,EAAY/3D,EAAM40D,OAAOE,gBAAkB90D,EAAM40D,OAAOG,kBAAoB,EAC7FoG,EAAYV,EAAUU,EAAY,EAAIA,EACtC,MAAMptD,EAAQ,IAAIotD,KACZhhD,EAAOna,EAAM6E,QAAQH,QAAQyV,KAI7B/Q,EAAU0xD,OAAa51D,EAHPk2D,KAClBp7D,EAAMq7D,wBAAwBr7D,EAAM40D,OAAOzC,SAAW4F,EAAU,EAIpE,OAAI59C,EAAKoK,gBAEDtkB,IAAAA,cAACkU,EAAAA,OAAM,cAAak5C,EAAOntD,UAAWA,EAAW6N,MAAOA,EAAO3E,QAASA,GACnE2E,GAKT9N,IAAAA,cAACkU,EAAAA,OAAM,CAACkH,KAAMlB,EAAK0P,UAAS,aAAcwjC,EAAOntD,UAAWA,EAAW6N,MAAOA,EAAOqd,IAAI,KACpFrd,EACI,EAIXutD,EAAct7D,IAChB,GAAIA,EAAM+6D,gBAAiBC,EAAAA,EAAAA,IAAah7D,EAAM6E,QAAQH,SAClD,OACIzE,IAAAA,cAACkU,EAAAA,OAAM,CAACzR,GAAI0yD,EAAAA,GAAkCl1D,UAAU,wBAAwBkJ,QAASpJ,EAAMu7D,wBAC1Fv7D,EAAM6B,UAAU25D,mBAKb,EAGdC,EAAaA,CAACz7D,EAAyB62B,KACzC,IAAKA,EACD,MAAO,GAGX,IACI,OAAO,IAAIq/B,KAAKwF,eAAe17D,EAAM6E,QAAQH,QAAQ2qD,OAAQ,CAAEsM,MAAO,OAAQ3iC,IAAK,UAAW4iC,KAAM,YAAa/nC,OAC7G,IAAIkF,KAAKlC,GAGD,CADd,MAAAglC,GACE,OAAOhlC,CAAK,GASdztB,EAAWpJ,GAA4B,KACzCA,EAAM87D,wBAAwB97D,EAAM40D,OAAOzC,SAAU,EAGnD4J,EAAgB/7D,IAClB,MAAMma,EAAOna,EAAM6E,QAAQH,QAAQyV,KACnC,GAAIna,EAAM+6D,eAAgBC,EAAAA,EAAAA,IAAah7D,EAAM6E,QAAQH,SACjD,OACG,IAAKyV,EAAKoK,gBACb,OACItkB,IAAAA,cAACkU,EAAAA,OAAM,CAACkH,KAAMlB,EAAK0P,UAAW3pB,UAAU,0BAA0BkrB,IAAI,KACjE,IACAprB,EAAM6B,UAAUm6D,mBAK7B,GAAIh8D,EAAMi8D,gBAAgBnnD,SAAS9U,EAAM40D,OAAOzC,UAC5C,OAAOlyD,IAAAA,cAAA,KAAGC,UAAU,6BAA6BF,EAAM6B,UAAUq6D,cAGrE,MAAM/4D,EAAMnD,EAAM40D,OAAOzC,WAAanyD,EAAMm8D,iBAAmBn8D,EAAM2wD,eAAYzrD,EAEjF,OACIjF,IAAAA,cAACkU,EAAAA,OAAM,CAACjU,UAAU,0BAA0BkJ,QAASA,EAAQpJ,GAAQq0C,SAAUlxC,GAC1EnD,EAAM6B,UAAUm6D,kBACZ,+BC/MV,MAAMI,EAaT97D,YAAY6xD,EAAkBjD,EAAkBG,EAAgB0I,EAAoBJ,EAAmBvI,GAShG,KAAAS,YAAc,IAAM,wBAEpB,KAAAC,mBAAqB,IAAM,wBAE3B,KAAAC,cAAgB,IAAiB,OAZpC9tD,KAAKkwD,SAAWA,EAChBlwD,KAAKitD,SAAWA,EAChBjtD,KAAKotD,OAASA,EACdptD,KAAK81D,UAAYA,EACjB91D,KAAK01D,UAAYA,EACjB11D,KAAKmtD,gBAAkBA,CAC3B,ukBC8FJ,IAAMiN,EAAN,cAA0Bp8D,EAAAA,UAwDtBK,YAAYN,GACRO,MAAMP,GAxDH,KAAAs8D,sBAAmD,CACtD,CAAE1xD,IAAK,cAAe3H,MAAOhB,KAAKjC,MAAM6B,UAAU06D,2BAClD,CAAE3xD,IAAK,aAAc3H,MAAOhB,KAAKjC,MAAM6B,UAAU26D,0BACjD,CAAE5xD,IAAK,gBAAiB3H,MAAOhB,KAAKjC,MAAM6B,UAAU46D,4BACpD,CAAE7xD,IAAK,eAAgB3H,MAAOhB,KAAKjC,MAAM6B,UAAU66D,4BAGhD,KAAAC,wBAA8C,CACjD,CAAE/xD,IAAK,YAAa3H,MAAOhB,KAAKjC,MAAM6B,UAAU+6D,6BAChD,CAAEhyD,IAAK,IAAK3H,MAAOhB,KAAKjC,MAAM6B,UAAUg7D,4BACxC,CAAEjyD,IAAK,IAAK3H,MAAOhB,KAAKjC,MAAM6B,UAAUi7D,4BACxC,CAAElyD,IAAK,IAAK3H,MAAOhB,KAAKjC,MAAM6B,UAAUk7D,6BACxC,CAAEnyD,IAAK,IAAK3H,MAAOhB,KAAKjC,MAAM6B,UAAUm7D,2BACxC,CAAEpyD,IAAK,IAAK3H,MAAOhB,KAAKjC,MAAM6B,UAAUo7D,4BAQ3B,KAAAC,qBAA8C,CAC3DC,kBAAoBpvD,IAChB9L,KAAKwB,SAAS,CAAE25D,gBAAiBrvD,GAAQ,EAE7CsvD,iBAAmBp1C,IACfhmB,KAAKwB,SAAS,CAAE65D,eAAgBr1C,GAAO,EAE3Cs1C,aAAehjC,IACXt4B,KAAKwB,SAAS,CAAE+5D,iBAAkBjjC,GAAS,EAE/CkjC,kBAAoBC,IACZA,EACAz7D,KAAKwB,SAAS,CAAEk6D,mBAAmB,EAAOC,gBAAgB,IAE1D37D,KAAKwB,SAAS,CAAEm6D,gBAAgB,GAAQ,EAGhD1J,aAAY,IAEZ2J,YAAa57D,KAAK67D,mBAElBC,4BAA6B97D,KAAK87D,4BAClCC,kBAAoB7L,IAChBlwD,KAAKzB,MAAMy9D,kBAAoBh8D,KAAKi8D,mBAAmB/L,GAAYlwD,KAAKk8D,qBAAqB,EAGjGC,aAAcn8D,KAAKo8D,sBAEnBC,uBAAwBr8D,KAAKq8D,uBAE7BC,qBAAsBt8D,KAAKs8D,qBAE3B1E,cAAe53D,KAAK43D,eA8CjB,KAAA3xD,kBAAoB1D,UACvBvC,KAAKjC,MAAMqX,KAAKmnD,YAAY56D,MAAK46D,IAEzBA,GACAA,EAAYC,YACZD,EAAYC,WAAWz+C,YACvBw+C,EAAY/9C,OACZ+9C,EAAY/9C,MAAM3c,OAAS,GAE3B7B,KAAKwB,SAAS,CACVi7D,cAAeF,EAAY/9C,MAC3BklC,aAAc6Y,EAAYC,WAAWz+C,YACtC,UAGL/d,KAAK43D,cAAc,EAAG53D,KAAKzB,MAAMs5D,qBAAsB73D,KAAKzB,MAAMu5D,uBAAwB,EAAG93D,KAAKzB,MAAMm+D,kBAE9GzxD,EAAAA,EAAAA,KACI,IAAMjL,KAAKjC,MAAMqX,KAAKunD,oBAAoB/6D,QAAU5B,KAAKjC,MAAMqX,KAAKunD,oBAAoB/6D,OAAO2zD,YAC/FhzD,UACI,MAAMq6D,EAAiBv3D,OAAOkwD,GACxBsH,EAAqB78D,KAAK06D,wBAAwB74D,OACxD,GAAI0zD,IAAc3qD,MAAMgyD,IAAmBA,EAAiBC,EAAoB,CAC5E,MAAMC,EAAiB98D,KAAK06D,wBAAwBnsD,MAAM2pD,GAA6BA,EAAOvvD,MAAQ4sD,IACtG,GAAKuH,EAEE,OACG98D,KAAK43D,cAAc,EAAG53D,KAAKzB,MAAMs5D,qBAAsBiF,EAAgB,GAAG,GAChF,MAAM/yD,EAAgB8yD,EAAqBD,EAC3C58D,KAAKwB,SAAS,CACVs2D,uBAAwB93D,KAAK06D,wBAAwB3wD,IACtD,MANH/J,KAAKjC,MAAMqF,UAAUqX,QAAQ,8CAA8C86C,IAMzE,IAIjB,EAoGE,KAAAX,oBAAuBvzD,GAA0CrB,KAAKjC,MAAM8G,OAAO+S,QAASoO,KAAO3kB,EAAMgB,OAAOrB,MACtG,KAAA+7D,YAAc,KAC3B,MAAM9M,EAAajwD,KAAKjC,MAAMqX,KAAK66C,WAAWruD,OAE9C,OAAOquD,GAAcjwD,KAAKg9D,YAAY/M,GAAY,EAAK,EAG1C,KAAAgN,aAAgBC,IAC7B,MAAMjN,EAAajwD,KAAKjC,MAAMqX,KAAK66C,WAAWruD,OACxCu7D,EAAyC,GAE/C,IAAK,MAAMxK,KAAUuK,GACZvK,EAAOyK,aAAezK,EAAO0K,aAAepN,GAAa0C,EAAOzC,WAAaD,EAAWC,UACzFiN,EAAevpC,KAAK5zB,KAAKg9D,YAAYrK,GAAQ,IAGrD,OAAOwK,CAAc,EAGR,KAAAH,YAAc,CAACrK,EAAgB1C,IFzTzBlyD,KAEhB,CACHu/D,UAAW,CAAEr/D,UAFCF,EAAM+6D,aAAe,qDAAuD,wBAElEnwD,IAAK5K,EAAM40D,OAAOzC,UAC1CjwD,KAAMjC,IAAAA,cAAA,KAAGC,UAAU,yBAAyBF,EAAM40D,OAAOH,UACzDl6B,OAAQA,EAAOv6B,GACf62B,KAAM52B,IAAAA,cAAA,KAAGC,UAAU,yBAAyBu7D,EAAWz7D,EAAOA,EAAM40D,OAAOC,oBAC3ErC,YAAavyD,IAAAA,cAAA,MAAIC,UAAU,0BAA0BF,EAAM40D,OAAO7mD,OAClEwkD,WAAYtyD,IAAAA,cAAA,KAAGC,UAAU,yBAAyBF,EAAM40D,OAAOrC,YAC/DiN,mBAAoBx/D,EAAM+6D,kBACtB71D,EAEAjF,IAAAA,cAAA,KAAGC,UAAU,4BAA4BF,EAAM6B,UAAU49D,sBAE7DC,KAAM1/D,EAAM+6D,kBAAe71D,EAAYs1D,EAAkBx6D,GAAO,GAChE2/D,QAAS3/D,EAAM+6D,kBAAe71D,EAAYs1D,EAAkBx6D,GAAO,GACnE4/D,KAAMtE,EAAWt7D,GACjB6/D,OAAQ9D,EAAa/7D,GACrB8/D,aAAc9/D,EAAM40D,OAAOmL,aACvB9/D,IAAAA,cAAA,KAAGC,UAAU,kCAAkCF,EAAM40D,OAAOmL,aAAaC,oBAEzE96D,EAEJ+6D,aAAcjgE,EAAM40D,OAAOmL,aACvB9/D,IAAAA,cAAA,KAAGC,UAAU,kCAAkCF,EAAM40D,OAAOmL,aAAaE,mBAEzE/6D,EAEJg7D,aAAclgE,EAAM40D,OAAOmL,aACvB9/D,IAAAA,cAAA,KAAGC,UAAU,kCAAkCu7D,EAAWz7D,EAAOA,EAAM40D,OAAOmL,aAAalL,yBAE3F3vD,EAEJi7D,cAAe,CAAEjgE,UAAW,8BAC5BkgE,cAAe,CAAElgE,UAAW,6BAC5BmgE,YAAa,CAAEngE,UAAW,2BAC1BogE,cAAe,CAAEpgE,UAAW,kCAC5BqgE,YAAa,CAAErgE,UAAW,kCEqRnBsgE,CAAW,CACd5L,SACA/yD,UAASgH,EAAA,GAAO5G,KAAKjC,MAAM6B,WAC3BgD,QAAS5C,KAAKjC,MAAM6E,QACpBk2D,aAAc7I,EACdS,SAAU1wD,KAAKjC,MAAM0C,GACrBkwD,WAAY3wD,KAAKjC,MAAM0a,SACvBuhD,gBAAiBh6D,KAAKzB,MAAMy7D,gBAC5BtL,UAAW1uD,KAAKw+D,uBAChBtE,iBAAkBl6D,KAAKzB,MAAMkgE,kBAC7BnF,uBAAwBt5D,KAAK67D,mBAC7BhC,wBAAyB75D,KAAKi8D,mBAC9B7C,wBAAyBp5D,KAAK87D,4BAC9BnD,aAAc34D,KAAKzB,MAAMo6D,eAIhB,KAAA+F,iBAAmB,KACzB1Q,EAAAA,EAAAA,GAAY,CACfiC,WAAYjwD,KAAKjC,MAAMqX,KAAK66C,WAAWruD,OACvCmB,QAAS/C,KAAKjC,MAAMqX,KAAKrS,QAAQnB,OACjChC,UAASgH,EAAA,GAAO5G,KAAKjC,MAAM6B,WAC3BgD,QAAS5C,KAAKjC,MAAM6E,QACpB8tD,SAAU1wD,KAAKjC,MAAM0C,GACrBkwD,WAAY3wD,KAAKjC,MAAM0a,SACvBja,OAAQwB,KAAKzB,MAAMm9D,kBACnBpjC,OAAQt4B,KAAKzB,MAAMg9D,iBACnBhL,YAAavwD,KAAKzB,MAAM48D,gBACxB7K,WAAYtwD,KAAKzB,MAAM88D,eACvB7M,cAAexuD,KAAK67D,mBACpB7K,cAAehxD,KAAK2+D,eACpBrjC,aAAct7B,KAAK4+D,cACnBhO,eAAgB5wD,KAAK6+D,gBACrB3M,iBAAkBlyD,KAAK8+D,kBACvB/N,gBAAiB,mBACjBrC,UAAW1uD,KAAK++D,uBAChBhP,SAAU/vD,KAAKzB,MAAMo9D,eACrBrN,SAAU,oBAID,KAAAqQ,eAAkBt9D,IAC/BrB,KAAKi7D,qBAAqBC,kBAAkB75D,EAAMgB,OAAOrB,MAAM,EAGlD,KAAA49D,cAAiBv9D,IAC9BrB,KAAKi7D,qBAAqBG,iBAAiB/5D,EAAMgB,OAAOrB,MAAM,EAGjD,KAAA69D,gBAAmB79D,IAChChB,KAAKi7D,qBAAqBK,aAAat6D,EAAM,EAGhC,KAAA66D,mBAAqB,KAClC,MAAM5L,EAAajwD,KAAKjC,MAAMqX,KAAK66C,WAAWruD,OAC1C5B,KAAKzB,MAAMm9D,kBACX17D,KAAKwB,SAAS,CAAEk6D,mBAAmB,EAAOC,gBAAgB,IAE1D37D,KAAKwB,SAAS,CACVk6D,mBAAmB,EACnBL,eAAgBpL,EAAYK,WAC5B6K,gBAAiBlL,EAAYnkD,MAC7ByvD,iBAAkBtL,EAAY33B,QAC/B,EAIM,KAAAwmC,kBAAqBE,IAC9BA,EACAh/D,KAAKwB,SAAS,CAAEk6D,mBAAmB,EAAOC,gBAAgB,IAE1D37D,KAAKwB,SAAS,CAAEm6D,gBAAgB,GAAQ,EAI/B,KAAAsD,mBAAqB,IH9XRlhE,KAC9B,MAAMyH,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS1H,EAAM2H,iBAAmBigB,EAAAA,kBAAkBsoC,cAC/EiR,GAAwBp5C,EAAAA,EAAAA,wBAAuB/nB,EAAM2H,iBAAmBF,GAC9EA,EAAQukC,cAAcC,MAAQrkB,EAAAA,kBAAkBw5C,cAChD,MAAMC,GAAmBt5C,EAAAA,EAAAA,wBAAuB/nB,EAAM2H,iBAAmBF,GACzEA,EAAQukC,cAAcC,MAAQrkB,EAAAA,kBAAkBwoC,OAChD,MAAMkR,GAAkBv5C,EAAAA,EAAAA,wBAAuB/nB,EAAM2H,iBAAmBF,GAQxE,OANAuyD,EAA+B,CAC3B,CAAEpvD,IAAKotD,EAAsBuJ,gBAAiBt+D,MAAOjD,EAAM6B,UAAU2/D,gBACrE,CAAE52D,IAAKotD,EAAsByJ,iBAAkBx+D,MAAOjD,EAAM6B,UAAU6/D,sBACtE,CAAE92D,IAAKotD,EAAsB2J,UAAW1+D,MAAOjD,EAAM6B,UAAU+/D,uBAG5D,CACHtR,MAAO,CACHllC,IAAKpiB,EAAAA,MACL9I,UAAW,kDACX4I,OAAQ9I,EAAMywD,cACdx/B,gBAAiB,aACjBxwB,OAAQT,EAAMS,OACdiwD,eAAgB1wD,EAAM2wD,WAE1BC,YAAa,CAAExlC,IAAKjiB,EAAAA,YAAaL,OAAQ9I,EAAMywD,cAAevwD,UAAW,iCACzE4wD,YAAa,CAAE1lC,IAAKnX,EAAAA,YAAa/T,UAAW,iCAC5C6wD,UAAW,CAAE3lC,IAAKrhB,EAAAA,UAAW7J,UAAW,+BACxC2hE,OAAQ5hE,IAAAA,cAAA,KAAGC,UAAU,kCAAkCF,EAAM6B,UAAUm6D,mBACvE8F,gBAAiB7hE,IAAAA,cAAA,KAAGC,UAAU,kCAAkCF,EAAM6B,UAAUkgE,sBAChF/Q,aACI/wD,IAAAA,cAAA,SAAAgJ,OAAAC,OAAA,CAAQhJ,UAAU,kCAAkCkJ,QAASpJ,EAAMywD,eAAmB6Q,GACjFthE,EAAM6B,UAAUmgE,wBAGzB9Q,aACIjxD,IAAAA,cAAA,SAAAgJ,OAAAC,OAAA,CAAQhJ,UAAU,kCAAkCkJ,QAASpJ,EAAMo+D,cAAkB+C,GAChF,IACAnhE,EAAM6B,UAAUogE,wBAA0B,UAGnDC,gBACIjiE,IAAAA,cAAA,SAAAgJ,OAAAC,OAAA,CAAQhJ,UAAU,mCAAmCkJ,QAASpJ,EAAMywD,eAAmB4Q,GAClFrhE,EAAM6B,UAAUsgE,oBAGzBC,cAAeniE,IAAAA,cAAA,KAAGC,UAAU,mCAAmCF,EAAM6B,UAAUwgE,oBAC/EC,uBAAwBriE,IAAAA,cAAA,KAAGC,UAAU,mCAAmCF,EAAM6B,UAAUygE,wBACxFC,aAActI,EAAWj6D,GACzBkE,MACIjE,IAAAA,cAAC8U,EAAAA,MAAK,CAAC7U,UAAU,gCAAgCO,OAAQT,EAAMgyD,SAAU3uD,MAAM,UAC1ErD,EAAM6B,UAAUowD,kBAG5B,EG2UUuQ,CAAkB,CACrB3gE,UAASgH,EAAA,GAAO5G,KAAKjC,MAAM6B,WAC3BgD,QAAS5C,KAAKjC,MAAM6E,QACpBpE,OAAQwB,KAAKzB,MAAMy9D,kBACnBtN,UAAW1uD,KAAKw+D,uBAChBpG,YAAap4D,KAAKzB,MAAM65D,YACxB5J,cAAexuD,KAAKk8D,oBACpB7D,cAAer4D,KAAKwgE,eACpBrE,aAAcn8D,KAAKygE,cACnB1Q,SAAU/vD,KAAKzB,MAAMmiE,eACrBh7D,iBAAkB1F,KAAK0F,mBAId,KAAAu2D,mBAAsB/L,IACnClwD,KAAKwB,SAAS,CACVw6D,mBAAmB,EACnByC,kBAAmBvO,EACnByQ,UAAU,EACVvI,YAAarC,EAAsBuJ,iBACrC,EAGW,KAAApD,oBAAsB,KACnCl8D,KAAKwB,SAAS,CAAEw6D,mBAAmB,EAAO0E,gBAAgB,GAAQ,EAGrD,KAAAF,eAAkBn/D,IAC/BrB,KAAKwB,SAAS,CAAE42D,YAAa/2D,EAAM6vB,cAAcC,aAAa,aAAe,IAAK,EAGrE,KAAAirC,sBAAwB,CAAClM,EAAkBkI,KACxDwI,EACI,IAAI5K,EACA9F,GACAmC,EAAAA,EAAAA,iBAAgBryD,KAAKjC,MAAM6E,QAAQJ,eACnCxC,KAAKjC,MAAM6E,QAAQH,QAAQ2qD,OAC3BgL,EACAp4D,KAAK6gE,aAAa7gE,KAAKjC,MAAM6E,QAAQH,UACrCgwD,EAAAA,EAAAA,sBAAqBzyD,KAAKjC,MAAM6E,QAAQJ,gBAE5CxC,KAAKjC,MAAM6E,QAAQJ,eAElBb,MAAMm/D,IACH,MAAMC,EAAiB/gE,KAAKzB,MAAMy7D,gBAClC+G,EAAentC,KAAKs8B,GACpBlwD,KAAKwB,SAAS,CAAEm/D,UAAU,EAAM3G,gBAAiB+G,EAAgBL,gBAAgB,GAAQ,IAE5F1+D,OAAOC,IACJjC,KAAKwB,SAAS,CAAEk/D,gBAAgB,GAAO,GACzC,EAGO,KAAAD,cAAgB,KAC7BzgE,KAAKo8D,sBAAsBp8D,KAAKzB,MAAMkgE,kBAAmBz+D,KAAKzB,MAAM65D,YAAY,EAGnE,KAAAkE,qBAAuB/5D,gBAC9BvC,KAAK43D,cAAc,EAAGoJ,EAAaC,eAAgBjhE,KAAKzB,MAAMu5D,uBAAwB,EAAG93D,KAAKzB,MAAMm+D,gBAAgB,EAG7G,KAAAL,uBAAyB95D,gBAChCvC,KAAK43D,cAAc,EAAG53D,KAAKzB,MAAMs5D,qBAAsBmJ,EAAaC,eAAgB,GAAG,EAAK,EAGrF,KAAArJ,cAAgBr1D,MAC7B2+D,EACArJ,EACAC,EACA5B,EACAwG,KAEA,MAAMtjC,GAAY+nC,EAAAA,EAAAA,qCAAoCnhE,KAAKjC,MAAM6E,QAAQJ,eACzE,QAAkBS,IAAdm2B,EACA,OAEJ,MAAMx3B,QAAew/D,EAAAA,EAAAA,2BAEjB,IAAIC,EAAAA,EACAjoC,GACAi5B,EAAAA,EAAAA,iBAAgBryD,KAAKjC,MAAM6E,QAAQJ,eACnCxC,KAAKjC,MAAM6E,QAAQH,QAAQ2qD,QAC3BkU,EAAAA,EAAAA,kBAAiBthE,KAAKjC,MAAM6E,QAAQJ,eACpCq1D,EAAqBlvD,IACrBmvD,EAAuBnvD,IACvBu4D,EAAY,EAAI,EAAIA,EACpBlhE,KAAKjC,MAAM8G,OAAOsxD,wBAEtBn2D,KAAKjC,MAAM6E,QAAQJ,eAEnBZ,GAAUA,EAAO4c,OAAS5c,EAAO46D,iBAA+Cv5D,IAAjCrB,EAAO46D,WAAWz+C,YACjE/d,KAAKwB,SAAS,CACV00D,cACAuG,cAAe76D,EAAO4c,MACtBq5C,uBACAC,yBACApU,aAAc9hD,EAAO46D,WAAWz+C,WAChC2+C,mBACD,EAIM,KAAA6E,cAAgB,CAACrR,EAAkB4F,KAChD,IAAI0L,GAAgB,EAChBnhD,EAAOrgB,KAAKzB,MAAMo6D,aAAanwD,KAAImqD,IAC/BA,EAAOzC,WAAaA,IACpByC,EAAOiG,SAAW9C,EAClB0L,GAAgB,GAEb7O,KAGN6O,IACDnhD,EAAOA,EAAKuE,OAAO,CAAEsrC,WAAU0I,SAAU9C,KAG7C91D,KAAKwB,SAAS,CAAEm3D,aAAct4C,GAAO,EAGxB,KAAAy7C,4BAA8B,CAAC5L,EAAkB4F,KAC9D2L,EACI,IAAItH,EACAjK,GACAmC,EAAAA,EAAAA,iBAAgBryD,KAAKjC,MAAM6E,QAAQJ,eACnCxC,KAAKjC,MAAM6E,QAAQH,QAAQ2qD,OAC3B0I,EACA91D,KAAK6gE,aAAa7gE,KAAKjC,MAAM6E,QAAQH,UACrCgwD,EAAAA,EAAAA,sBAAqBzyD,KAAKjC,MAAM6E,QAAQJ,gBAE5CxC,KAAKjC,MAAM6E,QAAQJ,eAElBb,MAAK,KACF3B,KAAKuhE,cAAcrR,EAAU4F,EAAU,IAE1C9zD,OAAOC,IACJ,MAAM,IAAIC,MAAM,gDAAgD,GAClE,EAGO,KAAA2+D,aAAgBj+D,GACtBA,GAAWA,EAAQsV,MAAQtV,EAAQsV,KAAKqK,MA7Z/C,MACI0tC,YAAcruD,OAAQquD,IACtBjwD,KAAKjC,MAAMqX,KAEfpV,KAAKzB,MAAQ,CACT2iE,UAAW,EACXxd,aAAc,EACd+Y,cAAe,GACfvG,YAAa,EACbwL,aAAa,EACbhF,iBAAiB,EACjB7E,qBAAsB73D,KAAKq6D,sBAAsB,GACjDvC,uBAAwB93D,KAAK06D,wBAAwB,GACrDa,iBAAkBtL,EAAaA,EAAW33B,OAAS,EACnD+iC,eAAgBpL,EAAaA,EAAWK,WAAa,GACrD6K,gBAAiBlL,EAAaA,EAAWnkD,MAAQ,GACjD4vD,mBAAmB,EACnBC,gBAAgB,EAChBK,mBAAmB,EACnB0E,gBAAgB,EAChBC,UAAU,EACVvI,YAAarC,EAAsBuJ,gBACnCb,kBAAmB,GACnBzE,gBAAiB,GACjBrB,aAAc,IAGlB34D,KAAK++D,uBAAyB/gE,EAAAA,YAC9BgC,KAAKw+D,uBAAyBxgE,EAAAA,YAC9BgC,KAAK0F,kBAAmB6hB,EAAAA,EAAAA,oBACpBvnB,KAAKjC,MAAM6E,QAAQH,QAAQ+kB,kBAC3BxnB,KAAKjC,MAAM0pB,aACXznB,KAAKjC,MAAMqF,UAEnB,CAEOiD,sBAAsBC,EAAgDC,GACzE,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,MAAMqX,OAAS9O,EAAU8O,IAIlE,CAsCO5O,SACH,MAAM,UAAEvI,EAAS,QAAE2Z,EAAO,uBAAEu+C,GAA2Bn2D,KAAKjC,MAAM8G,QAC5D,YAAEqxD,EAAW,aAAExS,EAAY,uBAAEoU,EAAsB,qBAAED,GAAyB73D,KAAKzB,OAErF80D,gBAAkBzxD,OAAQyxD,IAC1BrzD,KAAKjC,MAAMqX,KACTxV,EAAYI,KAAKjC,MAAM6B,UACvBk1D,EAAgBC,IAAU,kBAAmB92D,GAC7CoJ,EAAST,EAAAA,EAAA,GACR5G,KAAKjC,OAAK,IACbQ,MAAOyB,KAAKzB,MACZN,UAAW62D,EACXzsC,YAAa,CACTA,YAAaroB,KAAKjC,MAClBE,UAAW62D,GAEfnrC,UAAW3pB,KAAKi7D,qBAChB0G,YAAa3hE,KAAK0+D,mBAClBkD,kBAAmB5hE,KAAKi/D,qBACxB4C,iBACI7jE,EAAAA,cAAC8jE,EAAAA,gBAAe,CACZC,UAAWniE,EAAUoiE,qBACrBh4D,WAAW,sBACXi4D,gBAAiBjiE,KAAK06D,wBACtBuG,eAAgBnJ,EAChBoK,eAAgBliE,KAAKq8D,uBACrB8F,oBAAkB,IAG1BC,eACIpkE,EAAAA,cAAC8jE,EAAAA,gBAAe,CACZC,UAAWniE,EAAUyiE,mBACrBr4D,WAAW,oBACXi4D,gBAAiBjiE,KAAKq6D,sBACtB4G,eAAgBpJ,EAChBqK,eAAgBliE,KAAKs8D,uBAG7B/Y,cAAe8P,GACXr1D,EAAAA,cAACy6B,EAAAA,gBAAe,CACZR,UAAWo7B,EAAe9P,eAAiB,EAC3C5qB,UAAQ,EACR7xB,WAAW8qB,EAAAA,EAAAA,QAAOhyB,EAAUq1D,uBAAwB5B,EAAe9P,cAAe,KAClF7qB,YAAa,GAAG26B,EAAe3P,eAC/BtuC,KAAM,CAAC,EACPxS,QAAS5C,KAAKjC,MAAM6E,QACpBnC,GAAIT,KAAKjC,MAAM0C,GACfgY,SAAUzY,KAAKjC,MAAM0a,WAG7B6pD,YACItkE,EAAAA,cAACi4D,EAAW,CACRr2D,UAASgH,EAAA,GAAO5G,KAAKjC,MAAM6B,WAC3Bs2D,YAAaA,EACbxS,aAAcA,EACdyS,uBAAwBA,IAGhCoM,mBAAoB,CAAEtkE,UAAW,6BACjCukE,iBAAkB,CAAEvkE,UAAW,4BAC/BwkE,YAAaziE,KAAKi9D,aAAaj9D,KAAKzB,MAAMk+D,eAC1CxM,WAAYjwD,KAAK+8D,cACjB2F,aACI1kE,EAAAA,cAACu4D,EAAY,CACT32D,UAASgH,EAAA,GAAO5G,KAAKjC,MAAM6B,WAC3Bs2D,YAAaA,EACbC,uBAAwBA,EACxB0B,qBAAsBA,EACtBC,uBAAwBA,EACxBF,cAAe53D,KAAK43D,cACpBlU,aAAcA,EACdh+C,iBAAkB1F,KAAK0F,mBAG/Bi9D,iBACI3kE,EAAAA,cAAA,QAAMC,UAAU,iCAAgC,YAAW,UACtD2B,EAAU+iE,kBAGnBC,2BACI5kE,EAAAA,cAAA,QAAMC,UAAU,kCAAiC,YAAW,UACvD2B,EAAUijE,oCAGnBjrD,QAASA,GAAWA,EAAQoO,MACxBhoB,EAAAA,cAACk8B,EAAAA,GAAa,CACVj8B,UAAU,2BACVkrB,IAAKvR,EAAQuR,KAAO,KACpBnD,KAAMpO,EAAQoO,KACdmU,UAAW,CAAEC,OAAQp6B,KAAK40D,oBAAqBhkD,eAAgB5Q,KAAKjC,MAAM6E,QAAQH,WAG1FqgE,cAAe9iE,KAAKq6D,sBACpB0I,gBAAiB/iE,KAAK06D,0BAG1B,OAAO16D,KAAKjC,MAAMyqB,WAAWnhB,EACjC,GA1OE+yD,GAAW1wD,EAAAA,EAAAA,IAAA,CADhBkD,EAAAA,IACKwtD,GA2dN,qFC1kBA,MA+CM4I,EAAmBjlE,GAEjBC,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAMu/D,WACZt/D,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAMugE,aACXvgE,EAAMu6B,OACNv6B,EAAMkC,MAEXjC,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAMmgE,eACZlgE,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAMqgE,aACXrgE,EAAMwyD,YACNxyD,EAAM62B,KACN72B,EAAMuyD,YAEXtyD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAMogE,eACXpgE,EAAM8/D,aACN9/D,EAAMkgE,aACNlgE,EAAMigE,cAEXhgE,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAMsgE,eACXtgE,EAAMw/D,mBACNx/D,EAAM0/D,KACN1/D,EAAM2/D,QACN3/D,EAAM4/D,KACN5/D,EAAM6/D,UAOrBqF,EAAoBA,CAACllE,EAA8BsqB,IAEjDrqB,EAAAA,cAAC6wB,EAAAA,OAAM7nB,OAAAC,OAAA,GAAKlJ,EAAMswD,MAAWhmC,GACxBtqB,EAAM4wD,YACP3wD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAM+wD,WACZ9wD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAM8xD,MACZ7xD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAM+xD,UACX/xD,EAAMu6B,OACNv6B,EAAMsxD,aAEXrxD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAM+xD,UACX/xD,EAAMyxD,WACNzxD,EAAMwxD,YAEXvxD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAM+xD,UACX/xD,EAAM2xD,UACN3xD,EAAM0xD,WAEV1xD,EAAM4xD,iBACN5xD,EAAMkE,QAGfjE,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAM8wD,aACX9wD,EAAMkxD,aACNlxD,EAAMgxD,eAMjBmU,EAAoBA,CAACnlE,EAAoCQ,IAEvDP,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAMswD,OACZrwD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAM4wD,aAAcpwD,EAAMoiE,SAAW5iE,EAAM8hE,gBAAkB9hE,EAAM6hE,QAC7E5hE,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAM+wD,WACXvwD,EAAMoiE,SAAW5iE,EAAMsiE,uBAAyB,CAACtiE,EAAMoiE,cAAepiE,EAAMuiE,aAAcviE,EAAMkE,QAErGjE,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAM8wD,aAActwD,EAAMoiE,SAAW5iE,EAAMkiE,gBAAkB,CAACliE,EAAMkxD,aAAclxD,EAAMgxD,gBAK9G,EAvHyDhxD,IACrD,MAAM,cACFwlD,EAAa,iBACbse,EAAgB,QAChBjqD,EAAO,YACPyQ,EAAW,iBACXs6C,EAAgB,2BAChBC,EAA0B,aAC1BF,EAAY,mBACZH,EAAkB,kBAClBX,EAAiB,iBACjBY,EAAgB,YAChBC,EAAW,YACXH,EAAW,YACXX,EAAW,eACXS,EAAc,MACd7jE,EAAK,WACL0xD,GACAlyD,EAEJ,OAAKkyD,GAAqC,IAAvBwS,EAAY5gE,QAAiBtD,EAAMm+D,gBAKlD1+D,EAAAA,cAAC6wB,EAAAA,OAAM7nB,OAAAC,OAAA,GAAKohB,GACPzQ,EACA2rC,EACA+e,EACDtkE,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKs7D,GACLH,EACAP,GAEL7jE,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKu7D,GACLvS,GAAc+S,EAAgB/S,GAC9BwS,EAAYj6D,KAAImqD,GACNqQ,EAAgBrQ,MAGP,IAAvB8P,EAAY5gE,QAAgBtD,EAAMm+D,iBAAmBkG,EACrDF,EACAO,EAAkBtB,EAAat5C,GAC/B66C,EAAkBtB,EAAmBrjE,IArBnCP,EAAAA,cAAC6wB,EAAAA,OAAM7nB,OAAAC,OAAA,GAAKohB,GAAcs6C,EAsBxB,8IChDV,MAAMQ,EAA6CplE,GAC/CC,IAAAA,cAAA,KAAGC,UAAU,4BAA4BF,EAAMioB,MAG7Co9C,EAAmHrlE,IAM5H,MAAM,KAAEioB,EAAI,KAAE5M,EAAI,UAAEtS,EAAS,iBAAEpB,GAAqB3H,EAC9CyH,GAAUC,EAAAA,EAAAA,kBAAiB,QAASC,EAAmBigB,EAAAA,kBAAkB09C,QACzEvyC,GAAahL,EAAAA,EAAAA,wBAAuBpgB,EAAmBF,GAC7D,OACIxH,IAAAA,cAAA,IAAAgJ,OAAAC,OAAA,CAAGmS,KAAMA,EAAMnb,UAAU,uCAAsC,aAAa6I,GAAegqB,GACtF9K,EACD,EAaCs9C,EAA4CvlE,IACrD,MAAM,KAAEioB,EAAI,QAAE7e,EAAO,UAAEL,EAAS,SAAEsrC,EAAQ,iBAAE1sC,EAAgB,GAAEjF,GAAO1C,EAC/DyH,GAAUC,EAAAA,EAAAA,kBAAiB,QAASC,EAAmBigB,EAAAA,kBAAkB49C,aACzEzyC,GAAahL,EAAAA,EAAAA,wBAAuBpgB,EAAmBF,GAC7D,OACIxH,IAAAA,cAAA,SAAAgJ,OAAAC,OAAA,CAAQxG,GAAIA,EAAIxC,UAAU,kCAAiC,aAAa6I,EAAWK,QAASA,EAASjG,IAAKkxC,GAActhB,GACnH9K,EACI,ukBCgBjB,MAAMu9C,UAAoBvlE,IAAAA,cAyBtBK,YAAmBN,GACfO,MAAMP,GAtBO,KAAAylE,qBAA8C,CAE3D5H,YAAa57D,KAAK67D,mBAClBX,kBAAoBpvD,IAChB9L,KAAKwB,SAAS,CAAE+uD,YAAazkD,GAAQ,EAEzCsvD,iBAAmBp1C,IACfhmB,KAAKwB,SAAS,CAAE8uD,WAAYtqC,GAAO,EAEvCs1C,aAAehjC,IACXt4B,KAAKwB,SAAS,CAAE82B,UAAS,EAE7BkjC,kBAAoBC,IACZA,EACAz7D,KAAKwB,SAAS,CAAEk6D,mBAAmB,EAAOC,gBAAgB,IAE1D37D,KAAKwB,SAAS,CAAEm6D,gBAAgB,GAAQ,EAGhD1J,aAAAA,EAAAA,GAgFG,KAAA2C,oBAAuBvzD,GAA0CrB,KAAKjC,MAAM8G,OAAO+S,QAASoO,KAAO3kB,EAAMgB,OAAOrB,MACtG,KAAA29D,eAAkBt9D,IAC/BrB,KAAKwjE,qBAAqBtI,kBAAkB75D,EAAMgB,OAAOrB,MAAM,EAGlD,KAAA49D,cAAiBv9D,IAC9BrB,KAAKwjE,qBAAqBpI,iBAAiB/5D,EAAMgB,OAAOrB,MAAM,EAGjD,KAAA69D,gBAAmB79D,IAChChB,KAAKwjE,qBAAqBlI,aAAat6D,EAAM,EAGhC,KAAA66D,mBAAqB,KAClC,MAAM5L,EAAajwD,KAAKjC,MAAMqX,KAAK66C,WAAWruD,OAC1C5B,KAAKzB,MAAMm9D,kBACX17D,KAAKwB,SAAS,CAAEk6D,mBAAmB,EAAOC,gBAAgB,IACnD1L,EACPjwD,KAAKwB,SAAS,CACVk6D,mBAAmB,EACnBpL,WAAYL,EAAWK,WACvBC,YAAaN,EAAWnkD,MACxBwsB,OAAQ23B,EAAW33B,SAGvBt4B,KAAKwB,SAAS,CACVk6D,mBAAmB,EACnBpL,WAAY,GACZC,YAAa,GACbj4B,OAAQ,GACT,EA1GP,MACI23B,YAAcruD,OAAQquD,IACtBjwD,KAAKjC,MAAMqX,KACfpV,KAAK67D,mBAAqB77D,KAAK67D,mBAAmB7wD,KAAKhL,MACvDA,KAAKyjE,gBAAkBzlE,IAAAA,YACvB,MAAMs6B,EAAS23B,EAAaA,EAAW33B,OAAS,EAC1Ci4B,EAAcN,EAAaA,EAAWnkD,MAAQ,GAC9CwkD,EAAaL,EAAaA,EAAWK,WAAa,GAExDtwD,KAAKzB,MAAQ,CACTm9D,mBAAmB,EACnBpjC,SACAi4B,cACAD,aACAqL,gBAAgB,GAEpB37D,KAAK0F,kBAAmB6hB,EAAAA,EAAAA,oBACpBvnB,KAAKjC,MAAM6E,QAAQH,QAAQ+kB,kBAC3BxnB,KAAKjC,MAAM0pB,aACXznB,KAAKjC,MAAMqF,UAEnB,CAEOoD,SACH,MAAM,UAAE5G,GAAcI,KAAKjC,OACrB,UAAEE,EAAS,QAAE2Z,GAAY5X,KAAKjC,MAAM8G,QAEtC9B,SAAWnB,OAAQmB,GACnBktD,YAAcruD,OAAQquD,IACtBjwD,KAAKjC,MAAMqX,KAETsuD,EAAW1jE,KAAKjC,MAAM6E,SAAW5C,KAAKjC,MAAM6E,QAAQH,SAAWzC,KAAKjC,MAAM6E,QAAQH,QAAQyV,KAC1F48C,EAAgB3iD,IAAW,kBAAmB,2BAA4BlU,GAC1EoJ,EAAST,EAAAA,EAAA,GACR5G,KAAKjC,OAAK,IACbQ,MAAOyB,KAAKzB,MACZN,UAAW62D,EACXzsC,YAAa,CACTA,YAAaroB,KAAKjC,MAClBE,UAAW62D,EACXr0D,GAAI,MAERkpB,UAAW3pB,KAAKwjE,qBAChBG,cAAe3lE,IAAAA,cAACmlE,EAAa,CAACn9C,KAAMpmB,EAAU+jE,gBAC9CC,aACI5lE,IAAAA,cAAColE,EAAY,CACTp9C,KAAMpmB,EAAUikE,YAChB/8D,UAAWlH,EAAUkkE,gBACrB1qD,KAAMsqD,EAAS97C,UACfliB,iBAAkB1F,KAAK0F,mBAG/Bq+D,aAAc7pC,EAAAA,GAAsBl6B,KAAKjC,MAAM6E,QAAQH,UAAYM,GAC/D/E,IAAAA,cAACslE,EAAW,CACRt9C,KAAMiqC,EAAarwD,EAAUokE,qBAAuBpkE,EAAUqkE,kBAC9Dn9D,UAAWlH,EAAUqkE,kBACrB7xB,SAAUpyC,KAAKyjE,gBACft8D,QAASnH,KAAK67D,mBACdp7D,GAAIyyD,EAAAA,GACJxtD,iBAAkB1F,KAAK0F,mBAG/Bi8D,YAAa3hE,KAAKkkE,wBAClBtsD,QAASA,GAAWA,EAAQoO,MACxBhoB,IAAAA,cAACk8B,EAAAA,GAAa,CACVj8B,UAAU,2BACVkrB,IAAKvR,EAAQuR,KAAO,KACpBnD,KAAMpO,EAAQoO,KACdmU,UAAW,CAAEC,OAAQp6B,KAAK40D,oBAAqBhkD,eAAgB5Q,KAAKjC,MAAM6E,QAAQH,aAK9F,OAAOzC,KAAKjC,MAAMyqB,WAAWnhB,EACjC,CAwCQ68D,wBACJ,OAAOlW,EAAAA,EAAAA,GAAY,CACfiC,WAAYjwD,KAAKjC,MAAMqX,KAAK66C,WAAWruD,OACvCmB,QAAS/C,KAAKjC,MAAMqX,KAAKrS,QAAQnB,OACjChC,UAASgH,EAAA,GAAO5G,KAAKjC,MAAM6B,WAC3BgD,QAAS5C,KAAKjC,MAAM6E,QACpB8tD,SAAU1wD,KAAKjC,MAAM0C,GACrBkwD,WAAY3wD,KAAKjC,MAAM0a,SACvBja,OAAQwB,KAAKzB,MAAMm9D,kBACnBpjC,OAAQt4B,KAAKzB,MAAM+5B,OACnBi4B,YAAavwD,KAAKzB,MAAMgyD,YACxBD,WAAYtwD,KAAKzB,MAAM+xD,WACvB9B,cAAexuD,KAAK67D,mBACpB7K,cAAehxD,KAAK2+D,eACpBrjC,aAAct7B,KAAK4+D,cACnBhO,eAAgB5wD,KAAK6+D,gBACrB3M,iBAAkBlyD,KAAKwjE,qBAAqBhI,kBAC5CzK,gBAAiB,cACjBrC,UAAW1uD,KAAKyjE,gBAChB1T,SAAU/vD,KAAKzB,MAAMo9D,eACrBj2D,iBAAkB1F,KAAK0F,kBAE/B,EAGJ,qFCvNA,MAqBMu9D,EAAoBA,CAACllE,EAA8BsqB,IAEjDrqB,EAAAA,cAAC6wB,EAAAA,OAAM7nB,OAAAC,OAAA,GAAKlJ,EAAMswD,MAAWhmC,GACxBtqB,EAAM4wD,YACP3wD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAM+wD,WACZ9wD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAM8xD,MACZ7xD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAM+xD,UACX/xD,EAAMu6B,OACNv6B,EAAMsxD,aAEXrxD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAM+xD,UACX/xD,EAAMyxD,WACNzxD,EAAMwxD,YAEXvxD,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAM+xD,UACX/xD,EAAM2xD,UACN3xD,EAAM0xD,WAEV1xD,EAAM4xD,iBACN5xD,EAAMkE,QAGfjE,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKlJ,EAAM8wD,aACX9wD,EAAMkxD,aACNlxD,EAAMgxD,eAMvB,EAnDyDhxD,IACrD,MAAM,QAAE6Z,EAAO,cAAE+rD,EAAa,aAAEC,EAAY,YAAEG,EAAW,YAAEpC,EAAW,YAAEt5C,GAAgBtqB,EAClFukB,EAAkBvkB,EAAM6E,QAAQH,QAAQyV,KAAKoK,gBACnD,OACItkB,EAAAA,cAAC6wB,EAAAA,OAAM7nB,OAAAC,OAAA,GAAKohB,GACPzQ,EACC0K,EAMEtkB,EAAAA,cAAAA,EAAAA,SAAA,KACK+lE,EACAd,EAAkBtB,EAAat5C,IAPpCrqB,EAAAA,cAAAA,EAAAA,SAAA,KACK2lE,EACAC,GAQJ,+JClBV,MAAMO,IACGz6D,EAAAA,EAAAA,IAAA,CAAXwkB,EAAAA,IAAU,kCAECxkB,EAAAA,EAAAA,IAAA,CAAXwkB,EAAAA,IAAU,6CAECxkB,EAAAA,EAAAA,IAAA,CAAXwkB,EAAAA,IAAU,qDCeHk2C,EAUAC,soBAVZ,SAAYD,GACRA,EAAA,0BACAA,EAAA,kBACAA,EAAA,kBACAA,EAAA,WACH,CALD,CAAYA,IAAAA,EAAc,KAU1B,SAAYC,GAIRA,EAAA,kBAKAA,EAAA,kBAKAA,EAAA,iBACH,CAfD,CAAYA,IAAAA,EAAoC,KAoBzC,MAAMC,EAWTjmE,YAAmByK,EAAqBujC,EAAck4B,EAAyBC,EAAoBC,GAQ5F,KAAA7W,YAAc,IAAM,+BAEpB,KAAAC,mBAAqB,IAAM,+BAE3B,KAAAC,cAAgB,IAAiB,OAXpC9tD,KAAK0kE,YAAc57D,EACnB9I,KAAK2kE,gBAAkBt4B,EACvBrsC,KAAKukE,eAAiBA,EACtBvkE,KAAKwkE,UAAYA,EACjBxkE,KAAKykE,UAAYA,CACrB,EA0DJliE,eAAeqiE,EAAgBjgE,EAAyBkgE,EAA8B7X,GAAmB,IAAA8X,EACrG,MAAMpgE,GAAY4D,EAAAA,EAAAA,IAAa0kD,EAAIp8C,gBACnC,IAAIm0D,EAA+C,CAC/C37D,gBAAiBzE,EAAM+/D,aAAe//D,EAAM+/D,YAAY7iE,OAAS,EAAI8C,EAAM+/D,YAAc,GACzF17D,QAAS,CACLC,WAAY+jD,EAAIp8C,eAAelO,YAAYC,UAC3CuG,UAAWxE,IAInB,IAAiC,QAA7BogE,EAAA9X,EAAIp8C,eAAee,IAAI9M,cAAM,IAAAigE,OAAA,EAA7BA,EAA+BE,+BAAgCX,EAAqCY,QAAS,CAC7G,MAEMC,EAjC2BC,EACrCC,EACAC,KAEA,GAAID,GAAiCA,EAA8BE,6CAC/D,MAAO,CACHC,gBAAiBH,EAA8BE,6CAC/CxrB,cAAe0rB,EAAAA,kBAAkBC,UACjCC,qBAAsBL,EAAY,OAAS,QAC3CM,sBAAuBN,EAAY,OAAS,QAC5CO,SAAU,GACVC,UAAW,EACXC,MAAO,EACP/2D,oBAAqB,GACrBg3D,mBAAoBC,EAAAA,qBAAqBC,UAGjC,EAgBkBd,OAFce,EAAAA,EAAAA,gCAA+B,CAAE58D,cAAe0jD,KACnE,GAGrBkY,IACAH,EAAqBn+D,EAAAA,EAAA,GACdm+D,GAAqB,IACxBoB,WAAY,CAACjB,KAChB,CAIT,MAAMkB,EAA2C,CAC7CC,sBAAuBtB,EACvBuB,UAAW3hE,EAAM6/D,UACjB+B,UAAW5hE,EAAM8/D,UACjBL,eAAgBz/D,EAAM4/D,gBAGpBiC,QAA0BC,EAAAA,EAAAA,2BAC5B,CAAEn9D,cAAe0jD,EAAK/pC,oBAAqB,CAAEC,OAAQ,CAAEC,IAAKxe,EAAMggE,mBAClEyB,GAGAI,GAAqBA,EAAkB3kE,OAAS,GAEhD2kE,EAAkBh+D,KACb8B,GACIA,EAAKq8C,SAAWr8C,EAAKq8C,UAAWjzC,EAAAA,EAAAA,kBAAiBpJ,EAAKq8C,SAAUqG,EAAIp8C,eAAelO,aAAe,KAG3GmiE,EAAY6B,iBAAmBF,GAE/BxZ,EAAI5pD,UAAUnB,MACV,4FAA4FmkE,EAAehC,iBAGvH,CAEO,MAMP,GANoDrX,EAAAA,EAAAA,IAA2B,CAC3EtsD,GAAI,iEACJ0tB,OA5FG5rB,eAA0CoC,EAAyBqoD,GAEtE,IAAKroD,IAAUA,EAAM+/D,YACjB,MAAM,IAAIxiE,MAAM,oEAGpB,MAAM2iE,EAA+B,CAAC,EAEhC8B,EAAsB,CAAC/B,EAAgBjgE,EAAOkgE,EAAa7X,IACjE,OAAO3pD,QAAQujE,IAAID,GAAqBhlE,MAAK,IAClCkjE,GAEf,EAiFIlgE,MAtGiBkiE,GACV,IAAIvC,0CCvDf,IAAI9+D,EAMG,MAAMshE,EAAgC/oE,IACzC,MAAM,YACFgpE,EAAW,WACXj+D,EACAk+D,kBACIpnE,WAAW,0BAAEqnE,KAEjBlpE,EAEEmpE,EAAgC,GACtC1hE,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS1H,EAAM2H,iBAAmB,IAE7DqhE,SAAAA,EAAav+D,KAAI8B,IACb48D,EAAWtzC,KAAKuzC,EAAc78D,EAAMvM,GAAO,IAK/C,MAAO,CAAE+N,MAFSs7D,EAAaH,EAA2Bn+D,GAE/Bkd,KAAMkhD,EAAY,EAG3CE,EAAeA,CAACH,EAAmCn+D,KACrD,MAAMu+D,EAAgCJ,GAChCr1C,EAAAA,EAAAA,QAAOq1C,EAA2Bn+D,GAClC,WAAWA,mBAEjB,OAAO9K,EAAAA,cAAA,MAAIC,UAAU,0CAA0CopE,EAAmC,EAGhGF,EAAgBA,CAAC78D,EAAwBvM,KAC3C,MAAM,WAAE+K,EAAU,UAAE07D,EAAS,UAAEC,EAAS,mBAAE6C,GAAuBvpE,EAE3DwpE,EAAaD,EAAqBh9D,EAAKiI,MAAQjI,EAAKiI,OAASjI,EAAKiI,MAAMo4B,MAAM,KAAK68B,MACnF1gE,EAAYygE,EACZA,EAAWxjE,QAAQ,IAAIC,OAAO,IAAIwgE,KAAc,MAAO,IAAIzgE,QAAQ,IAAIC,OAAO,IAAIygE,KAAc,MAAO,IACvGn6D,EAAKiI,OAASjI,EAAKiI,MAAMxO,QAAQ,IAAIC,OAAO,IAAIwgE,KAAc,MAAO,IAAIzgE,QAAQ,IAAIC,OAAO,IAAIygE,KAAc,MAAO,IAC3Hj/D,EAAQukC,cAAcC,MAAQ1/B,EAAKiI,MACnC,MAAMk1D,GAAY3hD,EAAAA,EAAAA,wBAAuB/nB,EAAM2H,iBAAmBF,GAClE,OACIxH,EAAAA,cAAA,MAAIC,UAAU,wCAAwC0K,IAAK2B,EAAK4Q,IAC5Dld,EAAAA,cAAA,IAAAgJ,OAAAC,OAAA,cAAeH,EAAWsS,KAAMsuD,EAAcp9D,EAAMxB,EAAY/K,IAAY0pE,GACvEC,EAAcp9D,EAAMxB,EAAY/K,IAAU4pE,EAAoBJ,GAA0B,GAAI/C,EAAWC,IAE3G,EAIPiD,EAAgBA,CAACE,EAA8B9+D,EAAoB/K,IAC9D6pE,GAAcA,EAAW1sD,GAAK2sD,EAAiBD,EAAW1sD,GAAIpS,EAAY/K,GAAS,GAGxF8pE,EAAmBA,CAACpnE,EAAYqI,EAAoB/K,KAA8C,IAAA+pE,EACpG,MAAM,cAAEC,EAAa,UAAEC,EAAS,eAAEC,GAAmBlqE,EAErD,IAAK6e,EAAAA,GAASC,UACV,MAAO,GAGX,MAAMqrD,EAAW,IAAIprD,IAAIirD,EAAe7iE,OAAOC,SAASiU,MAEpD4uD,GAAal/D,GACbo/D,EAAS1oD,aAAaC,IAAIuoD,EAAWl/D,GAGzC,MAAMq/D,EAAmBF,aAAc,EAAdA,EAAgB15D,MAAK65D,GACnCA,EAASC,cAAgBrC,EAAAA,qBAAqBsC,WAEnDC,EAAUJ,SAAwB,QAARL,EAAhBK,EAAkBK,cAAM,IAAAV,OAAA,EAAxBA,EAA0Bv5D,MAAKjE,GACpCA,EAAKi7D,kBAAoBlgE,OAAOC,SAAS7E,EAAI,MAGlDgoE,EAAiBF,GAAW3hC,KAAKC,UAAU6hC,EAAiB,CAACH,KAKnE,OAJIE,GACAP,EAAS1oD,aAAaC,IAAI,WAAYgpD,GAGnCP,EAAS9uD,IAAI,EAGlBuuD,EAAsBA,CAACC,EAAoBpD,EAAmBC,KAChE,MAAMkE,EAAgBf,EACjB7jE,QAAQ,IAAIC,OAAO,IAAIwgE,KAAc,MAAO,YAC5CzgE,QAAQ,IAAIC,OAAO,IAAIygE,KAAc,MAAO,aAGjD,OAAOzmE,EAAAA,cAAA,QAAMiG,yBAAyB01C,EAAAA,EAAAA,IAAgBgvB,IAAkB,EAKtEC,EAAwB,CAC1B,gBACA,uBACA,kBACA,qBACA,wBACA,YAOEF,EAAoBN,IACtB,MAAMS,EAA4C,GAUlD,OARAT,EAAS1c,SAAQ6c,IACb,MAAMO,EAAyC,GAC/CF,EAAsBld,SAAQqd,IAC1BD,EAAkBl1C,KAAK20C,EAAQQ,GAAY,IAE/CF,EAAmBj1C,KAAKk1C,EAAkB,IAGvCD,CAAkB,EClHhBG,EAAiBjrE,IAC1B,MAAM,UACFiqE,EAAS,kBACTiB,EAAiB,gBACjBC,EAAe,gBACfzpE,EAAe,kBACf0pE,EAAiB,SACjBC,EAAQ,oBACRC,EAAmB,yBACnBC,EAAwB,MACxB7qE,EAAK,gBACL8qE,EAAe,gBACfC,EAAe,gBACfC,GACA1rE,EAEE2rE,EAnBqBP,IAAgD9nE,IAC3E8nE,EAAkB9nE,EAAMgB,OAAOrB,OAAS,GAAG,EAkBrB2oE,CAAsBR,GAEtCS,EAAaV,EAaflrE,EAAAA,cAAA,SACIC,UAAU,0BACV4C,KAAK,OAAM,aACC2oE,EACZvpE,KAAM+nE,EACNjnE,YAAakoE,EACb/nE,IAAKzB,EACLiB,SAAUgpE,EACV1oE,MAAOvC,IApBXT,EAAAA,cAAA,SACIC,UAAU,0BACV4C,KAAK,OAAM,aACC2oE,EACZvpE,KAAM+nE,EACNjnE,YAAakoE,EACb/nE,IAAKzB,EACLiB,SAAUgpE,EACVvoE,UAAWioE,EACXpoE,MAAOvC,IAeTorE,GAAiBR,GAAuBrrE,EAAAA,cAACkU,EAAAA,OAAM,CAACjU,UAAU,+BAA8B,aAAawrE,IAW3G,MAAO,CAAE9kE,MAAOilE,EAAWE,UARvB9rE,EAAAA,cAACkU,EAAAA,OAAM,CACHjU,UAAYorE,EAAuD,uCAAjC,+BAAuE,aAC7FE,EACZpiE,QAASmiE,EACTzoE,KAAK,WAIwCkpE,UAAWF,EAAe,EC/DnF,IAAIrkE,EAMG,MAAMwkE,EAA+BjsE,IACxC,MAAM,YAAEgpE,EAAW,UAAEvC,EAAS,UAAEC,GAAc1mE,EAE9CyH,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS1H,EAAM2H,iBAAmB,IAE7D,MAAMwhE,EAAgC,GAMtC,OAJAH,SAAAA,EAAav+D,KAAI8B,IACb48D,EAAWtzC,KAAKuzC,EAAc78D,EAAMk6D,EAAWC,EAAW1mE,GAAO,IAG9D,CAAEioB,KAAMkhD,EAAY,EAGzBC,EAAgBA,CAAC78D,EAAwBk6D,EAAmBC,EAAmB1mE,KACjF,MAAM+I,EACFwD,EAAKiI,OAASjI,EAAKiI,MAAMxO,QAAQ,IAAIC,OAAO,IAAIwgE,KAAc,MAAO,IAAIzgE,QAAQ,IAAIC,OAAO,IAAIygE,KAAc,MAAO,IACzHj/D,EAAQukC,cAAcC,MAAQljC,EAC9B,MAAM2gE,GAAY3hD,EAAAA,EAAAA,wBAAuB/nB,EAAM2H,iBAAmBF,GAClE,OACIxH,EAAAA,cAAA,MAAIC,UAAU,uCAAuC0K,IAAK2B,EAAK4Q,IAC3Dld,EAAAA,cAAA,IAAAgJ,OAAAC,OAAA,cAAeH,EAAWsS,KAAMsuD,EAAcp9D,EAAMk6D,EAAWC,EAAW1mE,IAAY0pE,GACjFC,EAAcp9D,EAAMk6D,EAAWC,EAAW1mE,IACvC4pE,EAAoBr9D,EAAKiI,MAAQjI,EAAKiI,MAAQ,GAAIiyD,EAAWC,IAEpE,EAIPiD,EAAgBA,CAACE,EAA8BpD,EAAmBC,EAAmB1mE,KACvF,MAAM,cAAEgqE,EAAa,UAAEC,GAAcjqE,EAE/BksE,EAAiBrC,EAAWr1D,MAC7BxO,QAAQ,IAAIC,OAAO,IAAIwgE,KAAc,MAAO,IAC5CzgE,QAAQ,IAAIC,OAAO,IAAIygE,KAAc,MAAO,IAEjD,IAAK7nD,EAAAA,GAASC,UACV,MAAO,GAGX,MAAMqrD,EAAW,IAAIprD,IAAIirD,EAAe7iE,OAAOC,SAASiU,MAKxD,OAJI4uD,GAAaiC,GACb/B,EAAS1oD,aAAaC,IAAIuoD,EAAWiC,GAGlC/B,EAAS9uD,IAAI,EAGlBuuD,EAAsBA,CAACC,EAAoBpD,EAAmBC,KAChE,MAAMkE,EAAgBf,EACjB7jE,QAAQ,IAAIC,OAAO,IAAIwgE,KAAc,MAAO,YAC5CzgE,QAAQ,IAAIC,OAAO,IAAIygE,KAAc,MAAO,aAGjD,OAAOzmE,EAAAA,cAAA,QAAMiG,yBAAyB01C,EAAAA,EAAAA,IAAgBgvB,IAAkB,ECtE/DuB,EAAkBnsE,IAC3B,MAAM,iBACFosE,EAAgB,sBAChBC,EAAqB,qBACrBC,EAAoB,WACpBC,EAAU,qBACVC,EAAoB,gBACpBrB,EAAe,yBACfI,EAAwB,iBACxB5jE,GACA3H,EACEyH,GAAUC,EAAAA,EAAAA,kBAAiB,QAASC,EAAkB4kE,EAAY,IAClEx5C,GAAahL,EAAAA,EAAAA,wBAAuBpgB,EAAkBF,GAE5D,OACIxH,EAAAA,cAAA,OAAKC,UAAWksE,GACZnsE,EAAAA,cAACkU,EAAAA,OAAMlL,OAAAC,OAAA,CACHhJ,UAAU,kBAAiB,gBACZosE,EAAoB,aACvBD,EACZjjE,QAASmiE,EACTl3B,SAAUm4B,GACNz5C,IAEFo4C,GACElrE,EAAAA,cAAA,QAAMC,UAAU,uBAAsB,kBACjCqsE,IAIX,8OCUd,IAAI9kE,EACAE,EAMG,MAAM8kE,EAA+BzsE,IACxC,MAAM,YACFgpE,EAAW,UACXtC,EAAS,UACTD,EACAwC,kBACIpkE,SAAS,cAAEJ,GACX5C,WAAW,yBAAE6qE,IAChB,WACDC,EAAU,SACVpyD,GACAva,EACEmpE,EAA4C,GAClDxhE,EAAmB3H,EAAM2H,iBACzBF,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS1H,EAAM2H,iBAAmB,IAE7DqhE,SAAAA,EAAav+D,KAAI8B,IACb48D,EAAWtzC,KAAKuzC,EAAc78D,EAAMk6D,EAAWC,EAAWjiE,EAAezE,EAAO2sE,EAAYpyD,GAAU,IAK1G,MAAO,CAAExM,MAFSs7D,EAAaqD,GAEJjsD,MAAO0oD,EAAY,EAG5CE,EAAgBqD,IAClB,MAAME,EAA+BF,GAAsD,iBAE3F,OAAOzsE,EAAAA,cAAA,MAAIC,UAAU,yCAAyC0sE,EAAkC,EAG9FxD,EAAgBA,CAClB78D,EACAk6D,EACAC,EACAjiE,EACAzE,EACA2sE,EACApyD,KAC6B,IAAAsyD,EAC7B,MAAMv5D,EACF/G,EAAKiI,OAASjI,EAAKiI,MAAMxO,QAAQ,IAAIC,OAAO,IAAIwgE,KAAc,MAAO,IAAIzgE,QAAQ,IAAIC,OAAO,IAAIygE,KAAc,MAAO,IAEnHzxD,EAAmB,QAAd43D,EAAGtgE,EAAKugE,cAAM,IAAAD,GAAO,QAAPA,EAAXA,EAAar4D,aAAK,IAAAq4D,OAAA,EAAlBA,EAAoBE,aAClC,MAAO,CACH9kD,KAAM2hD,EAAoBr9D,EAAKiI,MAAQjI,EAAKiI,MAAQ,GAAIiyD,EAAWC,GACnEsG,UAAWC,GAAiB1gE,EAAM+G,GAAoB,GAAItT,GAC1DiV,OAAQkV,EAAAA,iBAAiBC,kBAAkBnV,IAAUqF,GAAarF,EAAOA,EAAOsF,EAAUoyD,EAAY3sE,GACtGktE,UAAWC,IACXC,SAAUC,EAAa9gE,EAAMk6D,EAAWC,EAAWjiE,EAAezE,GAClE0C,GAAI6J,EAAK4Q,GACZ,EAGCgwD,EAAgBA,KACX,CACHjtE,UAAW,uCACXkrB,IAAK,OAIPiiD,EAAeA,CACjB9gE,EACAk6D,EACAC,EACAjiE,EACAzE,KAEA,MACIipE,kBAAkB,QAAEpkE,IACpB7E,EACE+I,EACFwD,EAAKiI,OAASjI,EAAKiI,MAAMxO,QAAQ,IAAIC,OAAO,IAAIwgE,KAAc,MAAO,IAAIzgE,QAAQ,IAAIC,OAAO,IAAIygE,KAAc,MAAO,IAEzHj/D,EAAQukC,cAAcshC,MAAQ/gE,EAAK4Q,GACnC,MAAMusD,GAAY3hD,EAAAA,EAAAA,wBAAuBpgB,EAAmBF,GAG5D,4WAAAoB,CAAA,CACI3I,UAAW,uCACXkrB,IAAK,IACL,aAAc,GAAGriB,KALAlE,EAAQqQ,iBAAiBC,eAAe5I,EAAKugE,OAAQt4D,MAAOu4D,gBAM7E1xD,KAAMsuD,EAAcp9D,EAAMk6D,EAAWC,EAAWjiE,IAC7CilE,EAAS,EAIdC,EAAgBA,CAACE,EAA8BpD,EAAmBC,EAAmBjiE,KACvF,MAAMynE,EAAiBrC,EAAWr1D,MAC7BxO,QAAQ,IAAIC,OAAO,IAAIwgE,KAAc,MAAO,IAC5CzgE,QAAQ,IAAIC,OAAO,IAAIygE,KAAc,MAAO,IACjD,OAAOmD,EAAWr1D,OAASq1D,EAAW1sD,IAChCsrB,EAAAA,EAAAA,uBAAsByjC,EAAgBrC,EAAW1sD,GAA0B1Y,OAAeS,GAC1F,EAAE,EAGN0kE,EAAsBA,CAACC,EAAoBpD,EAAmBC,KAChE,MAAMkE,EAAgBf,EACjB7jE,QAAQ,IAAIC,OAAO,IAAIwgE,KAAc,MAAO,YAC5CzgE,QAAQ,IAAIC,OAAO,IAAIygE,KAAc,MAAO,aAEjD,OAEIzmE,EAAAA,cAAA,QAAMC,UAAU,sDAAsDgG,yBAAyB01C,EAAAA,EAAAA,IAAgBgvB,IAAkB,EAInItwD,GAAeA,CACjBihB,EACAD,EACA/gB,EACAoyD,EACA3sE,KACoB,IAAAutE,EACpB,MACItE,kBAAkB,QAAEpkE,IACpB7E,EAEJ,OACIC,EAAAA,cAACwa,EAAAA,eAAc,CACX/X,GAAI6X,EACJG,SAAUiyD,EACV9nE,QAASA,EACTwS,KAAM,CACFpC,MAAO,CACHsjB,wBAAyBgD,EACzBzpB,UAAWwpB,IAGnBp7B,UAAU,6CACVya,cAA8B,QAAjB4yD,EAAEvtE,EAAM6B,iBAAS,IAAA0rE,OAAA,EAAfA,EAAiB5yD,eAClC,EAIJsyD,GAAmBA,CAACpD,EAA8Bv2D,EAAiBtT,KACrE,MACIipE,kBACIpkE,SACIH,SAAS,aAAEoO,IAEfhM,QAAQ,cAAEyC,KAEdvJ,EAKJ,GAJIuJ,IACAA,EAAc4xB,iBAAkB,IAG/B0uC,IAAeA,EAAWjhB,SAE3B,OADA5oD,EAAMqF,UAAUnB,MAAM,2DACf,KAaX,OACIjE,EAAAA,cAACoT,EAAAA,GAAK,CACFR,eAAgB7S,EAAMipE,iBAAiBpkE,QAAQJ,cAAcoO,eAC7DS,QAASA,EACTpT,UAAU,2CACVqT,IAAKs2D,EAAWjhB,SAChB91C,aAAcA,EACdvJ,cAAeA,GAjBsB,CACzCrI,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCC,GAAI,CAAEH,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCE,GAAI,CAAEJ,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,IAEvCG,UAAU,EACV05B,iBAAiB,GAWbrnB,oBAAoB,SACtB,2kBClKV,MAAMhT,WAAeb,EAAAA,UAkCjBK,YAAmBN,GACfO,MAAMP,GAxBO,KAAAymE,UAAoB,IAEpB,KAAAC,UAAoB,IAEpB,KAAA8G,SAAmB,IAgTnB,KAAAC,eAAiB,KAC9B,MAAMC,EAAczrE,KAAKjC,MAAM6B,UAAU8rE,gCACzC,OAAO1tE,EAAAA,cAAC+J,EAAAA,EAAO,CAAC9J,UAAU,iCAAiCmtD,MAAOqgB,EAAaE,KAAMC,EAAAA,EAAYC,OAAQC,cAAc,SAAU,EAIpH,KAAAC,gBAAmBz/D,IAChC,MAAM,YAAEy6D,GAAgB/mE,KAAKzB,MAEzBwoE,GAAeA,EAAYL,kBAAuD,OAAnCp6D,EAAEjK,OAAO2pE,QAAQ,eAChEhsE,KAAKisE,wBAAyB,EAIrB,KAAAC,OAAU5/D,IACvB,MAAM,YAAEy6D,GAAgB/mE,KAAKzB,MAEzBwoE,GAAeA,EAAYL,kBAAoBp6D,EAAE6/D,UAAYC,EAAAA,SAASC,OACtErsE,KAAKisE,yBACEjsE,KAAKzB,MAAM8rE,sBAAwB/9D,EAAE6/D,UAAYC,EAAAA,SAASC,QAC7DrsE,KAAKzB,MAAM8rE,sBACXrqE,KAAKwB,SAAS,CAAE6oE,sBAAsB,IAMrCrqE,KAAKssE,cAAczmE,SAAW7F,KAAKssE,cAAczmE,QAAQklC,SAAUz+B,EAAEjK,SACrErC,KAAKusE,qBAAqB1mE,SAAW7F,KAAKusE,qBAAqB1mE,QAAQklC,SAAUz+B,EAAEjK,UAGpF0kE,GAAeA,EAAYL,kBAC3B1mE,KAAKisE,yBAGLjsE,KAAKzB,MAAM8rE,sBACXrqE,KAAKwB,SAAS,CAAE6oE,sBAAsB,IAAQ,EAKzC,KAAA4B,uBAAyB,KACtC,MACIrpE,SAAS,cAAEJ,GACX4S,MAAM,YAAEo3D,IACRxsE,KAAKjC,MAELiC,KAAKP,gBAAgBoG,SAAW7F,KAAKP,gBAAgBoG,QAAQ7E,MAAMa,OAAS,IAC5E2qE,EAAY1jE,WAAa,GACzB0jE,EAAYC,sBAAwB,GACpCD,EAAYE,2BAA6B,GACzClqE,GAAgBA,EAAcke,QAAOisD,EAAAA,EAAAA,wBAAuBH,GAAcA,GAC1ExsE,KAAKP,gBAAgBoG,QAAQ7E,MAAQ,IAGzChB,KAAKwB,SAAS,CAAEsH,WAAY,GAAIi+D,iBAAa9jE,EAAWglE,oBAAgBhlE,GAAY,EA4DvE,KAAA2pE,mBAAsBnuE,MAC9BA,GAASA,EAAMoD,QAAU7B,KAAKopE,WAC/BppE,KAAKwB,SAAS,CAAEsH,WAAYrK,IAG5BuB,KAAK6sE,qBACL7sE,KAAK6sE,oBAAoBC,SAG7B,MAAM,QACFlqE,EACAwS,MAAM,YAAEo3D,IACRxsE,KAAKjC,MAET,GAAI6E,EAAS,CACT,GAAInE,GAASA,EAAMoD,OAAS,EAAG,CAC3B,GAAIpD,EAAMoD,OAAS7B,KAAKopE,SACpB,OAGA9oE,EAAAA,gBAAgBC,YAAYP,KAAK+sE,sBACjC/sE,KAAKgtE,iBAAiBvuE,GAG1B+tE,EAAY1jE,WAAarK,CAAM,MAE/BuB,KAAKwB,SAAS,CAAEulE,iBAAa9jE,EAAWglE,oBAAgBhlE,IACxDupE,EAAY1jE,WAAa,GAE7BlG,EAAQJ,cAAcke,QAAOisD,EAAAA,EAAAA,wBAAuBH,GAAcA,EAAa,GA2BtE,KAAAS,cACb3gE,IAEA,MACIzH,QAAQ,oBAAEwkE,GACVzmE,SAAS,cACLJ,EACAmP,KACI9M,QAAQ,2BAAE6nE,MAGlB1sE,KAAKjC,MAEHU,EAAQuB,KAAKP,gBAAgBoG,SAAW7F,KAAKP,gBAAgBoG,QAAQ7E,MAG3E,GAFAsL,EAAEhL,kBAEG7C,GAAUA,GAA0B,IAAjBA,EAAMoD,QAAiBwnE,EAC3CrpE,KAAKP,iBAAmBO,KAAKP,gBAAgBoG,SAAW7F,KAAKP,gBAAgBoG,QAAQC,YAClF,CACH,MAAMkiE,EAAY0E,GAA8B,IAC1CQ,EAAYltE,KAAKmtE,oBAAmBtyD,EAAAA,EAAAA,IAAW,SAAUrY,IAAkB,GAAI/D,EAAOupE,GAC5FnqC,SAAS14B,SAASiU,KAAO8zD,CAAU,GAI1B,KAAAE,0BAA4B,KACzC,MAAM,qBAAE/C,EAAoB,YAAEtD,GAAgB/mE,KAAKzB,MAE9C8rE,GAOGtD,GAAeA,EAAYL,kBAC3B1mE,KAAKisE,yBAETjsE,KAAKwB,SAAS,CAAE6oE,sBAAsB,KATtCrqE,KAAKwB,SAAS,CACV6oE,sBAAsB,EACtBvhE,WAAY,GACZukE,gBAAgB,GAM2B,EAItC,KAAAC,2BAA6B,KAC1C,MAAM,YAAEvG,GAAgB/mE,KAAKzB,MACvBwoE,GAAeA,EAAYL,mBAC7B1mE,KAAKisE,yBACLjsE,KAAKwB,SAAS,CAAE6oE,sBAAsB,IAAS,EAItC,KAAA8C,mBAAqB,CAACI,EAAe9uE,EAAe8f,KACjE,IAAK3B,EAAAA,GAASC,UACV,MAAO,GAGX,MAAMqrD,EAAW,IAAIprD,IAAIywD,EAAOroE,OAAOC,SAASiU,MAKhD,OAJImF,GAAO9f,GACPypE,EAAS1oD,aAAaC,IAAIlB,EAAK9f,GAG5BypE,EAAS9uD,IAAI,EAGP,KAAAo0D,2BAA8B5rE,IAC3C,GAAsD,OAAlD5B,KAAKytE,iCAAiC5nE,QAAkB,CACxD,MAAM6nE,EAAiB1tE,KAAKytE,iCAAiC5nE,QACvD8nE,EAAsB3tE,KAAKjC,MAAM6B,UAAUguE,wBAC3CC,EAAoB7tE,KAAKjC,MAAM6B,UAAUkuE,wBAI/C,OAHAJ,EAAevjE,UACXvI,GAAUA,EAAO8kE,kBAAoB9kE,EAAO8kE,iBAAiB7kE,OAAS,EAAI8rE,EAAsBE,EACpGH,EAAehhE,aAAa,YAAa,aAClCghE,EAAevjE,SAAU,CAEpC,MAAO,EAAE,EA/gBTnK,KAAKP,gBAAkBzB,EAAAA,YACvBgC,KAAKuqE,qBAAuBvsE,EAAAA,YAC5BgC,KAAKytE,iCAAmCzvE,EAAAA,YACxCgC,KAAKusE,qBAAuBvuE,EAAAA,YAC5BgC,KAAKssE,cAAgBtuE,EAAAA,YACrBgC,KAAKzB,MAAQ,CACT8rE,sBAAsB,EACtBvhE,WAAY,GACZilE,0BAA2B,kCAC3BC,0BAA2B,kCAC3BC,2BAA4B,mCAC5BlH,iBAAa9jE,EACbglE,oBAAgBhlE,EAChBirE,qBAAsB,GACtBb,gBAAgB,EAChBc,sBAAsB,GAE1BnuE,KAAKopE,SACAppE,KAAKjC,MAAM6E,SACR5C,KAAKjC,MAAM6E,QAAQ+O,KACnB3R,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,QACvB7E,KAAKjC,MAAM6E,QAAQ+O,IAAI9M,OAAOupE,sBAClC,GAEJpuE,KAAK+sE,oBAAsB,GAC3B/sE,KAAK2kE,gBAAkB3kE,KAAKjC,MAAM8G,QAAU7E,KAAKjC,MAAM8G,OAAO8/D,gBAAkB3kE,KAAKjC,MAAM8G,OAAO8/D,gBAAkB,EACpH3kE,KAAKquE,gBAAkB,kBACvBruE,KAAKmqE,iBAAmB,mBACxBnqE,KAAK0F,kBAAmB6hB,EAAAA,EAAAA,oBACpBvnB,KAAKjC,MAAM6E,QAAQH,QAAQ+kB,kBAC3BxnB,KAAKjC,MAAM0pB,aACXznB,KAAKjC,MAAMqF,WAGfpD,KAAKsuE,sBACT,CAEO/rE,0BACHs7B,SAASC,MAAQD,SAASC,KAAKjW,iBAAiB,YAAa7nB,KAAK+rE,iBAClE7mE,QAAUA,OAAO2iB,iBAAiB,QAAS7nB,KAAKksE,OACpD,CAEOpkD,uBACH+V,SAASC,MAAQD,SAASC,KAAK/V,oBAAoB,YAAa/nB,KAAK+rE,iBAAiB,GACtF7mE,QAAUA,OAAO6iB,oBAAoB,QAAS/nB,KAAKksE,QAAQ,EAC/D,CAEOpnC,qBACH,MACIjgC,QAAQ,gBAAEqkE,IACVlpE,KAAKjC,OACH,qBAAEssE,EAAoB,eAAEgD,GAAmBrtE,KAAKzB,MAEjDyB,KAAKjC,MAAM6E,QAAQH,QAAQilB,OAAOC,YAC9BuhD,GAAmBmB,EACpBrqE,KAAKP,iBAAmBO,KAAKP,gBAAgBoG,SAAW7F,KAAKP,gBAAgBoG,QAAQC,QAC7EunE,GACRrtE,KAAKuqE,sBAAwBvqE,KAAKuqE,qBAAqB1kE,SAAW7F,KAAKuqE,qBAAqB1kE,QAAQC,QAGhH,CAEOO,sBAAsBC,EAAsCC,GAC/D,OAAIvG,KAAKzB,QAAUgI,GAAavG,KAAKjC,QAAUuI,CAInD,CAGOE,SAAM,IAAA+nE,EAAAC,EAAAC,EACT,MAAM,QACF7rE,EACAhD,WAAW,WAAE0qE,EAAU,sBAAEF,EAAqB,mBAAEsE,EAAkB,mBAAEC,EAAkB,mBAAEC,GACxF/pE,QAAQ,gBAAEqkE,EAAe,oBAAEG,EAAmB,sBAAEwF,EAAqB,2BAAEC,EAA0B,UAAE7wE,EAAY,KAC/G+B,KAAKjC,OAEH,qBACFssE,EAAoB,WACpBvhE,EAAU,0BACVilE,EAAyB,0BACzBC,EAAyB,2BACzBC,EAA0B,YAC1BlH,EAAW,eACXkB,EAAc,qBACdkG,GACAnuE,KAAKzB,MAEHypE,EAAaplE,GAAWA,EAAQ+O,KAAO/O,EAAQ+O,IAAI9M,QAAUjC,EAAQ+O,IAAI9M,OAAO6nE,4BAA+B,IAC/G3E,GAAgBltD,EAAAA,EAAAA,IAAW,SAAUjY,GAAWA,EAAQJ,gBAAkB,GAC1E0qE,EAAYltE,KAAKmtE,mBAAmBpF,EAAej/D,EAAYk/D,GAC/DiB,EAAoB4F,GAAyBA,EAAsBhtE,OAAS,EAAIgtE,EAAwB,qBAExGE,EAAqBhI,SAA6B,QAAlBwH,EAAXxH,EAAaL,wBAAgB,IAAA6H,OAAA,EAA7BA,EAA+B9gE,QACtDm6D,GAAcA,EAAWxD,iBAAmBA,EAAe4K,SAAWpH,EAAWxD,iBAAmBA,EAAe6K,OAEjHC,EAAqBnI,SAA6B,QAAlByH,EAAXzH,EAAaL,wBAAgB,IAAA8H,OAAA,EAA7BA,EAA+B/gE,QACtDm6D,GAAcA,EAAWxD,iBAAmBA,EAAe+K,UAEzDhH,EAAmBF,aAAc,EAAdA,EAAgB15D,MAAKg6D,GACnCA,EAAQF,cAAgBrC,EAAAA,qBAAqBsC,WAElD8G,EAAsBrI,SAA6B,QAAlB0H,EAAX1H,EAAaL,wBAAgB,IAAA+H,OAAA,EAA7BA,EAA+BhhE,QAAOm6D,IAAa,IAAAE,EAC3E,GAAIF,EAAWxD,iBAAmBA,EAAekE,SAC7C,OAAO,EAEX,MAAMC,EAAUJ,SAAwB,QAARL,EAAhBK,EAAkBK,cAAM,IAAAV,OAAA,EAAxBA,EAA0Bv5D,MAAKjE,IAAO,IAAA+kE,EAClD,MAAO,GAAuB,QAAvBA,EAAG/kE,EAAKi7D,uBAAe,IAAA8J,EAAAA,EAAI,MAAQzH,EAAW1sD,EAAE,IAG3D,OAAQgN,EAAAA,iBAAiBC,kBAAkBogD,EAAQ,IAGjDlhE,EAAST,GAAAA,GAAA,GACP5G,KAAKjC,OAAmC,IAE5Cc,OAAQ,CACJwpB,YAAaroB,KAAKjC,MAClBE,UAAW,GAAGkU,IAAW,YAAalU,MAAcorE,EAAsB,YAAc,iBAE5FiG,qBAAsB,CAClBnmD,IAAK,MACLlrB,UAAW,iCACX,YAAa,YACbiD,IAAKlB,KAAKytE,kCAEd8B,yBAA0BvvE,KAAKzB,MAAM2vE,qBACrCplE,WAAY9I,KAAKzB,MAAMuK,WACvB0mE,YAAa,CACTtuE,IAAKlB,KAAKusE,qBACVtuE,UAAW,0BAEfwxE,eAAgB,CACZxxE,UAAW8vE,GAEf2B,eAAgB,CACZzxE,UAAW+vE,GAEf2B,gBAAiB,CACb1xE,UAAWgwE,GAEf2B,WAAY,CACR3xE,UAAW,GAAG+B,KAAKquE,mBAAmBhE,EAAuB,UAAY,aAE7EwF,YAAa,CACT1mD,IAAK,OACLjoB,IAAKlB,KAAKssE,cACVruE,UAAW,wBACX,aAAc,SACdgC,KAAM,aACNC,KAAM,SACNiuB,OAAQ++C,EACR/sE,aAAc,MACdC,SAAUJ,KAAKitE,eAEnB6C,UAAW,CACP3mD,IAAK,KACLlrB,UAAWkU,IAAW,wCAAyClU,IAEnE8xE,UAAW,CACP5mD,IAAK,KACLlrB,UAAWkU,IAAW,wCAAyClU,IAEnE+xE,WAAY,CACR7mD,IAAK,KACLlrB,UAAWkU,IAAW,yCAA0ClU,IAEpEmtD,MAAO8e,EAAe,CAClBG,uBACAF,iBAAkB,GAAGnqE,KAAKmqE,oBAAoBE,EAAuB,UAAY,YACjFC,aACAF,wBACAG,qBAAsBvqE,KAAKuqE,qBAC3BrB,kBACAI,yBAA0BtpE,KAAKotE,0BAC/B1nE,iBAAkB1F,KAAK0F,mBAE3BmqD,KAAMmZ,EAAc,CAChBO,gBAAiBmF,EACjBlF,gBAAiBmF,EACjBlF,gBAAiBmF,EACjB1F,kBACAzpE,gBAAiBO,KAAKP,gBACtB4pE,sBACAF,kBAAmBnpE,KAAK4sE,mBACxBtD,yBAA0BtpE,KAAKotE,0BAC/BhE,SAAUppE,KAAKopE,SACfpB,YACAiB,oBACAxqE,MAAOqK,IAEXmnE,mBACInnE,GACAA,EAAWjH,OAAS,IACnBssE,GAAyBY,GAAsBzuE,EAAAA,gBAAgBC,YAAYwuE,IACtE/E,EAA4B,CACxB+D,4BACAhG,gBACAC,YACAxD,UAAWxkE,KAAKwkE,UAChBC,UAAWzkE,KAAKykE,UAChBuC,iBAAkBhnE,KAAKjC,MACvB+K,aACAi+D,YAAagI,EACbrpE,iBAAkB1F,KAAK0F,wBAE3BzC,EACVitE,mBACIpnE,GACAA,EAAWjH,OAAS,IACnBssE,GAAyBe,GAAsB5uE,EAAAA,gBAAgBC,YAAY2uE,IACtE1E,EAA4B,CACxBwD,4BACAjG,gBACAC,YACAxD,UAAWxkE,KAAKwkE,UAChBC,UAAWzkE,KAAKykE,UAChBuC,iBAAkBhnE,KAAKjC,MACvB+K,aACAi+D,YAAamI,EACb9rE,UAAWpD,KAAKjC,MAAMqF,UACtBsnE,WAAY1qE,KAAKjC,MAAM0a,SACvBH,SAAUtY,KAAKjC,MAAM0C,GACrBiF,iBAAkB1F,KAAK0F,iBACvB9F,UAAWI,KAAKjC,MAAM6B,iBAE1BqD,EACVktE,oBACIrnE,GACAA,EAAWjH,OAAS,IACnBssE,GAAyBiB,GAAuB9uE,EAAAA,gBAAgBC,YAAY6uE,IACvEtI,EAA6B,CACzBmH,6BACAlG,gBACAC,YACAxD,UAAWxkE,KAAKwkE,UAChBC,UAAWzkE,KAAKykE,UAChBuC,iBAAkBhnE,KAAKjC,MACvB+K,aACAi+D,YAAaqI,EACbnH,iBACAviE,iBAAkB1F,KAAK0F,iBACvB4hE,mBAAoBwH,SAExB7rE,EACV0mB,UAAW,CACP2/C,yBAA0BtpE,KAAKotE,0BAC/BgD,0BAA2BpwE,KAAKstE,4BAEpCjD,qBAAsBrqE,KAAKzB,MAAM8rE,qBACjC8D,uBACAkC,cAAerwE,KAAKwrE,mBAGxB,OAAOxrE,KAAKjC,MAAMyqB,WAAWnhB,EACjC,CAEQinE,uBACJ,MAAMgC,EAAkBtwE,KAAKjC,MAAM8G,OAAO0rE,wBAEpCxJ,EAAczmE,EAAAA,gBAAgBm/C,OAAOn/C,EAAAA,gBAAgBg/C,YAAYgxB,IACvE,IAAKhwE,EAAAA,gBAAgBC,YAAYwmE,GAM7B,YALA/mE,KAAK+sE,oBAAsB,CACvB,CAAE3I,eAAe,WACjB,CAAEA,eAAe,WACjB,CAAEA,eAAe,oBAKzB,MAAMoM,EAAmBzJ,EAAYt5D,QAAOm6D,GAAcA,EAAWxD,iBACjE9jE,EAAAA,gBAAgBC,YAAYiwE,GAC5BxwE,KAAK+sE,oBAAsByD,EAI/BxwE,KAAK+sE,oBAAsB,EAC/B,CAgEQxqE,4BAA4BkuE,EAAkChyE,GAClE,IACI,MAAM+nE,QAA0BkK,EAC5B,IAAIpM,EAAiB7lE,EAAOuB,KAAK2kE,gBAAiB3kE,KAAK2wE,qBAAsB3wE,KAAKwkE,UAAWxkE,KAAKykE,WAClGzkE,KAAKjC,MAAM6E,QAAQJ,eAEvB,GAAIiuE,IAA6BzwE,KAAKywE,yBAClC,OAEJ,OAAOjK,CAQU,CAPnB,MAAOvkE,GACL,GAAIwuE,IAA6BzwE,KAAKywE,yBAClC,OAKJ,OAHAzwE,KAAKwB,SAAS,CAAEulE,iBAAa9jE,EAAWglE,oBAAgBhlE,EAAWirE,qBAAsBluE,KAAKwtE,+BAC9FxtE,KAAKjC,MAAMqF,UAAUsqD,UAAUzrD,QAC/BjC,KAAKjC,MAAMqF,UAAU+e,MAAM,qCACV,CAEzB,CAEQ5f,4BAA4BkuE,EAAkChyE,EAAesoE,GACjF,IACI,MAAMqB,QAAiBpoE,KAAK4wE,mBAAmBnyE,GAC/C,GAAIgyE,IAA6BzwE,KAAKywE,yBAClC,OAEJzwE,KAAKwB,SAAS,CACVulE,cACAkB,eAAgBG,EAChB8F,qBAAsBluE,KAAKwtE,2BAA2BzG,GACtDoH,sBAAsB,GAQmC,CAN/D,MAAOlsE,GACL,GAAIwuE,IAA6BzwE,KAAKywE,yBAClC,OAEJzwE,KAAKwB,SAAS,CAAEulE,cAAakB,oBAAgBhlE,EAAWirE,qBAAsBluE,KAAKwtE,2BAA2BzG,KAC9G/mE,KAAKjC,MAAMqF,UAAUsqD,UAAUzrD,GAC/BjC,KAAKjC,MAAMqF,UAAU+e,MAAM,iCAAkC,CAErE,CAEQ6qD,iBAAiBvuE,GACrBuB,KAAK6sE,oBAAsBpgE,KAASlK,UAChCvC,KAAKwB,SAAS,CAAE2sE,sBAAsB,IACtC,MAAMsC,EAA2Bx+B,EAAAA,OAAOC,KAAKC,eAC7CnyC,KAAKywE,yBAA2BA,EAChC,MAAMjK,QAA0BxmE,KAAK6wE,sBAAsBJ,EAA0BhyE,SAC/EuB,KAAK8wE,sBAAsBL,EAA0BhyE,EAAO+nE,EAAkB,GACrFxmE,KAAKurE,UAER/wD,YAAW,KACPxa,KAAK6sE,qBAAqB,GAC3B,EACP,CAmCQ8D,qBAIJ,OAH0C3wE,KAAK+sE,oBAAoBvkE,KAC/DuoE,GAAsBA,EAAmB3M,eAAgB4M,OAAO,GAAG38C,cAAgB08C,EAAmB3M,eAAgBp0B,MAAM,KAEjGt9B,KAAK,IACxC,CAEQnQ,yBAAyBuG,GAC7B,MAAQtG,cAAewqD,GAAQhtD,KAAKjC,MAAM6E,QACpC8B,GAAY4D,EAAAA,EAAAA,IAAa0kD,EAAIp8C,gBAEnC,OADArI,EAAAA,EAAAA,mBAAkB7D,GACXusE,EAAAA,oBAAAA,8BACH,CAAE3nE,cAAe0jD,GACjB,CACI5jD,gBAAiBN,EACjBE,QAAS,CACLC,WAAY+jD,EAAIp8C,eAAelO,YAAYC,UAC3CuG,UAAWxE,IAI3B,EA+EJ,uFCxnBA,MAsCMisB,EAAcA,CAACk/B,EAA4B+f,EAAwBC,IAEjE7xE,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAK2oE,GACN5xE,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAK4oE,GACLhgB,EAAKlrD,MACLkrD,EAAKia,UACLja,EAAKka,YAMhBmH,EAA4BA,CAC9BzB,EACAK,EACAf,EACAZ,EACAkC,IAGItB,GACI/wE,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKwoE,GACNzxE,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAK6oE,GACL3B,GAAwBkC,GACvBlC,GACEY,EAAmB/oD,KAAKxd,KAAIwd,GACjBA,MAQ7BmrD,EAA4BA,CAC9BzB,EACAK,EACAb,EACAf,EACAkC,IAGInB,GACIlxE,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKyoE,GACN1xE,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAK8oE,GACLb,EAAmBpjE,MACnBqiE,GAAwBkC,GACvBlC,GACEe,EAAmB1wD,MAAMhW,KAAI,CAAC8B,EAAMgJ,IAE5BtV,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKqD,EAAK2gE,UAAS,CAAEtiE,IAAK2B,EAAK7J,IAAM6S,IACtCtV,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKqD,EAAK6gE,UACV7gE,EAAKygE,UACLzgE,EAAK0b,KACL1b,EAAK0I,YAWxCo+D,EAA6BA,CAC/BzB,EACAK,EACAZ,EACAjB,EACAkC,IAGIjB,GACIpxE,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAK0oE,GACN3xE,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAK+oE,GACLZ,EAAoBtjE,MACpBqiE,GAAwBkC,GACvBlC,GACEiB,EAAoBppD,KAAKxd,KAAIwd,GAClBA,MAQnC,EA9H+CjoB,IAC3C,MAAM,OACFc,EAAM,qBACNywE,EAAoB,yBACpBC,EAAwB,WACxBzmE,EAAU,YACV0mE,EAAW,eACXC,EAAc,eACdC,EAAc,gBACdC,EAAe,UACfG,EAAS,UACTC,EAAS,WACTC,EAAU,KACVngB,EAAI,oBACJsgB,EAAmB,mBACnBF,EAAkB,mBAClBC,EAAkB,WAClBN,EAAU,YACVC,EAAW,MACXzkB,EAAK,qBACL+iB,EAAoB,cACpBkC,GACAtyE,EAEJ,OACIC,EAAAA,cAAC6wB,EAAAA,OAAM7nB,OAAAC,OAAA,GAAKpI,GACPusD,EACAz6B,EAAYk/B,EAA8B+f,EAAYC,GACvD7xE,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKuoE,GACL1mE,GAAcA,EAAWjH,OAAS,EAAI7D,EAAAA,cAAC0wB,EAAAA,KAAI1nB,OAAAC,OAAA,GAAKqoE,GAAuBC,GAAmC,GAC1G2B,EAA0BzB,EAAgBK,EAAWG,EAAoB9B,EAAsBkC,GAC/Fc,EAA0BzB,EAAgBK,EAAWG,EAAoB/B,EAAsBkC,GAC/Fe,EAA2BzB,EAAiBK,EAAYG,EAAqBhC,EAAsBkC,IAEnG,kZCkPjB,MAAMgB,EAAmDtzE,IACrD,MAAM2G,EAAY3G,EAAMqX,KAAKuO,SAASza,UAGtC,IAFAX,EAAAA,EAAAA,mBAAkB7D,KAEb2yC,EAAAA,EAAAA,IAAiBt5C,EAAM6E,QAAQJ,cAAcoO,kBAAoBlM,IAAcpE,EAAAA,gBAAgBC,YAAYxC,EAAMqX,KAAK/M,UACvH,OAAO,KAGX,MAAM+P,EAAUra,EAAMqX,KAAK/M,SAASkG,MAAKjE,GAAQA,EAAKtH,WAAa0B,IAEnE,OAAK0T,GAAYA,EAAQvP,KAIlB7K,EAAAA,cAAA,OAAKC,UAAU,gCAAgCma,EAAQvP,MAHnD,IAG8D,EAGvEyoE,EAAwB,CAO1BC,wBAAyBA,CAACxuE,EAAwByuE,IACzCzuE,EAAQkW,WAINlW,EAAQkW,WAAWzQ,KAAIipE,IAC+C,IAADC,EAYQC,EAYTC,EAYCC,EApCxE,OAAIJ,EAAiBjkE,qBAAuBu2C,EAAAA,qBAAqBC,MAEzDhmD,EAAAA,cAAA,OAAK2K,IAAK,GAAG5F,EAAQC,6BAA8B/E,UAAU,uCACzDD,EAAAA,cAAA,QAAMC,UAAU,wCACXuzE,EAAiBM,YACjB,KACD9zE,EAAAA,cAAA,QAAMC,UAAU,QAAuC,QAAjCyzE,EAAED,EAAiB3iE,sBAAc,IAAA4iE,OAAA,EAA/BA,EAAiCn/D,SAMrEk/D,EAAiBjkE,qBAAuBu2C,EAAAA,qBAAqBguB,cAEzD/zE,EAAAA,cAAA,OAAK2K,IAAK,GAAG5F,EAAQC,6BAA8B/E,UAAU,uCACzDD,EAAAA,cAAA,QAAMC,UAAU,wCACXuzE,EAAiBQ,aACjB,KACDh0E,EAAAA,cAAA,QAAMC,UAAU,QAAuC,QAAjC0zE,EAAEF,EAAiB3iE,sBAAc,IAAA6iE,OAAA,EAA/BA,EAAiCp/D,SAMrEk/D,EAAiBjkE,qBAAuBu2C,EAAAA,qBAAqBG,KAEzDlmD,EAAAA,cAAA,OAAK2K,IAAK,GAAG5F,EAAQC,6BAA8B/E,UAAU,uCACzDD,EAAAA,cAAA,QAAMC,UAAU,uCACXuzE,EAAiBS,WACjB,KACDj0E,EAAAA,cAAA,QAAMC,UAAU,QAAuC,QAAjC2zE,EAAEH,EAAiB3iE,sBAAc,IAAA8iE,OAAA,EAA/BA,EAAiCr/D,SAMrEk/D,EAAiBjkE,qBAAuBu2C,EAAAA,qBAAqBK,MAEzDpmD,EAAAA,cAAA,OAAK2K,IAAK,GAAG5F,EAAQC,6BAA8B/E,UAAU,uCACzDD,EAAAA,cAAA,QAAMC,UAAU,wCACX8E,EAAQmvE,WAAaV,EAAiBW,aAAeX,EAAiBY,YACtE,KACDp0E,EAAAA,cAAA,QAAMC,UAAU,QAAuC,QAAjC4zE,EAAEJ,EAAiB3iE,sBAAc,IAAA+iE,OAAA,EAA/BA,EAAiCt/D,SAKlE,IAAI,IAnDJ,GA4Df8/D,uBAAyBt0E,IACrB,IAAKA,EAAMqX,KAAKuO,SAASzV,MACrB,OAAO,KAGX,OACIlQ,EAAAA,cAAA,OAAKC,UAAU,qCACXD,EAAAA,cAAA,YACIA,EAAAA,cAACwa,EAAAA,eAAc,CACXpD,MACIrX,EAAMqX,KAAKuO,SAAS/H,UAAY7d,EAAMqX,KAAKuO,SAAS/H,SAC9C,CACI5I,MAAO,CACHsjB,wBAAyBv4B,EAAMqX,KAAKuO,SAASzV,SAS/DtL,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVgY,SAAU1a,EAAM0a,SAChBtF,aAAcpV,EAAMu0E,iBAG1B,EASdC,oBAAsBx0E,IAClB,IAAKA,EAAMqX,KAAKuO,SAASoS,gBAAkBz1B,EAAAA,gBAAgBC,YAAYxC,EAAMqX,KAAKuO,SAASoS,eACvF,OAAO,KAgCX,OAAOh4B,EAAMqX,KAAKuO,SAASoS,cAAcvtB,KAAI,CAACwtB,EAAc1iB,KAAS,IAAAk/D,EACjE,OACIx0E,EAAAA,cAAA,OAAK2K,IAAyB,QAAtB6pE,EAAEx8C,EAAay8C,eAAO,IAAAD,EAAAA,EAAIl/D,EAAOrV,UAAU,mCAC/CD,EAAAA,cAAA,YAAOg4B,EAAa08C,UAAY18C,EAAa08C,UAAY,IACzD10E,EAAAA,cAAA,QAAMC,UAAU,6CACZD,EAAAA,cAACwa,EAAAA,eAAc,CACXpD,KACIrX,EAAM40E,YACA,CACI3/D,MAAO,CAEHsjB,wBAAyBv4B,EAAMqX,KAAKuO,SAASivD,mBAGrD,CACI5/D,MAAO,CACHsjB,wBAAyBN,EAAa68C,gBACtChjE,UAAWmmB,EAAa68C,kBAI1CjwE,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVgY,SAAU1a,EAAM0a,SAChBtF,aAAcpV,EAAMu0E,iBAG5Bt0E,EAAAA,cAAA,QAAMC,UAAU,8CACX,UAAiCgF,IAA5B+yB,EAAa88C,WAnDXC,EAAC/8C,EAA4BrS,KAA8B,IAAAqvD,EAI/E,IAAIC,EAAgD,QAAlCD,EAAWh9C,EAAa88C,kBAAU,IAAAE,EAAAA,EAHjC,EAKnB,IALmB,IAMdh9C,EAAa88C,YACT98C,EAAak9C,uBAAyBl9C,EAAak9C,wBAA0BC,EAAAA,iBAAiBC,qBACnGzvD,EAASzV,OACTyV,EAASzV,MATM,GAUfyV,EAAS/H,UAVM,IAWf+H,EAAS/H,SACX,CAAC,IAADy3D,EACE,MAAMC,EAA8C,QAA/BD,EAAGr9C,EAAa68C,uBAAe,IAAAQ,EAAAA,EAbrC,EAcfJ,EAAiB5tE,QACXiuE,GAAmB3vD,EAASzV,MAAQyV,EAAS/H,UAbhC,KAa6DxI,QAd3D,GAenB,CAGN,OAAO6/D,CAAc,EA+BqCF,CAAgB/8C,EAAcj4B,EAAMqX,KAAKuO,UAAY,QAErG,GAEZ,EAQN4vD,qBAAuBx1E,IACnB,MAAMy1E,EAAmBz1E,EAAM01E,wBACzB,0CAA0C11E,EAAM01E,0BAChD,yCAEN,OAAOz1E,EAAAA,cAAA,KAAGC,UAAWu1E,GAAmBz1E,EAAM21E,0BAA8B,EAQhFC,oBAAsB51E,IAAyB,IAAAyV,EAAAogE,EAC3C,MAAMC,EAAsD,QAAhCrgE,EAAGzV,EAAM6E,QAAQH,QAAQqxE,eAAO,IAAAtgE,OAAA,EAA7BA,EAA+BugE,uBACxDC,EAA8Bj2E,EAAMi2E,4BACpCC,EAAWl2E,EAAMqX,KAAKuO,SAC5B,IAAIuwD,GAAoB,EACwB,IAADC,OAAXlxE,IAAhC+wE,EACAE,KACID,EAASG,cAC0C,QAD9BD,EACrBH,EAA4BK,+BAAuB,IAAAF,IAAnDA,EAAqD7/D,MAAKggE,GAAgBA,IAAiBL,EAASG,gBAGxGF,KAAuBD,EAASG,cAAgBH,EAASG,eAAiBP,GAE9E,IAAKK,EACD,OAGJ,MAAMK,GAA2C,QAArBX,EAACK,EAASO,mBAAW,IAAAZ,EAAAA,EAAI,IAAInmE,QAAOgnE,GAAcA,EAAWC,aAEzF,IAAKp0E,EAAAA,gBAAgBC,YAAYg0E,GAC7B,OAGJ,MACMI,EAAaJ,EAAoBK,QAAO,CAACC,EAAaJ,KAAc,IAAAK,EACtE,OAAOD,GAA0C,QAA/BC,EAAIL,EAAWM,wBAAgB,IAAAD,EAAAA,EAFvB,EAEyC,GAFzC,GAKxBE,EACFh3E,EAAAA,cAACwa,EAAAA,eAAc,CACXpD,KAAM,CACFpC,MAAO,CACHsjB,wBAAyBq+C,IAGjCj8D,cAAc,OACd9V,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVgY,SAAU1a,EAAM0a,SAChBxa,UAAU,gCACVkV,aAAcpV,EAAMu0E,gBAG5B,OACIt0E,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,SAAOC,UAAU,gCAAgC,GAAGF,EAAM6B,UAAUq1E,wBACpEj3E,EAAAA,cAAA,QAAMC,UAAU,kBAAkB+2E,GACnC,EASXE,mBAAqBn3E,IAAyB,IAAAo3E,EAAAC,EAC1C,MACMC,EAAmC,QAAvBF,EADDp3E,EAAMqX,KAAKuO,SACE6wD,mBAAW,IAAAW,OAAA,EAApBA,EAAsB1nE,QAAO6nE,IAAeA,EAAWZ,aAE5E,OAwBM,QAxBNU,EACIC,aAAY,EAAZA,EAAc7sE,KAAI,CAAC+sE,EAAajiE,KAC5B,MAAMkiE,EAAYliE,EAClB,OAAOiiE,EAAYR,iBACf/2E,EAAAA,cAAA,OAAKC,UAAU,+BAA+B0K,IAAK6sE,GAC/Cx3E,EAAAA,cAAA,SAAOC,UAAU,sCAAsC,GAAGw4B,OAAO8+C,EAAY97C,iBAC7Ez7B,EAAAA,cAAA,QAAMC,UAAU,sBACZD,EAAAA,cAACwa,EAAAA,eAAc,CACXpD,KAAM,CACFpC,MAAO,CACHsjB,wBAAyBi/C,EAAYR,mBAG7CnyE,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVgY,SAAU1a,EAAM0a,SAChBxa,UAAU,sCACVkV,aAAcpV,EAAMu0E,kBAKhC,EACH,WACH,IAAA8C,EAAAA,OAAInyE,CAAS,EASvBwyE,2BAA6B13E,GAE8B,IAAnDA,EAAMqX,KAAKuO,SAAS+xD,2BACb,KAEJ13E,EAAAA,cAAA,OAAKC,UAAU,yCAAyCF,EAAM6B,UAAU+1E,2BAGnFC,wBAA0B73E,IACjBA,EAAM40E,kBAA2C1vE,IAA5BlF,EAAM83E,mBAAmCx2D,EAAAA,iBAAiB2rC,cAAcjtD,EAAM83E,mBAC7F,KAGP73E,EAAAA,cAAA,OAAKC,UAAU,sCACXD,EAAAA,cAAA,QAAMC,UAAU,4CAA4CF,EAAM6B,UAAUk2E,wBAC5E93E,EAAAA,cAAA,QAAMC,UAAU,4CAA4CF,EAAM83E,oBAK9EE,0BAA4Bh4E,IACnBA,EAAM40E,kBAA6C1vE,IAA9BlF,EAAMi4E,qBAAqC32D,EAAAA,iBAAiB2rC,cAAcjtD,EAAMi4E,qBAC/F,KAGPh4E,EAAAA,cAAA,OAAKC,UAAU,wCACXD,EAAAA,cAAA,QAAMC,UAAU,8CAA8CF,EAAM6B,UAAUq2E,0BAC9Ej4E,EAAAA,cAAA,QAAMC,UAAU,8CAA8CF,EAAMi4E,uBA8UvEE,EAAiE9+C,EAAAA,GAAiBC,wBAC3F,oXAAczwB,CAAA,CAEV0wB,UArUoCv5B,IAAyB,IAAAo4E,EAAA5lE,EAAA6lE,EACjE,MAAM,YAAEzD,EAAW,WAAE35D,EAAU,UAAEpZ,GAAc7B,GACzC,QAAEgF,EAAO,SAAE4gB,GAAa5lB,EAAMqX,KAE9BihE,EAA2B,CAC7BpE,WAAYryE,EAAUqyE,WACtBH,YAAalyE,EAAUkyE,YACvBM,YAAaxyE,EAAUwyE,YACvBJ,aAAcpyE,EAAUoyE,aACxBG,aAAcvyE,EAAUuyE,cAGtBmE,EACFvzE,IACA0O,EAAAA,EAAAA,qBACI1O,EAAQ2O,OACR3T,EAAM6E,QAAQJ,cAAcoO,eAAelO,YAClB,QAD6ByzE,EACtDp4E,EAAM6E,QAAQH,QAAQkP,WAAG,IAAAwkE,GAAQ,QAARA,EAAzBA,EAA2BtxE,cAAM,IAAAsxE,OAAA,EAAjCA,EAAmCvkE,kBAErC2kE,EAAoBxzE,GAAWuuE,EAAsBC,wBAAwBxuE,EAASszE,GACtFhE,EAAyBf,EAAsBe,uBAAuBt0E,GACtEuJ,EAAgBvJ,EAAMuJ,cACxBA,IACAA,EAAc4xB,iBAAkB,GAEpC,MAAMq5C,EAAsBjB,EAAsBiB,oBAAoBx0E,GAChEw1E,EAAuBjC,EAAsBiC,qBAAqBx1E,GAClE41E,EAAsBrC,EAAsBqC,oBAAoB51E,GAChEm3E,EAAqB5D,EAAsB4D,mBAAmBn3E,GAC9D63E,EAA0BtE,EAAsBsE,wBAAwB73E,GACxEg4E,EAA4BzE,EAAsByE,0BAA0Bh4E,GAC5E03E,EAA6BnE,EAAsBmE,2BAA2B13E,GAC9EyH,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS1H,EAAM2H,iBAAmB,GAAI3C,aAAO,EAAPA,EAASC,SAASqB,YACnFmyE,GAAmB1wD,EAAAA,EAAAA,wBAAuB/nB,EAAM2H,iBAAmBF,GACnE2T,EAA2B,QAAhB5I,EAAGxN,aAAO,EAAPA,EAAS8F,YAAI,IAAA0H,EAAAA,EAAIoT,EAAS8V,YACxCg9C,EAAgB14E,EAAMqX,KAAKuO,SAASC,cAAgB,+BAAiC,+BACrF8yD,EAA2B34E,EAAMqX,KAAKuO,SAASC,cAAgB,iCAAmC,yBAOlGljB,EAAYsN,IACVjQ,EAAM44E,kBACC54E,EAAM44E,iBAAiB54E,EAAMqX,KAAKuO,SAAU3V,GASrD4oE,EAAuBA,IACrB74E,EAAM+P,aAEF9P,EAAAA,cAAA,OAAKC,UAAU,qBACXD,EAAAA,cAAA,QAAMC,UAAU,6BAChBD,EAAAA,cAAA,YAAOD,EAAM+P,eAKlB,KAiDL+oE,EAAsBA,IACpB94E,EAAMqX,KAAKuO,SAASC,cACb,KAIN7lB,EAAM6E,QAAQ+O,IAAI9M,OAAOiyE,0BAAkF,SAAtD/4E,EAAM6E,QAAQ+O,IAAI9M,OAAOiyE,0BAI9E/zE,GAAYA,EAAQgC,qBAKrB/G,EAAAA,cAAA,OAAKC,UAAU,0CACXD,EAAAA,cAAA,YAAO+E,EAAQgC,4BAVvB,EA0HJ,OACI/G,EAAAA,cAAA,OAAKC,UAAU,iBACV2e,EAAAA,GAASC,UACN7e,EAAAA,cAAA,KAAGC,UAAWw4E,EAAer9D,KAAMJ,EAAU,aAAcG,EAAajZ,KAAK,QACzElC,EAAAA,cAACoT,EAAAA,GAAK,CACFR,eAAgB7S,EAAM6E,QAAQJ,cAAcoO,eAAc,cAC9C,OACZU,IAA0B,QAAvB8kE,EAAEr4E,EAAM2nC,uBAAe,IAAA0wC,EAAAA,EAAI,QAC9B5kE,YAAa8kE,EACbjlE,QAAS8H,EACTtI,aAAc9S,EAAM8S,aACpBvJ,cAAeA,EACfuK,oBAAoB,WAG5B,KACJ7T,EAAAA,cAAA,OAAKC,UAAWy4E,GACZ14E,EAAAA,cAAA,OAAKC,UAAU,0BACXD,EAAAA,cAACqzE,EAAqBrqE,OAAAC,OAAA,GAAKlJ,IAC1B6e,EAAAA,GAASC,UACN7e,EAAAA,cAAA,IAAAgJ,OAAAC,OAAA,CAAGhJ,UAAU,+BAA+Bmb,KAAMJ,GAAgBw9D,GAC7Dr9D,GAEL,KACH7Y,EAAAA,gBAAgBC,YAAYg2E,GACzBv4E,EAAAA,cAAA,OAAKC,UAAU,mCAAmCs4E,GAElD,GAEJv4E,EAAAA,cAAA,OAAKC,UAAU,gCACXD,EAAAA,cAACwa,EAAAA,eAAc,CACXpD,KACIu9D,EACM,CACI3/D,MAAO,CACHsjB,wBAA0Bv4B,EAAMqX,KAAKuO,SAAuBozD,6BAC5DlnE,UAAY9R,EAAMqX,KAAKuO,SAAuBqzD,cAGtD,CACIhkE,MAAO,CACHsjB,wBAA0Bv4B,EAAMqX,KAAKuO,SAAsBszD,cAC3DpnE,UAAW9R,EAAMqX,KAAKuO,SAASuzD,WAIjDt0E,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVgY,SAAU1a,EAAM0a,SAChBxa,UAAU,wCACVkV,aAAcpV,EAAMu0E,gBAEvBsD,EACAG,EACAc,KAEJxE,EACAkB,EACAhB,EACAx0E,EAAMo5E,iCAAmCn5E,EAAAA,cAAA,OAAKC,UAAU,0BAA0B01E,GAClFuB,EACAO,GApKgB2B,MAC7B,MAAMC,EAAQ,GAGRC,EAAgBT,IAImC,IAADU,EAAAC,EADnDz5E,EAAMqX,KAAKuO,SAASC,gBACjB7lB,EAAMqX,KAAKrS,SAAWhF,EAAM05E,mBAC5BJ,EAAMzjD,KACF51B,EAAAA,cAAA,OAAKC,UAAU,mCACXD,EAAAA,cAAA,OAAKC,UAAU,yCAAyC2B,EAAU83E,uBAEjEd,IAED54E,EAAAA,cAAC25E,EAAAA,oBAAmB,CAChBl3E,GAAI,2BAA2B1C,EAAMqX,KAAKrS,QAAQC,0CAChDyzB,OAAO14B,EAAMqX,KAAKuO,SAASywD,iBAAiB39C,OAAO14B,EAAMqX,KAAKuO,SAASjO,UACzElK,IAAsB,QAAnB+rE,EAAEx5E,EAAM65E,mBAAW,IAAAL,EAAAA,EAhBP,GAiBfzsE,aAAc/M,EAAM85E,gBACpBn3E,SAAUA,EACVyL,uBAAwBvM,EAAUuM,uBAClCJ,yBAA0BnM,EAAUmM,yBACpCK,yBAA0BxM,EAAUwM,yBACpCzD,IAAK5K,EAAMqX,KAAKuO,SAASjO,OACzBpK,UAAWvN,EAAM+5E,iBACjBC,WAAyC,QAA/BP,EAAEz5E,EAAMqX,KAAKrS,QAAQmvE,kBAAU,IAAAsF,EAAAA,EAAIz5E,EAAMi6E,aACnDtyE,iBAAkB3H,EAAM2H,mBAE3B4xE,IAITD,EAAMzjD,KACF51B,EAAAA,cAAA,OACIC,UAAWswD,IAAW,0BAA2B,CAC7C,kBAjCW,IAiCQxwD,EAAMqX,KAAKuO,SAAS/H,YAG1C07D,EACDt5E,EAAAA,cAAA,SAAOC,UAAU,iBAAiBuC,QAAQ,YACrCZ,EAAU83E,sBACV,MAGJd,IAED54E,EAAAA,cAAA,QAAMC,UAAU,kBAAkBF,EAAMqX,KAAKuO,SAAS/H,aAqCtE,OA/BAy7D,EAAMzjD,KACF51B,EAAAA,cAAA,OAAKC,UAAU,kCACXD,EAAAA,cAACwa,EAAAA,eAAc,CACXpD,KACIu9D,EACM,CACI3/D,MAAO,CACHsjB,wBAA0Bv4B,EAAMqX,KAAKuO,SAAuBozD,6BAC5DlnE,UAAY9R,EAAMqX,KAAKuO,SAAuBqzD,cAGtD,CACIhkE,MAAO,CACHsjB,wBAA0Bv4B,EAAMqX,KAAKuO,SAAsBszD,cAC3DpnE,UAAW9R,EAAMqX,KAAKuO,SAASuzD,WAIjDt0E,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVgY,SAAU1a,EAAM0a,SAChBxa,UAAU,wCACV0a,kBAAmB/Y,EAAU+Y,kBAC7BC,iBAAkBhZ,EAAUgZ,iBAC5BzF,aAAcpV,EAAMu0E,gBA/I3Bv0E,EAAMqX,KAAKuO,SAASs0D,gBAKrBl6E,EAAMqX,KAAKuO,SAASs0D,eAFW,EAI3Bj6E,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,QAAMC,UAAU,wCAAwC,GAAGF,EAAM6B,UAAUs4E,oBAAsB,cACjGl6E,EAAAA,cAACwa,EAAAA,eAAc,CACXpD,KACIrX,EAAM40E,YACA,CACI3/D,MAAO,CAEHsjB,wBAAyBv4B,EAAMqX,KAAKuO,SAASivD,mBAGrD,CACI5/D,MAAO,CACHsjB,wBAAyBv4B,EAAMqX,KAAKuO,SAASs0D,eAC7CpoE,UAAW9R,EAAMqX,KAAKuO,SAASs0D,iBAIjDr1E,QAAS7E,EAAM6E,QACfnC,GAAI1C,EAAM0C,GACVgY,SAAU1a,EAAM0a,SAChBxa,UAAU,sCACVkV,aAAcpV,EAAMu0E,iBA5BzB,KAiJFv0E,EAAMi6E,aAAezE,EAAuB,OAI9C8D,CAAK,EAkFHD,GACA3B,EACA13E,EAAMqX,KAAKuO,SAASC,eAAiB7lB,EAAMqX,KAAKqO,WAAa1lB,EAAM6B,UAAUu4E,sBAC1En6E,EAAAA,cAACo6E,EAAAA,oBAAmB,CAChBn6E,UAAU,wCACV2E,QAAS7E,EAAM6E,QACfhD,UAAW7B,EAAM6B,UAAUu4E,qBAC3B10D,UAAW1lB,EAAMqX,KAAKqO,UACtBE,SAAU5lB,EAAMqX,KAAKuO,WAtFjCA,GAAYA,EAAS00D,mBAEjBr6E,EAAAA,cAAA,OAAKC,UAAU,wCACXD,EAAAA,cAAA,QAAMC,UAAU,WAAWF,EAAMu6E,mBAKrCt6E,EAAAA,cAAA,OAAKC,UAAU,wCACXD,EAAAA,cAAA,QAAMC,UAAU,YAAYF,EAAMu6E,oBAkFxC,GASHhH,IAIX","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/add-line/spinner.tsx?8f4d","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/add-line/add-line.tsx?49a0","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/add-line/dropdown.tsx?8afb","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/add-line/not-found.tsx?ce32","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/common/gdn-order-template-quantity.tsx?aca0","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/add-line/product-configuration.tsx?dcf6","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/add-line/product-list.tsx?0c05","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/bulk-actions.tsx?e36a","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/gdn-order-template-actions.tsx?1093","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/gdn-order-template-lines.tsx?be20","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/components/gdn-order-template-table-heading.tsx?4430","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/gdn-order-template.tsx?eea6","webpack://Msdyn365.Commerce.Online/./src/modules/gdn-order-template/gdn-order-template.view.tsx?d572","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/components/create-order-template.component.tsx?f930","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/components/promocode.component.tsx?5a9f","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/order-template-list.view.tsx?212c","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/components/create-order-template.component.tsx?d950","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/components/promocode.component.tsx?6892","webpack://Msdyn365.Commerce.Online/./src/utils/cartAttributeManager.ts?36c3","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/order-template-list.view.tsx?3b52","webpack://Msdyn365.Commerce.Online/./src/modules/active-image-utilities/active-product.tsx?69b2","webpack://Msdyn365.Commerce.Online/./src/modules/active-image-utilities/additional-content.tsx?6946","webpack://Msdyn365.Commerce.Online/./src/modules/active-image-utilities/image-mapper.tsx?dd86","webpack://Msdyn365.Commerce.Online/./src/modules/active-image/active-image.tsx?00d3","webpack://Msdyn365.Commerce.Online/./src/modules/active-image/active-image.view.tsx?a935","webpack://Msdyn365.Commerce.Online/./src/modules/carousel/carousel.tsx?80d4","webpack://Msdyn365.Commerce.Online/./src/modules/carousel/carousel.view.tsx?d82f","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/components/order-template-list.tsx?86c4","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/components/orderTemplateList-status-message.tsx?183c","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/components/create-order-template.tsx?ea38","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/order-template-list.tsx?18d0","webpack://Msdyn365.Commerce.Online/./src/modules/order-template-list/order-template-list.view.tsx?103b","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/spinner.tsx?b423","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/bulk-actions.tsx?dbe8","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/add-line.tsx?5f8a","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/dropdown.tsx?1cba","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/not-found.tsx?392d","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/common/order-template-quantity.tsx?99a1","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/product-configuration.tsx?b256","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/add-line/product-list.tsx?4284","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/order-template-actions.tsx?8136","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/order-template-lines.tsx?3703","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/order-template-lines-status-message.tsx?2986","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/components/order-template-table-heading.tsx?665c","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/order-template.tsx?4ecb","webpack://Msdyn365.Commerce.Online/./src/modules/order-template/order-template.view.tsx?a45e","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/product-comparison-preview.tsx?39f6","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison-preview/product-comparison-preview.view.tsx?28cb","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/base/product-specification.tsx?75ed","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/base/remove-from-comparison-button.tsx?1d8c","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/product-comparison.tsx?4f74","webpack://Msdyn365.Commerce.Online/./src/modules/product-comparison/product-comparison.view.tsx?a0a9","webpack://Msdyn365.Commerce.Online/./src/modules/promo-banner/components/close-button.tsx?063b","webpack://Msdyn365.Commerce.Online/./src/modules/promo-banner/components/links.tsx?2587","webpack://Msdyn365.Commerce.Online/./src/modules/promo-banner/components/text.tsx?782b","webpack://Msdyn365.Commerce.Online/./src/modules/promo-banner/promo-banner.tsx?9ee9","webpack://Msdyn365.Commerce.Online/./src/modules/promo-banner/promo-banner.view.tsx?7f77","webpack://Msdyn365.Commerce.Online/./src/actions/submit-user-review.ts?ac78","webpack://Msdyn365.Commerce.Online/./src/actions/inputs/submit-user-review-input.ts?3afb","webpack://Msdyn365.Commerce.Online/./src/common/review-modal.tsx?54a9","webpack://Msdyn365.Commerce.Online/./src/common/rnrInterface.ts?f761","webpack://Msdyn365.Commerce.Online/./src/modules/ratings-histogram/component/components.tsx?f324","webpack://Msdyn365.Commerce.Online/./src/modules/ratings-histogram/ratings-histogram.tsx?f6bc","webpack://Msdyn365.Commerce.Online/./src/modules/ratings-histogram/ratings-histogram.view.tsx?5bff","webpack://Msdyn365.Commerce.Online/./src/actions/report-review-concern.ts?bf43","webpack://Msdyn365.Commerce.Online/./src/actions/submit-helpfulness-vote.ts?a8ab","webpack://Msdyn365.Commerce.Online/./src/actions/inputs/report-review-concern-input.ts?b071","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/components/components.tsx?033b","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/components/report-review-modal.tsx?53d3","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/components/review-card.tsx?6bbd","webpack://Msdyn365.Commerce.Online/./src/actions/inputs/submit-helpfulness-vote-input.ts?07aa","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/reviews-list.tsx?37e8","webpack://Msdyn365.Commerce.Online/./src/modules/reviews-list/reviews-list.view.tsx?0e4a","webpack://Msdyn365.Commerce.Online/./src/modules/write-review/components/components.tsx?3575","webpack://Msdyn365.Commerce.Online/./src/modules/write-review/write-review.tsx?9afc","webpack://Msdyn365.Commerce.Online/./src/modules/write-review/write-review.view.tsx?b867","webpack://Msdyn365.Commerce.Online/./src/search-state.ts?dd10","webpack://Msdyn365.Commerce.Online/./src/modules/search/actions/get-auto-suggest-suggestions.ts?4735","webpack://Msdyn365.Commerce.Online/./src/modules/search/components/search.categorysuggest.tsx?c65d","webpack://Msdyn365.Commerce.Online/./src/modules/search/components/search.form.tsx?25a5","webpack://Msdyn365.Commerce.Online/./src/modules/search/components/search.keywordsuggest.tsx?297c","webpack://Msdyn365.Commerce.Online/./src/modules/search/components/search.label.tsx?0c17","webpack://Msdyn365.Commerce.Online/./src/modules/search/components/search.productsuggest.tsx?2af9","webpack://Msdyn365.Commerce.Online/./src/modules/search/search.tsx?72fb","webpack://Msdyn365.Commerce.Online/./src/modules/search/search.view.tsx?1505","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/components/cartlineitem.component.tsx?ccc2"],"sourcesContent":["/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport default (props: { className: string; msg?: string }) => (\r\n <>\r\n
\r\n {props?.msg &&
{props?.msg}
}\r\n \r\n);\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\r\nimport { getCatalogId, ICoreContext, IImageSettings } from '@msdyn365-commerce/core';\r\nimport { ProductListLine, ProductSearchCriteria, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\nimport { searchByCriteriaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { ProductCatalog, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n addItemToOrderTemplate,\r\n AddItemToOrderTemplateInput,\r\n ArrayExtensions,\r\n getDimensionsForSelectedVariant,\r\n GetDimensionsForSelectedVariantInput,\r\n getSelectedVariant,\r\n SelectedVariantInput,\r\n validateCatalogId\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Modal, ModalBody, ModalHeader, getPayloadObject, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport { get } from 'lodash';\r\nimport { computed } from 'mobx';\r\nimport React from 'react';\r\n\r\nimport { IProductConfigurationState, NotFoundComponent, ProductConfiguration, ProductList } from '.';\r\nimport Spinner from './spinner';\r\n\r\nexport interface IAddLineToTemplateProps {\r\n context: ICoreContext;\r\n resources: IAddLineToTemplateResources;\r\n orderTemplateId: string;\r\n imageSettings?: IImageSettings;\r\n isMultipleCatalogFeatureEnabledInHq: boolean;\r\n catalogs?: ProductCatalog[] | undefined;\r\n telemetryContent?: ITelemetryContent;\r\n}\r\n\r\nexport interface IAddLineToTemplateResources {\r\n addLineModalLinkText: string;\r\n searchButtonAriaLabel: string;\r\n searchInputAriaLabel: string;\r\n searchModalPlaceholderText: string;\r\n selectCatalogTitleText: string;\r\n selectProductButtonText: string;\r\n addItemToTemplateText: string;\r\n addLineProductUnitPricePrefix: string;\r\n backButtonText: string;\r\n decrementButtonAriaLabel: string;\r\n incrementButtonAriaLabel: string;\r\n quantitySelectLabel: string;\r\n addLineProductUnitOfMeasurePrefix: string;\r\n notFoundSearchErrorNotice: string;\r\n notFoundSearchErrorRedediation: string;\r\n searchErrorMessage: string;\r\n productDimensionTypeColor: string;\r\n productDimensionTypeConfiguration: string;\r\n productDimensionTypeSize: string;\r\n productDimensionTypeStyle: string;\r\n searchResultsCountVerbage: string;\r\n searchResultsCountSubject: string;\r\n addToTemplateConfirmation: string;\r\n totalPriceLabel: string;\r\n progressNotificationText: string;\r\n addToTemplateDuplicateError: string;\r\n addToTemplateGenericError: string;\r\n dimensionMissingError: string;\r\n backToResultsText?: string;\r\n}\r\n\r\nenum CONTENT {\r\n Search,\r\n ProductList,\r\n ProductConfiguration,\r\n NotFound,\r\n Error,\r\n Loading\r\n}\r\n\r\ninterface IAddLineToTemplateState {\r\n isOpen: boolean;\r\n query: string;\r\n products: ProductSearchResult[];\r\n productCatalogs: ProductCatalog[] | null;\r\n content: number;\r\n selectedProduct: SimpleProduct | null;\r\n selectedCatalogId: number | undefined;\r\n selectedProductDimensions?: ProductDimensionFull[];\r\n selectedQuantity?: number;\r\n reloadPage?: boolean;\r\n}\r\n\r\n/**\r\n * Add Lines to order template.\r\n */\r\nexport class AddLineToTemplate extends React.Component {\r\n public state: IAddLineToTemplateState = {\r\n isOpen: false,\r\n query: '',\r\n products: [],\r\n productCatalogs: [],\r\n content: CONTENT.Search,\r\n selectedProduct: null,\r\n selectedCatalogId: 0\r\n };\r\n\r\n public defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\r\n lg: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\r\n xl: { q: 'w=64&h=64&m=6', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n public searchTextInput: React.RefObject = React.createRef(); // @TODO public/private\r\n\r\n private readonly addLineButtonRef: React.RefObject = React.createRef();\r\n\r\n constructor(props: IAddLineToTemplateProps) {\r\n super(props);\r\n }\r\n\r\n public onComponentDidMount(): void {\r\n this.searchTextInput.current?.focus();\r\n }\r\n\r\n public componentDidMount(): void {\r\n this._getCatalogs();\r\n }\r\n\r\n public onComponentDidUpdate(): void {\r\n this.searchTextInput.current?.focus();\r\n }\r\n\r\n @computed get showBackArrow(): boolean {\r\n return this.state.content === CONTENT.ProductConfiguration;\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IAddLineToTemplateProps, nextState: IAddLineToTemplateState): boolean {\r\n if (this.state === nextState && this.props === nextProps) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n resources: { addLineModalLinkText, backToResultsText }\r\n } = this.props;\r\n\r\n const modalProps = {\r\n ...this.props,\r\n className: 'msc-add-line-to-template',\r\n toggle: this._toggleModalHandler,\r\n isOpen: this.state.isOpen,\r\n ariaLabel: addLineModalLinkText\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n {this.showBackArrow && (\r\n \r\n )}\r\n {addLineModalLinkText}\r\n \r\n {this._renderContent()}\r\n \r\n \r\n \r\n {addLineModalLinkText}\r\n \r\n \r\n );\r\n }\r\n\r\n private readonly _renderSearchForm = () => {\r\n const {\r\n resources: { searchButtonAriaLabel, searchModalPlaceholderText, selectCatalogTitleText }\r\n } = this.props;\r\n\r\n return (\r\n \r\n {this.state.productCatalogs && ArrayExtensions.hasElements(this.state.productCatalogs) && (\r\n <>\r\n \r\n \r\n {this._getCatalogNodes()}\r\n \r\n \r\n )}\r\n
\r\n \r\n
\r\n \r\n );\r\n };\r\n\r\n private readonly _onSearchSubmit = (event: React.FormEvent): void => {\r\n event.preventDefault();\r\n\r\n const query = get(this, 'searchTextInput.current.value', null);\r\n\r\n if (!query) {\r\n return;\r\n }\r\n\r\n this.setState({\r\n content: CONTENT.Loading\r\n });\r\n\r\n this._getSearchResults(query as string)\r\n .then(result => {\r\n if (result.length === 0) {\r\n this.setState({\r\n products: result,\r\n content: CONTENT.NotFound\r\n });\r\n } else {\r\n this.setState({\r\n products: result,\r\n content: CONTENT.ProductList\r\n });\r\n }\r\n })\r\n .catch(error => {\r\n this.setState({\r\n content: CONTENT.Error\r\n });\r\n });\r\n };\r\n\r\n private readonly _onQuantityChangeHandler = (event: React.ChangeEvent) => {\r\n this.setState({\r\n selectedQuantity: +event.target.value\r\n });\r\n };\r\n\r\n private readonly _onSelectItem = async (product: ProductSearchResult): Promise => {\r\n const {\r\n actionContext,\r\n request: {\r\n apiSettings: { channelId }\r\n }\r\n } = this.props.context;\r\n const varianteInput = new SelectedVariantInput(product.RecordId, channelId, [], undefined, this.props.context.request);\r\n const productVariant = await getSelectedVariant(varianteInput, actionContext);\r\n\r\n if (!productVariant) {\r\n this.props.context.telemetry.error('Error retrieving product variant');\r\n return Promise.resolve([]);\r\n }\r\n\r\n const dimensions = await this._getProductDimensions(product as SimpleProduct);\r\n\r\n this.setState({\r\n selectedProductDimensions: dimensions,\r\n content: CONTENT.ProductConfiguration,\r\n selectedProduct: productVariant\r\n });\r\n\r\n return dimensions;\r\n };\r\n\r\n private readonly _onInputChange = (event: React.ChangeEvent): void => {\r\n this.setState({\r\n query: event.target.value\r\n });\r\n };\r\n\r\n private readonly _onBackButtonClickHandler = (): void => {\r\n this.setState({\r\n content: CONTENT.ProductList\r\n });\r\n };\r\n\r\n private readonly _highlightSearchTerm = (name: string) => {\r\n const parsedName = name && unescape(name.replace(new RegExp(this.state.query, 'i'), '$&'));\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n private readonly _resultCountText = (): string => {\r\n return this.props.resources.searchResultsCountVerbage\r\n .replace('{count}', this.state.products.length.toString())\r\n .replace('{subject}', `${this.props.resources.searchResultsCountSubject}${this.state.products.length > 1 ? 's' : ''}`);\r\n };\r\n\r\n private _renderContent(): React.ReactNode | null {\r\n switch (this.state.content) {\r\n case CONTENT.ProductConfiguration:\r\n const { selectedProduct, selectedProductDimensions } = this.state;\r\n const viewProps = {\r\n ...this.props,\r\n imageSettings: this.props.imageSettings || this.defaultImageSettings,\r\n product: selectedProduct!,\r\n dimensions: selectedProductDimensions!,\r\n addToTemplateHandler: this._addItemToTemplateHandler,\r\n onQuantityChangeHandler: this._onQuantityChangeHandler,\r\n highlightSearchTerm: this._highlightSearchTerm,\r\n searchForm: this._renderSearchForm()\r\n };\r\n\r\n return ;\r\n\r\n case CONTENT.ProductList:\r\n const productProps = {\r\n ...this.props,\r\n imageSettings: this.props.imageSettings || this.defaultImageSettings,\r\n clickHandler: this._onSelectItem,\r\n products: this.state.products,\r\n highlightSearchTerm: this._highlightSearchTerm,\r\n searchForm: this._renderSearchForm(),\r\n renderResultCountText: this._resultCountText\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n\r\n case CONTENT.Loading:\r\n return (\r\n \r\n {this._renderSearchForm()}\r\n \r\n \r\n );\r\n\r\n case CONTENT.NotFound:\r\n const { notFoundSearchErrorNotice, notFoundSearchErrorRedediation } = this.props.resources;\r\n\r\n return (\r\n \r\n

{this._resultCountText()}

\r\n {this._renderSearchForm()}\r\n \r\n
\r\n );\r\n\r\n case CONTENT.Error:\r\n return (\r\n \r\n {this._renderSearchForm()}\r\n
\r\n {this.props.resources.searchErrorMessage}\r\n
\r\n
\r\n );\r\n\r\n default:\r\n return {this._renderSearchForm()};\r\n }\r\n }\r\n\r\n private readonly _addItemToTemplateHandler = async (config: IProductConfigurationState): Promise => {\r\n const {\r\n orderTemplateId,\r\n context: { actionContext },\r\n isMultipleCatalogFeatureEnabledInHq\r\n } = this.props;\r\n const catalogId = this.state.selectedCatalogId;\r\n const input = isMultipleCatalogFeatureEnabledInHq\r\n ? new AddItemToOrderTemplateInput(\r\n orderTemplateId,\r\n config.product.RecordId,\r\n config.quantity,\r\n config.product.DefaultUnitOfMeasure || 'ea',\r\n isMultipleCatalogFeatureEnabledInHq,\r\n catalogId\r\n )\r\n : new AddItemToOrderTemplateInput(\r\n orderTemplateId,\r\n config.product.RecordId,\r\n config.quantity,\r\n config.product.DefaultUnitOfMeasure || 'ea'\r\n );\r\n const result = await addItemToOrderTemplate(input, actionContext);\r\n this.setState({\r\n isOpen: false,\r\n reloadPage: true\r\n });\r\n // reload when closing\r\n window.location.reload();\r\n return result;\r\n };\r\n\r\n /**\r\n *\r\n * Get all active product catalogs.\r\n */\r\n private _getCatalogs(): void {\r\n const { isMultipleCatalogFeatureEnabledInHq, catalogs } = this.props;\r\n\r\n // if Channel Multiple Catalogs Feature is enabled then show all catalogs.\r\n const productCatalogs = isMultipleCatalogFeatureEnabledInHq && catalogs ? catalogs : [];\r\n\r\n // get the current catalog id.\r\n const catalogId = getCatalogId(this.props.context.request);\r\n validateCatalogId(catalogId);\r\n // set the current catalog id as a default selected catalog id from the url\r\n this.setState({\r\n productCatalogs: productCatalogs,\r\n selectedCatalogId: catalogId\r\n });\r\n }\r\n\r\n private _getCatalogNodes(): JSX.Element[] | null {\r\n const { productCatalogs, selectedCatalogId } = this.state;\r\n if (productCatalogs && ArrayExtensions.hasElements(productCatalogs)) {\r\n return productCatalogs.map((productCatalog: ProductCatalog) => {\r\n // initially select default catalog in dropdown\r\n const isSelected = productCatalog.RecordId === selectedCatalogId;\r\n return (\r\n \r\n );\r\n });\r\n }\r\n return [];\r\n }\r\n\r\n private readonly _onCatalogSelectionChange = (event: React.ChangeEvent) => {\r\n this.setState({\r\n selectedCatalogId: Number.parseInt(event.target.value, 10)\r\n });\r\n };\r\n\r\n private _getSearchResults(searchText: string): Promise {\r\n const {\r\n context: {\r\n actionContext,\r\n request: {\r\n apiSettings: { channelId }\r\n }\r\n }\r\n } = this.props;\r\n const { selectedCatalogId } = this.state;\r\n const searchCriteriaInput: ProductSearchCriteria = {};\r\n\r\n searchCriteriaInput.Context = {\r\n ChannelId: channelId,\r\n CatalogId: selectedCatalogId\r\n };\r\n\r\n if (process.env.NODE_ENV === 'development' && process.env.ENABLE_CLOUD_SEARCH?.toLowerCase() !== 'true') {\r\n searchCriteriaInput.IncludeAttributes = false;\r\n } else {\r\n searchCriteriaInput.IncludeAttributes = true;\r\n }\r\n searchCriteriaInput.SearchCondition = `\"${searchText}\"`;\r\n\r\n return searchByCriteriaAsync({ callerContext: actionContext }, searchCriteriaInput);\r\n }\r\n\r\n private async _getProductDimensions(product: SimpleProduct): Promise {\r\n const {\r\n context: {\r\n actionContext,\r\n request: {\r\n apiSettings: { channelId }\r\n }\r\n }\r\n } = this.props;\r\n const id = product.MasterProductId ? product.MasterProductId : product.RecordId;\r\n\r\n return getDimensionsForSelectedVariant(\r\n new GetDimensionsForSelectedVariantInput(id, channelId, [], this.props.context.request),\r\n actionContext\r\n );\r\n }\r\n\r\n private readonly _toggleModalHandler = () => {\r\n if (this.state.isOpen) {\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'add-item-to-template', '');\r\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'add-item-to-template');\r\n this._getCatalogs();\r\n this.addLineButtonRef.current!.focus();\r\n }\r\n\r\n this.setState({\r\n isOpen: !this.state.isOpen,\r\n content: CONTENT.Search\r\n });\r\n\r\n if (this.state.reloadPage) {\r\n window.location.reload();\r\n this.setState({\r\n reloadPage: false\r\n });\r\n }\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\ninterface IDropdownState {\r\n /**\r\n * @friendlyName selectedIndex\r\n * @description Selected index.\r\n */\r\n selectedIndex: string;\r\n}\r\n\r\nexport interface IDropdownProps {\r\n dropdownId: number;\r\n dropdownName: string;\r\n dropdownList: IDropdownItemProps[];\r\n telemetryContent?: ITelemetryContent;\r\n onChange?(selection: IDropdownOnSelection): void;\r\n}\r\n\r\nexport interface IDropdownItemProps {\r\n value: string;\r\n id: number;\r\n}\r\n\r\nexport interface IDropdownOnSelection {\r\n dropdownId: number;\r\n selectId: string;\r\n selectedValue: string;\r\n}\r\n\r\n/**\r\n *\r\n * DropDown component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class Dropdown extends React.PureComponent {\r\n private readonly selectMenu: React.RefObject = React.createRef();\r\n\r\n constructor(props: IDropdownProps, state: IDropdownState) {\r\n super(props);\r\n this.state = {\r\n selectedIndex: ''\r\n };\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (this.selectMenu.current) {\r\n this.selectMenu.current.selectedIndex = 0;\r\n }\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { dropdownId, dropdownList, dropdownName } = this.props;\r\n\r\n return (\r\n \r\n {dropdownList.map(\r\n (item: IDropdownItemProps) =>\r\n item && (\r\n \r\n {item.value}\r\n \r\n )\r\n )}\r\n \r\n );\r\n }\r\n\r\n private readonly _onChanged = (event: React.ChangeEvent): void => {\r\n this.setState({ selectedIndex: event.target.value });\r\n\r\n if (this.props.onChange) {\r\n this.props.onChange({\r\n dropdownId: this.props.dropdownId,\r\n selectId: event.target.value,\r\n selectedValue: event.target.innerText\r\n });\r\n }\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nexport const NotFoundComponent = (props: { error: string; msg: string }) => (\r\n <>\r\n
\r\n
{props.error}
\r\n
{props.msg}
\r\n \r\n);\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { debounce } from 'lodash';\r\nimport { reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\ninterface IQuantityProps {\r\n min?: number;\r\n max: number;\r\n currentCount?: number;\r\n disabled?: boolean;\r\n incrementGlyphClass?: string;\r\n decrementGlyphClass?: string;\r\n decrementButtonAriaLabel?: string;\r\n incrementButtonAriaLabel?: string;\r\n inputQuantityAriaLabel?: string;\r\n id?: string;\r\n onChange?(newValue: number): void;\r\n}\r\n\r\ninterface IQuantityState {\r\n currentInput: number;\r\n}\r\n\r\n/**\r\n * Quantity Component - This component is used to add or remove quantity.\r\n */\r\n@observer\r\nexport default class OrderTemplateQuantity extends React.PureComponent {\r\n public static defaultProps: Partial = {\r\n min: 1,\r\n decrementGlyphClass: 'fas fa-minus',\r\n incrementGlyphClass: 'fas fa-plus'\r\n };\r\n\r\n private readonly inputRef: React.RefObject = React.createRef();\r\n\r\n constructor(props: IQuantityProps) {\r\n super(props);\r\n this.state = { currentInput: props.currentCount || 1 };\r\n this._handleChange = this._handleChange.bind(this);\r\n\r\n reaction(\r\n () => this.props.currentCount,\r\n () => {\r\n this.setState({ currentInput: this.props.currentCount || 1 });\r\n }\r\n );\r\n }\r\n\r\n public render(): JSX.Element {\r\n const glyphMinusClassName: string = `${this.props.decrementGlyphClass!} quantity__controls-glyph`;\r\n const glyphPlusClassName: string = `${this.props.incrementGlyphClass!} quantity__controls-glyph`;\r\n const disabled = this.props.currentCount === this.props.min;\r\n const incDisabled = this.props.currentCount === this.props.max;\r\n const currentValue = this.state.currentInput;\r\n let extraClass = '';\r\n if (disabled) {\r\n // The quantity has reached its boundaries (max or min)\r\n extraClass = 'disabled';\r\n } else if (this.props.disabled) {\r\n // This.props.disabled shows if the state is not succeded yet\r\n extraClass = 'transition';\r\n }\r\n const getChangeHandler = (amount: number) => () => {\r\n this._onIncrementalChange(amount);\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n private _onIncrementalChange(amount: number): void {\r\n const updatedQuantity = this.state.currentInput + amount;\r\n\r\n if (updatedQuantity >= 1 && updatedQuantity <= this.props.max) {\r\n this.props.onChange && this.props.onChange(updatedQuantity);\r\n }\r\n }\r\n\r\n private _handleChange(e: React.ChangeEvent): void {\r\n const currentValue = Number.parseInt(e.target.value, 10);\r\n const minValue = this.props.min === undefined ? 1 : this.props.min;\r\n const inputElement =\r\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\r\n\r\n if (currentValue > this.props.max) {\r\n this.setState({ currentInput: this.props.max });\r\n } else {\r\n this.setState({ currentInput: currentValue }, () => {\r\n debounce(() => {\r\n if (!isNaN(this.state.currentInput) && !(this.state.currentInput < minValue) && inputElement) {\r\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\r\n inputElement.setAttribute('value', currentValue.toString());\r\n }\r\n }, 200)();\r\n });\r\n }\r\n }\r\n\r\n private readonly _validateMin = (): void => {\r\n const minValue = this.props.min === undefined ? 1 : this.props.min;\r\n\r\n if (isNaN(this.state.currentInput) || this.state.currentInput < minValue) {\r\n this.props.onChange && this.props.onChange(minValue);\r\n } else {\r\n this.props.onChange && this.props.onChange(this.state.currentInput);\r\n }\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\r\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { ProductDimensionValue, ProductListLine } from '@msdyn365-commerce/retail-proxy';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n getDimensionsForSelectedVariant,\r\n GetDimensionsForSelectedVariantInput,\r\n getFallbackImageUrl,\r\n getPriceForSelectedVariant,\r\n getProductAvailabilitiesForSelectedVariant,\r\n getSelectedVariant,\r\n IProductInventoryInformation,\r\n PriceForSelectedVariantInput,\r\n ProductAvailabilitiesForSelectedVariantInput,\r\n SelectedVariantInput\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Alert, Button, ITelemetryContent, ModalBody, ModalFooter } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\n\r\nimport OrderTemplateQuantity from '../common/gdn-order-template-quantity';\r\nimport { Dropdown, IAddLineToTemplateProps, IAddLineToTemplateResources, IDropdownItemProps, IDropdownOnSelection } from '.';\r\n\r\nexport interface IProductCnnfigurationProps extends IAddLineToTemplateProps {\r\n product: SimpleProduct;\r\n dimensions: ProductDimensionFull[];\r\n imageSettings: IImageSettings;\r\n telemetryContent?: ITelemetryContent;\r\n searchForm: React.ReactNode;\r\n addToTemplateHandler(params: IProductConfigurationState): Promise;\r\n highlightSearchTerm(name: string): React.ReactNode;\r\n}\r\n\r\nexport interface IProductConfigurationState {\r\n quantity: number;\r\n unitPrice: number;\r\n totalPrice: number;\r\n product: SimpleProduct;\r\n dimensions: ProductDimensionFull[];\r\n selectedDimensions: {};\r\n productAvailableQuantity?: IProductInventoryInformation;\r\n buttonDisabled: boolean;\r\n showAddConfirmation: boolean;\r\n errorMessage?: string;\r\n isBusy: boolean;\r\n errors: { dimension?: string[]; add?: string };\r\n}\r\n\r\n/**\r\n * Configure selected product for addition to order template.\r\n */\r\nexport class ProductConfiguration extends React.Component {\r\n private selectedDimensions: {} = {};\r\n\r\n constructor(props: IProductCnnfigurationProps) {\r\n super(props);\r\n\r\n this.state = {\r\n quantity: 1,\r\n unitPrice: props.product.Price,\r\n totalPrice: props.product.Price,\r\n product: props.product,\r\n dimensions: props.dimensions.sort((a, b) => a.DimensionTypeValue - b.DimensionTypeValue),\r\n selectedDimensions: {},\r\n buttonDisabled: false,\r\n showAddConfirmation: false\r\n } as IProductConfigurationState;\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IProductCnnfigurationProps, nextState: IProductConfigurationState): boolean {\r\n if (this.state === nextState && this.props === nextProps) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n context: {\r\n actionContext: {\r\n requestContext: { apiSettings }\r\n },\r\n request: { gridSettings }\r\n },\r\n resources: {\r\n addItemToTemplateText,\r\n addLineProductUnitPricePrefix,\r\n decrementButtonAriaLabel,\r\n incrementButtonAriaLabel,\r\n quantitySelectLabel,\r\n addLineProductUnitOfMeasurePrefix,\r\n totalPriceLabel\r\n },\r\n imageSettings,\r\n highlightSearchTerm\r\n } = this.props;\r\n const { buttonDisabled, product, quantity, unitPrice, totalPrice, showAddConfirmation, errors } = this.state;\r\n const isMultipleCatalogSelect = this.props.isMultipleCatalogFeatureEnabledInHq ? 'isMultipleCatalogSelect' : '';\r\n return (\r\n <>\r\n \r\n {this.props.searchForm}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{product?.ItemId}
\r\n {highlightSearchTerm(product?.Name ?? '')}\r\n
\r\n {addLineProductUnitPricePrefix}\r\n {` `}\r\n {this._formatPrice(unitPrice)}\r\n
\r\n
\r\n {addLineProductUnitOfMeasurePrefix}\r\n {` `}\r\n {product?.DefaultUnitOfMeasure}\r\n
\r\n
\r\n
\r\n
{this._getDimensionsNodes()}
\r\n
\r\n
\r\n
{quantitySelectLabel}
\r\n \r\n
\r\n
\r\n
\r\n {totalPriceLabel}\r\n {` `}\r\n {this._formatPrice(totalPrice)}\r\n
\r\n
\r\n \r\n {showAddConfirmation && (\r\n \r\n
\r\n )}\r\n {errors?.add && (\r\n
\r\n
\r\n )}\r\n \r\n {addItemToTemplateText}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private _getConfirmationMessage(): string {\r\n const selectedDimensionNames = this.state.dimensions\r\n .map(dimension => {\r\n let variant = dimension.DimensionValues?.find(\r\n value => value.RecordId === this.selectedDimensions[dimension.DimensionTypeValue]\r\n )?.Value;\r\n if (dimension.DimensionTypeValue === 3) {\r\n variant = `size ${variant}`;\r\n }\r\n return variant;\r\n })\r\n .filter(value => value);\r\n\r\n return this.props.resources.addToTemplateConfirmation\r\n .replace('{count}', this.state.quantity.toString())\r\n .replace('{productAndDimensions}', `${this.state.product.Name}, ${Object.values(selectedDimensionNames).join(', ')}`);\r\n }\r\n\r\n private _getDimensionsNodes(): React.ReactElement[] {\r\n const { dimensions } = this.state;\r\n const { resources } = this.props;\r\n\r\n return dimensions?.map((dimension: ProductDimensionFull) => {\r\n const { DimensionValues, DimensionTypeValue } = dimension;\r\n const mapDimensions = (value: ProductDimensionValue): IDropdownItemProps => ({\r\n id: value.RecordId,\r\n value: value.Value || ''\r\n });\r\n const dimensionName = this._getDropdownName(DimensionTypeValue, resources);\r\n const dropdownList: IDropdownItemProps[] = DimensionValues ? DimensionValues.map(mapDimensions) : [];\r\n dropdownList.unshift({ id: 0, value: `Choose a ${dimensionName}` });\r\n\r\n return (\r\n
\r\n
{dimensionName}
\r\n {this.state.errors?.dimension?.includes(DimensionTypeValue.toString()) && (\r\n \r\n \r\n \r\n )}\r\n \r\n
\r\n );\r\n });\r\n }\r\n\r\n private readonly _getDimensionsError = (dimensionName: string) =>\r\n this.props.resources.dimensionMissingError.replace(/{dimensionName}/g, dimensionName);\r\n\r\n private readonly _addToTemplateHandler = async (event: React.MouseEvent) => {\r\n // Hide confirmation of previous addition when adding multiple items\r\n this.setState({\r\n isBusy: true,\r\n showAddConfirmation: false,\r\n errors: { ...this.state.errors, add: undefined }\r\n });\r\n\r\n const missingDimensions = this.state.dimensions\r\n .map(dimension => dimension.DimensionTypeValue.toString())\r\n .filter(type => !this.selectedDimensions[type]);\r\n\r\n this.setState({\r\n errors: { dimension: missingDimensions }\r\n });\r\n if (missingDimensions.length > 0) {\r\n this.setState({\r\n isBusy: false\r\n });\r\n return;\r\n }\r\n\r\n this.props\r\n .addToTemplateHandler({ ...this.state })\r\n .then(status => {\r\n // Validate against the existance of a ProductListId\r\n if (status.ProductListId) {\r\n this.setState({\r\n isBusy: false,\r\n showAddConfirmation: true\r\n });\r\n }\r\n })\r\n .catch(error => {\r\n const { addToTemplateDuplicateError, addToTemplateGenericError } = this.props.resources;\r\n let errorMessage;\r\n\r\n if (error.error.name === 'Microsoft_Dynamics_Commerce_Runtime_DuplicateObject') {\r\n errorMessage = addToTemplateDuplicateError;\r\n } else {\r\n errorMessage = addToTemplateGenericError;\r\n }\r\n\r\n this.setState({\r\n isBusy: false,\r\n errors: { ...this.state.errors, add: errorMessage }\r\n });\r\n this.props.context.telemetry.error('Error adding item to order template');\r\n });\r\n };\r\n\r\n private readonly _onQuantityChange = (newValue: number) => {\r\n this.setState({\r\n quantity: newValue,\r\n totalPrice: newValue * this.props.product.Price\r\n });\r\n };\r\n\r\n private readonly _updateDimensionValue = (\r\n productDimensionFull: ProductDimensionFull,\r\n newValueId: string | undefined\r\n ): ProductDimensionValue | undefined => {\r\n if (newValueId && productDimensionFull.DimensionValues) {\r\n return productDimensionFull.DimensionValues.find(dimension => dimension.RecordId === +newValueId);\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n // Rehydrate the selected variants price, available dimensions & sizes\r\n private readonly _onDimensionChanged = async (selection: IDropdownOnSelection): Promise => {\r\n const { product, dimensions, context } = this.props;\r\n const {\r\n actionContext,\r\n request: {\r\n apiSettings: { channelId }\r\n }\r\n } = context;\r\n\r\n // Remaining error notifications for missing dimensions\r\n const remainingDimensionsErrors = this.state.errors?.dimension?.filter(id => id !== selection.dropdownId.toString());\r\n\r\n this.setState({\r\n isBusy: false,\r\n showAddConfirmation: false,\r\n buttonDisabled: true,\r\n errors: { add: undefined, dimension: remainingDimensionsErrors }\r\n });\r\n\r\n // Update currently selected dimensions\r\n this.selectedDimensions[selection.dropdownId] = +selection.selectId;\r\n\r\n const mappedDimensions = dimensions\r\n ?.map(dimension => {\r\n return {\r\n DimensionTypeValue: dimension.DimensionTypeValue,\r\n DimensionValue:\r\n this._updateDimensionValue(dimension, this.selectedDimensions[dimension.DimensionTypeValue]) ||\r\n dimension.DimensionValue,\r\n ExtensionProperties: dimension.ExtensionProperties\r\n };\r\n })\r\n .filter(dimension => {\r\n return dimension && dimension.DimensionValue;\r\n });\r\n\r\n const variantProduct = await getSelectedVariant(\r\n new SelectedVariantInput(\r\n product.MasterProductId ? product.MasterProductId : product.RecordId,\r\n channelId,\r\n mappedDimensions,\r\n undefined,\r\n this.props.context.request\r\n ),\r\n actionContext\r\n );\r\n\r\n if (!variantProduct) {\r\n this.props.context.telemetry.error(\r\n `Error retrieving variant product for product ${product.MasterProductId ? product.MasterProductId : product.RecordId}`\r\n );\r\n return;\r\n }\r\n\r\n const dimensionInput = new GetDimensionsForSelectedVariantInput(\r\n variantProduct.RecordId,\r\n channelId,\r\n mappedDimensions,\r\n this.props.context.request\r\n );\r\n const variantDimensions = await getDimensionsForSelectedVariant(dimensionInput, actionContext);\r\n\r\n if (!variantDimensions) {\r\n this.props.context.telemetry.error('Error retrieving dimensions for reconfigured product variant');\r\n this.setState({\r\n buttonDisabled: false\r\n });\r\n return;\r\n }\r\n\r\n const availabilityInput = new ProductAvailabilitiesForSelectedVariantInput(\r\n product.MasterProductId ? product.MasterProductId : product.RecordId,\r\n channelId\r\n );\r\n\r\n // @TODO sync UX quantity w/ actual availability\r\n const newAvailableQuantity = await getProductAvailabilitiesForSelectedVariant(availabilityInput, actionContext);\r\n const priceInput = new PriceForSelectedVariantInput(product.RecordId, channelId);\r\n const productPrice = await getPriceForSelectedVariant(priceInput, actionContext);\r\n\r\n if (!productPrice) {\r\n this.props.context.telemetry.error('Error retrieving price for reconfigured product variant');\r\n this.setState({\r\n buttonDisabled: false\r\n });\r\n return;\r\n }\r\n\r\n this.setState({\r\n buttonDisabled: false,\r\n productAvailableQuantity: (newAvailableQuantity && newAvailableQuantity[0]) || undefined,\r\n unitPrice: +(productPrice.BasePrice || product.Price),\r\n dimensions: variantDimensions.sort((a, b) => a.DimensionTypeValue - b.DimensionTypeValue),\r\n product: variantProduct\r\n });\r\n };\r\n\r\n private readonly _getDropdownName = (dimensionType: number, resources: IAddLineToTemplateResources): string => {\r\n switch (dimensionType) {\r\n case 1: // Color\r\n return resources.productDimensionTypeColor;\r\n case 2: // Configuration\r\n return resources.productDimensionTypeConfiguration;\r\n case 3: // Size\r\n return resources.productDimensionTypeSize;\r\n case 4: // Style\r\n return resources.productDimensionTypeStyle;\r\n default:\r\n return '';\r\n }\r\n };\r\n\r\n private _formatPrice(price: number): string {\r\n const {\r\n context: {\r\n cultureFormatter: {\r\n formatCurrency,\r\n\r\n // @ts-expect-error\r\n currencyCode\r\n }\r\n }\r\n } = this.props;\r\n\r\n return formatCurrency(price.toFixed(2), currencyCode);\r\n }\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\r\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\nimport { getFallbackImageUrl, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React, { useState } from 'react';\r\n\r\nimport { IAddLineToTemplateProps } from '.';\r\n\r\nexport interface IProductListProps extends IAddLineToTemplateProps {\r\n products: ProductSearchResult[];\r\n imageSettings: IImageSettings;\r\n searchForm: React.ReactNode;\r\n clickHandler(product: ProductSearchResult): Promise;\r\n highlightSearchTerm(name: string): React.ReactNode;\r\n renderResultCountText(): string;\r\n}\r\n\r\nexport const ProductList = (props: IProductListProps) => {\r\n const {\r\n products,\r\n context: {\r\n actionContext: {\r\n requestContext: { apiSettings }\r\n },\r\n request: { gridSettings },\r\n cultureFormatter: {\r\n formatCurrency,\r\n\r\n // @ts-expect-error\r\n currencyCode\r\n }\r\n },\r\n clickHandler,\r\n highlightSearchTerm,\r\n renderResultCountText,\r\n resources: { selectProductButtonText },\r\n imageSettings\r\n } = props;\r\n\r\n return (\r\n <>\r\n

\r\n {renderResultCountText()}\r\n

\r\n {props.searchForm}\r\n
\r\n {products.map((product: ProductSearchResult, index: number) => {\r\n const { Price, ItemId, Name, PrimaryImageUrl } = product;\r\n const price = formatCurrency(Price.toFixed(2), currencyCode);\r\n const primaryImageSource = generateImageUrl(PrimaryImageUrl ?? '', apiSettings) ?? '';\r\n const fallBackImg = getFallbackImageUrl(ItemId, apiSettings, props.context.request.app?.config?.OmniChannelMedia) ?? '';\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
{ItemId}
\r\n {highlightSearchTerm(Name ?? '')}\r\n
\r\n
\r\n
\r\n {price}\r\n \r\n
\r\n
\r\n );\r\n })}\r\n
\r\n \r\n );\r\n};\r\n\r\ninterface IProductSelectButton {\r\n product: ProductSearchResult;\r\n buttonText: string;\r\n clickHandler(product: ProductSearchResult): Promise;\r\n}\r\n\r\nconst ProductSelectButton = (props: IProductSelectButton) => {\r\n const [isBusy, setBusy] = useState(false);\r\n const { product, buttonText, clickHandler } = props;\r\n const getClickHandler = React.useCallback(async () => {\r\n setBusy(!isBusy);\r\n await clickHandler(product);\r\n setBusy(!isBusy);\r\n }, [clickHandler, isBusy, product]);\r\n\r\n return (\r\n \r\n {buttonText}\r\n \r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateLineViewModel } from '../gdn-order-template';\r\nimport { IGdnOrderTemplateData } from '../gdn-order-template.data';\r\nimport { IGdnOrderTemplateProps } from '../gdn-order-template.props.autogenerated';\r\nimport { AddLineToTemplate } from '.';\r\n\r\ninterface IOrderTemplateBulkActionsProps extends IGdnOrderTemplateProps {\r\n orderTemplateId: string;\r\n selectedLines: IOrderTemplateLineViewModel[];\r\n isMinifiedView: boolean;\r\n isMultipleCatalogFeatureEnabledInHq: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n onAddSelectionToBag(): void;\r\n onRemoveSelection(): void;\r\n}\r\n\r\ninterface IOrderTemplateBulkActionsState {\r\n isAddDisabled: boolean;\r\n isRemoveDisabled: boolean;\r\n}\r\n\r\n/**\r\n * Bulk Order Template line actions.\r\n */\r\nexport class OrderTemplateBulkActions extends React.PureComponent {\r\n public state: IOrderTemplateBulkActionsState = {\r\n isAddDisabled: true,\r\n isRemoveDisabled: true\r\n };\r\n\r\n public static getDerivedStateFromProps(\r\n props: IOrderTemplateBulkActionsProps,\r\n state: IOrderTemplateBulkActionsState\r\n ): IOrderTemplateBulkActionsState {\r\n const selectedLines = props.selectedLines.length;\r\n const hasDisabledLine = props.selectedLines.some(line => line.shouldDisable);\r\n let nextState = { ...state };\r\n nextState = {\r\n isAddDisabled: selectedLines === 0 || hasDisabledLine,\r\n isRemoveDisabled: selectedLines === 0\r\n };\r\n return nextState;\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n addLineModalLinkText,\r\n searchButtonAriaLabel,\r\n searchInputAriaLabel,\r\n searchModalPlaceholderText,\r\n selectCatalogTitleText,\r\n selectProductButtonText,\r\n addItemToTemplateText,\r\n addLineProductUnitPricePrefix,\r\n backButtonText,\r\n decrementButtonAriaLabel,\r\n incrementButtonAriaLabel,\r\n quantitySelectLabel,\r\n addLineProductUnitOfMeasurePrefix,\r\n notFoundSearchErrorNotice,\r\n notFoundSearchErrorRedediation,\r\n searchErrorMessage,\r\n productDimensionTypeColor,\r\n productDimensionTypeConfiguration,\r\n productDimensionTypeSize,\r\n productDimensionTypeStyle,\r\n addSelectedToBagButtonText,\r\n removeSelectedToBagButtonText,\r\n searchResultsCountVerbage,\r\n searchResultsCountSubject,\r\n addToTemplateConfirmation,\r\n totalPriceLabel,\r\n progressNotificationText,\r\n addToTemplateDuplicateError,\r\n addToTemplateGenericError,\r\n dimensionMissingError\r\n } = this.props.resources;\r\n\r\n const addLineProps = {\r\n context: this.props.context,\r\n telemetryContent: this.props.telemetryContent,\r\n resources: {\r\n addLineModalLinkText,\r\n searchButtonAriaLabel,\r\n searchInputAriaLabel,\r\n searchModalPlaceholderText,\r\n selectCatalogTitleText,\r\n selectProductButtonText,\r\n addItemToTemplateText,\r\n addLineProductUnitPricePrefix,\r\n backButtonText,\r\n decrementButtonAriaLabel,\r\n incrementButtonAriaLabel,\r\n quantitySelectLabel,\r\n addLineProductUnitOfMeasurePrefix,\r\n notFoundSearchErrorNotice,\r\n notFoundSearchErrorRedediation,\r\n searchErrorMessage,\r\n productDimensionTypeColor,\r\n productDimensionTypeConfiguration,\r\n productDimensionTypeSize,\r\n productDimensionTypeStyle,\r\n searchResultsCountVerbage,\r\n searchResultsCountSubject,\r\n addToTemplateConfirmation,\r\n totalPriceLabel,\r\n progressNotificationText,\r\n addToTemplateDuplicateError,\r\n addToTemplateGenericError,\r\n dimensionMissingError\r\n },\r\n imageSettings: this.props.config.imageSettings,\r\n orderTemplateId: this.props.orderTemplateId,\r\n isMultipleCatalogFeatureEnabledInHq: this.props.isMultipleCatalogFeatureEnabledInHq,\r\n catalogs: this.props.data.catalogs?.result\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {!this.props.isMinifiedView && addSelectedToBagButtonText}\r\n \r\n \r\n \r\n {!this.props.isMinifiedView && removeSelectedToBagButtonText}\r\n \r\n \r\n );\r\n }\r\n\r\n private readonly addHandler = (event: React.MouseEvent) => {\r\n const shouldDisable = this.props.selectedLines.some(line => line.shouldDisable);\r\n\r\n if (!shouldDisable) {\r\n this.setState({ isAddDisabled: true });\r\n\r\n this.props.onAddSelectionToBag();\r\n\r\n this.setState({ isAddDisabled: false });\r\n }\r\n };\r\n\r\n private readonly removeHandler = (event: React.MouseEvent) => {\r\n this.setState({\r\n isRemoveDisabled: true\r\n });\r\n\r\n this.props.onRemoveSelection();\r\n };\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n AddOrderTemplateToCartComponent,\r\n ILinesAddedToCartDialogResources,\r\n IOrderTemplateNameDialogResources,\r\n RenameOrderTemplateComponent,\r\n OrderTemplateNameDialog\r\n} from '@msdyn365-commerce/components';\r\nimport { IComponentProps, ICoreContext } from '@msdyn365-commerce/core';\r\nimport { ProductList } from '@msdyn365-commerce/retail-proxy';\r\nimport { OrderTemplate, Random } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, ITelemetryContent, Popover } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { useState } from 'react';\r\n\r\nexport interface IOrderTemplateActionsData {\r\n orderTemplate: OrderTemplate;\r\n}\r\n\r\nexport interface IOrderTemplateActionsProps extends IComponentProps {\r\n context: ICoreContext;\r\n telemetryContent?: ITelemetryContent;\r\n handlers: {\r\n onRemoveTemplate(orderTemplateId: string): void;\r\n onRenameTemplate(orderTemplate: ProductList): Promise;\r\n };\r\n renameOrderTemplateDialogStrings: IOrderTemplateNameDialogResources;\r\n isMultipleCatalogFeatureEnabledInHq?: boolean;\r\n resources: {\r\n addTemplateToBagButtonText: string;\r\n renameTemplateButtonText: string;\r\n deleteTemplateButtonText: string;\r\n closeWindowButtonText: string;\r\n addToCartFailureMessage: string;\r\n addToCartSuccessMessage: string;\r\n addToCartProcessMessage: string;\r\n orderTemplateErrorMessage: string;\r\n linesAddedToCartDialogResources: ILinesAddedToCartDialogResources;\r\n };\r\n}\r\n\r\nexport interface IOrderTemplateActionsViewProps {\r\n addTemplateToBag: React.ReactNode;\r\n renameTemplate?: React.ReactNode;\r\n removeTemplate?: React.ReactNode;\r\n isMultipleCatalogsFeatureEnabled?: boolean;\r\n actionsSplitButton?: React.ReactNode;\r\n}\r\n\r\n/**\r\n * Remove Order Action.\r\n * @param props -Order template action props.\r\n * @returns Remove order template.\r\n */\r\nconst removeOrderActionHandler = (props: IOrderTemplateActionsProps) => () => {\r\n _removeOrderTemplate(props);\r\n};\r\n\r\nexport const OrderTemplateActionsView = (props: IOrderTemplateActionsProps): IOrderTemplateActionsViewProps => {\r\n const { resources, isMultipleCatalogFeatureEnabledInHq } = props;\r\n const { deleteTemplateButtonText } = resources;\r\n\r\n return {\r\n addTemplateToBag: _getOrderTemplateAddToCartDialog(props),\r\n renameTemplate: !isMultipleCatalogFeatureEnabledInHq && _getOrderTemplateRenameControl(props),\r\n removeTemplate: !isMultipleCatalogFeatureEnabledInHq && (\r\n \r\n ),\r\n actionsSplitButton: isMultipleCatalogFeatureEnabledInHq && \r\n };\r\n};\r\n\r\nconst _removeOrderTemplate = (props: IOrderTemplateActionsProps): void => {\r\n const {\r\n data: { orderTemplate },\r\n handlers\r\n } = props;\r\n const { onRemoveTemplate } = handlers;\r\n\r\n if (onRemoveTemplate) {\r\n onRemoveTemplate(orderTemplate.productList.Id);\r\n }\r\n};\r\n\r\nconst _getOrderTemplateAddToCartDialog = (props: IOrderTemplateActionsProps): React.ReactNode => {\r\n const {\r\n data: { orderTemplate },\r\n typeName,\r\n id,\r\n context,\r\n telemetryContent,\r\n resources,\r\n isMultipleCatalogFeatureEnabledInHq\r\n } = props;\r\n const {\r\n addTemplateToBagButtonText,\r\n closeWindowButtonText,\r\n addToCartFailureMessage,\r\n addToCartSuccessMessage,\r\n addToCartProcessMessage,\r\n orderTemplateErrorMessage,\r\n linesAddedToCartDialogResources\r\n } = resources;\r\n\r\n const dialogStrings = {\r\n closeWindowButtonText,\r\n addToCartFailureMessage,\r\n addToCartSuccessMessage,\r\n addToCartProcessMessage,\r\n orderTemplateErrorMessage,\r\n linesAddedToCartDialogResources\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst _getOrderTemplateRenameControl = (props: IOrderTemplateActionsProps): React.ReactNode => {\r\n const { renameOrderTemplateDialogStrings, resources, context, handlers } = props;\r\n return (\r\n \r\n );\r\n};\r\n\r\nlet buttonEventReference: HTMLButtonElement | undefined;\r\nexport const ActionsSplitButton: React.FC = (props: IOrderTemplateActionsProps) => {\r\n const [isStatementRequestAdminDropdownOpen, setIsStatementRequestAdminDropdownOpen] = useState(false);\r\n const [renameOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = React.useState(false);\r\n\r\n const onOrderTemplateNameCancel = () => {\r\n context.telemetry.debug('Rename of template was canceled.');\r\n buttonEventReference?.focus();\r\n };\r\n\r\n const onRenameButtonClick = (event: React.MouseEvent) => {\r\n buttonEventReference = event.target as HTMLButtonElement;\r\n setOrderTemplateNameDialogOpen(true);\r\n event.preventDefault();\r\n };\r\n const onToggleDropdown1 = () => {\r\n setIsStatementRequestAdminDropdownOpen(!isStatementRequestAdminDropdownOpen);\r\n };\r\n const {\r\n data: { orderTemplate },\r\n resources,\r\n renameOrderTemplateDialogStrings,\r\n context\r\n } = props;\r\n\r\n const className = 'ms-order-template-action-bar';\r\n\r\n const popoverReference = React.createRef();\r\n const renderModalPopup = (\r\n \r\n );\r\n const requestStatementDropdownString = `request-statement-dropdown-id-${Random.Guid.generateGuid()}`;\r\n\r\n return (\r\n
\r\n {renderModalPopup}\r\n \r\n {'Options'}\r\n \r\n \r\n \r\n\r\n \r\n {'Delete'}\r\n \r\n \r\n
\r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { ICoreContext, IImageSettings, Image, ITelemetry } from '@msdyn365-commerce/core';\r\nimport { ProductListLine } from '@msdyn365-commerce/retail-proxy';\r\nimport { ProductCatalog, ProductPrice, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { ArrayExtensions, getFallbackImageUrl, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport React, { useState } from 'react';\r\n\r\nimport { IOrderTemplateLineViewModel } from '../gdn-order-template';\r\nimport OrderTemplateQuantity from './common/gdn-order-template-quantity';\r\n\r\nexport interface IOrderTemplateLineProps extends ProductListLine {\r\n orderTemplateLine: IOrderTemplateLineViewModel;\r\n productListLine: ProductListLine;\r\n price?: ProductPrice;\r\n context: ICoreContext;\r\n productUrl: string;\r\n imageSettings?: IImageSettings;\r\n telemetry: ITelemetry;\r\n moduleId: string;\r\n moduleTypeName: string;\r\n quantity: number;\r\n isQuantityDisabledForUpdate?: boolean;\r\n handlers: {\r\n onAddToBag(product: SimpleProduct, quantity: number, itemKey: string, catalogId?: number | undefined): void;\r\n onRemoveItem(line: IOrderTemplateLineViewModel): void;\r\n onChangeQuantity(orderTemplateLineId: string, quantity: number, props?: IOrderTemplateLineProps): void;\r\n onSelect(line: IOrderTemplateLineViewModel, isChecked: boolean): void;\r\n };\r\n resources: {\r\n selectOneRowText?: string;\r\n moreButtonText?: string;\r\n viewProductDetailsText?: string;\r\n productDimensionTypeColor: string;\r\n productDimensionTypeSize: string;\r\n productDimensionTypeStyle: string;\r\n originalPriceText: string;\r\n currentPriceText: string;\r\n freePriceText: string;\r\n inputQuantityAriaLabel: string;\r\n removeFromOrderTemplateLinesText: string;\r\n addToBagButtonText: string;\r\n deleteButtonText: string;\r\n incrementButtonAriaLabel?: string;\r\n decrementButtonAriaLabel?: string;\r\n editOrderTemplateLineQuantityError?: string;\r\n unavailableProductErrorMessage?: string;\r\n outOfStockProductErrorMessage?: string;\r\n };\r\n index: number;\r\n isMobile: boolean;\r\n productQuantityView?: React.ReactNode;\r\n addToBagButton?: React.ReactNode;\r\n removeButton?: React.ReactNode;\r\n toggleDetailsDisplayed(props: IOrderTemplateLineProps): void;\r\n isMultipleCatalogFeatureEnabledInHq?: boolean;\r\n catalogs?: ProductCatalog[];\r\n error?: string;\r\n shouldDisable?: boolean;\r\n}\r\n\r\nexport interface IOrderTemplateLineViewProps {\r\n key?: string;\r\n productImage: React.ReactNode;\r\n productPrice?: React.ReactNode;\r\n addToBagButton?: React.ReactNode;\r\n removeButton?: React.ReactNode;\r\n productName?: string;\r\n productNumber?: React.ReactNode;\r\n productInfo?: React.ReactNode;\r\n productLabel?: React.ReactNode;\r\n productUnitOfMeasure?: React.ReactNode;\r\n productQuantity?: number;\r\n productQuantityView?: React.ReactNode;\r\n productListId?: string;\r\n selectLine?: React.ReactNode;\r\n popUp?: JSX.Element;\r\n extraActionsPopup?: JSX.Element | null | undefined;\r\n isMobile?: boolean;\r\n isMultipleCatalogFeatureEnabledInHq?: boolean;\r\n productLineCatalog?: React.ReactNode;\r\n disabled?: boolean;\r\n}\r\n\r\ninterface IEventHandlerFactory {\r\n getAddToBag(): (event: React.MouseEvent) => void;\r\n getRemoveItem(): (event: React.MouseEvent) => void;\r\n}\r\n\r\nconst OrderTemplateLineActions = (props: IOrderTemplateLineProps): IEventHandlerFactory => {\r\n const { orderTemplateLine, productListLine, quantity, handlers } = props;\r\n const { LineId, CatalogId } = productListLine;\r\n const { onAddToBag, onRemoveItem } = handlers;\r\n\r\n return {\r\n getAddToBag: () => (event: React.MouseEvent) => {\r\n LineId &&\r\n orderTemplateLine.fullProduct &&\r\n onAddToBag(orderTemplateLine.fullProduct.ProductDetails, quantity, LineId, CatalogId);\r\n },\r\n getRemoveItem: () => (event: React.MouseEvent) => LineId && onRemoveItem(props.orderTemplateLine)\r\n };\r\n};\r\n\r\ninterface IPopupProps extends IOrderTemplateLineProps {\r\n addButtonClassName: string;\r\n removeButtonClassName: string;\r\n}\r\n\r\nconst PopUp = (props: IPopupProps): JSX.Element | null => {\r\n const { addToBagButtonText, removeFromOrderTemplateLinesText, moreButtonText, viewProductDetailsText } = props.resources;\r\n const [showMobile, setShowMobile] = useState(false);\r\n const componentClassName = 'ms-table';\r\n\r\n const getViewHandler = () => (event: React.MouseEvent) => {\r\n props.toggleDetailsDisplayed(props);\r\n };\r\n\r\n const toggle = React.useCallback(() => {\r\n setShowMobile(!showMobile);\r\n }, [showMobile]);\r\n\r\n return (\r\n
\r\n \r\n {showMobile && (\r\n
\r\n \r\n View\r\n \r\n {getActionButton(\r\n props.isMobile,\r\n props.removeButtonClassName,\r\n removeFromOrderTemplateLinesText,\r\n OrderTemplateLineActions(props).getRemoveItem()\r\n )}\r\n {getActionButton(\r\n props.isMobile,\r\n props.addButtonClassName,\r\n addToBagButtonText,\r\n OrderTemplateLineActions(props).getAddToBag()\r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nconst getActionButton = (\r\n isMobile: boolean,\r\n className: string,\r\n buttonText: string,\r\n clickHandler: (event: React.MouseEvent) => void\r\n): React.ReactNode => (\r\n \r\n);\r\n\r\nconst getDesktopActionButton = (\r\n className: string,\r\n buttonText: string,\r\n clickHandler: (event: React.MouseEvent) => void\r\n): React.ReactNode => (\r\n \r\n);\r\n/**\r\n * On Select line function.\r\n * @param orderTemplateLine -Order template line.\r\n * @param input -Order template line props.\r\n * @returns Set on select order template.\r\n */\r\nconst onSelectLineHandler = (orderTemplateLine: IOrderTemplateLineViewModel, input: IOrderTemplateLineProps) => (\r\n event: React.ChangeEvent\r\n) => {\r\n orderTemplateLine.isChecked = !orderTemplateLine.isChecked;\r\n\r\n input.handlers.onSelect(orderTemplateLine, event.target.checked);\r\n};\r\n\r\nexport const OrderTemplateLineView = (input: IOrderTemplateLineProps): IOrderTemplateLineViewProps | null => {\r\n const {\r\n orderTemplateLine,\r\n productListLine,\r\n price,\r\n context,\r\n imageSettings,\r\n quantity,\r\n resources,\r\n isMobile,\r\n isMultipleCatalogFeatureEnabledInHq\r\n } = input;\r\n const product = orderTemplateLine.fullProduct;\r\n const { LineId, UnitOfMeasure } = productListLine;\r\n const { removeFromOrderTemplateLinesText, addToBagButtonText, selectOneRowText } = resources;\r\n if (!product) {\r\n return null;\r\n }\r\n\r\n const { ItemId, PrimaryImageUrl } = product.ProductDetails;\r\n const fallbackImage = getFallbackImageUrl(\r\n ItemId,\r\n context.actionContext.requestContext.apiSettings,\r\n context.request.app?.config?.OmniChannelMedia\r\n );\r\n const addButtonClassName = input.isMobile ? 'ms-table__row-links-add' : 'ms-order-template-table-line__product-add-button';\r\n const removeButtonClassName = input.isMobile ? 'ms-table__row-links-delete' : 'ms-order-template-table-line__product-remove-button';\r\n\r\n return {\r\n isMobile,\r\n isMultipleCatalogFeatureEnabledInHq: isMultipleCatalogFeatureEnabledInHq,\r\n selectLine: (\r\n \r\n ),\r\n key: LineId!,\r\n productLineCatalog: isMultipleCatalogFeatureEnabledInHq && renderProductCatalog(input),\r\n productImage: _renderProductImage(\r\n 'ms-order-template-table-line__product-image',\r\n context,\r\n product.ProductDetails.Name!,\r\n PrimaryImageUrl,\r\n fallbackImage,\r\n imageSettings\r\n ),\r\n productInfo: renderProductInfo(input),\r\n productPrice: price && _renderPrice(input),\r\n productNumber: product && (\r\n <>\r\n
{ItemId}
\r\n {input.error !== '' ? (\r\n
{_renderProductError(input)}
\r\n ) : (\r\n undefined\r\n )}\r\n \r\n ),\r\n productUnitOfMeasure: price ? (\r\n
{UnitOfMeasure || price.UnitOfMeasure}
\r\n ) : (\r\n undefined\r\n ),\r\n productListId: LineId!,\r\n removeButton:\r\n !isMultipleCatalogFeatureEnabledInHq &&\r\n getActionButton(\r\n input.isMobile,\r\n removeButtonClassName,\r\n removeFromOrderTemplateLinesText,\r\n OrderTemplateLineActions(input).getRemoveItem()\r\n ),\r\n productQuantityView:
{_generateQuantity(input, LineId!)}
,\r\n productQuantity: quantity,\r\n addToBagButton:\r\n !isMultipleCatalogFeatureEnabledInHq &&\r\n getActionButton(input.isMobile, addButtonClassName, addToBagButtonText, OrderTemplateLineActions(input).getAddToBag()),\r\n extraActionsPopup:\r\n !isMobile && isMultipleCatalogFeatureEnabledInHq ? (\r\n \r\n ) : (\r\n undefined\r\n ),\r\n popUp: ,\r\n disabled: input.shouldDisable\r\n };\r\n};\r\n\r\nconst ExtraActionsPopup = (props: IPopupProps): JSX.Element | null => {\r\n const [showActions, setShowActions] = useState(false);\r\n const toggle = React.useCallback(() => {\r\n setShowActions(!showActions);\r\n }, [showActions]);\r\n\r\n const className = 'ms-order-template-table-line__extra-actions-cell';\r\n const actionsContainerClassName = `${className}__actions-container`;\r\n return (\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport const OrderTemplateMobileLineView = (input: IOrderTemplateLineProps): IOrderTemplateLineViewProps | undefined => {\r\n const { orderTemplateLine, productListLine, price, context, imageSettings, isMultipleCatalogFeatureEnabledInHq } = input;\r\n const product = orderTemplateLine.fullProduct;\r\n const { LineId, UnitOfMeasure } = productListLine;\r\n if (!product) {\r\n return;\r\n }\r\n const { ItemId, PrimaryImageUrl } = product.ProductDetails;\r\n const fallbackImage = getFallbackImageUrl(\r\n ItemId,\r\n context.actionContext.requestContext.apiSettings,\r\n context.request.app?.config?.OmniChannelMedia\r\n );\r\n\r\n return {\r\n productLineCatalog: isMultipleCatalogFeatureEnabledInHq && renderProductCatalog(input),\r\n productImage: _renderProductImage(\r\n 'thumbnail',\r\n context,\r\n product.ProductDetails.Name!,\r\n PrimaryImageUrl,\r\n fallbackImage,\r\n imageSettings\r\n ),\r\n productInfo: renderProductInfo(input),\r\n productPrice: price && _renderPrice(input),\r\n productNumber: ItemId,\r\n productUnitOfMeasure: UnitOfMeasure || price?.UnitOfMeasure,\r\n productQuantityView: _generateQuantity(input, LineId!)\r\n };\r\n};\r\n\r\nexport interface IOrderTemplateProductQuantityViewProps {\r\n ContainerProps: INodeProps;\r\n input: React.ReactNode;\r\n}\r\n\r\n/**\r\n * On Change function.\r\n * @param onChangeQuantity -On change quantity function.\r\n * @param itemKey -String.\r\n * @param props -Order template line props.\r\n * @returns Set change quantity.\r\n */\r\nconst onChangeHandler = (\r\n onChangeQuantity: (orderTemplateLineId: string, quantity: number, props?: IOrderTemplateLineProps | undefined) => void,\r\n itemKey: string,\r\n props: IOrderTemplateLineProps\r\n) => (newValue: number) => {\r\n if (onChangeQuantity) {\r\n onChangeQuantity(itemKey, newValue, props);\r\n }\r\n};\r\n\r\nconst _generateQuantity = (props: IOrderTemplateLineProps, itemKey: string): React.ReactNode => {\r\n const { handlers, resources, quantity } = props;\r\n const { onChangeQuantity } = handlers;\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const _renderProductImage = (\r\n className: string,\r\n context: ICoreContext,\r\n heading: string,\r\n image?: string,\r\n fallbackImage?: string,\r\n imageSettings?: IImageSettings\r\n): JSX.Element | null => {\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\r\n lg: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\r\n xl: { q: 'w=64&h=64&m=6', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const renderProductCatalog = (props: IOrderTemplateLineProps) => {\r\n const catalogId = props.productListLine.CatalogId;\r\n validateCatalogId(catalogId);\r\n\r\n if (!props.context.request.user.isB2b || !catalogId || !ArrayExtensions.hasElements(props.catalogs)) {\r\n return null;\r\n }\r\n\r\n const catalog = props.catalogs.find(item => item.RecordId === catalogId);\r\n\r\n if (!catalog || !catalog.Name) {\r\n return null;\r\n }\r\n\r\n return
{catalog.Name}
;\r\n};\r\n\r\nconst _renderPrice = (props: IOrderTemplateLineProps): JSX.Element | null => {\r\n const { price, context, moduleId, moduleTypeName, resources } = props;\r\n\r\n if (price) {\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst _renderProductDimensions = (props: IOrderTemplateLineProps): (string | undefined)[] => {\r\n const { orderTemplateLine } = props;\r\n\r\n if (!orderTemplateLine.fullProduct || !orderTemplateLine.fullProduct.ProductDetails.Dimensions) {\r\n return [];\r\n }\r\n\r\n return orderTemplateLine.fullProduct.ProductDetails.Dimensions.map(dimension => {\r\n if (!dimension.DimensionValue || !dimension.DimensionValue.Value) {\r\n return undefined;\r\n }\r\n\r\n return dimension.DimensionValue.Value;\r\n });\r\n};\r\n\r\nconst _renderProductError = (props: IOrderTemplateLineProps) => {\r\n const { error } = props;\r\n if (!error) {\r\n return '';\r\n }\r\n return error;\r\n\r\n // const errorMessages = {\r\n // OOS: resources.outOfStockProductErrorMessage,\r\n // UNASSORTED: resources.unavailableProductErrorMessage,\r\n // NONE: ''\r\n // };\r\n\r\n // return errorMessages[error];\r\n};\r\n\r\nexport const renderProductInfo = (props: IOrderTemplateLineProps): React.ReactNode | undefined => {\r\n const { orderTemplateLine, productUrl } = props;\r\n const name = orderTemplateLine.fullProduct?.ProductDetails.Name;\r\n\r\n const dimensions = _renderProductDimensions(props);\r\n if (!orderTemplateLine.fullProduct) {\r\n return [];\r\n }\r\n\r\n const productName = productUrl ? (\r\n \r\n {name}\r\n \r\n ) : (\r\n
{name}
\r\n );\r\n\r\n const dimensionsLine: string = dimensions.join(', ');\r\n\r\n return (\r\n
\r\n
{productName}
\r\n
{dimensionsLine}
\r\n
\r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateLineViewModel } from '../gdn-order-template';\r\n\r\nexport interface IOrderTemplateTableHeadingProps {\r\n selectAllRowsText?: string;\r\n productNumber: string;\r\n productName: string;\r\n productUnitPrice: string;\r\n productUOM: string;\r\n productQuantity: string;\r\n productActions: string;\r\n lines: IOrderTemplateLineViewModel[];\r\n isMobile: boolean;\r\n clickHandler(isChecked: boolean): void;\r\n productImage?: string;\r\n isMultipleCatalogFeatureEnabledInHq?: boolean;\r\n productLineCatalogName?: string;\r\n}\r\n\r\n/**\r\n * Order Template's table state.\r\n */\r\nexport interface IOrderTemplateTableHeadingState {\r\n isChecked: boolean;\r\n}\r\n\r\nexport interface IOrderTemplateTableShortHeading {\r\n productNumber: string;\r\n productActions: string;\r\n}\r\n\r\n/**\r\n * Order Template's table heading.\r\n */\r\nexport class OrderTemplateTableHeading extends React.PureComponent {\r\n public state: IOrderTemplateTableHeadingState = {\r\n isChecked: false\r\n };\r\n\r\n private readonly componentClassName: string = 'ms-table';\r\n\r\n public static getDerivedStateFromProps(\r\n props: IOrderTemplateTableHeadingProps,\r\n state: IOrderTemplateTableHeadingState\r\n ): IOrderTemplateTableHeadingState {\r\n const checkedLines = props.lines.filter(line => !line.isChecked).length;\r\n let nextState = { ...state };\r\n nextState = { isChecked: checkedLines === 0 };\r\n return nextState;\r\n }\r\n\r\n public getOnChange = () => (event: React.ChangeEvent) => {\r\n this.setState(\r\n {\r\n isChecked: this.state.isChecked\r\n },\r\n () => {\r\n this.props.clickHandler(!this.state.isChecked);\r\n }\r\n );\r\n };\r\n\r\n public render(): JSX.Element {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {!this.props.isMobile && this.props.isMultipleCatalogFeatureEnabledInHq ? (\r\n {this.props.productLineCatalogName}\r\n ) : null}\r\n {!this.props.isMobile ? {this.props.productImage} : null}\r\n {this.props.productNumber}\r\n {!this.props.isMobile ? {this.props.productName} : null}\r\n {!this.props.isMobile ? {this.props.productUnitPrice} : null}\r\n {!this.props.isMobile ? {this.props.productUOM} : null}\r\n {!this.props.isMobile ? {this.props.productQuantity} : null}\r\n {!this.props.isMobile ? {this.props.productActions} : }\r\n \r\n \r\n );\r\n }\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n addOrderTemplateToCartStatus,\r\n // AddOrderTemplateToCartComponent,\r\n IItemAddedToCartDialogData,\r\n IItemAddedToCartDialogResources,\r\n ILinesAddedToCartDialogResources,\r\n IOrderTemplateNameDialogResources,\r\n ItemAddedToCartDialog,\r\n LinesAddedToCartDialog,\r\n RenameOrderTemplateComponent\r\n} from '@msdyn365-commerce/components';\r\nimport MsDyn365, { AsyncResult, getCatalogId, getUrlSync, ICoreContext, IRequestContext } from '@msdyn365-commerce/core';\r\nimport { getCartState, ICartActionResult } from '@msdyn365-commerce/global-state';\r\nimport {\r\n // IQueryResultSettings,\r\n ProductList,\r\n ProductListLine\r\n} from '@msdyn365-commerce/retail-proxy';\r\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\r\nimport {\r\n deleteAsync,\r\n removeProductListLinesAsync,\r\n updateProductListLinesAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\r\nimport { CartLine, FeatureState, QueryResultSettings, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport {\r\n ArrayExtensions,\r\n createGetFeatureStateInput,\r\n getFeatureState,\r\n // GetFullOrderTemplateInput,\r\n getPriceForSelectedVariant,\r\n getProductUrlSync,\r\n ObjectExtensions,\r\n OrderTemplate,\r\n OrderTemplateLine,\r\n PriceForSelectedVariantInput,\r\n // getFullOrderTemplate,\r\n // QueryResultSettingsProxy,\r\n StringExtensions\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Alert,\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n Heading,\r\n IModuleProps,\r\n INodeProps,\r\n IPopupProductsProps,\r\n ITelemetryContent,\r\n PopupProducts,\r\n TelemetryConstant,\r\n UncontrolledPagination\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport debounce from 'lodash/debounce';\r\nimport { action, computed, observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n ActionsSplitButton,\r\n IOrderTemplateActionsProps,\r\n IOrderTemplateActionsViewProps,\r\n IOrderTemplateLineProps,\r\n IOrderTemplateLineViewProps,\r\n IOrderTemplateTableHeadingProps,\r\n // OrderTemplateActionsView,\r\n OrderTemplateLinesStatusMessage,\r\n // OrderTemplateLineView,\r\n OrderTemplateMobileLineView,\r\n OrderTemplateTableHeading\r\n} from '@msdyn365-commerce-modules/order-template';\r\nimport { ActiveOrderTemplateLinesInput } from './actions/get-gdn-order-template';\r\nimport { OrderTemplateBulkActions, OrderTemplateLineView } from './components';\r\nimport { IGdnOrderTemplateData } from './gdn-order-template.data';\r\nimport { IGdnOrderTemplateProps, IGdnOrderTemplateResources } from './gdn-order-template.props.autogenerated';\r\nimport Spinner from './components/add-line/spinner';\r\nimport { GetPaginatedOrderTemplateLinesInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getPaginatedOrderTemplateLinesAction } from '../../actions/get-paginated-order-template-lines.action';\r\nimport { addCartLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\n\r\nexport interface IOrderTemplateLineActionMessageState {\r\n itemKey: string;\r\n userMessage: string;\r\n statusCssString: string;\r\n messageGlyph: string;\r\n isOpen: boolean;\r\n isItemAddedToOrderTemplateOpen: boolean;\r\n isConfirmAddSelectionToBagModalOpen: boolean;\r\n itemAddedToCartDialogData?: IItemAddedToCartDialogData;\r\n productSelection: IOrderTemplateLineViewModel[];\r\n isDetailsDisplayed: boolean;\r\n detailedProductView?: IOrderTemplateLineViewProps;\r\n isQuantityDisabledForUpdate?: boolean;\r\n uploadStatus: addOrderTemplateToCartStatus;\r\n modalOpen: boolean;\r\n addedLinesCount: number;\r\n linesAddedToCartDialogOpen: boolean;\r\n errorMessage: string;\r\n}\r\n\r\nexport interface IDialogStrings {\r\n closeWindowButtonText: string;\r\n addToCartFailureMessage: string;\r\n addToCartSuccessMessage: string;\r\n addToCartProcessMessage: string;\r\n orderTemplateErrorMessage: string;\r\n linesAddedToCartDialogResources: any;\r\n}\r\n\r\nexport type orderTemplateLinesStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\r\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface IOrderTemplateViewProps extends IGdnOrderTemplateProps {\r\n OrderTemplateLines: IModuleProps;\r\n callbacks?: IOrderTemplateLinesCallbacks;\r\n status?: orderTemplateLinesStatus;\r\n statusMessage?: React.ReactNode;\r\n heading?: React.ReactNode;\r\n OrderTemplateActions?: INodeProps;\r\n ProductsTable?: INodeProps;\r\n ProductsTableRow?: INodeProps;\r\n ProductsTableHeading?: React.ReactNode;\r\n ProductDetails?: INodeProps;\r\n orderLines?: IOrderTemplateLineViewProps[];\r\n productListLines?: ProductListLine[];\r\n productsStatusMessage?: React.ReactNode;\r\n orderActions?: IOrderTemplateActionsViewProps | null;\r\n resources: IGdnOrderTemplateResources;\r\n pagination?: React.ReactNode;\r\n itemAddedToCartDialog?: React.ReactNode;\r\n bulkOrderLineActions?: React.ReactNode;\r\n isDetailsDisplayed?: boolean;\r\n detailedProduct?: IOrderTemplateLineProps;\r\n detailedProductView?: IOrderTemplateLineViewProps;\r\n productQuantityView?: React.ReactNode;\r\n addButton?: React.ReactNode;\r\n isMobile?: boolean;\r\n toggleDetailsDisplayed?(props: IOrderTemplateLineProps | undefined): void;\r\n}\r\n\r\nexport interface IOrderTemplateLinesCallbacks {\r\n updateQuantity(itemKey: string, quantity: number): void;\r\n}\r\n\r\nexport interface IOrderTemplateLineViewModel extends OrderTemplateLine {\r\n isChecked: boolean;\r\n productQuantityView: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * OrderTemplateLines component.\r\n * @extends {React.PureComponent, IOrderTemplateLineActionMessageState>}\r\n */\r\n@observer\r\nclass OrderTemplateLines extends React.Component, IOrderTemplateLineActionMessageState> {\r\n private readonly className: string;\r\n\r\n private readonly telemetryContent?: ITelemetryContent;\r\n\r\n @observable\r\n private _viewport: GridSize;\r\n\r\n @computed get isMobile(): boolean {\r\n return this._viewport === 'xs' || this._viewport === 'sm';\r\n }\r\n\r\n constructor(props: IGdnOrderTemplateProps, state: IOrderTemplateLineActionMessageState) {\r\n super(props);\r\n this.className = 'ms-order-template';\r\n this._viewport =\r\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this._updateViewport = this._updateViewport.bind(this);\r\n\r\n this.state = {\r\n itemKey: '',\r\n userMessage: '',\r\n statusCssString: 'success',\r\n messageGlyph: 'fas fa-check',\r\n isOpen: false,\r\n isItemAddedToOrderTemplateOpen: false,\r\n isConfirmAddSelectionToBagModalOpen: false,\r\n productSelection: [],\r\n isDetailsDisplayed: false,\r\n isQuantityDisabledForUpdate: false,\r\n uploadStatus: 'WAITING',\r\n modalOpen: false,\r\n addedLinesCount: 0,\r\n linesAddedToCartDialogOpen: false,\r\n errorMessage: ''\r\n };\r\n\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this._updateViewport();\r\n\r\n if (MsDyn365.isBrowser && !this.props.context.request.user.isAuthenticated && !this.props.context.request.params.isEditor) {\r\n window.location.assign(this.props.context.request.user.signInUrl || '/');\r\n }\r\n }\r\n\r\n @action\r\n public async componentDidMount(): Promise {\r\n this.setState({});\r\n const orderTemplate = await this.props.data.orderTemplate;\r\n this.props.config.heading!.text = orderTemplate?.productList.Name || '';\r\n this.setState({\r\n productSelection: orderTemplate?.orderTemplateLines as IOrderTemplateLineViewModel[]\r\n });\r\n\r\n if (MsDyn365.isBrowser) {\r\n window.addEventListener('resize', this._updateViewport);\r\n this._updateViewport();\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.removeEventListener('resize', this._updateViewport);\r\n }\r\n }\r\n\r\n public shouldComponentUpdate(\r\n nextProps: IGdnOrderTemplateProps,\r\n nextState: IOrderTemplateLineActionMessageState\r\n ): boolean {\r\n if (this.state === nextState && this.props === nextProps) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { heading, className } = this.props.config;\r\n const { emptyOrderTemplateLinesText, errorGettingOrderTemplateLines } = this.props.resources;\r\n const { orderTemplate, cart } = this.props.data;\r\n\r\n if (cart.status === 'LOADING' || ObjectExtensions.isNullOrUndefined(orderTemplate) || orderTemplate.status === 'LOADING') {\r\n const errorProps: IOrderTemplateViewProps = {\r\n ...(this.props as IGdnOrderTemplateProps),\r\n OrderTemplateLines: {\r\n moduleProps: this.props,\r\n className: classnames(this.className, className)\r\n },\r\n status: 'LOADING',\r\n statusMessage: ,\r\n heading: heading && ,\r\n resources: this.props.resources\r\n };\r\n return this.props.renderView(errorProps);\r\n }\r\n\r\n if (cart.status === 'FAILED' || orderTemplate.status === 'FAILED') {\r\n const errorProps: IOrderTemplateViewProps = {\r\n ...(this.props as IGdnOrderTemplateProps),\r\n OrderTemplateLines: {\r\n moduleProps: this.props,\r\n className: classnames(`${this.className}`, className)\r\n },\r\n status: 'FAILED',\r\n statusMessage: ,\r\n heading: heading && ,\r\n resources: this.props.resources\r\n };\r\n\r\n return this.props.renderView(errorProps);\r\n }\r\n\r\n const orderTemplateResult = orderTemplate && orderTemplate.result;\r\n const orderTemplateLines = orderTemplateResult && orderTemplateResult.orderTemplateLines;\r\n\r\n if (!orderTemplateResult || !orderTemplateLines || orderTemplateLines.length === 0) {\r\n if (orderTemplateResult && !this._isFirstPage() && MsDyn365.isBrowser) {\r\n window.location.href = this._getOrderTemplatePageUrl();\r\n return null;\r\n }\r\n\r\n const emptyViewProps: IOrderTemplateViewProps = {\r\n ...(this.props as IGdnOrderTemplateProps),\r\n OrderTemplateLines: {\r\n moduleProps: this.props,\r\n className: classnames(`${this.className}`, className)\r\n },\r\n status: 'EMPTY',\r\n statusMessage: ,\r\n heading: heading && ,\r\n resources: this.props.resources,\r\n orderActions:\r\n orderTemplateResult &&\r\n this._renderOrderTemplateActions(orderTemplateResult, this._isChannelMultipleCatalogsFeatureEnabled()),\r\n bulkOrderLineActions: orderTemplateResult && this._getOrderTemplateLineActions(orderTemplateResult.productList.Id),\r\n OrderTemplateActions: {\r\n className: `${this.className}-action-bar`,\r\n tag: 'div'\r\n }\r\n };\r\n\r\n return this.props.renderView(emptyViewProps);\r\n }\r\n\r\n const viewProps: IOrderTemplateViewProps = {\r\n ...(this.props as IGdnOrderTemplateProps),\r\n OrderTemplateLines: {\r\n moduleProps: this.props,\r\n className: classnames(`${this.className}`, className)\r\n },\r\n status: 'SUCCESS',\r\n productsStatusMessage: this.state.isOpen && (\r\n
\r\n \r\n {this.state.userMessage}\r\n \r\n
\r\n ),\r\n heading: heading && ,\r\n OrderTemplateActions: {\r\n className: `${this.className}-action-bar`,\r\n tag: 'div'\r\n },\r\n ProductsTable: {\r\n className: `${this.className}__table`,\r\n tag: 'table',\r\n role: 'grid'\r\n },\r\n ProductsTableRow: {\r\n className: `${this.className}-table-line`,\r\n tag: 'tr'\r\n },\r\n ProductsTableHeading: this._renderProductListHeader(this.props.resources),\r\n ProductDetails: {\r\n className: `${this.className}-table-line__link`,\r\n tag: 'a'\r\n },\r\n orderLines: this._renderProductList(),\r\n callbacks: { updateQuantity: debounce(this._changeQuantity, 2000) },\r\n orderActions: this._renderOrderTemplateActions(orderTemplateResult, this._isChannelMultipleCatalogsFeatureEnabled()),\r\n pagination: this._renderPagination(),\r\n itemAddedToCartDialog: this._renderItemAddedToCartDialog(),\r\n bulkOrderLineActions: this._getOrderTemplateLineActions(orderTemplateResult.productList.Id),\r\n isDetailsDisplayed: this.state.isDetailsDisplayed,\r\n toggleDetailsDisplayed: this._toggleDetailsDisplayed,\r\n detailedProductView: this.state.detailedProductView,\r\n isMobile: this.isMobile\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n public onSelect(line: IOrderTemplateLineViewModel, isChecked: boolean): void {\r\n line.isChecked = isChecked;\r\n\r\n const updated =\r\n this.state.productSelection.map(product => {\r\n if (product.fullProduct?.ProductDetails.ItemId === line.fullProduct?.ProductDetails.ItemId) {\r\n line.isChecked = isChecked;\r\n }\r\n return product;\r\n }) || [];\r\n\r\n this.setState({\r\n productSelection: updated\r\n });\r\n }\r\n\r\n public onSelectAll(isChecked: boolean): void {\r\n const updated =\r\n this.state.productSelection.map(line => {\r\n line.isChecked = isChecked;\r\n return line;\r\n }) || [];\r\n\r\n this.setState({\r\n productSelection: updated\r\n });\r\n }\r\n\r\n private _renderProductListHeader(resources: IGdnOrderTemplateResources): React.ReactNode {\r\n const {\r\n productImage,\r\n productNumberText,\r\n productText,\r\n productUnitPriceText,\r\n productUOMText,\r\n productQuantityText,\r\n productActionsText,\r\n selectAllRowsText,\r\n productLineCatalogName\r\n } = resources;\r\n const headers: IOrderTemplateTableHeadingProps = {\r\n productImage: productImage,\r\n productNumber: productNumberText,\r\n productName: productText,\r\n productUnitPrice: productUnitPriceText,\r\n productUOM: productUOMText,\r\n productQuantity: productQuantityText,\r\n productActions: productActionsText,\r\n selectAllRowsText,\r\n lines: this.state.productSelection,\r\n isMobile: this.isMobile,\r\n clickHandler: (isChecked: boolean) => {\r\n this.onSelectAll(isChecked);\r\n },\r\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled(),\r\n productLineCatalogName: productLineCatalogName\r\n };\r\n\r\n return ;\r\n }\r\n\r\n private _getOrderTemplateLineActions(orderTemplateId: string): React.ReactNode {\r\n return (\r\n line.isChecked)}\r\n onAddSelectionToBag={this._onAddSelectionToBag}\r\n onRemoveSelection={this._onRemoveSelection}\r\n isMinifiedView={this.isMobile}\r\n isMultipleCatalogFeatureEnabledInHq={this._isChannelMultipleCatalogsFeatureEnabled()}\r\n telemetryContent={this.telemetryContent}\r\n />\r\n );\r\n }\r\n\r\n private _generateLinesAddedToCartDialogResources(): ILinesAddedToCartDialogResources {\r\n return {\r\n viewCartButtonText: this.props.resources.viewCartButtonText,\r\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\r\n linesAddedToCartHeaderItemsOneText: this.props.resources.linesAddedToCartHeaderItemsOneText,\r\n linesAddedToCartHeaderLinesOneText: this.props.resources.linesAddedToCartHeaderLinesOneText,\r\n linesAddedToCartHeaderLinesFormatText: this.props.resources.linesAddedToCartHeaderLinesFormatText,\r\n linesAddedToCartHeaderMessageText: this.props.resources.linesAddedToCartHeaderMessageText\r\n };\r\n }\r\n\r\n private _generateItemAddedToCartDialogResources(): IItemAddedToCartDialogResources {\r\n return {\r\n viewCartButtonText: this.props.resources.viewCartButtonText,\r\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\r\n itemAddedToCartHeaderItemOneText: this.props.resources.itemAddedToCartHeaderItemOneText,\r\n itemAddedToCartHeaderItemFormatText: this.props.resources.itemAddedToCartHeaderItemFormatText,\r\n itemAddedToCartHeaderMessageText: this.props.resources.itemAddedToCartHeaderMessageText,\r\n freePriceText: this.props.resources.freePriceText,\r\n originalPriceText: this.props.resources.originalPriceText,\r\n currentPriceText: this.props.resources.currentPriceText\r\n };\r\n }\r\n\r\n private readonly _isChannelMultipleCatalogsFeatureEnabled = (): boolean => {\r\n let isMultipleCatalogFeatureEnabledInHq = false;\r\n if (this.props.data.featureState) {\r\n isMultipleCatalogFeatureEnabledInHq =\r\n this.props.data.featureState.result?.find(\r\n feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\r\n )?.IsEnabled || false;\r\n }\r\n return isMultipleCatalogFeatureEnabledInHq;\r\n };\r\n\r\n private readonly _onRemoveSelection = (): void => {\r\n const { context, resources } = this.props;\r\n const { telemetry } = context;\r\n const { removeSelectedFailureMessage, removeSelectedSuccessMessage } = resources;\r\n const lines = this.state.productSelection;\r\n const productListLines = lines && lines.length && lines.filter(line => line.isChecked).map(line => line.productListLine);\r\n\r\n if (productListLines && productListLines.length > 0) {\r\n const productListId = productListLines[0].ProductListId;\r\n\r\n const maxWaitTimeInMilliSeconds: number = 1000;\r\n removeProductListLinesAsync({ callerContext: context.actionContext }, productListId!, productListLines)\r\n .then(async () => {\r\n this.setState({\r\n userMessage: removeSelectedSuccessMessage,\r\n statusCssString: 'success',\r\n messageGlyph: 'fas fa-check',\r\n isOpen: true\r\n });\r\n // eslint-disable-next-line no-promise-executor-return -- fix\r\n await new Promise(resolve => setTimeout(resolve, maxWaitTimeInMilliSeconds));\r\n window.location.reload();\r\n })\r\n .catch(error => {\r\n telemetry.warning('[order-template-lines] Unable remove items from the order template lines');\r\n telemetry.error(error);\r\n this.setState({\r\n userMessage: removeSelectedFailureMessage,\r\n statusCssString: 'success',\r\n messageGlyph: 'fas fa-check',\r\n isOpen: true\r\n });\r\n });\r\n }\r\n };\r\n\r\n private readonly _getOrderTemplatePageUrl = (): string => {\r\n let url = getUrlSync('ordertemplate', this.props.context.actionContext) || '';\r\n url = url.includes('?') ? url.substr(0, url.indexOf('?')) : url;\r\n if (this.props.data.orderTemplate?.result?.productList.Id) {\r\n return `${url}?id=${this.props.data.orderTemplate.result.productList.Id}`;\r\n }\r\n return '';\r\n };\r\n\r\n private readonly _onAddSelectionToBag = async (): Promise => {\r\n const lines = this.state.productSelection;\r\n const selectedLines = lines.filter(line => line.isChecked);\r\n if (selectedLines.length > 0) {\r\n for (const productLine of selectedLines) {\r\n const itemKey = productLine.fullProduct?.ProductDetails.ItemId ?? '';\r\n const product = productLine.fullProduct?.ProductDetails ?? {\r\n RecordId: 0,\r\n ProductTypeValue: 0,\r\n BasePrice: 0,\r\n Price: 0,\r\n AdjustedPrice: 0\r\n };\r\n const quantity = productLine.productListLine.Quantity ?? 0;\r\n if (this._isChannelMultipleCatalogsFeatureEnabled()) {\r\n const catalogId = productLine.productListLine.CatalogId;\r\n await this._addItemToBag(product, quantity, itemKey, catalogId);\r\n } else {\r\n await this._addItemToBag(product, quantity, itemKey);\r\n }\r\n }\r\n }\r\n return Promise.resolve(void 0);\r\n };\r\n\r\n private _renderOrderTemplateActions(\r\n orderTemplate: OrderTemplate,\r\n isMultipleCatalogFeatureEnabledInHq: boolean\r\n ): IOrderTemplateActionsViewProps {\r\n const { id, typeName, context, resources } = this.props;\r\n const {\r\n addTemplateToBagButtonText,\r\n renameTemplateButtonText,\r\n deleteTemplateButtonText,\r\n closeWindowButtonText,\r\n addToCartFailureMessage,\r\n addToCartSuccessMessage,\r\n addToCartProcessMessage,\r\n orderTemplateErrorMessage\r\n } = resources;\r\n\r\n const orderTemplateActions: IOrderTemplateActionsProps = {\r\n data: { orderTemplate },\r\n id,\r\n typeName,\r\n context,\r\n telemetryContent: this.telemetryContent,\r\n handlers: {\r\n onRenameTemplate: this._renameTemplate,\r\n onRemoveTemplate: this._removeTemplate\r\n },\r\n isMultipleCatalogFeatureEnabledInHq,\r\n renameOrderTemplateDialogStrings: this._generateOrderTemplateNameDialogResources(resources),\r\n resources: {\r\n addTemplateToBagButtonText,\r\n renameTemplateButtonText,\r\n deleteTemplateButtonText,\r\n addToCartFailureMessage,\r\n addToCartSuccessMessage,\r\n addToCartProcessMessage,\r\n closeWindowButtonText,\r\n orderTemplateErrorMessage,\r\n linesAddedToCartDialogResources: this._generateLinesAddedToCartDialogResources()\r\n }\r\n };\r\n\r\n return this._OrderTemplateActionsView(orderTemplateActions);\r\n }\r\n\r\n private _OrderTemplateActionsView = (props: IOrderTemplateActionsProps): IOrderTemplateActionsViewProps => {\r\n const { resources, isMultipleCatalogFeatureEnabledInHq } = props;\r\n const { deleteTemplateButtonText } = resources;\r\n\r\n return {\r\n addTemplateToBag: this._getOrderTemplateAddToCartDialog(props),\r\n renameTemplate: !isMultipleCatalogFeatureEnabledInHq && _getOrderTemplateRenameControl(props),\r\n removeTemplate: !isMultipleCatalogFeatureEnabledInHq && (\r\n \r\n ),\r\n actionsSplitButton: isMultipleCatalogFeatureEnabledInHq && \r\n };\r\n };\r\n\r\n private _removeOrderActionHandler = (props: IOrderTemplateActionsProps) => () => {\r\n this._removeOrderTemplate(props);\r\n };\r\n\r\n private _removeOrderTemplate = (props: IOrderTemplateActionsProps): void => {\r\n const {\r\n data: { orderTemplate },\r\n handlers\r\n } = props;\r\n const { onRemoveTemplate } = handlers;\r\n\r\n if (onRemoveTemplate) {\r\n onRemoveTemplate(orderTemplate.productList.Id);\r\n }\r\n };\r\n\r\n private _generateOrderTemplateNameDialogResources(resources: IGdnOrderTemplateResources): IOrderTemplateNameDialogResources {\r\n return {\r\n orderTemplateHeaderLabel: resources.renameOrderTemplateTitleText,\r\n orderTemplateTitleLabel: resources.orderTemplateTitle,\r\n orderTemplateNameAriaLabel: resources.orderTemplateTitle,\r\n orderTemplateDescription: '',\r\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\r\n orderTemplateButtonLabel: resources.renameOrderTemplateButtonText,\r\n orderTemplateCancelButtonLabel: resources.cancelBtnLabel\r\n };\r\n }\r\n\r\n private readonly _getCurrentUrl = (reqContext: IRequestContext): URL => {\r\n if (MsDyn365.isBrowser) {\r\n return new URL(window.location.href);\r\n }\r\n return new URL(reqContext.url.requestUrl.href);\r\n };\r\n\r\n /**\r\n * On close handler.\r\n */\r\n private readonly onCloseHandler = () => {\r\n this.setState({\r\n itemKey: this.state.itemKey,\r\n userMessage: this.state.userMessage,\r\n statusCssString: this.state.statusCssString,\r\n messageGlyph: this.state.messageGlyph,\r\n isOpen: this.state.isOpen,\r\n isItemAddedToOrderTemplateOpen: false\r\n });\r\n };\r\n\r\n private readonly _renderItemAddedToCartDialog = (): React.ReactNode | null => {\r\n if (!this.state.itemAddedToCartDialogData) {\r\n return null;\r\n }\r\n const isMultipleCatalogFeatureEnabledInHq =\r\n this.props.data.featureState?.result?.find(feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature')\r\n ?.IsEnabled || false;\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n private _isFirstPage(): boolean {\r\n return this._getCurrentPageNumber() === 0;\r\n }\r\n\r\n private _getCurrentPageNumber(): number {\r\n const itemsPerPage = this.props.config.itemsPerPage || 50;\r\n return (this.props.context.request.query && +this.props.context.request.query.skip / itemsPerPage) || 0;\r\n }\r\n\r\n private readonly _renderPagination = (): React.ReactNode | null => {\r\n const { config, context, data, resources } = this.props;\r\n const orderTemplate = data && data.orderTemplate && data.orderTemplate.result;\r\n if (!orderTemplate) {\r\n return null;\r\n }\r\n\r\n const fullUrl = this._getCurrentUrl(context.request);\r\n const itemsPerPage = config.itemsPerPage || 50;\r\n const currentPageNumber = this._getCurrentPageNumber();\r\n const skipCount = currentPageNumber * itemsPerPage;\r\n const totalItems = orderTemplate && orderTemplate.totalLines;\r\n const previousText = resources.flipperPrevious;\r\n const nextText = resources.flipperNext;\r\n\r\n if (totalItems <= itemsPerPage) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n );\r\n };\r\n\r\n private _renderProductList(): IOrderTemplateLineViewProps[] {\r\n const {\r\n selectOneRowText,\r\n moreButtonText,\r\n viewProductDetailsText,\r\n priceFree,\r\n originalPriceText,\r\n currentPriceText,\r\n addOrderTemplateItemToBagButtonText,\r\n removeItemFromOrderTemplateButtonText,\r\n productDimensionTypeColor,\r\n productDimensionTypeSize,\r\n productDimensionTypeStyle,\r\n inputQuantityAriaLabel,\r\n deleteButtonText,\r\n incrementButtonAriaLabel,\r\n decrementButtonAriaLabel,\r\n unavailableProductErrorMessage,\r\n outOfStockProductErrorMessage\r\n } = this.props.resources;\r\n\r\n const { context, telemetry, data } = this.props;\r\n const { catalogs } = data;\r\n const { imageSettings } = this.props.config;\r\n\r\n return this.state.productSelection.map((line, index) => {\r\n const currentProductProps: IOrderTemplateLineProps = {\r\n orderTemplateLine: line,\r\n productListLine: line.productListLine,\r\n price: line.fullProduct?.ProductPrice,\r\n error: line.error,\r\n shouldDisable: line.shouldDisable,\r\n context,\r\n isQuantityDisabledForUpdate: this.state.isQuantityDisabledForUpdate,\r\n productUrl: line.fullProduct\r\n ? this._updateProductUrlCatalog(line.fullProduct.ProductDetails, context, line.productListLine.CatalogId)\r\n : '',\r\n imageSettings,\r\n telemetry,\r\n moduleId: this.props.id,\r\n moduleTypeName: this.props.typeName,\r\n quantity: line.productListLine.Quantity!,\r\n handlers: {\r\n onAddToBag: this._addItemToBag,\r\n onRemoveItem: this._removeItemFromOrderTemplateLines,\r\n onChangeQuantity: this._changeQuantity,\r\n onSelect: this.onSelect.bind(this)\r\n },\r\n resources: {\r\n selectOneRowText,\r\n moreButtonText,\r\n viewProductDetailsText,\r\n productDimensionTypeColor,\r\n productDimensionTypeSize,\r\n productDimensionTypeStyle,\r\n freePriceText: priceFree,\r\n originalPriceText,\r\n currentPriceText,\r\n inputQuantityAriaLabel,\r\n removeFromOrderTemplateLinesText: removeItemFromOrderTemplateButtonText,\r\n addToBagButtonText: addOrderTemplateItemToBagButtonText,\r\n deleteButtonText,\r\n incrementButtonAriaLabel,\r\n decrementButtonAriaLabel,\r\n unavailableProductErrorMessage,\r\n outOfStockProductErrorMessage\r\n },\r\n index,\r\n isMobile: this.isMobile,\r\n toggleDetailsDisplayed: this._toggleDetailsDisplayed,\r\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled(),\r\n catalogs: catalogs && catalogs.result\r\n };\r\n\r\n return OrderTemplateLineView(currentProductProps)!;\r\n });\r\n }\r\n\r\n private readonly _toggleDetailsDisplayed = (props: IOrderTemplateLineProps): void => {\r\n let state = {\r\n isDetailsDisplayed: !this.state.isDetailsDisplayed\r\n };\r\n if (props) {\r\n state = {\r\n ...state,\r\n ...{\r\n detailedProductView: OrderTemplateMobileLineView(props)\r\n }\r\n };\r\n }\r\n this.setState(state);\r\n };\r\n\r\n // This method is used to update the product url with the catalogId\r\n private readonly _updateProductUrlCatalog = (\r\n productDetails: SimpleProduct,\r\n context: ICoreContext,\r\n catalogId: number | undefined\r\n ): string => {\r\n const productUrl = getProductUrlSync(productDetails, context.actionContext, undefined);\r\n if (!StringExtensions.isNullOrWhitespace(productUrl) && catalogId !== undefined) {\r\n const absoluteUrl = new URL(productUrl, window.location.href);\r\n absoluteUrl.searchParams.set('catalogid', `${catalogId ?? 0}`);\r\n return absoluteUrl.href;\r\n }\r\n\r\n return productUrl;\r\n };\r\n\r\n // Dismiss alert when addingToCart/removeItem\r\n private readonly _onDismiss = () => {\r\n this.setState({\r\n isOpen: false\r\n });\r\n };\r\n\r\n private readonly _changeQuantity = async (itemKey: string, quantity: number, props?: IOrderTemplateLineProps) => {\r\n const { context, data, telemetry, config, resources } = this.props;\r\n const { orderTemplate } = data;\r\n\r\n if (context) {\r\n if (orderTemplate?.result) {\r\n const orderTemplateLinesData = orderTemplate.result.orderTemplateLines;\r\n if (orderTemplateLinesData) {\r\n const orderLineIndex = orderTemplateLinesData.findIndex(\r\n (lines: OrderTemplateLine) => lines.productListLine.LineId === itemKey\r\n );\r\n const newProductListLine = { ...orderTemplateLinesData[orderLineIndex] };\r\n if (orderTemplateLinesData[orderLineIndex].productListLine.Quantity === quantity) {\r\n return;\r\n }\r\n const prevQuantity = newProductListLine.productListLine.Quantity;\r\n newProductListLine.productListLine.Quantity = quantity;\r\n const { fullProduct, ...line } = newProductListLine;\r\n\r\n // Update mobile modal\r\n if (props) {\r\n props.quantity = quantity;\r\n this.setState({\r\n detailedProductView: OrderTemplateMobileLineView(props)\r\n });\r\n }\r\n\r\n this.setState({\r\n isQuantityDisabledForUpdate: true\r\n });\r\n\r\n updateProductListLinesAsync({ callerContext: context.actionContext }, orderTemplate.result.productList.Id, [\r\n line.productListLine\r\n ])\r\n .then(list => {\r\n this.setState({\r\n itemKey,\r\n userMessage: '',\r\n statusCssString: 'success',\r\n messageGlyph: 'fas fa-check',\r\n isQuantityDisabledForUpdate: false,\r\n isOpen: false\r\n });\r\n if (list) {\r\n const newLine = list.find(lines => lines.LineId === itemKey);\r\n orderTemplateLinesData[orderLineIndex].productListLine = newLine!;\r\n const updatedLines = [...orderTemplateLinesData];\r\n updatedLines[orderLineIndex] = { fullProduct, productListLine: newLine! };\r\n const updatedOrderTemplate = { ...orderTemplate.result, ProductListLines: updatedLines };\r\n context.actionContext.update(\r\n new ActiveOrderTemplateLinesInput(context.actionContext.requestContext, config),\r\n updatedOrderTemplate\r\n );\r\n }\r\n })\r\n .catch(error => {\r\n telemetry.warning('[order-template-lines] Unable to update product quantity.');\r\n telemetry.error(error);\r\n const userMessage = resources.editOrderTemplateLineQuantityError;\r\n if (props) {\r\n props && (props.productListLine.Quantity = prevQuantity);\r\n this.setState({\r\n itemKey,\r\n userMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isQuantityDisabledForUpdate: false,\r\n isOpen: true,\r\n detailedProductView: OrderTemplateMobileLineView(props)\r\n });\r\n } else {\r\n newProductListLine.productListLine.Quantity = prevQuantity;\r\n this.setState({\r\n itemKey,\r\n userMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isQuantityDisabledForUpdate: false,\r\n isOpen: true\r\n });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n };\r\n\r\n private readonly _addItemToBag = async (\r\n product: SimpleProduct,\r\n quantity: number,\r\n itemKey: string,\r\n catalogId?: number | undefined\r\n ): Promise => {\r\n const { context, data, resources, telemetry } = this.props;\r\n const { cart } = data;\r\n const { maxQuantityLimitText, addedToCartFailureMessage } = resources;\r\n\r\n if (context) {\r\n if (cart.result) {\r\n const addProductToCartInput = {\r\n product,\r\n count: quantity,\r\n catalogId\r\n };\r\n\r\n await cart.result\r\n .addProductToCart(addProductToCartInput)\r\n .then((result: ICartActionResult) => {\r\n if (result.status === 'SUCCESS') {\r\n return getPriceForSelectedVariant(\r\n new PriceForSelectedVariantInput(\r\n product.RecordId,\r\n this.props.context.actionContext.requestContext.apiSettings.channelId,\r\n product\r\n ),\r\n this.props.context.actionContext\r\n ).then(priceResult => {\r\n if (!priceResult) {\r\n return AsyncResult.reject('Failed to retrieve product price');\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- read config file.\r\n const isMiniCart = context.app.config.addToCartBehavior === 'showMiniCart';\r\n this.setState({\r\n itemKey,\r\n userMessage: '',\r\n statusCssString: 'success',\r\n messageGlyph: 'fas fa-check',\r\n isOpen: false,\r\n isItemAddedToOrderTemplateOpen: !isMiniCart,\r\n itemAddedToCartDialogData: {\r\n product,\r\n productPrice: priceResult,\r\n quantity\r\n },\r\n isDetailsDisplayed: false\r\n });\r\n return AsyncResult.resolve();\r\n });\r\n } else {\r\n switch (result.substatus) {\r\n case 'MAXQUANTITY':\r\n if (context.app.config.maxQuantityForCartLineItem) {\r\n const cartLineQuantity: number | undefined =\r\n cart.result?.cart.CartLines &&\r\n cart.result?.cart.CartLines.find(result => result.ProductId === product.RecordId)?.Quantity;\r\n const defaultMessage = `You can only add ${context.app.config.maxQuantityForCartLineItem} of this item to your shopping bag`;\r\n this.setState({\r\n itemKey,\r\n userMessage:\r\n cartLineQuantity !== undefined\r\n ? maxQuantityLimitText\r\n .replace('{curQuantity}', cartLineQuantity.toString())\r\n .replace(\r\n '{maxQuantity}',\r\n context.app.config.maxQuantityForCartLineItem.toString()\r\n ) || defaultMessage\r\n : defaultMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n return AsyncResult.resolve();\r\n } else {\r\n const defaultMessage = `Max quantity for cart line item is undefined. Please define in configuration settings.`;\r\n this.setState({\r\n itemKey,\r\n userMessage: defaultMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n return AsyncResult.resolve();\r\n }\r\n case 'INVOICEINCART': {\r\n this.setState({\r\n itemKey,\r\n userMessage: result.errorDetails?.LocalizedMessage || addedToCartFailureMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n return AsyncResult.resolve();\r\n }\r\n default:\r\n telemetry.debug('[order-template-lines] Unable to Update Cart Line from the order template lines');\r\n this.setState({\r\n itemKey,\r\n userMessage: addedToCartFailureMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n return AsyncResult.resolve();\r\n }\r\n }\r\n })\r\n .catch((error: Error) => {\r\n telemetry.warning(error.message);\r\n telemetry.debug('[order-template-lines] Error trying to Update Cart Line from the order template lines');\r\n if (StringExtensions.isNullOrWhitespace(error.message)) {\r\n this.setState({\r\n itemKey,\r\n userMessage: error.message,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n } else {\r\n this.setState({\r\n itemKey,\r\n userMessage: addedToCartFailureMessage,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n private readonly _removeItemFromOrderTemplateLines = async (line: IOrderTemplateLineViewModel) => {\r\n const { context, data, telemetry } = this.props;\r\n const { orderTemplate } = data;\r\n\r\n if (context && context.actionContext) {\r\n const maxWaitTimeInMilliSeconds: number = 1000;\r\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\r\n if (userToken && orderTemplate?.result && line) {\r\n const featureStates = await getFeatureState(createGetFeatureStateInput(context.actionContext), context.actionContext);\r\n let isMultipleCatalogFeatureEnabledInHq = false;\r\n if (ArrayExtensions.hasElements(featureStates)) {\r\n isMultipleCatalogFeatureEnabledInHq =\r\n featureStates.find(\r\n (featureState: FeatureState) => featureState.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\r\n )?.IsEnabled || false;\r\n }\r\n const catalogId = getCatalogId(context.actionContext.requestContext);\r\n if (isMultipleCatalogFeatureEnabledInHq) {\r\n line.productListLine.CatalogId = catalogId;\r\n }\r\n removeProductListLinesAsync({ callerContext: context.actionContext }, line.productListLine.ProductListId!, [\r\n line.productListLine\r\n ])\r\n .then(async () => {\r\n // eslint-disable-next-line no-promise-executor-return -- fix\r\n await new Promise(resolve => setTimeout(resolve, maxWaitTimeInMilliSeconds));\r\n window.location.reload();\r\n })\r\n .catch(error => {\r\n telemetry.warning('[order-template-lines] Unable remove items from the order template lines');\r\n telemetry.error(error);\r\n });\r\n } else {\r\n telemetry.warning(\r\n '[order-template-lines] Unable remove items from the order template lines user token or lineItemID was not found'\r\n );\r\n }\r\n }\r\n };\r\n\r\n private readonly _renameTemplate = async (_template: ProductList): Promise => {\r\n window.location.reload();\r\n return Promise.resolve();\r\n };\r\n\r\n /**\r\n * Handles the process of adding items from an order template to the shopping cart.\r\n *\r\n * This method retrieves all items in the specified order template in paginated chunks.\r\n * It then formats each item as a `CartLine` and adds these lines to the current shopping cart.\r\n * To optimize network calls, it processes items in batches (based on `chunkCount`).\r\n * If the cart addition encounters an error, it logs the issue to telemetry and throws the validation results.\r\n * Finally, the method refreshes the cart to reflect the newly added items.\r\n *\r\n * @param props - Properties containing order template data, context, and flags for feature configurations.\r\n */\r\n\r\n private handleAddToCart = async (props: IOrderTemplateActionsProps) => {\r\n const {\r\n data: { orderTemplate },\r\n context,\r\n isMultipleCatalogFeatureEnabledInHq\r\n } = props;\r\n\r\n const chunkCount = 1000;\r\n const queryResultSettings: QueryResultSettings = {\r\n Paging: {\r\n Top: chunkCount,\r\n Skip: 0\r\n }\r\n };\r\n\r\n const getPaginatedOrderTemplateLinesInput = new GetPaginatedOrderTemplateLinesInput(\r\n orderTemplate.productList.Id,\r\n queryResultSettings\r\n );\r\n\r\n let orderTemplateLines = await getPaginatedOrderTemplateLinesAction(getPaginatedOrderTemplateLinesInput, context.actionContext);\r\n\r\n let addedCartLines: CartLine[] = [];\r\n const cartState = await getCartState(props.context.actionContext);\r\n const cart = cartState.cart;\r\n const hasInvoiceInCart = cart?.CartLines?.find(cartLine => cartLine.IsInvoiceLine === true);\r\n if (hasInvoiceInCart) {\r\n this.setState({ errorMessage: 'Can not add items to a cart containing an invoice.', uploadStatus: 'FAILED' });\r\n } else {\r\n this.setState({ addedLinesCount: 0 });\r\n for (let skip = chunkCount; orderTemplateLines.lines.length > 0; skip += chunkCount) {\r\n const cartLines: CartLine[] = orderTemplateLines.lines.map(productLine => {\r\n const cartLine: CartLine = {\r\n ItemId: productLine.fullProduct?.ProductDetails.ItemId,\r\n ProductId: productLine.productListLine.ProductId,\r\n Quantity: productLine.productListLine.Quantity,\r\n TrackingId: '',\r\n UnitOfMeasureSymbol: productLine.productListLine.UnitOfMeasure,\r\n ...(isMultipleCatalogFeatureEnabledInHq && { catalogId: productLine.productListLine.CatalogId })\r\n };\r\n return cartLine;\r\n });\r\n await addCartLinesAsync(\r\n { callerContext: context.actionContext },\r\n cartState.cart.Id,\r\n cartLines,\r\n cartState.cart.Version\r\n ).catch(error => {\r\n context.telemetry.trace(error.data?.ValidationResults);\r\n context.telemetry.trace('Unable to add order template to cart.');\r\n throw error.data?.ValidationResults;\r\n });\r\n this.setState(prevState => ({\r\n addedLinesCount: prevState.addedLinesCount + cartLines.length\r\n }));\r\n addedCartLines = addedCartLines.concat(cartLines);\r\n getPaginatedOrderTemplateLinesInput.queryResultSettings.Paging!.Skip = skip;\r\n orderTemplateLines = await getPaginatedOrderTemplateLinesAction(getPaginatedOrderTemplateLinesInput, context.actionContext);\r\n }\r\n await cartState.refreshCart({});\r\n this.setModalOpen(false);\r\n }\r\n };\r\n\r\n /**\r\n * Renders the \"Add Order Template to Cart\" dialog and button component.\r\n *\r\n * This method generates a modal popup with a button that allows users to add all items from an order template to the cart.\r\n * It includes logic to handle various statuses of the add-to-cart process, such as loading, success, and failure, with corresponding\r\n * messages shown in the modal.\r\n *\r\n * The button is disabled if there are no items in the order template, and when clicked, it invokes the `handleAddToCart` method to\r\n * process adding items to the cart. If the operation succeeds, the dialog opens to show the success message. If it fails, an error\r\n * message is displayed in the modal.\r\n *\r\n * @param props - Properties required for rendering the dialog and button, including text resources, context, and telemetry content.\r\n *\r\n * @returns The React node containing the modal dialog, add-to-cart button, and a dialog showing the number of lines added to the cart.\r\n */\r\n\r\n public _getOrderTemplateAddToCartDialog = (props: IOrderTemplateActionsProps): React.ReactNode => {\r\n const {\r\n data: { orderTemplate },\r\n typeName,\r\n id,\r\n context,\r\n telemetryContent,\r\n resources,\r\n isMultipleCatalogFeatureEnabledInHq\r\n } = props;\r\n\r\n const {\r\n addTemplateToBagButtonText,\r\n closeWindowButtonText,\r\n addToCartFailureMessage,\r\n addToCartSuccessMessage,\r\n addToCartProcessMessage,\r\n orderTemplateErrorMessage,\r\n linesAddedToCartDialogResources\r\n } = resources;\r\n\r\n const dialogStrings = {\r\n closeWindowButtonText,\r\n addToCartFailureMessage,\r\n addToCartSuccessMessage,\r\n addToCartProcessMessage,\r\n orderTemplateErrorMessage,\r\n linesAddedToCartDialogResources\r\n };\r\n\r\n const closeLinesAddedToCartDialog = () => {\r\n this.setState({ errorMessage: '', linesAddedToCartDialogOpen: false });\r\n };\r\n\r\n const _getModalText = (status: addOrderTemplateToCartStatus, dialogStrings: IDialogStrings, errorMsg: string) => {\r\n const { addToCartFailureMessage, addToCartSuccessMessage, addToCartProcessMessage } = dialogStrings;\r\n\r\n if (status === 'LOADING') {\r\n return `${addToCartProcessMessage}...`;\r\n }\r\n\r\n if (status === 'SUCCESS') {\r\n return addToCartSuccessMessage;\r\n }\r\n\r\n if (status === 'FAILED') {\r\n return errorMsg !== null ? errorMsg : addToCartFailureMessage;\r\n }\r\n\r\n return '';\r\n };\r\n\r\n const modalText = _getModalText(this.state.uploadStatus, dialogStrings, this.state.errorMessage);\r\n const processStatusClass = this.state.uploadStatus.toLowerCase();\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.AddOrderTemplateToCart);\r\n const addOrderTemplateAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n const popupProps: IPopupProductsProps = {\r\n dialogStrings,\r\n className: 'msc-add-order-template-to-cart',\r\n processStatusClass,\r\n text: modalText,\r\n modalOpen: this.state.modalOpen,\r\n setModalOpen: this.setModalOpen\r\n };\r\n\r\n const renderModalPopup = ;\r\n\r\n const products = orderTemplate.orderTemplateLines.map(line => line.fullProduct).filter(fullProduct => fullProduct) as FullProduct[];\r\n\r\n return (\r\n <>\r\n {renderModalPopup}\r\n line.shouldDisable)\r\n ? 'disabled'\r\n : ''\r\n }`}\r\n aria-label={addTemplateToBagButtonText}\r\n disabled={orderTemplate.totalLines === 0 || orderTemplate.orderTemplateLines.some(line => line.shouldDisable)}\r\n type='button'\r\n onClick={async () => {\r\n this.setState({ uploadStatus: 'LOADING', modalOpen: true });\r\n try {\r\n await this.handleAddToCart(props);\r\n this.setState({\r\n linesAddedToCartDialogOpen: true,\r\n uploadStatus: 'SUCCESS'\r\n });\r\n } catch (error) {\r\n this.setState({\r\n uploadStatus: 'FAILED',\r\n errorMessage: 'An error occurred while adding items to the cart'\r\n });\r\n }\r\n }}\r\n {...addOrderTemplateAttribute}\r\n >\r\n {addTemplateToBagButtonText}\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n private setModalOpen = (isOpen: boolean) => {\r\n this.setState({ modalOpen: isOpen });\r\n };\r\n\r\n private readonly _removeTemplate = () => {\r\n const { context, data, telemetry, resources } = this.props;\r\n const { orderTemplate } = data;\r\n\r\n if (context && context.actionContext) {\r\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\r\n if (userToken && orderTemplate && orderTemplate.result) {\r\n deleteAsync({ callerContext: context.actionContext }, orderTemplate.result.productList)\r\n .then()\r\n .catch((error: string) => {\r\n telemetry.warning('[order-template] Unable to delete order template.');\r\n telemetry.error(error);\r\n this.setState({\r\n itemKey: orderTemplate.result?.productList.Id || '',\r\n userMessage: resources.deleteOrderTemplateFailedText,\r\n statusCssString: 'danger',\r\n messageGlyph: 'fas fa-exclamation-triangle',\r\n isOpen: true\r\n });\r\n });\r\n const newLink = getUrlSync('ordertemplatelist', this.props.context.actionContext);\r\n if (newLink) {\r\n window.location.assign(newLink);\r\n }\r\n } else {\r\n telemetry.warning('[order-template] Failed to delete order template. Order template was not found');\r\n }\r\n } else {\r\n telemetry.warning('[order-template] Failed to delete order template.');\r\n }\r\n };\r\n\r\n private _updateViewport(): void {\r\n this._viewport = this._getViewport();\r\n }\r\n\r\n private readonly _getViewport = (): GridSize => {\r\n const { context } = this.props;\r\n\r\n // Always render in mobile viewport on a mobile device\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n\r\n if (MsDyn365.isBrowser && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n }\r\n return 'xl';\r\n }\r\n }\r\n\r\n return 'xs';\r\n };\r\n\r\n /**\r\n * Renders a Pagination previous text.\r\n * @param paginationPreviousText - Pagination previous text from resources.\r\n * @returns Previous text and flipper icon.\r\n */\r\n private readonly _renderPrev = (paginationPreviousText: string) => {\r\n return (\r\n
\r\n
\r\n );\r\n };\r\n\r\n /**\r\n * Renders a Pagination next text.\r\n * @param paginationNextText - Pagination next text from resources.\r\n * @returns Next text and flipper icon.\r\n */\r\n private readonly _renderNext = (paginationNextText: string) => {\r\n return (\r\n
\r\n {paginationNextText}\r\n
\r\n );\r\n };\r\n}\r\n\r\nexport default OrderTemplateLines;\r\n\r\nconst _getOrderTemplateRenameControl = (props: IOrderTemplateActionsProps): React.ReactNode => {\r\n const { renameOrderTemplateDialogStrings, resources, context, handlers } = props;\r\n return (\r\n \r\n );\r\n};\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Button, INodeProps, Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateLineViewProps } from './components';\r\nimport { IOrderTemplateViewProps } from './gdn-order-template';\r\n\r\nconst OrderTemplateLinesView: React.FC = (props: IOrderTemplateViewProps) => {\r\n const {\r\n OrderTemplateLines,\r\n status,\r\n statusMessage,\r\n heading,\r\n ProductsTable,\r\n ProductsTableHeading,\r\n orderLines,\r\n ProductsTableRow,\r\n productsStatusMessage,\r\n OrderTemplateActions,\r\n orderActions,\r\n pagination,\r\n itemAddedToCartDialog,\r\n bulkOrderLineActions,\r\n isDetailsDisplayed,\r\n detailedProductView,\r\n toggleDetailsDisplayed,\r\n resources: {\r\n cancelBtnLabel,\r\n productNumberText,\r\n productText,\r\n productUnitPriceText,\r\n productUOMText,\r\n productQuantityText,\r\n productLineCatalogName\r\n }\r\n } = props;\r\n\r\n const toggleDetails = React.useCallback(() => {\r\n toggleDetailsDisplayed && toggleDetailsDisplayed(undefined);\r\n }, [toggleDetailsDisplayed]);\r\n\r\n return (\r\n \r\n {heading}\r\n {OrderTemplateActions && (\r\n \r\n {orderActions?.addTemplateToBag}\r\n {orderActions?.renameTemplate}\r\n {orderActions?.removeTemplate}\r\n {orderActions?.actionsSplitButton}\r\n {!isDetailsDisplayed && productsStatusMessage}\r\n \r\n )}\r\n {bulkOrderLineActions}\r\n {status !== 'SUCCESS' && statusMessage}\r\n {ProductsTable && orderLines && orderLines.length > 0 && (\r\n \r\n \r\n {ProductsTableHeading}\r\n \r\n {orderLines &&\r\n orderLines.map(product => {\r\n return _renderItem(product, productQuantityText, ProductsTableRow);\r\n })}\r\n \r\n \r\n {pagination}\r\n \r\n )}\r\n {itemAddedToCartDialog}\r\n \r\n Product Details\r\n \r\n
    \r\n
  • {detailedProductView?.productImage}
  • \r\n
  • \r\n {productText}:\r\n {detailedProductView?.productInfo}\r\n
  • \r\n
  • \r\n {productLineCatalogName}:\r\n {detailedProductView?.productLineCatalog}\r\n
  • \r\n
  • \r\n {productNumberText}:\r\n {detailedProductView?.productNumber}\r\n
  • \r\n
  • \r\n {productUnitPriceText}:\r\n {` `}\r\n {detailedProductView?.productPrice}\r\n
  • \r\n
  • \r\n {productUOMText}:\r\n {` `}\r\n {detailedProductView?.productUnitOfMeasure}\r\n
  • \r\n
  • \r\n {productQuantityText}:\r\n {detailedProductView?.productQuantityView}\r\n
  • \r\n {productsStatusMessage &&
  • {productsStatusMessage}
  • }\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nconst _renderItem = (product: IOrderTemplateLineViewProps, quantityLabel: string, ProductsTableRow?: INodeProps): JSX.Element | null => {\r\n if (!product) {\r\n return null;\r\n }\r\n\r\n const {\r\n key,\r\n selectLine,\r\n productLineCatalog,\r\n productImage,\r\n productPrice,\r\n productNumber,\r\n addToBagButton,\r\n removeButton,\r\n productInfo,\r\n productUnitOfMeasure,\r\n productQuantityView,\r\n productQuantity,\r\n popUp,\r\n isMobile,\r\n extraActionsPopup,\r\n isMultipleCatalogFeatureEnabledInHq,\r\n disabled\r\n } = product;\r\n\r\n const lineVisibility = disabled\r\n ? {\r\n pointerEvents: 'none',\r\n opacity: 0.5\r\n }\r\n : {\r\n pointerEvents: 'auto',\r\n opacity: 1\r\n };\r\n\r\n const disableElement: React.CSSProperties = lineVisibility as React.CSSProperties;\r\n\r\n return (\r\n \r\n {selectLine}\r\n {!isMobile && isMultipleCatalogFeatureEnabledInHq && {productLineCatalog}}\r\n {productImage}\r\n {isMobile ? (\r\n \r\n
{productNumber}
\r\n
\r\n {quantityLabel}:{` `}\r\n {productQuantity}\r\n
\r\n \r\n ) : (\r\n {productNumber}\r\n )}\r\n {!isMobile && {productInfo}}\r\n {!isMobile && {productPrice}}\r\n {!isMobile && {productUnitOfMeasure}}\r\n {!isMobile && {productQuantityView}}\r\n {isMobile && {popUp}}\r\n {!isMobile && !isMultipleCatalogFeatureEnabledInHq && (\r\n <>\r\n {addToBagButton}\r\n {removeButton}\r\n \r\n )}\r\n {extraActionsPopup}\r\n
\r\n );\r\n};\r\n\r\nexport default OrderTemplateLinesView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IOrderTemplateNameDialogResources, OrderTemplateNameDialog } from '@msdyn365-commerce/components';\r\nimport { IComponentProps } from '@msdyn365-commerce/core';\r\nimport React, { useState } from 'react';\r\n\r\nconst modalCloseButtonReference: React.RefObject = React.createRef();\r\n\r\n/**\r\n * The Create Order Template Button Props.\r\n */\r\nexport interface ICreateOrderTemplateButtonProps extends IComponentProps {\r\n\r\n /**\r\n * The label for create order template.\r\n */\r\n createOrderTemplateText: string;\r\n\r\n /**\r\n * The create order template dialog resources.\r\n */\r\n createOrderTemplateDialogResources: IOrderTemplateNameDialogResources;\r\n\r\n /**\r\n * The delegate to fire when dialog captured any user entry.\r\n */\r\n onOrderTemplateCreated(): Promise;\r\n}\r\n\r\nconst CreateOrderTemplateButton: React.FC = (props) => {\r\n const onCancelHandler = React.useCallback(() => {\r\n return;\r\n }, []);\r\n const [isCreateOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = useState(false);\r\n const onCreateButtonClick = React.useCallback(() => {\r\n setOrderTemplateNameDialogOpen(true);\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n {props.createOrderTemplateText}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CreateOrderTemplateButton;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, format, getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * IPromoCodeProps: Interface for promo code component.\r\n */\r\nexport interface IPromoCodeProps extends IComponentProps<{}> {\r\n cart: ICartState | undefined;\r\n promoCodeHeadingText: string;\r\n appliedPromoCodeHeadingText: string;\r\n removePromoAriaLabelFormat: string;\r\n promoPlaceholderText: string;\r\n promoCodeApplyButtonText: string;\r\n collapseTimeOut: number;\r\n removePromoText: string;\r\n invalidPromoCodeErrorText: string;\r\n failedToAddPromoCodeErrorText: string;\r\n duplicatePromoCodeErrorText: string;\r\n failedToRemovePromoCodeErrorText: string;\r\n\r\n /** The telemetry content. */\r\n telemetryContent?: ITelemetryContent;\r\n promoCodeApplyCallback?(): void;\r\n}\r\n\r\n/**\r\n * IPromoCodeProps: Interface for promo code component.\r\n */\r\nexport interface IPromoCodeComponent extends IComponent { }\r\n\r\n/**\r\n * IPromoCodeProps: Interface for promo code state.\r\n */\r\ninterface IPromoCodeState {\r\n promoCodeInputValue: string;\r\n error: string;\r\n canApply: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * The PromoCode component renders the promocode section.\r\n * @extends {React.PureComponent}\r\n */\r\nclass PromoCode extends React.PureComponent {\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n public constructor(props: IPromoCodeProps) {\r\n super(props);\r\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\r\n this.state = {\r\n promoCodeInputValue: '',\r\n error: '',\r\n canApply: false\r\n };\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n
\r\n {this.props.promoCodeHeadingText}\r\n
\r\n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\r\n

\r\n {this.state.error}\r\n

\r\n {this._renderAppliedPromoCode(this.props)}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * On input change method.\r\n * @param event - Change event.\r\n */\r\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\r\n const error = event.target.value === '' ? '' : this.state.error;\r\n this.setState({\r\n promoCodeInputValue: event.target.value, error,\r\n canApply: !!event.target.value\r\n });\r\n };\r\n\r\n /**\r\n * Apply promo code method.\r\n * @param cartState - Cart state interface.\r\n */\r\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\r\n if (!cartState) {\r\n return;\r\n }\r\n const appliedPromo = this.state.promoCodeInputValue;\r\n\r\n cartState.addPromoCode({ promoCode: appliedPromo })\r\n .then(result => {\r\n if (result.status === 'SUCCESS') {\r\n // Show success text\r\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\r\n } else if (result.substatus === 'ALREADYADDED') {\r\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\r\n } else {\r\n this.setState({ error: this.props.invalidPromoCodeErrorText });\r\n }\r\n })\r\n .catch(() => {\r\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\r\n });\r\n };\r\n\r\n /**\r\n * On submit action.\r\n * @param cartState - Cart state.\r\n * @returns Apply promotion.\r\n */\r\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\r\n event.preventDefault();\r\n this._applyPromotion(cartState);\r\n };\r\n\r\n /**\r\n * On apply promotion.\r\n * @param cartState - Cart state.\r\n * @returns Apply promotion.\r\n */\r\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\r\n this._applyPromotion(cartState);\r\n };\r\n\r\n /**\r\n * Renders promo code form.\r\n * @param promoPlaceholderText - Promo code input box placeholder string.\r\n * @param promoCodeApplyButtonText - Promo code button text string.\r\n * @param cartState - Cart state interface.\r\n * @returns Promo code form.\r\n */\r\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\r\n\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n /**\r\n * Remove promo code method.\r\n * @param cartState - Cart state interface.\r\n * @param event - Mouse event.\r\n */\r\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\r\n if (!cartState) {\r\n return;\r\n }\r\n const code = event.currentTarget.getAttribute('data-value') ?? '';\r\n cartState.removePromoCodes({\r\n promoCodes: [code]\r\n })\r\n .then(result => {\r\n if (result.status === 'SUCCESS') {\r\n this.setState({ error: '' });\r\n }\r\n })\r\n .catch(() => {\r\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\r\n });\r\n\r\n };\r\n\r\n /**\r\n * Renders applied promo code form.\r\n * @param props - Promo code component props.\r\n * @returns Applied promo code.\r\n */\r\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\r\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\r\n return;\r\n }\r\n\r\n /**\r\n * On remove promotion action.\r\n * @param event - Mouse event.\r\n */\r\n const removePromotionHandler = (event: React.MouseEvent) => {\r\n this._removePromotion(props.cart, event);\r\n };\r\n\r\n return (\r\n <>\r\n {\r\n props.cart.cart.Coupons.map((coupon: Coupon) => {\r\n const ariaLabel = props.removePromoAriaLabelFormat ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code) : '';\r\n\r\n return (\r\n
\r\n
\r\n {'Code '}\r\n \r\n {coupon.Code}\r\n \r\n {'Applied '}\r\n\r\n
\r\n \r\n
\r\n );\r\n })\r\n }\r\n \r\n );\r\n };\r\n}\r\n\r\nexport default PromoCode;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IOrderTemplateListViewProps, ISingleOrderTemplateViewProps } from '@msdyn365-commerce-modules/order-template';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport CreateNewTemplateButtonComponent from './components/create-order-template.component';\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateListProps, IOrderTemplateListResources } from '../definition-extensions/order-template-list.ext.props.autogenerated';\r\nimport { IOrderTemplateNameDialogResources } from \"@msdyn365-commerce/components\";\r\n\r\n/**\r\n * Interface for OrderTemplateImage.\r\n */\r\ninterface IOrderTemplateImage {\r\n props: {\r\n children: React.ReactElement[];\r\n };\r\n}\r\n\r\n/**\r\n * To render order template.\r\n * @param orderTemplate - The order template view props.\r\n * @param orderTemplateNodeProps - The order template node props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, orderTemplateNodeProps?: INodeProps): JSX.Element | null => {\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\r\n\r\n const orderTemplateImageElement: IOrderTemplateImage = orderTemplateImage as React.ReactElement;\r\n const currentImageListLength = orderTemplateImageElement.props.children.length;\r\n const defaultNumberImagesInTile = 4;\r\n\r\n if (currentImageListLength < defaultNumberImagesInTile) {\r\n for (let index = 0; index < defaultNumberImagesInTile - currentImageListLength; index++) {\r\n orderTemplateImageElement.props.children.push();\r\n }\r\n }\r\n\r\n return (\r\n \r\n {orderTemplateName}\r\n {orderTemplateImage}\r\n {addToCartButton}\r\n {removeButton}\r\n {orderTemplateStatusMessage}\r\n \r\n );\r\n};\r\n\r\nconst _reloadPage = async () => {\r\n window.location.reload();\r\n};\r\n\r\nconst _generateOrderTemplateNameDialogResources = (resources: IOrderTemplateListResources): IOrderTemplateNameDialogResources => {\r\n return {\r\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\r\n orderTemplateTitleLabel: resources.orderTemplateTitle,\r\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\r\n orderTemplateDescription: resources.createOrderTemplateDescription,\r\n\r\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\r\n\r\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\r\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\r\n };\r\n}\r\n\r\n/**\r\n * Order Template List View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nexport const OrderTemplateListViewComponent: React.FC> = props => {\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n OrderTemplateList, OrderTemplates, OrderTemplate,\r\n status,\r\n statusMessage,\r\n heading,\r\n orderTemplates,\r\n createOrderTemplateButton,\r\n templateHeaderStatusMessage\r\n } = props;\r\n console.log(createOrderTemplateButton)\r\n return (\r\n \r\n {heading}\r\n {status !== 'SUCCESS' && statusMessage}\r\n {status === 'EMPTY' && (\r\n \r\n )}\r\n \r\n {status === 'SUCCESS' &&\r\n (!OrderTemplates || !orderTemplates ||\r\n !ArrayExtensions.hasElements(orderTemplates)) ? (\r\n
\r\n

\r\n {props.resources.headingForEmptyOrderTemplateList}\r\n

\r\n

\r\n {props.resources.textForEmptyOrderTemplateList}\r\n

\r\n {createOrderTemplateButton}\r\n
\r\n ) : createOrderTemplateButton}\r\n {templateHeaderStatusMessage}\r\n
\r\n { OrderTemplates && orderTemplates && ArrayExtensions.hasElements(orderTemplates) &&\r\n \r\n {orderTemplates.map((orderTemplate) => {\r\n return renderOrderTemplate(orderTemplate, OrderTemplate);\r\n })}\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport default OrderTemplateListViewComponent;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IOrderTemplateNameDialogResources, OrderTemplateNameDialog } from '@msdyn365-commerce/components';\r\nimport { IComponentProps } from '@msdyn365-commerce/core';\r\nimport React, { useState } from 'react';\r\n\r\nconst modalCloseButtonReference: React.RefObject = React.createRef();\r\n\r\n/**\r\n * The Create Order Template Button Props.\r\n */\r\nexport interface ICreateOrderTemplateButtonProps extends IComponentProps {\r\n\r\n /**\r\n * The label for create order template.\r\n */\r\n createOrderTemplateText: string;\r\n\r\n /**\r\n * The create order template dialog resources.\r\n */\r\n createOrderTemplateDialogResources: IOrderTemplateNameDialogResources;\r\n\r\n /**\r\n * The delegate to fire when dialog captured any user entry.\r\n */\r\n onOrderTemplateCreated(): Promise;\r\n}\r\n\r\nconst CreateOrderTemplateButton: React.FC = (props) => {\r\n const onCancelHandler = React.useCallback(() => {\r\n return;\r\n }, []);\r\n const [isCreateOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = useState(false);\r\n const onCreateButtonClick = React.useCallback(() => {\r\n setOrderTemplateNameDialogOpen(true);\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n {props.createOrderTemplateText}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CreateOrderTemplateButton;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { Button, format, getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { addAttributeToCart, removeAttributeFromCart } from \"../../../../utils/cartAttributeManager\";\r\nimport { ICouponCodeMapData } from '../../definition-extensions/cart.ext.props.autogenerated';\r\n\r\nexport interface IPromoCodeProps extends IComponentProps<{}> {\r\n cart: ICartState | undefined;\r\n promoCodeHeadingText: string;\r\n appliedPromoCodeHeadingText: string;\r\n removePromoAriaLabelFormat: string;\r\n promoPlaceholderText: string;\r\n promoCodeApplyButtonText: string;\r\n collapseTimeOut: number;\r\n removePromoText: string;\r\n invalidPromoCodeErrorText: string;\r\n failedToAddPromoCodeErrorText: string;\r\n duplicatePromoCodeErrorText: string;\r\n failedToRemovePromoCodeErrorText: string;\r\n couponMapping: ICouponCodeMapData[];\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n promoCodeApplyCallback?(): void;\r\n}\r\n\r\nexport interface IPromoCodeComponent extends IComponent { }\r\n\r\nconst PromoCodeComponentActions = {};\r\n\r\ninterface IPromoCodeState {\r\n isCollapseOpen: boolean;\r\n promoCodeInputValue: string;\r\n error: string;\r\n canApply: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * The PromoCode component renders the promocode section.\r\n * @extends {React.PureComponent}\r\n */\r\nclass PromoCode extends React.Component {\r\n private readonly COUPON_ATTRIBUTE_KEY = 'coupon-code';\r\n private readonly payLoad: IPayLoad;\r\n\r\n constructor(props: IPromoCodeProps, state: IPromoCodeState) {\r\n super(props);\r\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\r\n this.state = {\r\n isCollapseOpen: false,\r\n promoCodeInputValue: '',\r\n error: '',\r\n canApply: false\r\n };\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IPromoCodeProps): boolean {\r\n if (this.props.appliedPromoCodeHeadingText !== nextProps.appliedPromoCodeHeadingText) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public formatDate(date: Date) {\r\n const year = date.getFullYear();\r\n const month = String(date.getMonth() + 1).padStart(2, '0'); // Months are zero-based\r\n const day = String(date.getDate()).padStart(2, '0');\r\n return `${year}-${month}-${day}`;\r\n }\r\n\r\n public getMondayOfCurrentWeek() {\r\n const today = new Date();\r\n const day = today.getDay();\r\n const diff = today.getDate() - day + (day === 0 ? -6 : 1); // adjust when day is Sunday\r\n const monday = new Date(today.setDate(diff));\r\n return monday;\r\n }\r\n\r\n public getCouponCodeMap = (enteredCode: string) => {\r\n const foundCode = this.props.couponMapping.find(c => c.fromCouponCode?.toUpperCase() === enteredCode.toUpperCase());\r\n if (foundCode) { \r\n const mondaysDate = this.formatDate(this.getMondayOfCurrentWeek());\r\n const coupon = foundCode.toCouponCode?.find(tcc => tcc.date === mondaysDate)?.code;\r\n return coupon;\r\n }\r\n return null;\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n
\r\n {this.props.promoCodeHeadingText}\r\n
\r\n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\r\n

\r\n {this.state.error}\r\n

\r\n {this._renderAppliedPromoCode(this.props)}\r\n
\r\n );\r\n }\r\n\r\n private readonly _onInputChange = (e: React.ChangeEvent) => {\r\n const error = e.target.value === '' ? '' : this.state.error;\r\n this.setState({\r\n promoCodeInputValue: e.target.value, error,\r\n canApply: !!e.target.value\r\n });\r\n };\r\n\r\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\r\n if (!cartState || !cartState.cart) {\r\n return;\r\n }\r\n const appliedPromo = this.state.promoCodeInputValue;\r\n const promoCode = this.getCouponCodeMap(appliedPromo)\r\n cartState.addPromoCode({ promoCode: promoCode || appliedPromo })\r\n .then(result => {\r\n if (result.status === 'SUCCESS') {\r\n // Show success text\r\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\r\n const _cart = addAttributeToCart(this.COUPON_ATTRIBUTE_KEY, appliedPromo, cartState.cart);\r\n void cartState.updateCart({newCartObject: _cart})\r\n } else if (result.substatus === 'ALREADYADDED') {\r\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\r\n } else {\r\n this.setState({ error: this.props.invalidPromoCodeErrorText });\r\n }\r\n })\r\n .catch(error => {\r\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\r\n });\r\n };\r\n\r\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\r\n const _onSubmit = (event: React.FormEvent) => {\r\n event.preventDefault(); this._applyPromotion(cartState);\r\n };\r\n const _applyPromotion = (event: React.MouseEvent) => {\r\n this._applyPromotion(cartState);\r\n };\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n {promoCodeApplyButtonText}\r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\r\n if (!cartState) {\r\n return;\r\n }\r\n const code = event.currentTarget.getAttribute('data-value') || '';\r\n cartState.removePromoCodes({\r\n promoCodes: [code]\r\n })\r\n .then(result => {\r\n if (result.status === 'SUCCESS') {\r\n const _cart = removeAttributeFromCart(this.COUPON_ATTRIBUTE_KEY, cartState.cart);\r\n void cartState.updateCart({newCartObject: _cart, additionalProperties: { AttributeValues: _cart.AttributeValues || [] }});\r\n this.setState({ error: '' });\r\n\r\n }\r\n })\r\n .catch(() => {\r\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\r\n });\r\n\r\n };\r\n\r\n private readonly _calculateDiscount = (code: string, cartState: ICartState | undefined) => {\r\n if (!cartState || !cartState.cart || !cartState.cart.CartLines || cartState.cart.CartLines.length === 0 || !code) {\r\n return;\r\n }\r\n let discountAmount = 0;\r\n for (const line of cartState.cart.CartLines) {\r\n if (line.DiscountLines) {\r\n for (const discountLine of line.DiscountLines) {\r\n if (discountLine.DiscountCode === code) {\r\n discountAmount += discountLine.DiscountCost!;\r\n }\r\n }\r\n }\r\n }\r\n return discountAmount * -1;\r\n };\r\n\r\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\r\n if (!props.cart || !props.cart.cart || !props.cart.cart.Coupons || !(props.cart.cart.Coupons.length > 0)) {\r\n return;\r\n }\r\n\r\n const _removePromotion = (event: React.MouseEvent) => {\r\n this._removePromotion(props.cart, event);\r\n };\r\n let totalCouponDiscountAmount = 0;\r\n for (const coupon of props.cart.cart.Coupons) {\r\n const discountAmount = this._calculateDiscount(coupon.Code ?? '', props.cart);\r\n if (discountAmount) {\r\n totalCouponDiscountAmount += discountAmount;\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n {this.props.appliedPromoCodeHeadingText}\r\n
\r\n \r\n
\r\n {\r\n props.cart.cart.Coupons.map((coupon: Coupon) => {\r\n const ariaLabel = props.removePromoAriaLabelFormat ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code) : '';\r\n\r\n return (\r\n
\r\n
\r\n {coupon.Code}\r\n {' '}\r\n (\r\n \r\n )\r\n
\r\n \r\n {props.removePromoText}\r\n \r\n
\r\n );\r\n })\r\n }\r\n \r\n );\r\n };\r\n}\r\n\r\n// @ts-expect-error\r\nexport const PromoCodeComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\r\n 'PromoCode',\r\n { component: PromoCode, ...PromoCodeComponentActions }\r\n);\r\n\r\n\r\nexport default PromoCodeComponent;\r\n","import { Cart } from '@msdyn365-commerce/retail-proxy';\r\nimport { AttributeTextValueClass } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\n\r\nconst addAttributeToCart = (attrKey: string, attrValue: string, cart: Cart): Cart => {\r\n const _cart = { ...cart };\r\n const attributeArray = _cart.AttributeValues || [];\r\n const attributeObj = {\r\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.AttributeTextValue',\r\n Name: attrKey,\r\n ExtensionProperties: [],\r\n TextValue: attrValue,\r\n TextValueTranslations: []\r\n };\r\n const attrIdx = attributeArray.findIndex(a => a.Name?.toUpperCase() === attrKey.toUpperCase());\r\n\r\n //Update existing attribute if there.\r\n if (attrIdx > -1) {\r\n (attributeArray[attrIdx] as AttributeTextValueClass).TextValue = attrValue;\r\n } else {\r\n attributeArray.push(attributeObj);\r\n }\r\n\r\n _cart.AttributeValues = attributeArray;\r\n\r\n return _cart;\r\n};\r\n\r\nconst removeAttributeFromCart = (attrKey: string, cart: Cart): Cart => {\r\n const _cart = { ...cart };\r\n const attributeArray = _cart.AttributeValues || [];\r\n const attrIdx = attributeArray.findIndex(a => a.Name?.toUpperCase() === attrKey.toUpperCase());\r\n\r\n //We can't remove attribute values for some reason, so we'll just set the value to ''\r\n if (attrIdx > -1) {\r\n (attributeArray[attrIdx] as AttributeTextValueClass).TextValue = '';\r\n }\r\n _cart.AttributeValues = attributeArray;\r\n return _cart;\r\n};\r\n\r\nexport { addAttributeToCart, removeAttributeFromCart };\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport {\r\n IOrderTemplateActionsData,\r\n IOrderTemplateListViewProps,\r\n ISingleOrderTemplateViewProps\r\n} from '@msdyn365-commerce-modules/order-template';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n INodeProps,\r\n IPopupProductsProps,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n PopupProducts,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport CreateNewTemplateButtonComponent from './components/create-order-template.component';\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateListProps, IOrderTemplateListResources } from '../definition-extensions/order-template-list.ext.props.autogenerated';\r\nimport {\r\n addOrderTemplateToCartStatus,\r\n ILinesAddedToCartDialogResources,\r\n IOrderTemplateNameDialogResources,\r\n LinesAddedToCartDialog\r\n} from '@msdyn365-commerce/components';\r\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\r\nimport classnames from 'classnames';\r\nimport { CartLine, QueryResultSettings } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n getPaginatedOrderTemplateLinesAction,\r\n GetPaginatedOrderTemplateLinesInput\r\n} from '../../../actions/get-paginated-order-template-lines.action';\r\nimport { getCartState } from '@msdyn365-commerce/global-state';\r\nimport { addCartLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { IComponentProps, ICoreContext } from '@msdyn365-commerce/core';\r\nimport _ from 'lodash';\r\n\r\n/**\r\n * Interface for OrderTemplateImage.\r\n */\r\ninterface IOrderTemplateImage {\r\n props: {\r\n children: React.ReactElement[];\r\n };\r\n}\r\n\r\nexport interface IOrderTemplateActionsProps extends IComponentProps {\r\n addToCartText: string;\r\n className: string;\r\n data: IOrderTemplateActionsData;\r\n id: string;\r\n typeName: string;\r\n context: ICoreContext;\r\n telemetryContent?: ITelemetryContent;\r\n isMultipleCatalogFeatureEnabledInHq?: boolean;\r\n dialogStrings: {\r\n renameTemplateButtonText: string;\r\n deleteTemplateButtonText: string;\r\n closeWindowButtonText: string;\r\n addToCartFailureMessage: string;\r\n addToCartSuccessMessage: string;\r\n addToCartProcessMessage: string;\r\n orderTemplateErrorMessage: string;\r\n linesAddedToCartDialogResources: ILinesAddedToCartDialogResources;\r\n };\r\n}\r\n\r\n/**\r\n * To render order template.\r\n * @param orderTemplate - The order template view props.\r\n * @param orderTemplateNodeProps - The order template node props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderOrderTemplate = (\r\n orderTemplate: ISingleOrderTemplateViewProps,\r\n props: React.PropsWithChildren>,\r\n orderTemplateNodeProps?: INodeProps\r\n): JSX.Element | null => {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\r\n\r\n const addToCartButtonProps = (_.get(addToCartButton, 'props.children.props') as unknown) as IOrderTemplateActionsProps;\r\n console.log(orderTemplateName);\r\n\r\n const orderTemplateImageElement: IOrderTemplateImage = orderTemplateImage as React.ReactElement;\r\n const currentImageListLength = orderTemplateImageElement.props.children.length;\r\n const defaultNumberImagesInTile = 4;\r\n\r\n if (currentImageListLength < defaultNumberImagesInTile) {\r\n for (let index = 0; index < defaultNumberImagesInTile - currentImageListLength; index++) {\r\n orderTemplateImageElement.props.children.push();\r\n }\r\n }\r\n const shouldDisplayErrorMessage = addToCartButtonProps.data.orderTemplate.orderTemplateLines.some(line => line.shouldDisable);\r\n\r\n return (\r\n \r\n {orderTemplateName}\r\n {orderTemplateImage}\r\n {/* {addToCartButton} */}\r\n
\r\n {shouldDisplayErrorMessage && (\r\n

Template contains a product with an error.

\r\n )}\r\n {_getOrderTemplateAddToCartDialog(addToCartButtonProps)}\r\n
\r\n {removeButton}\r\n {orderTemplateStatusMessage}\r\n
\r\n );\r\n};\r\n\r\nconst _getOrderTemplateAddToCartDialog = (addToCartButtonProps: IOrderTemplateActionsProps): React.ReactNode => {\r\n const [errorMessage, setErrorMessage] = React.useState('');\r\n const [linesAddedToCartDialogOpen, setLinesAddedToCartDialogOpen] = React.useState(false);\r\n const [uploadStatus, setUploadStatus] = React.useState('WAITING');\r\n const [modalOpen, setModalOpen] = React.useState(false);\r\n const [addedLinesCount, setAddedLinesCount] = React.useState(0);\r\n const {\r\n data: { orderTemplate },\r\n typeName,\r\n id,\r\n context,\r\n telemetryContent,\r\n dialogStrings,\r\n isMultipleCatalogFeatureEnabledInHq,\r\n addToCartText\r\n } = addToCartButtonProps;\r\n\r\n const {\r\n // closeWindowButtonText,\r\n addToCartFailureMessage,\r\n addToCartSuccessMessage,\r\n addToCartProcessMessage,\r\n // orderTemplateErrorMessage,\r\n linesAddedToCartDialogResources\r\n } = dialogStrings;\r\n\r\n const closeLinesAddedToCartDialog = () => {\r\n setErrorMessage('');\r\n setLinesAddedToCartDialogOpen(false);\r\n };\r\n\r\n const _getModalText = (\r\n status: addOrderTemplateToCartStatus,\r\n addToCartFailureMessage: string,\r\n addToCartSuccessMessage: string,\r\n addToCartProcessMessage: string,\r\n errorMsg: string\r\n ) => {\r\n if (status === 'LOADING') {\r\n return `${addToCartProcessMessage}...`;\r\n }\r\n\r\n if (status === 'SUCCESS') {\r\n return addToCartSuccessMessage;\r\n }\r\n\r\n if (status === 'FAILED') {\r\n return errorMsg !== null ? errorMsg : addToCartFailureMessage;\r\n }\r\n\r\n return '';\r\n };\r\n\r\n const modalText = _getModalText(uploadStatus, addToCartFailureMessage, addToCartSuccessMessage, addToCartProcessMessage, errorMessage);\r\n const processStatusClass = uploadStatus.toLowerCase();\r\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.AddOrderTemplateToCart);\r\n const addOrderTemplateAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n const popupProps: IPopupProductsProps = {\r\n dialogStrings,\r\n className: 'msc-add-order-template-to-cart',\r\n processStatusClass,\r\n text: modalText,\r\n modalOpen,\r\n setModalOpen\r\n };\r\n\r\n const renderModalPopup = ;\r\n\r\n const products = orderTemplate.orderTemplateLines.map(line => line.fullProduct).filter(fullProduct => fullProduct) as FullProduct[];\r\n\r\n return (\r\n <>\r\n {renderModalPopup}\r\n
\r\n line.shouldDisable)\r\n ? 'disabled'\r\n : ''\r\n )}\r\n aria-label={addToCartText}\r\n disabled={orderTemplate.totalLines === 0 || orderTemplate.orderTemplateLines.some(line => line.shouldDisable)}\r\n type='button'\r\n onClick={async () => {\r\n setUploadStatus('LOADING');\r\n setModalOpen(true);\r\n try {\r\n await handleAddToCart(addToCartButtonProps, setAddedLinesCount, setErrorMessage, setModalOpen, setUploadStatus);\r\n setLinesAddedToCartDialogOpen(true);\r\n setUploadStatus('SUCCESS');\r\n } catch (error) {\r\n setUploadStatus('FAILED');\r\n setErrorMessage('An error occurred while adding items to the cart');\r\n }\r\n }}\r\n {...addOrderTemplateAttribute}\r\n >\r\n {addToCartText}\r\n \r\n
\r\n \r\n \r\n );\r\n};\r\n\r\nconst handleAddToCart = async (\r\n props: IOrderTemplateActionsProps,\r\n setAddedLinesCount: React.Dispatch>,\r\n setErrorMessage: React.Dispatch>,\r\n setModalOpen: React.Dispatch>,\r\n setUploadStatus: React.Dispatch>\r\n) => {\r\n const {\r\n data: { orderTemplate },\r\n context,\r\n isMultipleCatalogFeatureEnabledInHq\r\n } = props;\r\n\r\n const chunkCount = 1000;\r\n const queryResultSettings: QueryResultSettings = {\r\n Paging: {\r\n Top: chunkCount,\r\n Skip: 0\r\n }\r\n };\r\n\r\n const getPaginatedOrderTemplateLinesInput = new GetPaginatedOrderTemplateLinesInput(orderTemplate.productList.Id, queryResultSettings);\r\n\r\n let orderTemplateLines = await getPaginatedOrderTemplateLinesAction(getPaginatedOrderTemplateLinesInput, context.actionContext);\r\n\r\n let addedCartLines: CartLine[] = [];\r\n const cartState = await getCartState(context.actionContext);\r\n const cart = cartState.cart;\r\n const hasInvoiceInCart = cart?.CartLines?.find(cartLine => cartLine.IsInvoiceLine === true);\r\n if (hasInvoiceInCart) {\r\n setErrorMessage('Can not add items to a cart containing an invoice.');\r\n setUploadStatus('FAILED');\r\n } else {\r\n setAddedLinesCount(0);\r\n for (let skip = chunkCount; orderTemplateLines.lines.length > 0; skip += chunkCount) {\r\n const cartLines: CartLine[] = orderTemplateLines.lines.map(productLine => {\r\n const cartLine: CartLine = {\r\n ItemId: productLine.fullProduct?.ProductDetails.ItemId,\r\n ProductId: productLine.productListLine.ProductId,\r\n Quantity: productLine.productListLine.Quantity,\r\n TrackingId: '',\r\n UnitOfMeasureSymbol: productLine.productListLine.UnitOfMeasure,\r\n ...(isMultipleCatalogFeatureEnabledInHq && { catalogId: productLine.productListLine.CatalogId })\r\n };\r\n return cartLine;\r\n });\r\n await addCartLinesAsync({ callerContext: context.actionContext }, cartState.cart.Id, cartLines, cartState.cart.Version).catch(\r\n error => {\r\n context.telemetry.trace(error.data?.ValidationResults);\r\n context.telemetry.trace('Unable to add order template to cart.');\r\n throw error.data?.ValidationResults;\r\n }\r\n );\r\n setAddedLinesCount(prevCount => prevCount + cartLines.length);\r\n addedCartLines = addedCartLines.concat(cartLines);\r\n getPaginatedOrderTemplateLinesInput.queryResultSettings.Paging!.Skip = skip;\r\n orderTemplateLines = await getPaginatedOrderTemplateLinesAction(getPaginatedOrderTemplateLinesInput, context.actionContext);\r\n }\r\n await cartState.refreshCart({});\r\n setModalOpen(false);\r\n }\r\n};\r\n\r\nconst _reloadPage = async () => {\r\n window.location.reload();\r\n};\r\n\r\nconst _generateOrderTemplateNameDialogResources = (resources: IOrderTemplateListResources): IOrderTemplateNameDialogResources => {\r\n return {\r\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\r\n orderTemplateTitleLabel: resources.orderTemplateTitle,\r\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\r\n orderTemplateDescription: resources.createOrderTemplateDescription,\r\n\r\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\r\n\r\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\r\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\r\n };\r\n};\r\n\r\n/**\r\n * Order Template List View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nexport const OrderTemplateListViewComponent: React.FC> = props => {\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n OrderTemplateList,\r\n OrderTemplates,\r\n OrderTemplate,\r\n status,\r\n statusMessage,\r\n heading,\r\n orderTemplates,\r\n createOrderTemplateButton,\r\n templateHeaderStatusMessage\r\n } = props;\r\n // console.log(createOrderTemplateButton);\r\n return (\r\n \r\n {heading}\r\n {status !== 'SUCCESS' && statusMessage}\r\n {status === 'EMPTY' && (\r\n \r\n )}\r\n \r\n {status === 'SUCCESS' && (!OrderTemplates || !orderTemplates || !ArrayExtensions.hasElements(orderTemplates)) ? (\r\n
\r\n

{props.resources.headingForEmptyOrderTemplateList}

\r\n

{props.resources.textForEmptyOrderTemplateList}

\r\n {createOrderTemplateButton}\r\n
\r\n ) : (\r\n createOrderTemplateButton\r\n )}\r\n {templateHeaderStatusMessage}\r\n
\r\n {OrderTemplates && orderTemplates && ArrayExtensions.hasElements(orderTemplates) && (\r\n \r\n {orderTemplates.map(orderTemplate => {\r\n return renderOrderTemplate(orderTemplate, props, OrderTemplate);\r\n })}\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default OrderTemplateListViewComponent;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent, RatingComponent } from '@msdyn365-commerce/components';\nimport {\n IComponent,\n IComponentProps,\n ICoreContext,\n IGridSettings,\n IImageData,\n IImageSettings,\n Image,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { ProductPrice, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { format } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * IActiveProductProps interface.\n */\nexport interface IActiveProductProps extends IComponentProps<{ product?: ProductSearchResult }> {\n className?: string;\n imageSettings?: IImageSettings;\n savingsText?: string;\n freePriceText?: string;\n originalPriceText?: string;\n currentPriceText?: string;\n ratingAriaLabel?: string;\n}\n\n/**\n * IActiveProduct interface.\n */\nexport interface IActiveProduct extends IComponent {}\n\n/**\n * RenderDescription function.\n * @param description - Product description string.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderDescription(description?: string): JSX.Element | null {\n return

{description}

;\n}\n\n/**\n * GetRatingAriaLabel function.\n * @param rating - Product rating number.\n * @param ratingAriaLabel - Product rating aria label.\n * @returns - Returns string.\n */\nfunction getRatingAriaLabel(rating?: number, ratingAriaLabel?: string): string {\n const numberTwo: number = 2;\n if (rating && ratingAriaLabel) {\n const roundedRating = rating.toFixed(numberTwo);\n return format(ratingAriaLabel || '', roundedRating, '5');\n }\n return '';\n}\n\n/**\n * RenderRating function.\n * @param context - The core context.\n * @param typeName - The type name of the module.\n * @param ratingId - The rating id.\n * @param avgRating - The average rating.\n * @param totalRatings - The total ratings.\n * @param ariaLabel - The rating aria label.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderRating(\n context: ICoreContext,\n typeName: string,\n ratingId: string,\n avgRating?: number,\n totalRatings?: number,\n ariaLabel?: string\n): JSX.Element | null {\n if (!avgRating) {\n return null;\n }\n\n const numberRatings = totalRatings?.toString() ?? undefined;\n const ratingAriaLabel = getRatingAriaLabel(avgRating, ariaLabel);\n\n return (\n \n );\n}\n\n/**\n * RenderPrice function.\n * @param context - The core context.\n * @param typeName - The type name of the module.\n * @param productId - The product id.\n * @param basePrice - The base price of the product.\n * @param adjustedPrice - The adjusted price of the product.\n * @param savingsText - The savings text of the product.\n * @param freePriceText - The free price text.\n * @param originalPriceText - The original price text.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderPrice(\n context: ICoreContext,\n typeName: string,\n productId: string,\n basePrice?: number,\n adjustedPrice?: number,\n savingsText?: string,\n freePriceText?: string,\n originalPriceText?: string\n): JSX.Element | null {\n const price: ProductPrice = {\n BasePrice: basePrice,\n AdjustedPrice: adjustedPrice,\n CustomerContextualPrice: adjustedPrice\n };\n\n return (\n \n );\n}\n\n/**\n * RenderProductPlacementImage function.\n * @param requestContext - RequestContext.\n * @param imageSettings - The product image settings.\n * @param gridSettings - The viewport gird settings.\n * @param imageUrl - The product image url.\n * @param altText - The product image alt text.\n * @returns - Returns JSX.Element | null.\n */\nfunction renderProductPlacementImage(\n requestContext: IRequestContext,\n imageSettings?: IImageSettings,\n gridSettings?: IGridSettings,\n imageUrl?: string,\n altText?: string\n): JSX.Element | null {\n if (!imageUrl || !gridSettings || !imageSettings) {\n return null;\n }\n const imgData: IImageData = {\n src: imageUrl,\n altText: altText ? altText : ''\n };\n const imageProps = {\n gridSettings,\n imageSettings\n };\n imageProps.imageSettings.cropFocalRegion = true;\n return ;\n}\n\n/**\n * ActiveProduct constant.\n * @param props - The active product props.\n * @param props.data - The product search result data.\n * @param props.context - The core context.\n * @param props.imageSettings - The prodcut image settings.\n * @param props.savingsText - The product savings text.\n * @param props.freePriceText - The free price text.\n * @param props.originalPriceText - The original price text.\n * @param props.ratingAriaLabel - The product rating aria label.\n * @param props.typeName - The type name of the module.\n * @param props.id - The id of the product.\n * @returns - Returns JSX.Element | null.\n */\nexport const ActiveProductComponent: React.FC = ({\n data,\n context,\n imageSettings,\n savingsText,\n freePriceText,\n originalPriceText,\n ratingAriaLabel,\n typeName,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Do not need naming convention check for library prameters\n id\n}) => {\n const product = data.product;\n if (!product) {\n return null;\n }\n\n return (\n <>\n
\n
\n {renderProductPlacementImage(\n context.actionContext.requestContext,\n imageSettings,\n context.request.gridSettings,\n product.PrimaryImageUrl,\n product.Name\n )}\n
\n
\n

{product.Name}

\n {renderPrice(context, typeName, id, product.BasePrice, product.Price, savingsText, freePriceText, originalPriceText)}\n {renderDescription(product.Description)}\n {!context.app.config.hideRating &&\n renderRating(context, typeName, id, product.AverageRating, product.TotalRatings, ratingAriaLabel)}\n
\n
\n \n );\n};\n\nexport default ActiveProductComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\n/**\n * ILinksData: Interface for\n * Additional content.\n */\ninterface ILinksData {\n linkText?: string;\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n isOpenInNewTab?: boolean;\n}\n\n/**\n * IAdditionalContentData: Interface for\n * Active content.\n */\ninterface IAdditionalContentData {\n heading?: string;\n subtext?: string;\n links?: ILinksData[];\n}\n\n/**\n * IActiveImageAdditionalContentProps: Interface for\n * Active Image Additional Content Component props.\n */\nexport interface IActiveImageAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData | undefined;\n handleAdditionalTextChange(event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IActiveImageAdditionalContentViewProps: Interface for\n * Active Image Additional Content view props.\n */\nexport interface IActiveImageAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Active Image Additional content component props.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IActiveImageAdditionalContentProps) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Active Image Additional content component props.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IActiveImageAdditionalContentProps) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Active Image Additional content component props.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IActiveImageAdditionalContentProps, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'msc-active-image__details__additional-content__cta__links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.isOpenInNewTab,\n role: 'button'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Active Image additonal content item props.\n * @param props - Active Image Additional content component props.\n * @returns IActiveImageAdditionalContentItemViewProps.\n */\nconst assembleNode = (item: IAdditionalContentData, props: IActiveImageAdditionalContentProps): IActiveImageAdditionalContentViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, index);\n });\n\n return {\n additionalContentNode: { className: 'msc-active-image__details__additional-content' },\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentContainer: { className: 'msc-active-image__details__additional-content__container' },\n additionalContentItemLinks: { className: 'msc-active-image__details__additional__content__cta' }\n };\n};\n\n/**\n * ActiveImageAdditionalContent component.\n * @param props - Active Image Additional content component props.\n * @returns Active Image Additional content view props.\n */\nexport const activeImageAdditionalContent = (\n props: IActiveImageAdditionalContentProps\n): IActiveImageAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n return assembleNode(additionalContent, props);\n};\n\nexport default activeImageAdditionalContent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, Image, IRequestContext } from '@msdyn365-commerce/core';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport React from 'react';\n\n/**\n * @type AreaEvent for active points\n */\ntype AreaEvent = Event | React.MouseEvent | React.FocusEvent;\n\n/**\n * @interface IRgbColor\n * @description - The IRgbColor interface contract.\n */\nexport interface IRgbColor {\n rValue: number;\n gValue: number;\n bValue: number;\n}\n\n/**\n * @interface IArea\n * @description - The IArea interface contract.\n */\nexport interface IArea {\n areaId: string;\n coords: number[];\n href?: string;\n center?: number[];\n primaryImageUrl?: string;\n productUrl: string;\n productSearchResult?: ProductSearchResult;\n}\n\n/**\n * @interface IArea\n * @description - The IArea interface contract.\n */\nexport interface IAreaMap {\n name: string;\n areas: IArea[];\n}\n\n/**\n * @enum CanvasCalculations\n * @description - The canvas calculations enum.\n */\nexport enum CanvasCalculations {\n defaultWidth = 0,\n defaultHeight = 0,\n defaultPositionX = 0,\n defaultPositionY = 0,\n defaultScale = 1,\n halfDivisor = 2,\n doubleMultiplier = 2,\n buttonHeight = 30,\n buttonPadding = 30,\n paddingAdjustment = 3,\n expandAnimationStartWidth = 10,\n expandAnimationEndWidth = 40,\n collapseAnimationStartWidth = 40,\n collapseAnimationEndWidth = 8,\n expandRadius = 12,\n collapseRadius = 8,\n rotation = 1.57,\n startAngle = 0,\n endAngle = 7,\n clearMargin = 50,\n clearHeight = 100,\n clearWidth = 100,\n textFadeInStartValue = 0,\n textFadeOutStartValue = 0.5,\n textFadeInterval = 0.01\n}\n\n/**\n * @enum CanvasStyles\n * @description - The canvas styles enum.\n */\nexport enum CanvasStyles {\n color = '#FFFFFF',\n buttonTextClor = '#000000'\n}\n\n/**\n * @enum\n * @description - The canvas styles enum.\n */\nexport interface IImageMapperResources {\n buttonText?: string;\n altText?: string;\n}\n\n/**\n * @interface IImageMapperProps\n * @description - The IImageMapperProps interface contract.\n */\nexport interface IImageMapperProps {\n imageData: IImageData;\n areaMap: IAreaMap;\n viewPort: string;\n requestContext: IRequestContext;\n color?: string;\n buttonTextClor?: string;\n width?: number;\n imgWidth?: number;\n activeImageRefs: React.RefObject;\n imageMapperResources?: IImageMapperResources;\n onLoad?(): void;\n onClick?(area: IArea, index: number, event: AreaEvent): void;\n onFocus?(area: IArea, index: number, event: AreaEvent): void;\n onMouseEnter?(area: IArea, index: number, event: AreaEvent): void;\n onMouseLeave?(area: IArea, index: number, event: AreaEvent): void;\n}\n\n/**\n * ImageMapper.\n */\nexport class ImageMapper extends React.Component {\n private readonly _backgroundImage: React.RefObject;\n\n private readonly _container: React.RefObject;\n\n private readonly _canvas: React.RefObject;\n\n private _isDesktopViewPort: boolean = false;\n\n private _context: CanvasRenderingContext2D | null | undefined = null;\n\n public constructor(props: IImageMapperProps) {\n super(props);\n this._backgroundImage = React.createRef();\n this._container = React.createRef();\n this._canvas = React.createRef();\n }\n\n /**\n * ComponentDidMount method.\n */\n public componentDidMount(): void {\n const { viewPort } = this.props;\n this.initCanvas();\n this._isDesktopViewPort = viewPort === 'lg' || viewPort === 'xl';\n this.renderAreas();\n this._context = null;\n }\n\n /**\n * ComponentDidUpdate method.\n */\n public componentDidUpdate(): void {\n const { viewPort } = this.props;\n this.initCanvas();\n this._isDesktopViewPort = viewPort === 'lg' || viewPort === 'xl';\n }\n\n /**\n * ShouldComponentUpdate method.\n * @param nextProps - Next props.\n * @returns Returns boolean.\n */\n public shouldComponentUpdate(nextProps: IImageMapperProps): boolean {\n let shouldRender = false;\n if (nextProps !== this.props) {\n shouldRender = true;\n }\n return shouldRender;\n }\n\n /**\n * GetActiveImageWidth method - Gets the active image width.\n * @returns Returns number | undefined.\n */\n public getActiveImageWidth = (): number | undefined => {\n if (MsDyn365.isBrowser) {\n const activeImageReferenceValue = this.props.activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientWidth;\n }\n }\n return undefined;\n };\n\n /**\n * GetActiveImageHeight method - Gets the active image height.\n * @returns Returns number | undefined.\n */\n public getActiveImageHeight = (): number | undefined => {\n if (MsDyn365.isBrowser) {\n const activeImageReferenceValue = this.props.activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientHeight;\n }\n }\n return undefined;\n };\n\n /**\n * ConvertHexToRgb method - This method takes color in HEX format and returns IRgbColor color object.\n * @param hexColor -The color hex value.\n * @returns -Returns IRgbColor object.\n */\n public convertHexToRgb = (hexColor: string): IRgbColor => {\n // RegEx used to execute the conversion of the hex color to rgb value.\n const regEx = new RegExp('^#?([a-f\\\\d]{2})([a-f\\\\d]{2})([a-f\\\\d]{2})$', 'u');\n\n // RegEx.exec method executes a search for a match in a specified string. Returns a result array, or null.\n const result = regEx.exec(hexColor);\n const defaultValue = 0;\n return result\n ? {\n rValue: Number.parseInt(result[1], 16),\n gValue: Number.parseInt(result[2], 16),\n bValue: Number.parseInt(result[3], 16)\n }\n : {\n rValue: defaultValue,\n gValue: defaultValue,\n bValue: defaultValue\n };\n };\n\n /**\n * ApplyFadingTransition method - Applys fading transition to button text.\n * @param text -The button text.\n * @param coords -The coordinates.\n * @param rgbColor -The RGB color object.\n * @param alpha -The alpha value of the button text.\n */\n public applyFadingTransition = (text: string, coords: number[], rgbColor: IRgbColor, alpha: number): void => {\n const halfDivisor: number = CanvasCalculations.halfDivisor;\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (context && this._isDesktopViewPort) {\n const buttonPadding = CanvasCalculations.buttonPadding;\n const paddingAdjustment = CanvasCalculations.paddingAdjustment;\n const buttonWidth = context.measureText(text).width + buttonPadding;\n context.fillStyle = `rgba(${rgbColor.rValue}, ${rgbColor.gValue}, ${rgbColor.bValue}, ${alpha} )`;\n if (MsDyn365.isBrowser && document.body.parentElement && document.body.parentElement.getAttribute('dir') === 'rtl') {\n context.fillText(text, coords[0] + buttonWidth / halfDivisor - buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n } else {\n context.fillText(text, coords[0] - buttonWidth / halfDivisor + buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n }\n }\n };\n\n /**\n * Draw button method - Draws button and contains fixed hight, padding values.\n * @param text -The button text.\n * @param coords -The coordinates.\n */\n public drawButton = (text: string, coords: number[]): void => {\n const { color = CanvasStyles.color, buttonTextClor = CanvasStyles.buttonTextClor } = this.props;\n const halfDivisor: number = CanvasCalculations.halfDivisor;\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (context && this._isDesktopViewPort) {\n const buttonHeight = CanvasCalculations.buttonHeight;\n const buttonPadding = CanvasCalculations.buttonPadding;\n const paddingAdjustment = CanvasCalculations.paddingAdjustment;\n const buttonWidth = context.measureText(text).width + buttonPadding;\n const buttonPositionX = coords[0] - buttonWidth / halfDivisor;\n const buttonPositionY = coords[1] - buttonHeight / halfDivisor;\n const arcsize = buttonHeight / halfDivisor;\n\n context.beginPath();\n context.moveTo(buttonPositionX + arcsize, buttonPositionY);\n context.lineTo(buttonPositionX + buttonWidth - arcsize, buttonPositionY);\n context.arcTo(\n buttonPositionX + buttonWidth,\n buttonPositionY,\n buttonPositionX + buttonWidth,\n buttonPositionY + arcsize,\n arcsize\n );\n context.lineTo(buttonPositionX + buttonWidth, buttonPositionY + buttonHeight - arcsize);\n context.arcTo(\n buttonPositionX + buttonWidth,\n buttonPositionY + buttonHeight,\n buttonPositionX + buttonWidth - arcsize,\n buttonPositionY + buttonHeight,\n arcsize\n );\n context.lineTo(buttonPositionX + arcsize, buttonPositionY + buttonHeight);\n context.arcTo(buttonPositionX, buttonPositionY + buttonHeight, buttonPositionX, buttonPositionY - arcsize, arcsize);\n context.lineTo(buttonPositionX, buttonPositionY + arcsize);\n context.arcTo(buttonPositionX, buttonPositionY, buttonPositionX + arcsize, buttonPositionY, arcsize);\n context.lineTo(buttonPositionX + arcsize, buttonPositionY);\n context.stroke();\n context.closePath();\n context.fillStyle = color;\n context.fill();\n context.fillStyle = buttonTextClor;\n if (MsDyn365.isBrowser && document.body.parentElement && document.body.parentElement.getAttribute('dir') === 'rtl') {\n context.fillText(text, coords[0] + buttonWidth / halfDivisor - buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n } else {\n context.fillText(text, coords[0] - buttonWidth / halfDivisor + buttonPadding / halfDivisor, coords[1] + paddingAdjustment);\n }\n }\n };\n\n /**\n * ExpandAnimation method - Shows expand animation and contains fixed values to draw the circle and ellipse shapes.\n * @param coords -Coordinates.\n */\n public expandAnimation = (coords: number[]): void => {\n const { color = CanvasStyles.color, buttonTextClor = CanvasStyles.buttonTextClor } = this.props;\n const buttonText = this.props.imageMapperResources?.buttonText;\n let animationStartWidth = CanvasCalculations.expandAnimationStartWidth;\n const pointPositionX = coords[0];\n const pointPositionY = coords[1];\n const animationEndWidth = CanvasCalculations.expandAnimationEndWidth;\n const radius = CanvasCalculations.expandRadius;\n const rotation = CanvasCalculations.rotation;\n const startAngle = CanvasCalculations.startAngle;\n const endAngle = CanvasCalculations.endAngle;\n let textFadeInValue = CanvasCalculations.textFadeInStartValue;\n const buttonTextClorInRgb = this.convertHexToRgb(buttonTextClor.toLocaleLowerCase());\n\n /**\n * Animate method - Reders expand animation.\n */\n const animate = () => {\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (!context) {\n return;\n }\n context.beginPath();\n context.ellipse(pointPositionX, pointPositionY, radius, animationStartWidth, rotation, startAngle, endAngle);\n context.fillStyle = color;\n context.fill();\n context.fillStyle = color;\n if (buttonText) {\n if (animationStartWidth < animationEndWidth) {\n requestAnimationFrame(animate);\n this.applyFadingTransition(buttonText, coords, buttonTextClorInRgb, textFadeInValue);\n textFadeInValue += CanvasCalculations.textFadeInterval;\n animationStartWidth++;\n } else {\n this.drawButton(buttonText, [pointPositionX, pointPositionY]);\n }\n }\n };\n\n if (this._isDesktopViewPort) {\n animate();\n }\n };\n\n /**\n * CollapseAnimation method - Shows collapse animation and contains fixed values to draw the circle and ellipse shapes.\n * @param coords -Coordinates.\n */\n public collapseAnimation = (coords: number[]): void => {\n const { color = CanvasStyles.color, buttonTextClor = CanvasStyles.buttonTextClor } = this.props;\n const buttonText = this.props.imageMapperResources?.buttonText;\n let animationStartWidth = CanvasCalculations.collapseAnimationStartWidth;\n const pointPositionX = coords[0];\n const pointPositionY = coords[1];\n const animationEndWidth = CanvasCalculations.collapseAnimationEndWidth;\n const rotation = CanvasCalculations.rotation;\n const clearMargin = CanvasCalculations.clearMargin;\n const clearHeight = CanvasCalculations.clearHeight;\n const clearWidth = CanvasCalculations.clearWidth;\n const radius = CanvasCalculations.collapseRadius;\n const startAngle = CanvasCalculations.startAngle;\n const endAngle = CanvasCalculations.endAngle;\n let textFadeOutValue = CanvasCalculations.textFadeOutStartValue;\n const buttonTextClorInRgb = this.convertHexToRgb(buttonTextClor.toLocaleLowerCase());\n\n /**\n * Animate method - Renders collapse animation.\n */\n const animate = () => {\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n if (!context) {\n return;\n }\n context.beginPath();\n context.clearRect(pointPositionX - clearMargin, pointPositionY - clearMargin, clearWidth, clearHeight);\n context.ellipse(pointPositionX, pointPositionY, radius, animationStartWidth, rotation, startAngle, endAngle);\n context.fillStyle = color;\n context.fill();\n if (animationEndWidth < animationStartWidth && buttonText) {\n requestAnimationFrame(animate);\n this.applyFadingTransition(buttonText, coords, buttonTextClorInRgb, textFadeOutValue);\n textFadeOutValue -= CanvasCalculations.textFadeInterval;\n animationStartWidth--;\n }\n };\n\n if (this._isDesktopViewPort) {\n animate();\n }\n };\n\n /**\n * DrawCircle method - Renders active points.\n * @param coords -Coordinates.\n */\n public drawCircle = (coords: number[]): void => {\n const { color = CanvasStyles.color, viewPort } = this.props;\n const doubleMultiplier: number = CanvasCalculations.doubleMultiplier;\n const startAngle: number = CanvasCalculations.startAngle;\n const context = this._canvas.current?.getContext('2d') ?? this._context;\n const radius = viewPort === 'xs' || viewPort === 'sm' ? coords[2] * doubleMultiplier : coords[2];\n if (!context) {\n return;\n }\n context.fillStyle = color;\n context.beginPath();\n context.strokeStyle = color;\n context.arc(coords[0], coords[1], radius, startAngle, Math.PI * doubleMultiplier);\n context.closePath();\n context.stroke();\n context.fill();\n };\n\n /**\n * ScaleCoords method - To scale the active point coordinates based on the window size.\n * @param coords -Coordinates.\n * @returns -Returns number[].\n */\n public scaleCoords = (coords: number[]): number[] => {\n const { imgWidth } = this.props;\n const defaultWidth: number = CanvasCalculations.defaultWidth;\n const defaultScale: number = CanvasCalculations.defaultScale;\n\n // Calculate scale based on current 'width' and the original 'imgWidth'\n const width = this.getActiveImageWidth();\n const scale = width && imgWidth && imgWidth > defaultWidth ? width / imgWidth : defaultScale;\n return coords.map(coord => coord * scale);\n };\n\n /**\n * RenderPrefilledAreas method - To render active points in case of events.\n */\n public renderPrefilledAreas = (): void => {\n const { areaMap } = this.props;\n areaMap.areas.map(area => {\n this.drawCircle(this.scaleCoords(area.coords));\n return null;\n });\n };\n\n /**\n * ComputeCenter method - To re-calculate the center of active point based on window size.\n * @param area -IArea.\n * @returns -Returns number[].\n */\n public computeCenter = (area: IArea): number[] => {\n const scaledCoords = this.scaleCoords(area.coords);\n return [scaledCoords[0], scaledCoords[1]];\n };\n\n /**\n * HandleHoverOn method - To handle mouse hover on event.\n * @param area -IArea.\n */\n public handleHoverOn = (area: IArea): void => {\n if (area.center && this._canvas.current) {\n this.drawCircle(this.scaleCoords(area.coords));\n this.expandAnimation(area.center);\n }\n };\n\n /**\n * HandleHoverOff method - To handle mouse hover off event.\n * @param area -IArea.\n */\n public handleHoverOff = (area: IArea): void => {\n if (this._canvas.current) {\n const context = this._canvas.current.getContext('2d') ?? this._context;\n const canvasPositionX: number = CanvasCalculations.defaultPositionX;\n const canvasPositionY: number = CanvasCalculations.defaultPositionY;\n\n if (!context) {\n return;\n }\n context.clearRect(canvasPositionX, canvasPositionY, this._canvas.current.width, this._canvas.current.height);\n this.renderPrefilledAreas();\n if (area.center) {\n this.collapseAnimation(area.center);\n }\n }\n };\n\n /**\n * Click method - Mouse click event.\n * @param area -IArea.\n * @param index - Number.\n * @returns - Void.\n */\n public click = (area: IArea, index: number) => (event: AreaEvent): void => {\n const { onClick } = this.props;\n if (onClick) {\n event.preventDefault();\n onClick(area, index, event);\n }\n };\n\n /**\n * HoverOn method - Mouse hover on event.\n * @param area -IArea.\n * @param index - Number.\n * @returns - Void.\n */\n public hoverOn = (area: IArea, index: number) => (event: AreaEvent): void => {\n const { onMouseEnter } = this.props;\n this.handleHoverOn(area);\n if (onMouseEnter) {\n onMouseEnter(area, index, event);\n }\n };\n\n /**\n * HoverOff method - Mouse hover off event.\n * @param area - IArea.\n * @param index - Number.\n * @returns - Void.\n */\n public hoverOff = (area: IArea, index: number) => (event: AreaEvent): void => {\n const { onMouseLeave } = this.props;\n\n this.handleHoverOff(area);\n\n if (onMouseLeave) {\n onMouseLeave(area, index, event);\n }\n };\n\n /**\n * RenderAreas method - Renders active points at given coordinates.\n * @returns -Returns JSX.Element[].\n */\n public renderAreas = (): JSX.Element[] => {\n const { areaMap, viewPort } = this.props;\n const buttonText = this.props.imageMapperResources?.buttonText ? this.props.imageMapperResources.buttonText : '';\n const altText = this.props.imageMapperResources?.altText ? this.props.imageMapperResources.altText : '';\n const doubleMultiplier: number = CanvasCalculations.doubleMultiplier;\n\n return areaMap.areas.map((area, index) => {\n const scaledCoords = this.scaleCoords(area.coords);\n const xsRadius = area.coords[2] * doubleMultiplier;\n if (viewPort === 'xs') {\n scaledCoords[2] = xsRadius;\n }\n const center = this.computeCenter(area);\n const extendedArea = { ...area, scaledCoords, center };\n const areaKey = `area-${index}`;\n const altTextWithProductName = altText\n .replace('{buttonText}', buttonText ? buttonText : '')\n .replace('{productName}', area.productSearchResult?.Name ? area.productSearchResult.Name : '');\n return (\n \n );\n });\n };\n\n /**\n * InitCanvas method - To render the canvas.\n */\n public initCanvas = (): void => {\n if (!this._canvas.current || !this._backgroundImage.current || !this._container.current) {\n return;\n }\n\n const { color, onLoad } = this.props;\n const defaultWidth: number = CanvasCalculations.defaultWidth;\n const defaultHeight: number = CanvasCalculations.defaultHeight;\n\n const canvasWidth = this.getActiveImageWidth() ?? defaultWidth;\n const canvasHeight = this.getActiveImageHeight() ?? defaultHeight;\n\n this._canvas.current.width = canvasWidth;\n this._canvas.current.height = canvasHeight;\n this._container.current.style.width = `${canvasWidth}px`;\n\n const context = this._canvas.current.getContext('2d') ?? this._context;\n if (!context) {\n return;\n }\n context.fillStyle = color ?? '';\n\n if (onLoad) {\n onLoad();\n }\n\n this.renderPrefilledAreas();\n };\n\n /**\n * Render method - To render the image mapper component with active image, canvas and active points.\n * @returns -Returns JSX.Element | null.\n */\n public render(): JSX.Element | null {\n const { imageData, areaMap, requestContext } = this.props;\n\n return (\n
\n \n \n \n {this.renderAreas()}\n \n
\n );\n }\n}\n\nexport default ImageMapper;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getProductPageUrlSync } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport {\n activeImageAdditionalContent,\n ActiveProductComponent,\n IActiveImageAdditionalContentViewProps,\n IArea,\n IAreaMap,\n IImageMapperProps,\n ImageMapper\n} from '../active-image-utilities';\nimport { IActiveImageData } from './active-image.data';\nimport { IActiveImageProps } from './active-image.props.autogenerated';\n\n/**\n * @type AreaEvent for active points\n */\ntype AreaEvent = Event | React.MouseEvent | React.FocusEvent;\n\n/**\n * @interface IActiveImageViewProps\n * @classdesc - The IActiveImageViewProps interface contract.\n */\nexport interface IActiveImageViewProps extends IActiveImageProps<{}>, IImageMapperProps {\n activePointContainer: IModuleProps;\n activePointDetailsContainer: INodeProps;\n imageMapper: React.ReactNode;\n overlay: React.ReactNode;\n productCard: React.ReactNode;\n title?: React.ReactNode;\n text?: React.ReactNode;\n links?: React.ReactNode;\n detailsContainer?: INodeProps;\n detailsContainerCta?: INodeProps;\n additionalContent?: IActiveImageAdditionalContentViewProps;\n productCardleftPosition: number;\n productCardtopPosition: number;\n handleAdditionalText?(event: MsDyn365.ContentEditableEvent): void;\n handleAdditionalParagraph?(event: MsDyn365.ContentEditableEvent): void;\n handleAdditionalLinkText?(event: MsDyn365.ContentEditableEvent): void;\n}\n\n/**\n * @interface IActiveImageLinksData\n * @classdesc - The IActiveImageLinksData interface contract.\n */\nexport interface IActiveImageLinksData {\n linkText?: string;\n linkUrl: MsDyn365.ILinkData;\n ariaLabel?: string;\n willOpenInNewTab?: boolean;\n}\n\n/**\n * @interface IActiveImageState\n * @classdesc - The IActiveImageState interface contract.\n */\ninterface IActiveImageState {\n clientWidth: number;\n area: IArea | null;\n viewport: string;\n overlayClass: string;\n}\n\n/**\n * @enum ActiveImageConstants\n * @description - The active image constants enum.\n */\nexport enum ActiveImageConstants {\n timeoutInterval = 200,\n enterKey = 'Enter',\n escKey = 'Escape'\n}\n\n/**\n *\n * ActiveImage class.\n * @extends {React.PureComponent & IImageMapperProps, IActiveImageState>}\n */\nexport class ActiveImage extends React.PureComponent & IImageMapperProps, IActiveImageState> {\n private readonly _telemetryContent: ITelemetryContent;\n\n private _isDesktopViewPort: boolean;\n\n private readonly _defaultProductCardWidth: number = 315;\n\n private readonly _defaultProdutCardHight: number = 490;\n\n private readonly _activePoints: IArea[] = [];\n\n private readonly _activeImageRefs: React.RefObject;\n\n private readonly _activeImageClass: string;\n\n private readonly _productCardDivRef: React.RefObject;\n\n public constructor(props: IActiveImageProps & IImageMapperProps) {\n super(props);\n this._telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n this._activeImageClass = `msc-active-image-${this.getActiveImageId()}`;\n this.state = {\n clientWidth: 0,\n area: null,\n viewport,\n overlayClass: ''\n };\n this._isDesktopViewPort = viewport === 'lg' || viewport === 'xl';\n this._activeImageRefs = React.createRef();\n this._productCardDivRef = React.createRef();\n }\n\n public componentDidMount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.addEventListener('resize', this.updateClientWidth);\n document.addEventListener('keydown', this.keyDown, false);\n document.addEventListener('mousedown', this._handleOutsideClick);\n }\n setTimeout(() => {\n this.updateClientWidth();\n }, ActiveImageConstants.timeoutInterval);\n\n if (MsDyn365.msdyn365Commerce.isBrowser && this._activeImageRefs.current) {\n const images: HTMLCollectionOf = this._activeImageRefs.current.getElementsByClassName(\n 'msc-thumbnail_image msc-active-image-img'\n );\n if (ArrayExtensions.hasElements(Array.from(images))) {\n images[0].removeAttribute('usemap');\n }\n }\n }\n\n /**\n * AddActivePoints method - To handle add Active Points.\n * @param area - IArea.\n * @param product - ProductSearchResult.\n * @param coords - Coords.\n * @param productUrl - String.\n */\n public addActivePoints = (area: IArea | undefined, product: ProductSearchResult, coords: number[], productUrl: string): void => {\n if (!area) {\n this._activePoints.push({\n areaId: product.RecordId.toString(),\n coords,\n primaryImageUrl: product.PrimaryImageUrl ?? '',\n productUrl,\n productSearchResult: product\n });\n }\n };\n\n /**\n * ComponentWillUnmount method.\n */\n public componentWillUnmount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.removeEventListener('resize', this.updateClientWidth);\n document.removeEventListener('keydown', (this.keyDown as unknown) as EventListener, false);\n document.removeEventListener('mousedown', this._handleOutsideClick, false);\n }\n }\n\n /**\n * UpdateClientWidth method to update client width in state.\n */\n public updateClientWidth = (): void => {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n this.setState({ clientWidth: this.getActiveImageWidth(), viewport });\n this._isDesktopViewPort = viewport === 'lg' || viewport === 'xl';\n };\n\n /**\n * Render method.\n * @returns - Returns JSX.Element | null.\n */\n public render(): JSX.Element | null {\n const viewProps: IActiveImageViewProps = {\n ...(this.props as IImageMapperProps & IActiveImageProps<{}>),\n activePointContainer: {\n moduleProps: this.props,\n className: classnames('msc-active-image', this._activeImageClass, this.props.config.className)\n },\n activePointDetailsContainer: {\n tag: 'div',\n className: classnames('msc-active-image-wrapper', this._activeImageClass, this.props.config.className),\n ref: this._activeImageRefs\n },\n imgWidth: this.props.config.canvasWidth,\n imageMapper: this.renderImageMapper(),\n overlay: this.renderOverlay(),\n productCard: this.renderProductCard(),\n productCardleftPosition: this.getProductCardPositionX(),\n productCardtopPosition: this.getProductCardPositionY(),\n title: this.renderActiveImageDetailsHeading(),\n text: this.renderActiveImageDetailsParagraph(),\n links: this.renderActiveImageDetailsLinks(),\n detailsContainer: { className: 'msc-active-image__details' },\n detailsContainerCta: { className: 'msc-active-image__details__cta' },\n additionalContent: activeImageAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleAdditionalLinkText: this.handleAdditionalTextChange\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * RenderImageMapper method - To render image mapper.\n * @returns - Returns React.ReactNode | null.\n */\n public renderImageMapper = (): React.ReactNode | null => {\n const { config, context } = this.props;\n const defaultPosition: number = 0;\n const defaultLength: number = 0;\n const productResults = this.props.data.products.result;\n if (config.activePoints && productResults) {\n for (const product of productResults) {\n for (const configProduct of config.activePoints) {\n if (product.ItemId === configProduct.itemId) {\n const productUrl = getProductPageUrlSync(product.Name ?? '', product.RecordId, context.actionContext, undefined);\n const coords = [\n configProduct.xPosition ?? defaultPosition,\n configProduct.yPosition ?? defaultPosition,\n configProduct.radius ?? defaultPosition\n ];\n const area = this._activePoints.find(activePoint => JSON.stringify(activePoint.coords) === JSON.stringify(coords));\n this.addActivePoints(area, product, coords, productUrl);\n }\n }\n }\n }\n const mappedArea: IAreaMap = {\n name: `map-${this._activeImageClass}`,\n areas: this._activePoints.length > defaultLength ? this._activePoints : []\n };\n\n // If image is null, we want to render the placeholder SVG - by passing image data with empty src\n return (\n \n );\n };\n\n /**\n * EnterArea method - To handle mouse enter event.\n * @param area - Active point area.\n * @param index - Active point index.\n * @param event - Active point AreaEvent.\n */\n public enterArea = (area: IArea, index: number, event: AreaEvent): void => {\n this.setState({ area, overlayClass: 'msc-active-image-overlay' });\n if (this.props.onMouseEnter) {\n this.props.onMouseEnter(area, index, event);\n }\n if (event.type.toLocaleLowerCase() === 'click' && this._isDesktopViewPort) {\n window.open(area.productUrl, '_self');\n }\n };\n\n /**\n * LeaveArea method - To handle mouse leave event.\n */\n public leaveArea = (): void => {\n if (this._isDesktopViewPort) {\n this.resetState();\n }\n };\n\n /**\n * ResetState method - To reset the state for area and overlayclass.\n */\n public resetState = (): void => {\n this.setState({ area: null, overlayClass: '' });\n };\n\n /**\n * RenderProductComponent method - To render the product card with product information.\n * @returns - Returns React.ReactNode.\n */\n public renderProductComponent = (): React.ReactNode => {\n if (this.state.area?.productSearchResult) {\n const baseImageUrl: string = this.props.context.request.apiSettings.baseImageUrl;\n const imageUrl: string = this.state.area.primaryImageUrl ?? '';\n const primaryImageUrl: string = `${baseImageUrl}${imageUrl}`;\n const product: ProductSearchResult = this.state.area.productSearchResult;\n product.PrimaryImageUrl = primaryImageUrl;\n\n return (\n \n );\n }\n return React.Fragment;\n };\n\n /**\n * RenderProductCard method - To render product cards.\n * @returns - Returns React.ReactNode.\n */\n public renderProductCard = (): React.ReactNode => {\n const { area } = this.state;\n\n return (\n <>\n {area?.center && (\n
\n
\n {!this._isDesktopViewPort &&
\n
\n )}\n \n );\n };\n\n /**\n * RenderOverlay method - To render overlay for non desktop viewports.\n * @returns - Returns React.ReactNode.\n */\n public renderOverlay = (): React.ReactNode => {\n return <>{!this._isDesktopViewPort &&
};\n };\n\n /**\n * GetProductCardPositionX method - Provides product card x position to the left or right of active point based on available space.\n * For xs, sm and md viewports it provides x position for the center alignment.\n * @returns - Returns number.\n */\n public getProductCardPositionX = (): number => {\n const defaultImageSettings = this.getDefaultImageSettings();\n const productImageSettingsWidth = this.props.config.productImageSettings?.viewports\n ? this.props.config.productImageSettings.viewports.lg?.w\n : defaultImageSettings.viewports.lg?.w;\n const defaultPositionX: number = 0;\n const halfDivisor: number = 2;\n const productCardWidth: number = productImageSettingsWidth ? productImageSettingsWidth : this._defaultProductCardWidth;\n const { area, clientWidth, viewport } = this.state;\n const pointPositionX = area?.center?.[0] ?? clientWidth / halfDivisor;\n const leftAllignPosition = pointPositionX - productCardWidth - productCardWidth / halfDivisor;\n const rightAllignPosition = pointPositionX + productCardWidth / halfDivisor;\n let position: number = (clientWidth - productCardWidth) / halfDivisor;\n if (viewport !== 'xs' && viewport !== 'sm' && viewport !== 'md') {\n if (leftAllignPosition < defaultPositionX) {\n position = rightAllignPosition;\n } else {\n position = leftAllignPosition;\n }\n }\n return position;\n };\n\n /**\n * GetProductCardPositionY method - Provides product card y position in center with respect to active point.\n * For xs, sm and md viewports it provides y position for the center alignment.\n * @returns - Returns number.\n */\n public getProductCardPositionY = (): number => {\n const defaultImageSettings = this.getDefaultImageSettings();\n const productImageSettingsHeight = this.props.config.productImageSettings?.viewports\n ? this.props.config.productImageSettings.viewports.lg?.h\n : defaultImageSettings.viewports.lg?.h;\n const halfDivisor: number = 2;\n const { area, viewport } = this.state;\n const produtCardHight: number = productImageSettingsHeight ? productImageSettingsHeight : this._defaultProdutCardHight;\n const pointPositionY = (this.getActiveImageHeight() - produtCardHight) / halfDivisor;\n let position: number = pointPositionY;\n if (viewport !== 'xs' && viewport !== 'sm' && viewport !== 'md') {\n position = (area?.center?.[1] ?? this.getActiveImageHeight() / halfDivisor) - produtCardHight / halfDivisor;\n }\n return position;\n };\n\n /**\n * GetDefaultImageSettings method.\n * @returns MsDyn365.IImageSettings.\n */\n public getDefaultImageSettings = (): MsDyn365.IImageSettings => {\n const defaultImageSettings: MsDyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=275&h=275&m=6', w: 275, h: 275 },\n lg: { q: 'w=275&h=275&m=6', w: 275, h: 275 },\n xl: { q: 'w=275&h=275&m=6', w: 275, h: 275 }\n },\n lazyload: true\n };\n\n return defaultImageSettings;\n };\n\n /**\n * KeyDown method - To handle keydown event.\n * @param event - KeyboardEvent.\n */\n public keyDown = (event: KeyboardEvent): void => {\n if (event.key === ActiveImageConstants.enterKey) {\n const target: HTMLElement = event.target as HTMLElement;\n if (target.nodeName === 'AREA') {\n const area: HTMLAreaElement = target as HTMLAreaElement;\n if (area.href) {\n window.open(area.href, '_self');\n }\n }\n }\n if (event.key === ActiveImageConstants.escKey) {\n this.resetState();\n }\n };\n\n /**\n * GetActiveImageWidth method - To get active image width.\n * @returns Returns number.\n */\n public getActiveImageWidth = (): number => {\n const defaultWidth: number = 0;\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n const activeImageReferenceValue = this._activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientWidth;\n }\n }\n return defaultWidth;\n };\n\n /**\n * GetActiveImageHeight method - To get active image height.\n * @returns Returns number.\n */\n public getActiveImageHeight = (): number => {\n const defaultHeight: number = 0;\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n const activeImageReferenceValue = this._activeImageRefs;\n if (activeImageReferenceValue.current !== null) {\n return activeImageReferenceValue.current.clientHeight;\n }\n }\n return defaultHeight;\n };\n\n /**\n * HandleLinkTextChange method - To handle link text change event.\n * @param linkIndex - The link index.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n /**\n * HandleTextChange method - To handle text change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * HandleParagraphChange method - To handle paragraph change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n /**\n * HandleAdditionalTextChange method - To handle additional text change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalTextChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent.heading = event.target.value;\n }\n }\n\n /**\n * HandleAdditionalLinkTextChange method - To handle additional link text change event.\n * @param linkIndex - The link index.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\n const additionalContent = this.props.config.additionalContent ?? {};\n if (additionalContent.links) {\n additionalContent.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n /**\n * HandleAdditionalParagraphChange method - To handle additional paragraph change event.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalParagraphChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent.subtext = event.target.value;\n }\n }\n\n /**\n * RenderActiveImageDetailsLinks method - To render active image details links.\n * @returns - React node.\n */\n public renderActiveImageDetailsLinks = (): React.ReactNode[] | undefined => {\n const { links } = this.props.config;\n const payLoad = getPayloadObject('click', this._telemetryContent, '');\n\n return links?.map((linkData: IActiveImageLinksData, index: number) => {\n payLoad.contentAction.etext = linkData.linkText;\n const attributes = getTelemetryAttributes(this._telemetryContent, payLoad);\n const linkId = index;\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: linkData.ariaLabel,\n className: 'msc-active-image__details__cta__link',\n linkText: linkData.linkText,\n linkUrl: linkData.linkUrl.destinationUrl,\n openInNewTab: linkData.willOpenInNewTab,\n role: 'button',\n additionalProperties: attributes\n };\n\n return (\n {\n this.handleLinkTextChange(index, event);\n },\n requestContext: this.props.context.request\n }}\n />\n );\n });\n };\n\n /**\n * RenderActiveImageDetailsHeading method - To render active image details heading.\n * @returns - React.ReactNode | undefined.\n */\n public renderActiveImageDetailsHeading = (): React.ReactNode | undefined => {\n const { heading } = this.props.config;\n\n return (\n heading && (\n \n )\n );\n };\n\n /**\n * RenderActiveImageDetailsParagraph method - To render active image details paragraph.\n * @returns - React.ReactNode | undefined.\n */\n public renderActiveImageDetailsParagraph = (): React.ReactNode | undefined => {\n const { paragraph } = this.props.config;\n\n return (\n paragraph && (\n \n )\n );\n };\n\n /**\n * GetActiveImageId - To get active image id from src.\n * @returns - String.\n */\n public getActiveImageId = (): string => {\n const { activeImage } = this.props.config;\n let activeImageId: string = '';\n if (activeImage?.src) {\n const activeImageSource = activeImage.src.split('/');\n const decrementOne: number = 1;\n const activeImageIdPart = activeImageSource[activeImageSource.length - decrementOne].split('?');\n activeImageId = activeImageIdPart[0] ?? '';\n }\n return activeImageId;\n };\n\n /**\n * Handle outside click method - To handle outside click of the active image product.\n * @param event - Mouse event.\n */\n private readonly _handleOutsideClick = (event: MouseEvent) => {\n if (this._productCardDivRef.current?.contains(event.target as Node)) {\n return;\n }\n this.resetState();\n };\n}\nexport default ActiveImage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActiveImageAdditionalContentViewProps } from '../active-image-utilities';\nimport { IActiveImageViewProps } from './active-image';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IActiveImageAdditionalContentViewProps) => {\n return (\n \n {additionalContent.heading}\n \n {additionalContent.text}\n {additionalContent.links}\n \n \n );\n};\n\n/**\n * Render View.\n * @param props - The view props.\n * @returns -The JSX Element.\n */\nexport const activeImageView: React.FC = props => {\n return (\n \n \n {props.imageMapper}\n \n {props.title}\n {props.text}\n {props.additionalContent && renderAdditionalContent(props.additionalContent)}\n \n {props.links}\n \n \n \n \n {props.overlay}\n {props.productCard}\n \n \n );\n};\n\nexport default activeImageView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICarouselData } from './carousel.data';\nimport { ICarouselProps } from './carousel.props.autogenerated';\nimport { ICarouselState } from './carousel.state';\n\nexport interface ICarouselViewProps extends ICarouselProps<{}>, ICarouselState {\n closeAnimation: string;\n carouselContainer: IModuleProps;\n telemetryContent: ITelemetryContent;\n next(): void;\n previous(): void;\n onIndicatorsClickHandler(): void;\n handleDismissCarousel(): void;\n handleOnExited(): void;\n handleOnExiting(): void;\n}\n\n/**\n *\n * CarouselModule component.\n * @extends {React.PureComponent>}\n */\nclass CarouselModule extends React.PureComponent, ICarouselState> {\n private animating: boolean;\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: ICarouselProps, state: ICarouselState) {\n super(props);\n this.state = { activeIndex: 0, closeNow: false, dismissCarousel: false };\n this.animating = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n if (this.props.context && this.props.context.request && this.props.context.request.cookies) {\n if (this.props.context.request.cookies.get(`CarouselDismiss_${this.props.id}`) === undefined) {\n this.props.context.request.cookies.set(`CarouselDismiss_${this.props.id}`, 'false');\n this.setState({ dismissCarousel: false });\n }\n }\n }\n\n public render(): JSX.Element | null {\n if (this.state.dismissCarousel) {\n return null;\n }\n\n const { className } = this.props.config;\n\n const viewProps = {\n // Context for telemetry and raw data for C1 to do customization\n // Including computed data, state data and methods\n ...this.props,\n ...this.state,\n telemetryContent: this.telemetryContent,\n carouselContainer: {\n moduleProps: this.props,\n className: classnames('ms-carousel', className)\n },\n closeAnimation: this.state.closeNow ? 'close-now' : '',\n next: this._next,\n previous: this._previous,\n onIndicatorsClickHandler: this._goToIndex,\n handleDismissCarousel: this._handleDismissCarousel,\n handleOnExited: this._onExited,\n handleOnExiting: this._onExiting\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Function implementation to dismiss the Carousel.\n */\n private readonly _handleDismissCarousel = (): void => {\n if (this.props.context && this.props.context.request && this.props.context.request.cookies) {\n this.props.context.request.cookies.set(`CarouselDismiss_${this.props.id}`, 'true');\n this.setState({ dismissCarousel: true });\n }\n };\n\n /**\n * Function implementation to move to next slide.\n */\n private readonly _next = (): void => {\n const { slots } = this.props;\n const nextIndex = this.state.activeIndex === (slots && slots.content && slots.content.length - 1) ? 0 : this.state.activeIndex + 1;\n\n if (this.animating) {\n this.setState({ closeNow: true, activeIndex: nextIndex });\n } else {\n this.setState({ activeIndex: nextIndex });\n }\n };\n\n /**\n * Function implementation to move to previous slide.\n */\n private readonly _previous = (): void => {\n const slots = this.props.slots && this.props.slots.content;\n const nextIndex = this.state.activeIndex === 0 ? (slots ? slots.length - 1 : 0) : this.state.activeIndex - 1;\n\n if (this.animating) {\n this.setState({ closeNow: true, activeIndex: nextIndex });\n } else {\n this.setState({ activeIndex: nextIndex });\n }\n };\n\n private readonly _onExiting = (): void => {\n this.animating = true;\n };\n\n private readonly _onExited = (): void => {\n this.animating = false;\n this.setState({ closeNow: false });\n };\n\n /**\n * Function implementation to move to a given slide.\n * @param newIndex\n */\n private readonly _goToIndex = (newIndex: number): void => {\n if (this.animating) {\n return;\n }\n this.setState({ activeIndex: newIndex });\n };\n}\n\nexport default CarouselModule;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Carousel } from '@msdyn365-commerce/components';\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICarouselViewProps } from './carousel';\n\n/**\n * Returns item slots.\n * @returns Array of item slots.\n * @param props -Props.\n */\nconst retrieveItems = (props: ICarouselViewProps): React.ReactNode[] => {\n let items = [];\n items = props.slots && props.slots.content && props.slots.content.length > 0 ? props.slots.content : [];\n return items;\n};\nconst CarouselView: React.FC = props => (\n \n \n \n);\n\nexport default CarouselView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddOrderTemplateToCartComponent, ILinesAddedToCartDialogResources } from '@msdyn365-commerce/components';\nimport { getUrlSync, ICoreContext, IImageSettings, Image, ITelemetry } from '@msdyn365-commerce/core';\nimport { ProductList, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n getFallbackImageUrl,\n getProductUrlSync,\n OrderTemplate,\n OrderTemplateLine,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateActionMessageState } from '../order-template-list';\n\nexport interface ISingleOrderTemplateProps extends ProductList {\n orderTemplateState: IOrderTemplateActionMessageState;\n name?: string;\n orderTemplate: OrderTemplate;\n context: ICoreContext;\n imageSettings?: IImageSettings;\n enableImageProductLink?: boolean;\n removeFromOrderTemplateListText: string;\n addToBagText: string;\n index: number;\n itemKey: string;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n handlers: {\n onRemoveOrderTemplate(id: string): void | undefined;\n onDismiss(): void;\n };\n resources: {\n closeWindowButtonText: string;\n addToCartFailureMessage: string;\n addToCartSuccessMessage: string;\n addToCartProcessMessage: string;\n orderTemplateErrorMessage: string;\n linesAddedToCartDialogResources: ILinesAddedToCartDialogResources;\n };\n telemetryContent?: ITelemetryContent;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n}\n\nexport interface ISingleOrderTemplateViewProps {\n key: string;\n orderTemplateImage: React.ReactNode;\n addToCartButton?: React.ReactNode;\n removeButton?: React.ReactNode;\n orderTemplateStatusMessage?: React.ReactNode;\n orderTemplateName?: React.ReactNode;\n orderTemplateAriaLabel?: string;\n orderTemplateHeaderDivider?: React.ReactNode;\n}\n\nconst _removeItemFromOrderTemplateList = (props: ISingleOrderTemplateProps): void => {\n const { onRemoveOrderTemplate } = props.handlers;\n const { itemKey } = props;\n\n onRemoveOrderTemplate && itemKey && onRemoveOrderTemplate(itemKey);\n};\n\nconst OrderTemplateActions = {\n removeOrderTemplate: _removeItemFromOrderTemplateList\n};\n\n/**\n * Remove order template action.\n * @param input -Single order template props.\n * @returns Set remove order template.\n */\nconst removeOrderTemplateActionHandler = (input: ISingleOrderTemplateProps) => () => {\n OrderTemplateActions.removeOrderTemplate(input);\n};\n\nexport const OrderTemplateRender = (input: ISingleOrderTemplateProps): ISingleOrderTemplateViewProps | null => {\n const {\n Id,\n orderTemplate,\n removeFromOrderTemplateListText,\n orderTemplateState,\n handlers,\n name,\n imageSettings,\n context,\n telemetryContent,\n enableImageProductLink\n } = input;\n\n if (!Id) {\n return null;\n }\n\n const _getOrderTemplatePageUrl = (): string => {\n const url = getUrlSync('ordertemplate', context.actionContext) ?? '';\n const separator = url.includes('?') ? '&' : '?';\n if (Id) {\n return `${url}${separator}id=${Id}`;\n }\n return '';\n };\n\n const { onDismiss } = handlers;\n\n return {\n key: `${Id}-template`,\n orderTemplateImage: _renderOrderTemplateImages(context, orderTemplate.orderTemplateLines, imageSettings, enableImageProductLink),\n orderTemplateAriaLabel: _renderAriaLabel(input),\n orderTemplateName: (\n
\n \n
\n {orderTemplate.totalLines}\n {` `}\n line items\n
\n
\n
\n ),\n addToCartButton: (\n
\n \n
\n ),\n removeButton: (\n \n ),\n orderTemplateStatusMessage: orderTemplateState && orderTemplateState.isOpen && orderTemplateState.userMessage && (\n
\n \n {orderTemplateState.userMessage}\n \n
\n )\n };\n};\n\n/**\n * On image click handler.\n * @param productUrl -Product url value.\n * @returns Assign window location.\n */\nconst onClickHandler = (productUrl: string) => () => {\n window.location.assign(productUrl);\n};\n\nconst _renderOrderTemplateImages = (\n context: ICoreContext,\n orderTemplateLines?: OrderTemplateLine[],\n imageSettings?: IImageSettings,\n enableImageProductLink?: boolean\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=140&h=140&m=6', w: 0, h: 0 },\n lg: { q: 'w=140&h=140&m=6', w: 0, h: 0 },\n xl: { q: 'w=140&h=140&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n if (orderTemplateLines) {\n const count = orderTemplateLines.length < 4 ? orderTemplateLines.length : 4;\n\n return (\n
\n {orderTemplateLines?.slice(0, count).map(line => {\n const productUrl = line.fullProduct\n ? _updateProductUrlCatalog(line.fullProduct.ProductDetails, context, line?.productListLine?.CatalogId)\n : '';\n\n return (\n \n );\n })}\n
\n );\n }\n return
;\n};\n\n// This method is used to update the product url with the catalogId\nconst _updateProductUrlCatalog = (productDetails: SimpleProduct, context: ICoreContext, catalogId: number | undefined): string => {\n const productUrl = getProductUrlSync(productDetails, context.actionContext, undefined);\n if (!StringExtensions.isNullOrWhitespace(productUrl) && catalogId !== undefined) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${catalogId ?? 0}`);\n return fullUrl.href;\n }\n return productUrl;\n};\n\nconst _renderAriaLabel = (props: ISingleOrderTemplateProps): string => {\n const { name } = props;\n return `${name}`;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { orderTemplateListStatus } from '../order-template-list';\n\nexport interface IOrderTemplateListStatusMessageProps {\n className?: string;\n errorType: orderTemplateListStatus;\n text?: string;\n}\n\nexport const OrderTemplateListStatusMessage: React.FC = ({ className, errorType, text }) => {\n switch (errorType) {\n case 'EMPTY':\n return

{text}

;\n case 'FAILED':\n return

{text}

;\n case 'LOADING':\n default:\n return

{text}

;\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IOrderTemplateNameDialogResources, OrderTemplateNameDialog } from '@msdyn365-commerce/components';\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport React, { useState } from 'react';\n\nconst modalCloseButtonReference: React.RefObject = React.createRef();\n\n/**\n * The Create Order Template Button Props.\n */\nexport interface ICreateOrderTemplateButtonProps extends IComponentProps {\n /**\n * The label for create order template.\n */\n createOrderTemplateText: string;\n\n /**\n * The create order template dialog resources.\n */\n createOrderTemplateDialogResources: IOrderTemplateNameDialogResources;\n\n /**\n * The delegate to fire when dialog captured any user entry.\n */\n onOrderTemplateCreated(): Promise;\n}\n\nconst CreateOrderTemplateButton: React.FC = props => {\n const onCancelHandler = React.useCallback(() => {\n return;\n }, []);\n const [isCreateOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = useState(false);\n const onCreateButtonClick = React.useCallback(() => {\n setOrderTemplateNameDialogOpen(true);\n }, []);\n\n return (\n <>\n \n {props.createOrderTemplateText}\n \n \n \n );\n};\n\nexport default CreateOrderTemplateButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IOrderTemplateNameDialogResources } from '@msdyn365-commerce/components';\nimport { deleteAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { OrderTemplate } from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Heading, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport Spinner from '../order-template/components/add-line/spinner';\nimport {\n ISingleOrderTemplateProps,\n ISingleOrderTemplateViewProps,\n OrderTemplateListStatusMessage,\n OrderTemplateRender\n} from './components';\nimport CreateNewTemplateButtonComponent from './components/create-order-template';\nimport { IOrderTemplateListData } from './order-template-list.data';\nimport { HeadingTag, IOrderTemplateListProps, IOrderTemplateListResources } from './order-template-list.props.autogenerated';\n\nexport interface IOrderTemplateActionMessageState {\n itemKey: string;\n userMessage: string;\n statusCssString: string;\n messageGlyph: string;\n isOpen: boolean;\n headerStatusMessage: string;\n}\n\nexport type orderTemplateListStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\n\nexport interface IOrderTemplateListViewProps extends IOrderTemplateListProps {\n OrderTemplateList: IModuleProps;\n status?: orderTemplateListStatus;\n statusMessage?: React.ReactNode;\n heading?: React.ReactNode;\n OrderTemplates?: INodeProps;\n OrderTemplate?: INodeProps;\n orderTemplates?: ISingleOrderTemplateViewProps[];\n createOrderTemplateButton?: React.ReactNode;\n templateHeaderStatusMessage?: React.ReactNode;\n}\n\n/**\n *\n * OrderTemplateList component.\n * @extends {React.PureComponent, IOrderTemplateListActionMessageState>}\n */\n@observer\nclass OrderTemplateList extends React.Component, IOrderTemplateActionMessageState> {\n constructor(props: IOrderTemplateListProps) {\n super(props);\n this.state = {\n itemKey: '',\n userMessage: '',\n headerStatusMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: false\n };\n }\n\n public async componentDidMount(): Promise {\n this.setState({});\n }\n\n public shouldComponentUpdate(\n nextProps: IOrderTemplateListProps,\n nextState: IOrderTemplateActionMessageState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { className, heading } = this.props.config;\n const { emptyOrderTemplateText, createNewTemplateButtonText } = this.props.resources;\n const { orderTemplates } = this.props.data;\n const orderTemplatesData = orderTemplates && orderTemplates.result;\n const orderTemplateListHeading = heading?.text ?? this.props.resources.orderTemplateListTitle;\n\n if (orderTemplates.status === 'LOADING') {\n const errorProps: IOrderTemplateListViewProps = {\n ...(this.props as IOrderTemplateListProps),\n OrderTemplateList: {\n moduleProps: this.props,\n className: classnames('ms-order-template', className)\n },\n status: 'LOADING',\n statusMessage: ,\n heading: (\n \n )\n };\n return this.props.renderView(errorProps);\n }\n\n if (orderTemplatesData && orderTemplatesData.length === 0) {\n // When no order templates are found for customer\n const emptyViewProps: IOrderTemplateListViewProps = {\n ...(this.props as IOrderTemplateListProps),\n OrderTemplateList: {\n moduleProps: this.props,\n className: classnames('ms-order-template', className)\n },\n status: 'EMPTY',\n statusMessage: ,\n createOrderTemplateButton: (\n \n ),\n heading: (\n \n )\n };\n\n return this.props.renderView(emptyViewProps);\n }\n\n const viewProps: IOrderTemplateListViewProps = {\n ...(this.props as IOrderTemplateListProps),\n OrderTemplateList: {\n moduleProps: this.props,\n className: classnames('ms-order-template', className)\n },\n status: 'SUCCESS',\n heading: ,\n createOrderTemplateButton: (\n \n ),\n templateHeaderStatusMessage: this.state.isOpen && this.state.headerStatusMessage && (\n
\n \n {this.state.headerStatusMessage}\n \n
\n ),\n OrderTemplates: {\n className: 'ms-order-template__list-item',\n tag: 'ul'\n },\n OrderTemplate: {\n className: 'ms-order-template__tile',\n tag: 'li'\n },\n orderTemplates: orderTemplatesData && this._renderOrderTemplateList(orderTemplatesData)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _generateOrderTemplateNameDialogResources(resources: IOrderTemplateListResources): IOrderTemplateNameDialogResources {\n return {\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\n orderTemplateTitleLabel: resources.orderTemplateTitle,\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\n orderTemplateDescription: resources.createOrderTemplateDescription,\n\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\n\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\n };\n }\n\n private readonly _isChannelMultipleCatalogsFeatureEnabled = (): boolean => {\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (this.props.data.featureState) {\n isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n return isMultipleCatalogFeatureEnabledInHq;\n };\n\n private _renderOrderTemplateList(orderTemplates: OrderTemplate[]): ISingleOrderTemplateViewProps[] {\n const { context, telemetry } = this.props;\n const { imageSettings, enableImageProductLink } = this.props.config;\n return orderTemplates.map((orderTemplate: OrderTemplate, index) => {\n const currentTemplateProps: ISingleOrderTemplateProps = {\n orderTemplateState: this.state,\n Id: orderTemplate.productList.Id,\n name: orderTemplate.productList.Name,\n orderTemplate,\n context,\n imageSettings,\n enableImageProductLink,\n removeFromOrderTemplateListText: 'remove',\n addToBagText: this.props.resources.addToBagButtonText,\n index,\n itemKey: orderTemplate.productList.Id,\n telemetry,\n moduleId: this.props.id,\n moduleTypeName: this.props.typeName,\n handlers: {\n onRemoveOrderTemplate: this._onRemoveFromOrderTemplateList,\n onDismiss: this._onDismiss\n },\n resources: {\n closeWindowButtonText: this.props.resources.closeWindowButtonText,\n addToCartFailureMessage: this.props.resources.addToCartFailureMessage,\n addToCartSuccessMessage: this.props.resources.addToCartSuccessMessage,\n addToCartProcessMessage: this.props.resources.addToCartProcessMessage,\n orderTemplateErrorMessage: this.props.resources.orderTemplateErrorMessage,\n linesAddedToCartDialogResources: {\n viewCartButtonText: this.props.resources.viewCartButtonText,\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\n linesAddedToCartHeaderItemsOneText: this.props.resources.linesAddedToCartHeaderItemsOneText,\n linesAddedToCartHeaderLinesOneText: this.props.resources.linesAddedToCartHeaderLinesOneText,\n linesAddedToCartHeaderLinesFormatText: this.props.resources.linesAddedToCartHeaderLinesFormatText,\n linesAddedToCartHeaderMessageText: this.props.resources.linesAddedToCartHeaderMessageText\n }\n },\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled()\n };\n\n return OrderTemplateRender(currentTemplateProps)!;\n });\n }\n\n private readonly _onDismiss = () => {\n this.setState({\n isOpen: false\n });\n };\n\n private readonly _reloadPage = async () => {\n window.location.reload();\n };\n\n private readonly _onRemoveFromOrderTemplateList = (productListId: string): void | undefined => {\n const { context, data, telemetry, resources } = this.props;\n const { orderTemplates } = data;\n\n if (context && context.actionContext) {\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && orderTemplates.result && orderTemplates.result[0] && productListId) {\n const orderTemplate = orderTemplates.result.find(p => p.productList.Id === productListId);\n if (orderTemplate) {\n deleteAsync({ callerContext: context.actionContext }, orderTemplate.productList)\n .then()\n .catch((error: string) => {\n telemetry.warning('[order-template-list] Unable to delete order template.');\n telemetry.error(error);\n this.setState({\n itemKey: productListId,\n headerStatusMessage: resources.deleteOrderTemplateFailedText,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n })\n .then(this._reloadPage)\n .catch((error: string) => {\n telemetry.warning('[order-template-list] Unable to delete order template.');\n telemetry.error(error);\n });\n } else {\n telemetry.warning('[order-template-list] Failed to delete order template. Order template was not found');\n }\n } else {\n telemetry.warning('[order-template-list] Failed to delete order template.');\n }\n }\n };\n}\n\nexport default OrderTemplateList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISingleOrderTemplateViewProps } from './components';\nimport { IOrderTemplateListViewProps } from './order-template-list';\n\nexport const OrderTemplateListView: React.FC = props => {\n const {\n OrderTemplateList,\n status,\n statusMessage,\n heading,\n OrderTemplates,\n orderTemplates,\n OrderTemplate,\n createOrderTemplateButton,\n templateHeaderStatusMessage\n } = props;\n\n return (\n \n {heading}\n {status !== 'SUCCESS' && statusMessage}\n \n {createOrderTemplateButton}\n {templateHeaderStatusMessage}\n \n {OrderTemplates && orderTemplates && orderTemplates.length > 0 && (\n \n {orderTemplates &&\n orderTemplates.map(orderTemplate => {\n return _renderOrderTemplate(orderTemplate, OrderTemplate);\n })}\n \n )}\n \n );\n};\n\nconst _renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, OrderTemplate?: INodeProps): JSX.Element | null => {\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\n return (\n \n {orderTemplateName}\n {orderTemplateImage}\n {addToCartButton}\n {removeButton}\n {orderTemplateStatusMessage}\n \n );\n};\n\nexport default OrderTemplateListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport default (props: { className: string; msg?: string }) => (\n <>\n
\n {props?.msg &&
{props?.msg}
}\n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateLineViewModel } from '../order-template';\nimport { IOrderTemplateData } from '../order-template.data';\nimport { IOrderTemplateProps } from '../order-template.props.autogenerated';\nimport { AddLineToTemplate } from '.';\n\ninterface IOrderTemplateBulkActionsProps extends IOrderTemplateProps {\n orderTemplateId: string;\n selectedLines: IOrderTemplateLineViewModel[];\n isMinifiedView: boolean;\n isMultipleCatalogFeatureEnabledInHq: boolean;\n telemetryContent?: ITelemetryContent;\n onAddSelectionToBag(): void;\n onRemoveSelection(): void;\n}\n\ninterface IOrderTemplateBulkActionsState {\n isAddDisabled: boolean;\n isRemoveDisabled: boolean;\n}\n\n/**\n * Bulk Order Template line actions.\n */\nexport class OrderTemplateBulkActions extends React.PureComponent {\n public state: IOrderTemplateBulkActionsState = {\n isAddDisabled: true,\n isRemoveDisabled: true\n };\n\n public static getDerivedStateFromProps(\n props: IOrderTemplateBulkActionsProps,\n state: IOrderTemplateBulkActionsState\n ): IOrderTemplateBulkActionsState {\n const selectedLines = props.selectedLines.length;\n let nextState = { ...state };\n nextState = {\n isAddDisabled: selectedLines === 0,\n isRemoveDisabled: selectedLines === 0\n };\n return nextState;\n }\n\n public render(): JSX.Element {\n const {\n addLineModalLinkText,\n searchButtonAriaLabel,\n searchInputAriaLabel,\n searchModalPlaceholderText,\n selectCatalogTitleText,\n selectProductButtonText,\n addItemToTemplateText,\n addLineProductUnitPricePrefix,\n backButtonText,\n decrementButtonAriaLabel,\n incrementButtonAriaLabel,\n quantitySelectLabel,\n addLineProductUnitOfMeasurePrefix,\n notFoundSearchErrorNotice,\n notFoundSearchErrorRedediation,\n searchErrorMessage,\n productDimensionTypeColor,\n productDimensionTypeConfiguration,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n addSelectedToBagButtonText,\n removeSelectedToBagButtonText,\n searchResultsCountVerbage,\n searchResultsCountSubject,\n addToTemplateConfirmation,\n totalPriceLabel,\n progressNotificationText,\n addToTemplateDuplicateError,\n addToTemplateGenericError,\n dimensionMissingError\n } = this.props.resources;\n\n const addLineProps = {\n context: this.props.context,\n telemetryContent: this.props.telemetryContent,\n resources: {\n addLineModalLinkText,\n searchButtonAriaLabel,\n searchInputAriaLabel,\n searchModalPlaceholderText,\n selectCatalogTitleText,\n selectProductButtonText,\n addItemToTemplateText,\n addLineProductUnitPricePrefix,\n backButtonText,\n decrementButtonAriaLabel,\n incrementButtonAriaLabel,\n quantitySelectLabel,\n addLineProductUnitOfMeasurePrefix,\n notFoundSearchErrorNotice,\n notFoundSearchErrorRedediation,\n searchErrorMessage,\n productDimensionTypeColor,\n productDimensionTypeConfiguration,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n searchResultsCountVerbage,\n searchResultsCountSubject,\n addToTemplateConfirmation,\n totalPriceLabel,\n progressNotificationText,\n addToTemplateDuplicateError,\n addToTemplateGenericError,\n dimensionMissingError\n },\n imageSettings: this.props.config.imageSettings,\n orderTemplateId: this.props.orderTemplateId,\n isMultipleCatalogFeatureEnabledInHq: this.props.isMultipleCatalogFeatureEnabledInHq,\n catalogs: this.props.data.catalogs?.result\n };\n\n return (\n <>\n \n \n \n {!this.props.isMinifiedView && addSelectedToBagButtonText}\n \n \n \n {!this.props.isMinifiedView && removeSelectedToBagButtonText}\n \n \n );\n }\n\n private readonly addHandler = (event: React.MouseEvent) => {\n this.setState({\n isAddDisabled: true\n });\n\n this.props.onAddSelectionToBag();\n\n this.setState({\n isAddDisabled: false\n });\n };\n\n private readonly removeHandler = (event: React.MouseEvent) => {\n this.setState({\n isRemoveDisabled: true\n });\n\n this.props.onRemoveSelection();\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\nimport { getCatalogId, ICoreContext, IImageSettings } from '@msdyn365-commerce/core';\nimport { ProductListLine, ProductSearchCriteria, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { searchByCriteriaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductCatalog, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n addItemToOrderTemplate,\n AddItemToOrderTemplateInput,\n ArrayExtensions,\n getDimensionsForSelectedVariant,\n GetDimensionsForSelectedVariantInput,\n getSelectedVariant,\n SelectedVariantInput,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Modal, ModalBody, ModalHeader, getPayloadObject, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport { get } from 'lodash';\nimport { computed } from 'mobx';\nimport React from 'react';\n\nimport { IProductConfigurationState, NotFoundComponent, ProductConfiguration, ProductList } from '.';\nimport Spinner from './spinner';\n\nexport interface IAddLineToTemplateProps {\n context: ICoreContext;\n resources: IAddLineToTemplateResources;\n orderTemplateId: string;\n imageSettings?: IImageSettings;\n isMultipleCatalogFeatureEnabledInHq: boolean;\n catalogs?: ProductCatalog[] | undefined;\n telemetryContent?: ITelemetryContent;\n}\n\nexport interface IAddLineToTemplateResources {\n addLineModalLinkText: string;\n searchButtonAriaLabel: string;\n searchInputAriaLabel: string;\n searchModalPlaceholderText: string;\n selectCatalogTitleText: string;\n selectProductButtonText: string;\n addItemToTemplateText: string;\n addLineProductUnitPricePrefix: string;\n backButtonText: string;\n decrementButtonAriaLabel: string;\n incrementButtonAriaLabel: string;\n quantitySelectLabel: string;\n addLineProductUnitOfMeasurePrefix: string;\n notFoundSearchErrorNotice: string;\n notFoundSearchErrorRedediation: string;\n searchErrorMessage: string;\n productDimensionTypeColor: string;\n productDimensionTypeConfiguration: string;\n productDimensionTypeSize: string;\n productDimensionTypeStyle: string;\n searchResultsCountVerbage: string;\n searchResultsCountSubject: string;\n addToTemplateConfirmation: string;\n totalPriceLabel: string;\n progressNotificationText: string;\n addToTemplateDuplicateError: string;\n addToTemplateGenericError: string;\n dimensionMissingError: string;\n backToResultsText?: string;\n}\n\nenum CONTENT {\n Search,\n ProductList,\n ProductConfiguration,\n NotFound,\n Error,\n Loading\n}\n\ninterface IAddLineToTemplateState {\n isOpen: boolean;\n query: string;\n products: ProductSearchResult[];\n productCatalogs: ProductCatalog[] | null;\n content: number;\n selectedProduct: SimpleProduct | null;\n selectedCatalogId: number | undefined;\n selectedProductDimensions?: ProductDimensionFull[];\n selectedQuantity?: number;\n reloadPage?: boolean;\n}\n\n/**\n * Add Lines to order template.\n */\nexport class AddLineToTemplate extends React.Component {\n public state: IAddLineToTemplateState = {\n isOpen: false,\n query: '',\n products: [],\n productCatalogs: [],\n content: CONTENT.Search,\n selectedProduct: null,\n selectedCatalogId: 0\n };\n\n public defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n lg: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n xl: { q: 'w=64&h=64&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n public searchTextInput: React.RefObject = React.createRef(); // @TODO public/private\n\n private readonly addLineButtonRef: React.RefObject = React.createRef();\n\n constructor(props: IAddLineToTemplateProps) {\n super(props);\n }\n\n public onComponentDidMount(): void {\n this.searchTextInput.current?.focus();\n }\n\n public componentDidMount(): void {\n this._getCatalogs();\n }\n\n public onComponentDidUpdate(): void {\n this.searchTextInput.current?.focus();\n }\n\n @computed get showBackArrow(): boolean {\n return this.state.content === CONTENT.ProductConfiguration;\n }\n\n public shouldComponentUpdate(nextProps: IAddLineToTemplateProps, nextState: IAddLineToTemplateState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const {\n resources: { addLineModalLinkText, backToResultsText }\n } = this.props;\n\n const modalProps = {\n ...this.props,\n className: 'msc-add-line-to-template',\n toggle: this._toggleModalHandler,\n isOpen: this.state.isOpen,\n ariaLabel: addLineModalLinkText\n };\n\n return (\n <>\n \n \n {this.showBackArrow && (\n \n )}\n {addLineModalLinkText}\n \n {this._renderContent()}\n \n \n \n {addLineModalLinkText}\n \n \n );\n }\n\n private readonly _renderSearchForm = () => {\n const {\n resources: { searchButtonAriaLabel, searchModalPlaceholderText, selectCatalogTitleText }\n } = this.props;\n\n return (\n \n {this.state.productCatalogs && ArrayExtensions.hasElements(this.state.productCatalogs) && (\n <>\n \n \n {this._getCatalogNodes()}\n \n \n )}\n
\n \n
\n \n );\n };\n\n private readonly _onSearchSubmit = (event: React.FormEvent): void => {\n event.preventDefault();\n\n const query = get(this, 'searchTextInput.current.value', null);\n\n if (!query) {\n return;\n }\n\n this.setState({\n content: CONTENT.Loading\n });\n\n this._getSearchResults(query)\n .then(result => {\n if (result.length === 0) {\n this.setState({\n products: result,\n content: CONTENT.NotFound\n });\n } else {\n this.setState({\n products: result,\n content: CONTENT.ProductList\n });\n }\n })\n .catch(error => {\n this.setState({\n content: CONTENT.Error\n });\n });\n };\n\n private readonly _onQuantityChangeHandler = (event: React.ChangeEvent) => {\n this.setState({\n selectedQuantity: +event.target.value\n });\n };\n\n private readonly _onSelectItem = async (product: ProductSearchResult): Promise => {\n const {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n } = this.props.context;\n const varianteInput = new SelectedVariantInput(product.RecordId, channelId, [], undefined, this.props.context.request);\n const productVariant = await getSelectedVariant(varianteInput, actionContext);\n\n if (!productVariant) {\n this.props.context.telemetry.error('Error retrieving product variant');\n return Promise.resolve([]);\n }\n\n const dimensions = await this._getProductDimensions(product as SimpleProduct);\n\n this.setState({\n selectedProductDimensions: dimensions,\n content: CONTENT.ProductConfiguration,\n selectedProduct: productVariant\n });\n\n return dimensions;\n };\n\n private readonly _onInputChange = (event: React.ChangeEvent): void => {\n this.setState({\n query: event.target.value\n });\n };\n\n private readonly _onBackButtonClickHandler = (): void => {\n this.setState({\n content: CONTENT.ProductList\n });\n };\n\n private readonly _highlightSearchTerm = (name: string) => {\n const parsedName = name && unescape(name.replace(new RegExp(this.state.query, 'i'), '$&'));\n\n return (\n \n );\n };\n\n private readonly _resultCountText = (): string => {\n return this.props.resources.searchResultsCountVerbage\n .replace('{count}', this.state.products.length.toString())\n .replace('{subject}', `${this.props.resources.searchResultsCountSubject}${this.state.products.length > 1 ? 's' : ''}`);\n };\n\n private _renderContent(): React.ReactNode | null {\n switch (this.state.content) {\n case CONTENT.ProductConfiguration:\n const { selectedProduct, selectedProductDimensions } = this.state;\n const viewProps = {\n ...this.props,\n imageSettings: this.props.imageSettings || this.defaultImageSettings,\n product: selectedProduct!,\n dimensions: selectedProductDimensions!,\n addToTemplateHandler: this._addItemToTemplateHandler,\n onQuantityChangeHandler: this._onQuantityChangeHandler,\n highlightSearchTerm: this._highlightSearchTerm,\n searchForm: this._renderSearchForm()\n };\n\n return ;\n\n case CONTENT.ProductList:\n const productProps = {\n ...this.props,\n imageSettings: this.props.imageSettings || this.defaultImageSettings,\n clickHandler: this._onSelectItem,\n products: this.state.products,\n highlightSearchTerm: this._highlightSearchTerm,\n searchForm: this._renderSearchForm(),\n renderResultCountText: this._resultCountText\n };\n\n return (\n \n \n \n );\n\n case CONTENT.Loading:\n return (\n \n {this._renderSearchForm()}\n \n \n );\n\n case CONTENT.NotFound:\n const { notFoundSearchErrorNotice, notFoundSearchErrorRedediation } = this.props.resources;\n\n return (\n \n

{this._resultCountText()}

\n {this._renderSearchForm()}\n \n
\n );\n\n case CONTENT.Error:\n return (\n \n {this._renderSearchForm()}\n
\n {this.props.resources.searchErrorMessage}\n
\n
\n );\n\n default:\n return {this._renderSearchForm()};\n }\n }\n\n private readonly _addItemToTemplateHandler = async (config: IProductConfigurationState): Promise => {\n const {\n orderTemplateId,\n context: { actionContext },\n isMultipleCatalogFeatureEnabledInHq\n } = this.props;\n const catalogId = this.state.selectedCatalogId;\n const input = isMultipleCatalogFeatureEnabledInHq\n ? new AddItemToOrderTemplateInput(\n orderTemplateId,\n config.product.RecordId,\n config.quantity,\n config.product.DefaultUnitOfMeasure || 'ea',\n isMultipleCatalogFeatureEnabledInHq,\n catalogId\n )\n : new AddItemToOrderTemplateInput(\n orderTemplateId,\n config.product.RecordId,\n config.quantity,\n config.product.DefaultUnitOfMeasure || 'ea'\n );\n const result = await addItemToOrderTemplate(input, actionContext);\n this.setState({\n isOpen: false,\n reloadPage: true\n });\n // reload when closing\n window.location.reload();\n return result;\n };\n\n /**\n *\n * Get all active product catalogs.\n */\n private _getCatalogs(): void {\n const { isMultipleCatalogFeatureEnabledInHq, catalogs } = this.props;\n\n // if Channel Multiple Catalogs Feature is enabled then show all catalogs.\n const productCatalogs = isMultipleCatalogFeatureEnabledInHq && catalogs ? catalogs : [];\n\n // get the current catalog id.\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n // set the current catalog id as a default selected catalog id from the url\n this.setState({\n productCatalogs: productCatalogs,\n selectedCatalogId: catalogId\n });\n }\n\n private _getCatalogNodes(): JSX.Element[] | null {\n const { productCatalogs, selectedCatalogId } = this.state;\n if (productCatalogs && ArrayExtensions.hasElements(productCatalogs)) {\n return productCatalogs.map((productCatalog: ProductCatalog) => {\n // initially select default catalog in dropdown\n const isSelected = productCatalog.RecordId === selectedCatalogId;\n return (\n \n );\n });\n }\n return [];\n }\n\n private readonly _onCatalogSelectionChange = (event: React.ChangeEvent) => {\n this.setState({\n selectedCatalogId: Number.parseInt(event.target.value, 10)\n });\n };\n\n private _getSearchResults(searchText: string): Promise {\n const {\n context: {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n }\n } = this.props;\n const { selectedCatalogId } = this.state;\n const searchCriteriaInput: ProductSearchCriteria = {};\n\n searchCriteriaInput.Context = {\n ChannelId: channelId,\n CatalogId: selectedCatalogId\n };\n\n if (process.env.NODE_ENV === 'development' && process.env.ENABLE_CLOUD_SEARCH?.toLowerCase() !== 'true') {\n searchCriteriaInput.IncludeAttributes = false;\n } else {\n searchCriteriaInput.IncludeAttributes = true;\n }\n searchCriteriaInput.SearchCondition = searchText;\n\n return searchByCriteriaAsync({ callerContext: actionContext }, searchCriteriaInput);\n }\n\n private async _getProductDimensions(product: SimpleProduct): Promise {\n const {\n context: {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n }\n } = this.props;\n const id = product.MasterProductId ? product.MasterProductId : product.RecordId;\n\n return getDimensionsForSelectedVariant(\n new GetDimensionsForSelectedVariantInput(id, channelId, [], this.props.context.request),\n actionContext\n );\n }\n\n private readonly _toggleModalHandler = () => {\n if (this.state.isOpen) {\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'add-item-to-template', '');\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'add-item-to-template');\n this._getCatalogs();\n this.addLineButtonRef.current!.focus();\n }\n\n this.setState({\n isOpen: !this.state.isOpen,\n content: CONTENT.Search\n });\n\n if (this.state.reloadPage) {\n window.location.reload();\n this.setState({\n reloadPage: false\n });\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface IDropdownState {\n /**\n * @friendlyName selectedIndex\n * @description Selected index.\n */\n selectedIndex: string;\n}\n\nexport interface IDropdownProps {\n dropdownId: number;\n dropdownName: string;\n dropdownList: IDropdownItemProps[];\n telemetryContent?: ITelemetryContent;\n onChange?(selection: IDropdownOnSelection): void;\n}\n\nexport interface IDropdownItemProps {\n value: string;\n id: number;\n}\n\nexport interface IDropdownOnSelection {\n dropdownId: number;\n selectId: string;\n selectedValue: string;\n}\n\n/**\n *\n * DropDown component.\n * @extends {React.PureComponent}\n */\nexport class Dropdown extends React.PureComponent {\n private readonly selectMenu: React.RefObject = React.createRef();\n\n constructor(props: IDropdownProps, state: IDropdownState) {\n super(props);\n this.state = {\n selectedIndex: ''\n };\n }\n\n public componentDidMount(): void {\n if (this.selectMenu.current) {\n this.selectMenu.current.selectedIndex = 0;\n }\n }\n\n public render(): JSX.Element {\n const { dropdownId, dropdownList, dropdownName } = this.props;\n\n return (\n \n {dropdownList.map(\n (item: IDropdownItemProps) =>\n item && (\n \n {item.value}\n \n )\n )}\n \n );\n }\n\n private readonly _onChanged = (event: React.ChangeEvent): void => {\n this.setState({ selectedIndex: event.target.value });\n\n if (this.props.onChange) {\n this.props.onChange({\n dropdownId: this.props.dropdownId,\n selectId: event.target.value,\n selectedValue: event.target.innerText\n });\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport const NotFoundComponent = (props: { error: string; msg: string }) => (\n <>\n
\n
{props.error}
\n
{props.msg}
\n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { debounce } from 'lodash';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\ninterface IQuantityProps {\n min?: number;\n max: number;\n currentCount?: number;\n disabled?: boolean;\n incrementGlyphClass?: string;\n decrementGlyphClass?: string;\n decrementButtonAriaLabel?: string;\n incrementButtonAriaLabel?: string;\n inputQuantityAriaLabel?: string;\n id?: string;\n onChange?(newValue: number): void;\n}\n\ninterface IQuantityState {\n currentInput: number;\n}\n\n/**\n * Quantity Component - This component is used to add or remove quantity.\n */\n@observer\nexport default class OrderTemplateQuantity extends React.PureComponent {\n public static defaultProps: Partial = {\n min: 1,\n decrementGlyphClass: 'fas fa-minus',\n incrementGlyphClass: 'fas fa-plus'\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n constructor(props: IQuantityProps) {\n super(props);\n this.state = { currentInput: props.currentCount || 1 };\n this._handleChange = this._handleChange.bind(this);\n\n reaction(\n () => this.props.currentCount,\n () => {\n this.setState({ currentInput: this.props.currentCount || 1 });\n }\n );\n }\n\n public render(): JSX.Element {\n const glyphMinusClassName: string = `${this.props.decrementGlyphClass!} quantity__controls-glyph`;\n const glyphPlusClassName: string = `${this.props.incrementGlyphClass!} quantity__controls-glyph`;\n const disabled = this.props.currentCount === this.props.min;\n const incDisabled = this.props.currentCount === this.props.max;\n const currentValue = this.state.currentInput;\n let extraClass = '';\n if (disabled) {\n // The quantity has reached its boundaries (max or min)\n extraClass = 'disabled';\n } else if (this.props.disabled) {\n // This.props.disabled shows if the state is not succeded yet\n extraClass = 'transition';\n }\n const getChangeHandler = (amount: number) => () => {\n this._onIncrementalChange(amount);\n };\n\n return (\n
\n \n \n \n \n \n \n \n
\n );\n }\n\n private _onIncrementalChange(amount: number): void {\n const updatedQuantity = this.state.currentInput + amount;\n\n if (updatedQuantity >= 1 && updatedQuantity <= this.props.max) {\n this.props.onChange && this.props.onChange(updatedQuantity);\n }\n }\n\n private _handleChange(e: React.ChangeEvent): void {\n const currentValue = Number.parseInt(e.target.value, 10);\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n const inputElement =\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\n\n if (currentValue > this.props.max) {\n this.setState({ currentInput: this.props.max });\n } else {\n this.setState({ currentInput: currentValue }, () => {\n debounce(() => {\n if (!isNaN(this.state.currentInput) && !(this.state.currentInput < minValue) && inputElement) {\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\n inputElement.setAttribute('value', currentValue.toString());\n }\n }, 200)();\n });\n }\n }\n\n private readonly _validateMin = (): void => {\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n\n if (isNaN(this.state.currentInput) || this.state.currentInput < minValue) {\n this.props.onChange && this.props.onChange(minValue);\n } else {\n this.props.onChange && this.props.onChange(this.state.currentInput);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ProductDimensionValue, ProductListLine } from '@msdyn365-commerce/retail-proxy';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n getDimensionsForSelectedVariant,\n GetDimensionsForSelectedVariantInput,\n getFallbackImageUrl,\n getPriceForSelectedVariant,\n getProductAvailabilitiesForSelectedVariant,\n getSelectedVariant,\n IProductInventoryInformation,\n PriceForSelectedVariantInput,\n ProductAvailabilitiesForSelectedVariantInput,\n SelectedVariantInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, ITelemetryContent, ModalBody, ModalFooter } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport OrderTemplateQuantity from '../common/order-template-quantity';\nimport { Dropdown, IAddLineToTemplateProps, IAddLineToTemplateResources, IDropdownItemProps, IDropdownOnSelection } from '.';\n\nexport interface IProductCnnfigurationProps extends IAddLineToTemplateProps {\n product: SimpleProduct;\n dimensions: ProductDimensionFull[];\n imageSettings: IImageSettings;\n telemetryContent?: ITelemetryContent;\n searchForm: React.ReactNode;\n addToTemplateHandler(params: IProductConfigurationState): Promise;\n highlightSearchTerm(name: string): React.ReactNode;\n}\n\nexport interface IProductConfigurationState {\n quantity: number;\n unitPrice: number;\n totalPrice: number;\n product: SimpleProduct;\n dimensions: ProductDimensionFull[];\n selectedDimensions: {};\n productAvailableQuantity?: IProductInventoryInformation;\n buttonDisabled: boolean;\n showAddConfirmation: boolean;\n errorMessage?: string;\n isBusy: boolean;\n errors: { dimension?: string[]; add?: string };\n}\n\n/**\n * Configure selected product for addition to order template.\n */\nexport class ProductConfiguration extends React.Component {\n private selectedDimensions: {} = {};\n\n constructor(props: IProductCnnfigurationProps) {\n super(props);\n\n this.state = {\n quantity: 1,\n unitPrice: props.product.Price,\n totalPrice: props.product.Price,\n product: props.product,\n dimensions: props.dimensions.sort((a, b) => a.DimensionTypeValue - b.DimensionTypeValue),\n selectedDimensions: {},\n buttonDisabled: false,\n showAddConfirmation: false\n } as IProductConfigurationState;\n }\n\n public shouldComponentUpdate(nextProps: IProductCnnfigurationProps, nextState: IProductConfigurationState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const {\n context: {\n actionContext: {\n requestContext: { apiSettings }\n },\n request: { gridSettings }\n },\n resources: {\n addItemToTemplateText,\n addLineProductUnitPricePrefix,\n decrementButtonAriaLabel,\n incrementButtonAriaLabel,\n quantitySelectLabel,\n addLineProductUnitOfMeasurePrefix,\n totalPriceLabel\n },\n imageSettings,\n highlightSearchTerm\n } = this.props;\n const { buttonDisabled, product, quantity, unitPrice, totalPrice, showAddConfirmation, errors } = this.state;\n const isMultipleCatalogSelect = this.props.isMultipleCatalogFeatureEnabledInHq ? 'isMultipleCatalogSelect' : '';\n return (\n <>\n \n {this.props.searchForm}\n
\n
\n
\n \n
\n
{product?.ItemId}
\n {highlightSearchTerm(product?.Name ?? '')}\n
\n {addLineProductUnitPricePrefix}\n {` `}\n {this._formatPrice(unitPrice)}\n
\n
\n {addLineProductUnitOfMeasurePrefix}\n {` `}\n {product?.DefaultUnitOfMeasure}\n
\n
\n
\n
{this._getDimensionsNodes()}
\n
\n
\n
{quantitySelectLabel}
\n \n
\n
\n
\n {totalPriceLabel}\n {` `}\n {this._formatPrice(totalPrice)}\n
\n
\n \n {showAddConfirmation && (\n \n
\n )}\n {errors?.add && (\n
\n
\n )}\n \n {addItemToTemplateText}\n \n \n \n );\n }\n\n private _getConfirmationMessage(): string {\n const selectedDimensionNames = this.state.dimensions\n .map(dimension => {\n let variant = dimension.DimensionValues?.find(\n value => value.RecordId === this.selectedDimensions[dimension.DimensionTypeValue]\n )?.Value;\n if (dimension.DimensionTypeValue === 3) {\n variant = `size ${variant}`;\n }\n return variant;\n })\n .filter(value => value);\n\n return this.props.resources.addToTemplateConfirmation\n .replace('{count}', this.state.quantity.toString())\n .replace('{productAndDimensions}', `${this.state.product.Name}, ${Object.values(selectedDimensionNames).join(', ')}`);\n }\n\n private _getDimensionsNodes(): React.ReactElement[] {\n const { dimensions } = this.state;\n const { resources } = this.props;\n\n return dimensions?.map((dimension: ProductDimensionFull) => {\n const { DimensionValues, DimensionTypeValue } = dimension;\n const mapDimensions = (value: ProductDimensionValue): IDropdownItemProps => ({\n id: value.RecordId,\n value: value.Value || ''\n });\n const dimensionName = this._getDropdownName(DimensionTypeValue, resources);\n const dropdownList: IDropdownItemProps[] = DimensionValues ? DimensionValues.map(mapDimensions) : [];\n dropdownList.unshift({ id: 0, value: `Choose a ${dimensionName}` });\n\n return (\n
\n
{dimensionName}
\n {this.state.errors?.dimension?.includes(DimensionTypeValue.toString()) && (\n \n \n \n )}\n \n
\n );\n });\n }\n\n private readonly _getDimensionsError = (dimensionName: string) =>\n this.props.resources.dimensionMissingError.replace(/{dimensionName}/g, dimensionName);\n\n private readonly _addToTemplateHandler = async (event: React.MouseEvent) => {\n // Hide confirmation of previous addition when adding multiple items\n this.setState({\n isBusy: true,\n showAddConfirmation: false,\n errors: { ...this.state.errors, add: undefined }\n });\n\n const missingDimensions = this.state.dimensions\n .map(dimension => dimension.DimensionTypeValue.toString())\n .filter(type => !this.selectedDimensions[type]);\n\n this.setState({\n errors: { dimension: missingDimensions }\n });\n if (missingDimensions.length > 0) {\n this.setState({\n isBusy: false\n });\n return;\n }\n\n this.props\n .addToTemplateHandler({ ...this.state })\n .then(status => {\n // Validate against the existance of a ProductListId\n if (status.ProductListId) {\n this.setState({\n isBusy: false,\n showAddConfirmation: true\n });\n }\n })\n .catch(error => {\n const { addToTemplateDuplicateError, addToTemplateGenericError } = this.props.resources;\n let errorMessage;\n\n if (error.error.name === 'Microsoft_Dynamics_Commerce_Runtime_DuplicateObject') {\n errorMessage = addToTemplateDuplicateError;\n } else {\n errorMessage = addToTemplateGenericError;\n }\n\n this.setState({\n isBusy: false,\n errors: { ...this.state.errors, add: errorMessage }\n });\n this.props.context.telemetry.error('Error adding item to order template');\n });\n };\n\n private readonly _onQuantityChange = (newValue: number) => {\n this.setState({\n quantity: newValue,\n totalPrice: newValue * this.props.product.Price\n });\n };\n\n private readonly _updateDimensionValue = (\n productDimensionFull: ProductDimensionFull,\n newValueId: string | undefined\n ): ProductDimensionValue | undefined => {\n if (newValueId && productDimensionFull.DimensionValues) {\n return productDimensionFull.DimensionValues.find(dimension => dimension.RecordId === +newValueId);\n }\n\n return undefined;\n };\n\n // Rehydrate the selected variants price, available dimensions & sizes\n private readonly _onDimensionChanged = async (selection: IDropdownOnSelection): Promise => {\n const { product, dimensions, context } = this.props;\n const {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n } = context;\n\n // Remaining error notifications for missing dimensions\n const remainingDimensionsErrors = this.state.errors?.dimension?.filter(id => id !== selection.dropdownId.toString());\n\n this.setState({\n isBusy: false,\n showAddConfirmation: false,\n buttonDisabled: true,\n errors: { add: undefined, dimension: remainingDimensionsErrors }\n });\n\n // Update currently selected dimensions\n this.selectedDimensions[selection.dropdownId] = +selection.selectId;\n\n const mappedDimensions = dimensions\n ?.map(dimension => {\n return {\n DimensionTypeValue: dimension.DimensionTypeValue,\n DimensionValue:\n this._updateDimensionValue(dimension, this.selectedDimensions[dimension.DimensionTypeValue]) ||\n dimension.DimensionValue,\n ExtensionProperties: dimension.ExtensionProperties\n };\n })\n .filter(dimension => {\n return dimension && dimension.DimensionValue;\n });\n\n const variantProduct = await getSelectedVariant(\n new SelectedVariantInput(\n product.MasterProductId ? product.MasterProductId : product.RecordId,\n channelId,\n mappedDimensions,\n undefined,\n this.props.context.request\n ),\n actionContext\n );\n\n if (!variantProduct) {\n this.props.context.telemetry.error(\n `Error retrieving variant product for product ${product.MasterProductId ? product.MasterProductId : product.RecordId}`\n );\n return;\n }\n\n const dimensionInput = new GetDimensionsForSelectedVariantInput(\n variantProduct.RecordId,\n channelId,\n mappedDimensions,\n this.props.context.request\n );\n const variantDimensions = await getDimensionsForSelectedVariant(dimensionInput, actionContext);\n\n if (!variantDimensions) {\n this.props.context.telemetry.error('Error retrieving dimensions for reconfigured product variant');\n this.setState({\n buttonDisabled: false\n });\n return;\n }\n\n const availabilityInput = new ProductAvailabilitiesForSelectedVariantInput(\n product.MasterProductId ? product.MasterProductId : product.RecordId,\n channelId\n );\n\n // @TODO sync UX quantity w/ actual availability\n const newAvailableQuantity = await getProductAvailabilitiesForSelectedVariant(availabilityInput, actionContext);\n const priceInput = new PriceForSelectedVariantInput(product.RecordId, channelId);\n const productPrice = await getPriceForSelectedVariant(priceInput, actionContext);\n\n if (!productPrice) {\n this.props.context.telemetry.error('Error retrieving price for reconfigured product variant');\n this.setState({\n buttonDisabled: false\n });\n return;\n }\n\n this.setState({\n buttonDisabled: false,\n productAvailableQuantity: (newAvailableQuantity && newAvailableQuantity[0]) || undefined,\n unitPrice: +(productPrice.BasePrice || product.Price),\n dimensions: variantDimensions.sort((a, b) => a.DimensionTypeValue - b.DimensionTypeValue),\n product: variantProduct\n });\n };\n\n private readonly _getDropdownName = (dimensionType: number, resources: IAddLineToTemplateResources): string => {\n switch (dimensionType) {\n case 1: // Color\n return resources.productDimensionTypeColor;\n case 2: // Configuration\n return resources.productDimensionTypeConfiguration;\n case 3: // Size\n return resources.productDimensionTypeSize;\n case 4: // Style\n return resources.productDimensionTypeStyle;\n default:\n return '';\n }\n };\n\n private _formatPrice(price: number): string {\n const {\n context: {\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n }\n } = this.props;\n\n return formatCurrency(price.toFixed(2), currencyCode);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React, { useState } from 'react';\n\nimport { IAddLineToTemplateProps } from '.';\n\nexport interface IProductListProps extends IAddLineToTemplateProps {\n products: ProductSearchResult[];\n imageSettings: IImageSettings;\n searchForm: React.ReactNode;\n clickHandler(product: ProductSearchResult): Promise;\n highlightSearchTerm(name: string): React.ReactNode;\n renderResultCountText(): string;\n}\n\nexport const ProductList = (props: IProductListProps) => {\n const {\n products,\n context: {\n actionContext: {\n requestContext: { apiSettings }\n },\n request: { gridSettings },\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n },\n clickHandler,\n highlightSearchTerm,\n renderResultCountText,\n resources: { selectProductButtonText },\n imageSettings\n } = props;\n\n return (\n <>\n

\n {renderResultCountText()}\n

\n {props.searchForm}\n
\n {products.map((product: ProductSearchResult, index: number) => {\n const { Price, ItemId, Name, PrimaryImageUrl } = product;\n const price = formatCurrency(Price.toFixed(2), currencyCode);\n const primaryImageSource = generateImageUrl(PrimaryImageUrl ?? '', apiSettings) ?? '';\n const fallBackImg = getFallbackImageUrl(ItemId, apiSettings, props.context.request.app?.config?.OmniChannelMedia) ?? '';\n\n return (\n
\n
\n \n
\n
{ItemId}
\n {highlightSearchTerm(Name ?? '')}\n
\n
\n
\n {price}\n \n
\n
\n );\n })}\n
\n \n );\n};\n\ninterface IProductSelectButton {\n product: ProductSearchResult;\n buttonText: string;\n clickHandler(product: ProductSearchResult): Promise;\n}\n\nconst ProductSelectButton = (props: IProductSelectButton) => {\n const [isBusy, setBusy] = useState(false);\n const { product, buttonText, clickHandler } = props;\n const getClickHandler = React.useCallback(async () => {\n setBusy(!isBusy);\n await clickHandler(product);\n setBusy(!isBusy);\n }, [clickHandler, isBusy, product]);\n\n return (\n \n {buttonText}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n AddOrderTemplateToCartComponent,\n ILinesAddedToCartDialogResources,\n IOrderTemplateNameDialogResources,\n RenameOrderTemplateComponent,\n OrderTemplateNameDialog\n} from '@msdyn365-commerce/components';\nimport { IComponentProps, ICoreContext } from '@msdyn365-commerce/core';\nimport { ProductList } from '@msdyn365-commerce/retail-proxy';\nimport { OrderTemplate, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, ITelemetryContent, Popover } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { useState } from 'react';\n\nexport interface IOrderTemplateActionsData {\n orderTemplate: OrderTemplate;\n}\n\nexport interface IOrderTemplateActionsProps extends IComponentProps {\n context: ICoreContext;\n telemetryContent?: ITelemetryContent;\n handlers: {\n onRemoveTemplate(orderTemplateId: string): void;\n onRenameTemplate(orderTemplate: ProductList): Promise;\n };\n renameOrderTemplateDialogStrings: IOrderTemplateNameDialogResources;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n resources: {\n addTemplateToBagButtonText: string;\n renameTemplateButtonText: string;\n deleteTemplateButtonText: string;\n closeWindowButtonText: string;\n addToCartFailureMessage: string;\n addToCartSuccessMessage: string;\n addToCartProcessMessage: string;\n orderTemplateErrorMessage: string;\n linesAddedToCartDialogResources: ILinesAddedToCartDialogResources;\n };\n}\n\nexport interface IOrderTemplateActionsViewProps {\n addTemplateToBag: React.ReactNode;\n renameTemplate?: React.ReactNode;\n removeTemplate?: React.ReactNode;\n isMultipleCatalogsFeatureEnabled?: boolean;\n actionsSplitButton?: React.ReactNode;\n}\n\n/**\n * Remove Order Action.\n * @param props -Order template action props.\n * @returns Remove order template.\n */\nconst removeOrderActionHandler = (props: IOrderTemplateActionsProps) => () => {\n _removeOrderTemplate(props);\n};\n\nexport const OrderTemplateActionsView = (props: IOrderTemplateActionsProps): IOrderTemplateActionsViewProps => {\n const { resources, isMultipleCatalogFeatureEnabledInHq } = props;\n const { deleteTemplateButtonText } = resources;\n\n return {\n addTemplateToBag: _getOrderTemplateAddToCartDialog(props),\n renameTemplate: !isMultipleCatalogFeatureEnabledInHq && _getOrderTemplateRenameControl(props),\n removeTemplate: !isMultipleCatalogFeatureEnabledInHq && (\n \n ),\n actionsSplitButton: isMultipleCatalogFeatureEnabledInHq && \n };\n};\n\nconst _removeOrderTemplate = (props: IOrderTemplateActionsProps): void => {\n const {\n data: { orderTemplate },\n handlers\n } = props;\n const { onRemoveTemplate } = handlers;\n\n if (onRemoveTemplate) {\n onRemoveTemplate(orderTemplate.productList.Id);\n }\n};\n\nconst _getOrderTemplateAddToCartDialog = (props: IOrderTemplateActionsProps): React.ReactNode => {\n const {\n data: { orderTemplate },\n typeName,\n id,\n context,\n telemetryContent,\n resources,\n isMultipleCatalogFeatureEnabledInHq\n } = props;\n const {\n addTemplateToBagButtonText,\n closeWindowButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n orderTemplateErrorMessage,\n linesAddedToCartDialogResources\n } = resources;\n\n const dialogStrings = {\n closeWindowButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n orderTemplateErrorMessage,\n linesAddedToCartDialogResources\n };\n\n return (\n \n );\n};\n\nconst _getOrderTemplateRenameControl = (props: IOrderTemplateActionsProps): React.ReactNode => {\n const { renameOrderTemplateDialogStrings, resources, context, handlers } = props;\n return (\n \n );\n};\n\nlet buttonEventReference: HTMLButtonElement | undefined;\nexport const ActionsSplitButton: React.FC = (props: IOrderTemplateActionsProps) => {\n const [isStatementRequestAdminDropdownOpen, setIsStatementRequestAdminDropdownOpen] = useState(false);\n const [renameOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = React.useState(false);\n\n const onOrderTemplateNameCancel = () => {\n context.telemetry.debug('Rename of template was canceled.');\n buttonEventReference?.focus();\n };\n\n const onRenameButtonClick = (event: React.MouseEvent) => {\n buttonEventReference = event.target as HTMLButtonElement;\n setOrderTemplateNameDialogOpen(true);\n event.preventDefault();\n };\n const onToggleDropdown1 = () => {\n setIsStatementRequestAdminDropdownOpen(!isStatementRequestAdminDropdownOpen);\n };\n const {\n data: { orderTemplate },\n resources,\n renameOrderTemplateDialogStrings,\n context\n } = props;\n\n const className = 'ms-order-template-action-bar';\n\n const popoverReference = React.createRef();\n const renderModalPopup = (\n \n );\n const requestStatementDropdownString = `request-statement-dropdown-id-${Random.Guid.generateGuid()}`;\n\n return (\n
\n {renderModalPopup}\n \n {'Options'}\n \n \n \n\n \n {'Delete'}\n \n \n
\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { ICoreContext, IImageSettings, Image, ITelemetry } from '@msdyn365-commerce/core';\nimport { ProductListLine } from '@msdyn365-commerce/retail-proxy';\nimport { ProductCatalog, ProductPrice, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions, getFallbackImageUrl, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { IOrderTemplateLineViewModel } from '../order-template';\nimport OrderTemplateQuantity from './common/order-template-quantity';\n\nexport interface IOrderTemplateLineProps extends ProductListLine {\n orderTemplateLine: IOrderTemplateLineViewModel;\n productListLine: ProductListLine;\n price?: ProductPrice;\n context: ICoreContext;\n productUrl: string;\n imageSettings?: IImageSettings;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n quantity: number;\n isQuantityDisabledForUpdate?: boolean;\n handlers: {\n onAddToBag(product: SimpleProduct, quantity: number, itemKey: string, catalogId?: number | undefined): void;\n onRemoveItem(line: IOrderTemplateLineViewModel): void;\n onChangeQuantity(orderTemplateLineId: string, quantity: number, props?: IOrderTemplateLineProps): void;\n onSelect(line: IOrderTemplateLineViewModel, isChecked: boolean): void;\n };\n resources: {\n selectOneRowText?: string;\n moreButtonText?: string;\n viewProductDetailsText?: string;\n productDimensionTypeColor: string;\n productDimensionTypeSize: string;\n productDimensionTypeStyle: string;\n originalPriceText: string;\n currentPriceText: string;\n freePriceText: string;\n inputQuantityAriaLabel: string;\n removeFromOrderTemplateLinesText: string;\n addToBagButtonText: string;\n deleteButtonText: string;\n incrementButtonAriaLabel?: string;\n decrementButtonAriaLabel?: string;\n editOrderTemplateLineQuantityError?: string;\n unavailableProductErrorMessage?: string;\n outOfStockProductErrorMessage?: string;\n };\n index: number;\n isMobile: boolean;\n productQuantityView?: React.ReactNode;\n addToBagButton?: React.ReactNode;\n removeButton?: React.ReactNode;\n toggleDetailsDisplayed(props: IOrderTemplateLineProps): void;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n catalogs?: ProductCatalog[];\n error?: string;\n shouldDisable?: boolean;\n}\n\nexport interface IOrderTemplateLineViewProps {\n key?: string;\n productImage: React.ReactNode;\n productPrice?: React.ReactNode;\n addToBagButton?: React.ReactNode;\n removeButton?: React.ReactNode;\n productName?: string;\n productNumber?: React.ReactNode;\n productInfo?: React.ReactNode;\n productLabel?: React.ReactNode;\n productUnitOfMeasure?: React.ReactNode;\n productQuantity?: number;\n productQuantityView?: React.ReactNode;\n productListId?: string;\n selectLine?: React.ReactNode;\n popUp?: JSX.Element;\n extraActionsPopup?: JSX.Element | null | undefined;\n isMobile?: boolean;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n productLineCatalog?: React.ReactNode;\n disabled?: boolean;\n}\n\ninterface IEventHandlerFactory {\n getAddToBag(): (event: React.MouseEvent) => void;\n getRemoveItem(): (event: React.MouseEvent) => void;\n}\n\nconst OrderTemplateLineActions = (props: IOrderTemplateLineProps): IEventHandlerFactory => {\n const { orderTemplateLine, productListLine, quantity, handlers } = props;\n const { LineId, CatalogId } = productListLine;\n const { onAddToBag, onRemoveItem } = handlers;\n\n return {\n getAddToBag: () => (event: React.MouseEvent) => {\n LineId &&\n orderTemplateLine.fullProduct &&\n onAddToBag(orderTemplateLine.fullProduct.ProductDetails, quantity, LineId, CatalogId);\n },\n getRemoveItem: () => (event: React.MouseEvent) => LineId && onRemoveItem(props.orderTemplateLine)\n };\n};\n\ninterface IPopupProps extends IOrderTemplateLineProps {\n addButtonClassName: string;\n removeButtonClassName: string;\n}\n\nconst PopUp = (props: IPopupProps): JSX.Element | null => {\n const { addToBagButtonText, removeFromOrderTemplateLinesText, moreButtonText, viewProductDetailsText } = props.resources;\n const [showMobile, setShowMobile] = useState(false);\n const componentClassName = 'ms-table';\n\n const getViewHandler = () => (event: React.MouseEvent) => {\n props.toggleDetailsDisplayed(props);\n };\n\n const toggle = React.useCallback(() => {\n setShowMobile(!showMobile);\n }, [showMobile]);\n\n return (\n
\n \n {showMobile && (\n
\n \n View\n \n {getActionButton(\n props.isMobile,\n props.removeButtonClassName,\n removeFromOrderTemplateLinesText,\n OrderTemplateLineActions(props).getRemoveItem()\n )}\n {getActionButton(\n props.isMobile,\n props.addButtonClassName,\n addToBagButtonText,\n OrderTemplateLineActions(props).getAddToBag()\n )}\n
\n )}\n
\n );\n};\n\nconst getActionButton = (\n isMobile: boolean,\n className: string,\n buttonText: string,\n clickHandler: (event: React.MouseEvent) => void\n): React.ReactNode => (\n \n);\n\nconst getDesktopActionButton = (\n className: string,\n buttonText: string,\n clickHandler: (event: React.MouseEvent) => void\n): React.ReactNode => (\n \n);\n/**\n * On Select line function.\n * @param orderTemplateLine -Order template line.\n * @param input -Order template line props.\n * @returns Set on select order template.\n */\nconst onSelectLineHandler = (orderTemplateLine: IOrderTemplateLineViewModel, input: IOrderTemplateLineProps) => (\n event: React.ChangeEvent\n) => {\n orderTemplateLine.isChecked = !orderTemplateLine.isChecked;\n\n input.handlers.onSelect(orderTemplateLine, event.target.checked);\n};\n\nexport const OrderTemplateLineView = (input: IOrderTemplateLineProps): IOrderTemplateLineViewProps | null => {\n const {\n orderTemplateLine,\n productListLine,\n price,\n context,\n imageSettings,\n quantity,\n resources,\n isMobile,\n isMultipleCatalogFeatureEnabledInHq\n } = input;\n const product = orderTemplateLine.fullProduct;\n const { LineId, UnitOfMeasure } = productListLine;\n const { removeFromOrderTemplateLinesText, addToBagButtonText, selectOneRowText } = resources;\n if (!product) {\n return null;\n }\n\n const { ItemId, PrimaryImageUrl } = product.ProductDetails;\n const fallbackImage = getFallbackImageUrl(\n ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n );\n const addButtonClassName = input.isMobile ? 'ms-table__row-links-add' : 'ms-order-template-table-line__product-add-button';\n const removeButtonClassName = input.isMobile ? 'ms-table__row-links-delete' : 'ms-order-template-table-line__product-remove-button';\n\n return {\n isMobile,\n isMultipleCatalogFeatureEnabledInHq: isMultipleCatalogFeatureEnabledInHq,\n selectLine: (\n \n ),\n key: LineId!,\n productLineCatalog: isMultipleCatalogFeatureEnabledInHq && renderProductCatalog(input),\n productImage: _renderProductImage(\n 'ms-order-template-table-line__product-image',\n context,\n product.ProductDetails.Name!,\n PrimaryImageUrl,\n fallbackImage,\n imageSettings\n ),\n productInfo: renderProductInfo(input),\n productPrice: price && _renderPrice(input),\n productNumber: product && (\n <>\n
{ItemId}
\n {input.error !== 'NONE' ? (\n
{_renderProductError(input)}
\n ) : (\n undefined\n )}\n \n ),\n productUnitOfMeasure: price ? (\n
{UnitOfMeasure || price.UnitOfMeasure}
\n ) : (\n undefined\n ),\n productListId: LineId!,\n removeButton:\n !isMultipleCatalogFeatureEnabledInHq &&\n getActionButton(\n input.isMobile,\n removeButtonClassName,\n removeFromOrderTemplateLinesText,\n OrderTemplateLineActions(input).getRemoveItem()\n ),\n productQuantityView:
{_generateQuantity(input, LineId!)}
,\n productQuantity: quantity,\n addToBagButton:\n !isMultipleCatalogFeatureEnabledInHq &&\n getActionButton(input.isMobile, addButtonClassName, addToBagButtonText, OrderTemplateLineActions(input).getAddToBag()),\n extraActionsPopup:\n !isMobile && isMultipleCatalogFeatureEnabledInHq ? (\n \n ) : (\n undefined\n ),\n popUp: ,\n disabled: input.shouldDisable\n };\n};\n\nconst ExtraActionsPopup = (props: IPopupProps): JSX.Element | null => {\n const [showActions, setShowActions] = useState(false);\n const toggle = React.useCallback(() => {\n setShowActions(!showActions);\n }, [showActions]);\n\n const className = 'ms-order-template-table-line__extra-actions-cell';\n const actionsContainerClassName = `${className}__actions-container`;\n return (\n
\n
\n );\n};\n\nexport const OrderTemplateMobileLineView = (input: IOrderTemplateLineProps): IOrderTemplateLineViewProps | undefined => {\n const { orderTemplateLine, productListLine, price, context, imageSettings, isMultipleCatalogFeatureEnabledInHq } = input;\n const product = orderTemplateLine.fullProduct;\n const { LineId, UnitOfMeasure } = productListLine;\n if (!product) {\n return;\n }\n const { ItemId, PrimaryImageUrl } = product.ProductDetails;\n const fallbackImage = getFallbackImageUrl(\n ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n );\n\n return {\n productLineCatalog: isMultipleCatalogFeatureEnabledInHq && renderProductCatalog(input),\n productImage: _renderProductImage(\n 'thumbnail',\n context,\n product.ProductDetails.Name!,\n PrimaryImageUrl,\n fallbackImage,\n imageSettings\n ),\n productInfo: renderProductInfo(input),\n productPrice: price && _renderPrice(input),\n productNumber: ItemId,\n productUnitOfMeasure: UnitOfMeasure || price?.UnitOfMeasure,\n productQuantityView: _generateQuantity(input, LineId!)\n };\n};\n\nexport interface IOrderTemplateProductQuantityViewProps {\n ContainerProps: INodeProps;\n input: React.ReactNode;\n}\n\n/**\n * On Change function.\n * @param onChangeQuantity -On change quantity function.\n * @param itemKey -String.\n * @param props -Order template line props.\n * @returns Set change quantity.\n */\nconst onChangeHandler = (\n onChangeQuantity: (orderTemplateLineId: string, quantity: number, props?: IOrderTemplateLineProps | undefined) => void,\n itemKey: string,\n props: IOrderTemplateLineProps\n) => (newValue: number) => {\n if (onChangeQuantity) {\n onChangeQuantity(itemKey, newValue, props);\n }\n};\n\nconst _generateQuantity = (props: IOrderTemplateLineProps, itemKey: string): React.ReactNode => {\n const { handlers, resources, quantity } = props;\n const { onChangeQuantity } = handlers;\n return (\n \n );\n};\n\nexport const _renderProductImage = (\n className: string,\n context: ICoreContext,\n heading: string,\n image?: string,\n fallbackImage?: string,\n imageSettings?: IImageSettings\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n lg: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n xl: { q: 'w=64&h=64&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n};\n\nexport const renderProductCatalog = (props: IOrderTemplateLineProps) => {\n const catalogId = props.productListLine.CatalogId;\n validateCatalogId(catalogId);\n\n if (!props.context.request.user.isB2b || !catalogId || !ArrayExtensions.hasElements(props.catalogs)) {\n return null;\n }\n\n const catalog = props.catalogs.find(item => item.RecordId === catalogId);\n\n if (!catalog || !catalog.Name) {\n return null;\n }\n\n return
{catalog.Name}
;\n};\n\nconst _renderPrice = (props: IOrderTemplateLineProps): JSX.Element | null => {\n const { price, context, moduleId, moduleTypeName, resources } = props;\n\n if (price) {\n return (\n \n );\n }\n return null;\n};\n\nconst _renderProductDimensions = (props: IOrderTemplateLineProps): (string | undefined)[] => {\n const { orderTemplateLine } = props;\n\n if (!orderTemplateLine.fullProduct || !orderTemplateLine.fullProduct.ProductDetails.Dimensions) {\n return [];\n }\n\n return orderTemplateLine.fullProduct.ProductDetails.Dimensions.map(dimension => {\n if (!dimension.DimensionValue || !dimension.DimensionValue.Value) {\n return undefined;\n }\n\n return dimension.DimensionValue.Value;\n });\n};\n\nconst _renderProductError = (props: IOrderTemplateLineProps) => {\n const { error, resources } = props;\n\n if (!error) {\n return '';\n }\n\n const errorMessages = {\n OOS: resources.outOfStockProductErrorMessage,\n UNASSORTED: resources.unavailableProductErrorMessage,\n NONE: ''\n };\n\n return errorMessages[error];\n};\n\nexport const renderProductInfo = (props: IOrderTemplateLineProps): React.ReactNode | undefined => {\n const { orderTemplateLine, productUrl } = props;\n const name = orderTemplateLine.fullProduct?.ProductDetails.Name;\n\n const dimensions = _renderProductDimensions(props);\n if (!orderTemplateLine.fullProduct) {\n return [];\n }\n\n const productName = productUrl ? (\n \n {name}\n \n ) : (\n
{name}
\n );\n\n const dimensionsLine: string = dimensions.join(', ');\n\n return (\n
\n
{productName}
\n
{dimensionsLine}
\n
\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { orderTemplateLinesStatus } from '../order-template';\n\nexport interface IOrderTemplateLinesStatusMessageProps {\n className?: string;\n errorType: orderTemplateLinesStatus;\n text?: string;\n}\n\nexport const OrderTemplateLinesStatusMessage: React.FC = ({ className, errorType, text }) => {\n switch (errorType) {\n case 'EMPTY':\n return

{text}

;\n case 'FAILED':\n return

{text}

;\n case 'LOADING':\n default:\n return

{text}

;\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nimport { IOrderTemplateLineViewModel } from '../order-template';\n\nexport interface IOrderTemplateTableHeadingProps {\n selectAllRowsText?: string;\n productNumber: string;\n productName: string;\n productUnitPrice: string;\n productUOM: string;\n productQuantity: string;\n productActions: string;\n lines: IOrderTemplateLineViewModel[];\n isMobile: boolean;\n clickHandler(isChecked: boolean): void;\n productImage?: string;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n productLineCatalogName?: string;\n}\n\n/**\n * Order Template's table state.\n */\nexport interface IOrderTemplateTableHeadingState {\n isChecked: boolean;\n}\n\nexport interface IOrderTemplateTableShortHeading {\n productNumber: string;\n productActions: string;\n}\n\n/**\n * Order Template's table heading.\n */\nexport class OrderTemplateTableHeading extends React.PureComponent {\n public state: IOrderTemplateTableHeadingState = {\n isChecked: false\n };\n\n private readonly componentClassName: string = 'ms-table';\n\n public static getDerivedStateFromProps(\n props: IOrderTemplateTableHeadingProps,\n state: IOrderTemplateTableHeadingState\n ): IOrderTemplateTableHeadingState {\n const checkedLines = props.lines.filter(line => !line.isChecked).length;\n let nextState = { ...state };\n nextState = { isChecked: checkedLines === 0 };\n return nextState;\n }\n\n public getOnChange = () => (event: React.ChangeEvent) => {\n this.setState(\n {\n isChecked: this.state.isChecked\n },\n () => {\n this.props.clickHandler(!this.state.isChecked);\n }\n );\n };\n\n public render(): JSX.Element {\n return (\n \n \n \n \n \n {!this.props.isMobile && this.props.isMultipleCatalogFeatureEnabledInHq ? (\n {this.props.productLineCatalogName}\n ) : null}\n {!this.props.isMobile ? {this.props.productImage} : null}\n {this.props.productNumber}\n {!this.props.isMobile ? {this.props.productName} : null}\n {!this.props.isMobile ? {this.props.productUnitPrice} : null}\n {!this.props.isMobile ? {this.props.productUOM} : null}\n {!this.props.isMobile ? {this.props.productQuantity} : null}\n {!this.props.isMobile ? {this.props.productActions} : }\n \n \n );\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IItemAddedToCartDialogData,\n IItemAddedToCartDialogResources,\n ILinesAddedToCartDialogResources,\n IOrderTemplateNameDialogResources,\n ItemAddedToCartDialog\n} from '@msdyn365-commerce/components';\nimport MsDyn365, { AsyncResult, getCatalogId, getUrlSync, ICoreContext, IRequestContext } from '@msdyn365-commerce/core';\nimport { ICartActionResult } from '@msdyn365-commerce/global-state';\nimport { ProductList, ProductListLine } from '@msdyn365-commerce/retail-proxy';\nimport {\n deleteAsync,\n removeProductListLinesAsync,\n updateProductListLinesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { FeatureState, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n ArrayExtensions,\n createGetFeatureStateInput,\n getFeatureState,\n getPriceForSelectedVariant,\n getProductUrlSync,\n ObjectExtensions,\n OrderTemplate,\n OrderTemplateLine,\n PriceForSelectedVariantInput,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Alert,\n getTelemetryObject,\n Heading,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n UncontrolledPagination\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport debounce from 'lodash/debounce';\nimport { action, computed, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n IOrderTemplateActionsProps,\n IOrderTemplateActionsViewProps,\n IOrderTemplateLineProps,\n IOrderTemplateLineViewProps,\n IOrderTemplateTableHeadingProps,\n OrderTemplateActionsView,\n OrderTemplateLinesStatusMessage,\n OrderTemplateLineView,\n OrderTemplateMobileLineView,\n OrderTemplateTableHeading\n} from '../..';\nimport { ActiveOrderTemplateLinesInput } from './actions/get-order-template';\nimport { OrderTemplateBulkActions } from './components/bulk-actions';\nimport { IOrderTemplateData } from './order-template.data';\nimport { IOrderTemplateProps, IOrderTemplateResources } from './order-template.props.autogenerated';\nimport Spinner from './components/add-line/spinner';\n\nexport interface IOrderTemplateLineActionMessageState {\n itemKey: string;\n userMessage: string;\n statusCssString: string;\n messageGlyph: string;\n isOpen: boolean;\n isItemAddedToOrderTemplateOpen: boolean;\n isConfirmAddSelectionToBagModalOpen: boolean;\n itemAddedToCartDialogData?: IItemAddedToCartDialogData;\n productSelection: IOrderTemplateLineViewModel[];\n isDetailsDisplayed: boolean;\n detailedProductView?: IOrderTemplateLineViewProps;\n isQuantityDisabledForUpdate?: boolean;\n}\n\nexport type orderTemplateLinesStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface IOrderTemplateViewProps extends IOrderTemplateProps {\n OrderTemplateLines: IModuleProps;\n callbacks?: IOrderTemplateLinesCallbacks;\n status?: orderTemplateLinesStatus;\n statusMessage?: React.ReactNode;\n heading?: React.ReactNode;\n OrderTemplateActions?: INodeProps;\n ProductsTable?: INodeProps;\n ProductsTableRow?: INodeProps;\n ProductsTableHeading?: React.ReactNode;\n ProductDetails?: INodeProps;\n orderLines?: IOrderTemplateLineViewProps[];\n productListLines?: ProductListLine[];\n productsStatusMessage?: React.ReactNode;\n orderActions?: IOrderTemplateActionsViewProps | null;\n resources: IOrderTemplateResources;\n pagination?: React.ReactNode;\n itemAddedToCartDialog?: React.ReactNode;\n bulkOrderLineActions?: React.ReactNode;\n isDetailsDisplayed?: boolean;\n detailedProduct?: IOrderTemplateLineProps;\n detailedProductView?: IOrderTemplateLineViewProps;\n productQuantityView?: React.ReactNode;\n addButton?: React.ReactNode;\n isMobile?: boolean;\n toggleDetailsDisplayed?(props: IOrderTemplateLineProps | undefined): void;\n}\n\nexport interface IOrderTemplateLinesCallbacks {\n updateQuantity(itemKey: string, quantity: number): void;\n}\n\nexport interface IOrderTemplateLineViewModel extends OrderTemplateLine {\n isChecked: boolean;\n productQuantityView: React.ReactNode;\n}\n\n/**\n *\n * OrderTemplateLines component.\n * @extends {React.PureComponent, IOrderTemplateLineActionMessageState>}\n */\n@observer\nclass OrderTemplateLines extends React.Component, IOrderTemplateLineActionMessageState> {\n private readonly className: string;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n @observable\n private _viewport: GridSize;\n\n @computed get isMobile(): boolean {\n return this._viewport === 'xs' || this._viewport === 'sm';\n }\n\n constructor(props: IOrderTemplateProps, state: IOrderTemplateLineActionMessageState) {\n super(props);\n this.className = 'ms-order-template';\n this._viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._updateViewport = this._updateViewport.bind(this);\n\n this.state = {\n itemKey: '',\n userMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: false,\n isItemAddedToOrderTemplateOpen: false,\n isConfirmAddSelectionToBagModalOpen: false,\n productSelection: [],\n isDetailsDisplayed: false,\n isQuantityDisabledForUpdate: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this._updateViewport();\n\n if (MsDyn365.isBrowser && !this.props.context.request.user.isAuthenticated && !this.props.context.request.params.isEditor) {\n window.location.assign(this.props.context.request.user.signInUrl || '/');\n }\n }\n\n @action\n public async componentDidMount(): Promise {\n this.setState({});\n const orderTemplate = await this.props.data.orderTemplate;\n this.props.config.heading!.text = orderTemplate?.productList.Name || '';\n this.setState({\n productSelection: orderTemplate?.orderTemplateLines as IOrderTemplateLineViewModel[]\n });\n\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', this._updateViewport);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this._updateViewport);\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IOrderTemplateProps,\n nextState: IOrderTemplateLineActionMessageState\n ): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { heading, className } = this.props.config;\n const { emptyOrderTemplateLinesText, errorGettingOrderTemplateLines } = this.props.resources;\n const { orderTemplate, cart } = this.props.data;\n\n if (cart.status === 'LOADING' || ObjectExtensions.isNullOrUndefined(orderTemplate) || orderTemplate.status === 'LOADING') {\n const errorProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(this.className, className)\n },\n status: 'LOADING',\n statusMessage: ,\n heading: heading && ,\n resources: this.props.resources\n };\n return this.props.renderView(errorProps);\n }\n\n if (cart.status === 'FAILED' || orderTemplate.status === 'FAILED') {\n const errorProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(`${this.className}`, className)\n },\n status: 'FAILED',\n statusMessage: ,\n heading: heading && ,\n resources: this.props.resources\n };\n\n return this.props.renderView(errorProps);\n }\n\n const orderTemplateResult = orderTemplate && orderTemplate.result;\n const orderTemplateLines = orderTemplateResult && orderTemplateResult.orderTemplateLines;\n\n if (!orderTemplateResult || !orderTemplateLines || orderTemplateLines.length === 0) {\n if (orderTemplateResult && !this._isFirstPage() && MsDyn365.isBrowser) {\n window.location.href = this._getOrderTemplatePageUrl();\n return null;\n }\n\n const emptyViewProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(`${this.className}`, className)\n },\n status: 'EMPTY',\n statusMessage: ,\n heading: heading && ,\n resources: this.props.resources,\n orderActions:\n orderTemplateResult &&\n this._renderOrderTemplateActions(orderTemplateResult, this._isChannelMultipleCatalogsFeatureEnabled()),\n bulkOrderLineActions: orderTemplateResult && this._getOrderTemplateLineActions(orderTemplateResult.productList.Id),\n OrderTemplateActions: {\n className: `${this.className}-action-bar`,\n tag: 'div'\n }\n };\n\n return this.props.renderView(emptyViewProps);\n }\n\n const viewProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(`${this.className}`, className)\n },\n status: 'SUCCESS',\n productsStatusMessage: this.state.isOpen && (\n
\n \n {this.state.userMessage}\n \n
\n ),\n heading: heading && ,\n OrderTemplateActions: {\n className: `${this.className}-action-bar`,\n tag: 'div'\n },\n ProductsTable: {\n className: `${this.className}__table`,\n tag: 'table',\n role: 'grid'\n },\n ProductsTableRow: {\n className: `${this.className}-table-line`,\n tag: 'tr'\n },\n ProductsTableHeading: this._renderProductListHeader(this.props.resources),\n ProductDetails: {\n className: `${this.className}-table-line__link`,\n tag: 'a'\n },\n orderLines: this._renderProductList(),\n callbacks: { updateQuantity: debounce(this._changeQuantity, 2000) },\n orderActions: this._renderOrderTemplateActions(orderTemplateResult, this._isChannelMultipleCatalogsFeatureEnabled()),\n pagination: this._renderPagination(),\n itemAddedToCartDialog: this._renderItemAddedToCartDialog(),\n bulkOrderLineActions: this._getOrderTemplateLineActions(orderTemplateResult.productList.Id),\n isDetailsDisplayed: this.state.isDetailsDisplayed,\n toggleDetailsDisplayed: this._toggleDetailsDisplayed,\n detailedProductView: this.state.detailedProductView,\n isMobile: this.isMobile\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public onSelect(line: IOrderTemplateLineViewModel, isChecked: boolean): void {\n line.isChecked = isChecked;\n\n const updated =\n this.state.productSelection.map(product => {\n if (product.fullProduct?.ProductDetails.ItemId === line.fullProduct?.ProductDetails.ItemId) {\n line.isChecked = isChecked;\n }\n return product;\n }) || [];\n\n this.setState({\n productSelection: updated\n });\n }\n\n public onSelectAll(isChecked: boolean): void {\n const updated =\n this.state.productSelection.map(line => {\n line.isChecked = isChecked;\n return line;\n }) || [];\n\n this.setState({\n productSelection: updated\n });\n }\n\n private _renderProductListHeader(resources: IOrderTemplateResources): React.ReactNode {\n const {\n productImage,\n productNumberText,\n productText,\n productUnitPriceText,\n productUOMText,\n productQuantityText,\n productActionsText,\n selectAllRowsText,\n productLineCatalogName\n } = resources;\n const headers: IOrderTemplateTableHeadingProps = {\n productImage: productImage,\n productNumber: productNumberText,\n productName: productText,\n productUnitPrice: productUnitPriceText,\n productUOM: productUOMText,\n productQuantity: productQuantityText,\n productActions: productActionsText,\n selectAllRowsText,\n lines: this.state.productSelection,\n isMobile: this.isMobile,\n clickHandler: (isChecked: boolean) => {\n this.onSelectAll(isChecked);\n },\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled(),\n productLineCatalogName: productLineCatalogName\n };\n\n return ;\n }\n\n private _getOrderTemplateLineActions(orderTemplateId: string): React.ReactNode {\n return (\n line.isChecked)}\n onAddSelectionToBag={this._onAddSelectionToBag}\n onRemoveSelection={this._onRemoveSelection}\n isMinifiedView={this.isMobile}\n isMultipleCatalogFeatureEnabledInHq={this._isChannelMultipleCatalogsFeatureEnabled()}\n telemetryContent={this.telemetryContent}\n />\n );\n }\n\n private _generateLinesAddedToCartDialogResources(): ILinesAddedToCartDialogResources {\n return {\n viewCartButtonText: this.props.resources.viewCartButtonText,\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\n linesAddedToCartHeaderItemsOneText: this.props.resources.linesAddedToCartHeaderItemsOneText,\n linesAddedToCartHeaderLinesOneText: this.props.resources.linesAddedToCartHeaderLinesOneText,\n linesAddedToCartHeaderLinesFormatText: this.props.resources.linesAddedToCartHeaderLinesFormatText,\n linesAddedToCartHeaderMessageText: this.props.resources.linesAddedToCartHeaderMessageText\n };\n }\n\n private _generateItemAddedToCartDialogResources(): IItemAddedToCartDialogResources {\n return {\n viewCartButtonText: this.props.resources.viewCartButtonText,\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\n itemAddedToCartHeaderItemOneText: this.props.resources.itemAddedToCartHeaderItemOneText,\n itemAddedToCartHeaderItemFormatText: this.props.resources.itemAddedToCartHeaderItemFormatText,\n itemAddedToCartHeaderMessageText: this.props.resources.itemAddedToCartHeaderMessageText,\n freePriceText: this.props.resources.freePriceText,\n originalPriceText: this.props.resources.originalPriceText,\n currentPriceText: this.props.resources.currentPriceText\n };\n }\n\n private readonly _isChannelMultipleCatalogsFeatureEnabled = (): boolean => {\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (this.props.data.featureState) {\n isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n return isMultipleCatalogFeatureEnabledInHq;\n };\n\n private readonly _onRemoveSelection = (): void => {\n const { context, resources } = this.props;\n const { telemetry } = context;\n const { removeSelectedFailureMessage, removeSelectedSuccessMessage } = resources;\n const lines = this.state.productSelection;\n const productListLines = lines && lines.length && lines.filter(line => line.isChecked).map(line => line.productListLine);\n\n if (productListLines && productListLines.length > 0) {\n const productListId = productListLines[0].ProductListId;\n\n const maxWaitTimeInMilliSeconds: number = 1000;\n removeProductListLinesAsync({ callerContext: context.actionContext }, productListId!, productListLines)\n .then(async () => {\n this.setState({\n userMessage: removeSelectedSuccessMessage,\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: true\n });\n // eslint-disable-next-line no-promise-executor-return -- fix\n await new Promise(resolve => setTimeout(resolve, maxWaitTimeInMilliSeconds));\n window.location.reload();\n })\n .catch(error => {\n telemetry.warning('[order-template-lines] Unable remove items from the order template lines');\n telemetry.error(error);\n this.setState({\n userMessage: removeSelectedFailureMessage,\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: true\n });\n });\n }\n };\n\n private readonly _getOrderTemplatePageUrl = (): string => {\n let url = getUrlSync('ordertemplate', this.props.context.actionContext) || '';\n url = url.includes('?') ? url.substr(0, url.indexOf('?')) : url;\n if (this.props.data.orderTemplate?.result?.productList.Id) {\n return `${url}?id=${this.props.data.orderTemplate.result.productList.Id}`;\n }\n return '';\n };\n\n private readonly _onAddSelectionToBag = async (): Promise => {\n const lines = this.state.productSelection;\n const selectedLines = lines.filter(line => line.isChecked);\n if (selectedLines.length > 0) {\n for (const productLine of selectedLines) {\n const itemKey = productLine.fullProduct?.ProductDetails.ItemId ?? '';\n const product = productLine.fullProduct?.ProductDetails ?? {\n RecordId: 0,\n ProductTypeValue: 0,\n BasePrice: 0,\n Price: 0,\n AdjustedPrice: 0\n };\n const quantity = productLine.productListLine.Quantity ?? 0;\n if (this._isChannelMultipleCatalogsFeatureEnabled()) {\n const catalogId = productLine.productListLine.CatalogId;\n await this._addItemToBag(product, quantity, itemKey, catalogId);\n } else {\n await this._addItemToBag(product, quantity, itemKey);\n }\n }\n }\n return Promise.resolve(void 0);\n };\n\n private _renderOrderTemplateActions(\n orderTemplate: OrderTemplate,\n isMultipleCatalogFeatureEnabledInHq: boolean\n ): IOrderTemplateActionsViewProps {\n const { id, typeName, context, resources } = this.props;\n const {\n addTemplateToBagButtonText,\n renameTemplateButtonText,\n deleteTemplateButtonText,\n closeWindowButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n orderTemplateErrorMessage\n } = resources;\n\n const orderTemplateActions: IOrderTemplateActionsProps = {\n data: { orderTemplate },\n id,\n typeName,\n context,\n telemetryContent: this.telemetryContent,\n handlers: {\n onRenameTemplate: this._renameTemplate,\n onRemoveTemplate: this._removeTemplate\n },\n isMultipleCatalogFeatureEnabledInHq,\n renameOrderTemplateDialogStrings: this._generateOrderTemplateNameDialogResources(resources),\n resources: {\n addTemplateToBagButtonText,\n renameTemplateButtonText,\n deleteTemplateButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n closeWindowButtonText,\n orderTemplateErrorMessage,\n linesAddedToCartDialogResources: this._generateLinesAddedToCartDialogResources()\n }\n };\n\n return OrderTemplateActionsView(orderTemplateActions);\n }\n\n private _generateOrderTemplateNameDialogResources(resources: IOrderTemplateResources): IOrderTemplateNameDialogResources {\n return {\n orderTemplateHeaderLabel: resources.renameOrderTemplateTitleText,\n orderTemplateTitleLabel: resources.orderTemplateTitle,\n orderTemplateNameAriaLabel: resources.orderTemplateTitle,\n orderTemplateDescription: '',\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\n orderTemplateButtonLabel: resources.renameOrderTemplateButtonText,\n orderTemplateCancelButtonLabel: resources.cancelBtnLabel\n };\n }\n\n private readonly _getCurrentUrl = (reqContext: IRequestContext): URL => {\n if (MsDyn365.isBrowser) {\n return new URL(window.location.href);\n }\n return new URL(reqContext.url.requestUrl.href);\n };\n\n /**\n * On close handler.\n */\n private readonly onCloseHandler = () => {\n this.setState({\n itemKey: this.state.itemKey,\n userMessage: this.state.userMessage,\n statusCssString: this.state.statusCssString,\n messageGlyph: this.state.messageGlyph,\n isOpen: this.state.isOpen,\n isItemAddedToOrderTemplateOpen: false\n });\n };\n\n private readonly _renderItemAddedToCartDialog = (): React.ReactNode | null => {\n if (!this.state.itemAddedToCartDialogData) {\n return null;\n }\n const isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState?.result?.find(feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature')\n ?.IsEnabled || false;\n\n return (\n \n );\n };\n\n private _isFirstPage(): boolean {\n return this._getCurrentPageNumber() === 0;\n }\n\n private _getCurrentPageNumber(): number {\n const itemsPerPage = this.props.config.itemsPerPage || 50;\n return (this.props.context.request.query && +this.props.context.request.query.skip / itemsPerPage) || 0;\n }\n\n private readonly _renderPagination = (): React.ReactNode | null => {\n const { config, context, data, resources } = this.props;\n const orderTemplate = data && data.orderTemplate && data.orderTemplate.result;\n if (!orderTemplate) {\n return null;\n }\n\n const fullUrl = this._getCurrentUrl(context.request);\n const itemsPerPage = config.itemsPerPage || 50;\n const currentPageNumber = this._getCurrentPageNumber();\n const skipCount = currentPageNumber * itemsPerPage;\n const totalItems = orderTemplate && orderTemplate.totalLines;\n const previousText = resources.flipperPrevious;\n const nextText = resources.flipperNext;\n\n if (totalItems <= itemsPerPage) {\n return null;\n }\n\n return (\n \n );\n };\n\n private _renderProductList(): IOrderTemplateLineViewProps[] {\n const {\n selectOneRowText,\n moreButtonText,\n viewProductDetailsText,\n priceFree,\n originalPriceText,\n currentPriceText,\n addOrderTemplateItemToBagButtonText,\n removeItemFromOrderTemplateButtonText,\n productDimensionTypeColor,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n inputQuantityAriaLabel,\n deleteButtonText,\n incrementButtonAriaLabel,\n decrementButtonAriaLabel,\n unavailableProductErrorMessage,\n outOfStockProductErrorMessage\n } = this.props.resources;\n\n const { context, telemetry, data } = this.props;\n const { catalogs } = data;\n const { imageSettings } = this.props.config;\n\n return this.state.productSelection.map((line, index) => {\n const currentProductProps: IOrderTemplateLineProps = {\n orderTemplateLine: line,\n productListLine: line.productListLine,\n price: line.fullProduct?.ProductPrice,\n error: line.error,\n shouldDisable: line.shouldDisable,\n context,\n isQuantityDisabledForUpdate: this.state.isQuantityDisabledForUpdate,\n productUrl: line.fullProduct\n ? this._updateProductUrlCatalog(line.fullProduct.ProductDetails, context, line.productListLine.CatalogId)\n : '',\n imageSettings,\n telemetry,\n moduleId: this.props.id,\n moduleTypeName: this.props.typeName,\n quantity: line.productListLine.Quantity!,\n handlers: {\n onAddToBag: this._addItemToBag,\n onRemoveItem: this._removeItemFromOrderTemplateLines,\n onChangeQuantity: this._changeQuantity,\n onSelect: this.onSelect.bind(this)\n },\n resources: {\n selectOneRowText,\n moreButtonText,\n viewProductDetailsText,\n productDimensionTypeColor,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n freePriceText: priceFree,\n originalPriceText,\n currentPriceText,\n inputQuantityAriaLabel,\n removeFromOrderTemplateLinesText: removeItemFromOrderTemplateButtonText,\n addToBagButtonText: addOrderTemplateItemToBagButtonText,\n deleteButtonText,\n incrementButtonAriaLabel,\n decrementButtonAriaLabel,\n unavailableProductErrorMessage,\n outOfStockProductErrorMessage\n },\n index,\n isMobile: this.isMobile,\n toggleDetailsDisplayed: this._toggleDetailsDisplayed,\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled(),\n catalogs: catalogs && catalogs.result\n };\n\n return OrderTemplateLineView(currentProductProps)!;\n });\n }\n\n private readonly _toggleDetailsDisplayed = (props: IOrderTemplateLineProps): void => {\n let state = {\n isDetailsDisplayed: !this.state.isDetailsDisplayed\n };\n if (props) {\n state = {\n ...state,\n ...{\n detailedProductView: OrderTemplateMobileLineView(props)\n }\n };\n }\n this.setState(state);\n };\n\n // This method is used to update the product url with the catalogId\n private readonly _updateProductUrlCatalog = (\n productDetails: SimpleProduct,\n context: ICoreContext,\n catalogId: number | undefined\n ): string => {\n const productUrl = getProductUrlSync(productDetails, context.actionContext, undefined);\n if (!StringExtensions.isNullOrWhitespace(productUrl) && catalogId !== undefined) {\n const absoluteUrl = new URL(productUrl, window.location.href);\n absoluteUrl.searchParams.set('catalogid', `${catalogId ?? 0}`);\n return absoluteUrl.href;\n }\n\n return productUrl;\n };\n\n // Dismiss alert when addingToCart/removeItem\n private readonly _onDismiss = () => {\n this.setState({\n isOpen: false\n });\n };\n\n private readonly _changeQuantity = async (itemKey: string, quantity: number, props?: IOrderTemplateLineProps) => {\n const { context, data, telemetry, config, resources } = this.props;\n const { orderTemplate } = data;\n\n if (context) {\n if (orderTemplate?.result) {\n const orderTemplateLinesData = orderTemplate.result.orderTemplateLines;\n if (orderTemplateLinesData) {\n const orderLineIndex = orderTemplateLinesData.findIndex(\n (lines: OrderTemplateLine) => lines.productListLine.LineId === itemKey\n );\n const newProductListLine = { ...orderTemplateLinesData[orderLineIndex] };\n if (orderTemplateLinesData[orderLineIndex].productListLine.Quantity === quantity) {\n return;\n }\n const prevQuantity = newProductListLine.productListLine.Quantity;\n newProductListLine.productListLine.Quantity = quantity;\n const { fullProduct, ...line } = newProductListLine;\n\n // Update mobile modal\n if (props) {\n props.quantity = quantity;\n this.setState({\n detailedProductView: OrderTemplateMobileLineView(props)\n });\n }\n\n this.setState({\n isQuantityDisabledForUpdate: true\n });\n\n updateProductListLinesAsync({ callerContext: context.actionContext }, orderTemplate.result.productList.Id, [\n line.productListLine\n ])\n .then(list => {\n this.setState({\n itemKey,\n userMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isQuantityDisabledForUpdate: false,\n isOpen: false\n });\n if (list) {\n const newLine = list.find(lines => lines.LineId === itemKey);\n orderTemplateLinesData[orderLineIndex].productListLine = newLine!;\n const updatedLines = [...orderTemplateLinesData];\n updatedLines[orderLineIndex] = { fullProduct, productListLine: newLine! };\n const updatedOrderTemplate = { ...orderTemplate.result, ProductListLines: updatedLines };\n context.actionContext.update(\n new ActiveOrderTemplateLinesInput(context.actionContext.requestContext, config),\n updatedOrderTemplate\n );\n }\n })\n .catch(error => {\n telemetry.warning('[order-template-lines] Unable to update product quantity.');\n telemetry.error(error);\n const userMessage = resources.editOrderTemplateLineQuantityError;\n if (props) {\n props && (props.productListLine.Quantity = prevQuantity);\n this.setState({\n itemKey,\n userMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isQuantityDisabledForUpdate: false,\n isOpen: true,\n detailedProductView: OrderTemplateMobileLineView(props)\n });\n } else {\n newProductListLine.productListLine.Quantity = prevQuantity;\n this.setState({\n itemKey,\n userMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isQuantityDisabledForUpdate: false,\n isOpen: true\n });\n }\n });\n }\n }\n }\n };\n\n private readonly _addItemToBag = async (\n product: SimpleProduct,\n quantity: number,\n itemKey: string,\n catalogId?: number | undefined\n ): Promise => {\n const { context, data, resources, telemetry } = this.props;\n const { cart } = data;\n const { maxQuantityLimitText, addedToCartFailureMessage } = resources;\n\n if (context) {\n if (cart.result) {\n const addProductToCartInput = {\n product,\n count: quantity,\n catalogId\n };\n\n await cart.result\n .addProductToCart(addProductToCartInput)\n .then((result: ICartActionResult) => {\n if (result.status === 'SUCCESS') {\n return getPriceForSelectedVariant(\n new PriceForSelectedVariantInput(\n product.RecordId,\n this.props.context.actionContext.requestContext.apiSettings.channelId,\n product\n ),\n this.props.context.actionContext\n ).then(priceResult => {\n if (!priceResult) {\n return AsyncResult.reject('Failed to retrieve product price');\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- read config file.\n const isMiniCart = context.app.config.addToCartBehavior === 'showMiniCart';\n this.setState({\n itemKey,\n userMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: false,\n isItemAddedToOrderTemplateOpen: !isMiniCart,\n itemAddedToCartDialogData: {\n product,\n productPrice: priceResult,\n quantity\n },\n isDetailsDisplayed: false\n });\n return AsyncResult.resolve();\n });\n } else {\n switch (result.substatus) {\n case 'MAXQUANTITY':\n if (context.app.config.maxQuantityForCartLineItem) {\n const cartLineQuantity: number | undefined =\n cart.result?.cart.CartLines &&\n cart.result?.cart.CartLines.find(result => result.ProductId === product.RecordId)?.Quantity;\n const defaultMessage = `You can only add ${context.app.config.maxQuantityForCartLineItem} of this item to your shopping bag`;\n this.setState({\n itemKey,\n userMessage:\n cartLineQuantity !== undefined\n ? maxQuantityLimitText\n .replace('{curQuantity}', cartLineQuantity.toString())\n .replace(\n '{maxQuantity}',\n context.app.config.maxQuantityForCartLineItem.toString()\n ) || defaultMessage\n : defaultMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n } else {\n const defaultMessage = `Max quantity for cart line item is undefined. Please define in configuration settings.`;\n this.setState({\n itemKey,\n userMessage: defaultMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n }\n case 'INVOICEINCART': {\n this.setState({\n itemKey,\n userMessage: result.errorDetails?.LocalizedMessage || addedToCartFailureMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n }\n default:\n telemetry.debug('[order-template-lines] Unable to Update Cart Line from the order template lines');\n this.setState({\n itemKey,\n userMessage: addedToCartFailureMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n }\n }\n })\n .catch((error: Error) => {\n telemetry.warning(error.message);\n telemetry.debug('[order-template-lines] Error trying to Update Cart Line from the order template lines');\n if (StringExtensions.isNullOrWhitespace(error.message)) {\n this.setState({\n itemKey,\n userMessage: error.message,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n } else {\n this.setState({\n itemKey,\n userMessage: addedToCartFailureMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n }\n });\n }\n }\n };\n\n private readonly _removeItemFromOrderTemplateLines = async (line: IOrderTemplateLineViewModel) => {\n const { context, data, telemetry } = this.props;\n const { orderTemplate } = data;\n\n if (context && context.actionContext) {\n const maxWaitTimeInMilliSeconds: number = 1000;\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && orderTemplate?.result && line) {\n const featureStates = await getFeatureState(createGetFeatureStateInput(context.actionContext), context.actionContext);\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (ArrayExtensions.hasElements(featureStates)) {\n isMultipleCatalogFeatureEnabledInHq =\n featureStates.find(\n (featureState: FeatureState) => featureState.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n const catalogId = getCatalogId(context.actionContext.requestContext);\n if (isMultipleCatalogFeatureEnabledInHq) {\n line.productListLine.CatalogId = catalogId;\n }\n removeProductListLinesAsync({ callerContext: context.actionContext }, line.productListLine.ProductListId!, [\n line.productListLine\n ])\n .then(async () => {\n // eslint-disable-next-line no-promise-executor-return -- fix\n await new Promise(resolve => setTimeout(resolve, maxWaitTimeInMilliSeconds));\n window.location.reload();\n })\n .catch(error => {\n telemetry.warning('[order-template-lines] Unable remove items from the order template lines');\n telemetry.error(error);\n });\n } else {\n telemetry.warning(\n '[order-template-lines] Unable remove items from the order template lines user token or lineItemID was not found'\n );\n }\n }\n };\n\n private readonly _renameTemplate = async (_template: ProductList): Promise => {\n window.location.reload();\n return Promise.resolve();\n };\n\n private readonly _removeTemplate = () => {\n const { context, data, telemetry, resources } = this.props;\n const { orderTemplate } = data;\n\n if (context && context.actionContext) {\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && orderTemplate && orderTemplate.result) {\n deleteAsync({ callerContext: context.actionContext }, orderTemplate.result.productList)\n .then()\n .catch((error: string) => {\n telemetry.warning('[order-template] Unable to delete order template.');\n telemetry.error(error);\n this.setState({\n itemKey: orderTemplate.result?.productList.Id || '',\n userMessage: resources.deleteOrderTemplateFailedText,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n });\n const newLink = getUrlSync('ordertemplatelist', this.props.context.actionContext);\n if (newLink) {\n window.location.assign(newLink);\n }\n } else {\n telemetry.warning('[order-template] Failed to delete order template. Order template was not found');\n }\n } else {\n telemetry.warning('[order-template] Failed to delete order template.');\n }\n };\n\n private _updateViewport(): void {\n this._viewport = this._getViewport();\n }\n\n private readonly _getViewport = (): GridSize => {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n };\n\n /**\n * Renders a Pagination previous text.\n * @param paginationPreviousText - Pagination previous text from resources.\n * @returns Previous text and flipper icon.\n */\n private readonly _renderPrev = (paginationPreviousText: string) => {\n return (\n
\n
\n );\n };\n\n /**\n * Renders a Pagination next text.\n * @param paginationNextText - Pagination next text from resources.\n * @returns Next text and flipper icon.\n */\n private readonly _renderNext = (paginationNextText: string) => {\n return (\n
\n {paginationNextText}\n
\n );\n };\n}\n\nexport default OrderTemplateLines;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps, Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateLineViewProps } from './components';\nimport { IOrderTemplateViewProps } from './order-template';\n\nconst OrderTemplateLinesView: React.FC = (props: IOrderTemplateViewProps) => {\n const {\n OrderTemplateLines,\n status,\n statusMessage,\n heading,\n ProductsTable,\n ProductsTableHeading,\n orderLines,\n ProductsTableRow,\n productsStatusMessage,\n OrderTemplateActions,\n orderActions,\n pagination,\n itemAddedToCartDialog,\n bulkOrderLineActions,\n isDetailsDisplayed,\n detailedProductView,\n toggleDetailsDisplayed,\n resources: {\n cancelBtnLabel,\n productNumberText,\n productText,\n productUnitPriceText,\n productUOMText,\n productQuantityText,\n productLineCatalogName\n }\n } = props;\n\n const toggleDetails = React.useCallback(() => {\n toggleDetailsDisplayed && toggleDetailsDisplayed(undefined);\n }, [toggleDetailsDisplayed]);\n\n return (\n \n {heading}\n {OrderTemplateActions && (\n \n {orderActions?.addTemplateToBag}\n {orderActions?.renameTemplate}\n {orderActions?.removeTemplate}\n {orderActions?.actionsSplitButton}\n {!isDetailsDisplayed && productsStatusMessage}\n \n )}\n {bulkOrderLineActions}\n {status !== 'SUCCESS' && statusMessage}\n {ProductsTable && orderLines && orderLines.length > 0 && (\n \n \n {ProductsTableHeading}\n \n {orderLines &&\n orderLines.map(product => {\n return _renderItem(product, productQuantityText, ProductsTableRow);\n })}\n \n \n {pagination}\n \n )}\n {itemAddedToCartDialog}\n \n Product Details\n \n
    \n
  • {detailedProductView?.productImage}
  • \n
  • \n {productText}:\n {detailedProductView?.productInfo}\n
  • \n
  • \n {productLineCatalogName}:\n {detailedProductView?.productLineCatalog}\n
  • \n
  • \n {productNumberText}:\n {detailedProductView?.productNumber}\n
  • \n
  • \n {productUnitPriceText}:\n {` `}\n {detailedProductView?.productPrice}\n
  • \n
  • \n {productUOMText}:\n {` `}\n {detailedProductView?.productUnitOfMeasure}\n
  • \n
  • \n {productQuantityText}:\n {detailedProductView?.productQuantityView}\n
  • \n {productsStatusMessage &&
  • {productsStatusMessage}
  • }\n
\n
\n \n \n \n \n
\n );\n};\n\nconst _renderItem = (product: IOrderTemplateLineViewProps, quantityLabel: string, ProductsTableRow?: INodeProps): JSX.Element | null => {\n if (!product) {\n return null;\n }\n\n const {\n key,\n selectLine,\n productLineCatalog,\n productImage,\n productPrice,\n productNumber,\n addToBagButton,\n removeButton,\n productInfo,\n productUnitOfMeasure,\n productQuantityView,\n productQuantity,\n popUp,\n isMobile,\n extraActionsPopup,\n isMultipleCatalogFeatureEnabledInHq,\n disabled\n } = product;\n\n const lineVisibility = disabled\n ? {\n pointerEvents: 'none',\n opacity: 0.5\n }\n : {\n pointerEvents: 'auto',\n opacity: 1\n };\n\n const disableElement: React.CSSProperties = lineVisibility as React.CSSProperties;\n\n return (\n \n {selectLine}\n {!isMobile && isMultipleCatalogFeatureEnabledInHq && {productLineCatalog}}\n {productImage}\n {isMobile ? (\n \n
{productNumber}
\n
\n {quantityLabel}:{` `}\n {productQuantity}\n
\n \n ) : (\n {productNumber}\n )}\n {!isMobile && {productInfo}}\n {!isMobile && {productPrice}}\n {!isMobile && {productUnitOfMeasure}}\n {!isMobile && {productQuantityView}}\n {isMobile && {popUp}}\n {!isMobile && !isMultipleCatalogFeatureEnabledInHq && (\n \n {addToBagButton}\n {removeButton}\n \n )}\n {extraActionsPopup}\n
\n );\n};\n\nexport default OrderTemplateLinesView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce, { getCatalogId, getUrlSync, IImageSettings, Image, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n convertProductDimensionTypeToDimensionTypes,\n getFallbackImageUrl,\n getProductUrlSync,\n ObjectExtensions,\n Random,\n StringExtensions,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { RemoveFromComparisonButtonComponent } from '../product-comparison';\nimport { ProductComparisonState } from '../product-comparison-state';\nimport {\n getProductsInPreviewProductComparisonAction,\n GetProductsInPreviewProductComparisonInput,\n IProductComparisonProductData\n} from './actions';\nimport { IProductComparisonPreviewData } from './product-comparison-preview.data';\nimport { IProductComparisonPreviewProps } from './product-comparison-preview.props.autogenerated';\n\n/**\n * Represents product comparison view props for main product info.\n */\nexport interface IProductComparisonPreviewProductMainInfo {\n productData: IProductComparisonProductData;\n productNameLink?: string;\n\n removeFromComparisonButton: React.ReactNode;\n productImage: React.ReactNode;\n productLink: React.ReactNode;\n}\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonPreviewViewProps extends IProductComparisonPreviewProps<{}> {\n moduleProps: IModuleProps;\n collapseButton: INodeProps;\n isMainContentReady: boolean;\n\n hasUserInteractedWithComparison?: boolean;\n isExpanded?: boolean;\n subheaderText?: string;\n productsMainInfo?: IProductComparisonPreviewProductMainInfo[];\n previewGreyPlaceHolders?: React.ReactNode;\n\n productComparisonLink?: string;\n goToComparisonButton?: React.ReactNode;\n clearAllButton?: React.ReactNode;\n\n handleCollapseClick?(): void;\n clearAllProductsFromTheComparison?(): void;\n removeProductFromList?(itemId: string): void;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewState {\n isExpanded?: boolean;\n productsData?: IProductComparisonProductData[];\n greyPlaceHoldersCount?: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewFullProps extends IProductComparisonPreviewProps {}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonPreview extends React.PureComponent {\n public static readonly className = 'ms-product-comparison-preview';\n\n public static readonly containerClassName = `${ProductComparisonPreview.className}__container`;\n\n public static readonly mainContainerClassName = `${ProductComparisonPreview.containerClassName}__main-container`;\n\n public static readonly headerClassName = `${ProductComparisonPreview.mainContainerClassName}__header`;\n\n public static readonly headerLabelClassName = `${ProductComparisonPreview.headerClassName}__label`;\n\n public static readonly tableClassName = `${ProductComparisonPreview.mainContainerClassName}__table`;\n\n public static readonly tableRowClassName = `${ProductComparisonPreview.tableClassName}__product-row`;\n\n public static readonly footerClassName = `${ProductComparisonPreview.mainContainerClassName}__footer`;\n\n public static readonly collapseButtonClassName = `${ProductComparisonPreview.headerClassName}__collapse`;\n\n public static _displayedInstanceId?: string;\n\n private readonly _instanceId: string;\n\n private _hasUserInteractedWithComparison: boolean;\n\n public constructor(props: IProductComparisonPreviewFullProps) {\n super(props);\n\n this.state = {};\n\n this._instanceId = `${ProductComparisonPreview.className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n ProductComparisonPreview._displayedInstanceId = this._instanceId;\n\n this._hasUserInteractedWithComparison = false;\n }\n\n public componentDidMount(): void {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return;\n }\n\n this._loadProducts();\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this._hasUserInteractedWithComparison = true;\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Initialize data downloading.\n this._loadProducts();\n }\n }\n );\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return null;\n }\n\n const viewProps: IProductComparisonPreviewViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: ProductComparisonPreview.className,\n id: this._instanceId\n },\n collapseButton: this._renderCollapseButton(),\n isMainContentReady: false,\n hasUserInteractedWithComparison: this._hasUserInteractedWithComparison\n };\n\n const productData = this._getProdutComparisonDataByCatalogId(this.state.productsData ?? this.props.data.productsData?.result);\n\n if (!ArrayExtensions.hasElements(productData)) {\n return this.props.renderView(viewProps);\n }\n\n viewProps.isMainContentReady = true;\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit)) {\n viewProps.subheaderText = this.props.resources.productComparisonPreviewHeaderTextWithLimit\n .replace('{0}', productData.length.toString())\n .replace('{1}', productsLimit.toString());\n }\n\n viewProps.isExpanded = this.state.isExpanded;\n viewProps.handleCollapseClick = this._handleCollapseClick;\n viewProps.productsMainInfo = this._getProductsMainInfo(productData);\n viewProps.previewGreyPlaceHolders = this._renderGreyPlaceHolders(productData);\n viewProps.productComparisonLink = getUrlSync('product-comparison', this.props.context.actionContext);\n viewProps.clearAllProductsFromTheComparison = this._clearAllProductsFromTheComparison;\n viewProps.removeProductFromList = this._removeProductFromList;\n viewProps.goToComparisonButton = this._renderGoToComparisonButton(viewProps.productComparisonLink);\n viewProps.clearAllButton = this._renderClearAllButton();\n\n return this.props.renderView(viewProps);\n }\n private _getProdutComparisonDataByCatalogId(productData: IProductComparisonProductData[] | undefined): IProductComparisonProductData[] {\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n const productByCatalogId = productData?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n private async _loadProducts(): Promise {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const input = new GetProductsInPreviewProductComparisonInput(items);\n const productData = await getProductsInPreviewProductComparisonAction(input, this.props.context.actionContext);\n const productDataByCatalogId = this._getProdutComparisonDataByCatalogId(productData);\n this.setState({ productsData: productDataByCatalogId });\n this._getGreyPlaceHoldersCount(productDataByCatalogId);\n }\n\n private _getGreyPlaceHoldersCount(productData: IProductComparisonProductData[]): number | undefined {\n if (productData && ArrayExtensions.hasElements(productData)) {\n const limit = this._getProductsLimit();\n if (limit && this.props.context.app.config.displayGreyPlaceHolders) {\n const placeHolder = limit - productData.length;\n this.setState({ greyPlaceHoldersCount: placeHolder });\n return placeHolder;\n }\n }\n return;\n }\n\n private _getProductsMainInfo(products: IProductComparisonProductData[]): IProductComparisonPreviewProductMainInfo[] {\n const productImageContainerClassName = `${ProductComparisonPreview.tableRowClassName}__product-image-container`;\n const productImageClassName = `${productImageContainerClassName}__product-image`;\n const productNameClassName = `${ProductComparisonPreview.tableRowClassName}__product-name`;\n\n return products.map(productData => {\n const product = productData.product;\n\n let productNameLink: string | undefined;\n if (msdyn365Commerce.isBrowser) {\n const productUrl = getProductUrlSync(product, this.props.context.actionContext);\n const fullUrl = new URL(productUrl, window.location.href);\n if (isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n fullUrl.searchParams.set('catalogid', `${productData.catalogId}`);\n }\n product.Dimensions?.map(dimension => {\n const dimensionValue = dimension.DimensionValue?.Value;\n if (!StringExtensions.isNullOrWhitespace(dimensionValue)) {\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimension.DimensionTypeValue);\n fullUrl.searchParams.set(dimensionName, dimensionValue!);\n }\n });\n productNameLink = fullUrl.href;\n }\n\n return {\n productNameLink,\n productData,\n removeFromComparisonButton: (\n \n ),\n productImage: (\n \n {this._renderProductImage(productImageClassName, productData.product)}\n \n ),\n productLink: (\n \n {productData.product.Name}\n \n )\n };\n });\n }\n\n /**\n * Represents product comparison preview view.\n * @returns Elements.\n */\n private _renderGreyPlaceHolders = (productData: IProductComparisonProductData[]): React.ReactNode[] | undefined => {\n const counts = this.state.greyPlaceHoldersCount;\n if (this.props.context.app.config.displayGreyPlaceHolders && counts! > 0) {\n const elements = [];\n for (let index = 0; index < counts!; index++) {\n elements.push(\n \n
\n \n );\n }\n return elements;\n }\n return;\n };\n\n /**\n * Removes the product from a list.\n * @param itemId - The id of a product to remove.\n */\n private readonly _removeProductFromList = (itemId: string): void => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(itemId);\n this.setState(previousState => {\n return {\n productsData: previousState.productsData?.filter(item => item.itemId !== itemId)\n };\n });\n };\n\n /**\n * Toggle collapsing.\n */\n private readonly _handleCollapseClick: () => void = () => {\n this.setState(previousState => {\n return {\n isExpanded: !(previousState.isExpanded ?? this._hasUserInteractedWithComparison)\n };\n });\n };\n\n /**\n * Removes all products from the comparison.\n */\n private readonly _clearAllProductsFromTheComparison = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).clearAll();\n this.setState({ productsData: [] });\n };\n\n private _getProductsLimit(): number | undefined {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Retrieves product image react node.\n * @param className - Class name to use.\n * @param product - Product info.\n * @returns React node.\n */\n private _renderProductImage(className: string, product?: SimpleProduct): React.ReactNode | undefined {\n if (ObjectExtensions.isNullOrUndefined(product)) {\n return undefined;\n }\n\n const defaultImageSettingQ = 'w=140&h=140&m=6';\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: defaultImageSettingQ, w: 0, h: 0 },\n lg: { q: defaultImageSettingQ, w: 0, h: 0 },\n xl: { q: defaultImageSettingQ, w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n }\n\n private _renderCollapseButton(): INodeProps {\n const shouldBeExpanded = this.state.isExpanded ?? this._hasUserInteractedWithComparison;\n const headerContainerClassName = `${ProductComparisonPreview.mainContainerClassName}__header_button`;\n let collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__expanded`;\n if (!shouldBeExpanded) {\n collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__collapsed`;\n }\n\n return {\n className: classnames(headerContainerClassName, ProductComparisonPreview.collapseButtonClassName, collapseClassName),\n onClick: this._handleCollapseClick,\n role: 'button',\n tabIndex: 0\n };\n }\n\n private _renderGoToComparisonButton(productComparisonLink: string | undefined): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonCompareProductsButtonText}\n \n );\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllProductsButtonText}\n \n );\n }\n}\n\nexport default ProductComparisonPreview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce from '@msdyn365-commerce/core';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IProductComparisonPreviewViewProps, ProductComparisonPreview } from './product-comparison-preview';\n\n/**\n * Represents product comparison preview view.\n * @param props - View props for product comparison preview.\n * @returns Functional component of product comparison preview.\n */\nexport const ProductComparisonPreviewViewFunctionalComponent: React.FC = props => {\n if (!props.isMainContentReady) {\n return null;\n }\n\n const shouldBeExpanded = props.isExpanded ?? props.hasUserInteractedWithComparison;\n\n const containerClassName = classnames(\n ProductComparisonPreview.mainContainerClassName,\n shouldBeExpanded ? '' : `${ProductComparisonPreview.mainContainerClassName}__collapsed`\n );\n\n return (\n \n \n \n \n \n \n \n \n \n {props.resources.productComparisonPreviewHeaderText}\n \n \n {props.subheaderText}\n \n \n \n \n \n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {info.removeFromComparisonButton}\n {info.productImage}\n \n );\n })}\n {props.previewGreyPlaceHolders}\n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {msdyn365Commerce.isBrowser ? info.productLink : undefined}\n \n );\n })}\n \n \n \n \n \n {props.clearAllButton}\n {props.goToComparisonButton}\n \n \n \n \n );\n};\n\nexport default ProductComparisonPreviewViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml, ICoreContext, ITelemetry } from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\n/**\n * Represents resources for the component.\n */\nexport interface IProductSpecificationResources {\n productComparisonProductItemSpecificationTrue: string;\n productComparisonProductItemSpecificationFalse: string;\n}\n\n/**\n * Represent configuration of the component.\n */\nexport interface IProductSpecificationProps {\n telemetry: ITelemetry;\n specification?: AttributeValue;\n context: ICoreContext;\n\n resources: IProductSpecificationResources;\n}\n\n/**\n * Represents the product specification values that comes from the server.\n */\nexport enum SpecificationDataTypeValues {\n none = 0,\n currency = 1,\n dateTime = 2,\n decimal = 3,\n integer = 4,\n text = 5,\n boolean = 6,\n video = 40,\n image = 41\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductSpecification extends React.PureComponent {\n private static _renderCurrencyCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.CurrencyValue)) {\n return null;\n }\n\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n private static _renderDateTimeCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isFunction(product.DateTimeOffsetValue?.toUTCString)) {\n return null;\n }\n\n return {product.DateTimeOffsetValue!.toUTCString()};\n }\n\n private static _renderIntegerCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.IntegerValue)) {\n return null;\n }\n\n return {product.IntegerValue};\n }\n\n private static _renderDecimalCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.FloatValue)) {\n return null;\n }\n\n return {product.FloatValue};\n }\n\n private static _renderTextCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.TextValue)) {\n return null;\n }\n\n // eslint-disable-next-line react/no-danger -- Implementation is a copy.\n return ;\n }\n\n public constructor(props: IProductSpecificationProps) {\n super(props);\n }\n\n public render(): React.ReactNode | null {\n const specification = this.props.specification;\n if (ObjectExtensions.isNullOrUndefined(specification)) {\n return null;\n }\n\n switch (specification.DataTypeValue) {\n case SpecificationDataTypeValues.none:\n // Return span here instead of null so the row still shows\n return ;\n case SpecificationDataTypeValues.currency:\n return ProductSpecification._renderCurrencyCell(specification);\n case SpecificationDataTypeValues.dateTime:\n return ProductSpecification._renderDateTimeCell(specification);\n case SpecificationDataTypeValues.decimal:\n return ProductSpecification._renderDecimalCell(specification);\n case SpecificationDataTypeValues.integer:\n return ProductSpecification._renderIntegerCell(specification);\n case SpecificationDataTypeValues.text:\n return ProductSpecification._renderTextCell(specification);\n case SpecificationDataTypeValues.boolean:\n return this._renderTrueFalseCell(specification);\n case SpecificationDataTypeValues.video:\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case SpecificationDataTypeValues.image:\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${specification.DataTypeValue ?? 'null'} so skipping line`);\n return null;\n }\n }\n\n private _renderTrueFalseCell(product: AttributeValue): React.ReactNode | null {\n if (product.BooleanValue) {\n return {this.props.resources.productComparisonProductItemSpecificationTrue};\n }\n return {this.props.resources.productComparisonProductItemSpecificationFalse};\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React, { useCallback } from 'react';\n\n/**\n * Resources for the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonResources {\n productComparisonRemoveProductFromListAriaLabel: string;\n}\n\n/**\n * The configuration of the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonComponentProps extends IComponentProps {\n className: string;\n itemId: string;\n\n resources: IRemoveFromComparisonButtonResources;\n\n onClickHandler(itemId: string): void;\n}\n\n/**\n * Represents a button which handles adding to product comparison.\n * @param props - Configuration of the component.\n * @returns React functional component.\n */\nconst RemoveFromComparisonButtonFunctionalComponent: React.FC = (\n props: IRemoveFromComparisonButtonComponentProps\n) => {\n const onClick = useCallback(() => {\n props.onClickHandler(props.itemId);\n }, [props]);\n\n const { className } = props;\n\n return \n );\n }\n\n private readonly _goBack = (): void => {\n const backToShoppingUrl = getUrlSync('home', this.props.context.actionContext) || '';\n if (document.referrer === '') {\n window.location.href = backToShoppingUrl;\n } else {\n window.history.back();\n }\n };\n\n /**\n * Retrieves localized text for dimension.\n * @param dimensionId - Dimension id.\n * @returns Localized text.\n */\n private _getDimensionName(dimensionId: number): string | undefined {\n if (dimensionId === ProductDimensionType.Color) {\n return this.props.resources.productComparisonProductItemColorDimension;\n }\n if (dimensionId === ProductDimensionType.Size) {\n return this.props.resources.productComparisonProductItemSizeDimension;\n }\n\n if (dimensionId === ProductDimensionType.Style) {\n return this.props.resources.productComparisonProductItemStyleDimension;\n }\n return undefined;\n }\n\n private getUpdatedDimensionsProps(dimensionId: number, products: IProductComparisonProductMainInfo[]) {\n const dimensionClassName = `${ProductComparison.dimensionsRowClassName}__dimension-${dimensionId}`;\n const dimensionDescription = this._getDimensionName(dimensionId);\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimensionId);\n let dimensionSelectionType = SelectionType.text;\n\n const dimensionsAsSwatchConfiguration: DimensionTypes[] | undefined = this.props.context.app.config.dimensionsAsSwatchType;\n if (\n ArrayExtensions.hasElements(dimensionsAsSwatchConfiguration) &&\n !dimensionsAsSwatchConfiguration?.includes(DimensionTypes.none) &&\n dimensionsAsSwatchConfiguration?.includes(dimensionName)\n ) {\n dimensionSelectionType = SelectionType.swatch;\n }\n\n const productDimensionValues = products.map(productMainInfo => {\n let dimension: IDimensionResult[] = [];\n let textValue: string = '';\n let renderSwatch: JSX.Element | undefined;\n this.props.data.productsData?.result?.map(productsDimension => {\n if (productsDimension.productInfo.RecordId === productMainInfo.product.productInfo.RecordId) {\n dimension = productsDimension.dimensions?.dimensions ?? [];\n }\n return dimension;\n });\n\n if (dimensionSelectionType === SelectionType.swatch) {\n renderSwatch = (\n
\n {dimension.map(dimensionItems => {\n return (\n \n {dimensionItems.result.map(dimensionItem => {\n let currentDimensionId: number | undefined;\n const swatches =\n dimensionItem.map(swatchItem => {\n let isDefaultDimension: boolean = false;\n const selectedDimensions = productMainInfo.product.productInfo.Dimensions?.filter(\n item => item.DimensionTypeValue === swatchItem.DimensionTypeValue\n );\n selectedDimensions?.map(selectedDimension => {\n if (\n selectedDimension.DimensionValue !== undefined &&\n selectedDimension.DimensionValue.DimensionId ===\n swatchItem.DimensionValue?.DimensionId\n ) {\n isDefaultDimension = true;\n }\n return isDefaultDimension;\n });\n\n if (swatchItem.DimensionTypeValue === dimensionId) {\n currentDimensionId = swatchItem.DimensionTypeValue;\n }\n const dimensionType = dimensionName;\n return {\n itemId: `${swatchItem.DimensionValue?.RecordId ?? ''}-${swatchItem.DimensionValue\n ?.Value ?? ''}`,\n value: swatchItem.DimensionValue?.Value ?? '',\n dimensionType,\n colorHexCode: swatchItem.DimensionValue?.ColorHexCode,\n imageUrl: swatchItem.DimensionValue?.ImageUrl,\n isDefault: isDefaultDimension\n };\n }) ?? [];\n if (currentDimensionId && currentDimensionId === dimensionId) {\n return (\n \n );\n }\n return null;\n })}\n
\n );\n })}\n
\n );\n }\n\n if (dimensionSelectionType === SelectionType.text) {\n dimension.map(item => {\n return item.result.map(items => {\n return items.map(dimensionItem => {\n if (dimensionItem.DimensionTypeValue === dimensionId) {\n const productDimensionSeperatorValue =\n textValue !== ''\n ? this.props.resources.productDimensionSeparator\n : this.props.resources.productDimensionSeparator.replace('/', '');\n textValue = textValue + format(productDimensionSeperatorValue, dimensionItem.DimensionValue?.Value ?? '');\n }\n return textValue;\n });\n });\n });\n }\n\n const dimensionProps = {\n RecordId: productMainInfo.product.productInfo.RecordId,\n Value: textValue,\n DimensionId: dimensionId,\n ImageUrl: productMainInfo.product.productInfo.PrimaryImageUrl\n };\n\n return {\n dimensionProps,\n productMainInfo,\n node: (\n
\n {dimensionSelectionType === SelectionType.swatch ? renderSwatch : dimensionProps.Value}\n
\n )\n };\n });\n return {\n dimensionId,\n dimensionName: dimensionDescription,\n dimensionClassName,\n productDimensionValues\n };\n }\n private _getSpecificationProps(specifications: AttributeValue[], products: IProductComparisonProductMainInfo[]) {\n return specifications.map(specification => {\n const specificationClassName = `${ProductComparison.specificationsRowClassName}__specification-${specification.Name!}`;\n\n const specificationValues = products.map(productMainInfo => {\n const productSpecification = productMainInfo.product.specifications?.specificationsList.find(\n productSpecifications => productSpecifications.Name === specification.Name\n );\n\n return {\n productSpecification,\n productMainInfo,\n node: (\n
\n \n
\n )\n };\n });\n\n return {\n specification,\n specificationClassName,\n specificationValues\n };\n });\n }\n\n private _renderHeading(): React.ReactNode {\n return ;\n }\n\n private _renderLoading(): React.ReactNode {\n return
{this.props.resources.productComparisonLoadingText}
;\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllButtonText}\n \n );\n }\n\n /**\n * Retrieves unique dimension ids of product.\n * @param products - Product.\n * @returns Unique dimension ids.\n */\n private getProductsDimensionsIds(products: IProductComparisonItemData[]): number[] {\n const dimensions = products.map(product => product.productInfo.Dimensions);\n const allDimensions: ProductDimension[] = ArrayExtensions.flatten(dimensions);\n\n const dimensionIds = ArrayExtensions.validValues(allDimensions.map(dimension => dimension.DimensionTypeValue));\n const uniqueDimensionIds = ArrayExtensions.unique(dimensionIds);\n\n return uniqueDimensionIds;\n }\n\n private _renderPreviousClicker(): React.ReactNode {\n return (\n \n
\n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { getRichTextHtml, IActionContext, IImageSettings, Image, ITelemetry } from '@msdyn365-commerce/core';\nimport { SearchSuggestion } from '@msdyn365-commerce/retail-proxy';\nimport { getProductPageUrlSync, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISearchData } from '../search.data';\nimport { ISearchProps } from '../search.props.autogenerated';\n\n/**\n * Search product suggest resources.\n */\nexport interface ISearchProductSuggestResources {\n freePriceText: string;\n}\n\nexport interface ISearchProductSuggestProps {\n searchProductSuggestClass: string;\n searchPageURL: string;\n searchQsp: string | undefined;\n hitPrefix: string;\n hitSuffix: string;\n autoSuggestProps: ISearchProps;\n searchText: string;\n suggestions: SearchSuggestion[] | undefined;\n telemetry: ITelemetry;\n moduleType: string;\n moduleId: string;\n telemetryContent?: ITelemetryContent;\n resources?: ISearchProductSuggestResources;\n}\n\nexport interface ISearchProductViewProps {\n title: React.ReactNode;\n items: ISearchProductItemViewProps[];\n}\n\nexport interface ISearchProductItemViewProps {\n text: React.ReactNode;\n thumbnail: React.ReactNode;\n price: React.ReactNode;\n LiProduct: INodeProps;\n AProduct: INodeProps;\n id: string | undefined;\n}\n\nlet payLoad: IPayLoad;\nlet telemetryContent: ITelemetryContent | undefined;\n\n/**\n * ProductSuggestionsComponent.\n * @param props\n */\nexport const ProductSuggestionsComponent = (props: ISearchProductSuggestProps): ISearchProductViewProps | undefined => {\n const {\n suggestions,\n hitSuffix,\n hitPrefix,\n autoSuggestProps: {\n context: { actionContext },\n resources: { productSuggestionHeading }\n },\n moduleType,\n moduleId\n } = props;\n const reactNodes: ISearchProductItemViewProps[] = [];\n telemetryContent = props.telemetryContent;\n payLoad = getPayloadObject('click', props.telemetryContent!, '');\n\n suggestions?.map(item => {\n reactNodes.push(_assembleNode(item, hitPrefix, hitSuffix, actionContext, props, moduleType, moduleId));\n });\n\n const titleNode = _renderTitle(productSuggestionHeading);\n\n return { title: titleNode, items: reactNodes };\n};\n\nconst _renderTitle = (productSuggestionHeading: string) => {\n const productAutoSuggestionHeading = productSuggestionHeading ? productSuggestionHeading : 'Go to products';\n\n return
  • {productAutoSuggestionHeading}
  • ;\n};\n\nconst _assembleNode = (\n item: SearchSuggestion,\n hitPrefix: string,\n hitSuffix: string,\n actionContext: IActionContext,\n props: ISearchProductSuggestProps,\n moduleType: string,\n moduleId: string\n): ISearchProductItemViewProps => {\n const altText =\n item.Value && item.Value.replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n\n const price = item.Value3?.Value?.DecimalValue;\n return {\n text: _getHighlightedText(item.Value ? item.Value : '', hitPrefix, hitSuffix),\n thumbnail: _renderThumbnail(item, altText ? altText : '', props),\n price: !ObjectExtensions.isNullOrUndefined(price) && _renderPrice(price, price, moduleId, moduleType, props),\n LiProduct: _getLiWrapper(),\n AProduct: _getAWrapper(item, hitPrefix, hitSuffix, actionContext, props),\n id: item.Id\n };\n};\n\nconst _getLiWrapper = () => {\n return {\n className: 'msc-autoSuggest__productResults-item',\n tag: 'li' as NodeTag\n };\n};\n\nconst _getAWrapper = (\n item: SearchSuggestion,\n hitPrefix: string,\n hitSuffix: string,\n actionContext: IActionContext,\n props: ISearchProductSuggestProps\n) => {\n const {\n autoSuggestProps: { context }\n } = props;\n const ariaLabel =\n item.Value && item.Value.replace(new RegExp(`[${hitPrefix}]`, 'gi'), '').replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n\n payLoad.contentAction.recid = item.Id;\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\n const productPrice = context.cultureFormatter.formatCurrency(item.Value3!.Value!.DecimalValue!);\n\n return {\n className: 'msc-autoSuggest__productResults-item',\n tag: 'a' as NodeTag,\n 'aria-label': `${ariaLabel!} ${productPrice}`,\n href: _generateLink(item, hitPrefix, hitSuffix, actionContext),\n ...attribute\n };\n};\n\nconst _generateLink = (suggestion: SearchSuggestion, hitPrefix: string, hitSuffix: string, actionContext: IActionContext) => {\n const formattedLink = (suggestion.Value as string)\n .replace(new RegExp(`[${hitPrefix}]`, 'gi'), '')\n .replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n return suggestion.Value && suggestion.Id\n ? getProductPageUrlSync(formattedLink, (suggestion.Id as unknown) as number, actionContext, undefined)\n : '';\n};\n\nconst _getHighlightedText = (suggestion: string, hitPrefix: string, hitSuffix: string): JSX.Element => {\n const formattedText = suggestion\n .replace(new RegExp(`[${hitPrefix}]`, 'gi'), '')\n .replace(new RegExp(`[${hitSuffix}]`, 'gi'), '');\n\n return (\n // eslint-disable-next-line react/no-danger\n \n );\n};\n\nconst _renderPrice = (\n adjustedPrice: number,\n basePrice: number,\n moduleId: string,\n moduleType: string,\n props: ISearchProductSuggestProps\n): JSX.Element | null => {\n const {\n autoSuggestProps: { context }\n } = props;\n\n return (\n \n );\n};\n\nconst _renderThumbnail = (suggestion: SearchSuggestion, altText: string, props: ISearchProductSuggestProps): JSX.Element | null => {\n const {\n autoSuggestProps: {\n context: {\n request: { gridSettings }\n },\n config: { imageSettings }\n }\n } = props;\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n\n if (!suggestion || !suggestion.ImageUrl) {\n props.telemetry.error('Search suggestion content is empty, module wont render.');\n return null;\n }\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=40&h=40&m=6', w: 0, h: 0 },\n lg: { q: 'w=40&h=40&m=6', w: 0, h: 0 },\n xl: { q: 'w=40&h=40&m=6', w: 0, h: 0 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n return (\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Autosuggestions } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { getCatalogId, getUrlSync } from '@msdyn365-commerce/core';\nimport { ProductRefiner, ProductRefinerSource, ProductsDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, ObjectExtensions, Random, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { createSearchStateInput } from '@msdyn365-commerce-modules/search-utilities';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, KeyCodes } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { debounce } from 'lodash';\nimport { Spinner, SpinnerSize } from 'office-ui-fabric-react';\nimport * as React from 'react';\n\nimport getSearchSuggestionsAction, { AutoSuggestInput, SuggestionType } from './actions/get-auto-suggest-suggestions';\nimport {\n CategorySuggestionsComponent,\n FormComponent,\n ISearchCategoryViewProps,\n ISearchKeywordViewProps,\n ISearchProductViewProps,\n KeywordSuggestionsComponent,\n LabelComponent,\n ProductSuggestionsComponent\n} from './components';\nimport { ISearchData } from './search.data';\nimport { ISearchProps, ISuggestionTypeCriterionData, SuggestionTypeCriterionSuggestionType } from './search.props.autogenerated';\n\nexport interface ISearchState {\n isSearchFormExpanded: boolean;\n searchText: string;\n searchKeywordSuggestClass: string;\n searchProductSuggestClass: string;\n searchCategorySuggestClass: string;\n suggestions: Autosuggestions | undefined;\n searchRefiners?: ProductRefiner[] | undefined;\n autoSuggestAriaLabel: string;\n isInitialState: boolean;\n isLoadingAutoSuggest?: boolean;\n}\n\nexport interface ISearchViewProps extends ISearchProps {\n Search: IModuleProps;\n AutoSuggestAriaLabel: INodeProps;\n AutoSuggestAriaLabelText: string;\n searchText: string;\n AutoSuggest: INodeProps;\n KeywordSuggest: INodeProps;\n ProductSuggest: INodeProps;\n CategorySuggest: INodeProps;\n SearchForm: INodeProps;\n FormWrapper: INodeProps;\n UlKeyword: INodeProps;\n UlProduct: INodeProps;\n UlCategory: INodeProps;\n label: React.ReactNode;\n form: React.ReactNode;\n autosuggestKeyword?: ISearchKeywordViewProps;\n autosuggestProduct?: ISearchProductViewProps;\n autosuggestCategory?: ISearchCategoryViewProps;\n callbacks: {\n handleCancelSearchChange(): void;\n handleCancelSearchFocused?(): void;\n };\n isSearchFormExpanded: boolean;\n isLoadingAutoSuggest?: boolean;\n isLoadingNode?: React.ReactNode;\n}\n\n/**\n *\n * Search module.\n * @extends {React.Component, ISearchState>}\n */\nclass Search extends React.Component, ISearchState> {\n private readonly searchTextInput: React.RefObject;\n\n private readonly searchCollapsedLabel: React.RefObject;\n\n private readonly formReference: React.RefObject;\n\n private readonly maxChars: number;\n\n private readonly topResultsCount?: number;\n\n private readonly hitPrefix: string = '{';\n\n private readonly hitSuffix: string = '}';\n\n private readonly waitTime: number = 500;\n\n private readonly autoSuggestResultScreenReaderDiv: React.RefObject;\n\n private readonly autoSuggestResultDiv: React.RefObject;\n\n private readonly searchFormClass: string;\n\n private readonly searchLabelClass: string;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private loadSuggestionsRequestId?: string;\n\n private inputSuggestionType: ISuggestionTypeCriterionData[];\n\n // @ts-expect-error\n private cancellabelDebounce: debounce;\n\n public constructor(props: ISearchProps) {\n super(props);\n this.searchTextInput = React.createRef();\n this.searchCollapsedLabel = React.createRef();\n this.autoSuggestResultScreenReaderDiv = React.createRef();\n this.autoSuggestResultDiv = React.createRef();\n this.formReference = React.createRef();\n this.state = {\n isSearchFormExpanded: false,\n searchText: '',\n searchKeywordSuggestClass: 'ms-search__autoSuggest__keyword',\n searchProductSuggestClass: 'ms-search__autoSuggest__product',\n searchCategorySuggestClass: 'ms-search__autoSuggest__category',\n suggestions: undefined,\n searchRefiners: undefined,\n autoSuggestAriaLabel: '',\n isInitialState: true,\n isLoadingAutoSuggest: false\n };\n this.maxChars =\n (this.props.context &&\n this.props.context.app &&\n this.props.context.app.config &&\n this.props.context.app.config.searchInputMaxLength) ||\n 50;\n\n this.inputSuggestionType = [];\n this.topResultsCount = this.props.config && this.props.config.topResultsCount ? this.props.config.topResultsCount : 5;\n this.searchFormClass = 'ms-search__form';\n this.searchLabelClass = 'ms-search__label';\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n this._initSuggestionTypes();\n }\n\n public async componentDidMount(): Promise {\n document.body && document.body.addEventListener('mousedown', this._focusOutTarget);\n window && window.addEventListener('keyup', this._keyup);\n }\n\n public componentWillUnmount(): void {\n document.body && document.body.removeEventListener('mousedown', this._focusOutTarget, false);\n window && window.removeEventListener('keyup', this._keyup, false);\n }\n\n public componentDidUpdate(): void {\n const {\n config: { hideSearchLabel }\n } = this.props;\n const { isSearchFormExpanded, isInitialState } = this.state;\n\n if (!this.props.context.request.params.isEditor) {\n if (!hideSearchLabel && isSearchFormExpanded) {\n this.searchTextInput && this.searchTextInput.current && this.searchTextInput.current.focus();\n } else if (!isInitialState) {\n this.searchCollapsedLabel && this.searchCollapsedLabel.current && this.searchCollapsedLabel.current.focus();\n }\n }\n }\n\n public shouldComponentUpdate(nextProps: ISearchProps, nextState: ISearchState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n // eslint-disable-next-line complexity -- ignore complexity.\n public render(): JSX.Element {\n const {\n context,\n resources: { searchtext, searchLabelArialLabel, cancelBtnAriaLabel, searchBtnAriaLabel, submitBtnAriaLabel },\n config: { hideSearchLabel, disableSubmitSearch, searchplaceholderText, shouldShowFullCategoryPath, className = '' }\n } = this.props;\n\n const {\n isSearchFormExpanded,\n searchText,\n searchKeywordSuggestClass,\n searchProductSuggestClass,\n searchCategorySuggestClass,\n suggestions,\n searchRefiners,\n isLoadingAutoSuggest\n } = this.state;\n\n const searchQsp = (context && context.app && context.app.config && context.app.config.searchQueryStringParameter) || 'q';\n const searchPageURL = getUrlSync('search', context && context.actionContext) || '';\n const searchURL = this._appendQueryParams(searchPageURL, searchText, searchQsp);\n const searchPlaceholder = searchplaceholderText && searchplaceholderText.length > 0 ? searchplaceholderText : 'Search in Fabrikam';\n\n const keywordSuggestions = suggestions?.AllSearchResults?.filter(\n suggestion => suggestion.SuggestionType === SuggestionType.Keyword || suggestion.SuggestionType === SuggestionType.None\n );\n const productSuggestions = suggestions?.AllSearchResults?.filter(\n suggestion => suggestion.SuggestionType === SuggestionType.Product\n );\n const categoryRefiners = searchRefiners?.find(refiner => {\n return refiner.SourceValue === ProductRefinerSource.Category;\n });\n const categorySuggestions = suggestions?.AllSearchResults?.filter(suggestion => {\n if (suggestion.SuggestionType !== SuggestionType.Category) {\n return false;\n }\n const refiner = categoryRefiners?.Values?.find(item => {\n return `${item.RefinerRecordId ?? 0}` === suggestion.Id;\n });\n\n return !ObjectExtensions.isNullOrUndefined(refiner);\n });\n\n const viewProps: ISearchViewProps = {\n ...(this.props as ISearchProps),\n\n Search: {\n moduleProps: this.props,\n className: `${classnames('ms-search', className)} ${disableSubmitSearch ? 'no-submit' : 'with-submit'}`\n },\n AutoSuggestAriaLabel: {\n tag: 'div',\n className: 'msc-autoSuggest__screen-reader',\n 'aria-live': 'assertive',\n ref: this.autoSuggestResultScreenReaderDiv\n },\n AutoSuggestAriaLabelText: this.state.autoSuggestAriaLabel,\n searchText: this.state.searchText,\n AutoSuggest: {\n ref: this.autoSuggestResultDiv,\n className: 'ms-search__autoSuggest'\n },\n KeywordSuggest: {\n className: searchKeywordSuggestClass\n },\n ProductSuggest: {\n className: searchProductSuggestClass\n },\n CategorySuggest: {\n className: searchCategorySuggestClass\n },\n SearchForm: {\n className: `${this.searchFormClass} ${isSearchFormExpanded ? 'bx-show' : 'bx-hide'}`\n },\n FormWrapper: {\n tag: 'form',\n ref: this.formReference,\n className: 'ms-search__searchForm',\n 'aria-label': 'Search',\n name: 'searchForm',\n role: 'search',\n action: searchURL,\n autoComplete: 'off',\n onSubmit: this._handleSubmit\n },\n UlKeyword: {\n tag: 'ul',\n className: classnames('msc-autoSuggest__keywordResults-items', className)\n },\n UlProduct: {\n tag: 'ul',\n className: classnames('msc-autoSuggest__productResults-items', className)\n },\n UlCategory: {\n tag: 'ul',\n className: classnames('msc-autoSuggest__categoryResults-items', className)\n },\n label: LabelComponent({\n isSearchFormExpanded,\n searchLabelClass: `${this.searchLabelClass} ${isSearchFormExpanded ? 'bx-hide' : 'bx-show'}`,\n searchtext,\n searchLabelArialLabel,\n searchCollapsedLabel: this.searchCollapsedLabel,\n hideSearchLabel,\n handleCancelSearchChange: this._handleCancelSearchChange,\n telemetryContent: this.telemetryContent\n }),\n form: FormComponent({\n ariaLabelCancel: cancelBtnAriaLabel,\n ariaLabelSearch: searchBtnAriaLabel,\n ariaLabelSubmit: submitBtnAriaLabel,\n hideSearchLabel,\n searchTextInput: this.searchTextInput,\n disableSubmitSearch,\n handleInputChange: this._handleInputChange,\n handleCancelSearchChange: this._handleCancelSearchChange,\n maxChars: this.maxChars,\n searchQsp,\n searchPlaceholder,\n query: searchText\n }),\n autosuggestKeyword:\n searchText &&\n searchText.length > 0 &&\n (isLoadingAutoSuggest || (keywordSuggestions && ArrayExtensions.hasElements(keywordSuggestions)))\n ? KeywordSuggestionsComponent({\n searchKeywordSuggestClass,\n searchPageURL,\n searchQsp,\n hitPrefix: this.hitPrefix,\n hitSuffix: this.hitSuffix,\n autoSuggestProps: this.props,\n searchText,\n suggestions: keywordSuggestions,\n telemetryContent: this.telemetryContent\n })\n : undefined,\n autosuggestProduct:\n searchText &&\n searchText.length > 0 &&\n (isLoadingAutoSuggest || (productSuggestions && ArrayExtensions.hasElements(productSuggestions)))\n ? ProductSuggestionsComponent({\n searchProductSuggestClass,\n searchPageURL,\n searchQsp,\n hitPrefix: this.hitPrefix,\n hitSuffix: this.hitSuffix,\n autoSuggestProps: this.props,\n searchText,\n suggestions: productSuggestions,\n telemetry: this.props.telemetry,\n moduleType: this.props.typeName,\n moduleId: this.props.id,\n telemetryContent: this.telemetryContent,\n resources: this.props.resources\n })\n : undefined,\n autosuggestCategory:\n searchText &&\n searchText.length > 0 &&\n (isLoadingAutoSuggest || (categorySuggestions && ArrayExtensions.hasElements(categorySuggestions)))\n ? CategorySuggestionsComponent({\n searchCategorySuggestClass,\n searchPageURL,\n searchQsp,\n hitPrefix: this.hitPrefix,\n hitSuffix: this.hitSuffix,\n autoSuggestProps: this.props,\n searchText,\n suggestions: categorySuggestions,\n searchRefiners,\n telemetryContent: this.telemetryContent,\n shouldShowFullPath: shouldShowFullCategoryPath\n })\n : undefined,\n callbacks: {\n handleCancelSearchChange: this._handleCancelSearchChange,\n handleCancelSearchFocused: this._handleCancelSearchFocused\n },\n isSearchFormExpanded: this.state.isSearchFormExpanded,\n isLoadingAutoSuggest,\n isLoadingNode: this._isLoadingNode()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _initSuggestionTypes() {\n const suggestionTypes = this.props.config.suggestionTypeCriterion;\n\n const suggestions = ArrayExtensions.unique(ArrayExtensions.validValues(suggestionTypes));\n if (!ArrayExtensions.hasElements(suggestions)) {\n this.inputSuggestionType = [\n { SuggestionType: SuggestionTypeCriterionSuggestionType.keyword },\n { SuggestionType: SuggestionTypeCriterionSuggestionType.product },\n { SuggestionType: SuggestionTypeCriterionSuggestionType.scopedCategory }\n ];\n return;\n }\n\n const validSuggestions = suggestions.filter(suggestion => suggestion.SuggestionType);\n if (ArrayExtensions.hasElements(validSuggestions)) {\n this.inputSuggestionType = validSuggestions;\n return;\n }\n\n this.inputSuggestionType = [];\n }\n\n /**\n * Function to create the ReactNode for loading Autosuggest result.\n * @returns ReachNode for loading Autosuggest result.\n */\n private readonly _isLoadingNode = (): React.ReactNode => {\n const loadingText = this.props.resources.autoSuggestResultLoadingMessage;\n return ;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _focusOutTarget = (e: any): void => {\n const { suggestions } = this.state;\n\n if (suggestions && suggestions.AllSearchResults && e.target.closest('.ms-search') === null) {\n this._clearAutoSuggestState();\n }\n };\n\n private readonly _keyup = (e: KeyboardEvent): void => {\n const { suggestions } = this.state;\n\n if (suggestions && suggestions.AllSearchResults && e.keyCode === KeyCodes.Escape) {\n this._clearAutoSuggestState();\n } else if (this.state.isSearchFormExpanded && e.keyCode === KeyCodes.Escape) {\n if (this.state.isSearchFormExpanded) {\n this.setState({ isSearchFormExpanded: false });\n }\n }\n\n if (\n !(\n (this.formReference.current && this.formReference.current.contains((e.target as unknown) as Node)) ||\n (this.autoSuggestResultDiv.current && this.autoSuggestResultDiv.current.contains((e.target as unknown) as Node))\n )\n ) {\n if (suggestions && suggestions.AllSearchResults) {\n this._clearAutoSuggestState();\n }\n\n if (this.state.isSearchFormExpanded) {\n this.setState({ isSearchFormExpanded: false });\n }\n }\n };\n\n private readonly _clearAutoSuggestState = (): void => {\n const {\n context: { actionContext },\n data: { searchState }\n } = this.props;\n\n if (this.searchTextInput.current && this.searchTextInput.current.value.length > 0) {\n searchState.searchText = '';\n searchState.defaultBasicSearchUrl = '';\n searchState.searchQueryStringParameter = '';\n actionContext ? actionContext.update(createSearchStateInput(searchState), searchState) : null;\n this.searchTextInput.current.value = '';\n }\n\n this.setState({ searchText: '', suggestions: undefined, searchRefiners: undefined });\n };\n\n private async _getSearchSuggestions(loadSuggestionsRequestId: string, query: string) {\n try {\n const searchSuggestions = await getSearchSuggestionsAction(\n new AutoSuggestInput(query, this.topResultsCount, this._getSuggestionType(), this.hitPrefix, this.hitSuffix),\n this.props.context.actionContext\n );\n if (loadSuggestionsRequestId !== this.loadSuggestionsRequestId) {\n return undefined;\n }\n return searchSuggestions;\n } catch (error) {\n if (loadSuggestionsRequestId !== this.loadSuggestionsRequestId) {\n return undefined;\n }\n this.setState({ suggestions: undefined, searchRefiners: undefined, autoSuggestAriaLabel: this._setAutoSuggestResultCount() });\n this.props.telemetry.exception(error);\n this.props.telemetry.debug('Unable to get auto suggest results');\n return undefined;\n }\n }\n\n private async _updateSearchRefiners(loadSuggestionsRequestId: string, query: string, suggestions: Autosuggestions | undefined) {\n try {\n const refiners = await this._getSearchRefiners(query);\n if (loadSuggestionsRequestId !== this.loadSuggestionsRequestId) {\n return;\n }\n this.setState({\n suggestions,\n searchRefiners: refiners,\n autoSuggestAriaLabel: this._setAutoSuggestResultCount(suggestions),\n isLoadingAutoSuggest: false\n });\n } catch (error) {\n if (loadSuggestionsRequestId !== this.loadSuggestionsRequestId) {\n return;\n }\n this.setState({ suggestions, searchRefiners: undefined, autoSuggestAriaLabel: this._setAutoSuggestResultCount(suggestions) });\n this.props.telemetry.exception(error);\n this.props.telemetry.debug('Unable to get refiners results');\n }\n }\n\n private _loadSuggestions(query: string) {\n this.cancellabelDebounce = debounce(async () => {\n this.setState({ isLoadingAutoSuggest: true });\n const loadSuggestionsRequestId = Random.Guid.generateGuid();\n this.loadSuggestionsRequestId = loadSuggestionsRequestId;\n const searchSuggestions = await this._getSearchSuggestions(loadSuggestionsRequestId, query);\n await this._updateSearchRefiners(loadSuggestionsRequestId, query, searchSuggestions);\n }, this.waitTime);\n\n setTimeout(() => {\n this.cancellabelDebounce();\n }, 0);\n }\n\n private readonly _handleInputChange = (query: string): void => {\n if (!query || query.length <= this.maxChars) {\n this.setState({ searchText: query });\n }\n\n if (this.cancellabelDebounce) {\n this.cancellabelDebounce.cancel();\n }\n\n const {\n context,\n data: { searchState }\n } = this.props;\n\n if (context) {\n if (query && query.length > 0) {\n if (query.length > this.maxChars) {\n return;\n }\n\n if (ArrayExtensions.hasElements(this.inputSuggestionType)) {\n this._loadSuggestions(query);\n }\n\n searchState.searchText = query;\n } else {\n this.setState({ suggestions: undefined, searchRefiners: undefined });\n searchState.searchText = '';\n }\n context.actionContext.update(createSearchStateInput(searchState), searchState);\n }\n };\n\n private _getSuggestionType(): string {\n const distinctSuggestionTypes: string[] = this.inputSuggestionType.map(\n suggestionTypeItem => suggestionTypeItem.SuggestionType!.charAt(0).toUpperCase() + suggestionTypeItem.SuggestionType!.slice(1)\n );\n return distinctSuggestionTypes.join(',');\n }\n\n private async _getSearchRefiners(searchText: string): Promise {\n const { actionContext: ctx } = this.props.context;\n const catalogId = getCatalogId(ctx.requestContext);\n validateCatalogId(catalogId);\n return ProductsDataActions.getProductSearchRefinersAsync(\n { callerContext: ctx },\n {\n SearchCondition: searchText,\n Context: {\n ChannelId: +ctx.requestContext.apiSettings.channelId,\n CatalogId: catalogId\n }\n }\n );\n }\n\n private readonly _handleSubmit = (\n e: React.MouseEvent | React.KeyboardEvent | React.FormEvent\n ): void => {\n const {\n config: { disableSubmitSearch },\n context: {\n actionContext,\n app: {\n config: { searchQueryStringParameter }\n }\n }\n } = this.props;\n\n const query = this.searchTextInput.current && this.searchTextInput.current.value;\n e.preventDefault();\n\n if (!query || (query && query.length === 0) || disableSubmitSearch) {\n this.searchTextInput && this.searchTextInput.current && this.searchTextInput.current.focus();\n } else {\n const searchQsp = searchQueryStringParameter || 'q';\n const searchURL = this._appendQueryParams(getUrlSync('search', actionContext) || '', query, searchQsp);\n document.location.href = searchURL;\n }\n };\n\n private readonly _handleCancelSearchChange = (): void => {\n const { isSearchFormExpanded, suggestions } = this.state;\n\n if (!isSearchFormExpanded) {\n this.setState({\n isSearchFormExpanded: true,\n searchText: '',\n isInitialState: false\n });\n } else {\n if (suggestions && suggestions.AllSearchResults) {\n this._clearAutoSuggestState();\n }\n this.setState({ isSearchFormExpanded: false });\n }\n };\n\n private readonly _handleCancelSearchFocused = (): void => {\n const { suggestions } = this.state;\n if (!(suggestions && suggestions.AllSearchResults)) {\n this._clearAutoSuggestState();\n this.setState({ isSearchFormExpanded: false });\n }\n };\n\n private readonly _appendQueryParams = (route: string, query: string, qsp: string): string => {\n if (!MsDyn365.isBrowser) {\n return '';\n }\n\n const queryUrl = new URL(route, window.location.href);\n if (qsp && query) {\n queryUrl.searchParams.set(qsp, query);\n }\n\n return queryUrl.href;\n };\n\n private readonly _setAutoSuggestResultCount = (result?: Autosuggestions) => {\n if (this.autoSuggestResultScreenReaderDiv.current !== null) {\n const ariaLiveRegion = this.autoSuggestResultScreenReaderDiv.current;\n const suggestResultString = this.props.resources.autoSuggestFoundMessage;\n const emptyResultString = this.props.resources.noAutoSuggestionMessage;\n ariaLiveRegion.innerText =\n result && result.AllSearchResults && result.AllSearchResults.length > 0 ? suggestResultString : emptyResultString;\n ariaLiveRegion.setAttribute('aria-live', 'assertive');\n return ariaLiveRegion.innerText;\n }\n return '';\n };\n}\n\nexport default Search;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISearchCategoryViewProps, ISearchFormViewProps, ISearchKeywordViewProps, ISearchProductViewProps } from './components';\nimport { ISearchViewProps } from './search';\n\nconst SearchView: React.FC = props => {\n const {\n Search,\n AutoSuggestAriaLabel,\n AutoSuggestAriaLabelText,\n searchText,\n AutoSuggest,\n KeywordSuggest,\n ProductSuggest,\n CategorySuggest,\n UlKeyword,\n UlProduct,\n UlCategory,\n form,\n autosuggestCategory,\n autosuggestKeyword,\n autosuggestProduct,\n SearchForm,\n FormWrapper,\n label,\n isLoadingAutoSuggest,\n isLoadingNode\n } = props;\n\n return (\n \n {label}\n {_renderForm(form as ISearchFormViewProps, SearchForm, FormWrapper)}\n \n {searchText && searchText.length > 0 ? {AutoSuggestAriaLabelText} : ''}\n {_renderKeywordSuggestions(KeywordSuggest, UlKeyword, autosuggestKeyword, isLoadingAutoSuggest, isLoadingNode)}\n {_renderProductSuggestions(ProductSuggest, UlProduct, autosuggestProduct, isLoadingAutoSuggest, isLoadingNode)}\n {_renderCategorySuggestions(CategorySuggest, UlCategory, autosuggestCategory, isLoadingAutoSuggest, isLoadingNode)}\n \n \n );\n};\n\nconst _renderForm = (form: ISearchFormViewProps, SearchForm: INodeProps, FormWrapper: INodeProps) => {\n return (\n \n \n {form.input}\n {form.cancelBtn}\n {form.submitBtn}\n \n \n );\n};\n\nconst _renderKeywordSuggestions = (\n KeywordSuggest: INodeProps,\n UlKeyword: INodeProps,\n keywordSuggestions?: ISearchKeywordViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n) => {\n return (\n keywordSuggestions && (\n \n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n keywordSuggestions.text.map(text => {\n return text;\n })}\n \n \n )\n );\n};\n\nconst _renderProductSuggestions = (\n ProductSuggest: INodeProps,\n UlProduct: INodeProps,\n productSuggestions?: ISearchProductViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n) => {\n return (\n productSuggestions && (\n \n \n {productSuggestions.title}\n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n productSuggestions.items.map((item, index) => {\n return (\n \n \n {item.thumbnail}\n {item.text}\n {item.price}\n \n \n );\n })}\n \n \n )\n );\n};\n\nconst _renderCategorySuggestions = (\n CategorySuggest: INodeProps,\n UlCategory: INodeProps,\n categorySuggestions?: ISearchCategoryViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n) => {\n return (\n categorySuggestions && (\n \n \n {categorySuggestions.title}\n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n categorySuggestions.text.map(text => {\n return text;\n })}\n \n \n )\n );\n};\n\nexport default SearchView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLinePriceEditor, ICartLinePriceEditorResources, PriceComponent } from '@msdyn365-commerce/components';\nimport MsDyn365, {\n IComponentProps,\n IGridSettings,\n IImageSettings,\n Image,\n isChannelTypeB2B,\n msdyn365Commerce\n} from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n DiscountLine,\n DiscountLineType,\n ProductCatalog,\n ProductDimensionType,\n SalesLine,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions, getFallbackImageUrl, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, IncrementalQuantity, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classNames from 'classnames';\nimport * as React from 'react';\n\n/**\n * ICartlineResourceString: Interface for specifying the\n * resource strings that the component needs.\n */\nexport interface ICartlineResourceString {\n /**\n * Display string for discount label.\n */\n discountStringText: string;\n\n /**\n * String for size key.\n */\n sizeString: string;\n\n /**\n * String for color key.\n */\n colorString: string;\n\n /**\n * String associated with the configuration product dimension.\n */\n configString: string;\n\n /**\n * String for style key.\n */\n styleString: string;\n\n /**\n * String for amount key.\n */\n amountString?: string;\n\n /**\n * Display string for quantity label.\n */\n quantityDisplayString: string;\n\n /**\n * Display string for quantity label.\n */\n inputQuantityAriaLabel: string;\n\n /**\n * Aria label for the decrement button in quantity component.\n */\n decrementButtonAriaLabel: string;\n\n /**\n * Aria label for the increment button in quantity component.\n */\n incrementButtonAriaLabel: string;\n\n /**\n * Original text screenreader.\n */\n originalPriceText: string;\n\n /**\n * Current text screenreader.\n */\n currentPriceText: string;\n\n /**\n * Shipping Charges Text.\n */\n shippingChargesText: string;\n\n /**\n * Price Editor Charges Text.\n */\n priceEditorResources?: ICartLinePriceEditorResources;\n\n /**\n * Sales agreement price prompt text.\n */\n salesAgreementPricePrompt?: string;\n\n /**\n * Shipping text.\n */\n shippingText?: string;\n\n /**\n * Confirmed Ship Date Label.\n */\n confirmedShipDateLabel?: string;\n\n /**\n * Request Delivery Date Label.\n */\n requestDeliveryDateLabel?: string;\n}\n\n/**\n * Represents cart line data interface.\n */\ninterface ICartLineData {\n cartLine: CartLine | SalesLine;\n cartState?: ICartState;\n product?: SimpleProduct;\n catalogs?: ProductCatalog[];\n}\n\n/**\n * ICartLineProps: The props required to render cartLineitem.\n */\nexport interface ICartLineProps extends IComponentProps {\n /**\n * The flag to change the quantity component from interactible to static.\n */\n disableQuantityInteractivity?: boolean;\n\n /**\n * The primary image url.\n */\n primaryImageUrl?: string;\n\n /**\n * The product url.\n */\n productUrl?: string;\n\n /**\n * GridSettings for the product image in cartLine.\n */\n gridSettings: IGridSettings;\n\n /**\n * ImageSettings for the product image in cartLine.\n */\n imageSettings: IImageSettings;\n\n /**\n * Boolean flag to indicate if the item is out of stock.\n */\n isOutOfStock?: boolean;\n\n /**\n * Flag to make quantity section editable.\n */\n isQuantityEditable?: boolean;\n\n /**\n * Max quantity for line item.\n */\n maxQuantity?: number;\n\n /**\n * Current quantity for line item.\n */\n currentQuantity?: number;\n\n /**\n * Resource string for the component.\n */\n resources: ICartlineResourceString;\n\n /**\n * SalesLine flag.\n */\n isSalesLine?: boolean;\n\n /**\n * Error message to show in place of quantity.\n */\n errorMessage?: string;\n\n /**\n * Inventory information label.\n */\n inventoryInformationLabel?: string;\n\n /**\n * Inventory information class name.\n */\n inventoryLabelClassName?: string;\n\n /**\n * Flag to show/hide shipping charges for line items.\n */\n showShippingChargesForLineItems?: boolean;\n\n /**\n * Boolean flag to indicate if cart state status is ready.\n */\n isCartStateReady?: boolean;\n\n /**\n * Chanel Delivery Option configuration is from api.\n */\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n\n /**\n * The cart line delivery location.\n */\n deliveryLocation?: string;\n\n /**\n * Quantity onChange callback.\n */\n quantityOnChange?(cartLine: CartLine, newQuantity: number): boolean;\n priceCurrency?: string;\n\n /**\n * Sales line confirmed ship date.\n */\n confirmedShipDate?: string;\n\n /**\n * Sales line request delivery date.\n */\n requestDeliveryDate?: string;\n}\n\n/**\n * Represents dimensions strings.\n */\ninterface IDimensionStrings {\n /**\n * String for size key.\n */\n sizeString: string;\n\n /**\n * String for color key.\n */\n colorString: string;\n\n /**\n * String associated with the configuration product dimension.\n */\n configString: string;\n\n /**\n * String for style key.\n */\n styleString: string;\n\n /**\n * String for amount key.\n */\n amountString?: string;\n}\n\n/**\n * Renders catalog label for the cart line.\n * @param props - Cart line props.\n * @returns Catalog label.\n */\nconst CatalogLabelComponent: React.FC = (props: ICartLineProps) => {\n const catalogId = props.data.cartLine.CatalogId;\n validateCatalogId(catalogId);\n\n if (!isChannelTypeB2B(props.context.actionContext.requestContext) || !catalogId || !ArrayExtensions.hasElements(props.data.catalogs)) {\n return null;\n }\n\n const catalog = props.data.catalogs.find(item => item.RecordId === catalogId);\n\n if (!catalog || !catalog.Name) {\n return null;\n }\n\n return
    {catalog.Name}
    ;\n};\n\nconst cartLineItemFunctions = {\n /**\n * Render product dimensions.\n * @param product - Product data.\n * @param dimensionStrings - Dimension strings interface.\n * @returns JSX Element.\n */\n renderProductDimensions: (product: SimpleProduct, dimensionStrings: IDimensionStrings) => {\n if (!product.Dimensions) {\n return [];\n }\n\n return product.Dimensions.map(productDimension => {\n if (productDimension.DimensionTypeValue === ProductDimensionType.Color) {\n return (\n
    \n \n {dimensionStrings.colorString}\n {': '}\n {productDimension.DimensionValue?.Value}\n \n
    \n );\n }\n\n if (productDimension.DimensionTypeValue === ProductDimensionType.Configuration) {\n return (\n
    \n \n {dimensionStrings.configString}\n {': '}\n {productDimension.DimensionValue?.Value}\n \n
    \n );\n }\n\n if (productDimension.DimensionTypeValue === ProductDimensionType.Size) {\n return (\n
    \n \n {dimensionStrings.sizeString}\n {': '}\n {productDimension.DimensionValue?.Value}\n \n
    \n );\n }\n\n if (productDimension.DimensionTypeValue === ProductDimensionType.Style) {\n return (\n
    \n \n {product.IsGiftCard ? dimensionStrings.amountString : dimensionStrings.styleString}\n {': '}\n {productDimension.DimensionValue?.Value}\n \n
    \n );\n }\n return null;\n });\n },\n\n /**\n * Gets the react node for product unit of price display.\n * @param props - The cart line props.\n * @returns The node representing markup for unit of measure component.\n */\n renderProductUnitPrice: (props: ICartLineProps) => {\n if (!props.data.cartLine.Price) {\n return null;\n }\n const zeroQuantity: number = 0;\n return (\n
    \n \n zeroQuantity\n ? {\n price: {\n CustomerContextualPrice: props.data.cartLine.Price\n }\n }\n : {\n price: {\n CustomerContextualPrice: props.data.cartLine.Price\n }\n }\n }\n context={props.context}\n id={props.id}\n typeName={props.typeName}\n currencyCode={props.priceCurrency}\n />\n \n
    \n );\n },\n\n /**\n * Render discount lines.\n * @param props - The cart line props.\n * @returns JSX element.\n */\n renderDiscountLines: (props: ICartLineProps) => {\n if (!props.data.cartLine.DiscountLines || !ArrayExtensions.hasElements(props.data.cartLine.DiscountLines)) {\n return null;\n }\n\n /**\n * Get the updated discount percentage.\n * @param discountLine - The discount line.\n * @param cartLine - The cart line.\n * @returns The updated discount percentage.\n */\n const discountPercent = (discountLine: DiscountLine, cartLine: CartLine): number => {\n const numberZero = 0;\n const decimalPrecision = 2;\n const fullPercentage = 100;\n let updatedPercent: number = discountLine.Percentage ?? numberZero;\n\n if (\n (discountLine.Percentage === numberZero ||\n (discountLine.DiscountLineTypeValue && discountLine.DiscountLineTypeValue === DiscountLineType.TenderTypeDiscount)) &&\n cartLine.Price &&\n cartLine.Price > numberZero &&\n cartLine.Quantity &&\n cartLine.Quantity !== numberZero\n ) {\n const effectiveAmount = discountLine.EffectiveAmount ?? numberZero;\n updatedPercent = Number(\n ((effectiveAmount / (cartLine.Price * cartLine.Quantity)) * fullPercentage).toFixed(decimalPrecision)\n );\n }\n\n return updatedPercent;\n };\n\n return props.data.cartLine.DiscountLines.map((discountLine, index) => {\n return (\n
    \n {discountLine.OfferName ? discountLine.OfferName : ''}\n \n \n \n \n {` (${discountLine.Percentage !== undefined ? discountPercent(discountLine, props.data.cartLine) : ''}%)`}\n \n
    \n );\n });\n },\n\n /**\n * Render inventory label.\n * @param props - The cart line props.\n * @returns JSX element.\n */\n renderInventoryLabel: (props: ICartLineProps) => {\n const inventoryCssName = props.inventoryLabelClassName\n ? `msc-cart-line__product-inventory-label ${props.inventoryLabelClassName}`\n : 'msc-cart-line__product-inventory-label';\n\n return

    {props.inventoryInformationLabel}

    ;\n },\n\n /**\n * Render shipping label.\n * @param props - The cart line props.\n * @returns JSX element.\n */\n renderShippingLabel: (props: ICartLineProps) => {\n const pickupDeliveryModeCode = props.context.request.channel?.PickupDeliveryModeCode;\n const channelDeliveryOptionConfig = props.channelDeliveryOptionConfig;\n const cartline = props.data.cartLine;\n let hasShippingMethod = false;\n if (channelDeliveryOptionConfig !== undefined) {\n hasShippingMethod = !!(\n cartline.DeliveryMode &&\n channelDeliveryOptionConfig.PickupDeliveryModeCodes?.some(deliveryMode => deliveryMode !== cartline.DeliveryMode)\n );\n } else {\n hasShippingMethod = !!(cartline.DeliveryMode && cartline.DeliveryMode !== pickupDeliveryModeCode);\n }\n if (!hasShippingMethod) {\n return undefined;\n }\n\n const shippingChargeLines = (cartline.ChargeLines ?? []).filter(chargeLine => chargeLine.IsShipping);\n\n if (!ArrayExtensions.hasElements(shippingChargeLines)) {\n return undefined;\n }\n\n const defaultCharge: number = 0;\n const freightFee = shippingChargeLines.reduce((chargeTotal, chargeLine) => {\n return chargeTotal + (chargeLine.CalculatedAmount ?? defaultCharge);\n }, defaultCharge);\n\n const priceComponent = (\n \n );\n return (\n <>\n \n {priceComponent}\n \n );\n },\n\n /**\n * Render other charges.\n * @param props - The cart line props.\n * @returns JSX element.\n */\n renderOtherCharges: (props: ICartLineProps) => {\n const cartline = props.data.cartLine;\n const otherCharges = cartline.ChargeLines?.filter(chargeline => !chargeline.IsShipping);\n\n return (\n otherCharges?.map((otherCharge, index) => {\n const itemIndex = index;\n return otherCharge.CalculatedAmount ? (\n
    \n \n \n \n \n
    \n ) : (\n ''\n );\n }) ?? undefined\n );\n },\n\n /**\n * Render the sales agreement prompt.\n * @param props - The ICartLineProps.\n * @returns The JSX.Element.\n */\n renderSalesAgreementPrompt: (props: ICartLineProps): JSX.Element | null => {\n // eslint-disable-next-line @typescript-eslint/no-magic-numbers -- We use 0 to indicate no sales agreement applied on the cart line.\n if (props.data.cartLine.SalesAgreementLineRecordId === 0) {\n return null;\n }\n return
    {props.resources.salesAgreementPricePrompt}
    ;\n },\n\n renderConfirmedShipDate: (props: ICartLineProps) => {\n if (!props.isSalesLine || props.confirmedShipDate === undefined || StringExtensions.isNullOrEmpty(props.confirmedShipDate)) {\n return null;\n }\n return (\n
    \n {props.resources.confirmedShipDateLabel}\n {props.confirmedShipDate}\n
    \n );\n },\n\n renderRequestDeliveryDate: (props: ICartLineProps) => {\n if (!props.isSalesLine || props.requestDeliveryDate === undefined || StringExtensions.isNullOrEmpty(props.requestDeliveryDate)) {\n return null;\n }\n return (\n
    \n {props.resources.requestDeliveryDateLabel}\n {props.requestDeliveryDate}\n
    \n );\n }\n};\n\n/**\n * Render cartline component.\n * @param props - The cart line props.\n * @returns JSX element.\n */\n// eslint-disable-next-line no-redeclare\nconst CartLine: React.FC = (props: ICartLineProps) => {\n const { isSalesLine, productUrl, resources } = props;\n const { product, cartLine } = props.data;\n\n const destructDimensionStrings = {\n sizeString: resources.sizeString,\n colorString: resources.colorString,\n styleString: resources.styleString,\n configString: resources.configString,\n amountString: resources.amountString\n };\n\n const fallbackImageUrl =\n product &&\n getFallbackImageUrl(\n product.ItemId,\n props.context.actionContext.requestContext.apiSettings,\n props.context.request.app?.config?.OmniChannelMedia\n );\n const productDimensions = product && cartLineItemFunctions.renderProductDimensions(product, destructDimensionStrings);\n const renderProductUnitPrice = cartLineItemFunctions.renderProductUnitPrice(props);\n const imageSettings = props.imageSettings;\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n const renderDiscountLines = cartLineItemFunctions.renderDiscountLines(props);\n const renderInventoryLabel = cartLineItemFunctions.renderInventoryLabel(props);\n const renderShippingLabel = cartLineItemFunctions.renderShippingLabel(props);\n const renderOtherCharges = cartLineItemFunctions.renderOtherCharges(props);\n const renderConfirmedShipDate = cartLineItemFunctions.renderConfirmedShipDate(props);\n const renderRequestDeliveryDate = cartLineItemFunctions.renderRequestDeliveryDate(props);\n const renderSalesAgreementPrompt = cartLineItemFunctions.renderSalesAgreementPrompt(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, '', product?.RecordId.toString());\n const productAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n const productName = product?.Name ?? cartLine.Description;\n const imgeClassName = props.data.cartLine.IsInvoiceLine ? 'msc-cart-line__invoice-image' : 'msc-cart-line__product-image';\n const cartLineContentClassName = props.data.cartLine.IsInvoiceLine ? 'msc-cart-line__invoice-content' : 'msc-cart-line__content';\n\n /**\n * Render other charges.\n * @param newValue - The cart line props.\n * @returns Boolean.\n */\n const onChange = (newValue: number): boolean => {\n if (props.quantityOnChange) {\n return props.quantityOnChange(props.data.cartLine, newValue);\n }\n return true;\n };\n\n /**\n * Generate error message.\n * @returns JSX element.\n */\n const generateErrorMessage = (): JSX.Element | null => {\n if (props.errorMessage) {\n return (\n
    \n \n {props.errorMessage}\n
    \n );\n }\n\n return null;\n };\n\n /**\n * Render Saving component.\n * @returns JSX element.\n */\n const renderSaving = (): JSX.Element | null => {\n if (!props.data.cartLine.DiscountAmount) {\n return null;\n }\n const discountAmountZero: number = 0;\n\n if (props.data.cartLine.DiscountAmount > discountAmountZero) {\n return (\n <>\n {`${props.resources.discountStringText || 'Discount'}`}\n \n \n );\n }\n return null;\n };\n\n /**\n * Gets the react node for product unit of measure display.\n * @returns The node representing markup for unit of measure component.\n */\n const renderUnitOfMeasure = () => {\n if (props.data.cartLine.IsInvoiceLine) {\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Do not need type check for appsettings\n if (!props.context.app.config.unitOfMeasureDisplayType || props.context.app.config.unitOfMeasureDisplayType === 'none') {\n return undefined;\n }\n\n if (!product || !product.DefaultUnitOfMeasure) {\n return undefined;\n }\n\n return (\n
    \n {product.DefaultUnitOfMeasure}\n
    \n );\n };\n\n /**\n * Generate quantity and price component.\n * @returns JSX element.\n */\n const generateQuantityAndPrice = (): JSX.Element[] | null => {\n const nodes = [];\n const defaultMaxQuantity: number = 10;\n const singleQuantity: number = 1;\n const unitOfMeasure = renderUnitOfMeasure();\n\n // No quantity selector for invoice line\n if (!props.data.cartLine.IsInvoiceLine) {\n if (props.data.product && props.isQuantityEditable) {\n nodes.push(\n
    \n
    {resources.quantityDisplayString}
    \n\n {generateErrorMessage()}\n\n \n {unitOfMeasure}\n
    \n );\n } else {\n nodes.push(\n \n {unitOfMeasure}\n \n\n {generateErrorMessage()}\n\n {props.data.cartLine.Quantity}\n
    \n );\n }\n }\n\n nodes.push(\n
    \n \n {renderSaving()}\n {props.isOutOfStock ? renderInventoryLabel : null}\n
    \n );\n\n return nodes;\n };\n\n const _renderStoreLocation = (): JSX.Element | null => {\n if (cartLine && cartLine.FulfillmentStoreId) {\n return (\n
    \n {props.deliveryLocation}\n
    \n );\n } else {\n return (\n
    \n {props.deliveryLocation}\n
    \n );\n }\n };\n\n return (\n
    \n {MsDyn365.isBrowser ? (\n \n \n ) : null}\n
    \n
    \n \n {MsDyn365.isBrowser ? (\n \n {productName}\n \n ) : null}\n {ArrayExtensions.hasElements(productDimensions) ? (\n
    {productDimensions}
    \n ) : (\n ''\n )}\n
    \n \n {renderConfirmedShipDate}\n {renderRequestDeliveryDate}\n {renderUnitOfMeasure()}\n
    \n {renderProductUnitPrice}\n {renderInventoryLabel}\n {renderDiscountLines}\n {props.showShippingChargesForLineItems &&
    {renderShippingLabel}
    }\n {renderOtherCharges}\n {renderSalesAgreementPrompt}\n
    \n {generateQuantityAndPrice()}\n {renderSalesAgreementPrompt}\n {props.data.cartLine.IsInvoiceLine && props.data.cartState && props.resources.priceEditorResources && (\n \n )}\n {_renderStoreLocation()}\n
    \n
    \n );\n};\n\n// @ts-expect-error\nexport const CartLineItemComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\n 'CartLineItem',\n {\n component: CartLine,\n ...cartLineItemFunctions\n }\n);\n\nexport default CartLineItemComponent;\n"],"names":["props","React","className","msg","CONTENT","AddLineToTemplate","constructor","super","state","isOpen","query","products","productCatalogs","content","Search","selectedProduct","selectedCatalogId","defaultImageSettings","viewports","xs","q","w","h","lg","xl","lazyload","searchTextInput","addLineButtonRef","_renderSearchForm","resources","searchButtonAriaLabel","searchModalPlaceholderText","selectCatalogTitleText","this","name","role","autoComplete","onSubmit","_onSearchSubmit","ArrayExtensions","hasElements","htmlFor","id","onChange","_onCatalogSelectionChange","_getCatalogNodes","type","autoFocus","placeholder","value","_onInputChange","ref","maxLength","color","event","preventDefault","_get","setState","Loading","_getSearchResults","then","result","length","NotFound","ProductList","catch","error","Error","_onQuantityChangeHandler","selectedQuantity","target","_onSelectItem","async","actionContext","request","apiSettings","channelId","context","varianteInput","SelectedVariantInput","product","RecordId","undefined","productVariant","getSelectedVariant","telemetry","Promise","resolve","dimensions","_getProductDimensions","selectedProductDimensions","ProductConfiguration","_onBackButtonClickHandler","_highlightSearchTerm","parsedName","unescape","replace","RegExp","dangerouslySetInnerHTML","__html","_resultCountText","searchResultsCountVerbage","toString","searchResultsCountSubject","_addItemToTemplateHandler","orderTemplateId","isMultipleCatalogFeatureEnabledInHq","catalogId","input","AddItemToOrderTemplateInput","config","quantity","DefaultUnitOfMeasure","addItemToOrderTemplate","reloadPage","window","location","reload","Number","parseInt","_toggleModalHandler","payLoad","getPayloadObject","telemetryContent","onTelemetryClick","_getCatalogs","current","focus","onComponentDidMount","_this$searchTextInput","componentDidMount","onComponentDidUpdate","_this$searchTextInput2","showBackArrow","shouldComponentUpdate","nextProps","nextState","render","addLineModalLinkText","backToResultsText","modalProps","_objectSpread","toggle","ariaLabel","Modal","Object","assign","ModalHeader","onClick","_renderContent","viewProps","imageSettings","addToTemplateHandler","onQuantityChangeHandler","highlightSearchTerm","searchForm","productProps","clickHandler","renderResultCountText","ModalBody","Spinner","progressNotificationText","notFoundSearchErrorNotice","notFoundSearchErrorRedediation","NotFoundComponent","searchErrorMessage","catalogs","getCatalogId","validateCatalogId","map","productCatalog","isSelected","key","selected","Name","searchText","searchCriteriaInput","Context","ChannelId","CatalogId","IncludeAttributes","SearchCondition","searchByCriteriaAsync","callerContext","MasterProductId","getDimensionsForSelectedVariant","GetDimensionsForSelectedVariantInput","__decorate","computed","Dropdown","selectMenu","_onChanged","selectedIndex","dropdownId","selectId","selectedValue","innerText","dropdownList","dropdownName","item","OrderTemplateQuantity","inputRef","_validateMin","minValue","min","isNaN","currentInput","currentCount","_handleChange","bind","reaction","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","disabled","incDisabled","max","currentValue","extraClass","getChangeHandler","amount","_onIncrementalChange","title","decrementButtonAriaLabel","tabIndex","pattern","onBlur","inputQuantityAriaLabel","incrementButtonAriaLabel","updatedQuantity","e","inputElement","HTMLInputElement","_debounce","setAttribute","defaultProps","observer","selectedDimensions","_getDimensionsError","dimensionName","dimensionMissingError","_addToTemplateHandler","isBusy","showAddConfirmation","errors","add","missingDimensions","dimension","DimensionTypeValue","filter","status","ProductListId","addToTemplateDuplicateError","addToTemplateGenericError","errorMessage","_onQuantityChange","newValue","totalPrice","Price","_updateDimensionValue","productDimensionFull","newValueId","DimensionValues","find","_onDimensionChanged","_this$state$errors","remainingDimensionsErrors","selection","buttonDisabled","mappedDimensions","DimensionValue","ExtensionProperties","variantProduct","dimensionInput","variantDimensions","availabilityInput","ProductAvailabilitiesForSelectedVariantInput","newAvailableQuantity","getProductAvailabilitiesForSelectedVariant","priceInput","PriceForSelectedVariantInput","productPrice","getPriceForSelectedVariant","productAvailableQuantity","unitPrice","BasePrice","sort","a","b","_getDropdownName","dimensionType","productDimensionTypeColor","productDimensionTypeConfiguration","productDimensionTypeSize","productDimensionTypeStyle","_product$Name","_product$PrimaryImage","_getFallbackImageUrl","_this$props$context$r","_product$Name2","requestContext","gridSettings","addItemToTemplateText","addLineProductUnitPricePrefix","quantitySelectLabel","addLineProductUnitOfMeasurePrefix","totalPriceLabel","isMultipleCatalogSelect","Image","altText","src","PrimaryImageUrl","fallBackSrc","getFallbackImageUrl","ItemId","app","OmniChannelMedia","loadFailureBehavior","_formatPrice","_getDimensionsNodes","ModalFooter","_getConfirmationMessage","Button","classnames","selectedDimensionNames","_dimension$DimensionV","variant","Value","addToTemplateConfirmation","values","join","_this$state$errors2","unshift","includes","Alert","assertive","price","cultureFormatter","formatCurrency","currencyCode","toFixed","selectProductButtonText","index","_generateImageUrl","_props$context$reques","primaryImageSource","generateImageUrl","fallBackImg","ProductSelectButton","buttonText","setBusy","useState","getClickHandler","OrderTemplateBulkActions","isAddDisabled","isRemoveDisabled","addHandler","selectedLines","some","line","shouldDisable","onAddSelectionToBag","removeHandler","onRemoveSelection","static","hasDisabledLine","_this$props$data$cata","searchInputAriaLabel","backButtonText","addSelectedToBagButtonText","removeSelectedToBagButtonText","addLineProps","data","isMinifiedView","OrderTemplateLineActions","orderTemplateLine","productListLine","handlers","LineId","onAddToBag","onRemoveItem","getAddToBag","fullProduct","ProductDetails","getRemoveItem","PopUp","addToBagButtonText","removeFromOrderTemplateLinesText","moreButtonText","viewProductDetailsText","showMobile","setShowMobile","toggleDetailsDisplayed","getActionButton","isMobile","removeButtonClassName","addButtonClassName","getDesktopActionButton","onSelectLineHandler","isChecked","onSelect","checked","ExtraActionsPopup","showActions","setShowActions","actionsContainerClassName","onChangeHandler","onChangeQuantity","itemKey","_generateQuantity","isQuantityDisabledForUpdate","_renderProductImage","heading","image","fallbackImage","_context$actionContex","_context$request","renderProductCatalog","user","isB2b","catalog","_renderPrice","moduleId","moduleTypeName","PriceComponent","typeName","freePriceText","originalPriceText","currentPriceText","_renderProductError","renderProductInfo","_orderTemplateLine$fu","productUrl","Dimensions","_renderProductDimensions","productName","href","dimensionsLine","OrderTemplateLines","_isChannelMultipleCatalogsFeatureEnabled","_this$props$data$feat","featureState","feature","IsEnabled","_onRemoveSelection","removeSelectedFailureMessage","removeSelectedSuccessMessage","lines","productSelection","productListLines","productListId","maxWaitTimeInMilliSeconds","removeProductListLinesAsync","userMessage","statusCssString","messageGlyph","setTimeout","warning","_getOrderTemplatePageUrl","_this$props$data$orde","url","getUrlSync","substr","indexOf","orderTemplate","productList","Id","_onAddSelectionToBag","productLine","_productLine$fullProd","_productLine$fullProd2","_productLine$fullProd3","_productLine$fullProd4","_productLine$productL","ProductTypeValue","AdjustedPrice","Quantity","_addItemToBag","_OrderTemplateActionsView","deleteTemplateButtonText","addTemplateToBag","_getOrderTemplateAddToCartDialog","renameTemplate","_getOrderTemplateRenameControl","removeTemplate","_removeOrderActionHandler","actionsSplitButton","ActionsSplitButton","_removeOrderTemplate","onRemoveTemplate","_getCurrentUrl","reqContext","MsDyn365","isBrowser","URL","requestUrl","onCloseHandler","isItemAddedToOrderTemplateOpen","_renderItemAddedToCartDialog","_this$props$data$feat2","itemAddedToCartDialogData","ItemAddedToCartDialog","dialogStrings","_generateItemAddedToCartDialogResources","modalOpen","onClose","_renderPagination","fullUrl","itemsPerPage","skipCount","_getCurrentPageNumber","totalItems","totalLines","previousText","flipperPrevious","nextText","flipperNext","UncontrolledPagination","paginationAriaLabel","qsp","items","startingItem","_renderPrev","_renderNext","previousAriaLabel","nextAriaLabel","_toggleDetailsDisplayed","isDetailsDisplayed","detailedProductView","OrderTemplateMobileLineView","_updateProductUrlCatalog","productDetails","getProductUrlSync","StringExtensions","isNullOrWhitespace","absoluteUrl","searchParams","set","_onDismiss","_changeQuantity","orderTemplateLinesData","orderTemplateLines","orderLineIndex","findIndex","newProductListLine","prevQuantity","_objectWithoutProperties","_excluded","updateProductListLinesAsync","list","newLine","updatedLines","updatedOrderTemplate","ProductListLines","update","ActiveOrderTemplateLinesInput","editOrderTemplateLineQuantityError","cart","maxQuantityLimitText","addedToCartFailureMessage","addProductToCartInput","count","addProductToCart","priceResult","AsyncResult","reject","isMiniCart","addToCartBehavior","substatus","maxQuantityForCartLineItem","_cart$result","_cart$result2","cartLineQuantity","CartLines","ProductId","defaultMessage","_result$errorDetails","errorDetails","LocalizedMessage","debug","message","_removeItemFromOrderTemplateLines","isAuthenticated","token","userToken","featureStates","getFeatureState","createGetFeatureStateInput","_featureStates$find","_renameTemplate","handleAddToCart","_cart$CartLines","chunkCount","queryResultSettings","Paging","Top","Skip","getPaginatedOrderTemplateLinesInput","GetPaginatedOrderTemplateLinesInput","getPaginatedOrderTemplateLinesAction","addedCartLines","cartState","getCartState","cartLine","IsInvoiceLine","uploadStatus","addedLinesCount","skip","cartLines","_productLine$fullProd5","TrackingId","UnitOfMeasureSymbol","UnitOfMeasure","addCartLinesAsync","Version","_error$data","_error$data2","trace","ValidationResults","prevState","concat","refreshCart","setModalOpen","addTemplateToBagButtonText","closeWindowButtonText","addToCartFailureMessage","addToCartSuccessMessage","addToCartProcessMessage","orderTemplateErrorMessage","linesAddedToCartDialogResources","modalText","_getModalText","errorMsg","processStatusClass","toLowerCase","TelemetryConstant","AddOrderTemplateToCart","addOrderTemplateAttribute","getTelemetryAttributes","popupProps","text","renderModalPopup","PopupProducts","linesAddedToCartDialogOpen","LinesAddedToCartDialog","linesCount","closeLinesAddedToCartDialog","_removeTemplate","deleteAsync","_orderTemplate$result","deleteOrderTemplateFailedText","newLink","_getViewport","device","Type","innerWidth","sm","md","paginationPreviousText","paginationNextText","_viewport","_updateViewport","isConfirmAddSelectionToBagModalOpen","getTelemetryObject","telemetryPageName","friendlyName","params","isEditor","signInUrl","addEventListener","componentWillUnmount","removeEventListener","emptyOrderTemplateLinesText","errorGettingOrderTemplateLines","ObjectExtensions","isNullOrUndefined","errorProps","moduleProps","statusMessage","Heading","renderView","OrderTemplateLinesStatusMessage","errorType","orderTemplateResult","_isFirstPage","emptyViewProps","orderActions","_renderOrderTemplateActions","bulkOrderLineActions","_getOrderTemplateLineActions","OrderTemplateActions","tag","productsStatusMessage","ProductsTable","ProductsTableRow","ProductsTableHeading","_renderProductListHeader","orderLines","_renderProductList","callbacks","updateQuantity","debounce","pagination","itemAddedToCartDialog","updated","_product$fullProduct","_line$fullProduct","onSelectAll","productImage","productNumberText","productText","productUnitPriceText","productUOMText","productQuantityText","productActionsText","selectAllRowsText","productLineCatalogName","headers","productNumber","productUnitPrice","productUOM","productQuantity","productActions","OrderTemplateTableHeading","_generateLinesAddedToCartDialogResources","viewCartButtonText","orderTemplateCloseButtonText","linesAddedToCartHeaderItemsOneText","linesAddedToCartHeaderLinesOneText","linesAddedToCartHeaderLinesFormatText","linesAddedToCartHeaderMessageText","itemAddedToCartHeaderItemOneText","itemAddedToCartHeaderItemFormatText","itemAddedToCartHeaderMessageText","renameTemplateButtonText","orderTemplateActions","onRenameTemplate","renameOrderTemplateDialogStrings","_generateOrderTemplateNameDialogResources","orderTemplateHeaderLabel","renameOrderTemplateTitleText","orderTemplateTitleLabel","orderTemplateTitle","orderTemplateNameAriaLabel","orderTemplateDescription","defaultOrderTemplateName","orderTemplateButtonLabel","renameOrderTemplateButtonText","orderTemplateCancelButtonLabel","cancelBtnLabel","selectOneRowText","priceFree","addOrderTemplateItemToBagButtonText","removeItemFromOrderTemplateButtonText","deleteButtonText","unavailableProductErrorMessage","outOfStockProductErrorMessage","_line$fullProduct2","_context$request$app","selectLine","productLineCatalog","productInfo","productUnitOfMeasure","removeButton","productQuantityView","addToBagButton","extraActionsPopup","popUp","OrderTemplateLineView","ProductPrice","observable","action","RenameOrderTemplateComponent","_renderItem","quantityLabel","disableElement","pointerEvents","opacity","Node","style","toggleDetails","Module","wrapClassName","fade","applicationNode","modalCloseButtonReference","onCancelHandler","isCreateOrderTemplateDialogOpen","setOrderTemplateNameDialogOpen","onCreateButtonClick","createOrderTemplateText","OrderTemplateNameDialog","isUpdateDialog","createOrderTemplateDialogResources","onCancel","onSuccess","onOrderTemplateCreated","parentElementRef","PromoCode","_onInputChangeHandler","promoCodeInputValue","canApply","_applyPromotion","appliedPromo","addPromoCode","promoCode","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","applyPromotionHandler","_renderForm","promoPlaceholderText","promoCodeApplyButtonText","attributes","_removePromotion","_event$currentTarget$","code","currentTarget","getAttribute","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","format","removePromoText","Code","ApplyPromoCode","promoCodeHeadingText","_reloadPage","OrderTemplateListViewComponent","OrderTemplateList","OrderTemplates","OrderTemplate","orderTemplates","createOrderTemplateButton","templateHeaderStatusMessage","console","log","CreateNewTemplateButtonComponent","createNewTemplateButtonText","createOrderTemplateHeader","createOrderTemplateDescription","createOrderTemplateButtonText","cancelNewOrderTemplateCreationButtonText","headingForEmptyOrderTemplateList","textForEmptyOrderTemplateList","renderOrderTemplate","orderTemplateNodeProps","addToCartButton","orderTemplateImage","orderTemplateStatusMessage","orderTemplateName","orderTemplateImageElement","currentImageListLength","children","push","COUPON_ATTRIBUTE_KEY","getCouponCodeMap","enteredCode","foundCode","couponMapping","c","_c$fromCouponCode","fromCouponCode","toUpperCase","_foundCode$toCouponCo","mondaysDate","formatDate","getMondayOfCurrentWeek","toCouponCode","tcc","date","_cart","addAttributeToCart","attrKey","attrValue","attributeArray","AttributeValues","attributeObj","TextValue","TextValueTranslations","attrIdx","_a$Name","updateCart","newCartObject","removeAttributeFromCart","_a$Name2","additionalProperties","_calculateDiscount","discountAmount","DiscountLines","discountLine","DiscountCode","DiscountCost","totalCouponDiscountAmount","_coupon$Code","appliedPromoCodeHeadingText","CustomerContextualPrice","isCollapseOpen","getFullYear","String","getMonth","padStart","getDate","today","Date","day","getDay","diff","setDate","PromoCodeComponent","msdyn365Commerce","createComponentOverride","component","addToCartButtonProps","setErrorMessage","setLinesAddedToCartDialogOpen","setUploadStatus","setAddedLinesCount","addToCartText","prevCount","shouldDisplayErrorMessage","renderRating","ratingId","avgRating","totalRatings","_totalRatings$toStrin","numberRatings","ratingAriaLabel","rating","roundedRating","getRatingAriaLabel","RatingComponent","ratingCount","readOnly","ActiveProductComponent","_ref","savingsText","imageUrl","imgData","imageProps","cropFocalRegion","renderProductPlacementImage","productId","basePrice","adjustedPrice","renderPrice","description","Description","hideRating","AverageRating","TotalRatings","assembleNode","_item$links","headingNode","renderHeading","additionalContentHeading","Msdyn365","editProps","onEdit","handleAdditionalTextChange","paragraphNode","subtext","renderParagraph","additionalContentParagraphText","linksNode","links","ctaLink","renderLinks","linkIndex","editableLink","linkText","linkUrl","destinationUrl","openInNewTab","isOpenInNewTab","link","onTextChange","handleAdditionalLinkTextChange","additionalContentNode","additionalContentContainer","additionalContentItemLinks","activeImageAdditionalContent","additionalContent","CanvasCalculations","CanvasStyles","ImageMapper","_isDesktopViewPort","_context","getActiveImageWidth","activeImageReferenceValue","activeImageRefs","clientWidth","getActiveImageHeight","clientHeight","convertHexToRgb","hexColor","exec","rValue","gValue","bValue","applyFadingTransition","coords","rgbColor","alpha","_this$_canvas$current","_this$_canvas$current2","halfDivisor","_canvas","getContext","buttonPadding","paddingAdjustment","buttonWidth","measureText","width","fillStyle","document","body","parentElement","fillText","drawButton","_this$_canvas$current3","_this$_canvas$current4","buttonTextClor","buttonHeight","buttonPositionX","buttonPositionY","arcsize","beginPath","moveTo","lineTo","arcTo","stroke","closePath","fill","expandAnimation","_this$props$imageMapp","imageMapperResources","animationStartWidth","expandAnimationStartWidth","pointPositionX","pointPositionY","animationEndWidth","expandAnimationEndWidth","radius","expandRadius","rotation","startAngle","endAngle","textFadeInValue","textFadeInStartValue","buttonTextClorInRgb","toLocaleLowerCase","animate","_this$_canvas$current5","_this$_canvas$current6","ellipse","requestAnimationFrame","textFadeInterval","collapseAnimation","_this$props$imageMapp2","collapseAnimationStartWidth","collapseAnimationEndWidth","clearMargin","clearHeight","clearWidth","collapseRadius","textFadeOutValue","textFadeOutStartValue","_this$_canvas$current7","_this$_canvas$current8","clearRect","drawCircle","_this$_canvas$current9","_this$_canvas$current10","viewPort","doubleMultiplier","strokeStyle","arc","Math","PI","scaleCoords","imgWidth","defaultWidth","defaultScale","scale","coord","renderPrefilledAreas","areaMap","areas","area","computeCenter","scaledCoords","handleHoverOn","center","handleHoverOff","_this$_canvas$current11","canvasPositionX","defaultPositionX","canvasPositionY","defaultPositionY","height","click","hoverOn","onMouseEnter","hoverOff","onMouseLeave","renderAreas","_this$props$imageMapp3","_this$props$imageMapp4","_area$productSearchRe","xsRadius","extendedArea","areaKey","altTextWithProductName","productSearchResult","shape","onFocus","alt","initCanvas","_this$getActiveImageW","_this$getActiveImageH","_this$_canvas$current12","_backgroundImage","_container","onLoad","defaultHeight","canvasWidth","canvasHeight","componentDidUpdate","shouldRender","_requestContext$gridS","imageData","useMap","ActiveImageConstants","ActiveImage","_defaultProductCardWidth","_defaultProdutCardHight","_activePoints","addActivePoints","areaId","primaryImageUrl","updateClientWidth","viewport","VariantType","Browser","renderImageMapper","_this$props$config$ac","productResults","activePoints","configProduct","itemId","_configProduct$xPosit","_configProduct$yPosit","_configProduct$radius","getProductPageUrlSync","xPosition","yPosition","activePoint","JSON","stringify","mappedArea","_activeImageClass","enterArea","leaveArea","activeImage","_activeImageRefs","altTextForSeeMoreButtonWithProductName","seeMoreButtonText","overlayClass","open","resetState","renderProductComponent","_this$state$area","_this$state$area$prim","_product$ItemId","baseImageUrl","productImageSettings","renderProductCard","_productCardDivRef","renderOverlay","getProductCardPositionX","_this$props$config$pr","_this$props$config$pr2","_defaultImageSettings","_area$center$","_area$center","getDefaultImageSettings","productImageSettingsWidth","productCardWidth","leftAllignPosition","position","getProductCardPositionY","_this$props$config$pr3","_this$props$config$pr4","_defaultImageSettings2","productImageSettingsHeight","produtCardHight","_area$center$2","_area$center2","keyDown","enterKey","nodeName","escKey","handleTextChange","handleParagraphChange","paragraph","renderActiveImageDetailsLinks","_telemetryContent","linkData","contentAction","etext","linkId","willOpenInNewTab","handleLinkTextChange","renderActiveImageDetailsHeading","_heading$tag","renderActiveImageDetailsParagraph","getActiveImageId","activeImageId","_activeImageIdPart$","activeImageSource","split","decrementOne","_handleOutsideClick","_this$_productCardDiv","contains","timeoutInterval","images","getElementsByClassName","Array","from","removeAttribute","activePointContainer","activePointDetailsContainer","imageMapper","overlay","productCard","productCardleftPosition","productCardtopPosition","detailsContainer","detailsContainerCta","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","handleAdditionalLinkText","_this$props$config$ad","activeImageView","top","left","CarouselModule","_handleDismissCarousel","cookies","dismissCarousel","_next","slots","nextIndex","activeIndex","animating","closeNow","_previous","_onExiting","_onExited","_goToIndex","newIndex","get","carouselContainer","closeAnimation","next","previous","onIndicatorsClickHandler","handleDismissCarousel","handleOnExited","handleOnExiting","retrieveItems","renderModuleAttributes","Carousel","pause","pauseOnHover","ride","autoplay","interval","transitionType","hideFlipper","dismissEnabled","dismissCarouselAriaText","ariaLabelForDismissButton","indicatorAriaText","ariaLabelForSlide","directionTextPrev","directionTextNext","keyboard","onRemoveOrderTemplate","removeOrderTemplateActionHandler","OrderTemplateRender","removeFromOrderTemplateListText","orderTemplateState","enableImageProductLink","onDismiss","_renderOrderTemplateImages","orderTemplateAriaLabel","_renderAriaLabel","_getUrlSync","separator","AddOrderTemplateToCartComponent","addToBagText","onClickHandler","slice","_line$productListLine","_line$fullProduct$Pro","_line$fullProduct$Pro2","_line$fullProduct3","_line$fullProduct4","OrderTemplateListStatusMessage","_onRemoveFromOrderTemplateList","p","headerStatusMessage","_heading$text","_heading$tag3","emptyOrderTemplateText","orderTemplatesData","orderTemplateListHeading","orderTemplateListTitle","_heading$tag2","_renderOrderTemplateList","currentTemplateProps","OrderTemplateListView","_renderOrderTemplate","removeOrderActionHandler","OrderTemplateActionsView","buttonEventReference","isStatementRequestAdminDropdownOpen","setIsStatementRequestAdminDropdownOpen","renameOrderTemplateDialogOpen","onToggleDropdown1","popoverReference","existingOrderTemplate","onOrderTemplateNameCancel","_buttonEventReference","requestStatementDropdownString","Random","Guid","generateGuid","innerRef","Popover","placement","_context$request$app2","OOS","UNASSORTED","NONE","componentClassName","getOnChange","checkedLines","scope","currentProductProps","ProductComparisonPreview","_renderGreyPlaceHolders","productData","counts","greyPlaceHoldersCount","displayGreyPlaceHolders","elements","_removeProductFromList","_this$props$data$acco","ProductComparisonState","instance","accountInformation","removeItemById","previousState","_previousState$produc","productsData","_handleCollapseClick","_previousState$isExpa","isExpanded","_hasUserInteractedWithComparison","_clearAllProductsFromTheComparison","_this$props$data$acco2","clearAll","_instanceId","_displayedInstanceId","_this$props$data$acco3","_loadProducts","listModifiedEvent","subscribe","instanceId","handler","_this$props$data$acco4","unsubscribe","_this$state$productsD","_this$props$data$prod","collapseButton","_renderCollapseButton","isMainContentReady","hasUserInteractedWithComparison","_getProdutComparisonDataByCatalogId","productsLimit","_getProductsLimit","subheaderText","productComparisonPreviewHeaderTextWithLimit","handleCollapseClick","productsMainInfo","_getProductsMainInfo","previewGreyPlaceHolders","productComparisonLink","clearAllProductsFromTheComparison","removeProductFromList","goToComparisonButton","_renderGoToComparisonButton","clearAllButton","_renderClearAllButton","_productData$filter","_this$props$data$acco5","GetProductsInPreviewProductComparisonInput","getProductsInPreviewProductComparisonAction","productDataByCatalogId","_getGreyPlaceHoldersCount","limit","placeHolder","productImageContainerClassName","tableRowClassName","productImageClassName","productNameClassName","productNameLink","_product$Dimensions","isChannelTypeB2B","dimensionValue","convertProductDimensionTypeToDimensionTypes","removeFromComparisonButton","RemoveFromComparisonButtonComponent","productLink","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","defaultImageSettingQ","_this$state$isExpande","shouldBeExpanded","headerContainerClassName","mainContainerClassName","collapseClassName","collapseButtonClassName","footerClassName","productComparisonCompareProductsButtonText","productComparisonClearAllProductsButtonText","containerClassName","headerClassName","headerLabelClassName","tableClassName","ProductComparisonPreviewViewFunctionalComponent","_props$isExpanded","_props$productsMainIn","_props$productsMainIn2","productComparisonPreviewHeaderText","info","SpecificationDataTypeValues","ProductSpecification","CurrencyValue","CurrencyCode","_product$DateTimeOffs","isFunction","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","getRichTextHtml","_specification$DataTy","specification","DataTypeValue","none","currency","_renderCurrencyCell","dateTime","_renderDateTimeCell","decimal","_renderDecimalCell","integer","_renderIntegerCell","_renderTextCell","boolean","_renderTrueFalseCell","video","BooleanValue","productComparisonProductItemSpecificationTrue","productComparisonProductItemSpecificationFalse","RemoveFromComparisonButtonFunctionalComponent","useCallback","productComparisonRemoveProductFromListAriaLabel","SelectionType","ProductClickerDirections","ProductComparison","_clearAllProductsFromComparison","_configureBoxShadowOnScroll","_this$_tableReference","_tableReference","comparisonProductCardHeader","tableHeaderClassName","documentElement","scrollTop","classList","tableHeaderLockedClassName","remove","_handleScroll","_this$_tableHeaderRef","_tableHeaderReference","scrollTo","scrollLeft","_checkClickersState","_handleScrollClick","direction","_this$_tableBodyRefer","_this$_tableCellRefer","_document$body$parent","tableBody","_tableBodyReference","newLeftPosition","cellWidth","_tableCellReference","_getCellWidth","scrollPosition","ceil","minLeftPosition","maxScroll","scrollWidth","currentClickerPosition","change","hoverStateLastUpdate","now","hoveringCellItemId","_handlePreviousClick","_document$body$parent2","right","_handleNextClick","_document$body$parent3","_this$_tableBodyRefer2","floor","_this$_tableBodyRefer3","_document$body$parent4","_shouldShowNextClicker","forceUpdate","_shouldShowPreviousClicker","newClickerPosition","_handleHoverIn","_hoveringCellItemId","_handleHoverOut","_goBack","backToShoppingUrl","referrer","history","back","specifications","_product$specificatio","specificationsList","allSpecifications","flatten","specificationNames","validValues","AttributeValueId","uniqueSpecificationNames","unique","allDimensions","dimensionIds","actionBarClassName","clearAllProductsFromComparison","isEmptyContent","_renderHeading","loading","_renderLoading","actionBarContainerProps","_getActionBarContainerProps","previousClicker","_renderPreviousClicker","nextClicker","_renderNextClicker","backToShopping","_renderBackToShoppingButton","emptyComparison","emptyComparisonContentSlots","_getProductComparisonDataByCatalogId","isConsentGiven","productCountText","productComparisonCountText","productsMainInfoData","allUniqueDimensionIds","getProductsDimensionsIds","updatedDimensionProps","getUpdatedDimensionsProps","tableReference","tableHeaderReference","tableBodyReference","tableCellReference","shouldShowPreviousClicker","shouldShowNextClicker","handlePreviousClick","handleNextClick","handleScroll","handleHoverIn","handleHoverOut","uniqueDimensionIds","_getProductsDimensions","dimensionsProps","uniqueSpecifications","_getProductsSpecifications","specificationsProps","_getSpecificationProps","GetProductsInProductComparisonInput","getProductsInProductComparisonAction","_renderQuickView","_product$productInfo$","quickViewSlot","quickViews","selectedProductId","defaultImageSettingsQ","_getTableHeaderProps","isHoverModeEnabled","tableHeaderCellClassName","_getTableCellProps","cellClassName","tableCellClassName","_renderProductRating","_ratingValue$reviewsC","averageRating","ratingValue","productComparisonProductItemRatingAriaLabel","reviewsCount","shouldShowFullRatingDescription","backToShoppingLabel","_getDimensionName","dimensionId","ProductDimensionType","Color","productComparisonProductItemColorDimension","Size","productComparisonProductItemSizeDimension","Style","productComparisonProductItemStyleDimension","dimensionClassName","dimensionsRowClassName","dimensionDescription","dimensionSelectionType","dimensionsAsSwatchConfiguration","dimensionsAsSwatchType","DimensionTypes","swatch","productDimensionValues","productMainInfo","_this$props$data$prod2","renderSwatch","textValue","productsDimension","_productsDimension$di","_productsDimension$di2","dimensionItems","dimensionItem","_dimensionItem$map","currentDimensionId","swatches","swatchItem","_productMainInfo$prod","_swatchItem$Dimension2","_swatchItem$Dimension3","_swatchItem$Dimension4","_swatchItem$Dimension5","_swatchItem$Dimension6","_swatchItem$Dimension7","_swatchItem$Dimension8","_swatchItem$Dimension9","isDefaultDimension","selectedDimension","_swatchItem$Dimension","DimensionId","colorHexCode","ColorHexCode","ImageUrl","isDefault","SwatchComponent","isSelectionEnabled","_dimensionItem$Dimens","_dimensionItem$Dimens2","productDimensionSeperatorValue","productDimensionSeparator","dimensionProps","node","specificationClassName","specificationsRowClassName","specificationValues","_productMainInfo$prod2","productSpecification","productSpecifications","productComparisonTitle","productComparisonLoadingText","productComparisonClearAllButtonAriaLabel","productComparisonClearAllButtonText","tableClickerClassName","onKeyUp","productComparisonPreviousProduct","productComparisonNextProduct","_renderRemoveFromComparisonButton","productRowClassName","currentCatalogId","productUrlLink","_product$productInfo$2","_dimension$DimensionV2","isFromCurrentCatalog","productPriceClassName","cellNewWidth","minWidth","maxWidth","cellContainerProps","productComparisonProductItemFreePrice","productComparisonProductItemOriginalPrice","productComparisonProductItemCurrentPrice","quickView","goToProductDetailsButton","productComparisonGoToProductDetailsButtonText","tableCellProps","tableHeaderProps","productRating","productDescription","_renderProductDescription","tableBodyClassName","tableRowContentClassName","tableRowContentInformationClassName","renderDynamicHeaderCells","headerName","tabindex","renderDynamicCells","ProductComparisonViewFunctionalComponent","_props$productsMainIn5","_props$dimensionsProp","_props$specifications","_props$productsMainIn8","_props$productsMainIn9","actionsClassName","onScroll","_props$productsMainIn3","_props$productsMainIn4","productComparisonProductItemRating","_props$productsMainIn6","_props$productsMainIn7","productComparisonProductItemDescription","specificationProps","isNullOrEmpty","productComparisonProductItemSku","PromoBannerCloseButton","closeButtonAriaLabel","label","PromoBannerClose","PromoBannerLinks","editableLinks","_mapEditableLinks","linkdata","forEach","PromoBannerText","PromoBanner","isVisible","bannerMessages","_isLastItem","_isFirstItem","closeButtonLabel","bannerText","bannerAriaLabel","handleLinks","handleText","promoBannerProps","promoBannerTextProps","promoBannerLinksProps","contentProps","promoBannerText","carouselProps","hideIndicator","closeButton","slides","createObservableDataAction","ctx","tenantId","inputIsValid","serviceEndpoint","locale","sendRequest","userReviewData","Authorization","authorization","response","exception","SubmitUserReviewInput","getCacheKey","getCacheObjectType","dataCacheType","onClickSubmit","ReviewModal","SubmitReview","submitButtonAttribute","Cancel","cancelButtonAttribute","modal","modalCSS","classNames","onModalToggle","returnFocusRef","returnRef","modalHeader","modalHeaderNode","modalFooter","modalBody","cancelButton","discardReviewButtonText","submitButton","submitDisabled","submitReviewButtonText","ratingsInput","ratingLabel","ratingsLabel","titleInput","titleLabel","textInput","textLabel","privacyPolicyUrl","privacyPolicyLink","form","inputRow","hasError","errorMessageText","userReview","reviewId","editReviewModalTitle","writeReviewModalTitle","stripWhiteSpacesFromString","reviewText","reviewTitle","selectRatingAriaLabel","initialRating","parentId","parentType","onRatingChange","selectRatingLabel","reviewTitleMaxLength","renderContextId","onTitleChange","reviewTitleAriaLabel","reviewTitleLabel","reviewTextMaxLength","rows","reviewAriaLabel","reviewTextLabel","policyTextBlocks","privacyPolicyTextFormat","isSeparatorAtStart","startsWith","isSeparatorAtEnd","endsWith","PrivacyPolicy","privacyPolicyAttribute","rel","privacyPolicyTitle","submitReview","onReviewComplete","trim","onReviewSubmission","getRnrPartnerId","userEmail","emailAddress","userName","getRnrAuthEndpointId","submitUserReview","review","submittedDateTime","helpfulPositive","helpfulNegative","firstName","getReviewInput","GetUserReviewInput","TOGGLE_REVIEW_MODAL_BUTTON_ID","TOGGLE_EDIT_MODAL_BUTTON_CARD_ID","HistogramItems","ratingsSummary","totalRatingsCount","renderItem","star5Count","star4Count","star3Count","star2Count","star1Count","stars","totalCount","percentage","formattedPercent","Intl","NumberFormat","barItemAriaLabel","starLabel","bar","Progress","buttonProps","AverageRatingNumber","summary","TotalReviews","RatingsHistogram","handleHeadingChange","selectFilterBy","completeClass","classname","histogramItems","averageRatingAriaLabel","hideCount","averageNumber","totalReviews","ratingsSummaryProps","histogramProps","filterKey","createRatingsReviewsStateInput","histogramItem","authToken","requestBody","concernCategory","requestHeader","isHelpful","ReviewConcernCategory","ReportReviewConcernInput","ReviewCount","currentPage","reviewsShownOnEachPage","pageReviewCountText","_getReviewStartNumber","_getReviewEndNumber","PageControls","previousPageClick","_getPreviousPageData","nextPageClick","_getNextPageData","Next","nextAttribute","Previous","previousAttribute","_hasPreviousPage","_paginationAriaLabel","pageReviewAriaLabel","previousButtonText","_hasNextPage","nextButtonText","_getPagesCount","_getReviewsShown","isNextPage","page","pageModifier","pageReviewCount","updateReviews","selectedSortByOption","selectedFilterByOption","reportConcernDropdownOptions","radioPairs","pairs","option","inputId","reportedKey","onRadioChange","reviewRatingNarratorText","voteHelpfulButton","isVoted","isVotedFor","i","votedReviews","approved","isDisabled","isUserReview","isOboRequest","yesButtonText","noButtonText","voteCount","onClickMethod","updateReviewHelpfulness","editButton","toggleWriteReviewModal","editReviewCardText","renderDate","DateTimeFormat","month","year","_unused","toggleReportReviewModal","reportToggle","reportConcernText","reportedReviews","reportedText","reportedReviewId","SubmitHelpfulnessVoteInput","ReviewsList","sortByDropdownOptions","mostHelpfulSortOptionText","mostRecentSortOptionText","highestRatedSortOptionText","lowestRatedSortOptionText","filterByDropdownOptions","allRatinsFilterByOptionText","fiveStarFilterByOptionText","fourStarFilterByOptionText","threeStarFilterByOptionText","twoStarFilterByOptionText","oneStarFilterByOptionText","reviewsListCallbacks","updateReviewTitle","userReviewTitle","updateReviewText","userReviewText","updateRating","userReviewRating","onReviewSubmitted","isSuccessful","isReviewModalOpen","hasReviewError","toggleModal","_toggleReviewModal","updateReviewHelpfulnessVote","toggleReportModal","isReportModalOpen","_onReportModalOpen","_onReportModalClose","reportReview","_reportReviewCallback","updateFilterByDropdown","updateSortByDropdown","reviewsList","pagingInfo","listOfReviews","isFilterApplied","ratingsReviewsState","filterKeyValue","dropdownItemsCount","filterByOption","_userReview","_reviewCard","_reviewCards","reviewList","reviewElements","isTakenDown","isPublished","cardProps","ratingHelpfulLabel","wasReviewHelpfulText","like","dislike","edit","report","responseName","userResponse","responderName","responseText","responseDate","cardBodyProps","responseProps","reviewProps","controlsProps","headerProps","ReviewCard","_userReportModalToggle","reportingReviewId","_userReviewModal","_onTitleChange","_onTextChange","_onRatingChange","_onReviewComplete","_userReviewModalToggle","isSuccess","_reportReviewModal","submitReviewAttribute","SuccessButton","successAttribute","cancelAttribute","SpamAdvertising","reportSpamText","OffensiveContent","offensiveContentText","Profanity","profanityContentText","header","headerSubmitted","feedbackThankYouText","cancelReportReviewText","reportReviewButtonText","succesfulButton","okReportReviewText","reportMessage","reportModalMessage","reportSubmittedMessage","radioButtons","ReportReviewModal","_onRadioChange","_reportReview","hasReportError","reported","reportReviewConcern","getUserToken","_value","reportedReview","notification","selectedOption","skipItems","getSelectedProductIdFromActionInput","getReviewsForGivenProduct","GetProductReviewsInput","getRnrEndpointId","_updateVoteUi","alreadyExists","submitHelpfulnessVote","showSpinner","reviewModal","reportReviewModal","filterByDropdown","LabeledDropdown","labelText","filterByDropdownText","dropdownOptions","onSelectOption","controlledByParent","sortByDropdown","sortByDropdownText","reviewCount","refineReviewsProps","reviewsListProps","reviewCards","pageControls","noReviewsMessage","noReviewsWithFilterMessage","noReviewsWithSelectedFilterMessage","sortByOptions","filterByOptions","buildReviewCard","createReviewModal","createReportModal","SignInMessage","SignInButton","SignIn","ModalToggle","WriteReview","writeReviewCallbacks","_modalToggleRef","userInfo","signInMessage","signInButton","signInLabel","signInAriaLabel","modalToggle","editReviewButtonText","reviewButtonLabel","_buildUserReviewModal","SearchState","SuggestionType","ProductListInventoryFilteringOptions","AutoSuggestInput","suggestionType","hitPrefix","hitSuffix","searchQuery","topResultsCount","_getAutoSuggest","autosuggest","_ctx$requestContext$a","productSearchCriteria","productListInventoryDisplay","HideOOS","inventoryRefinerValue","getInventorySortableRefinerValue","channelInventoryConfiguration","isInStock","ProductAvailabilitySortableAttributeRecordId","RefinerRecordId","AttributeDataType","TrueFalse","LeftValueBoundString","RightValueBoundString","UnitText","RowNumber","Count","RefinerSourceValue","ProductRefinerSource","Attribute","getInventoryConfigurationAsync","Refinement","searchCriteria","ProductSearchCriteria","HitPrefix","HitSuffix","searchSuggestions","getSearchSuggestionsAsync","AllSearchResults","autoSuggestPromises","all","inputData","CategorySuggestionsComponent","suggestions","autoSuggestProps","categorySuggestionHeading","reactNodes","_assembleNode","_renderTitle","categoryAutoSuggestionHeading","shouldShowFullPath","splitValue","pop","attribute","_generateLink","_getHighlightedText","suggestion","_getCategoryLink","_categoryRefiners$Val","searchPageURL","searchQsp","searchRefiners","queryUrl","categoryRefiners","refiners","SourceValue","Category","refiner","Values","encodedRefiner","compressRefiners","formattedText","compressedRefinerKeys","compressedRefiners","compressedRefiner","refinerKey","FormComponent","searchPlaceholder","hideSearchLabel","handleInputChange","maxChars","disableSubmitSearch","handleCancelSearchChange","ariaLabelCancel","ariaLabelSearch","ariaLabelSubmit","onInputChange","onInputChangeFunction","inputNode","submitBtnNode","cancelBtn","submitBtn","KeywordSuggestionsComponent","formattedLink","LabelComponent","searchLabelClass","searchLabelArialLabel","isSearchFormExpanded","searchtext","searchCollapsedLabel","ProductSuggestionsComponent","productSuggestionHeading","moduleType","productAutoSuggestionHeading","_item$Value","Value3","DecimalValue","thumbnail","_renderThumbnail","LiProduct","_getLiWrapper","AProduct","_getAWrapper","recid","_props$resources","waitTime","_isLoadingNode","loadingText","autoSuggestResultLoadingMessage","size","SpinnerSize","medium","labelPosition","_focusOutTarget","closest","_clearAutoSuggestState","_keyup","keyCode","KeyCodes","Escape","formReference","autoSuggestResultDiv","searchState","defaultBasicSearchUrl","searchQueryStringParameter","createSearchStateInput","_handleInputChange","cancellabelDebounce","cancel","inputSuggestionType","_loadSuggestions","_handleSubmit","searchURL","_appendQueryParams","_handleCancelSearchChange","isInitialState","_handleCancelSearchFocused","route","_setAutoSuggestResultCount","autoSuggestResultScreenReaderDiv","ariaLiveRegion","suggestResultString","autoSuggestFoundMessage","emptyResultString","noAutoSuggestionMessage","searchKeywordSuggestClass","searchProductSuggestClass","searchCategorySuggestClass","autoSuggestAriaLabel","isLoadingAutoSuggest","searchInputMaxLength","searchFormClass","_initSuggestionTypes","_suggestions$AllSearc","_suggestions$AllSearc2","_suggestions$AllSearc3","cancelBtnAriaLabel","searchBtnAriaLabel","submitBtnAriaLabel","searchplaceholderText","shouldShowFullCategoryPath","keywordSuggestions","Keyword","None","productSuggestions","Product","categorySuggestions","_item$RefinerRecordId","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","AutoSuggest","KeywordSuggest","ProductSuggest","CategorySuggest","SearchForm","FormWrapper","UlKeyword","UlProduct","UlCategory","autosuggestKeyword","autosuggestProduct","autosuggestCategory","handleCancelSearchFocused","isLoadingNode","suggestionTypes","suggestionTypeCriterion","validSuggestions","loadSuggestionsRequestId","getSearchSuggestionsAction","_getSuggestionType","_getSearchRefiners","_getSearchSuggestions","_updateSearchRefiners","suggestionTypeItem","charAt","ProductsDataActions","_renderKeywordSuggestions","_renderProductSuggestions","_renderCategorySuggestions","CatalogLabelComponent","cartLineItemFunctions","renderProductDimensions","dimensionStrings","productDimension","_productDimension$Dim","_productDimension$Dim2","_productDimension$Dim3","_productDimension$Dim4","colorString","Configuration","configString","sizeString","IsGiftCard","amountString","styleString","renderProductUnitPrice","priceCurrency","renderDiscountLines","_discountLine$OfferId","OfferId","OfferName","isSalesLine","PeriodicDiscount","EffectiveAmount","Percentage","discountPercent","_discountLine$Percent","updatedPercent","DiscountLineTypeValue","DiscountLineType","TenderTypeDiscount","_discountLine$Effecti","effectiveAmount","renderInventoryLabel","inventoryCssName","inventoryLabelClassName","inventoryInformationLabel","renderShippingLabel","_cartline$ChargeLines","pickupDeliveryModeCode","channel","PickupDeliveryModeCode","channelDeliveryOptionConfig","cartline","hasShippingMethod","_channelDeliveryOptio","DeliveryMode","PickupDeliveryModeCodes","deliveryMode","shippingChargeLines","ChargeLines","chargeLine","IsShipping","freightFee","reduce","chargeTotal","_chargeLine$Calculate","CalculatedAmount","priceComponent","shippingChargesText","renderOtherCharges","_cartline$ChargeLines2","_otherCharges$map","otherCharges","chargeline","otherCharge","itemIndex","renderSalesAgreementPrompt","SalesAgreementLineRecordId","salesAgreementPricePrompt","renderConfirmedShipDate","confirmedShipDate","confirmedShipDateLabel","renderRequestDeliveryDate","requestDeliveryDate","requestDeliveryDateLabel","CartLineItemComponent","_props$context$reques2","_props$primaryImageUr","destructDimensionStrings","fallbackImageUrl","productDimensions","productAttribute","imgeClassName","cartLineContentClassName","quantityOnChange","generateErrorMessage","renderUnitOfMeasure","unitOfMeasureDisplayType","NetAmountWithAllInclusiveTax","GrossAmount","ExtendedPrice","NetPrice","showShippingChargesForLineItems","generateQuantityAndPrice","nodes","unitOfMeasure","_props$maxQuantity","_props$data$product$I","isQuantityEditable","quantityDisplayString","IncrementalQuantity","maxQuantity","currentQuantity","isCartStateReady","isGiftCard","isOutOfStock","DiscountAmount","discountStringText","priceEditorResources","CartLinePriceEditor","FulfillmentStoreId","deliveryLocation"],"sourceRoot":""}