{"version":3,"file":"static/js/application.async.non-landing~32b2fb24.30967d7a.chunk.js","mappings":"4iBAMMA,EAAqB,SAACC,EAAQC,GAGlC,OAFiBD,EAAOE,wBAAhBC,MAEIF,EACH,QAEF,MACT,EACaG,EAA2B,qBAE3BC,EAAiB,WAAH,OACzBC,EAAAA,uBAAgCC,SAASC,eAAeJ,GAA2B,EAExEK,EAAsB,SAAHC,GASzB,IARLC,EAAID,EAAJC,KACAC,EAAOF,EAAPE,QACAZ,EAAMU,EAANV,OACAa,EAASH,EAATG,UACAC,EAAKJ,EAALI,MACAC,EAAIL,EAAJK,KACAd,EAAYS,EAAZT,aAAYe,EAAAN,EACZO,eAAAA,OAAc,IAAAD,GAAOA,EAErBV,EAAAA,QAAgBY,EAAAA,EAAAA,KAACC,EAAAA,QAAO,CACtBP,QAASA,IAAWM,EAAAA,EAAAA,KAACE,EAAAA,wBAAuB,CAACC,SAAUV,IAEvDX,OAAQA,EACRa,UAAWA,EACXC,MAAOA,EACPQ,MAAI,EACJC,YAAaN,EACbO,kBAAgB,EAChBC,UAAW1B,EAAmBC,EAAQC,GACtCyB,UAAW,CACTC,mBAAoB,8BACpBC,uBAAwB,4BACxBC,uBAAwB,4BAE1BC,QAASzB,EACT0B,UAAWC,IAAEhC,GAAQiC,QAAQ,eAAe,GAC5CC,qBAAsBnB,EAAKoB,UAAU,+BACrCC,uBAAuB,IACrB7B,SAASC,eAAeJ,GAC9B,ECtBaiC,EAA8B,SAAH3B,GAUjC,IATL4B,EAAQ5B,EAAR4B,SACAC,EAAK7B,EAAL6B,MACAxB,EAAIL,EAAJK,KACAd,EAAYS,EAAZT,aACAuC,EAAiB9B,EAAjB8B,kBACAC,EAAwB/B,EAAxB+B,yBACAC,EAAkBhC,EAAlBgC,mBACAC,EAAMjC,EAANiC,OACAC,EAAoBlC,EAApBkC,qBAEAL,EAAMM,kBAEN,IAAMC,EAAaR,EAASS,cAAcR,GACtCS,EAAwB,KACxBC,GAA6C,EAC7CC,GAA2C,EAC3CC,EAA2B,CAAC,EAEhC,GAAwB,oBAApBL,EAAWM,KAA4B,CACzC,IAAMC,EAAcV,GAAUA,EAAOW,IAAI,eACnCC,GAA0BC,EAAAA,EAAAA,GAA6BH,EAAaP,EAAWW,SAASC,eAAiB,GAC/GhB,EAAmBiB,KAAIC,MAAvBlB,GAAkBmB,EAAAA,EAAAA,GAASN,GAC7B,MAAO,GAAwB,mBAApBT,EAAWM,KAA2B,CAC/C,IAAMC,EAAcV,GAAUA,EAAOW,IAAI,eACnCC,GAA0BO,EAAAA,EAAAA,kCAAiCT,IAAgB,GACjFX,EAAmBiB,KAAIC,MAAvBlB,GAAkBmB,EAAAA,EAAAA,GAASN,IAC3BP,EAAwBe,EAAAA,8BACxBd,GAA6C,EAC7CC,GAA2C,EAC3CC,EAA2Ba,EAAAA,gCAC7B,MAAO,GAAwB,iBAApBlB,EAAWM,KAAyB,CAC7C,IAAMC,EAAcV,GAAUA,EAAOW,IAAI,eACnCW,GAAwBC,EAAAA,EAAAA,IAA+Bb,IAAgB,GAC7EX,EAAmBiB,KAAIC,MAAvBlB,GAAkBmB,EAAAA,EAAAA,GAASI,IAC3BjB,EAAwBmB,EAAAA,GACxBhB,EAA2BiB,EAAAA,EAC7B,MAAO,GAAwB,oBAApBtB,EAAWM,KAA4B,CAChD,IAAMC,EAAcV,GAAUA,EAAOW,IAAI,eACnCe,GAA2BC,EAAAA,EAAAA,IAAkCjB,IAAgB,GACnFX,EAAmBiB,KAAIC,MAAvBlB,GAAkBmB,EAAAA,EAAAA,GAASQ,IAC3BrB,EAAwBuB,EAAAA,GACxBtB,GAA6C,EAC7CC,GAA2C,EAC3CC,EAA2BqB,EAAAA,EAC7B,CAEAhC,IAAoBiC,MAAK,SAAAC,GAA4B,IAAzBC,EAAiBD,EAAjBC,kBAC1BlC,IAA2BgC,MAAK,SAAAG,GAA6B,IAA1BC,EAAkBD,EAAlBC,mBAC3BC,EAAUC,KAAKC,MAAMlC,EAAWmC,sBAEhCC,EAAyBC,IAAAA,MAAQC,EAAAA,yCAIvCF,EAAuBG,KAAO,sCAC9B,IAAMC,EAA6BH,IAAAA,MAAQC,EAAAA,yCAC3CE,EAA2BD,KAAO,oCAClC,IAAME,EAAoB,IAAIZ,EAAkB,CAC9Ca,wBAAyBV,EACzBW,KAAM,CACJ1E,KAAAA,EACA4B,OAAAA,EACA+C,OAAQ,CACNC,6BAAAA,EAAAA,6BACAC,sBAAAA,EAAAA,sBACAC,4BAA6BC,EAAAA,8BAC7BC,6BAA8BC,EAAAA,wCAC9BC,iCAAkCC,EAAAA,qCAClCC,+CAAAA,EAAAA,+CACAC,uCAAAA,EAAAA,uCACAC,oCAAqCnB,EACrCoB,kCAAmChB,EACnCF,wCAAAA,EAAAA,wCACAmB,mCAAAA,EAAAA,oCAEF7D,mBAAAA,EAEA8D,kBAAmB1D,EAAW0D,gBAK9BC,oBAAqB7D,KAA0BE,EAAW0D,gBAC1D5D,qBAAAA,EACAiC,oBAAoB6B,EAAAA,EAAAA,gCAA+B7B,GACnD1B,yBAAAA,GAEFH,sBAAAA,EACAC,2CAAAA,EACAC,yCAAAA,EACAyD,eAAwC,iBAAxBrE,EAASsE,aACxBC,SAEH1B,IAAAA,KAAOI,EAAkBvD,EAAE,6DAA6D,SAAC8E,GACvFA,EAAMC,aAAa,WAAY,WACjC,IAEAxB,EAAkBvD,EAAE,mCAAmCgF,OAEvDvG,EAAoB,CAClBE,KAAM4E,EACNvF,OAAQuC,EAAMvC,OACda,UAAW,0BACXC,MAAOC,EAAKoB,UAAU,gCACtBpB,KAAAA,EACAd,aAAAA,GAEJ,GACF,GACF,E,wBC/HagH,EAA6B,SAAHvG,GAMhC,IALL4B,EAAQ5B,EAAR4B,SACAC,EAAK7B,EAAL6B,MACAxB,EAAIL,EAAJK,KACAd,EAAYS,EAAZT,aACAiH,EAAkBxG,EAAlBwG,mBAEA3E,EAAMM,kBAEN,IAAMsE,EAAW,SAACC,EAAQC,GACxBC,EAAAA,QAAgBC,WAAW,CAACC,EAAAA,QAAUC,YAAYC,OAAQF,EAAAA,QAAUG,SAASC,KAAM,2BAA2B,wBAADC,OAA0BT,EAAM,KAAAS,OAAIR,GACnJ,EAEI9E,EAAMuF,eAAmD,8BAAlCvF,EAAMuF,cAAcpG,WAC7CyF,EAAS,QAAS,mBAGpB,IAAMrE,EAAaR,EAASS,cAAcR,GAE1C2E,IAAqBzC,MAAK,SAAAC,IACxBqD,EAD4DrD,EAAjCqD,mCACO,CAChCjF,WAAAA,EACA/B,KAAAA,EACAiH,mBAAoB1F,EAAS0F,mBAC7Bb,SAAAA,IACC1C,MAAK,SAAA9D,GAAI,OAAIF,EAAoB,CAClCE,KAAAA,EACAX,OAAQuC,EAAMvC,OACda,UAAW,yBACXE,KAAAA,EACAd,aAAAA,GACA,GACJ,GACF,E,oCCzCagI,EACG,eADHA,EAEK,iBAMLC,EAAkC,SAACpF,GAC9C,MAAkC,0BAA9BA,EAAW,eACN,qCACgC,4BAA9BA,EAAW,eACb,uCAEF,IACT,EAEaqF,EAAuB,SAACC,GACnC,IAAIC,EAAgB,GAEpB,OAAQD,GACN,IAAK,qCACHC,EAAgBJ,EAChB,MACF,IAAK,uCACHI,EAAgBJ,EAMpB,OAAOI,CACT,EAGaC,EAAmC,WAgB9C,MAfqC,CACnCC,mCAAoC,CAClC,+CACA,uCACA,2BACA,sBACA,wBACA,0BAEFC,qCAAsC,CACpC,sBACA,uBAKN,ECpCMnI,EAAiB,WAAH,OAASC,EAAAA,uBAAgCC,SAASC,eAAeJ,GAA2B,EAiG1GqI,EAAwB,SAACC,GAC7B,IAEMC,EAnGiB,SAAHjI,GAAA,IACpBK,EAAIL,EAAJK,KACA6H,EAA6ClI,EAA7CkI,8CACAC,EAAGnI,EAAHmI,IACAC,EAAMpI,EAANoI,OACA3B,EAAQzG,EAARyG,SACAkB,EAAa3H,EAAb2H,cAAa,MACR,CACLU,6CAA8C,CAC5CC,YAAa,oDACbC,WAAYL,EAAgD,iDAAmD,gDAC/GM,MAAO,SAAFxE,GAEE,IADL5B,EAAU4B,EAAV5B,WAAYR,EAAQoC,EAARpC,SAEZjC,IACIuI,GACFzB,EAAS,QAAS,gDAClB7E,EAAS6G,oCAAoCrG,EAAY/B,EAAKoB,UAAU,sDAAuD0G,EAAKC,EAAQ,kDAE5I3B,EAAS,WAAY,gDACrB7E,EAAS8G,uBAAuB,CAC9BC,MAAOvG,EAAYwG,WAAY,qBAGrC,GAEFC,qCAAsC,CACpCP,YAAa,sDACbC,WAAY,gDACZC,MAAO,SAAFtE,GAEE,IADL9B,EAAU8B,EAAV9B,WAAYR,EAAQsC,EAARtC,SAEZjC,IACA8G,EAAS,WAAY,wCACrB7E,EAAS8G,uBAAuB,CAC9BC,MAAOvG,EAAYwG,WAAY,oBAEnC,GAEFE,yBAA0B,CACxBR,YAAa,6DACbC,WAAY,4DACZC,MAAO,SAAFO,GAEE,IADL3G,EAAU2G,EAAV3G,WAAYR,EAAQmH,EAARnH,SAEZjC,IACA8G,EAAS,QAAS,4BAClB7E,EAASoH,sCAAsC5G,EAAY/B,EAAKoB,UAAU,+DAAgE0G,EAAKC,EAAQ,2BACzJ,GAEFa,oBAAqB,CACnBX,YAAaX,IAAkBJ,EAA2B,wDAA0D,iEACpHgB,WAAY,kDACZC,MAAO,SAAFU,GAEE,IADL9G,EAAU8G,EAAV9G,WAAYR,EAAQsH,EAARtH,SAEZjC,IACA8G,EAAS,QAAS,uBAClB7E,EAASuH,iCAAiC/G,EAAY/B,EAAKoB,UAAU,0DAA2D0G,EAAKC,EAAQ,sBAC/I,GAEFgB,sBAAuB,CACrBd,YAAa,0DACbC,WAAY,yDACZC,MAAO,SAAFa,GAEE,IADLjH,EAAUiH,EAAVjH,WAAYR,EAAQyH,EAARzH,SAEZjC,IACA8G,EAAS,QAAS,yBAClB7E,EAAS0H,wCAAwClH,EAAY/B,EAAKoB,UAAU,4DAA6D0G,EAAKC,EAAQ,wBACxJ,GAEFmB,uBAAwB,CACtBjB,YAAa,2DACbC,WAAY,0DACZC,MAAO,SAAFgB,GAEE,IADLpH,EAAUoH,EAAVpH,WAAYR,EAAQ4H,EAAR5H,SAEZjC,IACA8G,EAAS,UAAW,0BACpB7E,EAAS6H,0CAA0CrH,EAAY/B,EAAKoB,UAAU,6DAA8D0G,EAAKC,EAAQ,yBAC3J,GAEFsB,oBAAqB,CACnBpB,YAAa,wDACbC,WAAY,uDACZC,MAAO,SAAFmB,GAEE,IADLvH,EAAUuH,EAAVvH,WAAYR,EAAQ+H,EAAR/H,SAEZjC,IACA8G,EAAS,UAAW,uBACpB7E,EAASgI,uCAAuCxH,EAAY/B,EAAKoB,UAAU,0DAA2D0G,EAAKC,EAAQ,sBACrJ,GAEH,CAKuByB,CAAiB,CACrC3B,8CAFAF,EAAM5F,WAAWmC,qBAAqBuF,mBAAqB9B,EAAM5F,WAAWmC,qBAAqBwF,sBAGjG1J,KAAM2H,EAAM3H,KACZ8H,IAAKH,EAAMG,IACXC,OAAQJ,EAAMI,OACd3B,SAAUuB,EAAMvB,SAChBkB,cAAeK,EAAML,gBAEjBqC,EAAoBhC,EAAM5F,WAAW4F,EAAMN,8BACjDuC,GAA4CC,EAAAA,EAAAA,UAAS,GAAEC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAhDI,EAAcF,EAAA,GAAEG,EAAiBH,EAAA,GAIxC,OAFAnC,EAAMvB,SAAS,OAAO,GAADU,OAAK6C,EAAkBK,MAG1CE,EAAAA,EAAAA,MAAA,OAAKvJ,UAAU,uBAAsBwJ,SAAA,EACnCD,EAAAA,EAAAA,MAAA,OAAKvJ,UAAU,QAAOwJ,SAAA,EACpBhK,EAAAA,EAAAA,KAAA,QAAMQ,UAAU,kBAChBR,EAAAA,EAAAA,KAAA,QAAMQ,UAAU,yBAAwBwJ,SAAExC,EAAM3H,KAAKoB,UAAUwG,EAAc+B,EAAkBK,IAAiB/B,mBAElHiC,EAAAA,EAAAA,MAAA,OAAKvJ,UAAU,YAAWwJ,SAAA,EACxBhK,EAAAA,EAAAA,KAAA,UACEiK,KAAK,SACLC,QAAS,WAAF,OAAQzC,EAAc+B,EAAkBK,IAAiB7B,MAAMR,EAAM,EAC5E2C,UAAW,SAAAC,GAAC,OACVC,EAAAA,EAAAA,cAAY,kBAAM5C,EAAc+B,EAAkBK,IAAiB7B,MAAMR,EAAM,GAA/E6C,CAAiFD,GAAGE,EAAAA,EAAAA,QAAO,CAAEC,iBAAiB,IAAQ,EACxH/J,UAAU,iCACVgK,SAAUhD,EAAMiD,YAAoD,iDAAtCjB,EAAkBK,GAAmEG,SAElHxC,EAAM3H,KAAKoB,UAAUwG,EAAc+B,EAAkBK,IAAiB9B,eAEzEgC,EAAAA,EAAAA,MAAA,OAAKvJ,UAAU,oBAAmBwJ,SAAA,CAC/BH,EAAiB,IAAM7J,EAAAA,EAAAA,KAAC0K,EAAAA,UAAS,CAChCC,MAAM,oBACNT,QAAS,WACPJ,EAAkBD,EAAiB,EACrC,IAEDA,EAAiBL,EAAkBoB,OAAS,IAAM5K,EAAAA,EAAAA,KAAC0K,EAAAA,UAAS,CAC3DC,MAAM,qBACNT,QAAS,WACPJ,EAAkBD,EAAiB,EACrC,YAKZ,EA2BMgB,EAA4BC,EAAAA,KAAWvD,GAChCwD,EAAoC,SAAHC,GASvC,IARL5J,EAAQ4J,EAAR5J,SACAC,EAAK2J,EAAL3J,MACAxB,EAAImL,EAAJnL,KACAd,EAAYiM,EAAZjM,aACAkM,EAAKD,EAALC,MACAR,EAAUO,EAAVP,WACA9C,EAAGqD,EAAHrD,IACAC,EAAMoD,EAANpD,OAEAvG,EAAMM,kBACN,IAAMC,EAAaR,EAASS,cAAcR,GACpC6F,EAA+BF,EAAgCpF,GAC/DuF,EAAgBF,EAAqBC,GACrCjB,EAAW,SAACC,EAAQ+D,GACxB7D,EAAAA,QAAgBC,WAAW,CAACC,EAAAA,QAAUC,YAAYC,OAAQF,EAAAA,QAAUG,SAASC,KAAM,2BAA2B,yBAADC,OAA2B/E,EAAWsJ,GAAE,KAAAvE,OAAIT,EAAM,KAAAS,OAAIsD,EAAI,KAAAtD,OAAIQ,GAC7K,EAEAlB,EAAS,SAAUrE,EAAWsF,IAE9B3H,EAAoB,CAClBG,SACEM,EAAAA,EAAAA,KAAC6K,EAAyB,CACxBjJ,WAAYA,EACZqJ,MAAOA,EACPpL,KAAMA,EACNsL,WAAYvJ,EAAWsJ,GACvBT,WAAYA,EACZrJ,SAAUA,EACVuG,IAAKA,EACLC,OAAQA,EACR3B,SAAUA,EACViB,6BAA8BA,EAC9BC,cAAeA,IAGnBrI,OAAQuC,EAAMvC,OACda,UAAW,gCACXE,KAAAA,EACAd,aAAAA,EACAgB,gBAAgB,GAEpB,C,mICvOaqL,EAAsB,WAIhC,OAAAC,EAAAA,EAAAA,IAHD,SAAAD,EAAA5L,GAAuB,IAATK,EAAIL,EAAJK,MAAIyL,EAAAA,EAAAA,GAAA,KAAAF,GAChBG,KAAKC,cAAgB,IAAIC,EAAAA,cAAc,CAAE5L,KAAAA,IACzC0L,KAAK1L,KAAOA,CACd,GAAC,EAAA6L,IAAA,aAAAC,MAED,SAAWC,GACT,OAAI3H,IAAAA,QAAU2H,GACLL,KAAK1L,KAAKoB,UAAU,2DAGtBsK,KAAKC,cAAcK,iBAAiBD,EAC7C,IAAC,CAZgC,E,oOCCtBE,EAAe,SAAAC,GAC1B,SAAAD,IAAe,IAADE,EAKV,OALUV,EAAAA,EAAAA,GAAA,KAAAQ,IACZE,GAAAC,EAAAA,EAAAA,GAAA,KAAAH,IAEKI,MAAQ,CACXC,UAAU,GACVH,CACJ,CAAC,OAAAI,EAAAA,EAAAA,GAAAN,EAAAC,IAAAV,EAAAA,EAAAA,GAAAS,EAAA,EAAAJ,IAAA,SAAAC,MAED,WAAU,IAADU,EAAA,KACPC,EAIIf,KAAK/D,MAHP+E,EAAMD,EAANC,OACAvC,EAAQsC,EAARtC,SACAwC,EAAcF,EAAdE,eAGAL,EACEZ,KAAKW,MADPC,SAGF,OACEpC,EAAAA,EAAAA,MAAA,OAAKvJ,UAAWiM,IAAW,cAAaN,GAAW,OAAgBK,GAAgBxC,SAAA,EACjFD,EAAAA,EAAAA,MAAA,UACEvJ,UAAWiM,IAAW,MAAO,cAAe,mBAC5CxC,KAAK,SACL,gBAAc,OACd,gBAAeyC,QAAQP,GACvBjC,QAAS,WAAF,OAAQmC,EAAKM,SAAS,CAAER,UAAWA,GAAW,EAACnC,SAAA,CAErDuC,GACDvM,EAAAA,EAAAA,KAAA,QACEQ,UAAW+K,KAAK/D,MAAMoF,iBAG1B5M,EAAAA,EAAAA,KAAA,OACEQ,UAAU,gBAAewJ,SAExBA,MAIT,IAAC,CAxCyB,CAASc,EAAAA,WAwDrCgB,EAAgBe,aAAe,CAC7BD,WAAY,QACZJ,eAAgB,I,wCCxDGM,EAAa,SAAAf,GAuBhC,SAAAe,EAAYtF,GAAQ,IAADwE,EAED,OAFCV,EAAAA,EAAAA,GAAA,KAAAwB,IACjBd,GAAAC,EAAAA,EAAAA,GAAA,KAAAa,EAAA,CAAMtF,KAIRuF,SAAW,SAACC,GACVhB,EAAKW,SAAS,CACZM,SAAUD,IACT,kBAAMhB,EAAKxE,MAAMuF,SAASC,EAAK,GACpC,EAPEhB,EAAKE,MAAQ,CAAC,EAAEF,CAClB,CAAC,OAAAI,EAAAA,EAAAA,GAAAU,EAAAf,IAAAV,EAAAA,EAAAA,GAAAyB,EAAA,EAAApB,IAAA,SAAAC,MAQD,WAAU,IAADU,EAAA,KACPC,EAIIf,KAAK/D,MAHP0F,EAAKZ,EAALY,MACAC,EAASb,EAATa,UACAC,EAAUd,EAAVc,WAGMH,EAAa1B,KAAKW,MAAlBe,SAER,OACEjN,EAAAA,EAAAA,KAAA,MAAAgK,SACGkD,EAAMG,KAAI,SAACL,EAAMM,GAChB,IAAMC,EAASJ,EAAUH,EAAMM,GAE/B,OACEtN,EAAAA,EAAAA,KAAA,MAEE,eAAcuN,EAAOvD,UAErBD,EAAAA,EAAAA,MAAA,KACEyD,KAAK,SACLC,SAAoB,IAAVH,EAAc,GAAK,EAC7BpD,QAAS,WAAF,OAAQmC,EAAKU,SAASC,EAAK,EAClCU,YAAYrD,EAAAA,EAAAA,cAAY,kBAAMgC,EAAKU,SAASC,EAAK,IACjDxM,UAAWiM,IAAW,YAAaQ,IAAaD,GAAO,YAAoBhD,SAAA,EAE3EhK,EAAAA,EAAAA,KAAA,OAAKQ,UAAWiM,IAAW,YAAa,yBAA0BQ,IAAaD,GAAO,kBAEpFI,EAAWJ,EAAMM,OAZhBC,EAiBX,KAGN,IAAC,EAAA7B,IAAA,2BAAAC,MAvDD,SAAgCgC,EAAWC,GACzC,IAAAC,EAA0CF,EAAlCV,SAER,MAAO,CACLA,cAHc,IAAAY,EAAGD,EAAUX,SAAQY,EAKvC,IAAC,CArB+B,CAAS/C,EAAAA,WCD5B,SAASgD,EAAatO,GAOjC,IANFuO,EAAIvO,EAAJuO,KACAC,EAAQxO,EAARwO,SACAC,EAAOzO,EAAPyO,QACAC,EAAU1O,EAAV0O,WACAC,EAAM3O,EAAN2O,OACAtO,EAAIL,EAAJK,KAGgBuO,EAGZL,EAHDG,GACDG,EAEEN,EAFFM,UACAC,EACEP,EADFO,QAGIC,EAAoB,CACxBC,IAAK,cAGDC,EAAiB5O,EAAK6O,WAAW,IAAIC,KAAQJ,GAEnD,OACEvO,EAAAA,EAAAA,KAAA,OAAKQ,UAAU,kBAAiBwJ,UAC9BhK,EAAAA,EAAAA,KAAC8M,EAAa,CACZK,UAAW,SAAAyB,GAAM,OAAIA,GAAU,QAAQ,EACvC1B,MAAOe,EACPhB,SAAUmB,EACVrB,SAAU,SAACC,GAEPgB,EADW,OAAThB,GACM6B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACPX,EAAa,MAAI,YACPG,GAAaI,GAAc,UAC7BH,GAAWG,IAGdI,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACPX,EAAalB,GAAI,YACP,MAAI,UACN,MAGf,EACAI,WAAY,SAACJ,GACX,GAAa,OAATA,EAAe,CACjB,IAAM8B,EAAMjP,EAAK6O,WAAW,IAAIC,KAAQJ,GAClCQ,EAAgBV,EAAYA,EAAUW,OAAO,EAAG,IAAMX,EACtDY,EAAcX,EAAUA,EAAQU,OAAO,EAAG,IAAMV,EAEtD,OACEvE,EAAAA,EAAAA,MAACe,EAAAA,SAAc,CAAAd,SAAA,CACZmE,EAAOe,aAAa,MAEC,OAApBd,GACErE,EAAAA,EAAAA,MAACe,EAAAA,SAAc,CAAAd,SAAA,EACbhK,EAAAA,EAAAA,KAACmP,EAAAA,sBAAqB,CACpBtP,KAAMA,EACN8L,MAAOoD,EACPD,IAAKG,QAAeG,EACpBpB,SAAU,SAAAqB,GAAO,OAAIrB,GAAQa,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAC5BX,EAAa,MAAI,YACPmB,GAAO,UAClBf,GACA,EACFC,kBAAmBA,IACnB,KAEFvO,EAAAA,EAAAA,KAACmP,EAAAA,sBAAqB,CACpBtP,KAAMA,EACN8L,MAAOsD,EACPK,IAAKP,QAAiBK,EACtBN,IAAKA,EACLd,SAAU,SAAAqB,GAAO,OAAIrB,GAAQa,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAC5BX,EAAa,MAAI,YAClBG,GAAS,UACAgB,GACT,EACFd,kBAAmBA,OAGvB,OAIV,CAEA,OAAOJ,EAAOe,aAAalC,EAC7B,KAIR,CCzFe,SAASuC,EAAe/P,GAInC,IAHFK,EAAIL,EAAJK,KACAkO,EAAIvO,EAAJuO,KACAC,EAAQxO,EAARwO,SAEMwB,EAAkB,IAAIC,EAAAA,GAAgB,CAAE5P,KAAAA,IAE9C,OACEG,EAAAA,EAAAA,KAAC8N,EAAa,CACZjO,KAAMA,EACNoO,QAAS,CACP,KACA,QACA,YACA,kBACA,kBACA,gBACA,sBACA,sBACA,mBACA,YACA,YACA,iBACA,WAEFE,OAAQqB,EACRxB,SAAUA,EACVD,KAAMA,GAGZ,CC9Be,SAAS2B,EAAyBlQ,GAK7C,IAJFK,EAAIL,EAAJK,KACAkO,EAAIvO,EAAJuO,KACAC,EAAQxO,EAARwO,SACA2B,EAAanQ,EAAbmQ,cAEMC,EAA4B,IAAIC,EAAAA,GAA0B,CAAEhQ,KAAAA,EAAM8P,cAAAA,IACxE,OACE3P,EAAAA,EAAAA,KAAA,OAAAgK,UACEhK,EAAAA,EAAAA,KAAC8N,EAAa,CACZjO,KAAMA,EACNoO,QAAS,CAAC,OAAQ,iBAAkB,qBAAsB,MAC1DC,WAAW,4BACXC,OAAQyB,EACR5B,SAAU,SAAC7F,GAC+B,SAApCA,EAAM2H,0BACR9B,EAAS,MAETA,EAAS7F,EAEb,EACA4F,KAAMA,GAAQ,CAAE+B,0BAA2B,WAInD,CHxBqBhD,EASZD,aAAe,CACpBM,UAAW,SAACH,EAAMM,GAAK,OAAKyC,OAAOzC,EAAM,EACzCF,WAAY,WAAF,OAAQ,IAAI,EACtBH,SAAU,MC8Fda,EAAcjB,aAAe,CAC3BqB,WAAY,mBEtEdwB,EAA0B7C,aAAe,CACvC8C,cAAe,O,sdC1CF,SAASK,EAAIxQ,GAGxB,IAFF+C,EAAQ/C,EAAR+C,SACA9C,EAAID,EAAJC,KAEA,OAAOA,EAAKwQ,sBAAsB1N,GAC/B2N,SAAQC,EAAAA,EAAAA,aAAY1Q,EAAK2B,SAASgP,MAClC7M,MAAK,WAEJ9D,EAAK2B,SAASiP,SAAQ,EACxB,GACJ,C,gBC2DO,SAASC,EAAsB9M,GAIlC,IACI+M,EAjER,SAAuB/Q,GAInB,IAADgR,EAAAhR,EAHDgB,UAAAA,OAAS,IAAAgQ,EAAG,OAAMA,EAClBC,EAAMjR,EAANiR,OACA5Q,EAAIL,EAAJK,KAEA,gBAAAkM,GAOE,SAAAwE,EAAY/I,GAAQ,IAADwE,EAIf,OAJeV,EAAAA,EAAAA,GAAA,KAAAiF,IACjBvE,GAAAC,EAAAA,EAAAA,GAAA,KAAAsE,EAAA,CAAM/I,KAMRwG,SAAW,SAAC7F,GACV6D,EAAKW,SAAS,CAAExE,MAAAA,GAClB,EAAC6D,EAED0E,OAAS,WACP1E,EAAKxE,MAAMkJ,OAAO1E,EAAKE,MAAM/D,MAC/B,EAAC6D,EAED2E,SAAW,WACT3E,EAAKxE,MAAMmJ,SAAS3E,EAAKE,MAAM/D,MACjC,EAfE6D,EAAKE,MAAQ,CACX/D,MAAOX,EAAMW,OACb6D,CACJ,CAAC,OAAAI,EAAAA,EAAAA,GAAAmE,EAAAxE,IAAAV,EAAAA,EAAAA,GAAAkF,EAAA,EAAA7E,IAAA,SAAAC,MAcD,WACE,OACE5B,EAAAA,EAAAA,MAAA,OAAKvJ,UAAWA,EAAUwJ,SAAA,EACxBhK,EAAAA,EAAAA,KAAA,OAAKQ,UAAU,aAAYwJ,UACzBhK,EAAAA,EAAAA,KAACyQ,EAAM,CACLtI,MAAOoD,KAAKW,MAAM/D,MAClB6F,SAAUzC,KAAKyC,cAGnBhO,EAAAA,EAAAA,KAAA,UACEQ,UAAWiM,IAAW,MAAO,cAAe,gBAC5CvC,QAASqB,KAAKmF,OACdzG,KAAK,SAAQD,SAEZnK,EAAKoB,UAAU,WAElBjB,EAAAA,EAAAA,KAAA,UACEQ,UAAWiM,IAAW,MAAO,cAAe,cAC5CvC,QAASqB,KAAKoF,SACd1G,KAAK,SAAQD,SAEZnK,EAAKoB,UAAU,cAIxB,IAAC,CAnDH,CAAkC6J,EAAAA,UAqDpC,CAOuB8F,CAAe,CAClCpQ,UALOgD,EAAThD,UAMEiQ,OALIjN,EAANiN,OAME5Q,KALE2D,EAAJ3D,OAQA,gBAAAgR,GAAA,SAAAC,IAAA,OAAAxF,EAAAA,EAAAA,GAAA,KAAAwF,IAAA7E,EAAAA,EAAAA,GAAA,KAAA6E,EAAAC,UAAA,QAAA3E,EAAAA,EAAAA,GAAA0E,EAAAD,IAAAxF,EAAAA,EAAAA,GAAAyF,EAAA,EAAApF,IAAA,aAAAC,MACE,SAAUjI,GAAa,IAAVyE,EAAKzE,EAALyE,MACXoD,KAAKpD,MAAQA,CACf,GAAC,CAAAuD,IAAA,SAAAC,MAED,WAAU,IAADU,EAAA,KAYP,OAXAjN,EAAAA,QAEIY,EAAAA,EAAAA,KAACuQ,EAAY,CACXpI,MAAOoD,KAAKpD,MACZuI,OAAQ,SAAAvI,GAAK,OAAIkE,EAAK2E,QAAQ,OAAQ7I,EAAM,EAC5CwI,SAAU,WAAF,OAAQtE,EAAK2E,QAAQ,QAAQ,IAGzCzF,KAAK0F,IAGA1F,IACT,IAAC,CAlBH,CAA0C2F,IAAAA,KAoB5C,CAEe,SAASC,EAAW5I,GAa/B,IAZF6I,EAAQ7I,EAAR6I,SACAC,EAAuB9I,EAAvB8I,wBAAuBC,EAAA/I,EACvBgJ,gDAAAA,OAA+C,IAAAD,EAAGrN,IAAAA,KAAMqN,EAExD9Q,EAAS+H,EAAT/H,UACAiQ,EAAMlI,EAANkI,OACA5Q,EAAI0I,EAAJ1I,KAEAmN,EAAIzE,EAAJyE,KACAwE,EAAQjJ,EAARiJ,SAEA/R,EAAI8I,EAAJ9I,KAQMgS,EAAS,IANcnB,EAAuB,CAClD9P,UAAAA,EACAiQ,OAAAA,EACA5Q,KAAAA,IAGa,CAAyB,CACtCsI,MAAOlE,IAAAA,SAAWuN,IAAYpP,EAAAA,EAAAA,KAAI4K,EAAMwE,GAAYvN,IAAAA,KAAMvB,MAANuB,IAAC,CAAM+I,GAAIrG,QAAAhE,EAAAA,EAAAA,GAAK6O,OAGtEC,EAAOC,GAAG,QAAQ,SAACvJ,GACjB,IAAMwJ,GAASC,EAAAA,EAAAA,OAAM,CAAC,EAAG5E,EAAM/I,IAAAA,SAAWuN,IAAYK,EAAAA,EAAAA,KAAI,CAAC,EAAGL,EAAUrJ,GAASA,GAEjF6H,EAAK,CACHzN,SAAUoP,EACVlS,KAAAA,IAEC8D,MAAK,kBAAMkO,EAAOT,QAAQ,QAASW,EAAO,IAC1CG,OAAM,SAACC,GACNC,MAAMD,EAAM5L,QACd,GACJ,IAEA,IAAM8L,EAAa,IAAIC,EAAAA,EAA0B,CAC/CD,WAAYR,EAAO9L,SACnBwM,aAAcf,EACdC,wBAAAA,EACAe,aAAa,IAqBf,OAlBAH,EAAWI,eAAiB,SAAChR,GAE3B,IAAMiR,EAAUxR,IAAEO,EAAMvC,QAGiD,IAAvEwT,EAAQC,QAAQ,4CAA4C3H,QAE3D0H,EAAQE,GAAG,cAEZP,EAAWjB,QAAQ,SACnBiB,EAAWQ,SAEf,EAEAR,EAAWtM,SAEX4L,EAAgDU,EAAWhB,IAEpDgB,CACT,CCrKO,SAASS,EAAgBlT,GAG5B,IAFFmT,EAA0BnT,EAA1BmT,2BACAC,EAAapT,EAAboT,cAEA,IAAKD,EAA4B,OAAO,EAExC,IACEE,EAEEF,EAFFE,YACAC,EACEH,EADFG,cAGF,OAAQD,GACN,IAAK,SACH,OAAO5O,IAAAA,SAAW6O,EAAeF,GACnC,IAAK,kBACL,IAAK,gBACL,IAAK,kBACH,OAAO,EACT,QACE,MAAM,IAAIG,MAAM,6BAADpM,OAA8BkM,IAEnD,CAMO,SAASG,EAAiBvR,GAC/B,OAAOA,EAAOW,IAAI,eAAe8I,EACnC,CC1Be,SAAS+H,EAAUzL,GAChC,IACEwC,EAGExC,EAHFwC,SACAkJ,EAEE1L,EAFF0L,MACAC,EACE3L,EADF2L,QAGIC,EAAK5L,EAAM4L,IAAMnP,IAAAA,SAAW,eAElC,OACE8F,EAAAA,EAAAA,MAAA,OAAKvJ,UAAU,aAAYwJ,SAAA,EACzBhK,EAAAA,EAAAA,KAAA,SACEQ,UAAU,gBACV6S,QAASD,EACTA,GAAID,EAAQnJ,SAEXkJ,KAEHlT,EAAAA,EAAAA,KAAA,OAAKoT,GAAIA,EAAGpJ,SACTA,MAIT,CASAiJ,EAAUpG,aAAe,CACvBuG,GAAI,KACJD,aAAS/D,GC/B0B,ICyDjCkE,EDvDiBC,EAAoB,SAAAC,GACvC,SAAAD,EAAY3P,GAAU,IAADoI,GAAAV,EAAAA,EAAAA,GAAA,KAAAiI,GACnB,IACEE,EAIE7P,EAJF6P,aACAhS,EAGEmC,EAHFnC,OACAhC,EAEEmE,EAFFnE,KACAiU,EACE9P,EADF8P,UAEI7T,EAAO+D,EAAQ+P,YAAc/P,EAAQ/D,KACrC+T,EAAW,IAAIxI,EAAAA,EAAuB,CAAEvL,KAAAA,KAE9CmM,GAAAC,EAAAA,EAAAA,GAAA,KAAAsH,EAAA,CAAM,CACJpP,KAAM,iBACNqN,SAAU,CAAC,6BAA8B,OAAQ,YAAa,WAC9D5R,MAAOC,EAAKoB,UAAU,mDAGnBpB,KAAOA,EACZmM,EAAK4H,SAAWA,EAChB5H,EAAKvM,KAAOA,EAoBS,OAArBuM,EAAKyE,OAlBU,SAAAjJ,GAAK,OAClBxH,EAAAA,EAAAA,KAAC6T,EAAAA,EAAkC,CACjCJ,aAAcA,EACd1F,KAAMvG,EAAMW,MACZyK,cAAeI,EAAiBvR,GAChCqS,OAAQ,IAAIC,EAAAA,WAAW,CAAElU,KAAAA,IACzBA,KAAMA,EACNmO,SAAUxG,EAAMwG,SAChBiF,UAAWA,EACXS,UAAWA,GACX,EAQiB1H,CACvB,CAAC,OAAAI,EAAAA,EAAAA,GAAAmH,EAAAC,IAAAnI,EAAAA,EAAAA,GAAAkI,EAAA,EAAA7H,IAAA,eAAAC,MAED,SAAYnM,GAMV,MAAO,CACLmT,2BANwBnT,EAA1BmT,2BAOEqB,KANExU,EAAJwU,KAOEC,UANOzU,EAATyU,UAOEC,QANK1U,EAAP0U,QAQF,GAAC,CAAAxI,IAAA,WAAAC,MAED,SAAQnI,GAAsB,IAAnBwJ,EAAIxJ,EAAJwJ,KAAMoE,EAAQ5N,EAAR4N,SACf,OAAOD,EAAY,CACjBnE,KAAAA,EACAwE,SAAU,CAAC,6BAA8B,OAAQ,YAAa,WAE9Df,OAAQlF,KAAKkF,OAEb5Q,KAAM0L,KAAK1L,KACXJ,KAAM8L,KAAK9L,KACX2R,SAAAA,GAEJ,GAAC,CAAA1F,IAAA,WAAAC,MAED,SAAQjI,GAAuB,IAAXsQ,EAAItQ,EAAbiI,MAASqI,KAClB,OAAOzI,KAAKqI,SAASO,WAAWH,EAClC,IAAC,CAvEsC,CAASI,EAAAA,I,qBCLlD,SAASC,EAAyB7U,GAG9B,IAFFoT,EAAapT,EAAboT,cACA0B,EAAI9U,EAAJ8U,KAEMxB,EAAgB7O,IAAAA,QAAUqQ,EAAM1B,GAEtC,OAAO3O,IAAAA,QAAU6O,GAAiB,KAAO,CACvC,cAAe,yCACfD,YAAa,SACbC,cAAAA,EAEJ,CAmDe,SAASyB,EAAWhM,GAM/B,IALFhG,EAAQgG,EAARhG,SACAqQ,EAAarK,EAAbqK,cACA/S,EAAI0I,EAAJ1I,KACAJ,EAAI8I,EAAJ9I,KACAiU,EAASnL,EAATmL,UAIA,OA1DF,SAA0BlQ,GAMtB,IALFmP,EAA0BnP,EAA1BmP,2BACAC,EAAapP,EAAboP,cACA/S,EAAI2D,EAAJ3D,KACA2U,EAAIhR,EAAJgR,KACAd,EAASlQ,EAATkQ,UAEA,IAAKhB,EAAiB,CACpBC,2BAAAA,EACAC,cAAAA,IAEA,OAAO6B,IAAAA,OAAe,IAAI1B,MAAMlT,EAAKoB,UAAU,kEAAmE,CAChHyT,OAAQF,MAIZ,IACE3B,EACEF,EADFE,YAGF,GAAoB,oBAAhBA,EACF,OAAO4B,IAAAA,QAAgB,MAGzB,GAAoB,oBAAhB5B,GAAqD,kBAAhBA,EACvC,OAAOa,IAAYnQ,MAAK,SAAAoR,GAAK,OAAIN,EAA0B,CACzDzB,cAAAA,EACA0B,KAAMrQ,IAAAA,IAAM0Q,GAAO,SAAAjR,GAAK,OAAAA,EAAFwH,EAAW,KACjC,IAAE4G,OAAM,WACR,MAAM,IAAIiB,MAAMlT,EAAKoB,UAAU,8DACjC,IAGF,GAAoB,WAAhB4R,EAA0B,CAC5B,IACEC,EACEH,EADFG,cAGF,OAAO2B,IAAAA,QAAgBJ,EAA0B,CAC/CzB,cAAAA,EACA0B,KAAMxB,IAEV,CAEA,MAAM,IAAIC,MAAM,6BAADpM,OAA8BkM,GAC/C,CAaS+B,CAAkB,CACvBjC,2BAHqCpQ,EAA/BoQ,2BAINC,cAAAA,EACA/S,KAAAA,EACA2U,KAAMjS,EAASiS,KACfd,UAAAA,IACCnQ,MAAK,SAAAsR,GAA6B,OAAI7E,EAAK,CAC5CzN,SAAU0B,IAAAA,SAAW,CACnB0O,2BAA4BkC,GAC3BtS,GACH9C,KAAAA,GACA,IAAE8D,MAAK,WACPuR,OAAOC,IAAIC,MAAMC,YAAYC,kBAAkBrV,EAAKoB,UAAU,uDAAwD,CACpHyT,OAAQnS,EAASiS,OAErB,IAAG1C,OAAM,WACPwB,EAAUwB,OAAOC,IAAIC,MAAMC,YAAYE,UAAUtV,EAAKoB,UAAU,oDAAqD,CACnHyT,OAAQnS,EAASiS,OACflB,EACN,GACF,C,eC5Fe,SAAS8B,EAAa5V,GAEjC,IADF4R,EAAQ5R,EAAR4R,SAAUC,EAAuB7R,EAAvB6R,wBAAyBrE,EAAIxN,EAAJwN,KAAMvN,EAAID,EAAJC,KAAMI,EAAIL,EAAJK,KAAMwV,EAAM7V,EAAN6V,OAAQ7Q,EAAMhF,EAANgF,OAE7D8Q,EAAAA,OAAmB,CACjBlE,SAAAA,EACAC,wBAAAA,EACAxR,KAAAA,EACA2E,OAAAA,EACA2D,MAAO6E,EACPqI,OAAAA,EACAE,WAAW,EACXC,SAAU,SACVC,UAAW,SAAClT,EAAU0P,GAAU,OAC9BjC,EAAK,CACHzN,SAAAA,EACA9C,KAAAA,IAEC8D,MAAK,kBAAM0O,EAAWjB,QAAQ,OAAO,IACrCc,OAAM,SAACC,GACNE,EAAWyD,WAAWC,UAAU1R,IAAAA,QAAU8N,EAAO,YACnD,GAAE,GAEV,C,mHCrBuB6D,EAAAA,QAAfC,U,iRCLKC,EAAY,SAAC7R,GAAC,IAAuB8R,GAAvBhF,UAAAnG,OAAA,QAAAwE,IAAA2B,UAAA,GAAAA,UAAA,GAAqB,CAAC,GAAlBiF,QAAAA,OAAO,IAAAD,EAAG,CAAC,EAACA,EAAA,MAAa,CACtDE,oBAAqB,CACnBC,OAAQ,OACRC,QAAS,OACTC,cAAe,SACfC,WAAY,SACZC,eAAgB,SAEhB,8BAA+B,CAC7BH,QAAS,OACTC,cAAe,SACfC,WAAY,SACZC,eAAgB,SAChBC,IAAK,OACLC,SAAU,QACVC,UAAW,SAGb,mBAAoB,CAClBD,SAAU,QACVE,UAAW,WAIfC,mBAAoB,CAClBR,QAAS,OACTC,cAAe,SACfQ,YAAa,QACbC,aAAc,OAEd,oBAAqB,CACnBC,WAAY,MACZC,cAAe,OAGjB,oCAAqC,CACnCZ,QAAS,OACTE,WAAY,SACZH,OAAQ,OACRc,SAAU,OACVC,eAAgB,OAGlB,oCAAqC,CACnCd,QAAS,OACTE,WAAY,SACZa,UAAW,OACXF,SAAU,OACVG,WAAY,MACZ,qBAAsB,CACpBP,YAAa,QAIjB,qCAAsC,CACpCT,QAAS,OACTC,cAAe,SACfF,OAAQ,eAGV,oCAAqC,CACnCC,QAAS,OACTE,WAAY,SACZH,OAAQ,OACRc,SAAU,OACVC,eAAgB,QAIpBG,YAAa,CACXC,MAAOrB,EAAQsB,eACfC,WAAYvB,EAAQwB,MACpBrB,QAAS,OACTsB,oBAAqB,iBACrBC,MAAO,OACPxB,OAAQ,cACRgB,UAAW,IACXS,UAAW,6EACXC,OAAQ,sBACRC,aAAc,MAEd,0BAA2B,CACzBf,WAAY,MACZC,cAAe,MACfH,YAAa,OACbC,aAAc,OACdV,QAAS,OACT2B,iBAAkB,cAClBzB,WAAY,SAEZ,iBAAkB,CAChBF,QAAS,OACTC,cAAe,eAGjB,oBAAqB,CACnBD,QAAS,OACTsB,oBAAqB,WACrBC,MAAO,yBACPK,aAAc,YAEd,mBAAoB,CAClB5B,QAAS,OACTC,cAAe,cAEfe,WAAY,MACZH,SAAU,OACVgB,WAAY,SAKhB,mBAAoB,CAClBb,WAAY,MACZH,SAAU,OACVgB,WAAY,QAGd,kBAAmB,CACjBb,WAAY,MACZH,SAAU,OACVgB,WAAY,UAMlBC,UAAW,CACTnB,WAAY,OACZX,QAAS,OACTsB,oBAAqB,iBACrBS,QAAS,MACTR,MAAO,OAEP,uBAAwB,CACtBvB,QAAS,OACTC,cAAe,SACfG,IAAK,QAIT4B,cAAe,CACbR,UAAW,6BACXxB,QAAS,OACT2B,iBAAkB,gBAClBZ,UAAW,QACXb,WAAY,SAEZ,2BAA4B,CAC1BF,QAAS,OACTD,OAAQ,yBACRG,WAAY,SACZO,YAAa,OACbC,aAAc,OACdc,UAAW,6BAGb,kBAAmB,CACjBS,WAAY,WACZC,UAAW,SACXlB,WAAY,IACZH,SAAU,GACVgB,WAAY,IAEd,qBAAsB,CACpB7B,QAAS,OACTD,OAAQ,yBACRG,WAAY,SACZO,YAAa,OACbC,aAAc,QAGhB,mBAAoB,CAClBV,QAAS,OACTD,OAAQ,yBACRG,WAAY,SACZC,eAAgB,UAElB,qBAAsB,CACpBoB,MAAO,MACPZ,WAAY,QAIjB,ECxLYwB,EAAyB,SAACC,GACrC,IAAMlX,EAAQ,IAAImX,YAAY,0BAA2B,CAAEC,OAAQ,CAAEF,OAAAA,KACrElZ,SAASqZ,cAAcrX,EACzB,E,YCUM4U,EAAsB,SAAHzW,GAElB,IADLK,EAAIL,EAAJK,KAAM8Y,EAAanZ,EAAbmZ,cAAehR,EAAGnI,EAAHmI,IAAKsD,EAAKzL,EAALyL,MAEpB2N,GAAUC,EAAAA,EAAAA,kBAAiB/C,GACjCgD,GAAmEC,EAAAA,EAAAA,IAAW,GAAMC,GAAApP,EAAAA,EAAAA,GAAAkP,EAAA,GAA7EG,EAAWD,EAAA,GAAAE,EAAAF,EAAA,GAAaG,EAASD,EAAlBE,QAA8BC,EAASH,EAAnBI,SACpClT,GAAkBmT,EAAAA,EAAAA,YAAWC,EAAAA,wBAC3BC,GAAaC,EAAAA,EAAAA,UAAQ,kBAAMtT,EAAgBuT,0BAA0B,CAC3EC,aAAc,mBACdC,aAAc,4BACd,GAAE,CAACzT,IAHGqT,SAKFK,GAAQC,EAAAA,EAAAA,YACRC,GAAgBC,EAAAA,EAAAA,gBAAe,CACnCpZ,UAAW,CACT6W,MAAO,MACPwC,SAAU,gBACV7D,WAAY,WAEd8D,OAAQ,CACNL,EAAMM,MAAMC,OACZ,CACEC,KAAM,WACNC,UAAU,aAAD5T,OAAemT,EAAM9D,QAAQwE,cACtCnD,MAAOyC,EAAM9D,QAAQsB,eACrBnB,QAAS,OACTE,WAAY,SACZoE,QAAS,wBAGbC,KAAM,CACJJ,KAAM,WACNG,QAAS,mBACTE,UAAW,UAEbC,OAAQ,CACNzE,QAAS,OACTsE,QAAS,mBACT,YAAa,CACXI,YAAa,UASbC,GAAWpB,EAAAA,EAAAA,UAAQ,iBAAO,CAC9B9Z,MAAOC,EAAKoB,UAAU8Z,oCACtBjT,YAAajI,EAAKoB,UAAU8Z,qIAC5BhT,WAAYlI,EAAKoB,UAAU8Z,oCAC3BC,wBAAyBnb,EAAKoB,UAAU8Z,mEACxCE,YAAapb,EAAKoB,UAAU8Z,6BAC5BG,UAAWrb,EAAKoB,UAAU8Z,sHAC3B,GAAG,CAAClb,IAECsb,EAAgB,WACAxT,EACjByT,KACAhZ,IAAI,CAAEiZ,IAAK,IAAKC,OAAQ,CAAC,KAAM,0BAA2BC,YACjDhY,MAAK,SAACiY,GAChB,GAAIA,GAAeA,EAAY7P,OACzB6P,EAAY7P,MAAMf,OAAS,EAAG,CAChC,IAAM6Q,EAAOD,EAAY7P,MACnB+P,EAAUD,EAAKE,QAAO,SAACC,EAAKC,GAIhC,OAHKA,EAAIC,sBACPF,EAAInZ,KAAK,CAAEyI,GAAI2Q,EAAI3Q,GAAI4Q,sBAAsB,IAExCF,CACT,GAAG,IACH,GAAuB,IAAnBF,EAAQ9Q,OACV,OAGFjD,EACGyT,KAAK,wCACLW,UAAU,CAAEL,QAAS,CAAEN,KAAMM,KAC7BH,YACAhY,MAAK,SAACyY,GACYA,EAASrQ,MAAM0B,KAAI,SAAA4O,GAAC,OAAIA,EAAEC,MAAM,IAAEC,QAAO,SAAAF,GAAC,OAAIA,GAAKA,EAAErR,OAAS,CAAC,IAAEA,OAAS,EAEzF6O,EAAS1H,MAAM,0BAADpL,OAA2B9C,KAAKuY,UAAUJ,EAASrQ,UAGnE2M,EAAuBmD,EAAKpO,KAAI,SAAAwO,GAAG,OAAIA,EAAI3Q,EAAE,KD5FtB,SAACmR,EAAOC,GAC3C,IAAMjb,EAAQ,IAAImX,YAAY,mBAAoB,CAAEC,OAAQ,CAAE4D,MAAAA,EAAOC,WAAAA,KACrEjd,SAASqZ,cAAcrX,EACzB,CC0Fckb,CAAsBtR,EAAMuR,OAAOH,OAAO,GAC5C,IACCvK,OAAM,SAACC,GACN0H,EAAS1H,MAAMA,EACjB,GACJ,CAEJ,IAAGD,OAAM,SAACC,GACR0H,EAAS1H,MAAM,yBAADpL,OAA0BoL,GAC1C,GACF,EAEA,OACEhI,EAAAA,EAAAA,MAAA,OAAKvJ,UAAWiM,IAAW,yBAA0BmM,EAAQ3C,qBAAqBjM,SAAA,EAChFD,EAAAA,EAAAA,MAAA,OAAKvJ,UAAU,2BAA0BwJ,SAAA,EACvChK,EAAAA,EAAAA,KAAA,OAAKQ,UAAU,sDAAqDwJ,UAClEhK,EAAAA,EAAAA,KAAA,OAAKyc,IAAKC,EAAiBC,IAAI,uCAEjC3c,EAAAA,EAAAA,KAAA,OAAKQ,UAAU,sDAAqDwJ,UAClEhK,EAAAA,EAAAA,KAAA,MAAAgK,SAAK8Q,EAASlb,WAEhBI,EAAAA,EAAAA,KAAA,OAAKQ,UAAU,4DAA2DwJ,UACxEhK,EAAAA,EAAAA,KAAA,KAAAgK,SAAI8Q,EAAShT,iBAEf9H,EAAAA,EAAAA,KAAA,OAAKQ,UAAU,uDAAsDwJ,UACnEhK,EAAAA,EAAAA,KAAC4c,EAAAA,EAAa,CAACC,KAAM/B,EAAS/S,WAAYmC,QAnE5B,WACpByO,GACF,OAmEM3Y,EAAAA,EAAAA,KAAA,OAAKQ,UAAU,uDAAsDwJ,UACnEhK,EAAAA,EAAAA,KAAC8c,EAAAA,EAAa,CAACD,KAAM/B,EAASE,wBAAyB9Q,QAAS,WAAQiP,GAAa,SAIxFA,IACDpP,EAAAA,EAAAA,MAACgT,EAAAA,EAAK,CACJC,OAAQ/D,EACRgE,eAAe,EACfC,UAAW7D,EACX8D,YAAY,EACZC,mBAAoBpD,EAAcnZ,UAAUmJ,SAAA,EAE5ChK,EAAAA,EAAAA,KAAA,OAAKQ,UAAWwZ,EAAcG,OAAOnQ,SAClC8Q,EAASG,eAEZlR,EAAAA,EAAAA,MAAA,OAAKvJ,UAAWwZ,EAAcU,KAAK1Q,SAAA,IAAArD,OAC7BmU,EAASI,UAAS,MACtBlb,EAAAA,EAAAA,KAAA,KACEqd,KAAK,uDACLve,OAAO,SACPwe,IAAI,sBACJ,aAAYzd,EAAKoB,UAAU8Z,cAAoB/Q,SAE9CnK,EAAKoB,UAAU8Z,oBAGlBhR,EAAAA,EAAAA,MAAA,OAAKvJ,UAAWwZ,EAAcY,OAAO5Q,SAAA,EACrChK,EAAAA,EAAAA,KAAC4c,EAAAA,EAAa,CAAC1S,QAAS,WAAQmP,IAAa8B,GAAiB,EAAG0B,KAAMhd,EAAKoB,UAAU8Z,cACtF/a,EAAAA,EAAAA,KAAC8c,EAAAA,EAAa,CAAC5S,QAASmP,EAAWwD,KAAMhd,EAAKoB,UAAU8Z,oBAMlE,EAgBA9E,EAAoBpJ,aAAe,CACjC8L,cAAe,WAAO,GAGxB,Q,yDClLa4E,GAAuB,GAE9BC,EAAc,CAClBC,YAAa,aACbC,QAAS,SACTC,UAAW,WACXC,UAAW,YAiEAC,EAAiB,SAAC7B,EAAU8B,EAAUC,GACjD,OAAK/B,EAIQ/X,IAAAA,IAAM+X,GAAU,SAACrQ,GAG5B,MAAO,CACLqB,KAHWrB,EAAMmS,GAIjBE,MAHgBrS,EAAMoS,GAK1B,IAVS,EAaX,E,wCClFME,EAAc,SAAHze,GAAwB,IAAlB0e,EAAU1e,EAAV0e,WAEnBC,EAMED,EANFC,eACAve,EAKEse,EALFte,MACAwe,EAIEF,EAJFE,OACAC,EAGEH,EAHFG,KACAL,EAEEE,EAFFF,MACAM,EACEJ,EADFI,UAEF,OACEvU,EAAAA,EAAAA,MAAA,OAAKvJ,UAAU,uBAAsBwJ,SAAA,EACnCD,EAAAA,EAAAA,MAAA,OACEvJ,UAAU,6BACV+d,MAAO,CAAEC,YAAaL,GAAiBnU,SAAA,EAEvChK,EAAAA,EAAAA,KAAA,OAAKQ,UAAU,gBAAewJ,UAC5BhK,EAAAA,EAAAA,KAAA,QAAAgK,SACGpK,OAGLI,EAAAA,EAAAA,KAACye,EAAAA,UAAS,CACR,gBAAA9X,OAAe/G,EAAK,eACpB8e,MAAON,QAGXrU,EAAAA,EAAAA,MAAA,OAAKvJ,UAAU,4BAA2BwJ,SAAA,CACvCsU,IAAate,EAAAA,EAAAA,KAAC2e,EAAAA,EAAO,CAACC,KAAMC,EAAAA,EAAYC,UACvCR,IAAate,EAAAA,EAAAA,KAAA,QAAAgK,SAAOgU,IAAUT,EAAsB,KAAOS,QAE/Dhe,EAAAA,EAAAA,KAAA,OAAKQ,UAAU,2BAA0BwJ,UACvChK,EAAAA,EAAAA,KAAA,QAAAgK,SAAOqU,QAIf,EAaAJ,EAAYpR,aAAe,CACzBqR,WAAY,CACVC,eAAgB,OAChBve,MAAO,gBACPwe,OAAQ,GACRC,KAAM,eACNL,MAAO,IAETM,WAAW,GAGb,QCpDMS,EACe,CACjBnf,MAAOmb,sBACPsD,KAAMtD,QACNqD,OAAQ,wCACRD,eAAgB,WALdY,EAOe,CACjBnf,MAAOmb,sBACPsD,KAAMtD,UACNqD,OAAQ,oCACRD,eAAgB,WAXdY,EAaQ,CACVnf,MAAOmb,aACPsD,KAAMtD,QACNqD,OAAQ,iCACRD,eAAgB,WAKd/G,EAAc,SAAC5P,GACnB,IACE3H,EACE2H,EADF3H,KAAMmf,EACJxX,EADIwX,cAAe5Y,EACnBoB,EADmBpB,gBAAiB6Y,EACpCzX,EADoCyX,cAElCrG,GAAUC,EAAAA,EAAAA,kBAAiB/C,GAEjCoJ,ECrCK,SAAiC1f,GAEpC,IADFwf,EAAaxf,EAAbwf,cAAe5Y,EAAe5G,EAAf4G,gBAAiB6Y,EAAazf,EAAbyf,cAEhCxV,GAAwBC,EAAAA,EAAAA,UAAS6T,GAAoB5T,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA9CsE,EAAIpE,EAAA,GAAEwV,EAAOxV,EAAA,GACpByV,GAAgC1V,EAAAA,EAAAA,WAAS,GAAM2V,GAAAzV,EAAAA,EAAAA,GAAAwV,EAAA,GAAxCE,EAAQD,EAAA,GAAEE,EAAWF,EAAA,GAC5BG,GAAkC9V,EAAAA,EAAAA,WAAS,GAAM+V,GAAA7V,EAAAA,EAAAA,GAAA4V,EAAA,GAA1ClB,EAASmB,EAAA,GAAEC,EAAYD,EAAA,GAExBE,GAAUC,EAAAA,EAAAA,cAAY,SAAC7N,GAC3B3L,EAAgB2L,MAAM,8BAA+BA,EAAO,yBAC9D,GAAG,CAAC3L,IA6BJ,OA3BAyZ,EAAAA,EAAAA,YAAU,WACR,GAAKb,IACLU,GAAa,GACbH,GAAY,GAEPN,GAAL,CAEA,IAAMa,EAAsBd,EAAc,sBAe1C,OAdA5Y,EAAgB2Z,IAAI,yBAA0B,qCAAsC,0BACnDD,EAAoBvE,YAClDhY,MAAK,SAACyY,GACL5V,EAAgB2Z,IAAI,yBAAyB,kDAADpZ,OAAoDqV,GAAY,0BAC5GmD,EAAQnD,EAASgE,yBACnB,IAIClO,MAAM6N,GAASzP,SAAQ,WACtBwP,GAAa,GACbH,GAAY,EACd,IAEK,WACLO,EAAoBG,YACtB,CAnBoC,CAoBtC,GAAG,CAACjB,EAAe5Y,EAAiB6Y,EAAeU,IAE5C,CACL5R,KAAAA,EACAuR,SAAAA,EACAhB,UAAAA,EAEJ,CDHM4B,CAAyB,CAC3BlB,cAAAA,EAAe5Y,gBAAAA,EAAiB6Y,cAAAA,IAH1BkB,EAAqBjB,EAA3BnR,KACWqS,EAA8BlB,EAAzCZ,UAKF+B,EE5CK,SAAiC7gB,GAEpC,IADFwf,EAAaxf,EAAbwf,cAAe5Y,EAAe5G,EAAf4G,gBAAiB6Y,EAAazf,EAAbyf,cAEhCxV,GAAwBC,EAAAA,EAAAA,UAAS6T,GAAoB5T,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA9CsE,EAAIpE,EAAA,GAAEwV,EAAOxV,EAAA,GACpByV,GAAgC1V,EAAAA,EAAAA,WAAS,GAAM2V,GAAAzV,EAAAA,EAAAA,GAAAwV,EAAA,GAAxCE,EAAQD,EAAA,GAAEE,EAAWF,EAAA,GAC5BG,GAAkC9V,EAAAA,EAAAA,WAAS,GAAM+V,GAAA7V,EAAAA,EAAAA,GAAA4V,EAAA,GAA1ClB,EAASmB,EAAA,GAAEC,EAAYD,EAAA,GAExBE,GAAUC,EAAAA,EAAAA,cAAY,SAAC7N,GAC3B3L,EAAgB2L,MAAM,yBAA0BA,EAAO,yBACzD,GAAG,CAAC3L,IA8BJ,OA3BAyZ,EAAAA,EAAAA,YAAU,WACR,GAAKb,IAELU,GAAa,GACbH,GAAY,GAEPN,GAAL,CAEA,IAAMa,EAAsBd,EAAc,qBAc1C,OAZ2Bc,EAAoBvE,YAC5ChY,MAAK,SAACyY,GACL5V,EAAgB2Z,IAAI,yBAAyB,kDAADpZ,OAAoDqV,GAAY,0BAC5GmD,EAAQnD,EAASsE,wBACnB,IAGCxO,MAAM6N,GAASzP,SAAQ,WACtBwP,GAAa,GACbH,GAAY,EACd,IAEK,WACLO,EAAoBG,YACtB,CAlBoC,CAmBtC,GAAG,CAACN,EAASX,EAAe5Y,EAAiB6Y,IAEtC,CACLlR,KAAAA,EACAuR,SAAAA,EACAhB,UAAAA,EAEJ,CFGMiC,CAAyB,CAC3BvB,cAAAA,EAAe5Y,gBAAAA,EAAiB6Y,cAAAA,IAH1BuB,EAAqBH,EAA3BtS,KACW0S,EAA8BJ,EAAzC/B,UAKFoC,EGnDK,SAA0BlhB,GAE7B,IADFwf,EAAaxf,EAAbwf,cAAe5Y,EAAe5G,EAAf4G,gBAAiB6Y,EAAazf,EAAbyf,cAEhCxV,GAAwBC,EAAAA,EAAAA,UAAS6T,GAAoB5T,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA9CsE,EAAIpE,EAAA,GAAEwV,EAAOxV,EAAA,GACpByV,GAAgC1V,EAAAA,EAAAA,WAAS,GAAM2V,GAAAzV,EAAAA,EAAAA,GAAAwV,EAAA,GAAxCE,EAAQD,EAAA,GAAEE,EAAWF,EAAA,GAC5BG,GAAkC9V,EAAAA,EAAAA,WAAS,GAAK+V,GAAA7V,EAAAA,EAAAA,GAAA4V,EAAA,GAAzClB,EAASmB,EAAA,GAAEC,EAAYD,EAAA,GAExBE,GAAUC,EAAAA,EAAAA,cAAY,SAAC7N,GAC3B3L,EAAgB2L,MAAM,kBAAmBA,EAAO,yBAClD,GAAG,CAAC3L,IA+BJ,OA5BAyZ,EAAAA,EAAAA,YAAU,WACR,GAAKb,IAELU,GAAa,GACbH,GAAY,GAEPN,GAAL,CAEA,IAAMa,EAAsBd,EAAc,cAe1C,OAbyBc,EAAoBvE,YAC1ChY,MAAK,SAACyY,GACL5V,EAAgB2Z,IAAI,kBAAkB,yCAADpZ,OAA2CqV,GAAY,0BAC5FmD,EAAQnD,EAAS2E,gBACnB,IAGC7O,MAAM6N,GAASzP,SAAQ,WACtBwP,GAAa,GACbH,GAAY,EACd,IAGK,WACLO,EAAoBG,YACtB,CAnBoC,CAoBtC,GAAG,CAACN,EAASX,EAAe5Y,EAAiB6Y,IAEtC,CACLlR,KAAAA,EACAuR,SAAAA,EACAhB,UAAAA,EAEJ,CHSMsC,CAAkB,CACpB5B,cAAAA,EAAe5Y,gBAAAA,EAAiB6Y,cAAAA,IAH1B4B,EAAcH,EAApB3S,KACW+S,EAAuBJ,EAAlCpC,UAKIyC,EAA6BP,IAA0BjD,GAAuBiD,EAAwB,GACtGQ,EAA6BD,EAA6BE,KAAKC,MAAMV,EAAwB,IAAMA,EACnGW,EAAwBJ,EAA6BlhB,EAAKoB,UAAU8Z,WAAmBlb,EAAKoB,UAAU8Z,WAE5G,OACEhR,EAAAA,EAAAA,MAAA,OAAKvJ,UAAWiM,IAAW,iCAAkCmM,EAAQxB,aAAapN,SAAA,EAChFhK,EAAAA,EAAAA,KAACie,EAAW,CAACC,WAAY,CACvBF,MAAOmC,EACPvgB,MAAOC,EAAKoB,UAAU8d,EAA0Bnf,OAChDye,KAAMxe,EAAKoB,UAAU8d,EAA0BV,MAC/CD,OAAQW,EAA0BX,OAClCD,eAAgBY,EAA0BZ,eAC1CG,UAAW8B,MAGbpgB,EAAAA,EAAAA,KAACie,EAAW,CAACC,WAAY,CACvBF,MAAOgD,EACPphB,MAAOC,EAAKoB,UAAU8d,EAA0Bnf,OAChDye,KAAM8C,EACN/C,OAAQW,EAA0BX,OAClCD,eAAgBY,EAA0BZ,eAC1CG,UAAWmC,MAGbzgB,EAAAA,EAAAA,KAACie,EAAW,CAACC,WAAY,CACvBF,MAAO6C,EACPjhB,MAAOC,EAAKoB,UAAU8d,EAAmBnf,OACzCye,KAAMxe,EAAKoB,UAAU8d,EAAmBV,MACxCD,OAAQW,EAAmBX,OAC3BD,eAAgBY,EAAmBZ,eACnCG,UAAWwC,OAKnB,EAQA1J,EAAYvK,aAAe,CAC3B,EAEA,Q,YIzGQmJ,GAAY+D,EAAAA,EAAAA,YAAZ/D,QAGKoL,EAAgB,WAC3B,IAAMC,EAAgB,CACpBnK,UAAW,QACXQ,MAAO,QACPE,OAAQ,sBACRZ,SAAU,OACVK,MAAOrB,EAAQsB,eACfnB,QAAS,OACTsB,oBAAqB,OACrBF,WAAYvB,EAAQwB,MACpB,aAAc,6EACd,gBAAiB,OAYb8J,EAAe,CACnBvJ,aAAa,aAADpR,OAAeqP,EAAQuL,eAkB/BlhB,EAAc,CAClBgX,MAAOrB,EAAQwL,iBACf,UAAW,CACTnK,MAAOrB,EAAQwL,iBACfjK,WAAY,gBAqEhB,MAAO,CACLkK,YAlGkB,CAClB7K,YAAa,OACbC,aAAc,QAiGdyK,aAAAA,EACAI,gBA3FsB,CACtBC,QAAS,IACT7K,WAAY,OACZC,cAAe,MACfb,OAAQ,QAwFR0L,uBArF6B,CAC7BzL,QAAS,QAqFT0L,WA1BiB,CACjB1K,WAAY,MACZkB,UAAW,SACXlC,QAAS,eACT2L,SAAU,SACVC,aAAc,WACd7L,OAAQ,OACRwB,MAAO,OACPL,MAAOrB,EAAQsB,gBAmBf0K,gBAhBsB,CACtBhL,SAAU,OACV,cAAe,OACfiL,WAAY,UAcZC,gBAXsB,CACtBlL,SAAU,QAWVmL,kBArFwB,CACxBhM,QAAS,QAqFT9V,YAAAA,EACA+hB,iBA3EuB,CACvBlL,UAAW,QACXf,QAAS,OACTG,eAAgB,SAChB+L,UAAW,MACXC,aAAc,MACdlM,cAAe,SACfC,WAAY,SAEZ,qBAAsB,CACpBqB,MAAO,SAkET2J,cAAAA,EACAkB,kBAjHwB,CACxB7K,MAAO,QAiHP8K,gBAhEsB,CACtBb,QAAS,IACT,aAAc,MACd,gBAAiB,QA8DjBc,uBA5D6B,CAC7BvL,UAAW,OACXf,QAAS,OACTC,cAAe,MACfC,WAAY,SACZ,MAAO,CACLO,YAAa,OACbC,aAAc,OACdM,WAAY,MAqDduL,aAjDmB,CACnBC,gBAAiB,QACjBC,MAAO,OACP,aAAc,SACd,cAAe,MACf,YAAa,OACb,cAAe,QA4CfC,WAzCiB,CACjBC,eAAgB,aA0CpB,E,WCrIMC,EAAa,SAAHvjB,GAAA,IAAMuO,EAAIvO,EAAJuO,KAAI,OACxB/N,EAAAA,EAAAA,KAAA,OACEQ,UAAU,cACV+d,MAAO,CACLpI,QAAS,OACT2B,iBAAkB,iBAClBJ,MAAO,OACPR,UAAW,IACXX,IAAK,IACLvM,SAED/F,IAAAA,IAAM8J,GAAM,SAAAf,GAAI,OACfjD,EAAAA,EAAAA,MAAA,OACEvJ,UAAU,mBACV+d,MAAO,CACLpI,QAAS,OACTsB,oBAAqB,qBACrBlB,IAAK,EACLD,eAAgB,SAChBS,cAAe,EACfgB,aAAc,oBACdf,SAAU,IACVhN,SAAA,EAEFhK,EAAAA,EAAAA,KAAA,OAAKQ,UAAU,yBAAyB+d,MAAO,CAAEoE,gBAAiB3V,EAAKqK,UACvErX,EAAAA,EAAAA,KAAA,OACEQ,UAAU,wBACV+d,MAAO,CACL3H,YAAa,GACbF,UAAW,QACX1M,SACFgD,EAAK7I,QAEPnE,EAAAA,EAAAA,KAAA,OACEQ,UAAU,8BACV+d,MAAO,CACL1D,YAAa,MACbnE,UAAW,SACX1M,SAAA,GAAArD,OACCqG,EAAKgW,WAAU,QAEpBhjB,EAAAA,EAAAA,KAAA,OACEQ,UAAU,0BACV+d,MAAO,CACL1D,YAAa,MACbnE,UAAW,SACX1M,SACFgD,EAAKiW,MAEH,KAEJ,EAGFC,EAAa,SAAH1f,GAAiC,IAA3BuK,EAAIvK,EAAJuK,KAAMoV,EAAa3f,EAAb2f,cACpBC,EAAa,CACjBC,MAAO,CACLpZ,KAAM,MACNiM,OAAQ,IACRoN,OAAQ,CAAC,EAAG,EAAG,EAAG,IAEpBC,QAAS,CACPC,SAAS,GAEXC,YAAa,CACXC,IAAK,CACHC,kBAAkB,EAClBnF,YAAa,KACboF,WAAY,CACVJ,SAAS,GAEXK,SAAU,IACVC,WAAY,EACZlF,KAAM,IACNmF,OAAQ,CACNC,MAAO,CACLR,SAAS,KAIfS,OAAQ,CACNC,WAAW,IAGftkB,MAAO,CACLid,KAAM,MAERoH,OAAQ,CAAC,CACPha,KAAM,MACN8D,KAAAA,EACAoW,cAAc,EACdC,UAAW,QAEbC,OAAQ,CACNb,SAAS,EACTc,aAAc,GACdC,UAAW,CACTpN,WAAY,WAEdqN,aAAc,GAEhBC,QAAS,CACPC,eAAe,EACf/B,gBAAiB,UACjBgC,YAAa,EACbC,SAAU,EACVC,MAAO,SACPC,YAAa,iHAIjB,OACE/a,EAAAA,EAAAA,MAACgb,EAAAA,SAAQ,CAAA/a,SAAA,EACPhK,EAAAA,EAAAA,KAACglB,EAAAA,sBAAqB,CAACxkB,UAAW2iB,EAAevf,QAASwf,KAC1DpjB,EAAAA,EAAAA,KAAC+iB,EAAU,CAAChV,KAAMA,MAGxB,EAEA,IAeAmV,EAAWrW,aAAe,CACxBsW,cAAe,mBCvIjB,IAAM8B,EAAU,CACdC,GAAI,CACF/gB,KAAM4W,KACN1D,MAAO,WAET8N,OAAQ,CACNhhB,KAAM4W,SACN1D,MAAO,WAET+N,OAAQ,CACNjhB,KAAM4W,SACN1D,MAAO,WAETgO,MAAO,CACLlhB,KAAM4W,QACN1D,MAAO,WAGT,SAAU,CACRlT,KAAM4W,SACN1D,MAAO,WAET,SAAU,CACRlT,KAAM4W,SACN1D,MAAO,YAILiO,EAAe,SAAC9d,GACpB,IACE3H,EACE2H,EADF3H,KAAMkO,EACJvG,EADIuG,KAGFwX,GAAa7L,EAAAA,EAAAA,UAAQ,kBAAMzV,IAAAA,OAAS8J,GAAM,SAACyX,EAAMxY,GAAI,OAAKwY,EAAOxY,EAAKgR,KAAK,GAAE,EAAE,GAAE,CAACjQ,IAElF0X,GAAgB/L,EAAAA,EAAAA,UAAQ,WAW5B,OATezV,IAAAA,IAAM8J,GAAM,SAACf,GAC1B,IAAM0Y,EAAST,EAAQjY,EAAKA,MAAQiY,EAAQjY,EAAKA,MAAQiY,EAAQI,MACjE,MAAO,CACLlhB,KAAMtE,EAAKoB,UAAUykB,EAAOvhB,MAC5B8e,EAAGjW,EAAKgR,MACR3G,MAAOqO,EAAOrO,MACd2L,WAAY/B,KAAK0E,MAAO3Y,EAAKgR,MAAQuH,EAAc,KAEvD,GAEF,GAAG,CAACxX,EAAMlO,EAAM0lB,IAEhB,OACEvlB,EAAAA,EAAAA,KAAC+kB,EAAAA,SAAQ,CAAA/a,UACPhK,EAAAA,EAAAA,KAACkjB,EAAU,CAACnV,KAAM0X,KAGxB,EAaAH,EAAazY,aAAe,CAC1BkB,KAAM,CACJ,CAAEf,KAAM,UAAWgR,MAAO,KAC1B,CAAEhR,KAAM,UAAWgR,MAAO,OAI9B,Q,YCzEM4H,EAAY,SAAHpmB,GAA6B,IAAvBwN,EAAIxN,EAAJwN,KAAM6Y,EAASrmB,EAATqmB,UACnBC,EAAY,CAChBlmB,WAAOwP,EACPmU,QAAS,CACPC,SAAS,GAEXH,MAAO,CACLpZ,KAAM,MACNiM,OAAQ,OACRoN,OAAQ,CAAC,EAAG,EAAG,EAAG,IAGpByC,MAAO,CACLC,WAAW,EACXC,WAAY,EACZC,UAAW,EACXC,OAAQ,CACN3C,SAAS,GAEX4C,WAAY,CAACpZ,EAAK7I,OAGpBkiB,MAAO,CACL/W,IAAK,EACLR,IAAiB,KAAZ+W,EACLS,cAAe,EACfH,OAAQ,CACN3C,SAAS,IAIba,OAAQ,CACNb,SAAS,GAGXiB,QAAS,CACPjB,SAAS,GAGXS,OAAQ,CAAC,CACP9f,KAAM6I,EAAK7I,KACXoiB,cAAc,EACdxY,KAAM,CAACf,EAAKiW,GACZ5L,MAAOrK,EAAKqK,QAGdoM,YAAa,CACX+C,IAAK,CACH5C,WAAY,CACVJ,SAAS,IAGbS,OAAQ,CACNwC,aAAc,EACdC,aAAc,KAMpB,OAAQ1mB,EAAAA,EAAAA,KAACglB,EAAAA,sBAAqB,CAACphB,QAASkiB,GAC1C,EAEMa,EAAW,SAAHnjB,GAAuC,IAAjCuK,EAAIvK,EAAJuK,KAAMoV,EAAa3f,EAAb2f,cAAetjB,EAAI2D,EAAJ3D,KACvC4J,GAA4CC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAApDmd,EAAcjd,EAAA,GAAEkd,EAAiBld,EAAA,GAClCmd,EAAa/Y,EAAKnD,OAClBmc,GAAmBrN,EAAAA,EAAAA,UAAQ,kBAAMoN,EAAa,CAAC,GAAE,CAACA,IAClDE,GAAatN,EAAAA,EAAAA,UAAQ,kBAAOkN,EAAiB7Y,EAAO9J,IAAAA,MAAQ8J,EAAM,EAAE,GAAG,CAACA,EAAM6Y,IAC9Ef,EAAY5hB,IAAAA,IAAM8J,GAAM,SAAAf,GAAI,OAAIA,EAAKiW,CAAC,IACtCgE,GAAYvN,EAAAA,EAAAA,UAAQ,kBAAM7Z,EAAKoB,UAAU2lB,EAAiB7L,YAAoBA,YAAkB,GAAE,CAAClb,EAAM+mB,IAE/G,OACE7c,EAAAA,EAAAA,MAAA,OAAKvJ,UAAW2iB,EAAcnZ,SAAA,CAE1B/F,IAAAA,IAAM+iB,GAAY,SAAAha,GAAI,OACpBjD,EAAAA,EAAAA,MAACgb,EAAAA,SAAQ,CAAA/a,SAAA,EACPhK,EAAAA,EAAAA,KAAA,OACEQ,UAAU,kBACV+d,MAAO,CACLzH,WAAY,GACZC,cAAe,GACf/M,SACFgD,EAAK7I,QAEPnE,EAAAA,EAAAA,KAAC4lB,EAAS,CAAC5Y,KAAMA,EAAM6Y,UAAWA,EAAU5C,MACnC,KAGfjjB,EAAAA,EAAAA,KAAA,OAAKQ,UAAU,yBAAwBwJ,SAErC+c,IACA/mB,EAAAA,EAAAA,KAACknB,EAAAA,EAAI,CAAChd,QAAS,WAAF,OAAQ2c,GAAmBD,EAAe,EAAC5c,SACrDid,QAMX,EAEA,IAeAN,EAAS9Z,aAAe,CACtBsW,cAAe,mBC1HV,IAAMgE,GAAmB,SAAAtnB,GAAI,MAAK,CACvCunB,YAAavnB,EAAKoB,UAAU8Z,eAC5B,mBAAiBlb,EAAKoB,UAAU8Z,oBAChCsM,QAASxnB,EAAKoB,UAAU8Z,WACxBuM,QAASznB,EAAKoB,UAAU8Z,WACxB,iBAAkBlb,EAAKoB,UAAU8Z,kBACjCwM,QAAS1nB,EAAKoB,UAAU8Z,WACxByM,OAAQ3nB,EAAKoB,UAAU8Z,UACvB0M,SAAU5nB,EAAKoB,UAAU8Z,YACzB2M,WAAY7nB,EAAKoB,UAAU8Z,cAC3B,sBAAuBlb,EAAKoB,UAAU8Z,uBACtC4M,UAAW9nB,EAAKoB,UAAU8Z,aAC1B6M,QAAS/nB,EAAKoB,UAAU8Z,WACxB8M,MAAOhoB,EAAKoB,UAAU8Z,SACtB+M,UAAWjoB,EAAKoB,UAAU8Z,aAC1BgN,QAASloB,EAAKoB,UAAU8Z,WACxBiN,WAAYnoB,EAAKoB,UAAU8Z,cAC3BkN,QAASpoB,EAAKoB,UAAU8Z,WACxBmN,QAASroB,EAAKoB,UAAU8Z,WACxBoN,WAAYtoB,EAAKoB,UAAU8Z,cAC3BqN,SAAUvoB,EAAKoB,UAAU8Z,YACzBsN,QAASxoB,EAAKoB,UAAU8Z,WACxBuN,QAASzoB,EAAKoB,UAAU8Z,WACxBwN,OAAQ1oB,EAAKoB,UAAU8Z,UACvByN,MAAO3oB,EAAKoB,UAAU8Z,SACtB0N,QAAS5oB,EAAKoB,UAAU8Z,WACxB2N,OAAQ7oB,EAAKoB,UAAU8Z,UACvB4N,QAAS9oB,EAAKoB,UAAU8Z,WACxB6N,QAAS/oB,EAAKoB,UAAU8Z,WACxB,yBAA0Blb,EAAKoB,UAAU8Z,0BACzC8N,SAAUhpB,EAAKoB,UAAU8Z,YACzB,gBAAiBlb,EAAKoB,UAAU8Z,iBAChC+N,OAAQjpB,EAAKoB,UAAU8Z,UACvB,iCAAkClb,EAAKoB,UAAU8Z,kCACjDgO,OAAQlpB,EAAKoB,UAAU8Z,UACvBiO,SAAUnpB,EAAKoB,UAAU8Z,YACzB,eAAgBlb,EAAKoB,UAAU8Z,gBAC/BkO,QAASppB,EAAKoB,UAAU8Z,WACxBmO,SAAUrpB,EAAKoB,UAAU8Z,YACzBoO,SAAUtpB,EAAKoB,UAAU8Z,YACzBqO,OAAQvpB,EAAKoB,UAAU8Z,UACvB,aAAclb,EAAKoB,UAAU8Z,cAC7B,iBAAkBlb,EAAKoB,UAAU8Z,kBACjC,2BAA4Blb,EAAKoB,UAAU8Z,4BAC3CsO,KAAMxpB,EAAKoB,UAAU8Z,QACrBuO,MAAOzpB,EAAKoB,UAAU8Z,SACtBwO,MAAO1pB,EAAKoB,UAAU8Z,SACtB,mBAAoBlb,EAAKoB,UAAU8Z,oBACnC,0BAA2Blb,EAAKoB,UAAU8Z,2BAC1CyO,SAAU3pB,EAAKoB,UAAU8Z,YACzB0O,QAAS5pB,EAAKoB,UAAU8Z,WACxB2O,MAAO7pB,EAAKoB,UAAU8Z,SACtB,cAAelb,EAAKoB,UAAU8Z,eAC9B,eAAgBlb,EAAKoB,UAAU8Z,gBAC/B,aAAclb,EAAKoB,UAAU8Z,cAC7B,mBAAiBlb,EAAKoB,UAAU8Z,oBAChC4O,QAAS9pB,EAAKoB,UAAU8Z,WACxB6O,KAAM/pB,EAAKoB,UAAU8Z,QACrB8O,aAAShqB,EAAKoB,UAAU8Z,cACxB+O,OAAQjqB,EAAKoB,UAAU8Z,UACvB,iBAAkBlb,EAAKoB,UAAU8Z,kBACjCgP,QAASlqB,EAAKoB,UAAU8Z,WACxBiP,SAAUnqB,EAAKoB,UAAU8Z,YACzBkP,SAAUpqB,EAAKoB,UAAU8Z,YACzB,qBAAsBlb,EAAKoB,UAAU8Z,sBACrCmP,QAASrqB,EAAKoB,UAAU8Z,WACxBoP,MAAOtqB,EAAKoB,UAAU8Z,SACtB,cAAelb,EAAKoB,UAAU8Z,eAC9B,oBAAqBlb,EAAKoB,UAAU8Z,qBACpCqP,QAASvqB,EAAKoB,UAAU8Z,WACxBsP,QAASxqB,EAAKoB,UAAU8Z,WACxBuP,SAAUzqB,EAAKoB,UAAU8Z,YACzB,mBAAoBlb,EAAKoB,UAAU8Z,oBACnC,gBAAiBlb,EAAKoB,UAAU8Z,iBAChCwP,KAAM1qB,EAAKoB,UAAU8Z,QACrByP,QAAS3qB,EAAKoB,UAAU8Z,WACxB0P,OAAQ5qB,EAAKoB,UAAU8Z,UACvB,gBAAiBlb,EAAKoB,UAAU8Z,iBAChC,mBAAoBlb,EAAKoB,UAAU8Z,oBACnC,8BAA+Blb,EAAKoB,UAAU8Z,+BAC9C2P,MAAO7qB,EAAKoB,UAAU8Z,SACtB4P,OAAQ9qB,EAAKoB,UAAU8Z,UACvB6P,QAAS/qB,EAAKoB,UAAU8Z,WACxB8P,QAAShrB,EAAKoB,UAAU8Z,WACxB+P,MAAOjrB,EAAKoB,UAAU8Z,SACtBgQ,UAAWlrB,EAAKoB,UAAU8Z,aAC1BiQ,OAAQnrB,EAAKoB,UAAU8Z,UACvBkQ,UAAWprB,EAAKoB,UAAU8Z,aAC1BmQ,QAASrrB,EAAKoB,UAAU8Z,WACxBoQ,WAAYtrB,EAAKoB,UAAU8Z,cAC3BqQ,KAAMvrB,EAAKoB,UAAU8Z,QACrBsQ,UAAWxrB,EAAKoB,UAAU8Z,aAC1BuQ,SAAUzrB,EAAKoB,UAAU8Z,YACzBwQ,OAAQ1rB,EAAKoB,UAAU8Z,UACvB,gBAAiBlb,EAAKoB,UAAU8Z,iBAChCyQ,OAAQ3rB,EAAKoB,UAAU8Z,UACvB0Q,MAAO5rB,EAAKoB,UAAU8Z,SACtB,oCAAqClb,EAAKoB,UAAU8Z,qCACpD,gCAAiClb,EAAKoB,UAAU8Z,iCAChD2Q,SAAU7rB,EAAKoB,UAAU8Z,YACzB,gBAAiBlb,EAAKoB,UAAU8Z,iBAChC4Q,QAAS9rB,EAAKoB,UAAU8Z,WACxB6Q,QAAS/rB,EAAKoB,UAAU8Z,WACxB8Q,MAAOhsB,EAAKoB,UAAU8Z,SACtB+Q,UAAWjsB,EAAKoB,UAAU8Z,aAC1BgR,KAAMlsB,EAAKoB,UAAU8Z,QACrBiR,KAAMnsB,EAAKoB,UAAU8Z,QACrBkR,QAASpsB,EAAKoB,UAAU8Z,WACxB,cAAelb,EAAKoB,UAAU8Z,eAC9BmR,OAAQrsB,EAAKoB,UAAU8Z,UACvBoR,MAAOtsB,EAAKoB,UAAU8Z,SACtBqR,QAASvsB,EAAKoB,UAAU8Z,WACxBsR,MAAOxsB,EAAKoB,UAAU8Z,SACtBuR,OAAQzsB,EAAKoB,UAAU8Z,UACvBwR,OAAQ1sB,EAAKoB,UAAU8Z,UACvByR,WAAY3sB,EAAKoB,UAAU8Z,cAC3B0R,MAAO5sB,EAAKoB,UAAU8Z,SACtB2R,SAAU7sB,EAAKoB,UAAU8Z,YACzB,cAAelb,EAAKoB,UAAU8Z,eAC9B4R,MAAO9sB,EAAKoB,UAAU8Z,SACtB6R,OAAQ/sB,EAAKoB,UAAU8Z,UACvB8R,WAAYhtB,EAAKoB,UAAU8Z,cAC3B+R,KAAMjtB,EAAKoB,UAAU8Z,QACrBgS,OAAQltB,EAAKoB,UAAU8Z,UACvBiS,QAASntB,EAAKoB,UAAU8Z,WACxBkS,QAASptB,EAAKoB,UAAU8Z,WACxBmS,QAASrtB,EAAKoB,UAAU8Z,WACxBoS,MAAOttB,EAAKoB,UAAU8Z,SACtBqS,cAAevtB,EAAKoB,UAAU8Z,iBAC9BsS,UAAWxtB,EAAKoB,UAAU8Z,aAC1BuS,WAAYztB,EAAKoB,UAAU8Z,cAC3B,YAAalb,EAAKoB,UAAU8Z,aAC5B,kBAAmBlb,EAAKoB,UAAU8Z,mBAClCwS,WAAY1tB,EAAKoB,UAAU8Z,cAC3ByS,OAAQ3tB,EAAKoB,UAAU8Z,UACvB0S,SAAU5tB,EAAKoB,UAAU8Z,YACzB2S,SAAU7tB,EAAKoB,UAAU8Z,YACzB4S,KAAM9tB,EAAKoB,UAAU8Z,QACrB6S,MAAO/tB,EAAKoB,UAAU8Z,SACtB,mBAAoBlb,EAAKoB,UAAU8Z,oBACnC8S,WAAYhuB,EAAKoB,UAAU8Z,cAC3B+S,WAAYjuB,EAAKoB,UAAU8Z,cAC3BgT,UAAWluB,EAAKoB,UAAU8Z,aAC1BiT,QAASnuB,EAAKoB,UAAU8Z,WACxBkT,OAAQpuB,EAAKoB,UAAU8Z,UACvBmT,WAAYruB,EAAKoB,UAAU8Z,cAC3BoT,QAAStuB,EAAKoB,UAAU8Z,WACxBqT,OAAQvuB,EAAKoB,UAAU8Z,UACvBsT,SAAUxuB,EAAKoB,UAAU8Z,YACzBuT,WAAYzuB,EAAKoB,UAAU8Z,cAC3BwT,WAAY1uB,EAAKoB,UAAU8Z,cAC3ByT,QAAS3uB,EAAKoB,UAAU8Z,WACxB0T,WAAY5uB,EAAKoB,UAAU8Z,cAC3B2T,QAAS7uB,EAAKoB,UAAU8Z,WACxB4T,QAAS9uB,EAAKoB,UAAU8Z,WACxB6T,MAAO/uB,EAAKoB,UAAU8Z,SACtB8T,MAAOhvB,EAAKoB,UAAU8Z,SACtB+T,YAAajvB,EAAKoB,UAAU8Z,eAC5B,gBAAiBlb,EAAKoB,UAAU8Z,iBAChC,cAAelb,EAAKoB,UAAU8Z,eAC9BgU,UAAWlvB,EAAKoB,UAAU8Z,aAC1BiU,MAAOnvB,EAAKoB,UAAU8Z,SACtBkU,QAASpvB,EAAKoB,UAAU8Z,WACxBmU,KAAMrvB,EAAKoB,UAAU8Z,QACrB,iBAAkBlb,EAAKoB,UAAU8Z,kBACjC,2BAA4Blb,EAAKoB,UAAU8Z,4BAC3CoU,OAAQtvB,EAAKoB,UAAU8Z,UACvBqU,KAAMvvB,EAAKoB,UAAU8Z,QACrBsU,SAAUxvB,EAAKoB,UAAU8Z,YACzBuU,MAAOzvB,EAAKoB,UAAU8Z,SACtB,wBAAyBlb,EAAKoB,UAAU8Z,yBACxCwU,OAAQ1vB,EAAKoB,UAAU8Z,UACvB,mBAAoBlb,EAAKoB,UAAU8Z,oBACnCyU,SAAU3vB,EAAKoB,UAAU8Z,YACzB0U,KAAM5vB,EAAKoB,UAAU8Z,QACrB2U,YAAa7vB,EAAKoB,UAAU8Z,eAC5B,mBAAoBlb,EAAKoB,UAAU8Z,oBACnC4U,OAAQ9vB,EAAKoB,UAAU8Z,UACvB6U,SAAU/vB,EAAKoB,UAAU8Z,YACzB,cAAelb,EAAKoB,UAAU8Z,eAC9B8U,MAAOhwB,EAAKoB,UAAU8Z,SACtB+U,aAASjwB,EAAKoB,UAAU8Z,cACxBgV,QAASlwB,EAAKoB,UAAU8Z,WACxBiV,OAAQnwB,EAAKoB,UAAU8Z,UACvBkV,OAAQpwB,EAAKoB,UAAU8Z,UACvB,sBAAoBlb,EAAKoB,UAAU8Z,uBACnC,yCAA0Clb,EAAKoB,UAAU8Z,0CACzD,wBAAyBlb,EAAKoB,UAAU8Z,yBACxC,cAAelb,EAAKoB,UAAU8Z,eAC9B,eAAgBlb,EAAKoB,UAAU8Z,gBAC/B,4BAA6Blb,EAAKoB,UAAU8Z,6BAC5C,mCAAoClb,EAAKoB,UAAU8Z,oCACnDmV,MAAOrwB,EAAKoB,UAAU8Z,SACtB,aAAclb,EAAKoB,UAAU8Z,cAC7B,iCAAyBlb,EAAKoB,UAAU8Z,kCACxC,eAAgBlb,EAAKoB,UAAU8Z,gBAC/BoV,QAAStwB,EAAKoB,UAAU8Z,WACxBqV,OAAQvwB,EAAKoB,UAAU8Z,UACvBsV,WAAYxwB,EAAKoB,UAAU8Z,cAC3B,eAAgBlb,EAAKoB,UAAU8Z,gBAC/BuV,UAAWzwB,EAAKoB,UAAU8Z,aAC1B,eAAgBlb,EAAKoB,UAAU8Z,gBAC/BwV,SAAU1wB,EAAKoB,UAAU8Z,YACzByV,SAAU3wB,EAAKoB,UAAU8Z,YACzB,kBAAmBlb,EAAKoB,UAAU8Z,mBAClC0V,QAAS5wB,EAAKoB,UAAU8Z,WACxB,eAAgBlb,EAAKoB,UAAU8Z,gBAC/B,2CAA4Clb,EAAKoB,UAAU8Z,4CAC3D,cAAelb,EAAKoB,UAAU8Z,eAC9B2V,MAAO7wB,EAAKoB,UAAU8Z,SACtB,YAAalb,EAAKoB,UAAU8Z,aAC5B4V,MAAO9wB,EAAKoB,UAAU8Z,SACtB6V,SAAU/wB,EAAKoB,UAAU8Z,YACzB8V,SAAUhxB,EAAKoB,UAAU8Z,YACzB+V,SAAUjxB,EAAKoB,UAAU8Z,YACzBgW,OAAQlxB,EAAKoB,UAAU8Z,UACvBiW,YAAanxB,EAAKoB,UAAU8Z,eAC5BkW,MAAOpxB,EAAKoB,UAAU8Z,SACtBmW,OAAQrxB,EAAKoB,UAAU8Z,UACvBoW,WAAYtxB,EAAKoB,UAAU8Z,cAC3BqW,SAAUvxB,EAAKoB,UAAU8Z,YACzBsW,SAAUxxB,EAAKoB,UAAU8Z,YACzB,cAAelb,EAAKoB,UAAU8Z,eAC9BuW,KAAMzxB,EAAKoB,UAAU8Z,QACrBwW,QAAS1xB,EAAKoB,UAAU8Z,WACxByW,MAAO3xB,EAAKoB,UAAU8Z,SACtB,sBAAuBlb,EAAKoB,UAAU8Z,uBACtC0W,QAAS5xB,EAAKoB,UAAU8Z,WACxB2W,OAAQ7xB,EAAKoB,UAAU8Z,UACvB4W,aAAc9xB,EAAKoB,UAAU8Z,gBAC7B,2BAA4Blb,EAAKoB,UAAU8Z,4BAC3C6W,OAAQ/xB,EAAKoB,UAAU8Z,UACvB8W,OAAQhyB,EAAKoB,UAAU8Z,UACvB+W,QAASjyB,EAAKoB,UAAU8Z,WACxB,uBAAwBlb,EAAKoB,UAAU8Z,wBACvC,iBAAkBlb,EAAKoB,UAAU8Z,kBACjC,gBAAiBlb,EAAKoB,UAAU8Z,iBAChC,wBAAyBlb,EAAKoB,UAAU8Z,yBACxCgX,QAASlyB,EAAKoB,UAAU8Z,WACxBiX,WAAYnyB,EAAKoB,UAAU8Z,cAC3BkX,QAASpyB,EAAKoB,UAAU8Z,WACxBmX,UAAWryB,EAAKoB,UAAU8Z,aAC1BoX,QAAStyB,EAAKoB,UAAU8Z,WACxB,yBAA0Blb,EAAKoB,UAAU8Z,0BACzC,sBAAuBlb,EAAKoB,UAAU8Z,uBACtC,oBAAqBlb,EAAKoB,UAAU8Z,qBACpC,iBAAkBlb,EAAKoB,UAAU8Z,kBACjCqX,MAAOvyB,EAAKoB,UAAU8Z,SACtBsX,OAAQxyB,EAAKoB,UAAU8Z,UACvBuX,SAAUzyB,EAAKoB,UAAU8Z,YAC1B,ECnPKwX,GAAiB,SAAC/qB,GACtB,IACE3H,EACE2H,EADF3H,KAAMkO,EACJvG,EADIuG,KAIFykB,GAAgB9Y,EAAAA,EAAAA,UAAQ,kBAAMyN,GAAiBtnB,EAAK,GAAE,CAACA,IAEvD4lB,GAAgB/L,EAAAA,EAAAA,UAAQ,kBAC5BzV,IAAAA,IAAM8J,GAAM,SAAAf,GAAI,MAAK,CACnB7I,KAAMquB,EAAcxlB,EAAKA,MAAQwlB,EAAcxlB,EAAKA,MAAQA,EAAKA,KACjEiW,EAAGjW,EAAKgR,MACR3G,MAPU,UAQX,GAAE,GAAE,CAACmb,EAAezkB,IAEvB,OACE/N,EAAAA,EAAAA,KAAC+kB,EAAAA,SAAQ,CAAA/a,UACPhK,EAAAA,EAAAA,KAAC2mB,EAAQ,CAAC5Y,KAAM0X,EAAe5lB,KAAMA,KAG3C,EAaA0yB,GAAe1lB,aAAe,CAC5BkB,KAAM,IAGR,UCtCM0kB,GAAmB,SAACjrB,GACxB,IACEuG,EAEEvG,EAFFuG,KACAlO,EACE2H,EADF3H,KAKI4lB,GAAgB/L,EAAAA,EAAAA,UAAQ,kBAC5BzV,IAAAA,IAAM8J,GAAM,SAAAf,GAAI,MAAK,CACnB7I,KAAM6I,EAAKA,KACXiW,EAAGjW,EAAKgR,MACR3G,MANU,UAOX,GAAE,GAAE,CAACtJ,EAAMlO,IAEd,OACEG,EAAAA,EAAAA,KAAC+kB,EAAAA,SAAQ,CAAA/a,UACPhK,EAAAA,EAAAA,KAAC2mB,EAAQ,CAAC5Y,KAAM0X,EAAe5lB,KAAMA,KAG3C,EAQA4yB,GAAiB5lB,aAAe,CAChC,EAEA,UClCM6lB,GACI3X,sBADJ2X,GAES3X,2HAGT4X,GAAe,SAACnrB,GACpB,IACE3H,EACE2H,EADF3H,KAIF,OACEkK,EAAAA,EAAAA,MAAA,OACEvJ,UAAU,+BACV+d,MAAO,CACPpI,QAAS,eACTM,UAAW,IACXmc,SAAU,OACVhc,YAAa,MACbC,aAAc,MACdH,UAAW,UACX1M,SAAA,EAEAhK,EAAAA,EAAAA,KAAA,QAAMue,MAAO,CACXvH,SAAU,OACVG,WAAY,QACZnN,SACAnK,EAAKoB,UAAUyxB,OAEjB1yB,EAAAA,EAAAA,KAAA,QAAMue,MAAO,CACXvH,SAAU,QACVhN,SACAnK,EAAKoB,UAAUyxB,QAIvB,EAQAC,GAAa9lB,aAAe,CAC5B,EAEA,UCrCMgmB,GAAa,CACjBC,cAAe,CACblzB,MAAOmb,2BACPgY,cAAe,WAAQ,EACvBC,YAAajY,0BACbkY,YAAa,mCAEfhO,QAAS,CACPrlB,MAAOmb,UACPgY,cAAe,WAAQ,EACvBC,YAAajY,mBACbkY,YAAa,oCAEfC,UAAW,CACTtzB,MAAOmb,YACPgY,cAAe,WAAQ,EACvBC,YAAajY,mBACbkY,YAAa,qCAIX9a,GAAgB,SAAC3Q,GACrB,IACE3H,EACE2H,EADF3H,KAAMkO,EACJvG,EADIuG,KAAMolB,EACV3rB,EADU2rB,SAAU7U,EACpB9W,EADoB8W,UAAWrT,EAC/BzD,EAD+ByD,MAG7BmoB,GAAWC,EAAAA,EAAAA,QAAOpoB,GACxBmoB,EAASE,QAAUroB,EACnB,IAAMsoB,GAAgB3T,EAAAA,EAAAA,cAAY,SAAA4T,GAAW,OAAI,kBAAMJ,EAASE,QAAQtjB,KAAKwjB,EAAY,IAAE,IAErFC,GAAc/Z,EAAAA,EAAAA,UAAQ,iBAAO,CACjC9Z,MAAOC,EAAKoB,UAAU4xB,GAAWM,GAAUvzB,OAC3CmzB,cAAeQ,EAAcV,GAAWM,GAAUF,aAClDD,YAAanzB,EAAKoB,UAAU4xB,GAAWM,GAAUH,aAClD,GAAG,CAACnzB,EAAM0zB,EAAeJ,IAEpBO,GAAaha,EAAAA,EAAAA,UAAQ,iBAAO,CAChCia,cAAevS,EACfwS,cAAe,yBACftV,UAAAA,EACA7c,OAAQ,CACNoyB,MAAM,EACN1Z,OAAQ,CACN2Z,YAAY,EACZC,iBAAkB,WAAF,OAAQN,EAAY7zB,KAAK,EACzCo0B,QAAS,GACTC,iBAAa7kB,EACbvP,KAAAA,EACAq0B,eAAe,GAEjBtZ,OAAQ,CACNkZ,YAAY,EACZK,QAAS,CAAC,CACRtX,KAAM4W,EAAYT,YAClB/oB,KAAM,UACNmqB,SAAUX,EAAYV,iBAG1BrzB,QAAS,CACP20B,mBAAmB,EACnBC,gBAAiBrwB,IAAAA,OAGtB,GAAG,CAACwvB,EAAYT,YAAaS,EAAYV,cAAeU,EAAY7zB,MAAOC,EAAMye,IAkBlF,OACEte,EAAAA,EAAAA,KAACu0B,EAAAA,IAAIC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAKd,GAAU,IAAA1pB,SAhBhBsU,GACKte,EAAAA,EAAAA,KAAC2e,EAAAA,EAAO,CAACC,KAAMC,EAAAA,EAAY4V,MAAOvhB,MAAOrT,EAAKoB,UAAU8Z,aAE5DhN,GAASA,EAAKnD,QAIjBb,EAAAA,EAAAA,MAACgb,EAAAA,SAAQ,CAAA/a,SAAA,CACO,YAAbmpB,IAA0BnzB,EAAAA,EAAAA,KAACslB,EAAY,CAACzlB,KAAMA,EAAMkO,KAAMA,IAC7C,cAAbolB,IAA4BnzB,EAAAA,EAAAA,KAACuyB,GAAc,CAAC1yB,KAAMA,EAAMkO,KAAMA,IACjD,kBAAbolB,IAAgCnzB,EAAAA,EAAAA,KAACyyB,GAAgB,CAAC5yB,KAAMA,EAAMkO,KAAMA,QANhE/N,EAAAA,EAAAA,KAAC2yB,GAAY,CAAC9yB,KAAMA,MAgBjC,EAUAsY,GAActL,aAAe,CAC3BkmB,mBAAe3jB,EACfpF,SAAU,MAGZ,UCxGA,IAAMiO,GAAY,SAACzQ,GACjB,IACE3H,EACE2H,EADF3H,KAAMmf,EACJxX,EADIwX,cAAe/T,EACnBzD,EADmByD,MAAO7E,EAC1BoB,EAD0BpB,gBAAiB6Y,EAC3CzX,EAD2CyX,cAEzCrG,GAAUC,EAAAA,EAAAA,kBAAiB/C,GAEjC4e,ECbK,SAA6Bl1B,GAEhC,IADFwf,EAAaxf,EAAbwf,cAAe5Y,EAAe5G,EAAf4G,gBAAiB6Y,EAAazf,EAAbyf,cAEhCxV,GAAwBC,EAAAA,EAAAA,UAAS,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA7BsE,EAAIpE,EAAA,GAAEwV,EAAOxV,EAAA,GACpByV,GAAgC1V,EAAAA,EAAAA,WAAS,GAAM2V,GAAAzV,EAAAA,EAAAA,GAAAwV,EAAA,GAAxCE,EAAQD,EAAA,GAAEE,EAAWF,EAAA,GAC5BG,GAAkC9V,EAAAA,EAAAA,WAAS,GAAK+V,GAAA7V,EAAAA,EAAAA,GAAA4V,EAAA,GAAzClB,EAASmB,EAAA,GAAEC,EAAYD,EAAA,GAExBE,GAAUC,EAAAA,EAAAA,cAAY,SAAC7N,GAC3B3L,EAAgB2L,MAAM,mBAAoBA,EAAO,yBACnD,GAAG,CAAC3L,IA4BJ,OAzBAyZ,EAAAA,EAAAA,YAAU,WACR,GAAKb,IACLU,GAAa,GACbH,GAAY,GACPN,GAAL,CAEA,IAAMa,EAAsBd,EAAc,gBAc1C,OAb6Bc,EAAoBvE,YAAYhY,MAAK,SAACoxB,GACjEvuB,EAAgB2Z,IAAI,mBAAoB4U,EAAQ,0BAChD,IAAMC,EAAM/W,EAAe8W,EAAOE,mBAAoB,iBAAkB,gBACxE1V,EAAQyV,EACV,IAGG9iB,MAAM6N,GAASzP,SAAQ,WACtBwP,GAAa,GACbH,GAAY,EACd,IAGK,WACLO,EAAoBG,YACtB,CAlBoC,CAmBtC,GAAG,CAACN,EAASX,EAAe5Y,EAAiB6Y,IAEtC,CACLlR,KAAAA,EACAuR,SAAAA,EACAhB,UAAAA,EAEJ,CD1BMwW,CAAqB,CACvB9V,cAAAA,EAAe5Y,gBAAAA,EAAiB6Y,cAAAA,IAH1B8V,EAAeL,EAArB3mB,KACWinB,EAAwBN,EAAnCpW,UAKF2W,EEpBK,SAAuBz1B,GAE1B,IADFwf,EAAaxf,EAAbwf,cAAe5Y,EAAe5G,EAAf4G,gBAAiB6Y,EAAazf,EAAbyf,cAEhCxV,GAAwBC,EAAAA,EAAAA,UAAS,GAAEC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA5BsE,EAAIpE,EAAA,GAAEwV,EAAOxV,EAAA,GACpByV,GAAgC1V,EAAAA,EAAAA,WAAS,GAAM2V,GAAAzV,EAAAA,EAAAA,GAAAwV,EAAA,GAAxCE,EAAQD,EAAA,GAAEE,EAAWF,EAAA,GAC5BG,GAAkC9V,EAAAA,EAAAA,WAAS,GAAK+V,GAAA7V,EAAAA,EAAAA,GAAA4V,EAAA,GAAzClB,EAASmB,EAAA,GAAEC,EAAYD,EAAA,GAExBE,GAAUC,EAAAA,EAAAA,cAAY,SAAC7N,GAC3B3L,EAAgB2L,MAAM,mBAAoBA,EAAO,yBACnD,GAAG,CAAC3L,IA4BJ,OAzBAyZ,EAAAA,EAAAA,YAAU,WACR,GAAKb,IACLU,GAAa,GACbH,GAAY,GACPN,GAAL,CAEA,IAAMa,EAAsBd,EAAc,WAc1C,OAbuBc,EAAoBvE,YACxChY,MAAK,SAACoxB,GACLvuB,EAAgB2Z,IAAI,mBAAoB4U,EAAQ,0BAChD,IAAMC,EAAM/W,EAAe8W,EAAOO,cAAe,iBAAkB,gBACnE/V,EAAQyV,EACV,IAGC9iB,MAAM6N,GAASzP,SAAQ,WACtBwP,GAAa,GACbH,GAAY,EACd,IAEK,WACLO,EAAoBG,YACtB,CAlBoC,CAmBtC,GAAG,CAACN,EAASX,EAAe5Y,EAAiB6Y,IAEtC,CACLlR,KAAAA,EACAuR,SAAAA,EACAhB,UAAAA,EAEJ,CFnBM6W,CAAe,CACjBnW,cAAAA,EAAe5Y,gBAAAA,EAAiB6Y,cAAAA,IAH1BmW,EAAWH,EAAjBlnB,KACWsnB,EAAoBJ,EAA/B3W,UAKFgX,EG3BK,SAAyB91B,GAE5B,IADFwf,EAAaxf,EAAbwf,cAAe5Y,EAAe5G,EAAf4G,gBAAiB6Y,EAAazf,EAAbyf,cAEhCxV,GAAwBC,EAAAA,EAAAA,UAAS,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA7BsE,EAAIpE,EAAA,GAAEwV,EAAOxV,EAAA,GACpByV,GAAgC1V,EAAAA,EAAAA,WAAS,GAAM2V,GAAAzV,EAAAA,EAAAA,GAAAwV,EAAA,GAAxCE,EAAQD,EAAA,GAAEE,EAAWF,EAAA,GAC5BG,GAAkC9V,EAAAA,EAAAA,WAAS,GAAK+V,GAAA7V,EAAAA,EAAAA,GAAA4V,EAAA,GAAzClB,EAASmB,EAAA,GAAEC,EAAYD,EAAA,GAExBE,GAAUC,EAAAA,EAAAA,cAAY,SAAC7N,GAC3B3L,EAAgB2L,MAAM,oBAAqBA,EAAO,yBACpD,GAAG,CAAC3L,IA6BJ,OA1BAyZ,EAAAA,EAAAA,YAAU,WACR,GAAKb,IACLU,GAAa,GACbH,GAAY,GAEPN,GAAL,CAEA,IAAMa,EAAsBd,EAAc,aAc1C,OAbyBc,EAAoBvE,YAC1ChY,MAAK,SAACoxB,GACLvuB,EAAgB2Z,IAAI,oBAAqB4U,EAAQ,0BACjD,IAAMC,EAAM/W,EAAe8W,EAAOY,gBAAiB,cAAe,gBAClEpW,EAAQyV,EACV,IAGC9iB,MAAM6N,GAASzP,SAAQ,WACtBwP,GAAa,GACbH,GAAY,EACd,IAEK,WACLO,EAAoBG,YACtB,CAlBoC,CAmBtC,GAAG,CAACN,EAASX,EAAe5Y,EAAiB6Y,IAEtC,CACLlR,KAAAA,EACAuR,SAAAA,EACAhB,UAAAA,EAEJ,CHbMkX,CAAiB,CACnBxW,cAAAA,EAAe5Y,gBAAAA,EAAiB6Y,cAAAA,IAH1BwW,EAAaH,EAAnBvnB,KACW2nB,EAAsBJ,EAAjChX,UAMF,OACEvU,EAAAA,EAAAA,MAAA,OAAKvJ,UAAWiM,IAAW,+BAAgCmM,EAAQX,WAAWjO,SAAA,EAE5ED,EAAAA,EAAAA,MAAA,OAAKvJ,UAAWiM,IAAW,qBAAqBzC,SAAA,EAC9ChK,EAAAA,EAAAA,KAACmY,GAAa,CACZgb,SAAS,gBACTtzB,KAAMA,EACNkO,KAAMgnB,EACNzW,UAAW0W,EACX/pB,MAAOA,KAETjL,EAAAA,EAAAA,KAACmY,GAAa,CACZgb,SAAS,YACTtzB,KAAMA,EACNkO,KAAM0nB,EACNnX,UAAWoX,EACXzqB,MAAOA,QAIXjL,EAAAA,EAAAA,KAAA,OAAKQ,UAAWiM,IAAW,qBAAqBzC,UAC9ChK,EAAAA,EAAAA,KAACmY,GAAa,CACZgb,SAAS,UACTtzB,KAAMA,EACNkO,KAAMqnB,EACN9W,UAAW+W,EACXpqB,MAAOA,QAKjB,EAUAgN,GAAUpL,aAAe,CACvBmS,cAAe,WAAO,GAGxB,U,oDI3Ea2W,IAAqBnQ,EAAAA,EAAAA,OAAK,SAAAhmB,GAIhC,IAHLK,EAAIL,EAAJK,KACA+1B,EAAap2B,EAAbo2B,cACAC,EAAYr2B,EAAZq2B,aAEAC,EAAgDhrB,EAAAA,UAAe,GAAMirB,GAAAnsB,EAAAA,EAAAA,GAAAksB,EAAA,GAA9DE,EAAgBD,EAAA,GAAEE,EAAmBF,EAAA,GAC5CG,EAA0DprB,EAAAA,UAAe,GAAKqrB,GAAAvsB,EAAAA,EAAAA,GAAAssB,EAAA,GAAvEE,EAAqBD,EAAA,GAAEE,EAAwBF,EAAA,GAEhDG,GAAgB5c,EAAAA,EAAAA,UAAQ,WAC5B,IAAM6c,EAA0B,IAAIC,IAapC,MAZA,CACE,CAAC,iBAAkB,CACjBpjB,GAAI,iBACJnJ,KAAM,WAER,CAAC,WAAY,CACXA,KAAM,cAERwsB,SAAQ,SAAAjzB,GAAmB,IAADE,GAAAkG,EAAAA,EAAAA,GAAApG,EAAA,GAAhBkI,EAAGhI,EAAA,GAAEiI,EAAKjI,EAAA,GACpB6yB,EAAwB1kB,IAAInG,EAAKC,EACnC,IAEO,CACL4qB,wBAAAA,EACAG,sBAAuB,IAAIF,IAE/B,GAAG,IACHG,EAA8D7rB,EAAAA,SAAewrB,EAAcC,yBAAwBK,GAAAhtB,EAAAA,EAAAA,GAAA+sB,EAAA,GAA5GJ,EAAuBK,EAAA,GAAEC,EAA0BD,EAAA,GAMpDE,GAAgBlX,EAAAA,EAAAA,cAAY,SAACmX,GACjC,GAAKA,GAAYA,EAAQ3jB,GAAzB,CAGA,IAAM4jB,EAAiC,IAAIR,IAAID,GAC/CS,EAA+BnlB,IAAIklB,EAAQ3jB,GAAI2jB,GAC/CF,EAA2BG,GAC3BX,GAAyB,EAJzB,CAKF,GAAG,CAACE,IAEEU,GAAgBC,EAAAA,GAAAA,GAAiB,CAAEJ,cAAAA,EAAeR,cAAAA,IAExD,OACEvsB,EAAAA,EAAAA,MAAAotB,EAAAA,SAAA,CAAAntB,SAAA,EACEhK,EAAAA,EAAAA,KAACo3B,GAAAA,mBAAiB5C,EAAAA,EAAAA,GAAA,CAChBsC,cAAeG,EAActlB,OAC7B0lB,uBApByB,SAAH9uB,GAAsD,IAA9B+uB,EAAsB/uB,EAAxCytB,iBAChCC,EAAoBqB,EACtB,EAmBM3jB,WAAY9T,EACZ03B,WAAY,IAAIxjB,GAAAA,WAAW,CAAElU,KAAAA,IAC7BiG,MAAI,EACJ8vB,cAAeA,EACf4B,sBAAoB,GAChB3B,KAEN71B,EAAAA,EAAAA,KAACy3B,GAAAA,iBAAgB,CACf53B,KAAMA,EACNm2B,iBAAkBA,EAClB0B,qBAAqB,EACrBtB,sBAAuBA,EACvBG,wBAAyBA,MAIjC,IAUAZ,GAAmB9oB,aAAe,CAClC,E,8FC3EM8qB,GAAa,SAACC,EAAQC,GAAM,OAAKC,OAAOC,KAAKF,GAAQlc,QAAO,SAACC,EAAKlQ,GAEtE,OADAkQ,EAAI,GAADjV,OAAIixB,EAAM,KAAAjxB,OAAI+E,EAAG,MAAOmsB,EAAOnsB,GAC3BkQ,CACT,GAAG,CAAC,EAAG,EAEDoc,GAAkB,SAACn4B,GACvB,IAAMo4B,EAAY9Q,GAAiBtnB,GAEnC,MAAO,CACLsE,KAAM,4BACN8F,KAAM,SACNiuB,WAAY,CACVC,QAAS,CACPluB,KAAM,SACNmuB,KAAMN,OAAOC,KAAKE,GAClBI,YAAY,EACZC,WAAY,WACZC,UAAWZ,GAAW,eAAgBM,IAExCO,OAAQ,CACNvuB,KAAM,SACNmuB,KAAM,CAAC,KAAM,SAAU,SAAU,SACjCC,YAAY,EACZC,WAAY,WACZC,UAAWZ,GAAW,cAAe,CACnCzS,GAAIrlB,EAAKoB,UAAU8Z,MACnBoK,OAAQtlB,EAAKoB,UAAU8Z,UACvBqK,OAAQvlB,EAAKoB,UAAU8Z,UACvBsK,MAAOxlB,EAAKoB,UAAU8Z,YAG1B0d,WAAY,CACVxuB,KAAM,SACNouB,YAAY,EACZK,UAAW,CAAC,aAAc,WAAY,UACtCC,uBAAwB,CACtBC,WAAY/4B,EAAKoB,UAAU8Z,eAC3B8d,SAAUh5B,EAAKoB,UAAU8Z,aACzB+d,OAAQj5B,EAAKoB,UAAU8Z,aAKjC,ECtCA,IAAMge,GACahe,+CADbge,GAEahe,6GAGbie,GAAa,aAsHnB,GApH2B,SAACxxB,GAC1B,IACE3H,EAME2H,EANF3H,KACAo5B,EAKEzxB,EALFyxB,kBACAC,EAIE1xB,EAJF0xB,cACAC,EAGE3xB,EAHF2xB,QACAluB,EAEEzD,EAFFyD,MAC6B7E,EAC3BoB,EADF4xB,4BAEIxgB,GAAUC,EAAAA,EAAAA,kBAAiB/C,GACjCrM,GAA0CC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAlDwV,EAAatV,EAAA,GAAE0vB,EAAgB1vB,EAAA,GACtCyV,GAA4B1V,EAAAA,EAAAA,UAAS,MAAK2V,GAAAzV,EAAAA,EAAAA,GAAAwV,EAAA,GAAnCjD,EAAMkD,EAAA,GAAEia,EAASja,EAAA,GAElBka,EAAyB,IAAIC,EAAAA,uBAAuB,CAAEP,kBAAAA,IACtDQ,GAAaC,EAAAA,EAAAA,8BACjBH,EAAuBI,WAAW,CAACC,EAAAA,oBAAoBC,aACvDX,GAIIY,EAAW71B,IAAAA,IAAMi1B,EAAca,eAAgB,aADjC,GAGdC,EAAYn6B,EAAK6O,WAAW,IAAIC,KAAK8qB,EAAWQ,OAAQ,CAAEzrB,IAAKwqB,KAC/DkB,EAAUr6B,EAAK6O,WAAW,IAAIC,KAAK8qB,EAAWU,KAAM,CAAE3rB,IAAKwqB,KAEjEoB,GAAwC1gB,EAAAA,EAAAA,UAAQ,WAC9C,IAAM2gB,EDOH,SAAwB76B,GAE3B,IADFK,EAAIL,EAAJK,KAOMy6B,EAAW,CACfnC,QAASt4B,EAAKoB,UAAU8Z,WACxByd,OAAQ34B,EAAKoB,UAAU8Z,UACvB0d,WAAY54B,EAAKoB,UAAU8Z,gBA6B7B,OA1BqBwf,EAAAA,GAAAA,IAAsB,CACzCtB,kBAAAA,GAAAA,QACAuB,YAAa,uBACbC,aAAczC,GAAgBn4B,GAC9BA,KAAAA,EACA66B,iBAAkB76B,EAClB86B,aAAAA,GAAAA,aACAC,uBAAwBjB,GAAAA,WACxBkB,aAAcC,GAAAA,QACdC,mBApBiB,CACjBvpB,SAAU,SAACvN,EAAGuN,GAAQ,OAAKA,CAAQ,EACnC7F,MAAO,SAAC1H,EAAG+2B,EAAIrvB,GAAK,OAAKA,CAAK,GAmB9BsvB,mBAAAA,GAAAA,QACAC,OAAQC,GAAAA,QACRC,aAAa,EACbC,yBAAyB,EACzBC,gBAAgB,EAChB7pB,OAAQ,CAAC,EACT8pB,gBAAiB,CACfC,8BAA+B,SAACh3B,GAC9B,IAAMi3B,EAAmBj3B,EAAO0zB,WAIhC,OAHAJ,OAAOC,KAAK0D,GAAkBhF,SAAQ,SAACjlB,GACrCiqB,EAAiBjqB,GAAU5R,MAAQ06B,EAAS9oB,EAC9C,IACOhN,CACT,IAIN,CChD4Bk3B,CAAgB,CAAE77B,KAAAA,IAE1C,MAAO,CAAEg2B,aAAcwE,EAAiBzE,cADf,IAAI+F,EAAAA,cAActB,GAE7C,GAAG,CAACx6B,IAJIg2B,EAAYuE,EAAZvE,aAAcD,EAAawE,EAAbxE,cAMhBgG,GAAgBliB,EAAAA,EAAAA,UAAQ,kBAAOuF,ErB5BV,SAAC9C,EAAQ6d,EAAWE,EAASJ,GACxD,IAAM8B,EAAgB,CACpBvtB,UAAW2rB,EACX1rB,QAAS4rB,EACT2B,WAAY/B,EACZgC,cAAe,GACfC,aAAc,GACdC,eAAgB,IAGlB,IAAK7f,GAAUlY,IAAAA,QAAUkY,GAGvB,OAFAyf,EAAcE,cAAgBF,EAAcE,cAAcG,KAAK,KAC/DL,EAAcG,aAAeH,EAAcG,aAAaE,KAAK,KACtDL,EAGT,IAAMM,EAAgBpE,OAAOC,KAAK5b,GAAQ,GACpCggB,EAAgC,SAAlBD,EAA2B/f,EAAO+f,GAAiB,CAAC/f,GA4BxE,OA1BAlY,IAAAA,KAAOk4B,GAAa,SAACnvB,GAEnB,IAAMtB,EAAMosB,OAAOC,KAAK/qB,GAAM,GACxBrB,EAAQqB,EAAKtB,GACnB,GAAY,eAARA,EAAsB,CACxB,IAAM0wB,EAAWtE,OAAOC,KAAKpsB,GAAO,GACpCiwB,EAAcI,eAAev5B,KAAK,CAChC45B,SAAU7e,EAAY4e,GACtBE,MAAO3wB,EAAMywB,IAEjB,KAAmB,YAAR1wB,EACTzH,IAAAA,KAAO0H,EAAM4wB,KAAK,SAACC,GACjB,IAAMC,EA5CW,SAACC,GACxB,IAAMC,EAAcD,EAAQE,MAAM,iBAAiB,GAEnD,OAD0BD,EAAYE,UAAU,EAAGF,EAAY/xB,OAAS,EAE1E,CAwC4BkyB,CAAiBN,GACrCZ,EAAcE,cAAcr5B,KAAKg6B,EACnC,IAEAx4B,IAAAA,KAAO0H,EAAM4wB,KAAK,SAACC,GACjB,IAAMO,EA1CU,SAACrX,GACvB,IAAMqX,EAAarX,EAAOkX,MAAM,gBAAgB,GAEhD,OADyBG,EAAWF,UAAU,EAAGE,EAAWnyB,OAAS,EAEvE,CAsC2BoyB,CAAgBR,GACnCZ,EAAcG,aAAat5B,KAAKs6B,EAClC,GAEJ,IAEAnB,EAAcE,cAAgBF,EAAcE,cAAcG,KAAK,KAC/DL,EAAcG,aAAeH,EAAcG,aAAaE,KAAK,KAEtDL,CACT,CqBlBuDqB,CAAc9gB,EAAQ6d,EAAWE,EAASJ,GAAY,CAAC,CAAC,GAAG,CAACI,EAAS/d,EAAQ8C,EAAe+a,EAAWF,IAEtJ9a,GAAgBY,EAAAA,EAAAA,cAAY,SAAAsd,GAAY,OAAI/D,EAAQ,0BACvDpd,UAAU,CACTohB,MAAO,CACL7hB,OAAQ,CAAC4hB,IAEXxhB,QAASkgB,GACT,GAAE,CAACzC,EAASyC,IAEVwB,GAAmBxd,EAAAA,EAAAA,cAAY,SAACyd,GACpC,IAAMC,EAAkB,IAAI3uB,KAI5B,OAHA2uB,EAAgBC,SAASD,EAAgBE,WAAa,GACxC,IAAI7uB,KAAK0uB,GACSC,EAE5BG,EAAAA,gBAAgBC,YAAY79B,EAAKoB,UAAU8Z,8DAC3C,IACN,GAAG,CAAClb,IAgBJ,OAdAggB,EAAAA,EAAAA,YAAU,WACR+V,EAAc+H,gBACd/H,EAAcgI,gCAAgCr6B,MAAK,WACjD+1B,EAAU1D,EAAciI,oBAAoBV,MAC9C,IAAGjtB,SAAQ,WACTmpB,GAAiB,GACjBzD,EAAclkB,GAAG,wBAAwB,SAAAlS,GAA4B,IAAjBs+B,EAASt+B,EAAjB2c,OAC1C/V,EAAgB2Z,IAAI,gBAAiB,CAAE5D,OAAQ2hB,IAC/CxE,EAAUwE,EAAUX,MACtB,GACF,IACAC,EAAiBpD,EACnB,GAAG,CAACoD,EAAkBv9B,EAAM+1B,EAAeoE,EAAW5zB,KAGpD2D,EAAAA,EAAAA,MAAA,OAAKvJ,UAAWiM,IAAW,yBAA0BmM,EAAQjC,oBAAoB3M,SAAA,EAC/EhK,EAAAA,EAAAA,KAAA,OAAKQ,UAAU,gDAA+CwJ,SAC3DnK,EAAKoB,UAAU83B,OAElB/4B,EAAAA,EAAAA,KAAA,OAAKQ,UAAU,gDAA+CwJ,UAC5DhK,EAAAA,EAAAA,KAAC21B,GAAkB,CAAC91B,KAAMA,EAAMo5B,kBAAmBA,EAAmBrD,cAAeA,EAAeC,aAAcA,OAEpH9rB,EAAAA,EAAAA,MAAA,OAAKvJ,UAAU,iDAAgDwJ,SAAA,EAC7DhK,EAAAA,EAAAA,KAAA,OAAKQ,UAAU,yCAAwCwJ,UACrDhK,EAAAA,EAAAA,KAACoX,EAAW,CACVvX,KAAMA,EACNmf,cAAeA,EACf5Y,gBAAiBA,EACjB6Y,cAAeA,OAGnBjf,EAAAA,EAAAA,KAAA,OAAKQ,UAAU,wDAAuDwJ,UACpEhK,EAAAA,EAAAA,KAACiY,GAAS,CACRpY,KAAMA,EACNmf,cAAeA,EACf/T,MAAOA,EACP7E,gBAAiBA,EACjB6Y,cAAeA,UAIrBjf,EAAAA,EAAAA,KAAA,OAAKQ,UAAU,gDAA+CwJ,UAC5DD,EAAAA,EAAAA,MAAA,QAAAC,SAAA,CACGnK,EAAKoB,UAAU83B,KAChB/4B,EAAAA,EAAAA,KAAA,KAAGqd,KAAK,uDAAuDve,OAAO,SAASwe,IAAI,aAAYtT,SAAA,IAAArD,OAAM9G,EAAKoB,UAAU8Z,wBAK9H,ECjGA,GApBgC,SAAHvb,GAAkB,IAAZK,EAAIL,EAAJK,KAC3Bk+B,GAAcrkB,EAAAA,EAAAA,UAAQ,iBAAO,CACjCskB,QAASn+B,EAAKoB,UAAU8Z,WACzB,GAAG,CAAClb,IAEL,OACEG,EAAAA,EAAAA,KAAA,OACEQ,UAAWiM,IAAW,kCACtB8R,MAAO,CACLpI,QAAS,OACTG,eAAgB,SAChBD,WAAY,SACZH,OAAQ,QACRlM,UAEFhK,EAAAA,EAAAA,KAAC2e,EAAAA,EAAO,CAACC,KAAMC,EAAAA,EAAY4V,MAAOvhB,MAAO6qB,EAAYC,WAG3D,ECZMC,GAAwB,CAC5BC,SAAU,CAAC,CACT/5B,KAAM,sBACNwH,MAAO,sBACP8N,SAAU,CACR,CACEtV,KAAM,8BACNwH,MAAO,mCAuHf,GAjHyB,SAACnE,GACxB,IAAQyD,EAA0CzD,EAA1CyD,MAAOiuB,EAAmC1xB,EAAnC0xB,cAAe9yB,EAAoBoB,EAApBpB,gBAExB+3B,GAAqB9K,EAAAA,EAAAA,QAAOjtB,GAC7B+3B,EAAmB7K,UACtB6K,EAAmB7K,QAAUltB,GAG/B,IAAMqT,GAAWC,EAAAA,EAAAA,UAAQ,WAIvB,OAHAykB,EAAmB7K,QAAQ8K,YAAYH,IACtBE,EAAmB7K,QAAQ+K,oBAAoBC,SAC3CC,4BAA4BD,QAEnD,GAAG,CAACH,IAEE/E,GAA8B1f,EAAAA,EAAAA,UAAQ,iBAAO,CACjD3H,MAAO,SAACysB,EAAQC,EAASC,GAAG,OAAKjlB,EAAS1H,MAAM,CAC9CysB,OAAAA,EACAlC,MAAOz4B,KAAKuY,UAAUqiB,IACrBC,EAAI,EAEP3e,IAAK,SAACye,EAAQC,EAASC,GAAG,OAAKjlB,EAASklB,MAAM,CAC5CH,OAAAA,EACAC,QAAAA,GACCC,EAAI,EACR,GAAG,CAACjlB,IAELmlB,EAGI1F,EAFFa,eAAsB8E,EAAGD,EAAP1zB,GAA+B4zB,EAAIF,EAA1BG,qBACJC,EACrB9F,EADF+F,gBAAmB/zB,GAGfg0B,GAAaxlB,EAAAA,EAAAA,UAAQ,kBAAMzO,EAAMuR,OAAOH,KAAK,GAAE,CAACpR,IACtDxB,GAAwCC,EAAAA,EAAAA,UAAS,MAAKC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA/C01B,EAAYx1B,EAAA,GAAEy1B,EAAez1B,EAAA,GAC9B01B,GAAgB3lB,EAAAA,EAAAA,UAAQ,kBAAMylB,IAAiBD,CAAU,GAAE,CAACC,EAAcD,KAEhFrf,EAAAA,EAAAA,YAAU,WACJwf,GACFD,EAAgBF,EAEpB,GAAG,CAACG,EAAeH,IAEnB,IAAMI,GAAmB5lB,EAAAA,EAAAA,UAAQ,kBAAMzO,EAAMuR,OAAOqiB,KAAOC,GAASA,IAASE,CAAI,GAAE,CAACF,EAAME,EAAK/zB,EAAMuR,OAAOqiB,MACtGl3B,GAAM+R,EAAAA,EAAAA,UAAQ,kBAAO4lB,EACzBC,EAAAA,YAAYC,UAAUC,SAASX,GAAMY,SAASD,SAASZ,GACvDU,EAAAA,YAAYC,UAAUC,SAAST,EAAI,GAAG,CAACM,EAAkBT,EAAKG,EAAKF,IAC/Da,GAASjmB,EAAAA,EAAAA,UAAQ,kBAAM/R,EAAIyT,KAAKqkB,SAASN,EAAa,GAAE,CAACA,EAAcx3B,EAAIyT,OAEjFwkB,ECpEwB,SAAHpgC,GAEhB,IADL6c,EAAK7c,EAAL6c,MAAOjW,EAAe5G,EAAf4G,gBAAiBu5B,EAAMngC,EAANmgC,OAAQh4B,EAAGnI,EAAHmI,IAEhC8B,GAAwBC,EAAAA,EAAAA,UAAS,CAAEoS,sBAAsB,IAAQnS,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA1DsE,EAAIpE,EAAA,GAAEwV,EAAOxV,EAAA,GACpByV,GAAkC1V,EAAAA,EAAAA,WAAS,GAAK2V,GAAAzV,EAAAA,EAAAA,GAAAwV,EAAA,GAAzCd,EAASe,EAAA,GAAEK,EAAYL,EAAA,GAC9BG,GAAkD9V,EAAAA,EAAAA,UAASzF,IAAAA,MAAOwb,GAAA7V,EAAAA,EAAAA,GAAA4V,EAAA,GAA3DqgB,EAAiBpgB,EAAA,GAAEqgB,EAAoBrgB,EAAA,GAC9CsgB,GAAkDr2B,EAAAA,EAAAA,UAASzF,IAAAA,MAAO+7B,GAAAp2B,EAAAA,EAAAA,GAAAm2B,EAAA,GAA3DE,EAAiBD,EAAA,GAAEE,EAAoBF,EAAA,GAExCrgB,GAAUC,EAAAA,EAAAA,cAAY,SAAC7N,GAC3B3L,EAAgB2L,MAAM,kBAAmBA,EAAO,yBAClD,GAAG,CAAC3L,IAGE+5B,GAAkBzmB,EAAAA,EAAAA,UAAQ,kBAAMimB,EAAOv9B,IAAI,CAAC,EAAE,GAAE,CAACu9B,IACjDS,GAAsB1mB,EAAAA,EAAAA,UAAQ,kBAAM/R,EAAIyT,KAAK,wCAChDW,UAAU,CACTL,QAAS,CACPN,KAAM,CACJ,CACElQ,GAAImR,EACJP,sBAAsB,MAI5B,GAAE,CAACnU,EAAIyT,KAAMiB,IAgCjB,OA9BAwD,EAAAA,EAAAA,YAAU,WAGR,GAFAH,GAAa,GAEC,OAAVrD,QAA4BjN,IAAViN,EAmBtB,OAjBmB8jB,EAAgB5kB,YAAYhY,MAAK,SAACyY,GACnDmD,GAAOqV,EAAAA,EAAAA,GAAC,CAAC,EAAIxY,IACb8jB,GAAqB,kBAAM,SAACO,GAC1BlhB,GAAQ,SAAAmhB,GAAW,OAAA9L,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAU8L,GAAW,IAAExkB,qBAAsBukB,GAAoB,GACtF,CAAC,IACDH,GAAqB,kBAAM,kBAAME,EAAoB7kB,YAAYhY,MAAK,SAACqxB,GACrE,IAAM2L,EAAY3L,EAAIjpB,MAAM,GAC5BvF,EAAgB2Z,IAAI,YAAY,cAADpZ,OAAgB0V,EAAK,QAAA1V,OAAO9C,KAAKuY,UAAUmkB,IAAc,OACxFphB,GAAQ,SAAAmhB,GAAW,OAAA9L,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAU8L,GAAW,IAAExkB,qBAAsBykB,EAAUzkB,sBAAoB,IAC9FxD,EAAuB,CAAC+D,GAC1B,GAAE,IACJ,IAEWvK,MAAM6N,GAASzP,SAAQ,WAChCwP,GAAa,EACf,IAEO,WACLP,EAAQ,CAAErD,sBAAsB,IAChC4D,GAAa,GACbygB,EAAgBlgB,aAChBmgB,EAAoBngB,YACtB,CACF,GAAG,CAACkgB,EAAiBC,EAAqBh6B,EAAiBuZ,EAAStD,IAE7D,CACLtO,KAAAA,EACAuQ,UAAAA,EACAuhB,kBAAAA,EACAI,kBAAAA,EAEJ,CDQMO,CAAW,CACbnkB,MAAO8iB,EAAcx3B,IAAAA,EAAKg4B,OAAAA,EAAQv5B,gBAAiBgzB,IAFnDrrB,EAAI6xB,EAAJ7xB,KAAMuQ,EAASshB,EAATthB,UAAWuhB,EAAiBD,EAAjBC,kBAAmBI,EAAiBL,EAAjBK,kBAKhCQ,GAAgB7gB,EAAAA,EAAAA,cAAY,SAACxV,GACjC,GAAKA,EAAEqO,OAAP,CAGA,IAAAioB,EAA0Ct2B,EAAEqO,OAApC6D,EAAUokB,EAAVpkB,WAA6BokB,EAAjBrkB,QACD8iB,GAGnBU,EAAkBvjB,EALlB,CAMF,GAAG,CAAC6iB,EAAcU,KAElBhgB,EAAAA,EAAAA,YAAU,WAGR,OAFAxgB,SAASshC,iBAAiB,mBAAoBF,GAEvC,WACLphC,SAASuhC,oBAAoB,mBAAoBH,EACnD,CACF,GAAG,CAACA,IAEJ,IAAMJ,GAAuB3mB,EAAAA,EAAAA,UAAQ,kBAAM3L,EAAK+N,oBAAoB,GAAE,CAAC/N,EAAK+N,uBAE5E,OACE/R,EAAAA,EAAAA,MAAA,OACEvJ,UAAWiM,IAAW,0BACtB8R,MACE,CAAErI,OAAQ,QACXlM,SAAA,EAECsU,GAAa+gB,KAAkBr/B,EAAAA,EAAAA,KAAC6gC,GAAuB,CAAChhC,KAAM2H,EAAM3H,QACpEye,IAAc+gB,IAAkBgB,GAChCrgC,EAAAA,EAAAA,KAAC2W,IAAkB6d,EAAAA,EAAAA,GAAA,CAAC4E,4BAA6BA,EAA6BD,QAASwG,GAAYn4B,KACnGxH,EAAAA,EAAAA,KAACiW,GAAmBue,EAAAA,EAAAA,GAAA,CAAC4E,4BAA6BA,EAA6BzgB,cAAesnB,EAAmBt4B,IAAKA,GAASH,OAGvI,C,iNE7GqBs5B,GAASz1B,EAAAA,EAAAA,IAC5B,SAAAy1B,EAAAthC,GAMI,IAADwM,EAAA,KALD+0B,EAASvhC,EAATuhC,UACAC,EAAgBxhC,EAAhBwhC,iBACAnhC,EAAIL,EAAJK,KACAohC,EAAiBzhC,EAAjByhC,kBACAz2B,EAAQhL,EAARgL,UAAQc,EAAAA,EAAAA,GAAA,KAAAw1B,GAER,IAAMI,EAAU,KAEhB31B,KAAK41B,gBAAkBl9B,IAAAA,MAAQ88B,GAC5BK,SACA/zB,KAAI,SAAAg0B,GAAQ,MACX,CACEC,KAAMzhC,EAAKoB,UAAU,YAAD0F,OAAa06B,IACjC/E,MAAO+E,EACR,IACF11B,QAGCs1B,GACF11B,KAAK41B,gBAAgBI,QAAQ,CAC3BD,KAAMzhC,EAAKoB,UAAU,oBACrBq7B,MAAO4E,IAIX31B,KAAKy1B,iBAAmBQ,IAAAA,WAAcP,IAAsBD,EAC1DE,EAAUF,GAEZz1B,KAAKf,SAAWg3B,IAAAA,WAAch3B,GAE9Be,KAAKk2B,wBAA0B,kBACN,IAAtBR,GAAgCj1B,EAAKg1B,qBAAuBE,CAAS,CAC1E,IC5BWQ,EAAgB,SAAAC,GAAA,SAAAD,IAAA,OAAAp2B,EAAAA,EAAAA,GAAA,KAAAo2B,IAAAz1B,EAAAA,EAAAA,GAAA,KAAAy1B,EAAA3wB,UAAA,QAAA3E,EAAAA,EAAAA,GAAAs1B,EAAAC,IAAAt2B,EAAAA,EAAAA,GAAAq2B,EAAA,EAAAh2B,IAAA,aAAAC,MAmB3B,SAAUnM,GAON,IAADwM,EAAA,KAND41B,EAAWpiC,EAAXoiC,YAAWC,EAAAriC,EACXuhC,UAAAA,OAAS,IAAAc,EAAG,GAAEA,EACdb,EAAgBxhC,EAAhBwhC,iBACAnhC,EAAIL,EAAJK,KAAIiiC,EAAAtiC,EACJyhC,kBAAAA,OAAiB,IAAAa,GAAQA,EAAAC,EAAAviC,EACzBgL,SAAAA,OAAQ,IAAAu3B,GAAQA,EAEhBx2B,KAAK3H,QAAUK,IAAAA,SAAW,CACxB29B,YAAAA,EACAb,UAAAA,EACAC,iBAAAA,EACAnhC,KAAAA,EACAohC,kBAAAA,EACAz2B,SAAAA,EACAw3B,cAAc,iCAADr7B,OAAmC1C,IAAAA,YAChDg+B,OAAO,0BAADt7B,OAA4B1C,IAAAA,aACjC,CACD29B,YAAa,CACXM,YAAariC,EAAKoB,UAAU,iCAC5BkhC,YAAatiC,EAAKoB,UAAU,uCAGhCmhC,EAAAA,EAAAA,GAAAV,EAAA,oBAAAU,CAAA,CAAiB72B,KAAK3H,UACtB2H,KAAK82B,UAAUrB,iBAAiBsB,WAAU,SAACjB,GACzCr1B,EAAKgF,QAAQ,2BAA4BqwB,EAC3C,GAAG91B,KACL,GAAC,CAAAG,IAAA,WAAAtJ,IACD,WACE,OAAOoT,GACT,GAAC,CAAA9J,IAAA,YAAAtJ,IAED,WACE,OAAO0+B,CACT,GAEA,CAAAp1B,IAAA,sBAAAC,MAKA,WACE,OAAOJ,KAAK82B,UAAUrB,kBACxB,GAEA,CAAAt1B,IAAA,0BAAAC,MAKA,WACE,OAAOJ,KAAK82B,UAAUZ,yBACxB,IAAC,CAvE0B,CAASc,EAAAA,iB,2VCLjBC,EAAmB,SAAAC,GAAA,SAAAD,IAAA,OAAAl3B,EAAAA,EAAAA,GAAA,KAAAk3B,IAAAv2B,EAAAA,EAAAA,GAAA,KAAAu2B,EAAAzxB,UAAA,QAAA3E,EAAAA,EAAAA,GAAAo2B,EAAAC,IAAAp3B,EAAAA,EAAAA,GAAAm3B,EAAA,EAAA92B,IAAA,eAAAtJ,IACtC,WACE,MAAO,CACL+6B,MAAO,CACLuF,IAAK,CACH,CACEC,UAAW,CACTC,MAAO,8BAGX,CACED,UAAW,CACTC,MAAO,8BAMnB,IAAC,CAlBqC,CAASC,EAAAA,ICC5BC,EAA0B,SAAAC,GAC7C,SAAAD,EAAAtjC,GAII,IAHFyL,EAAKzL,EAALyL,MACA+3B,EAAKxjC,EAALwjC,MACAC,EAAUzjC,EAAVyjC,YAAU33B,EAAAA,EAAAA,GAAA,KAAAw3B,GAEV,IAAMI,EAAc,CAACC,EAAAA,IAAgB,OAAAl3B,EAAAA,EAAAA,GAAA,KAAA62B,EAAA,CAE/B,CACJI,YAAAA,EACAj4B,MAAAA,EACA+3B,MAAAA,EACAC,WAAAA,EACAG,mBAAmB,IAEvB,CAAC,OAAAh3B,EAAAA,EAAAA,GAAA02B,EAAAC,IAAA13B,EAAAA,EAAAA,GAAAy3B,EAAA,EAAAp3B,IAAA,mBAAAC,MAED,WACE,OAAAy2B,EAAAA,EAAAA,GAAAU,EAAA,0BAAAV,CAAA,CAA8B,iBAAahzB,GAAW,GACxD,IAAC,CAnB4C,CAASi0B,EAAAA,ICYlDC,EAAiB,WAAH,MAAS,EAAG,EAE5BC,EAAyB,KAgBtB,IAAMC,EAAiB,SAAAC,GAAA,SAAAD,IAAA,OAAAl4B,EAAAA,EAAAA,GAAA,KAAAk4B,IAAAv3B,EAAAA,EAAAA,GAAA,KAAAu3B,EAAAzyB,UAAA,QAAA3E,EAAAA,EAAAA,GAAAo3B,EAAAC,IAAAp4B,EAAAA,EAAAA,GAAAm4B,EAAA,EAAA93B,IAAA,cAAAC,MAC5B,SAAWnM,GAcP,IAADwM,EAAA,KAbD03B,EAAMlkC,EAANkkC,OACAz4B,EAAKzL,EAALyL,MACA+3B,EAAKxjC,EAALwjC,MACAW,EAAUnkC,EAAVmkC,WACAC,EAASpkC,EAATokC,UACAC,EAAUrkC,EAAVqkC,WACAC,EAAgBtkC,EAAhBskC,iBACAC,EAAavkC,EAAbukC,cACAC,EAAcxkC,EAAdwkC,eACApO,EAAap2B,EAAbo2B,cACAqO,EAA4BzkC,EAA5BykC,6BACAC,EAAoB1kC,EAApB0kC,qBACAC,EAAO3kC,EAAP2kC,SAEA/B,EAAAA,EAAAA,GAAAoB,EAAA,kBAAApB,CAAA,CAAe,CACbuB,WAAAA,EACAC,UAAAA,EACAC,WAAAA,EACA54B,MAAAA,EACA+3B,MAAAA,KAEFz3B,KAAK64B,aAAc,EACnB74B,KAAKqqB,cAAgBA,EACrBrqB,KAAKm4B,OAASA,EACdn4B,KAAK24B,qBAAuBA,EAC5B34B,KAAK44B,QAAUA,EACf,IAAME,EAAe,IAAIvB,EAA2B,CAClD73B,MAAAA,EACA+3B,MAAAA,EACAC,WAAY13B,OAGdA,KAAK+4B,WAAargC,IAAAA,YAAc4/B,GAC5B,IAAIrB,EAAoB,CACxBj+B,KAAM,CACJ0G,MAAAA,EACA+3B,MAAAA,EACAuB,qBAAsBtgC,IAAAA,KAAOsH,KAAKg5B,qBAAsBh5B,SAEvD,IAAIs4B,EAAWrB,oBAAoB,CAAEj+B,KAAM,CAAE0G,MAAAA,EAAO+3B,MAAAA,KAE3D,IAAMwB,EAAaT,EAAcx4B,KAAK+4B,WAAYD,GAE9CI,GAAc,EA6ClB,OA5CAl5B,KAAKm5B,MAAOC,EAAAA,EAAAA,GAAa,CACvBH,WAAAA,EACAI,QAASZ,EAAez4B,KAAM84B,GAC9BP,iBAAAA,IAEFe,EAAAA,GAAyBC,OAAOz+B,WAC9B,cACA,CAAElC,KAAM,OAAQwH,MAAO,GACvB,gCACA,2BAGFs4B,EAA6B14B,KAAMA,KAAK+4B,YACxC1O,EAAclkB,GAAG,wBAAwB,WAClC1F,EAAKo4B,cACRW,EAAAA,EAAAA,IACE/4B,EAAK04B,KAAKtjC,SACV4K,EAAK4pB,cAAciI,qBAAqB,EAG9C,IAEAtyB,KAAKm5B,KAAKtjC,SAASsQ,GAAG,cAAc,SAACszB,GAG/BP,EACFA,GAAc,EAGhBI,EAAAA,GAAyBI,iBAAiBD,EAASh5B,EAAK04B,KAAKtjC,SAAUojC,EAAWrgC,KACpF,IACAoH,KAAK25B,UAAU,0BAEf35B,KAAKm5B,KAAKtjC,SAASsQ,GAAG,UAAWnG,KAAK45B,eAAgB55B,MACtDA,KAAKm5B,KAAKtjC,SAASsQ,GAAG,gBAAiBnG,KAAK65B,uBAAwB75B,MACpEA,KAAKmG,GAAG,aAAcnG,KAAK85B,WAAY95B,MACvCs5B,EAAAA,GAAyBS,gBAAgB5zB,GAAG,iCAAkCnG,KAAKg6B,cAAeh6B,MAElGA,KAAKi6B,gCAAiC,EAEtCj6B,KAAKm5B,KAAKtjC,SAASqkC,KAAK,aAAa,WACnCz5B,EAAK04B,KAAKtjC,SAASqkC,KAAK,aAAa,WAAQz5B,EAAKk4B,sBAAwB,GAC5E,IAEO34B,KAAKm5B,KAAKtjC,QACnB,GAAC,CAAAsK,IAAA,WAAAtJ,IAED,WACE,OAAOkhC,CACT,GAAC,CAAA53B,IAAA,kBAAAC,MAED,WACMJ,KAAKm5B,KAAKgB,YAAYC,gBAA8D,IAA5Cp6B,KAAKzK,EAAE,eAAekJ,WAAWY,QAC3EW,KAAKzK,EAAE,eAAe8kC,OAAOr6B,KAAKm5B,KAAKgB,YAAYC,eAAev1B,IAEtE,GAAC,CAAA1E,IAAA,0BAAAC,MAED,WACE,IAAMk6B,EAAWhB,EAAAA,GAAyBiB,YAAYC,gBAChDC,EAAkB/hC,IAAAA,OAAS4hC,EAAU,mBAC3C,OAA2B,KAApBG,GAA8C,qBAApBA,CACnC,GAAC,CAAAt6B,IAAA,eAAAC,MAED,SAAa/H,GACX,IAAIqiC,EAAOhiC,IAAAA,SAAW,CAAC,EAAG,CACxBiiC,aAAa,EACbL,SAAUhB,EAAAA,GAAyBiB,YAAYC,kBAE7C9hC,IAAAA,SAAWL,KACbqiC,EAAOhiC,IAAAA,SAAW,CAAC,EAAGgiC,EAAMriC,IAE9B2H,KAAK46B,mBAAmBF,EAC1B,GAAC,CAAAv6B,IAAA,aAAAC,MAED,SAAWqB,GACT,IAAMo5B,EAAUniC,IAAAA,IAAM+I,EAAM,YAAc/I,IAAAA,OAAS,CAAEoiC,SAAUr5B,EAAKq5B,UAAYr5B,EAAKs5B,cAAWl3B,EAChG7D,KAAK46B,mBAAmB,CACtBxC,WAAY32B,EAAKq5B,SAAWr5B,EAAKq5B,SAASn7B,GAAKK,KAAKpD,MAAM/F,IAAI,cAC9DwhC,UAAW52B,EAAKs5B,QAAQp7B,GACxBq7B,WAAY,CAACv5B,GACbk5B,aAAa,EACbE,QAAAA,EACAP,SAAU5hC,IAAAA,OAAS+I,EAAM,aAE7B,GAAC,CAAAtB,IAAA,yBAAAC,MAED,SAAuBuB,GACrB,GAAqB,IAAjBA,EAAMtC,OAAV,CAIA,IAAMoC,EAAOE,EAAM,GACbk5B,EAAUniC,IAAAA,IAAM+I,EAAM,YAAc/I,IAAAA,OAAS,CAAEoiC,SAAUr5B,EAAKq5B,UAAYr5B,EAAKs5B,cAAWl3B,EAChG7D,KAAK46B,mBAAmB,CACtBxC,WAAY32B,EAAKq5B,SAAWr5B,EAAKq5B,SAASn7B,GAAKK,KAAKpD,MAAM/F,IAAI,cAC9DwhC,UAAW52B,EAAKs5B,QAAQp7B,GACxBq7B,WAAYr5B,EAAMs5B,UAClBN,aAAa,EACbE,QAAAA,EACAP,SAAU5hC,IAAAA,OAAS+I,EAAM,aAV3B,CAYF,GAAC,CAAAtB,IAAA,qCAAAC,MAED,WAAsC,IAADU,EAAA,KAC7Bo6B,EAAc,WAClBp6B,EAAKvL,EAAE,iBAAiBgF,OACxBuG,EAAKq4B,KAAKgC,QAAQC,iBAAiBC,iBACrC,EACMC,EAAc,WAClBx6B,EAAKvL,EAAE,iBAAiBV,OACxBiM,EAAKq4B,KAAKgC,QAAQC,iBAAiBG,kBACnCz6B,EAAKq4B,KAAKtjC,SAAS2lC,IAAI,YAAaN,EACtC,EACAl7B,KAAKy7B,6BAA+B,IAAIC,EAAAA,6BAA6B,CACnEh8B,MAAO,CACLi8B,WAAYrC,EAAAA,GAAyB34B,MAAM9J,IAAI,eAC/C+kC,UAAWtC,EAAAA,GAAyB34B,MAAM9J,IAAI,cAC9CuhC,WAAYp4B,KAAKpD,MAAM/F,IAAI,cAC3BwhC,UAAWr4B,KAAKpD,MAAM/F,IAAI,cAE5BglC,wBAAqD,IAA5B77B,KAAKpD,MAAM/F,IAAI,SACxCmC,KAAMsgC,EAAAA,GACNwC,UAAW,UACV1hC,SACH4F,KAAKy7B,6BAA6Bt1B,GAAG,iBAAiB,kBAAMrF,EAAKq4B,KAAKtjC,SAASiP,SAAQ,EAAK,IAC5F9E,KAAKy7B,6BAA6Bt1B,GAAG,mBAAmB,WACtD+0B,IACAp6B,EAAKq4B,KAAKtjC,SAASsQ,GAAG,YAAa+0B,EACrC,IACAl7B,KAAKy7B,6BAA6Bt1B,GAAG,kBAAkB,WACrDm1B,GACF,IACAt7B,KAAKy7B,6BAA6Bt1B,GAAG,0BAA0B,SAAC41B,GAC9B,IAA5BrjC,IAAAA,KAAOqjC,IACTT,GAEJ,IACAt7B,KAAKzK,EAAE,6CAA6C8kC,OAAOr6B,KAAKy7B,6BAA6B/1B,IAC7F1F,KAAKmG,GAAG,4BAA4B,kBAAMrF,EAAK26B,6BAA6Bh2B,QAAQ,UAAU,IAC9FzF,KAAKmG,GAAG,oBAAoB,kBAAMrF,EAAK26B,6BAA6Bh2B,QAAQ,UAAU,IACtFzF,KAAKmG,GAAG,uBAAuB,kBAAMrF,EAAKvL,EAAE,6CAA6CgF,MAAM,IAC/F,IAAMyhC,EAA8B,WAC9Bl7B,EAAKvL,EAAE,iDAAiD8J,OAAS,EACnE3G,IAAAA,OAAQ,kBAAMsjC,GAA6B,GAAE,MAG/Cl7B,EAAK26B,6BAA6BQ,aAClCn7B,EAAK26B,6BAA6Bh2B,QAAQ,WAC5C,EACAzF,KAAKmG,GAAG,wBAAwB,WAC9BrF,EAAKvL,EAAE,6CAA6CV,OACpDmnC,GACF,GACF,GAAC,CAAA77B,IAAA,cAAAC,MAED,WAAe,IAAD87B,EAAA,KAWZ,OAVAl8B,KAAKqqB,cAAc+H,gBACnBpyB,KAAKqqB,cAAcgI,gCAAgCr6B,MAAK,WACjDkkC,EAAKrD,cACRW,EAAAA,EAAAA,IACE0C,EAAK/C,KAAKtjC,SACVqmC,EAAK7R,cAAciI,qBAAqB,EAG9C,KACAuE,EAAAA,EAAAA,GAAAoB,EAAA,qBAAApB,CAAA,IACO72B,IACT,GAAC,CAAAG,IAAA,gCAAAC,MAED,WAAgF,IAAlDk6B,EAAQ90B,UAAAnG,OAAA,QAAAwE,IAAA2B,UAAA,GAAAA,UAAA,GAAG8zB,EAAAA,GAAyBiB,YAChE,OAAO4B,EAAAA,EAAAA,IACL7B,EACAhB,EAAAA,GAAyBiB,YAAY6B,YAEzC,GAAC,CAAAj8B,IAAA,qBAAAC,MAED,SAAkBnI,GASd,IAtPsB2gC,EAsPvByD,EAAA,KARDjE,EAAUngC,EAAVmgC,WACAC,EAASpgC,EAATogC,UAASiE,EAAArkC,EACT+iC,WAAAA,OAAU,IAAAsB,EAAG,GAAEA,EAAAC,EAAAtkC,EACf0iC,YAAAA,OAAW,IAAA4B,GAAOA,EAClB1B,EAAO5iC,EAAP4iC,QACAP,EAAQriC,EAARqiC,SACAkC,EAAcvkC,EAAdukC,eACAC,EAAUxkC,EAAVwkC,WAEAz8B,KAAKyF,QAAQ,wBAvPWmzB,EAyPL54B,KAAK44B,QAxPK,OAA3BZ,IACFA,EAAyB,IAAI9uB,IAAJ,EAAY,SAACwzB,GACpC9D,IAAU5gC,MAAK,SAAC2kC,GACdrD,EAAAA,GAAyBsD,gBAAkBD,EAAoBE,QAC7D,yCACG7kC,MAAK,SAACoxB,GACLsT,EAAQtT,EAAO0T,gBACjB,GACN,GACF,KAEK9E,GA6O4BhgC,MAAK,SAAC8kC,GACjCL,GACFA,EAAWM,WAEb,IAAMC,EAA0BX,EAAKF,8BACnC7B,EACAhB,EAAAA,GAAyBiB,YAAY6B,aAEvCC,EAAKY,gBAAkB,IAAIH,EAAgB,CACzC1E,WAAY1/B,IAAAA,YAAc0/B,GAAciE,EAAKz/B,MAAM/F,IAAI,cAAgBuhC,EACvEC,UAAW3/B,IAAAA,YAAc2/B,GAAagE,EAAKz/B,MAAM/F,IAAI,aAAewhC,EACpE34B,MAAO28B,EAAKz/B,MAAM/F,IAAI,SACtB4gC,MAAO4E,EAAKz/B,MAAM/F,IAAI,SACtBmkC,WAAAA,EACAL,YAAAA,EACAE,QAAAA,EACAqC,wBAAyBb,EAAKa,0BAC9BF,wBAAAA,EACAG,gBAAiB7C,GAAYhB,EAAAA,GAAyBiB,YAAYC,gBAClE4C,eAAgBvC,GAAWvB,EAAAA,GAAyBiB,YAAY8C,eAChEb,eAAAA,IAEFH,EAAKY,gBAAgB92B,GAAG,QAASzN,IAAAA,KAAO2jC,EAAKhnC,QAASgnC,IACtDA,EAAKiB,WAAWjB,EAAKY,iBACjBR,GACFA,EAAWc,MAEf,GACF,GAAC,CAAAp9B,IAAA,UAAAC,MAED,SAAQo9B,GACNx9B,KAAKi9B,gBAAkB,KACvBj9B,KAAKyF,QAAQ,wBACT+3B,GACFx9B,KAAKyF,QAAQ,mBAEjB,GAAC,CAAAtF,IAAA,gBAAAC,MAED,SAAcvK,GACRmK,KAAKm5B,MAAQn5B,KAAKm5B,KAAKtjC,WAAaA,IACtCmK,KAAKm5B,KAAKtjC,SAASiP,SAAQ,GACvB9E,KAAKy7B,8BACPz7B,KAAKy7B,6BAA6Bh2B,QAAQ,WAGhD,GAAC,CAAAtF,IAAA,SAAAC,MAED,WACEk5B,EAAAA,GAAyBS,gBAAgByB,IAAI,KAAM,KAAMx7B,MACrDA,KAAKy7B,8BACPz7B,KAAKy7B,6BAA6Bv0B,SAEpClH,KAAK64B,aAAc,GACnBhC,EAAAA,EAAAA,GAAAoB,EAAA,gBAAApB,CAAA,GACF,GAAC,CAAA12B,IAAA,0BAAAC,MAED,WACE,IAAMV,EAAQM,KAAKpD,MAAM/F,IAAI,SACrBvC,EAASglC,EAAAA,GAAThlC,KACR,OAAOoE,IAAAA,QAAQ4K,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACdm6B,EAAAA,GAAeC,QAAUppC,EAAKoB,UAAU,0DACxC+nC,EAAAA,GAAe3C,SAAWxmC,EAAKoB,UAAU,2DACzCgK,EACL,GAAC,CAAAS,IAAA,uBAAAC,MAED,SAAqBoC,GACf9J,IAAAA,IAAM8J,EAAKm7B,QAAQ,SAAAC,GAAG,MAAiB,0BAAbA,EAAIC,IAAgC,IAChE79B,KAAKi6B,gCAAiC,EAEtC1wB,OAAOC,IAAIC,MAAMC,YAAYE,UAAU0vB,EAAAA,GAAyBhlC,KAAKoB,UAAU,uBAEnF,GAAC,CAAAyK,IAAA,uBAAAC,MAED,SAAqB/H,EAASmK,GAO5B,OANI9J,IAAAA,IAAM8J,EAAM,UACdxC,KAAK89B,qBAAqBt7B,GAE1BxC,KAAKm5B,KAAKtjC,SAASkoC,cAGdv7B,CACT,GAAC,CAAArC,IAAA,iBAAAC,MAED,SAAexD,EAAO6E,EAAMwE,GAAW,IAAD+3B,EAAA,KACpC,GAAIphC,EAAO,CACT,IAAI4gC,GAAU,EAUd,GATiB,mBAAbv3B,IACFu3B,EAAU/7B,EAAKw8B,aAAaC,aAAethC,EAAMuhC,cACjD18B,EAAKw8B,aAAaC,WAAathC,EAAMuhC,eAGtB,oBAAbl4B,IACFu3B,GAAU,GAGRA,EAAS,CACX,IAAMY,GAAUx5B,EAAAA,EAAAA,aAAY5E,KAAK6E,KACjC7E,KAAK+4B,WAAW3yB,OAAO3E,GACpB8E,OAAM,WACLgD,OAAOC,IAAIC,MAAMC,YAAYE,UAAU0vB,EAAAA,GAAyBhlC,KAAKoB,UAAU,uBACjF,IACCiP,SAAQ,WACPq5B,EAAK7E,KAAKtjC,SAASiP,SAAQ,GAC3Bs5B,GACF,GACJ,CACF,CACF,GAAC,CAAAj+B,IAAA,aAAAC,MAED,SAAWlM,GAAO,IAADmqC,EAAA,KAEf3lC,IAAAA,OAAQ,WACF2lC,EAAK33B,YACP23B,EAAK33B,WAAWQ,SAElBm3B,EAAK33B,WAAaxS,EAClBmqC,EAAKlF,KAAKtjC,SAASyoC,aAAaD,EAAK33B,YAErC23B,EAAK33B,WAAWwzB,KAAK,SAAS,SAACzpB,GAC7B4tB,EAAKlF,KAAKtjC,SAASyoC,aAAa,MAChCD,EAAK33B,WAAWQ,SAChBm3B,EAAK33B,WAAa,KAEd+J,GACF4tB,EAAKlF,KAAKtjC,SAASiP,SAAQ,EAE/B,IACAyE,OAAOg1B,SAAS,EAAG,EACrB,GACF,GAAC,CAAAp+B,IAAA,YAAAC,MAED,SAAUo+B,GACJ9lC,IAAAA,YAAcsH,KAAKm5B,OACrBG,EAAAA,GAAyBC,OAAOz+B,WAC9B,cACA,CAAElC,KAAM,OAAQwH,MAAO,GACvBo+B,EACA,6BAGN,GAAC,CAAAr+B,IAAA,YAAAtJ,IAED,WACE,MAAO,gBACT,IAAC,CA1X2B,CAAS4nC,EAAAA,0B,2MC3BhC,SAASC,EAAkBzqC,GAqB9B,IAnBFo2B,EAAap2B,EAAbo2B,cACA8N,EAAMlkC,EAANkkC,OACAwG,EAAQ1qC,EAAR0qC,SACAC,EAAkB3qC,EAAlB2qC,mBACAC,EAAW5qC,EAAX4qC,YACAC,EAAqB7qC,EAArB6qC,sBACAvG,EAAgBtkC,EAAhBskC,iBACAI,EAAoB1kC,EAApB0kC,qBAEAoG,EAAoB9qC,EAApB8qC,qBACAzG,EAAUrkC,EAAVqkC,WACAmE,EAAUxoC,EAAVwoC,WACA/8B,EAAKzL,EAALyL,MACA+3B,EAAKxjC,EAALwjC,MACAuH,EAAQ/qC,EAAR+qC,SACA5G,EAAUnkC,EAAVmkC,WACAC,EAASpkC,EAATokC,UACAO,EAAO3kC,EAAP2kC,QAAOqG,EAAAhrC,EACP2C,YAAAA,OAAW,IAAAqoC,EAAG,CAAC,EAACA,EAEhB,OAAO,IAAIhH,EAAkB,CAC3BE,OAAAA,EACAz4B,MAAAA,EACA04B,WAAAA,EACAC,UAAAA,EACAZ,MAAAA,EACAa,WAAAA,EACAjO,cAAAA,EACAkO,iBAAAA,EACAI,qBAAAA,EACAH,cAAe,SAACO,EAAYD,GAAY,OClCrC,SAAkB7kC,GAUrB,IATF8kC,EAAU9kC,EAAV8kC,WACAiG,EAAQ/qC,EAAR+qC,SACAzG,EAAgBtkC,EAAhBskC,iBACAlO,EAAap2B,EAAbo2B,cACAyO,EAAY7kC,EAAZ6kC,aACA6F,EAAQ1qC,EAAR0qC,SACAC,EAAkB3qC,EAAlB2qC,mBACAtqC,EAAIL,EAAJK,KACAsC,EAAW3C,EAAX2C,YAIMsoC,EAAY5qC,EAAKoB,UAAU,+BAC3BujC,GAAUhQ,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACdrwB,KAAMomC,EACNG,eAAgB,gBAChBC,aAAc,CAAC,QAAS,kBACxBC,gBAAiB,CAAE,aAAcH,GACjC5G,WAAYS,EAAWuG,gBACvB1N,MAAOmH,EAAWwG,WAClBC,KAAM,CACJC,SAXa,CAAC,uBAahBC,QAAS5G,EAAa6G,mBACtBC,UAAW,CACThxB,OAAQ,CACNlQ,KAAM,SACNmhC,OAAQjB,GAAuB,kBAAMrpC,IAAE,uCAAuCoV,QAAQ,EACtFm1B,WAAY,CAAE,aAAcxrC,EAAKoB,UAAU,6BAA8B,CAAEwpC,UAAAA,MAE7Ea,aAAa,GAEfzrC,KAAMglC,EAAAA,GAAyBhlC,MAC3B,CACF0rC,WAAW,EACX3V,cAAAA,EACA4V,eAAgB,CACdh2B,SAAUi2B,EAAAA,MAEX,CAAF,GACDxS,kBAAmB4L,EAAAA,GAAyB6G,mBAC5CjqC,OAAQojC,EAAAA,GAAyBpjC,SAUnC,OAPAkqC,EAAAA,EAAAA,IAAc7H,EAAkBU,EAAWyG,QAAS,qBAAsB9oC,GAC1EqiC,EAAWX,WAAa5/B,IAAAA,KAAOugC,EAAWX,WAAY,SAElDqG,IACF1F,EAAW2G,UAAUjB,SAAWA,GAG3B1F,CACT,CDnBiDoH,CAAU,CACrDtH,WAAAA,EACAiG,SAAAA,EACA3U,cAAAA,EACAkO,iBAAAA,EACAO,aAAAA,EACA6F,SAAAA,EACAC,mBAAAA,EACAtqC,KAAMglC,EAAAA,GAAyBhlC,KAC/BsC,YAAAA,GACA,EACF6hC,eAAgB,SAACvkC,EAAM4kC,GAAY,OExBhC,SAAmB7kC,GAStB,IARFC,EAAID,EAAJC,KACA4kC,EAAY7kC,EAAZ6kC,aACAp5B,EAAKzL,EAALyL,MACA+3B,EAAKxjC,EAALwjC,MACAgF,EAAUxoC,EAAVwoC,WACApS,EAAap2B,EAAbo2B,cACAwU,EAAW5qC,EAAX4qC,YACAC,EAAqB7qC,EAArB6qC,sBAEMwB,EAAsBxH,EAAayH,yBACjCjsC,EAASglC,EAAAA,GAAThlC,KACFksC,GAAuBC,EAAAA,EAAAA,GAA4B,CACvDnsC,KAAAA,EACAk4B,KAAM,CACJkU,eAAgB,iCAChBC,gBAAiB,kCACjBC,eAAgB,yCAElBC,QAAS,CACPC,cAAe,4CAEjBlqC,YAAa0iC,EAAAA,GAAyBiB,YAAY6B,YAClD/R,cAAAA,EACA0W,aAAc,CAIZC,eAAe,EACfC,iBAAiB,KAGrBX,EAAoBY,kBAAoB,uBACxC,IAAMC,EAAUzhC,IAAU+9B,EAAAA,GAAe1C,SAAWtD,IAAU2J,EAAAA,GAAerG,QACzE,mBACA,oBACJ,OAAOriC,IAAAA,QAAU,CAAC,CAEhB2oC,OAAQC,EAAAA,EACRprC,OAAQ,CACNq5B,UAAW+J,EAAAA,GAAyBpjC,OACpCqrC,OAAQ9E,IAET,CACD4E,OAAQG,EAAAA,iBACRtrC,QAAM+yB,EAAAA,EAAAA,GAAA,CACJwY,mBAAoB,CAAC,GAAI,GAAI,IAAK,KAClCC,kBAAkB,EAClBC,aAAcrtC,EAAKoB,UAAU,iBAC7BksC,mBAAoBttC,EAAKoB,UAAU,gBAC/B,CACFmsC,SAAU,GACVC,oBAAqBxtC,EAAKoB,UAAU,uBAGzC0F,OAAK,CACJ,CACEimC,OAAQU,EAAAA,GACR7rC,OAAQ,CACN8rC,YAAY,EACZnD,YAAAA,EACAoD,aAAc3I,EAAAA,GAAyB2I,aACvC3tC,KAAMglC,EAAAA,GAAyBhlC,KAC/BiU,OAAQ+wB,EAAAA,GAAyB/wB,OACjC25B,aAAa,EACbjpC,OAAQqgC,EAAAA,GAAyB,KAADl+B,OAAM+lC,IACtCgB,OAAQ,gBACRC,iBAAiBC,EAAAA,EAAAA,IAAmBlB,MAErC,EAADlY,EAAAA,EAAAA,GAAA,CACFoY,OAAQ/H,EAAAA,GAAyBgJ,6BAC7B,CACFpsC,OAAQ,CACNqsC,SAAU7pC,IAAAA,OAAS8pC,EAAAA,IAAeA,EAAAA,GAAcC,WAChDtB,OAAAA,EACAuB,mBAAoB,SAAAtL,GAAS,OAAIuL,EAAAA,EAAAA,IAAuB,CAAEvL,UAAAA,GAAY,EACtE4K,YAAY,KAGf,CACDX,OAAQuB,EAAAA,EACR1sC,OAAQ,CACN2sC,cAAe,CACbC,SAAUC,EAAAA,IAEZC,qBAAqB,EACrBC,kBAAmBvqC,IAAAA,WAAawqC,EAAAA,GAA8B,CAC5DC,EAAAA,GAAAA,SACAA,EAAAA,GAAAA,SACAA,EAAAA,GAAAA,aACAA,EAAAA,GAAAA,eAEFvsC,YAAa0iC,EAAAA,GAAyBiB,YAAY6B,YAClDhgC,IAAKk9B,EAAAA,GAAyBtF,YAC9B1/B,KAAMglC,EAAAA,GAAyBhlC,KAC/BqM,MAAO24B,EAAAA,GAAyB34B,MAChCyiC,WAAY9J,EAAAA,GAAyB+J,kBAAkBD,WACvDE,WAAYhK,EAAAA,GAAyB+J,kBAAkBC,cAEvDhK,EAAAA,GAAyBpjC,OAAOW,IAAI,4BACvCyiC,EAAAA,GAAyBiB,YAAY6B,YAAYmH,gBAAkB,CAClElC,OAAQmC,EAAAA,EACRttC,OAAQ,CAAE5B,KAAAA,IACT,CACD+sC,OAAQoC,EAAAA,gBACRvtC,OAAQ,CAAEwP,GAAInQ,IAAE,qBACf,CACD8rC,OAAQqC,EAAAA,EACRxtC,OAAQ,CAAE5B,KAAAA,IACT,CACD+sC,OAAQsC,EAAAA,EACRztC,OAAQoqC,IACTrX,EAAAA,EAAAA,GAAA,CACCoY,OAAQ/H,EAAAA,GAAyBsK,sBAC7B,CACF1tC,OAAQ,CACN8rC,YAAY,EACZtjC,KAAM,SACNmJ,GAAI,mBACJ06B,SAAU7pC,IAAAA,OAAS8pC,EAAAA,IAAeA,EAAAA,GAAcC,WAChDtB,QAAQ0C,EAAAA,EAAAA,IAAiB3vC,GACzBA,KAAAA,EACA+K,SAAUq6B,EAAAA,GAAyBiB,YAAY6B,YAAYmH,gBAC9CjK,EAAAA,GAAyBpjC,OAAOW,IAAI,6BAGpD,CACDwqC,OAAQyC,EAAAA,EACR5tC,OAAQ,CACN8sC,qBAAqB,EACrBe,kBAAmB,CACjB,2BACA,2BACA,sCAEF3nC,IAAKk9B,EAAAA,GAAyBtF,YAC9BrzB,MAAO24B,EAAAA,GAAyB34B,MAChCm+B,sBAAuBA,GAA0B,SAACkF,GAC5Cz6B,OAAOC,KAAOD,OAAOC,IAAIC,OAASF,OAAOC,IAAIC,MAAMw6B,SAErD16B,OAAOC,IAAIC,MAAMw6B,QAAQC,4BAA4BF,EAEzD,EAEAnF,YAAAA,IAED,CACDwC,OAAQ8C,EAAAA,yBACP,CACD9C,OAAQ+C,EAAAA,WACRluC,OAAQ,CAAE5B,KAAAA,IACT,CACD+sC,OAAQb,GACP,CACDa,OAAQgD,EAAAA,KAEZ,CFpI4CC,CAAW,CACjDpwC,KAAAA,EACA4kC,aAAAA,EACAp5B,MAAAA,EACA+3B,MAAAA,EACAgF,WAAAA,EACApS,cAAAA,EACAwU,YAAAA,EACAC,sBAAAA,IACC1jC,OAAO2jC,EAAqB7qC,GAAM,EACrCwkC,6BAA8B,SAACxkC,EAAM6kC,GAAU,OAAKwL,EAAAA,EAAAA,IAAmB,CACrE1uC,SAAU3B,EACVwL,MAAO,CACL04B,WAAAA,GAEFE,WAAYS,EAAWwG,WACvBjrC,KAAMglC,EAAAA,GAAyBhlC,MAC/B,EACFskC,QAAAA,GAEJ,C,sSGlEa4L,EAAkB,SAAAtM,GAAA,SAAAsM,IAAA,OAAAzkC,EAAAA,EAAAA,GAAA,KAAAykC,IAAA9jC,EAAAA,EAAAA,GAAA,KAAA8jC,EAAAh/B,UAAA,QAAA3E,EAAAA,EAAAA,GAAA2jC,EAAAtM,IAAAp4B,EAAAA,EAAAA,GAAA0kC,EAAA,EAAArkC,IAAA,cAAAC,MAC7B,SAAWnM,GAYP,IAADwM,EAAA,KAXDg3B,EAAKxjC,EAALwjC,MACAW,EAAUnkC,EAAVmkC,WACAC,EAASpkC,EAATokC,UACA2C,EAAU/mC,EAAV+mC,WACAL,EAAW1mC,EAAX0mC,YACA8J,EAAaxwC,EAAbwwC,cACAvH,EAAuBjpC,EAAvBipC,wBAAuBwH,EAAAzwC,EACvB+oC,wBAAAA,OAAuB,IAAA0H,GAAQA,EAC/BvH,EAAelpC,EAAfkpC,gBACAC,EAAcnpC,EAAdmpC,eACAX,EAAUxoC,EAAVwoC,WAEM9J,EAAW3yB,KAAK2kC,YAAYzH,EAAyBzF,GAC3Dz3B,KAAKg9B,wBAA0BA,EAC/B,IAAM4H,EAAqBzH,IAAqD,aAAjCA,EAAgB0H,cAAgE,IAAjC1H,EAAgB0H,cACxGC,EAAe5H,GAClBC,GAAmByH,GAAmC,qBAAbjS,EACtCoS,GAAyBC,EAAAA,EAAAA,IAAqB7H,GAuBpD,OArBAn9B,KAAKilC,gBAAkB,IAAI3L,EAAAA,GAAyBsD,gBAAgB,CAClExE,WAAAA,EACAC,UAAAA,EACA1F,SAAAA,EACAuS,eAAgBlK,EAChBL,YAAAA,EACAwK,kBAAkB,EAClBV,cAAAA,EACAzC,YAAY,EACZ8C,aAAAA,EACA9H,wBAAAA,EACAG,gBAAAA,EACAC,eAAAA,EACAX,WAAAA,EACA2I,wBAAyBL,IAA2BH,EACpDS,eAAgBN,EAAyBO,EAAAA,EAAsBC,cAAW1hC,EAC1E2hC,SAAUT,EAAyB,CACjCjC,SAAU,iCACRj/B,IAEN7D,KAAKilC,gBAAgB9+B,GAAG,uBAAuB,kBAAM1F,EAAKgF,QAAQ,sBAAsB,IACjFzF,KAAKilC,eACd,GAAC,CAAA9kC,IAAA,cAAAC,MAED,SAAY88B,EAAyBzF,GACnC,OAAIA,IAAU2J,EAAAA,GAAetG,SACpB,mBAELoC,EACK,0BAEF,mBACT,GAAC,CAAA/8B,IAAA,WAAAC,MAED,SAAQnI,GAGJ,IAFFmgC,EAAUngC,EAAVmgC,WACAC,EAASpgC,EAATogC,UAKA,OAHAr4B,KAAKilC,gBAAgBQ,cAAcrN,GACnCp4B,KAAKilC,gBAAgBS,aAAarN,GAClCr4B,KAAKilC,gBAAgBU,sBACd3lC,IACT,GAAC,CAAAG,IAAA,WAAAC,MAED,WACE,OAAOJ,KAAKilC,gBAAgBW,UAC9B,GAAC,CAAAzlC,IAAA,OAAAC,MAED,WACE,OAAOJ,KAAKilC,gBAAgBY,sBAC9B,GAAC,CAAA1lC,IAAA,yBAAAC,MAED,WACE,IAAM46B,EAAah7B,KAAKilC,gBAAgBa,YACxC,OAAO9K,EAAW+K,iBAAiB1mC,OACjC27B,EAAWgL,UAAU3mC,OAAS27B,EAAWiL,OAAO5mC,MACpD,GAAC,CAAAc,IAAA,YAAAC,MAED,WACE,IAAMu9B,EAAS39B,KAAKilC,gBAAgBiB,UAAUvI,SAC9C,OAAOA,GAAUA,EAAOt+B,MAC1B,IAAC,CAlF4B,CAASo/B,EAAAA,0BCDnBlJ,GAASz1B,EAAAA,EAAAA,IAC5B,SAAAy1B,IAA2B,IAAD90B,EAAA,KAAdpI,EAAOmN,UAAAnG,OAAA,QAAAwE,IAAA2B,UAAA,GAAAA,UAAA,GAAG,CAAC,GAACzF,EAAAA,EAAAA,GAAA,KAAAw1B,GACtBv1B,KAAK3H,QAAUA,EACf2H,KAAKN,MAAQrH,EAAQqH,MACrBM,KAAKy3B,MAAQp/B,EAAQo/B,MACrBz3B,KAAKg7B,WAAa3iC,EAAQ2iC,WAC1Bh7B,KAAK26B,YAAc1E,IAAAA,YAAc,GACjCj2B,KAAKmmC,iBAAmBlQ,IAAAA,aACxBj2B,KAAKomC,gBAAkBnQ,IAAAA,aACvBj2B,KAAKqmC,kCAAoCpQ,IAAAA,UAAY,kBAClDv9B,IAAAA,YAAc+H,EAAKpI,QAAQggC,aAAehgC,EAAQiuC,uBAChD7lC,EAAKf,QAAU+9B,EAAAA,GAAeC,SAC5Bj9B,EAAKf,QAAU+9B,EAAAA,GAAe3C,UAAYr6B,EAAKg3B,QAAU2J,EAAAA,GAAerG,QAAS,IACxF/6B,KAAKumC,0BAA4BtQ,IAAAA,UAAY,kBAC3Cx1B,EAAK0lC,oBAAsB1lC,EAAK2lC,iBAAiB,IACnDpmC,KAAKwmC,iBAAmBvQ,IAAAA,UAAY,kBAClCx1B,EAAKk6B,gBAAkBl6B,EAAK0lC,oBAAsB1lC,EAAK2lC,kBAAkB,IAC3EpmC,KAAKymC,2BAA6BxQ,IAAAA,YAAc,EAClD,I,qBCTMyQ,EAAoBr8B,EAAAA,QAApBq8B,gBAEK5J,EAAe,SAAA6J,GAAA,SAAA7J,IAAA,OAAA/8B,EAAAA,EAAAA,GAAA,KAAA+8B,IAAAp8B,EAAAA,EAAAA,GAAA,KAAAo8B,EAAAt3B,UAAA,QAAA3E,EAAAA,EAAAA,GAAAi8B,EAAA6J,IAAA7mC,EAAAA,EAAAA,GAAAg9B,EAAA,EAAA38B,IAAA,aAAAC,MAC1B,SAAUnM,GAaN,IAADwM,EAAA,KAZDf,EAAKzL,EAALyL,MACA+3B,EAAKxjC,EAALwjC,MACAW,EAAUnkC,EAAVmkC,WACAC,EAASpkC,EAATokC,UACA2C,EAAU/mC,EAAV+mC,WACAL,EAAW1mC,EAAX0mC,YACAE,EAAO5mC,EAAP4mC,QACAqC,EAAuBjpC,EAAvBipC,wBAAuBwH,EAAAzwC,EACvB+oC,wBAAAA,OAAuB,IAAA0H,GAAQA,EAC/BtH,EAAcnpC,EAAdmpC,eACAD,EAAelpC,EAAfkpC,gBACAX,EAAcvoC,EAAduoC,eAEAx8B,KAAKw8B,eAAiBA,EACtBx8B,KAAK1L,KAAOglC,EAAAA,GAAyBhlC,KAErC,IAAMgyC,EAAsB5tC,IAAAA,YAAcmiC,GAC1C76B,KAAKkmC,UAAY,IAAI3Q,EAAU,CAC7B71B,MAAAA,EACA+3B,MAAAA,EACAW,WAAAA,EACAC,UAAAA,EACA2C,WAAAA,EACAsL,oBAAAA,IAEFtmC,KAAKg9B,wBAA0BA,EAE/B1D,EAAAA,GAAyBS,gBAAgB5zB,GAAG,gCAAgC,SAACygC,GAC3EnmC,EAAKylC,UAAUvL,YAAYiM,EAC7B,GAAG5mC,MACH,IAAQ6mC,EAAgCvN,EAAAA,GAAyBiB,YAAY6B,YAArEyK,4BAER,GAAI7mC,KAAKkmC,UAAUG,oCAAqC,CACtD,IA4BIS,EA5BEX,EAAmBtL,GAAWA,EAAQC,SAAWpiC,IAAAA,OAAS,CAC9DE,KAAMiiC,EAAQC,SAAS7xB,KACvB89B,OAAQlM,EAAQC,SAASkM,QACxBtuC,IAAAA,KAAOmiC,EAAQC,SAAU,KAAM,OAAQ,SAAU,qBAAuB,KACrEmM,EAAkBpM,GAAWA,EAAQC,SAAWpiC,IAAAA,OAAS,CAC7DE,KAAMiiC,EAAQ5xB,KACd89B,OAAQlM,EAAQmM,OAChB5O,WAAYyC,EAAQC,SAASn7B,GAC7BunC,aAAcrM,EAAQC,SAAS7xB,MAC9BvQ,IAAAA,KAAOmiC,EAAS,KAAM,OAAQ,SAAU,kBAAmB,aAAe,KAEzEsM,EAAwB,CAC1BC,uBAAwB,CAAC,kBAIzBD,EADEN,EACsB,CACtBO,uBAAwB,CAAC,mBAAoB,iBAC7CC,sBAAuB,CAAC,mBACxBC,sBAAuB,CAAC,qBAGF,CACtBF,uBAAwB,CAAC,iBACzBE,sBAAuB,CAAC,qBAO1BR,EAFErP,IAAU2J,EAAAA,GAAerG,QAEF,uNAIA,gLAG3B2L,EACE1mC,KACA,4BACAunC,EAAAA,IAA4Bte,EAAAA,EAAAA,GAAA,CAE1BvpB,MAAAA,EACA+3B,MAAAA,EACAW,WAAAA,EACA9jC,KAAM0L,KAAK1L,KACX6xC,iBAAAA,EACAc,gBAAAA,EACAH,uBAAAA,EACAU,sBAAuB,wHACpBL,GAEL,CACEM,iBAAkB,qBAClBC,gBAAiB,sBAGjBT,GAAmBxP,IAAU2J,EAAAA,GAAerG,QAC9C/6B,KAAK2nC,kBAAkBV,GACdd,GAAoB1O,IAAU2J,EAAAA,GAAetG,UACtD96B,KAAK4nC,mBAAmBzB,EAE5B,MACEnmC,KAAKoB,SAAS,CACZq2B,MAAAA,EACAW,WAAAA,EACAC,UAAAA,EACA2C,WAAAA,EACAL,YAAAA,EACAuC,wBAAAA,EACAF,wBAAAA,EACAI,eAAAA,EACAD,gBAAAA,GAGN,GAAC,CAAAh9B,IAAA,SAAAtJ,IAED,WACE,MAAO,CACL,kBAAmB,OACnB,oBAAqB,SAEzB,GAAC,CAAAsJ,IAAA,WAAAtJ,IAED,WACE,OAAOgxC,GACT,GAAC,CAAA1nC,IAAA,cAAAC,MAED,WAKE,OAJA61B,IAAAA,UAAaj2B,KAAK0F,KAClBmxB,EAAAA,EAAAA,GAAAiG,EAAA,qBAAAjG,CAAA,IACA72B,KAAK8nC,iBACL7R,IAAAA,cAAiBj2B,KAAKkmC,UAAWlmC,KAAK0F,IAC/B1F,IACT,GAAC,CAAAG,IAAA,OAAAC,MAED,WAAQ,IAADU,EAAA,KACL,GAAKd,KAAK+nC,oBAAuB/nC,KAAK+nC,mBAAmBnC,WAAzD,CAKI5lC,KAAK+nC,mBAAmBC,yBADC,KAE3BhoC,KAAKkmC,UAAUO,4BAA2B,GAG5C,IAAMh2B,EAAWzQ,KAAK+nC,mBAAmBtjC,OACrCgM,GACFA,EAASzY,MAAK,SAACiwC,IACQ,IAAjBA,GAA2BnnC,EAAKinC,mBAAmBG,aACrDpnC,EAAK2E,QAAQ,SAAS,EAE1B,GAbF,CAeF,GAAC,CAAAtF,IAAA,SAAAC,MAED,WACEJ,KAAKyF,QAAQ,QACf,GAAC,CAAAtF,IAAA,WAAAC,MAED,SAAQnI,GAUJ,IATFw/B,EAAKx/B,EAALw/B,MACAW,EAAUngC,EAAVmgC,WACAC,EAASpgC,EAATogC,UACA2C,EAAU/iC,EAAV+iC,WACAL,EAAW1iC,EAAX0iC,YACAuC,EAAuBjlC,EAAvBilC,wBACAF,EAAuB/kC,EAAvB+kC,wBACAG,EAAellC,EAAfklC,gBACAC,EAAcnlC,EAAdmlC,eAKIp9B,KAAKw8B,iBACPx8B,KAAKy8B,WAAaz8B,KAAKw8B,eAAe2L,YAAY,0BAA2B,CAAEC,SAAS,IACxFpoC,KAAKy8B,WAAWM,YAElB/8B,KAAKkmC,UAAUC,iBAAiB/N,GAChCp4B,KAAKkmC,UAAUE,gBAAgB/N,GAC/Br4B,KAAKqoC,uBAAuB,CAC1B5Q,MAAAA,EACAW,WAAAA,EACAC,UAAAA,EACA2C,WAAAA,EACAL,YAAAA,EACAuC,wBAAAA,EACAF,wBAAAA,EACAG,gBAAAA,EACAC,eAAAA,GAEJ,GAAC,CAAAj9B,IAAA,yBAAAC,MAED,SAAsBjI,GASlB,IAAD+jC,EAAA,KARDzE,EAAKt/B,EAALs/B,MACAW,EAAUjgC,EAAVigC,WACAC,EAASlgC,EAATkgC,UACA2C,EAAU7iC,EAAV6iC,WACAL,EAAWxiC,EAAXwiC,YACAuC,EAAuB/kC,EAAvB+kC,wBACAC,EAAehlC,EAAfglC,gBACAC,EAAcjlC,EAAdilC,eAEIp9B,KAAKsoC,SAAS,yBAChBtoC,KAAKuoC,YAAY,wBAAwBrhC,SAE3ClH,KAAK+nC,mBAAqB,IAAIvD,EAAmB,CAC/C/M,MAAAA,EACAW,WAAAA,EACAC,UAAAA,EACA2C,WAAAA,EACAL,YAAAA,EACAuC,wBAAAA,EACAF,wBAAyBh9B,KAAKg9B,wBAC9BG,gBAAAA,EACAC,eAAAA,EACAX,WAAYz8B,KAAKy8B,aAEfS,GACFl9B,KAAKkmC,UAAUvL,aAAY,GAE7B36B,KAAK+nC,mBAAmB5hC,GAAG,uBAAuB,kBAAM+1B,EAAKz2B,QAAQ,SAAS,EAAK,IACnFzF,KAAKwoC,SAAS,uBAAwBxoC,KAAK+nC,oBAC3C,IAAMU,EAAkBzoC,KAAKpD,MAAM/F,IAAI,mBACvC,OAAAggC,EAAAA,EAAAA,GAAAiG,EAAA,kBAAAjG,CAAA,CAAsB,CACpBY,MAAAA,EACAW,WAAAA,EACAC,UAAAA,EACAoQ,iBAAkBA,IAEtB,GAAC,CAAAtoC,IAAA,qBAAAC,MAED,SAAmBk6B,GACjBt6B,KAAKg9B,yBAA0Bb,EAAAA,EAAAA,IAC7B7B,EACAhB,EAAAA,GAAyBiB,YAAY6B,aAGvCp8B,KAAKoB,SAAS,CACZq2B,MAAOz3B,KAAKkmC,UAAUzO,MACtBW,WAAYkC,EAAS36B,GACrBq7B,WAAYh7B,KAAKkmC,UAAUlL,WAC3BL,YAAa36B,KAAK+nC,mBAChB/nC,KAAK+nC,mBAAmB9C,gBAAgBiB,UAAUU,UAClD5mC,KAAK3H,QAAQsiC,YACfuC,wBAAsD,qBAA7B5C,EAASoO,iBAAuE,KAA7BpO,EAASoO,gBACrFvL,gBAAiB7C,IAEnBt6B,KAAKkmC,UAAUlL,gBAAan3B,CAC9B,GAAC,CAAA1D,IAAA,oBAAAC,MAED,SAAkBuoC,GAGhB,IAAM3L,GAA0Bb,EAAAA,EAAAA,IAC9BwM,EAAQ7N,SACRxB,EAAAA,GAAyBiB,YAAY6B,aAEvCp8B,KAAKg9B,wBAA0BA,EAE/Bh9B,KAAKoB,SAAS,CACZq2B,MAAOz3B,KAAKkmC,UAAUzO,MACtBW,WAAYuQ,EAAQvQ,WACpBC,UAAWsQ,EAAQhpC,GACnBq7B,WAAYh7B,KAAKkmC,UAAUlL,WAC3BL,YAAa36B,KAAK+nC,mBAChB/nC,KAAK+nC,mBAAmB9C,gBAAgBiB,UAAUU,UAClD5mC,KAAK3H,QAAQsiC,YACfwC,gBAAiBwL,EAAQ7N,SACzBsC,eAAgBuL,IAElB3oC,KAAKkmC,UAAUlL,gBAAan3B,CAC9B,GAAC,CAAA1D,IAAA,SAAAC,MAED,WACEk5B,EAAAA,GAAyBS,gBAAgByB,IAAI,KAAM,KAAMx7B,OACzD62B,EAAAA,EAAAA,GAAAiG,EAAA,gBAAAjG,CAAA,GACF,IAAC,CAjRyB,CAAS+R,EAAAA,kB,krBCX9B,SAASC,IACd,QADyErjC,UAAAnG,OAAA,QAAAwE,IAAA2B,UAAA,KAAAA,UAAA,GAEhEsjC,EAAAA,0BAAcC,OACnBC,EAAAA,IACA,SAAA9/B,GAAO,OAAI,kCAAkD,IAG1D,wCACT,C,kSCNQwwB,EAAqBoP,EAAAA,0BAAcG,QAAQ,+DAA3CvP,iBAEKwP,EAAuB,SAAAhR,GAAA,SAAAgR,IAAA,OAAAnpC,EAAAA,EAAAA,GAAA,KAAAmpC,IAAAxoC,EAAAA,EAAAA,GAAA,KAAAwoC,EAAA1jC,UAAA,QAAA3E,EAAAA,EAAAA,GAAAqoC,EAAAhR,IAAAp4B,EAAAA,EAAAA,GAAAopC,EAAA,EAAA/oC,IAAA,cAAAC,MAClC,SAAWnM,GASP,IAADwM,EAAA,KARDf,EAAKzL,EAALyL,MACApL,EAAIL,EAAJK,KACA+1B,EAAap2B,EAAbo2B,cACAkO,EAAgBtkC,EAAhBskC,iBACAC,EAAavkC,EAAbukC,cACAE,EAA4BzkC,EAA5BykC,6BACA4L,EAAUrwC,EAAVqwC,WACAtC,EAAU/tC,EAAV+tC,WAEAhiC,KAAKN,MAAQA,EACbM,KAAK1L,KAAOA,EACZ0L,KAAKqqB,cAAgBA,EAErBqO,EAA6B14B,MAE7B,IAAMi5B,GAAa5yB,EAAAA,EAAAA,OAAMmyB,EAAcx4B,MAAOu4B,GA0B9C,OAxBAv4B,KAAKm5B,MAAOC,EAAAA,EAAAA,GAAa,CACvBH,WAAAA,EACAI,QAASiL,EAAWtkC,MACpBu4B,iBAAAA,IAGEyJ,GACFhiC,KAAKqqB,cAAclkB,GAAG,wBAAwB,YAC5CqzB,EAAAA,EAAAA,IACE/4B,EAAK04B,KAAKtjC,SACV4K,EAAK4pB,cAAciI,qBAAqB,EAE5C,IAGFtyB,KAAKm5B,KAAKtjC,SAASsQ,GAAG,cAAc,SAACszB,GAGXh5B,EAAK04B,KAAKtjC,SAA1BszC,aAENzP,EAAiBD,EAASh5B,EAAK04B,KAAKtjC,SAAUojC,EAAWrgC,KAE7D,IAEOoH,KAAKm5B,KAAKtjC,QACnB,GAAC,CAAAsK,IAAA,YAAAtJ,IACD,WAAkB,MAAO,8BAAgC,GAAC,CAAAsJ,IAAA,cAAAC,MAE1D,WAAe,IAADU,EAAA,KACRd,KAAKgiC,aACPhiC,KAAKqqB,cAAc+H,gBACnBpyB,KAAKqqB,cAAcgI,gCAAgCr6B,MAAK,YACtDwhC,EAAAA,EAAAA,IACE14B,EAAKq4B,KAAKtjC,SACViL,EAAKupB,cAAciI,qBAAqB,EAE5C,MAEFuE,EAAAA,EAAAA,GAAAqS,EAAA,qBAAArS,CAAA,GACF,GAAC,CAAA12B,IAAA,SAAAC,MAED,WAEE,OADAJ,KAAK64B,aAAc,GACnBhC,EAAAA,EAAAA,GAAAqS,EAAA,gBAAArS,CAAA,GACF,IAAC,CA/DiC,CAAS4H,EAAAA,0B,kECNhC2K,EAAc,SAAAnhC,GACzB,SAAAmhC,EAAAn1C,GAAuB,IAATK,EAAIL,EAAJK,KAAI,OAAAyL,EAAAA,EAAAA,GAAA,KAAAqpC,IAAA1oC,EAAAA,EAAAA,GAAA,KAAA0oC,EAAA,CACV,CACJxwC,KAAM,WACNqN,SAAU,aACV5R,MAAOC,EAAKoB,UAAU,uBACtB2zC,SAAU,aACV3qC,KAAM,SACN4qC,YAAa,CAAC,0BAElB,CAAC,OAAAzoC,EAAAA,EAAAA,GAAAuoC,EAAAnhC,IAAAnI,EAAAA,EAAAA,GAAAspC,EAAA,CAVwB,CAASvgC,EAAAA,I,qBCCvB0gC,EAAc,SAAAthC,GACzB,SAAAshC,EAAAt1C,GAA8B,IAADwM,EAAfnM,EAAIL,EAAJK,KAAMoL,EAAKzL,EAALyL,MAWD,OAXMK,EAAAA,EAAAA,GAAA,KAAAwpC,IACvB9oC,GAAAC,EAAAA,EAAAA,GAAA,KAAA6oC,EAAA,CAAM,CACJ3wC,KAAM,OACNqN,SAAU,CAAC,mBAAoB,kBAC/B5R,MAAOC,EAAKoB,UAAU,uCACtB2zC,SAAU,mBACV3qC,KAAM,SACN4qC,YAAa,CAAC,8CAGX5pC,MAAQA,EACbe,EAAKnM,KAAOA,EAAKmM,CACnB,CAAC,OAAAI,EAAAA,EAAAA,GAAA0oC,EAAAthC,IAAAnI,EAAAA,EAAAA,GAAAypC,EAAA,EAAAppC,IAAA,eAAAC,MAED,SAAYnI,GAAwC,IAArCuxC,EAAcvxC,EAAduxC,eAAgBC,EAAgBxxC,EAAhBwxC,iBAC7BC,EAA4C1pC,KAAKN,MAA7B+zB,EAAGiW,EAAf/N,WAA4BrI,EAAGoW,EAAd9N,UAEzB,MAAO,CACLhjC,KAAM6wC,EACNE,IAAKH,EACL/V,IAAAA,EACAH,IAAAA,EACAsW,SAAU,gEACV93B,KAAK,qEAAD1W,OAAuEq4B,EAAG,SAAAr4B,OAAQk4B,EAAG,SAAAl4B,OAAQouC,GACjGK,aAAa,OAADzuC,OAASouC,GACrBM,UAAW9pC,KAAK1L,KAAKoB,UAAU,mDAAoD,CAAEq0C,QAASN,IAElG,GAAC,CAAAtpC,IAAA,WAAAtJ,IAED,WAAiB,OAAOmzC,GAAwB,IAAC,CA9BxB,CAASnhC,EAAAA,ICI7B,SAAS82B,EAAgB1rC,GAAe,IAAZoE,EAAOpE,EAAPoE,QAgBjC,OAdkCA,EAA1BqH,MAAS04B,YAGL,IAAI6R,EAAAA,IACXC,YAAY,aAAa,SAAAC,GAAQ,OAAIA,EAASC,WAAW1xC,IAAAA,QAAU,CAClE6wC,IACC,KAEK,IAAIU,EAAAA,IACXC,YAAY,aAAa,SAAAC,GAAQ,OAAIA,EAASC,WAAW1xC,IAAAA,QAAU,CAClE0wC,EACAG,IACC,KAEQ5J,iBAAiBtnC,EAClC,CCjBA,IAAMgyC,EAAevB,EAAAA,0BAAcG,QAAQ,qCACrCvb,EAAoBob,EAAAA,0BAAcwB,eAAe,sCACjD/a,EAAYuZ,EAAAA,0BAAcG,QAAQ,0BAClC30C,EAAOw0C,EAAAA,0BAAcG,QAAQ,kEAE3BsB,EAA0BlgC,EAAAA,QAA1BkgC,sB,gHCCFj2C,EAAOw0C,EAAAA,0BAAcG,QAAQ,kEAC7BuB,EAAW1B,EAAAA,0BAAcG,QAAQ,yBACjC1Z,EAAYuZ,EAAAA,0BAAcG,QAAQ,0BAClC1P,EAASuP,EAAAA,0BAAcG,QAAQ,wCAC/BryC,EAAc24B,EAAU14B,IAAI,eAC5B62B,EAAoBob,EAAAA,0BAAcwB,eAAe,sC,0FCRvDxB,EAAAA,0BAAcG,QAAQ,2BACtBH,EAAAA,0BAAcG,QAAQ,qDACtB,IAAMwB,GAAO3B,EAAAA,0BAAcG,QAAQ,wBAC7B5sC,GAASysC,EAAAA,0BAAcG,QAAQ,oCAC/B7sC,GAAM0sC,EAAAA,0BAAcwB,eAAe,gCACnCI,GAAsB5B,EAAAA,0BAAcG,QAAQ,+EAG5CryC,GAFYkyC,EAAAA,0BAAcG,QAAQ,0BAEVpyC,IAAI,eAG5B8zC,GAAyC,WAyC5C,OAAA7qC,EAAAA,EAAAA,IAxCD,SAAA6qC,EAAA12C,GAMI,IAADwM,EAAA,KALD8hC,EAAQtuC,EAARsuC,SACAjuC,EAAIL,EAAJK,KACAoL,EAAKzL,EAALyL,MACAkrC,EAAY32C,EAAZ22C,aACAC,EAAY52C,EAAZ42C,cAAY9qC,EAAAA,EAAAA,GAAA,KAAA4qC,GAAA,KAmDdG,SAAW,SAACC,EAASliB,GACdpoB,EAAKuqC,MAcRniB,EAAS,KAAMpoB,EAAKuqC,OAbpBz1C,IAAAA,WAAa01C,SAAS,CACpBC,IAAKzqC,EAAK0qC,cACVC,UAAW,SAAC5oC,GACNA,GACF/B,EAAKuqC,MAAQ,CAAErpC,MAAOa,EAAM6oC,MAAO7oC,EAAKnD,QACxCwpB,EAAS,KAAMpoB,EAAKuqC,SAEpBvqC,EAAKuqC,MAAQ,CAAErpC,MAAO,GAAI0pC,MAAO,GACjCxiB,EAAS,KAAMpoB,EAAKuqC,OAExB,GAKN,EAlEEhrC,KAAKmrC,cAAa,+DAAA/vC,OAAkE7F,IAAAA,WAAa+1C,gBAAgB,OAAM,SAAAlwC,OAAQ7F,IAAAA,WAAa+1C,gBAAgB,OAAM,SAAAlwC,OAAQ7F,IAAAA,WAAa+1C,gBAAgB,QACvMtrC,KAAKurC,gBAAkBtV,IAAAA,aACvBj2B,KAAKwrC,mBAAqBvV,IAAAA,aAC1Bj2B,KAAKyrC,kBAAoBxV,IAAAA,aACzBj2B,KAAK0rC,cAAgBzV,IAAAA,aACrBj2B,KAAK2rC,cAAgB1V,IAAAA,kBACrBj2B,KAAKN,MAAQM,KAAK4rC,0BAA0BlsC,GAC5CM,KAAK6rC,oBAAmC,YAAbtJ,EAC3BviC,KAAK8rC,sBAAwBpsC,EAAMuR,OAAOmnB,WAC1Cp4B,KAAK4qC,aAAeA,EACpB5qC,KAAK6qC,aAAeA,EACpB7qC,KAAK+rC,cAAgB/rC,KAAK4qC,aACxB,GACAt2C,EAAKoB,UAAU8Z,0CACjBxP,KAAKgsC,yBAA2B/V,IAAAA,YAAc,GAC9Cj2B,KAAKisC,qBAAuBhW,IAAAA,WAAc,IAC1Cj2B,KAAKwmC,iBAAmBvQ,IAAAA,UAAY,kBAAMx1B,EAAK+qC,oBAAoB,IACnExrC,KAAKksC,mBAAqB,CACxBC,QAAS,CACPC,YAAa93C,EAAKoB,UAAU,kDAC5B22C,cAAe/3C,EAAKoB,UAAU,iDAC9Bqa,OAAQzb,EAAKoB,UAAU,wBACvB42C,SAAUh4C,EAAKoB,UAAU,6BACzB62C,gBAAiBj4C,EAAKoB,UAAU,0BAGpCsK,KAAKwsC,QAAUvW,IAAAA,kBACfj2B,KAAKysC,aAAc,EACnBzsC,KAAK0sC,kBAAoBzW,IAAAA,aACzBj2B,KAAK0sC,kBAAkB3V,WAAU,SAAC4V,GAChClsC,EAAK+qC,mBAAmBmB,EAAWA,EAAShtC,GAAK,KACnD,IACAK,KAAK4sC,SAAWl0C,IAAAA,KAAOsH,KAAK8qC,SAAU9qC,KACxC,GAAC,EAAAG,IAAA,4BAAAC,MAED,SAA0BV,GACxB,IAAMmtC,EAAc,CAAEC,aAAc,WAUpC,OARIptC,EAAMuR,OAAO87B,YACfF,EAAYC,aAAe,UAC3BD,EAAYlE,QAAU,CAAEhpC,GAAID,EAAMuR,OAAO87B,YAEvCrtC,EAAMuR,OAAOmnB,aACfyU,EAAYC,aAAe,WAC3BD,EAAYvS,SAAW,CAAE36B,GAAID,EAAMuR,OAAOmnB,aAErCyU,CACT,IAAC,CAvD4C,GA6ElCG,GAAmC,SAAA1nC,GAAA,SAAA0nC,IAAA,IAAAlsC,GAAAf,EAAAA,EAAAA,GAAA,KAAAitC,GAAA,QAAAC,EAAAznC,UAAAnG,OAAA6tC,EAAA,IAAAC,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAAF,EAAAE,GAAA5nC,UAAA4nC,GAgJ5C,OAhJ4CtsC,GAAAJ,EAAAA,EAAAA,GAAA,KAAAssC,EAAA,GAAA5xC,OAAA8xC,KAkH9CG,kBAAoB,SAAC7qC,GACnB,IAAM8qC,EAAgB,GAUtB,OARA50C,IAAAA,KAAO8J,GAAM,SAAC+qC,GACZ,IAAQ5P,EAAW4P,EAAX5P,OAEJA,GAAUA,EAAOt+B,OAAS,GAC5BiuC,EAAcp2C,KAAKq2C,EAEvB,IAEOD,EAAcjuC,OAAS,EAAIiuC,EAAgB,IACpD,EAACxsC,EAED0sC,+BAAiC,SAAAv1C,GAE1B,IADLmgC,EAAUngC,EAAVmgC,WAAYqV,EAAUx1C,EAAVw1C,WAAYC,EAAcz1C,EAAdy1C,eAAgBhoC,EAAEzN,EAAFyN,GAElClD,EAAO,GASb,OAPA9J,IAAAA,KAAO+0C,GAAY,SAAC5lC,GAClBrF,EAAKtL,KAAK,CACRsyC,eAAgB3hC,EAChB8lC,SAAUvV,GAEd,IAEO/7B,GAAOuxC,wBAAwBC,WAAWrrC,EAAM,CAAEsrC,QAAS,OAAQC,eAAe,IACtF/1C,MAAK,WACJ01C,GACF,IAAG/oC,SAAQC,EAAAA,EAAAA,aAAYc,GAC3B,EAAC5E,CAAC,CAAD,OAAAD,EAAAA,EAAAA,GAAAmsC,EAAA1nC,IAAAxF,EAAAA,EAAAA,GAAAktC,EAAA,EAAA7sC,IAAA,aAAAC,MA/ID,SAAUjI,GAEN,IADFoqC,EAAQpqC,EAARoqC,SAAUjuC,EAAI6D,EAAJ7D,KAAMoL,EAAKvH,EAALuH,MAAO7J,EAAQsC,EAARtC,SAEvBmK,KAAK1L,KAAOA,EACZ0L,KAAKuiC,SAAWA,EAChBviC,KAAKN,MAAQA,EACbM,KAAK82B,UAAY,IAAI6T,GAA0C,CAC7DpI,SAAAA,EACAjuC,KAAAA,EACAoL,MAAAA,EACAkrC,cAAc,EACdC,cAAc,IAEhB7qC,KAAKnK,SAAWA,EAChBmK,KAAKwsC,QAAUxsC,KAAK82B,UAAU0V,OAChC,GAAC,CAAArsC,IAAA,SAAAtJ,IAED,WACE,MAAO,CACL,iBAAkB,OAClB,mBAAoB,SAExB,GAAC,CAAAsJ,IAAA,mBAAAC,MAED,SAAiB4tC,GACXt1C,IAAAA,IAAMs1C,EAAc,OACtBhuC,KAAK82B,UAAU0U,mBAAmBwC,GAClChuC,KAAK82B,UAAU4U,cAAc,KAG7BuC,QAAQC,KAAK,qBAEjB,GAAC,CAAA/tC,IAAA,SAAAC,MAGD,WAAU,IAAD87B,EAAA,KACHiS,EAAe,KACnB,GAA0C,YAAtCnuC,KAAK82B,UAAUp3B,MAAMotC,aAA4B,CACnD,IAAIhG,EAAyB,8GACzBlwC,GAAYw3C,SAAWx3C,GAAYw3C,QAAQC,gBAC7CvH,GAA0B,kDAExBlwC,GAAYw3C,SAAWx3C,GAAYw3C,QAAQE,0BAA4B13C,GAAY23C,8BACrFzH,GAA0B,4DAE5BqH,EAAe,IAAIK,EAAAA,GAAsB,CACvCC,cAAe7pC,EAAAA,YACfvI,OAAAA,GACA23B,YAAa53B,GACb9H,KAAMo2C,GACN5D,uBAAAA,IACC4H,0BAA0Bt0C,UAEhB+L,GAAG,oBAAoB,SAAC6nC,GACnC9R,EAAKpF,UAAU8T,cAAe,EAC9B1O,EAAKyS,gBAAgBX,EACvB,IACAG,EAAahoC,GAAG,qBAAqB,SAAC6nC,GACpC9R,EAAKpF,UAAU8T,cAAe,EAC9B1O,EAAK0S,iBAAiBZ,EACxB,GACF,MACEhuC,KAAK82B,UAAU0U,mBAAmBxrC,KAAK82B,UAAUp3B,MAAM46B,UACvDt6B,KAAK82B,UAAU+T,cAAe,EAkBhC,OAfA7qC,KAAK6E,IAAIgqC,KAAK5kC,IAAS,CACrB3V,KAAM0L,KAAK1L,KACXw6C,oBAAqBrE,GAAKqE,oBAC1BtC,QAASxsC,KAAK82B,UAAU0V,QACxB5B,aAAc5qC,KAAK82B,UAAU8T,aAC7BC,aAAc7qC,KAAK82B,UAAU+T,aAC7BlP,WAAY37B,KAAKN,MAAMuR,OAAOwiB,IAC9Bsb,OAAQ/uC,KAAKN,MAAMuR,OAAO+9B,IAC1BpT,UAAW57B,KAAKN,MAAMuR,OAAOqiB,OAE/B2C,IAAAA,cAAiBj2B,KAAK82B,UAAW92B,KAAK0F,IAEI,YAAtC1F,KAAK82B,UAAUp3B,MAAMotC,cACvB9sC,KAAKzK,EAAE,kCAAkC8kC,OAAO8T,EAAazoC,IAExD1F,IACT,GAAC,CAAAG,IAAA,OAAAC,MAED,WAAQ,IAADi8B,EAAA,KACC4S,EAAQjvC,KAAK82B,UAAU6U,gBACvBuD,EAAM,GACN9W,EAAap4B,KAAK82B,UAAU0U,qBAAqB7rC,GAMvD,GAJAjH,IAAAA,KAAOu2C,GAAO,SAACxtC,GACbytC,EAAIh4C,KAAKuK,EAAK9B,GAChB,IAEIuvC,EAAI7vC,OACN,OAAOW,KAAKwtC,+BAA+B,CACzCpV,WAAAA,EACAqV,WAAYyB,EACZxB,eAAgB,WACdrR,EAAK52B,QAAQ,QACb42B,EAAK52B,QAAQ,mCACf,EACAC,GAAI1F,KAAK0F,KAEN,IAAKwpC,EAAI7vC,OAAQ,CACtB,IAAM8vC,EAAoBnvC,KAAK1L,KAAKoB,UAAU,kDAI9C,OAHKgD,IAAAA,SAAWsH,KAAK82B,UAAU0V,UAAW2C,IACxCnvC,KAAK82B,UAAU0V,QAAQt1C,KAAK8I,KAAK1L,KAAKoB,UAAU,mDAE3C,IACT,CACA,OAAO,IACT,GAAC,CAAAyK,IAAA,SAAAC,MAkCD,WACEJ,KAAKyF,QAAQ,mCACf,GAAC,CAAAtF,IAAA,SAAAC,MAED,WACE61B,IAAAA,UAAaj2B,KAAK6E,IAAI,IACtB7E,KAAK6E,IAAItK,QACTs8B,EAAAA,EAAAA,GAAAmW,EAAA,gBAAAnW,CAAA,GACF,IAAC,CA1J6C,CAASlxB,IAAAA,MC3FnDrR,GAAOw0C,EAAAA,0BAAcG,QAAQ,kEAE5B,SAASmG,GAA+Bn7C,GAY3C,IAXFqkC,EAAUrkC,EAAVqkC,WACAjO,EAAap2B,EAAbo2B,cAAaglB,EAAAp7C,EACb8qC,qBAAAA,OAAoB,IAAAsQ,EAAG,iBAAM,EAAE,EAAAA,EAC/B9W,EAAgBtkC,EAAhBskC,iBACAJ,EAAMlkC,EAANkkC,OACAz4B,EAAKzL,EAALyL,MACAo/B,EAAqB7qC,EAArB6qC,sBACAD,EAAW5qC,EAAX4qC,YAAWyQ,EAAAr7C,EACX+tC,WAAAA,OAAU,IAAAsN,GAAQA,EAClB7S,EAAUxoC,EAAVwoC,WACAkC,EAAQ1qC,EAAR0qC,SAEA,OAAO,IAAIuK,EAAwB,CACjClH,WAAAA,EACA3X,cAAAA,EACA/1B,KAAAA,GACAkkC,cAAe,SAAAtkC,GAAI,OHZhB,SAAkBD,GAQrB,IAPFqkC,EAAUrkC,EAAVqkC,WACA54B,EAAKzL,EAALyL,MACA7J,EAAQ5B,EAAR4B,SACA+oC,EAAkB3qC,EAAlB2qC,mBACAvU,EAAap2B,EAAbo2B,cACA2X,EAAU/tC,EAAV+tC,WACArD,EAAQ1qC,EAAR0qC,SAEMO,EAAY5qC,EAAKoB,UAAU,wCAEjC,MAAO,CACLkD,KAAM,oCACN22C,eAAgB,iDAChBnQ,aAAc,CAAC,QAAS,kBACxBC,gBAAiB,CAAE,aAAcH,GACjC5G,WAAAA,EACA0H,WAAW,EACXR,KAAM,CACJC,SACEuC,EACI,CACA,sBAEAuI,KAER7K,QAASC,EAAiB,CACxBtnC,QAAS,CACP/D,KAAAA,EACAoL,MAAAA,EACA7J,SAAAA,EACAmsC,WAAAA,KAGJpC,UAAW,CACThxB,OAAQ,CACNlQ,KAAM,SACNmhC,OAAQjB,GAAuB,kBAAMrpC,IAAE,qBAAqBoV,QAAQ,EACpEm1B,WAAY,CAAE,aAAcxrC,EAAKoB,UAAU,6BAA8B,CAAEwpC,UAAAA,MAE7Ea,aAAa,EACbpB,SAAAA,GAEFtU,cAAAA,EACAggB,aAAAA,EACA3c,kBAAAA,EACAx3B,OAAQq5B,EACR0Q,eAAgB,CACdh2B,SAAUi2B,EAAAA,IAEZ5rC,KAAAA,EAEJ,CGxC2B+rC,CAAU,CAC/B/H,WAAAA,EACA54B,MAAAA,EACAxL,KAAAA,EACAm2B,cAAAA,EACAkO,iBAAAA,EACAJ,OAAAA,EACA6J,WAAAA,EACArD,SAAAA,GACA,EACF2F,WAAY,SAAApwC,GAAI,OFhBb,SAAmBD,GAGtB,IAFF+tC,EAAU/tC,EAAV+tC,WACAvF,EAAUxoC,EAAVwoC,WAIA,OAFA+N,EAASgF,MAAM,oBAER92C,IAAAA,QAAU,CAAC,CAEhB2oC,OAAQC,EAAAA,EACRprC,OAAQ,CACNq5B,UAAAA,EACAgS,OAAQ9E,KAERlN,EAAU14B,IAAI,4BAA8BD,EAAY2sC,gBAAkB,CAC5ElC,OAAQmC,EAAAA,EACRttC,OAAQ,CAAE5B,KAAAA,IACT,CACD+sC,OAAQG,EAAAA,iBACRtrC,OAAQ,CACNurC,mBAAoB,CAAC,GAAI,GAAI,IAAK,KAClCC,kBAAkB,EAClBI,oBAAqBE,EAAa,GAAK1tC,EAAKoB,UAAU,+BACtDisC,aAAcrtC,EAAKoB,UAAU,iBAC7BksC,mBAAoBttC,EAAKoB,UAAU,iBAEpC,CACD2rC,OAAQoO,EAAAA,EACRv5C,OAAQ,CAAEq5B,UAAAA,EAAWgK,OAAAA,IACpB,CACD8H,OAAQ8C,EAAAA,yBACP,CACD9C,OAAQ+C,EAAAA,WACRluC,OAAQ,CAAE5B,KAAAA,IACT,CACD+sC,OAAQgD,EAAAA,GACP,CACDhD,OAAQoC,EAAAA,gBACRvtC,OAAQ,CAAEwP,GAAInQ,IAAEysC,EAAa,gCAAkC,iBAC9D,CACDX,QAAQqO,EAAAA,EAAAA,mBAAkB,CACxBC,iBAAkB,CAAC,kBAGvBC,EAAAA,EAAAA,GAA2B,CACzB5Q,SAAU,oCACVtR,kBAAAA,EACA92B,YAAAA,KAGJ,CEjCwB0tC,CAAW,CAC7Bja,cAAAA,EACA8N,OAAAA,EACAz4B,MAAAA,EACAsiC,WAAAA,EACAlD,sBAAAA,EACArC,WAAAA,EACAoC,YAAAA,IACCzjC,OAAO2jC,EAAqB7qC,GAAM,EACrCikC,OAAAA,EACAz4B,MAAAA,EACAg5B,6BAA8B,SAAAxkC,GAAI,OAAIqwC,EAAAA,EAAAA,IAAmB,CACvD1uC,SAAU3B,EACVwL,MAAAA,EACA44B,WAAAA,EACAhkC,KAAAA,IACA,EACFikC,iBAAAA,GAEJ,C,kcCnDO,SAASsX,IACd,QAD+ErqC,UAAAnG,OAAA,QAAAwE,IAAA2B,UAAA,KAAAA,UAAA,GAEtEsjC,EAAAA,0BAAcC,OACnBC,EAAAA,IACA,SAAA9/B,GAAO,OAAI,kCAAkD,IAG1D,wCACT,C,sECVO,IAAM4mC,EAAiB,CAC5BC,2CAA4CvgC,0CAC5CwgC,yCAA0CxgC,sEAC1CygC,uCAAwCzgC,0EACxC0gC,mDAAoD1gC,2CACpD2gC,mDAAoD3gC,+DACpD4gC,0DAA2D5gC,oDAC3D6gC,2DAA4D7gC,gEAC5D8gC,gDAAiD9gC,0DACjD+gC,0CAA2C/gC,kDAC3CghC,uCAAwChhC,wCACxCihC,uCAAwCjhC,+CACxCkhC,2CAA4ClhC,0CAC5CmhC,iCAAkCnhC,+DAClCohC,sCAAuCphC,oCACvCqhC,qCAAsCrhC,0CACtCshC,mCAAoCthC,qCACpCuhC,mCAAoCvhC,qDACpCwhC,0CAA2CxhC,iDAC3CyhC,iCAAkCzhC,0CAClC0hC,wCAAyC1hC,mFACzC2hC,yCAA0C3hC,uCAC1C4hC,uCAAwC5hC,kCACxC6hC,uCAAwC7hC,gCACxC8hC,sCAAuC9hC,uCACvC+hC,qCAAsC/hC,8BACtCgiC,sDAAuDhiC,4HACvDiiC,sCAAuCjiC,2CACvCkiC,wCAAyCliC,iCACzCmiC,sCAAuCniC,8BACvCoiC,wEAAyEpiC,uDACzEqiC,0CAA2CriC,yCAC3CsiC,2CAA4CtiC,oCAC5CuiC,gDAAiDviC,wDACjDwiC,mEAAoExiC,0EACpEyiC,iDAAkDziC,2EAClD0iC,6CAA8C1iC,0DAC9C2iC,uCAAwC3iC,mCACxC4iC,+CAAgD5iC,+CAChD6iC,gDAAiD7iC,wDACjD8iC,kDAAmD9iC,wDACnD+iC,yCAA0C/iC,kCAC1CgjC,6CAA8ChjC,+EAC9CijC,wCAAyCjjC,8CACzCkjC,mDAAoDljC,4CACpDmjC,sCAAuCnjC,yCACvCojC,qCAAsCpjC,wCACtCqjC,8CAA+CrjC,2CAC/CsjC,wCAAyCtjC,oCACzCujC,oDAAqDvjC,oDACrDwjC,4DAA6DxjC,6DAC7DyjC,yCAA0CzjC,oCAG1C0jC,YAAa1jC,+C,gPClDPkqB,EAAqBoP,EAAAA,0BAAcG,QAAQ,+DAA3CvP,iBAEKyZ,EAA+B,SAAAjb,GAAA,SAAAib,IAAA,OAAApzC,EAAAA,EAAAA,GAAA,KAAAozC,IAAAzyC,EAAAA,EAAAA,GAAA,KAAAyyC,EAAA3tC,UAAA,QAAA3E,EAAAA,EAAAA,GAAAsyC,EAAAjb,IAAAp4B,EAAAA,EAAAA,GAAAqzC,EAAA,EAAAhzC,IAAA,cAAAC,MAC1C,SAAWnM,GAQP,IAADwM,EAAA,KAPDf,EAAKzL,EAALyL,MACApL,EAAIL,EAAJK,KACA+1B,EAAap2B,EAAbo2B,cACAkO,EAAgBtkC,EAAhBskC,iBACAC,EAAavkC,EAAbukC,cACAE,EAA4BzkC,EAA5BykC,6BACA4L,EAAUrwC,EAAVqwC,WAEAtkC,KAAKN,MAAQA,EACbM,KAAK1L,KAAOA,EACZ0L,KAAKqqB,cAAgBA,EAErBqO,EAA6B14B,MAE7B,IAAMi5B,GAAa5yB,EAAAA,EAAAA,OAAMmyB,EAAcx4B,MAAOu4B,GAwB9C,OAtBAv4B,KAAKm5B,MAAOC,EAAAA,EAAAA,GAAa,CACvBH,WAAAA,EACAI,QAASiL,EAAWtkC,MACpBu4B,iBAAAA,IAGFv4B,KAAKqqB,cAAclkB,GAAG,wBAAwB,YAC5CqzB,EAAAA,EAAAA,IACE/4B,EAAK04B,KAAKtjC,SACV4K,EAAK4pB,cAAciI,qBAAqB,EAE5C,IAEAtyB,KAAKm5B,KAAKtjC,SAASsQ,GAAG,cAAc,SAACszB,GAGXh5B,EAAK04B,KAAKtjC,SAA1BszC,aAENzP,EAAiBD,EAASh5B,EAAK04B,KAAKtjC,SAAUojC,EAAWrgC,KAE7D,IAEOoH,KAAKm5B,KAAKtjC,QACnB,GAAC,CAAAsK,IAAA,YAAAtJ,IACD,WAAkB,MAAO,qCAAuC,GAAC,CAAAsJ,IAAA,cAAAC,MAEjE,WAAe,IAADU,EAAA,KACZd,KAAKqqB,cAAc+H,gBACnBpyB,KAAKqqB,cAAcgI,gCAAgCr6B,MAAK,YACtDwhC,EAAAA,EAAAA,IACE14B,EAAKq4B,KAAKtjC,SACViL,EAAKupB,cAAciI,qBAAqB,EAE5C,KACAuE,EAAAA,EAAAA,GAAAsc,EAAA,qBAAAtc,CAAA,GACF,GAAC,CAAA12B,IAAA,SAAAC,MAED,WAEE,OADAJ,KAAK64B,aAAc,GACnBhC,EAAAA,EAAAA,GAAAsc,EAAA,gBAAAtc,CAAA,GACF,IAAC,CA1DyC,CAAS4H,EAAAA,0B,6HCArDqK,EAAAA,0BAAcG,QAAQ,uCCFtB,IAAIhwC,EAASm6C,EAAAA,gBAGN,SAASC,EAA0Bp/C,GAEtC,IADF4R,EAAQ5R,EAAR4R,SAAUpE,EAAIxN,EAAJwN,KAAMvN,EAAID,EAAJC,KAAMI,EAAIL,EAAJK,KAAMg/C,EAASr/C,EAATq/C,UAAWC,EAAYt/C,EAAZs/C,aAElCA,EAIHt6C,EAASs6C,GAHTt6C,GAASu6C,EAAAA,EAAAA,WAAUv6C,IACZ0zB,WAAW8mB,UAAU5mB,KAAOn0B,IAAAA,QAAUO,EAAO0zB,WAAW8mB,UAAU5mB,KAAM,WAIjF,IAAI/iB,EAAS,CAACwpC,GACR12C,EAAQ6E,EAyBd,GAAkB,cAAd6xC,EAA2B,CAC7B,IAAMI,EAAgB,CAAC,EACvBh7C,IAAAA,KAAOO,EAAO0zB,WAAW8mB,UAAU5mB,MAAM,SAACzsB,GACxCszC,EAActzC,GAAS9L,EAAKoB,UAAU,aAAD0F,OAAcgF,GACrD,IACA0J,EAAS,CAAC,CACR7D,SAAUqtC,EACVI,cAAAA,GAEJ,EAhCe,WAAH,IAAIzpC,EAAQzE,UAAAnG,OAAA,QAAAwE,IAAA2B,UAAA,GAAAA,UAAA,GAAG,SACzBuE,EAAAA,OAAmB,CACjBlE,SAAAA,EACAvR,KAAAA,EACA2E,OAAAA,EACA2D,MAAAA,EACAkN,OAAAA,EACAE,WAAW,EACXC,SAAAA,EACAC,UAAW,SAACszB,EAAS92B,GAAU,ODpB9B,SAA2BzS,GAK9B,IAJFC,EAAID,EAAJC,KACAspC,EAAOvpC,EAAPupC,QACAmW,EAA6B1/C,EAA7B0/C,8BACAjtC,EAAUzS,EAAVyS,WAEQhH,EAAUxL,EAAVwL,MAEFk0C,EAAgB,CACpBC,iBAAkB,CAChBl0C,GAAI69B,EAAQ79B,GACZm0C,SAAUp0C,EAAMuR,OAAO04B,IACvB3C,OAAQ,YAIN+M,EAAgB,CACpBF,iBAAkB,CAChBC,SAAUp0C,EAAMuR,OAAO04B,IACvB8J,UAAWjW,EAAQiW,UACnBO,QAASxW,EAAQzH,OAIfke,EAAajgB,EAAAA,YAChBC,UACAC,SAASx0B,EAAMuR,OAAOwiB,KACtBU,SACAD,SAASx0B,EAAMuR,OAAOqiB,KA0BzB2gB,EAAWC,WAAWH,GACnB/7C,MAzB2B,WAC5Bi8C,EAAWC,WAAWN,GACnB57C,MAAK,WACA27C,GAAiCj7C,IAAAA,WAAai7C,IAChDA,GAEJ,IACC37C,MAAK,WACJm8C,EAAAA,QAAqBz/B,WAAW,mBAChCxgB,EAAKilC,KAAKtjC,SAASiP,SAAQ,EAC7B,IACCH,SAAQC,EAAAA,EAAAA,aAAY1Q,EAAKilC,KAAKtjC,SAASgP,KAC5C,IAE4B,SAAC4L,GAC3B/J,EAAW0D,UAAU,CACnB2rB,KAAMr9B,IAAAA,OACJo3C,EAAAA,EACAr/B,GAAYA,EAASktB,QAAUltB,EAASktB,OAAO,IAAkC,kCAA5BltB,EAASktB,OAAO,GAAGhnC,MAA4C8Z,EAASktB,OAAO,GAAGn2B,MACvIsoC,EAAAA,EAAeoD,cAGrB,IAIGvuC,SAAQC,EAAAA,EAAAA,aAAY1Q,EAAKilC,KAAKtjC,SAASgP,KAC5C,CCpCQuvC,CAAmB,CACjBlgD,KAAAA,EACAI,KAAAA,EACAg/C,UAAAA,EACA9V,QAAAA,EACA92B,WAAAA,EACA2tC,WAAYd,EAAeA,EAAa36C,UAAOiL,EAC/C8vC,8BAA+B,WAC7BjtC,EAAWjB,QAAQ,OAAQ+3B,EAC7B,GACA,GACH,CAYL8W,EACF,C,yBCpDa/R,EACD,WADCA,EAEF,UAIJ,SAASgS,EAAU71C,GACxB,GAAIA,IAAS6jC,EACX,OAAOiS,EAAAA,wBACF,GAAI91C,IAAS6jC,EAClB,OAAOkS,EAAAA,uBAGT,MAAM,IAAIjtC,MAAM,sCAClB,CAEO,SAASktC,EAAejzC,GAC7B,IAAMkzC,EAAUlzC,EAAKmzC,UACnB,CAAE7Z,QAAS,CAAEp7B,GAAI8B,EAAKmzC,YACtB,CAAE9Z,SAAU,CAAEn7B,GAAI8B,EAAKozC,aAEzB,OAAOn8C,IAAAA,SAAWi8C,EAASlzC,EAC7B,CCnBO,IAAMqzC,EAAqB,SAAA7sC,GAChC,SAAA6sC,EAAA7gD,GAA6B,IAADwM,EAAdnM,EAAIL,EAAJK,KAAMJ,EAAID,EAAJC,MAAI6L,EAAAA,EAAAA,GAAA,KAAA+0C,GACtB,IAAMzgD,EAAQC,EAAKoB,UAAU,wCAcZ,OAZjB+K,GAAAC,EAAAA,EAAAA,GAAA,KAAAo0C,EAAA,CAAM,CACJl8C,KAAM,kBACNqN,SAAU,CAAC,KAAM,QACjB5R,MAAAA,EACAg1C,SAAU,OACV0L,UAAU,EACVr2C,KAAM,SACNmU,OAAQ,iCACRmiC,cAAe1gD,EAAKoB,UAAU,qCAAsC,CAAE+L,KAAMpN,QAGzEC,KAAOA,EACZmM,EAAKvM,KAAOA,EAAKuM,CACnB,CAAC,OAAAI,EAAAA,EAAAA,GAAAi0C,EAAA7sC,IAAAnI,EAAAA,EAAAA,GAAAg1C,EAAA,EAAA30C,IAAA,eAAAC,MAED,SAAaqB,GAKX,MAAO,CACL6P,KAHE7P,EADFs0B,KAMJ,GAAC,CAAA51B,IAAA,WAAAC,MAED,SAAQnI,GACNo7C,EAA2B,CACzBxtC,SAFe5N,EAAR4N,SAGPpE,KAAMizC,EAHez8C,EAAJwJ,MAIjBvN,KAAM8L,KAAK9L,KACXI,KAAM0L,KAAK1L,KACXg/C,UAAW,OACXC,aAAcgB,EAAU,aAE5B,GAAC,CAAAp0C,IAAA,WAAAC,MAED,SAAQjI,GAAa,IAAViI,EAAKjI,EAALiI,MACT,OAAO6J,IAAS,CAAE7J,MAAAA,GACpB,IAAC,CA1C+B,CAASyI,EAAAA,I,oBCA9BosC,EAAe,SAAAhtC,GAC1B,SAAAgtC,EAAAhhD,GAA6B,IAADwM,EAAdnM,EAAIL,EAAJK,KAAMJ,EAAID,EAAJC,MAAI6L,EAAAA,EAAAA,GAAA,KAAAk1C,GACtB,IAAM5gD,EAAQC,EAAKoB,UAAU,wBAaZ,OAZjB+K,GAAAC,EAAAA,EAAAA,GAAA,KAAAu0C,EAAA,CAAM,CACJr8C,KAAM,YACNqN,SAAU,CAAC,KAAM,aACjB5R,MAAAA,EACAg1C,SAAU,YACV0L,UAAU,EACVr2C,KAAM,SACNmU,OAAQ,iCACRmiC,cAAe1gD,EAAKoB,UAAU,qCAAsC,CAAE+L,KAAMpN,QAGzEC,KAAOA,EACZmM,EAAKvM,KAAOA,EAAKuM,CACnB,CAAC,OAAAI,EAAAA,EAAAA,GAAAo0C,EAAAhtC,IAAAnI,EAAAA,EAAAA,GAAAm1C,EAAA,EAAA90C,IAAA,eAAAC,MAED,SAAaqB,GAIX,MAAO,CACL/C,KAJW+C,EAAKgyC,UACdzzC,KAAK1L,KAAKoB,UAAU,aAAD0F,OAAcqG,EAAKgyC,YACtC,GAIN,GAAC,CAAAtzC,IAAA,WAAAC,MAED,SAAQnI,GACNo7C,EAA2B,CACzBxtC,SAFe5N,EAAR4N,SAGPpE,KAAMizC,EAHez8C,EAAJwJ,MAIjBvN,KAAM8L,KAAK9L,KACXI,KAAM0L,KAAK1L,KACXi/C,aAAcgB,EAAU,YACxBjB,UAAW,aAEf,GAAC,CAAAnzC,IAAA,WAAAC,MAED,SAAQjI,GAAa,IAAViI,EAAKjI,EAALiI,MACT,OAAO6J,IAAS,CAAE7J,MAAAA,GACpB,IAAC,CAxCyB,CAASyI,EAAAA,ICA9B,SAAS82B,EAAgB1rC,GAAe,IAAZoE,EAAOpE,EAAPoE,QAMjC,OALgB,IAAI4xC,EAAAA,IACjBC,YAAY,aAAa,SAAAC,GAAQ,OAAIA,EAASC,WAAW1xC,IAAAA,QAAU,CAClEo8C,EACAG,IACC,IACUtV,iBAAiBtnC,EAClC,CCNA,IAAMgyC,EAAevB,EAAAA,0BAAcG,QAAQ,qCACrCvb,EAAoBob,EAAAA,0BAAcwB,eAAe,sCACjD/a,EAAYuZ,EAAAA,0BAAcG,QAAQ,0BAClC30C,EAAOw0C,EAAAA,0BAAcG,QAAQ,kE,oGCC7B30C,EAAOw0C,EAAAA,0BAAcG,QAAQ,kEAC7B1Z,EAAYuZ,EAAAA,0BAAcG,QAAQ,0BAClC1P,EAASuP,EAAAA,0BAAcG,QAAQ,wCCNrC,IAAM30C,GAAOw0C,EAAAA,0BAAcG,QAAQ,kEAE5B,SAASiM,GAAuCjhD,GAUnD,IATFqkC,EAAUrkC,EAAVqkC,WACAjO,EAAap2B,EAAbo2B,cAAaglB,EAAAp7C,EACb8qC,qBAAAA,OAAoB,IAAAsQ,EAAG,iBAAM,EAAE,EAAAA,EAC/B9W,EAAgBtkC,EAAhBskC,iBACAJ,EAAMlkC,EAANkkC,OACAz4B,EAAKzL,EAALyL,MAAK4vC,EAAAr7C,EACL+tC,WAAAA,OAAU,IAAAsN,GAAQA,EAClB7S,EAAUxoC,EAAVwoC,WACAkC,EAAQ1qC,EAAR0qC,SAEA,OAAO,IAAIwU,EAAgC,CACzCnR,WAAAA,EACA3X,cAAAA,EACA/1B,KAAAA,GACAkkC,cAAe,SAAAtkC,GAAI,OFVhB,SAAkBD,GAOrB,IANFqkC,EAAUrkC,EAAVqkC,WACA54B,EAAKzL,EAALyL,MACAxL,EAAID,EAAJC,KACA0qC,EAAkB3qC,EAAlB2qC,mBACAvU,EAAap2B,EAAbo2B,cACAsU,EAAQ1qC,EAAR0qC,SAIA,MAAO,CACL/lC,KAAM,8CACN22C,eAAgB,gCAChBnQ,aAAc,CAAC,QAAS,kBACxBC,gBAAiB,CAAE,aANH/qC,EAAKoB,UAAU,+CAO/B4iC,WAAAA,EACA0H,WAAW,EACXR,KAAM,CACJC,SAAU,CAAC,uBAEbC,QAASC,EAAiB,CACxBtnC,QAAS,CACP/D,KAAAA,EACAoL,MAAAA,EACAxL,KAAAA,KAGJ0rC,UAAW,CACThxB,OAAQ,CACNlQ,KAAM,SACNmhC,OAAQjB,GAAuB,kBAAMrpC,IAAE,qBAAqBoV,QAAQ,GAGtEo1B,aAAa,EACbpB,SAAAA,GAEFtU,cAAAA,EACAggB,aAAAA,EACA3c,kBAAAA,EACAx3B,OAAQq5B,EACR0Q,eAAgB,CACdh2B,SAAUi2B,EAAAA,IAEZ5rC,KAAAA,EAEJ,CEnC2B+rC,CAAU,CAC/B/H,WAAAA,EACA54B,MAAAA,EACAxL,KAAAA,EACAm2B,cAAAA,EACAkO,iBAAAA,EACAJ,OAAAA,EACA6J,WAAAA,EACArD,SAAAA,GACA,EACF2F,WAAY,SAAApwC,GAAI,ODnBb,SAAmBD,GAGtB,IAFFwoC,EAAUxoC,EAAVwoC,WACAkC,EAAQ1qC,EAAR0qC,SAEA,OAAOjmC,IAAAA,QAAU,CAAC,CAEhB2oC,OAAQC,EAAAA,EACRprC,OAAQ,CACNq5B,UAAAA,EACAgS,OAAQ9E,IAET,CACD4E,OAAQmC,EAAAA,EACRttC,OAAQ,CAAE5B,KAAAA,IACT,CACD+sC,OAAQG,EAAAA,iBACRtrC,OAAQ,CACNurC,mBAAoB,CAAC,GAAI,GAAI,IAAK,KAClCC,kBAAkB,EAClBC,aAAcrtC,EAAKoB,UAAU,iBAC7BksC,mBAAoBttC,EAAKoB,UAAU,iBAEpC,CACD2rC,OAAQoO,EAAAA,EACRv5C,OAAQ,CAAEq5B,UAAAA,EAAWgK,OAAAA,IACpB,CACD8H,OAAQ8C,EAAAA,yBACP,CACD9C,OAAQ+C,EAAAA,WACRluC,OAAQ,CAAE5B,KAAAA,IACT,CACD+sC,OAAQgD,EAAAA,GACP,CACDhD,OAAQoC,EAAAA,gBACRvtC,OAAQ,CAAEwP,GAAIi5B,IACb,CACD0C,QAAQqO,EAAAA,EAAAA,mBAAkB,CACxBC,iBAAkB,CAAC,kBAGzB,CCrBwBrL,CAAW,CAC7B7H,WAAAA,EACAkC,SAAAA,IACCvjC,OAAO2jC,EAAqB7qC,GAAM,EACrCikC,OAAAA,EACAz4B,MAAAA,EACAg5B,6BAA8B,SAAAxkC,GAAI,OAAIqwC,EAAAA,EAAAA,IAAmB,CACvD1uC,SAAU3B,EACVwL,MAAAA,EACA44B,WAAAA,EACAhkC,KAAAA,IACA,EACFikC,iBAAAA,GAEJ,C,+FC3Ca8L,GAAsB8Q,E,UAAAA,qBAA0B,CAC3DC,WAAY18C,IAAAA,SAAW,Q,4VCJZ28C,EAAwB,SAACz+C,GACpC,IAAMX,GAAqBq/C,EAAAA,EAAAA,cAAa1+C,GA4CxC,OAzCAX,EAAmBiB,KAAK,2BACxBjB,EAAmBiB,KAAK,yBACxBjB,EAAmBiB,KAAK,4DACxBjB,EAAmBiB,KAAK,qEACxBjB,EAAmBiB,KAAK,qDACxBjB,EAAmBiB,KAAK,sCACxBjB,EAAmBiB,KAAK,6BAExBjB,EAAmBiB,KAAK,iDACxBjB,EAAmBiB,KAAK,+DACxBjB,EAAmBiB,KAAK,wDACxBjB,EAAmBiB,KAAK,wEACxBjB,EAAmBiB,KAAK,4EACxBjB,EAAmBiB,KAAK,kFACxBjB,EAAmBiB,KAAK,mFACxBjB,EAAmBiB,KAAK,8DACxBjB,EAAmBiB,KAAK,oDACxBjB,EAAmBiB,KAAK,qDACxBjB,EAAmBiB,KAAK,4DACxBjB,EAAmBiB,KAAK,kDACxBjB,EAAmBiB,KAAK,mDACxBjB,EAAmBiB,KAAK,+DACxBjB,EAAmBiB,KAAK,qDACxBjB,EAAmBiB,KAAK,mDACxBjB,EAAmBiB,KAAK,gEACxBjB,EAAmBiB,KAAK,uDACxBjB,EAAmBiB,KAAK,kEACxBjB,EAAmBiB,KAAK,wDACxBjB,EAAmBiB,KAAK,yDACxBjB,EAAmBiB,KAAK,6CACxBjB,EAAmBiB,KAAK,oCACxBjB,EAAmBiB,KAAK,+BACxBjB,EAAmBiB,KAAK,6CACxBjB,EAAmBiB,KAAK,yCACxBjB,EAAmBiB,KAAK,yCACxBjB,EAAmBiB,KAAK,6BACxBjB,EAAmBiB,KAAK,oDACxBjB,EAAmBiB,KAAK,8CACxBjB,EAAmBiB,KAAK,wDACxBjB,EAAmBiB,KAAK,gCAEjBjB,CACT,EAEaS,EAA2B,CACtCqH,kBAAmB,8CACnBw3C,wBAAyB,uCACzBC,oCAAqC,iCACrCC,iDAAkD,sCAClDC,mCAAoC,kCACpCC,8CAA+C,mCAC/CC,4CAA6C,mCAGlCr/C,EAAwB,SAACs/C,GAQpC,OAPqBC,EAAAA,EAAAA,+BAA4B7sB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAC9C4sB,GAAM,IACTE,2BAA2B,EAC3BlV,QAASnqC,EACTF,4CAA4C,EAC5CC,0CAA0C,IAG9C,ECnEau/C,EAAgB,CAC3BC,WAAY,CACVC,KAAM,aACNC,SAAU3mC,2BACVnb,MAAOmb,4BAET4mC,eAAgB,CACdF,KAAM,iBACNC,SAAU3mC,kBACVnb,MAAOmb,mBAET6mC,iBAAkB,CAChBH,KAAM,oBACNC,SAAU3mC,eACVnb,MAAOmb,qCAET8mC,sBAAuB,CACrBJ,KAAM,wBACNC,SAAU3mC,mBACVnb,MAAOmb,0CAET+mC,kBAAmB,CACjBL,KAAM,oBACN7hD,MAAOmb,kBAETgnC,iBAAkB,CAChBN,KAAM,mBACNC,SAAU3mC,2BACVnb,MAAOmb,iEAETinC,oBAAqB,CACnBP,KAAM,uBACNC,SAAU3mC,eACVnb,MAAOmb,gBAETknC,iBAAkB,CAChBR,KAAM,mBACN7hD,MAAOmb,kB,yDCzBLmnC,EAA6B,kCAC7BC,EAAgC,+BAEhCz8C,EAAa,kBAGN08C,EAAyB,SAAAC,GACpC,SAAAD,EAAA5iD,GAAuB,IAADwM,EAARzH,EAAI/E,EAAJ+E,KAUkB,OAVd+G,EAAAA,EAAAA,GAAA,KAAA82C,IAChBp2C,GAAAC,EAAAA,EAAAA,GAAA,KAAAm2C,EAAA,CAAM,CAAE79C,KAAAA,EAAM0F,KAAM,kBAAmBvE,WAAAA,MAClCiC,IAAMpD,EAAKoD,IAChBqE,EAAKpE,OAASrD,EAAKqD,OACH,MAAZoE,EAAKrE,MACPqE,EAAKs2C,gBAAkB,CACrBjJ,QAAS,QACTkJ,UAAWv2C,EAAKrE,IAAI66C,eAAeC,YAGvCz2C,EAAK02C,SAAWn+C,EAAKm+C,SAAS12C,CAChC,CAAC,OAAAI,EAAAA,EAAAA,GAAAg2C,EAAAC,IAAAh3C,EAAAA,EAAAA,GAAA+2C,EAAA,EAAA12C,IAAA,kCAAAC,MAED,WACE,OAAOJ,KAAKo3C,qCAAqCT,GAA4B,EAC/E,GAAC,CAAAx2C,IAAA,iBAAAC,MAED,WACE,QAASJ,KAAKq3C,iCAChB,GAAC,CAAAl3C,IAAA,wCAAAC,MAED,SAAqCnI,GAA+B,IAA5Bq/C,EAAYr/C,EAAZq/C,aAAcC,EAASt/C,EAATs/C,UACpDv3C,KAAKw3C,4BAA0Bl0C,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAC9BszC,EAAgCU,GAChCX,EAA6BY,GAElC,GAAC,CAAAp3C,IAAA,gCAAAC,MAED,SAA8B8qC,GAA+B,IAADpqC,EAAA,KAAzB22C,EAAejyC,UAAAnG,OAAA,QAAAwE,IAAA2B,UAAA,IAAAA,UAAA,GAChD,OAAOxF,KAAK03C,MAAMC,KAAKzM,GACpBlzC,MAAK,SAAAG,GAAyE,IAAlDo/C,EAASp/C,EAA7By/C,mBAAkDN,EAAYn/C,EAA/B0/C,kBACtC,OAAIN,IAAcE,GAChB32C,EAAKg3C,sCAAsC,CACzCP,UAAAA,EACAD,aAAAA,IAEKC,GAEFA,CACT,GACJ,GAAC,CAAAp3C,IAAA,wBAAAC,MAED,SAAsB23C,EAAUN,GAC9B,IAAMvM,EAzD2B,wIA0D9B8M,QAAQ,eAAgBD,GACxBC,QAAQ,cAAeh4C,KAAKszB,KAC5B0kB,QAAQ,kBAAkB,GAAD58C,OAAKmO,OAAO0uC,SAASC,OAAM,oCAEvD,OAAOl4C,KAAKm4C,8BAA8BjN,EAAKuM,EACjD,GAAC,CAAAt3C,IAAA,iCAAAC,MAED,SAA+Bg4C,GAC7B,IAAMlN,EAhER,4GAiEK8M,QAAQ,YAAaI,GACrBJ,QAAQ,cAAeh4C,KAAKszB,KAE/B,OAAOtzB,KAAKm4C,8BAA8BjN,EAC5C,GAAC,CAAA/qC,IAAA,SAAAC,MAED,WACEJ,KAAKq4C,wBAAwB1B,EAA4BC,EAC3D,GAAC,CAAAz2C,IAAA,qCAAAC,MAED,WACE,OAAOJ,KAAKo3C,qCAAqCR,GAA+B,EAClF,GAAC,CAAAz2C,IAAA,0BAAAC,MAED,WACE,OAAOJ,KAAKs4C,oCACd,GAAC,CAAAn4C,IAAA,uBAAAC,MAED,WACE,IAAMm3C,EAAYv3C,KAAKq3C,kCACjBnM,EAnFR,0GAoFK8M,QAAQ,gBAAiBT,GAE5B,OAAOv3C,KAAK03C,MAAM7gD,IAAIq0C,GAAKlzC,MAAK,SAAAugD,GAAQ,OAAI7/C,IAAAA,IAAM6/C,GAAU,SAAAC,GAAO,OAAAvvB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAC9DuvB,GAAO,IACVC,SAAUj0C,OAAOg0C,EAAQC,UAAUC,eAAa,GAC/C,GACL,GAAC,CAAAv4C,IAAA,2BAAAC,MAED,SAAyBu4C,GACvB,OAAO34C,KAAK44C,gBAAgBD,GACzB3gD,MAAK,SAAA6gD,GAAI,MACP,CACCC,oBAAqBD,EAAKE,YAC3B,GACP,GAAC,CAAA54C,IAAA,kBAAAC,MAED,SAAgBu4C,GACd,OAAO34C,KAAKg5C,YAAYL,EAhGa,GAiGvC,GAAC,CAAAx4C,IAAA,wBAAAC,MAED,SAAsB64C,GAAqB,IAAD/c,EAAA,KAClCqb,EAAYv3C,KAAKq3C,kCACnBnM,EAxGN,2GAwGsC8M,QAAQ,gBAAiBT,GAS7D,OAPArM,EAAMlrC,KAAKk5C,UAAU,CACnBhO,IAAAA,EACAiO,gBAAiB,CACfC,kBAAmBH,KAIhBj5C,KAAK03C,MAAM7gD,IAAIq0C,GAAKlzC,MAAK,SAAAwK,GAAI,OC5He,SAAC62C,EAAW/kD,GAmBjE,OAlB6BoE,IAAAA,MAAQ2gD,GAClCzoC,QAAO,SAAC0pB,GACP,IAAMyM,EAASzM,EAAS0M,OAExB,MAAkB,UAAXD,GAAiC,WAAXA,GAAkC,YAAXA,CACtD,IACCjlC,KAAI,SAAA7N,GAGG,MACD,CACL0L,GAJE1L,EAAF0L,GAKAsJ,KAJIhV,EAAJgV,KAKA+9B,OAJM/yC,EAAN+yC,OAKArwC,KAAMrC,EAAKoB,UAAU8Z,YACtB,IACApP,OAGL,CDyGMk5C,CAAwC92C,EAAM05B,EAAKljC,KAAKugD,QAASrd,EAAKsd,SAAS,GACnF,GAAC,CAAAr5C,IAAA,kCAAAC,MAED,SAAgCu7B,EAAYgd,GAC1C,IAAMc,EAAW,CAAC,EAYlB,OAXAA,EAASC,mBAAqB15C,KAAK25C,sBAAsBhe,GAErDgd,IACFc,EAASG,cAAgB55C,KAAK65C,yBAAyBlB,GACpD3gD,MAAK,SAAC4hD,GACL,IAAME,EAAa,CAAC,EAEpB,OADAA,EAAWhB,oBAAsBc,EAAcd,oBACxCgB,CACT,KAGG5wC,IAAAA,MAAcuwC,GAClBzhD,MAAK,SAAAgF,GAA4C,IAIrBkyC,EAJpBwK,EAAkB18C,EAAlB08C,mBAAoBE,EAAa58C,EAAb48C,cACrBE,EAAa,CAAEJ,mBAAAA,GACrB,GAAIE,EAAe,CACjB,IAAMG,EAAqBrhD,IAAAA,OAASA,IAAAA,IAAMghD,GAAoB,SAAAM,GAAG,MAAI,CAACA,EAAIr6C,IAAI,EAAK,KAE7Em5C,GADmB5J,EACoB0K,EAAcd,oBAD3BpgD,IAAAA,OAASw2C,GAAK,SAAArnC,GAAE,OAAIkyC,EAAmBlyC,EAAG,KAE1EnP,IAAAA,OAASohD,EAAY,CACnBhB,oBAAqBpgD,IAAAA,QAAUogD,GAAuB,KAAOA,GAEjE,CACA,OAAOgB,CACT,GACJ,GAAC,CAAA35C,IAAA,oCAAAC,MAED,WACE,IAAI65C,EAAc,CAAC,EAEnB,OAAOj6C,KAAKk6C,0CAA0C,mBACnDliD,MAAK,SAACmiD,GAGL,OAFAF,EAAcvhD,IAAAA,OAASuhD,EAAaE,EAGtC,GACJ,GAAC,CAAAh6C,IAAA,mCAAAC,MAED,WACE,IAAMgpB,EAASppB,KAAKo3C,qCAClBT,EACAC,GAGF,MAAO,CACLW,UAAWnuB,EAAO,GAClBgxB,qBAAsBhxB,EAAO,GAEjC,GAAC,CAAAjpB,IAAA,yDAAAC,MAED,SAAuDw5C,GACrD,OAAO,IAAIS,EAAAA,cAAc,CACvBlmD,QAASmE,KAAKuY,UAAU,CACtBkoC,YAAaa,EAAcd,uBAGjC,GAAC,CAAA34C,IAAA,gCAAAC,MAED,SAA6BjD,GAKzB,IACEo6C,EACA6C,EANJE,EAAmBn9C,EAAnBm9C,oBACAC,EAAuBp9C,EAAvBo9C,wBACAC,EAA8Br9C,EAA9Bq9C,+BACAxL,EAAG7xC,EAAH6xC,IAKA,GAAIuL,EACChD,EAAcgD,EAAdhD,UACA6C,EAAyBG,EAAzBH,yBACE,CACL,IAAMK,EAAOz6C,KAAK06C,mCAEfnD,EAAckD,EAAdlD,UACA6C,EAAyBK,EAAzBL,qBAEE7C,IACHv3C,KAAKtF,SAAS,uFAADU,OAAwF9C,KAAKuY,UAAU4pC,KACpHlD,EAAYv3C,KAAKq3C,kCACjB+C,EAAuBp6C,KAAK26C,0BAEvBpD,GACHv3C,KAAKtF,SAAS,2FAADU,OAA4Fm8C,EAAS,0BAAAn8C,OAAyBg/C,IAGjJ,CAEA,IAAMQ,EAAyB,CAC7B,cAAe,gCACfC,UAAWtD,EACXuD,UAAWR,EACXS,YAAaX,EACbY,uBAAwBhM,GAG1B,OAAIwL,EACKx6C,KAAKi7C,0BAA0B,CACpCC,aAlN+B,wBAoN/B/qC,QAASnQ,KAAKm7C,uDAAuDX,KACpExiD,MAAK,SAAA6gD,GAAI,OAAA5vB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAEL2xB,GAAsB,IACzBQ,0BAA2BvC,EAAKwC,UAAQ,IAIvCnyC,IAAAA,QAAgB0xC,EACzB,GAAC,CAAAz6C,IAAA,iCAAAC,MAED,SAA8B9C,GAG1B,IAAD++B,EAAA,KAFDif,EAAah+C,EAAbg+C,cACAC,EAASj+C,EAATi+C,UAEAC,EAQIF,EAPFG,sBAAAA,OAAqB,IAAAD,EAAG,CAAC,EAACA,EAC1BE,EAMEJ,EANFI,iBACAC,EAKEL,EALFK,2BACAC,EAIEN,EAJFM,WACAhjD,EAGE0iD,EAHF1iD,KACAyH,EAEEi7C,EAFFj7C,KACAw7C,EACEP,EADFO,cAIAvB,EAGEiB,EAHFjB,oBACAC,EAEEgB,EAFFhB,wBACAC,EACEe,EADFf,+BAGF,OAAOx6C,KAAK87C,8BAA8B,CACxCxB,oBAAAA,EACAC,wBAAAA,EACAC,+BAAAA,EACAxL,IAAKhvC,KAAKgvC,MAETh3C,MAAK,SAAA4iD,GAAsB,OACzBliD,IAAAA,OACC2jC,EAAK0f,8BAA8BN,EAAuBG,GAAa,CACrEI,iBAAkBN,EAClBO,2BAA4BN,EAC5BO,uBAAwBtB,EACxBuB,WAAYhiD,EACZ,cAAe,iCACfxD,KAAK,kBAADyE,OAAoBihC,EAAK+f,iBAG/B1jD,IAAAA,KAAO4iD,EAAe,kBAAmB,mBACvC1iD,GAAQ,CAAEqQ,KAAMrQ,KAChBijD,GAAiB,CAAEQ,MAAOR,KAC1Bx7C,GAAQ,CAAEoI,KAAMpI,GACnB,GACP,IAAC,CAvQmC,CAASi8C,EAAAA,I,UEJ/C,SAASC,EAAUrR,EAAK72C,EAAOmoD,EAAGC,GAA6C,IAA1C5zB,EAAQrjB,UAAAnG,OAAA,QAAAwE,IAAA2B,UAAA,GAAAA,UAAA,GAAG9M,IAAAA,KAAQgkD,EAAWl3C,UAAAnG,OAAA,QAAAwE,IAAA2B,UAAA,GAAAA,UAAA,GAAG9M,IAAAA,KAC9DikD,EAAcH,GAAK,IACnBI,EAAeH,GAAK,IAElBI,EAAoB/oD,SAApB+oD,gBACAC,EAAWvzC,OAAXuzC,OAKFC,OAAuCl5C,IAAtB0F,OAAOyzC,WAA2BF,EAAOppD,KAAO6V,OAAOyzC,WACxEC,OAAqCp5C,IAArB0F,OAAO2zC,UAA0BJ,EAAOhtC,IAAMvG,OAAO2zC,UAMrExpD,IAJQ6V,OAAO4zC,YAAcN,EAAgBO,aAAeN,EAAO3wC,OAIlDwwC,GAAe,EAAKI,EACrCjtC,IAJSvG,OAAO8zC,aAAeR,EAAgBS,cAAgBR,EAAOnyC,QAIrDiyC,GAAgB,EAAKK,EAEtCM,EAAYh0C,OAAOi0C,KAAKtS,EAAK72C,EAAM,yBAAD+G,OAA2BwhD,EAAY,WAAAxhD,OAAUuhD,EAAW,UAAAvhD,OAAS1H,EAAI,SAAA0H,OAAQ0U,IAEzHytC,EAAUE,QACV,IAAMC,EAAQC,aAAY,WACxB,GAAIJ,EAAUK,OACZr0C,OAAOs0C,cAAcH,GACrBhB,EAAY,CAAEl2C,MAAO,6BAChB,CACL,IAAMs3C,EAxCZ,SAAiBC,GACf,IACE,IAAMD,GAAOE,EAAAA,EAAAA,cAAa,OAAQD,EAAU9F,SAASnmC,MACrD,OAAKpZ,IAAAA,QAAUolD,IACNA,CAGX,CAAE,MAAOj/C,GACP,OAAO,CACT,CACF,CA8BmBo/C,CAAQV,GACjBO,IACFv0C,OAAOs0C,cAAcH,GACrBH,EAAUW,QACVr1B,EAASi1B,GAEb,CACF,GAAG,IACL,CAEO,IAAMK,EAAwB,WAKnC,SAAAA,EAAYjoD,IAAQ6J,EAAAA,EAAAA,GAAA,KAAAo+C,GAClBn+C,KAAK9J,OAASA,CAChB,CAAC,OAAA4J,EAAAA,EAAAA,GAAAq+C,EAAA,EAAAh+C,IAAA,QAAAC,MAED,WACE,IAAMO,EAAQy9C,mBAAmB,gBAADhjD,OAAiB4E,KAAK9J,OAAOW,IAAI,mBAAmB8I,GAAE,SAAAvE,OAAQ4E,KAAK9J,OAAOW,IAAI,eAAe8I,GAAE,SAAAvE,OAAQ4E,KAAK9J,OAAOW,IAAI,kBAAkB8I,KACnKurC,EAAG,0CAAA9vC,OAA6C+iD,EAAyBE,MAAK,kCAAAjjD,OAAiC+iD,EAAyBG,UAAS,kBAAAljD,OAAiB+iD,EAAyBI,YAAW,WAAAnjD,OAAUuF,GACtN,OAAO,IAAIuI,IAAJ,EAAY,SAACwzB,EAAS8hB,GAC3BjC,EAAUrR,EAAK,kBAAmB,IAAK,IAAKxO,EAAS8hB,EACvD,GACF,GAAC,CAAAr+C,IAAA,SAAAC,MAED,WACA,IAAC,CAlBkC,GAAxB+9C,EACJG,UAAY,UADRH,EAEJE,MAAQ,wFAFJF,EAGJI,YAAW,GAAAnjD,OAAMmO,OAAO0uC,SAASC,OAAM,mCCvDzC,IAAMuG,EAAiB,SAAAC,GAC5B,SAAAD,EAAAxqD,GAEI,IAADwM,EADD7J,EAAW3C,EAAX2C,YAM+B,OANpBmJ,EAAAA,EAAAA,GAAA,KAAA0+C,IAEXh+C,GAAAC,EAAAA,EAAAA,GAAA,KAAA+9C,EAAA,CAAM,CACJ7nD,YAAAA,MAOJ+nD,oDAAsD,kBAAM,CAAM,EAADl+C,EACjEm+C,iDAAmD,kBAAM,CAAM,EAADn+C,EAC9Do+C,4DAA8D,kBAAM,CAAM,EANxEp+C,EAAK7J,YAAcA,EAAY6J,CACjC,CAAC,OAAAI,EAAAA,EAAAA,GAAA49C,EAAAC,IAAA5+C,EAAAA,EAAAA,GAAA2+C,EAAA,CAT2B,CAASK,EAAAA,I,WCCjCC,EAAiB,CACrBC,YAAa,SAAF/qD,GAKJ,IAJL2pC,EAAG3pC,EAAH2pC,IACA2b,EAAOtlD,EAAPslD,QACA0F,EAAkBhrD,EAAlBgrD,mBACAC,EAAUjrD,EAAVirD,WAEMC,GAAMC,EAAAA,EAAAA,IAA0BxhB,EAAK2b,GACvC4F,EAEFD,EAAW,CACTG,YAAY,EACZC,kBAAmBH,IAIrBF,EAAmBrhB,EAEvB,EACA2hB,cAAe,SAAAxmB,GAAU,OACvBA,EAAWymB,sBAAsB,EACnCC,oBAAqB,SAAAC,GAAO,OAAIA,EAAQC,iBAAiB,EACzDC,2BAA4B,SAAAF,GAAO,OAAIA,EAAQG,gBAAgB,EAC/DC,oBAAqB,SAACvH,EAAUwH,GAC9B,IAAIF,EAAmB,GACvB,GAAIE,EAAgB7D,wBAClB6D,EAAgB7D,uBAAuBpB,UAAW,CAClD,IAAQA,EAAciF,EAAgB7D,uBAA9BpB,UAER+E,EAAmBnnD,IAAAA,OAAS6/C,GAAU,SAAA92C,GAAI,OAAIA,EAAK9B,KAAOm7C,CAAS,GACrE,CACA,OAAO+E,CACT,EACAG,+BAAgC,SAACzH,EAAU9oB,EAAIwwB,GAAa,OAAAh3B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACvDg3B,GAAa,IAChBN,kBAAmBpH,GAAQ,GAIlB2H,EAAkD,SAAAC,GAAI,OACjEC,EAAAA,EAAAA,IAAiCD,EAAMpB,EAAgB,E,sGC/BnDsB,EAAkB,CAEtBR,iBAAkB,GAClBF,kBAAmB,KACnBW,4BAA4B,EAG5BhF,cAAe,KACfiF,sBAAuB,KAEvBxH,YAAa,KACbyB,+BAAgC,MA4B3B,IAAMgG,EAAsB,SAAAC,GACjC,SAAAD,EAAYvkD,GAAQ,IAADwE,EAaf,OAbeV,EAAAA,EAAAA,GAAA,KAAAygD,IACjB//C,GAAAC,EAAAA,EAAAA,GAAA,KAAA8/C,EAAA,CAAMvkD,KAqBRykD,iBAAmB,WAQjB,OANIjgD,EAAKzH,KAAKo/C,MACU33C,EAAKs4B,WAAW4nB,+BAA+BlgD,EAAKzH,KAAKo/C,OAEzD33C,EAAKmgD,gBAAgBC,QACxC7oD,MAAK,SAAA+/C,GAAQ,OAAIt3C,EAAKs4B,WAAW+nB,sBAAsB/I,EAAS,KAGlE//C,MAAK,kBAAMyI,EAAKsgD,YAAY,IAC5Bx6C,MAAM9F,EAAKu+C,aACXr6C,SAAQC,EAAAA,EAAAA,aAAYrP,IAAE,IAAD6F,OAAKqF,EAAKxE,MAAM+kD,yBAA2BvgD,EAAK84C,QAAQ7jD,UAAU8Z,YAC5F,EAAC/O,EAEDwgD,OAAS,WACPxgD,EAAKs4B,WAAWkoB,SAChBxgD,EAAKy+C,YAAUj2B,EAAAA,EAAAA,GAAC,CACdo2B,YAAY,GACTgB,GAEP,EAAC5/C,EAEDu+C,YAAc,SAAC31B,GACb5oB,EAAKW,SAAS,CACZ8/C,UAAU9B,EAAAA,EAAAA,IAA0B/1B,EAAK5oB,EAAK84C,UAElD,EAAC94C,EAEDsgD,WAAa,WAEX,IADkBtgD,EAAKs4B,WAAWse,kCAMhC,OAJA52C,EAAKwgD,cACLxgD,EAAKW,SAAS,CACZ8/C,UAAU9B,EAAAA,EAAAA,IAA0B,CAAE54C,MAAO,gCAAkC/F,EAAK84C,WAIxF94C,EAAK0gD,aAAa1gD,EAAKxE,MAAMmlD,cAC7B3gD,EAAKy+C,WAAW,CACdG,YAAY,GAEhB,EAAC5+C,EAED4+C,WAAa,kBAAM5+C,EAAKs4B,WAAWsoB,gBAAiB,EA/DlD5gD,EAAKzH,KAAOiD,EAAMyjD,QAAQ1mD,KAC1ByH,EAAKs4B,WAAa98B,EAAMyjD,QAAQ3mB,WAChCt4B,EAAKmgD,gBAAkB3kD,EAAMyjD,QAAQkB,gBACrCngD,EAAK0gD,aAAellD,EAAMyjD,QAAQyB,aAClC1gD,EAAKw+C,mBAAqBhjD,EAAMyjD,QAAQT,mBACxCx+C,EAAKy+C,WAAajjD,EAAMyjD,QAAQR,WAChCz+C,EAAK84C,QAAU94C,EAAKzH,KAAKugD,QACzB94C,EAAKg8B,WAAah8B,EAAKzH,KAAKyjC,WAC5Bh8B,EAAK6gD,gBAAkB7gD,EAAKzH,KAAKsoD,gBACjC7gD,EAAKE,MAAQ,CACXugD,SAAkBjlD,EAAMyjD,QAAQJ,mBAChC7+C,CACJ,CAAC,OAAAI,EAAAA,EAAAA,GAAA2/C,EAAAC,IAAA3gD,EAAAA,EAAAA,GAAA0gD,EAAA,EAAArgD,IAAA,oBAAAC,MAED,WACMJ,KAAKshD,iBACPthD,KAAKshD,gBAAgB/jB,MAEzB,GAAC,CAAAp9B,IAAA,SAAAC,MA+CD,WACE,IAAQiN,EAAYrN,KAAK/D,MAAjBoR,QACFk0C,EAAoBvhD,KAAKhH,KAAK9C,OAAOW,IAAI,0BAE/C,OACE2H,EAAAA,EAAAA,MAAA,OAAKvJ,UAAU,4BAA2BwJ,SAAA,EACxCD,EAAAA,EAAAA,MAAA,OAAKvJ,UAAWoY,EAAQm0C,eAAe/iD,SAAA,EACrCD,EAAAA,EAAAA,MAAA,QAAAC,SAAA,CACGuB,KAAKu5C,QAAQ7jD,UAAU8Z,+HAAqI,WAE/JhR,EAAAA,EAAAA,MAAA,QAAAC,SAAA,CACGuB,KAAKu5C,QAAQ7jD,UAAU8Z,8CAAqD,QAC7E/a,EAAAA,EAAAA,KAAA,QAAMQ,UAAWoY,EAAQo0C,KAAKhjD,UAC5BD,EAAAA,EAAAA,MAACkjD,EAAAA,SAAQ,CAAC9vB,MAAM,gBAAenzB,SAAA,CAC3BuB,KAAKu5C,QAAQ7jD,UAAU8Z,yBAAgC,gBAKjE/a,EAAAA,EAAAA,KAAA,OAAKQ,UAAU,cAAawJ,SACzBuB,KAAKq/C,cACJ7gD,EAAAA,EAAAA,MAAA,OAAAC,SAAA,EACEhK,EAAAA,EAAAA,KAAC4c,EAAAA,cAAa,CACZpc,UAAS,kBAAAmG,OAAoBiS,EAAQs0C,cACrCrwC,KAAMtR,KAAKu5C,QAAQ7jD,UAAU8Z,YAC7B7Q,QAASqB,KAAK+gD,WACd9hD,SAAUsiD,EACV,mBAAiB,YAEnB9sD,EAAAA,EAAAA,KAAC8c,EAAAA,cAAa,CACZtc,UAAS,iBAAAmG,OAAmBiS,EAAQs0C,cACpCrwC,KAAMtR,KAAKu5C,QAAQ7jD,UAAU8Z,YAC7B7Q,QAASqB,KAAKihD,OACd,mBAAiB,gBAIrBxsD,EAAAA,EAAAA,KAAC4c,EAAAA,cAAa,CACZpc,UAAU,eACVqc,KAAMtR,KAAKu5C,QAAQ7jD,UAAU8Z,4BAC7B7Q,QAASqB,KAAK0gD,iBACdzhD,SAAUsiD,EACV,mBAAiB,cAIvB/iD,EAAAA,EAAAA,MAAA,OAAKvJ,UAAWiM,IAAW,gBAAiBmM,EAAQu0C,cAAcnjD,SAAA,CAC9D8iD,IAAqB9sD,EAAAA,EAAAA,KAAA,QAAAgK,SAAQuB,KAAKu5C,QAAQ7jD,UAAU8Z,mDACpDxP,KAAKW,MAAMugD,cAIrB,IAAC,CAxHgC,CAAS3hD,EAAAA,eA6I/BsiD,GAAiBC,EAAAA,EAAAA,oBAC5BC,EAAAA,EAAAA,qBAAoBvB,IAvKtB,WACE,MAAO,CACLgB,eAAgB,CACd/1C,SAAU,GACVgB,WAAY,OACZsK,aAAc,IAEhB0qC,KAAM,CACJ31C,MAAO,UACPyL,eAAgB,YAChB,sBAAuB,CACrByqC,QAAS,sBAGbJ,aAAc,CACZ91C,MAAO,UACPgL,UAAW,IAEb6qC,aAAc,CACZ7qC,UAAW,OACXxH,YAAa,QAGnB,I,YCzCA,SAAS2yC,EAAkChmD,GACzC,IAAQimD,EAAuDjmD,EAAvDimD,UAAWC,EAA4ClmD,EAA5CkmD,gBAAiBnB,EAA2B/kD,EAA3B+kD,uBAC9BoB,EACFD,EAAkBA,EAAgBN,GAAkBA,EAExD,OACEptD,EAAAA,EAAAA,KAAC4tD,EAAAA,GAAkBC,SAAQ,CAAA7jD,SAEvB,SAAC8jD,GACC,IACQC,EADSD,EAATvpD,KACAwpD,oBACFC,EAAkBD,GAAuBA,KAA0B,GAEzE,OACE/tD,EAAAA,EAAAA,KAACiuD,EAAAA,SAAQ,CAAC9pD,KAAI,aAAAwC,OAAeqnD,GAAiBhkD,UAC5ChK,EAAAA,EAAAA,KAACkuD,EAAAA,GAAa,CACZT,UAAWK,EAAcvpD,KAAKugD,QAAQ7jD,UAAUwsD,GAChDU,gBCxBC,CAAC,CACdlkD,KAAM,kBDuB2CD,UAErChK,EAAAA,EAAAA,KAAC2tD,EAAqB,CACpB1C,QAAS6C,EACTnB,aAAcnlD,EAAMmlD,aACpBJ,uBAAwBA,OAKlC,GAIR,CASAiB,EAAkC3gD,aAAe,CAC/C6gD,gBAAiB,MAGZ,IAAMU,EE1CwB,SAACC,GACpC,IAAMC,EAAoBxjD,EAAAA,MAAW,SAACtD,GACpC,IAAM+mD,GAAoBh1C,EAAAA,EAAAA,YAAWq0C,EAAAA,IAGnCrB,EACE/kD,EADF+kD,uBAIAhoD,EAMEgqD,EANFhqD,KACA+/B,EAKEiqB,EALFjqB,WACAmmB,EAIE8D,EAJF9D,WACmB+D,EAGjBD,EAHFrD,kBAAiBuD,EAGfF,EAFFG,oBAAAA,OAAmB,IAAAD,GAAQA,EAC3B/B,EACE6B,EADF7B,aAIAvhD,EAIE5G,EAJF4G,WACA1J,EAGE8C,EAHF9C,OACAqjD,EAEEvgD,EAFFugD,QACA75C,EACE1G,EADF0G,MAGF,IAAKE,EACH,OAAOnL,EAAAA,EAAAA,KAACquD,GAAc75B,EAAAA,EAAAA,GAAA,GAAKhtB,IAG7B,IAAAiC,GAA8BC,EAAAA,EAAAA,WAAS,GAAKC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAArCu0B,EAAOr0B,EAAA,GAAEglD,EAAUhlD,EAAA,GAC1ByV,GAAsD1V,EAAAA,EAAAA,WAAS,GAAM2V,GAAAzV,EAAAA,EAAAA,GAAAwV,EAAA,GAA9DwvC,EAAmBvvC,EAAA,GAAEwvC,EAAsBxvC,EAAA,GAE9CyvC,EAAe,CAAC,EAEpB,IAAI9wB,GACH4wB,GACCF,GAAwBF,GA6FnB,GAAIA,GAA4BE,EACrC,OAAQ1uD,EAAAA,EAAAA,KAACquD,GAAc75B,EAAAA,EAAAA,GAAA,GAAKhtB,SA5F5BqnD,GAAuB,GACvBvqB,EAAWyqB,kBAAkBxqD,EAAK4G,YAC/B5H,MAAK,SAACyrD,GAEL,IAAMp8C,EAAgB3O,IAAAA,WAAaxC,EAAOW,IAAI,eAAxB6B,CAAwC,MAE9D,GAAI+qD,EAASC,WAAW/jD,KAAO0H,EAAe,CAC5C,IAAQs8C,EAA8B3qD,EAA9B2qD,0BACFpM,EAAYoM,EAA0BC,aAAa5qD,EAAK4G,YAE9D+jD,EAA0BE,eACtBtM,EACFkM,EAASvH,uBAAuBrB,UAAYtD,GAE5Cxe,EAAWr+B,SAAS,kDAADU,OAAmDiM,EAAa,gCAAAjM,OAA+BqoD,EAASC,WAAW/jD,KACtIo5B,EAAWkoB,SACXwC,EAASvH,uBAAuBrB,UAAY,KAEhD,CAQA,OANA0I,EAAaxD,gBAAkB0D,EAC/BF,EAAaxD,gBAAgBngD,WAAa5G,EAAK4G,WAE/C2jD,EAAaO,YAAa,EAC1BP,EAAaQ,0BAA2B,EAEjCN,CACT,IACCzrD,MAAK,SAACyrD,GACL,IAAAO,EAGIP,EAASvH,uBAFXnB,EAAWiJ,EAAXjJ,YACAF,EAASmJ,EAATnJ,UAGEA,GACF9hB,EAAW+e,sCAAsC,CAC/CR,aAAcyD,EACdxD,UAAWsD,GAGjB,IACC7iD,MAAK,WACJ,GAAIurD,GAAgBA,EAAaQ,yBAA0B,CACzD,IAAAE,EAaIV,EAAaxD,gBAAemE,EAAAD,EAZ9B/H,uBACEnD,EAAWmL,EAAXnL,YACAqC,EAAyB8I,EAAzB9I,0BAEF5iD,EAAoByrD,EAApBzrD,qBACA2rD,EAAeF,EAAfE,gBACAC,EAAaH,EAAbG,cACA9zB,EAAU2zB,EAAV3zB,WACA7nB,EAAIw7C,EAAJx7C,KACAwzC,EAA0BgI,EAA1BhI,2BACAD,EAAgBiI,EAAhBjI,iBACA/yC,EAAIg7C,EAAJh7C,KAEEq3C,EAA6B9nD,GACjCA,EAAqB6rD,8BACjB3rD,IAAAA,YAAc4nD,IACpB5nD,IAAAA,OAAS4nD,MACLA,GAA6B,GAG/BiD,EAAe7qD,IAAAA,OAAS6qD,EAAc,CACpCY,kBAAmBA,EACnBC,gBAAiBA,EACjB5rD,qBAAAA,EACA83B,WAAAA,EACA7nB,KAAAA,EACAwzC,2BAAAA,EACAD,iBAAAA,EACA/yC,KAAAA,EACA8vC,YAAAA,EACAqC,0BAAAA,EACAkF,2BAAAA,GAEJ,CACA,OAAOtK,EAAcC,WAAWC,IAClC,IACCl+C,MAAK,WACJknD,EAAWqE,GAEX,IAAQ1mD,EAAe6C,EAAMuR,OAArBpU,WAEJA,GACFskD,EAAatkD,GAEfumD,GAAW,EACb,IACCz+C,SAAQC,EAAAA,EAAAA,aAAYrP,IAAE,IAAD6F,OAAK4lD,IAA2BzH,EAAQ7jD,UAAU8Z,aAK5E,OAAOijB,EAAU,MAAOh+B,EAAAA,EAAAA,KAACquD,GAAc75B,EAAAA,EAAAA,GAAA,GAAKhtB,GAC9C,IAMA,OAAO8mD,CACT,CFlGkCuB,CAAsBrC,GGpD3CsC,EAAoB,SAAHtwD,GAKvB,IAJLuwD,EAAkBvwD,EAAlBuwD,mBAkBA,MAbe,CAAC,CACd9lD,KAAM,cACN+lD,aANUxwD,EAAZwwD,cAOG,CACD/lD,KAAM,cACNgmD,iBAAkBF,EAClBG,aATU1wD,EAAZ0wD,aAUE1lD,WATgBhL,EAAlB2wD,oBAUG,CACDlmD,KAAM,gBACNmmD,kBAAkB,GAItB,ECZO,SAASC,EAA+B7oD,GAC7C,IAwCQ0jD,EAAsB1jD,EAAMyjD,QAA5BC,kBAKR,OACElrD,EAAAA,EAAAA,KAACswD,EAAAA,IAAe97B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACVhtB,GAAK,IACT+oD,uBAhD2B,SAAA1wD,GAAI,MAAK,CAAC,CACvC6L,IAAK,eACLvH,KAAMtE,EAAKoB,UAAU8Z,gBACrB8jC,UAAW,QACV,CACDnzC,IAAK8kD,EAAAA,GACLrsD,KAAM,GACN06C,UAAW2R,EAAAA,IACX,EAyCEC,sBAvC0B,SAAA5wD,GAAI,MAAK,CAAC,CACtC6L,IAAK,eACLvH,KAAMtE,EAAKoB,UAAU8Z,8BACrB8jC,UAAW,OACXjsB,SAAU,IACVpc,SAAU,IACVk6C,aAAa,GACZ,CACDhlD,IAAK,aACLvH,KAAMtE,EAAKoB,UAAU8Z,4BACrB8jC,UAAW,KACXjsB,SAAU,IACVpc,SAAU,IACVk6C,aAAa,GACZ,CACDhlD,IAAK,WACLvH,KAAMtE,EAAKoB,UAAU8Z,0BACrB8jC,UAAW,WACXjsB,SAAU,IACVpc,SAAU,IACVk6C,aAAa,GACZ,CACDhlD,IAAKilD,EAAAA,GACLxsD,KAAMtE,EAAKoB,UAAU8Z,cACrB61C,gBAAiB,qCACjB/R,UAAW8R,EAAAA,GACX/9B,SAAU,GACVpc,SAAU,IACV,EAYEq6C,iBAPqB,EAQrB/M,SAAUoH,EACV4F,gBAAiB,CACf,OACA,KACA,YAEFC,gBAAgB,OAChBC,aAAa,KACblpD,YAAaiT,qEACbk2C,wBAAyBl2C,6HACzBm2C,2BAA4Bn2C,kBAGlC,CChEuF,IAEjFo2C,EAA4B,SAAAnF,GAChC,SAAAmF,EAAY3pD,GAAQ,IAADwE,EAOkE,OAPlEV,EAAAA,EAAAA,GAAA,KAAA6lD,IACjBnlD,GAAAC,EAAAA,EAAAA,GAAA,KAAAklD,EAAA,CAAM3pD,KAuBR4pD,SAAW,SAAA1G,GAAG,OACZ1+C,EAAKW,SAAS,CACZoF,OAAO,EACP06C,SAAU/B,GACV,EACH1+C,EAEDqlD,WAAa,kBACXrlD,EAAKW,SAAS,CACZoF,OAAO,GACP,EACH/F,EAEDmlC,SAAW,WACT,IACE2c,EACE9hD,EAAKxE,MADPsmD,cAIAvpD,EAEEupD,EAFFvpD,KACA6mD,EACE0C,EADF1C,iBAGIvrD,EAAO0E,EAAKugD,QAElB,OAAI7gD,IAAAA,QAAUmnD,IAAiD,IAA5BA,EAAiBxgD,QAClDoB,EAAKolD,SAASvxD,EAAKoB,UAAU8Z,0CACtB,IAAItG,IAAJ,EAAY,SAAAwzB,GAAO,OAAIA,GAAQ,EAAM,KAGvC,IAAIxzB,IAAJ,EAAY,SAAAwzB,GAAO,OAAIA,GAAQ,EAAK,GAC7C,EArDEj8B,EAAKE,MAAQ,CACX6F,OAAO,EACP06C,SAAU,IAEZzgD,EAAKslD,uBACH9pD,EAAMkmD,gBAAkBlmD,EAAMkmD,gBAAgB4C,GAAmBA,EAAgBtkD,CACrF,CAAC,OAAAI,EAAAA,EAAAA,GAAA+kD,EAAAnF,IAAA3gD,EAAAA,EAAAA,GAAA8lD,EAAA,EAAAzlD,IAAA,qBAAAC,MAED,WACE,IAKE4lD,EAHEhmD,KAAK/D,MADPsmD,cAIAyD,kBAGEA,GACFhmD,KAAK6lD,SAASG,EAElB,GAAC,CAAA7lD,IAAA,SAAAC,MAmCD,WACE,IAAAW,EASIf,KAAK/D,MARPsmD,EAAaxhD,EAAbwhD,cACAL,EAASnhD,EAATmhD,UACAuC,EAAY1jD,EAAZ0jD,aACAE,EAAY5jD,EAAZ4jD,aACAsB,EAA0BllD,EAA1BklD,2BACAC,EAAoCnlD,EAApCmlD,qCACAlF,EAAsBjgD,EAAtBigD,uBACAmF,EAA2BplD,EAA3BolD,4BAGMJ,EAA2B/lD,KAA3B+lD,uBACA/sD,EAA8CupD,EAA9CvpD,KAAMgtD,EAAwCzD,EAAxCyD,kBAAmBnG,EAAqB0C,EAArB1C,iBAEzB2C,EAAwBxpD,EAAxBwpD,oBAEFC,EAAkBD,GAAuBA,KAA0B,GAEnEoC,EAAqBlsD,IAAAA,QAAUmnD,GAErC,OACEprD,EAAAA,EAAAA,KAACiuD,EAAAA,SAAQ,CAAC9pD,KAAI,qBAAAwC,OAAuBqnD,GAAiBhkD,UACpDhK,EAAAA,EAAAA,KAACkuD,EAAAA,GAAa,CACZT,UACIK,EAAcvpD,KAAKugD,QAClB7jD,UAAUwsD,GAEfU,gBAAiB2B,EAAkB,CACjCC,mBAAoBxkD,KAAK4lC,SACzB6e,aAAAA,EACAE,aAAAA,EACAC,mBAAAA,IACCnmD,UAGHD,EAAAA,EAAAA,MAACe,EAAAA,SAAc,CAAAd,SAAA,EACbhK,EAAAA,EAAAA,KAACsxD,EAAsB,CACrBrG,QAAS6C,EACTuD,WAAY9lD,KAAK8lD,WACjBM,cAAc,6BACdH,2BAA4BA,EAC5BC,qCAAsCA,EACtClF,uBAAwBA,EACxBmF,4BAA6BA,IAE7BnmD,KAAKW,MAAM6F,OAASw/C,GACnBvxD,EAAAA,EAAAA,KAAC4xD,EAAAA,GAAc,CAACzE,aAAc5hD,KAAKW,MAAMugD,UAAY8E,IACtD,WAMZ,IAAC,CAhH+B,CAASzmD,EAAAA,eA+H3CqmD,EAA6BtkD,aAAe,CAC1C6gD,gBAAiB,KACjBgE,6BAA6B,EAC7BnF,uBAAwB,yBAGnB,IAAMsF,EAAuB/mD,EAAAA,MAAW,SAAAtD,GAAK,OAClDxH,EAAAA,EAAAA,KAAC4tD,EAAAA,GAAkBC,SAAQ,CAAA7jD,SAEvB,SAAA8jD,GAAa,OACX9tD,EAAAA,EAAAA,KAACmxD,GAA4B38B,EAAAA,EAAAA,GAAA,CAC3Bs5B,cAAeA,GACXtmD,GACJ,GAGqB,ICxJlBsoD,GAAoB,SAAHtwD,GAQvB,IAPLK,EAAIL,EAAJK,KACAiyD,EAActyD,EAAdsyD,eACArnD,EAAUjL,EAAViL,WACAsnD,EAAYvyD,EAAZuyD,aACAC,EAAqBxyD,EAArBwyD,sBACAC,EAAezyD,EAAfyyD,gBACAC,EAAiB1yD,EAAjB0yD,kBAsBA,OApBejuD,IAAAA,QAAU,CAAC,CACxBgG,KAAM,cACN+lD,aAAciC,KACb,CACDhoD,KAAM,SACNkoD,SAAS,EACT3xD,UAAW,eACXqc,KAAMk1C,EAAelyD,EAAKoB,UAAU8Z,gBAAwBlb,EAAKoB,UAAU8Z,gBAC3E7Q,QAAS4nD,EACTtnD,SAAUC,GAEVynD,GAAqBA,EAAkBE,6CAA+CF,EAAkBE,gDACnGJ,EAKD,KALyB,CAC3B/nD,KAAM,cACNzJ,UAAW,0BACXqc,KAAMhd,EAAKoB,UAAU8Z,mBACrB7Q,QAAS8nD,IAKf,ECvBaK,GAA8B,SAACC,GAC1C,IAAMC,EAA0BznD,EAAAA,MAAW,SAACtD,GAC1C,IAAM+mD,GAAoBh1C,EAAAA,EAAAA,YAAWq0C,EAAAA,IAGnCrB,EACE/kD,EADF+kD,uBAIAhoD,EAWEgqD,EAXFhqD,KACA+/B,EAUEiqB,EAVFjqB,WACAmmB,EASE8D,EATF9D,WACAW,EAQEmD,EARFnD,iBACAU,EAOEyC,EAPFzC,sBACAnF,EAME4H,EANF5H,0BACA2I,EAKEf,EALFe,yBACAhL,EAIEiK,EAJFjK,YAAWkO,EAITjE,EAHFkE,iCAAAA,OAAgC,IAAAD,EAAG,CAAC,EAACA,EACrCzuD,EAEEwqD,EAFFxqD,qBACA4rD,EACEpB,EADFoB,cAIA9vD,EAEE0E,EAFF1E,KACA6yD,EACEnuD,EADFmuD,6BAGIC,EAA4B,SAAHnzD,GAExB,IADLozD,EAAkBpzD,EAAlBozD,mBAEMC,EAA2B,GAEjC5uD,IAAAA,KAAO2uD,GAAoB,SAAChO,EAAW1d,KAGrC0d,EAAYA,EAAUK,qBAEiB,IAArBL,EAAUh6C,QAAiB3G,IAAAA,QAAU2gD,KACrDiO,EAAyBpwD,KAAKykC,EAElC,IAEA,IAAM4rB,EAAyB,GAe/B,OAbID,EAAyBjoD,OAAS,GACpC3G,IAAAA,KAAO4uD,GAA0B,SAAC1rB,GAChC,IAAM4rB,EAA4B9uD,IAAAA,OAASmnD,GAAkB,SAAArH,GAAO,OAAKA,EAAQ74C,KAAO8nD,SAAS7rB,EAAW,GAAG,IAE3G4rB,EAA0BnoD,OAAS,GACrCkoD,EAAuBrwD,KAAKswD,EAA0B,GAAGv+C,KAE7D,IAMEs+C,EAAuBloD,SAAWwgD,EAAiBxgD,MAKzD,EAEAnB,GAA8BC,EAAAA,EAAAA,WAAS,GAAKC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAArCu0B,EAAOr0B,EAAA,GAAEglD,EAAUhlD,EAAA,GAC1ByV,GAAsD1V,EAAAA,EAAAA,WAAS,GAAM2V,GAAAzV,EAAAA,EAAAA,GAAAwV,EAAA,GAA9DwvC,EAAmBvvC,EAAA,GAAEwvC,EAAsBxvC,EAAA,GAE5C4zC,EAAoBhvD,IAAAA,OAASmnD,GAAkB,SAAArH,GAAO,OAAK9/C,IAAAA,IAAMwuD,EAAkC1O,EAAQ74C,GAAG,IAEpH,GAAI8yB,IACH4wB,GAC4B,IAA7BqE,EAAkBroD,OAChB,CACAikD,GAAuB,GAKvB,IAAMqE,EAAgB,CAAC,EAEjBhsB,EAAakkB,EAAiB,GAAGlgD,GAEvCgoD,EAAchsB,GAAc5C,EAAW6uB,gCAAgCjsB,EAAYyf,GAI9EmF,IACHoH,EAAcE,mBAAqB9uB,EAAW+uB,kCAAkCjI,EAAiB,GAAGlgD,KAGtGuJ,IAAAA,MAAcy+C,GAEX3vD,MAAK,SAACoxB,GACL,IAAM6wB,EAAc7wB,EAAOy+B,0BAItBz+B,EAAOy+B,mBAEZ,IAAME,EAAmC,CAAC,EAE1CrvD,IAAAA,KAAOwuD,GAAkC,SAACc,EAASv0B,GACjDs0B,EAAiCt0B,GAAOu0B,EAAQC,aAClD,IAIA,IAAMC,GAA8Bd,EAA0B,CAC5DC,oBAAkBp+B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAAOG,GAAW2+B,KAIhCvN,EAAiC,CAAC,EAChCd,EAAuBtwB,EAAOy2B,EAAiB,GAAGlgD,IAAlD+5C,mBAINZ,EACE1vB,EAAOy2B,EAAiB,GAAGlgD,IAD7Bm5C,oBAGEiL,KACGjL,GAAuBC,IAC1ByB,EAA+B1B,oBAAsBC,GAEvDrgD,IAAAA,OACE8hD,IACE1B,GAAuB,CAAEA,oBAAAA,KAK/BpgD,IAAAA,KAAO0wB,GAAQ,SAAC++B,EAAiC10B,GAC/CyzB,EAAiCzzB,GAAO,CACtCw0B,eAAah/B,EAAAA,EAAAA,GAAA,GACRk/B,GAELC,YAAUn/B,EAAAA,EAAAA,GAAA,GACLgxB,GAGT,IAEA,IAAIqB,EAAgBrB,EAChB8J,GAA4BvrD,IAAyB4rD,IACvD9I,EAAgB9iD,GAGlB0mD,GAAUj2B,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CACTywB,mBAAAA,GACG6G,EAAwB,CAAC,EAAI,CAC9BA,sBAAuBtG,EACvBqB,cAAAA,IACD,IACDd,+BAAAA,EACAqF,iBAAAA,EACAqH,iCAAAA,EACAlB,kBAAmB,KACnBkC,2BAAAA,EACAnP,YAAaD,KAIbqO,GADEe,GAMJ9E,GAAW,EACb,IACCz+C,SAAQC,EAAAA,EAAAA,aAAYrP,IAAE,IAAD6F,OAAK4lD,IAA2B1sD,EAAKoB,UAAU8Z,YACzE,MAAO,GAAiC,IAA7Bk4C,EAAkBroD,SAAiBgkD,EAAqB,CACjE,IAAMgF,EAA6B,CAAC,EAEpC3vD,IAAAA,KAAOwuD,GAAkC,SAACc,EAASrsB,GACjD0sB,EAA2B1sB,GAAcqsB,EAAQC,aACnD,IAEA,IAAMC,GAA8Bd,EAA0B,CAC5DC,mBAAoBgB,IAGhB1sB,EAAakkB,EAAiB,GAAGlgD,GAE/B+5C,EAAuBwN,EAAiCvrB,GAAYssB,cAApEvO,mBAEA0O,EAAelB,EAAiCvrB,GAAhDysB,WAEJ9M,EAAgB8M,EAqBpB,OApBIrE,GAA4BvrD,IAAyB4rD,IACvD9I,EAAgB9iD,GAGlB0mD,GAAUj2B,EAAAA,EAAAA,GAAC,CACT+8B,kBAAmB,KACnBtM,mBAAAA,EACAwO,2BAAAA,GACG3H,EAAwB,CAAC,EAAI,CAC9BA,sBAAuB6H,EACvB9M,cAAAA,KAKF6L,GADEe,IAMIzzD,EAAAA,EAAAA,KAACsyD,GAAmB99B,EAAAA,EAAAA,GAAA,GAAKhtB,GACnC,CAEA,OACExH,EAAAA,EAAAA,KAAA,OAAAgK,SAEEg0B,GAAUh+B,EAAAA,EAAAA,KAAA,WAAUA,EAAAA,EAAAA,KAACsyD,GAAmB99B,EAAAA,EAAAA,GAAA,GAAKhtB,KAInD,IAMA,OAAO+qD,CACT,ECnOMsB,G,UAAsBC,UAAcC,6BAA6BC,SA8BjEC,GAAwB,CAC5BC,sBAAuBn5C,2FACvBo5C,8BAA+Bp5C,+GAC/Bq5C,oCAAqCr5C,kIACrCs5C,0BAA2Bt5C,0JAC3Bu5C,mBAAoBv5C,sFA0CTw5C,GAAiB,SAACzG,EAAe0G,GAC5C,IACEpJ,EAGE0C,EAHF1C,iBACArF,EAEE+H,EAFF/H,+BACAzB,EACEwJ,EADFxJ,YAEImQ,EAAoB,CACxB5O,oBAAqBuF,EAAiB,GAAGlgD,GACzCwpD,YAAapQ,EACbyB,+BAAAA,GAEF,OAAAvxB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKggC,GAAQ,IACXC,kBAAAA,GAEJ,EAEaE,GAAiC,SAAHn1D,GAQpC,IAPL0M,EAAK1M,EAAL0M,MACA0oD,EAAgBp1D,EAAhBo1D,iBACAC,EAAer1D,EAAfq1D,gBACAp7C,EAAQja,EAARia,SACAq7C,EAAet1D,EAAfs1D,gBACAvI,EAAsB/sD,EAAtB+sD,uBACAwI,EAAgBv1D,EAAhBu1D,iBAGEzwB,EAIEp4B,EAJFo4B,WACAmmB,EAGEv+C,EAHFu+C,WACAiC,EAEExgD,EAFFwgD,aACAnoD,EACE2H,EADF3H,KAGFywD,EAOIJ,IANFK,EAA2BD,EAA3BC,4BACAC,EAAcF,EAAdE,eACAC,EAAiBH,EAAjBG,kBACAV,EAAiBO,EAAjBP,kBACA5N,EAAamO,EAAbnO,cACAuO,EAAmBJ,EAAnBI,oBAIIC,GAA6C5vB,EAAAA,EAAAA,OAAK,SAACugB,GACvD,IAAQsP,EAA+D/wD,EAA/D+wD,mBAAoBrS,EAA2C1+C,EAA3C0+C,MAAOsS,EAAoChxD,EAApCgxD,gCAC/BD,GAAsBrS,GAASsS,GACjCA,EAAgC,CAAEtS,MAAAA,EAAOuS,UAAWF,EAAoBtP,KAAAA,GAE5E,IAEA,OAAOvxC,IAAAA,UACJlR,MAAK,WACJ,OAAI0xD,GAA+BE,EAC1B7wB,EAAWmxB,+BAA+B,CAC/C5O,cAAAA,EACAC,UAAW2N,IACVlxD,MAAK,SAACmyD,GAEP,OADAL,EAA2CK,GApIE,SACrDC,EACAzpD,GAEA,IACI0pD,EADItxB,EAAqBp4B,EAArBo4B,WAAY//B,EAAS2H,EAAT3H,KAqBpB,OAjBEqxD,EADE1pD,EAAMojD,yBACUhrB,EAAWuxB,8BAC3BF,EACAzpD,EAAMo/C,gBAAgBngD,YAGNm5B,EAAWwxB,8BAA8BH,GAIzDpxD,EAAKwxD,oBACPH,EAAkBtxB,EAAW0xB,mBAC3BJ,EACA/B,IACA,IAIG+B,CACT,CA2GiBK,CACLP,EACAxpD,EAEJ,IAGKuI,IAAAA,SAAgB,EACzB,IACClR,MAAK,WACJ,OAAI2xD,GAAkBD,EACb3wB,EAAWmxB,+BAA+B,CAC/C5O,cAAeuO,EACftO,UAAW2N,IACVlxD,MAAK,SAAC2yD,GAEP,OADAb,EAA2Ca,GAhHD,SAClDP,EACAzpD,EACA2oD,EACAC,EACAI,GAEA,IACE5wB,EAIEp4B,EAJFo4B,WACA//B,EAGE2H,EAHF3H,KACAmoD,EAEExgD,EAFFwgD,aACAjC,EACEv+C,EADFu+C,WAGEmL,EAAkBtxB,EAAW6xB,2BAA2BR,GAU5D,OARIT,GAAkB3wD,EAAKwxD,oBACzBH,EAAkBtxB,EAAW0xB,mBAC3BJ,EACA/B,IACA,IAIG+B,EACJryD,MAAK,SAACyY,GACLzX,EAAK6xD,4BAA2B,GAEhCvB,EAAgB,CACdwB,qBAAqBC,EAAAA,EAAAA,OAAMt6C,EAASu6C,oBAAoBrrD,KAE1Du/C,EAAW,CACT+L,kBAAkB,IAGpB9J,EAAaoI,EAAgB,CAAEI,gBAAgB,IACjD,GACJ,CA4EiBuB,CAAqCP,EAAYhqD,EAAO2oD,EAAiBC,EAAiBI,EACnG,KAEFzK,EAAW,CACT+L,kBAAkB,IAEpBjyD,EAAKmyD,yBAAwB,GAE7BhK,EAAaoI,EAAgB,CAAEI,gBAAgB,KACxCzgD,IAAAA,SAAgB,GACzB,IACC3C,OAAM,SAACo3B,GACN,IAAMytB,GAAaC,EAAAA,EAAAA,OAAM1tB,GACtBvU,OAAO,gBACPA,OAAO,SACPA,OAAO,KACPA,OAAO,QACPhpB,QACGwhD,EAAe8G,GAAsB0C,IACzC1C,GAAsBK,mBAExBS,EAAiBxwD,EAAKugD,QAAQ7jD,UAAUksD,IAEpC1zC,GACFA,EAASo9C,OAAO,sDAADlwD,OAAuD9C,KAAKuY,UAAU8sB,IAEzF,IACCh5B,SAAQC,EAAAA,EAAAA,aAAYrP,IAAE,IAAD6F,OAAK4lD,IAA2BhoD,EAAKugD,QAAQ7jD,UAAU8Z,YACjF,ECjLM+7C,GAAiC,SAACrD,GACtC,OAAIA,EACKlS,EAAcQ,iBAAiBN,KAEjCF,EAAcM,sBAAsBJ,IAC7C,EAEMwQ,GAAkB,WAAH,OAAS1Q,EAAcI,eAAeF,IAAK,EAE1DqT,GAAkB,SAAHt1D,GACnB,OADuCA,EAAd01D,eAEhB3T,EAAcU,iBAAiBR,KAEjCF,EAAcO,kBAAkBL,IACzC,EAEM8S,GAAiB,SAACzG,EAAe0G,GACrC,IAGMC,EAAoB,CACxB5O,oBAFEiI,EADF1C,iBAGsC,GAAGlgD,GACzCwpD,YAAa,GACb3O,+BAAgC,MAElC,OAAAvxB,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACKggC,GAAQ,IACXC,kBAAAA,GAEJ,EAEasC,GAAuB,SAAAvvD,GAAK,OACvCxH,EAAAA,EAAAA,KAACg3D,EAAAA,IAAsBxiC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACjBhtB,GAAK,IACTimD,UAAWlM,EAAcK,iBAAiBhiD,MAC1C8tD,gBAAiB2E,GACjBJ,gBAAiBA,GACjB6C,gBAAiBA,GACjBgC,+BAAgCA,GAChCG,0BAAwB,EACxB1K,uBAAuB,wBACvBuD,kBAAmBA,GACnByE,eAAgBA,GAChBI,+BAAgCA,KAChC,ECnDS7E,GAAoB,SAC/BC,EACAmH,EACAzD,GAiBA,MAfe,CAAC,CACdxpD,KAAM,cACNgmD,iBAAkBiH,EAClBlH,aAAcyD,EACZlS,EAAcK,iBAAiBH,KAC/BF,EAAcM,sBAAsBJ,MACrC,CACDx3C,KAAM,cACNgmD,iBAAkBF,EAClBG,aAAc3O,EAAcS,oBAAoBP,MAC/C,CACDx3C,KAAM,gBACNmmD,kBAAkB,GAItB,ECMa+G,GAEX1L,EAAgD4G,IAtBJ,SAAA7qD,GAAK,OACjDxH,EAAAA,EAAAA,KAACo3D,EAAAA,IAAiB5iC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACZhtB,GAAK,IACTsoD,kBAAmBA,GACnB0B,2BAA4BjQ,EAAcC,WAAWC,KACrDgQ,qCAAsClQ,EAAcK,iBAAiBH,KACrEgM,UAAWlM,EAAcQ,iBAAiBniD,MAC1C6F,gBAAgB,EAChB3D,sBAAuBA,EACvBN,mBAAoBo/C,EAAsBp5C,EAAMrF,aAChDJ,4CAA0C,EAE1CC,0CAAwC,IACxC,KCpBS8tD,GAAoB,SAC/BjwD,EACAiyD,EACArnD,EACAsnD,GAiBA,MAfe,CAAC,CACd9nD,KAAM,cACN+lD,aAAczO,EAAcQ,iBAAiBN,MAC5C,CACDx3C,KAAM,SACNkoD,SAAS,EACT3xD,UAAW,eACXqc,KAAMk1C,EAAelyD,EAAKoB,UAAU8Z,gBAAwBlb,EAAKoB,UAAU8Z,gBAC3E7Q,QAAS4nD,EACTtnD,SAAUC,GACT,CACDR,KAAM,gBACNmmD,kBAAkB,GAItB,EChBa0E,GAAkB,SAAHt1D,GAAoB,OAAAA,EAAd01D,eAC9B3T,EAAcU,iBAAiBR,KAC/BF,EAAcO,kBAAkBL,IAAI,EAE3B4V,GAA0B,SAAA7vD,GAAK,OAC1CxH,EAAAA,EAAAA,KAACs3D,EAAAA,IAA8B9iC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACzBhtB,GAAK,IACTsoD,kBAAmBA,GACnBgF,gBAAiBA,GACjBrH,UAAWlM,EAAcS,oBAAoBpiD,MAC7C20D,eAAgBA,GAChBI,+BAAgCA,GAChC4C,YAAU,EACVC,uBAAwBz8C,wLACxB,E,aCjBS08C,GAAoC,SAAHj4D,GAKvC,IAJLsuD,EAAatuD,EAAbsuD,cACA4J,EAAKl4D,EAALk4D,MACAC,EAAan4D,EAAbm4D,cACAC,EAAmBp4D,EAAnBo4D,oBAEQC,EAA0BH,EAA1BG,sBAENrjD,EASEs5C,EATFt5C,KACA66C,EAQEvB,EARFuB,WACAyI,EAOEhK,EAPFgK,cACArN,EAMEqD,EANFrD,WACAnmB,EAKEwpB,EALFxpB,WACA//B,EAIEupD,EAJFvpD,KACAorD,EAGE7B,EAHF6B,cACe3I,EAEb8G,EAFFjH,cACAd,EACE+H,EADF/H,+BAGMlmD,EAAS0E,EAAT1E,KAEF40D,EAAoB,CACxB5O,oBAAqBiS,EAAc,oBAAoB,GAAG5sD,GAC1D66C,+BAAgC4J,EAAgB,KAAO5J,GAGnDc,EAAgB,CACpBI,iBAAkB4Q,EAAsBtQ,iBACxCL,2BAA4B2Q,EAAsBrQ,2BAClDL,WAAY0Q,EAAsBh8B,WAClC13B,KAAMkrD,EAAa76C,EAAOqjD,EAAsBE,YAChDnsD,KAAMisD,EAAsB7jD,KAC5B07C,gBAAiBmI,EAAsBnI,gBACvCC,cAAAA,EACA3I,sBAAuB2I,EAAgB,KAAO3I,GAG5C6Q,GACFvzB,EAAWmxB,+BAA+B,CACxC5O,cAAAA,EACAC,UAAW2N,IAEVlxD,MAAK,SAAAy0D,GAAS,OACb1zB,EAAWwxB,8BAA8BkC,EAAU,IAEpDz0D,MAAK,WACJk6B,GAAAA,gBAAgBw6B,IAAI,CAClBC,SAAUC,GAAAA,kBAAkBC,aAC5Bx4D,MAAO,GACPuG,QAAStG,EAAKuC,IAAI,mCAAmCmhD,QAAQ,MAAOoU,GACpE74D,OAAQ,mBAEV2rD,EAAW,CACTyK,gBAAgB,EAChBD,6BAA6B,EAC7BzgD,KAAM66C,EAAa76C,EAAOqjD,EAAsBE,YAChDM,sBAAuBV,IAEzBC,GACF,IACC1nD,SAAQC,EAAAA,EAAAA,aACMrP,IAAE,iDACGjB,EAAKoB,UAAU,WACfgD,IACGA,IACD,QAG5B,ECpEaq0D,GAAgC,SAACxK,GAC5C,IACEvpD,EASEupD,EATFvpD,KACAuzD,EAQEhK,EARFgK,cACApI,EAOE5B,EAPF4B,gBACA7zB,EAMEiyB,EANFjyB,WACA7nB,EAKE85C,EALF95C,KACAswB,EAIEwpB,EAJFxpB,WACA6wB,EAGErH,EAHFqH,kBACAF,EAEEnH,EAFFmH,4BACA7J,EACE0C,EADF1C,iBAGImN,EAA0B,IAAIC,EAAAA,GAAwBj0D,EAAK1E,MAGzD4B,EAAoB8C,EAApB9C,OAAQqjD,EAAYvgD,EAAZugD,QAWV2T,EAVwBX,EAAc,2BAA4BY,EAAAA,EAAAA,IACtEn0D,EAAKugD,QACL4K,EACA17C,EACA6nB,EACA08B,GACA,EACAh0D,EAAKo0D,gBA2BP,MAtBsB,CAAC,CACrBzlD,MAAO4xC,EAAQ7jD,UAAU8Z,eACzBpP,MAAOmsD,EAAc,QACrBc,eAAgB,eACf,CACD1lD,MAAO4xC,EAAQ7jD,UAAU8Z,qBACzBpP,MAAO24B,EAAW4hB,0BAClB0S,eAAgB,uCACf,CACD1lD,MAAO4xC,EAAQ7jD,UAAU8Z,yBACzBpP,MAAOy/C,EAAiB,GAAG52C,KAC3BokD,eAAgB,qDACf,CACD1lD,MAAO4xC,EAAQ7jD,UAAU8Z,iCACzBpP,MAAOlK,EAAOW,IAAI,kBAAkBy2D,MACpCD,eAAgB,kCACdzD,GAAqBF,IAAgC,CACvD/hD,MAAO4xC,EAAQ7jD,UAAU8Z,0BACzBpP,MAAO8sD,EACPG,eAAgB,iCAIpB,ECjDME,GAAkB,CACtBC,UAAWh+C,yCAGAi+C,GAA6B,SAAAxxD,GAAK,OAC7CxH,EAAAA,EAAAA,KAACi5D,EAAAA,IAAwBzkC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACnBhtB,GAAK,IACT0xD,WAAW,6BACXC,mBAAoB1B,GACpB2B,qBAAsBd,GACtBnL,aAbiBpyC,oJAcjBs+C,cAbkBt+C,2DAclBu+C,gBAboBv+C,kKAcpB+9C,gBAAiBA,GACjBS,YAAY,aACZ,ECfStX,GAAmB,SAAAz6C,GAAK,OACnCxH,EAAAA,EAAAA,KAACw5D,EAAAA,IAAuBhlC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAClBhtB,GAAK,IACTmlD,aAAcpL,EAAcO,kBAAkBL,OAC9C,ECIFiK,GACE+N,EAAAA,wBADF/N,KAGWgO,GAAwB,SAAHl6D,GAI3B,IAHLK,EAAIL,EAAJK,KACAykC,EAAU9kC,EAAV8kC,WACAioB,EAAsB/sD,EAAtB+sD,uBAEM3sD,EAAQC,EAAKoB,UAAUsgD,EAAcC,WAAWE,UAC9CD,EAASF,EAAcC,WAAvBC,KACR,OACEzhD,EAAAA,EAAAA,KAAC0rD,GAAI,CAEH9rD,MAAOA,EACP6hD,KAAMA,EACNkY,kBAAmB,WAAF,OnBsKU,SAAC95D,EAAM8sD,EAAcroB,GAmBpD,OACEtkC,EAAAA,EAAAA,KAAC45D,EAAAA,GAAgB,CACfC,QApBY,SAAC/L,GACf,IACEpB,EAGEoB,EAHFpB,aACAjC,EAEEqD,EAFFrD,WACAqP,EACEhM,EADFgM,iBAGFx1B,EAAWkoB,SACX/B,GAAUj2B,EAAAA,EAAAA,GAAC,CACTo2B,YAAY,EACZ8D,qBAAqB,GAClB9C,IAGLkO,EAAiBpS,EAAAA,GAAWqS,OAC5BrN,EAAaC,EACf,EAKI/B,WAAYtmB,EAAWsoB,iBACvB/sD,KAAMA,EACN6hD,SAAS,qBACTsY,YAAa11B,EAAW4hB,2BAG9B,CmBlM+ByT,CAAkB95D,EAAM0hD,EAAcC,WAAWC,KAAMnd,EAAW,EAACt6B,UAE5FhK,EAAAA,EAAAA,KAACouD,EAAkB,CACjBX,UAAWlM,EAAcC,WAAW5hD,MACpC+sD,aAAcpL,EAAcI,eAAeF,KAC3C8K,uBAAwBA,KARrB9K,EAYX,ECRA,IAAM8K,GAAyB,wBAElB0N,GAAmB,SAAAjO,GAC9B,SAAAiO,EAAYzyD,GAAQ,IAADwE,EAgBM,OAhBNV,EAAAA,EAAAA,GAAA,KAAA2uD,IACjBjuD,GAAAC,EAAAA,EAAAA,GAAA,KAAAguD,EAAA,CAAMzyD,KAkBR0yD,mBAAqB,SAACC,GAChBA,EAAU3W,SAAS93C,MAAQM,EAAKxE,MAAMg8C,SAAS93C,MAEjDM,EAAKW,SAAS,CACZytD,QAAQ,EACR10D,WAAYgiD,EAAAA,GAAWqS,MACvBM,WAAYC,EAAAA,GAAWC,OACvBC,mBAAmB,EACnBC,sBAAsB,EACtBC,aAAc,KACdC,UAAWpZ,EAAcC,WACzBgV,kBAAkB,EAClBoE,2BAA2B,EAC3BC,kBAAkBC,EAAAA,EAAAA,kBAEpB9uD,EAAK8iD,aAAe,CAAC,EACrB9iD,EAAK+uD,WAAWZ,GAEpB,EAACnuD,EAED+hD,oBAAsB,kBAAM/hD,EAAKE,MAAM2uD,gBAAiB,EAAD7uD,EAEvDgvD,cAAgB,kBAAMhvD,EAAKE,MAAMxG,UAAW,EAADsG,EAE3C6oD,gBAAkB,SAACviB,GACjBtmC,EAAKW,SAAS,CACZ+tD,aAAcpoB,GAElB,EAACtmC,EAEDivD,gBAAkB,kBAAMjvD,EAAKE,MAAMwuD,YAAa,EAAD1uD,EAE/CkvD,cAAgB,kBAAMlvD,EAAKE,MAAMmuD,UAAW,EAADruD,EAE3CmvD,eAAiB,kBAAMnvD,EAAKE,MAAMkvD,WAAY,EAADpvD,EAM7C+uD,WAAa,SAACvzD,GACZwE,EAAKg8B,WAAWqzB,gBAGhB5mD,IAAAA,UAAkBlR,MAAK,WAzE3B,IAA6CgB,EAkHvC,OAlHuCA,EA0EHiD,EAAMjD,MAzE9C+2D,EAAAA,EAAAA,IAAkB/2D,GAClBA,EAAKg3D,MAAM,OACXh3D,EAAKg3D,MAAM,UACXh3D,EAAKg3D,MAAM,6BAuEPvvD,EAAKzH,KAAOiD,EAAMjD,KAGlByH,EAAKzH,KAAKugD,QAAU94C,EAAKxE,MAAM3H,KAC/BmM,EAAKzH,KAAKm2D,aAAe1uD,EAAKE,MAAMwuD,aACpC1uD,EAAKzH,KAAKyjC,WAAah8B,EAAKxE,MAAMwgC,WAClCh8B,EAAKzH,KAAK0G,MAAQzD,EAAMyD,MACxBe,EAAKzH,KAAK20B,cAAgB1xB,EAAM0xB,cAChCltB,EAAKnM,KAAOmM,EAAKzH,KAAK1E,KACtBmM,EAAKzH,KAAKsoD,gBAAkB7gD,EAAKxE,MAAMwgC,WAAW0L,YAAY,2BAC9D1nC,EAAKzH,KAAKsoD,gBAAgBvkB,WAG1Bt8B,EAAKzH,KAAKwpD,oBAAsB/hD,EAAK+hD,oBAGrC/hD,EAAKzH,KAAKmyD,wBAA0B1qD,EAAK0qD,wBACzC1qD,EAAKzH,KAAK6xD,2BAA6BpqD,EAAKoqD,2BAC5CpqD,EAAKzH,KAAKmuD,6BAA+B1mD,EAAK0mD,6BAG9C1mD,EAAKzH,KAAKtC,yBAA2BA,EAGrC+J,EAAKs4B,WAAa,IAAI8d,EAA0B,CAC9C79C,KAAMyH,EAAKzH,OAGbyH,EAAKwvD,yBAA2B,IAAI9R,EAAyB19C,EAAKzH,KAAK9C,QAEvEuK,EAAKkmD,kBAAoBlmD,EAAKzH,KAAK2tD,kBAC/BlmD,EAAKzH,KAAK2tD,kBACV,IAAIlI,EAAkB,CACtB7nD,YAAaqF,EAAMrF,YACnBk4D,WAAY7yD,EAAMyD,MAAMuR,OAAOqiB,IAAMy7B,EAAAA,GAAWC,OAASD,EAAAA,GAAWmB,QAGvChnD,IAAAA,QAAgB,IAEjBlR,MAAK,WACnCyI,EAAKW,SAAS,CACZytD,QAAQ,GAEZ,GACF,GACF,EAACpuD,EAED0qD,wBAA0B,SAACxqD,GACzBF,EAAKW,SAAS,CACZ6tD,kBAAmBtuD,GAEvB,EAACF,EAEDoqD,2BAA6B,SAAClqD,GAC5BF,EAAKW,SAAS,CACZ8tD,qBAAsBvuD,GAE1B,EAACF,EAED8tD,iBAAmB,SAAC7vD,GAClB+B,EAAKW,SAAS,CACZjH,WAAYuE,GAEhB,EAAC+B,EAED0vD,iBAAmB,SAACC,GAClB3vD,EAAKW,SAAS,CACZ0tD,WAAYsB,IAEd3vD,EAAKkmD,kBAAkBwJ,iBAAiBC,EAC1C,EAAC3vD,EAED0mD,6BAA+B,SAACxmD,GAC9BF,EAAKW,SAAS,CACZiuD,0BAA2B1uD,GAE/B,EAACF,EAED4vD,eAAiB,SAAC/7D,GAChBmM,EAAK6vD,MAAQ,GAEb7vD,EAAK6vD,MAAMp5D,KAAKi3D,GAAsB,CACpC75D,KAAAA,EACAykC,WAAYt4B,EAAKs4B,WACjBioB,uBAAAA,MAEFvgD,EAAK6vD,MAAMp5D,KD1IwB,SAAHe,GAG7B,IAFL3D,EAAI2D,EAAJ3D,KACA0sD,EAAsB/oD,EAAtB+oD,uBAEM3sD,EAAQC,EAAKoB,UAAUsgD,EAAcI,eAAeD,UAClDD,EAASF,EAAcI,eAAvBF,KACFuO,EAAezO,EAAcC,WAAWC,KACxCyO,EAAe3O,EAAcK,iBAAiBH,KACpD,OACEzhD,EAAAA,EAAAA,KAAC0rD,GAAI,CAEH9rD,MAAOA,EACP6hD,KAAMA,EAAKz3C,UAEXhK,EAAAA,EAAAA,KAAC6xD,EAAoB,CACnBnE,gBAAiBjC,EACjBgC,UAAWlM,EAAcI,eAAe/hD,MACxCowD,aAAcA,EACdE,aAAcA,EACdsB,2BAA4BjQ,EAAcC,WAAWC,KACrDgQ,qCAAsClQ,EAAcK,iBAAiBH,KACrE8K,uBAAwBA,KAXrB9K,EAeX,CCiHoBqa,CAAwB,CACtCj8D,KAAAA,EACA0sD,uBAAAA,MAEFvgD,EAAK6vD,MAAMp5D,KD9GwB,SAAHiB,GAK7B,IAJL7D,EAAI6D,EAAJ7D,KACAm7D,EAAat3D,EAAbs3D,cACAnG,EAAenxD,EAAfmxD,gBACAtI,EAAsB7oD,EAAtB6oD,uBAEM3sD,EAAQC,EAAKoB,UAAUsgD,EAAcK,iBAAiBF,UACpDD,EAASF,EAAcK,iBAAvBH,KACFsa,EAAYf,MAAoBtT,EAAAA,GAAWqS,MACjD,OACE/5D,EAAAA,EAAAA,KAAC0rD,GAAI,CAEH9rD,MAAOA,EACP6hD,KAAMA,EACNj+B,QAASu4C,EAAU/xD,UAEnBhK,EAAAA,EAAAA,KAAC+2D,GAAoB,CACnBlC,gBAAiBA,EACjBtI,uBAAwBA,EACxByP,UAAWn8D,EAAKoB,UAAU8Z,gBARvB0mC,EAYX,CCuFoBwa,CAAwB,CACtCp8D,KAAAA,EACAm7D,cAAehvD,EAAKgvD,cACpBnG,gBAAiB7oD,EAAK6oD,gBACtBtI,uBAAAA,MAEFvgD,EAAK6vD,MAAMp5D,KDrFyB,SAAH8F,GAO9B,IANL1I,EAAI0I,EAAJ1I,KACAm7D,EAAazyD,EAAbyyD,cACAJ,EAAyBryD,EAAzBqyD,0BACArO,EAAsBhkD,EAAtBgkD,uBACAjoB,EAAU/7B,EAAV+7B,WACAniC,EAAWoG,EAAXpG,YAEMvC,EAAQC,EAAKoB,UAAUsgD,EAAcM,sBAAsBH,UACzDD,EAASF,EAAcM,sBAAvBJ,KACFsa,EAAYf,MAAoBtT,EAAAA,GAAWwU,UAAYtB,EAE7D,OACE56D,EAAAA,EAAAA,KAAC0rD,GAAI,CAEH9rD,MAAOA,EACP6hD,KAAMA,EACNj+B,QAASu4C,EAAU/xD,UAEnBhK,EAAAA,EAAAA,KAACm8D,EAAAA,GAAqB,CACpB5P,uBAAwBA,EACxBkB,UAAWlM,EAAcM,sBAAsBjiD,MAC/CowD,aAAczO,EAAcK,iBAAiBH,KAC7CyO,aAAc3O,EAAcQ,iBAAiBN,KAC7Cua,UAAWn8D,EAAKoB,UAAU8Z,aAC1BqhD,cAAc,qBACdC,aAAc,SAAAC,GAAe,OAC3Bh4B,EAAW4gB,sBAAsBoX,EAAgBpxD,GAAG,EACtDqxD,0BAA0B,iCAC1Bp6D,YAAaA,KAfVs/C,EAmBX,CCoDoB+a,CAAyB,CACvC38D,KAAAA,EACAm7D,cAAehvD,EAAKgvD,cACpBJ,0BAA2B5uD,EAAKE,MAAM0uD,0BACtCrO,uBAAAA,GACAjoB,WAAYt4B,EAAKs4B,WACjBniC,YAAa6J,EAAKxE,MAAMrF,eAE1B6J,EAAK6vD,MAAMp5D,KDjD8B,SAAHiG,GAMnC,IALL7I,EAAI6I,EAAJ7I,KACA0E,EAAImE,EAAJnE,KACAy2D,EAAatyD,EAAbsyD,cACA74D,EAAWuG,EAAXvG,YACAoqD,EAAsB7jD,EAAtB6jD,uBAEM3sD,EAAQC,EAAKoB,UAAUsgD,EAAcQ,iBAAiBL,UACpDD,EAASF,EAAcQ,iBAAvBN,KACFsa,EAAYf,MAAoBtT,EAAAA,GAAWwU,SAC3ChL,EAA6BrxD,EAAKoB,UAAU8Z,kBAElD,OACE/a,EAAAA,EAAAA,KAAC0rD,GAAI,CAEH9rD,MAAOA,EACP6hD,KAAMA,EACNj+B,QAASu4C,EAAU/xD,UAEnBhK,EAAAA,EAAAA,KAACm3D,GAA0B,CACzBh1D,YAAaA,EACboC,KAAMA,EACN2sD,2BAA4BA,EAC5B3E,uBAAwBA,KATrB9K,EAaX,CCsBoBgb,CAA8B,CAC5C58D,KAAAA,EACA0E,KAAMyH,EAAKzH,KACXy2D,cAAehvD,EAAKgvD,cACpB74D,YAAa6J,EAAKxE,MAAMrF,YACxBoqD,uBAAAA,MAEFvgD,EAAK6vD,MAAMp5D,KDnB2B,SAAHoG,GAKhC,IAJLhJ,EAAIgJ,EAAJhJ,KACAm7D,EAAanyD,EAAbmyD,cACAnG,EAAehsD,EAAfgsD,gBACAtI,EAAsB1jD,EAAtB0jD,uBAEM3sD,EAAQC,EAAKoB,UAAUsgD,EAAcS,oBAAoBN,UACvDD,EAASF,EAAcS,oBAAvBP,KACFsa,EAAYf,MAAoBtT,EAAAA,GAAWwU,SACjD,OACEl8D,EAAAA,EAAAA,KAAC0rD,GAAI,CAEH9rD,MAAOA,EACP6hD,KAAMA,EACNj+B,QAASu4C,EAAU/xD,UAEnBhK,EAAAA,EAAAA,KAACq3D,GAAuB,CACtBxC,gBAAiBA,EACjB6H,oBAAkB,EAClBC,qBAAsB,KACtBpQ,uBAAwBA,KATrB9K,EAaX,CCLoBmb,CAA2B,CACzC/8D,KAAAA,EACAm7D,cAAehvD,EAAKgvD,cACpBnG,gBAAiB7oD,EAAK6oD,gBACtBtI,uBAAAA,MAEFvgD,EAAK6vD,MAAMp5D,KDQqB,SAAHuG,GAG1B,IAFLnJ,EAAImJ,EAAJnJ,KACA26D,EAAiBxxD,EAAjBwxD,kBAEM56D,EAAQC,EAAKoB,UAAUsgD,EAAcO,kBAAkBliD,OACrD6hD,EAASF,EAAcO,kBAAvBL,KACR,OACEzhD,EAAAA,EAAAA,KAAC0rD,GAAI,CAEH9rD,MAAOA,EACP6hD,KAAMA,EACNj+B,QAASg3C,EAAkBxwD,UAE3BhK,EAAAA,EAAAA,KAACg5D,GAA0B,KALtBvX,EAQX,CCxBoBob,CAAqB,CACnCh9D,KAAAA,EACA26D,kBAAmBxuD,EAAKE,MAAMsuD,qBAEhCxuD,EAAK6vD,MAAMp5D,KD2BoB,SAAH0G,GAKzB,IAJLtJ,EAAIsJ,EAAJtJ,KACAo7D,EAAe9xD,EAAf8xD,gBACAR,EAAoBtxD,EAApBsxD,qBACAlO,EAAsBpjD,EAAtBojD,uBAEM3sD,EAAQC,EAAKoB,UAAUsgD,EAAcU,iBAAiBriD,OACpD6hD,EAASF,EAAcU,iBAAvBR,KAER,OACEzhD,EAAAA,EAAAA,KAAC0rD,GAAI,CACH9rD,MAAOA,EACP6hD,KAAMA,EACNj+B,QAASi3C,EAAqBzwD,UAE9BhK,EAAAA,EAAAA,KAACiiD,GAAgB,CACfgZ,gBAAiBA,EACjB1O,uBAAwBA,KAIhC,CChDoBuQ,CAAoB,CAClCj9D,KAAAA,EACAo7D,gBAAiBjvD,EAAKivD,gBACtBR,qBAAsBzuD,EAAKE,MAAMuuD,qBACjClO,uBAAAA,KAEJ,EA9LEvgD,EAAKg8B,WAAaxgC,EAAMwgC,WACxBh8B,EAAK6vD,MAAQ,GACb7vD,EAAKE,MAAQ,CACXkuD,QAAQ,EACR10D,WAAYgiD,EAAAA,GAAWqS,MACvBM,WAAYC,EAAAA,GAAWC,OACvBC,mBAAmB,EACnBC,sBAAsB,EACtBC,aAAc,KACdC,UAAWpZ,EAAcC,WACzBgV,kBAAkB,EAClBoE,2BAA2B,EAC3BC,kBAAkBC,EAAAA,EAAAA,iBAEpB9uD,EAAK+uD,WAAWvzD,GAAOwE,CACzB,CAAC,OAAAI,EAAAA,EAAAA,GAAA6tD,EAAAjO,IAAA3gD,EAAAA,EAAAA,GAAA4uD,EAAA,EAAAvuD,IAAA,WAAAC,MAsCD,WAAmB,IAADoxD,GAChBA,EAAAxxD,KAAK+4B,YAAWr+B,SAAQvD,MAAAq6D,EAAAhsD,UAC1B,GAAC,CAAArF,IAAA,SAAAC,MAyID,WAAU,IAADU,EAAA,KACPC,EAGIf,KAAK/D,MAFPmqD,EAAarlD,EAAbqlD,cACA9xD,EAAIyM,EAAJzM,KAGF,IAAI0L,KAAKW,MAAMkuD,OAIb,OAAO,KAHP7uD,KAAKswD,MAAQ,GACbtwD,KAAKqwD,eAAe/7D,GAOtB,OACEG,EAAAA,EAAAA,KAAA,OACEQ,UAAW+rD,GACXhuC,MAAO,CACLrH,UAAW,OAAQhB,OAAQ,OAAQC,QAAS,OAAQC,cAAe,UACnEpM,UAEFhK,EAAAA,EAAAA,KAACg9D,EAAAA,SAAQ,CAAC74D,KAAK,wBAAuB6F,UACpChK,EAAAA,EAAAA,KAACi9D,EAAAA,GAAc,CACbtL,cAAeA,EACfuL,cAAe3b,EACfuY,iBAAkBvuD,KAAKuuD,iBACvB4B,iBAAkBnwD,KAAKmwD,iBACvBR,cAAe3vD,KAAK2vD,cACpBW,MAAOtwD,KAAKswD,MACZv3B,WAAY/4B,KAAK+4B,WACjB6nB,gBAAiB5gD,KAAKiwD,yBACtBtJ,kBAAmB3mD,KAAK2mD,kBACxB3tD,KAAMgH,KAAKhH,KACX44D,YAAa5xD,KAAKW,MAAMyuD,UACxBnE,iBAAkBjrD,KAAKW,MAAMsqD,iBAC7B1H,aAAcvjD,KAAKujD,aACnBtL,SAAUj4C,KAAK/D,MAAMg8C,SACrB4Z,wBAzBwB,WAAH,OAAS/wD,EAAKi4B,WAAW+4B,qBAAsB,OA8B9E,IAAC,CA9O6B,CAASvyD,EAAAA,eAiQzCmvD,GAAoBptD,aAAe,CACjC61C,SAAU,K,wBCpSZ,IAAI4a,EAAM,EAAQ,QAUlBC,EAAOC,QARP,SAAkBC,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAOoL,OAPhL,SAAUI,EAAmBh+D,GAAO89D,EAAWA,EAAW,6FAAwHL,EAAIQ,OAAO,OAASJ,EAAa79D,EAAKoB,UAAU,wCAA0C,GAAKy8D,GAAe,0DAAwFJ,EAAIQ,OAAO,OAASJ,EAAa79D,EAAKoB,UAAU,+CAAiD,GAAKy8D,GAAe,OAE9lBC,EADIE,EACOF,EAAW,sDAAqEL,EAAIQ,OAAO,OAASJ,EAAa79D,EAAKoB,UAAU,+CAAiD,GAAKy8D,GAAe,OAGrMC,EAAW,yEAAwFL,EAAIQ,OAAO,OAASJ,EAAa79D,EAAKoB,UAAU,+CAAiD,GAAKy8D,GAAe,OAEnOC,GAAsB,QAAwB,EAAEI,KAAKxyD,KAAK,sBAAuBqyD,EAAgBA,EAAgBC,kBAA6C,qBAApBA,kBAAgCA,uBAAkBzuD,EAAU,SAAUwuD,EAAgBA,EAAgB/9D,KAAmB,qBAAPA,KAAmBA,UAAKuP,GAAoBuuD,CAAS,C,yBCTvS,EAAQ,QAGlBJ,EAAOC,QADP,SAAkBC,GAAS,IAAIE,EAAW,GAA8F,OAA9DA,GAAsB,aAAwD,C,yBCFxJ,IAAIL,EAAM,EAAQ,QAoBlBC,EAAOC,QAlBP,SAAkBC,GAAS,IAAIE,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAiBuF,OAjBnF,SAAU59D,EAAM8L,GAAQ,IAAIO,EAAQP,EAAMi8C,MACvJ17C,GACJyxD,GAAsB,SAEtBA,EADc,WAAVzxD,EACOyxD,6FAAwHL,EAAIU,KAAK,KAAM,aAAaryD,EAAMT,MAAM,GAAM,GAAMoyD,EAAIU,KAAK,aAAc,GAAGryD,EAAMT,MAAM,GAAM,GAAM,4BAA8BoyD,EAAIU,KAAK,aAAc,GAAGn+D,EAAKoB,UAAU,0BAA0B,GAAM,GAArU08D,6DAGG,YAAVzxD,EACOyxD,6FAAwHL,EAAIU,KAAK,KAAM,aAAaryD,EAAMT,MAAM,GAAM,GAAMoyD,EAAIU,KAAK,aAAc,GAAGryD,EAAMT,MAAM,GAAM,GAAM,6BAA+BoyD,EAAIU,KAAK,aAAc,GAAGn+D,EAAKoB,UAAU,2BAA2B,GAAM,GAAvU08D,8DAGAA,6FAAwHL,EAAIU,KAAK,KAAM,aAAaryD,EAAMT,MAAM,GAAM,GAAMoyD,EAAIU,KAAK,aAAc,GAAGryD,EAAMT,MAAM,GAAM,GAAM,6BAA+BoyD,EAAIU,KAAK,aAAc,GAAGn+D,EAAKoB,UAAU,0BAA0B,GAAM,GAAtU08D,8DAEXA,GAAsB,WAGtBA,GAAuBL,EAAIQ,OAAO,MAAsB,IAAO,GAAP,IACvD,EAAEC,KAAKxyD,KAAK,SAAUqyD,EAAgBA,EAAgB/9D,KAAmB,qBAAPA,KAAmBA,UAAKuP,EAAU,UAAWwuD,EAAgBA,EAAgBjyD,MAAqB,qBAARA,MAAoBA,WAAMyD,GAAoBuuD,CAAS,C,yBCnBpN,IAAIL,EAAM,EAAQ,QASlBC,EAAOC,QAPP,SAAkBC,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAML,OANS,SAAUh+D,GAAWA,EAAKmE,QAAQg+B,YAAYM,cAC/Jy7B,EAAWA,6DAA+FL,EAAIU,KAAK,KAAMv+D,EAAKmE,QAAQo+B,eAAe,GAAM,GAAS,IAAYs7B,EAAIQ,OAAO,OAASJ,EAAaj+D,EAAKmE,QAAQg+B,YAAYM,aAAe,GAAKw7B,GAAe,gBAE7QC,EAAWA,6LAAwNL,EAAIU,KAAK,kBAAmBv+D,EAAKmE,QAAQo+B,eAAe,GAAM,GAAMs7B,EAAIU,KAAK,mBAAoBv+D,EAAKmE,QAAQq+B,QAAQ,GAAM,GAAS,aACpWxiC,EAAKmE,QAAQg+B,YAAYO,cAC7Bw7B,EAAWA,2BAAiDL,EAAIU,KAAK,KAAMv+D,EAAKmE,QAAQq+B,QAAQ,GAAM,GAAS,IAAYq7B,EAAIQ,OAAO,OAASJ,EAAaj+D,EAAKmE,QAAQg+B,YAAYO,aAAe,GAAKu7B,GAAe,SACvN,EAAEK,KAAKxyD,KAAK,SAAUqyD,EAAgBA,EAAgBn+D,KAAmB,qBAAPA,KAAmBA,UAAK2P,GAAoBuuD,CAAS,C,yBCRxH,IAAIL,EAAM,EAAQ,QAIlBC,EAAOC,QAFP,SAAkBC,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EACy1E,OADr1E,SAAUh+D,GAAO,IAAII,EAAOJ,EAAKI,KAClJ89D,EAAWA,EAAW,yKAAoNL,EAAIQ,OAAO,OAASJ,EAAa79D,EAAKoB,UAAU,oCAAsC,GAAKy8D,GAAe,uLAAkQJ,EAAIQ,OAAO,OAASJ,EAAa79D,EAAKoB,UAAU,2CAA6C,GAAKy8D,GAAe,qGAAgJJ,EAAIQ,OAAO,OAASJ,EAAa79D,EAAKoB,UAAU,0CAA4C,GAAKy8D,GAAe,uXAA6iBJ,EAAIQ,OAAO,OAASJ,EAAa79D,EAAKoB,UAAU,+CAAiD,GAAKy8D,GAA/kDC,+GAAkxDL,EAAIU,KAAK,QAASn+D,EAAKoB,UAAU,oBAAoB,GAAM,GAA70D08D,yCAA44DL,EAAIQ,OAAO,OAASJ,EAAa79D,EAAKoB,UAAU,oBAAsB,GAAKy8D,GAAv9DC,oEAA2kEL,EAAIU,KAAK,QAASn+D,EAAKoB,UAAU,sBAAsB,GAAM,GAAS,IAAYq8D,EAAIQ,OAAO,OAASJ,EAAa79D,EAAKoB,UAAU,sBAAwB,GAAKy8D,GAAe,8BAA2F,EAAEK,KAAKxyD,KAAK,SAAUqyD,EAAgBA,EAAgBn+D,KAAmB,qBAAPA,KAAmBA,UAAK2P,GAAoBuuD,CAAS,C,yBCHt9E,IAAIL,EAAM,EAAQ,QAKlBC,EAAOC,QAHP,SAAkBC,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAED,OAFK,SAAU9xD,GAAYA,EAAMxH,OAC7Iw5D,EAAWA,+BAAqDL,EAAIU,KAAK,OAAQryD,EAAM0R,MAAM,GAAM,GAAMigD,EAAIU,KAAK,oBAAqBryD,EAAMypC,cAAe,GAAM,GAAMkoB,EAAIU,KAAK,gBAAiBryD,EAAMwpC,UAAW,GAAM,GAAMmoB,EAAIU,KAAK,aAAcryD,EAAM0pC,WAAW,GAAM,GAAS,IAAYioB,EAAIQ,OAAO,OAASJ,EAAa/xD,EAAMxH,MAAQ,GAAKu5D,GAAe,OACpW,EAAEK,KAAKxyD,KAAK,UAAWqyD,EAAgBA,EAAgBjyD,MAAqB,qBAARA,MAAoBA,WAAMyD,GAAoBuuD,CAAS,C,wBCJ5H,IAAIL,EAAM,EAAQ,QAGlBC,EAAOC,QADP,SAAkBC,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAA0rH,OAAtrH,SAAUt2B,EAAWD,EAAYrnC,EAAMy6C,GAASqjB,EAAWA,EAAW,0EAAiHL,EAAIQ,OAAO,OAASJ,EAAa79D,EAAKoB,UAAU,sDAAwD,GAAKy8D,GAAe,kJAAyNJ,EAAIQ,OAAO,OAASJ,EAAa79D,EAAKoB,UAAU,yDAA2D,GAAKy8D,GAAe,gEAAgGJ,EAAIQ,OAAO,OAASJ,EAAa79D,EAAKoB,UAAU,qEAAuE,GAAKy8D,GAAe,0wCAA4mDJ,EAAIU,KAAK,OAAQ,mDAAqD92B,EAAa,QAAUoT,EAAS,QAAUnT,GAAW,GAAM,GAAS,IAAYm2B,EAAIQ,OAAO,OAASJ,EAAa79D,EAAKoB,UAAU,8CAAgD,GAAKy8D,GAAlqFC,4IAAw6FL,EAAIU,KAAK,QAASn+D,EAAKoB,UAAU,SAAS,GAAM,GAAx9F08D,2GAA0mGL,EAAIU,KAAK,QAASn+D,EAAKoB,UAAU,WAAW,GAAM,GAAS,eAAmD,EAAE88D,KAAKxyD,KAAK,cAAeqyD,EAAgBA,EAAgBz2B,UAA6B,qBAAZA,UAAwBA,eAAU/3B,EAAU,eAAgBwuD,EAAgBA,EAAgB12B,WAA+B,qBAAbA,WAAyBA,gBAAW93B,EAAU,SAAUwuD,EAAgBA,EAAgB/9D,KAAmB,qBAAPA,KAAmBA,UAAKuP,EAAU,WAAYwuD,EAAgBA,EAAgBtjB,OAAuB,qBAATA,OAAqBA,YAAOlrC,GAAoBuuD,CAAS,C,wBCFvzH,IAAIL,EAAM,EAAQ,QAGlBC,EAAOC,QADP,SAAkBC,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAAyN,OAArN,SAAU9xD,GAAQgyD,GAAuBL,EAAIQ,OAAO,OAASJ,EAAa/xD,EAAM1B,MAAQ,GAAKyzD,EAAa,EAAEK,KAAKxyD,KAAK,UAAWqyD,EAAgBA,EAAgBjyD,MAAqB,qBAARA,MAAoBA,WAAMyD,GAAoBuuD,CAAS,C,yBCFtV,IAAIL,EAAM,EAAQ,QAGlBC,EAAOC,QADP,SAAkBC,GAAS,IAAoCC,EAAhCC,EAAW,GAAqCC,EAAmBH,GAAU,CAAC,EAAyN,OAArN,SAAU9xD,GAAQgyD,GAAuBL,EAAIQ,OAAO,OAASJ,EAAa/xD,EAAMkR,MAAQ,GAAK6gD,EAAa,EAAEK,KAAKxyD,KAAK,UAAWqyD,EAAgBA,EAAgBjyD,MAAqB,qBAARA,MAAoBA,WAAMyD,GAAoBuuD,CAAS,C","sources":["../../../node_modules/@bingads-webui-campaign/import-callout/src/import-callout.js","../../../node_modules/@bingads-webui-campaign/import-callout/src/import-settings-callout.js","../../../node_modules/@bingads-webui-campaign/import-callout/src/import-summary-callout.js","../../../node_modules/@bingads-webui-campaign/import-callout/src/import-recommendation-constants.js","../../../node_modules/@bingads-webui-campaign/import-callout/src/import-recommendation-callout.js","../../../node_modules/@bingads-webui-campaign/inline-download-cron-i18n/src/cron-i18n.js","../../../node_modules/@bingads-webui-campaign/inline-download-date-range-editor/src/durable-dropdown.js","../../../node_modules/@bingads-webui-campaign/inline-download-date-range-editor/src/checkable-list.js","../../../node_modules/@bingads-webui-campaign/inline-download-date-range-editor/src/date-range-list.js","../../../node_modules/@bingads-webui-campaign/inline-download-date-range-editor/src/date-range-editor.js","../../../node_modules/@bingads-webui-campaign/inline-download-date-range-editor/src/comparison-date-range-editor.js","../../../node_modules/@bingads-webui-campaign/inline-download-reports-grid/src/inline-edit/save.js","../../../node_modules/@bingads-webui-campaign/inline-download-reports-grid/src/inline-edit/react-prompt.js","../../../node_modules/@bingads-webui-campaign/inline-download-reports-grid/src/util/index.js","../../../node_modules/@bingads-webui-campaign/inline-download-reports-grid/src/columns/email-frequency/form-group.js","../../../node_modules/@bingads-webui-campaign/inline-download-reports-grid/src/columns/email-frequency/index.js","../../../node_modules/@bingads-webui-campaign/inline-download-reports-grid/src/inline-edit/unsubscribe.js","../../../node_modules/@bingads-webui-campaign/inline-download-reports-grid/src/inline-edit/built-in-prompt.js","../../../node_modules/@bingads-webui-campaign/inline-download-reports-grid/src/grid-config.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/styles/index.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/util.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/pages/off-view.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/data/util.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/metrics/metric-block.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/metrics/metric-group.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/data/useTotalSessionCountData.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/data/useAverageActiveTimeData.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/data/useQuickData.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/styles/tileStyles.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/charts/base-charts/donut-chart.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/charts/devices-chart.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/charts/base-charts/bar-chart.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/data/country.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/charts/countries-chart.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/charts/page-visited-chart.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/tiles/empty-content.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/tiles/tile.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/tiles/tileGroup.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/data/usePagesByVisitsData.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/data/useDevicesData.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/data/useCountriesData.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/web-insights-toolbar.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/filter-config.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/pages/on-view.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/pages/loading-view.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/pages/index.js","../../../node_modules/@bingads-webui-campaign/insight-dashboard/src/components/data/useTagData.js","../../../node_modules/@bingads-webui-campaign/language-selector/src/viewmodel.js","../../../node_modules/@bingads-webui-campaign/language-selector/src/view.js","../../../node_modules/@bingads-webui-campaign/locations-grid/src/locations-repository.js","../../../node_modules/@bingads-webui-campaign/locations-grid/src/locations-grid-column-config.js","../../../node_modules/@bingads-webui-campaign/locations-grid/src/locations-grid-view.js","../../../node_modules/@bingads-webui-campaign/locations-grid/src/locations-factory.js","../../../node_modules/@bingads-webui-campaign/locations-grid/src/locations-grid-config.js","../../../node_modules/@bingads-webui-campaign/locations-grid/src/locations-grid-plugins.js","../../../node_modules/@bingads-webui-campaign/locations-grid/src/locations-editor/view/location-target-view.js","../../../node_modules/@bingads-webui-campaign/locations-grid/src/locations-editor/viewmodel/locations-editor.js","../../../node_modules/@bingads-webui-campaign/locations-grid/src/locations-editor/view/locations-editor.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-grid/index.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-grid/src/negative-keyword-list-grid.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-grid/src/columns/attributes/campaign.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-grid/src/columns/attributes/list-name.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-grid/src/columns/index.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-grid/src/grid-config.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-grid/src/plugins.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-grid/src/create-association/create-association-view.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-grid/src/factory.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-keywords-grid/index.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-keywords-grid/src/error-map.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-keywords-grid/src/negative-keywords-lists-keyword-grid.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-keywords-grid/src/inline-editable/save.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-keywords-grid/src/inline-editable/prompt.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-keywords-grid/src/inline-editable/inline-edit-schema.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-keywords-grid/src/columns/attributes/negative-keywords.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-keywords-grid/src/columns/attributes/match-type.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-keywords-grid/src/columns/index.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-keywords-grid/src/grid-config.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-keywords-grid/src/plugins.js","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-keywords-grid/src/factory.js","../../../node_modules/@bingads-webui-campaign/pgrid-js-data-raw-data/src/plugin.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/pinterest-import-option-step/pinterest-import-option-config.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/page/step-config.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/repository/pinterest-import-repository.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/repository/pinterest-import-repository-utils.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/repository/pinterest-login-repository.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/repository/permission-factory.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/pinterest-account-step/prefetch.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/pinterest-login-step/login-container.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/pinterest-login-step/index.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/pinterest-login-step/action-bar-config.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/pinterest-login-step/prefetch.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/pinterest-account-step/action-bar-config.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/pinterest-account-step/account-selector.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/pinterest-account-step/index.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/start-smart-import-step/action-bar-config.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/start-smart-import-step/smart-import-step-prefetch.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/helpers/create-schedule-runnow-job.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/start-smart-import-step/index.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/pinterest-import-option-step/action-bar-config.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/pinterest-import-option-step/import-options-step.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/start-import-advanced-step/action-bar-config.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/start-import-advanced-step/index.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/pinterest-import-summary-step/save-schedule-info.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/pinterest-import-summary-step/get-import-details-view.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/pinterest-import-summary-step/index.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/steps/import-status-step/index.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/page/step-factory.js","../../../node_modules/@bingads-webui-campaign/pinterest-import/src/page/index.js","../../../node_modules/@bingads-webui-campaign/inline-download-reports-grid/src/columns/actions-template.pug","../../../node_modules/@bingads-webui-campaign/inline-download-reports-grid/src/columns/state/header-template.pug","../../../node_modules/@bingads-webui-campaign/inline-download-reports-grid/src/columns/state/template.pug","../../../node_modules/@bingads-webui-campaign/language-selector/src/template.pug","../../../node_modules/@bingads-webui-campaign/locations-grid/src/locations-editor/template/locations-editor.pug","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-grid/src/columns/attributes/clickable-value.pug","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-grid/src/create-association/create-negative-keywords.pug","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-keywords-grid/src/columns/attributes/match-type.pug","../../../node_modules/@bingads-webui-campaign/negative-keywords-lists-keywords-grid/src/columns/attributes/negative-keyword.pug"],"sourcesContent":["import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport $ from 'jquery';\r\nimport { Callout } from '@bingads-webui-react/callout';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\n\r\nconst calculatePlacement = (target, calloutWidth) => {\r\n const { left } = target.getBoundingClientRect();\r\n\r\n if (left <= calloutWidth) {\r\n return 'right';\r\n }\r\n return 'left';\r\n};\r\nexport const GLOBAL_CALLOUT_CONTAINER = 'call-out-container';\r\n\r\nexport const dismissCallout = () =>\r\n ReactDOM.unmountComponentAtNode(document.getElementById(GLOBAL_CALLOUT_CONTAINER));\r\n\r\nexport const renderImportCallout = ({\r\n view,\r\n content,\r\n target,\r\n popoverId,\r\n title,\r\n i18n,\r\n calloutWidth,\r\n hasCloseButton = true,\r\n}) => {\r\n ReactDOM.render(\r\n }\r\n target={target}\r\n popoverId={popoverId}\r\n title={title}\r\n show\r\n closeButton={hasCloseButton}\r\n focusLockContent\r\n placement={calculatePlacement(target, calloutWidth)}\r\n className={{\r\n calloutCloseButton: 'import-callout-close-button',\r\n calloutCloseButtonIcon: 'import-callout-close-icon',\r\n calloutTargetContainer: 'import-callout-container',\r\n }}\r\n onClose={dismissCallout}\r\n container={$(target).parents('.status-row')[0]}\r\n closeButtonAriaLabel={i18n.getString('CampaignImport_ButtonFinish')}\r\n shouldStopPropagation={false}\r\n />, document.getElementById(GLOBAL_CALLOUT_CONTAINER));\r\n};\r\n","/* eslint-disable import/extensions */\r\nimport _ from 'underscore';\r\nimport {\r\n ImportUpdateEntityPreference,\r\n ImportUserPreferences,\r\n ImportAppendDestUrlPreference,\r\n ImportSearchAndReplaceDestUrlPreference,\r\n AppendPreferencesForTrackingTemplate,\r\n SearchAndReplacePreferencesForTrackingTemplate,\r\n ImportPrefixAndSuffixForStringProperty,\r\n ImportSearchAndReplaceForStringProperty,\r\n ImportAdjustmentForNumericProperty,\r\n} from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport { createDisabledUETSelectorClass, getFacebookImportOptionBlackList, getFacebookImportOptionFields, facebookImportOptionFieldHelpIds } from '@bingads-webui-campaign/import-components';\r\nimport {\r\n getSubFieldsBlackList as getAmazonImportOptionBlackList,\r\n getImportOptionFields as getAmazonImportOptionFields,\r\n importOptionFieldHelpIds as amazonImportOptionFieldHelpIds,\r\n} from '@bingads-webui-campaign/amazon-import';\r\nimport {\r\n getSubFieldsBlackList as getPinterestImportOptionBlackList,\r\n getImportOptionFields as getPinterestImportOptionFields,\r\n importOptionFieldHelpIds as pinterestImportOptionFieldHelpIds,\r\n} from '@bingads-webui-campaign/pinterest-import';\r\nimport { getSubFieldsBlackList as getFileImportOptionBlackList } from '@bingads-webui-campaign/file-import-page';\r\nimport { renderImportCallout } from './import-callout';\r\n\r\nexport const renderImportSettingsCallout = ({\r\n gridView,\r\n event,\r\n i18n,\r\n calloutWidth,\r\n optionsFormLoader,\r\n uetTagSelectorViewLoader,\r\n subFieldsBlacklist,\r\n config,\r\n isMultiAccountImport,\r\n}) => {\r\n event.stopPropagation();\r\n\r\n const columnData = gridView.getColumnData(event);\r\n let getImportOptionFields = null;\r\n let isPauseAdGroupIfNoLocationSupportedEnabled = false;\r\n let isAudienceTargetForFBImportOptionEnabled = false;\r\n let importOptionFieldHelpIds = {};\r\n\r\n if (columnData.Type === 'FileBasedImport') {\r\n const permissions = config && config.get('Permissions');\r\n const facebookOptionBlackList = getFileImportOptionBlackList(permissions, columnData.TaskItem.ImportFormat) || [];\r\n subFieldsBlacklist.push(...facebookOptionBlackList);\r\n } else if (columnData.Type === 'FacebookImport') {\r\n const permissions = config && config.get('Permissions');\r\n const facebookOptionBlackList = getFacebookImportOptionBlackList(permissions) || [];\r\n subFieldsBlacklist.push(...facebookOptionBlackList);\r\n getImportOptionFields = getFacebookImportOptionFields;\r\n isPauseAdGroupIfNoLocationSupportedEnabled = true;\r\n isAudienceTargetForFBImportOptionEnabled = true;\r\n importOptionFieldHelpIds = facebookImportOptionFieldHelpIds;\r\n } else if (columnData.Type === 'AmazonImport') {\r\n const permissions = config && config.get('Permissions');\r\n const amazonOptionBlackList = getAmazonImportOptionBlackList(permissions) || [];\r\n subFieldsBlacklist.push(...amazonOptionBlackList);\r\n getImportOptionFields = getAmazonImportOptionFields;\r\n importOptionFieldHelpIds = amazonImportOptionFieldHelpIds;\r\n } else if (columnData.Type === 'PinterestImport') {\r\n const permissions = config && config.get('Permissions');\r\n const pinterestOptionBlackList = getPinterestImportOptionBlackList(permissions) || [];\r\n subFieldsBlacklist.push(...pinterestOptionBlackList);\r\n getImportOptionFields = getPinterestImportOptionFields;\r\n isPauseAdGroupIfNoLocationSupportedEnabled = true;\r\n isAudienceTargetForFBImportOptionEnabled = true;\r\n importOptionFieldHelpIds = pinterestImportOptionFieldHelpIds;\r\n }\r\n\r\n optionsFormLoader().then(({ ImportOptionsForm }) => {\r\n uetTagSelectorViewLoader().then(({ UetTagSelectorView }) => {\r\n const options = JSON.parse(columnData.ImportUserPreference);\r\n\r\n const searchAndReplaceSchema = _.clone(ImportSearchAndReplaceForStringProperty);\r\n // overriding schema here because import options still uses\r\n // old preference and we need to rename the name so options generated can be unique.\r\n\r\n searchAndReplaceSchema.name = 'SearchAndReplaceForCustomParameters';\r\n const findAndReplaceSuffixSchema = _.clone(ImportSearchAndReplaceForStringProperty);\r\n findAndReplaceSuffixSchema.name = 'SearchAndReplaceForFinalURLSuffix';\r\n const importOptionsForm = new ImportOptionsForm({\r\n jsonFormatImportOptions: options,\r\n deps: {\r\n i18n,\r\n config,\r\n schema: {\r\n ImportUpdateEntityPreference,\r\n ImportUserPreferences,\r\n LandingPageAppendPreference: ImportAppendDestUrlPreference,\r\n LandingPageReplacePreference: ImportSearchAndReplaceDestUrlPreference,\r\n AppendTrackingTemplatePreference: AppendPreferencesForTrackingTemplate,\r\n SearchAndReplacePreferencesForTrackingTemplate,\r\n ImportPrefixAndSuffixForStringProperty,\r\n SearchAndReplaceForCustomParameters: searchAndReplaceSchema,\r\n SearchAndReplaceForFinalURLSuffix: findAndReplaceSuffixSchema,\r\n ImportSearchAndReplaceForStringProperty,\r\n ImportAdjustmentForNumericProperty,\r\n },\r\n subFieldsBlacklist,\r\n // identify if it is multi account log grid -> customer level's record\r\n isCustomerLevel: !!columnData.isCustomerLevel,\r\n // For URL options's tracking tamplate and url suffix\r\n // Hide when click multi account log grid -> customer level's log.\r\n // Show when click single account log grid\r\n // SHow WHen click multi account log grid -> account level's log.\r\n isHideUrlDetailView: isMultiAccountImport && !!columnData.isCustomerLevel,\r\n isMultiAccountImport,\r\n UetTagSelectorView: createDisabledUETSelectorClass(UetTagSelectorView),\r\n importOptionFieldHelpIds,\r\n },\r\n getImportOptionFields,\r\n isPauseAdGroupIfNoLocationSupportedEnabled,\r\n isAudienceTargetForFBImportOptionEnabled,\r\n isGoogleImport: gridView.importType === 'googleimport',\r\n }).render();\r\n\r\n _.each(importOptionsForm.$('input[type=\"checkbox\"], input[type=\"text\"], select.input'), (input) => {\r\n input.setAttribute('disabled', 'disabled');\r\n });\r\n\r\n importOptionsForm.$('#AdExtensionOptionsNoBmcMessage').hide();\r\n\r\n renderImportCallout({\r\n view: importOptionsForm,\r\n target: event.target,\r\n popoverId: 'import-settings-callout',\r\n title: i18n.getString('Import_ImportSettings_Header'),\r\n i18n,\r\n calloutWidth,\r\n });\r\n });\r\n });\r\n};\r\n","/* eslint-disable import/extensions */\r\n/* eslint-disable import/no-extraneous-dependencies */\r\n/* eslint-disable import/no-unresolved,import/no-webpack-loader-syntax */\r\n/* eslint-enable import/no-unresolved */\r\n// FIXME:\r\nimport instrumentation from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\n\r\nimport { renderImportCallout } from './import-callout';\r\n\r\nexport const renderImportSummaryCallout = ({\r\n gridView,\r\n event,\r\n i18n,\r\n calloutWidth,\r\n summaryTableLoader,\r\n}) => {\r\n event.stopPropagation();\r\n\r\n const logTrace = (action, message) => {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign', `Import_Error_Details ${action} ${message}`);\r\n };\r\n\r\n if (event.currentTarget && event.currentTarget.className === 'import-actions learn-more') {\r\n logTrace('click', 'Learn_More_Link');\r\n }\r\n\r\n const columnData = gridView.getColumnData(event);\r\n\r\n summaryTableLoader().then(({ getSummaryDetailsPopupViewPromise }) => {\r\n getSummaryDetailsPopupViewPromise({\r\n columnData,\r\n i18n,\r\n findImportTaskItem: gridView.findImportTaskItem,\r\n logTrace,\r\n }).then(view => renderImportCallout({\r\n view,\r\n target: event.target,\r\n popoverId: 'import-summary-callout',\r\n i18n,\r\n calloutWidth,\r\n }));\r\n });\r\n};\r\n\r\n","// IMPORT_TYPE is copied from private\\campaign-legacy\\packages\\scheduled-import\\view\\import-type.js for now to avoid circular reference\r\n// Will refactor the constants later to put it in a common repository\r\nexport const IMPORT_TYPE = {\r\n googleimport: 'googleimport',\r\n facebookimport: 'facebookimport',\r\n fileimport: 'fileimport',\r\n amazonImport: 'amazonImport',\r\n pinterestImport: 'pinterestImport',\r\n};\r\n\r\nexport const importRecommendationListNameMap = (columnData) => {\r\n if (columnData['@odata.type'] === '#Model.ImportTaskItem') {\r\n return 'GoogleImportTaskRecommendationList';\r\n } else if (columnData['@odata.type'] === '#Model.FacebookTaskItem') {\r\n return 'FacebookImportTaskRecommendationList';\r\n }\r\n return null;\r\n};\r\n\r\nexport const importChannelNameMap = (importRecommendationListName) => {\r\n let importChannel = '';\r\n\r\n switch (importRecommendationListName) {\r\n case 'GoogleImportTaskRecommendationList':\r\n importChannel = IMPORT_TYPE.googleimport;\r\n break;\r\n case 'FacebookImportTaskRecommendationList':\r\n importChannel = IMPORT_TYPE.facebookimport;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return importChannel;\r\n};\r\n\r\n// UI supported recommendation types\r\nexport const supportedRecommendationTypesList = () => {\r\n const supportedRecommendationTypes = {\r\n GoogleImportTaskRecommendationList: [\r\n 'SelectAdCustomizerFeedToImportExpandedTextAd',\r\n 'ProvideStoreToImportShoppingCampaign',\r\n 'EnableCurrencyConversion',\r\n 'EnableAutoFrequency',\r\n 'AdjustAdGroupBidPrice',\r\n 'GetGoogleAdsPermission',\r\n ],\r\n FacebookImportTaskRecommendationList: [\r\n 'AccessTokenExpiring',\r\n 'EnableAutoFrequency',\r\n ],\r\n };\r\n\r\n return supportedRecommendationTypes;\r\n};\r\n","/* eslint-disable max-len */\r\n/* eslint-disable import/extensions */\r\n/* eslint-disable import/no-extraneous-dependencies */\r\nimport React, { useState } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport PropTypes from 'prop-types';\r\nimport { extend } from 'underscore';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { submitEvent } from '@bingads-webui-universal/accessibility-helper';\r\n\r\n/* eslint-disable import/no-unresolved,import/no-webpack-loader-syntax */\r\nimport instrumentation from '@bingads-webui-static-legacy/instrumentation/index';\r\nimport constants from '@bingads-webui-static-legacy/instrumentation/constants';\r\n/* eslint-enable import/no-unresolved */\r\n\r\nimport { renderImportCallout, GLOBAL_CALLOUT_CONTAINER } from './import-callout';\r\nimport { importRecommendationListNameMap, importChannelNameMap, IMPORT_TYPE } from './import-recommendation-constants';\r\n\r\nconst dismissCallout = () => ReactDOM.unmountComponentAtNode(document.getElementById(GLOBAL_CALLOUT_CONTAINER));\r\nconst getCalloutConfig = ({\r\n i18n,\r\n shouldAdCustomizerRecommendationApplyDirectly,\r\n edm,\r\n jsData,\r\n logTrace,\r\n importChannel,\r\n}) => ({\r\n SelectAdCustomizerFeedToImportExpandedTextAd: {\r\n description: 'Import_Recommendation_AddAdCustomizer_Description',\r\n buttonText: shouldAdCustomizerRecommendationApplyDirectly ? 'Import_Recommendation_AddToSchedule_ButtonText' : 'Import_Recommendation_GoToSettings_ButtonText',\r\n click: ({\r\n columnData, gridView,\r\n }) => {\r\n dismissCallout();\r\n if (shouldAdCustomizerRecommendationApplyDirectly) {\r\n logTrace('apply', 'SelectAdCustomizerFeedToImportExpandedTextAd');\r\n gridView.applyAdCustomizerFeedRecommendation(columnData, i18n.getString('Import_Recommendation_AddAdCustomizer_Notification'), edm, jsData, 'SelectAdCustomizerFeedToImportExpandedTextAd');\r\n } else {\r\n logTrace('redirect', 'SelectAdCustomizerFeedToImportExpandedTextAd');\r\n gridView.goToGoogleImportWizard({\r\n model: columnData, importStep: 'importOptionStep',\r\n });\r\n }\r\n },\r\n },\r\n ProvideStoreToImportShoppingCampaign: {\r\n description: 'Import_Recommendation_AddMerchantCenter_Description',\r\n buttonText: 'Import_Recommendation_GoToSettings_ButtonText',\r\n click: ({\r\n columnData, gridView,\r\n }) => {\r\n dismissCallout();\r\n logTrace('redirect', 'ProvideStoreToImportShoppingCampaign');\r\n gridView.goToGoogleImportWizard({\r\n model: columnData, importStep: 'importOptionStep',\r\n });\r\n },\r\n },\r\n EnableCurrencyConversion: {\r\n description: 'Import_Recommendation_EnableCurrencyConversion_Description',\r\n buttonText: 'Import_Recommendation_EnableCurrencyConversion_ButtonText',\r\n click: ({\r\n columnData, gridView,\r\n }) => {\r\n dismissCallout();\r\n logTrace('apply', 'EnableCurrencyConversion');\r\n gridView.applyCurrencyConversionRecommendation(columnData, i18n.getString('Import_Recommendation_EnableCurrencyConversion_Notification'), edm, jsData, 'EnableCurrencyConversion');\r\n },\r\n },\r\n EnableAutoFrequency: {\r\n description: importChannel === IMPORT_TYPE.googleimport ? 'Import_Recommendation_EnableAutoFrequency_Description' : 'Import_Recommendation_EnableAutoFrequency_Facebook_Description',\r\n buttonText: 'Import_Recommendation_ScheduleImport_ButtonText',\r\n click: ({\r\n columnData, gridView,\r\n }) => {\r\n dismissCallout();\r\n logTrace('apply', 'EnableAutoFrequency');\r\n gridView.applyAutoFrequencyRecommendation(columnData, i18n.getString('Import_Recommendation_EnableAutoFrequency_Notification'), edm, jsData, 'EnableAutoFrequency');\r\n },\r\n },\r\n AdjustAdGroupBidPrice: {\r\n description: 'Import_Recommendation_AdjustAdGroupBidPrice_Description',\r\n buttonText: 'Import_Recommendation_AdjustAdGroupBidPrice_ButtonText',\r\n click: ({\r\n columnData, gridView,\r\n }) => {\r\n dismissCallout();\r\n logTrace('apply', 'AdjustAdGroupBidPrice');\r\n gridView.applySetMinBidValueAdjustRecommendation(columnData, i18n.getString('Import_Recommendation_AdjustAdGroupBidPrice_Notification'), edm, jsData, 'AdjustAdGroupBidPrice');\r\n },\r\n },\r\n GetGoogleAdsPermission: {\r\n description: 'Import_Recommendation_GetGoogleAdsPermission_Description',\r\n buttonText: 'Import_Recommendation_GetGoogleAdsPermission_ButtonText',\r\n click: ({\r\n columnData, gridView,\r\n }) => {\r\n dismissCallout();\r\n logTrace('relogin', 'GetGoogleAdsPermission');\r\n gridView.applyGetGoogleAdsPermissionRecommendation(columnData, i18n.getString('Import_Recommendation_GetGoogleAdsPermission_Notification'), edm, jsData, 'GetGoogleAdsPermission');\r\n },\r\n },\r\n AccessTokenExpiring: {\r\n description: 'Import_Recommendation_AccessTokenExpiring_Description',\r\n buttonText: 'Import_Recommendation_AccessTokenExpiring_ButtonText',\r\n click: ({\r\n columnData, gridView,\r\n }) => {\r\n dismissCallout();\r\n logTrace('relogin', 'AccessTokenExpiring');\r\n gridView.applyAccessTokenExpiringRecommendation(columnData, i18n.getString('Import_Recommendation_AccessTokenExpiring_Notification'), edm, jsData, 'AccessTokenExpiring');\r\n },\r\n },\r\n});\r\n\r\nconst RecommendationCallout = (props) => {\r\n const shouldAdCustomizerRecommendationApplyDirectly =\r\n props.columnData.ImportUserPreference.ImportNewEntities && props.columnData.ImportUserPreference.ImportUpdatedEntities;\r\n const calloutConfig = getCalloutConfig({\r\n shouldAdCustomizerRecommendationApplyDirectly,\r\n i18n: props.i18n,\r\n edm: props.edm,\r\n jsData: props.jsData,\r\n logTrace: props.logTrace,\r\n importChannel: props.importChannel,\r\n });\r\n const recommendationArr = props.columnData[props.importRecommendationListName];\r\n const [popupTypeIndex, setPopupTypeIndex] = useState(0);\r\n\r\n props.logTrace('view', `${recommendationArr[popupTypeIndex]}`);\r\n\r\n return (\r\n
\r\n
\r\n \r\n {props.i18n.getString(calloutConfig[recommendationArr[popupTypeIndex]].description)}\r\n
\r\n
\r\n calloutConfig[recommendationArr[popupTypeIndex]].click(props)}\r\n onKeyDown={e =>\r\n submitEvent(() => calloutConfig[recommendationArr[popupTypeIndex]].click(props))(e, extend({ isKeyboardEvent: true }))}\r\n className=\"btn btn-default add-to-options\"\r\n disabled={props.isReadOnly && recommendationArr[popupTypeIndex] === 'SelectAdCustomizerFeedToImportExpandedTextAd'}\r\n >\r\n {props.i18n.getString(calloutConfig[recommendationArr[popupTypeIndex]].buttonText)}\r\n \r\n
\r\n {popupTypeIndex > 0 && ( {\r\n setPopupTypeIndex(popupTypeIndex - 1);\r\n }}\r\n />)}\r\n {popupTypeIndex < recommendationArr.length - 1 && ( {\r\n setPopupTypeIndex(popupTypeIndex + 1);\r\n }}\r\n />)}\r\n
\r\n
\r\n
);\r\n};\r\n\r\nRecommendationCallout.propTypes = {\r\n columnData: PropTypes.shape({\r\n GoogleImportTaskRecommendationList: PropTypes.array.isRequired,\r\n ImportUserPreference: PropTypes.shape({\r\n ImportNewEntities: PropTypes.bool,\r\n ImportUpdatedEntities: PropTypes.bool,\r\n }).isRequired,\r\n Id: PropTypes.number.isRequired,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n isReadOnly: PropTypes.bool.isRequired,\r\n jsData: PropTypes.shape({\r\n TaskItem: PropTypes.object,\r\n }).isRequired,\r\n edm: PropTypes.shape({\r\n currentAccount: PropTypes.any,\r\n currentCustomer: PropTypes.any,\r\n }).isRequired,\r\n logTrace: PropTypes.func.isRequired,\r\n importRecommendationListName: PropTypes.string.isRequired,\r\n importChannel: PropTypes.string.isRequired,\r\n};\r\n\r\nconst RecommendationCalloutMemo = React.memo(RecommendationCallout);\r\nexport const renderImportRecommondationCallout = ({\r\n gridView,\r\n event,\r\n i18n,\r\n calloutWidth,\r\n scope,\r\n isReadOnly,\r\n edm,\r\n jsData,\r\n}) => {\r\n event.stopPropagation();\r\n const columnData = gridView.getColumnData(event);\r\n const importRecommendationListName = importRecommendationListNameMap(columnData);\r\n const importChannel = importChannelNameMap(importRecommendationListName);\r\n const logTrace = (action, type) => {\r\n instrumentation.logMessage([constants.LOGCATEGORY.TRACE], constants.LOGLEVEL.INFO, '/campaign/importcampaign', `Import_Recommendation ${columnData.Id} ${action} ${type} ${importChannel}`);\r\n };\r\n\r\n logTrace('render', columnData[importRecommendationListName]);\r\n\r\n renderImportCallout({\r\n content: (\r\n \r\n ),\r\n target: event.target,\r\n popoverId: 'import-recommendation-callout',\r\n i18n,\r\n calloutWidth,\r\n hasCloseButton: false,\r\n });\r\n};\r\n","import _ from 'underscore';\r\nimport { CronFormatter } from '@bingads-webui/cron-formatter';\r\n\r\nexport class InlineDownloadCronI18n {\r\n constructor({ i18n }) {\r\n this.cronFormatter = new CronFormatter({ i18n });\r\n this.i18n = i18n;\r\n }\r\n\r\n formatCron(cron) {\r\n if (_.isEmpty(cron)) {\r\n return this.i18n.getString('InlineDownloadReports_EmailAndScheduling_Frequency_None');\r\n }\r\n\r\n return this.cronFormatter.formatCronString(cron);\r\n }\r\n}\r\n","import classnames from 'classnames';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport class DurableDropdown extends React.Component {\r\n constructor() {\r\n super();\r\n\r\n this.state = {\r\n expanded: false,\r\n };\r\n }\r\n\r\n render() {\r\n const {\r\n button,\r\n children,\r\n containerClass,\r\n } = this.props;\r\n const {\r\n expanded,\r\n } = this.state;\r\n\r\n return (\r\n
\r\n this.setState({ expanded: !expanded })}\r\n >\r\n {button}\r\n \r\n \r\n \r\n {children}\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nDurableDropdown.propTypes = {\r\n button: PropTypes.oneOfType([\r\n PropTypes.element,\r\n PropTypes.string,\r\n ]).isRequired,\r\n children: PropTypes.oneOfType([\r\n PropTypes.element,\r\n PropTypes.string,\r\n ]).isRequired,\r\n caretClass: PropTypes.string,\r\n containerClass: PropTypes.string,\r\n};\r\n\r\nDurableDropdown.defaultProps = {\r\n caretClass: 'caret',\r\n containerClass: '',\r\n};\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport classnames from 'classnames';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { submitEvent } from '@bingads-webui-universal/accessibility-helper';\r\n\r\nexport default class CheckableList extends React.Component {\r\n static propTypes = {\r\n items: PropTypes.arrayOf(PropTypes.any).isRequired,\r\n getItemId: PropTypes.func,\r\n onSelect: PropTypes.func.isRequired,\r\n renderItem: PropTypes.func,\r\n selected: PropTypes.any, // eslint-disable-line\r\n };\r\n\r\n static defaultProps = {\r\n getItemId: (item, index) => String(index),\r\n renderItem: () => null,\r\n selected: null,\r\n };\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n const { selected = prevState.selected } = nextProps;\r\n\r\n return {\r\n selected,\r\n };\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n onSelect = (item) => {\r\n this.setState({\r\n selected: item,\r\n }, () => this.props.onSelect(item));\r\n }\r\n\r\n render() {\r\n const {\r\n items,\r\n getItemId,\r\n renderItem,\r\n } = this.props;\r\n\r\n const { selected } = this.state;\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { KendoStringDatePicker } from '@bingads-webui-react/kendo-date-picker';\r\nimport CheckableList from './checkable-list';\r\n\r\nexport default function DateRangeList({\r\n data,\r\n onChange,\r\n presets,\r\n presetType,\r\n format,\r\n i18n,\r\n}) {\r\n const {\r\n [presetType]: DateRangePreset,\r\n StartDate,\r\n EndDate,\r\n } = data;\r\n\r\n const dateMethodOptions = {\r\n raw: 'yyyy-MM-dd',\r\n };\r\n\r\n const formattedToday = i18n.formatDate(new Date(), dateMethodOptions);\r\n\r\n return (\r\n
\r\n preset || 'Custom'}\r\n items={presets}\r\n selected={DateRangePreset}\r\n onSelect={(item) => {\r\n if (item === null) {\r\n onChange({\r\n [presetType]: null,\r\n StartDate: StartDate || formattedToday,\r\n EndDate: EndDate || formattedToday,\r\n });\r\n } else {\r\n onChange({\r\n [presetType]: item,\r\n StartDate: null,\r\n EndDate: null,\r\n });\r\n }\r\n }}\r\n renderItem={(item) => {\r\n if (item === null) {\r\n const max = i18n.formatDate(new Date(), dateMethodOptions);\r\n const usedStartDate = StartDate ? StartDate.substr(0, 10) : StartDate;\r\n const usedEndDate = EndDate ? EndDate.substr(0, 10) : EndDate;\r\n\r\n return (\r\n \r\n {format.formatPreset(null)}\r\n {\r\n DateRangePreset === null ?\r\n \r\n onChange({\r\n [presetType]: null,\r\n StartDate: changed,\r\n EndDate,\r\n })}\r\n dateMethodOptions={dateMethodOptions}\r\n />\r\n -\r\n onChange({\r\n [presetType]: null,\r\n StartDate,\r\n EndDate: changed,\r\n })}\r\n dateMethodOptions={dateMethodOptions}\r\n />\r\n :\r\n null\r\n }\r\n \r\n );\r\n }\r\n\r\n return format.formatPreset(item);\r\n }}\r\n />\r\n
\r\n );\r\n}\r\n\r\nDateRangeList.propTypes = {\r\n data: PropTypes.shape({\r\n StartDate: PropTypes.string,\r\n EndDate: PropTypes.string,\r\n DateRangePreset: PropTypes.string,\r\n }).isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n presets: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n presetType: PropTypes.oneOf(['DateRangePreset', 'ComparisonDateRangeOption']),\r\n format: PropTypes.shape({\r\n format: PropTypes.func,\r\n formatPreset: PropTypes.func,\r\n }).isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nDateRangeList.defaultProps = {\r\n presetType: 'DateRangePreset',\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { DateRangeFormat } from '@bingads-webui-campaign/date-range-utilities';\r\nimport DateRangeList from './date-range-list';\r\n\r\nexport default function DateRangeEditor({\r\n i18n,\r\n data,\r\n onChange,\r\n}) {\r\n const dateRangeFormat = new DateRangeFormat({ i18n });\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nDateRangeEditor.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n data: PropTypes.shape({\r\n StartDate: PropTypes.string,\r\n EndDate: PropTypes.string,\r\n DateRangePreset: PropTypes.string,\r\n }).isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ComparisonDateRangeFormat } from '@bingads-webui-campaign/date-range-utilities';\r\nimport DateRangeList from './date-range-list';\r\n\r\nexport default function ComparisonDateRangeEditor({\r\n i18n,\r\n data,\r\n onChange,\r\n noneStringKey,\r\n}) {\r\n const comparisonDateRangeFormat = new ComparisonDateRangeFormat({ i18n, noneStringKey });\r\n return (\r\n
\r\n {\r\n if (model.ComparisonDateRangeOption === 'None') {\r\n onChange(null);\r\n } else {\r\n onChange(model);\r\n }\r\n }}\r\n data={data || { ComparisonDateRangeOption: 'None' }}\r\n />\r\n
\r\n );\r\n}\r\n\r\nComparisonDateRangeEditor.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n data: PropTypes.shape({\r\n StartDate: PropTypes.string,\r\n EndDate: PropTypes.string,\r\n DateRangePreset: PropTypes.string,\r\n }).isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n noneStringKey: PropTypes.string,\r\n};\r\n\r\nComparisonDateRangeEditor.defaultProps = {\r\n noneStringKey: 'None',\r\n};\r\n","import { withUiBlock } from '@bingads-webui/uiblocker';\r\n\r\nexport default function save({\r\n TaskItem,\r\n view,\r\n}) {\r\n return view.updateReportEmailRule(TaskItem)\r\n .finally(withUiBlock(view.gridView.$el))\r\n .then(() => {\r\n // gridView.trigger('didEdit', update);\r\n view.gridView.refresh(true);\r\n });\r\n}\r\n","import Backbone from 'backbone';\r\nimport classnames from 'classnames';\r\nimport $ from 'jquery';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport _ from 'underscore';\r\nimport { GridCustomizedPopupEditor } from '@bingads-webui-campaign/grid-customized-popup-editor';\r\nimport { get, set, merge } from '@bingads-webui-universal/primitive-utilities';\r\nimport save from './save';\r\n\r\nfunction asInlineEditor({\r\n className = 'form',\r\n Editor,\r\n i18n,\r\n}) {\r\n return class InlineEditor extends React.Component {\r\n static propTypes = {\r\n model: PropTypes.any.isRequired, // eslint-disable-line\r\n onSave: PropTypes.func.isRequired,\r\n onCancel: PropTypes.func.isRequired,\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n model: props.model,\r\n };\r\n }\r\n\r\n onChange = (model) => {\r\n this.setState({ model });\r\n }\r\n\r\n onSave = () => {\r\n this.props.onSave(this.state.model);\r\n }\r\n\r\n onCancel = () => {\r\n this.props.onCancel(this.state.model);\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n {i18n.getString('Save')}\r\n \r\n \r\n {i18n.getString('Cancel')}\r\n \r\n
\r\n );\r\n }\r\n };\r\n}\r\n\r\nexport function asBackboneInlineEditor({\r\n className,\r\n Editor,\r\n i18n,\r\n}) {\r\n const InlineEditor = asInlineEditor({\r\n className,\r\n Editor,\r\n i18n,\r\n });\r\n\r\n return class BackboneInlineEditor extends Backbone.View {\r\n initialize({ model }) {\r\n this.model = model;\r\n }\r\n\r\n render() {\r\n ReactDOM.render(\r\n (\r\n this.trigger('save', model)}\r\n onCancel={() => this.trigger('close')}\r\n />\r\n ),\r\n this.el\r\n );\r\n\r\n return this;\r\n }\r\n };\r\n}\r\n\r\nexport default function reactPrompt({\r\n position,\r\n parentContainerSelector,\r\n triggerScrollbarRepositionOnElementHeightChange = _.noop,\r\n\r\n className,\r\n Editor,\r\n i18n,\r\n\r\n item,\r\n property,\r\n\r\n view,\r\n}) {\r\n const BackboneInlineEditor = asBackboneInlineEditor({\r\n className,\r\n Editor,\r\n i18n,\r\n });\r\n\r\n const editor = new BackboneInlineEditor({\r\n model: _.isString(property) ? get(item, property) : _.pick(item, ...property),\r\n });\r\n\r\n editor.on('save', (model) => {\r\n const update = merge({}, item, _.isString(property) ? set({}, property, model) : model);\r\n\r\n save({\r\n TaskItem: update,\r\n view,\r\n })\r\n .then(() => editor.trigger('close', update))\r\n .catch((error) => {\r\n alert(error.message);\r\n });\r\n });\r\n\r\n const editorView = new GridCustomizedPopupEditor({\r\n editorView: editor.render(),\r\n cellPosition: position,\r\n parentContainerSelector,\r\n renderBelow: false,\r\n });\r\n\r\n editorView.clickToDismiss = (event) => {\r\n // Decide whether it is inside the popup editor\r\n const $target = $(event.target);\r\n if (\r\n // inside popup, or date picker\r\n $target.closest('.grid-popupeditor, .k-calendar-container').length === 0 &&\r\n // when selecting a date, .k-calendar-container doesn't exist anymore, use the selector\r\n !$target.is('a.k-link')\r\n ) {\r\n editorView.trigger('close');\r\n editorView.remove();\r\n }\r\n };\r\n\r\n editorView.render();\r\n\r\n triggerScrollbarRepositionOnElementHeightChange(editorView.el);\r\n\r\n return editorView;\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function couldUnsubscribe({\r\n NotificationDeliveryOption,\r\n currentUserId,\r\n}) {\r\n if (!NotificationDeliveryOption) return false;\r\n\r\n const {\r\n EmailOption,\r\n CustomUserIds,\r\n } = NotificationDeliveryOption;\r\n\r\n switch (EmailOption) {\r\n case 'Custom':\r\n return _.contains(CustomUserIds, currentUserId);\r\n case 'OnlyCurrentUser':\r\n case 'CustomerUsers':\r\n case 'AllAccountUsers':\r\n return true;\r\n default:\r\n throw new Error(`Unrecongnized EmailOption ${EmailOption}`);\r\n }\r\n}\r\n\r\nexport function hasEditPermission(config) {\r\n return !config.get('CurrentAccountInActive') && !config.get('permissions').IsReadOnlyUser;\r\n}\r\n\r\nexport function getCurrentUserId(config) {\r\n return config.get('CurrentUser').Id;\r\n}\r\n","/* eslint-disable jsx-a11y/label-has-for */\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport _ from 'underscore';\r\n\r\nexport default function FormGroup(props) {\r\n const {\r\n children,\r\n label,\r\n labelId,\r\n } = props;\r\n\r\n const id = props.id || _.uniqueId('form-group-');\r\n\r\n return (\r\n
\r\n \r\n {label}\r\n \r\n
\r\n {children}\r\n
\r\n
\r\n );\r\n}\r\n\r\nFormGroup.propTypes = {\r\n children: PropTypes.element.isRequired,\r\n id: PropTypes.string,\r\n label: PropTypes.string.isRequired,\r\n labelId: PropTypes.string,\r\n};\r\n\r\nFormGroup.defaultProps = {\r\n id: null,\r\n labelId: undefined,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { InlineDownloadEmailFrequencyEditor } from '@bingads-webui-campaign/inline-download-email-frequency-editor';\r\nimport { InlineDownloadCronI18n } from '@bingads-webui-campaign/inline-download-cron-i18n';\r\nimport { SchemaI18n } from '@bingads-webui-universal/schema-i18n';\r\nimport reactPrompt from '../../inline-edit/react-prompt';\r\nimport { getCurrentUserId } from '../../util';\r\nimport FormGroup from './form-group';\r\n\r\nexport default class EmailFrequencyColumn extends CampaignuiBaseColumn {\r\n constructor(options) {\r\n const {\r\n allUsersType,\r\n config,\r\n view,\r\n loadUsers,\r\n } = options;\r\n const i18n = options.legacyI18n || options.i18n;\r\n const cronI18n = new InlineDownloadCronI18n({ i18n });\r\n\r\n super({\r\n name: 'EmailFrequency',\r\n property: ['NotificationDeliveryOption', 'Cron', 'StartTime', 'EndTime'],\r\n title: i18n.getString('InlineDownloadReports_Column_EmailFrequency'),\r\n });\r\n\r\n this.i18n = i18n;\r\n this.cronI18n = cronI18n;\r\n this.view = view;\r\n\r\n const Editor = props => (\r\n \r\n );\r\n\r\n Editor.propTypes = {\r\n model: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n };\r\n\r\n this.Editor = Editor;\r\n }\r\n\r\n pickProperty({\r\n NotificationDeliveryOption,\r\n Cron,\r\n StartTime,\r\n EndTime,\r\n }) {\r\n return {\r\n NotificationDeliveryOption,\r\n Cron,\r\n StartTime,\r\n EndTime,\r\n };\r\n }\r\n\r\n onPrompt({ item, position }) {\r\n return reactPrompt({\r\n item,\r\n property: ['NotificationDeliveryOption', 'Cron', 'StartTime', 'EndTime'],\r\n\r\n Editor: this.Editor,\r\n\r\n i18n: this.i18n,\r\n view: this.view,\r\n position,\r\n });\r\n }\r\n\r\n template({ value: { Cron } }) {\r\n return this.cronI18n.formatCron(Cron);\r\n }\r\n}\r\n","import Promise from 'bluebird';\r\nimport _ from 'underscore';\r\nimport { couldUnsubscribe } from '../util';\r\nimport save from './save';\r\n\r\nfunction removeCurrentUserFromList({\r\n currentUserId,\r\n list,\r\n}) {\r\n const CustomUserIds = _.without(list, currentUserId);\r\n\r\n return _.isEmpty(CustomUserIds) ? null : {\r\n '@odata.type': '#Model.EmailNotificationDeliveryOption',\r\n EmailOption: 'Custom',\r\n CustomUserIds,\r\n };\r\n}\r\n\r\nfunction removeCurrentUser({\r\n NotificationDeliveryOption,\r\n currentUserId,\r\n i18n,\r\n Name,\r\n loadUsers,\r\n}) {\r\n if (!couldUnsubscribe({\r\n NotificationDeliveryOption,\r\n currentUserId,\r\n })) {\r\n return Promise.reject(new Error(i18n.getString('InlineDownloadReports_Action_UnsubscribeMe_Failed_NotSubscribed', {\r\n report: Name,\r\n })));\r\n }\r\n\r\n const {\r\n EmailOption,\r\n } = NotificationDeliveryOption;\r\n\r\n if (EmailOption === 'OnlyCurrentUser') {\r\n return Promise.resolve(null);\r\n }\r\n\r\n if (EmailOption === 'AllAccountUsers' || EmailOption === 'CustomerUsers') {\r\n return loadUsers().then(users => removeCurrentUserFromList({\r\n currentUserId,\r\n list: _.map(users, ({ Id }) => Id),\r\n })).catch(() => {\r\n throw new Error(i18n.getString('InlineDownloadReports_EmailAndScheduling_FailedToLoadUsers'));\r\n });\r\n }\r\n\r\n if (EmailOption === 'Custom') {\r\n const {\r\n CustomUserIds,\r\n } = NotificationDeliveryOption;\r\n\r\n return Promise.resolve(removeCurrentUserFromList({\r\n currentUserId,\r\n list: CustomUserIds,\r\n }));\r\n }\r\n\r\n throw new Error(`Unrecongnized EmailOption ${EmailOption}`);\r\n}\r\n\r\nlet alertId;\r\n\r\nexport default function unsubscribe({\r\n TaskItem,\r\n currentUserId,\r\n i18n,\r\n view,\r\n loadUsers,\r\n}) {\r\n const { NotificationDeliveryOption } = TaskItem;\r\n\r\n return removeCurrentUser({\r\n NotificationDeliveryOption,\r\n currentUserId,\r\n i18n,\r\n Name: TaskItem.Name,\r\n loadUsers,\r\n }).then(newNotificationDeliveryOption => save({\r\n TaskItem: _.defaults({\r\n NotificationDeliveryOption: newNotificationDeliveryOption,\r\n }, TaskItem),\r\n view,\r\n })).then(() => {\r\n window.App.views.alertCenter.toastConfirmation(i18n.getString('InlineDownloadReports_Action_UnsubscribeMe_Succeeded', {\r\n report: TaskItem.Name,\r\n }));\r\n }).catch(() => {\r\n alertId = window.App.views.alertCenter.showError(i18n.getString('InlineDownloadReports_Action_UnsubscribeMe_Failed', {\r\n report: TaskItem.Name,\r\n }), alertId);\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport * as PopupEditor from '@bingads-webui/popup-editor';\r\nimport save from './save';\r\n\r\nexport default function builtInPrompt({\r\n position, parentContainerSelector, item, view, i18n, fields, schema,\r\n}) {\r\n PopupEditor.prompt({\r\n position,\r\n parentContainerSelector,\r\n i18n,\r\n schema,\r\n model: item,\r\n fields,\r\n hasLabels: false,\r\n template: 'inline',\r\n saveModel: (TaskItem, editorView) =>\r\n save({\r\n TaskItem,\r\n view,\r\n })\r\n .then(() => editorView.trigger('save'))\r\n .catch((error) => {\r\n editorView.editorForm.setErrors(_.groupBy(error, 'property'));\r\n }),\r\n });\r\n}\r\n","import { helpers } from '@bingads-webui/projection-grid-toolbar';\r\nimport { getColumnsConfig } from './columns';\r\nimport { getPluginsConfig } from './plugin-config';\r\n// import mockEntity from '../test/mock/jsdata-entity';\r\n\r\nconst { toolbarRow } = helpers;\r\n\r\nconst taskType = {\r\n Customer: 'Email',\r\n Account: 'ReportAccountEmail',\r\n};\r\n\r\nexport function getConfig({\r\n allUsersType,\r\n i18n,\r\n config,\r\n entitySet,\r\n jsdata,\r\n s$ReportEmailRule,\r\n view,\r\n loadUsers,\r\n\r\n stateManager,\r\n preferenceService,\r\n}) {\r\n return {\r\n name: 'InlineDownloadReportsGrid',\r\n tableClasses: ['table', 'table-bordered', 'inline-download-reports-grid'],\r\n dataSource: {\r\n type: 'js-data',\r\n entity: jsdata.TaskItem,\r\n // entity: mockEntity,\r\n query: {\r\n // MT limitation, we need different type for customer & account level entities\r\n $filter: `State ne Enum.TaskItemState'Deleted' and Type eq Enum.TaskItemType'${taskType[allUsersType]}'`,\r\n },\r\n cacheResponse: false,\r\n options: {\r\n entitySet,\r\n headers: {\r\n 'x-ms-refreshcampaigncache': true,\r\n },\r\n },\r\n },\r\n rows: {\r\n headRows: [\r\n toolbarRow('toolbar'),\r\n 'column-header-rows',\r\n ],\r\n },\r\n selection: {\r\n bodyClasses: ['text-center'],\r\n headClasses: ['text-center'],\r\n },\r\n columns: getColumnsConfig({\r\n allUsersType,\r\n config,\r\n i18n,\r\n s$ReportEmailRule,\r\n view,\r\n loadUsers,\r\n }),\r\n plugins: getPluginsConfig({\r\n i18n,\r\n config,\r\n view,\r\n }),\r\n stateManager,\r\n preferenceService,\r\n config,\r\n };\r\n}\r\n","export const getStyles = (_, { palette = {} } = {}) => ({\r\n InsightDashboardOff: {\r\n height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n\r\n '& .off-view-items-container': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n gap: '15px',\r\n maxWidth: '500px',\r\n maxHeight: '500px',\r\n },\r\n\r\n '& .off-view-item': {\r\n maxWidth: '500px',\r\n textAlign: 'center',\r\n },\r\n },\r\n\r\n InsightDashboardOn: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n paddingLeft: '100px',\r\n paddingRight: '80px',\r\n\r\n '& .dashboard-item': {\r\n paddingTop: '5px',\r\n paddingBottom: '5px',\r\n },\r\n\r\n '& .insight-dashboard-page__header': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n height: '50px',\r\n fontSize: '20px',\r\n fontfontWeight: '600',\r\n },\r\n\r\n '& .insight-dashboard-page__filter': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n minHeight: '50px',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n '& .container-fluid': {\r\n paddingLeft: '0px',\r\n },\r\n },\r\n\r\n '& .insight-dashboard-page__content': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: 'fit-content',\r\n },\r\n\r\n '& .insight-dashboard-page__footer': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n height: '50px',\r\n fontSize: '14px',\r\n fontfontWeight: '400',\r\n },\r\n },\r\n\r\n MetricGroup: {\r\n color: palette.neutralPrimary,\r\n background: palette.white,\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(3, 1fr)',\r\n width: '100%',\r\n height: 'fit-content',\r\n minHeight: 140,\r\n boxShadow: '0px 0.3px 0.9px rgba(0, 0, 0, 0.108), 0px 1.6px 3.6px rgba(0, 0, 0, 0.132)',\r\n border: 'solid 1px lightgray',\r\n borderRadius: '2px',\r\n\r\n '& .metric-group__metric': {\r\n paddingTop: '5px',\r\n paddingBottom: '5px',\r\n paddingLeft: '20px',\r\n paddingRight: '20px',\r\n display: 'grid',\r\n gridTemplateRows: '2fr 3fr 2fr',\r\n alignItems: 'center',\r\n\r\n '& .metric-item': {\r\n display: 'flex',\r\n flexDirection: 'row-reverse',\r\n },\r\n\r\n '& .metric__header': {\r\n display: 'grid',\r\n gridTemplateColumns: '1fr 25px',\r\n width: '-webkit-fill-available',\r\n borderBottom: '2px solid',\r\n\r\n '& .metric__title': {\r\n display: 'flex',\r\n flexDirection: 'row-reverse',\r\n\r\n fontWeight: '600',\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n },\r\n\r\n },\r\n\r\n '& .metric__value': {\r\n fontWeight: '700',\r\n fontSize: '36px',\r\n lineHeight: '36px',\r\n },\r\n\r\n '& .metric__unit': {\r\n fontWeight: '400',\r\n fontSize: '16px',\r\n lineHeight: '36px',\r\n },\r\n },\r\n\r\n },\r\n\r\n TileGroup: {\r\n paddingTop: '15px',\r\n display: 'grid',\r\n gridTemplateColumns: 'repeat(2, 1fr)',\r\n gridGap: '2vw',\r\n width: '100%',\r\n\r\n '& .tile-group-column': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n gap: '2vw',\r\n },\r\n },\r\n\r\n DashboardTile: {\r\n boxShadow: '3px 3px 10px 2px #0000001A',\r\n display: 'grid',\r\n gridTemplateRows: '50px 1fr 70px',\r\n minHeight: '300px',\r\n alignItems: 'center',\r\n\r\n '& .tile-item:first-child': {\r\n display: 'flex',\r\n height: '-webkit-fill-available',\r\n alignItems: 'center',\r\n paddingLeft: '20px',\r\n paddingRight: '20px',\r\n boxShadow: '0px 1px 0px 0px #0000001A',\r\n },\r\n\r\n '& .tile__header': {\r\n fontFamily: 'Segoe UI',\r\n fontStyle: 'normal',\r\n fontWeight: 600,\r\n fontSize: 16,\r\n lineHeight: 24,\r\n },\r\n '& .tile__actionBar': {\r\n display: 'flex',\r\n height: '-webkit-fill-available',\r\n alignItems: 'center',\r\n paddingLeft: '20px',\r\n paddingRight: '20px',\r\n },\r\n\r\n '& .tile__content': {\r\n display: 'flex',\r\n height: '-webkit-fill-available',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n '& .chart-container': {\r\n width: '50%',\r\n paddingTop: '5px',\r\n },\r\n },\r\n\r\n});\r\n","export const triggerSummaryBarEvent = (tagIds) => {\r\n const event = new CustomEvent('turnOnInsightSummaryBar', { detail: { tagIds } });\r\n document.dispatchEvent(event);\r\n};\r\n\r\nexport const triggerDashboardEvent = (tagId, isToggleOn) => {\r\n const event = new CustomEvent('toggleWebInsight', { detail: { tagId, isToggleOn } });\r\n document.dispatchEvent(event);\r\n};\r\n","import React, { useMemo, useContext } from 'react';\r\nimport { useBoolean } from '@fluentui/react-hooks';\r\nimport classnames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { InstrumentationContext } from '@bingads-webui-react/hoc-with-instrumentation';\r\n\r\nimport { PrimaryButton, DefaultButton, Modal, getTheme, mergeStyleSets } from '@fluentui/react';\r\nimport InsightOffGraph from '../styles/svg/insight-off.svg';\r\n\r\nimport { getStyles } from '../styles';\r\nimport { triggerDashboardEvent, triggerSummaryBarEvent } from '../util';\r\n\r\nconst InsightDashboardOff = ({\r\n i18n, turnOnInsight, edm, scope,\r\n}) => {\r\n const classes = useDefaultStyles(getStyles);\r\n const [isModalOpen, { setTrue: showModal, setFalse: hideModal }] = useBoolean(false);\r\n const instrumentation = useContext(InstrumentationContext);\r\n const { activity } = useMemo(() => instrumentation.createScenarioAndActivity({\r\n scenarioName: 'InsightDashboard',\r\n activityName: 'InsightDashboardActivity',\r\n }), [instrumentation]);\r\n\r\n const theme = getTheme();\r\n const contentStyles = mergeStyleSets({\r\n container: {\r\n width: '40%',\r\n flexFlow: 'column nowrap',\r\n alignItems: 'stretch',\r\n },\r\n header: [\r\n theme.fonts.xLarge,\r\n {\r\n flex: '1 1 auto',\r\n borderTop: `4px solid ${theme.palette.themePrimary}`,\r\n color: theme.palette.neutralPrimary,\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: '12px 12px 14px 24px',\r\n },\r\n ],\r\n body: {\r\n flex: '4 4 auto',\r\n padding: '0 24px 24px 24px',\r\n overflowY: 'hidden',\r\n },\r\n footer: {\r\n display: 'flex',\r\n padding: '0 24px 24px 24px',\r\n ' & button': {\r\n marginRight: '8px',\r\n },\r\n },\r\n });\r\n\r\n const onButtonClick = () => {\r\n turnOnInsight();\r\n };\r\n\r\n const pageText = useMemo(() => ({\r\n title: i18n.getString(_TL_('Enable UET insights in one click')),\r\n description: i18n.getString(_TL_('Enable UET insights to learn more about how customers engage with your website and gain understanding about your website traffic.')),\r\n buttonText: i18n.getString(_TL_('Enable UET Insights for this tag')),\r\n enableAllTagsbuttonText: i18n.getString(_TL_('Enable UET Insights for all UET tags under this Manager Account')),\r\n modalHeader: i18n.getString(_TL_('Update all your UET tags?')),\r\n modalText: i18n.getString(_TL_('Enable UET Insights for all tags under this Manager Account. You can change this at any time in the All Tags page.')),\r\n }), [i18n]);\r\n\r\n const enableAllTags = () => {\r\n const tagsPromise = edm\r\n .Tags\r\n .get({ top: 200, select: ['Id', 'IsWebInsightsEnabled'] }).toPromise();\r\n tagsPromise.then((tagResponse) => {\r\n if (tagResponse && tagResponse.value) {\r\n if (tagResponse.value.length > 0) {\r\n const tags = tagResponse.value;\r\n const payload = tags.reduce((acc, tag) => {\r\n if (!tag.IsWebInsightsEnabled) {\r\n acc.push({ Id: tag.Id, IsWebInsightsEnabled: true });\r\n }\r\n return acc;\r\n }, []);\r\n if (payload.length === 0) {\r\n return;\r\n }\r\n\r\n edm\r\n .Tags['Default.UpdateTagsWebInsightsSetting']\r\n .$makeCall({ payload: { Tags: payload } })\r\n .toPromise()\r\n .then((response) => {\r\n const hasError = response.value.map(a => a.Errors).filter(a => a && a.length > 0).length > 0;\r\n if (hasError) {\r\n activity.error(`Failed to update tags: ${JSON.stringify(response.value)}`);\r\n return;\r\n }\r\n triggerSummaryBarEvent(tags.map(tag => tag.Id));\r\n triggerDashboardEvent(scope.values.tagId, true);\r\n })\r\n .catch((error) => {\r\n activity.error(error);\r\n });\r\n }\r\n }\r\n }).catch((error) => {\r\n activity.error(`Could not fetch tags: ${error}`);\r\n });\r\n };\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \"Insight-Dashboard-Turnoff-graph\"\r\n
\r\n
\r\n

{pageText.title}

\r\n
\r\n
\r\n

{pageText.description}

\r\n
\r\n
\r\n \r\n
\r\n
\r\n { showModal(); }} />\r\n
\r\n
\r\n\r\n {showModal && (\r\n \r\n
\r\n {pageText.modalHeader}\r\n
\r\n
\r\n {`${pageText.modalText} `}\r\n \r\n {i18n.getString(_TL_('Learn More'))}\r\n \r\n
\r\n
\r\n { hideModal(); enableAllTags(); }} text={i18n.getString(_TL_('Confirm'))} />\r\n \r\n
\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\n\r\nInsightDashboardOff.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n turnOnInsight: PropTypes.func,\r\n edm: PropTypes.func.isRequired,\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n tagId: PropTypes.string,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nInsightDashboardOff.defaultProps = {\r\n turnOnInsight: () => {},\r\n};\r\n\r\nexport default InsightDashboardOff;\r\n","import _ from 'underscore';\r\n\r\nexport const defaultNoDataNumber = -42;\r\n\r\nconst OperatorMap = {\r\n $StartsWith: 'StartsWith',\r\n $Equals: 'Equals',\r\n $Contains: 'Contains',\r\n $EndsWith: 'EndsWith',\r\n};\r\n\r\n// parse out the country code from \"Enum.Country'Country'\"\r\nconst parseCountryCode = (country) => {\r\n const countryName = country.split(\"Enum.Country'\")[1];\r\n const trimedCountryName = countryName.substring(0, countryName.length - 1);\r\n return trimedCountryName;\r\n};\r\n\r\n// parse out device code from \"Enum.Device'PC'\"\r\nconst parseDeviceCode = (device) => {\r\n const deviceCode = device.split(\"Enum.Device'\")[1];\r\n const trimedDeviceCode = deviceCode.substring(0, deviceCode.length - 1);\r\n return trimedDeviceCode;\r\n};\r\n\r\nexport const createPayload = (filter, startDate, endDate, timeZone) => {\r\n const filterPayload = {\r\n StartDate: startDate,\r\n EndDate: endDate,\r\n TimeZoneId: timeZone,\r\n CountryFilter: [],\r\n DeviceFilter: [],\r\n PageUrlFilters: [],\r\n };\r\n\r\n if (!filter || _.isEmpty(filter)) {\r\n filterPayload.CountryFilter = filterPayload.CountryFilter.join(',');\r\n filterPayload.DeviceFilter = filterPayload.DeviceFilter.join(',');\r\n return filterPayload;\r\n }\r\n\r\n const filterItemKey = Object.keys(filter)[0];\r\n const filterItems = filterItemKey === '$and' ? filter[filterItemKey] : [filter];\r\n\r\n _.each(filterItems, (item) => {\r\n // get key of object item\r\n const key = Object.keys(item)[0];\r\n const value = item[key];\r\n if (key === 'VisitedUrl') {\r\n const operator = Object.keys(value)[0];\r\n filterPayload.PageUrlFilters.push({\r\n Operator: OperatorMap[operator],\r\n Value: value[operator],\r\n });\r\n } else if (key === 'Country') {\r\n _.each(value.$in, (v) => {\r\n const countryCode = parseCountryCode(v);\r\n filterPayload.CountryFilter.push(countryCode);\r\n });\r\n } else {\r\n _.each(value.$in, (v) => {\r\n const deviceCode = parseDeviceCode(v);\r\n filterPayload.DeviceFilter.push(deviceCode);\r\n });\r\n }\r\n });\r\n\r\n filterPayload.CountryFilter = filterPayload.CountryFilter.join(',');\r\n filterPayload.DeviceFilter = filterPayload.DeviceFilter.join(',');\r\n\r\n return filterPayload;\r\n};\r\n\r\nexport const formatResponse = (response, itemName, valueName) => {\r\n if (!response) {\r\n return [];\r\n }\r\n\r\n const data = _.map(response, (value) => {\r\n const item = value[itemName];\r\n const itemValue = value[valueName];\r\n return {\r\n item,\r\n count: itemValue,\r\n };\r\n });\r\n\r\n return data;\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { HelpPopup } from '@bingads-webui-react/help-popup';\r\nimport { Spinner, SpinnerSize } from '@fluentui/react/lib/Spinner';\r\nimport { defaultNoDataNumber } from '../data/util';\r\n\r\nconst MetricBlock = ({ metricData }) => {\r\n const {\r\n underlineColor,\r\n title,\r\n helpId,\r\n unit,\r\n count,\r\n isLoading,\r\n } = metricData;\r\n return (\r\n
\r\n \r\n
\r\n \r\n {title}\r\n \r\n
\r\n \r\n
\r\n
\r\n {isLoading && }\r\n {!isLoading && {count === defaultNoDataNumber ? '--' : count}}\r\n
\r\n
\r\n {unit}\r\n
\r\n \r\n );\r\n};\r\n\r\nMetricBlock.propTypes = {\r\n metricData: PropTypes.shape({\r\n underlineColor: PropTypes.string,\r\n title: PropTypes.string,\r\n helpId: PropTypes.string,\r\n unit: PropTypes.string,\r\n count: PropTypes.number,\r\n }),\r\n isLoading: PropTypes.bool,\r\n};\r\n\r\nMetricBlock.defaultProps = {\r\n metricData: {\r\n underlineColor: 'grey',\r\n title: 'default title',\r\n helpId: '',\r\n unit: 'default unit',\r\n count: 42,\r\n },\r\n isLoading: false,\r\n};\r\n\r\nexport default MetricBlock;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { getStyles } from '../../styles';\r\nimport { useTotalSessionCountData } from '../data/useTotalSessionCountData';\r\nimport { useAverageActiveTimeData } from '../data/useAverageActiveTimeData';\r\nimport { useQuickbacksData } from '../data/useQuickData';\r\nimport MetricBlock from './metric-block';\r\nimport { defaultNoDataNumber } from '../data/util';\r\n\r\nconst Metrics = {\r\n totalSessionCount: {\r\n title: _TL_('Total session count'),\r\n unit: _TL_('count'),\r\n helpId: 'pop_BA_UET_Insights_TotalSessionCount',\r\n underlineColor: '#00188F',\r\n },\r\n AverageActiveTime: {\r\n title: _TL_('Average active time'),\r\n unit: _TL_('seconds'),\r\n helpId: 'pop_BA_UET_Insights_AvgActiveTime',\r\n underlineColor: '#E3008C',\r\n },\r\n Quickbacks: {\r\n title: _TL_('Quickbacks'),\r\n unit: _TL_('count'),\r\n helpId: 'pop_BA_UET_Insights_Quickbacks',\r\n underlineColor: '#4B003F',\r\n },\r\n};\r\n\r\n\r\nconst MetricGroup = (props) => {\r\n const {\r\n i18n, fetchTileData, instrumentation, isFilterReady,\r\n } = props;\r\n const classes = useDefaultStyles(getStyles);\r\n\r\n const {\r\n data: totalSessionCountData,\r\n isLoading: isTotelSessionCountDataLoading,\r\n } = useTotalSessionCountData({\r\n fetchTileData, instrumentation, isFilterReady,\r\n });\r\n\r\n const {\r\n data: AverageActiveTimeData,\r\n isLoading: isAverageActiveTimeDataLoading,\r\n } = useAverageActiveTimeData({\r\n fetchTileData, instrumentation, isFilterReady,\r\n });\r\n\r\n const {\r\n data: QuickbacksData,\r\n isLoading: isQuickbacksDataLoading,\r\n } = useQuickbacksData({\r\n fetchTileData, instrumentation, isFilterReady,\r\n });\r\n\r\n const isAverageTimeGreaterThan60 = AverageActiveTimeData !== defaultNoDataNumber && AverageActiveTimeData > 60;\r\n const AverageActiveTimeConverted = isAverageTimeGreaterThan60 ? Math.floor(AverageActiveTimeData / 60) : AverageActiveTimeData;\r\n const AverageActiveTimeUnit = isAverageTimeGreaterThan60 ? i18n.getString(_TL_('minutes')) : i18n.getString(_TL_('seconds'));\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nMetricGroup.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nMetricGroup.defaultProps = {\r\n};\r\n\r\nexport default MetricGroup;\r\n","import { useEffect, useState, useCallback } from 'react';\r\nimport { defaultNoDataNumber } from './util';\r\n\r\nexport function useTotalSessionCountData({\r\n fetchTileData, instrumentation, isFilterReady,\r\n}) {\r\n const [data, setData] = useState(defaultNoDataNumber);\r\n const [isLoaded, setisLoaded] = useState(false);\r\n const [isLoading, setisLoading] = useState(false);\r\n\r\n const onError = useCallback((error) => {\r\n instrumentation.error('FetchFetchTotalSessionCount', error, 'Default.GetWebInsights');\r\n }, [instrumentation]);\r\n\r\n useEffect(() => {\r\n if (!fetchTileData) return undefined;\r\n setisLoading(true);\r\n setisLoaded(false);\r\n\r\n if (!isFilterReady) return undefined;\r\n\r\n const cachedFetchTileData = fetchTileData('TotalSessionCounts');\r\n instrumentation.log('FetchTotalSessionCount', 'Start fetching Total Session Count', 'Default.GetWebInsights');\r\n const totalSessionCountPromise = cachedFetchTileData.toPromise()\r\n .then((response) => {\r\n instrumentation.log('FetchTotalSessionCount', `Total Session Count fetched successfully res = ${response}`, 'Default.GetWebInsights');\r\n setData(response.TotalSessionCountsResult);\r\n });\r\n\r\n\r\n totalSessionCountPromise\r\n .catch(onError).finally(() => {\r\n setisLoading(false);\r\n setisLoaded(true);\r\n });\r\n\r\n return () => {\r\n cachedFetchTileData.invalidate();\r\n };\r\n }, [fetchTileData, instrumentation, isFilterReady, onError]);\r\n\r\n return {\r\n data,\r\n isLoaded,\r\n isLoading,\r\n };\r\n}\r\n","import { useEffect, useState, useCallback } from 'react';\r\nimport { defaultNoDataNumber } from './util';\r\n\r\nexport function useAverageActiveTimeData({\r\n fetchTileData, instrumentation, isFilterReady,\r\n}) {\r\n const [data, setData] = useState(defaultNoDataNumber);\r\n const [isLoaded, setisLoaded] = useState(false);\r\n const [isLoading, setisLoading] = useState(false);\r\n\r\n const onError = useCallback((error) => {\r\n instrumentation.error('FetchAverageActiveTime', error, 'Default.GetWebInsights');\r\n }, [instrumentation]);\r\n\r\n\r\n useEffect(() => {\r\n if (!fetchTileData) return undefined;\r\n\r\n setisLoading(true);\r\n setisLoaded(false);\r\n\r\n if (!isFilterReady) return undefined;\r\n\r\n const cachedFetchTileData = fetchTileData('AverageActiveTime');\r\n\r\n const AverageTimePromise = cachedFetchTileData.toPromise()\r\n .then((response) => {\r\n instrumentation.log('FetchAverageActiveTime', `Average Active Time fetched successfully res = ${response}`, 'Default.GetWebInsights');\r\n setData(response.AverageActiveTimeResult);\r\n });\r\n\r\n AverageTimePromise\r\n .catch(onError).finally(() => {\r\n setisLoading(false);\r\n setisLoaded(true);\r\n });\r\n\r\n return () => {\r\n cachedFetchTileData.invalidate();\r\n };\r\n }, [onError, fetchTileData, instrumentation, isFilterReady]);\r\n\r\n return {\r\n data,\r\n isLoaded,\r\n isLoading,\r\n };\r\n}\r\n","import { useEffect, useState, useCallback } from 'react';\r\nimport { defaultNoDataNumber } from './util';\r\n\r\nexport function useQuickbacksData({\r\n fetchTileData, instrumentation, isFilterReady,\r\n}) {\r\n const [data, setData] = useState(defaultNoDataNumber);\r\n const [isLoaded, setisLoaded] = useState(false);\r\n const [isLoading, setisLoading] = useState(true);\r\n\r\n const onError = useCallback((error) => {\r\n instrumentation.error('FetchQuickbacks', error, 'Default.GetWebInsights');\r\n }, [instrumentation]);\r\n\r\n\r\n useEffect(() => {\r\n if (!fetchTileData) return undefined;\r\n\r\n setisLoading(true);\r\n setisLoaded(false);\r\n\r\n if (!isFilterReady) return undefined;\r\n\r\n const cachedFetchTileData = fetchTileData('QuickBacks');\r\n\r\n const QuickBackPromise = cachedFetchTileData.toPromise()\r\n .then((response) => {\r\n instrumentation.log('FetchQuickbacks', `Quickbacks fetched successfully res = ${response}`, 'Default.GetWebInsights');\r\n setData(response.QuickBackResult);\r\n });\r\n\r\n QuickBackPromise\r\n .catch(onError).finally(() => {\r\n setisLoading(false);\r\n setisLoaded(true);\r\n });\r\n\r\n\r\n return () => {\r\n cachedFetchTileData.invalidate();\r\n };\r\n }, [onError, fetchTileData, instrumentation, isFilterReady]);\r\n\r\n return {\r\n data,\r\n isLoaded,\r\n isLoading,\r\n };\r\n}\r\n","import { getTheme } from '@fluentui/react';\r\n\r\nconst { palette } = getTheme();\r\n\r\n// TODO: Change to get color from palette\r\nexport const getTileStyles = () => {\r\n const cardContainer = {\r\n minHeight: '100px',\r\n width: '520px',\r\n border: 'solid 1px lightgray',\r\n fontSize: '14px',\r\n color: palette.neutralPrimary,\r\n display: 'grid',\r\n gridTemplateColumns: '100%',\r\n background: palette.white,\r\n 'box-shadow': '0px 0.3px 0.9px rgba(0, 0, 0, 0.108), 0px 1.6px 3.6px rgba(0, 0, 0, 0.132)',\r\n 'border-radius': '2px',\r\n };\r\n\r\n const wideCardContainer = {\r\n width: '100%',\r\n };\r\n\r\n const cardSection = {\r\n paddingLeft: '16px',\r\n paddingRight: '16px',\r\n };\r\n\r\n const headerBorder = {\r\n borderBottom: `solid 1px ${palette.neutralLight}`,\r\n };\r\n\r\n const headerContainer = {\r\n gridRow: '1',\r\n paddingTop: '12px',\r\n paddingBottom: '7px',\r\n height: '40px',\r\n };\r\n\r\n const headerContentContainer = {\r\n display: 'flex',\r\n };\r\n\r\n const dropdownContainer = {\r\n display: 'flex',\r\n };\r\n\r\n const closeButton = {\r\n color: palette.neutralSecondary,\r\n '&:hover': {\r\n color: palette.neutralSecondary,\r\n background: 'transparent',\r\n },\r\n };\r\n\r\n const contentContainer = {\r\n minHeight: '300px',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n marginTop: '0px',\r\n marginBottom: '8px',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n\r\n '& .chart-container': {\r\n width: '100%',\r\n },\r\n };\r\n\r\n const footerContainer = {\r\n gridRow: '3',\r\n 'margin-top': '8px',\r\n 'margin-bottom': '12px',\r\n };\r\n const footerContentContainer = {\r\n minHeight: '30px',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n '& a': {\r\n paddingLeft: '20px',\r\n paddingRight: '20px',\r\n fontWeight: 600,\r\n },\r\n };\r\n\r\n const footerButton = {\r\n backgroundColor: 'white',\r\n float: 'left',\r\n 'font-style': 'normal',\r\n 'font-weight': '600',\r\n 'font-size': '14px',\r\n 'line-height': '20px',\r\n };\r\n\r\n const footerLink = {\r\n textDecoration: 'underline',\r\n };\r\n\r\n const headerText = {\r\n fontWeight: '600',\r\n fontStyle: 'normal',\r\n display: 'inline-block',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n height: '100%',\r\n width: '100%',\r\n color: palette.neutralPrimary,\r\n };\r\n\r\n const smallHeaderText = {\r\n fontSize: '14px',\r\n 'line-height': '20px',\r\n whiteSpace: 'nowrap',\r\n };\r\n\r\n const largeHeaderText = {\r\n fontSize: '24px',\r\n };\r\n\r\n return {\r\n cardSection,\r\n headerBorder,\r\n headerContainer,\r\n headerContentContainer,\r\n headerText,\r\n smallHeaderText,\r\n largeHeaderText,\r\n dropdownContainer,\r\n closeButton,\r\n contentContainer,\r\n cardContainer,\r\n wideCardContainer,\r\n footerContainer,\r\n footerContentContainer,\r\n footerButton,\r\n footerLink,\r\n };\r\n};\r\n\r\nexport const cardStyles = {\r\n shimmerItem: { root: { marginBottom: '5px' } },\r\n};\r\n\r\n","import React, { Fragment } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { HighchartReactWrapper } from '@bingads-webui-react/highchart-react-wrapper';\r\n\r\nconst LegendGrid = ({ data }) => (\r\n \r\n {_.map(data, item => (\r\n \r\n
\r\n {item.name}\r\n
\r\n {`${item.percentage}%`}\r\n \r\n {item.y}\r\n \r\n \r\n ))}\r\n \r\n);\r\n\r\nconst DonutChart = ({ data, containerName }) => {\r\n const pieOptions = {\r\n chart: {\r\n type: 'pie',\r\n height: 280,\r\n margin: [0, 0, 0, 0],\r\n },\r\n credits: {\r\n enabled: false,\r\n },\r\n plotOptions: {\r\n pie: {\r\n allowPointSelect: false,\r\n borderColor: null,\r\n dataLabels: {\r\n enabled: false,\r\n },\r\n endAngle: 360,\r\n startAngle: 0,\r\n size: 250,\r\n states: {\r\n hover: {\r\n enabled: true,\r\n },\r\n },\r\n },\r\n series: {\r\n animation: false,\r\n },\r\n },\r\n title: {\r\n text: null,\r\n },\r\n series: [{\r\n type: 'pie',\r\n data,\r\n showInLegend: false,\r\n innerSize: '65%',\r\n }],\r\n legend: {\r\n enabled: true,\r\n itemDistance: 14,\r\n itemStyle: {\r\n fontWeight: 'regular',\r\n },\r\n symbolRadius: 0,\r\n },\r\n tooltip: {\r\n followPointer: false,\r\n backgroundColor: '#ffffff',\r\n borderWidth: 0,\r\n distance: 0,\r\n shape: 'square',\r\n pointFormat: '

{point.y:.0f}

',\r\n },\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DonutChart;\r\n\r\n\r\nDonutChart.propTypes = {\r\n options: PropTypes.shape({\r\n points: PropTypes.arrayOf(PropTypes.shape({\r\n color: PropTypes.string.isRequired,\r\n name: PropTypes.string.isRequired,\r\n y: PropTypes.number.isRequired,\r\n })).isRequired,\r\n }).isRequired,\r\n\r\n containerName: PropTypes.string,\r\n};\r\n\r\nDonutChart.defaultProps = {\r\n containerName: 'chart-container',\r\n};\r\n","import React, { Fragment, useMemo } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport DonutChart from './base-charts/donut-chart';\r\n\r\nconst Devices = {\r\n PC: {\r\n name: _TL_('PC'),\r\n color: '#A97CC5',\r\n },\r\n Mobile: {\r\n name: _TL_('Mobile'),\r\n color: '#DA71B3',\r\n },\r\n Tablet: {\r\n name: _TL_('Tablet'),\r\n color: '#418DED',\r\n },\r\n Other: {\r\n name: _TL_('Other'),\r\n color: '#0299A3',\r\n },\r\n // Temporary mock data from Clarity workaround\r\n 'Item 1': {\r\n name: _TL_('Item 1'),\r\n color: '#0299A3',\r\n },\r\n 'Item 2': {\r\n name: _TL_('Item 2'),\r\n color: '#418DED',\r\n },\r\n};\r\n\r\nconst DevicesChart = (props) => {\r\n const {\r\n i18n, data,\r\n } = props;\r\n\r\n const totalCount = useMemo(() => _.reduce(data, (memo, item) => memo + item.count, 0), [data]);\r\n\r\n const formattedData = useMemo(() => {\r\n // parse array of objects into array of points\r\n const points = _.map(data, (item) => {\r\n const device = Devices[item.item] ? Devices[item.item] : Devices.Other;\r\n return {\r\n name: i18n.getString(device.name),\r\n y: item.count,\r\n color: device.color,\r\n percentage: Math.round((item.count / totalCount) * 100),\r\n };\r\n });\r\n return points;\r\n }, [data, i18n, totalCount]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nDevicesChart.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n\r\n data: PropTypes.arrayOf(PropTypes.shape({\r\n item: PropTypes.string,\r\n count: PropTypes.number,\r\n })),\r\n};\r\n\r\nDevicesChart.defaultProps = {\r\n data: [\r\n { item: 'Default', count: 400 },\r\n { item: 'Default', count: 300 },\r\n ],\r\n};\r\n\r\nexport default DevicesChart;\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport _ from 'underscore';\r\nimport React, { Fragment, useState, useMemo } from 'react';\r\nimport PropTypes from 'prop-types'; import { Link } from '@fluentui/react';\r\nimport { HighchartReactWrapper } from '@bingads-webui-react/highchart-react-wrapper';\r\n\r\nconst SingleBar = ({ item, seriesSum }) => {\r\n const barOption = {\r\n title: undefined,\r\n credits: {\r\n enabled: false,\r\n },\r\n chart: {\r\n type: 'bar',\r\n height: '25px',\r\n margin: [0, 0, 0, 0],\r\n },\r\n\r\n xAxis: {\r\n crosshair: false,\r\n tickLength: 0,\r\n lineWidth: 0,\r\n labels: {\r\n enabled: false,\r\n },\r\n categories: [item.name],\r\n },\r\n\r\n yAxis: {\r\n min: 0,\r\n max: seriesSum * 1.05,\r\n gridLineWidth: 0,\r\n labels: {\r\n enabled: false,\r\n },\r\n },\r\n\r\n legend: {\r\n enabled: false,\r\n },\r\n\r\n tooltip: {\r\n enabled: false,\r\n },\r\n\r\n series: [{\r\n name: item.name,\r\n colorByPoint: false,\r\n data: [item.y],\r\n color: item.color,\r\n }],\r\n\r\n plotOptions: {\r\n bar: {\r\n dataLabels: {\r\n enabled: true,\r\n },\r\n },\r\n series: {\r\n groupPadding: 0,\r\n pointPadding: 0,\r\n },\r\n },\r\n };\r\n\r\n\r\n return ();\r\n};\r\n\r\nconst BarChart = ({ data, containerName, i18n }) => {\r\n const [shouldShowMore, setShouldShowMore] = useState(false);\r\n const dataLength = data.length;\r\n const shouldShowToggle = useMemo(() => dataLength > 5, [dataLength]);\r\n const dataToShow = useMemo(() => (shouldShowMore ? data : _.first(data, 5)), [data, shouldShowMore]);\r\n const seriesSum = _.max(data, item => item.y);\r\n const linkLabel = useMemo(() => i18n.getString(shouldShowMore ? _TL_('Show less') : _TL_('Show more')), [i18n, shouldShowMore]);\r\n\r\n return (\r\n
\r\n {\r\n _.map(dataToShow, item => (\r\n \r\n {item.name}\r\n
\r\n \r\n \r\n ))\r\n }\r\n
\r\n {\r\n shouldShowToggle &&\r\n setShouldShowMore(!shouldShowMore)}>\r\n {linkLabel}\r\n \r\n }\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default BarChart;\r\n\r\nBarChart.propTypes = {\r\n options: PropTypes.shape({\r\n height: PropTypes.number.isRequired,\r\n width: PropTypes.number.isRequired,\r\n data: PropTypes.arrayOf(PropTypes.shape({\r\n color: PropTypes.string.isRequired,\r\n y: PropTypes.number.isRequired,\r\n })).isRequired,\r\n }).isRequired,\r\n\r\n containerName: PropTypes.string,\r\n};\r\n\r\nBarChart.defaultProps = {\r\n containerName: 'chart-container',\r\n};\r\n","export const getCountryValues = i18n => ({\r\n Afghanistan: i18n.getString(_TL_('Afghanistan')),\r\n 'Åland Islands': i18n.getString(_TL_('Åland Islands')),\r\n Albania: i18n.getString(_TL_('Albania')),\r\n Algeria: i18n.getString(_TL_('Algeria')),\r\n 'American Samoa': i18n.getString(_TL_('American Samoa')),\r\n Andorra: i18n.getString(_TL_('Andorra')),\r\n Angola: i18n.getString(_TL_('Angola')),\r\n Anguilla: i18n.getString(_TL_('Anguilla')),\r\n Antarctica: i18n.getString(_TL_('Antarctica')),\r\n 'Antigua and Barbuda': i18n.getString(_TL_('Antigua and Barbuda')),\r\n Argentina: i18n.getString(_TL_('Argentina')),\r\n Armenia: i18n.getString(_TL_('Armenia')),\r\n Aruba: i18n.getString(_TL_('Aruba')),\r\n Australia: i18n.getString(_TL_('Australia')),\r\n Austria: i18n.getString(_TL_('Austria')),\r\n Azerbaijan: i18n.getString(_TL_('Azerbaijan')),\r\n Bahamas: i18n.getString(_TL_('Bahamas')),\r\n Bahrain: i18n.getString(_TL_('Bahrain')),\r\n Bangladesh: i18n.getString(_TL_('Bangladesh')),\r\n Barbados: i18n.getString(_TL_('Barbados')),\r\n Belarus: i18n.getString(_TL_('Belarus')),\r\n Belgium: i18n.getString(_TL_('Belgium')),\r\n Belize: i18n.getString(_TL_('Belize')),\r\n Benin: i18n.getString(_TL_('Benin')),\r\n Bermuda: i18n.getString(_TL_('Bermuda')),\r\n Bhutan: i18n.getString(_TL_('Bhutan')),\r\n Bolivia: i18n.getString(_TL_('Bolivia')),\r\n Bonaire: i18n.getString(_TL_('Bonaire')),\r\n 'Bosnia and Herzegovina': i18n.getString(_TL_('Bosnia and Herzegovina')),\r\n Botswana: i18n.getString(_TL_('Botswana')),\r\n 'Bouvet Island': i18n.getString(_TL_('Bouvet Island')),\r\n Brazil: i18n.getString(_TL_('Brazil')),\r\n 'British Indian Ocean Territory': i18n.getString(_TL_('British Indian Ocean Territory')),\r\n Brunei: i18n.getString(_TL_('Brunei')),\r\n Bulgaria: i18n.getString(_TL_('Bulgaria')),\r\n 'Burkina Faso': i18n.getString(_TL_('Burkina Faso')),\r\n Burundi: i18n.getString(_TL_('Burundi')),\r\n Cambodia: i18n.getString(_TL_('Cambodia')),\r\n Cameroon: i18n.getString(_TL_('Cameroon')),\r\n Canada: i18n.getString(_TL_('Canada')),\r\n 'Cape Verde': i18n.getString(_TL_('Cape Verde')),\r\n 'Cayman Islands': i18n.getString(_TL_('Cayman Islands')),\r\n 'Central African Republic': i18n.getString(_TL_('Central African Republic')),\r\n Chad: i18n.getString(_TL_('Chad')),\r\n Chile: i18n.getString(_TL_('Chile')),\r\n China: i18n.getString(_TL_('China')),\r\n 'Christmas Island': i18n.getString(_TL_('Christmas Island')),\r\n 'Cocos (Keeling) Islands': i18n.getString(_TL_('Cocos (Keeling) Islands')),\r\n Colombia: i18n.getString(_TL_('Colombia')),\r\n Comoros: i18n.getString(_TL_('Comoros')),\r\n Congo: i18n.getString(_TL_('Congo')),\r\n 'Congo (DRC)': i18n.getString(_TL_('Congo (DRC)')),\r\n 'Cook Islands': i18n.getString(_TL_('Cook Islands')),\r\n 'Costa Rica': i18n.getString(_TL_('Costa Rica')),\r\n \"Côte d'Ivoire\": i18n.getString(_TL_(\"Côte d'Ivoire\")),\r\n Croatia: i18n.getString(_TL_('Croatia')),\r\n Cuba: i18n.getString(_TL_('Cuba')),\r\n Curaçao: i18n.getString(_TL_('Curaçao')),\r\n Cyprus: i18n.getString(_TL_('Cyprus')),\r\n 'Czech Republic': i18n.getString(_TL_('Czech Republic')),\r\n Denmark: i18n.getString(_TL_('Denmark')),\r\n Djibouti: i18n.getString(_TL_('Djibouti')),\r\n Dominica: i18n.getString(_TL_('Dominica')),\r\n 'Dominican Republic': i18n.getString(_TL_('Dominican Republic')),\r\n Ecuador: i18n.getString(_TL_('Ecuador')),\r\n Egypt: i18n.getString(_TL_('Egypt')),\r\n 'El Salvador': i18n.getString(_TL_('El Salvador')),\r\n 'Equatorial Guinea': i18n.getString(_TL_('Equatorial Guinea')),\r\n Eritrea: i18n.getString(_TL_('Eritrea')),\r\n Estonia: i18n.getString(_TL_('Estonia')),\r\n Ethiopia: i18n.getString(_TL_('Ethiopia')),\r\n 'Falkland Islands': i18n.getString(_TL_('Falkland Islands')),\r\n 'Faroe Islands': i18n.getString(_TL_('Faroe Islands')),\r\n Fiji: i18n.getString(_TL_('Fiji')),\r\n Finland: i18n.getString(_TL_('Finland')),\r\n France: i18n.getString(_TL_('France')),\r\n 'French Guiana': i18n.getString(_TL_('French Guiana')),\r\n 'French Polynesia': i18n.getString(_TL_('French Polynesia')),\r\n 'French Southern Territories': i18n.getString(_TL_('French Southern Territories')),\r\n Gabon: i18n.getString(_TL_('Gabon')),\r\n Gambia: i18n.getString(_TL_('Gambia')),\r\n Georgia: i18n.getString(_TL_('Georgia')),\r\n Germany: i18n.getString(_TL_('Germany')),\r\n Ghana: i18n.getString(_TL_('Ghana')),\r\n Gibraltar: i18n.getString(_TL_('Gibraltar')),\r\n Greece: i18n.getString(_TL_('Greece')),\r\n Greenland: i18n.getString(_TL_('Greenland')),\r\n Grenada: i18n.getString(_TL_('Grenada')),\r\n Guadeloupe: i18n.getString(_TL_('Guadeloupe')),\r\n Guam: i18n.getString(_TL_('Guam')),\r\n Guatemala: i18n.getString(_TL_('Guatemala')),\r\n Guernsey: i18n.getString(_TL_('Guernsey')),\r\n Guinea: i18n.getString(_TL_('Guinea')),\r\n 'Guinea-Bissau': i18n.getString(_TL_('Guinea-Bissau')),\r\n Guyana: i18n.getString(_TL_('Guyana')),\r\n Haiti: i18n.getString(_TL_('Haiti')),\r\n 'Heard Island and McDonald Islands': i18n.getString(_TL_('Heard Island and McDonald Islands')),\r\n 'Holy See (Vatican City State)': i18n.getString(_TL_('Holy See (Vatican City State)')),\r\n Honduras: i18n.getString(_TL_('Honduras')),\r\n 'Hong Kong SAR': i18n.getString(_TL_('Hong Kong SAR')),\r\n Hungary: i18n.getString(_TL_('Hungary')),\r\n Iceland: i18n.getString(_TL_('Iceland')),\r\n India: i18n.getString(_TL_('India')),\r\n Indonesia: i18n.getString(_TL_('Indonesia')),\r\n Iran: i18n.getString(_TL_('Iran')),\r\n Iraq: i18n.getString(_TL_('Iraq')),\r\n Ireland: i18n.getString(_TL_('Ireland')),\r\n 'Isle of Man': i18n.getString(_TL_('Isle of Man')),\r\n Israel: i18n.getString(_TL_('Israel')),\r\n Italy: i18n.getString(_TL_('Italy')),\r\n Jamaica: i18n.getString(_TL_('Jamaica')),\r\n Japan: i18n.getString(_TL_('Japan')),\r\n Jersey: i18n.getString(_TL_('Jersey')),\r\n Jordan: i18n.getString(_TL_('Jordan')),\r\n Kazakhstan: i18n.getString(_TL_('Kazakhstan')),\r\n Kenya: i18n.getString(_TL_('Kenya')),\r\n Kiribati: i18n.getString(_TL_('Kiribati')),\r\n 'North Korea': i18n.getString(_TL_('North Korea')),\r\n Korea: i18n.getString(_TL_('Korea')),\r\n Kuwait: i18n.getString(_TL_('Kuwait')),\r\n Kyrgyzstan: i18n.getString(_TL_('Kyrgyzstan')),\r\n Laos: i18n.getString(_TL_('Laos')),\r\n Latvia: i18n.getString(_TL_('Latvia')),\r\n Lebanon: i18n.getString(_TL_('Lebanon')),\r\n Lesotho: i18n.getString(_TL_('Lesotho')),\r\n Liberia: i18n.getString(_TL_('Liberia')),\r\n Libya: i18n.getString(_TL_('Libya')),\r\n Liechtenstein: i18n.getString(_TL_('Liechtenstein')),\r\n Lithuania: i18n.getString(_TL_('Lithuania')),\r\n Luxembourg: i18n.getString(_TL_('Luxembourg')),\r\n 'Macao SAR': i18n.getString(_TL_('Macao SAR')),\r\n 'North Macedonia': i18n.getString(_TL_('North Macedonia')),\r\n Madagascar: i18n.getString(_TL_('Madagascar')),\r\n Malawi: i18n.getString(_TL_('Malawi')),\r\n Malaysia: i18n.getString(_TL_('Malaysia')),\r\n Maldives: i18n.getString(_TL_('Maldives')),\r\n Mali: i18n.getString(_TL_('Mali')),\r\n Malta: i18n.getString(_TL_('Malta')),\r\n 'Marshall Islands': i18n.getString(_TL_('Marshall Islands')),\r\n Martinique: i18n.getString(_TL_('Martinique')),\r\n Mauritania: i18n.getString(_TL_('Mauritania')),\r\n Mauritius: i18n.getString(_TL_('Mauritius')),\r\n Mayotte: i18n.getString(_TL_('Mayotte')),\r\n Mexico: i18n.getString(_TL_('Mexico')),\r\n Micronesia: i18n.getString(_TL_('Micronesia')),\r\n Moldova: i18n.getString(_TL_('Moldova')),\r\n Monaco: i18n.getString(_TL_('Monaco')),\r\n Mongolia: i18n.getString(_TL_('Mongolia')),\r\n Montenegro: i18n.getString(_TL_('Montenegro')),\r\n Montserrat: i18n.getString(_TL_('Montserrat')),\r\n Morocco: i18n.getString(_TL_('Morocco')),\r\n Mozambique: i18n.getString(_TL_('Mozambique')),\r\n Myanmar: i18n.getString(_TL_('Myanmar')),\r\n Namibia: i18n.getString(_TL_('Namibia')),\r\n Nauru: i18n.getString(_TL_('Nauru')),\r\n Nepal: i18n.getString(_TL_('Nepal')),\r\n Netherlands: i18n.getString(_TL_('Netherlands')),\r\n 'New Caledonia': i18n.getString(_TL_('New Caledonia')),\r\n 'New Zealand': i18n.getString(_TL_('New Zealand')),\r\n Nicaragua: i18n.getString(_TL_('Nicaragua')),\r\n Niger: i18n.getString(_TL_('Niger')),\r\n Nigeria: i18n.getString(_TL_('Nigeria')),\r\n Niue: i18n.getString(_TL_('Niue')),\r\n 'Norfolk Island': i18n.getString(_TL_('Norfolk Island')),\r\n 'Northern Mariana Islands': i18n.getString(_TL_('Northern Mariana Islands')),\r\n Norway: i18n.getString(_TL_('Norway')),\r\n Oman: i18n.getString(_TL_('Oman')),\r\n Pakistan: i18n.getString(_TL_('Pakistan')),\r\n Palau: i18n.getString(_TL_('Palau')),\r\n 'Palestinian Authority': i18n.getString(_TL_('Palestinian Authority')),\r\n Panama: i18n.getString(_TL_('Panama')),\r\n 'Papua New Guinea': i18n.getString(_TL_('Papua New Guinea')),\r\n Paraguay: i18n.getString(_TL_('Paraguay')),\r\n Peru: i18n.getString(_TL_('Peru')),\r\n Philippines: i18n.getString(_TL_('Philippines')),\r\n 'Pitcairn Islands': i18n.getString(_TL_('Pitcairn Islands')),\r\n Poland: i18n.getString(_TL_('Poland')),\r\n Portugal: i18n.getString(_TL_('Portugal')),\r\n 'Puerto Rico': i18n.getString(_TL_('Puerto Rico')),\r\n Qatar: i18n.getString(_TL_('Qatar')),\r\n Réunion: i18n.getString(_TL_('Réunion')),\r\n Romania: i18n.getString(_TL_('Romania')),\r\n Russia: i18n.getString(_TL_('Russia')),\r\n Rwanda: i18n.getString(_TL_('Rwanda')),\r\n 'Saint Barthélemy': i18n.getString(_TL_('Saint Barthélemy')),\r\n 'St Helena, Ascension, Tristan da Cunha': i18n.getString(_TL_('St Helena, Ascension, Tristan da Cunha')),\r\n 'Saint Kitts and Nevis': i18n.getString(_TL_('Saint Kitts and Nevis')),\r\n 'Saint Lucia': i18n.getString(_TL_('Saint Lucia')),\r\n 'Saint Martin': i18n.getString(_TL_('Saint Martin')),\r\n 'Saint Pierre and Miquelon': i18n.getString(_TL_('Saint Pierre and Miquelon')),\r\n 'Saint Vincent and the Grenadines': i18n.getString(_TL_('Saint Vincent and the Grenadines')),\r\n Samoa: i18n.getString(_TL_('Samoa')),\r\n 'San Marino': i18n.getString(_TL_('San Marino')),\r\n 'São Tomé and Príncipe': i18n.getString(_TL_('São Tomé and Príncipe')),\r\n 'Saudi Arabia': i18n.getString(_TL_('Saudi Arabia')),\r\n Senegal: i18n.getString(_TL_('Senegal')),\r\n Serbia: i18n.getString(_TL_('Serbia')),\r\n Seychelles: i18n.getString(_TL_('Seychelles')),\r\n 'Sierra Leone': i18n.getString(_TL_('Sierra Leone')),\r\n Singapore: i18n.getString(_TL_('Singapore')),\r\n 'Sint Maarten': i18n.getString(_TL_('Sint Maarten')),\r\n Slovakia: i18n.getString(_TL_('Slovakia')),\r\n Slovenia: i18n.getString(_TL_('Slovenia')),\r\n 'Solomon Islands': i18n.getString(_TL_('Solomon Islands')),\r\n Somalia: i18n.getString(_TL_('Somalia')),\r\n 'South Africa': i18n.getString(_TL_('South Africa')),\r\n 'South Georgia and South Sandwich Islands': i18n.getString(_TL_('South Georgia and South Sandwich Islands')),\r\n 'South Sudan': i18n.getString(_TL_('South Sudan')),\r\n Spain: i18n.getString(_TL_('Spain')),\r\n 'Sri Lanka': i18n.getString(_TL_('Sri Lanka')),\r\n Sudan: i18n.getString(_TL_('Sudan')),\r\n Suriname: i18n.getString(_TL_('Suriname')),\r\n Svalbard: i18n.getString(_TL_('Svalbard')),\r\n Eswatini: i18n.getString(_TL_('Eswatini')),\r\n Sweden: i18n.getString(_TL_('Sweden')),\r\n Switzerland: i18n.getString(_TL_('Switzerland')),\r\n Syria: i18n.getString(_TL_('Syria')),\r\n Taiwan: i18n.getString(_TL_('Taiwan')),\r\n Tajikistan: i18n.getString(_TL_('Tajikistan')),\r\n Tanzania: i18n.getString(_TL_('Tanzania')),\r\n Thailand: i18n.getString(_TL_('Thailand')),\r\n 'Timor-Leste': i18n.getString(_TL_('Timor-Leste')),\r\n Togo: i18n.getString(_TL_('Togo')),\r\n Tokelau: i18n.getString(_TL_('Tokelau')),\r\n Tonga: i18n.getString(_TL_('Tonga')),\r\n 'Trinidad and Tobago': i18n.getString(_TL_('Trinidad and Tobago')),\r\n Tunisia: i18n.getString(_TL_('Tunisia')),\r\n Turkey: i18n.getString(_TL_('Turkey')),\r\n Turkmenistan: i18n.getString(_TL_('Turkmenistan')),\r\n 'Turks and Caicos Islands': i18n.getString(_TL_('Turks and Caicos Islands')),\r\n Tuvalu: i18n.getString(_TL_('Tuvalu')),\r\n Uganda: i18n.getString(_TL_('Uganda')),\r\n Ukraine: i18n.getString(_TL_('Ukraine')),\r\n 'United Arab Emirates': i18n.getString(_TL_('United Arab Emirates')),\r\n 'United Kingdom': i18n.getString(_TL_('United Kingdom')),\r\n 'United States': i18n.getString(_TL_('United States')),\r\n 'U.S. Outlying Islands': i18n.getString(_TL_('U.S. Outlying Islands')),\r\n Uruguay: i18n.getString(_TL_('Uruguay')),\r\n Uzbekistan: i18n.getString(_TL_('Uzbekistan')),\r\n Vanuatu: i18n.getString(_TL_('Vanuatu')),\r\n Venezuela: i18n.getString(_TL_('Venezuela')),\r\n Vietnam: i18n.getString(_TL_('Vietnam')),\r\n 'British Virgin Islands': i18n.getString(_TL_('British Virgin Islands')),\r\n 'U.S. Virgin Islands': i18n.getString(_TL_('U.S. Virgin Islands')),\r\n 'Wallis and Futuna': i18n.getString(_TL_('Wallis and Futuna')), // TODO: disputed, ask about this to Clickhouse group\r\n 'Western Sahara': i18n.getString(_TL_('Western Sahara')),\r\n Yemen: i18n.getString(_TL_('Yemen')),\r\n Zambia: i18n.getString(_TL_('Zambia')),\r\n Zimbabwe: i18n.getString(_TL_('Zimbabwe')),\r\n});\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, { Fragment, useMemo } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport BarChart from './base-charts/bar-chart';\r\nimport { getCountryValues } from '../../data/country';\r\n\r\nconst CountriesChart = (props) => {\r\n const {\r\n i18n, data,\r\n } = props;\r\n\r\n const color = '#5C1B86';\r\n const countryValues = useMemo(() => getCountryValues(i18n), [i18n]);\r\n\r\n const formattedData = useMemo(() =>\r\n _.map(data, item => ({\r\n name: countryValues[item.item] ? countryValues[item.item] : item.item,\r\n y: item.count,\r\n color,\r\n })), [countryValues, data]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nCountriesChart.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n\r\n data: PropTypes.arrayOf(PropTypes.shape({\r\n item: PropTypes.string.isRequired,\r\n count: PropTypes.number.isRequired,\r\n })),\r\n};\r\n\r\nCountriesChart.defaultProps = {\r\n data: [],\r\n};\r\n\r\nexport default CountriesChart;\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React, { Fragment, useMemo } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport BarChart from './base-charts/bar-chart';\r\n\r\nconst PageVisitedChart = (props) => {\r\n const {\r\n data,\r\n i18n,\r\n } = props;\r\n\r\n const color = '#0078D4';\r\n\r\n const formattedData = useMemo(() =>\r\n _.map(data, item => ({\r\n name: item.item,\r\n y: item.count,\r\n color,\r\n })), [data, i18n]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nPageVisitedChart.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nPageVisitedChart.defaultProps = {\r\n};\r\n\r\nexport default PageVisitedChart;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nconst ContentStrings = {\r\n NoData: _TL_('No data available. '),\r\n Discription: _TL_('To update the tile, select a different data range or filter. If the tile remains blank, your account might have no data.'),\r\n};\r\n\r\nconst EmptyContent = (props) => {\r\n const {\r\n i18n,\r\n } = props;\r\n\r\n\r\n return (\r\n \r\n {i18n.getString(ContentStrings.NoData)}\r\n \r\n {i18n.getString(ContentStrings.Discription)}\r\n \r\n \r\n );\r\n};\r\n\r\nEmptyContent.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nEmptyContent.defaultProps = {\r\n};\r\n\r\nexport default EmptyContent;\r\n","import React, { Fragment, useMemo, useRef, useCallback } from 'react';\r\nimport _ from 'underscore';\r\nimport PropTypes from 'prop-types';\r\nimport { Card } from '@bingads-webui-campaign-react/card';\r\nimport { Spinner, SpinnerSize } from '@fluentui/react/lib/Spinner';\r\n\r\nimport { getTileStyles } from '../../styles/tileStyles';\r\n\r\nimport DevicesChart from '../charts/devices-chart';\r\nimport CountriesChart from '../charts/countries-chart';\r\nimport PageVisitedChart from '../charts/page-visited-chart';\r\nimport EmptyContent from './empty-content';\r\n\r\nconst TileConfig = {\r\n PagesByVisits: {\r\n title: _TL_('Popular pages by visits '),\r\n onActionClick: () => { },\r\n buttonLabel: _TL_('Manage conversion goals'),\r\n buttonRoute: '/campaign/vnext/conversiongoals',\r\n },\r\n Devices: {\r\n title: _TL_('Devices'),\r\n onActionClick: () => { },\r\n buttonLabel: _TL_('Manage audiences'),\r\n buttonRoute: '/campaign/vnext/audienceslibrary',\r\n },\r\n Countries: {\r\n title: _TL_('Countries'),\r\n onActionClick: () => { },\r\n buttonLabel: _TL_('Manage audiences'),\r\n buttonRoute: '/campaign/vnext/audienceslibrary',\r\n },\r\n};\r\n\r\nconst DashboardTile = (props) => {\r\n const {\r\n i18n, data, tileType, isLoading, scope,\r\n } = props;\r\n\r\n const scopeRef = useRef(scope);\r\n scopeRef.current = scope;\r\n const onButtonClick = useCallback(destination => () => scopeRef.current.save(destination), []);\r\n\r\n const currentTile = useMemo(() => ({\r\n title: i18n.getString(TileConfig[tileType].title),\r\n onActionClick: onButtonClick(TileConfig[tileType].buttonRoute),\r\n buttonLabel: i18n.getString(TileConfig[tileType].buttonLabel),\r\n }), [i18n, onButtonClick, tileType]);\r\n\r\n const cardConfig = useMemo(() => ({\r\n getCardStyles: getTileStyles,\r\n cardClassName: 'insight-dashboard-tile',\r\n isLoading,\r\n config: {\r\n wide: true,\r\n header: {\r\n isRequired: true,\r\n renderHeaderText: () => currentTile.title,\r\n actions: [],\r\n onCloseTile: undefined,\r\n i18n,\r\n isLargeHeader: false,\r\n },\r\n footer: {\r\n isRequired: true,\r\n buttons: [{\r\n text: currentTile.buttonLabel,\r\n type: 'default',\r\n callback: currentTile.onActionClick,\r\n }],\r\n },\r\n content: {\r\n isShimmerRequired: false,\r\n onRenderShimmer: _.noop,\r\n },\r\n },\r\n }), [currentTile.buttonLabel, currentTile.onActionClick, currentTile.title, i18n, isLoading]);\r\n\r\n const renderContent = () => {\r\n if (isLoading) {\r\n return ;\r\n }\r\n if (!data || !data.length) {\r\n return ;\r\n }\r\n return (\r\n \r\n {tileType === 'Devices' && }\r\n {tileType === 'Countries' && }\r\n {tileType === 'PagesByVisits' && }\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n {renderContent()}\r\n \r\n );\r\n};\r\n\r\nDashboardTile.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n onActionClick: PropTypes.func,\r\n children: PropTypes.node,\r\n};\r\n\r\nDashboardTile.defaultProps = {\r\n onActionClick: undefined,\r\n children: null,\r\n};\r\n\r\nexport default DashboardTile;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getStyles } from '../../styles';\r\nimport DashboardTile from './tile';\r\nimport { usePagesByVisitsData } from '../data/usePagesByVisitsData';\r\nimport { useDevicesData } from '../data/useDevicesData';\r\nimport { useCountriesData } from '../data/useCountriesData';\r\n\r\nconst TileGroup = (props) => {\r\n const {\r\n i18n, fetchTileData, scope, instrumentation, isFilterReady,\r\n } = props;\r\n const classes = useDefaultStyles(getStyles);\r\n\r\n const {\r\n data: pageVisitedData,\r\n isLoading: isPageVisitedDataLoading,\r\n } = usePagesByVisitsData({\r\n fetchTileData, instrumentation, isFilterReady,\r\n });\r\n\r\n const {\r\n data: devicesData,\r\n isLoading: isDevicesDataLoading,\r\n } = useDevicesData({\r\n fetchTileData, instrumentation, isFilterReady,\r\n });\r\n\r\n const {\r\n data: countriesData,\r\n isLoading: isCountriesDataLoading,\r\n } = useCountriesData({\r\n fetchTileData, instrumentation, isFilterReady,\r\n });\r\n\r\n\r\n return (\r\n
\r\n {/* Left Column */}\r\n
\r\n \r\n \r\n
\r\n {/* Right Column */}\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nTileGroup.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n\r\n fetchTileData: PropTypes.func,\r\n};\r\n\r\nTileGroup.defaultProps = {\r\n fetchTileData: () => {},\r\n};\r\n\r\nexport default TileGroup;\r\n","import { useEffect, useState, useCallback } from 'react';\r\nimport { formatResponse } from './util';\r\n\r\nexport function usePagesByVisitsData({\r\n fetchTileData, instrumentation, isFilterReady,\r\n}) {\r\n const [data, setData] = useState([]);\r\n const [isLoaded, setisLoaded] = useState(false);\r\n const [isLoading, setisLoading] = useState(true);\r\n\r\n const onError = useCallback((error) => {\r\n instrumentation.error('FetchPopularPage', error, 'Default.GetWebInsights');\r\n }, [instrumentation]);\r\n\r\n\r\n useEffect(() => {\r\n if (!fetchTileData) return undefined;\r\n setisLoading(true);\r\n setisLoaded(false);\r\n if (!isFilterReady) return undefined;\r\n\r\n const cachedFetchTileData = fetchTileData('PopularPages');\r\n const PagesByVisitsPromise = cachedFetchTileData.toPromise().then((result) => {\r\n instrumentation.log('FetchPopularPage', result, 'Default.GetWebInsights');\r\n const res = formatResponse(result.PopularPagesResult, 'PopularPageURL', 'VisitorCount');\r\n setData(res);\r\n });\r\n\r\n PagesByVisitsPromise\r\n .catch(onError).finally(() => {\r\n setisLoading(false);\r\n setisLoaded(true);\r\n });\r\n\r\n\r\n return () => {\r\n cachedFetchTileData.invalidate();\r\n };\r\n }, [onError, fetchTileData, instrumentation, isFilterReady]);\r\n\r\n return {\r\n data,\r\n isLoaded,\r\n isLoading,\r\n };\r\n}\r\n","import { useEffect, useState, useCallback } from 'react';\r\nimport { formatResponse } from './util';\r\n\r\nexport function useDevicesData({\r\n fetchTileData, instrumentation, isFilterReady,\r\n}) {\r\n const [data, setData] = useState(0);\r\n const [isLoaded, setisLoaded] = useState(false);\r\n const [isLoading, setisLoading] = useState(true);\r\n\r\n const onError = useCallback((error) => {\r\n instrumentation.error('FetchDevicesData', error, 'Default.GetWebInsights');\r\n }, [instrumentation]);\r\n\r\n\r\n useEffect(() => {\r\n if (!fetchTileData) return undefined;\r\n setisLoading(true);\r\n setisLoaded(false);\r\n if (!isFilterReady) return undefined;\r\n\r\n const cachedFetchTileData = fetchTileData('Devices');\r\n const DevicesPromise = cachedFetchTileData.toPromise()\r\n .then((result) => {\r\n instrumentation.log('FetchDevicesData', result, 'Default.GetWebInsights');\r\n const res = formatResponse(result.DevicesResult, 'DeviceTypeName', 'VisitorCount');\r\n setData(res);\r\n });\r\n\r\n DevicesPromise\r\n .catch(onError).finally(() => {\r\n setisLoading(false);\r\n setisLoaded(true);\r\n });\r\n\r\n return () => {\r\n cachedFetchTileData.invalidate();\r\n };\r\n }, [onError, fetchTileData, instrumentation, isFilterReady]);\r\n\r\n return {\r\n data,\r\n isLoaded,\r\n isLoading,\r\n };\r\n}\r\n","import { useEffect, useState, useCallback } from 'react';\r\nimport { formatResponse } from './util';\r\n\r\nexport function useCountriesData({\r\n fetchTileData, instrumentation, isFilterReady,\r\n}) {\r\n const [data, setData] = useState([]);\r\n const [isLoaded, setisLoaded] = useState(false);\r\n const [isLoading, setisLoading] = useState(true);\r\n\r\n const onError = useCallback((error) => {\r\n instrumentation.error('FetchCoutriesData', error, 'Default.GetWebInsights');\r\n }, [instrumentation]);\r\n\r\n\r\n useEffect(() => {\r\n if (!fetchTileData) return undefined;\r\n setisLoading(true);\r\n setisLoaded(false);\r\n\r\n if (!isFilterReady) return undefined;\r\n\r\n const cachedFetchTileData = fetchTileData('Countries');\r\n const CountriesPromise = cachedFetchTileData.toPromise()\r\n .then((result) => {\r\n instrumentation.log('FetchCoutriesData', result, 'Default.GetWebInsights');\r\n const res = formatResponse(result.CountriesResult, 'CountryName', 'VisitorCount');\r\n setData(res);\r\n });\r\n\r\n CountriesPromise\r\n .catch(onError).finally(() => {\r\n setisLoading(false);\r\n setisLoaded(true);\r\n });\r\n\r\n return () => {\r\n cachedFetchTileData.invalidate();\r\n };\r\n }, [onError, fetchTileData, instrumentation, isFilterReady]);\r\n\r\n return {\r\n data,\r\n isLoaded,\r\n isLoading,\r\n };\r\n}\r\n","import React, { useCallback, useMemo, memo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ToolbarContainer } from '@bingads-webui-grid/toolbar-container';\r\nimport { FilterViewManager } from '@bingads-webui/filter-view-manager';\r\nimport { getToolbarEditor } from '@bingads-webui-campaign-react/toolbar-plugin';\r\n\r\nimport { SchemaI18n } from '@bingads-webui-universal/schema-i18n';\r\n\r\nexport const WebInsightsToolbar = memo(({\r\n i18n,\r\n filterService,\r\n filterConfig,\r\n}) => {\r\n const [forceHideToolbar, setForceHideToolbar] = React.useState(false);\r\n const [showToolbarUnselected, setShowToolbarUnselected] = React.useState(true);\r\n\r\n const toolbarConfig = useMemo(() => {\r\n const toolbarUnselectedConfig = new Map();\r\n [\r\n ['predicate-list', {\r\n id: 'predicate-list',\r\n type: 'custom',\r\n }],\r\n ['expander', {\r\n type: 'expander',\r\n }],\r\n ].forEach(([key, value]) => {\r\n toolbarUnselectedConfig.set(key, value);\r\n });\r\n\r\n return {\r\n toolbarUnselectedConfig,\r\n toolbarSelectedConfig: new Map(),\r\n };\r\n }, []);\r\n const [toolbarUnselectedConfig, setToolbarUnselectedConfig] = React.useState(toolbarConfig.toolbarUnselectedConfig);\r\n\r\n const resetToolbarVisibility = ({ forceHideToolbar: forceHideToolbarUpdate }) => {\r\n setForceHideToolbar(forceHideToolbarUpdate);\r\n };\r\n\r\n const updateToolbar = useCallback((newItem) => {\r\n if (!newItem || !newItem.id) {\r\n return;\r\n }\r\n const toolbarUnselectedConfigUpdated = new Map(toolbarUnselectedConfig);\r\n toolbarUnselectedConfigUpdated.set(newItem.id, newItem);\r\n setToolbarUnselectedConfig(toolbarUnselectedConfigUpdated);\r\n setShowToolbarUnselected(true);\r\n }, [toolbarUnselectedConfig]);\r\n\r\n const toolbarEditor = getToolbarEditor({ updateToolbar, toolbarConfig });\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n});\r\n\r\nWebInsightsToolbar.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n filterService: PropTypes.shape({}).isRequired,\r\n filterConfig: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nWebInsightsToolbar.defaultProps = {\r\n};\r\n","import preferenceService from '@bingads-webui-component-legacy/preference/service/index';\r\nimport { getFilters } from '@bingads-webui-component-legacy/bingads-grid/service/filter-preferences';\r\nimport appConfig from '@bingads-webui-component-legacy/config/index';\r\nimport jsdataCampaign from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport { sessionStore } from '@bingads-webui/js-data-storage';\r\n\r\nimport { getCommonFilterConfig } from '@bingads-webui-campaign/common-grid-config';\r\nimport dataContextManager from '@bingads-webui-static-legacy/summary/SummaryDataContextManager';\r\nimport { getCountryValues } from '../data/country';\r\n\r\nconst prefixKeys = (prefix, object) => Object.keys(object).reduce((acc, key) => {\r\n acc[`${prefix}'${key}'`] = object[key];\r\n return acc;\r\n}, {});\r\n\r\nconst getEntitySchema = (i18n) => {\r\n const countries = getCountryValues(i18n);\r\n\r\n return {\r\n name: 'InsightsDashboardFilters2',\r\n type: 'object',\r\n properties: {\r\n Country: {\r\n type: 'string',\r\n enum: Object.keys(countries),\r\n filterable: true,\r\n chooseType: 'checkbox',\r\n localized: prefixKeys('Enum.Country', countries),\r\n },\r\n Device: {\r\n type: 'string',\r\n enum: ['PC', 'Mobile', 'Tablet', 'Other'],\r\n filterable: true,\r\n chooseType: 'checkbox',\r\n localized: prefixKeys('Enum.Device', {\r\n PC: i18n.getString(_TL_('PC')),\r\n Mobile: i18n.getString(_TL_('Mobile')),\r\n Tablet: i18n.getString(_TL_('Tablet')),\r\n Other: i18n.getString(_TL_('Other')),\r\n }),\r\n },\r\n VisitedUrl: {\r\n type: 'string',\r\n filterable: true,\r\n operators: ['StartsWith', 'EndsWith', 'Equals'],\r\n operatorDisplayNameMap: {\r\n StartsWith: i18n.getString(_TL_('Starts with')),\r\n EndsWith: i18n.getString(_TL_('Ends with')),\r\n Equals: i18n.getString(_TL_('Equals')),\r\n },\r\n },\r\n },\r\n };\r\n};\r\n\r\nexport function getFilterConfig({\r\n i18n,\r\n}) {\r\n const schemaI18n = {\r\n property: (_, property) => property,\r\n value: (_, __, value) => value,\r\n };\r\n\r\n const titleMap = {\r\n Country: i18n.getString(_TL_('Country')),\r\n Device: i18n.getString(_TL_('Device')),\r\n VisitedUrl: i18n.getString(_TL_('Visited URL')),\r\n };\r\n\r\n const filterConfig = getCommonFilterConfig({\r\n preferenceService,\r\n featureName: 'UetInsightsDashboard',\r\n entitySchema: getEntitySchema(i18n),\r\n i18n,\r\n legacyGlobalI18n: i18n,\r\n sessionStore,\r\n preferenceStoreFactory: getFilters,\r\n globalConfig: appConfig,\r\n schemaI18nCampaign: schemaI18n,\r\n dataContextManager,\r\n jsdata: jsdataCampaign,\r\n updatePilot: false,\r\n enableCampaignWaterfall: false,\r\n getLegacySaved: false,\r\n editor: {},\r\n schemaProcessor: {\r\n updateEntitySchemaForFeatures: (schema) => {\r\n const schemaProperties = schema.properties;\r\n Object.keys(schemaProperties).forEach((property) => {\r\n schemaProperties[property].title = titleMap[property];\r\n });\r\n return schema;\r\n },\r\n },\r\n });\r\n return filterConfig;\r\n}\r\n\r\n","import React, { useEffect, useMemo, useState, useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport _ from 'underscore';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { FilterService } from '@bingads-webui/filter-service';\r\nimport { WaterfallFilterStorage, WaterfallFilterType, waterfallDateFilterProcessor } from '@bingads-webui-campaign/filter-storage';\r\nimport { notificationApi } from '@bingads-webui-react/notification-center';\r\nimport { getStyles } from '../styles';\r\nimport MetricGroup from '../components/metrics/metric-group';\r\nimport TileGroup from '../components/tiles/tileGroup';\r\nimport { WebInsightsToolbar } from '../components/web-insights-toolbar';\r\nimport { getFilterConfig } from '../components/filter-config';\r\nimport { createPayload } from '../components/data/util';\r\n\r\nconst dashboardTexts = {\r\n DashboardHeader: _TL_('How customers are engaging with your website'),\r\n DashboardFooter: _TL_('Please note that these metrics are generated from all-up website traffics not just traffic from ad clicks.'),\r\n};\r\n\r\nconst dateFormat = 'yyyy-MM-dd';\r\n\r\nconst InsightDashboardOn = (props) => {\r\n const {\r\n i18n,\r\n preferenceService,\r\n serverContext,\r\n edmTags,\r\n scope,\r\n uetDashboardInstrumentation: instrumentation,\r\n } = props;\r\n const classes = useDefaultStyles(getStyles);\r\n const [isFilterReady, setIsFilterReady] = useState(false);\r\n const [filter, setFilter] = useState(null);\r\n\r\n const waterfallFilterStorage = new WaterfallFilterStorage({ preferenceService });\r\n const dateFilter = waterfallDateFilterProcessor(\r\n waterfallFilterStorage.getFilters([WaterfallFilterType.DateFilter]),\r\n serverContext\r\n );\r\n\r\n const utcTimeZone = 50;\r\n const timeZone = _.get(serverContext.CurrentAccount, 'TimeZone') || utcTimeZone;\r\n\r\n const startDate = i18n.formatDate(new Date(dateFilter.start), { raw: dateFormat });\r\n const endDate = i18n.formatDate(new Date(dateFilter.end), { raw: dateFormat });\r\n\r\n const { filterConfig, filterService } = useMemo(() => {\r\n const newFilterConfig = getFilterConfig({ i18n });\r\n const newFilterService = new FilterService(newFilterConfig);\r\n return { filterConfig: newFilterConfig, filterService: newFilterService };\r\n }, [i18n]);\r\n\r\n const filterPayload = useMemo(() => (isFilterReady ? createPayload(filter, startDate, endDate, timeZone) : {}), [endDate, filter, isFilterReady, startDate, timeZone]);\r\n\r\n const fetchTileData = useCallback(selectedTile => edmTags['Default.GetWebInsights']\r\n .$makeCall({\r\n query: {\r\n select: [selectedTile],\r\n },\r\n payload: filterPayload,\r\n }), [edmTags, filterPayload]);\r\n\r\n const dateRangeChanged = useCallback((startDateString) => {\r\n const oldestStartDate = new Date();\r\n oldestStartDate.setMonth(oldestStartDate.getMonth() - 6);\r\n const start = new Date(startDateString);\r\n const shouldShowAlert = start < oldestStartDate;\r\n return shouldShowAlert\r\n ? notificationApi.showWarning(i18n.getString(_TL_('Web Insights will only show data for the past six months.')))\r\n : null;\r\n }, [i18n]);\r\n\r\n useEffect(() => {\r\n filterService.refreshSource();\r\n filterService.initializeCombinedFilterPromise.then(() => {\r\n setFilter(filterService.getCombinedFilter().query);\r\n }).finally(() => {\r\n setIsFilterReady(true);\r\n filterService.on('filter-state-changed', ({ filter: newFilter }) => {\r\n instrumentation.log('FilterChanged', { filter: newFilter });\r\n setFilter(newFilter.query);\r\n });\r\n });\r\n dateRangeChanged(startDate);\r\n }, [dateRangeChanged, i18n, filterService, startDate, instrumentation]);\r\n\r\n return (\r\n
\r\n
\r\n {i18n.getString(dashboardTexts.DashboardHeader)}\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
\r\n \r\n {i18n.getString(dashboardTexts.DashboardFooter)}\r\n {` ${i18n.getString(_TL_('Learn more'))}`}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nInsightDashboardOn.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n preferenceService: PropTypes.shape({\r\n getAtUserLevel: PropTypes.func.isRequired,\r\n }).isRequired,\r\n serverContext: PropTypes.shape({\r\n CurrentAccount: PropTypes.shape({\r\n TimeZone: PropTypes.number,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nexport default InsightDashboardOn;\r\n","import React, { useMemo } from 'react';\r\nimport classnames from 'classnames';\r\nimport { Spinner, SpinnerSize } from '@fluentui/react/lib/Spinner';\r\n\r\n\r\nconst InsightDashboardLoading = ({ i18n }) => {\r\n const loadingText = useMemo(() => ({\r\n loading: i18n.getString(_TL_('Loading')),\r\n }), [i18n]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default InsightDashboardLoading;\r\n\r\n","import React, { useState, useEffect, useCallback, useMemo, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { edmCampaign } from '@bingads-webui/edm-campaign';\r\n\r\nimport InsightDashboardOff from './off-view';\r\nimport InsightDashboardOn from './on-view';\r\nimport InsightDashboardLoading from './loading-view';\r\n\r\nimport { useTagData } from '../components/data/useTagData';\r\n\r\nconst instrumentationSchema = {\r\n scenario: [{\r\n name: 'UetInsightDashboard',\r\n value: 'UetInsightDashboard',\r\n activity: [\r\n {\r\n name: 'UetInsightDashboardActivity',\r\n value: 'UetInsightDashboardActivity',\r\n },\r\n ],\r\n }],\r\n};\r\n\r\nconst InsightDashboard = (props) => {\r\n const { scope, serverContext, instrumentation } = props;\r\n\r\n const instrumentationRef = useRef(instrumentation);\r\n if (!instrumentationRef.current) {\r\n instrumentationRef.current = instrumentation;\r\n }\r\n\r\n const activity = useMemo(() => {\r\n instrumentationRef.current.addScenario(instrumentationSchema);\r\n const scenario = instrumentationRef.current.UetInsightDashboard.create();\r\n const act = scenario.UetInsightDashboardActivity.create();\r\n return act;\r\n }, [instrumentationRef]);\r\n\r\n const uetDashboardInstrumentation = useMemo(() => ({\r\n error: (Action, Message, API) => activity.error({\r\n Action,\r\n Value: JSON.stringify(Message),\r\n }, API),\r\n\r\n log: (Action, Message, API) => activity.trace({\r\n Action,\r\n Message,\r\n }, API),\r\n }), [activity]);\r\n\r\n const {\r\n CurrentAccount: { Id: aid, AdvertiserCustomerID: acid },\r\n CurrentCustomer: { Id: cid },\r\n } = serverContext;\r\n\r\n const scopeTagId = useMemo(() => scope.values.tagId, [scope]);\r\n const [currentTagId, setCurrentTagId] = useState(null);\r\n const isChangingTag = useMemo(() => currentTagId !== scopeTagId, [currentTagId, scopeTagId]);\r\n\r\n useEffect(() => {\r\n if (isChangingTag) {\r\n setCurrentTagId(scopeTagId);\r\n }\r\n }, [isChangingTag, scopeTagId]);\r\n\r\n const isAgencyScenario = useMemo(() => scope.values.aid && acid && (acid !== cid), [acid, cid, scope.values.aid]);\r\n const edm = useMemo(() => (isAgencyScenario ?\r\n edmCampaign.Customers.$withKey(acid).Accounts.$withKey(aid) :\r\n edmCampaign.Customers.$withKey(cid)), [isAgencyScenario, aid, cid, acid]);\r\n const edmTag = useMemo(() => edm.Tags.$withKey(currentTagId), [currentTagId, edm.Tags]);\r\n\r\n const {\r\n data, isLoading, toggleInsightFunc, turnOnInsightFunc,\r\n } = useTagData({\r\n tagId: currentTagId, edm, edmTag, instrumentation: uetDashboardInstrumentation,\r\n });\r\n\r\n const toggleInsight = useCallback((e) => {\r\n if (!e.detail) {\r\n return;\r\n }\r\n const { isToggleOn, tagId: eventTagId } = e.detail;\r\n if (eventTagId !== currentTagId) {\r\n return;\r\n }\r\n toggleInsightFunc(isToggleOn);\r\n }, [currentTagId, toggleInsightFunc]);\r\n\r\n useEffect(() => {\r\n document.addEventListener('toggleWebInsight', toggleInsight);\r\n\r\n return () => {\r\n document.removeEventListener('toggleWebInsight', toggleInsight);\r\n };\r\n }, [toggleInsight]);\r\n\r\n const isWebInsightsEnabled = useMemo(() => data.IsWebInsightsEnabled, [data.IsWebInsightsEnabled]);\r\n\r\n return (\r\n \r\n {(isLoading || isChangingTag) && }\r\n {!isLoading && !isChangingTag && (isWebInsightsEnabled ?\r\n :\r\n )}\r\n \r\n );\r\n};\r\n\r\nInsightDashboard.propTypes = {\r\n scope: PropTypes.shape({\r\n values: PropTypes.shape({\r\n cid: PropTypes.number,\r\n aid: PropTypes.number,\r\n tagId: PropTypes.number,\r\n }),\r\n }).isRequired,\r\n serverContext: PropTypes.shape({\r\n CurrentUser: PropTypes.shape({\r\n UserId: PropTypes.string,\r\n }),\r\n CurrentCustomer: PropTypes.shape({\r\n CustomerId: PropTypes.number,\r\n Id: PropTypes.number,\r\n }),\r\n CurrentAccount: PropTypes.shape({\r\n AdvertiserCustomerID: PropTypes.number,\r\n Id: PropTypes.number,\r\n }),\r\n }).isRequired,\r\n};\r\n\r\nexport default InsightDashboard;\r\n","import _ from 'underscore';\r\nimport { useEffect, useState, useCallback, useMemo } from 'react';\r\nimport { triggerSummaryBarEvent } from '../../util';\r\n\r\nexport const useTagData = ({\r\n tagId, instrumentation, edmTag, edm,\r\n}) => {\r\n const [data, setData] = useState({ IsWebInsightsEnabled: false });\r\n const [isLoading, setisLoading] = useState(true);\r\n const [toggleInsightFunc, setToggleInsightFunc] = useState(_.noop);\r\n const [turnOnInsightFunc, setTurnOnInsightFunc] = useState(_.noop);\r\n\r\n const onError = useCallback((error) => {\r\n instrumentation.error('FetchQuickbacks', error, 'Default.GetWebInsights');\r\n }, [instrumentation]);\r\n\r\n\r\n const cachedEdmTagGet = useMemo(() => edmTag.get({}), [edmTag]);\r\n const cachedTurnOnInsight = useMemo(() => edm.Tags['Default.UpdateTagsWebInsightsSetting']\r\n .$makeCall({\r\n payload: {\r\n Tags: [\r\n {\r\n Id: tagId,\r\n IsWebInsightsEnabled: true,\r\n },\r\n ],\r\n },\r\n }), [edm.Tags, tagId]);\r\n\r\n useEffect(() => {\r\n setisLoading(true);\r\n\r\n if (tagId === null || tagId === undefined) return undefined;\r\n\r\n const TagPromise = cachedEdmTagGet.toPromise().then((response) => {\r\n setData({ ...response });\r\n setToggleInsightFunc(() => (isWebInsightsEnabled) => {\r\n setData(currentData => ({ ...currentData, IsWebInsightsEnabled: isWebInsightsEnabled }));\r\n });\r\n setTurnOnInsightFunc(() => () => cachedTurnOnInsight.toPromise().then((res) => {\r\n const newTagObj = res.value[0];\r\n instrumentation.log('UpdateTag', `Update tag ${tagId} to ${JSON.stringify(newTagObj)}`, 'EDM');\r\n setData(currentData => ({ ...currentData, IsWebInsightsEnabled: newTagObj.IsWebInsightsEnabled }));\r\n triggerSummaryBarEvent([tagId]);\r\n }));\r\n });\r\n\r\n TagPromise.catch(onError).finally(() => {\r\n setisLoading(false);\r\n });\r\n\r\n return () => {\r\n setData({ IsWebInsightsEnabled: false });\r\n setisLoading(true);\r\n cachedEdmTagGet.invalidate();\r\n cachedTurnOnInsight.invalidate();\r\n };\r\n }, [cachedEdmTagGet, cachedTurnOnInsight, instrumentation, onError, tagId]);\r\n\r\n return {\r\n data,\r\n isLoading,\r\n toggleInsightFunc,\r\n turnOnInsightFunc,\r\n };\r\n};\r\n","import _ from 'underscore';\r\nimport ko from 'knockout';\r\n\r\nexport default class ViewModel {\r\n constructor({\r\n languages,\r\n selectedLanguage,\r\n i18n,\r\n withInheritOption,\r\n disabled,\r\n }) {\r\n const Inherit = null;\r\n\r\n this.languageOptions = _.chain(languages)\r\n .sortBy()\r\n .map(language => (\r\n {\r\n Text: i18n.getString(`Language_${language}`),\r\n Value: language,\r\n }))\r\n .value();\r\n\r\n // mark inherit the first language\r\n if (withInheritOption) {\r\n this.languageOptions.unshift({\r\n Text: i18n.getString('Language_Inherit'),\r\n Value: Inherit,\r\n });\r\n }\r\n\r\n this.selectedLanguage = ko.observable(withInheritOption && !selectedLanguage ?\r\n Inherit : selectedLanguage);\r\n\r\n this.disabled = ko.observable(disabled);\r\n\r\n this.isInheritOptionSelected = () =>\r\n (withInheritOption === true) && (this.selectedLanguage() === Inherit);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { PureKnockoutView } from '@bingads-webui/knockout-view';\r\nimport template from './template.pug';\r\nimport ViewModel from './viewmodel';\r\n\r\n/**\r\n * Provide language select function, with inherit option (optional)\r\n * Trigger event selectedLanguage:updated when user selection updated\r\n */\r\nexport class LanguageSelector extends PureKnockoutView {\r\n /**\r\n * Initilize view settings\r\n *\r\n * @param {Object} param - An object containing these default options for view:\r\n * @param {Object} param.i18nStrings - view customized description settings\r\n * @param {string} param.i18nStrings.Description - the customized string for view description\r\n * @param {string} param.i18nStrings.SaveWarning -\r\n * the customized string for warning for language update\r\n * @param {Object[]} param.languages - the languages set to choose from, default empty\r\n * @param {Object[]} param.selectedLanguage - language being selected,\r\n * default the first one when withInheritOption is false,\r\n * default inheritOption when withInheritOption is true\r\n * @param {boolean} param.withInheritOption - Whether allow the option 'inherit'\r\n * @param {boolean} param.disabled - whether to disable the language selection function\r\n * @param {Object} param.i18n - the localization settings, by default return the provided key\r\n *\r\n * @returns {void} void\r\n */\r\n initialize({\r\n i18nStrings,\r\n languages = [],\r\n selectedLanguage,\r\n i18n,\r\n withInheritOption = false,\r\n disabled = false,\r\n }) {\r\n this.options = _.defaults({\r\n i18nStrings,\r\n languages,\r\n selectedLanguage,\r\n i18n,\r\n withInheritOption,\r\n disabled,\r\n descriptionId: `language_selector_description_${_.uniqueId()}`,\r\n hintId: `language_selector_hint_${_.uniqueId()}`,\r\n }, {\r\n i18nStrings: {\r\n Description: i18n.getString('Campaign_Language_Description'),\r\n SaveWarning: i18n.getString('Campaign_FinalValue_SaveWarning'),\r\n },\r\n });\r\n super.initialize(this.options);\r\n this.viewModel.selectedLanguage.subscribe((language) => {\r\n this.trigger('selectedLanguage:changed', language);\r\n }, this);\r\n }\r\n get template() {\r\n return template;\r\n }\r\n\r\n get ViewModel() {\r\n return ViewModel;\r\n }\r\n\r\n /**\r\n * Get selected language\r\n *\r\n * @returns {String} selected language\r\n */\r\n getSelectedLanguage() {\r\n return this.viewModel.selectedLanguage();\r\n }\r\n\r\n /**\r\n * Get whether the inheritOption is selected\r\n * Only make sense when withInheritOption is true\r\n * @returns {boolean} true when inheritOption is selected, other wise\r\n */\r\n isInheritOptionSelected() {\r\n return this.viewModel.isInheritOptionSelected();\r\n }\r\n}\r\n","import {\r\n CommonRepository,\r\n} from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\n\r\nexport default class LocationsRepository extends CommonRepository {\r\n get hiddenFilter() {\r\n return {\r\n query: {\r\n $or: [\r\n {\r\n Criterion: {\r\n $isof: \"'Model.LocationCriterion'\",\r\n },\r\n },\r\n {\r\n Criterion: {\r\n $isof: \"'Model.RadiusCriterion'\",\r\n },\r\n },\r\n ],\r\n },\r\n };\r\n }\r\n}\r\n","import {\r\n ColumnsConfig,\r\n ColumnLocation,\r\n} from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\n\r\nexport default class LocationsGridColumnsConfig extends ColumnsConfig {\r\n constructor({\r\n scope,\r\n level,\r\n parentView,\r\n }) {\r\n const selfColumns = [ColumnLocation];\r\n\r\n super({\r\n selfColumns,\r\n scope,\r\n level,\r\n parentView,\r\n isExcludeLocation: false,\r\n });\r\n }\r\n\r\n getColumnsConfig() {\r\n return super.getColumnsConfig('locations', undefined, false);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { InlineLocationRecommendation } from '@bingads-webui-campaign/inline-location-recommendation';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { updateGridQuery } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { shouldSupportCashbackSettings } from '@bingads-webui-campaign/personalized-offer-shared';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\n\r\nimport {\r\n TargetingScope,\r\n TargetingSettingsContext,\r\n} from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\n\r\nimport { pgridFactory } from '@bingads-webui-campaign/pgrid-factory';\r\nimport LocationsRepository from './locations-repository';\r\nimport LocationsGridColumnsConfig from './locations-grid-column-config';\r\n\r\nconst EMPTY_TEMPLATE = () => '';\r\n\r\nlet locationsEditorPromise = null;\r\nfunction getLocationsEditor(getView) {\r\n if (locationsEditorPromise === null) {\r\n locationsEditorPromise = new Promise((resolve) => {\r\n getView().then((LocationTargetsView) => {\r\n TargetingSettingsContext.LocationTargets = LocationTargetsView.default;\r\n import(/* webpackMode: 'eager' */ './locations-editor/view/locations-editor')\r\n .then((result) => {\r\n resolve(result.LocationsEditor);\r\n });\r\n });\r\n });\r\n }\r\n return locationsEditorPromise;\r\n}\r\n\r\nexport class LocationsGridView extends DeterministicWrapperView {\r\n viewFactory({\r\n router,\r\n scope,\r\n level,\r\n campaignId,\r\n adgroupId,\r\n dataSource,\r\n preferenceConfig,\r\n getGridConfig,\r\n getGridPlugins,\r\n filterService,\r\n setupDataSourceErrorHandling,\r\n renderRecommendation,\r\n getView,\r\n }) {\r\n super.setState({\r\n campaignId,\r\n adgroupId,\r\n dataSource,\r\n scope,\r\n level,\r\n });\r\n this.gridRemoved = false;\r\n this.filterService = filterService;\r\n this.router = router;\r\n this.renderRecommendation = renderRecommendation;\r\n this.getView = getView;\r\n const columnConfig = new LocationsGridColumnsConfig({\r\n scope,\r\n level,\r\n parentView: this,\r\n });\r\n\r\n this.repository = _.isUndefined(dataSource)\r\n ? new LocationsRepository({\r\n deps: {\r\n scope,\r\n level,\r\n afterFindAllCallback: _.bind(this.afterFindAllCallback, this),\r\n },\r\n }) : new dataSource.LocationsRepository({ deps: { scope, level } });\r\n\r\n const gridConfig = getGridConfig(this.repository, columnConfig);\r\n\r\n let initialGrid = true;\r\n this.grid = pgridFactory({\r\n gridConfig,\r\n plugins: getGridPlugins(this, columnConfig),\r\n preferenceConfig,\r\n });\r\n TargetingSettingsContext.logger.logMessage(\r\n 'ClientTrace',\r\n { name: 'Info', value: 0 },\r\n 'LocationsGridView.viewFactory',\r\n 'Locations grid created.'\r\n );\r\n\r\n setupDataSourceErrorHandling(this, this.repository);\r\n filterService.on('filter-state-changed', () => {\r\n if (!this.gridRemoved) {\r\n updateGridQuery(\r\n this.grid.gridView,\r\n this.filterService.getCombinedFilter(), true\r\n );\r\n }\r\n });\r\n\r\n this.grid.gridView.on('willUpdate', (changes) => {\r\n // skip the preference write for sortable header when initial the grid\r\n // as this value is already read from preference.\r\n if (initialGrid) {\r\n initialGrid = false;\r\n return;\r\n }\r\n TargetingSettingsContext.handleSortChange(changes, this.grid.gridView, gridConfig.name);\r\n });\r\n this.checkGrid('BaseGridView.buildGrid');\r\n\r\n this.grid.gridView.on('didEdit', this.onItemModified, this);\r\n this.grid.gridView.on('editInherited', this.inlineEditMultiTargets, this);\r\n this.on('inlineEdit', this.inlineEdit, this);\r\n TargetingSettingsContext.eventDispatcher.on('targeting-settings:bulkRemoved', this.onBulkRemoved, this);\r\n\r\n this.showTooMuchDataToDownloadError = false;\r\n\r\n this.grid.gridView.once('didReload', () => {\r\n this.grid.gridView.once('didRedraw', () => { this.renderRecommendation(); });\r\n });\r\n\r\n return this.grid.gridView;\r\n }\r\n\r\n get template() {\r\n return EMPTY_TEMPLATE;\r\n }\r\n\r\n onFilterUpdated() {\r\n if (this.grid.filterState.getFilterBar() && this.$('.filter-bar').children().length === 0) {\r\n this.$('.filter-bar').append(this.grid.filterState.getFilterBar().$el);\r\n }\r\n }\r\n\r\n isSmartShoppingCampaign() {\r\n const campaign = TargetingSettingsContext.pageContext.CurrentCampaign;\r\n const campaignSubType = _.result(campaign, 'CampaignSubType');\r\n return campaignSubType === 12 || campaignSubType === 'ShoppingSmartAds';\r\n }\r\n\r\n addLocations(options) {\r\n let opts = _.defaults({}, {\r\n showBidMode: false,\r\n campaign: TargetingSettingsContext.pageContext.CurrentCampaign,\r\n });\r\n if (_.isObject(options)) {\r\n opts = _.defaults({}, opts, options);\r\n }\r\n this.showLocationEditor(opts);\r\n }\r\n\r\n inlineEdit(item) {\r\n const adGroup = _.has(item, 'Campaign') ? _.extend({ Campaign: item.Campaign }, item.AdGroup) : undefined;\r\n this.showLocationEditor({\r\n campaignId: item.Campaign ? item.Campaign.Id : this.model.get('campaignId'),\r\n adgroupId: item.AdGroup.Id,\r\n criterions: [item],\r\n showBidMode: true,\r\n adGroup,\r\n campaign: _.result(item, 'Campaign'),\r\n });\r\n }\r\n\r\n inlineEditMultiTargets(items) {\r\n if (items.length === 0) {\r\n return;\r\n }\r\n\r\n const item = items[0];\r\n const adGroup = _.has(item, 'Campaign') ? _.extend({ Campaign: item.Campaign }, item.AdGroup) : undefined;\r\n this.showLocationEditor({\r\n campaignId: item.Campaign ? item.Campaign.Id : this.model.get('campaignId'),\r\n adgroupId: item.AdGroup.Id,\r\n criterions: items.reverse(),\r\n showBidMode: true,\r\n adGroup,\r\n campaign: _.result(item, 'Campaign'),\r\n });\r\n }\r\n\r\n renderInlineLocationRecommendation() {\r\n const hideToolbar = () => {\r\n this.$('.grid-toolbar').hide();\r\n this.grid.toolbar.gridToolbarGroup.hideAllToolbars();\r\n };\r\n const showToolbar = () => {\r\n this.$('.grid-toolbar').show();\r\n this.grid.toolbar.gridToolbarGroup.showAllToolbars();\r\n this.grid.gridView.off('didRedraw', hideToolbar);\r\n };\r\n this.inlineLocationRecommendation = new InlineLocationRecommendation({\r\n scope: {\r\n customerId: TargetingSettingsContext.state.get('customer_id'),\r\n accountId: TargetingSettingsContext.state.get('account_id'),\r\n campaignId: this.model.get('campaignId'),\r\n adgroupId: this.model.get('adgroupId'),\r\n },\r\n isCampaignLevelLocation: this.model.get('level') === 0,\r\n deps: TargetingSettingsContext,\r\n mapHeight: '200px',\r\n }).render();\r\n this.inlineLocationRecommendation.on('add:locations', () => this.grid.gridView.refresh(true));\r\n this.inlineLocationRecommendation.on('expand:collapse', () => {\r\n hideToolbar();\r\n this.grid.gridView.on('didRedraw', hideToolbar);\r\n });\r\n this.inlineLocationRecommendation.on('close:collapse', () => {\r\n showToolbar();\r\n });\r\n this.inlineLocationRecommendation.on('update:recommendations', (recommendations) => {\r\n if (_.size(recommendations) === 0) {\r\n showToolbar();\r\n }\r\n });\r\n this.$('.inline-location-recommendation-container').append(this.inlineLocationRecommendation.el);\r\n this.on('remove:excludedlocations', () => this.inlineLocationRecommendation.trigger('refresh'));\r\n this.on('locationsUpdated', () => this.inlineLocationRecommendation.trigger('refresh'));\r\n this.on('open:locationEditor', () => this.$('.inline-location-recommendation-container').hide());\r\n const refreshInlineRecommendation = () => {\r\n if (this.$('.editor-container .deterministic-wrapper-view').length > 0) {\r\n _.delay(() => refreshInlineRecommendation(), 100);\r\n return;\r\n }\r\n this.inlineLocationRecommendation.refreshMap();\r\n this.inlineLocationRecommendation.trigger('refresh');\r\n };\r\n this.on('close:locationEditor', () => {\r\n this.$('.inline-location-recommendation-container').show();\r\n refreshInlineRecommendation();\r\n });\r\n }\r\n\r\n renderTrunk() {\r\n this.filterService.refreshSource();\r\n this.filterService.initializeCombinedFilterPromise.then(() => {\r\n if (!this.gridRemoved) {\r\n updateGridQuery(\r\n this.grid.gridView,\r\n this.filterService.getCombinedFilter(), true\r\n );\r\n }\r\n });\r\n super.renderTrunk();\r\n return this;\r\n }\r\n\r\n shouldSupportCashbackSettings(campaign = TargetingSettingsContext.pageContext) {\r\n return shouldSupportCashbackSettings(\r\n campaign,\r\n TargetingSettingsContext.pageContext.Permissions\r\n );\r\n }\r\n\r\n showLocationEditor({\r\n campaignId,\r\n adgroupId,\r\n criterions = [],\r\n showBidMode = true,\r\n adGroup,\r\n campaign,\r\n pagePerfMarker,\r\n perfMarker,\r\n }) {\r\n this.trigger('open:locationEditor');\r\n\r\n getLocationsEditor(this.getView).then((LocationsEditor) => {\r\n if (perfMarker) {\r\n perfMarker.willInit();\r\n }\r\n const supportCashbackSettings = this.shouldSupportCashbackSettings(\r\n campaign,\r\n TargetingSettingsContext.pageContext.Permissions\r\n );\r\n this.locationsEditor = new LocationsEditor({\r\n campaignId: _.isUndefined(campaignId) ? this.model.get('campaignId') : campaignId,\r\n adgroupId: _.isUndefined(adgroupId) ? this.model.get('adgroupId') : adgroupId,\r\n scope: this.model.get('scope'),\r\n level: this.model.get('level'),\r\n criterions,\r\n showBidMode,\r\n adGroup,\r\n isSmartShoppingCampaign: this.isSmartShoppingCampaign(),\r\n supportCashbackSettings,\r\n currentCampaign: campaign || TargetingSettingsContext.pageContext.CurrentCampaign,\r\n currentAdGroup: adGroup || TargetingSettingsContext.pageContext.CurrentAdGroup,\r\n pagePerfMarker,\r\n });\r\n this.locationsEditor.on('close', _.bind(this.onClose, this));\r\n this.showEditor(this.locationsEditor);\r\n if (perfMarker) {\r\n perfMarker.done();\r\n }\r\n });\r\n }\r\n\r\n onClose(updated) {\r\n this.locationsEditor = null;\r\n this.trigger('close:locationEditor');\r\n if (updated) {\r\n this.trigger('locationsUpdated');\r\n }\r\n }\r\n\r\n onBulkRemoved(gridView) {\r\n if (this.grid && this.grid.gridView !== gridView) {\r\n this.grid.gridView.refresh(true);\r\n if (this.inlineLocationRecommendation) {\r\n this.inlineLocationRecommendation.trigger('refresh');\r\n }\r\n }\r\n }\r\n\r\n remove() {\r\n TargetingSettingsContext.eventDispatcher.off(null, null, this);\r\n if (this.inlineLocationRecommendation) {\r\n this.inlineLocationRecommendation.remove();\r\n }\r\n this.gridRemoved = true;\r\n super.remove();\r\n }\r\n\r\n getOverThresholdMessage() {\r\n const scope = this.model.get('scope');\r\n const { i18n } = TargetingSettingsContext;\r\n return _.result({\r\n [TargetingScope.Account]: i18n.getString('TargetingSettings_Grid_Location_OverThreshold_Account'),\r\n [TargetingScope.Campaign]: i18n.getString('TargetingSettings_Grid_Location_OverThreshold_Campaign'),\r\n }, scope);\r\n }\r\n\r\n gridLoadErrorHandler(data) {\r\n if (_.any(data.errors, err => err.Code === 'TooMuchDataToDownload')) {\r\n this.showTooMuchDataToDownloadError = true;\r\n } else {\r\n window.App.views.alertCenter.showError(TargetingSettingsContext.i18n.getString('GenericErrorMessage'));\r\n }\r\n }\r\n\r\n afterFindAllCallback(options, data) {\r\n if (_.has(data, 'errors')) {\r\n this.gridLoadErrorHandler(data);\r\n } else {\r\n this.grid.gridView.deselectAll();\r\n }\r\n\r\n return data;\r\n }\r\n\r\n onItemModified(model, item, property) {\r\n if (model) {\r\n let updated = false;\r\n if (property === 'BidAdjustments') {\r\n updated = item.CriterionBid.Multiplier !== model.BidMultiplier;\r\n item.CriterionBid.Multiplier = model.BidMultiplier; // eslint-disable-line no-param-reassign\r\n }\r\n\r\n if (property === 'CashbackPercent') {\r\n updated = true;\r\n }\r\n\r\n if (updated) {\r\n const unblock = withUiBlock(this.$el);\r\n this.repository.update(item)\r\n .catch(() => {\r\n window.App.views.alertCenter.showError(TargetingSettingsContext.i18n.getString('GenericErrorMessage'));\r\n })\r\n .finally(() => {\r\n this.grid.gridView.refresh(true);\r\n unblock();\r\n });\r\n }\r\n }\r\n }\r\n\r\n showEditor(view) {\r\n // use defer here to wait for the dropdown menu to hide first\r\n _.defer(() => {\r\n if (this.editorView) {\r\n this.editorView.remove();\r\n }\r\n this.editorView = view;\r\n this.grid.gridView.overrideWith(this.editorView);\r\n\r\n this.editorView.once('close', (response) => {\r\n this.grid.gridView.overrideWith(null);\r\n this.editorView.remove();\r\n this.editorView = null;\r\n\r\n if (response) {\r\n this.grid.gridView.refresh(true);\r\n }\r\n });\r\n window.scrollTo(0, 0);\r\n });\r\n }\r\n\r\n checkGrid(api) {\r\n if (_.isUndefined(this.grid)) {\r\n TargetingSettingsContext.logger.logMessage(\r\n 'ClientTrace',\r\n { name: 'Info', value: 0 },\r\n api,\r\n 'Grid has not been created.'\r\n );\r\n }\r\n }\r\n\r\n get className() {\r\n return 'locations-view';\r\n }\r\n}\r\n","import { setUpErrorHandling } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport {\r\n TargetingSettingsContext,\r\n} from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { LocationsGridView } from './locations-grid-view';\r\nimport { getConfig } from './locations-grid-config';\r\nimport { getPlugins } from './locations-grid-plugins';\r\n\r\nexport function createLocationGrid({\r\n // New UI options only\r\n filterService,\r\n router,\r\n viewport,\r\n customHeaderOffset,\r\n p$daterange,\r\n addDateChangeListener,\r\n preferenceConfig,\r\n renderRecommendation,\r\n // common options\r\n getAdditionalPlugins,\r\n dataSource,\r\n perfMarker,\r\n scope,\r\n level,\r\n gridName,\r\n campaignId,\r\n adgroupId,\r\n getView,\r\n permissions = {},\r\n}) {\r\n return new LocationsGridView({\r\n router,\r\n scope,\r\n campaignId,\r\n adgroupId,\r\n level,\r\n dataSource,\r\n filterService,\r\n preferenceConfig,\r\n renderRecommendation,\r\n getGridConfig: (repository, columnConfig) => getConfig({\r\n repository,\r\n gridName,\r\n filterService,\r\n preferenceConfig,\r\n columnConfig,\r\n viewport,\r\n customHeaderOffset,\r\n i18n: TargetingSettingsContext.i18n,\r\n permissions,\r\n }),\r\n getGridPlugins: (view, columnConfig) => getPlugins({\r\n view,\r\n columnConfig,\r\n scope,\r\n level,\r\n perfMarker,\r\n filterService,\r\n p$daterange,\r\n addDateChangeListener,\r\n }).concat(getAdditionalPlugins(view)),\r\n setupDataSourceErrorHandling: (view, repository) => setUpErrorHandling({\r\n gridView: view,\r\n scope: {\r\n campaignId,\r\n },\r\n dataSource: repository.getQuery(),\r\n i18n: TargetingSettingsContext.i18n,\r\n }),\r\n getView,\r\n });\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { sortableHeaderTemplate, validateOrder } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { TargetingSettingsContext } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\n\r\n\r\nexport function getConfig({\r\n repository,\r\n gridName,\r\n preferenceConfig,\r\n filterService,\r\n columnConfig,\r\n viewport,\r\n customHeaderOffset,\r\n i18n,\r\n permissions,\r\n}) {\r\n const headRows = ['column-header-rows'];\r\n\r\n const tableName = i18n.getString('TargetingSettings_Locations');\r\n const gridConfig = {\r\n name: gridName,\r\n logacyGridName: 'LocationsGrid',\r\n tableClasses: ['table', 'table-bordered'],\r\n tableAttributes: { 'aria-label': tableName },\r\n dataSource: repository.getDataSource(),\r\n query: repository.getQuery(),\r\n rows: {\r\n headRows,\r\n },\r\n columns: columnConfig.getColumnsConfig(),\r\n scrolling: {\r\n header: {\r\n type: 'sticky',\r\n offset: customHeaderOffset || (() => $('nav.navbar-default.navbar-fixed-top').height()),\r\n attributes: { 'aria-label': i18n.getString('{{tableName}} table header', { tableName }) },\r\n },\r\n virtualized: true,\r\n },\r\n i18n: TargetingSettingsContext.i18n,\r\n ...({\r\n selection: true,\r\n filterService,\r\n sortableHeader: {\r\n template: sortableHeaderTemplate,\r\n },\r\n }),\r\n preferenceService: TargetingSettingsContext.preferencesService,\r\n config: TargetingSettingsContext.config,\r\n };\r\n\r\n validateOrder(preferenceConfig, gridConfig.columns, 'settings_locations', permissions);\r\n gridConfig.dataSource = _.omit(gridConfig.dataSource, 'query');\r\n\r\n if (viewport) {\r\n gridConfig.scrolling.viewport = viewport;\r\n }\r\n\r\n return gridConfig;\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { aggregatedRowsPluginBuilder } from '@bingads-webui-campaign/pgrid-aggregated-rows';\r\nimport { jsdataRawDataPlugin } from '@bingads-webui-campaign/pgrid-js-data-raw-data';\r\nimport { assistedSelectionPlugin } from '@bingads-webui/projection-grid-assisted-selection';\r\nimport { dateFilterPlugin } from '@bingads-webui-campaign/projection-grid-date-filter';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { segmentPlugin } from '@bingads-webui-campaign/projection-grid-segment';\r\nimport { segmentationType, campaignSegmentationTypeEnum } from '@bingads-webui-campaign/segmentation-utilities';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { inlineDownloadWithoutFilterstatePlugin } from '@bingads-webui-campaign/projection-grid-inline-download';\r\nimport { columnChooserPlugin } from '@bingads-webui-campaign/projection-grid-column-chooser';\r\nimport { periodOverPeriodPlugin } from '@bingads-webui-campaign/projection-grid-period-over-period';\r\nimport {\r\n TargetingSettingsContext,\r\n getReportEmailRule,\r\n segmentValueCellTmpl,\r\n TargetingScope,\r\n TargetingLevel,\r\n TargetingType,\r\n getCriterionType,\r\n getLocationDisplayName,\r\n} from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\n\r\nexport function getPlugins({\r\n view,\r\n columnConfig,\r\n scope,\r\n level,\r\n perfMarker,\r\n filterService,\r\n p$daterange, // add this will disable using the state above in the plugin\r\n addDateChangeListener,\r\n}) {\r\n const columnChooserConfig = columnConfig.getColumnChooserConfig(/* isForVNext */);\r\n const { i18n } = TargetingSettingsContext;\r\n const aggregatedRowsPlugin = aggregatedRowsPluginBuilder({\r\n i18n,\r\n keys: {\r\n overallI18nKey: 'TargetingSettings_Grid_Overall',\r\n filteredI18nKey: 'TargetingSettings_Grid_Filtered',\r\n deletedI18nKey: 'TargetingSettings_Grid_OtherLocations',\r\n },\r\n helpIds: {\r\n deletedHelpId: 'pop_BA_CampaignsGrid_TotalOtherLocations',\r\n },\r\n permissions: TargetingSettingsContext.pageContext.Permissions,\r\n filterService,\r\n customConfig: {\r\n // #SEARCHAUDIENCEROWBUG\r\n // Booleans default to true, but developers omitted the string from keys.txt\r\n // Making the old (accidental?) behavior explicit until we want to confirm to change it.\r\n showSearchRow: false,\r\n showAudienceRow: false,\r\n },\r\n });\r\n columnChooserConfig.customToolbarIcon = 'ba-TripleColumnSolid';\r\n const entity = (scope === TargetingScope.AdGroup || level === TargetingLevel.AdGroup)\r\n ? 'AdGroupCriterion'\r\n : 'CampaignCriterion';\r\n return _.compact([{\r\n // For accurate grid init latency, PerfMarkerPlugin should be the first plugin to load.\r\n plugin: perfMarkerPlugin,\r\n config: {\r\n appConfig: TargetingSettingsContext.config,\r\n marker: perfMarker,\r\n },\r\n }, {\r\n plugin: paginationPlugin,\r\n config: {\r\n availablePageSizes: [20, 50, 100, 200],\r\n enableRandomPage: false,\r\n pageSizeText: i18n.getString('Grid_ShowRows'),\r\n totalPageCountText: i18n.getString('Grid_PageOf'),\r\n ...({\r\n pageSize: 20,\r\n pageNumberLabelText: i18n.getString('Grid_Page_Colon'),\r\n }),\r\n },\r\n }, ...[\r\n {\r\n plugin: inlineDownloadWithoutFilterstatePlugin,\r\n config: {\r\n isForVNext: true,\r\n p$daterange,\r\n DownloadView: TargetingSettingsContext.DownloadView,\r\n i18n: TargetingSettingsContext.i18n,\r\n s$i18n: TargetingSettingsContext.s$i18n,\r\n isAvailable: true,\r\n schema: TargetingSettingsContext[`s$${entity}`],\r\n gridId: 'LocationsGrid',\r\n ReportEmailRule: getReportEmailRule(entity),\r\n },\r\n }], {\r\n plugin: TargetingSettingsContext.bidAdjustmentBulkEditPlugin,\r\n ...({\r\n config: {\r\n gridType: _.invert(TargetingType)[TargetingType.Locations],\r\n entity,\r\n formatEntityString: Criterion => getLocationDisplayName({ Criterion }),\r\n isForVNext: true,\r\n },\r\n }),\r\n }, {\r\n plugin: segmentPlugin,\r\n config: {\r\n cellTemplates: {\r\n Location: segmentValueCellTmpl,\r\n },\r\n isOdataActionSource: true,\r\n segmentationTypes: _.difference(campaignSegmentationTypeEnum, [\r\n segmentationType.GoalName,\r\n segmentationType.GoalType,\r\n segmentationType.AudienceName,\r\n segmentationType.AudienceType,\r\n ]),\r\n permissions: TargetingSettingsContext.pageContext.Permissions,\r\n edm: TargetingSettingsContext.edmCampaign,\r\n i18n: TargetingSettingsContext.i18n,\r\n state: TargetingSettingsContext.state,\r\n setSegType: TargetingSettingsContext.segmentPreference.setSegType,\r\n getSegType: TargetingSettingsContext.segmentPreference.getSegType,\r\n },\r\n }, !TargetingSettingsContext.config.get('CurrentAccountInActive') &&\r\n !TargetingSettingsContext.pageContext.Permissions.IsReadOnlyUser && {\r\n plugin: editablePlugin,\r\n config: { i18n },\r\n }, {\r\n plugin: uiBlockerPlugin,\r\n config: { el: $('.locations-page') },\r\n }, {\r\n plugin: periodOverPeriodPlugin,\r\n config: { i18n },\r\n }, {\r\n plugin: columnChooserPlugin,\r\n config: columnChooserConfig,\r\n }, {\r\n plugin: TargetingSettingsContext.removeBulkEditPlugin,\r\n ...({\r\n config: {\r\n isForVNext: true,\r\n type: 'button',\r\n id: 'bulk-edit-remove',\r\n gridType: _.invert(TargetingType)[TargetingType.Locations],\r\n entity: getCriterionType(view),\r\n view,\r\n disabled: TargetingSettingsContext.pageContext.Permissions.IsReadOnlyUser\r\n || TargetingSettingsContext.config.get('CurrentAccountInActive'),\r\n },\r\n }),\r\n }, {\r\n plugin: dateFilterPlugin,\r\n config: {\r\n isOdataActionSource: true,\r\n comparisonColumns: [\r\n 'PeriodPerformanceMetrics',\r\n 'PerformanceMetricsChange',\r\n 'PerformanceMetricsChangePercentage',\r\n ],\r\n edm: TargetingSettingsContext.edmCampaign,\r\n state: TargetingSettingsContext.state,\r\n addDateChangeListener: addDateChangeListener || ((handler) => {\r\n if (window.App && window.App.views && window.App.views.Summary) {\r\n // TODO refactor and remove global dependency\r\n window.App.views.Summary.bindDateFilterChangeHandler(handler);\r\n }\r\n }),\r\n // add this will disable using the state above in the plugin\r\n p$daterange,\r\n },\r\n }, {\r\n plugin: assistedSelectionPlugin,\r\n }, {\r\n plugin: a11yPlugin,\r\n config: { i18n },\r\n }, {\r\n plugin: aggregatedRowsPlugin,\r\n }, {\r\n plugin: jsdataRawDataPlugin,\r\n }]);\r\n}\r\n","import { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { TargetingSettingsContext, TargetingLevel } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { isMSStoreAdsCampaign } from '@bingads-webui-campaign-react/ms-store-ads-common';\r\nimport physicalIntentOptions from '@bingads-webui-campaign-legacy/location-targets/viewmodel/physicalIntentOptions';\r\n\r\nexport class LocationTargetView extends DeterministicWrapperView {\r\n viewFactory({\r\n level,\r\n campaignId,\r\n adgroupId,\r\n criterions,\r\n showBidMode,\r\n isDSACampaign,\r\n isSmartShoppingCampaign,\r\n supportCashbackSettings = false,\r\n currentCampaign,\r\n currentAdGroup,\r\n perfMarker,\r\n }) {\r\n const scenario = this.getScenario(isSmartShoppingCampaign, level);\r\n this.supportCashbackSettings = supportCashbackSettings;\r\n const isAudienceCampaign = currentCampaign && (currentCampaign.CampaignType === 'Audience' || currentCampaign.CampaignType === 8);\r\n const hideAudience = isSmartShoppingCampaign ||\r\n (currentCampaign && isAudienceCampaign && scenario === 'adgroup-settings');\r\n const isMSStoreAdsGAWorkflow = isMSStoreAdsCampaign(currentCampaign);\r\n\r\n this.locationTargets = new TargetingSettingsContext.LocationTargets({\r\n campaignId,\r\n adgroupId,\r\n scenario,\r\n editCriterions: criterions,\r\n showBidMode,\r\n fromSettingsGrid: true,\r\n isDSACampaign,\r\n isForVNext: true,\r\n hideAudience,\r\n supportCashbackSettings,\r\n currentCampaign,\r\n currentAdGroup,\r\n perfMarker,\r\n showPhysicalIntentView: !isMSStoreAdsGAWorkflow && !isAudienceCampaign,\r\n physicalIntent: isMSStoreAdsGAWorkflow ? physicalIntentOptions.PeopleIn : undefined,\r\n popupIds: isMSStoreAdsGAWorkflow ? {\r\n Location: 'pop_BA_StoreAds_Location',\r\n } : undefined,\r\n });\r\n this.locationTargets.on('closeLocationEditor', () => this.trigger('closeLocationEditor'));\r\n return this.locationTargets;\r\n }\r\n\r\n getScenario(isSmartShoppingCampaign, level) {\r\n if (level !== TargetingLevel.Campaign) {\r\n return 'adgroup-settings';\r\n }\r\n if (isSmartShoppingCampaign) {\r\n return 'smart-shopping-campaign';\r\n }\r\n return 'campaign-settings';\r\n }\r\n\r\n setState({\r\n campaignId,\r\n adgroupId,\r\n }) {\r\n this.locationTargets.setCampaignId(campaignId);\r\n this.locationTargets.setAdGroupId(adgroupId);\r\n this.locationTargets.refreshLocationData();\r\n return this;\r\n }\r\n\r\n validate() {\r\n return this.locationTargets.validate();\r\n }\r\n\r\n save() {\r\n return this.locationTargets.checkIMAReachAndSave();\r\n }\r\n\r\n updatedCriterionsCount() {\r\n const criterions = this.locationTargets.getValues();\r\n return criterions.deletedLocations.length +\r\n criterions.locations.length + criterions.intent.length;\r\n }\r\n\r\n hasErrors() {\r\n const errors = this.locationTargets.viewmodel.errors();\r\n return errors && errors.length;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport ko from 'knockout';\r\nimport { TargetingScope, TargetingLevel } from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\n\r\nexport default class ViewModel {\r\n constructor(options = {}) {\r\n this.options = options;\r\n this.scope = options.scope;\r\n this.level = options.level;\r\n this.criterions = options.criterions;\r\n this.showBidMode = ko.observable(true);\r\n this.selectedCampaign = ko.observable();\r\n this.selectedAdgroup = ko.observable();\r\n this.shouldShowCampaignAdgroupSelector = ko.computed(() =>\r\n (_.isUndefined(this.options.adgroupId) || !options.hideSelectorControl) &&\r\n (this.scope === TargetingScope.Account ||\r\n (this.scope === TargetingScope.Campaign && this.level === TargetingLevel.AdGroup)));\r\n this.shouldShowLocationsEditor = ko.computed(() =>\r\n this.selectedCampaign() || this.selectedAdgroup());\r\n this.shouldEnableSave = ko.computed(() =>\r\n this.showBidMode() && (this.selectedCampaign() || this.selectedAdgroup()));\r\n this.shouldShowHighLantencyNote = ko.observable(false);\r\n }\r\n}\r\n","import ko from 'knockout';\r\nimport _ from 'underscore';\r\nimport { helpers, DeterministicView } from '@bingads-webui/deterministic-view';\r\nimport { shouldSupportCashbackSettings } from '@bingads-webui-campaign/personalized-offer-shared';\r\nimport {\r\n TargetingLevel,\r\n TargetingSettingsContext,\r\n CampaignAdgroupSelectorVnext,\r\n} from '@bingads-webui-campaign/targeting-settings-scaffolds';\r\nimport { LocationTargetView } from './location-target-view';\r\nimport ViewModel from '../viewmodel/locations-editor';\r\nimport Template from '../template/locations-editor.pug';\r\n\r\nconst { ensureChildView } = helpers;\r\n\r\nexport class LocationsEditor extends DeterministicView {\r\n initialize({\r\n scope,\r\n level,\r\n campaignId,\r\n adgroupId,\r\n criterions,\r\n showBidMode,\r\n adGroup,\r\n isSmartShoppingCampaign,\r\n supportCashbackSettings = false,\r\n currentAdGroup,\r\n currentCampaign,\r\n pagePerfMarker,\r\n }) {\r\n this.pagePerfMarker = pagePerfMarker;\r\n this.i18n = TargetingSettingsContext.i18n;\r\n // hide campaign/adgroup selector when inline editing at adgroup level in adgroup scope\r\n const hideSelectorControl = _.isUndefined(adGroup);\r\n this.viewmodel = new ViewModel({\r\n scope,\r\n level,\r\n campaignId,\r\n adgroupId,\r\n criterions,\r\n hideSelectorControl,\r\n });\r\n this.supportCashbackSettings = supportCashbackSettings;\r\n\r\n TargetingSettingsContext.eventDispatcher.on('location-targets:modeChanged', (bidMode) => {\r\n this.viewmodel.showBidMode(bidMode);\r\n }, this);\r\n const { IsPersonalizedOffersEnabled } = TargetingSettingsContext.pageContext.Permissions;\r\n\r\n if (this.viewmodel.shouldShowCampaignAdgroupSelector()) {\r\n const selectedCampaign = adGroup && adGroup.Campaign ? _.extend({\r\n name: adGroup.Campaign.Name,\r\n status: adGroup.Campaign.Status,\r\n }, _.pick(adGroup.Campaign, 'Id', 'Name', 'Status', 'CampaignCashback')) : null;\r\n const selectedAdGroup = adGroup && adGroup.Campaign ? _.extend({\r\n name: adGroup.Name,\r\n status: adGroup.Status,\r\n campaignId: adGroup.Campaign.Id,\r\n campaignName: adGroup.Campaign.Name,\r\n }, _.pick(adGroup, 'Id', 'Name', 'Status', 'AdGroupCashback', 'Campaign')) : null;\r\n\r\n let optionalSelectorParam = {\r\n optionalCampaignSelect: ['BiddingScheme'],\r\n };\r\n\r\n if (IsPersonalizedOffersEnabled) {\r\n optionalSelectorParam = {\r\n optionalCampaignSelect: ['CampaignCashback', 'BiddingScheme'],\r\n optionalAdGroupSelect: ['AdGroupCashback'],\r\n optionalAdGroupExpand: ['CampaignCashback'],\r\n };\r\n } else {\r\n optionalSelectorParam = {\r\n optionalCampaignSelect: ['BiddingScheme'],\r\n optionalAdGroupExpand: ['CampaignSettings'],\r\n };\r\n }\r\n\r\n let optionalCampaignFilter;\r\n if (level === TargetingLevel.AdGroup) {\r\n // adgroup location is not supported for SSC, Hotel, Pmax and LinkedIn\r\n optionalCampaignFilter = '(CampaignSubType ne Enum.CampaignSubType\\'ShoppingSmartAds\\') and (CampaignType ne Enum.CampaignType\\'Hotel\\') and (CampaignType ne Enum.CampaignType\\'PerformanceMax\\') and (CampaignType ne Enum.CampaignType\\'LinkedIn\\')';\r\n } else {\r\n // campaign location is not supported for Xandr related campaigns\r\n // LinkedIn campaign didn't support create Location target from Location Gid\r\n optionalCampaignFilter = '(CampaignSubType ne Enum.CampaignSubType\\'BrandAwarenessVideoAds\\') and (CampaignSubType ne Enum.CampaignSubType\\'DisplayAds\\') and (CampaignType ne Enum.CampaignType\\'LinkedIn\\')';\r\n }\r\n\r\n ensureChildView(\r\n this,\r\n 'campaign-adgroup-selector',\r\n CampaignAdgroupSelectorVnext,\r\n {\r\n scope,\r\n level,\r\n campaignId,\r\n i18n: this.i18n,\r\n selectedCampaign,\r\n selectedAdGroup,\r\n optionalCampaignFilter,\r\n optionalAdgroupFilter: '(Campaign/CampaignType ne Enum.CampaignType\\'Hotel\\') and (Campaign/CampaignType ne Enum.CampaignType\\'PerformanceMax\\')',\r\n ...optionalSelectorParam,\r\n },\r\n {\r\n campaignSelected: 'onCampaignSelected',\r\n adgroupSelected: 'onAdgroupSelected',\r\n }\r\n );\r\n if (selectedAdGroup && level === TargetingLevel.AdGroup) {\r\n this.onAdgroupSelected(selectedAdGroup);\r\n } else if (selectedCampaign && level === TargetingLevel.Campaign) {\r\n this.onCampaignSelected(selectedCampaign);\r\n }\r\n } else {\r\n this.setState({\r\n level,\r\n campaignId,\r\n adgroupId,\r\n criterions,\r\n showBidMode,\r\n isSmartShoppingCampaign,\r\n supportCashbackSettings,\r\n currentAdGroup,\r\n currentCampaign,\r\n });\r\n }\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click .btn-save': 'save',\r\n 'click .btn-cancel': 'cancel',\r\n };\r\n }\r\n\r\n get template() {\r\n return Template;\r\n }\r\n\r\n renderTrunk() {\r\n ko.cleanNode(this.el);\r\n super.renderTrunk();\r\n this.delegateEvents();\r\n ko.applyBindings(this.viewmodel, this.el);\r\n return this;\r\n }\r\n\r\n save() {\r\n if (!this.locationTargetView || !this.locationTargetView.validate()) {\r\n return;\r\n }\r\n\r\n const highLatencyThreshold = 3000;\r\n if (this.locationTargetView.updatedCriterionsCount() > highLatencyThreshold) {\r\n this.viewmodel.shouldShowHighLantencyNote(true);\r\n }\r\n\r\n const response = this.locationTargetView.save();\r\n if (response) {\r\n response.then((triggerClose) => {\r\n if (triggerClose !== false && !this.locationTargetView.hasErrors()) {\r\n this.trigger('close', true);\r\n }\r\n });\r\n }\r\n }\r\n\r\n cancel() {\r\n this.trigger('close');\r\n }\r\n\r\n setState({\r\n level,\r\n campaignId,\r\n adgroupId,\r\n criterions,\r\n showBidMode,\r\n isSmartShoppingCampaign,\r\n supportCashbackSettings,\r\n currentCampaign,\r\n currentAdGroup,\r\n }) {\r\n // Split location editor marker into two marker\r\n // Because we may need wait user to select campaign or adgroup\r\n // This marker is used to record data fetch and render latency\r\n if (this.pagePerfMarker) {\r\n this.perfMarker = this.pagePerfMarker.createChild('Locations_Editor_Render', { autoEnd: true });\r\n this.perfMarker.willInit();\r\n }\r\n this.viewmodel.selectedCampaign(campaignId);\r\n this.viewmodel.selectedAdgroup(adgroupId);\r\n this.showLocationTargetView({\r\n level,\r\n campaignId,\r\n adgroupId,\r\n criterions,\r\n showBidMode,\r\n isSmartShoppingCampaign,\r\n supportCashbackSettings,\r\n currentCampaign,\r\n currentAdGroup,\r\n });\r\n }\r\n\r\n showLocationTargetView({\r\n level,\r\n campaignId,\r\n adgroupId,\r\n criterions,\r\n showBidMode,\r\n isSmartShoppingCampaign,\r\n currentCampaign,\r\n currentAdGroup,\r\n }) {\r\n if (this.getChild('location-target-view')) {\r\n this.detachChild('location-target-view').remove();\r\n }\r\n this.locationTargetView = new LocationTargetView({\r\n level,\r\n campaignId,\r\n adgroupId,\r\n criterions,\r\n showBidMode,\r\n isSmartShoppingCampaign,\r\n supportCashbackSettings: this.supportCashbackSettings,\r\n currentCampaign,\r\n currentAdGroup,\r\n perfMarker: this.perfMarker,\r\n });\r\n if (isSmartShoppingCampaign) {\r\n this.viewmodel.showBidMode(true);\r\n }\r\n this.locationTargetView.on('closeLocationEditor', () => this.trigger('close', true));\r\n this.setChild('location-target-view', this.locationTargetView);\r\n const forceRenderFlag = this.model.get('forceRenderFlag');\r\n return super.setState({\r\n level,\r\n campaignId,\r\n adgroupId,\r\n forceRenderFlag: !forceRenderFlag,\r\n });\r\n }\r\n\r\n onCampaignSelected(campaign) {\r\n this.supportCashbackSettings = shouldSupportCashbackSettings(\r\n campaign,\r\n TargetingSettingsContext.pageContext.Permissions\r\n );\r\n\r\n this.setState({\r\n level: this.viewmodel.level,\r\n campaignId: campaign.Id,\r\n criterions: this.viewmodel.criterions,\r\n showBidMode: this.locationTargetView ?\r\n this.locationTargetView.locationTargets.viewmodel.bidMode() :\r\n this.options.showBidMode,\r\n isSmartShoppingCampaign: campaign.CampaignSubType === 'ShoppingSmartAds' || campaign.CampaignSubType === 12,\r\n currentCampaign: campaign,\r\n });\r\n this.viewmodel.criterions = undefined;\r\n }\r\n\r\n onAdgroupSelected(adgroup) {\r\n // mock\r\n // adgroup.Campaign.CashbackSettings = { CashbackMonthlyBudget: 1 }; // eslint-disable-line\r\n const supportCashbackSettings = shouldSupportCashbackSettings(\r\n adgroup.Campaign,\r\n TargetingSettingsContext.pageContext.Permissions\r\n );\r\n this.supportCashbackSettings = supportCashbackSettings;\r\n\r\n this.setState({\r\n level: this.viewmodel.level,\r\n campaignId: adgroup.campaignId,\r\n adgroupId: adgroup.Id,\r\n criterions: this.viewmodel.criterions,\r\n showBidMode: this.locationTargetView ?\r\n this.locationTargetView.locationTargets.viewmodel.bidMode() :\r\n this.options.showBidMode,\r\n currentCampaign: adgroup.Campaign,\r\n currentAdGroup: adgroup,\r\n });\r\n this.viewmodel.criterions = undefined;\r\n }\r\n\r\n remove() {\r\n TargetingSettingsContext.eventDispatcher.off(null, null, this);\r\n super.remove();\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nimport pkg from './package.json';\r\n\r\nexport function getNegativeKeywordsListsGridFactory(initializeGlobalContext = true) {\r\n if (initializeGlobalContext) {\r\n return globalContext.define(\r\n pkg.legacyDependencies,\r\n Promise => import(/* webpackMode: 'eager' */ './src/factory') // eslint-disable-line no-unused-vars\r\n );\r\n }\r\n return import(/* webpackMode: 'eager' */ './src/factory'); // eslint-disable-line no-unused-vars\r\n}\r\n","import { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { pgridFactory } from '@bingads-webui-campaign/pgrid-factory';\r\nimport { updateGridQuery } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { merge } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nconst { handleSortChange } = globalContext.require('campaignui/feature/bingadsgrid/service/state-manager-helper');\r\n\r\nexport class NegativeKeywordListGrid extends DeterministicWrapperView {\r\n viewFactory({\r\n scope,\r\n i18n,\r\n filterService,\r\n preferenceConfig,\r\n getGridConfig,\r\n setupDataSourceErrorHandling,\r\n getPlugins,\r\n isForVNext,\r\n }) {\r\n this.scope = scope;\r\n this.i18n = i18n;\r\n this.filterService = filterService;\r\n\r\n setupDataSourceErrorHandling(this);\r\n\r\n const gridConfig = merge(getGridConfig(this), preferenceConfig);\r\n\r\n this.grid = pgridFactory({\r\n gridConfig,\r\n plugins: getPlugins(this),\r\n preferenceConfig,\r\n });\r\n\r\n if (isForVNext) {\r\n this.filterService.on('filter-state-changed', () => {\r\n updateGridQuery(\r\n this.grid.gridView,\r\n this.filterService.getCombinedFilter(), true\r\n );\r\n });\r\n }\r\n\r\n this.grid.gridView.on('willUpdate', (changes) => {\r\n // a preference patch is sent while grid is being loaded\r\n // to avoid that only handle sort change when the grid is ready\r\n const { _isRendered } = this.grid.gridView;\r\n if (_isRendered) {\r\n handleSortChange(changes, this.grid.gridView, gridConfig.name);\r\n }\r\n });\r\n\r\n return this.grid.gridView;\r\n }\r\n get className() { return 'negative-keywords-lists-grid'; }\r\n\r\n renderTrunk() {\r\n if (this.isForVNext) {\r\n this.filterService.refreshSource();\r\n this.filterService.initializeCombinedFilterPromise.then(() => {\r\n updateGridQuery(\r\n this.grid.gridView,\r\n this.filterService.getCombinedFilter(), true\r\n );\r\n });\r\n }\r\n super.renderTrunk();\r\n }\r\n\r\n remove() {\r\n this.gridRemoved = true;\r\n return super.remove();\r\n }\r\n}\r\n","import { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\n\r\nexport class CampaignColumn extends CampaignuiBaseColumn {\r\n constructor({ i18n }) {\r\n super({\r\n name: 'Campaign',\r\n property: 'EntityName',\r\n title: i18n.getString('ColumnName_Campaign'),\r\n sortable: 'EntityName',\r\n type: 'string',\r\n bodyClasses: ['grid-column-Campaign'],\r\n });\r\n }\r\n}\r\n","import { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport clickableValueTemplate from './clickable-value.pug';\r\n\r\nexport class ListNameColumn extends CampaignuiBaseColumn {\r\n constructor({ i18n, scope }) {\r\n super({\r\n name: 'Name',\r\n property: ['SharedEntityName', 'SharedEntityId'],\r\n title: i18n.getString('ColumnName_NegativeKeywordList_Name'),\r\n sortable: 'SharedEntityName',\r\n type: 'string',\r\n bodyClasses: ['grid-column-negative-keyword-list-name'],\r\n });\r\n\r\n this.scope = scope;\r\n this.i18n = i18n;\r\n }\r\n\r\n pickProperty({ SharedEntityId, SharedEntityName }) {\r\n const { customerId: cid, accountId: aid } = this.scope;\r\n\r\n return {\r\n name: SharedEntityName,\r\n nkl: SharedEntityId,\r\n cid,\r\n aid,\r\n pathname: '/campaign/vnext/negativekeywordslistsdetails/negativekeywords',\r\n href: `/campaign/vnext/negativekeywordslistsdetails/negativekeywords?cid=${cid}&aid=${aid}&nkl=${SharedEntityId}`,\r\n customparams: `nkl=${SharedEntityId}`,\r\n ariaLabel: this.i18n.getString('Click to open negative keywords list {{nklName}}', { nklName: SharedEntityName }),\r\n };\r\n }\r\n\r\n get template() { return clickableValueTemplate; }\r\n}\r\n","import _ from 'underscore';\r\n\r\nimport { ColumnsConfigBuilder } from '@bingads-webui-campaign/summary-grid-helper';\r\n\r\nimport { CampaignColumn } from './attributes/campaign';\r\nimport { ListNameColumn } from './attributes/list-name';\r\n\r\nexport function getColumnsConfig({ options }) {\r\n let builder;\r\n const { scope: { campaignId } } = options;\r\n\r\n if (campaignId) {\r\n builder = new ColumnsConfigBuilder()\r\n .addCategory('Attribute', category => category.addColumns(_.compact([\r\n ListNameColumn,\r\n ])));\r\n } else {\r\n builder = new ColumnsConfigBuilder()\r\n .addCategory('Attribute', category => category.addColumns(_.compact([\r\n CampaignColumn,\r\n ListNameColumn,\r\n ])));\r\n }\r\n return builder.getColumnsConfig(options);\r\n}\r\n\r\n","import $ from 'jquery';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { helpers } from '@bingads-webui/projection-grid-toolbar';\r\nimport { sortableHeaderTemplate } from '@bingads-webui-campaign/summary-grid-helper';\r\n\r\nimport { getColumnsConfig } from './columns/index';\r\n\r\nconst stateManager = globalContext.require('StateManager/CampaignStateManager');\r\nconst preferenceService = globalContext.requireDefault('component/preference/service/index');\r\nconst appConfig = globalContext.require('component/config/index');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/keywords-tab');\r\n\r\nconst { singleToolbarHeadRows } = helpers;\r\n\r\nexport function getConfig({\r\n dataSource,\r\n scope,\r\n gridView,\r\n customHeaderOffset,\r\n filterService,\r\n isForVNext,\r\n viewport,\r\n}) {\r\n const tableName = i18n.getString('SharedLibrary_NegativeKeyword_Subtab');\r\n\r\n return {\r\n name: 'summary_tab_negative_keyword_list',\r\n legacyGridName: 'NegativeKeywordLibraryCampaignAssociationsGrid',\r\n tableClasses: ['table', 'table-bordered'],\r\n tableAttributes: { 'aria-label': tableName },\r\n dataSource,\r\n selection: true,\r\n rows: {\r\n headRows:\r\n isForVNext\r\n ? [\r\n 'column-header-rows',\r\n ]\r\n : singleToolbarHeadRows(),\r\n },\r\n columns: getColumnsConfig({\r\n options: {\r\n i18n,\r\n scope,\r\n gridView,\r\n isForVNext,\r\n },\r\n }),\r\n scrolling: {\r\n header: {\r\n type: 'sticky',\r\n offset: customHeaderOffset || (() => $('.sticky-container').height()),\r\n attributes: { 'aria-label': i18n.getString('{{tableName}} table header', { tableName }) },\r\n },\r\n virtualized: true,\r\n viewport,\r\n },\r\n filterService,\r\n stateManager,\r\n preferenceService,\r\n config: appConfig,\r\n sortableHeader: {\r\n template: sortableHeaderTemplate,\r\n },\r\n i18n,\r\n };\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport { jsdataRawDataPlugin } from '@bingads-webui-campaign/pgrid-js-data-raw-data';\r\nimport { inlineErrorPlugin } from '@bingads-webui/projection-grid-inline-error';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { performanceLogPlugin, perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { assistedSelectionPlugin } from '@bingads-webui/projection-grid-assisted-selection';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { getPGridColumnResizePlugin } from '@bingads-webui-campaign/projection-grid-column-resize-helper';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/keywords-tab');\r\nconst appState = globalContext.require('component/state/index');\r\nconst appConfig = globalContext.require('component/config/index');\r\nconst logger = globalContext.require('module/service/instrumentation/index');\r\nconst permissions = appConfig.get('Permissions');\r\nconst preferenceService = globalContext.requireDefault('component/preference/service/index');\r\n\r\nexport function getPlugins({\r\n isForVNext,\r\n perfMarker,\r\n}) {\r\n appState.unset('$ReportEmailRule');\r\n\r\n return _.compact([{\r\n // For accurate grid init latency, PerfMarkerPlugin should be the first plugin to load.\r\n plugin: perfMarkerPlugin,\r\n config: {\r\n appConfig,\r\n marker: perfMarker,\r\n },\r\n }, !appConfig.get('CurrentAccountInActive') && !permissions.IsReadOnlyUser && {\r\n plugin: editablePlugin,\r\n config: { i18n },\r\n }, {\r\n plugin: paginationPlugin,\r\n config: {\r\n availablePageSizes: [20, 50, 100, 200],\r\n enableRandomPage: false,\r\n pageNumberLabelText: isForVNext ? '' : i18n.getString('Grid_Page_Number_Label_Text'),\r\n pageSizeText: i18n.getString('Grid_ShowRows'),\r\n totalPageCountText: i18n.getString('Grid_PageOf'),\r\n },\r\n }, {\r\n plugin: performanceLogPlugin,\r\n config: { appConfig, logger },\r\n }, {\r\n plugin: assistedSelectionPlugin,\r\n }, {\r\n plugin: a11yPlugin,\r\n config: { i18n },\r\n }, {\r\n plugin: jsdataRawDataPlugin,\r\n }, {\r\n plugin: uiBlockerPlugin,\r\n config: { el: $(isForVNext ? '.negative-keywords-lists-page' : '#child-page') },\r\n }, {\r\n plugin: inlineErrorPlugin({\r\n errorIconClasses: ['grid-error'],\r\n }),\r\n },\r\n getPGridColumnResizePlugin({\r\n gridName: 'summary_tab_negative_keyword_list',\r\n preferenceService,\r\n permissions,\r\n }),\r\n ]);\r\n}\r\n","import Backbone from 'backbone';\r\nimport ko from 'knockout';\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { CampaignSelectorProxy } from '@bingads-webui-campaign-react/campaign-adgroup-selector-control';\r\n\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport template from './create-negative-keywords.pug';\r\n\r\nglobalContext.require('module/app/layout/index'); // eslint-disable-line no-unused-vars\r\nglobalContext.require('component/double-list-box/ko/doubleListBoxBinding'); // eslint-disable-line no-unused-vars\r\nconst help = globalContext.require('component/help/index');\r\nconst jsData = globalContext.require('component/js-data-campaign/index');\r\nconst edm = globalContext.requireDefault('component/edm-campaign/index');\r\nconst campignSelectori18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/campaign-adgroup-selector');\r\nconst appConfig = globalContext.require('component/config/index');\r\n\r\nconst permissions = appConfig.get('Permissions');\r\n\r\n\r\nclass CreateNegativeKeywordAssociationViewModel {\r\n constructor({\r\n gridType,\r\n i18n,\r\n scope,\r\n showSelector,\r\n accountLevel,\r\n }) {\r\n this.fetchListsUrl = `/campaign/NegativeKeywordLibrary/LoadLibrariesByAccount?aid=${$.advertiser.getUrlParameter('aid')}&cid=${$.advertiser.getUrlParameter('cid')}&uid=${$.advertiser.getUrlParameter('uid')}`;\r\n this.selectorControl = ko.observable();\r\n this.selectedCampaignId = ko.observable();\r\n this.selectedAdgroupId = ko.observable();\r\n this.selectorError = ko.observable();\r\n this.selectedLists = ko.observableArray();\r\n this.scope = this.createSelectorScopeObject(scope);\r\n this.showAdgroupSelector = gridType === 'adgroup';\r\n this.showCampaignSelector = !scope.values.campaignId;\r\n this.showSelector = showSelector;\r\n this.accountLevel = accountLevel;\r\n this.selectorLabel = this.showSelector ?\r\n '' :\r\n i18n.getString(_TL_('CampaignAdGroupSelector_SelectCampaign'));\r\n this.showSelectorErrorMessage = ko.observable(true);\r\n this.selectorErrorMessage = ko.observable('');\r\n this.shouldEnableSave = ko.computed(() => this.selectedCampaignId());\r\n this.multiSelectOptions = {\r\n strings: {\r\n sourceItems: i18n.getString('NegativeKeywordList_Association_AvailableLists'),\r\n selectedItems: i18n.getString('NegativeKeywordList_Association_SelectedLists'),\r\n select: i18n.getString('DoubleListBox_Select'),\r\n deselect: i18n.getString('DoubleListBox_DeselectAll'),\r\n filterWatermark: i18n.getString('DoubleListBox_Search'),\r\n },\r\n };\r\n this.$errors = ko.observableArray();\r\n this.multiSelect = false;\r\n this.selectedCampaigns = ko.observable();\r\n this.selectedCampaigns.subscribe((newValue) => {\r\n this.selectedCampaignId(newValue ? newValue.Id : null);\r\n });\r\n this.allLists = _.bind(this.getLists, this);\r\n }\r\n\r\n createSelectorScopeObject(scope) {\r\n const scopeObject = { currentScope: 'account' };\r\n\r\n if (scope.values.adGroupId) {\r\n scopeObject.currentScope = 'adgroup';\r\n scopeObject.adgroup = { Id: scope.values.adGroupId };\r\n }\r\n if (scope.values.campaignId) {\r\n scopeObject.currentScope = 'campaign';\r\n scopeObject.campaign = { Id: scope.values.campaignId };\r\n }\r\n return scopeObject;\r\n }\r\n\r\n getLists = (request, callback) => {\r\n if (!this.cache) {\r\n $.advertiser.ajaxPost({\r\n url: this.fetchListsUrl,\r\n onSuccess: (data) => {\r\n if (data) {\r\n this.cache = { items: data, total: data.length };\r\n callback(null, this.cache);\r\n } else {\r\n this.cache = { items: [], total: 0 };\r\n callback(null, this.cache);\r\n }\r\n },\r\n });\r\n } else {\r\n callback(null, this.cache);\r\n }\r\n };\r\n}\r\n\r\nexport class CreateNegativeKeywordAssocationView extends Backbone.View {\r\n initialize({\r\n gridType, i18n, scope, gridView,\r\n }) {\r\n this.i18n = i18n;\r\n this.gridType = gridType;\r\n this.scope = scope;\r\n this.viewModel = new CreateNegativeKeywordAssociationViewModel({\r\n gridType,\r\n i18n,\r\n scope,\r\n showSelector: true,\r\n accountLevel: true,\r\n });\r\n this.gridView = gridView;\r\n this.$errors = this.viewModel.$errors;\r\n }\r\n\r\n get events() {\r\n return {\r\n 'click #btnSave': 'save',\r\n 'click #btnCancel': 'cancel',\r\n };\r\n }\r\n\r\n onCampaignSelect(selectedItem) {\r\n if (_.has(selectedItem, 'Id')) {\r\n this.viewModel.selectedCampaignId(selectedItem);\r\n this.viewModel.selectorError('');\r\n } else {\r\n // eslint-disable-next-line no-console\r\n console.warn('empty selectedItem');\r\n }\r\n }\r\n\r\n\r\n render() {\r\n let selectorView = null;\r\n if (this.viewModel.scope.currentScope === 'account') {\r\n let optionalCampaignFilter = '(CampaignSubType ne Enum.CampaignSubType\\'ShoppingSmartAds\\' and CampaignType ne Enum.CampaignType\\'Audience\\')';\r\n if (permissions.dynamic && permissions.dynamic.HotelCampaign) {\r\n optionalCampaignFilter += 'and (CampaignType ne Enum.CampaignType\\'Hotel\\')';\r\n }\r\n if (permissions.dynamic && permissions.dynamic.AccountNegativeKeywords && !permissions.IsNKWListAssociationAllowed) {\r\n optionalCampaignFilter += 'and (CampaignType ne Enum.CampaignType\\'PerformanceMax\\')';\r\n }\r\n selectorView = new CampaignSelectorProxy({\r\n withUiBlocker: withUiBlock,\r\n jsData,\r\n edmCampaign: edm,\r\n i18n: campignSelectori18n,\r\n optionalCampaignFilter,\r\n }).getCampaignSelectorView().render();\r\n\r\n selectorView.on('selected-adgroup', (selectedItem) => {\r\n this.viewModel.showSelector = false;\r\n this.onAdGroupSelect(selectedItem);\r\n });\r\n selectorView.on('selected-campaign', (selectedItem) => {\r\n this.viewModel.showSelector = false;\r\n this.onCampaignSelect(selectedItem);\r\n });\r\n } else {\r\n this.viewModel.selectedCampaignId(this.viewModel.scope.campaign);\r\n this.viewModel.accountLevel = false;\r\n }\r\n\r\n this.$el.html(template({\r\n i18n: this.i18n,\r\n appendLearnMoreLink: help.appendLearnMoreLink,\r\n $errors: this.viewModel.$errors,\r\n showSelector: this.viewModel.showSelector,\r\n accountLevel: this.viewModel.accountLevel,\r\n customerId: this.scope.values.cid,\r\n userId: this.scope.values.uid,\r\n accountId: this.scope.values.aid,\r\n }));\r\n ko.applyBindings(this.viewModel, this.el);\r\n\r\n if (this.viewModel.scope.currentScope === 'account') {\r\n this.$('.new-campaign-adgroup-selector').append(selectorView.el);\r\n }\r\n return this;\r\n }\r\n\r\n save() {\r\n const lists = this.viewModel.selectedLists();\r\n const ids = [];\r\n const campaignId = this.viewModel.selectedCampaignId().Id;\r\n\r\n _.each(lists, (item) => {\r\n ids.push(item.Id);\r\n });\r\n\r\n if (ids.length) {\r\n return this.createOnSaveLibraryAssociation({\r\n campaignId,\r\n libraryIds: ids,\r\n successHandler: () => {\r\n this.trigger('save');\r\n this.trigger('addNegativeKeywordsListsComplete');\r\n },\r\n el: this.el,\r\n });\r\n } else if (!ids.length) {\r\n const noListSelectedErr = this.i18n.getString('NegativeKeywordList_Association_NoListSelected');\r\n if (!_.contains(this.viewModel.$errors(), noListSelectedErr)) {\r\n this.viewModel.$errors.push(this.i18n.getString('NegativeKeywordList_Association_NoListSelected'));\r\n }\r\n return null;\r\n }\r\n return null;\r\n }\r\n\r\n findFailedEntries = (data) => {\r\n const failedEntries = [];\r\n\r\n _.each(data, (entry) => {\r\n const { errors } = entry;\r\n\r\n if (errors && errors.length > 0) {\r\n failedEntries.push(entry);\r\n }\r\n });\r\n\r\n return failedEntries.length > 0 ? failedEntries : null;\r\n };\r\n\r\n createOnSaveLibraryAssociation = ({\r\n campaignId, libraryIds, successHandler, el,\r\n }) => {\r\n const data = [];\r\n\r\n _.each(libraryIds, (id) => {\r\n data.push({\r\n SharedEntityId: id,\r\n EntityId: campaignId,\r\n });\r\n });\r\n\r\n return jsData.SharedEntityAssociation.createMany(data, { adapter: 'bulk', cacheResponse: false })\r\n .then(() => {\r\n successHandler();\r\n }).finally(withUiBlock(el));\r\n };\r\n\r\n cancel() {\r\n this.trigger('addNegativeKeywordsListsComplete');\r\n }\r\n\r\n remove() {\r\n ko.cleanNode(this.$el[0]);\r\n this.$el.hide();\r\n super.remove();\r\n }\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { setUpErrorHandling } from '@bingads-webui-campaign/summary-grid-helper';\r\n\r\nimport { NegativeKeywordListGrid } from './negative-keyword-list-grid';\r\nimport { getConfig } from './grid-config';\r\nimport { getPlugins } from './plugins';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/keywords-tab');\r\n\r\nexport function createNegativeKeywordsListsGrid({\r\n dataSource,\r\n filterService,\r\n getAdditionalPlugins = () => [],\r\n preferenceConfig,\r\n router,\r\n scope,\r\n addDateChangeListener,\r\n p$daterange,\r\n isForVNext = false,\r\n perfMarker,\r\n viewport,\r\n}) {\r\n return new NegativeKeywordListGrid({\r\n isForVNext,\r\n filterService,\r\n i18n,\r\n getGridConfig: view => getConfig({\r\n dataSource,\r\n scope,\r\n view,\r\n filterService,\r\n preferenceConfig,\r\n router,\r\n isForVNext,\r\n viewport,\r\n }),\r\n getPlugins: view => getPlugins({\r\n filterService,\r\n router,\r\n scope,\r\n isForVNext,\r\n addDateChangeListener,\r\n perfMarker,\r\n p$daterange,\r\n }).concat(getAdditionalPlugins(view)),\r\n router,\r\n scope,\r\n setupDataSourceErrorHandling: view => setUpErrorHandling({\r\n gridView: view,\r\n scope,\r\n dataSource,\r\n i18n,\r\n }),\r\n preferenceConfig,\r\n });\r\n}\r\n\r\nexport { CreateNegativeKeywordAssocationView } from './create-association/create-association-view';\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nimport pkg from './package.json';\r\n\r\nexport function getNegativeKeywordListsKeywordGridFactory(initializeGlobalContext = true) {\r\n if (initializeGlobalContext) {\r\n return globalContext.define(\r\n pkg.legacyDependencies,\r\n Promise => import(/* webpackMode: 'eager' */ './src/factory') // eslint-disable-line no-unused-vars\r\n );\r\n }\r\n return import(/* webpackMode: 'eager' */ './src/factory'); // eslint-disable-line no-unused-vars\r\n}\r\n\r\nexport { ServerErrorMap } from './src/error-map';\r\n","// Copied from AdsAppsMT\r\n// private/Campaign/MT/Source/API/MergedAPI/V12/SharedCore/Translation/MasterApiErrorCodeList.xml\r\nexport const ServerErrorMap = {\r\n CampaignServiceSharedEntityNameNullOrEmpty: _TL_('Shared entity Name field is a required.'),\r\n CampaignServiceSharedEntityLimitExceeded: _TL_('Your account already has the maximum number of shared entity lists.'),\r\n CampaignServiceSharedEntityInvalidType: _TL_('The specified shared entity type is invalid or not currently supported.'),\r\n CampaignServiceSharedEntityAssociationsNullOrEmpty: _TL_('Shared entity associations are required.'),\r\n CampaignServiceMultipleSharedEntityTypesNotAllowed: _TL_('Multiple types of shared entity are not allowed in one call.'),\r\n CampaignServiceSharedEntityAssociationsBatchLimitExceeded: _TL_('Too many shared entity associations in one batch.'),\r\n CampaignServiceSharedEntityAssociationsListItemNullOrEmpty: _TL_('Shared entity associations collection cannot be null or empty'),\r\n CampaignServiceSharedEntityAssociationDuplicate: _TL_('Shared entity is a duplicate of a existing association.'),\r\n CampaignServiceSharedEntityIdsNullOrEmpty: _TL_('Shared entity Id field cannot be null or empty.'),\r\n CampaignServiceSharedEntityNullOrEmpty: _TL_('Shared Entity cannot be null or empty'),\r\n CampaignServiceDuplicateSharedEntityId: _TL_('Duplicate shared entity Ids are not allowed.'),\r\n CampaignServiceSharedEntityTypeNullOrEmpty: _TL_('Shared entity type is a required field.'),\r\n CampaignServiceSharedListDeleted: _TL_('Deleted shared entity lists cannot be retrieved or modified.'),\r\n CampaignServiceSharedListsNullOrEmpty: _TL_('Shared entity lists are required.'),\r\n CampaignServiceSharedListNullOrEmpty: _TL_('Shared entity list is a required field.'),\r\n CampaignServiceSharedListIdInvalid: _TL_('Shared entity list Id is not valid'),\r\n CampaignServiceSharedListDuplicate: _TL_('Duplicate shared list identifiers are not allowed.'),\r\n CampaignServiceSharedListItemsNullOrEmpty: _TL_('Shared entity list items are a required field.'),\r\n CampaignServiceListItemIdInvalid: _TL_('Shared entity list Id is not a valid Id'),\r\n CampaignServiceListItemIdsLimitExceeded: _TL_('The maximum number of shared entity list identifiers per call has been exceeded.'),\r\n CampaignServiceSharedEntitiesNullOrEmpty: _TL_('Shared entities is a required field.'),\r\n CampaignServiceSharedEntityNameTooLong: _TL_('Shared entity name is too long.'),\r\n CampaignServiceSharedEntityNameInvalid: _TL_('Shared entity name is invalid'),\r\n CampaignServiceSharedListIdNotAllowed: _TL_('Shared entity list Id is not allowed'),\r\n CampaignServiceSharedEntityIdInvalid: _TL_('Shared entity id is invalid'),\r\n CampaignServiceMaxNegativeKeywordLimitExceededForList: _TL_('Adding the negative keyword to the list will exceed the maximum number of negative keywords that you can add to the list.'),\r\n CampaignServiceNegativeKeywordDeleted: _TL_('Cannot modify a deleted negative keyword'),\r\n CampaignServiceInvalidNegativeKeywordId: _TL_('Negative keyword Id is invalid'),\r\n CampaignServiceInvalidNegativeKeyword: _TL_('Negative keyword is invalid'),\r\n CampaignServiceNegativeKeywordListWithActiveAssociationsCannotBeDeleted: _TL_('A list with an active association cannot be deleted.'),\r\n CampaignServiceNegativeKeywordTypeInvalid: _TL_('Negative Keyword Type field is invalid'),\r\n CampaignServiceNegativeKeywordTextRequired: _TL_('Negative Keyword text is required'),\r\n CampaignServiceDuplicateNegativeKeywordListName: _TL_('Duplicate negative keyword list names are not allowed'),\r\n CampaignServiceStructuredNegativeKeywordPilotNotEnabledForCustomer: _TL_('The Structured Negative Keyword Pilot is not enabled for this customer.'),\r\n CampaignServiceNegativeKeywordTooManyParentTypes: _TL_('You cannot mix the parent types for the Negative Keywords in this calls.'),\r\n CampaignServiceNegativeKeywordDuplicateFound: _TL_('Duplicate negative keyword already exists in this list.'),\r\n CampaignServiceNegativeKeywordNotFound: _TL_('No negative keywords were found.'),\r\n CampaignServiceNegativeKeywordInvalidMatchType: _TL_('The match type for this keyword was invalid.'),\r\n CampaignServiceNegativeKeywordInvalidParentType: _TL_('The parent type for this negative keyword is invalid.'),\r\n CampaignServiceNegativeKeywordEntitiesNullOrEmpty: _TL_('Negative Keywords entities are required for this call'),\r\n CampaignServiceNegativeKeywordEntityNull: _TL_('Negative Keyword cannot be null'),\r\n CampaignServiceMultipleEntityTypesNotAllowed: _TL_('Negative Keyword types cannot be added to multiple entity types in one call.'),\r\n CampaignServiceDuplicateNegativeKeyword: _TL_('Duplicate negative keyword are not allowed.'),\r\n CampaignServiceSharedEntityAssociationDoesNotExist: _TL_('Shared entity association does not exisit'),\r\n CampaignServiceCampaignIdsNullOrEmpty: _TL_('Campaign Ids passed are null or empty.'),\r\n CampaignServiceAdGroupIdsNullOrEmpty: _TL_('AdGroup Ids passed are null or empty.'),\r\n CampaignServiceSharedEntityBatchLimitExceeded: _TL_('Too many shared entity ids in one batch.'),\r\n CampaignServiceEntityBatchLimitExceeded: _TL_('Too many entity ids in one batch.'),\r\n CampaignServiceNegativeKeywordsAccountLimitExceeded: _TL_('Negative keyword limit at account level exceeded.'),\r\n CampaignServiceSharedEntityAssociationsAccountLimitExceeded: _TL_('Shared entity association limit at account level exceeded.'),\r\n CampaignServiceNegativeKeywordsNotPassed: _TL_('Negative keywords passed is null.'),\r\n\r\n // this is the fall back error\r\n fallbackMsg: _TL_('Something went wrong, please try again later'),\r\n};\r\n","import { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { pgridFactory } from '@bingads-webui-campaign/pgrid-factory';\r\nimport { updateGridQuery } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { merge } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nconst { handleSortChange } = globalContext.require('campaignui/feature/bingadsgrid/service/state-manager-helper');\r\n\r\nexport class NegativeKeywordListsKeywordGrid extends DeterministicWrapperView {\r\n viewFactory({\r\n scope,\r\n i18n,\r\n filterService,\r\n preferenceConfig,\r\n getGridConfig,\r\n setupDataSourceErrorHandling,\r\n getPlugins,\r\n }) {\r\n this.scope = scope;\r\n this.i18n = i18n;\r\n this.filterService = filterService;\r\n\r\n setupDataSourceErrorHandling(this);\r\n\r\n const gridConfig = merge(getGridConfig(this), preferenceConfig);\r\n\r\n this.grid = pgridFactory({\r\n gridConfig,\r\n plugins: getPlugins(this),\r\n preferenceConfig,\r\n });\r\n\r\n this.filterService.on('filter-state-changed', () => {\r\n updateGridQuery(\r\n this.grid.gridView,\r\n this.filterService.getCombinedFilter(), true\r\n );\r\n });\r\n\r\n this.grid.gridView.on('willUpdate', (changes) => {\r\n // a preference patch is sent while grid is being loaded\r\n // to avoid that only handle sort change when the grid is ready\r\n const { _isRendered } = this.grid.gridView;\r\n if (_isRendered) {\r\n handleSortChange(changes, this.grid.gridView, gridConfig.name);\r\n }\r\n });\r\n\r\n return this.grid.gridView;\r\n }\r\n get className() { return 'negative-keyword-lists-keyword-grid'; }\r\n\r\n renderTrunk() {\r\n this.filterService.refreshSource();\r\n this.filterService.initializeCombinedFilterPromise.then(() => {\r\n updateGridQuery(\r\n this.grid.gridView,\r\n this.filterService.getCombinedFilter(), true\r\n );\r\n });\r\n super.renderTrunk();\r\n }\r\n\r\n remove() {\r\n this.gridRemoved = true;\r\n return super.remove();\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n// eslint-disable-next-line import/extensions\r\nimport campaignCacheManager from '@bingads-webui-campaign-legacy/cache-manager/index';\r\nimport { edmCampaign } from '@bingads-webui/edm-campaign';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { ServerErrorMap } from '../error-map';\r\n\r\nglobalContext.require('component/api-errors-campaign/index');\r\n\r\nexport function InlineEditableSave({\r\n view,\r\n updated,\r\n editorViewCallbackAfterUpdate,\r\n editorView,\r\n}) {\r\n const { scope } = view;\r\n\r\n const payloadDelete = {\r\n NegativeKeywords: {\r\n Id: updated.Id,\r\n ParentId: scope.values.nkl,\r\n Status: 'Deleted',\r\n },\r\n };\r\n\r\n const payloadCreate = {\r\n NegativeKeywords: {\r\n ParentId: scope.values.nkl,\r\n MatchType: updated.MatchType,\r\n Keyword: updated.Text,\r\n },\r\n };\r\n\r\n const edmAccount = edmCampaign\r\n .Customers\r\n .$withKey(scope.values.cid)\r\n .Accounts\r\n .$withKey(scope.values.aid);\r\n\r\n const handleCreationSuccess = () => {\r\n edmAccount.bulkCreate(payloadDelete)\r\n .then(() => {\r\n if (editorViewCallbackAfterUpdate && _.isFunction(editorViewCallbackAfterUpdate)) {\r\n editorViewCallbackAfterUpdate();\r\n }\r\n })\r\n .then(() => {\r\n campaignCacheManager.invalidate('NegativeKeyword');\r\n view.grid.gridView.refresh(true);\r\n })\r\n .finally(withUiBlock(view.grid.gridView.$el));\r\n };\r\n\r\n const handleCreationError = (response) => {\r\n editorView.setErrors({\r\n Text: _.result(\r\n ServerErrorMap,\r\n response && response.errors && response.errors[0] && response.errors[0].Type === 'Shared Negative Keyword Error' && response.errors[0].Error,\r\n ServerErrorMap.fallbackMsg\r\n ),\r\n });\r\n };\r\n\r\n edmAccount.bulkCreate(payloadCreate)\r\n .then(handleCreationSuccess, handleCreationError)\r\n .finally(withUiBlock(view.grid.gridView.$el));\r\n}\r\n","import _ from 'underscore';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport * as PopupEditor from '@bingads-webui/popup-editor';\r\nimport { NegativeKeyword } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport { InlineEditableSave } from './save';\r\n\r\nlet schema = NegativeKeyword;\r\n\r\n// todo: move to common-columns package [1212933]\r\nexport function InlineEditableColumnPrompt({\r\n position, item, view, i18n, fieldName, customSchema,\r\n}) {\r\n if (!customSchema) {\r\n schema = cloneDeep(schema);\r\n schema.properties.MatchType.enum = _.without(schema.properties.MatchType.enum, 'Content');\r\n } else {\r\n schema = customSchema;\r\n }\r\n let fields = [fieldName];\r\n const model = item;\r\n\r\n const prompt = (template = 'inline') =>\r\n PopupEditor.prompt({\r\n position,\r\n i18n,\r\n schema,\r\n model,\r\n fields,\r\n hasLabels: false,\r\n template,\r\n saveModel: (updated, editorView) =>\r\n InlineEditableSave({\r\n view,\r\n i18n,\r\n fieldName,\r\n updated,\r\n editorView,\r\n entityName: customSchema ? customSchema.name : undefined,\r\n editorViewCallbackAfterUpdate: () => {\r\n editorView.trigger('save', updated);\r\n },\r\n }),\r\n });\r\n\r\n if (fieldName === 'MatchType') {\r\n const valueMessages = {};\r\n _.each(schema.properties.MatchType.enum, (value) => {\r\n valueMessages[value] = i18n.getString(`MatchType_${value}`);\r\n });\r\n fields = [{\r\n property: fieldName,\r\n valueMessages,\r\n }];\r\n }\r\n prompt();\r\n}\r\n","import _ from 'underscore';\r\nimport { CampaignNegativeKeyword, AdGroupNegativeKeyword } from '@bingads-webui-campaign/campaign-ui-schemas';\r\n\r\nexport const gridType = {\r\n campaign: 'campaign',\r\n adgroup: 'adgroup',\r\n};\r\n\r\n\r\nexport function getSchema(type) {\r\n if (type === gridType.campaign) {\r\n return CampaignNegativeKeyword;\r\n } else if (type === gridType.adgroup) {\r\n return AdGroupNegativeKeyword;\r\n }\r\n\r\n throw new Error('unknown negative keyword grid type.');\r\n}\r\n\r\nexport function patchParentObj(item) {\r\n const toPatch = item.AdGroupId ?\r\n { AdGroup: { Id: item.AdGroupId } } :\r\n { Campaign: { Id: item.CampaignId } };\r\n\r\n return _.defaults(toPatch, item);\r\n}\r\n","import { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\n\r\nimport { InlineEditableColumnPrompt } from '../../inline-editable/prompt';\r\nimport template from './negative-keyword.pug';\r\nimport { getSchema, patchParentObj } from '../../inline-editable/inline-edit-schema';\r\n\r\nexport class NegativeKeywordColumn extends CampaignuiBaseColumn {\r\n constructor({ i18n, view }) {\r\n const title = i18n.getString('ColumnName_NegativeKeywords_FullName');\r\n\r\n super({\r\n name: 'NegativeKeyword',\r\n property: ['Id', 'Text'],\r\n title,\r\n sortable: 'Text',\r\n editable: true,\r\n type: 'string',\r\n helpId: 'Page_CampaignGrids_NegKeywords',\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n\r\n this.i18n = i18n;\r\n this.view = view;\r\n }\r\n\r\n pickProperty(item) {\r\n const {\r\n Text: text,\r\n } = item;\r\n\r\n return {\r\n text,\r\n };\r\n }\r\n\r\n onPrompt({ position, item }) {\r\n InlineEditableColumnPrompt({\r\n position,\r\n item: patchParentObj(item),\r\n view: this.view,\r\n i18n: this.i18n,\r\n fieldName: 'Text',\r\n customSchema: getSchema('campaign'),\r\n });\r\n }\r\n\r\n template({ value }) {\r\n return template({ value });\r\n }\r\n}\r\n","import { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\n\r\nimport { InlineEditableColumnPrompt } from '../../inline-editable/prompt';\r\nimport template from './match-type.pug';\r\nimport { getSchema, patchParentObj } from '../../inline-editable/inline-edit-schema';\r\n\r\nexport class MatchTypeColumn extends CampaignuiBaseColumn {\r\n constructor({ i18n, view }) {\r\n const title = i18n.getString('ColumnName_MatchType');\r\n super({\r\n name: 'MatchType',\r\n property: ['Id', 'MatchType'],\r\n title,\r\n sortable: 'MatchType',\r\n editable: true,\r\n type: 'string',\r\n helpId: 'pop_BA_CampaignGrids_MatchType',\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n\r\n this.i18n = i18n;\r\n this.view = view;\r\n }\r\n\r\n pickProperty(item) {\r\n const type = item.MatchType\r\n ? this.i18n.getString(`MatchType_${item.MatchType}`)\r\n : '';\r\n return {\r\n type,\r\n };\r\n }\r\n\r\n onPrompt({ position, item }) {\r\n InlineEditableColumnPrompt({\r\n position,\r\n item: patchParentObj(item),\r\n view: this.view,\r\n i18n: this.i18n,\r\n customSchema: getSchema('campaign'),\r\n fieldName: 'MatchType',\r\n });\r\n }\r\n\r\n template({ value }) {\r\n return template({ value });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { ColumnsConfigBuilder } from '@bingads-webui-campaign/summary-grid-helper';\r\n\r\nimport { NegativeKeywordColumn } from './attributes/negative-keywords';\r\nimport { MatchTypeColumn } from './attributes/match-type';\r\n\r\nexport function getColumnsConfig({ options }) {\r\n const builder = new ColumnsConfigBuilder()\r\n .addCategory('Attribute', category => category.addColumns(_.compact([\r\n NegativeKeywordColumn,\r\n MatchTypeColumn,\r\n ])));\r\n return builder.getColumnsConfig(options);\r\n}\r\n\r\nexport function getInlineEditableColumns({ i18n }) {\r\n return {\r\n NegativeKeyword: {\r\n editor: {\r\n type: 'text',\r\n getEditorValue: currentCellValue => currentCellValue.text,\r\n },\r\n },\r\n MatchType: {\r\n editor: {\r\n type: 'select',\r\n getEditorValue: currentCellValue => currentCellValue.type,\r\n options: [{\r\n value: 'Exact',\r\n text: i18n.getString('MatchTypeId_1'),\r\n }, {\r\n value: 'Phrase',\r\n text: i18n.getString('MatchTypeId_2'),\r\n }],\r\n },\r\n },\r\n };\r\n}\r\n","import $ from 'jquery';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n// import { helpers } from '@bingads-webui/projection-grid-toolbar';\r\nimport { sortableHeaderTemplate } from '@bingads-webui-campaign/summary-grid-helper';\r\n\r\nimport { getColumnsConfig } from './columns/index';\r\n\r\nconst stateManager = globalContext.require('StateManager/CampaignStateManager');\r\nconst preferenceService = globalContext.requireDefault('component/preference/service/index');\r\nconst appConfig = globalContext.require('component/config/index');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/keywords-tab');\r\n\r\n// const { singleToolbarHeadRows } = helpers;\r\n\r\nexport function getConfig({\r\n dataSource,\r\n scope,\r\n view,\r\n customHeaderOffset,\r\n filterService,\r\n viewport,\r\n}) {\r\n const tableName = i18n.getString('Import_ImportSummary_SharedNegativeKeyword');\r\n\r\n return {\r\n name: 'summary_tab_negative_keyword_lists_keywords',\r\n legacyGridName: 'NegativeKeywordsInLibraryGrid',\r\n tableClasses: ['table', 'table-bordered'],\r\n tableAttributes: { 'aria-label': tableName },\r\n dataSource,\r\n selection: true,\r\n rows: {\r\n headRows: ['column-header-rows'],\r\n },\r\n columns: getColumnsConfig({\r\n options: {\r\n i18n,\r\n scope,\r\n view,\r\n },\r\n }),\r\n scrolling: {\r\n header: {\r\n type: 'sticky',\r\n offset: customHeaderOffset || (() => $('.sticky-container').height()),\r\n\r\n },\r\n virtualized: true,\r\n viewport,\r\n },\r\n filterService,\r\n stateManager,\r\n preferenceService,\r\n config: appConfig,\r\n sortableHeader: {\r\n template: sortableHeaderTemplate,\r\n },\r\n i18n,\r\n };\r\n}\r\n","import _ from 'underscore';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport { jsdataRawDataPlugin } from '@bingads-webui-campaign/pgrid-js-data-raw-data';\r\nimport { inlineErrorPlugin } from '@bingads-webui/projection-grid-inline-error';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { performanceLogPlugin, perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { assistedSelectionPlugin } from '@bingads-webui/projection-grid-assisted-selection';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/keywords-tab');\r\nconst appConfig = globalContext.require('component/config/index');\r\nconst logger = globalContext.require('module/service/instrumentation/index');\r\n\r\nexport function getPlugins({\r\n perfMarker,\r\n viewport,\r\n}) {\r\n return _.compact([{\r\n // For accurate grid init latency, PerfMarkerPlugin should be the first plugin to load.\r\n plugin: perfMarkerPlugin,\r\n config: {\r\n appConfig,\r\n marker: perfMarker,\r\n },\r\n }, {\r\n plugin: editablePlugin,\r\n config: { i18n },\r\n }, {\r\n plugin: paginationPlugin,\r\n config: {\r\n availablePageSizes: [20, 50, 100, 200],\r\n enableRandomPage: false,\r\n pageSizeText: i18n.getString('Grid_ShowRows'),\r\n totalPageCountText: i18n.getString('Grid_PageOf'),\r\n },\r\n }, {\r\n plugin: performanceLogPlugin,\r\n config: { appConfig, logger },\r\n }, {\r\n plugin: assistedSelectionPlugin,\r\n }, {\r\n plugin: a11yPlugin,\r\n config: { i18n },\r\n }, {\r\n plugin: jsdataRawDataPlugin,\r\n }, {\r\n plugin: uiBlockerPlugin,\r\n config: { el: viewport },\r\n }, {\r\n plugin: inlineErrorPlugin({\r\n errorIconClasses: ['grid-error'],\r\n }),\r\n }]);\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { setUpErrorHandling } from '@bingads-webui-campaign/summary-grid-helper';\r\n\r\nimport { NegativeKeywordListsKeywordGrid } from './negative-keywords-lists-keyword-grid';\r\nimport { getConfig } from './grid-config';\r\nimport { getPlugins } from './plugins';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/keywords-tab');\r\n\r\nexport function createNegativeKeywordsListsKeywordsGrid({\r\n dataSource,\r\n filterService,\r\n getAdditionalPlugins = () => [],\r\n preferenceConfig,\r\n router,\r\n scope,\r\n isForVNext = false,\r\n perfMarker,\r\n viewport,\r\n}) {\r\n return new NegativeKeywordListsKeywordGrid({\r\n isForVNext,\r\n filterService,\r\n i18n,\r\n getGridConfig: view => getConfig({\r\n dataSource,\r\n scope,\r\n view,\r\n filterService,\r\n preferenceConfig,\r\n router,\r\n isForVNext,\r\n viewport,\r\n }),\r\n getPlugins: view => getPlugins({\r\n perfMarker,\r\n viewport,\r\n }).concat(getAdditionalPlugins(view)),\r\n router,\r\n scope,\r\n setupDataSourceErrorHandling: view => setUpErrorHandling({\r\n gridView: view,\r\n scope,\r\n dataSource,\r\n i18n,\r\n }),\r\n preferenceConfig,\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport {\r\n jsdataRawDataPlugin as commonJsdataRawDataPlugin,\r\n} from '@bingads-webui/projection-grid-js-data-raw-data';\r\n\r\nexport const jsdataRawDataPlugin = commonJsdataRawDataPlugin({\r\n getRawData: _.property('raw'),\r\n});\r\n","import { getBlackList, getDefaultImportOptionFields } from '@bingads-webui-campaign/import-components';\r\n\r\nexport const getSubFieldsBlackList = (permissions) => {\r\n const subFieldsBlacklist = getBlackList(permissions);\r\n\r\n // filter out some options for P0 requirement\r\n subFieldsBlacklist.push('ImportAccountUrlOptions');\r\n subFieldsBlacklist.push('ImportDeletedEntities');\r\n subFieldsBlacklist.push('ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBids');\r\n subFieldsBlacklist.push('ImportUpdateEntityPreference_UpdateAdGroupAndKeywordBidStrategies');\r\n subFieldsBlacklist.push('ImportUpdateEntityPreference_UpdateCampaignBudget');\r\n subFieldsBlacklist.push('RaiseLowBidsToMinServingBidsForBsc');\r\n subFieldsBlacklist.push('AutoDeviceBidOptimization');\r\n // other options\r\n subFieldsBlacklist.push('ImportAppendDestUrlPreference_UseAppendString');\r\n subFieldsBlacklist.push('ImportAppendDestUrlPreference_AppendStringForDestinationUrl');\r\n subFieldsBlacklist.push('AppendPreferencesForTrackingTemplate_UseAppendString');\r\n subFieldsBlacklist.push('AppendPreferencesForTrackingTemplate_AppendStringForTrackingTemplate');\r\n subFieldsBlacklist.push('SearchAndReplacePreferencesForTrackingTemplate_UseSearchAndReplaceString');\r\n subFieldsBlacklist.push('SearchAndReplacePreferencesForTrackingTemplate_SearchStringForTrackingTemplate');\r\n subFieldsBlacklist.push('SearchAndReplacePreferencesForTrackingTemplate_ReplaceStringForTrackingTemplate');\r\n subFieldsBlacklist.push('SearchAndReplaceForCustomParameters_EnableSearchAndReplace');\r\n subFieldsBlacklist.push('SearchAndReplaceForCustomParameters_SearchString');\r\n subFieldsBlacklist.push('SearchAndReplaceForCustomParameters_ReplaceString');\r\n subFieldsBlacklist.push('SearchAndReplaceForFinalURLSuffix_EnableSearchAndReplace');\r\n subFieldsBlacklist.push('SearchAndReplaceForFinalURLSuffix_SearchString');\r\n subFieldsBlacklist.push('SearchAndReplaceForFinalURLSuffix_ReplaceString');\r\n subFieldsBlacklist.push('ImportUpdateEntityPreference_UpdateNameForExistingCampaigns');\r\n subFieldsBlacklist.push('ImportNewOption_ImportNewCampaignsAndMarkAsPaused');\r\n subFieldsBlacklist.push('ImportSearchAndDsaMixedCampaignAsSearchCampaign');\r\n subFieldsBlacklist.push('ImportPrefixAndSuffixForStringProperty_EnablePrefixAndSuffix');\r\n subFieldsBlacklist.push('ImportPrefixAndSuffixForStringProperty_SuffixString');\r\n subFieldsBlacklist.push('ImportSearchAndReplaceForStringProperty_EnableSearchAndReplace');\r\n subFieldsBlacklist.push('ImportSearchAndReplaceForStringProperty_SearchString');\r\n subFieldsBlacklist.push('ImportSearchAndReplaceForStringProperty_ReplaceString');\r\n subFieldsBlacklist.push('ImportNewOption_ImportAllAdUnderAnAdGroup');\r\n subFieldsBlacklist.push('PauseParentIfNoLocationSupported');\r\n subFieldsBlacklist.push('EnableParentLocationMapping');\r\n subFieldsBlacklist.push('StoreIdForImportedProductAdExtensionsFlag');\r\n subFieldsBlacklist.push('StoreIdForImportedProductAdExtensions');\r\n subFieldsBlacklist.push('StoreIdForImportedProductAdExtensions');\r\n subFieldsBlacklist.push('AutoDeviceBidOptimization');\r\n subFieldsBlacklist.push('PauseAIMAdGroupIfAllAudienceCriterionNotImported');\r\n subFieldsBlacklist.push('ImportNewOption_ImportNewImageAdExtensions');\r\n subFieldsBlacklist.push('ImportUpdateEntityPreference_UpdateImageAdExtensions');\r\n subFieldsBlacklist.push('RenameCampaignNameWithSuffix');\r\n\r\n return subFieldsBlacklist;\r\n};\r\n\r\nexport const importOptionFieldHelpIds = {\r\n ImportNewEntities: 'Pop_BA_Import_FB_ItemsNotPreviouslyImported',\r\n UpdateEntityPreferences: 'pop_BA_Import_PI_UpdateExistingItems',\r\n DefaultBidsBelowMinToAdCenterMinBid: 'pop_BA_Import_PI_SetUnknownBid',\r\n DefaultCampaignBudgetBelowMinToAdCenterMinBudget: 'pop_BA_Import_PI_IncreaseCampBudget',\r\n AdjustmentForBids_EnableAdjustment: 'Pop_BA_Import_FB_AdjustBidValue',\r\n AdjustmentForCampaignBudgets_EnableAdjustment: 'Pop_BA_Import_FB_AdjustBudgValue',\r\n ImportNewOption_ImportNewActiveEntitiesOnly: 'pop_BA_Import_FB_PauseCampaigns',\r\n};\r\n\r\nexport const getImportOptionFields = (params) => {\r\n const optionFields = getDefaultImportOptionFields({\r\n ...params,\r\n hideEntityAdvancedOptions: true,\r\n helpIds: importOptionFieldHelpIds,\r\n isPauseAdGroupIfNoLocationSupportedEnabled: true,\r\n isAudienceTargetForFBImportOptionEnabled: true,\r\n });\r\n return optionFields;\r\n};\r\n","/* eslint-disable no-undef */\r\n\r\nexport const StepConstants = {\r\n SignInStep: {\r\n path: 'signInStep',\r\n stepName: _TL_('Sign in to Pinterest Ads'),\r\n title: _TL_('Sign in to Pinterest Ads'),\r\n },\r\n ChooseAccounts: {\r\n path: 'chooseAccounts',\r\n stepName: _TL_('Choose accounts'),\r\n title: _TL_('Choose accounts'),\r\n },\r\n StartImportSmart: {\r\n path: 'startImport.smart',\r\n stepName: _TL_('Set schedule'),\r\n title: _TL_('You\\'re ready to start your import'),\r\n },\r\n PinterestCampaignStep: {\r\n path: 'pinterestCampaignStep',\r\n stepName: _TL_('Choose campaigns'),\r\n title: _TL_('Which campaigns do you want to import?'),\r\n },\r\n ImportSummaryStep: {\r\n path: 'importSummaryStep',\r\n title: _TL_('Import Summary'),\r\n },\r\n ImportOptionStep: {\r\n path: 'importOptionStep',\r\n stepName: _TL_('Choose items and options'),\r\n title: _TL_('Choose which items to import and the options to set for them.'),\r\n },\r\n StartImportAdvanced: {\r\n path: 'startImport.advanced',\r\n stepName: _TL_('Set schedule'),\r\n title: _TL_('Set schedule'),\r\n },\r\n ImportStatusStep: {\r\n path: 'importStatusStep',\r\n title: _TL_('Import Status'),\r\n },\r\n};\r\n","// import Promise from 'bluebird';\r\nimport { CommonImportRepository } from '@bingads-webui-campaign/import-shared-repositories';\r\nimport Promise from 'bluebird';\r\nimport { StringPayload } from '@bingads-webui/azure-upload';\r\nimport _ from 'underscore';\r\nimport { filterAndLocalizePinterestCampaignsUtil } from './pinterest-import-repository-utils';\r\n\r\nconst startPinterestSessionUrlTmpl = '/ImportSession/StartPinterestSession(CustomerId=:customer_id,AccountId=:account_id)?authCode={{AuthCode}}&redirectUri={{redirectUri}}';\r\nconst startPinterestSessionWithTokenUrlTmpl =\r\n 'ImportSession/StartPinterestSession(CustomerId=:customer_id,AccountId=:account_id)?refreshToken={{Token}}';\r\nconst pinterestAccountsUrlTmpl =\r\n '/ImportSession/PinterestAccounts(CustomerId=:customer_id,AccountId=:account_id,SessionId={{SessionId}})';\r\nconst pinterestCampaignsUrlTmpl =\r\n '/ImportSession/PinterestCampaigns(CustomerId=:customer_id,AccountId=:account_id,SessionId={{SessionId}})';\r\nconst keyNameOfSessionIdInCookie = 'OAuth2_PinterestImportSessionId';\r\nconst keyNameOfLoginAccountInCookie = 'OAuth2_PinterestLoginAccount';\r\nconst pinterestEntitiesBulkFileTypeNum = 17;\r\nconst importType = 'PinterestImport';\r\nconst pinterestAdsEntityBulkFileType = 'GoogleAdsEntityIdFile';\r\n\r\nexport class PinterestImportRepository extends CommonImportRepository {\r\n constructor({ deps }) {\r\n super({ deps, type: 'PinterestImport', importType });\r\n this.edm = deps.edm;\r\n this.jsData = deps.jsData;\r\n if (this.edm != null) {\r\n this.taskItemOptions = {\r\n adapter: 'odata',\r\n entitySet: this.edm.currentAccount.TaskItems,\r\n };\r\n }\r\n this.ccJsData = deps.ccJsData;\r\n }\r\n\r\n getPinterestSessionIdFromCookie() {\r\n return this.getValueInSubImportCookieByAccountId(keyNameOfSessionIdInCookie)[0];\r\n }\r\n\r\n isUserLoggedIn() {\r\n return !!this.getPinterestSessionIdFromCookie();\r\n }\r\n\r\n setPinterestImportAccountInfoInCookie({ loginAccount, sessionId }) {\r\n this.addSubCookieToImportCookie({\r\n [keyNameOfLoginAccountInCookie]: loginAccount,\r\n [keyNameOfSessionIdInCookie]: sessionId,\r\n });\r\n }\r\n\r\n startPinterestSessionInternal(url, notUpdateCookie = false) {\r\n return this.odata.post(url)\r\n .then(({ PinterestSessionId: sessionId, PinterestUsername: loginAccount }) => {\r\n if (sessionId && !notUpdateCookie) {\r\n this.setPinterestImportAccountInfoInCookie({\r\n sessionId,\r\n loginAccount,\r\n });\r\n return sessionId;\r\n }\r\n return sessionId;\r\n });\r\n }\r\n\r\n startPinterestSession(authCode, notUpdateCookie) {\r\n const url = startPinterestSessionUrlTmpl\r\n .replace('{{AuthCode}}', authCode)\r\n .replace(':account_id', this.aid)\r\n .replace('{{redirectUri}}', `${window.location.origin}/campaign/vnext/pinterestimport`);\r\n\r\n return this.startPinterestSessionInternal(url, notUpdateCookie);\r\n }\r\n\r\n startPinterestSessionWithToken(token) {\r\n const url = startPinterestSessionWithTokenUrlTmpl\r\n .replace('{{Token}}', token)\r\n .replace(':account_id', this.aid);\r\n\r\n return this.startPinterestSessionInternal(url);\r\n }\r\n\r\n logout() {\r\n this.removeImportCookieValue(keyNameOfSessionIdInCookie, keyNameOfLoginAccountInCookie);\r\n }\r\n\r\n getPinterestLoginAccountFromCookie() {\r\n return this.getValueInSubImportCookieByAccountId(keyNameOfLoginAccountInCookie)[0];\r\n }\r\n\r\n getPinterestAccountName() {\r\n return this.getPinterestLoginAccountFromCookie();\r\n }\r\n\r\n getPinterestAccounts() {\r\n const sessionId = this.getPinterestSessionIdFromCookie();\r\n const url = pinterestAccountsUrlTmpl\r\n .replace('{{SessionId}}', sessionId);\r\n\r\n return this.odata.get(url).then(accounts => _.map(accounts, account => ({\r\n ...account,\r\n Currency: String(account.Currency).toUpperCase(),\r\n })));\r\n }\r\n\r\n getSelectionDataFromBlob(blobName) {\r\n return this.getEntitiesBlob(blobName)\r\n .then(blob =>\r\n ({\r\n selectedCampaignIds: blob.CampaignIds,\r\n }));\r\n }\r\n\r\n getEntitiesBlob(blobName) {\r\n return this.getBulkBlob(blobName, pinterestEntitiesBulkFileTypeNum);\r\n }\r\n\r\n getPinterestCampaigns(pinterestAccountId) {\r\n const sessionId = this.getPinterestSessionIdFromCookie();\r\n let url = pinterestCampaignsUrlTmpl.replace('{{SessionId}}', sessionId);\r\n\r\n url = this.formatUrl({\r\n url,\r\n queryParameters: {\r\n ExternalAccountId: pinterestAccountId,\r\n },\r\n });\r\n\r\n return this.odata.get(url).then(data =>\r\n filterAndLocalizePinterestCampaignsUtil(data, this.deps.newI18n, this.logError));\r\n }\r\n\r\n prepareForCampaignSelectionStep(customerId, blobName) {\r\n const promises = {};\r\n promises.pinterestCampaigns = this.getPinterestCampaigns(customerId);\r\n\r\n if (blobName) {\r\n promises.selectionData = this.getSelectionDataFromBlob(blobName)\r\n .then((selectionData) => {\r\n const finalState = {};\r\n finalState.selectedCampaignIds = selectionData.selectedCampaignIds;\r\n return finalState;\r\n });\r\n }\r\n\r\n return Promise.props(promises)\r\n .then(({ pinterestCampaigns, selectionData }) => {\r\n const finalState = { pinterestCampaigns };\r\n if (selectionData) {\r\n const availableIdBoolMap = _.object(_.map(pinterestCampaigns, obj => [obj.Id, true]));\r\n const campaignIdFilter = ids => _.filter(ids, id => availableIdBoolMap[id]);\r\n const selectedCampaignIds = campaignIdFilter(selectionData.selectedCampaignIds);\r\n _.extend(finalState, {\r\n selectedCampaignIds: _.isEmpty(selectedCampaignIds) ? null : selectedCampaignIds,\r\n });\r\n }\r\n return finalState;\r\n });\r\n }\r\n\r\n getPinterestImportUserPreferences() {\r\n let preferences = {};\r\n\r\n return this.getImportUserPreferencesWithBMCandMinInfo('PinterestImport')\r\n .then((userPref) => {\r\n preferences = _.extend(preferences, userPref);\r\n\r\n return preferences;\r\n });\r\n }\r\n\r\n getPinterestImportInfoFromCookie() {\r\n const result = this.getValueInSubImportCookieByAccountId(\r\n keyNameOfSessionIdInCookie,\r\n keyNameOfLoginAccountInCookie\r\n );\r\n\r\n return {\r\n sessionId: result[0],\r\n pinterestAccountName: result[1],\r\n };\r\n }\r\n\r\n serializePinterestEntitiesSelectionDataToStringPayload(selectionData) {\r\n return new StringPayload({\r\n content: JSON.stringify({\r\n CampaignIds: selectionData.selectedCampaignIds,\r\n }),\r\n });\r\n }\r\n\r\n preparePinterestImportContext({\r\n pinterestCustomerId,\r\n initialPinterestAccount,\r\n pinterestEntitiesSelectionData,\r\n uid,\r\n }) {\r\n let sessionId;\r\n let pinterestAccountName;\r\n\r\n if (initialPinterestAccount) {\r\n ({ sessionId } = initialPinterestAccount);\r\n ({ pinterestAccountName } = initialPinterestAccount);\r\n } else {\r\n const info = this.getPinterestImportInfoFromCookie();\r\n\r\n ({ sessionId } = info);\r\n ({ pinterestAccountName } = info);\r\n\r\n if (!sessionId) {\r\n this.logTrace(`preparePinterestImportContext: failed to getPinterestImportInfoFromCookie with info ${JSON.stringify(info)}`);\r\n sessionId = this.getPinterestSessionIdFromCookie();\r\n pinterestAccountName = this.getPinterestAccountName();\r\n\r\n if (!sessionId) {\r\n this.logTrace(`preparePinterestImportContext: failed to getPinterestSessionIdFromCookie with sessionId ${sessionId} pinterestAccountName ${pinterestAccountName}`);\r\n }\r\n }\r\n }\r\n\r\n const pinterestImportContext = {\r\n '@odata.type': '#Model.PinterestImportContext',\r\n SessionId: sessionId,\r\n AccountId: pinterestCustomerId,\r\n AccountName: pinterestAccountName,\r\n PinterestSessionUserId: uid,\r\n };\r\n\r\n if (pinterestEntitiesSelectionData) {\r\n return this.uploadToAzureBlobViaOdata({\r\n bulkFileType: pinterestAdsEntityBulkFileType,\r\n // eslint-disable-next-line max-len\r\n payload: this.serializePinterestEntitiesSelectionDataToStringPayload(pinterestEntitiesSelectionData),\r\n }).then(blob =>\r\n ({\r\n ...pinterestImportContext,\r\n PinterestEntitiesBlobName: blob.BlobName,\r\n }));\r\n }\r\n\r\n return Promise.resolve(pinterestImportContext);\r\n }\r\n\r\n preparePinterestImportTaskItem({\r\n importOptions,\r\n stepState,\r\n }) {\r\n const {\r\n importUserPreferences = {},\r\n notificationType,\r\n notificationEmailAddresses,\r\n timeZoneId,\r\n name,\r\n cron,\r\n taskItemState,\r\n } = importOptions;\r\n\r\n const {\r\n pinterestCustomerId,\r\n initialPinterestAccount,\r\n pinterestEntitiesSelectionData,\r\n } = stepState;\r\n\r\n return this.preparePinterestImportContext({\r\n pinterestCustomerId,\r\n initialPinterestAccount,\r\n pinterestEntitiesSelectionData,\r\n uid: this.uid,\r\n })\r\n .then(pinterestImportContext =>\r\n (_.extend(\r\n this.prepareCompleteImportTaskItem(importUserPreferences, timeZoneId), {\r\n NotificationType: notificationType,\r\n NotificationEmailAddresses: notificationEmailAddresses,\r\n PinterestImportContext: pinterestImportContext,\r\n ImportType: importType,\r\n '@odata.type': '#Model.PinterestImportTaskItem',\r\n Type: `PinterestImport${this.testTypeSuffix}`,\r\n },\r\n // pass IsAutoFrequency and IsSmartImport if the properties exist\r\n _.pick(importOptions, 'IsAutoFrequency', 'IsSmartImport'),\r\n !!name && { Name: name },\r\n !!taskItemState && { State: taskItemState },\r\n !!cron && { Cron: cron }\r\n )));\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport const filterAndLocalizePinterestCampaignsUtil = (campaigns, i18n) => {\r\n const filteredAndLocalized = _.chain(campaigns)\r\n .filter((campaign) => {\r\n const status = campaign.Status;\r\n\r\n return status !== 'Draft' && status !== 'Delete' && status !== 'Deleted';\r\n })\r\n .map(({\r\n Id,\r\n Name,\r\n Status,\r\n }) => ({\r\n Id,\r\n Name,\r\n Status,\r\n Type: i18n.getString(_TL_('Audience')), // default type for Pinterest campaign\r\n }))\r\n .value();\r\n\r\n return filteredAndLocalized;\r\n};\r\n","import Promise from 'bluebird';\r\nimport _ from 'underscore';\r\nimport { getParameter } from '@bingads-webui/url-util';\r\n\r\nfunction getCode(windowObj) {\r\n try {\r\n const code = getParameter('code', windowObj.location.href);\r\n if (!_.isEmpty(code)) {\r\n return code;\r\n }\r\n return false;\r\n } catch (e) {\r\n return false;\r\n }\r\n}\r\n\r\nfunction showPopup(url, title, w, h, callback = _.noop, errorhandle = _.noop) {\r\n const windowWidth = w || 450;\r\n const windowHeight = h || 650;\r\n\r\n const { documentElement } = document;\r\n const { screen } = window;\r\n\r\n // Multi Screen Popup Positioning (http://stackoverflow.com/a/16861050)\r\n // Credit: http://www.xtf.dk/2011/08/center-new-popup-window-even-on.html\r\n // Fixes dual-screen position Most browsers Firefox\r\n const dualScreenLeft = window.screenLeft === undefined ? screen.left : window.screenLeft;\r\n const dualScreenTop = window.screenTop === undefined ? screen.top : window.screenTop;\r\n\r\n const width = window.innerWidth || documentElement.clientWidth || screen.width;\r\n const height = window.innerHeight || documentElement.clientHeight || screen.height;\r\n\r\n\r\n const left = ((width - windowWidth) / 2) + dualScreenLeft;\r\n const top = ((height - windowHeight) / 2) + dualScreenTop;\r\n\r\n const newWindow = window.open(url, title, `resizable=yes, height=${windowHeight},width=${windowWidth},left=${left},top=${top}`);\r\n\r\n newWindow.focus();\r\n const timer = setInterval(() => {\r\n if (newWindow.closed) {\r\n window.clearInterval(timer);\r\n errorhandle({ error: 'popup_closed_by_user' });\r\n } else {\r\n const code = getCode(newWindow);\r\n if (code) {\r\n window.clearInterval(timer);\r\n newWindow.close();\r\n callback(code);\r\n }\r\n }\r\n }, 100);\r\n}\r\n\r\nexport class PinterestLoginRepository {\r\n static CLIENT_ID = '1467464';\r\n static SCOPE = 'ads:read,user_accounts:read,pins:read,boards:read,pins:read_secret,boards:read_secret';\r\n static REDIRECTURI = `${window.location.origin}/campaign/vnext/pinterestimport`;\r\n\r\n constructor(config) {\r\n this.config = config;\r\n }\r\n\r\n login() {\r\n const state = encodeURIComponent(`callback&cid=${this.config.get('CurrentCustomer').Id}&uid=${this.config.get('CurrentUser').Id}&aid=${this.config.get('CurrentAccount').Id}`);\r\n const url = `https://www.pinterest.com/oauth/?scope=${PinterestLoginRepository.SCOPE}&response_type=code&client_id=${PinterestLoginRepository.CLIENT_ID}&redirect_uri=${PinterestLoginRepository.REDIRECTURI}&state=${state}`;\r\n return new Promise((resolve, reject) => {\r\n showPopup(url, 'Pinterest login', 400, 600, resolve, reject);\r\n });\r\n }\r\n\r\n logout() {\r\n }\r\n}\r\n","import { CommonPermissionFactory } from '@bingads-webui-campaign/import-shared-repositories';\r\n\r\nexport class PermissionFactory extends CommonPermissionFactory {\r\n constructor({\r\n permissions,\r\n }) {\r\n super({\r\n permissions,\r\n });\r\n\r\n this.permissions = permissions;\r\n }\r\n\r\n // TODO: enable the pilots when implementing for Pinterest\r\n IsImportSmartScheduleStepImprovementPhaseTwoEnabled = () => false;\r\n IsImportSmartScheduleStepPanelImprovementEnabled = () => false;\r\n IsImportSmartScheduleStepPanelDataRestoreImprovementEnabled = () => false;\r\n}\r\n","import _ from 'underscore';\r\nimport { withAccountSelectionStepPrefetch, handlePinterestLoginError } from '@bingads-webui-campaign/imports-core';\r\n\r\nconst prefetchConfig = {\r\n handleError: ({\r\n err,\r\n newI18n,\r\n handleGenericError,\r\n patchState,\r\n }) => {\r\n const msg = handlePinterestLoginError(err, newI18n);\r\n if (msg) {\r\n // this error will be shown in pinterest sign in step\r\n patchState({\r\n isLoggedIn: false,\r\n loginErrorMessage: msg,\r\n });\r\n } else {\r\n // this error will be shown on top of page\r\n handleGenericError(err);\r\n }\r\n },\r\n fetchAccounts: repository =>\r\n repository.getPinterestAccounts(),\r\n getExistingAccounts: context => context.pinterestAccounts,\r\n getExistingSelectedAccount: context => context.selectedAccounts,\r\n getSelectedAccounts: (accounts, initialSettings) => {\r\n let selectedAccounts = [];\r\n if (initialSettings.PinterestImportContext &&\r\n initialSettings.PinterestImportContext.AccountId) {\r\n const { AccountId } = initialSettings.PinterestImportContext;\r\n\r\n selectedAccounts = _.filter(accounts, item => item.Id === AccountId);\r\n }\r\n return selectedAccounts;\r\n },\r\n getNewStateAfterAccountsLoaded: (accounts, __, originalState) => ({\r\n ...originalState,\r\n pinterestAccounts: accounts,\r\n }),\r\n};\r\n\r\nexport const withPinterestImportAccountSelectionStepPrefetch = Step =>\r\n withAccountSelectionStepPrefetch(Step, prefetchConfig);\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\nimport React from 'react';\r\nimport $ from 'jquery';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport { HelpLink } from '@bingads-webui-react/help-link';\r\nimport { ImportType, LoginDescription, handlePinterestLoginError } from '@bingads-webui-campaign/imports-core';\r\nimport { PrimaryButton, DefaultButton } from '@bingads-webui-react/fabric-with-signal';\r\nimport { withActivityContext } from '@bingads-webui-react/hoc-with-signal';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\n\r\nconst logoutResetData = {\r\n // account seletor page data\r\n selectedAccounts: [],\r\n pinterestAccounts: null,\r\n autoConvertCurrencyEnabled: true,\r\n\r\n // option page data\r\n importOptions: null,\r\n previousImportOptions: null,\r\n // campagin selector page data\r\n CampaignIds: null,\r\n pinterestEntitiesSelectionData: null,\r\n};\r\n\r\nfunction style() {\r\n return {\r\n descriptionBox: {\r\n fontSize: 14,\r\n lineHeight: '25px',\r\n marginBottom: 80,\r\n },\r\n link: {\r\n color: '#0078D4',\r\n textDecoration: 'underline',\r\n '& a.HelpTopic:focus': {\r\n outline: '1px solid #605e5c',\r\n },\r\n },\r\n errorMessage: {\r\n color: '#d13438',\r\n marginTop: 20,\r\n },\r\n buttonMargin: {\r\n marginTop: '10px',\r\n marginRight: '10px',\r\n },\r\n };\r\n}\r\n\r\nexport class UnstyledLoginContainer extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.deps = props.context.deps;\r\n this.repository = props.context.repository;\r\n this.loginRepository = props.context.loginRepository;\r\n this.goToNextStep = props.context.goToNextStep;\r\n this.handleGenericError = props.context.handleGenericError;\r\n this.patchState = props.context.patchState;\r\n this.newI18n = this.deps.newI18n;\r\n this.perfMarker = this.deps.perfMarker;\r\n this.loginPerfMarker = this.deps.loginPerfMarker;\r\n this.state = {\r\n errorMsg: null || props.context.loginErrorMessage,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if (this.loginPerfMarker) {\r\n this.loginPerfMarker.done();\r\n }\r\n }\r\n\r\n loginToPinterest = () => {\r\n let startSessionPromise;\r\n if (this.deps.token) {\r\n startSessionPromise = this.repository.startPinterestSessionWithToken(this.deps.token);\r\n } else {\r\n startSessionPromise = this.loginRepository.login()\r\n .then(authCode => this.repository.startPinterestSession(authCode));\r\n }\r\n return startSessionPromise\r\n .then(() => this.toNextStep())\r\n .catch(this.handleError)\r\n .finally(withUiBlock($(`.${this.props.rootContainerClassName}`), this.newI18n.getString(_TL_('Loading'))));\r\n };\r\n\r\n logout = () => {\r\n this.repository.logout();\r\n this.patchState({\r\n isLoggedIn: false,\r\n ...logoutResetData,\r\n });\r\n };\r\n\r\n handleError = (res) => {\r\n this.setState({\r\n errorMsg: handlePinterestLoginError(res, this.newI18n),\r\n });\r\n };\r\n\r\n toNextStep = () => {\r\n const sessionId = this.repository.getPinterestSessionIdFromCookie();\r\n if (!sessionId) {\r\n this.logout();\r\n this.setState({\r\n errorMsg: handlePinterestLoginError({ error: 'pinterest_already_signed_out' }, this.newI18n),\r\n });\r\n return;\r\n }\r\n this.goToNextStep(this.props.nextStepPath);\r\n this.patchState({\r\n isLoggedIn: true,\r\n });\r\n };\r\n\r\n isLoggedIn = () => this.repository.isUserLoggedIn();\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const isInActiveAccount = this.deps.config.get('CurrentAccountInActive');\r\n\r\n return (\r\n
\r\n
\r\n \r\n {this.newI18n.getString(_TL_('Get your campaigns up and running quickly by importing them directly from Pinterest Ads into Microsoft Advertising account.'))} \r\n \r\n \r\n {this.newI18n.getString(_TL_('Before you start, make sure you understand')) } \r\n \r\n \r\n { this.newI18n.getString(_TL_('what will be imported')) }.\r\n \r\n \r\n \r\n
\r\n
\r\n {this.isLoggedIn() ? (\r\n
\r\n \r\n \r\n
\r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n { isInActiveAccount && { this.newI18n.getString(_TL_('Imports can only be ran from active accounts.'))}}\r\n { this.state.errorMsg }\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nUnstyledLoginContainer.propTypes = {\r\n context: PropTypes.shape({\r\n loginRepository: PropTypes.shape({}).isRequired,\r\n deps: PropTypes.shape({\r\n logTrace: PropTypes.func,\r\n newI18n: PropTypes.shape({}),\r\n }).isRequired,\r\n loginErrorMessage: PropTypes.string,\r\n repository: PropTypes.shape({}).isRequired,\r\n patchState: PropTypes.func.isRequired,\r\n goToNextStep: PropTypes.func.isRequired,\r\n handleGenericError: PropTypes.func.isRequired,\r\n }).isRequired,\r\n classes: PropTypes.shape().isRequired,\r\n nextStepPath: PropTypes.string.isRequired, // eslint-disable-line\r\n rootContainerClassName: PropTypes.string.isRequired,\r\n};\r\n\r\nexport const LoginContainer = withDefaultStyles(\r\n withActivityContext(UnstyledLoginContainer),\r\n style\r\n);\r\n\r\nexport const renderDescription = (i18n, nextStepPath, repository) => {\r\n const signOut = (contextValues) => {\r\n const {\r\n goToNextStep,\r\n patchState,\r\n toggleImportType,\r\n } = contextValues;\r\n\r\n repository.logout();\r\n patchState({\r\n isLoggedIn: false,\r\n logOutButtonClicked: true,\r\n ...logoutResetData,\r\n });\r\n\r\n toggleImportType(ImportType.Smart);\r\n goToNextStep(nextStepPath);\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Activity } from '@bingads-webui-react/hoc-with-signal';\r\nimport { ImportCoreContext, StepContainer } from '@bingads-webui-campaign/imports-core';\r\nimport { LoginContainer } from './login-container';\r\nimport { getActionBarItems } from './action-bar-config';\r\nimport { withLoginStepPrefetch } from './prefetch';\r\n\r\nfunction PinterestLoginStepWithoutPrefetch(props) {\r\n const { stepTitle, stepPrefetchHoc, rootContainerClassName } = props;\r\n const WrappedLoginContainer =\r\n stepPrefetchHoc ? stepPrefetchHoc(LoginContainer) : LoginContainer;\r\n\r\n return (\r\n \r\n {\r\n (contextValues) => {\r\n const { deps } = contextValues;\r\n const { getUniqueImportGUID } = deps;\r\n const uniqueImportId = (getUniqueImportGUID && getUniqueImportGUID()) || '';\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\nPinterestLoginStepWithoutPrefetch.propTypes = {\r\n stepTitle: PropTypes.string.isRequired,\r\n nextStepPath: PropTypes.string.isRequired,\r\n stepPrefetchHoc: PropTypes.func,\r\n rootContainerClassName: PropTypes.string.isRequired,\r\n};\r\n\r\nPinterestLoginStepWithoutPrefetch.defaultProps = {\r\n stepPrefetchHoc: null,\r\n};\r\n\r\nexport const PinterestLoginStep = withLoginStepPrefetch(PinterestLoginStepWithoutPrefetch);\r\n\r\nexport { renderDescription } from './login-container';\r\n","export const getActionBarItems = () => {\r\n const config = [{\r\n type: 'button-cancel',\r\n }];\r\n\r\n return config;\r\n};\r\n","/* eslint-disable react-hooks/rules-of-hooks */\r\nimport React, { useContext, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { ImportCoreContext } from '@bingads-webui-campaign/imports-core';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\n\r\nimport { StepConstants } from '../../page/step-config';\r\n\r\nexport const withLoginStepPrefetch = (PreExecuteStep) => {\r\n const LoginStepPrefetch = React.memo((props) => {\r\n const importCoreContext = useContext(ImportCoreContext);\r\n\r\n const {\r\n rootContainerClassName,\r\n } = props;\r\n\r\n const {\r\n deps,\r\n repository,\r\n patchState,\r\n pinterestAccounts: existingPinterestAccount,\r\n logOutButtonClicked = false,\r\n goToNextStep,\r\n } = importCoreContext;\r\n\r\n const {\r\n taskItemId,\r\n config,\r\n newI18n,\r\n scope,\r\n } = deps;\r\n\r\n if (!taskItemId) {\r\n return ;\r\n }\r\n\r\n const [loading, setLoading] = useState(true); // to notify api is loading.\r\n const [dispatchedOdataCall, setDispatchedOdataCall] = useState(false);\r\n\r\n let initialState = {};\r\n\r\n if (loading &&\r\n !dispatchedOdataCall &&\r\n (!logOutButtonClicked && !existingPinterestAccount)\r\n ) {\r\n setDispatchedOdataCall(true);\r\n repository.getImportTaskItem(deps.taskItemId)\r\n .then((taskItem) => {\r\n // in this case, if user has signed in on import schedule page, update session Id\r\n const currentUserId = _.propertyOf(config.get('CurrentUser'))('Id');\r\n\r\n if (taskItem.ModifiedBy.Id !== currentUserId) {\r\n const { cookieHelperForEditImport } = deps;\r\n const sessionId = cookieHelperForEditImport.getSessionId(deps.taskItemId);\r\n\r\n cookieHelperForEditImport.deleteCookie();\r\n if (sessionId) {\r\n taskItem.PinterestImportContext.SessionId = sessionId; // eslint-disable-line\r\n } else {\r\n repository.logTrace(`Edit task met different userid. currentUserId: ${currentUserId} and taskItem.ModifiedBy.Id:${taskItem.ModifiedBy.Id}`);\r\n repository.logout();\r\n taskItem.PinterestImportContext.SessionId = null; // eslint-disable-line\r\n }\r\n }\r\n\r\n initialState.initialSettings = taskItem;\r\n initialState.initialSettings.taskItemId = deps.taskItemId;\r\n // the name is from last import\r\n initialState.isNameEdit = true;\r\n initialState.isEditingScheduledImport = true;\r\n\r\n return taskItem;\r\n })\r\n .then((taskItem) => {\r\n const {\r\n AccountName,\r\n SessionId,\r\n } = taskItem.PinterestImportContext;\r\n\r\n if (SessionId) {\r\n repository.setPinterestImportAccountInfoInCookie({\r\n loginAccount: AccountName,\r\n sessionId: SessionId,\r\n });\r\n }\r\n })\r\n .then(() => {\r\n if (initialState && initialState.isEditingScheduledImport) {\r\n const {\r\n PinterestImportContext: {\r\n CampaignIds,\r\n PinterestEntitiesBlobName,\r\n },\r\n ImportUserPreference,\r\n IsAutoFrequency,\r\n IsSmartImport,\r\n TimeZoneId,\r\n Cron,\r\n NotificationEmailAddresses,\r\n NotificationType,\r\n Name,\r\n } = initialState.initialSettings;\r\n let autoConvertCurrencyEnabled = ImportUserPreference &&\r\n ImportUserPreference.EnableAutoCurrencyConversion;\r\n if (_.isUndefined(autoConvertCurrencyEnabled) ||\r\n _.isNull(autoConvertCurrencyEnabled)) {\r\n autoConvertCurrencyEnabled = true;\r\n }\r\n\r\n initialState = _.extend(initialState, {\r\n IsAutoFrequency: !!IsAutoFrequency,\r\n IsSmartImport: !!IsSmartImport,\r\n ImportUserPreference,\r\n TimeZoneId,\r\n Cron,\r\n NotificationEmailAddresses,\r\n NotificationType,\r\n Name,\r\n CampaignIds,\r\n PinterestEntitiesBlobName,\r\n autoConvertCurrencyEnabled,\r\n });\r\n }\r\n return StepConstants.SignInStep.path;\r\n })\r\n .then(() => {\r\n patchState(initialState);\r\n // Go directly to importStep if passed in.\r\n const { importStep } = scope.values;\r\n\r\n if (importStep) {\r\n goToNextStep(importStep);\r\n }\r\n setLoading(false);\r\n })\r\n .finally(withUiBlock($(`.${rootContainerClassName}`), newI18n.getString(_TL_('Loading'))));\r\n } else if (existingPinterestAccount || logOutButtonClicked) {\r\n return ();\r\n }\r\n\r\n return loading ? null : ;\r\n });\r\n\r\n LoginStepPrefetch.propTypes = {\r\n rootContainerClassName: PropTypes.string.isRequired,\r\n };\r\n\r\n return LoginStepPrefetch;\r\n};\r\n","export const getActionBarItems = ({\r\n shouldGoToNextStep,\r\n prevStepName,\r\n nextStepName,\r\n nextButtonDisabled,\r\n}) => {\r\n const config = [{\r\n type: 'button-back',\r\n prevStepName,\r\n }, {\r\n type: 'button-next',\r\n validateFunction: shouldGoToNextStep,\r\n nextStepName,\r\n disabled: !!nextButtonDisabled,\r\n }, {\r\n type: 'button-cancel',\r\n extraLeftPadding: true,\r\n }];\r\n\r\n return config;\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n ADD_COLUMN,\r\n REMOVE_COLUMN,\r\n AccountSelector\r\n} from '@bingads-webui-campaign/imports-core';\r\n\r\nexport function PinterestImportAccountSelector(props) {\r\n const getSelectedListColumns = i18n => ([{\r\n key: 'account-name',\r\n name: i18n.getString(_TL_('Account name')),\r\n fieldName: 'Name',\r\n }, {\r\n key: REMOVE_COLUMN,\r\n name: '',\r\n fieldName: REMOVE_COLUMN,\r\n }]);\r\n\r\n const getAccountListColumns = i18n => ([{\r\n key: 'account-name',\r\n name: i18n.getString(_TL_('Pinterest Ads account name')),\r\n fieldName: 'Name',\r\n minWidth: 100,\r\n maxWidth: 450,\r\n isResizable: true,\r\n }, {\r\n key: 'account-id',\r\n name: i18n.getString(_TL_('Pinterest Ads account ID')),\r\n fieldName: 'Id',\r\n minWidth: 170,\r\n maxWidth: 170,\r\n isResizable: false,\r\n }, {\r\n key: 'currency',\r\n name: i18n.getString(_TL_('Pinterest Ads currency')),\r\n fieldName: 'Currency',\r\n minWidth: 155,\r\n maxWidth: 155,\r\n isResizable: false,\r\n }, {\r\n key: ADD_COLUMN,\r\n name: i18n.getString(_TL_('Add Button')),\r\n headerClassName: 'account-selector-add-column-header',\r\n fieldName: ADD_COLUMN,\r\n minWidth: 70,\r\n maxWidth: 70,\r\n }]);\r\n\r\n const { pinterestAccounts } = props.context;\r\n\r\n // will remove this condition later once we want to enable multi-single conversion scenarios.\r\n const maxSelectedItems = 1;\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nPinterestImportAccountSelector.propTypes = {\r\n context: PropTypes.shape({}).isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\n\r\nimport { Activity } from '@bingads-webui-react/hoc-with-signal';\r\nimport { StepContainer, ImportCoreContext, ErrorContainer } from '@bingads-webui-campaign/imports-core';\r\n\r\nimport { getActionBarItems } from './action-bar-config';\r\nimport { PinterestImportAccountSelector as AccountSelector } from './account-selector';\r\n\r\nclass PinterestAccountStepInternal extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n error: false,\r\n errorMsg: '',\r\n };\r\n this.WrappedAccountSelector =\r\n props.stepPrefetchHoc ? props.stepPrefetchHoc(AccountSelector) : AccountSelector;\r\n }\r\n\r\n componentDidUpdate() {\r\n const {\r\n contextValues,\r\n } = this.props;\r\n\r\n const {\r\n accountsPageError,\r\n } = contextValues;\r\n\r\n if (accountsPageError) {\r\n this.setError(accountsPageError);\r\n }\r\n }\r\n\r\n setError = msg => (\r\n this.setState({\r\n error: true,\r\n errorMsg: msg,\r\n })\r\n );\r\n\r\n clearError = () => (\r\n this.setState({\r\n error: false,\r\n })\r\n );\r\n\r\n validate = () => {\r\n const {\r\n contextValues,\r\n } = this.props;\r\n\r\n const {\r\n deps,\r\n selectedAccounts,\r\n } = contextValues;\r\n\r\n const i18n = deps.newI18n;\r\n\r\n if (_.isEmpty(selectedAccounts) || selectedAccounts.length === 0) {\r\n this.setError(i18n.getString(_TL_('Please choose a Pinterest Ads account')));\r\n return new Promise(resolve => resolve(false));\r\n }\r\n\r\n return new Promise(resolve => resolve(true));\r\n };\r\n\r\n render() {\r\n const {\r\n contextValues,\r\n stepTitle,\r\n prevStepName,\r\n nextStepName,\r\n prevStepNameIfPrefetchFail,\r\n nextStepNameIfPrefetchOnlyOneAccount,\r\n rootContainerClassName,\r\n isCurrencyConvertorDisabled,\r\n } = this.props;\r\n\r\n const { WrappedAccountSelector } = this;\r\n const { deps, accountsPageError, selectedAccounts } = contextValues;\r\n\r\n const { getUniqueImportGUID } = deps;\r\n\r\n const uniqueImportId = (getUniqueImportGUID && getUniqueImportGUID()) || '';\r\n\r\n const nextButtonDisabled = _.isEmpty(selectedAccounts);\r\n\r\n return (\r\n \r\n \r\n {/* the StepContainer asks for a single child */}\r\n \r\n \r\n {(this.state.error || accountsPageError)\r\n ? ()\r\n : null\r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nPinterestAccountStepInternal.propTypes = {\r\n contextValues: PropTypes.shape({}).isRequired,\r\n stepTitle: PropTypes.string.isRequired,\r\n prevStepName: PropTypes.string.isRequired,\r\n nextStepName: PropTypes.string.isRequired,\r\n stepPrefetchHoc: PropTypes.func,\r\n prevStepNameIfPrefetchFail: PropTypes.string.isRequired,\r\n nextStepNameIfPrefetchOnlyOneAccount: PropTypes.string.isRequired,\r\n rootContainerClassName: PropTypes.string,\r\n isCurrencyConvertorDisabled: PropTypes.bool,\r\n};\r\n\r\nPinterestAccountStepInternal.defaultProps = {\r\n stepPrefetchHoc: null,\r\n isCurrencyConvertorDisabled: false,\r\n rootContainerClassName: 'pinterest-import-root',\r\n};\r\n\r\nexport const PinterestAccountStep = React.memo(props => (\r\n \r\n {\r\n contextValues => (\r\n \r\n )\r\n }\r\n \r\n));\r\n","import _ from 'underscore';\r\n\r\nexport const getActionBarItems = ({\r\n i18n,\r\n startImporting,\r\n isReadOnly,\r\n scheduleOnly,\r\n onSwitchCustomizeMode,\r\n getPrevStepName,\r\n permissionFactory,\r\n}) => {\r\n const config = _.compact([{\r\n type: 'button-back',\r\n prevStepName: getPrevStepName(),\r\n }, {\r\n type: 'button',\r\n primary: true,\r\n className: 'start-import',\r\n text: scheduleOnly ? i18n.getString(_TL_('Set schedule')) : i18n.getString(_TL_('Start import')),\r\n onClick: startImporting,\r\n disabled: isReadOnly,\r\n },\r\n !(permissionFactory && permissionFactory.IsImportSmartScheduleStepImprovementEnabled && permissionFactory.IsImportSmartScheduleStepImprovementEnabled())\r\n && onSwitchCustomizeMode ? {\r\n type: 'button-link',\r\n className: 'customize-import-button',\r\n text: i18n.getString(_TL_('Advanced import')),\r\n onClick: onSwitchCustomizeMode,\r\n } : null,\r\n ]);\r\n\r\n return config;\r\n};\r\n","/* eslint-disable max-len */\r\nimport React, { useContext, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport Promise from 'bluebird';\r\nimport { ImportCoreContext } from '@bingads-webui-campaign/imports-core';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\n\r\nexport const withSmartImportStepPrefetch = (PreExecuteComponent) => {\r\n const SmartImportStepPrefetch = React.memo((props) => {\r\n const importCoreContext = useContext(ImportCoreContext);\r\n\r\n const {\r\n rootContainerClassName,\r\n } = props;\r\n\r\n const {\r\n deps,\r\n repository,\r\n patchState,\r\n selectedAccounts,\r\n previousImportOptions,\r\n PinterestEntitiesBlobName,\r\n isEditingScheduledImport,\r\n CampaignIds,\r\n accountToCampaignsOptionsMapping = {},\r\n ImportUserPreference,\r\n IsSmartImport,\r\n } = importCoreContext;\r\n\r\n const {\r\n i18n,\r\n toggleCampaignsSelectionStep,\r\n } = deps;\r\n\r\n const doAllAccountsHaveCampaign = ({\r\n accountsToCampaign,\r\n }) => {\r\n const accountIdsWithNoCampaign = [];\r\n\r\n _.each(accountsToCampaign, (campaigns, customerId) => {\r\n // for single account we get data as: { AccountId: { pinterestCampaigns: [] }}\r\n // eslint-disable-next-line no-param-reassign\r\n campaigns = campaigns.pinterestCampaigns;\r\n\r\n if ((campaigns && campaigns.length === 0) || _.isEmpty(campaigns)) {\r\n accountIdsWithNoCampaign.push(customerId);\r\n }\r\n });\r\n\r\n const accountWithNoCampaigns = [];\r\n\r\n if (accountIdsWithNoCampaign.length > 0) {\r\n _.each(accountIdsWithNoCampaign, (accountId) => {\r\n const accountMatchingCustomerId = _.filter(selectedAccounts, account => (account.Id === parseInt(accountId, 10)));\r\n\r\n if (accountMatchingCustomerId.length > 0) {\r\n accountWithNoCampaigns.push(accountMatchingCustomerId[0].Name);\r\n }\r\n });\r\n }\r\n\r\n // check if all the accounts have no campaings.\r\n // for single account this will always be 1.\r\n // for multiaccount all the accounts shouldn't have campaigns for us to hide the campaigns step.\r\n if (accountWithNoCampaigns.length === selectedAccounts.length) {\r\n return false;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n const [loading, setLoading] = useState(true); // to notify api is loading.\r\n const [dispatchedOdataCall, setDispatchedOdataCall] = useState(false);\r\n\r\n const accountIdsToFetch = _.filter(selectedAccounts, account => !_.has(accountToCampaignsOptionsMapping, account.Id));\r\n\r\n if (loading &&\r\n !dispatchedOdataCall &&\r\n accountIdsToFetch.length !== 0\r\n ) {\r\n setDispatchedOdataCall(true);\r\n\r\n // promise object holding each\r\n // customerId : promise to getCampaigns\r\n // userPreference: promise to get options for the cid or aid.\r\n const promiseObject = {};\r\n\r\n const customerId = selectedAccounts[0].Id;\r\n\r\n promiseObject[customerId] = repository.prepareForCampaignSelectionStep(customerId, PinterestEntitiesBlobName);\r\n\r\n\r\n // if account change, previousImportOptions is null, we will call api to get it\r\n if (!previousImportOptions) {\r\n promiseObject.getUserPreferences = repository.getPinterestImportUserPreferences(selectedAccounts[0].Id);\r\n }\r\n\r\n Promise.props(promiseObject)\r\n // campaignState if it's editing schedule import:\r\n .then((result) => {\r\n const preferences = result.getUserPreferences;\r\n\r\n // remove the preference from promise result object\r\n // eslint-disable-next-line\r\n delete result.getUserPreferences;\r\n // already selected accounts\r\n const alreadySelectedPinterestAccounts = {};\r\n\r\n _.each(accountToCampaignsOptionsMapping, (mapping, cid) => {\r\n alreadySelectedPinterestAccounts[cid] = mapping.campaignsData;\r\n });\r\n\r\n // check if any of the accounts dont have campaigns.\r\n // if we have any accounts with no campaigns we skip the campaign selection step.\r\n const hasAccountsWithNoCampaigns = !doAllAccountsHaveCampaign({\r\n accountsToCampaign: { ...result, ...alreadySelectedPinterestAccounts },\r\n });\r\n\r\n // patch campaign selection data for editing scheduled import scenario\r\n const pinterestEntitiesSelectionData = {};\r\n const { pinterestCampaigns } = result[selectedAccounts[0].Id];\r\n\r\n // for single account mode we need additional data from getCampaigns call.\r\n const {\r\n selectedCampaignIds,\r\n } = result[selectedAccounts[0].Id];\r\n\r\n if (isEditingScheduledImport) {\r\n if (!selectedCampaignIds && CampaignIds) {\r\n pinterestEntitiesSelectionData.selectedCampaignIds = CampaignIds;\r\n }\r\n _.extend(\r\n pinterestEntitiesSelectionData,\r\n !!selectedCampaignIds && { selectedCampaignIds }\r\n );\r\n }\r\n\r\n // map each customer's customerId to their campaigns.\r\n _.each(result, (pinterestCampaingsForCustomerId, cid) => {\r\n accountToCampaignsOptionsMapping[cid] = {\r\n campaignsData: {\r\n ...pinterestCampaingsForCustomerId,\r\n },\r\n preference: {\r\n ...preferences,\r\n },\r\n };\r\n });\r\n\r\n let importOptions = preferences;\r\n if (isEditingScheduledImport && ImportUserPreference && !IsSmartImport) {\r\n importOptions = ImportUserPreference;\r\n }\r\n\r\n patchState({\r\n pinterestCampaigns,\r\n ...previousImportOptions ? {} : {\r\n previousImportOptions: preferences,\r\n importOptions,\r\n },\r\n pinterestEntitiesSelectionData,\r\n selectedAccounts,\r\n accountToCampaignsOptionsMapping,\r\n accountsPageError: null,\r\n hasAccountsWithNoCampaigns,\r\n CampaignIds: selectedCampaignIds,\r\n });\r\n\r\n if (hasAccountsWithNoCampaigns) {\r\n toggleCampaignsSelectionStep(false);\r\n } else {\r\n toggleCampaignsSelectionStep(true);\r\n }\r\n\r\n setLoading(false);\r\n })\r\n .finally(withUiBlock($(`.${rootContainerClassName}`), i18n.getString(_TL_('Loading'))));\r\n } else if (accountIdsToFetch.length === 0 && !dispatchedOdataCall) {\r\n const filteredAccountsToCampaign = {};\r\n\r\n _.each(accountToCampaignsOptionsMapping, (mapping, customerId) => {\r\n filteredAccountsToCampaign[customerId] = mapping.campaignsData;\r\n });\r\n\r\n const hasAccountsWithNoCampaigns = !doAllAccountsHaveCampaign({\r\n accountsToCampaign: filteredAccountsToCampaign,\r\n });\r\n\r\n const customerId = selectedAccounts[0].Id;\r\n\r\n const { pinterestCampaigns } = accountToCampaignsOptionsMapping[customerId].campaignsData;\r\n\r\n const { preference } = accountToCampaignsOptionsMapping[customerId];\r\n\r\n let importOptions = preference;\r\n if (isEditingScheduledImport && ImportUserPreference && !IsSmartImport) {\r\n importOptions = ImportUserPreference;\r\n }\r\n\r\n patchState({\r\n accountsPageError: null,\r\n pinterestCampaigns,\r\n hasAccountsWithNoCampaigns,\r\n ...previousImportOptions ? {} : {\r\n previousImportOptions: preference,\r\n importOptions,\r\n },\r\n });\r\n\r\n if (hasAccountsWithNoCampaigns) {\r\n toggleCampaignsSelectionStep(false);\r\n } else {\r\n toggleCampaignsSelectionStep(true);\r\n }\r\n\r\n return ();\r\n }\r\n\r\n return (\r\n
\r\n {\r\n loading ?
: \r\n }\r\n
\r\n );\r\n });\r\n\r\n SmartImportStepPrefetch.propTypes = {\r\n rootContainerClassName: PropTypes.string.isRequired,\r\n };\r\n\r\n return SmartImportStepPrefetch;\r\n};\r\n\r\n","\r\nimport $ from 'jquery';\r\nimport Promise from 'bluebird';\r\nimport { first, chain, once } from 'underscore';\r\nimport { Constants as CCUIConstants } from '@bingads-webui-clientcenter/entity-utils';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\n\r\nconst FAC_STATUS_PICKEDUP = CCUIConstants.RecommendationAdoptionStatus.PickedUp;\r\n\r\nexport const createScheduledImportAndGoNextWhenReady = (\r\n taskItemBody,\r\n state\r\n) => {\r\n const { repository, deps } = state;\r\n let taskItemPromise;\r\n\r\n if (state.isEditingScheduledImport) {\r\n taskItemPromise = repository.updateScheduledImportTaskItem(\r\n taskItemBody,\r\n state.initialSettings.taskItemId\r\n );\r\n } else {\r\n taskItemPromise = repository.createScheduledImportTaskItem(taskItemBody);\r\n }\r\n\r\n // runnow/once/recurring jobs are all update coupon status.\r\n if (deps.calloutcardCoupon) {\r\n taskItemPromise = repository.updateCouponStatus(\r\n taskItemPromise,\r\n FAC_STATUS_PICKEDUP,\r\n true\r\n );\r\n }\r\n\r\n return taskItemPromise;\r\n};\r\n\r\nconst StartImportErrorCodes = {\r\n TaskSchedulingInvalid: _TL_('An error occured while saving the import. Time chosen to schedule the import is invalid.'),\r\n PinterestSyncApiInternalError: _TL_('Pinterest Advertising encountered an unexpected error. Please try restarting your import or contact Support.'),\r\n PinterestSyncThrottlingLimitReached: _TL_('Pinterest Advertising is currently limiting the number of import requests that can be made. Please try your import again later.'),\r\n PinterestSyncAccessDenied: _TL_('Pinterest Advertising has denied permission to import from the linked account. Please log out of Pinterest and try importing again, or contact Support.'),\r\n GenericImportError: _TL_('Microsoft Ads has encountered an error. Please try again later or contact support.'),\r\n};\r\n\r\nexport const createRunNowImportAndGoNextWhenReady = (\r\n taskItemBody,\r\n state,\r\n setImportStatus,\r\n getNextStepName,\r\n isRunNowImport\r\n) => {\r\n const {\r\n repository,\r\n deps,\r\n goToNextStep,\r\n patchState,\r\n } = state;\r\n\r\n let taskItemPromise = repository.createRunNowImportTaskItem(taskItemBody);\r\n // runnow/once/recurring jobs are all update coupon status.\r\n if (isRunNowImport && deps.calloutcardCoupon) {\r\n taskItemPromise = repository.updateCouponStatus(\r\n taskItemPromise,\r\n FAC_STATUS_PICKEDUP,\r\n true\r\n );\r\n }\r\n\r\n return taskItemPromise\r\n .then((response) => {\r\n deps.toggleShowImportStatusStep(true);\r\n\r\n setImportStatus({\r\n taskItemExecutionId: first(response.TaskItemExecutions).Id,\r\n });\r\n patchState({\r\n hideProgressList: true,\r\n });\r\n\r\n goToNextStep(getNextStepName({ isRunNowImport: true }));\r\n });\r\n};\r\n\r\nexport const formatTaskData = (contextValues, taskData) => {\r\n const {\r\n selectedAccounts,\r\n pinterestEntitiesSelectionData,\r\n CampaignIds,\r\n } = contextValues;\r\n const scheduleStepState = {\r\n pinterestCustomerId: selectedAccounts[0].Id,\r\n campaignIds: CampaignIds,\r\n pinterestEntitiesSelectionData,\r\n };\r\n return {\r\n ...taskData,\r\n scheduleStepState,\r\n };\r\n};\r\n\r\nexport const createImportAndGoNextWhenReady = ({\r\n state,\r\n generateTaskData,\r\n setImportStatus,\r\n activity,\r\n getNextStepName,\r\n rootContainerClassName,\r\n showErrorMessage,\r\n}) => {\r\n const {\r\n repository,\r\n patchState,\r\n goToNextStep,\r\n deps,\r\n } = state;\r\n\r\n const {\r\n isRunNowWithScheduledImport,\r\n isRunNowImport,\r\n isScheduledImport,\r\n scheduleStepState,\r\n importOptions,\r\n importOptionsRunnow,\r\n } = generateTaskData();\r\n\r\n // adopt import callout card recommendation\r\n const adoptResumeImportCalloutCardRecommendation = once((info) => {\r\n const { defaultLogActivity, odata, adoptResumeImportRecommendation } = deps;\r\n if (defaultLogActivity && odata && adoptResumeImportRecommendation) {\r\n adoptResumeImportRecommendation({ odata, loggerApi: defaultLogActivity, info });\r\n }\r\n });\r\n\r\n return Promise.resolve()\r\n .then(() => {\r\n if (isRunNowWithScheduledImport || isScheduledImport) {\r\n return repository.preparePinterestImportTaskItem({\r\n importOptions,\r\n stepState: scheduleStepState,\r\n }).then((scheduleBody) => {\r\n adoptResumeImportCalloutCardRecommendation(scheduleBody);\r\n return createScheduledImportAndGoNextWhenReady(\r\n scheduleBody,\r\n state\r\n );\r\n });\r\n }\r\n\r\n return Promise.resolve(true);\r\n })\r\n .then(() => {\r\n if (isRunNowImport || isRunNowWithScheduledImport) {\r\n return repository.preparePinterestImportTaskItem({\r\n importOptions: importOptionsRunnow,\r\n stepState: scheduleStepState,\r\n }).then((runNowBody) => {\r\n adoptResumeImportCalloutCardRecommendation(runNowBody);\r\n return createRunNowImportAndGoNextWhenReady(runNowBody, state, setImportStatus, getNextStepName, isRunNowImport) // eslint-disable-line\r\n });\r\n }\r\n patchState({\r\n hideProgressList: true,\r\n });\r\n deps.toggleShowImportSummary(true);\r\n\r\n goToNextStep(getNextStepName({ isRunNowImport: false }));\r\n return Promise.resolve(false);\r\n })\r\n .catch((errors) => {\r\n const ODataError = chain(errors)\r\n .result('responseJSON')\r\n .result('value')\r\n .result('0')\r\n .result('Code')\r\n .value();\r\n const errorMessage = StartImportErrorCodes[ODataError] ||\r\n StartImportErrorCodes.GenericImportError;\r\n\r\n showErrorMessage(deps.newI18n.getString(errorMessage));\r\n\r\n if (activity) {\r\n activity.signal(`step wizard encountered an error while importing - ${JSON.stringify(errors)}`);\r\n }\r\n })\r\n .finally(withUiBlock($(`.${rootContainerClassName}`), deps.newI18n.getString(_TL_('Loading'))));\r\n};\r\n","import React from 'react';\r\n\r\nimport { StartImportSmartStep as GeneralStartImportStep } from '@bingads-webui-campaign/imports-core';\r\n\r\nimport { StepConstants } from '../../page/step-config';\r\nimport { getActionBarItems } from './action-bar-config';\r\nimport { withSmartImportStepPrefetch } from './smart-import-step-prefetch';\r\nimport { createImportAndGoNextWhenReady } from '../helpers/create-schedule-runnow-job';\r\n\r\nconst getAdvancedCustomizingStepName = (hasAccountsWithNoCampaigns) => {\r\n if (hasAccountsWithNoCampaigns) {\r\n return StepConstants.ImportOptionStep.path;\r\n }\r\n return StepConstants.PinterestCampaignStep.path;\r\n};\r\n\r\nconst getPrevStepName = () => StepConstants.ChooseAccounts.path;\r\n\r\nconst getNextStepName = ({ isRunNowImport }) => {\r\n if (isRunNowImport) {\r\n return StepConstants.ImportStatusStep.path;\r\n }\r\n return StepConstants.ImportSummaryStep.path;\r\n};\r\n\r\nconst formatTaskData = (contextValues, taskData) => {\r\n const {\r\n selectedAccounts,\r\n } = contextValues;\r\n const scheduleStepState = {\r\n pinterestCustomerId: selectedAccounts[0].Id,\r\n campaignIds: [],\r\n pinterestEntitiesSelectionData: null,\r\n };\r\n return {\r\n ...taskData,\r\n scheduleStepState,\r\n };\r\n};\r\n\r\nexport const StartImportSmartStep = props => (\r\n \r\n);\r\n","import { StepConstants } from '../../page/step-config';\r\n\r\nexport const getActionBarItems = (\r\n shouldGoToNextStep,\r\n shouldGoToPreviousStep,\r\n hasAccountsWithNoCampaigns\r\n) => {\r\n const config = [{\r\n type: 'button-back',\r\n validateFunction: shouldGoToPreviousStep,\r\n prevStepName: hasAccountsWithNoCampaigns ?\r\n StepConstants.StartImportSmart.path :\r\n StepConstants.PinterestCampaignStep.path,\r\n }, {\r\n type: 'button-next',\r\n validateFunction: shouldGoToNextStep,\r\n nextStepName: StepConstants.StartImportAdvanced.path,\r\n }, {\r\n type: 'button-cancel',\r\n extraLeftPadding: true,\r\n }];\r\n\r\n return config;\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ImportOptionsStep } from '@bingads-webui-campaign/imports-core';\r\nimport { getActionBarItems } from './action-bar-config';\r\nimport { withSmartImportStepPrefetch } from '../start-smart-import-step/smart-import-step-prefetch';\r\nimport { withPinterestImportAccountSelectionStepPrefetch } from '../pinterest-account-step/prefetch';\r\nimport { StepConstants } from '../../page/step-config';\r\nimport { getImportOptionFields, getSubFieldsBlackList } from './pinterest-import-option-config';\r\n\r\nconst PinterestImportOptionsStepWithoutHOCs = props => (\r\n \r\n);\r\n\r\nPinterestImportOptionsStepWithoutHOCs.propTypes = {\r\n permissions: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nexport const PinterestImportOptionsStep =\r\n // eslint-disable-next-line\r\n withPinterestImportAccountSelectionStepPrefetch(withSmartImportStepPrefetch(PinterestImportOptionsStepWithoutHOCs));\r\n","import { StepConstants } from '../../page/step-config';\r\n\r\nexport const getActionBarItems = (\r\n i18n,\r\n startImporting,\r\n isReadOnly,\r\n scheduleOnly\r\n) => {\r\n const config = [{\r\n type: 'button-back',\r\n prevStepName: StepConstants.ImportOptionStep.path,\r\n }, {\r\n type: 'button',\r\n primary: true,\r\n className: 'start-import',\r\n text: scheduleOnly ? i18n.getString(_TL_('Set schedule')) : i18n.getString(_TL_('Start import')),\r\n onClick: startImporting,\r\n disabled: isReadOnly,\r\n }, {\r\n type: 'button-cancel',\r\n extraLeftPadding: true,\r\n }];\r\n\r\n return config;\r\n};\r\n","import React from 'react';\r\nimport {\r\n StartImportAdvancedStep as GeneralStartImportAdvancedStep,\r\n} from '@bingads-webui-campaign/imports-core';\r\nimport { getActionBarItems } from './action-bar-config';\r\nimport { StepConstants } from '../../page/step-config';\r\nimport { formatTaskData, createImportAndGoNextWhenReady } from '../helpers/create-schedule-runnow-job';\r\n\r\nexport const getNextStepName = ({ isRunNowImport }) => (isRunNowImport\r\n ? StepConstants.ImportStatusStep.path\r\n : StepConstants.ImportSummaryStep.path);\r\n\r\nexport const StartImportAdvancedStep = props => (\r\n \r\n);\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { notificationApi, NotificationLevel } from '@bingads-webui-react/notification-center';\r\n\r\nexport const onSavePinterestImportScheduleInfo = ({\r\n contextValues,\r\n tasks,\r\n displaystring,\r\n onEditScheduleClose,\r\n}) => {\r\n const { scheduledTaskItemBody } = tasks;\r\n const {\r\n Name,\r\n isNameEdit,\r\n getStateValue,\r\n patchState,\r\n repository,\r\n deps,\r\n IsSmartImport,\r\n importOptions: importUserPreferences,\r\n pinterestEntitiesSelectionData,\r\n } = contextValues;\r\n\r\n const { i18n } = deps;\r\n\r\n const scheduleStepState = {\r\n pinterestCustomerId: getStateValue('selectedAccounts')[0].Id,\r\n pinterestEntitiesSelectionData: IsSmartImport ? null : pinterestEntitiesSelectionData,\r\n };\r\n\r\n const importOptions = {\r\n notificationType: scheduledTaskItemBody.NotificationType,\r\n notificationEmailAddresses: scheduledTaskItemBody.NotificationEmailAddresses,\r\n timeZoneId: scheduledTaskItemBody.TimeZoneId,\r\n name: isNameEdit ? Name : scheduledTaskItemBody.defaultName,\r\n cron: scheduledTaskItemBody.Cron,\r\n IsAutoFrequency: scheduledTaskItemBody.IsAutoFrequency,\r\n IsSmartImport,\r\n importUserPreferences: IsSmartImport ? null : importUserPreferences,\r\n };\r\n\r\n if (scheduledTaskItemBody) {\r\n repository.preparePinterestImportTaskItem({\r\n importOptions,\r\n stepState: scheduleStepState,\r\n })\r\n .then(finalBody => (\r\n repository.createScheduledImportTaskItem(finalBody)\r\n ))\r\n .then(() => {\r\n notificationApi.add({\r\n severity: NotificationLevel.Confirmation,\r\n title: '',\r\n message: i18n.get('Scheduled_Import_Summary_Header').replace('{0}', displaystring),\r\n target: 'FloatingBanner',\r\n });\r\n patchState({\r\n isRunNowImport: false,\r\n isRunNowWithScheduledImport: true,\r\n Name: isNameEdit ? Name : scheduledTaskItemBody.defaultName,\r\n scheduleSummaryString: displaystring,\r\n });\r\n onEditScheduleClose();\r\n })\r\n .finally(withUiBlock(\r\n /* target */ $('.schedule-setting-editor-panel .panel-content'),\r\n /* loadingText */ i18n.getString('Loading'),\r\n /* shouldFocus */ _,\r\n /* delayedLoading */ _,\r\n /* overlayZIndex */ '1010'\r\n ));\r\n }\r\n};\r\n","import {\r\n parseCronToDisplayString,\r\n ImportSchedulingOptions,\r\n} from '@bingads-webui-campaign/imports-core';\r\n\r\nexport const getPinterestImportDetailsView = (contextValues) => {\r\n const {\r\n deps,\r\n getStateValue,\r\n IsAutoFrequency,\r\n TimeZoneId,\r\n Cron,\r\n repository,\r\n isScheduledImport,\r\n isRunNowWithScheduledImport,\r\n selectedAccounts,\r\n } = contextValues;\r\n\r\n const importSchedulingOptions = new ImportSchedulingOptions(deps.i18n);\r\n\r\n\r\n const { config, newI18n } = deps;\r\n const scheduleSummaryString = getStateValue('scheduleSummaryString') || parseCronToDisplayString(\r\n deps.newI18n,\r\n IsAutoFrequency,\r\n Cron,\r\n TimeZoneId,\r\n importSchedulingOptions,\r\n false,\r\n deps.timeZoneMapper\r\n );\r\n\r\n const frequencyStat = scheduleSummaryString;\r\n\r\n const importDetails = [{\r\n label: newI18n.getString(_TL_('Import name')),\r\n value: getStateValue('Name'),\r\n labelClassName: 'import-name',\r\n }, {\r\n label: newI18n.getString(_TL_('Pinterest account')),\r\n value: repository.getPinterestAccountName(),\r\n labelClassName: 'import-pinterest-email import-email',\r\n }, {\r\n label: newI18n.getString(_TL_('Pinterest Ads account')),\r\n value: selectedAccounts[0].Name,\r\n labelClassName: 'import-pinterest-account-name import-account-name',\r\n }, {\r\n label: newI18n.getString(_TL_('Microsoft Advertising account')),\r\n value: config.get('CurrentAccount').Title,\r\n labelClassName: 'import-microsoft-account-name',\r\n }, (isScheduledImport || isRunNowWithScheduledImport) && {\r\n label: newI18n.getString(_TL_('Schedule and frequency')),\r\n value: frequencyStat,\r\n labelClassName: 'import-schedule-and-frequency',\r\n }];\r\n\r\n return importDetails;\r\n};\r\n","import React from 'react';\r\nimport { ImportSummaryPage as GenericImportSummaryPage } from '@bingads-webui-campaign/imports-core';\r\nimport { onSavePinterestImportScheduleInfo } from './save-schedule-info';\r\nimport { getPinterestImportDetailsView } from './get-import-details-view';\r\n\r\nconst errorMessage = _TL_('Note: Some of your data might have been skipped or modified during import because of differences between Microsoft Advertising and Pinterest Ads.');\r\nconst learnMoreText = _TL_('Learn more about importing campaigns from Pinterest Ads.');\r\nconst noCampaignAlert = _TL_('We were unable to import any campaigns from this account. Going forward, we\\'ll keep your Pinterest Ads account in sync with this Microsoft Advertising account.');\r\nconst cardPanelTitles = {\r\n Additions: _TL_('New items imported from Pinterest Ads'),\r\n};\r\n\r\nexport const PinterestImportSummaryStep = props => (\r\n \r\n);\r\n","import React from 'react';\r\n\r\nimport {\r\n ImportStatusStep as GeneralImportStatusStep,\r\n} from '@bingads-webui-campaign/imports-core';\r\n\r\nimport { StepConstants } from '../../page/step-config';\r\n\r\nexport const ImportStatusStep = props => (\r\n \r\n);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { VerticalSeparatedLayout } from '@bingads-webui-react/steps';\r\nimport { ImportType, CampaignSelectionStep } from '@bingads-webui-campaign/imports-core';\r\n\r\nimport { withPinterestImportAccountSelectionStepPrefetch } from '../steps/pinterest-account-step/prefetch';\r\nimport { StepConstants } from './step-config';\r\nimport { PinterestLoginStep, renderDescription } from '../steps/pinterest-login-step';\r\nimport { PinterestAccountStep } from '../steps/pinterest-account-step';\r\nimport { StartImportSmartStep } from '../steps/start-smart-import-step';\r\nimport { PinterestImportOptionsStep } from '../steps/pinterest-import-option-step';\r\nimport { StartImportAdvancedStep } from '../steps/start-import-advanced-step';\r\nimport { PinterestImportSummaryStep } from '../steps/pinterest-import-summary-step';\r\nimport { ImportStatusStep } from '../steps/import-status-step';\r\n\r\nconst {\r\n Step,\r\n} = VerticalSeparatedLayout;\r\n\r\nexport const getPinterestLoginStep = ({\r\n i18n,\r\n repository,\r\n rootContainerClassName,\r\n}) => {\r\n const title = i18n.getString(StepConstants.SignInStep.stepName);\r\n const { path } = StepConstants.SignInStep;\r\n return (\r\n renderDescription(i18n, StepConstants.SignInStep.path, repository)}\r\n >\r\n \r\n \r\n );\r\n};\r\n\r\ngetPinterestLoginStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n repository: PropTypes.shape({}).isRequired,\r\n rootContainerClassName: PropTypes.string.isRequired,\r\n};\r\n\r\nexport const getPinterestAccountStep = ({\r\n i18n,\r\n rootContainerClassName,\r\n}) => {\r\n const title = i18n.getString(StepConstants.ChooseAccounts.stepName);\r\n const { path } = StepConstants.ChooseAccounts;\r\n const prevStepName = StepConstants.SignInStep.path;\r\n const nextStepName = StepConstants.StartImportSmart.path;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\ngetPinterestAccountStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n rootContainerClassName: PropTypes.string.isRequired,\r\n};\r\n\r\nexport const getStartImportSmartStep = ({\r\n i18n,\r\n getImportType,\r\n setImportStatus,\r\n rootContainerClassName,\r\n}) => {\r\n const title = i18n.getString(StepConstants.StartImportSmart.stepName);\r\n const { path } = StepConstants.StartImportSmart;\r\n const isEnabled = getImportType() === ImportType.Smart;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\ngetStartImportSmartStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n getImportType: PropTypes.func.isRequired,\r\n setImportStatus: PropTypes.func.isRequired,\r\n rootContainerClassName: PropTypes.string.isRequired,\r\n};\r\n\r\nexport const getPinterestCampaignStep = ({\r\n i18n,\r\n getImportType,\r\n showCampaignSelectionStep,\r\n rootContainerClassName,\r\n repository,\r\n permissions,\r\n}) => {\r\n const title = i18n.getString(StepConstants.PinterestCampaignStep.stepName);\r\n const { path } = StepConstants.PinterestCampaignStep;\r\n const isEnabled = getImportType() === ImportType.Advanced && showCampaignSelectionStep;\r\n\r\n return (\r\n \r\n \r\n repository.getPinterestCampaigns(selectedAccount.Id)}\r\n entitiesSelectionDataName=\"pinterestEntitiesSelectionData\"\r\n permissions={permissions}\r\n />\r\n \r\n );\r\n};\r\n\r\ngetPinterestCampaignStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n getImportType: PropTypes.func.isRequired,\r\n showCampaignSelectionStep: PropTypes.bool.isRequired,\r\n rootContainerClassName: PropTypes.string.isRequired,\r\n repository: PropTypes.shape({}).isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nexport const getPinterestImportOptionsStep = ({\r\n i18n,\r\n deps,\r\n getImportType,\r\n permissions,\r\n rootContainerClassName,\r\n}) => {\r\n const title = i18n.getString(StepConstants.ImportOptionStep.stepName);\r\n const { path } = StepConstants.ImportOptionStep;\r\n const isEnabled = getImportType() === ImportType.Advanced;\r\n const importAccountCurrencyTitle = i18n.getString(_TL_('Pinterest Ads:'));\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\ngetPinterestImportOptionsStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n deps: PropTypes.shape({}).isRequired,\r\n getImportType: PropTypes.func.isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n rootContainerClassName: PropTypes.string.isRequired,\r\n};\r\n\r\nexport const getStartImportAdvancedStep = ({\r\n i18n,\r\n getImportType,\r\n setImportStatus,\r\n rootContainerClassName,\r\n}) => {\r\n const title = i18n.getString(StepConstants.StartImportAdvanced.stepName);\r\n const { path } = StepConstants.StartImportAdvanced;\r\n const isEnabled = getImportType() === ImportType.Advanced;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\ngetStartImportAdvancedStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n getImportType: PropTypes.func.isRequired,\r\n setImportStatus: PropTypes.func.isRequired,\r\n rootContainerClassName: PropTypes.string.isRequired,\r\n};\r\n\r\nexport const getImportSummaryStep = ({\r\n i18n,\r\n showImportSummary,\r\n}) => {\r\n const title = i18n.getString(StepConstants.ImportSummaryStep.title);\r\n const { path } = StepConstants.ImportSummaryStep;\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\ngetImportSummaryStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n showImportSummary: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport const getImportStatusStep = ({\r\n i18n,\r\n getImportStatus,\r\n showImportStatusStep,\r\n rootContainerClassName,\r\n}) => {\r\n const title = i18n.getString(StepConstants.ImportStatusStep.title);\r\n const { path } = StepConstants.ImportStatusStep;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\ngetImportStatusStep.propTypes = {\r\n i18n: PropTypes.shape({}).isRequired,\r\n getImportStatus: PropTypes.func.isRequired,\r\n showImportStatusStep: PropTypes.bool.isRequired,\r\n rootContainerClassName: PropTypes.string.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Promise from 'bluebird';\r\n// import $ from 'jquery';\r\nimport { BaseImportCore, checkRequiredDeps, ImportType, ImportMode } from '@bingads-webui-campaign/imports-core';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\n// import { Constants as CCUIConstants } from '@bingads-webui-clientcenter/entity-utils';\r\n// import { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport { Scenario } from '@bingads-webui-react/hoc-with-signal';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\nimport { importOptionFieldHelpIds } from '../steps/pinterest-import-option-step/pinterest-import-option-config';\r\nimport { StepConstants } from './step-config';\r\nimport { PinterestImportRepository, PinterestLoginRepository, PermissionFactory } from '../repository';\r\n\r\nimport {\r\n getPinterestLoginStep,\r\n getPinterestAccountStep,\r\n getStartImportSmartStep,\r\n getPinterestCampaignStep,\r\n getPinterestImportOptionsStep,\r\n getStartImportAdvancedStep,\r\n getImportSummaryStep,\r\n getImportStatusStep,\r\n} from './step-factory';\r\n\r\nfunction checkRequiredDepsForPinterestImport(deps) {\r\n checkRequiredDeps(deps);\r\n deps.check('edm');\r\n deps.check('jsData');\r\n deps.check('cookieHelperForEditImport');\r\n}\r\n\r\nconst rootContainerClassName = 'pinterest-import-root';\r\n\r\nexport class PinterestImportPage extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n this.perfMarker = props.perfMarker;\r\n this.steps = [];\r\n this.state = {\r\n isInit: false,\r\n importType: ImportType.Smart,\r\n importMode: ImportMode.Single,\r\n showImportSummary: false, // eslint-disable-line\r\n showImportStatusStep: false, // eslint-disable-line\r\n importStatus: null,\r\n startStep: StepConstants.SignInStep, // pinterest-login-step\r\n hideProgressList: false,\r\n showCampaignSelectionStep: true, // eslint-disable-line\r\n uniqueImportGUID: generateGuid(),\r\n };\r\n this.initialize(props);\r\n }\r\n\r\n componentDidUpdate = (prevProps) => {\r\n if (prevProps.location.key !== this.props.location.key) {\r\n // eslint-disable-next-line\r\n this.setState({\r\n isInit: false,\r\n importType: ImportType.Smart,\r\n importMode: ImportMode.Single,\r\n showImportSummary: false, // eslint-disable-line\r\n showImportStatusStep: false, // eslint-disable-line\r\n importStatus: null,\r\n startStep: StepConstants.SignInStep,\r\n hideProgressList: false,\r\n showCampaignSelectionStep: true, // eslint-disable-line\r\n uniqueImportGUID: generateGuid(),\r\n });\r\n this.initialState = {};\r\n this.initialize(prevProps);\r\n }\r\n }\r\n\r\n getUniqueImportGUID = () => this.state.uniqueImportGUID;\r\n\r\n getImportType = () => this.state.importType;\r\n\r\n setImportStatus = (status) => {\r\n this.setState({\r\n importStatus: status,\r\n });\r\n }\r\n\r\n getImportStatus = () => this.state.importStatus;\r\n\r\n getImportMode = () => this.state.importMode;\r\n\r\n getImportScope = () => this.state.ImportScope;\r\n\r\n logTrace(...args) {\r\n this.repository.logTrace(...args);\r\n }\r\n\r\n initialize = (props) => {\r\n this.perfMarker.willFetchData();\r\n\r\n // don't take reject param, if coupon call fails, we will just not show the offer\r\n Promise.resolve().then(() => {\r\n checkRequiredDepsForPinterestImport(props.deps);\r\n this.deps = props.deps;\r\n\r\n // Deps.\r\n this.deps.newI18n = this.props.i18n;\r\n this.deps.importStatus = this.state.importStatus;\r\n this.deps.perfMarker = this.props.perfMarker;\r\n this.deps.scope = props.scope;\r\n this.deps.serverContext = props.serverContext;\r\n this.i18n = this.deps.i18n;\r\n this.deps.loginPerfMarker = this.props.perfMarker.createChild('Smart_Import_Login_Step');\r\n this.deps.loginPerfMarker.willInit();\r\n\r\n // Unique Import ID for substrate.\r\n this.deps.getUniqueImportGUID = this.getUniqueImportGUID;\r\n\r\n // Toggle functions.\r\n this.deps.toggleShowImportSummary = this.toggleShowImportSummary;\r\n this.deps.toggleShowImportStatusStep = this.toggleShowImportStatusStep;\r\n this.deps.toggleCampaignsSelectionStep = this.toggleCampaignsSelectionStep;\r\n\r\n // Import options help Ids\r\n this.deps.importOptionFieldHelpIds = importOptionFieldHelpIds;\r\n\r\n // Repository init.\r\n this.repository = new PinterestImportRepository({\r\n deps: this.deps,\r\n });\r\n\r\n this.pinterestLoginRepository = new PinterestLoginRepository(this.deps.config);\r\n\r\n this.permissionFactory = this.deps.permissionFactory\r\n ? this.deps.permissionFactory\r\n : new PermissionFactory({\r\n permissions: props.permissions,\r\n importMode: props.scope.values.aid ? ImportMode.Single : ImportMode.Multi,\r\n });\r\n\r\n const initialStateFetchPromise = Promise.resolve([]);\r\n\r\n return initialStateFetchPromise.then(() => {\r\n this.setState({\r\n isInit: true,\r\n });\r\n });\r\n });\r\n }\r\n\r\n toggleShowImportSummary = (state) => {\r\n this.setState({\r\n showImportSummary: state, // eslint-disable-line\r\n });\r\n }\r\n\r\n toggleShowImportStatusStep = (state) => {\r\n this.setState({\r\n showImportStatusStep: state, // eslint-disable-line\r\n });\r\n }\r\n\r\n toggleImportType = (type) => {\r\n this.setState({\r\n importType: type,\r\n });\r\n }\r\n\r\n toggleImportMode = (mode) => {\r\n this.setState({\r\n importMode: mode,\r\n });\r\n this.permissionFactory.toggleImportMode(mode);\r\n }\r\n\r\n toggleCampaignsSelectionStep = (state) => {\r\n this.setState({\r\n showCampaignSelectionStep: state, // eslint-disable-line\r\n });\r\n }\r\n\r\n constructSteps = (i18n) => {\r\n this.steps = [];\r\n // construct base step\r\n this.steps.push(getPinterestLoginStep({\r\n i18n,\r\n repository: this.repository,\r\n rootContainerClassName,\r\n }));\r\n this.steps.push(getPinterestAccountStep({\r\n i18n,\r\n rootContainerClassName,\r\n }));\r\n this.steps.push(getStartImportSmartStep({\r\n i18n,\r\n getImportType: this.getImportType,\r\n setImportStatus: this.setImportStatus,\r\n rootContainerClassName,\r\n }));\r\n this.steps.push(getPinterestCampaignStep({\r\n i18n,\r\n getImportType: this.getImportType,\r\n showCampaignSelectionStep: this.state.showCampaignSelectionStep,\r\n rootContainerClassName,\r\n repository: this.repository,\r\n permissions: this.props.permissions,\r\n }));\r\n this.steps.push(getPinterestImportOptionsStep({\r\n i18n,\r\n deps: this.deps,\r\n getImportType: this.getImportType,\r\n permissions: this.props.permissions,\r\n rootContainerClassName,\r\n }));\r\n this.steps.push(getStartImportAdvancedStep({\r\n i18n,\r\n getImportType: this.getImportType,\r\n setImportStatus: this.setImportStatus,\r\n rootContainerClassName,\r\n }));\r\n this.steps.push(getImportSummaryStep({\r\n i18n,\r\n showImportSummary: this.state.showImportSummary,\r\n }));\r\n this.steps.push(getImportStatusStep({\r\n i18n,\r\n getImportStatus: this.getImportStatus,\r\n showImportStatusStep: this.state.showImportStatusStep,\r\n rootContainerClassName,\r\n }));\r\n }\r\n\r\n render() {\r\n const {\r\n rootClassName,\r\n i18n,\r\n } = this.props;\r\n\r\n if (this.state.isInit) {\r\n this.steps = [];\r\n this.constructSteps(i18n);\r\n } else {\r\n return null;\r\n }\r\n\r\n const handleCancelButtonClick = () => this.repository.redirectToCampaigns();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nPinterestImportPage.propTypes = {\r\n rootClassName: PropTypes.string.isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n ccJsData: PropTypes.shape({\r\n FeatureAdoptionCoupon: PropTypes.shape({\r\n findAll: PropTypes.func,\r\n }),\r\n }),\r\n deps: PropTypes.shape({}).isRequired,\r\n location: PropTypes.shape({\r\n key: PropTypes.string,\r\n }).isRequired,\r\n permissions: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nPinterestImportPage.defaultProps = {\r\n ccJsData: null,\r\n};\r\n","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (enableUnsubscribe, i18n) {pug_html = pug_html + \"\\u003Cdiv class=\\\"inline-download-reports__actions\\\"\\u003E\\u003Ca class=\\\"inline-download-reports__run-now\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('InlineDownloadReports_Action_RunNow')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003Ca class=\\\"inline-download-reports__create-similar\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('InlineDownloadReports_Action_CreateSimilar')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\nif (enableUnsubscribe) {\npug_html = pug_html + \"\\u003Ca class=\\\"inline-download-reports__unsubscribe-me\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('InlineDownloadReports_Action_UnsubscribeMe')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Ca class=\\\"disabled inline-download-reports__unable-to-unsubscribe-me\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('InlineDownloadReports_Action_UnsubscribeMe')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";}.call(this,\"enableUnsubscribe\" in locals_for_with?locals_for_with.enableUnsubscribe:typeof enableUnsubscribe!==\"undefined\"?enableUnsubscribe:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_html = pug_html + \"\\u003Cdiv\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (i18n, value) {var state = value.State\nif (state) {\npug_html = pug_html + \"\\u003Cspan\\u003E\";\nif (state === 'Paused') {\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"statuschangetask statusicondisplay statuschangehover clickable\\\"\"+\" tabindex=\\\"0\\\"\"+pug.attr(\"id\", `statusIcon${value.Id}`, true, true)+pug.attr(\"data-rowId\", `${value.Id}`, true, true)+\" data-statusText=\\\"Paused\\\"\"+pug.attr(\"aria-label\", `${i18n.getString('EntityStatus_Paused')}`, true, true)+\" role=\\\"button\\\"\") + \"\\u003E\\u003Cdiv class=\\\"statusPaused_icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse\nif (state === 'Deleted') {\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"statuschangetask statusicondisplay statuschangehover clickable\\\"\"+\" tabindex=\\\"0\\\"\"+pug.attr(\"id\", `statusIcon${value.Id}`, true, true)+pug.attr(\"data-rowId\", `${value.Id}`, true, true)+\" data-statusText=\\\"Deleted\\\"\"+pug.attr(\"aria-label\", `${i18n.getString('EntityStatus_Deleted')}`, true, true)+\" role=\\\"button\\\"\") + \"\\u003E\\u003Cdiv class=\\\"statusDeleted_icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"statuschangetask statusicondisplay statuschangehover clickable\\\"\"+\" tabindex=\\\"0\\\"\"+pug.attr(\"id\", `statusIcon${value.Id}`, true, true)+pug.attr(\"data-rowId\", `${value.Id}`, true, true)+\" data-statusText=\\\"Enabled\\\"\"+pug.attr(\"aria-label\", `${i18n.getString('EntityStatus_Active')}`, true, true)+\" role=\\\"button\\\"\") + \"\\u003E\\u003Cdiv class=\\\"statusEnabled_icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + (pug.escape(null == (pug_interp = ' ') ? \"\" : pug_interp));\n}}.call(this,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (view) {if (view.options.i18nStrings.Description) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"form-control-static\\\"\"+pug.attr(\"id\", view.options.descriptionId, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = view.options.i18nStrings.Description) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\npug_html = pug_html + \"\\u003Cselect\" + (\" class=\\\"language form-control\\\"\"+\" data-bind=\\\"value: selectedLanguage, options: languageOptions, optionsText:"Text", optionsValue:"Value", disable: disabled\\\"\"+pug.attr(\"aria-labelledby\", view.options.descriptionId, true, true)+pug.attr(\"aria-describedby\", view.options.hintId, true, true)) + \"\\u003E\\u003C\\u002Fselect\\u003E\";\nif (view.options.i18nStrings.SaveWarning) {\npug_html = pug_html + \"\\u003Cdiv\" + (\" class=\\\"form-hint\\\"\"+pug.attr(\"id\", view.options.hintId, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = view.options.i18nStrings.SaveWarning) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (view) {var i18n = view.i18n\npug_html = pug_html + \"\\u003Cform class=\\\"panel form-horizontal settings-top-grid-panel-container\\\"\\u003E\\u003Cdiv class=\\\"panel-heading section-title\\\" role=\\\"heading\\\" aria-level=\\\"2\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('TargetingSettings_Locations_Add')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\" data-bind=\\\"if: shouldShowCampaignAdgroupSelector\\\"\\u003E\\u003C!-- ko if: level == 0 --\\u003E\\u003Clabel class=\\\"col-sm-2 control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('CampaignAdGroupSelector_SelectCampaign')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C!-- \\u002Fko --\\u003E\\n\\u003C!-- ko if: level == 1 --\\u003E\\u003Clabel class=\\\"col-sm-2 control-label\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('CampaignAdGroupSelector_SelectAdGroup')) ? \"\" : pug_interp)) + \"\\u003C\\u002Flabel\\u003E\\u003C!-- \\u002Fko --\\u003E\\u003Cdiv class=\\\"col-sm-4\\\"\\u003E\\u003Cdiv class=\\\"campaign-adgroup-selector\\\" data-ref=\\\"campaign-adgroup-selector\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"locations-editor\\\" data-ref=\\\"location-target-view\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- ko if: shouldShowHighLantencyNote --\\u003E\\u003Cdiv class=\\\"alert alert-info form-group page-alert\\\"\\u003E\\u003Cdiv class=\\\"alert-image\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"alert-info-inline\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('TargetingSettings_OnSave_HighLantency_Text')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C!-- \\u002Fko --\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cbutton\" + (\" class=\\\"btn btn-primary btn-save\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.getString('Form_SaveButton'), true, true)+\" data-bind=\\\"enable: shouldEnableSave\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Form_SaveButton')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003Cbutton\" + (\" class=\\\"btn btn-default btn-cancel\\\"\"+\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.getString('Form_CancelButton'), true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Form_CancelButton')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fbutton\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fform\\u003E\";}.call(this,\"view\" in locals_for_with?locals_for_with.view:typeof view!==\"undefined\"?view:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (value) {if (value.name) {\npug_html = pug_html + \"\\u003Ca\" + (\" class=\\\"scope-navigator\\\"\"+pug.attr(\"href\", value.href, true, true)+pug.attr(\"data-customparams\", value.customparams , true, true)+pug.attr(\"data-pathname\", value.pathname , true, true)+pug.attr(\"aria-label\", value.ariaLabel, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = value.name) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\";\n}}.call(this,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (accountId, customerId, i18n, userId) {pug_html = pug_html + \"\\u003Cdiv class=\\\"panel\\\"\\u003E\\u003Cdiv class=\\\"panel-heading\\\"\\u003E\\u003Cdiv class=\\\"panel-title\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('NegativeKeywordList_ListToCampaignAssociate_Title')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-body form-horizontal\\\"\\u003E\\u003Cdiv class=\\\"associations__container\\\"\\u003E\\u003Cdiv class=\\\"instruction\\\" data-bind=\\\"if: accountLevel\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('NegativeKeywordList_ListToCampaignAssociate_Subtitle')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"instruction\\\" data-bind=\\\"if: !accountLevel\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('NegativeKeywordList_ListToCampaignAssociate_CampaignLvl_Subtitle')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"campaign-adgroup-selector\\\"\\u003E\\u003Cdiv class=\\\"form-group\\\" data-bind=\\\"if: showSelector\\\"\\u003E\\u003Clabel class=\\\"col-sm-2 control-label\\\" data-bind=\\\"text: selectorLabel\\\"\\u003E\\u003C\\u002Flabel\\u003E\\u003Cdiv class=\\\"form-horizontal col-sm-4 create-keywords-panel__adgroup-selector\\\"\\u003E\\u003Cdiv class=\\\"new-campaign-adgroup-selector\\\" data-bind=\\\"scope: scope, showCampaignSelector: showCampaignSelector, showAdgroupSelector: showAdgroupSelector, multiSelectMode: false\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"visible: selectorError\\\"\\u003E\\u003Cspan class=\\\"selector-error\\\" data-bind=\\\"text: selectorError\\\"\\u003E\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"doubleListBox\\\" data-bind=\\\"doubleListBox: selectedLists, dlbData: { sourceItems: allLists, itemIdField: 'Id', pageSize: 20, useCallbackForFetchOnly: true }, dlbItemActions: {}, dlbFeatures: {selectAll: true, deselectAll: true, paging: false}, dlbTemplates: {}, dlbStrings: multiSelectOptions.strings, visible: !!selectedCampaignId()\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv data-bind=\\\"foreach: {data:$errors, as: 'error'}\\\"\\u003E\\u003Cdiv class=\\\"error\\\" data-bind=\\\"text: error\\\"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"form-group\\\"\\u003E\\u003Cdiv class=\\\"col-sm-12\\\"\\u003E\\u003Ca\" + (pug.attr(\"href\", '/campaign/vnext/negativekeywordlistslibrary?cid=' + customerId + '&uid=' + userId + '&aid=' + accountId, true, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('SharedLibrary_NegativeKeyword_Description')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fa\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"panel-footer\\\"\\u003E\\u003Cinput\" + (\" class=\\\"button button-highlighted btn btn-primary\\\"\"+\" id=\\\"btnSave\\\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.getString('Save'), true, true)+\" data-bind=\\\"enable: shouldEnableSave\\\"\") + \"\\u003E\\u003Cinput\" + (\" class=\\\"button btn btn-default\\\"\"+\" id=\\\"btnCancel\\\" type=\\\"button\\\"\"+pug.attr(\"value\", i18n.getString('Cancel'), true, true)) + \"\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"accountId\" in locals_for_with?locals_for_with.accountId:typeof accountId!==\"undefined\"?accountId:undefined,\"customerId\" in locals_for_with?locals_for_with.customerId:typeof customerId!==\"undefined\"?customerId:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"userId\" in locals_for_with?locals_for_with.userId:typeof userId!==\"undefined\"?userId:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (value) {pug_html = pug_html + (pug.escape(null == (pug_interp = value.type) ? \"\" : pug_interp));}.call(this,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (value) {pug_html = pug_html + (pug.escape(null == (pug_interp = value.text) ? \"\" : pug_interp));}.call(this,\"value\" in locals_for_with?locals_for_with.value:typeof value!==\"undefined\"?value:undefined));;return pug_html;};\nmodule.exports = template;"],"names":["calculatePlacement","target","calloutWidth","getBoundingClientRect","left","GLOBAL_CALLOUT_CONTAINER","dismissCallout","ReactDOM","document","getElementById","renderImportCallout","_ref","view","content","popoverId","title","i18n","_ref$hasCloseButton","hasCloseButton","_jsx","Callout","BackboneInstanceWrapper","instance","show","closeButton","focusLockContent","placement","className","calloutCloseButton","calloutCloseButtonIcon","calloutTargetContainer","onClose","container","$","parents","closeButtonAriaLabel","getString","shouldStopPropagation","renderImportSettingsCallout","gridView","event","optionsFormLoader","uetTagSelectorViewLoader","subFieldsBlacklist","config","isMultiAccountImport","stopPropagation","columnData","getColumnData","getImportOptionFields","isPauseAdGroupIfNoLocationSupportedEnabled","isAudienceTargetForFBImportOptionEnabled","importOptionFieldHelpIds","Type","permissions","get","facebookOptionBlackList","getFileImportOptionBlackList","TaskItem","ImportFormat","push","apply","_toConsumableArray","getFacebookImportOptionBlackList","getFacebookImportOptionFields","facebookImportOptionFieldHelpIds","amazonOptionBlackList","getAmazonImportOptionBlackList","getAmazonImportOptionFields","amazonImportOptionFieldHelpIds","pinterestOptionBlackList","getPinterestImportOptionBlackList","getPinterestImportOptionFields","pinterestImportOptionFieldHelpIds","then","_ref2","ImportOptionsForm","_ref3","UetTagSelectorView","options","JSON","parse","ImportUserPreference","searchAndReplaceSchema","_","ImportSearchAndReplaceForStringProperty","name","findAndReplaceSuffixSchema","importOptionsForm","jsonFormatImportOptions","deps","schema","ImportUpdateEntityPreference","ImportUserPreferences","LandingPageAppendPreference","ImportAppendDestUrlPreference","LandingPageReplacePreference","ImportSearchAndReplaceDestUrlPreference","AppendTrackingTemplatePreference","AppendPreferencesForTrackingTemplate","SearchAndReplacePreferencesForTrackingTemplate","ImportPrefixAndSuffixForStringProperty","SearchAndReplaceForCustomParameters","SearchAndReplaceForFinalURLSuffix","ImportAdjustmentForNumericProperty","isCustomerLevel","isHideUrlDetailView","createDisabledUETSelectorClass","isGoogleImport","importType","render","input","setAttribute","hide","renderImportSummaryCallout","summaryTableLoader","logTrace","action","message","instrumentation","logMessage","constants","LOGCATEGORY","TRACE","LOGLEVEL","INFO","concat","currentTarget","getSummaryDetailsPopupViewPromise","findImportTaskItem","IMPORT_TYPE","importRecommendationListNameMap","importChannelNameMap","importRecommendationListName","importChannel","supportedRecommendationTypesList","GoogleImportTaskRecommendationList","FacebookImportTaskRecommendationList","RecommendationCallout","props","calloutConfig","shouldAdCustomizerRecommendationApplyDirectly","edm","jsData","SelectAdCustomizerFeedToImportExpandedTextAd","description","buttonText","click","applyAdCustomizerFeedRecommendation","goToGoogleImportWizard","model","importStep","ProvideStoreToImportShoppingCampaign","EnableCurrencyConversion","_ref4","applyCurrencyConversionRecommendation","EnableAutoFrequency","_ref5","applyAutoFrequencyRecommendation","AdjustAdGroupBidPrice","_ref6","applySetMinBidValueAdjustRecommendation","GetGoogleAdsPermission","_ref7","applyGetGoogleAdsPermissionRecommendation","AccessTokenExpiring","_ref8","applyAccessTokenExpiringRecommendation","getCalloutConfig","ImportNewEntities","ImportUpdatedEntities","recommendationArr","_useState","useState","_useState2","_slicedToArray","popupTypeIndex","setPopupTypeIndex","_jsxs","children","type","onClick","onKeyDown","e","submitEvent","extend","isKeyboardEvent","disabled","isReadOnly","Glyphicon","glyph","length","RecommendationCalloutMemo","React","renderImportRecommondationCallout","_ref9","scope","Id","taskItemId","InlineDownloadCronI18n","_createClass","_classCallCheck","this","cronFormatter","CronFormatter","key","value","cron","formatCronString","DurableDropdown","_React$Component","_this","_callSuper","state","expanded","_inherits","_this2","_this$props","button","containerClass","classnames","Boolean","setState","caretClass","defaultProps","CheckableList","onSelect","item","selected","items","getItemId","renderItem","map","index","itemId","role","tabIndex","onKeyPress","nextProps","prevState","_nextProps$selected","DateRangeList","data","onChange","presets","presetType","format","DateRangePreset","StartDate","EndDate","dateMethodOptions","raw","formattedToday","formatDate","Date","preset","_defineProperty","max","usedStartDate","substr","usedEndDate","formatPreset","KendoStringDatePicker","undefined","changed","min","DateRangeEditor","dateRangeFormat","DateRangeFormat","ComparisonDateRangeEditor","noneStringKey","comparisonDateRangeFormat","ComparisonDateRangeFormat","ComparisonDateRangeOption","String","save","updateReportEmailRule","finally","withUiBlock","$el","refresh","asBackboneInlineEditor","InlineEditor","_ref$className","Editor","onSave","onCancel","asInlineEditor","_Backbone$View","BackboneInlineEditor","arguments","trigger","el","Backbone","reactPrompt","position","parentContainerSelector","_ref4$triggerScrollba","triggerScrollbarRepositionOnElementHeightChange","property","editor","on","update","merge","set","catch","error","alert","editorView","GridCustomizedPopupEditor","cellPosition","renderBelow","clickToDismiss","$target","closest","is","remove","couldUnsubscribe","NotificationDeliveryOption","currentUserId","EmailOption","CustomUserIds","Error","getCurrentUserId","FormGroup","label","labelId","id","htmlFor","alertId","EmailFrequencyColumn","_CampaignuiBaseColumn","allUsersType","loadUsers","legacyI18n","cronI18n","InlineDownloadEmailFrequencyEditor","s$i18n","SchemaI18n","Cron","StartTime","EndTime","formatCron","CampaignuiBaseColumn","removeCurrentUserFromList","list","unsubscribe","Name","Promise","report","users","removeCurrentUser","newNotificationDeliveryOption","window","App","views","alertCenter","toastConfirmation","showError","builtInPrompt","fields","PopupEditor","hasLabels","template","saveModel","editorForm","setErrors","helpers","toolbarRow","getStyles","_ref$palette","palette","InsightDashboardOff","height","display","flexDirection","alignItems","justifyContent","gap","maxWidth","maxHeight","textAlign","InsightDashboardOn","paddingLeft","paddingRight","paddingTop","paddingBottom","fontSize","fontfontWeight","minHeight","fontWeight","MetricGroup","color","neutralPrimary","background","white","gridTemplateColumns","width","boxShadow","border","borderRadius","gridTemplateRows","borderBottom","lineHeight","TileGroup","gridGap","DashboardTile","fontFamily","fontStyle","triggerSummaryBarEvent","tagIds","CustomEvent","detail","dispatchEvent","turnOnInsight","classes","useDefaultStyles","_useBoolean","useBoolean","_useBoolean2","isModalOpen","_useBoolean2$","showModal","setTrue","hideModal","setFalse","useContext","InstrumentationContext","activity","useMemo","createScenarioAndActivity","scenarioName","activityName","theme","getTheme","contentStyles","mergeStyleSets","flexFlow","header","fonts","xLarge","flex","borderTop","themePrimary","padding","body","overflowY","footer","marginRight","pageText","_TL_","enableAllTagsbuttonText","modalHeader","modalText","enableAllTags","Tags","top","select","toPromise","tagResponse","tags","payload","reduce","acc","tag","IsWebInsightsEnabled","$makeCall","response","a","Errors","filter","stringify","tagId","isToggleOn","triggerDashboardEvent","values","src","InsightOffGraph","alt","PrimaryButton","text","DefaultButton","Modal","isOpen","isDarkOverlay","onDismiss","isBlocking","containerClassName","href","rel","defaultNoDataNumber","OperatorMap","$StartsWith","$Equals","$Contains","$EndsWith","formatResponse","itemName","valueName","count","MetricBlock","metricData","underlineColor","helpId","unit","isLoading","style","borderColor","HelpPopup","topic","Spinner","size","SpinnerSize","medium","Metrics","fetchTileData","isFilterReady","_useTotalSessionCount","setData","_useState3","_useState4","isLoaded","setisLoaded","_useState5","_useState6","setisLoading","onError","useCallback","useEffect","cachedFetchTileData","log","TotalSessionCountsResult","invalidate","useTotalSessionCountData","totalSessionCountData","isTotelSessionCountDataLoading","_useAverageActiveTime","AverageActiveTimeResult","useAverageActiveTimeData","AverageActiveTimeData","isAverageActiveTimeDataLoading","_useQuickbacksData","QuickBackResult","useQuickbacksData","QuickbacksData","isQuickbacksDataLoading","isAverageTimeGreaterThan60","AverageActiveTimeConverted","Math","floor","AverageActiveTimeUnit","getTileStyles","cardContainer","headerBorder","neutralLight","neutralSecondary","cardSection","headerContainer","gridRow","headerContentContainer","headerText","overflow","textOverflow","smallHeaderText","whiteSpace","largeHeaderText","dropdownContainer","contentContainer","marginTop","marginBottom","wideCardContainer","footerContainer","footerContentContainer","footerButton","backgroundColor","float","footerLink","textDecoration","LegendGrid","percentage","y","DonutChart","containerName","pieOptions","chart","margin","credits","enabled","plotOptions","pie","allowPointSelect","dataLabels","endAngle","startAngle","states","hover","series","animation","showInLegend","innerSize","legend","itemDistance","itemStyle","symbolRadius","tooltip","followPointer","borderWidth","distance","shape","pointFormat","Fragment","HighchartReactWrapper","Devices","PC","Mobile","Tablet","Other","DevicesChart","totalCount","memo","formattedData","device","round","SingleBar","seriesSum","barOption","xAxis","crosshair","tickLength","lineWidth","labels","categories","yAxis","gridLineWidth","colorByPoint","bar","groupPadding","pointPadding","BarChart","shouldShowMore","setShouldShowMore","dataLength","shouldShowToggle","dataToShow","linkLabel","Link","getCountryValues","Afghanistan","Albania","Algeria","Andorra","Angola","Anguilla","Antarctica","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bonaire","Botswana","Brazil","Brunei","Bulgaria","Burundi","Cambodia","Cameroon","Canada","Chad","Chile","China","Colombia","Comoros","Congo","Croatia","Cuba","Curaçao","Cyprus","Denmark","Djibouti","Dominica","Ecuador","Egypt","Eritrea","Estonia","Ethiopia","Fiji","Finland","France","Gabon","Gambia","Georgia","Germany","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guyana","Haiti","Honduras","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Israel","Italy","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Korea","Kuwait","Kyrgyzstan","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Netherlands","Nicaragua","Niger","Nigeria","Niue","Norway","Oman","Pakistan","Palau","Panama","Paraguay","Peru","Philippines","Poland","Portugal","Qatar","Réunion","Romania","Russia","Rwanda","Samoa","Senegal","Serbia","Seychelles","Singapore","Slovakia","Slovenia","Somalia","Spain","Sudan","Suriname","Svalbard","Eswatini","Sweden","Switzerland","Syria","Taiwan","Tajikistan","Tanzania","Thailand","Togo","Tokelau","Tonga","Tunisia","Turkey","Turkmenistan","Tuvalu","Uganda","Ukraine","Uruguay","Uzbekistan","Vanuatu","Venezuela","Vietnam","Yemen","Zambia","Zimbabwe","CountriesChart","countryValues","PageVisitedChart","ContentStrings","EmptyContent","minWidth","TileConfig","PagesByVisits","onActionClick","buttonLabel","buttonRoute","Countries","tileType","scopeRef","useRef","current","onButtonClick","destination","currentTile","cardConfig","getCardStyles","cardClassName","wide","isRequired","renderHeaderText","actions","onCloseTile","isLargeHeader","buttons","callback","isShimmerRequired","onRenderShimmer","Card","_objectSpread","large","_usePagesByVisitsData","result","res","PopularPagesResult","usePagesByVisitsData","pageVisitedData","isPageVisitedDataLoading","_useDevicesData","DevicesResult","useDevicesData","devicesData","isDevicesDataLoading","_useCountriesData","CountriesResult","useCountriesData","countriesData","isCountriesDataLoading","WebInsightsToolbar","filterService","filterConfig","_React$useState","_React$useState2","forceHideToolbar","setForceHideToolbar","_React$useState3","_React$useState4","showToolbarUnselected","setShowToolbarUnselected","toolbarConfig","toolbarUnselectedConfig","Map","forEach","toolbarSelectedConfig","_React$useState5","_React$useState6","setToolbarUnselectedConfig","updateToolbar","newItem","toolbarUnselectedConfigUpdated","toolbarEditor","getToolbarEditor","_Fragment","FilterViewManager","resetToolbarVisibility","forceHideToolbarUpdate","schemaI18n","hideSaveFilterButton","ToolbarContainer","showToolbarSelected","prefixKeys","prefix","object","Object","keys","getEntitySchema","countries","properties","Country","enum","filterable","chooseType","localized","Device","VisitedUrl","operators","operatorDisplayNameMap","StartsWith","EndsWith","Equals","dashboardTexts","dateFormat","preferenceService","serverContext","edmTags","uetDashboardInstrumentation","setIsFilterReady","setFilter","waterfallFilterStorage","WaterfallFilterStorage","dateFilter","waterfallDateFilterProcessor","getFilters","WaterfallFilterType","DateFilter","timeZone","CurrentAccount","startDate","start","endDate","end","_useMemo","newFilterConfig","titleMap","getCommonFilterConfig","featureName","entitySchema","legacyGlobalI18n","sessionStore","preferenceStoreFactory","globalConfig","appConfig","schemaI18nCampaign","__","dataContextManager","jsdata","jsdataCampaign","updatePilot","enableCampaignWaterfall","getLegacySaved","schemaProcessor","updateEntitySchemaForFeatures","schemaProperties","getFilterConfig","FilterService","filterPayload","TimeZoneId","CountryFilter","DeviceFilter","PageUrlFilters","join","filterItemKey","filterItems","operator","Operator","Value","$in","v","countryCode","country","countryName","split","substring","parseCountryCode","deviceCode","parseDeviceCode","createPayload","selectedTile","query","dateRangeChanged","startDateString","oldestStartDate","setMonth","getMonth","notificationApi","showWarning","refreshSource","initializeCombinedFilterPromise","getCombinedFilter","newFilter","loadingText","loading","instrumentationSchema","scenario","instrumentationRef","addScenario","UetInsightDashboard","create","UetInsightDashboardActivity","Action","Message","API","trace","_serverContext$Curren","aid","acid","AdvertiserCustomerID","cid","CurrentCustomer","scopeTagId","currentTagId","setCurrentTagId","isChangingTag","isAgencyScenario","edmCampaign","Customers","$withKey","Accounts","edmTag","_useTagData","toggleInsightFunc","setToggleInsightFunc","_useState7","_useState8","turnOnInsightFunc","setTurnOnInsightFunc","cachedEdmTagGet","cachedTurnOnInsight","isWebInsightsEnabled","currentData","newTagObj","useTagData","toggleInsight","_e$detail","addEventListener","removeEventListener","InsightDashboardLoading","ViewModel","languages","selectedLanguage","withInheritOption","Inherit","languageOptions","sortBy","language","Text","unshift","ko","isInheritOptionSelected","LanguageSelector","_PureKnockoutView","i18nStrings","_ref$languages","_ref$withInheritOptio","_ref$disabled","descriptionId","hintId","Description","SaveWarning","_superPropGet","viewModel","subscribe","PureKnockoutView","LocationsRepository","_CommonRepository","$or","Criterion","$isof","CommonRepository","LocationsGridColumnsConfig","_ColumnsConfig","level","parentView","selfColumns","ColumnLocation","isExcludeLocation","ColumnsConfig","EMPTY_TEMPLATE","locationsEditorPromise","LocationsGridView","_DeterministicWrapper","router","campaignId","adgroupId","dataSource","preferenceConfig","getGridConfig","getGridPlugins","setupDataSourceErrorHandling","renderRecommendation","getView","gridRemoved","columnConfig","repository","afterFindAllCallback","gridConfig","initialGrid","grid","pgridFactory","plugins","TargetingSettingsContext","logger","updateGridQuery","changes","handleSortChange","checkGrid","onItemModified","inlineEditMultiTargets","inlineEdit","eventDispatcher","onBulkRemoved","showTooMuchDataToDownloadError","once","filterState","getFilterBar","append","campaign","pageContext","CurrentCampaign","campaignSubType","opts","showBidMode","showLocationEditor","adGroup","Campaign","AdGroup","criterions","reverse","hideToolbar","toolbar","gridToolbarGroup","hideAllToolbars","showToolbar","showAllToolbars","off","inlineLocationRecommendation","InlineLocationRecommendation","customerId","accountId","isCampaignLevelLocation","mapHeight","recommendations","refreshInlineRecommendation","refreshMap","_this3","shouldSupportCashbackSettings","Permissions","_this4","_ref2$criterions","_ref2$showBidMode","pagePerfMarker","perfMarker","resolve","LocationTargetsView","LocationTargets","default","LocationsEditor","willInit","supportCashbackSettings","locationsEditor","isSmartShoppingCampaign","currentCampaign","currentAdGroup","CurrentAdGroup","showEditor","done","updated","TargetingScope","Account","errors","err","Code","gridLoadErrorHandler","deselectAll","_this5","CriterionBid","Multiplier","BidMultiplier","unblock","_this6","overrideWith","scrollTo","api","DeterministicWrapperView","createLocationGrid","viewport","customHeaderOffset","p$daterange","addDateChangeListener","getAdditionalPlugins","gridName","_ref$permissions","tableName","logacyGridName","tableClasses","tableAttributes","getDataSource","getQuery","rows","headRows","columns","getColumnsConfig","scrolling","offset","attributes","virtualized","selection","sortableHeader","sortableHeaderTemplate","preferencesService","validateOrder","getConfig","columnChooserConfig","getColumnChooserConfig","aggregatedRowsPlugin","aggregatedRowsPluginBuilder","overallI18nKey","filteredI18nKey","deletedI18nKey","helpIds","deletedHelpId","customConfig","showSearchRow","showAudienceRow","customToolbarIcon","entity","TargetingLevel","plugin","perfMarkerPlugin","marker","paginationPlugin","availablePageSizes","enableRandomPage","pageSizeText","totalPageCountText","pageSize","pageNumberLabelText","inlineDownloadWithoutFilterstatePlugin","isForVNext","DownloadView","isAvailable","gridId","ReportEmailRule","getReportEmailRule","bidAdjustmentBulkEditPlugin","gridType","TargetingType","Locations","formatEntityString","getLocationDisplayName","segmentPlugin","cellTemplates","Location","segmentValueCellTmpl","isOdataActionSource","segmentationTypes","campaignSegmentationTypeEnum","segmentationType","setSegType","segmentPreference","getSegType","IsReadOnlyUser","editablePlugin","uiBlockerPlugin","periodOverPeriodPlugin","columnChooserPlugin","removeBulkEditPlugin","getCriterionType","dateFilterPlugin","comparisonColumns","handler","Summary","bindDateFilterChangeHandler","assistedSelectionPlugin","a11yPlugin","jsdataRawDataPlugin","getPlugins","setUpErrorHandling","LocationTargetView","isDSACampaign","_ref$supportCashbackS","getScenario","isAudienceCampaign","CampaignType","hideAudience","isMSStoreAdsGAWorkflow","isMSStoreAdsCampaign","locationTargets","editCriterions","fromSettingsGrid","showPhysicalIntentView","physicalIntent","physicalIntentOptions","PeopleIn","popupIds","setCampaignId","setAdGroupId","refreshLocationData","validate","checkIMAReachAndSave","getValues","deletedLocations","locations","intent","viewmodel","selectedCampaign","selectedAdgroup","shouldShowCampaignAdgroupSelector","hideSelectorControl","shouldShowLocationsEditor","shouldEnableSave","shouldShowHighLantencyNote","ensureChildView","_DeterministicView","bidMode","IsPersonalizedOffersEnabled","optionalCampaignFilter","status","Status","selectedAdGroup","campaignName","optionalSelectorParam","optionalCampaignSelect","optionalAdGroupSelect","optionalAdGroupExpand","CampaignAdgroupSelectorVnext","optionalAdgroupFilter","campaignSelected","adgroupSelected","onAdgroupSelected","onCampaignSelected","Template","delegateEvents","locationTargetView","updatedCriterionsCount","triggerClose","hasErrors","createChild","autoEnd","showLocationTargetView","getChild","detachChild","setChild","forceRenderFlag","CampaignSubType","adgroup","DeterministicView","getNegativeKeywordsListsGridFactory","globalContext","define","pkg","require","NegativeKeywordListGrid","_isRendered","CampaignColumn","sortable","bodyClasses","ListNameColumn","SharedEntityId","SharedEntityName","_this$scope","nkl","pathname","customparams","ariaLabel","nklName","clickableValueTemplate","ColumnsConfigBuilder","addCategory","category","addColumns","stateManager","requireDefault","singleToolbarHeadRows","appState","help","campignSelectori18n","CreateNegativeKeywordAssociationViewModel","showSelector","accountLevel","getLists","request","cache","ajaxPost","url","fetchListsUrl","onSuccess","total","getUrlParameter","selectorControl","selectedCampaignId","selectedAdgroupId","selectorError","selectedLists","createSelectorScopeObject","showAdgroupSelector","showCampaignSelector","selectorLabel","showSelectorErrorMessage","selectorErrorMessage","multiSelectOptions","strings","sourceItems","selectedItems","deselect","filterWatermark","$errors","multiSelect","selectedCampaigns","newValue","allLists","scopeObject","currentScope","adGroupId","CreateNegativeKeywordAssocationView","_len","args","Array","_key","findFailedEntries","failedEntries","entry","createOnSaveLibraryAssociation","libraryIds","successHandler","EntityId","SharedEntityAssociation","createMany","adapter","cacheResponse","selectedItem","console","warn","selectorView","dynamic","HotelCampaign","AccountNegativeKeywords","IsNKWListAssociationAllowed","CampaignSelectorProxy","withUiBlocker","getCampaignSelectorView","onAdGroupSelect","onCampaignSelect","html","appendLearnMoreLink","userId","uid","lists","ids","noListSelectedErr","createNegativeKeywordsListsGrid","_ref$getAdditionalPlu","_ref$isForVNext","legacyGridName","unset","performanceLogPlugin","inlineErrorPlugin","errorIconClasses","getPGridColumnResizePlugin","getNegativeKeywordListsKeywordGridFactory","ServerErrorMap","CampaignServiceSharedEntityNameNullOrEmpty","CampaignServiceSharedEntityLimitExceeded","CampaignServiceSharedEntityInvalidType","CampaignServiceSharedEntityAssociationsNullOrEmpty","CampaignServiceMultipleSharedEntityTypesNotAllowed","CampaignServiceSharedEntityAssociationsBatchLimitExceeded","CampaignServiceSharedEntityAssociationsListItemNullOrEmpty","CampaignServiceSharedEntityAssociationDuplicate","CampaignServiceSharedEntityIdsNullOrEmpty","CampaignServiceSharedEntityNullOrEmpty","CampaignServiceDuplicateSharedEntityId","CampaignServiceSharedEntityTypeNullOrEmpty","CampaignServiceSharedListDeleted","CampaignServiceSharedListsNullOrEmpty","CampaignServiceSharedListNullOrEmpty","CampaignServiceSharedListIdInvalid","CampaignServiceSharedListDuplicate","CampaignServiceSharedListItemsNullOrEmpty","CampaignServiceListItemIdInvalid","CampaignServiceListItemIdsLimitExceeded","CampaignServiceSharedEntitiesNullOrEmpty","CampaignServiceSharedEntityNameTooLong","CampaignServiceSharedEntityNameInvalid","CampaignServiceSharedListIdNotAllowed","CampaignServiceSharedEntityIdInvalid","CampaignServiceMaxNegativeKeywordLimitExceededForList","CampaignServiceNegativeKeywordDeleted","CampaignServiceInvalidNegativeKeywordId","CampaignServiceInvalidNegativeKeyword","CampaignServiceNegativeKeywordListWithActiveAssociationsCannotBeDeleted","CampaignServiceNegativeKeywordTypeInvalid","CampaignServiceNegativeKeywordTextRequired","CampaignServiceDuplicateNegativeKeywordListName","CampaignServiceStructuredNegativeKeywordPilotNotEnabledForCustomer","CampaignServiceNegativeKeywordTooManyParentTypes","CampaignServiceNegativeKeywordDuplicateFound","CampaignServiceNegativeKeywordNotFound","CampaignServiceNegativeKeywordInvalidMatchType","CampaignServiceNegativeKeywordInvalidParentType","CampaignServiceNegativeKeywordEntitiesNullOrEmpty","CampaignServiceNegativeKeywordEntityNull","CampaignServiceMultipleEntityTypesNotAllowed","CampaignServiceDuplicateNegativeKeyword","CampaignServiceSharedEntityAssociationDoesNotExist","CampaignServiceCampaignIdsNullOrEmpty","CampaignServiceAdGroupIdsNullOrEmpty","CampaignServiceSharedEntityBatchLimitExceeded","CampaignServiceEntityBatchLimitExceeded","CampaignServiceNegativeKeywordsAccountLimitExceeded","CampaignServiceSharedEntityAssociationsAccountLimitExceeded","CampaignServiceNegativeKeywordsNotPassed","fallbackMsg","NegativeKeywordListsKeywordGrid","NegativeKeyword","InlineEditableColumnPrompt","fieldName","customSchema","cloneDeep","MatchType","valueMessages","editorViewCallbackAfterUpdate","payloadDelete","NegativeKeywords","ParentId","payloadCreate","Keyword","edmAccount","bulkCreate","campaignCacheManager","InlineEditableSave","entityName","prompt","getSchema","CampaignNegativeKeyword","AdGroupNegativeKeyword","patchParentObj","toPatch","AdGroupId","CampaignId","NegativeKeywordColumn","editable","helpAriaLabel","MatchTypeColumn","createNegativeKeywordsListsKeywordsGrid","commonJsdataRawDataPlugin","getRawData","getSubFieldsBlackList","getBlackList","UpdateEntityPreferences","DefaultBidsBelowMinToAdCenterMinBid","DefaultCampaignBudgetBelowMinToAdCenterMinBudget","AdjustmentForBids_EnableAdjustment","AdjustmentForCampaignBudgets_EnableAdjustment","ImportNewOption_ImportNewActiveEntitiesOnly","params","getDefaultImportOptionFields","hideEntityAdvancedOptions","StepConstants","SignInStep","path","stepName","ChooseAccounts","StartImportSmart","PinterestCampaignStep","ImportSummaryStep","ImportOptionStep","StartImportAdvanced","ImportStatusStep","keyNameOfSessionIdInCookie","keyNameOfLoginAccountInCookie","PinterestImportRepository","_CommonImportReposito","taskItemOptions","entitySet","currentAccount","TaskItems","ccJsData","getValueInSubImportCookieByAccountId","getPinterestSessionIdFromCookie","loginAccount","sessionId","addSubCookieToImportCookie","notUpdateCookie","odata","post","PinterestSessionId","PinterestUsername","setPinterestImportAccountInfoInCookie","authCode","replace","location","origin","startPinterestSessionInternal","token","removeImportCookieValue","getPinterestLoginAccountFromCookie","accounts","account","Currency","toUpperCase","blobName","getEntitiesBlob","blob","selectedCampaignIds","CampaignIds","getBulkBlob","pinterestAccountId","formatUrl","queryParameters","ExternalAccountId","campaigns","filterAndLocalizePinterestCampaignsUtil","newI18n","logError","promises","pinterestCampaigns","getPinterestCampaigns","selectionData","getSelectionDataFromBlob","finalState","availableIdBoolMap","obj","preferences","getImportUserPreferencesWithBMCandMinInfo","userPref","pinterestAccountName","StringPayload","pinterestCustomerId","initialPinterestAccount","pinterestEntitiesSelectionData","info","getPinterestImportInfoFromCookie","getPinterestAccountName","pinterestImportContext","SessionId","AccountId","AccountName","PinterestSessionUserId","uploadToAzureBlobViaOdata","bulkFileType","serializePinterestEntitiesSelectionDataToStringPayload","PinterestEntitiesBlobName","BlobName","importOptions","stepState","_importOptions$import","importUserPreferences","notificationType","notificationEmailAddresses","timeZoneId","taskItemState","preparePinterestImportContext","prepareCompleteImportTaskItem","NotificationType","NotificationEmailAddresses","PinterestImportContext","ImportType","testTypeSuffix","State","CommonImportRepository","showPopup","w","h","errorhandle","windowWidth","windowHeight","documentElement","screen","dualScreenLeft","screenLeft","dualScreenTop","screenTop","innerWidth","clientWidth","innerHeight","clientHeight","newWindow","open","focus","timer","setInterval","closed","clearInterval","code","windowObj","getParameter","getCode","close","PinterestLoginRepository","encodeURIComponent","SCOPE","CLIENT_ID","REDIRECTURI","reject","PermissionFactory","_CommonPermissionFact","IsImportSmartScheduleStepImprovementPhaseTwoEnabled","IsImportSmartScheduleStepPanelImprovementEnabled","IsImportSmartScheduleStepPanelDataRestoreImprovementEnabled","CommonPermissionFactory","prefetchConfig","handleError","handleGenericError","patchState","msg","handlePinterestLoginError","isLoggedIn","loginErrorMessage","fetchAccounts","getPinterestAccounts","getExistingAccounts","context","pinterestAccounts","getExistingSelectedAccount","selectedAccounts","getSelectedAccounts","initialSettings","getNewStateAfterAccountsLoaded","originalState","withPinterestImportAccountSelectionStepPrefetch","Step","withAccountSelectionStepPrefetch","logoutResetData","autoConvertCurrencyEnabled","previousImportOptions","UnstyledLoginContainer","_React$PureComponent","loginToPinterest","startPinterestSessionWithToken","loginRepository","login","startPinterestSession","toNextStep","rootContainerClassName","logout","errorMsg","goToNextStep","nextStepPath","isUserLoggedIn","loginPerfMarker","isInActiveAccount","descriptionBox","link","HelpLink","buttonMargin","errorMessage","LoginContainer","withDefaultStyles","withActivityContext","outline","PinterestLoginStepWithoutPrefetch","stepTitle","stepPrefetchHoc","WrappedLoginContainer","ImportCoreContext","Consumer","contextValues","getUniqueImportGUID","uniqueImportId","Activity","StepContainer","actionBarConfig","PinterestLoginStep","PreExecuteStep","LoginStepPrefetch","importCoreContext","existingPinterestAccount","_importCoreContext$lo","logOutButtonClicked","setLoading","dispatchedOdataCall","setDispatchedOdataCall","initialState","getImportTaskItem","taskItem","ModifiedBy","cookieHelperForEditImport","getSessionId","deleteCookie","isNameEdit","isEditingScheduledImport","_taskItem$PinterestIm","_initialState$initial","_initialState$initial2","IsAutoFrequency","IsSmartImport","EnableAutoCurrencyConversion","withLoginStepPrefetch","getActionBarItems","shouldGoToNextStep","prevStepName","validateFunction","nextStepName","nextButtonDisabled","extraLeftPadding","PinterestImportAccountSelector","AccountSelector","getSelectedListColumns","REMOVE_COLUMN","getAccountListColumns","isResizable","ADD_COLUMN","headerClassName","maxSelectedItems","sortableColumns","searchableField","primaryField","currencyViewDescription","importAccountCurrencyTitle","PinterestAccountStepInternal","setError","clearError","WrappedAccountSelector","accountsPageError","prevStepNameIfPrefetchFail","nextStepNameIfPrefetchOnlyOneAccount","isCurrencyConvertorDisabled","rootClassName","ErrorContainer","PinterestAccountStep","startImporting","scheduleOnly","onSwitchCustomizeMode","getPrevStepName","permissionFactory","primary","IsImportSmartScheduleStepImprovementEnabled","withSmartImportStepPrefetch","PreExecuteComponent","SmartImportStepPrefetch","_importCoreContext$ac","accountToCampaignsOptionsMapping","toggleCampaignsSelectionStep","doAllAccountsHaveCampaign","accountsToCampaign","accountIdsWithNoCampaign","accountWithNoCampaigns","accountMatchingCustomerId","parseInt","accountIdsToFetch","promiseObject","prepareForCampaignSelectionStep","getUserPreferences","getPinterestImportUserPreferences","alreadySelectedPinterestAccounts","mapping","campaignsData","hasAccountsWithNoCampaigns","pinterestCampaingsForCustomerId","preference","filteredAccountsToCampaign","FAC_STATUS_PICKEDUP","CCUIConstants","RecommendationAdoptionStatus","PickedUp","StartImportErrorCodes","TaskSchedulingInvalid","PinterestSyncApiInternalError","PinterestSyncThrottlingLimitReached","PinterestSyncAccessDenied","GenericImportError","formatTaskData","taskData","scheduleStepState","campaignIds","createImportAndGoNextWhenReady","generateTaskData","setImportStatus","getNextStepName","showErrorMessage","_generateTaskData","isRunNowWithScheduledImport","isRunNowImport","isScheduledImport","importOptionsRunnow","adoptResumeImportCalloutCardRecommendation","defaultLogActivity","adoptResumeImportRecommendation","loggerApi","preparePinterestImportTaskItem","scheduleBody","taskItemBody","taskItemPromise","updateScheduledImportTaskItem","createScheduledImportTaskItem","calloutcardCoupon","updateCouponStatus","createScheduledImportAndGoNextWhenReady","runNowBody","createRunNowImportTaskItem","toggleShowImportStatusStep","taskItemExecutionId","first","TaskItemExecutions","hideProgressList","createRunNowImportAndGoNextWhenReady","toggleShowImportSummary","ODataError","chain","signal","getAdvancedCustomizingStepName","StartImportSmartStep","GeneralStartImportStep","isCustomizingModeEnabled","shouldGoToPreviousStep","PinterestImportOptionsStep","ImportOptionsStep","StartImportAdvancedStep","GeneralStartImportAdvancedStep","noFacAlert","noCampaignErrorMessage","onSavePinterestImportScheduleInfo","tasks","displaystring","onEditScheduleClose","scheduledTaskItemBody","getStateValue","defaultName","finalBody","add","severity","NotificationLevel","Confirmation","scheduleSummaryString","getPinterestImportDetailsView","importSchedulingOptions","ImportSchedulingOptions","frequencyStat","parseCronToDisplayString","timeZoneMapper","labelClassName","Title","cardPanelTitles","Additions","PinterestImportSummaryStep","GenericImportSummaryPage","importName","onSaveScheduleInfo","getImportDetailsView","learnMoreText","noCampaignAlert","learnMoreId","GeneralImportStatusStep","VerticalSeparatedLayout","getPinterestLoginStep","renderDescription","LoginDescription","signOut","toggleImportType","Smart","accountName","PinterestImportPage","componentDidUpdate","prevProps","isInit","importMode","ImportMode","Single","showImportSummary","showImportStatusStep","importStatus","startStep","showCampaignSelectionStep","uniqueImportGUID","generateGuid","initialize","getImportType","getImportStatus","getImportMode","getImportScope","ImportScope","willFetchData","checkRequiredDeps","check","pinterestLoginRepository","Multi","toggleImportMode","mode","constructSteps","steps","getPinterestAccountStep","isEnabled","brandName","getStartImportSmartStep","Advanced","CampaignSelectionStep","campaignsName","getCampaigns","selectedAccount","entitiesSelectionDataName","getPinterestCampaignStep","getPinterestImportOptionsStep","facScheduleInvalid","facNoActiveCampaigns","getStartImportAdvancedStep","getImportSummaryStep","getImportStatusStep","_this$repository","Scenario","BaseImportCore","stepConstants","currentStep","handleCancelButtonClick","redirectToCampaigns","pug","module","exports","locals","pug_interp","pug_html","locals_for_with","enableUnsubscribe","escape","call","attr"],"sourceRoot":""}