{"version":3,"file":"main.02ca0aff499f2635.es5.js","mappings":"4OAKaA,EAAc,WAAH,OACtB,IAAIC,EAAAA,GAAW,SAACC,EAAsBC,GAapC,OAZAD,EAAUE,YAAW,SAAAC,GAAsB,IAAAC,EAAAD,EAAnBE,QAAAA,OAAO,IAAAD,EAAG,CAAC,EAACA,EAC5BE,ECJqB,SAACN,GAEhC,MAAgC,wBAA5BA,EAAUO,eACLC,EAAAA,EAAAA,KAIPC,eAAeC,QAAQ,yBAA0BF,EAAAA,EAAAA,IAErD,CDL6BG,CAAkBX,GAGzC,MAAO,CACLK,QAAOO,OAAAC,OAAA,GACFR,GAELS,IAAK,GAAGR,EAAiBS,EAAAA,EAAYC,SAEzC,IAEOf,EAAQD,EACjB,GAAE,E,oFEbJiB,IAAAA,OAAaC,KAgBN,IAAMC,EAAkB,SAAHhB,GAYC,IAAAiB,EAAAC,EAX3BC,EAAYnB,EAAZmB,aACAC,EAAapB,EAAboB,cACAhB,EAAaJ,EAAbI,cACAiB,EAAKrB,EAALqB,MACAC,EAAatB,EAAbsB,cACAC,EAAcvB,EAAduB,eACAC,EAAUxB,EAAVwB,WACAC,EAAazB,EAAbyB,cACAC,EAAG1B,EAAH0B,IAAGC,EAAA3B,EACH4B,UAAAA,OAAS,IAAAD,EAAG,GAAEA,EAAAE,EAAA7B,EACd8B,aAAAA,OAAY,IAAAD,EAAG,GAAEA,EAEjBE,EAAAA,GAAOC,oBACL,CACEC,SAAUC,OAAOC,SAASF,SAC1BG,SAAUjB,EACVG,cAAAA,EACAE,WAAAA,EACAC,cAAAA,EACAY,mBAAoBvB,IAAMS,GAAgBR,MAAMuB,SAChDC,aAA8B,OAAhBtB,EAAAiB,OAAOM,YAAPvB,EAAkBwB,OAC5BC,EAAAA,GAAaC,OACbD,EAAAA,GAAaE,QACjBC,SAAO3B,EAAA,GAAAA,EACJ4B,EAAAA,GAAmBC,sBAAsB,EAAK7B,EAC9C4B,EAAAA,GAAmBE,sBAAuB5B,EAAaF,EACvD4B,EAAAA,GAAmBG,YAAa7C,EAAac,EAC7C4B,EAAAA,GAAmBI,eAAgB7B,EAAM8B,QAAOjC,EAChD4B,EAAAA,GAAmBM,mBAAoB1B,EAAGR,EAC1C4B,EAAAA,GAAmBO,kBAAmBzB,EAASV,EAC/C4B,EAAAA,GAAmBQ,sBAAuBxB,EAAYZ,IAG3DqC,EAAAA,GAAUC,WAEd,E,y1BClDO,IA0DDC,EAAmD,SAACC,GAAS,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EA2B/DC,GAzBI,MAAJrB,GAAkB,OAAdC,EAAJD,EAAM5B,mBAAY,EAAlB6B,EAAoBqB,iBAAkBC,EAAAA,EAAeC,mBACjD,MAAJxB,GAAkB,OAAdE,EAAJF,EAAM5B,mBAAY,EAAlB8B,EAAoBoB,iBAAkBC,EAAAA,EAAeE,eACjD,MAAJzB,GAAkB,OAAdG,EAAJH,EAAM5B,mBAAY,EAAlB+B,EAAoBmB,iBAAkBC,EAAAA,EAAeG,kBACjD,MAAJ1B,GAAkB,OAAdI,EAAJJ,EAAM5B,mBAAY,EAAlBgC,EAAoBkB,iBAAkBC,EAAAA,EAAeI,qBACjD,MAAJ3B,GAAkB,OAAdK,EAAJL,EAAM5B,mBAAY,EAAlBiC,EAAoBiB,iBAAkBC,EAAAA,EAAeK,kBACjD,MAAJ5B,GAAkB,OAAdM,EAAJN,EAAM5B,mBAAY,EAAlBkC,EAAoBgB,iBAClBC,EAAAA,EAAeM,0BACb,MAAJ7B,GAAkB,OAAdO,EAAJP,EAAM5B,mBAAY,EAAlBmC,EAAoBe,iBAClBC,EAAAA,EAAeO,2BACb,MAAJ9B,GAAkB,OAAdQ,EAAJR,EAAM5B,mBAAY,EAAlBoC,EAAoBc,iBAAkBC,EAAAA,EAAeQ,iBACjD,MAAJ/B,GAAkB,OAAdS,EAAJT,EAAM5B,mBAAY,EAAlBqC,EAAoBa,iBAAkBC,EAAAA,EAAeS,uBACjD,MAAJhC,GAAkB,OAAdU,EAAJV,EAAM5B,mBAAY,EAAlBsC,EAAoBY,iBAClBC,EAAAA,EAAeU,4BACb,MAAJjC,GAAkB,OAAdW,EAAJX,EAAM5B,mBAAY,EAAlBuC,EAAoBW,iBAClBC,EAAAA,EAAeW,4CACb,MAAJlC,GAAkB,OAAdY,EAAJZ,EAAM5B,mBAAY,EAAlBwC,EAAoBU,iBAClBC,EAAAA,EAAeY,qCACb,MAAJnC,GAAkB,OAAda,EAAJb,EAAM5B,mBAAY,EAAlByC,EAAoBS,iBAAkBC,EAAAA,EAAea,oBACjD,MAAJpC,GAAkB,OAAdc,EAAJd,EAAM5B,mBAAY,EAAlB0C,EAAoBQ,iBAAkBC,EAAAA,EAAec,kBACjD,MAAJrC,GAAkB,OAAde,EAAJf,EAAM5B,mBAAY,EAAlB2C,EAAoBO,iBAAkBC,EAAAA,EAAee,kBACjD,MAAJtC,GAAkB,OAAdgB,EAAJhB,EAAM5B,mBAAY,EAAlB4C,EAAoBM,iBAAkBC,EAAAA,EAAegB,qBACjD,MAAJvC,GAAkB,OAAdiB,EAAJjB,EAAM5B,mBAAY,EAAlB6C,EAAoBK,iBAAkBC,EAAAA,EAAeiB,sBACjD,MAAJxC,GAAkB,OAAdkB,EAAJlB,EAAM5B,mBAAY,EAAlB8C,EAAoBI,iBAAkBC,EAAAA,EAAekB,kBACjD,MAAJzC,GAAkB,OAAdmB,EAAJnB,EAAM5B,mBAAY,EAAlB+C,EAAoBG,iBAAkBC,EAAAA,EAAemB,kBACjD,MAAJ1C,GAAkB,OAAdoB,EAAJpB,EAAM5B,mBAAY,EAAlBgD,EAAoBE,iBAAkBC,EAAAA,EAAeoB,qBAErDnE,OAAOC,SAASmE,QACXC,EAAAA,EAAMlF,MAAK,UAA0B,OAA1B0D,EAASrB,EAAK5B,mBAAY,EAAjBiD,EAAmBC,eAGhD,E,WC3FAlE,IAAAA,OAAaC,KAEb,IAAIK,EAAgB,ECHdoF,EAAQ,IAAIC,EAAAA,E,WCHLC,EAAiE,SAAH1G,GAErE,IADJ2G,EAAQ3G,EAAR2G,SAEMC,GDGYC,EAAAA,EAAAA,QAChB,IAAIC,EAAAA,EAAa,CACfN,MAAOA,EACPO,MAAMC,EAAAA,EAAAA,GAAK,CDGf,IAAIpH,EAAAA,GAAW,SAACC,EAAWC,GACzB,IAAQM,EAAkBP,EAAlBO,cACFmB,EAAiBT,MACjBmG,EAAUpH,EAAUqH,aAU1B,OARArH,EAAUE,WAAW,CAAEwB,eAAAA,IACvB1B,EAAUE,WAAW,CACnBG,QAAOO,OAAAC,OAAA,GACK,MAAPuG,OAAO,EAAPA,EAAS/G,QAAO,CACnB,qBGtBCI,eAAeC,QAAQ4G,EAAAA,IHsBwB,OAAM/F,MAIrDtB,EAIEA,EAAQD,GAAWuH,KAAI,SAACC,GAAa,IAAAC,EAAApG,EAAAqG,EACpCC,EAAU1G,MACVmG,EAAUpH,EAAUqH,aAEpBO,EAA+B,MAAPR,OAAO,EAAPA,EAAS1F,eACjCmG,EAAaF,EAAQG,KAAKF,GAE1BG,EAAwB,MAAPX,OAAO,EAAPA,EAASI,SAC1BQ,EAAwB,MAAPZ,OAAO,EAAPA,EAAS/G,QAC1BkB,EAA8B,MAAdyG,OAAc,EAAdA,EAAiB,sBACjCpG,EAA8B,MAAdmG,GAAuB,OAATN,EAAdM,EAAgB1H,cAAO,EAAvBoH,EAAyBQ,IAAI,kBAC7CtG,EAA2B,MAAdoG,OAAc,EAAdA,EAAgBG,OAC7BC,EAAexG,GAAc,KAAOA,EAAa,IACjDE,GAAoB,MAAdkG,OAAc,EAAdA,EAAgBlG,MAAO,GAqBnC,OAnBAK,EAAAA,GAAOC,sBAAmBuF,EAAA,IAErBU,EAAAA,GAAYC,UAAWhG,OAAOC,SAASF,SAAQsF,EAC/CU,EAAAA,GAAYE,UAAWT,EAAUH,EACjCU,EAAAA,GAAYG,YAAa5G,EAAU+F,EACnCU,EAAAA,GAAYI,eAAgB5G,EAAa8F,EACzCU,EAAAA,GAAYK,oBAA0C,MAArBb,OAAqB,EAArBA,EAC9B1G,MACDuB,SAAQiF,EACX1E,UAAO3B,EAAA,IACJ4B,EAAAA,GAAmBC,qBAAsBiF,EAAY9G,EACrD4B,EAAAA,GAAmBE,sBAAuB5B,EAAaF,EACvD4B,EAAAA,GAAmBG,YAAa7C,EAAac,EAC7C4B,EAAAA,GAAmBM,mBAAoB1B,EAAGR,GAAAqG,GAG/ChE,EAAAA,GAAUC,YAGL6D,CACT,IAtCS,IAuCX,KD3DAkB,EAAAA,EAAAA,IAAQ,SAAAvI,GAAgD,IAAAsH,EAAAkB,EAA7C3I,EAASG,EAATH,UAAW4I,EAAazI,EAAbyI,cAAeC,EAAY1I,EAAZ0I,aAC3BtI,EAAkBP,EAAlBO,cACF6G,EAAUpH,EAAUqH,aAClB3F,EAAmB0F,EAAnB1F,eACFiG,EAAU1G,MAEVK,EAAeI,EAAiBiG,EAAQG,KAAKpG,GAAkB,EAC/DsG,EAAwB,MAAPZ,OAAO,EAAPA,EAAS/G,QAC1BkB,EAA8B,MAAdyG,OAAc,EAAdA,EAAiB,sBACjCD,EAAwB,MAAPX,OAAO,EAAPA,EAASI,SAC1B7F,EAA2B,MAAdoG,OAAc,EAAdA,EAAgBe,WAC7BlH,EAA8B,MAAdmG,GAAuB,OAATN,EAAdM,EAAgB1H,cAAO,EAAvBoH,EAAyBQ,IAAI,kBAC7CpG,EAAyB,OAAtB8G,EAAiB,MAAdZ,OAAc,EAAdA,EAAgBlG,KAAG8G,EAAI,GAEnC,GAAIC,EACF,IAAK,IAAmCG,EAAxCC,EAAAC,EAA2BL,KAAaG,EAAAC,KAAAE,MAAE,KAAAC,EAAAC,EAA/BC,EAAYN,EAAAO,MACfvH,EACmB,OADUoH,EACjCE,EAAaE,aACR,OADkBJ,EADaA,EAEnCtF,WAAI,EAF+BsF,EAE7BpH,UACHE,EACmB,OADamH,EACpCC,EAAaE,aACR,OADkBH,EADgBA,EAEtCvF,WAAI,EAFkCuF,EAEhCnH,aAETd,EAAgB,CACdG,aAAAA,EACAC,cAAAA,EACAhB,cAAAA,EACAiB,MAAO6H,EACP5H,cAAe+H,EAAAA,GAAcC,MAC7B/H,eAAAA,EACAC,WAAAA,EACAC,cAAAA,EACAC,IAAAA,EACAE,UAAAA,EACAE,aAAAA,GAEJ,CAGE4G,GACF1H,EAAgB,CACdG,aAAAA,EACAC,cAAAA,EACAhB,cAAAA,EACAiB,MAAOqH,EACPpH,cAAe+H,EAAAA,GAAcE,aAC7BhI,eAAAA,EACAC,WAAAA,EACAC,cAAAA,EACAC,IAAAA,IAKS,MAAb+G,GAAAA,EAAee,MAAK,SAAAC,GAAA,IAAGL,EAAUK,EAAVL,WAAU,OAAO3F,EAAsB,MAAV2F,OAAU,EAAVA,EAAY1F,KAAK,GACvE,IEjDM/D,IGVC,IAAI+J,EAAAA,EAAS,CAClB/I,IAAK,IAAGN,EAAAA,EAAAA,KAAyBO,EAAAA,EAAYC,SAC7C8I,YAAa,kBHWXC,KAAM,oBACNC,oBAAoB,EACpBC,eAAgB,CACdC,WAAY,CACVC,YAAa,oBAMJC,QCpBjB,OAAOC,EAAAA,EAAAA,KAACC,EAAAA,EAAc,CAACvD,OAAQA,EAAOD,SAAEA,GAC1C,EGIayD,EAAsB,WAajC,MAAO,CACLjK,eAAgBG,eAAeC,QAAQ,uBACvC8J,OAAQ/J,eAAeC,QAAQ,eAC/B+J,mBAfyB,SAACD,GACrB/J,eAAeC,QAAQ,gBAC1BD,eAAeiK,QAAQ,cAAeF,EAE1C,EAYEG,kBAVwB,SAAC9I,GACpBpB,eAAeC,QAAQ,wBAC1BD,eAAeiK,QAAQ,sBAAuB7I,EAElD,EAQF,C,4FC/Ba+I,EAAsB,WACjC,OACEP,EAAAA,EAAAA,KAACQ,EAAAA,EAAI,CAACC,MAAI,EAACC,OAAO,SAASC,OAAO,SAAS,cAAY,YAAWlE,UAChEuD,EAAAA,EAAAA,KAACY,EAAAA,GAAM,KAGb,C,6FCJaC,EAAcC,EAAAA,cAA8B,CACvDC,YAAa,KACbC,gBAAgB,EAChBC,eAAgB,iBAAO,CAAC,CAAC,I,WCFdC,EAAuD,SAAHpL,GAAqB,ICezCqL,EAErCC,EAENC,EAGEC,EAHOP,EAAaC,EAAkBC,EDnB6BxE,EAAQ3G,EAAR2G,SAC/D8E,GCgBAH,EAAoD,OAA3CD,EAAG/K,eAAeC,QAAQ,mBAAiB8K,EAAI,KAE9DE,GAA0DG,EAAAA,EAAAA,UAAS,CACjET,YAAaK,EACbJ,iBAAkBI,IAClBE,EAAAD,EAAA,GAHON,EAAWO,EAAXP,YAAaC,EAAcM,EAAdN,eAAkBC,EAAcI,EAAA,GAa/C,CACLN,YAAAA,EACAC,eAAAA,EACAC,gBAX8BQ,EAAAA,EAAAA,cAAY,SAACC,GAC3CtL,eAAeiK,QAAQ,iBAAkBqB,GACzCT,EAAe,CACbF,YAAaW,EACbV,iBAAkBU,GAEtB,GAAG,MD5BH,OAAO1B,EAAAA,EAAAA,KAACa,EAAYc,SAAQ,CAAC1C,MAAOsC,EAAK9E,SAAEA,GAC7C,EAEamF,EAAiB,WAAH,OAASd,EAAAA,WAAiBD,EAAY,C,wDEV1D,IAAMnK,EAAc,CACzBmL,WAAY,sCACZlL,SAAU,yBACVmL,UAAW,CAAC,OAAQ,QACpBC,OAAQ,MACRC,QAAS,qB,gZCkCCC,EAAiB,SAAjBA,GAAiB,OAAjBA,EAAiB,kBAAjBA,EAAiB,oBAAjBA,EAAiB,kBAAjBA,EAAiB,gBAAjBA,EAAiB,kBAAjBA,EAAiB,sBAAjBA,EAAiB,sBAAjBA,EAAiB,iBAAjBA,EAAiB,kCAAjBA,EAAiB,uBAAjBA,EAAiB,oBAAjBA,CAAiB,MAyEjBC,EAA0B,SAA1BA,GAA0B,OAA1BA,EAA0B,kBAA1BA,EAA0B,kBAA1BA,EAA0B,YAA1BA,EAA0B,gBAA1BA,EAA0B,sBAA1BA,EAA0B,2BAA1BA,CAA0B,MA4OzBC,GAAiDC,EAAAA,EAAAA,IAAGC,IAAAA,EAAAC,IAAA,oLAUpDC,GAAmCH,EAAAA,EAAAA,IAAGI,IAAAA,EAAAF,IAAA,4NA2B5C,SAASG,EAAoCC,GAC5C,OAAOC,EAAAA,EAA0GJ,EAAkCG,EACrJ,CAIC,IAAME,GAAkCR,EAAAA,EAAAA,IAAGS,IAAAA,EAAAP,IAAA,sSAgC3C,SAASQ,EAAmCJ,GAC3C,OAAOC,EAAAA,EAAwGC,EAAiCF,EAClJ,CAIC,IAAMK,GAAyCX,EAAAA,EAAAA,IAAGY,IAAAA,EAAAV,IAAA,keAiBnDH,GAsBC,SAASc,EAA0CP,GAClD,OAAOC,EAAAA,EAAsHI,EAAwCL,EACvK,CAIC,IAAMQ,GAA6Bd,EAAAA,EAAAA,IAAGe,IAAAA,EAAAb,IAAA,mRA6BtC,SAASc,EAA2BV,GACnC,OAAOC,EAAAA,EAAqFO,EAA4BR,EAC1H,CAOC,IAAMW,GAA8BjB,EAAAA,EAAAA,IAAGkB,IAAAA,EAAAhB,IAAA,yEAqBvC,SAASiB,EAA4Bb,GACpC,OAAOC,EAAAA,EAAuFU,EAA6BX,EAC7H,CAOC,IAAMc,GAAyBpB,EAAAA,EAAAA,IAAGqB,IAAAA,EAAAnB,IAAA,4LA4BlC,SAASoB,EAAuBhB,GAC/B,OAAOC,EAAAA,EAA6Ea,EAAwBd,EAC9G,CAOC,IAAMiB,GAA2CvB,EAAAA,EAAAA,IAAGwB,IAAAA,EAAAtB,IAAA,0QASrDH,GAmBC,SAAS0B,EAAyCnB,GACjD,OAAOC,EAAAA,EAAiHgB,EAA0CjB,EACpK,CAOC,IAAMoB,GAAoB1B,EAAAA,EAAAA,IAAG2B,IAAAA,EAAAzB,IAAA,2IAyB7B,SAAS0B,EAAkBtB,GAC1B,OAAOC,EAAAA,EAAmEmB,EAAmBpB,EAC/F,CAOC,IAAMuB,GAA4B7B,EAAAA,EAAAA,IAAG8B,IAAAA,EAAA5B,IAAA,yQA8BrC,SAAS6B,EAA0BzB,GAClC,OAAOC,EAAAA,EAAmFsB,EAA2BvB,EACvH,CAOC,IAAM0B,GAA+BhC,EAAAA,EAAAA,IAAGiC,IAAAA,EAAA/B,IAAA,8JAyBxC,SAASgC,EAA6B5B,GACrC,OAAOC,EAAAA,EAAyFyB,EAA8B1B,EAChI,C,kHC1sBO6B,EAA2B,SAAHzO,EAEnC0O,GACS,IAFPvL,EAAOnD,EAAPmD,QAASwL,EAAK3O,EAAL2O,MAIX5M,EAAAA,GAAOV,MAAM8B,EAASyL,EAAAA,GAActF,MAAO,CACzCuF,eAAgBH,EAAKG,eACrBF,MAAY,MAALA,EAAAA,EAAS,IAEpB,E,+BCMMG,EAAmC,CAAEzN,MAAO,MAErC0N,EAAa,SAAAC,GAIxB,SAAAD,EAAYE,GAA2B,IAAAC,EAGX,OAF1BA,EAAAF,EAAAG,KAAA,KAAMF,IAAM,MAEPG,MAAQN,EAAaI,CAC5B,CARwBG,IAAAN,EAAAC,GAQvBD,EAEMO,yBAAP,SAAiDjO,GAE/C,MAAO,CAAEA,MAAAA,EACX,EAAC,IAAAkO,EAAAR,EAAAS,UA6BA,OA7BAD,EAEDE,WAAA,WAAoC,QAAAC,EAAAC,EAAAC,EAAAC,UAAAC,OAAtBC,EAAI,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAJF,EAAIE,GAAAJ,UAAAI,GACE,OAAlBP,GAAAC,EAAAO,KAAKjB,OAAMkB,UAAXT,EAAAP,KAAAiB,MAAAV,EAAA,CAAAC,GAAAU,OAAwBN,IACxBG,KAAKI,OACP,EAACf,EAEDe,MAAA,WACEJ,KAAKK,SAASzB,EAChB,EAACS,EAEDiB,kBAAA,SAAkBnP,EAAcqN,GAAuB,IAAA+B,EAAAC,EACnC,OAAlBD,GAAAC,EAAAR,KAAKjB,OAAM1G,UAAXkI,EAAAtB,KAAAuB,EAAqBrP,EAAOqN,EAC9B,EAACa,EAEDoB,OAAA,WAAS,IAAAC,EAAA,KACCvP,EAAU6O,KAAKd,MAAf/N,MACAwP,EAAsBX,KAAKjB,MAA3B4B,kBAER,GAAc,OAAVxP,EAAgB,CAClB,IAAM4N,EAAQ,CACZ5N,MAAAA,EACAoO,WAAY,kBAAMmB,EAAKnB,YAAY,GAGrC,OAAOvF,EAAAA,EAAAA,KAAC2G,EAAiBpQ,OAAAC,OAAA,GAAKuO,GAChC,CAEA,OAAOiB,KAAKjB,MAAMtI,QACpB,EAACoI,CAAA,CA1CuB,CAAS/D,EAAAA,W,WCXtB8F,EAAiE,SAAH9Q,GAErE,IADJ2G,EAAQ3G,EAAR2G,SAEA,OACEuD,EAAAA,EAAAA,KAAC6E,EAAa,CACZ8B,kBAAmBE,EACnBxI,QAASkG,EAAyB9H,SAEjCA,GAGP,EAEMoK,EAA6C,SAAHtH,GAAkB,IAChEuH,ECpBmC,SACnC3P,GAEA,IAAI4P,EACAC,EAGJ,OAAQ7P,EAAM8B,SACZ,KAAK8B,EAAAA,EAAekM,aAClBD,EAAQ,iBACRD,EAAc,MACd,MACF,KAAKhM,EAAAA,EAAeY,mCAClBqL,EAAQ,uCACR,MACF,KAAKjM,EAAAA,EAAemM,iBACpB,KAAKnM,EAAAA,EAAeS,qBAIpB,KAAKT,EAAAA,EAAeU,0BAClBuL,EAAQ,wCACRD,EAAc,4DACd,MACF,KAAKhM,EAAAA,EAAeG,gBACpB,KAAKH,EAAAA,EAAeE,aAClB+L,EAAQ,uBACRD,EAAc,+CACd,MACF,QACEC,EAAQ,oBACRD,EAAc,qEAGlB,MAAO,CAAEA,YAAAA,EAAaC,MAAAA,EAAOG,WA7BV,qCA8BrB,CDf6CC,CADc7H,EAALpI,OAC5C4P,EAAWD,EAAXC,YAAaC,EAAKF,EAALE,MAAOG,EAAUL,EAAVK,WAE5B,OACEnH,EAAAA,EAAAA,KAACqH,EAAAA,EAAU,CACTC,qBAAmB,EACnBP,YAAaA,EACbC,MAAOA,EACPO,SAAU,CACRC,IAAKL,IAIb,E,kEE7BaM,EAAqE,SAAH3R,GAEzE,IADJ2G,EAAQ3G,EAAR2G,SAEQjD,GAAS+J,EAAAA,EAAAA,MAAT/J,KACAkO,GAA8BC,EAAAA,EAAAA,MAA9BD,0BAEFE,GAAqBC,EAAAA,EAAAA,UACzB,eAAAC,EAAA,OAA+B,OAA/BA,EAAU,MAAJtO,OAAI,EAAJA,EAAMuO,qBAAmBD,OAAIE,CAAS,GAC5C,CAACxO,IAOH,OALAyO,EAAAA,EAAAA,YAAU,WACRP,EAA0BE,EAC5B,GAAG,CAACA,EAAoBF,KAGjB1H,EAAAA,EAAAA,KAAAkI,EAAAA,SAAA,CAAAzL,SAAGA,GACZ,E,sBCrBa0L,EAAY,CACvBC,MAAO,Q,iCCKIC,GAAYC,EAAAA,EAAAA,OACvB,kBAAM,sDAAmD,IAG9CC,GAAoBD,EAAAA,EAAAA,OAC/B,kBAAM,sDAAoE,IAG/DE,GAAuBF,EAAAA,EAAAA,OAClC,kBACE,qDAA2E,IAGlEG,GAA2BH,EAAAA,EAAAA,OACtC,kBACE,8DAEC,IAGQI,GAAcJ,EAAAA,EAAAA,OACzB,kBAAM,sDAAuD,IAGlDK,EAAgB,WAC3B,IAAQC,GAAMC,EAAAA,EAAAA,KAAND,EACFE,EAAS,WAEb,OADAC,SAAS/B,MAAQ4B,EAAE,+BACZ5I,EAAAA,EAAAA,KAACqI,EAAS,GACnB,EACMW,EAAoB,WAExB,OADAD,SAAS/B,MAAQ4B,EAAE,+BACZ5I,EAAAA,EAAAA,KAACuI,EAAiB,GAC3B,EACMU,EAAuB,WAE3B,OADAF,SAAS/B,MAAQ4B,EAAE,+BACZ5I,EAAAA,EAAAA,KAACwI,EAAoB,GAC9B,EACMpJ,EAAQ,WAEZ,OADA2J,SAAS/B,MAAQ4B,EAAE,+BACZ5I,EAAAA,EAAAA,KAAC0I,EAAW,GACrB,EACMQ,EAAO,WAEX,OADAH,SAAS/B,MAAQ4B,EAAE,+BACZ5I,EAAAA,EAAAA,KAACyI,EAAwB,GAClC,EACA,OACEU,EAAAA,EAAAA,MAACC,EAAAA,GAAM,CAAA3M,SAAA,EACLuD,EAAAA,EAAAA,KAACqJ,EAAAA,GAAK,CAACC,KAAMjN,EAAAA,EAAMkN,OAAQC,SAASxJ,EAAAA,EAAAA,KAAC8I,EAAM,OAC3C9I,EAAAA,EAAAA,KAACqJ,EAAAA,GAAK,CAACC,KAAMjN,EAAAA,EAAMoN,kBAAmBD,SAASxJ,EAAAA,EAAAA,KAACgJ,EAAiB,OACjEhJ,EAAAA,EAAAA,KAACqJ,EAAAA,GAAK,CACJC,KAAMjN,EAAAA,EAAMqN,qBACZF,SAASxJ,EAAAA,EAAAA,KAACiJ,EAAoB,OAEhCjJ,EAAAA,EAAAA,KAACqJ,EAAAA,GAAK,CAACC,KAAMjN,EAAAA,EAAMlF,MAAOqS,SAASxJ,EAAAA,EAAAA,KAACZ,EAAK,OACzCY,EAAAA,EAAAA,KAACqJ,EAAAA,GAAK,CAACC,KAAK,IAAIE,SAASxJ,EAAAA,EAAAA,KAACkJ,EAAI,QAGpC,ECxCO,SAASS,IAMd,OALA1B,EAAAA,EAAAA,YAAU,WChBuB,IAAM2B,EAAAC,GACvCC,EAAAA,EAAAA,MAAoBF,EAAA,IACfG,EAAAA,GAAmBC,mBAAmBC,EAAAA,EAAAA,MAAkBL,KAAAC,EAAA,IAExDK,EAAAA,GAAqBC,SAAUzT,EAAAA,EAAYsL,QAAO6H,EAClDE,EAAAA,GAAmBK,oBAAqB1T,EAAAA,EAAYqL,OAAM8H,GDa/D,GAAG,MAGCQ,EAAAA,EAAAA,QAAgBC,EAAAA,EAAAA,OAAiBC,EAAAA,EAAAA,MAKnCvK,EAAAA,EAAAA,KAACkB,EAAAA,EAAY,CAAAzE,UACXuD,EAAAA,EAAAA,KAACwK,EAAAA,GAAa,CAAA/N,UACZuD,EAAAA,EAAAA,KAACyK,EAAAA,GAAwB,CAAAhO,UACvBuD,EAAAA,EAAAA,KAAC0K,EAAAA,GAAsB,CAAAjO,UACrBuD,EAAAA,EAAAA,KAACxD,EAAAA,EAAsB,CAAAC,UACrBuD,EAAAA,EAAAA,KAACyH,EAA0B,CAAAhL,UACzBuD,EAAAA,EAAAA,KAAC2K,EAAAA,EAAa,CACZC,MAAOC,EAAAA,EACPC,OAAQ3C,EACR4C,GAAG,OAAMtO,UAETuD,EAAAA,EAAAA,KAACgL,EAAAA,SAAQ,CAACC,UAAUjL,EAAAA,EAAAA,KAACO,EAAAA,EAAS,IAAI9D,UAChCuD,EAAAA,EAAAA,KAAC4G,EAAsB,CAAAnK,UACrBuD,EAAAA,EAAAA,KAAC2I,EAAa,sBAjBzB,IA4BX,CErDAuC,EAAAA,QAAgBlL,EAAAA,EAAAA,KAAC2J,EAAG,IAAKZ,SAASoC,eAAe,Q,wDCN1C,IAAKpQ,EAAc,SAAdA,GAAc,OAAdA,EAAc,kCAAdA,EAAc,wCAAdA,EAAc,0CAAdA,EAAc,oCAAdA,EAAc,oDAAdA,EAAc,0CAAdA,EAAc,kDAAdA,EAAc,sFAAdA,EAAc,wEAAdA,EAAc,oCAAdA,EAAc,oCAAdA,EAAc,kCAAdA,EAAc,sDAAdA,EAAc,kCAAdA,EAAc,4BAAdA,EAAc,kCAAdA,EAAc,gCAAdA,EAAc,sCAAdA,EAAc,4CAAdA,EAAc,kCAAdA,EAAc,kCAAdA,EAAc,4BAAdA,EAAc,wCAAdA,CAAc,K,kFCIb5E,EAAuB,SAACgK,GACnC,OAAKA,KAAWiL,EAAAA,EAAAA,SAAcC,EAAAA,EAAAA,MAElBlL,EAGH,WAAWA,EAAOmL,OAAM,IAAI5U,EAAAA,EAAYmL,WAAU,OAFlD,WAAWnL,EAAAA,EAAYmL,WAAU,OAFjC,WAAWnL,EAAAA,EAAYmL,UAMlC,C,wHCVauJ,EAAW,WACtB,MAA8B,gBAAvB1U,EAAAA,EAAYqL,MACrB,EAEasJ,EAAkB,WAC7B,MAA8B,eAAvB3U,EAAAA,EAAYqL,MACrB,EAEasI,EAAY,WACvB,MAA8B,eAAvB3T,EAAAA,EAAYqL,MACrB,C,wDCZO,IAAM1F,EAAQ,CACnBkP,KAAM,IACNhC,OAAQ,aACRE,kBAAmB,qBACnBC,qBAAsB,wBACtBvS,MAAO,S,iOCLF,IAAKqU,EAAY,SAAZA,GAAY,OAAZA,EAAY,sBAAZA,EAAY,sCAAZA,EAAY,8BAAZA,EAAY,8BAAZA,CAAY,MAOZC,EAAY,SAAZA,GAAY,OAAZA,EAAY,kDAAZA,CAAY,MAIZC,EAAS,SAATA,GAAS,OAATA,EAAS,oDAATA,EAAS,0BAATA,EAAS,sBAATA,EAAS,sCAATA,EAAS,4CAATA,CAAS,MAQTC,EAAU,SAAVA,GAAU,OAAVA,EAAU,qDAAVA,EAAU,gCAAVA,EAAU,gCAAVA,CAAU,MAMVC,EAAa,SAAbA,GAAa,OAAbA,EAAa,kEAAbA,EAAa,6CAAbA,EAAa,4CAAbA,CAAa,MAMbzM,EAAa,SAAbA,GAAa,OAAbA,EAAa,cAAbA,EAAa,4BAAbA,CAAa,MAKbvG,EAAkB,SAAlBA,GAAkB,OAAlBA,EAAkB,6CAAlBA,EAAkB,qCAAlBA,EAAkB,iCAAlBA,EAAkB,2CAAlBA,EAAkB,+BAAlBA,EAAkB,uCAAlBA,EAAkB,yBAAlBA,EAAkB,4CAAlBA,CAAkB,MAYlBS,EAAS,SAATA,GAAS,OAATA,EAAS,wBAATA,CAAS,K,wDChDd,IAAMiR,EAAa,WACxB,IACE,OAAOtS,OAAO6T,OAAS7T,OAAO8T,GAChC,CAAE,MAAOC,GAEP,OADAC,QAAQ7U,MAAM,iBAAkB4U,IACzB,CACT,CACF,C,wDCIO,IAAMxB,EAAiB,WAC5B,IAAM0B,EAAiBjU,QAAUA,OAAOkU,SAClCC,EAAgC,MAAdF,OAAc,EAAdA,EACpBG,qBACJ,OAAOH,QAA4C,IAAnBE,CAClC,C,gHCLYE,EAAc,SAAdA,GAAc,OAAdA,EAAc,0BAAdA,EAAc,4BAAdA,EAAc,8BAAdA,EAAc,4BAAdA,CAAc,M,cCDbC,EAAsB,WAEjC,MAAO,CACLC,UAAW,CACTnE,MAAO,SAEToE,UAAW,CACTpE,MAAO,QACPqE,OAAQ,QACRC,iBARcC,EAAAA,EAAAA,MAAV/B,MAQmBgC,cAAcC,YAAYC,QAAQC,aAE3DC,kBAAmB,CACjBC,SAAU,QACVC,UAAW,UAEbC,YAAa,CACXD,UAAW,UAGjB,E,WCvBO,SAAS7F,EAAUvR,GAON,IANlBkR,EAAKlR,EAALkR,MACAO,EAAQzR,EAARyR,SACAR,EAAWjR,EAAXiR,YACAO,EAAmBxR,EAAnBwR,oBAAmB8F,EAAAtX,EACnBuX,eAAAA,OAAc,IAAAD,EAAG,QAAOA,EAAAE,EAAAxX,EACxByX,KAAAA,OAAI,IAAAD,EAAGjB,EAAemB,aAAYF,EAElCG,EACEnB,IADME,EAASiB,EAATjB,UAAWD,EAASkB,EAATlB,UAAWS,EAAiBS,EAAjBT,kBAAmBG,EAAWM,EAAXN,YAG3CO,ECdD,SACLhW,EACA2V,GAEA,OAAQ3V,IACD2U,EAAemB,aACX,GAAG9V,ICTciW,EDSYN,GCPjCM,EAAK,GAAGC,cAAgBD,EAAKE,OAAO,GAAG/S,cAD5B6S,GDUPjW,ECXN,IAAuBiW,CDa9B,CDIgBG,CAAkBP,EAAMF,GAEtC,OACElE,EAAAA,EAAAA,MAAC3I,EAAAA,EAAI,CACHC,MAAI,EACJsN,QAAM,EACNhD,GAAG,OACHrK,OAAO,SACPC,OAAO,SACPqN,IAAI,aACJlD,OAAQ0B,EAAU/P,SAAA,EAElBuD,EAAAA,EAAAA,KAACQ,EAAAA,EAAI,CAACE,OAAO,SAASC,OAAO,SAAQlE,UACnCuD,EAAAA,EAAAA,KAACiO,EAAAA,EAAK1X,OAAAC,OAAA,CACJ,cAAgBkX,EAAK,QACrBQ,OAAK,EACLpD,OAAQyB,EACR4B,IAAG,iCAAmCT,EAAK,QACvCnG,MAGPP,IACChH,EAAAA,EAAAA,KAACoO,EAAAA,EAAI,CACHC,SAASrO,EAAAA,EAAAA,KAAAkI,EAAAA,SAAA,CAAAzL,SAAGuK,IACZ8D,OAAQqC,EACRmB,OAAO,OACPC,KAAK,QACL,cAAY,oBAGfxH,IACC/G,EAAAA,EAAAA,KAACoO,EAAAA,EAAI,CACHI,UAAWlH,EACXN,MAAOD,EACP+D,OAAQkC,EACRqB,SAASrO,EAAAA,EAAAA,KAAAkI,EAAAA,SAAA,CAAAzL,SAAGsK,IACZ,cAAY,4BAKtB,C,uQGxDa0H,EAAuC,CAClD7G,wBAAoBI,EACpB0G,qBAAsB,CAEpBC,iBAAkB,GAClBC,mBAAmB,GAErBC,0BAA2B,CAEzBC,YAAa,CACXC,QAAQ,EACRC,UAAU,EACVC,QAAQ,EACRC,UAAU,EACVC,OAAO,EACPC,QAAQ,EACRC,SAAS,KAMFC,EAA4C,CACvD1H,wBAAoBI,EACpB0G,qBAAsB,CAEpBC,iBAAkB,GAClBC,mBAAmB,GAErBC,0BAA2B,CAEzBC,YAAa,CACXC,QAAQ,EACRC,UAAU,EACVC,QAAQ,EACRC,UAAU,EACVC,OAAO,EACPC,QAAQ,EACRC,SAAS,K,gCCjBFE,EAAiC,CAAC,EAC/C1X,EAAAA,GAAO2X,WAAWD,GAEX,IAAMzF,EAAuB,SAClC2F,EACAC,GAIID,IACFF,EAAeE,iBAAgBlZ,OAAAC,OAAA,GAC1B+Y,EAAeE,iBACfA,IAMHC,IACFH,EAAeG,iBAAgBnZ,OAAAC,OAAA,GAC1B+Y,EAAeG,iBACfA,IAIP7X,EAAAA,GAAO8X,cAAcJ,EACvB,EAgFMK,GAAmBC,EAAAA,EAAAA,IA9EO,WAC9B,IAAAxO,GAAsCG,EAAAA,EAAAA,WAAS,GAAxCsO,EAAWzO,EAAA,GAAE0O,EAAc1O,EAAA,GAClC2O,GAAsDxO,EAAAA,EAAAA,YAA/CyO,EAAmBD,EAAA,GAAEE,EAAsBF,EAAA,GAGlDG,GAAwC3O,EAAAA,EAAAA,YAAjC4O,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GACpCG,GAAgC9O,EAAAA,EAAAA,YAAzB+O,EAAQD,EAAA,GAAEE,EAAWF,EAAA,GAC5BG,GAAwCjP,EAAAA,EAAAA,WAAkB,GAAnDkP,EAAYD,EAAA,GAAEE,EAAeF,EAAA,GAW9BG,EAAqC,CACzChJ,mBAAoBwI,EACpBS,gBAAiB,CACf9T,QAV0B,CAC5B+T,SAJ2B,aAK3BC,UAJ4B,MAK5BC,WAAY,GACZC,sBAAuB,IAOrBC,sBAAuB,kCACvBC,iBAAkB,mCAClBC,qBAAqB,IA8CzB,OA1CyC,IAAIC,EAAAA,GACjC7B,WAAWoB,EAAY,KAEnC3I,EAAAA,EAAAA,YAAU,WACR,GAAImI,IAAiBH,EAAqB,CACxC,IAAMqB,EAAa,IAAIC,EAAAA,EAAmBhb,OAAAC,OAAC,CAAC,EACvCiY,EAAqB,CACxB7G,mBAAoBwI,MAEtBoB,EAAAA,EAAAA,GAA0BF,EAAYZ,GACtCR,EAAuBoB,EACzB,CAEF,GAAG,CAAClB,KAEJnI,EAAAA,EAAAA,YAAU,WACJgI,GAAuBM,IAAaT,GACtCG,EACGwB,uBAAuBlB,EAAQha,OAAAC,OAAA,GAC3B8Y,EAA0B,CAC7B1H,mBAAoBwI,KAErBsB,MACC,SAAChV,IACCiV,EAAAA,EAAAA,IAA4BjV,GAC5BwT,EAAuBxT,GACvBqT,GAAe,EACjB,IACA,SAAC6B,GAEKlB,GACF1E,QAAQ6F,IAAI,2FACiFD,GAG/F7B,GAAe,EACjB,GAIR,GAAG,CAACQ,IAEG,CACLN,oBAAAA,EACAvI,0BAA2B2I,EAC3ByB,qBAAsBtB,EACtBuB,yBAA0BpB,EAE9B,IAIalG,EAA2BmF,EAAiBjO,SAE5CgG,EAAsB,WAAH,OAASqK,EAAAA,EAAAA,GAAapC,EAAiB,EChHjEqC,EAAY,CAChB,EAAG,gBACH,EAAG,cACH,EAAG,oBACH,IAAK,iBAGMC,EAA8B,SAACC,GAC1C,IAAMC,GAAuBzV,EAAAA,EAAAA,SAAgB,IAE7CsL,EAAAA,EAAAA,YAAU,WACR,GAAImK,EAAqBrS,QAAS,CAChC,GAAI/H,OAAOqa,YAAa,KAAAC,EAAAC,EAAAC,EAAAC,EAChBJ,EAAcra,OAAOqa,YACrBK,EAAsB,MAAXL,GAEhB,OAF2BC,EAAXD,EAAaM,iBAC5B,gCACD,EAFgBL,EAEb,GACEM,EAAqB,MAAXP,GAA4C,OAAjCE,EAAXF,EAAaM,iBAAiB,qBAAc,EAA5CJ,EAA+C,GAGzDM,EAA6B,MAAXR,GAEvB,OAFkCG,EAAXH,EAAaS,iBACnC,oBACD,EAFuBN,EAEpB,GAEEO,EAC6B,iBAAX,MAAfF,OAAe,EAAfA,EAAiBtF,MACpB0E,EAAyB,MAAfY,OAAe,EAAfA,EAAiBtF,MACZ,MAAfsF,OAAe,EAAfA,EAAiBtF,KAMjBhW,EAAgD,OAAnCkb,EAAkB,MAAfI,OAAe,EAAfA,EAAiBG,iBAAeP,EAAI,EAOpDQ,EAA4B,MAAfJ,OAAe,EAAfA,EAAiBK,YAO9Bhb,EAA0B,MAAf2a,OAAe,EAAfA,EAAiB3a,SAG5Bib,EAAc,MAART,OAAQ,EAARA,EAAUU,UAEhBC,EAAY,MAAPT,OAAO,EAAPA,EAASQ,UACdrb,EAAWC,OAAOC,SAASF,SAC3BtB,EAAMuB,OAAOC,SAASqb,KACtB5T,EAAO1H,OAAOC,SAASsb,SACvBC,EAASzK,SAAS0K,SAExB,IACE,IAAIC,qBAAoB,SAACC,EAAWC,GAAa,IAAAC,EAAAC,EAAAC,EAAAC,EAAAhd,EACzCid,EAAoB,MAATN,GAEhB,OAFyBE,EAATF,EAAWb,iBAC1B,kCACD,EAFgBe,EAEb,GAEJhc,EAAAA,GAAOqc,YACL,CACExU,KAAAA,EACAjJ,IAAAA,EACA+c,OAAAA,EACAjc,cAAAA,EACAQ,SAAAA,EACAG,SAAAA,EACAib,IAAAA,EACAxa,SAAO3B,EAAA,GAAAA,EACJmd,EAA0BC,WAAYf,EAAErc,EACxCmd,EAA0BE,mBAAoBpB,EAAUjc,EACxDmd,EAA0BG,uBACzBvB,EAAc/b,EACfmd,EAA0BI,qBACjB,MAARN,OAAQ,EAARA,EAAUb,UAASpc,EACpBmd,EAA0BK,gBACG,OADWV,EAC/B,MAARG,GAAiB,OAATF,EAARE,EAAUzK,cAAO,EAAjBuK,EAAmBU,WAASX,EAAI,GAAE9c,EACnCmd,EAA0BO,sBACL,OADyBV,EACrC,MAARC,OAAQ,EAARA,EAAUhB,YAAUe,EAAI,GAAEhd,IAGhCmb,GAIFyB,EAASe,YACX,IAAGC,QAAQ,CAAErH,KAAM,2BAA4BsH,UAAU,GAC3D,CAAE,MAAOC,GAAG,IAAAC,EAEVld,EAAAA,GAAOqc,YACL,CACExU,KAAAA,EACAjJ,IAAAA,EACA+c,OAAAA,EACAjc,cAAAA,EACAQ,SAAAA,EACAG,SAAAA,EACAib,IAAAA,EACAxa,SAAOoc,EAAA,GAAAA,EACJZ,EAA0BC,WAAYf,EAAE0B,EACxCZ,EAA0BE,mBAAoBpB,EAAU8B,EACxDZ,EAA0BG,uBACzBvB,EAAcgC,IAGpB5C,EAEJ,CACF,CAGAC,EAAqBrS,SAAU,CACjC,CACF,GAAG,CAACoS,GACN,ECxDYjI,EAAoB,SAApBA,GAAoB,OAApBA,EAAoB,eAApBA,EAAoB,mBAApBA,EAAoB,qBAApBA,CAAoB,MAW3B8K,GALsBze,OAAAC,OAAA,GACtBuT,EAAAA,GACAG,GAG0B,SAA1B8K,GAA0B,OAA1BA,EAA0B,sBAA1BA,CAA0B,EAA1BA,GAA0B,KA6HnBb,GAzH+B5d,OAAAC,OAAA,GACtCye,EAAAA,GACAD,GAuHgC,SAAzBb,GAAyB,OAAzBA,EAAyB,uBAAzBA,EAAyB,uCAAzBA,EAAyB,+CAAzBA,EAAyB,2CAAzBA,EAAyB,6CAAzBA,EAAyB,iCAAzBA,CAAyB,O,UC5NxBlX,EAAwB,sBCIxBiY,GAAiBC,EAAAA,EAAAA,eAA2C,CAAC,G,WCM7DzK,EAET,SAAH5U,GAAqB,IAAf2G,EAAQ3G,EAAR2G,SAQL4E,GAA0BG,EAAAA,EAAAA,UACxBpL,eAAeC,QAAQ4G,IADlBmY,EAAK/T,EAAA,GAAEgU,EAAQhU,EAAA,GAIhBiU,GAAe7T,EAAAA,EAAAA,cAAY,SAACL,GAChCiU,EAASjU,GACThL,eAAeiK,QAAQpD,EAAuBmE,EAChD,GAAG,IAGGnC,GAAQ4I,EAAAA,EAAAA,UACZ,iBAAO,CAAEzG,UAAWgU,EAAOE,aAAAA,EAAc,GACzC,CAACF,EAAOE,IAoBV,OAdArN,EAAAA,EAAAA,YAAU,WACR,IAAKmN,EAAO,CACV,IAAMG,GAAgBC,EAAAA,EAAAA,KACtBF,EAAaC,EACf,CACF,GAAG,KAGHtN,EAAAA,EAAAA,YAAU,WACG,IAAA2B,EAAPwL,GACFtL,IAAoBF,EAAA,IAAIG,EAAAA,GAAmB0L,WAAYL,EAAKxL,GAEhE,GAAG,CAACwL,KAGFpV,EAAAA,EAAAA,KAACkV,EAAevT,SAAQ,CAAC1C,MAAOA,EAAMxC,SAAEA,GAE5C,ECtDawN,EAAmB,WAI9B,OCL4B,SAACyL,GAAyC,IAAAC,EAChEC,EAAmB,QACrBC,EAA4BD,EAI1BE,EAEF,CACFC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,SA2BN,IAhDApB,EAAmB,OAAXC,EAAGD,GAAQC,EAAIC,GAgDTmB,SAAS,KAGrB,GA1B+B,CAC/B,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAMoBA,SAASrB,GAO3BG,EAAoBH,MAPkB,CACtC,IAAMsB,EAAqBtB,EAASuB,UAAU,EAAG,GAE7CnB,EAAOkB,KACTnB,EAAoBC,EAAOkB,GAE/B,MARAnB,EAAoBC,EAAOJ,GAa7B,OAAOG,CACT,CD7DSqB,CAHUlf,OAAOM,UAAU6e,UAC9Bnf,OAAOM,UAAU6e,UAAU,GAC3Bnf,OAAOM,UAAUod,SAEvB,C","sources":["webpack:///./src/apollo/apollo-links/getAuthLink.ts","webpack:///./src/utils/getServiceBaseUrl.ts","webpack:///./src/utils/telemetry/trackNonUIEvent.ts","webpack:///./src/apollo/apollo-links/getErrorLink.ts","webpack:///./src/apollo/apollo-links/getTelemetryLink.ts","webpack:///./src/apollo/useGetApolloClient.ts","webpack:///./src/apollo/regional-apollo-provider/RegionalApolloProvider.tsx","webpack:///./src/utils/telemetry/getTelemetrySession.ts","webpack:///./src/apollo/apollo-links/getHttpLink.ts","webpack:///./src/apollo/regional-apollo-provider/utils/getRegionalEndpoint.ts","webpack:///./src/components/app-loader/AppLoader.tsx","webpack:///./src/components/auth/AuthContext.ts","webpack:///./src/components/auth/AuthProvider.tsx","webpack:///./src/components/auth/useAuth.ts","webpack:///./src/environments/environment.ppe.ts","webpack:///./src/graphql/graphql.ts","webpack:///./src/utils/telemetry/trackComponentErrorTrace.ts","webpack:///./src/components/errors/error-boundary/ErrorBoundry.tsx","webpack:///./src/components/errors/app-launch-error-boundary/AppLaunchErrorBoundary.tsx","webpack:///./src/components/errors/app-launch-error-boundary/utils/getLaunchErrorMessage.ts","webpack:///./src/components/telemetry/InstrumentationKeyProvider.tsx","webpack:///./src/app/App.styles.ts","webpack:///./src/app/RouteSwitcher.tsx","webpack:///./src/app/App.tsx","webpack:///./src/utils/telemetry/updateLoggerContext.ts","webpack:///./src/main.tsx","webpack:///./src/utils/constants/appLaunchError.ts","webpack:///./src/utils/createServiceBaseUrl.ts","webpack:///./src/utils/getEnvironment.ts","webpack:///./src/utils/routes/paths.ts","webpack:///./src/utils/telemetry/constants.ts","webpack:///./src/utils/validators/isInIframe.ts","webpack:///./src/utils/validators/isInPoweChart.ts","webpack:///../../libs/ui-error-panel/src/lib/ErrorPanel.types.ts","webpack:///../../libs/ui-error-panel/src/lib/useErrorPanelStyles.ts","webpack:///../../libs/ui-error-panel/src/lib/ErrorPanel.tsx","webpack:///../../libs/ui-error-panel/src/utils/getColorSchemeImg.ts","webpack:///../../libs/ui-error-panel/src/utils/titleCaseWord.ts","webpack:///../../libs/web-telemetry/src/telemetry-context/TelemetryProvider.tsx","webpack:///../../libs/web-telemetry/src/telemetry-logger/logger.ts","webpack:///../../libs/web-telemetry/src/page-load-telemetry/usePageLoadTelemetryTracker.tsx","webpack:///../../libs/web-telemetry/src/types.ts","webpack:///../../libs/web-telemetry/src/utils/constants.ts","webpack:///../../libs/web-telemetry/src/session-context/SessionContext.ts","webpack:///../../libs/web-telemetry/src/session-context/SessionProvider.tsx","webpack:///../../libs/web-telemetry/src/utils/getBrowserLocale.ts","webpack:///../../libs/web-telemetry/src/utils/languageMapper.ts"],"sourcesContent":["import { ApolloLink, Operation } from \"@apollo/client\";\r\n\r\nimport { environment } from \"../../environments/environment\";\r\nimport { getServiceBaseUrl } from \"../../utils/getServiceBaseUrl\";\r\n\r\nexport const getAuthLink = () =>\r\n new ApolloLink((operation: Operation, forward) => {\r\n operation.setContext(({ headers = {} }) => {\r\n const serviceBaseUrl = getServiceBaseUrl(operation);\r\n\r\n // return the headers to the context so httpLink can read them\r\n return {\r\n headers: {\r\n ...headers,\r\n },\r\n uri: `${serviceBaseUrl}${environment.basePath}`,\r\n };\r\n });\r\n\r\n return forward(operation);\r\n });\r\n","import { Operation } from \"@apollo/client\";\r\n\r\nimport { createServiceBaseUrl } from \"./createServiceBaseUrl\";\r\n\r\nexport const getServiceBaseUrl = (operation: Operation) => {\r\n // Always query from non-regional endpoint.\r\n if (operation.operationName === \"GetAriaIngestionKey\") {\r\n return createServiceBaseUrl();\r\n }\r\n\r\n return (\r\n sessionStorage.getItem(\"user.serviceBaseUrl\") || createServiceBaseUrl()\r\n );\r\n};\r\n","import { logger, NetworkState } from \"@mwt/web-js-telemetry\";\r\nimport dayjs from \"dayjs\";\r\nimport { GraphQLError } from \"graphql\";\r\nimport utc from \"dayjs/plugin/utc\";\r\n\r\nimport { DataBagHttpColumns, EventType } from \"./constants\";\r\n\r\ndayjs.extend(utc);\r\n\r\nexport type trackNonUIEventParams = {\r\n durationInMs: number;\r\n correlationId: string;\r\n operationName: string;\r\n error: GraphQLError | Error;\r\n requestResult: string;\r\n eventStartTime: dayjs.Dayjs;\r\n resultCode: number;\r\n contentLength: string;\r\n url: string;\r\n errorType?: string;\r\n errorSubType?: string;\r\n};\r\n\r\nexport const trackNonUIEvent = ({\r\n durationInMs,\r\n correlationId,\r\n operationName,\r\n error,\r\n requestResult,\r\n eventStartTime,\r\n resultCode,\r\n contentLength,\r\n url,\r\n errorType = \"\",\r\n errorSubType = \"\",\r\n}: trackNonUIEventParams) => {\r\n logger.logHttpRequestEvent(\r\n {\r\n hostname: window.location.hostname,\r\n duration: durationInMs,\r\n requestResult,\r\n resultCode,\r\n contentLength,\r\n requestCreatedTime: dayjs(eventStartTime).utc().format(),\r\n networkState: window.navigator?.onLine\r\n ? NetworkState.Online\r\n : NetworkState.Offline,\r\n databag: {\r\n [DataBagHttpColumns.DataBagIsSuccessful]: false,\r\n [DataBagHttpColumns.DataBagCorrelationId]: correlationId,\r\n [DataBagHttpColumns.DataBagUrl]: operationName,\r\n [DataBagHttpColumns.DataBagReason]: error.message,\r\n [DataBagHttpColumns.DataBagServiceUrl]: url,\r\n [DataBagHttpColumns.DataBagErrorType]: errorType,\r\n [DataBagHttpColumns.DatabBagErrorSubType]: errorSubType,\r\n },\r\n },\r\n EventType.NonUiEvent\r\n );\r\n};\r\n","import { onError } from \"@apollo/client/link/error\";\r\nimport dayjs from \"dayjs\";\r\n\r\nimport { trackNonUIEvent } from \"../../utils/telemetry/trackNonUIEvent\";\r\nimport { RequestResult } from \"../../utils/telemetry/constants\";\r\nimport { AppLaunchError } from \"../../utils/constants/appLaunchError\";\r\nimport { paths } from \"../../utils/routes/paths\";\r\nimport { ApolloErrorExtension, ErrorExtensionData } from \"../apollo.types\";\r\n\r\nexport const getErrorLink = () =>\r\n onError(({ operation, graphQLErrors, networkError }) => {\r\n const { operationName } = operation;\r\n const context = operation.getContext();\r\n const { eventStartTime } = context;\r\n const endTime = dayjs();\r\n\r\n const durationInMs = eventStartTime ? endTime.diff(eventStartTime) : 0;\r\n const requestHeaders = context?.headers;\r\n const correlationId = requestHeaders?.[\"x-ms-correlationid\"];\r\n const responseObject = context?.response;\r\n const resultCode = responseObject?.statusCode;\r\n const contentLength = responseObject?.headers?.get(\"content-length\");\r\n const url = responseObject?.url ?? \"\";\r\n\r\n if (graphQLErrors) {\r\n for (const graphqlError of graphQLErrors) {\r\n const errorType: string | undefined = (\r\n graphqlError.extensions as ApolloErrorExtension\r\n )?.data?.errorType;\r\n const errorSubType: string | undefined = (\r\n graphqlError.extensions as ApolloErrorExtension\r\n )?.data?.errorSubType;\r\n\r\n trackNonUIEvent({\r\n durationInMs,\r\n correlationId,\r\n operationName,\r\n error: graphqlError,\r\n requestResult: RequestResult.Error,\r\n eventStartTime,\r\n resultCode,\r\n contentLength,\r\n url,\r\n errorType,\r\n errorSubType,\r\n });\r\n }\r\n }\r\n\r\n if (networkError) {\r\n trackNonUIEvent({\r\n durationInMs,\r\n correlationId,\r\n operationName,\r\n error: networkError,\r\n requestResult: RequestResult.NetworkError,\r\n eventStartTime,\r\n resultCode,\r\n contentLength,\r\n url,\r\n });\r\n }\r\n\r\n // Redirect to global error page if error is found.\r\n graphQLErrors?.find(({ extensions }) => handleError(extensions?.data));\r\n });\r\n\r\nconst handleError: (data?: ErrorExtensionData) => void = (data) => {\r\n if (\r\n data?.errorSubType?.toLowerCase() === AppLaunchError.AuthStateInvalid ||\r\n data?.errorSubType?.toLowerCase() === AppLaunchError.UnAuthorized ||\r\n data?.errorSubType?.toLowerCase() === AppLaunchError.UnAuthenticated ||\r\n data?.errorSubType?.toLowerCase() === AppLaunchError.AccessTokenInvalid ||\r\n data?.errorSubType?.toLowerCase() === AppLaunchError.AadStateInvalid ||\r\n data?.errorSubType?.toLowerCase() ===\r\n AppLaunchError.CannotStampEhrExtension ||\r\n data?.errorSubType?.toLowerCase() ===\r\n AppLaunchError.CannotAcquireAccessToken ||\r\n data?.errorSubType?.toLowerCase() === AppLaunchError.SessionExpired ||\r\n data?.errorSubType?.toLowerCase() === AppLaunchError.TenantConfigNotFound ||\r\n data?.errorSubType?.toLowerCase() ===\r\n AppLaunchError.NoTenantConfigsConfigured ||\r\n data?.errorSubType?.toLowerCase() ===\r\n AppLaunchError.EncounterHasMultipleAppointmentReferences ||\r\n data?.errorSubType?.toLowerCase() ===\r\n AppLaunchError.EncounterHasNoAppointmentReference ||\r\n data?.errorSubType?.toLowerCase() === AppLaunchError.SubjectNotPatient ||\r\n data?.errorSubType?.toLowerCase() === AppLaunchError.TenantSuspended ||\r\n data?.errorSubType?.toLowerCase() === AppLaunchError.Licensenotfound ||\r\n data?.errorSubType?.toLowerCase() === AppLaunchError.UserConfigNotFound ||\r\n data?.errorSubType?.toLowerCase() === AppLaunchError.CannotCreateMeeting ||\r\n data?.errorSubType?.toLowerCase() === AppLaunchError.NotVirtualVisit ||\r\n data?.errorSubType?.toLowerCase() === AppLaunchError.PatientInactive ||\r\n data?.errorSubType?.toLowerCase() === AppLaunchError.AppointmentNotFound\r\n ) {\r\n window.location.replace(\r\n `${paths.error}?type=${data.errorSubType?.toLowerCase()}`\r\n );\r\n }\r\n};\r\n","import { ApolloLink } from \"@apollo/client\";\r\nimport { logger, HttpColumns } from \"@mwt/web-js-telemetry\";\r\nimport dayjs from \"dayjs\";\r\nimport utc from \"dayjs/plugin/utc\";\r\n\r\nimport { DataBagHttpColumns, EventType } from \"../../utils/telemetry/constants\";\r\nimport { getTelemetrySessionId } from \"../../utils/telemetry/getTelemetrySession\";\r\n\r\ndayjs.extend(utc);\r\n\r\nlet correlationId = 0;\r\n\r\n/**\r\n * Logs query response time telemetry.\r\n */\r\nexport const getTelemetryLink = () =>\r\n new ApolloLink((operation, forward) => {\r\n const { operationName } = operation;\r\n const eventStartTime = dayjs();\r\n const context = operation.getContext();\r\n\r\n operation.setContext({ eventStartTime });\r\n operation.setContext({\r\n headers: {\r\n ...context?.headers,\r\n \"x-ms-correlationid\": `${getTelemetrySessionId()}.${++correlationId}`,\r\n },\r\n });\r\n\r\n if (!forward) {\r\n return null;\r\n }\r\n\r\n return forward(operation).map((response) => {\r\n const endTime = dayjs();\r\n const context = operation.getContext();\r\n\r\n const requestEventStartTime = context?.eventStartTime;\r\n const elasedTime = endTime.diff(requestEventStartTime);\r\n\r\n const responseObject = context?.response;\r\n const requestHeaders = context?.headers;\r\n const correlationId = requestHeaders?.[\"x-ms-correlationid\"];\r\n const contentLength = responseObject?.headers?.get(\"content-length\");\r\n const resultCode = responseObject?.status;\r\n const isSuccessful = resultCode >= 100 && resultCode < 400 ? true : false;\r\n const url = responseObject?.url || \"\";\r\n\r\n logger.logHttpRequestEvent(\r\n {\r\n [HttpColumns.Hostname]: window.location.hostname,\r\n [HttpColumns.Duration]: elasedTime,\r\n [HttpColumns.ResultCode]: resultCode,\r\n [HttpColumns.ContentLength]: contentLength,\r\n [HttpColumns.RequestCreatedTime]: requestEventStartTime\r\n ?.utc()\r\n .format(),\r\n databag: {\r\n [DataBagHttpColumns.DataBagIsSuccessful]: isSuccessful,\r\n [DataBagHttpColumns.DataBagCorrelationId]: correlationId,\r\n [DataBagHttpColumns.DataBagUrl]: operationName,\r\n [DataBagHttpColumns.DataBagServiceUrl]: url,\r\n },\r\n },\r\n EventType.NonUiEvent\r\n );\r\n\r\n return response;\r\n });\r\n });\r\n","import { ApolloClient, InMemoryCache, from } from \"@apollo/client\";\r\nimport { useRef } from \"react\";\r\n\r\nimport { getAuthLink, getHttpLink } from \"./apollo-links\";\r\nimport { getErrorLink } from \"./apollo-links/getErrorLink\";\r\nimport { getTelemetryLink } from \"./apollo-links/getTelemetryLink\";\r\n\r\nconst cache = new InMemoryCache();\r\nexport const useGetApolloClient = () => {\r\n // Singleton apollo client\r\n const clientRef = useRef(\r\n new ApolloClient({\r\n cache: cache,\r\n link: from([\r\n getTelemetryLink(),\r\n getErrorLink(),\r\n getAuthLink(),\r\n getHttpLink(),\r\n ]),\r\n name: \"cerner-web-client\",\r\n queryDeduplication: true,\r\n defaultOptions: {\r\n watchQuery: {\r\n fetchPolicy: \"network-only\",\r\n },\r\n },\r\n })\r\n );\r\n\r\n return clientRef.current;\r\n};\r\n","import { ApolloProvider } from \"@apollo/client\";\r\n\r\nimport { useGetApolloClient } from \"../useGetApolloClient\";\r\n\r\nexport const RegionalApolloProvider: React.FC> = ({\r\n children,\r\n}) => {\r\n const client = useGetApolloClient();\r\n\r\n return {children};\r\n};\r\n","import { TELEMETRY_SESSION_KEY } from \"@smb/web-telemetry\";\r\n\r\nexport const getTelemetrySessionId = () => {\r\n return sessionStorage.getItem(TELEMETRY_SESSION_KEY);\r\n};\r\n","import { HttpLink } from \"@apollo/client\";\r\n\r\nimport { environment } from \"../../environments/environment\";\r\nimport { createServiceBaseUrl } from \"../../utils/createServiceBaseUrl\";\r\n\r\nexport const getHttpLink = (): HttpLink => {\r\n return new HttpLink({\r\n uri: `${createServiceBaseUrl()}${environment.basePath}`, // default value\r\n credentials: \"same-origin\",\r\n });\r\n};\r\n","export interface RegionalUrl {\r\n serviceBaseUrl: string | null;\r\n region: string | null;\r\n setRegionByBaseUrl: (region: string) => void;\r\n setServiceBaseUrl: (serviceBaseUrl: string) => void;\r\n}\r\n\r\n/**\r\n * This function gets and sets the service URL for querying\r\n * via the ApolloClient. It stores the value for the base\r\n * url in the sessionStorage property called `user.serviceBaseUrl`\r\n * for it to be retrievable on refresh.\r\n * @returns object\r\n */\r\nexport const getRegionalEndpoint = (): RegionalUrl => {\r\n const setRegionByBaseUrl = (region: string) => {\r\n if (!sessionStorage.getItem(\"user.region\")) {\r\n sessionStorage.setItem(\"user.region\", region);\r\n }\r\n }\r\n\r\n const setServiceBaseUrl = (url: string) => {\r\n if (!sessionStorage.getItem(\"user.serviceBaseUrl\")) {\r\n sessionStorage.setItem(\"user.serviceBaseUrl\", url);\r\n }\r\n };\r\n\r\n return {\r\n serviceBaseUrl: sessionStorage.getItem(\"user.serviceBaseUrl\"),\r\n region: sessionStorage.getItem(\"user.region\"),\r\n setRegionByBaseUrl,\r\n setServiceBaseUrl,\r\n };\r\n};\r\n","import { Flex, Loader } from \"@fluentui/react-northstar\";\r\n\r\nexport const AppLoader: React.FC = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import React from \"react\";\r\n\r\nimport { UserAuth } from \"./useAuth\";\r\n\r\nexport const AuthContext = React.createContext({\r\n authSession: null,\r\n isUserLoggedIn: false,\r\n setAuthSession: () => ({}),\r\n});\r\n","import React from \"react\";\r\n\r\nimport { useAuth } from \"./useAuth\";\r\nimport { AuthContext } from \"./AuthContext\";\r\n\r\nexport const AuthProvider: React.FC> = ({ children }) => {\r\n const auth = useAuth();\r\n return {children};\r\n};\r\n\r\nexport const useAuthContext = () => React.useContext(AuthContext);\r\n","import { useCallback, useState } from \"react\";\r\n\r\nexport interface User {\r\n auth: UserAuth;\r\n serviceBaseUrl: string | null;\r\n}\r\n\r\nexport interface UserAuth {\r\n authSession: string | null;\r\n isUserLoggedIn: boolean;\r\n setAuthSession: (sessionId: string) => void;\r\n}\r\n\r\n/**\r\n * This hook gets the sessionId if present from the sessionStorage.\r\n * It also exposes a callback `setAuthSessionToStorage` which can be used to\r\n * set the authSession and loggedIn states of the user. It can take a string as an argument,\r\n * which can be empty if sessionId is undefined.\r\n * @returns auth session object.\r\n */\r\nexport const useAuth: () => UserAuth = () => {\r\n // Retain the logged in sessionId for the user session on refresh.\r\n const sessionId = sessionStorage.getItem(\"user.sessionId\") ?? null;\r\n\r\n const [{ authSession, isUserLoggedIn }, setAuthSession] = useState({\r\n authSession: sessionId,\r\n isUserLoggedIn: !!sessionId,\r\n });\r\n\r\n const setAuthSessionToStorage = useCallback((userSessionId: string) => {\r\n sessionStorage.setItem(\"user.sessionId\", userSessionId);\r\n setAuthSession({\r\n authSession: userSessionId,\r\n isUserLoggedIn: !!userSessionId,\r\n });\r\n }, []);\r\n\r\n return {\r\n authSession,\r\n isUserLoggedIn,\r\n setAuthSession: setAuthSessionToStorage,\r\n };\r\n};\r\n","export const environment = {\r\n domainName: \"ehrconnectorsvc-ppe.teams.microsoft\",\r\n basePath: \"/api/cerner/graphql/v1\",\r\n cernerEnv: [\"test\", \"prod\"],\r\n appEnv: \"ppe\",\r\n appName: \"CernerEHRConnector\",\r\n};\r\n","/* eslint-disable */\r\nimport { gql } from '@apollo/client';\r\nimport * as ApolloReactCommon from '@apollo/client';\r\nimport * as ApolloReactHooks from '@apollo/client';\r\nexport type Maybe = T | null;\r\nexport type Exact = { [K in keyof T]: T[K] };\r\nexport type MakeOptional = Omit & { [SubKey in K]?: Maybe };\r\nexport type MakeMaybe = Omit & { [SubKey in K]: Maybe };\r\n/** All built-in and custom scalars, mapped to their actual values */\r\nexport type Scalars = {\r\n ID: string;\r\n String: string;\r\n Boolean: boolean;\r\n Int: number;\r\n Float: number;\r\n Date: string;\r\n DateTime: string;\r\n DateTimeOffset: string;\r\n Decimal: string;\r\n Milliseconds: string;\r\n Seconds: string;\r\n};\r\n\r\nexport type AppointmentDetailType = {\r\n readonly __typename?: 'AppointmentDetailType';\r\n readonly id: Scalars['String'];\r\n readonly startTime: Scalars['String'];\r\n};\r\n\r\nexport type AppointmentInfoType = {\r\n readonly __typename?: 'AppointmentInfoType';\r\n readonly durationInMinutes: Scalars['Int'];\r\n readonly id: Scalars['String'];\r\n readonly patientWaitTimeInSeconds: Scalars['Int'];\r\n readonly serviceType: Scalars['String'];\r\n readonly startTime: Scalars['String'];\r\n readonly status?: Maybe;\r\n};\r\n\r\nexport enum AppointmentStatus {\r\n Unknown = 'UNKNOWN',\r\n Proposed = 'PROPOSED',\r\n Pending = 'PENDING',\r\n Booked = 'BOOKED',\r\n Arrived = 'ARRIVED',\r\n Fulfilled = 'FULFILLED',\r\n Cancelled = 'CANCELLED',\r\n NoShow = 'NO_SHOW',\r\n EnteredInError = 'ENTERED_IN_ERROR',\r\n CheckedIn = 'CHECKED_IN',\r\n Waitlist = 'WAITLIST'\r\n}\r\n\r\n\r\n\r\n\r\n\r\nexport type LaunchAppContinueAadType = {\r\n readonly __typename?: 'LaunchAppContinueAadType';\r\n readonly sessionId: Scalars['String'];\r\n};\r\n\r\nexport type LaunchAppContinueLoginType = {\r\n readonly __typename?: 'LaunchAppContinueLoginType';\r\n readonly m365LoginUrl: Scalars['String'];\r\n};\r\n\r\nexport type LaunchAppContinueType = {\r\n readonly __typename?: 'LaunchAppContinueType';\r\n readonly sessionId: Scalars['String'];\r\n};\r\n\r\nexport type LaunchAppContinueTypeUnionResult = LaunchAppContinueType | LaunchAppContinueLoginType;\r\n\r\nexport type LaunchAppType = {\r\n readonly __typename?: 'LaunchAppType';\r\n readonly authorizeUrl: Scalars['String'];\r\n};\r\n\r\nexport type MeetingDirectJoinLinkType = {\r\n readonly __typename?: 'MeetingDirectJoinLinkType';\r\n readonly meetingDirectJoinLink: Scalars['String'];\r\n};\r\n\r\n\r\nexport type Mutation = {\r\n readonly __typename?: 'Mutation';\r\n readonly getMeetingDirectJoinLink?: Maybe;\r\n readonly getTeamsMeetingJoinLink?: Maybe;\r\n readonly sendSMSDirectJoinLinkToPatient?: Maybe;\r\n};\r\n\r\n\r\nexport type MutationGetMeetingDirectJoinLinkArgs = {\r\n sessionId: Scalars['String'];\r\n appointmentId: Scalars['String'];\r\n};\r\n\r\n\r\nexport type MutationGetTeamsMeetingJoinLinkArgs = {\r\n sessionId: Scalars['String'];\r\n timeZoneOffset: Scalars['String'];\r\n appointmentId: Scalars['String'];\r\n};\r\n\r\n\r\nexport type MutationSendSmsDirectJoinLinkToPatientArgs = {\r\n phoneNumber: Scalars['String'];\r\n sessionId: Scalars['String'];\r\n appointmentId: Scalars['String'];\r\n};\r\n\r\nexport enum NotificationDeliveryStatus {\r\n Unknown = 'UNKNOWN',\r\n Pending = 'PENDING',\r\n Sent = 'SENT',\r\n Failed = 'FAILED',\r\n Delivered = 'DELIVERED',\r\n UnDelivered = 'UN_DELIVERED'\r\n}\r\n\r\nexport type PatientInfoType = {\r\n readonly __typename?: 'PatientInfoType';\r\n readonly id: Scalars['String'];\r\n readonly name: Scalars['String'];\r\n readonly appointmentDetailsList: ReadonlyArray;\r\n};\r\n\r\nexport type PatientsSmsNotificationStatusLimitReachedType = {\r\n readonly __typename?: 'PatientsSMSNotificationStatusLimitReachedType';\r\n readonly id: Scalars['String'];\r\n readonly limit: Scalars['String'];\r\n};\r\n\r\nexport type PatientsSmsNotificationStatusType = {\r\n readonly __typename?: 'PatientsSMSNotificationStatusType';\r\n readonly deliveryStatus?: Maybe;\r\n readonly error?: Maybe;\r\n readonly id: Scalars['String'];\r\n readonly lastActionTime?: Maybe;\r\n readonly name: Scalars['String'];\r\n readonly phoneNumber?: Maybe;\r\n};\r\n\r\nexport type PatientsSmsNotificationStatusTypeUnionResult = PatientsSmsNotificationStatusType | PatientsSmsNotificationStatusLimitReachedType;\r\n\r\nexport type Query = {\r\n readonly __typename?: 'Query';\r\n readonly getAppointmentInfo?: Maybe;\r\n readonly getAriaIngestionKey?: Maybe;\r\n readonly getPatientInfo?: Maybe;\r\n readonly getPatientsSMSNotificationStatus?: Maybe;\r\n readonly launchApp?: Maybe;\r\n readonly launchAppContinue?: Maybe;\r\n readonly launchAppContinueAAD?: Maybe;\r\n};\r\n\r\n\r\nexport type QueryGetAppointmentInfoArgs = {\r\n sessionId: Scalars['String'];\r\n appointmentId: Scalars['String'];\r\n};\r\n\r\n\r\nexport type QueryGetPatientInfoArgs = {\r\n sessionId: Scalars['String'];\r\n};\r\n\r\n\r\nexport type QueryGetPatientsSmsNotificationStatusArgs = {\r\n sessionId: Scalars['String'];\r\n appointmentId: Scalars['String'];\r\n};\r\n\r\n\r\nexport type QueryLaunchAppArgs = {\r\n iss: Scalars['String'];\r\n launch: Scalars['String'];\r\n};\r\n\r\n\r\nexport type QueryLaunchAppContinueArgs = {\r\n code: Scalars['String'];\r\n state: Scalars['String'];\r\n};\r\n\r\n\r\nexport type QueryLaunchAppContinueAadArgs = {\r\n code: Scalars['String'];\r\n state: Scalars['String'];\r\n};\r\n\r\n\r\nexport type TeamsMeetingJoinLinkType = {\r\n readonly __typename?: 'TeamsMeetingJoinLinkType';\r\n readonly teamsMeetingJoinLink: Scalars['String'];\r\n};\r\n\r\nexport type PatientsSmsNotificationStatusFieldsFragment = (\r\n { readonly __typename?: 'PatientsSMSNotificationStatusType' }\r\n & Pick\r\n);\r\n\r\nexport type GetMeetingDirectJoinLinkMutationVariables = Exact<{\r\n sessionId: Scalars['String'];\r\n appointmentId: Scalars['String'];\r\n}>;\r\n\r\n\r\nexport type GetMeetingDirectJoinLinkMutation = (\r\n { readonly __typename?: 'Mutation' }\r\n & { readonly getMeetingDirectJoinLink?: Maybe<(\r\n { readonly __typename?: 'MeetingDirectJoinLinkType' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type GetTeamsMeetingJoinLinkMutationVariables = Exact<{\r\n sessionId: Scalars['String'];\r\n timeZoneOffset: Scalars['String'];\r\n appointmentId: Scalars['String'];\r\n}>;\r\n\r\n\r\nexport type GetTeamsMeetingJoinLinkMutation = (\r\n { readonly __typename?: 'Mutation' }\r\n & { readonly getTeamsMeetingJoinLink?: Maybe<(\r\n { readonly __typename?: 'TeamsMeetingJoinLinkType' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type SendSmsDirectJoinLinkToPatientMutationVariables = Exact<{\r\n sessionId: Scalars['String'];\r\n phoneNumber: Scalars['String'];\r\n appointmentId: Scalars['String'];\r\n}>;\r\n\r\n\r\nexport type SendSmsDirectJoinLinkToPatientMutation = (\r\n { readonly __typename?: 'Mutation' }\r\n & { readonly sendSMSDirectJoinLinkToPatient?: Maybe<(\r\n { readonly __typename: 'PatientsSMSNotificationStatusType' }\r\n & PatientsSmsNotificationStatusFieldsFragment\r\n ) | (\r\n { readonly __typename: 'PatientsSMSNotificationStatusLimitReachedType' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type GetAppointmentInfoQueryVariables = Exact<{\r\n sessionId: Scalars['String'];\r\n appointmentId: Scalars['String'];\r\n}>;\r\n\r\n\r\nexport type GetAppointmentInfoQuery = (\r\n { readonly __typename?: 'Query' }\r\n & { readonly getAppointmentInfo?: Maybe<(\r\n { readonly __typename?: 'AppointmentInfoType' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type GetAriaIngestionKeyQueryVariables = Exact<{ [key: string]: never; }>;\r\n\r\n\r\nexport type GetAriaIngestionKeyQuery = (\r\n { readonly __typename?: 'Query' }\r\n & Pick\r\n);\r\n\r\nexport type GetPatientInfoQueryVariables = Exact<{\r\n sessionId: Scalars['String'];\r\n}>;\r\n\r\n\r\nexport type GetPatientInfoQuery = (\r\n { readonly __typename?: 'Query' }\r\n & { readonly getPatientInfo?: Maybe<(\r\n { readonly __typename?: 'PatientInfoType' }\r\n & Pick\r\n & { readonly appointmentDetailsList: ReadonlyArray<(\r\n { readonly __typename?: 'AppointmentDetailType' }\r\n & Pick\r\n )> }\r\n )> }\r\n);\r\n\r\nexport type GetPatientsSmsNotificationStatusQueryVariables = Exact<{\r\n sessionId: Scalars['String'];\r\n appointmentId: Scalars['String'];\r\n}>;\r\n\r\n\r\nexport type GetPatientsSmsNotificationStatusQuery = (\r\n { readonly __typename?: 'Query' }\r\n & { readonly getPatientsSMSNotificationStatus?: Maybe<(\r\n { readonly __typename?: 'PatientsSMSNotificationStatusType' }\r\n & PatientsSmsNotificationStatusFieldsFragment\r\n )> }\r\n);\r\n\r\nexport type LaunchAppQueryVariables = Exact<{\r\n iss: Scalars['String'];\r\n launch: Scalars['String'];\r\n}>;\r\n\r\n\r\nexport type LaunchAppQuery = (\r\n { readonly __typename?: 'Query' }\r\n & { readonly launchApp?: Maybe<(\r\n { readonly __typename?: 'LaunchAppType' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type LaunchAppContinueQueryVariables = Exact<{\r\n code: Scalars['String'];\r\n state: Scalars['String'];\r\n}>;\r\n\r\n\r\nexport type LaunchAppContinueQuery = (\r\n { readonly __typename?: 'Query' }\r\n & { readonly launchAppContinue?: Maybe<(\r\n { readonly __typename?: 'LaunchAppContinueType' }\r\n & Pick\r\n ) | (\r\n { readonly __typename?: 'LaunchAppContinueLoginType' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport type LaunchAppContinueAadQueryVariables = Exact<{\r\n state: Scalars['String'];\r\n code: Scalars['String'];\r\n}>;\r\n\r\n\r\nexport type LaunchAppContinueAadQuery = (\r\n { readonly __typename?: 'Query' }\r\n & { readonly launchAppContinueAAD?: Maybe<(\r\n { readonly __typename?: 'LaunchAppContinueAadType' }\r\n & Pick\r\n )> }\r\n);\r\n\r\nexport const PatientsSmsNotificationStatusFieldsFragmentDoc = gql`\r\n fragment PatientsSMSNotificationStatusFields on PatientsSMSNotificationStatusType {\r\n id\r\n name\r\n phoneNumber\r\n deliveryStatus\r\n lastActionTime\r\n error\r\n}\r\n `;\r\nexport const GetMeetingDirectJoinLinkDocument = gql`\r\n mutation GetMeetingDirectJoinLink($sessionId: String!, $appointmentId: String!) {\r\n getMeetingDirectJoinLink(sessionId: $sessionId, appointmentId: $appointmentId) {\r\n meetingDirectJoinLink\r\n }\r\n}\r\n `;\r\nexport type GetMeetingDirectJoinLinkMutationFn = ApolloReactCommon.MutationFunction;\r\n\r\n/**\r\n * __useGetMeetingDirectJoinLinkMutation__\r\n *\r\n * To run a mutation, you first call `useGetMeetingDirectJoinLinkMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useGetMeetingDirectJoinLinkMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [getMeetingDirectJoinLinkMutation, { data, loading, error }] = useGetMeetingDirectJoinLinkMutation({\r\n * variables: {\r\n * sessionId: // value for 'sessionId'\r\n * appointmentId: // value for 'appointmentId'\r\n * },\r\n * });\r\n */\r\nexport function useGetMeetingDirectJoinLinkMutation(baseOptions?: ApolloReactHooks.MutationHookOptions) {\r\n return ApolloReactHooks.useMutation(GetMeetingDirectJoinLinkDocument, baseOptions);\r\n }\r\nexport type GetMeetingDirectJoinLinkMutationHookResult = ReturnType;\r\nexport type GetMeetingDirectJoinLinkMutationResult = ApolloReactCommon.MutationResult;\r\nexport type GetMeetingDirectJoinLinkMutationOptions = ApolloReactCommon.BaseMutationOptions;\r\nexport const GetTeamsMeetingJoinLinkDocument = gql`\r\n mutation GetTeamsMeetingJoinLink($sessionId: String!, $timeZoneOffset: String!, $appointmentId: String!) {\r\n getTeamsMeetingJoinLink(\r\n sessionId: $sessionId\r\n timeZoneOffset: $timeZoneOffset\r\n appointmentId: $appointmentId\r\n ) {\r\n teamsMeetingJoinLink\r\n }\r\n}\r\n `;\r\nexport type GetTeamsMeetingJoinLinkMutationFn = ApolloReactCommon.MutationFunction;\r\n\r\n/**\r\n * __useGetTeamsMeetingJoinLinkMutation__\r\n *\r\n * To run a mutation, you first call `useGetTeamsMeetingJoinLinkMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useGetTeamsMeetingJoinLinkMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [getTeamsMeetingJoinLinkMutation, { data, loading, error }] = useGetTeamsMeetingJoinLinkMutation({\r\n * variables: {\r\n * sessionId: // value for 'sessionId'\r\n * timeZoneOffset: // value for 'timeZoneOffset'\r\n * appointmentId: // value for 'appointmentId'\r\n * },\r\n * });\r\n */\r\nexport function useGetTeamsMeetingJoinLinkMutation(baseOptions?: ApolloReactHooks.MutationHookOptions) {\r\n return ApolloReactHooks.useMutation(GetTeamsMeetingJoinLinkDocument, baseOptions);\r\n }\r\nexport type GetTeamsMeetingJoinLinkMutationHookResult = ReturnType;\r\nexport type GetTeamsMeetingJoinLinkMutationResult = ApolloReactCommon.MutationResult;\r\nexport type GetTeamsMeetingJoinLinkMutationOptions = ApolloReactCommon.BaseMutationOptions;\r\nexport const SendSmsDirectJoinLinkToPatientDocument = gql`\r\n mutation SendSMSDirectJoinLinkToPatient($sessionId: String!, $phoneNumber: String!, $appointmentId: String!) {\r\n sendSMSDirectJoinLinkToPatient(\r\n sessionId: $sessionId\r\n phoneNumber: $phoneNumber\r\n appointmentId: $appointmentId\r\n ) {\r\n __typename\r\n ... on PatientsSMSNotificationStatusType {\r\n ...PatientsSMSNotificationStatusFields\r\n }\r\n ... on PatientsSMSNotificationStatusLimitReachedType {\r\n id\r\n limit\r\n }\r\n }\r\n}\r\n ${PatientsSmsNotificationStatusFieldsFragmentDoc}`;\r\nexport type SendSmsDirectJoinLinkToPatientMutationFn = ApolloReactCommon.MutationFunction;\r\n\r\n/**\r\n * __useSendSmsDirectJoinLinkToPatientMutation__\r\n *\r\n * To run a mutation, you first call `useSendSmsDirectJoinLinkToPatientMutation` within a React component and pass it any options that fit your needs.\r\n * When your component renders, `useSendSmsDirectJoinLinkToPatientMutation` returns a tuple that includes:\r\n * - A mutate function that you can call at any time to execute the mutation\r\n * - An object with fields that represent the current status of the mutation's execution\r\n *\r\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\r\n *\r\n * @example\r\n * const [sendSmsDirectJoinLinkToPatientMutation, { data, loading, error }] = useSendSmsDirectJoinLinkToPatientMutation({\r\n * variables: {\r\n * sessionId: // value for 'sessionId'\r\n * phoneNumber: // value for 'phoneNumber'\r\n * appointmentId: // value for 'appointmentId'\r\n * },\r\n * });\r\n */\r\nexport function useSendSmsDirectJoinLinkToPatientMutation(baseOptions?: ApolloReactHooks.MutationHookOptions) {\r\n return ApolloReactHooks.useMutation(SendSmsDirectJoinLinkToPatientDocument, baseOptions);\r\n }\r\nexport type SendSmsDirectJoinLinkToPatientMutationHookResult = ReturnType;\r\nexport type SendSmsDirectJoinLinkToPatientMutationResult = ApolloReactCommon.MutationResult;\r\nexport type SendSmsDirectJoinLinkToPatientMutationOptions = ApolloReactCommon.BaseMutationOptions;\r\nexport const GetAppointmentInfoDocument = gql`\r\n query GetAppointmentInfo($sessionId: String!, $appointmentId: String!) {\r\n getAppointmentInfo(sessionId: $sessionId, appointmentId: $appointmentId) {\r\n serviceType\r\n status\r\n startTime\r\n durationInMinutes\r\n patientWaitTimeInSeconds\r\n }\r\n}\r\n `;\r\n\r\n/**\r\n * __useGetAppointmentInfoQuery__\r\n *\r\n * To run a query within a React component, call `useGetAppointmentInfoQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetAppointmentInfoQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetAppointmentInfoQuery({\r\n * variables: {\r\n * sessionId: // value for 'sessionId'\r\n * appointmentId: // value for 'appointmentId'\r\n * },\r\n * });\r\n */\r\nexport function useGetAppointmentInfoQuery(baseOptions: ApolloReactHooks.QueryHookOptions) {\r\n return ApolloReactHooks.useQuery(GetAppointmentInfoDocument, baseOptions);\r\n }\r\nexport function useGetAppointmentInfoLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions) {\r\n return ApolloReactHooks.useLazyQuery(GetAppointmentInfoDocument, baseOptions);\r\n }\r\nexport type GetAppointmentInfoQueryHookResult = ReturnType;\r\nexport type GetAppointmentInfoLazyQueryHookResult = ReturnType;\r\nexport type GetAppointmentInfoQueryResult = ApolloReactCommon.QueryResult;\r\nexport const GetAriaIngestionKeyDocument = gql`\r\n query GetAriaIngestionKey {\r\n getAriaIngestionKey\r\n}\r\n `;\r\n\r\n/**\r\n * __useGetAriaIngestionKeyQuery__\r\n *\r\n * To run a query within a React component, call `useGetAriaIngestionKeyQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetAriaIngestionKeyQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetAriaIngestionKeyQuery({\r\n * variables: {\r\n * },\r\n * });\r\n */\r\nexport function useGetAriaIngestionKeyQuery(baseOptions?: ApolloReactHooks.QueryHookOptions) {\r\n return ApolloReactHooks.useQuery(GetAriaIngestionKeyDocument, baseOptions);\r\n }\r\nexport function useGetAriaIngestionKeyLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions) {\r\n return ApolloReactHooks.useLazyQuery(GetAriaIngestionKeyDocument, baseOptions);\r\n }\r\nexport type GetAriaIngestionKeyQueryHookResult = ReturnType;\r\nexport type GetAriaIngestionKeyLazyQueryHookResult = ReturnType;\r\nexport type GetAriaIngestionKeyQueryResult = ApolloReactCommon.QueryResult;\r\nexport const GetPatientInfoDocument = gql`\r\n query GetPatientInfo($sessionId: String!) {\r\n getPatientInfo(sessionId: $sessionId) {\r\n name\r\n appointmentDetailsList {\r\n id\r\n startTime\r\n }\r\n }\r\n}\r\n `;\r\n\r\n/**\r\n * __useGetPatientInfoQuery__\r\n *\r\n * To run a query within a React component, call `useGetPatientInfoQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetPatientInfoQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetPatientInfoQuery({\r\n * variables: {\r\n * sessionId: // value for 'sessionId'\r\n * },\r\n * });\r\n */\r\nexport function useGetPatientInfoQuery(baseOptions: ApolloReactHooks.QueryHookOptions) {\r\n return ApolloReactHooks.useQuery(GetPatientInfoDocument, baseOptions);\r\n }\r\nexport function useGetPatientInfoLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions) {\r\n return ApolloReactHooks.useLazyQuery(GetPatientInfoDocument, baseOptions);\r\n }\r\nexport type GetPatientInfoQueryHookResult = ReturnType;\r\nexport type GetPatientInfoLazyQueryHookResult = ReturnType;\r\nexport type GetPatientInfoQueryResult = ApolloReactCommon.QueryResult;\r\nexport const GetPatientsSmsNotificationStatusDocument = gql`\r\n query GetPatientsSMSNotificationStatus($sessionId: String!, $appointmentId: String!) {\r\n getPatientsSMSNotificationStatus(\r\n sessionId: $sessionId\r\n appointmentId: $appointmentId\r\n ) {\r\n ...PatientsSMSNotificationStatusFields\r\n }\r\n}\r\n ${PatientsSmsNotificationStatusFieldsFragmentDoc}`;\r\n\r\n/**\r\n * __useGetPatientsSmsNotificationStatusQuery__\r\n *\r\n * To run a query within a React component, call `useGetPatientsSmsNotificationStatusQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useGetPatientsSmsNotificationStatusQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useGetPatientsSmsNotificationStatusQuery({\r\n * variables: {\r\n * sessionId: // value for 'sessionId'\r\n * appointmentId: // value for 'appointmentId'\r\n * },\r\n * });\r\n */\r\nexport function useGetPatientsSmsNotificationStatusQuery(baseOptions: ApolloReactHooks.QueryHookOptions) {\r\n return ApolloReactHooks.useQuery(GetPatientsSmsNotificationStatusDocument, baseOptions);\r\n }\r\nexport function useGetPatientsSmsNotificationStatusLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions) {\r\n return ApolloReactHooks.useLazyQuery(GetPatientsSmsNotificationStatusDocument, baseOptions);\r\n }\r\nexport type GetPatientsSmsNotificationStatusQueryHookResult = ReturnType;\r\nexport type GetPatientsSmsNotificationStatusLazyQueryHookResult = ReturnType;\r\nexport type GetPatientsSmsNotificationStatusQueryResult = ApolloReactCommon.QueryResult;\r\nexport const LaunchAppDocument = gql`\r\n query LaunchApp($iss: String!, $launch: String!) {\r\n launchApp(iss: $iss, launch: $launch) {\r\n authorizeUrl\r\n }\r\n}\r\n `;\r\n\r\n/**\r\n * __useLaunchAppQuery__\r\n *\r\n * To run a query within a React component, call `useLaunchAppQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useLaunchAppQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useLaunchAppQuery({\r\n * variables: {\r\n * iss: // value for 'iss'\r\n * launch: // value for 'launch'\r\n * },\r\n * });\r\n */\r\nexport function useLaunchAppQuery(baseOptions: ApolloReactHooks.QueryHookOptions) {\r\n return ApolloReactHooks.useQuery(LaunchAppDocument, baseOptions);\r\n }\r\nexport function useLaunchAppLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions) {\r\n return ApolloReactHooks.useLazyQuery(LaunchAppDocument, baseOptions);\r\n }\r\nexport type LaunchAppQueryHookResult = ReturnType;\r\nexport type LaunchAppLazyQueryHookResult = ReturnType;\r\nexport type LaunchAppQueryResult = ApolloReactCommon.QueryResult;\r\nexport const LaunchAppContinueDocument = gql`\r\n query LaunchAppContinue($code: String!, $state: String!) {\r\n launchAppContinue(code: $code, state: $state) {\r\n ... on LaunchAppContinueType {\r\n sessionId\r\n }\r\n ... on LaunchAppContinueLoginType {\r\n m365LoginUrl\r\n }\r\n }\r\n}\r\n `;\r\n\r\n/**\r\n * __useLaunchAppContinueQuery__\r\n *\r\n * To run a query within a React component, call `useLaunchAppContinueQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useLaunchAppContinueQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useLaunchAppContinueQuery({\r\n * variables: {\r\n * code: // value for 'code'\r\n * state: // value for 'state'\r\n * },\r\n * });\r\n */\r\nexport function useLaunchAppContinueQuery(baseOptions: ApolloReactHooks.QueryHookOptions) {\r\n return ApolloReactHooks.useQuery(LaunchAppContinueDocument, baseOptions);\r\n }\r\nexport function useLaunchAppContinueLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions) {\r\n return ApolloReactHooks.useLazyQuery(LaunchAppContinueDocument, baseOptions);\r\n }\r\nexport type LaunchAppContinueQueryHookResult = ReturnType;\r\nexport type LaunchAppContinueLazyQueryHookResult = ReturnType;\r\nexport type LaunchAppContinueQueryResult = ApolloReactCommon.QueryResult;\r\nexport const LaunchAppContinueAadDocument = gql`\r\n query LaunchAppContinueAAD($state: String!, $code: String!) {\r\n launchAppContinueAAD(state: $state, code: $code) {\r\n sessionId\r\n }\r\n}\r\n `;\r\n\r\n/**\r\n * __useLaunchAppContinueAadQuery__\r\n *\r\n * To run a query within a React component, call `useLaunchAppContinueAadQuery` and pass it any options that fit your needs.\r\n * When your component renders, `useLaunchAppContinueAadQuery` returns an object from Apollo Client that contains loading, error, and data properties\r\n * you can use to render your UI.\r\n *\r\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\r\n *\r\n * @example\r\n * const { data, loading, error } = useLaunchAppContinueAadQuery({\r\n * variables: {\r\n * state: // value for 'state'\r\n * code: // value for 'code'\r\n * },\r\n * });\r\n */\r\nexport function useLaunchAppContinueAadQuery(baseOptions: ApolloReactHooks.QueryHookOptions) {\r\n return ApolloReactHooks.useQuery(LaunchAppContinueAadDocument, baseOptions);\r\n }\r\nexport function useLaunchAppContinueAadLazyQuery(baseOptions?: ApolloReactHooks.LazyQueryHookOptions) {\r\n return ApolloReactHooks.useLazyQuery(LaunchAppContinueAadDocument, baseOptions);\r\n }\r\nexport type LaunchAppContinueAadQueryHookResult = ReturnType;\r\nexport type LaunchAppContinueAadLazyQueryHookResult = ReturnType;\r\nexport type LaunchAppContinueAadQueryResult = ApolloReactCommon.QueryResult;","import { logger, SeverityLevel } from \"@mwt/web-js-telemetry\";\r\n\r\nexport const trackComponentErrorTrace = (\r\n { message, stack }: ErrorTraceType,\r\n info: React.ErrorInfo\r\n): void => {\r\n // Log error trace\r\n logger.error(message, SeverityLevel.Error, {\r\n componentStack: info.componentStack,\r\n stack: stack ?? \"\",\r\n });\r\n};\r\n","import React from \"react\";\r\n\r\nexport interface FallbackProps {\r\n error: Error;\r\n resetError?: (...args: Array) => void;\r\n}\r\n\r\ninterface ErrorBoundaryProps {\r\n FallBackComponent: React.ComponentType;\r\n onError?: (error: Error, info: React.ErrorInfo) => void;\r\n onReset?: (...args: Array) => void;\r\n}\r\n\r\ninterface ErrorBoundaryState {\r\n error: Error | null;\r\n}\r\n\r\nconst initialState: ErrorBoundaryState = { error: null };\r\n\r\nexport class ErrorBoundary extends React.Component<\r\n React.PropsWithChildren,\r\n ErrorBoundaryState\r\n> {\r\n constructor(props: ErrorBoundaryProps) {\r\n super(props);\r\n\r\n this.state = initialState;\r\n }\r\n\r\n static getDerivedStateFromError(error: T) {\r\n // returns object that's passed to the updated state.\r\n return { error };\r\n }\r\n\r\n resetError(...args: Array) {\r\n this.props.onReset?.(...args);\r\n this.reset();\r\n }\r\n\r\n reset() {\r\n this.setState(initialState);\r\n }\r\n\r\n componentDidCatch(error: Error, info: React.ErrorInfo) {\r\n this.props.onError?.(error, info);\r\n }\r\n\r\n render() {\r\n const { error } = this.state;\r\n const { FallBackComponent } = this.props;\r\n\r\n if (error !== null) {\r\n const props = {\r\n error,\r\n resetError: () => this.resetError(),\r\n };\r\n\r\n return ;\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { ErrorPanel } from \"@smb/ui-error-panel\";\r\n\r\nimport { trackComponentErrorTrace } from \"../../../utils/telemetry/trackComponentErrorTrace\";\r\nimport { ErrorBoundary, FallbackProps } from \"../error-boundary\";\r\n\r\nimport { getLaunchErrorMessage } from \"./utils/getLaunchErrorMessage\";\r\n\r\nexport const AppLaunchErrorBoundary: React.FC> = ({\r\n children,\r\n}) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nconst AppLaunchNotFound: React.FC = ({ error }) => {\r\n const { description, title, altMessage } = getLaunchErrorMessage(error);\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import { AppLaunchError } from \"../../../../utils/constants/appLaunchError\";\r\n\r\nexport const getLaunchErrorMessage = (\r\n error: Error\r\n): { description?: string; title?: string; altMessage?: string } => {\r\n let description;\r\n let title;\r\n const altMessage = \"Exclamation bubble with gear icons\";\r\n\r\n switch (error.message) {\r\n case AppLaunchError.PageNotFound:\r\n title = \"Page not found\";\r\n description = \"404\";\r\n break;\r\n case AppLaunchError.EncounterHasNoAppointmentReference:\r\n title = \"There are no scheduled appointments.\";\r\n break;\r\n case AppLaunchError.InvalidUrlParams:\r\n case AppLaunchError.TenantConfigNotFound:\r\n title = \"The tenant setup isn't done quite yet\";\r\n description = \"If you need more info, contact your organization's admin.\";\r\n break;\r\n case AppLaunchError.NoTenantConfigsConfigured:\r\n title = \"The tenant setup isn't done quite yet\";\r\n description = \"If you need more info, contact your organization's admin.\";\r\n break;\r\n case AppLaunchError.UnAuthenticated:\r\n case AppLaunchError.UnAuthorized:\r\n title = \"Something went wrong\";\r\n description = \"Wait a bit, then try to start the app again.\";\r\n break;\r\n default:\r\n title = \"Please try again.\";\r\n description = \"If the error persists, please contact your local IT administrator.\";\r\n }\r\n\r\n return { description, title, altMessage };\r\n};\r\n","import { useTelemetryContext } from \"@smb/web-telemetry\";\r\nimport React, { useEffect, useMemo } from \"react\";\r\n\r\nimport { useGetAriaIngestionKeyQuery } from \"../../graphql/graphql\";\r\n\r\nexport const InstrumentationKeyProvider: React.FC> = ({\r\n children,\r\n}) => {\r\n const { data } = useGetAriaIngestionKeyQuery();\r\n const { setTelementryIngestionKey } = useTelemetryContext();\r\n\r\n const instrumentationKey = useMemo(\r\n () => data?.getAriaIngestionKey ?? undefined,\r\n [data]\r\n );\r\n useEffect(() => {\r\n setTelementryIngestionKey(instrumentationKey);\r\n }, [instrumentationKey, setTelementryIngestionKey]);\r\n\r\n // eslint-disable-next-line react/jsx-no-useless-fragment\r\n return <>{children};\r\n};\r\n","export const appStyles = {\r\n width: \"100%\",\r\n};\r\n","import { lazy } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Route, Routes } from \"react-router-dom\";\r\n\r\nimport { paths } from \"../utils/routes/paths\";\r\n\r\nexport const AppLaunch = lazy(\r\n () => import(\"../components/launch/app-launch/AppLaunch\")\r\n);\r\n\r\nexport const AppLaunchContinue = lazy(\r\n () => import(\"../components/launch/app-launch-continue/AppLaunchContinue\")\r\n);\r\n\r\nexport const AppLaunchAadContinue = lazy(\r\n () =>\r\n import(\"../components/launch/app-launch-aad-continue/AppLaunchAadContinue\")\r\n);\r\n\r\nexport const ConnectedAppointmentView = lazy(\r\n () =>\r\n import(\r\n \"../components/appointment/appointment-view/ConnectedAppointmentView\"\r\n )\r\n);\r\n\r\nexport const GlobalError = lazy(\r\n () => import(\"../components/errors/global-error/GlobalError\")\r\n);\r\n\r\nexport const RouteSwitcher = (): JSX.Element => {\r\n const { t } = useTranslation();\r\n const Launch = () => {\r\n document.title = t(\"Connect to Microsoft Teams\");\r\n return ;\r\n };\r\n const LaunchAppContinue = () => {\r\n document.title = t(\"Connect to Microsoft Teams\");\r\n return ;\r\n };\r\n const LaunchAppContinueAAD = () => {\r\n document.title = t(\"Connect to Microsoft Teams\");\r\n return ;\r\n };\r\n const Error = () => {\r\n document.title = t(\"Connect to Microsoft Teams\");\r\n return ;\r\n };\r\n const Root = () => {\r\n document.title = t(\"Connect to Microsoft Teams\");\r\n return ;\r\n };\r\n return (\r\n \r\n } />\r\n } />\r\n }\r\n />\r\n } />\r\n } />\r\n \r\n );\r\n};\r\n","import {\r\n Provider as ThemeProvider,\r\n teamsV2Theme,\r\n} from \"@fluentui/react-northstar\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport { Suspense, useEffect } from \"react\";\r\nimport {\r\n SessionContextProvider,\r\n TelemetryContextProvider,\r\n} from \"@smb/web-telemetry\";\r\n\r\nimport { AppLaunchErrorBoundary } from \"../components/errors/app-launch-error-boundary\";\r\nimport { AuthProvider } from \"../components/auth\";\r\nimport { RegionalApolloProvider } from \"../apollo/regional-apollo-provider\";\r\nimport { AppLoader } from \"../components/app-loader\";\r\nimport { isInIframe } from \"../utils/validators/isInIframe\";\r\nimport { isInPowerChart } from \"../utils/validators/isInPoweChart\";\r\nimport { InstrumentationKeyProvider } from \"../components/telemetry/InstrumentationKeyProvider\";\r\nimport { updateLoggerContext } from \"../utils/telemetry/updateLoggerContext\";\r\nimport { isProdEnv } from \"../utils/getEnvironment\";\r\n\r\nimport { appStyles } from \"./App.styles\";\r\nimport { RouteSwitcher } from \"./RouteSwitcher\";\r\n\r\nexport function App() {\r\n useEffect(() => {\r\n updateLoggerContext();\r\n }, []);\r\n\r\n // Render the app only when it's loaded in the Iframe and inside PowerChart context.\r\n if (isProdEnv() && !isInIframe() && !isInPowerChart()) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import { ContextColumnsBase } from \"@mwt/web-js-telemetry\";\r\nimport {\r\n updateLoggingContext,\r\n getBrowserLocale,\r\n CustomContextColumns,\r\n} from \"@smb/web-telemetry\";\r\n\r\nimport { environment } from \"../../environments/environment\";\r\n\r\nexport const updateLoggerContext = () => {\r\n updateLoggingContext(\r\n { [ContextColumnsBase.UserInfoLanguage]: getBrowserLocale() },\r\n {\r\n [CustomContextColumns.AppName]: environment.appName,\r\n [ContextColumnsBase.AppInfoEnvironment]: environment.appEnv,\r\n }\r\n );\r\n};\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\n\r\nimport { App } from \"./app/App\";\r\nimport \"./styles.css\";\r\n\r\nReactDOM.render(, document.getElementById(\"root\"));\r\n","export enum AppLaunchError {\r\n AadStateInvalid = \"aadstateinvalid\",\r\n AccessTokenInvalid = \"accesstokeninvalid\",\r\n AppointmentNotFound = \"appointmentnotfound\",\r\n AuthStateInvalid = \"authstateinvalid\",\r\n CannotAcquireAccessToken = \"cannotacquireaccesstoken\",\r\n CannotCreateMeeting = \"cannotcreatemeeting\",\r\n CannotStampEhrExtension = \"aannotstampehrextension\",\r\n EncounterHasMultipleAppointmentReferences = \"encounterhasmultipleappointmentreferences\",\r\n EncounterHasNoAppointmentReference = \"encounterhasnoappointmentreference\",\r\n InvalidUrlParams = \"invalidurlparams\",\r\n IssuerUrlInvalid = \"issuerurlinvalid\",\r\n Licensenotfound = \"licensenotfound\",\r\n NoTenantConfigsConfigured = \"notenantconfigsconfigured\",\r\n NotVirtualVisit = \"notvirtualvisit\",\r\n PageNotFound = \"pagenotfound\",\r\n PatientInactive = \"patientinactive\",\r\n SessionExpired = \"sessionexpired\",\r\n SubjectNotPatient = \"subjectnotpatient\",\r\n TenantConfigNotFound = \"tenantconfignotfound\",\r\n TenantSuspended = \"tenantsuspended\",\r\n UnAuthenticated = \"unauthenticated\",\r\n UnAuthorized = \"unauthorized\",\r\n UserConfigNotFound = \"userconfignotfound\",\r\n}\r\n","import { environment } from \"../environments/environment\";\r\n\r\nimport { isDevEnv, isCanaryTestEnv } from \"./getEnvironment\";\r\n\r\nexport const createServiceBaseUrl = (region?: string | null) => {\r\n if (!region && (isDevEnv() || isCanaryTestEnv())) {\r\n return `https://${environment.domainName}`;\r\n } else if (!region) {\r\n return `https://${environment.domainName}.com`;\r\n } else {\r\n return `https://${region.trim()}-${environment.domainName}.com`;\r\n }\r\n};\r\n","import { environment } from \"../environments/environment\";\r\n\r\nexport const isDevEnv = () => {\r\n return environment.appEnv === \"development\";\r\n};\r\n\r\nexport const isCanaryTestEnv = () => {\r\n return environment.appEnv === \"canaryTest\";\r\n};\r\n\r\nexport const isProdEnv = () => {\r\n return environment.appEnv === \"production\";\r\n};\r\n","export const paths = {\r\n root: \"/\",\r\n launch: \"/launchApp\",\r\n launchAppContinue: \"/launchAppContinue\",\r\n launchAppContinueAAD: \"/launchAppContinueAAD\",\r\n error: \"/error\",\r\n};\r\n","export enum ScenarioName {\r\n AppLaunch = \"applaunch\",\r\n StartVirtualVisit = \"startvirtualvisit\",\r\n SendVisitLink = \"sendvisitlink\",\r\n CopyVisitLink = \"cpoyvisitlink\",\r\n}\r\n\r\nexport enum ScenarioType {\r\n VirtualVisitAppointment = \"virtualvisitappointment\",\r\n}\r\n\r\nexport enum PanelType {\r\n ConnectedAppointmentView = \"connectedappointmentview\",\r\n GlobalError = \"globalerror\",\r\n AppLaunch = \"applaunch\",\r\n AppLaunchContinue = \"applaunchcontinue\",\r\n AppLaunchAadContinue = \"applaunchaadcontinue\",\r\n}\r\n\r\nexport enum ModuleName {\r\n StartVirtualVisitButton = \"Start Virtual Visit button\",\r\n SendVisitLink = \"Send Visit Link\",\r\n CopyVisitLink = \"Copy Visit Link\",\r\n}\r\n\r\nexport enum ModuleSummary {\r\n StartVirtualVisitButton = \"Start Virtual Visit button click event.\",\r\n SendVisitLink = \"Send Visit Link click event.\",\r\n CopyVisitLink = \"Copy Visit Link click event\",\r\n}\r\n\r\nexport enum RequestResult {\r\n Error = \"error\",\r\n NetworkError = \"networkError\",\r\n}\r\n\r\nexport enum DataBagHttpColumns {\r\n // PascalCase to match Virtual Visits column name.\r\n DataBagCorrelationId = \"DataBag.CorrelationId\",\r\n DataBagErrorType = \"DataBag.errorType\",\r\n DataBagIsRetry = \"DataBag.isRetry\",\r\n DataBagIsSuccessful = \"DataBag.isSuccessful\",\r\n DataBagReason = \"DataBag.reason\",\r\n DataBagServiceUrl = \"DataBag.serviceUrl\",\r\n DataBagUrl = \"DataBag.url\",\r\n DatabBagErrorSubType = \"DataBag.errorSubType\",\r\n}\r\n\r\nexport enum EventType {\r\n NonUiEvent = \"nonuievent\",\r\n}\r\n","export const isInIframe = () => {\r\n try {\r\n return window.self !== window.top;\r\n } catch (e) {\r\n console.error(\"[isInIframe]: \", e);\r\n return true;\r\n }\r\n};\r\n","export interface CernerExternal extends External {\r\n DiscernObjectFactory?: unknown;\r\n}\r\n\r\n/**\r\n * Determine if application is rendered in PowerChart.\r\n * `DiscernObjectFactory` propery is provided by the\r\n * external environment and not controlled by us.\r\n * Reference: https://fhir.cerner.com/smart/#embedded-in-powerchart\r\n * @return null or true/false\r\n */\r\nexport const isInPowerChart = () => {\r\n const windowExternal = window && window.external;\r\n const cernerExternal = (windowExternal as CernerExternal)\r\n ?.DiscernObjectFactory;\r\n return windowExternal && typeof cernerExternal !== \"undefined\";\r\n};\r\n","import { ImageProps } from \"@fluentui/react-northstar\";\r\n\r\nexport interface ErrorPanelProps {\r\n description?: string;\r\n title?: string;\r\n type?: ErrorPanelType;\r\n truncateDescription?: boolean;\r\n imgColorScheme?: ErrorImgColorScheme;\r\n imgProps?: Omit;\r\n}\r\n\r\nexport enum ErrorPanelType {\r\n // Any user or tenant has access related errors.\r\n AccessError = \"accessError\",\r\n // Any user or tenant is blocked from viewing a screen.\r\n BlockedError = \"blockedError\",\r\n // Any external system or service error.\r\n ExternalError = \"externalError\",\r\n // Any other errors or internal service errors.\r\n GenericError = \"genericError\",\r\n}\r\n\r\nexport type ErrorImgColorScheme = \"dark\" | \"light\";\r\n","import { useFluentContext } from \"@fluentui/react-northstar\";\r\nimport { ICSSInJSStyle } from \"@fluentui/react-northstar\";\r\n\r\ninterface ErrorPanelStyles {\r\n imgStyles: ICSSInJSStyle;\r\n container: ICSSInJSStyle;\r\n descriptionStyles: ICSSInJSStyle;\r\n titleStyles: ICSSInJSStyle;\r\n}\r\n\r\nexport const useErrorPanelStyles = (): ErrorPanelStyles => {\r\n const { theme } = useFluentContext();\r\n return {\r\n imgStyles: {\r\n width: \"120px\",\r\n },\r\n container: {\r\n width: \"100vw\",\r\n height: \"100vh\",\r\n backgroundColor: theme.siteVariables.colorScheme.default.background4,\r\n },\r\n descriptionStyles: {\r\n maxWidth: \"462px\",\r\n textAlign: \"center\",\r\n },\r\n titleStyles: {\r\n textAlign: \"center\",\r\n },\r\n };\r\n};\r\n","import { Flex, Image, Text } from \"@fluentui/react-northstar\";\r\n\r\nimport { getColorSchemeImg } from \"../utils/getColorSchemeImg\";\r\nimport { useErrorPanelStyles } from \"./useErrorPanelStyles\";\r\nimport { ErrorPanelProps, ErrorPanelType } from \"./ErrorPanel.types\";\r\n\r\nexport function ErrorPanel({\r\n title,\r\n imgProps,\r\n description,\r\n truncateDescription,\r\n imgColorScheme = \"light\",\r\n type = ErrorPanelType.GenericError,\r\n}: ErrorPanelProps) {\r\n const { container, imgStyles, descriptionStyles, titleStyles } =\r\n useErrorPanelStyles();\r\n\r\n const image = getColorSchemeImg(type, imgColorScheme);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {title && (\r\n {title}}\r\n styles={titleStyles}\r\n weight=\"bold\"\r\n size=\"large\"\r\n data-testid=\"errorPanelTitle\"\r\n />\r\n )}\r\n {description && (\r\n {description}}\r\n data-testid=\"errorPanelDescription\"\r\n />\r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default ErrorPanel;\r\n","import { ErrorPanelType } from \"../lib/ErrorPanel.types\";\r\nimport { titleCaseWord } from \"./titleCaseWord\";\r\n\r\nexport function getColorSchemeImg(\r\n errorType: ErrorPanelType,\r\n imgColorScheme: string\r\n): string {\r\n switch (errorType) {\r\n case ErrorPanelType.GenericError:\r\n return `${errorType}${titleCaseWord(imgColorScheme)}`;\r\n default:\r\n return errorType;\r\n }\r\n}\r\n","export function titleCaseWord(word: string): string {\r\n if (!word) return word;\r\n return word[0].toUpperCase() + word.substr(1).toLowerCase();\r\n}\r\n","import { Configuration } from \"@mwt/web-js-telemetry\";\r\n\r\nexport const telemetryClientConfig: Configuration = {\r\n instrumentationKey: undefined,\r\n channelConfiguration: {\r\n // Post channel configuration\r\n eventsLimitInMem: 50,\r\n enableCompoundKey: true,\r\n },\r\n webAnalyticsConfiguration: {\r\n // Web Analytics Plugin configuration\r\n autoCapture: {\r\n scroll: false,\r\n pageView: false,\r\n onLoad: false,\r\n onUnload: false,\r\n click: false,\r\n resize: false,\r\n jsError: false,\r\n },\r\n },\r\n};\r\n\r\n// Its recommended to use a new object when doing a update\r\nexport const telemetryClientForReConfig: Configuration = {\r\n instrumentationKey: undefined,\r\n channelConfiguration: {\r\n // Post channel configuration\r\n eventsLimitInMem: 50,\r\n enableCompoundKey: true,\r\n },\r\n webAnalyticsConfiguration: {\r\n // Web Analytics Plugin configuration\r\n autoCapture: {\r\n scroll: false,\r\n pageView: false,\r\n onLoad: false,\r\n onUnload: false,\r\n click: false,\r\n resize: false,\r\n jsError: false,\r\n },\r\n },\r\n};\r\n","import {\r\n AriaTelemetryClient,\r\n AriaTo1DSContextUsed,\r\n CustomContext,\r\n initializeTelemetryClient,\r\n logger,\r\n LoggingContext,\r\n updateToCompliantAriaClient,\r\n} from \"@mwt/web-js-telemetry\";\r\nimport { useEffect, useState } from \"react\";\r\nimport { createContainer, useContainer } from \"unstated-next\";\r\nimport {\r\n ApplicationInsights,\r\n IExtendedConfiguration,\r\n} from \"@microsoft/1ds-analytics-web-js\";\r\nimport { DataContexts } from \"@microsoft/1ds-privacy-guard-js\";\r\n\r\nimport { CustomContextProperties } from \"../types\";\r\nimport {\r\n telemetryClientConfig,\r\n telemetryClientForReConfig,\r\n} from \"../telemetry-context/TelemetryProvider\";\r\n\r\nexport const loggingContext: LoggingContext = {};\r\nlogger.initialize(loggingContext);\r\n\r\nexport const updateLoggingContext = (\r\n commonProperties?: Partial,\r\n customProperties?: Partial\r\n) => {\r\n // Nothing else to do when this param not provided\r\n /* istanbul ignore else */\r\n if (commonProperties) {\r\n loggingContext.commonProperties = {\r\n ...loggingContext.commonProperties,\r\n ...commonProperties,\r\n };\r\n }\r\n\r\n // Nothing else to do when this param not provided\r\n /* istanbul ignore else */\r\n if (customProperties) {\r\n loggingContext.customProperties = {\r\n ...loggingContext.customProperties,\r\n ...customProperties,\r\n } as CustomContext;\r\n }\r\n\r\n logger.updateContext(loggingContext);\r\n};\r\n\r\nconst useTelemetryContextHook = () => {\r\n const [isCompliant, setIsCompliant] = useState(false);\r\n const [ariaTelemetryClient, setAriaTelemetryClient] = useState<\r\n AriaTelemetryClient | undefined\r\n >();\r\n const [ingestionKey, setIngestionKey] = useState();\r\n const [tenantId, setTenantId] = useState();\r\n const [logToConsole, setLogToConsole] = useState(false);\r\n const privacyGuardUsername = \"EHR Client\";\r\n const privacyGuardUserAlias = \"EHR\";\r\n\r\n const dataCtx: DataContexts = {\r\n UserName: privacyGuardUsername,\r\n UserAlias: privacyGuardUserAlias,\r\n MachineIds: [],\r\n OutOfScopeIdentifiers: [],\r\n };\r\n\r\n const coreConfig: IExtendedConfiguration = {\r\n instrumentationKey: ingestionKey,\r\n extensionConfig: {\r\n context: dataCtx,\r\n notificationEventName: \"EHREventInfoName.PrivacyConcern\",\r\n summaryEventName: \"ehr-client-privacy-guard-summary\",\r\n useEventFieldPrefix: true,\r\n },\r\n };\r\n\r\n const appInsights: ApplicationInsights = new ApplicationInsights();\r\n appInsights.initialize(coreConfig, []);\r\n\r\n useEffect(() => {\r\n if (ingestionKey && !ariaTelemetryClient) {\r\n const ariaClient = new AriaTelemetryClient({\r\n ...telemetryClientConfig,\r\n instrumentationKey: ingestionKey,\r\n });\r\n initializeTelemetryClient(ariaClient, logToConsole);\r\n setAriaTelemetryClient(ariaClient);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [ingestionKey]);\r\n\r\n useEffect(() => {\r\n if (ariaTelemetryClient && tenantId && !isCompliant) {\r\n ariaTelemetryClient\r\n .getCompliantAriaClient(tenantId, {\r\n ...telemetryClientForReConfig,\r\n instrumentationKey: ingestionKey,\r\n })\r\n .then(\r\n (client: AriaTelemetryClient) => {\r\n updateToCompliantAriaClient(client);\r\n setAriaTelemetryClient(client);\r\n setIsCompliant(true);\r\n },\r\n (reason: string) => {\r\n // rejection\r\n if (logToConsole) {\r\n console.log(\r\n `There has been problems when trying to update to compliant aria client. Failure reason: ${reason}`\r\n );\r\n }\r\n setIsCompliant(false);\r\n }\r\n );\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [tenantId]);\r\n\r\n return {\r\n ariaTelemetryClient,\r\n setTelementryIngestionKey: setIngestionKey,\r\n setTelemetryTenantId: setTenantId,\r\n setLogTelemetryToConsole: setLogToConsole,\r\n };\r\n};\r\n\r\nconst TelemetryContext = createContainer(useTelemetryContextHook);\r\n\r\nexport const TelemetryContextProvider = TelemetryContext.Provider;\r\n\r\nexport const useTelemetryContext = () => useContainer(TelemetryContext);\r\n","import { logger } from \"@mwt/web-js-telemetry\";\r\nimport { useEffect, useRef } from \"react\";\r\n\r\nimport { PerformanceDataBagColumns } from \"..\";\r\n\r\ninterface LargestContentfulPaint extends PerformanceEntry {\r\n /**\r\n * The element that is the current largest contentful paint.\r\n */\r\n element?: HTMLElement;\r\n /**\r\n * The time the element was rendered to the screen.\r\n * May not be available if the element is a cross-origin image\r\n * loaded without the Timing-Allow-Origin header.\r\n */\r\n renderTime?: number;\r\n // The id of the element. This property returns an empty string when there is no id.\r\n id?: string;\r\n}\r\n\r\n// IE 11. Reference: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation/type\r\nconst entryType = {\r\n 0: \"TYPE_NAVIGATE\",\r\n 1: \"TYPE_RELOAD\",\r\n 2: \"TYPE_BACK_FORWARD\",\r\n 255: \"TYPE_RESERVED\",\r\n};\r\n\r\nexport const usePageLoadTelemetryTracker = (eventType?: string): void => {\r\n const componentFirstRender = useRef(true);\r\n\r\n useEffect(() => {\r\n if (componentFirstRender.current) {\r\n if (window.performance) {\r\n const performance = window.performance;\r\n const fcpEntry = performance?.getEntriesByName(\r\n \"first-contentful-paint\"\r\n )?.[0];\r\n const fpEntry = performance?.getEntriesByName(\"first-paint\")?.[0];\r\n\r\n // Get Navigation Timing entry.\r\n const navigationEntry = performance?.getEntriesByType(\r\n \"navigation\"\r\n )?.[0] as unknown as PerformanceNavigationTiming;\r\n\r\n const navigationType =\r\n typeof navigationEntry?.type === \"number\"\r\n ? entryType[navigationEntry?.type]\r\n : navigationEntry?.type;\r\n\r\n /**\r\n * A number that is the size (in octets) received from the fetch (HTTP or cache)\r\n * of the message body, after removing any applied content-codings.\r\n */\r\n const contentLength = navigationEntry?.decodedBodySize ?? 0;\r\n\r\n /**\r\n * Time it took to render the page.\r\n * This is obtained by starting with the time at which loading of\r\n * the DOM and its dependencies is complete (domComplete)\r\n */\r\n const renderTime = navigationEntry?.domComplete;\r\n\r\n /**\r\n * Returns a timestamp that is the difference between the\r\n * `PerformanceNavigationTiming.loadEventEnd`\r\n * and PerformanceEntry.startTime properties.\r\n */\r\n const duration = navigationEntry?.duration;\r\n\r\n // Returns the timestamp when the first contentful paint occurred.\r\n const fcp = fcpEntry?.startTime;\r\n // Returns the timestamp when the first paint occurred.\r\n const fp = fpEntry?.startTime;\r\n const hostname = window.location.hostname;\r\n const uri = window.location.href;\r\n const name = window.location.pathname;\r\n const refUri = document.referrer;\r\n\r\n try {\r\n new PerformanceObserver((entryList, observer) => {\r\n const lcpEntry = entryList?.getEntriesByType(\r\n \"largest-contentful-paint\"\r\n )?.[0] as LargestContentfulPaint;\r\n\r\n logger.logPageView(\r\n {\r\n name,\r\n uri,\r\n refUri,\r\n contentLength,\r\n hostname,\r\n duration,\r\n fcp,\r\n databag: {\r\n [PerformanceDataBagColumns.DataBagFP]: fp,\r\n [PerformanceDataBagColumns.DataBagRenderTime]: renderTime,\r\n [PerformanceDataBagColumns.DataBagNavigationType]:\r\n navigationType,\r\n [PerformanceDataBagColumns.DataBagLCPStartTime]:\r\n lcpEntry?.startTime,\r\n [PerformanceDataBagColumns.DataBagElement]:\r\n lcpEntry?.element?.className ?? \"\",\r\n [PerformanceDataBagColumns.DataBagLCPRenderTime]:\r\n lcpEntry?.renderTime ?? \"\",\r\n },\r\n },\r\n eventType\r\n );\r\n\r\n // Stop observing on receiving the entryList once.\r\n observer.disconnect();\r\n }).observe({ type: \"largest-contentful-paint\", buffered: true });\r\n } catch (_) {\r\n // IE 11\r\n logger.logPageView(\r\n {\r\n name,\r\n uri,\r\n refUri,\r\n contentLength,\r\n hostname,\r\n duration,\r\n fcp,\r\n databag: {\r\n [PerformanceDataBagColumns.DataBagFP]: fp,\r\n [PerformanceDataBagColumns.DataBagRenderTime]: renderTime,\r\n [PerformanceDataBagColumns.DataBagNavigationType]:\r\n navigationType,\r\n },\r\n },\r\n eventType\r\n );\r\n }\r\n } else {\r\n //no-op\r\n }\r\n componentFirstRender.current = false;\r\n }\r\n }, [eventType]);\r\n};\r\n","// Note: Keep the enums Alphabetically Sorted\r\nimport {\r\n CommonAriaTo1DSPropertiesAvailable,\r\n CommonNorthStarUserBiProperties,\r\n ContextColumnsBase,\r\n PanelActionOutcome,\r\n} from \"@mwt/web-js-telemetry\";\r\n/**\r\n * The user action logged for BI purpose.\r\n */\r\nexport enum ActionScenario {\r\n ApproveIssueUrl = \"approveIssueUrl\",\r\n BannerAlert = \"bannerAlert\",\r\n CheckSmsPrivacyConsent = \"checkSmsPrivacyConsent\",\r\n CopyIntegrationRecord = \"copyIntegrationRecord\",\r\n CopyPatientJoinLink = \"copyPatientJoinLink\",\r\n CopyProviderJoinLink = \"copyProviderJoinLink\",\r\n StartInLobbyChatButtonClicked = \"startInLobbyChatButtonClicked\",\r\n DownloadHL7Certificate = \"downloadHL7Certificate\",\r\n EpicLogin = \"epicLogin\",\r\n FHIRUrlSelected = \"appointmentsFHIRSelected\",\r\n GeneratePhoneNumber = \"generatePhoneNumber\",\r\n IntegrationRecordMenu = \"integrationRecordMenu\",\r\n JoinButtonClicked = \"joinButtonClicked\",\r\n LinkPhoneNumber = \"linkPhoneNumber\",\r\n RedirectToMeetingLaunchUrl = \"redirectToMeetingLaunchUrl\",\r\n RedirectToTeamsUserSignIn = \"redirectToTeamsUserSignIn\",\r\n RemoveHL7Certificate = \"removeHL7Certificate\",\r\n RemoveIntegrationRecord = \"removeIntegrationRecord\",\r\n RemovePhoneNumber = \"removePhoneNumber\",\r\n RetryTeamsMeetingLaunch = \"retryTeamsMeetingLaunch\",\r\n SaveSmsNotificationSettings = \"saveSmsNotificationSettings\",\r\n SelectVendor = \"selectVendor\",\r\n SignOut = \"signOut\",\r\n SubmitIssuerUrl = \"submitIssuerUrl\",\r\n Test = \"test\",\r\n UncheckSmsPrivacyConsent = \"uncheckSmsPrivacyConsent\",\r\n UnlinkPhoneNumber = \"unlinkPhoneNumber\",\r\n UpdateIssuerUrl = \"updateIssuerUrl\",\r\n UploadHL7Certificate = \"uploadHL7Certificate\",\r\n}\r\n\r\nexport enum ActionScenarioType {\r\n ConfigurationWizard = \"ehrConfigurationWizard\",\r\n EHRQueue = \"ehrQueue\",\r\n PatientLobby = \"ehrPatientLobby\",\r\n PractitionerSignIn = \"ehrPractionerSignIn\",\r\n Test = \"ehrTest\",\r\n}\r\n\r\nexport enum PageName {\r\n AppointmentView = \"appointmentView\",\r\n ConfigWizard = \"configWizard\",\r\n DirectJoin = \"directJoin\",\r\n PatientLobby = \"patientLobby\",\r\n PractitionerSignIn = \"practitionerSignIn\",\r\n}\r\n\r\nexport enum PanelType {\r\n ConfigurationWizard = \"configurationWizard\",\r\n ConfigurationWizardError = \"configurationWizardError\",\r\n EHRQueue = \"ehrQueue\",\r\n Login = \"login\",\r\n PageHeader = \"pageHeader\",\r\n PatientLobby = \"patientLobby\",\r\n PatientLobbyError = \"patientLobbyError\",\r\n PractitionerSignIn = \"practitionerSignIn\",\r\n SilentLogin = \"silentLogin\",\r\n Test = \"test\",\r\n}\r\n\r\nexport enum DataBagStatus {\r\n Failure = \"failure\",\r\n Success = \"success\",\r\n}\r\n\r\nexport enum EventType {\r\n NonUiEvent = \"nonuievent\",\r\n Scenario = \"scenario\",\r\n Trace = \"trace\",\r\n UserBI = \"userbi\",\r\n performance = \"performance\",\r\n}\r\n\r\nexport enum CustomContextColumns {\r\n AppId = \"App.Id\",\r\n AppName = \"App.Name\",\r\n TenantId = \"Tenant.Id\",\r\n}\r\n\r\nexport const ContextColumns = {\r\n ...ContextColumnsBase,\r\n ...CustomContextColumns,\r\n};\r\n\r\nenum ExtendedPanelActionOutcome {\r\n OpenModal = \"openModal\",\r\n}\r\n\r\nexport const ExtendedPanelActionOutcomeType = {\r\n ...PanelActionOutcome,\r\n ...ExtendedPanelActionOutcome,\r\n};\r\n\r\n/**\r\n * Name of module clicked.\r\n * Note: Keep the enums Alphabetically Sorted\r\n */\r\nexport enum ModuleName {\r\n AppointmentViewFHIRUrlSelected = \"appointmentsFHIRSelected\",\r\n ApproveIssueUrlButton = \"approveIssueUrlButton\",\r\n CancelSmsNotificationSettingsButton = \"cancelSmsNotificationSettingsButton\",\r\n CloseGeneratePhoneNumberButton = \"closeGeneratePhoneNumberButton\",\r\n CloseSelectVendorButton = \"closeSelectVendorButton\",\r\n CopyIntegrationRecordButton = \"copyIntegrationRecordButton\",\r\n CopyPatientJoinLinkButton = \"copyPatientJoinLinkButton\",\r\n CopyProviderJoinLinkButton = \"copyProviderJoinLinkButton\",\r\n DismissBannerAlertButton = \"dismissBannerAlertButton\",\r\n DownloadHL7CertificateButton = \"downloadHL7CertificateButton\",\r\n EpicLoginButton = \"epicLoginButton\",\r\n GeneratePhoneNumberButton = \"generatePhoneNumberButton\",\r\n IntegrationRecordMenuItem = \"integrationRecordMenuItem\",\r\n JoinAppointmentButton = \"joinAppointmentButton\",\r\n LinkPhoneNumberButton = \"linkPhoneNumberButton\",\r\n LobbyChatButton = \"LobbyChatButton\",\r\n OpenGeneratePhoneNumberButton = \"openGeneratePhoneNumberButton\",\r\n OpenSelectVendorButton = \"openSelectVendorButton\",\r\n OpenSmsNotificationSettingsButton = \"openSmsNotificationSettingsButton\",\r\n PatientLobbyRetryButton = \"patientLobbyRetryButton\",\r\n PractitionerSignInButton = \"practitionerSignInButton\",\r\n RemoveHL7CertificateButton = \"removeHL7CertificateButton\",\r\n RemoveIntegrationRecordButton = \"removeIntegrationRecordButton\",\r\n RemovePhoneNumberButton = \"removePhoneNumberButton\",\r\n SaveSmsNotificationSettingsButton = \"saveSmsNotificationSettingsButton\",\r\n SelectVendorButton = \"selectVendorButton\",\r\n SelectVendorDropdown = \"selectVendorDropdown\",\r\n SignOutButton = \"signOutButton\",\r\n SmsPrivacyConsentCheckbox = \"smsPrivacyConsentCheckbox\",\r\n SubmitIssuerUrlButton = \"submitIssuerUrlButton\",\r\n Test = \"test\",\r\n UnlinkPhoneNumberButton = \"unlinkPhoneNumberButton\",\r\n UploadHL7CertificateButton = \"uploadHL7CertificateButton\",\r\n}\r\n\r\n/**\r\n * Summary of the module's content. Should not include any channel name or team name.\r\n * Note: Keep the enums Alphabetically Sorted\r\n */\r\nexport enum ModuleSummary {\r\n AppointmentViewFHIRUrlSelected = \"Appointment View loaded for a FHIR URL.\",\r\n ApproveIssueUrlButton = \"Button to approve issuer URL and updating it in the tenant mapping.\",\r\n CancelSmsNotificationSettingsButton = \"Button to cancel changes to SMS notification settings\",\r\n CloseGeneratePhoneNumberButton = \"Button to close the generate phone number dialog\",\r\n CloseSelectVendorButton = \"Button to close the select vendor dialog\",\r\n CopyIntegrationRecordButton = \"Button to copy integration record context fields.\",\r\n CopyPatientJoinLinkButton = \"Button to copy the join link for a patient, and create if none exists.\",\r\n CopyProviderJoinLinkButton = \"Button to copy the join link for a provider, and create if none exists.\",\r\n DismissBannerAlertButton = \"Button to dismiss the alert.\",\r\n DownloadHL7CertificateButton = \"Button to download epic HL7 certificate.\",\r\n EpicLoginButton = \"Button to sign in as Epic user.\",\r\n GeneratePhoneNumberButton = \"Button to generate SMS number for a tenant to link to an integration record.\",\r\n IntegrationRecordMenuItem = \"Menu item to view integration record.\",\r\n JoinAppointmentButton = \"Button for provider to join meeting from appointment view.\",\r\n LinkPhoneNumberButton = \"Button to link a phone number from an integration record\",\r\n LobbyChatButton = \"Button to open a lobby chat, creating one if none yet exists.\",\r\n OpenGeneratePhoneNumberButton = \"Button to open the generate phone number dialog\",\r\n OpenSelectVendorButton = \"Button to open the select vendor dialog\",\r\n OpenSmsNotificationSettingsButton = \"Button to open the SMS notification settings panel\",\r\n PatientLobbyRetryButton = \"Retry button for polling launch meeting URL in patient lobby.\",\r\n PractitionerSignInButton = \"Sign button on the practioner sign in lobby page.\",\r\n RemoveHL7CertificateButton = \"Button to remove epic HL7 certificate.\",\r\n RemoveIntegrationRecordButton = \"Remove integration record button.\",\r\n RemovePhoneNumberButton = \"Button to remove SMS number for an integration record.\",\r\n SaveSmsNotificationSettingsButton = \"Button to save SMS notification settings\",\r\n SelectVendorButton = \"Button to confirm changing which vendor configuration is selected\",\r\n SelectVendorDropdown = \"Dropdown that initializes the configuration process for the selected vendor\",\r\n SignOutButton = \"Button to sign out from EHR connector app.\",\r\n SmsPrivacyConsentCheckbox = \"Checkbox for giving privacy consent for the SMS feature\",\r\n SubmitIssuerUrlButton = \"Button to submit issuer URL for creating tenant mapping.\",\r\n UnlinkPhoneNumberButton = \"Button to unlink a phone number from an integration record\",\r\n UploadHL7CertificateButton = \"Button to upload epic HL7 certificate.\",\r\n}\r\n\r\nexport enum TelemetryScenarioName {\r\n PageLoad = \"pageLoad\",\r\n Test = \"test\",\r\n}\r\n\r\nexport enum TelemetryErrorStatus {\r\n Error = \"error\",\r\n NetworkError = \"networkError\",\r\n}\r\n\r\nexport enum DataBagHttpColumns {\r\n // PascalCase to match Virtual Visits column name.\r\n DataBagCorrelationId = \"DataBag.CorrelationId\",\r\n DataBagErrorType = \"DataBag.errorType\",\r\n DataBagIsRetry = \"DataBag.isRetry\",\r\n DataBagIsSuccessful = \"DataBag.isSuccessful\",\r\n DataBagReason = \"DataBag.reason\",\r\n DataBagServiceUrl = \"DataBag.serviceUrl\",\r\n DataBagUrl = \"DataBag.url\",\r\n DatabBagErrorSubType = \"DataBag.errorSubType\",\r\n}\r\n\r\nexport enum DataBagPageViewColumns {\r\n DataBagFCP = \"DataBag.fcp\",\r\n DataBagRefUri = \"DataBag.refUri\",\r\n DataBagUrl = \"DataBag.url\",\r\n}\r\n\r\nexport interface CustomContextProperties\r\n extends Omit<\r\n CommonNorthStarUserBiProperties,\r\n CommonAriaTo1DSPropertiesAvailable\r\n > {\r\n [CustomContextColumns.AppId]: string;\r\n [CustomContextColumns.AppName]: string;\r\n [CustomContextColumns.TenantId]: string;\r\n}\r\nexport enum PerformanceDataBagColumns {\r\n DataBagFP = \"DataBag.fp\",\r\n DataBagRenderTime = \"DataBag.renderTime\",\r\n DataBagNavigationType = \"DataBag.navigationType\",\r\n DataBagLCPStartTime = \"DataBag.lcpStartTime\",\r\n DataBagLCPRenderTime = \"DataBag.lcpRenderTime\",\r\n DataBagElement = \"DataBag.element\",\r\n}\r\n","export const TELEMETRY_SESSION_KEY = \"telemetry.sessionId\";\r\n","import { createContext } from \"react\";\r\n\r\nimport { SessionContextProviderProps } from \"./SessionContext.types\";\r\n\r\nexport const SessionContext = createContext({});\r\n","import { ContextColumnsBase } from \"@mwt/web-js-telemetry\";\r\nimport { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\r\nimport { v4 as uuid } from \"uuid\";\r\n\r\nimport { updateLoggingContext } from \"../telemetry-logger/logger\";\r\nimport { TELEMETRY_SESSION_KEY } from \"../utils/constants\";\r\n\r\nimport { SessionContext } from \"./SessionContext\";\r\nimport { SessionContextProviderProps } from \"./SessionContext.types\";\r\n\r\nexport const SessionContextProvider: React.FC<\r\n React.PropsWithChildren\r\n> = ({ children }) => {\r\n /**\r\n * Session ID is a constant that we read from the sessionStorage.\r\n * This allows us to correlate a user's session in our logs.\r\n * This is used to form the correlation-id string, and add it as a property\r\n * to all telemetry logs inside of logger.\r\n * We also persist this within a session per origin per tab of the browser.\r\n */\r\n const [sesId, setSesId] = useState(\r\n sessionStorage.getItem(TELEMETRY_SESSION_KEY)\r\n );\r\n\r\n const setSessionId = useCallback((sessionId: any) => {\r\n setSesId(sessionId);\r\n sessionStorage.setItem(TELEMETRY_SESSION_KEY, sessionId);\r\n }, []);\r\n\r\n // `useMemo` is used for preventing the value reference to update on subsequent re-renders.\r\n const value = useMemo(\r\n () => ({ sessionId: sesId, setSessionId }),\r\n [sesId, setSessionId]\r\n );\r\n\r\n /**\r\n * Sets a new `sesId` if it doesn't exist on mount.\r\n */\r\n useEffect(() => {\r\n if (!sesId) {\r\n const initSessionId = uuid();\r\n setSessionId(initSessionId);\r\n }\r\n }, []);\r\n\r\n // This effect updates the sessionId logging context.\r\n useEffect(() => {\r\n if (sesId) {\r\n updateLoggingContext({ [ContextColumnsBase.SessionId]: sesId });\r\n }\r\n }, [sesId]);\r\n\r\n return (\r\n {children}\r\n );\r\n};\r\n\r\nexport const useSessionContext = () => useContext(SessionContext);\r\n","import { languageMapper } from \"./languageMapper\";\r\nexport const getBrowserLocale = (): string => {\r\n const language = window.navigator.languages\r\n ? window.navigator.languages[0]\r\n : window.navigator.language;\r\n return languageMapper(language);\r\n};\r\n","export const languageMapper = (language: string | undefined): string => {\r\n const fallbackLanguage = \"en-US\";\r\n let formattedLanguage: string = fallbackLanguage;\r\n language = language ?? fallbackLanguage;\r\n\r\n // Mapper to default languages detected with no regions\r\n const mapper: {\r\n [key: string]: string;\r\n } = {\r\n da: \"da-DK\",\r\n de: \"de-DE\",\r\n en: \"en-US\",\r\n es: \"es-ES\",\r\n fi: \"fi-FI\",\r\n fr: \"fr-FR\",\r\n it: \"it-IT\",\r\n ja: \"ja-JP\",\r\n ko: \"ko-KR\",\r\n no: \"nb-NO\", // Norwegian ISO 639-1 is \"no\" which differs from the first two characters of its country-specific codes\r\n nl: \"nl-NL\",\r\n pt: \"pt-PT\",\r\n ru: \"ru-RU\",\r\n sv: \"sv-SE\",\r\n tr: \"tr-TR\",\r\n zh: \"zh-TW\",\r\n };\r\n\r\n // List of supported languages\r\n const supportedLangs: string[] = [\r\n \"da-DK\",\r\n \"de-DE\",\r\n \"en-GB\",\r\n \"en-US\",\r\n \"es-ES\",\r\n \"fi-FI\",\r\n \"fr-CA\",\r\n \"fr-FR\",\r\n \"it-IT\",\r\n \"ja-JP\",\r\n \"ko-KR\",\r\n \"nb-NO\",\r\n \"nl-NL\",\r\n \"pt-BR\",\r\n \"pt-PT\",\r\n \"ru-RU\",\r\n \"sv-SE\",\r\n \"tr-TR\",\r\n \"zh-CN\",\r\n \"zh-TW\",\r\n ];\r\n\r\n if (!language.includes(\"-\")) {\r\n formattedLanguage = mapper[language];\r\n } else {\r\n if (!supportedLangs.includes(language)) {\r\n const twoCharacterFormat = language.substring(0, 2);\r\n\r\n if (mapper[twoCharacterFormat]) {\r\n formattedLanguage = mapper[twoCharacterFormat];\r\n }\r\n } else {\r\n formattedLanguage = language;\r\n }\r\n }\r\n\r\n return formattedLanguage;\r\n};\r\n"],"names":["getAuthLink","ApolloLink","operation","forward","setContext","_ref","_ref$headers","headers","serviceBaseUrl","operationName","createServiceBaseUrl","sessionStorage","getItem","getServiceBaseUrl","Object","assign","uri","environment","basePath","dayjs","utc","trackNonUIEvent","_window$navigator","_databag","durationInMs","correlationId","error","requestResult","eventStartTime","resultCode","contentLength","url","_ref$errorType","errorType","_ref$errorSubType","errorSubType","logger","logHttpRequestEvent","hostname","window","location","duration","requestCreatedTime","format","networkState","navigator","onLine","NetworkState","Online","Offline","databag","DataBagHttpColumns","DataBagIsSuccessful","DataBagCorrelationId","DataBagUrl","DataBagReason","message","DataBagServiceUrl","DataBagErrorType","DatabBagErrorSubType","EventType","NonUiEvent","handleError","data","_data$errorSubType","_data$errorSubType2","_data$errorSubType3","_data$errorSubType4","_data$errorSubType5","_data$errorSubType6","_data$errorSubType7","_data$errorSubType8","_data$errorSubType9","_data$errorSubType10","_data$errorSubType11","_data$errorSubType12","_data$errorSubType13","_data$errorSubType14","_data$errorSubType15","_data$errorSubType16","_data$errorSubType17","_data$errorSubType18","_data$errorSubType19","_data$errorSubType20","_data$errorSubType21","toLowerCase","AppLaunchError","AuthStateInvalid","UnAuthorized","UnAuthenticated","AccessTokenInvalid","AadStateInvalid","CannotStampEhrExtension","CannotAcquireAccessToken","SessionExpired","TenantConfigNotFound","NoTenantConfigsConfigured","EncounterHasMultipleAppointmentReferences","EncounterHasNoAppointmentReference","SubjectNotPatient","TenantSuspended","Licensenotfound","UserConfigNotFound","CannotCreateMeeting","NotVirtualVisit","PatientInactive","AppointmentNotFound","replace","paths","cache","InMemoryCache","RegionalApolloProvider","children","client","useRef","ApolloClient","link","from","context","getContext","TELEMETRY_SESSION_KEY","map","response","_responseObject$heade","_logger$logHttpReques","endTime","requestEventStartTime","elasedTime","diff","responseObject","requestHeaders","get","status","isSuccessful","HttpColumns","Hostname","Duration","ResultCode","ContentLength","RequestCreatedTime","onError","_responseObject$url","graphQLErrors","networkError","statusCode","_step","_iterator","_createForOfIteratorHelperLoose","done","_graphqlError$extensi","_graphqlError$extensi2","graphqlError","value","extensions","RequestResult","Error","NetworkError","find","_ref2","HttpLink","credentials","name","queryDeduplication","defaultOptions","watchQuery","fetchPolicy","current","_jsx","ApolloProvider","getRegionalEndpoint","region","setRegionByBaseUrl","setItem","setServiceBaseUrl","AppLoader","Flex","fill","vAlign","hAlign","Loader","AuthContext","React","authSession","isUserLoggedIn","setAuthSession","AuthProvider","_sessionStorage$getIt","sessionId","_useState","_useState$","auth","useState","useCallback","userSessionId","Provider","useAuthContext","domainName","cernerEnv","appEnv","appName","AppointmentStatus","NotificationDeliveryStatus","PatientsSmsNotificationStatusFieldsFragmentDoc","gql","_templateObject","_taggedTemplateLiteralLoose","GetMeetingDirectJoinLinkDocument","_templateObject2","useGetMeetingDirectJoinLinkMutation","baseOptions","ApolloReactHooks","GetTeamsMeetingJoinLinkDocument","_templateObject3","useGetTeamsMeetingJoinLinkMutation","SendSmsDirectJoinLinkToPatientDocument","_templateObject4","useSendSmsDirectJoinLinkToPatientMutation","GetAppointmentInfoDocument","_templateObject5","useGetAppointmentInfoQuery","GetAriaIngestionKeyDocument","_templateObject6","useGetAriaIngestionKeyQuery","GetPatientInfoDocument","_templateObject7","useGetPatientInfoQuery","GetPatientsSmsNotificationStatusDocument","_templateObject8","useGetPatientsSmsNotificationStatusQuery","LaunchAppDocument","_templateObject9","useLaunchAppQuery","LaunchAppContinueDocument","_templateObject10","useLaunchAppContinueQuery","LaunchAppContinueAadDocument","_templateObject11","useLaunchAppContinueAadQuery","trackComponentErrorTrace","info","stack","SeverityLevel","componentStack","initialState","ErrorBoundary","_React$Component","props","_this","call","state","_inheritsLoose","getDerivedStateFromError","_proto","prototype","resetError","_this$props$onReset","_this$props","_len","arguments","length","args","Array","_key","this","onReset","apply","concat","reset","setState","componentDidCatch","_this$props$onError","_this$props2","render","_this2","FallBackComponent","AppLaunchErrorBoundary","AppLaunchNotFound","_getLaunchErrorMessag","description","title","PageNotFound","InvalidUrlParams","altMessage","getLaunchErrorMessage","ErrorPanel","truncateDescription","imgProps","alt","InstrumentationKeyProvider","setTelementryIngestionKey","useTelemetryContext","instrumentationKey","useMemo","_data$getAriaIngestio","getAriaIngestionKey","undefined","useEffect","_Fragment","appStyles","width","AppLaunch","lazy","AppLaunchContinue","AppLaunchAadContinue","ConnectedAppointmentView","GlobalError","RouteSwitcher","t","useTranslation","Launch","document","LaunchAppContinue","LaunchAppContinueAAD","Root","_jsxs","Routes","Route","path","launch","element","launchAppContinue","launchAppContinueAAD","App","_updateLoggingContext","_updateLoggingContext2","updateLoggingContext","ContextColumnsBase","UserInfoLanguage","getBrowserLocale","CustomContextColumns","AppName","AppInfoEnvironment","isProdEnv","isInIframe","isInPowerChart","BrowserRouter","TelemetryContextProvider","SessionContextProvider","ThemeProvider","theme","teamsV2Theme","styles","as","Suspense","fallback","ReactDOM","getElementById","isDevEnv","isCanaryTestEnv","trim","root","ScenarioName","ScenarioType","PanelType","ModuleName","ModuleSummary","self","top","e","console","windowExternal","external","cernerExternal","DiscernObjectFactory","ErrorPanelType","useErrorPanelStyles","imgStyles","container","height","backgroundColor","useFluentContext","siteVariables","colorScheme","default","background4","descriptionStyles","maxWidth","textAlign","titleStyles","_ref$imgColorScheme","imgColorScheme","_ref$type","type","GenericError","_useErrorPanelStyles","image","word","toUpperCase","substr","getColorSchemeImg","column","gap","Image","fluid","src","Text","content","weight","size","truncated","telemetryClientConfig","channelConfiguration","eventsLimitInMem","enableCompoundKey","webAnalyticsConfiguration","autoCapture","scroll","pageView","onLoad","onUnload","click","resize","jsError","telemetryClientForReConfig","loggingContext","initialize","commonProperties","customProperties","updateContext","TelemetryContext","createContainer","isCompliant","setIsCompliant","_useState2","ariaTelemetryClient","setAriaTelemetryClient","_useState3","ingestionKey","setIngestionKey","_useState4","tenantId","setTenantId","_useState5","logToConsole","setLogToConsole","coreConfig","extensionConfig","UserName","UserAlias","MachineIds","OutOfScopeIdentifiers","notificationEventName","summaryEventName","useEventFieldPrefix","ApplicationInsights","ariaClient","AriaTelemetryClient","initializeTelemetryClient","getCompliantAriaClient","then","updateToCompliantAriaClient","reason","log","setTelemetryTenantId","setLogTelemetryToConsole","useContainer","entryType","usePageLoadTelemetryTracker","eventType","componentFirstRender","performance","_performance$getEntri","_performance$getEntri2","_performance$getEntri3","_navigationEntry$deco","fcpEntry","getEntriesByName","fpEntry","navigationEntry","getEntriesByType","navigationType","decodedBodySize","renderTime","domComplete","fcp","startTime","fp","href","pathname","refUri","referrer","PerformanceObserver","entryList","observer","_entryList$getEntries","_lcpEntry$element$cla","_lcpEntry$element","_lcpEntry$renderTime","lcpEntry","logPageView","PerformanceDataBagColumns","DataBagFP","DataBagRenderTime","DataBagNavigationType","DataBagLCPStartTime","DataBagElement","className","DataBagLCPRenderTime","disconnect","observe","buffered","_","_databag2","ExtendedPanelActionOutcome","PanelActionOutcome","SessionContext","createContext","sesId","setSesId","setSessionId","initSessionId","uuid","SessionId","language","_language","fallbackLanguage","formattedLanguage","mapper","da","de","en","es","fi","fr","it","ja","ko","no","nl","pt","ru","sv","tr","zh","includes","twoCharacterFormat","substring","languageMapper","languages"],"sourceRoot":""}