{"version":3,"file":"static/js/main.b4adc33b.js","mappings":"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EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,ICN5xC3G,EAAY,CAAC,WAAY,SAAU,SAG5B4G,EAAS,CAEpBC,UAAW,+BAGXC,QAAS,+BAETC,OAAQ,6BAERC,MAAO,gCAKIC,EAAW,CACtBC,SAAU,IACVC,QAAS,IACTC,MAAO,IAEPC,SAAU,IAEVC,QAAS,IAETC,eAAgB,IAEhBC,cAAe,KAEjB,SAASC,EAASC,GAChB,MAAQ,GAAE5Z,KAAK4X,MAAMgC,MACvB,CACA,SAASC,EAAsBC,GAC7B,IAAKA,EACH,OAAO,EAET,MAAMC,EAAWD,EAAS,GAG1B,OAAO9Z,KAAK4X,MAAmD,IAA5C,EAAI,GAAKmC,GAAY,IAAOA,EAAW,GAC5D,CACe,SAASC,EAAkBC,GACxC,MAAMC,GAAejE,EAAAA,EAAAA,GAAS,CAAC,EAAG6C,EAAQmB,EAAiBnB,QACrDqB,GAAiBlE,EAAAA,EAAAA,GAAS,CAAC,EAAGkD,EAAUc,EAAiBd,UAkC/D,OAAOlD,EAAAA,EAAAA,GAAS,CACd4D,wBACApR,OAnCa,WAAmC,IAAlCvG,EAAKwI,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG,CAAC,OAAQzN,EAAOyN,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC1C,MACIyO,SAAUiB,EAAiBD,EAAeZ,SAC1CT,OAAQuB,EAAeH,EAAanB,UAAS,MAC7CuB,EAAQ,GACNrd,GACIwX,EAAAA,EAAAA,GAA8BxX,EAASiV,GAyBjD,OAAQlL,MAAMmI,QAAQjN,GAASA,EAAQ,CAACA,IAAQuE,KAAI8T,GAAiB,GAAEA,KAA0C,kBAAnBH,EAA8BA,EAAiBT,EAASS,MAAmBC,KAAiC,kBAAVC,EAAqBA,EAAQX,EAASW,OAAUtW,KAAK,IACvP,GAIGiW,EAAkB,CACnBnB,OAAQoB,EACRf,SAAUgB,GAEd,CCrFA,MAUA,EAVe,CACbK,cAAe,IACfC,IAAK,KACLC,UAAW,KACXC,OAAQ,KACRC,OAAQ,KACRC,MAAO,KACPC,SAAU,KACVC,QAAS,MCPL7I,EAAY,CAAC,cAAe,SAAU,UAAW,UAAW,cAAe,aAAc,SAW/F,SAAS8I,IAAmC,IAAvB/d,EAAOyN,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC9B,MACIuQ,OAAQC,EAAc,CAAC,EACvB7G,QAAS8G,EAAe,CAAC,EACzBC,YAAaC,EAAmB,CAAC,EACjCxE,WAAYyE,EAAkB,CAAC,GAC7Bre,EACJuX,GAAQC,EAAAA,EAAAA,GAA8BxX,EAASiV,GACjD,GAAIjV,EAAQse,KACV,MAAM,IAAIrF,OACcC,EAAAA,EAAAA,GAAuB,KAEjD,MAAM9B,EAAUD,EAAc+G,GACxBK,GAAcC,EAAAA,EAAAA,GAAkBxe,GACtC,IAAIye,GAAWnF,EAAAA,EAAAA,GAAUiF,EAAa,CACpCP,QC5BiCU,ED4BZH,EAAYG,YC5BaV,ED4BAC,GC3BzCjF,EAAAA,EAAAA,GAAS,CACd2F,QAAS,CACPC,UAAW,GACX,CAACF,EAAYG,GAAG,OAAQ,CACtB,kCAAmC,CACjCD,UAAW,KAGf,CAACF,EAAYG,GAAG,OAAQ,CACtBD,UAAW,MAGdZ,IDgBD5G,UAEA0H,QAASA,EAAQ3a,QACjByV,WAAYD,EAAiBvC,EAASiH,GACtCF,YAAapB,EAAkBqB,GAC/B/N,QAAQ2I,EAAAA,EAAAA,GAAS,CAAC,EAAG3I,KClCV,IAAsBqO,EAAaV,EDoChDS,GAAWnF,EAAAA,EAAAA,GAAUmF,EAAUlH,GAAO,QAAA/J,EAAAC,UAAAlN,OAvBFmN,EAAI,IAAA3D,MAAAyD,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJD,EAAIC,EAAA,GAAAF,UAAAE,GA8DxC,OAtCA8Q,EAAW/Q,EAAKqR,QAAO,CAACC,EAAKC,KAAa3F,EAAAA,EAAAA,GAAU0F,EAAKC,IAAWR,GA+BpEA,EAASS,mBAAoBlG,EAAAA,EAAAA,GAAS,CAAC,EAAGmG,EAAAA,EAA0B,MAAT5H,OAAgB,EAASA,EAAM2H,mBAC1FT,EAASW,YAAc,SAAYna,GACjC,OAAOoa,EAAAA,EAAAA,GAAgB,CACrBC,GAAIra,EACJsa,MAAOrf,MAEX,EACOue,CACT,CAWA,wDErFA,MACA,GADqBV,UAAAA,mDCHrB,wHCKO,MAAMyB,EAAwBC,IAAQC,EAAAA,EAAAA,IAAkBD,IAAkB,YAATA,EAC3DE,EAAwBD,EAAAA,GAMrC,GALeE,EAAAA,EAAAA,IAAa,CAC1BC,QAASC,EAAAA,EACTC,aAAY,IACZP,0GCLa,SAASQ,EAAavT,GAGlC,IAHmC,MACpCxH,EAAK,KACLmG,GACDqB,EACC,OAAOwT,EAAAA,EAAAA,GAAoB,CACzBhb,QACAmG,OACA2U,aAAY,IACZF,QAASC,EAAAA,GAEb,gDCdA,eAAyB,wJCClB,SAASI,EAAuBC,GACrC,OAAOC,EAAAA,EAAAA,IAAqB,aAAcD,EAC5C,EACuBE,EAAAA,EAAAA,GAAuB,aAAc,CAAC,OAAQ,eAAgB,iBAAkB,cAAe,aAAc,gBAAiB,kBAAmB,gBAAiB,iBAAkB,+BCD3M,MAAMpL,EAAY,CAAC,WAAY,YAAa,QAAS,YAAa,WAAY,YAAa,iBAAkB,cAAe,WAsBtHqL,GAAcC,EAAAA,EAAAA,IAAO,MAAO,CAChCnV,KAAM,aACN+U,KAAM,OACNK,kBAAmBA,CAACvb,EAAOiG,KACzB,MAAM,WACJuV,GACExb,EACJ,MAAO,CAACiG,EAAOpG,KAA2B,YAArB2b,EAAW7H,OAAuB1N,EAAQ,SAAOwV,EAAAA,EAAAA,GAAWD,EAAW7H,UAAW1N,EAAQ,YAAUwV,EAAAA,EAAAA,GAAWD,EAAW3G,aAAa,GAP5IyG,EASjB9T,IAGG,IAHF,MACF8S,EAAK,WACLkB,GACDhU,EACC,IAAIkU,EAAoBC,EAAuBC,EAAqBC,EAAmBC,EAAuBC,EAAoBC,EAAuBC,EAAoBC,EAAuBC,EAAuBC,EAAUC,EAAWC,EAChP,MAAO,CACLC,WAAY,OACZC,MAAO,MACP5E,OAAQ,MACR6E,QAAS,eAGTC,KAAMlB,EAAWmB,mBAAgB5gB,EAAY,eAC7C+N,WAAY,EACZ8S,WAAwD,OAA3ClB,EAAqBpB,EAAMpB,cAA+E,OAAtDyC,EAAwBD,EAAmBnV,aAAkB,EAASoV,EAAsB5W,KAAK2W,EAAoB,OAAQ,CAC5LzE,SAAuD,OAA5C2E,EAAsBtB,EAAMpB,cAAgF,OAAvD0C,EAAsBA,EAAoB3E,eAAoB,EAAS2E,EAAoBzE,UAE7JtC,SAAU,CACR4B,QAAS,UACToG,OAAkD,OAAzChB,EAAoBvB,EAAM3F,aAA8E,OAAtDmH,EAAwBD,EAAkBzG,cAAmB,EAAS0G,EAAsB/W,KAAK8W,EAAmB,MAAQ,UACvLiB,QAAoD,OAA1Cf,EAAqBzB,EAAM3F,aAA+E,OAAvDqH,EAAwBD,EAAmB3G,cAAmB,EAAS4G,EAAsBjX,KAAKgX,EAAoB,MAAQ,SAC3LgB,OAAmD,OAA1Cd,EAAqB3B,EAAM3F,aAA+E,OAAvDuH,EAAwBD,EAAmB7G,cAAmB,EAAS8G,EAAsBnX,KAAKkX,EAAoB,MAAQ,aAC1LT,EAAW3G,UAEblB,MAAmK,OAA3JwI,EAAsE,OAA7CC,GAAY9B,EAAMjB,MAAQiB,GAAOnI,UAA+D,OAA1CiK,EAAWA,EAASZ,EAAW7H,aAAkB,EAASyI,EAASpK,MAAgBmK,EAAwB,CAChMzL,OAAuD,OAA9C2L,GAAa/B,EAAMjB,MAAQiB,GAAOnI,UAAsD,OAAjCkK,EAAYA,EAAU3L,aAAkB,EAAS2L,EAAU1L,OAC3HN,SAAyD,OAA9CiM,GAAahC,EAAMjB,MAAQiB,GAAOnI,UAAsD,OAAjCmK,EAAYA,EAAU5L,aAAkB,EAAS4L,EAAUjM,SAC7HoG,aAAS1a,GACTyf,EAAW7H,OACd,IAEGqJ,EAAuBrW,EAAAA,YAAiB,SAAiBsW,EAAS/V,GACtE,MAAMlH,GAAQ+a,EAAAA,EAAAA,GAAc,CAC1B/a,MAAOid,EACP9W,KAAM,gBAEF,SACFlG,EAAQ,UACRuO,EAAS,MACTmF,EAAQ,UAAS,UACjBuJ,EAAY,MAAK,SACjBrI,EAAW,SAAQ,UACnBsI,EAAS,eACTC,GAAiB,EAAK,YACtBC,EAAW,QACXC,EAAU,aACRtd,EACJsS,GAAQC,EAAAA,EAAAA,GAA8BvS,EAAOgQ,GACzC2M,EAA6BhW,EAAAA,eAAqB1G,IAA+B,QAAlBA,EAASF,KACxEyb,GAAazH,EAAAA,EAAAA,GAAS,CAAC,EAAG/T,EAAO,CACrC2T,QACAuJ,YACArI,WACA0I,iBAAkBN,EAAQpI,SAC1BuI,iBACAE,UACAX,kBAEIa,EAAO,CAAC,EACTJ,IACHI,EAAKF,QAAUA,GAEjB,MAAMG,EAlFkBjC,KACxB,MAAM,MACJ7H,EAAK,SACLkB,EAAQ,QACR4I,GACEjC,EACEkC,EAAQ,CACZ7d,KAAM,CAAC,OAAkB,YAAV8T,GAAwB,SAAO8H,EAAAA,EAAAA,GAAW9H,KAAW,YAAU8H,EAAAA,EAAAA,GAAW5G,OAE3F,OAAO8I,EAAAA,EAAAA,GAAeD,EAAOzC,EAAwBwC,EAAQ,EAyE7CG,CAAkBpC,GAClC,OAAoBqC,EAAAA,EAAAA,MAAMxC,GAAatH,EAAAA,EAAAA,GAAS,CAC9C+J,GAAIZ,EACJ1O,WAAWuP,EAAAA,EAAAA,GAAKN,EAAQ5d,KAAM2O,GAC9BwP,UAAW,QACXrK,MAAOwJ,EACP,eAAeE,QAActhB,EAC7BkiB,KAAMZ,EAAc,WAAQthB,EAC5BmL,IAAKA,GACJsW,EAAMlL,EAAOqK,GAAiB1c,EAASD,MAAO,CAC/Cwb,WAAYA,EACZvb,SAAU,CAAC0c,EAAgB1c,EAASD,MAAMC,SAAWA,EAAUod,GAA2Ba,EAAAA,EAAAA,KAAK,QAAS,CACtGje,SAAUod,IACP,QAET,IAyEAL,EAAQmB,QAAU,UAClB,UChLe,SAAS1O,EAAc2O,EAAMC,GAC1C,SAASC,EAAUte,EAAOkH,GACxB,OAAoBgX,EAAAA,EAAAA,KAAKlB,GAASjJ,EAAAA,EAAAA,GAAS,CACzC,cAAgB,GAAEsK,QAClBnX,IAAKA,GACJlH,EAAO,CACRC,SAAUme,IAEd,CAOA,OADAE,EAAUH,QAAUnB,EAAQmB,QACRxX,EAAAA,KAAyBA,EAAAA,WAAiB2X,GAChE,+CCzBA,gBAAuB,ueCAvB,gBAAoC,yBCApC,QCDe,SAA4BC,EAAWC,GAElD,MAAO,IAAM,IAUjB,2CCXA,QCAe,SAA4BC,EAAsBH,GAE7D,MAAO,IAAM,IAoBjB,ECtBA,gBAAqB,gBCErB,eAAoB,ECFpB,QCDe,SAAyBte,EAAO0e,EAAUC,EAAeC,EAAUC,GAE9E,OAAO,IAOX,8CCaO,MAAMC,EAA8B,CACzCC,UAAWC,IAITC,EAAAA,EAAmBF,UAAUC,EAAU,8DC1B3C,QCAe,SAAsBnd,EAASqd,GAC5C,IAAIC,EAAUC,EACd,OAAoBzY,EAAAA,eAAqB9E,KAGiM,IAHrLqd,EAASvgB,QAGzB,OAApCwgB,EAAWtd,EAAQ9B,KAAKoe,SAAmBgB,EAA6C,OAAjCC,EAAgBvd,EAAQ9B,OAA6D,OAA3Cqf,EAAgBA,EAAcC,WAA8D,OAAxCD,EAAgBA,EAAc/gB,YAAiB,EAAS+gB,EAAcjB,QAC9N,gDCNA,gBAA4B,gDCA5B,gBAA0B,8DCE1B,QCCe,SAAsB3W,GAKlC,IALmC,WACpC8X,EACAtQ,QAASuQ,EAAW,KACpBpZ,EAAI,MACJqZ,EAAQ,SACThY,EAEC,MACEU,QAASuX,GACP9Y,EAAAA,YAA4B5K,IAAfujB,IACVI,EAAYC,GAAYhZ,EAAAA,SAAe4Y,GAsB9C,MAAO,CArBOE,EAAeH,EAAaI,EAgBX/Y,EAAAA,aAAkBiZ,IAC1CH,GACHE,EAASC,EACX,GACC,IAEL,gDClCA,gBAAgC,gDCAhC,gBAA+B,gDCA/B,gBAAyB,wECEzB,IAAIC,GAAmB,EACnBC,GAA0B,EAC9B,MAAMC,EAAiC,IAAIC,EAAAA,EACrCC,EAAsB,CAC1B/P,MAAM,EACNxR,QAAQ,EACRwhB,KAAK,EACLC,KAAK,EACLC,OAAO,EACPC,UAAU,EACVC,QAAQ,EACRC,MAAM,EACNC,OAAO,EACPC,MAAM,EACNC,MAAM,EACNC,UAAU,EACV,kBAAkB,GAkCpB,SAASC,EAAcC,GACjBA,EAAMC,SAAWD,EAAME,QAAUF,EAAMG,UAG3CnB,GAAmB,EACrB,CASA,SAASoB,IACPpB,GAAmB,CACrB,CACA,SAASqB,IACsB,WAAzBjmB,KAAKkmB,iBAKHrB,IACFD,GAAmB,EAGzB,CAeA,SAASuB,EAAeP,GACtB,MAAM,OACJQ,GACER,EACJ,IACE,OAAOQ,EAAOC,QAAQ,iBACxB,CAAE,MAAO1O,GAIP,CAKF,OAAOiN,GAjFT,SAAuCjgB,GACrC,MAAM,KACJG,EAAI,QACJwhB,GACE3hB,EACJ,QAAgB,UAAZ2hB,IAAuBtB,EAAoBlgB,IAAUH,EAAK4hB,WAG9C,aAAZD,IAA2B3hB,EAAK4hB,YAGhC5hB,EAAK6hB,iBAIX,CAkE6BC,CAA8BL,EAC3D,CC9GA,QD+Ge,WACb,MAAMna,EAAMP,EAAAA,aAAkB/G,IAhChC,IAAiB+hB,EAiCD,MAAR/hB,KAjCS+hB,EAkCH/hB,EAAKgiB,eAjCbC,iBAAiB,UAAWjB,GAAe,GAC/Ce,EAAIE,iBAAiB,YAAaZ,GAAmB,GACrDU,EAAIE,iBAAiB,cAAeZ,GAAmB,GACvDU,EAAIE,iBAAiB,aAAcZ,GAAmB,GACtDU,EAAIE,iBAAiB,mBAAoBX,GAAwB,GA8B/D,GACC,IACGY,EAAoBnb,EAAAA,QAAa,GAoCvC,MAAO,CACLmb,oBACAC,QATF,SAA4BlB,GAC1B,QAAIO,EAAeP,KACjBiB,EAAkB5Z,SAAU,GACrB,EAGX,EAIE8Z,OAlCF,WAME,QAAIF,EAAkB5Z,UAKpB4X,GAA0B,EAC1BC,EAA+BkC,MAAM,KAAK,KACxCnC,GAA0B,CAAK,IAEjCgC,EAAkB5Z,SAAU,GACrB,EAGX,EAgBEhB,MAEJ,8EEzJe,SAASgb,EAAaliB,GACnC,MAAM,OACJiG,EAAM,aACN6U,EAAe,CAAC,GACd9a,EACEmiB,EAAiC,oBAAXlc,EAAwBmc,IAAcnc,cAPnDlK,KADAgR,EAQkEqV,IAP7C,OAARrV,GAA4C,IAA5B5O,OAAOkkB,KAAKtV,GAAKzR,OAOkCwf,EAAesH,GARhH,IAAiBrV,CAQ2G,EAAE9G,EAC5H,OAAoBiY,EAAAA,EAAAA,KAAK7W,EAAAA,GAAQ,CAC/BpB,OAAQkc,GAEZ,gOChBIG,EAAkB,0+HAElBC,GAA6Blc,EAAAA,EAAAA,IAAQ,SAAUmU,GACjD,OAAO8H,EAAgBE,KAAKhI,IAAgC,MAAvBA,EAAK1b,WAAW,IAE3B,MAAvB0b,EAAK1b,WAAW,IAEhB0b,EAAK1b,WAAW,GAAK,EAC1B,4CCFI2jB,EAA2BF,EAE3BG,EAA2B,SAAkCvmB,GAC/D,MAAe,UAARA,CACT,EAEIwmB,EAA8B,SAAqCxnB,GACrE,MAAsB,kBAARA,GAGdA,EAAI2D,WAAW,GAAK,GAAK2jB,EAA2BC,CACtD,EACIE,EAA4B,SAAmCznB,EAAKJ,EAAS8nB,GAC/E,IAAIpI,EAEJ,GAAI1f,EAAS,CACX,IAAI+nB,EAA2B/nB,EAAQ0f,kBACvCA,EAAoBtf,EAAI4nB,uBAAyBD,EAA2B,SAAUpE,GACpF,OAAOvjB,EAAI4nB,sBAAsBrE,IAAaoE,EAAyBpE,EACzE,EAAIoE,CACN,CAMA,MAJiC,oBAAtBrI,GAAoCoI,IAC7CpI,EAAoBtf,EAAI4nB,uBAGnBtI,CACT,EAIIuI,EAAY,SAAmBxb,GACjC,IAAItB,EAAQsB,EAAKtB,MACbH,EAAayB,EAAKzB,WAClB2I,EAAclH,EAAKkH,YAMvB,OALAD,EAAAA,EAAAA,IAAevI,EAAOH,EAAY2I,IAClCP,EAAAA,EAAAA,IAAyC,WACvC,OAAO/F,EAAAA,EAAAA,IAAalC,EAAOH,EAAY2I,EACzC,IAEO,IACT,ECrCIuU,EDuCe,SAAStI,EAAaxf,EAAKJ,GAO5C,IAEI8S,EACAqV,EAHAL,EAAS1nB,EAAIgoB,iBAAmBhoB,EAChCioB,EAAUP,GAAU1nB,EAAIkoB,gBAAkBloB,OAI9BY,IAAZhB,IACF8S,EAAiB9S,EAAQuoB,MACzBJ,EAAkBnoB,EAAQsmB,QAG5B,IAAI5G,EAAoBmI,EAA0BznB,EAAKJ,EAAS8nB,GAC5DU,EAA2B9I,GAAqBkI,EAA4BS,GAC5EI,GAAeD,EAAyB,MAC5C,OAAO,WACL,IAAI9a,EAAOD,UACPvC,EAAS4c,QAAmC9mB,IAAzBZ,EAAI2R,iBAAiC3R,EAAI2R,iBAAiB5N,MAAM,GAAK,GAM5F,QAJuBnD,IAAnB8R,GACF5H,EAAOpK,KAAK,SAAWgS,EAAiB,KAG3B,MAAXpF,EAAK,SAA8B1M,IAAhB0M,EAAK,GAAGkF,IAC7B1H,EAAOpK,KAAKgN,MAAM5C,EAAQwC,OACrB,CACDhL,EAIJwI,EAAOpK,KAAK4M,EAAK,GAAG,IAIpB,IAHA,IAAIuF,EAAMvF,EAAKnN,OACX4B,EAAI,EAEDA,EAAI8Q,EAAK9Q,IAKd+I,EAAOpK,KAAK4M,EAAKvL,GAAIuL,EAAK,GAAGvL,GAEjC,CAGA,IAAIumB,GAAS1c,EAAAA,EAAAA,IAAiB,SAAU/G,EAAOkG,EAAOgB,GACpD,IAAIwc,EAAWF,GAAexjB,EAAM8d,IAAMsF,EACtC5U,EAAY,GACZmV,EAAsB,GACtB/W,EAAc5M,EAElB,GAAmB,MAAfA,EAAMsa,MAAe,CAGvB,IAAK,IAAIne,KAFTyQ,EAAc,CAAC,EAEC5M,EACd4M,EAAYzQ,GAAO6D,EAAM7D,GAG3ByQ,EAAY0N,MAAQ3T,EAAAA,WAAiBS,EAAAA,EACvC,CAE+B,kBAApBpH,EAAMwO,UACfA,GAAYJ,EAAAA,EAAAA,IAAoBlI,EAAME,WAAYud,EAAqB3jB,EAAMwO,WACjD,MAAnBxO,EAAMwO,YACfA,EAAYxO,EAAMwO,UAAY,KAGhC,IAAIzI,GAAauB,EAAAA,EAAAA,GAAgBrB,EAAOJ,OAAO8d,GAAsBzd,EAAME,WAAYwG,GACvF4B,GAAatI,EAAM/J,IAAM,IAAM4J,EAAWI,UAElBpK,IAApBmnB,IACF1U,GAAa,IAAM0U,GAGrB,IAAIU,EAAyBJ,QAAqCznB,IAAtB0e,EAAkCkI,EAA4Be,GAAYH,EAClHM,EAAW,CAAC,EAEhB,IAAK,IAAInb,KAAQ1I,EACXwjB,GAAwB,OAAT9a,GAGnBkb,EAAuBlb,KACrBmb,EAASnb,GAAQ1I,EAAM0I,IAM3B,OAFAmb,EAASrV,UAAYA,EACrBqV,EAAS3c,IAAMA,EACKP,EAAAA,cAAoBA,EAAAA,SAAgB,KAAmBA,EAAAA,cAAoBqc,EAAW,CACxG9c,MAAOA,EACPH,WAAYA,EACZ2I,YAAiC,kBAAbgV,IACL/c,EAAAA,cAAoB+c,EAAUG,GACjD,IAwBA,OAvBAJ,EAAOpF,iBAAiCtiB,IAAnB8R,EAA+BA,EAAiB,WAAgC,kBAAZuV,EAAuBA,EAAUA,EAAQ/E,aAAe+E,EAAQjd,MAAQ,aAAe,IAChLsd,EAAOK,aAAe3oB,EAAI2oB,aAC1BL,EAAON,eAAiBM,EACxBA,EAAOJ,eAAiBD,EACxBK,EAAO3W,iBAAmB7G,EAC1Bwd,EAAOV,sBAAwBtI,EAC/Btc,OAAOmR,eAAemU,EAAQ,WAAY,CACxCplB,MAAO,WAML,MAAO,IAAM6kB,CACf,IAGFO,EAAOM,cAAgB,SAAUC,EAASC,GACxC,OAAOtJ,EAAaqJ,GAASjQ,EAAAA,EAAAA,GAAS,CAAC,EAAGhZ,EAASkpB,EAAa,CAC9DxJ,kBAAmBmI,EAA0Ba,EAAQQ,GAAa,MAChEpb,WAAM,EAAQ5C,EACpB,EAEOwd,CACT,CACF,EClK6BS,OAHlB,CAAC,IAAK,OAAQ,UAAW,OAAQ,UAAW,QAAS,QAAS,IAAK,OAAQ,MAAO,MAAO,MAAO,aAAc,OAAQ,KAAM,SAAU,SAAU,UAAW,OAAQ,OAAQ,MAAO,WAAY,OAAQ,WAAY,KAAM,MAAO,UAAW,MAAO,SAAU,MAAO,KAAM,KAAM,KAAM,QAAS,WAAY,aAAc,SAAU,SAAU,OAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAAQ,SAAU,SAAU,KAAM,OAAQ,IAAK,SAAU,MAAO,QAAS,MAAO,MAAO,SAAU,QAAS,SAAU,KAAM,OAAQ,OAAQ,MAAO,OAAQ,UAAW,OAAQ,WAAY,OAAQ,QAAS,MAAO,WAAY,SAAU,KAAM,WAAY,SAAU,SAAU,IAAK,QAAS,UAAW,MAAO,WAAY,IAAK,KAAM,KAAM,OAAQ,IAAK,OAAQ,SAAU,UAAW,SAAU,QAAS,SAAU,OAAQ,SAAU,QAAS,MAAO,UAAW,MAAO,QAAS,QAAS,KAAM,WAAY,QAAS,KAAM,QAAS,OAAQ,QAAS,KAAM,QAAS,IAAK,KAAM,MAAO,QAAS,MAC77B,SAAU,WAAY,OAAQ,UAAW,gBAAiB,IAAK,QAAS,OAAQ,iBAAkB,OAAQ,OAAQ,UAAW,UAAW,WAAY,iBAAkB,OAAQ,OAAQ,MAAO,OAAQ,SAGhM1nB,SAAQ,SAAU+kB,GAErB0B,EAAU1B,GAAW0B,EAAU1B,EACjC,qCCNA,IAAIrb,EAOW,SAASie,EAAqBnkB,GAC3C,MAAM,YACJokB,EAAW,SACXnkB,GACED,EACJ,OAAOokB,GAAele,GAAqBgY,EAAAA,EAAAA,KAAKrX,EAAAA,EAAe,CAC7DxI,MAAO6H,EACPjG,SAAUA,IACPA,CACP,CAfwB,kBAAbtD,WACTuJ,GAAQvB,EAAAA,EAAAA,GAAY,CAClBxI,IAAK,MACLV,SAAS,kBCHE,SAAS6f,EAAOngB,EAAKJ,GAalC,OAZsBspB,EAASlpB,EAAKJ,EAatC,CAGO,MAAMupB,EAAyBA,CAACnpB,EAAKopB,KAGtCzf,MAAMmI,QAAQ9R,EAAI2R,oBACpB3R,EAAI2R,iBAAmByX,EAAUppB,EAAI2R,kBACvC,mCC/BE6B,EAAyBC,EAAQ,MAIrCC,EAAQ,GAAQ2V,EAGhB3V,EAAQ,GAASoD,EAGjBpD,EAAQ,GA8NR,SAA0B4V,EAAYlU,GACpC,MAAMmU,EAAOC,EAAaF,GACpBG,EAAOD,EAAapU,GAC1B,OAAQzS,KAAK+mB,IAAIH,EAAME,GAAQ,MAAS9mB,KAAKgnB,IAAIJ,EAAME,GAAQ,IACjE,EA9NA/V,EAAQ,EAAUkD,EAQlB,IAAIgT,EAA0BpW,EAAuBC,EAAQ,OACzDoW,EAASrW,EAAuBC,EAAQ,OAU5C,SAASqW,EAAa5mB,GAAyB,IAAlBymB,EAAGtc,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG,EAAGqc,EAAGrc,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG,EAM1C,OAAO,EAAIwc,EAAOhW,SAAS3Q,EAAOymB,EAAKD,EACzC,CAOA,SAASK,EAASvR,GAChBA,EAAQA,EAAMzU,MAAM,GACpB,MAAMimB,EAAK,IAAIC,OAAQ,OAAMzR,EAAMrY,QAAU,EAAI,EAAI,KAAM,KAC3D,IAAI+pB,EAAS1R,EAAMjP,MAAMygB,GAIzB,OAHIE,GAA+B,IAArBA,EAAO,GAAG/pB,SACtB+pB,EAASA,EAAO9gB,KAAI+gB,GAAKA,EAAIA,KAExBD,EAAU,MAAuB,IAAlBA,EAAO/pB,OAAe,IAAM,MAAM+pB,EAAO9gB,KAAI,CAAC+gB,EAAGzmB,IAC9DA,EAAQ,EAAI0mB,SAASD,EAAG,IAAMxnB,KAAK4X,MAAM6P,SAASD,EAAG,IAAM,IAAM,KAAQ,MAC/ExjB,KAAK,SAAW,EACrB,CAaA,SAAS0jB,EAAe7R,GAEtB,GAAIA,EAAM5T,KACR,OAAO4T,EAET,GAAwB,MAApBA,EAAM8R,OAAO,GACf,OAAOD,EAAeN,EAASvR,IAEjC,MAAM+R,EAAS/R,EAAMhV,QAAQ,KACvBoB,EAAO4T,EAAMgS,UAAU,EAAGD,GAChC,IAA+D,IAA3D,CAAC,MAAO,OAAQ,MAAO,OAAQ,SAAS/mB,QAAQoB,GAClD,MAAM,IAAIiU,OACgF,EAAI+Q,EAAwB/V,SAAS,EAAG2E,IAEpI,IACIiS,EADAC,EAASlS,EAAMgS,UAAUD,EAAS,EAAG/R,EAAMrY,OAAS,GAExD,GAAa,UAATyE,GAMF,GALA8lB,EAASA,EAAOtgB,MAAM,KACtBqgB,EAAaC,EAAOC,QACE,IAAlBD,EAAOvqB,QAAwC,MAAxBuqB,EAAO,GAAGJ,OAAO,KAC1CI,EAAO,GAAKA,EAAO,GAAG3mB,MAAM,KAE6D,IAAvF,CAAC,OAAQ,aAAc,UAAW,eAAgB,YAAYP,QAAQinB,GACxE,MAAM,IAAI5R,OACgF,EAAI+Q,EAAwB/V,SAAS,GAAI4W,SAGrIC,EAASA,EAAOtgB,MAAM,KAGxB,OADAsgB,EAASA,EAAOthB,KAAIlG,GAAS0nB,WAAW1nB,KACjC,CACL0B,OACA8lB,SACAD,aAEJ,CAQA,MAAMI,EAAerS,IACnB,MAAMsS,EAAkBT,EAAe7R,GACvC,OAAOsS,EAAgBJ,OAAO3mB,MAAM,EAAG,GAAGqF,KAAI,CAAC2hB,EAAKC,KAAiD,IAAzCF,EAAgBlmB,KAAKpB,QAAQ,QAAyB,IAARwnB,EAAa,GAAED,KAASA,IAAKpkB,KAAK,IAAI,EAsBlJ,SAASskB,EAAezS,GACtB,MAAM,KACJ5T,EAAI,WACJ6lB,GACEjS,EACJ,IAAI,OACFkS,GACElS,EAaJ,OAZ6B,IAAzB5T,EAAKpB,QAAQ,OAEfknB,EAASA,EAAOthB,KAAI,CAAC+gB,EAAGpoB,IAAMA,EAAI,EAAIqoB,SAASD,EAAG,IAAMA,KACtB,IAAzBvlB,EAAKpB,QAAQ,SACtBknB,EAAO,GAAM,GAAEA,EAAO,MACtBA,EAAO,GAAM,GAAEA,EAAO,OAGtBA,GAD6B,IAA3B9lB,EAAKpB,QAAQ,SACL,GAAEinB,KAAcC,EAAO/jB,KAAK,OAE5B,GAAE+jB,EAAO/jB,KAAK,QAElB,GAAE/B,KAAQ8lB,IACpB,CAuBA,SAASQ,EAAS1S,GAChBA,EAAQ6R,EAAe7R,GACvB,MAAM,OACJkS,GACElS,EACE5F,EAAI8X,EAAO,GACXS,EAAIT,EAAO,GAAK,IAChBU,EAAIV,EAAO,GAAK,IAChBW,EAAIF,EAAIxoB,KAAKgnB,IAAIyB,EAAG,EAAIA,GACxBE,EAAI,SAACnB,GAAC,IAAEliB,EAACoF,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,IAAI8c,EAAIvX,EAAI,IAAM,GAAE,OAAKwY,EAAIC,EAAI1oB,KAAK+mB,IAAI/mB,KAAKgnB,IAAI1hB,EAAI,EAAG,EAAIA,EAAG,IAAK,EAAE,EACvF,IAAIrD,EAAO,MACX,MAAM2mB,EAAM,CAAC5oB,KAAK4X,MAAa,IAAP+Q,EAAE,IAAW3oB,KAAK4X,MAAa,IAAP+Q,EAAE,IAAW3oB,KAAK4X,MAAa,IAAP+Q,EAAE,KAK1E,MAJmB,SAAf9S,EAAM5T,OACRA,GAAQ,IACR2mB,EAAI7qB,KAAKgqB,EAAO,KAEXO,EAAe,CACpBrmB,OACA8lB,OAAQa,GAEZ,CASA,SAAS/B,EAAahR,GAEpB,IAAI+S,EAAqB,SADzB/S,EAAQ6R,EAAe7R,IACP5T,MAAiC,SAAf4T,EAAM5T,KAAkBylB,EAAea,EAAS1S,IAAQkS,OAASlS,EAAMkS,OASzG,OARAa,EAAMA,EAAIniB,KAAI2hB,IACO,UAAfvS,EAAM5T,OACRmmB,GAAO,KAEFA,GAAO,OAAUA,EAAM,QAAUA,EAAM,MAAS,QAAU,OAI5DS,QAAQ,MAASD,EAAI,GAAK,MAASA,EAAI,GAAK,MAASA,EAAI,IAAIE,QAAQ,GAC9E,CAuBA,SAASpC,EAAM7Q,EAAOtV,GAWpB,OAVAsV,EAAQ6R,EAAe7R,GACvBtV,EAAQ4mB,EAAa5mB,GACF,QAAfsV,EAAM5T,MAAiC,QAAf4T,EAAM5T,OAChC4T,EAAM5T,MAAQ,KAEG,UAAf4T,EAAM5T,KACR4T,EAAMkS,OAAO,GAAM,IAAGxnB,IAEtBsV,EAAMkS,OAAO,GAAKxnB,EAEb+nB,EAAezS,EACxB,CAkBA,SAAS1B,EAAO0B,EAAOkT,GAGrB,GAFAlT,EAAQ6R,EAAe7R,GACvBkT,EAAc5B,EAAa4B,IACQ,IAA/BlT,EAAM5T,KAAKpB,QAAQ,OACrBgV,EAAMkS,OAAO,IAAM,EAAIgB,OAClB,IAAmC,IAA/BlT,EAAM5T,KAAKpB,QAAQ,SAAkD,IAAjCgV,EAAM5T,KAAKpB,QAAQ,SAChE,IAAK,IAAIzB,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAC1ByW,EAAMkS,OAAO3oB,IAAM,EAAI2pB,EAG3B,OAAOT,EAAezS,EACxB,CAkBA,SAAS5B,EAAQ4B,EAAOkT,GAGtB,GAFAlT,EAAQ6R,EAAe7R,GACvBkT,EAAc5B,EAAa4B,IACQ,IAA/BlT,EAAM5T,KAAKpB,QAAQ,OACrBgV,EAAMkS,OAAO,KAAO,IAAMlS,EAAMkS,OAAO,IAAMgB,OACxC,IAAmC,IAA/BlT,EAAM5T,KAAKpB,QAAQ,OAC5B,IAAK,IAAIzB,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAC1ByW,EAAMkS,OAAO3oB,KAAO,IAAMyW,EAAMkS,OAAO3oB,IAAM2pB,OAE1C,IAAqC,IAAjClT,EAAM5T,KAAKpB,QAAQ,SAC5B,IAAK,IAAIzB,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAC1ByW,EAAMkS,OAAO3oB,KAAO,EAAIyW,EAAMkS,OAAO3oB,IAAM2pB,EAG/C,OAAOT,EAAezS,EACxB,mCC/TIhF,EAAyBC,EAAQ,MAIrCC,EAAQ,GAmGR,WAAkC,IAAZiY,EAAKte,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC7B,MAAM,QACJoS,EAAO,aACPE,EAAeiM,EAAkB,sBACjCxM,EAAwBE,EAAiB,sBACzCC,EAAwBD,GACtBqM,EACEE,EAAWhnB,IACR,EAAIinB,EAAiBjY,UAAS,EAAIkY,EAAUlY,SAAS,CAAC,EAAGhP,EAAO,CACrEsa,MAAO6M,GAAa,EAAID,EAAUlY,SAAS,CAAC,EAAGhP,EAAO,CACpD8a,eACAF,gBAKN,OADAoM,EAASI,gBAAiB,EACnB,SAACjsB,GAA2B,IAAtBksB,EAAY7e,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG,CAAC,GAE3B,EAAI8e,EAAchD,wBAAwBnpB,GAAK8K,GAAUA,EAAOshB,QAAOC,KAAoB,MAATA,GAAiBA,EAAMJ,oBACzG,MACIjhB,KAAMwY,EACNzD,KAAMuM,EACNC,qBAAsBC,EACtBC,OAAQC,EAAW,kBAGnBtM,EAAoBuM,EAAyBC,EAAqBN,KAChEJ,EACJtsB,GAAU,EAAIitB,EAA+BhZ,SAASqY,EAAcY,GAGhEP,OAAqD3rB,IAA9B4rB,EAA0CA,EAGvEF,GAAmC,SAAlBA,GAA8C,SAAlBA,IAA4B,EACnEG,EAASC,IAAe,EAS9B,IAAIK,EAA0BzN,EAIR,SAAlBgN,GAA8C,SAAlBA,EAC9BS,EAA0B3N,EACjBkN,EAETS,EAA0BxN,EAjIhC,SAAqBvf,GACnB,MAAsB,kBAARA,GAIdA,EAAI2D,WAAW,GAAK,EACtB,CA4He4P,CAAYvT,KAErB+sB,OAA0BnsB,GAE5B,MAAMosB,GAAwB,EAAIb,EAActY,SAAS7T,GAAK,EAAI+rB,EAAUlY,SAAS,CACnFyL,kBAAmByN,EACnB5E,MAvBEA,WAwBDvoB,IACGqtB,EAAoBC,GAIC,oBAAdA,GAA4BA,EAAUlF,iBAAmBkF,IAAa,EAAIC,EAAWC,eAAeF,GACtGroB,GAASwoB,EAAgBH,GAAW,EAAInB,EAAUlY,SAAS,CAAC,EAAGhP,EAAO,CAC3Esa,MAAO6M,EAAa,CAClB7M,MAAOta,EAAMsa,MACbQ,eACAF,eAICyN,EAEHI,EAAoB,SAACC,GACzB,IAAIC,EAAsBP,EAAkBM,GAAU,QAAAngB,EAAAC,UAAAlN,OADhBstB,EAAW,IAAA9jB,MAAAyD,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAXkgB,EAAWlgB,EAAA,GAAAF,UAAAE,GAEjD,MAAMmgB,EAA8BD,EAAcA,EAAYrkB,IAAI6jB,GAAqB,GACnFzJ,GAAiBpD,GACnBsN,EAA4BhtB,MAAKmE,IAC/B,MAAMsa,EAAQ6M,GAAa,EAAID,EAAUlY,SAAS,CAAC,EAAGhP,EAAO,CAC3D8a,eACAF,aAEF,IAAKN,EAAMwO,aAAexO,EAAMwO,WAAWnK,KAAmBrE,EAAMwO,WAAWnK,GAAeoK,eAC5F,OAAO,KAET,MAAMA,EAAiBzO,EAAMwO,WAAWnK,GAAeoK,eACjDC,EAAyB,CAAC,EAOhC,OALA7qB,OAAO8qB,QAAQF,GAAgBvsB,SAAQ0sB,IAA0B,IAAxBC,EAASC,GAAUF,EAC1DF,EAAuBG,GAAWX,EAAgBY,GAAW,EAAIlC,EAAUlY,SAAS,CAAC,EAAGhP,EAAO,CAC7Fsa,UACC,IAEEiB,EAAkBvb,EAAOgpB,EAAuB,IAGvDrK,IAAkB+I,GACpBmB,EAA4BhtB,MAAKmE,IAC/B,IAAIqpB,EACJ,MAAM/O,EAAQ6M,GAAa,EAAID,EAAUlY,SAAS,CAAC,EAAGhP,EAAO,CAC3D8a,eACAF,aAGF,OAAO4N,EAAgB,CACrB7S,SAF6B,MAAT2E,GAA2D,OAAzC+O,EAAoB/O,EAAMwO,aAAiF,OAAzDO,EAAoBA,EAAkB1K,SAA0B,EAAS0K,EAAkB1T,WAGlL,EAAIuR,EAAUlY,SAAS,CAAC,EAAGhP,EAAO,CACnCsa,UACC,IAGFsN,GACHiB,EAA4BhtB,KAAKmrB,GAEnC,MAAMsC,EAAwBT,EAA4BvtB,OAASstB,EAAYttB,OAC/E,GAAIwJ,MAAMmI,QAAQyb,IAAaY,EAAwB,EAAG,CACxD,MAAMC,EAAe,IAAIzkB,MAAMwkB,GAAuB5M,KAAK,IAE3DiM,EAAsB,IAAID,KAAaa,GACvCZ,EAAoBhb,IAAM,IAAI+a,EAAS/a,OAAQ4b,EACjD,CACA,MAAMjL,EAAY6J,EAAsBQ,KAAwBE,GAchE,OAHI1tB,EAAIgjB,UACNG,EAAUH,QAAUhjB,EAAIgjB,SAEnBG,CACT,EAIA,OAHI6J,EAAsBqB,aACxBf,EAAkBe,WAAarB,EAAsBqB,YAEhDf,CACT,CACF,EAnPA5Z,EAAQ,GAAoB4L,EAE5B,IAAIyM,EAAYvY,EAAuBC,EAAQ,OAC3CoZ,EAAiCrZ,EAAuBC,EAAQ,OAChE0Y,EAWJ,SAAiC9pB,EAAG6R,GAAK,IAAKA,GAAK7R,GAAKA,EAAEisB,WAAY,OAAOjsB,EAAG,GAAI,OAASA,GAAK,iBAAmBA,GAAK,mBAAqBA,EAAG,MAAO,CAAEwR,QAASxR,GAAK,IAAIksB,EAAIC,EAAyBta,GAAI,GAAIqa,GAAKA,EAAEE,IAAIpsB,GAAI,OAAOksB,EAAE1lB,IAAIxG,GAAI,IAAI8nB,EAAI,CAAEuE,UAAW,MAAQrD,EAAIroB,OAAOmR,gBAAkBnR,OAAO2rB,yBAA0B,IAAK,IAAIC,KAAKvsB,EAAG,GAAI,YAAcusB,GAAK5rB,OAAO9B,UAAUyV,eAAe/M,KAAKvH,EAAGusB,GAAI,CAAE,IAAI7sB,EAAIspB,EAAIroB,OAAO2rB,yBAAyBtsB,EAAGusB,GAAK,KAAM7sB,IAAMA,EAAE8G,KAAO9G,EAAE+G,KAAO9F,OAAOmR,eAAegW,EAAGyE,EAAG7sB,GAAKooB,EAAEyE,GAAKvsB,EAAEusB,EAAI,CAAE,OAAOzE,EAAEtW,QAAUxR,EAAGksB,GAAKA,EAAEzlB,IAAIzG,EAAG8nB,GAAIA,CAAG,CAX5jB0E,CAAwBpb,EAAQ,OAChD0Z,EAAa1Z,EAAQ,MAGrBqb,GAFctb,EAAuBC,EAAQ,MAC3BD,EAAuBC,EAAQ,OAClCD,EAAuBC,EAAQ,QAC9CqY,EAAmBtY,EAAuBC,EAAQ,OACtD,MAAMoB,EAAY,CAAC,cACjBka,EAAa,CAAC,YACdjC,EAAa,CAAC,OAAQ,OAAQ,uBAAwB,SAAU,qBAElE,SAAS0B,EAAyBnsB,GAAK,GAAI,mBAAqBqG,QAAS,OAAO,KAAM,IAAIwL,EAAI,IAAIxL,QAAW6lB,EAAI,IAAI7lB,QAAW,OAAQ8lB,EAA2B,SAAUnsB,GAAK,OAAOA,EAAIksB,EAAIra,CAAG,GAAG7R,EAAI,CAgB3M,SAASid,EAAkBD,GACzB,MAAgB,eAATA,GAAkC,UAATA,GAA6B,OAATA,GAA0B,OAATA,CACvE,CACA,MAAMuM,GAAkD,EAAIkD,EAAajb,WACnE+Y,EAAuB/a,GACtBA,EAGEA,EAAOyY,OAAO,GAAGpZ,cAAgBW,EAAO9N,MAAM,GAF5C8N,EAIX,SAASma,EAAYgD,GAIlB,IAJmB,aACpBrP,EAAY,MACZR,EAAK,QACLM,GACDuP,EACC,OA7Bepd,EA6BAuN,EA5BoB,IAA5Bnc,OAAOkkB,KAAKtV,GAAKzR,OA4BAwf,EAAeR,EAAMM,IAAYN,EA7B3D,IAAiBvN,CA8BjB,CACA,SAAS+a,EAAyB5M,GAChC,OAAKA,EAGE,CAAClb,EAAOiG,IAAWA,EAAOiV,GAFxB,IAGX,CACA,SAASsN,EAAgB4B,EAAe5iB,GACtC,IAAI,WACAgU,GACEhU,EACJxH,GAAQ,EAAIgoB,EAA+BhZ,SAASxH,EAAMwI,GAC5D,MAAMqa,EAA6C,oBAAlBD,EAA+BA,GAAc,EAAIlD,EAAUlY,SAAS,CACnGwM,cACCxb,IAAUoqB,EACb,GAAItlB,MAAMmI,QAAQod,GAChB,OAAOA,EAAkBC,SAAQC,GAAiB/B,EAAgB+B,GAAe,EAAIrD,EAAUlY,SAAS,CACtGwM,cACCxb,MAEL,GAAMqqB,GAAkD,kBAAtBA,GAAkCvlB,MAAMmI,QAAQod,EAAkB1U,UAAW,CAC7G,MAAM,SACFA,EAAW,IACT0U,EAEN,IAAI/c,GADY,EAAI0a,EAA+BhZ,SAASqb,EAAmBH,GAwB/E,OAtBAvU,EAASnZ,SAAQguB,IACf,IAAIC,GAAU,EACe,oBAAlBD,EAAQxqB,MACjByqB,EAAUD,EAAQxqB,OAAM,EAAIknB,EAAUlY,SAAS,CAC7CwM,cACCxb,EAAOwb,IAEVrd,OAAOkkB,KAAKmI,EAAQxqB,OAAOxD,SAAQL,KACd,MAAdqf,OAAqB,EAASA,EAAWrf,MAAUquB,EAAQxqB,MAAM7D,IAAQ6D,EAAM7D,KAASquB,EAAQxqB,MAAM7D,KACzGsuB,GAAU,EACZ,IAGAA,IACG3lB,MAAMmI,QAAQK,KACjBA,EAAS,CAACA,IAEZA,EAAOzR,KAA8B,oBAAlB2uB,EAAQhD,MAAuBgD,EAAQhD,OAAM,EAAIN,EAAUlY,SAAS,CACrFwM,cACCxb,EAAOwb,IAAegP,EAAQhD,OACnC,IAEKla,CACT,CACA,OAAO+c,CACT,4GCjGO,MAAMxE,EAAS,CACpB6E,GAAI,EAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,KAEJC,GAAI,MAEAC,EAAqB,CAGzB1I,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,MAC/BzI,GAAIzd,GAAQ,qBAAoB0pB,EAAO1pB,SAElC,SAAS6uB,EAAkBhrB,EAAOirB,EAAWC,GAClD,MAAM5Q,EAAQta,EAAMsa,OAAS,CAAC,EAC9B,GAAIxV,MAAMmI,QAAQge,GAAY,CAC5B,MAAME,EAAmB7Q,EAAMb,aAAesR,EAC9C,OAAOE,EAAUnR,QAAO,CAACC,EAAKqR,EAAMvsB,KAClCkb,EAAIoR,EAAiBvR,GAAGuR,EAAiB9I,KAAKxjB,KAAWqsB,EAAmBD,EAAUpsB,IAC/Ekb,IACN,CAAC,EACN,CACA,GAAyB,kBAAdkR,EAAwB,CACjC,MAAME,EAAmB7Q,EAAMb,aAAesR,EAC9C,OAAO5sB,OAAOkkB,KAAK4I,GAAWnR,QAAO,CAACC,EAAKsR,KAEzC,IAA4E,IAAxEltB,OAAOkkB,KAAK8I,EAAiBtF,QAAUA,GAAQlnB,QAAQ0sB,GAAoB,CAE7EtR,EADiBoR,EAAiBvR,GAAGyR,IACrBH,EAAmBD,EAAUI,GAAaA,EAC5D,KAAO,CACL,MAAMC,EAASD,EACftR,EAAIuR,GAAUL,EAAUK,EAC1B,CACA,OAAOvR,CAAG,GACT,CAAC,EACN,CAEA,OADemR,EAAmBD,EAEpC,CA6BO,SAASM,IAAmD,IAAvBC,EAAgBhjB,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC9D,IAAIijB,EAMJ,OAL8E,OAAlDA,EAAwBD,EAAiBnJ,WAAgB,EAASoJ,EAAsB3R,QAAO,CAACC,EAAK5d,KAE/H4d,EAD2ByR,EAAiB5R,GAAGzd,IACrB,CAAC,EACpB4d,IACN,CAAC,KACyB,CAAC,CAChC,CACO,SAAS2R,EAAwBC,EAAgBnE,GACtD,OAAOmE,EAAe7R,QAAO,CAACC,EAAK5d,KACjC,MAAMyvB,EAAmB7R,EAAI5d,GAK7B,QAJ4ByvB,GAA6D,IAAzCztB,OAAOkkB,KAAKuJ,GAAkBtwB,gBAErEye,EAAI5d,GAEN4d,CAAG,GACTyN,EACL,CACO,SAASqE,EAAwBL,GACtC,MAAMM,EAAmBP,EAA4BC,GAAkB,QAAAjjB,EAAAC,UAAAlN,OADZ2K,EAAM,IAAAnB,MAAAyD,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAANzC,EAAMyC,EAAA,GAAAF,UAAAE,GAEjE,MAAMqjB,EAAe,CAACD,KAAqB7lB,GAAQ6T,QAAO,CAAC1Z,EAAMC,KAASgU,EAAAA,EAAAA,GAAUjU,EAAMC,IAAO,CAAC,GAClG,OAAOqrB,EAAwBvtB,OAAOkkB,KAAKyJ,GAAmBC,EAChE,CA2BO,SAASC,EAAuBxkB,GAIpC,IAHDqe,OAAQoG,EACRxS,YAAa0R,EACbe,KAAMC,GACP3kB,EACC,MAAM0kB,EAAOC,GA3BR,SAAgCF,EAAkBd,GAEvD,GAAgC,kBAArBc,EACT,MAAO,CAAC,EAEV,MAAMC,EAAO,CAAC,EACRE,EAAkBjuB,OAAOkkB,KAAK8I,GAcpC,OAbIrmB,MAAMmI,QAAQgf,GAChBG,EAAgB5vB,SAAQ,CAAC6uB,EAAYnuB,KAC/BA,EAAI+uB,EAAiB3wB,SACvB4wB,EAAKb,IAAc,EACrB,IAGFe,EAAgB5vB,SAAQ6uB,IACc,MAAhCY,EAAiBZ,KACnBa,EAAKb,IAAc,EACrB,IAGGa,CACT,CAM6BG,CAAuBJ,EAAkBd,GAC9D9I,EAAOlkB,OAAOkkB,KAAK6J,GACzB,GAAoB,IAAhB7J,EAAK/mB,OACP,OAAO2wB,EAET,IAAIxpB,EACJ,OAAO4f,EAAKvI,QAAO,CAACC,EAAKsR,EAAYnuB,KAC/B4H,MAAMmI,QAAQgf,IAChBlS,EAAIsR,GAAqC,MAAvBY,EAAiB/uB,GAAa+uB,EAAiB/uB,GAAK+uB,EAAiBxpB,GACvFA,EAAWvF,GAC0B,kBAArB+uB,GAChBlS,EAAIsR,GAA8C,MAAhCY,EAAiBZ,GAAsBY,EAAiBZ,GAAcY,EAAiBxpB,GACzGA,EAAW4oB,GAEXtR,EAAIsR,GAAcY,EAEblS,IACN,CAAC,EACN,+BC7Fe,SAASuS,EAAYnwB,EAAK8J,GAEvC,MAAMqU,EAAQrf,KACd,GAAIqf,EAAMjB,MAAgD,oBAAjCiB,EAAMiS,uBAAuC,CAIpE,MAAO,CACL,CAFejS,EAAMiS,uBAAuBpwB,GAAKmC,QAAQ,eAAgB,gBAE7D2H,EAEhB,CACA,OAAIqU,EAAMnI,QAAQC,OAASjW,EAClB8J,EAEF,CAAC,CACV,wFCvEA,MAAM+J,EAAY,CAAC,SAAU,OAAQ,QAI/Bwc,EAAwB3G,IAC5B,MAAM4G,EAAqBtuB,OAAOkkB,KAAKwD,GAAQthB,KAAIpI,IAAO,CACxDA,MACA+pB,IAAKL,EAAO1pB,QACP,GAGP,OADAswB,EAAmBC,MAAK,CAACC,EAAaC,IAAgBD,EAAYzG,IAAM0G,EAAY1G,MAC7EuG,EAAmB3S,QAAO,CAACC,EAAKhN,KAC9BgH,EAAAA,EAAAA,GAAS,CAAC,EAAGgG,EAAK,CACvB,CAAChN,EAAI5Q,KAAM4Q,EAAImZ,OAEhB,CAAC,EAAE,EAIO,SAAS2G,EAAkBpT,GACxC,MAAM,OAGFoM,EAAS,CACP6E,GAAI,EAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,KAEJC,GAAI,MACL,KACDgC,EAAO,KAAI,KACXC,EAAO,GACLtT,EACJnH,GAAQC,EAAAA,EAAAA,GAA8BkH,EAAazJ,GAC/Cgd,EAAeR,EAAsB3G,GACrCxD,EAAOlkB,OAAOkkB,KAAK2K,GACzB,SAASpT,EAAGzd,GAEV,MAAQ,qBAD6B,kBAAhB0pB,EAAO1pB,GAAoB0pB,EAAO1pB,GAAOA,IAC1B2wB,IACtC,CACA,SAASG,EAAK9wB,GAEZ,MAAQ,sBAD6B,kBAAhB0pB,EAAO1pB,GAAoB0pB,EAAO1pB,GAAOA,GAC1B4wB,EAAO,MAAMD,IACnD,CACA,SAASI,EAAQjL,EAAOhjB,GACtB,MAAMkuB,EAAW9K,EAAK1jB,QAAQM,GAC9B,MAAQ,qBAA6C,kBAAlB4mB,EAAO5D,GAAsB4D,EAAO5D,GAASA,IAAQ6K,uBAA4C,IAAdK,GAAqD,kBAA3BtH,EAAOxD,EAAK8K,IAA0BtH,EAAOxD,EAAK8K,IAAaluB,GAAO8tB,EAAO,MAAMD,IACrO,CAkBA,OAAO/Y,EAAAA,EAAAA,GAAS,CACdsO,OACAwD,OAAQmH,EACRpT,KACAqT,OACAC,UACAE,KAvBF,SAAcjxB,GACZ,OAAIkmB,EAAK1jB,QAAQxC,GAAO,EAAIkmB,EAAK/mB,OACxB4xB,EAAQ/wB,EAAKkmB,EAAKA,EAAK1jB,QAAQxC,GAAO,IAExCyd,EAAGzd,EACZ,EAmBEkxB,IAlBF,SAAalxB,GAEX,MAAMmxB,EAAWjL,EAAK1jB,QAAQxC,GAC9B,OAAiB,IAAbmxB,EACK1T,EAAGyI,EAAK,IAEbiL,IAAajL,EAAK/mB,OAAS,EACtB2xB,EAAK5K,EAAKiL,IAEZJ,EAAQ/wB,EAAKkmB,EAAKA,EAAK1jB,QAAQxC,GAAO,IAAImC,QAAQ,SAAU,qBACrE,EASEwuB,QACCxa,EACL,4FCjFA,MAGA,EAHc,CACZib,aAAc,mDCChB,MAAMvd,EAAY,CAAC,cAAe,UAAW,UAAW,SAwCxD,QAhCA,WAA4C,IAAvBjV,EAAOyN,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC9B,MACIiR,YAAa+R,EAAmB,CAAC,EACjCrZ,QAAS8G,EAAe,CAAC,EACzBuU,QAASC,EACTC,MAAOC,EAAa,CAAC,GACnB5yB,EACJuX,GAAQC,EAAAA,EAAAA,GAA8BxX,EAASiV,GAC3CyJ,GAAcoT,EAAAA,EAAAA,GAAkBrB,GAChCgC,ECdO,WAAyC,IAAlBC,EAAYjlB,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG,EAEnD,GAAIilB,EAAaG,IACf,OAAOH,EAMT,MAAMI,GAAYC,EAAAA,EAAAA,IAAmB,CACnCN,QAASC,IAELD,EAAU,WAAkB,QAAAjlB,EAAAC,UAAAlN,OAAdyyB,EAAS,IAAAjpB,MAAAyD,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAATqlB,EAASrlB,GAAAF,UAAAE,GAO3B,OADkC,IAArBqlB,EAAUzyB,OAAe,CAAC,GAAKyyB,GAChCxpB,KAAIyV,IACd,MAAMrY,EAASksB,EAAU7T,GACzB,MAAyB,kBAAXrY,EAAuB,GAAEA,MAAaA,CAAM,IACzDG,KAAK,IACV,EAEA,OADA0rB,EAAQI,KAAM,EACPJ,CACT,CDZkBQ,CAAcP,GAC9B,IAAIjU,GAAWnF,EAAAA,EAAAA,GAAU,CACvBoF,cACAhI,UAAW,MACXqX,WAAY,CAAC,EAEb3W,SAAS4B,EAAAA,EAAAA,GAAS,CAChB3B,KAAM,SACL6G,GACHuU,UACAE,OAAO3Z,EAAAA,EAAAA,GAAS,CAAC,EAAG2Z,EAAOC,IAC1Brb,GACHkH,EAAS8S,YAAcA,EAAAA,EAAY,QAAA/jB,EAAAC,UAAAlN,OArBCmN,EAAI,IAAA3D,MAAAyD,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJD,EAAIC,EAAA,GAAAF,UAAAE,GA8BxC,OARA8Q,EAAW/Q,EAAKqR,QAAO,CAACC,EAAKC,KAAa3F,EAAAA,EAAAA,GAAU0F,EAAKC,IAAWR,GACpEA,EAASS,mBAAoBlG,EAAAA,EAAAA,GAAS,CAAC,EAAGmG,EAAAA,EAA0B,MAAT5H,OAAgB,EAASA,EAAM2H,mBAC1FT,EAASW,YAAc,SAAYna,GACjC,OAAOoa,EAAAA,EAAAA,GAAgB,CACrBC,GAAIra,EACJsa,MAAOrf,MAEX,EACOue,CACT,4NEhCA,QARA,SAAeO,EAAKqR,GAClB,OAAKA,GAGE/W,EAAAA,EAAAA,GAAU0F,EAAKqR,EAAM,CAC1B1U,OAAO,IAHAqD,CAKX,uHCHA,MAAMkU,EAAa,CACjBC,EAAG,SACHC,EAAG,WAECC,EAAa,CACjB1E,EAAG,MACHra,EAAG,QACHgf,EAAG,SACH9H,EAAG,OACHljB,EAAG,CAAC,OAAQ,SACZC,EAAG,CAAC,MAAO,WAEPgrB,EAAU,CACdC,QAAS,KACTC,QAAS,KACTC,SAAU,KACVC,SAAU,MAMNC,EC3BS,SAAiBroB,GAC9B,MAAMJ,EAAQ,CAAC,EACf,OAAOM,SACczK,IAAfmK,EAAMM,KACRN,EAAMM,GAAOF,EAAGE,IAEXN,EAAMM,GAEjB,CDmByBH,EAAQmU,IAE/B,GAAIA,EAAKlf,OAAS,EAAG,CACnB,IAAIgzB,EAAQ9T,GAGV,MAAO,CAACA,GAFRA,EAAO8T,EAAQ9T,EAInB,CACA,MAAOgM,EAAG6H,GAAK7T,EAAKjV,MAAM,IACpB/C,EAAWyrB,EAAWzH,GACtB/U,EAAY2c,EAAWC,IAAM,GACnC,OAAOvpB,MAAMmI,QAAQwE,GAAaA,EAAUlN,KAAIqqB,GAAOpsB,EAAWosB,IAAO,CAACpsB,EAAWiP,EAAU,IAEpFod,EAAa,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAAU,YAAa,cAAe,eAAgB,aAAc,UAAW,UAAW,eAAgB,oBAAqB,kBAAmB,cAAe,mBAAoB,kBAC5OC,EAAc,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,UAAW,aAAc,eAAgB,gBAAiB,cAAe,WAAY,WAAY,gBAAiB,qBAAsB,mBAAoB,eAAgB,oBAAqB,mBAChQC,EAAc,IAAIF,KAAeC,GAChC,SAASE,EAAgB1U,EAAO2U,EAAUC,EAAcxQ,GAC7D,IAAIyQ,EACJ,MAAMC,EAA+D,OAA/CD,GAAWE,EAAAA,EAAAA,IAAQ/U,EAAO2U,GAAU,IAAkBE,EAAWD,EACvF,MAA4B,kBAAjBE,EACFvxB,GACc,kBAARA,EACFA,EAOFuxB,EAAevxB,EAGtBiH,MAAMmI,QAAQmiB,GACTvxB,GACc,kBAARA,EACFA,EASFuxB,EAAavxB,GAGI,oBAAjBuxB,EACFA,EAKF,KAAe,CACxB,CACO,SAAStB,EAAmBxT,GACjC,OAAO0U,EAAgB1U,EAAO,UAAW,EAC3C,CACO,SAASgV,EAASC,EAAatE,GACpC,GAAyB,kBAAdA,GAAuC,MAAbA,EACnC,OAAOA,EAET,MACMuE,EAAcD,EADRzxB,KAAKD,IAAIotB,IAErB,OAAIA,GAAa,EACRuE,EAEkB,kBAAhBA,GACDA,EAEF,IAAGA,GACb,CAOA,SAASC,EAAmBzvB,EAAOqiB,EAAM7H,EAAM+U,GAG7C,IAA4B,IAAxBlN,EAAK1jB,QAAQ6b,GACf,OAAO,KAET,MACM0Q,EAbD,SAA+BwE,EAAeH,GACnD,OAAOtE,GAAayE,EAAc5V,QAAO,CAACC,EAAK4V,KAC7C5V,EAAI4V,GAAeL,EAASC,EAAatE,GAClClR,IACN,CAAC,EACN,CAQ6B6V,CADLjB,EAAiBnU,GACyB+U,GAC1DtE,EAAYjrB,EAAMwa,GACxB,OAAOwQ,EAAAA,EAAAA,IAAkBhrB,EAAOirB,EAAWC,EAC7C,CACA,SAAS1D,EAAMxnB,EAAOqiB,GACpB,MAAMkN,EAAczB,EAAmB9tB,EAAMsa,OAC7C,OAAOnc,OAAOkkB,KAAKriB,GAAOuE,KAAIiW,GAAQiV,EAAmBzvB,EAAOqiB,EAAM7H,EAAM+U,KAAczV,OAAO+V,EAAAA,EAAO,CAAC,EAC3G,CACO,SAASC,EAAO9vB,GACrB,OAAOwnB,EAAMxnB,EAAO6uB,EACtB,CAMO,SAASkB,EAAQ/vB,GACtB,OAAOwnB,EAAMxnB,EAAO8uB,EACtB,CAMA,SAAStB,EAAQxtB,GACf,OAAOwnB,EAAMxnB,EAAO+uB,EACtB,CAfAe,EAAOE,UAGE,CAAC,EACVF,EAAOG,YAAcpB,EAIrBkB,EAAQC,UAGC,CAAC,EACVD,EAAQE,YAAcnB,EAItBtB,EAAQwC,UAGC,CAAC,EACVxC,EAAQyC,YAAclB,0FE7If,SAASM,EAAQtiB,EAAKqR,GAAwB,IAAlB8R,IAAS1nB,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,KAAAA,UAAA,GAC1C,IAAK4V,GAAwB,kBAATA,EAClB,OAAO,KAIT,GAAIrR,GAAOA,EAAIsM,MAAQ6W,EAAW,CAChC,MAAMhK,EAAO,QAAO9H,IAAO7Y,MAAM,KAAKuU,QAAO,CAACC,EAAKqR,IAASrR,GAAOA,EAAIqR,GAAQrR,EAAIqR,GAAQ,MAAMre,GACjG,GAAW,MAAPmZ,EACF,OAAOA,CAEX,CACA,OAAO9H,EAAK7Y,MAAM,KAAKuU,QAAO,CAACC,EAAKqR,IAC9BrR,GAAoB,MAAbA,EAAIqR,GACNrR,EAAIqR,GAEN,MACNre,EACL,CACO,SAASojB,EAAcC,EAAcvC,EAAWwC,GAA4C,IAC7FhyB,EADiEiyB,EAAS9nB,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG6nB,EAYjF,OATEhyB,EAD0B,oBAAjB+xB,EACDA,EAAaC,GACZvrB,MAAMmI,QAAQmjB,GACfA,EAAaC,IAAmBC,EAEhCjB,EAAQe,EAAcC,IAAmBC,EAE/CzC,IACFxvB,EAAQwvB,EAAUxvB,EAAOiyB,EAAWF,IAE/B/xB,CACT,CAuCA,QAtCA,SAAetD,GACb,MAAM,KACJyf,EAAI,YACJmV,EAAc50B,EAAQyf,KAAI,SAC1ByU,EAAQ,UACRpB,GACE9yB,EAIEuL,EAAKtG,IACT,GAAmB,MAAfA,EAAMwa,GACR,OAAO,KAET,MAAMyQ,EAAYjrB,EAAMwa,GAElB4V,EAAef,EADPrvB,EAAMsa,MACgB2U,IAAa,CAAC,EAclD,OAAOjE,EAAAA,EAAAA,IAAkBhrB,EAAOirB,GAbLoF,IACzB,IAAIhyB,EAAQ8xB,EAAcC,EAAcvC,EAAWwC,GAKnD,OAJIA,IAAmBhyB,GAAmC,kBAAnBgyB,IAErChyB,EAAQ8xB,EAAcC,EAAcvC,EAAY,GAAErT,IAA0B,YAAnB6V,EAA+B,IAAK5U,EAAAA,EAAAA,GAAW4U,KAAmBA,KAEzG,IAAhBV,EACKtxB,EAEF,CACL,CAACsxB,GAActxB,EAChB,GAE2D,EAMhE,OAJAiI,EAAG0pB,UAEC,CAAC,EACL1pB,EAAG2pB,YAAc,CAACzV,GACXlU,CACT,kFClDA,QAtBA,WAA4B,QAAAiC,EAAAC,UAAAlN,OAAR2K,EAAM,IAAAnB,MAAAyD,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAANzC,EAAMyC,GAAAF,UAAAE,GACxB,MAAM6nB,EAAWtqB,EAAO6T,QAAO,CAACC,EAAKyN,KACnCA,EAAMyI,YAAYzzB,SAAQge,IACxBT,EAAIS,GAAQgN,CAAK,IAEZzN,IACN,CAAC,GAIEzT,EAAKtG,GACF7B,OAAOkkB,KAAKriB,GAAO8Z,QAAO,CAACC,EAAKS,IACjC+V,EAAS/V,IACJqV,EAAAA,EAAAA,GAAM9V,EAAKwW,EAAS/V,GAAMxa,IAE5B+Z,GACN,CAAC,GAIN,OAFAzT,EAAG0pB,UAA6H,CAAC,EACjI1pB,EAAG2pB,YAAchqB,EAAO6T,QAAO,CAACC,EAAKyN,IAAUzN,EAAIlU,OAAO2hB,EAAMyI,cAAc,IACvE3pB,CACT,gBCjBO,SAASkqB,EAAgBnyB,GAC9B,MAAqB,kBAAVA,EACFA,EAED,GAAEA,WACZ,CACA,SAASoyB,EAAkBjW,EAAMqT,GAC/B,OAAOrG,EAAAA,EAAAA,IAAM,CACXhN,OACAyU,SAAU,UACVpB,aAEJ,CACO,MAAM6C,EAASD,EAAkB,SAAUD,GACrCG,EAAYF,EAAkB,YAAaD,GAC3CI,EAAcH,EAAkB,cAAeD,GAC/CK,EAAeJ,EAAkB,eAAgBD,GACjDM,EAAaL,EAAkB,aAAcD,GAC7CO,EAAcN,EAAkB,eAChCO,EAAiBP,EAAkB,kBACnCQ,EAAmBR,EAAkB,oBACrCS,EAAoBT,EAAkB,qBACtCU,EAAkBV,EAAkB,mBACpCW,EAAUX,EAAkB,UAAWD,GACvCa,EAAeZ,EAAkB,gBAIjClD,EAAevtB,IAC1B,QAA2BjE,IAAvBiE,EAAMutB,cAAqD,OAAvBvtB,EAAMutB,aAAuB,CACnE,MAAMgC,GAAcP,EAAAA,EAAAA,IAAgBhvB,EAAMsa,MAAO,qBAAsB,EAAG,gBACpE4Q,EAAqBD,IAAa,CACtCsC,cAAc+B,EAAAA,EAAAA,IAASC,EAAatE,KAEtC,OAAOD,EAAAA,EAAAA,IAAkBhrB,EAAOA,EAAMutB,aAAcrC,EACtD,CACA,OAAO,IAAI,EAEbqC,EAAayC,UAET,CAAC,EACLzC,EAAa0C,YAAc,CAAC,gBACZqB,EAAQZ,EAAQC,EAAWC,EAAaC,EAAcC,EAAYC,EAAaC,EAAgBC,EAAkBC,EAAmBC,EAAiB5D,EAAc6D,EAASC,GAA5L,MCvCaE,EAAMvxB,IACjB,QAAkBjE,IAAdiE,EAAMuxB,KAAmC,OAAdvxB,EAAMuxB,IAAc,CACjD,MAAMhC,GAAcP,EAAAA,EAAAA,IAAgBhvB,EAAMsa,MAAO,UAAW,EAAG,OACzD4Q,EAAqBD,IAAa,CACtCsG,KAAKjC,EAAAA,EAAAA,IAASC,EAAatE,KAE7B,OAAOD,EAAAA,EAAAA,IAAkBhrB,EAAOA,EAAMuxB,IAAKrG,EAC7C,CACA,OAAO,IAAI,EAEbqG,EAAIvB,UAEA,CAAC,EACLuB,EAAItB,YAAc,CAAC,OAIZ,MAAMuB,EAAYxxB,IACvB,QAAwBjE,IAApBiE,EAAMwxB,WAA+C,OAApBxxB,EAAMwxB,UAAoB,CAC7D,MAAMjC,GAAcP,EAAAA,EAAAA,IAAgBhvB,EAAMsa,MAAO,UAAW,EAAG,aACzD4Q,EAAqBD,IAAa,CACtCuG,WAAWlC,EAAAA,EAAAA,IAASC,EAAatE,KAEnC,OAAOD,EAAAA,EAAAA,IAAkBhrB,EAAOA,EAAMwxB,UAAWtG,EACnD,CACA,OAAO,IAAI,EAEbsG,EAAUxB,UAEN,CAAC,EACLwB,EAAUvB,YAAc,CAAC,aAIlB,MAAMwB,EAASzxB,IACpB,QAAqBjE,IAAjBiE,EAAMyxB,QAAyC,OAAjBzxB,EAAMyxB,OAAiB,CACvD,MAAMlC,GAAcP,EAAAA,EAAAA,IAAgBhvB,EAAMsa,MAAO,UAAW,EAAG,UACzD4Q,EAAqBD,IAAa,CACtCwG,QAAQnC,EAAAA,EAAAA,IAASC,EAAatE,KAEhC,OAAOD,EAAAA,EAAAA,IAAkBhrB,EAAOA,EAAMyxB,OAAQvG,EAChD,CACA,OAAO,IAAI,EAEbuG,EAAOzB,UAEH,CAAC,EACLyB,EAAOxB,YAAc,CAAC,UA4BTqB,EAAQC,EAAKC,EAAWC,GA3BXjK,EAAAA,EAAAA,IAAM,CAC9BhN,KAAM,gBAEegN,EAAAA,EAAAA,IAAM,CAC3BhN,KAAM,aAEoBgN,EAAAA,EAAAA,IAAM,CAChChN,KAAM,kBAEuBgN,EAAAA,EAAAA,IAAM,CACnChN,KAAM,qBAEoBgN,EAAAA,EAAAA,IAAM,CAChChN,KAAM,kBAE2BgN,EAAAA,EAAAA,IAAM,CACvChN,KAAM,yBAEwBgN,EAAAA,EAAAA,IAAM,CACpChN,KAAM,sBAEyBgN,EAAAA,EAAAA,IAAM,CACrChN,KAAM,uBAEgBgN,EAAAA,EAAAA,IAAM,CAC5BhN,KAAM,cC/ED,SAASkX,EAAiBrzB,EAAOiyB,GACtC,MAAkB,SAAdA,EACKA,EAEFjyB,CACT,CAiBgBizB,GAhBK9J,EAAAA,EAAAA,IAAM,CACzBhN,KAAM,QACNyU,SAAU,UACVpB,UAAW6D,KAEUlK,EAAAA,EAAAA,IAAM,CAC3BhN,KAAM,UACNmV,YAAa,kBACbV,SAAU,UACVpB,UAAW6D,KAEkBlK,EAAAA,EAAAA,IAAM,CACnChN,KAAM,kBACNyU,SAAU,UACVpB,UAAW6D,KCnBN,SAASC,EAAgBtzB,GAC9B,OAAOA,GAAS,GAAe,IAAVA,EAAyB,IAARA,EAAF,IAAmBA,CACzD,CACO,MAAMme,GAAQgL,EAAAA,EAAAA,IAAM,CACzBhN,KAAM,QACNqT,UAAW8D,IAEAC,EAAW5xB,IACtB,QAAuBjE,IAAnBiE,EAAM4xB,UAA6C,OAAnB5xB,EAAM4xB,SAAmB,CAC3D,MAAM1G,EAAqBD,IACzB,IAAI4G,EAAcC,EAClB,MAAMzG,GAA8C,OAA/BwG,EAAe7xB,EAAMsa,QAA+D,OAA5CuX,EAAeA,EAAapY,cAAgE,OAAvCoY,EAAeA,EAAahM,aAAkB,EAASgM,EAAa5G,KAAe8G,EAAAA,GAAkB9G,GACvN,OAAKI,EAKgI,QAA/F,OAAhCyG,EAAgB9xB,EAAMsa,QAAiE,OAA9CwX,EAAgBA,EAAcrY,kBAAuB,EAASqY,EAAchF,MAClH,CACL8E,SAAW,GAAEvG,IAAarrB,EAAMsa,MAAMb,YAAYqT,QAG/C,CACL8E,SAAUvG,GAVH,CACLuG,SAAUD,EAAgB1G,GAU7B,EAEH,OAAOD,EAAAA,EAAAA,IAAkBhrB,EAAOA,EAAM4xB,SAAU1G,EAClD,CACA,OAAO,IAAI,EAEb0G,EAAS3B,YAAc,CAAC,YACjB,MAAM+B,GAAWxK,EAAAA,EAAAA,IAAM,CAC5BhN,KAAM,WACNqT,UAAW8D,IAEA/Z,GAAS4P,EAAAA,EAAAA,IAAM,CAC1BhN,KAAM,SACNqT,UAAW8D,IAEAM,GAAYzK,EAAAA,EAAAA,IAAM,CAC7BhN,KAAM,YACNqT,UAAW8D,IAEAhY,GAAY6N,EAAAA,EAAAA,IAAM,CAC7BhN,KAAM,YACNqT,UAAW8D,ICkPb,IDhPyBnK,EAAAA,EAAAA,IAAM,CAC7BhN,KAAM,OACNmV,YAAa,QACb9B,UAAW8D,KAEanK,EAAAA,EAAAA,IAAM,CAC9BhN,KAAM,OACNmV,YAAa,SACb9B,UAAW8D,IAKEL,EAAQ9U,EAAOoV,EAAUI,EAAUpa,EAAQqa,EAAWtY,GAH5C6N,EAAAA,EAAAA,IAAM,CAC7BhN,KAAM,eCxDgB,CAEtBkW,OAAQ,CACNzB,SAAU,UACVpB,UAAW2C,GAEbG,UAAW,CACT1B,SAAU,UACVpB,UAAW2C,GAEbI,YAAa,CACX3B,SAAU,UACVpB,UAAW2C,GAEbK,aAAc,CACZ5B,SAAU,UACVpB,UAAW2C,GAEbM,WAAY,CACV7B,SAAU,UACVpB,UAAW2C,GAEbO,YAAa,CACX9B,SAAU,WAEZ+B,eAAgB,CACd/B,SAAU,WAEZgC,iBAAkB,CAChBhC,SAAU,WAEZiC,kBAAmB,CACjBjC,SAAU,WAEZkC,gBAAiB,CACflC,SAAU,WAEZmC,QAAS,CACPnC,SAAU,UACVpB,UAAW2C,GAEba,aAAc,CACZpC,SAAU,WAEZ1B,aAAc,CACZ0B,SAAU,qBACVzH,MAAO+F,GAGT5Z,MAAO,CACLsb,SAAU,UACVpB,UAAW6D,GAEbQ,QAAS,CACPjD,SAAU,UACVU,YAAa,kBACb9B,UAAW6D,GAEbS,gBAAiB,CACflD,SAAU,UACVpB,UAAW6D,GAGbvD,EAAG,CACD3G,MAAOuI,EAAAA,IAETqC,GAAI,CACF5K,MAAOuI,EAAAA,IAETsC,GAAI,CACF7K,MAAOuI,EAAAA,IAETuC,GAAI,CACF9K,MAAOuI,EAAAA,IAETwC,GAAI,CACF/K,MAAOuI,EAAAA,IAETyC,GAAI,CACFhL,MAAOuI,EAAAA,IAET0C,GAAI,CACFjL,MAAOuI,EAAAA,IAETA,QAAS,CACPvI,MAAOuI,EAAAA,IAET2C,WAAY,CACVlL,MAAOuI,EAAAA,IAET4C,aAAc,CACZnL,MAAOuI,EAAAA,IAET6C,cAAe,CACbpL,MAAOuI,EAAAA,IAET8C,YAAa,CACXrL,MAAOuI,EAAAA,IAETtB,SAAU,CACRjH,MAAOuI,EAAAA,IAETrB,SAAU,CACRlH,MAAOuI,EAAAA,IAET+C,cAAe,CACbtL,MAAOuI,EAAAA,IAETgD,mBAAoB,CAClBvL,MAAOuI,EAAAA,IAETiD,iBAAkB,CAChBxL,MAAOuI,EAAAA,IAETkD,aAAc,CACZzL,MAAOuI,EAAAA,IAETmD,kBAAmB,CACjB1L,MAAOuI,EAAAA,IAEToD,gBAAiB,CACf3L,MAAOuI,EAAAA,IAET7B,EAAG,CACD1G,MAAOsI,EAAAA,IAETsD,GAAI,CACF5L,MAAOsI,EAAAA,IAETuD,GAAI,CACF7L,MAAOsI,EAAAA,IAETwD,GAAI,CACF9L,MAAOsI,EAAAA,IAETyD,GAAI,CACF/L,MAAOsI,EAAAA,IAET0D,GAAI,CACFhM,MAAOsI,EAAAA,IAET2D,GAAI,CACFjM,MAAOsI,EAAAA,IAETA,OAAQ,CACNtI,MAAOsI,EAAAA,IAET4D,UAAW,CACTlM,MAAOsI,EAAAA,IAET6D,YAAa,CACXnM,MAAOsI,EAAAA,IAET8D,aAAc,CACZpM,MAAOsI,EAAAA,IAET+D,WAAY,CACVrM,MAAOsI,EAAAA,IAETvB,QAAS,CACP/G,MAAOsI,EAAAA,IAETtB,QAAS,CACPhH,MAAOsI,EAAAA,IAETgE,aAAc,CACZtM,MAAOsI,EAAAA,IAETiE,kBAAmB,CACjBvM,MAAOsI,EAAAA,IAETkE,gBAAiB,CACfxM,MAAOsI,EAAAA,IAETmE,YAAa,CACXzM,MAAOsI,EAAAA,IAEToE,iBAAkB,CAChB1M,MAAOsI,EAAAA,IAETqE,eAAgB,CACd3M,MAAOsI,EAAAA,IAGTsE,aAAc,CACZzE,aAAa,EACb9B,UAAWxvB,IAAS,CAClB,eAAgB,CACdoe,QAASpe,MAIfoe,QAAS,CAAC,EACV4X,SAAU,CAAC,EACXC,aAAc,CAAC,EACfC,WAAY,CAAC,EACbC,WAAY,CAAC,EAEbC,UAAW,CAAC,EACZC,cAAe,CAAC,EAChBC,SAAU,CAAC,EACXC,eAAgB,CAAC,EACjBC,WAAY,CAAC,EACbC,aAAc,CAAC,EACf9pB,MAAO,CAAC,EACRrB,KAAM,CAAC,EACPC,SAAU,CAAC,EACXE,WAAY,CAAC,EACbirB,UAAW,CAAC,EACZC,aAAc,CAAC,EACfC,YAAa,CAAC,EAEd1D,IAAK,CACH/J,MAAO+J,GAETE,OAAQ,CACNjK,MAAOiK,GAETD,UAAW,CACThK,MAAOgK,GAETnnB,WAAY,CAAC,EACbJ,QAAS,CAAC,EACVirB,aAAc,CAAC,EACfC,gBAAiB,CAAC,EAClBC,aAAc,CAAC,EACfC,oBAAqB,CAAC,EACtBC,iBAAkB,CAAC,EACnBC,kBAAmB,CAAC,EACpBC,SAAU,CAAC,EAEX/1B,SAAU,CAAC,EACX2L,OAAQ,CACN6jB,SAAU,UAEZwG,IAAK,CAAC,EACNC,MAAO,CAAC,EACRC,OAAQ,CAAC,EACTC,KAAM,CAAC,EAEPC,UAAW,CACT5G,SAAU,WAGZzS,MAAO,CACLqR,UAAW8D,GAEbC,SAAU,CACRpK,MAAOoK,GAETI,SAAU,CACRnE,UAAW8D,GAEb/Z,OAAQ,CACNiW,UAAW8D,GAEbM,UAAW,CACTpE,UAAW8D,GAEbhY,UAAW,CACTkU,UAAW8D,GAEbmE,UAAW,CAAC,EAEZlhB,WAAY,CACVqa,SAAU,cAEZpa,SAAU,CACRoa,SAAU,cAEZ8G,UAAW,CACT9G,SAAU,cAEZpkB,WAAY,CACVokB,SAAU,cAEZzZ,cAAe,CAAC,EAChBhB,cAAe,CAAC,EAChB1J,WAAY,CAAC,EACbkrB,UAAW,CAAC,EACZrhB,WAAY,CACVgb,aAAa,EACbV,SAAU,0GC7Rd,MAAMjf,EAAY,CAAC,MAGbimB,EAAaj2B,IACjB,IAAIk2B,EAAuBrE,EAC3B,MAAMvkB,EAAS,CACb6oB,YAAa,CAAC,EACdC,WAAY,CAAC,GAETC,EAAsI,OAA5HH,EAAiC,MAATl2B,GAAiD,OAA/B6xB,EAAe7xB,EAAMsa,YAAiB,EAASuX,EAAa5X,mBAA6Bic,EAAwBhc,EAAAA,EAQ3K,OAPA/b,OAAOkkB,KAAKriB,GAAOxD,SAAQge,IACrB6b,EAAO7b,GACTlN,EAAO6oB,YAAY3b,GAAQxa,EAAMwa,GAEjClN,EAAO8oB,WAAW5b,GAAQxa,EAAMwa,EAClC,IAEKlN,CAAM,EAEA,SAASgpB,EAAat2B,GACnC,MACIqa,GAAIkc,GACFv2B,EACJsS,GAAQC,EAAAA,EAAAA,GAA8BvS,EAAOgQ,IACzC,YACJmmB,EAAW,WACXC,GACEH,EAAW3jB,GACf,IAAIkkB,EAcJ,OAZEA,EADE1xB,MAAMmI,QAAQspB,GACN,CAACJ,KAAgBI,GACF,oBAATA,EACN,WACR,MAAMjpB,EAASipB,KAAK/tB,WACpB,OAAK+f,EAAAA,EAAAA,GAAcjb,IAGZyG,EAAAA,EAAAA,GAAS,CAAC,EAAGoiB,EAAa7oB,GAFxB6oB,CAGX,GAEUpiB,EAAAA,EAAAA,GAAS,CAAC,EAAGoiB,EAAaI,IAE/BxiB,EAAAA,EAAAA,GAAS,CAAC,EAAGqiB,EAAY,CAC9B/b,GAAImc,GAER,ySChCO,SAASC,IACd,SAASC,EAAclc,EAAM0L,EAAK5L,EAAO+b,GACvC,MAAMr2B,EAAQ,CACZ,CAACwa,GAAO0L,EACR5L,SAEIvf,EAAUs7B,EAAO7b,GACvB,IAAKzf,EACH,MAAO,CACL,CAACyf,GAAO0L,GAGZ,MAAM,YACJyJ,EAAcnV,EAAI,SAClByU,EAAQ,UACRpB,EAAS,MACTrG,GACEzsB,EACJ,GAAW,MAAPmrB,EACF,OAAO,KAIT,GAAiB,eAAb+I,GAAqC,YAAR/I,EAC/B,MAAO,CACL,CAAC1L,GAAO0L,GAGZ,MAAMkK,GAAef,EAAAA,EAAAA,IAAQ/U,EAAO2U,IAAa,CAAC,EAClD,GAAIzH,EACF,OAAOA,EAAMxnB,GAef,OAAOgrB,EAAAA,EAAAA,IAAkBhrB,EAAOkmB,GAbLmK,IACzB,IAAIhyB,GAAQixB,EAAAA,EAAAA,IAASc,EAAcvC,EAAWwC,GAK9C,OAJIA,IAAmBhyB,GAAmC,kBAAnBgyB,IAErChyB,GAAQixB,EAAAA,EAAAA,IAASc,EAAcvC,EAAY,GAAErT,IAA0B,YAAnB6V,EAA+B,IAAK5U,EAAAA,EAAAA,GAAW4U,KAAmBA,KAEpG,IAAhBV,EACKtxB,EAEF,CACL,CAACsxB,GAActxB,EAChB,GAGL,CA6DA,OA5DA,SAAS+b,EAAgBpa,GACvB,IAAI22B,EACJ,MAAM,GACJtc,EAAE,MACFC,EAAQ,CAAC,GACPta,GAAS,CAAC,EACd,IAAKqa,EACH,OAAO,KAET,MAAMgc,EAA8D,OAApDM,EAAwBrc,EAAML,mBAA6B0c,EAAwBzc,EAAAA,EAOnG,SAAS0c,EAASC,GAChB,IAAIC,EAAWD,EACf,GAAuB,oBAAZA,EACTC,EAAWD,EAAQvc,QACd,GAAuB,kBAAZuc,EAEhB,OAAOA,EAET,IAAKC,EACH,OAAO,KAET,MAAMhL,GAAmBP,EAAAA,EAAAA,IAA4BjR,EAAMb,aACrD2S,EAAkBjuB,OAAOkkB,KAAKyJ,GACpC,IAAIxjB,EAAMwjB,EA2BV,OA1BA3tB,OAAOkkB,KAAKyU,GAAUt6B,SAAQu6B,IAC5B,MAAM14B,GAnFI24B,EAmFaF,EAASC,GAnFbvwB,EAmFwB8T,EAlFvB,oBAAZ0c,EAAyBA,EAAQxwB,GAAOwwB,GADxD,IAAkBA,EAASxwB,EAoFnB,GAAc,OAAVnI,QAA4BtC,IAAVsC,EACpB,GAAqB,kBAAVA,EACT,GAAIg4B,EAAOU,GACTzuB,GAAMunB,EAAAA,EAAAA,GAAMvnB,EAAKouB,EAAcK,EAAU14B,EAAOic,EAAO+b,QAClD,CACL,MAAMtE,GAAoB/G,EAAAA,EAAAA,IAAkB,CAC1C1Q,SACCjc,GAAOgF,IAAK,CACb,CAAC0zB,GAAW1zB,OAjG5B,WAAyC,QAAAkF,EAAAC,UAAAlN,OAAT27B,EAAO,IAAAnyB,MAAAyD,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAPuuB,EAAOvuB,GAAAF,UAAAE,GACrC,MAAMwuB,EAAUD,EAAQnd,QAAO,CAACuI,EAAM8U,IAAW9U,EAAKxc,OAAO1H,OAAOkkB,KAAK8U,KAAU,IAC7EC,EAAQ,IAAIC,IAAIH,GACtB,OAAOD,EAAQK,OAAMH,GAAUC,EAAMl0B,OAAS/E,OAAOkkB,KAAK8U,GAAQ77B,QACpE,CA+FkBi8B,CAAoBxF,EAAmB1zB,GAMzCiK,GAAMunB,EAAAA,EAAAA,GAAMvnB,EAAKypB,GALjBzpB,EAAIyuB,GAAY3c,EAAgB,CAC9BC,GAAIhc,EACJic,SAKN,MAEAhS,GAAMunB,EAAAA,EAAAA,GAAMvnB,EAAKouB,EAAcK,EAAU14B,EAAOic,EAAO+b,GAE3D,KAEK3K,EAAAA,EAAAA,IAAwBU,EAAiB9jB,EAClD,CACA,OAAOxD,MAAMmI,QAAQoN,GAAMA,EAAG9V,IAAIqyB,GAAYA,EAASvc,EACzD,CAEF,CACA,MAAMD,EAAkBqc,IACxBrc,EAAgB6V,YAAc,CAAC,MAC/B,gFC1HO,MAAMlJ,GAAqBjO,EAAAA,EAAAA,KAIlC,QAHA,WAAqD,IAAnCgC,EAAYtS,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAGue,EAC/B,OAAOyQ,EAAAA,EAAAA,GAAuB1c,EAChC,4ECHe,SAASC,EAAavT,GAKlC,IALmC,MACpCxH,EAAK,KACLmG,EAAI,aACJ2U,EAAY,QACZF,GACDpT,EACK8S,GAAQmd,EAAAA,EAAAA,GAAS3c,GACjBF,IACFN,EAAQA,EAAMM,IAAYN,GAE5B,MAAM1N,ECbO,SAAuB8qB,GACpC,MAAM,MACJpd,EAAK,KACLnU,EAAI,MACJnG,GACE03B,EACJ,OAAKpd,GAAUA,EAAMwO,YAAexO,EAAMwO,WAAW3iB,IAAUmU,EAAMwO,WAAW3iB,GAAM2d,cAG/E6T,EAAAA,EAAAA,GAAard,EAAMwO,WAAW3iB,GAAM2d,aAAc9jB,GAFhDA,CAGX,CDGsB43B,CAAc,CAChCtd,QACAnU,OACAnG,UAEF,OAAO4M,CACT,wEETA,QAJA,WAAuC,IAArBkO,EAAYtS,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG,KAC/B,MAAMqvB,EAAelxB,EAAAA,WAAiBS,EAAAA,GACtC,OAAQywB,IALa9qB,EAKiB8qB,EAJH,IAA5B15B,OAAOkkB,KAAKtV,GAAKzR,QAI6Cu8B,EAAf/c,EALxD,IAAuB/N,CAMvB,gDCVA,MAAM+qB,EAAmBnZ,GAAiBA,EAgB1C,EAfiCoZ,MAC/B,IAAIC,EAAWF,EACf,MAAO,CACL/Y,SAAAA,CAAUC,GACRgZ,EAAWhZ,CACb,EACAgZ,SAASrZ,GACAqZ,EAASrZ,GAElBsZ,KAAAA,GACED,EAAWF,CACb,EACD,EAEwBC,8DCVZ,SAAStc,EAAWzO,GACjC,GAAsB,kBAAXA,EACT,MAAM,IAAIgH,OAAyGC,EAAAA,EAAAA,GAAuB,IAE5I,OAAOjH,EAAOyY,OAAO,GAAGyS,cAAgBlrB,EAAO9N,MAAM,EACvD,sICPA,QAHA,SAAegnB,GAAmE,IAA9DpB,EAAGtc,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAGme,OAAOwR,iBAAkBtT,EAAGrc,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAGme,OAAOyR,iBAC9D,OAAOt6B,KAAK+mB,IAAIC,EAAKhnB,KAAKgnB,IAAIoB,EAAKrB,GACrC,+BCFe,SAASlH,EAAeD,EAAO2a,GAAsC,IAArB5a,EAAOjV,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,QAAGzM,EACvE,MAAM4F,EAAS,CAAC,EAkBhB,OAjBAxD,OAAOkkB,KAAK3E,GAAOlhB,SAGnB0e,IACEvZ,EAAOuZ,GAAQwC,EAAMxC,GAAMpB,QAAO,CAACC,EAAK5d,KACtC,GAAIA,EAAK,CACP,MAAMm8B,EAAeD,EAAgBl8B,GAChB,KAAjBm8B,GACFve,EAAIle,KAAKy8B,GAEP7a,GAAWA,EAAQthB,IACrB4d,EAAIle,KAAK4hB,EAAQthB,GAErB,CACA,OAAO4d,CAAG,GACT,IAAIjY,KAAK,IAAI,IAEXH,CACT,+CCde,SAAS42B,IAAgC,QAAAhwB,EAAAC,UAAAlN,OAAPk9B,EAAK,IAAA1zB,MAAAyD,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAL8vB,EAAK9vB,GAAAF,UAAAE,GACpD,OAAO8vB,EAAM1e,QAAO,CAACC,EAAK/S,IACZ,MAARA,EACK+S,EAEF,WAAkC,QAAA0e,EAAAjwB,UAAAlN,OAANmN,EAAI,IAAA3D,MAAA2zB,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJjwB,EAAIiwB,GAAAlwB,UAAAkwB,GACrC3e,EAAIlR,MAAM5N,KAAMwN,GAChBzB,EAAK6B,MAAM5N,KAAMwN,EACnB,IACC,QACL,+CCde,SAASkwB,EAAS3xB,GAAkB,IAC7C4xB,EADiCC,EAAIrwB,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG,IAE5C,SAASswB,IAAmB,QAAAvwB,EAAAC,UAAAlN,OAANmN,EAAI,IAAA3D,MAAAyD,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJD,EAAIC,GAAAF,UAAAE,GAKxBqwB,aAAaH,GACbA,EAAUI,YALIC,KAEZjyB,EAAK6B,MAAM5N,KAAMwN,EAAK,GAGIowB,EAC9B,CAIA,OAHAC,EAAUI,MAAQ,KAChBH,aAAaH,EAAQ,EAEhBE,CACT,sFCdO,SAASvQ,EAAc6C,GAC5B,GAAoB,kBAATA,GAA8B,OAATA,EAC9B,OAAO,EAET,MAAM/uB,EAAY8B,OAAOg7B,eAAe/N,GACxC,OAAsB,OAAd/uB,GAAsBA,IAAc8B,OAAO9B,WAAkD,OAArC8B,OAAOg7B,eAAe98B,OAA0B+8B,OAAOC,eAAejO,MAAWgO,OAAOE,YAAYlO,EACtK,CACA,SAASmO,EAAUC,GACjB,IAAKjR,EAAciR,GACjB,OAAOA,EAET,MAAM73B,EAAS,CAAC,EAIhB,OAHAxD,OAAOkkB,KAAKmX,GAAQh9B,SAAQL,IAC1BwF,EAAOxF,GAAOo9B,EAAUC,EAAOr9B,GAAK,IAE/BwF,CACT,CACe,SAAS0S,EAAUgN,EAAQmY,GAEvC,IAF+Cz+B,EAAOyN,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG,CAC1DkO,OAAO,GAEP,MAAM/U,EAAS5G,EAAQ2b,OAAQ3C,EAAAA,EAAAA,GAAS,CAAC,EAAGsN,GAAUA,EAiBtD,OAhBIkH,EAAclH,IAAWkH,EAAciR,IACzCr7B,OAAOkkB,KAAKmX,GAAQh9B,SAAQL,IAEd,cAARA,IAGAosB,EAAciR,EAAOr9B,KAASA,KAAOklB,GAAUkH,EAAclH,EAAOllB,IAEtEwF,EAAOxF,GAAOkY,EAAUgN,EAAOllB,GAAMq9B,EAAOr9B,GAAMpB,GACzCA,EAAQ2b,MACjB/U,EAAOxF,GAAOosB,EAAciR,EAAOr9B,IAAQo9B,EAAUC,EAAOr9B,IAAQq9B,EAAOr9B,GAE3EwF,EAAOxF,GAAOq9B,EAAOr9B,GACvB,IAGGwF,CACT,gICnCe,SAAS83B,EAAsBC,GAK5C,IAAIxZ,EAAM,0CAA4CwZ,EACtD,IAAK,IAAIx8B,EAAI,EAAGA,EAAIsL,UAAUlN,OAAQ4B,GAAK,EAGzCgjB,GAAO,WAAayZ,mBAAmBnxB,UAAUtL,IAEnD,MAAO,uBAAyBw8B,EAAO,WAAaxZ,EAAM,wBAE5D,0JCjBO,MAAM0Z,EAAqB,CAChCjpB,OAAQ,SACRkpB,QAAS,UACTC,UAAW,YACXzpB,SAAU,WACVuC,MAAO,QACPmnB,SAAU,WACVC,QAAS,UACTC,aAAc,eACdC,KAAM,OACN1Y,SAAU,WACV2Y,SAAU,WACVrpB,SAAU,YAEG,SAASqK,EAAqBwD,EAAezD,GAAiC,IAA3Bkf,EAAiB5xB,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG,MACpF,MAAM6xB,EAAmBT,EAAmB1e,GAC5C,OAAOmf,EAAoB,GAAED,KAAqBC,IAAsB,GAAEpb,EAAAA,EAAmB+Y,SAASrZ,MAAkBzD,GAC1H,8DCjBe,SAASE,EAAuBuD,EAAejB,GAAkC,IAA3B0c,EAAiB5xB,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG,MACvF,MAAM8E,EAAS,CAAC,EAIhB,OAHAoQ,EAAMlhB,SAAQ0e,IACZ5N,EAAO4N,IAAQC,EAAAA,EAAAA,IAAqBwD,EAAezD,EAAMkf,EAAkB,IAEtE9sB,CACT,iGCHA,MAAMgtB,EAAmB,oDAClB,SAASC,EAAgBj0B,GAC9B,MAAM5B,EAAS,GAAE4B,IAAK5B,MAAM41B,GAE5B,OADa51B,GAASA,EAAM,IACb,EACjB,CACA,SAAS81B,EAAyBlc,GAA0B,IAAfmc,EAAQjyB,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG,GACtD,OAAO8V,EAAUD,aAAeC,EAAUnY,MAAQo0B,EAAgBjc,IAAcmc,CAClF,CACA,SAASC,EAAeC,EAAWC,EAAWC,GAC5C,MAAMC,EAAeN,EAAyBI,GAC9C,OAAOD,EAAUtc,cAAiC,KAAjByc,EAAuB,GAAED,KAAeC,KAAkBD,EAC7F,CAOe,SAASE,EAAezc,GACrC,GAAiB,MAAbA,EAAJ,CAGA,GAAyB,kBAAdA,EACT,OAAOA,EAET,GAAyB,oBAAdA,EACT,OAAOkc,EAAyBlc,EAAW,aAI7C,GAAyB,kBAAdA,EACT,OAAQA,EAAU0c,UAChB,KAAKC,EAAAA,WACH,OAAOP,EAAepc,EAAWA,EAAU4c,OAAQ,cACrD,KAAKC,EAAAA,KACH,OAAOT,EAAepc,EAAWA,EAAUve,KAAM,QACnD,QACE,OAhBN,CAoBF,+BC9Ce,SAAS6hB,EAAchiB,GACpC,OAAOA,GAAQA,EAAKgiB,eAAiBjlB,QACvC,8ECDe,SAASy+B,EAAYx7B,GAElC,OADYgiB,EAAAA,EAAAA,GAAchiB,GACfy7B,aAAeC,MAC5B,8DCGe,SAAS3D,EAAa7T,EAAc9jB,GACjD,MAAM2B,GAASoS,EAAAA,EAAAA,GAAS,CAAC,EAAG/T,GAwB5B,OAvBA7B,OAAOkkB,KAAKyB,GAActnB,SAAQkiB,IAChC,GAAIA,EAAS3V,WAAWrE,MAAM,wBAC5B/C,EAAO+c,IAAY3K,EAAAA,EAAAA,GAAS,CAAC,EAAG+P,EAAapF,GAAW/c,EAAO+c,SAC1D,GAAIA,EAAS3V,WAAWrE,MAAM,iCAAkC,CACrE,MAAM62B,EAAmBzX,EAAapF,IAAa,CAAC,EAC9C8c,EAAYx7B,EAAM0e,GACxB/c,EAAO+c,GAAY,CAAC,EACf8c,GAAcr9B,OAAOkkB,KAAKmZ,GAGnBD,GAAqBp9B,OAAOkkB,KAAKkZ,IAI3C55B,EAAO+c,IAAY3K,EAAAA,EAAAA,GAAS,CAAC,EAAGynB,GAChCr9B,OAAOkkB,KAAKkZ,GAAkB/+B,SAAQi/B,IACpC95B,EAAO+c,GAAU+c,GAAgB9D,EAAa4D,EAAiBE,GAAeD,EAAUC,GAAc,KAJxG95B,EAAO+c,GAAY8c,EAHnB75B,EAAO+c,GAAY6c,CAUvB,WAAgCx/B,IAArB4F,EAAO+c,KAChB/c,EAAO+c,GAAYoF,EAAapF,GAClC,IAEK/c,CACT,+BCpBe,SAAS+5B,EAAOx0B,EAAK7I,GACf,oBAAR6I,EACTA,EAAI7I,GACK6I,IACTA,EAAIgB,QAAU7J,EAElB,8ECRA,MACA,EAD4C,qBAAXi9B,OAAyB30B,EAAAA,gBAAwBA,EAAAA,gFCQlF,QATA,SAA0BL,GACxB,MAAMY,EAAMP,EAAAA,OAAaL,GAIzB,OAHAq1B,EAAAA,EAAAA,IAAkB,KAChBz0B,EAAIgB,QAAU5B,CAAE,IAEXK,EAAAA,QAAa,kBAEpB,EAAIO,EAAIgB,YAASM,UAAQ,IAAEN,OAC7B,wECde,SAAS0zB,IAAoB,QAAArzB,EAAAC,UAAAlN,OAANugC,EAAI,IAAA/2B,MAAAyD,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJmzB,EAAInzB,GAAAF,UAAAE,GAMxC,OAAO/B,EAAAA,SAAc,IACfk1B,EAAKvE,OAAMpwB,GAAc,MAAPA,IACb,KAEF40B,IACLD,EAAKr/B,SAAQ0K,KACXw0B,EAAAA,EAAAA,GAAOx0B,EAAK40B,EAAS,GACrB,GAGHD,EACL,mEClBA,IAAIE,EAAW,EAkBf,MAAMC,GAAkBr1B,IAAAA,EAAAA,EAAAA,EAAAA,EAAAA,KAAM,QAAQoC,YAOvB,SAASkzB,EAAMC,GAC5B,QAAwBngC,IAApBigC,EAA+B,CACjC,MAAMG,EAAUH,IAChB,OAAqB,MAAdE,EAAqBA,EAAaC,CAC3C,CAEA,OA9BF,SAAqBD,GACnB,MAAOE,EAAWC,GAAgB11B,EAAAA,SAAeu1B,GAC3CI,EAAKJ,GAAcE,EAWzB,OAVAz1B,EAAAA,WAAgB,KACG,MAAby1B,IAKFL,GAAY,EACZM,EAAc,OAAMN,KACtB,GACC,CAACK,IACGE,CACT,CAgBSC,CAAYL,EACrB,sEChCA,MAAMM,EAAgB,CAAC,ECAvB,MAAMC,EAAQ,GCCP,MAAMzc,EACXjY,WAAAA,GACE9M,KAAKyhC,UAAY,KACjBzhC,KAAKi+B,MAAQ,KACY,OAAnBj+B,KAAKyhC,YACP3D,aAAa99B,KAAKyhC,WAClBzhC,KAAKyhC,UAAY,KACnB,EAEFzhC,KAAK0hC,cAAgB,IACZ1hC,KAAKi+B,KAEhB,CACA,aAAO3yB,GACL,OAAO,IAAIyZ,CACb,CAIAiC,KAAAA,CAAM7J,EAAO9R,GACXrL,KAAKi+B,QACLj+B,KAAKyhC,UAAY1D,YAAW,KAC1B/9B,KAAKyhC,UAAY,KACjBp2B,GAAI,GACH8R,EACL,EAEa,SAASwkB,IACtB,MAAMhE,EFpBO,SAAoBiE,EAAMC,GACvC,MAAM51B,EAAMP,EAAAA,OAAa61B,GAIzB,OAHIt1B,EAAIgB,UAAYs0B,IAClBt1B,EAAIgB,QAAU20B,EAAKC,IAEd51B,CACT,CEckB61B,CAAW/c,EAAQzZ,QAAQ2B,QDxB9B,IAAoB5B,EC0BjC,OD1BiCA,ECyBtBsyB,EAAQ+D,cDvBnBh2B,EAAAA,UAAgBL,EAAIm2B,GCwBb7D,CACT,+BCjCA,MAAMoE,EAAOpuB,EAAQ,MAErB,MAAMquB,UAAoBjpB,MACxBjM,WAAAA,CAAam1B,GAAgB,QAAA30B,EAAAC,UAAAlN,OAARo8B,EAAM,IAAA5yB,MAAAyD,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAANgvB,EAAMhvB,EAAA,GAAAF,UAAAE,GAczB,IAAIy0B,EAbJC,SAAS1F,GAEL1jB,MAAMqpB,mBACRrpB,MAAMqpB,kBAAkBpiC,KAAMgiC,GAGhChiC,KAAKkL,KAAO,cACZlL,KAAKqiC,QAAUJ,EAAIK,cACnBtiC,KAAKuiC,WAAaN,EAAIO,OACtBxiC,KAAKiiC,IAAMA,EACXjiC,KAAKyiC,KAAOR,EAAIQ,KAAKxZ,KAAKgZ,GAC1BjiC,KAAKiV,KAAOgtB,EAAIhtB,KAAKgU,KAAKgZ,GAC1BjiC,KAAK0iC,YAAcT,EAAIS,YAAYzZ,KAAKgZ,GAMxC/+B,OAAOmR,eAAerU,KAAM,eAAgB,CAAE+I,IAJlCA,KACLm5B,IAAQA,EAASliC,KAAK0iC,eACpBR,KAITliC,KAAK2iC,QAAU,CAAC,EAChB,IAAK,MAAOzhC,EAAKkC,KAAU6+B,EAAIU,QAAQ3U,UACrChuB,KAAK2iC,QAAQzhC,EAAIkQ,eAAiBhO,CAEtC,EA6CFw/B,EAAOhvB,QAAUmuB,GA1CCc,CAACC,EAAaC,EAAQC,EAAUL,EAASM,IAAYC,eAAOC,EAAMC,GAAwB,IAAlBC,EAAQ91B,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAG,CAAC,EACpG41B,EAAOF,GAAWE,GAAQ,IAC1B,IAAI16B,EAAS,IAAI66B,IAAIH,GAOrB,GALKR,IAASA,EAAU,CAAC,GACrBl6B,EAAO86B,WACTZ,EAAQa,cAAgB,SAAWC,KAAKh7B,EAAO86B,SAAW,IAAM96B,EAAO2c,UACvE3c,EAAS,IAAI66B,IAAI76B,EAAOi7B,SAAW,KAAOj7B,EAAOk7B,KAAOl7B,EAAOm7B,SAAWn7B,EAAOhF,SAE3D,WAApBgF,EAAOi7B,UAA6C,UAApBj7B,EAAOi7B,SACzC,MAAM,IAAI3qB,MAAO,qBAAoBtQ,EAAOi7B,YAG9C,GAAIN,EACF,GAAIA,aAAgBS,aAClBA,YAAYC,OAAOV,IACH,kBAATA,OAGF,IAAoB,kBAATA,EAIhB,MAAM,IAAIrqB,MAAM,sBAHhBqqB,EAAOnqB,KAAKtS,UAAUy8B,GACtBT,EAAQ,gBAAkB,kBAG5B,CAGFU,EAAW,IAAIU,QAAQ,IAAMpB,GAAW,CAAC,KAAOU,IAEhD,MAAMW,QAAaC,MAAMx7B,EAAQ,CAAEs6B,SAAQJ,QAASU,EAAUD,SAG9D,GAFAY,EAAKzB,WAAayB,EAAKxB,QAElBM,EAAYnU,IAAIqV,EAAKxB,QACxB,MAAM,IAAIR,EAAYgC,GAGxB,MAAiB,SAAbhB,EAA4BgB,EAAKvB,OACf,WAAbO,EAA8BgB,EAAKtB,cACtB,WAAbM,EAA8BgB,EAAK/uB,OAChC+uB,CACd,2BCxEA,MAAME,EAAY,IAAI9H,IAAI,CAAC,OAAQ,SAAU,WAE7CwG,EAAOhvB,QAAUivB,GAAa,WAC5B,MAAMC,EAAc,IAAI1G,IACxB,IAAI2G,EACAC,EACAL,EACAM,EAAU,GAAE,QAAA31B,EAAAC,UAAAlN,OALgBmN,EAAI,IAAA3D,MAAAyD,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAJD,EAAIC,GAAAF,UAAAE,GA8CpC,OAvCAD,EAAKjM,SAAQgK,IACX,GAAmB,kBAARA,EACT,GAAIA,EAAI0xB,gBAAkB1xB,EAAK,CAC7B,GAAIw3B,EAAQ,CAEV,MAAM,IAAIhqB,MADG,uBAAsBxN,qBAAuBw3B,KAE5D,CACEA,EAASx3B,CAEb,MAAO,GAAIA,EAAI44B,WAAW,UAAY54B,EAAI44B,WAAW,UACnDlB,EAAU13B,MACL,CACL,IAAI24B,EAAUvV,IAAIpjB,GAGhB,MAAM,IAAIwN,MAAO,qBAAoBxN,KAFrCy3B,EAAWz3B,CAIf,MACK,GAAmB,kBAARA,EAChBu3B,EAAYsB,IAAI74B,OACX,IAAmB,kBAARA,EAUhB,MAAM,IAAIwN,MAAO,wBAAuBxN,GATxC,GAAI1B,MAAMmI,QAAQzG,IAAQA,aAAe6wB,IACvC7wB,EAAIhK,SAAQk9B,GAAQqE,EAAYsB,IAAI3F,SAC/B,CACL,GAAIkE,EACF,MAAM,IAAI5pB,MAAM,6BAElB4pB,EAAUp3B,CACZ,CAGF,KAGGw3B,IAAQA,EAAS,OACG,IAArBD,EAAY76B,MACd66B,EAAYsB,IAAI,KAGXvB,EAAUC,EAAaC,EAAQC,EAAUL,EAASM,EAC3D,8BChDA,IAAIoB,EAAU1wB,EAAQ,MAMlB2wB,EAAgB,CAClBC,mBAAmB,EACnBC,aAAa,EACbC,cAAc,EACd5b,cAAc,EACdzF,aAAa,EACbshB,iBAAiB,EACjBC,0BAA0B,EAC1BC,0BAA0B,EAC1B9mB,QAAQ,EACRiX,WAAW,EACXjwB,MAAM,GAEJ+/B,EAAgB,CAClB35B,MAAM,EACN7K,QAAQ,EACRe,WAAW,EACX0jC,QAAQ,EACRC,QAAQ,EACRx3B,WAAW,EACXy3B,OAAO,GASLC,EAAe,CACjB,UAAY,EACZC,SAAS,EACTrc,cAAc,EACdzF,aAAa,EACb2R,WAAW,EACXjwB,MAAM,GAEJqgC,EAAe,CAAC,EAIpB,SAASC,EAAWnjB,GAElB,OAAIoiB,EAAQgB,OAAOpjB,GACVgjB,EAIFE,EAAaljB,EAAoB,WAAMqiB,CAChD,CAXAa,EAAad,EAAQrE,YAhBK,CACxB,UAAY,EACZC,QAAQ,EACRpX,cAAc,EACdzF,aAAa,EACb2R,WAAW,GAYboQ,EAAad,EAAQnE,MAAQ+E,EAY7B,IAAI5wB,EAAiBnR,OAAOmR,eACxBixB,EAAsBpiC,OAAOoiC,oBAC7BC,EAAwBriC,OAAOqiC,sBAC/B1W,EAA2B3rB,OAAO2rB,yBAClCqP,EAAiBh7B,OAAOg7B,eACxBsH,EAAkBtiC,OAAO9B,UAsC7BwhC,EAAOhvB,QArCP,SAAS6xB,EAAqBC,EAAiBC,EAAiBC,GAC9D,GAA+B,kBAApBD,EAA8B,CAEvC,GAAIH,EAAiB,CACnB,IAAIK,EAAqB3H,EAAeyH,GAEpCE,GAAsBA,IAAuBL,GAC/CC,EAAqBC,EAAiBG,EAAoBD,EAE9D,CAEA,IAAIxe,EAAOke,EAAoBK,GAE3BJ,IACFne,EAAOA,EAAKxc,OAAO26B,EAAsBI,KAM3C,IAHA,IAAIG,EAAgBV,EAAWM,GAC3BK,EAAgBX,EAAWO,GAEtB1jC,EAAI,EAAGA,EAAImlB,EAAK/mB,SAAU4B,EAAG,CACpC,IAAIf,EAAMkmB,EAAKnlB,GAEf,IAAK4iC,EAAc3jC,MAAU0kC,IAAaA,EAAU1kC,OAAW6kC,IAAiBA,EAAc7kC,OAAW4kC,IAAiBA,EAAc5kC,IAAO,CAC7I,IAAI8kC,EAAanX,EAAyB8W,EAAiBzkC,GAE3D,IAEEmT,EAAeqxB,EAAiBxkC,EAAK8kC,EACvC,CAAE,MAAOzjC,GAAI,CACf,CACF,CACF,CAEA,OAAOmjC,CACT,6BC3Fa,IAAItS,EAAE,oBAAoB+K,QAAQA,OAAO8H,IAAIC,EAAE9S,EAAE+K,OAAO8H,IAAI,iBAAiB,MAAMhyB,EAAEmf,EAAE+K,OAAO8H,IAAI,gBAAgB,MAAM1jC,EAAE6wB,EAAE+K,OAAO8H,IAAI,kBAAkB,MAAMza,EAAE4H,EAAE+K,OAAO8H,IAAI,qBAAqB,MAAME,EAAE/S,EAAE+K,OAAO8H,IAAI,kBAAkB,MAAMnzB,EAAEsgB,EAAE+K,OAAO8H,IAAI,kBAAkB,MAAM99B,EAAEirB,EAAE+K,OAAO8H,IAAI,iBAAiB,MAAM3a,EAAE8H,EAAE+K,OAAO8H,IAAI,oBAAoB,MAAMhT,EAAEG,EAAE+K,OAAO8H,IAAI,yBAAyB,MAAM5b,EAAE+I,EAAE+K,OAAO8H,IAAI,qBAAqB,MAAM/S,EAAEE,EAAE+K,OAAO8H,IAAI,kBAAkB,MAAMG,EAAEhT,EACpf+K,OAAO8H,IAAI,uBAAuB,MAAM7xB,EAAEgf,EAAE+K,OAAO8H,IAAI,cAAc,MAAMxX,EAAE2E,EAAE+K,OAAO8H,IAAI,cAAc,MAAMI,EAAEjT,EAAE+K,OAAO8H,IAAI,eAAe,MAAMK,EAAElT,EAAE+K,OAAO8H,IAAI,qBAAqB,MAAM79B,EAAEgrB,EAAE+K,OAAO8H,IAAI,mBAAmB,MAAM59B,EAAE+qB,EAAE+K,OAAO8H,IAAI,eAAe,MAClQ,SAAS39B,EAAEijB,GAAG,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIuD,EAAEvD,EAAEwU,SAAS,OAAOjR,GAAG,KAAKoX,EAAE,OAAO3a,EAAEA,EAAEzmB,MAAQ,KAAKwmB,EAAE,KAAK2H,EAAE,KAAK1wB,EAAE,KAAK4jC,EAAE,KAAK3a,EAAE,KAAK0H,EAAE,OAAO3H,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAEwU,UAAY,KAAK53B,EAAE,KAAKkiB,EAAE,KAAKoE,EAAE,KAAKra,EAAE,KAAKtB,EAAE,OAAOyY,EAAE,QAAQ,OAAOuD,GAAG,KAAK7a,EAAE,OAAO6a,EAAE,CAAC,CAAC,SAASyX,EAAEhb,GAAG,OAAOjjB,EAAEijB,KAAK0H,CAAC,CAACrf,EAAQ4yB,UAAUlb,EAAE1X,EAAQ6yB,eAAexT,EAAErf,EAAQ8yB,gBAAgBv+B,EAAEyL,EAAQ+yB,gBAAgB7zB,EAAEc,EAAQgzB,QAAQV,EAAEtyB,EAAQosB,WAAW3V,EAAEzW,EAAQizB,SAAStkC,EAAEqR,EAAQkzB,KAAKrY,EAAE7a,EAAQssB,KAAK9rB,EAAER,EAAQmzB,OAAO9yB,EAChfL,EAAQozB,SAASb,EAAEvyB,EAAQqzB,WAAWzb,EAAE5X,EAAQszB,SAAShU,EAAEtf,EAAQuzB,YAAY,SAAS5b,GAAG,OAAOgb,EAAEhb,IAAIjjB,EAAEijB,KAAKD,CAAC,EAAE1X,EAAQwzB,iBAAiBb,EAAE3yB,EAAQyzB,kBAAkB,SAAS9b,GAAG,OAAOjjB,EAAEijB,KAAKpjB,CAAC,EAAEyL,EAAQ0zB,kBAAkB,SAAS/b,GAAG,OAAOjjB,EAAEijB,KAAKzY,CAAC,EAAEc,EAAQ2zB,UAAU,SAAShc,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEwU,WAAWmG,CAAC,EAAEtyB,EAAQ4zB,aAAa,SAASjc,GAAG,OAAOjjB,EAAEijB,KAAKlB,CAAC,EAAEzW,EAAQ6zB,WAAW,SAASlc,GAAG,OAAOjjB,EAAEijB,KAAKhpB,CAAC,EAAEqR,EAAQ8zB,OAAO,SAASnc,GAAG,OAAOjjB,EAAEijB,KAAKkD,CAAC,EAC1d7a,EAAQyxB,OAAO,SAAS9Z,GAAG,OAAOjjB,EAAEijB,KAAKnX,CAAC,EAAER,EAAQ+zB,SAAS,SAASpc,GAAG,OAAOjjB,EAAEijB,KAAKtX,CAAC,EAAEL,EAAQg0B,WAAW,SAASrc,GAAG,OAAOjjB,EAAEijB,KAAK4a,CAAC,EAAEvyB,EAAQi0B,aAAa,SAAStc,GAAG,OAAOjjB,EAAEijB,KAAKC,CAAC,EAAE5X,EAAQk0B,WAAW,SAASvc,GAAG,OAAOjjB,EAAEijB,KAAK2H,CAAC,EAC1Otf,EAAQm0B,mBAAmB,SAASxc,GAAG,MAAM,kBAAkBA,GAAG,oBAAoBA,GAAGA,IAAIhpB,GAAGgpB,IAAI0H,GAAG1H,IAAI4a,GAAG5a,IAAIC,GAAGD,IAAI2H,GAAG3H,IAAI6a,GAAG,kBAAkB7a,GAAG,OAAOA,IAAIA,EAAEwU,WAAWtR,GAAGlD,EAAEwU,WAAW3rB,GAAGmX,EAAEwU,WAAWjtB,GAAGyY,EAAEwU,WAAW53B,GAAGojB,EAAEwU,WAAW1V,GAAGkB,EAAEwU,WAAWuG,GAAG/a,EAAEwU,WAAW33B,GAAGmjB,EAAEwU,WAAW13B,GAAGkjB,EAAEwU,WAAWsG,EAAE,EAAEzyB,EAAQo0B,OAAO1/B,+BCXjUs6B,EAAOhvB,QAAU,EAAjBgvB,6YCIG,IAJLjvB,EAAA,MAISs0B,aAGTC,EAAAv0B,EAAA,MAAAC,0oBCNA,MAAAu0B,EAAAC,EAAAz0B,EAAA,OACA00B,EAAA10B,EAAA,MAEA20B,EAAA30B,EAAA,KAEAC,EAAAA,uBAAA,MAOI9G,WAAAA,GAA2D,IAAxCy7B,EAAAh7B,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAA2B86B,EAAAG,SAASC,KAL/C,KAAAC,iBAA2B5nC,EAC3B,KAAA6nC,yBAAmC,EAKvC3oC,KAAK4oC,mBAAqBL,CAC9B,CAEA,WAAWM,CAAQ1lB,GACfmlB,EAAAQ,UAAUC,uBAAuBZ,EAAGa,SAAU,sCAC9ChpC,KAAK0oC,YAAcvlB,CACvB,CAEA,uBAAW8lB,CAAoBC,GAC3BlpC,KAAK2oC,wBAA0BO,CACnC,CAEOC,OAAAA,CAAQvjB,GACX,GAAIA,EAAMwjB,WAAappC,KAAK4oC,mBAAoB,CAC5C,MAAMS,EAAMrpC,KAAK8N,SAAS8X,GAQ1B,GAPM5lB,KAAKspC,aACPtpC,KAAKspC,YAAYD,GAEfrpC,KAAK0oC,aACPP,EAAGoB,cAAcvpC,KAAK0oC,YAAaW,EAAM,KAAM,CAAEG,KAAM,OAGvDxpC,KAAK2oC,wBACL,OAAQ/iB,EAAMwjB,WACV,KAAKf,EAAAG,SAASiB,MAEVC,QAAQC,MAAMN,GACd,MACJ,KAAKhB,EAAAG,SAASoB,KAEVF,QAAQ5xB,KAAKuxB,GACb,MACJ,KAAKhB,EAAAG,SAASqB,QAEVH,QAAQI,KAAKT,GACb,MACJ,KAAKhB,EAAAG,SAASzvB,MAEV2wB,QAAQ/xB,MAAM0xB,GACd,MACJ,QAEIK,QAAQL,IAAIA,IAKhC,CAEQv7B,QAAAA,CAAS8X,GACb,MAAMmkB,EAAe,CACjB,GAAGnkB,EAAMokB,YACT,GAAGpkB,EAAM1a,QAGP3I,EAASqjB,EACf,IAAK,MAAMrG,KAAQhd,EACf,GAAIgd,GAAQqG,EAAM/O,eAAe0I,IACpB,cAATA,GAAiC,cAATA,GACf,YAATA,GAA+B,SAATA,GACb,gBAATA,EAAwB,CAExB,MAAMnc,EAAQb,EAAEgd,GAChB,IAAI0qB,EAAa,cACHnpC,IAAVsC,GAAiC,OAAVA,IAEnB6mC,EADmB,kBAAX7mC,GAA0C,kBAAXA,EAC1BA,EAAM0K,WAENmL,KAAKtS,UAAUvD,IAIpC2mC,EAAanpC,KAAK,GAAG2e,MAAS0qB,KAKtC,OAAOF,EAAaljC,KAAK,MAC7B,0YC5FJqhC,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,0GCVA,MAAAs2B,EAAAv2B,EAAA,MAKAw2B,EAAAx2B,EAAA,MAqBAy2B,EAAAz2B,EAAA,MAEAC,EAAAA,gBAAA,MAgBI9G,WAAAA,CAAmBu9B,EAAqBC,EAAmBC,GAZnD,KAAAC,YAAsD,CAAC,EAUvD,KAAAC,cAAwB,GAG5BzqC,KAAK0qC,OAASH,GAAgCJ,EAAAQ,mBAC9C3qC,KAAK4qC,WAAa,IAAIT,EAAAU,YACtB7qC,KAAK8qC,WAAaT,EACI,qBAAXhK,QAA0C,qBAAT0K,MAAwB/qC,KAAK8qC,sBAAsBC,KAC3F/qC,KAAKgrC,aAAgBX,EAAcn/B,KAEnClL,KAAKgrC,aAAeV,GAAY,cAIpCtqC,KAAKirC,uBAAyBjrC,KAAKkrC,YACvC,CAEA,UAAWC,GACP,OAAOnrC,KAAKirC,sBAChB,CAEOG,MAAAA,GACH,GAAIprC,KAAKgrC,aAAaK,YAAY,UAAYrrC,KAAKgrC,aAAa3qC,OAAS,EAAG,CACxE,MAAMirC,EAAWtrC,KAAKgrC,aAAe,gEAErC,OADAhrC,KAAKmpC,QAAQ,IAAIgB,EAAAoB,sBAAsBD,EAAU,KAC1CE,QAAQC,OAAOH,GAG1BtrC,KAAKmpC,QAAQ,IAAIgB,EAAAuB,6BAA6B1rC,KAAK0qC,SACnD1qC,KAAKmpC,QAAQ,IAAIgB,EAAAwB,sBAAsB3rC,KAAK0qC,QAEhD,CAEOrJ,EAAAA,GACH,OAAOrhC,KAAK0qC,MAChB,CAEO,YAAMkB,CAAOC,GAChB7rC,KAAKmpC,QAAQ,IAAIgB,EAAA2B,8BAA8B9rC,KAAK0qC,OAAQmB,IAE5D,MAAME,QAAoC/rC,KAAKgsC,OAAOH,GAGtD,OADA7rC,KAAKmpC,QAAQ,IAAIgB,EAAA8B,6BAA6BjsC,KAAK0qC,OAAQmB,IACpDL,QAAQU,QAAQ,CACnBC,OAAQjJ,UACJ6I,EAAOK,mBACApsC,KAAKwqC,YAAYqB,GACxB7rC,KAAKmpC,QAAQ,IAAIgB,EAAAkC,6BAA6BrsC,KAAK0qC,OAAQmB,UACrD7rC,KAAKssC,SAAS,EAExBjL,GAAIA,IAAcwK,EAClBU,KAAMA,IAA0CR,EAAOQ,QAE/D,CAEOJ,MAAAA,CAAON,GACNA,GAAe7rC,KAAKwqC,YAAYqB,KAChC7rC,KAAKwqC,YAAYqB,GAAaW,eACvBxsC,KAAKwqC,YAAYqB,GACxB7rC,KAAKmpC,QAAQ,IAAIgB,EAAAkC,6BAA6BrsC,KAAK0qC,OAAQmB,IAEnE,CAEOS,OAAAA,GACH,IAAK,MAAMG,KAAYzsC,KAAKwqC,YACxB,GAAIiC,EAAU,CACV,MAAMV,EAAS/rC,KAAKwqC,YAAYiC,GAC5BV,IAAWA,EAAOW,UAClBX,EAAOS,QAMnB,OADAxsC,KAAKmpC,QAAQ,IAAIgB,EAAAwC,oBAAoB3sC,KAAK0qC,SACnCc,QAAQU,SACnB,CAEA,UAAWU,GACP,OAAO5sC,KAAK4qC,UAChB,CAEA,cAAWiC,GACP,OAAO7sC,KAAKirC,uBAAuB6B,MAAgCz6B,GAQ3Dm5B,QAAQU,QAAQ,CAChBa,cAAe16B,EAAO26B,cACtBC,aAAc56B,EAAO66B,SACrBC,aAAcjD,EAAAiD,aAAaC,QAC3BC,aAAc,aACdC,MAAO,OACPC,WAAYl7B,EAAOm7B,cACnB1oC,KAAMolC,EAAAplC,KAAK2oC,QAGvB,CAEQvC,UAAAA,GAEJ,MACMwC,EAAwB1tC,KAAK8qC,WAAW7mC,MAAM,EADtB,MAGxB0pC,EAAgD,IAAIxD,EAAAyD,SAEpDC,EAAiBH,IACnB,MAAMI,EAAiB,IAAIC,SAASL,GAE9BM,EAAWpqC,GAA0Bb,OAAOC,aAAa8qC,EAAKG,SAASrqC,GAAQkqC,EAAKG,SAASrqC,EAAQ,GAAIkqC,EAAKG,SAASrqC,EAAQ,GAAIkqC,EAAKG,SAASrqC,EAAQ,IAG/J,GAAI,SAAWoqC,EAAQ,GAEnB,YADAL,EAAalC,OAAO,kDAMxB,GAAI,SAAWuC,EAAQ,IAAM,SAAWA,EAAQ,IAE5C,YADAL,EAAalC,OAAO,qDAIxB,MAAMyC,EAAqBJ,EAAKK,SAAS,IAAI,GACvCC,EAAuBN,EAAKO,UAAU,IAAI,GAC1CC,EAAqBR,EAAKS,UAAU,IAAI,GACxCvB,EAAwBc,EAAKO,UAAU,IAAI,GAEjD,IAAIG,EAAc,GAAK3rC,KAAK+mB,IAAIskB,EAAa,GAAI,GACjD,KAAwB,SAAjBF,EAAQQ,GAAiBA,GAAO,EACnC,GAAIA,EAAMC,KAEN,YADAd,EAAalC,OAAO,wDAI5BzrC,KAAKyqC,cAAgB+D,EAAM,EAC3Bb,EAAazB,QAAQ9B,EAAAsE,kBAAkBC,iBAAiBL,EAAYtB,EAAeoB,GAAuC,EAG9H,GAAsB,qBAAX/N,QAA0C,qBAAT0K,MAAwB2C,aAAkB3C,KAAM,CACxF,MAAM6D,EAAqB,IAAIC,WAE/BD,EAAOE,OAAUlpB,IACb,MAAM8nB,EAAuB9nB,EAAMQ,OAAsB/T,OACzDw7B,EAAcH,EAAO,EAGzBkB,EAAOG,kBAAkBrB,OACtB,CACH,MAAM56B,EAAY46B,EAClBG,EAAc/6B,EAAEovB,OAAOj+B,MAAM6O,EAAEk8B,WAAYl8B,EAAEk8B,WAAal8B,EAAEm8B,aAEhE,OAAOtB,EAAauB,OACxB,CAEQ,YAAMlD,CAAOH,GACjB,MAAMsD,EAAWx3B,IACb,MAAM2zB,EAAW,oCAAoCtrC,KAAKgrC,kBAAkBrzB,IAE5E,MADA3X,KAAKmpC,QAAQ,IAAIgB,EAAAiF,0BAA0BpvC,KAAK0qC,OAAQmB,EAAaP,IAC/D,IAAIvyB,MAAMuyB,EAAS,EAG7B,UACUtrC,KAAKorC,SAEX,MAAMD,QAAsCnrC,KAAKirC,uBAC3Cc,EAAS,IAAI5B,EAAAkF,yBAAyBlE,EAAOmE,eAAiB,GAAIzD,GAExE7rC,KAAKwqC,YAAYqB,GAAeE,EAChC,MAAMwD,EAAuBvvC,KAAK8qC,WAAW7mC,MAAMjE,KAAKyqC,eAElD+E,EAAeC,IACb1D,EAAOW,WAIXX,EAAO2D,iBAAiB,CACpBxN,OAAQuN,EACRE,OAAO,EACPC,aAAcC,KAAKC,QAEvB/D,EAAOS,QAAO,EAGlB,GAAsB,qBAAXnM,QAA0C,qBAAT0K,MAAwBwE,aAAiBxE,KAAM,CACvF,MAAM6D,EAAqB,IAAIC,WAC/BD,EAAOO,QAAWY,GAA0CZ,EAAQY,EAAGjiC,YAEvE8gC,EAAOE,OAAUlpB,IACb,MAAMoqB,EAA2BpqB,EAAMQ,OAAsB/T,OAC7Dm9B,EAAYQ,EAAW,EAG3BpB,EAAOG,kBAAkBQ,OACtB,CACH,MAAMrJ,EAAYqJ,EAClBC,EAAYtJ,EAAEhE,OAAOj+B,MAAMiiC,EAAE8I,WAAY9I,EAAE8I,WAAa9I,EAAE+I,aAG9D,OAAOlD,EACT,MAAOxpC,GACL4sC,EAAQ5sC,GAEhB,CAEQ4mC,OAAAA,CAAQvjB,GACZ5lB,KAAK4qC,WAAWzB,QAAQvjB,GACxBukB,EAAA8F,OAAOpP,SAASsI,QAAQvjB,EAC5B,yNC7PJ,MAAAskB,EAAAv2B,EAAA,MAKAw2B,EAAAx2B,EAAA,MAqBAy2B,EAAAz2B,EAAA,MAaaC,EAAAA,kCAAoC,8BAEjD,MAAas8B,EAsBTpjC,WAAAA,CACqBqjC,EACAC,EACjB7F,EACA8F,GAHiB,KAAAF,aAAAA,EACA,KAAAC,SAAAA,EApBb,KAAA5F,YAAsD,CAAC,EAyB3DxqC,KAAKswC,oBAAsBJ,EAAeK,YAAYjB,eAAiB,GACvEtvC,KAAK0qC,OAASH,GAAgCJ,EAAAQ,mBAC9C3qC,KAAK4qC,WAAa,IAAIT,EAAAU,YACtB7qC,KAAKwwC,gBAAkBH,GAAe,KACtCrwC,KAAKywC,eAAgB,CACzB,CAEA,UAAWtF,GACP,OAAOK,QAAQU,QAAQgE,EAAeK,YAC1C,CAEOnF,MAAAA,GACH,GAAIprC,KAAK0wC,uBACL,OAAO1wC,KAAK0wC,uBAAuBxB,QAGvClvC,KAAK0wC,uBAAyB,IAAIvG,EAAAyD,SAElC,IACI5tC,KAAK2wC,qBACP,MAAOh5B,GACL,GAAIA,aAAiBoB,MAAO,CACxB,MAAM63B,EAAoBj5B,EAC1B3X,KAAK0wC,uBAAuBjF,OAAOmF,EAAW1lC,KAAO,KAAO0lC,EAAWvO,cAEvEriC,KAAK0wC,uBAAuBjF,OAAO9zB,GAEvC,OAAO3X,KAAK0wC,uBAAuBxB,QAGvC,MAAM2B,EAAMxQ,OAAOyQ,UAEnB,IAAIC,EAEAF,EAAIE,cACJF,EAAIG,oBACJH,EAAII,iBACJJ,EAAIK,eAYR,GATML,EAAIM,eACNJ,EAAeA,CAACK,EAAqCC,EAAoDC,KACrGT,EAAIM,aACCJ,aAAaK,GACbtE,KAAKuE,GACLE,MAAMD,EAAc,GAI5BP,EAIE,CACH,MAAM3rC,EAAOA,KACTpF,KAAKmpC,QAAQ,IAAIgB,EAAAuB,6BAA6B1rC,KAAK0qC,SAC/C1qC,KAAKwwC,iBAAmBxwC,KAAKwwC,gBAAgB96B,QAC7C1V,KAAKmpC,QAAQ,IAAIgB,EAAAwB,sBAAsB3rC,KAAK0qC,SAC5C1qC,KAAK0wC,uBAAuBxE,WAE5B6E,EACI,CAAES,OAAOxxC,KAAKowC,UAAW,CAAEA,SAAUpwC,KAAKowC,UAAmBqB,OAAO,IACnEpB,IACGrwC,KAAKwwC,gBAAkBH,EACvBrwC,KAAKmpC,QAAQ,IAAIgB,EAAAwB,sBAAsB3rC,KAAK0qC,SAC5C1qC,KAAK0wC,uBAAuBxE,SAAS,IACrCv0B,IACA,MAAM2zB,EAAW,oDAAoD3zB,IACrE3X,KAAK0wC,uBAAuBjF,OAAOH,GACnCtrC,KAAKmpC,QAAQ,IAAIgB,EAAAoB,sBAAsBvrC,KAAK0qC,OAAQY,GAAU,KAK/C,cAA3BtrC,KAAK0xC,YAAYntB,MAGjBvkB,KAAK0xC,YAAYC,SACZ7E,KAAK1nC,GACLmsC,OAAOhuB,IACJvjB,KAAK0wC,uBAAuBjF,OAAO,uCAAuCloB,IAAmB,IAGrGne,QAlCW,CACf,MAAMkmC,EAAW,yCACjBtrC,KAAK0wC,uBAAuBjF,OAAOH,GACnCtrC,KAAKmpC,QAAQ,IAAIgB,EAAAoB,sBAAsBD,EAAU,KAmCrD,OAAOtrC,KAAK0wC,uBAAuBxB,OACvC,CAEO7N,EAAAA,GACH,OAAOrhC,KAAK0qC,MAChB,CAEOkB,MAAAA,CAAOC,GAGV,OAFA7rC,KAAKmpC,QAAQ,IAAIgB,EAAA2B,8BAA8B9rC,KAAK0qC,OAAQmB,IAErD7rC,KAAK4xC,OAAO/F,GAAaiB,MAC3Bf,IACG/rC,KAAKmpC,QAAQ,IAAIgB,EAAA8B,6BAA6BjsC,KAAK0qC,OAAQmB,IACpD,CACHM,OAAQjJ,UACJ6I,EAAOK,mBACApsC,KAAKwqC,YAAYqB,GACxB7rC,KAAKmpC,QAAQ,IAAIgB,EAAAkC,6BAA6BrsC,KAAK0qC,OAAQmB,IACpD7rC,KAAKssC,WAEhBjL,GAAIA,IAAcwK,EAClBU,KAAMA,IAA0CR,EAAOQ,UAGvE,CAEOJ,MAAAA,CAAON,GACNA,GAAe7rC,KAAKwqC,YAAYqB,KAChC7rC,KAAKwqC,YAAYqB,GAAaW,eACvBxsC,KAAKwqC,YAAYqB,GACxB7rC,KAAKmpC,QAAQ,IAAIgB,EAAAkC,6BAA6BrsC,KAAK0qC,OAAQmB,IAEnE,CAEO,aAAMS,GACT,IAAK,MAAMG,KAAYzsC,KAAKwqC,YACxB,GAAIiC,EAAU,CACV,MAAMV,EAAS/rC,KAAKwqC,YAAYiC,GAC5BV,GACAA,EAAOS,QAKnBxsC,KAAKmpC,QAAQ,IAAIgB,EAAAwC,oBAAoB3sC,KAAK0qC,SACtC1qC,KAAK0wC,+BAGC1wC,KAAK0wC,uBACX1wC,KAAK0wC,uBAAyB,YAG5B1wC,KAAK6xC,qBAGf,CAEA,UAAWjF,GACP,OAAO5sC,KAAK4qC,UAChB,CAEA,cAAWiC,GACP,OAAO7sC,KAAK8xC,qBAAqBhF,MAAMzkB,IAAa,CAE5C0kB,cAAemD,EAAeK,YAAYvD,cAC1CC,aAAciD,EAAeK,YAAYrD,SACzCC,aAAcjD,EAAAiD,aAAaC,QAC3BC,aAAc,aACdC,MAAOjlB,EACPklB,WAAY2C,EAAeK,YAAY/C,cACvC1oC,KAAMolC,EAAAplC,KAAKitC,eAGvB,CAEOC,WAAAA,CAAY9mC,EAAc9H,GAC7B,GAAI8H,IAAS0I,EAAAq+B,kCAGT,MAAM,IAAIl5B,MAAM,aAAe7N,EAAO,qCAFtClL,KAAKmwC,aAAa+B,cAAc9uC,EAIxC,CAEQ0uC,kBAAAA,GACJ,MAAMK,EAAgC,aAGtC,QAAiCrxC,IAA7Bd,KAAKoyC,oBACL,OAAO5G,QAAQU,QAAQlsC,KAAKoyC,qBAIhC,QAA6BtxC,IAAzBd,KAAKwwC,kBAAkCxwC,KAAKwwC,gBAAgB96B,OAC5D,OAAO81B,QAAQU,QAAQiG,GAI3BnyC,KAAKoyC,oBAAsBD,EAG3B,MAAME,EAA6BryC,KAAKwwC,gBAAgB8B,YAAY,GAAGC,cAAcnC,SAGrF,QAAItvC,IAAcuxC,EACd,OAAO7G,QAAQU,QAAQlsC,KAAKoyC,qBAGhC,MAAMI,EAA6B,IAAIrI,EAAAyD,SAcvC,OAXAkD,UAAUK,aAAasB,mBAAmB3F,MAAM4F,IAC5C,IAAK,MAAMC,KAAUD,EACjB,GAAIC,EAAOvC,WAAaiC,EAAoB,CAExCryC,KAAKoyC,oBAAsBO,EAAOtqB,MAClC,MAGRmqB,EAAStG,QAAQlsC,KAAKoyC,oBAAoB,IAC3C,IAAwBI,EAAStG,QAAQlsC,KAAKoyC,uBAE1CI,EAAStD,OACpB,CAEQ,YAAM0C,CAAO/F,SACX7rC,KAAKorC,SACX,MAAMW,EAAS,IAAI5B,EAAAkF,yBAAyBrvC,KAAKswC,oBAAqBzE,GACtE7rC,KAAKwqC,YAAYqB,GAAeE,EAChC,IACI/rC,KAAKmwC,aAAayC,OAAO5yC,KAAK0xC,YAAa1xC,KAAKwwC,gBAAiBzE,GACnE,MAAOp0B,GAEL,MADA3X,KAAKmpC,QAAQ,IAAIgB,EAAAiF,0BAA0BpvC,KAAK0qC,OAAQmB,EAAal0B,IAC/DA,EAGV,OADoCo0B,CAExC,CAEQ5C,OAAAA,CAAQvjB,GACZ5lB,KAAK4qC,WAAWzB,QAAQvjB,GACxBukB,EAAA8F,OAAOpP,SAASsI,QAAQvjB,EAC5B,CAEQ+qB,kBAAAA,GACE3wC,KAAK0xC,cAIX1xC,KAAK0xC,YAActH,EAAAyI,sBAAsBC,gBAAgB5C,EAAeK,YAAY/C,eACxF,CAEQ,yBAAMqE,GACV,IAAK7xC,KAAK0xC,YACN,OAGJ1xC,KAAKmwC,aAAa4C,sBAAsB/yC,KAAK0xC,aAK7C,IAAIsB,GAAoB,EACpB,UAAWhzC,KAAK0xC,cAChBsB,GAAW,GAGXA,EACKhzC,KAAKywC,gBAENzwC,KAAKywC,eAAgB,QACfzwC,KAAK0xC,YAAYlF,QACvBxsC,KAAK0xC,YAAc,KACnB1xC,KAAKywC,eAAgB,GAElB,OAASzwC,KAAK0xC,aAA0C,YAA3B1xC,KAAK0xC,YAAYntB,aAO/CvkB,KAAK0xC,YAAYuB,SAE/B,EA3SJr/B,EAAAA,eAAAs8B,EAE4BA,EAAAK,YAAqCnG,EAAAsE,kBAAkBwE,2HC3CnF,MAAAC,EAAAx/B,EAAA,MAGAC,EAAAA,YAAA,MAKI9G,WAAAA,CAAmBsmC,GACfpzC,KAAKqzC,uBAAyBD,CAClC,CAEOR,MAAAA,CAAOU,EAAuBjD,EAA0BkD,GAC3D,MAEMC,EAAoB,IAAIL,EAAAM,eAAeH,EAAQhF,WAF3B,MAIpBoF,EAAWJ,EAAQK,wBAAwBtD,GAE3CuD,EAAwBA,KAE1B,MAAMC,EAAa,MACf,IAAIC,EAAa,EACjB,IACI,OAAOR,EAAQS,sBAAsBD,EAAY,EAAG,GACtD,MAAOn8B,GAELm8B,EAAa,KACb,IAAIE,EAAkBV,EAAQhF,WAC9B,KAAOwF,EAAa,OAASE,GAAoB,MAC7CF,IAAe,EACfE,IAAoB,EAExB,OAAOV,EAAQS,sBAAsBD,EAAY,EAAG,GAE3D,EAdkB,GAenBD,EAAWI,eAAkBruB,IACzB,MAAMsuB,EAAatuB,EAAMuuB,YAAYC,eAAe,GAEpD,GAAIb,IAAiBA,EAAa7G,SAAU,CACxC,MAAM2H,EAAYb,EAAkBc,OAAOJ,GACrCG,GACFd,EAAa7D,iBAAiB,CAC1BxN,OAAQmS,EACR1E,OAAO,EACPC,aAAcC,KAAKC,UAKnC4D,EAASa,QAAQV,GACjBA,EAAWU,QAAQjB,EAAQkB,aAC3Bx0C,KAAKy0C,mBAAqB,CACtBC,oBAAqBb,EACrBtV,OAAQmV,EACR3H,OAAQsE,EACX,EAKCsE,IAAqB30C,KAAK40C,2BAA8E,WAAjD50C,KAAK40C,0BAA0BxjC,cAE5F,GAAMkiC,EAAQuB,eAAiBF,EAAkB,CAC7C,IAAK30C,KAAK40C,0BAA2B,CACjC,MAeME,EAAO,IAAI/J,KAAK,CAfA,gpBAeiB,CAAEjmC,KAAM,0CAC/C9E,KAAK40C,0BAA4BtR,IAAIyR,gBAAgBD,GAGzDxB,EAAQuB,aACHG,UAAUh1C,KAAK40C,2BACf9H,MAAK,KACF,MAAMmI,EAAc,IAAIC,iBAAiB5B,EAAS,oBAClD2B,EAAYE,KAAKC,UAAarF,IAC1B,MAAMmE,EAA2BnE,EAAGsF,KAEpC,GAAI9B,IAAiBA,EAAa7G,SAAU,CACxC,MAAM2H,EAAYb,EAAkBc,OAAOJ,GACrCG,GACFd,EAAa7D,iBAAiB,CAC1BxN,OAAQmS,EACR1E,OAAO,EACPC,aAAcC,KAAKC,UAKnC4D,EAASa,QAAQU,GACjBA,EAAYV,QAAQjB,EAAQkB,aAC5Bx0C,KAAKy0C,mBAAqB,CACtBC,oBAAqBO,EACrB1W,OAAQmV,EACR3H,OAAQsE,EACX,IAEJkB,OAAM,KACHqC,GAAuB,SAG/B,IACIA,IACF,MAAO0B,GACL,MAAM,IAAIv8B,MAAM,uDAAuDu8B,KAGnF,CAEOvC,qBAAAA,CAAsBO,GACrBtzC,KAAKy0C,qBACDz0C,KAAKy0C,mBAAmBC,sBACxB10C,KAAKy0C,mBAAmBC,oBAAoBa,WAAWjC,EAAQkB,aAC/Dx0C,KAAKy0C,mBAAmBC,oBAAsB,MAE9C10C,KAAKy0C,mBAAmBlW,SACxBv+B,KAAKy0C,mBAAmBlW,OAAOgX,aAC3Bv1C,KAAKqzC,wBACLrzC,KAAKy0C,mBAAmB1I,OAAOuG,YAAY/wC,SAASi0C,GAAkCA,EAAMC,SAEhGz1C,KAAKy0C,mBAAmBlW,OAAS,MAG7C,CAEO2T,aAAAA,CAAcjtB,GACjBjlB,KAAK40C,0BAA4B3vB,CACrC,oGC3IJ,MAAAilB,EAAAv2B,EAAA,MAEA,MAAa+hC,EAMT5oC,WAAAA,CAAoB6oC,EAAuBC,EAAmBC,EAAuBC,GACjF91C,KAAK+1C,kBAAoBJ,EACzB31C,KAAKg2C,cAAgBJ,EACrB51C,KAAKi2C,kBAAoBJ,EACzB71C,KAAKk2C,kBAAoBJ,CAC7B,CAEO,qBAAOK,CAAeC,GACzB,OAAO,IAAIV,EAAUU,EAAWC,YAAYnM,EAAAoM,WAAWC,uCACnDjsB,SAAS8rB,EAAWC,YAAYnM,EAAAoM,WAAWE,mCAAoC,IAC/EJ,EAAWC,YAAYnM,EAAAoM,WAAWG,uCAClCL,EAAWC,YAAYnM,EAAAoM,WAAWI,uCAC1C,CAEO,2BAAOC,CAAqBvb,GAC/B,OAAOp7B,KAAKm2C,eAAe/a,EAAOgb,WACtC,CAEA,YAAWQ,GACP,OAAO52C,KAAK+1C,iBAChB,CAEA,QAAWc,GACP,OAAO72C,KAAKg2C,aAChB,CAEA,YAAWc,GACP,OAAO92C,KAAKi2C,iBAChB,CAEA,YAAWc,GACP,OAAO/2C,KAAKk2C,iBAChB,EAtCJtiC,EAAAA,UAAA8hC,2GCGA9hC,EAAAA,oBAAA,MAYI9G,WAAAA,CAAmBkqC,EAA+BC,GAT1C,KAAAC,YAA6B,GAC7B,KAAAC,iBAA2B,EAC3B,KAAAC,qBAA+B,EAC/B,KAAAC,sBAAgC,EAChC,KAAAC,iBAA2B,EAC3B,KAAAC,kBAA4B,EAC5B,KAAAC,YAAsB,EACtB,KAAAC,0BAAoC,EAGxCz3C,KAAK03C,cAAgBV,EACrBh3C,KAAK23C,mBAAqBV,CAC9B,CAEO5V,EAAAA,GACH,OAAOrhC,KAAK03C,cAAcrW,IAC9B,CAMOkL,IAAAA,GAEH,GAAMvsC,KAAKw3C,YAA0C,IAA5Bx3C,KAAKk3C,YAAY72C,OAAc,CAIpD,MAAMu3C,EAAuB53C,KAAKm3C,iBAAmBn3C,KAAKq3C,sBAE1D,IAAIQ,EAAsBh1C,KAAK4X,MAAMm9B,EAAe53C,KAAK23C,mBAAqB,MAC1E,IAAOE,EAAc,GACrBA,IAGJ,IAAI51C,EAAY,EAEhB,KAAOA,EAAIjC,KAAKk3C,YAAY72C,QAAUw3C,GAAe73C,KAAKk3C,YAAYj1C,GAAGstC,MAAMrN,OAAO+M,YAClF4I,GAAe73C,KAAKk3C,YAAYj1C,KAAKstC,MAAMrN,OAAO+M,WAGtD,GAAIhtC,EAAIjC,KAAKk3C,YAAY72C,OAAQ,CAC7B,MAAMy3C,EAAsB93C,KAAKk3C,YAAYj1C,GAAGstC,MAAMrN,OAAOj+B,MAAM4zC,GASnE,OAPA73C,KAAKm3C,kBAAqBW,EAAO7I,WAAajvC,KAAK23C,mBAAsB,IAGrE11C,IAAMjC,KAAKk3C,YAAY72C,OAAS,IAChCL,KAAKw3C,YAAa,GAGfhM,QAAQU,QAAmC,CAC9ChK,OAAQ4V,EACRnI,OAAO,EACPC,aAAc5vC,KAAKk3C,YAAYj1C,GAAGstC,MAAMK,gBAKpD,OAAO5vC,KAAK03C,cAAcnL,OACrBO,MAAMz6B,IACCA,GAAUA,EAAO6vB,SACjBliC,KAAKk3C,YAAYt2C,KAAK,IAAIm3C,EAAY1lC,EAAQrS,KAAKs3C,mBAAoBt3C,KAAKu3C,oBAC5Ev3C,KAAKu3C,mBAAqBllC,EAAO6vB,OAAO+M,YAErC58B,IAEnB,CAEO85B,MAAAA,GAEH,OADAnsC,KAAKk3C,iBAAcp2C,EACZd,KAAK03C,cAAcvL,QAC9B,CAEO6L,MAAAA,GACCh4C,KAAKk3C,aAAe,IAAMl3C,KAAKk3C,YAAY72C,SAC3CL,KAAKw3C,YAAa,EAClBx3C,KAAKm3C,iBAAmBn3C,KAAKo3C,qBAErC,CAKOa,aAAAA,CAAc5wC,GACjB,QAAyBvG,IAArBd,KAAKk3C,aAAyD,IAA5Bl3C,KAAKk3C,YAAY72C,OACnD,OAGJL,KAAKo3C,qBAAuB/vC,EAK5B,MAAMuwC,EAAuBvwC,EAASrH,KAAKq3C,sBAE3C,IAAIQ,EAAsBh1C,KAAK4X,MAAMm9B,EAAe53C,KAAK23C,mBAAqB,MAE1E11C,EAAY,EAEhB,KAAOA,EAAIjC,KAAKk3C,YAAY72C,QAAUw3C,GAAe73C,KAAKk3C,YAAYj1C,GAAGstC,MAAMrN,OAAO+M,YAClF4I,GAAe73C,KAAKk3C,YAAYj1C,KAAKstC,MAAMrN,OAAO+M,WAEtDjvC,KAAKq3C,sBAAwBx0C,KAAK4X,MAAMpT,EAAWwwC,EAAc73C,KAAK23C,mBAAsB,KAC5F33C,KAAKk3C,YAAcl3C,KAAKk3C,YAAYjzC,MAAMhC,EAC9C,CAGOi2C,gBAAAA,CAAiB7wC,GACpB,GAAIA,EAASrH,KAAKq3C,4BAA8Cv2C,IAArBd,KAAKk3C,YAC5C,OAAO,EAGX,IAAK,MAAM9zC,KAASpD,KAAKk3C,YAAa,CAClC,MAAMiB,EAAuB/0C,EAAM4rC,WAAahvC,KAAK23C,mBAAsB,IACrES,EAAoBD,EAAgB/0C,EAAMmsC,MAAMrN,OAAO+M,WAAajvC,KAAK23C,mBAAsB,IAErG,GAAItwC,GAAU8wC,GAAe9wC,GAAU+wC,EACnC,OAAOh1C,EAAMmsC,MAAMK,aAI3B,OAAO,CACX,GAMJ,MAAMmI,EAKFjrC,WAAAA,CAAmByiC,EAAkC8I,EAAgBrJ,GACjEhvC,KAAKuvC,MAAQA,EACbvvC,KAAKq4C,OAASA,EACdr4C,KAAKgvC,WAAaA,CACtB,uGCxHJ,MAAasJ,EAEF,yBAAWC,GACd,OAAOD,EAAeE,yBAC1B,CAEO,uBAAWC,GACd,OAAOH,EAAeI,iBAC1B,CAEO,qBAAWC,GACd,OAAOL,EAAeM,cAC1B,EAZJhlC,EAAAA,eAAA0kC,EAc4BA,EAAAE,0BAA6C,CACjE7V,QAAS,CACLkW,OAAQ,oBAEZC,aAAa,EACbnb,QAAS,KAGW2a,EAAAM,eAAiC,CACrDG,2BAA4B,kGAC5BC,8BAA+B,uDAC/BC,YAAa,mCACbC,sCAAuC,2DACvCC,0BAA2B,2CAC3BC,wBAAyB,kCACzBC,6BAA8B,mEAC9BC,4BAA6B,gEAC7BC,qBAAsB,mEACtBC,sBAAuB,+DAGHlB,EAAAI,kBAAiC,CACrDe,WAAY,cACZC,cAAe,gBACfC,YAAa,gBACbC,eAAgB,eAChBC,cAAe,kBACfC,aAAc,WACdC,SAAU,WACVC,UAAW,YACXC,UAAW,cACXC,OAAQ,SACRC,aAAc,QACdC,gBAAiB,4BACjBC,mBAAoB,+BACpB90C,MAAO,uOC5Ef,MAAA+0C,EAAAC,EAAA5mC,EAAA,OACAu2B,EAAAv2B,EAAA,MAMA,IAAY6mC,GAAZ,SAAYA,GACRA,EAAA,UACAA,EAAA,YACAA,EAAA,gBACAA,EAAA,WACH,CALD,CAAYA,EAAA5mC,EAAA4mC,kBAAA5mC,EAAAA,gBAAe,KAuB3BA,EAAAA,mBAAA,MAKI9G,WAAAA,CACI2rC,GAGA,IAAKA,EACD,MAAM,IAAIvO,EAAAuQ,kBAAkB,gBAGhCz6C,KAAK06C,YAAcjC,EAAa9V,QAChC3iC,KAAK26C,gBAAkBlC,EAAaK,WACxC,CAEO,yBAAO8B,CAAmBC,EAAmBlY,GAChD,IAAImY,EAAsB,GAE1B,IACI,MAAMC,EAAMpY,EAAQx/B,OAAOmH,MAAM,WAC3B0wC,EAAuC,CAAC,EAC9CD,EAAIx5C,SAAS+C,IACT,MAAM22C,EAAQ32C,EAAKgG,MAAM,MACnBojC,EAASuN,EAAMpwB,QAAQzZ,cACvBhO,EAAQ63C,EAAMp0C,KAAK,MACzBm0C,EAAUtN,GAAUtqC,CAAK,IAG7B03C,EAAcE,EAAUH,EAAUzpC,eACpC,MAAO7O,GACL,CAGJ,OAAOu4C,CACX,CAEA,WAAWh7C,CAAQ24C,GACfz4C,KAAK06C,YAAcjC,EAAa9V,QAChC3iC,KAAK26C,gBAAkBlC,EAAaK,WACxC,CAEOoC,UAAAA,CAAWh6C,EAAakC,GAC3BpD,KAAK06C,YAAYx5C,GAAOkC,CAC5B,CAEO+3C,OAAAA,CACHpY,EACAqY,GAEgB,IADhBC,EAAA9tC,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAsC,CAAC,EACvC61B,EAAA71B,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAY,KAGZ,MAAM+tC,EAA2B,IAAIpR,EAAA0D,SAE/B2N,EAAiBxY,IAAWyX,EAAgB/M,KAAO,OAAS1K,EAC5DyY,EAAqB,SAACnG,GAAwD,IAApCntC,EAAAqF,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAe,CAAC,EAC5D,MAAM0G,EAAqDohC,EAC3D,MAAO,CACHA,KAAMp8B,KAAKtS,UAAUuB,GACrBy6B,QAAS1pB,KAAKtS,UAAU0uC,EAAK1S,SAC7BF,KAAMv6B,EACNuzC,GAAIpG,EAAK9S,YAAc,KAAO8S,EAAK9S,WAAa,IAChDC,OAAQ6S,EAAK9S,WACbmZ,WAAYxzC,EAAEyP,MAAQzP,EAAEyP,MAAM0qB,QAAUpuB,EAAEynC,WAAaznC,EAAEynC,WAAaznC,EAAEquB,cAEhF,EA+BA,OATItiC,KAAK26C,kBACL36C,KAAK06C,YAAY,iBAAmB,YAGpC3X,IAAWyX,EAAgBmB,MAAQvY,IACnCpjC,KAAK06C,YAAY,gBAAkB,mBACnC16C,KAAK06C,YAAY,gBAAkB,oBA1BzBkB,KACUtB,EAAAvmC,QAAKqnC,EAAKG,EAAgBv7C,KAAK06C,YAAa,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAExGmB,CADiD,KAAlC77C,KAAKq7C,YAAYA,GAAsB,GAAK,IAAIr7C,KAAKq7C,YAAYA,KAC5DO,GAAU9O,MAAM5J,UAChC,GAAIH,IAAWyX,EAAgBsB,QAA8B,MAApBzG,EAAK9S,WAE1C+Y,EAAyBpP,QAAQsP,EAAmBnG,SAEpD,IACI,MAAMntC,QAAqBmtC,EAAK5S,OAChC6Y,EAAyBpP,QAAQsP,EAAmBnG,EAAMntC,IAC5D,MACEozC,EAAyBpP,QAAQsP,EAAmBnG,QAG7D9D,OAAO55B,IACN2jC,EAAyB7P,OAAO9zB,EAAM,GACxC,EAWNokC,CAAK3Y,GACEkY,EAAyBpM,OACpC,CAEQmM,WAAAA,GAAkD,IAAtC5e,EAAAlvB,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAoC,CAAC,EACrD,OAAOrK,OAAOkkB,KAAKqV,GACdnzB,KAAKnB,GAAsBu2B,mBAAmBv2B,GAAK,IAAMu2B,mBAAmBjC,EAAOt0B,MACnFtB,KAAK,IACd,8GCvIJ,MAAAqjC,EAAAv2B,EAAA,MAaAqoC,EAAAroC,EAAA,MAEAC,EAAAA,oBAAA,MAQI9G,WAAAA,CACIsuC,EACAa,EACAtZ,EACAuZ,EACAC,GAEqB,IADrBC,EAAA7uC,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,IAAAA,UAAA,GACA8uC,EAAqB9uC,UAAAlN,OAAA,EAAAkN,UAAA,QAAAzM,EAErB,GAXI,KAAAw7C,gBAA0B,GAWzBlB,EACD,MAAM,IAAIlR,EAAAuQ,kBAAkB,OAGhC,IAAKyB,EACD,MAAM,IAAIhS,EAAAuQ,kBAAkB,oBAGhCz6C,KAAKu8C,qBAAuBL,EAE5B,IAAIb,EAAc,GACdp5C,EAAI,EAER,GAAIg6C,EACA,IAAK,MAAMO,KAAaP,EACpB,GAAIO,EAAW,CACXnB,GAAuB,IAANp5C,IAAmC,IAAtBm5C,EAAI13C,QAAQ,KAAgB,IAAM,IAGhE23C,GADY3c,mBAAmB8d,GAG/B,IAAIvxB,EAAMgxB,EAAgBO,GACtBvxB,IACAA,EAAMyT,mBAAmBzT,GACzBowB,GAAe,IAAIpwB,KAGvBhpB,IAKZ,GAAI0gC,EACA,IAAK,MAAM8Z,KAAc9Z,EACrB,GAAI8Z,EAAY,CACZpB,GAAuB,IAANp5C,IAAmC,IAAtBm5C,EAAI13C,QAAQ,KAAgB,IAAM,IAEhE23C,GAAe,GAAGoB,KADN/d,mBAAmBiE,EAAQ8Z,MAEvCx6C,IAKZjC,KAAK08C,QAAUtB,EAAMC,EACrBr7C,KAAK0qC,OAAS2R,GAA8BnS,EAAAS,mBAE5C3qC,KAAK28C,6BAA+B,IAAIX,EAAAY,wBACpC58C,KAAK08C,QACL18C,KAAKqhC,GACLrhC,KAAKu8C,qBACLJ,EACAxZ,EACAyZ,EACR,CAEO,aAAMS,GACT78C,KAAKs8C,gBAAiB,EAElBt8C,KAAK28C,oCACC38C,KAAK28C,6BAA6BnQ,OAEhD,CAEOsQ,UAAAA,GACH,OAAO98C,KAAKs8C,cAChB,CAEA,MAAWjb,GACP,OAAOrhC,KAAK0qC,MAChB,CAEA,OAAW0Q,GACP,OAAOp7C,KAAK08C,OAChB,CAEOn4B,KAAAA,GACH,OAAOvkB,KAAK28C,6BAA6Bp4B,KAC7C,CAEO0a,IAAAA,GACH,OAAOj/B,KAAK28C,6BAA6B1d,MAC7C,CAEO8c,IAAAA,CAAK1Z,GACR,OAAOriC,KAAK28C,6BAA6BZ,KAAK1Z,EAClD,CAEOkK,IAAAA,GACH,OAAOvsC,KAAK28C,6BAA6BpQ,MAC7C,CAEA,UAAWK,GACP,OAAO5sC,KAAK28C,6BAA6B/P,MAC7C,2tBC1HJ,MAAAmQ,EAAA3U,EAAAz0B,EAAA,OACAqpC,EAAA5U,EAAAz0B,EAAA,OACAspC,EAAA1C,EAAA5mC,EAAA,OACAupC,EAAA3C,EAAA5mC,EAAA,OAEAwpC,EAAA5C,EAAA5mC,EAAA,OACAypC,EAAAzpC,EAAA,MACAu2B,EAAAv2B,EAAA,MA6BA,MAAaipC,EAoBT9vC,WAAAA,CACIsuC,EACAiB,EACAH,EACAC,EACAxZ,EACAyZ,GAEA,IAAKhB,EACD,MAAM,IAAIlR,EAAAuQ,kBAAkB,OAGhC,IAAKyB,EACD,MAAM,IAAIhS,EAAAuQ,kBAAkB,oBAGhCz6C,KAAKm8C,UAAYA,EACjBn8C,KAAKq9C,qBAAuB,IAAInT,EAAAW,YAChC7qC,KAAKs9C,iBAAmBjB,EACxBr8C,KAAKu8C,qBAAuBL,EAC5Bl8C,KAAKu9C,oBAAsBrT,EAAAsT,gBAAgB/U,KAC3CzoC,KAAK08C,QAAUtB,EACfp7C,KAAK06C,YAAc/X,EACnB3iC,KAAKy9C,sBAAwBrB,EAG7Bp8C,KAAK06C,YAAY0C,EAAAM,YAAYC,cAAgB39C,KAAKs9C,iBAElDt9C,KAAK49C,sBAAwB,EACjC,CAEA,SAAWr5B,GACP,OAAOvkB,KAAKu9C,mBAChB,CAEOte,IAAAA,GACH,GAAIj/B,KAAKu9C,sBAAwBrT,EAAAsT,gBAAgBK,aAC7C,OAAOrS,QAAQC,OAA+B,uCAAuCzrC,KAAKu9C,6BAG9F,GAAIv9C,KAAK89C,gCACL,OAAO99C,KAAK89C,gCAAgC5O,QAGhDlvC,KAAK89C,gCAAkC,IAAI5T,EAAA0D,SAC3C5tC,KAAK+9C,iCAAmC,IAAI7T,EAAA0D,SAE5C5tC,KAAKu9C,oBAAsBrT,EAAAsT,gBAAgBQ,WAE3C,IAEI,GAAyB,qBAAdC,WAA8BrB,EAAwBsB,kBAK1D,CACH,MAAMp+C,EAA4B,CAAE6iC,QAAS3iC,KAAK06C,YAAayD,kBAAmBn+C,KAAKy9C,uBAEvFz9C,KAAK+9C,iCAAiC7R,UAEtCpsC,EAAQs+C,MAAQp+C,KAAKq+C,WAIrB,IAAI3a,EADQ,IAAIJ,IAAItjC,KAAK08C,SACEhZ,SAEW,SAAlCA,GAAU4a,oBACV5a,EAAW,SAC8B,QAAlCA,GAAU4a,sBACjB5a,EAAW,SAGd5jC,EAAQs+C,MAAc1a,SAAWA,EAClC1jC,KAAKu+C,oBAAsB,IAAIpB,EAAAppC,QAAG/T,KAAK08C,QAAS58C,QArBhDE,KAAK+9C,iCAAiC7R,UAEtClsC,KAAKu+C,oBAAsB,IAAIN,UAAUj+C,KAAK08C,SAsBlD18C,KAAKu+C,oBAAoBC,WAAa,cACtCx+C,KAAKy+C,0BAA4B,IAAIvU,EAAAwU,MACrC1+C,KAAK2+C,uBAAyB,IAAIzU,EAAA0D,SAClC5tC,KAAK4+C,qBAAuB,IAAI1U,EAAAwU,MAChC1+C,KAAK6+C,mBAAmBtN,OAAOhuB,IAC3B2mB,EAAA+F,OAAOpP,SAASsI,QAAQ,IAAIe,EAAA4U,gBAAgBv7B,GAAQ,IAE1D,MAAO5L,GAEL,OADA3X,KAAK89C,gCAAgC5R,QAAQ,IAAIhC,EAAA6U,uBAAuB,IAAKpnC,IACtE3X,KAAK89C,gCAAgC5O,QAoEhD,OAjEAlvC,KAAKmpC,QAAQ,IAAIe,EAAA8U,qBAAqBh/C,KAAKs9C,iBAAkBt9C,KAAK08C,UAElE18C,KAAKu+C,oBAAoBU,OAAS,KAC9Bj/C,KAAK+9C,iCAAiC7O,QAAQpC,MAAK,KAC/C9sC,KAAKu9C,oBAAsBrT,EAAAsT,gBAAgB0B,UAC3Cl/C,KAAKmpC,QAAQ,IAAIe,EAAAiV,2BAA2Bn/C,KAAKs9C,mBACjDt9C,KAAK89C,gCAAgC5R,QAAQ,IAAIhC,EAAA6U,uBAAuB,IAAK,IAAI,IACjFpnC,IACA3X,KAAK89C,gCAAgCrS,OAAO9zB,EAAM,GACpD,EAGN3X,KAAKu+C,oBAAoBpP,QAAW5sC,IAChCvC,KAAKmpC,QAAQ,IAAIe,EAAAkV,qBAAqBp/C,KAAKs9C,iBAAkB/6C,EAAE8/B,QAAS9/B,EAAEuC,OAC1E9E,KAAK49C,sBAAwBr7C,EAAE8/B,OAAO,EAG1CriC,KAAKu+C,oBAAoBc,QAAW98C,IAC5BvC,KAAKu9C,sBAAwBrT,EAAAsT,gBAAgBQ,YAC7Ch+C,KAAKu9C,oBAAsBrT,EAAAsT,gBAAgBK,aAE3C79C,KAAK89C,gCAAgC5R,QAAQ,IAAIhC,EAAA6U,uBAAuBx8C,EAAEk8B,KAAMl8B,EAAEghB,OAAS,IAAMvjB,KAAK49C,0BAEtG59C,KAAKu9C,oBAAsBrT,EAAAsT,gBAAgBK,aAC3C79C,KAAKu+C,oBAAsB,KAC3Bv+C,KAAKmpC,QAAQ,IAAIe,EAAAoV,sBAAsBt/C,KAAKs9C,iBAAkB/6C,EAAEk8B,KAAMl8B,EAAEghB,UAG5EvjB,KAAKu/C,QAAQh9C,EAAEk8B,KAAMl8B,EAAEghB,QAAQguB,OAAOhuB,IAClC2mB,EAAA+F,OAAOpP,SAASsI,QAAQ,IAAIe,EAAA4U,gBAAgBv7B,GAAQ,GACtD,EAGNvjB,KAAKu+C,oBAAoBnJ,UAAa7yC,IAClC,MAAMi9C,GAAsB,IAAI3P,MAAO4P,cACvC,GAAIz/C,KAAKu9C,sBAAwBrT,EAAAsT,gBAAgB0B,UAAW,CACxD,MAAM1M,EAAW,IAAItI,EAAA0D,SAGrB,GADA5tC,KAAKy+C,0BAA0BiB,mBAAmBlN,EAAStD,SACvD3sC,EAAE8yC,gBAAgBxR,YAAa,CAC/B,MAAM8b,EAAa,IAAIzV,EAAA0V,oBAAoB1V,EAAA2V,YAAYC,OAAQv9C,EAAE8yC,MACjEr1C,KAAKu8C,qBACAwD,oBAAoBJ,GACpB7S,MAAMkT,IACHhgD,KAAKmpC,QAAQ,IAAIe,EAAA+V,+BAA+BjgD,KAAKs9C,iBAAkBkC,EAAqBQ,IAC5FxN,EAAStG,QAAQ8T,EAAkB,IACnCroC,IAEA66B,EAAS/G,OAAO,yCAAyC9zB,IAAQ,QAEtE,CACH,MAAMgoC,EAAa,IAAIzV,EAAA0V,oBAAoB1V,EAAA2V,YAAYK,KAAM39C,EAAE8yC,MAC/Dr1C,KAAKu8C,qBACAwD,oBAAoBJ,GACpB7S,MAAMkT,IACHhgD,KAAKmpC,QAAQ,IAAIe,EAAA+V,+BAA+BjgD,KAAKs9C,iBAAkBkC,EAAqBQ,IAC5FxN,EAAStG,QAAQ8T,EAAkB,IACnCroC,IAEA66B,EAAS/G,OAAO,uCAAuC9zB,IAAQ,OAM5E3X,KAAK89C,gCAAgC5O,OAChD,CAEO6M,IAAAA,CAAK1Z,GACR,GAAIriC,KAAKu9C,sBAAwBrT,EAAAsT,gBAAgB0B,UAC7C,OAAO1T,QAAQC,OAAO,wCAAwCvB,EAAAsT,gBAAgBx9C,KAAKu9C,8BAGvF,MAAM4C,EAA4B,IAAIjW,EAAA0D,SAChCwS,EAAsB,IAAIlW,EAAA0D,SAgBhC,OAdA5tC,KAAK4+C,qBAAqBc,mBAAmBU,EAAoBlR,SAEjElvC,KAAKu8C,qBACA8D,sBAAsBhe,GACtByK,MAAM6S,IACHS,EAAoBlU,QAAQ,CACxBoU,QAASje,EACTud,oBAAqBD,EACrBY,mBAAoBJ,GACtB,IACFxoC,IACAyoC,EAAoB3U,OAAO,iCAAiC9zB,IAAQ,IAGrEwoC,EAA0BjR,OACrC,CAEO3C,IAAAA,GACH,OAAIvsC,KAAKu9C,sBAAwBrT,EAAAsT,gBAAgB0B,UACtC1T,QAAQC,OAA0B,wCAAwCzrC,KAAKu9C,6BAGnFv9C,KAAKy+C,0BAA0B+B,SAC1C,CAEOhU,KAAAA,CAAMjpB,GACT,OAAIvjB,KAAKu+C,qBACDv+C,KAAKu9C,sBAAwBrT,EAAAsT,gBAAgBK,cAC7C79C,KAAKu+C,oBAAoB/R,MAAM,IAAMjpB,GAAkB,4BAMxDvjB,KAAK2+C,uBAAuBzP,SAHxB1D,QAAQU,SAIvB,CAEA,UAAWU,GACP,OAAO5sC,KAAKq9C,oBAChB,CAEQoD,cAAAA,CAAeC,GACnB,IAEI,OAAKA,GAIL1gD,KAAKmpC,QAAQ,IAAIe,EAAAyW,2BAA2B3gD,KAAKs9C,kBAAkB,IAAIzN,MAAO4P,cAAeiB,EAASJ,UAGlGtgD,KAAK4gD,iBAEL5gD,KAAKu+C,oBAAoBxC,KAAK2E,EAASd,oBAAoBiB,SAIxDrV,QAAQU,WAFJV,QAAQC,OAAO,6CAA+CzrC,KAAKs9C,iBAAmB,IAAMoD,EAASJ,QAAQjf,GAAK,KAAM,IAAItoB,OAAQ+nC,QAVpItV,QAAQU,UAcrB,MAAO3pC,GACL,OAAOipC,QAAQC,OAAO,yBAAyBlpC,KAEvD,CAEQ,aAAMg9C,CAAQ9gB,EAAclb,GAChC,MAAMw9B,EAAc,sBAAsBtiB,MAASlb,IACnDvjB,KAAKu9C,oBAAsBrT,EAAAsT,gBAAgBK,aAC3C79C,KAAK2+C,uBAAuBzS,gBACtBlsC,KAAKy+C,0BAA0BuC,iBAAgB,QAGlDD,SAEG/gD,KAAK4+C,qBAAqBoC,iBAAiBC,IAC7CA,EAAgBV,mBAAmB9U,OAAOsV,EAAY,GACvDA,EACP,CAEQ,sBAAMlC,GACV,OAAa,CACT,MAAMqC,EAAiClhD,KAAK4+C,qBAAqB4B,UAC3DE,QAA4BQ,EAElC,IAAKR,EACD,OAGJ,UACU1gD,KAAKygD,eAAeC,GAC1BA,EAASH,mBAAmBrU,UAC9B,MAAOiV,GACLT,EAASH,mBAAmB9U,OAAO0V,IAG/C,CAEQhY,OAAAA,CAAQvjB,GACZ5lB,KAAKq9C,qBAAqBlU,QAAQvjB,GAClCskB,EAAA+F,OAAOpP,SAASsI,QAAQvjB,EAC5B,CAGQy4B,QAAAA,GAEJ,MAAMD,EAAkC,IAAInB,EAAAlpC,QAAMqtC,MAAMphD,KAAKqhD,kBAQ7D,YANuBvgD,IAAnBd,KAAKm8C,gBACuBr7C,IAA5Bd,KAAKm8C,UAAUvF,UACf52C,KAAKm8C,UAAUtF,KAAO,IACtBuH,EAAMjC,UAAYn8C,KAAKm8C,WAGpBiC,CACX,CAEQ,oBAAOkD,CAAcnF,GACzB,MAAMoF,EAA2D,CAC7D5d,KAAMwY,EAAUvF,SAChBzB,KAAMgH,EAAUtF,MAGdsF,EAAUrF,SACZyK,EAAiB5e,QAAU,CACvB,uBAAwB,SAAW,IAAI6e,OAAO,GAAGrF,EAAUrF,iBAAoCh2C,IAAvBq7C,EAAUpF,SAA0B,GAAKoF,EAAUpF,YAAYjpC,SAAS,WAGpJyzC,EAAiB5e,QAAU,CAAC,EAGhC4e,EAAiB5e,QAAQ8e,YAAc,OAGvC,OADwC,IAAIvE,EAAAnpC,QAAgBwtC,EAEhE,CAEQF,gBAAAA,CAAiBlG,EAA8Br7C,GACnD,IAAI4hD,EAUJ,GARA5hD,EAAU,IACHA,EAEC2hD,aAAa,EACbE,WAAY7hD,EAAQ6jC,MAItB3jC,KAAKm8C,UAAW,CAClB,MACMyF,EADkChF,EAAwB0E,cAActhD,KAAKm8C,WAGnFuF,EAAgB,IAAIlW,SAAoB,CAACU,EAAsCT,KAC3EmW,EAAUn7C,SAAS00C,EAASr7C,GAAS,CAAC6X,EAAckqC,KAC1ClqC,EACF8zB,EAAO9zB,GAEPu0B,EAAQ2V,KAEd,SAIFH,EADE5hD,EAAQgiD,eACMtW,QAAQU,QAAQ8Q,EAAIzI,QAAQz0C,IAE5B0rC,QAAQU,QAAQ6Q,EAAIxI,QAAQz0C,IAIpD,OAAO4hD,CACX,CAEA,mBAAYd,GACR,OAAO5gD,KAAKu+C,qBAAuBv+C,KAAKu+C,oBAAoBwD,aAAe/hD,KAAKu+C,oBAAoByD,IACxG,EArWJpuC,EAAAA,wBAAAgpC,EAkBkBA,EAAAsB,mBAA6B,qGCnD/CtqC,EAAAA,cAAA,MAUI9G,WAAAA,CAAmBm1C,EAA2CC,GAC1DliD,KAAKiiD,UAAYA,EACjBjiD,KAAKkiD,WAAaA,CACtB,oGChBJtuC,EAAAA,YAAA,MAGWuuC,YAAAA,GACH,OAAOlpC,KAAKtS,UAAU3G,KAAKoiD,YAC/B,CAEOr5C,GAAAA,GACH,OAAO/I,KAAKoiD,WAChB,CAMOp5C,GAAAA,CAAI5F,GACPpD,KAAKoiD,YAAch/C,CACvB,iHCpBJ,MAAA8mC,EAAAv2B,EAAA,MAOAw2B,EAAAx2B,EAAA,MASA,MAAa0uC,UAA+BlY,EAAAmY,qBAIxCx1C,WAAAA,CACIy1C,EACAC,EACAC,EACAC,EACAC,GAGAxgB,MAAMogB,EAAgBC,EAClBC,OAAmB3hD,GACvBd,KAAK4iD,sBAAwBF,EAC7B1iD,KAAK6iD,gBAAkBH,EACvB1iD,KAAK8iD,iBAAmBH,CAC5B,CAEUI,mCAAAA,GACN/iD,KAAKgjD,qBAAqBC,yBAAoBniD,EAClD,CAEUoiD,+BAAAA,GACNljD,KAAKmjD,sBAAsBC,sBAAwB,CAC/CjY,OAAQ,CACJkY,QAASrjD,KAAK8iD,iBAAiBQ,aAAaD,QAC5CE,MAAOvjD,KAAK8iD,iBAAiBQ,aAAaC,MAC1CC,KAAM,CACFC,YAAa,CACTr7C,EAAGpI,KAAK8iD,iBAAiBQ,aAAaI,WAAWD,aAAar7C,EAC9DC,EAAGrI,KAAK8iD,iBAAiBQ,aAAaI,WAAWD,aAAap7C,GAElEs7C,QAAS,CACLv7C,EAAGpI,KAAK8iD,iBAAiBQ,aAAaI,WAAWC,SAASv7C,EAC1DC,EAAGrI,KAAK8iD,iBAAiBQ,aAAaI,WAAWC,SAASt7C,IAGlEu7C,WAAY,CACRjnC,OAAQ3c,KAAK8iD,iBAAiBQ,aAAa3mC,OAC3C4E,MAAOvhB,KAAK8iD,iBAAiBQ,aAAa/hC,QAGlDmiB,SAAU,CACNx4B,KAAM,SACN24C,aAAc,CACVC,kBAAmBrgB,KAAKzjC,KAAKmjD,sBAAsB/M,WAAWC,YAAYnM,EAAAoM,WAAWyN,kCACrFC,WAAYhkD,KAAK4iD,sBAAsBoB,aAG/CC,cAAe,CACX3uC,WAAY,CACRoD,MAAO1Y,KAAK8iD,iBAAiB5rB,iBAEjCzyB,UAAWzE,KAAK8iD,iBAAiBr+C,UACjCy/C,WAAYlkD,KAAK8iD,iBAAiBoB,WAClC33B,MAAOvsB,KAAK8iD,iBAAiBv2B,OAGzC,CAGU43B,aAAAA,CAAcC,GACpB,GAAMpkD,KAAK4iD,sBAAsByB,oBAAqB,CAClD,MAAMC,EAAmC,IAAIpa,EAAAqa,gBACzCH,EAASI,KAAKC,OACdL,EAASI,KAAKE,MAClB,IACI1kD,KAAK4iD,sBAAsByB,oBAAoBrkD,KAAK4iD,sBAAuB0B,GAC7E,MAAO3sC,GAEL,EAGZ,EA1EJ/D,EAAAA,uBAAAyuC,gIChBA,MAAAnY,EAAAv2B,EAAA,MAGAypC,EAAAzpC,EAAA,MACAgxC,EAAAhxC,EAAA,MAQAC,EAAAA,uCAAA,MAQI9G,WAAAA,CAAmBstC,GACf,IAAKA,EACD,MAAM,IAAIlQ,EAAAuQ,kBAAkB,mBAGhCz6C,KAAK4kD,aAAe,IAAID,EAAAE,SAASzH,EAAAM,YAAYoH,QAAS1K,EAC1D,CAUOnW,KAAAA,CAAM8gB,GACT,OAAOvZ,QAAQU,QAAQlsC,KAAK4kD,aAChC,CAUOI,aAAAA,CAAcD,GACjB,OAAOvZ,QAAQU,QAAQlsC,KAAK4kD,aAChC,uHClDJ,MAAA1a,EAAAv2B,EAAA,MACAgxC,EAAAhxC,EAAA,MACAypC,EAAAzpC,EAAA,MAEA,MAAasxC,EAKTn4C,WAAAA,CAAmBo4C,EAA8DC,GAC7E,IAAKD,EACD,MAAM,IAAIhb,EAAAuQ,kBAAkB,iBAGhC,IAAK0K,EACD,MAAM,IAAIjb,EAAAuQ,kBAAkB,yBAGhCz6C,KAAKolD,kBAAoBF,EACzBllD,KAAKqlD,0BAA4BF,CACrC,CAEOlhB,KAAAA,CAAM8gB,GACT,OAAO/kD,KAAKolD,kBAAkBL,GAAkBjY,MAAMvnC,GAA4B,IAAIo/C,EAAAE,SAASzH,EAAAM,YAAYla,mBAAyB1iC,IAAVyE,OAAsBzE,EAAYmkD,EAA6BK,gBAAkB//C,IAC/M,CAEOy/C,aAAAA,CAAcD,GACjB,OAAO/kD,KAAKqlD,0BAA0BN,GAAkBjY,MAAMvnC,GAA4B,IAAIo/C,EAAAE,SAASzH,EAAAM,YAAYla,mBAAyB1iC,IAAVyE,OAAsBzE,EAAYmkD,EAA6BK,gBAAkB//C,IACvN,EAxBJqO,EAAAA,6BAAAqxC,EACmBA,EAAAK,gBAA0B,uHCL7C,MAAApb,EAAAv2B,EAAA,MAIAw2B,EAAAx2B,EAAA,MAEA4xC,EAAA5xC,EAAA,MAEAC,EAAAA,sBAAA,MAEW,oBAAO4xC,CAAcC,GACxB,GAAMA,EAAQ,CACV,GAAIA,EAAOr0C,cAAc+yB,WAAW,SAChC,MAAO,YAEX,GAAIshB,EAAOr0C,cAAc+yB,WAAW,SAChC,MAAO,YAGf,MAAO,gBACX,CAOUuhB,kBAAAA,CACNtqB,EACAigB,EACAsK,GAEsD,IAAIC,IAAI,CAC1D,CAACzb,EAAAmM,WAAWuP,oCAAqCN,EAAAO,oBAAoBC,8BACrE,CAAC5b,EAAAmM,WAAW0P,2CAA4CT,EAAAO,oBAAoBG,oBAC5E,CAAC9b,EAAAmM,WAAW4P,4CAA6CX,EAAAO,oBAAoBK,qBAC7E,CAAChc,EAAAmM,WAAW8P,gDAAiDb,EAAAO,oBAAoBO,yBACjF,CAAClc,EAAAmM,WAAWgQ,2CAA4Cf,EAAAO,oBAAoBS,gBAC5E,CAACpc,EAAAmM,WAAWkQ,sCAAuCjB,EAAAO,oBAAoBW,WACvE,CAACtc,EAAAmM,WAAWoQ,iDAAkDnB,EAAAO,oBAAoBa,2BAClF,CAACxc,EAAAmM,WAAWsQ,mDAAoDrB,EAAAO,oBAAoBe,+BAG/DtlD,SAAQ,CAACulD,EAAuBC,KACrD/mD,KAAKgnD,gBAAgBD,EAAYD,EAAe1rB,EAAQigB,EAAasK,EAAS,IAIlF,MAAMsB,EAA+ChuC,KAAKlS,MAAMq0B,EAAOgb,WAAWC,YAAYnM,EAAAgd,8BAA+B,OAE7HhkD,OAAOkkB,KAAK6/B,GAAmB1lD,SAAS6B,IACpCi4C,EAAYj4C,GAAS6jD,EAAkB7jD,EAAM,GAErD,CAEU4jD,eAAAA,CACNG,EACAL,EACA1rB,EACAigB,EACAsK,GAEA,MAAMviD,EAAgBg4B,EAAOgb,WAAWC,YAAY8Q,OAAQrmD,IAIxDsC,GAAWuiD,IAAgD,IAApCA,EAASliD,OAAOqjD,KACvCzL,EAAYyL,GAAiB1jD,EAAMk7C,oBAE3C,wHCvEJ,MAAApU,EAAAv2B,EAAA,MAUAw2B,EAAAx2B,EAAA,MAcA,MAAayzC,UAAsCjd,EAAAkd,sBAE/Cv6C,WAAAA,CACIy1C,EACAC,EACAxL,EACAsQ,EACAC,GACAplB,MAAMogB,EAAgBC,EAAmBxL,EAAasQ,EAAkBC,GACxEvnD,KAAKwnD,0BAA4BtkB,SAA2CljC,KAAKynD,mBAAmBC,GACpG1nD,KAAK2nD,8BAAiCD,GAA2B1nD,KAAK4nD,uBAAuBF,EACjG,CAEUG,2BAAAA,CAA4B7H,GAGtC,CAEU8H,wBAAAA,CAAyBz1C,EAAiChL,EAAgB0gD,GAKpF,CAEUC,yBAAAA,CAA0B31C,EAAiC2J,EAAkB+rC,GAKvF,CAEU,2BAAME,CAAsBjI,GAClC,IAAIkI,GAAqB,EACzB,OAAQlI,EAAkB78B,KAAK/R,eAC3B,IAAK,oBACL,IAAK,kBACKpR,KAAK2nD,+BACP3nD,KAAK2nD,8BAA8B3H,EAAkB0H,UAEzDQ,GAAY,EACZ,MACJ,IAAK,gBACKloD,KAAKwnD,iCACDxnD,KAAKwnD,0BAA0BxH,EAAkB0H,UAE3DQ,GAAY,EAKpB,OAAOA,CACX,CAEUC,iBAAAA,CACNJ,EACA9N,EACAmO,EACAC,EACA1wC,GAOA,CAEM,wBAAM8vC,CAAmBC,GAE/B,MAAMY,EAA6Bne,EAAAoe,mBAAmBC,SAASd,GACzDe,EAA6Bte,EAAAue,gBAAgBC,+BAA+BL,EAAOM,mBACzF,IAAIv2C,EACJ,MAAMw2C,EAAkC,IAAI3e,EAAA4e,mBAC5CD,EAAY7W,YAAY9H,EAAAoM,WAAWyS,iCAAkCrB,GACrE,MAAMsB,EAAeV,EAAO7D,OAASzkD,KAAKipD,mBAAmBC,uBAC7D,IAAI7hD,EAAS2hD,EAIb,GAFAhpD,KAAKipD,mBAAmBE,mBAAmBnpD,KAAKipD,mBAAmBC,uBAAyBZ,EAAO7D,OAAS6D,EAAOc,UAE/Glf,EAAAmf,aAAaC,WAAab,EAAc,CACxC,MAAMc,EAAmCpf,EAAAue,gBAAgBc,0BAA0BlB,EAAOM,mBACpFa,EAA+Ctf,EAAAue,gBAAgBgB,6BAA6BpB,EAAOM,yBAEnG5oD,KAAK2pD,uBACPJ,EACAE,EACAtf,EAAAue,gBAAgBkB,0BAA0BH,SAG9C,IAAMzpD,KAAKipD,mBAAmBY,eAAiBpB,IAAiBve,EAAAmf,aAAaS,SAAWxB,EAAOM,oBAAsBze,EAAAye,kBAAkBmB,sBAAwB,CAC3J,GAAI/pD,KAAKgqD,qBAAqB5T,WAAWC,YAAYlM,EAAA8f,4BAA8B/f,EAAAggB,aAAahgB,EAAAggB,aAAaC,QACzG93C,EAAS,IAAI63B,EAAAkgB,wBACTpqD,KAAKipD,mBAAmBhP,UACxBwO,EACAH,EAAO+B,YACP/B,EAAOc,SACPJ,EACAV,EAAOgC,SACPhC,EAAOiC,4BACPjC,EAAOkC,eACP1pD,EACA4mD,EACAmB,OACD,CACH,MAAM4B,EAAiCtgB,EAAAugB,qBAAqBlC,SAASd,GAC/DiD,EAAsBF,EAAShG,OAASzkD,KAAKipD,mBAAmBC,uBAChE0B,EAA8BH,EAASI,4BAA4BF,GAEzEt4C,EAAS,IAAI63B,EAAAkgB,wBACTpqD,KAAKipD,mBAAmBhP,UACxBwO,EACAgC,EAASvK,KACTuK,EAASrB,SACTuB,EACAF,EAASH,SACTG,EAASF,4BACTE,EAASD,eACT1pD,EACA8pD,EACA/B,GAEAxhD,EAASgL,EAAOhL,OAGxBrH,KAAK8nD,yBAAyBz1C,EAAQhL,EAAQrH,KAAKipD,mBAAmBlB,WAGlF,CAEUH,sBAAAA,CAAuBF,GAC7B,MAAMoD,EAA+B3gB,EAAA4gB,iBAAiBvC,SAASd,GACzDrgD,EAAiByjD,EAAWrG,OAASzkD,KAAKipD,mBAAmBC,uBAC7DL,EAAkC,IAAI3e,EAAA4e,mBAC5CD,EAAY7W,YAAY9H,EAAAoM,WAAWyS,iCAAkCrB,GAErE,MAAMr1C,EAAS,IAAI63B,EAAAkgB,wBACfpqD,KAAKipD,mBAAmBhP,UACxB/P,EAAAmf,aAAa2B,kBACbF,EAAW5K,KACX4K,EAAW1B,SACX/hD,EACAyjD,EAAWR,SACXQ,EAAWP,4BACXO,EAAWN,eACX1pD,EACA4mD,EACAmB,GAEJ7oD,KAAKipD,mBAAmBgC,aAAa5jD,GAErCrH,KAAKgoD,0BAA0B31C,EAAQy4C,EAAW1B,SAAUppD,KAAKipD,mBAAmBlB,UACxF,EAxJJn0C,EAAAA,8BAAAwzC,kICtBA,MAAAld,EAAAv2B,EAAA,MAQAw2B,EAAAx2B,EAAA,MAGAu3C,EAAAv3C,EAAA,MAGAw3C,EAAAx3C,EAAA,MAGAy3C,EAAAz3C,EAAA,MAKAypC,EAAAzpC,EAAA,MACA4xC,EAAA5xC,EAAA,MAIA,MAAa03C,UAAiDF,EAAAG,sBAA9Dx+C,WAAAA,uBACqB,KAAAy+C,aAAuB,sBA+E5C,CA7EWjgD,MAAAA,CACH8vB,EACAowB,EACAnP,GAEA,IAAIsJ,EAAmBvqB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWmV,sCAAkC3qD,GAClG,MAAM2kD,EAAiBrqB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWoV,oCAAgC5qD,GAC1F6qD,EAAqBR,EAAAG,sBAAsB9F,cAAcC,GACzD9hB,EAAevI,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWsV,6BAA8B,SAAWnG,EAAS,cAAgBkG,GAC1HtQ,EAAyC,CAAC,EAC1CwQ,EAAqBzwB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWwV,wCAAoChrD,GAClGirD,EAAmB3wB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAW0V,0CAAsClrD,GAEpG+qD,EACKlG,IAA+E,IAAnEA,EAASliD,OAAO8hD,EAAAO,oBAAoBmG,4BACjD5Q,EAAYkK,EAAAO,oBAAoBmG,0BAA4BJ,GAEzDE,IACFpG,IAA+D,IAAnDA,EAASliD,OAAO8hD,EAAAO,oBAAoBwE,YACjDjP,EAAYkK,EAAAO,oBAAoBwE,UAAYyB,SAIXjrD,IAArCs6B,EAAO8wB,4BACP7Q,EAAYkK,EAAAO,oBAAoBqG,kBAAoB,QAGxDnsD,KAAKosD,eAAehxB,EAAQigB,EAAasK,GAEpCA,IACDA,EAAW,GAAGhiB,IAAO3jC,KAAKurD,gBAG9B,MAAM5oB,EAAqC,CAAC,OACrB7hC,IAAnB0qD,EAASjmD,OAA0C,KAAnBimD,EAASjmD,QACzCo9B,EAAQ6oB,EAAS/O,YAAc+O,EAASjmD,OAE5Co9B,EAAQya,EAAAM,YAAYC,cAAgBtB,EAEpC,MAAMD,EAA6G,SAAhFhhB,EAAOgb,WAAWC,YAAY,oCAAqC,SAEhGgW,EAAsB,IAAIniB,EAAAoiB,oBAAoB3G,EAAUtK,EAAa1Y,EAAS,IAAIyoB,EAAAmB,0BAA6BriB,EAAAwL,UAAUiB,qBAAqBvb,GAASghB,EAAmBC,GAI1KjB,EAAciR,EAAoBjR,IAGxC,OAFAhgB,EAAOgb,WAAWpE,YAAY7H,EAAAmM,WAAWkW,4BAA6BpR,GAE/DiR,CACX,CAEUD,cAAAA,CACNhxB,EACAigB,EACAsK,GAEsD,IAAIC,IAAI,CAC1D,CAACzb,EAAAmM,WAAWuP,oCAAqCN,EAAAO,oBAAoBC,8BACrE,CAAC5b,EAAAmM,WAAW0P,2CAA4CT,EAAAO,oBAAoBG,oBAC5E,CAAC9b,EAAAmM,WAAW4P,4CAA6CX,EAAAO,oBAAoBK,qBAC7E,CAAChc,EAAAmM,WAAW8P,gDAAiDb,EAAAO,oBAAoBO,yBACjF,CAAClc,EAAAmM,WAAWgQ,2CAA4Cf,EAAAO,oBAAoBS,gBAC5E,CAACpc,EAAAmM,WAAWkQ,sCAAuCjB,EAAAO,oBAAoBW,WACvE,CAACtc,EAAAmM,WAAWsQ,mDAAoDrB,EAAAO,oBAAoBe,+BAG/DtlD,SAAQ,CAACulD,EAAuBC,KACrD/mD,KAAKgnD,gBAAgBD,EAAYD,EAAe1rB,EAAQigB,EAAasK,EAAS,IAIlF,MAAMsB,EAA+ChuC,KAAKlS,MAAMq0B,EAAOgb,WAAWC,YAAY6U,EAAAhE,8BAA+B,OAE7HhkD,OAAOkkB,KAAK6/B,GAAmB1lD,SAAS6B,IACpCi4C,EAAYj4C,GAAS6jD,EAAkB7jD,EAAM,GAErD,EA/EJwQ,EAAAA,yCAAAy3C,oIC1BA,MAAAnhB,EAAAv2B,EAAA,MAYAw2B,EAAAx2B,EAAA,MAiBA,MAAa84C,UAAmDtiB,EAAAkd,sBAI5Dv6C,WAAAA,CACIy1C,EACAC,EACAxL,EACAsQ,EACAoF,GACAvqB,MAAMogB,EAAgBC,EAAmBxL,EAAasQ,EAAkBoF,GACxE1sD,KAAK2sD,4BAA8BD,EACnC1sD,KAAK4sD,2BACT,CAEUA,yBAAAA,GACN,GAAI5sD,KAAK6sD,oBAAqB,CAC1B,MAAMC,EAAkB9sD,KAAK+sD,kBAAkBC,WAAW,mBAC1DF,EAAgB31C,KAAO,eACvB,MAAM81C,EAAyC,CAC/CA,KAA0B,aAC1BA,EAAmBC,eAAiBltD,KAAKmtD,yBACzCF,EAAmBG,cAAgB,EACnCN,EAAgBG,mBAAqBA,EACrCjtD,KAAK+sD,kBAAkBM,WAAW,kBAAmBP,GAE7D,CAEU,iCAAMjF,CAA4B7H,GAExC,IAAI3tC,EACJ,MAAMw2C,EAAkC,IAAI3e,EAAA4e,mBAC5CD,EAAY7W,YAAY9H,EAAAoM,WAAWyS,iCAAkC/I,EAAkB0H,UACvF,IAAIQ,GAAqB,EAEzB,OAAQlI,EAAkB78B,KAAK/R,eAC3B,IAAK,oBACL,IAAK,kBACD,MAAM05C,EAA+B3gB,EAAA4gB,iBAAiBvC,SAASxI,EAAkB0H,UAC3ErgD,EAAiByjD,EAAWrG,OAASzkD,KAAKipD,mBAAmBC,uBAEnE72C,EAAS,IAAI63B,EAAAojB,gCACTttD,KAAKipD,mBAAmBhP,UACxB/P,EAAAmf,aAAa2B,kBACbF,EAAW5K,KACX4K,EAAW1B,SACX/hD,EACAyjD,EAAWR,SACXQ,EAAWP,iCACXzpD,OACAA,EACAk/C,EAAkB0H,SAClBmB,GAEJ7oD,KAAKipD,mBAAmBgC,aAAa5jD,GAErC,MAAM0oC,EAAK,IAAI7F,EAAAqjB,mCAAmCl7C,EAAQy4C,EAAW1B,SAAUppD,KAAKipD,mBAAmBlB,WAEvG,GAAM/nD,KAAK2sD,4BAA4Ba,aACnC,IACIxtD,KAAK2sD,4BAA4Ba,aAAaxtD,KAAK2sD,4BAA6B5c,GAElF,MAAOp4B,GAEL,CAGRuwC,GAAY,EACZ,MACJ,IAAK,gBACD,MAAMI,EAA6Bne,EAAAoe,mBAAmBC,SAASxI,EAAkB0H,UAC3Ee,EAA6Bte,EAAAue,gBAAgBC,+BAA+BL,EAAOM,mBAIzF,GAFA5oD,KAAKipD,mBAAmBE,mBAAmBnpD,KAAKipD,mBAAmBC,uBAAyBZ,EAAO7D,OAAS6D,EAAOc,UAE/Glf,EAAAmf,aAAaC,WAAab,EAAc,CACxC,MAAMc,EAAmCpf,EAAAue,gBAAgBc,0BAA0BlB,EAAOM,mBACpFa,EAA+Ctf,EAAAue,gBAAgBgB,6BAA6BpB,EAAOM,yBAEnG5oD,KAAK2pD,uBACPJ,EACAE,EACAtf,EAAAue,gBAAgBkB,0BAA0BH,SAG9C,IAAMzpD,KAAKipD,mBAAmBY,eAAiBpB,IAAiBve,EAAAmf,aAAaS,SAAWxB,EAAOM,oBAAsBze,EAAAye,kBAAkBmB,sBAAwB,CAC3J,GAAI/pD,KAAKgqD,qBAAqB5T,WAAWC,YAAYlM,EAAA8f,4BAA8B/f,EAAAggB,aAAahgB,EAAAggB,aAAaC,QACzG93C,EAAS,IAAI63B,EAAAojB,gCACTttD,KAAKipD,mBAAmBhP,UACxBwO,EACAH,EAAO+B,YACP/B,EAAOc,SACPd,EAAO7D,OAASzkD,KAAKipD,mBAAmBC,uBACxCZ,EAAOgC,SACPhC,EAAOiC,4BACPjC,EAAOkC,eACP1pD,EACAk/C,EAAkB0H,SAClBmB,OACD,CACH,MAAM4B,EAAiCtgB,EAAAugB,qBAAqBlC,SAASxI,EAAkB0H,UACjFiD,EAAsBF,EAAShG,OAASzkD,KAAKipD,mBAAmBC,uBAChE0B,EAA8BH,EAASI,4BAA4BF,GAEzEt4C,EAAS,IAAI63B,EAAAojB,gCACTttD,KAAKipD,mBAAmBhP,UACxBwO,EACAgC,EAAS7B,oBAAsBze,EAAAye,kBAAkB6E,QAAUhD,EAASiD,MAAM,GAAGC,aAAU7sD,EACvF2pD,EAASrB,SACTuB,EACAF,EAASH,SACTG,EAASF,4BACTjC,EAAOkC,eACP1pD,EACA8pD,EACA/B,GAGR,MAAMjjC,EAA4C,IAAIskB,EAAAqjB,mCAAmCl7C,EAAQA,EAAOhL,OAAQrH,KAAKipD,mBAAmBlB,WAExI,GAAM/nD,KAAK2sD,4BAA4BiB,YACnC,IACI5tD,KAAK2sD,4BAA4BiB,YAAY5tD,KAAK2sD,4BAA6B/mC,GAEjF,MAAOjO,GAEL,EAKhBuwC,GAAY,EAKpB,OAAOA,CACX,CAGUC,iBAAAA,CACNJ,EACA9N,EACAmO,EACAC,EACA1wC,GAKA,IAHuC,IAAIuyB,EAAA4e,oBAChC9W,YAAY7H,EAAA0jB,kCAAmC3jB,EAAA4jB,sBAAsBzF,IAE1EroD,KAAK2sD,4BAA4BoB,SAAU,CAC7C,MAAMC,EAA0D,IAAI9jB,EAAA+jB,2CAChE7F,EACAzwC,EACA0wC,OACAvnD,EACAinD,GACJ,IACI/nD,KAAK2sD,4BAA4BoB,SAAS/tD,KAAK2sD,4BAA6BqB,GAE9E,MAAO,EAEjB,EAlKJp6C,EAAAA,2CAAA64C,iHC7BA,MAAAviB,EAAAv2B,EAAA,MAIAw2B,EAAAx2B,EAAA,MAEAu3C,EAAAv3C,EAAA,MACAw3C,EAAAx3C,EAAA,MACAy3C,EAAAz3C,EAAA,MACAypC,EAAAzpC,EAAA,MACA4xC,EAAA5xC,EAAA,MAEA,MAAau6C,UAAgC/C,EAAAG,sBAKlChgD,MAAAA,CACH8vB,EACAowB,EACAnP,GAEA,MAAM8R,EAAwB/yB,EAAOgb,WAAWC,YAAY6U,EAAA5U,WAAW8X,2BAA4B,IAC7FC,EAAqBjzB,EAAOgb,WAAWC,YAAY6U,EAAA5U,WAAWgY,yBAC9D7I,EAAiBrqB,EAAOgb,WAAWC,YAAY6U,EAAA5U,WAAWoV,gCAC1DK,EAAmB3wB,EAAOgb,WAAWC,YAAY6U,EAAA5U,WAAW0V,qCAAsC,SAClGuC,EAA4BnzB,EAAOgb,WAAWC,YAAY6U,EAAA5U,WAAWkY,yCAA0C,QAE/GnT,EAAyC,CAAC,EAChDA,EAAY+B,EAAAM,YAAYC,cAAgBtB,EACxChB,EAAYkK,EAAAO,oBAAoB2I,QAAUrzB,EAAOgb,WAAWC,YAAYlM,EAAA8f,yBAA0BiB,EAAAhB,aAAagB,EAAAhB,aAAaC,SAAS/4C,cACrIiqC,EAAYkK,EAAAO,oBAAoBwE,UAAYyB,EAC5C1Q,EAAYkK,EAAAO,oBAAoB4I,0BAA4BH,EACxDJ,IACA9S,EAAYkK,EAAAO,oBAAoB6I,OAASR,EACrCE,IAAenD,EAAA0D,oBAAoBC,YAAYC,iBAC/CzT,EAAY+B,EAAAM,YAAYqR,qBAAuBZ,IAIvD,MAAMa,EACFX,IAAenD,EAAA0D,oBAAoBC,YAAYC,eAAiB,YAC9D,GACAG,EACFZ,IAAenD,EAAA0D,oBAAoBC,YAAYC,eAAiB,KAC9DT,IAAenD,EAAA0D,oBAAoBC,YAAYK,aAAe,KAC9D,KAEAvsB,EAAqC,CAAC,EAEtB,MAAlB6oB,EAASjmD,OAAoC,KAAnBimD,EAASjmD,QACnCo9B,EAAQ6oB,EAAS/O,YAAc+O,EAASjmD,OAO5C,IAAIogD,EAAmBvqB,EAAOgb,WAAWC,YAAY6U,EAAA5U,WAAWmV,iCAAkC,IAClG,IAAK9F,EAAU,CACX,MAAMgG,EAAqBR,EAAAG,sBAAsB9F,cAAcC,GACzD9hB,EAAevI,EAAOgb,WAAWC,YACnC6U,EAAA5U,WAAWsV,6BACX,SAASnG,KAAUyI,EAAwBiB,UAAUxD,KAEzDhG,EAAW,GADsBhiB,EAAKyrB,SAAS,KAAOzrB,EAAOA,EAAO,MACnCqrB,IAAgBd,EAAwBmB,UAAUJ,IAGvFjvD,KAAK0lD,mBAAmBtqB,EAAQigB,EAAasK,GAE7C,MAAMvJ,EAA6G,SAAhFhhB,EAAOgb,WAAWC,YAAY,oCAAqC,SACtG,OAAO,IAAInM,EAAAoiB,oBAAoB3G,EAAUtK,EAAa1Y,EAAS,IAAIyoB,EAAAmB,0BAA6BriB,EAAAwL,UAAUiB,qBAAqBvb,GAASghB,EAAmBC,EAC/J,EA5DJzoC,EAAAA,wBAAAs6C,EAE4BA,EAAAmB,OAAiB,MACjBnB,EAAAiB,QAAkB,4HChB9C,MAAAjlB,EAAAv2B,EAAA,MAGA27C,EAAA37C,EAAA,KACAw2B,EAAAx2B,EAAA,MAgBA47C,EAAA57C,EAAA,MAGAu3C,EAAAv3C,EAAA,MAgBA67C,EAAA77C,EAAA,MACAy3C,EAAAz3C,EAAA,MAcA87C,EAAA97C,EAAA,MACA+7C,EAAA/7C,EAAA,KAEA,MAAag8C,UAA6BvE,EAAA/D,sBAgBtCv6C,WAAAA,CACIy1C,EACAC,EACAxL,EACAsQ,EACAsI,GAEAztB,MAAMogB,EAAgBC,EAAmBxL,EAAasQ,EAAkBsI,GAExE5vD,KAAK4qC,WAAa,IAAIT,EAAAU,YACtB7qC,KAAK6vD,2BAA6BD,EAClC5vD,KAAK8vD,uBAAyB,IAAqB9vD,KAAK+vD,+BACxD/vD,KAAKgwD,qBAAuB,IAAIR,EAAAS,8BAChCjwD,KAAKkwD,kBACD,CAACC,EAA2B9e,EAAuDC,IACnFtxC,KAAKowD,WAAWD,EAAU9e,EAAiBC,GAC/CtxC,KAAKqwD,wBAA2BC,GAA2DtwD,KAAKuwD,kBAAkBD,GAClHtwD,KAAKwwD,yBAA4BF,GAAkDtwD,KAAKywD,iBAAiBH,GACzGtwD,KAAK0wD,mBAAqB,IAAqB1wD,KAAK2wD,iBACpD3wD,KAAK4wD,sBAAwB5Z,EAE7Bh3C,KAAK6wD,iBAAkB,EACvB7wD,KAAK8wD,eAAiB,KACtB9wD,KAAK+wD,iBAAiBnlB,QAAQolB,IACG,0BAAzBA,EAAgB9lD,OAChBlL,KAAKixD,sBAAuB,KAGxC,CAEO,iBAAMC,CAAY7uB,GACrB,MAAM8uB,EAA0BhnB,EAAAinB,aAC1BnX,EAAoB9P,EAAAQ,mBAEpB0mB,EAAoB,CACtB/d,QAAS,CACLge,cAAeH,GAGnBI,eAAgBt4C,KAAKlS,MAAMs7B,GAC3B4sB,QAAS,IAGPuC,EAAmBv4C,KAAKtS,UAAU0qD,GAClCf,QAAgCtwD,KAAKyxD,wBACrCnB,EAAWvU,KAAK,IAAI2T,EAAAgC,wBACtBvnB,EAAA0V,YAAYK,KACZ,QACAjG,EACA,mBACAuX,GAER,CAEU,oBAAMb,SACN3wD,KAAKmoD,kBAAkBnoD,KAAKipD,mBAAmBlB,UACjD/nD,KAAKipD,mBAAmBhP,UACxBiR,EAAAyG,mBAAmB54C,MACnBmyC,EAAA4C,sBAAsB8D,QACtB,iBAEJ5xD,KAAKixD,sBAAuB,EAC5BjxD,KAAK6wD,iBAAkB,CAE3B,CAEUhJ,2BAAAA,CAA4B7H,GAElC,MAAM6I,EAAkC,IAAIqC,EAAApC,mBAK5C,IAAIz2C,EACA61C,EAEJ,OAPIlI,EAAkB6R,cAAgB1nB,EAAA0V,YAAYK,MAC9C2I,EAAY7W,YAAYkZ,EAAA5U,WAAWyS,iCAAkC/I,EAAkB0H,UAMnF1H,EAAkB78B,KAAK/R,eAC3B,IAAK,gBACD,MAAM0gD,EAAmC1G,EAAA7C,mBAAmBC,SAASxI,EAAkB0H,UAIvF,GAFA1nD,KAAKipD,mBAAmBE,mBAAmBnpD,KAAKipD,mBAAmBC,uBAAyB4I,EAAarN,OAASqN,EAAa1I,UAE3H0I,EAAalJ,oBAAsBwC,EAAAxC,kBAAkBmJ,iBAAmBD,EAAalJ,oBAAsBwC,EAAAxC,kBAAkB7vC,MAAO,CACpI,MAAMvL,EAAmCxN,KAAKgyD,mBAAmBF,EAAcjJ,GAG/E,GAFA7oD,KAAK8wD,eAAiBtjD,EAAK6E,OAErBrS,KAAK6vD,2BAA2BoC,WAClC,IACIjyD,KAAK6vD,2BAA2BoC,WAAWjyD,KAAK6vD,2BAA4BriD,GAE9E,MAAOmK,GAEL,EAIZuwC,GAAY,EACZ,MACJ,IAAK,oBACD,MAAM4C,EAA+BM,EAAAL,iBAAiBvC,SAASxI,EAAkB0H,UAC3ErgD,EAAiByjD,EAAWrG,OAASzkD,KAAKipD,mBAAmBC,uBAEnE72C,EAAS,IAAI64C,EAAAd,wBACTpqD,KAAKipD,mBAAmBhP,UACxBiR,EAAA7B,aAAa2B,kBACbF,EAAW5K,KACX4K,EAAW1B,SACX/hD,EACAyjD,EAAWR,SACXQ,EAAWP,iCACXzpD,OACAA,EACAk/C,EAAkB0H,SAClBmB,GAEJ7oD,KAAKipD,mBAAmBgC,aAAa5jD,GAErC,MAAM0oC,EAAK,IAAImb,EAAAgH,2BAA2B7/C,EAAQy4C,EAAW1B,SAAUppD,KAAKipD,mBAAmBlB,WAE/F,GAAM/nD,KAAK6vD,2BAA2BsC,YAClC,IACInyD,KAAK6vD,2BAA2BsC,YAAYnyD,KAAK6vD,2BAA4B9f,GAE/E,MAAOp4B,GAEL,CAGRuwC,GAAY,EACZ,MACJ,IAAK,iBACD,MAAMkK,EAAyBhH,EAAAiH,cAAc7J,SAASxI,EAAkB0H,UAExEr1C,EAAS,IAAI64C,EAAAd,wBACTpqD,KAAKipD,mBAAmBhP,UACL,aAAnBmY,EAAQE,OAAwBpH,EAAA7B,aAAakJ,kBAAoBrH,EAAA7B,aAAaS,QAC9EsI,EAAQlS,KACRkS,EAAQhJ,SACRgJ,EAAQ3N,YACR3jD,OACAA,OACAA,OACAA,EACAk/C,EAAkB0H,SAClBmB,GAEmB,aAAnBuJ,EAAQE,SACRtyD,KAAK8wD,eAAiBz+C,GAG1B,MAAMuT,EAAQ,IAAIslC,EAAAgH,2BAA2B7/C,EAAQA,EAAO2J,SAAU3J,EAAOmgD,UAE7E,GAAMxyD,KAAK6vD,2BAA2BoC,WAClC,IACIjyD,KAAK6vD,2BAA2BoC,WAAWjyD,KAAK6vD,2BAA4BjqC,GAE9E,MAAOjO,GAEL,CAGRuwC,GAAY,EACZ,MACJ,IAAK,QACD,CACI,MAAMuK,EAAiBzS,EAAkB/F,UAAUhd,cAC7Cy1B,EAAO1yD,KAAKgwD,qBAAqB2C,QAAQF,GAC/C,IAESzS,EAAkB4S,WAGnBF,EAAKG,YAAYC,MAAM9S,EAAkB4S,YAFzCF,EAAKK,iBAIX,MAAOp7C,GAEL,EAGRuwC,GAAY,EACZ,MAEJ,IAAK,WAEGloD,KAAKgzD,sBAAsBhT,GAG/BkI,GAAY,EAMpB,MAAM+K,EAAW,IAAI9oB,EAAAyD,SAErB,OADAqlB,EAAS/mB,QAAQgc,GACV+K,EAAS/jB,OACpB,CAGU,uBAAMiZ,CACZJ,EACA9N,EACAmO,EACAC,EACA1wC,GAQA,GANA3X,KAAKixD,sBAAuB,EAEtBjxD,KAAKipD,mBAAmBiK,qBACpBlzD,KAAKipD,mBAAmBkK,oBAG5BnzD,KAAK6vD,2BAA2B9B,SAAU,CAC5C,MAAM/6B,EAAiC,IAAIk4B,EAAApC,mBAC3C91B,EAAWgf,YAAYoZ,EAAAyC,kCAAmC3C,EAAA4C,sBAAsBzF,IAEhF,MAAM2F,EAAkD,IAAI9C,EAAAkI,mCACxDhL,EACAzwC,EACA0wC,OACAvnD,EACAinD,GAEJ,IACI/nD,KAAK6vD,2BAA2B9B,SAAS/tD,KAAK6vD,2BAA4B7B,GAE5E,MAAO,CAET,GAAMhuD,KAAKqzD,oBAAqB,CAC5B,MAAMhhD,EAAkC,IAAI64C,EAAAd,6BACxCtpD,EACAoqD,EAAA7B,aAAaC,cACbxoD,OACAA,OACAA,OACAA,OACAA,OACAA,EACA6W,OACA7W,EACAkyB,GACJ,IACIhzB,KAAKqzD,oBAAoBhhD,GACzBrS,KAAKqzD,yBAAsBvyD,EAE7B,MAAO,GAGrB,CAEU,gBAAMsvD,CACZD,EACA9e,EACAC,GAEAtxC,KAAKgqD,qBAAqBsJ,gBAAkBnD,EAE5CnwD,KAAKqzD,oBAAsBhiB,EAC3BrxC,KAAKuzD,kBAAoBjiB,EAEzBtxC,KAAKipD,mBAAmBuK,sBACxBxzD,KAAKipD,mBAAmBwK,0BAA0BzzD,KAAK4wD,sBAAsBhkB,QAE7E5sC,KAAKgqD,qBAAqB5T,WAAWpE,YAAYkZ,EAAA5U,WAAWod,iBAAkB1zD,KAAKipD,mBAAmBlB,WAGtG,MAAM4L,EAAmC3zD,KAAK4zD,cAExCC,EAAiC7zD,KAAK8zD,uBAEtCnvD,QAA+B3E,KAAK4wD,sBAAsBhlB,OAAO5rC,KAAKipD,mBAAmBpd,aACzFV,QAAsCnrC,KAAK4wD,sBAAsBzlB,OACjE0B,QAA6C7sC,KAAK4wD,sBAAsB/jB,WAExEknB,EAAY,IAAI7pB,EAAA8pB,oBAAoBrvD,EAAMwmC,EAAOmE,sBACjDtvC,KAAKipD,mBAAmBgL,6BAA6BF,GAAW,GAEtE/zD,KAAKgqD,qBAAqBkK,oBAAoBC,QAAQ3iB,MAAQ,CAAEjT,OAAQsO,GAExE,UACU8mB,QACAE,EACR,MAAOl8C,GAEL,aADM3X,KAAKmoD,kBAAkBnoD,KAAKipD,mBAAmBlB,UAAW/nD,KAAKipD,mBAAmBhP,UAAWiR,EAAAyG,mBAAmB54C,MAAOmyC,EAAA4C,sBAAsBsG,kBAAmBz8C,GAC/J6zB,QAAQU,UAGnB,MAAMmoB,EAA0C,IAAInJ,EAAAoJ,iBAAiBt0D,KAAKipD,mBAAmBlB,WAEvF/nD,KAAKu0D,eAAeC,gBACtBx0D,KAAKu0D,eAAeC,eAAex0D,KAAKu0D,eAAgBF,GAGnCr0D,KAAKy0D,UAAUV,GAGvBjnB,MAAK,SAAwC5J,gBACpDljC,KAAKmoD,kBAAkBnoD,KAAKipD,mBAAmBlB,UAAW/nD,KAAKipD,mBAAmBhP,UAAWiR,EAAAyG,mBAAmB54C,MAAOmyC,EAAA4C,sBAAsB4G,aAAc/8C,EAAM,GAE/K,CAGQ44C,iBAAAA,CAAkBD,GAEtB,OADAtwD,KAAK20D,mBAAqB30D,KAAK40D,mBACxBtE,CACX,CAEQP,4BAAAA,GAGJ,MAAM8E,EAAyC,IAAI1qB,EAAAyD,SAE7CknB,EAAO5xB,UACT,IACI,MAAM4Z,EAAsB98C,KAAK88C,aAC3BmU,GAAyBjxD,KAAK88C,cAAgB98C,KAAKixD,qBACzD,GAAInU,GAAcmU,EAGd,YADA4D,EAAuB3oB,aAAQprC,GAInC,MAAMwvD,QAAgCtwD,KAAKyxD,kBACrCpvB,QAAmCiuB,EAAW/jB,OAEpD,IAAKlK,EACD,OAAOyyB,IAGX,MAAM9U,EAAoB0P,EAAAgC,wBAAwBrR,sBAAsBhe,GAExE,OAAQ2d,EAAkB78B,KAAK/R,eAC3B,IAAK,aACD,CACI,MAAM2jD,EAAgB/U,EAAkB/F,UAAUhd,cAI9C83B,IAHsB/0D,KAAKipD,mBAAmBhP,UAAUhd,cAIxDj9B,KAAKgwD,qBAAqBgF,UAAUD,GAEpC/0D,KAAKipD,mBAAmBgM,6BAGhC,MAEJ,IAAK,uBACD,MAAMC,EAAsC9J,EAAA+J,eAAe3M,SAASxI,EAAkB0H,UAEhF0N,EAAuB,IAAIlK,EAAAmK,qBAAqBH,EAAoBzQ,OAAQzkD,KAAKipD,mBAAmBlB,WAEpG/nD,KAAKu0D,eAAeW,qBACtBl1D,KAAKu0D,eAAeW,oBAAoBl1D,KAAKu0D,eAAgBa,GAGjE,MAEJ,IAAK,qBAED,IAAI3yB,EAGAA,EADAud,EAAkB0H,SAASrnD,OAAS,EAC7B2/C,EAAkB0H,SAGlB,gBAGX,MAAM4N,EAAqClK,EAAA+J,eAAe3M,SAAS/lB,GAEnEziC,KAAKipD,mBAAmBsM,oBAAoBD,EAAmB7Q,OAASzkD,KAAKipD,mBAAmBC,wBAEhG,MAAMsM,EAAsB,IAAItK,EAAAmK,qBAAqBC,EAAmB7Q,OAASzkD,KAAKipD,mBAAmBC,uBAAwBlpD,KAAKipD,mBAAmBlB,WAEnJ/nD,KAAKu0D,eAAekB,mBACtBz1D,KAAKu0D,eAAekB,kBAAkBz1D,KAAKu0D,eAAgBiB,GAE/D,MAEJ,IAAK,WACD,CACI,MAAME,EAAmB1V,EAAkB/F,UAAUhd,cAKrD,GAAIy4B,IAHsB11D,KAAKipD,mBAAmBhP,UAAUhd,cAIxDj9B,KAAKgwD,qBAAqB2F,aAAaD,OACpC,CAGH,MAAME,EAAyC,IAAI1K,EAAAoJ,iBAAiBt0D,KAAKipD,mBAAmBlB,WAU5F,SATM/nD,KAAKipD,mBAAmB4M,0BAAyB,GAElD71D,KAAKgqD,qBAAqB8L,0BAA2B91D,KAAKipD,mBAAmBY,eAAkB7pD,KAAKipD,mBAAmBiK,eAClHlzD,KAAKu0D,eAAewB,gBACtB/1D,KAAKu0D,eAAewB,eAAe/1D,KAAKu0D,eAAgBqB,GAK1D51D,KAAKqzD,qBAAuBrzD,KAAK8wD,eAAgB,CACnD,IACI9wD,KAAKqzD,oBAAoBrzD,KAAK8wD,gBAC9B9wD,KAAK8wD,eAAiB,KACxB,MAAOvuD,GACCvC,KAAKuzD,mBACPvzD,KAAKuzD,kBAAkBhxD,GAM/BvC,KAAKqzD,yBAAsBvyD,EAC3Bd,KAAKuzD,uBAAoBzyD,IAIrC,MAEJ,QACI,UAC4Bd,KAAK6nD,4BAA4B7H,IAE/ChgD,KAAKg2D,eACPh2D,KAAKg2D,cAAc7sB,QAAQ,IAAIgB,EAAA8rB,aAAajW,EAAkB78B,KAAK/R,cAAe4uC,EAAkB0H,WAG9G,MAAOnlD,GACL,EAKZ,OAF2BuyD,IAG7B,MAAOn9C,GACL3X,KAAKixD,sBAAuB,EAC5B4D,EAAuB3oB,YAQ/B,OAJA4oB,IAAOvjB,OAAOhuB,IACV4mB,EAAA8F,OAAOpP,SAASsI,QAAQ,IAAIgB,EAAA2U,gBAAgBv7B,GAAQ,IAGjDsxC,EAAuB3lB,OAClC,CAEQ,sBAAM0lB,GAEV50D,KAAKixD,sBAAuB,EAE5B,UACUjxD,KAAK+vD,+BACb,MAAOp4C,SACC3X,KAAKmoD,kBAAkBnoD,KAAKipD,mBAAmBlB,UAAW/nD,KAAKipD,mBAAmBhP,UAAWiR,EAAAyG,mBAAmB54C,MAAOmyC,EAAA4C,sBAAsB4G,aAAc/8C,GAGrK,OAAO6zB,QAAQU,SACnB,CAGQ,sBAAMukB,CAAiBH,GAC3B,OAAItwD,KAAKixD,sBACLjxD,KAAKixD,sBAAuB,EACrBzlB,QAAQC,OAAO,6CAGpBzrC,KAAKk2D,wBAAwB5F,EAAYtwD,KAAKipD,mBAAoBjpD,KAAKgqD,qBAAqBkK,oBAAoB1tD,mBAChHxG,KAAKm2D,gBAAgB7F,GACpBA,EACX,CAEQ,0BAAMwD,GACV,MAAMxD,QAAgCtwD,KAAKyxD,kBAC3CzxD,KAAKo2D,8BACCp2D,KAAKq2D,kBAAkB/F,GAAY,SACnCtwD,KAAKs2D,iBAAiBhG,SACtBtwD,KAAKu2D,eAAejG,EAC9B,CAEQ6F,eAAAA,CAAgB7F,GACpB,GAAItwD,KAAKw2D,cAAgBx2D,KAAK6wD,gBAAiB,CAE3C,GAAI7wD,KAAKgqD,qBACJ5T,WACAC,YAAY6U,EAAA5U,WAAWgY,2BAA6BpD,EAAA0D,oBAAoBC,YAAYC,eAAgB,CACrG,MAAM1zB,EAASp7B,KAAKw2D,YAAYztD,MAChCqyB,EAAOq7B,QAAQC,gBAAkB12D,KAAKgqD,qBAAqB5T,WAAWC,YAAY6U,EAAA5U,WAAW0V,qCAAsC,SACnIhsD,KAAKw2D,YAAYxtD,IAAIoyB,GAEzBp7B,KAAKmpC,QAAQ,IAAImmB,EAAAqH,gCAAgC32D,KAAKw2D,cAEtD,MAAMI,EAAkB52D,KAAKw2D,YAAYrU,eAKzC,OAFAniD,KAAK6wD,iBAAkB,EAEhBP,EAAWvU,KAAK,IAAI2T,EAAAgC,wBACvBvnB,EAAA0V,YAAYK,KACZ,eACAlgD,KAAKipD,mBAAmBhP,UACxB,mBACA2c,IAIZ,CAEQN,gBAAAA,CAAiBhG,GACrB,MAAMuG,EAAe1sB,EAAAinB,aAEf0F,EAAyB92D,KAAK6vD,2BAA2B78B,WAAWqjB,YAAY6U,EAAA5U,WAAWygB,uCAE3FC,EAAoB,CACtBC,YAAa,GACb3jB,QAAS,CACLge,cAAeuF,GAEnBtF,oBAAkDzwD,WAA3Bg2D,OAAuCh2D,EAAYg2D,EAC1E7H,QAAS,IAGPiI,EAAmBj+C,KAAKtS,UAAUqwD,GAExC,OAAO1G,EAAWvU,KAAK,IAAI2T,EAAAgC,wBACvBvnB,EAAA0V,YAAYK,KACZ,uBACAlgD,KAAKipD,mBAAmBhP,UACxB,mBACAid,GACR,CAEQlF,kBAAAA,CAAmBmF,EAAmCnkC,GAC1D,MAAMy1B,EAA6B2C,EAAA1C,gBAAgBC,+BAA+BwO,EAAcvO,mBAE1FvhD,EAAiB8vD,EAAc1S,OAASzkD,KAAKipD,mBAAmBC,uBAEhE72C,EAAS,IAAI64C,EAAAd,wBACfpqD,KAAKipD,mBAAmBhP,UACxBwO,EACA0O,EAAc9M,YACd8M,EAAc/N,SACd/hD,EACA8vD,EAAc7M,SACd6M,EAAc5M,iCACdzpD,OACAA,EACAmY,KAAKtS,UAAUwwD,GACfnkC,GAGJ,OADW,IAAIk4B,EAAAgH,2BAA2B7/C,EAAQhL,EAAQrH,KAAKipD,mBAAmBlB,UAEtF,CAEQiL,qBAAAA,CAAsBoE,GAG1B,MAAMC,EAA2Cp+C,KAAKlS,MAAMqwD,EAAgB1P,UAC5E,OAAQ2P,EAAgBxF,YAAYzgD,eAChC,IAAK,UACD,MAAMkmD,EAAoBF,EAAgBnd,UAAUhd,cAC9Cs6B,EAA2C9H,EAAA+H,wBAAwBhP,SAAS4O,EAAgB1P,UAC5FgL,EAAO1yD,KAAKgwD,qBAAqB2C,QAAQ2E,GAG/C,GAAIC,EAAgBE,eAAgB,CAChC,MAAMC,EAAoB13D,KAAKw2D,YAAYztD,MAC3C2uD,EAAkBjB,QAAQgB,eAAiBF,EAAgBE,eAC3Dz3D,KAAKw2D,YAAYxtD,IAAI0uD,GAGzB,MAAMC,EAAmDjF,EAAKkF,uBAC1DL,EACAhI,EAAAsI,sBAAsBC,sCAAsC93D,KAAK6vD,2BAA2B78B,WAAWqjB,YAAY6U,EAAA5U,WAAWyhB,+CAA2Cj3D,KACvKk3D,EAAW,IAAI9M,EAAA+M,0BAA0BV,EAAgBhG,eAAgBoG,GAC/E,GAAM33D,KAAK6vD,2BAA2BqI,iBAClC,IACIl4D,KAAK6vD,2BAA2BqI,iBAAiBl4D,KAAK6vD,2BAA4BmI,GAEpF,MAAOrgD,GAEL,CAGR,MAEJ,IAAK,gBACD,GAAM3X,KAAK6vD,2BAA2BsI,mBAClC,IACIn4D,KAAK6vD,2BAA2BsI,mBAC5Bn4D,KAAK6vD,2BACL,IAAI3E,EAAAkN,4BAA4BhB,EAAgB1P,WAEtD,MAAO/vC,GAEL,CAGR,MAEJ,QACIwyB,EAAA8F,OAAOpP,SAASsI,QACZ,IAAIgB,EAAA2U,gBAAgB,+BAA+BuY,EAAgBxF,2BAGnF,CAEQ1oB,OAAAA,CAAQvjB,GACZ5lB,KAAK4qC,WAAWzB,QAAQvjB,GACxBukB,EAAA8F,OAAOpP,SAASsI,QAAQvjB,EAC5B,CAEQwwC,qBAAAA,GACJ,MAAMiC,EAA+Br4D,KAAKgqD,qBAAqB5T,WAAWC,YAAY,2BACtF,QAA6Bv1C,IAAzBu3D,EACA,OAGJ,MAAMC,EAAqCt4D,KAAKgqD,qBAAqB5T,WAChEC,YAAY,mCACXkiB,EAAuCv4D,KAAKgqD,qBAAqB5T,WAClEC,YAAY,qCAEXmiB,EAAWH,EAAqB/tD,MAAM,KACtCmuD,OAAgD33D,IAA/Bw3D,EAA2C,GAAKA,EAA2BhuD,MAAM,KAClGouD,OAAoD53D,IAAjCy3D,EAA6C,GAAKA,EAA6BjuD,MAAM,KAExGquD,EAAyB,GAC/B,IAAK,IAAI12D,EAAI,EAAGA,EAAIu2D,EAASn4D,OAAQ4B,IAAK,CACtC,MAAM22D,EAAyC,CAAC,EAChDA,EAAW3jD,KAAOujD,EAASv2D,GACvBA,EAAIw2D,EAAep4D,SACnBu4D,EAAWvxD,OAASqkB,OAAO+sC,EAAex2D,KAE1CA,EAAIy2D,EAAiBr4D,SACrBu4D,EAAW58C,SAAW0P,OAAOgtC,EAAiBz2D,KAElD02D,EAAuB/3D,KAAKg4D,GAGhC54D,KAAK64D,cAAcxL,WAAW,mBAAoB,8BAClDrtD,KAAK64D,cAAcxL,WAAW,mBAAoB,CAAC,CAC/CyL,uBAAwBH,EACxBI,SAAU,CAAEtjD,OAAQ,aACpB3Q,KAAM,iBAEd,EAvpBJ8O,EAAAA,qBAAA+7C,gHCzDA,MAAAJ,EAAA57C,EAAA,MACAqlD,EAAArlD,EAAA,MAEA87C,EAAA97C,EAAA,MAEAC,EAAAA,uBAAA,MAOI9G,WAAAA,CAAmBmsD,EAAwChf,GACvDj6C,KAAKk5D,cAAgBjf,EACrBj6C,KAAKm5D,iBAAkB,EACvBn5D,KAAKo5D,gBAAkB,KACvBp5D,KAAKq5D,gBAAkBJ,EACvBj5D,KAAKs5D,qBACT,CAEA,eAAWzG,GAGP,OADA7yD,KAAKs5D,sBACEt5D,KAAKo5D,eAChB,CAEOxB,sBAAAA,CAAuB/W,EAAkC0Y,GAK5D,OAJI1Y,EAAQ2Y,wBAA0B/J,EAAAgK,sBAAsBC,oBACxD15D,KAAKo5D,gBAAkBJ,EAAAW,kBAAkBC,mBACzC55D,KAAKo5D,gBAAgBjuB,YAA0BrqC,IAAhBy4D,EAA6BA,EAAchK,EAAAsI,sBAAsBgC,0BAE7F75D,KAAKo5D,eAChB,CAEOrG,cAAAA,GAC0B,OAAzB/yD,KAAKo5D,iBAA6Bp5D,KAAKo5D,gBAAgB1sB,UACvD1sC,KAAKo5D,gBAAgB5sB,OAE7B,CAEOstB,QAAAA,QAC2Bh5D,IAA1Bd,KAAK+5D,kBAELj8B,aAAa99B,KAAK+5D,kBAEtB/5D,KAAK+yD,gBACT,CAEQuG,mBAAAA,QAC0Bx4D,IAA1Bd,KAAK+5D,kBAELj8B,aAAa99B,KAAK+5D,kBAEtB/5D,KAAK+5D,iBAAmBh8B,YAAW,KAC/B/9B,KAAKq5D,gBAAgB1D,aAAa31D,KAAKk5D,cACjC,GACP,IACP,wHCzDJ,MAAAc,EAAArmD,EAAA,MACAsmD,EAAAtmD,EAAA,MAEAC,EAAAA,8BAAA,MAGI9G,WAAAA,GACI9M,KAAKk6D,YAAc,IAAItU,GAE3B,CAEOoP,SAAAA,CAAU3zB,GACb,GAAIrhC,KAAKk6D,YAAYvrC,IAAI0S,GACrB,MAAM,IAAI24B,EAAAG,sBAAsB,kDAAoD94B,GAExF,MAAM+4B,EAAoC,IAAIH,EAAAI,uBAAuBr6D,KAAMqhC,GAE3E,OADArhC,KAAKk6D,YAAYlxD,IAAIq4B,EAAI+4B,GAClBp6D,KAAKk6D,YAAYnxD,IAAIs4B,EAChC,CAEOsxB,OAAAA,CAAQtxB,GACX,OAAOrhC,KAAKk6D,YAAYnxD,IAAIs4B,EAChC,CAEOs0B,YAAAA,CAAat0B,GAChB,IAAKrhC,KAAKk6D,YAAYvrC,IAAI0S,GACtB,MAAM,IAAI24B,EAAAG,sBAAsB,2DAA6D94B,GAEjG,MAAM+4B,EAAYp6D,KAAKk6D,YAAYnxD,IAAIs4B,GAGvC,OAFA+4B,EAAUN,WACV95D,KAAKk6D,YAAYI,OAAOj5B,GACjB+4B,CACX,8GCvBJxmD,EAAAA,sBAAA,MAOW2mD,SAAAA,CAAUC,GACRx6D,KAAKy6D,cACNz6D,KAAKy6D,YAAc,IAGnBD,aAAkB3wD,MAClB7J,KAAKy6D,YAAcz6D,KAAKy6D,YAAY7vD,OAAO4vD,GAE3Cx6D,KAAKy6D,YAAY75D,KAAK45D,EAE9B,CAGOE,YAAAA,GACH16D,KAAKy6D,iBAAc35D,CACvB,CAGO65D,mBAAAA,CAAoBC,GAClB56D,KAAK66D,eACN76D,KAAK66D,aAAe,IAGpBD,aAAmB/wD,MACnB7J,KAAK66D,aAAe76D,KAAK66D,aAAajwD,OAAOgwD,GAE7C56D,KAAK66D,aAAaj6D,KAAKg6D,EAE/B,CAGOE,aAAAA,GACH96D,KAAK66D,kBAAe/5D,CACxB,CAKOi6D,qBAAAA,GACH,QAA0Bj6D,IAAtBd,KAAK66D,mBAAmD/5D,IAArBd,KAAKy6D,YACxC,OAGJ,MAAMO,EAA0B,CAAC,EAGjC,GAFAA,EAAOC,kBAAoBj7D,KAAK66D,kBAE5B/5D,IAAcd,KAAKy6D,aAAe,IAAMz6D,KAAKy6D,YAAYp6D,OAAQ,CACjE,MAAM66D,EAAuC,GAE7Cl7D,KAAKy6D,YAAYl5D,SAAS6B,IACtB83D,EAAWt6D,KAAK,CACZs/C,KAAM98C,GACR,IAGN43D,EAAOG,OAAS,CAAC,CAAEC,KAAM,UAAWC,MAAOH,IAG/C,OAAOF,CACX,sLC3EJ,MAAA9wB,EAAAv2B,EAAA,MAKAw2B,EAAAx2B,EAAA,MAEAC,EAAAA,gBAAA,MACW,qCAAO+0C,CAA+B2S,GAA2E,IAArCC,EAAAhuD,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,IAAAA,UAAA,GAC3EgW,EAAS2mB,EAAAmf,aAAaC,SAC1B,OAAQgS,GACJ,KAAKnxB,EAAAye,kBAAkB6E,QACnBlqC,EAAS2mB,EAAAmf,aAAamS,iBACtB,MACJ,KAAKrxB,EAAAye,kBAAkB6S,eAGnBl4C,EAASg4C,EAAuBrxB,EAAAmf,aAAamS,iBAAmBtxB,EAAAmf,aAAaS,QAC7E,MACJ,KAAK3f,EAAAye,kBAAkBkB,QACvB,KAAK3f,EAAAye,kBAAkBmB,sBACvB,KAAK5f,EAAAye,kBAAkB8S,cACnBn4C,EAAS2mB,EAAAmf,aAAaS,QACtB,MACJ,KAAK3f,EAAAye,kBAAkB7vC,MACvB,KAAKoxB,EAAAye,kBAAkB+S,WACvB,KAAKxxB,EAAAye,kBAAkBgT,UACvB,QACIr4C,EAAS2mB,EAAAmf,aAAaC,SAG9B,OAAO/lC,CACX,CAEO,gCAAOimC,CAA0B8R,GACpC,IAAI/3C,EAAS2mB,EAAAynB,mBAAmBkK,YAChC,OAAQP,GACJ,KAAKnxB,EAAAye,kBAAkB6E,QACvB,KAAKtjB,EAAAye,kBAAkB6S,eACvB,KAAKtxB,EAAAye,kBAAkBkB,QACnBvmC,EAAS2mB,EAAAynB,mBAAmBkK,YAC5B,MACJ,KAAK1xB,EAAAye,kBAAkBmB,sBACvB,KAAK5f,EAAAye,kBAAkB8S,cACvB,KAAKvxB,EAAAye,kBAAkB7vC,MACvB,KAAKoxB,EAAAye,kBAAkB+S,WACvB,KAAKxxB,EAAAye,kBAAkBgT,UACvB,QACIr4C,EAAS2mB,EAAAynB,mBAAmB54C,MAGpC,OAAOwK,CACX,CAEO,mCAAOmmC,CAA6B4R,GACvC,IAAI/3C,EAAgC2mB,EAAA4jB,sBAAsB8D,QAC1D,OAAQ0J,GACJ,KAAKnxB,EAAAye,kBAAkB7vC,MACnBwK,EAAS2mB,EAAA4jB,sBAAsBgO,aAC/B,MACJ,KAAK3xB,EAAAye,kBAAkBmJ,gBACnBxuC,EAAS2mB,EAAA4jB,sBAAsBiE,gBAC/B,MACJ,KAAK5nB,EAAAye,kBAAkB+S,WACnBp4C,EAAS2mB,EAAA4jB,sBAAsBiO,qBAC/B,MACJ,KAAK5xB,EAAAye,kBAAkBgT,UACnBr4C,EAAS2mB,EAAA4jB,sBAAsB8N,UAC/B,MACJ,QACIr4C,EAAS2mB,EAAA4jB,sBAAsB8D,QAIvC,OAAOruC,CAEX,CAEO,gCAAOqmC,CAA0BH,GACpC,IAAIuS,EAAuB,2EAC3B,OAAQvS,GACJ,KAAKvf,EAAA4jB,sBAAsB8N,UACvBI,EAAe,qEACf,MACJ,KAAK9xB,EAAA4jB,sBAAsBiO,qBACvBC,EAAe,gEACf,MACJ,KAAK9xB,EAAA4jB,sBAAsBiE,gBACvBiK,EAAe,4FAKvB,OAAOA,CACX,4jBC5FJ9zB,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,KAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACA,IAAAqoD,EAAAtoD,EAAA,MAASzQ,OAAAA,eAAAA,EAAAA,yBAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAkzD,EAAA5Z,sBAAsB,IAC/B,IAAA6Z,EAAAvoD,EAAA,MAASzQ,OAAAA,eAAAA,EAAAA,yBAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAmzD,EAAAC,sBAAsB,IAC/Bj0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GAEaA,EAAAA,yBAAmC,eACnCA,EAAAA,kCAA4C,wBAC5CA,EAAAA,8BAAwC,oBACxCA,EAAAA,2BAAqC,iBACrCA,EAAAA,6CAAuD,6GC9DpE,MAAa8pC,GAAb9pC,EAAAA,YAAA8pC,EACkBA,EAAAoH,QAAkB,4BAClBpH,EAAAla,cAAwB,gBACxBka,EAAA0e,YAAsB,uBACtB1e,EAAAC,aAAuB,iBACvBD,EAAA2e,YAAsB,eACtB3e,EAAAqR,oBAA8B,kBAC9BrR,EAAA4e,KAAe,OACf5e,EAAA6e,UAAoB,cACpB7e,EAAA8e,gBAA0B,aAC1B9e,EAAA+e,iBAA2B,4GCL7C7oD,EAAAA,SAAA,MAII9G,WAAAA,CAAmB2vC,EAAoBl3C,GACnCvF,KAAK08D,eAAiBjgB,EACtBz8C,KAAK28D,UAAYp3D,CACrB,CAEA,cAAWk3C,GACP,OAAOz8C,KAAK08D,cAChB,CAEA,SAAWn3D,GACP,OAAOvF,KAAK28D,SAChB,0QCpBJ,MAAAzyB,EAAAv2B,EAAA,MAQAw2B,EAAAx2B,EAAA,MAGAw3C,EAAAx3C,EAAA,MAGAu3C,EAAAv3C,EAAA,MAKAypC,EAAAzpC,EAAA,MAEA,MAAaipD,UAAgCzR,EAAAG,sBAElChgD,MAAAA,CACH8vB,EACAowB,EACAnP,GAEA,IAAIsJ,EAAmBvqB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWmV,kCAChE,IAAK9F,EAAU,CACX,MAAMF,EAAiBrqB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWumB,sCAC1DlR,EAAqBR,EAAAG,sBAAsB9F,cAAcC,GAE/DE,EADqBvqB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWsV,6BAA8B,SAAWnG,EAAS,aAAekG,GAC7G,uDAGtB,MAAMtQ,EAAyC,CAC3ClQ,OAAQ,SACR4gB,SAAU3wB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAW0V,uCAGvDhsD,KAAK0lD,mBAAmBtqB,EAAQigB,EAAasK,GAE7C,MAAMhjB,EAAqC,CAAC,OACrB7hC,IAAnB0qD,EAASjmD,OAA0C,KAAnBimD,EAASjmD,QACzCo9B,EAAQ6oB,EAAS/O,YAAc+O,EAASjmD,OAE5Co9B,EAAQya,EAAAM,YAAYC,cAAgBtB,EAEpCjhB,EAAOgb,WAAWpE,YAAY7H,EAAAmM,WAAWkW,4BAA6B7G,GAEtE,MAAMvJ,EAA6G,SAAhFhhB,EAAOgb,WAAWC,YAAY,oCAAqC,SACtG,OAAO,IAAInM,EAAAoiB,oBAAoB3G,EAAUtK,EAAa1Y,EAAS,IAAIuoB,EAAAqB,0BAA6BriB,EAAAwL,UAAUiB,qBAAqBvb,GAASghB,EAAmBC,EAC/J,CAEQygB,+BAAAA,CAAgCC,GACpC,OAAQA,GACJ,IAAK,UACL,IAAK,UACL,IAAK,SACD,MAAO,SACX,IAAK,YACL,IAAK,YACL,IAAK,UACD,MAAO,UACX,IAAK,mBACL,IAAK,mBACL,IAAK,iBACD,MAAO,iBACX,IAAK,kBACL,IAAK,kBACL,IAAK,gBACD,MAAO,gBACX,IAAK,UACL,IAAK,UACL,IAAK,SACD,MAAO,SACX,IAAK,YACL,IAAK,YACL,IAAK,UACD,MAAO,UACX,IAAK,cACL,IAAK,cACL,IAAK,aACD,MAAO,aACX,IAAK,eACL,IAAK,eACL,IAAK,cACD,MAAO,cACX,IAAK,eACL,IAAK,eACL,IAAK,cACD,MAAO,cACX,IAAK,iBACL,IAAK,iBACL,IAAK,gBACD,MAAO,gBACX,IAAK,iBACL,IAAK,iBACL,IAAK,gBACD,MAAO,gBACX,IAAK,YACL,IAAK,YACL,IAAK,WACD,MAAO,WACX,QACI,OAAOA,EAEnB,EAvFJnpD,EAAAA,wBAAAgpD,iHCrBA,MAAA1yB,EAAAv2B,EAAA,MAKAw2B,EAAAx2B,EAAA,MAWAu3C,EAAAv3C,EAAA,MAeA,MAAaqpD,UAAgC9R,EAAA7D,sBAOzCv6C,WAAAA,CACIy1C,EACAC,EACAxL,EACAsQ,EACAC,GACAplB,MAAMogB,EAAgBC,EAAmBxL,EAAasQ,EAAkBC,GACxEvnD,KAAKi9D,qBAAuB1V,EAC5BvnD,KAAKk9D,oBAAqB,CAC9B,CAEOC,UAAAA,CAAWC,EAA+CC,GAC7Dr9D,KAAKs9D,mBAAqBF,EAC1Bp9D,KAAKu9D,mBAAqBF,EAC1Br9D,KAAKk9D,oBAAqB,CAC9B,CAEUrV,2BAAAA,CAA4B7H,GAElC,IAAI3tC,EACA09B,EACAmY,GAAqB,EAEzB,MAAMW,EAAkC,IAAI1e,EAAA2e,mBAK5C,OAJI9I,EAAkB6R,cAAgB3nB,EAAA2V,YAAYK,MAC9C2I,EAAY7W,YAAY7H,EAAAmM,WAAWyS,iCAAkC/I,EAAkB0H,UAGnF1H,EAAkB78B,KAAK/R,eAC3B,IAAK,oBACD,MAAMosD,EAAqCtS,EAAAH,iBAAiBvC,SAASxI,EAAkB0H,UAmBvF,GAjBAr1C,EAAS,IAAI83B,EAAAszB,6BACT38D,EACAd,KAAKipD,mBAAmBhP,UACxB9P,EAAAkf,aAAaqU,kBACbF,EAAiBtd,KACjBsd,EAAiBpU,SACjBoU,EAAiB/Y,OAASzkD,KAAKipD,mBAAmBC,uBAClDsU,EAAiBlT,SACjBkT,EAAiBjT,iCACjBzpD,EACAk/C,EAAkB0H,SAClBmB,GAEJ7oD,KAAKipD,mBAAmBgC,aAAa54C,EAAOhL,QAE5C0oC,EAAK,IAAI5F,EAAAwzB,2BAA2BtrD,EAAQmrD,EAAiB/Y,OAASzkD,KAAKipD,mBAAmBC,uBAAwBlpD,KAAKipD,mBAAmBlB,WAExI/nD,KAAKi9D,qBAAqB9K,YAC5B,IACInyD,KAAKi9D,qBAAqB9K,YAAYnyD,KAAKi9D,qBAAsBltB,GAEnE,MAAOp4B,GAEL,CAGRuwC,GAAY,EACZ,MACJ,IAAK,gBACD,MAAMI,EAA6B4C,EAAA3C,mBAAmBC,SAASxI,EAAkB0H,UACjFr1C,EAAS,IAAI83B,EAAAszB,6BACT38D,EACAd,KAAKipD,mBAAmBhP,UACxBiR,EAAAxC,gBAAgBC,+BAA+BL,EAAOM,mBACtDN,EAAO+B,YACP/B,EAAOc,SACPd,EAAO7D,OAASzkD,KAAKipD,mBAAmBC,uBACxCZ,EAAOgC,SACPhC,EAAOiC,iCACPzpD,EACAk/C,EAAkB0H,SAClBmB,GAEJ9Y,EAAK,IAAI5F,EAAAwzB,2BAA2BtrD,EAAQA,EAAOhL,OAAQrH,KAAKipD,mBAAmBlB,WAEnF,MAAM6V,EAAwBA,KAC1B,GAAM59D,KAAKi9D,qBAAqBhL,WAC5B,IACIjyD,KAAKi9D,qBAAqBhL,WAAWjyD,KAAKi9D,qBAAsBltB,GAElE,MAAOp4B,GAEL,CAKR,GAAM3X,KAAKqzD,oBAAqB,CAC5B,IACIrzD,KAAKqzD,oBAAoBhhD,GAC3B,MAAO9P,GACCvC,KAAKuzD,mBACPvzD,KAAKuzD,kBAAkBhxD,GAM/BvC,KAAKqzD,yBAAsBvyD,EAC3Bd,KAAKuzD,uBAAoBzyD,KAM7B,IAAUd,KAAKk9D,oBAAsB/yB,EAAAkf,aAAaS,UAAY/Z,EAAG19B,OAAOkR,QAExEvjB,KAAKipD,mBAAmBE,mBAAmBpZ,EAAG1oC,OAAS0oC,EAAG19B,OAAO2J,UACjE4hD,KAIA59D,KAAK69D,sBAAwB9tB,EAEjCmY,GAAY,EACZ,MACJ,IAAK,WAKD,GAHAnY,EAAK/vC,KAAK69D,sBACV79D,KAAK69D,2BAAwB/8D,OAEzBA,IAAcivC,EAAI,CAClB,GAAI,KAAOiQ,EAAkB0H,SAGzB,OAIJ3X,EAAK,IAAI5F,EAAAwzB,2BAA2B,IAAIxzB,EAAAszB,wBAA2B,EAAGz9D,KAAKipD,mBAAmBlB,WAGlG,MAAM+V,EAAiC5S,EAAA6S,eAAevV,SAASxI,EAAkB0H,UAMjF,GAAI,OAASoW,GAAoBA,EAAeE,kBAAsBF,EAAeE,iBAAiBznD,OAAQ,CAC1G,IAAI0nD,EAA6Bj+D,KAAKs9D,mBAAmBQ,EAAeE,iBAAiBznD,QAMzF,QAJgCzV,IAA5Bd,KAAKu9D,qBACLU,EAAcj+D,KAAKu9D,oBAGjBU,EAAa,CACf,MAAMC,OAA2Bp9D,IAAhBm9D,QAAwDn9D,IAA3Bm9D,EAAY/b,WAA2B4b,EAAeE,iBAAiBznD,OAAS0nD,EAAY/b,WAC1I,IAAI3+B,EAASwsB,EAAG19B,OAAOkR,YAEnBziB,IAAco9D,IACd36C,EAAS4mB,EAAAkf,aAAa8U,kBAI1B,MAAMnrC,OAAclyB,IAAcivC,EAAG19B,OAAO2gB,WACxC+c,EAAG19B,OAAO2gB,WAAa,IAAImX,EAAA2e,mBAE/B91B,EAAWgf,YAAY7H,EAAAmM,WAAW8nB,gDAAiDpe,EAAkB0H,UAErG3X,EAAK,IAAI5F,EAAAwzB,2BACL,IAAIxzB,EAAAszB,wBACAS,EACAnuB,EAAG19B,OAAOmgD,SACVjvC,EACAwsB,EAAG19B,OAAO4C,KACV86B,EAAG19B,OAAO2J,SACV+zB,EAAG19B,OAAOhL,YACVvG,OACAA,EACAivC,EAAG19B,OAAO2pD,aACVjsB,EAAG19B,OAAOowB,KACVzP,GACJ+c,EAAG1oC,OACH0oC,EAAGgY,YAMf,GAFA/nD,KAAKipD,mBAAmBE,mBAAmBpZ,EAAG1oC,OAAS0oC,EAAG19B,OAAO2J,UAE3Dhc,KAAKi9D,qBAAqBhL,WAC5B,IACIjyD,KAAKi9D,qBAAqBhL,WAAWjyD,KAAKi9D,qBAAsBltB,GAElE,MAAOp4B,GAEL,CAKR,GAAM3X,KAAKqzD,oBAAqB,CAC5B,IACIrzD,KAAKqzD,oBAAoBtjB,EAAG19B,QAC9B,MAAO9P,GACCvC,KAAKuzD,mBACPvzD,KAAKuzD,kBAAkBhxD,GAM/BvC,KAAKqzD,yBAAsBvyD,EAC3Bd,KAAKuzD,uBAAoBzyD,EAE7BonD,GAAY,EAKpB,MAAM+K,EAAW,IAAI/oB,EAAA0D,SAErB,OADAqlB,EAAS/mB,QAAQgc,GACV+K,EAAS/jB,OACpB,CAGUiZ,iBAAAA,CACNJ,EACA9N,EACAmO,EACAC,EACA1wC,GAEA,MAAMqb,EAAiC,IAAImX,EAAA2e,mBAG3C,GAFA91B,EAAWgf,YAAYkZ,EAAA2C,kCAAmC1jB,EAAA2jB,sBAAsBzF,IAE1EroD,KAAKi9D,qBAAqBlP,SAAU,CAEtC,MAAMC,EAAkD,IAAI7jB,EAAAk0B,mCACxDjW,EACAzwC,EACA0wC,OACAvnD,OACAA,EACAinD,GACJ,IACI/nD,KAAKi9D,qBAAqBlP,SAAS/tD,KAAKi9D,qBAAsBjP,GAEhE,MAAO,EAGb,GAAMhuD,KAAKqzD,oBAAqB,CAC5B,MAAMhhD,EAAkC,IAAI83B,EAAAszB,6BACxC38D,EACAm5C,EACA9P,EAAAkf,aAAaC,cACbxoD,OACAA,OACAA,OACAA,OACAA,EACA6W,OACA7W,EACAkyB,GACJ,IACIhzB,KAAKqzD,oBAAoBhhD,GACzBrS,KAAKqzD,yBAAsBvyD,EAE7B,MAAO,EAEjB,EA5QJ8S,EAAAA,wBAAAopD,2GC/BA,MAAalX,GAAblyC,EAAAA,oBAAAkyC,EACkBA,EAAA6I,MAAgB,QAChB7I,EAAAmG,yBAAmC,MACnCnG,EAAAwY,wBAAkC,eAClCxY,EAAAG,mBAA6B,aAC7BH,EAAAqG,iBAA2B,aAC3BrG,EAAAa,0BAAoC,sBACpCb,EAAAK,oBAA8B,sBAC9BL,EAAAC,6BAAuC,+BACvCD,EAAA2I,OAAiB,SACjB3I,EAAAO,wBAAkC,0BAClCP,EAAAwE,SAAmB,WACnBxE,EAAAW,UAAoB,YACpBX,EAAA4I,yBAAmC,yBACnC5I,EAAAe,4BAAsC,8BACtCf,EAAAyY,kBAA4B,oBAC5BzY,EAAA0Y,UAAoB,YACpB1Y,EAAAS,eAAyB,iBACzBT,EAAA2Y,aAAuB,YACvB3Y,EAAA4Y,YAAsB,WACtB5Y,EAAA6Y,iBAA2B,gBAC3B7Y,EAAA8Y,aAAuB,mSCpBzC,MAAA10B,EAAAv2B,EAAA,MAEA,MAAakrD,UAA+B30B,EAAA40B,cAIxChyD,WAAAA,CAAmBiyD,EAAmB9kB,EAAmB8N,GACrD5lB,MAAM48B,EADkExxD,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAuB28B,EAAA80B,UAAUp1B,MAGzG5pC,KAAKk5D,cAAgBjf,EACrBj6C,KAAKi/D,cAAgBlX,CACzB,CAEA,aAAW9N,GACP,OAAOj6C,KAAKk5D,aAChB,CAEA,aAAWnR,GACP,OAAO/nD,KAAKi/D,aAChB,EAjBJrrD,EAAAA,uBAAAirD,EAoBAjrD,EAAAA,0BAAA,cAA+CirD,EAI3C/xD,WAAAA,CAAmBmtC,EAAmB8N,EAAmBxd,EAAuBsB,GAC5E1J,MAAM,4BAA6B8X,EAAW8N,GAE9C/nD,KAAKk/D,kBAAoB30B,EACzBvqC,KAAKm/D,gBAAkBtzB,CAC3B,CAEA,iBAAWtB,GACP,OAAOvqC,KAAKk/D,iBAChB,CAEA,eAAWrzB,GACP,OAAO7rC,KAAKm/D,eAChB,GAGJvrD,EAAAA,sBAAA,cAA2CirD,EAIvC/xD,WAAAA,CAAmBmtC,EAAmB8N,EAAmBxd,EAAuBsB,GAC5E1J,MAAM,wBAAyB8X,EAAW8N,GAC1C/nD,KAAKk/D,kBAAoB30B,EACzBvqC,KAAKm/D,gBAAkBtzB,CAC3B,CAEA,iBAAWtB,GACP,OAAOvqC,KAAKk/D,iBAChB,CAEA,eAAWrzB,GACP,OAAO7rC,KAAKm/D,eAChB,GAGJvrD,EAAAA,yBAAA,cAA8CirD,EAG1C/xD,WAAAA,CAAmBmtC,EAAmBmlB,EAA0BrX,GAC5D5lB,MAAM,2BAA4B8X,EAAW8N,GAC7C/nD,KAAKq/D,qBAAuBD,CAChC,CAEA,oBAAWA,GACP,OAAOp/D,KAAKq/D,oBAChB,GA6BJ,IAAYC,EA1BZ1rD,EAAAA,wBAAA,cAA6CirD,EAKzC/xD,WAAAA,CAAmBmtC,EAAmB1P,EAAuBsB,EAAqBkZ,EAA0BgD,GACxG5lB,MAAM,0BAA2B8X,EAAW8N,GAE5C/nD,KAAKk/D,kBAAoB30B,EACzBvqC,KAAKm/D,gBAAkBtzB,EACvB7rC,KAAKu/D,qBAAuBxa,CAChC,CAEA,iBAAWxa,GACP,OAAOvqC,KAAKk/D,iBAChB,CAEA,eAAWrzB,GACP,OAAO7rC,KAAKm/D,eAChB,CAEA,oBAAWpa,GACP,OAAO/kD,KAAKu/D,oBAChB,GAGJ,SAAYD,GACRA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,uCACAA,EAAAA,EAAA,2CACAA,EAAAA,EAAA,6CACAA,EAAAA,EAAA,iDACAA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,mCACAA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,uEACAA,EAAAA,EAAA,8BACH,CAXD,CAAYA,EAAA1rD,EAAA0rD,8BAAA1rD,EAAAA,4BAA2B,KAavCA,EAAAA,sBAAA,cAA2CirD,EAQvC/xD,WAAAA,CACImtC,EACA1P,EACAsB,EACAkZ,EACAgD,EACAyX,EACAh9B,EACA7qB,GAEAwqB,MAAM,wBAAyB8X,EAAW8N,EAAWvlB,IAAW88B,EAA4B7R,QAAUvjB,EAAA80B,UAAUp1B,KAAOM,EAAA80B,UAAUjmD,OAEjI/Y,KAAKk/D,kBAAoB30B,EACzBvqC,KAAKm/D,gBAAkBtzB,EACvB7rC,KAAKu/D,qBAAuBxa,EAC5B/kD,KAAKy/D,WAAaj9B,EAClBxiC,KAAK0/D,UAAY/nD,EACjB3X,KAAK2/D,eAAiBH,CAC1B,CAEA,iBAAWj1B,GACP,OAAOvqC,KAAKk/D,iBAChB,CAEA,eAAWrzB,GACP,OAAO7rC,KAAKm/D,eAChB,CAEA,oBAAWpa,GACP,OAAO/kD,KAAKu/D,oBAChB,CAEA,cAAWC,GACP,OAAOx/D,KAAK2/D,cAChB,CAEA,UAAWn9B,GACP,OAAOxiC,KAAKy/D,UAChB,CAEA,SAAW9nD,GACP,OAAO3X,KAAK0/D,SAChB,kJClKJ,MAAAx1B,EAAAv2B,EAAA,MACAw2B,EAAAx2B,EAAA,MAEA,IAAYisD,GAAZ,SAAYA,GACRA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,wBACH,CAJD,CAAYA,EAAAhsD,EAAAgsD,kBAAAhsD,EAAAA,gBAAe,KAM3B,SAAYisD,GACRA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,sBACH,CAHD,CAAYjsD,EAAAisD,qBAAAjsD,EAAAA,mBAAkB,KAK9BA,EAAAA,iBAAA,MASI9G,WAAAA,CACIgzD,EACA1pB,GACAp2C,KAAK+/D,wBAA0BD,GAA4C,IAAI31B,EAAA+pB,oBAAoB,IAAI/pB,EAAAgqB,QAAQ,OAC/Gn0D,KAAKggE,eAAiB5pB,EACtBp2C,KAAKigE,kBAAoB31C,SAAS8rB,EAAWC,YAAY,6BAA8B,KAAM,IAC7Fr2C,KAAKkgE,mBAAqB9pB,EAAWC,YAAYnM,EAAAoM,WAAW6pB,4CAAwCr/D,GACpGd,KAAK6sD,qBAAsB,CAC/B,CAEA,cAAWzW,GACP,OAAOp2C,KAAKggE,cAChB,CAEA,mBAAW1M,GACP,OAAOtzD,KAAKogE,mBAChB,CAEA,mBAAW9M,CAAgBlwD,GACvBpD,KAAKogE,oBAAsBh9D,EAC3BpD,KAAKqgE,+BAAiCj9D,IAAUw8D,EAAgBU,YAAc,IAAO,KACrFtgE,KAAK+/D,wBAAwBQ,YAAcX,EAAgBx8D,EAC/D,CAEA,uBAAW8wD,GACP,OAAOl0D,KAAK+/D,uBAChB,CAEA,8BAAWS,GACP,OAAOxgE,KAAKqgE,8BAChB,CAEA,2BAAWvK,GACP,OAAO91D,KAAKogE,sBAAwBR,EAAgBU,WACxD,CAEA,kBAAWG,GACP,OAAOzgE,KAAKkgE,kBAChB,CAEA,6BAAWhU,GACP,OAAOlsD,KAAKo2C,WAAWC,YAAYnM,EAAAoM,WAAWoqB,uDAAmD5/D,EACrG,CAEA,8BAAW6/D,GACP,OAAO3gE,KAAKo2C,WAAWC,YAAYnM,EAAAoM,WAAWsqB,wDAAoD9/D,EACtG,CAEA,wBAAW+/D,GACP,MAAMC,EAAmD,GACzD,IAAIC,GAAuB,EAC3B,QAAuCjgE,IAAnCd,KAAKksD,0BACL,IAAK,MAAMH,KAAY/rD,KAAKksD,0BAA0B5hD,MAAM,KAAM,CAC9D,MAAM02D,EAAiBjV,EAAW7hB,EAAAoM,WAAWwV,mCAAmCh+C,WAC1EmzD,EAAkBjhE,KAAKo2C,WAAWC,YAAY2qB,OAAgBlgE,QACpDA,IAAZmgE,GACAH,EAAOlgE,KAAM,CAAEmrD,WAAUpG,SAAUsb,IACnCF,GAAc,GAEdD,EAAOlgE,KAAM,CAAEmrD,WAAUpG,SAAU,KAI/C,OAAOob,EAAcD,OAAShgE,CAClC,CAEA,iBAAWogE,GACP,OAAOlhE,KAAKigE,iBAChB,CAEA,+BAAWkB,GACP,OAAOnhE,KAAK6sD,mBAChB,CAEA,+BAAWsU,CAA4B/9D,GACnCpD,KAAK6sD,oBAAsBzpD,CAC/B,yGCpGJ,MAAA8mC,EAAAv2B,EAAA,MAQAytD,EAAAztD,EAAA,MAOA0tD,EAAA1tD,EAAA,MAEAC,EAAAA,eAAA,MAuBI9G,WAAAA,CAAmBy9B,GAtBX,KAAA+R,gBAA0B,EAE1B,KAAAglB,gBAAiC,IAAIz3D,MAMrC,KAAA03D,yBAAmC,EACnC,KAAAC,mBAA6B,EAC7B,KAAAC,mBAA6B,EAC7B,KAAAC,yBAAmC,EACnC,KAAAC,mBAA6B,EAC7B,KAAAC,wBAAkC,EAClC,KAAAC,cAAwB,EACxB,KAAAC,yBAAmC,EACnC,KAAAC,gBAA0B,EAG1B,KAAAC,YAAsB,EACtB,KAAAC,uBAAiC,EAGrCjiE,KAAKk/D,kBAAoB30B,EACzBvqC,KAAKk5D,cAAgBhvB,EAAAS,mBACrB3qC,KAAKm/D,gBAAkBj1B,EAAAS,mBACvB3qC,KAAKkiE,iBAAmB,IAAIh4B,EAAA0D,SAG5B5tC,KAAKkiE,iBAAiBh2B,SAC1B,CAEA,aAAW6b,GACP,OAAO/nD,KAAKi/D,aAChB,CAEA,aAAWhlB,GACP,OAAOj6C,KAAKk5D,aAChB,CAEA,eAAWrtB,GACP,OAAO7rC,KAAKm/D,eAChB,CAEA,yBAAWgD,GACP,OAAOniE,KAAKkiE,iBAAiBhzB,OACjC,CAEA,iBAAW2a,GACP,OAAO7pD,KAAKyhE,iBAChB,CAEA,iBAAWvO,GACP,OAAOlzD,KAAKwhE,iBAChB,CAEA,0BAAWtY,GACP,OAAOlpD,KAAK0hE,wBAChB,CAEA,eAAWU,GACP,OAAOpiE,KAAK+hE,eAChB,CAEA,yBAAWM,GACP,OAAOriE,KAAKiiE,sBAChB,CAIA,aAAWK,GACP,OAAOtiE,KAAK6hE,aAChB,CAIA,wBAAWU,GACP,OAAOviE,KAAK8hE,wBAChB,CAEOrO,yBAAAA,CAA0B+O,GACvBxiE,KAAKyiE,8BACPziE,KAAKshE,gBAAgB1gE,KAAK4hE,EAAYE,eAAe1iE,KAAKyiE,8BAElE,CAEOjP,mBAAAA,GACHxzD,KAAK8hE,yBAA2B,EAChC9hE,KAAKyhE,mBAAoB,EACzBzhE,KAAKwhE,mBAAoB,EACzBxhE,KAAK0hE,yBAA2B,EAChC1hE,KAAK2hE,mBAAqB,EAC1B3hE,KAAK+hE,kBACL/hE,KAAKyiE,6BAA+B,IAAIpB,EAAAsB,yBAAyB3iE,KAAKk5D,cAAel5D,KAAKk/D,kBAAmBl/D,KAAKm/D,iBAClHn/D,KAAKmpC,QAAQ,IAAIi4B,EAAAwB,0BAA0B5iE,KAAKi6C,UAAWj6C,KAAKi/D,cAAej/D,KAAKk/D,kBAAmBl/D,KAAKm/D,iBAChH,CAEO,kCAAMlL,CAA6BF,EAAgC8O,GACtE7iE,KAAK03C,cAAgBqc,EACrB/zD,KAAKuhE,yBAA0B,EAE3BsB,QACM7iE,KAAK8iE,aAEX9iE,KAAKmpC,QAAQ,IAAIi4B,EAAA2B,sBAAsB/iE,KAAKk5D,cAAel5D,KAAKi/D,cAAej/D,KAAKk/D,kBAAmBl/D,KAAKm/D,iBAEpH,CAEO6D,oBAAAA,CAAqBje,EAA0B1I,GAClDr8C,KAAKu/D,qBAAuBxa,EAC5B/kD,KAAKi/D,cAAgB5iB,EACrBr8C,KAAKmpC,QAAQ,IAAIi4B,EAAA6B,yBAAyBjjE,KAAKk5D,cAAel5D,KAAKu/D,qBAAsBv/D,KAAKi/D,eAClG,CAEO,qBAAMiE,CAAgBL,GACrBA,SACM7iE,KAAK8iE,YAEnB,CAGO,oCAAMK,CAA+B5gC,EAAoBhf,GAC5D,GAAmB,MAAfgf,EAOA,OANAviC,KAAKmpC,QAAQ,IAAIi4B,EAAAgC,wBAAwBpjE,KAAKi6C,UAAWj6C,KAAKk/D,kBAAmBl/D,KAAKm/D,gBAAiBn/D,KAAKu/D,qBAAsBv/D,KAAKi/D,gBACjIj/D,KAAK03C,eACP13C,KAAK03C,cAAcM,SAEvBh4C,KAAK0hE,yBAA2B1hE,KAAK2hE,wBACrC3hE,KAAK6hE,cAAgB,GAEC,MAAft/B,SACDviC,KAAK8iE,YAEnB,CAEO,8BAAMjN,CAAyBwN,GAClCrjE,KAAKkiE,iBAAiBh2B,WAEjBm3B,GAAyBrjE,KAAK6pD,qBACzB7pD,KAAK8iE,aACX9iE,KAAKgiE,YAAa,IAGlBhiE,KAAK0hE,yBAA2B1hE,KAAK2hE,mBACrC3hE,KAAK03C,cAAcM,SAE3B,CAEOsrB,eAAAA,GACHtjE,KAAKk5D,cAAgBhvB,EAAAS,kBACzB,CAEOsqB,0BAAAA,GACGj1D,KAAKkiE,kBAAsBliE,KAAKgiE,aAElChiE,KAAKkiE,iBAAiBz2B,OAAO,kDAG7BzrC,KAAKkiE,iBAAiBhzB,QAAQpC,OAAOyE,OAAM,UAE/CvxC,KAAKgiE,YAAa,EAClBhiE,KAAKkiE,iBAAmB,IAAIh4B,EAAA0D,QAChC,CAEOqd,YAAAA,CAAa5jD,GACXrH,KAAK4hE,yBACN5hE,KAAK4hE,wBAAyB,EAC9B5hE,KAAKyiE,6BAA6Bc,mBAAmBvjE,KAAK03C,cAAcQ,iBAAiB7wC,IAEjG,CAEO8hD,kBAAAA,CAAmB9hD,GACtBrH,KAAKyiE,6BAA6Be,eAAexjE,KAAK03C,cAAcQ,iBAAiB7wC,IACrFrH,KAAKu1D,oBAAoBluD,EAC7B,CAEOkuD,mBAAAA,CAAoBluD,GACvBrH,KAAK2hE,mBAAqBt6D,EAC1BrH,KAAK4hE,wBAAyB,EAC9B5hE,KAAK03C,cAAcO,cAAc5wC,GACjCrH,KAAKiiE,uBAAyB,CAClC,CAEOwB,WAAAA,CAAYnB,GACftiE,KAAK6hE,eAAiBS,EACtBtiE,KAAK8hE,0BAA4BQ,CACrC,CAEOoB,iBAAAA,GACH1jE,KAAKiiE,wBACT,CAEO,aAAMplB,GACT,IAAK78C,KAAKs8C,eAAgB,CAEtBt8C,KAAKs8C,gBAAiB,EACtB,IAAK,MAAMqnB,KAAc3jE,KAAKshE,sBACpBqC,EAAWx3B,SAGfnsC,KAAKyiE,8BACPziE,KAAKyiE,6BAA6B5lB,UAEtC78C,KAAKwhE,mBAAoB,EAEjC,CAEOoC,YAAAA,GACH,OAAI5jE,KAAKyiE,6BAA6BoB,aAC3B7jE,KAAKyiE,6BAA6BmB,eAElC,IAEf,CAEO,uBAAMzQ,SACHnzD,KAAK8iE,YACf,CAGOgB,aAAAA,GACH9jE,KAAKyhE,mBAAoB,CAC7B,CAEUt4B,OAAAA,CAAQvjB,GACR5lB,KAAKyiE,8BACPziE,KAAKyiE,6BAA6Bt5B,QAAQvjB,GAE9CskB,EAAA+F,OAAOpP,SAASsI,QAAQvjB,EAC5B,CAEQ,gBAAMk9C,GACJ9iE,KAAKwhE,oBACPxhE,KAAKwhE,mBAAoB,QACnBxhE,KAAK+jE,kBAEnB,CAEQ,qBAAMA,GACL/jE,KAAKuhE,0BACNvhE,KAAKuhE,yBAA0B,EAC3BvhE,KAAK03C,qBACC13C,KAAK03C,cAAcvL,SAGrC,wIChQJ,MAAaqrB,EAGT1qD,WAAAA,CAAoB21B,GAChBziC,KAAKgkE,qBAAuB/qD,KAAKlS,MAAM07B,EAC3C,CAEO,eAAO+lB,CAAS/lB,GACnB,OAAO,IAAI+0B,EAAwB/0B,EACvC,CAEA,kBAAWg1B,GACP,OAAOz3D,KAAKgkE,qBAAqBvM,cACrC,CAEA,yBAAW+B,GACP,OAAOx5D,KAAKgkE,qBAAqBxK,qBACrC,CAEA,kBAAWjI,GACP,OAAOvxD,KAAKgkE,qBAAqBzS,cACrC,CAEA,WAAWtC,GACP,OAAOjvD,KAAKgkE,qBAAqB/U,OACrC,EAzBJr7C,EAAAA,wBAAA4jD,EA4BA,SAAYiC,GACRA,EAAAA,EAAA,eACAA,EAAAA,EAAA,wCACH,CAHD,CAAY7lD,EAAA6lD,wBAAA7lD,EAAAA,sBAAqB,iHCpCjC,MAAAs2B,EAAAv2B,EAAA,MA8BA,MAAa+2C,EAGT59C,WAAAA,CAAoB21B,GAChBziC,KAAKikE,yBAA2BhrD,KAAKlS,MAAM07B,GAC3CziC,KAAKikE,yBAAyBrb,kBAAoB1e,EAAA0e,kBAAkB5oD,KAAKikE,yBAAyBrb,kBACtG,CAEO,eAAOJ,CAAS/lB,GACnB,OAAO,IAAIioB,EAAqBjoB,EACpC,CAEOooB,2BAAAA,CAA4BqZ,GAC/B,GAAMlkE,KAAKikE,yBAAyBvW,MAAO,CACvC,IAAIyW,EACJ,IAAK,MAAM3J,KAAUx6D,KAAKikE,yBAAyBvW,MAC/C,GAAM8M,EAAO4J,OAAW5J,EAAO4J,MAAM,GAAI,CACrCD,EAAkB3J,EAAO4J,MAAM,GAAG3f,OAClC,MAGR,GAAM0f,GAAmBA,EAAkBD,EAAY,CACnD,MAAM78D,EAAiB68D,EAAaC,EACpC,IAAK,MAAME,KAAWrkE,KAAKikE,yBAAyBvW,MAAO,CACvD,GAAM2W,EAAQD,MACV,IAAK,MAAME,KAAQD,EAAQD,MACvBE,EAAK7f,QAAUp9C,EAGvB,GAAMg9D,EAAQE,aACV,IAAK,MAAMD,KAAQD,EAAQE,aACvBD,EAAK7f,QAAUp9C,IAMnC,OAAO4R,KAAKtS,UAAU3G,KAAKikE,yBAC/B,CAEA,qBAAWrb,GACP,OAAO5oD,KAAKikE,yBAAyBrb,iBACzC,CACA,SAAW8E,GACP,OAAO1tD,KAAKikE,yBAAyBvW,KACzC,CACA,YAAWtE,GACP,OAAOppD,KAAKikE,yBAAyB7a,QACzC,CACA,UAAW3E,GACP,OAAOzkD,KAAKikE,yBAAyBxf,MACzC,CACA,YAAW6F,GACP,YAAyDxpD,IAAlDd,KAAKikE,yBAAyBO,qBAAgC1jE,EAAYd,KAAKikE,yBAAyBO,gBAAgBla,QACnI,CACA,+BAAWC,GACP,YAAyDzpD,IAAlDd,KAAKikE,yBAAyBO,qBAAgC1jE,EAAYd,KAAKikE,yBAAyBO,gBAAgBC,UACnI,CACA,QAAWvkB,GACP,OAAMlgD,KAAKikE,yBAAyBvW,OAAS1tD,KAAKikE,yBAAyBvW,MAAM,GACtE1tD,KAAKikE,yBAAyBvW,MAAM,GAAGC,SAAW3tD,KAAKikE,yBAAyBvW,MAAM,GAAGrD,YAE7FrqD,KAAKikE,yBAAyB5Z,WACzC,CACA,aAAWG,GACP,OAAOxqD,KAAKikE,yBAAyBzZ,SACzC,EAlEJ52C,EAAAA,qBAAA82C,2HC1BA,SAAYga,GAKRA,EAAAA,EAAA,qBAMAA,EAAAA,EAAA,+BAMAA,EAAAA,EAAA,gBACH,CAlBD,CAAY9wD,EAAA8wD,kBAAA9wD,EAAAA,gBAAe,KAoB3B,SAAYg1C,GACRA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,iDACAA,EAAAA,EAAA,iCACAA,EAAAA,EAAA,iBACAA,EAAAA,EAAA,mCACAA,EAAAA,EAAA,qCACAA,EAAAA,EAAA,2BACAA,EAAAA,EAAA,wBACH,CAVD,CAAYh1C,EAAAg1C,oBAAAh1C,EAAAA,kBAAiB,yGCJ7B,MAAamqD,EAGTjxD,WAAAA,CAAoB21B,GAEZziC,KAAK2kE,mBADI,KAATliC,EAC0B,CAAC,EAEDxpB,KAAKlS,MAAM07B,EAE7C,CAEO,eAAO+lB,CAAS/lB,GACnB,OAAO,IAAIs7B,EAAet7B,EAC9B,CAEA,SAAWmiC,GACP,OAAO5kE,KAAK2kE,mBAAmBC,KACnC,CAEA,oBAAW5G,GACP,OAAOh+D,KAAK2kE,mBAAmB3G,gBACnC,CAEA,YAAW6G,GACP,OAAO7kE,KAAK2kE,mBAAmBE,QACnC,EAzBJjxD,EAAAA,eAAAmqD,4GCpBA,MAAA7zB,EAAAv2B,EAAA,MAiBA,MAAa40C,EAGTz7C,WAAAA,CAAoB21B,GAChBziC,KAAK8kE,uBAAyB7rD,KAAKlS,MAAM07B,GACzCziC,KAAK8kE,uBAAuBlc,kBAAoB1e,EAAA0e,kBAAkB5oD,KAAK8kE,uBAAuBlc,kBAClG,CAEO,eAAOJ,CAAS/lB,GACnB,OAAO,IAAI8lB,EAAmB9lB,EAClC,CAEA,qBAAWmmB,GACP,OAAO5oD,KAAK8kE,uBAAuBlc,iBACvC,CAEA,eAAWyB,GACP,OAAOrqD,KAAK8kE,uBAAuBza,WACvC,CAEA,UAAW5F,GACP,OAAOzkD,KAAK8kE,uBAAuBrgB,MACvC,CAEA,YAAW2E,GACP,OAAOppD,KAAK8kE,uBAAuB1b,QACvC,CAEA,YAAWkB,GACP,YAAuDxpD,IAAhDd,KAAK8kE,uBAAuBN,qBAAgC1jE,EAAYd,KAAK8kE,uBAAuBN,gBAAgBla,QAC/H,CAEA,+BAAWC,GACP,YAAuDzpD,IAAhDd,KAAK8kE,uBAAuBN,qBAAgC1jE,EAAYd,KAAK8kE,uBAAuBN,gBAAgBC,UAC/H,CAEA,aAAWja,GACP,OAAOxqD,KAAK8kE,uBAAuBta,SACvC,EAtCJ52C,EAAAA,mBAAA20C,kLCZA,MAAa4M,EAGTroD,WAAAA,CAAoB21B,GAChBziC,KAAK+kE,wBAA0B9rD,KAAKlS,MAAM07B,EAC9C,CAEO,eAAO+lB,CAAS/lB,GACnB,OAAO,IAAI0yB,EAAe1yB,EAC9B,CAEA,UAAWgiB,GACP,OAAOzkD,KAAK+kE,wBAAwBtgB,MACxC,EAbJ7wC,EAAAA,eAAAuhD,wGCMA,MAAapK,EAGTj+C,WAAAA,CAAoB21B,GAChBziC,KAAKglE,qBAAuB/rD,KAAKlS,MAAM07B,EAC3C,CAEO,eAAO+lB,CAAS/lB,GACnB,OAAO,IAAIsoB,EAAiBtoB,EAChC,CAEA,QAAWyd,GACP,OAAOlgD,KAAKglE,qBAAqB9kB,IACrC,CAEA,UAAWuE,GACP,OAAOzkD,KAAKglE,qBAAqBvgB,MACrC,CAEA,YAAW2E,GACP,OAAOppD,KAAKglE,qBAAqB5b,QACrC,CAEA,YAAWkB,GACP,YAAqDxpD,IAA9Cd,KAAKglE,qBAAqBR,qBAAgC1jE,EAAYd,KAAKglE,qBAAqBR,gBAAgBla,QAC3H,CAEA,+BAAWC,GACP,YAAqDzpD,IAA9Cd,KAAKglE,qBAAqBR,qBAAgC1jE,EAAYd,KAAKglE,qBAAqBR,gBAAgBC,UAC3H,CAEA,aAAWja,GACP,OAAOxqD,KAAKglE,qBAAqBxa,SACrC,EAjCJ52C,EAAAA,iBAAAm3C,qGCHA,MAAasH,EAGTvlD,WAAAA,CAAoB21B,GAChBziC,KAAKilE,kBAAoBhsD,KAAKlS,MAAM07B,EACxC,CAEO,eAAO+lB,CAAS/lB,GACnB,OAAO,IAAI4vB,EAAc5vB,EAC7B,CAEA,UAAW6vB,GACP,OAAOtyD,KAAKilE,kBAAkB3S,MAClC,CAEA,QAAWpS,GACP,OAAOlgD,KAAKilE,kBAAkB/kB,IAClC,CAEA,UAAWuE,GACP,OAAOzkD,KAAKilE,kBAAkBxgB,MAClC,CAEA,YAAW2E,GACP,OAAOppD,KAAKilE,kBAAkB7b,QAClC,EAzBJx1C,EAAAA,cAAAy+C,6HCNA,SAAY6S,GACRA,EAAA,4BACAA,EAAA,oBACAA,EAAA,gBACAA,EAAA,oCACAA,EAAA,wBACAA,EAAA,kCACH,CAPD,CAAYtxD,EAAAsxD,eAAAtxD,EAAAA,aAAY,KAgCxB,MAAauxD,EAGTr4D,WAAAA,CAAoB21B,GAChBziC,KAAKolE,2BAA6BnsD,KAAKlS,MAAM07B,EACjD,CAEO,eAAO+lB,CAAS/lB,GACnB,OAAO,IAAI0iC,EAAuB1iC,EACtC,CAEA,YAAW4iC,GACP,OAAOrlE,KAAKolE,2BAA2BC,QAC3C,EAbJzxD,EAAAA,uBAAAuxD,+GClCA,MAAA78B,EAAA30B,EAAA,KAEA2xD,EAAA3xD,EAAA,MAWA,MAAa4xD,EAGTz4D,WAAAA,CAAoBg+C,GAChB9qD,KAAKwlE,0BAA4B1a,EACjC9qD,KAAKwlE,0BAA0BC,YAAYC,kBAAoBJ,EAAAI,kBAAkB1lE,KAAKwlE,0BAA0BC,YAAYC,kBAChI,CAEO,eAAOld,CAAS/lB,GACnB,OAAO,IAAI8iC,EAAsBtsD,KAAKlS,MAAM07B,GAChD,CAEO,8BAAOkjC,CAAwBC,GAClCt9B,EAAAQ,UAAUC,uBAAuB68B,EAAuB,yBACxD,MAAM9a,EAAqC8a,EAAsB7a,iBAGjE,OAFA6a,EAAsB7a,sBAAmBjqD,EACzCgqD,EAAW2a,YAAeG,EACnB,IAAIL,EAAsBza,EACrC,CAEA,YAAW1B,GACP,OAAOppD,KAAKwlE,0BAA0Bpc,QAC1C,CAEA,UAAW3E,GACP,OAAOzkD,KAAKwlE,0BAA0B/gB,MAC1C,CAEA,QAAWvE,GACP,OAAOlgD,KAAKwlE,0BAA0BtlB,IAC1C,CAEA,eAAWulB,GACP,OAAOzlE,KAAKwlE,0BAA0BC,WAC1C,CAEA,YAAWnb,GACP,OAAOtqD,KAAKwlE,0BAA0BhB,iBAAiBla,QAC3D,EAtCJ12C,EAAAA,sBAAA2xD,2GCbA,MAAAj9B,EAAA30B,EAAA,KACAu2B,EAAAv2B,EAAA,MACA2xD,EAAA3xD,EAAA,MAaA,MAAakyD,EAGT/4D,WAAAA,CAAoB0tD,GAChBx6D,KAAK8lE,sBAAwBtL,EAC7Bx6D,KAAK8lE,sBAAsBld,kBAAoB1e,EAAA0e,kBAAkB5oD,KAAK8lE,sBAAsBld,wBAC7C9nD,IAA3Cd,KAAK8lE,sBAAsBL,cAC3BzlE,KAAK8lE,sBAAsBL,YAAYC,kBAAoBJ,EAAAI,kBAAkB1lE,KAAK8lE,sBAAsBL,YAAYC,mBAE5H,CAEO,eAAOld,CAAS/lB,GACnB,OAAO,IAAIojC,EAAkB5sD,KAAKlS,MAAM07B,GAC5C,CAEO,8BAAOkjC,CAAwBI,GAClCz9B,EAAAQ,UAAUC,uBAAuBg9B,EAAqB,uBACtD,MAAMvL,EAA6BuL,EAAoBC,aAIvD,OAHAD,EAAoBC,kBAAellE,EACnC05D,EAAOiL,YAAeM,EACtBvL,EAAOta,KAAOsa,EAAOnQ,YACd,IAAIwb,EAAkBrL,EACjC,CAEA,qBAAW5R,GACP,OAAO5oD,KAAK8lE,sBAAsBld,iBACtC,CAEA,UAAWnE,GACP,OAAOzkD,KAAK8lE,sBAAsBrhB,MACtC,CAEA,YAAW2E,GACP,OAAOppD,KAAK8lE,sBAAsB1c,QACtC,CAEA,QAAWlJ,GACP,OAAOlgD,KAAK8lE,sBAAsB5lB,IACtC,CAEA,YAAWoK,GACP,OAAOtqD,KAAK8lE,sBAAsBtB,iBAAiBla,QACvD,CAEA,cAAWma,GACP,OAAOzkE,KAAK8lE,sBAAsBtB,iBAAiBC,UACvD,CAEA,eAAWgB,GACP,OAAOzlE,KAAK8lE,sBAAsBL,WACtC,EAlDJ7xD,EAAAA,kBAAAiyD,iHCfA,MAAA37B,EAAAv2B,EAAA,MASA,MAAasyD,EAGTn5D,WAAAA,CAAoB21B,GAChBziC,KAAKkmE,iBAAmBjtD,KAAKlS,MAAM07B,GAC7BziC,KAAKkmE,iBAAiBxB,kBACxB1kE,KAAKkmE,iBAAiBxB,gBAAkBx6B,EAAAw6B,gBAAgB1kE,KAAKkmE,iBAAiBxB,kBAE5E1kE,KAAKkmE,iBAAiB5T,SACxBtyD,KAAKkmE,iBAAiBxB,gBAAkBx6B,EAAAw6B,gBAAgB1kE,KAAKkmE,iBAAiB5T,QAEtF,CAEO,eAAO9J,CAAS/lB,GACnB,OAAO,IAAIwjC,EAAwBxjC,EACvC,CAEA,mBAAWiiC,GACP,OAAO1kE,KAAKkmE,iBAAiBxB,eACjC,CAEA,iBAAWyB,GACP,OAAOnmE,KAAKkmE,iBAAiBC,aACjC,EAvBJvyD,EAAAA,wBAAAqyD,+GCHA,MAAaG,EAGTt5D,WAAAA,CAAoB21B,GAChBziC,KAAKqmE,0BAA4BptD,KAAKlS,MAAM07B,EAChD,CAEO,eAAO+lB,CAAS/lB,GACnB,OAAO,IAAI2jC,EAA0B3jC,EACzC,CAEA,iBAAW6uB,GACP,OAAOtxD,KAAKqmE,0BAA0B/U,aAC1C,CAEA,kBAAWmG,GACP,OAAOz3D,KAAKqmE,0BAA0B5O,cAC1C,CAEA,cAAWl1B,GAGP,OAAQviC,KAAKqmE,0BAA0B9jC,YACnC,IAAK,UACD,OAAO,IACX,IAAK,SACD,OAAO,IACX,IAAK,WACD,OAAO,IACX,QAEI,OAAOviC,KAAKqmE,0BAA0B9jC,WAElD,EAjCJ3uB,EAAAA,0BAAAwyD,+GCNA,MAAAl8B,EAAAv2B,EAAA,MAEAw2B,EAAAx2B,EAAA,MAkBAu3C,EAAAv3C,EAAA,MAYAy3C,EAAAz3C,EAAA,MAiBA+7C,EAAA/7C,EAAA,KAgCA,MAAsB0zC,EAmClBv6C,WAAAA,CACIy1C,EACAC,EACAxL,EACAsQ,EACAC,GAEA,GApCI,KAAA+e,wCAA2DxlE,EAI3D,KAAAylE,2BAA8CzlE,EAU9C,KAAA0lE,eAA4DzoC,WAE5D,KAAA0oC,iBAA2B,EAC3B,KAAAC,sBAAgC,EAS9B,KAAA7Z,qBAA+B,EAC/B,KAAA8Z,qCAA+C,EAiP/C,KAAAzW,uBAAqIpvD,EAExI,KAAA8lE,sBAA0F9lE,EA2GvF,KAAA4vD,wBAA0C5vD,EA0G1C,KAAAgvD,4BAA8ChvD,EAkH9C,KAAA+lE,gCAAyE/lE,EA8BzE,KAAAuvD,6BAAsFvvD,EAmCtF,KAAA0vD,8BAA8E1vD,EAC9E,KAAA0mD,+BAAiE1mD,EACjE,KAAA6mD,mCAA4D7mD,GApnB7DyhD,EACD,MAAM,IAAIpY,EAAAsQ,kBAAkB,kBAGhC,IAAK+H,EACD,MAAM,IAAIrY,EAAAsQ,kBAAkB,qBAGhC,IAAKzD,EACD,MAAM,IAAI7M,EAAAsQ,kBAAkB,eAGhC,IAAK6M,EACD,MAAM,IAAInd,EAAAsQ,kBAAkB,oBAGhCz6C,KAAK6sD,oBAAsBvF,EAAiB6Z,4BAC5CnhE,KAAK8mE,2BAA4B,EACjC9mE,KAAK+mE,mBAAqBxkB,EAC1BviD,KAAKgnE,sBAAwBxkB,EAC7BxiD,KAAKinE,gBAAkBjwB,EACvBh3C,KAAKgqD,qBAAuB1C,EAC5BtnD,KAAKs8C,gBAAiB,EACtBt8C,KAAKu0D,eAAiBhN,EACtBvnD,KAAKipD,mBAAqB,IAAImC,EAAA8b,eAAelnE,KAAKinE,gBAAgB5lC,MAClErhC,KAAKq9C,qBAAuB,IAAIlT,EAAAU,YAChC7qC,KAAKmnE,kBAAoB,IAAIh9B,EAAAU,YAC7B7qC,KAAKonE,mBAAqB,IAAIhc,EAAAic,sBAC9BrnE,KAAK+sD,kBAAoB,IAAI3B,EAAAkc,cAActnE,KAAKonE,oBAChDpnE,KAAKunE,gBAAkB,IAAInc,EAAAnjB,YAED,OADQjoC,KAAKgqD,qBAAqB5T,WAAWC,YAAY6U,EAAA5U,WAAWkxB,kBAAmB,MAAMp2D,eACnE,qBAAV25B,MAA6C,qBAAZ08B,OACvEznE,KAAKwmE,eAAiBr8B,EAAAplB,QAAQgZ,WAER,qBAAXsC,SAEPrgC,KAAKwmE,eAAiBnmC,OAAOtC,WAAW9U,KAAKoX,SAIrDrgC,KAAK+wD,iBAAiBnlB,QAAQolB,IAC1B,GAA6B,0BAAzBA,EAAgB9lD,KAAkC,CAClD,MAAMw8D,EAAwB1W,GACW,OAArC0W,EAAsBnlC,YACe,OAArCmlC,EAAsBnlC,YACe,OAArCmlC,EAAsBnlC,YACe,MAArCmlC,EAAsBnlC,YACtBviC,KAAKipD,mBAAmBoZ,sBAAwBriE,KAAKgqD,qBAAqBkX,gBAErElhE,KAAK2pD,uBAAuBuB,EAAAyG,mBAAmB54C,MACX,OAArC2uD,EAAsBnlC,WAAsB2oB,EAAA4C,sBAAsBiO,qBAAuB7Q,EAAA4C,sBAAsBsG,kBAC/G,GAAGsT,EAAsBnkD,gCAAgCmkD,EAAsBnlC,kBAK3FviC,KAAK6sD,sBACL7sD,KAAKmtD,yBAA2BhjB,EAAAQ,oBAGpC3qC,KAAK2nE,oBACL3nE,KAAK4nE,0BACT,CAEUC,kBAAAA,GACN,MAAMC,EAA0B9nE,KAAKgqD,qBAAqB5T,WAAWC,YAAY6U,EAAA5U,WAAWyxB,oDAAgDjnE,GAC5I,QAAwBA,IAApBgnE,EAA+B,CAC/B,MAAME,EAAYF,EAAgBx9D,MAAM,KAClC29D,EAA4BjoE,KAAKgqD,qBAAqB5T,WAAWC,YAAY6U,EAAA5U,WAAW4xB,8CAA0CpnE,GAClI2U,OAAgC3U,IAArBmnE,EAAmC,aAAe,OAOnE,GANAjoE,KAAK+sD,kBAAkBM,WAAW,cAAe,CAC7C8a,UAAW,CAAE1yD,UACb/O,OAAQ,CAAE0hE,eAAgB,CAAEjxD,KAAM,WAClC2wD,gBAAiBE,SAGIlnE,IAArBmnE,EAAgC,CAChC,MAAMI,EAAgD,CAAC,EACvD,IAAK,MAAMC,KAAQN,EACfK,EAAmBC,GAAQL,EAE/BjoE,KAAK+sD,kBAAkBM,WAAW,YAAa,CAC3Ckb,cAAeF,KAI/B,CAEUG,gCAAAA,GACN,MAAMC,EAAoCzoE,KAAKgqD,qBAAqB5T,WAAWC,YAAY6U,EAAA5U,WAAWuP,yCAAqC/kD,GAC3I,QAAkCA,IAA9B2nE,EAAyC,CACzC,MAAMtxD,EAAOnX,KAAKszD,kBAAoBlI,EAAAwU,gBAAgB8I,aAAe,eACjE1oE,KAAKszD,kBAAoBlI,EAAAwU,gBAAgB+I,UAAY,YAAc,cACjEC,EAAuCt+C,SAASm+C,EAA2B,IAC3E3b,EAAkB9sD,KAAK+sD,kBAAkBC,WAAW,mBAC1DF,EAAgB31C,KAAOA,EACvB21C,EAAgB31C,GAAQ,CACpB0xD,aAAc,CACV1xD,KAAM,SACNyxD,iCAGR5oE,KAAK+sD,kBAAkBM,WAAW,kBAAmBP,GAE7D,CAEU6a,iBAAAA,GACN,MAAM7a,EAAkB9sD,KAAK+sD,kBAAkBC,WAAW,mBAC1D,QAA4DlsD,IAAxDd,KAAKgqD,qBAAqBkC,0BAAyC,CACnE,MAAM4c,EAA4B9oE,KAAKgqD,qBAAqBkC,0BAA0B5hD,MAAM,KAE5F,IAAIy+D,EAEAA,EAD6C,eAA7C/oE,KAAKgqD,qBAAqByW,eACH,mBAEA,qBAG3BzgE,KAAK+sD,kBAAkBM,WAAW,aAAc,CAC5C2b,SAAU,oBACVhB,UAAWc,EACX3xD,KAAM4xD,EACNZ,UAAW,CAAE1yD,OAAQ,aACrBwzD,UAAW,CAAExzD,OAAQ,UAEzBzV,KAAK+sD,kBAAkBM,WAAW,eAAgB,CAC9C+a,eAAgB,CACZc,WAAY,QAEhBC,cAAe,CACXD,WAAY,YAGpB,MAAME,EAA8BppE,KAAKgqD,qBAAqB6W,0BACzC//D,IAAjBsoE,IACAtc,EAAgBsc,aAAeA,EAC/Btc,EAAgBuc,UAAY,CAAE5zD,OAAQ,QACtCq3C,EAAgBqb,UAAY,CAAE1yD,OAAQ,cAItB3U,IADQd,KAAKgqD,qBAAqB5T,WAAWC,YAAY6U,EAAA5U,WAAWyxB,oDAAgDjnE,KAExIgsD,EAAgBuc,UAAY,CAAE5zD,OAAQ,aACtCq3C,EAAgBqb,UAAY,CAAE1yD,OAAQ,aACtCzV,KAAK+sD,kBAAkBM,WAAW,eAAgB,CAC9C+a,eAAgB,CACZc,WAAY,QAEhBC,cAAe,CACXD,WAAY,WAKxBlpE,KAAK+sD,kBAAkBM,WAAW,kBAAmBP,EACzD,CAEU8a,wBAAAA,GACN,GAAI5nE,KAAK6sD,oBAAqB,CAE1B,GAAmC,SADQ7sD,KAAKgqD,qBAAqB5T,WAAWC,YAAY6U,EAAA5U,WAAWoQ,iDAAkD,SAASt1C,cAE9JpR,KAAK+sD,kBAAkBuc,0BACpB,CAC0BtpE,KAAKgqD,qBAAqB5T,WAAWC,YAAY+U,EAAAnB,yBAA0BiB,EAAAhB,aAAagB,EAAAhB,aAAaC,SAAS/4C,gBACtH85C,EAAAhB,aAAagB,EAAAhB,aAAaqf,UAAUjrB,qBACrDt+C,KAAK+sD,kBAAkByc,2BAIvC,CAEA,+BAAWrI,GACP,OAAOnhE,KAAK6sD,mBAChB,CAEA,eAAW7V,GACP,OAAOh3C,KAAKinE,eAChB,CAEA,iBAAWpO,GACP,OAAO74D,KAAK+sD,iBAChB,CAEA,kBAAW0c,GACP,OAAOzpE,KAAKonE,kBAChB,CAEA,eAAW5Q,GACP,OAAOx2D,KAAKunE,eAChB,CAEA,+BAAWmC,CAA4BnkE,GACnCvF,KAAKgqD,qBAAqB5T,WAAWpE,YAAYkZ,EAAA5U,WAAWqzB,6BAA8BpkE,EAC9F,CAEA,oBAAWqkE,CAAiB9kE,GACxB9E,KAAKgqD,qBAAqB5T,WAAWpE,YAAYkZ,EAAA5U,WAAWuzB,sCAAuC/kE,EACvG,CAEA,kBAAWy9C,CAAeunB,GACtB9pE,KAAK+mE,mBAAqB+C,CAC9B,CAEOhtB,UAAAA,GACH,OAAO98C,KAAKs8C,cAChB,CAEO,aAAMO,CAAQt5B,GAEjB,GADAvjB,KAAKs8C,gBAAiB,OAC0Bx7C,IAA5Cd,KAAKsmE,mCACL,IACI,MAAMhW,QAAgCtwD,KAAKsmE,yCACrChW,EAAWzT,QAAQt5B,GAC3B,MAAO5L,GAEL,OAGZ,CAEA,oBAAWo5C,GACP,OAAO/wD,KAAKq9C,oBAChB,CAEA,iBAAW2Y,GACP,OAAOh2D,KAAKmnE,iBAChB,CAEA,mBAAW7T,GACP,OAAOtzD,KAAKgqD,qBAAqBsJ,eACrC,CAMO,eAAMyW,CACT5Z,EACA9e,EACA24B,GAGA,QAA+BlpE,IAA3Bd,KAAKkwD,kBAEL,kBADMlwD,KAAKkwD,kBAAkBC,EAAU9e,EAAiB24B,GAI5DhqE,KAAKsmE,wCAAqCxlE,EAC1Cd,KAAKgqD,qBAAqBsJ,gBAAkBnD,EAC5CnwD,KAAKwoE,mCACLxoE,KAAK6nE,qBAEL7nE,KAAKqzD,oBAAsBhiB,EAC3BrxC,KAAKuzD,kBAAoByW,EAEzBhqE,KAAKipD,mBAAmBuK,sBACxBxzD,KAAKipD,mBAAmBwK,0BAA0BzzD,KAAKinE,gBAAgBr6B,QAGvE,MAAM+mB,EAAmC3zD,KAAK4zD,cAC9C,IAAIG,EAEJ,IACI,MAAMkW,QAA0CjqE,KAAKg3C,YAAYpL,OAAO5rC,KAAKipD,mBAAmBpd,aAC1FV,QAAsCnrC,KAAKg3C,YAAY7L,OACvD0B,QAA6C7sC,KAAKg3C,YAAYnK,WACpE7sC,KAAKymE,gBAAkB55B,EAAW/nC,MAAQ+nC,EAAW/nC,OAASsmD,EAAAtmD,KAAKitC,YAEnEgiB,EAAY,IAAI7pB,EAAA8pB,oBAAoBiW,EAAiB9+B,EAAOmE,sBACtDtvC,KAAKipD,mBAAmBgL,6BAA6BF,GAAW,GACtE/zD,KAAKgqD,qBAAqBkK,oBAAoBC,QAAQ3iB,MAAQ,CAAEjT,OAAQsO,GAE1E,MAAOl1B,GAEL,YADM3X,KAAKipD,mBAAmBkK,oBACxBx7C,EAGV,UACUg8C,EACR,MAAOh8C,GAEL,kBADM3X,KAAK2pD,uBAAuBuB,EAAAyG,mBAAmB54C,MAAOmyC,EAAA4C,sBAAsBsG,kBAAmBz8C,GAIzG,MAAM08C,EAA0C,IAAInJ,EAAAoJ,iBAAiBt0D,KAAKipD,mBAAmBlB,WAEvF/nD,KAAKu0D,eAAeC,gBACtBx0D,KAAKu0D,eAAeC,eAAex0D,KAAKu0D,eAAgBF,GAGvDr0D,KAAKkqE,iBACelqE,KAAKy0D,UAAUV,GAEvBxiB,OAAMrO,gBACbljC,KAAK2pD,uBAAuBuB,EAAAyG,mBAAmB54C,MAAOmyC,EAAA4C,sBAAsB4G,aAAc/8C,EAAM,GAI9G,CAEO,qBAAMwyD,GACT,GAAInqE,KAAKipD,mBAAmBiK,cACxB,UACUlzD,KAAKg3C,YAAY1K,gBACjBtsC,KAAKoqE,uBACLpqE,KAAKipD,mBAAmBkK,0BACxBnzD,KAAKipD,mBAAmBkZ,sBAChC,cACQniE,KAAKipD,mBAAmBpM,UAI1C,CAEO,aAAMtI,GAET,aADMv0C,KAAK4zD,cACJpoB,QAAQU,SACnB,CAEOm+B,YAAAA,CAAaC,EAAeh1B,GAC/Bt1C,KAAK4zD,cAAc9mB,MAAK,KACpB,IACUw9B,GACFA,IAEN,MAAO/nE,GACC+yC,GACFA,EAAI/yC,OAGZghB,IACA,IACU+xB,GACFA,EAAI/xB,GAGV,MAAO5L,GAAQ,IAGzB,CAIO,gBAAM49B,GAST,SARMv1C,KAAK2pD,uBAAuBuB,EAAAyG,mBAAmB54C,MACjDmyC,EAAA4C,sBAAsB8D,QACtB,sBAE4B9wD,IAA5Bd,KAAK0wD,0BACC1wD,KAAK0wD,0BAGoB5vD,IAA/Bd,KAAKumE,sBACL,gBACiBvmE,KAAKumE,uBAAuB1pB,UAC3C,MAAOllC,GAAQ,CAIrB3X,KAAKumE,2BAAwBzlE,CACjC,CAQOowD,WAAAA,CAAY7uB,GAEnB,CAEO,wBAAMkoC,CAAmBpnD,EAAc09B,GAC1C,MAAM/7C,EAAuC,kBAAZ+7C,EAAuB1W,EAAA0V,YAAYK,KAAO/V,EAAA0V,YAAYC,OACjF0qB,EAAyC,kBAAZ3pB,EAAuB,mBAAqB,GAG/E,aADsC7gD,KAAKyxD,mBACzB1V,KAAK,IAAI2T,EAAAgC,wBAAwB5sD,EAAMqe,EAAMnjB,KAAKipD,mBAAmBhP,UAAWuwB,EAAa3pB,GACnH,CAEA,oBAAW4pB,CAAiBlZ,GACxBvxD,KAAK0qE,qBAAuBnZ,CAChC,CAEA,oBAAWkZ,GACP,OAAOzqE,KAAK0qE,oBAChB,CAEA,mCAAWC,CAAgCvnE,GACvCpD,KAAK2mE,oCAAsCvjE,CAC/C,CAOU,uBAAMwnE,GACZ,MAAMC,EAAgB7qE,KAAKipD,mBAAmB2a,eAC9C,IAAmD,IAA/Cvc,EAAsByjB,sBACtB9qE,KAAKs8C,gBACL,OAASuuB,EACT,OAGJ,GAAMxjB,EAAsBwjB,cACxB,IACIxjB,EAAsBwjB,cAAcA,GAEtC,MAAO,CAGb,MAAMva,QAAgCtwD,KAAKyxD,wBACrCnB,EAAWvU,KAAK,IAAI2T,EAAAgC,wBACtBvnB,EAAA0V,YAAYK,KACZ,YACAlgD,KAAKipD,mBAAmBhP,UACxB,mBACA4wB,GACR,CAWU,4BAAMlhB,CACZvB,EACAC,EACA1wC,GAEM3X,KAAKipD,mBAAmBiK,sBACpBlzD,KAAKipD,mBAAmBkK,oBAE9BnzD,KAAKmoD,kBACDnoD,KAAKipD,mBAAmBlB,UACxB/nD,KAAKipD,mBAAmBhP,UACxBmO,EACAC,EACA1wC,GAEZ,CAIU,oBAAMuyD,GACZ,IACI,GAAIlqE,KAAKs8C,eAEL,OAGJ,IAAIgU,QAAmBtwD,KAAKyxD,kBAC5B,MAAMpvB,QAAgBiuB,EAAW/jB,OAEjC,QAAoCzrC,IAAhCd,KAAK8vD,uBACL,OAAO9vD,KAAK8vD,yBAIhB,IAAKztB,EACD,OAAOriC,KAAKkqE,iBAGhBlqE,KAAK+qE,2BAA4B,EACjC,MAAM/qB,EAAoB0P,EAAAgC,wBAAwBrR,sBAAsBhe,GAExE,GAAI2d,EAAkB/F,UAAU7oC,gBAAkBpR,KAAKipD,mBAAmBhP,UAAU7oC,cAChF,OAAQ4uC,EAAkB78B,KAAK/R,eAC3B,IAAK,aACDpR,KAAK8mE,2BAA4B,EACjC9mE,KAAKipD,mBAAmBgM,6BACxB,MAEJ,IAAK,uBACD,MAAMC,EAAsC9J,EAAA+J,eAAe3M,SAASxI,EAAkB0H,UAChF0N,EAAuB,IAAIlK,EAAAmK,qBAAqBH,EAAoBzQ,OAAQzkD,KAAKipD,mBAAmBlB,WACpG/nD,KAAKu0D,eAAeW,qBACtBl1D,KAAKu0D,eAAeW,oBAAoBl1D,KAAKu0D,eAAgBa,GAEjE,MAEJ,IAAK,qBACD,IAAI3yB,EAEAA,EADAud,EAAkB0H,SAASrnD,OAAS,EAC7B2/C,EAAkB0H,SAGlB,gBAEX,MAAM4N,EAAqClK,EAAA+J,eAAe3M,SAAS/lB,GAC7D+yB,EAAsB,IAAItK,EAAAmK,qBAAqBC,EAAmB7Q,OAASzkD,KAAKipD,mBAAmBC,uBAAwBlpD,KAAKipD,mBAAmBlB,WACnJ/nD,KAAKu0D,eAAekB,mBACtBz1D,KAAKu0D,eAAekB,kBAAkBz1D,KAAKu0D,eAAgBiB,GAE/D,MAEJ,IAAK,iBACKx1D,KAAK4qE,oBACP5qE,KAAKipD,mBAAmBY,eAAiB7pD,KAAK8mE,4BAC9C9mE,KAAK8mE,2BAA4B,QAC3B9mE,KAAK2pD,uBAAuBuB,EAAAyG,mBAAmBkK,YAAa3Q,EAAA4C,sBAAsB8D,aAAS9wD,IAErG,MAAM80D,EAAyC,IAAI1K,EAAAoJ,iBAAiBt0D,KAAKipD,mBAAmBlB,WAE5F,SADM/nD,KAAKipD,mBAAmB4M,yBAAyB71D,KAAKgqD,qBAAqB8L,0BAC5E91D,KAAKgqD,qBAAqB8L,yBAA2B91D,KAAKipD,mBAAmBY,gBAAkB7pD,KAAKipD,mBAAmBiK,cAIxH,YAHMlzD,KAAKu0D,eAAewB,gBACtB/1D,KAAKu0D,eAAewB,eAAe/1D,KAAKu0D,eAAgBqB,IAI5DtF,QAAmBtwD,KAAKyxD,wBAClBzxD,KAAKgrE,mBAAmB1a,GAElC,MAEJ,cACetwD,KAAK6nD,4BAA4B7H,IAElChgD,KAAKmnE,mBACPnnE,KAAKg2D,cAAc7sB,QAAQ,IAAIgB,EAAA8rB,aAAajW,EAAkB78B,KAAK/R,cAAe4uC,EAAkB0H,WAKxH,OAAO1nD,KAAKkqE,iBACd,MAAOvyD,GACL,OAAO,KAEf,CAEQszD,mCAAAA,GACJ,MACM7d,EADoBptD,KAAKipD,mBAAmBsZ,qBACRviE,KAAK0mE,sBAC/C1mE,KAAK+sD,kBAAkBme,mCAAmC9d,EAC9D,CAEUiJ,iBAAAA,CAAkB/F,EAAyB6a,GAC7CnrE,KAAK6sD,qBACL7sD,KAAKirE,sCAET,MAAMG,EAAoBprE,KAAK64D,cAAcwS,SAK7C,GAJIF,GACAnrE,KAAKipD,mBAAmBqa,kBAGxB8H,EACA,OAAO9a,EAAWvU,KAAK,IAAI2T,EAAAgC,wBACvBvnB,EAAA0V,YAAYK,KACZ,iBACAlgD,KAAKipD,mBAAmBhP,UACxB,mBACAmxB,GAGZ,CAIUE,IAAAA,GAGV,CAGU,wBAAMN,CAAmB1a,GAA6D,IAApC6a,IAAA59D,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,KAAAA,UAAA,GACxD,QAAwCzM,IAApCd,KAAK6mE,2BACL,OAAO7mE,KAAK6mE,2BAA2BvW,SAGrCtwD,KAAKq2D,kBAAkB/F,EAAY6a,SACnCnrE,KAAKu2D,eAAejG,EAE9B,CAEU,oBAAMiG,CAAejG,GAC3B,MAAMnlB,QAAsCnrC,KAAKg3C,YAAY7L,OAE7D,OAAOmlB,EAAWvU,KAAK,IAAI2T,EAAAgC,wBACvBvnB,EAAA0V,YAAYC,OACZ,QACA9/C,KAAKipD,mBAAmBhP,UACxB,cACA9O,EAAOuC,QAEf,CAKUkmB,WAAAA,GACN,YAAmC9yD,IAA/Bd,KAAKumE,sBACEvmE,KAAKumE,sBAAsBz5B,MAAMwjB,GAChCA,EAAW/rC,UAAY4lB,EAAAqT,gBAAgBK,cACvC79C,KAAKs9C,iBAAmB,KACxBt9C,KAAKumE,2BAAwBzlE,EAC7Bd,KAAK+qE,2BAA4B,EAC1B/qE,KAAK4zD,eAET5zD,KAAKumE,wBACb,KACCvmE,KAAKs9C,iBAAmB,KACxBt9C,KAAKumE,2BAAwBzlE,EAC7Bd,KAAK+qE,2BAA4B,EAC1B/qE,KAAK4zD,kBAIpB5zD,KAAKumE,sBAAwBvmE,KAAKurE,mBAKlCvrE,KAAKumE,sBAAsBh1B,OAAM,cAEIzwC,IAAjCd,KAAKqwD,wBACErwD,KAAKqwD,wBAAwBrwD,KAAKumE,uBAGtCvmE,KAAKumE,sBAChB,CAMUrQ,uBAAAA,CAAwB5F,EAAyBkb,EAAgCC,GAGvF,GAFAD,EAAelI,mBAEoC,IAA/Cjc,EAAsByjB,qBAA+B,CACrD,MAEMvnE,EAAmB,CACrB+vC,QAAS,CACLo4B,OAJ+CzyD,KAAKlS,MAAM0kE,GAIpCn4B,QAAQo4B,SAItCD,EAA0BxyD,KAAKtS,UAAUpD,GAG7C,GAAwH,SAApHvD,KAAKgqD,qBAAqB5T,WAAWC,YAAY,uCAAwC,SAASjlC,cAA0B,CAC5H,MAAMqxB,EAA0ExpB,KAAKlS,MAAM0kE,GAC3FhpC,EAAK6Q,QAAQq4B,wBAA0B,OACvClpC,EAAK6Q,QAAQs4B,QAAU,QACvBH,EAA0BxyD,KAAKtS,UAAU87B,GAG7C,GAAIgpC,EACA,OAAOnb,EAAWvU,KAAK,IAAI2T,EAAAgC,wBACvBvnB,EAAA0V,YAAYK,KACZ,gBACAsrB,EAAevxB,UACf,mBACAwxB,GAIZ,CAEU,qBAAMha,GACZ,YAAgD3wD,IAA5Cd,KAAKsmE,mCACEtmE,KAAKsmE,mCAAmCx5B,MAAMwjB,GAC7CA,EAAW/rC,UAAY4lB,EAAAqT,gBAAgBK,cACvC79C,KAAKs9C,iBAAmB,KACxBt9C,KAAKsmE,wCAAqCxlE,EAC1Cd,KAAK+qE,2BAA4B,EAC1B/qE,KAAKyxD,mBAETzxD,KAAKsmE,qCACb,KACCtmE,KAAKs9C,iBAAmB,KACxBt9C,KAAKsmE,wCAAqCxlE,EAC1Cd,KAAK+qE,2BAA4B,EAC1B/qE,KAAKyxD,sBAIpBzxD,KAAKsmE,mCAAqCtmE,KAAK6rE,4BAClC7rE,KAAKsmE,mCACtB,CAEU,eAAM7R,CAAUwV,GACtB,MAAM1Q,QAA2Cv5D,KAAKg3C,YAAY7L,OAClEnrC,KAAK0mE,sBAAwBnN,EAAYjqB,eAAiB,IAE1D,IAAIw8B,EAAuBj8B,KAAKC,MAGhC,MAAMi8B,EAAyB/rE,KAAKgqD,qBAAqB5T,WAAWC,YAAY,uCAAwC,QAClH21B,EAAkCzS,EAAYjqB,eAAiB,IAAOhlB,SAASyhD,EAAgB,IAC/FE,EAA2BjsE,KAAKipD,mBAAmBmZ,YAEnD8J,EAAqBhpC,UAEvB,IAAKljC,KAAKs8C,iBACLt8C,KAAKipD,mBAAmBY,eACzB7pD,KAAKipD,mBAAmBiK,eACxBlzD,KAAKipD,mBAAmBmZ,cAAgB6J,EAAkB,CAE1D,MAAM3b,QAAgCtwD,KAAKyxD,kBACrC0a,QAAoDlC,EAAgB19B,OAE1E,GAAIvsC,KAAKipD,mBAAmBY,cAExB,OAGJ,IAAIhJ,EACAurB,EA0BJ,IAxBKD,GAAoBA,EAAiBx8B,OACtCkR,EAAU,KACVurB,EAAY,IAEZvrB,EAAUsrB,EAAiBjqC,OAE3BliC,KAAKipD,mBAAmBwa,YAAY5iB,EAAQ5R,YAGxCm9B,EADAJ,GAA2BhsE,KAAKipD,mBAAmBqZ,UACvC,EAEAz/D,KAAK+mB,IAAI,EAAGkiD,EAAej8B,KAAKC,QAIhD,IAAMs8B,SACApsE,KAAKmd,MAAMivD,GAGL,OAAZvrB,IACAirB,EAAej8B,KAAKC,MAA8B,IAArB+Q,EAAQ5R,YAAkD,EAA7BsqB,EAAYjqB,kBAIrEtvC,KAAKs8C,iBACLt8C,KAAKipD,mBAAmBY,eACzB7pD,KAAKipD,mBAAmBiK,eACxBlzD,KAAKipD,mBAAmBmZ,cAAgB6J,EAAkB,CAQ1D,GAPA3b,EAAWvU,KACP,IAAI2T,EAAAgC,wBAAwBvnB,EAAA0V,YAAYC,OAAQ,QAAS9/C,KAAKipD,mBAAmBhP,UAAW,KAAM4G,IACpGtP,OAAM,KAEJvxC,KAAKipD,mBAAmB4M,yBAAyB71D,KAAKgqD,qBAAqB8L,yBAAyBvkB,OAAM,QAAgB,KAGzH46B,GAAkBx8B,MAKnB,OAAOu8B,IAIFlsE,KAAKymE,iBACNzmE,KAAKipD,mBAAmB6a,mBAO5C,OAAOoI,GACX,CAEQ,sBAAMX,GACV,IAAIc,GAA0B,EAE9BrsE,KAAKu/D,qBAAuBp1B,EAAAQ,mBAC5B,MAAMod,EAAoB/nD,KAAKipD,mBAAmBlB,UAClD/nD,KAAKs9C,sBAAkCx8C,IAAdinD,EAA2BA,EAAY5d,EAAAQ,mBAEhE3qC,KAAKipD,mBAAmB+Z,qBAAqBhjE,KAAKu/D,qBAAsBv/D,KAAKs9C,kBAC7E,IAAIgvB,EAAyB,EACzBC,EAAqB,GAEzB,KAAOvsE,KAAKipD,mBAAmBoZ,uBAAyBriE,KAAKgqD,qBAAqBkX,eAAe,CAI7F,MAAMsL,EAAcH,EAAiBrsE,KAAK+mE,mBAAmB/hB,cAAchlD,KAAKu/D,sBAAwBv/D,KAAK+mE,mBAAmB9iC,MAAMjkC,KAAKu/D,sBACrIuK,QAAuB0C,QAEvBxsE,KAAKipD,mBAAmBia,iBAAgB,GAG9C,MAAM5S,EAA0BtwD,KAAKgnE,sBAAsB17D,OAAOtL,KAAKgqD,qBAAsB8f,EAAM9pE,KAAKs9C,kBAExGt9C,KAAKipD,mBAAmBwK,0BAA0BnD,EAAW1jB,QAI7D0jB,EAAW1jB,OAAOhB,QAAQhmB,IACtB5lB,KAAK+wD,iBAAiB5nB,QAAQvjB,EAAM,IAGxC,MAAM6mD,QAAyCnc,EAAWrxB,OAE1D,GAA4B,MAAxBwtC,EAASlqC,WAET,aADMviC,KAAKipD,mBAAmBka,+BAA+BsJ,EAASlqC,YAC/DiJ,QAAQU,QAAQokB,GACQ,OAAxBmc,EAASlqC,aAChB8pC,GAAiB,GAGrBC,EAAiBG,EAASlqC,WAC1BgqC,EAAaE,EAASlpD,OAEtBvjB,KAAKipD,mBAAmBya,oBAI5B,aADM1jE,KAAKipD,mBAAmBka,+BAA+BmJ,EAAgBC,GACtE/gC,QAAQC,OAAO,yCAAyC6gC,MAAmBtsE,KAAKgqD,qBAAqB5T,WAAWC,YAAY6U,EAAA5U,WAAWmV,6CAA6C8gB,IAC/L,CAEQpvD,KAAAA,CAAMuvD,GACV,OAAO,IAAIlhC,SAASU,GAAgClsC,KAAKwmE,eAAet6B,EAASwgC,IACrF,CAEQC,oBAAAA,CAAqBzqC,GACzB,IAAI0qC,EAAc,gBAClB,GAAI,OAAS1qC,EACT0qC,GAAO,WACJ,CACH,MAAMC,EAAuB,IAAIC,WAAW5qC,GAC5C0qC,GAAO,GAAG1qC,EAAO+M,iBACjB,IAAK,IAAIhtC,EAAY,EAAGA,EAAIigC,EAAO+M,WAAYhtC,IAC3C2qE,GAAOC,EAAS5qE,GAAG6L,SAAS,IAAIi/D,SAAS,EAAG,KAAO,KAC7C9qE,EAAI,GAAK,KAAQ,IAEnBynC,QAAQ5xB,KAAK80D,GACbA,EAAM,IAKlBljC,QAAQ5xB,KAAK80D,EACjB,CAEQ,oBAAMxC,GACV,MAAM9Z,QAAgCtwD,KAAKyxD,wBACrCnB,EAAWvU,KAAK,IAAI2T,EAAAgC,wBAAwBvnB,EAAA0V,YAAYC,OAAQ,QAAS9/C,KAAKipD,mBAAmBhP,UAAW,KAAM,MAE5H,CAGQ,yBAAM4xB,GACV,MAAMvb,QAAgCtwD,KAAK4zD,cAC3C,YAAsC9yD,IAAlCd,KAAKwwD,yBACExwD,KAAKwwD,yBAAyBF,UAEnCtwD,KAAKk2D,wBAAwB5F,EAAYtwD,KAAKipD,mBAAoBjpD,KAAKgqD,qBAAqBkK,oBAAoB1tD,mBAChHxG,KAAKgrE,mBAAmB1a,GAAY,GACnCA,EACX,EAr4BJ18C,EAAAA,sBAAAyzC,EAuZkBA,EAAAyjB,sBAAgC,kHCtelD,MAAA5gC,EAAAv2B,EAAA,MAcAytD,EAAAztD,EAAA,MAiBAC,EAAAA,yBAAA,MAoBI9G,WAAAA,CAAmBmtC,EAAmB1P,EAAuBsB,GAnBrD,KAAAyQ,gBAA0B,EAM1B,KAAA0wB,2BAAsC,KACtC,KAAAC,cAAyB,KACzB,KAAAC,8BAAyC,KAY7CltE,KAAKk5D,cAAgBjf,EACrBj6C,KAAKk/D,kBAAoB30B,EACzBvqC,KAAKm/D,gBAAkBtzB,EAEvB7rC,KAAKmtE,qBAAuB,CAAC,EAC7BntE,KAAKotE,oBAAsB,GAC3BptE,KAAKqtE,wBAA0B,EACnC,CAEO7J,cAAAA,CAAe8J,GACdA,EAAoB,GACpBttE,KAAKotE,oBAAoBxsE,KAAKivC,KAAKC,MAAQw9B,EAEnD,CAEO/J,kBAAAA,CAAmB+J,GAClBA,EAAoB,GACpBttE,KAAKqtE,wBAAwBzsE,KAAKivC,KAAKC,MAAQw9B,EAEvD,CAEOnkC,OAAAA,CAAQ5mC,GACX,IAAIvC,KAAKs8C,iBAIL/5C,aAAa6+D,EAAAwB,2BAA6BrgE,EAAE03C,YAAcj6C,KAAKk5D,gBAC/Dl5D,KAAKgtE,2BAA6B,CAC9BO,IAAKhrE,EAAEynC,UACP0a,KAAM,mBACN8oB,MAAOjrE,EAAEynC,YAIbznC,aAAa2nC,EAAA4B,+BAAiCvpC,EAAEgoC,gBAAkBvqC,KAAKk/D,mBAAqB38D,EAAEspC,cAAgB7rC,KAAKm/D,kBACnHn/D,KAAKytE,iBAAmBlrE,EAAEynC,WAG1BznC,aAAa2nC,EAAA+B,8BAAgC1pC,EAAEgoC,gBAAkBvqC,KAAKk/D,mBAAqB38D,EAAEspC,cAAgB7rC,KAAKm/D,kBAClHn/D,KAAKytE,iBAAmBlrE,EAAEynC,WAG1BznC,aAAa2nC,EAAAqB,uBAAyBhpC,EAAEgoC,gBAAkBvqC,KAAKk/D,oBAC1Dl/D,KAAKitE,gBACNjtE,KAAKitE,cAAgB,CACjBM,IAAKhrE,EAAEynC,UACPjxB,MAAOxW,EAAEoV,MACT+sC,KAAM,aACN8oB,MAAOxtE,KAAKytE,oBAKpBlrE,aAAa2nC,EAAAkF,2BAA6B7sC,EAAEgoC,gBAAkBvqC,KAAKk/D,mBAAqB38D,EAAEspC,cAAgB7rC,KAAKm/D,kBAC1Gn/D,KAAKitE,gBACNjtE,KAAKitE,cAAgB,CACjBM,IAAKhrE,EAAEynC,UACPjxB,MAAOxW,EAAEoV,MACT+sC,KAAM,aACN8oB,MAAOxtE,KAAKytE,oBAKpBlrE,aAAa2nC,EAAAmC,8BAAgC9pC,EAAEgoC,gBAAkBvqC,KAAKk/D,mBAAqB38D,EAAEspC,cAAgB7rC,KAAKm/D,kBAC7Gn/D,KAAKitE,gBACNjtE,KAAKitE,cAAgB,CACjBM,IAAKhrE,EAAEynC,UACP0a,KAAM,aACN8oB,MAAOxtE,KAAKytE,oBAKpBlrE,aAAa6+D,EAAA6B,0BAA4B1gE,EAAE03C,YAAcj6C,KAAKk5D,gBAC9Dl5D,KAAKs9C,iBAAmB/6C,EAAEwlD,WAG1BxlD,aAAa2nC,EAAA8U,sBAAwBz8C,EAAE85C,eAAiBr8C,KAAKs9C,mBAC7Dt9C,KAAK0tE,wBAA0BnrE,EAAEynC,WAGjCznC,aAAa2nC,EAAAiV,4BAA8B58C,EAAE85C,eAAiBr8C,KAAKs9C,mBAC9Dt9C,KAAKktE,gCACNltE,KAAKktE,8BAAgC,CACjCK,IAAKhrE,EAAEynC,UACP2jC,GAAI3tE,KAAKs9C,iBACToH,KAAM,aACN8oB,MAAOxtE,KAAK0tE,2BAKpBnrE,aAAa2nC,EAAA0jC,+BAAiCrrE,EAAE85C,eAAiBr8C,KAAKs9C,mBACjEt9C,KAAKktE,gCACNltE,KAAKktE,8BAAgC,CACjCK,IAAKhrE,EAAEynC,UACPjxB,MAAO/Y,KAAK6tE,mBAAmBtrE,EAAEggC,YACjCorC,GAAI3tE,KAAKs9C,iBACToH,KAAM,aACN8oB,MAAOxtE,KAAK0tE,2BAKpBnrE,aAAa2nC,EAAA+V,gCAAkC19C,EAAE85C,eAAiBr8C,KAAKs9C,kBACnE/6C,EAAE8/B,SAAW9/B,EAAE8/B,QAAQM,SAAWpgC,EAAE8/B,QAAQM,QAAQxf,MAAM,CACrDnjB,KAAKmtE,qBAAqB5qE,EAAE8/B,QAAQM,QAAQxf,QAC7CnjB,KAAKmtE,qBAAqB5qE,EAAE8/B,QAAQM,QAAQxf,MAAQ,IAAItZ,OAE5D,MAAMikE,EAAoB,GACtB9tE,KAAKmtE,qBAAqB5qE,EAAE8/B,QAAQM,QAAQxf,MAAM9iB,OAASytE,GAC3D9tE,KAAKmtE,qBAAqB5qE,EAAE8/B,QAAQM,QAAQxf,MAAMviB,KAAK2B,EAAEi9C,qBAIzE,CAEOokB,YAAAA,GACH,MAAMmK,EAAU,IAAIlkE,MAEhB7J,KAAKgtE,4BACLe,EAAQntE,KAAKZ,KAAKgtE,4BAGlBhtE,KAAKitE,eACLc,EAAQntE,KAAKZ,KAAKitE,eAGlBjtE,KAAKktE,+BACLa,EAAQntE,KAAKZ,KAAKktE,+BAGlBltE,KAAKotE,oBAAoB/sE,OAAS,GAClC0tE,EAAQntE,KAAK,CACTotE,gBAAiBhuE,KAAKotE,sBAI1BptE,KAAKqtE,wBAAwBhtE,OAAS,GACtC0tE,EAAQntE,KAAK,CACTqtE,yBAA0BjuE,KAAKqtE,0BAIvC,MAAMa,EAAwB,CAC1BC,QAASJ,EACTK,iBAAkBpuE,KAAKmtE,sBAGrB1qC,EAAOxpB,KAAKtS,UAAUunE,GAS5B,OANAluE,KAAKmtE,qBAAuB,CAAC,EAC7BntE,KAAKgtE,2BAA6B,KAClChtE,KAAKitE,cAAgB,KACrBjtE,KAAKktE,8BAAgC,KACrCltE,KAAKotE,oBAAsB,GAC3BptE,KAAKqtE,wBAA0B,GACxB5qC,CACX,CAGA,gBAAWohC,GACP,OAA0D,IAAlD3gE,OAAOkkB,KAAKpnB,KAAKmtE,sBAAsB9sE,QACP,OAApCL,KAAKgtE,4BACkB,OAAvBhtE,KAAKitE,eACkC,OAAvCjtE,KAAKktE,+BAC+B,IAApCltE,KAAKotE,oBAAoB/sE,QACe,IAAxCL,KAAKqtE,wBAAwBhtE,MACrC,CAEOw8C,OAAAA,GACH78C,KAAKs8C,gBAAiB,CAC1B,CAEQuxB,kBAAAA,CAAmBtrC,GAevB,OAAQA,GACJ,KAAK,IACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KACL,KAAK,KAAM,MAAO,aAClB,KAAK,IAAK,MAAO,eACjB,KAAK,IAAK,MAAO,YACjB,KAAK,IACL,KAAK,KAAM,MAAO,oBAClB,KAAK,IACL,KAAK,KAAM,MAAO,cAClB,KAAK,IACL,KAAK,IAAK,MAAO,UACjB,QAAS,MAAO,cAAgBA,EAAWz0B,WAEnD,mHCtQJ,MAAAo8B,EAAAv2B,EAAA,MAEAC,EAAAA,yBAAA,MAII9G,WAAAA,CACIwmC,EACA8C,GACAp2C,KAAK0xC,YAAc4B,GAAoB,IAAIpJ,EAAAiqB,QAAQ,MACnDn0D,KAAKggE,eAAiB5pB,CAC1B,CAEA,cAAWA,GACP,OAAOp2C,KAAKggE,cAChB,CAEA,WAAW7L,GACP,OAAOn0D,KAAK0xC,WAChB,6JClBJ,MAAAxH,EAAAv2B,EAAA,MAQAw2B,EAAAx2B,EAAA,MAGAw3C,EAAAx3C,EAAA,MAGAu3C,EAAAv3C,EAAA,MAKAypC,EAAAzpC,EAAA,MAEA,MAAM06D,UAAgDljB,EAAAG,sBAE3ChgD,MAAAA,CACH8vB,EACAowB,EACA8iB,EACAjyB,GAEA,IAAIsJ,EAAmBvqB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWmV,kCAChE,IAAK9F,EAAU,CACX,MAAMF,EAAiBrqB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWoV,gCAC1DC,EAAqBR,EAAAG,sBAAsB9F,cAAcC,GACzD9hB,EAAevI,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWsV,6BAA8B,SAASnG,wBAA6BkG,KAC5H4iB,EAAmBnzC,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWuzB,sCAAuC,iCACzGlkB,EAAW,GAAGhiB,gBAAmB3jC,KAAKwuE,eAAeD,MAAaD,IAGtE,MAAMjzB,EAAyC,CAC3ClQ,OAAQ,SACR4gB,SAAU3wB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAW0V,uCAGvDhsD,KAAK0lD,mBAAmBtqB,EAAQigB,EAAasK,GAE7C,MAAMhjB,EAAqC,CAAC,OACrB7hC,IAAnB0qD,EAASjmD,OAA0C,KAAnBimD,EAASjmD,QACzCo9B,EAAQ6oB,EAAS/O,YAAc+O,EAASjmD,OAE5Co9B,EAAQya,EAAAM,YAAYC,cAAgBtB,EACpC1Z,EAAQya,EAAAM,YAAY0e,aAAehhC,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWm4B,6BAE5ErzC,EAAOgb,WAAWpE,YAAY7H,EAAAmM,WAAWkW,4BAA6B7G,GAEtE,MAAMvJ,EAA6G,SAAhFhhB,EAAOgb,WAAWC,YAAY,oCAAqC,SACtG,OAAO,IAAInM,EAAAoiB,oBAAoB3G,EAAUtK,EAAa1Y,EAAS,IAAIuoB,EAAAqB,0BAA6BriB,EAAAwL,UAAUiB,qBAAqBvb,GAASghB,EAAmBC,EAC/J,CAEQmyB,cAAAA,CAAer3D,GACnB,OAAQA,GACJ,IAAK,8BACL,IAAK,IACD,MAAO,gCACX,IAAK,4BACL,IAAK,IACD,MAAO,8BACX,QACI,MAAO,kCAEnB,EAGJvD,EAAAA,oCAAA,cAAyDy6D,EAC9C/iE,MAAAA,CAAQ8vB,EAA0BowB,EAAoBnP,GACzD,OAAOla,MAAM72B,OAAO8vB,EAAQowB,EAAU,cAAenP,EACzD,GAGJzoC,EAAAA,8BAAA,cAAmDy6D,EACxC/iE,MAAAA,CAAQ8vB,EAA0BowB,EAAoBnP,GACzD,OAAOla,MAAM72B,OAAO8vB,EAAQowB,EAAU,UAAWnP,EACrD,mHCnFJ,MAAAnS,EAAAv2B,EAAA,MACAw2B,EAAAx2B,EAAA,MASAu3C,EAAAv3C,EAAA,MAUAy3C,EAAAz3C,EAAA,MASA+7C,EAAA/7C,EAAA,KAYA,MAAa+6D,UAAiCtjB,EAAA/D,sBAM1Cv6C,WAAAA,CACIy1C,EACAC,EACAxL,EACAsQ,EACAC,GACAplB,MAAMogB,EAAgBC,EAAmBxL,EAAasQ,EAAkBC,GACxEvnD,KAAK2uE,sBAAwBpnB,EAC7BvnD,KAAK4uE,uBAAyB53B,EAC9Bh3C,KAAK4mE,iBAAoBt5B,GAAsEttC,KAAK6uE,qBAAqBvhC,GACzHttC,KAAK6mE,2BAA6B,IAAqB7mE,KAAKsrE,MAChE,CAEUzjB,2BAAAA,CAA4B7H,GAElC,IAAIkI,GAAqB,EAEzB,MAAMW,EAAkC,IAAIqC,EAAApC,mBAK5C,GAJI9I,EAAkB6R,cAAgB1nB,EAAA0V,YAAYK,MAC9C2I,EAAY7W,YAAYkZ,EAAA5U,WAAWyS,iCAAkC/I,EAAkB0H,UAIlF,qBADD1H,EAAkB78B,KAAK/R,cAC3B,CACI,MAAMq7D,EAA4BxzD,KAAKlS,MAAMi5C,EAAkB0H,UAC/D,IAAIr1C,EAEAA,EAD6C,YAA7Co6D,EAASjqC,OAAOD,WAAWnxB,cAClB,IAAI85C,EAAA4jB,yBACTrC,EACAvhB,EAAA7B,aAAaC,SACb4B,EAAA4C,sBAAsBgO,aACtB2Q,EAASjqC,OAAOjf,QAGX,IAAI2nC,EAAA4jB,yBACTrC,EACAvhB,EAAA7B,aAAa0lB,mBAGf/uE,KAAKgvE,oBACPhvE,KAAKgvE,mBAAmB9iC,QAAQ75B,GAEpC61C,GAAY,CACP,CAIb,MAAM+K,EAAW,IAAI9oB,EAAAyD,SAErB,OADAqlB,EAAS/mB,QAAQgc,GACV+K,EAAS/jB,OACpB,CAGUiZ,iBAAAA,CACNJ,EACA9N,EACAmO,EACAC,EACA1wC,GAKA,IAHuC,IAAIuzC,EAAApC,oBAChC9W,YAAYoZ,EAAAyC,kCAAmC3C,EAAA4C,sBAAsBzF,IAE1EroD,KAAKgvE,mBAAoB,CAC3B,MAAM38D,EAAmC,IAAI64C,EAAA4jB,yBACzC,CACIP,SAAUvuE,KAAKivE,iBAAiBV,SAChC/rC,OAAQ,CAAED,WAAY5qB,EAAO4L,OAAQ5L,IAEzCuzC,EAAA7B,aAAaC,SACbjB,EACA1wC,GAEJ,IACI3X,KAAKgvE,mBAAmB9iC,QAAQ75B,GAClC,MAAOsF,GACL3X,KAAKgvE,mBAAmBvjC,OAAO9zB,IAG3C,CAEO,0BAAMk3D,CAAqBvhC,GAC9BttC,KAAKivE,iBAAmB3hC,EACxBttC,KAAK4pE,iBAAmBt8B,EAAMihC,SACzBvuE,KAAKgvE,qBACNhvE,KAAKgvE,mBAAqB,IAAI7kC,EAAAyD,UAElC5tC,KAAKipD,mBAAmBuK,sBACxBxzD,KAAKipD,mBAAmBwK,0BAA0BzzD,KAAK4uE,uBAAuBhiC,QAE9E5sC,KAAKgqD,qBAAqB5T,WAAWpE,YAAYkZ,EAAA5U,WAAWod,iBAAkB1zD,KAAKipD,mBAAmBlB,WAGtG,MAAM4L,EAAmC3zD,KAAK4zD,cAExCC,EAAiC7zD,KAAK8zD,qBAAqB9zD,KAAKkvE,sBAAsB5hC,IAEtF3oC,QAA+B3E,KAAK4uE,uBAAuBhjC,OAAO5rC,KAAKipD,mBAAmBpd,aAC1FV,QAAsCnrC,KAAK4uE,uBAAuBzjC,OAClE0B,QAA6C7sC,KAAK4uE,uBAAuB/hC,WAEzEknB,EAAY,IAAI7pB,EAAA8pB,oBAAoBrvD,EAAMwmC,EAAOmE,sBACjDtvC,KAAKipD,mBAAmBgL,6BAA6BF,GAAW,GAEtE/zD,KAAKgqD,qBAAqBkK,oBAAoBC,QAAQ3iB,MAAQ,CAAEjT,OAAQsO,GAExE,UACU8mB,QACAE,EACR,MAAOve,GACLt1C,KAAKmoD,kBAAkBnoD,KAAKipD,mBAAmBlB,UAAW/nD,KAAKipD,mBAAmBhP,UAAWiR,EAAAyG,mBAAmB54C,MAAOmyC,EAAA4C,sBAAsBsG,kBAAmB9e,GAGpK,MAAM+e,EAA0C,IAAInJ,EAAAoJ,iBAAiBt0D,KAAKipD,mBAAmBlB,WAEvF/nD,KAAKu0D,eAAeC,gBACtBx0D,KAAKu0D,eAAeC,eAAex0D,KAAKu0D,eAAgBF,GAGvDr0D,KAAKkqE,iBAQV,OAPyBlqE,KAAKy0D,UAAUV,GAGvBjnB,MAAK,SAAyCn1B,IAC3D3X,KAAKmoD,kBAAkBnoD,KAAKipD,mBAAmBlB,UAAW/nD,KAAKipD,mBAAmBhP,UAAWiR,EAAAyG,mBAAmB54C,MAAOmyC,EAAA4C,sBAAsB4G,aAAc/8C,EAAM,IAG9J3X,KAAKgvE,mBAAmB9/B,OACnC,CAEQ,0BAAM4kB,CAAqBxgB,GAC/B,MAAMgd,QAAgCtwD,KAAKyxD,wBACrCzxD,KAAKmvE,uBAAuB7e,EAAYhd,EAElD,CAEQ,4BAAM67B,CAAuB7e,EAAyBhd,GAC1D,MAAM87B,EAAqBn2D,KAAKtS,UAAU2sC,GAC1C,OAAOgd,EAAWvU,KAAK,IAAI2T,EAAAgC,wBACvBvnB,EAAA0V,YAAYK,KACZ,kBACAlgD,KAAKipD,mBAAmBhP,UACxB,kCACAm1B,GACR,CAEQF,qBAAAA,CAAsB5hC,GAC1B,MAAO,CACH+hC,SAAU,CACNC,cAAe,UACfC,qBAAsB,YAE1BC,WAAYliC,EAAMkiC,WAClBjB,SAAUjhC,EAAMihC,SAExB,EAjKJ36D,EAAAA,yBAAA86D,iHCzCA,MAAAxkC,EAAAv2B,EAAA,MAIAw2B,EAAAx2B,EAAA,MAQAu3C,EAAAv3C,EAAA,MAIAw3C,EAAAx3C,EAAA,MAGAy3C,EAAAz3C,EAAA,MAMAypC,EAAAzpC,EAAA,MACA4xC,EAAA5xC,EAAA,MAIA,MAAa87D,UAAgCtkB,EAAAG,sBAA7Cx+C,WAAAA,uBAEqB,KAAA4iE,uBAAiC,uDACjC,KAAAC,wBAAkC,wDAClC,KAAAC,qBAA+B,qDAC/B,KAAArkB,aAAuB,qBA8E5C,CA5EWjgD,MAAAA,CACH8vB,EACAowB,EACAnP,GAEA,IAAIsJ,EAAmBvqB,EAAOgb,WAAWC,YAAY6U,EAAA5U,WAAWmV,sCAAkC3qD,GAClG,MAAM2kD,EAAiBrqB,EAAOgb,WAAWC,YAAY6U,EAAA5U,WAAWoV,oCAAgC5qD,GAC1F6qD,EAAqBR,EAAAG,sBAAsB9F,cAAcC,GACzD9hB,EAAevI,EAAOgb,WAAWC,YAAY6U,EAAA5U,WAAWsV,6BAA8B,SAAWnG,EAAS,cAAgBkG,GAC1HtQ,EAAyC,CAAC,EAC1CwQ,EAAqBzwB,EAAOgb,WAAWC,YAAY6U,EAAA5U,WAAWwV,wCAAoChrD,GAClGirD,EAAmB3wB,EAAOgb,WAAWC,YAAY6U,EAAA5U,WAAW0V,0CAAsClrD,GAsBxG,GApBI+qD,EACKlG,IAA+E,IAAnEA,EAASliD,OAAO8hD,EAAAO,oBAAoBmG,4BACjD5Q,EAAYkK,EAAAO,oBAAoBmG,0BAA4BJ,GAEzDE,IACFpG,IAA+D,IAAnDA,EAASliD,OAAO8hD,EAAAO,oBAAoBwE,YACjDjP,EAAYkK,EAAAO,oBAAoBwE,UAAYyB,IAI/CpG,IAA6D,IAAjDA,EAASliD,OAAO8hD,EAAAO,oBAAoB2I,UACjDpT,EAAYkK,EAAAO,oBAAoB2I,QAAUrzB,EAAOgb,WAAWC,YAAYlM,EAAA8f,yBAA0BiB,EAAAhB,aAAagB,EAAAhB,aAAaC,SAAS/4C,oBAGhGtQ,IAArCs6B,EAAO8wB,4BACP7Q,EAAYkK,EAAAO,oBAAoBqG,kBAAoB,QAGxDnsD,KAAK0lD,mBAAmBtqB,EAAQigB,EAAasK,IAExCA,EACD,OAAQvqB,EAAOk4B,iBACX,KAAKlI,EAAAwU,gBAAgB8I,aAEb/iB,EADuE,SAAvEvqB,EAAOgb,WAAWC,YAAYlM,EAAA0lC,2BAA4B,SAC/ClsC,EAAO3jC,KAAK4vE,0BAEmB9uE,IAAtCs6B,EAAOulC,4BAA4Cr2C,SAAS8Q,EAAOulC,2BAA4B,IAAM,EAC1F,GAAGh9B,IAAO3jC,KAAKurD,eAAenwB,EAAOulC,6BAErCh9B,EAAO3jC,KAAK2vE,wBAG/B,MACJ,KAAKvkB,EAAAwU,gBAAgB+I,UACjBhjB,EAAWhiB,EAAO3jC,KAAK4vE,qBACvB,MACJ,QAEQjqB,OADsC7kD,IAAtCs6B,EAAOulC,4BAA4Cr2C,SAAS8Q,EAAOulC,2BAA4B,IAAM,EAC1F,GAAGh9B,IAAO3jC,KAAKurD,eAAenwB,EAAOulC,6BAErCh9B,EAAO3jC,KAAK0vE,uBAMvC,MAAM/sC,EAAqC,CAAC,OACrB7hC,IAAnB0qD,EAASjmD,OAA0C,KAAnBimD,EAASjmD,QACzCo9B,EAAQ6oB,EAAS/O,YAAc+O,EAASjmD,OAE5Co9B,EAAQya,EAAAM,YAAYC,cAAgBtB,EAEpC,MAAMD,EAA6G,SAAhFhhB,EAAOgb,WAAWC,YAAY,oCAAqC,SAEhGgW,EAAsB,IAAIniB,EAAAoiB,oBAAoB3G,EAAUtK,EAAa1Y,EAAS,IAAIyoB,EAAAmB,0BAA6BriB,EAAAwL,UAAUiB,qBAAqBvb,GAASghB,EAAmBC,GAI1KjB,EAAciR,EAAoBjR,IAGxC,OAFAhgB,EAAOgb,WAAWpE,YAAYkZ,EAAA5U,WAAWkW,4BAA6BpR,GAE/DiR,CACX,EAlFJz4C,EAAAA,wBAAA67D,gHC9BA,MAAAvlC,EAAAv2B,EAAA,MACAypC,EAAAzpC,EAAA,MAEA,MAAa+9C,UAAgCxnB,EAAA4lC,kBAQzChjE,WAAAA,CACI+kD,EACA1uC,EACA82B,EACAuwB,EACApnC,EACAqJ,EACAsjC,EACA1uC,GAEA,IAAKle,EACD,MAAM,IAAI+mB,EAAAuQ,kBAAkB,QAGhC,IAAKR,EACD,MAAM,IAAI/P,EAAAuQ,kBAAkB,aAGhC,MAAM9X,EAAqC,CAAC,EAY5C,GAXAA,EAAQya,EAAAM,YAAY4e,MAAQn5C,EAC5Bwf,EAAQya,EAAAM,YAAY6e,WAAatiB,EACjCtX,EAAQya,EAAAM,YAAY+e,mBAAoB,IAAI5sB,MAAO4P,cAC/C+qB,IACA7nC,EAAQya,EAAAM,YAAY2e,aAAemO,GAGnC/9B,IACA9J,EAAQya,EAAAM,YAAY8e,iBAAmB/vB,GAGvCsjC,EACA,IAAK,MAAMtzB,KAAcszB,EACjBtzB,IACA9Z,EAAQ8Z,GAAcszB,EAAkBtzB,IAMhDpb,EACAc,MAAM0vB,EAAazuB,EAAMT,EAAStB,GAElCc,MAAM0vB,EAAazuB,EAAMT,GAG7B3iC,KAAKgwE,SAAW7sD,EAChBnjB,KAAKk5D,cAAgBjf,EACrBj6C,KAAKiwE,gBAAkBzF,EACvBxqE,KAAKkwE,aAAezjC,EACpBzsC,KAAKmwE,sBAAwBJ,CACjC,CAEA,QAAW5sD,GACP,OAAOnjB,KAAKgwE,QAChB,CAEA,aAAW/1B,GACP,OAAOj6C,KAAKk5D,aAChB,CAEA,eAAWsR,GACP,OAAOxqE,KAAKiwE,eAChB,CAEA,YAAWxjC,GACP,OAAOzsC,KAAKkwE,YAChB,CAEA,qBAAWH,GACP,OAAO/vE,KAAKmwE,qBAChB,CAEO,4BAAO9vB,CAAsBhe,GAChC,IAAIlf,EAAO,KACP82B,EAAY,KACZuwB,EAAc,KAEd/9B,EAAW,KACf,MAAMsjC,EAA+C,CAAC,EAEtD,GAAI1tC,EAAQM,QACR,IAAK,MAAM8Z,KAAcpa,EAAQM,QACzB8Z,IACIA,EAAWrrC,gBAAkBgsC,EAAAM,YAAY4e,KAAKlrD,cAC9C+R,EAAOkf,EAAQM,QAAQ8Z,GAChBA,EAAWrrC,gBAAkBgsC,EAAAM,YAAY6e,UAAUnrD,cAC1D6oC,EAAY5X,EAAQM,QAAQ8Z,GAGrBA,EAAWrrC,gBAAkBgsC,EAAAM,YAAY2e,YAAYjrD,cAC5Do5D,EAAcnoC,EAAQM,QAAQ8Z,GACvBA,EAAWrrC,gBAAkBgsC,EAAAM,YAAY8e,gBAAgBprD,cAChEq7B,EAAWpK,EAAQM,QAAQ8Z,GAE3BszB,EAAkBtzB,GAAcpa,EAAQM,QAAQ8Z,IAMhE,OAAO,IAAIiV,EACPrvB,EAAQwvB,YACR1uC,EACA82B,EACAuwB,EACAnoC,EAAQe,KACRqJ,EACAsjC,EACA1tC,EAAQhB,GAChB,EArHJztB,EAAAA,wBAAA89C,qGCmCA99C,EAAAA,cAAA,MAII9G,WAAAA,CAAmB28D,GAHX,KAAA/3B,YAA6B,CAAC,EAIlC1xC,KAAKonE,mBAAqBqC,CAC9B,CAOOzc,UAAAA,CAAWojB,GACd,OAAQpwE,KAAK0xC,YAAY0+B,IAAgB,CAAC,CAC9C,CAOO/iB,UAAAA,CAAW+iB,EAAqBhtE,GACnCpD,KAAK0xC,YAAY0+B,GAAehtE,CACpC,CAOOitE,gCAAAA,CAAiC5zC,EACpC6zC,GAC4C,IAA5CnP,EAAA5zD,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,IAAAA,UAAA,QACyCzM,IAArCd,KAAK0xC,YAAYob,kBACjB9sD,KAAK0xC,YAAYob,gBAAkB,CAC/ByjB,WAAY,CACRC,wBAAyB,CAAC,UAIc1vE,IAAhDd,KAAK0xC,YAAYob,gBAAgByjB,aACjCvwE,KAAK0xC,YAAYob,gBAAgByjB,WAAa,CAC1CC,wBAAyB,CAAC,IAGlCxwE,KAAK0xC,YAAYob,gBAAgByjB,WAAWC,wBAA0Bv3D,KAAKlS,MAAM01B,GAC7E0kC,IACAnhE,KAAK0xC,YAAYob,gBAAgB31C,KAAO,gBAE5CnX,KAAKspE,sBACLtpE,KAAK0xC,YAAY++B,aAAahmB,SAAS3qD,QAAQc,KAAK,4BACmB,IAAnEZ,KAAK0xC,YAAY++B,aAAahmB,SAAS3qD,QAAQ4D,QAAQ,QACvD1D,KAAK0xC,YAAY++B,aAAahmB,SAAS3qD,QAAQc,KAAK,OAElD0vE,IACFtwE,KAAK0xC,YAAYob,gBAAgByjB,WAAWG,kBAAoB,CAC5DC,MAAOL,GAEXtwE,KAAK0xC,YAAY++B,aAAahmB,SAAS3qD,QAAQc,KAAK,qBAE5D,CAEO4oE,uBAAAA,QACmC1oE,IAAlCd,KAAK0xC,YAAY++B,eACjBzwE,KAAK0xC,YAAY++B,aAAe,CAC5BhmB,SAAU,CACN3qD,QAAS,IAEbqrC,OAAQ,CAAC,SAG8BrqC,IAA3Cd,KAAK0xC,YAAY++B,aAAahmB,WAC9BzqD,KAAK0xC,YAAY++B,aAAahmB,SAAW,CACrC3qD,QAAS,KAGjBE,KAAK0xC,YAAY++B,aAAatlC,OAAS,UAC3C,CAEOm+B,mBAAAA,QACmCxoE,IAAlCd,KAAK0xC,YAAY++B,eACjBzwE,KAAK0xC,YAAY++B,aAAe,CAC5BhmB,SAAU,CACN3qD,QAAS,IAEbqrC,OAAQ,CAAC,SAG8BrqC,IAA3Cd,KAAK0xC,YAAY++B,aAAahmB,WAC9BzqD,KAAK0xC,YAAY++B,aAAahmB,SAAW,CACrC3qD,QAAS,KAGjBE,KAAK0xC,YAAY++B,aAAatlC,OAAS,YACwC,IAA3EnrC,KAAK0xC,YAAY++B,aAAahmB,SAAS3qD,QAAQ4D,QAAQ,gBACvD1D,KAAK0xC,YAAY++B,aAAahmB,SAAS3qD,QAAQc,KAAK,cAE5D,CAEOsqE,kCAAAA,CAAmC9d,GACtCptD,KAAK0xC,YAAYob,gBAAgBG,mBAAmBG,cAAgBA,CACxE,CAEOie,MAAAA,GAEH,MAAMuF,EAAuB5wE,KAAKonE,mBAAmBrM,wBACrD/6D,KAAKqtD,WAAW,MAAOujB,GAGvB,OADoB33D,KAAKtS,UAAU3G,KAAK0xC,YAE5C,mKClJJ99B,EAAAA,oBAAA,MAII9G,WAAAA,CAAmBwmC,GACftzC,KAAKszC,QAAUA,CACnB,CAEO9sC,SAAAA,GACH,OAAOyS,KAAKtS,UAAU3G,MAAM,CAACkB,EAAUkC,KACnC,GAAIA,GAA0B,kBAAVA,IAAuByG,MAAMmI,QAAQ5O,GAAQ,CAC7D,MAAMG,EAAqC,CAAC,EAC5C,IAAK,MAAM4E,KAAK/E,EACRF,OAAO2T,eAAe/M,KAAK1G,EAAO+E,KAElC5E,EAAY4E,GAAKA,EAAEqiB,OAAO,GAAGpZ,cAAgBjJ,EAAEuiB,UAAU,IAAMtnB,EAAM+E,IAG7E,OAAO5E,EAEX,OAAOH,CAAK,GAEpB,CAEA,WAAW+wD,GACP,OAAOn0D,KAAKszC,OAChB,CAEA,eAAWitB,GACP,OAAOvgE,KAAK6wE,WAChB,CAEA,eAAWtQ,CAAYn9D,GACnBpD,KAAK6wE,YAAcztE,EAAMgO,aAC7B,GAGJwC,EAAAA,QAAA,MAQI9G,WAAAA,CAAmBgkE,GACf9wE,KAAK0rE,OAAS,IAAIqF,EAClB/wE,KAAK8wE,GAAKA,CACd,GAGJ,MAAaC,EAMTjkE,WAAAA,GAII9M,KAAKkL,KAAO,YACZlL,KAAKivD,QAH+B,SAIpCjvD,KAAKgxE,MAAQ,aACbhxE,KAAKsoE,KAAO,YAChB,EAdJ10D,EAAAA,OAAAm9D,EAiBAn9D,EAAAA,GAAA,MAKI9G,WAAAA,CAAmBmkE,EAAkB/lE,EAAc+jD,GAC/CjvD,KAAKixE,SAAWA,EAChBjxE,KAAKkL,KAAOA,EACZlL,KAAKivD,QAAUA,CACnB,GAGJr7C,EAAAA,OAAA,MAKI9G,WAAAA,CAAmBugC,EAAsBC,EAAe2hB,GACpDjvD,KAAKqtC,aAAeA,EACpBrtC,KAAKstC,MAAQA,EACbttC,KAAKivD,QAAUA,CACnB,GAkBJ,SAAY9hB,GACRA,EAAA,sBACAA,EAAA,cACAA,EAAA,YACAA,EAAA,oBACAA,EAAA,kBACAA,EAAA,iBACH,CAPD,CAAYv5B,EAAAu5B,eAAAv5B,EAAAA,aAAY,KASxB,SAAY9O,GACRA,EAAA,cACAA,EAAA,kBACAA,EAAA,UACAA,EAAA,kBACAA,EAAA,wBACAA,EAAA,0BACAA,EAAA,sBACAA,EAAA,8BACAA,EAAA,kBACAA,EAAA,YACAA,EAAA,eACH,CAZD,CAAY8O,EAAA9O,OAAA8O,EAAAA,KAAI,gMCtHhB,MAAAs2B,EAAAv2B,EAAA,MAYAw2B,EAAAx2B,EAAA,MAgBA,MAAau9D,UAAgC/mC,EAAAkd,sBAIzCv6C,WAAAA,CACIy1C,EACAC,EACAxL,EACAsQ,EACA6pB,GACAhvC,MAAMogB,EAAgBC,EAAmBxL,EAAasQ,EAAkB6pB,GACxEnxE,KAAKoxE,qBAAuBD,CAEhC,CAEU,iCAAMtpB,CAA4B7H,GAExC,IAAI3tC,EACJ,MAAMw2C,EAAkC,IAAI3e,EAAA4e,mBAC5CD,EAAY7W,YAAY9H,EAAAoM,WAAWyS,iCAAkC/I,EAAkB0H,UACvF,IAAIQ,GAAqB,EAEzB,OAAQlI,EAAkB78B,KAAK/R,eAC3B,IAAK,oBACL,IAAK,kBACD,MAAM05C,EAA+B3gB,EAAA4gB,iBAAiBvC,SAASxI,EAAkB0H,UAC3ErgD,EAAiByjD,EAAWrG,OAASzkD,KAAKipD,mBAAmBC,uBAEnE72C,EAAS,IAAI63B,EAAAkgB,wBACTpqD,KAAKipD,mBAAmBhP,UACxB/P,EAAAmf,aAAa2B,kBACbF,EAAW5K,KACX4K,EAAW1B,SACX/hD,EACAyjD,EAAWR,SACXQ,EAAWP,iCACXzpD,OACAA,EACAk/C,EAAkB0H,SAClBmB,GAEJ7oD,KAAKipD,mBAAmBgC,aAAa5jD,GAErC,MAAM0oC,EAAK,IAAI7F,EAAAgoB,2BAA2B7/C,EAAQy4C,EAAW1B,SAAUppD,KAAKipD,mBAAmBlB,WAE/F,GAAM/nD,KAAKoxE,qBAAqBjf,YAC5B,IACInyD,KAAKoxE,qBAAqBjf,YAAYnyD,KAAKoxE,qBAAsBrhC,GAEnE,MAAOp4B,GAEL,CAGRuwC,GAAY,EACZ,MACJ,IAAK,gBACD,MAAMI,EAA6Bne,EAAAoe,mBAAmBC,SAASxI,EAAkB0H,UAC3Ee,EAA6Bte,EAAAue,gBAAgBC,+BAA+BL,EAAOM,kBAAmB5oD,KAAK2mE,qCAIjH,GAFA3mE,KAAKipD,mBAAmBE,mBAAmBnpD,KAAKipD,mBAAmBC,uBAAyBZ,EAAO7D,OAAS6D,EAAOc,UAE/Glf,EAAAmf,aAAaC,WAAab,EAAc,CACxC,MAAMc,EAAmCpf,EAAAue,gBAAgBc,0BAA0BlB,EAAOM,mBACpFa,EAA+Ctf,EAAAue,gBAAgBgB,6BAA6BpB,EAAOM,yBAEnG5oD,KAAK2pD,uBACPJ,EACAE,EACAtf,EAAAue,gBAAgBkB,0BAA0BH,QAE3C,CACH,IAAMzpD,KAAKipD,mBAAmBY,eAAiBpB,IAAiBve,EAAAmf,aAAaS,SAAWxB,EAAOM,oBAAsBze,EAAAye,kBAAkBmB,sBAAwB,CAC3J,GAAI/pD,KAAKgqD,qBAAqB5T,WAAWC,YAAYlM,EAAA8f,4BAA8B/f,EAAAggB,aAAahgB,EAAAggB,aAAaC,QACzG93C,EAAS,IAAI63B,EAAAkgB,wBACTpqD,KAAKipD,mBAAmBhP,UACxBwO,EACAH,EAAO+B,YACP/B,EAAOc,SACPd,EAAO7D,OAASzkD,KAAKipD,mBAAmBC,uBACxCZ,EAAOgC,SACPhC,EAAOiC,iCACPzpD,OACAA,EACAk/C,EAAkB0H,SAClBmB,OACD,CACH,MAAM4B,EAAiCtgB,EAAAugB,qBAAqBlC,SAASxI,EAAkB0H,UACjFiD,EAAsBF,EAAShG,OAASzkD,KAAKipD,mBAAmBC,uBAChE0B,EAA8BH,EAASI,4BAA4BF,GAEzEt4C,EAAS,IAAI63B,EAAAkgB,wBACTpqD,KAAKipD,mBAAmBhP,UACxBwO,EACAgC,EAAS7B,oBAAsBze,EAAAye,kBAAkB6E,QAAUhD,EAASiD,MAAM,GAAGC,aAAU7sD,EACvF2pD,EAASrB,SACTuB,EACAF,EAASH,SACTG,EAASF,iCACTzpD,OACAA,EACA8pD,EACA/B,GAGR,MAAMjjC,EAAoC,IAAIskB,EAAAgoB,2BAA2B7/C,EAAQA,EAAOhL,OAAQrH,KAAKipD,mBAAmBlB,WAExH,GAAM/nD,KAAKoxE,qBAAqBnf,WAC5B,IACIjyD,KAAKoxE,qBAAqBnf,WAAWjyD,KAAKoxE,qBAAsBxrD,GAElE,MAAOjO,GAEL,EAKZ,GAAM3X,KAAKqzD,oBAAqB,CAC5B,IACIrzD,KAAKqzD,oBAAoBhhD,GAC3B,MAAO9P,GACCvC,KAAKuzD,mBACPvzD,KAAKuzD,kBAAkBhxD,GAM/BvC,KAAKqzD,yBAAsBvyD,EAC3Bd,KAAKuzD,uBAAoBzyD,GAGjConD,GAAY,EAKpB,OAAOA,CACX,CAGUC,iBAAAA,CACNJ,EACA9N,EACAmO,EACAC,EACA1wC,GAEA,MAAMqb,EAAiC,IAAIkX,EAAA4e,mBAG3C,GAFA91B,EAAWgf,YAAY7H,EAAA0jB,kCAAmC3jB,EAAA4jB,sBAAsBzF,IAE1EroD,KAAKoxE,qBAAqBrjB,SAAU,CACtC,MAAMC,EAAkD,IAAI9jB,EAAAkpB,mCACxDhL,EACAzwC,EACA0wC,OACAvnD,EACAinD,GACJ,IACI/nD,KAAKoxE,qBAAqBrjB,SAAS/tD,KAAKoxE,qBAAsBpjB,GAEhE,MAAO,EAGb,GAAMhuD,KAAKqzD,oBAAqB,CAC5B,MAAMhhD,EAAkC,IAAI63B,EAAAkgB,wBACxCnQ,EACA/P,EAAAmf,aAAaC,cACbxoD,OACAA,OACAA,OACAA,OACAA,OACAA,EACA6W,OACA7W,EACAkyB,GACJ,IACIhzB,KAAKqzD,oBAAoBhhD,GACzBrS,KAAKqzD,yBAAsBvyD,EAE7B,MAAO,EAEjB,EAxLJ8S,EAAAA,wBAAAs9D,gHC5BA,MAAAhnC,EAAAv2B,EAAA,MAUAw2B,EAAAx2B,EAAA,MAOA,MAAawoD,UAA+BhyB,EAAAmY,qBAExCx1C,WAAAA,CACIy1C,EACAC,EACAC,EACA4uB,EACAC,GACInvC,MAAMogB,EAAgBC,EAAmBC,EAAmB6uB,GAC5DtxE,KAAKuxE,sBAAwBF,EAC7BrxE,KAAK6iD,gBAAkBwuB,CAC3B,CAEMtuB,mCAAAA,GACN/iD,KAAKgjD,qBAAqBC,oBAAoBjjD,KAAKuxE,sBACvD,CAEUC,kBAAAA,CAAmBv3B,GACzB,MAAMw3B,EAAoD,IAAIvnC,EAAAwnC,yBAC1D,IAAIxnC,EAAAynC,sBACA13B,EACA/P,EAAAmf,aAAauoB,2BAIf5xE,KAAKuxE,sBAAsBM,kBAC7B7xE,KAAKuxE,sBAAsBM,iBAAiB7xE,KAAKuxE,sBAAuBE,EAEhF,CAEUK,cAAAA,CAAetgC,GACrB,GAAMxxC,KAAKuxE,sBAAsBQ,aAC7B,IACI,MAAMC,EAAkBhyE,KAAKiyE,kBAAkBC,kBAAkBC,UAAU3gC,GACrEzB,EAA+B,IAAI7F,EAAAwnC,yBACrC,IAAIxnC,EAAAynC,sBACA3xE,KAAKiyE,kBAAkBh4B,UACvB/P,EAAAmf,aAAa+oB,kBACbJ,IACRhyE,KAAKuxE,sBAAsBQ,aAAa/xE,KAAKuxE,sBAAuBxhC,GACtE,MAAOp4B,GAEL,CAGZ,CAEU06D,oBAAAA,CAAqBhgE,GAC3B,GAAMrS,KAAKuxE,sBAAsBe,kBAAmB,CAChD,MAAMtkB,EAAwC,IAAI9jB,EAAAwnC,yBAAyBr/D,GAC3E,IACIrS,KAAKuxE,sBAAsBe,kBAAkBtyE,KAAKuxE,sBAAuBvjB,GAE3E,MAAO,EAEjB,CAEUukB,oBAAAA,CAAqBlgE,GAC3B,GAAIrS,KAAKuxE,sBAAsBiB,mBAC3B,IACIxyE,KAAKuxE,sBAAsBiB,mBACvBxyE,KAAKuxE,sBACL,IAAIrnC,EAAAwnC,yBAAyBr/D,IAEnC,MAAO9P,GAEL,CAGZ,CAEUkwE,cAAAA,CAAeC,GACrB,GAAM1yE,KAAKuxE,sBAAsBoB,aAC7B,IACI3yE,KAAKuxE,sBAAsBoB,aAAa3yE,KAAKuxE,sBAAuBmB,GACtE,MAAO/6D,GAEL,CAGZ,CAEUi7D,gBAAAA,CAAiBC,GACvB,GAAM7yE,KAAKuxE,sBAAsBuB,eAC7B,IACI9yE,KAAKuxE,sBAAsBuB,eAAe9yE,KAAKuxE,sBAAuBsB,GACxE,MAAOl7D,GAEL,CAGZ,CAEUo7D,iBAAAA,CAAkBC,GACxB,GAAMhzE,KAAKuxE,sBAAsB0B,gBAC7B,IACIjzE,KAAKuxE,sBAAsB0B,gBAAgBjzE,KAAKuxE,sBAAuByB,GACzE,MAAOr7D,GAEL,CAGZ,EAtGJ/D,EAAAA,uBAAAuoD,0HClBA,MAAAjyB,EAAAv2B,EAAA,MAQAw2B,EAAAx2B,EAAA,MACAw3C,EAAAx3C,EAAA,MACAu3C,EAAAv3C,EAAA,MAKAypC,EAAAzpC,EAAA,MAEA4xC,EAAA5xC,EAAA,MAIAC,EAAAA,iCAAA,MAAA9G,WAAAA,GAEqB,KAAAomE,aAAuB,iCA0C5C,CAxCW5nE,MAAAA,CACH8vB,EACAowB,EACAnP,GAEA,IAAIsJ,EAAmBvqB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWmV,sCAAkC3qD,GAClG,MAAM2kD,EAAiBrqB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWoV,oCAAgC5qD,GAC1F6qD,EAAqBR,EAAAG,sBAAsB9F,cAAcC,GACzDoG,EAAazwB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWwV,wCAAoChrD,GAC1FqyE,OAA6BryE,IAAf+qD,EAA4B,MAAQ,QAClDloB,EAAevI,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWsV,6BAA8B,SAAWnG,EAAS,IAAM0tB,EAAa,UAAYxnB,GAEzItQ,EAAyC,CAAC,EAC1C1Y,EAAqC,CAAC,OAErB7hC,IAAnB0qD,EAASjmD,OAA0C,KAAnBimD,EAASjmD,QACzCo9B,EAAQ6oB,EAAS/O,YAAc+O,EAASjmD,OAE5Co9B,EAAQya,EAAAM,YAAYC,cAAgBtB,OACjBv7C,IAAf+qD,GAA2C,KAAfA,IACvBlG,IAA8E,IAAlEA,EAASliD,OAAO8hD,EAAAO,oBAAoBwY,2BACjDjjB,EAAYkK,EAAAO,oBAAoBwY,yBAA2BzS,IAI/DzwB,EAAOg4C,gBACFztB,IAAmE,IAAvDA,EAASliD,OAAO8hD,EAAAO,oBAAoB8Y,gBACjDvjB,EAAYkK,EAAAO,oBAAoB8Y,cAAgB,SAInDjZ,IACDA,EAAWhiB,EAAO3jC,KAAKkzE,cAG3B93C,EAAOgb,WAAWpE,YAAY7H,EAAAmM,WAAWkW,4BAA6B7G,GAEtE,MAAMvJ,EAA6G,SAAhFhhB,EAAOgb,WAAWC,YAAY,oCAAqC,SACtG,OAAO,IAAInM,EAAAoiB,oBAAoB3G,EAAUtK,EAAa1Y,EAAS,IAAIuoB,EAAAqB,0BAA6BriB,EAAAwL,UAAUS,eAAe/a,EAAOgb,YAAagG,EAAmBC,EACpK,+GChEJ,MAAAnS,EAAAv2B,EAAA,MAeAw2B,EAAAx2B,EAAA,MAYAu3C,EAAAv3C,EAAA,MAYA+7C,EAAA/7C,EAAA,KAEA,MAAsB2uC,EA0ElBx1C,WAAAA,CACIy1C,EACAC,EACAC,EACA6uB,GAEA,GAxDM,KAAA+B,mBAA4HvyE,EAc5H,KAAAgvD,4BAAqChvD,EAErC,KAAAwyE,yBAAyDxyE,EAEzD,KAAA0vD,8BAA8E1vD,EAiBhF,KAAAwlE,wCAA2DxlE,GAqB1DyhD,EACD,MAAM,IAAIrY,EAAAuQ,kBAAkB,kBAGhC,IAAK+H,EACD,MAAM,IAAItY,EAAAuQ,kBAAkB,qBAGhC,IAAKgI,EACD,MAAM,IAAIvY,EAAAuQ,kBAAkB,qBAGhCz6C,KAAK+mE,mBAAqBxkB,EAC1BviD,KAAKgnE,sBAAwBxkB,EAC7BxiD,KAAKmjD,sBAAwBV,EAC7BziD,KAAKs8C,gBAAiB,EACtBt8C,KAAKuzE,4BAA8BjC,EACnCtxE,KAAKiyE,kBAAoB,IAAI/mB,EAAAsoB,cAC7BxzE,KAAKq9C,qBAAuB,IAAInT,EAAAW,YAChC7qC,KAAKmnE,kBAAoB,IAAIj9B,EAAAW,YAC7B7qC,KAAKgjD,qBAAuB,IAAIkI,EAAAuoB,iBAChCzzE,KAAKunE,gBAAkB,IAAIrc,EAAAjjB,YAE3BjoC,KAAK+wD,iBAAiBnlB,QAAQolB,IAC1B,GAA6B,0BAAzBA,EAAgB9lD,KAAkC,CAClD,MAAMw8D,EAAwB1W,EACW,MAArC0W,EAAsBnlC,YACtBviC,KAAK0zE,qBAAqBvpC,EAAAwnB,mBAAmB54C,MACJ,OAArC2uD,EAAsBnlC,WAAsB4H,EAAA2jB,sBAAsBiO,qBAAuB5xB,EAAA2jB,sBAAsBsG,kBAC/G,GAAGsT,EAAsBnkD,gCAAgCmkD,EAAsBnlC,iBAInG,CAzGA,oBAAWoxC,GACP,OAAO3zE,KAAKgjD,oBAChB,CAEA,eAAWwT,GACP,OAAOx2D,KAAKunE,eAChB,CAEA,oBAAWxW,GACP,OAAO/wD,KAAKq9C,oBAChB,CAEA,iBAAW2Y,GACP,OAAOh2D,KAAKmnE,iBAChB,CASA,oBAAWsD,CAAiBlZ,GACxBvxD,KAAK0qE,qBAAuBnZ,CAChC,CACA,oBAAWkZ,GACP,OAAOzqE,KAAK0qE,oBAChB,CAQA,qBAAWwH,CAAkB/mC,GACzBnrC,KAAK4zE,sBAAwBzoC,EAC7BnrC,KAAKiyE,kBAAkBC,kBAAoB/mC,OACFrqC,IAArCd,KAAKuzE,8BACLvzE,KAAKuzE,4BAA4BpoC,OAASA,QAEhBrqC,IAA1Bd,KAAK2zE,mBACL3zE,KAAK2zE,iBAAiBzB,kBAAoB/mC,EAElD,CA8DO2R,UAAAA,GACH,OAAO98C,KAAKs8C,cAChB,CAEO,aAAMO,CAAQt5B,GAKjB,GAJAvjB,KAAKs8C,gBAAiB,OACmBx7C,IAArCd,KAAKuzE,6BACLvzE,KAAKuzE,4BAA4B/mC,aAEW1rC,IAA5Cd,KAAKsmE,mCAAkD,CACvD,MAAMhW,QAAgCtwD,KAAKsmE,yCACrChW,EAAWzT,QAAQt5B,GAEjC,CAEO,aAAMgxB,SACHv0C,KAAK4zD,aACf,CAEO,wBAAM2W,CAAmBpnD,EAAc09B,GAC1C,MAAM/7C,EAAuC,kBAAZ+7C,EAAuB3W,EAAA2V,YAAYK,KAAOhW,EAAA2V,YAAYC,OACjF0qB,EAAyC,kBAAZ3pB,EAAuB,mBAAqB,GAG/E,aADsC7gD,KAAKyxD,mBACzB1V,KAAK,IAAI2T,EAAAgC,wBAAwB5sD,EAAMqe,EAAMnjB,KAAKiyE,kBAAkBh4B,UAAWuwB,EAAa3pB,GAClH,CAEO,WAAMgzB,CACT5+D,EACA6+D,EACA75B,EACA5I,EACA24B,EACAsH,GAGA,IAAIyC,EAQJ,GALIA,EADAD,EACO7+D,EAEAjV,KAAK6iD,gBAAgBmxB,UAAU/+D,QAGfnU,IAAvBd,KAAKqzE,cACL,OAAOrzE,KAAKqzE,cAAcU,EAAM95B,EAAW5I,EAAiB24B,GAGhEhqE,KAAKqzD,oBAAsBhiB,EAC3BrxC,KAAKuzD,kBAAoByW,EAEzBhqE,KAAKiyE,kBAAkBgC,kBAAkBh6B,EAAWhlC,EAAM6+D,EAAQxC,GAElE,UACUtxE,KAAK4zD,cACX,MAAMtD,QAAgCtwD,KAAKyxD,wBACrCzxD,KAAKk0E,qBAAqB5jB,SAC1BtwD,KAAKm0E,gBAAgB7jB,EAAYyjB,EAAM95B,GAC7Cj6C,KAAKwxE,mBAAmBv3B,GAEnBj6C,KAAKkqE,iBACZ,MAAO3nE,GAEL,OADAvC,KAAK0zE,qBAAqBvpC,EAAAwnB,mBAAmB54C,MAAOoxB,EAAA2jB,sBAAsBsG,kBAAmB7xD,GACtFipC,QAAQC,OAAOlpC,GAE9B,CAEO,kBAAM6xE,SACHp0E,KAAK4zD,cAGX,aAFsC5zD,KAAKyxD,mBAEzB1V,KAAK,IAAI2T,EAAAgC,wBACvBxnB,EAAA2V,YAAYK,KACZ,oBACAlgD,KAAKiyE,kBAAkBh4B,UACvB,mBACAhhC,KAAKtS,UAAU,CACX8O,OAAQ,UAGpB,CAGU4+D,eAAAA,CACNp6B,EACAq6B,EACAjsB,EACA1wC,GACA,MAAMqb,EAAiC,IAAImX,EAAA2e,mBAC3C91B,EAAWgf,YAAYkZ,EAAA2C,kCAAmC1jB,EAAA2jB,sBAAsBzF,IAChF,MAAMh2C,EAAgC,IAAI83B,EAAAwnC,sBACtC13B,EACA9P,EAAAkf,aAAaC,cACbxoD,EACA6W,EACAqb,GAKJ,GAFAhzB,KAAKqyE,qBAAqBhgE,GAEpBrS,KAAKqzD,oBACP,IACIrzD,KAAKqzD,oBAAoBhhD,GAE3B,MAAO,CAEjB,CAGUqhE,oBAAAA,CACNtrB,EACAC,EACA1wC,GAEM3X,KAAKiyE,kBAAkBsC,iBACzBv0E,KAAKiyE,kBAAkBuC,qBAEvBx0E,KAAKq0E,gBACDr0E,KAAKiyE,kBAAkBh4B,UACvBmO,EACAC,EACA1wC,GAEZ,CAGUkwC,2BAAAA,CAA4B4sB,GAClC,OAAO,CACX,CAEU,oBAAMvK,GACZ,IACI,MAAM5Z,QAAgCtwD,KAAKyxD,kBACrCpvB,QAAmCiuB,EAAW/jB,OAEpD,QAAoCzrC,IAAhCd,KAAK8vD,uBACL,OAAO9vD,KAAK8vD,yBAEhB,GAAI9vD,KAAKs8C,eAEL,OAIJ,IAAKja,EACD,OAAKriC,KAAKiyE,kBAAkBsC,eAGjBv0E,KAAKkqE,sBAFZ,EAOR,MAAMlqB,EAAoB0P,EAAAgC,wBAAwBrR,sBAAsBhe,GAExE,GAAI2d,EAAkB/F,UAAU7oC,gBAAkBpR,KAAKiyE,kBAAkBh4B,UAAU7oC,cAC/E,OAAQ4uC,EAAkB78B,KAAK/R,eAC3B,IAAK,aACDpR,KAAKiyE,kBAAkBhd,2BAA2BjV,EAAkB0H,UACpE,MACJ,IAAK,WACD1nD,KAAKiyE,kBAAkByC,yBAAyB10B,EAAkB0H,UAClE,MACJ,IAAK,QACG1nD,KAAKiyE,kBAAkBxlC,SAASr7B,gBAAkB4uC,EAAkBvT,SAASr7B,eACxE4uC,EAAkB4S,aACvB5yD,KAAKiyE,kBAAkB0C,qBAAqB30B,EAAkB4S,YAC9D5yD,KAAK8xE,eAAe9xB,EAAkB4S,iBACG9xD,IAArCd,KAAKuzE,6BACLvzE,KAAKuzE,4BAA4BzgB,MAAM9S,EAAkB4S,aAGjE,MACJ,IAAK,iBACD,MAAMgiB,EAAe1pB,EAAAia,uBAAuB3c,SAASxI,EAAkB0H,UAAU2d,SACjF,IAAK,MAAMjhB,KAAYwwB,EACnB,OAAQxwB,EAASgX,MACb,KAAKlQ,EAAAga,aAAa2P,aAClB,KAAK3pB,EAAAga,aAAa4P,iBACd90E,KAAKiyE,kBAAkB8C,oBAAoB3wB,GAC3C,MAAMsuB,EAA8D,IAAIvoC,EAAA6qC,qCACpE5wB,EAASI,KAAKC,OACdL,EAASI,KAAK4E,SACdhF,EAASI,KAAKvvC,KAAKirC,KACnBkE,EAASI,KAAKvvC,KAAKggE,OACnB7wB,EAASgX,OAASlQ,EAAAga,aAAa2P,aACzB70E,KAAKiyE,kBAAkBiD,kBAAoBl1E,KAAKiyE,kBAAkBkD,sBACxE/wB,EAASI,KAAKvvC,KAAKmgE,cACvBp1E,KAAKyyE,eAAeC,GACpB,MACJ,KAAKxnB,EAAAga,aAAamQ,SACd,MAAMrC,EAAsD,IAAI7oC,EAAAmrC,iCAC5DlxB,EAASI,KAAKC,OACdL,EAASI,KAAK6wB,UAClBr1E,KAAK+yE,kBAAkBC,GACvB,MACJ,KAAK9nB,EAAAga,aAAaqQ,OAEd,GADAv1E,KAAKiyE,kBAAkBuD,yBAAyBpxB,GAC5CA,EAASI,KAAKixB,gBAAiB,CAC/B,MAAM5C,EAAkD,IAAI1oC,EAAAurC,+BACxDtxB,EAASI,KAAKC,OACdL,EAASI,KAAKmxB,SACd31E,KAAKiyE,kBAAkB2D,8BAC3B51E,KAAK4yE,iBAAiBC,GAE1B,MACJ,KAAK3nB,EAAAga,aAAa2Q,aACd71E,KAAKmkD,cAAcC,GACnB,MACJ,KAAK8G,EAAAga,aAAa4Q,WACd91E,KAAKiyE,kBAAkB8D,aAAa3xB,GAIhD,MACJ,IAAK,WAED,IAAI/xC,EADJrS,KAAKiyE,kBAAkBpc,2BAEvB,IACIxjD,QAAerS,KAAKiyE,kBAAkB+D,2BAChCh2E,KAAKqzD,qBACPrzD,KAAKqzD,oBAAoBhhD,GAE/B,MAAOsF,GACC3X,KAAKuzD,mBACPvzD,KAAKuzD,kBAAkB57C,GAG/B3X,KAAKuyE,qBAAqBlgE,GAC1B,MAEJ,QACSrS,KAAK6nD,4BAA4B7H,IAE5BhgD,KAAKmnE,mBACPnnE,KAAKg2D,cAAc7sB,QAAQ,IAAIe,EAAA+rB,aAAajW,EAAkB78B,KAAK/R,cAAe4uC,EAAkB0H,WAOxH,OAAO1nD,KAAKkqE,iBAEd,MAAO3nE,GACL,CAER,CAEU2xE,oBAAAA,CAAqB5jB,GAC3BtwD,KAAK+iD,sCACL,MAAMkzB,EAAuBj2E,KAAK2zE,iBAAiBtI,SAEnD,GAAI4K,EACA,OAAO3lB,EAAWvU,KAAK,IAAI2T,EAAAgC,wBACvBxnB,EAAA2V,YAAYK,KACZ,oBACAlgD,KAAKiyE,kBAAkBh4B,UACvB,mBACAg8B,GAGZ,CAIU/yB,+BAAAA,GAEV,CAEU0Q,WAAAA,GAA2C,IAA/ByY,EAAA9+D,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,IAAAA,UAAA,GAClB,GAAkC,MAA9BvN,KAAKumE,sBACL,OAAOvmE,KAAKumE,sBAAsBz5B,MAAMwjB,GAChCA,EAAW/rC,UAAY2lB,EAAAsT,gBAAgBK,cACvC79C,KAAKs9C,iBAAmB,KACxBt9C,KAAKumE,sBAAwB,KACtBvmE,KAAK4zD,eAET5zD,KAAKumE,wBACb,KACCvmE,KAAKs9C,iBAAmB,KACxBt9C,KAAKumE,sBAAwB,KACtBvmE,KAAK4zD,iBAGpB5zD,KAAKu/D,qBAAuBr1B,EAAAS,mBAC5B3qC,KAAKs9C,iBAAmBpT,EAAAS,mBAExB3qC,KAAKiyE,kBAAkBjP,qBAAqBhjE,KAAKu/D,sBAEjD,MAAMiN,EAAcH,EAAiBrsE,KAAK+mE,mBAAmB/hB,cAAchlD,KAAKu/D,sBAAwBv/D,KAAK+mE,mBAAmB9iC,MAAMjkC,KAAKu/D,sBAkC3I,OAhCAv/D,KAAKumE,sBAAwBiG,EAAY1/B,MAAK5J,UAC1CljC,KAAKiyE,kBAAkB/O,iBAAgB,GAEvC,MAAM5S,EAA0BtwD,KAAKgnE,sBAAsB17D,OAAOtL,KAAKmjD,sBAAuB9wC,EAAQrS,KAAKs9C,kBAI3GgT,EAAW1jB,OAAOhB,QAAQhmB,IACtB5lB,KAAK+wD,iBAAiB5nB,QAAQvjB,EAAM,IAExC,MAAM6mD,QAAiBnc,EAAWrxB,OAClC,OAA4B,MAAxBwtC,EAASlqC,YACTviC,KAAKiyE,kBAAkB9O,+BAA+BsJ,EAASlqC,YACxDiJ,QAAQU,QAAQokB,IACQ,MAAxBmc,EAASlqC,YAAuB8pC,GAGvCrsE,KAAKiyE,kBAAkB9O,+BAA+BsJ,EAASlqC,YACxDiJ,QAAQC,OACX,yCAAyCghC,EAASlqC,oCAChDviC,KAAKmjD,sBAAsB/M,WAAWC,YAAYlM,EAAAmM,WAAWkW,wCAAwCigB,EAASlpD,WAL7GvjB,KAAK4zD,aAAY,MAO5Bj8C,IAEA,MADA3X,KAAKiyE,kBAAkB/O,iBAAgB,GACjC,IAAInqD,MAAMpB,EAAM,IAM1B3X,KAAKumE,sBAAsBh1B,OAAM,SAE1BvxC,KAAKumE,qBAChB,CACUrQ,uBAAAA,CAAwB5F,EAAyBmb,GACvD,GAAIA,EACA,OAAOnb,EAAWvU,KAAK,IAAI2T,EAAAgC,wBACvBxnB,EAAA2V,YAAYK,KACZ,gBACAlgD,KAAKiyE,kBAAkBh4B,UACvB,mBACAwxB,GAEZ,CAEU0I,eAAAA,CAAgB7jB,EAAyByjB,EAAc95B,GAC7D,OAAOqW,EAAWvU,KAAK,IAAI2T,EAAAgC,wBACvBxnB,EAAA2V,YAAYK,KACZ,OACAjG,EACA,uBACA85B,GACR,CAEQ,qBAAMtiB,GACV,YAAgD3wD,IAA5Cd,KAAKsmE,mCACEtmE,KAAKsmE,mCAAmCx5B,MAAMwjB,GAC7CA,EAAW/rC,UAAY2lB,EAAAsT,gBAAgBK,cACvC79C,KAAKs9C,iBAAmB,KACxBt9C,KAAKsmE,wCAAqCxlE,EACnCd,KAAKyxD,mBAETzxD,KAAKsmE,qCACb,KACCtmE,KAAKs9C,iBAAmB,KACxBt9C,KAAKsmE,wCAAqCxlE,EACnCd,KAAKyxD,sBAGpBzxD,KAAKsmE,mCAAqCtmE,KAAK6rE,4BAClC7rE,KAAKsmE,mCACtB,CAGQ,yBAAMuF,GACV,MAAMvb,QAAgCtwD,KAAK4zD,cAC3C,YAAsC9yD,IAAlCd,KAAKwwD,yBACExwD,KAAKwwD,yBAAyBF,IAEzCtwD,KAAKkjD,wCACCljD,KAAKk2D,wBAAwB5F,EAAYtwD,KAAKmjD,sBAAsB+Q,oBAAoB1tD,aACvF8pD,EACX,CAEUnM,aAAAA,CAAc+xB,GAExB,CAEU1E,kBAAAA,CAAmB2E,GAE7B,CAEUrE,cAAAA,CAAesE,GAEzB,CAEU/D,oBAAAA,CAAqBgE,GAE/B,CAEU9D,oBAAAA,CAAqB8D,GAE/B,CAEU5D,cAAAA,CAAe6D,GAEzB,CAEU1D,gBAAAA,CAAiB2D,GAE3B,CAEUxD,iBAAAA,CAAkByD,GAE5B,EAzgBJ5iE,EAAAA,qBAAA0uC,EA6BkBA,EAAAwoB,sBAAgC,0GCrElD,MAAA5gC,EAAAv2B,EAAA,MAMAC,EAAAA,iBAAA,MAAA9G,WAAAA,GACY,KAAA4kC,YAA0C,CAAC,CAkDvD,CA1CW2b,UAAAA,CAAW+iB,EAAqBhtE,GACnCpD,KAAK0xC,YAAY0+B,GAAehtE,CACpC,CAMA,qBAAW8uE,CAAkB/mC,GACzBnrC,KAAK4zE,sBAAwBzoC,CACjC,CAEOkgC,MAAAA,GACH,OAAOpyD,KAAKtS,UAAU3G,KAAK0xC,YAC/B,CAEOuR,mBAAAA,CAAoBouB,GACvB,MAAMoF,EAAsCz2E,KAAK02E,sBAAsBrF,GACvErxE,KAAKqtD,WAAW,YAAaopB,EACjC,CAEQC,qBAAAA,CAAsBrF,GAC1B,MAAO,CACH7/B,MAAO,CACHmlC,gBAAiB,CACbC,kBAAoBvF,GAAmB4B,gBACvC4D,2BAA4BxF,GAAmBr+C,WAAWqjB,YACtDnM,EAAAoM,WAAWwgC,mDAAqDzF,GAAmBsB,cACvFoE,wBAAyB1F,GAAmBr+C,WAAWqjB,YACnDnM,EAAAoM,WAAW0gC,+CAA+C,GAC9DC,mBAAmB,EACnBC,gBAAkB7F,GAAmByB,eACrCqE,oBAAqB9F,GAAmBr+C,WAAWqjB,YAC/CnM,EAAAoM,WAAW8gC,4CAA8C/F,GAAmBsB,eAEpF0E,aAAcr3E,KAAK4zE,sBAAsB0D,0BAE7CvrB,SAAU,CACNwrB,cAAelG,GAAmBmG,0BAG9C,qMCvDJ,MAAAttC,EAAAv2B,EAAA,MAEA,MAAa8jE,UAA6BvtC,EAAA40B,cAGtChyD,WAAAA,CAAmBiyD,EAAmB9kB,GAClC9X,MAAM48B,EAD+CxxD,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAuB28B,EAAA80B,UAAUp1B,MAGtF5pC,KAAKk5D,cAAgBjf,CACzB,CAEA,aAAWA,GACP,OAAOj6C,KAAKk5D,aAChB,EAXJtlD,EAAAA,qBAAA6jE,EAcA7jE,EAAAA,wBAAA,cAA6C6jE,EAIzC3qE,WAAAA,CAAmBmtC,EAAmBy9B,EAAmCC,GACrEx1C,MAAM,0BAA2B8X,GAEjCj6C,KAAK43E,8BAAgCF,EACrC13E,KAAK63E,2BAA6BF,CACtC,CAEA,6BAAWG,GACP,OAAO93E,KAAK43E,6BAChB,CAEA,0BAAWG,GACP,OAAO/3E,KAAK63E,0BAChB,GAGJjkE,EAAAA,kCAAA,cAAuD6jE,EAGnD3qE,WAAAA,CAAmBmtC,EAAmB8K,GAClC5iB,MAAM,oCAAqC8X,GAC3Cj6C,KAAKu/D,qBAAuBxa,CAChC,CAEA,oBAAWA,GACP,OAAO/kD,KAAKu/D,oBAChB,GAGJ3rD,EAAAA,sBAAA,cAA2C6jE,EAGvC3qE,WAAAA,CAAmBmtC,EAAmB8K,GAClC5iB,MAAM,wBAAyB8X,GAE/Bj6C,KAAKu/D,qBAAuBxa,CAChC,CAEA,oBAAWA,GACP,OAAO/kD,KAAKu/D,oBAChB,+GCjEJ,MAAAr1B,EAAAv2B,EAAA,MAOAw2B,EAAAx2B,EAAA,MAGAw3C,EAAAx3C,EAAA,MAEAypC,EAAAzpC,EAAA,MAOAC,EAAAA,qBAAA,MAKI9G,WAAAA,CAAmBsuB,EAA2BmnB,GAE1C,IAAIoD,EAAWvqB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWmV,sCAAkC3qD,GAC1F,IAAK6kD,EAAU,CACX,MAAMF,EAAiBrqB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWoV,+BAAgC,UAC1FC,EAAqBR,EAAAG,sBAAsB9F,cAAcC,GAC/DE,EAAWvqB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWsV,6BAA8B,WAAWnG,eAAoBkG,KAErH3rD,KAAK08C,QAAU,GAAGiJ,kCAElB,MAAM7lD,EAA2BoqC,EAAAoO,eAAeC,eAChDv4C,KAAKg4E,gBAAkB,IAAI9tC,EAAA+tC,mBAAmBn4E,GAC9CE,KAAK+mE,mBAAqBxkB,CAC9B,CASO21B,aAAAA,CAAc77B,GAEjB,OADAr8C,KAAKg4E,gBAAgB98B,WAAWkC,EAAAM,YAAYC,aAActB,GACnDr8C,KAAK+mE,mBAAmB9iC,MAAMoY,GAAcvP,MAAM0e,IACrDxrD,KAAKg4E,gBAAgB98B,WAAWsQ,EAAS/O,WAAY+O,EAASjmD,OACvDvF,KAAKg4E,gBAAgB78B,QAAQjR,EAAAsQ,gBAAgB29B,IAAKn4E,KAAK08C,WAEtE,wGCjDJ,MAAAxS,EAAAv2B,EAAA,MAOAqlD,EAAArlD,EAAA,MACAw2B,EAAAx2B,EAAA,MAMAykE,EAAAzkE,EAAA,MACA0kE,EAAA1kE,EAAA,MAwBA,MAAa6/D,EAqFT1mE,WAAAA,GAxBQ,KAAAwvC,gBAA0B,EAE1B,KAAAg8B,oBAA8B,EAC9B,KAAAC,sBAAgC,EAChC,KAAAC,kBAA4B,EAI5B,KAAAxW,YAAsB,EAKtB,KAAAyW,eAAyB,EACzB,KAAAC,wBAAkC,EAClC,KAAAC,mBAA6B,EAC7B,KAAAC,4BAAsC,EAS1C54E,KAAKk5D,cAAgBhvB,EAAAS,mBACrB3qC,KAAKkiE,iBAAmB,IAAIh4B,EAAA0D,SAG5B5tC,KAAKkiE,iBAAiBh2B,SAC1B,CAzFA,aAAW+N,GACP,OAAOj6C,KAAKk5D,aAChB,CAEA,YAAWzsB,GACP,OAAOzsC,KAAKkwE,YAChB,CAEA,YAAWzjC,CAASrpC,GAChBpD,KAAKkwE,aAAe9sE,CACxB,CAEA,qBAAW8uE,GACP,OAAOlyE,KAAK4zE,qBAChB,CAEA,qBAAW1B,CAAkB/mC,GACzBnrC,KAAK4zE,sBAAwBzoC,CACjC,CAEA,yBAAWg3B,GACP,OAAOniE,KAAKkiE,iBAAiBhzB,OACjC,CAEA,oBAAW2pC,GACP,OAAO74E,KAAKu4E,oBAChB,CAEA,kBAAWhE,GACP,OAAOv0E,KAAKs4E,kBAChB,CAEA,qBAAWpD,GACP,OAAOl1E,KAAKy4E,cAChB,CAEA,yBAAWtD,GACP,OAAOn1E,KAAK24E,kBAChB,CAGA,iBAAWG,GACP,OAAO94E,KAAKw4E,iBAChB,CAEA,iBAAWO,GACP,OAAO/4E,KAAKg5E,iBAChB,CAEA,mBAAWC,GACP,GAAMj5E,KAAKk5E,cAAe,CACtB,MAAMlmD,EAAa,IAAImX,EAAA2e,mBAEvB,OADA91B,EAAWgf,YAAY7H,EAAAmM,WAAWyN,gCAAiC/jD,KAAKk5E,eACjElmD,EAIf,CAkCO,yBAAMmmD,GACT,OAAMn5E,KAAKo5E,kBACA5tC,QAAQU,QAAQlsC,KAAKo5E,mBAE3Bp5E,KAAKu4E,4BAGJv4E,KAAKq5E,yBACJ7tC,QAAQU,QAAQlsC,KAAKo5E,oBAHjB,IAIf,CAEO,mCAAME,GACT,GAAMt5E,KAAKu5E,4BACP,OAAOv5E,KAAKu5E,4BAEhB,IAAKv5E,KAAKu4E,qBACN,OAAO,KAEX,GAAIv4E,KAAKkyE,kBAAkBsH,UAAW,CAClC,MAAMhoC,QAA2BxxC,KAAKm5E,sBAEtC,OADAn5E,KAAKu5E,4BAA8Bv5E,KAAKkyE,kBAAkBC,UAAU3gC,GAC7DxxC,KAAKu5E,4BAEZ,OAAOv5E,KAAKm5E,qBAEpB,CAEOlF,iBAAAA,CAAkBh6B,EAAmBw/B,EAAiB3F,EAAiBxC,GAC1EtxE,KAAKu4E,sBAAuB,EAC5Bv4E,KAAKs4E,oBAAqB,EAC1Bt4E,KAAKk5D,cAAgBjf,EACrBj6C,KAAK05E,YAAcD,EACnBz5E,KAAK25E,WAAa7F,EAClB9zE,KAAK45E,sBAAwB,IAAI5gB,EAAA6gB,0BACjC75E,KAAK45E,sBAAsBzuC,OAASnrC,KAAK4zE,sBACzC5zE,KAAKo5E,kBAAoB,KACzBp5E,KAAKu5E,4BAA8B,KACnCv5E,KAAKw4E,kBAAoB,EACzBx4E,KAAKy4E,eAAiB,EACtBz4E,KAAK04E,wBAA0B,EAC/B14E,KAAK24E,mBAAqB,EAC1B34E,KAAK44E,4BAA8B,EACnC54E,KAAK85E,2BAA6B,GAClC95E,KAAKk5E,cAAgB,QACIp4E,IAArBwwE,IACAtxE,KAAK+5E,yBAA2BzI,EAChCtxE,KAAK+5E,yBAAyB5uC,OAASnrC,KAAK4zE,uBAEhD5zE,KAAKmpC,QAAQ,IAAIkvC,EAAA2B,wBAAwBh6E,KAAKi6C,eAAWn5C,OAAgCA,IAArBwwE,OAAiCxwE,EAAYwwE,EAAiBjwC,MACtI,CAEO2hC,oBAAAA,CAAqBje,GACxB/kD,KAAKu/D,qBAAuBxa,EAC5B/kD,KAAKmpC,QAAQ,IAAIkvC,EAAA4B,kCAAkCj6E,KAAKk5D,cAAel5D,KAAKu/D,sBAChF,CAEO2D,eAAAA,CAAgBL,GACfA,GACA7iE,KAAK8iE,YAEb,CAEOK,8BAAAA,CAA+B5gC,GAClC,GAAmB,MAAfA,EAGA,OAFAviC,KAAKmpC,QAAQ,IAAIkvC,EAAA6B,sBAAsBl6E,KAAKi6C,UAAWj6C,KAAKu/D,4BAC5Dv/D,KAAKw4E,kBAAoB,GAEH,MAAfj2C,GACPviC,KAAK8iE,YAEb,CAEO4R,wBAAAA,CAAyByF,GAC5B,MAAM1N,EAA+BxzD,KAAKlS,MAAMozE,GAChDn6E,KAAKysC,SAAWggC,EAASj7B,MAAM/E,QACnC,CAEOopB,wBAAAA,GACH71D,KAAKgiE,YAAa,EAClBhiE,KAAKkiE,iBAAiBh2B,UACtBlsC,KAAK8iE,YACT,CAEO7N,0BAAAA,CAA2BklB,GACxBn6E,KAAKkiE,kBAAsBliE,KAAKgiE,aAElChiE,KAAKkiE,iBAAiBz2B,OAAO,kDAG7BzrC,KAAKkiE,iBAAiBhzB,QAAQpC,OAAOyE,OAAM,UAE/CvxC,KAAKgiE,YAAa,EAClBhiE,KAAKkiE,iBAAmB,IAAIh4B,EAAA0D,SAC5B,MAAM6+B,EAA+BxzD,KAAKlS,MAAMozE,GAC1C1N,EAAS2N,SACXp6E,KAAKk5E,cAAgBzM,EAAS2N,OAAOC,iBAE7C,CAEO1F,oBAAAA,CAAqBt/B,GACpBr1C,KAAKu0E,iBACLv0E,KAAK45E,sBAAsB9mB,MAAMzd,GACjCr1C,KAAKw4E,mBAAqBnjC,EAAKpG,gBACOnuC,IAAlCd,KAAK+5E,0BACL/5E,KAAK+5E,yBAAyBjnB,MAAMzd,GAGhD,CAEO0/B,mBAAAA,CAAoB3wB,GACvBpkD,KAAKs6E,iBAAiBl2B,EAASI,KAAKvvC,KAAKirC,KAAMkE,EAASgX,KAC5D,CAEOoa,wBAAAA,CAAyBpxB,QACStjD,IAAjCsjD,EAASI,KAAK+1B,iBACdv6E,KAAK85E,4BAA8B11B,EAASI,KAAK+1B,eAEzD,CAEOxE,YAAAA,CAAa3xB,GAChBpkD,KAAKg5E,kBAAoB50B,EAASI,KAAKC,MAC3C,CAEO,8BAAMuxB,GACT,MAAMwE,QAAiCx6E,KAAKs5E,gCAC5C,OAAO,IAAInvC,EAAAwnC,sBACP3xE,KAAKi6C,UACL9P,EAAAkf,aAAaoxB,2BACbD,OACA15E,EACAd,KAAKi5E,gBACLj5E,KAAK+4E,cAEb,CAEOl8B,OAAAA,GACE78C,KAAKs8C,iBAENt8C,KAAKs8C,gBAAiB,EAE9B,CAEOk4B,kBAAAA,GACHx0E,KAAK8iE,YACT,CAMO8S,0BAAAA,GACH,MAAM8E,EAAoB16E,KAAK85E,2BAE/B,OADA95E,KAAK85E,2BAA6B,GAC3BY,CACX,CAEUvxC,OAAAA,CAAQvjB,GACdskB,EAAA+F,OAAOpP,SAASsI,QAAQvjB,EAC5B,CAOQ,eAAO+0D,CAAS1lE,GACpB,OAAOA,EAAK5U,QAAU,GAAiB,MAAZ4U,EAAK,IAAwC,MAA1BA,EAAKA,EAAK5U,OAAS,EACrE,CAEQi6E,gBAAAA,CAAiBrlE,EAAcnQ,GAC/BA,IAASszE,EAAAlT,aAAa2P,cACtB70E,KAAKy4E,eAAiBz4E,KAAK05E,YAAYh2E,QAAQuR,EAAMjV,KAAK04E,yBACtD14E,KAAKy4E,gBAAkB,IACvBz4E,KAAK04E,wBAA0B14E,KAAKy4E,eAAiBxjE,EAAK5U,OACtDL,KAAK25E,YACD35E,KAAK46E,aAAa56E,KAAKy4E,kBAAoBjF,EAAcmH,SAAS1lE,IAClEjV,KAAKs6E,iBAAiBrlE,EAAMnQ,MAKxC9E,KAAK24E,mBAAqB34E,KAAK05E,YAAYh2E,QAAQuR,EAAMjV,KAAK44E,6BAC1D54E,KAAK24E,oBAAsB,IAC3B34E,KAAK44E,4BAA8B54E,KAAK24E,mBAAqB1jE,EAAK5U,OAC9DL,KAAK25E,YACD35E,KAAK46E,aAAa56E,KAAK24E,sBAAwBnF,EAAcmH,SAAS1lE,IACtEjV,KAAKs6E,iBAAiBrlE,EAAMnQ,IAKhD,CAEQg+D,UAAAA,GACA9iE,KAAKs4E,qBACLt4E,KAAKs4E,oBAAqB,EAC1Bt4E,KAAKu4E,sBAAuB,EAC5Bv4E,KAAK45E,sBAAsBptC,QAC3BxsC,KAAKgiE,YAAa,OACoBlhE,IAAlCd,KAAK+5E,2BACL/5E,KAAK+5E,yBAAyBvtC,QAC9BxsC,KAAK+5E,8BAA2Bj5E,GAG5C,CAEQ,4BAAMu4E,GACV,GAAIr5E,KAAKu4E,qBAAsB,CAC3Bv4E,KAAKo5E,kBAAoB,IAAIv1C,YAAY7jC,KAAK84E,eAC9C,UACU94E,KAAK45E,sBAAsBrtC,KAAKvsC,KAAKo5E,mBAC7C,MAAO72E,GACLvC,KAAKo5E,kBAAoB,IAAIv1C,YAAY,IAGrD,CAOQ+2C,YAAAA,CAAa1vD,GACjB,OAAOlrB,KAAK05E,YAAYh2E,QAAQ,IAAKwnB,EAAM,GAAKlrB,KAAK05E,YAAYh2E,QAAQ,IAAKwnB,EAAM,EACxF,EA7TJtX,EAAAA,cAAA4/D,kICtCA,MAAAtpC,EAAAv2B,EAAA,MAMA,IAAYknE,GAAZ,SAAYA,GACRA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,kBACH,CAHD,CAAYA,EAAAjnE,EAAAinE,uBAAAjnE,EAAAA,qBAAoB,KAKhCA,EAAAA,kBAAA,MAMI9G,WAAAA,CACIgzD,EACA1pB,GAPI,KAAA0kC,yBAAiDD,EAAqBE,SAGvE,KAAA3H,eAAyB,EAK5BpzE,KAAK+/D,wBAA0BD,GAA4C,IAAI51B,EAAAgqB,oBAAoB,IAAIhqB,EAAAiqB,QAAQ,OAC/Gn0D,KAAKggE,eAAiB5pB,CAC1B,CAEA,cAAWA,GACP,OAAOp2C,KAAKggE,cAChB,CAEA,wBAAWgb,GACP,OAAOh7E,KAAK86E,wBAChB,CAEA,wBAAWE,CAAqB53E,GAC5BpD,KAAK86E,yBAA2B13E,CACpC,CAEA,yBAAWggD,CAAsBhgD,GAC7BpD,KAAK+/D,wBAAwB5L,QAAQ8mB,UAAY,CAC7CxpC,MAAOruC,EAEf,CAEA,uBAAW8wD,GACP,OAAOl0D,KAAK+/D,uBAChB,uHC7CJ,MAAA71B,EAAAv2B,EAAA,MAQAw2B,EAAAx2B,EAAA,MAIAw3C,EAAAx3C,EAAA,MAGAu3C,EAAAv3C,EAAA,MAMAypC,EAAAzpC,EAAA,MACA4xC,EAAA5xC,EAAA,MAIA,MAAaunE,UAAqC/vB,EAAAG,sBAAlDx+C,WAAAA,uBAEqB,KAAAquE,sBAAgC,gCAqDrD,CAnDW7vE,MAAAA,CACH8vB,EACAowB,EACAnP,GAEA,IAAIsJ,EAAmBvqB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWmV,sCAAkC3qD,GAClG,MAAM2kD,EAAiBrqB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWoV,+BAAgC,aAE1F0vB,EAAsB,oBAAsB31B,EAAS,cADhC0F,EAAAG,sBAAsB9F,cAAcC,GACyBzlD,KAAKm7E,sBACvFx3C,EAAevI,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWsV,6BAA8BwvB,GAEtF//B,EAAyC,CAAC,EAChDr7C,KAAKq7E,eAAehgC,EAAajgB,EAAQuqB,GAEpCA,IACDA,EAAWhiB,GAGf,MAAMhB,EAAqC,CAAC,OACrB7hC,IAAnB0qD,EAASjmD,OAA0C,KAAnBimD,EAASjmD,QACzCo9B,EAAQ6oB,EAAS/O,YAAc+O,EAASjmD,OAE5Co9B,EAAQya,EAAAM,YAAYC,cAAgBtB,EAEpCjhB,EAAOgb,WAAWpE,YAAY7H,EAAAmM,WAAWkW,4BAA6B7G,GAEtE,MAAMvJ,EAA6G,SAAhFhhB,EAAOgb,WAAWC,YAAY,oCAAqC,SACtG,OAAO,IAAInM,EAAAoiB,oBAAoB3G,EAAUtK,EAAa1Y,EAAS,IAAIuoB,EAAAqB,0BAA6BriB,EAAAwL,UAAUiB,qBAAqBvb,GAASghB,EAAmBC,EAC/J,CAEOg/B,cAAAA,CAAehgC,EAAwCjgB,EAA0BkgD,GAEpF,MAAMzvB,EAAqBzwB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWwV,wCAAoChrD,GAClGirD,EAAmB3wB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAW0V,0CAAsClrD,GAEpG+qD,KAAgBtG,EAAAO,oBAAoBmG,4BAA4B5Q,KAChEA,EAAYkK,EAAAO,oBAAoBmG,0BAA4BJ,GAG5DE,KAAcxG,EAAAO,oBAAoBwE,YAAYjP,KAC9CA,EAAYkK,EAAAO,oBAAoBwE,UAAYyB,GAGhD,MAAMwvB,EAAkJ,SAAtHngD,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWoQ,iDAAkD,SAASt1C,cAChIq5C,EAAoBrvB,EAAOgb,WAAWC,YAAY6U,EAAAjB,yBAA0B9f,EAAA+f,aAAa/f,EAAA+f,aAAaC,WAAahgB,EAAA+f,aAAa/f,EAAA+f,aAAaC,SAC/IoxB,GAAoB9wB,KACpBpP,EAAYkK,EAAAO,oBAAoB2I,QAAUtkB,EAAA+f,aAAa/f,EAAA+f,aAAaqf,UAAUn4D,eAGlFpR,KAAK0lD,mBAAmBtqB,EAAQigB,EAAaigC,EACjD,EAtDJ1nE,EAAAA,6BAAAsnE,sHCzBA,MAAAM,EAAA7nE,EAAA,MAIA,MAAa8nE,UAAqCD,EAAAljC,eAUvC,eAAW3U,GACd,OAAO83C,EAA6BC,QACxC,CAEO,qBAAWjiC,GACd,OAAOgiC,EAA6BE,cACxC,CAEO,sBAAWhiC,GACd,OAAO8hC,EAA6BG,eACxC,CAEO,8BAAWC,GACd,OAAOJ,EAA6BK,uBACxC,CAEO,mBAAWC,GACd,OAAON,EAA6BO,YACxC,CAEO,wBAAWC,GACd,OAAOR,EAA6BS,iBACxC,CAEO,iCAAWC,GACd,OAAOV,EAA6BW,0BACxC,EApCJxoE,EAAAA,6BAAA6nE,EAE4BA,EAAAC,SAAmB,8BACnBD,EAAAO,aAAuB,eACvBP,EAAAE,eAAyB,MACzBF,EAAAK,wBAAkC,QAClCL,EAAAG,gBAA0B,uCAC1BH,EAAAS,kBAA4B,oBAC5BT,EAAAW,2BAAuC,CAAC,UAAW,SAAU,YAAa,OAAQ,QAAS,6BAA8B,iBAAkB,WAAY,eAAgB,oBAAqB,kICbxN,MAAAlyC,EAAAv2B,EAAA,MACAw2B,EAAAx2B,EAAA,MACA20B,EAAA30B,EAAA,KACAu3C,EAAAv3C,EAAA,MACAw3C,EAAAx3C,EAAA,MAEA0oE,EAAA1oE,EAAA,MACA2oE,EAAA3oE,EAAA,MAMA,MAAa4oE,UAAsCpxB,EAAAG,sBAExChgD,MAAAA,CAAO8vB,EAA0BowB,EAAoBnP,GAExD,MAAMmgC,EAAuBphD,EAAOgb,WAAWC,YAAY6U,EAAA5U,WAAWmmC,4BAA6BJ,EAAAZ,6BAA6B93C,MAC1HkW,EAAwBze,EAAOgb,WAAWC,YAAY6U,EAAA5U,WAAWomC,qCAAsCvyC,EAAAinB,cAEvGzL,EAAmB,SAAS62B,IAAeH,EAAAZ,6BAA6BQ,gBACxE12E,EAAgB61B,EAAOgb,WAAWC,YAAY6U,EAAA5U,WAAWqzB,kCAA8B7oE,GAC7FwnC,EAAAQ,UAAUC,uBAAuBxjC,EAAO,SAExC,MAAM81C,EAAyC,CAAC,EAChDA,EAAYghC,EAAAZ,6BAA6BhjC,aAAagB,YAAc4iC,EAAAZ,6BAA6BhiC,WACjG4B,EAAYghC,EAAAZ,6BAA6BhjC,aAAalzC,OAASA,EAC/D81C,EAAYghC,EAAAZ,6BAA6BhjC,aAAaoB,eAAiBA,EACvE,MAAMuC,EAA6G,SAAhFhhB,EAAOgb,WAAWC,YAAY,oCAAqC,SACtG,OAAO,IAAInM,EAAAoiB,oBAAoB3G,EAAUtK,EAAa,CAAC,EAAG,IAAIihC,EAAAK,sCAAyCzyC,EAAAwL,UAAUiB,qBAAqBvb,GAASghB,EAAmBC,EACtK,EAjBJzoC,EAAAA,8BAAA2oE,uHCbA,MAAAryC,EAAAv2B,EAAA,MAEA,MAAaipE,UAAsC1yC,EAAA4lC,kBAG/ChjE,WAAAA,CACI+kD,EACAzuB,EACAT,EACAtB,GACIc,MAAM0vB,EAAazuB,EAAMT,EAAStB,GAClC,MAAMoB,EAAyBxpB,KAAKlS,MAAM/G,KAAK0nD,eAC7B5mD,IAAd2hC,EAAK39B,OACL9E,KAAK68E,4BAA8Bp6C,EAAK39B,KAEpD,CAEA,2BAAWg4E,GACP,OAAO98E,KAAK68E,2BAChB,EAjBJjpE,EAAAA,8BAAAgpE,6GCFA,MAAA1yC,EAAAv2B,EAAA,MAQA20B,EAAA30B,EAAA,KACAw2B,EAAAx2B,EAAA,MACA0oE,EAAA1oE,EAAA,MAGAC,EAAAA,oBAAA,MASI9G,WAAAA,GAEI9M,KAAK+8E,kBAAoBV,EAAAZ,6BAA6BhjC,aACtDz4C,KAAKg9E,WAAaX,EAAAZ,6BAA6B9iC,WAC/C34C,KAAK07E,SAAWW,EAAAZ,6BAA6B93C,KAC7C3jC,KAAK27E,eAAiBU,EAAAZ,6BAA6BhiC,WACnDz5C,KAAKg8E,aAAeK,EAAAZ,6BAA6BM,SACjD/7E,KAAKg4E,gBAAkB,IAAI9tC,EAAA+tC,mBAAmB,CAAC,EACnD,CASOgF,YAAAA,CAAazvE,EAA0B0vE,EAA0B5S,EAAuBh1B,GAE3F,IAEIhN,EAAAQ,UAAUC,uBAAuBv7B,EAAM,QAEvC,MAAMssC,EAAuBtsC,EAAK6oC,YAAYlM,EAAAmM,WAAW0V,qCAAsCqwB,EAAAZ,6BAA6BI,qBACtH9hC,EAAmBvsC,EAAK6oC,YAAYlM,EAAAmM,WAAW6mC,4BAA6B,qBAC5EX,EAAuBhvE,EAAK6oC,YAAYlM,EAAAmM,WAAWmmC,4BAA6Bz8E,KAAK07E,UACrF7hC,EAAwBrsC,EAAK6oC,YAAYlM,EAAAmM,WAAWomC,sCACpDtiC,EAA0B5sC,EAAK6oC,YAAYlM,EAAAmM,WAAWm4B,6BACtDp0B,EAA6B7sC,EAAK6oC,YAAYlM,EAAAmM,WAAWoV,gCACzD0xB,EAAoB5vE,EAAK6oC,YAAYlM,EAAAmM,WAAW+mC,kCAEtD/0C,EAAAQ,UAAUw0C,wBAAwBxjC,EAAc,gBAChDxR,EAAAQ,UAAUw0C,wBAAwBvjC,EAAU,YAC5CzR,EAAAQ,UAAUw0C,wBAAwBd,EAAc,gBAEhD,MAAMnhC,EAAyC,CAAC,EAChDA,EAAYr7C,KAAK+8E,kBAAkBtjC,YAAcz5C,KAAK27E,eACtDtgC,EAAYr7C,KAAK+8E,kBAAkBjjC,cAAgBA,EACnDuB,EAAYr7C,KAAK+8E,kBAAkBhjC,UAAYA,EAE/C,MAAMpX,EAAqC,CAAC,EACxCkX,IACAlX,EAAQ3iC,KAAK+8E,kBAAkBljC,eAAiBA,GAEpDlX,EAAQ3iC,KAAK+8E,kBAAkBpjC,aAAe0iC,EAAAZ,6BAA6B9hC,iBAElD74C,IAArBo8E,EACA7hC,EAAYr7C,KAAK+8E,kBAAkB7iC,QAAUgjC,GAE7C50C,EAAAQ,UAAUC,uBAAuBsR,EAAoBr6C,KAAKg9E,WAAWhkC,+BACrErW,EAAQ3iC,KAAK+8E,kBAAkB1iC,oBAAsBA,EACjDD,EACAzX,EAAQ3iC,KAAK+8E,kBAAkB3iC,iBAAmBA,EAC3CgjC,EACPz6C,EAAQ3iC,KAAK+8E,kBAAkBrjC,eAAiB,UAAU0jC,IAE1D90C,EAAAQ,UAAUC,uBAAuBqR,EAAiBp6C,KAAKg9E,WAAWjkC,6BAI1E,MAAM3d,EAA0B,CAAC,EACjCA,EAAOuH,QAAUA,EACjB3iC,KAAKg4E,gBAAgBl4E,QAAUs7B,EAE/B,MAAMuqB,EAAmB,WAAW62B,IAAex8E,KAAKg8E,eAGxDh8E,KAAKg4E,gBAAgB78B,QAAQjR,EAAAsQ,gBAAgBmB,KAAMgK,EAAUtK,EAAa,MAAMvO,MAAM2/B,IAElF,MAAMxyB,EAAoB/P,EAAA+tC,mBAAmBr9B,mBAAmB56C,KAAK+8E,kBAAkB9iC,UAAWwyB,EAAS9pC,SAE3G,IAAK8pC,EAAShxB,GAAI,CACd,GAAMnG,EAAK,CAEP,IACIioC,EADAC,EAAuBx9E,KAAKg9E,WAAW9jC,sCAAsC71C,QAAQ,WAAYopE,EAASjqC,OAAO10B,YAErH,IACIyvE,EAAgBtkE,KAAKlS,MAAM0lE,EAASp3B,MACpCmoC,GAAgB,KAAKD,EAAc5lE,MAAM8mB,SAAS8+C,EAAc5lE,MAAM0qB,WACxE,MAAO9/B,GACLi7E,GAAgB,KAAK/Q,EAASp3B,QAE9B4E,IACAujC,GAAgB,IAAIvjC,KAGxB3E,EAAIkoC,GAER,OAEJ,MAAMC,EAAsCxkE,KAAKlS,MAAM0lE,EAASp3B,MAIhE,GAHIooC,IACAA,EAAaxjC,UAAYA,GAEvBqwB,EAAI,CACN,IACIA,EAAGmT,GACL,MAAOl7E,GACC+yC,GACFA,EAAI/yC,GAGZ+nE,OAAKxpE,MAGVywC,OAAO,SAEZ,MAAO55B,GACL,GAAM29B,EACF,GAAI39B,aAAiBoB,MAAO,CACxB,MAAM63B,EAAoBj5B,EAC1B29B,EAAI1E,EAAW1lC,KAAO,KAAO0lC,EAAWvO,cAGxCiT,EAAI39B,GAIpB,CAQO+lE,KAAAA,CAAMlwE,EAA0B2sC,GACnC,OAAO,IAAI3O,SAAc,CAACU,EAAqBT,KAC3C,IAEInD,EAAAQ,UAAUC,uBAAuBv7B,EAAMxN,KAAKg9E,WAAW/jC,YAAY51C,QAAQ,QAAS,WACpFilC,EAAAQ,UAAUw0C,wBAAwBnjC,EAAcn6C,KAAKg9E,WAAW/jC,YAAY51C,QAAQ,QAAS,UAE7F,MAAMm5E,EAAuBhvE,EAAK6oC,YAAYlM,EAAAmM,WAAWmmC,4BAA6Bz8E,KAAK07E,UACrF7hC,EAAwBrsC,EAAK6oC,YAAYlM,EAAAmM,WAAWomC,sCAEpDrhC,EAAyC,CAAC,EAChDA,EAAYr7C,KAAK+8E,kBAAkBtjC,YAAcz5C,KAAK27E,eACtDtgC,EAAYr7C,KAAK+8E,kBAAkB5iC,cAAgBA,EAEnD,MAAMxX,EAAqC,CAAC,EACxCkX,IACAlX,EAAQ3iC,KAAK+8E,kBAAkBljC,eAAiBA,GAGpD,MAAMze,EAA0B,CAAC,EACjCA,EAAOuH,QAAUA,EACjB3iC,KAAKg4E,gBAAgBl4E,QAAUs7B,EAE/B,MAAMuqB,EAAmB,WAAW62B,IAAex8E,KAAKg8E,eAGxDh8E,KAAKg4E,gBAAgB78B,QAAQjR,EAAAsQ,gBAAgBsB,OAAQ6J,EAAUtK,EAAa,MAAMvO,MAAM2/B,IAE/EA,EAAShxB,GAIdvP,GAAS,IAEVqF,OAAO,SAEZ,MAAO55B,GACL,GAAIA,aAAiBoB,MAAO,CACxB,MAAM63B,EAAoBj5B,EAC1B8zB,EAAOmF,EAAW1lC,KAAO,KAAO0lC,EAAWvO,cAG3CoJ,EAAO9zB,MAIvB,qHClMJ,MAAAuyB,EAAAv2B,EAAA,MAUAC,EAAAA,2BAAA,MAOI9G,WAAAA,CAAmBi7C,GANX,KAAAzL,gBAA0B,EAC1B,KAAAglB,gBAAiC,IAAIz3D,MAMzC7J,KAAKi/D,cAAgBlX,EACrB/nD,KAAKk5D,cAAgBhvB,EAAAS,mBACrB3qC,KAAK29E,8BAAgC,IAAIzzC,EAAA0D,QAC7C,CAEA,aAAWma,GACP,OAAO/nD,KAAKi/D,aAChB,CAEA,aAAWhlB,GACP,OAAOj6C,KAAKk5D,aAChB,CAEA,qBAAW0kB,GACP,OAAO59E,KAAK29E,8BAA8BzuC,OAC9C,CAEO8zB,oBAAAA,CAAqBje,EAA0B1I,GAClDr8C,KAAKi/D,cAAgB5iB,CACzB,CAEO6mB,eAAAA,CAAgBL,GACfA,GACA7iE,KAAK8iE,YAEb,CAEOK,8BAAAA,CAA+B5gC,GACf,MAAfA,GAEsB,MAAfA,GACPviC,KAAK8iE,YAEb,CAEOjN,wBAAAA,CAAyBwN,GACvBA,EAGDrjE,KAAKk5D,cAAgBhvB,EAAAS,mBAFrB3qC,KAAK8iE,YAIb,CAEO,aAAMjmB,GACT,IAAK78C,KAAKs8C,eAAgB,CAEtBt8C,KAAKs8C,gBAAiB,EACtB,IAAK,MAAMqnB,KAAc3jE,KAAKshE,sBACpBqC,EAAWx3B,SAG7B,CAEQ22B,UAAAA,GACJ,qHCxER,MAAA54B,EAAAv2B,EAAA,MAQAw2B,EAAAx2B,EAAA,MASAu3C,EAAAv3C,EAAA,MAOAkqE,EAAAlqE,EAAA,MACAmqE,EAAAnqE,EAAA,MACAoqE,EAAApqE,EAAA,MAQAqqE,EAAArqE,EAAA,MAMAy3C,EAAAz3C,EAAA,MAcA,MAAasqE,UAAmC/yB,EAAA7D,sBAY5Cv6C,WAAAA,CACIy1C,EACAC,EACAxL,EACAsQ,EACA42B,GAEA/7C,MAAMogB,EAAgBC,EAAmBxL,EAAasQ,EAAkB42B,GAbpE,KAAAC,iCAAoDr9E,EAexDd,KAAKo+E,2BAA6B,GAClCp+E,KAAKq+E,iCAAmCH,EACxCl+E,KAAKs+E,+BAAiC/7B,EACtCviD,KAAK8vD,uBAAyB,IAAqB9vD,KAAKu+E,qCACxDv+E,KAAKkwD,kBAAoB,IAAqBlwD,KAAKsrE,OACnDtrE,KAAKqwD,wBAA2BC,GAA2DtwD,KAAKw+E,wBAAwBluB,GACxHtwD,KAAKwwD,yBAA2B,IAA4BxwD,KAAKywD,mBACjEzwD,KAAK0wD,mBAAqB,IAAqB1wD,KAAK2wD,iBACpD3wD,KAAKy+E,+BAAiC,IAAIX,EAAAY,2BAA2Bx0C,EAAAS,oBACrE3qC,KAAK2+E,kCAAoCn8B,EACzCxiD,KAAK4+E,4BAA6B,CACtC,CAEO9hC,UAAAA,GACH,OAAO3a,MAAM2a,cAAgB98C,KAAK4+E,0BACtC,CAEO,aAAM/hC,CAAQt5B,GAEjB,GADAvjB,KAAK4+E,4BAA6B,OACO99E,IAArCd,KAAKm+E,4BAA2C,CAChD,MAAM7tB,QAAgCtwD,KAAKm+E,kCACrC7tB,EAAWzT,QAAQt5B,SAEvB4e,MAAM0a,QAAQt5B,EACxB,CAEO,iBAAM2tC,CAAY7uB,GAErB,aADsCriC,KAAKyxD,mBACzB1V,KAAK,IAAI8hC,EAAAjB,8BACvB1yC,EAAA2V,YAAYK,KACZ7d,GACR,CAEO,sBAAMw8C,CAAiBx8C,GAC1B,MAAMiuB,QAAgCtwD,KAAKyxD,wBAErCnB,EAAWvU,KAAK,IAAI8hC,EAAAjB,8BAA8B1yC,EAAA2V,YAAYK,KAAM7d,GAC9E,CAEUsuB,cAAAA,GACN,IAAI3wD,KAAKixD,qBAUT,OAPAjxD,KAAKmoD,kBAAkBnoD,KAAKy+E,+BAA+B12B,UACvD/nD,KAAKy+E,+BAA+BxkC,UACpC9P,EAAAwnB,mBAAmB54C,MACnBoxB,EAAA2jB,sBAAsB8D,QACtB,iBAEJ5xD,KAAKixD,sBAAuB,EACrBzlB,QAAQU,SACnB,CAGU,iCAAM2b,GACZ,OAAO,CACX,CAGUM,iBAAAA,CACNJ,EACA9N,EACAmO,EACAC,EACA1wC,GAEA3X,KAAKixD,sBAAuB,EAE5B,MAAMjD,EAAwD,IAAI7jB,EAAA20C,yCAC9D12B,EACAzwC,EACA0wC,OACAvnD,EACAinD,GAEJ,IACU/nD,KAAKq+E,iCAAiCtwB,UACxC/tD,KAAKq+E,iCAAiCtwB,SAAS/tD,KAAKq+E,iCAAkCrwB,GAE5F,MACE,CAER,CAKU,6BAAMwwB,CAAwBluB,GAEpC,OADAtwD,KAAK20D,mBAAqB30D,KAAK40D,mBACxBtE,CACX,CAKQ,wCAAMiuB,GACV,GAAIv+E,KAAK88C,cAAgB98C,KAAKixD,qBAC1B,OAAOzlB,QAAQU,UAGnB,MAAM2oB,EAAyC,IAAI3qB,EAAA0D,SAEnD,IACI,MAAM0iB,QAAgCtwD,KAAKyxD,kBACrCpvB,QAA+CiuB,EAAW/jB,OAChE,GAAIvsC,KAAK88C,cAAgB98C,KAAKixD,qBAG1B,OADA4D,EAAuB3oB,UAChBV,QAAQU,UAGnB,IAAK7J,EACD,OAAOriC,KAAKu+E,qCAGhB,MAAMx2B,EAAoB/nD,KAAKy+E,+BAA+B12B,UACxD+0B,EAAkCz6C,EAAQy6C,wBAAwB1rE,cACxE,IAAI2tE,GAAqB,EAEzB,IACI,OAAQjC,GACJ,IAAK,OACL,IAAK,sBACL,IAAK,UACD,MAAMkC,EAAyC5zB,EAAA6zB,uBAAuBz2B,SAASnmB,EAAQqlB,UACvF,OAAQs3B,EAAeE,QAAQ9tE,eAO3B,IAAK,kBAED,MAAM+tE,EAAwD/zB,EAAAg0B,gCAAgC52B,SAASnmB,EAAQqlB,UAEzG23B,EAA6CF,EAAoBG,aAAah2E,KAAK4pB,IAC3C,CACtCqsD,OAAQrsD,EAAEqsD,OACVn8D,YAAa8P,EAAE6mB,SACf1Y,GAAInO,EAAEssD,cACNC,OAAQvsD,EAAEwsD,OACVC,QAASzsD,EAAE0sD,QACXC,WAAY3sD,EAAE4sD,OACdC,kBAAmB7sD,EAAE8sD,WAKvBhgF,KAAKq+E,iCAAiC4B,0BACxCjgF,KAAKq+E,iCAAiC4B,yBAAyBjgF,KAAKq+E,iCAChE,IAAIN,EAAAmC,0BAA0Bf,EAAoBgB,OAAQhB,EAAoB55E,MAC1E45E,EAAoBiB,YAAajB,EAAoBkB,gBACrDlB,EAAoBmB,oBAAqBnB,EAAoBoB,WAC7DpB,EAAoBqB,QAASnB,EAAoBt3B,IAE7D,MAMJ,IAAK,0BAEK/nD,KAAKq+E,iCAAiCoC,kCACxCzgF,KAAKq+E,iCAAiCoC,iCAAiCzgF,KAAKq+E,iCACxE,IAAIN,EAAA2C,8BAA8B1B,EAAeQ,cAC7CxB,EAAA2C,mCAAmCC,wBACnC5B,EAAe57E,MAAO2kD,IAGlC,MAQJ,IAAK,wBAEK/nD,KAAKq+E,iCAAiCoC,kCACxCzgF,KAAKq+E,iCAAiCoC,iCAAiCzgF,KAAKq+E,iCACxE,IAAIN,EAAA2C,8BAA8B1B,EAAeQ,cAC7CxB,EAAA2C,mCAAmCE,sBACnC7B,EAAe57E,MAAO2kD,IAGlC,MAMJ,IAAK,UAEK/nD,KAAKq+E,iCAAiCoC,kCACxCzgF,KAAKq+E,iCAAiCoC,iCAAiCzgF,KAAKq+E,iCACxE,IAAIN,EAAA2C,8BAA8B1B,EAAeQ,cAC7CxB,EAAA2C,mCAAmCG,QACnC9B,EAAe57E,MAAO2kD,IAGlC,MAKJ,IAAK,aAEK/nD,KAAKq+E,iCAAiC0C,wBACxC/gF,KAAKq+E,iCAAiC0C,uBAAuB/gF,KAAKq+E,iCAC9D,IAAIN,EAAAiD,iBAAiBhC,EAAe57E,MAAkB2kD,IAG9D,MAKJ,IAAK,wBAEK/nD,KAAKq+E,iCAAiC4C,wBACxCjhF,KAAKq+E,iCAAiC4C,uBAAuBjhF,KAAKq+E,iCAC9D,IAAIl0C,EAAA+2C,gCAAgClC,EAAe57E,MAAiBpD,KAAKy+E,+BAA+B12B,YAGhH,MAKJ,IAAK,YAEK/nD,KAAKq+E,iCAAiCoC,kCACxCzgF,KAAKq+E,iCAAiCoC,iCAAiCzgF,KAAKq+E,iCACxE,IAAIN,EAAA2C,8BAA8B1B,EAAeQ,cAC7CxB,EAAA2C,mCAAmCQ,UACnCnC,EAAe57E,MAAO2kD,IAGlC,MAKJ,IAAK,eAEK/nD,KAAKq+E,iCAAiC+C,yBACxCphF,KAAKq+E,iCAAiC+C,wBAAwBphF,KAAKq+E,iCAC/D,IAAIN,EAAAsD,kBAAkBrC,EAAe57E,MAAkB2kD,IAG/D,MAMJ,IAAK,iBAEK/nD,KAAKq+E,iCAAiCoC,kCACxCzgF,KAAKq+E,iCAAiCoC,iCAAiCzgF,KAAKq+E,iCACxE,IAAIN,EAAA2C,8BAA8B1B,EAAeQ,cAC7CxB,EAAA2C,mCAAmCW,eACnCtC,EAAe57E,MAAO2kD,IAGlC,MAKJ,IAAK,cAED,MAAMw5B,EAAqDn2B,EAAAo2B,2BAA2Bh5B,SAASnmB,EAAQqlB,UAEjG+5B,EAA2C,CAC7ClC,OAAQgC,EAAuBhC,OAC/Bn8D,YAAam+D,EAAuBxnC,SACpC1Y,GAAIkgD,EAAuB/B,cAC3BC,OAAQ8B,EAAuB7B,OAC/BC,QAAS4B,EAAuB3B,QAChCC,WAAY0B,EAAuBzB,OACnCC,kBAAmBwB,EAAuBvB,QAGxChgF,KAAKq+E,iCAAiCqD,gCACxC1hF,KAAKq+E,iCAAiCqD,+BAA+B1hF,KAAKq+E,iCACtE,IAAIN,EAAA4D,qBACAF,EACA15B,IAGZ,MAKJ,IAAK,eAED,MAAM65B,EAA2C,CAC7CvgD,GAAI29C,EAAeQ,eAGjBx/E,KAAKq+E,iCAAiCwD,iCACxC7hF,KAAKq+E,iCAAiCwD,gCAAgC7hF,KAAKq+E,iCACvE,IAAIN,EAAA4D,qBAAqBC,EAAoB75B,IAGrD,MAMJ,IAAK,oBAIOi3B,EAAeQ,cAGvB,MAEJ,IAAK,QACD,MAAMj6E,EAAQ,IAAI2lD,EAAAjG,8BACd,KACI,MAAM68B,EAAqB9C,EAAez5E,MAC1C,OAAOimC,QAAQU,QAAQ41C,EAAmB,IAE9C,KACI,MAAMA,EAAqB9C,EAAez5E,MAC1C,OAAOimC,QAAQU,QAAQ41C,EAAmB,IAElD9hF,KAAKuiD,eAAiBh9C,EACtBvF,KAAKq+E,iCAAiC0D,QAAQx8E,GAUtD,MAKJ,IAAK,UAKL,IAAK,QAED,MAAMy8E,EAAuC52B,EAAA62B,sBAAsBz5B,SAASnmB,EAAQqlB,UAC9Ew6B,EAAsE,UAA5BpF,EAAuC3yC,EAAAkf,aAAa84B,4BAA8Bh4C,EAAAkf,aAAa+4B,6BAEzIC,EAA8C,IAAIl4C,EAAAm4C,8BAA8BN,EAAcxC,cAChGx/E,KAAKuiF,gBAAgBP,EAAcQ,cACnCR,EAAcj2B,SACdi2B,EAAc3gD,GACd6gD,EACAF,EAAcnR,iBACd/vE,OACAA,EACAuhC,EAAQqlB,cACR5mD,GAEAkhF,EAAcS,eAEY3hF,IAAtBuhF,EAAaptE,MAAsBotE,EAAaptE,KAAK5U,OAAS,GAEvD2hF,EAAc3gD,KAAOrhC,KAAKo+E,8BADjCW,GAAY,GASZA,GACM/+E,KAAKq+E,iCAAiCqE,qBACxC1iF,KAAKq+E,iCAAiCqE,oBAAoB1iF,KAAKq+E,iCAC3D,IAAIN,EAAA4E,yCAAyC3E,EAAA4E,mCAAmCC,MAAOR,EAAct6B,UAGpFjnD,IAAtBuhF,EAAaptE,OACpBjV,KAAKo+E,2BAA6B4D,EAAc3gD,GAC1CrhC,KAAKq+E,iCAAiCqE,qBACxC1iF,KAAKq+E,iCAAiCqE,oBAAoB1iF,KAAKq+E,iCAC3D,IAAIN,EAAA4E,yCAAyC3E,EAAA4E,mCAAmCE,QAAST,EAAct6B,KAInH,MAKJ,IAAK,qBAED,MAAMg7B,EAAmC33B,EAAA43B,oBAAoBx6B,SAASnmB,EAAQqlB,UAGxEu7B,EAA4C,IAAI94C,EAAAm4C,8BAA8BS,EAAYvD,cAC5Fx/E,KAAKuiF,gBAAgBQ,EAAYP,cACjCO,EAAYh3B,cACZjrD,OACAA,EACAiiF,EAAYG,kBACZpiF,OACAA,OACAA,EACAuhC,EAAQqlB,cACR5mD,GAEEd,KAAKq+E,iCAAiCqE,qBACxC1iF,KAAKq+E,iCAAiCqE,oBAAoB1iF,KAAKq+E,iCAC3D,IAAIN,EAAA4E,yCAAyC3E,EAAA4E,mCAAmCO,eAAgBF,EAAYl7B,KAQ9H,MAAOxlD,GACL,CAEJ,OAAOvC,KAAKu+E,qCACd,MAAOh8E,GACLvC,KAAKixD,sBAAuB,EAGhC,OAAO4D,EAAuB3lB,OAClC,CAEQ,sBAAM0lB,GACV,GAAI50D,KAAK88C,aACL,OAAOtR,QAAQU,UAEnBlsC,KAAKixD,sBAAuB,EAE5B,MAAMmyB,EAA0BpjF,KAAKu+E,qCAErC,IAEI,aADgB6E,EAElB,MAAOzrE,GAEL,OADA3X,KAAKmoD,kBAAkBnoD,KAAKipD,mBAAqBjpD,KAAKipD,mBAAmBlB,UAAY,GAAI/nD,KAAKipD,mBAAqBjpD,KAAKipD,mBAAmBhP,UAAY,GAAI9P,EAAAwnB,mBAAmB54C,MAAOoxB,EAAA2jB,sBAAsB4G,aAAc/8C,GAClN,KAEf,CAGQ84C,gBAAAA,GACJ,OAAIzwD,KAAK88C,aACEtR,QAAQU,aAAqBprC,QAECA,IAArCd,KAAKm+E,4BACEn+E,KAAKm+E,4BAA4BrxC,MAAMwjB,GACtCA,EAAW/rC,UAAY2lB,EAAAsT,gBAAgBK,cACvC79C,KAAKs9C,iBAAmB,KACxBt9C,KAAKm+E,iCAA8Br9E,EAC5Bd,KAAKywD,oBAETzwD,KAAKm+E,8BACb,KACCn+E,KAAKs9C,iBAAmB,KACxBt9C,KAAKm+E,iCAA8Br9E,EAC5Bd,KAAKywD,sBAGhBzwD,KAAKixD,qBACEzlB,QAAQU,aAAqBprC,IAGxCd,KAAKm+E,4BAA8Bn+E,KAAK4zD,cAAc9mB,MAAMwjB,GAAyCA,IAE9FtwD,KAAKm+E,4BAChB,CAEQoE,eAAAA,CAAgBc,GACpB,IAAIb,EAEJ,QAAI1hF,IAAcuiF,EAA2B,CACzCb,EAAe,IAAIr4C,EAAAm5C,aACnB,IAAK,MAAMC,KAAeF,EACtBb,EAAax5E,IAAIu6E,EAAYjb,KAAMib,EAAYA,aAIvD,OAAOf,CACX,EAtgBJ5uE,EAAAA,2BAAAqqE,iICtDA,MAAA/zC,EAAAv2B,EAAA,MASA6vE,EAAA7vE,EAAA,MACA20B,EAAA30B,EAAA,KACAw2B,EAAAx2B,EAAA,MAMAypC,EAAAzpC,EAAA,MACA4xC,EAAA5xC,EAAA,MACAw3C,EAAAx3C,EAAA,MAGAu3C,EAAAv3C,EAAA,MAYA,MAAa8vE,UAAgDt4B,EAAAG,sBAMzDx+C,WAAAA,CAAmB42E,GACfvhD,QAEAmG,EAAAQ,UAAUC,uBAAuB26C,EAAY,cAC7C1jF,KAAK2jF,eAAiBD,CAC1B,CAEOp4E,MAAAA,CAAO8vB,EAA0BowB,EAAoBnP,GACxD,MAAMunC,EAAyH,SAAhGxoD,EAAOgb,WAAWC,YAAY,2CAA4C,IAAIpZ,cAEvG4mD,EAAW7jF,KAAK2jF,iBAAiBG,KACjCr+B,EAASo+B,EAASE,uBAAyB3oD,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWoV,+BAAgC,IAEpHs4B,EAA+C,CACjDr4B,WAAYR,EAAAG,sBAAsB9F,cAAcC,GAChDtiC,KAAMsgE,EAAwCQ,kBAC9Cx+B,OAAQ/mB,mBAAmB+mB,IAE/Bu+B,EAAkBz+B,EAAAO,oBAAoBwE,UAAY5rB,mBAAmBtD,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAW0V,qCAAsC,KACpJg4B,EAAkBz+B,EAAAO,oBAAoB2Y,cAAgB//B,mBAAmBmlD,EAAS3pC,QAClF8pC,EAAkBz+B,EAAAO,oBAAoB4Y,aAAehgC,mBAAmBmlD,EAASrE,eACjFwE,EAAkBz+B,EAAAO,oBAAoB6Y,kBAAoBklB,EAASpE,OAAS,GAAM,IAAMl6B,EAAAO,oBAAoB6Y,iBAE5G,IAAI2c,EAAsB,GAC1B,MAAMjgC,EAAyC,CAAC,EAC1C1Y,EAAqC,CAAC,EAE5C,GAAIihD,EAAwB,CAGxB,GADAtI,EAAclgD,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWmV,mCAClD6vB,EAAa,CAKdA,EAAc,SAJGlgD,EAAOgb,WAAWC,YAC/BlM,EAAAmM,WAAWsV,6BACX,8CAEgC,SAKxC0vB,EAAckI,EAAAU,YAAYC,aAAa7I,EAAa0I,GAEpD,MAAMI,EAAY,IAAI9gD,IAAIg4C,GAC1B8I,EAAUC,aAAa9iF,SAAQ,CAAC0pB,EAAa/pB,KACzCm6C,EAAYn6C,GAAO+pB,CAAG,KAGN,IAAIigC,EAAAgwB,8BACZG,eAAehgC,EAAajgB,EAAQkgD,GAGhDjgC,EAAYkK,EAAAO,oBAAoB2Y,cAAgBulB,EAAkBz+B,EAAAO,oBAAoB2Y,cACtFpjB,EAAYkK,EAAAO,oBAAoB4Y,aAAeslB,EAAkBz+B,EAAAO,oBAAoB4Y,aAChFmlB,EAASpE,SACVpkC,EAAYkK,EAAAO,oBAAoB6Y,kBAAoB,IAGlDpZ,EAAAO,oBAAoB2I,UAAUpT,IAChCA,EAAYkK,EAAAO,oBAAoB2I,QAAU,UAG9C21B,EAAUC,aAAa9iF,SAAQ,CAAC0pB,EAAa/pB,KACzCkjF,EAAUC,aAAar7E,IAAI9H,EAAKm6C,EAAYn6C,WACrCm6C,EAAYn6C,EAAI,IAG3Bo6E,EAAc8I,EAAUt2E,eAErB,CAEH,MAAMw2E,EAAc,IAAIp5B,EAAAq5B,6BAExBjJ,EAAcgJ,EAAYE,eAAeppD,GAAQ,GACjDkgD,EAAckI,EAAAU,YAAYC,aAAa7I,EAAa0I,GAEpDM,EAAYjJ,eAAehgC,EAAajgB,EAAQkgD,GAGpD34C,EAAQya,EAAAM,YAAYC,cAAgBtB,EACpC1Z,EAAQuH,EAAAoO,eAAeG,aAAalzC,OAASs+E,EAASt+E,MAChDimD,EAASjmD,QACXo9B,EAAQ6oB,EAAS/O,YAAc+O,EAASjmD,OAG5C,MAAM62C,EAA6G,SAAzFhhB,EAAOgb,WAAWC,YAAY,oCAAqC,IAAIpZ,cACjG,OAAO,IAAIiN,EAAAoiB,oBAAoBgvB,EAAajgC,EAAa1Y,EAAS,IAAIuoB,EAAAqB,0BAA6BriB,EAAAwL,UAAUiB,qBAAqBvb,GAASghB,EAAmBC,EAClK,EA5FJzoC,EAAAA,wCAAA6vE,EAE4BA,EAAAQ,kBAA4B,6RCpCxD,MAAA/5C,EAAAv2B,EAAA,MAGA,MAAaqtE,UAAyB92C,EAAAoqB,iBAGlCxnD,WAAAA,CAAmB6yE,EAAkB53B,GACjC5lB,MAAM4lB,GAEN/nD,KAAKykF,YAAc9E,CACvB,CAEA,WAAWA,GACP,OAAO3/E,KAAKykF,WAChB,EAXJ7wE,EAAAA,iBAAAotE,EAcA,MAAaK,UAA0Bn3C,EAAAoqB,iBAGnCxnD,WAAAA,CAAmB43E,EAAmB38B,GAClC5lB,MAAM4lB,GAEN/nD,KAAK2kF,aAAeD,CACxB,CAEA,WAAW/E,GACP,OAAO3/E,KAAK2kF,YAChB,EAXJ/wE,EAAAA,kBAAAytE,EAcA,MAAaM,UAA6Bz3C,EAAAoqB,iBAGtCxnD,WAAAA,CAAmB83E,EAAmC78B,GAClD5lB,MAAM4lB,GACN/nD,KAAK6kF,gBAAkBD,CAC3B,CAEA,eAAWA,GACP,OAAO5kF,KAAK6kF,eAChB,EAVJjxE,EAAAA,qBAAA+tE,EAaA,MAAajB,UAAsCx2C,EAAAoqB,iBAK/CxnD,WAAAA,CAAmB0yE,EAAuBt+E,EAAakC,EAA8C2kD,GACjG5lB,MAAM4lB,GAEN/nD,KAAK8kF,QAAU5jF,EACflB,KAAK+kF,UAAY3hF,EACjBpD,KAAKglF,kBAAoBxF,CAC7B,CAEA,SAAWp8E,GACP,OAAOpD,KAAK+kF,SAChB,CAEA,OAAW7jF,GACP,OAAOlB,KAAK8kF,OAChB,CACA,MAAWzjD,GACP,OAAOrhC,KAAKglF,iBAChB,EAtBJpxE,EAAAA,8BAAA8sE,EAyBA,MAAaR,UAAkCh2C,EAAAoqB,iBAW3CxnD,WAAAA,CAAmB2qD,EAAwBlyD,EAAe66E,EAAuBC,EAC9DC,EAA6B2E,EAAuBC,EAAoB5F,EAAsCv3B,GAC7H5lB,MAAM4lB,GACN/nD,KAAKmlF,WAAa1tB,EAClBz3D,KAAKolF,iBAAmB7/E,EACxBvF,KAAKqlF,gBAAkBjF,EACvBpgF,KAAKslF,oBAAsBjF,EAC3BrgF,KAAKulF,wBAA0BjF,EAC/BtgF,KAAKwlF,iBAAmBP,EACxBjlF,KAAKwlF,iBAAmBN,EACxBllF,KAAKylF,iBAAmBnG,CAC5B,CACA,gBAAWnlC,GACP,OAAOn6C,KAAKolF,gBAChB,CAEA,kBAAW3tB,GACP,OAAOz3D,KAAKmlF,UAChB,CAEA,eAAW/E,GACP,OAAOpgF,KAAKqlF,eAChB,CAEA,mBAAWhF,GACP,OAAOrgF,KAAKslF,mBAChB,CAEA,uBAAWhF,GACP,OAAOtgF,KAAKulF,uBAChB,CAEA,gBAAWN,GACP,OAAOjlF,KAAKwlF,gBAChB,CAEA,aAAWN,GACP,OAAOllF,KAAK0lF,aAChB,CAEA,gBAAWpG,GACP,OAAOt/E,KAAKylF,gBAChB,EArDJ7xE,EAAAA,0BAAAssE,EAwDAtsE,EAAAA,yCAAA,MAKI9G,WAAAA,CAAmBoyE,EAAiBr+B,EAAyCkH,GACzE/nD,KAAK2lF,YAAc9kC,EACnB7gD,KAAK4lF,YAAc1G,EACnBl/E,KAAKi/D,cAAgBlX,CACzB,CAEA,WAAWlH,GACP,OAAO7gD,KAAK2lF,WAChB,CAEA,WAAWzG,GACP,OAAOl/E,KAAK4lF,WAChB,CAEA,aAAW79B,GACP,OAAO/nD,KAAKi/D,aAChB,uLC9EJrrD,EAAAA,qBAAA,MAEI9G,WAAAA,GAAyF,IAA/DwyE,EAAA/xE,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAuC,GAAWs4E,EAAat4E,UAAAlN,OAAA,EAAAkN,UAAA,QAAAzM,EAA/D,KAAAw+E,aAAAA,EAAkD,KAAAuG,KAAAA,CAE5E,CAMOC,sBAAAA,CAAuB1iF,GAC1B,QAActC,IAAVsC,EACA,OAGJ,MAAM2iF,EAAiB/lF,KAAKgmF,oBAAoB5iF,EAAMi+B,IAQtD,OAPI0kD,GAAU,EACV/lF,KAAKs/E,aAAa2G,OAAOF,EAAQ,EAAG3iF,GAEpCpD,KAAKs/E,aAAa1+E,KAAKwC,GAIpBpD,KAAKkmF,eAAe9iF,EAAMi+B,GACrC,CAMO2kD,mBAAAA,CAAoB3kD,GACvB,OAAOrhC,KAAKs/E,aAAa6G,WAAWjzD,GAAqCA,EAAEmO,KAAOA,GACtF,CAMO6kD,cAAAA,CAAe7kD,GAClB,OAAOrhC,KAAKs/E,aAAa8G,MAAMlzD,GAAqCA,EAAEmO,KAAOA,GACjF,CAKOglD,iBAAAA,CAAkBhlD,GACrBrhC,KAAKs/E,aAAet/E,KAAKs/E,aAAahzD,QAAQ4G,GAAqCA,EAAEmO,KAAOA,GAChG,CAKA,QAAWsC,GACP,OAAO3jC,KAAKs/E,aAAa8G,MAAMlzD,IAAkD,IAAbA,EAAEusD,QAC1E,CAKA,MAAW6G,GACP,OAAOtmF,KAAKkmF,eAAelmF,KAAK6lF,KACpC,GAwHSjyE,EAAAA,mCAAqC,CAC9CsrE,QAAS,UACT2D,MAAO,QACP/qE,KAAM,OACNqrE,eAAgB,kBAChBoD,UAAW,aACXzD,QAAS,UACT0D,mBAAoB,sBACpBC,kBAAmB,sBAMV7yE,EAAAA,mCAAqC,CAC9C0tE,eAAgB,iBAChBoF,kBAAmB,oBACnBC,iBAAkB,mBAClBC,gBAAiB,kBACjBC,YAAa,cACbC,aAAc,eACdC,gBAAiB,kBACjBC,sBAAuB,wBACvBC,aAAc,eACdnG,QAAS,UACToG,WAAY,aACZrG,sBAAuB,wBACvBD,wBAAyB,0BACzBO,UAAW,qKCpRf,MAAAj3C,EAAAv2B,EAAA,MAOAw2B,EAAAx2B,EAAA,MAMA20B,EAAA30B,EAAA,KACAu3C,EAAAv3C,EAAA,MAgBAwzE,EAAAxzE,EAAA,MACAyzE,EAAAzzE,EAAA,MAaAC,EAAAA,8BAAA,MACW,iBAAOyzE,CAAW5J,EAA6B6J,EAAuCC,GACzF,OAAO,IAAIC,EAAiC/J,EAAc6J,EAAcC,EAC5E,GAOJ,MAAaC,UAAyCt8B,EAAAu8B,WAUlD36E,WAAAA,CAAmB2wE,EAA6B6J,EAAuCC,GACnF,MAAMG,EAAoBJ,EAC1Bh/C,EAAAQ,UAAU6+C,YAAYD,EAAmB,gBACzC,MAAME,EAAmBnK,EACzBn1C,EAAAQ,UAAU6+C,YAAYC,EAAkB,oBAExCzlD,MAAMolD,EAAaG,EAAkB10D,WAAY,IAAIm0D,EAAA5K,+BAErDv8E,KAAK6nF,iBAAmBD,EACxB5nF,KAAKs8C,gBAAiB,EACtBt8C,KAAK8nF,eAAiBJ,EAAkB10D,WAAWvX,QACnDzb,KAAK+nF,eAAiB78B,EAAA88B,WAAWC,eAAejoF,MAEtB,OADQA,KAAK8nF,eAAezxC,YAAY6U,EAAA5U,WAAWkxB,kBAAmB,MAAMp2D,eAClD,qBAAV25B,MAA6C,qBAAZ08B,QACvEznE,KAAKwmE,eAAiBr8B,EAAAplB,QAAQgZ,WAC9B/9B,KAAKkoF,iBAAmB/9C,EAAAplB,QAAQ+Y,cAEV,qBAAXuC,QAEPrgC,KAAKwmE,eAAiBnmC,OAAOtC,WAAW9U,KAAKoX,QAE7CrgC,KAAKkoF,iBAAmB7nD,OAAOvC,aAAa7U,KAAKoX,UAEjDrgC,KAAKwmE,eAAiBzoC,WACtB/9B,KAAKkoF,iBAAmBpqD,aAGpC,CAeA,aAAWqqD,CAAU7d,GACjBtqE,KAAK+nF,eAAeI,UAAY7d,CACpC,CAEA,gBAAW8d,CAAa9d,GACpBtqE,KAAK+nF,eAAeK,aAAe9d,CACvC,CAKA,6BAAW+d,GACP,OAAOroF,KAAKsoF,6BAChB,CAKA,cAAWt1D,GACP,OAAOhzB,KAAK8nF,cAChB,CAEOhrC,UAAAA,GACH,OAAO98C,KAAKs8C,cAChB,CAMO/H,OAAAA,CAAQhvC,EAAe+kE,EAAiBh1B,GAC3C,IACIhN,EAAAQ,UAAUy/C,gBAAgBvoF,KAAKs8C,gBAC/BhU,EAAAQ,UAAUw0C,wBAAwB/3E,EAAO,SACzCvF,KAAKwoF,SAAS9e,4BAA8BnkE,EAC5CvF,KAAKyoF,2BACLzoF,KAAKwoF,SAASne,aAAaC,EAAIh1B,GACjC,MAAO39B,GACL,GAAM29B,EACF,GAAI39B,aAAiBoB,MAAO,CACxB,MAAM63B,EAAoBj5B,EAC1B29B,EAAI1E,EAAW1lC,KAAO,KAAO0lC,EAAWvO,cAExCiT,EAAI39B,GAIpB,CAKO49B,UAAAA,CAAW+0B,EAAiBh1B,GAC/B,IACIhN,EAAAQ,UAAUy/C,gBAAgBvoF,KAAKs8C,qBACDx7C,IAA1Bd,KAAK+5D,kBAEN/5D,KAAKkoF,iBAAiBloF,KAAK+5D,kBAE9B/5D,KAAKwoF,SAASjzC,aAAazI,MAAK,KACtBw9B,GACFA,OAEJ3yD,IACM29B,GACFA,EAAI39B,MAGd,MAAOA,GACL,GAAM29B,EACF,GAAI39B,aAAiBoB,MAAO,CACxB,MAAM63B,EAAoBj5B,EAC1B29B,EAAI1E,EAAW1lC,KAAO,KAAO0lC,EAAWvO,cAExCiT,EAAI39B,GAIZ3X,KAAK68C,SAAQ,GAAMtL,OAAOhuB,IACtB4mB,EAAA8F,OAAOpP,SAASsI,QAAQ,IAAIgB,EAAA2U,gBAAgBv7B,GAAQ,IAIhE,CAQOs4B,WAAAA,CAAYqjC,EAAiB5U,EAAiBh1B,GACjD,IACIhN,EAAAQ,UAAUy/C,gBAAgBvoF,KAAKs8C,gBAC/Bt8C,KAAKkxD,YAAYguB,EAAS5U,EAAIh1B,GAChC,MAAO39B,GACL,GAAM29B,EACF,GAAI39B,aAAiBoB,MAAO,CACxB,MAAM63B,EAAoBj5B,EAC1B29B,EAAI1E,EAAW1lC,KAAO,KAAO0lC,EAAWvO,cAExCiT,EAAI39B,GAKZ3X,KAAK68C,SAAQ,GAAMtL,OAAOhuB,IACtB4mB,EAAA8F,OAAOpP,SAASsI,QAAQ,IAAIgB,EAAA2U,gBAAgBv7B,GAAQ,IAIhE,CAKOw+D,OAAAA,CAAQx8E,GACXvF,KAAK6nF,iBAAiB9F,QAAQx8E,EAClC,CAKO,WAAMinC,GACJxsC,KAAKs8C,iBACAt8C,KAAK+nF,iBACP/nF,KAAK+nF,eAAeW,kBACpB1oF,KAAK+nF,eAAev7C,SAExBxsC,KAAK+nF,oBAAiBjnF,QAChBd,KAAK68C,SAAQ,GAE3B,CAMU,aAAMA,CAAQ8rC,GAChB3oF,KAAKs8C,gBAGLqsC,SAC8B7nF,IAA1Bd,KAAK+5D,kBAEL/5D,KAAKkoF,iBAAiBloF,KAAK+5D,kBAE/B/5D,KAAKs8C,gBAAiB,EAChBt8C,KAAK+nF,iBACP/nF,KAAK+nF,eAAeW,kBACpB1oF,KAAK+nF,eAAev7C,QACpBxsC,KAAK+nF,oBAAiBjnF,SAEpBqhC,MAAM0a,QAAQ8rC,GAE5B,CAMUC,sBAAAA,CAAuBtB,GAC7B,OAAO,IAAIp9C,EAAA2+C,iBAAiBvB,EAActnF,KAAK8nF,eACnD,CAUUgB,uBAAAA,CACNvmC,EACAC,EACA+kC,EACAjgC,GAEA,MAAMtQ,EAA+BuwC,EAErC,OAAO,IAAIH,EAAAnJ,2BAA2B17B,EAAgBC,EAAmBxL,EAAasQ,EAAkBtnD,KAC5G,CAEQkxD,WAAAA,CAAY63B,EAAaze,EAAeh1B,GAEb0zC,EAAI95C,EAAqBo7B,EAAeh1B,UACnDx0C,IAAZouC,EACAA,EAAQpC,MAAK,KACT,IACUw9B,GACFA,IAEN,MAAO/nE,GACC+yC,GACFA,EAAI,yCAAyC/yC,UAGrDghB,IACA,IACU+xB,GACFA,EAAI/xB,GAGV,MAAO5L,GAAQ,KAGf29B,GACFA,EAAI,iBAKhB0zC,CA5BkBhpF,KAAKwoF,SA4BU3J,iBAAiBkK,GAAMze,EAAIh1B,GAC5Dt1C,KAAKyoF,0BACT,CAEQA,wBAAAA,QAC0B3nF,IAA1Bd,KAAK+5D,kBAEL/5D,KAAKkoF,iBAAiBloF,KAAK+5D,kBAG/B/5D,KAAK+5D,iBAAmB/5D,KAAKwmE,gBAAe,KACxCxmE,KAAK67C,YAAY77C,KAAK6nF,iBAAiBoB,eAAe,GACvD,IACP,EAtRJr1E,EAAAA,iCAAA4zE,+HCvDA,MAAAt9C,EAAAv2B,EAAA,MAOAkqE,EAAAlqE,EAAA,MAKAC,EAAAA,sCAAA,MAKWmsC,mBAAAA,CAAoB1d,GACvB,MAAM6mD,EAAW,IAAIh/C,EAAA0D,SAErB,IACI,GAAIvL,EAAQwvB,cAAgB3nB,EAAA2V,YAAYK,KAAM,CAC1C,MAAMipC,EAAiD,IAAItL,EAAAjB,8BAA8Bv6C,EAAQwvB,YAAaxvB,EAAQ+mD,YAAa,CAAC,EAAG/mD,EAAQhB,IAC/I6nD,EAASh9C,QAAQi9C,QACV9mD,EAAQwvB,cAAgB3nB,EAAA2V,YAAYC,QAC3CopC,EAASh9C,QAAQ,IAAI2xC,EAAAjB,8BAA8Bv6C,EAAQwvB,YAAaxvB,EAAQgnD,mBAAevoF,EAAWuhC,EAAQhB,KAExH,MAAO9+B,GACL2mF,EAASz9C,OAAO,wCAAwClpC,KAG5D,OAAO2mF,EAASh6C,OACpB,CAKOmR,qBAAAA,CAAsBhe,GAEzB,MAAM6mD,EAAW,IAAIh/C,EAAA0D,SAErB,IACI,GAAIvL,EAAQwvB,cAAgB3nB,EAAA2V,YAAYK,KAAM,CAC1C,MAAMW,EAAU,GAAGxe,EAAQqlB,SAAWrlB,EAAQqlB,SAAW,KACzDwhC,EAASh9C,QAAQ,IAAIhC,EAAA0V,oBAAoB1V,EAAA2V,YAAYK,KAAMW,EAASxe,EAAQhB,MAElF,MAAO9+B,GACL2mF,EAASz9C,OAAO,iCAAiClpC,KAGrD,OAAO2mF,EAASh6C,OACpB,iFCnDJ,IAAAo6C,EAAA31E,EAAA,MAASzQ,OAAAA,eAAAA,EAAAA,sBAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAugF,EAAAC,mBAAmB,IAC5B,IAAAlN,EAAA1oE,EAAA,MAASzQ,OAAAA,eAAAA,EAAAA,+BAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAszE,EAAAZ,4BAA4B,IACrC,IAAA+N,EAAA71E,EAAA,MAASzQ,OAAAA,eAAAA,EAAAA,gCAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAygF,EAAAC,6BAA6B,IACtC,IAAAC,EAAA/1E,EAAA,MAASzQ,OAAAA,eAAAA,EAAAA,wBAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAA2gF,EAAAC,qBAAqB,IAC9B,IAAA5L,EAAApqE,EAAA,MACIzQ,OAAAA,eAAAA,EAAAA,2CAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAg1E,EAAA4E,wCAAwC,IACxCz/E,OAAAA,eAAAA,EAAAA,oBAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAg1E,EAAAsD,iBAAiB,IACjBn+E,OAAAA,eAAAA,EAAAA,mBAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAg1E,EAAAiD,gBAAgB,IAChB99E,OAAAA,eAAAA,EAAAA,gCAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAg1E,EAAA2C,6BAA6B,IAC7Bx9E,OAAAA,eAAAA,EAAAA,uBAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAg1E,EAAA4D,oBAAoB,IACpBz+E,OAAAA,eAAAA,EAAAA,4BAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAg1E,EAAAmC,yBAAyB,IAC7B,IAAAlC,EAAArqE,EAAA,MAEIzQ,OAAAA,eAAAA,EAAAA,qCAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAi1E,EAAA2C,kCAAkC,IAClCz9E,OAAAA,eAAAA,EAAAA,qCAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAi1E,EAAA4E,kCAAkC,IAGlC1/E,OAAAA,eAAAA,EAAAA,uBAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAi1E,EAAA4L,oBAAoB,gHCDxB,MAAa3K,EAGTnyE,WAAAA,CAAmB21B,GACfziC,KAAK6pF,oBANiBpnD,IAA0CxpB,KAAKlS,MAAM07B,GAMhDqnD,CAAqBrnD,EACpD,CAEA,QAAW39B,GACP,OAAO9E,KAAK6pF,oBAAoB/kF,IACpC,CACA,WAAWo6E,GACP,OAAOl/E,KAAK6pF,oBAAoB3K,OACpC,CACA,MAAW79C,GACP,OAAOrhC,KAAK6pF,oBAAoBxoD,EACpC,CACA,YAAW0Y,GACP,OAAO/5C,KAAK6pF,oBAAoB9vC,QACpC,CACA,iBAAWylC,GACP,OAAOx/E,KAAK6pF,oBAAoBrK,aACpC,CACA,UAAWW,GACP,OAAOngF,KAAK6pF,oBAAoB1J,MACpC,CACA,SAAW/8E,GACP,OAAOpD,KAAK6pF,oBAAoBzmF,KACpC,CACA,SAAWmC,GACP,OAAOvF,KAAK6pF,oBAAoBtkF,KACpC,CAEO,eAAOijD,CAAS/lB,GACnB,OAAO,IAAIw8C,EAAuBx8C,EACtC,EAlCJ7uB,EAAAA,uBAAAqrE,gFCnBA,IAAA8K,EAAAp2E,EAAA,MAASzQ,OAAAA,eAAAA,EAAAA,yBAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAghF,EAAA9K,sBAAsB,IAC/B,IAAA+K,EAAAr2E,EAAA,MAAwEzQ,OAAAA,eAAAA,EAAAA,kCAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAihF,EAAA5K,+BAA+B,IAAEl8E,OAAAA,eAAAA,EAAAA,6BAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAihF,EAAAxI,0BAA0B,IACnI,IAAAyI,EAAAt2E,EAAA,MAAsCzQ,OAAAA,eAAAA,EAAAA,wBAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAkhF,EAAAhI,qBAAqB,IAAE/+E,OAAAA,eAAAA,EAAAA,sBAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAkhF,EAAAjH,mBAAmB,sJCmChF,MAAa5D,EAGTtyE,WAAAA,CAAoB21B,GAChBziC,KAAKkqF,gCAPcznD,IAAmDxpB,KAAKlS,MAAM07B,GAO1C0nD,CAAkB1nD,EAC7D,CAEA,UAAW09C,GACP,OAAOngF,KAAKkqF,gCAAgC/J,MAChD,CAEA,MAAW9+C,GACP,OAAOrhC,KAAKkqF,gCAAgC7oD,EAChD,CAEA,WAAW69C,GACP,OAAOl/E,KAAKkqF,gCAAgChL,OAChD,CAEA,gBAAWI,GACP,OAAOt/E,KAAKkqF,gCAAgC5K,YAChD,CAEA,SAAW/5E,GACP,OAAOvF,KAAKkqF,gCAAgC3kF,KAChD,CAEA,eAAW66E,GACP,OAAOpgF,KAAKkqF,gCAAgC9J,WAChD,CAEA,mBAAWC,GACP,OAAOrgF,KAAKkqF,gCAAgC7J,eAChD,CAEA,uBAAWC,GACP,OAAOtgF,KAAKkqF,gCAAgC5J,mBAChD,CAEA,cAAWC,GACP,OAAOvgF,KAAKkqF,gCAAgC3J,UAChD,CAEA,WAAWC,GACP,OAAOxgF,KAAKkqF,gCAAgC1J,OAChD,CAEA,QAAW17E,GACP,OAAO9E,KAAKkqF,gCAAgCplF,IAChD,CAEO,eAAO0jD,CAAS/lB,GACnB,OAAO,IAAI28C,EAAgC38C,EAC/C,EArDJ7uB,EAAAA,gCAAAwrE,EAyDA,MAAaoC,EAIT10E,WAAAA,CAAoB21B,GAChBziC,KAAKoqF,+BAhEqB3nD,IAA8CxpB,KAAKlS,MAAM07B,GAgE7C4nD,CAAyB5nD,EACnE,CAEA,YAAWsX,GACP,OAAO/5C,KAAKoqF,+BAA+BrwC,QAC/C,CAEA,UAAWimC,GACP,OAAOhgF,KAAKoqF,+BAA+BpK,MAC/C,CAEA,UAAWF,GACP,OAAO9/E,KAAKoqF,+BAA+BtK,MAC/C,CAEA,WAAWF,GACP,OAAO5/E,KAAKoqF,+BAA+BxK,OAC/C,CAEA,UAAWF,GACP,OAAO1/E,KAAKoqF,+BAA+B1K,MAC/C,CAEA,iBAAWF,GACP,OAAOx/E,KAAKoqF,+BAA+B5K,aAC/C,CAEA,UAAWD,GACP,OAAOv/E,KAAKoqF,+BAA+B7K,MAC/C,CAEO,eAAO/2B,CAAS/lB,GACnB,OAAO,IAAI++C,EAA2B/+C,EAC1C,EAtCJ7uB,EAAAA,2BAAA4tE,mIC3DA,MAAaS,EAITn1E,WAAAA,CAAoB21B,GAChBziC,KAAKsqF,mBARgB7nD,IAAyCxpB,KAAKlS,MAAM07B,GAQ/C8nD,CAAoB9nD,EAClD,CAEA,eAAWouC,GACP,OAAO7wE,KAAKsqF,mBAAmBzZ,WACnC,CAEA,gBAAW2R,GACP,OAAOxiF,KAAKsqF,mBAAmB9H,YACnC,CAEA,MAAWnhD,GACP,OAAOrhC,KAAKsqF,mBAAmBjpD,EACnC,CAEA,YAAW0qB,GACP,OAAO/rD,KAAKsqF,mBAAmBv+B,QACnC,CAEA,YAAWhS,GACP,OAAO/5C,KAAKsqF,mBAAmBvwC,QACnC,CAEA,iBAAWylC,GACP,OAAOx/E,KAAKsqF,mBAAmB9K,aACnC,CAEA,UAAWW,GACP,OAAOngF,KAAKsqF,mBAAmBnK,MACnC,CAEA,aAAWqK,GACP,OAAOxqF,KAAKsqF,mBAAmBE,SACnC,CAEA,QAAW1lF,GACP,OAAO9E,KAAKsqF,mBAAmBxlF,IACnC,CAEA,WAAW29E,GACP,MAAwC,UAAjCziF,KAAKsqF,mBAAmBxlF,IACnC,CAEO,eAAO0jD,CAAS/lB,GACnB,OAAO,IAAIw/C,EAAsBx/C,EACrC,EAlDJ7uB,EAAAA,sBAAAquE,EAsDA,MAAae,EAITl2E,WAAAA,CAAoB21B,GAChBziC,KAAKyqF,iBA7DchoD,IAAuCxpB,KAAKlS,MAAM07B,GA6D7CioD,CAAkBjoD,EAC9C,CAEA,gBAAWygD,GACP,OAAOljF,KAAKyqF,iBAAiBvH,YACjC,CAEA,gBAAWV,GACP,OAAOxiF,KAAKyqF,iBAAiBjI,YACjC,CAEA,MAAWnhD,GACP,OAAOrhC,KAAKyqF,iBAAiBppD,EACjC,CAEA,YAAW0qB,GACP,OAAO/rD,KAAKyqF,iBAAiB1+B,QACjC,CAEA,YAAWhS,GACP,OAAO/5C,KAAKyqF,iBAAiB1wC,QACjC,CAEA,iBAAWylC,GACP,OAAOx/E,KAAKyqF,iBAAiBjL,aACjC,CAEA,UAAWW,GACP,OAAOngF,KAAKyqF,iBAAiBtK,MACjC,CAEA,aAAWqK,GACP,OAAOxqF,KAAKyqF,iBAAiBD,SACjC,CAEA,QAAW1lF,GACP,OAAO9E,KAAKyqF,iBAAiB3lF,IACjC,CAEO,eAAO0jD,CAAS/lB,GACnB,OAAO,IAAIugD,EAAoBvgD,EACnC,EA9CJ7uB,EAAAA,oBAAAovE,+GCvFA,MAAA94C,EAAAv2B,EAAA,MAGA20B,EAAA30B,EAAA,KACAw2B,EAAAx2B,EAAA,MAgBAu3C,EAAAv3C,EAAA,MAWA,MAAag2E,UAA8Bx/C,EAAAs9C,WAmBvC36E,WAAAA,CAAmB69E,EAAkDpD,GACjE,MAAMqD,EAA2DD,EACjEriD,EAAAQ,UAAU6+C,YAAYiD,EAA6B,2BAEnD,MAAMC,EAAmCtD,EACzCj/C,EAAAQ,UAAU6+C,YAAYkD,EAAiB,mBAEvCviD,EAAAQ,UAAUw0C,wBACNsN,EAA4BvC,0BAC5Bl+C,EAAAmM,WAAWnM,EAAAmM,WAAW0V,uCAE1B7pB,MAAMolD,EAAaqD,EAA4B53D,WAAY,IAAIk4B,EAAAgwB,8BAC/Dl7E,KAAK8qF,wBAAyB,EAC9B9qF,KAAK+qF,qBAAsB,CAC/B,CAEA,6BAAW1C,GAGP,OAFA//C,EAAAQ,UAAUy/C,gBAAgBvoF,KAAK8qF,wBAExB9qF,KAAKgzB,WAAWqjB,YAAYlM,EAAAmM,WAAW0V,qCAClD,CAEA,cAAWh5B,GACP,OAAOhzB,KAAK8nF,cAChB,CAEA,sBAAWhG,GACP,OAAO9hF,KAAKgzB,WAAWqjB,YAAYlM,EAAAmM,WAAW+mC,iCAClD,CAEA,sBAAWyE,CAAmBv8E,GAC1B+iC,EAAAQ,UAAUw0C,wBAAwB/3E,EAAO,SACzCvF,KAAKgzB,WAAWgf,YAAY7H,EAAAmM,WAAW+mC,iCAAkC93E,EAC7E,CAEA,gBAAWk4E,CAAav3C,GACpBoC,EAAAQ,UAAUC,uBAAuB7C,EAAG,gBACpClmC,KAAK+qF,qBAAsB,EAC3B/qF,KAAK6nF,iBAAmB3hD,CAC5B,CAEO8kD,mBAAAA,GAEH,OADA1iD,EAAAQ,UAAUC,uBAAuB/oC,KAAK6nF,iBAAkB,gBACjD7nF,KAAK6nF,iBAAiBoD,gBACjC,CAEA,WAAWC,CAAQj4D,GACfqV,EAAAQ,UAAUC,uBAAuB9V,EAAG,WACpCjzB,KAAK+qF,qBAAsB,EAC3B/qF,KAAKmrF,YAAcl4D,CACvB,CAEOm4D,cAAAA,GAEH,OADA9iD,EAAAQ,UAAUC,uBAAuB/oC,KAAKmrF,YAAa,WAC5CnrF,KAAKmrF,YAAYE,WAC5B,CAEOC,mBAAAA,GACH,OAAOtrF,KAAK+qF,mBAChB,CAEOQ,+BAAAA,CAAgCjhB,EAAiBh1B,GACpDpL,EAAAshD,0BAA0BxrF,KAAKyrF,oCAAoCvgC,EAAA0U,gBAAgB8I,cAAe4B,EAAIh1B,EAC1G,CAEOo2C,8BAAAA,CAA+BphB,EAAiBh1B,GACnDpL,EAAAshD,0BAA0BxrF,KAAK2rF,qCAAsCrhB,EAAIh1B,EAC7E,CAEO,WAAM9I,GACJxsC,KAAK8qF,8BACA9qF,KAAK68C,SAAQ,EAE3B,CAGO,2BAAM+uC,CAAsBX,EAAoC/L,GACnE,MAAM2M,EAAQ7rF,KAAKwoF,SACnBlgD,EAAAQ,UAAUC,uBAAuB8iD,EAAM,2BACjCA,EAAKC,qBAAqBb,EAAkB/L,EACtD,CAGO,sBAAM6M,CAAiBV,EAA0BnM,GACpD,MAAM2M,EAAQ7rF,KAAKwoF,SACnBlgD,EAAAQ,UAAUC,uBAAuB8iD,EAAM,2BACjCA,EAAKG,4BAA4BX,EAAanM,EACxD,CAEO,wBAAM+M,GACT,MAAMpB,EAAkB7qF,KAAKunF,YAEvBr6C,SADsC29C,EAAgB1/C,QACpC+B,SACxB,GAAiB,IAAbA,GACA,GAAmG,SAA/FltC,KAAKgzB,WAAWqjB,YAAY,uCAAwC,SAASjlC,cAC7E,MAAM,IAAI2H,MAAM,uKAEjB,GAAiB,IAAbm0B,EACP,MAAM,IAAIn0B,MAAM,6CAA6Cm0B,kBAGrE,CAEOg/C,uBAAAA,CAAwBC,GAC3BnsF,KAAK+qF,qBAAsB,EAC3B/qF,KAAK+tD,SAAW,CAAC1iC,EAAQ9oB,KACf4pF,EAAYp+B,UACdo+B,EAAYp+B,SAASo+B,EAAa5pF,IAG1CvC,KAAKmyD,YAAc,CAAC9mC,EAAQ9oB,KAClB4pF,EAAY3+B,cACd2+B,EAAY3+B,aAAa2+B,EAAa5pF,IAG9CvC,KAAKiyD,WAAa,CAAC5mC,EAAQ9oB,KACjB4pF,EAAYv+B,aACdu+B,EAAYv+B,YAAYu+B,EAAa5pF,IAG7CvC,KAAKw0D,eAAiB,CAACnpC,EAAQ9oB,KACrB4pF,EAAY33B,gBACd23B,EAAY33B,eAAe23B,EAAa5pF,IAGhDvC,KAAK+1D,eAAiB,CAAC1qC,EAAQ9oB,KACrB4pF,EAAYp2B,gBACdo2B,EAAYp2B,eAAeo2B,EAAa5pF,GAGpD,CAEO6pF,mBAAAA,GACHpsF,KAAK+tD,cAAWjtD,EAChBd,KAAKmyD,iBAAcrxD,EACnBd,KAAKiyD,gBAAanxD,EAClBd,KAAKw0D,oBAAiB1zD,EACtBd,KAAK+1D,oBAAiBj1D,CAC1B,CASU,aAAM+7C,CAAQ8rC,GAChB3oF,KAAK8qF,yBAILnC,IACA3oF,KAAK8qF,wBAAyB,QACxB9qF,KAAKqsF,4BAGTlqD,MAAM0a,QAAQ8rC,GACxB,CAEUC,sBAAAA,CAAuBtB,GAC7B,OAAO,IAAIp8B,EAAA29B,iBACPvB,EACAtnF,KAAKgzB,WACb,CAEU81D,uBAAAA,CACNvmC,EACAC,EACA+kC,EACAjgC,GACA,MAAMglC,EAA8B/E,EACpC,OAAO,IAAIr8B,EAAAqhC,+BAA+BhqC,EAAgBC,EAAmB8pC,EAAYhlC,EAAkBtnD,KAC/G,EAhMJ4T,EAAAA,sBAAA+1E,wHC9BA,MAAAz/C,EAAAv2B,EAAA,MAKAw2B,EAAAx2B,EAAA,MAcAu3C,EAAAv3C,EAAA,MAQA+7C,EAAA/7C,EAAA,KAGA,MAAa44E,UAAuCrhC,EAAA9D,8BAIhDt6C,WAAAA,CACIy1C,EACAC,EACAxL,EACAsQ,EACA6kC,GACAhqD,MAAMogB,EAAgBC,EAAmBxL,EAAasQ,EAAkB6kC,GACxEnsF,KAAKwsF,0BAA4BL,EACjCnsF,KAAK6mE,2BAA8BvW,GAA2CtwD,KAAKysF,2BAA2Bn8B,GACQ,SAAlHtwD,KAAKgqD,qBAAqB5T,WAAWC,YAAYlM,EAAAmM,WAAWoQ,mDAC5D1mD,KAAK+sD,kBAAkBuc,qBAE/B,CAEO,0BAAMwiB,CAAqBh0E,EAAwBonE,GACtD,GAAMl/E,KAAKipD,mBAAmBiK,cAAe,CACzC,MAAM5C,QAAgCtwD,KAAKyxD,wBACrCzxD,KAAK0sF,gBAAgBp8B,EAAYtwD,KAAK2sF,yBAAyB70E,EAAMonE,IAEnF,CAEO,iCAAM8M,CAA4Bl0E,EAAmBonE,GACxD,GAAMl/E,KAAKipD,mBAAmBiK,cAAe,CACzC,MAAM5C,QAAgCtwD,KAAKyxD,wBACrCzxD,KAAK0sF,gBAAgBp8B,EAAYtwD,KAAK4sF,gCAAgC90E,EAAMonE,IAE1F,CAEUr3B,2BAAAA,CAA4B7H,GAClC,OAAOhgD,KAAKioD,sBAAsBjI,EACtC,CAEU8H,wBAAAA,CAAyBz1C,EAAiChL,EAAgB0gD,GAChF,IACI,MAAMniC,EAAoC,IAAIukB,EAAA+nB,2BAA2B7/C,EAAQhL,EAAQ0gD,GAEzF,GADA/nD,KAAKwsF,0BAA0Bv6B,WAAWjyD,KAAKwsF,0BAA2B5mE,GACpE5lB,KAAKqzD,oBAAqB,CAC5B,IACIrzD,KAAKqzD,oBAAoBhhD,GAC3B,MAAO9P,GACCvC,KAAKuzD,mBACPvzD,KAAKuzD,kBAAkBhxD,GAM/BvC,KAAKqzD,yBAAsBvyD,EAC3Bd,KAAKuzD,uBAAoBzyD,GAG/B,MAAO6W,GAEL,CAER,CAEUqwC,yBAAAA,CAA0B31C,EAAiC2J,EAAkB+rC,GACnF,IACI,MAAMhY,EAAK,IAAI5F,EAAA+nB,2BAA2B7/C,EAAQ2J,EAAU+rC,GAC5D/nD,KAAKwsF,0BAA0Br6B,YAAYnyD,KAAKwsF,0BAA2Bz8C,GAE7E,MAAOp4B,GAEL,CAER,CAGUwwC,iBAAAA,CACNJ,EACA9N,EACAmO,EACAC,EACA1wC,GAEA,MAAMqb,EAAiC,IAAImX,EAAA2e,mBAG3C,GAFA91B,EAAWgf,YAAYkZ,EAAA2C,kCAAmC1jB,EAAA2jB,sBAAsBzF,IAE5EroD,KAAKwsF,0BAA0BlB,uBAC/B,GAAMtrF,KAAKwsF,0BAA0Bz+B,SAAU,CAC3C,MAAMC,EAAqD,IAAI7jB,EAAA0iD,sCAC3DzkC,EACAzwC,EACA0wC,OACAvnD,EACAinD,GACJ,IACI/nD,KAAKwsF,0BAA0Bz+B,SAAS/tD,KAAKwsF,0BAA2Bx+B,GAE1E,MAAO,QAGb,GAAMhuD,KAAKwsF,0BAA0Bz+B,SAAU,CAC3C,MAAMC,EAA0D,IAAI7jB,EAAA8jB,2CAChE7F,EACAzwC,EACA0wC,OACAvnD,EACAinD,GACJ,IACI/nD,KAAKwsF,0BAA0Bz+B,SAAS/tD,KAAKwsF,0BAA2Bx+B,GAE1E,MAAO,EAIjB,GAAMhuD,KAAKqzD,oBAAqB,CAC5B,MAAMhhD,EAAkC,IAAI83B,EAAAigB,wBACxCnQ,EACA9P,EAAAkf,aAAaC,cACbxoD,OACAA,OACAA,OACAA,OACAA,OACAA,EACA6W,OACA7W,EACAkyB,GACJ,IACIhzB,KAAKqzD,oBAAoBhhD,GACzBrS,KAAKqzD,yBAAsBvyD,EAE7B,MAAO,EAEjB,CAGU,gCAAM2rF,CAA2Bn8B,GAEvC,SADMtwD,KAAKq2D,kBAAkB/F,GAAY,GACrCtwD,KAAKwsF,0BAA0BlB,sBAAuB,CACtD,MAAMxzE,EAAoB9X,KAAKwsF,0BAA0BpB,iBACnDvqC,EAAiC7gD,KAAK4sF,gCAAgC90E,EAAM,eAC5E9X,KAAK0sF,gBAAgBp8B,EAAYzP,OACpC,CACH,MAAM/oC,EAAyB9X,KAAKwsF,0BAA0BxB,sBACxDnqC,EAAiC7gD,KAAK2sF,yBAAyB70E,EAAM,eACrE9X,KAAK0sF,gBAAgBp8B,EAAYzP,SAErC7gD,KAAKu2D,eAAejG,EAE9B,CAEUo8B,eAAAA,CAAgBp8B,EAAyBzP,GAC/C,MAAMisC,EAAkB7zE,KAAKtS,UAAUk6C,GAEvC,GAAIisC,EACA,OAAOx8B,EAAWvU,KAAK,IAAI2T,EAAAgC,wBACvBxnB,EAAA2V,YAAYK,KACZ,eACAlgD,KAAKipD,mBAAmBhP,UACxB,mBACA6yC,GAGZ,CAEQH,wBAAAA,CAAyB70E,EAAwBonE,GACrD,MAAM6N,EAA2E,CAAE1rD,GAAI,UAAWn2B,KAAMg0E,EAASgM,QAASpzE,EAAKk1E,wBAG/H,OAFAD,EAAU7B,QAAQ7pD,GAAKvpB,EAAKupB,GAC5B0rD,EAAU7B,QAAQ+B,UAAYn1E,EAAKwnE,aAC5ByN,CACX,CAEQH,+BAAAA,CAAgC90E,EAAmBonE,GACvD,MAAM6N,EAAsE,CAAE1rD,GAAI,UAAWn2B,KAAMg0E,EAASgM,QAASpzE,EAAKo1E,mBAG1H,OAFAH,EAAU7B,QAAQ7pD,GAAKvpB,EAAKupB,GAC5B0rD,EAAU7B,QAAQ+B,UAAYn1E,EAAKwnE,aAC5ByN,CACX,EA9KJn5E,EAAAA,+BAAA24E,sHC9BA,MAAAriD,EAAAv2B,EAAA,MAQA6vE,EAAA7vE,EAAA,MACAw2B,EAAAx2B,EAAA,MAGAw3C,EAAAx3C,EAAA,MAGAu3C,EAAAv3C,EAAA,MAMAypC,EAAAzpC,EAAA,MACA4xC,EAAA5xC,EAAA,MAEA,MAAa4wE,UAAqCp5B,EAAAG,sBAEvChgD,MAAAA,CACH8vB,EACAowB,EACAnP,GAEA,MAAMsJ,EAAmB3lD,KAAKwkF,eAAeppD,GAEvCigB,EAAyC,CAAC,OAEPv6C,IAArCs6B,EAAO8wB,4BACP7Q,EAAYkK,EAAAO,oBAAoBqG,kBAAoB,QAExDnsD,KAAKq7E,eAAehgC,EAAajgB,EAAQuqB,GAEzC,MAAMhjB,EAAqC,CAAC,OACrB7hC,IAAnB0qD,EAASjmD,OAA0C,KAAnBimD,EAASjmD,QACzCo9B,EAAQ6oB,EAAS/O,YAAc+O,EAASjmD,OAE5Co9B,EAAQya,EAAAM,YAAYC,cAAgBtB,EAEpCjhB,EAAOgb,WAAWpE,YAAY7H,EAAAmM,WAAWkW,4BAA6B7G,GAEtE,MAAMvJ,EAA6G,SAAhFhhB,EAAOgb,WAAWC,YAAY,oCAAqC,SACtG,OAAO,IAAInM,EAAAoiB,oBAAoB3G,EAAUtK,EAAa1Y,EAAS,IAAIuoB,EAAAqB,0BAA6BriB,EAAAwL,UAAUiB,qBAAqBvb,GAASghB,EAAmBC,EAC/J,CAEOmoC,cAAAA,CAAeppD,EAA0B+xD,GAE5C,MAAM1nC,EAAiBrqB,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWoV,gCAC1DC,EAAqBR,EAAAG,sBAAsB9F,cAAcC,GAE/D,IAAI61B,EAAsBlgD,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWmV,sCAAkC3qD,GACrG,IAAKw6E,EACD,QAAyCx6E,IAArCs6B,EAAO8wB,0BAAyC,CAEhDovB,EADqBlgD,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWsV,6BAA8B,4BAA8BD,GACrG,2BAClB,CAEH2vB,EADqBlgD,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWsV,6BAA8B,4BAA8BD,GACrG,2CAI7B,OAAgC,IAA5BwhC,EACO7R,EAGJkI,EAAAU,YAAYC,aAAa7I,EAAa,CAAE71B,UACnD,CAEO41B,cAAAA,CAAehgC,EAAwCjgB,EAA0BkgD,GAEpFjgC,EAAYv4C,KAAOs4B,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAW0V,sCAC5D3Q,EAAY+xC,GAAKhyD,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAWyxB,gDAC1D1sB,EAAYkzB,SAAWnzC,EAAOk4B,kBAAoBpI,EAAA0U,gBAAgBU,YAAc,cAC5EllC,EAAOk4B,kBAAoBpI,EAAA0U,gBAAgB8I,aAAe,eAAiB,GAE/E1oE,KAAK0lD,mBAAmBtqB,EAAQigB,EAAaigC,GAC7Ct7E,KAAKgnD,gBACD7c,EAAAmM,WAAW+2C,4DACX9nC,EAAAO,oBAAoByY,kBACpBnjC,EACAigB,EACAigC,GAGJ,MAAMrT,EAA4B7sC,EAAOgb,WAAWC,YAAYlM,EAAAmM,WAAW4xB,8CAA0CpnE,QAC5FA,IAArBmnE,IACA5sB,EAAYiyC,MAAQrlB,EACpB5sB,EAAYg0B,SAAW,eAE/B,EAxEJz7D,EAAAA,6BAAA2wE,sHCxBA,MAAAr6C,EAAAv2B,EAAA,MAMAw2B,EAAAx2B,EAAA,MAeAu3C,EAAAv3C,EAAA,MAkBA,MAAa45E,UAAqCriC,EAAA9D,8BAG9Ct6C,WAAAA,CACIy1C,EACAC,EACAxL,EACAsQ,EACAkmC,GAEArrD,MAAMogB,EAAgBC,EAAmBxL,EAAasQ,EAAkBkmC,GACxExtF,KAAKytF,0BAA4BD,EACjCxtF,KAAK+wD,iBAAiBnlB,QAAQolB,IACG,+BAAzBA,EAAgB9lD,MAChBlL,KAAKytF,0BAA0BC,iBAI3C,CAEU,iCAAM7lC,CAA4B7H,GAExC,MAAM6I,EAAkC,IAAI1e,EAAA2e,mBAC5C,IAAIZ,QAA2BloD,KAAKioD,sBAAsBjI,GAC1D,GAAIkI,EACA,OAAO,EAGX,MAAMylC,EAA0BzqD,UAG5B,GAFAljC,KAAKipD,mBAAmBE,mBAAmBnpD,KAAKipD,mBAAmBC,uBAAyB0kC,EAAiBnpC,OAASmpC,EAAiBxkC,UAEnIwkC,EAAiBhlC,oBAAsBsC,EAAAtC,kBAAkB6E,QAAS,CAGlE,MAAMp7C,EAA0CrS,KAAKgyD,mBAAmB47B,EAAkB/kC,GAC1F,GAAM7oD,KAAKytF,0BAA0Bx7B,WACjC,IACIjyD,KAAKytF,0BAA0Bx7B,WAAWjyD,KAAKytF,0BAA2Bp7E,GAE5E,MAAOsF,GAEL,CAKR,GAAM3X,KAAKqzD,oBAAqB,CAC5B,IACIrzD,KAAKqzD,oBAAoBhhD,EAAOA,QAClC,MAAO9P,GACCvC,KAAKuzD,mBACPvzD,KAAKuzD,kBAAkBhxD,GAM/BvC,KAAKqzD,yBAAsBvyD,EAC3Bd,KAAKuzD,uBAAoBzyD,OAE1B,CACH,MAAMyiB,EAAuB2nC,EAAAxC,gBAAgBC,+BAA+BilC,EAAiBhlC,mBAEvFv2C,EAAS,IAAI83B,EAAA0jD,kCACf/sF,EACAd,KAAKipD,mBAAmBhP,UACxB12B,EACAqqE,EAAiB1tC,KACjB0tC,EAAiBxkC,SACjBppD,KAAKipD,mBAAmBC,uBAAyB0kC,EAAiBnpC,OAClEmpC,EAAiBtjC,SACjBsjC,EAAiBnpB,gBACjB3jE,EACAk/C,EAAkB0H,SAClBmB,GAEJ,GAAItlC,IAAW4mB,EAAAkf,aAAaC,SAAU,CAClC,MAAMC,EAAmC2B,EAAAxC,gBAAgBc,0BAA0BokC,EAAiBhlC,mBAC9Fa,EAA+CyB,EAAAxC,gBAAgBgB,6BAA6BkkC,EAAiBhlC,yBAE7G5oD,KAAK2pD,uBACPJ,EACAE,EACAyB,EAAAxC,gBAAgBkB,0BAA0BH,QAE3C,CACH,IAAMzpD,KAAKipD,mBAAmBY,eAAiBtmC,IAAW4mB,EAAAkf,aAAaS,SAAW8jC,EAAiBhlC,oBAAsBsC,EAAAtC,kBAAkBmB,sBAAwB,CAC/J,MAAMha,EAAK,IAAI5F,EAAA2jD,gCAAgCz7E,EAAQA,EAAOhL,OAAQrH,KAAKipD,mBAAmBlB,WAE9F,GAAM/nD,KAAKytF,0BAA0Bx7B,WACjC,IACIjyD,KAAKytF,0BAA0Bx7B,WAAWjyD,KAAKytF,0BAA2B19C,GAE5E,MAAOp4B,GAEL,EAMZ,GAAM3X,KAAKqzD,oBAAqB,CAC5B,IACIrzD,KAAKqzD,oBAAoBhhD,GAC3B,MAAO9P,GACCvC,KAAKuzD,mBACPvzD,KAAKuzD,kBAAkBhxD,GAM/BvC,KAAKqzD,yBAAsBvyD,EAC3Bd,KAAKuzD,uBAAoBzyD,GAGjConD,GAAY,IAKd6lC,EAA8BA,CAACjjC,EAAmCkjC,KACpE,MAAM37E,EAA0CrS,KAAKgyD,mBAAmBlH,EAAYkjC,GAGpF,GAFAhuF,KAAKipD,mBAAmBgC,aAAajrD,KAAKipD,mBAAmBC,uBAAyB72C,EAAOhL,QAEvFrH,KAAKytF,0BAA0Bt7B,YACjC,IACInyD,KAAKytF,0BAA0Bt7B,YAAYnyD,KAAKytF,0BAA2Bp7E,GAE7E,MAAOsF,GAEL,CAGRuwC,GAAY,CAAI,EAOpB,OAJIlI,EAAkB6R,cAAgB3nB,EAAA2V,YAAYK,MAC9C2I,EAAY7W,YAAY7H,EAAAmM,WAAWyS,iCAAkC/I,EAAkB0H,UAGnF1H,EAAkB78B,KAAK/R,eAC3B,IAAK,yBACD28E,EAA4B7iC,EAAAqa,sBAAsB/c,SAASxI,EAAkB0H,UAAWmB,GACxF,MAEJ,IAAK,uBACD,MAAM2R,EAA+CvhD,KAAKlS,MAAMi5C,EAAkB0H,UAClF,GAAM8S,EAAOwL,mBACH2nB,EAAwBziC,EAAA2a,kBAAkBF,wBAAwBnL,QACrE,CACH,MAAM1P,EAA2D7xC,KAAKlS,MAAMi5C,EAAkB0H,UACxFoD,EAAWC,kBACbgjC,EAA4B7iC,EAAAqa,sBAAsBI,wBAAwB7a,GAAajC,GAG/F,MACJ,IAAK,2BACK8kC,EAAwBziC,EAAA2a,kBAAkBrd,SAASxI,EAAkB0H,WAC3E,MAEJ,IAAK,wBACD1nD,KAAKiuF,mBAAmBjuC,EAAkB4S,WAAY5yD,KAAKipD,mBAAmBlB,WAC9EG,GAAY,EACZ,MAEJ,IAAK,YACL,IAAK,4BACD,MAAMgmC,EAAoChjC,EAAA+a,wBAAwBzd,SAASxI,EAAkB0H,UAE7F,OAAQwmC,EAASxpB,iBACb,KAAKxZ,EAAAwZ,gBAAgB3rD,MACjB,GAAM/Y,KAAKytF,0BAA0B1b,aAAc,CAC/C,MAAM1/D,EAAS,IAAI83B,EAAAgkD,2BAA2BhkD,EAAAkf,aAAaC,cAAUxoD,GAC/DstF,EAA0C,IAAIjkD,EAAAkkD,8BAA8Bh8E,EAAQrS,KAAKipD,mBAAmBlB,WAElH,IACI/nD,KAAKytF,0BAA0B1b,aAAa/xE,KAAKytF,0BAA2BW,GAE9E,MAAOz2E,GAEL,EAIR,GAAM3X,KAAKytF,0BAA0B1/B,SAAU,CAE3C,MAAMugC,EAA0D,IAAInkD,EAAAokD,wCAChEvuF,KAAKipD,mBAAmBlB,UACxB5d,EAAAwnB,mBAAmB54C,MACnBm1E,EAAS/nB,cACTh8B,EAAA2jB,sBAAsBgO,aACtB,MAEJ,IACI97D,KAAKytF,0BAA0B1/B,SAAS/tD,KAAKytF,0BAA2Ba,GAE1E,MAAO32E,GAEL,EAGR,MACJ,KAAKuzC,EAAAwZ,gBAAgBjX,QACjBztD,KAAKiuF,wBAAmBntF,EAAWd,KAAKipD,mBAAmBlB,WAKnEG,GAAY,EAKpB,OAAOA,CACX,CAGUC,iBAAAA,CACNJ,EACA9N,EACAmO,EACAC,EACA1wC,GAEA,MAAMqb,EAAiC,IAAImX,EAAA2e,mBAG3C,GAFA91B,EAAWgf,YAAYkZ,EAAA2C,kCAAmC1jB,EAAA2jB,sBAAsBzF,IAE1EroD,KAAKytF,0BAA0B1/B,SAAU,CAE3C,MAAMC,EAAuD,IAAI7jB,EAAAokD,wCAC7DxmC,EACAK,EACAzwC,EACA0wC,OACAvnD,GAEJ,IACId,KAAKytF,0BAA0B1/B,SAAS/tD,KAAKytF,0BAA2Bz/B,GAE1E,MAAO,EAGb,GAAMhuD,KAAKqzD,oBAAqB,CAC5B,MAAMhhD,EAAuC,IAAI83B,EAAA0jD,kCAC7C/sF,EACAm5C,EACA9P,EAAAkf,aAAaC,cACbxoD,OACAA,OACAA,OACAA,OACAA,EACA6W,OACA7W,EACAkyB,GACJ,IACIhzB,KAAKqzD,oBAAoBhhD,GAEzBrS,KAAKqzD,yBAAsBvyD,EAC7B,MAAO,EAEjB,CAEUknD,yBAAAA,CAA0B31C,EAAiC2J,EAAkB+rC,GACnF,IACI,MAAMhY,EAAK,IAAI5F,EAAA2jD,gCAAgC3jD,EAAA0jD,6BAA6BW,4BAA4Bn8E,GAAS2J,EAAU+rC,GAC3H/nD,KAAKytF,0BAA0Bt7B,YAAYnyD,KAAKytF,0BAA2B19C,GAE7E,MAAOp4B,GAEL,CAER,CAEUmwC,wBAAAA,CAAyBz1C,EAAiChL,EAAgB0gD,GAChF,IACI,MAAMhY,EAAK,IAAI5F,EAAA2jD,gCAAgC3jD,EAAA0jD,6BAA6BW,4BAA4Bn8E,GAAShL,EAAQ0gD,GACzH/nD,KAAKytF,0BAA0Bx7B,WAAWjyD,KAAKytF,0BAA2B19C,GAC5E,MAAOp4B,GAEL,CAER,CAEQq6C,kBAAAA,CAAmBmF,EAA0DnkC,GACjF,IAAIwvD,EASA/5B,EACAgmC,EARJ,QAAI3tF,IAAcq2D,EAAcsO,YAAY6d,aAAc,CACtDd,EAAe,IAAIr4C,EAAAm5C,aACnB,IAAK,MAAMC,KAAepsB,EAAcsO,YAAY6d,aAChDd,EAAax5E,IAAIu6E,EAAYj5B,SAAUi5B,EAAYrjC,MAAQqjC,EAAYl5B,aAM3E8M,aAAyBjM,EAAA2a,mBAErBpd,EADE0O,EAAcsO,aAAetO,EAAcsO,YAAYC,oBAAsBx7B,EAAAw7B,kBAAkBjY,QAClFtjB,EAAAkf,aAAaqlC,iBAEbvkD,EAAAkf,aAAamS,iBAEhCizB,EAAat3B,EAAcsN,YAE3Bhc,EAAete,EAAAkf,aAAaslC,kBAEhC,MAAM5iC,EAAWoL,EAAc7M,SAEzBjjD,EAAiB8vD,EAAc1S,OAASzkD,KAAKipD,mBAAmBC,uBAEhE72C,EAAS,IAAI83B,EAAA0jD,6BACfrL,EACAxiF,KAAKipD,mBAAmBhP,UACxBwO,EACA0O,EAAcjX,KACdiX,EAAc/N,SACd/hD,EACA0kD,EACA0iC,EACAt3B,EAAcsO,YAAYU,cAC1BltD,KAAKtS,UAAUwwD,GACfnkC,GAGJ,OADW,IAAImX,EAAA2jD,gCAAgCz7E,EAAQhL,EAAQrH,KAAKipD,mBAAmBlB,UAE3F,CAEQkmC,kBAAAA,CAAmBz8C,EAAoBuW,GAC3C,MAAMxkC,OAAUziB,IAAc0wC,EAASrH,EAAAkf,aAAaoxB,2BAA6BtwC,EAAAkf,aAAa+oB,kBACxF//D,EAAS,IAAI83B,EAAAgkD,2BAA2B5qE,EAAQiuB,GAChD48C,EAA0C,IAAIjkD,EAAAkkD,8BAA8Bh8E,EAAQ01C,GAE1F,GAAM/nD,KAAKytF,0BAA0B1b,aACjC,IACI/xE,KAAKytF,0BAA0B1b,aAAa/xE,KAAKytF,0BAA2BW,GAE9E,MAAOz2E,GAEL,CAIZ,EAvVJ/D,EAAAA,6BAAA25E,yGCnCA,SAAY7nB,GAIRA,EAAAA,EAAA,qBAKAA,EAAAA,EAAA,gBACH,CAVD,CAAY9xD,EAAA8xD,oBAAA9xD,EAAAA,kBAAiB,mHCJ7B,MAAAs2B,EAAAv2B,EAAA,MACAw2B,EAAAx2B,EAAA,MAUAu3C,EAAAv3C,EAAA,MAcAy3C,EAAAz3C,EAAA,MAYA+7C,EAAA/7C,EAAA,KAuBA,MAAai7E,UAA+BxjC,EAAA/D,sBAKxCv6C,WAAAA,CACIy1C,EACAC,EACAxL,EACAsQ,EACAC,GACAplB,MAAMogB,EAAgBC,EAAmBxL,EAAasQ,EAAkBC,GATpE,KAAAsnC,gBAA+B,IAAI1kD,EAAA2kD,YAUvC9uF,KAAK4uE,uBAAyB53B,EAC9Bh3C,KAAK6mE,2BAA6B,IAAqB7mE,KAAKsrE,MAChE,CAEA,sBAAWyjB,CAAmB/3C,GAC1Bh3C,KAAK4uE,uBAAyB53B,CAClC,CAEU6Q,2BAAAA,CAA4B7H,GAElC,IAAIkI,GAAqB,EAEzB,MAAMW,EAAkC,IAAIqC,EAAApC,mBAK5C,OAJI9I,EAAkB6R,cAAgB1nB,EAAA0V,YAAYK,MAC9C2I,EAAY7W,YAAYkZ,EAAA5U,WAAWyS,iCAAkC/I,EAAkB0H,UAGnF1H,EAAkB78B,KAAK/R,eAE3B,IAAK,mBACD,MAAMq7D,EAA4BxzD,KAAKlS,MAAMi5C,EAAkB0H,UAC/D,OAAQ+kB,EAASuiB,UAAU59E,eACvB,IAAK,SACDpR,KAAKivF,qBAAqBxiB,EAAUzsB,EAAkB/F,WACtD,MAEJ,IAAK,SACL,IAAK,QACDj6C,KAAKkvF,qBAAqBziB,EAAUzsB,EAAkB/F,WACtD,MAEJ,IAAK,QACD,MAAMk1C,EAAyCl2E,KAAKlS,MAAMi5C,EAAkB0H,UAC5E1nD,KAAKovF,oBAAoBD,EAAoBnvC,EAAkB/F,WAMvEiO,GAAY,EACZ,MAEJ,IAAK,kBACD,MAAMmnC,EAAwCp2E,KAAKlS,MAAMi5C,EAAkB0H,UAC3E1nD,KAAKsvF,sBAAsBD,EAAgBrvC,EAAkB/F,WAC7DiO,GAAY,EACZ,MAEJ,IAAK,6BACD,MAAMinC,EAAyCl2E,KAAKlS,MAAMi5C,EAAkB0H,UACtEr1C,EAAuC,IAAI64C,EAAAqkC,6BAC7CvvF,KAAKwvF,qBAAuBL,EAAmBM,WAAaN,EAAmBM,WAAWC,iBAAmBP,EAAmB3sD,OAAOD,YACrI4sD,EAAmBM,WAAax2E,KAAKtS,UAAUwoF,EAAmBM,iBAAc3uF,EAClFquF,EAAmB3sD,OAAOjf,QAExBvjB,KAAK6uF,gBAAgBc,MAAM3vC,EAAkB/F,YAC/Cj6C,KAAK6uF,gBAAgB/0B,SAAuC9Z,EAAkB/F,UAAW5nC,GAE7FrS,KAAKipD,mBAAmB6a,gBACxB5b,GAAY,EAKpB,MAAM+K,EAAW,IAAI9oB,EAAAyD,SAErB,OADAqlB,EAAS/mB,QAAQgc,GACV+K,EAAS/jB,OACpB,CAGUiZ,iBAAAA,CACNJ,EACA9N,EACAmO,EACAC,EACA1wC,IAEuC,IAAIuzC,EAAApC,oBAEhC9W,YAAYoZ,EAAAyC,kCAAmC3C,EAAA4C,sBAAsBzF,IAE5E,MAAMh2C,EAAuC,IAAI64C,EAAAqkC,6BAC7CrkC,EAAA7B,aAAaC,SACb3xC,EACAA,GAEE3X,KAAK6uF,gBAAgBc,MAAM11C,IAC7Bj6C,KAAK6uF,gBAAgB/0B,SAAuC7f,EAAW5nC,EAEnF,CAEO,mBAAMu9E,CAAcC,EAA+B7P,GAEtDhgF,KAAK4pE,iBAAmBimB,EAAY/hF,WACpC,MAAM6lD,EAAmC3zD,KAAK4zD,cAC9C,IACI,MAAMk8B,EAAwB,IAAI3lD,EAAAyD,SAIlC,aAHM+lB,QACA3zD,KAAK+vF,kBAAkBD,EAAuBD,EAAa7P,GAC5DhgF,KAAKkqE,iBACH4lB,EAAsB5gD,QAC/B,MAAOoG,GACL,MAAMA,EAEd,CAEO,kBAAM06C,CAAaC,GAEtB,OADAjwF,KAAK4pE,iBAAmBqmB,EAAQJ,YAAY/hF,WACrC9N,KAAKkwF,kBAAsC,QAASD,EAAQJ,YAAaI,EACpF,CAEO,mBAAME,CAAcF,GAEvB,OADAjwF,KAAK4pE,iBAAmBqmB,EAAQJ,YAAY/hF,WACrC9N,KAAKkwF,kBAAsC,SAAUD,EAAQJ,YAAaI,EACrF,CAEO,8BAAMG,CAAyBH,GAGlC,OAFAjwF,KAAK4pE,iBAAmBqmB,EAAQJ,YAAY/hF,WAC5C9N,KAAKqwF,sBAAwBJ,EAAQK,UAC9BtwF,KAAKkwF,kBAAgD,QAASD,EAAQJ,YAAaI,EAC9F,CAEO,oBAAMM,CAAeV,GAExB,OADA7vF,KAAK4pE,iBAAmBimB,EAAY/hF,WAC7B9N,KAAKkwF,kBAAkD,QAASL,EAC3E,CAEO,0BAAMW,CAAqBX,EAA+BvnB,GAC7DtoE,KAAK4pE,iBAAmBimB,EAAY/hF,WAEpC,MAAM6lD,EAAmC3zD,KAAK4zD,cAC9C,IACI,MAAM68B,EAAqB,IAAItmD,EAAAyD,SAI/B,aAHM+lB,QACA3zD,KAAK0wF,mBAAmBD,EAAoBZ,EAAavnB,GAC1DtoE,KAAKkqE,iBACHumB,EAAmBvhD,QAC5B,MAAOoG,GACL,MAAMA,EAEd,CAEO,mBAAMq7C,CAAcV,GACvBjwF,KAAK4pE,iBAAmBqmB,EAAQJ,YAAY/hF,WAC5C,MAAM8iF,EAAqB,IAAIzmD,EAAAyD,SAC/B5tC,KAAKipD,mBAAmBuK,sBACxBxzD,KAAKipD,mBAAmBwK,0BAA0BzzD,KAAK4uE,uBAAuBhiC,QAE9E5sC,KAAKgqD,qBAAqB5T,WAAWpE,YAAYkZ,EAAA5U,WAAWod,iBAAkB1zD,KAAKipD,mBAAmBlB,WAGtG,MAAM4L,EAAmC3zD,KAAK4zD,cAExCC,EAAiC7zD,KAAK8zD,qBAAqBm8B,EAASW,GAEpEjsF,QAA+B3E,KAAK4uE,uBAAuBhjC,OAAO5rC,KAAKipD,mBAAmBpd,aAC1FV,QAAsCnrC,KAAK4uE,uBAAuBzjC,OAClE0B,QAA6C7sC,KAAK4uE,uBAAuB/hC,WAEzEknB,EAAY,IAAI7pB,EAAA8pB,oBAAoBrvD,EAAMwmC,EAAOmE,sBACjDtvC,KAAKipD,mBAAmBgL,6BAA6BF,GAAW,GAEtE/zD,KAAKgqD,qBAAqBkK,oBAAoBC,QAAQ3iB,MAAQ,CAAEjT,OAAQsO,GAExE,UACU8mB,QACAE,EACR,MAAOve,GACLt1C,KAAKmoD,kBAAkBnoD,KAAKipD,mBAAmBlB,UAAW/nD,KAAKipD,mBAAmBhP,UAAWiR,EAAAyG,mBAAmB54C,MAAOmyC,EAAA4C,sBAAsBsG,kBAAmB9e,GAGpK,MAAM+e,EAA0C,IAAInJ,EAAAoJ,iBAAiBt0D,KAAKipD,mBAAmBlB,WAEvF/nD,KAAKu0D,eAAeC,gBACtBx0D,KAAKu0D,eAAeC,eAAex0D,KAAKu0D,eAAgBF,GAGvDr0D,KAAKkqE,iBAQV,OAPyBlqE,KAAKy0D,UAAUV,GAGvBjnB,MAAK,SAAyCn1B,IAC3D3X,KAAKmoD,kBAAkBnoD,KAAKipD,mBAAmBlB,UAAW/nD,KAAKipD,mBAAmBhP,UAAWiR,EAAAyG,mBAAmB54C,MAAOmyC,EAAA4C,sBAAsB4G,aAAc/8C,EAAM,IAG9Ji5E,EAAmB1hD,OAC9B,CAEQ,0BAAM4kB,CAAqBm8B,EAAuBW,GACtD,MAAMtgC,QAAgCtwD,KAAKyxD,kBAC3CzxD,KAAKipD,mBAAmBqa,kBACxBtjE,KAAK6uF,gBAAgBzqD,IAAkCpkC,KAAKipD,mBAAmBhP,UAAW22C,SACpF5wF,KAAK6wF,gBAAgBvgC,EAAY,SAAUtwD,KAAK8wF,aAAab,EAAQJ,aAAcI,EAC7F,CAEQ,wBAAMS,CAAmBD,EAAwDZ,EAA+B7P,GACpH,MAAM1vB,QAAgCtwD,KAAKyxD,kBAC3CzxD,KAAKipD,mBAAmBqa,kBACxBtjE,KAAK6uF,gBAAgBzqD,IAA8BpkC,KAAKipD,mBAAmBhP,UAAWw2C,GACtF,MAEMM,EAAsC,CACxC/Q,SACAzR,SAJavuE,KAAK8wF,aAAajB,IAMnC,OAAOv/B,EAAWvU,KAAK,IAAI2T,EAAAgC,wBACvBvnB,EAAA0V,YAAYK,KACZ,0BACAlgD,KAAKipD,mBAAmBhP,UACxB,kCACAhhC,KAAKtS,UAAUoqF,IACvB,CAEQ,uBAAMhB,CAAkBD,EAA2CD,EAA+B7P,GAEtG,MAAM1vB,QAAgCtwD,KAAKyxD,kBAC3CzxD,KAAKipD,mBAAmBqa,kBACxBtjE,KAAK6uF,gBAAgBzqD,IAAcpkC,KAAKipD,mBAAmBhP,UAAW61C,GACtE,MAGMiB,EAAsC,CACxC/Q,SACA36D,OAAQ,IACRkpD,SANashB,IAAgB3kC,EAAA8lC,iBAAiBC,8BAAgC,gCAC9EpB,IAAgB3kC,EAAA8lC,iBAAiBE,4BAA8B,8BAAgC,6BAOnG,OAAO5gC,EAAWvU,KAAK,IAAI2T,EAAAgC,wBACvBvnB,EAAA0V,YAAYK,KACZ,yBACAlgD,KAAKipD,mBAAmBhP,UACxB,kCACAhhC,KAAKtS,UAAUoqF,IACvB,CAEQ,uBAAMb,CAAqBlB,EAAmBa,GAAgE,IAAjCI,EAAA1iF,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,QAAwBzM,EAEzG,MAAM6yD,EAAmC3zD,KAAK4zD,cAC9C,IACI,MAAMs1B,EAAW,IAAI/+C,EAAAyD,SACrB5tC,KAAKipD,mBAAmBqa,wBAClB3P,EACN,MAAMrD,QAAgCtwD,KAAKyxD,kBAI3C,OAHAzxD,KAAK6uF,gBAAgBzqD,IAAOpkC,KAAKipD,mBAAmBhP,UAAWivC,SACzDlpF,KAAK6wF,gBAAgBvgC,EAAY0+B,EAAWhvF,KAAK8wF,aAAajB,GAAcI,GAC7EjwF,KAAKkqE,iBACHgf,EAASh6C,QAClB,MAAOoG,GACL,MAAMA,EAEd,CAEQ,qBAAMu7C,CAAgBvgC,EAAyB0+B,EAAmBzgB,EAAkB0hB,GACxF,MAAMkB,EAAoF,CACtF5iB,YAOJ,OALM0hB,EACFkB,EAAe3hB,WAAa,CAAEygB,EAAQK,WAEtCa,EAAeC,aAAe,EAE3B9gC,EAAWvU,KAAK,IAAI2T,EAAAgC,wBACvBvnB,EAAA0V,YAAYK,KACZ,mBAAmB8uC,IACnBhvF,KAAKipD,mBAAmBhP,UACxB,kCACAhhC,KAAKtS,UAAUwqF,IACvB,CAEQjiB,qBAAAA,CAAsB5hC,GAC1B,MAAO,CACH+hC,SAAU,CACNC,cAAe,UACfC,qBAAsB,YAE1BC,WAAYliC,EAAMkiC,WAClBjB,SAAUjhC,EAAMihC,SAExB,CAEQ+gB,qBAAAA,CAAsB7iB,EAAiCxyB,GAC3D,IAAMj6C,KAAK6uF,gBAAgBc,MAAM11C,GAa7B,MAAM,IAAIlhC,MAAM,8DAA8DkhC,eAZ9E,GAAiD,YAA7CwyB,EAASjqC,OAAOD,WAAWnxB,cAA6B,CACxD,MAAMmS,EAAuB2nC,EAAA7B,aAAaC,SACpCj3C,EAAS,IAAI64C,EAAAmmC,yBAAyB9tE,EAAQkpD,EAASjqC,OAAOD,WAAYkqC,EAAS6kB,eAAgB,IACzGtxF,KAAK6uF,gBAAgB/0B,SAAmC7f,EAAW5nC,OAChE,MAAMo6D,EAAS8kB,SAAW9kB,EAAS8kB,QAAQlxF,OAAS,GAKvD,MAAM,IAAI0Y,MAAM,oEAL0C,CAC1D,MAAMwK,EAAuB2nC,EAAA7B,aAAamoC,sBACpCn/E,EAAS,IAAI64C,EAAAmmC,yBAAyB9tE,EAAQkpD,EAASjqC,OAAOD,WAAYkqC,EAAS6kB,eAAgB7kB,EAAS8kB,SAClHvxF,KAAK6uF,gBAAgB/0B,SAAmC7f,EAAW5nC,IAO/E,CAEQ48E,oBAAAA,CAAqBxiB,EAA2BxyB,GACpD,KAAMwyB,EAASglB,UAAYhlB,EAASglB,SAASpxF,OAAS,GAQlD,MAAM,IAAI0Y,MAAM,uDAPhB,IAAM/Y,KAAK6uF,gBAAgBc,MAAM11C,GAI7B,MAAM,IAAIlhC,MAAM,8CAA8CkhC,eAJrB,CACzC,MAAMu1B,EAAuB/C,EAASglB,SAASnoF,KAAK2mF,GAA8BA,EAAQK,YAC1FtwF,KAAK6uF,gBAAgB/0B,SAAmB7f,EAAWu1B,GAO/D,CAEQ0f,oBAAAA,CAAqBziB,EAA2BxyB,GACpD,IAAMj6C,KAAK6uF,gBAAgBc,MAAM11C,GAM7B,MAAM,IAAIlhC,MAAM,8CAA8CkhC,eANrB,CACzC,MAAMy3C,EAAmE,WAArCjlB,EAASuiB,UAAU59E,cAA6B85C,EAAA7B,aAAasoC,oBAAsBzmC,EAAA7B,aAAauoC,kBAC9HruE,EAAoE,YAA7CkpD,EAASjqC,OAAOD,WAAWnxB,cAA8BsgF,EAAgBxmC,EAAA7B,aAAaC,SAC7Gj3C,EAAS,IAAI64C,EAAA2mC,mBAAmBtuE,EAAQ,eAAekpD,EAASjqC,OAAOD,6BAA6BkqC,EAASjqC,OAAOjf,UAC1HvjB,KAAK6uF,gBAAgB/0B,SAA6B7f,EAAW5nC,GAIrE,CAEQ+8E,mBAAAA,CAAoBD,EAAwCl1C,GAChE,IAAMj6C,KAAK6uF,gBAAgBc,MAAM11C,KAAgBk1C,EAAmBsC,SAAS,GAuBzE,MAAM,IAAI14E,MAAM,6CAA6CkhC,eAtB7D,GAAMj6C,KAAKqwF,uBAAgE,IAAvClB,EAAmBsC,SAASpxF,QAAgB8uF,EAAmBsC,SAAS,GAAGnB,YAActwF,KAAKqwF,sBAAuB,CACrJrwF,KAAKqwF,2BAAwBvvF,EAC7B,MAAMgxF,EAAwB3C,EAAmBsC,SAAS,GACpDp/E,EAAuC,IAAI64C,EAAAqkC,6BAC7CvvF,KAAKwvF,qBAAqBsC,EAAYpC,kBACtCz2E,KAAKtS,UAAUmrF,GACf3C,EAAmB3sD,OAAOjf,QAE9BvjB,KAAK6uF,gBAAgB/0B,SAAuC7f,EAAW5nC,QACpE,GAAI88E,EAAmBsC,SAASpxF,OAAS,EAAG,CAC/C,MAAM0xF,EAAwB5C,EAAmBsC,SAC3CO,EAAiD,GACvD,IAAK,MAAM/B,KAAW8B,EAClBC,EAAepxF,KAAM,IAAIsqD,EAAAqkC,6BACrBvvF,KAAKwvF,qBAAqBS,EAAQP,kBAClCz2E,KAAKtS,UAAUspF,GACfd,EAAmB3sD,OAAOjf,SAGlCvjB,KAAK6uF,gBAAgB/0B,SAAyC7f,EAAW+3C,GAKrF,CAEQxC,oBAAAA,CAAqBjtD,GACzB,OAAQA,EAAWnxB,eACf,IAAK,WACD,OAAO85C,EAAA7B,aAAa4oC,qBACxB,IAAK,gBACL,IAAK,gBACL,IAAK,qBACL,IAAK,kBACL,IAAK,sBACL,IAAK,mBACL,IAAK,gBACL,IAAK,eACL,IAAK,qBACL,IAAK,kBACL,IAAK,kBACL,IAAK,uBACL,IAAK,uBACD,OAAO/mC,EAAA7B,aAAaC,SACxB,QACI,OAAO4B,EAAA7B,aAAamoC,sBAEhC,CAEQV,YAAAA,CAAajB,GACjB,OAAOA,IAAgB3kC,EAAA8lC,iBAAiBC,8BAAgC,gCACpEpB,IAAgB3kC,EAAA8lC,iBAAiBE,4BAA8B,8BAAgC,2BACvG,EAnYJt9E,EAAAA,uBAAAg7E,mHC5DA,MAAA1kD,EAAAv2B,EAAA,MAWAC,EAAAA,0BAAA,MAEWmsC,mBAAAA,CAAoB1d,GACvB,MAAM6mD,EAAW,IAAIh/C,EAAA0D,SAErB,IACI,GAAIvL,EAAQwvB,cAAgB3nB,EAAA2V,YAAYK,KAAM,CAC1C,MAAMgyC,EAAsB7vD,EAAQ+mD,YACpC,IAAIzmD,EAAqC,CAAC,EACtCS,EAAe,KAEnB,GAAI8uD,EAAa,CACb,MAAMC,EAAkBD,EAAY5nF,MAAM,YACtC6nF,GAAmBA,EAAgB9xF,OAAS,IAC5CsiC,EAAU3iC,KAAKoyF,aAAaD,EAAgB,IACxCA,EAAgB9xF,OAAS,IACzB+iC,EAAO+uD,EAAgB,KAKnCjJ,EAASh9C,QAAQ,IAAIhC,EAAA4lC,kBAAkBztC,EAAQwvB,YAAazuB,EAAMT,EAASN,EAAQhB,UAChF,GAAIgB,EAAQwvB,cAAgB3nB,EAAA2V,YAAYC,OAAQ,CACnD,MAAMuyC,EAA6BhwD,EAAQgnD,cAC3C,IAAI1mD,EAAqC,CAAC,EACtCS,EAAoB,KAExB,IAAKivD,GAAiBA,EAAcpjD,WAAa,EAC7C,MAAM,IAAIl2B,MAAM,yDAGpB,MAAMu5E,EAAW,IAAIvkD,SAASskD,GACxBE,EAAeD,EAASE,SAAS,GAEvC,GAAIH,EAAcpjD,WAAasjD,EAAe,EAC1C,MAAM,IAAIx5E,MAAM,0DAGpB,IAAI05E,EAAgB,GACpB,IAAK,IAAIxwF,EAAI,EAAGA,EAAIswF,EAActwF,IAC9BwwF,GAAiB1vF,OAAOC,aAAcsvF,EAAUI,QAAQzwF,EAAI,IAGhE0gC,EAAU3iC,KAAKoyF,aAAaK,GAExBJ,EAAcpjD,WAAasjD,EAAe,IAC1CnvD,EAAOivD,EAAcpuF,MAAM,EAAIsuF,IAGnCrJ,EAASh9C,QAAQ,IAAIhC,EAAA4lC,kBAAkBztC,EAAQwvB,YAAazuB,EAAMT,EAASN,EAAQhB,MAEzF,MAAO9+B,GACL2mF,EAASz9C,OAAO,wCAAwClpC,KAG5D,OAAO2mF,EAASh6C,OACpB,CAEOmR,qBAAAA,CAAsBhe,GACzB,MAAM6mD,EAAW,IAAIh/C,EAAA0D,SAErB,IACI,GAAIvL,EAAQwvB,cAAgB3nB,EAAA2V,YAAYK,KAAM,CAC1C,MAAMW,EAAU,GAAG7gD,KAAK2yF,YAAYtwD,SAAkBA,EAAQqlB,SAAWrlB,EAAQqlB,SAAW,KAE5FwhC,EAASh9C,QAAQ,IAAIhC,EAAA0V,oBAAoB1V,EAAA2V,YAAYK,KAAMW,EAASxe,EAAQhB,UAEzE,GAAIgB,EAAQwvB,cAAgB3nB,EAAA2V,YAAYC,OAAQ,CACnD,MAAM2yC,EAAgBzyF,KAAK2yF,YAAYtwD,GACjCuwD,EAAUvwD,EAAQuwB,WAElBigC,EAAe7yF,KAAK8yF,oBAAoBL,GACxCM,EAAkB,IAAIC,UAAUH,GAChCN,EAAeQ,EAAgB9jD,WAE/BgkD,EAAmB,IAAID,UAAU,EAAIT,GAAgBK,EAAUA,EAAQ3jD,WAAa,IAK1F,GAJAgkD,EAAiB,GAAOV,GAAgB,EAAK,IAC7CU,EAAiB,GAAoB,IAAfV,EACtBU,EAAiBjqF,IAAI+pF,EAAiB,GAElCH,EAAS,CACT,MAAMM,EAAgB,IAAIF,UAAUJ,GACpCK,EAAiBjqF,IAAIkqF,EAAe,EAAIX,GAG5C,MAAM1xC,EAAuBoyC,EAAiB/wD,OAE9CgnD,EAASh9C,QAAQ,IAAIhC,EAAA0V,oBAAoB1V,EAAA2V,YAAYC,OAAQe,EAASxe,EAAQhB,MAEpF,MAAO9+B,GACL2mF,EAASz9C,OAAO,iCAAiClpC,KAGrD,OAAO2mF,EAASh6C,OACpB,CAEQyjD,WAAAA,CAAYtwD,GAChB,IAAIowD,EAAwB,GAE5B,GAAIpwD,EAAQM,QACR,IAAK,MAAM+K,KAAUrL,EAAQM,QACrB+K,IACA+kD,GAAiB,GAAG/kD,MAAWrL,EAAQM,QAAQ+K,UAK3D,OAAO+kD,CACX,CAEQL,YAAAA,CAAaK,GACjB,MAAM9vD,EAAqC,CAAC,EAE5C,GAAI8vD,EAAe,CACf,MAAMU,EAAgBV,EAAchpF,MAAM,aAC1C,GAAIk5B,EACA,IAAK,MAAM+K,KAAUylD,EACjB,GAAIzlD,EAAQ,CACR,MAAM0lD,EAAiB1lD,EAAOhqC,QAAQ,KAChC+4C,EAAa22C,EAAiB,EAAI1lD,EAAO5pC,OAAO,EAAGsvF,GAAgBjwF,OAAOiO,cAAgBs8B,EAC1FoN,EACFs4C,EAAiB,GAAK1lD,EAAOrtC,OAAU+yF,EAAiB,EACpD1lD,EAAO5pC,OAAOsvF,EAAiB,GAAGjwF,OAClC,GAERw/B,EAAQ8Z,GAAc3B,GAMtC,OAAOnY,CACX,CAEQmwD,mBAAAA,CAAoBjgF,GACxB,MAAMqvB,EAAS,IAAI2B,YAAYhxB,EAAIxS,QAC7BytC,EAAO,IAAIC,SAAS7L,GAC1B,IAAK,IAAIjgC,EAAI,EAAGA,EAAI4Q,EAAIxS,OAAQ4B,IAC5B6rC,EAAKulD,SAASpxF,EAAG4Q,EAAIhP,WAAW5B,IAEpC,OAAOigC,CACX,iWCtJJ,MAAAoxD,EAAA3/E,EAAA,KAEA,MAAa4/E,UAAyBD,EAAAx0B,cAGlChyD,WAAAA,CAAmBiyD,EAAmBx0B,GAClCpI,MAAM48B,EADmDxxD,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAuB+lF,EAAAt0B,UAAUp1B,MAE1F5pC,KAAKk/D,kBAAoB30B,CAC7B,CAEA,iBAAWA,GACP,OAAOvqC,KAAKk/D,iBAChB,EAVJtrD,EAAAA,iBAAA2/E,EAaA3/E,EAAAA,6BAAA,cAAkD2/E,EAC9CzmF,WAAAA,CAAmBy9B,GACfpI,MAAM,+BAAgCoI,EAC1C,GAGJ32B,EAAAA,sBAAA,cAA2C2/E,EACvCzmF,WAAAA,CAAmBy9B,GACfpI,MAAM,wBAAyBoI,EACnC,GAGJ32B,EAAAA,oBAAA,cAAyC2/E,EACrCzmF,WAAAA,CAAmBy9B,GACfpI,MAAM,sBAAuBoI,EACjC,GAGJ32B,EAAAA,sBAAA,cAA2C2/E,EAGvCzmF,WAAAA,CAAmBy9B,EAAuB5yB,GACtCwqB,MAAM,wBAAyBoI,EAAe+oD,EAAAt0B,UAAUjmD,OACxD/Y,KAAK0/D,UAAY/nD,CACrB,CAEA,SAAWA,GACP,OAAO3X,KAAK0/D,SAChB,GAGJ,MAAa8zB,UAA6BD,EAGtCzmF,WAAAA,CAAmBiyD,EAAmBx0B,EAAuBsB,GACzD1J,MAAM48B,EAAWx0B,GACjBvqC,KAAKm/D,gBAAkBtzB,CAC3B,CAEA,eAAWA,GACP,OAAO7rC,KAAKm/D,eAChB,EAVJvrD,EAAAA,qBAAA4/E,EAaA5/E,EAAAA,8BAAA,cAAmD4/E,EAC/C1mF,WAAAA,CAAmBy9B,EAAuBsB,GACtC1J,MAAM,gCAAiCoI,EAAesB,EAC1D,GAGJj4B,EAAAA,6BAAA,cAAkD4/E,EAC9C1mF,WAAAA,CAAmBy9B,EAAuBsB,GACtC1J,MAAM,+BAAgCoI,EAAesB,EACzD,GAGJj4B,EAAAA,6BAAA,cAAkD4/E,EAC9C1mF,WAAAA,CAAmBy9B,EAAuBsB,GACtC1J,MAAM,+BAAgCoI,EAAesB,EACzD,GAGJj4B,EAAAA,0BAAA,cAA+C4/E,EAG3C1mF,WAAAA,CAAmBy9B,EAAuBsB,EAAqBl0B,GAC3DwqB,MAAM,4BAA6BoI,EAAesB,GAClD7rC,KAAK0/D,UAAY/nD,CACrB,CAEA,SAAWA,GACP,OAAO3X,KAAK0/D,SAChB,0GCxFJ,MAAAx1B,EAAAv2B,EAAA,MAKA,MAAamrC,UAAwB5U,EAAA40B,cAGjChyD,WAAAA,CAAmB6K,GACfwqB,MAAM,kBAAmB+H,EAAA80B,UAAUjmD,OACnC/Y,KAAK0/D,UAAY/nD,CACrB,CAEA,SAAWA,GACP,OAAO3X,KAAK0/D,SAChB,EAVJ9rD,EAAAA,gBAAAkrC,kHCNA,MAAA5U,EAAAv2B,EAAA,MAEA,MAAa07B,UAAiCnF,EAAAupD,OAM1C3mF,WAAAA,CAAmB4mF,EAAyBjnD,GACxCtK,MAAMsK,GACNzsC,KAAK2zF,oBAAsBD,EAC3B1zF,KAAK4zF,yBAA2B,CACpC,CAEOlkD,gBAAAA,CAAiBH,GAEpB,GAAIA,EAAMI,OACL,IAAM3vC,KAAK4zF,0BAA4BrkD,EAAMrN,OAAO+M,aAAejvC,KAAK2zF,oBAEzE,YADAxxD,MAAMuN,iBAAiBH,GAI3B,IAAIskD,EAAgC,EAEpC,KAAOA,EAAwBtkD,EAAMrN,OAAO+M,YAAY,MAEhDnuC,IAAcd,KAAK8zF,wBACnB9zF,KAAK8zF,sBAAwB,IAAIjwD,YAAY7jC,KAAK2zF,qBAClD3zF,KAAK+zF,wBAA0BxkD,EAAMK,cAIzC,MAAMokD,EAAsBnxF,KAAKgnB,IAAI0lB,EAAMrN,OAAO+M,WAAa4kD,EAAuB7zF,KAAK2zF,oBAAsB3zF,KAAK4zF,0BAChHK,EAAyB,IAAInnB,WAAW9sE,KAAK8zF,uBAC7CI,EAAyB,IAAIpnB,WAAWv9B,EAAMrN,OAAOj+B,MAAM4vF,EAAuBG,EAAcH,IAEtGI,EAAWjrF,IAAIkrF,EAAYl0F,KAAK4zF,0BAChC5zF,KAAK4zF,0BAA4BI,EACjCH,GAAyBG,EAGrBh0F,KAAK4zF,2BAA6B5zF,KAAK2zF,sBACvCxxD,MAAMuN,iBAAiB,CACnBxN,OAAQliC,KAAK8zF,sBACbnkD,OAAO,EACPC,aAAc5vC,KAAK+zF,0BAEvB/zF,KAAK4zF,yBAA2B,EAChC5zF,KAAK8zF,2BAAwBhzF,GAGzC,CAEO0rC,KAAAA,GAEC,IAAMxsC,KAAK4zF,0BAA6B5zF,KAAK0sC,UAC7CvK,MAAMuN,iBAAiB,CACnBxN,OAAQliC,KAAK8zF,sBAAsB7vF,MAAM,EAAGjE,KAAK4zF,0BACjDjkD,OAAO,EACPC,aAAc5vC,KAAK+zF,0BAI3B5xD,MAAMqK,OACV,EA9DJ54B,EAAAA,yBAAAy7B,yTCEA,MAAAikD,EAAA3/E,EAAA,KAEA,MAAasiD,UAAqBq9B,EAAAx0B,cAG9BhyD,WAAAA,CAAmBiyD,EAAmBo1B,GACpChyD,MAAM48B,EADkDxxD,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAuB+lF,EAAAt0B,UAAUp1B,MAEzF5pC,KAAKo0F,eAAiBD,CACxB,CAEA,cAAWE,GACP,OAAOr0F,KAAKo0F,cAChB,EAVJxgF,EAAAA,aAAAqiD,EAaA,MAAaq+B,UAAwBhB,EAAAx0B,cAGjChyD,WAAAA,CAAmBiyD,EAAmB1iB,GAClCla,MAAM48B,EADkDxxD,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAuB+lF,EAAAt0B,UAAUp1B,MAEzF5pC,KAAKs9C,iBAAmBjB,CAC5B,CAEA,gBAAWA,GACP,OAAOr8C,KAAKs9C,gBAChB,EAVJ1pC,EAAAA,gBAAA0gF,EAaA1gF,EAAAA,qBAAA,cAA0C0gF,EAItCxnF,WAAAA,CAAmBuvC,EAAsBjB,EAAazY,GAClDR,MAAM,uBAAwBka,GAC9Br8C,KAAK08C,QAAUtB,EACfp7C,KAAK06C,YAAc/X,CACvB,CAEA,OAAWyY,GACP,OAAOp7C,KAAK08C,OAChB,CAEA,WAAW/Z,GACP,OAAO3iC,KAAK06C,WAChB,GAGJ9mC,EAAAA,2BAAA,cAAgD0gF,EAC5CxnF,WAAAA,CAAmBuvC,GACfla,MAAM,6BAA8Bka,EACxC,GAGJzoC,EAAAA,sBAAA,cAA2C0gF,EAIvCxnF,WAAAA,CAAmBuvC,EAAsB9Z,EAAoBhf,GACzD4e,MAAM,wBAAyBka,EAAci3C,EAAAt0B,UAAUv1B,OACvDzpC,KAAKu0F,WAAahxE,EAClBvjB,KAAKw0F,eAAiBjyD,CAC1B,CAEA,UAAWhf,GACP,OAAOvjB,KAAKu0F,UAChB,CAEA,cAAWhyD,GACP,OAAOviC,KAAKw0F,cAChB,GAGJ5gF,EAAAA,qBAAA,cAA0C0gF,EAItCxnF,WAAAA,CAAmBuvC,EAAsBha,EAAiBv9B,GACtDq9B,MAAM,uBAAwBka,EAAci3C,EAAAt0B,UAAUv1B,OACtDzpC,KAAKy0F,YAAcpyD,EACnBriC,KAAK00F,SAAW5vF,CACpB,CAEA,WAAWu9B,GACP,OAAOriC,KAAKy0F,WAChB,CAEA,QAAW3vF,GACP,OAAO9E,KAAK00F,QAChB,GAGJ9gF,EAAAA,8BAAA,cAAmD0gF,EAI/CxnF,WAAAA,CAAmBuvC,EAAsBs4C,EAAoBpxE,GACzD4e,MAAM,gCAAiCka,EAAci3C,EAAAt0B,UAAUjmD,OAC/D/Y,KAAKw0F,eAAiBG,EACtB30F,KAAKu0F,WAAahxE,CACtB,CAEA,UAAWA,GACP,OAAOvjB,KAAKu0F,UAChB,CAEA,cAAWhyD,GACP,OAAOviC,KAAKw0F,cAChB,GAGJ5gF,EAAAA,+BAAA,cAAoD0gF,EAIhDxnF,WAAAA,CAAmBuvC,EAAsBu4C,EAAgCvyD,GACrEF,MAAM,iCAAkCka,GACxCr8C,KAAK60F,wBAA0BD,EAC/B50F,KAAKy0F,YAAcpyD,CACvB,CAEA,uBAAWmd,GACP,OAAOx/C,KAAK60F,uBAChB,CAEA,WAAWxyD,GACP,OAAOriC,KAAKy0F,WAChB,GAGJ7gF,EAAAA,2BAAA,cAAgD0gF,EAI5CxnF,WAAAA,CAAmBuvC,EAAsBy4C,EAA4BzyD,GACjEF,MAAM,6BAA8Bka,GACpCr8C,KAAK+0F,oBAAsBD,EAC3B90F,KAAKy0F,YAAcpyD,CACvB,CAEA,mBAAW2yD,GACP,OAAOh1F,KAAK+0F,mBAChB,CAEA,WAAW1yD,GACP,OAAOriC,KAAKy0F,WAChB,0HCpJJ,MAAAz6B,EAAArmD,EAAA,MACAshF,EAAAthF,EAAA,MAGA,IAAYksC,GAAZ,SAAYA,GACRA,EAAAA,EAAA,eACAA,EAAAA,EAAA,kBACH,CAHD,CAAYA,EAAAjsC,EAAAisC,cAAAjsC,EAAAA,YAAW,KAKvBA,EAAAA,kBAAA,MASI9G,WAAAA,CACI+kD,EACAzuB,EACAT,EACAtB,GAEA,GAXI,KAAA6zD,SAAgB,KAWhBrjC,IAAgBhS,EAAYK,MAAQ9c,GAA4B,kBAAVA,EACtD,MAAM,IAAI42B,EAAAG,sBAAsB,4BAGpC,GAAItI,IAAgBhS,EAAYC,QAAU1c,KAAUA,aAAgBS,aAChE,MAAM,IAAIm2B,EAAAG,sBAAsB,+BAQpC,OALAn6D,KAAKm1F,gBAAkBtjC,EAEvB7xD,KAAKk1F,SAAW9xD,EAChBpjC,KAAK06C,YAAc/X,GAAoB,CAAC,EACxC3iC,KAAK0qC,OAASrJ,GAAU4zD,EAAAtqD,mBAChB3qC,KAAK6xD,aACT,KAAKhS,EAAYC,OACb9/C,KAAKo1F,SAA+B,OAApBp1F,KAAK4yD,WAAsB5yD,KAAK4yD,WAAW3jB,WAAa,EACxE,MACJ,KAAK4Q,EAAYK,KACblgD,KAAKo1F,SAAWp1F,KAAK0nD,SAASrnD,OAE1C,CAEA,eAAWwxD,GACP,OAAO7xD,KAAKm1F,eAChB,CAEA,WAAWxyD,GACP,OAAO3iC,KAAK06C,WAChB,CAEA,QAAWtX,GACP,OAAOpjC,KAAKk1F,QAChB,CAEA,YAAWxtC,GACP,GAAI1nD,KAAKm1F,kBAAoBt1C,EAAYC,OACrC,MAAM,IAAIka,EAAAG,sBAAsB,oCAGpC,OAAOn6D,KAAKk1F,QAChB,CAEA,cAAWtiC,GACP,GAAI5yD,KAAKm1F,kBAAoBt1C,EAAYK,KACrC,MAAM,IAAI8Z,EAAAG,sBAAsB,kCAGpC,OAAOn6D,KAAKk1F,QAChB,CAEA,MAAW7zD,GACP,OAAOrhC,KAAK0qC,MAChB,+GC7EJ92B,EAAAA,uBAAA,MAII9G,WAAAA,CAAmBy1B,EAAoBhf,GACnCvjB,KAAKw0F,eAAiBjyD,EACtBviC,KAAKu0F,WAAahxE,CACtB,CAEA,cAAWgf,GACP,OAAOviC,KAAKw0F,cAChB,CAEA,UAAWjxE,GACP,OAAOvjB,KAAKu0F,UAChB,oGCNJ3gF,EAAAA,YAAA,MAAA9G,WAAAA,GACY,KAAAuoF,QAA2C,CAAC,CAmBxD,CAjBWjxD,GAAAA,CAAO/C,EAAY6nD,GACtBlpF,KAAKq1F,QAAQh0D,GAAM6nD,CACvB,CAEOyG,KAAAA,CAAMtuD,GACT,OAAOrhC,KAAKq1F,QAAQh0D,EACxB,CAEOy4B,QAAAA,CAAYz4B,EAAYhvB,GAC3B,IACIrS,KAAKq1F,QAAQh0D,GAAI6K,QAAQ75B,GAC3B,MAAOsF,GACL3X,KAAKq1F,QAAQh0D,GAAIoK,OAAO9zB,GAC1B,QACE3X,KAAKq1F,QAAQh0D,QAAMvgC,EAE3B,uICzBJ,MAAAwyF,EAAA3/E,EAAA,KAEA,MAAa2hF,UAAoBhC,EAAAx0B,cAE7BhyD,WAAAA,CAAmBiyD,GACf58B,MAAM48B,EAD4BxxD,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAuB+lF,EAAAt0B,UAAUp1B,KAEvE,EAJJh2B,EAAAA,YAAA0hF,EAOA1hF,EAAAA,gCAAA,cAAqD0hF,EAGjDxoF,WAAAA,CAAmB0pD,GACfr0B,MAAM,mCACNniC,KAAKunE,gBAAkB/Q,CAC3B,CAEA,eAAWA,GACP,OAAOx2D,KAAKunE,eAChB,wJCbJ,MAAa9sB,UAA0B1hC,MASnCjM,WAAAA,CAAmByoF,GACfpzD,MAAMozD,GACNv1F,KAAKkL,KAAO,eACZlL,KAAKqiC,QAAUkzD,CACnB,EAbJ3hF,EAAAA,kBAAA6mC,EAuBA,MAAa0f,UAA8BphD,MASvCjM,WAAAA,CAAmB6K,GACfwqB,MAAMxqB,GACN3X,KAAKkL,KAAO,mBACZlL,KAAKqiC,QAAU1qB,CACnB,EAbJ/D,EAAAA,sBAAAumD,EAuBA,MAAaq7B,UAA4Bz8E,MAUrCjM,WAAAA,CAAmB2oF,EAAoB99E,GACnCwqB,MAAMxqB,GACN3X,KAAKkL,KAAOuqF,EAAa,iBACzBz1F,KAAKqiC,QAAU1qB,CACnB,EAdJ/D,EAAAA,oBAAA4hF,oGCvDA,MAAAx7B,EAAArmD,EAAA,MACAshF,EAAAthF,EAAA,MAOAC,EAAAA,YAAA,MAMI9G,WAAAA,CAAmBs3C,GALX,KAAAsxC,mBAAiE,CAAC,EAElE,KAAAp5C,gBAA0B,EAC1B,KAAAq5C,yBAAmC70F,EAGvCd,KAAK41F,aAAexxC,CACxB,CAEOjb,OAAAA,CAAQvjB,GACX,GAAI5lB,KAAK88C,aACL,MAAO,IAAIkd,EAAAw7B,oBAAoB,eAGnC,GAAIx1F,KAAKokD,SACL,IAAK,MAAM5H,KAAax8C,KAAKokD,SACrB5H,GACI52B,EAAMw+B,WACDx+B,EAAMw+B,SAAS5H,KAChB52B,EAAMw+B,SAAS5H,GAAax8C,KAAKokD,SAAS5H,KAO9D,IAAK,MAAMq5C,KAAW71F,KAAK01F,mBACnBG,GAAW71F,KAAK01F,mBAAmBG,IACnC71F,KAAK01F,mBAAmBG,GAASjwE,EAG7C,CAEOgmB,MAAAA,CAAOkqD,GACV,MAAMz0D,EAAK4zD,EAAAtqD,mBAEX,OADA3qC,KAAK01F,mBAAmBr0D,GAAMy0D,EACvB,CACH3pD,OAAQA,YACGnsC,KAAK01F,mBAAmBr0D,GACxBmK,QAAQU,WAG3B,CAEOw2B,cAAAA,CAAeqzB,GAClB,OAAO/1F,KAAK4rC,QAAQrpC,GAAoBwzF,EAAS5sD,QAAQ5mC,IAC7D,CAEOyzF,qBAAAA,CAAsBD,GAKzB,OAJM/1F,KAAK21F,qBACF31F,KAAK21F,oBAAoBxpD,SAElCnsC,KAAK21F,oBAAsB31F,KAAK4rC,QAAQrpC,GAAoBwzF,EAAS5sD,QAAQ5mC,KACtEvC,KAAK21F,mBAChB,CAEO74C,UAAAA,GACH,OAAO98C,KAAKs8C,cAChB,CAEOO,OAAAA,GACH78C,KAAK01F,mBAAqB,KAC1B11F,KAAKs8C,gBAAiB,CAC1B,CAEA,YAAW8H,GACP,OAAOpkD,KAAK41F,YAChB,iGC5EJ,MAAA57B,EAAArmD,EAAA,MACAsiF,EAAAtiF,EAAA,KAIA,MAAas8B,EAGF,qBAAOimD,CAAe1zB,GACzB,IAAKA,EACD,MAAM,IAAIxI,EAAAvf,kBAAkB,eAGhCxK,EAAOkmD,aAAe3zB,CAC1B,CAEO,mBAAW3hC,GACd,OAAOoP,EAAOkmD,YAClB,EAbJviF,EAAAA,OAAAq8B,EACmBA,EAAAkmD,aAA4C,IAAIF,EAAAprD,mZCNnE3C,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,KAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,KAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,KAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,KAAAC,GACAs0B,EAAAv0B,EAAA,KAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACA,IAAA0xD,EAAA3xD,EAAA,MAASzQ,OAAAA,eAAAA,EAAAA,oBAAAA,CAAAoR,YAAA,EAAAvL,IAAA,kBAAAu8D,EAAAI,iBAAiB,IAC1Bx9B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,KAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,GACAs0B,EAAAv0B,EAAA,MAAAC,wHChCA,MAAAwiF,EAAAziF,EAAA,MAEMy9C,EAA2BA,IAAcglC,EAAAC,KAItCziF,EAAAA,WAAAw9C,EAAYx9C,EAAAA,iBAFkB+2B,IAAcymB,IAAa/tD,QAAQ,IAAI8mB,OAAO,IAAK,KAAM,IAAI8S,2QCCpG,SAAYugB,GACRA,EAAAA,EAAA,eACAA,EAAAA,EAAA,yBACAA,EAAAA,EAAA,2BACAA,EAAAA,EAAA,8BACH,CALD,CAAY5pC,EAAA4pC,kBAAA5pC,EAAAA,gBAAe,gsBCL3B,MAAAomD,EAAArmD,EAAA,MAyCA,MAAa2iF,EAQTxpF,WAAAA,CAAmBypF,GAGf,GATI,KAAAC,0BAAoC,EACpC,KAAAC,qBAAsD,CAAC,EACvD,KAAAC,wBAAyD,CAAC,EAC1D,KAAAC,0BAA2D,CAAC,EAC5D,KAAAC,kBAA4B,KAGhC52F,KAAK62F,SAAW,GAEZN,EACA,IAAK,MAAMpmE,KAAQomE,EACfv2F,KAAK62F,SAASj2F,KAAKuvB,EAG/B,CAEOpnB,GAAAA,CAAI+tF,GAEP,OADA92F,KAAKuoF,kBACEvoF,KAAK62F,SAASC,EACzB,CAEOC,KAAAA,GACH,OAAO/2F,KAAK+I,IAAI,EACpB,CAEOiuF,IAAAA,GACH,OAAOh3F,KAAK+I,IAAI/I,KAAKK,SAAW,EACpC,CAEO+jC,GAAAA,CAAIjU,GACPnwB,KAAKuoF,kBACLvoF,KAAKi3F,SAASj3F,KAAK62F,SAASx2F,OAAQ8vB,EACxC,CAEO8mE,QAAAA,CAASrzF,EAAeusB,GAC3BnwB,KAAKuoF,kBACS,IAAV3kF,EACA5D,KAAK62F,SAASK,QAAQ/mE,GACfvsB,IAAU5D,KAAK62F,SAASx2F,OAC/BL,KAAK62F,SAASj2F,KAAKuvB,GAEnBnwB,KAAK62F,SAAS5Q,OAAOriF,EAAO,EAAGusB,GAEnCnwB,KAAKm3F,qBAAqBn3F,KAAKy2F,qBACnC,CAEOW,WAAAA,GAEH,OADAp3F,KAAKuoF,kBACEvoF,KAAKq3F,SAAS,EACzB,CAEOC,UAAAA,GAEH,OADAt3F,KAAKuoF,kBACEvoF,KAAKq3F,SAASr3F,KAAKK,SAAW,EACzC,CAEOg3F,QAAAA,CAASzzF,GAEZ,OADA5D,KAAKuoF,kBACEvoF,KAAKu3F,OAAO3zF,EAAO,GAAG,EACjC,CAEO2zF,MAAAA,CAAO3zF,EAAekC,GACzB9F,KAAKuoF,kBACL,MAAMiP,EAAkBx3F,KAAK62F,SAAS5Q,OAAOriF,EAAOkC,GAEpD,OADA9F,KAAKm3F,qBAAqBn3F,KAAK02F,yBACxBc,CACX,CAEOv5D,KAAAA,GACHj+B,KAAKuoF,kBACLvoF,KAAKu3F,OAAO,EAAGv3F,KAAKK,SACxB,CAEOA,MAAAA,GAEH,OADAL,KAAKuoF,kBACEvoF,KAAK62F,SAASx2F,MACzB,CAEOo3F,OAAAA,CAAQC,GACX13F,KAAKuoF,kBACL,MAAMoP,EAAiB33F,KAAKw2F,4BAI5B,OAFAx2F,KAAKy2F,qBAAqBkB,GAAkBD,EAErC,CACHvrD,OAAQA,YACGnsC,KAAKy2F,qBAAqBkB,GAC1BnsD,QAAQU,WAG3B,CAEO0rD,SAAAA,CAAUC,GACb73F,KAAKuoF,kBACL,MAAMoP,EAAiB33F,KAAKw2F,4BAI5B,OAFAx2F,KAAK02F,wBAAwBiB,GAAkBE,EAExC,CACH1rD,OAAQA,YACGnsC,KAAK02F,wBAAwBiB,GAC7BnsD,QAAQU,WAG3B,CAEO4rD,UAAAA,CAAWC,GACd/3F,KAAKuoF,kBACL,MAAMoP,EAAiB33F,KAAKw2F,4BAI5B,OAFAx2F,KAAK22F,0BAA0BgB,GAAkBI,EAE1C,CACH5rD,OAAQA,YACGnsC,KAAK22F,0BAA0BgB,GAC/BnsD,QAAQU,WAG3B,CAEOrlC,IAAAA,CAAKmxF,GAER,OADAh4F,KAAKuoF,kBACEvoF,KAAK62F,SAAShwF,KAAKmxF,EAC9B,CAEOC,OAAAA,GACH,MAAMC,EAAYruF,QAIlB,OAHA7J,KAAK62F,SAASt1F,SAAS0pB,IACnBitE,EAAUt3F,KAAKqqB,EAAI,IAEhBitE,CACX,CAEOC,GAAAA,CAAI1xF,GAEP,OADAzG,KAAKuoF,kBACD9hF,EACOzG,KAAKo4F,MAAM3xF,GAAUpG,SAAW,EAEhCL,KAAKK,SAAW,CAE/B,CAEOg4F,GAAAA,CAAI5xF,GAEP,OADAzG,KAAKuoF,kBACEvoF,KAAKo4F,MAAM3xF,GAAUpG,WAAaL,KAAKK,QAClD,CAEOkB,OAAAA,CAAQkF,GACXzG,KAAKuoF,kBACL,IAAK,IAAItmF,EAAI,EAAGA,EAAIjC,KAAKK,SAAU4B,IAC/BwE,EAASzG,KAAK62F,SAAS50F,GAAIA,EAEnC,CAEOq2F,MAAAA,CAAW7xF,GACdzG,KAAKuoF,kBACL,MAAMgQ,EAAmB,GACzB,IAAK,IAAIt2F,EAAI,EAAGA,EAAIjC,KAAK62F,SAASx2F,OAAQ4B,IACtCs2F,EAAW33F,KAAK6F,EAASzG,KAAK62F,SAAS50F,GAAIA,IAG/C,OAAO,IAAIq0F,EAASiC,EACxB,CAEOH,KAAAA,CAAM3xF,GACTzG,KAAKuoF,kBACL,MAAMiQ,EAAe,IAAIlC,EACzB,IAAK,IAAIr0F,EAAI,EAAGA,EAAIjC,KAAK62F,SAASx2F,OAAQ4B,IAClCwE,EAASzG,KAAK62F,SAAS50F,GAAIA,IAC3Bu2F,EAAap0D,IAAIpkC,KAAK62F,SAAS50F,IAGvC,OAAOu2F,CACX,CAEOC,OAAAA,CAAQC,GACX14F,KAAKuoF,kBACL,MACMoQ,EADc34F,KAAKi4F,UACQxmE,KAAKinE,GACtC,OAAO,IAAIpC,EAAKqC,EACpB,CAEOC,WAAAA,CAAYF,GAEf,OADA14F,KAAKuoF,kBACEvoF,KAAKy4F,SAAQ,CAACltE,EAAU6H,IAAqBslE,EAAUtlE,EAAG7H,IACrE,CAEO9P,KAAAA,GAEH,OADAzb,KAAKuoF,kBACE,IAAI+N,EAAYt2F,KAAKi4F,UAChC,CAEOrtF,MAAAA,CAAO2rF,GAEV,OADAv2F,KAAKuoF,kBACE,IAAI+N,EAAYt2F,KAAK62F,SAASjsF,OAAO2rF,EAAK0B,WACrD,CAEOY,WAAAA,CAAYx0F,GAEf,OADArE,KAAKuoF,kBACE,IAAI+N,EAAYt2F,KAAK62F,SAASjsF,OAAOvG,GAChD,CAEOy4C,UAAAA,GACH,OAAwB,MAAjB98C,KAAK62F,QAChB,CAEOh6C,OAAAA,CAAQt5B,GACNvjB,KAAK88C,eACN98C,KAAK42F,kBAAoBrzE,EACzBvjB,KAAK62F,SAAW,KAChB72F,KAAKy2F,qBAAuB,KAC5Bz2F,KAAK02F,wBAA0B,KAC/B12F,KAAKm3F,qBAAqBn3F,KAAK22F,2BAEvC,CAEQpO,eAAAA,GACJ,GAAIvoF,KAAK88C,aACL,MAAM,IAAIkd,EAAAw7B,oBAAoB,OAAQx1F,KAAK42F,kBAEnD,CAEQO,oBAAAA,CAAqB2B,GACzB,GAAIA,EACA,IAAK,MAAMnB,KAAkBmB,EACrBnB,GACAmB,EAAcnB,IAI9B,EAxOJ/jF,EAAAA,KAAA0iF,uhBCvCA,MAAAhD,EAAA3/E,EAAA,KAEA,MAAaolF,UAAkBzF,EAAAx0B,cAG3BhyD,WAAAA,CAAmBiyD,EAAmB31B,EAAsB4vD,GACxD72D,MAAM48B,EAAW31B,GAEjBppC,KAAKi5F,cAAgBD,CACzB,EAPJplF,EAAAA,UAAAmlF,EAUAnlF,EAAAA,wBAAA,cAA6CmlF,EACzCjsF,WAAAA,CAAmBksF,GACf72D,MAAM,0BAA2BmxD,EAAAt0B,UAAUv1B,MAAOuvD,EACtD,GAGJplF,EAAAA,mBAAA,cAAwCmlF,EACpCjsF,WAAAA,CAAmBksF,GACf72D,MAAM,qBAAsBmxD,EAAAt0B,UAAUv1B,MAAOuvD,EACjD,GAGJplF,EAAAA,sBAAA,cAA2CmlF,EACvCjsF,WAAAA,CAAmBksF,GACf72D,MAAM,wBAAyBmxD,EAAAt0B,UAAUv1B,MAAOuvD,EACpD,GAGJplF,EAAAA,2BAAA,cAAgDmlF,EAC5CjsF,WAAAA,CAAmBksF,GACf72D,MAAM,6BAA8BmxD,EAAAt0B,UAAUv1B,MAAOuvD,EACzD,GAGJplF,EAAAA,0BAAA,cAA+CmlF,EAC3CjsF,WAAAA,CAAmBksF,GACf72D,MAAM,4BAA6BmxD,EAAAt0B,UAAUv1B,MAAOuvD,EACxD,GAGJplF,EAAAA,wBAAA,cAA6CmlF,EACzCjsF,WAAAA,CAAmBksF,GACf72D,MAAM,0BAA2BmxD,EAAAt0B,UAAUv1B,MAAOuvD,EACtD,GAGJplF,EAAAA,6BAAA,cAAkDmlF,EAC9CjsF,WAAAA,CAAmBksF,GACf72D,MAAM,+BAAgCmxD,EAAAt0B,UAAUv1B,MAAOuvD,EAC3D,GAGJplF,EAAAA,wBAAA,cAA6CmlF,EACzCjsF,WAAAA,GACIq1B,MAAM,0BAA2BmxD,EAAAt0B,UAAUv1B,MAAO,GACtD,GAGJ71B,EAAAA,0BAAA,cAA+CmlF,EAC3CjsF,WAAAA,CAAmBosF,GACf/2D,MAAM,4BAA6BmxD,EAAAt0B,UAAUv1B,MAAOyvD,EACxD,GAGJtlF,EAAAA,2BAAA,cAAgDmlF,EAG5CjsF,WAAAA,CAAmBosF,EAAsBC,GACrCh3D,MAAM,6BAA8BmxD,EAAAt0B,UAAUv1B,MAAOyvD,GACrDl5F,KAAKo5F,eAAiBD,CAC1B,GAGJvlF,EAAAA,gCAAA,cAAqDmlF,EAIjDjsF,WAAAA,CAAmBosF,EAAsBG,EAAmBF,GACxDh3D,MAAM,kCAAmCmxD,EAAAt0B,UAAUv1B,MAAOyvD,GAC1Dl5F,KAAKo5F,eAAiBD,EACtBn5F,KAAKs5F,cAAgBD,CACzB,GAGJzlF,EAAAA,kBAAA,cAAuCmlF,EAMnCjsF,WAAAA,CAAmBosF,EAAsBG,EAAmBF,GACxDh3D,MAAM,oBAAqBmxD,EAAAt0B,UAAUv1B,MAAOyvD,GAC5Cl5F,KAAKo5F,eAAiBD,EACtBn5F,KAAKu5F,qBAAuB,IAAI1pD,KAAKspD,GAAYK,qBACjDx5F,KAAKs5F,cAAgBD,EACrBr5F,KAAKy5F,oBAAsB,IAAI5pD,KAAKwpD,GAAWK,oBACnD,GAGJ9lF,EAAAA,4BAAA,cAAiDmlF,EAG7CjsF,WAAAA,CAAmBosF,EAAsBvhF,GACrCwqB,MAAM,8BAA+BmxD,EAAAt0B,UAAUv1B,MAAOyvD,GACtDl5F,KAAK0/D,UAAY/nD,CACrB,GAGJ/D,EAAAA,yBAAA,cAA8CmlF,EAG1CjsF,WAAAA,CAAmBosF,EAAsBvhF,GACrCwqB,MAAM,2BAA4BmxD,EAAAt0B,UAAUv1B,MAAOyvD,GACnDl5F,KAAK0/D,UAAY/nD,CACrB,GAGJ/D,EAAAA,2BAAA,cAAgDmlF,EAC5CjsF,WAAAA,CAAmBosF,GACf/2D,MAAM,6BAA8BmxD,EAAAt0B,UAAUv1B,MAAOyvD,EACzD,GAGJtlF,EAAAA,0BAAA,cAA+CmlF,EAG3CjsF,WAAAA,CAAmBosF,EAAsBvhF,GACrCwqB,MAAM,4BAA6BmxD,EAAAt0B,UAAUv1B,MAAOyvD,GACpDl5F,KAAK0/D,UAAY/nD,CACrB,mHCrIJ,MAAAs9E,EAAAthF,EAAA,OAGA,SAAYqrD,GACRA,EAAAA,EAAA,iBACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,iBACAA,EAAAA,EAAA,cACH,CAND,CAAYprD,EAAAorD,YAAAprD,EAAAA,UAAS,KAQrBA,EAAAA,cAAA,MAOI9G,WAAAA,CAAmBiyD,EAAmB31B,GAClCppC,KAAK25F,SAAW56B,EAChB/+D,KAAK45F,YAAc3E,EAAAtqD,mBACnB3qC,KAAK65F,eAAgB,IAAIhqD,MAAO4P,cAChCz/C,KAAK85F,cAAgB1wD,EACrBppC,KAAK41F,aAAe,CAAC,CACzB,CAEA,QAAW1qF,GACP,OAAOlL,KAAK25F,QAChB,CAEA,WAAW9D,GACP,OAAO71F,KAAK45F,WAChB,CAEA,aAAW5vD,GACP,OAAOhqC,KAAK65F,aAChB,CAEA,aAAWzwD,GACP,OAAOppC,KAAK85F,aAChB,CAEA,YAAW11C,GACP,OAAOpkD,KAAK41F,YAChB,6BC1CJ,IAAYmE,kKAAZ,SAAYA,GACRA,EAAAA,EAAA,eACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,sBACH,CAJD,CAAYA,EAAAnmF,EAAAmmF,eAAAnmF,EAAAA,aAAY,KAcxB,MAAaomF,EAMTltF,WAAAA,CAAmBmtF,GAgCZ,KAAAC,aAAe,KAClB,GAAIl6F,KAAK6iE,QACL,MAAM7iE,KAAK2X,OAjCfsiF,EAAyBE,IAAI9nF,IACpBrS,KAAKm5D,kBACNn5D,KAAKm5D,iBAAkB,EACvBn5D,KAAKo6F,aAAc,EACnBp6F,KAAKq6F,WAAahoF,MAEtBsF,IACK3X,KAAKm5D,kBACNn5D,KAAKm5D,iBAAkB,EACvBn5D,KAAKo6F,aAAc,EACnBp6F,KAAK0/D,UAAY/nD,KAG7B,CAEA,eAAW2iF,GACP,OAAOt6F,KAAKm5D,eAChB,CAEA,WAAW0J,GACP,OAAO7iE,KAAKo6F,WAChB,CAEA,SAAWziF,GACP,OAAO3X,KAAK0/D,SAChB,CAEA,UAAWrtD,GACP,OAAOrS,KAAKq6F,UAChB,EApCJzmF,EAAAA,cAAAomF,EA6CA,MAAaO,EAAbztF,WAAAA,GAKW,KAAA0tF,UAAanoF,IAChBrS,KAAKy6F,gBAAgBpoF,EAAO,EAGzB,KAAAqoF,SAAY/iF,IACf3X,KAAK26F,eAAehjF,EAAM,EAGvB,KAAAwiF,GAAK,CAACS,EAAkCC,KAC3C76F,KAAKy6F,gBAAkBG,EACvB56F,KAAK26F,eAAiBE,CAAU,CAExC,EAjBAjnF,EAAAA,yBAAA2mF,EAmBA3mF,EAAAA,SAAA,MAKI9G,WAAAA,GAYO,KAAAo/B,QAAW75B,IACdrS,KAAK86F,YAAYzoF,GACVrS,MAGJ,KAAAyrC,OAAU9zB,IACb3X,KAAK+6F,WAAWpjF,GACT3X,MAjBPA,KAAKg7F,YAAc,IAAIxvD,SAAW,CAACU,EAA6BT,KAC5DzrC,KAAK86F,YAAc5uD,EACnBlsC,KAAK+6F,WAAatvD,CAAM,GAEhC,CAEA,WAAWyD,GACP,OAAOlvC,KAAKg7F,WAChB,GAaJpnF,EAAAA,KAAA,MAQI9G,WAAAA,GAPQ,KAAAmuF,UAA0BlB,EAAatxD,KACvC,KAAAyyD,kBAAsC,KACtC,KAAAC,wBAAuD,KAEvD,KAAAC,oBAA+C,GAC/C,KAAAC,kBAA6C,GAGjDr7F,KAAKm7F,wBAA0B,IAAIZ,EACnCv6F,KAAKk7F,kBAAoB,IAAIlB,EAAch6F,KAAKm7F,wBACpD,CAEA,SAAW52E,GACP,OAAOvkB,KAAKi7F,SAChB,CAEA,UAAW5oF,GACP,OAAOrS,KAAKk7F,iBAChB,CAEOhvD,OAAAA,CAAQ75B,GACX,GAAIrS,KAAKi7F,YAAclB,EAAatxD,KAChC,MAAM,IAAI1vB,MAAM,wCAGpB/Y,KAAKi7F,UAAYlB,EAAauB,SAC9Bt7F,KAAKm7F,wBAAwBX,UAAUnoF,GAEvC,IAAK,IAAIpQ,EAAI,EAAGA,EAAIjC,KAAKo7F,oBAAoB/6F,OAAQ4B,IACjDjC,KAAKu7F,uBAAuBlpF,EAAQrS,KAAKo7F,oBAAoBn5F,GAAIjC,KAAKq7F,kBAAkBp5F,IAG5FjC,KAAKw7F,gBACT,CAEO/vD,MAAAA,CAAO9zB,GACV,GAAI3X,KAAKi7F,YAAclB,EAAatxD,KAChC,MAAM,IAAI1vB,MAAM,uCAGpB/Y,KAAKi7F,UAAYlB,EAAa0B,SAC9Bz7F,KAAKm7F,wBAAwBT,SAAS/iF,GAEtC,IAAK,MAAM+jF,KAAgB17F,KAAKq7F,kBAC5Br7F,KAAK27F,qBAAqBhkF,EAAO+jF,GAGrC17F,KAAKw7F,gBACT,CAEOrB,EAAAA,CACH9oD,EACAC,GAEuB,MAAnBD,IAEAA,EAAkBA,QAGlBrxC,KAAKi7F,YAAclB,EAAatxD,MAChCzoC,KAAKo7F,oBAAoBx6F,KAAKywC,GAC9BrxC,KAAKq7F,kBAAkBz6F,KAAK0wC,KAExBtxC,KAAKi7F,YAAclB,EAAauB,SAChCt7F,KAAKu7F,uBAAuBv7F,KAAKk7F,kBAAkB7oF,OAAQg/B,EAAiBC,GACrEtxC,KAAKi7F,YAAclB,EAAa0B,UACvCz7F,KAAK27F,qBAAqB37F,KAAKk7F,kBAAkBvjF,MAAO25B,GAG5DtxC,KAAKw7F,iBAEb,CAEQD,sBAAAA,CAAuBlpF,EAAWg/B,EAAsCC,GAC5E,IACID,EAAgBh/B,GAClB,MAAO9P,GACLvC,KAAK27F,qBAAqB,8BAA8Bp5F,KAAgB+uC,GAEhF,CAEQqqD,oBAAAA,CAAqBhkF,EAAe25B,GACxC,IAAIA,EAOA,MAAM,IAAIv4B,MAAM,qBAAqBpB,MANrC,IACI25B,EAAc35B,GAChB,MAAOpV,GACL,MAAM,IAAIwW,MAAM,8BAA8BxW,kBAA4BoV,MAKtF,CAEQ6jF,cAAAA,GACJx7F,KAAKq7F,kBAAoB,GACzBr7F,KAAKo7F,oBAAsB,EAC/B,GAIJxnF,EAAAA,0BAAA,SACIs7B,EACAo7B,EACAh1B,GACApG,EAAQpC,MAAM7hB,IACV,IACUq/C,GACFA,EAAGr/C,GAET,MAAOtT,GACL,GAAM29B,EACF,IACI,GAAI39B,aAAiBoB,MAAO,CACxB,MAAM63B,EAAoBj5B,EAC1B29B,EAAI1E,EAAW1lC,KAAO,KAAO0lC,EAAWvO,cAExCiT,EAAI39B,GAGV,MAAOA,GAAQ,MAGzBA,IACA,GAAM29B,EACF,IACI,GAAI39B,aAAiBoB,MAAO,CACxB,MAAM63B,EAAoBj5B,EAC1B29B,EAAI1E,EAAW1lC,KAAO,KAAO0lC,EAAWvO,cAExCiT,EAAI39B,GAGV,MAAOA,GAAQ,IAG7B,+FCpPA,MAAAqiD,EAAArmD,EAAA,MAGAioF,EAAAjoF,EAAA,MACAkoF,EAAAloF,EAAA,KAWA,IAAKmoF,GAAL,SAAKA,GACDA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,cACH,CAHD,CAAKA,IAAAA,EAAc,KAKnBloF,EAAAA,MAAA,MASI9G,WAAAA,CAAmBypF,GARX,KAAAwF,iBAAyC,IAAIH,EAAAtF,KAI7C,KAAA0F,uBAAiC,EACjC,KAAAC,iBAA2B,EAC3B,KAAArF,kBAA4B,KAGhC52F,KAAK62F,SAAWN,GAAc,IAAIqF,EAAAtF,KAClCt2F,KAAKshE,gBAAkB,GACvBthE,KAAKk8F,gBAAkB,IAAIN,EAAAtF,KAC3Bt2F,KAAKshE,gBAAgB1gE,KAAKZ,KAAK62F,SAASY,SAAQ,IAAYz3F,KAAKm8F,UACrE,CAEOC,OAAAA,CAAQjsE,GACXnwB,KAAKq8F,iBACLr8F,KAAK0/C,mBAAmB,IAAIlU,SAAgBU,GAA0CA,EAAQ/b,KAClG,CAEOuvB,kBAAAA,CAAmBxQ,GACtBlvC,KAAKq8F,iBACLntD,EAAQpC,MAAM7hB,IACVjrB,KAAK62F,SAASzyD,IAAInZ,EAAI,IAEvB,QACP,CAEOu1B,OAAAA,GACHxgD,KAAKq8F,iBACL,MAAMC,EAAqB,IAAIT,EAAAjuD,SAO/B,OALI5tC,KAAKk8F,kBACLl8F,KAAKk8F,gBAAgB93D,IAAI,CAAE8kD,SAAUoT,EAAoBx3F,KAAMg3F,EAAeS,UAC9Ev8F,KAAKm8F,SAGFG,EAAmBptD,OAC9B,CAEO7pC,IAAAA,GACHrF,KAAKq8F,iBACL,MAAMC,EAAqB,IAAIT,EAAAjuD,SAQ/B,OANa5tC,KAAKk8F,kBAEdl8F,KAAKk8F,gBAAgB93D,IAAI,CAAE8kD,SAAUoT,EAAoBx3F,KAAMg3F,EAAeU,OAC9Ex8F,KAAKm8F,SAGFG,EAAmBptD,OAC9B,CAEO7uC,MAAAA,GAEH,OADAL,KAAKq8F,iBACEr8F,KAAK62F,SAASx2F,QACzB,CAEOy8C,UAAAA,GACH,OAA+B,MAAxB98C,KAAKk8F,eAChB,CAEO,qBAAMl7C,CAAgBy7C,EAA2Dl5E,GACpF,IAAKvjB,KAAK88C,eAAiB98C,KAAKi8F,gBAAiB,CAC7Cj8F,KAAK42F,kBAAoBrzE,EACzBvjB,KAAKi8F,iBAAkB,EAEvB,MAAMS,EAAO18F,KAAKk8F,gBAClB,GAAIQ,EAAM,CACN,KAAOA,EAAKr8F,SAAW,GAAG,CACHq8F,EAAKtF,cAEblO,SAASh9C,aAAQprC,GAa5Bd,KAAKk8F,kBAAoBQ,IACzB18F,KAAKk8F,gBAAkBQ,GAI/B,IAAK,MAAM/4B,KAAc3jE,KAAKshE,sBACpBqC,EAAWx3B,SAGrB,GAAInsC,KAAK+7F,iBAAiB17F,SAAW,GAAKo8F,EAAsB,CAC5D,MAAME,EAAiC,GAKvC,OAHA38F,KAAK+7F,iBAAiB9D,UAAU12F,SAASq7F,IACrCD,EAAa/7F,KAAKg8F,EAAQ,IAEvBpxD,QAAQ6sD,IAAIsE,GAAcE,SAAQ,KACrC78F,KAAKk8F,gBAAkB,KACvBl8F,KAAK62F,SAASt1F,SAAS4uB,IACnBssE,EAAqBtsE,EAAK,IAE9BnwB,KAAK62F,SAAW,IACV,IACP/pD,OAEH9sC,KAAKk8F,gBAAkB,KACvBl8F,KAAK62F,SAAW,KAG5B,CAEO,aAAMh6C,CAAQt5B,SACXvjB,KAAKghD,gBAAgB,KAAMz9B,EACrC,CAEQ44E,KAAAA,GACJ,IAAKn8F,KAAKg8F,wBAA0Bh8F,KAAKi8F,gBAAiB,CACtDj8F,KAAKg8F,uBAAwB,EAE7B,MAAMU,EAAO18F,KAAKk8F,gBACZY,EAAQ98F,KAAK62F,SACnB,GAAI6F,GAAQI,EAAO,CACf,KAAOA,EAAMz8F,SAAW,GAAKq8F,EAAKr8F,SAAW,IAAML,KAAKi8F,iBAAiB,CACrE,MAAMc,EAAaL,EAAKtF,cACxB,GAAI2F,EAAWj4F,OAASg3F,EAAeU,KACnCO,EAAW7T,SAASh9C,QAAQ4wD,EAAM/F,aAC/B,CACH,MAAMiG,EAAeF,EAAM1F,cAC3B2F,EAAW7T,SAASh9C,QAAQ8wD,IAahCh9F,KAAKk8F,kBAAoBQ,IACzB18F,KAAKk8F,gBAAkBQ,GAYvB18F,KAAK62F,WAAaiG,IAClB98F,KAAK62F,SAAWiG,GAIxB98F,KAAKg8F,uBAAwB,EAErC,CAEQK,cAAAA,GACJ,GAAIr8F,KAAK88C,aAAc,CACnB,GAAI98C,KAAK42F,kBACL,MAAM,IAAI58B,EAAAG,sBAAsBn6D,KAAK42F,mBAGzC,MAAM,IAAI58B,EAAAw7B,oBAAoB,SAC3B,GAAIx1F,KAAKi8F,gBACZ,MAAM,IAAIjiC,EAAAG,sBAAsB,kBAExC,8GCrMJ,MAAA8iC,EAAAtpF,EAAA,MACAqmD,EAAArmD,EAAA,MACAshF,EAAAthF,EAAA,MAEAC,EAAAA,oBAAA,MAKI9G,WAAAA,CAAmB+kD,EAA0BhR,EAAcxf,GACvD,GAJI,KAAAskD,YAAmB,MAIlB9kC,EACD,MAAM,IAAImZ,EAAAvf,kBAAkB,WAIhC,GAAIoX,IAAgBorC,EAAAp9C,YAAYC,QAA8D,gBAApD58C,OAAOg7B,eAAe2iB,GAAS/zC,YAAY5B,KACjF,MAAM,IAAI8uD,EAAAG,sBAAsB,+BAGpC,GAAItI,IAAgBorC,EAAAp9C,YAAYK,MAA+B,kBAAbW,EAC9C,MAAM,IAAImZ,EAAAG,sBAAsB,4BAGpCn6D,KAAKm1F,gBAAkBtjC,EACvB7xD,KAAK2lF,YAAc9kC,EACnB7gD,KAAK0qC,OAASrJ,GAAU4zD,EAAAtqD,kBAC5B,CAEA,eAAWknB,GACP,OAAO7xD,KAAKm1F,eAChB,CAEA,WAAWt0C,GAEP,OAAO7gD,KAAK2lF,WAChB,CAEA,eAAWyD,GACP,GAAIppF,KAAKm1F,kBAAoB8H,EAAAp9C,YAAYC,OACrC,MAAM,IAAIka,EAAAG,sBAAsB,oCAGpC,OAAOn6D,KAAK2lF,WAChB,CAEA,iBAAW0D,GACP,GAAIrpF,KAAKm1F,kBAAoB8H,EAAAp9C,YAAYK,KACrC,MAAM,IAAI8Z,EAAAG,sBAAsB,kCAGpC,OAAOn6D,KAAK2lF,WAChB,CAEA,MAAWtkD,GACP,OAAOrhC,KAAK0qC,MAChB,uGCxDJ92B,EAAAA,eAAA,MAKI9G,WAAAA,CAAmBowF,EAA0BC,GACzCn9F,KAAKo9F,qBAAuBF,EAC5Bl9F,KAAKq9F,sBAAwBF,CACjC,CAEO7oD,MAAAA,CAAOgpD,GAEV,MAAMC,EAAav9F,KAAKw9F,qBAAqBF,EAAkBt9F,KAAKo9F,qBAAsBp9F,KAAKq9F,uBAE/F,IAAKE,EACD,OAAO,KAGX,MAAME,EAAkC,EAApBF,EAAWl9F,OAEzB6hC,EAAS,IAAI2B,YAAY45D,GACzB3vD,EAAO,IAAIC,SAAS7L,GAG1B,OAFAliC,KAAK09F,gBAAgB5vD,EAAM,EAAGyvD,GAEvBr7D,CACX,CAEQy7D,SAAAA,CAAU7vD,EAAgBzmC,EAAgBwL,GAC9C,IAAK,IAAI5Q,EAAI,EAAGA,EAAI4Q,EAAIxS,OAAQ4B,IAC5B6rC,EAAKulD,SAAShsF,EAASpF,EAAG4Q,EAAIhP,WAAW5B,GAEjD,CAEQy7F,eAAAA,CAAgB5vD,EAAgBzmC,EAAgBwkB,GACpD,IAAK,IAAI5pB,EAAI,EAAGA,EAAI4pB,EAAMxrB,OAAQ4B,IAAMoF,GAAU,EAAG,CACjD,MAAMgkB,EAAIxoB,KAAK+mB,KAAK,EAAG/mB,KAAKgnB,IAAI,EAAGgC,EAAM5pB,KACzC6rC,EAAK8vD,SAASv2F,EAAQgkB,EAAI,EAAQ,MAAJA,EAAiB,MAAJA,GAAY,GAE/D,CAEQmyE,oBAAAA,CACJK,EACAC,EACAC,GAEA,IAAKF,EACD,OAAO,KAGX,GAAIE,IAAYD,GAAWC,EAAUD,EACjC,OAAOD,EAGX,MAAMG,EAAQF,EAAUC,EAClBE,EAAYp7F,KAAK4X,MAAMojF,EAASx9F,OAAS29F,GACzCE,EAAW,IAAIC,aAAaF,GAClC,IAAIG,EAAY,EACZC,EAAY,EAChB,KAAOA,EAAYJ,GAAW,CAC1B,MAAMK,EAAgBz7F,KAAK4X,OAAO4jF,EAAY,GAAKL,GACnD,IAAIO,EAAQ,EACRz4F,EAAQ,EACZ,KAAOs4F,EAAYE,GAAiBF,EAAYP,EAASx9F,QACrDk+F,GAASV,EAASO,KAClBt4F,IAEJo4F,EAASG,KAAeE,EAAQz4F,EAGpC,OAAOo4F,CACX,iGCtEJ,MAAAlkC,EAAArmD,EAAA,MACAshF,EAAAthF,EAAA,MACA6qF,EAAA7qF,EAAA,MAQAC,EAAAA,OAAA,MAMI9G,WAAAA,CAAmB2/B,GAJX,KAAAgyD,kBAA4B,EAC5B,KAAAC,iBAA2B,EAI/B1+F,KAAK0qC,OAAS+B,GAAsBwoD,EAAAtqD,mBACpC3qC,KAAK2+F,gBAAkB,IAAIH,EAAA9/C,KAC/B,CAEA,YAAWhS,GACP,OAAO1sC,KAAKy+F,gBAChB,CAEA,eAAWG,GACP,OAAO5+F,KAAK0+F,eAChB,CAEA,MAAWr9D,GACP,OAAOrhC,KAAK0qC,MAChB,CAEO8B,KAAAA,GACExsC,KAAKy+F,mBACNz+F,KAAK0vC,iBAAiB,CAClBxN,OAAQ,KACRyN,OAAO,EACPC,aAAcC,KAAKC,QAEvB9vC,KAAKy+F,kBAAmB,EAEhC,CAEO/uD,gBAAAA,CAAiBmvD,GAEpB,GADA7+F,KAAK8+F,iBACA9+F,KAAK2+F,gBAAgB7hD,aACtB,IACI98C,KAAK2+F,gBAAgBvC,QAAQyC,GAC/B,MAAOt8F,GACL,CAGZ,CAEOgqC,IAAAA,GACH,GAAIvsC,KAAK0+F,gBACL,MAAM,IAAI1kC,EAAAG,sBAAsB,oCAGpC,OAAOn6D,KAAK2+F,gBACPn+C,UACA1T,MAAK5J,gBACkBpiC,IAAhB+9F,GAA6BA,EAAYlvD,cACnC3vC,KAAK2+F,gBAAgB9hD,QAAQ,yBAGhCgiD,IAEnB,CACOzyD,SAAAA,GACEpsC,KAAK0+F,kBACN1+F,KAAK0+F,iBAAkB,EACvB1+F,KAAK2+F,gBAAkB,IAAIH,EAAA9/C,MAEnC,CAEQogD,aAAAA,GACJ,GAAI9+F,KAAKy+F,iBACL,MAAM,IAAIzkC,EAAAG,sBAAsB,gBAExC,oGC5EJvmD,EAAAA,YAAA,MASW,mBAAOuwE,CAAah5C,EAAgB4zD,GACvC,IAAK5zD,EACD,MAAO,GAGX,IAAK4zD,EACD,OAAO5zD,EAGX,IAAI6zD,EAAoB,GACpB99F,EAAc,GAElB,MAAM+9F,EAAqBpsF,IACvBmsF,GAAansF,CAAG,EAEdqsF,EAAersF,IACjB3R,GAAO2R,CAAG,EAEd,IAAIssF,EAAoCF,EAExC,IAAK,IAAIh9F,EAAI,EAAGA,EAAIkpC,EAAO9qC,OAAQ4B,IAAK,CACpC,MAAMikC,EAAYiF,EAAOlpC,GACnBmD,EAAenD,EAAI,EAAIkpC,EAAO9qC,OAAS8qC,EAAOlpC,EAAI,GAAK,GAE7D,OAAQikC,GACJ,IAAK,IACY,MAAT9gC,GACA+5F,EAAW,KACXl9F,KAEAk9F,EAAaD,EAEjB,MAEJ,IAAK,IACY,MAAT95F,GACA+5F,EAAW,KACXl9F,MAEI88F,EAAaloF,eAAe3V,KAC5B89F,GAAaD,EAAa79F,IAG9Bi+F,EAAaF,EACb/9F,EAAM,IAEV,MAEJ,QACIi+F,EAAWj5D,IAKvB,OAAO84D,CACX,+FCTJ,MAAaj6E,EAQF,WAAOq6E,GAEV,MAAMC,EAAwD,IAAIz5C,IAAI,CAAC,CAAC,EAAG,UACrE05C,EAAyC,IAAI15C,IAI7C25C,EAAY,+BAAiC97D,KAD9B,ktHAEf+7D,EAAS,IAAI/3B,OAAO83B,GAE1BC,EAAO54E,iBAAiB,WAAWra,IAAiC,IAAhC,KAAE8oC,GAAoB9oC,EACtD,GAAIwY,EAAQ06E,mBAAmBpqD,GAAO,CAClC,MACI5Y,QAAQ,QAAEijE,IACVrqD,EAEEsqD,EAAWN,EAA0Bt2F,IAAI22F,GAE/C,GAAwB,kBAAbC,EAAuB,CAC9B,MAAMC,EAAmBN,EAAkBv2F,IAAI42F,GAE/C,QACyB7+F,IAArB8+F,GACAA,IAAqBF,EAErB,MAAM,IAAI3mF,MAAM,2CAEjB,IAAwB,qBAAb4mF,EAMd,MAAM,IAAI5mF,MAAM,uCALhB4mF,IAGAN,EAA0B/kC,OAAOolC,QAIlC,KAAI36E,EAAQ86E,gBAAgBxqD,GAY5B,CACH,MACI19B,OAAO,QAAE0qB,IACTgT,EAEJ,MAAM,IAAIt8B,MAAMspB,GAjBsB,CACtC,MAAM,GAAEhB,GAAOgU,EAETuqD,EAAmBN,EAAkBv2F,IAAIs4B,GAE/C,QAAyBvgC,IAArB8+F,EACA,MAAM,IAAI7mF,MAAM,uCAGpBumF,EAAkBhlC,OAAOj5B,GAEzBg+D,EAA0B/kC,OAAOslC,QAyCzC,MAAO,CACH9hE,aAhCkB4hE,IAClB,MAAMr+D,EAAKx+B,KAAKi9F,SAEhBR,EAAkBt2F,IAAIq4B,EAAIq+D,GAC1BL,EAA0Br2F,IAAI02F,EAASr+D,GAEvCm+D,EAAOO,YAAY,CACf1+D,KACA0B,OAAQ,QACRtG,OAAQ,CAAEijE,YACK,EAuBnB3hE,WApBeA,CAAChyB,EAAkBoR,KAClC,MAAMuiF,EAAU78F,KAAKi9F,SAcrB,OAZAT,EAA0Br2F,IAAI02F,EAAS3zF,GAEvCyzF,EAAOO,YAAY,CACf1+D,GAAI,KACJ0B,OAAQ,MACRtG,OAAQ,CACJtf,QACA2yB,IAAKkwD,YAAYlwD,MACjB4vD,aAIDA,CAAO,EAOtB,CAEQ,uBAAOO,GACX,MAAO,KAC0B,OAAzBl7E,EAAQm7E,eAIZn7E,EAAQm7E,aAAen7E,EAAQq6E,QAHpBr6E,EAAQm7E,aAO3B,CAIQ,yBAAOT,CAAmBp9D,GAC9B,YAAiDvhC,IAAzCuhC,EAA8BU,QAAkE,SAAzCV,EAA8BU,MACjG,CAEQ,sBAAO88D,CAAgBx9D,GAC3B,OAA6C,OAArCA,EAA2B1qB,OAAwC,kBAAf0qB,EAAQhB,EACxE,EAzHJztB,EAAAA,QAAAmR,EAEmBA,EAAAm7E,aAAqC,KAEtCn7E,EAAA+Y,aAA+C4hE,GAA0B36E,EAAQo7E,SAASriE,aAAa4hE,GAEvG36E,EAAAgZ,WAA0C,CAAChyB,EAAiBoR,IAA0B4H,EAAQo7E,SAASpiE,WAAWhyB,EAAMoR,GA2GxH4H,EAAAo7E,OAA8Bp7E,EAAQk7E,iIC7JxDrsF,EAAAA,0BAAA,MASI9G,WAAAA,CAAmBkrD,EAAenF,GAC9B7yD,KAAKogG,aAAepoC,EACpBh4D,KAAKo5D,gBAAkBvG,CAC3B,CASA,YAAWmF,GACP,OAAOh4D,KAAKogG,YAChB,CAEA,eAAWvtC,GACP,OAAO7yD,KAAKo5D,eAChB,gJCxCJ,MAAAlvB,EAAAv2B,EAAA,MAaA20B,EAAA30B,EAAA,KACAw2B,EAAAx2B,EAAA,MAWA0sF,EAAA1sF,EAAA,MACA2sF,EAAA3sF,EAAA,MACAqlD,EAAArlD,EAAA,MAQA,MAAsB4sF,EAQX,iCAAOC,GACV,MAAMC,EAAc,IAAIv2D,EAAAw2D,aAAY,GACpC,OAAO,IAAIC,EAAgB,IAAIz2D,EAAAgG,eAAeuwD,GAClD,CAWO,0BAAOG,CAAoBxwD,GAC9B,MAAMqwD,EAAc,IAAIv2D,EAAAw2D,aAAY,GACpC,OAAO,IAAIC,EAAgB,IAAIz2D,EAAAgG,eAAeuwD,EAAarwD,GAC/D,CAUO,uBAAOywD,CAAiBx2D,GAAuD,IAAlCn/B,EAAAqC,UAAAlN,OAAA,QAAAS,IAAAyM,UAAA,GAAAA,UAAA,GAAe,oBAC/D,OAAO,IAAIozF,EAAgB,IAAIz2D,EAAA42D,gBAAgBz2D,EAAMn/B,GACzD,CAWO,sBAAO61F,CAAgBluC,GAE1B,GAAIA,aAAuB1oB,EAAA62D,6BACvB,OAAO,IAAIL,EAAgB,IAAIL,EAAAW,yBAAyBpuC,IAG5D,GAAIA,aAAuB1oB,EAAA+2D,iBACvB,OAAO,IAAIP,EAAgB9tC,GAE/B,GAA2B,qBAAhBsuC,aAA+BtuC,aAAuBsuC,YAAa,CAC1E,MAAMV,EAAc,IAAIv2D,EAAAw2D,aAAY,GACpC,OAAO,IAAIC,EAAgB,IAAIz2D,EAAAgG,eAAeuwD,EAAa,KAAM,KAAM5tC,IAG3E,MAAM,IAAI95C,MAAM,qBACpB,CAUO,+BAAOqoF,GACV,OAAO,IAAIC,EAAsB,IAAIl3D,EAAAm3D,wBACzC,CAYO,wBAAOC,CAAkBC,GAC5B,QAAe1gG,IAAX0gG,EACA,OAAOjB,EAAYa,2BAEvB,GAAII,aAAkBr3D,EAAAm3D,wBAClB,OAAO,IAAID,EAAsBG,GAGrC,MAAM,IAAIzoF,MAAM,qBACpB,CAWO,0BAAO0oF,CAAoBn3D,GAC9B,OAAO,IAAI+2D,EAAsB,IAAIhB,EAAAqB,gBAAgBp3D,GACzD,CAYO,uBAAOq3D,CAAiB9uC,GAC3B,GAAIA,aAAuB1oB,EAAAy3D,8BACvB,OAAO,IAAIP,EAAsB,IAAIroC,EAAA6oC,0BAA0BhvC,IAGnE,GAAIA,aAAuB1oB,EAAA23D,sBACvB,OAAO,IAAIT,EAAsBxuC,GAGrC,GAAIA,aAAuB1oB,EAAA43D,sBACvB,OAAO,IAAIV,EAAsBxuC,GAGrC,MAAM,IAAI95C,MAAM,qBACpB,EAvIJnF,EAAAA,YAAA2sF,EA6KA,MAAaI,UAAwBJ,EAQjCzzF,WAAAA,CAAmByxB,GACf4D,QACAniC,KAAK8qC,WAAavM,CACtB,CAKA,UAAW4M,GACP,OAAOnrC,KAAK8qC,WAAWK,MAC3B,CAOOqB,KAAAA,CAAM89B,EAAiBh1B,GAC1Bt1C,KAAK8qC,WAAWwB,UAAUQ,MAAK,KACrBw9B,GACFA,OAEJ3yD,IACM29B,GACFA,EAAI39B,KAGhB,CAOO0pB,EAAAA,GACH,OAAOrhC,KAAK8qC,WAAWzJ,IAC3B,CAQO+J,MAAAA,GACH,OAAOprC,KAAK8qC,WAAWM,QAC3B,CASOQ,MAAAA,CAAOC,GACV,OAAO7rC,KAAK8qC,WAAWc,OAAOC,EAClC,CAQOM,MAAAA,CAAON,GACV,OAAO7rC,KAAK8qC,WAAWqB,OAAON,EAClC,CAQOS,OAAAA,GACH,OAAOtsC,KAAK8qC,WAAWwB,SAC3B,CAQA,UAAWM,GACP,OAAO5sC,KAAK8qC,WAAW8B,MAC3B,CAEOoF,WAAAA,CAAY9mC,EAAc9H,GAG7B,GAFAklC,EAAAQ,UAAU6+C,YAAYvkF,EAAO,cAEzBtC,IAAcd,KAAK8qC,WAAWkH,YAG9B,MAAM,IAAIj5B,MAAM,kEAFhB/Y,KAAK8qC,WAAWkH,YAAY9mC,EAAM9H,EAK1C,CAEOizC,WAAAA,CAAYnrC,EAAc82F,GAC7B,QAAIlhG,IAAcd,KAAK8qC,WAAWuL,YAC9B,OAAOr2C,KAAK8qC,WAAWuL,YAAYnrC,EAAM82F,GAEzC,MAAM,IAAIjpF,MAAM,iEAIxB,CAEA,cAAW8zB,GACP,OAAO7sC,KAAK8qC,WAAW+B,UAC3B,EAxHJj5B,EAAAA,gBAAA+sF,EA2HA,MAAaU,UAA8Bd,EAQvCzzF,WAAAA,CAAmB0nC,GACfrS,QACAniC,KAAKiiG,gBAAkBztD,CAC3B,CAEA,UAAWrJ,CAAOA,GACdnrC,KAAKiiG,gBAAgB92D,OAASA,CAClC,CAEO2nB,KAAAA,CAAM5wB,GACTliC,KAAKiiG,gBAAgBnvC,MAAM5wB,EAC/B,CAEOsK,KAAAA,GACHxsC,KAAKiiG,gBAAgBz1D,OACzB,CAEOnL,EAAAA,GACH,OAAOrhC,KAAKiiG,gBAAgB5gE,IAChC,CAEO2Q,WAAAA,GACH,MAAM,IAAIj5B,MAAM,iEACpB,CAEOs9B,WAAAA,GACH,MAAM,IAAIt9B,MAAM,iEACpB,EAnCJnF,EAAAA,sBAAAytF,koBC9UA,MAAAl5D,EAAAC,EAAAz0B,EAAA,MAEA20B,EAAA30B,EAAA,KAIAC,EAAAA,gBAAA,MAMI9G,WAAAA,CAAmBw9B,GACfhC,EAAAQ,UAAUC,uBAAuBZ,EAAGa,SAAU,gFAC9ChpC,KAAKkiG,OAAS/5D,EAAGa,SAASsB,EAAU,IACxC,CAEA,UAAWa,CAAOA,GACd7C,EAAAQ,UAAUq5D,oBAAoBniG,KAAKoiG,gBAAiB,yBACpDpiG,KAAKoiG,gBAAkBj3D,EACvB,IAAIk3D,EAAuB,EACvBriG,KAAKoiG,gBAAgB5oB,YACrB6oB,EAAeriG,KAAKoiG,gBAAgB10D,OAAOuB,iBAE3BnuC,IAAhBd,KAAKkiG,SACLliG,KAAKsiG,gBAAkBn6D,EAAGo6D,kBAAkB,GAAI,CAACC,GAAIxiG,KAAKkiG,OAAQl7E,MAAOq7E,EAAcI,WAAW,IAE1G,CAEO3vC,KAAAA,CAAM5wB,GACToG,EAAAQ,UAAUC,uBAAuB/oC,KAAKoiG,gBAAiB,wCAC1BthG,IAAzBd,KAAKsiG,iBACLtiG,KAAKsiG,gBAAgBxvC,MAAM,IAAIga,WAAW5qC,EAAOj+B,MAAM,IAE/D,CAEOuoC,KAAAA,QACiB1rC,IAAhBd,KAAKkiG,SACLliG,KAAKsiG,gBAAgBnI,GAAG,UAAU,KAC1Bn6F,KAAKoiG,gBAAgB5oB,YACrBx5E,KAAKoiG,gBAAgBM,aAAa1iG,KAAKsiG,gBAAgBK,cACvDx6D,EAAGy6D,UAAU5iG,KAAKkiG,OACd,IAAIlP,UAAUhzF,KAAKoiG,gBAAgB10D,QACnC,EACA1tC,KAAKoiG,gBAAgB10D,OAAOuB,WAC5B,IAER9G,EAAG06D,UAAU7iG,KAAKkiG,QAClBliG,KAAKkiG,YAASphG,CAAS,IAE3Bd,KAAKsiG,gBAAgBt+F,MAE7B,CAEOq9B,EAAAA,GACH,OAAOrhC,KAAK0qC,MAChB,+MCtDJ,MAAAR,EAAAv2B,EAAA,MAKAw2B,EAAAx2B,EAAA,MAeAshF,EAAAthF,EAAA,MACAu3C,EAAAv3C,EAAA,MACAy2B,EAAAz2B,EAAA,MAMA,MAAsButF,EAMlBp0F,WAAAA,GAEA,CAWO,uBAAOg2F,CAAiB33D,GAC3B,OAAO43D,EAAqBz3F,OAAO6/B,EACvC,CAcO,uBAAOyuB,CAAiBnzD,EAAwC0kC,GACnE,OAAO63D,EAAqB13F,OAAO7E,EAAU0kC,EAEjD,EAtCJv3B,EAAAA,iBAAAstF,EAqDA,MAAsB6B,UAA6B7B,EAWxC,aAAO51F,CAAO6/B,GACjB,OAAO,IAAI83D,EAAyB93D,EACxC,EAbJv3B,EAAAA,qBAAAmvF,EAsCA,MAAaE,UAAiCF,EAY1Cj2F,WAAAA,CAAmBq+B,GACfhJ,QAEIniC,KAAKkjG,gBADMpiG,IAAXqqC,EACkBf,EAAAyI,sBAAsBK,wBAEtB/H,EAEtBnrC,KAAK4qC,WAAa,IAAIT,EAAAU,YACtB7qC,KAAK0qC,OAASuqD,EAAAtqD,mBACd3qC,KAAKmjG,WAAa,IAAIh5D,EAAAkF,yBAAyBrvC,KAAKkjG,WAAW5zD,eAAiB,GACpF,CAKA,UAAWnE,GACP,OAAOK,QAAQU,QAAQlsC,KAAKkjG,WAChC,CASOpwC,KAAAA,CAAMswC,GACTpjG,KAAKmjG,WAAWzzD,iBAAiB,CAC7BxN,OAAQkhE,EACRzzD,OAAO,EACPC,aAAcC,KAAKC,OAE3B,CAQOtD,KAAAA,GACHxsC,KAAKmjG,WAAW32D,OACpB,CAEOnL,EAAAA,GACH,OAAOrhC,KAAK0qC,MAChB,CAEOU,MAAAA,GACHprC,KAAKmpC,QAAQ,IAAIgB,EAAAuB,6BAA6B1rC,KAAK0qC,SACnD1qC,KAAKmpC,QAAQ,IAAIgB,EAAAwB,sBAAsB3rC,KAAK0qC,QAEhD,CAEO,YAAMkB,CAAOC,GAChB7rC,KAAKmpC,QAAQ,IAAIgB,EAAA2B,8BAA8B9rC,KAAK0qC,OAAQmB,UAEtD7rC,KAAKorC,SACX,MAAMW,EAAS/rC,KAAKmjG,WAEpB,OADAnjG,KAAKmpC,QAAQ,IAAIgB,EAAA8B,6BAA6BjsC,KAAK0qC,OAAQmB,IACpD,CACHM,OAAQjJ,UACJljC,KAAKmpC,QAAQ,IAAIgB,EAAAkC,6BAA6BrsC,KAAK0qC,OAAQmB,IACpD7rC,KAAKssC,WAEhBjL,GAAIA,IAAcwK,EAClBU,KAAMA,IAA0CR,EAAOQ,OAE/D,CAEOJ,MAAAA,CAAON,GACV7rC,KAAKmpC,QAAQ,IAAIgB,EAAAkC,6BAA6BrsC,KAAK0qC,OAAQmB,GAC/D,CAEOS,OAAAA,GAEP,CAEA,UAAWM,GACP,OAAO5sC,KAAK4qC,UAChB,CAEA,cAAWiC,GACP,OAAOrB,QAAQU,QAAQ,CACnBa,cAAe/sC,KAAKkjG,WAAWl2D,cAC/BC,aAAcjtC,KAAKkjG,WAAWh2D,SAC9BC,aAAcjD,EAAAiD,aAAaC,QAC3BC,aAAc,aACdC,MAAO,aACPC,WAAYvtC,KAAKkjG,WAAW11D,cAC5B1oC,KAAMolC,EAAAplC,KAAK2uF,QAEnB,CAEQtqD,OAAAA,CAAQvjB,GACZ5lB,KAAK4qC,WAAWzB,QAAQvjB,GACxBukB,EAAA8F,OAAOpP,SAASsI,QAAQvjB,EAC5B,CAEQy9E,QAAAA,CAAS3gE,GACb,MAAM4gE,EAAc9hD,OAAOh8C,MAAMk9B,EAAYuM,YACvCnB,EAAmB,IAAIg/B,WAAWpqC,GACxC,IAAK,IAAIzgC,EAAI,EAAGA,EAAIqhG,EAAIjjG,SAAU4B,EAC9BqhG,EAAIrhG,GAAK6rC,EAAK7rC,GAElB,OAAOqhG,CACX,EAtHJ1vF,EAAAA,yBAAAqvF,EA6HA,MAAsBD,UAA6B9B,EAK/Cp0F,WAAAA,GACHq1B,OACD,CAcW,aAAO72B,CAAO7E,EAAwC0kC,GACzD,OAAO,IAAI81D,EAAyBx6F,EAAU0kC,EAClD,EAvBJv3B,EAAAA,qBAAAovF,EAwCA,MAAa/B,UAAiC+B,EAkB1Cl2F,WAAAA,CAAmBrG,EAAwC0kC,GACvDhJ,QAEIniC,KAAKkjG,gBADLpiG,IAAcqqC,EACI+f,EAAAxc,kBAAkBwE,wBAElB/H,EAEtBnrC,KAAK4qC,WAAa,IAAIT,EAAAU,YACtB7qC,KAAK0qC,OAASuqD,EAAAtqD,mBACd3qC,KAAKujG,aAAe98F,EACpBzG,KAAKwjG,cAAe,EACpBxjG,KAAKyjG,eAAiBzjG,KAAKkjG,WAAW5zD,eAAiB,EAC3D,CAKA,UAAWnE,GACP,OAAOK,QAAQU,QAAQlsC,KAAKkjG,WAChC,CAQO12D,KAAAA,GACHxsC,KAAKwjG,cAAe,EACpBxjG,KAAKujG,aAAa/2D,OACtB,CAEOnL,EAAAA,GACH,OAAOrhC,KAAK0qC,MAChB,CAEOU,MAAAA,GACHprC,KAAKmpC,QAAQ,IAAIgB,EAAAuB,6BAA6B1rC,KAAK0qC,SACnD1qC,KAAKmpC,QAAQ,IAAIgB,EAAAwB,sBAAsB3rC,KAAK0qC,QAEhD,CAEO,YAAMkB,CAAOC,GAKhB,OAJA7rC,KAAKmpC,QAAQ,IAAIgB,EAAA2B,8BAA8B9rC,KAAK0qC,OAAQmB,UAEtD7rC,KAAKorC,SACXprC,KAAKmpC,QAAQ,IAAIgB,EAAA8B,6BAA6BjsC,KAAK0qC,OAAQmB,IACpD,CACHM,OAAQA,KACJnsC,KAAKujG,aAAa/2D,QAClBxsC,KAAKmpC,QAAQ,IAAIgB,EAAAkC,6BAA6BrsC,KAAK0qC,OAAQmB,IACpD7rC,KAAKssC,WAEhBjL,GAAIA,IAAcwK,EAClBU,KAAMA,KACF,IACIm3D,EADAC,EAAqB,EAGzB,KAAOA,EAAa3jG,KAAKyjG,gBAAgB,CAGrC,MAAMG,EAAwB,IAAI//D,YAAY7jC,KAAKyjG,eAAiBE,GAC9DE,EAAsB7jG,KAAKujG,aAAah3D,KAAKq3D,GAInD,QAAI9iG,IAAc4iG,EACdA,EAAeE,MACZ,CAEwB,IAAI5Q,UAAU0Q,GACjC16F,IAAI,IAAIgqF,UAAU4Q,GAAWD,GAGzC,GAAI,IAAME,EACN,MAEJF,GAAcE,EAElB,OAAOr4D,QAAQU,QAAmC,CAC9ChK,OAAQwhE,EAAaz/F,MAAM,EAAG0/F,GAC9Bh0D,MAAO3vC,KAAKwjG,cAA+B,IAAfG,EAC5B/zD,aAAcC,KAAKC,OACrB,EAGd,CAEO3D,MAAAA,CAAON,GACV7rC,KAAKmpC,QAAQ,IAAIgB,EAAAkC,6BAA6BrsC,KAAK0qC,OAAQmB,GAC/D,CAEOS,OAAAA,GAEP,CAEA,UAAWM,GACP,OAAO5sC,KAAK4qC,UAChB,CAEA,cAAWiC,GACP,OAAOrB,QAAQU,QAAQ,CACnBa,cAAe/sC,KAAKkjG,WAAWl2D,cAC/BC,aAAcjtC,KAAKkjG,WAAWh2D,SAC9BC,aAAcjD,EAAAiD,aAAaC,QAC3BC,aAAc,aACdC,MAAO,aACPC,WAAYvtC,KAAKkjG,WAAW11D,cAC5B1oC,KAAMolC,EAAAplC,KAAK2uF,QAEnB,CAEQtqD,OAAAA,CAAQvjB,GACZ5lB,KAAK4qC,WAAWzB,QAAQvjB,GACxBukB,EAAA8F,OAAOpP,SAASsI,QAAQvjB,EAC5B,EArIJhS,EAAAA,yBAAAqtF,+GC7RA,MAAA6C,EAAAnwF,EAAA,MACAy2B,EAAAz2B,EAAA,MAQA,MAAakkD,UAA8BztB,EAAAyI,sBA6DvC/lC,WAAAA,CAAmBi3F,EACA72D,EACAM,EACA8B,EACA00D,EACAh3D,EACAi3D,EACA3sB,EACAkC,GACfr3C,MAAMqL,EAAeR,EAAeE,EAAU62D,GAC9C/jG,KAAK+jG,UAAYA,EACjB/jG,KAAKsvC,eAAiBA,EACtBtvC,KAAKgkG,WAAaA,EAClBhkG,KAAKkkG,qBAAuBD,EAC5BjkG,KAAKmkG,4BAA8B7sB,EACnCt3E,KAAKokG,aAAe5qB,CACxB,CAEO,sCAAO6qB,CAAgCC,GAC1C,YAAoCxjG,IAAhCwjG,EACOzsC,EAAsBgC,yBAE1BhC,EAAsBC,sCACzBD,EAAsB0sC,oCAAoCD,GAClE,CAEO,4CAAOxsC,CAAsC0sC,GAChD,OAAQA,GACJ,IAAK,2BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeC,MACf,EACA,IACA,IACA,EACA,EACAF,EACAA,GACA,GACR,IAAK,+BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeE,MACf,EACA,KACA,IACA,GACA,EACAH,EACA,iCACA,GACR,IAAK,gCACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeE,MACf,EACA,KACA,IACA,GACA,EACAH,EACAA,GACA,GACR,IAAK,kCACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeG,IACf,EACA,KACA,KACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,mCACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeG,IACf,EACA,KACA,MACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,kCACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeG,IACf,EACA,KACA,KACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,kCACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeG,IACf,EACA,KACA,KACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,kCACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeG,IACf,EACA,KACA,MACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,mCACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeG,IACf,EACA,KACA,MACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,gCACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeI,UACf,EACA,KACA,KACA,EACA,GACAL,EACAA,GACA,GAER,IAAK,2BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeK,IACf,EACA,IACA,KACA,EACA,GACAN,EACA,2BACA,GACR,IAAK,4BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeK,IACf,EACA,KACA,KACA,EACA,GACAN,EACA,4BACA,GACR,IAAK,4BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeC,MACf,EACA,IACA,IACA,EACA,EACAF,EACA,4BACA,GACR,IAAK,2BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeK,IACf,EACA,KACA,KACA,EACA,GACAN,EACA,4BACA,GACR,IAAK,2BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeK,IACf,EACA,KACA,KACA,EACA,GACAN,EACA,4BACA,GACR,IAAK,0BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeK,IACf,EACA,IACA,KACA,EACA,GACAN,EACA,2BACA,GACR,IAAK,4BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeM,SACf,EACA,KACA,KACA,EACA,GACAP,EACAA,GACA,GACR,IAAK,4BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeM,SACf,EACA,KACA,KACA,EACA,GACAP,EACAA,GACA,GACR,IAAK,2BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeK,IACf,EACA,KACA,KACA,EACA,GACAN,EACA,4BACA,GACR,IAAK,4BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeK,IACf,EACA,KACA,KACA,EACA,GACAN,EACA,4BACA,GACR,IAAK,kCACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeG,IACf,EACA,KACA,MACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,mCACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeG,IACf,EACA,KACA,MACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,4BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeM,SACf,EACA,KACA,KACA,EACA,GACAP,EACAA,GACA,GACR,IAAK,6BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeO,UACf,EACA,KACA,IACA,EACA,GACAR,EACAA,GACA,GACR,IAAK,6BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeO,UACf,EACA,KACA,IACA,EACA,GACAR,EACAA,GACA,GACR,IAAK,oCACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeO,UACf,EACA,KACA,IACA,EACA,GACAR,EACAA,GACA,GACR,IAAK,qCACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeQ,KACf,EACA,KACA,IACA,EACA,GACAT,EACAA,GACA,GACR,IAAK,qCACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeQ,KACf,EACA,KACA,IACA,EACA,GACAT,EACAA,GACA,GACR,IAAK,qCACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeQ,KACf,EACA,KACA,IACA,EACA,GACAT,EACAA,GACA,GACR,IAAK,8BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeS,KACf,EACA,KACA,KACA,EACA,GACAV,EACAA,GACA,GACR,IAAK,8BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeS,KACf,EACA,KACA,IACA,EACA,GACAV,EACAA,GACA,GACR,IAAK,gCACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeI,UACf,EACA,KACA,KACA,EACA,GACAL,EACAA,GACA,GACR,IAAK,0BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeU,KACf,EACA,IACA,IACA,EACA,EACAX,EACAA,GACA,GACR,IAAK,2BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeU,KACf,EACA,IACA,IACA,EACA,EACAX,EACA,2BACA,GACR,IAAK,6BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeK,IACf,EACA,MACA,MACA,EACA,GACAN,EACAA,GACA,GACR,IAAK,8BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeK,IACf,EACA,MACA,MACA,EACA,GACAN,EACA,8BACA,GACR,IAAK,6BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeK,IACf,EACA,MACA,MACA,EACA,GACAN,EACAA,GACA,GACR,IAAK,8BACD,OAAO,IAAI3sC,EACPztB,EAAAq6D,eAAeK,IACf,EACA,MACA,MACA,E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","sources":["../node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/react/dist/emotion-element-43c6fea0.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@mui/icons-material/AutoFixHighRounded.js","../node_modules/@mui/icons-material/ConstructionRounded.js","../node_modules/@mui/icons-material/LockOutlined.js","../node_modules/@mui/icons-material/QueryStatsRounded.js","../node_modules/@mui/icons-material/Settings.js","../node_modules/@mui/icons-material/SettingsSuggestRounded.js","../node_modules/@mui/icons-material/SupportAgentRounded.js","../node_modules/@mui/icons-material/ThumbUpAltRounded.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/colors/common.js","../node_modules/@mui/material/colors/grey.js","../node_modules/@mui/material/colors/purple.js","../node_modules/@mui/material/colors/red.js","../node_modules/@mui/material/colors/orange.js","../node_modules/@mui/material/colors/blue.js","../node_modules/@mui/material/colors/lightBlue.js","../node_modules/@mui/material/colors/green.js","../node_modules/@mui/material/styles/createPalette.js","../node_modules/@mui/material/styles/createTypography.js","../node_modules/@mui/material/styles/shadows.js","../node_modules/@mui/material/styles/createTransitions.js","../node_modules/@mui/material/styles/zIndex.js","../node_modules/@mui/material/styles/createTheme.js","../node_modules/@mui/material/styles/createMixins.js","../node_modules/@mui/material/styles/defaultTheme.js","../node_modules/@mui/material/styles/identifier.js","../node_modules/@mui/material/styles/styled.js","../node_modules/@mui/material/styles/useThemeProps.js","../node_modules/@mui/material/utils/capitalize.js","../node_modules/@mui/material/SvgIcon/svgIconClasses.js","../node_modules/@mui/material/SvgIcon/SvgIcon.js","../node_modules/@mui/material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/debounce.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/deprecatedPropType/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/requirePropFactory/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/useId.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/unsupportedProp/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/utils/isMuiElement/isMuiElement.js","../node_modules/@mui/material/utils/ownerDocument.js","../node_modules/@mui/material/utils/ownerWindow.js","../node_modules/@mui/material/utils/useControlled.js","../node_modules/@mui/utils/useControlled/useControlled.js","../node_modules/@mui/material/utils/useEnhancedEffect.js","../node_modules/@mui/material/utils/useEventCallback.js","../node_modules/@mui/material/utils/useForkRef.js","../node_modules/@mui/utils/useIsFocusVisible/useIsFocusVisible.js","../node_modules/@mui/material/utils/useIsFocusVisible.js","../node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","../node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","../node_modules/@mui/styled-engine/StyledEngineProvider/StyledEngineProvider.js","../node_modules/@mui/styled-engine/index.js","../node_modules/@mui/system/colorManipulator.js","../node_modules/@mui/system/createStyled.js","../node_modules/@mui/system/esm/breakpoints.js","../node_modules/@mui/system/esm/createTheme/applyStyles.js","../node_modules/@mui/system/esm/createTheme/createBreakpoints.js","../node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/system/esm/merge.js","../node_modules/@mui/system/esm/spacing.js","../node_modules/@mui/system/esm/memoize.js","../node_modules/@mui/system/esm/style.js","../node_modules/@mui/system/esm/compose.js","../node_modules/@mui/system/esm/borders.js","../node_modules/@mui/system/esm/cssGrid.js","../node_modules/@mui/system/esm/palette.js","../node_modules/@mui/system/esm/sizing.js","../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/system/esm/useTheme.js","../node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","../node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","../node_modules/@mui/system/esm/useThemeWithoutDefault.js","../node_modules/@mui/utils/ClassNameGenerator/ClassNameGenerator.js","../node_modules/@mui/utils/capitalize/capitalize.js","../node_modules/@mui/utils/clamp/clamp.js","../node_modules/@mui/utils/composeClasses/composeClasses.js","../node_modules/@mui/utils/createChainedFunction/createChainedFunction.js","../node_modules/@mui/utils/debounce/debounce.js","../node_modules/@mui/utils/deepmerge/deepmerge.js","../node_modules/@mui/utils/formatMuiErrorMessage/formatMuiErrorMessage.js","../node_modules/@mui/utils/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/utils/generateUtilityClasses/generateUtilityClasses.js","../node_modules/@mui/utils/getDisplayName/getDisplayName.js","../node_modules/@mui/utils/ownerDocument/ownerDocument.js","../node_modules/@mui/utils/ownerWindow/ownerWindow.js","../node_modules/@mui/utils/resolveProps/resolveProps.js","../node_modules/@mui/utils/setRef/setRef.js","../node_modules/@mui/utils/useEnhancedEffect/useEnhancedEffect.js","../node_modules/@mui/utils/useEventCallback/useEventCallback.js","../node_modules/@mui/utils/useForkRef/useForkRef.js","../node_modules/@mui/utils/useId/useId.js","../node_modules/@mui/utils/useLazyRef/useLazyRef.js","../node_modules/@mui/utils/useOnMount/useOnMount.js","../node_modules/@mui/utils/useTimeout/useTimeout.js","../node_modules/bent/src/browser.js","../node_modules/bent/src/core.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/microsoft.cognitiveservices.speech.sdk.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/ConsoleLoggingListener.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/FileAudioSource.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/MicAudioSource.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/PCMRecorder.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/ProxyInfo.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/ReplayableAudioNode.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/RestConfigBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/RestMessageAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/WebsocketConnection.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/WebsocketMessageAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/AddedLmIntent.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/AgentConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/AvatarSynthesisAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/CognitiveSubscriptionKeyAuthentication.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/CognitiveTokenAuthentication.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/ConnectionFactoryBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/ConversationServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/ConversationTranscriberConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/ConversationTranscriptionServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/DialogConnectorFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/DialogServiceAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/DialogServiceTurnState.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/DialogServiceTurnStateManager.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/DynamicGrammarBuilder.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/EnumTranslation.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/HeaderNames.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/IAuthentication.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/IntentConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/IntentServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/QueryParameterNames.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/RecognitionEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/RecognizerConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/RequestSession.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/ActivityResponsePayload.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/DetailedSpeechPhrase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/Enums.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/IntentResponse.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/SimpleSpeechPhrase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/SpeechDetected.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/SpeechHypothesis.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/SpeechKeyword.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/SynthesisAudioMetadata.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/TranslationHypothesis.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/TranslationPhrase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/TranslationSynthesisEnd.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/TurnStatusPayload.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/ServiceRecognizerBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/ServiceTelemetryListener.Internal.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeakerRecognitionConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeakerRecognitionConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeakerServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechConnectionMessage.Internal.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechContext.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechServiceConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechSynthesisAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechSynthesisConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesisAdapterBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesisContext.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesisEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesisRestAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesisTurn.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesizerConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/TranscriberConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationConnectionConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationConnectionMessage.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationManager.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationRequestSession.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationServiceAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationTranslatorConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationTranslatorEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationTranslatorInterfaces.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationTranslatorRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationWebsocketMessageFormatter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/ServiceMessages/src/common.speech/Transcription/ServiceMessages/CommandResponsePayload.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/ServiceMessages/src/common.speech/Transcription/ServiceMessages/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/ServiceMessages/src/common.speech/Transcription/ServiceMessages/ParticipantResponsePayload.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/ServiceMessages/src/common.speech/Transcription/ServiceMessages/TranslationResponsePayload.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/TranscriberRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/TranscriptionServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/TranslationConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/TranslationServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/TranslationStatus.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/VoiceServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/WebsocketMessageFormatter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/AudioSourceEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/BackgroundError.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/ChunkedArrayBufferStream.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/ConnectionEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/ConnectionMessage.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/ConnectionOpenResponse.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/DeferralMap.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/DialogEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Error.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/EventSource.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Events.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Guid.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/IConnection.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/List.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/OCSPEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/PlatformEvent.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Promise.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Queue.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/RawWebsocketMessage.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/RiffPcmEncoder.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Stream.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/StringUtils.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Timeout.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ActivityReceivedEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioFileWriter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioInputStream.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioOutputFormat.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioOutputStream.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioStreamFormat.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/BaseAudioPlayer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/PullAudioInputStreamCallback.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/PushAudioOutputStreamCallback.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/SpeakerAudioDestination.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/AutoDetectSourceLanguageConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/AutoDetectSourceLanguageResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/AvatarConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/AvatarEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/AvatarSynthesizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/AvatarVideoFormat.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/AvatarWebRTCConnectionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/BotFrameworkConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CancellationDetails.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CancellationDetailsBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CancellationErrorCodes.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CancellationEventArgsBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CancellationReason.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Connection.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ConnectionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ConnectionMessage.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ConnectionMessageEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Contracts.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ConversationTranscriptionCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CustomCommandsConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Diagnostics.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/DialogServiceConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/DialogServiceConnector.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/IntentRecognitionCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/IntentRecognitionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/IntentRecognitionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/IntentRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/KeywordRecognitionModel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/LanguageIdMode.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/LanguageUnderstandingModel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/LogLevel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/MeetingTranscriptionCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/NoMatchDetails.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/NoMatchReason.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/OutputFormat.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PhraseListGrammar.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ProfanityOption.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PronunciationAssessmentConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PronunciationAssessmentGradingSystem.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PronunciationAssessmentGranularity.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PronunciationAssessmentResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PropertyCollection.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PropertyId.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/RecognitionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/RecognitionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Recognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ResultReason.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ServiceEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ServicePropertyChannel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SessionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SourceLanguageConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeakerIdentificationModel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeakerRecognitionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeakerRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeakerVerificationModel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechRecognitionCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechRecognitionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechRecognitionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisBookmarkEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisBoundaryType.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisOutputFormat.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisVisemeEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisWordBoundaryEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechTranslationConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SynthesisResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SynthesisVoicesResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Synthesizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/Conversation.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationCommon.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationExpirationEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationParticipantsChangedEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationTranscriber.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationTranscriptionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationTranslationCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationTranslationEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationTranslationResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationTranslator.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/IParticipant.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/Meeting.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/MeetingTranscriber.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/MeetingTranscriptionCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ParticipantChangedReason.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationRecognitionCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationRecognitionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationRecognitionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationSynthesisEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationSynthesisResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Translations.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TurnStatusReceivedEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceInfo.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfile.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfileClient.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfileEnrollmentResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfilePhraseResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfileResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfileType.ts","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/uuid/dist/commonjs-browser/index.js","../node_modules/uuid/dist/commonjs-browser/md5.js","../node_modules/uuid/dist/commonjs-browser/native.js","../node_modules/uuid/dist/commonjs-browser/nil.js","../node_modules/uuid/dist/commonjs-browser/parse.js","../node_modules/uuid/dist/commonjs-browser/regex.js","../node_modules/uuid/dist/commonjs-browser/rng.js","../node_modules/uuid/dist/commonjs-browser/sha1.js","../node_modules/uuid/dist/commonjs-browser/stringify.js","../node_modules/uuid/dist/commonjs-browser/v1.js","../node_modules/uuid/dist/commonjs-browser/v3.js","../node_modules/uuid/dist/commonjs-browser/v35.js","../node_modules/uuid/dist/commonjs-browser/v4.js","../node_modules/uuid/dist/commonjs-browser/v5.js","../node_modules/uuid/dist/commonjs-browser/validate.js","../node_modules/uuid/dist/commonjs-browser/version.js","../node_modules/@babel/runtime/helpers/extends.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/clsx/dist/clsx.mjs","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router/index.ts","../node_modules/@mui/system/esm/GlobalStyles/GlobalStyles.js","../node_modules/@mui/material/GlobalStyles/GlobalStyles.js","../node_modules/@mui/material/CssBaseline/CssBaseline.js","../node_modules/@mui/private-theming/useTheme/ThemeContext.js","../node_modules/@mui/private-theming/useTheme/useTheme.js","../node_modules/@mui/private-theming/ThemeProvider/nested.js","../node_modules/@mui/private-theming/ThemeProvider/ThemeProvider.js","../node_modules/@mui/system/esm/ThemeProvider/ThemeProvider.js","../node_modules/@mui/material/styles/ThemeProvider.js","../node_modules/@mui/system/esm/createBox.js","../node_modules/@mui/material/Box/boxClasses.js","../node_modules/@mui/material/Box/Box.js","../node_modules/@mui/material/styles/getOverlayAlpha.js","../node_modules/@mui/material/Paper/paperClasses.js","../node_modules/@mui/material/Paper/Paper.js","../node_modules/@mui/material/AppBar/appBarClasses.js","../node_modules/@mui/material/AppBar/AppBar.js","../node_modules/@mui/material/Toolbar/toolbarClasses.js","../node_modules/@mui/material/Toolbar/Toolbar.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@mui/material/ButtonBase/Ripple.js","../node_modules/@mui/material/ButtonBase/touchRippleClasses.js","../node_modules/@mui/material/ButtonBase/TouchRipple.js","../node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","../node_modules/@mui/material/ButtonBase/ButtonBase.js","../node_modules/@mui/material/Button/buttonClasses.js","../node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js","../node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js","../node_modules/@mui/material/Button/Button.js","../node_modules/@mui/system/esm/createStyled.js","../node_modules/@mui/system/esm/styled.js","../node_modules/@mui/system/esm/Container/createContainer.js","../node_modules/@mui/material/Container/Container.js","../node_modules/@mui/material/Typography/typographyClasses.js","../node_modules/@mui/material/Typography/Typography.js","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/universal-cookie/esm/index.mjs","context/Username.js","context/Token.js","../node_modules/@mui/material/Divider/dividerClasses.js","../node_modules/@mui/material/Divider/Divider.js","../node_modules/@mui/icons-material/esm/Logout.js","components/Message.js","components/MessageType.js","components/AppAppBar.js","components/Copyright.js","../node_modules/@mui/material/zero-styled/index.js","../node_modules/@mui/base/utils/resolveComponentProps.js","../node_modules/@mui/base/utils/extractEventHandlers.js","../node_modules/@mui/base/utils/omitEventHandlers.js","../node_modules/@mui/base/utils/mergeSlotProps.js","../node_modules/@mui/base/utils/isHostComponent.js","../node_modules/@mui/base/utils/appendOwnerState.js","../node_modules/@mui/material/utils/useSlot.js","../node_modules/@mui/material/Alert/alertClasses.js","../node_modules/@mui/material/IconButton/iconButtonClasses.js","../node_modules/@mui/material/IconButton/IconButton.js","../node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js","../node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js","../node_modules/@mui/material/internal/svg-icons/ErrorOutline.js","../node_modules/@mui/material/internal/svg-icons/InfoOutlined.js","../node_modules/@mui/material/internal/svg-icons/Close.js","../node_modules/@mui/material/Alert/Alert.js","components/Alert.js","page/Layout.js","../node_modules/@mui/material/styles/useTheme.js","../node_modules/@mui/material/Grid/GridContext.js","../node_modules/@mui/material/Grid/gridClasses.js","../node_modules/@mui/material/Grid/Grid.js","../node_modules/@mui/system/esm/Stack/createStack.js","../node_modules/@mui/material/Stack/Stack.js","../node_modules/@mui/material/Fab/fabClasses.js","../node_modules/@mui/material/Fab/Fab.js","../node_modules/@mui/material/InputBase/utils.js","../node_modules/@mui/material/FormControl/FormControlContext.js","../node_modules/@mui/material/FormControl/formControlClasses.js","../node_modules/@mui/material/FormControl/FormControl.js","../node_modules/@mui/material/FormControl/formControlState.js","../node_modules/@mui/material/FormControl/useFormControl.js","../node_modules/@mui/material/FormLabel/formLabelClasses.js","../node_modules/@mui/material/FormLabel/FormLabel.js","../node_modules/@mui/material/InputLabel/inputLabelClasses.js","../node_modules/@mui/material/InputLabel/InputLabel.js","../node_modules/@mui/base/utils/useSlotProps.js","../node_modules/@mui/material/List/ListContext.js","../node_modules/@mui/material/List/listClasses.js","../node_modules/@mui/material/List/List.js","../node_modules/@mui/utils/getScrollbarSize/getScrollbarSize.js","../node_modules/@mui/material/utils/getScrollbarSize.js","../node_modules/@mui/material/MenuList/MenuList.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/@mui/material/transitions/utils.js","../node_modules/@mui/material/Grow/Grow.js","../node_modules/@mui/base/unstable_useModal/ModalManager.js","../node_modules/@mui/base/unstable_useModal/useModal.js","../node_modules/@mui/base/FocusTrap/FocusTrap.js","../node_modules/@mui/base/Portal/Portal.js","../node_modules/@mui/material/Fade/Fade.js","../node_modules/@mui/material/Backdrop/backdropClasses.js","../node_modules/@mui/material/Backdrop/Backdrop.js","../node_modules/@mui/material/Modal/modalClasses.js","../node_modules/@mui/material/Modal/Modal.js","../node_modules/@mui/material/Popover/popoverClasses.js","../node_modules/@mui/material/Popover/Popover.js","../node_modules/@mui/material/Menu/menuClasses.js","../node_modules/@mui/material/Menu/Menu.js","../node_modules/@mui/material/NativeSelect/nativeSelectClasses.js","../node_modules/@mui/material/NativeSelect/NativeSelectInput.js","../node_modules/@mui/material/Select/selectClasses.js","../node_modules/@mui/material/Select/SelectInput.js","../node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js","../node_modules/@mui/base/TextareaAutosize/TextareaAutosize.js","../node_modules/@mui/material/InputBase/inputBaseClasses.js","../node_modules/@mui/material/InputBase/InputBase.js","../node_modules/@mui/material/Input/inputClasses.js","../node_modules/@mui/material/Input/Input.js","../node_modules/@mui/material/FilledInput/filledInputClasses.js","../node_modules/@mui/material/FilledInput/FilledInput.js","../node_modules/@mui/material/OutlinedInput/NotchedOutline.js","../node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js","../node_modules/@mui/material/OutlinedInput/OutlinedInput.js","../node_modules/@mui/material/Select/Select.js","../node_modules/@mui/material/ListItemIcon/listItemIconClasses.js","../node_modules/@mui/material/ListItemText/listItemTextClasses.js","../node_modules/@mui/material/MenuItem/menuItemClasses.js","../node_modules/@mui/material/MenuItem/MenuItem.js","../node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js","../node_modules/@mui/material/FormControlLabel/FormControlLabel.js","../node_modules/@mui/material/internal/switchBaseClasses.js","../node_modules/@mui/material/internal/SwitchBase.js","../node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js","../node_modules/@mui/material/internal/svg-icons/CheckBox.js","../node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js","../node_modules/@mui/material/Checkbox/checkboxClasses.js","../node_modules/@mui/material/Checkbox/Checkbox.js","../node_modules/@mui/material/FormHelperText/formHelperTextClasses.js","../node_modules/@mui/material/FormHelperText/FormHelperText.js","../node_modules/@mui/material/TextField/textFieldClasses.js","../node_modules/@mui/material/TextField/TextField.js","../node_modules/@mui/icons-material/esm/Save.js","../node_modules/@mui/icons-material/esm/SwitchLeftTwoTone.js","../node_modules/@mui/icons-material/esm/Delete.js","../node_modules/@mui/icons-material/esm/Mic.js","../node_modules/@mui/icons-material/esm/MicOff.js","context/Region.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","env/env.prod.js","env/Env.js","page/Speech/Speech.js","../node_modules/@mui/material/internal/svg-icons/Person.js","../node_modules/@mui/material/Avatar/avatarClasses.js","../node_modules/@mui/material/Avatar/Avatar.js","page/Login/Login.js","page/Register/Register.js","components/Logo.js","../node_modules/@mui/material/Card/cardClasses.js","../node_modules/@mui/material/Card/Card.js","components/Highlights.js","components/YoutubeEmbed.js","page/LandingPage/LandingPage.js","reportWebVitals.js","page/Edit/Edit.js","index.js"],"sourcesContent":["/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? element.parent.children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isBrowser = \"object\" !== 'undefined';\nvar hasOwn = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nif (!isBrowser) {\n withEmotionCache = function withEmotionCache(func) {\n return function (props) {\n var cache = useContext(EmotionCacheContext);\n\n if (cache === null) {\n // yes, we're potentially creating this on every render\n // it doesn't actually matter though since it's only on the server\n // so there will only every be a single render\n // that could change in the future because of suspense and etc. but for now,\n // this works and i don't want to optimise for a future thing that we aren't sure about\n cache = createCache({\n key: 'css'\n });\n return /*#__PURE__*/React.createElement(EmotionCacheContext.Provider, {\n value: cache\n }, func(props, cache));\n } else {\n return func(props, cache);\n }\n };\n };\n}\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/React.forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n // The match may be something like 'Object.createEmotionProps' or\n // 'Loader.prototype.render'\n var parts = functionName.split('.');\n return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n // V8\n var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n if (match) return getLastPart(match[1]); // Safari / Firefox\n\n match = /^([A-Za-z0-9$.]+)@/.exec(line);\n if (match) return getLastPart(match[1]);\n return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n if (!stackTrace) return undefined;\n var lines = stackTrace.split('\\n');\n\n for (var i = 0; i < lines.length; i++) {\n var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n // uppercase letter\n\n if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n }\n\n return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwn.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n // the label hasn't already been computed\n\n if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n var label = getLabelFromStackTrace(new Error().stack);\n if (label) newProps[labelPropName] = label;\n }\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwn.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isBrowser as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isBrowser$1 } from './emotion-element-43c6fea0.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-43c6fea0.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.11.4\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/emotion-react.cjs.mjs\",\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.mjs\",\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": {\n\t\t\ttypes: {\n\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t},\n\t\t\t\"default\": \"./macro.js\"\n\t\t}\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.*\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.11.0\",\n\t\t\"@emotion/cache\": \"^11.11.0\",\n\t\t\"@emotion/serialize\": \"^1.1.3\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.1\",\n\t\t\"@emotion/utils\": \"^1.2.1\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.1\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.11.2\",\n\t\t\"@emotion/css-prettifier\": \"1.1.3\",\n\t\t\"@emotion/server\": \"11.11.0\",\n\t\t\"@emotion/styled\": \"11.11.0\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": {\n\t\t\t\t\ttypes: {\n\t\t\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t\t\t},\n\t\t\t\t\t\"default\": \"./macro.js\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwn.call(props, 'css')) {\n // $FlowFixMe\n return React.createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n\n if (!isBrowser$1) {\n var _ref;\n\n var serializedNames = serialized.name;\n var serializedStyles = serialized.styles;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n serializedStyles += next.styles;\n next = next.next;\n }\n\n var shouldCache = cache.compat === true;\n var rules = cache.insert(\"\", {\n name: serializedNames,\n styles: serializedStyles\n }, cache.sheet, shouldCache);\n\n if (shouldCache) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref = {}, _ref[\"data-emotion\"] = cache.key + \"-global \" + serializedNames, _ref.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref.nonce = cache.sheet.nonce, _ref));\n } // yes, i know these hooks are used conditionally\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from component.');\n }\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n if (isBrowser && !isTestEnv) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext = // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m20.45 6 .49-1.06L22 4.45c.39-.18.39-.73 0-.91l-1.06-.49L20.45 2c-.18-.39-.73-.39-.91 0l-.49 1.06-1.05.49c-.39.18-.39.73 0 .91l1.06.49.49 1.05c.17.39.73.39.9 0M8.95 6l.49-1.06 1.06-.49c.39-.18.39-.73 0-.91l-1.06-.48L8.95 2c-.17-.39-.73-.39-.9 0l-.49 1.06-1.06.49c-.39.18-.39.73 0 .91l1.06.49L8.05 6c.17.39.73.39.9 0m10.6 7.5-.49 1.06-1.06.49c-.39.18-.39.73 0 .91l1.06.49.49 1.06c.18.39.73.39.91 0l.49-1.06 1.05-.5c.39-.18.39-.73 0-.91l-1.06-.49-.49-1.06c-.17-.38-.73-.38-.9.01m-1.84-4.38-2.83-2.83a.9959.9959 0 0 0-1.41 0L2.29 17.46c-.39.39-.39 1.02 0 1.41l2.83 2.83c.39.39 1.02.39 1.41 0L17.7 10.53c.4-.38.4-1.02.01-1.41m-3.5 2.09L12.8 9.8l1.38-1.38 1.41 1.41z\"\n}), 'AutoFixHighRounded');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m20.99 17.99-4.94-4.94-2.12 2.12 4.94 4.94c.59.59 1.54.59 2.12 0 .58-.59.58-1.54 0-2.12M17.65 10c1.93 0 3.5-1.57 3.5-3.5 0-.58-.16-1.12-.41-1.6l-2.7 2.7-1.49-1.49 2.7-2.7c-.48-.25-1.02-.41-1.6-.41-1.93 0-3.5 1.57-3.5 3.5 0 .41.08.8.21 1.16l-1.85 1.85-1.78-1.78c.39-.39.39-1.02 0-1.41l-.71-.71 2.12-2.12c-1.17-1.17-3.07-1.17-4.24 0L5.08 6.32c-.39.39-.39 1.02 0 1.41l.71.71H3.25c-.19 0-.37.07-.5.21-.28.28-.28.72 0 1l2.54 2.54c.28.28.72.28 1 0 .13-.13.21-.31.21-.5V9.15l.7.7c.39.39 1.02.39 1.41 0l1.78 1.78-6.35 6.35c-.59.59-.59 1.54 0 2.12.59.59 1.54.59 2.12 0L16.48 9.79c.37.13.76.21 1.17.21\"\n}), 'ConstructionRounded');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2M9 6c0-1.66 1.34-3 3-3s3 1.34 3 3v2H9zm9 14H6V10h12zm-6-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2\"\n}), 'LockOutlined');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19.88 18.47c.48-.77.75-1.67.69-2.66-.13-2.15-1.84-3.97-3.97-4.2-2.72-.3-5.02 1.81-5.02 4.47 0 2.49 2.01 4.5 4.49 4.5.88 0 1.7-.26 2.39-.7l2.41 2.41c.39.39 1.03.39 1.42 0 .39-.39.39-1.03 0-1.42zm-3.8.11c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5m-.36-8.5c-.74.02-1.45.18-2.1.45l-.55-.83-3.08 5.01c-.36.58-1.17.64-1.61.13l-2.12-2.47-3.06 4.9c-.31.49-.97.62-1.44.28-.42-.31-.54-.89-.26-1.34l3.78-6.05c.36-.57 1.17-.63 1.61-.12L9 12.5l3.18-5.17c.38-.62 1.28-.64 1.68-.03zm2.59.5c-.64-.28-1.33-.45-2.05-.49L20.8 2.9c.31-.49.97-.61 1.43-.27.43.31.54.9.26 1.34z\"\n}), 'QueryStatsRounded');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6\"\n}), 'Settings');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m18.04 7.99-.63-1.4-1.4-.63c-.39-.18-.39-.73 0-.91l1.4-.63.63-1.4c.18-.39.73-.39.91 0l.63 1.4 1.4.63c.39.18.39.73 0 .91l-1.4.63-.63 1.4c-.17.39-.73.39-.91 0m3.24 4.73-.32-.72c-.18-.39-.73-.39-.91 0l-.32.72-.73.32c-.39.18-.39.73 0 .91l.72.32.32.73c.18.39.73.39.91 0l.32-.72.73-.32c.39-.18.39-.73 0-.91zm-5.04 1.65 1.23.93c.4.3.51.86.26 1.3l-1.62 2.8c-.25.44-.79.62-1.25.42l-1.43-.6c-.2.13-.42.26-.64.37l-.19 1.54c-.06.5-.49.88-.99.88H8.38c-.5 0-.93-.38-.99-.88l-.19-1.54c-.22-.11-.43-.23-.64-.37l-1.43.6c-.46.2-1 .02-1.25-.42l-1.62-2.8c-.25-.44-.14-.99.26-1.3l1.23-.93V14c0-.12 0-.25.01-.37l-1.23-.93c-.4-.3-.51-.86-.26-1.3l1.62-2.8c.25-.44.79-.62 1.25-.42l1.43.6c.2-.13.42-.26.64-.37l.19-1.54c.05-.49.48-.87.98-.87h3.23c.5 0 .93.38.99.88l.19 1.54c.22.11.43.23.64.37l1.43-.6c.46-.2 1-.02 1.25.42l1.62 2.8c.25.44.14.99-.26 1.3l-1.23.93c.01.12.01.24.01.37s0 .24-.01.36M13 14c0-1.66-1.34-3-3-3s-3 1.34-3 3 1.34 3 3 3 3-1.34 3-3\"\n}), 'SettingsSuggestRounded');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)([/*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M21 12.22C21 6.73 16.74 3 12 3c-4.69 0-9 3.65-9 9.28-.6.34-1 .98-1 1.72v2c0 1.1.9 2 2 2 .55 0 1-.45 1-1v-4.81c0-3.83 2.95-7.18 6.78-7.29 3.96-.12 7.22 3.06 7.22 7V19h-7c-.55 0-1 .45-1 1s.45 1 1 1h7c1.1 0 2-.9 2-2v-1.22c.59-.31 1-.92 1-1.64v-2.3c0-.7-.41-1.31-1-1.62\"\n}, \"0\"), /*#__PURE__*/(0, _jsxRuntime.jsx)(\"circle\", {\n cx: \"9\",\n cy: \"13\",\n r: \"1\"\n}, \"1\"), /*#__PURE__*/(0, _jsxRuntime.jsx)(\"circle\", {\n cx: \"15\",\n cy: \"13\",\n r: \"1\"\n}, \"2\"), /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M18 11.03C17.52 8.18 15.04 6 12.05 6c-3.03 0-6.29 2.51-6.03 6.45 2.47-1.01 4.33-3.21 4.86-5.89 1.31 2.63 4 4.44 7.12 4.47\"\n}, \"3\")], 'SupportAgentRounded');","\"use strict\";\n\"use client\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = exports.default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M13.12 2.06 7.58 7.6c-.37.37-.58.88-.58 1.41V19c0 1.1.9 2 2 2h9c.8 0 1.52-.48 1.84-1.21l3.26-7.61C23.94 10.2 22.49 8 20.34 8h-5.65l.95-4.58c.1-.5-.05-1.01-.41-1.37-.59-.58-1.53-.58-2.11.01M3 21c1.1 0 2-.9 2-2v-8c0-1.1-.9-2-2-2s-2 .9-2 2v8c0 1.1.9 2 2 2\"\n}), 'ThumbUpAltRounded');","\"use strict\";\n'use client';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","const common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","const grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#f5f5f5',\n A200: '#eeeeee',\n A400: '#bdbdbd',\n A700: '#616161'\n};\nexport default grey;","const purple = {\n 50: '#f3e5f5',\n 100: '#e1bee7',\n 200: '#ce93d8',\n 300: '#ba68c8',\n 400: '#ab47bc',\n 500: '#9c27b0',\n 600: '#8e24aa',\n 700: '#7b1fa2',\n 800: '#6a1b9a',\n 900: '#4a148c',\n A100: '#ea80fc',\n A200: '#e040fb',\n A400: '#d500f9',\n A700: '#aa00ff'\n};\nexport default purple;","const red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","const orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","const blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n 50: '#e1f5fe',\n 100: '#b3e5fc',\n 200: '#81d4fa',\n 300: '#4fc3f7',\n 400: '#29b6f6',\n 500: '#03a9f4',\n 600: '#039be5',\n 700: '#0288d1',\n 800: '#0277bd',\n 900: '#01579b',\n A100: '#80d8ff',\n A200: '#40c4ff',\n A400: '#00b0ff',\n A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"mode\", \"contrastThreshold\", \"tonalOffset\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport { darken, getContrastRatio, lighten } from '@mui/system/colorManipulator';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport purple from '../colors/purple';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport lightBlue from '../colors/lightBlue';\nimport green from '../colors/green';\nexport const light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.6)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: common.white\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport const dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: '#121212',\n default: '#121212'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\nfunction getDefaultPrimary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: blue[200],\n light: blue[50],\n dark: blue[400]\n };\n }\n return {\n main: blue[700],\n light: blue[400],\n dark: blue[800]\n };\n}\nfunction getDefaultSecondary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: purple[200],\n light: purple[50],\n dark: purple[400]\n };\n }\n return {\n main: purple[500],\n light: purple[300],\n dark: purple[700]\n };\n}\nfunction getDefaultError(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: red[500],\n light: red[300],\n dark: red[700]\n };\n }\n return {\n main: red[700],\n light: red[400],\n dark: red[800]\n };\n}\nfunction getDefaultInfo(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: lightBlue[400],\n light: lightBlue[300],\n dark: lightBlue[700]\n };\n }\n return {\n main: lightBlue[700],\n light: lightBlue[500],\n dark: lightBlue[900]\n };\n}\nfunction getDefaultSuccess(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: green[400],\n light: green[300],\n dark: green[700]\n };\n }\n return {\n main: green[800],\n light: green[500],\n dark: green[900]\n };\n}\nfunction getDefaultWarning(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: orange[400],\n light: orange[300],\n dark: orange[700]\n };\n }\n return {\n main: '#ed6c02',\n // closest to orange[800] that pass 3:1.\n light: orange[500],\n dark: orange[900]\n };\n}\nexport default function createPalette(palette) {\n const {\n mode = 'light',\n contrastThreshold = 3,\n tonalOffset = 0.2\n } = palette,\n other = _objectWithoutPropertiesLoose(palette, _excluded);\n const primary = palette.primary || getDefaultPrimary(mode);\n const secondary = palette.secondary || getDefaultSecondary(mode);\n const error = palette.error || getDefaultError(mode);\n const info = palette.info || getDefaultInfo(mode);\n const success = palette.success || getDefaultSuccess(mode);\n const warning = palette.warning || getDefaultWarning(mode);\n\n // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n function getContrastText(background) {\n const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n if (process.env.NODE_ENV !== 'production') {\n const contrast = getContrastRatio(background, contrastText);\n if (contrast < 3) {\n console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n return contrastText;\n }\n const augmentColor = ({\n color,\n name,\n mainShade = 500,\n lightShade = 300,\n darkShade = 700\n }) => {\n color = _extends({}, color);\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n if (!color.hasOwnProperty('main')) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n }\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n }\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n return color;\n };\n const modes = {\n dark,\n light\n };\n if (process.env.NODE_ENV !== 'production') {\n if (!modes[mode]) {\n console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n }\n }\n const paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: _extends({}, common),\n // prevent mutable object.\n // The palette mode, can be light or dark.\n mode,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor({\n color: primary,\n name: 'primary'\n }),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor({\n color: secondary,\n name: 'secondary',\n mainShade: 'A400',\n lightShade: 'A200',\n darkShade: 'A700'\n }),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor({\n color: error,\n name: 'error'\n }),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor({\n color: warning,\n name: 'warning'\n }),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor({\n color: info,\n name: 'info'\n }),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor({\n color: success,\n name: 'success'\n }),\n // The grey colors.\n grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText,\n // Generate a rich color object.\n augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset\n }, modes[mode]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"];\nimport deepmerge from '@mui/utils/deepmerge';\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n const _ref = typeof typography === 'function' ? typography(palette) : typography,\n {\n fontFamily = defaultFontFamily,\n // The default font size of the Material Specification.\n fontSize = 14,\n // px\n fontWeightLight = 300,\n fontWeightRegular = 400,\n fontWeightMedium = 500,\n fontWeightBold = 700,\n // Tell MUI what's the font-size on the html element.\n // 16px is the default font-size used by browsers.\n htmlFontSize = 16,\n // Apply the CSS properties to all the variants.\n allVariants,\n pxToRem: pxToRem2\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('MUI: `fontSize` is required to be a number.');\n }\n if (typeof htmlFontSize !== 'number') {\n console.error('MUI: `htmlFontSize` is required to be a number.');\n }\n }\n const coef = fontSize / 14;\n const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => _extends({\n fontFamily,\n fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: `${round(letterSpacing / size)}em`\n } : {}, casing, allVariants);\n const variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n // TODO v6: Remove handling of 'inherit' variant from the theme as it is already handled in Material UI's Typography component. Also, remember to remove the associated types.\n inherit: {\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n letterSpacing: 'inherit'\n }\n };\n return deepmerge(_extends({\n htmlFontSize,\n pxToRem,\n fontFamily,\n fontSize,\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"duration\", \"easing\", \"delay\"];\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n const constant = height / 36;\n\n // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nexport default function createTransitions(inputTransitions) {\n const mergedEasing = _extends({}, easing, inputTransitions.easing);\n const mergedDuration = _extends({}, duration, inputTransitions.duration);\n const create = (props = ['all'], options = {}) => {\n const {\n duration: durationOption = mergedDuration.standard,\n easing: easingOption = mergedEasing.easeInOut,\n delay = 0\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n const isString = value => typeof value === 'string';\n // IE11 support, replace with Number.isNaN\n // eslint-disable-next-line no-restricted-globals\n const isNumber = value => !isNaN(parseFloat(value));\n if (!isString(props) && !Array.isArray(props)) {\n console.error('MUI: Argument \"props\" must be a string or Array.');\n }\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n }\n if (!isString(easingOption)) {\n console.error('MUI: Argument \"easing\" must be a string.');\n }\n if (!isNumber(delay) && !isString(delay)) {\n console.error('MUI: Argument \"delay\" must be a number or a string.');\n }\n if (typeof options !== 'object') {\n console.error(['MUI: Secong argument of transition.create must be an object.', \"Arguments should be either `create('prop1', options)` or `create(['prop1', 'prop2'], options)`\"].join('\\n'));\n }\n if (Object.keys(other).length !== 0) {\n console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n }\n }\n return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n };\n return _extends({\n getAutoHeightDuration,\n create\n }, inputTransitions, {\n easing: mergedEasing,\n duration: mergedDuration\n });\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n mobileStepper: 1000,\n fab: 1050,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\nconst _excluded = [\"breakpoints\", \"mixins\", \"spacing\", \"palette\", \"transitions\", \"typography\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport styleFunctionSx, { unstable_defaultSxConfig as defaultSxConfig } from '@mui/system/styleFunctionSx';\nimport systemCreateTheme from '@mui/system/createTheme';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport createTransitions from './createTransitions';\nimport zIndex from './zIndex';\nfunction createTheme(options = {}, ...args) {\n const {\n mixins: mixinsInput = {},\n palette: paletteInput = {},\n transitions: transitionsInput = {},\n typography: typographyInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (options.vars) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : _formatMuiErrorMessage(18));\n }\n const palette = createPalette(paletteInput);\n const systemTheme = systemCreateTheme(options);\n let muiTheme = deepmerge(systemTheme, {\n mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n palette,\n // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n shadows: shadows.slice(),\n typography: createTypography(palette, typographyInput),\n transitions: createTransitions(transitionsInput),\n zIndex: _extends({}, zIndex)\n });\n muiTheme = deepmerge(muiTheme, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n const traverse = (node, component) => {\n let key;\n\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (key in node) {\n const child = node[key];\n if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n const stateClass = generateUtilityClass('', key);\n console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n root: {\n [`&.${stateClass}`]: child\n }\n }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n }\n // Remove the style to prevent global conflicts.\n node[key] = {};\n }\n }\n };\n Object.keys(muiTheme.components).forEach(component => {\n const styleOverrides = muiTheme.components[component].styleOverrides;\n if (styleOverrides && component.indexOf('Mui') === 0) {\n traverse(styleOverrides, component);\n }\n });\n }\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n }\n }\n return createTheme(...args);\n}\nexport default createTheme;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, mixins) {\n return _extends({\n toolbar: {\n minHeight: 56,\n [breakpoints.up('xs')]: {\n '@media (orientation: landscape)': {\n minHeight: 48\n }\n },\n [breakpoints.up('sm')]: {\n minHeight: 64\n }\n }\n }, mixins);\n}","'use client';\n\nimport createTheme from './createTheme';\nconst defaultTheme = createTheme();\nexport default defaultTheme;","export default '$$material';","'use client';\n\nimport createStyled, { shouldForwardProp } from '@mui/system/createStyled';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport const rootShouldForwardProp = prop => shouldForwardProp(prop) && prop !== 'classes';\nexport const slotShouldForwardProp = shouldForwardProp;\nconst styled = createStyled({\n themeId: THEME_ID,\n defaultTheme,\n rootShouldForwardProp\n});\nexport default styled;","'use client';\n\nimport systemUseThemeProps from '@mui/system/useThemeProps';\nimport defaultTheme from './defaultTheme';\nimport THEME_ID from './identifier';\nexport default function useThemeProps({\n props,\n name\n}) {\n return systemUseThemeProps({\n props,\n name,\n defaultTheme,\n themeId: THEME_ID\n });\n}","import capitalize from '@mui/utils/capitalize';\nexport default capitalize;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSvgIconUtilityClass(slot) {\n return generateUtilityClass('MuiSvgIcon', slot);\n}\nconst svgIconClasses = generateUtilityClasses('MuiSvgIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);\nexport default svgIconClasses;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"inheritViewBox\", \"titleAccess\", \"viewBox\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getSvgIconUtilityClass } from './svgIconClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n color,\n fontSize,\n classes\n } = ownerState;\n const slots = {\n root: ['root', color !== 'inherit' && `color${capitalize(color)}`, `fontSize${capitalize(fontSize)}`]\n };\n return composeClasses(slots, getSvgIconUtilityClass, classes);\n};\nconst SvgIconRoot = styled('svg', {\n name: 'MuiSvgIcon',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'inherit' && styles[`color${capitalize(ownerState.color)}`], styles[`fontSize${capitalize(ownerState.fontSize)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _theme$transitions, _theme$transitions$cr, _theme$transitions2, _theme$typography, _theme$typography$pxT, _theme$typography2, _theme$typography2$px, _theme$typography3, _theme$typography3$px, _palette$ownerState$c, _palette, _palette2, _palette3;\n return {\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n // the will define the property that has `currentColor`\n // e.g. heroicons uses fill=\"none\" and stroke=\"currentColor\"\n fill: ownerState.hasSvgAsChild ? undefined : 'currentColor',\n flexShrink: 0,\n transition: (_theme$transitions = theme.transitions) == null || (_theme$transitions$cr = _theme$transitions.create) == null ? void 0 : _theme$transitions$cr.call(_theme$transitions, 'fill', {\n duration: (_theme$transitions2 = theme.transitions) == null || (_theme$transitions2 = _theme$transitions2.duration) == null ? void 0 : _theme$transitions2.shorter\n }),\n fontSize: {\n inherit: 'inherit',\n small: ((_theme$typography = theme.typography) == null || (_theme$typography$pxT = _theme$typography.pxToRem) == null ? void 0 : _theme$typography$pxT.call(_theme$typography, 20)) || '1.25rem',\n medium: ((_theme$typography2 = theme.typography) == null || (_theme$typography2$px = _theme$typography2.pxToRem) == null ? void 0 : _theme$typography2$px.call(_theme$typography2, 24)) || '1.5rem',\n large: ((_theme$typography3 = theme.typography) == null || (_theme$typography3$px = _theme$typography3.pxToRem) == null ? void 0 : _theme$typography3$px.call(_theme$typography3, 35)) || '2.1875rem'\n }[ownerState.fontSize],\n // TODO v5 deprecate, v6 remove for sx\n color: (_palette$ownerState$c = (_palette = (theme.vars || theme).palette) == null || (_palette = _palette[ownerState.color]) == null ? void 0 : _palette.main) != null ? _palette$ownerState$c : {\n action: (_palette2 = (theme.vars || theme).palette) == null || (_palette2 = _palette2.action) == null ? void 0 : _palette2.active,\n disabled: (_palette3 = (theme.vars || theme).palette) == null || (_palette3 = _palette3.action) == null ? void 0 : _palette3.disabled,\n inherit: undefined\n }[ownerState.color]\n };\n});\nconst SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiSvgIcon'\n });\n const {\n children,\n className,\n color = 'inherit',\n component = 'svg',\n fontSize = 'medium',\n htmlColor,\n inheritViewBox = false,\n titleAccess,\n viewBox = '0 0 24 24'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const hasSvgAsChild = /*#__PURE__*/React.isValidElement(children) && children.type === 'svg';\n const ownerState = _extends({}, props, {\n color,\n component,\n fontSize,\n instanceFontSize: inProps.fontSize,\n inheritViewBox,\n viewBox,\n hasSvgAsChild\n });\n const more = {};\n if (!inheritViewBox) {\n more.viewBox = viewBox;\n }\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(SvgIconRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n focusable: \"false\",\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : true,\n role: titleAccess ? 'img' : undefined,\n ref: ref\n }, more, other, hasSvgAsChild && children.props, {\n ownerState: ownerState,\n children: [hasSvgAsChild ? children.props.children : children, titleAccess ? /*#__PURE__*/_jsx(\"title\", {\n children: titleAccess\n }) : null]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Node passed into the SVG element.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n * @default 'inherit'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n * @default 'medium'\n */\n fontSize: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'large', 'medium', 'small']), PropTypes.string]),\n /**\n * Applies a color attribute to the SVG element.\n */\n htmlColor: PropTypes.string,\n /**\n * If `true`, the root node will inherit the custom `component`'s viewBox and the `viewBox`\n * prop will be ignored.\n * Useful when you want to reference a custom `component` and have `SvgIcon` pass that\n * `component`'s viewBox to the root node.\n * @default false\n */\n inheritViewBox: PropTypes.bool,\n /**\n * The shape-rendering attribute. The behavior of the different options is described on the\n * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n * If you are having issues with blurry icons you should investigate this prop.\n */\n shapeRendering: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Provides a human-readable title for the element that contains it.\n * https://www.w3.org/TR/SVG-access/#Equivalent\n */\n titleAccess: PropTypes.string,\n /**\n * Allows you to redefine what the coordinates without units mean inside an SVG element.\n * For example, if the SVG element is 500 (width) by 200 (height),\n * and you pass viewBox=\"0 0 50 20\",\n * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n * to bottom right (50,20) and each unit will be worth 10px.\n * @default '0 0 24 24'\n */\n viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default SvgIcon;","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport SvgIcon from '../SvgIcon';\n\n/**\n * Private module reserved for @mui packages.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createSvgIcon(path, displayName) {\n function Component(props, ref) {\n return /*#__PURE__*/_jsx(SvgIcon, _extends({\n \"data-testid\": `${displayName}Icon`,\n ref: ref\n }, props, {\n children: path\n }));\n }\n if (process.env.NODE_ENV !== 'production') {\n // Need to set `displayName` on the inner component for React.memo.\n // React prior to 16.14 ignores `displayName` on the wrapper.\n Component.displayName = `${displayName}Icon`;\n }\n Component.muiName = SvgIcon.muiName;\n return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}","import debounce from '@mui/utils/debounce';\nexport default debounce;","import createChainedFunction from '@mui/utils/createChainedFunction';\nexport default createChainedFunction;","import deprecatedPropType from '@mui/utils/deprecatedPropType';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import requirePropFactory from '@mui/utils/requirePropFactory';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import setRef from '@mui/utils/setRef';\nexport default setRef;","'use client';\n\nimport useId from '@mui/utils/useId';\nexport default useId;","import unsupportedProp from '@mui/utils/unsupportedProp';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","'use client';\n\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/ClassNameGenerator';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import isMuiElement from '@mui/utils/isMuiElement';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n var _muiName, _element$type;\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf( // For server components `muiName` is avaialble in element.type._payload.value.muiName\n // relevant info - https://github.com/facebook/react/blob/2807d781a08db8e9873687fccc25c0f12b4fb3d4/packages/react/src/ReactLazy.js#L45\n // eslint-disable-next-line no-underscore-dangle\n (_muiName = element.type.muiName) != null ? _muiName : (_element$type = element.type) == null || (_element$type = _element$type._payload) == null || (_element$type = _element$type.value) == null ? void 0 : _element$type.muiName) !== -1;\n}","import ownerDocument from '@mui/utils/ownerDocument';\nexport default ownerDocument;","import ownerWindow from '@mui/utils/ownerWindow';\nexport default ownerWindow;","'use client';\n\nimport useControlled from '@mui/utils/useControlled';\nexport default useControlled;","'use client';\n\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","'use client';\n\nimport useEnhancedEffect from '@mui/utils/useEnhancedEffect';\nexport default useEnhancedEffect;","'use client';\n\nimport useEventCallback from '@mui/utils/useEventCallback';\nexport default useEventCallback;","'use client';\n\nimport useForkRef from '@mui/utils/useForkRef';\nexport default useForkRef;","'use client';\n\n// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nimport { Timeout } from '../useTimeout/useTimeout';\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nconst hadFocusVisibleRecentlyTimeout = new Timeout();\nconst inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n const {\n type,\n tagName\n } = node;\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n if (node.isContentEditable) {\n return true;\n }\n return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n const {\n target\n } = event;\n try {\n return target.matches(':focus-visible');\n } catch (error) {\n // Browsers not implementing :focus-visible will throw a SyntaxError.\n // We use our own heuristic for those browsers.\n // Rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n }\n\n // No need for validFocusTarget check. The user does that by attaching it to\n // focusable events only.\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n const ref = React.useCallback(node => {\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n const isFocusVisibleRef = React.useRef(false);\n\n /**\n * Should be called if a blur event is fired\n */\n function handleBlurVisible() {\n // checking against potential state variable does not suffice if we focus and blur synchronously.\n // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n if (isFocusVisibleRef.current) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n hadFocusVisibleRecentlyTimeout.start(100, () => {\n hadFocusVisibleRecently = false;\n });\n isFocusVisibleRef.current = false;\n return true;\n }\n return false;\n }\n\n /**\n * Should be called if a blur event is fired\n */\n function handleFocusVisible(event) {\n if (isFocusVisible(event)) {\n isFocusVisibleRef.current = true;\n return true;\n }\n return false;\n }\n return {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref\n };\n}","'use client';\n\nimport useIsFocusVisible from '@mui/utils/useIsFocusVisible';\nexport default useIsFocusVisible;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Global } from '@emotion/react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction isEmpty(obj) {\n return obj === undefined || obj === null || Object.keys(obj).length === 0;\n}\nexport default function GlobalStyles(props) {\n const {\n styles,\n defaultTheme = {}\n } = props;\n const globalStyles = typeof styles === 'function' ? themeInput => styles(isEmpty(themeInput) ? defaultTheme : themeInput) : styles;\n return /*#__PURE__*/_jsx(Global, {\n styles: globalStyles\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes = {\n defaultTheme: PropTypes.object,\n styles: PropTypes.oneOfType([PropTypes.array, PropTypes.string, PropTypes.object, PropTypes.func])\n} : void 0;","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n return typeof tag === 'string' && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n\n if (typeof shouldForwardProp !== 'function' && isReal) {\n shouldForwardProp = tag.__emotion_forwardProp;\n }\n\n return shouldForwardProp;\n};\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n if (process.env.NODE_ENV !== 'production') {\n if (tag === undefined) {\n throw new Error('You are trying to create a styled element with an undefined component.\\nYou may have forgotten to import it.');\n }\n }\n\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n\n var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp('as');\n return function () {\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n if (identifierName !== undefined) {\n styles.push(\"label:\" + identifierName + \";\");\n }\n\n if (args[0] == null || args[0].raw === undefined) {\n styles.push.apply(styles, args);\n } else {\n if (process.env.NODE_ENV !== 'production' && args[0][0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles.push(args[0][0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n if (process.env.NODE_ENV !== 'production' && args[0][i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles.push(args[i], args[0][i]);\n }\n } // $FlowFixMe: we need to cast StatelessFunctionalComponent to our PrivateStyledComponent class\n\n\n var Styled = withEmotionCache(function (props, cache, ref) {\n var FinalTag = shouldUseAs && props.as || baseTag;\n var className = '';\n var classInterpolations = [];\n var mergedProps = props;\n\n if (props.theme == null) {\n mergedProps = {};\n\n for (var key in props) {\n mergedProps[key] = props[key];\n }\n\n mergedProps.theme = React.useContext(ThemeContext);\n }\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n className += cache.key + \"-\" + serialized.name;\n\n if (targetClassName !== undefined) {\n className += \" \" + targetClassName;\n }\n\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n var newProps = {};\n\n for (var _key in props) {\n if (shouldUseAs && _key === 'as') continue;\n\n if ( // $FlowFixMe\n finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n newProps.ref = ref;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof FinalTag === 'string'\n }), /*#__PURE__*/React.createElement(FinalTag, newProps));\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, 'toString', {\n value: function value() {\n if (targetClassName === undefined && process.env.NODE_ENV !== 'production') {\n return 'NO_COMPONENT_SELECTOR';\n } // $FlowFixMe: coerce undefined to string\n\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag, nextOptions) {\n return createStyled(nextTag, _extends({}, options, nextOptions, {\n shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n })).apply(void 0, styles);\n };\n\n return Styled;\n };\n};\n\nexport { createStyled as default };\n","import createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport 'react';\nimport '@emotion/is-prop-valid';\nimport '@emotion/react';\nimport '@emotion/utils';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nvar newStyled = createStyled.bind();\ntags.forEach(function (tagName) {\n // $FlowFixMe: we can ignore this because its exposed type is defined by the CreateStyled type\n newStyled[tagName] = newStyled(tagName);\n});\n\nexport { newStyled as default };\n","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\n\n// prepend: true moves MUI styles to the top of the so they're loaded first.\n// It allows developers to easily override MUI styles with other styling solutions, like CSS modules.\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nlet cache;\nif (typeof document === 'object') {\n cache = createCache({\n key: 'css',\n prepend: true\n });\n}\nexport default function StyledEngineProvider(props) {\n const {\n injectFirst,\n children\n } = props;\n return injectFirst && cache ? /*#__PURE__*/_jsx(CacheProvider, {\n value: cache,\n children: children\n }) : children;\n}\nprocess.env.NODE_ENV !== \"production\" ? StyledEngineProvider.propTypes = {\n /**\n * Your component tree.\n */\n children: PropTypes.node,\n /**\n * By default, the styles are injected last in the element of the page.\n * As a result, they gain more specificity than any other style sheet.\n * If you want to override MUI's styles, set this prop.\n */\n injectFirst: PropTypes.bool\n} : void 0;","/**\n * @mui/styled-engine v5.15.11\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use client';\n\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nexport default function styled(tag, options) {\n const stylesFactory = emStyled(tag, options);\n if (process.env.NODE_ENV !== 'production') {\n return (...styles) => {\n const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n if (styles.length === 0) {\n console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n } else if (styles.some(style => style === undefined)) {\n console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n }\n return stylesFactory(...styles);\n };\n }\n return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const internal_processStyles = (tag, processor) => {\n // Emotion attaches all the styles as `__emotion_styles`.\n // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n if (Array.isArray(tag.__emotion_styles)) {\n tag.__emotion_styles = processor(tag.__emotion_styles);\n }\n};\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from './StyledEngineProvider';\nexport { default as GlobalStyles } from './GlobalStyles';","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.alpha = alpha;\nexports.blend = blend;\nexports.colorChannel = void 0;\nexports.darken = darken;\nexports.decomposeColor = decomposeColor;\nexports.emphasize = emphasize;\nexports.getContrastRatio = getContrastRatio;\nexports.getLuminance = getLuminance;\nexports.hexToRgb = hexToRgb;\nexports.hslToRgb = hslToRgb;\nexports.lighten = lighten;\nexports.private_safeAlpha = private_safeAlpha;\nexports.private_safeColorChannel = void 0;\nexports.private_safeDarken = private_safeDarken;\nexports.private_safeEmphasize = private_safeEmphasize;\nexports.private_safeLighten = private_safeLighten;\nexports.recomposeColor = recomposeColor;\nexports.rgbToHex = rgbToHex;\nvar _formatMuiErrorMessage2 = _interopRequireDefault(require(\"@mui/utils/formatMuiErrorMessage\"));\nvar _clamp = _interopRequireDefault(require(\"@mui/utils/clamp\"));\n/* eslint-disable @typescript-eslint/naming-convention */\n\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clampWrapper(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n return (0, _clamp.default)(value, min, max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nfunction hexToRgb(color) {\n color = color.slice(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n let colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map(n => n + n);\n }\n return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nfunction decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf('(');\n const type = color.substring(0, marker);\n if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : (0, _formatMuiErrorMessage2.default)(9, color));\n }\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n if (type === 'color') {\n values = values.split(' ');\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === '/') {\n values[3] = values[3].slice(1);\n }\n if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : (0, _formatMuiErrorMessage2.default)(10, colorSpace));\n }\n } else {\n values = values.split(',');\n }\n values = values.map(value => parseFloat(value));\n return {\n type,\n values,\n colorSpace\n };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nconst colorChannel = color => {\n const decomposedColor = decomposeColor(color);\n return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexports.colorChannel = colorChannel;\nconst private_safeColorChannel = (color, warning) => {\n try {\n return colorChannel(color);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexports.private_safeColorChannel = private_safeColorChannel;\nfunction recomposeColor(color) {\n const {\n type,\n colorSpace\n } = color;\n let {\n values\n } = color;\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n if (type.indexOf('color') !== -1) {\n values = `${colorSpace} ${values.join(' ')}`;\n } else {\n values = `${values.join(', ')}`;\n }\n return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nfunction rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n const {\n values\n } = decomposeColor(color);\n return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nfunction hslToRgb(color) {\n color = decomposeColor(color);\n const {\n values\n } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({\n type,\n values: rgb\n });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nfunction getLuminance(color) {\n color = decomposeColor(color);\n let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(val => {\n if (color.type !== 'color') {\n val /= 255; // normalized\n }\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n });\n\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nfunction getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction alpha(color, value) {\n color = decomposeColor(color);\n value = clampWrapper(value);\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n if (color.type === 'color') {\n color.values[3] = `/${value}`;\n } else {\n color.values[3] = value;\n }\n return recomposeColor(color);\n}\nfunction private_safeAlpha(color, value, warning) {\n try {\n return alpha(color, value);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\nfunction private_safeDarken(color, coefficient, warning) {\n try {\n return darken(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clampWrapper(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n } else if (color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}\nfunction private_safeLighten(color, coefficient, warning) {\n try {\n return lighten(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nfunction emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nfunction private_safeEmphasize(color, coefficient, warning) {\n try {\n return private_safeEmphasize(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Blend a transparent overlay color with a background color, resulting in a single\n * RGB color.\n * @param {string} background - CSS color\n * @param {string} overlay - CSS color\n * @param {number} opacity - Opacity multiplier in the range 0 - 1\n * @param {number} [gamma=1.0] - Gamma correction factor. For gamma-correct blending, 2.2 is usual.\n */\nfunction blend(background, overlay, opacity, gamma = 1.0) {\n const blendChannel = (b, o) => Math.round((b ** (1 / gamma) * (1 - opacity) + o ** (1 / gamma) * opacity) ** gamma);\n const backgroundColor = decomposeColor(background);\n const overlayColor = decomposeColor(overlay);\n const rgb = [blendChannel(backgroundColor.values[0], overlayColor.values[0]), blendChannel(backgroundColor.values[1], overlayColor.values[1]), blendChannel(backgroundColor.values[2], overlayColor.values[2])];\n return recomposeColor({\n type: 'rgb',\n values: rgb\n });\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createStyled;\nexports.shouldForwardProp = shouldForwardProp;\nexports.systemDefaultTheme = void 0;\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\nvar _styledEngine = _interopRequireWildcard(require(\"@mui/styled-engine\"));\nvar _deepmerge = require(\"@mui/utils/deepmerge\");\nvar _capitalize = _interopRequireDefault(require(\"@mui/utils/capitalize\"));\nvar _getDisplayName = _interopRequireDefault(require(\"@mui/utils/getDisplayName\"));\nvar _createTheme = _interopRequireDefault(require(\"./createTheme\"));\nvar _styleFunctionSx = _interopRequireDefault(require(\"./styleFunctionSx\"));\nconst _excluded = [\"ownerState\"],\n _excluded2 = [\"variants\"],\n _excluded3 = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"];\n/* eslint-disable no-underscore-dangle */\nfunction _getRequireWildcardCache(e) { if (\"function\" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }\nfunction _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || \"object\" != typeof e && \"function\" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if (\"default\" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n return typeof tag === 'string' &&\n // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96;\n}\n\n// Update /system/styled/#api in case if this changes\nfunction shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nconst systemDefaultTheme = exports.systemDefaultTheme = (0, _createTheme.default)();\nconst lowercaseFirstLetter = string => {\n if (!string) {\n return string;\n }\n return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction resolveTheme({\n defaultTheme,\n theme,\n themeId\n}) {\n return isEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nfunction defaultOverridesResolver(slot) {\n if (!slot) {\n return null;\n }\n return (props, styles) => styles[slot];\n}\nfunction processStyleArg(callableStyle, _ref) {\n let {\n ownerState\n } = _ref,\n props = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);\n const resolvedStylesArg = typeof callableStyle === 'function' ? callableStyle((0, _extends2.default)({\n ownerState\n }, props)) : callableStyle;\n if (Array.isArray(resolvedStylesArg)) {\n return resolvedStylesArg.flatMap(resolvedStyle => processStyleArg(resolvedStyle, (0, _extends2.default)({\n ownerState\n }, props)));\n }\n if (!!resolvedStylesArg && typeof resolvedStylesArg === 'object' && Array.isArray(resolvedStylesArg.variants)) {\n const {\n variants = []\n } = resolvedStylesArg,\n otherStyles = (0, _objectWithoutPropertiesLoose2.default)(resolvedStylesArg, _excluded2);\n let result = otherStyles;\n variants.forEach(variant => {\n let isMatch = true;\n if (typeof variant.props === 'function') {\n isMatch = variant.props((0, _extends2.default)({\n ownerState\n }, props, ownerState));\n } else {\n Object.keys(variant.props).forEach(key => {\n if ((ownerState == null ? void 0 : ownerState[key]) !== variant.props[key] && props[key] !== variant.props[key]) {\n isMatch = false;\n }\n });\n }\n if (isMatch) {\n if (!Array.isArray(result)) {\n result = [result];\n }\n result.push(typeof variant.style === 'function' ? variant.style((0, _extends2.default)({\n ownerState\n }, props, ownerState)) : variant.style);\n }\n });\n return result;\n }\n return resolvedStylesArg;\n}\nfunction createStyled(input = {}) {\n const {\n themeId,\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp\n } = input;\n const systemSx = props => {\n return (0, _styleFunctionSx.default)((0, _extends2.default)({}, props, {\n theme: resolveTheme((0, _extends2.default)({}, props, {\n defaultTheme,\n themeId\n }))\n }));\n };\n systemSx.__mui_systemSx = true;\n return (tag, inputOptions = {}) => {\n // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n (0, _styledEngine.internal_processStyles)(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n overridesResolver = defaultOverridesResolver(lowercaseFirstLetter(componentSlot))\n } = inputOptions,\n options = (0, _objectWithoutPropertiesLoose2.default)(inputOptions, _excluded3);\n\n // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver :\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n componentSlot && componentSlot !== 'Root' && componentSlot !== 'root' || false;\n const skipSx = inputSkipSx || false;\n let label;\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n // TODO v6: remove `lowercaseFirstLetter()` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n let shouldForwardPropOption = shouldForwardProp;\n\n // TODO v6: remove `Root` in the next major release\n // For more details: https://github.com/mui/material-ui/pull/37908\n if (componentSlot === 'Root' || componentSlot === 'root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n } else if (isStringTag(tag)) {\n // for string (html) tag, preserve the behavior in emotion & styled-components.\n shouldForwardPropOption = undefined;\n }\n const defaultStyledResolver = (0, _styledEngine.default)(tag, (0, _extends2.default)({\n shouldForwardProp: shouldForwardPropOption,\n label\n }, options));\n const transformStyleArg = stylesArg => {\n // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n if (typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg || (0, _deepmerge.isPlainObject)(stylesArg)) {\n return props => processStyleArg(stylesArg, (0, _extends2.default)({}, props, {\n theme: resolveTheme({\n theme: props.theme,\n defaultTheme,\n themeId\n })\n }));\n }\n return stylesArg;\n };\n const muiStyledResolver = (styleArg, ...expressions) => {\n let transformedStyleArg = transformStyleArg(styleArg);\n const expressionsWithDefaultTheme = expressions ? expressions.map(transformStyleArg) : [];\n if (componentName && overridesResolver) {\n expressionsWithDefaultTheme.push(props => {\n const theme = resolveTheme((0, _extends2.default)({}, props, {\n defaultTheme,\n themeId\n }));\n if (!theme.components || !theme.components[componentName] || !theme.components[componentName].styleOverrides) {\n return null;\n }\n const styleOverrides = theme.components[componentName].styleOverrides;\n const resolvedStyleOverrides = {};\n // TODO: v7 remove iteration and use `resolveStyleArg(styleOverrides[slot])` directly\n Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n resolvedStyleOverrides[slotKey] = processStyleArg(slotStyle, (0, _extends2.default)({}, props, {\n theme\n }));\n });\n return overridesResolver(props, resolvedStyleOverrides);\n });\n }\n if (componentName && !skipVariantsResolver) {\n expressionsWithDefaultTheme.push(props => {\n var _theme$components;\n const theme = resolveTheme((0, _extends2.default)({}, props, {\n defaultTheme,\n themeId\n }));\n const themeVariants = theme == null || (_theme$components = theme.components) == null || (_theme$components = _theme$components[componentName]) == null ? void 0 : _theme$components.variants;\n return processStyleArg({\n variants: themeVariants\n }, (0, _extends2.default)({}, props, {\n theme\n }));\n });\n }\n if (!skipSx) {\n expressionsWithDefaultTheme.push(systemSx);\n }\n const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n const placeholders = new Array(numOfCustomFnsApplied).fill('');\n // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n transformedStyleArg = [...styleArg, ...placeholders];\n transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n }\n const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n let displayName;\n if (componentName) {\n displayName = `${componentName}${(0, _capitalize.default)(componentSlot || '')}`;\n }\n if (displayName === undefined) {\n displayName = `Styled(${(0, _getDisplayName.default)(tag)})`;\n }\n Component.displayName = displayName;\n }\n if (tag.muiName) {\n Component.muiName = tag.muiName;\n }\n return Component;\n };\n if (defaultStyledResolver.withConfig) {\n muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n }\n return muiStyledResolver;\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport deepmerge from '@mui/utils/deepmerge';\nimport merge from './merge';\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n // key is breakpoint\n if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme\n }, props[key]));\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n var _breakpointsInput$key;\n const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","/**\n * A universal utility to style components with multiple color modes. Always use it from the theme object.\n * It works with:\n * - [Basic theme](https://mui.com/material-ui/customization/dark-mode/)\n * - [CSS theme variables](https://mui.com/material-ui/experimental-api/css-theme-variables/overview/)\n * - Zero-runtime engine\n *\n * Tips: Use an array over object spread and place `theme.applyStyles()` last.\n *\n * ✅ [{ background: '#e5e5e5' }, theme.applyStyles('dark', { background: '#1c1c1c' })]\n *\n * 🚫 { background: '#e5e5e5', ...theme.applyStyles('dark', { background: '#1c1c1c' })}\n *\n * @example\n * 1. using with `styled`:\n * ```jsx\n * const Component = styled('div')(({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]);\n * ```\n *\n * @example\n * 2. using with `sx` prop:\n * ```jsx\n * [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ]}\n * />\n * ```\n *\n * @example\n * 3. theming a component:\n * ```jsx\n * extendTheme({\n * components: {\n * MuiButton: {\n * styleOverrides: {\n * root: ({ theme }) => [\n * { background: '#e5e5e5' },\n * theme.applyStyles('dark', {\n * background: '#1c1c1c',\n * color: '#fff',\n * }),\n * ],\n * },\n * }\n * }\n * })\n *```\n */\nexport default function applyStyles(key, styles) {\n // @ts-expect-error this is 'any' type\n const theme = this;\n if (theme.vars && typeof theme.getColorSchemeSelector === 'function') {\n // If CssVarsProvider is used as a provider,\n // returns '* :where([data-mui-color-scheme=\"light|dark\"]) &'\n const selector = theme.getColorSchemeSelector(key).replace(/(\\[[^\\]]+\\])/, '*:where($1)');\n return {\n [selector]: styles\n };\n }\n if (theme.palette.mode === key) {\n return styles;\n }\n return {};\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return _extends({}, acc, {\n [obj.key]: obj.val\n });\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n unit = 'px',\n step = 5\n } = breakpoints,\n other = _objectWithoutPropertiesLoose(breakpoints, _excluded);\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return _extends({\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit\n }, other);\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\nimport deepmerge from '@mui/utils/deepmerge';\nimport createBreakpoints from './createBreakpoints';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport styleFunctionSx from '../styleFunctionSx/styleFunctionSx';\nimport defaultSxConfig from '../styleFunctionSx/defaultSxConfig';\nimport applyStyles from './applyStyles';\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: _extends({\n mode: 'light'\n }, paletteInput),\n spacing,\n shape: _extends({}, shape, shapeInput)\n }, other);\n muiTheme.applyStyles = applyStyles;\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","import { createUnarySpacing } from '../spacing';\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n\nexport default function createSpacing(spacingInput = 8) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n\n // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n // Smaller components, such as icons, can align to a 4dp grid.\n // https://m2.material.io/design/layout/understanding-layout.html\n const transform = createUnarySpacing({\n spacing: spacingInput\n });\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import deepmerge from '@mui/utils/deepmerge';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\nexport default merge;","import responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport { getPath } from './style';\nimport merge from './merge';\nimport memoize from './memoize';\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n var _getPath;\n const themeSpacing = (_getPath = getPath(theme, themeKey, false)) != null ? _getPath : defaultValue;\n if (typeof themeSpacing === 'number') {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n }\n }\n return themeSpacing * abs;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n return themeSpacing[abs];\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n const abs = Math.abs(propValue);\n const transformed = transformer(abs);\n if (propValue >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n return `-${transformed}`;\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (keys.indexOf(prop) === -1) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import capitalize from '@mui/utils/capitalize';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","import merge from './merge';\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nfunction createBorderStyle(prop, transform) {\n return style({\n prop,\n themeKey: 'borders',\n transform\n });\n}\nexport const border = createBorderStyle('border', borderTransform);\nexport const borderTop = createBorderStyle('borderTop', borderTransform);\nexport const borderRight = createBorderStyle('borderRight', borderTransform);\nexport const borderBottom = createBorderStyle('borderBottom', borderTransform);\nexport const borderLeft = createBorderStyle('borderLeft', borderTransform);\nexport const borderColor = createBorderStyle('borderColor');\nexport const borderTopColor = createBorderStyle('borderTopColor');\nexport const borderRightColor = createBorderStyle('borderRightColor');\nexport const borderBottomColor = createBorderStyle('borderBottomColor');\nexport const borderLeftColor = createBorderStyle('borderLeftColor');\nexport const outline = createBorderStyle('outline', borderTransform);\nexport const outlineColor = createBorderStyle('outlineColor');\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius, outline, outlineColor);\nexport default borders;","import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n var _props$theme, _props$theme2;\n const breakpoint = ((_props$theme = props.theme) == null || (_props$theme = _props$theme.breakpoints) == null || (_props$theme = _props$theme.values) == null ? void 0 : _props$theme[propValue]) || breakpointsValues[propValue];\n if (!breakpoint) {\n return {\n maxWidth: sizingTransform(propValue)\n };\n }\n if (((_props$theme2 = props.theme) == null || (_props$theme2 = _props$theme2.breakpoints) == null ? void 0 : _props$theme2.unit) !== 'px') {\n return {\n maxWidth: `${breakpoint}${props.theme.breakpoints.unit}`\n };\n }\n return {\n maxWidth: breakpoint\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from '../spacing';\nimport { borderRadius, borderTransform } from '../borders';\nimport { gap, rowGap, columnGap } from '../cssGrid';\nimport { paletteTransform } from '../palette';\nimport { maxWidth, sizingTransform } from '../sizing';\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n outline: {\n themeKey: 'borders',\n transform: borderTransform\n },\n outlineColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"sx\"];\nimport { isPlainObject } from '@mui/utils/deepmerge';\nimport defaultSxConfig from './defaultSxConfig';\nconst splitProps = props => {\n var _props$theme$unstable, _props$theme;\n const result = {\n systemProps: {},\n otherProps: {}\n };\n const config = (_props$theme$unstable = props == null || (_props$theme = props.theme) == null ? void 0 : _props$theme.unstable_sxConfig) != null ? _props$theme$unstable : defaultSxConfig;\n Object.keys(props).forEach(prop => {\n if (config[prop]) {\n result.systemProps[prop] = props[prop];\n } else {\n result.otherProps[prop] = props[prop];\n }\n });\n return result;\n};\nexport default function extendSxProp(props) {\n const {\n sx: inSx\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n systemProps,\n otherProps\n } = splitProps(other);\n let finalSx;\n if (Array.isArray(inSx)) {\n finalSx = [systemProps, ...inSx];\n } else if (typeof inSx === 'function') {\n finalSx = (...args) => {\n const result = inSx(...args);\n if (!isPlainObject(result)) {\n return systemProps;\n }\n return _extends({}, systemProps, result);\n };\n } else {\n finalSx = _extends({}, systemProps, inSx);\n }\n return _extends({}, otherProps, {\n sx: finalSx\n });\n}","import capitalize from '@mui/utils/capitalize';\nimport merge from '../merge';\nimport { getPath, getStyleValue as getValue } from '../style';\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from '../breakpoints';\nimport defaultSxConfig from './defaultSxConfig';\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n\n // TODO v6: remove, see https://github.com/mui/material-ui/pull/38123\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n var _theme$unstable_sxCon;\n const {\n sx,\n theme = {}\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n const config = (_theme$unstable_sxCon = theme.unstable_sxConfig) != null ? _theme$unstable_sxCon : defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n return removeUnusedBreakpoints(breakpointsKeys, css);\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","'use client';\n\nimport createTheme from './createTheme';\nimport useThemeWithoutDefault from './useThemeWithoutDefault';\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","'use client';\n\nimport getThemeProps from './getThemeProps';\nimport useTheme from '../useTheme';\nexport default function useThemeProps({\n props,\n name,\n defaultTheme,\n themeId\n}) {\n let theme = useTheme(defaultTheme);\n if (themeId) {\n theme = theme[themeId] || theme;\n }\n const mergedProps = getThemeProps({\n theme,\n name,\n props\n });\n return mergedProps;\n}","import resolveProps from '@mui/utils/resolveProps';\nexport default function getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n return props;\n }\n return resolveProps(theme.components[name].defaultProps, props);\n}","'use client';\n\nimport * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import _formatMuiErrorMessage from \"@mui/utils/formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","function clamp(val, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {\n return Math.max(min, Math.min(val, max));\n}\nexport default clamp;","export default function composeClasses(slots, getUtilityClass, classes = undefined) {\n const output = {};\n Object.keys(slots).forEach(\n // `Object.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n slot => {\n output[slot] = slots[slot].reduce((acc, key) => {\n if (key) {\n const utilityClass = getUtilityClass(key);\n if (utilityClass !== '') {\n acc.push(utilityClass);\n }\n if (classes && classes[key]) {\n acc.push(classes[key]);\n }\n }\n return acc;\n }, []).join(' ');\n });\n return output;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n let timeout;\n function debounced(...args) {\n const later = () => {\n // @ts-ignore\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n return debounced;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// https://github.com/sindresorhus/is-plain-obj/blob/main/index.js\nexport function isPlainObject(item) {\n if (typeof item !== 'object' || item === null) {\n return false;\n }\n const prototype = Object.getPrototypeOf(item);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in item) && !(Symbol.iterator in item);\n}\nfunction deepClone(source) {\n if (!isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? _extends({}, target) : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n // Avoid prototype pollution\n if (key === '__proto__') {\n return;\n }\n if (isPlainObject(source[key]) && key in target && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/internal-babel-macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe if we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n /* eslint-disable prefer-template */\n let url = 'https://mui.com/production-error/?code=' + code;\n for (let i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","import ClassNameGenerator from '../ClassNameGenerator';\nexport const globalStateClasses = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n open: 'open',\n readOnly: 'readOnly',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClasses[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}\nexport function isGlobalState(slot) {\n return globalStateClasses[slot] !== undefined;\n}","import generateUtilityClass from '../generateUtilityClass';\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","import { ForwardRef, Memo } from 'react-is';\n\n// Simplified polyfill for IE11 support\n// https://github.com/JamesMGreene/Function.name/blob/58b314d4a983110c3682f1228f845d39ccca1817/Function.name.js#L3\nconst fnNameMatchRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s/]*)\\s*/;\nexport function getFunctionName(fn) {\n const match = `${fn}`.match(fnNameMatchRegex);\n const name = match && match[1];\n return name || '';\n}\nfunction getFunctionComponentName(Component, fallback = '') {\n return Component.displayName || Component.name || getFunctionName(Component) || fallback;\n}\nfunction getWrappedName(outerType, innerType, wrapperName) {\n const functionName = getFunctionComponentName(innerType);\n return outerType.displayName || (functionName !== '' ? `${wrapperName}(${functionName})` : wrapperName);\n}\n\n/**\n * cherry-pick from\n * https://github.com/facebook/react/blob/769b1f270e1251d9dbdce0fcbd9e92e502d059b8/packages/shared/getComponentName.js\n * originally forked from recompose/getDisplayName with added IE11 support\n */\nexport default function getDisplayName(Component) {\n if (Component == null) {\n return undefined;\n }\n if (typeof Component === 'string') {\n return Component;\n }\n if (typeof Component === 'function') {\n return getFunctionComponentName(Component, 'Component');\n }\n\n // TypeScript can't have components as objects but they exist in the form of `memo` or `Suspense`\n if (typeof Component === 'object') {\n switch (Component.$$typeof) {\n case ForwardRef:\n return getWrappedName(Component, Component.render, 'ForwardRef');\n case Memo:\n return getWrappedName(Component, Component.type, 'memo');\n default:\n return undefined;\n }\n }\n return undefined;\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerDocument from '../ownerDocument';\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n const output = _extends({}, props);\n Object.keys(defaultProps).forEach(propName => {\n if (propName.toString().match(/^(components|slots)$/)) {\n output[propName] = _extends({}, defaultProps[propName], output[propName]);\n } else if (propName.toString().match(/^(componentsProps|slotProps)$/)) {\n const defaultSlotProps = defaultProps[propName] || {};\n const slotProps = props[propName];\n output[propName] = {};\n if (!slotProps || !Object.keys(slotProps)) {\n // Reduce the iteration if the slot props is empty\n output[propName] = defaultSlotProps;\n } else if (!defaultSlotProps || !Object.keys(defaultSlotProps)) {\n // Reduce the iteration if the default slot props is empty\n output[propName] = slotProps;\n } else {\n output[propName] = _extends({}, slotProps);\n Object.keys(defaultSlotProps).forEach(slotPropName => {\n output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n });\n }\n } else if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n });\n return output;\n}","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * A version of `React.useLayoutEffect` that does not show a warning when server-side rendering.\n * This is useful for effects that are only needed for client-side rendering but not for SSR.\n *\n * Before you use this hook, make sure to read https://gist.github.com/gaearon/e7d97cdf38a2907924ea12e4ebdf3c85\n * and confirm it doesn't apply to your use-case.\n */\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","'use client';\n\nimport * as React from 'react';\nimport useEnhancedEffect from '../useEnhancedEffect';\n\n/**\n * Inspired by https://github.com/facebook/react/issues/14099#issuecomment-440013892\n * See RFC in https://github.com/reactjs/rfcs/pull/220\n */\n\nfunction useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useRef((...args) =>\n // @ts-expect-error hide `this`\n (0, ref.current)(...args)).current;\n}\nexport default useEventCallback;","'use client';\n\nimport * as React from 'react';\nimport setRef from '../setRef';\nexport default function useForkRef(...refs) {\n /**\n * This will create a new function if the refs passed to this hook change and are all defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return instance => {\n refs.forEach(ref => {\n setRef(ref, instance);\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","'use client';\n\nimport * as React from 'react';\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// downstream bundlers may remove unnecessary concatenation, but won't remove toString call -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = React['useId'.toString()];\n/**\n *\n * @example
\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride != null ? idOverride : reactId;\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","'use client';\n\nimport * as React from 'react';\nconst UNINITIALIZED = {};\n\n/**\n * A React.useRef() that is initialized lazily with a function. Note that it accepts an optional\n * initialization argument, so the initialization function doesn't need to be an inline closure.\n *\n * @usage\n * const ref = useLazyRef(sortColumns, columns)\n */\nexport default function useLazyRef(init, initArg) {\n const ref = React.useRef(UNINITIALIZED);\n if (ref.current === UNINITIALIZED) {\n ref.current = init(initArg);\n }\n return ref;\n}","'use client';\n\nimport * as React from 'react';\nconst EMPTY = [];\n\n/**\n * A React.useEffect equivalent that runs once, when the component is mounted.\n */\nexport default function useOnMount(fn) {\n /* eslint-disable react-hooks/exhaustive-deps */\n React.useEffect(fn, EMPTY);\n /* eslint-enable react-hooks/exhaustive-deps */\n}","'use client';\n\nimport useLazyRef from '../useLazyRef/useLazyRef';\nimport useOnMount from '../useOnMount/useOnMount';\nexport class Timeout {\n constructor() {\n this.currentId = null;\n this.clear = () => {\n if (this.currentId !== null) {\n clearTimeout(this.currentId);\n this.currentId = null;\n }\n };\n this.disposeEffect = () => {\n return this.clear;\n };\n }\n static create() {\n return new Timeout();\n }\n /**\n * Executes `fn` after `delay`, clearing any previously scheduled call.\n */\n start(delay, fn) {\n this.clear();\n this.currentId = setTimeout(() => {\n this.currentId = null;\n fn();\n }, delay);\n }\n}\nexport default function useTimeout() {\n const timeout = useLazyRef(Timeout.create).current;\n useOnMount(timeout.disposeEffect);\n return timeout;\n}","'use strict'\n/* global fetch, btoa, Headers */\nconst core = require('./core')\n\nclass StatusError extends Error {\n constructor (res, ...params) {\n super(...params)\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, StatusError)\n }\n\n this.name = 'StatusError'\n this.message = res.statusMessage\n this.statusCode = res.status\n this.res = res\n this.json = res.json.bind(res)\n this.text = res.text.bind(res)\n this.arrayBuffer = res.arrayBuffer.bind(res)\n let buffer\n const get = () => {\n if (!buffer) buffer = this.arrayBuffer()\n return buffer\n }\n Object.defineProperty(this, 'responseBody', { get })\n // match Node.js headers object\n this.headers = {}\n for (const [key, value] of res.headers.entries()) {\n this.headers[key.toLowerCase()] = value\n }\n }\n}\n\nconst mkrequest = (statusCodes, method, encoding, headers, baseurl) => async (_url, body, _headers = {}) => {\n _url = baseurl + (_url || '')\n let parsed = new URL(_url)\n\n if (!headers) headers = {}\n if (parsed.username) {\n headers.Authorization = 'Basic ' + btoa(parsed.username + ':' + parsed.password)\n parsed = new URL(parsed.protocol + '//' + parsed.host + parsed.pathname + parsed.search)\n }\n if (parsed.protocol !== 'https:' && parsed.protocol !== 'http:') {\n throw new Error(`Unknown protocol, ${parsed.protocol}`)\n }\n\n if (body) {\n if (body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n typeof body === 'string'\n ) {\n // noop\n } else if (typeof body === 'object') {\n body = JSON.stringify(body)\n headers['Content-Type'] = 'application/json'\n } else {\n throw new Error('Unknown body type.')\n }\n }\n\n _headers = new Headers({ ...(headers || {}), ..._headers })\n\n const resp = await fetch(parsed, { method, headers: _headers, body })\n resp.statusCode = resp.status\n\n if (!statusCodes.has(resp.status)) {\n throw new StatusError(resp)\n }\n\n if (encoding === 'json') return resp.json()\n else if (encoding === 'buffer') return resp.arrayBuffer()\n else if (encoding === 'string') return resp.text()\n else return resp\n}\n\nmodule.exports = core(mkrequest)\n","'use strict'\nconst encodings = new Set(['json', 'buffer', 'string'])\n\nmodule.exports = mkrequest => (...args) => {\n const statusCodes = new Set()\n let method\n let encoding\n let headers\n let baseurl = ''\n\n args.forEach(arg => {\n if (typeof arg === 'string') {\n if (arg.toUpperCase() === arg) {\n if (method) {\n const msg = `Can't set method to ${arg}, already set to ${method}.`\n throw new Error(msg)\n } else {\n method = arg\n }\n } else if (arg.startsWith('http:') || arg.startsWith('https:')) {\n baseurl = arg\n } else {\n if (encodings.has(arg)) {\n encoding = arg\n } else {\n throw new Error(`Unknown encoding, ${arg}`)\n }\n }\n } else if (typeof arg === 'number') {\n statusCodes.add(arg)\n } else if (typeof arg === 'object') {\n if (Array.isArray(arg) || arg instanceof Set) {\n arg.forEach(code => statusCodes.add(code))\n } else {\n if (headers) {\n throw new Error('Cannot set headers twice.')\n }\n headers = arg\n }\n } else {\n throw new Error(`Unknown type: ${typeof arg}`)\n }\n })\n\n if (!method) method = 'GET'\n if (statusCodes.size === 0) {\n statusCodes.add(200)\n }\n\n return mkrequest(statusCodes, method, encoding, headers, baseurl)\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/* eslint-disable @typescript-eslint/no-unused-vars */\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\nimport { AgentConfig } from \"./src/common.speech/Exports.js\";\r\n\r\n// Note: this instantiation ensures the above import isn't\r\n// removed on compile. The import being absent causes an error on running\r\nvoid new AgentConfig();\r\n\r\n// Speech SDK API\r\nexport * from \"./src/sdk/Exports.js\";\r\n","/* eslint-disable @typescript-eslint/no-unsafe-assignment */\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport * as fs from \"fs\";\r\nimport { LogLevel } from \"../sdk/LogLevel.js\";\r\nimport { IEventListener, PlatformEvent } from \"../common/Exports.js\";\r\nimport { Contracts } from \"../sdk/Contracts.js\";\r\n\r\nexport class ConsoleLoggingListener implements IEventListener {\r\n private privLogLevelFilter: LogLevel;\r\n private privLogPath: fs.PathLike = undefined;\r\n private privEnableConsoleOutput: boolean = true;\r\n\r\n public logCallback: (s: string) => void;\r\n\r\n public constructor(logLevelFilter: LogLevel = LogLevel.None) { // Console output disabled by default\r\n this.privLogLevelFilter = logLevelFilter;\r\n }\r\n\r\n public set logPath(path: fs.PathLike) {\r\n Contracts.throwIfNullOrUndefined(fs.openSync, \"\\nFile System access not available\");\r\n this.privLogPath = path;\r\n }\r\n\r\n public set enableConsoleOutput(enableOutput: boolean) {\r\n this.privEnableConsoleOutput = enableOutput;\r\n }\r\n\r\n public onEvent(event: PlatformEvent): void {\r\n if (event.eventType >= this.privLogLevelFilter) {\r\n const log = this.toString(event);\r\n if (!!this.logCallback) {\r\n this.logCallback(log);\r\n }\r\n if (!!this.privLogPath) {\r\n fs.writeFileSync(this.privLogPath, log + \"\\n\", { flag: \"a+\" });\r\n }\r\n\r\n if (this.privEnableConsoleOutput) {\r\n switch (event.eventType) {\r\n case LogLevel.Debug:\r\n // eslint-disable-next-line no-console\r\n console.debug(log);\r\n break;\r\n case LogLevel.Info:\r\n // eslint-disable-next-line no-console\r\n console.info(log);\r\n break;\r\n case LogLevel.Warning:\r\n // eslint-disable-next-line no-console\r\n console.warn(log);\r\n break;\r\n case LogLevel.Error:\r\n // eslint-disable-next-line no-console\r\n console.error(log);\r\n break;\r\n default:\r\n // eslint-disable-next-line no-console\r\n console.log(log);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private toString(event: PlatformEvent): string {\r\n const logFragments = [\r\n `${event.eventTime}`,\r\n `${event.name}`,\r\n ];\r\n\r\n const e: any = event as any;\r\n for (const prop in e) {\r\n if (prop && event.hasOwnProperty(prop) &&\r\n prop !== \"eventTime\" && prop !== \"eventType\" &&\r\n prop !== \"eventId\" && prop !== \"name\" &&\r\n prop !== \"constructor\") {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\r\n const value = e[prop];\r\n let valueToLog = \"\";\r\n if (value !== undefined && value !== null) {\r\n if (typeof (value) === \"number\" || typeof (value) === \"string\") {\r\n valueToLog = value.toString();\r\n } else {\r\n valueToLog = JSON.stringify(value);\r\n }\r\n }\r\n\r\n logFragments.push(`${prop}: ${valueToLog}`);\r\n }\r\n\r\n }\r\n\r\n return logFragments.join(\" | \");\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport * from \"./ConsoleLoggingListener.js\";\r\nexport * from \"./IRecorder.js\";\r\nexport * from \"./MicAudioSource.js\";\r\nexport * from \"./FileAudioSource.js\";\r\nexport * from \"./PCMRecorder.js\";\r\nexport * from \"./WebsocketConnection.js\";\r\nexport * from \"./WebsocketMessageAdapter.js\";\r\nexport * from \"./ReplayableAudioNode.js\";\r\nexport * from \"./ProxyInfo.js\";\r\nexport * from \"./RestMessageAdapter.js\";\r\nexport * from \"./RestConfigBase.js\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n connectivity,\r\n ISpeechConfigAudioDevice,\r\n type,\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n AudioSourceErrorEvent,\r\n AudioSourceEvent,\r\n AudioSourceInitializingEvent,\r\n AudioSourceOffEvent,\r\n AudioSourceReadyEvent,\r\n AudioStreamNodeAttachedEvent,\r\n AudioStreamNodeAttachingEvent,\r\n AudioStreamNodeDetachedEvent,\r\n AudioStreamNodeErrorEvent,\r\n ChunkedArrayBufferStream,\r\n createNoDashGuid,\r\n Deferred,\r\n Events,\r\n EventSource,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IStreamChunk,\r\n IStringDictionary,\r\n Stream,\r\n} from \"../common/Exports.js\";\r\nimport { AudioStreamFormat, AudioStreamFormatImpl } from \"../sdk/Audio/AudioStreamFormat.js\";\r\n\r\nexport class FileAudioSource implements IAudioSource {\r\n\r\n private privAudioFormatPromise: Promise;\r\n\r\n private privStreams: IStringDictionary> = {};\r\n\r\n private privId: string;\r\n\r\n private privEvents: EventSource;\r\n\r\n private privSource: Blob | Buffer;\r\n\r\n private privFilename: string;\r\n\r\n private privHeaderEnd: number = 44;\r\n\r\n public constructor(file: File | Buffer, filename?: string, audioSourceId?: string) {\r\n this.privId = audioSourceId ? audioSourceId : createNoDashGuid();\r\n this.privEvents = new EventSource();\r\n this.privSource = file;\r\n if (typeof window !== \"undefined\" && typeof Blob !== \"undefined\" && this.privSource instanceof Blob) {\r\n this.privFilename = (file as File).name;\r\n } else {\r\n this.privFilename = filename || \"unknown.wav\";\r\n }\r\n\r\n // Read the header.\r\n this.privAudioFormatPromise = this.readHeader();\r\n }\r\n\r\n public get format(): Promise {\r\n return this.privAudioFormatPromise;\r\n }\r\n\r\n public turnOn(): Promise {\r\n if (this.privFilename.lastIndexOf(\".wav\") !== this.privFilename.length - 4) {\r\n const errorMsg = this.privFilename + \" is not supported. Only WAVE files are allowed at the moment.\";\r\n this.onEvent(new AudioSourceErrorEvent(errorMsg, \"\"));\r\n return Promise.reject(errorMsg);\r\n }\r\n\r\n this.onEvent(new AudioSourceInitializingEvent(this.privId)); // no stream id\r\n this.onEvent(new AudioSourceReadyEvent(this.privId));\r\n return;\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n public async attach(audioNodeId: string): Promise {\r\n this.onEvent(new AudioStreamNodeAttachingEvent(this.privId, audioNodeId));\r\n\r\n const stream: Stream = await this.upload(audioNodeId);\r\n\r\n this.onEvent(new AudioStreamNodeAttachedEvent(this.privId, audioNodeId));\r\n return Promise.resolve({\r\n detach: async (): Promise => {\r\n stream.readEnded();\r\n delete this.privStreams[audioNodeId];\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n await this.turnOff();\r\n },\r\n id: (): string => audioNodeId,\r\n read: (): Promise> => stream.read(),\r\n });\r\n }\r\n\r\n public detach(audioNodeId: string): void {\r\n if (audioNodeId && this.privStreams[audioNodeId]) {\r\n this.privStreams[audioNodeId].close();\r\n delete this.privStreams[audioNodeId];\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n }\r\n }\r\n\r\n public turnOff(): Promise {\r\n for (const streamId in this.privStreams) {\r\n if (streamId) {\r\n const stream = this.privStreams[streamId];\r\n if (stream && !stream.isClosed) {\r\n stream.close();\r\n }\r\n }\r\n }\r\n\r\n this.onEvent(new AudioSourceOffEvent(this.privId)); // no stream now\r\n return Promise.resolve();\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privEvents;\r\n }\r\n\r\n public get deviceInfo(): Promise {\r\n return this.privAudioFormatPromise.then((result: AudioStreamFormatImpl): Promise<{\r\n bitspersample: number;\r\n channelcount: number;\r\n connectivity: connectivity.Unknown;\r\n manufacturer: string;\r\n model: string;\r\n samplerate: number;\r\n type: type.File;\r\n }> => ( Promise.resolve({\r\n bitspersample: result.bitsPerSample,\r\n channelcount: result.channels,\r\n connectivity: connectivity.Unknown,\r\n manufacturer: \"Speech SDK\",\r\n model: \"File\",\r\n samplerate: result.samplesPerSec,\r\n type: type.File,\r\n })\r\n ));\r\n }\r\n\r\n private readHeader(): Promise {\r\n // Read the wave header.\r\n const maxHeaderSize: number = 4296;\r\n const header: Blob | Buffer = this.privSource.slice(0, maxHeaderSize);\r\n\r\n const headerResult: Deferred = new Deferred();\r\n\r\n const processHeader = (header: ArrayBuffer): void => {\r\n const view: DataView = new DataView(header);\r\n\r\n const getWord = (index: number): string => String.fromCharCode(view.getUint8(index), view.getUint8(index + 1), view.getUint8(index + 2), view.getUint8(index + 3));\r\n\r\n // RIFF 4 bytes.\r\n if (\"RIFF\" !== getWord(0)) {\r\n headerResult.reject(\"Invalid WAV header in file, RIFF was not found\");\r\n return;\r\n }\r\n\r\n // length, 4 bytes\r\n // RIFF Type & fmt 8 bytes\r\n if (\"WAVE\" !== getWord(8) || \"fmt \" !== getWord(12)) {\r\n headerResult.reject(\"Invalid WAV header in file, WAVEfmt was not found\");\r\n return;\r\n }\r\n\r\n const formatSize: number = view.getInt32(16, true);\r\n const channelCount: number = view.getUint16(22, true);\r\n const sampleRate: number = view.getUint32(24, true);\r\n const bitsPerSample: number = view.getUint16(34, true);\r\n // Confirm if header is 44 bytes long.\r\n let pos: number = 36 + Math.max(formatSize - 16, 0);\r\n for (; getWord(pos) !== \"data\"; pos += 2) {\r\n if (pos > maxHeaderSize - 8) {\r\n headerResult.reject(\"Invalid WAV header in file, data block was not found\");\r\n return;\r\n }\r\n }\r\n this.privHeaderEnd = pos + 8;\r\n headerResult.resolve(AudioStreamFormat.getWaveFormatPCM(sampleRate, bitsPerSample, channelCount) as AudioStreamFormatImpl);\r\n };\r\n\r\n if (typeof window !== \"undefined\" && typeof Blob !== \"undefined\" && header instanceof Blob) {\r\n const reader: FileReader = new FileReader();\r\n\r\n reader.onload = (event: Event): void => {\r\n const header: ArrayBuffer = (event.target as FileReader).result as ArrayBuffer;\r\n processHeader(header);\r\n };\r\n\r\n reader.readAsArrayBuffer(header);\r\n } else {\r\n const h: Buffer = header as Buffer;\r\n processHeader(h.buffer.slice(h.byteOffset, h.byteOffset + h.byteLength));\r\n }\r\n return headerResult.promise;\r\n }\r\n\r\n private async upload(audioNodeId: string): Promise> {\r\n const onerror = (error: string): void => {\r\n const errorMsg = `Error occurred while processing '${this.privFilename}'. ${error}`;\r\n this.onEvent(new AudioStreamNodeErrorEvent(this.privId, audioNodeId, errorMsg));\r\n throw new Error(errorMsg);\r\n };\r\n\r\n try {\r\n await this.turnOn();\r\n\r\n const format: AudioStreamFormatImpl = await this.privAudioFormatPromise;\r\n const stream = new ChunkedArrayBufferStream(format.avgBytesPerSec / 10, audioNodeId);\r\n\r\n this.privStreams[audioNodeId] = stream;\r\n const chunk: Blob | Buffer = this.privSource.slice(this.privHeaderEnd);\r\n\r\n const processFile = (buff: ArrayBuffer): void => {\r\n if (stream.isClosed) {\r\n return; // output stream was closed (somebody called TurnOff). We're done here.\r\n }\r\n\r\n stream.writeStreamChunk({\r\n buffer: buff,\r\n isEnd: false,\r\n timeReceived: Date.now(),\r\n });\r\n stream.close();\r\n };\r\n\r\n if (typeof window !== \"undefined\" && typeof Blob !== \"undefined\" && chunk instanceof Blob) {\r\n const reader: FileReader = new FileReader();\r\n reader.onerror = (ev: ProgressEvent): void => onerror(ev.toString());\r\n\r\n reader.onload = (event: Event): void => {\r\n const fileBuffer: ArrayBuffer = (event.target as FileReader).result as ArrayBuffer;\r\n processFile(fileBuffer);\r\n };\r\n\r\n reader.readAsArrayBuffer(chunk);\r\n } else {\r\n const c: Buffer = chunk as Buffer;\r\n processFile(c.buffer.slice(c.byteOffset, c.byteOffset + c.byteLength));\r\n }\r\n\r\n return stream;\r\n } catch (e) {\r\n onerror(e as string);\r\n }\r\n }\r\n\r\n private onEvent(event: AudioSourceEvent): void {\r\n this.privEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n connectivity,\r\n ISpeechConfigAudioDevice,\r\n type\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n AudioSourceErrorEvent,\r\n AudioSourceEvent,\r\n AudioSourceInitializingEvent,\r\n AudioSourceOffEvent,\r\n AudioSourceReadyEvent,\r\n AudioStreamNodeAttachedEvent,\r\n AudioStreamNodeAttachingEvent,\r\n AudioStreamNodeDetachedEvent,\r\n AudioStreamNodeErrorEvent,\r\n ChunkedArrayBufferStream,\r\n createNoDashGuid,\r\n Deferred,\r\n Events,\r\n EventSource,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IStringDictionary,\r\n Stream,\r\n} from \"../common/Exports.js\";\r\nimport { IStreamChunk } from \"../common/Stream.js\";\r\nimport {\r\n AudioStreamFormat,\r\n AudioStreamFormatImpl,\r\n} from \"../sdk/Audio/AudioStreamFormat.js\";\r\nimport { IRecorder } from \"./IRecorder.js\";\r\n\r\n// Extending the default definition with browser specific definitions for backward compatibility\r\ninterface INavigator extends Navigator {\r\n webkitGetUserMedia: (constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback | undefined, errorCallback: NavigatorUserMediaErrorCallback) => void;\r\n mozGetUserMedia: (constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback | undefined, errorCallback: NavigatorUserMediaErrorCallback) => void;\r\n msGetUserMedia: (constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback) => void;\r\n}\r\n\r\nexport const AudioWorkletSourceURLPropertyName = \"MICROPHONE-WorkletSourceUrl\";\r\n\r\nexport class MicAudioSource implements IAudioSource {\r\n\r\n private static readonly AUDIOFORMAT: AudioStreamFormatImpl = AudioStreamFormat.getDefaultInputFormat() as AudioStreamFormatImpl;\r\n\r\n private privStreams: IStringDictionary> = {};\r\n\r\n private privId: string;\r\n\r\n private privEvents: EventSource;\r\n\r\n private privInitializeDeferral: Deferred;\r\n\r\n private privMediaStream: MediaStream;\r\n\r\n private privContext: AudioContext;\r\n\r\n private privMicrophoneLabel: string;\r\n\r\n private privOutputChunkSize: number;\r\n\r\n private privIsClosing: boolean;\r\n\r\n public constructor(\r\n private readonly privRecorder: IRecorder,\r\n private readonly deviceId?: string,\r\n audioSourceId?: string,\r\n mediaStream?: MediaStream\r\n ) {\r\n\r\n this.privOutputChunkSize = MicAudioSource.AUDIOFORMAT.avgBytesPerSec / 10;\r\n this.privId = audioSourceId ? audioSourceId : createNoDashGuid();\r\n this.privEvents = new EventSource();\r\n this.privMediaStream = mediaStream || null;\r\n this.privIsClosing = false;\r\n }\r\n\r\n public get format(): Promise {\r\n return Promise.resolve(MicAudioSource.AUDIOFORMAT);\r\n }\r\n\r\n public turnOn(): Promise {\r\n if (this.privInitializeDeferral) {\r\n return this.privInitializeDeferral.promise;\r\n }\r\n\r\n this.privInitializeDeferral = new Deferred();\r\n\r\n try {\r\n this.createAudioContext();\r\n } catch (error) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n this.privInitializeDeferral.reject(typedError.name + \": \" + typedError.message);\r\n } else {\r\n this.privInitializeDeferral.reject(error as string);\r\n }\r\n return this.privInitializeDeferral.promise;\r\n }\r\n\r\n const nav = window.navigator as INavigator;\r\n\r\n let getUserMedia = (\r\n // eslint-disable-next-line\r\n nav.getUserMedia ||\r\n nav.webkitGetUserMedia ||\r\n nav.mozGetUserMedia ||\r\n nav.msGetUserMedia\r\n );\r\n\r\n if (!!nav.mediaDevices) {\r\n getUserMedia = (constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback): void => {\r\n nav.mediaDevices\r\n .getUserMedia(constraints)\r\n .then(successCallback)\r\n .catch(errorCallback);\r\n };\r\n }\r\n\r\n if (!getUserMedia) {\r\n const errorMsg = \"Browser does not support getUserMedia.\";\r\n this.privInitializeDeferral.reject(errorMsg);\r\n this.onEvent(new AudioSourceErrorEvent(errorMsg, \"\")); // mic initialized error - no streamid at this point\r\n } else {\r\n const next = (): void => {\r\n this.onEvent(new AudioSourceInitializingEvent(this.privId)); // no stream id\r\n if (this.privMediaStream && this.privMediaStream.active) {\r\n this.onEvent(new AudioSourceReadyEvent(this.privId));\r\n this.privInitializeDeferral.resolve();\r\n } else {\r\n getUserMedia(\r\n { audio: this.deviceId ? { deviceId: this.deviceId } : true, video: false },\r\n (mediaStream: MediaStream): void => {\r\n this.privMediaStream = mediaStream;\r\n this.onEvent(new AudioSourceReadyEvent(this.privId));\r\n this.privInitializeDeferral.resolve();\r\n }, (error: any): void => {\r\n const errorMsg = `Error occurred during microphone initialization: ${error as string}`;\r\n this.privInitializeDeferral.reject(errorMsg);\r\n this.onEvent(new AudioSourceErrorEvent(this.privId, errorMsg));\r\n });\r\n }\r\n };\r\n\r\n if (this.privContext.state === \"suspended\") {\r\n // NOTE: On iOS, the Web Audio API requires sounds to be triggered from an explicit user action.\r\n // https://github.com/WebAudio/web-audio-api/issues/790\r\n this.privContext.resume()\r\n .then(next)\r\n .catch((reason: any): void => {\r\n this.privInitializeDeferral.reject(`Failed to initialize audio context: ${reason as string}`);\r\n });\r\n } else {\r\n next();\r\n }\r\n }\r\n\r\n return this.privInitializeDeferral.promise;\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n public attach(audioNodeId: string): Promise {\r\n this.onEvent(new AudioStreamNodeAttachingEvent(this.privId, audioNodeId));\r\n\r\n return this.listen(audioNodeId).then(\r\n (stream: Stream): IAudioStreamNode => {\r\n this.onEvent(new AudioStreamNodeAttachedEvent(this.privId, audioNodeId));\r\n return {\r\n detach: async (): Promise => {\r\n stream.readEnded();\r\n delete this.privStreams[audioNodeId];\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n return this.turnOff();\r\n },\r\n id: (): string => audioNodeId,\r\n read: (): Promise> => stream.read(),\r\n };\r\n });\r\n }\r\n\r\n public detach(audioNodeId: string): void {\r\n if (audioNodeId && this.privStreams[audioNodeId]) {\r\n this.privStreams[audioNodeId].close();\r\n delete this.privStreams[audioNodeId];\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n }\r\n }\r\n\r\n public async turnOff(): Promise {\r\n for (const streamId in this.privStreams) {\r\n if (streamId) {\r\n const stream = this.privStreams[streamId];\r\n if (stream) {\r\n stream.close();\r\n }\r\n }\r\n }\r\n\r\n this.onEvent(new AudioSourceOffEvent(this.privId)); // no stream now\r\n if (this.privInitializeDeferral) {\r\n // Correctly handle when browser forces mic off before turnOn() completes\r\n // eslint-disable-next-line @typescript-eslint/await-thenable\r\n await this.privInitializeDeferral;\r\n this.privInitializeDeferral = null;\r\n }\r\n\r\n await this.destroyAudioContext();\r\n\r\n return;\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privEvents;\r\n }\r\n\r\n public get deviceInfo(): Promise {\r\n return this.getMicrophoneLabel().then((label: string): ISpeechConfigAudioDevice => (\r\n {\r\n bitspersample: MicAudioSource.AUDIOFORMAT.bitsPerSample,\r\n channelcount: MicAudioSource.AUDIOFORMAT.channels,\r\n connectivity: connectivity.Unknown,\r\n manufacturer: \"Speech SDK\",\r\n model: label,\r\n samplerate: MicAudioSource.AUDIOFORMAT.samplesPerSec,\r\n type: type.Microphones,\r\n }\r\n ));\r\n }\r\n\r\n public setProperty(name: string, value: string): void {\r\n if (name === AudioWorkletSourceURLPropertyName) {\r\n this.privRecorder.setWorkletUrl(value);\r\n } else {\r\n throw new Error(\"Property '\" + name + \"' is not supported on Microphone.\");\r\n }\r\n }\r\n\r\n private getMicrophoneLabel(): Promise {\r\n const defaultMicrophoneName: string = \"microphone\";\r\n\r\n // If we did this already, return the value.\r\n if (this.privMicrophoneLabel !== undefined) {\r\n return Promise.resolve(this.privMicrophoneLabel);\r\n }\r\n\r\n // If the stream isn't currently running, we can't query devices because security.\r\n if (this.privMediaStream === undefined || !this.privMediaStream.active) {\r\n return Promise.resolve(defaultMicrophoneName);\r\n }\r\n\r\n // Setup a default\r\n this.privMicrophoneLabel = defaultMicrophoneName;\r\n\r\n // Get the id of the device running the audio track.\r\n const microphoneDeviceId: string = this.privMediaStream.getTracks()[0].getSettings().deviceId;\r\n\r\n // If the browser doesn't support getting the device ID, set a default and return.\r\n if (undefined === microphoneDeviceId) {\r\n return Promise.resolve(this.privMicrophoneLabel);\r\n }\r\n\r\n const deferred: Deferred = new Deferred();\r\n\r\n // Enumerate the media devices.\r\n navigator.mediaDevices.enumerateDevices().then((devices: MediaDeviceInfo[]): void => {\r\n for (const device of devices) {\r\n if (device.deviceId === microphoneDeviceId) {\r\n // Found the device\r\n this.privMicrophoneLabel = device.label;\r\n break;\r\n }\r\n }\r\n deferred.resolve(this.privMicrophoneLabel);\r\n }, (): Deferred => deferred.resolve(this.privMicrophoneLabel));\r\n\r\n return deferred.promise;\r\n }\r\n\r\n private async listen(audioNodeId: string): Promise> {\r\n await this.turnOn();\r\n const stream = new ChunkedArrayBufferStream(this.privOutputChunkSize, audioNodeId);\r\n this.privStreams[audioNodeId] = stream;\r\n try {\r\n this.privRecorder.record(this.privContext, this.privMediaStream, stream);\r\n } catch (error) {\r\n this.onEvent(new AudioStreamNodeErrorEvent(this.privId, audioNodeId, error as string));\r\n throw error;\r\n }\r\n const result: Stream = stream;\r\n return result;\r\n }\r\n\r\n private onEvent(event: AudioSourceEvent): void {\r\n this.privEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n private createAudioContext(): void {\r\n if (!!this.privContext) {\r\n return;\r\n }\r\n\r\n this.privContext = AudioStreamFormatImpl.getAudioContext(MicAudioSource.AUDIOFORMAT.samplesPerSec);\r\n }\r\n\r\n private async destroyAudioContext(): Promise {\r\n if (!this.privContext) {\r\n return;\r\n }\r\n\r\n this.privRecorder.releaseMediaResources(this.privContext);\r\n\r\n // This pattern brought to you by a bug in the TypeScript compiler where it\r\n // confuses the (\"close\" in this.privContext) with this.privContext always being null as the alternate.\r\n // https://github.com/Microsoft/TypeScript/issues/11498\r\n let hasClose: boolean = false;\r\n if (\"close\" in this.privContext) {\r\n hasClose = true;\r\n }\r\n\r\n if (hasClose) {\r\n if (!this.privIsClosing) {\r\n // The audio context close may take enough time that the close is called twice\r\n this.privIsClosing = true;\r\n await this.privContext.close();\r\n this.privContext = null;\r\n this.privIsClosing = false;\r\n }\r\n } else if (null !== this.privContext && this.privContext.state === \"running\") {\r\n // Suspend actually takes a callback, but analogous to the\r\n // resume method, it'll be only fired if suspend is called\r\n // in a direct response to a user action. The later is not always\r\n // the case, as TurnOff is also called, when we receive an\r\n // end-of-speech message from the service. So, doing a best effort\r\n // fire-and-forget here.\r\n await this.privContext.suspend();\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { RiffPcmEncoder, Stream } from \"../common/Exports\";\r\nimport { IRecorder } from \"./IRecorder\";\r\n\r\nexport class PcmRecorder implements IRecorder {\r\n private privMediaResources: IMediaResources;\r\n private privSpeechProcessorScript: string; // speech-processor.js Url\r\n private privStopInputOnRelease: boolean;\r\n\r\n public constructor(stopInputOnRelease: boolean) {\r\n this.privStopInputOnRelease = stopInputOnRelease;\r\n }\r\n\r\n public record(context: AudioContext, mediaStream: MediaStream, outputStream: Stream): void {\r\n const desiredSampleRate = 16000;\r\n\r\n const waveStreamEncoder = new RiffPcmEncoder(context.sampleRate, desiredSampleRate);\r\n\r\n const micInput = context.createMediaStreamSource(mediaStream);\r\n\r\n const attachScriptProcessor = (): void => {\r\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\r\n const scriptNode = (() => {\r\n let bufferSize = 0;\r\n try {\r\n return context.createScriptProcessor(bufferSize, 1, 1);\r\n } catch (error) {\r\n // Webkit (<= version 31) requires a valid bufferSize.\r\n bufferSize = 2048;\r\n let audioSampleRate = context.sampleRate;\r\n while (bufferSize < 16384 && audioSampleRate >= (2 * desiredSampleRate)) {\r\n bufferSize <<= 1;\r\n audioSampleRate >>= 1;\r\n }\r\n return context.createScriptProcessor(bufferSize, 1, 1);\r\n }\r\n })();\r\n scriptNode.onaudioprocess = (event: AudioProcessingEvent): void => {\r\n const inputFrame = event.inputBuffer.getChannelData(0);\r\n\r\n if (outputStream && !outputStream.isClosed) {\r\n const waveFrame = waveStreamEncoder.encode(inputFrame);\r\n if (!!waveFrame) {\r\n outputStream.writeStreamChunk({\r\n buffer: waveFrame,\r\n isEnd: false,\r\n timeReceived: Date.now(),\r\n });\r\n }\r\n }\r\n };\r\n micInput.connect(scriptNode);\r\n scriptNode.connect(context.destination);\r\n this.privMediaResources = {\r\n scriptProcessorNode: scriptNode,\r\n source: micInput,\r\n stream: mediaStream,\r\n };\r\n };\r\n\r\n // https://webaudio.github.io/web-audio-api/#audioworklet\r\n // Using AudioWorklet to improve audio quality and avoid audio glitches due to blocking the UI thread\r\n const skipAudioWorklet = !!this.privSpeechProcessorScript && this.privSpeechProcessorScript.toLowerCase() === \"ignore\";\r\n\r\n if (!!context.audioWorklet && !skipAudioWorklet) {\r\n if (!this.privSpeechProcessorScript) {\r\n const workletScript = `class SP extends AudioWorkletProcessor {\r\n constructor(options) {\r\n super(options);\r\n }\r\n process(inputs, outputs) {\r\n const input = inputs[0];\r\n const output = [];\r\n for (let channel = 0; channel < input.length; channel += 1) {\r\n output[channel] = input[channel];\r\n }\r\n this.port.postMessage(output[0]);\r\n return true;\r\n }\r\n }\r\n registerProcessor('speech-processor', SP);`;\r\n const blob = new Blob([workletScript], { type: \"application/javascript; charset=utf-8\" });\r\n this.privSpeechProcessorScript = URL.createObjectURL(blob);\r\n }\r\n\r\n context.audioWorklet\r\n .addModule(this.privSpeechProcessorScript)\r\n .then((): void => {\r\n const workletNode = new AudioWorkletNode(context, \"speech-processor\");\r\n workletNode.port.onmessage = (ev: MessageEvent): void => {\r\n const inputFrame: Float32Array = ev.data as Float32Array;\r\n\r\n if (outputStream && !outputStream.isClosed) {\r\n const waveFrame = waveStreamEncoder.encode(inputFrame);\r\n if (!!waveFrame) {\r\n outputStream.writeStreamChunk({\r\n buffer: waveFrame,\r\n isEnd: false,\r\n timeReceived: Date.now(),\r\n });\r\n }\r\n }\r\n };\r\n micInput.connect(workletNode);\r\n workletNode.connect(context.destination);\r\n this.privMediaResources = {\r\n scriptProcessorNode: workletNode,\r\n source: micInput,\r\n stream: mediaStream,\r\n };\r\n })\r\n .catch((): void => {\r\n attachScriptProcessor();\r\n });\r\n } else {\r\n try {\r\n attachScriptProcessor();\r\n } catch (err) {\r\n throw new Error(`Unable to start audio worklet node for PCMRecorder: ${err as string}`);\r\n }\r\n }\r\n }\r\n\r\n public releaseMediaResources(context: AudioContext): void {\r\n if (this.privMediaResources) {\r\n if (this.privMediaResources.scriptProcessorNode) {\r\n this.privMediaResources.scriptProcessorNode.disconnect(context.destination);\r\n this.privMediaResources.scriptProcessorNode = null;\r\n }\r\n if (this.privMediaResources.source) {\r\n this.privMediaResources.source.disconnect();\r\n if (this.privStopInputOnRelease) {\r\n this.privMediaResources.stream.getTracks().forEach((track: MediaStreamTrack): void => track.stop());\r\n }\r\n this.privMediaResources.source = null;\r\n }\r\n }\r\n }\r\n\r\n public setWorkletUrl(url: string): void {\r\n this.privSpeechProcessorScript = url;\r\n }\r\n}\r\n\r\ninterface IMediaResources {\r\n source: MediaStreamAudioSourceNode;\r\n scriptProcessorNode: ScriptProcessorNode | AudioWorkletNode;\r\n stream: MediaStream;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { RecognizerConfig } from \"../common.speech/Exports.js\";\r\nimport { PropertyCollection, PropertyId } from \"../sdk/Exports.js\";\r\n\r\nexport class ProxyInfo {\r\n private privProxyHostName: string;\r\n private privProxyPort: number;\r\n private privProxyUserName: string;\r\n private privProxyPassword: string;\r\n\r\n private constructor(proxyHostName: string, proxyPort: number, proxyUserName: string, proxyPassword: string) {\r\n this.privProxyHostName = proxyHostName;\r\n this.privProxyPort = proxyPort;\r\n this.privProxyUserName = proxyUserName;\r\n this.privProxyPassword = proxyPassword;\r\n }\r\n\r\n public static fromParameters(parameters: PropertyCollection): ProxyInfo {\r\n return new ProxyInfo(parameters.getProperty(PropertyId.SpeechServiceConnection_ProxyHostName),\r\n parseInt(parameters.getProperty(PropertyId.SpeechServiceConnection_ProxyPort), 10),\r\n parameters.getProperty(PropertyId.SpeechServiceConnection_ProxyUserName),\r\n parameters.getProperty(PropertyId.SpeechServiceConnection_ProxyPassword));\r\n }\r\n\r\n public static fromRecognizerConfig(config: RecognizerConfig): ProxyInfo {\r\n return this.fromParameters(config.parameters);\r\n }\r\n\r\n public get HostName(): string {\r\n return this.privProxyHostName;\r\n }\r\n\r\n public get Port(): number {\r\n return this.privProxyPort;\r\n }\r\n\r\n public get UserName(): string {\r\n return this.privProxyUserName;\r\n }\r\n\r\n public get Password(): string {\r\n return this.privProxyPassword;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nimport {\r\n IAudioStreamNode,\r\n IStreamChunk,\r\n} from \"../common/Exports.js\";\r\n\r\nexport class ReplayableAudioNode implements IAudioStreamNode {\r\n private privAudioNode: IAudioStreamNode;\r\n private privBytesPerSecond: number;\r\n private privBuffers: BufferEntry[] = [];\r\n private privReplayOffset: number = 0;\r\n private privLastShrinkOffset: number = 0;\r\n private privBufferStartOffset: number = 0;\r\n private privBufferSerial: number = 0;\r\n private privBufferedBytes: number = 0;\r\n private privReplay: boolean = false;\r\n private privLastChunkAcquiredTime: number = 0;\r\n\r\n public constructor(audioSource: IAudioStreamNode, bytesPerSecond: number) {\r\n this.privAudioNode = audioSource;\r\n this.privBytesPerSecond = bytesPerSecond;\r\n }\r\n\r\n public id(): string {\r\n return this.privAudioNode.id();\r\n }\r\n\r\n // Reads and returns the next chunk of audio buffer.\r\n // If replay of existing buffers are needed, read() will first seek and replay\r\n // existing content, and upoin completion it will read new content from the underlying\r\n // audio node, saving that content into the replayable buffers.\r\n public read(): Promise> {\r\n // if there is a replay request to honor.\r\n if (!!this.privReplay && this.privBuffers.length !== 0) {\r\n // Find the start point in the buffers.\r\n // Offsets are in 100ns increments.\r\n // So how many bytes do we need to seek to get the right offset?\r\n const offsetToSeek: number = this.privReplayOffset - this.privBufferStartOffset;\r\n\r\n let bytesToSeek: number = Math.round(offsetToSeek * this.privBytesPerSecond * 1e-7);\r\n if (0 !== (bytesToSeek % 2)) {\r\n bytesToSeek++;\r\n }\r\n\r\n let i: number = 0;\r\n\r\n while (i < this.privBuffers.length && bytesToSeek >= this.privBuffers[i].chunk.buffer.byteLength) {\r\n bytesToSeek -= this.privBuffers[i++].chunk.buffer.byteLength;\r\n }\r\n\r\n if (i < this.privBuffers.length) {\r\n const retVal: ArrayBuffer = this.privBuffers[i].chunk.buffer.slice(bytesToSeek);\r\n\r\n this.privReplayOffset += (retVal.byteLength / this.privBytesPerSecond) * 1e+7;\r\n\r\n // If we've reached the end of the buffers, stop replaying.\r\n if (i === this.privBuffers.length - 1) {\r\n this.privReplay = false;\r\n }\r\n\r\n return Promise.resolve>({\r\n buffer: retVal,\r\n isEnd: false,\r\n timeReceived: this.privBuffers[i].chunk.timeReceived,\r\n });\r\n }\r\n }\r\n\r\n return this.privAudioNode.read()\r\n .then((result: IStreamChunk): IStreamChunk => {\r\n if (result && result.buffer) {\r\n this.privBuffers.push(new BufferEntry(result, this.privBufferSerial++, this.privBufferedBytes));\r\n this.privBufferedBytes += result.buffer.byteLength;\r\n }\r\n return result;\r\n });\r\n }\r\n\r\n public detach(): Promise {\r\n this.privBuffers = undefined;\r\n return this.privAudioNode.detach();\r\n }\r\n\r\n public replay(): void {\r\n if (this.privBuffers && 0 !== this.privBuffers.length) {\r\n this.privReplay = true;\r\n this.privReplayOffset = this.privLastShrinkOffset;\r\n }\r\n }\r\n\r\n // Shrinks the existing audio buffers to start at the new offset, or at the\r\n // beginning of the buffer closest to the requested offset.\r\n // A replay request will start from the last shrink point.\r\n public shrinkBuffers(offset: number): void {\r\n if (this.privBuffers === undefined || this.privBuffers.length === 0) {\r\n return;\r\n }\r\n\r\n this.privLastShrinkOffset = offset;\r\n\r\n // Find the start point in the buffers.\r\n // Offsets are in 100ns increments.\r\n // So how many bytes do we need to seek to get the right offset?\r\n const offsetToSeek: number = offset - this.privBufferStartOffset;\r\n\r\n let bytesToSeek: number = Math.round(offsetToSeek * this.privBytesPerSecond * 1e-7);\r\n\r\n let i: number = 0;\r\n\r\n while (i < this.privBuffers.length && bytesToSeek >= this.privBuffers[i].chunk.buffer.byteLength) {\r\n bytesToSeek -= this.privBuffers[i++].chunk.buffer.byteLength;\r\n }\r\n this.privBufferStartOffset = Math.round(offset - ((bytesToSeek / this.privBytesPerSecond) * 1e+7));\r\n this.privBuffers = this.privBuffers.slice(i);\r\n }\r\n\r\n // Finds the time a buffer of audio was first seen by offset.\r\n public findTimeAtOffset(offset: number): number {\r\n if (offset < this.privBufferStartOffset || this.privBuffers === undefined) {\r\n return 0;\r\n }\r\n\r\n for (const value of this.privBuffers) {\r\n const startOffset: number = (value.byteOffset / this.privBytesPerSecond) * 1e7;\r\n const endOffset: number = startOffset + ((value.chunk.buffer.byteLength / this.privBytesPerSecond) * 1e7);\r\n\r\n if (offset >= startOffset && offset <= endOffset) {\r\n return value.chunk.timeReceived;\r\n }\r\n }\r\n\r\n return 0;\r\n }\r\n}\r\n\r\n// Primary use of this class is to help debugging problems with the replay\r\n// code. If the memory cost of alloc / dealloc gets too much, drop it and just use\r\n// the ArrayBuffer directly.\r\nclass BufferEntry {\r\n public chunk: IStreamChunk;\r\n public serial: number;\r\n public byteOffset: number;\r\n\r\n public constructor(chunk: IStreamChunk, serial: number, byteOffset: number) {\r\n this.chunk = chunk;\r\n this.serial = serial;\r\n this.byteOffset = byteOffset;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IErrorMessages } from \"../common/Exports.js\";\r\n/**\r\n * HTTP request helper\r\n */\r\nexport interface IRequestOptions {\r\n headers?: {[key: string]: string};\r\n ignoreCache?: boolean;\r\n timeout?: number;\r\n}\r\n\r\nexport interface IRestParams {\r\n apiVersion: string;\r\n authorization: string;\r\n clientAppId: string;\r\n contentTypeKey: string;\r\n correlationId: string;\r\n languageCode: string;\r\n nickname: string;\r\n profanity: string;\r\n requestId: string;\r\n roomId: string;\r\n sessionToken: string;\r\n subscriptionKey: string;\r\n subscriptionRegion: string;\r\n token: string;\r\n}\r\n\r\nexport class RestConfigBase {\r\n\r\n public static get requestOptions(): IRequestOptions {\r\n return RestConfigBase.privDefaultRequestOptions;\r\n }\r\n\r\n public static get configParams(): IRestParams {\r\n return RestConfigBase.privDefaultParams;\r\n }\r\n\r\n public static get restErrors(): IErrorMessages {\r\n return RestConfigBase.privRestErrors;\r\n }\r\n\r\n private static readonly privDefaultRequestOptions: IRequestOptions = {\r\n headers: {\r\n Accept: \"application/json\",\r\n },\r\n ignoreCache: false,\r\n timeout: 10000,\r\n };\r\n\r\n private static readonly privRestErrors: IErrorMessages = {\r\n authInvalidSubscriptionKey: \"You must specify either an authentication token to use, or a Cognitive Speech subscription key.\",\r\n authInvalidSubscriptionRegion: \"You must specify the Cognitive Speech region to use.\",\r\n invalidArgs: \"Required input not found: {arg}.\",\r\n invalidCreateJoinConversationResponse: \"Creating/Joining conversation failed with HTTP {status}.\",\r\n invalidParticipantRequest: \"The requested participant was not found.\",\r\n permissionDeniedConnect: \"Required credentials not found.\",\r\n permissionDeniedConversation: \"Invalid operation: only the host can {command} the conversation.\",\r\n permissionDeniedParticipant: \"Invalid operation: only the host can {command} a participant.\",\r\n permissionDeniedSend: \"Invalid operation: the conversation is not in a connected state.\",\r\n permissionDeniedStart: \"Invalid operation: there is already an active conversation.\",\r\n };\r\n\r\n private static readonly privDefaultParams: IRestParams = {\r\n apiVersion: \"api-version\",\r\n authorization: \"Authorization\",\r\n clientAppId: \"X-ClientAppId\",\r\n contentTypeKey: \"Content-Type\",\r\n correlationId: \"X-CorrelationId\",\r\n languageCode: \"language\",\r\n nickname: \"nickname\",\r\n profanity: \"profanity\",\r\n requestId: \"X-RequestId\",\r\n roomId: \"roomid\",\r\n sessionToken: \"token\",\r\n subscriptionKey: \"Ocp-Apim-Subscription-Key\",\r\n subscriptionRegion: \"Ocp-Apim-Subscription-Region\",\r\n token: \"X-CapitoToken\",\r\n };\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport bent, { BentResponse, RequestBody } from \"bent\";\r\nimport {\r\n ArgumentNullError,\r\n Deferred\r\n} from \"../common/Exports.js\";\r\nimport { IRequestOptions } from \"./Exports.js\";\r\n\r\nexport enum RestRequestType {\r\n Get = \"GET\",\r\n Post = \"POST\",\r\n Delete = \"DELETE\",\r\n File = \"file\",\r\n}\r\n\r\nexport interface IRestResponse {\r\n ok: boolean;\r\n status: number;\r\n statusText: string;\r\n data: string;\r\n json: any;\r\n headers: string;\r\n}\r\n\r\ninterface JsonError {\r\n error?: {\r\n message: string;\r\n };\r\n}\r\n\r\n// accept rest operations via request method and return abstracted objects from server response\r\nexport class RestMessageAdapter {\r\n\r\n private privIgnoreCache: boolean;\r\n private privHeaders: { [key: string]: string };\r\n\r\n public constructor(\r\n configParams: IRequestOptions\r\n ) {\r\n\r\n if (!configParams) {\r\n throw new ArgumentNullError(\"configParams\");\r\n }\r\n\r\n this.privHeaders = configParams.headers;\r\n this.privIgnoreCache = configParams.ignoreCache;\r\n }\r\n\r\n public static extractHeaderValue(headerKey: string, headers: string): string {\r\n let headerValue: string = \"\";\r\n\r\n try {\r\n const arr = headers.trim().split(/[\\r\\n]+/);\r\n const headerMap: { [key: string]: string } = {};\r\n arr.forEach((line: string): void => {\r\n const parts = line.split(\": \");\r\n const header = parts.shift().toLowerCase();\r\n const value = parts.join(\": \");\r\n headerMap[header] = value;\r\n });\r\n\r\n headerValue = headerMap[headerKey.toLowerCase()];\r\n } catch (e) {\r\n // ignore the error\r\n }\r\n\r\n return headerValue;\r\n }\r\n\r\n public set options(configParams: IRequestOptions) {\r\n this.privHeaders = configParams.headers;\r\n this.privIgnoreCache = configParams.ignoreCache;\r\n }\r\n\r\n public setHeaders(key: string, value: string): void {\r\n this.privHeaders[key] = value;\r\n }\r\n\r\n public request(\r\n method: RestRequestType,\r\n uri: string,\r\n queryParams: { [key: string]: any } = {},\r\n body: any = null,\r\n ): Promise {\r\n\r\n const responseReceivedDeferral = new Deferred();\r\n\r\n const requestCommand = method === RestRequestType.File ? \"POST\" : method;\r\n const handleRestResponse = (data: BentResponse, j: JsonError = {}): IRestResponse => {\r\n const d: { statusText?: string; statusMessage?: string } = data;\r\n return {\r\n data: JSON.stringify(j),\r\n headers: JSON.stringify(data.headers),\r\n json: j,\r\n ok: data.statusCode >= 200 && data.statusCode < 300,\r\n status: data.statusCode,\r\n statusText: j.error ? j.error.message : d.statusText ? d.statusText : d.statusMessage\r\n };\r\n };\r\n\r\n const send = (postData: RequestBody): void => {\r\n const sendRequest = bent(uri, requestCommand, this.privHeaders, 200, 201, 202, 204, 400, 401, 402, 403, 404);\r\n const params = this.queryParams(queryParams) === \"\" ? \"\" : `?${this.queryParams(queryParams)}`;\r\n sendRequest(params, postData).then( async (data: BentResponse): Promise => {\r\n if (method === RestRequestType.Delete || data.statusCode === 204) {\r\n // No JSON from Delete and reset (204) operations\r\n responseReceivedDeferral.resolve(handleRestResponse(data));\r\n } else {\r\n try {\r\n const j: JsonError = await data.json() as JsonError;\r\n responseReceivedDeferral.resolve(handleRestResponse(data, j));\r\n } catch {\r\n responseReceivedDeferral.resolve(handleRestResponse(data));\r\n }\r\n }\r\n }).catch((error: string): void => {\r\n responseReceivedDeferral.reject(error);\r\n });\r\n };\r\n\r\n if (this.privIgnoreCache) {\r\n this.privHeaders[\"Cache-Control\"] = \"no-cache\";\r\n }\r\n\r\n if (method === RestRequestType.Post && body) {\r\n this.privHeaders[\"content-type\"] = \"application/json\";\r\n this.privHeaders[\"Content-Type\"] = \"application/json\";\r\n }\r\n send(body as RequestBody);\r\n return responseReceivedDeferral.promise;\r\n }\r\n\r\n private queryParams(params: { [key: string]: string } = {}): string {\r\n return Object.keys(params)\r\n .map((k: string): string => encodeURIComponent(k) + \"=\" + encodeURIComponent(params[k]))\r\n .join(\"&\");\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ArgumentNullError,\r\n ConnectionEvent,\r\n ConnectionMessage,\r\n ConnectionOpenResponse,\r\n ConnectionState,\r\n createNoDashGuid,\r\n EventSource,\r\n IConnection,\r\n IStringDictionary,\r\n IWebsocketMessageFormatter,\r\n} from \"../common/Exports.js\";\r\nimport { ProxyInfo } from \"./ProxyInfo.js\";\r\nimport { WebsocketMessageAdapter } from \"./WebsocketMessageAdapter.js\";\r\n\r\nexport class WebsocketConnection implements IConnection {\r\n\r\n private privUri: string;\r\n private privMessageFormatter: IWebsocketMessageFormatter;\r\n private privConnectionMessageAdapter: WebsocketMessageAdapter;\r\n private privId: string;\r\n private privIsDisposed: boolean = false;\r\n\r\n public constructor(\r\n uri: string,\r\n queryParameters: IStringDictionary,\r\n headers: IStringDictionary,\r\n messageFormatter: IWebsocketMessageFormatter,\r\n proxyInfo: ProxyInfo,\r\n enableCompression: boolean = false,\r\n connectionId?: string) {\r\n\r\n if (!uri) {\r\n throw new ArgumentNullError(\"uri\");\r\n }\r\n\r\n if (!messageFormatter) {\r\n throw new ArgumentNullError(\"messageFormatter\");\r\n }\r\n\r\n this.privMessageFormatter = messageFormatter;\r\n\r\n let queryParams = \"\";\r\n let i = 0;\r\n\r\n if (queryParameters) {\r\n for (const paramName in queryParameters) {\r\n if (paramName) {\r\n queryParams += ((i === 0) && (uri.indexOf(\"?\") === -1)) ? \"?\" : \"&\";\r\n\r\n const key = encodeURIComponent(paramName);\r\n queryParams += key;\r\n\r\n let val = queryParameters[paramName];\r\n if (val) {\r\n val = encodeURIComponent(val);\r\n queryParams += `=${val}`;\r\n }\r\n\r\n i++;\r\n }\r\n }\r\n }\r\n\r\n if (headers) {\r\n for (const headerName in headers) {\r\n if (headerName) {\r\n queryParams += ((i === 0) && (uri.indexOf(\"?\") === -1)) ? \"?\" : \"&\";\r\n const val = encodeURIComponent(headers[headerName]);\r\n queryParams += `${headerName}=${val}`;\r\n i++;\r\n }\r\n }\r\n }\r\n\r\n this.privUri = uri + queryParams;\r\n this.privId = connectionId ? connectionId : createNoDashGuid();\r\n\r\n this.privConnectionMessageAdapter = new WebsocketMessageAdapter(\r\n this.privUri,\r\n this.id,\r\n this.privMessageFormatter,\r\n proxyInfo,\r\n headers,\r\n enableCompression);\r\n }\r\n\r\n public async dispose(): Promise {\r\n this.privIsDisposed = true;\r\n\r\n if (this.privConnectionMessageAdapter) {\r\n await this.privConnectionMessageAdapter.close();\r\n }\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public get id(): string {\r\n return this.privId;\r\n }\r\n\r\n public get uri(): string {\r\n return this.privUri;\r\n }\r\n\r\n public state(): ConnectionState {\r\n return this.privConnectionMessageAdapter.state;\r\n }\r\n\r\n public open(): Promise {\r\n return this.privConnectionMessageAdapter.open();\r\n }\r\n\r\n public send(message: ConnectionMessage): Promise {\r\n return this.privConnectionMessageAdapter.send(message);\r\n }\r\n\r\n public read(): Promise {\r\n return this.privConnectionMessageAdapter.read();\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privConnectionMessageAdapter.events;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// Node.JS specific web socket / browser support.\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\nimport * as http from \"http\";\r\nimport * as net from \"net\";\r\nimport * as tls from \"tls\";\r\nimport Agent from \"agent-base\";\r\nimport HttpsProxyAgent from \"https-proxy-agent\";\r\n\r\nimport ws from \"ws\";\r\nimport { HeaderNames } from \"../common.speech/HeaderNames.js\";\r\nimport {\r\n ArgumentNullError,\r\n BackgroundEvent,\r\n ConnectionClosedEvent,\r\n ConnectionErrorEvent,\r\n ConnectionEstablishedEvent,\r\n ConnectionEvent,\r\n ConnectionMessage,\r\n ConnectionMessageReceivedEvent,\r\n ConnectionMessageSentEvent,\r\n ConnectionOpenResponse,\r\n ConnectionStartEvent,\r\n ConnectionState,\r\n Deferred,\r\n Events,\r\n EventSource,\r\n IWebsocketMessageFormatter,\r\n MessageType,\r\n Queue,\r\n RawWebsocketMessage,\r\n} from \"../common/Exports.js\";\r\nimport { ProxyInfo } from \"./ProxyInfo.js\";\r\n\r\ninterface ISendItem {\r\n Message: ConnectionMessage;\r\n RawWebsocketMessage: RawWebsocketMessage;\r\n sendStatusDeferral: Deferred;\r\n}\r\n\r\nexport class WebsocketMessageAdapter {\r\n private privConnectionState: ConnectionState;\r\n private privMessageFormatter: IWebsocketMessageFormatter;\r\n private privWebsocketClient: WebSocket | ws;\r\n\r\n private privSendMessageQueue: Queue;\r\n private privReceivingMessageQueue: Queue;\r\n private privConnectionEstablishDeferral: Deferred;\r\n private privCertificateValidatedDeferral: Deferred;\r\n private privDisconnectDeferral: Deferred;\r\n private privConnectionEvents: EventSource;\r\n private privConnectionId: string;\r\n private privUri: string;\r\n private proxyInfo: ProxyInfo;\r\n private privHeaders: { [key: string]: string };\r\n private privLastErrorReceived: string;\r\n private privEnableCompression: boolean;\r\n\r\n public static forceNpmWebSocket: boolean = false;\r\n\r\n public constructor(\r\n uri: string,\r\n connectionId: string,\r\n messageFormatter: IWebsocketMessageFormatter,\r\n proxyInfo: ProxyInfo,\r\n headers: { [key: string]: string },\r\n enableCompression: boolean) {\r\n\r\n if (!uri) {\r\n throw new ArgumentNullError(\"uri\");\r\n }\r\n\r\n if (!messageFormatter) {\r\n throw new ArgumentNullError(\"messageFormatter\");\r\n }\r\n\r\n this.proxyInfo = proxyInfo;\r\n this.privConnectionEvents = new EventSource();\r\n this.privConnectionId = connectionId;\r\n this.privMessageFormatter = messageFormatter;\r\n this.privConnectionState = ConnectionState.None;\r\n this.privUri = uri;\r\n this.privHeaders = headers;\r\n this.privEnableCompression = enableCompression;\r\n\r\n // Add the connection ID to the headers\r\n this.privHeaders[HeaderNames.ConnectionId] = this.privConnectionId;\r\n\r\n this.privLastErrorReceived = \"\";\r\n }\r\n\r\n public get state(): ConnectionState {\r\n return this.privConnectionState;\r\n }\r\n\r\n public open(): Promise {\r\n if (this.privConnectionState === ConnectionState.Disconnected) {\r\n return Promise.reject(`Cannot open a connection that is in ${this.privConnectionState} state`);\r\n }\r\n\r\n if (this.privConnectionEstablishDeferral) {\r\n return this.privConnectionEstablishDeferral.promise;\r\n }\r\n\r\n this.privConnectionEstablishDeferral = new Deferred();\r\n this.privCertificateValidatedDeferral = new Deferred();\r\n\r\n this.privConnectionState = ConnectionState.Connecting;\r\n\r\n try {\r\n\r\n if (typeof WebSocket !== \"undefined\" && !WebsocketMessageAdapter.forceNpmWebSocket) {\r\n // Browser handles cert checks.\r\n this.privCertificateValidatedDeferral.resolve();\r\n\r\n this.privWebsocketClient = new WebSocket(this.privUri);\r\n } else {\r\n const options: ws.ClientOptions = { headers: this.privHeaders, perMessageDeflate: this.privEnableCompression };\r\n // The ocsp library will handle validation for us and fail the connection if needed.\r\n this.privCertificateValidatedDeferral.resolve();\r\n\r\n options.agent = this.getAgent();\r\n // Workaround for https://github.com/microsoft/cognitive-services-speech-sdk-js/issues/465\r\n // Which is root caused by https://github.com/TooTallNate/node-agent-base/issues/61\r\n const uri = new URL(this.privUri);\r\n let protocol: string = uri.protocol;\r\n\r\n if (protocol?.toLocaleLowerCase() === \"wss:\") {\r\n protocol = \"https:\";\r\n } else if (protocol?.toLocaleLowerCase() === \"ws:\") {\r\n protocol = \"http:\";\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\r\n (options.agent as any).protocol = protocol;\r\n this.privWebsocketClient = new ws(this.privUri, options);\r\n }\r\n\r\n this.privWebsocketClient.binaryType = \"arraybuffer\";\r\n this.privReceivingMessageQueue = new Queue();\r\n this.privDisconnectDeferral = new Deferred();\r\n this.privSendMessageQueue = new Queue();\r\n this.processSendQueue().catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n } catch (error) {\r\n this.privConnectionEstablishDeferral.resolve(new ConnectionOpenResponse(500, error as string));\r\n return this.privConnectionEstablishDeferral.promise;\r\n }\r\n\r\n this.onEvent(new ConnectionStartEvent(this.privConnectionId, this.privUri));\r\n\r\n this.privWebsocketClient.onopen = (): void => {\r\n this.privCertificateValidatedDeferral.promise.then((): void => {\r\n this.privConnectionState = ConnectionState.Connected;\r\n this.onEvent(new ConnectionEstablishedEvent(this.privConnectionId));\r\n this.privConnectionEstablishDeferral.resolve(new ConnectionOpenResponse(200, \"\"));\r\n }, (error: string): void => {\r\n this.privConnectionEstablishDeferral.reject(error);\r\n });\r\n };\r\n\r\n this.privWebsocketClient.onerror = (e: { error: any; message: string; type: string; target: WebSocket | ws }): void => {\r\n this.onEvent(new ConnectionErrorEvent(this.privConnectionId, e.message, e.type));\r\n this.privLastErrorReceived = e.message;\r\n };\r\n\r\n this.privWebsocketClient.onclose = (e: { wasClean: boolean; code: number; reason: string; target: WebSocket | ws }): void => {\r\n if (this.privConnectionState === ConnectionState.Connecting) {\r\n this.privConnectionState = ConnectionState.Disconnected;\r\n // this.onEvent(new ConnectionEstablishErrorEvent(this.connectionId, e.code, e.reason));\r\n this.privConnectionEstablishDeferral.resolve(new ConnectionOpenResponse(e.code, e.reason + \" \" + this.privLastErrorReceived));\r\n } else {\r\n this.privConnectionState = ConnectionState.Disconnected;\r\n this.privWebsocketClient = null;\r\n this.onEvent(new ConnectionClosedEvent(this.privConnectionId, e.code, e.reason));\r\n }\r\n\r\n this.onClose(e.code, e.reason).catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n };\r\n\r\n this.privWebsocketClient.onmessage = (e: { data: ws.Data; type: string; target: WebSocket | ws }): void => {\r\n const networkReceivedTime = new Date().toISOString();\r\n if (this.privConnectionState === ConnectionState.Connected) {\r\n const deferred = new Deferred();\r\n // let id = ++this.idCounter;\r\n this.privReceivingMessageQueue.enqueueFromPromise(deferred.promise);\r\n if (e.data instanceof ArrayBuffer) {\r\n const rawMessage = new RawWebsocketMessage(MessageType.Binary, e.data);\r\n this.privMessageFormatter\r\n .toConnectionMessage(rawMessage)\r\n .then((connectionMessage: ConnectionMessage): void => {\r\n this.onEvent(new ConnectionMessageReceivedEvent(this.privConnectionId, networkReceivedTime, connectionMessage));\r\n deferred.resolve(connectionMessage);\r\n }, (error: string): void => {\r\n // TODO: Events for these ?\r\n deferred.reject(`Invalid binary message format. Error: ${error}`);\r\n });\r\n } else {\r\n const rawMessage = new RawWebsocketMessage(MessageType.Text, e.data);\r\n this.privMessageFormatter\r\n .toConnectionMessage(rawMessage)\r\n .then((connectionMessage: ConnectionMessage): void => {\r\n this.onEvent(new ConnectionMessageReceivedEvent(this.privConnectionId, networkReceivedTime, connectionMessage));\r\n deferred.resolve(connectionMessage);\r\n }, (error: string): void => {\r\n // TODO: Events for these ?\r\n deferred.reject(`Invalid text message format. Error: ${error}`);\r\n });\r\n }\r\n }\r\n };\r\n\r\n return this.privConnectionEstablishDeferral.promise;\r\n }\r\n\r\n public send(message: ConnectionMessage): Promise {\r\n if (this.privConnectionState !== ConnectionState.Connected) {\r\n return Promise.reject(`Cannot send on connection that is in ${ConnectionState[this.privConnectionState]} state`);\r\n }\r\n\r\n const messageSendStatusDeferral = new Deferred();\r\n const messageSendDeferral = new Deferred();\r\n\r\n this.privSendMessageQueue.enqueueFromPromise(messageSendDeferral.promise);\r\n\r\n this.privMessageFormatter\r\n .fromConnectionMessage(message)\r\n .then((rawMessage: RawWebsocketMessage): void => {\r\n messageSendDeferral.resolve({\r\n Message: message,\r\n RawWebsocketMessage: rawMessage,\r\n sendStatusDeferral: messageSendStatusDeferral,\r\n });\r\n }, (error: string): void => {\r\n messageSendDeferral.reject(`Error formatting the message. ${error}`);\r\n });\r\n\r\n return messageSendStatusDeferral.promise;\r\n }\r\n\r\n public read(): Promise {\r\n if (this.privConnectionState !== ConnectionState.Connected) {\r\n return Promise.reject(`Cannot read on connection that is in ${this.privConnectionState} state`);\r\n }\r\n\r\n return this.privReceivingMessageQueue.dequeue();\r\n }\r\n\r\n public close(reason?: string): Promise {\r\n if (this.privWebsocketClient) {\r\n if (this.privConnectionState !== ConnectionState.Disconnected) {\r\n this.privWebsocketClient.close(1000, reason ? reason : \"Normal closure by client\");\r\n }\r\n } else {\r\n return Promise.resolve();\r\n }\r\n\r\n return this.privDisconnectDeferral.promise;\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privConnectionEvents;\r\n }\r\n\r\n private sendRawMessage(sendItem: ISendItem): Promise {\r\n try {\r\n // indicates we are draining the queue and it came with no message;\r\n if (!sendItem) {\r\n return Promise.resolve();\r\n }\r\n\r\n this.onEvent(new ConnectionMessageSentEvent(this.privConnectionId, new Date().toISOString(), sendItem.Message));\r\n\r\n // add a check for the ws readystate in order to stop the red console error 'WebSocket is already in CLOSING or CLOSED state' appearing\r\n if (this.isWebsocketOpen) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n this.privWebsocketClient.send(sendItem.RawWebsocketMessage.payload);\r\n } else {\r\n return Promise.reject(\"websocket send error: Websocket not ready \" + this.privConnectionId + \" \" + sendItem.Message.id + \" \" + new Error().stack);\r\n }\r\n return Promise.resolve();\r\n\r\n } catch (e) {\r\n return Promise.reject(`websocket send error: ${e as string}`);\r\n }\r\n }\r\n\r\n private async onClose(code: number, reason: string): Promise {\r\n const closeReason = `Connection closed. ${code}: ${reason}`;\r\n this.privConnectionState = ConnectionState.Disconnected;\r\n this.privDisconnectDeferral.resolve();\r\n await this.privReceivingMessageQueue.drainAndDispose((): void => {\r\n // TODO: Events for these ?\r\n // Logger.instance.onEvent(new LoggingEvent(LogType.Warning, null, `Failed to process received message. Reason: ${closeReason}, Message: ${JSON.stringify(pendingReceiveItem)}`));\r\n }, closeReason);\r\n\r\n await this.privSendMessageQueue.drainAndDispose((pendingSendItem: ISendItem): void => {\r\n pendingSendItem.sendStatusDeferral.reject(closeReason);\r\n }, closeReason);\r\n }\r\n\r\n private async processSendQueue(): Promise {\r\n while (true) {\r\n const itemToSend: Promise = this.privSendMessageQueue.dequeue();\r\n const sendItem: ISendItem = await itemToSend;\r\n // indicates we are draining the queue and it came with no message;\r\n if (!sendItem) {\r\n return;\r\n }\r\n\r\n try {\r\n await this.sendRawMessage(sendItem);\r\n sendItem.sendStatusDeferral.resolve();\r\n } catch (sendError) {\r\n sendItem.sendStatusDeferral.reject(sendError as string);\r\n }\r\n }\r\n }\r\n\r\n private onEvent(event: ConnectionEvent): void {\r\n this.privConnectionEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n private getAgent(): http.Agent {\r\n // eslint-disable-next-line @typescript-eslint/unbound-method\r\n const agent: { proxyInfo: ProxyInfo } = new Agent.Agent(this.createConnection) as unknown as { proxyInfo: ProxyInfo } ;\r\n\r\n if (this.proxyInfo !== undefined &&\r\n this.proxyInfo.HostName !== undefined &&\r\n this.proxyInfo.Port > 0) {\r\n agent.proxyInfo = this.proxyInfo;\r\n }\r\n\r\n return agent as unknown as http.Agent;\r\n }\r\n\r\n private static GetProxyAgent(proxyInfo: ProxyInfo): HttpsProxyAgent {\r\n const httpProxyOptions: HttpsProxyAgent.HttpsProxyAgentOptions = {\r\n host: proxyInfo.HostName,\r\n port: proxyInfo.Port,\r\n };\r\n\r\n if (!!proxyInfo.UserName) {\r\n httpProxyOptions.headers = {\r\n \"Proxy-Authentication\": \"Basic \" + new Buffer(`${proxyInfo.UserName}:${(proxyInfo.Password === undefined) ? \"\" : proxyInfo.Password}`).toString(\"base64\"),\r\n };\r\n } else {\r\n httpProxyOptions.headers = {};\r\n }\r\n\r\n httpProxyOptions.headers.requestOCSP = \"true\";\r\n\r\n const httpProxyAgent: HttpsProxyAgent = new HttpsProxyAgent(httpProxyOptions);\r\n return httpProxyAgent;\r\n }\r\n\r\n private createConnection(request: Agent.ClientRequest, options: Agent.RequestOptions): Promise {\r\n let socketPromise: Promise;\r\n\r\n options = {\r\n ...options,\r\n ...{\r\n requestOCSP: true,\r\n servername: options.host\r\n }\r\n };\r\n\r\n if (!!this.proxyInfo) {\r\n const httpProxyAgent: HttpsProxyAgent = WebsocketMessageAdapter.GetProxyAgent(this.proxyInfo);\r\n const baseAgent: Agent.Agent = httpProxyAgent as unknown as Agent.Agent;\r\n\r\n socketPromise = new Promise((resolve: (value: net.Socket) => void, reject: (error: string | Error) => void): void => {\r\n baseAgent.callback(request, options, (error: Error, socket: net.Socket): void => {\r\n if (!!error) {\r\n reject(error);\r\n } else {\r\n resolve(socket);\r\n }\r\n });\r\n });\r\n } else {\r\n if (!!options.secureEndpoint) {\r\n socketPromise = Promise.resolve(tls.connect(options));\r\n } else {\r\n socketPromise = Promise.resolve(net.connect(options));\r\n }\r\n }\r\n\r\n return socketPromise;\r\n }\r\n\r\n private get isWebsocketOpen(): boolean {\r\n return this.privWebsocketClient && this.privWebsocketClient.readyState === this.privWebsocketClient.OPEN;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { LanguageUnderstandingModelImpl } from \"../sdk/LanguageUnderstandingModel.js\";\r\n\r\n/**\r\n * @class AddedLmIntent\r\n */\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class AddedLmIntent {\r\n public modelImpl: LanguageUnderstandingModelImpl;\r\n public intentName: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param modelImpl - The model.\r\n * @param intentName - The intent name.\r\n */\r\n public constructor(modelImpl: LanguageUnderstandingModelImpl, intentName: string) {\r\n this.modelImpl = modelImpl;\r\n this.intentName = intentName;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Represents the JSON used in the agent.config message sent to the speech service.\r\n */\r\nexport class AgentConfig {\r\n private iPrivConfig: IAgentConfig;\r\n\r\n public toJsonString(): string {\r\n return JSON.stringify(this.iPrivConfig);\r\n }\r\n\r\n public get(): IAgentConfig {\r\n return this.iPrivConfig;\r\n }\r\n\r\n /**\r\n * Setter for the agent.config object.\r\n * @param value a JSON serializable object.\r\n */\r\n public set(value: IAgentConfig): void {\r\n this.iPrivConfig = value;\r\n }\r\n}\r\n\r\nexport interface IAgentConfig {\r\n botInfo: {\r\n commType: string;\r\n connectionId: string;\r\n conversationId: string;\r\n fromId: string;\r\n commandsCulture: string;\r\n ttsAudioFormat: string;\r\n };\r\n version: number;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n AvatarConfig,\r\n AvatarEventArgs,\r\n AvatarSynthesizer,\r\n PropertyId,\r\n Synthesizer,\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n ISynthesisConnectionFactory,\r\n ISynthesisMetadata,\r\n ISynthesisSectionVideo,\r\n SynthesisAdapterBase,\r\n SynthesizerConfig\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\n\r\nexport class AvatarSynthesisAdapter extends SynthesisAdapterBase {\r\n private readonly privAvatarSynthesizer: AvatarSynthesizer;\r\n private readonly privAvatarConfig: AvatarConfig;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: ISynthesisConnectionFactory,\r\n synthesizerConfig: SynthesizerConfig,\r\n avatarSynthesizer: AvatarSynthesizer,\r\n avatarConfig: AvatarConfig,\r\n ) {\r\n\r\n super(authentication, connectionFactory,\r\n synthesizerConfig, undefined);\r\n this.privAvatarSynthesizer = avatarSynthesizer;\r\n this.privSynthesizer = avatarSynthesizer as Synthesizer;\r\n this.privAvatarConfig = avatarConfig;\r\n }\r\n\r\n protected setSynthesisContextSynthesisSection(): void {\r\n this.privSynthesisContext.setSynthesisSection(undefined);\r\n }\r\n\r\n protected setSpeechConfigSynthesisSection(): void {\r\n this.privSynthesizerConfig.synthesisVideoSection = {\r\n format: {\r\n bitrate: this.privAvatarConfig.videoFormat?.bitrate,\r\n codec: this.privAvatarConfig.videoFormat?.codec,\r\n crop: {\r\n bottomRight: {\r\n x: this.privAvatarConfig.videoFormat?.cropRange?.bottomRight?.x,\r\n y: this.privAvatarConfig.videoFormat?.cropRange?.bottomRight?.y,\r\n },\r\n topLeft: {\r\n x: this.privAvatarConfig.videoFormat?.cropRange?.topLeft?.x,\r\n y: this.privAvatarConfig.videoFormat?.cropRange?.topLeft?.y,\r\n },\r\n },\r\n resolution: {\r\n height: this.privAvatarConfig.videoFormat?.height,\r\n width: this.privAvatarConfig.videoFormat?.width,\r\n },\r\n },\r\n protocol: {\r\n name: \"WebRTC\",\r\n webrtcConfig: {\r\n clientDescription: btoa(this.privSynthesizerConfig.parameters.getProperty(PropertyId.TalkingAvatarService_WebRTC_SDP)),\r\n iceServers: this.privAvatarSynthesizer.iceServers,\r\n },\r\n },\r\n talkingAvatar: {\r\n background: {\r\n color: this.privAvatarConfig.backgroundColor,\r\n },\r\n character: this.privAvatarConfig.character,\r\n customized: this.privAvatarConfig.customized,\r\n style: this.privAvatarConfig.style,\r\n }\r\n } as ISynthesisSectionVideo;\r\n }\r\n\r\n\r\n protected onAvatarEvent(metadata: ISynthesisMetadata): void {\r\n if (!!this.privAvatarSynthesizer.avatarEventReceived) {\r\n const avatarEventArgs: AvatarEventArgs = new AvatarEventArgs(\r\n metadata.Data.Offset,\r\n metadata.Data.Name);\r\n try {\r\n this.privAvatarSynthesizer.avatarEventReceived(this.privAvatarSynthesizer, avatarEventArgs);\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ArgumentNullError,\r\n} from \"../common/Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\nimport {\r\n AuthInfo,\r\n IAuthentication\r\n} from \"./IAuthentication.js\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class CognitiveSubscriptionKeyAuthentication implements IAuthentication {\r\n private privAuthInfo: AuthInfo;\r\n\r\n /**\r\n * Creates and initializes an instance of the CognitiveSubscriptionKeyAuthentication class.\r\n * @constructor\r\n * @param {string} subscriptionKey - The subscription key\r\n */\r\n public constructor(subscriptionKey: string) {\r\n if (!subscriptionKey) {\r\n throw new ArgumentNullError(\"subscriptionKey\");\r\n }\r\n\r\n this.privAuthInfo = new AuthInfo(HeaderNames.AuthKey, subscriptionKey);\r\n }\r\n\r\n /**\r\n * Fetches the subscription key.\r\n * @member\r\n * @function\r\n * @public\r\n * @param {string} authFetchEventId - The id to fetch.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public fetch(authFetchEventId: string): Promise {\r\n return Promise.resolve(this.privAuthInfo);\r\n }\r\n\r\n /**\r\n * Fetches the subscription key.\r\n * @member\r\n * @function\r\n * @public\r\n * @param {string} authFetchEventId - The id to fetch.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public fetchOnExpiry(authFetchEventId: string): Promise {\r\n return Promise.resolve(this.privAuthInfo);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ArgumentNullError } from \"../common/Exports.js\";\r\nimport { AuthInfo, IAuthentication } from \"./IAuthentication.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\n\r\nexport class CognitiveTokenAuthentication implements IAuthentication {\r\n private static privTokenPrefix: string = \"Bearer \";\r\n private privFetchCallback: (authFetchEventId: string) => Promise;\r\n private privFetchOnExpiryCallback: (authFetchEventId: string) => Promise;\r\n\r\n public constructor(fetchCallback: (authFetchEventId: string) => Promise, fetchOnExpiryCallback: (authFetchEventId: string) => Promise) {\r\n if (!fetchCallback) {\r\n throw new ArgumentNullError(\"fetchCallback\");\r\n }\r\n\r\n if (!fetchOnExpiryCallback) {\r\n throw new ArgumentNullError(\"fetchOnExpiryCallback\");\r\n }\r\n\r\n this.privFetchCallback = fetchCallback;\r\n this.privFetchOnExpiryCallback = fetchOnExpiryCallback;\r\n }\r\n\r\n public fetch(authFetchEventId: string): Promise {\r\n return this.privFetchCallback(authFetchEventId).then((token: string): AuthInfo => new AuthInfo(HeaderNames.Authorization, token === undefined ? undefined : CognitiveTokenAuthentication.privTokenPrefix + token));\r\n }\r\n\r\n public fetchOnExpiry(authFetchEventId: string): Promise {\r\n return this.privFetchOnExpiryCallback(authFetchEventId).then((token: string): AuthInfo => new AuthInfo(HeaderNames.Authorization, token === undefined ? undefined : CognitiveTokenAuthentication.privTokenPrefix + token));\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ServicePropertiesPropertyName,\r\n} from \"../common.speech/Exports.js\";\r\nimport { IConnection, IStringDictionary } from \"../common/Exports.js\";\r\nimport { PropertyId } from \"../sdk/Exports.js\";\r\nimport { AuthInfo, IConnectionFactory, RecognizerConfig } from \"./Exports.js\";\r\nimport { QueryParameterNames } from \"./QueryParameterNames.js\";\r\n\r\nexport abstract class ConnectionFactoryBase implements IConnectionFactory {\r\n\r\n public static getHostSuffix(region: string): string {\r\n if (!!region) {\r\n if (region.toLowerCase().startsWith(\"china\")) {\r\n return \".azure.cn\";\r\n }\r\n if (region.toLowerCase().startsWith(\"usgov\")) {\r\n return \".azure.us\";\r\n }\r\n }\r\n return \".microsoft.com\";\r\n }\r\n\r\n public abstract create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection;\r\n\r\n protected setCommonUrlParams(\r\n config: RecognizerConfig,\r\n queryParams: IStringDictionary,\r\n endpoint: string): void {\r\n\r\n const propertyIdToParameterMap: Map = new Map([\r\n [PropertyId.Speech_SegmentationSilenceTimeoutMs, QueryParameterNames.SegmentationSilenceTimeoutMs],\r\n [PropertyId.SpeechServiceConnection_EnableAudioLogging, QueryParameterNames.EnableAudioLogging],\r\n [PropertyId.SpeechServiceConnection_EndSilenceTimeoutMs, QueryParameterNames.EndSilenceTimeoutMs],\r\n [PropertyId.SpeechServiceConnection_InitialSilenceTimeoutMs, QueryParameterNames.InitialSilenceTimeoutMs],\r\n [PropertyId.SpeechServiceResponse_PostProcessingOption, QueryParameterNames.Postprocessing],\r\n [PropertyId.SpeechServiceResponse_ProfanityOption, QueryParameterNames.Profanity],\r\n [PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps, QueryParameterNames.EnableWordLevelTimestamps],\r\n [PropertyId.SpeechServiceResponse_StablePartialResultThreshold, QueryParameterNames.StableIntermediateThreshold],\r\n ]);\r\n\r\n propertyIdToParameterMap.forEach((parameterName: string, propertyId: PropertyId): void => {\r\n this.setUrlParameter(propertyId, parameterName, config, queryParams, endpoint);\r\n });\r\n\r\n\r\n const serviceProperties: IStringDictionary = JSON.parse(config.parameters.getProperty(ServicePropertiesPropertyName, \"{}\")) as IStringDictionary;\r\n\r\n Object.keys(serviceProperties).forEach((value: string): void => {\r\n queryParams[value] = serviceProperties[value];\r\n });\r\n }\r\n\r\n protected setUrlParameter(\r\n propId: PropertyId,\r\n parameterName: string,\r\n config: RecognizerConfig,\r\n queryParams: IStringDictionary,\r\n endpoint: string): void {\r\n\r\n const value: string = config.parameters.getProperty(propId, undefined);\r\n\r\n // FIXME: The .search() check will incorrectly match parameter name anywhere in the string\r\n // including e.g. the path portion, or even as a substring of other query parameters\r\n if (value && (!endpoint || endpoint.search(parameterName) === -1)) {\r\n queryParams[parameterName] = value.toLocaleLowerCase();\r\n }\r\n }\r\n\r\n}\r\n","import { IAudioSource } from \"../common/Exports.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n OutputFormat,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n ResultReason,\r\n SpeechRecognitionResult\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n DetailedSpeechPhrase,\r\n EnumTranslation,\r\n IAuthentication,\r\n IConnectionFactory,\r\n OutputFormatPropertyName,\r\n RecognitionStatus,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SimpleSpeechPhrase,\r\n SpeechHypothesis\r\n} from \"./Exports.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\nexport class ConversationServiceRecognizer extends ServiceRecognizerBase {\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n recognizer: Recognizer) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, recognizer);\r\n this.handleSpeechPhraseMessage = async (textBody: string): Promise => this.handleSpeechPhrase(textBody);\r\n this.handleSpeechHypothesisMessage = (textBody: string): void => this.handleSpeechHypothesis(textBody);\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n void connectionMessage;\r\n return;\r\n }\r\n\r\n protected handleRecognizedCallback(result: SpeechRecognitionResult, offset: number, sessionId: string): void {\r\n void result;\r\n void offset;\r\n void sessionId;\r\n return;\r\n }\r\n\r\n protected handleRecognizingCallback(result: SpeechRecognitionResult, duration: number, sessionId: string): void {\r\n void result;\r\n void duration;\r\n void sessionId;\r\n return;\r\n }\r\n\r\n protected async processSpeechMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n let processed: boolean = false;\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"speech.hypothesis\":\r\n case \"speech.fragment\":\r\n if (!!this.handleSpeechHypothesisMessage) {\r\n this.handleSpeechHypothesisMessage(connectionMessage.textBody);\r\n }\r\n processed = true;\r\n break;\r\n case \"speech.phrase\":\r\n if (!!this.handleSpeechPhraseMessage) {\r\n await this.handleSpeechPhraseMessage(connectionMessage.textBody);\r\n }\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n return processed;\r\n }\r\n\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n // Implementing to allow inheritance\r\n void sessionId;\r\n void requestId;\r\n void cancellationReason;\r\n void errorCode;\r\n void error;\r\n }\r\n\r\n protected async handleSpeechPhrase(textBody: string): Promise {\r\n\r\n const simple: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(textBody);\r\n const resultReason: ResultReason = EnumTranslation.implTranslateRecognitionResult(simple.RecognitionStatus);\r\n let result: SpeechRecognitionResult;\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, textBody);\r\n const simpleOffset = simple.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n let offset = simpleOffset;\r\n\r\n this.privRequestSession.onPhraseRecognized(this.privRequestSession.currentTurnAudioOffset + simple.Offset + simple.Duration);\r\n\r\n if (ResultReason.Canceled === resultReason) {\r\n const cancelReason: CancellationReason = EnumTranslation.implTranslateCancelResult(simple.RecognitionStatus);\r\n const cancellationErrorCode: CancellationErrorCode = EnumTranslation.implTranslateCancelErrorCode(simple.RecognitionStatus);\r\n\r\n await this.cancelRecognitionLocal(\r\n cancelReason,\r\n cancellationErrorCode,\r\n EnumTranslation.implTranslateErrorDetails(cancellationErrorCode));\r\n\r\n } else {\r\n if (!(this.privRequestSession.isSpeechEnded && resultReason === ResultReason.NoMatch && simple.RecognitionStatus !== RecognitionStatus.InitialSilenceTimeout)) {\r\n if (this.privRecognizerConfig.parameters.getProperty(OutputFormatPropertyName) === OutputFormat[OutputFormat.Simple]) {\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n simple.DisplayText,\r\n simple.Duration,\r\n simpleOffset,\r\n simple.Language,\r\n simple.LanguageDetectionConfidence,\r\n simple.SpeakerId,\r\n undefined,\r\n textBody,\r\n resultProps);\r\n } else {\r\n const detailed: DetailedSpeechPhrase = DetailedSpeechPhrase.fromJSON(textBody);\r\n const totalOffset: number = detailed.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n const offsetCorrectedJson: string = detailed.getJsonWithCorrectedOffsets(totalOffset);\r\n\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n detailed.Text,\r\n detailed.Duration,\r\n totalOffset,\r\n detailed.Language,\r\n detailed.LanguageDetectionConfidence,\r\n detailed.SpeakerId,\r\n undefined,\r\n offsetCorrectedJson,\r\n resultProps);\r\n\r\n offset = result.offset;\r\n }\r\n\r\n this.handleRecognizedCallback(result, offset, this.privRequestSession.sessionId);\r\n }\r\n }\r\n }\r\n\r\n protected handleSpeechHypothesis(textBody: string): void {\r\n const hypothesis: SpeechHypothesis = SpeechHypothesis.fromJSON(textBody);\r\n const offset: number = hypothesis.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, textBody);\r\n\r\n const result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n ResultReason.RecognizingSpeech,\r\n hypothesis.Text,\r\n hypothesis.Duration,\r\n offset,\r\n hypothesis.Language,\r\n hypothesis.LanguageDetectionConfidence,\r\n hypothesis.SpeakerId,\r\n undefined,\r\n textBody,\r\n resultProps);\r\n\r\n this.privRequestSession.onHypothesis(offset);\r\n\r\n this.handleRecognizingCallback(result, hypothesis.Duration, this.privRequestSession.sessionId);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n IConnection,\r\n IStringDictionary\r\n} from \"../common/Exports.js\";\r\nimport {\r\n PropertyId\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n ServicePropertiesPropertyName\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./ConnectionFactoryBase.js\";\r\nimport {\r\n AuthInfo,\r\n RecognizerConfig,\r\n WebsocketMessageFormatter\r\n} from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\nimport {\r\n QueryParameterNames\r\n} from \"./QueryParameterNames.js\";\r\n\r\nexport class ConversationTranscriberConnectionFactory extends ConnectionFactoryBase {\r\n private readonly universalUri: string = \"/speech/universal/v2\";\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, undefined);\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region, undefined);\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, \"wss://\" + region + \".stt.speech\" + hostSuffix);\r\n const queryParams: IStringDictionary = {};\r\n const endpointId: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_EndpointId, undefined);\r\n const language: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, undefined);\r\n\r\n if (endpointId) {\r\n if (!endpoint || endpoint.search(QueryParameterNames.CustomSpeechDeploymentId) === -1) {\r\n queryParams[QueryParameterNames.CustomSpeechDeploymentId] = endpointId;\r\n }\r\n } else if (language) {\r\n if (!endpoint || endpoint.search(QueryParameterNames.Language) === -1) {\r\n queryParams[QueryParameterNames.Language] = language;\r\n }\r\n }\r\n\r\n if (config.autoDetectSourceLanguages !== undefined) {\r\n queryParams[QueryParameterNames.EnableLanguageId] = \"true\";\r\n }\r\n\r\n this.setV2UrlParams(config, queryParams, endpoint);\r\n\r\n if (!endpoint) {\r\n endpoint = `${host}${this.universalUri}`;\r\n }\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n\r\n const webSocketConnection = new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n\r\n // Set the value of SpeechServiceConnection_Url to webSocketConnection.uri (and not to `endpoint`), since this value is the final\r\n // URI that was used to make the connection (including query parameters).\r\n const uri: string = webSocketConnection.uri;\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, uri);\r\n\r\n return webSocketConnection;\r\n }\r\n\r\n protected setV2UrlParams(\r\n config: RecognizerConfig,\r\n queryParams: IStringDictionary,\r\n endpoint: string): void {\r\n\r\n const propertyIdToParameterMap: Map = new Map([\r\n [PropertyId.Speech_SegmentationSilenceTimeoutMs, QueryParameterNames.SegmentationSilenceTimeoutMs],\r\n [PropertyId.SpeechServiceConnection_EnableAudioLogging, QueryParameterNames.EnableAudioLogging],\r\n [PropertyId.SpeechServiceConnection_EndSilenceTimeoutMs, QueryParameterNames.EndSilenceTimeoutMs],\r\n [PropertyId.SpeechServiceConnection_InitialSilenceTimeoutMs, QueryParameterNames.InitialSilenceTimeoutMs],\r\n [PropertyId.SpeechServiceResponse_PostProcessingOption, QueryParameterNames.Postprocessing],\r\n [PropertyId.SpeechServiceResponse_ProfanityOption, QueryParameterNames.Profanity],\r\n [PropertyId.SpeechServiceResponse_StablePartialResultThreshold, QueryParameterNames.StableIntermediateThreshold],\r\n ]);\r\n\r\n propertyIdToParameterMap.forEach((parameterName: string, propertyId: PropertyId): void => {\r\n this.setUrlParameter(propertyId, parameterName, config, queryParams, endpoint);\r\n });\r\n\r\n\r\n const serviceProperties: IStringDictionary = JSON.parse(config.parameters.getProperty(ServicePropertiesPropertyName, \"{}\")) as IStringDictionary;\r\n\r\n Object.keys(serviceProperties).forEach((value: string): void => {\r\n queryParams[value] = serviceProperties[value];\r\n });\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IAudioSource } from \"../common/Exports.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n OutputFormat,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n ConversationTranscriptionCanceledEventArgs,\r\n ConversationTranscriptionEventArgs,\r\n ConversationTranscriptionResult,\r\n ConversationTranscriber,\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n DetailedSpeechPhrase,\r\n EnumTranslation,\r\n OutputFormatPropertyName,\r\n RecognitionStatus,\r\n ServiceRecognizerBase,\r\n SimpleSpeechPhrase,\r\n SpeechHypothesis,\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\nimport { PhraseDetection, SpeakerDiarization } from \"./ServiceRecognizerBase.js\";\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class ConversationTranscriptionServiceRecognizer extends ServiceRecognizerBase {\r\n\r\n private privConversationTranscriber: ConversationTranscriber;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n conversationTranscriber: ConversationTranscriber) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, conversationTranscriber);\r\n this.privConversationTranscriber = conversationTranscriber;\r\n this.setSpeakerDiarizationJson();\r\n }\r\n\r\n protected setSpeakerDiarizationJson(): void {\r\n if (this.privEnableSpeakerId) {\r\n const phraseDetection = this.privSpeechContext.getSection(\"phraseDetection\") as PhraseDetection;\r\n phraseDetection.mode = \"Conversation\";\r\n const speakerDiarization: SpeakerDiarization = {};\r\n speakerDiarization.mode = \"Anonymous\";\r\n speakerDiarization.audioSessionId = this.privDiarizationSessionId;\r\n speakerDiarization.audioOffsetMs = 0;\r\n phraseDetection.speakerDiarization = speakerDiarization;\r\n this.privSpeechContext.setSection(\"phraseDetection\", phraseDetection);\r\n }\r\n }\r\n\r\n protected async processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n let result: ConversationTranscriptionResult;\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n let processed: boolean = false;\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"speech.hypothesis\":\r\n case \"speech.fragment\":\r\n const hypothesis: SpeechHypothesis = SpeechHypothesis.fromJSON(connectionMessage.textBody);\r\n const offset: number = hypothesis.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n\r\n result = new ConversationTranscriptionResult(\r\n this.privRequestSession.requestId,\r\n ResultReason.RecognizingSpeech,\r\n hypothesis.Text,\r\n hypothesis.Duration,\r\n offset,\r\n hypothesis.Language,\r\n hypothesis.LanguageDetectionConfidence,\r\n undefined, // Speaker Id\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n this.privRequestSession.onHypothesis(offset);\r\n\r\n const ev = new ConversationTranscriptionEventArgs(result, hypothesis.Duration, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privConversationTranscriber.transcribing) {\r\n try {\r\n this.privConversationTranscriber.transcribing(this.privConversationTranscriber, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n case \"speech.phrase\":\r\n const simple: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(connectionMessage.textBody);\r\n const resultReason: ResultReason = EnumTranslation.implTranslateRecognitionResult(simple.RecognitionStatus);\r\n\r\n this.privRequestSession.onPhraseRecognized(this.privRequestSession.currentTurnAudioOffset + simple.Offset + simple.Duration);\r\n\r\n if (ResultReason.Canceled === resultReason) {\r\n const cancelReason: CancellationReason = EnumTranslation.implTranslateCancelResult(simple.RecognitionStatus);\r\n const cancellationErrorCode: CancellationErrorCode = EnumTranslation.implTranslateCancelErrorCode(simple.RecognitionStatus);\r\n\r\n await this.cancelRecognitionLocal(\r\n cancelReason,\r\n cancellationErrorCode,\r\n EnumTranslation.implTranslateErrorDetails(cancellationErrorCode));\r\n\r\n } else {\r\n if (!(this.privRequestSession.isSpeechEnded && resultReason === ResultReason.NoMatch && simple.RecognitionStatus !== RecognitionStatus.InitialSilenceTimeout)) {\r\n if (this.privRecognizerConfig.parameters.getProperty(OutputFormatPropertyName) === OutputFormat[OutputFormat.Simple]) {\r\n result = new ConversationTranscriptionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n simple.DisplayText,\r\n simple.Duration,\r\n simple.Offset + this.privRequestSession.currentTurnAudioOffset,\r\n simple.Language,\r\n simple.LanguageDetectionConfidence,\r\n simple.SpeakerId,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n } else {\r\n const detailed: DetailedSpeechPhrase = DetailedSpeechPhrase.fromJSON(connectionMessage.textBody);\r\n const totalOffset: number = detailed.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n const offsetCorrectedJson: string = detailed.getJsonWithCorrectedOffsets(totalOffset);\r\n\r\n result = new ConversationTranscriptionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n detailed.RecognitionStatus === RecognitionStatus.Success ? detailed.NBest[0].Display : undefined,\r\n detailed.Duration,\r\n totalOffset,\r\n detailed.Language,\r\n detailed.LanguageDetectionConfidence,\r\n simple.SpeakerId,\r\n undefined,\r\n offsetCorrectedJson,\r\n resultProps);\r\n }\r\n\r\n const event: ConversationTranscriptionEventArgs = new ConversationTranscriptionEventArgs(result, result.offset, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privConversationTranscriber.transcribed) {\r\n try {\r\n this.privConversationTranscriber.transcribed(this.privConversationTranscriber, event);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n }\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n return processed;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n if (!!this.privConversationTranscriber.canceled) {\r\n const cancelEvent: ConversationTranscriptionCanceledEventArgs = new ConversationTranscriptionCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n sessionId);\r\n try {\r\n this.privConversationTranscriber.canceled(this.privConversationTranscriber, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports.js\";\r\nimport { OutputFormatPropertyName } from \"../common.speech/Exports.js\";\r\nimport { IConnection, IStringDictionary } from \"../common/Exports.js\";\r\nimport { DialogServiceConfig, OutputFormat, PropertyId } from \"../sdk/Exports.js\";\r\nimport { ConnectionFactoryBase } from \"./ConnectionFactoryBase.js\";\r\nimport { AuthInfo, RecognizerConfig, WebsocketMessageFormatter } from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\nimport { QueryParameterNames } from \"./QueryParameterNames.js\";\r\n\r\nexport class DialogConnectionFactory extends ConnectionFactoryBase {\r\n\r\n private static readonly ApiKey: string = \"api\";\r\n private static readonly BaseUrl: string = \"convai.speech\";\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n const applicationId: string = config.parameters.getProperty(PropertyId.Conversation_ApplicationId, \"\");\r\n const dialogType: string = config.parameters.getProperty(PropertyId.Conversation_DialogType);\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n const language: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, \"en-US\");\r\n const requestTurnStatus: string = config.parameters.getProperty(PropertyId.Conversation_Request_Bot_Status_Messages, \"true\");\r\n\r\n const queryParams: IStringDictionary = {};\r\n queryParams[HeaderNames.ConnectionId] = connectionId;\r\n queryParams[QueryParameterNames.Format] = config.parameters.getProperty(OutputFormatPropertyName, OutputFormat[OutputFormat.Simple]).toLowerCase();\r\n queryParams[QueryParameterNames.Language] = language;\r\n queryParams[QueryParameterNames.RequestBotStatusMessages] = requestTurnStatus;\r\n if (applicationId) {\r\n queryParams[QueryParameterNames.BotId] = applicationId;\r\n if (dialogType === DialogServiceConfig.DialogTypes.CustomCommands) {\r\n queryParams[HeaderNames.CustomCommandsAppId] = applicationId;\r\n }\r\n }\r\n\r\n const resourceInfix: string =\r\n dialogType === DialogServiceConfig.DialogTypes.CustomCommands ? \"commands/\"\r\n : \"\";\r\n const version: string =\r\n dialogType === DialogServiceConfig.DialogTypes.CustomCommands ? \"v1\"\r\n : dialogType === DialogServiceConfig.DialogTypes.BotFramework ? \"v3\"\r\n : \"v0\";\r\n\r\n const headers: IStringDictionary = {};\r\n\r\n if (authInfo.token != null && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n\r\n // The URL used for connection is chosen in a priority order of specification:\r\n // 1. If a custom endpoint is provided, that URL is used verbatim.\r\n // 2. If a custom host is provided (e.g. \"wss://my.custom.endpoint.com:1123\"), a URL is constructed from it.\r\n // 3. If no custom connection details are provided, a URL is constructed from default values.\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, \"\");\r\n if (!endpoint) {\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const host: string = config.parameters.getProperty(\r\n PropertyId.SpeechServiceConnection_Host,\r\n `wss://${region}.${DialogConnectionFactory.BaseUrl}${hostSuffix}`);\r\n const standardizedHost: string = host.endsWith(\"/\") ? host : host + \"/\";\r\n endpoint = `${standardizedHost}${resourceInfix}${DialogConnectionFactory.ApiKey}/${version}`;\r\n }\r\n\r\n this.setCommonUrlParams(config, queryParams, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ReplayableAudioNode\r\n} from \"../common.browser/Exports.js\";\r\nimport { SendingAgentContextMessageEvent } from \"../common/DialogEvents.js\";\r\nimport {\r\n BackgroundEvent,\r\n ConnectionEvent,\r\n ConnectionMessage,\r\n createGuid,\r\n createNoDashGuid,\r\n Deferred,\r\n DialogEvent,\r\n Events,\r\n EventSource,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IConnection,\r\n MessageType,\r\n ServiceEvent,\r\n} from \"../common/Exports.js\";\r\nimport { AudioOutputFormatImpl } from \"../sdk/Audio/AudioOutputFormat.js\";\r\nimport { PullAudioOutputStreamImpl } from \"../sdk/Audio/AudioOutputStream.js\";\r\nimport { AudioStreamFormatImpl } from \"../sdk/Audio/AudioStreamFormat.js\";\r\nimport {\r\n ActivityReceivedEventArgs,\r\n CancellationErrorCode,\r\n CancellationReason,\r\n DialogServiceConfig,\r\n DialogServiceConnector,\r\n PropertyCollection,\r\n PropertyId,\r\n RecognitionEventArgs,\r\n ResultReason,\r\n SessionEventArgs,\r\n SpeechRecognitionCanceledEventArgs,\r\n SpeechRecognitionEventArgs,\r\n SpeechRecognitionResult,\r\n TurnStatusReceivedEventArgs,\r\n} from \"../sdk/Exports.js\";\r\nimport { DialogServiceTurnStateManager } from \"./DialogServiceTurnStateManager.js\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n EnumTranslation,\r\n ISpeechConfigAudioDevice,\r\n RecognitionStatus,\r\n ServiceRecognizerBase,\r\n SimpleSpeechPhrase,\r\n SpeechDetected,\r\n SpeechHypothesis,\r\n SpeechKeyword,\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognitionMode, RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { ActivityPayloadResponse } from \"./ServiceMessages/ActivityResponsePayload.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\nexport class DialogServiceAdapter extends ServiceRecognizerBase {\r\n private privDialogServiceConnector: DialogServiceConnector;\r\n\r\n private privDialogAudioSource: IAudioSource;\r\n\r\n private privConnectionLoop: Promise;\r\n private terminateMessageLoop: boolean;\r\n private agentConfigSent: boolean;\r\n private privLastResult: SpeechRecognitionResult;\r\n private privEvents: EventSource;\r\n\r\n // Turns are of two kinds:\r\n // 1: SR turns, end when the SR result is returned and then turn end.\r\n // 2: Service turns where an activity is sent by the service along with the audio.\r\n private privTurnStateManager: DialogServiceTurnStateManager;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n dialogServiceConnector: DialogServiceConnector) {\r\n\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, dialogServiceConnector);\r\n\r\n this.privEvents = new EventSource();\r\n this.privDialogServiceConnector = dialogServiceConnector;\r\n this.receiveMessageOverride = (): Promise => this.receiveDialogMessageOverride();\r\n this.privTurnStateManager = new DialogServiceTurnStateManager();\r\n this.recognizeOverride =\r\n (recoMode: RecognitionMode, successCallback: (e: SpeechRecognitionResult) => void, errorCallback: (e: string) => void): Promise =>\r\n this.listenOnce(recoMode, successCallback, errorCallback);\r\n this.postConnectImplOverride = (connection: Promise): Promise => this.dialogConnectImpl(connection);\r\n this.configConnectionOverride = (connection: IConnection): Promise => this.configConnection(connection);\r\n this.disconnectOverride = (): Promise => this.privDisconnect();\r\n this.privDialogAudioSource = audioSource;\r\n\r\n this.agentConfigSent = false;\r\n this.privLastResult = null;\r\n this.connectionEvents.attach((connectionEvent: ConnectionEvent): void => {\r\n if (connectionEvent.name === \"ConnectionClosedEvent\") {\r\n this.terminateMessageLoop = true;\r\n }\r\n });\r\n }\r\n\r\n public async sendMessage(message: string): Promise {\r\n const interactionGuid: string = createGuid();\r\n const requestId: string = createNoDashGuid();\r\n\r\n const agentMessage: any = {\r\n context: {\r\n interactionId: interactionGuid\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n messagePayload: JSON.parse(message),\r\n version: 0.5\r\n };\r\n\r\n const agentMessageJson = JSON.stringify(agentMessage);\r\n const connection: IConnection = await this.fetchConnection();\r\n await connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"agent\",\r\n requestId,\r\n \"application/json\",\r\n agentMessageJson));\r\n\r\n }\r\n\r\n protected async privDisconnect(): Promise {\r\n await this.cancelRecognition(this.privRequestSession.sessionId,\r\n this.privRequestSession.requestId,\r\n CancellationReason.Error,\r\n CancellationErrorCode.NoError,\r\n \"Disconnecting\");\r\n\r\n this.terminateMessageLoop = true;\r\n this.agentConfigSent = false;\r\n return;\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n if (connectionMessage.messageType === MessageType.Text) {\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n }\r\n\r\n let result: SpeechRecognitionResult;\r\n let processed: boolean;\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"speech.phrase\":\r\n const speechPhrase: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(connectionMessage.textBody);\r\n\r\n this.privRequestSession.onPhraseRecognized(this.privRequestSession.currentTurnAudioOffset + speechPhrase.Offset + speechPhrase.Duration);\r\n\r\n if (speechPhrase.RecognitionStatus !== RecognitionStatus.TooManyRequests && speechPhrase.RecognitionStatus !== RecognitionStatus.Error) {\r\n const args: SpeechRecognitionEventArgs = this.fireEventForResult(speechPhrase, resultProps);\r\n this.privLastResult = args.result;\r\n\r\n if (!!this.privDialogServiceConnector.recognized) {\r\n try {\r\n this.privDialogServiceConnector.recognized(this.privDialogServiceConnector, args);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n processed = true;\r\n break;\r\n case \"speech.hypothesis\":\r\n const hypothesis: SpeechHypothesis = SpeechHypothesis.fromJSON(connectionMessage.textBody);\r\n const offset: number = hypothesis.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n ResultReason.RecognizingSpeech,\r\n hypothesis.Text,\r\n hypothesis.Duration,\r\n offset,\r\n hypothesis.Language,\r\n hypothesis.LanguageDetectionConfidence,\r\n undefined,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n this.privRequestSession.onHypothesis(offset);\r\n\r\n const ev = new SpeechRecognitionEventArgs(result, hypothesis.Duration, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privDialogServiceConnector.recognizing) {\r\n try {\r\n this.privDialogServiceConnector.recognizing(this.privDialogServiceConnector, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n case \"speech.keyword\":\r\n const keyword: SpeechKeyword = SpeechKeyword.fromJSON(connectionMessage.textBody);\r\n\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n keyword.Status === \"Accepted\" ? ResultReason.RecognizedKeyword : ResultReason.NoMatch,\r\n keyword.Text,\r\n keyword.Duration,\r\n keyword.Offset,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n if (keyword.Status !== \"Accepted\") {\r\n this.privLastResult = result;\r\n }\r\n\r\n const event = new SpeechRecognitionEventArgs(result, result.duration, result.resultId);\r\n\r\n if (!!this.privDialogServiceConnector.recognized) {\r\n try {\r\n this.privDialogServiceConnector.recognized(this.privDialogServiceConnector, event);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n case \"audio\":\r\n {\r\n const audioRequestId = connectionMessage.requestId.toUpperCase();\r\n const turn = this.privTurnStateManager.GetTurn(audioRequestId);\r\n try {\r\n // Empty binary message signals end of stream.\r\n if (!connectionMessage.binaryBody) {\r\n turn.endAudioStream();\r\n } else {\r\n turn.audioStream.write(connectionMessage.binaryBody);\r\n }\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n\r\n case \"response\":\r\n {\r\n this.handleResponseMessage(connectionMessage);\r\n\r\n }\r\n processed = true;\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n const defferal = new Deferred();\r\n defferal.resolve(processed);\r\n return defferal.promise;\r\n }\r\n\r\n // Cancels recognition.\r\n protected async cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): Promise {\r\n\r\n this.terminateMessageLoop = true;\r\n\r\n if (!!this.privRequestSession.isRecognizing) {\r\n await this.privRequestSession.onStopRecognizing();\r\n }\r\n\r\n if (!!this.privDialogServiceConnector.canceled) {\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n const cancelEvent: SpeechRecognitionCanceledEventArgs = new SpeechRecognitionCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n sessionId);\r\n\r\n try {\r\n this.privDialogServiceConnector.canceled(this.privDialogServiceConnector, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n\r\n if (!!this.privSuccessCallback) {\r\n const result: SpeechRecognitionResult = new SpeechRecognitionResult(\r\n undefined, // ResultId\r\n ResultReason.Canceled,\r\n undefined, // Text\r\n undefined, // Duration\r\n undefined, // Offset\r\n undefined, // Language\r\n undefined, // Language Detection Confidence\r\n undefined, // Speaker Id\r\n error,\r\n undefined, // Json\r\n properties);\r\n try {\r\n this.privSuccessCallback(result);\r\n this.privSuccessCallback = undefined;\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n }\r\n\r\n protected async listenOnce(\r\n recoMode: RecognitionMode,\r\n successCallback: (e: SpeechRecognitionResult) => void,\r\n errorCallback: (e: string) => void\r\n ): Promise {\r\n this.privRecognizerConfig.recognitionMode = recoMode;\r\n\r\n this.privSuccessCallback = successCallback;\r\n this.privErrorCallback = errorCallback;\r\n\r\n this.privRequestSession.startNewRecognition();\r\n this.privRequestSession.listenForServiceTelemetry(this.privDialogAudioSource.events);\r\n\r\n this.privRecognizerConfig.parameters.setProperty(PropertyId.Speech_SessionId, this.privRequestSession.sessionId);\r\n\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n\r\n const preAudioPromise: Promise = this.sendPreAudioMessages();\r\n\r\n const node: IAudioStreamNode = await this.privDialogAudioSource.attach(this.privRequestSession.audioNodeId);\r\n const format: AudioStreamFormatImpl = await this.privDialogAudioSource.format;\r\n const deviceInfo: ISpeechConfigAudioDevice = await this.privDialogAudioSource.deviceInfo;\r\n\r\n const audioNode = new ReplayableAudioNode(node, format.avgBytesPerSec);\r\n await this.privRequestSession.onAudioSourceAttachCompleted(audioNode, false);\r\n\r\n this.privRecognizerConfig.SpeechServiceConfig.Context.audio = { source: deviceInfo };\r\n\r\n try {\r\n await conPromise;\r\n await preAudioPromise;\r\n } catch (error) {\r\n await this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.ConnectionFailure, error as string);\r\n return Promise.resolve();\r\n }\r\n\r\n const sessionStartEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.sessionStarted) {\r\n this.privRecognizer.sessionStarted(this.privRecognizer, sessionStartEventArgs);\r\n }\r\n\r\n const audioSendPromise = this.sendAudio(audioNode);\r\n\r\n // /* eslint-disable no-empty */\r\n audioSendPromise.then((): void => { /* add? return true;*/ }, async (error: string): Promise => {\r\n await this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.RuntimeError, error);\r\n });\r\n }\r\n\r\n // Establishes a websocket connection to the end point.\r\n private dialogConnectImpl(connection: Promise): Promise {\r\n this.privConnectionLoop = this.startMessageLoop();\r\n return connection;\r\n }\r\n\r\n private receiveDialogMessageOverride(): Promise {\r\n\r\n // we won't rely on the cascading promises of the connection since we want to continually be available to receive messages\r\n const communicationCustodian: Deferred = new Deferred();\r\n\r\n const loop = async (): Promise => {\r\n try {\r\n const isDisposed: boolean = this.isDisposed();\r\n const terminateMessageLoop = (!this.isDisposed() && this.terminateMessageLoop);\r\n if (isDisposed || terminateMessageLoop) {\r\n // We're done.\r\n communicationCustodian.resolve(undefined);\r\n return;\r\n }\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n const message: ConnectionMessage = await connection.read();\r\n\r\n if (!message) {\r\n return loop();\r\n }\r\n\r\n const connectionMessage = SpeechConnectionMessage.fromConnectionMessage(message);\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"turn.start\":\r\n {\r\n const turnRequestId = connectionMessage.requestId.toUpperCase();\r\n const audioSessionReqId = this.privRequestSession.requestId.toUpperCase();\r\n\r\n // turn started by the service\r\n if (turnRequestId !== audioSessionReqId) {\r\n this.privTurnStateManager.StartTurn(turnRequestId);\r\n } else {\r\n this.privRequestSession.onServiceTurnStartResponse();\r\n }\r\n }\r\n break;\r\n\r\n case \"speech.startdetected\":\r\n const speechStartDetected: SpeechDetected = SpeechDetected.fromJSON(connectionMessage.textBody);\r\n\r\n const speechStartEventArgs = new RecognitionEventArgs(speechStartDetected.Offset, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.speechStartDetected) {\r\n this.privRecognizer.speechStartDetected(this.privRecognizer, speechStartEventArgs);\r\n }\r\n\r\n break;\r\n\r\n case \"speech.enddetected\":\r\n\r\n let json: string;\r\n\r\n if (connectionMessage.textBody.length > 0) {\r\n json = connectionMessage.textBody;\r\n } else {\r\n // If the request was empty, the JSON returned is empty.\r\n json = \"{ Offset: 0 }\";\r\n }\r\n\r\n const speechStopDetected: SpeechDetected = SpeechDetected.fromJSON(json);\r\n\r\n this.privRequestSession.onServiceRecognized(speechStopDetected.Offset + this.privRequestSession.currentTurnAudioOffset);\r\n\r\n const speechStopEventArgs = new RecognitionEventArgs(speechStopDetected.Offset + this.privRequestSession.currentTurnAudioOffset, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.speechEndDetected) {\r\n this.privRecognizer.speechEndDetected(this.privRecognizer, speechStopEventArgs);\r\n }\r\n break;\r\n\r\n case \"turn.end\":\r\n {\r\n const turnEndRequestId = connectionMessage.requestId.toUpperCase();\r\n\r\n const audioSessionReqId = this.privRequestSession.requestId.toUpperCase();\r\n\r\n // turn started by the service\r\n if (turnEndRequestId !== audioSessionReqId) {\r\n this.privTurnStateManager.CompleteTurn(turnEndRequestId);\r\n } else {\r\n // Audio session turn\r\n\r\n const sessionStopEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n await this.privRequestSession.onServiceTurnEndResponse(false);\r\n\r\n if (!this.privRecognizerConfig.isContinuousRecognition || this.privRequestSession.isSpeechEnded || !this.privRequestSession.isRecognizing) {\r\n if (!!this.privRecognizer.sessionStopped) {\r\n this.privRecognizer.sessionStopped(this.privRecognizer, sessionStopEventArgs);\r\n }\r\n }\r\n\r\n // report result to promise.\r\n if (!!this.privSuccessCallback && this.privLastResult) {\r\n try {\r\n this.privSuccessCallback(this.privLastResult);\r\n this.privLastResult = null;\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n }\r\n }\r\n break;\r\n\r\n default:\r\n try {\r\n const processed = await this.processTypeSpecificMessages(connectionMessage);\r\n if (!processed) {\r\n if (!!this.serviceEvents) {\r\n this.serviceEvents.onEvent(new ServiceEvent(connectionMessage.path.toLowerCase(), connectionMessage.textBody));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n }\r\n const ret: Promise = loop();\r\n\r\n return ret;\r\n } catch (error) {\r\n this.terminateMessageLoop = true;\r\n communicationCustodian.resolve();\r\n }\r\n };\r\n\r\n loop().catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n\r\n return communicationCustodian.promise;\r\n }\r\n\r\n private async startMessageLoop(): Promise {\r\n\r\n this.terminateMessageLoop = false;\r\n\r\n try {\r\n await this.receiveDialogMessageOverride();\r\n } catch (error) {\r\n await this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.RuntimeError, error as string);\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n // Takes an established websocket connection to the endpoint and sends speech configuration information.\r\n private async configConnection(connection: IConnection): Promise {\r\n if (this.terminateMessageLoop) {\r\n this.terminateMessageLoop = false;\r\n return Promise.reject(\"Connection to service terminated.\");\r\n }\r\n\r\n await this.sendSpeechServiceConfig(connection, this.privRequestSession, this.privRecognizerConfig.SpeechServiceConfig.serialize());\r\n await this.sendAgentConfig(connection);\r\n return connection;\r\n }\r\n\r\n private async sendPreAudioMessages(): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n this.addKeywordContextData();\r\n await this.sendSpeechContext(connection, true);\r\n await this.sendAgentContext(connection);\r\n await this.sendWaveHeader(connection);\r\n }\r\n\r\n private sendAgentConfig(connection: IConnection): Promise {\r\n if (this.agentConfig && !this.agentConfigSent) {\r\n\r\n if (this.privRecognizerConfig\r\n .parameters\r\n .getProperty(PropertyId.Conversation_DialogType) === DialogServiceConfig.DialogTypes.CustomCommands) {\r\n const config = this.agentConfig.get();\r\n config.botInfo.commandsCulture = this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, \"en-us\");\r\n this.agentConfig.set(config);\r\n }\r\n this.onEvent(new SendingAgentContextMessageEvent(this.agentConfig));\r\n\r\n const agentConfigJson = this.agentConfig.toJsonString();\r\n\r\n // guard against sending this multiple times on one connection\r\n this.agentConfigSent = true;\r\n\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"agent.config\",\r\n this.privRequestSession.requestId,\r\n \"application/json\",\r\n agentConfigJson));\r\n }\r\n\r\n return;\r\n }\r\n\r\n private sendAgentContext(connection: IConnection): Promise {\r\n const guid: string = createGuid();\r\n\r\n const speechActivityTemplate = this.privDialogServiceConnector.properties.getProperty(PropertyId.Conversation_Speech_Activity_Template);\r\n\r\n const agentContext: any = {\r\n channelData: \"\",\r\n context: {\r\n interactionId: guid\r\n },\r\n messagePayload: typeof speechActivityTemplate === undefined ? undefined : speechActivityTemplate,\r\n version: 0.5\r\n };\r\n\r\n const agentContextJson = JSON.stringify(agentContext);\r\n\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speech.agent.context\",\r\n this.privRequestSession.requestId,\r\n \"application/json\",\r\n agentContextJson));\r\n }\r\n\r\n private fireEventForResult(serviceResult: SimpleSpeechPhrase, properties: PropertyCollection): SpeechRecognitionEventArgs {\r\n const resultReason: ResultReason = EnumTranslation.implTranslateRecognitionResult(serviceResult.RecognitionStatus);\r\n\r\n const offset: number = serviceResult.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n\r\n const result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n serviceResult.DisplayText,\r\n serviceResult.Duration,\r\n offset,\r\n serviceResult.Language,\r\n serviceResult.LanguageDetectionConfidence,\r\n undefined,\r\n undefined,\r\n JSON.stringify(serviceResult),\r\n properties);\r\n\r\n const ev = new SpeechRecognitionEventArgs(result, offset, this.privRequestSession.sessionId);\r\n return ev;\r\n }\r\n\r\n private handleResponseMessage(responseMessage: SpeechConnectionMessage): void {\r\n // \"response\" messages can contain either \"message\" (activity) or \"MessageStatus\" data. Fire the appropriate\r\n // event according to the message type that's specified.\r\n const responsePayload: { messageType: string } = JSON.parse(responseMessage.textBody) as { messageType: string };\r\n switch (responsePayload.messageType.toLowerCase()) {\r\n case \"message\":\r\n const responseRequestId = responseMessage.requestId.toUpperCase();\r\n const activityPayload: ActivityPayloadResponse = ActivityPayloadResponse.fromJSON(responseMessage.textBody);\r\n const turn = this.privTurnStateManager.GetTurn(responseRequestId);\r\n\r\n // update the conversation Id\r\n if (activityPayload.conversationId) {\r\n const updateAgentConfig = this.agentConfig.get();\r\n updateAgentConfig.botInfo.conversationId = activityPayload.conversationId;\r\n this.agentConfig.set(updateAgentConfig);\r\n }\r\n\r\n const pullAudioOutputStream: PullAudioOutputStreamImpl = turn.processActivityPayload(\r\n activityPayload,\r\n AudioOutputFormatImpl.fromSpeechSynthesisOutputFormatString(this.privDialogServiceConnector.properties.getProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, undefined)));\r\n const activity = new ActivityReceivedEventArgs(activityPayload.messagePayload, pullAudioOutputStream);\r\n if (!!this.privDialogServiceConnector.activityReceived) {\r\n try {\r\n this.privDialogServiceConnector.activityReceived(this.privDialogServiceConnector, activity);\r\n /* eslint-disable-next-line no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n break;\r\n\r\n case \"messagestatus\":\r\n if (!!this.privDialogServiceConnector.turnStatusReceived) {\r\n try {\r\n this.privDialogServiceConnector.turnStatusReceived(\r\n this.privDialogServiceConnector,\r\n new TurnStatusReceivedEventArgs(responseMessage.textBody));\r\n /* eslint-disable-next-line no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n break;\r\n\r\n default:\r\n Events.instance.onEvent(\r\n new BackgroundEvent(`Unexpected response of type ${responsePayload.messageType}. Ignoring.`));\r\n break;\r\n }\r\n }\r\n\r\n private onEvent(event: DialogEvent): void {\r\n this.privEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n private addKeywordContextData(): void {\r\n const keywordPropertyValue: string = this.privRecognizerConfig.parameters.getProperty(\"SPEECH-KeywordsToDetect\");\r\n if (keywordPropertyValue === undefined) {\r\n return;\r\n }\r\n\r\n const keywordOffsetPropertyValue: string = this.privRecognizerConfig.parameters\r\n .getProperty(\"SPEECH-KeywordsToDetect-Offsets\");\r\n const keywordDurationPropertyValue: string = this.privRecognizerConfig.parameters\r\n .getProperty(\"SPEECH-KeywordsToDetect-Durations\");\r\n\r\n const keywords = keywordPropertyValue.split(\";\");\r\n const keywordOffsets = keywordOffsetPropertyValue === undefined ? [] : keywordOffsetPropertyValue.split(\";\");\r\n const keywordDurations = keywordDurationPropertyValue === undefined ? [] : keywordDurationPropertyValue.split(\";\");\r\n\r\n const keywordDefinitionArray = [];\r\n for (let i = 0; i < keywords.length; i++) {\r\n const definition: { [section: string]: any } = {};\r\n definition.text = keywords[i];\r\n if (i < keywordOffsets.length) {\r\n definition.offset = Number(keywordOffsets[i]);\r\n }\r\n if (i < keywordDurations.length) {\r\n definition.duration = Number(keywordDurations[i]);\r\n }\r\n keywordDefinitionArray.push(definition);\r\n }\r\n\r\n this.speechContext.setSection(\"invocationSource\", \"VoiceActivationWithKeyword\");\r\n this.speechContext.setSection(\"keywordDetection\", [{\r\n clientDetectedKeywords: keywordDefinitionArray,\r\n onReject: { action: \"EndOfTurn\" },\r\n type: \"startTrigger\"\r\n }]);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { AudioOutputFormatImpl } from \"../sdk/Audio/AudioOutputFormat.js\";\r\nimport { AudioOutputStream, PullAudioOutputStreamImpl } from \"../sdk/Audio/AudioOutputStream.js\";\r\nimport { DialogServiceTurnStateManager } from \"./DialogServiceTurnStateManager.js\";\r\nimport { ActivityPayloadResponse, MessageDataStreamType } from \"./ServiceMessages/ActivityResponsePayload.js\";\r\n\r\nexport class DialogServiceTurnState {\r\n private privRequestId: string;\r\n private privIsCompleted: boolean;\r\n private privAudioStream: PullAudioOutputStreamImpl;\r\n private privTimeoutToken: any;\r\n private privTurnManager: DialogServiceTurnStateManager;\r\n\r\n public constructor(manager: DialogServiceTurnStateManager, requestId: string) {\r\n this.privRequestId = requestId;\r\n this.privIsCompleted = false;\r\n this.privAudioStream = null;\r\n this.privTurnManager = manager;\r\n this.resetTurnEndTimeout();\r\n }\r\n\r\n public get audioStream(): PullAudioOutputStreamImpl {\r\n // Called when is needed to stream.\r\n this.resetTurnEndTimeout();\r\n return this.privAudioStream;\r\n }\r\n\r\n public processActivityPayload(payload: ActivityPayloadResponse, audioFormat?: AudioOutputFormatImpl): PullAudioOutputStreamImpl {\r\n if (payload.messageDataStreamType === MessageDataStreamType.TextToSpeechAudio) {\r\n this.privAudioStream = AudioOutputStream.createPullStream() as PullAudioOutputStreamImpl;\r\n this.privAudioStream.format = (audioFormat !== undefined) ? audioFormat : AudioOutputFormatImpl.getDefaultOutputFormat();\r\n }\r\n return this.privAudioStream;\r\n }\r\n\r\n public endAudioStream(): void {\r\n if (this.privAudioStream !== null && !this.privAudioStream.isClosed) {\r\n this.privAudioStream.close();\r\n }\r\n }\r\n\r\n public complete(): void {\r\n if (this.privTimeoutToken !== undefined) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n clearTimeout(this.privTimeoutToken);\r\n }\r\n this.endAudioStream();\r\n }\r\n\r\n private resetTurnEndTimeout(): void {\r\n if (this.privTimeoutToken !== undefined) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n clearTimeout(this.privTimeoutToken);\r\n }\r\n this.privTimeoutToken = setTimeout((): void => {\r\n this.privTurnManager.CompleteTurn(this.privRequestId);\r\n return;\r\n }, 2000);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { InvalidOperationError } from \"../common/Error.js\";\r\nimport { DialogServiceTurnState } from \"./DialogServiceTurnState.js\";\r\n\r\nexport class DialogServiceTurnStateManager {\r\n private privTurnMap: Map;\r\n\r\n public constructor() {\r\n this.privTurnMap = new Map();\r\n return;\r\n }\r\n\r\n public StartTurn(id: string): DialogServiceTurnState {\r\n if (this.privTurnMap.has(id)) {\r\n throw new InvalidOperationError(\"Service error: There is already a turn with id:\" + id);\r\n }\r\n const turnState: DialogServiceTurnState = new DialogServiceTurnState(this, id);\r\n this.privTurnMap.set(id, turnState);\r\n return this.privTurnMap.get(id);\r\n }\r\n\r\n public GetTurn(id: string): DialogServiceTurnState {\r\n return this.privTurnMap.get(id);\r\n }\r\n\r\n public CompleteTurn(id: string): DialogServiceTurnState {\r\n if (!this.privTurnMap.has(id)) {\r\n throw new InvalidOperationError(\"Service error: Received turn end for an unknown turn id:\" + id);\r\n }\r\n const turnState = this.privTurnMap.get(id);\r\n turnState.complete();\r\n this.privTurnMap.delete(id);\r\n return turnState;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IDynamicGrammar,\r\n IDynamicGrammarGeneric,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Responsible for building the object to be sent to the speech service to support dynamic grammars.\r\n * @class DynamicGrammarBuilder\r\n */\r\nexport class DynamicGrammarBuilder {\r\n\r\n private privPhrases: string[];\r\n private privGrammars: string[];\r\n\r\n // Adds one more reference phrases to the dynamic grammar to send.\r\n // All added phrases are generic phrases.\r\n public addPhrase(phrase: string | string[]): void {\r\n if (!this.privPhrases) {\r\n this.privPhrases = [];\r\n }\r\n\r\n if (phrase instanceof Array) {\r\n this.privPhrases = this.privPhrases.concat(phrase);\r\n } else {\r\n this.privPhrases.push(phrase);\r\n }\r\n }\r\n\r\n // Clears all phrases stored in the current object.\r\n public clearPhrases(): void {\r\n this.privPhrases = undefined;\r\n }\r\n\r\n // Adds one or more reference grammars to the current grammar.\r\n public addReferenceGrammar(grammar: string | string[]): void {\r\n if (!this.privGrammars) {\r\n this.privGrammars = [];\r\n }\r\n\r\n if (grammar instanceof Array) {\r\n this.privGrammars = this.privGrammars.concat(grammar);\r\n } else {\r\n this.privGrammars.push(grammar);\r\n }\r\n }\r\n\r\n // clears all grammars stored on the recognizer.\r\n public clearGrammars(): void {\r\n this.privGrammars = undefined;\r\n }\r\n\r\n // Generates an object that represents the dynamic grammar used by the Speech Service.\r\n // This is done by building an object with the correct layout based on the phrases and reference grammars added to this instance\r\n // of a DynamicGrammarBuilder\r\n public generateGrammarObject(): IDynamicGrammar {\r\n if (this.privGrammars === undefined && this.privPhrases === undefined) {\r\n return undefined;\r\n }\r\n\r\n const retObj: IDynamicGrammar = {};\r\n retObj.ReferenceGrammars = this.privGrammars;\r\n\r\n if (undefined !== this.privPhrases && 0 !== this.privPhrases.length) {\r\n const retPhrases: IDynamicGrammarGeneric[] = [];\r\n\r\n this.privPhrases.forEach((value: string): void => {\r\n retPhrases.push({\r\n Text: value,\r\n });\r\n });\r\n\r\n retObj.Groups = [{ Type: \"Generic\", Items: retPhrases }];\r\n }\r\n\r\n return retObj;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n ResultReason\r\n} from \"../sdk/Exports.js\";\r\nimport { RecognitionStatus } from \"./Exports.js\";\r\n\r\nexport class EnumTranslation {\r\n public static implTranslateRecognitionResult(recognitionStatus: RecognitionStatus, expectEndOfDictation: boolean = false): ResultReason {\r\n let reason = ResultReason.Canceled;\r\n switch (recognitionStatus) {\r\n case RecognitionStatus.Success:\r\n reason = ResultReason.RecognizedSpeech;\r\n break;\r\n case RecognitionStatus.EndOfDictation:\r\n // If we need the result in EndOfDictation (typically some session level result),\r\n // translate into RecognizedSpeech, otherwise NoMatch\r\n reason = expectEndOfDictation ? ResultReason.RecognizedSpeech : ResultReason.NoMatch;\r\n break;\r\n case RecognitionStatus.NoMatch:\r\n case RecognitionStatus.InitialSilenceTimeout:\r\n case RecognitionStatus.BabbleTimeout:\r\n reason = ResultReason.NoMatch;\r\n break;\r\n case RecognitionStatus.Error:\r\n case RecognitionStatus.BadRequest:\r\n case RecognitionStatus.Forbidden:\r\n default:\r\n reason = ResultReason.Canceled;\r\n break;\r\n }\r\n return reason;\r\n }\r\n\r\n public static implTranslateCancelResult(recognitionStatus: RecognitionStatus): CancellationReason {\r\n let reason = CancellationReason.EndOfStream;\r\n switch (recognitionStatus) {\r\n case RecognitionStatus.Success:\r\n case RecognitionStatus.EndOfDictation:\r\n case RecognitionStatus.NoMatch:\r\n reason = CancellationReason.EndOfStream;\r\n break;\r\n case RecognitionStatus.InitialSilenceTimeout:\r\n case RecognitionStatus.BabbleTimeout:\r\n case RecognitionStatus.Error:\r\n case RecognitionStatus.BadRequest:\r\n case RecognitionStatus.Forbidden:\r\n default:\r\n reason = CancellationReason.Error;\r\n break;\r\n }\r\n return reason;\r\n }\r\n\r\n public static implTranslateCancelErrorCode(recognitionStatus: RecognitionStatus): CancellationErrorCode {\r\n let reason: CancellationErrorCode = CancellationErrorCode.NoError;\r\n switch (recognitionStatus) {\r\n case RecognitionStatus.Error:\r\n reason = CancellationErrorCode.ServiceError;\r\n break;\r\n case RecognitionStatus.TooManyRequests:\r\n reason = CancellationErrorCode.TooManyRequests;\r\n break;\r\n case RecognitionStatus.BadRequest:\r\n reason = CancellationErrorCode.BadRequestParameters;\r\n break;\r\n case RecognitionStatus.Forbidden:\r\n reason = CancellationErrorCode.Forbidden;\r\n break;\r\n default:\r\n reason = CancellationErrorCode.NoError;\r\n break;\r\n }\r\n\r\n return reason;\r\n\r\n }\r\n\r\n public static implTranslateErrorDetails(cancellationErrorCode: CancellationErrorCode): string {\r\n let errorDetails: string = \"The speech service encountered an internal error and could not continue.\";\r\n switch (cancellationErrorCode) {\r\n case CancellationErrorCode.Forbidden:\r\n errorDetails = \"The recognizer is using a free subscription that ran out of quota.\";\r\n break;\r\n case CancellationErrorCode.BadRequestParameters:\r\n errorDetails = \"Invalid parameter or unsupported audio format in the request.\";\r\n break;\r\n case CancellationErrorCode.TooManyRequests:\r\n errorDetails = \"The number of parallel requests exceeded the number of allowed concurrent transcriptions.\";\r\n break;\r\n default:\r\n break;\r\n }\r\n return errorDetails;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// Make sure not to export internal modules.\r\n//\r\nexport * from \"./CognitiveSubscriptionKeyAuthentication.js\";\r\nexport * from \"./CognitiveTokenAuthentication.js\";\r\nexport * from \"./IAuthentication.js\";\r\nexport * from \"./IConnectionFactory.js\";\r\nexport * from \"./ISynthesisConnectionFactory.js\";\r\nexport * from \"./IntentConnectionFactory.js\";\r\nexport * from \"./SpeakerRecognitionConnectionFactory.js\";\r\nexport * from \"./RecognitionEvents.js\";\r\nexport * from \"./ServiceRecognizerBase.js\";\r\nexport * from \"./ConversationServiceRecognizer.js\";\r\nexport * from \"./RecognizerConfig.js\";\r\nexport * from \"./SpeechServiceInterfaces.js\";\r\nexport * from \"./WebsocketMessageFormatter.js\";\r\nexport * from \"./SpeechConnectionFactory.js\";\r\nexport * from \"./ConversationTranscriberConnectionFactory.js\";\r\nexport * from \"./TranscriberConnectionFactory.js\";\r\nexport * from \"./TranslationConnectionFactory.js\";\r\nexport * from \"./SpeechSynthesisConnectionFactory.js\";\r\nexport * from \"./EnumTranslation.js\";\r\nexport * from \"./ServiceMessages/Enums.js\";\r\nexport * from \"./ServiceMessages/TranslationSynthesisEnd.js\";\r\nexport * from \"./ServiceMessages/TranslationHypothesis.js\";\r\nexport * from \"./ServiceMessages/TranslationPhrase.js\";\r\nexport * from \"./TranslationServiceRecognizer.js\";\r\nexport * from \"./ServiceMessages/SpeechDetected.js\";\r\nexport * from \"./ServiceMessages/SpeechHypothesis.js\";\r\nexport * from \"./ServiceMessages/SpeechKeyword.js\";\r\nexport * from \"./SpeechServiceRecognizer.js\";\r\nexport * from \"./ConversationTranscriptionServiceRecognizer.js\";\r\nexport * from \"./TranscriptionServiceRecognizer.js\";\r\nexport * from \"./ServiceMessages/DetailedSpeechPhrase.js\";\r\nexport * from \"./ServiceMessages/SimpleSpeechPhrase.js\";\r\nexport * from \"./AddedLmIntent.js\";\r\nexport * from \"./IntentServiceRecognizer.js\";\r\nexport * from \"./ServiceMessages/IntentResponse.js\";\r\nexport * from \"./ServiceMessages/SpeakerResponse.js\";\r\nexport * from \"./RequestSession.js\";\r\nexport * from \"./SpeechContext.js\";\r\nexport * from \"./DynamicGrammarBuilder.js\";\r\nexport * from \"./DynamicGrammarInterfaces.js\";\r\nexport * from \"./DialogServiceAdapter.js\";\r\nexport * from \"./AgentConfig.js\";\r\nexport * from \"./Transcription/Exports.js\";\r\nexport * from \"./ServiceMessages/SynthesisAudioMetadata.js\";\r\nexport * from \"./SynthesisTurn.js\";\r\nexport * from \"./SynthesisAdapterBase.js\";\r\nexport { AvatarSynthesisAdapter } from \"./AvatarSynthesisAdapter.js\";\r\nexport { SpeechSynthesisAdapter } from \"./SpeechSynthesisAdapter.js\";\r\nexport * from \"./SynthesisRestAdapter.js\";\r\nexport * from \"./SynthesizerConfig.js\";\r\nexport * from \"./SynthesisContext.js\";\r\nexport * from \"./SpeakerRecognitionConfig.js\";\r\nexport * from \"./SpeakerServiceRecognizer.js\";\r\nexport * from \"./VoiceServiceRecognizer.js\";\r\nexport * from \"./SpeechServiceConfig.js\";\r\n\r\nexport const OutputFormatPropertyName: string = \"OutputFormat\";\r\nexport const CancellationErrorCodePropertyName: string = \"CancellationErrorCode\";\r\nexport const ServicePropertiesPropertyName: string = \"ServiceProperties\";\r\nexport const ForceDictationPropertyName: string = \"ForceDictation\";\r\nexport const AutoDetectSourceLanguagesOpenRangeOptionName: string = \"OpenRange\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport class HeaderNames {\r\n public static AuthKey: string = \"Ocp-Apim-Subscription-Key\";\r\n public static Authorization: string = \"Authorization\";\r\n public static SpIDAuthKey: string = \"Apim-Subscription-Id\";\r\n public static ConnectionId: string = \"X-ConnectionId\";\r\n public static ContentType: string = \"Content-Type\";\r\n public static CustomCommandsAppId: string = \"X-CommandsAppId\";\r\n public static Path: string = \"Path\";\r\n public static RequestId: string = \"X-RequestId\";\r\n public static RequestStreamId: string = \"X-StreamId\";\r\n public static RequestTimestamp: string = \"X-Timestamp\";\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport interface IAuthentication {\r\n fetch(authFetchEventId: string): Promise;\r\n fetchOnExpiry(authFetchEventId: string): Promise;\r\n}\r\n\r\nexport class AuthInfo {\r\n private privHeaderName: string;\r\n private privToken: string;\r\n\r\n public constructor(headerName: string, token: string) {\r\n this.privHeaderName = headerName;\r\n this.privToken = token;\r\n }\r\n\r\n public get headerName(): string {\r\n return this.privHeaderName;\r\n }\r\n\r\n public get token(): string {\r\n return this.privToken;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n IConnection,\r\n IStringDictionary\r\n} from \"../common/Exports.js\";\r\nimport {\r\n PropertyId\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./ConnectionFactoryBase.js\";\r\nimport {\r\n AuthInfo,\r\n RecognizerConfig,\r\n WebsocketMessageFormatter,\r\n} from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\n\r\nexport class IntentConnectionFactory extends ConnectionFactoryBase {\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint);\r\n if (!endpoint) {\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_IntentRegion);\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, \"wss://\" + region + \".sr.speech\" + hostSuffix);\r\n endpoint = host + \"/speech/recognition/interactive/cognitiveservices/v1\";\r\n }\r\n\r\n const queryParams: IStringDictionary = {\r\n format: \"simple\",\r\n language: config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage),\r\n };\r\n\r\n this.setCommonUrlParams(config, queryParams, endpoint);\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n\r\n private getSpeechRegionFromIntentRegion(intentRegion: string): string {\r\n switch (intentRegion) {\r\n case \"West US\":\r\n case \"US West\":\r\n case \"westus\":\r\n return \"uswest\";\r\n case \"West US 2\":\r\n case \"US West 2\":\r\n case \"westus2\":\r\n return \"uswest2\";\r\n case \"South Central US\":\r\n case \"US South Central\":\r\n case \"southcentralus\":\r\n return \"ussouthcentral\";\r\n case \"West Central US\":\r\n case \"US West Central\":\r\n case \"westcentralus\":\r\n return \"uswestcentral\";\r\n case \"East US\":\r\n case \"US East\":\r\n case \"eastus\":\r\n return \"useast\";\r\n case \"East US 2\":\r\n case \"US East 2\":\r\n case \"eastus2\":\r\n return \"useast2\";\r\n case \"West Europe\":\r\n case \"Europe West\":\r\n case \"westeurope\":\r\n return \"europewest\";\r\n case \"North Europe\":\r\n case \"Europe North\":\r\n case \"northeurope\":\r\n return \"europenorth\";\r\n case \"Brazil South\":\r\n case \"South Brazil\":\r\n case \"southbrazil\":\r\n return \"brazilsouth\";\r\n case \"Australia East\":\r\n case \"East Australia\":\r\n case \"eastaustralia\":\r\n return \"australiaeast\";\r\n case \"Southeast Asia\":\r\n case \"Asia Southeast\":\r\n case \"southeastasia\":\r\n return \"asiasoutheast\";\r\n case \"East Asia\":\r\n case \"Asia East\":\r\n case \"eastasia\":\r\n return \"asiaeast\";\r\n default:\r\n return intentRegion;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n Deferred,\r\n IAudioSource,\r\n MessageType,\r\n} from \"../common/Exports.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n IntentRecognitionCanceledEventArgs,\r\n IntentRecognitionEventArgs,\r\n IntentRecognitionResult,\r\n IntentRecognizer,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n AddedLmIntent,\r\n CancellationErrorCodePropertyName,\r\n EnumTranslation,\r\n IntentResponse,\r\n ServiceRecognizerBase,\r\n SimpleSpeechPhrase,\r\n SpeechHypothesis,\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class IntentServiceRecognizer extends ServiceRecognizerBase {\r\n private privIntentRecognizer: IntentRecognizer;\r\n private privAddedLmIntents: { [id: string]: AddedLmIntent };\r\n private privIntentDataSent: boolean;\r\n private privUmbrellaIntent: AddedLmIntent;\r\n private privPendingIntentArgs: IntentRecognitionEventArgs;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n recognizer: IntentRecognizer) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, recognizer);\r\n this.privIntentRecognizer = recognizer;\r\n this.privIntentDataSent = false;\r\n }\r\n\r\n public setIntents(addedIntents: { [id: string]: AddedLmIntent }, umbrellaIntent: AddedLmIntent): void {\r\n this.privAddedLmIntents = addedIntents;\r\n this.privUmbrellaIntent = umbrellaIntent;\r\n this.privIntentDataSent = true;\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n let result: IntentRecognitionResult;\r\n let ev: IntentRecognitionEventArgs;\r\n let processed: boolean = false;\r\n\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n if (connectionMessage.messageType === MessageType.Text) {\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n }\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"speech.hypothesis\":\r\n const speechHypothesis: SpeechHypothesis = SpeechHypothesis.fromJSON(connectionMessage.textBody);\r\n\r\n result = new IntentRecognitionResult(\r\n undefined,\r\n this.privRequestSession.requestId,\r\n ResultReason.RecognizingIntent,\r\n speechHypothesis.Text,\r\n speechHypothesis.Duration,\r\n speechHypothesis.Offset + this.privRequestSession.currentTurnAudioOffset,\r\n speechHypothesis.Language,\r\n speechHypothesis.LanguageDetectionConfidence,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n this.privRequestSession.onHypothesis(result.offset);\r\n\r\n ev = new IntentRecognitionEventArgs(result, speechHypothesis.Offset + this.privRequestSession.currentTurnAudioOffset, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privIntentRecognizer.recognizing) {\r\n try {\r\n this.privIntentRecognizer.recognizing(this.privIntentRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n case \"speech.phrase\":\r\n const simple: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(connectionMessage.textBody);\r\n result = new IntentRecognitionResult(\r\n undefined,\r\n this.privRequestSession.requestId,\r\n EnumTranslation.implTranslateRecognitionResult(simple.RecognitionStatus),\r\n simple.DisplayText,\r\n simple.Duration,\r\n simple.Offset + this.privRequestSession.currentTurnAudioOffset,\r\n simple.Language,\r\n simple.LanguageDetectionConfidence,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n ev = new IntentRecognitionEventArgs(result, result.offset, this.privRequestSession.sessionId);\r\n\r\n const sendEvent: () => void = (): void => {\r\n if (!!this.privIntentRecognizer.recognized) {\r\n try {\r\n this.privIntentRecognizer.recognized(this.privIntentRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n // report result to promise.\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n };\r\n\r\n // If intent data was sent, the terminal result for this recognizer is an intent being found.\r\n // If no intent data was sent, the terminal event is speech recognition being successful.\r\n if (false === this.privIntentDataSent || ResultReason.NoMatch === ev.result.reason) {\r\n // Advance the buffers.\r\n this.privRequestSession.onPhraseRecognized(ev.offset + ev.result.duration);\r\n sendEvent();\r\n } else {\r\n // Squirrel away the args, when the response event arrives it will build upon them\r\n // and then return\r\n this.privPendingIntentArgs = ev;\r\n }\r\n processed = true;\r\n break;\r\n case \"response\":\r\n // Response from LUIS\r\n ev = this.privPendingIntentArgs;\r\n this.privPendingIntentArgs = undefined;\r\n\r\n if (undefined === ev) {\r\n if (\"\" === connectionMessage.textBody) {\r\n // This condition happens if there is nothing but silence in the\r\n // audio sent to the service.\r\n return;\r\n }\r\n\r\n // Odd... Not sure this can happen\r\n ev = new IntentRecognitionEventArgs(new IntentRecognitionResult(), 0, this.privRequestSession.sessionId);\r\n }\r\n\r\n const intentResponse: IntentResponse = IntentResponse.fromJSON(connectionMessage.textBody);\r\n\r\n // If LUIS didn't return anything, send the existing event, else\r\n // modify it to show the match.\r\n // See if the intent found is in the list of intents asked for.\r\n\r\n if (null !== intentResponse && !!intentResponse.topScoringIntent && !!intentResponse.topScoringIntent.intent) {\r\n let addedIntent: AddedLmIntent = this.privAddedLmIntents[intentResponse.topScoringIntent.intent];\r\n\r\n if (this.privUmbrellaIntent !== undefined) {\r\n addedIntent = this.privUmbrellaIntent;\r\n }\r\n\r\n if (!!addedIntent) {\r\n const intentId = addedIntent === undefined || addedIntent.intentName === undefined ? intentResponse.topScoringIntent.intent : addedIntent.intentName;\r\n let reason = ev.result.reason;\r\n\r\n if (undefined !== intentId) {\r\n reason = ResultReason.RecognizedIntent;\r\n }\r\n\r\n // make sure, properties is set.\r\n const properties = (undefined !== ev.result.properties) ?\r\n ev.result.properties : new PropertyCollection();\r\n\r\n properties.setProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult, connectionMessage.textBody);\r\n\r\n ev = new IntentRecognitionEventArgs(\r\n new IntentRecognitionResult(\r\n intentId,\r\n ev.result.resultId,\r\n reason,\r\n ev.result.text,\r\n ev.result.duration,\r\n ev.result.offset,\r\n undefined,\r\n undefined,\r\n ev.result.errorDetails,\r\n ev.result.json,\r\n properties),\r\n ev.offset,\r\n ev.sessionId);\r\n\r\n }\r\n }\r\n this.privRequestSession.onPhraseRecognized(ev.offset + ev.result.duration);\r\n\r\n if (!!this.privIntentRecognizer.recognized) {\r\n try {\r\n this.privIntentRecognizer.recognized(this.privIntentRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n // report result to promise.\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(ev.result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n const defferal = new Deferred();\r\n defferal.resolve(processed);\r\n return defferal.promise;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n if (!!this.privIntentRecognizer.canceled) {\r\n\r\n const cancelEvent: IntentRecognitionCanceledEventArgs = new IntentRecognitionCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n undefined,\r\n sessionId);\r\n try {\r\n this.privIntentRecognizer.canceled(this.privIntentRecognizer, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n\r\n if (!!this.privSuccessCallback) {\r\n const result: IntentRecognitionResult = new IntentRecognitionResult(\r\n undefined, // Intent Id\r\n requestId,\r\n ResultReason.Canceled,\r\n undefined, // Text\r\n undefined, // Duration\r\n undefined, // Offset\r\n undefined, // Language\r\n undefined, // LanguageDetectionConfidence\r\n error,\r\n undefined, // Json\r\n properties);\r\n try {\r\n this.privSuccessCallback(result);\r\n this.privSuccessCallback = undefined;\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport class QueryParameterNames {\r\n public static BotId: string = \"botid\";\r\n public static CustomSpeechDeploymentId: string = \"cid\";\r\n public static CustomVoiceDeploymentId: string = \"deploymentId\";\r\n public static EnableAudioLogging: string = \"storeAudio\";\r\n public static EnableLanguageId: string = \"lidEnabled\";\r\n public static EnableWordLevelTimestamps: string = \"wordLevelTimestamps\";\r\n public static EndSilenceTimeoutMs: string = \"endSilenceTimeoutMs\";\r\n public static SegmentationSilenceTimeoutMs: string = \"segmentationSilenceTimeoutMs\";\r\n public static Format: string = \"format\";\r\n public static InitialSilenceTimeoutMs: string = \"initialSilenceTimeoutMs\";\r\n public static Language: string = \"language\";\r\n public static Profanity: string = \"profanity\";\r\n public static RequestBotStatusMessages: string = \"enableBotMessageStatus\";\r\n public static StableIntermediateThreshold: string = \"stableIntermediateThreshold\";\r\n public static StableTranslation: string = \"stableTranslation\";\r\n public static TestHooks: string = \"testhooks\";\r\n public static Postprocessing: string = \"postprocessing\";\r\n public static CtsMeetingId: string = \"meetingId\";\r\n public static CtsDeviceId: string = \"deviceId\";\r\n public static CtsIsParticipant: string = \"isParticipant\";\r\n public static EnableAvatar: string = \"enableTalkingAvatar\";\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { EventType, PlatformEvent } from \"../common/Exports.js\";\r\n\r\nexport class SpeechRecognitionEvent extends PlatformEvent {\r\n private privRequestId: string;\r\n private privSessionId: string;\r\n\r\n public constructor(eventName: string, requestId: string, sessionId: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n\r\n this.privRequestId = requestId;\r\n this.privSessionId = sessionId;\r\n }\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n}\r\n\r\nexport class RecognitionTriggeredEvent extends SpeechRecognitionEvent {\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n\r\n public constructor(requestId: string, sessionId: string, audioSourceId: string, audioNodeId: string) {\r\n super(\"RecognitionTriggeredEvent\", requestId, sessionId);\r\n\r\n this.privAudioSourceId = audioSourceId;\r\n this.privAudioNodeId = audioNodeId;\r\n }\r\n\r\n public get audioSourceId(): string {\r\n return this.privAudioSourceId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n}\r\n\r\nexport class ListeningStartedEvent extends SpeechRecognitionEvent {\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n\r\n public constructor(requestId: string, sessionId: string, audioSourceId: string, audioNodeId: string) {\r\n super(\"ListeningStartedEvent\", requestId, sessionId);\r\n this.privAudioSourceId = audioSourceId;\r\n this.privAudioNodeId = audioNodeId;\r\n }\r\n\r\n public get audioSourceId(): string {\r\n return this.privAudioSourceId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n}\r\n\r\nexport class ConnectingToServiceEvent extends SpeechRecognitionEvent {\r\n private privAuthFetchEventid: string;\r\n\r\n public constructor(requestId: string, authFetchEventid: string, sessionId: string) {\r\n super(\"ConnectingToServiceEvent\", requestId, sessionId);\r\n this.privAuthFetchEventid = authFetchEventid;\r\n }\r\n\r\n public get authFetchEventid(): string {\r\n return this.privAuthFetchEventid;\r\n }\r\n}\r\n\r\nexport class RecognitionStartedEvent extends SpeechRecognitionEvent {\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n private privAuthFetchEventId: string;\r\n\r\n public constructor(requestId: string, audioSourceId: string, audioNodeId: string, authFetchEventId: string, sessionId: string) {\r\n super(\"RecognitionStartedEvent\", requestId, sessionId);\r\n\r\n this.privAudioSourceId = audioSourceId;\r\n this.privAudioNodeId = audioNodeId;\r\n this.privAuthFetchEventId = authFetchEventId;\r\n }\r\n\r\n public get audioSourceId(): string {\r\n return this.privAudioSourceId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n\r\n public get authFetchEventId(): string {\r\n return this.privAuthFetchEventId;\r\n }\r\n}\r\n\r\nexport enum RecognitionCompletionStatus {\r\n Success,\r\n AudioSourceError,\r\n AudioSourceTimeout,\r\n AuthTokenFetchError,\r\n AuthTokenFetchTimeout,\r\n UnAuthorized,\r\n ConnectTimeout,\r\n ConnectError,\r\n ClientRecognitionActivityTimeout,\r\n UnknownError,\r\n}\r\n\r\nexport class RecognitionEndedEvent extends SpeechRecognitionEvent {\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n private privAuthFetchEventId: string;\r\n private privServiceTag: string;\r\n private privStatus: RecognitionCompletionStatus;\r\n private privError: string;\r\n\r\n public constructor(\r\n requestId: string,\r\n audioSourceId: string,\r\n audioNodeId: string,\r\n authFetchEventId: string,\r\n sessionId: string,\r\n serviceTag: string,\r\n status: RecognitionCompletionStatus,\r\n error: string) {\r\n\r\n super(\"RecognitionEndedEvent\", requestId, sessionId, status === RecognitionCompletionStatus.Success ? EventType.Info : EventType.Error);\r\n\r\n this.privAudioSourceId = audioSourceId;\r\n this.privAudioNodeId = audioNodeId;\r\n this.privAuthFetchEventId = authFetchEventId;\r\n this.privStatus = status;\r\n this.privError = error;\r\n this.privServiceTag = serviceTag;\r\n }\r\n\r\n public get audioSourceId(): string {\r\n return this.privAudioSourceId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n\r\n public get authFetchEventId(): string {\r\n return this.privAuthFetchEventId;\r\n }\r\n\r\n public get serviceTag(): string {\r\n return this.privServiceTag;\r\n }\r\n\r\n public get status(): RecognitionCompletionStatus {\r\n return this.privStatus;\r\n }\r\n\r\n public get error(): string {\r\n return this.privError;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { PropertyCollection, PropertyId } from \"../sdk/Exports.js\";\r\nimport { Context, SpeechServiceConfig } from \"./Exports.js\";\r\n\r\nexport enum RecognitionMode {\r\n Interactive,\r\n Conversation,\r\n Dictation,\r\n}\r\n\r\nexport enum SpeechResultFormat {\r\n Simple,\r\n Detailed,\r\n}\r\n\r\nexport class RecognizerConfig {\r\n private privRecognitionMode: RecognitionMode;\r\n private privLanguageIdMode: string;\r\n private privSpeechServiceConfig: SpeechServiceConfig;\r\n private privRecognitionActivityTimeout: number;\r\n private privParameters: PropertyCollection;\r\n private privMaxRetryCount: number;\r\n private privEnableSpeakerId: boolean;\r\n\r\n public constructor(\r\n speechServiceConfig: SpeechServiceConfig,\r\n parameters: PropertyCollection) {\r\n this.privSpeechServiceConfig = speechServiceConfig ? speechServiceConfig : new SpeechServiceConfig(new Context(null));\r\n this.privParameters = parameters;\r\n this.privMaxRetryCount = parseInt(parameters.getProperty(\"SPEECH-Error-MaxRetryCount\", \"4\"), 10);\r\n this.privLanguageIdMode = parameters.getProperty(PropertyId.SpeechServiceConnection_LanguageIdMode, undefined);\r\n this.privEnableSpeakerId = false;\r\n }\r\n\r\n public get parameters(): PropertyCollection {\r\n return this.privParameters;\r\n }\r\n\r\n public get recognitionMode(): RecognitionMode {\r\n return this.privRecognitionMode;\r\n }\r\n\r\n public set recognitionMode(value: RecognitionMode) {\r\n this.privRecognitionMode = value;\r\n this.privRecognitionActivityTimeout = value === RecognitionMode.Interactive ? 8000 : 25000;\r\n this.privSpeechServiceConfig.Recognition = RecognitionMode[value];\r\n }\r\n\r\n public get SpeechServiceConfig(): SpeechServiceConfig {\r\n return this.privSpeechServiceConfig;\r\n }\r\n\r\n public get recognitionActivityTimeout(): number {\r\n return this.privRecognitionActivityTimeout;\r\n }\r\n\r\n public get isContinuousRecognition(): boolean {\r\n return this.privRecognitionMode !== RecognitionMode.Interactive;\r\n }\r\n\r\n public get languageIdMode(): string {\r\n return this.privLanguageIdMode;\r\n }\r\n\r\n public get autoDetectSourceLanguages(): string {\r\n return this.parameters.getProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages, undefined);\r\n }\r\n\r\n public get recognitionEndpointVersion(): string {\r\n return this.parameters.getProperty(PropertyId.SpeechServiceConnection_RecognitionEndpointVersion, undefined);\r\n }\r\n\r\n public get sourceLanguageModels(): { language: string; endpoint: string }[] {\r\n const models: { language: string; endpoint: string }[] = [];\r\n let modelsExist: boolean = false;\r\n if (this.autoDetectSourceLanguages !== undefined) {\r\n for (const language of this.autoDetectSourceLanguages.split(\",\")) {\r\n const customProperty = language + PropertyId.SpeechServiceConnection_EndpointId.toString();\r\n const modelId: string = this.parameters.getProperty(customProperty, undefined);\r\n if (modelId !== undefined) {\r\n models.push( { language, endpoint: modelId });\r\n modelsExist = true;\r\n } else {\r\n models.push( { language, endpoint: \"\" } );\r\n }\r\n }\r\n }\r\n return modelsExist ? models : undefined;\r\n }\r\n\r\n public get maxRetryCount(): number {\r\n return this.privMaxRetryCount;\r\n }\r\n\r\n public get isSpeakerDiarizationEnabled(): boolean {\r\n return this.privEnableSpeakerId;\r\n }\r\n\r\n public set isSpeakerDiarizationEnabled(value: boolean) {\r\n this.privEnableSpeakerId = value;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ReplayableAudioNode } from \"../common.browser/Exports.js\";\r\nimport {\r\n createNoDashGuid,\r\n Deferred,\r\n Events,\r\n IDetachable,\r\n IEventSource,\r\n PlatformEvent\r\n} from \"../common/Exports.js\";\r\nimport {\r\n ConnectingToServiceEvent,\r\n ListeningStartedEvent,\r\n RecognitionStartedEvent,\r\n RecognitionTriggeredEvent,\r\n SpeechRecognitionEvent,\r\n} from \"./RecognitionEvents.js\";\r\nimport { ServiceTelemetryListener } from \"./ServiceTelemetryListener.Internal.js\";\r\n\r\nexport class RequestSession {\r\n private privIsDisposed: boolean = false;\r\n private privServiceTelemetryListener: ServiceTelemetryListener;\r\n private privDetachables: IDetachable[] = new Array();\r\n private privRequestId: string;\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n private privAudioNode: ReplayableAudioNode;\r\n private privAuthFetchEventId: string;\r\n private privIsAudioNodeDetached: boolean = false;\r\n private privIsRecognizing: boolean = false;\r\n private privIsSpeechEnded: boolean = false;\r\n private privTurnStartAudioOffset: number = 0;\r\n private privLastRecoOffset: number = 0;\r\n private privHypothesisReceived: boolean = false;\r\n private privBytesSent: number = 0;\r\n private privRecognitionBytesSent: number = 0;\r\n private privRecogNumber: number = 0;\r\n private privSessionId: string;\r\n private privTurnDeferral: Deferred;\r\n private privInTurn: boolean = false;\r\n private privConnectionAttempts: number = 0;\r\n\r\n public constructor(audioSourceId: string) {\r\n this.privAudioSourceId = audioSourceId;\r\n this.privRequestId = createNoDashGuid();\r\n this.privAudioNodeId = createNoDashGuid();\r\n this.privTurnDeferral = new Deferred();\r\n\r\n // We're not in a turn, so resolve.\r\n this.privTurnDeferral.resolve();\r\n }\r\n\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n\r\n public get turnCompletionPromise(): Promise {\r\n return this.privTurnDeferral.promise;\r\n }\r\n\r\n public get isSpeechEnded(): boolean {\r\n return this.privIsSpeechEnded;\r\n }\r\n\r\n public get isRecognizing(): boolean {\r\n return this.privIsRecognizing;\r\n }\r\n\r\n public get currentTurnAudioOffset(): number {\r\n return this.privTurnStartAudioOffset;\r\n }\r\n\r\n public get recogNumber(): number {\r\n return this.privRecogNumber;\r\n }\r\n\r\n public get numConnectionAttempts(): number {\r\n return this.privConnectionAttempts;\r\n }\r\n\r\n // The number of bytes sent for the current connection.\r\n // Counter is reset to 0 each time a connection is established.\r\n public get bytesSent(): number {\r\n return this.privBytesSent;\r\n }\r\n\r\n // The number of bytes sent for the current recognition.\r\n // Counter is reset to 0 each time recognition is started.\r\n public get recognitionBytesSent(): number {\r\n return this.privRecognitionBytesSent;\r\n }\r\n\r\n public listenForServiceTelemetry(eventSource: IEventSource): void {\r\n if (!!this.privServiceTelemetryListener) {\r\n this.privDetachables.push(eventSource.attachListener(this.privServiceTelemetryListener));\r\n }\r\n }\r\n\r\n public startNewRecognition(): void {\r\n this.privRecognitionBytesSent = 0;\r\n this.privIsSpeechEnded = false;\r\n this.privIsRecognizing = true;\r\n this.privTurnStartAudioOffset = 0;\r\n this.privLastRecoOffset = 0;\r\n this.privRecogNumber++;\r\n this.privServiceTelemetryListener = new ServiceTelemetryListener(this.privRequestId, this.privAudioSourceId, this.privAudioNodeId);\r\n this.onEvent(new RecognitionTriggeredEvent(this.requestId, this.privSessionId, this.privAudioSourceId, this.privAudioNodeId));\r\n }\r\n\r\n public async onAudioSourceAttachCompleted(audioNode: ReplayableAudioNode, isError: boolean): Promise {\r\n this.privAudioNode = audioNode;\r\n this.privIsAudioNodeDetached = false;\r\n\r\n if (isError) {\r\n await this.onComplete();\r\n } else {\r\n this.onEvent(new ListeningStartedEvent(this.privRequestId, this.privSessionId, this.privAudioSourceId, this.privAudioNodeId));\r\n }\r\n }\r\n\r\n public onPreConnectionStart(authFetchEventId: string, connectionId: string): void {\r\n this.privAuthFetchEventId = authFetchEventId;\r\n this.privSessionId = connectionId;\r\n this.onEvent(new ConnectingToServiceEvent(this.privRequestId, this.privAuthFetchEventId, this.privSessionId));\r\n }\r\n\r\n public async onAuthCompleted(isError: boolean): Promise {\r\n if (isError) {\r\n await this.onComplete();\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public async onConnectionEstablishCompleted(statusCode: number, reason?: string): Promise {\r\n if (statusCode === 200) {\r\n this.onEvent(new RecognitionStartedEvent(this.requestId, this.privAudioSourceId, this.privAudioNodeId, this.privAuthFetchEventId, this.privSessionId));\r\n if (!!this.privAudioNode) {\r\n this.privAudioNode.replay();\r\n }\r\n this.privTurnStartAudioOffset = this.privLastRecoOffset;\r\n this.privBytesSent = 0;\r\n return;\r\n } else if (statusCode === 403) {\r\n await this.onComplete();\r\n }\r\n }\r\n\r\n public async onServiceTurnEndResponse(continuousRecognition: boolean): Promise {\r\n this.privTurnDeferral.resolve();\r\n\r\n if (!continuousRecognition || this.isSpeechEnded) {\r\n await this.onComplete();\r\n this.privInTurn = false;\r\n } else {\r\n // Start a new request set.\r\n this.privTurnStartAudioOffset = this.privLastRecoOffset;\r\n this.privAudioNode.replay();\r\n }\r\n }\r\n\r\n public onSpeechContext(): void {\r\n this.privRequestId = createNoDashGuid();\r\n }\r\n\r\n public onServiceTurnStartResponse(): void {\r\n if (!!this.privTurnDeferral && !!this.privInTurn) {\r\n // What? How are we starting a turn with another not done?\r\n this.privTurnDeferral.reject(\"Another turn started before current completed.\");\r\n // Avoid UnhandledPromiseRejection if privTurnDeferral is not being awaited\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.privTurnDeferral.promise.then().catch((): void => { });\r\n }\r\n this.privInTurn = true;\r\n this.privTurnDeferral = new Deferred();\r\n }\r\n\r\n public onHypothesis(offset: number): void {\r\n if (!this.privHypothesisReceived) {\r\n this.privHypothesisReceived = true;\r\n this.privServiceTelemetryListener.hypothesisReceived(this.privAudioNode.findTimeAtOffset(offset));\r\n }\r\n }\r\n\r\n public onPhraseRecognized(offset: number): void {\r\n this.privServiceTelemetryListener.phraseReceived(this.privAudioNode.findTimeAtOffset(offset));\r\n this.onServiceRecognized(offset);\r\n }\r\n\r\n public onServiceRecognized(offset: number): void {\r\n this.privLastRecoOffset = offset;\r\n this.privHypothesisReceived = false;\r\n this.privAudioNode.shrinkBuffers(offset);\r\n this.privConnectionAttempts = 0;\r\n }\r\n\r\n public onAudioSent(bytesSent: number): void {\r\n this.privBytesSent += bytesSent;\r\n this.privRecognitionBytesSent += bytesSent;\r\n }\r\n\r\n public onRetryConnection(): void {\r\n this.privConnectionAttempts++;\r\n }\r\n\r\n public async dispose(): Promise {\r\n if (!this.privIsDisposed) {\r\n // we should have completed by now. If we did not its an unknown error.\r\n this.privIsDisposed = true;\r\n for (const detachable of this.privDetachables) {\r\n await detachable.detach();\r\n }\r\n\r\n if (!!this.privServiceTelemetryListener) {\r\n this.privServiceTelemetryListener.dispose();\r\n }\r\n this.privIsRecognizing = false;\r\n }\r\n }\r\n\r\n public getTelemetry(): string {\r\n if (this.privServiceTelemetryListener.hasTelemetry) {\r\n return this.privServiceTelemetryListener.getTelemetry();\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public async onStopRecognizing(): Promise {\r\n await this.onComplete();\r\n }\r\n\r\n // Should be called with the audioNode for this session has indicated that it is out of speech.\r\n public onSpeechEnded(): void {\r\n this.privIsSpeechEnded = true;\r\n }\r\n\r\n protected onEvent(event: SpeechRecognitionEvent): void {\r\n if (!!this.privServiceTelemetryListener) {\r\n this.privServiceTelemetryListener.onEvent(event);\r\n }\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n private async onComplete(): Promise {\r\n if (!!this.privIsRecognizing) {\r\n this.privIsRecognizing = false;\r\n await this.detachAudioNode();\r\n }\r\n }\r\n\r\n private async detachAudioNode(): Promise {\r\n if (!this.privIsAudioNodeDetached) {\r\n this.privIsAudioNodeDetached = true;\r\n if (this.privAudioNode) {\r\n await this.privAudioNode.detach();\r\n }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// response\r\n\r\nexport interface IActivityPayloadResponse {\r\n conversationId: string;\r\n messageDataStreamType: number;\r\n messagePayload: string | object;\r\n version: number;\r\n}\r\n\r\nexport class ActivityPayloadResponse implements IActivityPayloadResponse {\r\n private privActivityResponse: IActivityPayloadResponse;\r\n\r\n private constructor(json: string) {\r\n this.privActivityResponse = JSON.parse(json) as IActivityPayloadResponse;\r\n }\r\n\r\n public static fromJSON(json: string): ActivityPayloadResponse {\r\n return new ActivityPayloadResponse(json);\r\n }\r\n\r\n public get conversationId(): string {\r\n return this.privActivityResponse.conversationId;\r\n }\r\n\r\n public get messageDataStreamType(): number {\r\n return this.privActivityResponse.messageDataStreamType;\r\n }\r\n\r\n public get messagePayload(): string | object {\r\n return this.privActivityResponse.messagePayload;\r\n }\r\n\r\n public get version(): number {\r\n return this.privActivityResponse.version;\r\n }\r\n}\r\n\r\nexport enum MessageDataStreamType {\r\n None = 0,\r\n TextToSpeechAudio = 1,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IPrimaryLanguage, RecognitionStatus } from \"../Exports.js\";\r\n\r\n// speech.phrase for detailed\r\nexport interface IDetailedSpeechPhrase {\r\n RecognitionStatus: RecognitionStatus;\r\n NBest: IPhrase[];\r\n Duration?: number;\r\n Offset?: number;\r\n PrimaryLanguage?: IPrimaryLanguage;\r\n DisplayText?: string;\r\n SpeakerId?: string;\r\n}\r\n\r\nexport interface IPhrase {\r\n Confidence?: number;\r\n Lexical: string;\r\n ITN: string;\r\n MaskedITN: string;\r\n Display?: string;\r\n DisplayText?: string;\r\n Words?: IWord[];\r\n DisplayWords?: IWord[];\r\n}\r\n\r\nexport interface IWord {\r\n Word: string;\r\n Offset: number;\r\n Duration: number;\r\n}\r\n\r\nexport class DetailedSpeechPhrase implements IDetailedSpeechPhrase {\r\n private privDetailedSpeechPhrase: IDetailedSpeechPhrase;\r\n\r\n private constructor(json: string) {\r\n this.privDetailedSpeechPhrase = JSON.parse(json) as IDetailedSpeechPhrase;\r\n this.privDetailedSpeechPhrase.RecognitionStatus = RecognitionStatus[this.privDetailedSpeechPhrase.RecognitionStatus as unknown as keyof typeof RecognitionStatus];\r\n }\r\n\r\n public static fromJSON(json: string): DetailedSpeechPhrase {\r\n return new DetailedSpeechPhrase(json);\r\n }\r\n\r\n public getJsonWithCorrectedOffsets(baseOffset: number): string {\r\n if (!!this.privDetailedSpeechPhrase.NBest) {\r\n let firstWordOffset: number;\r\n for (const phrase of this.privDetailedSpeechPhrase.NBest) {\r\n if (!!phrase.Words && !!phrase.Words[0]) {\r\n firstWordOffset = phrase.Words[0].Offset;\r\n break;\r\n }\r\n }\r\n if (!!firstWordOffset && firstWordOffset < baseOffset) {\r\n const offset: number = baseOffset - firstWordOffset;\r\n for (const details of this.privDetailedSpeechPhrase.NBest) {\r\n if (!!details.Words) {\r\n for (const word of details.Words) {\r\n word.Offset += offset;\r\n }\r\n }\r\n if (!!details.DisplayWords) {\r\n for (const word of details.DisplayWords) {\r\n word.Offset += offset;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return JSON.stringify(this.privDetailedSpeechPhrase);\r\n }\r\n\r\n public get RecognitionStatus(): RecognitionStatus {\r\n return this.privDetailedSpeechPhrase.RecognitionStatus;\r\n }\r\n public get NBest(): IPhrase[] {\r\n return this.privDetailedSpeechPhrase.NBest;\r\n }\r\n public get Duration(): number {\r\n return this.privDetailedSpeechPhrase.Duration;\r\n }\r\n public get Offset(): number {\r\n return this.privDetailedSpeechPhrase.Offset;\r\n }\r\n public get Language(): string {\r\n return this.privDetailedSpeechPhrase.PrimaryLanguage === undefined ? undefined : this.privDetailedSpeechPhrase.PrimaryLanguage.Language;\r\n }\r\n public get LanguageDetectionConfidence(): string {\r\n return this.privDetailedSpeechPhrase.PrimaryLanguage === undefined ? undefined : this.privDetailedSpeechPhrase.PrimaryLanguage.Confidence;\r\n }\r\n public get Text(): string {\r\n if (!!this.privDetailedSpeechPhrase.NBest && this.privDetailedSpeechPhrase.NBest[0]) {\r\n return this.privDetailedSpeechPhrase.NBest[0].Display || this.privDetailedSpeechPhrase.NBest[0].DisplayText;\r\n }\r\n return this.privDetailedSpeechPhrase.DisplayText;\r\n }\r\n public get SpeakerId(): string {\r\n return this.privDetailedSpeechPhrase.SpeakerId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * @class SynthesisStatus\r\n * @private\r\n */\r\nexport enum SynthesisStatus {\r\n /**\r\n * The response contains valid audio data.\r\n * @member SynthesisStatus.Success\r\n */\r\n Success,\r\n\r\n /**\r\n * Indicates the end of audio data. No valid audio data is included in the message.\r\n * @member SynthesisStatus.SynthesisEnd\r\n */\r\n SynthesisEnd,\r\n\r\n /**\r\n * Indicates an error occurred during synthesis data processing.\r\n * @member SynthesisStatus.Error\r\n */\r\n Error,\r\n}\r\n\r\nexport enum RecognitionStatus {\r\n Success,\r\n NoMatch,\r\n InitialSilenceTimeout,\r\n BabbleTimeout,\r\n Error,\r\n EndOfDictation,\r\n TooManyRequests,\r\n BadRequest,\r\n Forbidden,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// response\r\n\r\nexport interface IIntentResponse {\r\n query?: string;\r\n topScoringIntent?: ISingleIntent;\r\n entities?: IIntentEntity[];\r\n}\r\n\r\nexport interface IIntentEntity {\r\n entity: string;\r\n type: string;\r\n startIndex: number;\r\n endIndex: number;\r\n score: number;\r\n}\r\n\r\nexport interface ISingleIntent {\r\n intent: string;\r\n score: number;\r\n}\r\n\r\nexport class IntentResponse implements IIntentResponse {\r\n private privIntentResponse: IIntentResponse;\r\n\r\n private constructor(json: string) {\r\n if (json === \"\") {\r\n this.privIntentResponse = {};\r\n } else {\r\n this.privIntentResponse = JSON.parse(json) as IIntentResponse;\r\n }\r\n }\r\n\r\n public static fromJSON(json: string): IntentResponse {\r\n return new IntentResponse(json);\r\n }\r\n\r\n public get query(): string {\r\n return this.privIntentResponse.query;\r\n }\r\n\r\n public get topScoringIntent(): ISingleIntent {\r\n return this.privIntentResponse.topScoringIntent;\r\n }\r\n\r\n public get entities(): IIntentEntity[] {\r\n return this.privIntentResponse.entities;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { RecognitionStatus } from \"../Exports.js\";\r\n\r\n// speech.phrase\r\nexport interface ISimpleSpeechPhrase {\r\n RecognitionStatus: RecognitionStatus;\r\n DisplayText: string;\r\n Offset?: number;\r\n Duration?: number;\r\n PrimaryLanguage?: IPrimaryLanguage;\r\n SpeakerId?: string;\r\n}\r\n\r\nexport interface IPrimaryLanguage {\r\n Language: string;\r\n Confidence: string;\r\n}\r\n\r\nexport class SimpleSpeechPhrase implements ISimpleSpeechPhrase {\r\n private privSimpleSpeechPhrase: ISimpleSpeechPhrase;\r\n\r\n private constructor(json: string) {\r\n this.privSimpleSpeechPhrase = JSON.parse(json) as ISimpleSpeechPhrase;\r\n this.privSimpleSpeechPhrase.RecognitionStatus = RecognitionStatus[this.privSimpleSpeechPhrase.RecognitionStatus as unknown as keyof typeof RecognitionStatus];\r\n }\r\n\r\n public static fromJSON(json: string): SimpleSpeechPhrase {\r\n return new SimpleSpeechPhrase(json);\r\n }\r\n\r\n public get RecognitionStatus(): RecognitionStatus {\r\n return this.privSimpleSpeechPhrase.RecognitionStatus;\r\n }\r\n\r\n public get DisplayText(): string {\r\n return this.privSimpleSpeechPhrase.DisplayText;\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privSimpleSpeechPhrase.Offset;\r\n }\r\n\r\n public get Duration(): number {\r\n return this.privSimpleSpeechPhrase.Duration;\r\n }\r\n\r\n public get Language(): string {\r\n return this.privSimpleSpeechPhrase.PrimaryLanguage === undefined ? undefined : this.privSimpleSpeechPhrase.PrimaryLanguage.Language;\r\n }\r\n\r\n public get LanguageDetectionConfidence(): string {\r\n return this.privSimpleSpeechPhrase.PrimaryLanguage === undefined ? undefined : this.privSimpleSpeechPhrase.PrimaryLanguage.Confidence;\r\n }\r\n\r\n public get SpeakerId(): string {\r\n return this.privSimpleSpeechPhrase.SpeakerId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// speech.endDetected\r\nexport interface ISpeechDetected {\r\n Offset: number;\r\n}\r\n\r\nexport class SpeechDetected implements ISpeechDetected {\r\n private privSpeechStartDetected: ISpeechDetected;\r\n\r\n private constructor(json: string) {\r\n this.privSpeechStartDetected = JSON.parse(json) as ISpeechDetected;\r\n }\r\n\r\n public static fromJSON(json: string): SpeechDetected {\r\n return new SpeechDetected(json);\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privSpeechStartDetected.Offset;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IPrimaryLanguage } from \"./SimpleSpeechPhrase.js\";\r\n\r\n// speech.hypothesis\r\nexport interface ISpeechHypothesis {\r\n Text: string;\r\n Offset: number;\r\n Duration: number;\r\n PrimaryLanguage?: IPrimaryLanguage;\r\n SpeakerId?: string;\r\n}\r\n\r\nexport class SpeechHypothesis implements ISpeechHypothesis {\r\n private privSpeechHypothesis: ISpeechHypothesis;\r\n\r\n private constructor(json: string) {\r\n this.privSpeechHypothesis = JSON.parse(json) as ISpeechHypothesis;\r\n }\r\n\r\n public static fromJSON(json: string): SpeechHypothesis {\r\n return new SpeechHypothesis(json);\r\n }\r\n\r\n public get Text(): string {\r\n return this.privSpeechHypothesis.Text;\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privSpeechHypothesis.Offset;\r\n }\r\n\r\n public get Duration(): number {\r\n return this.privSpeechHypothesis.Duration;\r\n }\r\n\r\n public get Language(): string {\r\n return this.privSpeechHypothesis.PrimaryLanguage === undefined ? undefined : this.privSpeechHypothesis.PrimaryLanguage.Language;\r\n }\r\n\r\n public get LanguageDetectionConfidence(): string {\r\n return this.privSpeechHypothesis.PrimaryLanguage === undefined ? undefined : this.privSpeechHypothesis.PrimaryLanguage.Confidence;\r\n }\r\n\r\n public get SpeakerId(): string {\r\n return this.privSpeechHypothesis.SpeakerId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// speech.keyword\r\nexport interface ISpeechKeyword {\r\n Status: string;\r\n Text: string;\r\n Offset: number;\r\n Duration: number;\r\n}\r\n\r\nexport class SpeechKeyword implements ISpeechKeyword {\r\n private privSpeechKeyword: ISpeechKeyword;\r\n\r\n private constructor(json: string) {\r\n this.privSpeechKeyword = JSON.parse(json) as ISpeechKeyword;\r\n }\r\n\r\n public static fromJSON(json: string): SpeechKeyword {\r\n return new SpeechKeyword(json);\r\n }\r\n\r\n public get Status(): string {\r\n return this.privSpeechKeyword.Status;\r\n }\r\n\r\n public get Text(): string {\r\n return this.privSpeechKeyword.Text;\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privSpeechKeyword.Offset;\r\n }\r\n\r\n public get Duration(): number {\r\n return this.privSpeechKeyword.Duration;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SpeechSynthesisBoundaryType } from \"../../sdk/Exports.js\";\r\n\r\nexport enum MetadataType {\r\n WordBoundary = \"WordBoundary\",\r\n Bookmark = \"Bookmark\",\r\n Viseme = \"Viseme\",\r\n SentenceBoundary = \"SentenceBoundary\",\r\n SessionEnd = \"SessionEnd\",\r\n AvatarSignal = \"TalkingAvatarSignal\",\r\n}\r\n\r\nexport interface ISynthesisMetadata {\r\n Type: MetadataType;\r\n Data: {\r\n Offset: number;\r\n Duration: number;\r\n text: {\r\n Text: string;\r\n Length: number;\r\n BoundaryType: SpeechSynthesisBoundaryType;\r\n };\r\n Bookmark: string;\r\n VisemeId: number;\r\n AnimationChunk: string;\r\n IsLastAnimation: boolean;\r\n Name: string;\r\n };\r\n}\r\n\r\n// audio.metadata\r\nexport interface ISynthesisAudioMetadata {\r\n Metadata: ISynthesisMetadata[];\r\n}\r\n\r\nexport class SynthesisAudioMetadata implements ISynthesisAudioMetadata {\r\n private privSynthesisAudioMetadata: ISynthesisAudioMetadata;\r\n\r\n private constructor(json: string) {\r\n this.privSynthesisAudioMetadata = JSON.parse(json) as ISynthesisAudioMetadata;\r\n }\r\n\r\n public static fromJSON(json: string): SynthesisAudioMetadata {\r\n return new SynthesisAudioMetadata(json);\r\n }\r\n\r\n public get Metadata(): ISynthesisMetadata[] {\r\n return this.privSynthesisAudioMetadata.Metadata;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"../../sdk/Contracts.js\";\r\nimport { IPrimaryLanguage, ITranslations } from \"../Exports.js\";\r\nimport { TranslationStatus } from \"../TranslationStatus.js\";\r\n\r\n// translation.hypothesis\r\nexport interface ITranslationHypothesis {\r\n Duration: number;\r\n Offset: number;\r\n PrimaryLanguage?: IPrimaryLanguage;\r\n Text: string;\r\n Translation: ITranslations;\r\n}\r\n\r\nexport class TranslationHypothesis implements ITranslationHypothesis {\r\n private privTranslationHypothesis: ITranslationHypothesis;\r\n\r\n private constructor(hypothesis: ITranslationHypothesis) {\r\n this.privTranslationHypothesis = hypothesis;\r\n this.privTranslationHypothesis.Translation.TranslationStatus = TranslationStatus[this.privTranslationHypothesis.Translation.TranslationStatus as unknown as keyof typeof TranslationStatus];\r\n }\r\n\r\n public static fromJSON(json: string): TranslationHypothesis {\r\n return new TranslationHypothesis(JSON.parse(json) as ITranslationHypothesis);\r\n }\r\n\r\n public static fromTranslationResponse(translationHypothesis: { SpeechHypothesis: ITranslationHypothesis }): TranslationHypothesis {\r\n Contracts.throwIfNullOrUndefined(translationHypothesis, \"translationHypothesis\");\r\n const hypothesis: ITranslationHypothesis = translationHypothesis.SpeechHypothesis;\r\n translationHypothesis.SpeechHypothesis = undefined;\r\n hypothesis.Translation = (translationHypothesis as unknown as ITranslations);\r\n return new TranslationHypothesis(hypothesis);\r\n }\r\n\r\n public get Duration(): number {\r\n return this.privTranslationHypothesis.Duration;\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privTranslationHypothesis.Offset;\r\n }\r\n\r\n public get Text(): string {\r\n return this.privTranslationHypothesis.Text;\r\n }\r\n\r\n public get Translation(): ITranslations {\r\n return this.privTranslationHypothesis.Translation;\r\n }\r\n\r\n public get Language(): string {\r\n return this.privTranslationHypothesis.PrimaryLanguage?.Language;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"../../sdk/Contracts.js\";\r\nimport { IPrimaryLanguage, ITranslations, RecognitionStatus } from \"../Exports.js\";\r\nimport { TranslationStatus } from \"../TranslationStatus.js\";\r\n\r\n// translation.phrase\r\nexport interface ITranslationPhrase {\r\n RecognitionStatus: RecognitionStatus;\r\n Offset: number;\r\n Duration: number;\r\n Translation?: ITranslations;\r\n Text?: string;\r\n DisplayText?: string;\r\n PrimaryLanguage?: IPrimaryLanguage;\r\n}\r\n\r\nexport class TranslationPhrase implements ITranslationPhrase {\r\n private privTranslationPhrase: ITranslationPhrase;\r\n\r\n private constructor(phrase: ITranslationPhrase) {\r\n this.privTranslationPhrase = phrase;\r\n this.privTranslationPhrase.RecognitionStatus = RecognitionStatus[this.privTranslationPhrase.RecognitionStatus as unknown as keyof typeof RecognitionStatus];\r\n if (this.privTranslationPhrase.Translation !== undefined) {\r\n this.privTranslationPhrase.Translation.TranslationStatus = TranslationStatus[this.privTranslationPhrase.Translation.TranslationStatus as unknown as keyof typeof TranslationStatus];\r\n }\r\n }\r\n\r\n public static fromJSON(json: string): TranslationPhrase {\r\n return new TranslationPhrase(JSON.parse(json) as ITranslationPhrase);\r\n }\r\n\r\n public static fromTranslationResponse(translationResponse: { SpeechPhrase: ITranslationPhrase }): TranslationPhrase {\r\n Contracts.throwIfNullOrUndefined(translationResponse, \"translationResponse\");\r\n const phrase: ITranslationPhrase = translationResponse.SpeechPhrase;\r\n translationResponse.SpeechPhrase = undefined;\r\n phrase.Translation = (translationResponse as unknown as ITranslations);\r\n phrase.Text = phrase.DisplayText;\r\n return new TranslationPhrase(phrase);\r\n }\r\n\r\n public get RecognitionStatus(): RecognitionStatus {\r\n return this.privTranslationPhrase.RecognitionStatus;\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privTranslationPhrase.Offset;\r\n }\r\n\r\n public get Duration(): number {\r\n return this.privTranslationPhrase.Duration;\r\n }\r\n\r\n public get Text(): string | undefined {\r\n return this.privTranslationPhrase.Text;\r\n }\r\n\r\n public get Language(): string | undefined {\r\n return this.privTranslationPhrase.PrimaryLanguage?.Language;\r\n }\r\n\r\n public get Confidence(): string | undefined {\r\n return this.privTranslationPhrase.PrimaryLanguage?.Confidence;\r\n }\r\n\r\n public get Translation(): ITranslations | undefined {\r\n return this.privTranslationPhrase.Translation;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SynthesisStatus } from \"../Exports.js\";\r\n\r\n// translation.synthesis.end\r\nexport interface ITranslationSynthesisEnd {\r\n SynthesisStatus?: SynthesisStatus;\r\n FailureReason?: string;\r\n Status?: SynthesisStatus;\r\n}\r\n\r\nexport class TranslationSynthesisEnd implements ITranslationSynthesisEnd {\r\n private privSynthesisEnd: ITranslationSynthesisEnd;\r\n\r\n private constructor(json: string) {\r\n this.privSynthesisEnd = JSON.parse(json) as ITranslationSynthesisEnd;\r\n if (!!this.privSynthesisEnd.SynthesisStatus) {\r\n this.privSynthesisEnd.SynthesisStatus = SynthesisStatus[this.privSynthesisEnd.SynthesisStatus as unknown as keyof typeof SynthesisStatus];\r\n }\r\n if (!!this.privSynthesisEnd.Status) {\r\n this.privSynthesisEnd.SynthesisStatus = SynthesisStatus[this.privSynthesisEnd.Status as unknown as keyof typeof SynthesisStatus];\r\n }\r\n }\r\n\r\n public static fromJSON(json: string): TranslationSynthesisEnd {\r\n return new TranslationSynthesisEnd(json);\r\n }\r\n\r\n public get SynthesisStatus(): SynthesisStatus {\r\n return this.privSynthesisEnd.SynthesisStatus;\r\n }\r\n\r\n public get FailureReason(): string {\r\n return this.privSynthesisEnd.FailureReason;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport interface ITurnStatusResponsePayload {\r\n interactionId: string;\r\n conversationId: string;\r\n statusCode: any;\r\n}\r\n\r\nexport class TurnStatusResponsePayload implements ITurnStatusResponsePayload {\r\n private privMessageStatusResponse: ITurnStatusResponsePayload;\r\n\r\n private constructor(json: string) {\r\n this.privMessageStatusResponse = JSON.parse(json) as ITurnStatusResponsePayload;\r\n }\r\n\r\n public static fromJSON(json: string): TurnStatusResponsePayload {\r\n return new TurnStatusResponsePayload(json);\r\n }\r\n\r\n public get interactionId(): string {\r\n return this.privMessageStatusResponse.interactionId;\r\n }\r\n\r\n public get conversationId(): string {\r\n return this.privMessageStatusResponse.conversationId;\r\n }\r\n\r\n public get statusCode(): any {\r\n // Payloads may contain a limited set of textual representations or a numeric status\r\n // code. The textual values are here converted into numeric ones.\r\n switch (this.privMessageStatusResponse.statusCode) {\r\n case \"Success\":\r\n return 200;\r\n case \"Failed\":\r\n return 400;\r\n case \"TimedOut\":\r\n return 429;\r\n default:\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\r\n return this.privMessageStatusResponse.statusCode;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ReplayableAudioNode } from \"../common.browser/Exports.js\";\r\nimport { ConnectionOpenResponse } from \"../common/ConnectionOpenResponse.js\";\r\nimport {\r\n ArgumentNullError,\r\n ConnectionClosedEvent,\r\n ConnectionEvent,\r\n ConnectionState,\r\n createNoDashGuid,\r\n EventSource,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IConnection,\r\n IDisposable,\r\n IStreamChunk,\r\n MessageType,\r\n ServiceEvent,\r\n Timeout\r\n} from \"../common/Exports.js\";\r\nimport { AudioStreamFormatImpl } from \"../sdk/Audio/AudioStreamFormat.js\";\r\nimport { SpeakerRecognitionModel } from \"../sdk/SpeakerRecognitionModel.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyId,\r\n RecognitionEventArgs,\r\n Recognizer,\r\n SessionEventArgs,\r\n SpeakerRecognitionResult,\r\n SpeechRecognitionResult,\r\n OutputFormat\r\n} from \"../sdk/Exports.js\";\r\nimport { Callback } from \"../sdk/Transcription/IConversation.js\";\r\nimport {\r\n AgentConfig,\r\n DynamicGrammarBuilder,\r\n ISpeechConfigAudioDevice,\r\n RecognitionMode,\r\n RequestSession,\r\n SpeechContext,\r\n SpeechDetected,\r\n type,\r\n OutputFormatPropertyName\r\n} from \"./Exports.js\";\r\nimport {\r\n AuthInfo,\r\n IAuthentication,\r\n} from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\ninterface CustomModel {\r\n language: string;\r\n endpoint: string;\r\n}\r\n\r\nexport interface PhraseDetection {\r\n customModels?: CustomModel[];\r\n onInterim?: { action: string };\r\n onSuccess?: { action: string };\r\n mode?: string;\r\n INTERACTIVE?: Segmentation;\r\n CONVERSATION?: Segmentation;\r\n DICTATION?: Segmentation;\r\n speakerDiarization?: SpeakerDiarization;\r\n}\r\n\r\nexport interface SpeakerDiarization {\r\n mode?: string;\r\n audioSessionId?: string;\r\n audioOffsetMs?: number;\r\n identityProvider?: string;\r\n}\r\n\r\nexport interface Segmentation {\r\n segmentation: {\r\n mode: \"Custom\";\r\n segmentationSilenceTimeoutMs: number;\r\n };\r\n}\r\n\r\nexport abstract class ServiceRecognizerBase implements IDisposable {\r\n private privAuthentication: IAuthentication;\r\n private privConnectionFactory: IConnectionFactory;\r\n\r\n // A promise for a configured connection.\r\n // Do not consume directly, call fetchConnection instead.\r\n private privConnectionConfigurationPromise: Promise = undefined;\r\n\r\n // A promise for a connection, but one that has not had the speech context sent yet.\r\n // Do not consume directly, call fetchConnection instead.\r\n private privConnectionPromise: Promise = undefined;\r\n private privAuthFetchEventId: string;\r\n private privIsDisposed: boolean;\r\n private privMustReportEndOfStream: boolean;\r\n private privConnectionEvents: EventSource;\r\n private privServiceEvents: EventSource;\r\n private privDynamicGrammar: DynamicGrammarBuilder;\r\n private privAgentConfig: AgentConfig;\r\n private privServiceHasSentMessage: boolean;\r\n private privActivityTemplate: string;\r\n private privSetTimeout: (cb: () => void, delay: number) => number = setTimeout;\r\n private privAudioSource: IAudioSource;\r\n private privIsLiveAudio: boolean = false;\r\n private privAverageBytesPerMs: number = 0;\r\n protected privSpeechContext: SpeechContext;\r\n protected privRequestSession: RequestSession;\r\n protected privConnectionId: string;\r\n protected privDiarizationSessionId: string;\r\n protected privRecognizerConfig: RecognizerConfig;\r\n protected privRecognizer: Recognizer;\r\n protected privSuccessCallback: (e: SpeechRecognitionResult) => void;\r\n protected privErrorCallback: (e: string) => void;\r\n protected privEnableSpeakerId: boolean = false;\r\n protected privExpectContentAssessmentResponse: boolean = false;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n recognizer: Recognizer) {\r\n\r\n if (!authentication) {\r\n throw new ArgumentNullError(\"authentication\");\r\n }\r\n\r\n if (!connectionFactory) {\r\n throw new ArgumentNullError(\"connectionFactory\");\r\n }\r\n\r\n if (!audioSource) {\r\n throw new ArgumentNullError(\"audioSource\");\r\n }\r\n\r\n if (!recognizerConfig) {\r\n throw new ArgumentNullError(\"recognizerConfig\");\r\n }\r\n\r\n this.privEnableSpeakerId = recognizerConfig.isSpeakerDiarizationEnabled;\r\n this.privMustReportEndOfStream = false;\r\n this.privAuthentication = authentication;\r\n this.privConnectionFactory = connectionFactory;\r\n this.privAudioSource = audioSource;\r\n this.privRecognizerConfig = recognizerConfig;\r\n this.privIsDisposed = false;\r\n this.privRecognizer = recognizer;\r\n this.privRequestSession = new RequestSession(this.privAudioSource.id());\r\n this.privConnectionEvents = new EventSource();\r\n this.privServiceEvents = new EventSource();\r\n this.privDynamicGrammar = new DynamicGrammarBuilder();\r\n this.privSpeechContext = new SpeechContext(this.privDynamicGrammar);\r\n this.privAgentConfig = new AgentConfig();\r\n const webWorkerLoadType: string = this.privRecognizerConfig.parameters.getProperty(PropertyId.WebWorkerLoadType, \"on\").toLowerCase();\r\n if (webWorkerLoadType === \"on\" && typeof (Blob) !== \"undefined\" && typeof (Worker) !== \"undefined\") {\r\n this.privSetTimeout = Timeout.setTimeout;\r\n } else {\r\n if (typeof window !== \"undefined\") {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n this.privSetTimeout = window.setTimeout.bind(window);\r\n }\r\n }\r\n\r\n this.connectionEvents.attach((connectionEvent: ConnectionEvent): void => {\r\n if (connectionEvent.name === \"ConnectionClosedEvent\") {\r\n const connectionClosedEvent = connectionEvent as ConnectionClosedEvent;\r\n if (connectionClosedEvent.statusCode === 1003 ||\r\n connectionClosedEvent.statusCode === 1007 ||\r\n connectionClosedEvent.statusCode === 1002 ||\r\n connectionClosedEvent.statusCode === 4000 ||\r\n this.privRequestSession.numConnectionAttempts > this.privRecognizerConfig.maxRetryCount\r\n ) {\r\n void this.cancelRecognitionLocal(CancellationReason.Error,\r\n connectionClosedEvent.statusCode === 1007 ? CancellationErrorCode.BadRequestParameters : CancellationErrorCode.ConnectionFailure,\r\n `${connectionClosedEvent.reason} websocket error code: ${connectionClosedEvent.statusCode}`);\r\n }\r\n }\r\n });\r\n\r\n if (this.privEnableSpeakerId) {\r\n this.privDiarizationSessionId = createNoDashGuid();\r\n }\r\n\r\n this.setLanguageIdJson();\r\n this.setOutputDetailLevelJson();\r\n }\r\n\r\n protected setTranslationJson(): void {\r\n const targetLanguages: string = this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, undefined);\r\n if (targetLanguages !== undefined) {\r\n const languages = targetLanguages.split(\",\");\r\n const translationVoice: string = this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceConnection_TranslationVoice, undefined);\r\n const action = ( translationVoice !== undefined ) ? \"Synthesize\" : \"None\";\r\n this.privSpeechContext.setSection(\"translation\", {\r\n onSuccess: { action },\r\n output: { interimResults: { mode: \"Always\" } },\r\n targetLanguages: languages,\r\n });\r\n\r\n if (translationVoice !== undefined) {\r\n const languageToVoiceMap: { [key: string]: string } = {};\r\n for (const lang of languages) {\r\n languageToVoiceMap[lang] = translationVoice;\r\n }\r\n this.privSpeechContext.setSection(\"synthesis\", {\r\n defaultVoices: languageToVoiceMap\r\n });\r\n }\r\n }\r\n }\r\n\r\n protected setSpeechSegmentationTimeoutJson(): void {\r\n const speechSegmentationTimeout: string = this.privRecognizerConfig.parameters.getProperty(PropertyId.Speech_SegmentationSilenceTimeoutMs, undefined);\r\n if (speechSegmentationTimeout !== undefined) {\r\n const mode = this.recognitionMode === RecognitionMode.Conversation ? \"CONVERSATION\" :\r\n this.recognitionMode === RecognitionMode.Dictation ? \"DICTATION\" : \"INTERACTIVE\";\r\n const segmentationSilenceTimeoutMs: number = parseInt(speechSegmentationTimeout, 10);\r\n const phraseDetection = this.privSpeechContext.getSection(\"phraseDetection\") as PhraseDetection;\r\n phraseDetection.mode = mode;\r\n phraseDetection[mode] = {\r\n segmentation: {\r\n mode: \"Custom\",\r\n segmentationSilenceTimeoutMs\r\n }\r\n };\r\n this.privSpeechContext.setSection(\"phraseDetection\", phraseDetection);\r\n }\r\n }\r\n\r\n protected setLanguageIdJson(): void {\r\n const phraseDetection = this.privSpeechContext.getSection(\"phraseDetection\") as PhraseDetection;\r\n if (this.privRecognizerConfig.autoDetectSourceLanguages !== undefined) {\r\n const sourceLanguages: string[] = this.privRecognizerConfig.autoDetectSourceLanguages.split(\",\");\r\n\r\n let speechContextLidMode;\r\n if (this.privRecognizerConfig.languageIdMode === \"Continuous\") {\r\n speechContextLidMode = \"DetectContinuous\";\r\n } else {// recognizerConfig.languageIdMode === \"AtStart\"\r\n speechContextLidMode = \"DetectAtAudioStart\";\r\n }\r\n\r\n this.privSpeechContext.setSection(\"languageId\", {\r\n Priority: \"PrioritizeLatency\",\r\n languages: sourceLanguages,\r\n mode: speechContextLidMode,\r\n onSuccess: { action: \"Recognize\" },\r\n onUnknown: { action: \"None\" }\r\n });\r\n this.privSpeechContext.setSection(\"phraseOutput\", {\r\n interimResults: {\r\n resultType: \"Auto\"\r\n },\r\n phraseResults: {\r\n resultType: \"Always\"\r\n }\r\n });\r\n const customModels: CustomModel[] = this.privRecognizerConfig.sourceLanguageModels;\r\n if (customModels !== undefined) {\r\n phraseDetection.customModels = customModels;\r\n phraseDetection.onInterim = { action: \"None\" };\r\n phraseDetection.onSuccess = { action: \"None\" };\r\n }\r\n }\r\n const targetLanguages: string = this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, undefined);\r\n if (targetLanguages !== undefined) {\r\n phraseDetection.onInterim = { action: \"Translate\" };\r\n phraseDetection.onSuccess = { action: \"Translate\" };\r\n this.privSpeechContext.setSection(\"phraseOutput\", {\r\n interimResults: {\r\n resultType: \"None\"\r\n },\r\n phraseResults: {\r\n resultType: \"None\"\r\n }\r\n });\r\n }\r\n\r\n this.privSpeechContext.setSection(\"phraseDetection\", phraseDetection);\r\n }\r\n\r\n protected setOutputDetailLevelJson(): void {\r\n if (this.privEnableSpeakerId) {\r\n const requestWordLevelTimestamps: string = this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps, \"false\").toLowerCase();\r\n if (requestWordLevelTimestamps === \"true\") {\r\n this.privSpeechContext.setWordLevelTimings();\r\n } else {\r\n const outputFormat: string = this.privRecognizerConfig.parameters.getProperty(OutputFormatPropertyName, OutputFormat[OutputFormat.Simple]).toLowerCase();\r\n if (outputFormat === OutputFormat[OutputFormat.Detailed].toLocaleLowerCase()) {\r\n this.privSpeechContext.setDetailedOutputFormat();\r\n }\r\n }\r\n }\r\n }\r\n\r\n public get isSpeakerDiarizationEnabled(): boolean {\r\n return this.privEnableSpeakerId;\r\n }\r\n\r\n public get audioSource(): IAudioSource {\r\n return this.privAudioSource;\r\n }\r\n\r\n public get speechContext(): SpeechContext {\r\n return this.privSpeechContext;\r\n }\r\n\r\n public get dynamicGrammar(): DynamicGrammarBuilder {\r\n return this.privDynamicGrammar;\r\n }\r\n\r\n public get agentConfig(): AgentConfig {\r\n return this.privAgentConfig;\r\n }\r\n\r\n public set conversationTranslatorToken(token: string) {\r\n this.privRecognizerConfig.parameters.setProperty(PropertyId.ConversationTranslator_Token, token);\r\n }\r\n\r\n public set voiceProfileType(type: string) {\r\n this.privRecognizerConfig.parameters.setProperty(PropertyId.SpeechServiceConnection_SpeakerIdMode, type);\r\n }\r\n\r\n public set authentication(auth: IAuthentication) {\r\n this.privAuthentication = auth;\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public async dispose(reason?: string): Promise {\r\n this.privIsDisposed = true;\r\n if (this.privConnectionConfigurationPromise !== undefined) {\r\n try {\r\n const connection: IConnection = await this.privConnectionConfigurationPromise;\r\n await connection.dispose(reason);\r\n } catch (error) {\r\n // The connection is in a bad state. But we're trying to kill it, so...\r\n return;\r\n }\r\n }\r\n }\r\n\r\n public get connectionEvents(): EventSource {\r\n return this.privConnectionEvents;\r\n }\r\n\r\n public get serviceEvents(): EventSource {\r\n return this.privServiceEvents;\r\n }\r\n\r\n public get recognitionMode(): RecognitionMode {\r\n return this.privRecognizerConfig.recognitionMode;\r\n }\r\n\r\n protected recognizeOverride: (recoMode: RecognitionMode, sc: (e: SpeechRecognitionResult) => void, ec: (e: string) => void) => Promise = undefined;\r\n\r\n public recognizeSpeaker: (model: SpeakerRecognitionModel) => Promise = undefined;\r\n\r\n public async recognize(\r\n recoMode: RecognitionMode,\r\n successCallback: (e: SpeechRecognitionResult) => void,\r\n errorCallBack: (e: string) => void,\r\n ): Promise {\r\n\r\n if (this.recognizeOverride !== undefined) {\r\n await this.recognizeOverride(recoMode, successCallback, errorCallBack);\r\n return;\r\n }\r\n // Clear the existing configuration promise to force a re-transmission of config and context.\r\n this.privConnectionConfigurationPromise = undefined;\r\n this.privRecognizerConfig.recognitionMode = recoMode;\r\n this.setSpeechSegmentationTimeoutJson();\r\n this.setTranslationJson();\r\n\r\n this.privSuccessCallback = successCallback;\r\n this.privErrorCallback = errorCallBack;\r\n\r\n this.privRequestSession.startNewRecognition();\r\n this.privRequestSession.listenForServiceTelemetry(this.privAudioSource.events);\r\n\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n let audioNode: ReplayableAudioNode;\r\n\r\n try {\r\n const audioStreamNode: IAudioStreamNode = await this.audioSource.attach(this.privRequestSession.audioNodeId);\r\n const format: AudioStreamFormatImpl = await this.audioSource.format;\r\n const deviceInfo: ISpeechConfigAudioDevice = await this.audioSource.deviceInfo;\r\n this.privIsLiveAudio = deviceInfo.type && deviceInfo.type === type.Microphones;\r\n\r\n audioNode = new ReplayableAudioNode(audioStreamNode, format.avgBytesPerSec);\r\n await this.privRequestSession.onAudioSourceAttachCompleted(audioNode, false);\r\n this.privRecognizerConfig.SpeechServiceConfig.Context.audio = { source: deviceInfo };\r\n\r\n } catch (error) {\r\n await this.privRequestSession.onStopRecognizing();\r\n throw error;\r\n }\r\n\r\n try {\r\n await conPromise;\r\n } catch (error) {\r\n await this.cancelRecognitionLocal(CancellationReason.Error, CancellationErrorCode.ConnectionFailure, error as string);\r\n return;\r\n }\r\n\r\n const sessionStartEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.sessionStarted) {\r\n this.privRecognizer.sessionStarted(this.privRecognizer, sessionStartEventArgs);\r\n }\r\n\r\n void this.receiveMessage();\r\n const audioSendPromise = this.sendAudio(audioNode);\r\n\r\n audioSendPromise.catch(async (error: string): Promise => {\r\n await this.cancelRecognitionLocal(CancellationReason.Error, CancellationErrorCode.RuntimeError, error);\r\n });\r\n\r\n return;\r\n }\r\n\r\n public async stopRecognizing(): Promise {\r\n if (this.privRequestSession.isRecognizing) {\r\n try {\r\n await this.audioSource.turnOff();\r\n await this.sendFinalAudio();\r\n await this.privRequestSession.onStopRecognizing();\r\n await this.privRequestSession.turnCompletionPromise;\r\n } finally {\r\n await this.privRequestSession.dispose();\r\n }\r\n }\r\n return;\r\n }\r\n\r\n public async connect(): Promise {\r\n await this.connectImpl();\r\n return Promise.resolve();\r\n }\r\n\r\n public connectAsync(cb?: Callback, err?: Callback): void {\r\n this.connectImpl().then((): void => {\r\n try {\r\n if (!!cb) {\r\n cb();\r\n }\r\n } catch (e) {\r\n if (!!err) {\r\n err(e);\r\n }\r\n }\r\n }, (reason: any): void => {\r\n try {\r\n if (!!err) {\r\n err(reason);\r\n }\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n }\r\n });\r\n }\r\n\r\n protected disconnectOverride: () => Promise = undefined;\r\n\r\n public async disconnect(): Promise {\r\n await this.cancelRecognitionLocal(CancellationReason.Error,\r\n CancellationErrorCode.NoError,\r\n \"Disconnecting\");\r\n\r\n if (this.disconnectOverride !== undefined) {\r\n await this.disconnectOverride();\r\n }\r\n\r\n if (this.privConnectionPromise !== undefined) {\r\n try {\r\n await (await this.privConnectionPromise).dispose();\r\n } catch (error) {\r\n\r\n }\r\n }\r\n this.privConnectionPromise = undefined;\r\n }\r\n\r\n // Called when telemetry data is sent to the service.\r\n // Used for testing Telemetry capture.\r\n public static telemetryData: (json: string) => void;\r\n public static telemetryDataEnabled: boolean = true;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public sendMessage(message: string): Promise {\r\n return;\r\n }\r\n\r\n public async sendNetworkMessage(path: string, payload: string | ArrayBuffer): Promise {\r\n const type: MessageType = typeof payload === \"string\" ? MessageType.Text : MessageType.Binary;\r\n const contentType: string = typeof payload === \"string\" ? \"application/json\" : \"\";\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n return connection.send(new SpeechConnectionMessage(type, path, this.privRequestSession.requestId, contentType, payload));\r\n }\r\n\r\n public set activityTemplate(messagePayload: string) {\r\n this.privActivityTemplate = messagePayload;\r\n }\r\n\r\n public get activityTemplate(): string {\r\n return this.privActivityTemplate;\r\n }\r\n\r\n public set expectContentAssessmentResponse(value: boolean) {\r\n this.privExpectContentAssessmentResponse = value;\r\n }\r\n\r\n protected abstract processTypeSpecificMessages(\r\n connectionMessage: SpeechConnectionMessage,\r\n successCallback?: (e: SpeechRecognitionResult) => void,\r\n errorCallBack?: (e: string) => void): Promise;\r\n\r\n protected async sendTelemetryData(): Promise {\r\n const telemetryData = this.privRequestSession.getTelemetry();\r\n if (ServiceRecognizerBase.telemetryDataEnabled !== true ||\r\n this.privIsDisposed ||\r\n null === telemetryData) {\r\n return;\r\n }\r\n\r\n if (!!ServiceRecognizerBase.telemetryData) {\r\n try {\r\n ServiceRecognizerBase.telemetryData(telemetryData);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n await connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"telemetry\",\r\n this.privRequestSession.requestId,\r\n \"application/json\",\r\n telemetryData));\r\n }\r\n\r\n // Cancels recognition.\r\n protected abstract cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void;\r\n\r\n // Cancels recognition.\r\n protected async cancelRecognitionLocal(\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): Promise {\r\n\r\n if (!!this.privRequestSession.isRecognizing) {\r\n await this.privRequestSession.onStopRecognizing();\r\n\r\n this.cancelRecognition(\r\n this.privRequestSession.sessionId,\r\n this.privRequestSession.requestId,\r\n cancellationReason,\r\n errorCode,\r\n error);\r\n }\r\n }\r\n\r\n protected receiveMessageOverride: () => Promise = undefined;\r\n\r\n protected async receiveMessage(): Promise {\r\n try {\r\n if (this.privIsDisposed) {\r\n // We're done.\r\n return;\r\n }\r\n\r\n let connection = await this.fetchConnection();\r\n const message = await connection.read();\r\n\r\n if (this.receiveMessageOverride !== undefined) {\r\n return this.receiveMessageOverride();\r\n }\r\n\r\n // indicates we are draining the queue and it came with no message;\r\n if (!message) {\r\n return this.receiveMessage();\r\n }\r\n\r\n this.privServiceHasSentMessage = true;\r\n const connectionMessage = SpeechConnectionMessage.fromConnectionMessage(message);\r\n\r\n if (connectionMessage.requestId.toLowerCase() === this.privRequestSession.requestId.toLowerCase()) {\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"turn.start\":\r\n this.privMustReportEndOfStream = true;\r\n this.privRequestSession.onServiceTurnStartResponse();\r\n break;\r\n\r\n case \"speech.startdetected\":\r\n const speechStartDetected: SpeechDetected = SpeechDetected.fromJSON(connectionMessage.textBody);\r\n const speechStartEventArgs = new RecognitionEventArgs(speechStartDetected.Offset, this.privRequestSession.sessionId);\r\n if (!!this.privRecognizer.speechStartDetected) {\r\n this.privRecognizer.speechStartDetected(this.privRecognizer, speechStartEventArgs);\r\n }\r\n break;\r\n\r\n case \"speech.enddetected\":\r\n let json: string;\r\n if (connectionMessage.textBody.length > 0) {\r\n json = connectionMessage.textBody;\r\n } else {\r\n // If the request was empty, the JSON returned is empty.\r\n json = \"{ Offset: 0 }\";\r\n }\r\n const speechStopDetected: SpeechDetected = SpeechDetected.fromJSON(json);\r\n const speechStopEventArgs = new RecognitionEventArgs(speechStopDetected.Offset + this.privRequestSession.currentTurnAudioOffset, this.privRequestSession.sessionId);\r\n if (!!this.privRecognizer.speechEndDetected) {\r\n this.privRecognizer.speechEndDetected(this.privRecognizer, speechStopEventArgs);\r\n }\r\n break;\r\n\r\n case \"turn.end\":\r\n await this.sendTelemetryData();\r\n if (this.privRequestSession.isSpeechEnded && this.privMustReportEndOfStream) {\r\n this.privMustReportEndOfStream = false;\r\n await this.cancelRecognitionLocal(CancellationReason.EndOfStream, CancellationErrorCode.NoError, undefined);\r\n }\r\n const sessionStopEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n await this.privRequestSession.onServiceTurnEndResponse(this.privRecognizerConfig.isContinuousRecognition);\r\n if (!this.privRecognizerConfig.isContinuousRecognition || this.privRequestSession.isSpeechEnded || !this.privRequestSession.isRecognizing) {\r\n if (!!this.privRecognizer.sessionStopped) {\r\n this.privRecognizer.sessionStopped(this.privRecognizer, sessionStopEventArgs);\r\n }\r\n return;\r\n } else {\r\n connection = await this.fetchConnection();\r\n await this.sendPrePayloadJSON(connection);\r\n }\r\n break;\r\n\r\n default:\r\n if (!await this.processTypeSpecificMessages(connectionMessage)) {\r\n // here are some messages that the derived class has not processed, dispatch them to connect class\r\n if (!!this.privServiceEvents) {\r\n this.serviceEvents.onEvent(new ServiceEvent(connectionMessage.path.toLowerCase(), connectionMessage.textBody));\r\n }\r\n }\r\n }\r\n }\r\n return this.receiveMessage();\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n private updateSpeakerDiarizationAudioOffset(): void {\r\n const bytesSent: number = this.privRequestSession.recognitionBytesSent;\r\n const audioOffsetMs: number = bytesSent / this.privAverageBytesPerMs;\r\n this.privSpeechContext.setSpeakerDiarizationAudioOffsetMs(audioOffsetMs);\r\n }\r\n\r\n protected sendSpeechContext(connection: IConnection, generateNewRequestId: boolean): Promise {\r\n if (this.privEnableSpeakerId) {\r\n this.updateSpeakerDiarizationAudioOffset();\r\n }\r\n const speechContextJson = this.speechContext.toJSON();\r\n if (generateNewRequestId) {\r\n this.privRequestSession.onSpeechContext();\r\n }\r\n\r\n if (speechContextJson) {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speech.context\",\r\n this.privRequestSession.requestId,\r\n \"application/json\",\r\n speechContextJson));\r\n }\r\n return;\r\n }\r\n\r\n protected sendPrePayloadJSONOverride: (connection: IConnection) => Promise = undefined;\r\n\r\n protected noOp(): Promise {\r\n // operation not supported\r\n return;\r\n }\r\n\r\n // Encapsulated for derived service recognizers that need to send additional JSON\r\n protected async sendPrePayloadJSON(connection: IConnection, generateNewRequestId: boolean = true): Promise {\r\n if (this.sendPrePayloadJSONOverride !== undefined) {\r\n return this.sendPrePayloadJSONOverride(connection);\r\n }\r\n\r\n await this.sendSpeechContext(connection, generateNewRequestId);\r\n await this.sendWaveHeader(connection);\r\n return;\r\n }\r\n\r\n protected async sendWaveHeader(connection: IConnection): Promise {\r\n const format: AudioStreamFormatImpl = await this.audioSource.format;\r\n // this.writeBufferToConsole(format.header);\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Binary,\r\n \"audio\",\r\n this.privRequestSession.requestId,\r\n \"audio/x-wav\",\r\n format.header\r\n ));\r\n }\r\n\r\n protected postConnectImplOverride: (connection: Promise) => Promise = undefined;\r\n\r\n // Establishes a websocket connection to the end point.\r\n protected connectImpl(): Promise {\r\n if (this.privConnectionPromise !== undefined) {\r\n return this.privConnectionPromise.then((connection: IConnection): Promise => {\r\n if (connection.state() === ConnectionState.Disconnected) {\r\n this.privConnectionId = null;\r\n this.privConnectionPromise = undefined;\r\n this.privServiceHasSentMessage = false;\r\n return this.connectImpl();\r\n }\r\n return this.privConnectionPromise;\r\n }, (): Promise => {\r\n this.privConnectionId = null;\r\n this.privConnectionPromise = undefined;\r\n this.privServiceHasSentMessage = false;\r\n return this.connectImpl();\r\n });\r\n }\r\n\r\n this.privConnectionPromise = this.retryableConnect();\r\n\r\n // Attach an empty handler to allow the promise to run in the background while\r\n // other startup events happen. It'll eventually be awaited on.\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.privConnectionPromise.catch((): void => { });\r\n\r\n if (this.postConnectImplOverride !== undefined) {\r\n return this.postConnectImplOverride(this.privConnectionPromise);\r\n }\r\n\r\n return this.privConnectionPromise;\r\n }\r\n\r\n protected configConnectionOverride: (connection: IConnection) => Promise = undefined;\r\n protected handleSpeechPhraseMessage: (textBody: string) => Promise = undefined;\r\n protected handleSpeechHypothesisMessage: (textBody: string) => void = undefined;\r\n\r\n protected sendSpeechServiceConfig(connection: IConnection, requestSession: RequestSession, SpeechServiceConfigJson: string): Promise {\r\n requestSession.onSpeechContext();\r\n // filter out anything that is not required for the service to work.\r\n if (ServiceRecognizerBase.telemetryDataEnabled !== true) {\r\n const withTelemetry: { context: { system: string } } = JSON.parse(SpeechServiceConfigJson) as { context: { system: string } };\r\n\r\n const replacement: any = {\r\n context: {\r\n system: withTelemetry.context.system,\r\n },\r\n };\r\n\r\n SpeechServiceConfigJson = JSON.stringify(replacement);\r\n }\r\n\r\n if (this.privRecognizerConfig.parameters.getProperty(\"f0f5debc-f8c9-4892-ac4b-90a7ab359fd2\", \"false\").toLowerCase() === \"true\") {\r\n const json: { context: { DisableReferenceChannel: string; MicSpec: string } } = JSON.parse(SpeechServiceConfigJson) as { context: { DisableReferenceChannel: string; MicSpec: string } };\r\n json.context.DisableReferenceChannel = \"True\";\r\n json.context.MicSpec = \"1_0_0\";\r\n SpeechServiceConfigJson = JSON.stringify(json);\r\n }\r\n\r\n if (SpeechServiceConfigJson) {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speech.config\",\r\n requestSession.requestId,\r\n \"application/json\",\r\n SpeechServiceConfigJson));\r\n }\r\n\r\n return;\r\n }\r\n\r\n protected async fetchConnection(): Promise {\r\n if (this.privConnectionConfigurationPromise !== undefined) {\r\n return this.privConnectionConfigurationPromise.then((connection: IConnection): Promise => {\r\n if (connection.state() === ConnectionState.Disconnected) {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigurationPromise = undefined;\r\n this.privServiceHasSentMessage = false;\r\n return this.fetchConnection();\r\n }\r\n return this.privConnectionConfigurationPromise;\r\n }, (): Promise => {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigurationPromise = undefined;\r\n this.privServiceHasSentMessage = false;\r\n return this.fetchConnection();\r\n });\r\n }\r\n\r\n this.privConnectionConfigurationPromise = this.configureConnection();\r\n return await this.privConnectionConfigurationPromise;\r\n }\r\n\r\n protected async sendAudio(audioStreamNode: IAudioStreamNode): Promise {\r\n const audioFormat: AudioStreamFormatImpl = await this.audioSource.format;\r\n this.privAverageBytesPerMs = audioFormat.avgBytesPerSec / 1000;\r\n // The time we last sent data to the service.\r\n let nextSendTime: number = Date.now();\r\n\r\n // Max amount to send before we start to throttle\r\n const fastLaneSizeMs: string = this.privRecognizerConfig.parameters.getProperty(\"SPEECH-TransmitLengthBeforThrottleMs\", \"5000\");\r\n const maxSendUnthrottledBytes: number = audioFormat.avgBytesPerSec / 1000 * parseInt(fastLaneSizeMs, 10);\r\n const startRecogNumber: number = this.privRequestSession.recogNumber;\r\n\r\n const readAndUploadCycle = async (): Promise => {\r\n // If speech is done, stop sending audio.\r\n if (!this.privIsDisposed &&\r\n !this.privRequestSession.isSpeechEnded &&\r\n this.privRequestSession.isRecognizing &&\r\n this.privRequestSession.recogNumber === startRecogNumber) {\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n const audioStreamChunk: IStreamChunk = await audioStreamNode.read();\r\n // we have a new audio chunk to upload.\r\n if (this.privRequestSession.isSpeechEnded) {\r\n // If service already recognized audio end then don't send any more audio\r\n return;\r\n }\r\n\r\n let payload: ArrayBuffer;\r\n let sendDelay: number;\r\n\r\n if (!audioStreamChunk || audioStreamChunk.isEnd) {\r\n payload = null;\r\n sendDelay = 0;\r\n } else {\r\n payload = audioStreamChunk.buffer;\r\n\r\n this.privRequestSession.onAudioSent(payload.byteLength);\r\n\r\n if (maxSendUnthrottledBytes >= this.privRequestSession.bytesSent) {\r\n sendDelay = 0;\r\n } else {\r\n sendDelay = Math.max(0, nextSendTime - Date.now());\r\n }\r\n }\r\n\r\n if (0 !== sendDelay) {\r\n await this.delay(sendDelay);\r\n }\r\n\r\n if (payload !== null) {\r\n nextSendTime = Date.now() + (payload.byteLength * 1000 / (audioFormat.avgBytesPerSec * 2));\r\n }\r\n\r\n // Are we still alive?\r\n if (!this.privIsDisposed &&\r\n !this.privRequestSession.isSpeechEnded &&\r\n this.privRequestSession.isRecognizing &&\r\n this.privRequestSession.recogNumber === startRecogNumber) {\r\n connection.send(\r\n new SpeechConnectionMessage(MessageType.Binary, \"audio\", this.privRequestSession.requestId, null, payload)\r\n ).catch((): void => {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.privRequestSession.onServiceTurnEndResponse(this.privRecognizerConfig.isContinuousRecognition).catch((): void => { });\r\n });\r\n\r\n if (!audioStreamChunk?.isEnd) {\r\n // this.writeBufferToConsole(payload);\r\n // Regardless of success or failure, schedule the next upload.\r\n // If the underlying connection was broken, the next cycle will\r\n // get a new connection and re-transmit missing audio automatically.\r\n return readAndUploadCycle();\r\n } else {\r\n // the audio stream has been closed, no need to schedule next\r\n // read-upload cycle.\r\n if (!this.privIsLiveAudio) {\r\n this.privRequestSession.onSpeechEnded();\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n return readAndUploadCycle();\r\n }\r\n\r\n private async retryableConnect(): Promise {\r\n let isUnAuthorized: boolean = false;\r\n\r\n this.privAuthFetchEventId = createNoDashGuid();\r\n const sessionId: string = this.privRequestSession.sessionId;\r\n this.privConnectionId = (sessionId !== undefined) ? sessionId : createNoDashGuid();\r\n\r\n this.privRequestSession.onPreConnectionStart(this.privAuthFetchEventId, this.privConnectionId);\r\n let lastStatusCode: number = 0;\r\n let lastReason: string = \"\";\r\n\r\n while (this.privRequestSession.numConnectionAttempts <= this.privRecognizerConfig.maxRetryCount) {\r\n\r\n // Get the auth information for the connection. This is a bit of overkill for the current API surface, but leaving the plumbing in place to be able to raise a developer-customer\r\n // facing event when a connection fails to let them try and provide new auth information.\r\n const authPromise = isUnAuthorized ? this.privAuthentication.fetchOnExpiry(this.privAuthFetchEventId) : this.privAuthentication.fetch(this.privAuthFetchEventId);\r\n const auth: AuthInfo = await authPromise;\r\n\r\n await this.privRequestSession.onAuthCompleted(false);\r\n\r\n // Create the connection\r\n const connection: IConnection = this.privConnectionFactory.create(this.privRecognizerConfig, auth, this.privConnectionId);\r\n // Attach the telemetry handlers.\r\n this.privRequestSession.listenForServiceTelemetry(connection.events);\r\n\r\n // Attach to the underlying event. No need to hold onto the detach pointers as in the event the connection goes away,\r\n // it'll stop sending events.\r\n connection.events.attach((event: ConnectionEvent): void => {\r\n this.connectionEvents.onEvent(event);\r\n });\r\n\r\n const response: ConnectionOpenResponse = await connection.open();\r\n // 200 == everything is fine.\r\n if (response.statusCode === 200) {\r\n await this.privRequestSession.onConnectionEstablishCompleted(response.statusCode);\r\n return Promise.resolve(connection);\r\n } else if (response.statusCode === 1006) {\r\n isUnAuthorized = true;\r\n }\r\n\r\n lastStatusCode = response.statusCode;\r\n lastReason = response.reason;\r\n\r\n this.privRequestSession.onRetryConnection();\r\n }\r\n\r\n await this.privRequestSession.onConnectionEstablishCompleted(lastStatusCode, lastReason);\r\n return Promise.reject(`Unable to contact server. StatusCode: ${lastStatusCode}, ${this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint)} Reason: ${lastReason}`);\r\n }\r\n\r\n private delay(delayMs: number): Promise {\r\n return new Promise((resolve: () => void): number => this.privSetTimeout(resolve, delayMs));\r\n }\r\n\r\n private writeBufferToConsole(buffer: ArrayBuffer): void {\r\n let out: string = \"Buffer Size: \";\r\n if (null === buffer) {\r\n out += \"null\";\r\n } else {\r\n const readView: Uint8Array = new Uint8Array(buffer);\r\n out += `${buffer.byteLength}\\r\\n`;\r\n for (let i: number = 0; i < buffer.byteLength; i++) {\r\n out += readView[i].toString(16).padStart(2, \"0\") + \" \";\r\n if (((i + 1) % 16) === 0) {\r\n // eslint-disable-next-line no-console\r\n console.info(out);\r\n out = \"\";\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line no-console\r\n console.info(out);\r\n }\r\n\r\n private async sendFinalAudio(): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n await connection.send(new SpeechConnectionMessage(MessageType.Binary, \"audio\", this.privRequestSession.requestId, null, null));\r\n return;\r\n }\r\n\r\n // Takes an established websocket connection to the endpoint and sends speech configuration information.\r\n private async configureConnection(): Promise {\r\n const connection: IConnection = await this.connectImpl();\r\n if (this.configConnectionOverride !== undefined) {\r\n return this.configConnectionOverride(connection);\r\n }\r\n await this.sendSpeechServiceConfig(connection, this.privRequestSession, this.privRecognizerConfig.SpeechServiceConfig.serialize());\r\n await this.sendPrePayloadJSON(connection, false);\r\n return connection;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n AudioSourceErrorEvent,\r\n AudioStreamNodeAttachedEvent,\r\n AudioStreamNodeAttachingEvent,\r\n AudioStreamNodeDetachedEvent,\r\n AudioStreamNodeErrorEvent,\r\n ConnectionEstablishedEvent,\r\n ConnectionEstablishErrorEvent,\r\n ConnectionMessageReceivedEvent,\r\n ConnectionStartEvent,\r\n IEventListener,\r\n IStringDictionary,\r\n PlatformEvent,\r\n} from \"../common/Exports.js\";\r\nimport { ConnectingToServiceEvent, RecognitionTriggeredEvent } from \"./RecognitionEvents.js\";\r\n\r\nexport interface ITelemetry {\r\n Metrics: IMetric[];\r\n ReceivedMessages: IStringDictionary;\r\n}\r\n\r\nexport interface IMetric {\r\n End?: string;\r\n Error?: string;\r\n Id?: string;\r\n Name?: string;\r\n Start?: string;\r\n PhraseLatencyMs?: number[];\r\n FirstHypothesisLatencyMs?: number[];\r\n}\r\n\r\nexport class ServiceTelemetryListener implements IEventListener {\r\n private privIsDisposed: boolean = false;\r\n\r\n private privRequestId: string;\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n\r\n private privListeningTriggerMetric: IMetric = null;\r\n private privMicMetric: IMetric = null;\r\n private privConnectionEstablishMetric: IMetric = null;\r\n\r\n private privMicStartTime: string;\r\n\r\n private privConnectionId: string;\r\n private privConnectionStartTime: string;\r\n\r\n private privReceivedMessages: IStringDictionary;\r\n private privPhraseLatencies: number[];\r\n private privHypothesisLatencies: number[];\r\n\r\n public constructor(requestId: string, audioSourceId: string, audioNodeId: string) {\r\n this.privRequestId = requestId;\r\n this.privAudioSourceId = audioSourceId;\r\n this.privAudioNodeId = audioNodeId;\r\n\r\n this.privReceivedMessages = {};\r\n this.privPhraseLatencies = [];\r\n this.privHypothesisLatencies = [];\r\n }\r\n\r\n public phraseReceived(audioReceivedTime: number): void {\r\n if (audioReceivedTime > 0) { // 0 indicates the time is unknown. Drop it.\r\n this.privPhraseLatencies.push(Date.now() - audioReceivedTime);\r\n }\r\n }\r\n\r\n public hypothesisReceived(audioReceivedTime: number): void {\r\n if (audioReceivedTime > 0) { // 0 indicates the time is unknown. Drop it.\r\n this.privHypothesisLatencies.push(Date.now() - audioReceivedTime);\r\n }\r\n }\r\n\r\n public onEvent(e: PlatformEvent): void {\r\n if (this.privIsDisposed) {\r\n return;\r\n }\r\n\r\n if (e instanceof RecognitionTriggeredEvent && e.requestId === this.privRequestId) {\r\n this.privListeningTriggerMetric = {\r\n End: e.eventTime,\r\n Name: \"ListeningTrigger\",\r\n Start: e.eventTime,\r\n };\r\n }\r\n\r\n if (e instanceof AudioStreamNodeAttachingEvent && e.audioSourceId === this.privAudioSourceId && e.audioNodeId === this.privAudioNodeId) {\r\n this.privMicStartTime = e.eventTime;\r\n }\r\n\r\n if (e instanceof AudioStreamNodeAttachedEvent && e.audioSourceId === this.privAudioSourceId && e.audioNodeId === this.privAudioNodeId) {\r\n this.privMicStartTime = e.eventTime;\r\n }\r\n\r\n if (e instanceof AudioSourceErrorEvent && e.audioSourceId === this.privAudioSourceId) {\r\n if (!this.privMicMetric) {\r\n this.privMicMetric = {\r\n End: e.eventTime,\r\n Error: e.error,\r\n Name: \"Microphone\",\r\n Start: this.privMicStartTime,\r\n };\r\n }\r\n }\r\n\r\n if (e instanceof AudioStreamNodeErrorEvent && e.audioSourceId === this.privAudioSourceId && e.audioNodeId === this.privAudioNodeId) {\r\n if (!this.privMicMetric) {\r\n this.privMicMetric = {\r\n End: e.eventTime,\r\n Error: e.error,\r\n Name: \"Microphone\",\r\n Start: this.privMicStartTime,\r\n };\r\n }\r\n }\r\n\r\n if (e instanceof AudioStreamNodeDetachedEvent && e.audioSourceId === this.privAudioSourceId && e.audioNodeId === this.privAudioNodeId) {\r\n if (!this.privMicMetric) {\r\n this.privMicMetric = {\r\n End: e.eventTime,\r\n Name: \"Microphone\",\r\n Start: this.privMicStartTime,\r\n };\r\n }\r\n }\r\n\r\n if (e instanceof ConnectingToServiceEvent && e.requestId === this.privRequestId) {\r\n this.privConnectionId = e.sessionId;\r\n }\r\n\r\n if (e instanceof ConnectionStartEvent && e.connectionId === this.privConnectionId) {\r\n this.privConnectionStartTime = e.eventTime;\r\n }\r\n\r\n if (e instanceof ConnectionEstablishedEvent && e.connectionId === this.privConnectionId) {\r\n if (!this.privConnectionEstablishMetric) {\r\n this.privConnectionEstablishMetric = {\r\n End: e.eventTime,\r\n Id: this.privConnectionId,\r\n Name: \"Connection\",\r\n Start: this.privConnectionStartTime,\r\n };\r\n }\r\n }\r\n\r\n if (e instanceof ConnectionEstablishErrorEvent && e.connectionId === this.privConnectionId) {\r\n if (!this.privConnectionEstablishMetric) {\r\n this.privConnectionEstablishMetric = {\r\n End: e.eventTime,\r\n Error: this.getConnectionError(e.statusCode),\r\n Id: this.privConnectionId,\r\n Name: \"Connection\",\r\n Start: this.privConnectionStartTime,\r\n };\r\n }\r\n }\r\n\r\n if (e instanceof ConnectionMessageReceivedEvent && e.connectionId === this.privConnectionId) {\r\n if (e.message && e.message.headers && e.message.headers.path) {\r\n if (!this.privReceivedMessages[e.message.headers.path]) {\r\n this.privReceivedMessages[e.message.headers.path] = new Array();\r\n }\r\n const maxMessagesToSend = 50;\r\n if (this.privReceivedMessages[e.message.headers.path].length < maxMessagesToSend) {\r\n this.privReceivedMessages[e.message.headers.path].push(e.networkReceivedTime);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public getTelemetry(): string {\r\n const metrics = new Array();\r\n\r\n if (this.privListeningTriggerMetric) {\r\n metrics.push(this.privListeningTriggerMetric);\r\n }\r\n\r\n if (this.privMicMetric) {\r\n metrics.push(this.privMicMetric);\r\n }\r\n\r\n if (this.privConnectionEstablishMetric) {\r\n metrics.push(this.privConnectionEstablishMetric);\r\n }\r\n\r\n if (this.privPhraseLatencies.length > 0) {\r\n metrics.push({\r\n PhraseLatencyMs: this.privPhraseLatencies,\r\n });\r\n }\r\n\r\n if (this.privHypothesisLatencies.length > 0) {\r\n metrics.push({\r\n FirstHypothesisLatencyMs: this.privHypothesisLatencies,\r\n });\r\n }\r\n\r\n const telemetry: ITelemetry = {\r\n Metrics: metrics,\r\n ReceivedMessages: this.privReceivedMessages,\r\n };\r\n\r\n const json = JSON.stringify(telemetry);\r\n\r\n // We dont want to send the same telemetry again. So clean those out.\r\n this.privReceivedMessages = {};\r\n this.privListeningTriggerMetric = null;\r\n this.privMicMetric = null;\r\n this.privConnectionEstablishMetric = null;\r\n this.privPhraseLatencies = [];\r\n this.privHypothesisLatencies = [];\r\n return json;\r\n }\r\n\r\n // Determines if there are any telemetry events to send to the service.\r\n public get hasTelemetry(): boolean {\r\n return (Object.keys(this.privReceivedMessages).length !== 0 ||\r\n this.privListeningTriggerMetric !== null ||\r\n this.privMicMetric !== null ||\r\n this.privConnectionEstablishMetric !== null ||\r\n this.privPhraseLatencies.length !== 0 ||\r\n this.privHypothesisLatencies.length !== 0);\r\n }\r\n\r\n public dispose(): void {\r\n this.privIsDisposed = true;\r\n }\r\n\r\n private getConnectionError(statusCode: number): string {\r\n /*\r\n -- Websocket status codes --\r\n NormalClosure = 1000,\r\n EndpointUnavailable = 1001,\r\n ProtocolError = 1002,\r\n InvalidMessageType = 1003,\r\n Empty = 1005,\r\n InvalidPayloadData = 1007,\r\n PolicyViolation = 1008,\r\n MessageTooBig = 1009,\r\n MandatoryExtension = 1010,\r\n InternalServerError = 1011\r\n */\r\n\r\n switch (statusCode) {\r\n case 400:\r\n case 1002:\r\n case 1003:\r\n case 1005:\r\n case 1007:\r\n case 1008:\r\n case 1009: return \"BadRequest\";\r\n case 401: return \"Unauthorized\";\r\n case 403: return \"Forbidden\";\r\n case 503:\r\n case 1001: return \"ServerUnavailable\";\r\n case 500:\r\n case 1011: return \"ServerError\";\r\n case 408:\r\n case 504: return \"Timeout\";\r\n default: return \"statuscode:\" + statusCode.toString();\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection } from \"../sdk/Exports.js\";\r\nimport { Context } from \"./Exports.js\";\r\n\r\nexport class SpeakerRecognitionConfig {\r\n private privParameters: PropertyCollection;\r\n private privContext: Context;\r\n\r\n public constructor(\r\n context: Context,\r\n parameters: PropertyCollection) {\r\n this.privContext = context ? context : new Context(null);\r\n this.privParameters = parameters;\r\n }\r\n\r\n public get parameters(): PropertyCollection {\r\n return this.privParameters;\r\n }\r\n\r\n public get Context(): Context {\r\n return this.privContext;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n IConnection,\r\n IStringDictionary\r\n} from \"../common/Exports.js\";\r\nimport {\r\n PropertyId\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./ConnectionFactoryBase.js\";\r\nimport {\r\n AuthInfo,\r\n RecognizerConfig,\r\n WebsocketMessageFormatter,\r\n} from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\n\r\nclass SpeakerRecognitionConnectionFactoryBase extends ConnectionFactoryBase {\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n endpointPath: string,\r\n connectionId?: string): IConnection {\r\n\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint);\r\n if (!endpoint) {\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, `wss://${region}.spr-frontend.speech${hostSuffix}`);\r\n const scenario: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_SpeakerIdMode, \"TextIndependentIdentification\");\r\n endpoint = `${host}/speaker/ws/${this.scenarioToPath(scenario)}/${endpointPath}`;\r\n }\r\n\r\n const queryParams: IStringDictionary = {\r\n format: \"simple\",\r\n language: config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage),\r\n };\r\n\r\n this.setCommonUrlParams(config, queryParams, endpoint);\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n headers[HeaderNames.SpIDAuthKey] = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Key);\r\n\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n\r\n private scenarioToPath(mode: string): string {\r\n switch (mode) {\r\n case \"TextIndependentVerification\":\r\n case \"2\":\r\n return \"verification/text-independent\";\r\n case \"TextDependentVerification\":\r\n case \"1\":\r\n return \"verification/text-dependent\";\r\n default:\r\n return \"identification/text-independent\";\r\n }\r\n }\r\n}\r\n\r\nexport class SpeakerRecognitionConnectionFactory extends SpeakerRecognitionConnectionFactoryBase {\r\n public create( config: RecognizerConfig, authInfo: AuthInfo, connectionId?: string): IConnection {\r\n return super.create(config, authInfo, \"recognition\", connectionId);\r\n }\r\n}\r\n\r\nexport class VoiceProfileConnectionFactory extends SpeakerRecognitionConnectionFactoryBase {\r\n public create( config: RecognizerConfig, authInfo: AuthInfo, connectionId?: string): IConnection {\r\n return super.create(config, authInfo, \"profile\", connectionId);\r\n }\r\n}\r\n\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ReplayableAudioNode } from \"../common.browser/Exports.js\";\r\nimport {\r\n Deferred,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IConnection,\r\n MessageType,\r\n} from \"../common/Exports.js\";\r\nimport { AudioStreamFormatImpl } from \"../sdk/Audio/AudioStreamFormat.js\";\r\nimport { SpeakerRecognitionModel } from \"../sdk/SpeakerRecognitionModel.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n SpeakerRecognitionResult,\r\n SpeakerRecognizer,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SessionEventArgs,\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n ISpeechConfigAudioDevice,\r\n SpeakerResponse,\r\n ServiceRecognizerBase,\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\ninterface SpeakerContext {\r\n scenario: string;\r\n profileIds: string[];\r\n features: {\r\n interimResult: string;\r\n progressiveDetection: string;\r\n };\r\n}\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class SpeakerServiceRecognizer extends ServiceRecognizerBase {\r\n private privSpeakerRecognizer: SpeakerRecognizer;\r\n private privSpeakerAudioSource: IAudioSource;\r\n private privResultDeferral: Deferred;\r\n private privSpeakerModel: SpeakerRecognitionModel;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n recognizer: SpeakerRecognizer) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, recognizer);\r\n this.privSpeakerRecognizer = recognizer;\r\n this.privSpeakerAudioSource = audioSource;\r\n this.recognizeSpeaker = (model: SpeakerRecognitionModel): Promise => this.recognizeSpeakerOnce(model);\r\n this.sendPrePayloadJSONOverride = (): Promise => this.noOp();\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n let processed: boolean = false;\r\n\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n if (connectionMessage.messageType === MessageType.Text) {\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n }\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"speaker.response\":\r\n const response: SpeakerResponse = JSON.parse(connectionMessage.textBody) as SpeakerResponse;\r\n let result: SpeakerRecognitionResult;\r\n if (response.status.statusCode.toLowerCase() !== \"success\") {\r\n result = new SpeakerRecognitionResult(\r\n response,\r\n ResultReason.Canceled,\r\n CancellationErrorCode.ServiceError,\r\n response.status.reason\r\n );\r\n } else {\r\n result = new SpeakerRecognitionResult(\r\n response,\r\n ResultReason.RecognizedSpeaker,\r\n );\r\n }\r\n if (!!this.privResultDeferral) {\r\n this.privResultDeferral.resolve(result);\r\n }\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n const defferal = new Deferred();\r\n defferal.resolve(processed);\r\n return defferal.promise;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n if (!!this.privResultDeferral) {\r\n const result: SpeakerRecognitionResult = new SpeakerRecognitionResult(\r\n {\r\n scenario: this.privSpeakerModel.scenario,\r\n status: { statusCode: error, reason: error }\r\n },\r\n ResultReason.Canceled,\r\n errorCode,\r\n error\r\n );\r\n try {\r\n this.privResultDeferral.resolve(result);\r\n } catch (error) {\r\n this.privResultDeferral.reject(error as string);\r\n }\r\n }\r\n }\r\n\r\n public async recognizeSpeakerOnce(model: SpeakerRecognitionModel): Promise {\r\n this.privSpeakerModel = model;\r\n this.voiceProfileType = model.scenario;\r\n if (!this.privResultDeferral) {\r\n this.privResultDeferral = new Deferred();\r\n }\r\n this.privRequestSession.startNewRecognition();\r\n this.privRequestSession.listenForServiceTelemetry(this.privSpeakerAudioSource.events);\r\n\r\n this.privRecognizerConfig.parameters.setProperty(PropertyId.Speech_SessionId, this.privRequestSession.sessionId);\r\n\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n\r\n const preAudioPromise: Promise = this.sendPreAudioMessages(this.extractSpeakerContext(model));\r\n\r\n const node: IAudioStreamNode = await this.privSpeakerAudioSource.attach(this.privRequestSession.audioNodeId);\r\n const format: AudioStreamFormatImpl = await this.privSpeakerAudioSource.format;\r\n const deviceInfo: ISpeechConfigAudioDevice = await this.privSpeakerAudioSource.deviceInfo;\r\n\r\n const audioNode = new ReplayableAudioNode(node, format.avgBytesPerSec);\r\n await this.privRequestSession.onAudioSourceAttachCompleted(audioNode, false);\r\n\r\n this.privRecognizerConfig.SpeechServiceConfig.Context.audio = { source: deviceInfo };\r\n\r\n try {\r\n await conPromise;\r\n await preAudioPromise;\r\n } catch (err) {\r\n this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.ConnectionFailure, err as string);\r\n }\r\n\r\n const sessionStartEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.sessionStarted) {\r\n this.privRecognizer.sessionStarted(this.privRecognizer, sessionStartEventArgs);\r\n }\r\n\r\n void this.receiveMessage();\r\n const audioSendPromise = this.sendAudio(audioNode);\r\n\r\n // /* eslint-disable no-empty */\r\n audioSendPromise.then((): void => { /* add? return true;*/ }, (error: string): void => {\r\n this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.RuntimeError, error);\r\n });\r\n\r\n return this.privResultDeferral.promise;\r\n }\r\n\r\n private async sendPreAudioMessages(context: SpeakerContext): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n await this.sendSpeakerRecognition(connection, context);\r\n // await this.sendWaveHeader(connection);\r\n }\r\n\r\n private async sendSpeakerRecognition(connection: IConnection, context: SpeakerContext): Promise {\r\n const speakerContextJson = JSON.stringify(context);\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speaker.context\",\r\n this.privRequestSession.requestId,\r\n \"application/json; charset=utf-8\",\r\n speakerContextJson));\r\n }\r\n\r\n private extractSpeakerContext(model: SpeakerRecognitionModel): SpeakerContext {\r\n return {\r\n features: {\r\n interimResult: \"enabled\",\r\n progressiveDetection: \"disabled\",\r\n },\r\n profileIds: model.profileIds,\r\n scenario: model.scenario,\r\n };\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n ForceDictationPropertyName,\r\n OutputFormatPropertyName,\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n IConnection,\r\n IStringDictionary\r\n} from \"../common/Exports.js\";\r\nimport {\r\n OutputFormat,\r\n PropertyId\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./ConnectionFactoryBase.js\";\r\nimport {\r\n AuthInfo,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n WebsocketMessageFormatter\r\n} from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\nimport {\r\n QueryParameterNames\r\n} from \"./QueryParameterNames.js\";\r\n\r\nexport class SpeechConnectionFactory extends ConnectionFactoryBase {\r\n\r\n private readonly interactiveRelativeUri: string = \"/speech/recognition/interactive/cognitiveservices/v1\";\r\n private readonly conversationRelativeUri: string = \"/speech/recognition/conversation/cognitiveservices/v1\";\r\n private readonly dictationRelativeUri: string = \"/speech/recognition/dictation/cognitiveservices/v1\";\r\n private readonly universalUri: string = \"/speech/universal/v\";\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, undefined);\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region, undefined);\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, \"wss://\" + region + \".stt.speech\" + hostSuffix);\r\n const queryParams: IStringDictionary = {};\r\n const endpointId: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_EndpointId, undefined);\r\n const language: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, undefined);\r\n\r\n if (endpointId) {\r\n if (!endpoint || endpoint.search(QueryParameterNames.CustomSpeechDeploymentId) === -1) {\r\n queryParams[QueryParameterNames.CustomSpeechDeploymentId] = endpointId;\r\n }\r\n } else if (language) {\r\n if (!endpoint || endpoint.search(QueryParameterNames.Language) === -1) {\r\n queryParams[QueryParameterNames.Language] = language;\r\n }\r\n }\r\n\r\n if (!endpoint || endpoint.search(QueryParameterNames.Format) === -1) {\r\n queryParams[QueryParameterNames.Format] = config.parameters.getProperty(OutputFormatPropertyName, OutputFormat[OutputFormat.Simple]).toLowerCase();\r\n }\r\n\r\n if (config.autoDetectSourceLanguages !== undefined) {\r\n queryParams[QueryParameterNames.EnableLanguageId] = \"true\";\r\n }\r\n\r\n this.setCommonUrlParams(config, queryParams, endpoint);\r\n\r\n if (!endpoint) {\r\n switch (config.recognitionMode) {\r\n case RecognitionMode.Conversation:\r\n if (config.parameters.getProperty(ForceDictationPropertyName, \"false\") === \"true\") {\r\n endpoint = host + this.dictationRelativeUri;\r\n } else {\r\n if (config.recognitionEndpointVersion !== undefined && parseInt(config.recognitionEndpointVersion, 10) > 1) {\r\n endpoint = `${host}${this.universalUri}${config.recognitionEndpointVersion}`;\r\n } else {\r\n endpoint = host + this.conversationRelativeUri;\r\n }\r\n }\r\n break;\r\n case RecognitionMode.Dictation:\r\n endpoint = host + this.dictationRelativeUri;\r\n break;\r\n default:\r\n if (config.recognitionEndpointVersion !== undefined && parseInt(config.recognitionEndpointVersion, 10) > 1) {\r\n endpoint = `${host}${this.universalUri}${config.recognitionEndpointVersion}`;\r\n } else {\r\n endpoint = host + this.interactiveRelativeUri; // default is interactive\r\n }\r\n break;\r\n }\r\n }\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n\r\n const webSocketConnection = new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n\r\n // Set the value of SpeechServiceConnection_Url to webSocketConnection.uri (and not to `endpoint`), since this value is the final\r\n // URI that was used to make the connection (including query parameters).\r\n const uri: string = webSocketConnection.uri;\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, uri);\r\n\r\n return webSocketConnection;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ArgumentNullError, ConnectionMessage, IStringDictionary, MessageType } from \"../common/Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\n\r\nexport class SpeechConnectionMessage extends ConnectionMessage {\r\n\r\n private privPath: string;\r\n private privRequestId: string;\r\n private privContentType: string;\r\n private privStreamId: string;\r\n private privAdditionalHeaders: IStringDictionary;\r\n\r\n public constructor(\r\n messageType: MessageType,\r\n path: string,\r\n requestId: string,\r\n contentType: string,\r\n body: any,\r\n streamId?: string,\r\n additionalHeaders?: IStringDictionary,\r\n id?: string) {\r\n\r\n if (!path) {\r\n throw new ArgumentNullError(\"path\");\r\n }\r\n\r\n if (!requestId) {\r\n throw new ArgumentNullError(\"requestId\");\r\n }\r\n\r\n const headers: IStringDictionary = {};\r\n headers[HeaderNames.Path] = path;\r\n headers[HeaderNames.RequestId] = requestId;\r\n headers[HeaderNames.RequestTimestamp] = new Date().toISOString();\r\n if (contentType) {\r\n headers[HeaderNames.ContentType] = contentType;\r\n }\r\n\r\n if (streamId) {\r\n headers[HeaderNames.RequestStreamId] = streamId;\r\n }\r\n\r\n if (additionalHeaders) {\r\n for (const headerName in additionalHeaders) {\r\n if (headerName) {\r\n headers[headerName] = additionalHeaders[headerName];\r\n }\r\n\r\n }\r\n }\r\n\r\n if (id) {\r\n super(messageType, body, headers, id);\r\n } else {\r\n super(messageType, body, headers);\r\n }\r\n\r\n this.privPath = path;\r\n this.privRequestId = requestId;\r\n this.privContentType = contentType;\r\n this.privStreamId = streamId;\r\n this.privAdditionalHeaders = additionalHeaders;\r\n }\r\n\r\n public get path(): string {\r\n return this.privPath;\r\n }\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n\r\n public get contentType(): string {\r\n return this.privContentType;\r\n }\r\n\r\n public get streamId(): string {\r\n return this.privStreamId;\r\n }\r\n\r\n public get additionalHeaders(): IStringDictionary {\r\n return this.privAdditionalHeaders;\r\n }\r\n\r\n public static fromConnectionMessage(message: ConnectionMessage): SpeechConnectionMessage {\r\n let path = null;\r\n let requestId = null;\r\n let contentType = null;\r\n // let requestTimestamp = null;\r\n let streamId = null;\r\n const additionalHeaders: IStringDictionary = {};\r\n\r\n if (message.headers) {\r\n for (const headerName in message.headers) {\r\n if (headerName) {\r\n if (headerName.toLowerCase() === HeaderNames.Path.toLowerCase()) {\r\n path = message.headers[headerName];\r\n } else if (headerName.toLowerCase() === HeaderNames.RequestId.toLowerCase()) {\r\n requestId = message.headers[headerName];\r\n // } else if (headerName.toLowerCase() === HeaderNames.RequestTimestamp.toLowerCase()) {\r\n // requestTimestamp = message.headers[headerName];\r\n } else if (headerName.toLowerCase() === HeaderNames.ContentType.toLowerCase()) {\r\n contentType = message.headers[headerName];\r\n } else if (headerName.toLowerCase() === HeaderNames.RequestStreamId.toLowerCase()) {\r\n streamId = message.headers[headerName];\r\n } else {\r\n additionalHeaders[headerName] = message.headers[headerName];\r\n }\r\n }\r\n }\r\n }\r\n\r\n return new SpeechConnectionMessage(\r\n message.messageType,\r\n path,\r\n requestId,\r\n contentType,\r\n message.body,\r\n streamId,\r\n additionalHeaders,\r\n message.id);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n DynamicGrammarBuilder,\r\n IDynamicGrammar,\r\n} from \"./Exports.js\";\r\n\r\ninterface Context {\r\n [section: string]: any;\r\n}\r\n\r\ninterface PhraseContext {\r\n [section: string]: any;\r\n phraseDetection?: {\r\n enrichment?: {\r\n pronunciationAssessment: any;\r\n contentAssessment?: {\r\n topic: string;\r\n };\r\n };\r\n speakerDiarization?: {\r\n mode?: string;\r\n audioSessionId?: string;\r\n audioOffsetMs?: number;\r\n identityProvider?: string;\r\n };\r\n mode?: string;\r\n };\r\n phraseOutput?: {\r\n detailed?: {\r\n options?: string[];\r\n };\r\n format?: any;\r\n };\r\n}\r\n\r\n/**\r\n * Represents the JSON used in the speech.context message sent to the speech service.\r\n * The dynamic grammar is always refreshed from the encapsulated dynamic grammar object.\r\n */\r\nexport class SpeechContext {\r\n private privContext: PhraseContext = {};\r\n private privDynamicGrammar: DynamicGrammarBuilder;\r\n\r\n public constructor(dynamicGrammar: DynamicGrammarBuilder) {\r\n this.privDynamicGrammar = dynamicGrammar;\r\n }\r\n\r\n /**\r\n * Gets a section of the speech.context object.\r\n * @param sectionName Name of the section to get.\r\n * @return string or Context JSON serializable object that represents the value.\r\n */\r\n public getSection(sectionName: string): string | Context {\r\n return (this.privContext[sectionName] || {}) as string | Context;\r\n }\r\n\r\n /**\r\n * Adds a section to the speech.context object.\r\n * @param sectionName Name of the section to add.\r\n * @param value JSON serializable object that represents the value.\r\n */\r\n public setSection(sectionName: string, value: string | Context): void {\r\n this.privContext[sectionName] = value;\r\n }\r\n\r\n /**\r\n * @Internal\r\n * This is only used by pronunciation assessment config.\r\n * Do not use externally, object returned will change without warning or notice.\r\n */\r\n public setPronunciationAssessmentParams(params: string,\r\n contentAssessmentTopic: string,\r\n isSpeakerDiarizationEnabled: boolean = false): void {\r\n if (this.privContext.phraseDetection === undefined) {\r\n this.privContext.phraseDetection = {\r\n enrichment: {\r\n pronunciationAssessment: {}\r\n }\r\n };\r\n }\r\n if (this.privContext.phraseDetection.enrichment === undefined) {\r\n this.privContext.phraseDetection.enrichment = {\r\n pronunciationAssessment: {}\r\n };\r\n }\r\n this.privContext.phraseDetection.enrichment.pronunciationAssessment = JSON.parse(params) as Context;\r\n if (isSpeakerDiarizationEnabled) {\r\n this.privContext.phraseDetection.mode = \"Conversation\";\r\n }\r\n this.setWordLevelTimings();\r\n this.privContext.phraseOutput.detailed.options.push(\"PronunciationAssessment\");\r\n if (this.privContext.phraseOutput.detailed.options.indexOf(\"SNR\") === -1) {\r\n this.privContext.phraseOutput.detailed.options.push(\"SNR\");\r\n }\r\n if (!!contentAssessmentTopic) {\r\n this.privContext.phraseDetection.enrichment.contentAssessment = {\r\n topic: contentAssessmentTopic\r\n };\r\n this.privContext.phraseOutput.detailed.options.push(\"ContentAssessment\");\r\n }\r\n }\r\n\r\n public setDetailedOutputFormat(): void {\r\n if (this.privContext.phraseOutput === undefined) {\r\n this.privContext.phraseOutput = {\r\n detailed: {\r\n options: []\r\n },\r\n format: {}\r\n };\r\n }\r\n if (this.privContext.phraseOutput.detailed === undefined) {\r\n this.privContext.phraseOutput.detailed = {\r\n options: []\r\n };\r\n }\r\n this.privContext.phraseOutput.format = \"Detailed\";\r\n }\r\n\r\n public setWordLevelTimings(): void {\r\n if (this.privContext.phraseOutput === undefined) {\r\n this.privContext.phraseOutput = {\r\n detailed: {\r\n options: []\r\n },\r\n format: {}\r\n };\r\n }\r\n if (this.privContext.phraseOutput.detailed === undefined) {\r\n this.privContext.phraseOutput.detailed = {\r\n options: []\r\n };\r\n }\r\n this.privContext.phraseOutput.format = \"Detailed\";\r\n if (this.privContext.phraseOutput.detailed.options.indexOf(\"WordTimings\") === -1) {\r\n this.privContext.phraseOutput.detailed.options.push(\"WordTimings\");\r\n }\r\n }\r\n\r\n public setSpeakerDiarizationAudioOffsetMs(audioOffsetMs: number): void {\r\n this.privContext.phraseDetection.speakerDiarization.audioOffsetMs = audioOffsetMs;\r\n }\r\n\r\n public toJSON(): string {\r\n\r\n const dgi: IDynamicGrammar = this.privDynamicGrammar.generateGrammarObject();\r\n this.setSection(\"dgi\", dgi);\r\n\r\n const ret: string = JSON.stringify(this.privContext);\r\n return ret;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\n// The config is serialized and sent as the Speech.Config\r\nexport class SpeechServiceConfig {\r\n private context: Context;\r\n private recognition: string;\r\n\r\n public constructor(context: Context) {\r\n this.context = context;\r\n }\r\n\r\n public serialize(): string {\r\n return JSON.stringify(this, (key: any, value: { [k: string]: any }): any => {\r\n if (value && typeof value === \"object\" && !Array.isArray(value)) {\r\n const replacement: { [k: string ]: any } = {};\r\n for (const k in value) {\r\n if (Object.hasOwnProperty.call(value, k)) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n replacement[k && k.charAt(0).toLowerCase() + k.substring(1)] = value[k];\r\n }\r\n }\r\n return replacement;\r\n }\r\n return value;\r\n });\r\n }\r\n\r\n public get Context(): Context {\r\n return this.context;\r\n }\r\n\r\n public get Recognition(): string {\r\n return this.recognition;\r\n }\r\n\r\n public set Recognition(value: string) {\r\n this.recognition = value.toLowerCase();\r\n }\r\n}\r\n\r\nexport class Context {\r\n public system: System;\r\n public os: OS;\r\n public audio: ISpeechConfigAudio;\r\n public synthesis: {\r\n video: ISynthesisSectionVideo;\r\n };\r\n\r\n public constructor(os: OS) {\r\n this.system = new System();\r\n this.os = os;\r\n }\r\n}\r\n\r\nexport class System {\r\n public name: string;\r\n public version: string;\r\n public build: string;\r\n public lang: string;\r\n\r\n public constructor() {\r\n // Note: below will be patched for official builds.\r\n const SPEECHSDK_CLIENTSDK_VERSION = \"1.36.0\";\r\n\r\n this.name = \"SpeechSDK\";\r\n this.version = SPEECHSDK_CLIENTSDK_VERSION;\r\n this.build = \"JavaScript\";\r\n this.lang = \"JavaScript\";\r\n }\r\n}\r\n\r\nexport class OS {\r\n public platform: string;\r\n public name: string;\r\n public version: string;\r\n\r\n public constructor(platform: string, name: string, version: string) {\r\n this.platform = platform;\r\n this.name = name;\r\n this.version = version;\r\n }\r\n}\r\n\r\nexport class Device {\r\n public manufacturer: string;\r\n public model: string;\r\n public version: string;\r\n\r\n public constructor(manufacturer: string, model: string, version: string) {\r\n this.manufacturer = manufacturer;\r\n this.model = model;\r\n this.version = version;\r\n }\r\n}\r\n\r\nexport interface ISpeechConfigAudio {\r\n source?: ISpeechConfigAudioDevice;\r\n playback?: ISpeechConfigAudioDevice;\r\n}\r\n\r\nexport interface ISpeechConfigAudioDevice {\r\n manufacturer: string;\r\n model: string;\r\n connectivity: connectivity;\r\n type: type;\r\n samplerate: number;\r\n bitspersample: number;\r\n channelcount: number;\r\n}\r\n\r\nexport enum connectivity {\r\n Bluetooth = \"Bluetooth\",\r\n Wired = \"Wired\",\r\n WiFi = \"WiFi\",\r\n Cellular = \"Cellular\",\r\n InBuilt = \"InBuilt\",\r\n Unknown = \"Unknown\",\r\n}\r\n\r\nexport enum type {\r\n Phone = \"Phone\",\r\n Speaker = \"Speaker\",\r\n Car = \"Car\",\r\n Headset = \"Headset\",\r\n Thermostat = \"Thermostat\",\r\n Microphones = \"Microphones\",\r\n Deskphone = \"Deskphone\",\r\n RemoteControl = \"RemoteControl\",\r\n Unknown = \"Unknown\",\r\n File = \"File\",\r\n Stream = \"Stream\",\r\n}\r\n\r\nexport interface ICoordinate {\r\n x: number;\r\n y: number;\r\n}\r\n\r\n// For avatar synthesis\r\nexport interface ISynthesisSectionVideo {\r\n protocol: {\r\n name: string;\r\n webrtcConfig: {\r\n clientDescription: string;\r\n iceServers: {\r\n urls: string[];\r\n username: string;\r\n credential: string;\r\n }[];\r\n };\r\n };\r\n format: {\r\n bitrate: number;\r\n codec: string;\r\n crop: {\r\n topLeft: ICoordinate;\r\n bottomRight: ICoordinate;\r\n };\r\n resolution: {\r\n width: number;\r\n height: number;\r\n };\r\n };\r\n talkingAvatar: {\r\n character: string;\r\n customized: boolean;\r\n style: string;\r\n background: {\r\n color: string;\r\n };\r\n };\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IAudioSource } from \"../common/Exports.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n OutputFormat,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SpeechRecognitionCanceledEventArgs,\r\n SpeechRecognitionEventArgs,\r\n SpeechRecognitionResult,\r\n SpeechRecognizer,\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n DetailedSpeechPhrase,\r\n EnumTranslation,\r\n OutputFormatPropertyName,\r\n RecognitionStatus,\r\n ServiceRecognizerBase,\r\n SimpleSpeechPhrase,\r\n SpeechHypothesis,\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class SpeechServiceRecognizer extends ServiceRecognizerBase {\r\n\r\n private privSpeechRecognizer: SpeechRecognizer;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n speechRecognizer: SpeechRecognizer) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, speechRecognizer);\r\n this.privSpeechRecognizer = speechRecognizer;\r\n\r\n }\r\n\r\n protected async processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n let result: SpeechRecognitionResult;\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n let processed: boolean = false;\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"speech.hypothesis\":\r\n case \"speech.fragment\":\r\n const hypothesis: SpeechHypothesis = SpeechHypothesis.fromJSON(connectionMessage.textBody);\r\n const offset: number = hypothesis.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n ResultReason.RecognizingSpeech,\r\n hypothesis.Text,\r\n hypothesis.Duration,\r\n offset,\r\n hypothesis.Language,\r\n hypothesis.LanguageDetectionConfidence,\r\n undefined, // Speaker Id\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n this.privRequestSession.onHypothesis(offset);\r\n\r\n const ev = new SpeechRecognitionEventArgs(result, hypothesis.Duration, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privSpeechRecognizer.recognizing) {\r\n try {\r\n this.privSpeechRecognizer.recognizing(this.privSpeechRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n case \"speech.phrase\":\r\n const simple: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(connectionMessage.textBody);\r\n const resultReason: ResultReason = EnumTranslation.implTranslateRecognitionResult(simple.RecognitionStatus, this.privExpectContentAssessmentResponse);\r\n\r\n this.privRequestSession.onPhraseRecognized(this.privRequestSession.currentTurnAudioOffset + simple.Offset + simple.Duration);\r\n\r\n if (ResultReason.Canceled === resultReason) {\r\n const cancelReason: CancellationReason = EnumTranslation.implTranslateCancelResult(simple.RecognitionStatus);\r\n const cancellationErrorCode: CancellationErrorCode = EnumTranslation.implTranslateCancelErrorCode(simple.RecognitionStatus);\r\n\r\n await this.cancelRecognitionLocal(\r\n cancelReason,\r\n cancellationErrorCode,\r\n EnumTranslation.implTranslateErrorDetails(cancellationErrorCode));\r\n\r\n } else {\r\n if (!(this.privRequestSession.isSpeechEnded && resultReason === ResultReason.NoMatch && simple.RecognitionStatus !== RecognitionStatus.InitialSilenceTimeout)) {\r\n if (this.privRecognizerConfig.parameters.getProperty(OutputFormatPropertyName) === OutputFormat[OutputFormat.Simple]) {\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n simple.DisplayText,\r\n simple.Duration,\r\n simple.Offset + this.privRequestSession.currentTurnAudioOffset,\r\n simple.Language,\r\n simple.LanguageDetectionConfidence,\r\n undefined, // Speaker Id\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n } else {\r\n const detailed: DetailedSpeechPhrase = DetailedSpeechPhrase.fromJSON(connectionMessage.textBody);\r\n const totalOffset: number = detailed.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n const offsetCorrectedJson: string = detailed.getJsonWithCorrectedOffsets(totalOffset);\r\n\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n detailed.RecognitionStatus === RecognitionStatus.Success ? detailed.NBest[0].Display : undefined,\r\n detailed.Duration,\r\n totalOffset,\r\n detailed.Language,\r\n detailed.LanguageDetectionConfidence,\r\n undefined, // Speaker Id\r\n undefined,\r\n offsetCorrectedJson,\r\n resultProps);\r\n }\r\n\r\n const event: SpeechRecognitionEventArgs = new SpeechRecognitionEventArgs(result, result.offset, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privSpeechRecognizer.recognized) {\r\n try {\r\n this.privSpeechRecognizer.recognized(this.privSpeechRecognizer, event);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n }\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n return processed;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n if (!!this.privSpeechRecognizer.canceled) {\r\n const cancelEvent: SpeechRecognitionCanceledEventArgs = new SpeechRecognitionCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n sessionId);\r\n try {\r\n this.privSpeechRecognizer.canceled(this.privSpeechRecognizer, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n\r\n if (!!this.privSuccessCallback) {\r\n const result: SpeechRecognitionResult = new SpeechRecognitionResult(\r\n requestId,\r\n ResultReason.Canceled,\r\n undefined, // Text\r\n undefined, // Duration\r\n undefined, // Offset\r\n undefined, // Language\r\n undefined, // Language Detection Confidence\r\n undefined, // Speaker Id\r\n error,\r\n undefined, // Json\r\n properties);\r\n try {\r\n this.privSuccessCallback(result);\r\n this.privSuccessCallback = undefined;\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IAudioDestination } from \"../common/Exports.js\";\r\nimport {\r\n ResultReason,\r\n SpeechSynthesisBookmarkEventArgs,\r\n SpeechSynthesisEventArgs,\r\n SpeechSynthesisResult,\r\n SpeechSynthesisVisemeEventArgs,\r\n SpeechSynthesisWordBoundaryEventArgs,\r\n SpeechSynthesizer,\r\n Synthesizer,\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n IAuthentication,\r\n ISynthesisConnectionFactory,\r\n SynthesisAdapterBase,\r\n SynthesizerConfig\r\n} from \"./Exports.js\";\r\n\r\nexport class SpeechSynthesisAdapter extends SynthesisAdapterBase {\r\n private privSpeechSynthesizer: SpeechSynthesizer;\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: ISynthesisConnectionFactory,\r\n synthesizerConfig: SynthesizerConfig,\r\n speechSynthesizer: SpeechSynthesizer,\r\n audioDestination: IAudioDestination) {\r\n super(authentication, connectionFactory, synthesizerConfig, audioDestination);\r\n this.privSpeechSynthesizer = speechSynthesizer;\r\n this.privSynthesizer = speechSynthesizer as Synthesizer;\r\n }\r\n\r\n protected setSynthesisContextSynthesisSection(): void {\r\n this.privSynthesisContext.setSynthesisSection(this.privSpeechSynthesizer);\r\n }\r\n\r\n protected onSynthesisStarted(requestId: string): void {\r\n const synthesisStartEventArgs: SpeechSynthesisEventArgs = new SpeechSynthesisEventArgs(\r\n new SpeechSynthesisResult(\r\n requestId,\r\n ResultReason.SynthesizingAudioStarted,\r\n )\r\n );\r\n\r\n if (!!this.privSpeechSynthesizer.synthesisStarted) {\r\n this.privSpeechSynthesizer.synthesisStarted(this.privSpeechSynthesizer, synthesisStartEventArgs);\r\n }\r\n }\r\n\r\n protected onSynthesizing(audio: ArrayBuffer): void {\r\n if (!!this.privSpeechSynthesizer.synthesizing) {\r\n try {\r\n const audioWithHeader = this.privSynthesisTurn.audioOutputFormat.addHeader(audio);\r\n const ev: SpeechSynthesisEventArgs = new SpeechSynthesisEventArgs(\r\n new SpeechSynthesisResult(\r\n this.privSynthesisTurn.requestId,\r\n ResultReason.SynthesizingAudio,\r\n audioWithHeader));\r\n this.privSpeechSynthesizer.synthesizing(this.privSpeechSynthesizer, ev);\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n\r\n protected onSynthesisCancelled(result: SpeechSynthesisResult): void {\r\n if (!!this.privSpeechSynthesizer.SynthesisCanceled) {\r\n const cancelEvent: SpeechSynthesisEventArgs = new SpeechSynthesisEventArgs(result);\r\n try {\r\n this.privSpeechSynthesizer.SynthesisCanceled(this.privSpeechSynthesizer, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n\r\n protected onSynthesisCompleted(result: SpeechSynthesisResult): void {\r\n if (this.privSpeechSynthesizer.synthesisCompleted) {\r\n try {\r\n this.privSpeechSynthesizer.synthesisCompleted(\r\n this.privSpeechSynthesizer,\r\n new SpeechSynthesisEventArgs(result)\r\n );\r\n } catch (e) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n\r\n protected onWordBoundary(wordBoundaryEventArgs: SpeechSynthesisWordBoundaryEventArgs): void {\r\n if (!!this.privSpeechSynthesizer.wordBoundary) {\r\n try {\r\n this.privSpeechSynthesizer.wordBoundary(this.privSpeechSynthesizer, wordBoundaryEventArgs);\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n\r\n protected onVisemeReceived(visemeEventArgs: SpeechSynthesisVisemeEventArgs): void {\r\n if (!!this.privSpeechSynthesizer.visemeReceived) {\r\n try {\r\n this.privSpeechSynthesizer.visemeReceived(this.privSpeechSynthesizer, visemeEventArgs);\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n\r\n protected onBookmarkReached(bookmarkEventArgs: SpeechSynthesisBookmarkEventArgs): void {\r\n if (!!this.privSpeechSynthesizer.bookmarkReached) {\r\n try {\r\n this.privSpeechSynthesizer.bookmarkReached(this.privSpeechSynthesizer, bookmarkEventArgs);\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n IConnection,\r\n IStringDictionary\r\n} from \"../common/Exports.js\";\r\nimport { PropertyId } from \"../sdk/Exports.js\";\r\nimport { ConnectionFactoryBase } from \"./ConnectionFactoryBase.js\";\r\nimport {\r\n AuthInfo,\r\n SynthesizerConfig,\r\n WebsocketMessageFormatter\r\n} from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\nimport { ISynthesisConnectionFactory } from \"./ISynthesisConnectionFactory.js\";\r\nimport {\r\n QueryParameterNames\r\n} from \"./QueryParameterNames.js\";\r\n\r\nexport class SpeechSynthesisConnectionFactory implements ISynthesisConnectionFactory {\r\n\r\n private readonly synthesisUri: string = \"/cognitiveservices/websocket/v1\";\r\n\r\n public create(\r\n config: SynthesizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, undefined);\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region, undefined);\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const endpointId = config.parameters.getProperty(PropertyId.SpeechServiceConnection_EndpointId, undefined);\r\n const hostPrefix = (endpointId === undefined) ? \"tts\" : \"voice\";\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, \"wss://\" + region + \".\" + hostPrefix + \".speech\" + hostSuffix);\r\n\r\n const queryParams: IStringDictionary = {};\r\n const headers: IStringDictionary = {};\r\n\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n if (endpointId !== undefined && endpointId !== \"\") {\r\n if (!endpoint || endpoint.search(QueryParameterNames.CustomVoiceDeploymentId) === -1) {\r\n queryParams[QueryParameterNames.CustomVoiceDeploymentId] = endpointId;\r\n }\r\n }\r\n\r\n if (config.avatarEnabled) {\r\n if (!endpoint || endpoint.search(QueryParameterNames.EnableAvatar) === -1) {\r\n queryParams[QueryParameterNames.EnableAvatar] = \"true\";\r\n }\r\n }\r\n\r\n if (!endpoint) {\r\n endpoint = host + this.synthesisUri;\r\n }\r\n\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromParameters(config.parameters), enableCompression, connectionId);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ArgumentNullError,\r\n ConnectionClosedEvent,\r\n ConnectionEvent,\r\n ConnectionMessage,\r\n ConnectionState,\r\n createNoDashGuid,\r\n EventSource,\r\n IAudioDestination,\r\n IConnection,\r\n IDisposable,\r\n MessageType,\r\n ServiceEvent,\r\n} from \"../common/Exports.js\";\r\nimport { AudioOutputFormatImpl } from \"../sdk/Audio/AudioOutputFormat.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SpeechSynthesisBookmarkEventArgs,\r\n SpeechSynthesisResult,\r\n SpeechSynthesisVisemeEventArgs,\r\n SpeechSynthesisWordBoundaryEventArgs,\r\n Synthesizer,\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n AgentConfig,\r\n CancellationErrorCodePropertyName,\r\n ISynthesisConnectionFactory,\r\n ISynthesisMetadata,\r\n MetadataType,\r\n SynthesisAudioMetadata,\r\n SynthesisContext,\r\n SynthesisTurn,\r\n SynthesizerConfig\r\n} from \"./Exports.js\";\r\nimport { AuthInfo, IAuthentication } from \"./IAuthentication.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\nexport abstract class SynthesisAdapterBase implements IDisposable {\r\n protected privSynthesisTurn: SynthesisTurn;\r\n protected privConnectionId: string;\r\n protected privSynthesizerConfig: SynthesizerConfig;\r\n protected privSynthesizer: Synthesizer;\r\n protected privSuccessCallback: (e: SpeechSynthesisResult) => void;\r\n protected privErrorCallback: (e: string) => void;\r\n\r\n public get synthesisContext(): SynthesisContext {\r\n return this.privSynthesisContext;\r\n }\r\n\r\n public get agentConfig(): AgentConfig {\r\n return this.privAgentConfig;\r\n }\r\n\r\n public get connectionEvents(): EventSource {\r\n return this.privConnectionEvents;\r\n }\r\n\r\n public get serviceEvents(): EventSource {\r\n return this.privServiceEvents;\r\n }\r\n\r\n protected speakOverride: (ssml: string, requestId: string, sc: (e: SpeechSynthesisResult) => void, ec: (e: string) => void) => void = undefined;\r\n\r\n // Called when telemetry data is sent to the service.\r\n // Used for testing Telemetry capture.\r\n public static telemetryData: (json: string) => void;\r\n public static telemetryDataEnabled: boolean = true;\r\n\r\n public set activityTemplate(messagePayload: string) {\r\n this.privActivityTemplate = messagePayload;\r\n }\r\n public get activityTemplate(): string {\r\n return this.privActivityTemplate;\r\n }\r\n\r\n protected receiveMessageOverride: () => void = undefined;\r\n\r\n protected connectImplOverride: (isUnAuthorized: boolean) => void = undefined;\r\n\r\n protected configConnectionOverride: (connection: IConnection) => Promise = undefined;\r\n\r\n public set audioOutputFormat(format: AudioOutputFormatImpl) {\r\n this.privAudioOutputFormat = format;\r\n this.privSynthesisTurn.audioOutputFormat = format;\r\n if (this.privSessionAudioDestination !== undefined) {\r\n this.privSessionAudioDestination.format = format;\r\n }\r\n if (this.synthesisContext !== undefined) {\r\n this.synthesisContext.audioOutputFormat = format;\r\n }\r\n }\r\n private privAuthentication: IAuthentication;\r\n private privConnectionFactory: ISynthesisConnectionFactory;\r\n\r\n // A promise for a configured connection.\r\n // Do not consume directly, call fetchConnection instead.\r\n private privConnectionConfigurationPromise: Promise = undefined;\r\n\r\n // A promise for a connection, but one that has not had the speech context sent yet.\r\n // Do not consume directly, call fetchConnection instead.\r\n private privConnectionPromise: Promise;\r\n private privAuthFetchEventId: string;\r\n private privIsDisposed: boolean;\r\n private privConnectionEvents: EventSource;\r\n private privServiceEvents: EventSource;\r\n protected privSynthesisContext: SynthesisContext;\r\n private privAgentConfig: AgentConfig;\r\n private privActivityTemplate: string;\r\n protected privAudioOutputFormat: AudioOutputFormatImpl;\r\n private privSessionAudioDestination: IAudioDestination;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: ISynthesisConnectionFactory,\r\n synthesizerConfig: SynthesizerConfig,\r\n audioDestination: IAudioDestination) {\r\n\r\n if (!authentication) {\r\n throw new ArgumentNullError(\"authentication\");\r\n }\r\n\r\n if (!connectionFactory) {\r\n throw new ArgumentNullError(\"connectionFactory\");\r\n }\r\n\r\n if (!synthesizerConfig) {\r\n throw new ArgumentNullError(\"synthesizerConfig\");\r\n }\r\n\r\n this.privAuthentication = authentication;\r\n this.privConnectionFactory = connectionFactory;\r\n this.privSynthesizerConfig = synthesizerConfig;\r\n this.privIsDisposed = false;\r\n this.privSessionAudioDestination = audioDestination;\r\n this.privSynthesisTurn = new SynthesisTurn();\r\n this.privConnectionEvents = new EventSource();\r\n this.privServiceEvents = new EventSource();\r\n this.privSynthesisContext = new SynthesisContext();\r\n this.privAgentConfig = new AgentConfig();\r\n\r\n this.connectionEvents.attach((connectionEvent: ConnectionEvent): void => {\r\n if (connectionEvent.name === \"ConnectionClosedEvent\") {\r\n const connectionClosedEvent = connectionEvent as ConnectionClosedEvent;\r\n if (connectionClosedEvent.statusCode !== 1000) {\r\n this.cancelSynthesisLocal(CancellationReason.Error,\r\n connectionClosedEvent.statusCode === 1007 ? CancellationErrorCode.BadRequestParameters : CancellationErrorCode.ConnectionFailure,\r\n `${connectionClosedEvent.reason} websocket error code: ${connectionClosedEvent.statusCode}`);\r\n }\r\n }\r\n });\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public async dispose(reason?: string): Promise {\r\n this.privIsDisposed = true;\r\n if (this.privSessionAudioDestination !== undefined) {\r\n this.privSessionAudioDestination.close();\r\n }\r\n if (this.privConnectionConfigurationPromise !== undefined) {\r\n const connection: IConnection = await this.privConnectionConfigurationPromise;\r\n await connection.dispose(reason);\r\n }\r\n }\r\n\r\n public async connect(): Promise {\r\n await this.connectImpl();\r\n }\r\n\r\n public async sendNetworkMessage(path: string, payload: string | ArrayBuffer): Promise {\r\n const type: MessageType = typeof payload === \"string\" ? MessageType.Text : MessageType.Binary;\r\n const contentType: string = typeof payload === \"string\" ? \"application/json\" : \"\";\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n return connection.send(new SpeechConnectionMessage(type, path, this.privSynthesisTurn.requestId, contentType, payload));\r\n }\r\n\r\n public async Speak(\r\n text: string,\r\n isSSML: boolean,\r\n requestId: string,\r\n successCallback: (e: SpeechSynthesisResult) => void,\r\n errorCallBack: (e: string) => void,\r\n audioDestination: IAudioDestination,\r\n ): Promise {\r\n\r\n let ssml: string;\r\n\r\n if (isSSML) {\r\n ssml = text;\r\n } else {\r\n ssml = this.privSynthesizer.buildSsml(text);\r\n }\r\n\r\n if (this.speakOverride !== undefined) {\r\n return this.speakOverride(ssml, requestId, successCallback, errorCallBack);\r\n }\r\n\r\n this.privSuccessCallback = successCallback;\r\n this.privErrorCallback = errorCallBack;\r\n\r\n this.privSynthesisTurn.startNewSynthesis(requestId, text, isSSML, audioDestination);\r\n\r\n try {\r\n await this.connectImpl();\r\n const connection: IConnection = await this.fetchConnection();\r\n await this.sendSynthesisContext(connection);\r\n await this.sendSsmlMessage(connection, ssml, requestId);\r\n this.onSynthesisStarted(requestId);\r\n\r\n void this.receiveMessage();\r\n } catch (e) {\r\n this.cancelSynthesisLocal(CancellationReason.Error, CancellationErrorCode.ConnectionFailure, e as string);\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n public async stopSpeaking(): Promise {\r\n await this.connectImpl();\r\n const connection: IConnection = await this.fetchConnection();\r\n\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"synthesis.control\",\r\n this.privSynthesisTurn.requestId,\r\n \"application/json\",\r\n JSON.stringify({\r\n action: \"stop\"\r\n })\r\n ));\r\n }\r\n\r\n // Cancels synthesis.\r\n protected cancelSynthesis(\r\n requestId: string,\r\n _cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n const result: SpeechSynthesisResult = new SpeechSynthesisResult(\r\n requestId,\r\n ResultReason.Canceled,\r\n undefined,\r\n error,\r\n properties\r\n );\r\n\r\n this.onSynthesisCancelled(result);\r\n\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n\r\n // Cancels synthesis.\r\n protected cancelSynthesisLocal(\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n if (!!this.privSynthesisTurn.isSynthesizing) {\r\n this.privSynthesisTurn.onStopSynthesizing();\r\n\r\n this.cancelSynthesis(\r\n this.privSynthesisTurn.requestId,\r\n cancellationReason,\r\n errorCode,\r\n error);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n protected processTypeSpecificMessages(_connectionMessage: SpeechConnectionMessage): boolean {\r\n return true;\r\n }\r\n\r\n protected async receiveMessage(): Promise {\r\n try {\r\n const connection: IConnection = await this.fetchConnection();\r\n const message: ConnectionMessage = await connection.read();\r\n\r\n if (this.receiveMessageOverride !== undefined) {\r\n return this.receiveMessageOverride();\r\n }\r\n if (this.privIsDisposed) {\r\n // We're done.\r\n return;\r\n }\r\n\r\n // indicates we are draining the queue and it came with no message;\r\n if (!message) {\r\n if (!this.privSynthesisTurn.isSynthesizing) {\r\n return;\r\n } else {\r\n return this.receiveMessage();\r\n }\r\n }\r\n\r\n\r\n const connectionMessage = SpeechConnectionMessage.fromConnectionMessage(message);\r\n\r\n if (connectionMessage.requestId.toLowerCase() === this.privSynthesisTurn.requestId.toLowerCase()) {\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"turn.start\":\r\n this.privSynthesisTurn.onServiceTurnStartResponse(connectionMessage.textBody);\r\n break;\r\n case \"response\":\r\n this.privSynthesisTurn.onServiceResponseMessage(connectionMessage.textBody);\r\n break;\r\n case \"audio\":\r\n if (this.privSynthesisTurn.streamId.toLowerCase() === connectionMessage.streamId.toLowerCase()\r\n && !!connectionMessage.binaryBody) {\r\n this.privSynthesisTurn.onAudioChunkReceived(connectionMessage.binaryBody);\r\n this.onSynthesizing(connectionMessage.binaryBody);\r\n if (this.privSessionAudioDestination !== undefined) {\r\n this.privSessionAudioDestination.write(connectionMessage.binaryBody);\r\n }\r\n }\r\n break;\r\n case \"audio.metadata\":\r\n const metadataList = SynthesisAudioMetadata.fromJSON(connectionMessage.textBody).Metadata;\r\n for (const metadata of metadataList) {\r\n switch (metadata.Type) {\r\n case MetadataType.WordBoundary:\r\n case MetadataType.SentenceBoundary:\r\n this.privSynthesisTurn.onTextBoundaryEvent(metadata);\r\n const wordBoundaryEventArgs: SpeechSynthesisWordBoundaryEventArgs = new SpeechSynthesisWordBoundaryEventArgs(\r\n metadata.Data.Offset,\r\n metadata.Data.Duration,\r\n metadata.Data.text.Text,\r\n metadata.Data.text.Length,\r\n metadata.Type === MetadataType.WordBoundary\r\n ? this.privSynthesisTurn.currentTextOffset : this.privSynthesisTurn.currentSentenceOffset,\r\n metadata.Data.text.BoundaryType);\r\n this.onWordBoundary(wordBoundaryEventArgs);\r\n break;\r\n case MetadataType.Bookmark:\r\n const bookmarkEventArgs: SpeechSynthesisBookmarkEventArgs = new SpeechSynthesisBookmarkEventArgs(\r\n metadata.Data.Offset,\r\n metadata.Data.Bookmark);\r\n this.onBookmarkReached(bookmarkEventArgs);\r\n break;\r\n case MetadataType.Viseme:\r\n this.privSynthesisTurn.onVisemeMetadataReceived(metadata);\r\n if (metadata.Data.IsLastAnimation) {\r\n const visemeEventArgs: SpeechSynthesisVisemeEventArgs = new SpeechSynthesisVisemeEventArgs(\r\n metadata.Data.Offset,\r\n metadata.Data.VisemeId,\r\n this.privSynthesisTurn.getAndClearVisemeAnimation());\r\n this.onVisemeReceived(visemeEventArgs);\r\n }\r\n break;\r\n case MetadataType.AvatarSignal:\r\n this.onAvatarEvent(metadata);\r\n break;\r\n case MetadataType.SessionEnd:\r\n this.privSynthesisTurn.onSessionEnd(metadata);\r\n break;\r\n }\r\n }\r\n break;\r\n case \"turn.end\":\r\n this.privSynthesisTurn.onServiceTurnEndResponse();\r\n let result: SpeechSynthesisResult;\r\n try {\r\n result = await this.privSynthesisTurn.constructSynthesisResult();\r\n if (!!this.privSuccessCallback) {\r\n this.privSuccessCallback(result);\r\n }\r\n } catch (error) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(error as string);\r\n }\r\n }\r\n this.onSynthesisCompleted(result);\r\n break;\r\n\r\n default:\r\n if (!this.processTypeSpecificMessages(connectionMessage)) {\r\n // here are some messages that the derived class has not processed, dispatch them to connect class\r\n if (!!this.privServiceEvents) {\r\n this.serviceEvents.onEvent(new ServiceEvent(connectionMessage.path.toLowerCase(), connectionMessage.textBody));\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n return this.receiveMessage();\r\n\r\n } catch (e) {\r\n // TODO: What goes here?\r\n }\r\n }\r\n\r\n protected sendSynthesisContext(connection: IConnection): Promise {\r\n this.setSynthesisContextSynthesisSection();\r\n const synthesisContextJson = this.synthesisContext.toJSON();\r\n\r\n if (synthesisContextJson) {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"synthesis.context\",\r\n this.privSynthesisTurn.requestId,\r\n \"application/json\",\r\n synthesisContextJson));\r\n }\r\n return;\r\n }\r\n\r\n protected abstract setSynthesisContextSynthesisSection(): void;\r\n\r\n protected setSpeechConfigSynthesisSection(): void {\r\n return;\r\n }\r\n\r\n protected connectImpl(isUnAuthorized: boolean = false): Promise {\r\n if (this.privConnectionPromise != null) {\r\n return this.privConnectionPromise.then((connection: IConnection): Promise => {\r\n if (connection.state() === ConnectionState.Disconnected) {\r\n this.privConnectionId = null;\r\n this.privConnectionPromise = null;\r\n return this.connectImpl();\r\n }\r\n return this.privConnectionPromise;\r\n }, (): Promise => {\r\n this.privConnectionId = null;\r\n this.privConnectionPromise = null;\r\n return this.connectImpl();\r\n });\r\n }\r\n this.privAuthFetchEventId = createNoDashGuid();\r\n this.privConnectionId = createNoDashGuid();\r\n\r\n this.privSynthesisTurn.onPreConnectionStart(this.privAuthFetchEventId);\r\n\r\n const authPromise = isUnAuthorized ? this.privAuthentication.fetchOnExpiry(this.privAuthFetchEventId) : this.privAuthentication.fetch(this.privAuthFetchEventId);\r\n\r\n this.privConnectionPromise = authPromise.then(async (result: AuthInfo): Promise => {\r\n this.privSynthesisTurn.onAuthCompleted(false);\r\n\r\n const connection: IConnection = this.privConnectionFactory.create(this.privSynthesizerConfig, result, this.privConnectionId);\r\n\r\n // Attach to the underlying event. No need to hold onto the detach pointers as in the event the connection goes away,\r\n // it'll stop sending events.\r\n connection.events.attach((event: ConnectionEvent): void => {\r\n this.connectionEvents.onEvent(event);\r\n });\r\n const response = await connection.open();\r\n if (response.statusCode === 200) {\r\n this.privSynthesisTurn.onConnectionEstablishCompleted(response.statusCode);\r\n return Promise.resolve(connection);\r\n } else if (response.statusCode === 403 && !isUnAuthorized) {\r\n return this.connectImpl(true);\r\n } else {\r\n this.privSynthesisTurn.onConnectionEstablishCompleted(response.statusCode);\r\n return Promise.reject(\r\n `Unable to contact server. StatusCode: ${response.statusCode},\r\n ${this.privSynthesizerConfig.parameters.getProperty(PropertyId.SpeechServiceConnection_Url)} Reason: ${response.reason}`);\r\n }\r\n }, (error: string): Promise => {\r\n this.privSynthesisTurn.onAuthCompleted(true);\r\n throw new Error(error);\r\n });\r\n\r\n // Attach an empty handler to allow the promise to run in the background while\r\n // other startup events happen. It'll eventually be awaited on.\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.privConnectionPromise.catch((): void => { });\r\n\r\n return this.privConnectionPromise;\r\n }\r\n protected sendSpeechServiceConfig(connection: IConnection, SpeechServiceConfigJson: string): Promise {\r\n if (SpeechServiceConfigJson) {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speech.config\",\r\n this.privSynthesisTurn.requestId,\r\n \"application/json\",\r\n SpeechServiceConfigJson));\r\n }\r\n }\r\n\r\n protected sendSsmlMessage(connection: IConnection, ssml: string, requestId: string): Promise {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"ssml\",\r\n requestId,\r\n \"application/ssml+xml\",\r\n ssml));\r\n }\r\n\r\n private async fetchConnection(): Promise {\r\n if (this.privConnectionConfigurationPromise !== undefined) {\r\n return this.privConnectionConfigurationPromise.then((connection: IConnection): Promise => {\r\n if (connection.state() === ConnectionState.Disconnected) {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigurationPromise = undefined;\r\n return this.fetchConnection();\r\n }\r\n return this.privConnectionConfigurationPromise;\r\n }, (): Promise => {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigurationPromise = undefined;\r\n return this.fetchConnection();\r\n });\r\n }\r\n this.privConnectionConfigurationPromise = this.configureConnection();\r\n return await this.privConnectionConfigurationPromise;\r\n }\r\n\r\n // Takes an established websocket connection to the endpoint and sends speech configuration information.\r\n private async configureConnection(): Promise {\r\n const connection: IConnection = await this.connectImpl();\r\n if (this.configConnectionOverride !== undefined) {\r\n return this.configConnectionOverride(connection);\r\n }\r\n this.setSpeechConfigSynthesisSection();\r\n await this.sendSpeechServiceConfig(connection, this.privSynthesizerConfig.SpeechServiceConfig.serialize());\r\n return connection;\r\n }\r\n\r\n protected onAvatarEvent(_metadata: ISynthesisMetadata): void {\r\n return;\r\n }\r\n\r\n protected onSynthesisStarted(_requestId: string): void {\r\n return;\r\n }\r\n\r\n protected onSynthesizing(_audio: ArrayBuffer): void {\r\n return;\r\n }\r\n\r\n protected onSynthesisCancelled(_result: SpeechSynthesisResult): void {\r\n return;\r\n }\r\n\r\n protected onSynthesisCompleted(_result: SpeechSynthesisResult): void {\r\n return;\r\n }\r\n\r\n protected onWordBoundary(_wordBoundaryEventArgs: SpeechSynthesisWordBoundaryEventArgs): void {\r\n return;\r\n }\r\n\r\n protected onVisemeReceived(_visemeEventArgs: SpeechSynthesisVisemeEventArgs): void {\r\n return;\r\n }\r\n\r\n protected onBookmarkReached(_bookmarkEventArgs: SpeechSynthesisBookmarkEventArgs): void {\r\n return;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { AudioOutputFormatImpl } from \"../sdk/Audio/AudioOutputFormat.js\";\r\nimport { PropertyId, SpeechSynthesizer } from \"../sdk/Exports.js\";\r\n\r\n/**\r\n * Represents the JSON used in the synthesis.context message sent to the speech service.\r\n * The dynamic grammar is always refreshed from the encapsulated dynamic grammar object.\r\n */\r\nexport class SynthesisContext {\r\n private privContext: { [section: string]: any } = {};\r\n private privAudioOutputFormat: AudioOutputFormatImpl;\r\n\r\n /**\r\n * Adds a section to the synthesis.context object.\r\n * @param sectionName Name of the section to add.\r\n * @param value JSON serializable object that represents the value.\r\n */\r\n public setSection(sectionName: string, value: string | object): void {\r\n this.privContext[sectionName] = value;\r\n }\r\n\r\n /**\r\n * Sets the audio output format for synthesis context generation.\r\n * @param format {AudioOutputFormatImpl} the output format\r\n */\r\n public set audioOutputFormat(format: AudioOutputFormatImpl) {\r\n this.privAudioOutputFormat = format;\r\n }\r\n\r\n public toJSON(): string {\r\n return JSON.stringify(this.privContext);\r\n }\r\n\r\n public setSynthesisSection(speechSynthesizer: SpeechSynthesizer): void {\r\n const synthesisSection: ISynthesisSection = this.buildSynthesisContext(speechSynthesizer);\r\n this.setSection(\"synthesis\", synthesisSection);\r\n }\r\n\r\n private buildSynthesisContext(speechSynthesizer: SpeechSynthesizer): ISynthesisSection {\r\n return {\r\n audio: {\r\n metadataOptions: {\r\n bookmarkEnabled: (!!speechSynthesizer?.bookmarkReached),\r\n punctuationBoundaryEnabled: speechSynthesizer?.properties.getProperty(\r\n PropertyId.SpeechServiceResponse_RequestPunctuationBoundary, (!!speechSynthesizer?.wordBoundary)),\r\n sentenceBoundaryEnabled: speechSynthesizer?.properties.getProperty(\r\n PropertyId.SpeechServiceResponse_RequestSentenceBoundary, false),\r\n sessionEndEnabled: true,\r\n visemeEnabled: (!!speechSynthesizer?.visemeReceived),\r\n wordBoundaryEnabled: speechSynthesizer?.properties.getProperty(\r\n PropertyId.SpeechServiceResponse_RequestWordBoundary, (!!speechSynthesizer?.wordBoundary)),\r\n },\r\n outputFormat: this.privAudioOutputFormat.requestAudioFormatString,\r\n },\r\n language: {\r\n autoDetection: speechSynthesizer?.autoDetectSourceLanguage\r\n }\r\n } as ISynthesisSection;\r\n }\r\n}\r\n\r\ninterface ISynthesisSection {\r\n audio: {\r\n outputFormat: string;\r\n metadataOptions: {\r\n bookmarkEnabled: boolean;\r\n wordBoundaryEnabled: string;\r\n punctuationBoundaryEnabled: string;\r\n visemeEnabled: boolean;\r\n sentenceBoundaryEnabled: string;\r\n sessionEndEnabled: boolean;\r\n };\r\n };\r\n language: {\r\n autoDetection: boolean;\r\n };\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { EventType, PlatformEvent } from \"../common/Exports.js\";\r\n\r\nexport class SpeechSynthesisEvent extends PlatformEvent {\r\n private privRequestId: string;\r\n\r\n public constructor(eventName: string, requestId: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n\r\n this.privRequestId = requestId;\r\n }\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n}\r\n\r\nexport class SynthesisTriggeredEvent extends SpeechSynthesisEvent {\r\n private privSessionAudioDestinationId: string;\r\n private privTurnAudioDestinationId: string;\r\n\r\n public constructor(requestId: string, sessionAudioDestinationId: string, turnAudioDestinationId: string) {\r\n super(\"SynthesisTriggeredEvent\", requestId);\r\n\r\n this.privSessionAudioDestinationId = sessionAudioDestinationId;\r\n this.privTurnAudioDestinationId = turnAudioDestinationId;\r\n }\r\n\r\n public get audioSessionDestinationId(): string {\r\n return this.privSessionAudioDestinationId;\r\n }\r\n\r\n public get audioTurnDestinationId(): string {\r\n return this.privTurnAudioDestinationId;\r\n }\r\n}\r\n\r\nexport class ConnectingToSynthesisServiceEvent extends SpeechSynthesisEvent {\r\n private privAuthFetchEventId: string;\r\n\r\n public constructor(requestId: string, authFetchEventId: string) {\r\n super(\"ConnectingToSynthesisServiceEvent\", requestId);\r\n this.privAuthFetchEventId = authFetchEventId;\r\n }\r\n\r\n public get authFetchEventId(): string {\r\n return this.privAuthFetchEventId;\r\n }\r\n}\r\n\r\nexport class SynthesisStartedEvent extends SpeechSynthesisEvent {\r\n private privAuthFetchEventId: string;\r\n\r\n public constructor(requestId: string, authFetchEventId: string) {\r\n super(\"SynthesisStartedEvent\", requestId);\r\n\r\n this.privAuthFetchEventId = authFetchEventId;\r\n }\r\n\r\n public get authFetchEventId(): string {\r\n return this.privAuthFetchEventId;\r\n }\r\n}\r\n","import {\r\n IRequestOptions,\r\n IRestResponse,\r\n RestConfigBase,\r\n RestMessageAdapter,\r\n RestRequestType,\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n PropertyId,\r\n} from \"../sdk/Exports.js\";\r\nimport { ConnectionFactoryBase } from \"./ConnectionFactoryBase.js\";\r\nimport { AuthInfo, IAuthentication, SynthesizerConfig } from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\n\r\n/**\r\n * Implements methods for speaker recognition classes, sending requests to endpoint\r\n * and parsing response into expected format\r\n * @class SynthesisRestAdapter\r\n */\r\nexport class SynthesisRestAdapter {\r\n private privRestAdapter: RestMessageAdapter;\r\n private privUri: string;\r\n private privAuthentication: IAuthentication;\r\n\r\n public constructor(config: SynthesizerConfig, authentication: IAuthentication) {\r\n\r\n let endpoint = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, undefined);\r\n if (!endpoint) {\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region, \"westus\");\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n endpoint = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, `https://${region}.tts.speech${hostSuffix}`);\r\n }\r\n this.privUri = `${endpoint}/cognitiveservices/voices/list`;\r\n\r\n const options: IRequestOptions = RestConfigBase.requestOptions;\r\n this.privRestAdapter = new RestMessageAdapter(options);\r\n this.privAuthentication = authentication;\r\n }\r\n\r\n /**\r\n * Sends list voices request to endpoint.\r\n * @function\r\n * @public\r\n * @param connectionId - guid for connectionId\r\n * @returns {Promise} rest response to status request\r\n */\r\n public getVoicesList(connectionId: string): Promise {\r\n this.privRestAdapter.setHeaders(HeaderNames.ConnectionId, connectionId);\r\n return this.privAuthentication.fetch(connectionId).then((authInfo: AuthInfo): Promise => {\r\n this.privRestAdapter.setHeaders(authInfo.headerName, authInfo.token);\r\n return this.privRestAdapter.request(RestRequestType.Get, this.privUri);\r\n });\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n createNoDashGuid,\r\n Deferred,\r\n Events,\r\n IAudioDestination\r\n} from \"../common/Exports.js\";\r\nimport { AudioOutputFormatImpl } from \"../sdk/Audio/AudioOutputFormat.js\";\r\nimport { PullAudioOutputStreamImpl } from \"../sdk/Audio/AudioOutputStream.js\";\r\nimport {\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SpeechSynthesisResult,\r\n} from \"../sdk/Exports.js\";\r\nimport { ISynthesisMetadata, MetadataType } from \"./ServiceMessages/SynthesisAudioMetadata.js\";\r\nimport {\r\n ConnectingToSynthesisServiceEvent,\r\n SpeechSynthesisEvent,\r\n SynthesisStartedEvent,\r\n SynthesisTriggeredEvent,\r\n} from \"./SynthesisEvents.js\";\r\n\r\nexport interface ISynthesisResponseContext {\r\n serviceTag: string;\r\n}\r\n\r\nexport interface ISynthesisResponseAudio {\r\n type: string;\r\n streamId: string;\r\n}\r\n\r\nexport interface ISynthesisResponse {\r\n context: ISynthesisResponseContext;\r\n audio: ISynthesisResponseAudio;\r\n webrtc: {\r\n connectionString: string;\r\n };\r\n}\r\n\r\nexport class SynthesisTurn {\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n\r\n public get streamId(): string {\r\n return this.privStreamId;\r\n }\r\n\r\n public set streamId(value: string) {\r\n this.privStreamId = value;\r\n }\r\n\r\n public get audioOutputFormat(): AudioOutputFormatImpl {\r\n return this.privAudioOutputFormat;\r\n }\r\n\r\n public set audioOutputFormat(format: AudioOutputFormatImpl) {\r\n this.privAudioOutputFormat = format;\r\n }\r\n\r\n public get turnCompletionPromise(): Promise {\r\n return this.privTurnDeferral.promise;\r\n }\r\n\r\n public get isSynthesisEnded(): boolean {\r\n return this.privIsSynthesisEnded;\r\n }\r\n\r\n public get isSynthesizing(): boolean {\r\n return this.privIsSynthesizing;\r\n }\r\n\r\n public get currentTextOffset(): number {\r\n return this.privTextOffset;\r\n }\r\n\r\n public get currentSentenceOffset(): number {\r\n return this.privSentenceOffset;\r\n }\r\n\r\n // The number of bytes received for current turn\r\n public get bytesReceived(): number {\r\n return this.privBytesReceived;\r\n }\r\n\r\n public get audioDuration(): number {\r\n return this.privAudioDuration;\r\n }\r\n\r\n public get extraProperties(): PropertyCollection {\r\n if (!!this.privWebRTCSDP) {\r\n const properties = new PropertyCollection();\r\n properties.setProperty(PropertyId.TalkingAvatarService_WebRTC_SDP, this.privWebRTCSDP);\r\n return properties;\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private privIsDisposed: boolean = false;\r\n private privAuthFetchEventId: string;\r\n private privIsSynthesizing: boolean = false;\r\n private privIsSynthesisEnded: boolean = false;\r\n private privBytesReceived: number = 0;\r\n private privRequestId: string;\r\n private privStreamId: string;\r\n private privTurnDeferral: Deferred;\r\n private privInTurn: boolean = false;\r\n private privAudioOutputFormat: AudioOutputFormatImpl;\r\n private privAudioOutputStream: PullAudioOutputStreamImpl;\r\n private privReceivedAudio: ArrayBuffer;\r\n private privReceivedAudioWithHeader: ArrayBuffer;\r\n private privTextOffset: number = 0;\r\n private privNextSearchTextIndex: number = 0;\r\n private privSentenceOffset: number = 0;\r\n private privNextSearchSentenceIndex: number = 0;\r\n private privPartialVisemeAnimation: string;\r\n private privRawText: string;\r\n private privIsSSML: boolean;\r\n private privTurnAudioDestination: IAudioDestination;\r\n private privAudioDuration: number;\r\n private privWebRTCSDP: string;\r\n\r\n public constructor() {\r\n this.privRequestId = createNoDashGuid();\r\n this.privTurnDeferral = new Deferred();\r\n\r\n // We're not in a turn, so resolve.\r\n this.privTurnDeferral.resolve();\r\n }\r\n\r\n public async getAllReceivedAudio(): Promise {\r\n if (!!this.privReceivedAudio) {\r\n return Promise.resolve(this.privReceivedAudio);\r\n }\r\n if (!this.privIsSynthesisEnded) {\r\n return null;\r\n }\r\n await this.readAllAudioFromStream();\r\n return Promise.resolve(this.privReceivedAudio);\r\n }\r\n\r\n public async getAllReceivedAudioWithHeader(): Promise {\r\n if (!!this.privReceivedAudioWithHeader) {\r\n return this.privReceivedAudioWithHeader;\r\n }\r\n if (!this.privIsSynthesisEnded) {\r\n return null;\r\n }\r\n if (this.audioOutputFormat.hasHeader) {\r\n const audio: ArrayBuffer = await this.getAllReceivedAudio();\r\n this.privReceivedAudioWithHeader = this.audioOutputFormat.addHeader(audio);\r\n return this.privReceivedAudioWithHeader;\r\n } else {\r\n return this.getAllReceivedAudio();\r\n }\r\n }\r\n\r\n public startNewSynthesis(requestId: string, rawText: string, isSSML: boolean, audioDestination?: IAudioDestination): void {\r\n this.privIsSynthesisEnded = false;\r\n this.privIsSynthesizing = true;\r\n this.privRequestId = requestId;\r\n this.privRawText = rawText;\r\n this.privIsSSML = isSSML;\r\n this.privAudioOutputStream = new PullAudioOutputStreamImpl();\r\n this.privAudioOutputStream.format = this.privAudioOutputFormat;\r\n this.privReceivedAudio = null;\r\n this.privReceivedAudioWithHeader = null;\r\n this.privBytesReceived = 0;\r\n this.privTextOffset = 0;\r\n this.privNextSearchTextIndex = 0;\r\n this.privSentenceOffset = 0;\r\n this.privNextSearchSentenceIndex = 0;\r\n this.privPartialVisemeAnimation = \"\";\r\n this.privWebRTCSDP = \"\";\r\n if (audioDestination !== undefined) {\r\n this.privTurnAudioDestination = audioDestination;\r\n this.privTurnAudioDestination.format = this.privAudioOutputFormat;\r\n }\r\n this.onEvent(new SynthesisTriggeredEvent(this.requestId, undefined, audioDestination === undefined ? undefined : audioDestination.id()));\r\n }\r\n\r\n public onPreConnectionStart(authFetchEventId: string): void {\r\n this.privAuthFetchEventId = authFetchEventId;\r\n this.onEvent(new ConnectingToSynthesisServiceEvent(this.privRequestId, this.privAuthFetchEventId));\r\n }\r\n\r\n public onAuthCompleted(isError: boolean): void {\r\n if (isError) {\r\n this.onComplete();\r\n }\r\n }\r\n\r\n public onConnectionEstablishCompleted(statusCode: number): void {\r\n if (statusCode === 200) {\r\n this.onEvent(new SynthesisStartedEvent(this.requestId, this.privAuthFetchEventId));\r\n this.privBytesReceived = 0;\r\n return;\r\n } else if (statusCode === 403) {\r\n this.onComplete();\r\n }\r\n }\r\n\r\n public onServiceResponseMessage(responseJson: string): void {\r\n const response: ISynthesisResponse = JSON.parse(responseJson) as ISynthesisResponse;\r\n this.streamId = response.audio.streamId;\r\n }\r\n\r\n public onServiceTurnEndResponse(): void {\r\n this.privInTurn = false;\r\n this.privTurnDeferral.resolve();\r\n this.onComplete();\r\n }\r\n\r\n public onServiceTurnStartResponse(responseJson: string): void {\r\n if (!!this.privTurnDeferral && !!this.privInTurn) {\r\n // What? How are we starting a turn with another not done?\r\n this.privTurnDeferral.reject(\"Another turn started before current completed.\");\r\n // Avoid UnhandledPromiseRejection if privTurnDeferral is not being awaited\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.privTurnDeferral.promise.then().catch((): void => { });\r\n }\r\n this.privInTurn = true;\r\n this.privTurnDeferral = new Deferred();\r\n const response: ISynthesisResponse = JSON.parse(responseJson) as ISynthesisResponse;\r\n if (!!response.webrtc) {\r\n this.privWebRTCSDP = response.webrtc.connectionString;\r\n }\r\n }\r\n\r\n public onAudioChunkReceived(data: ArrayBuffer): void {\r\n if (this.isSynthesizing) {\r\n this.privAudioOutputStream.write(data);\r\n this.privBytesReceived += data.byteLength;\r\n if (this.privTurnAudioDestination !== undefined) {\r\n this.privTurnAudioDestination.write(data);\r\n }\r\n }\r\n }\r\n\r\n public onTextBoundaryEvent(metadata: ISynthesisMetadata): void {\r\n this.updateTextOffset(metadata.Data.text.Text, metadata.Type);\r\n }\r\n\r\n public onVisemeMetadataReceived(metadata: ISynthesisMetadata): void {\r\n if (metadata.Data.AnimationChunk !== undefined) {\r\n this.privPartialVisemeAnimation += metadata.Data.AnimationChunk;\r\n }\r\n }\r\n\r\n public onSessionEnd(metadata: ISynthesisMetadata): void {\r\n this.privAudioDuration = metadata.Data.Offset;\r\n }\r\n\r\n public async constructSynthesisResult(): Promise {\r\n const audioBuffer: ArrayBuffer = await this.getAllReceivedAudioWithHeader();\r\n return new SpeechSynthesisResult(\r\n this.requestId,\r\n ResultReason.SynthesizingAudioCompleted,\r\n audioBuffer,\r\n undefined,\r\n this.extraProperties,\r\n this.audioDuration\r\n );\r\n }\r\n\r\n public dispose(): void {\r\n if (!this.privIsDisposed) {\r\n // we should have completed by now. If we did not its an unknown error.\r\n this.privIsDisposed = true;\r\n }\r\n }\r\n\r\n public onStopSynthesizing(): void {\r\n this.onComplete();\r\n }\r\n\r\n /**\r\n * Gets the viseme animation string (merged from animation chunk), and clears the internal\r\n * partial animation.\r\n */\r\n public getAndClearVisemeAnimation(): string {\r\n const animation: string = this.privPartialVisemeAnimation;\r\n this.privPartialVisemeAnimation = \"\";\r\n return animation;\r\n }\r\n\r\n protected onEvent(event: SpeechSynthesisEvent): void {\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n /**\r\n * Check if the text is an XML(SSML) tag\r\n * @param text\r\n * @private\r\n */\r\n private static isXmlTag(text: string): boolean {\r\n return text.length >= 2 && text[0] === \"<\" && text[text.length - 1] === \">\";\r\n }\r\n\r\n private updateTextOffset(text: string, type: MetadataType): void {\r\n if (type === MetadataType.WordBoundary) {\r\n this.privTextOffset = this.privRawText.indexOf(text, this.privNextSearchTextIndex);\r\n if (this.privTextOffset >= 0) {\r\n this.privNextSearchTextIndex = this.privTextOffset + text.length;\r\n if (this.privIsSSML) {\r\n if (this.withinXmlTag(this.privTextOffset) && !SynthesisTurn.isXmlTag(text)) {\r\n this.updateTextOffset(text, type);\r\n }\r\n }\r\n }\r\n } else {\r\n this.privSentenceOffset = this.privRawText.indexOf(text, this.privNextSearchSentenceIndex);\r\n if (this.privSentenceOffset >= 0) {\r\n this.privNextSearchSentenceIndex = this.privSentenceOffset + text.length;\r\n if (this.privIsSSML) {\r\n if (this.withinXmlTag(this.privSentenceOffset) && !SynthesisTurn.isXmlTag(text)) {\r\n this.updateTextOffset(text, type);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private onComplete(): void {\r\n if (this.privIsSynthesizing) {\r\n this.privIsSynthesizing = false;\r\n this.privIsSynthesisEnded = true;\r\n this.privAudioOutputStream.close();\r\n this.privInTurn = false;\r\n if (this.privTurnAudioDestination !== undefined) {\r\n this.privTurnAudioDestination.close();\r\n this.privTurnAudioDestination = undefined;\r\n }\r\n }\r\n }\r\n\r\n private async readAllAudioFromStream(): Promise {\r\n if (this.privIsSynthesisEnded) {\r\n this.privReceivedAudio = new ArrayBuffer(this.bytesReceived);\r\n try {\r\n await this.privAudioOutputStream.read(this.privReceivedAudio);\r\n } catch (e) {\r\n this.privReceivedAudio = new ArrayBuffer(0);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Check if current idx is in XML(SSML) tag\r\n * @param idx\r\n * @private\r\n */\r\n private withinXmlTag(idx: number): boolean {\r\n return this.privRawText.indexOf(\"<\", idx + 1) > this.privRawText.indexOf(\">\", idx + 1);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection } from \"../sdk/Exports.js\";\r\nimport {\r\n Context,\r\n ISynthesisSectionVideo,\r\n SpeechServiceConfig\r\n } from \"./Exports.js\";\r\n\r\nexport enum SynthesisServiceType {\r\n Standard,\r\n Custom,\r\n}\r\n\r\nexport class SynthesizerConfig {\r\n private privSynthesisServiceType: SynthesisServiceType = SynthesisServiceType.Standard;\r\n private privSpeechServiceConfig: SpeechServiceConfig;\r\n private privParameters: PropertyCollection;\r\n public avatarEnabled: boolean = false;\r\n\r\n public constructor(\r\n speechServiceConfig: SpeechServiceConfig,\r\n parameters: PropertyCollection) {\r\n this.privSpeechServiceConfig = speechServiceConfig ? speechServiceConfig : new SpeechServiceConfig(new Context(null));\r\n this.privParameters = parameters;\r\n }\r\n\r\n public get parameters(): PropertyCollection {\r\n return this.privParameters;\r\n }\r\n\r\n public get synthesisServiceType(): SynthesisServiceType {\r\n return this.privSynthesisServiceType;\r\n }\r\n\r\n public set synthesisServiceType(value: SynthesisServiceType) {\r\n this.privSynthesisServiceType = value;\r\n }\r\n\r\n public set synthesisVideoSection(value: ISynthesisSectionVideo) {\r\n this.privSpeechServiceConfig.Context.synthesis = {\r\n video: value\r\n };\r\n }\r\n\r\n public get SpeechServiceConfig(): SpeechServiceConfig {\r\n return this.privSpeechServiceConfig;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n IConnection,\r\n IStringDictionary\r\n} from \"../common/Exports.js\";\r\nimport {\r\n OutputFormat,\r\n PropertyId\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./ConnectionFactoryBase.js\";\r\nimport {\r\n AuthInfo,\r\n OutputFormatPropertyName,\r\n RecognizerConfig,\r\n WebsocketMessageFormatter\r\n} from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\nimport {\r\n QueryParameterNames\r\n} from \"./QueryParameterNames.js\";\r\n\r\nexport class TranscriberConnectionFactory extends ConnectionFactoryBase {\r\n\r\n private readonly multiaudioRelativeUri: string = \"/speech/recognition/multiaudio\";\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, undefined);\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region, \"centralus\");\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const hostDefault: string = \"wss://transcribe.\" + region + \".cts.speech\" + hostSuffix + this.multiaudioRelativeUri;\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, hostDefault);\r\n\r\n const queryParams: IStringDictionary = {};\r\n this.setQueryParams(queryParams, config, endpoint);\r\n\r\n if (!endpoint) {\r\n endpoint = host;\r\n }\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n\r\n public setQueryParams(queryParams: IStringDictionary, config: RecognizerConfig, endpointUrl: string): void {\r\n\r\n const endpointId: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_EndpointId, undefined);\r\n const language: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, undefined);\r\n\r\n if (endpointId && !(QueryParameterNames.CustomSpeechDeploymentId in queryParams)) {\r\n queryParams[QueryParameterNames.CustomSpeechDeploymentId] = endpointId;\r\n }\r\n\r\n if (language && !(QueryParameterNames.Language in queryParams)) {\r\n queryParams[QueryParameterNames.Language] = language;\r\n }\r\n\r\n const wordLevelTimings: boolean = config.parameters.getProperty(PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps, \"false\").toLowerCase() === \"true\";\r\n const detailed: boolean = config.parameters.getProperty(OutputFormatPropertyName, OutputFormat[OutputFormat.Simple]) !== OutputFormat[OutputFormat.Simple];\r\n if (wordLevelTimings || detailed) {\r\n queryParams[QueryParameterNames.Format] = OutputFormat[OutputFormat.Detailed].toLowerCase();\r\n }\r\n\r\n this.setCommonUrlParams(config, queryParams, endpointUrl);\r\n }\r\n}\r\n","\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n RestConfigBase\r\n} from \"../../common.browser/RestConfigBase.js\";\r\n\r\nexport class ConversationConnectionConfig extends RestConfigBase {\r\n\r\n private static readonly privHost: string = \"dev.microsofttranslator.com\";\r\n private static readonly privRestPath: string = \"/capito/room\";\r\n private static readonly privApiVersion: string = \"2.0\";\r\n private static readonly privDefaultLanguageCode: string = \"en-US\";\r\n private static readonly privClientAppId: string = \"FC539C22-1767-4F1F-84BC-B4D811114F15\";\r\n private static readonly privWebSocketPath: string = \"/capito/translate\";\r\n private static readonly privTranscriptionEventKeys: string[] = [\"iCalUid\", \"callId\", \"organizer\", \"FLAC\", \"MTUri\", \"DifferentiateGuestSpeakers\", \"audiorecording\", \"Threadid\", \"OrganizerMri\", \"OrganizerTenantId\", \"UserToken\"];\r\n\r\n public static get host(): string {\r\n return ConversationConnectionConfig.privHost;\r\n }\r\n\r\n public static get apiVersion(): string {\r\n return ConversationConnectionConfig.privApiVersion;\r\n }\r\n\r\n public static get clientAppId(): string {\r\n return ConversationConnectionConfig.privClientAppId;\r\n }\r\n\r\n public static get defaultLanguageCode(): string {\r\n return ConversationConnectionConfig.privDefaultLanguageCode;\r\n }\r\n\r\n public static get restPath(): string {\r\n return ConversationConnectionConfig.privRestPath;\r\n }\r\n\r\n public static get webSocketPath(): string {\r\n return ConversationConnectionConfig.privWebSocketPath;\r\n }\r\n\r\n public static get transcriptionEventKeys(): string[] {\r\n return ConversationConnectionConfig.privTranscriptionEventKeys;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ProxyInfo, WebsocketConnection } from \"../../common.browser/Exports.js\";\r\nimport { createGuid, IConnection, IStringDictionary } from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../../sdk/Contracts.js\";\r\nimport { PropertyId } from \"../../sdk/Exports.js\";\r\nimport { ConnectionFactoryBase } from \"../ConnectionFactoryBase.js\";\r\nimport { AuthInfo, RecognizerConfig } from \"../Exports.js\";\r\nimport { ConversationConnectionConfig } from \"./ConversationConnectionConfig.js\";\r\nimport { ConversationWebsocketMessageFormatter } from \"./ConversationWebsocketMessageFormatter.js\";\r\n\r\n/**\r\n * Create a connection to the Conversation Translator websocket for sending instant messages and commands, and for receiving translated messages.\r\n * The conversation must already have been started or joined.\r\n */\r\nexport class ConversationConnectionFactory extends ConnectionFactoryBase {\r\n\r\n public create(config: RecognizerConfig, authInfo: AuthInfo, connectionId?: string): IConnection {\r\n\r\n const endpointHost: string = config.parameters.getProperty(PropertyId.ConversationTranslator_Host, ConversationConnectionConfig.host);\r\n const correlationId: string = config.parameters.getProperty(PropertyId.ConversationTranslator_CorrelationId, createGuid());\r\n\r\n const endpoint: string = `wss://${endpointHost}${ConversationConnectionConfig.webSocketPath}`;\r\n const token: string = config.parameters.getProperty(PropertyId.ConversationTranslator_Token, undefined);\r\n Contracts.throwIfNullOrUndefined(token, \"token\");\r\n\r\n const queryParams: IStringDictionary = {};\r\n queryParams[ConversationConnectionConfig.configParams.apiVersion] = ConversationConnectionConfig.apiVersion;\r\n queryParams[ConversationConnectionConfig.configParams.token] = token;\r\n queryParams[ConversationConnectionConfig.configParams.correlationId] = correlationId;\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, {}, new ConversationWebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ConnectionMessage, IStringDictionary, MessageType } from \"../../common/Exports.js\";\r\n\r\nexport class ConversationConnectionMessage extends ConnectionMessage {\r\n private privConversationMessageType: string;\r\n\r\n public constructor(\r\n messageType: MessageType,\r\n body: any,\r\n headers?: IStringDictionary,\r\n id?: string) {\r\n super(messageType, body, headers, id);\r\n const json: { type: string } = JSON.parse(this.textBody) as { type: string };\r\n if (json.type !== undefined) {\r\n this.privConversationMessageType = json.type;\r\n }\r\n }\r\n\r\n public get conversationMessageType(): string {\r\n return this.privConversationMessageType;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IRequestOptions,\r\n IRestParams,\r\n IRestResponse,\r\n RestMessageAdapter,\r\n RestRequestType\r\n} from \"../../common.browser/Exports.js\";\r\nimport { IErrorMessages, IStringDictionary } from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../../sdk/Contracts.js\";\r\nimport { PropertyCollection, PropertyId } from \"../../sdk/Exports.js\";\r\nimport { ConversationConnectionConfig } from \"./ConversationConnectionConfig.js\";\r\nimport { IConversationResponseError, IInternalConversation } from \"./ConversationTranslatorInterfaces.js\";\r\n\r\nexport class ConversationManager {\r\n\r\n private privRequestParams: IRestParams;\r\n private privErrors: IErrorMessages;\r\n private privHost: string;\r\n private privApiVersion: string;\r\n private privRestPath: string;\r\n private privRestAdapter: RestMessageAdapter;\r\n\r\n public constructor() {\r\n //\r\n this.privRequestParams = ConversationConnectionConfig.configParams;\r\n this.privErrors = ConversationConnectionConfig.restErrors;\r\n this.privHost = ConversationConnectionConfig.host;\r\n this.privApiVersion = ConversationConnectionConfig.apiVersion;\r\n this.privRestPath = ConversationConnectionConfig.restPath;\r\n this.privRestAdapter = new RestMessageAdapter({});\r\n }\r\n\r\n /**\r\n * Make a POST request to the Conversation Manager service endpoint to create or join a conversation.\r\n * @param args\r\n * @param conversationCode\r\n * @param callback\r\n * @param errorCallback\r\n */\r\n public createOrJoin(args: PropertyCollection, conversationCode: string, cb?: (c: any) => void, err?: (e: string) => void): void {\r\n\r\n try {\r\n\r\n Contracts.throwIfNullOrUndefined(args, \"args\");\r\n\r\n const languageCode: string = args.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, ConversationConnectionConfig.defaultLanguageCode);\r\n const nickname: string = args.getProperty(PropertyId.ConversationTranslator_Name, \"conversation_host\");\r\n const endpointHost: string = args.getProperty(PropertyId.ConversationTranslator_Host, this.privHost);\r\n const correlationId: string = args.getProperty(PropertyId.ConversationTranslator_CorrelationId);\r\n const subscriptionKey: string = args.getProperty(PropertyId.SpeechServiceConnection_Key);\r\n const subscriptionRegion: string = args.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n const authToken: string = args.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n\r\n Contracts.throwIfNullOrWhitespace(languageCode, \"languageCode\");\r\n Contracts.throwIfNullOrWhitespace(nickname, \"nickname\");\r\n Contracts.throwIfNullOrWhitespace(endpointHost, \"endpointHost\");\r\n\r\n const queryParams: IStringDictionary = {};\r\n queryParams[this.privRequestParams.apiVersion] = this.privApiVersion;\r\n queryParams[this.privRequestParams.languageCode] = languageCode;\r\n queryParams[this.privRequestParams.nickname] = nickname;\r\n\r\n const headers: IStringDictionary = {};\r\n if (correlationId) {\r\n headers[this.privRequestParams.correlationId] = correlationId;\r\n }\r\n headers[this.privRequestParams.clientAppId] = ConversationConnectionConfig.clientAppId;\r\n\r\n if (conversationCode !== undefined) {\r\n queryParams[this.privRequestParams.roomId] = conversationCode;\r\n } else {\r\n Contracts.throwIfNullOrUndefined(subscriptionRegion, this.privErrors.authInvalidSubscriptionRegion);\r\n headers[this.privRequestParams.subscriptionRegion] = subscriptionRegion;\r\n if (subscriptionKey) {\r\n headers[this.privRequestParams.subscriptionKey] = subscriptionKey;\r\n } else if (authToken) {\r\n headers[this.privRequestParams.authorization] = `Bearer ${authToken}`;\r\n } else {\r\n Contracts.throwIfNullOrUndefined(subscriptionKey, this.privErrors.authInvalidSubscriptionKey);\r\n }\r\n }\r\n\r\n const config: IRequestOptions = {};\r\n config.headers = headers;\r\n this.privRestAdapter.options = config;\r\n\r\n const endpoint: string = `https://${endpointHost}${this.privRestPath}`;\r\n\r\n // TODO: support a proxy and certificate validation\r\n this.privRestAdapter.request(RestRequestType.Post, endpoint, queryParams, null).then((response: IRestResponse): void => {\r\n\r\n const requestId: string = RestMessageAdapter.extractHeaderValue(this.privRequestParams.requestId, response.headers);\r\n\r\n if (!response.ok) {\r\n if (!!err) {\r\n // get the error\r\n let errorMessage: string = this.privErrors.invalidCreateJoinConversationResponse.replace(\"{status}\", response.status.toString());\r\n let errMessageRaw: IConversationResponseError;\r\n try {\r\n errMessageRaw = JSON.parse(response.data) as IConversationResponseError;\r\n errorMessage += ` [${errMessageRaw.error.code}: ${errMessageRaw.error.message}]`;\r\n } catch (e) {\r\n errorMessage += ` [${response.data}]`;\r\n }\r\n if (requestId) {\r\n errorMessage += ` ${requestId}`;\r\n }\r\n\r\n err(errorMessage);\r\n }\r\n return;\r\n }\r\n const conversation: IInternalConversation = JSON.parse(response.data) as IInternalConversation;\r\n if (conversation) {\r\n conversation.requestId = requestId;\r\n }\r\n if (!!cb) {\r\n try {\r\n cb(conversation);\r\n } catch (e) {\r\n if (!!err) {\r\n err(e as string);\r\n }\r\n }\r\n cb = undefined;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n }).catch( (): void => { });\r\n\r\n } catch (error) {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Make a DELETE request to the Conversation Manager service endpoint to leave the conversation.\r\n * @param args\r\n * @param sessionToken\r\n * @param callback\r\n */\r\n public leave(args: PropertyCollection, sessionToken: string): Promise {\r\n return new Promise((resolve: () => void, reject: (reason: string) => void): void => {\r\n try {\r\n\r\n Contracts.throwIfNullOrUndefined(args, this.privErrors.invalidArgs.replace(\"{arg}\", \"config\"));\r\n Contracts.throwIfNullOrWhitespace(sessionToken, this.privErrors.invalidArgs.replace(\"{arg}\", \"token\"));\r\n\r\n const endpointHost: string = args.getProperty(PropertyId.ConversationTranslator_Host, this.privHost);\r\n const correlationId: string = args.getProperty(PropertyId.ConversationTranslator_CorrelationId);\r\n\r\n const queryParams: IStringDictionary = {};\r\n queryParams[this.privRequestParams.apiVersion] = this.privApiVersion;\r\n queryParams[this.privRequestParams.sessionToken] = sessionToken;\r\n\r\n const headers: IStringDictionary = {};\r\n if (correlationId) {\r\n headers[this.privRequestParams.correlationId] = correlationId;\r\n }\r\n\r\n const config: IRequestOptions = {};\r\n config.headers = headers;\r\n this.privRestAdapter.options = config;\r\n\r\n const endpoint: string = `https://${endpointHost}${this.privRestPath}`;\r\n\r\n // TODO: support a proxy and certificate validation\r\n this.privRestAdapter.request(RestRequestType.Delete, endpoint, queryParams, null).then((response: IRestResponse): void => {\r\n\r\n if (!response.ok) {\r\n // ignore errors on delete\r\n }\r\n\r\n resolve();\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n }).catch( (): void => {});\r\n\r\n } catch (error) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n reject(typedError.name + \": \" + typedError.message);\r\n\r\n } else {\r\n reject(error as string);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n createNoDashGuid,\r\n Deferred,\r\n IDetachable,\r\n} from \"../../common/Exports.js\";\r\n\r\n/**\r\n * Placeholder class for the Conversation Request Session. Based off RequestSession.\r\n * TODO: define what telemetry is required.\r\n */\r\nexport class ConversationRequestSession {\r\n private privIsDisposed: boolean = false;\r\n private privDetachables: IDetachable[] = new Array();\r\n private privRequestId: string;\r\n private privRequestCompletionDeferral: Deferred;\r\n private privSessionId: string;\r\n\r\n public constructor(sessionId: string) {\r\n this.privSessionId = sessionId;\r\n this.privRequestId = createNoDashGuid();\r\n this.privRequestCompletionDeferral = new Deferred();\r\n }\r\n\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n\r\n public get completionPromise(): Promise {\r\n return this.privRequestCompletionDeferral.promise;\r\n }\r\n\r\n public onPreConnectionStart(authFetchEventId: string, connectionId: string): void {\r\n this.privSessionId = connectionId;\r\n }\r\n\r\n public onAuthCompleted(isError: boolean): void {\r\n if (isError) {\r\n this.onComplete();\r\n }\r\n }\r\n\r\n public onConnectionEstablishCompleted(statusCode: number): void {\r\n if (statusCode === 200) {\r\n return;\r\n } else if (statusCode === 403) {\r\n this.onComplete();\r\n }\r\n }\r\n\r\n public onServiceTurnEndResponse(continuousRecognition: boolean): void {\r\n if (!continuousRecognition) {\r\n this.onComplete();\r\n } else {\r\n this.privRequestId = createNoDashGuid();\r\n }\r\n }\r\n\r\n public async dispose(): Promise {\r\n if (!this.privIsDisposed) {\r\n // we should have completed by now. If we did not its an unknown error.\r\n this.privIsDisposed = true;\r\n for (const detachable of this.privDetachables) {\r\n await detachable.detach();\r\n }\r\n }\r\n }\r\n\r\n private onComplete(): void {\r\n //\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ConnectionState,\r\n createNoDashGuid,\r\n Deferred,\r\n IAudioSource,\r\n IConnection,\r\n MessageType,\r\n} from \"../../common/Exports.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n ConversationExpirationEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n ConversationTranslationResult,\r\n ResultReason,\r\n Translations\r\n} from \"../../sdk/Exports.js\";\r\nimport {\r\n CognitiveTokenAuthentication,\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognizerConfig,\r\n ServiceRecognizerBase\r\n} from \"../Exports.js\";\r\nimport { ConversationConnectionMessage } from \"./ConversationConnectionMessage.js\";\r\nimport { ConversationRequestSession } from \"./ConversationRequestSession.js\";\r\nimport {\r\n ConversationReceivedTranslationEventArgs,\r\n LockRoomEventArgs,\r\n MuteAllEventArgs,\r\n ParticipantAttributeEventArgs,\r\n ParticipantEventArgs,\r\n ParticipantsListEventArgs\r\n} from \"./ConversationTranslatorEventArgs.js\";\r\nimport {\r\n ConversationTranslatorCommandTypes,\r\n ConversationTranslatorMessageTypes,\r\n IInternalParticipant\r\n} from \"./ConversationTranslatorInterfaces.js\";\r\nimport { ConversationTranslatorRecognizer } from \"./ConversationTranslatorRecognizer.js\";\r\nimport {\r\n CommandResponsePayload,\r\n IParticipantPayloadResponse,\r\n IParticipantsListPayloadResponse,\r\n ITranslationResponsePayload,\r\n ParticipantPayloadResponse,\r\n ParticipantsListPayloadResponse,\r\n SpeechResponsePayload,\r\n TextResponsePayload\r\n} from \"./ServiceMessages/Exports.js\";\r\n\r\n/**\r\n * The service adapter handles sending and receiving messages to the Conversation Translator websocket.\r\n */\r\nexport class ConversationServiceAdapter extends ServiceRecognizerBase {\r\n private privConversationServiceConnector: ConversationTranslatorRecognizer;\r\n private privConversationConnectionFactory: IConnectionFactory;\r\n private privConversationAuthFetchEventId: string;\r\n private privConversationAuthentication: IAuthentication;\r\n private privConversationRequestSession: ConversationRequestSession;\r\n private privConnectionConfigPromise: Promise = undefined;\r\n private privConnectionLoop: Promise;\r\n private terminateMessageLoop: boolean;\r\n private privLastPartialUtteranceId: string;\r\n private privConversationIsDisposed: boolean;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n conversationServiceConnector: ConversationTranslatorRecognizer) {\r\n\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, conversationServiceConnector);\r\n\r\n this.privLastPartialUtteranceId = \"\";\r\n this.privConversationServiceConnector = conversationServiceConnector;\r\n this.privConversationAuthentication = authentication;\r\n this.receiveMessageOverride = (): Promise => this.receiveConversationMessageOverride();\r\n this.recognizeOverride = (): Promise => this.noOp();\r\n this.postConnectImplOverride = (connection: Promise): Promise => this.conversationConnectImpl(connection);\r\n this.configConnectionOverride = (): Promise => this.configConnection();\r\n this.disconnectOverride = (): Promise => this.privDisconnect();\r\n this.privConversationRequestSession = new ConversationRequestSession(createNoDashGuid());\r\n this.privConversationConnectionFactory = connectionFactory;\r\n this.privConversationIsDisposed = false;\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return super.isDisposed() || this.privConversationIsDisposed;\r\n }\r\n\r\n public async dispose(reason?: string): Promise {\r\n this.privConversationIsDisposed = true;\r\n if (this.privConnectionConfigPromise !== undefined) {\r\n const connection: IConnection = await this.privConnectionConfigPromise;\r\n await connection.dispose(reason);\r\n }\r\n await super.dispose(reason);\r\n }\r\n\r\n public async sendMessage(message: string): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n return connection.send(new ConversationConnectionMessage(\r\n MessageType.Text,\r\n message));\r\n }\r\n\r\n public async sendMessageAsync(message: string): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n\r\n await connection.send(new ConversationConnectionMessage(MessageType.Text, message));\r\n }\r\n\r\n protected privDisconnect(): Promise {\r\n if (this.terminateMessageLoop) {\r\n return;\r\n }\r\n this.cancelRecognition(this.privConversationRequestSession.sessionId,\r\n this.privConversationRequestSession.requestId,\r\n CancellationReason.Error,\r\n CancellationErrorCode.NoError,\r\n \"Disconnecting\");\r\n\r\n this.terminateMessageLoop = true;\r\n return Promise.resolve();\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/require-await\r\n protected async processTypeSpecificMessages(): Promise {\r\n return true;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n this.terminateMessageLoop = true;\r\n\r\n const cancelEvent: ConversationTranslationCanceledEventArgs = new ConversationTranslationCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n sessionId);\r\n\r\n try {\r\n if (!!this.privConversationServiceConnector.canceled) {\r\n this.privConversationServiceConnector.canceled(this.privConversationServiceConnector, cancelEvent);\r\n }\r\n } catch {\r\n // continue on error\r\n }\r\n }\r\n\r\n /**\r\n * Establishes a websocket connection to the end point.\r\n */\r\n protected async conversationConnectImpl(connection: Promise): Promise {\r\n this.privConnectionLoop = this.startMessageLoop();\r\n return connection;\r\n }\r\n\r\n /**\r\n * Process incoming websocket messages\r\n */\r\n private async receiveConversationMessageOverride(): Promise {\r\n if (this.isDisposed() || this.terminateMessageLoop) {\r\n return Promise.resolve();\r\n }\r\n // we won't rely on the cascading promises of the connection since we want to continually be available to receive messages\r\n const communicationCustodian: Deferred = new Deferred();\r\n\r\n try {\r\n const connection: IConnection = await this.fetchConnection();\r\n const message: ConversationConnectionMessage = await connection.read() as ConversationConnectionMessage;\r\n if (this.isDisposed() || this.terminateMessageLoop) {\r\n // We're done.\r\n communicationCustodian.resolve();\r\n return Promise.resolve();\r\n }\r\n\r\n if (!message) {\r\n return this.receiveConversationMessageOverride();\r\n }\r\n\r\n const sessionId: string = this.privConversationRequestSession.sessionId;\r\n const conversationMessageType: string = message.conversationMessageType.toLowerCase();\r\n let sendFinal: boolean = false;\r\n\r\n try {\r\n switch (conversationMessageType) {\r\n case \"info\":\r\n case \"participant_command\":\r\n case \"command\":\r\n const commandPayload: CommandResponsePayload = CommandResponsePayload.fromJSON(message.textBody);\r\n switch (commandPayload.command.toLowerCase()) {\r\n\r\n /**\r\n * 'ParticpantList' is the first message sent to the user after the websocket connection has opened.\r\n * The consuming client must wait for this message to arrive\r\n * before starting to send their own data.\r\n */\r\n case \"participantlist\":\r\n\r\n const participantsPayload: IParticipantsListPayloadResponse = ParticipantsListPayloadResponse.fromJSON(message.textBody);\r\n\r\n const participantsResult: IInternalParticipant[] = participantsPayload.participants.map((p: IParticipantPayloadResponse): IInternalParticipant => {\r\n const participant: IInternalParticipant = {\r\n avatar: p.avatar,\r\n displayName: p.nickname,\r\n id: p.participantId,\r\n isHost: p.ishost,\r\n isMuted: p.ismuted,\r\n isUsingTts: p.usetts,\r\n preferredLanguage: p.locale\r\n };\r\n return participant;\r\n });\r\n\r\n if (!!this.privConversationServiceConnector.participantsListReceived) {\r\n this.privConversationServiceConnector.participantsListReceived(this.privConversationServiceConnector,\r\n new ParticipantsListEventArgs(participantsPayload.roomid, participantsPayload.token,\r\n participantsPayload.translateTo, participantsPayload.profanityFilter,\r\n participantsPayload.roomProfanityFilter, participantsPayload.roomLocked,\r\n participantsPayload.muteAll, participantsResult, sessionId));\r\n }\r\n break;\r\n\r\n /**\r\n * 'SetTranslateToLanguages' represents the list of languages being used in the Conversation by all users(?).\r\n * This is sent at the start of the Conversation\r\n */\r\n case \"settranslatetolanguages\":\r\n\r\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\r\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantAttributeEventArgs(commandPayload.participantId,\r\n ConversationTranslatorCommandTypes.setTranslateToLanguages,\r\n commandPayload.value, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'SetProfanityFiltering' lets the client set the level of profanity filtering.\r\n * If sent by the participant the setting will effect only their own profanity level.\r\n * If sent by the host, the setting will effect all participants including the host.\r\n * Note: the profanity filters differ from Speech Service (?): 'marked', 'raw', 'removed', 'tagged'\r\n */\r\n case \"setprofanityfiltering\":\r\n\r\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\r\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantAttributeEventArgs(commandPayload.participantId,\r\n ConversationTranslatorCommandTypes.setProfanityFiltering,\r\n commandPayload.value, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'SetMute' is sent if the participant has been muted by the host.\r\n * Check the 'participantId' to determine if the current user has been muted.\r\n */\r\n case \"setmute\":\r\n\r\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\r\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantAttributeEventArgs(commandPayload.participantId,\r\n ConversationTranslatorCommandTypes.setMute,\r\n commandPayload.value, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'SetMuteAll' is sent if the Conversation has been muted by the host.\r\n */\r\n case \"setmuteall\":\r\n\r\n if (!!this.privConversationServiceConnector.muteAllCommandReceived) {\r\n this.privConversationServiceConnector.muteAllCommandReceived(this.privConversationServiceConnector,\r\n new MuteAllEventArgs(commandPayload.value as boolean, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'RoomExpirationWarning' is sent towards the end of the Conversation session to give a timeout warning.\r\n */\r\n case \"roomexpirationwarning\":\r\n\r\n if (!!this.privConversationServiceConnector.conversationExpiration) {\r\n this.privConversationServiceConnector.conversationExpiration(this.privConversationServiceConnector,\r\n new ConversationExpirationEventArgs(commandPayload.value as number, this.privConversationRequestSession.sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'SetUseTts' is sent as a confirmation if the user requests TTS to be turned on or off.\r\n */\r\n case \"setusetts\":\r\n\r\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\r\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantAttributeEventArgs(commandPayload.participantId,\r\n ConversationTranslatorCommandTypes.setUseTTS,\r\n commandPayload.value, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'SetLockState' is set if the host has locked or unlocked the Conversation.\r\n */\r\n case \"setlockstate\":\r\n\r\n if (!!this.privConversationServiceConnector.lockRoomCommandReceived) {\r\n this.privConversationServiceConnector.lockRoomCommandReceived(this.privConversationServiceConnector,\r\n new LockRoomEventArgs(commandPayload.value as boolean, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'ChangeNickname' is received if a user changes their display name.\r\n * Any cached particpiants list should be updated to reflect the display name.\r\n */\r\n case \"changenickname\":\r\n\r\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\r\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantAttributeEventArgs(commandPayload.participantId,\r\n ConversationTranslatorCommandTypes.changeNickname,\r\n commandPayload.value, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'JoinSession' is sent when a user joins the Conversation.\r\n */\r\n case \"joinsession\":\r\n\r\n const joinParticipantPayload: ParticipantPayloadResponse = ParticipantPayloadResponse.fromJSON(message.textBody);\r\n\r\n const joiningParticipant: IInternalParticipant = {\r\n avatar: joinParticipantPayload.avatar,\r\n displayName: joinParticipantPayload.nickname,\r\n id: joinParticipantPayload.participantId,\r\n isHost: joinParticipantPayload.ishost,\r\n isMuted: joinParticipantPayload.ismuted,\r\n isUsingTts: joinParticipantPayload.usetts,\r\n preferredLanguage: joinParticipantPayload.locale,\r\n };\r\n\r\n if (!!this.privConversationServiceConnector.participantJoinCommandReceived) {\r\n this.privConversationServiceConnector.participantJoinCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantEventArgs(\r\n joiningParticipant,\r\n sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'LeaveSession' is sent when a user leaves the Conversation'.\r\n */\r\n case \"leavesession\":\r\n\r\n const leavingParticipant: IInternalParticipant = {\r\n id: commandPayload.participantId\r\n };\r\n\r\n if (!!this.privConversationServiceConnector.participantLeaveCommandReceived) {\r\n this.privConversationServiceConnector.participantLeaveCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantEventArgs(leavingParticipant, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'DisconnectSession' is sent when a user is disconnected from the session (e.g. network problem).\r\n * Check the 'ParticipantId' to check whether the message is for the current user.\r\n */\r\n case \"disconnectsession\":\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const disconnectParticipant: IInternalParticipant = {\r\n id: commandPayload.participantId\r\n };\r\n\r\n break;\r\n\r\n case \"token\":\r\n const token = new CognitiveTokenAuthentication(\r\n (): Promise => {\r\n const authorizationToken = commandPayload.token;\r\n return Promise.resolve(authorizationToken);\r\n },\r\n (): Promise => {\r\n const authorizationToken = commandPayload.token;\r\n return Promise.resolve(authorizationToken);\r\n });\r\n this.authentication = token;\r\n this.privConversationServiceConnector.onToken(token);\r\n\r\n break;\r\n\r\n /**\r\n * Message not recognized.\r\n */\r\n default:\r\n break;\r\n }\r\n break;\r\n\r\n /**\r\n * 'partial' (or 'hypothesis') represents a unfinalized speech message.\r\n */\r\n case \"partial\":\r\n\r\n /**\r\n * 'final' (or 'phrase') represents a finalized speech message.\r\n */\r\n case \"final\":\r\n\r\n const speechPayload: SpeechResponsePayload = SpeechResponsePayload.fromJSON(message.textBody);\r\n const conversationResultReason: ResultReason = (conversationMessageType === \"final\") ? ResultReason.TranslatedParticipantSpeech : ResultReason.TranslatingParticipantSpeech;\r\n\r\n const speechResult: ConversationTranslationResult = new ConversationTranslationResult(speechPayload.participantId,\r\n this.getTranslations(speechPayload.translations),\r\n speechPayload.language,\r\n speechPayload.id,\r\n conversationResultReason,\r\n speechPayload.recognition,\r\n undefined,\r\n undefined,\r\n message.textBody,\r\n undefined);\r\n\r\n if (speechPayload.isFinal) {\r\n // check the length, sometimes empty finals are returned\r\n if (speechResult.text !== undefined && speechResult.text.length > 0) {\r\n sendFinal = true;\r\n } else if (speechPayload.id === this.privLastPartialUtteranceId) {\r\n // send final as normal. We had a non-empty partial for this same utterance\r\n // so sending the empty final is important\r\n sendFinal = true;\r\n } else {\r\n // suppress unneeded final\r\n }\r\n\r\n if (sendFinal) {\r\n if (!!this.privConversationServiceConnector.translationReceived) {\r\n this.privConversationServiceConnector.translationReceived(this.privConversationServiceConnector,\r\n new ConversationReceivedTranslationEventArgs(ConversationTranslatorMessageTypes.final, speechResult, sessionId));\r\n }\r\n }\r\n } else if (speechResult.text !== undefined) {\r\n this.privLastPartialUtteranceId = speechPayload.id;\r\n if (!!this.privConversationServiceConnector.translationReceived) {\r\n this.privConversationServiceConnector.translationReceived(this.privConversationServiceConnector,\r\n new ConversationReceivedTranslationEventArgs(ConversationTranslatorMessageTypes.partial, speechResult, sessionId));\r\n }\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * \"translated_message\" is a text message or instant message (IM).\r\n */\r\n case \"translated_message\":\r\n\r\n const textPayload: TextResponsePayload = TextResponsePayload.fromJSON(message.textBody);\r\n // TODO: (Native parity) a result reason should be set based whether the participantId is ours or not\r\n\r\n const textResult: ConversationTranslationResult = new ConversationTranslationResult(textPayload.participantId,\r\n this.getTranslations(textPayload.translations),\r\n textPayload.language,\r\n undefined,\r\n undefined,\r\n textPayload.originalText,\r\n undefined,\r\n undefined,\r\n undefined,\r\n message.textBody,\r\n undefined);\r\n\r\n if (!!this.privConversationServiceConnector.translationReceived) {\r\n this.privConversationServiceConnector.translationReceived(this.privConversationServiceConnector,\r\n new ConversationReceivedTranslationEventArgs(ConversationTranslatorMessageTypes.instantMessage, textResult, sessionId));\r\n }\r\n break;\r\n\r\n default:\r\n // ignore any unsupported message types\r\n break;\r\n }\r\n } catch (e) {\r\n // continue\r\n }\r\n return this.receiveConversationMessageOverride();\r\n } catch (e) {\r\n this.terminateMessageLoop = true;\r\n }\r\n\r\n return communicationCustodian.promise;\r\n }\r\n\r\n private async startMessageLoop(): Promise {\r\n if (this.isDisposed()) {\r\n return Promise.resolve();\r\n }\r\n this.terminateMessageLoop = false;\r\n\r\n const messageRetrievalPromise = this.receiveConversationMessageOverride();\r\n\r\n try {\r\n const r = await messageRetrievalPromise;\r\n return r;\r\n } catch (error) {\r\n this.cancelRecognition(this.privRequestSession ? this.privRequestSession.sessionId : \"\", this.privRequestSession ? this.privRequestSession.requestId : \"\", CancellationReason.Error, CancellationErrorCode.RuntimeError, error as string);\r\n return null;\r\n }\r\n }\r\n\r\n // Takes an established websocket connection to the endpoint\r\n private configConnection(): Promise {\r\n if (this.isDisposed()) {\r\n return Promise.resolve(undefined);\r\n }\r\n if (this.privConnectionConfigPromise !== undefined) {\r\n return this.privConnectionConfigPromise.then((connection: IConnection): Promise => {\r\n if (connection.state() === ConnectionState.Disconnected) {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigPromise = undefined;\r\n return this.configConnection();\r\n }\r\n return this.privConnectionConfigPromise;\r\n }, (): Promise => {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigPromise = undefined;\r\n return this.configConnection();\r\n });\r\n }\r\n if (this.terminateMessageLoop) {\r\n return Promise.resolve(undefined);\r\n }\r\n\r\n this.privConnectionConfigPromise = this.connectImpl().then((connection: IConnection): IConnection => connection);\r\n\r\n return this.privConnectionConfigPromise;\r\n }\r\n\r\n private getTranslations(serviceResultTranslations: ITranslationResponsePayload[]): Translations {\r\n let translations: Translations;\r\n\r\n if (undefined !== serviceResultTranslations) {\r\n translations = new Translations();\r\n for (const translation of serviceResultTranslations) {\r\n translations.set(translation.lang, translation.translation);\r\n }\r\n }\r\n\r\n return translations;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n RestConfigBase,\r\n WebsocketConnection,\r\n} from \"../../common.browser/Exports.js\";\r\nimport {\r\n IConnection,\r\n IStringDictionary,\r\n} from \"../../common/Exports.js\";\r\nimport { StringUtils } from \"../../common/StringUtils.js\";\r\nimport { Contracts } from \"../../sdk/Contracts.js\";\r\nimport {\r\n PropertyId\r\n} from \"../../sdk/Exports.js\";\r\nimport {\r\n ConversationImpl\r\n} from \"../../sdk/Transcription/Conversation.js\";\r\nimport { HeaderNames } from \"../HeaderNames.js\";\r\nimport { QueryParameterNames } from \"../QueryParameterNames.js\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./../ConnectionFactoryBase.js\";\r\nimport {\r\n AuthInfo,\r\n RecognizerConfig,\r\n TranscriberConnectionFactory,\r\n TranslationConnectionFactory,\r\n WebsocketMessageFormatter,\r\n} from \"./../Exports.js\";\r\n\r\n/**\r\n * Connection factory for the conversation translator. Handles connecting to the regular translator endpoint,\r\n * as well as the virtual microphone array transcription endpoint\r\n */\r\nexport class ConversationTranslatorConnectionFactory extends ConnectionFactoryBase {\r\n\r\n private static readonly CTS_VIRT_MIC_PATH: string = \"/speech/recognition/dynamicaudio\";\r\n\r\n private privConvGetter: () => ConversationImpl;\r\n\r\n public constructor(convGetter: () => ConversationImpl) {\r\n super();\r\n\r\n Contracts.throwIfNullOrUndefined(convGetter, \"convGetter\");\r\n this.privConvGetter = convGetter;\r\n }\r\n\r\n public create(config: RecognizerConfig, authInfo: AuthInfo, connectionId?: string): IConnection {\r\n const isVirtMicArrayEndpoint = config.parameters.getProperty(\"ConversationTranslator_MultiChannelAudio\", \"\").toUpperCase() === \"TRUE\";\r\n\r\n const convInfo = this.privConvGetter().room;\r\n const region = convInfo.cognitiveSpeechRegion || config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region, \"\");\r\n\r\n const replacementValues: IStringDictionary = {\r\n hostSuffix: ConnectionFactoryBase.getHostSuffix(region),\r\n path: ConversationTranslatorConnectionFactory.CTS_VIRT_MIC_PATH,\r\n region: encodeURIComponent(region)\r\n };\r\n replacementValues[QueryParameterNames.Language] = encodeURIComponent(config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, \"\"));\r\n replacementValues[QueryParameterNames.CtsMeetingId] = encodeURIComponent(convInfo.roomId);\r\n replacementValues[QueryParameterNames.CtsDeviceId] = encodeURIComponent(convInfo.participantId);\r\n replacementValues[QueryParameterNames.CtsIsParticipant] = convInfo.isHost ? \"\" : (\"&\" + QueryParameterNames.CtsIsParticipant);\r\n\r\n let endpointUrl: string = \"\";\r\n const queryParams: IStringDictionary = {};\r\n const headers: IStringDictionary = {};\r\n\r\n if (isVirtMicArrayEndpoint) {\r\n // connecting to the conversation transcription virtual microphone array endpoint\r\n endpointUrl = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint);\r\n if (!endpointUrl) {\r\n const hostName = config.parameters.getProperty(\r\n PropertyId.SpeechServiceConnection_Host,\r\n \"transcribe.{region}.cts.speech{hostSuffix}\");\r\n\r\n endpointUrl = \"wss://\" + hostName + \"{path}\";\r\n }\r\n\r\n // because the region can change during a session, we support being passed a format string which we can then\r\n // replace with the correct information.\r\n endpointUrl = StringUtils.formatString(endpointUrl, replacementValues);\r\n\r\n const parsedUrl = new URL(endpointUrl);\r\n parsedUrl.searchParams.forEach((val: string, key: string): void => {\r\n queryParams[key] = val;\r\n });\r\n\r\n const connFactory = new TranscriberConnectionFactory();\r\n connFactory.setQueryParams(queryParams, config, endpointUrl);\r\n\r\n // Some query parameters are required for the CTS endpoint, let's explicity set them here\r\n queryParams[QueryParameterNames.CtsMeetingId] = replacementValues[QueryParameterNames.CtsMeetingId];\r\n queryParams[QueryParameterNames.CtsDeviceId] = replacementValues[QueryParameterNames.CtsDeviceId];\r\n if (!convInfo.isHost) {\r\n queryParams[QueryParameterNames.CtsIsParticipant] = \"\"; // this doesn't have a value so set to an empty string\r\n }\r\n\r\n if (!(QueryParameterNames.Format in queryParams)) {\r\n queryParams[QueryParameterNames.Format] = \"simple\";\r\n }\r\n\r\n parsedUrl.searchParams.forEach((val: string, key: string): void => {\r\n parsedUrl.searchParams.set(key, queryParams[key]);\r\n delete queryParams[key];\r\n });\r\n\r\n endpointUrl = parsedUrl.toString();\r\n\r\n } else {\r\n // connecting to regular translation endpoint\r\n const connFactory = new TranslationConnectionFactory();\r\n\r\n endpointUrl = connFactory.getEndpointUrl(config, true);\r\n endpointUrl = StringUtils.formatString(endpointUrl, replacementValues);\r\n\r\n connFactory.setQueryParams(queryParams, config, endpointUrl);\r\n }\r\n\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n headers[RestConfigBase.configParams.token] = convInfo.token;\r\n if (!!authInfo.token) {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n\r\n const enableCompression = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"\").toUpperCase() === \"TRUE\";\r\n return new WebsocketConnection(endpointUrl, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n/* eslint-disable max-classes-per-file */\r\nimport { ConversationTranslationResult, SessionEventArgs } from \"../../sdk/Exports.js\";\r\nimport { IInternalParticipant } from \"./ConversationTranslatorInterfaces.js\";\r\n\r\nexport class MuteAllEventArgs extends SessionEventArgs {\r\n private privIsMuted: boolean;\r\n\r\n public constructor(isMuted: boolean, sessionId?: string) {\r\n super(sessionId);\r\n\r\n this.privIsMuted = isMuted;\r\n }\r\n\r\n public get isMuted(): boolean {\r\n return this.privIsMuted;\r\n }\r\n}\r\n\r\nexport class LockRoomEventArgs extends SessionEventArgs {\r\n private privIsLocked: boolean;\r\n\r\n public constructor(isLocked: boolean, sessionId?: string) {\r\n super(sessionId);\r\n\r\n this.privIsLocked = isLocked;\r\n }\r\n\r\n public get isMuted(): boolean {\r\n return this.privIsLocked;\r\n }\r\n}\r\n\r\nexport class ParticipantEventArgs extends SessionEventArgs {\r\n private privParticipant: IInternalParticipant;\r\n\r\n public constructor(participant: IInternalParticipant, sessionId?: string) {\r\n super(sessionId);\r\n this.privParticipant = participant;\r\n }\r\n\r\n public get participant(): IInternalParticipant {\r\n return this.privParticipant;\r\n }\r\n}\r\n\r\nexport class ParticipantAttributeEventArgs extends SessionEventArgs {\r\n private privValue: boolean | number | string | string[];\r\n private privKey: string;\r\n private privParticipantId: string;\r\n\r\n public constructor(participantId: string, key: string, value: boolean | number | string | string[], sessionId?: string) {\r\n super(sessionId);\r\n\r\n this.privKey = key;\r\n this.privValue = value;\r\n this.privParticipantId = participantId;\r\n }\r\n\r\n public get value(): boolean | number | string | string[] {\r\n return this.privValue;\r\n }\r\n\r\n public get key(): string {\r\n return this.privKey;\r\n }\r\n public get id(): string {\r\n return this.privParticipantId;\r\n }\r\n}\r\n\r\nexport class ParticipantsListEventArgs extends SessionEventArgs {\r\n\r\n private privRoomId: string;\r\n private privSessionToken: string;\r\n private privTranslateTo: string[];\r\n private privProfanityFilter: string;\r\n private privRoomProfanityFilter: string;\r\n private privIsRoomLocked: boolean;\r\n private privIsMuteAll: boolean;\r\n private privParticipants: IInternalParticipant[];\r\n\r\n public constructor(conversationId: string, token: string, translateTo: string[], profanityFilter: string,\r\n roomProfanityFilter: string, isRoomLocked: boolean, isMuteAll: boolean, participants: IInternalParticipant[], sessionId?: string) {\r\n super(sessionId);\r\n this.privRoomId = conversationId;\r\n this.privSessionToken = token;\r\n this.privTranslateTo = translateTo;\r\n this.privProfanityFilter = profanityFilter;\r\n this.privRoomProfanityFilter = roomProfanityFilter;\r\n this.privIsRoomLocked = isRoomLocked;\r\n this.privIsRoomLocked = isMuteAll;\r\n this.privParticipants = participants;\r\n }\r\n public get sessionToken(): string {\r\n return this.privSessionToken;\r\n }\r\n\r\n public get conversationId(): string {\r\n return this.privRoomId;\r\n }\r\n\r\n public get translateTo(): string[] {\r\n return this.privTranslateTo;\r\n }\r\n\r\n public get profanityFilter(): string {\r\n return this.privProfanityFilter;\r\n }\r\n\r\n public get roomProfanityFilter(): string {\r\n return this.privRoomProfanityFilter;\r\n }\r\n\r\n public get isRoomLocked(): boolean {\r\n return this.privIsRoomLocked;\r\n }\r\n\r\n public get isMuteAll(): boolean {\r\n return this.privIsMuteAll;\r\n }\r\n\r\n public get participants(): IInternalParticipant[] {\r\n return this.privParticipants;\r\n }\r\n}\r\n\r\nexport class ConversationReceivedTranslationEventArgs {\r\n private privPayload: ConversationTranslationResult;\r\n private privCommand: string;\r\n private privSessionId: string;\r\n\r\n public constructor(command: string, payload: ConversationTranslationResult, sessionId?: string) {\r\n this.privPayload = payload;\r\n this.privCommand = command;\r\n this.privSessionId = sessionId;\r\n }\r\n\r\n public get payload(): ConversationTranslationResult {\r\n return this.privPayload;\r\n }\r\n\r\n public get command(): string {\r\n return this.privCommand;\r\n }\r\n\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ConnectionEventArgs,\r\n ConversationExpirationEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n SessionEventArgs,\r\n } from \"../../sdk/Exports.js\";\r\n// import { ConversationClient } from \"./ConversationConnection\";\r\nimport {\r\n ConversationReceivedTranslationEventArgs,\r\n LockRoomEventArgs,\r\n MuteAllEventArgs,\r\n ParticipantAttributeEventArgs,\r\n ParticipantEventArgs,\r\n ParticipantsListEventArgs } from \"./ConversationTranslatorEventArgs.js\";\r\n\r\n/**\r\n * Internal conversation data\r\n */\r\nexport interface IInternalConversation {\r\n // the token to use for connecting to the Speech Service\r\n cognitiveSpeechAuthToken: string;\r\n // the region to use for connecting to the Speech Service\r\n cognitiveSpeechRegion: string;\r\n // the unique id of the user who started or joined the Conversation\r\n participantId: string;\r\n // a descriptive name for the Conversation\r\n name: string;\r\n // a descriptive name for the Conversation\r\n description: string;\r\n // the speech model ID for custom speech\r\n speechModel: string;\r\n // represents the level of speech supported in the Conversation (0: everyone can speak, 2: only host can speak, 3: no-one can speak)\r\n modalities: number;\r\n // ?\r\n isApproved: boolean;\r\n // the mute flag has been set at conversation level and only the host can speak\r\n isMuted: boolean;\r\n // the 5 character conversation Id\r\n roomId: string;\r\n // the hex color string to represent a user. If there are many users this hex color may be reused (?).\r\n avatar: string;\r\n // the token to use when calling the websocket\r\n token: string;\r\n // used for tracking the session and help with troubleshooting problems in the logs\r\n correlationId: string;\r\n // extracted from the headers\r\n requestId: string;\r\n // set programmatically\r\n isHost: boolean;\r\n}\r\n\r\n/**\r\n * The user who is participating in the conversation.\r\n */\r\nexport interface IInternalParticipant {\r\n avatar?: string;\r\n displayName?: string;\r\n id?: string;\r\n isHost?: boolean;\r\n isMuted?: boolean;\r\n isUsingTts?: boolean;\r\n profanity?: boolean;\r\n preferredLanguage?: string;\r\n translateToLanguages?: string[];\r\n voice?: string;\r\n}\r\n\r\n/** Users participating in the conversation */\r\nexport class InternalParticipants {\r\n\r\n public constructor(public participants: IInternalParticipant[] = [], public meId?: string) {\r\n\r\n }\r\n\r\n /**\r\n * Add or update a participant\r\n * @param value\r\n */\r\n public addOrUpdateParticipant(value: IInternalParticipant): IInternalParticipant {\r\n if (value === undefined) {\r\n return;\r\n }\r\n\r\n const exists: number = this.getParticipantIndex(value.id);\r\n if (exists > -1) {\r\n this.participants.splice(exists, 1, value);\r\n } else {\r\n this.participants.push(value);\r\n }\r\n\r\n // ensure it was added ok\r\n return this.getParticipant(value.id);\r\n }\r\n\r\n /**\r\n * Find the participant's position in the participants list.\r\n * @param id\r\n */\r\n public getParticipantIndex(id: string): number {\r\n return this.participants.findIndex((p: IInternalParticipant): boolean => p.id === id);\r\n }\r\n\r\n /**\r\n * Find the participant by id.\r\n * @param id\r\n */\r\n public getParticipant(id: string): IInternalParticipant {\r\n return this.participants.find((p: IInternalParticipant): boolean => p.id === id);\r\n }\r\n\r\n /**\r\n * Remove a participant from the participants list.\r\n */\r\n public deleteParticipant(id: string): void {\r\n this.participants = this.participants.filter((p: IInternalParticipant): boolean => p.id !== id);\r\n }\r\n\r\n /**\r\n * Helper to return the conversation host.\r\n */\r\n public get host(): IInternalParticipant {\r\n return this.participants.find((p: IInternalParticipant): boolean => p.isHost === true );\r\n }\r\n\r\n /**\r\n * Helper to return the current user.\r\n */\r\n public get me(): IInternalParticipant {\r\n return this.getParticipant(this.meId);\r\n }\r\n}\r\n\r\n/**\r\n * Recognizer for handling Conversation Translator websocket messages\r\n */\r\nexport interface ConversationRecognizer {\r\n isDisposed(): boolean;\r\n sendRequest: (command: string, cb?: () => void, err?: (e: string) => void) => void;\r\n cancelSpeech?: () => Promise;\r\n close?: () => Promise;\r\n conversationExpiration?: (sender: ConversationRecognizer, event: ConversationExpirationEventArgs) => void;\r\n connected?: (e: ConnectionEventArgs) => void;\r\n disconnected?: (e: ConnectionEventArgs) => void;\r\n canceled?: (sender: ConversationRecognizer, event: ConversationTranslationCanceledEventArgs) => void;\r\n connectionOpened?: (sender: ConversationRecognizer, event: SessionEventArgs) => void;\r\n connectionClosed?: (sender: ConversationRecognizer, event: SessionEventArgs) => void;\r\n participantsListReceived?: (sender: ConversationRecognizer, event: ParticipantsListEventArgs) => void;\r\n translationReceived?: (sender: ConversationRecognizer, event: ConversationReceivedTranslationEventArgs) => void;\r\n lockRoomCommandReceived?: (sender: ConversationRecognizer, event: LockRoomEventArgs) => void;\r\n muteAllCommandReceived?: (sender: ConversationRecognizer, event: MuteAllEventArgs) => void;\r\n participantJoinCommandReceived?: (sender: ConversationRecognizer, event: ParticipantEventArgs) => void;\r\n participantLeaveCommandReceived?: (sender: ConversationRecognizer, event: ParticipantEventArgs) => void;\r\n participantUpdateCommandReceived?: (sender: ConversationRecognizer, event: ParticipantAttributeEventArgs) => void;\r\n connect?: (token: string, cb?: () => void, err?: (e: string) => void) => void;\r\n}\r\n\r\n/**\r\n * Error message returned from the Conversation Translator websocket\r\n */\r\nexport interface IConversationResponseErrorMessage {\r\n code: string;\r\n message: string;\r\n}\r\n\r\n/**\r\n * Error returned from the Conversation Translator websocket\r\n */\r\nexport interface IConversationResponseError {\r\n error: IConversationResponseErrorMessage;\r\n}\r\n\r\n/**\r\n * Base message command\r\n */\r\nexport interface IClientMessage {\r\n type: any;\r\n}\r\n\r\n/**\r\n * Command message\r\n */\r\nexport interface ICommandMessage extends IClientMessage {\r\n command?: string;\r\n}\r\n\r\n/**\r\n * Text message command\r\n */\r\nexport interface IInstantMessageCommand extends ICommandMessage {\r\n roomId: string;\r\n nickname?: string;\r\n participantId: string;\r\n text: string;\r\n}\r\n\r\n/**\r\n * Lock command\r\n */\r\nexport interface ILockConversationCommand extends ICommandMessage {\r\n id?: string; // incoming ws\r\n nickname?: string; // incoming ws\r\n participantId: string; // host - incoming ws\r\n roomid: string;\r\n value: boolean;\r\n}\r\n\r\n/**\r\n * Mute all command\r\n */\r\nexport interface IMuteAllCommand extends ICommandMessage {\r\n roomid: string;\r\n nickname?: string; // incoming ws\r\n participantId: string; // host\r\n value: boolean;\r\n id?: string; // incoming ws\r\n}\r\n\r\n/**\r\n * Mute participant command\r\n */\r\nexport interface IMuteCommand extends ICommandMessage {\r\n roomid: string;\r\n nickname?: string;\r\n participantId: string; // participant\r\n value: boolean;\r\n id?: string; // incoming ws\r\n}\r\n\r\n/**\r\n * Remove participant command\r\n */\r\nexport interface IEjectParticipantCommand extends ICommandMessage {\r\n roomid: string;\r\n participantId: string; // participant\r\n}\r\n\r\n/**\r\n * Change nickname command\r\n */\r\nexport interface IChangeNicknameCommand extends ICommandMessage {\r\n roomid: string;\r\n participantId: string;\r\n nickname: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * List of command message types\r\n */\r\nexport const ConversationTranslatorMessageTypes = {\r\n command: \"command\",\r\n final: \"final\",\r\n info: \"info\",\r\n instantMessage: \"instant_message\",\r\n keepAlive: \"keep_alive\",\r\n partial: \"partial\",\r\n participantCommand: \"participant_command\",\r\n translatedMessage: \"translated_message\"\r\n};\r\n\r\n/**\r\n * List of command types\r\n */\r\nexport const ConversationTranslatorCommandTypes = {\r\n changeNickname: \"ChangeNickname\",\r\n disconnectSession: \"DisconnectSession\",\r\n ejectParticipant: \"EjectParticipant\",\r\n instant_message: \"instant_message\",\r\n joinSession: \"JoinSession\",\r\n leaveSession: \"LeaveSession\",\r\n participantList: \"ParticipantList\",\r\n roomExpirationWarning: \"RoomExpirationWarning\",\r\n setLockState: \"SetLockState\",\r\n setMute: \"SetMute\",\r\n setMuteAll: \"SetMuteAll\",\r\n setProfanityFiltering: \"SetProfanityFiltering\",\r\n setTranslateToLanguages: \"SetTranslateToLanguages\",\r\n setUseTTS: \"SetUseTTS\"\r\n};\r\n\r\n/**\r\n * HTTP response helper\r\n */\r\nexport interface IResponse {\r\n ok: boolean;\r\n status: number;\r\n statusText: string;\r\n data: string;\r\n json: () => T;\r\n headers: string;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig\r\n} from \"../../common.speech/Exports.js\";\r\nimport {\r\n BackgroundEvent,\r\n Events,\r\n Timeout,\r\n} from \"../../common/Exports.js\";\r\nimport { AudioConfigImpl } from \"../../sdk/Audio/AudioConfig.js\";\r\nimport { Contracts } from \"../../sdk/Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n Connection,\r\n ConnectionEventArgs,\r\n ConversationExpirationEventArgs,\r\n ConversationParticipantsChangedEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n SessionEventArgs,\r\n SpeechTranslationConfig\r\n} from \"../../sdk/Exports.js\";\r\nimport { SpeechTranslationConfigImpl } from \"../../sdk/SpeechTranslationConfig.js\";\r\nimport { ConversationImpl } from \"../../sdk/Transcription/Conversation.js\";\r\nimport { Callback, IConversation } from \"../../sdk/Transcription/IConversation.js\";\r\nimport { ConversationConnectionFactory } from \"./ConversationConnectionFactory.js\";\r\nimport { ConversationServiceAdapter } from \"./ConversationServiceAdapter.js\";\r\nimport {\r\n ConversationReceivedTranslationEventArgs,\r\n LockRoomEventArgs,\r\n MuteAllEventArgs,\r\n ParticipantAttributeEventArgs,\r\n ParticipantEventArgs,\r\n ParticipantsListEventArgs\r\n} from \"./ConversationTranslatorEventArgs.js\";\r\nimport {\r\n ConversationRecognizer,\r\n} from \"./ConversationTranslatorInterfaces.js\";\r\n\r\nexport class ConversationRecognizerFactory {\r\n public static fromConfig(conversation: IConversation, speechConfig: SpeechTranslationConfig, audioConfig?: AudioConfig): ConversationRecognizer {\r\n return new ConversationTranslatorRecognizer(conversation, speechConfig, audioConfig);\r\n }\r\n}\r\n\r\n/**\r\n * Sends messages to the Conversation Translator websocket and listens for incoming events containing websocket messages.\r\n * Based off the recognizers in the SDK folder.\r\n */\r\nexport class ConversationTranslatorRecognizer extends Recognizer implements ConversationRecognizer {\r\n\r\n private privIsDisposed: boolean;\r\n private privSpeechRecognitionLanguage: string;\r\n private privConnection: Connection;\r\n private privConversation: ConversationImpl;\r\n private privTimeoutToken: any;\r\n private privSetTimeout: (cb: () => void, delay: number) => number;\r\n private privClearTimeout: (id: number) => void;\r\n\r\n public constructor(conversation: IConversation, speechConfig: SpeechTranslationConfig, audioConfig?: AudioConfig) {\r\n const serviceConfigImpl = speechConfig as SpeechTranslationConfigImpl;\r\n Contracts.throwIfNull(serviceConfigImpl, \"speechConfig\");\r\n const conversationImpl = conversation as ConversationImpl;\r\n Contracts.throwIfNull(conversationImpl, \"conversationImpl\");\r\n\r\n super(audioConfig, serviceConfigImpl.properties, new ConversationConnectionFactory());\r\n\r\n this.privConversation = conversationImpl;\r\n this.privIsDisposed = false;\r\n this.privProperties = serviceConfigImpl.properties.clone();\r\n this.privConnection = Connection.fromRecognizer(this);\r\n const webWorkerLoadType: string = this.privProperties.getProperty(PropertyId.WebWorkerLoadType, \"on\").toLowerCase();\r\n if (webWorkerLoadType === \"on\" && typeof (Blob) !== \"undefined\" && typeof (Worker) !== \"undefined\") {\r\n this.privSetTimeout = Timeout.setTimeout;\r\n this.privClearTimeout = Timeout.clearTimeout;\r\n } else {\r\n if (typeof window !== \"undefined\") {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n this.privSetTimeout = window.setTimeout.bind(window);\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n this.privClearTimeout = window.clearTimeout.bind(window);\r\n } else {\r\n this.privSetTimeout = setTimeout;\r\n this.privClearTimeout = clearTimeout;\r\n }\r\n }\r\n }\r\n\r\n public canceled: (sender: ConversationRecognizer, event: ConversationTranslationCanceledEventArgs) => void;\r\n public conversationExpiration: (sender: ConversationRecognizer, event: ConversationExpirationEventArgs) => void;\r\n public lockRoomCommandReceived: (sender: ConversationRecognizer, event: LockRoomEventArgs) => void;\r\n public muteAllCommandReceived: (sender: ConversationRecognizer, event: MuteAllEventArgs) => void;\r\n public participantJoinCommandReceived: (sender: ConversationRecognizer, event: ParticipantEventArgs) => void;\r\n public participantLeaveCommandReceived: (sender: ConversationRecognizer, event: ParticipantEventArgs) => void;\r\n public participantUpdateCommandReceived: (sender: ConversationRecognizer, event: ParticipantAttributeEventArgs) => void;\r\n public connectionOpened: (sender: ConversationRecognizer, event: SessionEventArgs) => void;\r\n public connectionClosed: (sender: ConversationRecognizer, event: SessionEventArgs) => void;\r\n public translationReceived: (sender: ConversationRecognizer, event: ConversationReceivedTranslationEventArgs) => void;\r\n public participantsListReceived: (sender: ConversationRecognizer, event: ParticipantsListEventArgs) => void;\r\n public participantsChanged: (sender: ConversationRecognizer, event: ConversationParticipantsChangedEventArgs) => void;\r\n\r\n public set connected(cb: (e: ConnectionEventArgs) => void) {\r\n this.privConnection.connected = cb;\r\n }\r\n\r\n public set disconnected(cb: (e: ConnectionEventArgs) => void) {\r\n this.privConnection.disconnected = cb;\r\n }\r\n\r\n /**\r\n * Return the speech language used by the recognizer\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n return this.privSpeechRecognitionLanguage;\r\n }\r\n\r\n /**\r\n * Return the properties for the recognizer\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n /**\r\n * Connect to the recognizer\r\n * @param token\r\n */\r\n public connect(token: string, cb?: () => void, err?: (e: string) => void): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.privReco.conversationTranslatorToken = token;\r\n this.resetConversationTimeout();\r\n this.privReco.connectAsync(cb, err);\r\n } catch (error) {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Disconnect from the recognizer\r\n */\r\n public disconnect(cb?: () => void, err?: (e: string) => void): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n if (this.privTimeoutToken !== undefined) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n this.privClearTimeout(this.privTimeoutToken);\r\n }\r\n this.privReco.disconnect().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n } catch (error) {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n // Destroy the recognizer.\r\n this.dispose(true).catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Send the mute all participants command to the websocket\r\n * @param conversationId\r\n * @param participantId\r\n * @param isMuted\r\n */\r\n public sendRequest(command: string, cb?: () => void, err?: (e: string) => void): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n this.sendMessage(command, cb, err);\r\n } catch (error) {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n\r\n // Destroy the recognizer.\r\n this.dispose(true).catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Handle update of service auth token (#694)\r\n */\r\n public onToken(token: IAuthentication): void {\r\n this.privConversation.onToken(token);\r\n }\r\n\r\n /**\r\n * Close and dispose the recognizer\r\n */\r\n public async close(): Promise {\r\n if (!this.privIsDisposed) {\r\n if (!!this.privConnection) {\r\n this.privConnection.closeConnection();\r\n this.privConnection.close();\r\n }\r\n this.privConnection = undefined;\r\n await this.dispose(true);\r\n }\r\n }\r\n\r\n /**\r\n * Dispose the recognizer\r\n * @param disposing\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privIsDisposed) {\r\n return;\r\n }\r\n if (disposing) {\r\n if (this.privTimeoutToken !== undefined) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n this.privClearTimeout(this.privTimeoutToken);\r\n }\r\n this.privIsDisposed = true;\r\n if (!!this.privConnection) {\r\n this.privConnection.closeConnection();\r\n this.privConnection.close();\r\n this.privConnection = undefined;\r\n }\r\n await super.dispose(disposing);\r\n }\r\n }\r\n\r\n /**\r\n * Create the config for the recognizer\r\n * @param speechConfig\r\n */\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n /**\r\n * Create the service recognizer.\r\n * The audio source is redundnant here but is required by the implementation.\r\n * @param authentication\r\n * @param connectionFactory\r\n * @param audioConfig\r\n * @param recognizerConfig\r\n */\r\n protected createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n\r\n const audioSource: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n\r\n return new ConversationServiceAdapter(authentication, connectionFactory, audioSource, recognizerConfig, this);\r\n }\r\n\r\n private sendMessage(msg: string, cb?: Callback, err?: Callback): void {\r\n const withAsync = this.privReco as ConversationServiceAdapter;\r\n const PromiseToEmptyCallback = (promise: Promise, cb?: Callback, err?: Callback): void => {\r\n if (promise !== undefined) {\r\n promise.then((): void => {\r\n try {\r\n if (!!cb) {\r\n cb();\r\n }\r\n } catch (e) {\r\n if (!!err) {\r\n err(`'Unhandled error on promise callback: ${e as string}'`);\r\n }\r\n }\r\n }, (reason: any): void => {\r\n try {\r\n if (!!err) {\r\n err(reason);\r\n }\r\n // eslint-disable-next-line no-empty\r\n } catch (error) { }\r\n });\r\n } else {\r\n if (!!err) {\r\n err(\"Null promise\");\r\n }\r\n }\r\n };\r\n\r\n PromiseToEmptyCallback(withAsync.sendMessageAsync(msg), cb, err);\r\n this.resetConversationTimeout();\r\n }\r\n\r\n private resetConversationTimeout(): void {\r\n if (this.privTimeoutToken !== undefined) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n this.privClearTimeout(this.privTimeoutToken);\r\n }\r\n\r\n this.privTimeoutToken = this.privSetTimeout((): void => {\r\n this.sendRequest(this.privConversation.getKeepAlive());\r\n }, 60000);\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ConnectionMessage,\r\n Deferred,\r\n IWebsocketMessageFormatter,\r\n MessageType,\r\n RawWebsocketMessage,\r\n} from \"../../common/Exports.js\";\r\nimport { ConversationConnectionMessage } from \"./ConversationConnectionMessage.js\";\r\n\r\n/**\r\n * Based off WebsocketMessageFormatter. The messages for Conversation Translator have some variations from the Speech messages.\r\n */\r\nexport class ConversationWebsocketMessageFormatter implements IWebsocketMessageFormatter {\r\n\r\n /**\r\n * Format incoming messages: text (speech partial/final, IM) or binary (tts)\r\n */\r\n public toConnectionMessage(message: RawWebsocketMessage): Promise {\r\n const deferral = new Deferred();\r\n\r\n try {\r\n if (message.messageType === MessageType.Text) {\r\n const incomingMessage: ConversationConnectionMessage = new ConversationConnectionMessage(message.messageType, message.textContent, {}, message.id);\r\n deferral.resolve(incomingMessage);\r\n } else if (message.messageType === MessageType.Binary) {\r\n deferral.resolve(new ConversationConnectionMessage(message.messageType, message.binaryContent, undefined, message.id));\r\n }\r\n } catch (e) {\r\n deferral.reject(`Error formatting the message. Error: ${e as string}`);\r\n }\r\n\r\n return deferral.promise;\r\n }\r\n\r\n /**\r\n * Format outgoing messages: text (commands or IM)\r\n */\r\n public fromConnectionMessage(message: ConnectionMessage): Promise {\r\n\r\n const deferral = new Deferred();\r\n\r\n try {\r\n if (message.messageType === MessageType.Text) {\r\n const payload = `${message.textBody ? message.textBody : \"\"}`;\r\n deferral.resolve(new RawWebsocketMessage(MessageType.Text, payload, message.id));\r\n }\r\n } catch (e) {\r\n deferral.reject(`Error formatting the message. ${e as string}`);\r\n }\r\n\r\n return deferral.promise;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport { ConversationManager } from \"./ConversationManager.js\";\r\nexport { ConversationConnectionConfig } from \"./ConversationConnectionConfig.js\";\r\nexport { ConversationRecognizerFactory } from \"./ConversationTranslatorRecognizer.js\";\r\nexport { TranscriberRecognizer } from \"./TranscriberRecognizer.js\";\r\nexport {\r\n ConversationReceivedTranslationEventArgs,\r\n LockRoomEventArgs,\r\n MuteAllEventArgs,\r\n ParticipantAttributeEventArgs,\r\n ParticipantEventArgs,\r\n ParticipantsListEventArgs } from \"./ConversationTranslatorEventArgs.js\";\r\nexport {\r\n ConversationRecognizer,\r\n ConversationTranslatorCommandTypes,\r\n ConversationTranslatorMessageTypes,\r\n IInternalConversation,\r\n IInternalParticipant,\r\n InternalParticipants} from \"./ConversationTranslatorInterfaces.js\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the payload for incoming websocket commands\r\n */\r\nexport interface ICommandResponsePayload {\r\n type: string;\r\n command?: string;\r\n id?: string; // incoming ws\r\n nickname?: string; // incoming ws\r\n participantId?: string;\r\n roomid?: string;\r\n value: boolean | number | string;\r\n token?: string;\r\n}\r\n\r\nconst parseCommandResponse = (json: string): ICommandResponsePayload => JSON.parse(json) as ICommandResponsePayload;\r\n\r\nexport class CommandResponsePayload implements ICommandResponsePayload {\r\n private privCommandResponse: ICommandResponsePayload;\r\n\r\n public constructor(json: string) {\r\n this.privCommandResponse = parseCommandResponse(json);\r\n }\r\n\r\n public get type(): string {\r\n return this.privCommandResponse.type;\r\n }\r\n public get command(): string {\r\n return this.privCommandResponse.command;\r\n }\r\n public get id(): string {\r\n return this.privCommandResponse.id;\r\n }\r\n public get nickname(): string {\r\n return this.privCommandResponse.nickname;\r\n }\r\n public get participantId(): string {\r\n return this.privCommandResponse.participantId;\r\n }\r\n public get roomid(): string {\r\n return this.privCommandResponse.roomid;\r\n }\r\n public get value(): boolean | number | string {\r\n return this.privCommandResponse.value;\r\n }\r\n public get token(): string {\r\n return this.privCommandResponse.token;\r\n }\r\n\r\n public static fromJSON(json: string): CommandResponsePayload {\r\n return new CommandResponsePayload(json);\r\n }\r\n\r\n}\r\n","export { CommandResponsePayload } from \"./CommandResponsePayload.js\";\r\nexport { IParticipantsListPayloadResponse, IParticipantPayloadResponse, ParticipantsListPayloadResponse, ParticipantPayloadResponse } from \"./ParticipantResponsePayload.js\";\r\nexport { ITranslationResponsePayload, SpeechResponsePayload, TextResponsePayload } from \"./TranslationResponsePayload.js\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n/**\r\n * Defines the payload for incoming list of participants\r\n */\r\nexport interface IParticipantsListPayloadResponse {\r\n roomid: string;\r\n id: string;\r\n command: string;\r\n participants: IParticipantPayloadResponse[];\r\n token: string;\r\n translateTo: string[];\r\n profanityFilter: string;\r\n roomProfanityFilter: string;\r\n roomLocked: boolean;\r\n muteAll: boolean;\r\n type: string;\r\n}\r\n\r\n/**\r\n * Defines the payload for incoming participant\r\n */\r\nexport interface IParticipantPayloadResponse {\r\n nickname: string;\r\n locale: string;\r\n usetts: boolean;\r\n ismuted: boolean;\r\n ishost: boolean;\r\n participantId: string;\r\n avatar?: string;\r\n}\r\n\r\nconst parseListResponse = (json: string): IParticipantsListPayloadResponse => JSON.parse(json) as IParticipantsListPayloadResponse;\r\nconst parseParticipantResponse = (json: string): IParticipantPayloadResponse => JSON.parse(json) as IParticipantPayloadResponse;\r\n\r\nexport class ParticipantsListPayloadResponse implements IParticipantsListPayloadResponse {\r\n private privParticipantsPayloadResponse: IParticipantsListPayloadResponse;\r\n\r\n private constructor(json: string) {\r\n this.privParticipantsPayloadResponse = parseListResponse(json);\r\n }\r\n\r\n public get roomid(): string {\r\n return this.privParticipantsPayloadResponse.roomid;\r\n }\r\n\r\n public get id(): string {\r\n return this.privParticipantsPayloadResponse.id;\r\n }\r\n\r\n public get command(): string {\r\n return this.privParticipantsPayloadResponse.command;\r\n }\r\n\r\n public get participants(): IParticipantPayloadResponse[] {\r\n return this.privParticipantsPayloadResponse.participants;\r\n }\r\n\r\n public get token(): string {\r\n return this.privParticipantsPayloadResponse.token;\r\n }\r\n\r\n public get translateTo(): string[] {\r\n return this.privParticipantsPayloadResponse.translateTo;\r\n }\r\n\r\n public get profanityFilter(): string {\r\n return this.privParticipantsPayloadResponse.profanityFilter;\r\n }\r\n\r\n public get roomProfanityFilter(): string {\r\n return this.privParticipantsPayloadResponse.roomProfanityFilter;\r\n }\r\n\r\n public get roomLocked(): boolean {\r\n return this.privParticipantsPayloadResponse.roomLocked;\r\n }\r\n\r\n public get muteAll(): boolean {\r\n return this.privParticipantsPayloadResponse.muteAll;\r\n }\r\n\r\n public get type(): string {\r\n return this.privParticipantsPayloadResponse.type;\r\n }\r\n\r\n public static fromJSON(json: string): ParticipantsListPayloadResponse {\r\n return new ParticipantsListPayloadResponse(json);\r\n }\r\n\r\n}\r\n\r\nexport class ParticipantPayloadResponse implements IParticipantPayloadResponse {\r\n\r\n private privParticipantPayloadResponse: IParticipantPayloadResponse;\r\n\r\n private constructor(json: string) {\r\n this.privParticipantPayloadResponse = parseParticipantResponse(json);\r\n }\r\n\r\n public get nickname(): string {\r\n return this.privParticipantPayloadResponse.nickname;\r\n }\r\n\r\n public get locale(): string {\r\n return this.privParticipantPayloadResponse.locale;\r\n }\r\n\r\n public get usetts(): boolean {\r\n return this.privParticipantPayloadResponse.usetts;\r\n }\r\n\r\n public get ismuted(): boolean {\r\n return this.privParticipantPayloadResponse.ismuted;\r\n }\r\n\r\n public get ishost(): boolean {\r\n return this.privParticipantPayloadResponse.ishost;\r\n }\r\n\r\n public get participantId(): string {\r\n return this.privParticipantPayloadResponse.participantId;\r\n }\r\n\r\n public get avatar(): string {\r\n return this.privParticipantPayloadResponse.avatar;\r\n }\r\n\r\n public static fromJSON(json: string): ParticipantPayloadResponse {\r\n return new ParticipantPayloadResponse(json);\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n/**\r\n * Defines the payload for incoming translation messages\r\n */\r\nexport interface ITranslationResponsePayload {\r\n lang: string;\r\n translation: string;\r\n}\r\n\r\nexport interface ITranslationCommandMessage {\r\n translations: ITranslationResponsePayload[];\r\n id: string;\r\n language: string;\r\n nickname: string;\r\n participantId: string;\r\n roomid: string;\r\n timestamp: string;\r\n type: string;\r\n}\r\n\r\nexport interface ISpeechResponsePayload extends ITranslationCommandMessage {\r\n recognition: string;\r\n isFinal: boolean;\r\n}\r\n\r\nexport interface ITextResponsePayload extends ITranslationCommandMessage {\r\n originalText: string;\r\n}\r\n\r\nconst parseSpeechResponse = (json: string): ISpeechResponsePayload => JSON.parse(json) as ISpeechResponsePayload;\r\nconst parseTextResponse = (json: string): ITextResponsePayload => JSON.parse(json) as ITextResponsePayload;\r\n\r\nexport class SpeechResponsePayload implements ISpeechResponsePayload {\r\n\r\n private privSpeechResponse: ISpeechResponsePayload;\r\n\r\n private constructor(json: string) {\r\n this.privSpeechResponse = parseSpeechResponse(json);\r\n }\r\n\r\n public get recognition(): string {\r\n return this.privSpeechResponse.recognition;\r\n }\r\n\r\n public get translations(): ITranslationResponsePayload[] {\r\n return this.privSpeechResponse.translations;\r\n }\r\n\r\n public get id(): string {\r\n return this.privSpeechResponse.id;\r\n }\r\n\r\n public get language(): string {\r\n return this.privSpeechResponse.language;\r\n }\r\n\r\n public get nickname(): string {\r\n return this.privSpeechResponse.nickname;\r\n }\r\n\r\n public get participantId(): string {\r\n return this.privSpeechResponse.participantId;\r\n }\r\n\r\n public get roomid(): string {\r\n return this.privSpeechResponse.roomid;\r\n }\r\n\r\n public get timestamp(): string {\r\n return this.privSpeechResponse.timestamp;\r\n }\r\n\r\n public get type(): string {\r\n return this.privSpeechResponse.type;\r\n }\r\n\r\n public get isFinal(): boolean {\r\n return this.privSpeechResponse.type === \"final\";\r\n }\r\n\r\n public static fromJSON(json: string): SpeechResponsePayload {\r\n return new SpeechResponsePayload(json);\r\n }\r\n\r\n}\r\n\r\nexport class TextResponsePayload implements ITextResponsePayload {\r\n\r\n private privTextResponse: ITextResponsePayload;\r\n\r\n private constructor(json: string) {\r\n this.privTextResponse = parseTextResponse(json);\r\n }\r\n\r\n public get originalText(): string {\r\n return this.privTextResponse.originalText;\r\n }\r\n\r\n public get translations(): ITranslationResponsePayload[] {\r\n return this.privTextResponse.translations;\r\n }\r\n\r\n public get id(): string {\r\n return this.privTextResponse.id;\r\n }\r\n\r\n public get language(): string {\r\n return this.privTextResponse.language;\r\n }\r\n\r\n public get nickname(): string {\r\n return this.privTextResponse.nickname;\r\n }\r\n\r\n public get participantId(): string {\r\n return this.privTextResponse.participantId;\r\n }\r\n\r\n public get roomid(): string {\r\n return this.privTextResponse.roomid;\r\n }\r\n\r\n public get timestamp(): string {\r\n return this.privTextResponse.timestamp;\r\n }\r\n\r\n public get type(): string {\r\n return this.privTextResponse.type;\r\n }\r\n\r\n public static fromJSON(json: string): TextResponsePayload {\r\n return new TextResponsePayload(json);\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\nimport { marshalPromiseToCallbacks } from \"../../common/Exports.js\";\r\nimport { AudioConfigImpl } from \"../../sdk/Audio/AudioConfig.js\";\r\nimport { AudioStreamFormatImpl } from \"../../sdk/Audio/AudioStreamFormat.js\";\r\nimport { Contracts } from \"../../sdk/Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n CancellationEventArgs,\r\n Conversation,\r\n ConversationInfo,\r\n Meeting,\r\n MeetingInfo,\r\n MeetingTranscriber,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n SessionEventArgs,\r\n SpeechRecognitionEventArgs,\r\n SpeechTranslationConfig,\r\n SpeechTranslationConfigImpl,\r\n} from \"../../sdk/Exports.js\";\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig,\r\n TranscriberConnectionFactory,\r\n TranscriptionServiceRecognizer,\r\n} from \"../Exports.js\";\r\n\r\nexport class TranscriberRecognizer extends Recognizer {\r\n\r\n public recognizing: (sender: Recognizer, event: SpeechRecognitionEventArgs) => void;\r\n\r\n public recognized: (sender: Recognizer, event: SpeechRecognitionEventArgs) => void;\r\n\r\n public canceled: (sender: Recognizer, event: CancellationEventArgs) => void;\r\n\r\n private privDisposedRecognizer: boolean;\r\n private privConversation: Conversation;\r\n private privMeeting: Meeting;\r\n private isMeetingRecognizer: boolean;\r\n\r\n /**\r\n * TranscriberRecognizer constructor.\r\n * @constructor\r\n * @param {SpeechTranslationConfig} speechTranslationConfig - Non-audio configuration associated with the recognizer\r\n * @param {AudioConfig} audioConfig - An audio configuration associated with the recognizer\r\n */\r\n public constructor(speechTranslationConfig: SpeechTranslationConfig, audioConfig: AudioConfig) {\r\n const speechTranslationConfigImpl: SpeechTranslationConfigImpl = speechTranslationConfig as SpeechTranslationConfigImpl;\r\n Contracts.throwIfNull(speechTranslationConfigImpl, \"speechTranslationConfig\");\r\n\r\n const audioConfigImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n Contracts.throwIfNull(audioConfigImpl, \"audioConfigImpl\");\r\n\r\n Contracts.throwIfNullOrWhitespace(\r\n speechTranslationConfigImpl.speechRecognitionLanguage,\r\n PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n\r\n super(audioConfig, speechTranslationConfigImpl.properties, new TranscriberConnectionFactory());\r\n this.privDisposedRecognizer = false;\r\n this.isMeetingRecognizer = false;\r\n }\r\n\r\n public get speechRecognitionLanguage(): string {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n public set conversation(c: Conversation) {\r\n Contracts.throwIfNullOrUndefined(c, \"Conversation\");\r\n this.isMeetingRecognizer = false;\r\n this.privConversation = c;\r\n }\r\n\r\n public getConversationInfo(): ConversationInfo {\r\n Contracts.throwIfNullOrUndefined(this.privConversation, \"Conversation\");\r\n return this.privConversation.conversationInfo;\r\n }\r\n\r\n public set meeting(m: Meeting) {\r\n Contracts.throwIfNullOrUndefined(m, \"Meeting\");\r\n this.isMeetingRecognizer = true;\r\n this.privMeeting = m;\r\n }\r\n\r\n public getMeetingInfo(): MeetingInfo {\r\n Contracts.throwIfNullOrUndefined(this.privMeeting, \"Meeting\");\r\n return this.privMeeting.meetingInfo;\r\n }\r\n\r\n public IsMeetingRecognizer(): boolean {\r\n return this.isMeetingRecognizer;\r\n }\r\n\r\n public startContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.startContinuousRecognitionAsyncImpl(RecognitionMode.Conversation), cb, err);\r\n }\r\n\r\n public stopContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.stopContinuousRecognitionAsyncImpl(), cb, err);\r\n }\r\n\r\n public async close(): Promise {\r\n if (!this.privDisposedRecognizer) {\r\n await this.dispose(true);\r\n }\r\n }\r\n\r\n // Push async join/leave conversation message via serviceRecognizer\r\n public async pushConversationEvent(conversationInfo: ConversationInfo, command: string): Promise {\r\n const reco = (this.privReco) as TranscriptionServiceRecognizer;\r\n Contracts.throwIfNullOrUndefined(reco, \"serviceRecognizer\");\r\n await reco.sendSpeechEventAsync(conversationInfo, command);\r\n }\r\n\r\n // Push async join/leave meeting message via serviceRecognizer\r\n public async pushMeetingEvent(meetingInfo: MeetingInfo, command: string): Promise {\r\n const reco = (this.privReco) as TranscriptionServiceRecognizer;\r\n Contracts.throwIfNullOrUndefined(reco, \"serviceRecognizer\");\r\n await reco.sendMeetingSpeechEventAsync(meetingInfo, command);\r\n }\r\n\r\n public async enforceAudioGating(): Promise {\r\n const audioConfigImpl = this.audioConfig as AudioConfigImpl;\r\n const format: AudioStreamFormatImpl = await audioConfigImpl.format;\r\n const channels = format.channels;\r\n if (channels === 1) {\r\n if (this.properties.getProperty(\"f0f5debc-f8c9-4892-ac4b-90a7ab359fd2\", \"false\").toLowerCase() !== \"true\") {\r\n throw new Error(\"Single channel audio configuration for MeetingTranscriber is currently under private preview, please contact diarizationrequest@microsoft.com for more details\");\r\n }\r\n } else if (channels !== 8) {\r\n throw new Error(`Unsupported audio configuration: Detected ${channels}-channel audio`);\r\n }\r\n return;\r\n }\r\n\r\n public connectMeetingCallbacks(transcriber: MeetingTranscriber): void {\r\n this.isMeetingRecognizer = true;\r\n this.canceled = (s: any, e: CancellationEventArgs): void => {\r\n if (!!transcriber.canceled) {\r\n transcriber.canceled(transcriber, e);\r\n }\r\n };\r\n this.recognizing = (s: any, e: SpeechRecognitionEventArgs): void => {\r\n if (!!transcriber.transcribing) {\r\n transcriber.transcribing(transcriber, e);\r\n }\r\n };\r\n this.recognized = (s: any, e: SpeechRecognitionEventArgs): void => {\r\n if (!!transcriber.transcribed) {\r\n transcriber.transcribed(transcriber, e);\r\n }\r\n };\r\n this.sessionStarted = (s: any, e: SessionEventArgs): void => {\r\n if (!!transcriber.sessionStarted) {\r\n transcriber.sessionStarted(transcriber, e);\r\n }\r\n };\r\n this.sessionStopped = (s: any, e: SessionEventArgs): void => {\r\n if (!!transcriber.sessionStopped) {\r\n transcriber.sessionStopped(transcriber, e);\r\n }\r\n };\r\n }\r\n\r\n public disconnectCallbacks(): void {\r\n this.canceled = undefined;\r\n this.recognizing = undefined;\r\n this.recognized = undefined;\r\n this.sessionStarted = undefined;\r\n this.sessionStopped = undefined;\r\n }\r\n\r\n /**\r\n * Disposes any resources held by the object.\r\n * @member ConversationTranscriber.prototype.dispose\r\n * @function\r\n * @public\r\n * @param {boolean} disposing - true if disposing the object.\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedRecognizer) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n this.privDisposedRecognizer = true;\r\n await this.implRecognizerStop();\r\n }\r\n\r\n await super.dispose(disposing);\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(\r\n speechConfig,\r\n this.properties);\r\n }\r\n\r\n protected createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n const configImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n return new TranscriptionServiceRecognizer(authentication, connectionFactory, configImpl, recognizerConfig, this);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IAudioSource,\r\n IConnection,\r\n MessageType\r\n} from \"../common/Exports.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n ConversationTranscriptionCanceledEventArgs,\r\n MeetingTranscriptionCanceledEventArgs,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SpeechRecognitionEventArgs,\r\n SpeechRecognitionResult,\r\n} from \"../sdk/Exports.js\";\r\nimport { ConversationInfo, MeetingInfo } from \"../sdk/Transcription/Exports.js\";\r\nimport { ConversationProperties } from \"../sdk/Transcription/IConversation.js\";\r\nimport { MeetingProperties } from \"../sdk/Transcription/IMeeting.js\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n ConversationServiceRecognizer,\r\n TranscriberRecognizer\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class TranscriptionServiceRecognizer extends ConversationServiceRecognizer {\r\n\r\n private privTranscriberRecognizer: TranscriberRecognizer;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n transcriber: TranscriberRecognizer) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, transcriber);\r\n this.privTranscriberRecognizer = transcriber;\r\n this.sendPrePayloadJSONOverride = (connection: IConnection): Promise => this.sendTranscriptionStartJSON(connection);\r\n if (this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps) === \"true\") {\r\n this.privSpeechContext.setWordLevelTimings();\r\n }\r\n }\r\n\r\n public async sendSpeechEventAsync(info: ConversationInfo, command: string): Promise {\r\n if (!!this.privRequestSession.isRecognizing) {\r\n const connection: IConnection = await this.fetchConnection();\r\n await this.sendSpeechEvent(connection, this.createSpeechEventPayload(info, command));\r\n }\r\n }\r\n\r\n public async sendMeetingSpeechEventAsync(info: MeetingInfo, command: string): Promise {\r\n if (!!this.privRequestSession.isRecognizing) {\r\n const connection: IConnection = await this.fetchConnection();\r\n await this.sendSpeechEvent(connection, this.createMeetingSpeechEventPayload(info, command));\r\n }\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n return this.processSpeechMessages(connectionMessage);\r\n }\r\n\r\n protected handleRecognizedCallback(result: SpeechRecognitionResult, offset: number, sessionId: string): void {\r\n try {\r\n const event: SpeechRecognitionEventArgs = new SpeechRecognitionEventArgs(result, offset, sessionId);\r\n this.privTranscriberRecognizer.recognized(this.privTranscriberRecognizer, event);\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n protected handleRecognizingCallback(result: SpeechRecognitionResult, duration: number, sessionId: string): void {\r\n try {\r\n const ev = new SpeechRecognitionEventArgs(result, duration, sessionId);\r\n this.privTranscriberRecognizer.recognizing(this.privTranscriberRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n if (this.privTranscriberRecognizer.IsMeetingRecognizer()) {\r\n if (!!this.privTranscriberRecognizer.canceled) {\r\n const cancelEvent: MeetingTranscriptionCanceledEventArgs = new MeetingTranscriptionCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n sessionId);\r\n try {\r\n this.privTranscriberRecognizer.canceled(this.privTranscriberRecognizer, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n } else {\r\n if (!!this.privTranscriberRecognizer.canceled) {\r\n const cancelEvent: ConversationTranscriptionCanceledEventArgs = new ConversationTranscriptionCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n sessionId);\r\n try {\r\n this.privTranscriberRecognizer.canceled(this.privTranscriberRecognizer, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n\r\n if (!!this.privSuccessCallback) {\r\n const result: SpeechRecognitionResult = new SpeechRecognitionResult(\r\n requestId,\r\n ResultReason.Canceled,\r\n undefined, // Text\r\n undefined, // Duration\r\n undefined, // Offset\r\n undefined, // Language\r\n undefined, // Language Detection Confidence\r\n undefined, // Speaker Id\r\n error,\r\n undefined, // Json\r\n properties);\r\n try {\r\n this.privSuccessCallback(result);\r\n this.privSuccessCallback = undefined;\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n\r\n // Encapsulated for derived service recognizers that need to send additional JSON\r\n protected async sendTranscriptionStartJSON(connection: IConnection): Promise {\r\n await this.sendSpeechContext(connection, true);\r\n if (this.privTranscriberRecognizer.IsMeetingRecognizer()) {\r\n const info: MeetingInfo = this.privTranscriberRecognizer.getMeetingInfo();\r\n const payload: { [id: string]: any } = this.createMeetingSpeechEventPayload(info, \"start\");\r\n await this.sendSpeechEvent(connection, payload);\r\n } else {\r\n const info: ConversationInfo = this.privTranscriberRecognizer.getConversationInfo();\r\n const payload: { [id: string]: any } = this.createSpeechEventPayload(info, \"start\");\r\n await this.sendSpeechEvent(connection, payload);\r\n }\r\n await this.sendWaveHeader(connection);\r\n return;\r\n }\r\n\r\n protected sendSpeechEvent(connection: IConnection, payload: { [id: string]: any }): Promise {\r\n const speechEventJson = JSON.stringify(payload);\r\n\r\n if (speechEventJson) {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speech.event\",\r\n this.privRequestSession.requestId,\r\n \"application/json\",\r\n speechEventJson));\r\n }\r\n return;\r\n }\r\n\r\n private createSpeechEventPayload(info: ConversationInfo, command: string): { [id: string]: any } {\r\n const eventDict: { id: string; name: string; meeting: ConversationProperties } = { id: \"meeting\", name: command, meeting: info.conversationProperties };\r\n eventDict.meeting.id = info.id;\r\n eventDict.meeting.attendees = info.participants;\r\n return eventDict;\r\n }\r\n\r\n private createMeetingSpeechEventPayload(info: MeetingInfo, command: string): { [id: string]: any } {\r\n const eventDict: { id: string; name: string; meeting: MeetingProperties } = { id: \"meeting\", name: command, meeting: info.meetingProperties };\r\n eventDict.meeting.id = info.id;\r\n eventDict.meeting.attendees = info.participants;\r\n return eventDict;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n IConnection,\r\n IStringDictionary,\r\n} from \"../common/Exports.js\";\r\nimport { StringUtils } from \"../common/StringUtils.js\";\r\nimport {\r\n PropertyId\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./ConnectionFactoryBase.js\";\r\nimport {\r\n AuthInfo,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n WebsocketMessageFormatter,\r\n} from \"./Exports.js\";\r\nimport { HeaderNames } from \"./HeaderNames.js\";\r\nimport { QueryParameterNames } from \"./QueryParameterNames.js\";\r\n\r\nexport class TranslationConnectionFactory extends ConnectionFactoryBase {\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n const endpoint: string = this.getEndpointUrl(config);\r\n\r\n const queryParams: IStringDictionary = {};\r\n\r\n if (config.autoDetectSourceLanguages !== undefined) {\r\n queryParams[QueryParameterNames.EnableLanguageId] = \"true\";\r\n }\r\n this.setQueryParams(queryParams, config, endpoint);\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n\r\n public getEndpointUrl(config: RecognizerConfig, returnRegionPlaceholder?: boolean): string {\r\n\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n\r\n let endpointUrl: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, undefined);\r\n if (!endpointUrl) {\r\n if (config.autoDetectSourceLanguages !== undefined) {\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, \"wss://{region}.stt.speech\" + hostSuffix);\r\n endpointUrl = host + \"/speech/universal/v2\";\r\n } else {\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, \"wss://{region}.s2s.speech\" + hostSuffix);\r\n endpointUrl = host + \"/speech/translation/cognitiveservices/v1\";\r\n }\r\n }\r\n\r\n if (returnRegionPlaceholder === true) {\r\n return endpointUrl;\r\n }\r\n\r\n return StringUtils.formatString(endpointUrl, { region });\r\n }\r\n\r\n public setQueryParams(queryParams: IStringDictionary, config: RecognizerConfig, endpointUrl: string): void {\r\n\r\n queryParams.from = config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n queryParams.to = config.parameters.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages);\r\n queryParams.scenario = config.recognitionMode === RecognitionMode.Interactive ? \"interactive\" :\r\n config.recognitionMode === RecognitionMode.Conversation ? \"conversation\" : \"\";\r\n\r\n this.setCommonUrlParams(config, queryParams, endpointUrl);\r\n this.setUrlParameter(\r\n PropertyId.SpeechServiceResponse_TranslationRequestStablePartialResult,\r\n QueryParameterNames.StableTranslation,\r\n config,\r\n queryParams,\r\n endpointUrl\r\n );\r\n\r\n const translationVoice: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_TranslationVoice, undefined);\r\n if (translationVoice !== undefined) {\r\n queryParams.voice = translationVoice;\r\n queryParams.features = \"texttospeech\";\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ConnectionEvent,\r\n IAudioSource,\r\n MessageType,\r\n TranslationStatus,\r\n} from \"../common/Exports.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SpeechRecognitionResult,\r\n TranslationRecognitionCanceledEventArgs,\r\n TranslationRecognitionEventArgs,\r\n TranslationRecognitionResult,\r\n TranslationRecognizer,\r\n Translations,\r\n TranslationSynthesisEventArgs,\r\n TranslationSynthesisResult,\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n ConversationServiceRecognizer,\r\n EnumTranslation,\r\n ITranslationHypothesis,\r\n RecognitionStatus,\r\n SynthesisStatus,\r\n TranslationHypothesis,\r\n TranslationPhrase,\r\n TranslationSynthesisEnd,\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { ITranslationPhrase } from \"./ServiceMessages/TranslationPhrase.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class TranslationServiceRecognizer extends ConversationServiceRecognizer {\r\n private privTranslationRecognizer: TranslationRecognizer;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n translationRecognizer: TranslationRecognizer) {\r\n\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, translationRecognizer);\r\n this.privTranslationRecognizer = translationRecognizer;\r\n this.connectionEvents.attach((connectionEvent: ConnectionEvent): void => {\r\n if (connectionEvent.name === \"ConnectionEstablishedEvent\") {\r\n this.privTranslationRecognizer.onConnection();\r\n }\r\n });\r\n\r\n }\r\n\r\n protected async processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n let processed: boolean = await this.processSpeechMessages(connectionMessage);\r\n if (processed) {\r\n return true;\r\n }\r\n\r\n const handleTranslationPhrase = async (translatedPhrase: TranslationPhrase): Promise => {\r\n this.privRequestSession.onPhraseRecognized(this.privRequestSession.currentTurnAudioOffset + translatedPhrase.Offset + translatedPhrase.Duration);\r\n\r\n if (translatedPhrase.RecognitionStatus === RecognitionStatus.Success) {\r\n\r\n // OK, the recognition was successful. How'd the translation do?\r\n const result: TranslationRecognitionEventArgs = this.fireEventForResult(translatedPhrase, resultProps);\r\n if (!!this.privTranslationRecognizer.recognized) {\r\n try {\r\n this.privTranslationRecognizer.recognized(this.privTranslationRecognizer, result);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n // report result to promise.\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result.result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n } else {\r\n const reason: ResultReason = EnumTranslation.implTranslateRecognitionResult(translatedPhrase.RecognitionStatus);\r\n\r\n const result = new TranslationRecognitionResult(\r\n undefined,\r\n this.privRequestSession.requestId,\r\n reason,\r\n translatedPhrase.Text,\r\n translatedPhrase.Duration,\r\n this.privRequestSession.currentTurnAudioOffset + translatedPhrase.Offset,\r\n translatedPhrase.Language,\r\n translatedPhrase.Confidence,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n if (reason === ResultReason.Canceled) {\r\n const cancelReason: CancellationReason = EnumTranslation.implTranslateCancelResult(translatedPhrase.RecognitionStatus);\r\n const cancellationErrorCode: CancellationErrorCode = EnumTranslation.implTranslateCancelErrorCode(translatedPhrase.RecognitionStatus);\r\n\r\n await this.cancelRecognitionLocal(\r\n cancelReason,\r\n cancellationErrorCode,\r\n EnumTranslation.implTranslateErrorDetails(cancellationErrorCode));\r\n\r\n } else {\r\n if (!(this.privRequestSession.isSpeechEnded && reason === ResultReason.NoMatch && translatedPhrase.RecognitionStatus !== RecognitionStatus.InitialSilenceTimeout)) {\r\n const ev = new TranslationRecognitionEventArgs(result, result.offset, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privTranslationRecognizer.recognized) {\r\n try {\r\n this.privTranslationRecognizer.recognized(this.privTranslationRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n\r\n // report result to promise.\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n }\r\n processed = true;\r\n }\r\n\r\n };\r\n\r\n const handleTranslationHypothesis = (hypothesis: TranslationHypothesis, resultProperties: PropertyCollection): void => {\r\n const result: TranslationRecognitionEventArgs = this.fireEventForResult(hypothesis, resultProperties);\r\n this.privRequestSession.onHypothesis(this.privRequestSession.currentTurnAudioOffset + result.offset);\r\n\r\n if (!!this.privTranslationRecognizer.recognizing) {\r\n try {\r\n this.privTranslationRecognizer.recognizing(this.privTranslationRecognizer, result);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n };\r\n\r\n if (connectionMessage.messageType === MessageType.Text) {\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n }\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"translation.hypothesis\":\r\n handleTranslationHypothesis(TranslationHypothesis.fromJSON(connectionMessage.textBody), resultProps);\r\n break;\r\n\r\n case \"translation.response\":\r\n const phrase: { SpeechPhrase: ITranslationPhrase } = JSON.parse(connectionMessage.textBody) as { SpeechPhrase: ITranslationPhrase };\r\n if (!!phrase.SpeechPhrase) {\r\n await handleTranslationPhrase(TranslationPhrase.fromTranslationResponse(phrase));\r\n } else {\r\n const hypothesis: { SpeechHypothesis: ITranslationHypothesis } = JSON.parse(connectionMessage.textBody) as { SpeechHypothesis: ITranslationHypothesis };\r\n if (!!hypothesis.SpeechHypothesis) {\r\n handleTranslationHypothesis(TranslationHypothesis.fromTranslationResponse(hypothesis), resultProps);\r\n }\r\n }\r\n break;\r\n case \"translation.phrase\":\r\n await handleTranslationPhrase(TranslationPhrase.fromJSON(connectionMessage.textBody));\r\n break;\r\n\r\n case \"translation.synthesis\":\r\n this.sendSynthesisAudio(connectionMessage.binaryBody, this.privRequestSession.sessionId);\r\n processed = true;\r\n break;\r\n\r\n case \"audio.end\":\r\n case \"translation.synthesis.end\":\r\n const synthEnd: TranslationSynthesisEnd = TranslationSynthesisEnd.fromJSON(connectionMessage.textBody);\r\n\r\n switch (synthEnd.SynthesisStatus) {\r\n case SynthesisStatus.Error:\r\n if (!!this.privTranslationRecognizer.synthesizing) {\r\n const result = new TranslationSynthesisResult(ResultReason.Canceled, undefined);\r\n const retEvent: TranslationSynthesisEventArgs = new TranslationSynthesisEventArgs(result, this.privRequestSession.sessionId);\r\n\r\n try {\r\n this.privTranslationRecognizer.synthesizing(this.privTranslationRecognizer, retEvent);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n if (!!this.privTranslationRecognizer.canceled) {\r\n // And raise a canceled event to send the rich(er) error message back.\r\n const canceledResult: TranslationRecognitionCanceledEventArgs = new TranslationRecognitionCanceledEventArgs(\r\n this.privRequestSession.sessionId,\r\n CancellationReason.Error,\r\n synthEnd.FailureReason,\r\n CancellationErrorCode.ServiceError,\r\n null);\r\n\r\n try {\r\n this.privTranslationRecognizer.canceled(this.privTranslationRecognizer, canceledResult);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n break;\r\n case SynthesisStatus.Success:\r\n this.sendSynthesisAudio(undefined, this.privRequestSession.sessionId);\r\n break;\r\n default:\r\n break;\r\n }\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n return processed;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n if (!!this.privTranslationRecognizer.canceled) {\r\n\r\n const cancelEvent: TranslationRecognitionCanceledEventArgs = new TranslationRecognitionCanceledEventArgs(\r\n sessionId,\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined);\r\n\r\n try {\r\n this.privTranslationRecognizer.canceled(this.privTranslationRecognizer, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n\r\n if (!!this.privSuccessCallback) {\r\n const result: TranslationRecognitionResult = new TranslationRecognitionResult(\r\n undefined, // Translations\r\n requestId,\r\n ResultReason.Canceled,\r\n undefined, // Text\r\n undefined, // Druation\r\n undefined, // Offset\r\n undefined, // Language\r\n undefined, // LanguageDetectionConfidence\r\n error,\r\n undefined, // Json\r\n properties);\r\n try {\r\n this.privSuccessCallback(result);\r\n /* eslint-disable no-empty */\r\n this.privSuccessCallback = undefined;\r\n } catch { }\r\n }\r\n }\r\n\r\n protected handleRecognizingCallback(result: SpeechRecognitionResult, duration: number, sessionId: string): void {\r\n try {\r\n const ev = new TranslationRecognitionEventArgs(TranslationRecognitionResult.fromSpeechRecognitionResult(result), duration, sessionId);\r\n this.privTranslationRecognizer.recognizing(this.privTranslationRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n protected handleRecognizedCallback(result: SpeechRecognitionResult, offset: number, sessionId: string): void {\r\n try {\r\n const ev = new TranslationRecognitionEventArgs(TranslationRecognitionResult.fromSpeechRecognitionResult(result), offset, sessionId);\r\n this.privTranslationRecognizer.recognized(this.privTranslationRecognizer, ev);\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n private fireEventForResult(serviceResult: TranslationHypothesis | TranslationPhrase, properties: PropertyCollection): TranslationRecognitionEventArgs {\r\n let translations: Translations;\r\n\r\n if (undefined !== serviceResult.Translation.Translations) {\r\n translations = new Translations();\r\n for (const translation of serviceResult.Translation.Translations) {\r\n translations.set(translation.Language, translation.Text || translation.DisplayText);\r\n }\r\n }\r\n\r\n let resultReason: ResultReason;\r\n let confidence: string;\r\n if (serviceResult instanceof TranslationPhrase) {\r\n if (!!serviceResult.Translation && serviceResult.Translation.TranslationStatus === TranslationStatus.Success) {\r\n resultReason = ResultReason.TranslatedSpeech;\r\n } else {\r\n resultReason = ResultReason.RecognizedSpeech;\r\n }\r\n confidence = serviceResult.Confidence;\r\n } else {\r\n resultReason = ResultReason.TranslatingSpeech;\r\n }\r\n const language = serviceResult.Language;\r\n\r\n const offset: number = serviceResult.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n\r\n const result = new TranslationRecognitionResult(\r\n translations,\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n serviceResult.Text,\r\n serviceResult.Duration,\r\n offset,\r\n language,\r\n confidence,\r\n serviceResult.Translation.FailureReason,\r\n JSON.stringify(serviceResult),\r\n properties);\r\n\r\n const ev = new TranslationRecognitionEventArgs(result, offset, this.privRequestSession.sessionId);\r\n return ev;\r\n }\r\n\r\n private sendSynthesisAudio(audio: ArrayBuffer, sessionId: string): void {\r\n const reason = (undefined === audio) ? ResultReason.SynthesizingAudioCompleted : ResultReason.SynthesizingAudio;\r\n const result = new TranslationSynthesisResult(reason, audio);\r\n const retEvent: TranslationSynthesisEventArgs = new TranslationSynthesisEventArgs(result, sessionId);\r\n\r\n if (!!this.privTranslationRecognizer.synthesizing) {\r\n try {\r\n this.privTranslationRecognizer.synthesizing(this.privTranslationRecognizer, retEvent);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines translation status.\r\n * @class TranslationStatus\r\n */\r\nexport enum TranslationStatus {\r\n /**\r\n * @member TranslationStatus.Success\r\n */\r\n Success = 0,\r\n\r\n /**\r\n * @member TranslationStatus.Error\r\n */\r\n Error,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ReplayableAudioNode } from \"../common.browser/Exports.js\";\r\nimport {\r\n DeferralMap,\r\n Deferred,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IConnection,\r\n MessageType,\r\n} from \"../common/Exports.js\";\r\nimport { AudioStreamFormatImpl } from \"../sdk/Audio/AudioStreamFormat.js\";\r\nimport { SpeakerRecognitionModel } from \"../sdk/SpeakerRecognitionModel.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n VoiceProfileClient,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SessionEventArgs,\r\n VoiceProfileEnrollmentResult,\r\n VoiceProfilePhraseResult,\r\n VoiceProfileResult,\r\n VoiceProfileType,\r\n VoiceProfile\r\n} from \"../sdk/Exports.js\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n EnrollmentResponse,\r\n IProfile,\r\n ISpeechConfigAudioDevice,\r\n ProfilePhraseResponse,\r\n ProfileResponse,\r\n ServiceRecognizerBase,\r\n} from \"./Exports.js\";\r\nimport { IAuthentication } from \"./IAuthentication.js\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory.js\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig.js\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal.js\";\r\n\r\ninterface CreateProfile {\r\n scenario: string;\r\n locale: string;\r\n number: string;\r\n}\r\n\r\ninterface PhraseRequest {\r\n scenario: string;\r\n locale: string;\r\n}\r\n\r\ninterface SpeakerContext {\r\n scenario: string;\r\n profileIds: string[];\r\n features: {\r\n interimResult: string;\r\n progressiveDetection: string;\r\n };\r\n}\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class VoiceServiceRecognizer extends ServiceRecognizerBase {\r\n private privSpeakerAudioSource: IAudioSource;\r\n private privDeferralMap: DeferralMap = new DeferralMap();\r\n private privExpectedProfileId: string;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n recognizer: VoiceProfileClient) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, recognizer);\r\n this.privSpeakerAudioSource = audioSource;\r\n this.sendPrePayloadJSONOverride = (): Promise => this.noOp();\r\n }\r\n\r\n public set SpeakerAudioSource(audioSource: IAudioSource) {\r\n this.privSpeakerAudioSource = audioSource;\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n let processed: boolean = false;\r\n\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n if (connectionMessage.messageType === MessageType.Text) {\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n }\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n // Profile management response for create, fetch, delete, reset\r\n case \"speaker.profiles\":\r\n const response: ProfileResponse = JSON.parse(connectionMessage.textBody) as ProfileResponse;\r\n switch (response.operation.toLowerCase()) {\r\n case \"create\":\r\n this.handleCreateResponse(response, connectionMessage.requestId);\r\n break;\r\n\r\n case \"delete\":\r\n case \"reset\":\r\n this.handleResultResponse(response, connectionMessage.requestId);\r\n break;\r\n\r\n case \"fetch\":\r\n const enrollmentResponse: EnrollmentResponse = JSON.parse(connectionMessage.textBody) as EnrollmentResponse;\r\n this.handleFetchResponse(enrollmentResponse, connectionMessage.requestId);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n processed = true;\r\n break;\r\n // Activation and authorization phrase response\r\n case \"speaker.phrases\":\r\n const phraseResponse: ProfilePhraseResponse = JSON.parse(connectionMessage.textBody) as ProfilePhraseResponse;\r\n this.handlePhrasesResponse(phraseResponse, connectionMessage.requestId);\r\n processed = true;\r\n break;\r\n // Enrollment response\r\n case \"speaker.profile.enrollment\":\r\n const enrollmentResponse: EnrollmentResponse = JSON.parse(connectionMessage.textBody) as EnrollmentResponse;\r\n const result: VoiceProfileEnrollmentResult = new VoiceProfileEnrollmentResult(\r\n this.enrollmentReasonFrom(!!enrollmentResponse.enrollment ? enrollmentResponse.enrollment.enrollmentStatus : enrollmentResponse.status.statusCode),\r\n !!enrollmentResponse.enrollment ? JSON.stringify(enrollmentResponse.enrollment) : undefined,\r\n enrollmentResponse.status.reason,\r\n );\r\n if (!!this.privDeferralMap.getId(connectionMessage.requestId)) {\r\n this.privDeferralMap.complete(connectionMessage.requestId, result);\r\n }\r\n this.privRequestSession.onSpeechEnded();\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n const defferal = new Deferred();\r\n defferal.resolve(processed);\r\n return defferal.promise;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n // const enrollmentResponse: EnrollmentResponse = JSON.parse(connectionMessage.textBody) as EnrollmentResponse;\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n const result: VoiceProfileEnrollmentResult = new VoiceProfileEnrollmentResult(\r\n ResultReason.Canceled,\r\n error,\r\n error,\r\n );\r\n if (!!this.privDeferralMap.getId(requestId)) {\r\n this.privDeferralMap.complete(requestId, result);\r\n }\r\n }\r\n\r\n public async createProfile(profileType: VoiceProfileType, locale: string): Promise {\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n this.voiceProfileType = profileType.toString();\r\n const conPromise: Promise = this.connectImpl();\r\n try {\r\n const createProfileDeferral = new Deferred();\r\n await conPromise;\r\n await this.sendCreateProfile(createProfileDeferral, profileType, locale);\r\n void this.receiveMessage();\r\n return createProfileDeferral.promise;\r\n } catch (err) {\r\n throw err;\r\n }\r\n }\r\n\r\n public async resetProfile(profile: VoiceProfile): Promise {\r\n this.voiceProfileType = profile.profileType.toString();\r\n return this.sendCommonRequest(\"reset\", profile.profileType, profile);\r\n }\r\n\r\n public async deleteProfile(profile: VoiceProfile): Promise {\r\n this.voiceProfileType = profile.profileType.toString();\r\n return this.sendCommonRequest(\"delete\", profile.profileType, profile);\r\n }\r\n\r\n public async retrieveEnrollmentResult(profile: VoiceProfile): Promise {\r\n this.voiceProfileType = profile.profileType.toString();\r\n this.privExpectedProfileId = profile.profileId;\r\n return this.sendCommonRequest(\"fetch\", profile.profileType, profile);\r\n }\r\n\r\n public async getAllProfiles(profileType: VoiceProfileType): Promise {\r\n this.voiceProfileType = profileType.toString();\r\n return this.sendCommonRequest(\"fetch\", profileType);\r\n }\r\n\r\n public async getActivationPhrases(profileType: VoiceProfileType, lang: string): Promise {\r\n this.voiceProfileType = profileType.toString();\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n try {\r\n const getPhrasesDeferral = new Deferred();\r\n await conPromise;\r\n await this.sendPhrasesRequest(getPhrasesDeferral, profileType, lang);\r\n void this.receiveMessage();\r\n return getPhrasesDeferral.promise;\r\n } catch (err) {\r\n throw err;\r\n }\r\n }\r\n\r\n public async enrollProfile(profile: VoiceProfile): Promise {\r\n this.voiceProfileType = profile.profileType.toString();\r\n const enrollmentDeferral = new Deferred();\r\n this.privRequestSession.startNewRecognition();\r\n this.privRequestSession.listenForServiceTelemetry(this.privSpeakerAudioSource.events);\r\n\r\n this.privRecognizerConfig.parameters.setProperty(PropertyId.Speech_SessionId, this.privRequestSession.sessionId);\r\n\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n\r\n const preAudioPromise: Promise = this.sendPreAudioMessages(profile, enrollmentDeferral);\r\n\r\n const node: IAudioStreamNode = await this.privSpeakerAudioSource.attach(this.privRequestSession.audioNodeId);\r\n const format: AudioStreamFormatImpl = await this.privSpeakerAudioSource.format;\r\n const deviceInfo: ISpeechConfigAudioDevice = await this.privSpeakerAudioSource.deviceInfo;\r\n\r\n const audioNode = new ReplayableAudioNode(node, format.avgBytesPerSec);\r\n await this.privRequestSession.onAudioSourceAttachCompleted(audioNode, false);\r\n\r\n this.privRecognizerConfig.SpeechServiceConfig.Context.audio = { source: deviceInfo };\r\n\r\n try {\r\n await conPromise;\r\n await preAudioPromise;\r\n } catch (err) {\r\n this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.ConnectionFailure, err as string);\r\n }\r\n\r\n const sessionStartEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.sessionStarted) {\r\n this.privRecognizer.sessionStarted(this.privRecognizer, sessionStartEventArgs);\r\n }\r\n\r\n void this.receiveMessage();\r\n const audioSendPromise = this.sendAudio(audioNode);\r\n\r\n // /* eslint-disable no-empty */\r\n audioSendPromise.then((): void => { /* add? return true;*/ }, (error: string): void => {\r\n this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.RuntimeError, error);\r\n });\r\n\r\n return enrollmentDeferral.promise;\r\n }\r\n\r\n private async sendPreAudioMessages(profile: VoiceProfile, enrollmentDeferral: Deferred): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n this.privRequestSession.onSpeechContext();\r\n this.privDeferralMap.add(this.privRequestSession.requestId, enrollmentDeferral);\r\n await this.sendBaseRequest(connection, \"enroll\", this.scenarioFrom(profile.profileType), profile);\r\n }\r\n\r\n private async sendPhrasesRequest(getPhrasesDeferral: Deferred, profileType: VoiceProfileType, locale: string): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n this.privRequestSession.onSpeechContext();\r\n this.privDeferralMap.add(this.privRequestSession.requestId, getPhrasesDeferral);\r\n const scenario = this.scenarioFrom(profileType);\r\n\r\n const profileCreateRequest: PhraseRequest = {\r\n locale,\r\n scenario,\r\n };\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speaker.profile.phrases\",\r\n this.privRequestSession.requestId,\r\n \"application/json; charset=utf-8\",\r\n JSON.stringify(profileCreateRequest)));\r\n }\r\n\r\n private async sendCreateProfile(createProfileDeferral: Deferred, profileType: VoiceProfileType, locale: string): Promise {\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n this.privRequestSession.onSpeechContext();\r\n this.privDeferralMap.add(this.privRequestSession.requestId, createProfileDeferral);\r\n const scenario = profileType === VoiceProfileType.TextIndependentIdentification ? \"TextIndependentIdentification\" :\r\n profileType === VoiceProfileType.TextIndependentVerification ? \"TextIndependentVerification\" : \"TextDependentVerification\";\r\n\r\n const profileCreateRequest: CreateProfile = {\r\n locale,\r\n number: \"1\",\r\n scenario,\r\n };\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speaker.profile.create\",\r\n this.privRequestSession.requestId,\r\n \"application/json; charset=utf-8\",\r\n JSON.stringify(profileCreateRequest)));\r\n }\r\n\r\n private async sendCommonRequest(operation: string, profileType: VoiceProfileType, profile: VoiceProfile = undefined): Promise {\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n try {\r\n const deferral = new Deferred();\r\n this.privRequestSession.onSpeechContext();\r\n await conPromise;\r\n const connection: IConnection = await this.fetchConnection();\r\n this.privDeferralMap.add(this.privRequestSession.requestId, deferral);\r\n await this.sendBaseRequest(connection, operation, this.scenarioFrom(profileType), profile);\r\n void this.receiveMessage();\r\n return deferral.promise;\r\n } catch (err) {\r\n throw err;\r\n }\r\n }\r\n\r\n private async sendBaseRequest(connection: IConnection, operation: string, scenario: string, profile: VoiceProfile): Promise {\r\n const profileRequest: { maxPageSize?: number; profileIds?: string[]; scenario: string } = {\r\n scenario\r\n };\r\n if (!!profile) {\r\n profileRequest.profileIds = [ profile.profileId ];\r\n } else {\r\n profileRequest.maxPageSize = -1;\r\n }\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n `speaker.profile.${operation}`,\r\n this.privRequestSession.requestId,\r\n \"application/json; charset=utf-8\",\r\n JSON.stringify(profileRequest)));\r\n }\r\n\r\n private extractSpeakerContext(model: SpeakerRecognitionModel): SpeakerContext {\r\n return {\r\n features: {\r\n interimResult: \"enabled\",\r\n progressiveDetection: \"disabled\",\r\n },\r\n profileIds: model.profileIds,\r\n scenario: model.scenario,\r\n };\r\n }\r\n\r\n private handlePhrasesResponse(response: ProfilePhraseResponse, requestId: string): void {\r\n if (!!this.privDeferralMap.getId(requestId)) {\r\n if (response.status.statusCode.toLowerCase() !== \"success\") {\r\n const reason: ResultReason = ResultReason.Canceled;\r\n const result = new VoiceProfilePhraseResult(reason, response.status.statusCode, response.passPhraseType, []);\r\n this.privDeferralMap.complete(requestId, result);\r\n } else if (!!response.phrases && response.phrases.length > 0) {\r\n const reason: ResultReason = ResultReason.EnrollingVoiceProfile;\r\n const result = new VoiceProfilePhraseResult(reason, response.status.statusCode, response.passPhraseType, response.phrases);\r\n this.privDeferralMap.complete(requestId, result);\r\n } else {\r\n throw new Error(\"Voice Profile get activation phrases failed, no phrases received\");\r\n }\r\n } else {\r\n throw new Error(`Voice Profile get activation phrases request for requestID ${requestId} not found`);\r\n }\r\n }\r\n\r\n private handleCreateResponse(response: ProfileResponse, requestId: string): void {\r\n if (!!response.profiles && response.profiles.length > 0) {\r\n if (!!this.privDeferralMap.getId(requestId)) {\r\n const profileIds: string[] = response.profiles.map((profile: IProfile): string => profile.profileId);\r\n this.privDeferralMap.complete(requestId, profileIds);\r\n } else {\r\n throw new Error(`Voice Profile create request for requestID ${requestId} not found`);\r\n }\r\n } else {\r\n throw new Error(\"Voice Profile create failed, no profile id received\");\r\n }\r\n }\r\n\r\n private handleResultResponse(response: ProfileResponse, requestId: string): void {\r\n if (!!this.privDeferralMap.getId(requestId)) {\r\n const successReason: ResultReason = response.operation.toLowerCase() === \"delete\" ? ResultReason.DeletedVoiceProfile : ResultReason.ResetVoiceProfile;\r\n const reason: ResultReason = response.status.statusCode.toLowerCase() === \"success\" ? successReason : ResultReason.Canceled;\r\n const result = new VoiceProfileResult(reason, `statusCode: ${response.status.statusCode}, errorDetails: ${response.status.reason}`);\r\n this.privDeferralMap.complete(requestId, result);\r\n } else {\r\n throw new Error(`Voice Profile create request for requestID ${requestId} not found`);\r\n }\r\n }\r\n\r\n private handleFetchResponse(enrollmentResponse: EnrollmentResponse, requestId: string): void {\r\n if (!!this.privDeferralMap.getId(requestId) && !!enrollmentResponse.profiles[0]) {\r\n if (!!this.privExpectedProfileId && enrollmentResponse.profiles.length === 1 && enrollmentResponse.profiles[0].profileId === this.privExpectedProfileId) {\r\n this.privExpectedProfileId = undefined;\r\n const profileInfo: IProfile = enrollmentResponse.profiles[0];\r\n const result: VoiceProfileEnrollmentResult = new VoiceProfileEnrollmentResult(\r\n this.enrollmentReasonFrom(profileInfo.enrollmentStatus),\r\n JSON.stringify(profileInfo),\r\n enrollmentResponse.status.reason,\r\n );\r\n this.privDeferralMap.complete(requestId, result);\r\n } else if (enrollmentResponse.profiles.length > 0) {\r\n const iProfiles: IProfile[] = enrollmentResponse.profiles;\r\n const profileResults: VoiceProfileEnrollmentResult[] = [];\r\n for (const profile of iProfiles) {\r\n profileResults.push( new VoiceProfileEnrollmentResult(\r\n this.enrollmentReasonFrom(profile.enrollmentStatus),\r\n JSON.stringify(profile),\r\n enrollmentResponse.status.reason,\r\n ));\r\n }\r\n this.privDeferralMap.complete(requestId, profileResults);\r\n }\r\n } else {\r\n throw new Error(`Voice Profile fetch request for requestID ${requestId} not found`);\r\n }\r\n }\r\n\r\n private enrollmentReasonFrom(statusCode: string): ResultReason {\r\n switch (statusCode.toLowerCase()) {\r\n case \"enrolled\":\r\n return ResultReason.EnrolledVoiceProfile;\r\n case \"invalidlocale\":\r\n case \"invalidphrase\":\r\n case \"invalidaudioformat\":\r\n case \"invalidscenario\":\r\n case \"invalidprofilecount\":\r\n case \"invalidoperation\":\r\n case \"audiotooshort\":\r\n case \"audiotoolong\":\r\n case \"toomanyenrollments\":\r\n case \"storageconflict\":\r\n case \"profilenotfound\":\r\n case \"incompatibleprofiles\":\r\n case \"incompleteenrollment\":\r\n return ResultReason.Canceled;\r\n default:\r\n return ResultReason.EnrollingVoiceProfile;\r\n }\r\n }\r\n\r\n private scenarioFrom(profileType: VoiceProfileType): string {\r\n return profileType === VoiceProfileType.TextIndependentIdentification ? \"TextIndependentIdentification\" :\r\n profileType === VoiceProfileType.TextIndependentVerification ? \"TextIndependentVerification\" : \"TextDependentVerification\";\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ConnectionMessage,\r\n Deferred,\r\n IStringDictionary,\r\n IWebsocketMessageFormatter,\r\n MessageType,\r\n RawWebsocketMessage,\r\n} from \"../common/Exports.js\";\r\n\r\nconst CRLF: string = \"\\r\\n\";\r\n\r\nexport class WebsocketMessageFormatter implements IWebsocketMessageFormatter {\r\n\r\n public toConnectionMessage(message: RawWebsocketMessage): Promise {\r\n const deferral = new Deferred();\r\n\r\n try {\r\n if (message.messageType === MessageType.Text) {\r\n const textMessage: string = message.textContent;\r\n let headers: IStringDictionary = {};\r\n let body: string = null;\r\n\r\n if (textMessage) {\r\n const headerBodySplit = textMessage.split(\"\\r\\n\\r\\n\");\r\n if (headerBodySplit && headerBodySplit.length > 0) {\r\n headers = this.parseHeaders(headerBodySplit[0]);\r\n if (headerBodySplit.length > 1) {\r\n body = headerBodySplit[1];\r\n }\r\n }\r\n }\r\n\r\n deferral.resolve(new ConnectionMessage(message.messageType, body, headers, message.id));\r\n } else if (message.messageType === MessageType.Binary) {\r\n const binaryMessage: ArrayBuffer = message.binaryContent;\r\n let headers: IStringDictionary = {};\r\n let body: ArrayBuffer = null;\r\n\r\n if (!binaryMessage || binaryMessage.byteLength < 2) {\r\n throw new Error(\"Invalid binary message format. Header length missing.\");\r\n }\r\n\r\n const dataView = new DataView(binaryMessage);\r\n const headerLength = dataView.getInt16(0);\r\n\r\n if (binaryMessage.byteLength < headerLength + 2) {\r\n throw new Error(\"Invalid binary message format. Header content missing.\");\r\n }\r\n\r\n let headersString = \"\";\r\n for (let i = 0; i < headerLength; i++) {\r\n headersString += String.fromCharCode((dataView).getInt8(i + 2));\r\n }\r\n\r\n headers = this.parseHeaders(headersString);\r\n\r\n if (binaryMessage.byteLength > headerLength + 2) {\r\n body = binaryMessage.slice(2 + headerLength);\r\n }\r\n\r\n deferral.resolve(new ConnectionMessage(message.messageType, body, headers, message.id));\r\n }\r\n } catch (e) {\r\n deferral.reject(`Error formatting the message. Error: ${e as string}`);\r\n }\r\n\r\n return deferral.promise;\r\n }\r\n\r\n public fromConnectionMessage(message: ConnectionMessage): Promise {\r\n const deferral = new Deferred();\r\n\r\n try {\r\n if (message.messageType === MessageType.Text) {\r\n const payload = `${this.makeHeaders(message)}${CRLF}${message.textBody ? message.textBody : \"\"}`;\r\n\r\n deferral.resolve(new RawWebsocketMessage(MessageType.Text, payload, message.id));\r\n\r\n } else if (message.messageType === MessageType.Binary) {\r\n const headersString = this.makeHeaders(message);\r\n const content = message.binaryBody;\r\n\r\n const headerBuffer = this.stringToArrayBuffer(headersString);\r\n const headerInt8Array = new Int8Array(headerBuffer);\r\n const headerLength = headerInt8Array.byteLength;\r\n\r\n const payloadInt8Array = new Int8Array(2 + headerLength + (content ? content.byteLength : 0));\r\n payloadInt8Array[0] = ((headerLength >> 8) & 0xff);\r\n payloadInt8Array[1] = headerLength & 0xff;\r\n payloadInt8Array.set(headerInt8Array, 2);\r\n\r\n if (content) {\r\n const bodyInt8Array = new Int8Array(content);\r\n payloadInt8Array.set(bodyInt8Array, 2 + headerLength);\r\n }\r\n\r\n const payload: ArrayBuffer = payloadInt8Array.buffer;\r\n\r\n deferral.resolve(new RawWebsocketMessage(MessageType.Binary, payload, message.id));\r\n }\r\n } catch (e) {\r\n deferral.reject(`Error formatting the message. ${e as string}`);\r\n }\r\n\r\n return deferral.promise;\r\n }\r\n\r\n private makeHeaders(message: ConnectionMessage): string {\r\n let headersString: string = \"\";\r\n\r\n if (message.headers) {\r\n for (const header in message.headers) {\r\n if (header) {\r\n headersString += `${header}: ${message.headers[header]}${CRLF}`;\r\n }\r\n }\r\n }\r\n\r\n return headersString;\r\n }\r\n\r\n private parseHeaders(headersString: string): IStringDictionary {\r\n const headers: IStringDictionary = {};\r\n\r\n if (headersString) {\r\n const headerMatches = headersString.match(/[^\\r\\n]+/g);\r\n if (headers) {\r\n for (const header of headerMatches) {\r\n if (header) {\r\n const separatorIndex = header.indexOf(\":\");\r\n const headerName = separatorIndex > 0 ? header.substr(0, separatorIndex).trim().toLowerCase() : header;\r\n const headerValue =\r\n separatorIndex > 0 && header.length > (separatorIndex + 1) ?\r\n header.substr(separatorIndex + 1).trim() :\r\n \"\";\r\n\r\n headers[headerName] = headerValue;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return headers;\r\n }\r\n\r\n private stringToArrayBuffer(str: string): ArrayBuffer {\r\n const buffer = new ArrayBuffer(str.length);\r\n const view = new DataView(buffer);\r\n for (let i = 0; i < str.length; i++) {\r\n view.setUint8(i, str.charCodeAt(i));\r\n }\r\n return buffer;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { EventType, PlatformEvent } from \"./PlatformEvent.js\";\r\n\r\nexport class AudioSourceEvent extends PlatformEvent {\r\n private privAudioSourceId: string;\r\n\r\n public constructor(eventName: string, audioSourceId: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n this.privAudioSourceId = audioSourceId;\r\n }\r\n\r\n public get audioSourceId(): string {\r\n return this.privAudioSourceId;\r\n }\r\n}\r\n\r\nexport class AudioSourceInitializingEvent extends AudioSourceEvent {\r\n public constructor(audioSourceId: string) {\r\n super(\"AudioSourceInitializingEvent\", audioSourceId);\r\n }\r\n}\r\n\r\nexport class AudioSourceReadyEvent extends AudioSourceEvent {\r\n public constructor(audioSourceId: string) {\r\n super(\"AudioSourceReadyEvent\", audioSourceId);\r\n }\r\n}\r\n\r\nexport class AudioSourceOffEvent extends AudioSourceEvent {\r\n public constructor(audioSourceId: string) {\r\n super(\"AudioSourceOffEvent\", audioSourceId);\r\n }\r\n}\r\n\r\nexport class AudioSourceErrorEvent extends AudioSourceEvent {\r\n private privError: string;\r\n\r\n public constructor(audioSourceId: string, error: string) {\r\n super(\"AudioSourceErrorEvent\", audioSourceId, EventType.Error);\r\n this.privError = error;\r\n }\r\n\r\n public get error(): string {\r\n return this.privError;\r\n }\r\n}\r\n\r\nexport class AudioStreamNodeEvent extends AudioSourceEvent {\r\n private privAudioNodeId: string;\r\n\r\n public constructor(eventName: string, audioSourceId: string, audioNodeId: string) {\r\n super(eventName, audioSourceId);\r\n this.privAudioNodeId = audioNodeId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n}\r\n\r\nexport class AudioStreamNodeAttachingEvent extends AudioStreamNodeEvent {\r\n public constructor(audioSourceId: string, audioNodeId: string) {\r\n super(\"AudioStreamNodeAttachingEvent\", audioSourceId, audioNodeId);\r\n }\r\n}\r\n\r\nexport class AudioStreamNodeAttachedEvent extends AudioStreamNodeEvent {\r\n public constructor(audioSourceId: string, audioNodeId: string) {\r\n super(\"AudioStreamNodeAttachedEvent\", audioSourceId, audioNodeId);\r\n }\r\n}\r\n\r\nexport class AudioStreamNodeDetachedEvent extends AudioStreamNodeEvent {\r\n public constructor(audioSourceId: string, audioNodeId: string) {\r\n super(\"AudioStreamNodeDetachedEvent\", audioSourceId, audioNodeId);\r\n }\r\n}\r\n\r\nexport class AudioStreamNodeErrorEvent extends AudioStreamNodeEvent {\r\n private privError: string;\r\n\r\n public constructor(audioSourceId: string, audioNodeId: string, error: string) {\r\n super(\"AudioStreamNodeErrorEvent\", audioSourceId, audioNodeId);\r\n this.privError = error;\r\n }\r\n\r\n public get error(): string {\r\n return this.privError;\r\n }\r\n}\r\n","\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n EventType,\r\n PlatformEvent\r\n} from \"./Exports.js\";\r\n\r\nexport class BackgroundEvent extends PlatformEvent {\r\n private privError: string;\r\n\r\n public constructor(error: string) {\r\n super(\"BackgroundEvent\", EventType.Error);\r\n this.privError = error;\r\n }\r\n\r\n public get error(): string {\r\n return this.privError;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IStreamChunk, Stream } from \"./Exports.js\";\r\n\r\nexport class ChunkedArrayBufferStream extends Stream {\r\n private privTargetChunkSize: number;\r\n private privNextBufferToWrite: ArrayBuffer;\r\n private privNextBufferStartTime: number;\r\n private privNextBufferReadyBytes: number;\r\n\r\n public constructor(targetChunkSize: number, streamId?: string) {\r\n super(streamId);\r\n this.privTargetChunkSize = targetChunkSize;\r\n this.privNextBufferReadyBytes = 0;\r\n }\r\n\r\n public writeStreamChunk(chunk: IStreamChunk): void {\r\n // No pending write, and the buffer is the right size so write it.\r\n if (chunk.isEnd ||\r\n (0 === this.privNextBufferReadyBytes && chunk.buffer.byteLength === this.privTargetChunkSize)) {\r\n super.writeStreamChunk(chunk);\r\n return;\r\n }\r\n\r\n let bytesCopiedFromBuffer: number = 0;\r\n\r\n while (bytesCopiedFromBuffer < chunk.buffer.byteLength) {\r\n // Fill the next buffer.\r\n if (undefined === this.privNextBufferToWrite) {\r\n this.privNextBufferToWrite = new ArrayBuffer(this.privTargetChunkSize);\r\n this.privNextBufferStartTime = chunk.timeReceived;\r\n }\r\n\r\n // Find out how many bytes we can copy into the read buffer.\r\n const bytesToCopy: number = Math.min(chunk.buffer.byteLength - bytesCopiedFromBuffer, this.privTargetChunkSize - this.privNextBufferReadyBytes);\r\n const targetView: Uint8Array = new Uint8Array(this.privNextBufferToWrite);\r\n const sourceView: Uint8Array = new Uint8Array(chunk.buffer.slice(bytesCopiedFromBuffer, bytesToCopy + bytesCopiedFromBuffer));\r\n\r\n targetView.set(sourceView, this.privNextBufferReadyBytes);\r\n this.privNextBufferReadyBytes += bytesToCopy;\r\n bytesCopiedFromBuffer += bytesToCopy;\r\n\r\n // Are we ready to write?\r\n if (this.privNextBufferReadyBytes === this.privTargetChunkSize) {\r\n super.writeStreamChunk({\r\n buffer: this.privNextBufferToWrite,\r\n isEnd: false,\r\n timeReceived: this.privNextBufferStartTime,\r\n });\r\n this.privNextBufferReadyBytes = 0;\r\n this.privNextBufferToWrite = undefined;\r\n }\r\n }\r\n }\r\n\r\n public close(): void {\r\n // Send whatever is pending, then close the base class.\r\n if (0 !== this.privNextBufferReadyBytes && !this.isClosed) {\r\n super.writeStreamChunk({\r\n buffer: this.privNextBufferToWrite.slice(0, this.privNextBufferReadyBytes),\r\n isEnd: false,\r\n timeReceived: this.privNextBufferStartTime,\r\n });\r\n }\r\n\r\n super.close();\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { ConnectionMessage } from \"./ConnectionMessage.js\";\r\nimport { IStringDictionary } from \"./IDictionary.js\";\r\nimport { EventType, PlatformEvent } from \"./PlatformEvent.js\";\r\n\r\nexport class ServiceEvent extends PlatformEvent {\r\n private privJsonResult: string;\r\n\r\n public constructor(eventName: string, jsonstring: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n this.privJsonResult = jsonstring;\r\n }\r\n\r\n public get jsonString(): string {\r\n return this.privJsonResult;\r\n }\r\n}\r\n\r\nexport class ConnectionEvent extends PlatformEvent {\r\n private privConnectionId: string;\r\n\r\n public constructor(eventName: string, connectionId: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n this.privConnectionId = connectionId;\r\n }\r\n\r\n public get connectionId(): string {\r\n return this.privConnectionId;\r\n }\r\n}\r\n\r\nexport class ConnectionStartEvent extends ConnectionEvent {\r\n private privUri: string;\r\n private privHeaders: IStringDictionary;\r\n\r\n public constructor(connectionId: string, uri: string, headers?: IStringDictionary) {\r\n super(\"ConnectionStartEvent\", connectionId);\r\n this.privUri = uri;\r\n this.privHeaders = headers;\r\n }\r\n\r\n public get uri(): string {\r\n return this.privUri;\r\n }\r\n\r\n public get headers(): IStringDictionary {\r\n return this.privHeaders;\r\n }\r\n}\r\n\r\nexport class ConnectionEstablishedEvent extends ConnectionEvent {\r\n public constructor(connectionId: string) {\r\n super(\"ConnectionEstablishedEvent\", connectionId);\r\n }\r\n}\r\n\r\nexport class ConnectionClosedEvent extends ConnectionEvent {\r\n private privReason: string;\r\n private privStatusCode: number;\r\n\r\n public constructor(connectionId: string, statusCode: number, reason: string) {\r\n super(\"ConnectionClosedEvent\", connectionId, EventType.Debug);\r\n this.privReason = reason;\r\n this.privStatusCode = statusCode;\r\n }\r\n\r\n public get reason(): string {\r\n return this.privReason;\r\n }\r\n\r\n public get statusCode(): number {\r\n return this.privStatusCode;\r\n }\r\n}\r\n\r\nexport class ConnectionErrorEvent extends ConnectionEvent {\r\n private readonly privMessage: string;\r\n private readonly privType: string;\r\n\r\n public constructor(connectionId: string, message: string, type: string) {\r\n super(\"ConnectionErrorEvent\", connectionId, EventType.Debug);\r\n this.privMessage = message;\r\n this.privType = type;\r\n }\r\n\r\n public get message(): string {\r\n return this.privMessage;\r\n }\r\n\r\n public get type(): string {\r\n return this.privType;\r\n }\r\n}\r\n\r\nexport class ConnectionEstablishErrorEvent extends ConnectionEvent {\r\n private privStatusCode: number;\r\n private privReason: string;\r\n\r\n public constructor(connectionId: string, statuscode: number, reason: string) {\r\n super(\"ConnectionEstablishErrorEvent\", connectionId, EventType.Error);\r\n this.privStatusCode = statuscode;\r\n this.privReason = reason;\r\n }\r\n\r\n public get reason(): string {\r\n return this.privReason;\r\n }\r\n\r\n public get statusCode(): number {\r\n return this.privStatusCode;\r\n }\r\n}\r\n\r\nexport class ConnectionMessageReceivedEvent extends ConnectionEvent {\r\n private privNetworkReceivedTime: string;\r\n private privMessage: ConnectionMessage;\r\n\r\n public constructor(connectionId: string, networkReceivedTimeISO: string, message: ConnectionMessage) {\r\n super(\"ConnectionMessageReceivedEvent\", connectionId);\r\n this.privNetworkReceivedTime = networkReceivedTimeISO;\r\n this.privMessage = message;\r\n }\r\n\r\n public get networkReceivedTime(): string {\r\n return this.privNetworkReceivedTime;\r\n }\r\n\r\n public get message(): ConnectionMessage {\r\n return this.privMessage;\r\n }\r\n}\r\n\r\nexport class ConnectionMessageSentEvent extends ConnectionEvent {\r\n private privNetworkSentTime: string;\r\n private privMessage: ConnectionMessage;\r\n\r\n public constructor(connectionId: string, networkSentTimeISO: string, message: ConnectionMessage) {\r\n super(\"ConnectionMessageSentEvent\", connectionId);\r\n this.privNetworkSentTime = networkSentTimeISO;\r\n this.privMessage = message;\r\n }\r\n\r\n public get networkSentTime(): string {\r\n return this.privNetworkSentTime;\r\n }\r\n\r\n public get message(): ConnectionMessage {\r\n return this.privMessage;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { InvalidOperationError } from \"./Error.js\";\r\nimport { createNoDashGuid } from \"./Guid.js\";\r\nimport { IStringDictionary } from \"./IDictionary.js\";\r\n\r\nexport enum MessageType {\r\n Text,\r\n Binary,\r\n}\r\n\r\nexport class ConnectionMessage {\r\n\r\n private privMessageType: MessageType;\r\n private privHeaders: IStringDictionary;\r\n private privBody: any = null;\r\n private privSize: number;\r\n\r\n private privId: string;\r\n\r\n public constructor(\r\n messageType: MessageType,\r\n body: any,\r\n headers?: IStringDictionary,\r\n id?: string) {\r\n\r\n if (messageType === MessageType.Text && body && !(typeof (body) === \"string\")) {\r\n throw new InvalidOperationError(\"Payload must be a string\");\r\n }\r\n\r\n if (messageType === MessageType.Binary && body && !(body instanceof ArrayBuffer)) {\r\n throw new InvalidOperationError(\"Payload must be ArrayBuffer\");\r\n }\r\n\r\n this.privMessageType = messageType;\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n this.privBody = body;\r\n this.privHeaders = headers ? headers : {};\r\n this.privId = id ? id : createNoDashGuid();\r\n switch (this.messageType) {\r\n case MessageType.Binary:\r\n this.privSize = this.binaryBody !== null ? this.binaryBody.byteLength : 0;\r\n break;\r\n case MessageType.Text:\r\n this.privSize = this.textBody.length;\r\n }\r\n }\r\n\r\n public get messageType(): MessageType {\r\n return this.privMessageType;\r\n }\r\n\r\n public get headers(): IStringDictionary {\r\n return this.privHeaders;\r\n }\r\n\r\n public get body(): any {\r\n return this.privBody;\r\n }\r\n\r\n public get textBody(): string {\r\n if (this.privMessageType === MessageType.Binary) {\r\n throw new InvalidOperationError(\"Not supported for binary message\");\r\n }\r\n\r\n return this.privBody as string;\r\n }\r\n\r\n public get binaryBody(): ArrayBuffer {\r\n if (this.privMessageType === MessageType.Text) {\r\n throw new InvalidOperationError(\"Not supported for text message\");\r\n }\r\n\r\n return this.privBody;\r\n }\r\n\r\n public get id(): string {\r\n return this.privId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport class ConnectionOpenResponse {\r\n private privStatusCode: number;\r\n private privReason: string;\r\n\r\n public constructor(statusCode: number, reason: string) {\r\n this.privStatusCode = statusCode;\r\n this.privReason = reason;\r\n }\r\n\r\n public get statusCode(): number {\r\n return this.privStatusCode;\r\n }\r\n\r\n public get reason(): string {\r\n return this.privReason;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Deferred } from \"./Promise.js\";\r\n\r\n/**\r\n * The error that is thrown when an argument passed in is null.\r\n *\r\n * @export\r\n * @class DefferalMap\r\n */\r\n\r\nexport class DeferralMap {\r\n private privMap: { [id: string]: Deferred } = {};\r\n\r\n public add(id: string, deferral: Deferred): void {\r\n this.privMap[id] = deferral;\r\n }\r\n\r\n public getId(id: string): Deferred {\r\n return this.privMap[id];\r\n }\r\n\r\n public complete(id: string, result: T): void {\r\n try {\r\n this.privMap[id].resolve(result);\r\n } catch (error) {\r\n this.privMap[id].reject(error as string);\r\n } finally {\r\n this.privMap[id] = undefined;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { AgentConfig } from \"../common.speech/Exports.js\";\r\nimport { EventType, PlatformEvent } from \"./PlatformEvent.js\";\r\n\r\nexport class DialogEvent extends PlatformEvent {\r\n\r\n public constructor(eventName: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n }\r\n}\r\n\r\nexport class SendingAgentContextMessageEvent extends DialogEvent {\r\n private privAgentConfig: AgentConfig;\r\n\r\n public constructor(agentConfig: AgentConfig) {\r\n super(\"SendingAgentContextMessageEvent\");\r\n this.privAgentConfig = agentConfig;\r\n }\r\n\r\n public get agentConfig(): AgentConfig {\r\n return this.privAgentConfig;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\n/**\r\n * The error that is thrown when an argument passed in is null.\r\n *\r\n * @export\r\n * @class ArgumentNullError\r\n * @extends {Error}\r\n */\r\nexport class ArgumentNullError extends Error {\r\n\r\n /**\r\n * Creates an instance of ArgumentNullError.\r\n *\r\n * @param {string} argumentName - Name of the argument that is null\r\n *\r\n * @memberOf ArgumentNullError\r\n */\r\n public constructor(argumentName: string) {\r\n super(argumentName);\r\n this.name = \"ArgumentNull\";\r\n this.message = argumentName;\r\n }\r\n}\r\n\r\n/**\r\n * The error that is thrown when an invalid operation is performed in the code.\r\n *\r\n * @export\r\n * @class InvalidOperationError\r\n * @extends {Error}\r\n */\r\nexport class InvalidOperationError extends Error {\r\n\r\n /**\r\n * Creates an instance of InvalidOperationError.\r\n *\r\n * @param {string} error - The error\r\n *\r\n * @memberOf InvalidOperationError\r\n */\r\n public constructor(error: string) {\r\n super(error);\r\n this.name = \"InvalidOperation\";\r\n this.message = error;\r\n }\r\n}\r\n\r\n/**\r\n * The error that is thrown when an object is disposed.\r\n *\r\n * @export\r\n * @class ObjectDisposedError\r\n * @extends {Error}\r\n */\r\nexport class ObjectDisposedError extends Error {\r\n\r\n /**\r\n * Creates an instance of ObjectDisposedError.\r\n *\r\n * @param {string} objectName - The object that is disposed\r\n * @param {string} error - The error\r\n *\r\n * @memberOf ObjectDisposedError\r\n */\r\n public constructor(objectName: string, error?: string) {\r\n super(error);\r\n this.name = objectName + \"ObjectDisposed\";\r\n this.message = error;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ObjectDisposedError } from \"./Error.js\";\r\nimport { createNoDashGuid } from \"./Guid.js\";\r\nimport { IDetachable } from \"./IDetachable.js\";\r\nimport { IStringDictionary } from \"./IDictionary.js\";\r\nimport { IEventListener } from \"./IEventListener.js\";\r\nimport { IEventSource } from \"./IEventSource.js\";\r\nimport { PlatformEvent } from \"./PlatformEvent.js\";\r\n\r\nexport class EventSource implements IEventSource {\r\n private privEventListeners: IStringDictionary<(event: TEvent) => void> = {};\r\n private privMetadata: IStringDictionary;\r\n private privIsDisposed: boolean = false;\r\n private privConsoleListener: IDetachable = undefined;\r\n\r\n public constructor(metadata?: IStringDictionary) {\r\n this.privMetadata = metadata;\r\n }\r\n\r\n public onEvent(event: TEvent): void {\r\n if (this.isDisposed()) {\r\n throw (new ObjectDisposedError(\"EventSource\"));\r\n }\r\n\r\n if (this.metadata) {\r\n for (const paramName in this.metadata) {\r\n if (paramName) {\r\n if (event.metadata) {\r\n if (!event.metadata[paramName]) {\r\n event.metadata[paramName] = this.metadata[paramName];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (const eventId in this.privEventListeners) {\r\n if (eventId && this.privEventListeners[eventId]) {\r\n this.privEventListeners[eventId](event);\r\n }\r\n }\r\n }\r\n\r\n public attach(onEventCallback: (event: TEvent) => void): IDetachable {\r\n const id = createNoDashGuid();\r\n this.privEventListeners[id] = onEventCallback;\r\n return {\r\n detach: (): Promise => {\r\n delete this.privEventListeners[id];\r\n return Promise.resolve();\r\n },\r\n };\r\n }\r\n\r\n public attachListener(listener: IEventListener): IDetachable {\r\n return this.attach((e: TEvent): void => listener.onEvent(e));\r\n }\r\n\r\n public attachConsoleListener(listener: IEventListener): IDetachable {\r\n if (!!this.privConsoleListener) {\r\n void this.privConsoleListener.detach(); // Detach implementation for eventListeners is synchronous\r\n }\r\n this.privConsoleListener = this.attach((e: TEvent): void => listener.onEvent(e));\r\n return this.privConsoleListener;\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public dispose(): void {\r\n this.privEventListeners = null;\r\n this.privIsDisposed = true;\r\n }\r\n\r\n public get metadata(): IStringDictionary {\r\n return this.privMetadata;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ArgumentNullError } from \"./Error.js\";\r\nimport { EventSource } from \"./EventSource.js\";\r\nimport { IEventSource } from \"./IEventSource.js\";\r\nimport { PlatformEvent } from \"./PlatformEvent.js\";\r\n\r\nexport class Events {\r\n private static privInstance: IEventSource = new EventSource();\r\n\r\n public static setEventSource(eventSource: IEventSource): void {\r\n if (!eventSource) {\r\n throw new ArgumentNullError(\"eventSource\");\r\n }\r\n\r\n Events.privInstance = eventSource;\r\n }\r\n\r\n public static get instance(): IEventSource {\r\n return Events.privInstance;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport * from \"./AudioSourceEvents.js\";\r\nexport * from \"./ConnectionEvents.js\";\r\nexport * from \"./ConnectionMessage.js\";\r\nexport * from \"./ConnectionOpenResponse.js\";\r\nexport * from \"./DeferralMap.js\";\r\nexport * from \"./DialogEvents.js\";\r\nexport * from \"./Error.js\";\r\nexport * from \"./Events.js\";\r\nexport * from \"./EventSource.js\";\r\nexport * from \"./Guid.js\";\r\nexport * from \"./IAudioSource.js\";\r\nexport * from \"./IConnection.js\";\r\nexport * from \"./IDetachable.js\";\r\nexport * from \"./IDictionary.js\";\r\nexport * from \"./IDisposable.js\";\r\nexport * from \"./IEventListener.js\";\r\nexport * from \"./IEventSource.js\";\r\nexport * from \"./IErrorMessages.js\";\r\nexport * from \"./ITimer.js\";\r\nexport * from \"./IWebsocketMessageFormatter.js\";\r\nexport * from \"./List.js\";\r\nexport * from \"./PlatformEvent.js\";\r\nexport * from \"./Promise.js\";\r\nexport * from \"./Queue.js\";\r\nexport * from \"./RawWebsocketMessage.js\";\r\nexport * from \"./RiffPcmEncoder.js\";\r\nexport * from \"./Stream.js\";\r\nexport { TranslationStatus } from \"../common.speech/TranslationStatus.js\";\r\nexport * from \"./ChunkedArrayBufferStream.js\";\r\nexport * from \"./IAudioDestination.js\";\r\nexport * from \"./Timeout.js\";\r\nexport * from \"./OCSPEvents.js\";\r\nexport * from \"./BackgroundError.js\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { v4 as uuid } from \"uuid\";\r\n\r\nconst createGuid: () => string = (): string => uuid();\r\n\r\nconst createNoDashGuid: () => string = (): string => createGuid().replace(new RegExp(\"-\", \"g\"), \"\").toUpperCase();\r\n\r\nexport { createGuid, createNoDashGuid };\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ConnectionEvent } from \"./ConnectionEvents.js\";\r\nimport { ConnectionMessage } from \"./ConnectionMessage.js\";\r\nimport { ConnectionOpenResponse } from \"./ConnectionOpenResponse.js\";\r\nimport { EventSource } from \"./EventSource.js\";\r\n\r\nexport enum ConnectionState {\r\n None,\r\n Connected,\r\n Connecting,\r\n Disconnected,\r\n}\r\n\r\nexport interface IConnection {\r\n id: string;\r\n state(): ConnectionState;\r\n open(): Promise;\r\n send(message: ConnectionMessage): Promise;\r\n read(): Promise;\r\n events: EventSource;\r\n dispose(disposing?: string): Promise;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ObjectDisposedError } from \"./Error.js\";\r\nimport { IDetachable } from \"./IDetachable.js\";\r\nimport { IStringDictionary } from \"./IDictionary.js\";\r\nimport { IDisposable } from \"./IDisposable.js\";\r\n\r\nexport interface IList extends IDisposable {\r\n get(itemIndex: number): TItem;\r\n first(): TItem;\r\n last(): TItem;\r\n\r\n add(item: TItem): void;\r\n insertAt(index: number, item: TItem): void;\r\n\r\n removeFirst(): TItem;\r\n removeLast(): TItem;\r\n removeAt(index: number): TItem;\r\n remove(index: number, count: number): TItem[];\r\n clear(): void;\r\n\r\n length(): number;\r\n\r\n onAdded(addedCallback: () => void): IDetachable;\r\n onRemoved(removedCallback: () => void): IDetachable;\r\n onDisposed(disposedCallback: () => void): IDetachable;\r\n\r\n join(seperator?: string): string;\r\n\r\n toArray(): TItem[];\r\n\r\n any(callback?: (item: TItem, index: number) => boolean): boolean;\r\n all(callback: (item: TItem) => boolean): boolean;\r\n forEach(callback: (item: TItem, index: number) => void): void;\r\n select(callback: (item: TItem, index: number) => T2): List;\r\n where(callback: (item: TItem, index: number) => boolean): List;\r\n orderBy(compareFn: (a: TItem, b: TItem) => number): List;\r\n orderByDesc(compareFn: (a: TItem, b: TItem) => number): List;\r\n clone(): List;\r\n concat(list: List): List;\r\n concatArray(array: TItem[]): List;\r\n}\r\n\r\nexport class List implements IList {\r\n private privList: TItem[];\r\n private privSubscriptionIdCounter: number = 0;\r\n private privAddSubscriptions: IStringDictionary<() => void> = {};\r\n private privRemoveSubscriptions: IStringDictionary<() => void> = {};\r\n private privDisposedSubscriptions: IStringDictionary<() => void> = {};\r\n private privDisposeReason: string = null;\r\n\r\n public constructor(list?: TItem[]) {\r\n this.privList = [];\r\n // copy the list rather than taking as is.\r\n if (list) {\r\n for (const item of list) {\r\n this.privList.push(item);\r\n }\r\n }\r\n }\r\n\r\n public get(itemIndex: number): TItem {\r\n this.throwIfDisposed();\r\n return this.privList[itemIndex];\r\n }\r\n\r\n public first(): TItem {\r\n return this.get(0);\r\n }\r\n\r\n public last(): TItem {\r\n return this.get(this.length() - 1);\r\n }\r\n\r\n public add(item: TItem): void {\r\n this.throwIfDisposed();\r\n this.insertAt(this.privList.length, item);\r\n }\r\n\r\n public insertAt(index: number, item: TItem): void {\r\n this.throwIfDisposed();\r\n if (index === 0) {\r\n this.privList.unshift(item);\r\n } else if (index === this.privList.length) {\r\n this.privList.push(item);\r\n } else {\r\n this.privList.splice(index, 0, item);\r\n }\r\n this.triggerSubscriptions(this.privAddSubscriptions);\r\n }\r\n\r\n public removeFirst(): TItem {\r\n this.throwIfDisposed();\r\n return this.removeAt(0);\r\n }\r\n\r\n public removeLast(): TItem {\r\n this.throwIfDisposed();\r\n return this.removeAt(this.length() - 1);\r\n }\r\n\r\n public removeAt(index: number): TItem {\r\n this.throwIfDisposed();\r\n return this.remove(index, 1)[0];\r\n }\r\n\r\n public remove(index: number, count: number): TItem[] {\r\n this.throwIfDisposed();\r\n const removedElements = this.privList.splice(index, count);\r\n this.triggerSubscriptions(this.privRemoveSubscriptions);\r\n return removedElements;\r\n }\r\n\r\n public clear(): void {\r\n this.throwIfDisposed();\r\n this.remove(0, this.length());\r\n }\r\n\r\n public length(): number {\r\n this.throwIfDisposed();\r\n return this.privList.length;\r\n }\r\n\r\n public onAdded(addedCallback: () => void): IDetachable {\r\n this.throwIfDisposed();\r\n const subscriptionId = this.privSubscriptionIdCounter++;\r\n\r\n this.privAddSubscriptions[subscriptionId] = addedCallback;\r\n\r\n return {\r\n detach: (): Promise => {\r\n delete this.privAddSubscriptions[subscriptionId];\r\n return Promise.resolve();\r\n },\r\n };\r\n }\r\n\r\n public onRemoved(removedCallback: () => void): IDetachable {\r\n this.throwIfDisposed();\r\n const subscriptionId = this.privSubscriptionIdCounter++;\r\n\r\n this.privRemoveSubscriptions[subscriptionId] = removedCallback;\r\n\r\n return {\r\n detach: (): Promise => {\r\n delete this.privRemoveSubscriptions[subscriptionId];\r\n return Promise.resolve();\r\n },\r\n };\r\n }\r\n\r\n public onDisposed(disposedCallback: () => void): IDetachable {\r\n this.throwIfDisposed();\r\n const subscriptionId = this.privSubscriptionIdCounter++;\r\n\r\n this.privDisposedSubscriptions[subscriptionId] = disposedCallback;\r\n\r\n return {\r\n detach: (): Promise => {\r\n delete this.privDisposedSubscriptions[subscriptionId];\r\n return Promise.resolve();\r\n },\r\n };\r\n }\r\n\r\n public join(seperator?: string): string {\r\n this.throwIfDisposed();\r\n return this.privList.join(seperator);\r\n }\r\n\r\n public toArray(): TItem[] {\r\n const cloneCopy = Array();\r\n this.privList.forEach((val: TItem): void => {\r\n cloneCopy.push(val);\r\n });\r\n return cloneCopy;\r\n }\r\n\r\n public any(callback?: (item: TItem, index: number) => boolean): boolean {\r\n this.throwIfDisposed();\r\n if (callback) {\r\n return this.where(callback).length() > 0;\r\n } else {\r\n return this.length() > 0;\r\n }\r\n }\r\n\r\n public all(callback: (item: TItem) => boolean): boolean {\r\n this.throwIfDisposed();\r\n return this.where(callback).length() === this.length();\r\n }\r\n\r\n public forEach(callback: (item: TItem, index: number) => void): void {\r\n this.throwIfDisposed();\r\n for (let i = 0; i < this.length(); i++) {\r\n callback(this.privList[i], i);\r\n }\r\n }\r\n\r\n public select(callback: (item: TItem, index: number) => T2): List {\r\n this.throwIfDisposed();\r\n const selectList: T2[] = [];\r\n for (let i = 0; i < this.privList.length; i++) {\r\n selectList.push(callback(this.privList[i], i));\r\n }\r\n\r\n return new List(selectList);\r\n }\r\n\r\n public where(callback: (item: TItem, index: number) => boolean): List {\r\n this.throwIfDisposed();\r\n const filteredList = new List();\r\n for (let i = 0; i < this.privList.length; i++) {\r\n if (callback(this.privList[i], i)) {\r\n filteredList.add(this.privList[i]);\r\n }\r\n }\r\n return filteredList;\r\n }\r\n\r\n public orderBy(compareFn: (a: TItem, b: TItem) => number): List {\r\n this.throwIfDisposed();\r\n const clonedArray = this.toArray();\r\n const orderedArray = clonedArray.sort(compareFn);\r\n return new List(orderedArray);\r\n }\r\n\r\n public orderByDesc(compareFn: (a: TItem, b: TItem) => number): List {\r\n this.throwIfDisposed();\r\n return this.orderBy((a: TItem, b: TItem): number => compareFn(b, a));\r\n }\r\n\r\n public clone(): List {\r\n this.throwIfDisposed();\r\n return new List(this.toArray());\r\n }\r\n\r\n public concat(list: List): List {\r\n this.throwIfDisposed();\r\n return new List(this.privList.concat(list.toArray()));\r\n }\r\n\r\n public concatArray(array: TItem[]): List {\r\n this.throwIfDisposed();\r\n return new List(this.privList.concat(array));\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privList == null;\r\n }\r\n\r\n public dispose(reason?: string): void {\r\n if (!this.isDisposed()) {\r\n this.privDisposeReason = reason;\r\n this.privList = null;\r\n this.privAddSubscriptions = null;\r\n this.privRemoveSubscriptions = null;\r\n this.triggerSubscriptions(this.privDisposedSubscriptions);\r\n }\r\n }\r\n\r\n private throwIfDisposed(): void {\r\n if (this.isDisposed()) {\r\n throw new ObjectDisposedError(\"List\", this.privDisposeReason);\r\n }\r\n }\r\n\r\n private triggerSubscriptions(subscriptions: IStringDictionary<() => void>): void {\r\n if (subscriptions) {\r\n for (const subscriptionId in subscriptions) {\r\n if (subscriptionId) {\r\n subscriptions[subscriptionId]();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { EventType, PlatformEvent } from \"./PlatformEvent.js\";\r\n\r\nexport class OCSPEvent extends PlatformEvent {\r\n private privSignature: string;\r\n\r\n public constructor(eventName: string, eventType: EventType, signature: string) {\r\n super(eventName, eventType);\r\n\r\n this.privSignature = signature;\r\n }\r\n}\r\n\r\nexport class OCSPMemoryCacheHitEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPMemoryCacheHitEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPCacheMissEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPCacheMissEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPDiskCacheHitEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPDiskCacheHitEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPCacheUpdateNeededEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPCacheUpdateNeededEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPMemoryCacheStoreEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPMemoryCacheStoreEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPDiskCacheStoreEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPDiskCacheStoreEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPCacheUpdateCompleteEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPCacheUpdateCompleteEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPStapleReceivedEvent extends OCSPEvent {\r\n public constructor() {\r\n super(\"OCSPStapleReceivedEvent\", EventType.Debug, \"\");\r\n }\r\n}\r\n\r\nexport class OCSPWSUpgradeStartedEvent extends OCSPEvent {\r\n public constructor(serialNumber: string) {\r\n super(\"OCSPWSUpgradeStartedEvent\", EventType.Debug, serialNumber);\r\n }\r\n}\r\n\r\nexport class OCSPCacheEntryExpiredEvent extends OCSPEvent {\r\n private privExpireTime: number;\r\n\r\n public constructor(serialNumber: string, expireTime: number) {\r\n super(\"OCSPCacheEntryExpiredEvent\", EventType.Debug, serialNumber);\r\n this.privExpireTime = expireTime;\r\n }\r\n}\r\n\r\nexport class OCSPCacheEntryNeedsRefreshEvent extends OCSPEvent {\r\n private privExpireTime: number;\r\n private privStartTime: number;\r\n\r\n public constructor(serialNumber: string, startTime: number, expireTime: number) {\r\n super(\"OCSPCacheEntryNeedsRefreshEvent\", EventType.Debug, serialNumber);\r\n this.privExpireTime = expireTime;\r\n this.privStartTime = startTime;\r\n }\r\n}\r\n\r\nexport class OCSPCacheHitEvent extends OCSPEvent {\r\n private privExpireTime: number;\r\n private privStartTime: number;\r\n private privExpireTimeString: string;\r\n private privStartTimeString: string;\r\n\r\n public constructor(serialNumber: string, startTime: number, expireTime: number) {\r\n super(\"OCSPCacheHitEvent\", EventType.Debug, serialNumber);\r\n this.privExpireTime = expireTime;\r\n this.privExpireTimeString = new Date(expireTime).toLocaleDateString();\r\n this.privStartTime = startTime;\r\n this.privStartTimeString = new Date(startTime).toLocaleTimeString();\r\n }\r\n}\r\n\r\nexport class OCSPVerificationFailedEvent extends OCSPEvent {\r\n private privError: string;\r\n\r\n public constructor(serialNumber: string, error: string) {\r\n super(\"OCSPVerificationFailedEvent\", EventType.Debug, serialNumber);\r\n this.privError = error;\r\n }\r\n}\r\n\r\nexport class OCSPCacheFetchErrorEvent extends OCSPEvent {\r\n private privError: string;\r\n\r\n public constructor(serialNumber: string, error: string) {\r\n super(\"OCSPCacheFetchErrorEvent\", EventType.Debug, serialNumber);\r\n this.privError = error;\r\n }\r\n}\r\n\r\nexport class OCSPResponseRetrievedEvent extends OCSPEvent {\r\n public constructor(serialNumber: string) {\r\n super(\"OCSPResponseRetrievedEvent\", EventType.Debug, serialNumber);\r\n }\r\n}\r\n\r\nexport class OCSPCacheUpdateErrorEvent extends OCSPEvent {\r\n private privError: string;\r\n\r\n public constructor(serialNumber: string, error: string) {\r\n super(\"OCSPCacheUpdateErrorEvent\", EventType.Debug, serialNumber);\r\n this.privError = error;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { createNoDashGuid } from \"./Guid.js\";\r\nimport { IStringDictionary } from \"./IDictionary.js\";\r\n\r\nexport enum EventType {\r\n Debug,\r\n Info,\r\n Warning,\r\n Error,\r\n None,\r\n}\r\n\r\nexport class PlatformEvent {\r\n private privName: string;\r\n private privEventId: string;\r\n private privEventTime: string;\r\n private privEventType: EventType;\r\n private privMetadata: IStringDictionary;\r\n\r\n public constructor(eventName: string, eventType: EventType) {\r\n this.privName = eventName;\r\n this.privEventId = createNoDashGuid();\r\n this.privEventTime = new Date().toISOString();\r\n this.privEventType = eventType;\r\n this.privMetadata = { };\r\n }\r\n\r\n public get name(): string {\r\n return this.privName;\r\n }\r\n\r\n public get eventId(): string {\r\n return this.privEventId;\r\n }\r\n\r\n public get eventTime(): string {\r\n return this.privEventTime;\r\n }\r\n\r\n public get eventType(): EventType {\r\n return this.privEventType;\r\n }\r\n\r\n public get metadata(): IStringDictionary {\r\n return this.privMetadata;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file, @typescript-eslint/typedef */\r\n\r\nexport enum PromiseState {\r\n None,\r\n Resolved,\r\n Rejected,\r\n}\r\n\r\nexport interface IDeferred {\r\n readonly promise: Promise;\r\n\r\n resolve(result: T): IDeferred;\r\n\r\n reject(error: string): IDeferred;\r\n}\r\n\r\nexport class PromiseResult {\r\n protected privIsCompleted: boolean;\r\n protected privIsError: boolean;\r\n protected privError: string;\r\n protected privResult: T;\r\n\r\n public constructor(promiseResultEventSource: PromiseResultEventSource) {\r\n promiseResultEventSource.on((result: T): void => {\r\n if (!this.privIsCompleted) {\r\n this.privIsCompleted = true;\r\n this.privIsError = false;\r\n this.privResult = result;\r\n }\r\n }, (error: string): void => {\r\n if (!this.privIsCompleted) {\r\n this.privIsCompleted = true;\r\n this.privIsError = true;\r\n this.privError = error;\r\n }\r\n });\r\n }\r\n\r\n public get isCompleted(): boolean {\r\n return this.privIsCompleted;\r\n }\r\n\r\n public get isError(): boolean {\r\n return this.privIsError;\r\n }\r\n\r\n public get error(): string {\r\n return this.privError;\r\n }\r\n\r\n public get result(): T {\r\n return this.privResult;\r\n }\r\n\r\n public throwIfError = (): void => {\r\n if (this.isError) {\r\n throw this.error;\r\n }\r\n };\r\n}\r\n\r\nexport class PromiseResultEventSource {\r\n\r\n private privOnSetResult: (result: T) => void;\r\n private privOnSetError: (error: string) => void;\r\n\r\n public setResult = (result: T): void => {\r\n this.privOnSetResult(result);\r\n };\r\n\r\n public setError = (error: string): void => {\r\n this.privOnSetError(error);\r\n };\r\n\r\n public on = (onSetResult: (result: T) => void, onSetError: (error: string) => void): void => {\r\n this.privOnSetResult = onSetResult;\r\n this.privOnSetError = onSetError;\r\n };\r\n}\r\n\r\nexport class Deferred implements IDeferred {\r\n private privPromise: Promise;\r\n private privResolve: (value?: T | PromiseLike) => void;\r\n private privReject: (reason?: any) => void;\r\n\r\n public constructor() {\r\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\r\n this.privPromise = new Promise((resolve: (value: T) => void, reject: (reason: any) => void) => {\r\n this.privResolve = resolve;\r\n this.privReject = reject;\r\n });\r\n }\r\n\r\n public get promise(): Promise {\r\n return this.privPromise;\r\n }\r\n\r\n public resolve = (result: T | Promise): Deferred => {\r\n this.privResolve(result);\r\n return this;\r\n };\r\n\r\n public reject = (error: string): Deferred => {\r\n this.privReject(error);\r\n return this;\r\n };\r\n}\r\n\r\nexport class Sink {\r\n private privState: PromiseState = PromiseState.None;\r\n private privPromiseResult: PromiseResult = null;\r\n private privPromiseResultEvents: PromiseResultEventSource = null;\r\n\r\n private privSuccessHandlers: ((result: T) => void)[] = [];\r\n private privErrorHandlers: ((e: string) => void)[] = [];\r\n\r\n public constructor() {\r\n this.privPromiseResultEvents = new PromiseResultEventSource();\r\n this.privPromiseResult = new PromiseResult(this.privPromiseResultEvents);\r\n }\r\n\r\n public get state(): PromiseState {\r\n return this.privState;\r\n }\r\n\r\n public get result(): PromiseResult {\r\n return this.privPromiseResult;\r\n }\r\n\r\n public resolve(result: T): void {\r\n if (this.privState !== PromiseState.None) {\r\n throw new Error(\"'Cannot resolve a completed promise'\");\r\n }\r\n\r\n this.privState = PromiseState.Resolved;\r\n this.privPromiseResultEvents.setResult(result);\r\n\r\n for (let i = 0; i < this.privSuccessHandlers.length; i++) {\r\n this.executeSuccessCallback(result, this.privSuccessHandlers[i], this.privErrorHandlers[i]);\r\n }\r\n\r\n this.detachHandlers();\r\n }\r\n\r\n public reject(error: string): void {\r\n if (this.privState !== PromiseState.None) {\r\n throw new Error(\"'Cannot reject a completed promise'\");\r\n }\r\n\r\n this.privState = PromiseState.Rejected;\r\n this.privPromiseResultEvents.setError(error);\r\n\r\n for (const errorHandler of this.privErrorHandlers) {\r\n this.executeErrorCallback(error, errorHandler);\r\n }\r\n\r\n this.detachHandlers();\r\n }\r\n\r\n public on(\r\n successCallback: (result: T) => void,\r\n errorCallback: (error: string) => void): void {\r\n\r\n if (successCallback == null) {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n successCallback = (): void => { };\r\n }\r\n\r\n if (this.privState === PromiseState.None) {\r\n this.privSuccessHandlers.push(successCallback);\r\n this.privErrorHandlers.push(errorCallback);\r\n } else {\r\n if (this.privState === PromiseState.Resolved) {\r\n this.executeSuccessCallback(this.privPromiseResult.result, successCallback, errorCallback);\r\n } else if (this.privState === PromiseState.Rejected) {\r\n this.executeErrorCallback(this.privPromiseResult.error, errorCallback);\r\n }\r\n\r\n this.detachHandlers();\r\n }\r\n }\r\n\r\n private executeSuccessCallback(result: T, successCallback: (result: T) => void, errorCallback: (error: string) => void): void {\r\n try {\r\n successCallback(result);\r\n } catch (e) {\r\n this.executeErrorCallback(`'Unhandled callback error: ${e as string}'`, errorCallback);\r\n }\r\n }\r\n\r\n private executeErrorCallback(error: string, errorCallback: (error: string) => void): void {\r\n if (errorCallback) {\r\n try {\r\n errorCallback(error);\r\n } catch (e) {\r\n throw new Error(`'Unhandled callback error: ${e as string}. InnerError: ${error}'`);\r\n }\r\n } else {\r\n throw new Error(`'Unhandled error: ${error}'`);\r\n }\r\n }\r\n\r\n private detachHandlers(): void {\r\n this.privErrorHandlers = [];\r\n this.privSuccessHandlers = [];\r\n }\r\n}\r\n\r\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\r\nexport function marshalPromiseToCallbacks(\r\n promise: Promise,\r\n cb?: (value: T) => void,\r\n err?: (error: string) => void): void {\r\n promise.then((val: T): void => {\r\n try {\r\n if (!!cb) {\r\n cb(val);\r\n }\r\n } catch (error) {\r\n if (!!err) {\r\n try {\r\n if (error instanceof Error) {\r\n const typedError: Error = error ;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n // eslint-disable-next-line no-empty\r\n } catch (error) { }\r\n }\r\n }\r\n }, (error: any): void => {\r\n if (!!err) {\r\n try {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n // eslint-disable-next-line no-empty\r\n } catch (error) { }\r\n }\r\n });\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { InvalidOperationError, ObjectDisposedError } from \"./Error.js\";\r\nimport { IDetachable } from \"./IDetachable.js\";\r\nimport { IDisposable } from \"./IDisposable.js\";\r\nimport { List } from \"./List.js\";\r\nimport {\r\n Deferred,\r\n} from \"./Promise.js\";\r\nexport interface IQueue extends IDisposable {\r\n enqueue(item: TItem): void;\r\n enqueueFromPromise(promise: Promise): void;\r\n dequeue(): Promise;\r\n peek(): Promise;\r\n length(): number;\r\n}\r\n\r\nenum SubscriberType {\r\n Dequeue,\r\n Peek,\r\n}\r\n\r\nexport class Queue implements IQueue {\r\n private privPromiseStore: List> = new List>();\r\n private privList: List;\r\n private privDetachables: IDetachable[];\r\n private privSubscribers: List<{ type: SubscriberType; deferral: Deferred }>;\r\n private privIsDrainInProgress: boolean = false;\r\n private privIsDisposing: boolean = false;\r\n private privDisposeReason: string = null;\r\n\r\n public constructor(list?: List) {\r\n this.privList = list ? list : new List();\r\n this.privDetachables = [];\r\n this.privSubscribers = new List<{ type: SubscriberType; deferral: Deferred }>();\r\n this.privDetachables.push(this.privList.onAdded((): void => this.drain()));\r\n }\r\n\r\n public enqueue(item: TItem): void {\r\n this.throwIfDispose();\r\n this.enqueueFromPromise(new Promise((resolve: (value: TItem) => void): void => resolve(item)));\r\n }\r\n\r\n public enqueueFromPromise(promise: Promise): void {\r\n this.throwIfDispose();\r\n promise.then((val: TItem): void => {\r\n this.privList.add(val);\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n }, (): void => { });\r\n }\r\n\r\n public dequeue(): Promise {\r\n this.throwIfDispose();\r\n const deferredSubscriber = new Deferred();\r\n\r\n if (this.privSubscribers) {\r\n this.privSubscribers.add({ deferral: deferredSubscriber, type: SubscriberType.Dequeue });\r\n this.drain();\r\n }\r\n\r\n return deferredSubscriber.promise;\r\n }\r\n\r\n public peek(): Promise {\r\n this.throwIfDispose();\r\n const deferredSubscriber = new Deferred();\r\n\r\n const subs = this.privSubscribers;\r\n if (subs) {\r\n this.privSubscribers.add({ deferral: deferredSubscriber, type: SubscriberType.Peek });\r\n this.drain();\r\n }\r\n\r\n return deferredSubscriber.promise;\r\n }\r\n\r\n public length(): number {\r\n this.throwIfDispose();\r\n return this.privList.length();\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privSubscribers == null;\r\n }\r\n\r\n public async drainAndDispose(pendingItemProcessor: (pendingItemInQueue: TItem) => void, reason?: string): Promise {\r\n if (!this.isDisposed() && !this.privIsDisposing) {\r\n this.privDisposeReason = reason;\r\n this.privIsDisposing = true;\r\n\r\n const subs = this.privSubscribers;\r\n if (subs) {\r\n while (subs.length() > 0) {\r\n const subscriber = subs.removeFirst();\r\n // TODO: this needs work (Resolve(null) instead?).\r\n subscriber.deferral.resolve(undefined);\r\n // subscriber.deferral.reject(\"Disposed\");\r\n }\r\n\r\n // note: this block assumes cooperative multitasking, i.e.,\r\n // between the if-statement and the assignment there are no\r\n // thread switches.\r\n // Reason is that between the initial const = this.; and this\r\n // point there is the derral.resolve() operation that might have\r\n // caused recursive calls to the Queue, especially, calling\r\n // Dispose() on the queue alredy (which would reset the var\r\n // here to null!).\r\n // That should generally hold true for javascript...\r\n if (this.privSubscribers === subs) {\r\n this.privSubscribers = subs;\r\n }\r\n }\r\n\r\n for (const detachable of this.privDetachables) {\r\n await detachable.detach();\r\n }\r\n\r\n if (this.privPromiseStore.length() > 0 && pendingItemProcessor) {\r\n const promiseArray: Promise[] = [];\r\n\r\n this.privPromiseStore.toArray().forEach((wrapper: Promise): void => {\r\n promiseArray.push(wrapper);\r\n });\r\n return Promise.all(promiseArray).finally((): void => {\r\n this.privSubscribers = null;\r\n this.privList.forEach((item: TItem): void => {\r\n pendingItemProcessor(item);\r\n });\r\n this.privList = null;\r\n return;\r\n }).then();\r\n } else {\r\n this.privSubscribers = null;\r\n this.privList = null;\r\n }\r\n }\r\n }\r\n\r\n public async dispose(reason?: string): Promise {\r\n await this.drainAndDispose(null, reason);\r\n }\r\n\r\n private drain(): void {\r\n if (!this.privIsDrainInProgress && !this.privIsDisposing) {\r\n this.privIsDrainInProgress = true;\r\n\r\n const subs = this.privSubscribers;\r\n const lists = this.privList;\r\n if (subs && lists) {\r\n while (lists.length() > 0 && subs.length() > 0 && !this.privIsDisposing) {\r\n const subscriber = subs.removeFirst();\r\n if (subscriber.type === SubscriberType.Peek) {\r\n subscriber.deferral.resolve(lists.first());\r\n } else {\r\n const dequeuedItem = lists.removeFirst();\r\n subscriber.deferral.resolve(dequeuedItem);\r\n }\r\n }\r\n\r\n // note: this block assumes cooperative multitasking, i.e.,\r\n // between the if-statement and the assignment there are no\r\n // thread switches.\r\n // Reason is that between the initial const = this.; and this\r\n // point there is the derral.resolve() operation that might have\r\n // caused recursive calls to the Queue, especially, calling\r\n // Dispose() on the queue alredy (which would reset the var\r\n // here to null!).\r\n // That should generally hold true for javascript...\r\n if (this.privSubscribers === subs) {\r\n this.privSubscribers = subs;\r\n }\r\n\r\n // note: this block assumes cooperative multitasking, i.e.,\r\n // between the if-statement and the assignment there are no\r\n // thread switches.\r\n // Reason is that between the initial const = this.; and this\r\n // point there is the derral.resolve() operation that might have\r\n // caused recursive calls to the Queue, especially, calling\r\n // Dispose() on the queue alredy (which would reset the var\r\n // here to null!).\r\n // That should generally hold true for javascript...\r\n if (this.privList === lists) {\r\n this.privList = lists;\r\n }\r\n }\r\n\r\n this.privIsDrainInProgress = false;\r\n }\r\n }\r\n\r\n private throwIfDispose(): void {\r\n if (this.isDisposed()) {\r\n if (this.privDisposeReason) {\r\n throw new InvalidOperationError(this.privDisposeReason);\r\n }\r\n\r\n throw new ObjectDisposedError(\"Queue\");\r\n } else if (this.privIsDisposing) {\r\n throw new InvalidOperationError(\"Queue disposing\");\r\n }\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-unsafe-assignment */\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { MessageType } from \"./ConnectionMessage.js\";\r\nimport { ArgumentNullError, InvalidOperationError } from \"./Error.js\";\r\nimport { createNoDashGuid } from \"./Guid.js\";\r\n\r\nexport class RawWebsocketMessage {\r\n private privMessageType: MessageType;\r\n private privPayload: any = null;\r\n private privId: string;\r\n\r\n public constructor(messageType: MessageType, payload: any, id?: string) {\r\n if (!payload) {\r\n throw new ArgumentNullError(\"payload\");\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\r\n if (messageType === MessageType.Binary && Object.getPrototypeOf(payload).constructor.name !== \"ArrayBuffer\") {\r\n throw new InvalidOperationError(\"Payload must be ArrayBuffer\");\r\n }\r\n\r\n if (messageType === MessageType.Text && !(typeof (payload) === \"string\")) {\r\n throw new InvalidOperationError(\"Payload must be a string\");\r\n }\r\n\r\n this.privMessageType = messageType;\r\n this.privPayload = payload;\r\n this.privId = id ? id : createNoDashGuid();\r\n }\r\n\r\n public get messageType(): MessageType {\r\n return this.privMessageType;\r\n }\r\n\r\n public get payload(): any {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\r\n return this.privPayload;\r\n }\r\n\r\n public get textContent(): string {\r\n if (this.privMessageType === MessageType.Binary) {\r\n throw new InvalidOperationError(\"Not supported for binary message\");\r\n }\r\n\r\n return this.privPayload as string;\r\n }\r\n\r\n public get binaryContent(): ArrayBuffer {\r\n if (this.privMessageType === MessageType.Text) {\r\n throw new InvalidOperationError(\"Not supported for text message\");\r\n }\r\n\r\n return this.privPayload as ArrayBuffer;\r\n }\r\n\r\n public get id(): string {\r\n return this.privId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport class RiffPcmEncoder {\r\n\r\n private privActualSampleRate: number;\r\n private privDesiredSampleRate: number;\r\n\r\n public constructor(actualSampleRate: number, desiredSampleRate: number) {\r\n this.privActualSampleRate = actualSampleRate;\r\n this.privDesiredSampleRate = desiredSampleRate;\r\n }\r\n\r\n public encode(actualAudioFrame: Float32Array): ArrayBuffer {\r\n\r\n const audioFrame = this.downSampleAudioFrame(actualAudioFrame, this.privActualSampleRate, this.privDesiredSampleRate);\r\n\r\n if (!audioFrame) {\r\n return null;\r\n }\r\n\r\n const audioLength = audioFrame.length * 2;\r\n\r\n const buffer = new ArrayBuffer(audioLength);\r\n const view = new DataView(buffer);\r\n this.floatTo16BitPCM(view, 0, audioFrame);\r\n\r\n return buffer;\r\n }\r\n\r\n private setString(view: DataView, offset: number, str: string): void {\r\n for (let i = 0; i < str.length; i++) {\r\n view.setUint8(offset + i, str.charCodeAt(i));\r\n }\r\n }\r\n\r\n private floatTo16BitPCM(view: DataView, offset: number, input: Float32Array): void {\r\n for (let i = 0; i < input.length; i++ , offset += 2) {\r\n const s = Math.max(-1, Math.min(1, input[i]));\r\n view.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7FFF, true);\r\n }\r\n }\r\n\r\n private downSampleAudioFrame(\r\n srcFrame: Float32Array,\r\n srcRate: number,\r\n dstRate: number): Float32Array {\r\n\r\n if (!srcFrame) {\r\n return null;\r\n }\r\n\r\n if (dstRate === srcRate || dstRate > srcRate) {\r\n return srcFrame;\r\n }\r\n\r\n const ratio = srcRate / dstRate;\r\n const dstLength = Math.round(srcFrame.length / ratio);\r\n const dstFrame = new Float32Array(dstLength);\r\n let srcOffset = 0;\r\n let dstOffset = 0;\r\n while (dstOffset < dstLength) {\r\n const nextSrcOffset = Math.round((dstOffset + 1) * ratio);\r\n let accum = 0;\r\n let count = 0;\r\n while (srcOffset < nextSrcOffset && srcOffset < srcFrame.length) {\r\n accum += srcFrame[srcOffset++];\r\n count++;\r\n }\r\n dstFrame[dstOffset++] = accum / count;\r\n }\r\n\r\n return dstFrame;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { InvalidOperationError } from \"./Error.js\";\r\nimport { createNoDashGuid } from \"./Guid.js\";\r\nimport { Queue } from \"./Queue.js\";\r\n\r\nexport interface IStreamChunk {\r\n isEnd: boolean;\r\n buffer: TBuffer;\r\n timeReceived: number;\r\n}\r\n\r\nexport class Stream {\r\n private privId: string;\r\n private privIsWriteEnded: boolean = false;\r\n private privIsReadEnded: boolean = false;\r\n private privReaderQueue: Queue>;\r\n\r\n public constructor(streamId?: string) {\r\n this.privId = streamId ? streamId : createNoDashGuid();\r\n this.privReaderQueue = new Queue>();\r\n }\r\n\r\n public get isClosed(): boolean {\r\n return this.privIsWriteEnded;\r\n }\r\n\r\n public get isReadEnded(): boolean {\r\n return this.privIsReadEnded;\r\n }\r\n\r\n public get id(): string {\r\n return this.privId;\r\n }\r\n\r\n public close(): void {\r\n if (!this.privIsWriteEnded) {\r\n this.writeStreamChunk({\r\n buffer: null,\r\n isEnd: true,\r\n timeReceived: Date.now(),\r\n });\r\n this.privIsWriteEnded = true;\r\n }\r\n }\r\n\r\n public writeStreamChunk(streamChunk: IStreamChunk): void {\r\n this.throwIfClosed();\r\n if (!this.privReaderQueue.isDisposed()) {\r\n try {\r\n this.privReaderQueue.enqueue(streamChunk);\r\n } catch (e) {\r\n // Do nothing\r\n }\r\n }\r\n }\r\n\r\n public read(): Promise> {\r\n if (this.privIsReadEnded) {\r\n throw new InvalidOperationError(\"Stream read has already finished\");\r\n }\r\n\r\n return this.privReaderQueue\r\n .dequeue()\r\n .then(async (streamChunk: IStreamChunk): Promise> => {\r\n if (streamChunk === undefined || streamChunk.isEnd) {\r\n await this.privReaderQueue.dispose(\"End of stream reached\");\r\n }\r\n\r\n return streamChunk;\r\n });\r\n }\r\n public readEnded(): void {\r\n if (!this.privIsReadEnded) {\r\n this.privIsReadEnded = true;\r\n this.privReaderQueue = new Queue>();\r\n }\r\n }\r\n\r\n private throwIfClosed(): void {\r\n if (this.privIsWriteEnded) {\r\n throw new InvalidOperationError(\"Stream closed\");\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IStringDictionary } from \"./IDictionary.js\";\r\n\r\n/**\r\n * String helper functions\r\n */\r\nexport class StringUtils {\r\n\r\n /**\r\n * Formats a string by replacing the named {keys} in the string with the values contained in the replacement dictionary.\r\n * @param format The format string that contains the parts to replace surrounded by {}. For example: \"wss://{region}.cts.speech.microsoft.com\".\r\n * If your string needs to contain a { or } you can use the {{ and }} escape sequences respectively.\r\n * @param replacements The dictionary of replacements. If a replacement is not found, it is replaced with an empty string\r\n * @returns The formatted string. If you pass in a null or undefined format string, an empty string will be returned\r\n */\r\n public static formatString(format: string, replacements: IStringDictionary): string {\r\n if (!format) {\r\n return \"\";\r\n }\r\n\r\n if (!replacements) {\r\n return format;\r\n }\r\n\r\n let formatted: string = \"\";\r\n let key: string = \"\";\r\n\r\n const appendToFormatted = (str: string): void => {\r\n formatted += str;\r\n };\r\n const appendToKey = (str: string): void => {\r\n key += str;\r\n };\r\n let appendFunc: (str: string) => void = appendToFormatted;\r\n\r\n for (let i = 0; i < format.length; i++) {\r\n const c: string = format[i];\r\n const next: string = i + 1 < format.length ? format[i + 1] : \"\";\r\n\r\n switch (c) {\r\n case \"{\":\r\n if (next === \"{\") {\r\n appendFunc(\"{\");\r\n i++;\r\n } else {\r\n appendFunc = appendToKey;\r\n }\r\n break;\r\n\r\n case \"}\":\r\n if (next === \"}\") {\r\n appendFunc(\"}\");\r\n i++;\r\n } else {\r\n if (replacements.hasOwnProperty(key)) {\r\n formatted += replacements[key];\r\n }\r\n\r\n appendFunc = appendToFormatted;\r\n key = \"\";\r\n }\r\n break;\r\n\r\n default:\r\n appendFunc(c);\r\n break;\r\n }\r\n }\r\n\r\n return formatted;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\ntype TWorkerMessage = ICallNotification | IClearResponse | IErrorNotification | IErrorResponse;\r\n\r\ninterface IClearResponse {\r\n error: null;\r\n id: number;\r\n}\r\n\r\ninterface IErrorNotification {\r\n error: {\r\n message: string;\r\n };\r\n id: null;\r\n result: null;\r\n}\r\n\r\ninterface IErrorResponse {\r\n error: {\r\n message: string;\r\n };\r\n id: number;\r\n result: null;\r\n}\r\n\r\ninterface ICallNotification {\r\n id: null;\r\n method: \"call\";\r\n params: {\r\n timerId: number;\r\n };\r\n}\r\n\r\ninterface ISetNotification {\r\n id: null;\r\n method: \"set\";\r\n params: {\r\n delay: number;\r\n now: number;\r\n timerId: number;\r\n };\r\n}\r\n\r\ninterface IClearRequest {\r\n id: number;\r\n method: \"clear\";\r\n params: {\r\n timerId: number;\r\n };\r\n}\r\n\r\ninterface IWorkerEvent extends Event {\r\n data: TWorkerMessage;\r\n}\r\n\r\ninterface IWorkerTimers {\r\n clearTimeout: (timerId: number) => void;\r\n setTimeout: (func: () => any, delay: number) => number;\r\n}\r\n\r\ndeclare type Func = () => any;\r\n\r\nexport class Timeout {\r\n\r\n private static workerTimers: null | IWorkerTimers = null;\r\n\r\n public static clearTimeout: IWorkerTimers[\"clearTimeout\"] = (timerId: number): void => Timeout.timers().clearTimeout(timerId);\r\n\r\n public static setTimeout: IWorkerTimers[\"setTimeout\"] = (func: () => any, delay: number): number => Timeout.timers().setTimeout(func, delay);\r\n\r\n public static load(): any {\r\n // Prefilling the Maps with a function indexed by zero is necessary to be compliant with the specification.\r\n const scheduledTimeoutFunctions: Map = new Map([[0, (): void => { }]]); // eslint-disable-line @typescript-eslint/no-empty-function\r\n const unhandledRequests: Map = new Map();\r\n\r\n // eslint-disable-next-line\r\n const workerScript = `!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=14)}([function(e,t,n){\"use strict\";n.d(t,\"a\",(function(){return i})),n.d(t,\"b\",(function(){return u})),n.d(t,\"c\",(function(){return a})),n.d(t,\"d\",(function(){return d}));const r=new Map,o=new Map,i=e=>{const t=r.get(e);if(void 0===t)throw new Error('There is no interval scheduled with the given id \"'.concat(e,'\".'));clearTimeout(t),r.delete(e)},u=e=>{const t=o.get(e);if(void 0===t)throw new Error('There is no timeout scheduled with the given id \"'.concat(e,'\".'));clearTimeout(t),o.delete(e)},f=(e,t)=>{let n,r;if(\"performance\"in self){const o=performance.now();n=o,r=e-Math.max(0,o-t)}else n=Date.now(),r=e;return{expected:n+r,remainingDelay:r}},c=(e,t,n,r)=>{const o=\"performance\"in self?performance.now():Date.now();o>n?postMessage({id:null,method:\"call\",params:{timerId:t}}):e.set(t,setTimeout(c,n-o,e,t,n))},a=(e,t,n)=>{const{expected:o,remainingDelay:i}=f(e,n);r.set(t,setTimeout(c,i,r,t,o))},d=(e,t,n)=>{const{expected:r,remainingDelay:i}=f(e,n);o.set(t,setTimeout(c,i,o,t,r))}},function(e,t,n){\"use strict\";n.r(t);var r=n(2);for(var o in r)\"default\"!==o&&function(e){n.d(t,e,(function(){return r[e]}))}(o);var i=n(3);for(var o in i)\"default\"!==o&&function(e){n.d(t,e,(function(){return i[e]}))}(o);var u=n(4);for(var o in u)\"default\"!==o&&function(e){n.d(t,e,(function(){return u[e]}))}(o);var f=n(5);for(var o in f)\"default\"!==o&&function(e){n.d(t,e,(function(){return f[e]}))}(o);var c=n(6);for(var o in c)\"default\"!==o&&function(e){n.d(t,e,(function(){return c[e]}))}(o);var a=n(7);for(var o in a)\"default\"!==o&&function(e){n.d(t,e,(function(){return a[e]}))}(o);var d=n(8);for(var o in d)\"default\"!==o&&function(e){n.d(t,e,(function(){return d[e]}))}(o);var s=n(9);for(var o in s)\"default\"!==o&&function(e){n.d(t,e,(function(){return s[e]}))}(o)},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t,n){\"use strict\";n.r(t);var r=n(11);for(var o in r)\"default\"!==o&&function(e){n.d(t,e,(function(){return r[e]}))}(o);var i=n(12);for(var o in i)\"default\"!==o&&function(e){n.d(t,e,(function(){return i[e]}))}(o);var u=n(13);for(var o in u)\"default\"!==o&&function(e){n.d(t,e,(function(){return u[e]}))}(o)},function(e,t){},function(e,t){},function(e,t){},function(e,t,n){\"use strict\";n.r(t);var r=n(0),o=n(1);for(var i in o)\"default\"!==i&&function(e){n.d(t,e,(function(){return o[e]}))}(i);var u=n(10);for(var i in u)\"default\"!==i&&function(e){n.d(t,e,(function(){return u[e]}))}(i);addEventListener(\"message\",({data:e})=>{try{if(\"clear\"===e.method){const{id:t,params:{timerId:n}}=e;Object(r.b)(n),postMessage({error:null,id:t})}else{if(\"set\"!==e.method)throw new Error('The given method \"'.concat(e.method,'\" is not supported'));{const{params:{delay:t,now:n,timerId:o}}=e;Object(r.d)(t,o,n)}}}catch(t){postMessage({error:{message:t.message},id:e.id,result:null})}})}]);`;\r\n const workerUrl = \"data:text/javascript;base64,\" + btoa(workerScript);\r\n const worker = new Worker(workerUrl);\r\n\r\n worker.addEventListener(\"message\", ({ data }: IWorkerEvent): void => {\r\n if (Timeout.isCallNotification(data)) {\r\n const {\r\n params: { timerId }\r\n } = data;\r\n\r\n const idOrFunc = scheduledTimeoutFunctions.get(timerId);\r\n\r\n if (typeof idOrFunc === \"number\") {\r\n const unhandledTimerId = unhandledRequests.get(idOrFunc);\r\n\r\n if (\r\n unhandledTimerId === undefined ||\r\n unhandledTimerId !== timerId\r\n ) {\r\n throw new Error(\"The timer is in an undefined state.\");\r\n }\r\n } else if (typeof idOrFunc !== \"undefined\") {\r\n idOrFunc();\r\n\r\n // A timeout can be safely deleted because it is only called once.\r\n scheduledTimeoutFunctions.delete(timerId);\r\n } else {\r\n throw new Error(\"The timer is in an undefined state.\");\r\n }\r\n } else if (Timeout.isClearResponse(data)) {\r\n const { id } = data;\r\n\r\n const unhandledTimerId = unhandledRequests.get(id);\r\n\r\n if (unhandledTimerId === undefined) {\r\n throw new Error(\"The timer is in an undefined state.\");\r\n }\r\n\r\n unhandledRequests.delete(id);\r\n\r\n scheduledTimeoutFunctions.delete(unhandledTimerId);\r\n } else {\r\n const {\r\n error: { message }\r\n } = data;\r\n\r\n throw new Error(message);\r\n }\r\n });\r\n\r\n const clearTimeout = (timerId: number): void => {\r\n const id = Math.random();\r\n\r\n unhandledRequests.set(id, timerId);\r\n scheduledTimeoutFunctions.set(timerId, id);\r\n\r\n worker.postMessage({\r\n id,\r\n method: \"clear\",\r\n params: { timerId }\r\n } as IClearRequest);\r\n };\r\n\r\n const setTimeout = (func: () => void, delay: number): number => {\r\n const timerId = Math.random();\r\n\r\n scheduledTimeoutFunctions.set(timerId, func);\r\n\r\n worker.postMessage({\r\n id: null,\r\n method: \"set\",\r\n params: {\r\n delay,\r\n now: performance.now(),\r\n timerId\r\n }\r\n } as ISetNotification);\r\n\r\n return timerId;\r\n };\r\n\r\n return {\r\n clearTimeout,\r\n setTimeout\r\n };\r\n }\r\n\r\n private static loadWorkerTimers(): () => IWorkerTimers {\r\n return (): IWorkerTimers => {\r\n if (Timeout.workerTimers !== null) {\r\n return Timeout.workerTimers;\r\n }\r\n\r\n Timeout.workerTimers = Timeout.load() as IWorkerTimers;\r\n\r\n return Timeout.workerTimers;\r\n };\r\n }\r\n\r\n public static timers: () => IWorkerTimers = Timeout.loadWorkerTimers();\r\n\r\n private static isCallNotification(message: TWorkerMessage): message is ICallNotification {\r\n return (message as ICallNotification).method !== undefined && (message as ICallNotification).method === \"call\";\r\n }\r\n\r\n private static isClearResponse(message: TWorkerMessage): message is IClearResponse {\r\n return (message as IClearResponse).error === null && typeof message.id === \"number\";\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { PullAudioOutputStream } from \"./Audio/AudioOutputStream.js\";\r\n\r\ninterface IActivity {\r\n conversation?: any;\r\n id?: string;\r\n replyToId?: string;\r\n type?: string;\r\n text?: string;\r\n speak?: any;\r\n}\r\n\r\n/**\r\n * Defines contents of received message/events.\r\n * @class ActivityReceivedEventArgs\r\n */\r\nexport class ActivityReceivedEventArgs {\r\n private privActivity: IActivity;\r\n private privAudioStream: PullAudioOutputStream;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {any} activity - The activity..\r\n */\r\n public constructor(activity: any, audioStream?: PullAudioOutputStream) {\r\n this.privActivity = activity as IActivity;\r\n this.privAudioStream = audioStream;\r\n }\r\n\r\n /**\r\n * Gets the received activity\r\n * @member ActivityReceivedEventArgs.prototype.activity\r\n * @function\r\n * @public\r\n * @returns {any} the received activity.\r\n */\r\n public get activity(): any {\r\n return this.privActivity;\r\n }\r\n\r\n public get audioStream(): PullAudioOutputStream {\r\n return this.privAudioStream;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { PathLike } from \"fs\";\r\nimport {\r\n FileAudioSource,\r\n MicAudioSource,\r\n PcmRecorder,\r\n} from \"../../common.browser/Exports.js\";\r\nimport { ISpeechConfigAudioDevice } from \"../../common.speech/Exports.js\";\r\nimport {\r\n AudioSourceEvent,\r\n EventSource,\r\n IAudioDestination,\r\n IAudioSource,\r\n IAudioStreamNode\r\n} from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../Contracts.js\";\r\nimport {\r\n AudioInputStream,\r\n AudioOutputStream,\r\n AudioStreamFormat,\r\n IPlayer,\r\n PullAudioInputStreamCallback,\r\n PullAudioOutputStream,\r\n PushAudioOutputStream,\r\n PushAudioOutputStreamCallback,\r\n SpeakerAudioDestination\r\n} from \"../Exports.js\";\r\nimport { AudioFileWriter } from \"./AudioFileWriter.js\";\r\nimport { PullAudioInputStreamImpl, PushAudioInputStreamImpl } from \"./AudioInputStream.js\";\r\nimport { PullAudioOutputStreamImpl, PushAudioOutputStreamImpl } from \"./AudioOutputStream.js\";\r\nimport { AudioStreamFormatImpl } from \"./AudioStreamFormat.js\";\r\n\r\n/**\r\n * Represents audio input configuration used for specifying what type of input to use (microphone, file, stream).\r\n * @class AudioConfig\r\n * Updated in version 1.11.0\r\n */\r\nexport abstract class AudioConfig {\r\n /**\r\n * Creates an AudioConfig object representing the default microphone on the system.\r\n * @member AudioConfig.fromDefaultMicrophoneInput\r\n * @function\r\n * @public\r\n * @returns {AudioConfig} The audio input configuration being created.\r\n */\r\n public static fromDefaultMicrophoneInput(): AudioConfig {\r\n const pcmRecorder = new PcmRecorder(true);\r\n return new AudioConfigImpl(new MicAudioSource(pcmRecorder));\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing a microphone with the specified device ID.\r\n * @member AudioConfig.fromMicrophoneInput\r\n * @function\r\n * @public\r\n * @param {string | undefined} deviceId - Specifies the device ID of the microphone to be used.\r\n * Default microphone is used the value is omitted.\r\n * @returns {AudioConfig} The audio input configuration being created.\r\n */\r\n public static fromMicrophoneInput(deviceId?: string): AudioConfig {\r\n const pcmRecorder = new PcmRecorder(true);\r\n return new AudioConfigImpl(new MicAudioSource(pcmRecorder, deviceId));\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing the specified file.\r\n * @member AudioConfig.fromWavFileInput\r\n * @function\r\n * @public\r\n * @param {File} fileName - Specifies the audio input file. Currently, only WAV / PCM is supported.\r\n * @returns {AudioConfig} The audio input configuration being created.\r\n */\r\n public static fromWavFileInput(file: File | Buffer, name: string = \"unnamedBuffer.wav\"): AudioConfig {\r\n return new AudioConfigImpl(new FileAudioSource(file, name));\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing the specified stream.\r\n * @member AudioConfig.fromStreamInput\r\n * @function\r\n * @public\r\n * @param {AudioInputStream | PullAudioInputStreamCallback | MediaStream} audioStream - Specifies the custom audio input\r\n * stream. Currently, only WAV / PCM is supported.\r\n * @returns {AudioConfig} The audio input configuration being created.\r\n */\r\n public static fromStreamInput(audioStream: AudioInputStream | PullAudioInputStreamCallback\r\n | MediaStream): AudioConfig {\r\n if (audioStream instanceof PullAudioInputStreamCallback) {\r\n return new AudioConfigImpl(new PullAudioInputStreamImpl(audioStream));\r\n }\r\n\r\n if (audioStream instanceof AudioInputStream) {\r\n return new AudioConfigImpl(audioStream as PushAudioInputStreamImpl);\r\n }\r\n if (typeof MediaStream !== \"undefined\" && audioStream instanceof MediaStream) {\r\n const pcmRecorder = new PcmRecorder(false);\r\n return new AudioConfigImpl(new MicAudioSource(pcmRecorder, null, null, audioStream));\r\n }\r\n\r\n throw new Error(\"Not Supported Type\");\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing the default speaker.\r\n * @member AudioConfig.fromDefaultSpeakerOutput\r\n * @function\r\n * @public\r\n * @returns {AudioConfig} The audio output configuration being created.\r\n * Added in version 1.11.0\r\n */\r\n public static fromDefaultSpeakerOutput(): AudioConfig {\r\n return new AudioOutputConfigImpl(new SpeakerAudioDestination());\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing the custom IPlayer object.\r\n * You can use the IPlayer object to control pause, resume, etc.\r\n * @member AudioConfig.fromSpeakerOutput\r\n * @function\r\n * @public\r\n * @param {IPlayer} player - the IPlayer object for playback.\r\n * @returns {AudioConfig} The audio output configuration being created.\r\n * Added in version 1.12.0\r\n */\r\n public static fromSpeakerOutput(player?: IPlayer): AudioConfig {\r\n if (player === undefined) {\r\n return AudioConfig.fromDefaultSpeakerOutput();\r\n }\r\n if (player instanceof SpeakerAudioDestination) {\r\n return new AudioOutputConfigImpl(player);\r\n }\r\n\r\n throw new Error(\"Not Supported Type\");\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing a specified output audio file\r\n * @member AudioConfig.fromAudioFileOutput\r\n * @function\r\n * @public\r\n * @param {PathLike} filename - the filename of the output audio file\r\n * @returns {AudioConfig} The audio output configuration being created.\r\n * Added in version 1.11.0\r\n */\r\n public static fromAudioFileOutput(filename: PathLike): AudioConfig {\r\n return new AudioOutputConfigImpl(new AudioFileWriter(filename));\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing a specified audio output stream\r\n * @member AudioConfig.fromStreamOutput\r\n * @function\r\n * @public\r\n * @param {AudioOutputStream | PushAudioOutputStreamCallback} audioStream - Specifies the custom audio output\r\n * stream.\r\n * @returns {AudioConfig} The audio output configuration being created.\r\n * Added in version 1.11.0\r\n */\r\n public static fromStreamOutput(audioStream: AudioOutputStream | PushAudioOutputStreamCallback): AudioConfig {\r\n if (audioStream instanceof PushAudioOutputStreamCallback) {\r\n return new AudioOutputConfigImpl(new PushAudioOutputStreamImpl(audioStream));\r\n }\r\n\r\n if (audioStream instanceof PushAudioOutputStream) {\r\n return new AudioOutputConfigImpl(audioStream as PushAudioOutputStreamImpl);\r\n }\r\n\r\n if (audioStream instanceof PullAudioOutputStream) {\r\n return new AudioOutputConfigImpl(audioStream as PullAudioOutputStreamImpl);\r\n }\r\n\r\n throw new Error(\"Not Supported Type\");\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member AudioConfig.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n\r\n /**\r\n * Sets an arbitrary property.\r\n * @member SpeechConfig.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property to set.\r\n * @param {string} value - The new value of the property.\r\n */\r\n public abstract setProperty(name: string, value: string): void;\r\n\r\n /**\r\n * Returns the current value of an arbitrary property.\r\n * @member SpeechConfig.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property to query.\r\n * @param {string} def - The value to return in case the property is not known.\r\n * @returns {string} The current value, or provided default, of the given property.\r\n */\r\n public abstract getProperty(name: string, def?: string): string;\r\n\r\n}\r\n\r\n/**\r\n * Represents audio input stream used for custom audio input configurations.\r\n * @private\r\n * @class AudioConfigImpl\r\n */\r\nexport class AudioConfigImpl extends AudioConfig implements IAudioSource {\r\n private privSource: IAudioSource;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {IAudioSource} source - An audio source.\r\n */\r\n public constructor(source: IAudioSource) {\r\n super();\r\n this.privSource = source;\r\n }\r\n\r\n /**\r\n * Format information for the audio\r\n */\r\n public get format(): Promise {\r\n return this.privSource.format;\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, err?: (error: string) => void): void {\r\n this.privSource.turnOff().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.id\r\n * @function\r\n * @public\r\n */\r\n public id(): string {\r\n return this.privSource.id();\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.turnOn\r\n * @function\r\n * @public\r\n * @returns {Promise} A promise.\r\n */\r\n public turnOn(): Promise {\r\n return this.privSource.turnOn();\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.attach\r\n * @function\r\n * @public\r\n * @param {string} audioNodeId - The audio node id.\r\n * @returns {Promise} A promise.\r\n */\r\n public attach(audioNodeId: string): Promise {\r\n return this.privSource.attach(audioNodeId);\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.detach\r\n * @function\r\n * @public\r\n * @param {string} audioNodeId - The audio node id.\r\n */\r\n public detach(audioNodeId: string): void {\r\n return this.privSource.detach(audioNodeId);\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.turnOff\r\n * @function\r\n * @public\r\n * @returns {Promise} A promise.\r\n */\r\n public turnOff(): Promise {\r\n return this.privSource.turnOff();\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.events\r\n * @function\r\n * @public\r\n * @returns {EventSource} An event source for audio events.\r\n */\r\n public get events(): EventSource {\r\n return this.privSource.events;\r\n }\r\n\r\n public setProperty(name: string, value: string): void {\r\n Contracts.throwIfNull(value, \"value\");\r\n\r\n if (undefined !== this.privSource.setProperty) {\r\n this.privSource.setProperty(name, value);\r\n } else {\r\n throw new Error(\"This AudioConfig instance does not support setting properties.\");\r\n }\r\n\r\n }\r\n\r\n public getProperty(name: string, def?: string): string {\r\n if (undefined !== this.privSource.getProperty) {\r\n return this.privSource.getProperty(name, def);\r\n } else {\r\n throw new Error(\"This AudioConfig instance does not support getting properties.\");\r\n }\r\n\r\n return def;\r\n }\r\n\r\n public get deviceInfo(): Promise {\r\n return this.privSource.deviceInfo;\r\n }\r\n}\r\n\r\nexport class AudioOutputConfigImpl extends AudioConfig implements IAudioDestination {\r\n private privDestination: IAudioDestination;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {IAudioDestination} destination - An audio destination.\r\n */\r\n public constructor(destination: IAudioDestination) {\r\n super();\r\n this.privDestination = destination;\r\n }\r\n\r\n public set format(format: AudioStreamFormat) {\r\n this.privDestination.format = format;\r\n }\r\n\r\n public write(buffer: ArrayBuffer): void {\r\n this.privDestination.write(buffer);\r\n }\r\n\r\n public close(): void {\r\n this.privDestination.close();\r\n }\r\n\r\n public id(): string {\r\n return this.privDestination.id();\r\n }\r\n\r\n public setProperty(): void {\r\n throw new Error(\"This AudioConfig instance does not support setting properties.\");\r\n }\r\n\r\n public getProperty(): string {\r\n throw new Error(\"This AudioConfig instance does not support getting properties.\");\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport * as fs from \"fs\";\r\nimport { IAudioDestination } from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../Contracts.js\";\r\nimport { AudioStreamFormat } from \"../Exports.js\";\r\nimport { AudioOutputFormatImpl } from \"./AudioOutputFormat.js\";\r\n\r\nexport class AudioFileWriter implements IAudioDestination {\r\n private privAudioFormat: AudioOutputFormatImpl;\r\n private privFd: number;\r\n private privId: string;\r\n private privWriteStream: fs.WriteStream;\r\n\r\n public constructor(filename: fs.PathLike) {\r\n Contracts.throwIfNullOrUndefined(fs.openSync, \"\\nFile System access not available, please use Push or PullAudioOutputStream\");\r\n this.privFd = fs.openSync(filename, \"w\");\r\n }\r\n\r\n public set format(format: AudioStreamFormat) {\r\n Contracts.throwIfNotUndefined(this.privAudioFormat, \"format is already set\");\r\n this.privAudioFormat = format as AudioOutputFormatImpl;\r\n let headerOffset: number = 0;\r\n if (this.privAudioFormat.hasHeader) {\r\n headerOffset = this.privAudioFormat.header.byteLength;\r\n }\r\n if (this.privFd !== undefined) {\r\n this.privWriteStream = fs.createWriteStream(\"\", {fd: this.privFd, start: headerOffset, autoClose: false});\r\n }\r\n }\r\n\r\n public write(buffer: ArrayBuffer): void {\r\n Contracts.throwIfNullOrUndefined(this.privAudioFormat, \"must set format before writing.\");\r\n if (this.privWriteStream !== undefined) {\r\n this.privWriteStream.write(new Uint8Array(buffer.slice(0)));\r\n }\r\n }\r\n\r\n public close(): void {\r\n if (this.privFd !== undefined) {\r\n this.privWriteStream.on(\"finish\", (): void => {\r\n if (this.privAudioFormat.hasHeader) {\r\n this.privAudioFormat.updateHeader(this.privWriteStream.bytesWritten);\r\n fs.writeSync(this.privFd,\r\n new Int8Array(this.privAudioFormat.header),\r\n 0,\r\n this.privAudioFormat.header.byteLength,\r\n 0);\r\n }\r\n fs.closeSync(this.privFd);\r\n this.privFd = undefined;\r\n });\r\n this.privWriteStream.end();\r\n }\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n connectivity,\r\n ISpeechConfigAudioDevice,\r\n type,\r\n} from \"../../common.speech/Exports.js\";\r\nimport {\r\n AudioSourceEvent,\r\n AudioSourceInitializingEvent,\r\n AudioSourceReadyEvent,\r\n AudioStreamNodeAttachedEvent,\r\n AudioStreamNodeAttachingEvent,\r\n AudioStreamNodeDetachedEvent,\r\n ChunkedArrayBufferStream,\r\n Events,\r\n EventSource,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IStreamChunk,\r\n Stream,\r\n} from \"../../common/Exports.js\";\r\nimport { createNoDashGuid } from \"../../common/Guid.js\";\r\nimport { AudioStreamFormat, PullAudioInputStreamCallback } from \"../Exports.js\";\r\nimport { AudioStreamFormatImpl } from \"./AudioStreamFormat.js\";\r\n\r\n/**\r\n * Represents audio input stream used for custom audio input configurations.\r\n * @class AudioInputStream\r\n */\r\nexport abstract class AudioInputStream {\r\n\r\n /**\r\n * Creates and initializes an instance.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Creates a memory backed PushAudioInputStream with the specified audio format.\r\n * @member AudioInputStream.createPushStream\r\n * @function\r\n * @public\r\n * @param {AudioStreamFormat} format - The audio data format in which audio will be\r\n * written to the push audio stream's write() method (Required if format is not 16 kHz 16bit mono PCM).\r\n * @returns {PushAudioInputStream} The audio input stream being created.\r\n */\r\n public static createPushStream(format?: AudioStreamFormat): PushAudioInputStream {\r\n return PushAudioInputStream.create(format);\r\n }\r\n\r\n /**\r\n * Creates a PullAudioInputStream that delegates to the specified callback interface for read()\r\n * and close() methods.\r\n * @member AudioInputStream.createPullStream\r\n * @function\r\n * @public\r\n * @param {PullAudioInputStreamCallback} callback - The custom audio input object, derived from\r\n * PullAudioInputStreamCallback\r\n * @param {AudioStreamFormat} format - The audio data format in which audio will be returned from\r\n * the callback's read() method (Required if format is not 16 kHz 16bit mono PCM).\r\n * @returns {PullAudioInputStream} The audio input stream being created.\r\n */\r\n public static createPullStream(callback: PullAudioInputStreamCallback, format?: AudioStreamFormat): PullAudioInputStream {\r\n return PullAudioInputStream.create(callback, format);\r\n // throw new Error(\"Oops\");\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member AudioInputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * Represents memory backed push audio input stream used for custom audio input configurations.\r\n * @class PushAudioInputStream\r\n */\r\nexport abstract class PushAudioInputStream extends AudioInputStream {\r\n\r\n /**\r\n * Creates a memory backed PushAudioInputStream with the specified audio format.\r\n * @member PushAudioInputStream.create\r\n * @function\r\n * @public\r\n * @param {AudioStreamFormat} format - The audio data format in which audio will be written to the\r\n * push audio stream's write() method (Required if format is not 16 kHz 16bit mono PCM).\r\n * @returns {PushAudioInputStream} The push audio input stream being created.\r\n */\r\n public static create(format?: AudioStreamFormat): PushAudioInputStream {\r\n return new PushAudioInputStreamImpl(format);\r\n }\r\n\r\n /**\r\n * Writes the audio data specified by making an internal copy of the data.\r\n * @member PushAudioInputStream.prototype.write\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - The audio buffer of which this function will make a copy.\r\n */\r\n public abstract write(dataBuffer: ArrayBuffer): void;\r\n\r\n /**\r\n * Closes the stream.\r\n * @member PushAudioInputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * Represents memory backed push audio input stream used for custom audio input configurations.\r\n * @private\r\n * @class PushAudioInputStreamImpl\r\n */\r\nexport class PushAudioInputStreamImpl extends PushAudioInputStream implements IAudioSource {\r\n\r\n private privFormat: AudioStreamFormatImpl;\r\n private privId: string;\r\n private privEvents: EventSource;\r\n private privStream: Stream;\r\n\r\n /**\r\n * Creates and initalizes an instance with the given values.\r\n * @constructor\r\n * @param {AudioStreamFormat} format - The audio stream format.\r\n */\r\n public constructor(format?: AudioStreamFormat) {\r\n super();\r\n if (format === undefined) {\r\n this.privFormat = AudioStreamFormatImpl.getDefaultInputFormat();\r\n } else {\r\n this.privFormat = format as AudioStreamFormatImpl;\r\n }\r\n this.privEvents = new EventSource();\r\n this.privId = createNoDashGuid();\r\n this.privStream = new ChunkedArrayBufferStream(this.privFormat.avgBytesPerSec / 10);\r\n }\r\n\r\n /**\r\n * Format information for the audio\r\n */\r\n public get format(): Promise {\r\n return Promise.resolve(this.privFormat);\r\n }\r\n\r\n /**\r\n * Writes the audio data specified by making an internal copy of the data.\r\n * @member PushAudioInputStreamImpl.prototype.write\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - The audio buffer of which this function will make a copy.\r\n */\r\n public write(dataBuffer: ArrayBuffer): void {\r\n this.privStream.writeStreamChunk({\r\n buffer: dataBuffer,\r\n isEnd: false,\r\n timeReceived: Date.now()\r\n });\r\n }\r\n\r\n /**\r\n * Closes the stream.\r\n * @member PushAudioInputStreamImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n this.privStream.close();\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n public turnOn(): Promise {\r\n this.onEvent(new AudioSourceInitializingEvent(this.privId)); // no stream id\r\n this.onEvent(new AudioSourceReadyEvent(this.privId));\r\n return;\r\n }\r\n\r\n public async attach(audioNodeId: string): Promise {\r\n this.onEvent(new AudioStreamNodeAttachingEvent(this.privId, audioNodeId));\r\n\r\n await this.turnOn();\r\n const stream = this.privStream;\r\n this.onEvent(new AudioStreamNodeAttachedEvent(this.privId, audioNodeId));\r\n return {\r\n detach: async (): Promise => {\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n return this.turnOff();\r\n },\r\n id: (): string => audioNodeId,\r\n read: (): Promise> => stream.read(),\r\n };\r\n }\r\n\r\n public detach(audioNodeId: string): void {\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n }\r\n\r\n public turnOff(): Promise {\r\n return;\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privEvents;\r\n }\r\n\r\n public get deviceInfo(): Promise {\r\n return Promise.resolve({\r\n bitspersample: this.privFormat.bitsPerSample,\r\n channelcount: this.privFormat.channels,\r\n connectivity: connectivity.Unknown,\r\n manufacturer: \"Speech SDK\",\r\n model: \"PushStream\",\r\n samplerate: this.privFormat.samplesPerSec,\r\n type: type.Stream,\r\n });\r\n }\r\n\r\n private onEvent(event: AudioSourceEvent): void {\r\n this.privEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n private toBuffer(arrayBuffer: ArrayBuffer): Buffer {\r\n const buf: Buffer = Buffer.alloc(arrayBuffer.byteLength);\r\n const view: Uint8Array = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < buf.length; ++i) {\r\n buf[i] = view[i];\r\n }\r\n return buf;\r\n }\r\n}\r\n\r\n/*\r\n * Represents audio input stream used for custom audio input configurations.\r\n * @class PullAudioInputStream\r\n */\r\nexport abstract class PullAudioInputStream extends AudioInputStream {\r\n /**\r\n * Creates and initializes and instance.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n super();\r\n}\r\n\r\n /**\r\n * Creates a PullAudioInputStream that delegates to the specified callback interface for\r\n * read() and close() methods, using the default format (16 kHz 16bit mono PCM).\r\n * @member PullAudioInputStream.create\r\n * @function\r\n * @public\r\n * @param {PullAudioInputStreamCallback} callback - The custom audio input object,\r\n * derived from PullAudioInputStreamCustomCallback\r\n * @param {AudioStreamFormat} format - The audio data format in which audio will be\r\n * returned from the callback's read() method (Required if format is not 16 kHz 16bit mono PCM).\r\n * @returns {PullAudioInputStream} The push audio input stream being created.\r\n */\r\n public static create(callback: PullAudioInputStreamCallback, format?: AudioStreamFormat): PullAudioInputStream {\r\n return new PullAudioInputStreamImpl(callback, format as AudioStreamFormatImpl);\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member PullAudioInputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n\r\n}\r\n\r\n/**\r\n * Represents audio input stream used for custom audio input configurations.\r\n * @private\r\n * @class PullAudioInputStreamImpl\r\n */\r\nexport class PullAudioInputStreamImpl extends PullAudioInputStream implements IAudioSource {\r\n\r\n private privCallback: PullAudioInputStreamCallback;\r\n private privFormat: AudioStreamFormatImpl;\r\n private privId: string;\r\n private privEvents: EventSource;\r\n private privIsClosed: boolean;\r\n private privBufferSize: number;\r\n\r\n /**\r\n * Creates a PullAudioInputStream that delegates to the specified callback interface for\r\n * read() and close() methods, using the default format (16 kHz 16bit mono PCM).\r\n * @constructor\r\n * @param {PullAudioInputStreamCallback} callback - The custom audio input object,\r\n * derived from PullAudioInputStreamCustomCallback\r\n * @param {AudioStreamFormat} format - The audio data format in which audio will be\r\n * returned from the callback's read() method (Required if format is not 16 kHz 16bit mono PCM).\r\n */\r\n public constructor(callback: PullAudioInputStreamCallback, format?: AudioStreamFormatImpl) {\r\n super();\r\n if (undefined === format) {\r\n this.privFormat = AudioStreamFormat.getDefaultInputFormat() as AudioStreamFormatImpl;\r\n } else {\r\n this.privFormat = format;\r\n }\r\n this.privEvents = new EventSource();\r\n this.privId = createNoDashGuid();\r\n this.privCallback = callback;\r\n this.privIsClosed = false;\r\n this.privBufferSize = this.privFormat.avgBytesPerSec / 10;\r\n }\r\n\r\n /**\r\n * Format information for the audio\r\n */\r\n public get format(): Promise {\r\n return Promise.resolve(this.privFormat);\r\n }\r\n\r\n /**\r\n * Closes the stream.\r\n * @member PullAudioInputStreamImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n this.privIsClosed = true;\r\n this.privCallback.close();\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n public turnOn(): Promise {\r\n this.onEvent(new AudioSourceInitializingEvent(this.privId)); // no stream id\r\n this.onEvent(new AudioSourceReadyEvent(this.privId));\r\n return;\r\n }\r\n\r\n public async attach(audioNodeId: string): Promise {\r\n this.onEvent(new AudioStreamNodeAttachingEvent(this.privId, audioNodeId));\r\n\r\n await this.turnOn();\r\n this.onEvent(new AudioStreamNodeAttachedEvent(this.privId, audioNodeId));\r\n return {\r\n detach: (): Promise => {\r\n this.privCallback.close();\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n return this.turnOff();\r\n },\r\n id: (): string => audioNodeId,\r\n read: (): Promise> => {\r\n let totalBytes: number = 0;\r\n let transmitBuff: ArrayBuffer;\r\n // Until we have the minimum number of bytes to send in a transmission, keep asking for more.\r\n while (totalBytes < this.privBufferSize) {\r\n // Sizing the read buffer to the delta between the perfect size and what's left means we won't ever get too much\r\n // data back.\r\n const readBuff: ArrayBuffer = new ArrayBuffer(this.privBufferSize - totalBytes);\r\n const pulledBytes: number = this.privCallback.read(readBuff);\r\n // If there is no return buffer yet defined, set the return buffer to the that was just populated.\r\n // This was, if we have enough data there's no copy penalty, but if we don't we have a buffer that's the\r\n // preferred size allocated.\r\n if (undefined === transmitBuff) {\r\n transmitBuff = readBuff;\r\n } else {\r\n // Not the first bite at the apple, so fill the return buffer with the data we got back.\r\n const intView: Int8Array = new Int8Array(transmitBuff);\r\n intView.set(new Int8Array(readBuff), totalBytes);\r\n }\r\n // If there are no bytes to read, just break out and be done.\r\n if (0 === pulledBytes) {\r\n break;\r\n }\r\n totalBytes += pulledBytes;\r\n }\r\n return Promise.resolve>({\r\n buffer: transmitBuff.slice(0, totalBytes),\r\n isEnd: this.privIsClosed || totalBytes === 0,\r\n timeReceived: Date.now(),\r\n });\r\n },\r\n };\r\n }\r\n\r\n public detach(audioNodeId: string): void {\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n }\r\n\r\n public turnOff(): Promise {\r\n return;\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privEvents;\r\n }\r\n\r\n public get deviceInfo(): Promise {\r\n return Promise.resolve({\r\n bitspersample: this.privFormat.bitsPerSample,\r\n channelcount: this.privFormat.channels,\r\n connectivity: connectivity.Unknown,\r\n manufacturer: \"Speech SDK\",\r\n model: \"PullStream\",\r\n samplerate: this.privFormat.samplesPerSec,\r\n type: type.Stream,\r\n });\r\n }\r\n\r\n private onEvent(event: AudioSourceEvent): void {\r\n this.privEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { INumberDictionary } from \"../../common/Exports.js\";\r\nimport { SpeechSynthesisOutputFormat } from \"../SpeechSynthesisOutputFormat.js\";\r\nimport { AudioFormatTag, AudioStreamFormatImpl } from \"./AudioStreamFormat.js\";\r\n\r\n/**\r\n * @private\r\n * @class AudioOutputFormatImpl\r\n * Updated in version 1.17.0\r\n */\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class AudioOutputFormatImpl extends AudioStreamFormatImpl {\r\n public static SpeechSynthesisOutputFormatToString: INumberDictionary = {\r\n [SpeechSynthesisOutputFormat.Raw8Khz8BitMonoMULaw]: \"raw-8khz-8bit-mono-mulaw\",\r\n [SpeechSynthesisOutputFormat.Riff16Khz16KbpsMonoSiren]: \"riff-16khz-16kbps-mono-siren\",\r\n [SpeechSynthesisOutputFormat.Audio16Khz16KbpsMonoSiren]: \"audio-16khz-16kbps-mono-siren\",\r\n [SpeechSynthesisOutputFormat.Audio16Khz32KBitRateMonoMp3]: \"audio-16khz-32kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio16Khz128KBitRateMonoMp3]: \"audio-16khz-128kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio16Khz64KBitRateMonoMp3]: \"audio-16khz-64kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio24Khz48KBitRateMonoMp3]: \"audio-24khz-48kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio24Khz96KBitRateMonoMp3]: \"audio-24khz-96kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio24Khz160KBitRateMonoMp3]: \"audio-24khz-160kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Raw16Khz16BitMonoTrueSilk]: \"raw-16khz-16bit-mono-truesilk\",\r\n [SpeechSynthesisOutputFormat.Riff16Khz16BitMonoPcm]: \"riff-16khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff8Khz16BitMonoPcm]: \"riff-8khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm]: \"riff-24khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff8Khz8BitMonoMULaw]: \"riff-8khz-8bit-mono-mulaw\",\r\n [SpeechSynthesisOutputFormat.Raw16Khz16BitMonoPcm]: \"raw-16khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Raw24Khz16BitMonoPcm]: \"raw-24khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Raw8Khz16BitMonoPcm]: \"raw-8khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Ogg16Khz16BitMonoOpus]: \"ogg-16khz-16bit-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Ogg24Khz16BitMonoOpus]: \"ogg-24khz-16bit-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Raw48Khz16BitMonoPcm]: \"raw-48khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff48Khz16BitMonoPcm]: \"riff-48khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Audio48Khz96KBitRateMonoMp3]: \"audio-48khz-96kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio48Khz192KBitRateMonoMp3]: \"audio-48khz-192kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Ogg48Khz16BitMonoOpus]: \"ogg-48khz-16bit-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Webm16Khz16BitMonoOpus]: \"webm-16khz-16bit-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Webm24Khz16BitMonoOpus]: \"webm-24khz-16bit-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Webm24Khz16Bit24KbpsMonoOpus]: \"webm-24khz-16bit-24kbps-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Raw24Khz16BitMonoTrueSilk]: \"raw-24khz-16bit-mono-truesilk\",\r\n [SpeechSynthesisOutputFormat.Raw8Khz8BitMonoALaw]: \"raw-8khz-8bit-mono-alaw\",\r\n [SpeechSynthesisOutputFormat.Riff8Khz8BitMonoALaw]: \"riff-8khz-8bit-mono-alaw\",\r\n [SpeechSynthesisOutputFormat.Audio16Khz16Bit32KbpsMonoOpus]: \"audio-16khz-16bit-32kbps-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Audio24Khz16Bit48KbpsMonoOpus]: \"audio-24khz-16bit-48kbps-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Audio24Khz16Bit24KbpsMonoOpus]: \"audio-24khz-16bit-24kbps-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Raw22050Hz16BitMonoPcm]: \"raw-22050hz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff22050Hz16BitMonoPcm]: \"riff-22050hz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Raw44100Hz16BitMonoPcm]: \"raw-44100hz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff44100Hz16BitMonoPcm]: \"riff-44100hz-16bit-mono-pcm\",\r\n };\r\n private priAudioFormatString: string;\r\n /**\r\n * audio format string for synthesis request, which may differ from priAudioFormatString.\r\n * e.g. for riff format, we will request raw format and add a header in SDK side.\r\n */\r\n private readonly priRequestAudioFormatString: string;\r\n private readonly priHasHeader: boolean;\r\n\r\n /**\r\n * Creates an instance with the given values.\r\n * @constructor\r\n * @param formatTag\r\n * @param {number} channels - Number of channels.\r\n * @param {number} samplesPerSec - Samples per second.\r\n * @param {number} avgBytesPerSec - Average bytes per second.\r\n * @param {number} blockAlign - Block alignment.\r\n * @param {number} bitsPerSample - Bits per sample.\r\n * @param {string} audioFormatString - Audio format string\r\n * @param {string} requestAudioFormatString - Audio format string sent to service.\r\n * @param {boolean} hasHeader - If the format has header or not.\r\n */\r\n public constructor(formatTag: AudioFormatTag,\r\n channels: number,\r\n samplesPerSec: number,\r\n avgBytesPerSec: number,\r\n blockAlign: number,\r\n bitsPerSample: number,\r\n audioFormatString: string,\r\n requestAudioFormatString: string,\r\n hasHeader: boolean) {\r\n super(samplesPerSec, bitsPerSample, channels, formatTag);\r\n this.formatTag = formatTag;\r\n this.avgBytesPerSec = avgBytesPerSec;\r\n this.blockAlign = blockAlign;\r\n this.priAudioFormatString = audioFormatString;\r\n this.priRequestAudioFormatString = requestAudioFormatString;\r\n this.priHasHeader = hasHeader;\r\n }\r\n\r\n public static fromSpeechSynthesisOutputFormat(speechSynthesisOutputFormat?: SpeechSynthesisOutputFormat): AudioOutputFormatImpl {\r\n if (speechSynthesisOutputFormat === undefined) {\r\n return AudioOutputFormatImpl.getDefaultOutputFormat();\r\n }\r\n return AudioOutputFormatImpl.fromSpeechSynthesisOutputFormatString(\r\n AudioOutputFormatImpl.SpeechSynthesisOutputFormatToString[speechSynthesisOutputFormat]);\r\n }\r\n\r\n public static fromSpeechSynthesisOutputFormatString(speechSynthesisOutputFormatString: string): AudioOutputFormatImpl {\r\n switch (speechSynthesisOutputFormatString) {\r\n case \"raw-8khz-8bit-mono-mulaw\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MuLaw,\r\n 1,\r\n 8000,\r\n 8000,\r\n 1,\r\n 8,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"riff-16khz-16kbps-mono-siren\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.Siren,\r\n 1,\r\n 16000,\r\n 2000,\r\n 40,\r\n 0,\r\n speechSynthesisOutputFormatString,\r\n \"audio-16khz-16kbps-mono-siren\",\r\n true);\r\n case \"audio-16khz-16kbps-mono-siren\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.Siren,\r\n 1,\r\n 16000,\r\n 2000,\r\n 40,\r\n 0,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-16khz-32kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 16000,\r\n 32 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-16khz-128kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 16000,\r\n 128 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-16khz-64kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 16000,\r\n 64 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-48kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 24000,\r\n 48 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-96kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 24000,\r\n 96 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-160kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 24000,\r\n 160 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"raw-16khz-16bit-mono-truesilk\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.SILKSkype,\r\n 1,\r\n 16000,\r\n 32000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n\r\n case \"riff-8khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 8000,\r\n 16000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-8khz-16bit-mono-pcm\",\r\n true);\r\n case \"riff-24khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 24000,\r\n 48000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-24khz-16bit-mono-pcm\",\r\n true);\r\n case \"riff-8khz-8bit-mono-mulaw\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MuLaw,\r\n 1,\r\n 8000,\r\n 8000,\r\n 1,\r\n 8,\r\n speechSynthesisOutputFormatString,\r\n \"raw-8khz-8bit-mono-mulaw\",\r\n true);\r\n case \"raw-16khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 16000,\r\n 32000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-16khz-16bit-mono-pcm\",\r\n false);\r\n case \"raw-24khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 24000,\r\n 48000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-24khz-16bit-mono-pcm\",\r\n false);\r\n case \"raw-8khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 8000,\r\n 16000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-8khz-16bit-mono-pcm\",\r\n false);\r\n case \"ogg-16khz-16bit-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OGG_OPUS,\r\n 1,\r\n 16000,\r\n 8192,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"ogg-24khz-16bit-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OGG_OPUS,\r\n 1,\r\n 24000,\r\n 8192,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"raw-48khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 48000,\r\n 96000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-48khz-16bit-mono-pcm\",\r\n false);\r\n case \"riff-48khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 48000,\r\n 96000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-48khz-16bit-mono-pcm\",\r\n true);\r\n case \"audio-48khz-96kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 48000,\r\n 96 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-48khz-192kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 48000,\r\n 192 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"ogg-48khz-16bit-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OGG_OPUS,\r\n 1,\r\n 48000,\r\n 12000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"webm-16khz-16bit-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.WEBM_OPUS,\r\n 1,\r\n 16000,\r\n 4000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"webm-24khz-16bit-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.WEBM_OPUS,\r\n 1,\r\n 24000,\r\n 6000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"webm-24khz-16bit-24kbps-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.WEBM_OPUS,\r\n 1,\r\n 24000,\r\n 3000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-16khz-16bit-32kbps-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OPUS,\r\n 1,\r\n 16000,\r\n 4000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-16bit-48kbps-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OPUS,\r\n 1,\r\n 24000,\r\n 6000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-16bit-24kbps-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OPUS,\r\n 1,\r\n 24000,\r\n 3000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-16bit-mono-flac\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.FLAC,\r\n 1,\r\n 24000,\r\n 24000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-48khz-16bit-mono-flac\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.FLAC,\r\n 1,\r\n 48000,\r\n 30000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"raw-24khz-16bit-mono-truesilk\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.SILKSkype,\r\n 1,\r\n 24000,\r\n 48000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"raw-8khz-8bit-mono-alaw\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.ALaw,\r\n 1,\r\n 8000,\r\n 8000,\r\n 1,\r\n 8,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"riff-8khz-8bit-mono-alaw\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.ALaw,\r\n 1,\r\n 8000,\r\n 8000,\r\n 1,\r\n 8,\r\n speechSynthesisOutputFormatString,\r\n \"raw-8khz-8bit-mono-alaw\",\r\n true);\r\n case \"raw-22050hz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 22050,\r\n 44100,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"riff-22050hz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 22050,\r\n 44100,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-22050hz-16bit-mono-pcm\",\r\n true);\r\n case \"raw-44100hz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 44100,\r\n 88200,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"riff-44100hz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 44100,\r\n 88200,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-44100hz-16bit-mono-pcm\",\r\n true);\r\n case \"riff-16khz-16bit-mono-pcm\":\r\n default:\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 16000,\r\n 32000,\r\n 2,\r\n 16,\r\n \"riff-16khz-16bit-mono-pcm\",\r\n \"raw-16khz-16bit-mono-pcm\",\r\n true);\r\n }\r\n }\r\n\r\n public static getDefaultOutputFormat(): AudioOutputFormatImpl {\r\n return AudioOutputFormatImpl.fromSpeechSynthesisOutputFormatString(\r\n (typeof window !== \"undefined\") ? \"audio-24khz-48kbitrate-mono-mp3\" : \"riff-16khz-16bit-mono-pcm\");\r\n }\r\n\r\n /**\r\n * The format tag of the audio\r\n * @AudioFormatTag AudioOutputFormatImpl.prototype.formatTag\r\n * @function\r\n * @public\r\n */\r\n public formatTag: AudioFormatTag;\r\n\r\n /**\r\n * Specifies if this audio output format has a header\r\n * @boolean AudioOutputFormatImpl.prototype.hasHeader\r\n * @function\r\n * @public\r\n */\r\n public get hasHeader(): boolean {\r\n return this.priHasHeader;\r\n }\r\n\r\n /**\r\n * Specifies the header of this format\r\n * @ArrayBuffer AudioOutputFormatImpl.prototype.header\r\n * @function\r\n * @public\r\n */\r\n public get header(): ArrayBuffer {\r\n if (this.hasHeader) {\r\n return this.privHeader;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Updates the header based on the audio length\r\n * @member AudioOutputFormatImpl.updateHeader\r\n * @function\r\n * @public\r\n * @param {number} audioLength - the audio length\r\n */\r\n public updateHeader(audioLength: number): void {\r\n if (this.priHasHeader) {\r\n const view = new DataView(this.privHeader);\r\n view.setUint32(4, audioLength + this.privHeader.byteLength - 8, true);\r\n view.setUint32(40, audioLength, true);\r\n }\r\n }\r\n\r\n /**\r\n * Specifies the audio format string to be sent to the service\r\n * @string AudioOutputFormatImpl.prototype.requestAudioFormatString\r\n * @function\r\n * @public\r\n */\r\n public get requestAudioFormatString(): string {\r\n return this.priRequestAudioFormatString;\r\n }\r\n\r\n /**\r\n * Adds audio header\r\n * @param audio the raw audio without header\r\n * @returns the audio with header if applicable\r\n */\r\n\r\n public addHeader(audio: ArrayBuffer): ArrayBuffer {\r\n if (!this.hasHeader) {\r\n return audio;\r\n }\r\n this.updateHeader(audio.byteLength);\r\n const tmp = new Uint8Array(audio.byteLength + this.header.byteLength);\r\n tmp.set(new Uint8Array(this.header), 0);\r\n tmp.set(new Uint8Array(audio), this.header.byteLength);\r\n return tmp.buffer;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n createNoDashGuid,\r\n IAudioDestination,\r\n IStreamChunk,\r\n Stream,\r\n} from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../Contracts.js\";\r\nimport {\r\n AudioStreamFormat,\r\n PushAudioOutputStreamCallback\r\n} from \"../Exports.js\";\r\nimport { AudioOutputFormatImpl } from \"./AudioOutputFormat.js\";\r\n\r\n/**\r\n * Represents audio output stream used for custom audio output configurations.\r\n * @class AudioOutputStream\r\n */\r\nexport abstract class AudioOutputStream {\r\n\r\n /**\r\n * Creates and initializes an instance.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Sets the format of the AudioOutputStream\r\n * Note: the format is set by the synthesizer before writing. Do not set it before passing it to AudioConfig\r\n * @member AudioOutputStream.prototype.format\r\n */\r\n public abstract set format(format: AudioStreamFormat);\r\n\r\n /**\r\n * Creates a memory backed PullAudioOutputStream with the specified audio format.\r\n * @member AudioOutputStream.createPullStream\r\n * @function\r\n * @public\r\n * @returns {PullAudioOutputStream} The audio output stream being created.\r\n */\r\n public static createPullStream(): PullAudioOutputStream {\r\n return PullAudioOutputStream.create();\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member AudioOutputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * Represents memory backed push audio output stream used for custom audio output configurations.\r\n * @class PullAudioOutputStream\r\n */\r\nexport abstract class PullAudioOutputStream extends AudioOutputStream {\r\n\r\n /**\r\n * Creates a memory backed PullAudioOutputStream with the specified audio format.\r\n * @member PullAudioOutputStream.create\r\n * @function\r\n * @public\r\n * @returns {PullAudioOutputStream} The push audio output stream being created.\r\n */\r\n public static create(): PullAudioOutputStream {\r\n return new PullAudioOutputStreamImpl();\r\n }\r\n\r\n /**\r\n * Reads audio data from the internal buffer.\r\n * @member PullAudioOutputStream.prototype.read\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - An ArrayBuffer to store the read data.\r\n * @returns {Promise} Audio buffer length has been read.\r\n */\r\n public abstract read(dataBuffer: ArrayBuffer): Promise;\r\n\r\n /**\r\n * Closes the stream.\r\n * @member PullAudioOutputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * Represents memory backed push audio output stream used for custom audio output configurations.\r\n * @private\r\n * @class PullAudioOutputStreamImpl\r\n */\r\nexport class PullAudioOutputStreamImpl extends PullAudioOutputStream implements IAudioDestination {\r\n private privFormat: AudioOutputFormatImpl;\r\n private privId: string;\r\n private privStream: Stream;\r\n private privLastChunkView: Int8Array;\r\n\r\n /**\r\n * Creates and initializes an instance with the given values.\r\n * @constructor\r\n */\r\n public constructor() {\r\n super();\r\n this.privId = createNoDashGuid();\r\n this.privStream = new Stream();\r\n }\r\n\r\n /**\r\n * Sets the format information to the stream. For internal use only.\r\n * @param {AudioStreamFormat} format - the format to be set.\r\n */\r\n public set format(format: AudioStreamFormat) {\r\n if (format === undefined || format === null) {\r\n this.privFormat = AudioOutputFormatImpl.getDefaultOutputFormat();\r\n }\r\n this.privFormat = format as AudioOutputFormatImpl;\r\n }\r\n\r\n /**\r\n * Format information for the audio\r\n */\r\n public get format(): AudioStreamFormat {\r\n return this.privFormat;\r\n }\r\n\r\n /**\r\n * Checks if the stream is closed\r\n * @member PullAudioOutputStreamImpl.prototype.isClosed\r\n * @property\r\n * @public\r\n */\r\n public get isClosed(): boolean {\r\n return this.privStream.isClosed;\r\n }\r\n\r\n /**\r\n * Gets the id of the stream\r\n * @member PullAudioOutputStreamImpl.prototype.id\r\n * @property\r\n * @public\r\n */\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n /**\r\n * Reads audio data from the internal buffer.\r\n * @member PullAudioOutputStreamImpl.prototype.read\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - An ArrayBuffer to store the read data.\r\n * @returns {Promise} - Audio buffer length has been read.\r\n */\r\n public async read(dataBuffer: ArrayBuffer): Promise {\r\n const intView: Int8Array = new Int8Array(dataBuffer);\r\n let totalBytes: number = 0;\r\n\r\n if (this.privLastChunkView !== undefined) {\r\n if (this.privLastChunkView.length > dataBuffer.byteLength) {\r\n intView.set(this.privLastChunkView.slice(0, dataBuffer.byteLength));\r\n this.privLastChunkView = this.privLastChunkView.slice(dataBuffer.byteLength);\r\n return Promise.resolve(dataBuffer.byteLength);\r\n }\r\n intView.set(this.privLastChunkView);\r\n totalBytes = this.privLastChunkView.length;\r\n this.privLastChunkView = undefined;\r\n }\r\n\r\n // Until we have the minimum number of bytes to send in a transmission, keep asking for more.\r\n while (totalBytes < dataBuffer.byteLength && !this.privStream.isReadEnded) {\r\n const chunk: IStreamChunk = await this.privStream.read();\r\n if (chunk !== undefined && !chunk.isEnd) {\r\n let tmpBuffer: ArrayBuffer;\r\n if (chunk.buffer.byteLength > dataBuffer.byteLength - totalBytes) {\r\n tmpBuffer = chunk.buffer.slice(0, dataBuffer.byteLength - totalBytes);\r\n this.privLastChunkView = new Int8Array(chunk.buffer.slice(dataBuffer.byteLength - totalBytes));\r\n } else {\r\n tmpBuffer = chunk.buffer;\r\n }\r\n intView.set(new Int8Array(tmpBuffer), totalBytes);\r\n totalBytes += tmpBuffer.byteLength;\r\n } else {\r\n this.privStream.readEnded();\r\n }\r\n }\r\n return totalBytes;\r\n }\r\n\r\n /**\r\n * Writes the audio data specified by making an internal copy of the data.\r\n * @member PullAudioOutputStreamImpl.prototype.write\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - The audio buffer of which this function will make a copy.\r\n */\r\n public write(dataBuffer: ArrayBuffer): void {\r\n Contracts.throwIfNullOrUndefined(this.privStream, \"must set format before writing\");\r\n this.privStream.writeStreamChunk({\r\n buffer: dataBuffer,\r\n isEnd: false,\r\n timeReceived: Date.now()\r\n });\r\n }\r\n\r\n /**\r\n * Closes the stream.\r\n * @member PullAudioOutputStreamImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n this.privStream.close();\r\n }\r\n}\r\n\r\n/*\r\n * Represents audio output stream used for custom audio output configurations.\r\n * @class PushAudioOutputStream\r\n */\r\nexport abstract class PushAudioOutputStream extends AudioOutputStream {\r\n /**\r\n * Creates and initializes and instance.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n * Creates a PushAudioOutputStream that delegates to the specified callback interface for\r\n * write() and close() methods.\r\n * @member PushAudioOutputStream.create\r\n * @function\r\n * @public\r\n * @param {PushAudioOutputStreamCallback} callback - The custom audio output object,\r\n * derived from PushAudioOutputStreamCallback\r\n * @returns {PushAudioOutputStream} The push audio output stream being created.\r\n */\r\n public static create(callback: PushAudioOutputStreamCallback): PushAudioOutputStream {\r\n return new PushAudioOutputStreamImpl(callback);\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member PushAudioOutputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n\r\n}\r\n\r\n/**\r\n * Represents audio output stream used for custom audio output configurations.\r\n * @private\r\n * @class PushAudioOutputStreamImpl\r\n */\r\nexport class PushAudioOutputStreamImpl extends PushAudioOutputStream implements IAudioDestination {\r\n private readonly privId: string;\r\n private privCallback: PushAudioOutputStreamCallback;\r\n\r\n /**\r\n * Creates a PushAudioOutputStream that delegates to the specified callback interface for\r\n * read() and close() methods.\r\n * @constructor\r\n * @param {PushAudioOutputStreamCallback} callback - The custom audio output object,\r\n * derived from PushAudioOutputStreamCallback\r\n */\r\n public constructor(callback: PushAudioOutputStreamCallback) {\r\n super();\r\n this.privId = createNoDashGuid();\r\n this.privCallback = callback;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n public set format(format: AudioStreamFormat) { }\r\n\r\n public write(buffer: ArrayBuffer): void {\r\n if (!!this.privCallback.write) {\r\n this.privCallback.write(buffer);\r\n }\r\n }\r\n\r\n public close(): void {\r\n if (!!this.privCallback.close) {\r\n this.privCallback.close();\r\n }\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport enum AudioFormatTag {\r\n PCM = 1,\r\n MuLaw,\r\n Siren,\r\n MP3,\r\n SILKSkype,\r\n OGG_OPUS,\r\n WEBM_OPUS,\r\n ALaw,\r\n FLAC,\r\n OPUS,\r\n}\r\n\r\n/**\r\n * Represents audio stream format used for custom audio input configurations.\r\n * @class AudioStreamFormat\r\n */\r\nexport abstract class AudioStreamFormat {\r\n /**\r\n * Creates an audio stream format object representing the default audio stream\r\n * format (16KHz 16bit mono PCM).\r\n * @member AudioStreamFormat.getDefaultInputFormat\r\n * @function\r\n * @public\r\n * @returns {AudioStreamFormat} The audio stream format being created.\r\n */\r\n public static getDefaultInputFormat(): AudioStreamFormat {\r\n return AudioStreamFormatImpl.getDefaultInputFormat();\r\n }\r\n\r\n /**\r\n * Creates an audio stream format object with the specified format characteristics.\r\n * @member AudioStreamFormat.getWaveFormat\r\n * @function\r\n * @public\r\n * @param {number} samplesPerSecond - Sample rate, in samples per second (Hertz).\r\n * @param {number} bitsPerSample - Bits per sample, typically 16.\r\n * @param {number} channels - Number of channels in the waveform-audio data. Monaural data\r\n * uses one channel and stereo data uses two channels.\r\n * @param {AudioFormatTag} format - Audio format (PCM, alaw or mulaw).\r\n * @returns {AudioStreamFormat} The audio stream format being created.\r\n */\r\n public static getWaveFormat(samplesPerSecond: number, bitsPerSample: number, channels: number, format: AudioFormatTag): AudioStreamFormat {\r\n return new AudioStreamFormatImpl(samplesPerSecond, bitsPerSample, channels, format);\r\n }\r\n\r\n /**\r\n * Creates an audio stream format object with the specified pcm waveformat characteristics.\r\n * @member AudioStreamFormat.getWaveFormatPCM\r\n * @function\r\n * @public\r\n * @param {number} samplesPerSecond - Sample rate, in samples per second (Hertz).\r\n * @param {number} bitsPerSample - Bits per sample, typically 16.\r\n * @param {number} channels - Number of channels in the waveform-audio data. Monaural data\r\n * uses one channel and stereo data uses two channels.\r\n * @returns {AudioStreamFormat} The audio stream format being created.\r\n */\r\n public static getWaveFormatPCM(samplesPerSecond: number, bitsPerSample: number, channels: number): AudioStreamFormat {\r\n return new AudioStreamFormatImpl(samplesPerSecond, bitsPerSample, channels);\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member AudioStreamFormat.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * @private\r\n * @class AudioStreamFormatImpl\r\n */\r\nexport class AudioStreamFormatImpl extends AudioStreamFormat {\r\n protected privHeader: ArrayBuffer;\r\n\r\n /**\r\n * Creates an instance with the given values.\r\n * @constructor\r\n * @param {number} samplesPerSec - Samples per second.\r\n * @param {number} bitsPerSample - Bits per sample.\r\n * @param {number} channels - Number of channels.\r\n * @param {AudioFormatTag} format - Audio format (PCM, alaw or mulaw).\r\n */\r\n public constructor(samplesPerSec: number = 16000, bitsPerSample: number = 16, channels: number = 1, format: AudioFormatTag = AudioFormatTag.PCM) {\r\n super();\r\n\r\n let isWavFormat: boolean = true;\r\n /* 1 for PCM; 6 for alaw; 7 for mulaw */\r\n switch (format) {\r\n case AudioFormatTag.PCM:\r\n this.formatTag = 1;\r\n break;\r\n case AudioFormatTag.ALaw:\r\n this.formatTag = 6;\r\n break;\r\n case AudioFormatTag.MuLaw:\r\n this.formatTag = 7;\r\n break;\r\n default:\r\n isWavFormat = false;\r\n }\r\n this.bitsPerSample = bitsPerSample;\r\n this.samplesPerSec = samplesPerSec;\r\n this.channels = channels;\r\n this.avgBytesPerSec = this.samplesPerSec * this.channels * (this.bitsPerSample / 8);\r\n this.blockAlign = this.channels * Math.max(this.bitsPerSample, 8);\r\n\r\n if (isWavFormat) {\r\n this.privHeader = new ArrayBuffer(44);\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView\r\n const view = new DataView(this.privHeader);\r\n\r\n /* RIFF identifier */\r\n this.setString(view, 0, \"RIFF\");\r\n /* file length */\r\n view.setUint32(4, 0, true);\r\n /* RIFF type & Format */\r\n this.setString(view, 8, \"WAVEfmt \");\r\n /* format chunk length */\r\n view.setUint32(16, 16, true);\r\n /* audio format */\r\n view.setUint16(20, this.formatTag, true);\r\n /* channel count */\r\n view.setUint16(22, this.channels, true);\r\n /* sample rate */\r\n view.setUint32(24, this.samplesPerSec, true);\r\n /* byte rate (sample rate * block align) */\r\n view.setUint32(28, this.avgBytesPerSec, true);\r\n /* block align (channel count * bytes per sample) */\r\n view.setUint16(32, this.channels * (this.bitsPerSample / 8), true);\r\n /* bits per sample */\r\n view.setUint16(34, this.bitsPerSample, true);\r\n /* data chunk identifier */\r\n this.setString(view, 36, \"data\");\r\n /* data chunk length */\r\n view.setUint32(40, 0, true);\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the default input format.\r\n * @member AudioStreamFormatImpl.getDefaultInputFormat\r\n * @function\r\n * @public\r\n * @returns {AudioStreamFormatImpl} The default input format.\r\n */\r\n public static getDefaultInputFormat(): AudioStreamFormatImpl {\r\n return new AudioStreamFormatImpl();\r\n }\r\n\r\n /**\r\n * Creates an audio context appropriate to current browser\r\n * @member AudioStreamFormatImpl.getAudioContext\r\n * @function\r\n * @public\r\n * @returns {AudioContext} An audio context instance\r\n */\r\n /* eslint-disable */\r\n public static getAudioContext(sampleRate?: number): AudioContext {\r\n // Workaround for Speech SDK bug in Safari.\r\n const AudioContext = (window as any).AudioContext // our preferred impl\r\n || (window as any).webkitAudioContext // fallback, mostly when on Safari\r\n || false; // could not find.\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/API/AudioContext\r\n if (!!AudioContext) {\r\n if (sampleRate !== undefined && navigator.mediaDevices.getSupportedConstraints().sampleRate) {\r\n return new AudioContext({ sampleRate });\r\n } else {\r\n return new AudioContext();\r\n }\r\n } else {\r\n throw new Error(\"Browser does not support Web Audio API (AudioContext is not available).\");\r\n }\r\n }\r\n /* eslint-enable */\r\n\r\n /**\r\n * Closes the configuration object.\r\n * @member AudioStreamFormatImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n return;\r\n }\r\n\r\n /**\r\n * The format of the audio, valid values: 1 (PCM)\r\n * @member AudioStreamFormatImpl.prototype.formatTag\r\n * @function\r\n * @public\r\n */\r\n public formatTag: number;\r\n\r\n /**\r\n * The number of channels, valid values: 1 (Mono).\r\n * @member AudioStreamFormatImpl.prototype.channels\r\n * @function\r\n * @public\r\n */\r\n public channels: number;\r\n\r\n /**\r\n * The sample rate, valid values: 16000.\r\n * @member AudioStreamFormatImpl.prototype.samplesPerSec\r\n * @function\r\n * @public\r\n */\r\n public samplesPerSec: number;\r\n\r\n /**\r\n * The bits per sample, valid values: 16\r\n * @member AudioStreamFormatImpl.prototype.b\r\n * @function\r\n * @public\r\n */\r\n public bitsPerSample: number;\r\n\r\n /**\r\n * Average bytes per second, usually calculated as nSamplesPerSec * nChannels * ceil(wBitsPerSample, 8).\r\n * @member AudioStreamFormatImpl.prototype.avgBytesPerSec\r\n * @function\r\n * @public\r\n */\r\n public avgBytesPerSec: number;\r\n\r\n /**\r\n * The size of a single frame, valid values: nChannels * ceil(wBitsPerSample, 8).\r\n * @member AudioStreamFormatImpl.prototype.blockAlign\r\n * @function\r\n * @public\r\n */\r\n public blockAlign: number;\r\n\r\n public get header(): ArrayBuffer {\r\n return this.privHeader;\r\n }\r\n\r\n protected setString(view: DataView, offset: number, str: string): void {\r\n for (let i = 0; i < str.length; i++) {\r\n view.setUint8(offset + i, str.charCodeAt(i));\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { InvalidOperationError } from \"../../common/Error.js\";\r\nimport { AudioStreamFormat } from \"../Exports.js\";\r\nimport { AudioStreamFormatImpl } from \"./AudioStreamFormat.js\";\r\n\r\ntype AudioDataTypedArray = Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array;\r\n/**\r\n * Base audio player class\r\n * TODO: Plays only PCM for now.\r\n * @class\r\n */\r\nexport class BaseAudioPlayer {\r\n\r\n private audioContext: AudioContext = null;\r\n private gainNode: GainNode = null;\r\n private audioFormat: AudioStreamFormatImpl;\r\n private autoUpdateBufferTimer: any = 0;\r\n private samples: Float32Array;\r\n private startTime: number;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {AudioStreamFormat} audioFormat audio stream format recognized by the player.\r\n */\r\n public constructor(audioFormat?: AudioStreamFormat) {\r\n if (audioFormat === undefined) {\r\n audioFormat = AudioStreamFormat.getDefaultInputFormat();\r\n }\r\n this.init(audioFormat);\r\n }\r\n\r\n /**\r\n * play Audio sample\r\n * @param newAudioData audio data to be played.\r\n */\r\n public playAudioSample(newAudioData: ArrayBuffer, cb?: () => void, err?: (error: string) => void): void {\r\n try {\r\n this.ensureInitializedContext();\r\n const audioData = this.formatAudioData(newAudioData);\r\n const newSamplesData = new Float32Array(this.samples.length + audioData.length);\r\n newSamplesData.set(this.samples, 0);\r\n newSamplesData.set(audioData, this.samples.length);\r\n this.samples = newSamplesData;\r\n if (!!cb) {\r\n cb();\r\n }\r\n } catch (e) {\r\n if (!!err) {\r\n err(e as string);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * stops audio and clears the buffers\r\n */\r\n public stopAudio(cb?: () => void, err?: (error: string) => void): void {\r\n if (this.audioContext !== null) {\r\n this.samples = new Float32Array();\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n clearInterval(this.autoUpdateBufferTimer);\r\n this.audioContext.close().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n this.audioContext = null;\r\n }\r\n }\r\n\r\n private init(audioFormat: AudioStreamFormat): void {\r\n this.audioFormat = audioFormat as AudioStreamFormatImpl;\r\n this.samples = new Float32Array();\r\n }\r\n\r\n private ensureInitializedContext(): void {\r\n if (this.audioContext === null) {\r\n this.createAudioContext();\r\n const timerPeriod = 200;\r\n this.autoUpdateBufferTimer = setInterval((): void => {\r\n this.updateAudioBuffer();\r\n }, timerPeriod);\r\n }\r\n }\r\n\r\n private createAudioContext(): void {\r\n // new ((window as any).AudioContext || (window as any).webkitAudioContext)();\r\n this.audioContext = AudioStreamFormatImpl.getAudioContext();\r\n\r\n // TODO: Various examples shows this gain node, it does not seem to be needed unless we plan\r\n // to control the volume, not likely\r\n this.gainNode = this.audioContext.createGain();\r\n this.gainNode.gain.value = 1;\r\n this.gainNode.connect(this.audioContext.destination);\r\n this.startTime = this.audioContext.currentTime;\r\n }\r\n\r\n private formatAudioData(audioData: ArrayBuffer): Float32Array {\r\n switch (this.audioFormat.bitsPerSample) {\r\n case 8:\r\n return this.formatArrayBuffer(new Int8Array(audioData), 128);\r\n case 16:\r\n return this.formatArrayBuffer(new Int16Array(audioData), 32768);\r\n case 32:\r\n return this.formatArrayBuffer(new Int32Array(audioData), 2147483648);\r\n default:\r\n throw new InvalidOperationError(\"Only WAVE_FORMAT_PCM (8/16/32 bps) format supported at this time\");\r\n }\r\n }\r\n\r\n private formatArrayBuffer(audioData: AudioDataTypedArray, maxValue: number): Float32Array {\r\n const float32Data = new Float32Array(audioData.length);\r\n for (let i = 0; i < audioData.length; i++) {\r\n float32Data[i] = audioData[i] / maxValue;\r\n }\r\n return float32Data;\r\n }\r\n\r\n private updateAudioBuffer(): void {\r\n if (this.samples.length === 0) {\r\n return;\r\n }\r\n\r\n const channelCount = this.audioFormat.channels;\r\n const bufferSource = this.audioContext.createBufferSource();\r\n const frameCount = this.samples.length / channelCount;\r\n const audioBuffer = this.audioContext.createBuffer(channelCount, frameCount, this.audioFormat.samplesPerSec);\r\n\r\n // TODO: Should we do the conversion in the pushAudioSample instead?\r\n for (let channel = 0; channel < channelCount; channel++) {\r\n // Fill in individual channel data\r\n let channelOffset = channel;\r\n const audioData = audioBuffer.getChannelData(channel);\r\n for (let i = 0; i < this.samples.length; i++, channelOffset += channelCount) {\r\n audioData[i] = this.samples[channelOffset];\r\n }\r\n }\r\n\r\n if (this.startTime < this.audioContext.currentTime) {\r\n this.startTime = this.audioContext.currentTime;\r\n }\r\n\r\n bufferSource.buffer = audioBuffer;\r\n bufferSource.connect(this.gainNode);\r\n bufferSource.start(this.startTime);\r\n\r\n // Make sure we play the next sample after the current one.\r\n this.startTime += audioBuffer.duration;\r\n\r\n // Clear the samples for the next pushed data.\r\n this.samples = new Float32Array();\r\n }\r\n\r\n private async playAudio(audioData: ArrayBuffer): Promise {\r\n if (this.audioContext === null) {\r\n this.createAudioContext();\r\n }\r\n const source: AudioBufferSourceNode = this.audioContext.createBufferSource();\r\n const destination: AudioDestinationNode = this.audioContext.destination;\r\n await this.audioContext.decodeAudioData(audioData, (newBuffer: AudioBuffer): void => {\r\n source.buffer = newBuffer;\r\n source.connect(destination);\r\n source.start(0);\r\n });\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n /**\r\n * An abstract base class that defines callback methods (read() and close()) for\r\n * custom audio input streams).\r\n * @class PullAudioInputStreamCallback\r\n */\r\nexport abstract class PullAudioInputStreamCallback {\r\n\r\n /**\r\n * Reads data from audio input stream into the data buffer. The maximal number of bytes\r\n * to be read is determined by the size of dataBuffer.\r\n * @member PullAudioInputStreamCallback.prototype.read\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - The byte array to store the read data.\r\n * @returns {number} the number of bytes have been read.\r\n */\r\n public abstract read(dataBuffer: ArrayBuffer): number;\r\n\r\n /**\r\n * Closes the audio input stream.\r\n * @member PullAudioInputStreamCallback.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n/**\r\n * An abstract base class that defines callback methods (write() and close()) for\r\n * custom audio output streams).\r\n * @class PushAudioOutputStreamCallback\r\n */\r\nexport abstract class PushAudioOutputStreamCallback {\r\n\r\n /**\r\n * Writes audio data into the data buffer.\r\n * @member PushAudioOutputStreamCallback.prototype.write\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - The byte array that stores the audio data to write.\r\n */\r\n public abstract write(dataBuffer: ArrayBuffer): void;\r\n\r\n /**\r\n * Closes the audio output stream.\r\n * @member PushAudioOutputStreamCallback.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n BackgroundEvent,\r\n createNoDashGuid,\r\n Events,\r\n IAudioDestination,\r\n INumberDictionary\r\n} from \"../../common/Exports.js\";\r\nimport { AudioStreamFormat, IPlayer } from \"../Exports.js\";\r\nimport { AudioOutputFormatImpl } from \"./AudioOutputFormat.js\";\r\nimport { PullAudioOutputStreamImpl } from \"./AudioOutputStream.js\";\r\nimport { AudioFormatTag } from \"./AudioStreamFormat.js\";\r\n\r\nconst MediaDurationPlaceholderSeconds = 60 * 30;\r\n\r\nconst AudioFormatToMimeType: INumberDictionary = {\r\n [AudioFormatTag.PCM]: \"audio/wav\",\r\n [AudioFormatTag.MuLaw]: \"audio/x-wav\",\r\n [AudioFormatTag.MP3]: \"audio/mpeg\",\r\n [AudioFormatTag.OGG_OPUS]: \"audio/ogg\",\r\n [AudioFormatTag.WEBM_OPUS]: \"audio/webm; codecs=opus\",\r\n [AudioFormatTag.ALaw]: \"audio/x-wav\",\r\n [AudioFormatTag.FLAC]: \"audio/flac\",\r\n};\r\n\r\n/**\r\n * Represents the speaker playback audio destination, which only works in browser.\r\n * Note: the SDK will try to use Media Source Extensions to play audio.\r\n * Mp3 format has better supports on Microsoft Edge, Chrome and Safari (desktop), so, it's better to specify mp3 format for playback.\r\n * @class SpeakerAudioDestination\r\n * Updated in version 1.17.0\r\n */\r\nexport class SpeakerAudioDestination implements IAudioDestination, IPlayer {\r\n private readonly privId: string;\r\n private privFormat: AudioOutputFormatImpl;\r\n private privAudio: HTMLAudioElement;\r\n private privMediaSource: MediaSource;\r\n private privSourceBuffer: SourceBuffer;\r\n private privPlaybackStarted: boolean = false;\r\n private privAudioBuffer: ArrayBuffer[];\r\n private privAppendingToBuffer: boolean = false;\r\n private privMediaSourceOpened: boolean = false;\r\n private privIsClosed: boolean;\r\n private privIsPaused: boolean;\r\n private privAudioOutputStream: PullAudioOutputStreamImpl;\r\n private privBytesReceived: number = 0;\r\n\r\n public constructor(audioDestinationId?: string) {\r\n this.privId = audioDestinationId ? audioDestinationId : createNoDashGuid();\r\n this.privIsPaused = false;\r\n this.privIsClosed = false;\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n public write(buffer: ArrayBuffer, cb?: () => void, err?: (error: string) => void): void {\r\n if (this.privAudioBuffer !== undefined) {\r\n this.privAudioBuffer.push(buffer);\r\n this.updateSourceBuffer().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n } else if (this.privAudioOutputStream !== undefined) {\r\n this.privAudioOutputStream.write(buffer);\r\n this.privBytesReceived += buffer.byteLength;\r\n }\r\n }\r\n\r\n public close(cb?: () => void, err?: (error: string) => void): void {\r\n this.privIsClosed = true;\r\n if (this.privSourceBuffer !== undefined) {\r\n this.handleSourceBufferUpdateEnd().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n } else if (this.privAudioOutputStream !== undefined && typeof window !== \"undefined\") {\r\n if ((this.privFormat.formatTag === AudioFormatTag.PCM || this.privFormat.formatTag === AudioFormatTag.MuLaw\r\n || this.privFormat.formatTag === AudioFormatTag.ALaw) && this.privFormat.hasHeader === false) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Play back is not supported for raw PCM, mulaw or alaw format without header.\");\r\n if (!!this.onAudioEnd) {\r\n this.onAudioEnd(this);\r\n }\r\n } else {\r\n let receivedAudio = new ArrayBuffer(this.privBytesReceived);\r\n this.privAudioOutputStream.read(receivedAudio).then((): void => {\r\n receivedAudio = this.privFormat.addHeader(receivedAudio);\r\n const audioBlob = new Blob([receivedAudio], { type: AudioFormatToMimeType[this.privFormat.formatTag] });\r\n this.privAudio.src = window.URL.createObjectURL(audioBlob);\r\n this.notifyPlayback().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n }\r\n } else {\r\n // unsupported format, call onAudioEnd directly.\r\n if (!!this.onAudioEnd) {\r\n this.onAudioEnd(this);\r\n }\r\n }\r\n }\r\n\r\n public set format(format: AudioStreamFormat) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\r\n if (typeof (AudioContext) !== \"undefined\" || (typeof (window) !== \"undefined\" && typeof ((window as any).webkitAudioContext) !== \"undefined\")) {\r\n this.privFormat = format as AudioOutputFormatImpl;\r\n const mimeType: string = AudioFormatToMimeType[this.privFormat.formatTag];\r\n if (mimeType === undefined) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n `Unknown mimeType for format ${AudioFormatTag[this.privFormat.formatTag]}; playback is not supported.`);\r\n\r\n } else if (typeof (MediaSource) !== \"undefined\" && MediaSource.isTypeSupported(mimeType)) {\r\n this.privAudio = new Audio();\r\n this.privAudioBuffer = [];\r\n this.privMediaSource = new MediaSource();\r\n this.privAudio.src = URL.createObjectURL(this.privMediaSource);\r\n this.privAudio.load();\r\n this.privMediaSource.onsourceopen = (): void => {\r\n this.privMediaSourceOpened = true;\r\n this.privMediaSource.duration = MediaDurationPlaceholderSeconds;\r\n this.privSourceBuffer = this.privMediaSource.addSourceBuffer(mimeType);\r\n this.privSourceBuffer.onupdate = (): void => {\r\n this.updateSourceBuffer().catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n };\r\n this.privSourceBuffer.onupdateend = (): void => {\r\n this.handleSourceBufferUpdateEnd().catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n };\r\n this.privSourceBuffer.onupdatestart = (): void => {\r\n this.privAppendingToBuffer = false;\r\n };\r\n };\r\n this.updateSourceBuffer().catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n\r\n } else {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n `Format ${AudioFormatTag[this.privFormat.formatTag]} could not be played by MSE, streaming playback is not enabled.`);\r\n this.privAudioOutputStream = new PullAudioOutputStreamImpl();\r\n this.privAudioOutputStream.format = this.privFormat;\r\n this.privAudio = new Audio();\r\n }\r\n }\r\n }\r\n\r\n public get volume(): number {\r\n return this.privAudio?.volume ?? -1;\r\n }\r\n\r\n public set volume(volume: number) {\r\n if (!!this.privAudio) {\r\n this.privAudio.volume = volume;\r\n }\r\n }\r\n\r\n public mute(): void {\r\n if (!!this.privAudio) {\r\n this.privAudio.muted = true;\r\n }\r\n }\r\n\r\n public unmute(): void {\r\n if (!!this.privAudio) {\r\n this.privAudio.muted = false;\r\n }\r\n }\r\n\r\n public get isClosed(): boolean {\r\n return this.privIsClosed;\r\n }\r\n\r\n public get currentTime(): number {\r\n if (this.privAudio !== undefined) {\r\n return this.privAudio.currentTime;\r\n }\r\n return -1;\r\n }\r\n\r\n public pause(): void {\r\n if (!this.privIsPaused && this.privAudio !== undefined) {\r\n this.privAudio.pause();\r\n this.privIsPaused = true;\r\n }\r\n }\r\n\r\n public resume(cb?: () => void, err?: (error: string) => void): void {\r\n if (this.privIsPaused && this.privAudio !== undefined) {\r\n this.privAudio.play().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n this.privIsPaused = false;\r\n }\r\n }\r\n\r\n public onAudioStart: (sender: IPlayer) => void;\r\n\r\n public onAudioEnd: (sender: IPlayer) => void;\r\n\r\n public get internalAudio(): HTMLAudioElement {\r\n return this.privAudio;\r\n }\r\n\r\n private async updateSourceBuffer(): Promise {\r\n if (this.privAudioBuffer !== undefined && (this.privAudioBuffer.length > 0) && this.sourceBufferAvailable()) {\r\n this.privAppendingToBuffer = true;\r\n const binary = this.privAudioBuffer.shift();\r\n try {\r\n this.privSourceBuffer.appendBuffer(binary);\r\n } catch (error) {\r\n this.privAudioBuffer.unshift(binary);\r\n // eslint-disable-next-line no-console\r\n console.log(\r\n \"buffer filled, pausing addition of binaries until space is made\");\r\n return;\r\n }\r\n await this.notifyPlayback();\r\n } else if (this.canEndStream()) {\r\n await this.handleSourceBufferUpdateEnd();\r\n }\r\n }\r\n\r\n private async handleSourceBufferUpdateEnd(): Promise {\r\n if (this.canEndStream() && this.sourceBufferAvailable()) {\r\n this.privMediaSource.endOfStream();\r\n await this.notifyPlayback();\r\n }\r\n }\r\n\r\n private async notifyPlayback(): Promise {\r\n if (!this.privPlaybackStarted && this.privAudio !== undefined) {\r\n this.privPlaybackStarted = true;\r\n if (!!this.onAudioStart) {\r\n this.onAudioStart(this);\r\n }\r\n this.privAudio.onended = (): void => {\r\n if (!!this.onAudioEnd) {\r\n this.onAudioEnd(this);\r\n }\r\n };\r\n if (!this.privIsPaused) {\r\n await this.privAudio.play();\r\n }\r\n }\r\n }\r\n\r\n private canEndStream(): boolean {\r\n return (this.isClosed && this.privSourceBuffer !== undefined && (this.privAudioBuffer.length === 0)\r\n && this.privMediaSourceOpened && !this.privAppendingToBuffer && this.privMediaSource.readyState === \"open\");\r\n }\r\n\r\n private sourceBufferAvailable(): boolean {\r\n return (this.privSourceBuffer !== undefined && !this.privSourceBuffer.updating);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { AutoDetectSourceLanguagesOpenRangeOptionName } from \"../common.speech/Exports.js\";\r\nimport {Contracts} from \"./Contracts.js\";\r\nimport {\r\n PropertyCollection,\r\n PropertyId,\r\n SourceLanguageConfig,\r\n} from \"./Exports.js\";\r\nimport { LanguageIdMode } from \"./LanguageIdMode.js\";\r\n\r\n/**\r\n * Language auto detect configuration.\r\n * @class AutoDetectSourceLanguageConfig\r\n * Added in version 1.13.0.\r\n */\r\nexport class AutoDetectSourceLanguageConfig {\r\n private privProperties: PropertyCollection;\r\n private privLanguageIdMode: LanguageIdMode;\r\n\r\n private constructor() {\r\n this.privProperties = new PropertyCollection();\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_LanguageIdMode, \"AtStart\");\r\n this.privLanguageIdMode = LanguageIdMode.AtStart;\r\n }\r\n\r\n /**\r\n * @member AutoDetectSourceLanguageConfig.fromOpenRange\r\n * @function\r\n * @public\r\n * Only [[SpeechSynthesizer]] supports source language auto detection from open range,\r\n * for [[Recognizer]], please use AutoDetectSourceLanguageConfig with specific source languages.\r\n * @return {AutoDetectSourceLanguageConfig} Instance of AutoDetectSourceLanguageConfig\r\n * @summary Creates an instance of the AutoDetectSourceLanguageConfig with open range.\r\n */\r\n public static fromOpenRange(): AutoDetectSourceLanguageConfig {\r\n const config = new AutoDetectSourceLanguageConfig();\r\n config.properties.setProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages, AutoDetectSourceLanguagesOpenRangeOptionName);\r\n return config;\r\n }\r\n\r\n /**\r\n * @member AutoDetectSourceLanguageConfig.fromLanguages\r\n * @function\r\n * @public\r\n * @param {string[]} languages Comma-separated string of languages (eg. \"en-US,fr-FR\") to populate properties of config.\r\n * @return {AutoDetectSourceLanguageConfig} Instance of AutoDetectSourceLanguageConfig\r\n * @summary Creates an instance of the AutoDetectSourceLanguageConfig with given languages.\r\n */\r\n public static fromLanguages(languages: string[]): AutoDetectSourceLanguageConfig {\r\n Contracts.throwIfArrayEmptyOrWhitespace(languages, \"languages\");\r\n const config = new AutoDetectSourceLanguageConfig();\r\n config.properties.setProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages, languages.join());\r\n return config;\r\n }\r\n\r\n /**\r\n * @member AutoDetectSourceLanguageConfig.fromSourceLanguageConfigs\r\n * @function\r\n * @public\r\n * @param {SourceLanguageConfig[]} configs SourceLanguageConfigs to populate properties of config.\r\n * @return {AutoDetectSourceLanguageConfig} Instance of AutoDetectSourceLanguageConfig\r\n * @summary Creates an instance of the AutoDetectSourceLanguageConfig with given SourceLanguageConfigs.\r\n */\r\n public static fromSourceLanguageConfigs(configs: SourceLanguageConfig[]): AutoDetectSourceLanguageConfig {\r\n if (configs.length < 1) {\r\n throw new Error(\"Expected non-empty SourceLanguageConfig array.\");\r\n }\r\n const autoConfig = new AutoDetectSourceLanguageConfig();\r\n const langs: string[] = [];\r\n configs.forEach((config: SourceLanguageConfig): void => {\r\n langs.push(config.language);\r\n if (config.endpointId !== undefined && config.endpointId !== \"\") {\r\n const customProperty = config.language + PropertyId.SpeechServiceConnection_EndpointId.toString();\r\n autoConfig.properties.setProperty(customProperty, config.endpointId);\r\n }\r\n });\r\n autoConfig.properties.setProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages, langs.join());\r\n\r\n return autoConfig;\r\n }\r\n\r\n /**\r\n * @member AutoDetectSourceLanguageConfig.prototype.properties\r\n * @function\r\n * @public\r\n * @return {PropertyCollection} Properties of the config.\r\n * @summary Gets an auto detected language config properties\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * @member AutoDetectSourceLanguageConfig.prototype.mode\r\n * @function\r\n * @public\r\n * @param {LanguageIdMode} mode LID mode desired.\r\n * @summary Sets LID operation to desired mode\r\n */\r\n public set mode(mode: LanguageIdMode) {\r\n if (mode === LanguageIdMode.Continuous) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_RecognitionEndpointVersion, \"2\");\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_LanguageIdMode, \"Continuous\");\r\n } else { // LanguageIdMode.AtStart\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_RecognitionEndpointVersion, \"1\");\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_LanguageIdMode, \"AtStart\");\r\n }\r\n this.privLanguageIdMode = mode;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n SpeechRecognitionResult,\r\n ConversationTranscriptionResult\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Output format\r\n * @class AutoDetectSourceLanguageResult\r\n */\r\nexport class AutoDetectSourceLanguageResult {\r\n\r\n private privLanguage: string;\r\n private privLanguageDetectionConfidence: string;\r\n\r\n private constructor(language: string, languageDetectionConfidence: string) {\r\n Contracts.throwIfNullOrUndefined(language, \"language\");\r\n Contracts.throwIfNullOrUndefined(languageDetectionConfidence, \"languageDetectionConfidence\");\r\n this.privLanguage = language;\r\n this.privLanguageDetectionConfidence = languageDetectionConfidence;\r\n }\r\n\r\n /**\r\n * Creates an instance of AutoDetectSourceLanguageResult object from a SpeechRecognitionResult instance.\r\n * @member AutoDetectSourceLanguageResult.fromResult\r\n * @function\r\n * @public\r\n * @param {SpeechRecognitionResult} result - The recognition result.\r\n * @returns {AutoDetectSourceLanguageResult} AutoDetectSourceLanguageResult object being created.\r\n */\r\n public static fromResult(result: SpeechRecognitionResult): AutoDetectSourceLanguageResult {\r\n return new AutoDetectSourceLanguageResult(result.language, result.languageDetectionConfidence);\r\n }\r\n\r\n /**\r\n * Creates an instance of AutoDetectSourceLanguageResult object from a ConversationTranscriptionResult instance.\r\n * @member AutoDetectSourceLanguageResult.fromConversationTranscriptionResult\r\n * @function\r\n * @public\r\n * @param {ConversationTranscriptionResult} result - The transcription result.\r\n * @returns {AutoDetectSourceLanguageResult} AutoDetectSourceLanguageResult object being created.\r\n */\r\n public static fromConversationTranscriptionResult(result: ConversationTranscriptionResult): AutoDetectSourceLanguageResult {\r\n return new AutoDetectSourceLanguageResult(result.language, result.languageDetectionConfidence);\r\n }\r\n\r\n public get language(): string {\r\n return this.privLanguage;\r\n }\r\n\r\n public get languageDetectionConfidence(): string {\r\n return this.privLanguageDetectionConfidence;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { AvatarVideoFormat } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines the talking avatar configuration.\r\n * @class AvatarConfig\r\n * Added in version 1.33.0\r\n *\r\n * @experimental This feature is experimental and might change or have limited support.\r\n */\r\nexport class AvatarConfig {\r\n private privCustomized: boolean = false;\r\n private privBackgroundColor: string;\r\n\r\n /**\r\n * Defines the avatar character.\r\n */\r\n public character: string;\r\n /**\r\n * Defines the avatar style.\r\n */\r\n public style: string;\r\n /**\r\n * Defines the talking avatar output video format.\r\n */\r\n public videoFormat: AvatarVideoFormat;\r\n\r\n /**\r\n * Indicates if the talking avatar is customized.\r\n */\r\n public get customized(): boolean {\r\n return this.privCustomized;\r\n }\r\n\r\n /**\r\n * Sets if the talking avatar is customized.\r\n */\r\n public set customized(value: boolean) {\r\n this.privCustomized = value;\r\n }\r\n\r\n /**\r\n * Sets the background color.\r\n */\r\n public get backgroundColor(): string {\r\n return this.privBackgroundColor;\r\n }\r\n\r\n /**\r\n * Gets the background color.\r\n */\r\n public set backgroundColor(value: string) {\r\n this.privBackgroundColor = value;\r\n }\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} character - The avatar character.\r\n * @param {string} style - The avatar style.\r\n * @param {AvatarVideoFormat} videoFormat - The talking avatar output video format.\r\n */\r\n public constructor(character: string, style: string, videoFormat: AvatarVideoFormat) {\r\n Contracts.throwIfNullOrWhitespace(character, \"character\");\r\n this.character = character;\r\n this.style = style;\r\n if (videoFormat === undefined) {\r\n videoFormat = new AvatarVideoFormat();\r\n }\r\n this.videoFormat = videoFormat;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport enum AvatarEventTypes {\r\n SwitchedToSpeaking = \"SwitchedToSpeaking\",\r\n SwitchedToIdle = \"SwitchedToIdle\",\r\n SessionClosed = \"SessionClosed\",\r\n}\r\n\r\n/**\r\n * Defines content for talking avatar events.\r\n * @class AvatarEventArgs\r\n * Added in version 1.33.0\r\n *\r\n * @experimental This feature is experimental and might change or have limited support.\r\n */\r\nexport class AvatarEventArgs {\r\n private privType: AvatarEventTypes;\r\n private privOffset: number;\r\n private privDescription: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {number} audioOffset - The audio offset.\r\n * @param {string} description - The description of the event.\r\n */\r\n public constructor(audioOffset: number, description: string) {\r\n this.privOffset = audioOffset;\r\n this.privDescription = description;\r\n }\r\n\r\n /**\r\n * The type of the event.\r\n * @public\r\n * @returns {AvatarEventTypes} The type of the event.\r\n */\r\n public get type(): AvatarEventTypes {\r\n return this.privType;\r\n }\r\n\r\n /**\r\n * The time offset associated with this event.\r\n * @public\r\n * @returns {number} The time offset associated with this event.\r\n */\r\n public get offset(): number {\r\n return this.privOffset;\r\n }\r\n\r\n /**\r\n * The description of the event.\r\n * @public\r\n * @returns {string} The description of the event.\r\n */\r\n public get description(): string {\r\n return this.privDescription;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SpeechSynthesisConnectionFactory } from \"../common.speech/SpeechSynthesisConnectionFactory.js\";\r\nimport { SynthesisRestAdapter } from \"../common.speech/SynthesisRestAdapter.js\";\r\nimport { SynthesizerConfig } from \"../common.speech/SynthesizerConfig.js\";\r\nimport {\r\n AvatarSynthesisAdapter,\r\n IAuthentication,\r\n ISynthesisConnectionFactory,\r\n SpeechServiceConfig,\r\n SynthesisAdapterBase\r\n} from \"../common.speech/Exports.js\";\r\nimport { createNoDashGuid, Deferred, Events, EventType, PlatformEvent } from \"../common/Exports.js\";\r\nimport { AudioOutputFormatImpl } from \"./Audio/AudioOutputFormat.js\";\r\nimport {\r\n AvatarConfig,\r\n AvatarEventArgs,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SpeechConfig,\r\n SpeechSynthesisOutputFormat,\r\n SpeechSynthesisResult,\r\n SynthesisResult,\r\n Synthesizer\r\n} from \"./Exports.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { SynthesisRequest } from \"./Synthesizer.js\";\r\n\r\n/**\r\n * Defines the avatar synthesizer.\r\n * @class AvatarSynthesizer\r\n * Added in version 1.33.0\r\n *\r\n * @experimental This feature is experimental and might change or have limited support.\r\n */\r\nexport class AvatarSynthesizer extends Synthesizer {\r\n protected privProperties: PropertyCollection;\r\n private privAvatarConfig: AvatarConfig;\r\n private privIceServers: RTCIceServer[];\r\n /**\r\n * Defines event handler for avatar events.\r\n * @member AvatarSynthesizer.prototype.avatarEventReceived\r\n * @function\r\n * @public\r\n */\r\n public avatarEventReceived: (sender: AvatarSynthesizer, event: AvatarEventArgs) => void;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - The speech config.\r\n * @param {AvatarConfig} avatarConfig - The talking avatar config.\r\n */\r\n public constructor(speechConfig: SpeechConfig, avatarConfig: AvatarConfig) {\r\n super(speechConfig);\r\n\r\n Contracts.throwIfNullOrUndefined(avatarConfig, \"avatarConfig\");\r\n\r\n this.privConnectionFactory = new SpeechSynthesisConnectionFactory();\r\n this.privAvatarConfig = avatarConfig;\r\n this.implCommonSynthesizeSetup();\r\n }\r\n\r\n protected implCommonSynthesizeSetup(): void {\r\n super.implCommonSynthesizeSetup();\r\n\r\n // The service checks the audio format setting while it ignores it in avatar synthesis.\r\n this.privAdapter.audioOutputFormat = AudioOutputFormatImpl.fromSpeechSynthesisOutputFormat(\r\n SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm\r\n );\r\n }\r\n\r\n /**\r\n * Starts the talking avatar session and establishes the WebRTC connection.\r\n * @member AvatarSynthesizer.prototype.startAvatarAsync\r\n * @function\r\n * @public\r\n * @param {AvatarWebRTCConnectionInfo} peerConnection - The peer connection.\r\n * @returns {Promise} The promise of the connection result.\r\n */\r\n public async startAvatarAsync(peerConnection: RTCPeerConnection): Promise {\r\n Contracts.throwIfNullOrUndefined(peerConnection, \"peerConnection\");\r\n this.privIceServers = peerConnection.getConfiguration().iceServers;\r\n Contracts.throwIfNullOrUndefined(this.privIceServers, \"Ice servers must be set.\");\r\n const iceGatheringDone = new Deferred();\r\n // https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/icegatheringstatechange_event\r\n peerConnection.onicegatheringstatechange = (): void => {\r\n Events.instance.onEvent(new PlatformEvent(\"peer connection: ice gathering state: \" + peerConnection.iceGatheringState, EventType.Debug));\r\n if (peerConnection.iceGatheringState === \"complete\") {\r\n Events.instance.onEvent(new PlatformEvent(\"peer connection: ice gathering complete.\", EventType.Info));\r\n iceGatheringDone.resolve();\r\n }\r\n };\r\n peerConnection.onicecandidate = (event: RTCPeerConnectionIceEvent): void => {\r\n if (event.candidate) {\r\n Events.instance.onEvent(new PlatformEvent(\"peer connection: ice candidate: \" + event.candidate.candidate, EventType.Debug));\r\n } else {\r\n Events.instance.onEvent(new PlatformEvent(\"peer connection: ice candidate: complete\", EventType.Debug));\r\n iceGatheringDone.resolve();\r\n }\r\n };\r\n // Set a timeout for ice gathering, currently 2 seconds.\r\n setTimeout((): void => {\r\n if (peerConnection.iceGatheringState !== \"complete\") {\r\n Events.instance.onEvent(new PlatformEvent(\"peer connection: ice gathering timeout.\", EventType.Warning));\r\n iceGatheringDone.resolve();\r\n }\r\n }, 2000);\r\n const sdp: RTCSessionDescriptionInit = await peerConnection.createOffer();\r\n await peerConnection.setLocalDescription(sdp);\r\n await iceGatheringDone.promise;\r\n Events.instance.onEvent(new PlatformEvent(\"peer connection: got local SDP.\", EventType.Info));\r\n this.privProperties.setProperty(PropertyId.TalkingAvatarService_WebRTC_SDP, JSON.stringify(peerConnection.localDescription));\r\n\r\n const result: SpeechSynthesisResult = await this.speak(\"\", false);\r\n if (result.reason !== ResultReason.SynthesizingAudioCompleted) {\r\n return new SynthesisResult(\r\n result.resultId,\r\n result.reason,\r\n result.errorDetails,\r\n result.properties,\r\n );\r\n }\r\n const sdpAnswerString: string = atob(result.properties.getProperty(PropertyId.TalkingAvatarService_WebRTC_SDP));\r\n const sdpAnswer: RTCSessionDescription = new RTCSessionDescription(\r\n JSON.parse(sdpAnswerString) as RTCSessionDescriptionInit,\r\n );\r\n await peerConnection.setRemoteDescription(sdpAnswer);\r\n return new SynthesisResult(\r\n result.resultId,\r\n result.reason,\r\n undefined,\r\n result.properties,\r\n );\r\n }\r\n\r\n /**\r\n * Speaks plain text asynchronously. The rendered audio and video will be sent via the WebRTC connection.\r\n * @member AvatarSynthesizer.prototype.speakTextAsync\r\n * @function\r\n * @public\r\n * @param {string} text - The plain text to speak.\r\n * @returns {Promise} The promise of the synthesis result.\r\n */\r\n public async speakTextAsync(text: string): Promise {\r\n const r = await this.speak(text, false);\r\n return new SynthesisResult(\r\n r.resultId,\r\n r.reason,\r\n r.errorDetails,\r\n r.properties,\r\n );\r\n }\r\n\r\n /**\r\n * Speaks SSML asynchronously. The rendered audio and video will be sent via the WebRTC connection.\r\n * @member AvatarSynthesizer.prototype.speakSsmlAsync\r\n * @function\r\n * @public\r\n * @param {string} ssml - The SSML text to speak.\r\n * @returns {Promise} The promise of the synthesis result.\r\n */\r\n public async speakSsmlAsync(ssml: string): Promise {\r\n const r = await this.speak(ssml, true);\r\n return new SynthesisResult(\r\n r.resultId,\r\n r.reason,\r\n r.errorDetails,\r\n r.properties,\r\n );\r\n }\r\n\r\n /**\r\n * Speaks text asynchronously. The avatar will switch to idle state.\r\n * @member AvatarSynthesizer.prototype.stopSpeakingAsync\r\n * @function\r\n * @public\r\n * @returns {Promise} The promise of the void result.\r\n */\r\n public async stopSpeakingAsync(): Promise {\r\n while (this.synthesisRequestQueue.length() > 0) {\r\n const request = await this.synthesisRequestQueue.dequeue();\r\n request.err(\"Synthesis is canceled by user.\");\r\n }\r\n return this.privAdapter.stopSpeaking();\r\n }\r\n\r\n /**\r\n * Stops the talking avatar session and closes the WebRTC connection.\r\n * For now, this is the same as close().\r\n * You need to create a new AvatarSynthesizer instance to start a new session.\r\n * @member AvatarSynthesizer.prototype.stopAvatarAsync\r\n * @function\r\n * @public\r\n * @returns {Promise} The promise of the void result.\r\n */\r\n public async stopAvatarAsync(): Promise {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n return this.dispose(true);\r\n }\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member AvatarSynthesizer.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public async close(): Promise {\r\n if (this.privDisposed) {\r\n return;\r\n }\r\n\r\n return this.dispose(true);\r\n }\r\n\r\n /**\r\n * Gets the ICE servers. Internal use only.\r\n */\r\n public get iceServers(): RTCIceServer[] {\r\n return this.privIceServers;\r\n }\r\n\r\n // Creates the synthesis adapter\r\n protected createSynthesisAdapter(\r\n authentication: IAuthentication,\r\n connectionFactory: ISynthesisConnectionFactory,\r\n synthesizerConfig: SynthesizerConfig): SynthesisAdapterBase {\r\n return new AvatarSynthesisAdapter(\r\n authentication,\r\n connectionFactory,\r\n synthesizerConfig,\r\n this,\r\n this.privAvatarConfig);\r\n }\r\n\r\n protected createRestSynthesisAdapter(\r\n _authentication: IAuthentication,\r\n _synthesizerConfig: SynthesizerConfig): SynthesisRestAdapter {\r\n return undefined;\r\n }\r\n\r\n protected createSynthesizerConfig(speechConfig: SpeechServiceConfig): SynthesizerConfig {\r\n const config = super.createSynthesizerConfig(speechConfig);\r\n config.avatarEnabled = true;\r\n return config;\r\n }\r\n\r\n protected async speak(text: string, isSSML: boolean): Promise {\r\n const requestId = createNoDashGuid();\r\n const deferredResult = new Deferred();\r\n this.synthesisRequestQueue.enqueue(new SynthesisRequest(requestId, text, isSSML,\r\n (e: SpeechSynthesisResult): void => {\r\n deferredResult.resolve(e);\r\n this.privSynthesizing = false;\r\n void this.adapterSpeak();\r\n },\r\n (e: string): void => {\r\n deferredResult.reject(e);\r\n this.privSynthesizing = false;\r\n }));\r\n void this.adapterSpeak();\r\n return deferredResult.promise;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\n/**\r\n * Defines a coordinate in 2D space.\r\n * @class Coordinate\r\n * Added in version 1.33.0\r\n */\r\nexport class Coordinate {\r\n public x: number;\r\n public y: number;\r\n\r\n public constructor(x: number, y: number) {\r\n this.x = x;\r\n this.y = y;\r\n }\r\n}\r\n\r\n/**\r\n * Defines the avatar output video format.\r\n * @class AvatarVideoFormat\r\n * Added in version 1.33.0\r\n *\r\n * @experimental This feature is experimental and might change in the future.\r\n */\r\nexport class AvatarVideoFormat {\r\n /**\r\n * Defines the video codec.\r\n * @default \"H264\"\r\n */\r\n public codec: string;\r\n /**\r\n * Defines the video bitrate.\r\n * @default 2000000\r\n */\r\n public bitrate: number;\r\n /**\r\n * Defines the video width.\r\n * @default 1920\r\n */\r\n public width: number;\r\n /**\r\n * Defines the video height.\r\n * @default 1080\r\n */\r\n public height: number;\r\n\r\n /**\r\n * Sets the video crop range.\r\n */\r\n public setCropRange(topLeft: Coordinate, bottomRight: Coordinate): void {\r\n this.cropRange = {\r\n bottomRight,\r\n topLeft,\r\n };\r\n }\r\n\r\n /**\r\n * Defines the video crop range.\r\n * @default undefined\r\n * @internal\r\n */\r\n public cropRange: {\r\n topLeft: Coordinate;\r\n bottomRight: Coordinate;\r\n };\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} codec - The video codec.\r\n * @param {number} bitrate - The video bitrate.\r\n * @param {number} width - The video width.\r\n * @param {number} height - The video height.\r\n */\r\n public constructor(codec: string = \"H264\",\r\n bitrate: number = 2000000,\r\n width: number = 1920,\r\n height: number = 1080,\r\n ) {\r\n this.codec = codec;\r\n this.bitrate = bitrate;\r\n this.width = width;\r\n this.height = height;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ResultReason,\r\n PropertyCollection,\r\n SynthesisResult\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Defines the avatar WebRTC connection result.\r\n * @class AvatarWebRTCConnectionResult\r\n * Added in version 1.33.0\r\n *\r\n * @experimental This feature is experimental and might change in the future.\r\n */\r\nexport class AvatarWebRTCConnectionResult extends SynthesisResult {\r\n private readonly privSDPAnswer: RTCSessionDescriptionInit;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {RTCSessionDescriptionInit} SDPAnswer - The SDP answer of WebRTC connection.\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n */\r\n public constructor(SDPAnswer?: RTCSessionDescriptionInit, resultId?: string, reason?: ResultReason, errorDetails?: string, properties?: PropertyCollection) {\r\n super(resultId, reason, errorDetails, properties);\r\n this.privSDPAnswer = SDPAnswer;\r\n }\r\n\r\n /**\r\n * Specifies SDP (Session Description Protocol) answer of WebRTC connection.\r\n * @member AvatarWebRTCConnectionResult.prototype.SDPAnswer\r\n * @function\r\n * @public\r\n * @returns {RTCSessionDescriptionInit} Specifies the SDP answer of WebRTC connection.\r\n */\r\n public get SDPAnswer(): RTCSessionDescriptionInit {\r\n return this.privSDPAnswer;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { DialogServiceConfig, DialogServiceConfigImpl } from \"./DialogServiceConfig.js\";\r\nimport { PropertyId } from \"./Exports.js\";\r\n\r\n/**\r\n * Class that defines configurations for the dialog service connector object for using a Bot Framework backend.\r\n * @class BotFrameworkConfig\r\n */\r\nexport class BotFrameworkConfig extends DialogServiceConfigImpl {\r\n\r\n /**\r\n * Creates an instance of BotFrameworkConfig.\r\n */\r\n public constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n * Creates a bot framework configuration instance with the provided subscription information.\r\n * @member BotFrameworkConfig.fromSubscription\r\n * @function\r\n * @public\r\n * @param subscription Subscription key associated with the bot\r\n * @param region The region name (see the region page).\r\n * @param botId Optional. Identifier for using a specific bot within an Azure resource group. Equivalent to the\r\n * resource name.\r\n * @returns {BotFrameworkConfig} A new bot framework configuration instance.\r\n */\r\n public static fromSubscription(subscription: string, region: string, botId?: string): BotFrameworkConfig {\r\n Contracts.throwIfNullOrWhitespace(subscription, \"subscription\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const botFrameworkConfig: BotFrameworkConfig = new DialogServiceConfigImpl();\r\n botFrameworkConfig.setProperty(\r\n PropertyId.Conversation_DialogType,\r\n DialogServiceConfig.DialogTypes.BotFramework);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Key, subscription);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n\r\n if (botId) {\r\n botFrameworkConfig.setProperty(PropertyId.Conversation_ApplicationId, botId);\r\n }\r\n\r\n return botFrameworkConfig;\r\n }\r\n\r\n /**\r\n * Creates a bot framework configuration instance for the specified authorization token and region.\r\n * Note: The caller must ensure that an authorization token is valid. Before an authorization token expires, the\r\n * caller must refresh it by setting the authorizationToken property on the corresponding\r\n * DialogServiceConnector instance created with this config. The contents of configuration objects are copied\r\n * when connectors are created, so setting authorizationToken on a DialogServiceConnector will not update the\r\n * original configuration's authorization token. Create a new configuration instance or set the\r\n * SpeechServiceAuthorization_Token property to update an existing instance if it will be used to create\r\n * further DialogServiceConnectors.\r\n * @member BotFrameworkConfig.fromAuthorizationToken\r\n * @function\r\n * @public\r\n * @param authorizationToken The authorization token associated with the bot\r\n * @param region The region name (see the region page).\r\n * @param botId Optional. Identifier for using a specific bot within an Azure resource group. Equivalent to the\r\n * resource name.\r\n * @returns {BotFrameworkConfig} A new bot framework configuration instance.\r\n */\r\n public static fromAuthorizationToken(\r\n authorizationToken: string, region: string, botId?: string\r\n ): BotFrameworkConfig {\r\n Contracts.throwIfNullOrWhitespace(authorizationToken, \"authorizationToken\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const botFrameworkConfig: BotFrameworkConfig = new DialogServiceConfigImpl();\r\n botFrameworkConfig.setProperty(\r\n PropertyId.Conversation_DialogType,\r\n DialogServiceConfig.DialogTypes.BotFramework);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceAuthorization_Token, authorizationToken);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n\r\n if (botId) {\r\n botFrameworkConfig.setProperty(PropertyId.Conversation_ApplicationId, botId);\r\n }\r\n\r\n return botFrameworkConfig;\r\n }\r\n\r\n /**\r\n * Creates an instance of a BotFrameworkConfig.\r\n * This method is intended only for users who use a non-default service host. The standard resource path will be\r\n * assumed. For services with a non-standard resource path or no path at all, use fromEndpoint instead.\r\n * Note: Query parameters are not allowed in the host URI and must be set by other APIs.\r\n * Note: To use an authorization token with fromHost, use fromHost(URL) and then set the AuthorizationToken\r\n * property on the created BotFrameworkConfig instance.\r\n * Note: Added in version 1.15.0.\r\n * @member BotFrameworkConfig.fromHost\r\n * @function\r\n * @public\r\n * @param {URL | string} host - If a URL is provided, the fully-qualified host with protocol (e.g.\r\n * wss://your.host.com:1234) will be used. If a string is provided, it will be embedded in\r\n * wss://{host}.convai.speech.azure.us.\r\n * @param {string} subscriptionKey - The subscription key. If a subscription key is not specified, an authorization\r\n * token must be set.\r\n * @param botId Optional. Identifier for using a specific bot within an Azure resource group. Equivalent to the\r\n * resource name.\r\n * @returns {BotFrameworkConfig} A new bot framework configuration instance.\r\n */\r\n public static fromHost(\r\n host: URL | string,\r\n subscriptionKey?: string,\r\n botId?: string): BotFrameworkConfig {\r\n\r\n void botId;\r\n Contracts.throwIfNullOrUndefined(host, \"host\");\r\n const resolvedHost: URL = host instanceof URL ? host : new URL(`wss://${host}.convai.speech.azure.us`);\r\n Contracts.throwIfNullOrUndefined(resolvedHost, \"resolvedHost\");\r\n\r\n const botFrameworkConfig: BotFrameworkConfig = new DialogServiceConfigImpl();\r\n botFrameworkConfig.setProperty(\r\n PropertyId.Conversation_DialogType,\r\n DialogServiceConfig.DialogTypes.BotFramework);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Host, resolvedHost.toString());\r\n\r\n if (undefined !== subscriptionKey) {\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n }\r\n\r\n return botFrameworkConfig;\r\n }\r\n\r\n /**\r\n * Creates an instance of a BotFrameworkConfig.\r\n * This method is intended only for users who use a non-standard service endpoint or parameters.\r\n * Note: The query parameters specified in the endpoint URL are not changed, even if they are set by any other APIs.\r\n * Note: To use authorization token with fromEndpoint, pass an empty string to the subscriptionKey in the\r\n * fromEndpoint method, and then set authorizationToken=\"token\" on the created BotFrameworkConfig instance to\r\n * use the authorization token.\r\n * Note: Added in version 1.15.0.\r\n * @member BotFrameworkConfig.fromEndpoint\r\n * @function\r\n * @public\r\n * @param {URL} endpoint - The service endpoint to connect to.\r\n * @param {string} subscriptionKey - The subscription key. If a subscription key is not specified, an authorization\r\n * token must be set.\r\n * @returns {BotFrameworkConfig} - A new bot framework configuration instance using the provided endpoint.\r\n */\r\n public static fromEndpoint(endpoint: URL, subscriptionKey?: string): BotFrameworkConfig {\r\n Contracts.throwIfNull(endpoint, \"endpoint\");\r\n\r\n const botFrameworkConfig: BotFrameworkConfig = new DialogServiceConfigImpl();\r\n botFrameworkConfig.setProperty(\r\n PropertyId.Conversation_DialogType,\r\n DialogServiceConfig.DialogTypes.BotFramework);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Endpoint, endpoint.toString());\r\n\r\n if (undefined !== subscriptionKey) {\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n }\r\n\r\n return botFrameworkConfig;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { CancellationErrorCodePropertyName, EnumTranslation, SimpleSpeechPhrase } from \"../common.speech/Exports.js\";\r\nimport { CancellationDetailsBase } from \"./CancellationDetailsBase.js\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n RecognitionResult,\r\n SpeechSynthesisResult\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Contains detailed information about why a result was canceled.\r\n * @class CancellationDetails\r\n */\r\nexport class CancellationDetails extends CancellationDetailsBase {\r\n\r\n private constructor(reason: CancellationReason, errorDetails: string, errorCode: CancellationErrorCode) {\r\n super(reason, errorDetails, errorCode);\r\n }\r\n\r\n /**\r\n * Creates an instance of CancellationDetails object for the canceled RecognitionResult.\r\n * @member CancellationDetails.fromResult\r\n * @function\r\n * @public\r\n * @param {RecognitionResult | SpeechSynthesisResult} result - The result that was canceled.\r\n * @returns {CancellationDetails} The cancellation details object being created.\r\n */\r\n public static fromResult(result: RecognitionResult | SpeechSynthesisResult): CancellationDetails {\r\n let reason = CancellationReason.Error;\r\n let errorCode: CancellationErrorCode = CancellationErrorCode.NoError;\r\n\r\n if (result instanceof RecognitionResult && !!result.json) {\r\n const simpleSpeech: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(result.json);\r\n reason = EnumTranslation.implTranslateCancelResult(simpleSpeech.RecognitionStatus);\r\n }\r\n\r\n if (!!result.properties) {\r\n errorCode = CancellationErrorCode[result.properties.getProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.NoError]) as keyof typeof CancellationErrorCode];\r\n }\r\n\r\n return new CancellationDetails(reason, result.errorDetails || EnumTranslation.implTranslateErrorDetails(errorCode), errorCode);\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Contains detailed information about why a result was canceled.\r\n * @class CancellationDetailsBase\r\n */\r\nexport class CancellationDetailsBase {\r\n private privReason: CancellationReason;\r\n private privErrorDetails: string;\r\n private privErrorCode: CancellationErrorCode;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {CancellationReason} reason - The cancellation reason.\r\n * @param {string} errorDetails - The error details, if provided.\r\n */\r\n protected constructor(reason: CancellationReason, errorDetails: string, errorCode: CancellationErrorCode) {\r\n this.privReason = reason;\r\n this.privErrorDetails = errorDetails;\r\n this.privErrorCode = errorCode;\r\n }\r\n\r\n /**\r\n * The reason the recognition was canceled.\r\n * @member CancellationDetailsBase.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {CancellationReason} Specifies the reason canceled.\r\n */\r\n public get reason(): CancellationReason {\r\n return this.privReason;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful recognition, provides details of the occurred error.\r\n * @member CancellationDetailsBase.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} A String that represents the error details.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n\r\n /**\r\n * The error code in case of an unsuccessful recognition.\r\n * Added in version 1.1.0.\r\n * @return An error code that represents the error reason.\r\n */\r\n public get ErrorCode(): CancellationErrorCode {\r\n return this.privErrorCode;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines error code in case that CancellationReason is Error.\r\n * Added in version 1.1.0.\r\n */\r\nexport enum CancellationErrorCode {\r\n /**\r\n * Indicates that no error occurred during speech recognition.\r\n */\r\n NoError,\r\n\r\n /**\r\n * Indicates an authentication error.\r\n */\r\n AuthenticationFailure,\r\n\r\n /**\r\n * Indicates that one or more recognition parameters are invalid.\r\n */\r\n BadRequestParameters,\r\n\r\n /**\r\n * Indicates that the number of parallel requests exceeded the number of allowed\r\n * concurrent transcriptions for the subscription.\r\n */\r\n TooManyRequests,\r\n\r\n /**\r\n * Indicates a connection error.\r\n */\r\n ConnectionFailure,\r\n\r\n /**\r\n * Indicates a time-out error when waiting for response from service.\r\n */\r\n ServiceTimeout,\r\n\r\n /**\r\n * Indicates that an error is returned by the service.\r\n */\r\n ServiceError,\r\n\r\n /**\r\n * Indicates an unexpected runtime error.\r\n */\r\n RuntimeError,\r\n\r\n /**\r\n * Indicates an quota overrun on existing key.\r\n */\r\n Forbidden,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CancellationErrorCode,\r\n CancellationEventArgs,\r\n CancellationReason,\r\n RecognitionEventArgs\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Defines content of a CancellationEvent.\r\n * @class CancellationEventArgsBase\r\n */\r\nexport class CancellationEventArgsBase extends RecognitionEventArgs implements CancellationEventArgs {\r\n private privReason: CancellationReason;\r\n private privErrorDetails: string;\r\n private privErrorCode: CancellationErrorCode;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {CancellationReason} reason - The cancellation reason.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {number} offset - The offset.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(reason: CancellationReason, errorDetails: string,\r\n errorCode: CancellationErrorCode, offset?: number, sessionId?: string) {\r\n super(offset, sessionId);\r\n\r\n this.privReason = reason;\r\n this.privErrorDetails = errorDetails;\r\n this.privErrorCode = errorCode;\r\n }\r\n\r\n /**\r\n * The reason the recognition was canceled.\r\n * @member CancellationEventArgsBase.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {CancellationReason} Specifies the reason canceled.\r\n */\r\n public get reason(): CancellationReason {\r\n return this.privReason;\r\n }\r\n\r\n /**\r\n * The error code in case of an unsuccessful operation.\r\n * @return An error code that represents the error reason.\r\n */\r\n public get errorCode(): CancellationErrorCode {\r\n return this.privErrorCode;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful operation, provides details of the occurred error.\r\n * @member CancellationEventArgsBase.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} A String that represents the error details.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the possible reasons a recognition result might be canceled.\r\n * @class CancellationReason\r\n */\r\nexport enum CancellationReason {\r\n /**\r\n * Indicates that an error occurred during speech recognition.\r\n * @member CancellationReason.Error\r\n */\r\n Error,\r\n\r\n /**\r\n * Indicates that the end of the audio stream was reached.\r\n * @member CancellationReason.EndOfStream\r\n */\r\n EndOfStream,\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\nimport {\r\n ServiceRecognizerBase,\r\n SynthesisAdapterBase,\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n ConnectionEvent,\r\n ConnectionMessageReceivedEvent,\r\n ConnectionMessageSentEvent,\r\n IDetachable,\r\n marshalPromiseToCallbacks,\r\n ServiceEvent,\r\n} from \"../common/Exports.js\";\r\nimport {\r\n ConnectionMessageImpl\r\n} from \"./ConnectionMessage.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n ConnectionEventArgs,\r\n ConnectionMessageEventArgs,\r\n ConversationTranscriber,\r\n Recognizer,\r\n ServiceEventArgs,\r\n SpeechSynthesizer,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Connection is a proxy class for managing connection to the speech service of the specified Recognizer.\r\n * By default, a Recognizer autonomously manages connection to service when needed.\r\n * The Connection class provides additional methods for users to explicitly open or close a connection and\r\n * to subscribe to connection status changes.\r\n * The use of Connection is optional, and mainly for scenarios where fine tuning of application\r\n * behavior based on connection status is needed. Users can optionally call Open() to manually set up a connection\r\n * in advance before starting recognition on the Recognizer associated with this Connection.\r\n * If the Recognizer needs to connect or disconnect to service, it will\r\n * setup or shutdown the connection independently. In this case the Connection will be notified by change of connection\r\n * status via Connected/Disconnected events.\r\n * Added in version 1.2.1.\r\n */\r\nexport class Connection {\r\n private privInternalData: ServiceRecognizerBase | SynthesisAdapterBase;\r\n private privEventListener: IDetachable;\r\n private privServiceEventListener: IDetachable;\r\n\r\n /**\r\n * Gets the Connection instance from the specified recognizer.\r\n * @param recognizer The recognizer associated with the connection.\r\n * @return The Connection instance of the recognizer.\r\n */\r\n public static fromRecognizer(recognizer: Recognizer | ConversationTranscriber): Connection {\r\n const recoBase = recognizer.internalData as ServiceRecognizerBase;\r\n const ret: Connection = new Connection();\r\n\r\n ret.privInternalData = recoBase;\r\n ret.setupEvents();\r\n return ret;\r\n }\r\n\r\n /**\r\n * Gets the Connection instance from the specified synthesizer.\r\n * @param synthesizer The synthesizer associated with the connection.\r\n * @return The Connection instance of the synthesizer.\r\n */\r\n public static fromSynthesizer(synthesizer: SpeechSynthesizer): Connection {\r\n const synthBase: SynthesisAdapterBase = synthesizer.internalData as SynthesisAdapterBase;\r\n\r\n const ret: Connection = new Connection();\r\n\r\n ret.privInternalData = synthBase;\r\n ret.setupEvents();\r\n return ret;\r\n }\r\n\r\n /**\r\n * Starts to set up connection to the service.\r\n * Users can optionally call openConnection() to manually set up a connection in advance before starting recognition on the\r\n * Recognizer associated with this Connection. After starting recognition, calling Open() will have no effect\r\n *\r\n * Note: On return, the connection might not be ready yet. Please subscribe to the Connected event to\r\n * be notified when the connection is established.\r\n */\r\n public openConnection(cb?: () => void, err?: (error: string) => void): void {\r\n marshalPromiseToCallbacks(this.privInternalData.connect(), cb, err);\r\n }\r\n\r\n /**\r\n * Closes the connection the service.\r\n * Users can optionally call closeConnection() to manually shutdown the connection of the associated Recognizer.\r\n *\r\n * If closeConnection() is called during recognition, recognition will fail and cancel with an error.\r\n */\r\n public closeConnection(cb?: () => void, err?: (error: string) => void): void {\r\n if (this.privInternalData instanceof SynthesisAdapterBase) {\r\n throw new Error(\"Disconnecting a synthesizer's connection is currently not supported\");\r\n } else {\r\n marshalPromiseToCallbacks(this.privInternalData.disconnect(), cb, err);\r\n }\r\n }\r\n\r\n /**\r\n * Appends a parameter in a message to service.\r\n * Added in version 1.12.1.\r\n * @param path The path of the network message.\r\n * @param propertyName Name of the property\r\n * @param propertyValue Value of the property. This is a json string.\r\n */\r\n public setMessageProperty(path: string, propertyName: string, propertyValue: string | object): void {\r\n Contracts.throwIfNullOrWhitespace(propertyName, \"propertyName\");\r\n\r\n if (this.privInternalData instanceof ServiceRecognizerBase) {\r\n if (path.toLowerCase() !== \"speech.context\") {\r\n throw new Error(\"Only speech.context message property sets are currently supported for recognizer\");\r\n } else {\r\n this.privInternalData.speechContext.setSection(propertyName, propertyValue);\r\n }\r\n } else if (this.privInternalData instanceof SynthesisAdapterBase) {\r\n if (path.toLowerCase() !== \"synthesis.context\") {\r\n throw new Error(\"Only synthesis.context message property sets are currently supported for synthesizer\");\r\n } else {\r\n this.privInternalData.synthesisContext.setSection(propertyName, propertyValue);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sends a message to the speech service.\r\n * Added in version 1.13.0.\r\n * @param path The WebSocket path of the message\r\n * @param payload The payload of the message. This is a json string or a ArrayBuffer.\r\n * @param success A callback to indicate success.\r\n * @param error A callback to indicate an error.\r\n */\r\n public sendMessageAsync(path: string, payload: string | ArrayBuffer, success?: () => void, error?: (error: string) => void): void {\r\n marshalPromiseToCallbacks(this.privInternalData.sendNetworkMessage(path, payload), success, error);\r\n }\r\n\r\n /**\r\n * Any message from service that is not being processed by any other top level recognizers.\r\n *\r\n * Will be removed in 2.0.\r\n */\r\n public receivedServiceMessage: (args: ServiceEventArgs) => void;\r\n\r\n /**\r\n * Any message received from the Speech Service.\r\n */\r\n public messageReceived: (args: ConnectionMessageEventArgs) => void;\r\n\r\n /**\r\n * Any message sent to the Speech Service.\r\n */\r\n public messageSent: (args: ConnectionMessageEventArgs) => void;\r\n\r\n /**\r\n * The Connected event to indicate that the recognizer is connected to service.\r\n */\r\n public connected: (args: ConnectionEventArgs) => void;\r\n\r\n /**\r\n * The Disconnected event to indicate that the recognizer is disconnected from service.\r\n */\r\n public disconnected: (args: ConnectionEventArgs) => void;\r\n\r\n /**\r\n * Dispose of associated resources.\r\n */\r\n public close(): void {\r\n /* eslint-disable no-empty */\r\n }\r\n\r\n private setupEvents(): void {\r\n this.privEventListener = this.privInternalData.connectionEvents.attach((connectionEvent: ConnectionEvent): void => {\r\n if (connectionEvent.name === \"ConnectionEstablishedEvent\") {\r\n if (!!this.connected) {\r\n this.connected(new ConnectionEventArgs(connectionEvent.connectionId));\r\n }\r\n } else if (connectionEvent.name === \"ConnectionClosedEvent\") {\r\n if (!!this.disconnected) {\r\n this.disconnected(new ConnectionEventArgs(connectionEvent.connectionId));\r\n }\r\n } else if (connectionEvent.name === \"ConnectionMessageSentEvent\") {\r\n if (!!this.messageSent) {\r\n this.messageSent(new ConnectionMessageEventArgs(new ConnectionMessageImpl((connectionEvent as ConnectionMessageSentEvent).message)));\r\n }\r\n } else if (connectionEvent.name === \"ConnectionMessageReceivedEvent\") {\r\n if (!!this.messageReceived) {\r\n this.messageReceived(new ConnectionMessageEventArgs(new ConnectionMessageImpl((connectionEvent as ConnectionMessageReceivedEvent).message)));\r\n }\r\n }\r\n });\r\n\r\n this.privServiceEventListener = this.privInternalData.serviceEvents.attach((e: ServiceEvent): void => {\r\n if (!!this.receivedServiceMessage) {\r\n this.receivedServiceMessage(new ServiceEventArgs(e.jsonString, e.name));\r\n }\r\n });\r\n }\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\nimport { SessionEventArgs } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines payload for connection events like Connected/Disconnected.\r\n * Added in version 1.2.0\r\n */\r\nexport class ConnectionEventArgs extends SessionEventArgs {\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nimport { HeaderNames } from \"../common.speech/HeaderNames.js\";\r\nimport {\r\n ConnectionMessage as IntConnectionMessage,\r\n MessageType\r\n} from \"../common/Exports.js\";\r\nimport {\r\n PropertyCollection\r\n} from \"./PropertyCollection.js\";\r\nimport { PropertyId } from \"./PropertyId.js\";\r\n\r\n/**\r\n * ConnectionMessage represents implementation specific messages sent to and received from\r\n * the speech service. These messages are provided for debugging purposes and should not\r\n * be used for production use cases with the Azure Cognitive Services Speech Service.\r\n * Messages sent to and received from the Speech Service are subject to change without\r\n * notice. This includes message contents, headers, payloads, ordering, etc.\r\n * Added in version 1.11.0.\r\n */\r\nexport abstract class ConnectionMessage {\r\n /**\r\n * The message path.\r\n */\r\n public abstract get path(): string;\r\n\r\n /**\r\n * Checks to see if the ConnectionMessage is a text message.\r\n * See also IsBinaryMessage().\r\n */\r\n public abstract get isTextMessage(): boolean;\r\n\r\n /**\r\n * Checks to see if the ConnectionMessage is a binary message.\r\n * See also GetBinaryMessage().\r\n */\r\n public abstract get isBinaryMessage(): boolean;\r\n\r\n /**\r\n * Gets the text message payload. Typically the text message content-type is\r\n * application/json. To determine other content-types use\r\n * Properties.GetProperty(\"Content-Type\").\r\n */\r\n public abstract get TextMessage(): string;\r\n\r\n /**\r\n * Gets the binary message payload.\r\n */\r\n public abstract get binaryMessage(): ArrayBuffer;\r\n\r\n /**\r\n * A collection of properties and their values defined for this .\r\n * Message headers can be accessed via this collection (e.g. \"Content-Type\").\r\n */\r\n public abstract get properties(): PropertyCollection;\r\n\r\n /**\r\n * Returns a string that represents the connection message.\r\n */\r\n public abstract toString(): string;\r\n}\r\n\r\nexport class ConnectionMessageImpl {\r\n\r\n private privConnectionMessage: IntConnectionMessage;\r\n private privProperties: PropertyCollection;\r\n\r\n public constructor(message: IntConnectionMessage) {\r\n this.privConnectionMessage = message;\r\n this.privProperties = new PropertyCollection();\r\n if (!!this.privConnectionMessage.headers[HeaderNames.ConnectionId]) {\r\n this.privProperties.setProperty(PropertyId.Speech_SessionId, this.privConnectionMessage.headers[HeaderNames.ConnectionId]);\r\n }\r\n\r\n Object.keys(this.privConnectionMessage.headers).forEach((header: string): void => {\r\n this.privProperties.setProperty(header, this.privConnectionMessage.headers[header]);\r\n });\r\n }\r\n\r\n /**\r\n * The message path.\r\n */\r\n public get path(): string {\r\n return this.privConnectionMessage.headers[Object.keys(this.privConnectionMessage.headers).find((key: string): boolean => key.toLowerCase() === \"path\".toLowerCase())];\r\n }\r\n\r\n /**\r\n * Checks to see if the ConnectionMessage is a text message.\r\n * See also IsBinaryMessage().\r\n */\r\n public get isTextMessage(): boolean {\r\n return this.privConnectionMessage.messageType === MessageType.Text;\r\n }\r\n\r\n /**\r\n * Checks to see if the ConnectionMessage is a binary message.\r\n * See also GetBinaryMessage().\r\n */\r\n public get isBinaryMessage(): boolean {\r\n return this.privConnectionMessage.messageType === MessageType.Binary;\r\n }\r\n\r\n /**\r\n * Gets the text message payload. Typically the text message content-type is\r\n * application/json. To determine other content-types use\r\n * Properties.GetProperty(\"Content-Type\").\r\n */\r\n public get TextMessage(): string {\r\n return this.privConnectionMessage.textBody;\r\n }\r\n\r\n /**\r\n * Gets the binary message payload.\r\n */\r\n public get binaryMessage(): ArrayBuffer {\r\n return this.privConnectionMessage.binaryBody;\r\n }\r\n\r\n /**\r\n * A collection of properties and their values defined for this .\r\n * Message headers can be accessed via this collection (e.g. \"Content-Type\").\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Returns a string that represents the connection message.\r\n */\r\n public toString(): string {\r\n return \"\";\r\n }\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\nimport {\r\n ConnectionMessage\r\n} from \"./Exports.js\";\r\n\r\nexport class ConnectionMessageEventArgs {\r\n\r\n private privConnectionMessage: ConnectionMessage;\r\n\r\n public constructor(message: ConnectionMessage) {\r\n this.privConnectionMessage = message;\r\n }\r\n\r\n /**\r\n * Gets the associated with this .\r\n */\r\n public get message(): ConnectionMessage {\r\n return this.privConnectionMessage;\r\n }\r\n\r\n /**\r\n * Returns a string that represents the connection message event.\r\n */\r\n public toString(): string {\r\n return \"Message: \" + this.privConnectionMessage.toString();\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * @class Contracts\r\n * @private\r\n */\r\nexport class Contracts {\r\n public static throwIfNullOrUndefined(param: any, name: string): void {\r\n if (param === undefined || param === null) {\r\n throw new Error(\"throwIfNullOrUndefined:\" + name);\r\n }\r\n }\r\n\r\n public static throwIfNull(param: any, name: string): void {\r\n if (param === null) {\r\n throw new Error(\"throwIfNull:\" + name);\r\n }\r\n }\r\n\r\n public static throwIfNullOrWhitespace(param: string, name: string): void {\r\n Contracts.throwIfNullOrUndefined(param, name);\r\n\r\n if ((\"\" + param).trim().length < 1) {\r\n throw new Error(\"throwIfNullOrWhitespace:\" + name);\r\n }\r\n }\r\n\r\n public static throwIfNullOrTooLong(param: string, name: string, maxLength: number): void {\r\n Contracts.throwIfNullOrUndefined(param, name);\r\n\r\n if ((\"\" + param).length > maxLength) {\r\n throw new Error(\"throwIfNullOrTooLong:\" + name + \" (more than \" + maxLength.toString() + \" characters)\");\r\n }\r\n }\r\n\r\n public static throwIfNullOrTooShort(param: string, name: string, minLength: number): void {\r\n Contracts.throwIfNullOrUndefined(param, name);\r\n\r\n if ((\"\" + param).length < minLength) {\r\n throw new Error(\"throwIfNullOrTooShort:\" + name + \" (less than \" + minLength.toString() + \" characters)\");\r\n }\r\n }\r\n\r\n public static throwIfDisposed(isDisposed: boolean): void {\r\n if (isDisposed) {\r\n throw new Error(\"the object is already disposed\");\r\n }\r\n }\r\n\r\n public static throwIfArrayEmptyOrWhitespace(array: string[], name: string): void {\r\n Contracts.throwIfNullOrUndefined(array, name);\r\n\r\n if (array.length === 0) {\r\n throw new Error(\"throwIfArrayEmptyOrWhitespace:\" + name);\r\n }\r\n\r\n for (const item of array) {\r\n Contracts.throwIfNullOrWhitespace(item, name);\r\n }\r\n }\r\n\r\n public static throwIfFileDoesNotExist(param: string, name: string): void {\r\n Contracts.throwIfNullOrWhitespace(param, name);\r\n\r\n // TODO check for file existence.\r\n }\r\n\r\n public static throwIfNotUndefined(param: any, name: string): void {\r\n if (param !== undefined) {\r\n throw new Error(\"throwIfNotUndefined:\" + name);\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CancellationEventArgsBase,\r\n} from \"./CancellationEventArgsBase.js\";\r\n\r\n/**\r\n * Defines content of a RecognitionErrorEvent.\r\n * @class ConversationTranscriptionCanceledEventArgs\r\n */\r\nexport class ConversationTranscriptionCanceledEventArgs extends CancellationEventArgsBase {\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { DialogServiceConfig, DialogServiceConfigImpl } from \"./DialogServiceConfig.js\";\r\nimport { PropertyId } from \"./Exports.js\";\r\n\r\n/**\r\n * Class that defines configurations for the dialog service connector object for using a CustomCommands backend.\r\n * @class CustomCommandsConfig\r\n */\r\nexport class CustomCommandsConfig extends DialogServiceConfigImpl {\r\n\r\n /**\r\n * Creates an instance of CustomCommandsConfig.\r\n */\r\n public constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n * Creates an instance of the bot framework config with the specified subscription and region.\r\n * @member CustomCommandsConfig.fromSubscription\r\n * @function\r\n * @public\r\n * @param applicationId Speech Commands application id.\r\n * @param subscription Subscription key associated with the bot\r\n * @param region The region name (see the region page).\r\n * @returns {CustomCommandsConfig} A new bot framework config.\r\n */\r\n public static fromSubscription(applicationId: string, subscription: string, region: string): CustomCommandsConfig {\r\n Contracts.throwIfNullOrWhitespace(applicationId, \"applicationId\");\r\n Contracts.throwIfNullOrWhitespace(subscription, \"subscription\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const customCommandsConfig: CustomCommandsConfig = new DialogServiceConfigImpl();\r\n customCommandsConfig.setProperty(PropertyId.Conversation_DialogType, DialogServiceConfig.DialogTypes.CustomCommands);\r\n customCommandsConfig.setProperty(PropertyId.Conversation_ApplicationId, applicationId);\r\n customCommandsConfig.setProperty(PropertyId.SpeechServiceConnection_Key, subscription);\r\n customCommandsConfig.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n return customCommandsConfig;\r\n }\r\n\r\n /**\r\n * Creates an instance of the bot framework config with the specified Speech Commands application id, authorization token and region.\r\n * Note: The caller needs to ensure that the authorization token is valid. Before the authorization token\r\n * expires, the caller needs to refresh it by calling this setter with a new valid token.\r\n * As configuration values are copied when creating a new recognizer, the new token value will not apply to recognizers that have already been created.\r\n * For recognizers that have been created before, you need to set authorization token of the corresponding recognizer\r\n * to refresh the token. Otherwise, the recognizers will encounter errors during recognition.\r\n * @member CustomCommandsConfig.fromAuthorizationToken\r\n * @function\r\n * @public\r\n * @param applicationId Speech Commands application id.\r\n * @param authorizationToken The authorization token associated with the application.\r\n * @param region The region name (see the region page).\r\n * @returns {CustomCommandsConfig} A new speech commands config.\r\n */\r\n public static fromAuthorizationToken(applicationId: string, authorizationToken: string, region: string): CustomCommandsConfig {\r\n Contracts.throwIfNullOrWhitespace(applicationId, \"applicationId\");\r\n Contracts.throwIfNullOrWhitespace(authorizationToken, \"authorizationToken\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const customCommandsConfig: CustomCommandsConfig = new DialogServiceConfigImpl();\r\n customCommandsConfig.setProperty(PropertyId.Conversation_DialogType, DialogServiceConfig.DialogTypes.CustomCommands);\r\n customCommandsConfig.setProperty(PropertyId.Conversation_ApplicationId, applicationId);\r\n customCommandsConfig.setProperty(PropertyId.SpeechServiceAuthorization_Token, authorizationToken);\r\n customCommandsConfig.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n return customCommandsConfig;\r\n }\r\n\r\n /**\r\n * Sets the corresponding backend application identifier.\r\n * @member CustomCommandsConfig.prototype.Conversation_ApplicationId\r\n * @function\r\n * @public\r\n * @param {string} value - The application identifier to set.\r\n */\r\n public set applicationId(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n this.setProperty(PropertyId.Conversation_ApplicationId, value);\r\n }\r\n\r\n /**\r\n * Gets the corresponding backend application identifier.\r\n * @member CustomCommandsConfig.prototype.Conversation_ApplicationId\r\n * @function\r\n * @public\r\n * @param {string} value - The application identifier to get.\r\n */\r\n public get applicationId(): string {\r\n return this.getProperty(PropertyId.Conversation_ApplicationId);\r\n }\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\nimport { ConsoleLoggingListener } from \"../common.browser/Exports.js\";\r\nimport { Events } from \"../common/Exports.js\";\r\nimport { LogLevel } from \"./LogLevel.js\";\r\n\r\ntype LogCallback = (s: string) => void;\r\n\r\n/**\r\n * Defines diagnostics API for managing console output\r\n * Added in version 1.21.0\r\n */\r\nexport class Diagnostics {\r\n private static privListener: ConsoleLoggingListener = undefined;\r\n\r\n public static SetLoggingLevel(logLevel: LogLevel): void {\r\n this.privListener = new ConsoleLoggingListener(logLevel);\r\n Events.instance.attachConsoleListener(this.privListener);\r\n }\r\n\r\n public static StartConsoleOutput(): void {\r\n if (!!this.privListener) {\r\n this.privListener.enableConsoleOutput = true;\r\n }\r\n }\r\n\r\n public static StopConsoleOutput(): void {\r\n if (!!this.privListener) {\r\n this.privListener.enableConsoleOutput = false;\r\n }\r\n }\r\n\r\n public static SetLogOutputPath(path: string): void {\r\n if (typeof window === \"undefined\") {\r\n if (!!this.privListener) {\r\n this.privListener.logPath = path;\r\n }\r\n } else {\r\n throw new Error(\"File system logging not available in browser.\");\r\n }\r\n }\r\n\r\n\r\n public static set onLogOutput( callback: LogCallback ) {\r\n if (!!this.privListener) {\r\n this.privListener.logCallback = callback;\r\n }\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { PropertyCollection, PropertyId, ServicePropertyChannel, SpeechConfigImpl } from \"./Exports.js\";\r\nimport { OutputFormat } from \"./OutputFormat.js\";\r\n\r\n/**\r\n * Class that defines base configurations for dialog service connector\r\n * @class DialogServiceConfig\r\n */\r\nexport abstract class DialogServiceConfig {\r\n\r\n /**\r\n * Creates an instance of DialogService config.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Sets an arbitrary property.\r\n * @member DialogServiceConfig.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property to set.\r\n * @param {string} value - The new value of the property.\r\n */\r\n public abstract setProperty(name: string | PropertyId, value: string): void;\r\n\r\n /**\r\n * Returns the current value of an arbitrary property.\r\n * @member DialogServiceConfig.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property to query.\r\n * @param {string} def - The value to return in case the property is not known.\r\n * @returns {string} The current value, or provided default, of the given property.\r\n */\r\n public abstract getProperty(name: string | PropertyId, def?: string): string;\r\n\r\n /**\r\n * @member DialogServiceConfig.prototype.setServiceProperty\r\n * @function\r\n * @public\r\n * @param {name} The name of the property.\r\n * @param {value} Value to set.\r\n * @param {channel} The channel used to pass the specified property to service.\r\n * @summary Sets a property value that will be passed to service using the specified channel.\r\n */\r\n public abstract setServiceProperty(name: string, value: string, channel: ServicePropertyChannel): void;\r\n\r\n /**\r\n * Sets the proxy configuration.\r\n * Only relevant in Node.js environments.\r\n * Added in version 1.4.0.\r\n * @param proxyHostName The host name of the proxy server.\r\n * @param proxyPort The port number of the proxy server.\r\n */\r\n public abstract setProxy(proxyHostName: string, proxyPort: number): void;\r\n\r\n /**\r\n * Sets the proxy configuration.\r\n * Only relevant in Node.js environments.\r\n * Added in version 1.4.0.\r\n * @param proxyHostName The host name of the proxy server, without the protocol scheme (http://)\r\n * @param porxyPort The port number of the proxy server.\r\n * @param proxyUserName The user name of the proxy server.\r\n * @param proxyPassword The password of the proxy server.\r\n */\r\n public abstract setProxy(proxyHostName: string, proxyPort: number, proxyUserName: string, proxyPassword: string): void;\r\n\r\n /**\r\n * Returns the configured language.\r\n * @member DialogServiceConfig.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n */\r\n public abstract get speechRecognitionLanguage(): string;\r\n\r\n /**\r\n * Gets/Sets the input language.\r\n * @member DialogServiceConfig.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The language to use for recognition.\r\n */\r\n public abstract set speechRecognitionLanguage(value: string);\r\n\r\n /**\r\n * Sets the corresponding backend application identifier.\r\n * @member DialogServiceConfig.prototype.Conversation_ApplicationId\r\n * @function\r\n * @public\r\n * @param {string} value - The application identifier to set.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n public set applicationId(value: string) { }\r\n\r\n public static get DialogTypes(): { BotFramework: string; CustomCommands: string } {\r\n return {\r\n BotFramework: \"bot_framework\",\r\n CustomCommands: \"custom_commands\"\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Dialog Service configuration.\r\n * @class DialogServiceConfigImpl\r\n */\r\nexport class DialogServiceConfigImpl extends DialogServiceConfig {\r\n\r\n private privSpeechConfig: SpeechConfigImpl;\r\n\r\n /**\r\n * Creates an instance of dialogService config.\r\n */\r\n public constructor() {\r\n super();\r\n this.privSpeechConfig = new SpeechConfigImpl();\r\n }\r\n\r\n /**\r\n * Provides access to custom properties.\r\n * @member DialogServiceConfigImpl.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The properties.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privSpeechConfig.properties;\r\n }\r\n\r\n /**\r\n * Gets the speech recognition language.\r\n * @member DialogServiceConfigImpl.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n return this.privSpeechConfig.speechRecognitionLanguage;\r\n }\r\n\r\n /**\r\n * Sets the speech recognition language.\r\n * @member DialogServiceConfigImpl.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The language to set.\r\n */\r\n public set speechRecognitionLanguage(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n this.privSpeechConfig.speechRecognitionLanguage = value;\r\n }\r\n\r\n public get outputFormat(): OutputFormat {\r\n return this.privSpeechConfig.outputFormat;\r\n }\r\n\r\n public set outputFormat(value: OutputFormat) {\r\n this.privSpeechConfig.outputFormat = value;\r\n }\r\n\r\n /**\r\n * Sets a named property as value\r\n * @member DialogServiceConfigImpl.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {PropertyId | string} name - The property to set.\r\n * @param {string} value - The value.\r\n */\r\n public setProperty(name: string | PropertyId, value: string): void {\r\n this.privSpeechConfig.setProperty(name, value);\r\n }\r\n\r\n /**\r\n * Sets a named property as value\r\n * @member DialogServiceConfigImpl.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {PropertyId | string} name - The property to get.\r\n * @param {string} def - The default value to return in case the property is not known.\r\n * @returns {string} The current value, or provided default, of the given property.\r\n */\r\n public getProperty(name: string | PropertyId, def?: string): string {\r\n void def;\r\n return this.privSpeechConfig.getProperty(name);\r\n }\r\n\r\n /**\r\n * Sets the proxy configuration.\r\n * Only relevant in Node.js environments.\r\n * Added in version 1.4.0.\r\n * @param proxyHostName The host name of the proxy server, without the protocol scheme (http://)\r\n * @param proxyPort The port number of the proxy server.\r\n * @param proxyUserName The user name of the proxy server.\r\n * @param proxyPassword The password of the proxy server.\r\n */\r\n public setProxy(proxyHostName: string, proxyPort: number, proxyUserName?: string, proxyPassword?: string): void {\r\n this.setProperty(PropertyId.SpeechServiceConnection_ProxyHostName, proxyHostName);\r\n this.setProperty(PropertyId.SpeechServiceConnection_ProxyPort, `${proxyPort}`);\r\n if (proxyUserName) {\r\n this.setProperty(PropertyId.SpeechServiceConnection_ProxyUserName, proxyUserName);\r\n }\r\n if (proxyPassword) {\r\n this.setProperty(PropertyId.SpeechServiceConnection_ProxyPassword, proxyPassword);\r\n }\r\n }\r\n\r\n public setServiceProperty(name: string, value: string, channel: ServicePropertyChannel): void {\r\n void channel;\r\n this.privSpeechConfig.setServiceProperty(name, value);\r\n }\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member DialogServiceConfigImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n return;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { DialogConnectionFactory } from \"../common.speech/DialogConnectorFactory.js\";\r\nimport {\r\n DialogServiceAdapter,\r\n IAgentConfig,\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n Deferred,\r\n marshalPromiseToCallbacks\r\n} from \"../common/Exports.js\";\r\nimport { ActivityReceivedEventArgs } from \"./ActivityReceivedEventArgs.js\";\r\nimport { AudioConfigImpl } from \"./Audio/AudioConfig.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { DialogServiceConfig, DialogServiceConfigImpl } from \"./DialogServiceConfig.js\";\r\nimport {\r\n AudioConfig,\r\n PropertyCollection,\r\n Recognizer,\r\n SpeechRecognitionCanceledEventArgs,\r\n SpeechRecognitionEventArgs,\r\n SpeechRecognitionResult\r\n} from \"./Exports.js\";\r\nimport { PropertyId } from \"./PropertyId.js\";\r\nimport { TurnStatusReceivedEventArgs } from \"./TurnStatusReceivedEventArgs.js\";\r\n\r\n/**\r\n * Dialog Service Connector\r\n * @class DialogServiceConnector\r\n */\r\nexport class DialogServiceConnector extends Recognizer {\r\n private privIsDisposed: boolean;\r\n private isTurnComplete: boolean;\r\n\r\n /**\r\n * Initializes an instance of the DialogServiceConnector.\r\n * @constructor\r\n * @param {DialogServiceConfig} dialogConfig - Set of properties to configure this recognizer.\r\n * @param {AudioConfig} audioConfig - An optional audio config associated with the recognizer\r\n */\r\n public constructor(dialogConfig: DialogServiceConfig, audioConfig?: AudioConfig) {\r\n const dialogServiceConfigImpl = dialogConfig as DialogServiceConfigImpl;\r\n Contracts.throwIfNull(dialogConfig, \"dialogConfig\");\r\n\r\n super(audioConfig, dialogServiceConfigImpl.properties, new DialogConnectionFactory());\r\n\r\n this.isTurnComplete = true;\r\n this.privIsDisposed = false;\r\n this.privProperties = dialogServiceConfigImpl.properties.clone();\r\n\r\n const agentConfig = this.buildAgentConfig();\r\n this.privReco.agentConfig.set(agentConfig);\r\n }\r\n\r\n /**\r\n * The event recognizing signals that an intermediate recognition result is received.\r\n * @member DialogServiceConnector.prototype.recognizing\r\n * @function\r\n * @public\r\n */\r\n public recognizing: (sender: DialogServiceConnector, event: SpeechRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event recognized signals that a final recognition result is received.\r\n * @member DialogServiceConfig.prototype.recognized\r\n * @function\r\n * @public\r\n */\r\n public recognized: (sender: DialogServiceConnector, event: SpeechRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event canceled signals that an error occurred during recognition.\r\n * @member DialogServiceConnector.prototype.canceled\r\n * @function\r\n * @public\r\n */\r\n public canceled: (sender: DialogServiceConnector, event: SpeechRecognitionCanceledEventArgs) => void;\r\n\r\n /**\r\n * The event activityReceived signals that an activity has been received.\r\n * @member DialogServiceConnector.prototype.activityReceived\r\n * @function\r\n * @public\r\n */\r\n public activityReceived: (sender: DialogServiceConnector, event: ActivityReceivedEventArgs) => void;\r\n\r\n /**\r\n * The event turnStatusReceived signals that a turn status message has been received. These messages are\r\n * associated with both an interaction and a conversation. They are used to notify the client in the event\r\n * of an interaction failure with the dialog backend, e.g. in the event of a network issue, timeout, crash,\r\n * or other problem.\r\n * @member DialogServiceConnector.prototype.turnStatusReceived\r\n * @function\r\n * @public\r\n */\r\n public turnStatusReceived: (sender: DialogServiceConnector, event: TurnStatusReceivedEventArgs) => void;\r\n\r\n /**\r\n * Starts a connection to the service.\r\n * Users can optionally call connect() to manually set up a connection in advance, before starting interactions.\r\n *\r\n * Note: On return, the connection might not be ready yet. Please subscribe to the Connected event to\r\n * be notified when the connection is established.\r\n * @member DialogServiceConnector.prototype.connect\r\n * @function\r\n * @public\r\n */\r\n public connect(cb?: () => void, err?: (error: string) => void): void {\r\n marshalPromiseToCallbacks(this.privReco.connect(), cb, err);\r\n }\r\n\r\n /**\r\n * Closes the connection the service.\r\n * Users can optionally call disconnect() to manually shutdown the connection of the associated DialogServiceConnector.\r\n *\r\n * If disconnect() is called during a recognition, recognition will fail and cancel with an error.\r\n */\r\n public disconnect(cb?: () => void, err?: (error: string) => void): void {\r\n marshalPromiseToCallbacks(this.privReco.disconnect(), cb, err);\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member DialogServiceConnector.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Sets the authorization token used to communicate with the service.\r\n * @member DialogServiceConnector.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this DialogServiceConnector.\r\n * @member DialogServiceConnector.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this DialogServiceConnector.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /** Gets the template for the activity generated by service from speech.\r\n * Properties from the template will be stamped on the generated activity.\r\n * It can be empty\r\n */\r\n public get speechActivityTemplate(): string {\r\n return this.properties.getProperty(PropertyId.Conversation_Speech_Activity_Template);\r\n }\r\n\r\n /** Sets the template for the activity generated by service from speech.\r\n * Properties from the template will be stamped on the generated activity.\r\n * It can be null or empty.\r\n * Note: it has to be a valid Json object.\r\n */\r\n public set speechActivityTemplate(speechActivityTemplate: string) {\r\n this.properties.setProperty(PropertyId.Conversation_Speech_Activity_Template, speechActivityTemplate);\r\n }\r\n\r\n /**\r\n * Starts recognition and stops after the first utterance is recognized.\r\n * @member DialogServiceConnector.prototype.listenOnceAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the result when the reco has completed.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public listenOnceAsync(cb?: (e: SpeechRecognitionResult) => void, err?: (e: string) => void): void {\r\n if (this.isTurnComplete) {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n const callbackHolder = async (): Promise => {\r\n await this.privReco.connect();\r\n await this.implRecognizerStop();\r\n this.isTurnComplete = false;\r\n\r\n const ret: Deferred = new Deferred();\r\n await this.privReco.recognize(RecognitionMode.Conversation, ret.resolve, ret.reject);\r\n\r\n const e: SpeechRecognitionResult = await ret.promise;\r\n await this.implRecognizerStop();\r\n\r\n return e;\r\n };\r\n\r\n const retPromise: Promise = callbackHolder();\r\n\r\n retPromise.catch((): void => {\r\n // Destroy the recognizer.\r\n // We've done all we can here.\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.dispose(true).catch((): void => { });\r\n });\r\n\r\n marshalPromiseToCallbacks(retPromise.finally((): void => {\r\n this.isTurnComplete = true;\r\n }), cb, err);\r\n }\r\n }\r\n\r\n public sendActivityAsync(activity: string, cb?: () => void, errCb?: (error: string) => void): void {\r\n marshalPromiseToCallbacks((this.privReco as DialogServiceAdapter).sendMessage(activity), cb, errCb);\r\n }\r\n\r\n /**\r\n * closes all external resources held by an instance of this class.\r\n * @member DialogServiceConnector.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, err?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n\r\n marshalPromiseToCallbacks(this.dispose(true), cb, err);\r\n }\r\n\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privIsDisposed) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n this.privIsDisposed = true;\r\n await this.implRecognizerStop();\r\n await super.dispose(disposing);\r\n }\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n protected createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n\r\n const audioSource: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n\r\n return new DialogServiceAdapter(authentication, connectionFactory, audioSource, recognizerConfig, this);\r\n }\r\n\r\n private buildAgentConfig(): IAgentConfig {\r\n const communicationType = this.properties.getProperty(\"Conversation_Communication_Type\", \"Default\");\r\n\r\n return {\r\n botInfo: {\r\n commType: communicationType,\r\n commandsCulture: undefined,\r\n connectionId: this.properties.getProperty(PropertyId.Conversation_Agent_Connection_Id),\r\n conversationId: this.properties.getProperty(PropertyId.Conversation_Conversation_Id, undefined),\r\n fromId: this.properties.getProperty(PropertyId.Conversation_From_Id, undefined),\r\n ttsAudioFormat: this.properties.getProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, undefined)\r\n },\r\n version: 0.2\r\n };\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport { AudioConfig } from \"./Audio/AudioConfig.js\";\r\nexport { AudioStreamFormat, AudioFormatTag } from \"./Audio/AudioStreamFormat.js\";\r\nexport { AudioInputStream, PullAudioInputStream, PushAudioInputStream } from \"./Audio/AudioInputStream.js\";\r\nexport { AudioOutputStream, PullAudioOutputStream, PushAudioOutputStream} from \"./Audio/AudioOutputStream.js\";\r\nexport { CancellationReason } from \"./CancellationReason.js\";\r\nexport { PullAudioInputStreamCallback } from \"./Audio/PullAudioInputStreamCallback.js\";\r\nexport { PushAudioOutputStreamCallback } from \"./Audio/PushAudioOutputStreamCallback.js\";\r\nexport { KeywordRecognitionModel } from \"./KeywordRecognitionModel.js\";\r\nexport { SessionEventArgs } from \"./SessionEventArgs.js\";\r\nexport { RecognitionEventArgs } from \"./RecognitionEventArgs.js\";\r\nexport { OutputFormat } from \"./OutputFormat.js\";\r\nexport { IntentRecognitionEventArgs } from \"./IntentRecognitionEventArgs.js\";\r\nexport { RecognitionResult } from \"./RecognitionResult.js\";\r\nexport { SpeechRecognitionResult } from \"./SpeechRecognitionResult.js\";\r\nexport { IntentRecognitionResult } from \"./IntentRecognitionResult.js\";\r\nexport { LanguageUnderstandingModel } from \"./LanguageUnderstandingModel.js\";\r\nexport { SpeechRecognitionEventArgs, ConversationTranscriptionEventArgs, MeetingTranscriptionEventArgs } from \"./SpeechRecognitionEventArgs.js\";\r\nexport { SpeechRecognitionCanceledEventArgs } from \"./SpeechRecognitionCanceledEventArgs.js\";\r\nexport { TranslationRecognitionEventArgs } from \"./TranslationRecognitionEventArgs.js\";\r\nexport { TranslationSynthesisEventArgs } from \"./TranslationSynthesisEventArgs.js\";\r\nexport { TranslationRecognitionResult } from \"./TranslationRecognitionResult.js\";\r\nexport { TranslationSynthesisResult } from \"./TranslationSynthesisResult.js\";\r\nexport { ResultReason } from \"./ResultReason.js\";\r\nexport { SpeechConfig, SpeechConfigImpl } from \"./SpeechConfig.js\";\r\nexport { SpeechTranslationConfig, SpeechTranslationConfigImpl } from \"./SpeechTranslationConfig.js\";\r\nexport { PropertyCollection } from \"./PropertyCollection.js\";\r\nexport { PropertyId } from \"./PropertyId.js\";\r\nexport { Recognizer } from \"./Recognizer.js\";\r\nexport { SpeechRecognizer } from \"./SpeechRecognizer.js\";\r\nexport { IntentRecognizer } from \"./IntentRecognizer.js\";\r\nexport { VoiceProfileType } from \"./VoiceProfileType.js\";\r\nexport { TranslationRecognizer } from \"./TranslationRecognizer.js\";\r\nexport { Translations } from \"./Translations.js\";\r\nexport { NoMatchReason } from \"./NoMatchReason.js\";\r\nexport { NoMatchDetails } from \"./NoMatchDetails.js\";\r\nexport { TranslationRecognitionCanceledEventArgs } from \"./TranslationRecognitionCanceledEventArgs.js\";\r\nexport { IntentRecognitionCanceledEventArgs } from \"./IntentRecognitionCanceledEventArgs.js\";\r\nexport { CancellationDetailsBase } from \"./CancellationDetailsBase.js\";\r\nexport { CancellationDetails } from \"./CancellationDetails.js\";\r\nexport { CancellationErrorCode } from \"./CancellationErrorCodes.js\";\r\nexport { ConnectionEventArgs } from \"./ConnectionEventArgs.js\";\r\nexport { ServiceEventArgs } from \"./ServiceEventArgs.js\";\r\nexport { Connection } from \"./Connection.js\";\r\nexport { PhraseListGrammar } from \"./PhraseListGrammar.js\";\r\nexport { DialogServiceConfig } from \"./DialogServiceConfig.js\";\r\nexport { BotFrameworkConfig } from \"./BotFrameworkConfig.js\";\r\nexport { CustomCommandsConfig } from \"./CustomCommandsConfig.js\";\r\nexport { DialogServiceConnector } from \"./DialogServiceConnector.js\";\r\nexport { ActivityReceivedEventArgs } from \"./ActivityReceivedEventArgs.js\";\r\nexport { TurnStatusReceivedEventArgs } from \"./TurnStatusReceivedEventArgs.js\";\r\nexport { ServicePropertyChannel } from \"./ServicePropertyChannel.js\";\r\nexport { ProfanityOption } from \"./ProfanityOption.js\";\r\nexport { BaseAudioPlayer } from \"./Audio/BaseAudioPlayer.js\";\r\nexport { ConnectionMessageEventArgs } from \"./ConnectionMessageEventArgs.js\";\r\nexport { ConnectionMessage } from \"./ConnectionMessage.js\";\r\nexport { VoiceProfile } from \"./VoiceProfile.js\";\r\nexport { VoiceProfileEnrollmentResult, VoiceProfileEnrollmentCancellationDetails } from \"./VoiceProfileEnrollmentResult.js\";\r\nexport { VoiceProfileResult, VoiceProfileCancellationDetails } from \"./VoiceProfileResult.js\";\r\nexport { VoiceProfilePhraseResult } from \"./VoiceProfilePhraseResult.js\";\r\nexport { VoiceProfileClient } from \"./VoiceProfileClient.js\";\r\nexport { SpeakerRecognizer } from \"./SpeakerRecognizer.js\";\r\nexport { SpeakerIdentificationModel } from \"./SpeakerIdentificationModel.js\";\r\nexport { SpeakerVerificationModel } from \"./SpeakerVerificationModel.js\";\r\nexport { AutoDetectSourceLanguageConfig } from \"./AutoDetectSourceLanguageConfig.js\";\r\nexport { AutoDetectSourceLanguageResult } from \"./AutoDetectSourceLanguageResult.js\";\r\nexport { SourceLanguageConfig } from \"./SourceLanguageConfig.js\";\r\nexport { SpeakerRecognitionResult, SpeakerRecognitionResultType, SpeakerRecognitionCancellationDetails } from \"./SpeakerRecognitionResult.js\";\r\nexport { Conversation,\r\n ConversationExpirationEventArgs,\r\n ConversationInfo,\r\n ConversationParticipantsChangedEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n ConversationTranslationEventArgs,\r\n ConversationTranslationResult,\r\n ConversationTranslator,\r\n ConversationTranscriber,\r\n ConversationTranscriptionResult,\r\n Meeting,\r\n MeetingInfo,\r\n MeetingTranscriber,\r\n IParticipant,\r\n Participant,\r\n ParticipantChangedReason,\r\n User,\r\n VoiceSignature\r\n } from \"./Transcription/Exports.js\";\r\nexport { Synthesizer } from \"./Synthesizer.js\";\r\nexport { SpeechSynthesisOutputFormat } from \"./SpeechSynthesisOutputFormat.js\";\r\nexport { SpeechSynthesizer } from \"./SpeechSynthesizer.js\";\r\nexport { SynthesisResult } from \"./SynthesisResult.js\";\r\nexport { SpeechSynthesisResult } from \"./SpeechSynthesisResult.js\";\r\nexport { SpeechSynthesisEventArgs } from \"./SpeechSynthesisEventArgs.js\";\r\nexport { SpeechSynthesisWordBoundaryEventArgs } from \"./SpeechSynthesisWordBoundaryEventArgs.js\";\r\nexport { SpeechSynthesisBookmarkEventArgs } from \"./SpeechSynthesisBookmarkEventArgs.js\";\r\nexport { SpeechSynthesisVisemeEventArgs } from \"./SpeechSynthesisVisemeEventArgs.js\";\r\nexport { SpeechSynthesisBoundaryType } from \"./SpeechSynthesisBoundaryType.js\";\r\nexport { SynthesisVoicesResult } from \"./SynthesisVoicesResult.js\";\r\nexport { VoiceInfo } from \"./VoiceInfo.js\";\r\nexport { IPlayer } from \"./Audio/IPlayer.js\";\r\nexport { SpeakerAudioDestination } from \"./Audio/SpeakerAudioDestination.js\";\r\nexport { CancellationEventArgs } from \"./CancellationEventArgs.js\";\r\nexport { ConversationTranscriptionCanceledEventArgs } from \"./ConversationTranscriptionCanceledEventArgs.js\";\r\nexport { MeetingTranscriptionCanceledEventArgs } from \"./MeetingTranscriptionCanceledEventArgs.js\";\r\nexport { PronunciationAssessmentGradingSystem } from \"./PronunciationAssessmentGradingSystem.js\";\r\nexport { PronunciationAssessmentGranularity } from \"./PronunciationAssessmentGranularity.js\";\r\nexport { PronunciationAssessmentConfig } from \"./PronunciationAssessmentConfig.js\";\r\nexport { PronunciationAssessmentResult } from \"./PronunciationAssessmentResult.js\";\r\nexport { LanguageIdMode } from \"./LanguageIdMode.js\";\r\nexport { AvatarConfig } from \"./AvatarConfig.js\";\r\nexport { AvatarEventArgs } from \"./AvatarEventArgs.js\";\r\nexport { AvatarSynthesizer } from \"./AvatarSynthesizer.js\";\r\nexport { AvatarVideoFormat, Coordinate } from \"./AvatarVideoFormat.js\";\r\nexport { AvatarWebRTCConnectionResult } from \"./AvatarWebRTCConnectionResult.js\";\r\nexport { Diagnostics } from \"./Diagnostics.js\";\r\nexport { LogLevel } from \"./LogLevel.js\";\r\nexport { IVoiceJson } from \"./IVoiceJson.js\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { CancellationEventArgs } from \"./CancellationEventArgs.js\";\r\nimport { CancellationErrorCode, CancellationReason, IntentRecognitionEventArgs, IntentRecognitionResult } from \"./Exports.js\";\r\n\r\n/**\r\n * Define payload of intent recognition canceled result events.\r\n * @class IntentRecognitionCanceledEventArgs\r\n */\r\nexport class IntentRecognitionCanceledEventArgs extends IntentRecognitionEventArgs implements CancellationEventArgs {\r\n private privReason: CancellationReason;\r\n private privErrorDetails: string;\r\n private privErrorCode: CancellationErrorCode;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {CancellationReason} result - The result of the intent recognition.\r\n * @param {string} offset - The offset.\r\n * @param {IntentRecognitionResult} sessionId - The session id.\r\n */\r\n public constructor(\r\n reason: CancellationReason,\r\n errorDetails: string,\r\n errorCode: CancellationErrorCode,\r\n result?: IntentRecognitionResult,\r\n offset?: number,\r\n sessionId?: string) {\r\n super(result, offset, sessionId);\r\n\r\n this.privReason = reason;\r\n this.privErrorDetails = errorDetails;\r\n this.privErrorCode = errorCode;\r\n }\r\n\r\n /**\r\n * The reason the recognition was canceled.\r\n * @member IntentRecognitionCanceledEventArgs.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {CancellationReason} Specifies the reason canceled.\r\n */\r\n public get reason(): CancellationReason {\r\n return this.privReason;\r\n }\r\n\r\n /**\r\n * The error code in case of an unsuccessful recognition.\r\n * Added in version 1.1.0.\r\n * @return An error code that represents the error reason.\r\n */\r\n public get errorCode(): CancellationErrorCode {\r\n return this.privErrorCode;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful recognition, provides details of the occurred error.\r\n * @member IntentRecognitionCanceledEventArgs.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} A String that represents the error details.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IntentRecognitionResult, RecognitionEventArgs } from \"./Exports.js\";\r\n\r\n/**\r\n * Intent recognition result event arguments.\r\n * @class\r\n */\r\nexport class IntentRecognitionEventArgs extends RecognitionEventArgs {\r\n private privResult: IntentRecognitionResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param result - The result of the intent recognition.\r\n * @param offset - The offset.\r\n * @param sessionId - The session id.\r\n */\r\n public constructor(result: IntentRecognitionResult, offset?: number, sessionId?: string) {\r\n super(offset, sessionId);\r\n\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Represents the intent recognition result.\r\n * @member IntentRecognitionEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {IntentRecognitionResult} Represents the intent recognition result.\r\n */\r\n public get result(): IntentRecognitionResult {\r\n return this.privResult;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, ResultReason, SpeechRecognitionResult } from \"./Exports.js\";\r\n\r\n/**\r\n * Intent recognition result.\r\n * @class\r\n */\r\nexport class IntentRecognitionResult extends SpeechRecognitionResult {\r\n private privIntentId: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param intentId - The intent id.\r\n * @param resultId - The result id.\r\n * @param reason - The reason.\r\n * @param text - The recognized text.\r\n * @param duration - The duration.\r\n * @param offset - The offset into the stream.\r\n * @param language - Primary Language detected, if provided.\r\n * @param languageDetectionConfidence - Primary Language confidence (\"Unknown,\" \"Low,\" \"Medium,\" \"High\"...), if provided.\r\n * @param errorDetails - Error details, if provided.\r\n * @param json - Additional Json, if provided.\r\n * @param properties - Additional properties, if provided.\r\n */\r\n public constructor(intentId?: string, resultId?: string, reason?: ResultReason, text?: string,\r\n duration?: number, offset?: number, language?: string, languageDetectionConfidence?: string,\r\n errorDetails?: string, json?: string, properties?: PropertyCollection) {\r\n super(resultId, reason, text, duration, offset, language, languageDetectionConfidence, undefined, errorDetails, json, properties);\r\n\r\n this.privIntentId = intentId;\r\n }\r\n\r\n /**\r\n * A String that represents the intent identifier being recognized.\r\n * @member IntentRecognitionResult.prototype.intentId\r\n * @function\r\n * @public\r\n * @returns {string} A String that represents the intent identifier being recognized.\r\n */\r\n public get intentId(): string {\r\n return this.privIntentId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n AddedLmIntent,\r\n IAuthentication,\r\n IConnectionFactory,\r\n IntentConnectionFactory,\r\n IntentServiceRecognizer,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig\r\n} from \"../common.speech/Exports.js\";\r\nimport { marshalPromiseToCallbacks } from \"../common/Exports.js\";\r\nimport { AudioConfigImpl } from \"./Audio/AudioConfig.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n IntentRecognitionCanceledEventArgs,\r\n IntentRecognitionEventArgs,\r\n IntentRecognitionResult,\r\n KeywordRecognitionModel,\r\n LanguageUnderstandingModel,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n SpeechConfig,\r\n} from \"./Exports.js\";\r\nimport { LanguageUnderstandingModelImpl } from \"./LanguageUnderstandingModel.js\";\r\nimport { SpeechConfigImpl } from \"./SpeechConfig.js\";\r\n\r\n/**\r\n * Intent recognizer.\r\n * @class\r\n */\r\nexport class IntentRecognizer extends Recognizer {\r\n private privDisposedIntentRecognizer: boolean;\r\n private privAddedIntents: string[][];\r\n private privAddedLmIntents: { [id: string]: AddedLmIntent };\r\n private privUmbrellaIntent: AddedLmIntent;\r\n\r\n /**\r\n * Initializes an instance of the IntentRecognizer.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - The set of configuration properties.\r\n * @param {AudioConfig} audioConfig - An optional audio input config associated with the recognizer\r\n */\r\n public constructor(speechConfig: SpeechConfig, audioConfig?: AudioConfig) {\r\n Contracts.throwIfNullOrUndefined(speechConfig, \"speechConfig\");\r\n const configImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n Contracts.throwIfNullOrUndefined(configImpl, \"speechConfig\");\r\n\r\n super(audioConfig, configImpl.properties, new IntentConnectionFactory());\r\n this.privAddedIntents = [];\r\n this.privAddedLmIntents = {};\r\n\r\n this.privDisposedIntentRecognizer = false;\r\n this.privProperties = configImpl.properties;\r\n\r\n Contracts.throwIfNullOrWhitespace(this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage), PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n }\r\n\r\n /**\r\n * The event recognizing signals that an intermediate recognition result is received.\r\n * @member IntentRecognizer.prototype.recognizing\r\n * @function\r\n * @public\r\n */\r\n public recognizing: (sender: IntentRecognizer, event: IntentRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event recognized signals that a final recognition result is received.\r\n * @member IntentRecognizer.prototype.recognized\r\n * @function\r\n * @public\r\n */\r\n public recognized: (sender: IntentRecognizer, event: IntentRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event canceled signals that an error occurred during recognition.\r\n * @member IntentRecognizer.prototype.canceled\r\n * @function\r\n * @public\r\n */\r\n public canceled: (sender: IntentRecognizer, event: IntentRecognitionCanceledEventArgs) => void;\r\n\r\n /**\r\n * Gets the spoken language of recognition.\r\n * @member IntentRecognizer.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @returns {string} the spoken language of recognition.\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n Contracts.throwIfDisposed(this.privDisposedIntentRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member IntentRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * Note: Please use a token derived from your LanguageUnderstanding subscription key for the Intent recognizer.\r\n * @member IntentRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} value - Authorization token.\r\n */\r\n public set authorizationToken(value: string) {\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, value);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this IntentRecognizer.\r\n * @member IntentRecognizer.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their\r\n * values defined for this IntentRecognizer.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Starts intent recognition, and stops after the first utterance is recognized.\r\n * The task returns the recognition text and intent as result.\r\n * Note: RecognizeOnceAsync() returns when the first utterance has been recognized,\r\n * so it is suitable only for single shot recognition like command or query.\r\n * For long-running recognition, use StartContinuousRecognitionAsync() instead.\r\n * @member IntentRecognizer.prototype.recognizeOnceAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the recognition has finished with an IntentRecognitionResult.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public recognizeOnceAsync(cb?: (e: IntentRecognitionResult) => void, err?: (e: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedIntentRecognizer);\r\n\r\n if (Object.keys(this.privAddedLmIntents).length !== 0 || undefined !== this.privUmbrellaIntent) {\r\n const context: IIntentContext = this.buildSpeechContext();\r\n\r\n this.privReco.speechContext.setSection(\"intent\", context.Intent);\r\n this.privReco.dynamicGrammar.addReferenceGrammar(context.ReferenceGrammars);\r\n\r\n const intentReco: IntentServiceRecognizer = this.privReco as IntentServiceRecognizer;\r\n intentReco.setIntents(this.privAddedLmIntents, this.privUmbrellaIntent);\r\n }\r\n\r\n marshalPromiseToCallbacks(this.recognizeOnceAsyncImpl(RecognitionMode.Interactive), cb, err);\r\n }\r\n\r\n /**\r\n * Starts speech recognition, until stopContinuousRecognitionAsync() is called.\r\n * User must subscribe to events to receive recognition results.\r\n * @member IntentRecognizer.prototype.startContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n if (Object.keys(this.privAddedLmIntents).length !== 0 || undefined !== this.privUmbrellaIntent) {\r\n const context: IIntentContext = this.buildSpeechContext();\r\n\r\n this.privReco.speechContext.setSection(\"intent\", context.Intent);\r\n this.privReco.dynamicGrammar.addReferenceGrammar(context.ReferenceGrammars);\r\n\r\n const intentReco: IntentServiceRecognizer = this.privReco as IntentServiceRecognizer;\r\n intentReco.setIntents(this.privAddedLmIntents, this.privUmbrellaIntent);\r\n }\r\n\r\n marshalPromiseToCallbacks(this.startContinuousRecognitionAsyncImpl(RecognitionMode.Conversation), cb, err);\r\n }\r\n\r\n /**\r\n * Stops continuous intent recognition.\r\n * @member IntentRecognizer.prototype.stopContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has stopped.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.stopContinuousRecognitionAsyncImpl(), cb, err);\r\n }\r\n\r\n /**\r\n * Starts speech recognition with keyword spotting, until stopKeywordRecognitionAsync() is called.\r\n * User must subscribe to events to receive recognition results.\r\n * Note: Key word spotting functionality is only available on the Speech Devices SDK.\r\n * This functionality is currently not included in the SDK itself.\r\n * @member IntentRecognizer.prototype.startKeywordRecognitionAsync\r\n * @function\r\n * @public\r\n * @param {KeywordRecognitionModel} model - The keyword recognition model that specifies the keyword to be recognized.\r\n * @param cb - Callback invoked once the recognition has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startKeywordRecognitionAsync(model: KeywordRecognitionModel, cb?: () => void, err?: (e: string) => void): void {\r\n Contracts.throwIfNull(model, \"model\");\r\n\r\n if (!!err) {\r\n err(\"Not yet implemented.\");\r\n }\r\n }\r\n\r\n /**\r\n * Stops continuous speech recognition.\r\n * Note: Key word spotting functionality is only available on the Speech Devices SDK.\r\n * This functionality is currently not included in the SDK itself.\r\n * @member IntentRecognizer.prototype.stopKeywordRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has stopped.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopKeywordRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n if (!!cb) {\r\n try {\r\n cb();\r\n } catch (e) {\r\n if (!!err) {\r\n err(e as string);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Adds a phrase that should be recognized as intent.\r\n * @member IntentRecognizer.prototype.addIntent\r\n * @function\r\n * @public\r\n * @param {string} intentId - A String that represents the identifier of the intent to be recognized.\r\n * @param {string} phrase - A String that specifies the phrase representing the intent.\r\n */\r\n public addIntent(simplePhrase: string, intentId?: string): void {\r\n Contracts.throwIfDisposed(this.privDisposedIntentRecognizer);\r\n Contracts.throwIfNullOrWhitespace(intentId, \"intentId\");\r\n Contracts.throwIfNullOrWhitespace(simplePhrase, \"simplePhrase\");\r\n\r\n this.privAddedIntents.push([intentId, simplePhrase]);\r\n }\r\n\r\n /**\r\n * Adds an intent from Language Understanding service for recognition.\r\n * @member IntentRecognizer.prototype.addIntentWithLanguageModel\r\n * @function\r\n * @public\r\n * @param {string} intentId - A String that represents the identifier of the intent\r\n * to be recognized. Ignored if intentName is empty.\r\n * @param {string} model - The intent model from Language Understanding service.\r\n * @param {string} intentName - The intent name defined in the intent model. If it\r\n * is empty, all intent names defined in the model will be added.\r\n */\r\n public addIntentWithLanguageModel(intentId: string, model: LanguageUnderstandingModel, intentName?: string): void {\r\n Contracts.throwIfDisposed(this.privDisposedIntentRecognizer);\r\n Contracts.throwIfNullOrWhitespace(intentId, \"intentId\");\r\n Contracts.throwIfNull(model, \"model\");\r\n\r\n const modelImpl: LanguageUnderstandingModelImpl = model as LanguageUnderstandingModelImpl;\r\n Contracts.throwIfNullOrWhitespace(modelImpl.appId, \"model.appId\");\r\n\r\n this.privAddedLmIntents[intentId] = new AddedLmIntent(modelImpl, intentName);\r\n }\r\n\r\n /**\r\n * @summary Adds all intents from the specified Language Understanding Model.\r\n * @member IntentRecognizer.prototype.addAllIntents\r\n * @function\r\n * @public\r\n * @function\r\n * @public\r\n * @param {LanguageUnderstandingModel} model - The language understanding model containing the intents.\r\n * @param {string} intentId - A custom id String to be returned in the IntentRecognitionResult's getIntentId() method.\r\n */\r\n public addAllIntents(model: LanguageUnderstandingModel, intentId?: string): void {\r\n Contracts.throwIfNull(model, \"model\");\r\n\r\n const modelImpl: LanguageUnderstandingModelImpl = model as LanguageUnderstandingModelImpl;\r\n Contracts.throwIfNullOrWhitespace(modelImpl.appId, \"model.appId\");\r\n\r\n this.privUmbrellaIntent = new AddedLmIntent(modelImpl, intentId);\r\n }\r\n\r\n /**\r\n * closes all external resources held by an instance of this class.\r\n * @member IntentRecognizer.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, errorCb?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedIntentRecognizer);\r\n\r\n marshalPromiseToCallbacks(this.dispose(true), cb, errorCb);\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n protected createServiceRecognizer(authentication: IAuthentication, connectionFactory: IConnectionFactory, audioConfig: AudioConfig, recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n const audioImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n return new IntentServiceRecognizer(authentication, connectionFactory, audioImpl, recognizerConfig, this);\r\n }\r\n\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedIntentRecognizer) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n this.privDisposedIntentRecognizer = true;\r\n await super.dispose(disposing);\r\n }\r\n }\r\n\r\n private buildSpeechContext(): IIntentContext {\r\n let appId: string;\r\n let region: string;\r\n let subscriptionKey: string;\r\n const refGrammers: string[] = [];\r\n\r\n if (undefined !== this.privUmbrellaIntent) {\r\n appId = this.privUmbrellaIntent.modelImpl.appId;\r\n region = this.privUmbrellaIntent.modelImpl.region;\r\n subscriptionKey = this.privUmbrellaIntent.modelImpl.subscriptionKey;\r\n }\r\n\r\n // Build the reference grammer array.\r\n for (const intentId of Object.keys(this.privAddedLmIntents)) {\r\n const addedLmIntent: AddedLmIntent = this.privAddedLmIntents[intentId];\r\n\r\n // validate all the same model, region, and key...\r\n if (appId === undefined) {\r\n appId = addedLmIntent.modelImpl.appId;\r\n } else {\r\n if (appId !== addedLmIntent.modelImpl.appId) {\r\n throw new Error(\"Intents must all be from the same LUIS model\");\r\n }\r\n }\r\n\r\n if (region === undefined) {\r\n region = addedLmIntent.modelImpl.region;\r\n } else {\r\n if (region !== addedLmIntent.modelImpl.region) {\r\n throw new Error(\"Intents must all be from the same LUIS model in a single region\");\r\n }\r\n }\r\n\r\n if (subscriptionKey === undefined) {\r\n subscriptionKey = addedLmIntent.modelImpl.subscriptionKey;\r\n } else {\r\n if (subscriptionKey !== addedLmIntent.modelImpl.subscriptionKey) {\r\n throw new Error(\"Intents must all use the same subscription key\");\r\n }\r\n }\r\n\r\n const grammer: string = \"luis/\" + appId + \"-PRODUCTION#\" + intentId;\r\n refGrammers.push(grammer);\r\n }\r\n\r\n return {\r\n Intent: {\r\n id: appId,\r\n key: (subscriptionKey === undefined) ? this.privProperties.getProperty(PropertyId[PropertyId.SpeechServiceConnection_Key]) : subscriptionKey,\r\n provider: \"LUIS\",\r\n },\r\n ReferenceGrammars: (undefined === this.privUmbrellaIntent) ? refGrammers : [\"luis/\" + appId + \"-PRODUCTION\"],\r\n };\r\n }\r\n}\r\n\r\ninterface IIntentContext {\r\n Intent: {\r\n id: string;\r\n key: string;\r\n provider: string;\r\n };\r\n ReferenceGrammars: string[];\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\n\r\n/**\r\n * Represents a keyword recognition model for recognizing when\r\n * the user says a keyword to initiate further speech recognition.\r\n * @class KeywordRecognitionModel\r\n */\r\nexport class KeywordRecognitionModel {\r\n private privDisposed: boolean = false;\r\n\r\n /**\r\n * Create and initializes a new instance.\r\n * @constructor\r\n */\r\n private constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Creates a keyword recognition model using the specified filename.\r\n * @member KeywordRecognitionModel.fromFile\r\n * @function\r\n * @public\r\n * @param {string} fileName - A string that represents file name for the keyword recognition model.\r\n * Note, the file can point to a zip file in which case the model\r\n * will be extracted from the zip.\r\n * @returns {KeywordRecognitionModel} The keyword recognition model being created.\r\n */\r\n public static fromFile(fileName: string): KeywordRecognitionModel {\r\n Contracts.throwIfFileDoesNotExist(fileName, \"fileName\");\r\n\r\n throw new Error(\"Not yet implemented.\");\r\n }\r\n\r\n /**\r\n * Creates a keyword recognition model using the specified filename.\r\n * @member KeywordRecognitionModel.fromStream\r\n * @function\r\n * @public\r\n * @param {string} file - A File that represents file for the keyword recognition model.\r\n * Note, the file can point to a zip file in which case the model will be extracted from the zip.\r\n * @returns {KeywordRecognitionModel} The keyword recognition model being created.\r\n */\r\n public static fromStream(file: File): KeywordRecognitionModel {\r\n Contracts.throwIfNull(file, \"file\");\r\n\r\n throw new Error(\"Not yet implemented.\");\r\n }\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member KeywordRecognitionModel.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n if (this.privDisposed) {\r\n return;\r\n }\r\n\r\n this.privDisposed = true;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Language Identification mode\r\n * @class LanguageIdMode\r\n */\r\nexport enum LanguageIdMode {\r\n\r\n /**\r\n * Detect language at audio start\r\n * @member LanguageIdMode.AtStart\r\n */\r\n AtStart,\r\n\r\n /**\r\n * Continuously detect language\r\n * @member LanguageIdMode.Continuous\r\n */\r\n Continuous,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nimport { Contracts } from \"./Contracts.js\";\r\n\r\n/**\r\n * Language understanding model\r\n * @class LanguageUnderstandingModel\r\n */\r\nexport class LanguageUnderstandingModel {\r\n /**\r\n * Creates and initializes a new instance\r\n * @constructor\r\n */\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Creates an language understanding model using the specified endpoint.\r\n * @member LanguageUnderstandingModel.fromEndpoint\r\n * @function\r\n * @public\r\n * @param {URL} uri - A String that represents the endpoint of the language understanding model.\r\n * @returns {LanguageUnderstandingModel} The language understanding model being created.\r\n */\r\n public static fromEndpoint(uri: URL): LanguageUnderstandingModel {\r\n Contracts.throwIfNull(uri, \"uri\");\r\n Contracts.throwIfNullOrWhitespace(uri.hostname, \"uri\");\r\n\r\n const langModelImp: LanguageUnderstandingModelImpl = new LanguageUnderstandingModelImpl();\r\n // Need to extract the app ID from the URL.\r\n // URL is in the format: https://.api.cognitive.microsoft.com/luis/v2.0/apps/?subscription-key=&timezoneOffset=-360\r\n\r\n // Start tearing the string apart.\r\n\r\n // region can be extracted from the host name.\r\n const firstDot: number = uri.host.indexOf(\".\");\r\n if (-1 === firstDot) {\r\n throw new Error(\"Could not determine region from endpoint\");\r\n }\r\n langModelImp.region = uri.host.substr(0, firstDot);\r\n\r\n // Now the app ID.\r\n\r\n const lastSegment: number = uri.pathname.lastIndexOf(\"/\") + 1;\r\n if (-1 === lastSegment) {\r\n throw new Error(\"Could not determine appId from endpoint\");\r\n }\r\n\r\n langModelImp.appId = uri.pathname.substr(lastSegment);\r\n\r\n // And finally the key.\r\n langModelImp.subscriptionKey = uri.searchParams.get(\"subscription-key\");\r\n if (undefined === langModelImp.subscriptionKey) {\r\n throw new Error(\"Could not determine subscription key from endpoint\");\r\n }\r\n\r\n return langModelImp;\r\n }\r\n\r\n /**\r\n * Creates an language understanding model using the application id of Language Understanding service.\r\n * @member LanguageUnderstandingModel.fromAppId\r\n * @function\r\n * @public\r\n * @param {string} appId - A String that represents the application id of Language Understanding service.\r\n * @returns {LanguageUnderstandingModel} The language understanding model being created.\r\n */\r\n public static fromAppId(appId: string): LanguageUnderstandingModel {\r\n Contracts.throwIfNullOrWhitespace(appId, \"appId\");\r\n\r\n const langModelImp: LanguageUnderstandingModelImpl = new LanguageUnderstandingModelImpl();\r\n langModelImp.appId = appId;\r\n return langModelImp;\r\n }\r\n\r\n /**\r\n * Creates a language understanding model using hostname, subscription key and application\r\n * id of Language Understanding service.\r\n * @member LanguageUnderstandingModel.fromSubscription\r\n * @function\r\n * @public\r\n * @param {string} subscriptionKey - A String that represents the subscription key of\r\n * Language Understanding service.\r\n * @param {string} appId - A String that represents the application id of Language\r\n * Understanding service.\r\n * @param {LanguageUnderstandingModel} region - A String that represents the region\r\n * of the Language Understanding service (see the region page).\r\n * @returns {LanguageUnderstandingModel} The language understanding model being created.\r\n */\r\n public static fromSubscription(subscriptionKey: string, appId: string, region: string): LanguageUnderstandingModel {\r\n Contracts.throwIfNullOrWhitespace(subscriptionKey, \"subscriptionKey\");\r\n Contracts.throwIfNullOrWhitespace(appId, \"appId\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const langModelImp: LanguageUnderstandingModelImpl = new LanguageUnderstandingModelImpl();\r\n langModelImp.appId = appId;\r\n langModelImp.region = region;\r\n langModelImp.subscriptionKey = subscriptionKey;\r\n return langModelImp;\r\n }\r\n}\r\n\r\n/**\r\n * @private\r\n * @class LanguageUnderstandingModelImpl\r\n */\r\nexport class LanguageUnderstandingModelImpl extends LanguageUnderstandingModel {\r\n public appId: string;\r\n public region: string;\r\n public subscriptionKey: string;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { EventType } from \"../common/Exports.js\";\r\n\r\n/**\r\n * Define event severity types for setting logging output.\r\n * @class LogLevel\r\n */\r\n\r\nexport { EventType as LogLevel };\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CancellationEventArgsBase,\r\n} from \"./CancellationEventArgsBase.js\";\r\n\r\n/**\r\n * Defines content of a MeetingTranscriptionCanceledEvent.\r\n * @class MeetingTranscriptionCanceledEventArgs\r\n */\r\nexport class MeetingTranscriptionCanceledEventArgs extends CancellationEventArgsBase {\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { RecognitionStatus, SimpleSpeechPhrase } from \"../../src/common.speech/Exports.js\";\r\nimport { IntentRecognitionResult, NoMatchReason, SpeechRecognitionResult, TranslationRecognitionResult } from \"./Exports.js\";\r\n\r\n/**\r\n * Contains detailed information for NoMatch recognition results.\r\n * @class NoMatchDetails\r\n */\r\nexport class NoMatchDetails {\r\n private privReason: NoMatchReason;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {NoMatchReason} reason - The no-match reason.\r\n */\r\n private constructor(reason: NoMatchReason) {\r\n this.privReason = reason;\r\n }\r\n\r\n /**\r\n * Creates an instance of NoMatchDetails object for the NoMatch SpeechRecognitionResults.\r\n * @member NoMatchDetails.fromResult\r\n * @function\r\n * @public\r\n * @param {SpeechRecognitionResult | IntentRecognitionResult | TranslationRecognitionResult}\r\n * result - The recognition result that was not recognized.\r\n * @returns {NoMatchDetails} The no match details object being created.\r\n */\r\n public static fromResult(result: SpeechRecognitionResult | IntentRecognitionResult | TranslationRecognitionResult): NoMatchDetails {\r\n const simpleSpeech: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(result.json);\r\n\r\n let reason: NoMatchReason = NoMatchReason.NotRecognized;\r\n\r\n switch (simpleSpeech.RecognitionStatus) {\r\n case RecognitionStatus.BabbleTimeout:\r\n reason = NoMatchReason.InitialBabbleTimeout;\r\n break;\r\n case RecognitionStatus.InitialSilenceTimeout:\r\n reason = NoMatchReason.InitialSilenceTimeout;\r\n break;\r\n default:\r\n reason = NoMatchReason.NotRecognized;\r\n break;\r\n }\r\n\r\n return new NoMatchDetails(reason);\r\n }\r\n\r\n /**\r\n * The reason the recognition was canceled.\r\n * @member NoMatchDetails.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {NoMatchReason} Specifies the reason canceled.\r\n */\r\n public get reason(): NoMatchReason {\r\n return this.privReason;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the possible reasons a recognition result might not be recognized.\r\n * @class NoMatchReason\r\n */\r\nexport enum NoMatchReason {\r\n\r\n /**\r\n * Indicates that speech was detected, but not recognized.\r\n * @member NoMatchReason.NotRecognized\r\n */\r\n NotRecognized,\r\n\r\n /**\r\n * Indicates that the start of the audio stream contained only silence,\r\n * and the service timed out waiting for speech.\r\n * @member NoMatchReason.InitialSilenceTimeout\r\n */\r\n InitialSilenceTimeout,\r\n\r\n /**\r\n * Indicates that the start of the audio stream contained only noise,\r\n * and the service timed out waiting for speech.\r\n * @member NoMatchReason.InitialBabbleTimeout\r\n */\r\n InitialBabbleTimeout,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Define Speech Recognizer output formats.\r\n * @class OutputFormat\r\n */\r\nexport enum OutputFormat {\r\n /**\r\n * @member OutputFormat.Simple\r\n */\r\n Simple = 0,\r\n\r\n /**\r\n * @member OutputFormat.Detailed\r\n */\r\n Detailed,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n DynamicGrammarBuilder,\r\n ServiceRecognizerBase,\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n ConversationTranscriber,\r\n MeetingTranscriber,\r\n Recognizer\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Allows additions of new phrases to improve speech recognition.\r\n *\r\n * Phrases added to the recognizer are effective at the start of the next recognition, or the next time the SpeechSDK must reconnect\r\n * to the speech service.\r\n */\r\nexport class PhraseListGrammar {\r\n private privGrammerBuilder: DynamicGrammarBuilder;\r\n\r\n private constructor(recogBase: ServiceRecognizerBase) {\r\n this.privGrammerBuilder = recogBase.dynamicGrammar;\r\n }\r\n\r\n /**\r\n * Creates a PhraseListGrammar from a given speech recognizer. Will accept any recognizer that derives from @class Recognizer.\r\n * @param recognizer The recognizer to add phrase lists to.\r\n */\r\n public static fromRecognizer(recognizer: Recognizer | ConversationTranscriber | MeetingTranscriber): PhraseListGrammar {\r\n const recoBase = recognizer.internalData as ServiceRecognizerBase;\r\n return new PhraseListGrammar(recoBase);\r\n }\r\n\r\n /**\r\n * Adds a single phrase to the current recognizer.\r\n * @param phrase Phrase to add.\r\n */\r\n public addPhrase(phrase: string): void {\r\n this.privGrammerBuilder.addPhrase(phrase);\r\n }\r\n\r\n /**\r\n * Adds multiple phrases to the current recognizer.\r\n * @param phrases Array of phrases to add.\r\n */\r\n public addPhrases(phrases: string[]): void {\r\n this.privGrammerBuilder.addPhrase(phrases);\r\n }\r\n\r\n /**\r\n * Clears all phrases added to the current recognizer.\r\n */\r\n public clear(): void {\r\n this.privGrammerBuilder.clearPhrases();\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Profanity option.\r\n * Added in version 1.7.0.\r\n */\r\nexport enum ProfanityOption {\r\n Masked = 0,\r\n Removed = 1,\r\n Raw = 2\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ServiceRecognizerBase } from \"../common.speech/ServiceRecognizerBase.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n PronunciationAssessmentGradingSystem,\r\n PronunciationAssessmentGranularity,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer\r\n} from \"./Exports.js\";\r\n\r\ninterface PronunciationAssessmentJSON {\r\n referenceText: string;\r\n gradingSystem: string;\r\n granularity: string;\r\n phonemeAlphabet: string;\r\n nbestPhonemeCount: number;\r\n dimension: string;\r\n enableMiscue: boolean;\r\n enableProsodyAssessment: boolean;\r\n}\r\n\r\n/**\r\n * Pronunciation assessment configuration.\r\n * @class PronunciationAssessmentConfig\r\n * Added in version 1.15.0.\r\n */\r\nexport class PronunciationAssessmentConfig {\r\n private privProperties: PropertyCollection;\r\n private privPhonemeAlphabet: string;\r\n private privNBestPhonemeCount: number;\r\n private privEnableProsodyAssessment: boolean;\r\n private privContentAssessmentTopic: string;\r\n\r\n /**\r\n * PronunciationAssessmentConfig constructor.\r\n * @constructor\r\n * @param {string} referenceText\r\n * @param gradingSystem\r\n * @param granularity\r\n * @param enableMiscue\r\n */\r\n public constructor(referenceText: string,\r\n gradingSystem: PronunciationAssessmentGradingSystem = PronunciationAssessmentGradingSystem.FivePoint,\r\n granularity: PronunciationAssessmentGranularity = PronunciationAssessmentGranularity.Phoneme,\r\n enableMiscue: boolean = false) {\r\n Contracts.throwIfNullOrUndefined(referenceText, \"referenceText\");\r\n this.privProperties = new PropertyCollection();\r\n this.privProperties.setProperty(PropertyId.PronunciationAssessment_ReferenceText, referenceText);\r\n this.privProperties.setProperty(PropertyId.PronunciationAssessment_GradingSystem, PronunciationAssessmentGradingSystem[gradingSystem]);\r\n this.privProperties.setProperty(PropertyId.PronunciationAssessment_Granularity, PronunciationAssessmentGranularity[granularity]);\r\n this.privProperties.setProperty(PropertyId.PronunciationAssessment_EnableMiscue, String(enableMiscue));\r\n }\r\n\r\n /**\r\n * @member PronunciationAssessmentConfig.fromJSON\r\n * @function\r\n * @public\r\n * @param {string} json The json string containing the pronunciation assessment parameters.\r\n * @return {PronunciationAssessmentConfig} Instance of PronunciationAssessmentConfig\r\n * @summary Creates an instance of the PronunciationAssessmentConfig from json.\r\n * This method is designed to support the pronunciation assessment parameters still in preview.\r\n * Under normal circumstances, use the constructor instead.\r\n */\r\n public static fromJSON(json: string): PronunciationAssessmentConfig {\r\n Contracts.throwIfNullOrUndefined(json, \"json\");\r\n const config = new PronunciationAssessmentConfig(\"\");\r\n config.privProperties = new PropertyCollection();\r\n config.properties.setProperty(PropertyId.PronunciationAssessment_Json, json);\r\n return config;\r\n }\r\n\r\n public toJSON(): string {\r\n this.updateJson();\r\n return this.privProperties.getProperty(PropertyId.PronunciationAssessment_Params);\r\n }\r\n\r\n public applyTo(recognizer: Recognizer): void {\r\n this.updateJson();\r\n const recoBase = recognizer.internalData as ServiceRecognizerBase;\r\n recoBase.expectContentAssessmentResponse = !!this.privContentAssessmentTopic;\r\n recoBase.speechContext.setPronunciationAssessmentParams(\r\n this.properties.getProperty(PropertyId.PronunciationAssessment_Params),\r\n this.privContentAssessmentTopic,\r\n recoBase.isSpeakerDiarizationEnabled);\r\n }\r\n\r\n /**\r\n * Gets the reference text.\r\n * @member PronunciationAssessmentConfig.prototype.referenceText\r\n * @function\r\n * @public\r\n * @returns {string} Reference text.\r\n */\r\n public get referenceText(): string {\r\n return this.properties.getProperty(PropertyId.PronunciationAssessment_ReferenceText);\r\n }\r\n\r\n /**\r\n * Gets/Sets the reference text.\r\n * @member PronunciationAssessmentConfig.prototype.referenceText\r\n * @function\r\n * @public\r\n * @param {string} referenceText - Reference text.\r\n */\r\n public set referenceText(referenceText: string) {\r\n Contracts.throwIfNullOrWhitespace(referenceText, \"referenceText\");\r\n this.properties.setProperty(PropertyId.PronunciationAssessment_ReferenceText, referenceText);\r\n }\r\n\r\n /**\r\n * Sets the phoneme alphabet.\r\n * The valid values are \"SAPI\" (default) and \"IPA\".\r\n * Added in version 1.20.0\r\n * @member PronunciationAssessmentConfig.prototype.phonemeAlphabet\r\n * @function\r\n * @public\r\n * @param {string} phonemeAlphabet - Phoneme alphabet.\r\n */\r\n public set phonemeAlphabet(phonemeAlphabet: string) {\r\n Contracts.throwIfNullOrWhitespace(phonemeAlphabet, \"phonemeAlphabet\");\r\n this.privPhonemeAlphabet = phonemeAlphabet;\r\n }\r\n\r\n /**\r\n * Sets the boolean enableMiscue property.\r\n * Added in version 1.26.0\r\n * @member PronunciationAssessmentConfig.prototype.enableMiscue\r\n * @function\r\n * @public\r\n * @param {boolean} enableMiscue - enable miscue.\r\n */\r\n public set enableMiscue(enableMiscue: boolean) {\r\n const enableMiscueString = enableMiscue ? \"true\" : \"false\";\r\n this.properties.setProperty(PropertyId.PronunciationAssessment_EnableMiscue, enableMiscueString);\r\n }\r\n\r\n /**\r\n * Gets the boolean enableMiscue property.\r\n * Added in version 1.26.0\r\n * @member PronunciationAssessmentConfig.prototype.enableMiscue\r\n * @function\r\n * @public\r\n * @return {boolean} enableMiscue - enable miscue.\r\n */\r\n public get enableMiscue(): boolean {\r\n const enableMiscueString = this.properties.getProperty(PropertyId.PronunciationAssessment_EnableMiscue, \"false\");\r\n return (enableMiscueString.toLowerCase() === \"true\");\r\n }\r\n\r\n /**\r\n * Sets the nbest phoneme count\r\n * Added in version 1.20.0\r\n * @member PronunciationAssessmentConfig.prototype.nbestPhonemeCount\r\n * @function\r\n * @public\r\n * @param {number} nbestPhonemeCount - NBest phoneme count.\r\n */\r\n public set nbestPhonemeCount(nbestPhonemeCount: number) {\r\n this.privNBestPhonemeCount = nbestPhonemeCount;\r\n }\r\n\r\n /**\r\n * Enables the prosody assessment.\r\n * Added in version 1.34.0\r\n * @member PronunciationAssessmentConfig.prototype.enableProsodyAssessment\r\n * @function\r\n * @public\r\n * @param {boolean} enableProsodyAssessment - enable prosody assessment.\r\n */\r\n public set enableProsodyAssessment(enableProsodyAssessment: boolean) {\r\n this.privEnableProsodyAssessment = enableProsodyAssessment;\r\n }\r\n\r\n /**\r\n * Enables content assessment and sets the topic.\r\n * Added in version 1.34.0\r\n * @member PronunciationAssessmentConfig.prototype.enableContentAssessmentWithTopic\r\n * @function\r\n * @public\r\n * @param {string} topic - Topic for content assessment.\r\n */\r\n public enableContentAssessmentWithTopic(topic: string): void {\r\n this.privContentAssessmentTopic = topic;\r\n }\r\n\r\n /**\r\n * @member PronunciationAssessmentConfig.prototype.properties\r\n * @function\r\n * @public\r\n * @return {PropertyCollection} Properties of the config.\r\n * @summary Gets a pronunciation assessment config properties\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n private updateJson(): void {\r\n const jsonString = this.privProperties.getProperty(PropertyId.PronunciationAssessment_Json, \"{}\");\r\n const paramsJson: PronunciationAssessmentJSON = JSON.parse(jsonString) as PronunciationAssessmentJSON;\r\n\r\n const referenceText = this.privProperties.getProperty(PropertyId.PronunciationAssessment_ReferenceText);\r\n if (referenceText) {\r\n paramsJson.referenceText = referenceText;\r\n }\r\n\r\n const gradingSystem = this.privProperties.getProperty(PropertyId.PronunciationAssessment_GradingSystem);\r\n if (gradingSystem) {\r\n paramsJson.gradingSystem = gradingSystem;\r\n }\r\n\r\n const granularity = this.privProperties.getProperty(PropertyId.PronunciationAssessment_Granularity);\r\n if (granularity) {\r\n paramsJson.granularity = granularity;\r\n }\r\n\r\n if (this.privPhonemeAlphabet) {\r\n paramsJson.phonemeAlphabet = this.privPhonemeAlphabet;\r\n }\r\n\r\n if (this.privNBestPhonemeCount) {\r\n paramsJson.nbestPhonemeCount = this.privNBestPhonemeCount;\r\n }\r\n\r\n paramsJson.enableProsodyAssessment = this.privEnableProsodyAssessment;\r\n\r\n // always set dimension to Comprehensive\r\n paramsJson.dimension = \"Comprehensive\";\r\n\r\n const enableMiscueString = this.privProperties.getProperty(PropertyId.PronunciationAssessment_EnableMiscue);\r\n if (enableMiscueString) {\r\n paramsJson.enableMiscue = this.enableMiscue;\r\n }\r\n\r\n this.privProperties.setProperty(PropertyId.PronunciationAssessment_Params, JSON.stringify(paramsJson));\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the point system for pronunciation score calibration; default value is FivePoint.\r\n * Added in version 1.15.0\r\n * @class PronunciationAssessmentGradingSystem\r\n */\r\nexport enum PronunciationAssessmentGradingSystem {\r\n /**\r\n * Five point calibration\r\n * @member PronunciationAssessmentGradingSystem.FivePoint\r\n */\r\n FivePoint = 1,\r\n\r\n /**\r\n * Hundred mark\r\n * @member PronunciationAssessmentGradingSystem.HundredMark\r\n */\r\n HundredMark,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the pronunciation evaluation granularity; default value is Phoneme.\r\n * Added in version 1.15.0\r\n * @class PronunciationAssessmentGranularity\r\n */\r\nexport enum PronunciationAssessmentGranularity {\r\n /**\r\n * Shows the score on the full text, word and phoneme level\r\n * @member PronunciationAssessmentGranularity.Phoneme\r\n */\r\n Phoneme = 1,\r\n\r\n /**\r\n * Shows the score on the full text and word level\r\n * @member PronunciationAssessmentGranularity.Word\r\n */\r\n Word,\r\n\r\n /**\r\n * Shows the score on the full text level only\r\n * @member PronunciationAssessmentGranularity.FullText\r\n */\r\n FullText,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {Contracts} from \"./Contracts.js\";\r\nimport {\r\n PropertyId,\r\n RecognitionResult\r\n} from \"./Exports.js\";\r\n\r\ninterface AssessmentResult {\r\n NBest: DetailResult[];\r\n}\r\n\r\ninterface DetailResult {\r\n Words: WordResult[];\r\n PronunciationAssessment: {\r\n AccuracyScore: number;\r\n CompletenessScore: number;\r\n FluencyScore: number;\r\n PronScore: number;\r\n ProsodyScore: number;\r\n };\r\n ContentAssessment: {\r\n GrammarScore: number;\r\n VocabularyScore: number;\r\n TopicScore: number;\r\n };\r\n}\r\n\r\ninterface WordResult {\r\n Word: string;\r\n Phonemes: {\r\n Phoneme?: string;\r\n PronunciationAssessment?: {\r\n NBestPhonemes: { Phoneme: string }[];\r\n };\r\n }[];\r\n PronunciationAssessment?: {\r\n AccuracyScore: number;\r\n ErrorType: string;\r\n };\r\n Syllables: { Syllable: string }[];\r\n}\r\n\r\nexport class ContentAssessmentResult {\r\n private privPronJson: DetailResult;\r\n\r\n /**\r\n * @Internal\r\n * Do not use externally.\r\n */\r\n public constructor(detailResult: DetailResult) {\r\n this.privPronJson = detailResult;\r\n }\r\n\r\n /**\r\n * Correctness in using grammar and variety of sentence patterns.\r\n * Grammatical errors are jointly evaluated by lexical accuracy,\r\n * grammatical accuracy and diversity of sentence structures.\r\n * @member ContentAssessmentResult.prototype.grammarScore\r\n * @function\r\n * @public\r\n * @returns {number} Grammar score.\r\n */\r\n public get grammarScore(): number {\r\n return this.privPronJson.ContentAssessment.GrammarScore;\r\n }\r\n\r\n /**\r\n * Proficiency in lexical usage. It evaluates the speaker's effective usage\r\n * of words and their appropriateness within the given context to express\r\n * ideas accurately, as well as level of lexical complexity.\r\n * @member ContentAssessmentResult.prototype.vocabularyScore\r\n * @function\r\n * @public\r\n * @returns {number} Vocabulary score.\r\n */\r\n public get vocabularyScore(): number {\r\n return this.privPronJson.ContentAssessment.VocabularyScore;\r\n }\r\n\r\n /**\r\n * Level of understanding and engagement with the topic, which provides\r\n * insights into the speaker’s ability to express their thoughts and ideas\r\n * effectively and the ability to engage with the topic.\r\n * @member ContentAssessmentResult.prototype.topicScore\r\n * @function\r\n * @public\r\n * @returns {number} Topic score.\r\n */\r\n public get topicScore(): number {\r\n return this.privPronJson.ContentAssessment.TopicScore;\r\n }\r\n}\r\n\r\n/**\r\n * Pronunciation assessment results.\r\n * @class PronunciationAssessmentResult\r\n * Added in version 1.15.0.\r\n */\r\nexport class PronunciationAssessmentResult {\r\n private privPronJson: DetailResult;\r\n\r\n private constructor(jsonString: string) {\r\n const j = JSON.parse(jsonString) as AssessmentResult;\r\n Contracts.throwIfNullOrUndefined(j.NBest[0], \"NBest\");\r\n this.privPronJson = j.NBest[0];\r\n }\r\n\r\n /**\r\n * @member PronunciationAssessmentResult.fromResult\r\n * @function\r\n * @public\r\n * @param {RecognitionResult} result The recognition result.\r\n * @return {PronunciationAssessmentConfig} Instance of PronunciationAssessmentConfig\r\n * @summary Creates an instance of the PronunciationAssessmentResult from recognition result.\r\n */\r\n public static fromResult(result: RecognitionResult): PronunciationAssessmentResult {\r\n Contracts.throwIfNullOrUndefined(result, \"result\");\r\n const json: string = result.properties.getProperty(PropertyId.SpeechServiceResponse_JsonResult);\r\n Contracts.throwIfNullOrUndefined(json, \"json\");\r\n return new PronunciationAssessmentResult(json);\r\n }\r\n\r\n /**\r\n * Gets the detail result of pronunciation assessment.\r\n * @member PronunciationAssessmentConfig.prototype.detailResult\r\n * @function\r\n * @public\r\n * @returns {DetailResult} detail result.\r\n */\r\n public get detailResult(): DetailResult {\r\n return this.privPronJson;\r\n }\r\n\r\n /**\r\n * The score indicating the pronunciation accuracy of the given speech, which indicates\r\n * how closely the phonemes match a native speaker's pronunciation.\r\n * @member PronunciationAssessmentResult.prototype.accuracyScore\r\n * @function\r\n * @public\r\n * @returns {number} Accuracy score.\r\n */\r\n public get accuracyScore(): number {\r\n return this.detailResult.PronunciationAssessment?.AccuracyScore;\r\n }\r\n\r\n /**\r\n * The overall score indicating the pronunciation quality of the given speech.\r\n * This is calculated from AccuracyScore, FluencyScore and CompletenessScore with weight.\r\n * @member PronunciationAssessmentResult.prototype.pronunciationScore\r\n * @function\r\n * @public\r\n * @returns {number} Pronunciation score.\r\n */\r\n public get pronunciationScore(): number {\r\n return this.detailResult.PronunciationAssessment?.PronScore;\r\n }\r\n\r\n /**\r\n * The score indicating the completeness of the given speech by calculating the ratio of pronounced words towards entire input.\r\n * @member PronunciationAssessmentResult.prototype.completenessScore\r\n * @function\r\n * @public\r\n * @returns {number} Completeness score.\r\n */\r\n public get completenessScore(): number {\r\n return this.detailResult.PronunciationAssessment?.CompletenessScore;\r\n }\r\n\r\n /**\r\n * The score indicating the fluency of the given speech.\r\n * @member PronunciationAssessmentResult.prototype.fluencyScore\r\n * @function\r\n * @public\r\n * @returns {number} Fluency score.\r\n */\r\n public get fluencyScore(): number {\r\n return this.detailResult.PronunciationAssessment?.FluencyScore;\r\n }\r\n\r\n /**\r\n * The prosody score, which indicates how nature of the given speech, including stress, intonation, speaking speed and rhythm.\r\n * @member PronunciationAssessmentResult.prototype.prosodyScore\r\n * @function\r\n * @public\r\n * @returns {number} Prosody score.\r\n */\r\n public get prosodyScore(): number {\r\n return this.detailResult.PronunciationAssessment?.ProsodyScore;\r\n }\r\n\r\n /**\r\n * The concent assessment result.\r\n * Only available when content assessment is enabled.\r\n * @member PronunciationAssessmentResult.prototype.contentAssessmentResult\r\n * @function\r\n * @public\r\n * @returns {ContentAssessmentResult} Content assessment result.\r\n */\r\n public get contentAssessmentResult(): ContentAssessmentResult {\r\n if (this.detailResult.ContentAssessment === undefined) {\r\n return undefined;\r\n }\r\n return new ContentAssessmentResult(this.detailResult);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyId } from \"./Exports.js\";\r\n\r\n/**\r\n * Represents collection of properties and their values.\r\n * @class PropertyCollection\r\n */\r\nexport class PropertyCollection {\r\n private privKeys: string[] = [] as string[];\r\n private privValues: string[] = [] as string[];\r\n\r\n /**\r\n * Returns the property value in type String.\r\n * Currently only String, int and bool are allowed.\r\n * If the name is not available, the specified defaultValue is returned.\r\n * @member PropertyCollection.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {string} key - The parameter name.\r\n * @param {string | number | boolean} def - The default value which is returned if the parameter\r\n * is not available in the collection.\r\n * @returns {string} value of the parameter.\r\n */\r\n public getProperty(key: PropertyId | string, def?: string | number | boolean): string {\r\n let keyToUse: string;\r\n\r\n if (typeof key === \"string\") {\r\n keyToUse = key;\r\n } else {\r\n keyToUse = PropertyId[key];\r\n }\r\n\r\n for (let n = 0; n < this.privKeys.length; n++) {\r\n if (this.privKeys[n] === keyToUse) {\r\n return this.privValues[n];\r\n }\r\n }\r\n\r\n if (def === undefined) {\r\n return undefined;\r\n }\r\n\r\n return String(def);\r\n }\r\n\r\n /**\r\n * Sets the String value of the parameter specified by name.\r\n * @member PropertyCollection.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string} key - The parameter name.\r\n * @param {string} value - The value of the parameter.\r\n */\r\n public setProperty(key: string | PropertyId, value: string): void {\r\n let keyToUse: string;\r\n\r\n if (typeof key === \"string\") {\r\n keyToUse = key;\r\n } else {\r\n keyToUse = PropertyId[key];\r\n }\r\n\r\n for (let n = 0; n < this.privKeys.length; n++) {\r\n if (this.privKeys[n] === keyToUse) {\r\n this.privValues[n] = value;\r\n return;\r\n }\r\n }\r\n\r\n this.privKeys.push(keyToUse);\r\n this.privValues.push(value);\r\n }\r\n\r\n /**\r\n * Clones the collection.\r\n * @member PropertyCollection.prototype.clone\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} A copy of the collection.\r\n */\r\n public clone(): PropertyCollection {\r\n const clonedMap = new PropertyCollection();\r\n\r\n for (let n = 0; n < this.privKeys.length; n++) {\r\n clonedMap.privKeys.push(this.privKeys[n]);\r\n clonedMap.privValues.push(this.privValues[n]);\r\n }\r\n\r\n return clonedMap;\r\n }\r\n\r\n /**\r\n * Merges this set of properties into another, no overwrites.\r\n * @member PropertyCollection.prototype.mergeTo\r\n * @function\r\n * @public\r\n * @param {PropertyCollection} destinationCollection - The collection to merge into.\r\n */\r\n public mergeTo(destinationCollection: PropertyCollection): void {\r\n this.privKeys.forEach((key: string | PropertyId): void => {\r\n if (destinationCollection.getProperty(key, undefined) === undefined) {\r\n const value = this.getProperty(key);\r\n destinationCollection.setProperty(key, value);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Get the keys in Property Collection.\r\n * @member PropertyCollection.prototype.keys\r\n * @function\r\n * @public\r\n * @returns {string []} Keys in the collection.\r\n */\r\n public get keys(): string[] {\r\n return this.privKeys;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines speech property ids.\r\n * @class PropertyId\r\n */\r\nexport enum PropertyId {\r\n\r\n /**\r\n * The Cognitive Services Speech Service subscription Key. If you are using an intent recognizer, you need to\r\n * specify the LUIS endpoint key for your particular LUIS app. Under normal circumstances, you shouldn't\r\n * have to use this property directly.\r\n * Instead, use [[SpeechConfig.fromSubscription]].\r\n * @member PropertyId.SpeechServiceConnection_Key\r\n */\r\n SpeechServiceConnection_Key = 0,\r\n\r\n /**\r\n * The Cognitive Services Speech Service endpoint (url). Under normal circumstances, you shouldn't\r\n * have to use this property directly.\r\n * Instead, use [[SpeechConfig.fromEndpoint]].\r\n * NOTE: This endpoint is not the same as the endpoint used to obtain an access token.\r\n * @member PropertyId.SpeechServiceConnection_Endpoint\r\n */\r\n SpeechServiceConnection_Endpoint,\r\n\r\n /**\r\n * The Cognitive Services Speech Service region. Under normal circumstances, you shouldn't have to\r\n * use this property directly.\r\n * Instead, use [[SpeechConfig.fromSubscription]], [[SpeechConfig.fromEndpoint]], [[SpeechConfig.fromAuthorizationToken]].\r\n * @member PropertyId.SpeechServiceConnection_Region\r\n */\r\n SpeechServiceConnection_Region,\r\n\r\n /**\r\n * The Cognitive Services Speech Service authorization token (aka access token). Under normal circumstances,\r\n * you shouldn't have to use this property directly.\r\n * Instead, use [[SpeechConfig.fromAuthorizationToken]], [[SpeechRecognizer.authorizationToken]],\r\n * [[IntentRecognizer.authorizationToken]], [[TranslationRecognizer.authorizationToken]], [[SpeakerRecognizer.authorizationToken]].\r\n * @member PropertyId.SpeechServiceAuthorization_Token\r\n */\r\n SpeechServiceAuthorization_Token,\r\n\r\n /**\r\n * The Cognitive Services Speech Service authorization type. Currently unused.\r\n * @member PropertyId.SpeechServiceAuthorization_Type\r\n */\r\n SpeechServiceAuthorization_Type,\r\n\r\n /**\r\n * The Cognitive Services Speech Service endpoint id. Under normal circumstances, you shouldn't\r\n * have to use this property directly.\r\n * Instead, use [[SpeechConfig.endpointId]].\r\n * NOTE: The endpoint id is available in the Speech Portal, listed under Endpoint Details.\r\n * @member PropertyId.SpeechServiceConnection_EndpointId\r\n */\r\n SpeechServiceConnection_EndpointId,\r\n\r\n /**\r\n * The list of comma separated languages (BCP-47 format) used as target translation languages. Under normal circumstances,\r\n * you shouldn't have to use this property directly.\r\n * Instead use [[SpeechTranslationConfig.addTargetLanguage]],\r\n * [[SpeechTranslationConfig.targetLanguages]], [[TranslationRecognizer.targetLanguages]].\r\n * @member PropertyId.SpeechServiceConnection_TranslationToLanguages\r\n */\r\n SpeechServiceConnection_TranslationToLanguages,\r\n\r\n /**\r\n * The name of the Cognitive Service Text to Speech Service Voice. Under normal circumstances, you shouldn't have to use this\r\n * property directly.\r\n * Instead, use [[SpeechTranslationConfig.voiceName]].\r\n * NOTE: Valid voice names can be found here.\r\n * @member PropertyId.SpeechServiceConnection_TranslationVoice\r\n */\r\n SpeechServiceConnection_TranslationVoice,\r\n\r\n /**\r\n * Translation features.\r\n * @member PropertyId.SpeechServiceConnection_TranslationFeatures\r\n */\r\n SpeechServiceConnection_TranslationFeatures,\r\n\r\n /**\r\n * The Language Understanding Service Region. Under normal circumstances, you shouldn't have to use this property directly.\r\n * Instead, use [[LanguageUnderstandingModel]].\r\n * @member PropertyId.SpeechServiceConnection_IntentRegion\r\n */\r\n SpeechServiceConnection_IntentRegion,\r\n\r\n /**\r\n * The host name of the proxy server used to connect to the Cognitive Services Speech Service. Only relevant in Node.js environments.\r\n * You shouldn't have to use this property directly.\r\n * Instead use .\r\n * Added in version 1.4.0.\r\n */\r\n SpeechServiceConnection_ProxyHostName,\r\n\r\n /**\r\n * The port of the proxy server used to connect to the Cognitive Services Speech Service. Only relevant in Node.js environments.\r\n * You shouldn't have to use this property directly.\r\n * Instead use .\r\n * Added in version 1.4.0.\r\n */\r\n SpeechServiceConnection_ProxyPort,\r\n\r\n /**\r\n * The user name of the proxy server used to connect to the Cognitive Services Speech Service. Only relevant in Node.js environments.\r\n * You shouldn't have to use this property directly.\r\n * Instead use .\r\n * Added in version 1.4.0.\r\n */\r\n SpeechServiceConnection_ProxyUserName,\r\n\r\n /**\r\n * The password of the proxy server used to connect to the Cognitive Services Speech Service. Only relevant in Node.js environments.\r\n * You shouldn't have to use this property directly.\r\n * Instead use .\r\n * Added in version 1.4.0.\r\n */\r\n SpeechServiceConnection_ProxyPassword,\r\n\r\n /**\r\n * The Cognitive Services Speech Service recognition Mode. Can be \"INTERACTIVE\", \"CONVERSATION\", \"DICTATION\".\r\n * This property is intended to be read-only. The SDK is using it internally.\r\n * @member PropertyId.SpeechServiceConnection_RecoMode\r\n */\r\n SpeechServiceConnection_RecoMode,\r\n\r\n /**\r\n * The spoken language to be recognized (in BCP-47 format). Under normal circumstances, you shouldn't have to use this property\r\n * directly.\r\n * Instead, use [[SpeechConfig.speechRecognitionLanguage]].\r\n * @member PropertyId.SpeechServiceConnection_RecoLanguage\r\n */\r\n SpeechServiceConnection_RecoLanguage,\r\n\r\n /**\r\n * The session id. This id is a universally unique identifier (aka UUID) representing a specific binding of an audio input stream\r\n * and the underlying speech recognition instance to which it is bound. Under normal circumstances, you shouldn't have to use this\r\n * property directly.\r\n * Instead use [[SessionEventArgs.sessionId]].\r\n * @member PropertyId.Speech_SessionId\r\n */\r\n Speech_SessionId,\r\n\r\n /**\r\n * The spoken language to be synthesized (e.g. en-US)\r\n * @member PropertyId.SpeechServiceConnection_SynthLanguage\r\n */\r\n SpeechServiceConnection_SynthLanguage,\r\n\r\n /**\r\n * The name of the TTS voice to be used for speech synthesis\r\n * @member PropertyId.SpeechServiceConnection_SynthVoice\r\n */\r\n SpeechServiceConnection_SynthVoice,\r\n\r\n /**\r\n * The string to specify TTS output audio format\r\n * @member PropertyId.SpeechServiceConnection_SynthOutputFormat\r\n */\r\n SpeechServiceConnection_SynthOutputFormat,\r\n\r\n /**\r\n * The list of comma separated languages used as possible source languages\r\n * Added in version 1.13.0\r\n * @member PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages\r\n */\r\n SpeechServiceConnection_AutoDetectSourceLanguages,\r\n\r\n /**\r\n * The requested Cognitive Services Speech Service response output format (simple or detailed). Under normal circumstances, you shouldn't have\r\n * to use this property directly.\r\n * Instead use [[SpeechConfig.outputFormat]].\r\n * @member PropertyId.SpeechServiceResponse_RequestDetailedResultTrueFalse\r\n */\r\n SpeechServiceResponse_RequestDetailedResultTrueFalse,\r\n\r\n /**\r\n * The requested Cognitive Services Speech Service response output profanity level. Currently unused.\r\n * @member PropertyId.SpeechServiceResponse_RequestProfanityFilterTrueFalse\r\n */\r\n SpeechServiceResponse_RequestProfanityFilterTrueFalse,\r\n\r\n /**\r\n * The Cognitive Services Speech Service response output (in JSON format). This property is available on recognition result objects only.\r\n * @member PropertyId.SpeechServiceResponse_JsonResult\r\n */\r\n SpeechServiceResponse_JsonResult,\r\n\r\n /**\r\n * The Cognitive Services Speech Service error details (in JSON format). Under normal circumstances, you shouldn't have to\r\n * use this property directly. Instead use [[CancellationDetails.errorDetails]].\r\n * @member PropertyId.SpeechServiceResponse_JsonErrorDetails\r\n */\r\n SpeechServiceResponse_JsonErrorDetails,\r\n\r\n /**\r\n * The cancellation reason. Currently unused.\r\n * @member PropertyId.CancellationDetails_Reason\r\n */\r\n CancellationDetails_Reason,\r\n\r\n /**\r\n * The cancellation text. Currently unused.\r\n * @member PropertyId.CancellationDetails_ReasonText\r\n */\r\n CancellationDetails_ReasonText,\r\n\r\n /**\r\n * The Cancellation detailed text. Currently unused.\r\n * @member PropertyId.CancellationDetails_ReasonDetailedText\r\n */\r\n CancellationDetails_ReasonDetailedText,\r\n\r\n /**\r\n * The Language Understanding Service response output (in JSON format). Available via [[IntentRecognitionResult]]\r\n * @member PropertyId.LanguageUnderstandingServiceResponse_JsonResult\r\n */\r\n LanguageUnderstandingServiceResponse_JsonResult,\r\n\r\n /**\r\n * The URL string built from speech configuration.\r\n * This property is intended to be read-only. The SDK is using it internally.\r\n * NOTE: Added in version 1.7.0.\r\n */\r\n SpeechServiceConnection_Url,\r\n\r\n /**\r\n * The initial silence timeout value (in milliseconds) used by the service.\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceConnection_InitialSilenceTimeoutMs,\r\n\r\n /**\r\n * The end silence timeout value (in milliseconds) used by the service.\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceConnection_EndSilenceTimeoutMs,\r\n\r\n /**\r\n * A duration of detected silence, measured in milliseconds, after which speech-to-text will determine a spoken\r\n * phrase has ended and generate a final Recognized result. Configuring this timeout may be helpful in situations\r\n * where spoken input is significantly faster or slower than usual and default segmentation behavior consistently\r\n * yields results that are too long or too short. Segmentation timeout values that are inappropriately high or low\r\n * can negatively affect speech-to-text accuracy; this property should be carefully configured and the resulting\r\n * behavior should be thoroughly validated as intended.\r\n *\r\n * For more information about timeout configuration that includes discussion of default behaviors, please visit\r\n * https://aka.ms/csspeech/timeouts.\r\n *\r\n * Added in version 1.21.0.\r\n */\r\n Speech_SegmentationSilenceTimeoutMs,\r\n\r\n /**\r\n * A boolean value specifying whether audio logging is enabled in the service or not.\r\n * Audio and content logs are stored either in Microsoft-owned storage, or in your own storage account linked\r\n * to your Cognitive Services subscription (Bring Your Own Storage (BYOS) enabled Speech resource).\r\n * The logs will be removed after 30 days.\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceConnection_EnableAudioLogging,\r\n\r\n /**\r\n * The speech service connection language identifier mode.\r\n * Can be \"AtStart\" (the default), or \"Continuous\". See Language\r\n * Identification document https://aka.ms/speech/lid?pivots=programming-language-javascript\r\n * for more details.\r\n * Added in 1.25.0\r\n **/\r\n SpeechServiceConnection_LanguageIdMode,\r\n\r\n /**\r\n * A string value representing the desired endpoint version to target for Speech Recognition.\r\n * Added in version 1.21.0\r\n */\r\n SpeechServiceConnection_RecognitionEndpointVersion,\r\n\r\n /**\r\n /**\r\n * A string value the current speaker recognition scenario/mode (TextIndependentIdentification, etc.).\r\n * Added in version 1.23.0\r\n */\r\n SpeechServiceConnection_SpeakerIdMode,\r\n\r\n /**\r\n * The requested Cognitive Services Speech Service response output profanity setting.\r\n * Allowed values are \"masked\", \"removed\", and \"raw\".\r\n * Added in version 1.7.0.\r\n */\r\n SpeechServiceResponse_ProfanityOption,\r\n\r\n /**\r\n * A string value specifying which post processing option should be used by service.\r\n * Allowed values are \"TrueText\".\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceResponse_PostProcessingOption,\r\n\r\n /**\r\n * A boolean value specifying whether to include word-level timestamps in the response result.\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceResponse_RequestWordLevelTimestamps,\r\n\r\n /**\r\n * The number of times a word has to be in partial results to be returned.\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceResponse_StablePartialResultThreshold,\r\n\r\n /**\r\n * A string value specifying the output format option in the response result. Internal use only.\r\n * Added in version 1.7.0.\r\n */\r\n SpeechServiceResponse_OutputFormatOption,\r\n\r\n /**\r\n * A boolean value to request for stabilizing translation partial results by omitting words in the end.\r\n * Added in version 1.7.0.\r\n */\r\n SpeechServiceResponse_TranslationRequestStablePartialResult,\r\n\r\n /**\r\n * A boolean value specifying whether to request WordBoundary events.\r\n * @member PropertyId.SpeechServiceResponse_RequestWordBoundary\r\n * Added in version 1.21.0.\r\n */\r\n SpeechServiceResponse_RequestWordBoundary,\r\n\r\n /**\r\n * A boolean value specifying whether to request punctuation boundary in WordBoundary Events. Default is true.\r\n * @member PropertyId.SpeechServiceResponse_RequestPunctuationBoundary\r\n * Added in version 1.21.0.\r\n */\r\n SpeechServiceResponse_RequestPunctuationBoundary,\r\n\r\n /**\r\n * A boolean value specifying whether to request sentence boundary in WordBoundary Events. Default is false.\r\n * @member PropertyId.SpeechServiceResponse_RequestSentenceBoundary\r\n * Added in version 1.21.0.\r\n */\r\n SpeechServiceResponse_RequestSentenceBoundary,\r\n\r\n /**\r\n * Identifier used to connect to the backend service.\r\n * @member PropertyId.Conversation_ApplicationId\r\n */\r\n Conversation_ApplicationId,\r\n\r\n /**\r\n * Type of dialog backend to connect to.\r\n * @member PropertyId.Conversation_DialogType\r\n */\r\n Conversation_DialogType,\r\n\r\n /**\r\n * Silence timeout for listening\r\n * @member PropertyId.Conversation_Initial_Silence_Timeout\r\n */\r\n Conversation_Initial_Silence_Timeout,\r\n\r\n /**\r\n * From Id to add to speech recognition activities.\r\n * @member PropertyId.Conversation_From_Id\r\n */\r\n Conversation_From_Id,\r\n\r\n /**\r\n * ConversationId for the session.\r\n * @member PropertyId.Conversation_Conversation_Id\r\n */\r\n Conversation_Conversation_Id,\r\n\r\n /**\r\n * Comma separated list of custom voice deployment ids.\r\n * @member PropertyId.Conversation_Custom_Voice_Deployment_Ids\r\n */\r\n Conversation_Custom_Voice_Deployment_Ids,\r\n\r\n /**\r\n * Speech activity template, stamp properties from the template on the activity generated by the service for speech.\r\n * @member PropertyId.Conversation_Speech_Activity_Template\r\n * Added in version 1.10.0.\r\n */\r\n Conversation_Speech_Activity_Template,\r\n\r\n /**\r\n * Enables or disables the receipt of turn status messages as obtained on the turnStatusReceived event.\r\n * @member PropertyId.Conversation_Request_Bot_Status_Messages\r\n * Added in version 1.15.0.\r\n */\r\n Conversation_Request_Bot_Status_Messages,\r\n\r\n /**\r\n * Specifies the connection ID to be provided in the Agent configuration message, e.g. a Direct Line token for\r\n * channel authentication.\r\n * Added in version 1.15.1.\r\n */\r\n Conversation_Agent_Connection_Id,\r\n\r\n /**\r\n * The Cognitive Services Speech Service host (url). Under normal circumstances, you shouldn't have to use this property directly.\r\n * Instead, use [[SpeechConfig.fromHost]].\r\n */\r\n SpeechServiceConnection_Host,\r\n\r\n /**\r\n * Set the host for service calls to the Conversation Translator REST management and websocket calls.\r\n */\r\n ConversationTranslator_Host,\r\n\r\n /**\r\n * Optionally set the the host's display name.\r\n * Used when joining a conversation.\r\n */\r\n ConversationTranslator_Name,\r\n\r\n /**\r\n * Optionally set a value for the X-CorrelationId request header.\r\n * Used for troubleshooting errors in the server logs. It should be a valid guid.\r\n */\r\n ConversationTranslator_CorrelationId,\r\n\r\n /**\r\n * Set the conversation token to be sent to the speech service. This enables the\r\n * service to service call from the speech service to the Conversation Translator service for relaying\r\n * recognitions. For internal use.\r\n */\r\n ConversationTranslator_Token,\r\n\r\n /**\r\n * The reference text of the audio for pronunciation evaluation.\r\n * For this and the following pronunciation assessment parameters, see\r\n * https://docs.microsoft.com/azure/cognitive-services/speech-service/rest-speech-to-text#pronunciation-assessment-parameters for details.\r\n * Under normal circumstances, you shouldn't have to use this property directly.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_ReferenceText,\r\n\r\n /**\r\n * The point system for pronunciation score calibration (FivePoint or HundredMark).\r\n * Under normal circumstances, you shouldn't have to use this property directly.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_GradingSystem,\r\n\r\n /**\r\n * The pronunciation evaluation granularity (Phoneme, Word, or FullText).\r\n * Under normal circumstances, you shouldn't have to use this property directly.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_Granularity,\r\n\r\n /**\r\n * Defines if enable miscue calculation.\r\n * With this enabled, the pronounced words will be compared to the reference text,\r\n * and will be marked with omission/insertion based on the comparison. The default setting is False.\r\n * Under normal circumstances, you shouldn't have to use this property directly.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_EnableMiscue,\r\n\r\n /**\r\n * The json string of pronunciation assessment parameters\r\n * Under normal circumstances, you shouldn't have to use this property directly.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_Json,\r\n\r\n /**\r\n * Pronunciation assessment parameters.\r\n * This property is intended to be read-only. The SDK is using it internally.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_Params,\r\n\r\n /**\r\n * Version of Speaker Recognition API to use.\r\n * Added in version 1.18.0\r\n */\r\n SpeakerRecognition_Api_Version,\r\n\r\n /**\r\n * Specifies whether to allow load of data URL for web worker\r\n * Allowed values are \"off\" and \"on\". Default is \"on\".\r\n * Added in version 1.32.0\r\n */\r\n WebWorkerLoadType,\r\n\r\n /**\r\n * Talking avatar service WebRTC session description protocol.\r\n * This property is intended to be read-only. The SDK is using it internally.\r\n * Added in version 1.33.0\r\n */\r\n TalkingAvatarService_WebRTC_SDP,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SessionEventArgs } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines payload for session events like Speech Start/End Detected\r\n * @class\r\n */\r\nexport class RecognitionEventArgs extends SessionEventArgs {\r\n private privOffset: number;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {number} offset - The offset.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(offset: number, sessionId?: string) {\r\n super(sessionId);\r\n\r\n this.privOffset = offset;\r\n }\r\n\r\n /**\r\n * Represents the message offset\r\n * @member RecognitionEventArgs.prototype.offset\r\n * @function\r\n * @public\r\n */\r\n public get offset(): number {\r\n return this.privOffset;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, ResultReason } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines result of speech recognition.\r\n * @class RecognitionResult\r\n */\r\nexport class RecognitionResult {\r\n private privResultId: string;\r\n private privReason: ResultReason;\r\n private privText: string;\r\n private privDuration: number;\r\n private privOffset: number;\r\n private privLanguage: string;\r\n private privLanguageDetectionConfidence: string;\r\n private privErrorDetails: string;\r\n private privJson: string;\r\n private privProperties: PropertyCollection;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {string} text - The recognized text.\r\n * @param {number} duration - The duration.\r\n * @param {number} offset - The offset into the stream.\r\n * @param {string} language - Primary Language detected, if provided.\r\n * @param {string} languageDetectionConfidence - Primary Language confidence (\"Unknown,\" \"Low,\" \"Medium,\" \"High\"...), if provided.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {string} json - Additional Json, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n */\r\n public constructor(resultId?: string, reason?: ResultReason, text?: string, duration?: number,\r\n offset?: number, language?: string, languageDetectionConfidence?: string, errorDetails?: string, json?: string, properties?: PropertyCollection) {\r\n this.privResultId = resultId;\r\n this.privReason = reason;\r\n this.privText = text;\r\n this.privDuration = duration;\r\n this.privOffset = offset;\r\n this.privLanguage = language;\r\n this.privLanguageDetectionConfidence = languageDetectionConfidence;\r\n this.privErrorDetails = errorDetails;\r\n this.privJson = json;\r\n this.privProperties = properties;\r\n }\r\n\r\n /**\r\n * Specifies the result identifier.\r\n * @member RecognitionResult.prototype.resultId\r\n * @function\r\n * @public\r\n * @returns {string} Specifies the result identifier.\r\n */\r\n public get resultId(): string {\r\n return this.privResultId;\r\n }\r\n\r\n /**\r\n * Specifies status of the result.\r\n * @member RecognitionResult.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {ResultReason} Specifies status of the result.\r\n */\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n\r\n /**\r\n * Presents the recognized text in the result.\r\n * @member RecognitionResult.prototype.text\r\n * @function\r\n * @public\r\n * @returns {string} Presents the recognized text in the result.\r\n */\r\n public get text(): string {\r\n return this.privText;\r\n }\r\n\r\n /**\r\n * Duration of recognized speech in 100 nano second increments.\r\n * @member RecognitionResult.prototype.duration\r\n * @function\r\n * @public\r\n * @returns {number} Duration of recognized speech in 100 nano second increments.\r\n */\r\n public get duration(): number {\r\n return this.privDuration;\r\n }\r\n\r\n /**\r\n * Offset of recognized speech in 100 nano second increments.\r\n * @member RecognitionResult.prototype.offset\r\n * @function\r\n * @public\r\n * @returns {number} Offset of recognized speech in 100 nano second increments.\r\n */\r\n public get offset(): number {\r\n return this.privOffset;\r\n }\r\n\r\n /**\r\n * Primary Language detected.\r\n * @member RecognitionResult.prototype.language\r\n * @function\r\n * @public\r\n * @returns {string} language detected.\r\n */\r\n public get language(): string {\r\n return this.privLanguage;\r\n }\r\n\r\n /**\r\n * Primary Language detection confidence (Unknown, Low, Medium, High).\r\n * @member RecognitionResult.prototype.languageDetectionConfidence\r\n * @function\r\n * @public\r\n * @returns {string} detection confidence strength.\r\n */\r\n public get languageDetectionConfidence(): string {\r\n return this.privLanguageDetectionConfidence;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful recognition, provides details of the occurred error.\r\n * @member RecognitionResult.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} a brief description of an error.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n\r\n /**\r\n * A string containing Json serialized recognition result as it was received from the service.\r\n * @member RecognitionResult.prototype.json\r\n * @function\r\n * @private\r\n * @returns {string} Json serialized representation of the result.\r\n */\r\n public get json(): string {\r\n return this.privJson;\r\n }\r\n\r\n /**\r\n * The set of properties exposed in the result.\r\n * @member RecognitionResult.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The set of properties exposed in the result.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CognitiveSubscriptionKeyAuthentication,\r\n CognitiveTokenAuthentication,\r\n Context,\r\n IAuthentication,\r\n IConnectionFactory,\r\n OS,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig,\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n Deferred,\r\n marshalPromiseToCallbacks\r\n} from \"../common/Exports.js\";\r\nimport {\r\n Contracts\r\n} from \"./Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n PropertyCollection,\r\n PropertyId,\r\n RecognitionEventArgs,\r\n SessionEventArgs,\r\n SpeechRecognitionResult,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Defines the base class Recognizer which mainly contains common event handlers.\r\n * @class Recognizer\r\n */\r\nexport abstract class Recognizer {\r\n private privDisposed: boolean;\r\n protected audioConfig: AudioConfig;\r\n protected privReco: ServiceRecognizerBase;\r\n protected privProperties: PropertyCollection;\r\n private privConnectionFactory: IConnectionFactory;\r\n\r\n /**\r\n * Creates and initializes an instance of a Recognizer\r\n * @constructor\r\n * @param {AudioConfig} audioInput - An optional audio input stream associated with the recognizer\r\n * @param {PropertyCollection} properties - A set of properties to set on the recognizer\r\n * @param {IConnectionFactory} connectionFactory - The factory class used to create a custom IConnection for the recognizer\r\n */\r\n protected constructor(audioConfig: AudioConfig, properties: PropertyCollection, connectionFactory: IConnectionFactory) {\r\n this.audioConfig = (audioConfig !== undefined) ? audioConfig : AudioConfig.fromDefaultMicrophoneInput();\r\n this.privDisposed = false;\r\n this.privProperties = properties.clone();\r\n this.privConnectionFactory = connectionFactory;\r\n this.implCommonRecognizerSetup();\r\n }\r\n\r\n /**\r\n * Defines event handler for session started events.\r\n * @member Recognizer.prototype.sessionStarted\r\n * @function\r\n * @public\r\n */\r\n public sessionStarted: (sender: Recognizer, event: SessionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for session stopped events.\r\n * @member Recognizer.prototype.sessionStopped\r\n * @function\r\n * @public\r\n */\r\n public sessionStopped: (sender: Recognizer, event: SessionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for speech started events.\r\n * @member Recognizer.prototype.speechStartDetected\r\n * @function\r\n * @public\r\n */\r\n public speechStartDetected: (sender: Recognizer, event: RecognitionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for speech stopped events.\r\n * @member Recognizer.prototype.speechEndDetected\r\n * @function\r\n * @public\r\n */\r\n public speechEndDetected: (sender: Recognizer, event: RecognitionEventArgs) => void;\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member Recognizer.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, errorCb?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n marshalPromiseToCallbacks(this.dispose(true), cb, errorCb);\r\n }\r\n\r\n /**\r\n * @Internal\r\n * Internal data member to support fromRecognizer* pattern methods on other classes.\r\n * Do not use externally, object returned will change without warning or notice.\r\n */\r\n public get internalData(): object {\r\n return this.privReco;\r\n }\r\n\r\n /**\r\n * This method performs cleanup of resources.\r\n * The Boolean parameter disposing indicates whether the method is called\r\n * from Dispose (if disposing is true) or from the finalizer (if disposing is false).\r\n * Derived classes should override this method to dispose resource if needed.\r\n * @member Recognizer.prototype.dispose\r\n * @function\r\n * @public\r\n * @param {boolean} disposing - Flag to request disposal.\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposed) {\r\n return;\r\n }\r\n\r\n this.privDisposed = true;\r\n\r\n if (disposing) {\r\n if (this.privReco) {\r\n await this.privReco.audioSource.turnOff();\r\n await this.privReco.dispose();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * This method returns the current state of the telemetry setting.\r\n * @member Recognizer.prototype.telemetryEnabled\r\n * @function\r\n * @public\r\n * @returns true if the telemetry is enabled, false otherwise.\r\n */\r\n public static get telemetryEnabled(): boolean {\r\n return ServiceRecognizerBase.telemetryDataEnabled;\r\n }\r\n\r\n /**\r\n * This method globally enables or disables telemetry.\r\n * @member Recognizer.prototype.enableTelemetry\r\n * @function\r\n * @public\r\n * @param enabled - Global setting for telemetry collection.\r\n * If set to true, telemetry information like microphone errors,\r\n * recognition errors are collected and sent to Microsoft.\r\n * If set to false, no telemetry is sent to Microsoft.\r\n */\r\n public static enableTelemetry(enabled: boolean): void {\r\n ServiceRecognizerBase.telemetryDataEnabled = enabled;\r\n }\r\n\r\n //\r\n // ################################################################################################################\r\n // IMPLEMENTATION.\r\n // Move to independent class\r\n // ################################################################################################################\r\n //\r\n protected abstract createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig;\r\n\r\n // Creates the correct service recognizer for the type\r\n protected abstract createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase;\r\n\r\n // Does the generic recognizer setup that is common across all recognizer types.\r\n protected implCommonRecognizerSetup(): void {\r\n\r\n let osPlatform = (typeof window !== \"undefined\") ? \"Browser\" : \"Node\";\r\n let osName = \"unknown\";\r\n let osVersion = \"unknown\";\r\n\r\n if (typeof navigator !== \"undefined\") {\r\n osPlatform = osPlatform + \"/\" + navigator.platform;\r\n osName = navigator.userAgent;\r\n osVersion = navigator.appVersion;\r\n }\r\n\r\n const recognizerConfig = this.createRecognizerConfig(\r\n new SpeechServiceConfig(\r\n new Context(new OS(osPlatform, osName, osVersion))));\r\n\r\n this.privReco = this.createServiceRecognizer(\r\n Recognizer.getAuthFromProperties(this.privProperties),\r\n this.privConnectionFactory,\r\n this.audioConfig,\r\n recognizerConfig);\r\n }\r\n\r\n protected async recognizeOnceAsyncImpl(recognitionMode: RecognitionMode): Promise {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n const ret: Deferred = new Deferred();\r\n\r\n await this.implRecognizerStop();\r\n await this.privReco.recognize(recognitionMode, ret.resolve, ret.reject);\r\n const result: SpeechRecognitionResult = await ret.promise;\r\n await this.implRecognizerStop();\r\n\r\n return result;\r\n\r\n }\r\n\r\n protected async startContinuousRecognitionAsyncImpl(recognitionMode: RecognitionMode): Promise {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n\r\n await this.implRecognizerStop();\r\n await this.privReco.recognize(recognitionMode, undefined, undefined);\r\n }\r\n\r\n protected async stopContinuousRecognitionAsyncImpl(): Promise {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n await this.implRecognizerStop();\r\n }\r\n\r\n protected async implRecognizerStop(): Promise {\r\n if (this.privReco) {\r\n await this.privReco.stopRecognizing();\r\n }\r\n return;\r\n }\r\n\r\n protected static getAuthFromProperties(properties: PropertyCollection): IAuthentication {\r\n const subscriptionKey = properties.getProperty(PropertyId.SpeechServiceConnection_Key, undefined);\r\n const authentication = (subscriptionKey && subscriptionKey !== \"\") ?\r\n new CognitiveSubscriptionKeyAuthentication(subscriptionKey) :\r\n new CognitiveTokenAuthentication(\r\n (): Promise => {\r\n const authorizationToken = properties.getProperty(PropertyId.SpeechServiceAuthorization_Token, undefined);\r\n return Promise.resolve(authorizationToken);\r\n },\r\n (): Promise => {\r\n const authorizationToken = properties.getProperty(PropertyId.SpeechServiceAuthorization_Token, undefined);\r\n return Promise.resolve(authorizationToken);\r\n });\r\n\r\n return authentication;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the possible reasons a recognition result might be generated.\r\n * @class ResultReason\r\n */\r\nexport enum ResultReason {\r\n /**\r\n * Indicates speech could not be recognized. More details\r\n * can be found in the NoMatchDetails object.\r\n * @member ResultReason.NoMatch\r\n */\r\n NoMatch,\r\n\r\n /**\r\n * Indicates that the recognition was canceled. More details\r\n * can be found using the CancellationDetails object.\r\n * @member ResultReason.Canceled\r\n */\r\n Canceled,\r\n\r\n /**\r\n * Indicates the speech result contains hypothesis text.\r\n * @member ResultReason.RecognizedSpeech\r\n */\r\n RecognizingSpeech,\r\n\r\n /**\r\n * Indicates the speech result contains final text that has been recognized.\r\n * Speech Recognition is now complete for this phrase.\r\n * @member ResultReason.RecognizedSpeech\r\n */\r\n RecognizedSpeech,\r\n\r\n /**\r\n * Indicates the speech result contains a finalized acceptance of a provided keyword.\r\n * Speech recognition will continue unless otherwise configured.\r\n * @member ResultReason.RecognizedKeyword\r\n */\r\n RecognizedKeyword,\r\n\r\n /**\r\n * Indicates the intent result contains hypothesis text and intent.\r\n * @member ResultReason.RecognizingIntent\r\n */\r\n RecognizingIntent,\r\n\r\n /**\r\n * Indicates the intent result contains final text and intent.\r\n * Speech Recognition and Intent determination are now complete for this phrase.\r\n * @member ResultReason.RecognizedIntent\r\n */\r\n RecognizedIntent,\r\n\r\n /**\r\n * Indicates the translation result contains hypothesis text and its translation(s).\r\n * @member ResultReason.TranslatingSpeech\r\n */\r\n TranslatingSpeech,\r\n\r\n /**\r\n * Indicates the translation result contains final text and corresponding translation(s).\r\n * Speech Recognition and Translation are now complete for this phrase.\r\n * @member ResultReason.TranslatedSpeech\r\n */\r\n TranslatedSpeech,\r\n\r\n /**\r\n * Indicates the synthesized audio result contains a non-zero amount of audio data\r\n * @member ResultReason.SynthesizingAudio\r\n */\r\n SynthesizingAudio,\r\n\r\n /**\r\n * Indicates the synthesized audio is now complete for this phrase.\r\n * @member ResultReason.SynthesizingAudioCompleted\r\n */\r\n SynthesizingAudioCompleted,\r\n\r\n /**\r\n * Indicates the speech synthesis is now started\r\n * @member ResultReason.SynthesizingAudioStarted\r\n */\r\n SynthesizingAudioStarted,\r\n\r\n /**\r\n * Indicates the voice profile is being enrolled and customers need to send more audio to create a voice profile.\r\n * @member ResultReason.EnrollingVoiceProfile\r\n */\r\n EnrollingVoiceProfile,\r\n\r\n /**\r\n * Indicates the voice profile has been enrolled.\r\n * @member ResultReason.EnrolledVoiceProfile\r\n */\r\n EnrolledVoiceProfile,\r\n\r\n /**\r\n * Indicates successful identification of some speakers.\r\n * @member ResultReason.RecognizedSpeakers\r\n */\r\n RecognizedSpeakers,\r\n\r\n /**\r\n * Indicates successfully verified one speaker.\r\n * @member ResultReason.RecognizedSpeaker\r\n */\r\n RecognizedSpeaker,\r\n\r\n /**\r\n * Indicates a voice profile has been reset successfully.\r\n * @member ResultReason.ResetVoiceProfile\r\n */\r\n ResetVoiceProfile,\r\n\r\n /**\r\n * Indicates a voice profile has been deleted successfully.\r\n * @member ResultReason.DeletedVoiceProfile\r\n */\r\n DeletedVoiceProfile,\r\n\r\n /**\r\n * Indicates synthesis voices list has been successfully retrieved.\r\n * @member ResultReason.VoicesListRetrieved\r\n */\r\n VoicesListRetrieved,\r\n\r\n /**\r\n * Indicates the transcription result contains hypothesis text and its translation(s) for\r\n * other participants in the conversation.\r\n * @member ResultReason.TranslatingParticipantSpeech\r\n */\r\n TranslatingParticipantSpeech,\r\n\r\n /**\r\n * Indicates the transcription result contains final text and corresponding translation(s)\r\n * for other participants in the conversation. Speech Recognition and Translation are now\r\n * complete for this phrase.\r\n * @member ResultReason.TranslatedParticipantSpeech\r\n */\r\n TranslatedParticipantSpeech,\r\n\r\n /**\r\n * \r\n * Indicates the transcription result contains the instant message and corresponding\r\n * translation(s).\r\n * @member ResultReason.TranslatedInstantMessage\r\n */\r\n TranslatedInstantMessage,\r\n\r\n /**\r\n * Indicates the transcription result contains the instant message for other participants\r\n * in the conversation and corresponding translation(s).\r\n * @member ResultReason.TranslatedParticipantInstantMessage\r\n */\r\n TranslatedParticipantInstantMessage,\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\nimport { SessionEventArgs } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines payload for any Service message event\r\n * Added in version 1.9.0\r\n */\r\n\r\nexport class ServiceEventArgs extends SessionEventArgs {\r\n private privJsonResult: string;\r\n private privEventName: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} json - json payload of the USP message.\r\n */\r\n public constructor(json: string, name: string, sessionId?: string) {\r\n super(sessionId);\r\n this.privJsonResult = json;\r\n this.privEventName = name;\r\n }\r\n\r\n public get jsonString(): string {\r\n return this.privJsonResult;\r\n }\r\n\r\n public get eventName(): string {\r\n return this.privEventName;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines channels used to pass property settings to service.\r\n * Added in version 1.7.0.\r\n */\r\nexport enum ServicePropertyChannel {\r\n /**\r\n * Uses URI query parameter to pass property settings to service.\r\n */\r\n UriQueryParameter = 0.\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines content for session events like SessionStarted/Stopped, SoundStarted/Stopped.\r\n * @class SessionEventArgs\r\n */\r\nexport class SessionEventArgs {\r\n private privSessionId: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(sessionId: string) {\r\n this.privSessionId = sessionId;\r\n }\r\n\r\n /**\r\n * Represents the session identifier.\r\n * @member SessionEventArgs.prototype.sessionId\r\n * @function\r\n * @public\r\n * @returns {string} Represents the session identifier.\r\n */\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\n\r\n/**\r\n * Source Language configuration.\r\n * @class SourceLanguageConfig\r\n */\r\nexport class SourceLanguageConfig {\r\n private privLanguage: string;\r\n private privEndpointId: string;\r\n\r\n private constructor(language: string, endpointId?: string) {\r\n Contracts.throwIfNullOrUndefined(language, \"language\");\r\n this.privLanguage = language;\r\n this.privEndpointId = endpointId;\r\n }\r\n\r\n /**\r\n * @member SourceLanguageConfig.fromLanguage\r\n * @function\r\n * @public\r\n * @param {string} language language (eg. \"en-US\") value of config.\r\n * @param {string?} endpointId endpointId of model bound to given language of config.\r\n * @return {SourceLanguageConfig} Instance of SourceLanguageConfig\r\n * @summary Creates an instance of the SourceLanguageConfig with the given language and optional endpointId.\r\n * Added in version 1.13.0.\r\n */\r\n public static fromLanguage(language: string, endpointId?: string): SourceLanguageConfig {\r\n return new SourceLanguageConfig(language, endpointId);\r\n }\r\n\r\n public get language(): string {\r\n return this.privLanguage;\r\n }\r\n\r\n public get endpointId(): string {\r\n return this.privEndpointId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { SpeakerRecognitionModel } from \"./SpeakerRecognitionModel.js\";\r\nimport {\r\n VoiceProfile,\r\n VoiceProfileType,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Defines SpeakerIdentificationModel class for Speaker Recognition\r\n * Model contains a set of profiles against which to identify speaker(s)\r\n * @class SpeakerIdentificationModel\r\n */\r\nexport class SpeakerIdentificationModel implements SpeakerRecognitionModel {\r\n private privVoiceProfiles: VoiceProfile[] = [];\r\n private privProfileIds: string[] = [];\r\n\r\n private constructor(profiles: VoiceProfile[]) {\r\n Contracts.throwIfNullOrUndefined(profiles, \"VoiceProfiles\");\r\n if (profiles.length === 0) {\r\n throw new Error(\"Empty Voice Profiles array\");\r\n }\r\n for (const profile of profiles) {\r\n if (profile.profileType !== VoiceProfileType.TextIndependentIdentification) {\r\n throw new Error(\"Identification model can only be created from Identification profile: \" + profile.profileId);\r\n }\r\n this.privVoiceProfiles.push(profile);\r\n this.privProfileIds.push(profile.profileId);\r\n }\r\n }\r\n public static fromProfiles(profiles: VoiceProfile[]): SpeakerIdentificationModel {\r\n return new SpeakerIdentificationModel(profiles);\r\n }\r\n\r\n public get voiceProfileIds(): string {\r\n return this.privProfileIds.join(\",\");\r\n }\r\n\r\n public get profileIds(): string[] {\r\n return this.privProfileIds;\r\n }\r\n\r\n public get scenario(): string {\r\n return \"TextIndependentIdentification\";\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { CancellationErrorCodePropertyName, SpeakerResponse } from \"../common.speech/Exports.js\";\r\nimport {\r\n CancellationDetailsBase,\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n} from \"./Exports.js\";\r\n\r\nexport enum SpeakerRecognitionResultType {\r\n Verify,\r\n Identify\r\n}\r\n\r\n/**\r\n * Output format\r\n * @class SpeakerRecognitionResult\r\n */\r\nexport class SpeakerRecognitionResult {\r\n private privReason: ResultReason;\r\n private privProperties: PropertyCollection;\r\n private privProfileId: string;\r\n private privScore: number;\r\n private privErrorDetails: string;\r\n\r\n public constructor(response: SpeakerResponse, resultReason: ResultReason = ResultReason.RecognizedSpeaker, cancellationErrorCode: CancellationErrorCode = CancellationErrorCode.NoError, errorDetails: string = \"\") {\r\n this.privProperties = new PropertyCollection();\r\n const resultType = response.scenario === \"TextIndependentIdentification\" ? SpeakerRecognitionResultType.Identify : SpeakerRecognitionResultType.Verify;\r\n this.privReason = resultReason;\r\n if (this.privReason !== ResultReason.Canceled) {\r\n if (resultType === SpeakerRecognitionResultType.Identify) {\r\n this.privProfileId = response.identificationResult.identifiedProfile.profileId;\r\n this.privScore = response.identificationResult.identifiedProfile.score;\r\n this.privReason = ResultReason.RecognizedSpeakers;\r\n } else {\r\n this.privScore = response.verificationResult.score;\r\n if (response.verificationResult.recognitionResult.toLowerCase() !== \"accept\") {\r\n this.privReason = ResultReason.NoMatch;\r\n }\r\n if (response.verificationResult.profileId !== undefined && response.verificationResult.profileId !== \"\") {\r\n this.privProfileId = response.verificationResult.profileId;\r\n }\r\n }\r\n } else {\r\n this.privErrorDetails = errorDetails;\r\n this.privProperties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[cancellationErrorCode]);\r\n }\r\n this.privProperties.setProperty(PropertyId.SpeechServiceResponse_JsonResult, JSON.stringify(response));\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n\r\n public get profileId(): string {\r\n return this.privProfileId;\r\n }\r\n\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n\r\n public get score(): number {\r\n return this.privScore;\r\n }\r\n}\r\n\r\n/**\r\n * @class SpeakerRecognitionCancellationDetails\r\n */\r\nexport class SpeakerRecognitionCancellationDetails extends CancellationDetailsBase {\r\n\r\n private constructor(reason: CancellationReason, errorDetails: string, errorCode: CancellationErrorCode) {\r\n super(reason, errorDetails, errorCode);\r\n }\r\n\r\n /**\r\n * Creates an instance of SpeakerRecognitionCancellationDetails object for the canceled SpeakerRecognitionResult\r\n * @member SpeakerRecognitionCancellationDetails.fromResult\r\n * @function\r\n * @public\r\n * @param {SpeakerRecognitionResult} result - The result that was canceled.\r\n * @returns {SpeakerRecognitionCancellationDetails} The cancellation details object being created.\r\n */\r\n public static fromResult(result: SpeakerRecognitionResult): SpeakerRecognitionCancellationDetails {\r\n const reason = CancellationReason.Error;\r\n let errorCode: CancellationErrorCode = CancellationErrorCode.NoError;\r\n\r\n if (!!result.properties) {\r\n errorCode = CancellationErrorCode[result.properties.getProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.NoError]) as keyof typeof CancellationErrorCode];\r\n }\r\n\r\n return new SpeakerRecognitionCancellationDetails(reason, result.errorDetails, errorCode);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeakerRecognitionConnectionFactory,\r\n SpeakerServiceRecognizer,\r\n SpeechServiceConfig\r\n} from \"../common.speech/Exports.js\";\r\nimport { SpeakerRecognitionModel } from \"./SpeakerRecognitionModel.js\";\r\nimport { AudioConfig, AudioConfigImpl } from \"./Audio/AudioConfig.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n SpeakerIdentificationModel,\r\n SpeakerRecognitionResult,\r\n SpeakerVerificationModel,\r\n} from \"./Exports.js\";\r\nimport { SpeechConfig, SpeechConfigImpl } from \"./SpeechConfig.js\";\r\n\r\n/**\r\n * Defines SpeakerRecognizer class for Speaker Recognition\r\n * Handles operations from user for Voice Profile operations (e.g. createProfile, deleteProfile)\r\n * @class SpeakerRecognizer\r\n */\r\nexport class SpeakerRecognizer extends Recognizer {\r\n protected privProperties: PropertyCollection;\r\n private privDisposedSpeakerRecognizer: boolean;\r\n private privAudioConfigImpl: AudioConfigImpl;\r\n /**\r\n * Initializes an instance of the SpeakerRecognizer.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - The set of configuration properties.\r\n * @param {AudioConfig} audioConfig - An optional audio input config associated with the recognizer\r\n */\r\n public constructor(speechConfig: SpeechConfig, audioConfig: AudioConfig) {\r\n Contracts.throwIfNullOrUndefined(speechConfig, \"speechConfig\");\r\n const configImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n Contracts.throwIfNullOrUndefined(configImpl, \"speechConfig\");\r\n\r\n super(audioConfig, configImpl.properties, new SpeakerRecognitionConnectionFactory());\r\n this.privAudioConfigImpl = audioConfig as AudioConfigImpl;\r\n Contracts.throwIfNull(this.privAudioConfigImpl, \"audioConfig\");\r\n\r\n this.privDisposedSpeakerRecognizer = false;\r\n this.privProperties = configImpl.properties;\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member SpeakerRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member SpeakerRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this SpeakerRecognizer.\r\n * @member SpeakerRecognizer.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this SpeakerRecognizer.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Get recognition result for model using given audio\r\n * @member SpeakerRecognizer.prototype.recognizeOnceAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {SpeakerIdentificationModel | SpeakerVerificationModel} model Model containing Voice Profiles to be identified\r\n * @param cb - Callback invoked once result is returned.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public async recognizeOnceAsync(model: SpeakerIdentificationModel | SpeakerVerificationModel): Promise {\r\n Contracts.throwIfDisposed(this.privDisposedSpeakerRecognizer);\r\n\r\n return this.recognizeSpeakerOnceAsyncImpl(model);\r\n }\r\n\r\n /**\r\n * Included for compatibility\r\n * @member SpeakerRecognizer.prototype.close\r\n * @function\r\n * @public\r\n * @async\r\n */\r\n public async close(): Promise {\r\n Contracts.throwIfDisposed(this.privDisposedSpeakerRecognizer);\r\n await this.dispose(true);\r\n }\r\n\r\n protected async recognizeSpeakerOnceAsyncImpl(model: SpeakerRecognitionModel): Promise {\r\n Contracts.throwIfDisposed(this.privDisposedSpeakerRecognizer);\r\n\r\n await this.implRecognizerStop();\r\n const result: SpeakerRecognitionResult = await this.privReco.recognizeSpeaker(model);\r\n await this.implRecognizerStop();\r\n\r\n return result;\r\n }\r\n\r\n protected async implRecognizerStop(): Promise {\r\n if (this.privReco) {\r\n await this.privReco.stopRecognizing();\r\n }\r\n return;\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n protected createServiceRecognizer(authentication: IAuthentication, connectionFactory: IConnectionFactory, audioConfig: AudioConfig, recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n const audioImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n return new SpeakerServiceRecognizer(authentication, connectionFactory, audioImpl, recognizerConfig, this);\r\n }\r\n\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedSpeakerRecognizer) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n this.privDisposedSpeakerRecognizer = true;\r\n await super.dispose(disposing);\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { SpeakerRecognitionModel } from \"./SpeakerRecognitionModel.js\";\r\nimport {\r\n VoiceProfile,\r\n VoiceProfileType,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Defines SpeakerVerificationModel class for Speaker Recognition\r\n * Model contains a profile against which to verify a speaker\r\n * @class SpeakerVerificationModel\r\n */\r\nexport class SpeakerVerificationModel implements SpeakerRecognitionModel {\r\n private privVoiceProfile: VoiceProfile;\r\n\r\n private constructor(profile: VoiceProfile) {\r\n Contracts.throwIfNullOrUndefined(profile, \"VoiceProfile\");\r\n if (profile.profileType === VoiceProfileType.TextIndependentIdentification) {\r\n throw new Error(\"Verification model cannot be created from Identification profile\");\r\n }\r\n this.privVoiceProfile = profile;\r\n }\r\n\r\n public static fromProfile(profile: VoiceProfile): SpeakerVerificationModel {\r\n return new SpeakerVerificationModel(profile);\r\n }\r\n\r\n public get voiceProfile(): VoiceProfile {\r\n return this.privVoiceProfile;\r\n }\r\n\r\n public get profileIds(): string[] {\r\n return [ this.voiceProfile.profileId ];\r\n }\r\n\r\n public get scenario(): string {\r\n if (this.voiceProfile.profileType === VoiceProfileType.TextDependentVerification) {\r\n return \"TextDependentVerification\";\r\n } else {\r\n return \"TextIndependentVerification\";\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n ForceDictationPropertyName,\r\n OutputFormatPropertyName,\r\n ServicePropertiesPropertyName\r\n} from \"../common.speech/Exports.js\";\r\nimport {IStringDictionary} from \"../common/Exports.js\";\r\nimport {Contracts} from \"./Contracts.js\";\r\nimport {\r\n OutputFormat,\r\n ProfanityOption,\r\n PropertyCollection,\r\n PropertyId,\r\n ServicePropertyChannel,\r\n SpeechSynthesisOutputFormat,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Speech configuration.\r\n * @class SpeechConfig\r\n */\r\nexport abstract class SpeechConfig {\r\n /**\r\n * Creates and initializes an instance.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Static instance of SpeechConfig returned by passing subscriptionKey and service region.\r\n * Note: Please use your LanguageUnderstanding subscription key in case you want to use the Intent recognizer.\r\n * @member SpeechConfig.fromSubscription\r\n * @function\r\n * @public\r\n * @param {string} subscriptionKey - The subscription key.\r\n * @param {string} region - The region name (see the region page).\r\n * @returns {SpeechConfig} The speech factory\r\n */\r\n public static fromSubscription(subscriptionKey: string, region: string): SpeechConfig {\r\n Contracts.throwIfNullOrWhitespace(subscriptionKey, \"subscriptionKey\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const speechImpl: SpeechConfigImpl = new SpeechConfigImpl();\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_IntentRegion, region);\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n\r\n return speechImpl;\r\n }\r\n\r\n /**\r\n * Creates an instance of the speech config with specified endpoint and subscription key.\r\n * This method is intended only for users who use a non-standard service endpoint or parameters.\r\n * Note: Please use your LanguageUnderstanding subscription key in case you want to use the Intent recognizer.\r\n * Note: The query parameters specified in the endpoint URL are not changed, even if they are set by any other APIs.\r\n * For example, if language is defined in the uri as query parameter \"language=de-DE\", and also set by\r\n * SpeechConfig.speechRecognitionLanguage = \"en-US\", the language setting in uri takes precedence,\r\n * and the effective language is \"de-DE\". Only the parameters that are not specified in the\r\n * endpoint URL can be set by other APIs.\r\n * Note: To use authorization token with fromEndpoint, pass an empty string to the subscriptionKey in the\r\n * fromEndpoint method, and then set authorizationToken=\"token\" on the created SpeechConfig instance to\r\n * use the authorization token.\r\n * @member SpeechConfig.fromEndpoint\r\n * @function\r\n * @public\r\n * @param {URL} endpoint - The service endpoint to connect to.\r\n * @param {string} subscriptionKey - The subscription key. If a subscription key is not specified, an authorization token must be set.\r\n * @returns {SpeechConfig} A speech factory instance.\r\n */\r\n public static fromEndpoint(endpoint: URL, subscriptionKey?: string): SpeechConfig {\r\n Contracts.throwIfNull(endpoint, \"endpoint\");\r\n\r\n const speechImpl: SpeechConfigImpl = new SpeechConfigImpl();\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Endpoint, endpoint.href);\r\n\r\n if (undefined !== subscriptionKey) {\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n }\r\n return speechImpl;\r\n }\r\n\r\n /**\r\n * Creates an instance of the speech config with specified host and subscription key.\r\n * This method is intended only for users who use a non-default service host. Standard resource path will be assumed.\r\n * For services with a non-standard resource path or no path at all, use fromEndpoint instead.\r\n * Note: Query parameters are not allowed in the host URI and must be set by other APIs.\r\n * Note: To use an authorization token with fromHost, use fromHost(URL),\r\n * and then set the AuthorizationToken property on the created SpeechConfig instance.\r\n * Note: Added in version 1.9.0.\r\n * @member SpeechConfig.fromHost\r\n * @function\r\n * @public\r\n * @param {URL} host - The service endpoint to connect to. Format is \"protocol://host:port\" where \":port\" is optional.\r\n * @param {string} subscriptionKey - The subscription key. If a subscription key is not specified, an authorization token must be set.\r\n * @returns {SpeechConfig} A speech factory instance.\r\n */\r\n public static fromHost(hostName: URL, subscriptionKey?: string): SpeechConfig {\r\n Contracts.throwIfNull(hostName, \"hostName\");\r\n\r\n const speechImpl: SpeechConfigImpl = new SpeechConfigImpl();\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Host, hostName.protocol + \"//\" + hostName.hostname + (hostName.port === \"\" ? \"\" : \":\" + hostName.port));\r\n\r\n if (undefined !== subscriptionKey) {\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n }\r\n return speechImpl;\r\n }\r\n\r\n /**\r\n * Creates an instance of the speech factory with specified initial authorization token and region.\r\n * Note: The caller needs to ensure that the authorization token is valid. Before the authorization token\r\n * expires, the caller needs to refresh it by calling this setter with a new valid token.\r\n * Note: Please use a token derived from your LanguageUnderstanding subscription key in case you want\r\n * to use the Intent recognizer. As configuration values are copied when creating a new recognizer,\r\n * the new token value will not apply to recognizers that have already been created. For recognizers\r\n * that have been created before, you need to set authorization token of the corresponding recognizer\r\n * to refresh the token. Otherwise, the recognizers will encounter errors during recognition.\r\n * @member SpeechConfig.fromAuthorizationToken\r\n * @function\r\n * @public\r\n * @param {string} authorizationToken - The initial authorization token.\r\n * @param {string} region - The region name (see the region page).\r\n * @returns {SpeechConfig} A speech factory instance.\r\n */\r\n public static fromAuthorizationToken(authorizationToken: string, region: string): SpeechConfig {\r\n Contracts.throwIfNull(authorizationToken, \"authorizationToken\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const speechImpl: SpeechConfigImpl = new SpeechConfigImpl();\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_IntentRegion, region);\r\n speechImpl.authorizationToken = authorizationToken;\r\n return speechImpl;\r\n }\r\n\r\n /**\r\n * Sets the proxy configuration.\r\n * Only relevant in Node.js environments.\r\n * Added in version 1.4.0.\r\n * @param proxyHostName The host name of the proxy server.\r\n * @param proxyPort The port number of the proxy server.\r\n */\r\n public abstract setProxy(proxyHostName: string, proxyPort: number): void;\r\n\r\n /**\r\n * Sets the proxy configuration.\r\n * Only relevant in Node.js environments.\r\n * Added in version 1.4.0.\r\n * @param proxyHostName The host name of the proxy server, without the protocol scheme (http://)\r\n * @param proxyPort The port number of the proxy server.\r\n * @param proxyUserName The username of the proxy server.\r\n * @param proxyPassword The password of the proxy server.\r\n */\r\n public abstract setProxy(proxyHostName: string, proxyPort: number, proxyUserName: string, proxyPassword: string): void;\r\n\r\n /**\r\n * Gets the authorization token.\r\n * @member SpeechConfig.prototype.authorizationToken\r\n * @function\r\n * @public\r\n */\r\n public abstract get authorizationToken(): string;\r\n\r\n /**\r\n * Gets/Sets the authorization token.\r\n * Note: The caller needs to ensure that the authorization token is valid. Before the authorization token\r\n * expires, the caller needs to refresh it by calling this setter with a new valid token.\r\n * @member SpeechConfig.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public abstract set authorizationToken(value: string);\r\n\r\n /**\r\n * Returns the configured language.\r\n * @member SpeechConfig.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n */\r\n public abstract get speechRecognitionLanguage(): string;\r\n\r\n /**\r\n * Gets/Sets the input language.\r\n * @member SpeechConfig.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public abstract set speechRecognitionLanguage(value: string);\r\n\r\n /**\r\n * Sets an arbitrary property.\r\n * @member SpeechConfig.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string | PropertyId} name - The name of the property to set.\r\n * @param {string} value - The new value of the property.\r\n */\r\n public abstract setProperty(name: string | PropertyId, value: string): void;\r\n\r\n /**\r\n * Returns the current value of an arbitrary property.\r\n * @member SpeechConfig.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property to query.\r\n * @param {string} def - The value to return in case the property is not known.\r\n * @returns {string} The current value, or provided default, of the given property.\r\n */\r\n public abstract getProperty(name: string, def?: string): string;\r\n\r\n /**\r\n * Gets speech recognition output format (simple or detailed).\r\n * Note: This output format is for speech recognition result, use [SpeechConfig.speechSynthesisOutputFormat] to\r\n * get synthesized audio output format.\r\n * @member SpeechConfig.prototype.outputFormat\r\n * @function\r\n * @public\r\n * @returns {OutputFormat} Returns the output format.\r\n */\r\n public abstract get outputFormat(): OutputFormat;\r\n\r\n /**\r\n * Gets/Sets speech recognition output format (simple or detailed).\r\n * Note: This output format is for speech recognition result, use [SpeechConfig.speechSynthesisOutputFormat] to\r\n * set synthesized audio output format.\r\n * @member SpeechConfig.prototype.outputFormat\r\n * @function\r\n * @public\r\n */\r\n public abstract set outputFormat(format: OutputFormat);\r\n\r\n /**\r\n * Gets the endpoint ID of a customized speech model that is used for speech recognition.\r\n * @member SpeechConfig.prototype.endpointId\r\n * @function\r\n * @public\r\n * @return {string} The endpoint ID\r\n */\r\n public abstract get endpointId(): string;\r\n\r\n /**\r\n * Gets/Sets the endpoint ID of a customized speech model that is used for speech recognition.\r\n * @member SpeechConfig.prototype.endpointId\r\n * @function\r\n * @public\r\n * @param {string} value - The endpoint ID\r\n */\r\n public abstract set endpointId(value: string);\r\n\r\n /**\r\n * Closes the configuration.\r\n * @member SpeechConfig.prototype.close\r\n * @function\r\n * @public\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n public close(): void { }\r\n\r\n /**\r\n * @member SpeechConfig.prototype.subscriptionKey\r\n * @function\r\n * @public\r\n * @return {string} The subscription key set on the config.\r\n */\r\n public abstract get subscriptionKey(): string;\r\n\r\n /**\r\n * @member SpeechConfig.prototype.region\r\n * @function\r\n * @public\r\n * @return {region} The region set on the config.\r\n */\r\n public abstract get region(): string;\r\n\r\n /**\r\n * Sets a property value that will be passed to service using the specified channel.\r\n * Added in version 1.7.0.\r\n * @member SpeechConfig.prototype.setServiceProperty\r\n * @function\r\n * @public\r\n * @param {name} The name of the property.\r\n * @param {value} Value to set.\r\n * @param {channel} The channel used to pass the specified property to service.\r\n */\r\n public abstract setServiceProperty(name: string, value: string, channel: ServicePropertyChannel): void;\r\n\r\n /**\r\n * Sets profanity option.\r\n * Added in version 1.7.0.\r\n * @member SpeechConfig.prototype.setProfanity\r\n * @function\r\n * @public\r\n * @param {profanity} Profanity option to set.\r\n */\r\n public abstract setProfanity(profanity: ProfanityOption): void;\r\n\r\n /**\r\n * Enable audio logging in service.\r\n * Audio and content logs are stored either in Microsoft-owned storage, or in your own storage account linked\r\n * to your Cognitive Services subscription (Bring Your Own Storage (BYOS) enabled Speech resource).\r\n * The logs will be removed after 30 days.\r\n * Added in version 1.7.0.\r\n * @member SpeechConfig.prototype.enableAudioLogging\r\n * @function\r\n * @public\r\n */\r\n public abstract enableAudioLogging(): void;\r\n\r\n /**\r\n * Includes word-level timestamps.\r\n * Added in version 1.7.0.\r\n * @member SpeechConfig.prototype.requestWordLevelTimestamps\r\n * @function\r\n * @public\r\n */\r\n public abstract requestWordLevelTimestamps(): void;\r\n\r\n /**\r\n * Enable dictation. Only supported in speech continuous recognition.\r\n * Added in version 1.7.0.\r\n * @member SpeechConfig.prototype.enableDictation\r\n * @function\r\n * @public\r\n */\r\n public abstract enableDictation(): void;\r\n\r\n /**\r\n * Gets the language of the speech synthesizer.\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisLanguage\r\n * @function\r\n * @public\r\n * @returns {string} Returns the speech synthesis language.\r\n */\r\n public abstract get speechSynthesisLanguage(): string;\r\n\r\n /**\r\n * Sets the language of the speech synthesizer.\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisLanguage\r\n * @function\r\n * @public\r\n */\r\n public abstract set speechSynthesisLanguage(language: string);\r\n\r\n /**\r\n * Gets the voice of the speech synthesizer.\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisVoiceName\r\n * @function\r\n * @public\r\n * @returns {string} Returns the speech synthesis voice.\r\n */\r\n public abstract get speechSynthesisVoiceName(): string;\r\n\r\n /**\r\n * Sets the voice of the speech synthesizer. (see available voices).\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisVoiceName\r\n * @function\r\n * @public\r\n */\r\n public abstract set speechSynthesisVoiceName(voice: string);\r\n\r\n /**\r\n * Gets the speech synthesis output format.\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisOutputFormat\r\n * @function\r\n * @public\r\n * @returns {SpeechSynthesisOutputFormat} Returns the speech synthesis output format\r\n */\r\n public abstract get speechSynthesisOutputFormat(): SpeechSynthesisOutputFormat;\r\n\r\n /**\r\n * Sets the speech synthesis output format (e.g. Riff16Khz16BitMonoPcm).\r\n * The default format is Audio16Khz64KBitRateMonoMp3 for browser and Riff16Khz16BitMonoPcm for Node.JS.\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisOutputFormat\r\n * @function\r\n * @public\r\n */\r\n public abstract set speechSynthesisOutputFormat(format: SpeechSynthesisOutputFormat);\r\n}\r\n\r\n/**\r\n * @public\r\n * @class SpeechConfigImpl\r\n */\r\nexport class SpeechConfigImpl extends SpeechConfig {\r\n\r\n private privProperties: PropertyCollection;\r\n\r\n public constructor() {\r\n super();\r\n this.privProperties = new PropertyCollection();\r\n this.speechRecognitionLanguage = \"en-US\"; // Should we have a default?\r\n this.outputFormat = OutputFormat.Simple;\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get endPoint(): URL {\r\n return new URL(this.privProperties.getProperty(PropertyId.SpeechServiceConnection_Endpoint));\r\n }\r\n\r\n public get subscriptionKey(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_Key);\r\n }\r\n\r\n public get region(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n }\r\n\r\n public get authorizationToken(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n public set authorizationToken(value: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceAuthorization_Token, value);\r\n }\r\n\r\n public get speechRecognitionLanguage(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n public set speechRecognitionLanguage(value: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_RecoLanguage, value);\r\n }\r\n\r\n public get autoDetectSourceLanguages(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages);\r\n }\r\n\r\n public set autoDetectSourceLanguages(value: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages, value);\r\n }\r\n\r\n public get outputFormat(): OutputFormat {\r\n return OutputFormat[this.privProperties.getProperty(OutputFormatPropertyName, undefined) as keyof typeof OutputFormat];\r\n }\r\n\r\n public set outputFormat(value: OutputFormat) {\r\n this.privProperties.setProperty(OutputFormatPropertyName, OutputFormat[value]);\r\n }\r\n\r\n public get endpointId(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_EndpointId);\r\n }\r\n\r\n public set endpointId(value: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_EndpointId, value);\r\n }\r\n\r\n public setProperty(name: string | PropertyId, value: string): void {\r\n Contracts.throwIfNull(value, \"value\");\r\n\r\n this.privProperties.setProperty(name, value);\r\n }\r\n\r\n public getProperty(name: string | PropertyId, def?: string): string {\r\n\r\n return this.privProperties.getProperty(name, def);\r\n }\r\n\r\n public setProxy(proxyHostName: string, proxyPort: number): void;\r\n public setProxy(proxyHostName: string, proxyPort: number, proxyUserName: string, proxyPassword: string): void;\r\n public setProxy(proxyHostName: any, proxyPort: any, proxyUserName?: any, proxyPassword?: any): void {\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyHostName], proxyHostName as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyPort], proxyPort as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyUserName], proxyUserName as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyPassword], proxyPassword as string);\r\n }\r\n\r\n public setServiceProperty(name: string, value: string): void {\r\n const currentProperties: IStringDictionary = JSON.parse(this.privProperties.getProperty(ServicePropertiesPropertyName, \"{}\")) as IStringDictionary;\r\n\r\n currentProperties[name] = value;\r\n\r\n this.privProperties.setProperty(ServicePropertiesPropertyName, JSON.stringify(currentProperties));\r\n }\r\n\r\n public setProfanity(profanity: ProfanityOption): void {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceResponse_ProfanityOption, ProfanityOption[profanity]);\r\n }\r\n\r\n public enableAudioLogging(): void {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging, \"true\");\r\n }\r\n public requestWordLevelTimestamps(): void {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps, \"true\");\r\n }\r\n public enableDictation(): void {\r\n this.privProperties.setProperty(ForceDictationPropertyName, \"true\");\r\n }\r\n\r\n public clone(): SpeechConfigImpl {\r\n const ret: SpeechConfigImpl = new SpeechConfigImpl();\r\n ret.privProperties = this.privProperties.clone();\r\n return ret;\r\n }\r\n\r\n public get speechSynthesisLanguage(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_SynthLanguage);\r\n }\r\n\r\n public set speechSynthesisLanguage(language: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_SynthLanguage, language);\r\n }\r\n\r\n public get speechSynthesisVoiceName(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_SynthVoice);\r\n }\r\n\r\n public set speechSynthesisVoiceName(voice: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_SynthVoice, voice);\r\n }\r\n\r\n public get speechSynthesisOutputFormat(): SpeechSynthesisOutputFormat {\r\n return SpeechSynthesisOutputFormat[this.privProperties.getProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, undefined) as keyof typeof SpeechSynthesisOutputFormat];\r\n }\r\n\r\n public set speechSynthesisOutputFormat(format: SpeechSynthesisOutputFormat) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, SpeechSynthesisOutputFormat[format]);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CancellationEventArgsBase,\r\n} from \"./CancellationEventArgsBase.js\";\r\n\r\nexport class SpeechRecognitionCanceledEventArgs extends CancellationEventArgsBase {\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { RecognitionEventArgs, SpeechRecognitionResult, ConversationTranscriptionResult } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines contents of speech recognizing/recognized event.\r\n * @class SpeechRecognitionEventArgs\r\n */\r\nexport class SpeechRecognitionEventArgs extends RecognitionEventArgs {\r\n private privResult: SpeechRecognitionResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {SpeechRecognitionResult} result - The speech recognition result.\r\n * @param {number} offset - The offset.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(result: SpeechRecognitionResult, offset?: number, sessionId?: string) {\r\n super(offset, sessionId);\r\n\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Specifies the recognition result.\r\n * @member SpeechRecognitionEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {SpeechRecognitionResult} the recognition result.\r\n */\r\n public get result(): SpeechRecognitionResult {\r\n return this.privResult;\r\n }\r\n}\r\n\r\n/**\r\n * Defines contents of conversation transcribed/transcribing event.\r\n * @class ConversationTranscriptionEventArgs\r\n */\r\nexport class ConversationTranscriptionEventArgs extends RecognitionEventArgs {\r\n private privResult: ConversationTranscriptionResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {ConversationTranscriptionResult} result - The conversation transcription result.\r\n * @param {number} offset - The offset.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(result: ConversationTranscriptionResult, offset?: number, sessionId?: string) {\r\n super(offset, sessionId);\r\n\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Specifies the transcription result.\r\n * @member ConversationTranscription1EventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {ConversationTranscriptionResult} the recognition result.\r\n */\r\n public get result(): ConversationTranscriptionResult {\r\n return this.privResult;\r\n }\r\n}\r\n\r\n/**\r\n * Defines contents of meeting transcribed/transcribing event.\r\n * @class MeetingTranscriptionEventArgs\r\n */\r\nexport class MeetingTranscriptionEventArgs extends SpeechRecognitionEventArgs {\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, RecognitionResult, ResultReason } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines result of speech recognition.\r\n * @class SpeechRecognitionResult\r\n */\r\nexport class SpeechRecognitionResult extends RecognitionResult {\r\n private readonly privSpeakerId: string;\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @public\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {string} text - The recognized text.\r\n * @param {number} duration - The duration.\r\n * @param {number} offset - The offset into the stream.\r\n * @param {string} language - Primary Language detected, if provided.\r\n * @param {string} languageDetectionConfidence - Primary Language confidence (\"Unknown,\" \"Low,\" \"Medium,\" \"High\"...), if provided.\r\n * @param {string} speakerId - speaker id for conversation transcription, if provided.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {string} json - Additional Json, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n */\r\n public constructor(resultId?: string, reason?: ResultReason, text?: string,\r\n duration?: number, offset?: number, language?: string,\r\n languageDetectionConfidence?: string, speakerId?: string, errorDetails?: string,\r\n json?: string, properties?: PropertyCollection) {\r\n super(resultId, reason, text, duration, offset, language, languageDetectionConfidence, errorDetails, json, properties);\r\n this.privSpeakerId = speakerId;\r\n }\r\n\r\n /**\r\n * speaker id from conversation transcription/id scenarios\r\n * @member SpeechRecognitionResult.prototype.speakerId\r\n * @function\r\n * @public\r\n * @returns {string} id of speaker in given result\r\n */\r\n public get speakerId(): string {\r\n return this.privSpeakerId;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n OutputFormatPropertyName,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechConnectionFactory,\r\n SpeechServiceConfig,\r\n SpeechServiceRecognizer,\r\n} from \"../common.speech/Exports.js\";\r\nimport { marshalPromiseToCallbacks } from \"../common/Exports.js\";\r\nimport { AudioConfigImpl } from \"./Audio/AudioConfig.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n AutoDetectSourceLanguageConfig,\r\n KeywordRecognitionModel,\r\n OutputFormat,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n SpeechRecognitionCanceledEventArgs,\r\n SpeechRecognitionEventArgs,\r\n SpeechRecognitionResult,\r\n} from \"./Exports.js\";\r\nimport { SpeechConfig, SpeechConfigImpl } from \"./SpeechConfig.js\";\r\n\r\n/**\r\n * Performs speech recognition from microphone, file, or other audio input streams, and gets transcribed text as result.\r\n * @class SpeechRecognizer\r\n */\r\nexport class SpeechRecognizer extends Recognizer {\r\n private privDisposedRecognizer: boolean;\r\n\r\n /**\r\n * SpeechRecognizer constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - an set of initial properties for this recognizer\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the recognizer\r\n */\r\n public constructor(speechConfig: SpeechConfig, audioConfig?: AudioConfig) {\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n Contracts.throwIfNull(speechConfigImpl, \"speechConfig\");\r\n\r\n Contracts.throwIfNullOrWhitespace(\r\n speechConfigImpl.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage),\r\n PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n\r\n super(audioConfig, speechConfigImpl.properties, new SpeechConnectionFactory());\r\n this.privDisposedRecognizer = false;\r\n }\r\n\r\n /**\r\n * SpeechRecognizer constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - an set of initial properties for this recognizer\r\n * @param {AutoDetectSourceLanguageConfig} autoDetectSourceLanguageConfig - An source language detection configuration associated with the recognizer\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the recognizer\r\n */\r\n public static FromConfig(speechConfig: SpeechConfig, autoDetectSourceLanguageConfig: AutoDetectSourceLanguageConfig, audioConfig?: AudioConfig): SpeechRecognizer {\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n autoDetectSourceLanguageConfig.properties.mergeTo(speechConfigImpl.properties);\r\n const recognizer = new SpeechRecognizer(speechConfig, audioConfig);\r\n return recognizer;\r\n }\r\n\r\n /**\r\n * The event recognizing signals that an intermediate recognition result is received.\r\n * @member SpeechRecognizer.prototype.recognizing\r\n * @function\r\n * @public\r\n */\r\n public recognizing: (sender: Recognizer, event: SpeechRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event recognized signals that a final recognition result is received.\r\n * @member SpeechRecognizer.prototype.recognized\r\n * @function\r\n * @public\r\n */\r\n public recognized: (sender: Recognizer, event: SpeechRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event canceled signals that an error occurred during recognition.\r\n * @member SpeechRecognizer.prototype.canceled\r\n * @function\r\n * @public\r\n */\r\n public canceled: (sender: Recognizer, event: SpeechRecognitionCanceledEventArgs) => void;\r\n\r\n /**\r\n * Gets the endpoint id of a customized speech model that is used for speech recognition.\r\n * @member SpeechRecognizer.prototype.endpointId\r\n * @function\r\n * @public\r\n * @returns {string} the endpoint id of a customized speech model that is used for speech recognition.\r\n */\r\n public get endpointId(): string {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_EndpointId, \"00000000-0000-0000-0000-000000000000\");\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member SpeechRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member SpeechRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * Gets the spoken language of recognition.\r\n * @member SpeechRecognizer.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @returns {string} The spoken language of recognition.\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n /**\r\n * Gets the output format of recognition.\r\n * @member SpeechRecognizer.prototype.outputFormat\r\n * @function\r\n * @public\r\n * @returns {OutputFormat} The output format of recognition.\r\n */\r\n public get outputFormat(): OutputFormat {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n if (this.properties.getProperty(OutputFormatPropertyName, OutputFormat[OutputFormat.Simple]) === OutputFormat[OutputFormat.Simple]) {\r\n return OutputFormat.Simple;\r\n } else {\r\n return OutputFormat.Detailed;\r\n }\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this SpeechRecognizer.\r\n * @member SpeechRecognizer.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this SpeechRecognizer.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Starts speech recognition, and stops after the first utterance is recognized.\r\n * The task returns the recognition text as result.\r\n * Note: RecognizeOnceAsync() returns when the first utterance has been recognized,\r\n * so it is suitable only for single shot recognition\r\n * like command or query. For long-running recognition, use StartContinuousRecognitionAsync() instead.\r\n * @member SpeechRecognizer.prototype.recognizeOnceAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the SpeechRecognitionResult.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public recognizeOnceAsync(cb?: (e: SpeechRecognitionResult) => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.recognizeOnceAsyncImpl(RecognitionMode.Interactive), cb, err);\r\n }\r\n\r\n /**\r\n * Starts speech recognition, until stopContinuousRecognitionAsync() is called.\r\n * User must subscribe to events to receive recognition results.\r\n * @member SpeechRecognizer.prototype.startContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.startContinuousRecognitionAsyncImpl(RecognitionMode.Conversation), cb, err);\r\n }\r\n\r\n /**\r\n * Stops continuous speech recognition.\r\n * @member SpeechRecognizer.prototype.stopContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has stopped.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.stopContinuousRecognitionAsyncImpl(), cb, err);\r\n }\r\n\r\n /**\r\n * Starts speech recognition with keyword spotting, until\r\n * stopKeywordRecognitionAsync() is called.\r\n * User must subscribe to events to receive recognition results.\r\n * Note: Key word spotting functionality is only available on the\r\n * Speech Devices SDK. This functionality is currently not included in the SDK itself.\r\n * @member SpeechRecognizer.prototype.startKeywordRecognitionAsync\r\n * @function\r\n * @public\r\n * @param {KeywordRecognitionModel} model The keyword recognition model that\r\n * specifies the keyword to be recognized.\r\n * @param cb - Callback invoked once the recognition has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startKeywordRecognitionAsync(model: KeywordRecognitionModel, cb?: () => void, err?: (e: string) => void): void {\r\n Contracts.throwIfNull(model, \"model\");\r\n\r\n if (!!err) {\r\n err(\"Not yet implemented.\");\r\n }\r\n }\r\n\r\n /**\r\n * Stops continuous speech recognition.\r\n * Note: Key word spotting functionality is only available on the\r\n * Speech Devices SDK. This functionality is currently not included in the SDK itself.\r\n * @member SpeechRecognizer.prototype.stopKeywordRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has stopped.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopKeywordRecognitionAsync(cb?: () => void): void {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }\r\n\r\n /**\r\n * closes all external resources held by an instance of this class.\r\n * @member SpeechRecognizer.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, errorCb?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n marshalPromiseToCallbacks(this.dispose(true), cb, errorCb);\r\n }\r\n\r\n /**\r\n * Disposes any resources held by the object.\r\n * @member SpeechRecognizer.prototype.dispose\r\n * @function\r\n * @public\r\n * @param {boolean} disposing - true if disposing the object.\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedRecognizer) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n this.privDisposedRecognizer = true;\r\n await this.implRecognizerStop();\r\n }\r\n\r\n await super.dispose(disposing);\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n protected createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n const configImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n return new SpeechServiceRecognizer(authentication, connectionFactory, configImpl, recognizerConfig, this);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines contents of speech synthesis bookmark event.\r\n * @class SpeechSynthesisBookmarkEventArgs\r\n * Added in version 1.16.0\r\n */\r\nexport class SpeechSynthesisBookmarkEventArgs {\r\n private privAudioOffset: number;\r\n private privText: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {number} audioOffset - The audio offset.\r\n * @param {string} text - The bookmark text.\r\n */\r\n public constructor(audioOffset: number, text: string) {\r\n this.privAudioOffset = audioOffset;\r\n this.privText = text;\r\n }\r\n\r\n /**\r\n * Specifies the audio offset.\r\n * @member SpeechSynthesisBookmarkEventArgs.prototype.audioOffset\r\n * @function\r\n * @public\r\n * @returns {number} the audio offset.\r\n */\r\n public get audioOffset(): number {\r\n return this.privAudioOffset;\r\n }\r\n\r\n /**\r\n * Specifies the bookmark.\r\n * @member SpeechSynthesisBookmarkEventArgs.prototype.text\r\n * @function\r\n * @public\r\n * @returns {string} the bookmark text.\r\n */\r\n public get text(): string {\r\n return this.privText;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the boundary type of speech synthesis boundary event.\r\n * @class SpeechSynthesisBoundaryType\r\n * Added in version 1.21.0\r\n */\r\nexport enum SpeechSynthesisBoundaryType {\r\n /**\r\n * Indicates the boundary text is a word.\r\n * @member SpeechSynthesisBoundaryType.Word\r\n */\r\n Word = \"WordBoundary\",\r\n\r\n /**\r\n * Indicates the boundary text is a punctuation.\r\n * @member SpeechSynthesisBoundaryType.Punctuation\r\n */\r\n Punctuation = \"PunctuationBoundary\",\r\n\r\n /**\r\n * Indicates the boundary text is a sentence.\r\n * @member SpeechSynthesisBoundaryType.Sentence\r\n */\r\n Sentence = \"SentenceBoundary\"\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SpeechSynthesisResult } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines contents of speech synthesis events.\r\n * @class SpeechSynthesisEventArgs\r\n * Added in version 1.11.0\r\n */\r\nexport class SpeechSynthesisEventArgs {\r\n private readonly privResult: SpeechSynthesisResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {SpeechSynthesisResult} result - The speech synthesis result.\r\n */\r\n public constructor(result: SpeechSynthesisResult) {\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Specifies the synthesis result.\r\n * @member SpeechSynthesisEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {SpeechSynthesisResult} the synthesis result.\r\n */\r\n public get result(): SpeechSynthesisResult {\r\n return this.privResult;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Define speech synthesis audio output formats.\r\n * @enum SpeechSynthesisOutputFormat\r\n * Updated in version 1.17.0\r\n */\r\nexport enum SpeechSynthesisOutputFormat {\r\n /**\r\n * raw-8khz-8bit-mono-mulaw\r\n * @member SpeechSynthesisOutputFormat.Raw8Khz8BitMonoMULaw,\r\n */\r\n Raw8Khz8BitMonoMULaw,\r\n\r\n /**\r\n * riff-16khz-16kbps-mono-siren\r\n * @note Unsupported by the service. Do not use this value.\r\n * @member SpeechSynthesisOutputFormat.Riff16Khz16KbpsMonoSiren\r\n */\r\n Riff16Khz16KbpsMonoSiren,\r\n\r\n /**\r\n * audio-16khz-16kbps-mono-siren\r\n * @note Unsupported by the service. Do not use this value.\r\n * @member SpeechSynthesisOutputFormat.Audio16Khz16KbpsMonoSiren\r\n */\r\n Audio16Khz16KbpsMonoSiren,\r\n\r\n /**\r\n * audio-16khz-32kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio16Khz32KBitRateMonoMp3\r\n */\r\n Audio16Khz32KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-16khz-128kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio16Khz128KBitRateMonoMp3\r\n */\r\n Audio16Khz128KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-16khz-64kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio16Khz64KBitRateMonoMp3\r\n */\r\n Audio16Khz64KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-24khz-48kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio24Khz48KBitRateMonoMp3\r\n */\r\n Audio24Khz48KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-24khz-96kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio24Khz96KBitRateMonoMp3\r\n */\r\n Audio24Khz96KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-24khz-160kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio24Khz160KBitRateMonoMp3\r\n */\r\n Audio24Khz160KBitRateMonoMp3,\r\n\r\n /**\r\n * raw-16khz-16bit-mono-truesilk\r\n * @member SpeechSynthesisOutputFormat.Raw16Khz16BitMonoTrueSilk\r\n */\r\n Raw16Khz16BitMonoTrueSilk,\r\n\r\n /**\r\n * riff-16khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Riff16Khz16BitMonoPcm\r\n */\r\n Riff16Khz16BitMonoPcm,\r\n\r\n /**\r\n * riff-8khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Riff8Khz16BitMonoPcm\r\n */\r\n Riff8Khz16BitMonoPcm,\r\n\r\n /**\r\n * riff-24khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm\r\n */\r\n Riff24Khz16BitMonoPcm,\r\n\r\n /**\r\n * riff-8khz-8bit-mono-mulaw\r\n * @member SpeechSynthesisOutputFormat.Riff8Khz8BitMonoMULaw\r\n */\r\n Riff8Khz8BitMonoMULaw,\r\n\r\n /**\r\n * raw-16khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Raw16Khz16BitMonoPcm\r\n */\r\n Raw16Khz16BitMonoPcm,\r\n\r\n /**\r\n * raw-24khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Raw24Khz16BitMonoPcm\r\n */\r\n Raw24Khz16BitMonoPcm,\r\n\r\n /**\r\n * raw-8khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Raw8Khz16BitMonoPcm\r\n */\r\n Raw8Khz16BitMonoPcm,\r\n\r\n /**\r\n * ogg-16khz-16bit-mono-opus\r\n * @member SpeechSynthesisOutputFormat.Ogg16Khz16BitMonoOpus\r\n */\r\n Ogg16Khz16BitMonoOpus,\r\n\r\n /**\r\n * ogg-24khz-16bit-mono-opus\r\n * @member SpeechSynthesisOutputFormat.Ogg24Khz16BitMonoOpus\r\n */\r\n Ogg24Khz16BitMonoOpus,\r\n\r\n /**\r\n * raw-48khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Raw48Khz16BitMonoPcm\r\n */\r\n Raw48Khz16BitMonoPcm,\r\n\r\n /**\r\n * riff-48khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Riff48Khz16BitMonoPcm\r\n */\r\n\r\n Riff48Khz16BitMonoPcm,\r\n /**\r\n * audio-48khz-96kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio48Khz96KBitRateMonoMp3\r\n */\r\n Audio48Khz96KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-48khz-192kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio48Khz192KBitRateMonoMp3\r\n */\r\n Audio48Khz192KBitRateMonoMp3,\r\n\r\n /**\r\n * ogg-48khz-16bit-mono-opus\r\n * Added in version 1.16.0\r\n * @member SpeechSynthesisOutputFormat.Ogg48Khz16BitMonoOpus\r\n */\r\n Ogg48Khz16BitMonoOpus,\r\n\r\n /**\r\n * webm-16khz-16bit-mono-opus\r\n * Added in version 1.16.0\r\n * @member SpeechSynthesisOutputFormat.Webm16Khz16BitMonoOpus\r\n */\r\n Webm16Khz16BitMonoOpus,\r\n\r\n /**\r\n * webm-24khz-16bit-mono-opus\r\n * Added in version 1.16.0\r\n * @member SpeechSynthesisOutputFormat.Webm24Khz16BitMonoOpus\r\n */\r\n Webm24Khz16BitMonoOpus,\r\n\r\n /**\r\n * raw-24khz-16bit-mono-truesilk\r\n * Added in version 1.17.0\r\n * @member SpeechSynthesisOutputFormat.Raw24Khz16BitMonoTrueSilk\r\n */\r\n Raw24Khz16BitMonoTrueSilk,\r\n\r\n /**\r\n * raw-8khz-8bit-mono-alaw\r\n * Added in version 1.17.0\r\n * @member SpeechSynthesisOutputFormat.Raw8Khz8BitMonoALaw\r\n */\r\n Raw8Khz8BitMonoALaw,\r\n\r\n /**\r\n * riff-8khz-8bit-mono-alaw\r\n * Added in version 1.17.0\r\n * @member SpeechSynthesisOutputFormat.Riff8Khz8BitMonoALaw\r\n */\r\n Riff8Khz8BitMonoALaw,\r\n\r\n /**\r\n * webm-24khz-16bit-24kbps-mono-opus\r\n * Audio compressed by OPUS codec in a webm container, with bitrate of 24kbps, optimized for IoT scenario.\r\n * Added in version 1.19.0\r\n * @member SpeechSynthesisOutputFormat.Webm24Khz16Bit24KbpsMonoOpus\r\n */\r\n Webm24Khz16Bit24KbpsMonoOpus,\r\n\r\n /**\r\n * audio-16khz-16bit-32kbps-mono-opus\r\n * Audio compressed by OPUS codec without container, with bitrate of 32kbps.\r\n * Added in version 1.20.0\r\n * @member SpeechSynthesisOutputFormat.Audio16Khz16Bit32KbpsMonoOpus\r\n */\r\n Audio16Khz16Bit32KbpsMonoOpus,\r\n\r\n /**\r\n * audio-24khz-16bit-48kbps-mono-opus\r\n * Audio compressed by OPUS codec without container, with bitrate of 48kbps.\r\n * Added in version 1.20.0\r\n * @member SpeechSynthesisOutputFormat.Audio24Khz16Bit48KbpsMonoOpus\r\n */\r\n Audio24Khz16Bit48KbpsMonoOpus,\r\n\r\n /**\r\n * audio-24khz-16bit-24kbps-mono-opus\r\n * Audio compressed by OPUS codec without container, with bitrate of 24kbps.\r\n * Added in version 1.20.0\r\n * @member SpeechSynthesisOutputFormat.Audio24Khz16Bit24KbpsMonoOpus\r\n */\r\n Audio24Khz16Bit24KbpsMonoOpus,\r\n\r\n /**\r\n * raw-22050hz-16bit-mono-pcm\r\n * Raw PCM audio at 22050Hz sampling rate and 16-bit depth.\r\n * Added in version 1.22.0\r\n * @member SpeechSynthesisOutputFormat.Raw22050Hz16BitMonoPcm\r\n */\r\n Raw22050Hz16BitMonoPcm,\r\n\r\n /**\r\n * riff-22050hz-16bit-mono-pcm\r\n * PCM audio at 22050Hz sampling rate and 16-bit depth, with RIFF header.\r\n * Added in version 1.22.0\r\n * @member SpeechSynthesisOutputFormat.Riff22050Hz16BitMonoPcm\r\n */\r\n Riff22050Hz16BitMonoPcm,\r\n\r\n /**\r\n * raw-44100hz-16bit-mono-pcm\r\n * Raw PCM audio at 44100Hz sampling rate and 16-bit depth.\r\n * Added in version 1.22.0\r\n * @member SpeechSynthesisOutputFormat.Raw44100Hz16BitMonoPcm\r\n */\r\n Raw44100Hz16BitMonoPcm,\r\n\r\n /**\r\n * riff-44100hz-16bit-mono-pcm\r\n * PCM audio at 44100Hz sampling rate and 16-bit depth, with RIFF header.\r\n * Added in version 1.22.0\r\n * @member SpeechSynthesisOutputFormat.Riff44100Hz16BitMonoPcm\r\n */\r\n Riff44100Hz16BitMonoPcm\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n PropertyCollection,\r\n ResultReason,\r\n SynthesisResult\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Defines result of speech synthesis.\r\n * @class SpeechSynthesisResult\r\n * Added in version 1.11.0\r\n */\r\nexport class SpeechSynthesisResult extends SynthesisResult {\r\n private readonly privAudioData: ArrayBuffer;\r\n private readonly privAudioDuration: number;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {ArrayBuffer} audioData - The synthesized audio binary.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n * @param {number} audioDuration - The audio duration.\r\n */\r\n public constructor(resultId?: string, reason?: ResultReason, audioData?: ArrayBuffer,\r\n errorDetails?: string, properties?: PropertyCollection, audioDuration?: number) {\r\n super(resultId, reason, errorDetails, properties);\r\n this.privAudioData = audioData;\r\n this.privAudioDuration = audioDuration;\r\n }\r\n\r\n /**\r\n * The synthesized audio data\r\n * @member SpeechSynthesisResult.prototype.audioData\r\n * @function\r\n * @public\r\n * @returns {ArrayBuffer} The synthesized audio data.\r\n */\r\n public get audioData(): ArrayBuffer {\r\n return this.privAudioData;\r\n }\r\n\r\n /**\r\n * The time duration of synthesized audio, in ticks (100 nanoseconds).\r\n * @member SpeechSynthesisResult.prototype.audioDuration\r\n * @function\r\n * @public\r\n * @returns {number} The time duration of synthesized audio.\r\n */\r\n public get audioDuration(): number {\r\n return this.privAudioDuration;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines contents of speech synthesis viseme event.\r\n * @class SpeechSynthesisVisemeEventArgs\r\n * Added in version 1.16.0\r\n */\r\nexport class SpeechSynthesisVisemeEventArgs {\r\n private privAudioOffset: number;\r\n private privVisemeId: number;\r\n private privAnimation: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {number} audioOffset - The audio offset.\r\n * @param {number} visemeId - The viseme ID.\r\n * @param {string} animation - The animation, could be in svg or other format.\r\n */\r\n public constructor(audioOffset: number, visemeId: number, animation: string) {\r\n this.privAudioOffset = audioOffset;\r\n this.privVisemeId = visemeId;\r\n this.privAnimation = animation;\r\n }\r\n\r\n /**\r\n * Specifies the audio offset.\r\n * @member SpeechSynthesisVisemeEventArgs.prototype.audioOffset\r\n * @function\r\n * @public\r\n * @returns {number} the audio offset.\r\n */\r\n public get audioOffset(): number {\r\n return this.privAudioOffset;\r\n }\r\n\r\n /**\r\n * Specifies the viseme ID.\r\n * @member SpeechSynthesisVisemeEventArgs.prototype.visemeId\r\n * @function\r\n * @public\r\n * @returns {number} the viseme ID.\r\n */\r\n public get visemeId(): number {\r\n return this.privVisemeId;\r\n }\r\n\r\n /**\r\n * Specifies the animation.\r\n * @member SpeechSynthesisVisemeEventArgs.prototype.animation\r\n * @function\r\n * @public\r\n * @returns {string} the animation, could be in svg or other format.\r\n */\r\n public get animation(): string {\r\n return this.privAnimation;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SpeechSynthesisBoundaryType } from \"./SpeechSynthesisBoundaryType.js\";\r\n\r\n/**\r\n * Defines contents of speech synthesis word boundary event.\r\n * @class SpeechSynthesisWordBoundaryEventArgs\r\n * Added in version 1.11.0\r\n */\r\nexport class SpeechSynthesisWordBoundaryEventArgs {\r\n private readonly privAudioOffset: number;\r\n private readonly privDuration: number;\r\n private readonly privText: string;\r\n private readonly privWordLength: number;\r\n private readonly privTextOffset: number;\r\n private readonly privBoundaryType: SpeechSynthesisBoundaryType;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {number} audioOffset - The audio offset.\r\n * @param {number} duration - The audio duration.\r\n * @param {string} text - The text.\r\n * @param {number} wordLength - The length of the word.\r\n * @param {number} textOffset - The text offset.\r\n * @param {SpeechSynthesisBoundaryType} boundaryType - The boundary type\r\n */\r\n public constructor(audioOffset: number, duration: number, text: string, wordLength: number,\r\n textOffset: number, boundaryType: SpeechSynthesisBoundaryType) {\r\n this.privAudioOffset = audioOffset;\r\n this.privDuration = duration;\r\n this.privText = text;\r\n this.privWordLength = wordLength;\r\n this.privTextOffset = textOffset;\r\n this.privBoundaryType = boundaryType;\r\n }\r\n\r\n /**\r\n * Specifies the audio offset.\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.audioOffset\r\n * @function\r\n * @public\r\n * @returns {number} the audio offset.\r\n */\r\n public get audioOffset(): number {\r\n return this.privAudioOffset;\r\n }\r\n\r\n /**\r\n * Specifies the duration, in ticks (100 nanoseconds).\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.duration\r\n * @function\r\n * @public\r\n * @returns {number} Duration in 100 nanosecond increments.\r\n */\r\n public get duration(): number {\r\n return this.privDuration;\r\n }\r\n\r\n /**\r\n * Specifies the text of the word boundary event.\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.text\r\n * @function\r\n * @public\r\n * @returns {string} the text.\r\n */\r\n public get text(): string {\r\n return this.privText;\r\n }\r\n\r\n /**\r\n * Specifies the word length\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.wordLength\r\n * @function\r\n * @public\r\n * @returns {number} the word length\r\n */\r\n public get wordLength(): number {\r\n return this.privWordLength;\r\n }\r\n\r\n /**\r\n * Specifies the text offset.\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.textOffset\r\n * @function\r\n * @public\r\n * @returns {number} the text offset.\r\n */\r\n public get textOffset(): number {\r\n return this.privTextOffset;\r\n }\r\n\r\n /**\r\n * Specifies the boundary type.\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.boundaryType\r\n * @function\r\n * @public\r\n * @returns {SpeechSynthesisBoundaryType} the boundary type.\r\n */\r\n public get boundaryType(): SpeechSynthesisBoundaryType {\r\n return this.privBoundaryType;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable @typescript-eslint/no-empty-function */\r\n\r\nimport { PathLike } from \"fs\";\r\nimport { IRestResponse } from \"../common.browser/RestMessageAdapter.js\";\r\nimport {\r\n IAuthentication,\r\n ISynthesisConnectionFactory,\r\n SpeechSynthesisConnectionFactory,\r\n SynthesisAdapterBase,\r\n SpeechSynthesisAdapter,\r\n SynthesisRestAdapter,\r\n SynthesizerConfig,\r\n} from \"../common.speech/Exports.js\";\r\nimport {\r\n createNoDashGuid,\r\n marshalPromiseToCallbacks,\r\n} from \"../common/Exports.js\";\r\nimport { AudioOutputConfigImpl } from \"./Audio/AudioConfig.js\";\r\nimport { AudioFileWriter } from \"./Audio/AudioFileWriter.js\";\r\nimport { AudioOutputFormatImpl } from \"./Audio/AudioOutputFormat.js\";\r\nimport {\r\n PullAudioOutputStreamImpl,\r\n PushAudioOutputStreamImpl\r\n} from \"./Audio/AudioOutputStream.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n AudioOutputStream,\r\n AutoDetectSourceLanguageConfig,\r\n PropertyId,\r\n PullAudioOutputStream,\r\n PushAudioOutputStreamCallback,\r\n SpeechConfig,\r\n SpeechSynthesisBookmarkEventArgs,\r\n SpeechSynthesisEventArgs,\r\n SpeechSynthesisOutputFormat,\r\n SpeechSynthesisResult,\r\n SpeechSynthesisVisemeEventArgs,\r\n SpeechSynthesisWordBoundaryEventArgs,\r\n SynthesisVoicesResult,\r\n Synthesizer\r\n} from \"./Exports.js\";\r\nimport { SpeechConfigImpl } from \"./SpeechConfig.js\";\r\nimport { SynthesisRequest } from \"./Synthesizer.js\";\r\n\r\n/**\r\n * Defines the class SpeechSynthesizer for text to speech.\r\n * Updated in version 1.16.0\r\n * @class SpeechSynthesizer\r\n */\r\nexport class SpeechSynthesizer extends Synthesizer {\r\n protected audioConfig: AudioConfig;\r\n\r\n /**\r\n * Defines event handler for synthesis start events.\r\n * @member SpeechSynthesizer.prototype.synthesisStarted\r\n * @function\r\n * @public\r\n */\r\n public synthesisStarted: (sender: SpeechSynthesizer, event: SpeechSynthesisEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for synthesizing events.\r\n * @member SpeechSynthesizer.prototype.synthesizing\r\n * @function\r\n * @public\r\n */\r\n public synthesizing: (sender: SpeechSynthesizer, event: SpeechSynthesisEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for synthesis completed events.\r\n * @member SpeechSynthesizer.prototype.synthesisCompleted\r\n * @function\r\n * @public\r\n */\r\n public synthesisCompleted: (sender: SpeechSynthesizer, event: SpeechSynthesisEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for synthesis cancelled events.\r\n * @member SpeechSynthesizer.prototype.SynthesisCanceled\r\n * @function\r\n * @public\r\n */\r\n public SynthesisCanceled: (sender: SpeechSynthesizer, event: SpeechSynthesisEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for word boundary events\r\n * @member SpeechSynthesizer.prototype.wordBoundary\r\n * @function\r\n * @public\r\n */\r\n public wordBoundary: (sender: SpeechSynthesizer, event: SpeechSynthesisWordBoundaryEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for bookmark reached events\r\n * Added in version 1.16.0\r\n * @member SpeechSynthesizer.prototype.bookmarkReached\r\n * @function\r\n * @public\r\n */\r\n public bookmarkReached: (sender: SpeechSynthesizer, event: SpeechSynthesisBookmarkEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for viseme received event\r\n * Added in version 1.16.0\r\n * @member SpeechSynthesizer.prototype.visemeReceived\r\n * @function\r\n * @public\r\n */\r\n public visemeReceived: (sender: SpeechSynthesizer, event: SpeechSynthesisVisemeEventArgs) => void;\r\n\r\n /**\r\n * SpeechSynthesizer constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - An set of initial properties for this synthesizer.\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the synthesizer.\r\n */\r\n public constructor(speechConfig: SpeechConfig, audioConfig?: AudioConfig) {\r\n super(speechConfig);\r\n\r\n if (audioConfig !== null) {\r\n if (audioConfig === undefined) {\r\n this.audioConfig = (typeof window === \"undefined\") ? undefined : AudioConfig.fromDefaultSpeakerOutput();\r\n } else {\r\n this.audioConfig = audioConfig;\r\n }\r\n }\r\n\r\n this.privConnectionFactory = new SpeechSynthesisConnectionFactory();\r\n this.implCommonSynthesizeSetup();\r\n }\r\n\r\n /**\r\n * SpeechSynthesizer constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - an set of initial properties for this synthesizer\r\n * @param {AutoDetectSourceLanguageConfig} autoDetectSourceLanguageConfig - An source language detection configuration associated with the synthesizer\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the synthesizer\r\n */\r\n public static FromConfig(speechConfig: SpeechConfig, autoDetectSourceLanguageConfig: AutoDetectSourceLanguageConfig, audioConfig?: AudioConfig): SpeechSynthesizer {\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n autoDetectSourceLanguageConfig.properties.mergeTo(speechConfigImpl.properties);\r\n return new SpeechSynthesizer(speechConfig, audioConfig);\r\n }\r\n\r\n /**\r\n * Executes speech synthesis on plain text.\r\n * The task returns the synthesis result.\r\n * @member SpeechSynthesizer.prototype.speakTextAsync\r\n * @function\r\n * @public\r\n * @param text - Text to be synthesized.\r\n * @param cb - Callback that received the SpeechSynthesisResult.\r\n * @param err - Callback invoked in case of an error.\r\n * @param stream - AudioOutputStream to receive the synthesized audio.\r\n */\r\n public speakTextAsync(text: string, cb?: (e: SpeechSynthesisResult) => void, err?: (e: string) => void, stream?: AudioOutputStream | PushAudioOutputStreamCallback | PathLike): void {\r\n this.speakImpl(text, false, cb, err, stream);\r\n }\r\n\r\n /**\r\n * Executes speech synthesis on SSML.\r\n * The task returns the synthesis result.\r\n * @member SpeechSynthesizer.prototype.speakSsmlAsync\r\n * @function\r\n * @public\r\n * @param ssml - SSML to be synthesized.\r\n * @param cb - Callback that received the SpeechSynthesisResult.\r\n * @param err - Callback invoked in case of an error.\r\n * @param stream - AudioOutputStream to receive the synthesized audio.\r\n */\r\n public speakSsmlAsync(ssml: string, cb?: (e: SpeechSynthesisResult) => void, err?: (e: string) => void, stream?: AudioOutputStream | PushAudioOutputStreamCallback | PathLike): void {\r\n this.speakImpl(ssml, true, cb, err, stream);\r\n }\r\n\r\n /**\r\n * Get list of synthesis voices available.\r\n * The task returns the synthesis voice result.\r\n * @member SpeechSynthesizer.prototype.getVoicesAsync\r\n * @function\r\n * @async\r\n * @public\r\n * @param locale - Locale of voices in BCP-47 format; if left empty, get all available voices.\r\n * @return {Promise} - Promise of a SynthesisVoicesResult.\r\n */\r\n public async getVoicesAsync(locale: string = \"\"): Promise {\r\n return this.getVoices(locale);\r\n }\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member SpeechSynthesizer.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, err?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n\r\n marshalPromiseToCallbacks(this.dispose(true), cb, err);\r\n }\r\n\r\n /**\r\n * @Internal\r\n * Do not use externally, object returned will change without warning or notice.\r\n */\r\n public get internalData(): object {\r\n return this.privAdapter;\r\n }\r\n\r\n //\r\n // ################################################################################################################\r\n // IMPLEMENTATION.\r\n // ################################################################################################################\r\n //\r\n\r\n // Creates the synthesis adapter\r\n protected createSynthesisAdapter(\r\n authentication: IAuthentication,\r\n connectionFactory: ISynthesisConnectionFactory,\r\n synthesizerConfig: SynthesizerConfig): SynthesisAdapterBase {\r\n return new SpeechSynthesisAdapter(authentication, connectionFactory,\r\n synthesizerConfig, this, this.audioConfig as AudioOutputConfigImpl);\r\n }\r\n\r\n protected createRestSynthesisAdapter(\r\n authentication: IAuthentication,\r\n synthesizerConfig: SynthesizerConfig): SynthesisRestAdapter {\r\n return new SynthesisRestAdapter(synthesizerConfig, authentication);\r\n }\r\n\r\n protected implCommonSynthesizeSetup(): void {\r\n super.implCommonSynthesizeSetup();\r\n\r\n this.privAdapter.audioOutputFormat = AudioOutputFormatImpl.fromSpeechSynthesisOutputFormat(\r\n SpeechSynthesisOutputFormat[this.properties.getProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, undefined) as keyof typeof SpeechSynthesisOutputFormat]\r\n );\r\n }\r\n\r\n protected speakImpl(text: string, IsSsml: boolean, cb?: (e: SpeechSynthesisResult) => void, err?: (e: string) => void, dataStream?: AudioOutputStream | PushAudioOutputStreamCallback | PathLike): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n const requestId = createNoDashGuid();\r\n let audioDestination;\r\n if (dataStream instanceof PushAudioOutputStreamCallback) {\r\n audioDestination = new PushAudioOutputStreamImpl(dataStream);\r\n } else if (dataStream instanceof PullAudioOutputStream) {\r\n audioDestination = dataStream as PullAudioOutputStreamImpl;\r\n } else if (dataStream !== undefined) {\r\n audioDestination = new AudioFileWriter(dataStream as PathLike);\r\n } else {\r\n audioDestination = undefined;\r\n }\r\n this.synthesisRequestQueue.enqueue(new SynthesisRequest(requestId, text, IsSsml, (e: SpeechSynthesisResult): void => {\r\n this.privSynthesizing = false;\r\n if (!!cb) {\r\n try {\r\n cb(e);\r\n } catch (e) {\r\n if (!!err) {\r\n err(e as string);\r\n }\r\n }\r\n }\r\n cb = undefined;\r\n /* eslint-disable no-empty */\r\n this.adapterSpeak().catch((): void => { });\r\n\r\n }, (e: string): void => {\r\n if (!!err) {\r\n err(e);\r\n }\r\n }, audioDestination));\r\n\r\n /* eslint-disable no-empty-function */\r\n this.adapterSpeak().catch((): void => { });\r\n\r\n } catch (error) {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n\r\n // Destroy the synthesizer.\r\n /* eslint-disable no-empty */\r\n this.dispose(true).catch((): void => { });\r\n }\r\n }\r\n\r\n protected async getVoices(locale: string): Promise {\r\n const requestId = createNoDashGuid();\r\n const response: IRestResponse = await this.privRestAdapter.getVoicesList(requestId);\r\n if (response.ok && Array.isArray(response.json)) {\r\n let json = response.json;\r\n if (!!locale && locale.length > 0) {\r\n json = json.filter((item: { Locale: string }): boolean => !!item.Locale && item.Locale.toLowerCase() === locale.toLowerCase() );\r\n }\r\n return new SynthesisVoicesResult(requestId, json, undefined);\r\n } else {\r\n return new SynthesisVoicesResult(requestId, undefined, `Error: ${response.status}: ${response.statusText}`);\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport {\r\n ForceDictationPropertyName,\r\n OutputFormatPropertyName,\r\n ServicePropertiesPropertyName\r\n} from \"../common.speech/Exports.js\";\r\nimport { IStringDictionary } from \"../common/Exports.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n OutputFormat,\r\n ProfanityOption,\r\n PropertyCollection,\r\n PropertyId,\r\n SpeechConfig,\r\n SpeechSynthesisOutputFormat,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Speech translation configuration.\r\n * @class SpeechTranslationConfig\r\n */\r\nexport abstract class SpeechTranslationConfig extends SpeechConfig {\r\n\r\n /**\r\n * Creates an instance of recognizer config.\r\n */\r\n protected constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n * Static instance of SpeechTranslationConfig returned by passing a subscription key and service region.\r\n * @member SpeechTranslationConfig.fromSubscription\r\n * @function\r\n * @public\r\n * @param {string} subscriptionKey - The subscription key.\r\n * @param {string} region - The region name (see the region page).\r\n * @returns {SpeechTranslationConfig} The speech translation config.\r\n */\r\n public static fromSubscription(subscriptionKey: string, region: string): SpeechTranslationConfig {\r\n Contracts.throwIfNullOrWhitespace(subscriptionKey, \"subscriptionKey\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const ret: SpeechTranslationConfigImpl = new SpeechTranslationConfigImpl();\r\n ret.properties.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n ret.properties.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n return ret;\r\n }\r\n\r\n /**\r\n * Static instance of SpeechTranslationConfig returned by passing authorization token and service region.\r\n * Note: The caller needs to ensure that the authorization token is valid. Before the authorization token\r\n * expires, the caller needs to refresh it by setting the property authorizationToken with a new\r\n * valid token. Otherwise, all the recognizers created by this SpeechTranslationConfig instance\r\n * will encounter errors during recognition.\r\n * As configuration values are copied when creating a new recognizer, the new token value will not apply\r\n * to recognizers that have already been created.\r\n * For recognizers that have been created before, you need to set authorization token of the corresponding recognizer\r\n * to refresh the token. Otherwise, the recognizers will encounter errors during recognition.\r\n * @member SpeechTranslationConfig.fromAuthorizationToken\r\n * @function\r\n * @public\r\n * @param {string} authorizationToken - The authorization token.\r\n * @param {string} region - The region name (see the region page).\r\n * @returns {SpeechTranslationConfig} The speech translation config.\r\n */\r\n public static fromAuthorizationToken(authorizationToken: string, region: string): SpeechTranslationConfig {\r\n Contracts.throwIfNullOrWhitespace(authorizationToken, \"authorizationToken\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const ret: SpeechTranslationConfigImpl = new SpeechTranslationConfigImpl();\r\n ret.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, authorizationToken);\r\n ret.properties.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n return ret;\r\n }\r\n\r\n /**\r\n * Creates an instance of the speech config with specified host and subscription key.\r\n * This method is intended only for users who use a non-default service host. Standard resource path will be assumed.\r\n * For services with a non-standard resource path or no path at all, use fromEndpoint instead.\r\n * Note: Query parameters are not allowed in the host URI and must be set by other APIs.\r\n * Note: To use an authorization token with fromHost, use fromHost(URL),\r\n * and then set the AuthorizationToken property on the created SpeechConfig instance.\r\n * Note: Added in version 1.9.0.\r\n * @member SpeechConfig.fromHost\r\n * @function\r\n * @public\r\n * @param {URL} host - The service endpoint to connect to. Format is \"protocol://host:port\" where \":port\" is optional.\r\n * @param {string} subscriptionKey - The subscription key. If a subscription key is not specified, an authorization token must be set.\r\n * @returns {SpeechConfig} A speech factory instance.\r\n */\r\n public static fromHost(hostName: URL, subscriptionKey?: string): SpeechConfig {\r\n Contracts.throwIfNull(hostName, \"hostName\");\r\n\r\n const speechImpl: SpeechTranslationConfigImpl = new SpeechTranslationConfigImpl();\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Host, hostName.protocol + \"//\" + hostName.hostname + (hostName.port === \"\" ? \"\" : \":\" + hostName.port));\r\n\r\n if (undefined !== subscriptionKey) {\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n }\r\n return speechImpl;\r\n }\r\n\r\n /**\r\n * Creates an instance of the speech translation config with specified endpoint and subscription key.\r\n * This method is intended only for users who use a non-standard service endpoint or paramters.\r\n * Note: The query properties specified in the endpoint URL are not changed, even if they are\r\n * set by any other APIs. For example, if language is defined in the uri as query parameter\r\n * \"language=de-DE\", and also set by the speechRecognitionLanguage property, the language\r\n * setting in uri takes precedence, and the effective language is \"de-DE\".\r\n * Only the properties that are not specified in the endpoint URL can be set by other APIs.\r\n * Note: To use authorization token with fromEndpoint, pass an empty string to the subscriptionKey in the\r\n * fromEndpoint method, and then set authorizationToken=\"token\" on the created SpeechConfig instance to\r\n * use the authorization token.\r\n * @member SpeechTranslationConfig.fromEndpoint\r\n * @function\r\n * @public\r\n * @param {URL} endpoint - The service endpoint to connect to.\r\n * @param {string} subscriptionKey - The subscription key.\r\n * @returns {SpeechTranslationConfig} A speech config instance.\r\n */\r\n public static fromEndpoint(endpoint: URL, subscriptionKey: string): SpeechTranslationConfig {\r\n Contracts.throwIfNull(endpoint, \"endpoint\");\r\n Contracts.throwIfNull(subscriptionKey, \"subscriptionKey\");\r\n\r\n const ret: SpeechTranslationConfigImpl = new SpeechTranslationConfigImpl();\r\n ret.properties.setProperty(PropertyId.SpeechServiceConnection_Endpoint, endpoint.href);\r\n ret.properties.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n return ret;\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token.\r\n * Note: The caller needs to ensure that the authorization token is valid. Before the authorization token\r\n * expires, the caller needs to refresh it by calling this setter with a new valid token.\r\n * @member SpeechTranslationConfig.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public abstract set authorizationToken(value: string);\r\n\r\n /**\r\n * Gets/Sets the speech recognition language.\r\n * @member SpeechTranslationConfig.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public abstract set speechRecognitionLanguage(value: string);\r\n\r\n /**\r\n * Add a (text) target language to translate into.\r\n * @member SpeechTranslationConfig.prototype.addTargetLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The language such as de-DE\r\n */\r\n public abstract addTargetLanguage(value: string): void;\r\n\r\n /**\r\n * Gets the (text) target language to translate into.\r\n * @member SpeechTranslationConfig.prototype.targetLanguages\r\n * @function\r\n * @public\r\n * @param {string} value - The language such as de-DE\r\n */\r\n public abstract get targetLanguages(): string[];\r\n\r\n /**\r\n * Gets the selected voice name.\r\n * @member SpeechTranslationConfig.prototype.voiceName\r\n * @function\r\n * @public\r\n * @returns {string} The voice name.\r\n */\r\n public abstract get voiceName(): string;\r\n\r\n /**\r\n * Gets/Sets voice of the translated language, enable voice synthesis output.\r\n * @member SpeechTranslationConfig.prototype.voiceName\r\n * @function\r\n * @public\r\n * @param {string} value - The name of the voice.\r\n */\r\n public abstract set voiceName(value: string);\r\n\r\n /**\r\n * Sets a named property as value\r\n * @member SpeechTranslationConfig.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string | PropertyId} name - The name of the property to set.\r\n * @param {string} value - The new value of the property.\r\n */\r\n public abstract setProperty(name: string | PropertyId, value: string): void;\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member SpeechTranslationConfig.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * @private\r\n * @class SpeechTranslationConfigImpl\r\n */\r\nexport class SpeechTranslationConfigImpl extends SpeechTranslationConfig {\r\n\r\n private privSpeechProperties: PropertyCollection;\r\n\r\n public constructor() {\r\n super();\r\n this.privSpeechProperties = new PropertyCollection();\r\n this.outputFormat = OutputFormat.Simple;\r\n }\r\n /**\r\n * Gets/Sets the authorization token.\r\n * If this is set, subscription key is ignored.\r\n * User needs to make sure the provided authorization token is valid and not expired.\r\n * @member SpeechTranslationConfigImpl.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public set authorizationToken(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceAuthorization_Token, value);\r\n }\r\n\r\n /**\r\n * Sets the speech recognition language.\r\n * @member SpeechTranslationConfigImpl.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public set speechRecognitionLanguage(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_RecoLanguage, value);\r\n }\r\n\r\n /**\r\n * Gets the speech recognition language.\r\n * @member SpeechTranslationConfigImpl.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @return {string} The speechRecognitionLanguage.\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n }\r\n\r\n /**\r\n * @member SpeechTranslationConfigImpl.prototype.subscriptionKey\r\n * @function\r\n * @public\r\n */\r\n public get subscriptionKey(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId[PropertyId.SpeechServiceConnection_Key]);\r\n }\r\n\r\n /**\r\n * Gets the output format\r\n * @member SpeechTranslationConfigImpl.prototype.outputFormat\r\n * @function\r\n * @public\r\n */\r\n public get outputFormat(): OutputFormat {\r\n // eslint-disable-next-line\r\n return (OutputFormat as any)[this.privSpeechProperties.getProperty(OutputFormatPropertyName, undefined)];\r\n }\r\n\r\n /**\r\n * Gets/Sets the output format\r\n * @member SpeechTranslationConfigImpl.prototype.outputFormat\r\n * @function\r\n * @public\r\n */\r\n public set outputFormat(value: OutputFormat) {\r\n this.privSpeechProperties.setProperty(OutputFormatPropertyName, OutputFormat[value]);\r\n }\r\n\r\n /**\r\n * Gets the endpoint id.\r\n * @member SpeechTranslationConfigImpl.prototype.endpointId\r\n * @function\r\n * @public\r\n */\r\n public get endpointId(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_EndpointId);\r\n }\r\n\r\n /**\r\n * Gets/Sets the endpoint id.\r\n * @member SpeechTranslationConfigImpl.prototype.endpointId\r\n * @function\r\n * @public\r\n */\r\n public set endpointId(value: string) {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_EndpointId, value);\r\n }\r\n\r\n /**\r\n * Add a (text) target language to translate into.\r\n * @member SpeechTranslationConfigImpl.prototype.addTargetLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The language such as de-DE\r\n */\r\n public addTargetLanguage(value: string): void {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n\r\n const languages: string[] = this.targetLanguages;\r\n if (!languages.includes(value)) {\r\n languages.push(value);\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, languages.join(\",\"));\r\n }\r\n }\r\n\r\n /**\r\n * Gets the (text) target language to translate into.\r\n * @member SpeechTranslationConfigImpl.prototype.targetLanguages\r\n * @function\r\n * @public\r\n * @param {string} value - The language such as de-DE\r\n */\r\n public get targetLanguages(): string[] {\r\n\r\n if (this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, undefined) !== undefined) {\r\n return this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages).split(\",\");\r\n } else {\r\n return [];\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Gets the voice name.\r\n * @member SpeechTranslationConfigImpl.prototype.voiceName\r\n * @function\r\n * @public\r\n */\r\n public get voiceName(): string {\r\n return this.getProperty(PropertyId[PropertyId.SpeechServiceConnection_TranslationVoice]);\r\n }\r\n\r\n /**\r\n * Gets/Sets the voice of the translated language, enable voice synthesis output.\r\n * @member SpeechTranslationConfigImpl.prototype.voiceName\r\n * @function\r\n * @public\r\n * @param {string} value - The name of the voice.\r\n */\r\n public set voiceName(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_TranslationVoice, value);\r\n }\r\n\r\n /**\r\n * Provides the region.\r\n * @member SpeechTranslationConfigImpl.prototype.region\r\n * @function\r\n * @public\r\n * @returns {string} The region.\r\n */\r\n public get region(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n }\r\n\r\n public setProxy(proxyHostName: string, proxyPort: number): void;\r\n public setProxy(proxyHostName: string, proxyPort: number, proxyUserName: string, proxyPassword: string): void;\r\n public setProxy(proxyHostName: any, proxyPort: any, proxyUserName?: any, proxyPassword?: any): void {\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyHostName], proxyHostName as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyPort], proxyPort as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyUserName], proxyUserName as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyPassword], proxyPassword as string);\r\n }\r\n\r\n /**\r\n * Gets an arbitrary property value.\r\n * @member SpeechTranslationConfigImpl.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property.\r\n * @param {string} def - The default value of the property in case it is not set.\r\n * @returns {string} The value of the property.\r\n */\r\n public getProperty(name: string, def?: string): string {\r\n return this.privSpeechProperties.getProperty(name, def);\r\n }\r\n\r\n /**\r\n * Gets/Sets an arbitrary property value.\r\n * @member SpeechTranslationConfigImpl.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string | PropertyId} name - The name of the property to set.\r\n * @param {string} value - The value of the property.\r\n */\r\n public setProperty(name: string | PropertyId, value: string): void {\r\n this.privSpeechProperties.setProperty(name, value);\r\n }\r\n\r\n /**\r\n * Provides access to custom properties.\r\n * @member SpeechTranslationConfigImpl.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The properties.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privSpeechProperties;\r\n }\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member SpeechTranslationConfigImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n return;\r\n }\r\n\r\n public setServiceProperty(name: string, value: string): void {\r\n const currentProperties: IStringDictionary = JSON.parse(this.privSpeechProperties.getProperty(ServicePropertiesPropertyName, \"{}\")) as IStringDictionary;\r\n\r\n currentProperties[name] = value;\r\n\r\n this.privSpeechProperties.setProperty(ServicePropertiesPropertyName, JSON.stringify(currentProperties));\r\n }\r\n\r\n public setProfanity(profanity: ProfanityOption): void {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceResponse_ProfanityOption, ProfanityOption[profanity]);\r\n }\r\n\r\n public enableAudioLogging(): void {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging, \"true\");\r\n }\r\n public requestWordLevelTimestamps(): void {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps, \"true\");\r\n }\r\n public enableDictation(): void {\r\n this.privSpeechProperties.setProperty(ForceDictationPropertyName, \"true\");\r\n }\r\n\r\n public get speechSynthesisLanguage(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_SynthLanguage);\r\n }\r\n\r\n public set speechSynthesisLanguage(language: string) {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_SynthLanguage, language);\r\n }\r\n\r\n public get speechSynthesisVoiceName(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_SynthVoice);\r\n }\r\n\r\n public set speechSynthesisVoiceName(voice: string) {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_SynthVoice, voice);\r\n }\r\n\r\n public get speechSynthesisOutputFormat(): SpeechSynthesisOutputFormat {\r\n // eslint-disable-next-line\r\n return (SpeechSynthesisOutputFormat as any)[this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, undefined)];\r\n }\r\n\r\n public set speechSynthesisOutputFormat(format: SpeechSynthesisOutputFormat) {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, SpeechSynthesisOutputFormat[format]);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, ResultReason } from \"./Exports.js\";\r\n\r\n/**\r\n * Base class for synthesis results\r\n * @class SynthesisResult\r\n * Added in version 1.20.0\r\n */\r\nexport class SynthesisResult {\r\n private privResultId: string;\r\n private privReason: ResultReason;\r\n private privErrorDetails: string;\r\n private privProperties: PropertyCollection;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n */\r\n public constructor(resultId?: string, reason?: ResultReason, errorDetails?: string, properties?: PropertyCollection) {\r\n this.privResultId = resultId;\r\n this.privReason = reason;\r\n this.privErrorDetails = errorDetails;\r\n this.privProperties = properties;\r\n }\r\n\r\n /**\r\n * Specifies the result identifier.\r\n * @member SynthesisResult.prototype.resultId\r\n * @function\r\n * @public\r\n * @returns {string} Specifies the result identifier.\r\n */\r\n public get resultId(): string {\r\n return this.privResultId;\r\n }\r\n\r\n /**\r\n * Specifies status of the result.\r\n * @member SynthesisResult.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {ResultReason} Specifies status of the result.\r\n */\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful synthesis, provides details of the occurred error.\r\n * @member SynthesisResult.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} a brief description of an error.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n\r\n /**\r\n * The set of properties exposed in the result.\r\n * @member SynthesisResult.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The set of properties exposed in the result.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IVoiceJson,\r\n PropertyCollection,\r\n ResultReason,\r\n SynthesisResult,\r\n VoiceInfo,\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Defines result of speech synthesis.\r\n * @class SynthesisVoicesResult\r\n * Added in version 1.20.0\r\n */\r\nexport class SynthesisVoicesResult extends SynthesisResult {\r\n private privVoices: VoiceInfo[];\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param requestId - result id for request.\r\n * @param json - json payload from endpoint.\r\n */\r\n public constructor(requestId: string, json: any, errorDetails: string ) {\r\n if (Array.isArray(json)) {\r\n super(requestId, ResultReason.VoicesListRetrieved, undefined, new PropertyCollection());\r\n this.privVoices = [];\r\n for (const item of json) {\r\n this.privVoices.push(new VoiceInfo(item as IVoiceJson));\r\n }\r\n } else {\r\n super(requestId, ResultReason.Canceled, errorDetails ? errorDetails : \"Error information unavailable\", new PropertyCollection());\r\n }\r\n }\r\n\r\n /**\r\n * The list of voices\r\n * @member SynthesisVoicesResult.prototype.voices\r\n * @function\r\n * @public\r\n * @returns {VoiceInfo[]} List of synthesized voices.\r\n */\r\n public get voices(): VoiceInfo[] {\r\n return this.privVoices;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n AutoDetectSourceLanguagesOpenRangeOptionName,\r\n CognitiveSubscriptionKeyAuthentication,\r\n CognitiveTokenAuthentication,\r\n Context,\r\n IAuthentication,\r\n ISynthesisConnectionFactory,\r\n OS,\r\n SpeechServiceConfig,\r\n SynthesisAdapterBase,\r\n SynthesisRestAdapter,\r\n SynthesizerConfig } from \"../common.speech/Exports.js\";\r\nimport { IAudioDestination, IStringDictionary, Queue } from \"../common/Exports.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport { PropertyCollection, PropertyId, SpeechConfig, SpeechConfigImpl, SpeechSynthesisResult } from \"./Exports.js\";\r\n\r\nexport abstract class Synthesizer {\r\n protected privAdapter: SynthesisAdapterBase;\r\n protected privRestAdapter: SynthesisRestAdapter;\r\n protected privProperties: PropertyCollection;\r\n protected privConnectionFactory: ISynthesisConnectionFactory;\r\n protected privDisposed: boolean;\r\n protected privSynthesizing: boolean;\r\n protected synthesisRequestQueue: Queue;\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member Synthesizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member Synthesizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this Synthesizer.\r\n * @member Synthesizer.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this SpeechSynthesizer.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Indicates if auto detect source language is enabled\r\n * @member Synthesizer.prototype.autoDetectSourceLanguage\r\n * @function\r\n * @public\r\n * @returns {boolean} if auto detect source language is enabled\r\n */\r\n public get autoDetectSourceLanguage(): boolean {\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages) === AutoDetectSourceLanguagesOpenRangeOptionName;\r\n }\r\n\r\n /**\r\n * Creates and initializes an instance of a Recognizer\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - The speech config to initialize the synthesizer.\r\n */\r\n protected constructor(speechConfig: SpeechConfig) {\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n Contracts.throwIfNull(speechConfigImpl, \"speechConfig\");\r\n\r\n this.privProperties = speechConfigImpl.properties.clone();\r\n this.privDisposed = false;\r\n this.privSynthesizing = false;\r\n this.synthesisRequestQueue = new Queue();\r\n }\r\n\r\n public buildSsml(text: string): string {\r\n const languageToDefaultVoice: IStringDictionary = {\r\n [\"af-ZA\"]: \"af-ZA-AdriNeural\",\r\n [\"am-ET\"]: \"am-ET-AmehaNeural\",\r\n [\"ar-AE\"]: \"ar-AE-FatimaNeural\",\r\n [\"ar-BH\"]: \"ar-BH-AliNeural\",\r\n [\"ar-DZ\"]: \"ar-DZ-AminaNeural\",\r\n [\"ar-EG\"]: \"ar-EG-SalmaNeural\",\r\n [\"ar-IQ\"]: \"ar-IQ-BasselNeural\",\r\n [\"ar-JO\"]: \"ar-JO-SanaNeural\",\r\n [\"ar-KW\"]: \"ar-KW-FahedNeural\",\r\n [\"ar-LY\"]: \"ar-LY-ImanNeural\",\r\n [\"ar-MA\"]: \"ar-MA-JamalNeural\",\r\n [\"ar-QA\"]: \"ar-QA-AmalNeural\",\r\n [\"ar-SA\"]: \"ar-SA-HamedNeural\",\r\n [\"ar-SY\"]: \"ar-SY-AmanyNeural\",\r\n [\"ar-TN\"]: \"ar-TN-HediNeural\",\r\n [\"ar-YE\"]: \"ar-YE-MaryamNeural\",\r\n [\"bg-BG\"]: \"bg-BG-BorislavNeural\",\r\n [\"bn-BD\"]: \"bn-BD-NabanitaNeural\",\r\n [\"bn-IN\"]: \"bn-IN-BashkarNeural\",\r\n [\"ca-ES\"]: \"ca-ES-JoanaNeural\",\r\n [\"cs-CZ\"]: \"cs-CZ-AntoninNeural\",\r\n [\"cy-GB\"]: \"cy-GB-AledNeural\",\r\n [\"da-DK\"]: \"da-DK-ChristelNeural\",\r\n [\"de-AT\"]: \"de-AT-IngridNeural\",\r\n [\"de-CH\"]: \"de-CH-JanNeural\",\r\n [\"de-DE\"]: \"de-DE-KatjaNeural\",\r\n [\"el-GR\"]: \"el-GR-AthinaNeural\",\r\n [\"en-AU\"]: \"en-AU-NatashaNeural\",\r\n [\"en-CA\"]: \"en-CA-ClaraNeural\",\r\n [\"en-GB\"]: \"en-GB-LibbyNeural\",\r\n [\"en-HK\"]: \"en-HK-SamNeural\",\r\n [\"en-IE\"]: \"en-IE-ConnorNeural\",\r\n [\"en-IN\"]: \"en-IN-NeerjaNeural\",\r\n [\"en-KE\"]: \"en-KE-AsiliaNeural\",\r\n [\"en-NG\"]: \"en-NG-AbeoNeural\",\r\n [\"en-NZ\"]: \"en-NZ-MitchellNeural\",\r\n [\"en-PH\"]: \"en-PH-JamesNeural\",\r\n [\"en-SG\"]: \"en-SG-LunaNeural\",\r\n [\"en-TZ\"]: \"en-TZ-ElimuNeural\",\r\n [\"en-US\"]: \"en-US-JennyNeural\",\r\n [\"en-ZA\"]: \"en-ZA-LeahNeural\",\r\n [\"es-AR\"]: \"es-AR-ElenaNeural\",\r\n [\"es-BO\"]: \"es-BO-MarceloNeural\",\r\n [\"es-CL\"]: \"es-CL-CatalinaNeural\",\r\n [\"es-CO\"]: \"es-CO-GonzaloNeural\",\r\n [\"es-CR\"]: \"es-CR-JuanNeural\",\r\n [\"es-CU\"]: \"es-CU-BelkysNeural\",\r\n [\"es-DO\"]: \"es-DO-EmilioNeural\",\r\n [\"es-EC\"]: \"es-EC-AndreaNeural\",\r\n [\"es-ES\"]: \"es-ES-AlvaroNeural\",\r\n [\"es-GQ\"]: \"es-GQ-JavierNeural\",\r\n [\"es-GT\"]: \"es-GT-AndresNeural\",\r\n [\"es-HN\"]: \"es-HN-CarlosNeural\",\r\n [\"es-MX\"]: \"es-MX-DaliaNeural\",\r\n [\"es-NI\"]: \"es-NI-FedericoNeural\",\r\n [\"es-PA\"]: \"es-PA-MargaritaNeural\",\r\n [\"es-PE\"]: \"es-PE-AlexNeural\",\r\n [\"es-PR\"]: \"es-PR-KarinaNeural\",\r\n [\"es-PY\"]: \"es-PY-MarioNeural\",\r\n [\"es-SV\"]: \"es-SV-LorenaNeural\",\r\n [\"es-US\"]: \"es-US-AlonsoNeural\",\r\n [\"es-UY\"]: \"es-UY-MateoNeural\",\r\n [\"es-VE\"]: \"es-VE-PaolaNeural\",\r\n [\"et-EE\"]: \"et-EE-AnuNeural\",\r\n [\"fa-IR\"]: \"fa-IR-DilaraNeural\",\r\n [\"fi-FI\"]: \"fi-FI-SelmaNeural\",\r\n [\"fil-PH\"]: \"fil-PH-AngeloNeural\",\r\n [\"fr-BE\"]: \"fr-BE-CharlineNeural\",\r\n [\"fr-CA\"]: \"fr-CA-SylvieNeural\",\r\n [\"fr-CH\"]: \"fr-CH-ArianeNeural\",\r\n [\"fr-FR\"]: \"fr-FR-DeniseNeural\",\r\n [\"ga-IE\"]: \"ga-IE-ColmNeural\",\r\n [\"gl-ES\"]: \"gl-ES-RoiNeural\",\r\n [\"gu-IN\"]: \"gu-IN-DhwaniNeural\",\r\n [\"he-IL\"]: \"he-IL-AvriNeural\",\r\n [\"hi-IN\"]: \"hi-IN-MadhurNeural\",\r\n [\"hr-HR\"]: \"hr-HR-GabrijelaNeural\",\r\n [\"hu-HU\"]: \"hu-HU-NoemiNeural\",\r\n [\"id-ID\"]: \"id-ID-ArdiNeural\",\r\n [\"is-IS\"]: \"is-IS-GudrunNeural\",\r\n [\"it-IT\"]: \"it-IT-IsabellaNeural\",\r\n [\"ja-JP\"]: \"ja-JP-NanamiNeural\",\r\n [\"jv-ID\"]: \"jv-ID-DimasNeural\",\r\n [\"kk-KZ\"]: \"kk-KZ-AigulNeural\",\r\n [\"km-KH\"]: \"km-KH-PisethNeural\",\r\n [\"kn-IN\"]: \"kn-IN-GaganNeural\",\r\n [\"ko-KR\"]: \"ko-KR-SunHiNeural\",\r\n [\"lo-LA\"]: \"lo-LA-ChanthavongNeural\",\r\n [\"lt-LT\"]: \"lt-LT-LeonasNeural\",\r\n [\"lv-LV\"]: \"lv-LV-EveritaNeural\",\r\n [\"mk-MK\"]: \"mk-MK-AleksandarNeural\",\r\n [\"ml-IN\"]: \"ml-IN-MidhunNeural\",\r\n [\"mr-IN\"]: \"mr-IN-AarohiNeural\",\r\n [\"ms-MY\"]: \"ms-MY-OsmanNeural\",\r\n [\"mt-MT\"]: \"mt-MT-GraceNeural\",\r\n [\"my-MM\"]: \"my-MM-NilarNeural\",\r\n [\"nb-NO\"]: \"nb-NO-PernilleNeural\",\r\n [\"nl-BE\"]: \"nl-BE-ArnaudNeural\",\r\n [\"nl-NL\"]: \"nl-NL-ColetteNeural\",\r\n [\"pl-PL\"]: \"pl-PL-AgnieszkaNeural\",\r\n [\"ps-AF\"]: \"ps-AF-GulNawazNeural\",\r\n [\"pt-BR\"]: \"pt-BR-FranciscaNeural\",\r\n [\"pt-PT\"]: \"pt-PT-DuarteNeural\",\r\n [\"ro-RO\"]: \"ro-RO-AlinaNeural\",\r\n [\"ru-RU\"]: \"ru-RU-SvetlanaNeural\",\r\n [\"si-LK\"]: \"si-LK-SameeraNeural\",\r\n [\"sk-SK\"]: \"sk-SK-LukasNeural\",\r\n [\"sl-SI\"]: \"sl-SI-PetraNeural\",\r\n [\"so-SO\"]: \"so-SO-MuuseNeural\",\r\n [\"sr-RS\"]: \"sr-RS-NicholasNeural\",\r\n [\"su-ID\"]: \"su-ID-JajangNeural\",\r\n [\"sv-SE\"]: \"sv-SE-SofieNeural\",\r\n [\"sw-KE\"]: \"sw-KE-RafikiNeural\",\r\n [\"sw-TZ\"]: \"sw-TZ-DaudiNeural\",\r\n [\"ta-IN\"]: \"ta-IN-PallaviNeural\",\r\n [\"ta-LK\"]: \"ta-LK-KumarNeural\",\r\n [\"ta-SG\"]: \"ta-SG-AnbuNeural\",\r\n [\"te-IN\"]: \"te-IN-MohanNeural\",\r\n [\"th-TH\"]: \"th-TH-PremwadeeNeural\",\r\n [\"tr-TR\"]: \"tr-TR-AhmetNeural\",\r\n [\"uk-UA\"]: \"uk-UA-OstapNeural\",\r\n [\"ur-IN\"]: \"ur-IN-GulNeural\",\r\n [\"ur-PK\"]: \"ur-PK-AsadNeural\",\r\n [\"uz-UZ\"]: \"uz-UZ-MadinaNeural\",\r\n [\"vi-VN\"]: \"vi-VN-HoaiMyNeural\",\r\n [\"zh-CN\"]: \"zh-CN-XiaoxiaoNeural\",\r\n [\"zh-HK\"]: \"zh-HK-HiuMaanNeural\",\r\n [\"zh-TW\"]: \"zh-TW-HsiaoChenNeural\",\r\n [\"zu-ZA\"]: \"zu-ZA-ThandoNeural\",\r\n };\r\n\r\n let language = this.properties.getProperty(PropertyId.SpeechServiceConnection_SynthLanguage, \"en-US\");\r\n let voice = this.properties.getProperty(PropertyId.SpeechServiceConnection_SynthVoice, \"\");\r\n let ssml: string = Synthesizer.XMLEncode(text);\r\n if (this.autoDetectSourceLanguage) {\r\n language = \"en-US\";\r\n } else {\r\n voice = voice || languageToDefaultVoice[language];\r\n }\r\n if (voice) {\r\n ssml = `${ssml}`;\r\n }\r\n ssml = `${ssml}`;\r\n return ssml;\r\n }\r\n\r\n /**\r\n * This method performs cleanup of resources.\r\n * The Boolean parameter disposing indicates whether the method is called\r\n * from Dispose (if disposing is true) or from the finalizer (if disposing is false).\r\n * Derived classes should override this method to dispose resource if needed.\r\n * @member Synthesizer.prototype.dispose\r\n * @function\r\n * @public\r\n * @param {boolean} disposing - Flag to request disposal.\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposed) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n if (this.privAdapter) {\r\n await this.privAdapter.dispose();\r\n }\r\n }\r\n\r\n this.privDisposed = true;\r\n }\r\n\r\n protected async adapterSpeak(): Promise {\r\n if (!this.privDisposed && !this.privSynthesizing) {\r\n this.privSynthesizing = true;\r\n const request: SynthesisRequest = await this.synthesisRequestQueue.dequeue();\r\n return this.privAdapter.Speak(request.text, request.isSSML, request.requestId, request.cb, request.err, request.dataStream);\r\n }\r\n }\r\n\r\n //\r\n // ################################################################################################################\r\n // IMPLEMENTATION.\r\n // Move to independent class\r\n // ################################################################################################################\r\n //\r\n\r\n // Creates the synthesis adapter\r\n protected abstract createSynthesisAdapter(\r\n authentication: IAuthentication,\r\n connectionFactory: ISynthesisConnectionFactory,\r\n synthesizerConfig: SynthesizerConfig): SynthesisAdapterBase;\r\n\r\n // Creates the REST synthesis adapter\r\n protected abstract createRestSynthesisAdapter(\r\n authentication: IAuthentication,\r\n synthesizerConfig: SynthesizerConfig): SynthesisRestAdapter;\r\n\r\n protected createSynthesizerConfig(speechConfig: SpeechServiceConfig): SynthesizerConfig {\r\n return new SynthesizerConfig(\r\n speechConfig,\r\n this.privProperties);\r\n }\r\n\r\n // Does the generic synthesizer setup that is common across all synthesizer types.\r\n protected implCommonSynthesizeSetup(): void {\r\n\r\n let osPlatform = (typeof window !== \"undefined\") ? \"Browser\" : \"Node\";\r\n let osName = \"unknown\";\r\n let osVersion = \"unknown\";\r\n\r\n if (typeof navigator !== \"undefined\") {\r\n osPlatform = osPlatform + \"/\" + navigator.platform;\r\n osName = navigator.userAgent;\r\n osVersion = navigator.appVersion;\r\n }\r\n\r\n const synthesizerConfig: SynthesizerConfig = this.createSynthesizerConfig(\r\n new SpeechServiceConfig(\r\n new Context(new OS(osPlatform, osName, osVersion))));\r\n\r\n const subscriptionKey = this.privProperties.getProperty(PropertyId.SpeechServiceConnection_Key, undefined);\r\n const authentication = (subscriptionKey && subscriptionKey !== \"\") ?\r\n new CognitiveSubscriptionKeyAuthentication(subscriptionKey) :\r\n new CognitiveTokenAuthentication(\r\n (): Promise => {\r\n const authorizationToken = this.privProperties.getProperty(PropertyId.SpeechServiceAuthorization_Token, undefined);\r\n return Promise.resolve(authorizationToken);\r\n },\r\n (): Promise => {\r\n const authorizationToken = this.privProperties.getProperty(PropertyId.SpeechServiceAuthorization_Token, undefined);\r\n return Promise.resolve(authorizationToken);\r\n });\r\n\r\n this.privAdapter = this.createSynthesisAdapter(\r\n authentication,\r\n this.privConnectionFactory,\r\n synthesizerConfig);\r\n\r\n this.privRestAdapter = this.createRestSynthesisAdapter(\r\n authentication,\r\n synthesizerConfig);\r\n }\r\n\r\n protected static XMLEncode(text: string): string {\r\n return text.replace(/&/g, \"&\")\r\n .replace(//g, \">\")\r\n .replace(/\"/g, \""\")\r\n .replace(/'/g, \"'\");\r\n }\r\n}\r\n\r\nexport class SynthesisRequest {\r\n public requestId: string;\r\n public text: string;\r\n public isSSML: boolean;\r\n public cb: (e: SpeechSynthesisResult) => void;\r\n public err: (e: string) => void;\r\n public dataStream: IAudioDestination;\r\n\r\n public constructor(requestId: string, text: string, isSSML: boolean, cb?: (e: SpeechSynthesisResult) => void, err?: (e: string) => void, dataStream?: IAudioDestination) {\r\n this.requestId = requestId;\r\n this.text = text;\r\n this.isSSML = isSSML;\r\n this.cb = cb;\r\n this.err = err;\r\n this.dataStream = dataStream;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n ConversationConnectionConfig,\r\n ConversationManager,\r\n ConversationReceivedTranslationEventArgs,\r\n ConversationRecognizer,\r\n ConversationRecognizerFactory,\r\n ConversationTranslatorCommandTypes,\r\n ConversationTranslatorMessageTypes,\r\n IAuthentication,\r\n IInternalConversation,\r\n IInternalParticipant,\r\n InternalParticipants,\r\n MuteAllEventArgs,\r\n ParticipantAttributeEventArgs,\r\n ParticipantEventArgs,\r\n ParticipantsListEventArgs,\r\n TranscriberRecognizer\r\n} from \"../../common.speech/Exports.js\";\r\nimport {\r\n IDisposable,\r\n IErrorMessages,\r\n marshalPromiseToCallbacks\r\n} from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../Contracts.js\";\r\nimport {\r\n ConnectionEventArgs,\r\n ConversationExpirationEventArgs,\r\n ConversationParticipantsChangedEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n ConversationTranslationEventArgs,\r\n ConversationTranslator,\r\n Participant,\r\n ParticipantChangedReason,\r\n ProfanityOption,\r\n PropertyCollection,\r\n PropertyId,\r\n SpeechTranslationConfig,\r\n} from \"../Exports.js\";\r\nimport { SpeechTranslationConfigImpl } from \"../SpeechTranslationConfig.js\";\r\nimport { Callback, ConversationInfo, ConversationProperties, IConversation } from \"./IConversation.js\";\r\nimport { IParticipant, IUser, TranscriptionParticipant } from \"./IParticipant.js\";\r\n\r\nexport abstract class Conversation implements IConversation {\r\n\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n public abstract get authorizationToken(): string;\r\n\r\n public abstract get config(): SpeechTranslationConfig;\r\n\r\n public abstract get conversationId(): string;\r\n public abstract get conversationInfo(): ConversationInfo;\r\n public abstract get properties(): PropertyCollection;\r\n public abstract get speechRecognitionLanguage(): string;\r\n public abstract get participants(): Participant[];\r\n public abstract set authorizationToken(value: string);\r\n public abstract get isConnected(): boolean;\r\n\r\n /**\r\n * Create a conversation\r\n * @param speechConfig\r\n * @param cb\r\n * @param err\r\n */\r\n public static createConversationAsync(speechConfig: SpeechTranslationConfig, arg2?: string | Callback, arg3?: Callback, arg4?: Callback): Conversation {\r\n Contracts.throwIfNullOrUndefined(speechConfig, ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"config\"));\r\n Contracts.throwIfNullOrUndefined(speechConfig.region, ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"SpeechServiceConnection_Region\"));\r\n if (!speechConfig.subscriptionKey && !speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceAuthorization_Token])) {\r\n Contracts.throwIfNullOrUndefined(speechConfig.subscriptionKey, ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"SpeechServiceConnection_Key\"));\r\n }\r\n let conversationImpl: ConversationImpl;\r\n let cb: Callback;\r\n let err: Callback;\r\n if (typeof arg2 === \"string\") {\r\n conversationImpl = new ConversationImpl(speechConfig, arg2);\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n marshalPromiseToCallbacks((async (): Promise => {})(), arg3, arg4);\r\n } else {\r\n conversationImpl = new ConversationImpl(speechConfig);\r\n cb = arg2;\r\n err = arg3;\r\n conversationImpl.createConversationAsync(\r\n ((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }),\r\n (error: any): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n }\r\n return conversationImpl;\r\n\r\n }\r\n\r\n /** Start a conversation. */\r\n public abstract startConversationAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Delete a conversation. After this no one will be able to join the conversation. */\r\n public abstract deleteConversationAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** End a conversation. */\r\n public abstract endConversationAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Lock a conversation. This will prevent new participants from joining. */\r\n public abstract lockConversationAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Add Participant to Conversation. */\r\n public abstract addParticipantAsync(participant: IParticipant, cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Mute all other participants in the conversation. After this no other participants will\r\n * have their speech recognitions broadcast, nor be able to send text messages.\r\n */\r\n public abstract muteAllParticipantsAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Mute a participant.\r\n * @param userId A user identifier\r\n */\r\n public abstract muteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Remove a participant from a conversation using the user id, Participant or User object\r\n * @param userId A user identifier\r\n */\r\n public abstract removeParticipantAsync(userId: string | IParticipant | IUser, cb?: Callback, err?: Callback): void;\r\n\r\n /** Unlocks a conversation. */\r\n public abstract unlockConversationAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Unmute all other participants in the conversation. */\r\n public abstract unmuteAllParticipantsAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Unmute a participant.\r\n * @param userId A user identifier\r\n */\r\n public abstract unmuteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void;\r\n}\r\n\r\nexport class ConversationImpl extends Conversation implements IDisposable {\r\n\r\n private privConfig: SpeechTranslationConfig;\r\n private privProperties: PropertyCollection;\r\n private privLanguage: string;\r\n private privToken: string;\r\n private privIsDisposed: boolean;\r\n private privRoom: IInternalConversation;\r\n private privManager: ConversationManager;\r\n private privConversationRecognizer: ConversationRecognizer;\r\n private privIsConnected: boolean;\r\n private privParticipants: InternalParticipants;\r\n private privIsReady: boolean;\r\n private privConversationTranslator: ConversationTranslator;\r\n private privTranscriberRecognizer: TranscriberRecognizer;\r\n private privErrors: IErrorMessages = ConversationConnectionConfig.restErrors;\r\n private privConversationId: string;\r\n private readonly privTextMessageMaxLength: number;\r\n\r\n /**\r\n * Create a conversation impl\r\n * @param speechConfig\r\n * @param {string} id - optional conversationId\r\n */\r\n public constructor(speechConfig: SpeechTranslationConfig, id?: string) {\r\n super();\r\n this.privIsConnected = false;\r\n this.privIsDisposed = false;\r\n this.privConversationId = \"\";\r\n this.privProperties = new PropertyCollection();\r\n this.privManager = new ConversationManager();\r\n\r\n // check the speech language\r\n const language: string = speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n if (!language) {\r\n speechConfig.setProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage], ConversationConnectionConfig.defaultLanguageCode);\r\n }\r\n this.privLanguage = speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n\r\n if (!id) {\r\n // check the target language(s)\r\n if (speechConfig.targetLanguages.length === 0) {\r\n speechConfig.addTargetLanguage(this.privLanguage);\r\n }\r\n\r\n // check the profanity setting: speech and conversationTranslator should be in sync\r\n const profanity: string = speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceResponse_ProfanityOption]);\r\n if (!profanity) {\r\n speechConfig.setProfanity(ProfanityOption.Masked);\r\n }\r\n // check the nickname: it should pass this regex: ^\\w+([\\s-][\\w\\(\\)]+)*$\"\r\n // TODO: specify the regex required. Nicknames must be unique or get the duplicate nickname error\r\n // TODO: check what the max length is and if a truncation is required or if the service handles it without an error\r\n let hostNickname: string = speechConfig.getProperty(PropertyId[PropertyId.ConversationTranslator_Name]);\r\n if (hostNickname === undefined || hostNickname === null) {\r\n hostNickname = \"Host\";\r\n }\r\n Contracts.throwIfNullOrTooLong(hostNickname, \"nickname\", 50);\r\n Contracts.throwIfNullOrTooShort(hostNickname, \"nickname\", 2);\r\n speechConfig.setProperty(PropertyId[PropertyId.ConversationTranslator_Name], hostNickname);\r\n\r\n } else {\r\n this.privConversationId = id;\r\n }\r\n\r\n // save the speech config for future usage\r\n this.privConfig = speechConfig;\r\n\r\n // save the config properties\r\n const configImpl = speechConfig as SpeechTranslationConfigImpl;\r\n Contracts.throwIfNull(configImpl, \"speechConfig\");\r\n this.privProperties = configImpl.properties.clone();\r\n this.privIsConnected = false;\r\n this.privParticipants = new InternalParticipants();\r\n this.privIsReady = false;\r\n this.privTextMessageMaxLength = 1000;\r\n }\r\n\r\n // get the internal data about a conversation\r\n public get room(): IInternalConversation {\r\n return this.privRoom;\r\n }\r\n\r\n // get the wrapper for connecting to the websockets\r\n public get connection(): ConversationRecognizer {\r\n return this.privConversationRecognizer; // this.privConnection;\r\n }\r\n\r\n // get the config\r\n public get config(): SpeechTranslationConfig {\r\n return this.privConfig;\r\n }\r\n\r\n // get the conversation Id\r\n public get conversationId(): string {\r\n return this.privRoom ? this.privRoom.roomId : this.privConversationId;\r\n }\r\n\r\n // get the properties\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n // get the speech language\r\n public get speechRecognitionLanguage(): string {\r\n return this.privLanguage;\r\n }\r\n\r\n public get isMutedByHost(): boolean {\r\n return this.privParticipants.me?.isHost ? false : this.privParticipants.me?.isMuted;\r\n }\r\n\r\n public get isConnected(): boolean {\r\n return this.privIsConnected && this.privIsReady;\r\n }\r\n\r\n public get participants(): Participant[] {\r\n return this.toParticipants(true);\r\n }\r\n\r\n public get me(): Participant {\r\n return this.toParticipant(this.privParticipants.me);\r\n }\r\n\r\n public get host(): Participant {\r\n return this.toParticipant(this.privParticipants.host);\r\n }\r\n\r\n public get transcriberRecognizer(): TranscriberRecognizer {\r\n return this.privTranscriberRecognizer;\r\n }\r\n\r\n public get conversationInfo(): ConversationInfo {\r\n const convId: string = this.conversationId;\r\n const p: TranscriptionParticipant[] = this.participants.map((part: Participant): TranscriptionParticipant => (\r\n {\r\n id: part.id,\r\n preferredLanguage: part.preferredLanguage,\r\n voice: part.voice\r\n }\r\n ));\r\n const props: ConversationProperties = {};\r\n for (const key of ConversationConnectionConfig.transcriptionEventKeys) {\r\n const val: string = this.properties.getProperty(key, \"\");\r\n if (val !== \"\") {\r\n props[key] = val;\r\n }\r\n }\r\n const info: ConversationInfo = { id: convId, participants: p, conversationProperties: props };\r\n return info;\r\n }\r\n\r\n private get canSend(): boolean {\r\n return this.privIsConnected && !this.privParticipants.me?.isMuted;\r\n }\r\n\r\n private get canSendAsHost(): boolean {\r\n return this.privIsConnected && this.privParticipants.me?.isHost;\r\n }\r\n\r\n // get / set the speech auth token\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n public get authorizationToken(): string {\r\n return this.privToken;\r\n }\r\n\r\n public set authorizationToken(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"authorizationToken\");\r\n this.privToken = value;\r\n }\r\n\r\n public set conversationTranslator(conversationTranslator: ConversationTranslator) {\r\n this.privConversationTranslator = conversationTranslator;\r\n }\r\n\r\n public onToken(token: IAuthentication): void {\r\n this.privConversationTranslator.onToken(token);\r\n }\r\n\r\n /**\r\n * Create a new conversation as Host\r\n * @param cb\r\n * @param err\r\n */\r\n public createConversationAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n if (!!this.privConversationRecognizer) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedStart), err);\r\n }\r\n this.privManager.createOrJoin(this.privProperties, undefined,\r\n ((room: IInternalConversation): void => {\r\n if (!room) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConnect), err);\r\n }\r\n this.privRoom = room;\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Starts a new conversation as host.\r\n * @param cb\r\n * @param err\r\n */\r\n public startConversationAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n // check if there is already a recognizer\r\n if (!!this.privConversationRecognizer) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedStart), err);\r\n }\r\n // check if there is conversation data available\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedConnect);\r\n // connect to the conversation websocket\r\n this.privParticipants.meId = this.privRoom.participantId;\r\n this.privConversationRecognizer = ConversationRecognizerFactory.fromConfig(this, this.privConfig);\r\n\r\n // Because ConversationTranslator manually sets up and manages the connection, Conversation\r\n // has to forward serviceRecognizer connection events that usually get passed automatically\r\n this.privConversationRecognizer.connected = this.onConnected;\r\n this.privConversationRecognizer.disconnected = this.onDisconnected;\r\n this.privConversationRecognizer.canceled = this.onCanceled;\r\n\r\n this.privConversationRecognizer.participantUpdateCommandReceived = this.onParticipantUpdateCommandReceived;\r\n this.privConversationRecognizer.lockRoomCommandReceived = this.onLockRoomCommandReceived;\r\n this.privConversationRecognizer.muteAllCommandReceived = this.onMuteAllCommandReceived;\r\n this.privConversationRecognizer.participantJoinCommandReceived = this.onParticipantJoinCommandReceived;\r\n this.privConversationRecognizer.participantLeaveCommandReceived = this.onParticipantLeaveCommandReceived;\r\n this.privConversationRecognizer.translationReceived = this.onTranslationReceived;\r\n this.privConversationRecognizer.participantsListReceived = this.onParticipantsListReceived;\r\n this.privConversationRecognizer.conversationExpiration = this.onConversationExpiration;\r\n\r\n this.privConversationRecognizer.connect(this.privRoom.token,\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Join a conversation as a participant.\r\n * @param { IParticipant } participant - participant to add\r\n * @param cb\r\n * @param err\r\n */\r\n public addParticipantAsync(participant: IParticipant, cb?: Callback, err?: Callback): void {\r\n Contracts.throwIfNullOrUndefined(participant, \"Participant\");\r\n marshalPromiseToCallbacks(this.addParticipantImplAsync(participant), cb, err);\r\n }\r\n\r\n /**\r\n * Join a conversation as a participant.\r\n * @param conversation\r\n * @param nickname\r\n * @param lang\r\n * @param cb\r\n * @param err\r\n */\r\n public joinConversationAsync(conversationId: string, nickname: string, lang: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n // TODO\r\n // if (!!this.privConversationRecognizer) {\r\n // throw new Error(this.privErrors.permissionDeniedStart);\r\n // }\r\n Contracts.throwIfNullOrWhitespace(conversationId, this.privErrors.invalidArgs.replace(\"{arg}\", \"conversationId\"));\r\n Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\r\n Contracts.throwIfNullOrWhitespace(lang, this.privErrors.invalidArgs.replace(\"{arg}\", \"language\"));\r\n // join the conversation\r\n this.privManager.createOrJoin(this.privProperties, conversationId,\r\n ((room: IInternalConversation): void => {\r\n Contracts.throwIfNullOrUndefined(room, this.privErrors.permissionDeniedConnect);\r\n this.privRoom = room;\r\n this.privConfig.authorizationToken = room.cognitiveSpeechAuthToken;\r\n // join callback\r\n if (!!cb) {\r\n cb(room.cognitiveSpeechAuthToken);\r\n }\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Deletes a conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public deleteConversationAsync(cb?: Callback, err?: Callback): void {\r\n marshalPromiseToCallbacks(this.deleteConversationImplAsync(), cb, err);\r\n }\r\n\r\n public async deleteConversationImplAsync(): Promise {\r\n Contracts.throwIfNullOrUndefined(this.privProperties, this.privErrors.permissionDeniedConnect);\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.token, this.privErrors.permissionDeniedConnect);\r\n await this.privManager.leave(this.privProperties, this.privRoom.token);\r\n\r\n this.dispose();\r\n }\r\n\r\n /**\r\n * Issues a request to close the client websockets\r\n * @param cb\r\n * @param err\r\n */\r\n public endConversationAsync(cb?: Callback, err?: Callback): void {\r\n marshalPromiseToCallbacks(this.endConversationImplAsync(), cb, err);\r\n }\r\n\r\n public endConversationImplAsync(): Promise {\r\n return this.close(true);\r\n }\r\n\r\n /**\r\n * Issues a request to lock the conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public lockConversationAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"lock\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getLockCommand(true),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to mute the conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public muteAllParticipantsAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privConversationRecognizer, this.privErrors.permissionDeniedSend);\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n // check the user's permissions\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"mute\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteAllCommand(true),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to mute a participant in the conversation\r\n * @param userId\r\n * @param cb\r\n * @param err\r\n */\r\n public muteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(userId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n // check the connection is open (host + participant can perform the mute command)\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n // if not host, check the participant is not muting another participant\r\n if (!this.me.isHost && this.me.id !== userId) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"mute\")), err);\r\n }\r\n // check the user exists\r\n const exists: number = this.privParticipants.getParticipantIndex(userId);\r\n if (exists === -1) {\r\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteCommand(userId, true), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to remove a participant from the conversation\r\n * @param userId\r\n * @param cb\r\n * @param err\r\n */\r\n public removeParticipantAsync(userId: string | IParticipant | IUser, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n if (!!this.privTranscriberRecognizer && userId.hasOwnProperty(\"id\")) {\r\n // Assume this is a transcription participant\r\n marshalPromiseToCallbacks(this.removeParticipantImplAsync(userId as IParticipant), cb, err);\r\n } else {\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"remove\")), err);\r\n }\r\n let participantId = \"\";\r\n if (typeof userId === \"string\") {\r\n participantId = userId;\r\n } else if (userId.hasOwnProperty(\"id\")) {\r\n const participant: IParticipant = userId as IParticipant;\r\n participantId = participant.id;\r\n } else if (userId.hasOwnProperty(\"userId\")) {\r\n const user: IUser = userId as IUser;\r\n participantId = user.userId;\r\n }\r\n Contracts.throwIfNullOrWhitespace(participantId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\r\n // check the participant exists\r\n const index: number = this.participants.findIndex((p: Participant): boolean => p.id === participantId);\r\n if (index === -1) {\r\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getEjectCommand(participantId), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to unlock the conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public unlockConversationAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"unlock\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getLockCommand(false), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to unmute all participants in the conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public unmuteAllParticipantsAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"unmute all\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteAllCommand(false), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to unmute a participant in the conversation\r\n * @param userId\r\n * @param cb\r\n * @param err\r\n */\r\n public unmuteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(userId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n // check the connection is open (host + participant can perform the mute command)\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n // if not host, check the participant is not muting another participant\r\n if (!this.me.isHost && this.me.id !== userId) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"mute\")), err);\r\n }\r\n // check the user exists\r\n const exists: number = this.privParticipants.getParticipantIndex(userId);\r\n if (exists === -1) {\r\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteCommand(userId, false), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Send a text message\r\n * @param message\r\n * @param cb\r\n * @param err\r\n */\r\n public sendTextMessageAsync(message: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(message, this.privErrors.invalidArgs.replace(\"{arg}\", \"message\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n // TODO: is a max length check required?\r\n if (message.length > this.privTextMessageMaxLength) {\r\n this.handleError(new Error(this.privErrors.invalidArgs.replace(\"{arg}\", \"message length\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMessageCommand(message), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Set translated to languages\r\n * @param {string[]} languages - languages to translate to\r\n * @param cb\r\n * @param err\r\n */\r\n public setTranslatedLanguagesAsync(languages: string[], cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfArrayEmptyOrWhitespace(languages, this.privErrors.invalidArgs.replace(\"{arg}\", \"languages\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getSetTranslateToLanguagesCommand(languages),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Change nickname\r\n * @param {string} nickname - new nickname for the room\r\n * @param cb\r\n * @param err\r\n */\r\n public changeNicknameAsync(nickname: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getChangeNicknameCommand(nickname),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public dispose(): void {\r\n if (this.isDisposed) {\r\n return;\r\n }\r\n this.privIsDisposed = true;\r\n if (!!this.config) {\r\n this.config.close();\r\n }\r\n this.privConfig = undefined;\r\n this.privLanguage = undefined;\r\n this.privProperties = undefined;\r\n this.privRoom = undefined;\r\n this.privToken = undefined;\r\n this.privManager = undefined;\r\n this.privIsConnected = false;\r\n this.privIsReady = false;\r\n this.privParticipants = undefined;\r\n }\r\n\r\n public async connectTranscriberRecognizer(recognizer: TranscriberRecognizer): Promise {\r\n if (!!this.privTranscriberRecognizer) {\r\n await this.privTranscriberRecognizer.close();\r\n }\r\n await recognizer.enforceAudioGating();\r\n this.privTranscriberRecognizer = recognizer;\r\n this.privTranscriberRecognizer.conversation = this;\r\n }\r\n\r\n public getKeepAlive(): string {\r\n const nickname: string = (!!this.me) ? this.me.displayName : \"default_nickname\";\r\n return JSON.stringify({\r\n id: \"0\",\r\n nickname,\r\n participantId: this.privRoom.participantId,\r\n roomId: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.keepAlive\r\n });\r\n }\r\n\r\n /** websocket callbacks */\r\n /* eslint-disable @typescript-eslint/typedef */\r\n private onConnected = (e: ConnectionEventArgs): void => {\r\n this.privIsConnected = true;\r\n try {\r\n if (!!this.privConversationTranslator?.sessionStarted) {\r\n this.privConversationTranslator.sessionStarted(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onDisconnected = (e: ConnectionEventArgs): void => {\r\n try {\r\n if (!!this.privConversationTranslator?.sessionStopped) {\r\n this.privConversationTranslator.sessionStopped(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n } finally {\r\n void this.close(false);\r\n }\r\n };\r\n\r\n private onCanceled = (r: ConversationRecognizer, e: ConversationTranslationCanceledEventArgs): void => {\r\n try {\r\n if (!!this.privConversationTranslator?.canceled) {\r\n this.privConversationTranslator.canceled(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantUpdateCommandReceived = (r: ConversationRecognizer, e: ParticipantAttributeEventArgs): void => {\r\n try {\r\n const updatedParticipant: IInternalParticipant = this.privParticipants.getParticipant(e.id);\r\n if (updatedParticipant !== undefined) {\r\n\r\n switch (e.key) {\r\n case ConversationTranslatorCommandTypes.changeNickname:\r\n updatedParticipant.displayName = e.value as string;\r\n break;\r\n case ConversationTranslatorCommandTypes.setUseTTS:\r\n updatedParticipant.isUsingTts = e.value as boolean;\r\n break;\r\n case ConversationTranslatorCommandTypes.setProfanityFiltering:\r\n updatedParticipant.profanity = e.value as boolean;\r\n break;\r\n case ConversationTranslatorCommandTypes.setMute:\r\n updatedParticipant.isMuted = e.value as boolean;\r\n break;\r\n case ConversationTranslatorCommandTypes.setTranslateToLanguages:\r\n updatedParticipant.translateToLanguages = e.value as string[];\r\n break;\r\n }\r\n this.privParticipants.addOrUpdateParticipant(updatedParticipant);\r\n\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.Updated,\r\n [this.toParticipant(updatedParticipant)], e.sessionId));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onLockRoomCommandReceived = (): void => {\r\n // TODO\r\n };\r\n\r\n private onMuteAllCommandReceived = (r: ConversationRecognizer, e: MuteAllEventArgs): void => {\r\n try {\r\n this.privParticipants.participants.forEach((p: IInternalParticipant): boolean => p.isMuted = (p.isHost ? false : e.isMuted));\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.Updated,\r\n this.toParticipants(false), e.sessionId));\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantJoinCommandReceived = (r: ConversationRecognizer, e: ParticipantEventArgs): void => {\r\n try {\r\n const newParticipant: IInternalParticipant = this.privParticipants.addOrUpdateParticipant(e.participant);\r\n if (newParticipant !== undefined) {\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.JoinedConversation,\r\n [this.toParticipant(newParticipant)], e.sessionId));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantLeaveCommandReceived = (r: ConversationRecognizer, e: ParticipantEventArgs): void => {\r\n try {\r\n const ejectedParticipant: IInternalParticipant = this.privParticipants.getParticipant(e.participant.id);\r\n if (ejectedParticipant !== undefined) {\r\n // remove the participant from the internal participants list\r\n this.privParticipants.deleteParticipant(e.participant.id);\r\n if (!!this.privConversationTranslator) {\r\n // notify subscribers that the participant has left the conversation\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.LeftConversation,\r\n [this.toParticipant(ejectedParticipant)], e.sessionId));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onTranslationReceived = (r: ConversationRecognizer, e: ConversationReceivedTranslationEventArgs): void => {\r\n try {\r\n switch (e.command) {\r\n case ConversationTranslatorMessageTypes.final:\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.transcribed(\r\n this.privConversationTranslator,\r\n new ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\r\n }\r\n break;\r\n case ConversationTranslatorMessageTypes.partial:\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.transcribing(\r\n this.privConversationTranslator,\r\n new ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\r\n }\r\n break;\r\n case ConversationTranslatorMessageTypes.instantMessage:\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.textMessageReceived(\r\n this.privConversationTranslator,\r\n new ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\r\n }\r\n break;\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantsListReceived = (r: ConversationRecognizer, e: ParticipantsListEventArgs): void => {\r\n try {\r\n // check if the session token needs to be updated\r\n if (e.sessionToken !== undefined && e.sessionToken !== null) {\r\n this.privRoom.token = e.sessionToken;\r\n }\r\n // save the participants\r\n this.privParticipants.participants = [...e.participants];\r\n // enable the conversation\r\n if (this.privParticipants.me !== undefined) {\r\n this.privIsReady = true;\r\n }\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.JoinedConversation, this.toParticipants(true), e.sessionId));\r\n }\r\n // if this is the host, update the nickname if needed\r\n if (this.me.isHost) {\r\n const nickname: string = this.privConversationTranslator?.properties.getProperty(PropertyId.ConversationTranslator_Name);\r\n if (nickname !== undefined && nickname.length > 0 && nickname !== this.me.displayName) {\r\n // issue a change nickname request\r\n this.changeNicknameAsync(nickname);\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onConversationExpiration = (r: ConversationRecognizer, e: ConversationExpirationEventArgs): void => {\r\n try {\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.conversationExpiration(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n /* eslint-enable @typescript-eslint/typedef */\r\n\r\n private addParticipantImplAsync(participant: IParticipant): Promise {\r\n const newParticipant: IInternalParticipant = this.privParticipants.addOrUpdateParticipant(participant);\r\n if (newParticipant !== undefined) {\r\n if (!!this.privTranscriberRecognizer) {\r\n const conversationInfo = this.conversationInfo;\r\n conversationInfo.participants = [participant];\r\n return this.privTranscriberRecognizer.pushConversationEvent(conversationInfo, \"join\");\r\n }\r\n }\r\n }\r\n\r\n private removeParticipantImplAsync(participant: IParticipant): Promise {\r\n this.privParticipants.deleteParticipant(participant.id);\r\n const conversationInfo = this.conversationInfo;\r\n conversationInfo.participants = [participant];\r\n return this.privTranscriberRecognizer.pushConversationEvent(conversationInfo, \"leave\");\r\n }\r\n\r\n private async close(dispose: boolean): Promise {\r\n try {\r\n this.privIsConnected = false;\r\n await this.privConversationRecognizer?.close();\r\n this.privConversationRecognizer = undefined;\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.dispose();\r\n }\r\n } catch (e) {\r\n // ignore error\r\n throw e;\r\n }\r\n if (dispose) {\r\n this.dispose();\r\n }\r\n }\r\n\r\n /** Helpers */\r\n private handleCallback(cb: () => void, err: (message: string) => void): void {\r\n if (!!cb) {\r\n try {\r\n cb();\r\n } catch (e) {\r\n if (!!err) {\r\n err(e as string);\r\n }\r\n }\r\n cb = undefined;\r\n }\r\n }\r\n\r\n private handleError(error: any, err: (message: string) => void): void {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n }\r\n\r\n /** Participant Helpers */\r\n private toParticipants(includeHost: boolean): Participant[] {\r\n\r\n const participants: Participant[] = this.privParticipants.participants.map((p: IInternalParticipant): Participant => ( this.toParticipant(p) ) );\r\n if (!includeHost) {\r\n return participants.filter((p: Participant): boolean => p.isHost === false);\r\n } else {\r\n return participants;\r\n }\r\n }\r\n\r\n private toParticipant(p: IInternalParticipant): Participant {\r\n return new Participant(p.id, p.avatar, p.displayName, p.isHost, p.isMuted, p.isUsingTts, p.preferredLanguage, p.voice);\r\n }\r\n\r\n private getMuteAllCommand(isMuted: boolean): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setMuteAll,\r\n participantId: this.privRoom.participantId, // the id of the host\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: isMuted\r\n });\r\n }\r\n\r\n private getMuteCommand(participantId: string, isMuted: boolean): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setMute,\r\n // eslint-disable-next-line object-shorthand\r\n participantId: participantId,\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: isMuted\r\n });\r\n }\r\n\r\n private getLockCommand(isLocked: boolean): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setLockState,\r\n participantId: this.privRoom.participantId,\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: isLocked\r\n });\r\n }\r\n\r\n private getEjectCommand(participantId: string): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.ejectParticipant,\r\n // eslint-disable-next-line object-shorthand\r\n participantId: participantId,\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n });\r\n }\r\n\r\n private getSetTranslateToLanguagesCommand(languages: string[]): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setTranslateToLanguages,\r\n participantId: this.privRoom.participantId, // the id of the host\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: languages\r\n });\r\n }\r\n\r\n private getChangeNicknameCommand(nickname: string): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(nickname, \"nickname\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.changeNickname,\r\n nickname,\r\n participantId: this.privRoom.participantId, // the id of the host\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: nickname\r\n });\r\n }\r\n\r\n private getMessageCommand(message: string): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n Contracts.throwIfNullOrWhitespace(message, \"message\");\r\n\r\n return JSON.stringify({\r\n participantId: this.privRoom.participantId,\r\n roomId: this.privRoom.roomId,\r\n text: message,\r\n type: ConversationTranslatorMessageTypes.instantMessage\r\n });\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n AudioConfig,\r\n SpeechTranslationConfig\r\n} from \"../Exports.js\";\r\nimport { Callback } from \"./IConversation.js\";\r\n\r\nexport class ConversationCommon {\r\n\r\n protected privAudioConfig: AudioConfig;\r\n protected privSpeechTranslationConfig: SpeechTranslationConfig;\r\n\r\n public constructor(audioConfig?: AudioConfig) {\r\n this.privAudioConfig = audioConfig;\r\n }\r\n\r\n protected handleCallback(cb: Callback, err: Callback): void {\r\n if (!!cb) {\r\n try {\r\n cb();\r\n } catch (e) {\r\n if (!!err) {\r\n err(e);\r\n }\r\n }\r\n cb = undefined;\r\n }\r\n }\r\n\r\n protected handleError(error: any, err: Callback): void {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n\r\n } else {\r\n err(error);\r\n }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nimport { SessionEventArgs } from \"../Exports.js\";\r\n\r\nexport class ConversationExpirationEventArgs extends SessionEventArgs {\r\n private privExpirationTime: number;\r\n\r\n public constructor(expirationTime: number, sessionId?: string) {\r\n super(sessionId);\r\n this.privExpirationTime = expirationTime;\r\n }\r\n\r\n /** How much longer until the conversation expires (in minutes). */\r\n public get expirationTime(): number {\r\n return this.privExpirationTime;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nimport { SessionEventArgs } from \"../Exports.js\";\r\nimport { ParticipantChangedReason } from \"./Exports.js\";\r\nimport { IParticipant } from \"./IParticipant.js\";\r\n\r\nexport class ConversationParticipantsChangedEventArgs extends SessionEventArgs {\r\n private privReason: ParticipantChangedReason;\r\n private privParticipant: IParticipant[];\r\n\r\n public constructor(reason: ParticipantChangedReason, participants: IParticipant[], sessionId?: string) {\r\n super(sessionId);\r\n this.privReason = reason;\r\n this.privParticipant = participants;\r\n }\r\n\r\n public get reason(): ParticipantChangedReason {\r\n return this.privReason;\r\n }\r\n\r\n public get participants(): IParticipant[] {\r\n return this.privParticipant;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n OutputFormatPropertyName,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n // SpeechConnectionFactory,\r\n ConversationTranscriberConnectionFactory,\r\n SpeechServiceConfig,\r\n ConversationTranscriptionServiceRecognizer,\r\n} from \"../../common.speech/Exports.js\";\r\nimport { marshalPromiseToCallbacks } from \"../../common/Exports.js\";\r\nimport { AudioConfigImpl } from \"../Audio/AudioConfig.js\";\r\nimport { Contracts } from \"../Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n AutoDetectSourceLanguageConfig,\r\n ConversationTranscriptionEventArgs,\r\n ConversationTranscriptionCanceledEventArgs,\r\n OutputFormat,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n} from \"../Exports.js\";\r\nimport { SpeechConfig, SpeechConfigImpl } from \"../SpeechConfig.js\";\r\n\r\n/**\r\n * Performs speech recognition with speaker separation from microphone, file, or other audio input streams, and gets transcribed text as result.\r\n * @class ConversationTranscriber\r\n */\r\nexport class ConversationTranscriber extends Recognizer {\r\n private privDisposedRecognizer: boolean;\r\n\r\n /**\r\n * ConversationTranscriber constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - an set of initial properties for this recognizer\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the recognizer\r\n */\r\n public constructor(speechConfig: SpeechConfig, audioConfig?: AudioConfig) {\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n Contracts.throwIfNull(speechConfigImpl, \"speechConfig\");\r\n\r\n Contracts.throwIfNullOrWhitespace(\r\n speechConfigImpl.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage),\r\n PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n\r\n super(audioConfig, speechConfigImpl.properties, new ConversationTranscriberConnectionFactory());\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_RecognitionEndpointVersion, \"2\");\r\n this.privDisposedRecognizer = false;\r\n }\r\n\r\n /**\r\n * ConversationTranscriber constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - an set of initial properties for this recognizer\r\n * @param {AutoDetectSourceLanguageConfig} autoDetectSourceLanguageConfig - An source language detection configuration associated with the recognizer\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the recognizer\r\n */\r\n public static FromConfig(speechConfig: SpeechConfig, autoDetectSourceLanguageConfig: AutoDetectSourceLanguageConfig, audioConfig?: AudioConfig): ConversationTranscriber {\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n autoDetectSourceLanguageConfig.properties.mergeTo(speechConfigImpl.properties);\r\n const recognizer = new ConversationTranscriber(speechConfig, audioConfig);\r\n return recognizer;\r\n }\r\n\r\n /**\r\n * The event transcribing signals that an intermediate transcription result is received.\r\n * @member ConversationTranscriber.prototype.transcribing\r\n * @function\r\n * @public\r\n */\r\n public transcribing: (sender: Recognizer, event: ConversationTranscriptionEventArgs) => void;\r\n\r\n /**\r\n * The event transcriber signals that a final recognition result is received.\r\n * @member ConversationTranscriber.prototype.transcribed\r\n * @function\r\n * @public\r\n */\r\n public transcribed: (sender: Recognizer, event: ConversationTranscriptionEventArgs) => void;\r\n\r\n /**\r\n * The event canceled signals that an error occurred during transcription.\r\n * @member ConversationTranscriber.prototype.canceled\r\n * @function\r\n * @public\r\n */\r\n public canceled: (sender: Recognizer, event: ConversationTranscriptionCanceledEventArgs) => void;\r\n\r\n /**\r\n * Gets the endpoint id of a customized speech model that is used for transcription.\r\n * @member ConversationTranscriber.prototype.endpointId\r\n * @function\r\n * @public\r\n * @returns {string} the endpoint id of a customized speech model that is used for speech recognition.\r\n */\r\n public get endpointId(): string {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_EndpointId, \"00000000-0000-0000-0000-000000000000\");\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member ConversationTranscriber.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member ConversationTranscriber.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * Gets the spoken language of transcription.\r\n * @member ConversationTranscriber.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @returns {string} The spoken language of transcription.\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n /**\r\n * Gets the output format of transcription.\r\n * @member ConversationTranscriber.prototype.outputFormat\r\n * @function\r\n * @public\r\n * @returns {OutputFormat} The output format of transcription.\r\n */\r\n public get outputFormat(): OutputFormat {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n if (this.properties.getProperty(OutputFormatPropertyName, OutputFormat[OutputFormat.Simple]) === OutputFormat[OutputFormat.Simple]) {\r\n return OutputFormat.Simple;\r\n } else {\r\n return OutputFormat.Detailed;\r\n }\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this conversation transcriber.\r\n * @member ConversationTranscriber.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this SpeechRecognizer.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Starts conversation transcription, until stopTranscribingAsync() is called.\r\n * User must subscribe to events to receive transcription results.\r\n * @member ConversationTranscriber.prototype.startTranscribingAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the transcription has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startTranscribingAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.startContinuousRecognitionAsyncImpl(RecognitionMode.Conversation), cb, err);\r\n }\r\n\r\n /**\r\n * Stops conversation transcription.\r\n * @member ConversationTranscriber.prototype.stopTranscribingAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the transcription has stopped.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopTranscribingAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.stopContinuousRecognitionAsyncImpl(), cb, err);\r\n }\r\n\r\n /**\r\n * closes all external resources held by an instance of this class.\r\n * @member ConversationTranscriber.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, errorCb?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n marshalPromiseToCallbacks(this.dispose(true), cb, errorCb);\r\n }\r\n\r\n /**\r\n * Disposes any resources held by the object.\r\n * @member SpeechRecognizer.prototype.dispose\r\n * @function\r\n * @public\r\n * @param {boolean} disposing - true if disposing the object.\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedRecognizer) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n this.privDisposedRecognizer = true;\r\n await this.implRecognizerStop();\r\n }\r\n\r\n await super.dispose(disposing);\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n protected createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n const configImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n recognizerConfig.isSpeakerDiarizationEnabled = true;\r\n return new ConversationTranscriptionServiceRecognizer(authentication, connectionFactory, configImpl, recognizerConfig, this);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, RecognitionResult, ResultReason } from \"../Exports.js\";\r\n\r\n/**\r\n * Defines result of conversation transcription.\r\n * @class ConversationTranscriptionResult\r\n */\r\nexport class ConversationTranscriptionResult extends RecognitionResult {\r\n private readonly privSpeakerId: string;\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @public\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {string} text - The recognized text.\r\n * @param {number} duration - The duration.\r\n * @param {number} offset - The offset into the stream.\r\n * @param {string} language - Primary Language detected, if provided.\r\n * @param {string} languageDetectionConfidence - Primary Language confidence (\"Unknown,\" \"Low,\" \"Medium,\" \"High\"...), if provided.\r\n * @param {string} speakerId - speaker id for conversation transcription.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {string} json - Additional Json, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n */\r\n public constructor(resultId?: string, reason?: ResultReason, text?: string,\r\n duration?: number, offset?: number, language?: string,\r\n languageDetectionConfidence?: string, speakerId?: string, errorDetails?: string,\r\n json?: string, properties?: PropertyCollection) {\r\n super(resultId, reason, text, duration, offset, language, languageDetectionConfidence, errorDetails, json, properties);\r\n this.privSpeakerId = speakerId;\r\n }\r\n\r\n /**\r\n * speaker id\r\n * @member ConversationTranscriptionResult.prototype.speakerId\r\n * @function\r\n * @public\r\n * @returns {string} id of speaker in given result\r\n */\r\n public get speakerId(): string {\r\n return this.privSpeakerId;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nimport { CancellationEventArgsBase } from \"../CancellationEventArgsBase.js\";\r\n\r\nexport class ConversationTranslationCanceledEventArgs extends CancellationEventArgsBase {\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nimport { RecognitionEventArgs } from \"../Exports.js\";\r\nimport { ConversationTranslationResult } from \"./Exports.js\";\r\n\r\nexport class ConversationTranslationEventArgs extends RecognitionEventArgs {\r\n private privResult: ConversationTranslationResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {ConversationTranslationResult} result - The translation recognition result.\r\n * @param {number} offset - The offset.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(result: ConversationTranslationResult, offset?: number, sessionId?: string) {\r\n super(offset, sessionId);\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Specifies the recognition result.\r\n * @returns {ConversationTranslationResult} the recognition result.\r\n */\r\n public get result(): ConversationTranslationResult {\r\n return this.privResult;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nimport { PropertyCollection } from \"../PropertyCollection.js\";\r\nimport { ResultReason } from \"../ResultReason.js\";\r\nimport { TranslationRecognitionResult } from \"../TranslationRecognitionResult.js\";\r\nimport { Translations } from \"../Translations.js\";\r\n\r\nexport class ConversationTranslationResult extends TranslationRecognitionResult {\r\n private privId: string;\r\n private privOrigLang: string;\r\n\r\n public constructor(participantId: string,\r\n translations: Translations,\r\n originalLanguage?: string,\r\n resultId?: string,\r\n reason?: ResultReason,\r\n text?: string,\r\n duration?: number,\r\n offset?: number,\r\n errorDetails?: string,\r\n json?: string,\r\n properties?: PropertyCollection) {\r\n super(translations, resultId, reason, text, duration, offset, undefined, undefined, errorDetails, json, properties);\r\n this.privId = participantId;\r\n this.privOrigLang = originalLanguage;\r\n }\r\n\r\n /**\r\n * The unique identifier for the participant this result is for.\r\n */\r\n public get participantId(): string {\r\n return this.privId;\r\n }\r\n\r\n /**\r\n * The original language this result was in.\r\n */\r\n public get originalLang(): string {\r\n return this.privOrigLang;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n ConversationConnectionConfig,\r\n IAuthentication,\r\n ServicePropertiesPropertyName,\r\n} from \"../../common.speech/Exports.js\";\r\nimport { ConversationTranslatorConnectionFactory } from \"../../common.speech/Transcription/ConversationTranslatorConnectionFactory.js\";\r\nimport {\r\n IDisposable,\r\n IErrorMessages,\r\n IStringDictionary,\r\n marshalPromiseToCallbacks\r\n} from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n CancellationErrorCode,\r\n CancellationReason,\r\n ProfanityOption,\r\n PropertyCollection,\r\n PropertyId,\r\n ServicePropertyChannel,\r\n SessionEventArgs,\r\n SpeechTranslationConfig,\r\n TranslationRecognitionEventArgs,\r\n TranslationRecognizer\r\n} from \"../Exports.js\";\r\nimport { ConversationImpl } from \"./Conversation.js\";\r\nimport {\r\n ConversationCommon,\r\n ConversationExpirationEventArgs,\r\n ConversationHandler,\r\n ConversationParticipantsChangedEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n ConversationTranslationEventArgs,\r\n IConversationTranslator,\r\n Participant\r\n} from \"./Exports.js\";\r\nimport { Callback, IConversation } from \"./IConversation.js\";\r\n\r\nexport enum SpeechState {\r\n Inactive, Connecting, Connected\r\n}\r\n\r\n// child class of TranslationRecognizer meant only for use with ConversationTranslator\r\nclass ConversationTranslationRecognizer extends TranslationRecognizer {\r\n private privTranslator: ConversationTranslator;\r\n private privSpeechState: SpeechState;\r\n\r\n public constructor(speechConfig: SpeechTranslationConfig, audioConfig: AudioConfig, translator: ConversationTranslator, convGetter: () => ConversationImpl) {\r\n\r\n super(speechConfig, audioConfig, new ConversationTranslatorConnectionFactory(convGetter));\r\n\r\n this.privSpeechState = SpeechState.Inactive;\r\n if (!!translator) {\r\n this.privTranslator = translator;\r\n this.sessionStarted = (): void => {\r\n this.privSpeechState = SpeechState.Connected;\r\n };\r\n\r\n this.sessionStopped = (): void => {\r\n this.privSpeechState = SpeechState.Inactive;\r\n };\r\n\r\n this.recognizing = (tr: TranslationRecognizer, e: TranslationRecognitionEventArgs): void => {\r\n if (!!this.privTranslator.recognizing) {\r\n this.privTranslator.recognizing(this.privTranslator, e);\r\n }\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\r\n this.recognized = async (tr: TranslationRecognizer, e: TranslationRecognitionEventArgs): Promise => {\r\n // if there is an error connecting to the conversation service from the speech service the error will be returned in the ErrorDetails field.\r\n if (e.result?.errorDetails) {\r\n await this.cancelSpeech();\r\n // TODO: format the error message contained in 'errorDetails'\r\n this.fireCancelEvent(e.result.errorDetails);\r\n } else {\r\n if (!!this.privTranslator.recognized) {\r\n this.privTranslator.recognized(this.privTranslator, e);\r\n }\r\n }\r\n return;\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\r\n this.canceled = async (): Promise => {\r\n if (this.privSpeechState !== SpeechState.Inactive) {\r\n try {\r\n await this.cancelSpeech();\r\n } catch (error) {\r\n this.privSpeechState = SpeechState.Inactive;\r\n }\r\n }\r\n };\r\n }\r\n }\r\n\r\n public get state(): SpeechState {\r\n return this.privSpeechState;\r\n }\r\n\r\n public set state(newState: SpeechState) {\r\n this.privSpeechState = newState;\r\n }\r\n\r\n public set authentication(token: IAuthentication) {\r\n this.privReco.authentication = token;\r\n }\r\n\r\n\r\n public onConnection(): void {\r\n this.privSpeechState = SpeechState.Connected;\r\n }\r\n\r\n public async onCancelSpeech(): Promise {\r\n this.privSpeechState = SpeechState.Inactive;\r\n await this.cancelSpeech();\r\n }\r\n\r\n /**\r\n * Fire a cancel event\r\n * @param error\r\n */\r\n private fireCancelEvent(error: string): void {\r\n try {\r\n if (!!this.privTranslator.canceled) {\r\n const cancelEvent: ConversationTranslationCanceledEventArgs = new ConversationTranslationCanceledEventArgs(\r\n CancellationReason.Error,\r\n error,\r\n CancellationErrorCode.RuntimeError\r\n );\r\n\r\n this.privTranslator.canceled(this.privTranslator, cancelEvent);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n }\r\n\r\n private async cancelSpeech(): Promise {\r\n try {\r\n this.stopContinuousRecognitionAsync();\r\n await this.privReco?.disconnect();\r\n this.privSpeechState = SpeechState.Inactive;\r\n } catch (e) {\r\n // ignore the error\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Join, leave or connect to a conversation.\r\n */\r\nexport class ConversationTranslator extends ConversationCommon implements IConversationTranslator, IDisposable {\r\n\r\n public canceled: (sender: ConversationHandler, event: ConversationTranslationCanceledEventArgs) => void;\r\n public conversationExpiration: (sender: IConversationTranslator, event: ConversationExpirationEventArgs) => void;\r\n public participantsChanged: (sender: IConversationTranslator, event: ConversationParticipantsChangedEventArgs) => void;\r\n public sessionStarted: (sender: ConversationHandler, event: SessionEventArgs) => void;\r\n public sessionStopped: (sender: ConversationHandler, event: SessionEventArgs) => void;\r\n public textMessageReceived: (sender: IConversationTranslator, event: ConversationTranslationEventArgs) => void;\r\n\r\n // Callbacks for whole conversation results\r\n public transcribed: (sender: IConversationTranslator, event: ConversationTranslationEventArgs) => void;\r\n public transcribing: (sender: IConversationTranslator, event: ConversationTranslationEventArgs) => void;\r\n\r\n // Callbacks for detecting speech/translation results from self\r\n public recognized: (sender: IConversationTranslator, event: TranslationRecognitionEventArgs) => void;\r\n public recognizing: (sender: IConversationTranslator, event: TranslationRecognitionEventArgs) => void;\r\n\r\n private privSpeechRecognitionLanguage: string;\r\n private privProperties: PropertyCollection;\r\n private privIsDisposed: boolean;\r\n private privCTRecognizer: ConversationTranslationRecognizer;\r\n private privIsSpeaking: boolean;\r\n private privConversation: ConversationImpl;\r\n private privErrors: IErrorMessages = ConversationConnectionConfig.restErrors;\r\n private privPlaceholderKey: string;\r\n private privPlaceholderRegion: string;\r\n\r\n public constructor(audioConfig?: AudioConfig) {\r\n super(audioConfig);\r\n this.privIsDisposed = false;\r\n this.privIsSpeaking = false;\r\n this.privPlaceholderKey = \"abcdefghijklmnopqrstuvwxyz012345\";\r\n this.privPlaceholderRegion = \"westus\";\r\n this.privProperties = new PropertyCollection();\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get speechRecognitionLanguage(): string {\r\n return this.privSpeechRecognitionLanguage;\r\n }\r\n\r\n public get participants(): Participant[] {\r\n return this.privConversation?.participants;\r\n }\r\n\r\n private get canSpeak(): boolean {\r\n\r\n // is there a Conversation websocket available and has the Recognizer been set up\r\n if (!this.privConversation.isConnected || !this.privCTRecognizer) {\r\n return false;\r\n }\r\n\r\n // is the user already speaking\r\n if (this.privIsSpeaking || this.privCTRecognizer.state === SpeechState.Connected || this.privCTRecognizer.state === SpeechState.Connecting) {\r\n return false;\r\n }\r\n\r\n // is the user muted\r\n if (this.privConversation.isMutedByHost) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public onToken(token: IAuthentication): void {\r\n this.privCTRecognizer.authentication = token;\r\n }\r\n\r\n public setServiceProperty(name: string, value: string): void {\r\n const currentProperties: IStringDictionary = JSON.parse(this.privProperties.getProperty(ServicePropertiesPropertyName, \"{}\")) as IStringDictionary;\r\n\r\n currentProperties[name] = value;\r\n\r\n this.privProperties.setProperty(ServicePropertiesPropertyName, JSON.stringify(currentProperties));\r\n }\r\n\r\n /**\r\n * Join a conversation. If this is the host, pass in the previously created Conversation object.\r\n * @param conversation\r\n * @param nickname\r\n * @param lang\r\n * @param cb\r\n * @param err\r\n */\r\n public joinConversationAsync(conversation: IConversation, nickname: string, cb?: Callback, err?: Callback): void;\r\n public joinConversationAsync(conversationId: string, nickname: string, lang: string, cb?: Callback, err?: Callback): void;\r\n public joinConversationAsync(conversation: string | IConversation, nickname: string, param1?: string | Callback, param2?: Callback, param3?: Callback): void {\r\n\r\n try {\r\n\r\n if (typeof conversation === \"string\") {\r\n\r\n Contracts.throwIfNullOrUndefined(conversation, this.privErrors.invalidArgs.replace(\"{arg}\", \"conversation id\"));\r\n Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\r\n\r\n if (!!this.privConversation) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedStart), param3);\r\n }\r\n\r\n let lang: string = param1 as string;\r\n if (lang === undefined || lang === null || lang === \"\") {\r\n lang = ConversationConnectionConfig.defaultLanguageCode;\r\n }\r\n\r\n // create a placeholder config\r\n this.privSpeechTranslationConfig = SpeechTranslationConfig.fromSubscription(\r\n this.privPlaceholderKey,\r\n this.privPlaceholderRegion);\r\n this.privSpeechTranslationConfig.setProfanity(ProfanityOption.Masked);\r\n this.privSpeechTranslationConfig.addTargetLanguage(lang);\r\n this.privSpeechTranslationConfig.setProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage], lang);\r\n this.privSpeechTranslationConfig.setProperty(PropertyId[PropertyId.ConversationTranslator_Name], nickname);\r\n\r\n const propertyIdsToCopy: (string | PropertyId)[] = [\r\n PropertyId.SpeechServiceConnection_Host,\r\n PropertyId.ConversationTranslator_Host,\r\n PropertyId.SpeechServiceConnection_Endpoint,\r\n PropertyId.SpeechServiceConnection_ProxyHostName,\r\n PropertyId.SpeechServiceConnection_ProxyPassword,\r\n PropertyId.SpeechServiceConnection_ProxyPort,\r\n PropertyId.SpeechServiceConnection_ProxyUserName,\r\n \"ConversationTranslator_MultiChannelAudio\",\r\n \"ConversationTranslator_Region\"\r\n ];\r\n\r\n for (const prop of propertyIdsToCopy) {\r\n const value = this.privProperties.getProperty(prop);\r\n if (value) {\r\n const key = typeof prop === \"string\" ? prop : PropertyId[prop];\r\n this.privSpeechTranslationConfig.setProperty(key, value);\r\n }\r\n }\r\n\r\n const currentProperties = JSON.parse(this.privProperties.getProperty(ServicePropertiesPropertyName, \"{}\")) as IStringDictionary;\r\n for (const prop of Object.keys(currentProperties)) {\r\n this.privSpeechTranslationConfig.setServiceProperty(prop, currentProperties[prop], ServicePropertyChannel.UriQueryParameter);\r\n }\r\n\r\n // join the conversation\r\n this.privConversation = new ConversationImpl(this.privSpeechTranslationConfig);\r\n this.privConversation.conversationTranslator = this;\r\n\r\n this.privConversation.joinConversationAsync(\r\n conversation,\r\n nickname,\r\n lang,\r\n ((result: string): void => {\r\n\r\n if (!result) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConnect), param3);\r\n }\r\n\r\n this.privSpeechTranslationConfig.authorizationToken = result;\r\n this.privConversation.room.isHost = false;\r\n\r\n // connect to the ws\r\n this.privConversation.startConversationAsync(\r\n ((): void => {\r\n this.handleCallback(param2, param3);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, param3);\r\n }));\r\n\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, param3);\r\n }));\r\n\r\n } else if (typeof conversation === \"object\") {\r\n\r\n Contracts.throwIfNullOrUndefined(conversation, this.privErrors.invalidArgs.replace(\"{arg}\", \"conversation id\"));\r\n Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\r\n\r\n // save the nickname\r\n this.privProperties.setProperty(PropertyId.ConversationTranslator_Name, nickname);\r\n // ref the conversation object\r\n this.privConversation = conversation as ConversationImpl;\r\n // ref the conversation translator object\r\n this.privConversation.conversationTranslator = this;\r\n this.privConversation.room.isHost = true;\r\n\r\n Contracts.throwIfNullOrUndefined(this.privConversation, this.privErrors.permissionDeniedConnect);\r\n Contracts.throwIfNullOrUndefined(this.privConversation.room.token, this.privErrors.permissionDeniedConnect);\r\n\r\n this.privSpeechTranslationConfig = conversation.config;\r\n\r\n this.handleCallback(param1 as Callback, param2);\r\n } else {\r\n this.handleError(\r\n new Error(this.privErrors.invalidArgs.replace(\"{arg}\", \"invalid conversation type\")),\r\n param2);\r\n }\r\n\r\n } catch (error) {\r\n this.handleError(error, typeof param1 === \"string\" ? param3 : param2);\r\n }\r\n }\r\n\r\n /**\r\n * Leave the conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public leaveConversationAsync(cb?: Callback, err?: Callback): void {\r\n\r\n marshalPromiseToCallbacks((async (): Promise => {\r\n\r\n // stop the speech websocket\r\n await this.cancelSpeech();\r\n // stop the websocket\r\n await this.privConversation.endConversationImplAsync();\r\n // https delete request\r\n await this.privConversation.deleteConversationImplAsync();\r\n this.dispose();\r\n\r\n })(), cb, err);\r\n }\r\n\r\n /**\r\n * Send a text message\r\n * @param message\r\n * @param cb\r\n * @param err\r\n */\r\n public sendTextMessageAsync(message: string, cb?: Callback, err?: Callback): void {\r\n\r\n try {\r\n Contracts.throwIfNullOrUndefined(this.privConversation, this.privErrors.permissionDeniedSend);\r\n Contracts.throwIfNullOrWhitespace(message, this.privErrors.invalidArgs.replace(\"{arg}\", message));\r\n\r\n this.privConversation.sendTextMessageAsync(message, cb, err);\r\n } catch (error) {\r\n\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Start speaking\r\n * @param cb\r\n * @param err\r\n */\r\n public startTranscribingAsync(cb?: Callback, err?: Callback): void {\r\n marshalPromiseToCallbacks((async (): Promise => {\r\n try {\r\n Contracts.throwIfNullOrUndefined(this.privConversation, this.privErrors.permissionDeniedSend);\r\n Contracts.throwIfNullOrUndefined(this.privConversation.room.token, this.privErrors.permissionDeniedConnect);\r\n\r\n if (this.privCTRecognizer === undefined) {\r\n await this.connectTranslatorRecognizer();\r\n }\r\n Contracts.throwIfNullOrUndefined(this.privCTRecognizer, this.privErrors.permissionDeniedSend);\r\n\r\n if (!this.canSpeak) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n\r\n await this.startContinuousRecognition();\r\n\r\n this.privIsSpeaking = true;\r\n } catch (error) {\r\n this.privIsSpeaking = false;\r\n await this.cancelSpeech();\r\n throw error;\r\n }\r\n })(), cb, err);\r\n }\r\n\r\n /**\r\n * Stop speaking\r\n * @param cb\r\n * @param err\r\n */\r\n public stopTranscribingAsync(cb?: Callback, err?: Callback): void {\r\n marshalPromiseToCallbacks((async (): Promise => {\r\n try {\r\n if (!this.privIsSpeaking) {\r\n // stop speech\r\n await this.cancelSpeech();\r\n return;\r\n }\r\n\r\n // stop the recognition but leave the websocket open\r\n this.privIsSpeaking = false;\r\n await new Promise((resolve: () => void, reject: (error: string) => void): void => {\r\n this.privCTRecognizer.stopContinuousRecognitionAsync(resolve, reject);\r\n });\r\n\r\n } catch (error) {\r\n await this.cancelSpeech();\r\n }\r\n })(), cb, err);\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public dispose(reason?: string, success?: () => void, err?: (error: string) => void): void {\r\n marshalPromiseToCallbacks((async (): Promise => {\r\n if (this.isDisposed && !this.privIsSpeaking) {\r\n return;\r\n }\r\n await this.cancelSpeech();\r\n this.privIsDisposed = true;\r\n this.privSpeechTranslationConfig.close();\r\n this.privSpeechRecognitionLanguage = undefined;\r\n this.privProperties = undefined;\r\n this.privAudioConfig = undefined;\r\n this.privSpeechTranslationConfig = undefined;\r\n this.privConversation.dispose();\r\n this.privConversation = undefined;\r\n })(), success, err);\r\n }\r\n\r\n /**\r\n * Cancel the speech websocket\r\n */\r\n private async cancelSpeech(): Promise {\r\n try {\r\n this.privIsSpeaking = false;\r\n await this.privCTRecognizer?.onCancelSpeech();\r\n this.privCTRecognizer = undefined;\r\n } catch (e) {\r\n // ignore the error\r\n }\r\n }\r\n\r\n /**\r\n * Connect to the speech translation recognizer.\r\n * Currently there is no language validation performed before sending the SpeechLanguage code to the service.\r\n * If it's an invalid language the raw error will be: 'Error during WebSocket handshake: Unexpected response code: 400'\r\n * e.g. pass in 'fr' instead of 'fr-FR', or a text-only language 'cy'\r\n */\r\n private async connectTranslatorRecognizer(): Promise {\r\n try {\r\n\r\n if (this.privAudioConfig === undefined) {\r\n this.privAudioConfig = AudioConfig.fromDefaultMicrophoneInput();\r\n }\r\n\r\n // clear the temp subscription key if it's a participant joining\r\n if (this.privSpeechTranslationConfig.getProperty(PropertyId[PropertyId.SpeechServiceConnection_Key])\r\n === this.privPlaceholderKey) {\r\n this.privSpeechTranslationConfig.setProperty(PropertyId[PropertyId.SpeechServiceConnection_Key], \"\");\r\n }\r\n\r\n const convGetter = (): ConversationImpl => this.privConversation;\r\n this.privCTRecognizer = new ConversationTranslationRecognizer(this.privSpeechTranslationConfig, this.privAudioConfig, this, convGetter);\r\n } catch (error) {\r\n await this.cancelSpeech();\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Handle the start speaking request\r\n */\r\n private startContinuousRecognition(): Promise {\r\n return new Promise((resolve: () => void, reject: (error: string) => void): void => {\r\n this.privCTRecognizer.startContinuousRecognitionAsync(resolve, reject);\r\n });\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nexport { Conversation, ConversationImpl } from \"./Conversation.js\";\r\nexport { ConversationInfo } from \"./IConversation.js\";\r\nexport { ConversationCommon } from \"./ConversationCommon.js\";\r\nexport { ConversationExpirationEventArgs } from \"./ConversationExpirationEventArgs.js\";\r\nexport { ConversationParticipantsChangedEventArgs } from \"./ConversationParticipantsChangedEventArgs.js\";\r\nexport { ConversationTranslationCanceledEventArgs } from \"./ConversationTranslationCanceledEventArgs.js\";\r\nexport { ConversationTranslationEventArgs } from \"./ConversationTranslationEventArgs.js\";\r\nexport { ConversationTranslationResult } from \"./ConversationTranslationResult.js\";\r\nexport { ConversationTranslator } from \"./ConversationTranslator.js\";\r\nexport { ConversationTranscriber } from \"./ConversationTranscriber.js\";\r\nexport { IParticipant, Participant, User, VoiceSignature } from \"./IParticipant.js\";\r\nexport { ParticipantChangedReason } from \"./ParticipantChangedReason.js\";\r\nexport { ConversationHandler, ConversationTranscriptionHandler, IConversationTranslator } from \"./ConversationHandler.js\";\r\nexport { Meeting, MeetingImpl } from \"./Meeting.js\";\r\nexport { MeetingInfo } from \"./IMeeting.js\";\r\nexport { MeetingTranscriptionCanceledEventArgs } from \"./MeetingTranscriptionCanceledEventArgs.js\";\r\nexport { MeetingTranscriber } from \"./MeetingTranscriber.js\";\r\nexport { MeetingHandler, MeetingTranscriptionHandler } from \"./MeetingHandler.js\";\r\nexport { ConversationTranscriptionResult } from \"./ConversationTranscriptionResult.js\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { PropertyCollection } from \"../Exports.js\";\r\n\r\n/**\r\n * Represents a user in a conversation.\r\n * Added in version 1.4.0\r\n */\r\nexport interface IUser {\r\n /** Gets the user's ID */\r\n readonly userId: string;\r\n}\r\n\r\nexport class User implements IUser {\r\n private privUserId: string;\r\n\r\n public constructor(userId: string) {\r\n this.privUserId = userId;\r\n }\r\n\r\n public get userId(): string {\r\n return this.privUserId;\r\n }\r\n}\r\n\r\nexport interface VoiceSignature {\r\n Version: number;\r\n Tag: string;\r\n Data: string;\r\n}\r\n\r\nexport interface TranscriptionParticipant {\r\n /** The unique identifier for the participant. */\r\n readonly id: string;\r\n /** The participant's preferred spoken language. */\r\n readonly preferredLanguage: string;\r\n /** The participant's voice signature */\r\n readonly voice: string;\r\n}\r\n\r\n/**\r\n * Represents a participant in a conversation.\r\n * Added in version 1.4.0\r\n */\r\nexport interface IParticipant extends TranscriptionParticipant {\r\n /** Gets the colour of the user's avatar as an HTML hex string (e.g. FF0000 for red). */\r\n readonly avatar: string;\r\n /**\r\n * The participant's display name. Please note that there may be more than one participant\r\n * with the same name. You can use property to tell them apart.\r\n */\r\n readonly displayName: string;\r\n /** Gets whether or not this participant is the host. */\r\n readonly isHost: boolean;\r\n /** Gets whether or not this participant is muted. */\r\n readonly isMuted: boolean;\r\n /** Gets whether or not the participant is using Text To Speech (TTS). */\r\n readonly isUsingTts: boolean;\r\n /** Contains properties of the participant. */\r\n readonly properties: PropertyCollection;\r\n}\r\n\r\nexport class Participant implements IParticipant {\r\n private privAvatar: string;\r\n private privDisplayName: string;\r\n private privId: string;\r\n private privIsHost: boolean;\r\n private privIsMuted: boolean;\r\n private privIsUsingTts: boolean;\r\n private privPreferredLanguage: string;\r\n private privVoice: string;\r\n private privProperties: PropertyCollection;\r\n\r\n public constructor(id: string, avatar: string, displayName: string, isHost: boolean, isMuted: boolean, isUsingTts: boolean, preferredLanguage: string, voice?: string) {\r\n this.privId = id;\r\n this.privAvatar = avatar;\r\n this.privDisplayName = displayName;\r\n this.privIsHost = isHost;\r\n this.privIsMuted = isMuted;\r\n this.privIsUsingTts = isUsingTts;\r\n this.privPreferredLanguage = preferredLanguage;\r\n this.privVoice = voice;\r\n this.privProperties = new PropertyCollection();\r\n }\r\n\r\n public get avatar(): string {\r\n return this.privAvatar;\r\n }\r\n\r\n public get displayName(): string {\r\n return this.privDisplayName;\r\n }\r\n\r\n public get id(): string {\r\n return this.privId;\r\n }\r\n\r\n public get preferredLanguage(): string {\r\n return this.privPreferredLanguage;\r\n }\r\n\r\n public get isHost(): boolean {\r\n return this.privIsHost;\r\n }\r\n\r\n public get isMuted(): boolean {\r\n return this.privIsMuted;\r\n }\r\n\r\n public get isUsingTts(): boolean {\r\n return this.privIsUsingTts;\r\n }\r\n\r\n public get voice(): string {\r\n return this.privVoice;\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public static From(id: string, language: string, voice: string): IParticipant {\r\n return new Participant(id, \"\", id, false, false, false, language, voice);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n ConversationConnectionConfig,\r\n ConversationManager,\r\n ConversationReceivedTranslationEventArgs,\r\n ConversationRecognizer,\r\n ConversationTranslatorCommandTypes,\r\n ConversationTranslatorMessageTypes,\r\n IInternalConversation,\r\n IInternalParticipant,\r\n InternalParticipants,\r\n MuteAllEventArgs,\r\n ParticipantAttributeEventArgs,\r\n ParticipantEventArgs,\r\n ParticipantsListEventArgs,\r\n TranscriberRecognizer\r\n} from \"../../common.speech/Exports.js\";\r\nimport {\r\n IDisposable,\r\n IErrorMessages,\r\n marshalPromiseToCallbacks\r\n} from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../Contracts.js\";\r\nimport {\r\n ConnectionEventArgs,\r\n ConversationExpirationEventArgs,\r\n ConversationParticipantsChangedEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n ConversationTranslationEventArgs,\r\n ConversationTranslator,\r\n Participant,\r\n ParticipantChangedReason,\r\n PropertyCollection,\r\n PropertyId,\r\n SpeechTranslationConfig,\r\n} from \"../Exports.js\";\r\nimport { SpeechTranslationConfigImpl } from \"../SpeechTranslationConfig.js\";\r\nimport { Callback, MeetingInfo, MeetingProperties, IMeeting } from \"./IMeeting.js\";\r\nimport { IParticipant, IUser, TranscriptionParticipant } from \"./IParticipant.js\";\r\n\r\nexport abstract class Meeting implements IMeeting {\r\n\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n public abstract get authorizationToken(): string;\r\n\r\n public abstract get config(): SpeechTranslationConfig;\r\n\r\n public abstract get meetingId(): string;\r\n public abstract get meetingInfo(): MeetingInfo;\r\n public abstract get properties(): PropertyCollection;\r\n public abstract get speechRecognitionLanguage(): string;\r\n public abstract get participants(): Participant[];\r\n public abstract set authorizationToken(value: string);\r\n public abstract get isConnected(): boolean;\r\n\r\n /**\r\n * Create a meeting\r\n * @param speechConfig\r\n * @param meetingId\r\n * @param cb\r\n * @param err\r\n */\r\n public static createMeetingAsync(speechConfig: SpeechTranslationConfig, meetingId: string, arg3?: Callback, arg4?: Callback): Meeting {\r\n Contracts.throwIfNullOrUndefined(speechConfig, ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"config\"));\r\n Contracts.throwIfNullOrUndefined(speechConfig.region, ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"SpeechServiceConnection_Region\"));\r\n Contracts.throwIfNull(meetingId, \"meetingId\");\r\n if (meetingId.length === 0) {\r\n throw new Error(\"meetingId cannot be empty\");\r\n }\r\n if (!speechConfig.subscriptionKey && !speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceAuthorization_Token])) {\r\n Contracts.throwIfNullOrUndefined(speechConfig.subscriptionKey, ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"SpeechServiceConnection_Key\"));\r\n }\r\n const meetingImpl = new MeetingImpl(speechConfig, meetingId);\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n marshalPromiseToCallbacks((async (): Promise => {})(), arg3, arg4);\r\n return meetingImpl;\r\n }\r\n\r\n /** Start a meeting. */\r\n public abstract startMeetingAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Delete a meeting. After this no one will be able to join the meeting. */\r\n public abstract deleteMeetingAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** End a meeting. */\r\n public abstract endMeetingAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Lock a meeting. This will prevent new participants from joining. */\r\n public abstract lockMeetingAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Add Participant to Meeting. */\r\n public abstract addParticipantAsync(participant: IParticipant, cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Mute all other participants in the Meeting. After this no other participants will\r\n * have their speech recognitions broadcast, nor be able to send text messages.\r\n */\r\n public abstract muteAllParticipantsAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Mute a participant.\r\n * @param userId A user identifier\r\n */\r\n public abstract muteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Remove a participant from a meeting using the user id, Participant or User object\r\n * @param userId A user identifier\r\n */\r\n public abstract removeParticipantAsync(userId: string | IParticipant | IUser, cb?: Callback, err?: Callback): void;\r\n\r\n /** Unlocks a meeting. */\r\n public abstract unlockMeetingAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Unmute all other participants in the meeting. */\r\n public abstract unmuteAllParticipantsAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Unmute a participant.\r\n * @param userId A user identifier\r\n */\r\n public abstract unmuteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void;\r\n}\r\n\r\nexport class MeetingImpl extends Meeting implements IDisposable {\r\n\r\n private privConfig: SpeechTranslationConfig;\r\n private privProperties: PropertyCollection;\r\n private privLanguage: string;\r\n private privToken: string;\r\n private privIsDisposed: boolean;\r\n private privRoom: IInternalConversation;\r\n private privManager: ConversationManager;\r\n private privConversationRecognizer: ConversationRecognizer;\r\n private privIsConnected: boolean;\r\n private privParticipants: InternalParticipants;\r\n private privIsReady: boolean;\r\n private privConversationTranslator: ConversationTranslator;\r\n private privTranscriberRecognizer: TranscriberRecognizer;\r\n private privErrors: IErrorMessages = ConversationConnectionConfig.restErrors;\r\n private privConversationId: string;\r\n private readonly privTextMessageMaxLength: number;\r\n\r\n /**\r\n * Create a Meeting impl\r\n * @param speechConfig\r\n * @param {string} id - optional conversationId\r\n */\r\n public constructor(speechConfig: SpeechTranslationConfig, id: string) {\r\n super();\r\n this.privIsConnected = false;\r\n this.privIsDisposed = false;\r\n this.privConversationId = \"\";\r\n this.privProperties = new PropertyCollection();\r\n this.privManager = new ConversationManager();\r\n\r\n // check the speech language\r\n const language: string = speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n if (!language) {\r\n speechConfig.setProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage], ConversationConnectionConfig.defaultLanguageCode);\r\n }\r\n this.privLanguage = speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n this.privConversationId = id;\r\n\r\n // save the speech config for future usage\r\n this.privConfig = speechConfig;\r\n\r\n // save the config properties\r\n const configImpl = speechConfig as SpeechTranslationConfigImpl;\r\n Contracts.throwIfNull(configImpl, \"speechConfig\");\r\n this.privProperties = configImpl.properties.clone();\r\n this.privIsConnected = false;\r\n this.privParticipants = new InternalParticipants();\r\n this.privIsReady = false;\r\n this.privTextMessageMaxLength = 1000;\r\n }\r\n\r\n // get the internal data about a conversation\r\n public get room(): IInternalConversation {\r\n return this.privRoom;\r\n }\r\n\r\n // get the wrapper for connecting to the websockets\r\n public get connection(): ConversationRecognizer {\r\n return this.privConversationRecognizer; // this.privConnection;\r\n }\r\n\r\n // get the config\r\n public get config(): SpeechTranslationConfig {\r\n return this.privConfig;\r\n }\r\n\r\n // get the meeting Id\r\n public get meetingId(): string {\r\n return this.privRoom ? this.privRoom.roomId : this.privConversationId;\r\n }\r\n\r\n // get the properties\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n // get the speech language\r\n public get speechRecognitionLanguage(): string {\r\n return this.privLanguage;\r\n }\r\n\r\n public get isMutedByHost(): boolean {\r\n return this.privParticipants.me?.isHost ? false : this.privParticipants.me?.isMuted;\r\n }\r\n\r\n public get isConnected(): boolean {\r\n return this.privIsConnected && this.privIsReady;\r\n }\r\n\r\n public get participants(): Participant[] {\r\n return this.toParticipants(true);\r\n }\r\n\r\n public get me(): Participant {\r\n return this.toParticipant(this.privParticipants.me);\r\n }\r\n\r\n public get host(): Participant {\r\n return this.toParticipant(this.privParticipants.host);\r\n }\r\n\r\n public get transcriberRecognizer(): TranscriberRecognizer {\r\n return this.privTranscriberRecognizer;\r\n }\r\n\r\n public get meetingInfo(): MeetingInfo {\r\n const convId: string = this.meetingId;\r\n const p: TranscriptionParticipant[] = this.participants.map((part: Participant): TranscriptionParticipant => (\r\n {\r\n id: part.id,\r\n preferredLanguage: part.preferredLanguage,\r\n voice: part.voice\r\n }\r\n ));\r\n const props: MeetingProperties = {};\r\n for (const key of ConversationConnectionConfig.transcriptionEventKeys) {\r\n const val: string = this.properties.getProperty(key, \"\");\r\n if (val !== \"\") {\r\n props[key] = val;\r\n }\r\n }\r\n const info: MeetingInfo = { id: convId, participants: p, meetingProperties: props };\r\n return info;\r\n }\r\n\r\n private get canSend(): boolean {\r\n return this.privIsConnected && !this.privParticipants.me?.isMuted;\r\n }\r\n\r\n private get canSendAsHost(): boolean {\r\n return this.privIsConnected && this.privParticipants.me?.isHost;\r\n }\r\n\r\n // get / set the speech auth token\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n public get authorizationToken(): string {\r\n return this.privToken;\r\n }\r\n\r\n public set authorizationToken(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"authorizationToken\");\r\n this.privToken = value;\r\n }\r\n\r\n /**\r\n * Create a new meeting as Host\r\n * @param cb\r\n * @param err\r\n */\r\n public createMeetingAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n if (!!this.privConversationRecognizer) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedStart), err);\r\n }\r\n this.privManager.createOrJoin(this.privProperties, undefined,\r\n ((room: IInternalConversation): void => {\r\n if (!room) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConnect), err);\r\n }\r\n this.privRoom = room;\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Starts a new meeting as host.\r\n * @param cb\r\n * @param err\r\n */\r\n public startMeetingAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n // check if there is already a recognizer\r\n if (!!this.privConversationRecognizer) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedStart), err);\r\n }\r\n // check if there is conversation data available\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedConnect);\r\n // connect to the conversation websocket\r\n this.privParticipants.meId = this.privRoom.participantId;\r\n\r\n // Because ConversationTranslator manually sets up and manages the connection, Conversation\r\n // has to forward serviceRecognizer connection events that usually get passed automatically\r\n this.privConversationRecognizer.connected = this.onConnected;\r\n this.privConversationRecognizer.disconnected = this.onDisconnected;\r\n this.privConversationRecognizer.canceled = this.onCanceled;\r\n\r\n this.privConversationRecognizer.participantUpdateCommandReceived = this.onParticipantUpdateCommandReceived;\r\n this.privConversationRecognizer.lockRoomCommandReceived = this.onLockRoomCommandReceived;\r\n this.privConversationRecognizer.muteAllCommandReceived = this.onMuteAllCommandReceived;\r\n this.privConversationRecognizer.participantJoinCommandReceived = this.onParticipantJoinCommandReceived;\r\n this.privConversationRecognizer.participantLeaveCommandReceived = this.onParticipantLeaveCommandReceived;\r\n this.privConversationRecognizer.translationReceived = this.onTranslationReceived;\r\n this.privConversationRecognizer.participantsListReceived = this.onParticipantsListReceived;\r\n this.privConversationRecognizer.conversationExpiration = this.onConversationExpiration;\r\n\r\n this.privConversationRecognizer.connect(this.privRoom.token,\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Join a meeting as a participant.\r\n * @param { IParticipant } participant - participant to add\r\n * @param cb\r\n * @param err\r\n */\r\n public addParticipantAsync(participant: IParticipant, cb?: Callback, err?: Callback): void {\r\n Contracts.throwIfNullOrUndefined(participant, \"Participant\");\r\n marshalPromiseToCallbacks(this.addParticipantImplAsync(participant), cb, err);\r\n }\r\n\r\n /**\r\n * Join a meeting as a participant.\r\n * @param meeting\r\n * @param nickname\r\n * @param lang\r\n * @param cb\r\n * @param err\r\n */\r\n public joinMeetingAsync(meetingId: string, nickname: string, lang: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n // TODO\r\n // if (!!this.privConversationRecognizer) {\r\n // throw new Error(this.privErrors.permissionDeniedStart);\r\n // }\r\n Contracts.throwIfNullOrWhitespace(meetingId, this.privErrors.invalidArgs.replace(\"{arg}\", \"conversationId\"));\r\n Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\r\n Contracts.throwIfNullOrWhitespace(lang, this.privErrors.invalidArgs.replace(\"{arg}\", \"language\"));\r\n // join the conversation\r\n this.privManager.createOrJoin(this.privProperties, meetingId,\r\n ((room: IInternalConversation): void => {\r\n Contracts.throwIfNullOrUndefined(room, this.privErrors.permissionDeniedConnect);\r\n this.privRoom = room;\r\n this.privConfig.authorizationToken = room.cognitiveSpeechAuthToken;\r\n // join callback\r\n if (!!cb) {\r\n cb(room.cognitiveSpeechAuthToken);\r\n }\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Deletes a meeting\r\n * @param cb\r\n * @param err\r\n */\r\n public deleteMeetingAsync(cb?: Callback, err?: Callback): void {\r\n marshalPromiseToCallbacks(this.deleteMeetingImplAsync(), cb, err);\r\n }\r\n\r\n public async deleteMeetingImplAsync(): Promise {\r\n Contracts.throwIfNullOrUndefined(this.privProperties, this.privErrors.permissionDeniedConnect);\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.token, this.privErrors.permissionDeniedConnect);\r\n await this.privManager.leave(this.privProperties, this.privRoom.token);\r\n\r\n this.dispose();\r\n }\r\n\r\n /**\r\n * Issues a request to close the client websockets\r\n * @param cb\r\n * @param err\r\n */\r\n public endMeetingAsync(cb?: Callback, err?: Callback): void {\r\n marshalPromiseToCallbacks(this.endMeetingImplAsync(), cb, err);\r\n }\r\n\r\n public endMeetingImplAsync(): Promise {\r\n return this.close(true);\r\n }\r\n\r\n /**\r\n * Issues a request to lock the conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public lockMeetingAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"lock\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getLockCommand(true),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to mute the meeting\r\n * @param cb\r\n * @param err\r\n */\r\n public muteAllParticipantsAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privConversationRecognizer, this.privErrors.permissionDeniedSend);\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n // check the user's permissions\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"mute\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteAllCommand(true),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to mute a participant in the meeting\r\n * @param userId\r\n * @param cb\r\n * @param err\r\n */\r\n public muteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(userId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n // check the connection is open (host + participant can perform the mute command)\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n // if not host, check the participant is not muting another participant\r\n if (!this.me.isHost && this.me.id !== userId) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"mute\")), err);\r\n }\r\n // check the user exists\r\n const exists: number = this.privParticipants.getParticipantIndex(userId);\r\n if (exists === -1) {\r\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteCommand(userId, true), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to remove a participant from the conversation\r\n * @param userId\r\n * @param cb\r\n * @param err\r\n */\r\n public removeParticipantAsync(userId: string | IParticipant | IUser, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n if (!!this.privTranscriberRecognizer && userId.hasOwnProperty(\"id\")) {\r\n // Assume this is a transcription participant\r\n marshalPromiseToCallbacks(this.removeParticipantImplAsync(userId as IParticipant), cb, err);\r\n } else {\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"remove\")), err);\r\n }\r\n let participantId = \"\";\r\n if (typeof userId === \"string\") {\r\n participantId = userId;\r\n } else if (userId.hasOwnProperty(\"id\")) {\r\n const participant: IParticipant = userId as IParticipant;\r\n participantId = participant.id;\r\n } else if (userId.hasOwnProperty(\"userId\")) {\r\n const user: IUser = userId as IUser;\r\n participantId = user.userId;\r\n }\r\n Contracts.throwIfNullOrWhitespace(participantId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\r\n // check the participant exists\r\n const index: number = this.participants.findIndex((p: Participant): boolean => p.id === participantId);\r\n if (index === -1) {\r\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getEjectCommand(participantId), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to unlock the meeting\r\n * @param cb\r\n * @param err\r\n */\r\n public unlockMeetingAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"unlock\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getLockCommand(false), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to unmute all participants in the meeting\r\n * @param cb\r\n * @param err\r\n */\r\n public unmuteAllParticipantsAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"unmute all\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteAllCommand(false), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to unmute a participant in the meeting\r\n * @param userId\r\n * @param cb\r\n * @param err\r\n */\r\n public unmuteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(userId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n // check the connection is open (host + participant can perform the mute command)\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n // if not host, check the participant is not muting another participant\r\n if (!this.me.isHost && this.me.id !== userId) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"mute\")), err);\r\n }\r\n // check the user exists\r\n const exists: number = this.privParticipants.getParticipantIndex(userId);\r\n if (exists === -1) {\r\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteCommand(userId, false), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Send a text message\r\n * @param message\r\n * @param cb\r\n * @param err\r\n */\r\n public sendTextMessageAsync(message: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(message, this.privErrors.invalidArgs.replace(\"{arg}\", \"message\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n // TODO: is a max length check required?\r\n if (message.length > this.privTextMessageMaxLength) {\r\n this.handleError(new Error(this.privErrors.invalidArgs.replace(\"{arg}\", \"message length\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMessageCommand(message), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Set translated to languages\r\n * @param {string[]} languages - languages to translate to\r\n * @param cb\r\n * @param err\r\n */\r\n public setTranslatedLanguagesAsync(languages: string[], cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfArrayEmptyOrWhitespace(languages, this.privErrors.invalidArgs.replace(\"{arg}\", \"languages\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getSetTranslateToLanguagesCommand(languages),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Change nickname\r\n * @param {string} nickname - new nickname for the room\r\n * @param cb\r\n * @param err\r\n */\r\n public changeNicknameAsync(nickname: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getChangeNicknameCommand(nickname),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public dispose(): void {\r\n if (this.isDisposed) {\r\n return;\r\n }\r\n this.privIsDisposed = true;\r\n if (!!this.config) {\r\n this.config.close();\r\n }\r\n this.privConfig = undefined;\r\n this.privLanguage = undefined;\r\n this.privProperties = undefined;\r\n this.privRoom = undefined;\r\n this.privToken = undefined;\r\n this.privManager = undefined;\r\n this.privIsConnected = false;\r\n this.privIsReady = false;\r\n this.privParticipants = undefined;\r\n }\r\n\r\n public async connectTranscriberRecognizer(recognizer: TranscriberRecognizer): Promise {\r\n if (!!this.privTranscriberRecognizer) {\r\n await this.privTranscriberRecognizer.close();\r\n }\r\n await recognizer.enforceAudioGating();\r\n this.privTranscriberRecognizer = recognizer;\r\n this.privTranscriberRecognizer.meeting = this;\r\n }\r\n\r\n public getKeepAlive(): string {\r\n const nickname: string = (!!this.me) ? this.me.displayName : \"default_nickname\";\r\n return JSON.stringify({\r\n id: \"0\",\r\n nickname,\r\n participantId: this.privRoom.participantId,\r\n roomId: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.keepAlive\r\n });\r\n }\r\n\r\n /** websocket callbacks */\r\n /* eslint-disable @typescript-eslint/typedef */\r\n private onConnected = (e: ConnectionEventArgs): void => {\r\n this.privIsConnected = true;\r\n try {\r\n if (!!this.privConversationTranslator?.sessionStarted) {\r\n this.privConversationTranslator.sessionStarted(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onDisconnected = (e: ConnectionEventArgs): void => {\r\n try {\r\n if (!!this.privConversationTranslator?.sessionStopped) {\r\n this.privConversationTranslator.sessionStopped(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n } finally {\r\n void this.close(false);\r\n }\r\n };\r\n\r\n private onCanceled = (r: ConversationRecognizer, e: ConversationTranslationCanceledEventArgs): void => {\r\n try {\r\n if (!!this.privConversationTranslator?.canceled) {\r\n this.privConversationTranslator.canceled(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantUpdateCommandReceived = (r: ConversationRecognizer, e: ParticipantAttributeEventArgs): void => {\r\n try {\r\n const updatedParticipant: IInternalParticipant = this.privParticipants.getParticipant(e.id);\r\n if (updatedParticipant !== undefined) {\r\n\r\n switch (e.key) {\r\n case ConversationTranslatorCommandTypes.changeNickname:\r\n updatedParticipant.displayName = e.value as string;\r\n break;\r\n case ConversationTranslatorCommandTypes.setUseTTS:\r\n updatedParticipant.isUsingTts = e.value as boolean;\r\n break;\r\n case ConversationTranslatorCommandTypes.setProfanityFiltering:\r\n updatedParticipant.profanity = e.value as boolean;\r\n break;\r\n case ConversationTranslatorCommandTypes.setMute:\r\n updatedParticipant.isMuted = e.value as boolean;\r\n break;\r\n case ConversationTranslatorCommandTypes.setTranslateToLanguages:\r\n updatedParticipant.translateToLanguages = e.value as string[];\r\n break;\r\n }\r\n this.privParticipants.addOrUpdateParticipant(updatedParticipant);\r\n\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.Updated,\r\n [this.toParticipant(updatedParticipant)], e.sessionId));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onLockRoomCommandReceived = (): void => {\r\n // TODO\r\n };\r\n\r\n private onMuteAllCommandReceived = (r: ConversationRecognizer, e: MuteAllEventArgs): void => {\r\n try {\r\n this.privParticipants.participants.forEach((p: IInternalParticipant): boolean => p.isMuted = (p.isHost ? false : e.isMuted));\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.Updated,\r\n this.toParticipants(false), e.sessionId));\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantJoinCommandReceived = (r: ConversationRecognizer, e: ParticipantEventArgs): void => {\r\n try {\r\n const newParticipant: IInternalParticipant = this.privParticipants.addOrUpdateParticipant(e.participant);\r\n if (newParticipant !== undefined) {\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.JoinedConversation,\r\n [this.toParticipant(newParticipant)], e.sessionId));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantLeaveCommandReceived = (r: ConversationRecognizer, e: ParticipantEventArgs): void => {\r\n try {\r\n const ejectedParticipant: IInternalParticipant = this.privParticipants.getParticipant(e.participant.id);\r\n if (ejectedParticipant !== undefined) {\r\n // remove the participant from the internal participants list\r\n this.privParticipants.deleteParticipant(e.participant.id);\r\n if (!!this.privConversationTranslator) {\r\n // notify subscribers that the participant has left the conversation\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.LeftConversation,\r\n [this.toParticipant(ejectedParticipant)], e.sessionId));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onTranslationReceived = (r: ConversationRecognizer, e: ConversationReceivedTranslationEventArgs): void => {\r\n try {\r\n switch (e.command) {\r\n case ConversationTranslatorMessageTypes.final:\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.transcribed(\r\n this.privConversationTranslator,\r\n new ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\r\n }\r\n break;\r\n case ConversationTranslatorMessageTypes.partial:\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.transcribing(\r\n this.privConversationTranslator,\r\n new ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\r\n }\r\n break;\r\n case ConversationTranslatorMessageTypes.instantMessage:\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.textMessageReceived(\r\n this.privConversationTranslator,\r\n new ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\r\n }\r\n break;\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantsListReceived = (r: ConversationRecognizer, e: ParticipantsListEventArgs): void => {\r\n try {\r\n // check if the session token needs to be updated\r\n if (e.sessionToken !== undefined && e.sessionToken !== null) {\r\n this.privRoom.token = e.sessionToken;\r\n }\r\n // save the participants\r\n this.privParticipants.participants = [...e.participants];\r\n // enable the conversation\r\n if (this.privParticipants.me !== undefined) {\r\n this.privIsReady = true;\r\n }\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.JoinedConversation, this.toParticipants(true), e.sessionId));\r\n }\r\n // if this is the host, update the nickname if needed\r\n if (this.me.isHost) {\r\n const nickname: string = this.privConversationTranslator?.properties.getProperty(PropertyId.ConversationTranslator_Name);\r\n if (nickname !== undefined && nickname.length > 0 && nickname !== this.me.displayName) {\r\n // issue a change nickname request\r\n this.changeNicknameAsync(nickname);\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onConversationExpiration = (r: ConversationRecognizer, e: ConversationExpirationEventArgs): void => {\r\n try {\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.conversationExpiration(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n /* eslint-enable @typescript-eslint/typedef */\r\n\r\n private addParticipantImplAsync(participant: IParticipant): Promise {\r\n const newParticipant: IInternalParticipant = this.privParticipants.addOrUpdateParticipant(participant);\r\n if (newParticipant !== undefined) {\r\n if (!!this.privTranscriberRecognizer) {\r\n const meetingInfo = this.meetingInfo;\r\n meetingInfo.participants = [participant];\r\n return this.privTranscriberRecognizer.pushMeetingEvent(meetingInfo, \"join\");\r\n }\r\n }\r\n }\r\n\r\n private removeParticipantImplAsync(participant: IParticipant): Promise {\r\n this.privParticipants.deleteParticipant(participant.id);\r\n const meetingInfo = this.meetingInfo;\r\n meetingInfo.participants = [participant];\r\n return this.privTranscriberRecognizer.pushMeetingEvent(meetingInfo, \"leave\");\r\n }\r\n\r\n private async close(dispose: boolean): Promise {\r\n try {\r\n this.privIsConnected = false;\r\n await this.privConversationRecognizer?.close();\r\n this.privConversationRecognizer = undefined;\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.dispose();\r\n }\r\n } catch (e) {\r\n // ignore error\r\n throw e;\r\n }\r\n if (dispose) {\r\n this.dispose();\r\n }\r\n }\r\n\r\n /** Helpers */\r\n private handleCallback(cb: () => void, err: (message: string) => void): void {\r\n if (!!cb) {\r\n try {\r\n cb();\r\n } catch (e) {\r\n if (!!err) {\r\n err(e as string);\r\n }\r\n }\r\n cb = undefined;\r\n }\r\n }\r\n\r\n private handleError(error: any, err: (message: string) => void): void {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n }\r\n\r\n /** Participant Helpers */\r\n private toParticipants(includeHost: boolean): Participant[] {\r\n\r\n const participants: Participant[] = this.privParticipants.participants.map((p: IInternalParticipant): Participant => ( this.toParticipant(p) ) );\r\n if (!includeHost) {\r\n return participants.filter((p: Participant): boolean => p.isHost === false);\r\n } else {\r\n return participants;\r\n }\r\n }\r\n\r\n private toParticipant(p: IInternalParticipant): Participant {\r\n return new Participant(p.id, p.avatar, p.displayName, p.isHost, p.isMuted, p.isUsingTts, p.preferredLanguage, p.voice);\r\n }\r\n\r\n private getMuteAllCommand(isMuted: boolean): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingd\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setMuteAll,\r\n participantId: this.privRoom.participantId, // the id of the host\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: isMuted\r\n });\r\n }\r\n\r\n private getMuteCommand(participantId: string, isMuted: boolean): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setMute,\r\n // eslint-disable-next-line object-shorthand\r\n participantId: participantId,\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: isMuted\r\n });\r\n }\r\n\r\n private getLockCommand(isLocked: boolean): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setLockState,\r\n participantId: this.privRoom.participantId,\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: isLocked\r\n });\r\n }\r\n\r\n private getEjectCommand(participantId: string): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\r\n Contracts.throwIfNullOrWhitespace(participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.ejectParticipant,\r\n // eslint-disable-next-line object-shorthand\r\n participantId: participantId,\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n });\r\n }\r\n\r\n private getSetTranslateToLanguagesCommand(languages: string[]): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setTranslateToLanguages,\r\n participantId: this.privRoom.participantId, // the id of the host\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: languages\r\n });\r\n }\r\n\r\n private getChangeNicknameCommand(nickname: string): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\r\n Contracts.throwIfNullOrWhitespace(nickname, \"nickname\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.changeNickname,\r\n nickname,\r\n participantId: this.privRoom.participantId, // the id of the host\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: nickname\r\n });\r\n }\r\n\r\n private getMessageCommand(message: string): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"meetingId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n Contracts.throwIfNullOrWhitespace(message, \"message\");\r\n\r\n return JSON.stringify({\r\n participantId: this.privRoom.participantId,\r\n roomId: this.privRoom.roomId,\r\n text: message,\r\n type: ConversationTranslatorMessageTypes.instantMessage\r\n });\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { TranscriberRecognizer } from \"../../common.speech/Exports.js\";\r\nimport { marshalPromiseToCallbacks } from \"../../common/Exports.js\";\r\nimport { Contracts } from \"../Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n CancellationEventArgs,\r\n Connection,\r\n MeetingTranscriptionEventArgs,\r\n PropertyCollection,\r\n PropertyId,\r\n SessionEventArgs\r\n} from \"../Exports.js\";\r\nimport {\r\n MeetingHandler,\r\n MeetingImpl,\r\n MeetingTranscriptionHandler\r\n} from \"./Exports.js\";\r\nimport { Callback, IMeeting } from \"./IMeeting.js\";\r\n\r\nexport class MeetingTranscriber implements MeetingTranscriptionHandler {\r\n\r\n /**\r\n * The event canceled signals that an error occurred during the meeting.\r\n * @member MeetingTranscriber.prototype.MeetingCanceled\r\n * @function\r\n * @public\r\n */\r\n public MeetingCanceled: (sender: MeetingHandler, event: CancellationEventArgs) => void;\r\n\r\n /**\r\n * The event canceled signals that an error occurred during transcription.\r\n * @member MeetingTranscriber.prototype.canceled\r\n * @function\r\n * @public\r\n */\r\n public canceled: (sender: MeetingHandler, event: CancellationEventArgs) => void;\r\n\r\n /**\r\n * The event recognized signals that a final meeting transcription result is received.\r\n * @member MeetingTranscriber.prototype.transcribed\r\n * @function\r\n * @public\r\n */\r\n public transcribed: (sender: MeetingTranscriptionHandler, event: MeetingTranscriptionEventArgs) => void;\r\n\r\n /**\r\n * The event recognizing signals that an intermediate meeting transcription result is received.\r\n * @member MeetingTranscriber.prototype.transcribing\r\n * @function\r\n * @public\r\n */\r\n public transcribing: (sender: MeetingTranscriptionHandler, event: MeetingTranscriptionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for session started events.\r\n * @member MeetingTranscriber.prototype.sessionStarted\r\n * @function\r\n * @public\r\n */\r\n public sessionStarted: (sender: MeetingHandler, event: SessionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for session stopped events.\r\n * @member MeetingTranscriber.prototype.sessionStopped\r\n * @function\r\n * @public\r\n */\r\n public sessionStopped: (sender: MeetingHandler, event: SessionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for meeting started events.\r\n * @member MeetingTranscriber.prototype.MeetingStarted\r\n * @function\r\n * @public\r\n */\r\n public MeetingStarted: (sender: MeetingHandler, event: SessionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for meeting stopped events.\r\n * @member MeetingTranscriber.prototype.MeetingStopped\r\n * @function\r\n * @public\r\n */\r\n public meetingStopped: (sender: MeetingHandler, event: SessionEventArgs) => void;\r\n\r\n protected privAudioConfig: AudioConfig;\r\n private privDisposedRecognizer: boolean;\r\n private privRecognizer: TranscriberRecognizer;\r\n private privProperties: PropertyCollection;\r\n\r\n /**\r\n * MeetingTranscriber constructor.\r\n * @constructor\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the recognizer\r\n */\r\n public constructor(audioConfig?: AudioConfig) {\r\n this.privAudioConfig = audioConfig;\r\n this.privProperties = new PropertyCollection();\r\n this.privRecognizer = undefined;\r\n this.privDisposedRecognizer = false;\r\n }\r\n\r\n /**\r\n * Gets the spoken language of recognition.\r\n * @member MeetingTranscriber.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @returns {string} The spoken language of recognition.\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this MeetingTranscriber.\r\n * @member MeetingTranscriber.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this MeetingTranscriber.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * @Internal\r\n * Internal data member to support fromRecognizer* pattern methods on other classes.\r\n * Do not use externally, object returned will change without warning or notice.\r\n */\r\n public get internalData(): object {\r\n return this.privRecognizer.internalData;\r\n }\r\n\r\n /**\r\n * @Deprecated\r\n * @Obsolete\r\n * Please use the Connection.fromRecognizer pattern to obtain a connection object\r\n */\r\n public get connection(): Connection {\r\n return Connection.fromRecognizer(this.privRecognizer);\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member MeetingTranscriber.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member MeetingTranscriber.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * @param {Meeting} meeting - meeting to be recognized\r\n */\r\n public joinMeetingAsync(meeting: IMeeting, cb?: Callback, err?: Callback): void {\r\n /* eslint-disable no-console */\r\n // console.log(\">> MeetingTranscriber::joinMeetingAsync\");\r\n /* eslint-enable no-console */\r\n const meetingImpl = meeting as MeetingImpl;\r\n Contracts.throwIfNullOrUndefined(MeetingImpl, \"Meeting\");\r\n\r\n // ref the meeting object\r\n // create recognizer and subscribe to recognizer events\r\n this.privRecognizer = new TranscriberRecognizer(meeting.config, this.privAudioConfig);\r\n Contracts.throwIfNullOrUndefined(this.privRecognizer, \"Recognizer\");\r\n this.privRecognizer.connectMeetingCallbacks(this);\r\n\r\n marshalPromiseToCallbacks(meetingImpl.connectTranscriberRecognizer(this.privRecognizer), cb, err);\r\n }\r\n\r\n /**\r\n * Starts meeting transcription, until stopTranscribingAsync() is called.\r\n * User must subscribe to events to receive transcription results.\r\n * @member MeetingTranscriber.prototype.startTranscribingAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the transcription has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startTranscribingAsync(cb?: Callback, err?: Callback): void {\r\n this.privRecognizer.startContinuousRecognitionAsync(cb, err);\r\n }\r\n\r\n /**\r\n * Starts meeting transcription, until stopTranscribingAsync() is called.\r\n * User must subscribe to events to receive transcription results.\r\n * @member MeetingTranscriber.prototype.stopTranscribingAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the transcription has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopTranscribingAsync(cb?: Callback, err?: Callback): void {\r\n this.privRecognizer.stopContinuousRecognitionAsync(cb, err);\r\n }\r\n\r\n /**\r\n * Leave the current meeting. After this is called, you will no longer receive any events.\r\n */\r\n public leaveMeetingAsync(cb?: Callback, err?: Callback): void {\r\n this.privRecognizer.disconnectCallbacks();\r\n // eslint-disable-next-line\r\n marshalPromiseToCallbacks((async (): Promise => { return; })(), cb, err);\r\n }\r\n\r\n /**\r\n * closes all external resources held by an instance of this class.\r\n * @member MeetingTranscriber.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, errorCb?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n marshalPromiseToCallbacks(this.dispose(true), cb, errorCb);\r\n }\r\n\r\n /**\r\n * Disposes any resources held by the object.\r\n * @member MeetingTranscriber.prototype.dispose\r\n * @function\r\n * @public\r\n * @param {boolean} disposing - true if disposing the object.\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedRecognizer) {\r\n return;\r\n }\r\n if (!!this.privRecognizer) {\r\n await this.privRecognizer.close();\r\n this.privRecognizer = undefined;\r\n }\r\n if (disposing) {\r\n this.privDisposedRecognizer = true;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nimport { CancellationEventArgsBase } from \"../CancellationEventArgsBase.js\";\r\n\r\nexport class MeetingTranscriptionCanceledEventArgs extends CancellationEventArgsBase {\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nexport enum ParticipantChangedReason {\r\n /** Participant has joined the conversation. */\r\n JoinedConversation,\r\n\r\n /** Participant has left the conversation. This could be voluntary, or involuntary\r\n * (e.g. they are experiencing networking issues).\r\n */\r\n LeftConversation,\r\n\r\n /** The participants' state has changed (e.g. they became muted, changed their nickname). */\r\n Updated\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { CancellationErrorCode, CancellationReason, TranslationRecognitionResult } from \"./Exports.js\";\r\n\r\n/**\r\n * Define payload of speech recognition canceled result events.\r\n * @class TranslationRecognitionCanceledEventArgs\r\n */\r\nexport class TranslationRecognitionCanceledEventArgs {\r\n private privResult: TranslationRecognitionResult;\r\n private privSessionId: string;\r\n private privCancelReason: CancellationReason;\r\n private privErrorDetails: string;\r\n private privErrorCode: CancellationErrorCode;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} sessionid - The session id.\r\n * @param {CancellationReason} cancellationReason - The cancellation reason.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {TranslationRecognitionResult} result - The result.\r\n */\r\n public constructor(\r\n sessionid: string,\r\n cancellationReason: CancellationReason,\r\n errorDetails: string,\r\n errorCode: CancellationErrorCode,\r\n result: TranslationRecognitionResult) {\r\n this.privCancelReason = cancellationReason;\r\n this.privErrorDetails = errorDetails;\r\n this.privResult = result;\r\n this.privSessionId = sessionid;\r\n this.privErrorCode = errorCode;\r\n }\r\n\r\n /**\r\n * Specifies the recognition result.\r\n * @member TranslationRecognitionCanceledEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {TranslationRecognitionResult} the recognition result.\r\n */\r\n public get result(): TranslationRecognitionResult {\r\n return this.privResult;\r\n }\r\n\r\n /**\r\n * Specifies the session identifier.\r\n * @member TranslationRecognitionCanceledEventArgs.prototype.sessionId\r\n * @function\r\n * @public\r\n * @returns {string} the session identifier.\r\n */\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n\r\n /**\r\n * The reason the recognition was canceled.\r\n * @member TranslationRecognitionCanceledEventArgs.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {CancellationReason} Specifies the reason canceled.\r\n */\r\n public get reason(): CancellationReason {\r\n return this.privCancelReason;\r\n }\r\n\r\n /**\r\n * The error code in case of an unsuccessful recognition.\r\n * Added in version 1.1.0.\r\n * @return An error code that represents the error reason.\r\n */\r\n public get errorCode(): CancellationErrorCode {\r\n return this.privErrorCode;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful recognition, provides details of the occurred error.\r\n * @member TranslationRecognitionCanceledEventArgs.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} A String that represents the error details.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { RecognitionEventArgs, TranslationRecognitionResult } from \"./Exports.js\";\r\n\r\n/**\r\n * Translation text result event arguments.\r\n * @class TranslationRecognitionEventArgs\r\n */\r\nexport class TranslationRecognitionEventArgs extends RecognitionEventArgs {\r\n private privResult: TranslationRecognitionResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {TranslationRecognitionResult} result - The translation recognition result.\r\n * @param {number} offset - The offset.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(result: TranslationRecognitionResult, offset?: number, sessionId?: string) {\r\n super(offset, sessionId);\r\n\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Specifies the recognition result.\r\n * @member TranslationRecognitionEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {TranslationRecognitionResult} the recognition result.\r\n */\r\n public get result(): TranslationRecognitionResult {\r\n return this.privResult;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, ResultReason, SpeechRecognitionResult, Translations } from \"./Exports.js\";\r\n\r\n/**\r\n * Translation text result.\r\n * @class TranslationRecognitionResult\r\n */\r\nexport class TranslationRecognitionResult extends SpeechRecognitionResult {\r\n private privTranslations: Translations;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {Translations} translations - The translations.\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {string} text - The recognized text.\r\n * @param {number} duration - The duration.\r\n * @param {number} offset - The offset into the stream.\r\n * @param {string} language - Primary Language detected, if provided.\r\n * @param {string} languageDetectionConfidence - Primary Language confidence (\"Unknown,\" \"Low,\" \"Medium,\" \"High\"...), if provided.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {string} json - Additional Json, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n */\r\n public constructor(translations: Translations, resultId?: string, reason?: ResultReason,\r\n text?: string, duration?: number, offset?: number, language?: string,\r\n languageDetectionConfidence?: string, errorDetails?: string,\r\n json?: string, properties?: PropertyCollection) {\r\n super(resultId, reason, text, duration, offset, language, languageDetectionConfidence, undefined, errorDetails, json, properties);\r\n\r\n this.privTranslations = translations;\r\n }\r\n\r\n public static fromSpeechRecognitionResult(result: SpeechRecognitionResult): TranslationRecognitionResult {\r\n return new TranslationRecognitionResult(undefined, result.resultId, result.reason, result.text, result.duration, result.offset, result.language, result.languageDetectionConfidence, result.errorDetails, result.json, result.properties);\r\n }\r\n\r\n /**\r\n * Presents the translation results. Each item in the dictionary represents\r\n * a translation result in one of target languages, where the key is the name\r\n * of the target language, in BCP-47 format, and the value is the translation\r\n * text in the specified language.\r\n * @member TranslationRecognitionResult.prototype.translations\r\n * @function\r\n * @public\r\n * @returns {Translations} the current translation map that holds all translations requested.\r\n */\r\n public get translations(): Translations {\r\n return this.privTranslations;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig,\r\n TranslationConnectionFactory,\r\n TranslationServiceRecognizer\r\n} from \"../common.speech/Exports.js\";\r\nimport { marshalPromiseToCallbacks } from \"../common/Exports.js\";\r\nimport { AudioConfigImpl } from \"./Audio/AudioConfig.js\";\r\nimport { Connection } from \"./Connection.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n AudioConfig,\r\n AutoDetectSourceLanguageConfig,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n TranslationRecognitionCanceledEventArgs,\r\n TranslationRecognitionEventArgs,\r\n TranslationRecognitionResult,\r\n TranslationSynthesisEventArgs\r\n} from \"./Exports.js\";\r\nimport { SpeechTranslationConfig, SpeechTranslationConfigImpl } from \"./SpeechTranslationConfig.js\";\r\n\r\n/**\r\n * Translation recognizer\r\n * @class TranslationRecognizer\r\n */\r\nexport class TranslationRecognizer extends Recognizer {\r\n /**\r\n * The event recognizing signals that an intermediate recognition result is received.\r\n * @member TranslationRecognizer.prototype.recognizing\r\n * @function\r\n * @public\r\n */\r\n public recognizing: (sender: TranslationRecognizer, event: TranslationRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event recognized signals that a final recognition result is received.\r\n * @member TranslationRecognizer.prototype.recognized\r\n * @function\r\n * @public\r\n */\r\n public recognized: (sender: TranslationRecognizer, event: TranslationRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event canceled signals that an error occurred during recognition.\r\n * @member TranslationRecognizer.prototype.canceled\r\n * @function\r\n * @public\r\n */\r\n public canceled: (sender: TranslationRecognizer, event: TranslationRecognitionCanceledEventArgs) => void;\r\n\r\n /**\r\n * The event synthesizing signals that a translation synthesis result is received.\r\n * @member TranslationRecognizer.prototype.synthesizing\r\n * @function\r\n * @public\r\n */\r\n public synthesizing: (sender: TranslationRecognizer, event: TranslationSynthesisEventArgs) => void;\r\n\r\n private privDisposedTranslationRecognizer: boolean;\r\n\r\n /**\r\n * Initializes an instance of the TranslationRecognizer.\r\n * @constructor\r\n * @param {SpeechTranslationConfig} speechConfig - Set of properties to configure this recognizer.\r\n * @param {AudioConfig} audioConfig - An optional audio config associated with the recognizer\r\n * @param {IConnectionFactory} connectionFactory - An optional connection factory to use to generate the endpoint URIs, headers to set, etc...\r\n */\r\n public constructor(speechConfig: SpeechTranslationConfig, audioConfig?: AudioConfig, connectionFactory?: IConnectionFactory) {\r\n const configImpl = speechConfig as SpeechTranslationConfigImpl;\r\n Contracts.throwIfNull(configImpl, \"speechConfig\");\r\n\r\n super(audioConfig, configImpl.properties, connectionFactory || new TranslationConnectionFactory());\r\n\r\n this.privDisposedTranslationRecognizer = false;\r\n\r\n if (this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationVoice, undefined) !== undefined) {\r\n Contracts.throwIfNullOrWhitespace(\r\n this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationVoice),\r\n PropertyId[PropertyId.SpeechServiceConnection_TranslationVoice]);\r\n }\r\n\r\n Contracts.throwIfNullOrWhitespace(\r\n this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages),\r\n PropertyId[PropertyId.SpeechServiceConnection_TranslationToLanguages]);\r\n\r\n Contracts.throwIfNullOrWhitespace(this.properties.getProperty(\r\n PropertyId.SpeechServiceConnection_RecoLanguage),\r\n PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n\r\n }\r\n\r\n /**\r\n * TranslationRecognizer constructor.\r\n * @constructor\r\n * @param {SpeechTranslationConfig} speechTranslationConfig - an set of initial properties for this recognizer\r\n * @param {AutoDetectSourceLanguageConfig} autoDetectSourceLanguageConfig - An source language detection configuration associated with the recognizer\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the recognizer\r\n */\r\n public static FromConfig(speechTranslationConfig: SpeechTranslationConfig, autoDetectSourceLanguageConfig: AutoDetectSourceLanguageConfig, audioConfig?: AudioConfig): TranslationRecognizer {\r\n const speechTranslationConfigImpl: SpeechTranslationConfigImpl = speechTranslationConfig as SpeechTranslationConfigImpl;\r\n autoDetectSourceLanguageConfig.properties.mergeTo(speechTranslationConfigImpl.properties);\r\n return new TranslationRecognizer(speechTranslationConfig, audioConfig);\r\n }\r\n\r\n /**\r\n * Gets the language name that was set when the recognizer was created.\r\n * @member TranslationRecognizer.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @returns {string} Gets the language name that was set when the recognizer was created.\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n Contracts.throwIfDisposed(this.privDisposedTranslationRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n /**\r\n * Gets target languages for translation that were set when the recognizer was created.\r\n * The language is specified in BCP-47 format. The translation will provide translated text for each of language.\r\n * @member TranslationRecognizer.prototype.targetLanguages\r\n * @function\r\n * @public\r\n * @returns {string[]} Gets target languages for translation that were set when the recognizer was created.\r\n */\r\n public get targetLanguages(): string[] {\r\n Contracts.throwIfDisposed(this.privDisposedTranslationRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages).split(\",\");\r\n }\r\n\r\n /**\r\n * Gets the name of output voice.\r\n * @member TranslationRecognizer.prototype.voiceName\r\n * @function\r\n * @public\r\n * @returns {string} the name of output voice.\r\n */\r\n public get voiceName(): string {\r\n Contracts.throwIfDisposed(this.privDisposedTranslationRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationVoice, undefined);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this TranslationRecognizer.\r\n * @member TranslationRecognizer.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this TranslationRecognizer.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member TranslationRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member TranslationRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} value - Authorization token.\r\n */\r\n public set authorizationToken(value: string) {\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, value);\r\n }\r\n\r\n /**\r\n * Starts recognition and translation, and stops after the first utterance is recognized.\r\n * The task returns the translation text as result.\r\n * Note: recognizeOnceAsync returns when the first utterance has been recognized, so it is suitable only\r\n * for single shot recognition like command or query. For long-running recognition,\r\n * use startContinuousRecognitionAsync() instead.\r\n * @member TranslationRecognizer.prototype.recognizeOnceAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the result when the translation has completed.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public recognizeOnceAsync(cb?: (e: TranslationRecognitionResult) => void, err?: (e: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedTranslationRecognizer);\r\n marshalPromiseToCallbacks(this.recognizeOnceAsyncImpl(RecognitionMode.Interactive), cb, err);\r\n }\r\n\r\n /**\r\n * Starts recognition and translation, until stopContinuousRecognitionAsync() is called.\r\n * User must subscribe to events to receive translation results.\r\n * @member TranslationRecognizer.prototype.startContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the translation has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.startContinuousRecognitionAsyncImpl(RecognitionMode.Conversation), cb, err);\r\n }\r\n\r\n /**\r\n * Stops continuous recognition and translation.\r\n * @member TranslationRecognizer.prototype.stopContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the translation has stopped.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.stopContinuousRecognitionAsyncImpl(), cb, err);\r\n }\r\n\r\n /**\r\n * dynamically remove a language from list of target language\r\n * (can be used while recognition is ongoing)\r\n * @member TranslationRecognizer.prototype.removeTargetLanguage\r\n * @function\r\n * @param lang - language to be removed\r\n * @public\r\n */\r\n public removeTargetLanguage(lang: string): void {\r\n Contracts.throwIfNullOrUndefined(lang, \"language to be removed\");\r\n if (this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, undefined) !== undefined) {\r\n const languages: string[] = this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages).split(\",\");\r\n const index: number = languages.indexOf(lang);\r\n if (index > -1) {\r\n languages.splice(index, 1);\r\n this.properties.setProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, languages.join(\",\"));\r\n this.updateLanguages(languages);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * dynamically add a language to list of target language\r\n * (can be used while recognition is ongoing)\r\n * @member TranslationRecognizer.prototype.addTargetLanguage\r\n * @function\r\n * @param lang - language to be added\r\n * @public\r\n */\r\n public addTargetLanguage(lang: string): void {\r\n Contracts.throwIfNullOrUndefined(lang, \"language to be added\");\r\n let languages: string[] = [];\r\n if (this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, undefined) !== undefined) {\r\n languages = this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages).split(\",\");\r\n if (!languages.includes(lang)) {\r\n languages.push(lang);\r\n this.properties.setProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, languages.join(\",\"));\r\n }\r\n } else {\r\n this.properties.setProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, lang);\r\n languages = [lang];\r\n }\r\n this.updateLanguages(languages);\r\n }\r\n\r\n /**\r\n * closes all external resources held by an instance of this class.\r\n * @member TranslationRecognizer.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, errorCb?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedTranslationRecognizer);\r\n marshalPromiseToCallbacks(this.dispose(true), cb, errorCb);\r\n }\r\n\r\n /**\r\n * handles ConnectionEstablishedEvent for conversation translation scenarios.\r\n * @member TranslationRecognizer.prototype.onConnection\r\n * @function\r\n * @public\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n public onConnection(): void { }\r\n\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedTranslationRecognizer) {\r\n return;\r\n }\r\n\r\n this.privDisposedTranslationRecognizer = true;\r\n\r\n if (disposing) {\r\n await this.implRecognizerStop();\r\n await super.dispose(disposing);\r\n }\r\n }\r\n\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n protected createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n\r\n const configImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n\r\n return new TranslationServiceRecognizer(authentication, connectionFactory, configImpl, recognizerConfig, this);\r\n }\r\n\r\n private updateLanguages(languages: string[]): void {\r\n const conn: Connection = Connection.fromRecognizer(this);\r\n if (!!conn) {\r\n conn.setMessageProperty(\"speech.context\", \"translationcontext\", {to: languages});\r\n conn.sendMessageAsync(\"event\", JSON.stringify({\r\n id: \"translation\",\r\n name: \"updateLanguage\",\r\n to: languages\r\n }));\r\n }\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SessionEventArgs, TranslationSynthesisResult } from \"./Exports.js\";\r\n\r\n/**\r\n * Translation Synthesis event arguments\r\n * @class TranslationSynthesisEventArgs\r\n */\r\nexport class TranslationSynthesisEventArgs extends SessionEventArgs {\r\n private privResult: TranslationSynthesisResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {TranslationSynthesisResult} result - The translation synthesis result.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(result: TranslationSynthesisResult, sessionId?: string) {\r\n super(sessionId);\r\n\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Specifies the translation synthesis result.\r\n * @member TranslationSynthesisEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {TranslationSynthesisResult} Specifies the translation synthesis result.\r\n */\r\n public get result(): TranslationSynthesisResult {\r\n return this.privResult;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ResultReason } from \"./ResultReason.js\";\r\n\r\n/**\r\n * Defines translation synthesis result, i.e. the voice output of the translated\r\n * text in the target language.\r\n * @class TranslationSynthesisResult\r\n */\r\nexport class TranslationSynthesisResult {\r\n private privReason: ResultReason;\r\n private privAudio: ArrayBuffer;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {ResultReason} reason - The synthesis reason.\r\n * @param {ArrayBuffer} audio - The audio data.\r\n */\r\n public constructor(reason: ResultReason, audio: ArrayBuffer) {\r\n this.privReason = reason;\r\n this.privAudio = audio;\r\n }\r\n\r\n /**\r\n * Translated text in the target language.\r\n * @member TranslationSynthesisResult.prototype.audio\r\n * @function\r\n * @public\r\n * @returns {ArrayBuffer} Translated audio in the target language.\r\n */\r\n public get audio(): ArrayBuffer {\r\n return this.privAudio;\r\n }\r\n\r\n /**\r\n * The synthesis status.\r\n * @member TranslationSynthesisResult.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {ResultReason} The synthesis status.\r\n */\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection } from \"./Exports.js\";\r\n\r\n/**\r\n * Represents collection of parameters and their values.\r\n * @class Translations\r\n */\r\nexport class Translations {\r\n // Use an PropertyCollection internally, just wrapping it to hide the | enum syntax it has.\r\n private privMap: PropertyCollection = new PropertyCollection();\r\n\r\n /**\r\n * Get the languages in the object in a String array.\r\n * @member Translations.prototype.languages\r\n * @function\r\n * @public\r\n * @returns {string[]} languages in translations object.\r\n */\r\n public get languages(): string[] {\r\n return this.privMap.keys;\r\n }\r\n\r\n /**\r\n * Returns the parameter value in type String. The parameter must have the same type as String.\r\n * Currently only String, int and bool are allowed.\r\n * If the name is not available, the specified defaultValue is returned.\r\n * @member Translations.prototype.get\r\n * @function\r\n * @public\r\n * @param {string} key - The parameter name.\r\n * @param {string} def - The default value which is returned if the parameter is not available in the collection.\r\n * @returns {string} value of the parameter.\r\n */\r\n public get(key: string, def?: string): string {\r\n return this.privMap.getProperty(key, def);\r\n }\r\n\r\n /**\r\n * Sets the String value of the parameter specified by name.\r\n * @member Translations.prototype.set\r\n * @function\r\n * @public\r\n * @param {string} key - The parameter name.\r\n * @param {string} value - The value of the parameter.\r\n */\r\n public set(key: string, value: string): void {\r\n this.privMap.setProperty(key, value);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ITurnStatusResponsePayload,\r\n TurnStatusResponsePayload\r\n } from \"../common.speech/ServiceMessages/TurnStatusPayload.js\";\r\n\r\n/**\r\n * Defines contents of received message/events.\r\n * @class TurnStatusReceivedEventArgs\r\n */\r\nexport class TurnStatusReceivedEventArgs {\r\n private privTurnStatus: ITurnStatusResponsePayload;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} turnStatus - The JSON-encoded turn status message.\r\n */\r\n public constructor(turnStatus: string) {\r\n this.privTurnStatus = TurnStatusResponsePayload.fromJSON(turnStatus);\r\n }\r\n\r\n /**\r\n * Gets the interaction identifier associated with this turn status event.\r\n * @member TurnStatusReceivedEventArgs.prototype.interactionId\r\n * @function\r\n * @public\r\n * @returns {any} the received interaction id.\r\n */\r\n public get interactionId(): any {\r\n return this.privTurnStatus.interactionId;\r\n }\r\n\r\n /**\r\n * Gets the conversation identifier associated with this turn status event.\r\n * @member TurnStatusReceivedEventArgs.prototype.conversationId\r\n * @function\r\n * @public\r\n * @returns {any} the received conversation id.\r\n */\r\n public get conversationId(): any {\r\n return this.privTurnStatus.conversationId;\r\n }\r\n\r\n /**\r\n * Gets the received turn status code.\r\n * @member TurnStatusReceivedEventArgs.prototype.statusCode\r\n * @function\r\n * @public\r\n * @returns {number} the received turn status.\r\n */\r\n public get statusCode(): number {\r\n return this.privTurnStatus.statusCode; // eslint-disable-line @typescript-eslint/no-unsafe-return\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IVoiceJson } from \"./IVoiceJson\";\r\n\r\n/**\r\n * Defines the gender of synthesis voices.\r\n * Added in version 1.20.0.\r\n */\r\nexport enum SynthesisVoiceGender {\r\n\r\n /** Gender unknown */\r\n Unknown,\r\n\r\n /** Female voice */\r\n Female,\r\n\r\n /** Male voice */\r\n Male,\r\n\r\n /** Neutral voice */\r\n Neutral\r\n}\r\n\r\nexport enum SynthesisVoiceType {\r\n OnlineNeural = 1,\r\n OnlineStandard = 2,\r\n OfflineNeural = 3,\r\n OfflineStandard = 4,\r\n}\r\n\r\nconst GENDER_LOOKUP: Record = {\r\n [SynthesisVoiceGender[SynthesisVoiceGender.Neutral]]: SynthesisVoiceGender.Neutral,\r\n [SynthesisVoiceGender[SynthesisVoiceGender.Male]]: SynthesisVoiceGender.Male,\r\n [SynthesisVoiceGender[SynthesisVoiceGender.Female]]: SynthesisVoiceGender.Female,\r\n};\r\n\r\n/**\r\n * Information about Speech Synthesis voice\r\n * Added in version 1.20.0.\r\n * @class VoiceInfo\r\n */\r\nexport class VoiceInfo {\r\n private privName: IVoiceJson[\"Name\"];\r\n private privLocale: IVoiceJson[\"Locale\"];\r\n private privShortName: IVoiceJson[\"ShortName\"];\r\n private privDisplayName: IVoiceJson[\"DisplayName\"];\r\n private privLocalName: IVoiceJson[\"LocalName\"];\r\n private privLocaleName: IVoiceJson[\"LocaleName\"];\r\n private privGender: SynthesisVoiceGender;\r\n private privVoiceType: SynthesisVoiceType;\r\n private privStyleList: IVoiceJson[\"StyleList\"] = [];\r\n private privSampleRateHertz: IVoiceJson[\"SampleRateHertz\"];\r\n private privStatus: IVoiceJson[\"Status\"];\r\n private privExtendedPropertyMap: IVoiceJson[\"ExtendedPropertyMap\"];\r\n private privWordsPerMinute: IVoiceJson[\"WordsPerMinute\"];\r\n private privSecondaryLocaleList: IVoiceJson[\"SecondaryLocaleList\"];\r\n private privRolePlayList: IVoiceJson[\"RolePlayList\"];\r\n\r\n public constructor(json: IVoiceJson) {\r\n if (!!json) {\r\n this.privName = json.Name;\r\n this.privLocale = json.Locale;\r\n this.privShortName = json.ShortName;\r\n this.privLocaleName = json.LocaleName;\r\n this.privDisplayName = json.DisplayName;\r\n this.privLocalName = json.LocalName;\r\n this.privVoiceType = json.VoiceType.endsWith(\"Standard\") ? SynthesisVoiceType.OnlineStandard : SynthesisVoiceType.OnlineNeural;\r\n this.privGender = GENDER_LOOKUP[json.Gender] || SynthesisVoiceGender.Unknown;\r\n\r\n if (!!json.StyleList && Array.isArray(json.StyleList)) {\r\n for (const style of json.StyleList) {\r\n this.privStyleList.push(style);\r\n }\r\n }\r\n\r\n this.privSampleRateHertz = json.SampleRateHertz;\r\n this.privStatus = json.Status;\r\n\r\n if (json.ExtendedPropertyMap) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n this.privExtendedPropertyMap = json.ExtendedPropertyMap;\r\n }\r\n\r\n this.privWordsPerMinute = json.WordsPerMinute;\r\n\r\n if (Array.isArray(json.SecondaryLocaleList)) {\r\n this.privSecondaryLocaleList = [...json.SecondaryLocaleList];\r\n }\r\n\r\n if (Array.isArray(json.RolePlayList)) {\r\n this.privRolePlayList = [...json.RolePlayList];\r\n }\r\n }\r\n }\r\n\r\n public get name(): IVoiceJson[\"Name\"] {\r\n return this.privName;\r\n }\r\n\r\n public get locale(): IVoiceJson[\"Locale\"] {\r\n return this.privLocale;\r\n }\r\n\r\n public get shortName(): IVoiceJson[\"ShortName\"] {\r\n return this.privShortName;\r\n }\r\n\r\n public get displayName(): IVoiceJson[\"DisplayName\"] {\r\n return this.privDisplayName;\r\n }\r\n\r\n public get localName(): IVoiceJson[\"LocalName\"] {\r\n return this.privLocalName;\r\n }\r\n\r\n public get localeName(): IVoiceJson[\"LocaleName\"] {\r\n return this.privLocaleName;\r\n }\r\n\r\n public get gender(): SynthesisVoiceGender {\r\n return this.privGender;\r\n }\r\n\r\n public get voiceType(): SynthesisVoiceType {\r\n return this.privVoiceType;\r\n }\r\n\r\n public get styleList(): IVoiceJson[\"StyleList\"] {\r\n return this.privStyleList;\r\n }\r\n\r\n public get sampleRateHertz(): IVoiceJson[\"SampleRateHertz\"] {\r\n return this.privSampleRateHertz;\r\n }\r\n\r\n public get status(): IVoiceJson[\"Status\"] {\r\n return this.privStatus;\r\n }\r\n\r\n public get extendedPropertyMap(): IVoiceJson[\"ExtendedPropertyMap\"] {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\r\n return this.privExtendedPropertyMap;\r\n }\r\n\r\n public get wordsPerMinute(): IVoiceJson[\"WordsPerMinute\"] {\r\n return this.privWordsPerMinute;\r\n }\r\n\r\n public get secondaryLocaleList(): IVoiceJson[\"SecondaryLocaleList\"] {\r\n return this.privSecondaryLocaleList;\r\n }\r\n\r\n public get rolePlayList(): IVoiceJson[\"RolePlayList\"] {\r\n return this.privRolePlayList;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { VoiceProfileType } from \"./Exports.js\";\r\n\r\n/**\r\n * Defines Voice Profile class for Speaker Recognition\r\n * @class VoiceProfile\r\n */\r\nexport class VoiceProfile {\r\n private privId: string;\r\n private privProfileType: VoiceProfileType;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} profileId - profileId of this Voice Profile.\r\n * @param {VoiceProfileType} profileType - profileType of this Voice Profile.\r\n */\r\n public constructor(profileId: string, profileType: VoiceProfileType) {\r\n this.privId = profileId;\r\n this.privProfileType = profileType;\r\n }\r\n\r\n /**\r\n * profileId of this Voice Profile instance\r\n * @member VoiceProfile.prototype.profileId\r\n * @function\r\n * @public\r\n * @returns {string} profileId of this Voice Profile instance.\r\n */\r\n public get profileId(): string {\r\n return this.privId;\r\n }\r\n\r\n /**\r\n * profileType of this Voice Profile instance\r\n * @member VoiceProfile.prototype.profileType\r\n * @function\r\n * @public\r\n * @returns {VoiceProfileType} profile type of this Voice Profile instance.\r\n */\r\n public get profileType(): VoiceProfileType {\r\n return this.privProfileType;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IRestResponse\r\n} from \"../common.browser/Exports.js\";\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig,\r\n VoiceProfileConnectionFactory,\r\n VoiceServiceRecognizer\r\n} from \"../common.speech/Exports.js\";\r\nimport { AudioConfig, AudioConfigImpl } from \"./Audio/AudioConfig.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n AudioInputStream,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n ResultReason,\r\n VoiceProfile,\r\n VoiceProfileEnrollmentResult,\r\n VoiceProfilePhraseResult,\r\n VoiceProfileResult,\r\n VoiceProfileType\r\n} from \"./Exports.js\";\r\nimport { SpeechConfig, SpeechConfigImpl } from \"./SpeechConfig.js\";\r\n\r\n/**\r\n * Defines VoiceProfileClient class for Speaker Recognition\r\n * Handles operations from user for Voice Profile operations (e.g. createProfile, deleteProfile)\r\n * @class VoiceProfileClient\r\n */\r\nexport class VoiceProfileClient extends Recognizer {\r\n protected privProperties: PropertyCollection;\r\n private privVoiceAdapter: VoiceServiceRecognizer;\r\n private privDisposedVoiceAdapter: boolean;\r\n\r\n /**\r\n * VoiceProfileClient constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - An set of initial properties for this synthesizer (authentication key, region, &c)\r\n */\r\n public constructor(speechConfig: SpeechConfig) {\r\n Contracts.throwIfNullOrUndefined(speechConfig, \"speechConfig\");\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n Contracts.throwIfNull(speechConfigImpl, \"speechConfig\");\r\n\r\n super(AudioConfig.fromStreamInput(AudioInputStream.createPushStream()), speechConfigImpl.properties, new VoiceProfileConnectionFactory());\r\n\r\n this.privProperties = speechConfigImpl.properties.clone();\r\n this.privVoiceAdapter = this.privReco as VoiceServiceRecognizer;\r\n this.privDisposedVoiceAdapter = false;\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this VoiceProfileClient.\r\n * @member VoiceProfileClient.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this VoiceProfileClient.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member VoiceProfileClient.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member VoiceProfileClient.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * Create a speaker recognition voice profile\r\n * @member VoiceProfileClient.prototype.createProfileAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfileType} profileType Type of Voice Profile to be created\r\n * @param {string} lang Language string (locale) for Voice Profile\r\n * @return {Promise} - Promise of a VoiceProfile.\r\n */\r\n public async createProfileAsync(profileType: VoiceProfileType, lang: string): Promise {\r\n const profileIds: string[] = await this.privVoiceAdapter.createProfile(profileType, lang);\r\n return new VoiceProfile(profileIds[0], profileType);\r\n }\r\n\r\n /**\r\n * Get current information of a voice profile\r\n * @member VoiceProfileClient.prototype.retrieveEnrollmentResultAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfile} profile Voice Profile to retrieve info for\r\n * @return {Promise} - Promise of a VoiceProfileEnrollmentResult.\r\n */\r\n public async retrieveEnrollmentResultAsync(profile: VoiceProfile): Promise {\r\n return this.privVoiceAdapter.retrieveEnrollmentResult(profile);\r\n }\r\n\r\n /**\r\n * Get all voice profiles on account with given voice profile type\r\n * @member VoiceProfileClient.prototype.getAllProfilesAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfileType} profileType profile type (identification/verification) for which to list profiles\r\n * @return {Promise} - Promise of an array of VoiceProfileEnrollmentResults.\r\n */\r\n public async getAllProfilesAsync(profileType: VoiceProfileType): Promise {\r\n return this.privVoiceAdapter.getAllProfiles(profileType);\r\n /*\r\n const result: { json: { value: EnrollmentResultJSON[] } } = await this.privAdapter.getProfiles(profileType);\r\n if (profileType === VoiceProfileType.TextIndependentIdentification) {\r\n return VoiceProfileEnrollmentResult.FromIdentificationProfileList(result.json);\r\n }\r\n return VoiceProfileEnrollmentResult.FromVerificationProfileList(result.json);\r\n */\r\n }\r\n\r\n /**\r\n * Get valid authorization phrases for voice profile enrollment\r\n * @member VoiceProfileClient.prototype.getActivationPhrasesAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfileType} profileType Profile Type to get activation phrases for\r\n * @param {string} lang Language string (locale) for Voice Profile\r\n */\r\n public async getActivationPhrasesAsync(profileType: VoiceProfileType, lang: string): Promise {\r\n return this.privVoiceAdapter.getActivationPhrases(profileType, lang);\r\n }\r\n\r\n /**\r\n * Create a speaker recognition voice profile\r\n * @member VoiceProfileClient.prototype.enrollProfileAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfile} profile Voice Profile to create enrollment for\r\n * @param {AudioConfig} audioConfig source info from which to create enrollment\r\n * @return {Promise} - Promise of a VoiceProfileEnrollmentResult.\r\n */\r\n public async enrollProfileAsync(profile: VoiceProfile, audioConfig: AudioConfig): Promise {\r\n const configImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n Contracts.throwIfNullOrUndefined(configImpl, \"audioConfig\");\r\n this.audioConfig = audioConfig;\r\n this.privVoiceAdapter.SpeakerAudioSource = configImpl;\r\n\r\n return this.privVoiceAdapter.enrollProfile(profile);\r\n }\r\n\r\n /**\r\n * Delete a speaker recognition voice profile\r\n * @member VoiceProfileClient.prototype.deleteProfileAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfile} profile Voice Profile to be deleted\r\n * @return {Promise} - Promise of a VoiceProfileResult.\r\n */\r\n public async deleteProfileAsync(profile: VoiceProfile): Promise {\r\n return this.privVoiceAdapter.deleteProfile(profile);\r\n }\r\n\r\n /**\r\n * Remove all enrollments for a speaker recognition voice profile\r\n * @member VoiceProfileClient.prototype.resetProfileAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfile} profile Voice Profile to be reset\r\n * @return {Promise} - Promise of a VoiceProfileResult.\r\n */\r\n public async resetProfileAsync(profile: VoiceProfile): Promise {\r\n return this.privVoiceAdapter.resetProfile(profile);\r\n }\r\n\r\n /**\r\n * Clean up object and close underlying connection\r\n * @member VoiceProfileClient.prototype.close\r\n * @function\r\n * @async\r\n * @public\r\n */\r\n public async close(): Promise {\r\n await this.dispose(true);\r\n }\r\n\r\n protected createServiceRecognizer(authentication: IAuthentication, connectionFactory: IConnectionFactory, audioConfig: AudioConfig, recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n const audioImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n return new VoiceServiceRecognizer(authentication, connectionFactory, audioImpl, recognizerConfig, this);\r\n }\r\n\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedVoiceAdapter) {\r\n return;\r\n }\r\n\r\n this.privDisposedVoiceAdapter = true;\r\n\r\n if (disposing) {\r\n await super.dispose(disposing);\r\n }\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.properties);\r\n }\r\n\r\n private getResult(result: IRestResponse, successReason: ResultReason): VoiceProfileResult {\r\n const response: VoiceProfileResult =\r\n new VoiceProfileResult(\r\n result.ok ? successReason : ResultReason.Canceled,\r\n result.statusText\r\n );\r\n return (response);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { CancellationErrorCodePropertyName } from \"../common.speech/Exports.js\";\r\nimport {\r\n CancellationDetailsBase,\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyCollection,\r\n ResultReason\r\n} from \"./Exports.js\";\r\n\r\nexport interface EnrollmentResultDetails {\r\n profileId: string;\r\n enrollmentsCount: number;\r\n enrollmentsLength: number;\r\n enrollmentsSpeechLength: number;\r\n remainingEnrollmentsCount: number;\r\n remainingEnrollmentsSpeechLength: number;\r\n audioLength: number;\r\n audioSpeechLength: number;\r\n enrollmentStatus: string;\r\n}\r\n\r\nexport interface EnrollmentResultJSON {\r\n profileId: string;\r\n enrollmentsCount: number;\r\n enrollmentsLength: string;\r\n enrollmentsSpeechLength: string;\r\n remainingEnrollmentsCount: number;\r\n remainingEnrollmentsSpeechLength: string;\r\n audioLength: string;\r\n audioSpeechLength: string;\r\n enrollmentStatus: string;\r\n remainingEnrollments?: number;\r\n identificationProfileId?: string;\r\n verificationProfileId?: string;\r\n}\r\n\r\n/**\r\n * Output format\r\n * @class VoiceProfileEnrollmentResult\r\n */\r\nexport class VoiceProfileEnrollmentResult {\r\n private privReason: ResultReason;\r\n private privDetails: EnrollmentResultDetails;\r\n private privProperties: PropertyCollection;\r\n private privErrorDetails: string;\r\n\r\n public constructor(reason: ResultReason, json: string, statusText: string) {\r\n this.privReason = reason;\r\n this.privProperties = new PropertyCollection();\r\n if (this.privReason !== ResultReason.Canceled) {\r\n if (!!json) {\r\n this.privDetails = JSON.parse(json) as EnrollmentResultDetails;\r\n if (this.privDetails.enrollmentStatus.toLowerCase() === \"enrolling\") {\r\n this.privReason = ResultReason.EnrollingVoiceProfile;\r\n }\r\n }\r\n } else {\r\n this.privErrorDetails = statusText;\r\n this.privProperties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.ServiceError]);\r\n }\r\n }\r\n\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n\r\n public get enrollmentsCount(): number {\r\n return this.privDetails.enrollmentsCount;\r\n }\r\n\r\n public get enrollmentsLength(): number {\r\n return this.privDetails.enrollmentsLength;\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get enrollmentResultDetails(): EnrollmentResultDetails {\r\n return this.privDetails;\r\n }\r\n\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n\r\n public static FromIdentificationProfileList(json: { value: EnrollmentResultJSON[] }): VoiceProfileEnrollmentResult[] {\r\n const results: VoiceProfileEnrollmentResult[] = [];\r\n for (const item of json.value) {\r\n const reason: ResultReason = item.enrollmentStatus.toLowerCase() === \"enrolling\" ?\r\n ResultReason.EnrollingVoiceProfile : item.enrollmentStatus.toLowerCase() === \"enrolled\" ?\r\n ResultReason.EnrolledVoiceProfile : ResultReason.Canceled;\r\n const result = new VoiceProfileEnrollmentResult(reason, null, null);\r\n result.privDetails = this.getIdentificationDetails(item) as EnrollmentResultDetails;\r\n results.push(result);\r\n }\r\n return results;\r\n }\r\n\r\n public static FromVerificationProfileList(json: { value: EnrollmentResultJSON[] }): VoiceProfileEnrollmentResult[] {\r\n const results: VoiceProfileEnrollmentResult[] = [];\r\n for (const item of json.value) {\r\n const reason: ResultReason = item.enrollmentStatus.toLowerCase() === \"enrolling\" ?\r\n ResultReason.EnrollingVoiceProfile : item.enrollmentStatus.toLowerCase() === \"enrolled\" ?\r\n ResultReason.EnrolledVoiceProfile : ResultReason.Canceled;\r\n const result = new VoiceProfileEnrollmentResult(reason, null, null);\r\n result.privDetails = this.getVerificationDetails(item) as EnrollmentResultDetails;\r\n results.push(result);\r\n }\r\n return results;\r\n }\r\n\r\n private static getIdentificationDetails(json: EnrollmentResultJSON): unknown {\r\n return {\r\n audioLength: json.audioLength ? parseFloat(json.audioLength) : 0,\r\n audioSpeechLength: json.audioSpeechLength ? parseFloat(json.audioSpeechLength) : 0,\r\n enrollmentStatus: json.enrollmentStatus,\r\n enrollmentsCount: json.enrollmentsCount || 0,\r\n enrollmentsLength: json.enrollmentsLength ? parseFloat(json.enrollmentsLength) : 0,\r\n enrollmentsSpeechLength: json.enrollmentsSpeechLength ? parseFloat(json.enrollmentsSpeechLength) : 0,\r\n profileId: json.profileId || json.identificationProfileId,\r\n remainingEnrollmentsSpeechLength: json.remainingEnrollmentsSpeechLength ? parseFloat(json.remainingEnrollmentsSpeechLength) : 0\r\n };\r\n }\r\n\r\n private static getVerificationDetails(json: EnrollmentResultJSON): unknown {\r\n return {\r\n audioLength: json.audioLength ? parseFloat(json.audioLength) : 0,\r\n audioSpeechLength: json.audioSpeechLength ? parseFloat(json.audioSpeechLength) : 0,\r\n enrollmentStatus: json.enrollmentStatus,\r\n enrollmentsCount: json.enrollmentsCount,\r\n enrollmentsLength: json.enrollmentsLength ? parseFloat(json.enrollmentsLength) : 0,\r\n enrollmentsSpeechLength: json.enrollmentsSpeechLength ? parseFloat(json.enrollmentsSpeechLength) : 0,\r\n profileId: json.profileId || json.verificationProfileId,\r\n remainingEnrollmentsCount: json.remainingEnrollments || json.remainingEnrollmentsCount,\r\n remainingEnrollmentsSpeechLength: json.remainingEnrollmentsSpeechLength ? parseFloat(json.remainingEnrollmentsSpeechLength) : 0\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * @class VoiceProfileEnrollmentCancellationDetails\r\n */\r\nexport class VoiceProfileEnrollmentCancellationDetails extends CancellationDetailsBase {\r\n\r\n private constructor(reason: CancellationReason, errorDetails: string, errorCode: CancellationErrorCode) {\r\n super(reason, errorDetails, errorCode);\r\n }\r\n\r\n /**\r\n * Creates an instance of VoiceProfileEnrollmentCancellationDetails object for the canceled VoiceProfileEnrollmentResult.\r\n * @member VoiceProfileEnrollmentCancellationDetails.fromResult\r\n * @function\r\n * @public\r\n * @param {VoiceProfileEnrollmentResult} result - The result that was canceled.\r\n * @returns {VoiceProfileEnrollmentCancellationDetails} The cancellation details object being created.\r\n */\r\n public static fromResult(result: VoiceProfileEnrollmentResult): VoiceProfileEnrollmentCancellationDetails {\r\n const reason = CancellationReason.Error;\r\n let errorCode: CancellationErrorCode = CancellationErrorCode.NoError;\r\n\r\n if (!!result.properties) {\r\n errorCode = (CancellationErrorCode as any)[result.properties.getProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.NoError])]; //eslint-disable-line\r\n }\r\n\r\n return new VoiceProfileEnrollmentCancellationDetails(reason, result.errorDetails, errorCode);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n ResultReason,\r\n VoiceProfileResult\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Output format\r\n * @class VoiceProfilePhraseResult\r\n */\r\nexport class VoiceProfilePhraseResult extends VoiceProfileResult {\r\n private privPhrases: string[] = [];\r\n private privType: string;\r\n\r\n public constructor(reason: ResultReason, statusText: string, type: string, phraseArray: string[]) {\r\n super(reason, statusText);\r\n Contracts.throwIfNullOrUndefined(phraseArray, \"phrase array\");\r\n this.privType = type;\r\n if (!!phraseArray && !!phraseArray[0]) {\r\n this.privPhrases = phraseArray;\r\n }\r\n }\r\n\r\n public get phrases(): string[] {\r\n return this.privPhrases;\r\n }\r\n\r\n public get type(): string {\r\n return this.privType;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { CancellationErrorCodePropertyName } from \"../common.speech/Exports.js\";\r\nimport { Contracts } from \"./Contracts.js\";\r\nimport {\r\n CancellationDetailsBase,\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyCollection,\r\n ResultReason\r\n} from \"./Exports.js\";\r\n\r\n/**\r\n * Output format\r\n * @class VoiceProfileResult\r\n */\r\nexport class VoiceProfileResult {\r\n private privReason: ResultReason;\r\n private privProperties: PropertyCollection;\r\n private privErrorDetails: string;\r\n\r\n public constructor(reason: ResultReason, statusText: string) {\r\n this.privReason = reason;\r\n this.privProperties = new PropertyCollection();\r\n if (reason === ResultReason.Canceled) {\r\n Contracts.throwIfNullOrUndefined(statusText, \"statusText\");\r\n this.privErrorDetails = statusText;\r\n this.privProperties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.ServiceError]);\r\n }\r\n }\r\n\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n}\r\n\r\n/**\r\n * @class VoiceProfileCancellationDetails\r\n */\r\nexport class VoiceProfileCancellationDetails extends CancellationDetailsBase {\r\n\r\n private constructor(reason: CancellationReason, errorDetails: string, errorCode: CancellationErrorCode) {\r\n super(reason, errorDetails, errorCode);\r\n }\r\n\r\n /**\r\n * Creates an instance of VoiceProfileCancellationDetails object for the canceled VoiceProfileResult.\r\n * @member VoiceProfileCancellationDetails.fromResult\r\n * @function\r\n * @public\r\n * @param {VoiceProfileResult} result - The result that was canceled.\r\n * @returns {VoiceProfileCancellationDetails} The cancellation details object being created.\r\n */\r\n public static fromResult(result: VoiceProfileResult): VoiceProfileCancellationDetails {\r\n const reason = CancellationReason.Error;\r\n let errorCode: CancellationErrorCode = CancellationErrorCode.NoError;\r\n\r\n if (!!result.properties) {\r\n errorCode = (CancellationErrorCode as any)[result.properties.getProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.NoError])]; //eslint-disable-line\r\n }\r\n\r\n return new VoiceProfileCancellationDetails(reason, result.errorDetails, errorCode);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Output format\r\n * @class VoiceProfileType\r\n */\r\nexport enum VoiceProfileType {\r\n\r\n /**\r\n * Text independent speaker identification\r\n * @member VoiceProfileType.TextIndependentIdentification\r\n */\r\n TextIndependentIdentification,\r\n\r\n /**\r\n * Text dependent speaker verification\r\n * @member VoiceProfileType.TextDependentVerification\r\n */\r\n TextDependentVerification,\r\n\r\n /**\r\n * Text independent speaker verification\r\n * @member VoiceProfileType.TextIndependentVerification\r\n */\r\n TextIndependentVerification,\r\n}\r\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function get() {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function get() {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function get() {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function get() {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function get() {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function get() {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function get() {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function get() {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function get() {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (let i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n const output = [];\n const length32 = input.length * 32;\n const hexTab = '0123456789abcdef';\n\n for (let i = 0; i < length32; i += 8) {\n const x = input[i >> 5] >>> i % 32 & 0xff;\n const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n const length8 = input.length * 8;\n const output = new Uint32Array(getOutputLength(length8));\n\n for (let i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nvar _default = {\n randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\n\nfunction rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","function _extends() {\n module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"45f99859\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"speech-recognition-app:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkspeech_recognition_app\"] = self[\"webpackChunkspeech_recognition_app\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n reloadDocument?: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (args: LoaderFunctionArgs):\n | Promise\n | DataFunctionValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs):\n | Promise\n | DataFunctionValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(branches[i], decoded);\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nfunction decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === matches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n ActionFunction,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n AgnosticRouteObject,\n DataResult,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n ImmutableRouteKey,\n LoaderFunction,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized: boolean;\n let hasLazyRoutes = initialMatches.some((m) => m.route.lazy);\n let hasLoaders = initialMatches.some((m) => m.route.loader);\n if (hasLazyRoutes) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!hasLoaders) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = (m: AgnosticDataRouteMatch) => {\n // No loader, nothing to initialize\n if (!m.route.loader) return true;\n // Explicitly opting-in to running on hydration\n if (m.route.loader.hydrate === true) return false;\n // Otherwise, initialized if hydrated with data or an error\n return (\n (loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined)\n );\n };\n\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace, flushSync }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionData,\n pendingError\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n if (\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration)\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(state, redirect.result, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors)\n .filter(([id]) => !matchesToLoad.some((m) => m.route.id === id))\n .forEach(([routeId, error]) => {\n errors = Object.assign(errors || {}, { [routeId]: error });\n });\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n flushSync,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(state, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(state, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n flushSync: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(state, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(state.location, redirect.location, {\n _isRedirect: true,\n });\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.reloadDocument) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(redirect.location)) {\n const url = init.history.createURL(redirect.location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(redirect.location);\n } else {\n routerWindow.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, f.controller.signal),\n f.match,\n f.matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath,\n { isStaticRequest: true, isRouteRequest, requestContext }\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n mapRouteProperties,\n basename,\n future.v7_relativeSplatPath,\n { isStaticRequest: true, isRouteRequest, requestContext }\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (isInitialLoad) {\n if (route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n isInitialLoad ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.includes(key)) {\n // Always revalidate if the fetcher was cancelled\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate: isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n basename: string,\n v7_relativeSplatPath: boolean,\n opts: {\n isStaticRequest?: boolean;\n isRouteRequest?: boolean;\n requestContext?: unknown;\n } = {}\n): Promise {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({\n request,\n params: match.params,\n context: opts.requestContext,\n }),\n abortPromise,\n ]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let values = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError) {\n throw handlerError;\n }\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, data: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n location = normalizeTo(\n new URL(request.url),\n matches.slice(0, matches.indexOf(match) + 1),\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n } else if (!opts.isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (opts.isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n reloadDocument: result.headers.get(\"X-Remix-Reload-Document\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (opts.isRouteRequest) {\n let queryRouteResponse: QueryRouteResponse = {\n type:\n resultType === ResultType.error ? ResultType.error : ResultType.data,\n response: result,\n };\n throw queryRouteResponse;\n }\n\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponseImpl(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || obj.type === ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a