{"version":3,"file":"585.f6a0575208a7b9312bc6.js","mappings":"0IAKA,IAAIA,EAAgB,SAAuBC,EAAGC,EAAGC,EAAGC,GAElD,OADAH,GAAKG,EAAI,GACD,EAAUD,EAAI,EAAIF,EAAIA,EAAIC,GAE1BC,EAAI,KADZF,GACsBA,EAAI,GAAK,GAAKC,CACtC,EAEIG,EAA4B,mBAAXC,QAAoD,iBAApBA,OAAOC,SAAwB,SAAUC,GAC5F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAyB,mBAAXF,QAAyBE,EAAIC,cAAgBH,QAAUE,IAAQF,OAAOI,UAAY,gBAAkBF,CAC3H,EAsJA,QApJa,WAIX,IAAIG,OAAU,EAEVC,OAAQ,EACRC,OAAO,EAEPC,OAAS,EACTC,OAAS,EACTC,OAAO,EAEPC,OAAW,EACXC,OAAW,EAEXC,OAAY,EACZC,OAAc,EAEdC,OAAO,EAEPC,OAAW,EAIf,SAASC,IACP,OAAOC,OAAOC,SAAWD,OAAOE,WAClC,CAIA,SAASC,EAAIhB,GACX,OAAOA,EAAQiB,wBAAwBD,IAAMf,CAC/C,CAIA,SAASiB,EAAKC,GAEPX,IACHA,EAAYW,GAOdT,EAAON,EAHPK,EAAcU,EAAcX,EAGDP,EAAOK,EAAUC,GAG5CM,OAAOO,SAAS,EAAGV,GAGnBD,EAAcF,EAAWM,OAAOQ,sBAAsBH,IAQtDL,OAAOO,SAAS,EAAGnB,EAAQK,GAGvBN,GAAWK,IAEbL,EAAQsB,aAAa,WAAY,MAGjCtB,EAAQuB,SAIc,mBAAbZ,GACTA,IAIFH,GAAY,EAvBd,CAsFA,OA1DA,SAAcgB,GACZ,IAAIC,EAAUC,UAAUC,OAAS,QAAsBC,IAAjBF,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAanF,OAVAnB,EAAWkB,EAAQlB,UAAY,IAC/BJ,EAASsB,EAAQtB,QAAU,EAC3BQ,EAAWc,EAAQd,SACnBP,EAASqB,EAAQrB,QAAUf,EAC3BgB,EAAOoB,EAAQpB,OAAQ,EAGvBJ,EAAQW,SAGkB,IAAXY,EAAyB,YAAc9B,EAAQ8B,IAE5D,IAAK,SACHxB,OAAU4B,EACVvB,GAAO,EACPH,EAAOD,EAAQuB,EACf,MAIF,IAAK,SAEHtB,EAAOc,EADPhB,EAAUwB,GAEV,MAIF,IAAK,SACHxB,EAAU6B,SAASC,cAAcN,GACjCtB,EAAOc,EAAIhB,GAQf,OAHAM,EAAWJ,EAAOD,EAAQE,EAGlBT,EAAQ+B,EAAQlB,WAEtB,IAAK,SACHA,EAAWkB,EAAQlB,SACnB,MAGF,IAAK,WACHA,EAAWkB,EAAQlB,SAASD,GAKhCO,OAAOQ,sBAAsBH,EAC/B,CAIF,CAIgBa,E,iBCpKhB,IAGIpC,EAHO,EAAQ,MAGDA,OAElBqC,EAAOC,QAAUtC,C,iBCLjB,IAAIA,EAAS,EAAQ,MACjBuC,EAAY,EAAQ,MACpBC,EAAiB,EAAQ,MAOzBC,EAAiBzC,EAASA,EAAO0C,iBAAcT,EAkBnDI,EAAOC,QATP,SAAoBK,GAClB,OAAa,MAATA,OACeV,IAAVU,EAdQ,qBADL,gBAiBJF,GAAkBA,KAAkBG,OAAOD,GAC/CJ,EAAUI,GACVH,EAAeG,EACrB,C,iBCzBA,IAAIE,EAAkB,EAAQ,MAG1BC,EAAc,OAelBT,EAAOC,QANP,SAAkBS,GAChB,OAAOA,EACHA,EAAOC,MAAM,EAAGH,EAAgBE,GAAU,GAAGE,QAAQH,EAAa,IAClEC,CACN,C,iBCfA,IAAIG,EAA8B,iBAAV,EAAAC,GAAsB,EAAAA,GAAU,EAAAA,EAAOP,SAAWA,QAAU,EAAAO,EAEpFd,EAAOC,QAAUY,C,iBCHjB,IAAIlD,EAAS,EAAQ,MAGjBoD,EAAcR,OAAOxC,UAGrBiD,EAAiBD,EAAYC,eAO7BC,EAAuBF,EAAYG,SAGnCd,EAAiBzC,EAASA,EAAO0C,iBAAcT,EA6BnDI,EAAOC,QApBP,SAAmBK,GACjB,IAAIa,EAAQH,EAAeI,KAAKd,EAAOF,GACnCiB,EAAMf,EAAMF,GAEhB,IACEE,EAAMF,QAAkBR,EACxB,IAAI0B,GAAW,CACJ,CAAX,MAAOC,GAAI,CAEb,IAAIC,EAASP,EAAqBG,KAAKd,GAQvC,OAPIgB,IACEH,EACFb,EAAMF,GAAkBiB,SAEjBf,EAAMF,IAGVoB,CACT,C,WC1CA,IAOIP,EAPcV,OAAOxC,UAOcmD,SAavClB,EAAOC,QAJP,SAAwBK,GACtB,OAAOW,EAAqBG,KAAKd,EACnC,C,iBCnBA,IAAIO,EAAa,EAAQ,MAGrBY,EAA0B,iBAARC,MAAoBA,MAAQA,KAAKnB,SAAWA,QAAUmB,KAGxEC,EAAOd,GAAcY,GAAYG,SAAS,cAATA,GAErC5B,EAAOC,QAAU0B,C,WCPjB,IAAIE,EAAe,KAiBnB7B,EAAOC,QAPP,SAAyBS,GAGvB,IAFA,IAAIoB,EAAQpB,EAAOf,OAEZmC,KAAWD,EAAaE,KAAKrB,EAAOsB,OAAOF,MAClD,OAAOA,CACT,C,iBChBA,IAAIG,EAAW,EAAQ,MACnBC,EAAM,EAAQ,MACdC,EAAW,EAAQ,MAMnBC,EAAYC,KAAKC,IACjBC,EAAYF,KAAKG,IAqLrBxC,EAAOC,QA7HP,SAAkBwC,EAAMC,EAAMjD,GAC5B,IAAIkD,EACAC,EACAC,EACArB,EACAsB,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEf,GAAmB,mBAARV,EACT,MAAM,IAAIW,UAzEQ,uBAmFpB,SAASC,EAAWC,GAClB,IAAIC,EAAOZ,EACPa,EAAUZ,EAKd,OAHAD,EAAWC,OAAWhD,EACtBoD,EAAiBM,EACjB9B,EAASiB,EAAKgB,MAAMD,EAASD,EAE/B,CAEA,SAASG,EAAYJ,GAMnB,OAJAN,EAAiBM,EAEjBR,EAAUa,WAAWC,EAAclB,GAE5BO,EAAUI,EAAWC,GAAQ9B,CACtC,CAYA,SAASqC,EAAaP,GACpB,IAAIQ,EAAoBR,EAAOP,EAM/B,YAAyBnD,IAAjBmD,GAA+Be,GAAqBpB,GACzDoB,EAAoB,GAAOZ,GANJI,EAAON,GAM8BH,CACjE,CAEA,SAASe,IACP,IAAIN,EAAOpB,IACX,GAAI2B,EAAaP,GACf,OAAOS,EAAaT,GAGtBR,EAAUa,WAAWC,EA3BvB,SAAuBN,GACrB,IAEIU,EAActB,GAFMY,EAAOP,GAI/B,OAAOG,EACHX,EAAUyB,EAAanB,GAJDS,EAAON,IAK7BgB,CACN,CAmBqCC,CAAcX,GACnD,CAEA,SAASS,EAAaT,GAKpB,OAJAR,OAAUlD,EAINuD,GAAYR,EACPU,EAAWC,IAEpBX,EAAWC,OAAWhD,EACf4B,EACT,CAcA,SAAS0C,IACP,IAAIZ,EAAOpB,IACPiC,EAAaN,EAAaP,GAM9B,GAJAX,EAAWjD,UACXkD,EAAWwB,KACXrB,EAAeO,EAEXa,EAAY,CACd,QAAgBvE,IAAZkD,EACF,OAAOY,EAAYX,GAErB,GAAIG,EAIF,OAFAmB,aAAavB,GACbA,EAAUa,WAAWC,EAAclB,GAC5BW,EAAWN,EAEtB,CAIA,YAHgBnD,IAAZkD,IACFA,EAAUa,WAAWC,EAAclB,IAE9BlB,CACT,CAGA,OA3GAkB,EAAOP,EAASO,IAAS,EACrBT,EAASxC,KACXwD,IAAYxD,EAAQwD,QAEpBJ,GADAK,EAAS,YAAazD,GACH2C,EAAUD,EAAS1C,EAAQoD,UAAY,EAAGH,GAAQG,EACrEM,EAAW,aAAc1D,IAAYA,EAAQ0D,SAAWA,GAoG1De,EAAUI,OApCV,gBACkB1E,IAAZkD,GACFuB,aAAavB,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,OAAUlD,CACjD,EA+BAsE,EAAUK,MA7BV,WACE,YAAmB3E,IAAZkD,EAAwBtB,EAASuC,EAAa7B,IACvD,EA4BOgC,CACT,C,WC9JAlE,EAAOC,QALP,SAAkBK,GAChB,IAAIkE,SAAclE,EAClB,OAAgB,MAATA,IAA0B,UAARkE,GAA4B,YAARA,EAC/C,C,WCAAxE,EAAOC,QAJP,SAAsBK,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CACjC,C,iBC1BA,IAAImE,EAAa,EAAQ,MACrBC,EAAe,EAAQ,MA2B3B1E,EAAOC,QALP,SAAkBK,GAChB,MAAuB,iBAATA,GACXoE,EAAapE,IArBF,mBAqBYmE,EAAWnE,EACvC,C,iBC1BA,IAAIqB,EAAO,EAAQ,MAsBnB3B,EAAOC,QAJG,WACR,OAAO0B,EAAKgD,KAAKzC,KACnB,C,iBCpBA,IAAI0C,EAAW,EAAQ,MACnB3C,EAAW,EAAQ,MAmEvBjC,EAAOC,QAlBP,SAAkBwC,EAAMC,EAAMjD,GAC5B,IAAIwD,GAAU,EACVE,GAAW,EAEf,GAAmB,mBAARV,EACT,MAAM,IAAIW,UAnDQ,uBAyDpB,OAJInB,EAASxC,KACXwD,EAAU,YAAaxD,IAAYA,EAAQwD,QAAUA,EACrDE,EAAW,aAAc1D,IAAYA,EAAQ0D,SAAWA,GAEnDyB,EAASnC,EAAMC,EAAM,CAC1B,QAAWO,EACX,QAAWP,EACX,SAAYS,GAEhB,C,iBClEA,IAAI0B,EAAW,EAAQ,MACnB5C,EAAW,EAAQ,MACnB6C,EAAW,EAAQ,MAMnBC,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAeC,SA8CnBnF,EAAOC,QArBP,SAAkBK,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIwE,EAASxE,GACX,OA1CM,IA4CR,GAAI2B,EAAS3B,GAAQ,CACnB,IAAI8E,EAAgC,mBAAjB9E,EAAM+E,QAAwB/E,EAAM+E,UAAY/E,EACnEA,EAAQ2B,EAASmD,GAAUA,EAAQ,GAAMA,CAC3C,CACA,GAAoB,iBAAT9E,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQuE,EAASvE,GACjB,IAAIgF,EAAWN,EAAWjD,KAAKzB,GAC/B,OAAQgF,GAAYL,EAAUlD,KAAKzB,GAC/B4E,EAAa5E,EAAMK,MAAM,GAAI2E,EAAW,EAAI,GAC3CP,EAAWhD,KAAKzB,GAvDb,KAuD6BA,CACvC,C,8BC7DA,SAASiF,IACL,OAAOlD,KAAKmD,SAAStE,SAAS,IAAIuE,UAAU,EAAG,GACnD,CAwBA,SAASb,EAASnC,EAAMC,EAAO,GAAIgD,GAAY,GAC3C,IAAIC,EACJ,OAAO,YAAapC,GAChB,MAAMqC,EAAUlE,KAOVmE,EAAUH,IAAcC,EAC9BtB,aAAasB,GACbA,EAAUhC,YARI,KACVgC,EAAU,KACLD,GACDjD,EAAKgB,MAAMmC,EAASrC,EACxB,GAIwBb,GACxBmD,GACApD,EAAKgB,MAAMmC,EAASrC,EAE5B,CACJ,CACA,SAASuC,EAAQC,EAAGxI,GAChB,OAAOyI,KAAKC,UAAUF,KAAOC,KAAKC,UAAU1I,EAChD,C,iBAMA,MAAM2I,EACFpI,YAAYqI,GACR/B,KAAKgC,GAAK,GACVhC,KAAKiC,MAAQ,GACbjC,KAAKkC,MAAQ,GACblC,KAAKmC,YAAa,EAClBnC,KAAKoC,QAAS,EACdpC,KAAKqC,YAAa,EAClBrC,KAAKsC,aAAe,KACfP,IACDA,EAAW,CAAC,GAEhB/B,KAAKgC,GAAK,MAAQb,IAClBnB,KAAKiC,MAAQF,EAASE,OAAS,GAC/BjC,KAAKkC,MAAQH,EAASG,OAAS,GAC/BlC,KAAKuC,cAAiC/G,IAAtBuG,EAASQ,UAAyBR,EAASQ,SAC3DvC,KAAKwC,gBAAqChH,IAAxBuG,EAASS,YAA2BT,EAASS,WAC/DxC,KAAKyC,gBAAqCjH,IAAxBuG,EAASU,YAA2BV,EAASU,WAC/DzC,KAAK0C,kBAAoBX,EAASW,mBAAqB,SACvD1C,KAAK2C,WAAaZ,EAASY,YAAc,aACzC3C,KAAK4C,cAAgBb,EAASa,eAAiB,eAC/C5C,KAAK6C,qBAA+CrH,IAA7BuG,EAASc,iBAAgCd,EAASc,gBACzE7C,KAAK8C,mBAA2CtH,IAA3BuG,EAASe,eAA8Bf,EAASe,cACrE9C,KAAK+C,gBAAkBhB,EAASgB,iBAAmBtH,SAASuH,KAC5DhD,KAAKiD,gBAAkBlB,EAASkB,iBAAmB,WACnDjD,KAAKkD,aAAenB,EAASmB,cAAgB,OAC7ClD,KAAKmD,qBAA+C3H,IAA7BuG,EAASoB,gBAAgCpB,EAASoB,gBAAkB,eAC3FnD,KAAKoD,mBAA2C5H,IAA3BuG,EAASqB,eAA8BrB,EAASqB,cACrEpD,KAAKqD,kBAAyC7H,IAA1BuG,EAASsB,cAA6BtB,EAASsB,aACnErD,KAAKsD,wBAAqD9H,IAAhCuG,EAASuB,oBAAmCvB,EAASuB,mBAC/EtD,KAAKuD,YAAcxB,EAASwB,aAAe,EAC3CvD,KAAKwD,YAAczB,EAASyB,aAAe,IAC3CxD,KAAKyD,aAAe1B,EAAS0B,cAAgB,IAC7CzD,KAAK0D,eAAiB3B,EAAS2B,gBAAkB,GACjD1D,KAAK2D,iBAAmB5B,EAAS4B,kBAAoB,mBACzD,EAGJ,MAAMC,EACFlK,YAAYmK,GAMR,GALA7D,KAAKgC,GAAM6B,EAAS7B,IAAsB,KAAhB6B,EAAS7B,GAA2B6B,EAAS7B,GAAxBb,IAC/CnB,KAAK8D,MAAQD,EAASC,OAAS,GAC/B9D,KAAK+D,eAAmCvI,IAAvBqI,EAASE,WAAkCF,EAASE,UACrE/D,KAAKgE,SAAWH,EAASG,UAAY,MACrChE,KAAK3E,QAAU,GACXwI,EAASxI,QACT,IAAK,MAAM4I,KAAKJ,EAASxI,QACrB2E,KAAK3E,QAAQ6I,KAAK,IAAIC,EAAOF,GAGzC,EAEJ,MAAME,EACFzK,YAAY0K,GACRpE,KAAKgC,GAAMoC,EAAOpC,IAAoB,KAAdoC,EAAOpC,GAA2BoC,EAAOpC,GAAtBb,IAC3CnB,KAAK9D,WAAyBV,IAAjB4I,EAAOlI,MAAsBkI,EAAOC,KAAOD,EAAOlI,MAC/D8D,KAAKqE,KAAOD,EAAOC,MAAQ,GAC3BrE,KAAKsE,KAAOF,EAAOE,MAAQ,GAC3BtE,KAAKuE,cAA+B/I,IAApB4I,EAAOG,UAAyBH,EAAOG,SACvDvE,KAAKwE,aAA6BhJ,IAAnB4I,EAAOI,SAAwBJ,EAAOI,QACrDxE,KAAKuC,cAA+B/G,IAApB4I,EAAO7B,UAAyB6B,EAAO7B,SACvDvC,KAAKyE,eAAiCjJ,IAArB4I,EAAOK,WAA0BL,EAAOK,UACzDzE,KAAK0E,iBAAqClJ,IAAvB4I,EAAOM,aAA4BN,EAAOM,YAC7D1E,KAAKkC,MAAQkC,EAAOlC,OAAS,GAC7BlC,KAAKiC,MAAQmC,EAAOnC,OAAS,GAC7BjC,KAAK2E,KAAOP,EAAOO,MAAQ,CAAC,CAChC,EAEJ,MAAMC,EACFlL,YAAY0G,EAAMuE,GACd3E,KAAK6E,WAAa,SAClB7E,KAAK2E,KAAO,GACZ3E,KAAK6E,WAAazE,EAClBJ,KAAK8E,QAAQH,EACjB,CACAI,kBAAkBJ,GACd,IAAKK,MAAMC,QAAQN,GACf,OAAO,IAAIO,MAAM,yBAErB,IAAK,IAAIC,KAAWR,EAAM,CACtB,KAAIQ,aAAmBvB,GAAY,UAAWuB,GAUzC,OAAIA,aAAmBhB,GAAU,SAAUgB,EACrCnF,KAAKoF,eAAeD,GAGpB,IAAID,MAAM,kDAbjB,KAAM,UAAWC,GACb,OAAO,IAAID,MAAM,8BAErB,GAAI,YAAaC,GAAWA,EAAQ9J,QAChC,IAAK,IAAI+I,KAAUe,EAAQ9J,QACvB,OAAO2E,KAAKoF,eAAehB,EAU3C,CACA,OAAO,IACX,CACAgB,eAAehB,GACX,MAAM,SAAUA,EAGT,KAFI,IAAIc,MAAM,0BAGzB,CACAG,kBAAkBV,GACd,IAAIW,EAAY,GAiBhB,OAhBAX,EAAKY,SAASJ,IACV,GAAIA,aAAmBvB,GAAY,UAAWuB,EAAS,CACnD,IAAIK,EAAa,GACb,YAAaL,GAAWA,EAAQ9J,SAChC8J,EAAQ9J,QAAQkK,SAASnB,IACrBoB,EAAWtB,KAAK,IAAIC,EAAOC,GAAQ,IAGvCoB,EAAWjK,OAAS,GACpB+J,EAAUpB,KAAK,IAAIN,EAASuB,GAEpC,EACIA,aAAmBhB,GAAU,SAAUgB,IACvCG,EAAUpB,KAAK,IAAIC,EAAOgB,GAC9B,IAEGG,CACX,CACAR,QAAQH,GACJ3E,KAAK2E,KAAO3E,KAAKqF,kBAAkBV,GACX,WAApB3E,KAAK6E,YACL7E,KAAKyF,cAAc,QAASzF,KAAK0F,cAEzC,CACAC,UACI,OAAO3F,KAAK4F,OAAO,MAAM,EAC7B,CACAC,iBACI,OAAO7F,KAAK4F,OAAO,MAAM,EAC7B,CACAE,UAAU1B,GACNpE,KAAK8E,QAAQ9E,KAAK2F,UAAUI,OAAO,IAAI5B,EAAOC,IAClD,CACAqB,cAAcO,EAAcC,GACxB,IAAIC,EAAc,KACdC,GAAc,EAClB,IAAK,IAAIhB,KAAWnF,KAAK2E,KAAM,CAC3B,GAAIQ,aAAmBvB,EACnB,IAAK,IAAIQ,KAAUe,EAAQ9J,QAClB6K,IACDA,EAAc9B,GAElBA,EAAOG,UAAW4B,GAAsBF,EAAeG,SAAShC,EAAO4B,IACnE5B,EAAOG,UAAgC,WAApBvE,KAAK6E,aACxBsB,GAAc,GAItBhB,aAAmBhB,IACd+B,IACDA,EAAcf,GAElBA,EAAQZ,UAAW4B,GAAsBF,EAAeG,SAASjB,EAAQa,IACrEb,EAAQZ,UAAgC,WAApBvE,KAAK6E,aACzBsB,GAAc,GAG1B,CACwB,WAApBnG,KAAK6E,YAA2BqB,IAAgBC,IAChDD,EAAY3B,UAAW,EAE/B,CACAmB,cACI,IAAIW,EAAkBrG,KAAKsG,qBACvBL,EAAiB,GAIrB,OAHAI,EAAgBd,SAASnB,IACrB6B,EAAe/B,KAAKE,EAAOlI,MAAM,IAE9B+J,CACX,CACAK,qBACI,OAAOtG,KAAK4F,QAAQW,GACTA,EAAIhC,WACZ,EACP,CACAiC,iBACI,IAAIH,EAAkBrG,KAAKsG,qBACvBG,EAAc,GAIlB,OAHAJ,EAAgBd,SAASmB,IACrBD,EAAYvC,KAAKwC,EAAG1E,GAAG,IAEpByE,CACX,CACAE,gBAAgB3E,GACZ,IAAK,IAAImD,KAAWnF,KAAK2E,KACrB,GAAIQ,aAAmBvB,GAAYuB,EAAQnD,KAAOA,EAC9C,OAAOmD,EAGf,OAAO,IACX,CACAyB,cAAc5E,GACV,IAAI3G,EAAU2E,KAAK4F,QAAQW,GAChBA,EAAIvE,KAAOA,IACnB,GACH,OAAO3G,EAAQE,OAASF,EAAQ,GAAK,IACzC,CACAwL,OAAOA,EAAQC,GAEX,MAAe,MADfD,EAASA,EAAOE,QAEL/G,KAAK2F,UAET3F,KAAK4F,QAAQW,GACTO,EAAaP,EAAKM,KAC1B,EACP,CACAjB,OAAOA,EAAQoB,GACX,MAAMC,EAAa,GA0BnB,OAzBAjH,KAAK2E,KAAKY,SAASJ,IACf,GAAIA,aAAmBvB,EAAU,CAC7B,IAAI4B,EAAa,GAWjB,GAVAL,EAAQ9J,QAAQkK,SAASnB,IAChBwB,IAAUA,EAAOxB,KACb4C,EAIDxB,EAAWtB,KAAK,IAAIC,EAAOC,IAH3B6C,EAAW/C,KAAK,IAAIC,EAAOC,IAKnC,IAEAoB,EAAWjK,OAAS,EAAG,CACvB,IAAIsI,EAAW,IAAID,EAASuB,GAC5BtB,EAASxI,QAAUmK,EACnByB,EAAW/C,KAAKL,EACpB,CACJ,CACIsB,aAAmBhB,IACdyB,IAAUA,EAAOT,IAClB8B,EAAW/C,KAAK,IAAIC,EAAOgB,IAEnC,IAEG8B,CACX,EAGJ,MAAMC,EACFxN,YAAYqI,EAAUoF,EAAOC,GACzBpH,KAAKqH,QAAU,CACXC,KAAM,UACN5C,YAAa,iBACb6C,OAAQ,YACRC,OAAQ,YACRtJ,IAAK,SACLhC,MAAO,WACPuL,UAAW,gBACXC,YAAa,kBACbC,SAAU,eACVC,SAAU,cACVC,aAAc,8BACdC,MAAO,WACPC,WAAY,uBACZC,UAAW,uBACXC,QAAS,aACTC,UAAW,gBACXC,UAAW,gBACXtB,OAAQ,YACRuB,kBAAmB,sBACnBC,UAAW,eACXC,QAAS,aACTC,YAAa,8BACbC,KAAM,UACN3E,SAAU,cACV4E,cAAe,oBACfC,kBAAmB,yBACnBC,gBAAiB,sBACjBC,kBAAmB,eACnBC,qBAAsB,qCACtBC,uBAAwB,uBACxBC,iBAAkB,cAClB3E,OAAQ,YACR4E,aAAc,8BACdC,YAAa,iBACbC,KAAM,UACNC,MAAO,WACP5E,SAAU,cACV6E,MAAO,WACP7G,SAAU,cACV8G,KAAM,WAEVrJ,KAAKmH,MAAQA,EACbnH,KAAK+B,SAAWA,EAChB/B,KAAKoH,UAAYA,EACjBpH,KAAKsH,KAAOtH,KAAKsJ,UACjBtJ,KAAKiI,QAAUjI,KAAKuJ,aACpBvJ,KAAKwJ,oBACLxJ,KAAKyJ,uBACLzJ,KAAK+B,SAASgB,gBAAgB2G,YAAY1J,KAAKiI,QAAQX,KAC3D,CACAqC,SACI3J,KAAKsH,KAAKA,KAAKsC,UAAUC,OAAO7J,KAAKqH,QAAQ9E,UAC7CvC,KAAKiI,QAAQpB,OAAOiD,MAAMvH,UAAW,CACzC,CACAwH,UACI/J,KAAKsH,KAAKA,KAAKsC,UAAUI,IAAIhK,KAAKqH,QAAQ9E,UAC1CvC,KAAKiI,QAAQpB,OAAOiD,MAAMvH,UAAW,CACzC,CACA2G,OACIlJ,KAAKsH,KAAKQ,MAAMmC,KAAK/O,aAAa,IAAK8E,KAAKqH,QAAQW,WACpDhI,KAAKsH,KAAKA,KAAKsC,UAAUI,IAAmC,OAA/BhK,KAAK+B,SAASmB,aAAwBlD,KAAKqH,QAAQa,UAAYlI,KAAKqH,QAAQc,WACzGnI,KAAKsH,KAAKA,KAAKpM,aAAa,gBAAiB,QAC7C8E,KAAKkK,cACL,MAAM7D,EAAkBrG,KAAKmH,MAAMb,qBACnC,GAAID,EAAgB9K,OAAQ,CACxB,MAAM4O,EAAa9D,EAAgBA,EAAgB9K,OAAS,GAAGyG,GACzDoI,EAAiBpK,KAAKiI,QAAQO,KAAK9M,cAAc,aAAeyO,EAAa,MAC/EC,GACApK,KAAKqK,oBAAoBrK,KAAKiI,QAAQO,KAAM4B,EAEpD,CACJ,CACAjB,QACInJ,KAAKsH,KAAKA,KAAKsC,UAAUC,OAAO7J,KAAKqH,QAAQa,WAC7ClI,KAAKsH,KAAKA,KAAKsC,UAAUC,OAAO7J,KAAKqH,QAAQc,WAC7CnI,KAAKsH,KAAKA,KAAKpM,aAAa,gBAAiB,SAC7C8E,KAAKiI,QAAQX,KAAKsC,UAAUC,OAAO7J,KAAKqH,QAAQa,WAChDlI,KAAKiI,QAAQX,KAAKsC,UAAUC,OAAO7J,KAAKqH,QAAQc,WAChDnI,KAAKsH,KAAKQ,MAAMmC,KAAK/O,aAAa,IAAK8E,KAAKqH,QAAQU,WACxD,CACAyB,oBAUI,GATAxJ,KAAKsH,KAAKA,KAAKgD,UAAY,GAC3BtK,KAAKsH,KAAKA,KAAKiD,gBAAgB,SAC/BvK,KAAKiI,QAAQX,KAAKgD,UAAY,GAC9BtK,KAAKiI,QAAQX,KAAKiD,gBAAgB,SAClCvK,KAAKsH,KAAKA,KAAKsC,UAAUI,IAAIhK,KAAKqH,QAAQC,MAC1CtH,KAAKiI,QAAQX,KAAKsC,UAAUI,IAAIhK,KAAKqH,QAAQY,SACjB,KAAxBjI,KAAK+B,SAASE,QACdjC,KAAKiI,QAAQX,KAAKrF,MAAMuI,QAAUxK,KAAK+B,SAASE,OAEhDjC,KAAK+B,SAASG,MAAM3G,OACpB,IAAK,MAAMnC,KAAK4G,KAAK+B,SAASG,MACT,KAAb9I,EAAE2N,SACF/G,KAAKsH,KAAKA,KAAKsC,UAAUI,IAAI5Q,EAAE2N,QAC/B/G,KAAKiI,QAAQX,KAAKsC,UAAUI,IAAI5Q,EAAE2N,SAIR,aAAlC/G,KAAK+B,SAASkB,iBACdjD,KAAKiI,QAAQX,KAAKsC,UAAUI,IAAI,MAAQhK,KAAK+B,SAASkB,gBAE9D,CACAwG,uBACIzJ,KAAKsH,KAAKA,KAAKmD,KAAO,WACtBzK,KAAKsH,KAAKA,KAAKpM,aAAa,gBAAiB,WAC7C8E,KAAKsH,KAAKA,KAAKpM,aAAa,gBAAiB8E,KAAKiI,QAAQX,KAAKtF,IAC/DhC,KAAKsH,KAAKA,KAAKpM,aAAa,gBAAiB,SAC7C8E,KAAKiI,QAAQX,KAAKpM,aAAa,OAAQ,UAC3C,CACAoO,UACI,MAAMhC,EAAO7L,SAASiP,cAAc,OACpCpD,EAAKqD,QAAQ3I,GAAKhC,KAAK+B,SAASC,GAChCsF,EAAKtF,GAAKhC,KAAK+B,SAASC,GACxBsF,EAAKsD,SAAW,EAChBtD,EAAKuD,UAAa1N,IACd,OAAQA,EAAE2N,KACN,IAAK,UACL,IAAK,YAGD,OAFA9K,KAAKoH,UAAU8B,OACL,cAAV/L,EAAE2N,IAAsB9K,KAAK+K,UAAU,QAAU/K,KAAK+K,UAAU,OACzD,EACX,IAAK,MAED,OADA/K,KAAKoH,UAAU+B,SACR,EACX,IAAK,QACL,IAAK,IACDnJ,KAAKoH,UAAU8B,OACf,MAAMD,EAAcjJ,KAAKiI,QAAQO,KAAK9M,cAAc,IAAMsE,KAAKqH,QAAQ4B,aAIvE,OAHIA,GACAA,EAAY+B,SAET,EACX,IAAK,SAED,OADAhL,KAAKoH,UAAU+B,SACR,EACf,EAEJ7B,EAAK2D,QAAW9N,IACR6C,KAAK+B,SAASQ,WAGlBvC,KAAK+B,SAASK,OAASpC,KAAKoH,UAAU+B,QAAUnJ,KAAKoH,UAAU8B,OAAM,EAEzE,MAAM3B,EAAS9L,SAASiP,cAAc,OACtCnD,EAAOqC,UAAUI,IAAIhK,KAAKqH,QAAQE,QAClCD,EAAKoC,YAAYnC,GACjB,MAAMK,EAAWnM,SAASiP,cAAc,OACxC9C,EAASgC,UAAUI,IAAIhK,KAAKqH,QAAQO,UAC/B5H,KAAK+B,SAASqB,gBAAiBpD,KAAK+B,SAASI,YAC9CyF,EAASgC,UAAUI,IAAIhK,KAAKqH,QAAQgC,MAExCzB,EAASqD,QAAW9N,IAEhB,GADAA,EAAE+N,kBACElL,KAAK+B,SAASQ,SACd,OAEJ,IAAI4I,GAAe,EACnB,MAAMC,EAASpL,KAAKmH,MAAMb,qBACpB+E,EAAQ,GACVrL,KAAKoH,UAAUkE,eACfH,GAA8D,IAA/CnL,KAAKoH,UAAUkE,aAAaD,EAAOD,IAElDD,IACAnL,KAAKoH,UAAUmE,YAAY,CAAC,KAAK,GAC7BvL,KAAK+B,SAASe,eACd9C,KAAKoH,UAAU+B,QAEfnJ,KAAKoH,UAAUoE,aACfxL,KAAKoH,UAAUoE,YAAYH,GAEnC,EAEJ,MAAMI,EAAchQ,SAASiQ,gBAAgB,6BAA8B,OAC3ED,EAAYvQ,aAAa,UAAW,eACpC,MAAM2M,EAAepM,SAASiQ,gBAAgB,6BAA8B,QAC5E7D,EAAa3M,aAAa,IAAK8E,KAAKqH,QAAQQ,cAC5C4D,EAAY/B,YAAY7B,GACxBD,EAAS8B,YAAY+B,GACrBnE,EAAKoC,YAAY9B,GACjB,MAAME,EAAQrM,SAASiQ,gBAAgB,6BAA8B,OACrE5D,EAAM8B,UAAUI,IAAIhK,KAAKqH,QAAQS,OACjCA,EAAM5M,aAAa,UAAW,eAC9B,MAAMyQ,EAAYlQ,SAASiQ,gBAAgB,6BAA8B,QAOzE,OANAC,EAAUzQ,aAAa,IAAK8E,KAAKqH,QAAQU,YACrC/H,KAAK+B,SAASS,YACdsF,EAAM8B,UAAUI,IAAIhK,KAAKqH,QAAQgC,MAErCvB,EAAM4B,YAAYiC,GAClBrE,EAAKoC,YAAY5B,GACV,CACHR,KAAMA,EACNC,OAAQA,EACRK,SAAU,CACNN,KAAMM,EACNgE,IAAKH,EACLxB,KAAMpC,GAEVC,MAAO,CACHR,KAAMQ,EACNmC,KAAM0B,GAGlB,CACAE,UAAUC,GACY,UAAdA,GACA9L,KAAKsH,KAAKA,KAAKnM,MAAM,CAAE4Q,eAAe,GAE9C,CACArH,cACI,MAAMsH,EAAoBhM,KAAKmH,MAAMvB,QAAQ3B,GAAMA,EAAES,cAAa,GAClE,IAAIvB,EAAkBnD,KAAK+B,SAASoB,gBAChC6I,EAAkBzQ,SACgB,KAA9ByQ,EAAkB,GAAG1H,KACrBnB,EAAkB6I,EAAkB,GAAG1H,KAEJ,KAA9B0H,EAAkB,GAAG3H,OAC1BlB,EAAkB6I,EAAkB,GAAG3H,OAG/C,MAAMK,EAAcjJ,SAASiP,cAAc,OAG3C,OAFAhG,EAAYkF,UAAUI,IAAIhK,KAAKqH,QAAQ3C,aACvCA,EAAYuH,UAAY9I,EACjBuB,CACX,CACAwH,eACSlM,KAAK+B,SAASI,WAInBnC,KAAKmM,uBAHDnM,KAAKoM,mBAIb,CACAA,oBACI,MAAM7H,EAAWvE,KAAKmH,MAAMvB,QAAQ3B,GACzBA,EAAEM,WAAaN,EAAES,cACzB,GACG2H,EAAiB9H,EAAShJ,OAAS,EAAIgJ,EAAS,GAAK,KAC3D,GAAK8H,EAGA,CACD,MAAMC,EAAc7Q,SAASiP,cAAc,OAC3C4B,EAAY1C,UAAUI,IAAIhK,KAAKqH,QAAQG,QACvC8E,EAAYL,UAAYI,EAAe/H,KAAO+H,EAAe/H,KAAO+H,EAAehI,KACnFrE,KAAKsH,KAAKC,OAAO0E,UAAYK,EAAYC,SAC7C,MAPIvM,KAAKsH,KAAKC,OAAO0E,UAAYjM,KAAK0E,cAAc6H,UAQ/CvM,KAAK+B,SAASqB,eAAkBmB,EAAShJ,OAI1CyE,KAAKsH,KAAKM,SAASN,KAAKsC,UAAUC,OAAO7J,KAAKqH,QAAQgC,MAHtDrJ,KAAKsH,KAAKM,SAASN,KAAKsC,UAAUI,IAAIhK,KAAKqH,QAAQgC,KAK3D,CACA8C,uBACI,IAAIK,EAAexM,KAAKsH,KAAKC,OAAOkF,WAChCpG,EAAkBrG,KAAKmH,MAAMvB,QAAQW,GAC9BA,EAAIhC,UAAYgC,EAAI/B,UAC5B,GACH,GAA+B,IAA3B6B,EAAgB9K,OAEhB,YADAyE,KAAKsH,KAAKC,OAAO0E,UAAYjM,KAAK0E,cAAc6H,WAG/C,CACD,MAAM7H,EAAc1E,KAAKsH,KAAKC,OAAO7L,cAAc,IAAMsE,KAAKqH,QAAQ3C,aAClEA,GACAA,EAAYmF,QAEpB,CACA,GAAIxD,EAAgB9K,OAASyE,KAAK+B,SAAS2B,eAAgB,CACvD,MAAM4I,EAAc7Q,SAASiP,cAAc,OAI3C,OAHA4B,EAAY1C,UAAUI,IAAIhK,KAAKqH,QAAQnJ,KACvCoO,EAAYI,YAAc1M,KAAK+B,SAAS4B,iBAAiBnH,QAAQ,WAAY6J,EAAgB9K,OAAOuB,iBACpGkD,KAAKsH,KAAKC,OAAO0E,UAAYK,EAAYC,UAE7C,CACK,CACD,MAAM5I,EAAmB3D,KAAKsH,KAAKC,OAAO7L,cAAc,IAAMsE,KAAKqH,QAAQnJ,KACvEyF,GACAA,EAAiBkG,QAEzB,CACA,IAAI8C,EAAc,GAClB,IAAK,IAAIC,EAAI,EAAGA,EAAIJ,EAAajR,OAAQqR,IAAK,CAC1C,MAAMC,EAAOL,EAAaI,GACpB5K,EAAK6K,EAAKC,aAAa,WACzB9K,IACcqE,EAAgBT,QAAQW,GAC3BA,EAAIvE,KAAOA,IACnB,GACQzG,QACPoR,EAAYzI,KAAK2I,GAG7B,CACA,IAAK,MAAME,KAAKJ,EACZI,EAAEnD,UAAUI,IAAIhK,KAAKqH,QAAQM,UAC7BpI,YAAW,KACPS,KAAKsH,KAAKC,OAAOyF,YAAYD,EAAE,GAChC,KAEPP,EAAexM,KAAKsH,KAAKC,OAAOkF,WAChC,IAAK,IAAIpT,EAAI,EAAGA,EAAIgN,EAAgB9K,OAAQlC,IAAK,CAC7C,IAAI4T,GAAY,EAChB,IAAK,IAAIL,EAAI,EAAGA,EAAIJ,EAAajR,OAAQqR,IACjCvG,EAAgBhN,GAAG2I,KAAOkL,OAAOV,EAAaI,GAAGjC,QAAQ3I,MACzDiL,GAAY,GAGhBA,IAC4B,IAAxBT,EAAajR,OACbyE,KAAKsH,KAAKC,OAAOmC,YAAY1J,KAAKmN,cAAc9G,EAAgBhN,KAErD,IAANA,EACL2G,KAAKsH,KAAKC,OAAO6F,aAAapN,KAAKmN,cAAc9G,EAAgBhN,IAAKmT,EAAanT,IAGnFmT,EAAanT,EAAI,GAAGgU,sBAAsB,WAAYrN,KAAKmN,cAAc9G,EAAgBhN,KAGrG,CACJ,CACA8T,cAAc/I,GACV,MAAMlI,EAAQT,SAASiP,cAAc,OACrCxO,EAAM0N,UAAUI,IAAIhK,KAAKqH,QAAQnL,OACjCA,EAAMyO,QAAQ3I,GAAKoC,EAAOpC,GAC1B,MAAMqC,EAAO5I,SAASiP,cAAc,OAIpC,GAHArG,EAAKuF,UAAUI,IAAIhK,KAAKqH,QAAQI,WAChCpD,EAAK4H,UAAY7H,EAAOC,KACxBnI,EAAMwN,YAAYrF,IACbD,EAAOK,UAAW,CACnB,MAAM6I,EAAY7R,SAASiP,cAAc,OACzC4C,EAAU1D,UAAUI,IAAIhK,KAAKqH,QAAQK,aACrC4F,EAAUrC,QAAW9N,IAGjB,GAFAA,EAAEoQ,iBACFpQ,EAAE+N,kBACElL,KAAK+B,SAASQ,SACd,OAEJ,IAAI4I,GAAe,EACnB,MAAMC,EAASpL,KAAKmH,MAAMb,qBACpB+E,EAAQD,EAAOxF,QAAQ3B,GAClBA,EAAEM,UAAYN,EAAEjC,KAAOoC,EAAOpC,KACtC,GACH,KAAIhC,KAAK+B,SAASwB,aAAe8H,EAAM9P,OAASyE,KAAK+B,SAASwB,eAG1DvD,KAAKoH,UAAUkE,eACfH,GAA8D,IAA/CnL,KAAKoH,UAAUkE,aAAaD,EAAOD,IAElDD,GAAc,CACd,IAAIlF,EAAiB,GACrB,IAAK,MAAMhC,KAAKoH,EAAO,CACnB,GAAIpH,aAAaL,EACb,IAAK,MAAMxK,KAAK6K,EAAE5I,QACd4K,EAAe/B,KAAK9K,EAAE8C,OAG1B+H,aAAaE,GACb8B,EAAe/B,KAAKD,EAAE/H,MAE9B,CACA8D,KAAKoH,UAAUmE,YAAYtF,GAAgB,GACvCjG,KAAK+B,SAASe,eACd9C,KAAKoH,UAAU+B,QAEfnJ,KAAKoH,UAAUoE,aACfxL,KAAKoH,UAAUoE,YAAYH,EAEnC,GAEJ,MAAMmC,EAAY/R,SAASiQ,gBAAgB,6BAA8B,OACzE8B,EAAUtS,aAAa,UAAW,eAClC,MAAMuS,EAAahS,SAASiQ,gBAAgB,6BAA8B,QAC1E+B,EAAWvS,aAAa,IAAK8E,KAAKqH,QAAQ2B,cAC1CwE,EAAU9D,YAAY+D,GACtBH,EAAU5D,YAAY8D,GACtBtR,EAAMwN,YAAY4D,EACtB,CACA,OAAOpR,CACX,CACAqN,aACI,MAAMjC,EAAO7L,SAASiP,cAAc,OACpCpD,EAAKqD,QAAQ3I,GAAKhC,KAAK+B,SAASC,GAChCsF,EAAKtF,GAAKhC,KAAK+B,SAASC,GACxB,MAAM6E,EAAS7G,KAAK0N,YACpBpG,EAAKoC,YAAY7C,EAAOS,MACxB,MAAMkB,EAAOxI,KAAK2N,UAElB,OADArG,EAAKoC,YAAYlB,GACV,CACHlB,KAAMA,EACNT,OAAQA,EACR2B,KAAMA,EAEd,CACA0B,cAC0C,aAAlClK,KAAK+B,SAASkB,iBAIiB,SAA/BjD,KAAK+B,SAASmB,aAIsB,OAA/BlD,KAAK+B,SAASmB,aAIG,OAAtBlD,KAAK4N,aACL5N,KAAK6N,mBAGL7N,KAAK8N,mBAPL9N,KAAK6N,mBARL7N,KAAK8N,kBAiBb,CACAJ,YACI,MAAMpG,EAAO7L,SAASiP,cAAc,OAC9BZ,EAAQrO,SAASiP,cAAc,SAC/BpC,EAAU7M,SAASiP,cAAc,OACvCpD,EAAKsC,UAAUI,IAAIhK,KAAKqH,QAAQR,QAChC,MAAMkH,EAAe,CACjBzG,OACAwC,SA6CJ,GA3CK9J,KAAK+B,SAASU,aACf6E,EAAKsC,UAAUI,IAAIhK,KAAKqH,QAAQgC,MAChCS,EAAMkE,UAAW,GAErBlE,EAAM1J,KAAO,SACb0J,EAAMpF,YAAc1E,KAAK+B,SAASW,kBAClCoH,EAAMc,UAAY,EAClBd,EAAM5O,aAAa,aAAc8E,KAAK+B,SAASW,mBAC/CoH,EAAM5O,aAAa,iBAAkB,OACrC4O,EAAM5O,aAAa,eAAgB,OACnC4O,EAAM5O,aAAa,cAAe,OAClC4O,EAAMmE,QAAUzN,GAAUrD,IACtB6C,KAAKoH,UAAUP,OAAO1J,EAAE/B,OAAOc,MAAM,GACtC,KACH4N,EAAMe,UAAa1N,IACf,OAAQA,EAAE2N,KACN,IAAK,UACL,IAAK,YAED,MADU,cAAV3N,EAAE2N,IAAsB9K,KAAK+K,UAAU,QAAU/K,KAAK+K,UAAU,OACzD,EACX,IAAK,MAED,OADA/K,KAAKoH,UAAU+B,SACR,EACX,IAAK,SAED,OADAnJ,KAAKoH,UAAU+B,SACR,EACX,IAAK,QACL,IAAK,IACD,GAAInJ,KAAKoH,UAAUkB,SAAWnL,EAAE+Q,QAE5B,OADA5F,EAAQ0C,SACD,EAEN,CACD,MAAM/B,EAAcjJ,KAAKiI,QAAQO,KAAK9M,cAAc,IAAMsE,KAAKqH,QAAQ4B,aACvE,GAAIA,EAEA,OADAA,EAAY+B,SACL,CAEf,CACA,OAAO,EACf,EAEJ1D,EAAKoC,YAAYI,GACb9J,KAAKoH,UAAUkB,QAAS,CACxBA,EAAQsB,UAAUI,IAAIhK,KAAKqH,QAAQiB,SACnC,MAAM6F,EAAO1S,SAASiQ,gBAAgB,6BAA8B,OACpEyC,EAAKjT,aAAa,UAAW,eAC7B,MAAMkT,EAAW3S,SAASiQ,gBAAgB,6BAA8B,QACxE0C,EAASlT,aAAa,IAAK8E,KAAKqH,QAAQkB,aACxC4F,EAAKzE,YAAY0E,GACjB9F,EAAQoB,YAAYyE,GACpB7F,EAAQ2C,QAAW9N,IAGf,GAFAA,EAAEoQ,iBACFpQ,EAAE+N,mBACGlL,KAAKoH,UAAUkB,QAChB,OAEJ,MAAM+F,EAAarO,KAAKiI,QAAQpB,OAAOiD,MAAM5N,MAAM6K,OACnD,GAAmB,KAAfsH,EAEA,YADArO,KAAKiI,QAAQpB,OAAOiD,MAAM3O,QAG9B,MAAMmT,EAAaC,IACf,IAAIC,EAAY,IAAIrK,EAAOoK,GAE3B,GADAvO,KAAKoH,UAAUtB,UAAU0I,GACrBxO,KAAK+B,SAASI,WAAY,CAC1B,IAAIoF,EAASvH,KAAKmH,MAAMzB,cACxB6B,EAAOrD,KAAKsK,EAAUtS,OACtB8D,KAAKoH,UAAUmE,YAAYhE,GAAQ,EACvC,MAEIvH,KAAKoH,UAAUmE,YAAY,CAACiD,EAAUtS,QAAQ,GAElD8D,KAAKoH,UAAUP,OAAO,IAClB7G,KAAK+B,SAASe,eACdvD,YAAW,KACPS,KAAKoH,UAAU+B,OAAO,GACvB,IACP,EAEEsF,EAAezO,KAAKoH,UAAUkB,QAAQ+F,GACxCI,aAAwBC,QACxBD,EAAaE,MAAMzS,IAEXoS,EADiB,iBAAVpS,EACG,CACNmI,KAAMnI,EACNA,MAAOA,GAIDA,EACd,IAIJoS,EAD6B,iBAAjBG,EACF,CACNpK,KAAMoK,EACNvS,MAAOuS,GAIDA,EAER,EAEVnH,EAAKoC,YAAYpB,GACjByF,EAAazF,QAAU,CACnBhB,KAAMgB,EACNsD,IAAKuC,EACLlE,KAAMmE,EAEd,CACA,OAAOL,CACX,CACAa,cACI5O,KAAKiI,QAAQpB,OAAOiD,MAAM3O,OAC9B,CACA0T,WAAWC,GAAiB,EAAOC,GAAc,EAAOC,GAAY,GAChE,IAAIC,EAAQ,IAAMjP,KAAKqH,QAAQjD,OAU/B,OATI0K,IACAG,GAAS,SAAWjP,KAAKqH,QAAQ3C,YAAc,KAE/CqK,IACAE,GAAS,SAAWjP,KAAKqH,QAAQ9E,SAAW,KAE5CyM,IACAC,GAAS,SAAWjP,KAAKqH,QAAQgC,KAAO,KAErCrE,MAAMkK,KAAKlP,KAAKiI,QAAQO,KAAK2G,iBAAiBF,GACzD,CACAlE,UAAUqE,GACN,MAAM/T,EAAU2E,KAAK6O,YAAW,GAAM,GAAM,GAC5C,GAAuB,IAAnBxT,EAAQE,OAGZ,GAAuB,IAAnBF,EAAQE,QACHF,EAAQ,GAAGuO,UAAUyF,SAASrP,KAAKqH,QAAQ4B,aADpD,CAMA,IAAK,IAAI2D,EAAI,EAAGA,EAAIvR,EAAQE,OAAQqR,IAChC,GAAIvR,EAAQuR,GAAGhD,UAAUyF,SAASrP,KAAKqH,QAAQ4B,aAAc,CACzD,MAAMqG,EAAajU,EAAQuR,GAC3B0C,EAAW1F,UAAUC,OAAO7J,KAAKqH,QAAQ4B,aACzC,MAAMsG,EAAaD,EAAWE,cAC9B,GAAID,GAAcA,EAAW3F,UAAUyF,SAASrP,KAAKqH,QAAQ6B,MAAO,CAChE,MAAMT,EAAgB8G,EAAW7T,cAAc,IAAMsE,KAAKqH,QAAQoB,eAC9DA,GACAA,EAAcuC,OAEtB,CACA,IAAIyE,EAAepU,EAAgB,SAAR+T,EAAkBxC,EAAI,EAAIvR,EAAQE,OAASqR,EAAI,EAAI,EAAKA,EAAI,GAAK,EAAIA,EAAI,EAAIvR,EAAQE,OAAS,GACzHkU,EAAa7F,UAAUI,IAAIhK,KAAKqH,QAAQ4B,aACxCjJ,KAAKqK,oBAAoBrK,KAAKiI,QAAQO,KAAMiH,GAC5C,MAAMC,EAAeD,EAAaD,cAClC,GAAIE,GAAgBA,EAAa9F,UAAUyF,SAASrP,KAAKqH,QAAQ8B,OAAQ,CACrE,MAAMV,EAAgBiH,EAAahU,cAAc,IAAMsE,KAAKqH,QAAQoB,eAChEA,GACAA,EAAcuC,OAEtB,CACA,MACJ,CAEJ3P,EAAgB,SAAR+T,EAAiB,EAAI/T,EAAQE,OAAS,GAAGqO,UAAUI,IAAIhK,KAAKqH,QAAQ4B,aAC5EjJ,KAAKqK,oBAAoBrK,KAAKiI,QAAQO,KAAMnN,EAAgB,SAAR+T,EAAiB,EAAI/T,EAAQE,OAAS,GA1B1F,MAHQF,EAAQ,GAAGuO,UAAUI,IAAIhK,KAAKqH,QAAQ4B,YA8BlD,CACA0E,UACI,MAAMtS,EAAUI,SAASiP,cAAc,OAEvC,OADArP,EAAQuO,UAAUI,IAAIhK,KAAKqH,QAAQmB,MAC5BnN,CACX,CACAsU,YAAYvG,GACRpJ,KAAKiI,QAAQO,KAAKyD,UAAY,GAC9B,MAAM2D,EAAWnU,SAASiP,cAAc,OACxCkF,EAAShG,UAAUI,IAAIhK,KAAKqH,QAAQ+B,OACpCwG,EAASlD,YAActD,EACvBpJ,KAAKiI,QAAQO,KAAKkB,YAAYkG,EAClC,CACAC,kBACI7P,KAAKiI,QAAQO,KAAKyD,UAAY,GAC9B,MAAM6D,EAAerU,SAASiP,cAAc,OAC5CoF,EAAalG,UAAUI,IAAIhK,KAAKqH,QAAQgB,WACxCyH,EAAapD,YAAc1M,KAAK+B,SAASa,cACzC5C,KAAKiI,QAAQO,KAAKkB,YAAYoG,EAClC,CACAC,cAAcpL,GAEV,GADA3E,KAAKiI,QAAQO,KAAKyD,UAAY,GACV,IAAhBtH,EAAKpJ,OAAc,CACnB,MAAMyU,EAAYvU,SAASiP,cAAc,OAIzC,OAHAsF,EAAUpG,UAAUI,IAAIhK,KAAKqH,QAAQR,QACrCmJ,EAAU/D,UAAYjM,KAAK+B,SAASY,gBACpC3C,KAAKiI,QAAQO,KAAKkB,YAAYsG,EAElC,CACA,IAAK,MAAM3W,KAAKsL,EAAM,CAClB,GAAItL,aAAauK,EAAU,CACvB,MAAMqM,EAAaxU,SAASiP,cAAc,OAC1CuF,EAAWrG,UAAUI,IAAIhK,KAAKqH,QAAQxD,UACtC,MAAM4E,EAAgBhN,SAASiP,cAAc,OAC7CjC,EAAcmB,UAAUI,IAAIhK,KAAKqH,QAAQoB,eACzCwH,EAAWvG,YAAYjB,GACvB,MAAMC,EAAoBjN,SAASiP,cAAc,OACjDhC,EAAkBkB,UAAUI,IAAIhK,KAAKqH,QAAQqB,mBAC7CA,EAAkBgE,YAAcrT,EAAEyK,MAClC2E,EAAciB,YAAYhB,GAC1B,MAAMC,EAAkBlN,SAASiP,cAAc,OAG/C,GAFA/B,EAAgBiB,UAAUI,IAAIhK,KAAKqH,QAAQsB,iBAC3CF,EAAciB,YAAYf,GACtB3I,KAAK+B,SAASI,YAAc9I,EAAE0K,UAAW,CACzC,MAAMA,EAAYtI,SAASiP,cAAc,OACzC3G,EAAU6F,UAAUI,IAAIhK,KAAKqH,QAAQuB,mBACrC,IAAIsH,GAAc,EAClB,IAAK,MAAMjM,KAAK5K,EAAEgC,QACd,IAAK4I,EAAEM,SAAU,CACb2L,GAAc,EACd,KACJ,CAEAA,GACAnM,EAAU6F,UAAUI,IAAIhK,KAAKqH,QAAQ9C,UAEzC,MAAM4L,EAAgB1U,SAASiP,cAAc,QAC7CyF,EAAczD,YAAc,aAC5B3I,EAAU2F,YAAYyG,GACtB,MAAMC,EAAe3U,SAASiQ,gBAAgB,6BAA8B,OAC5E0E,EAAalV,aAAa,UAAW,eACrC6I,EAAU2F,YAAY0G,GACtB,MAAMC,EAAe5U,SAASiQ,gBAAgB,6BAA8B,QAC5E2E,EAAanV,aAAa,IAAK8E,KAAKqH,QAAQwB,sBAC5CuH,EAAa1G,YAAY2G,GACzB,MAAMC,EAAiB7U,SAASiQ,gBAAgB,6BAA8B,QAC9E4E,EAAepV,aAAa,IAAK8E,KAAKqH,QAAQyB,wBAC9CsH,EAAa1G,YAAY4G,GACzBvM,EAAUwM,iBAAiB,SAAUpT,IACjCA,EAAEoQ,iBACFpQ,EAAE+N,kBACF,MAAMsF,EAAkBxQ,KAAKmH,MAAMzB,cACnC,GAAIwK,EAAJ,CACI,MAAMO,EAAcD,EAAgB5K,QAAQ8K,IACxC,IAAK,MAAMzM,KAAK5K,EAAEgC,QACd,GAAIqV,IAAMzM,EAAE/H,MACR,OAAO,EAGf,OAAO,CAAI,IAEf8D,KAAKoH,UAAUmE,YAAYkF,GAAa,EAM5C,KAHK,CACD,MAAMA,EAAcD,EAAgBzK,OAAO1M,EAAEgC,QAAQsV,KAAK1M,GAAMA,EAAE/H,SAClE8D,KAAKoH,UAAUmE,YAAYkF,GAAa,EAC5C,KAEJ9H,EAAgBe,YAAY3F,EAChC,CACA,GAAmB,QAAf1K,EAAE2K,SAAoB,CACtB,MAAM+E,EAAmBtN,SAASiP,cAAc,OAChD3B,EAAiBa,UAAUI,IAAIhK,KAAKqH,QAAQ0B,kBAC5C,MAAM6H,EAAsBnV,SAASiQ,gBAAgB,6BAA8B,OACnFkF,EAAoB1V,aAAa,UAAW,eAC5C0V,EAAoBhH,UAAUI,IAAIhK,KAAKqH,QAAQS,OAC/CiB,EAAiBW,YAAYkH,GAC7B,MAAMC,EAAwBpV,SAASiQ,gBAAgB,6BAA8B,QACrFkF,EAAoBlH,YAAYmH,GAC5BxX,EAAEgC,QAAQyV,MAAM7M,GAAMA,EAAEM,YAAwD,KAA3CvE,KAAKiI,QAAQpB,OAAOiD,MAAM5N,MAAM6K,QACrEgC,EAAiBa,UAAUI,IAAIhK,KAAKqH,QAAQ6B,MAC5C2H,EAAsB3V,aAAa,IAAK8E,KAAKqH,QAAQW,YAEjC,SAAf3O,EAAE2K,UACPiM,EAAWrG,UAAUI,IAAIhK,KAAKqH,QAAQ6B,MACtC2H,EAAsB3V,aAAa,IAAK8E,KAAKqH,QAAQW,YAEjC,UAAf3O,EAAE2K,WACPiM,EAAWrG,UAAUI,IAAIhK,KAAKqH,QAAQ8B,OACtC0H,EAAsB3V,aAAa,IAAK8E,KAAKqH,QAAQU,aAEzDU,EAAc8H,iBAAiB,SAAUpT,IACrCA,EAAEoQ,iBACFpQ,EAAE+N,kBACE+E,EAAWrG,UAAUyF,SAASrP,KAAKqH,QAAQ8B,QAC3C8G,EAAWrG,UAAUC,OAAO7J,KAAKqH,QAAQ8B,OACzC8G,EAAWrG,UAAUI,IAAIhK,KAAKqH,QAAQ6B,MACtC2H,EAAsB3V,aAAa,IAAK8E,KAAKqH,QAAQW,aAGrDiI,EAAWrG,UAAUC,OAAO7J,KAAKqH,QAAQ6B,MACzC+G,EAAWrG,UAAUI,IAAIhK,KAAKqH,QAAQ8B,OACtC0H,EAAsB3V,aAAa,IAAK8E,KAAKqH,QAAQU,YACzD,IAEJY,EAAgBe,YAAYX,EAChC,CACAkH,EAAWvG,YAAYjB,GACvB,IAAK,MAAMxE,KAAK5K,EAAEgC,QACd4U,EAAWvG,YAAY1J,KAAKoE,OAAOH,IAEvCjE,KAAKiI,QAAQO,KAAKkB,YAAYuG,EAClC,CACI5W,aAAa8K,GACbnE,KAAKiI,QAAQO,KAAKkB,YAAY1J,KAAKoE,OAAO/K,GAElD,CACJ,CACA+K,OAAOA,GACH,GAAIA,EAAOM,YAAa,CACpB,MAAMA,EAAcjJ,SAASiP,cAAc,OAG3C,OAFAhG,EAAYkF,UAAUI,IAAIhK,KAAKqH,QAAQjD,QACvCM,EAAYkF,UAAUI,IAAIhK,KAAKqH,QAAQgC,MAChC3E,CACX,CACA,MAAMqM,EAAWtV,SAASiP,cAAc,OAmGxC,OAlGAqG,EAASpG,QAAQ3I,GAAKoC,EAAOpC,GAC7B+O,EAAS/O,GAAKoC,EAAOpC,GACrB+O,EAASnH,UAAUI,IAAIhK,KAAKqH,QAAQjD,QACpC2M,EAAS7V,aAAa,OAAQ,UAC1BkJ,EAAOlC,OACPkC,EAAOlC,MAAM8O,MAAM,KAAKzL,SAAS0L,IAC7BF,EAASnH,UAAUI,IAAIiH,EAAU,IAGrC7M,EAAOnC,QACP8O,EAAS9O,MAAMuI,QAAUpG,EAAOnC,OAEhCjC,KAAK+B,SAASc,iBAA8D,KAA3C7C,KAAKiI,QAAQpB,OAAOiD,MAAM5N,MAAM6K,OACjEgK,EAAS9E,UAAYjM,KAAKkR,cAA8B,KAAhB9M,EAAOE,KAAcF,EAAOE,KAAOF,EAAOC,KAAMrE,KAAKiI,QAAQpB,OAAOiD,MAAM5N,MAAO8D,KAAKqH,QAAQe,mBAEjH,KAAhBhE,EAAOE,KACZyM,EAAS9E,UAAY7H,EAAOE,KAG5ByM,EAASrE,YAActI,EAAOC,KAE9BrE,KAAK+B,SAASuB,oBAAsByN,EAASrE,aAC7CqE,EAAS7V,aAAa,QAAS6V,EAASrE,aAEvCtI,EAAOI,SACRuM,EAASnH,UAAUI,IAAIhK,KAAKqH,QAAQgC,MAEpCjF,EAAO7B,UACPwO,EAASnH,UAAUI,IAAIhK,KAAKqH,QAAQ9E,UAEpC6B,EAAOG,UAAYvE,KAAK+B,SAASsB,cACjC0N,EAASnH,UAAUI,IAAIhK,KAAKqH,QAAQgC,MAEpCjF,EAAOG,UACPwM,EAASnH,UAAUI,IAAIhK,KAAKqH,QAAQ9C,UACpCwM,EAAS7V,aAAa,gBAAiB,QACvC8E,KAAKsH,KAAKA,KAAKpM,aAAa,wBAAyB6V,EAAS/O,MAG9D+O,EAASnH,UAAUC,OAAO7J,KAAKqH,QAAQ9C,UACvCwM,EAAS7V,aAAa,gBAAiB,UAE3C6V,EAASR,iBAAiB,SAAUpT,IAChCA,EAAEoQ,iBACFpQ,EAAE+N,kBACF,MAAM7E,EAAkBrG,KAAKmH,MAAMzB,cAC7B9L,EAAUuD,EAAEgU,cACZC,EAAYlE,OAAOtT,EAAQ+Q,QAAQ3I,IACzC,GAAIoC,EAAO7B,UAAa6B,EAAOG,WAAavE,KAAK+B,SAASqB,cACtD,OAEJ,GAAKpD,KAAK+B,SAASI,YAAcnC,KAAK+B,SAASyB,aAAe6C,EAAgB9K,SAAW6I,EAAOG,UAC3FvE,KAAK+B,SAASI,YAAcnC,KAAK+B,SAASwB,aAAe8C,EAAgB9K,QAAU6I,EAAOG,SAC3F,OAEJ,IAAI8M,GAAe,EACnB,MAAMjG,EAASpL,KAAKmH,MAAMb,qBAC1B,IAAI+E,EAAQ,GACRrL,KAAK+B,SAASI,aAEVkJ,EADAjH,EAAOG,SACC6G,EAAOxF,QAAQ3B,GAAMA,EAAEjC,KAAOoP,IAG9BhG,EAAOrF,OAAO3B,IAGzBpE,KAAK+B,SAASI,aAEXkJ,EADAjH,EAAOG,SACC,GAGA,CAACH,IAGZpE,KAAKoH,UAAUkE,eAChB+F,GAAe,GAEfrR,KAAKoH,UAAUkE,eAEX+F,GAD+C,IAA/CrR,KAAKoH,UAAUkE,aAAaD,EAAOD,IAOvCiG,IACKrR,KAAKmH,MAAMP,cAAcwK,IAC1BpR,KAAKoH,UAAUtB,UAAU1B,GAE7BpE,KAAKoH,UAAUmE,YAAYF,EAAMsF,KAAK1M,GAAMA,EAAE/H,SAAQ,GAClD8D,KAAK+B,SAASe,eACd9C,KAAKoH,UAAU+B,QAEfnJ,KAAKoH,UAAUoE,aACfxL,KAAKoH,UAAUoE,YAAYH,GAEnC,IAEG0F,CACX,CACAO,UACItR,KAAKsH,KAAKA,KAAKuC,SACf7J,KAAKiI,QAAQX,KAAKuC,QACtB,CACAqH,cAAcK,EAAK1K,EAAQyD,GACvB,IAAIkH,EAAkBD,EACtB,MAAME,EAAQ,IAAIC,OAAO,IAAM7K,EAAOE,OAAS,sBAAuB,KACtE,IAAKwK,EAAII,MAAMF,GACX,OAAOF,EAEX,MAAMK,EAAqBL,EAAII,MAAMF,GAAO/T,MACtCmU,EAAmBD,EAAqBL,EAAII,MAAMF,GAAO,GAAG3U,WAAWvB,OACvEuW,EAA2BP,EAAIlQ,UAAUuQ,EAAoBC,GAEnE,OADAL,EAAkBA,EAAgBhV,QAAQiV,EAAO,gBAAgBnH,MAAcwH,YACxEN,CACX,CACA3D,mBACI,MAAMkE,EAAa/R,KAAKsH,KAAKA,KAAK0K,aAC5BC,EAAgBjS,KAAKiI,QAAQX,KAAK0K,aACxChS,KAAKsH,KAAKA,KAAKsC,UAAUC,OAAO7J,KAAKqH,QAAQc,WAC7CnI,KAAKsH,KAAKA,KAAKsC,UAAUI,IAAIhK,KAAKqH,QAAQa,WAC1ClI,KAAKiI,QAAQX,KAAKsC,UAAUC,OAAO7J,KAAKqH,QAAQc,WAChDnI,KAAKiI,QAAQX,KAAKsC,UAAUI,IAAIhK,KAAKqH,QAAQa,WAC7C,MAAMgK,EAAgBlS,KAAKsH,KAAKA,KAAKzM,wBACrCmF,KAAKiI,QAAQX,KAAKrF,MAAMkQ,OAAS,KAAOJ,EAAaE,EAAgB,GAAK,iBAC1EjS,KAAKiI,QAAQX,KAAKrF,MAAMrH,IAAMsX,EAActX,IAAMsX,EAAcE,OAAS3X,OAAOC,QAAU,KAC1FsF,KAAKiI,QAAQX,KAAKrF,MAAMoQ,KAAOH,EAAcG,KAAO5X,OAAO6X,QAAU,KACrEtS,KAAKiI,QAAQX,KAAKrF,MAAMsQ,MAAQL,EAAcK,MAAQ,IAC1D,CACAzE,mBACI9N,KAAKsH,KAAKA,KAAKsC,UAAUC,OAAO7J,KAAKqH,QAAQa,WAC7ClI,KAAKsH,KAAKA,KAAKsC,UAAUI,IAAIhK,KAAKqH,QAAQc,WAC1CnI,KAAKiI,QAAQX,KAAKsC,UAAUC,OAAO7J,KAAKqH,QAAQa,WAChDlI,KAAKiI,QAAQX,KAAKsC,UAAUI,IAAIhK,KAAKqH,QAAQc,WAC7C,MAAM+J,EAAgBlS,KAAKsH,KAAKA,KAAKzM,wBACrCmF,KAAKiI,QAAQX,KAAKrF,MAAMkQ,OAAS,mBACK,aAAlCnS,KAAK+B,SAASkB,kBACdjD,KAAKiI,QAAQX,KAAKrF,MAAMrH,IAAMsX,EAActX,IAAMsX,EAAcE,OAAS3X,OAAOC,QAAU,KAC1FsF,KAAKiI,QAAQX,KAAKrF,MAAMoQ,KAAOH,EAAcG,KAAO5X,OAAO6X,QAAU,KACrEtS,KAAKiI,QAAQX,KAAKrF,MAAMsQ,MAAQL,EAAcK,MAAQ,KAE9D,CACAlI,oBAAoBmI,EAAW5Y,GAC3B,MAAM6Y,EAAOD,EAAUE,UAAYF,EAAUG,UACvCC,EAAUH,EAAOD,EAAUK,aAC3BC,EAAOlZ,EAAQ+Y,UACfI,EAAUD,EAAOlZ,EAAQiZ,aAC3BC,EAAOL,EACPD,EAAUE,WAAaD,EAAOK,EAEzBC,EAAUH,IACfJ,EAAUE,WAAaK,EAAUH,EAEzC,CACAhF,aACI,MAAMmE,EAAa/R,KAAKsH,KAAKA,KAAK0K,aAC5BgB,EAAWhT,KAAKsH,KAAKA,KAAKzM,wBAC1BoX,EAAgBjS,KAAKiI,QAAQX,KAAK0K,aAExC,OADmBvX,OAAOwY,aAAeD,EAASpY,IAAMmX,IACtCE,GACVe,EAASpY,IAAMqX,EACR,KAMR,MACX,EAGJ,MAAMiB,EACFxZ,YAAYyZ,GACRnT,KAAKoT,QAAS,EACdpT,KAAKqT,SAAW,KAChBrT,KAAKmT,OAASA,EACdnT,KAAKmT,OAAO5C,iBAAiB,SAAUvQ,KAAKsT,YAAYC,KAAKvT,MAAO,CAChEwT,SAAS,IAEbxT,KAAKqT,SAAW,IAAII,iBAAiBzT,KAAK0T,YAAYH,KAAKvT,OAC3DA,KAAK2T,cAAa,EACtB,CACAhK,SACI3J,KAAKmT,OAAO5Q,UAAW,CAC3B,CACAwH,UACI/J,KAAKmT,OAAO5Q,UAAW,CAC3B,CACAqR,SACI5T,KAAKmT,OAAOvI,UAAY,EACxB5K,KAAKmT,OAAOlR,MAAMuC,QAAU,OAC5BxE,KAAKmT,OAAOjY,aAAa,cAAe,OAC5C,CACA2Y,SACI7T,KAAKmT,OAAO5I,gBAAgB,YAC5BvK,KAAKmT,OAAOlR,MAAMuC,QAAU,GAC5BxE,KAAKmT,OAAO5I,gBAAgB,cAChC,CACAoJ,aAAaP,GACTpT,KAAKoT,OAASA,EACVA,GACIpT,KAAKqT,UACLrT,KAAKqT,SAASS,QAAQ9T,KAAKmT,OAAQ,CAC/BY,SAAS,EACTC,WAAW,EACXC,YAAY,IAInBb,GACGpT,KAAKqT,UACLrT,KAAKqT,SAASa,YAG1B,CACAZ,YAAYa,GAIR,OAHInU,KAAKoT,QAAUpT,KAAKoU,eACpBpU,KAAKoU,cAAcpU,KAAKqU,sBAErB,CACX,CACAX,YAAYY,GACR,IAAKtU,KAAKoT,OACN,OAEJ,IAAImB,GAAe,EACfC,GAAkB,EAClBC,GAAwB,EAC5B,IAAK,MAAMC,KAAKJ,EACRI,EAAEtZ,SAAW4E,KAAKmT,SACM,aAApBuB,EAAEC,gBACFH,GAAkB,GAEE,UAApBE,EAAEC,gBACFJ,GAAe,IAGG,aAAtBG,EAAEtZ,OAAOwZ,UAAiD,WAAtBF,EAAEtZ,OAAOwZ,WAC7CH,GAAwB,GAG5BF,GAAgBvU,KAAK6U,eACrB7U,KAAK6U,cAAc7U,KAAKmT,OAAO7I,UAAU0G,MAAM,MAE/CwD,GAAmBxU,KAAK8U,mBACxB9U,KAAK2T,cAAa,GAClB3T,KAAK8U,iBAAiB9U,KAAKmT,OAAO5Q,UAClCvC,KAAK2T,cAAa,IAElBc,GAAyBzU,KAAK+U,kBAC9B/U,KAAK2T,cAAa,GAClB3T,KAAK+U,gBAAgB/U,KAAK2F,WAC1B3F,KAAK2T,cAAa,GAE1B,CACAhO,UACI,IAAIhB,EAAO,GACX,MAAMqQ,EAAQhV,KAAKmT,OAAO1G,WAC1B,IAAK,MAAMM,KAAKiI,EACO,aAAfjI,EAAE6H,UACFjQ,EAAKT,KAAKlE,KAAKiV,oBAAoBlI,IAEpB,WAAfA,EAAE6H,UACFjQ,EAAKT,KAAKlE,KAAKkV,kBAAkBnI,IAGzC,OAAOpI,CACX,CACAsQ,oBAAoBpR,GAChB,IAAIc,EAAO,CACP3C,GAAI6B,EAAS7B,GACb8B,MAAOD,EAASC,MAChBC,YAAWF,EAAS8G,SAAyC,SAA/B9G,EAAS8G,QAAQwK,UAC/CnR,SAAUH,EAAS8G,QAAU9G,EAAS8G,QAAQ3G,SAAW,MACzD3I,QAAS,IAEb,MAAMA,EAAUwI,EAAS4I,WACzB,IAAK,MAAMxI,KAAK5I,EACO,WAAf4I,EAAE2Q,UACFjQ,EAAKtJ,QAAQ6I,KAAKlE,KAAKkV,kBAAkBjR,IAGjD,OAAOU,CACX,CACAuQ,kBAAkB9Q,GACd,MAAO,CACHpC,GAAIoC,EAAOpC,GACX9F,MAAOkI,EAAOlI,MACdmI,KAAMD,EAAOC,KACbC,KAAMF,EAAOuG,SAAWvG,EAAOuG,QAAQrG,KAAOF,EAAOuG,QAAQrG,KAAO,GACpEC,SAAUH,EAAOG,SACjBC,QAAkC,SAAzBJ,EAAOnC,MAAMuC,QACtBjC,SAAU6B,EAAO7B,SACjBkC,YAAWL,EAAOuG,SAAuC,SAA7BvG,EAAOuG,QAAQlG,UAC3CC,YAA4C,SAA/BN,EAAOuG,QAAQjG,YAC5BxC,MAAOkC,EAAOkG,UACdrI,MAAOmC,EAAOnC,MAAMuI,QACpB7F,KAAMP,EAAOuG,QAErB,CACA0J,oBACI,IAAI9M,EAAS,GACb,MAAMlM,EAAU2E,KAAKmT,OAAO1G,WAC5B,IAAK,MAAMxI,KAAK5I,EAAS,CACrB,GAAmB,aAAf4I,EAAE2Q,SAAyB,CAC3B,MAAMQ,EAAkBnR,EAAEwI,WAC1B,IAAK,MAAM8B,KAAM6G,EACb,GAAoB,WAAhB7G,EAAGqG,SAAuB,CAC1B,MAAMxQ,EAASmK,EACXnK,EAAOG,UACPgD,EAAOrD,KAAKE,EAAOlI,MAE3B,CAER,CACA,GAAmB,WAAf+H,EAAE2Q,SAAuB,CACzB,MAAMxQ,EAASH,EACXG,EAAOG,UACPgD,EAAOrD,KAAKE,EAAOlI,MAE3B,CACJ,CACA,OAAOqL,CACX,CACAgE,YAAYrP,GACR8D,KAAK2T,cAAa,GAClB,MAAMtY,EAAU2E,KAAKmT,OAAO1G,WAC5B,IAAK,MAAMxI,KAAK5I,EAAS,CACrB,GAAmB,aAAf4I,EAAE2Q,SAAyB,CAC3B,MACMQ,EADWnR,EACgBwI,WACjC,IAAK,MAAM8B,KAAM6G,EACb,GAAoB,WAAhB7G,EAAGqG,SAAuB,CAC1B,MAAMxQ,EAASmK,EACfnK,EAAOG,SAAWrI,EAAMkK,SAAShC,EAAOlI,MAC5C,CAER,CACA,GAAmB,WAAf+H,EAAE2Q,SAAuB,CACzB,MAAMxQ,EAASH,EACfG,EAAOG,SAAWrI,EAAMkK,SAAShC,EAAOlI,MAC5C,CACJ,CACA8D,KAAK2T,cAAa,EACtB,CACA0B,aAAarT,EAAIC,EAAOoF,GACpBrH,KAAK2T,cAAa,GACd3R,IACAhC,KAAKmT,OAAOxI,QAAQ3I,GAAKA,GAEzBC,IACAjC,KAAKmT,OAAOlR,MAAMuI,QAAUvI,GAE5BoF,IACArH,KAAKmT,OAAO7I,UAAY,GACxBjD,EAAQ9B,SAASnM,IACI,KAAbA,EAAE2N,QACF/G,KAAKmT,OAAOvJ,UAAUI,IAAI5Q,EAAE2N,OAChC,KAGR/G,KAAK2T,cAAa,EACtB,CACA2B,cAAc3Q,GACV3E,KAAK2T,cAAa,GAClB3T,KAAKmT,OAAOlH,UAAY,GACxB,IAAK,MAAM5S,KAAKsL,EACRtL,aAAauK,GACb5D,KAAKmT,OAAOzJ,YAAY1J,KAAKuV,eAAelc,IAE5CA,aAAa8K,GACbnE,KAAKmT,OAAOzJ,YAAY1J,KAAKwV,aAAanc,IAGlD2G,KAAKmT,OAAOsC,cAAc,IAAIC,MAAM,WACpC1V,KAAK2T,cAAa,EACtB,CACA4B,eAAe1R,GACX,MAAMoM,EAAaxU,SAASiP,cAAc,YAS1C,GARAuF,EAAWjO,GAAK6B,EAAS7B,GACzBiO,EAAWnM,MAAQD,EAASC,MACxBD,EAASE,YACTkM,EAAWtF,QAAQ5G,UAAY,QAET,QAAtBF,EAASG,WACTiM,EAAWtF,QAAQ3G,SAAWH,EAASG,UAEvCH,EAASxI,QACT,IAAK,MAAM4I,KAAKJ,EAASxI,QACrB4U,EAAWvG,YAAY1J,KAAKwV,aAAavR,IAGjD,OAAOgM,CACX,CACAuF,aAAaG,GACT,MAAM5E,EAAWtV,SAASiP,cAAc,UAgCxC,OA/BAqG,EAAS/O,GAAK2T,EAAK3T,GACnB+O,EAAS7U,MAAQyZ,EAAKzZ,MACtB6U,EAAS9E,UAAY0J,EAAKtR,KACR,KAAdsR,EAAKrR,MACLyM,EAAS7V,aAAa,YAAaya,EAAKrR,MAExCqR,EAAKpR,WACLwM,EAASxM,SAAWoR,EAAKpR,UAEzBoR,EAAKpT,WACLwO,EAASxO,UAAW,IAEH,IAAjBoT,EAAKnR,UACLuM,EAAS9O,MAAMuC,QAAU,QAEzBmR,EAAKjR,aACLqM,EAAS7V,aAAa,mBAAoB,QAE1Cya,EAAKlR,WACLsM,EAAS7V,aAAa,iBAAkB,QAExCya,EAAKzT,OACLyT,EAAKzT,MAAM8O,MAAM,KAAKzL,SAASqQ,IAC3B7E,EAASnH,UAAUI,IAAI4L,EAAY,IAGvCD,EAAKhR,MAA6B,iBAAdgR,EAAKhR,MACzBxI,OAAO0Z,KAAKF,EAAKhR,MAAMY,SAASuF,IAC5BiG,EAAS7V,aAAa,QAp4CtC,SAAmBqW,GACf,MAAMnU,EAASmU,EAAI/U,QAAQ,oCAAqCmV,GAAU,IAAMA,EAAMmE,gBACtF,OAAOvE,EAAI,KAAOA,EAAI,GAAGwE,cAAgB3Y,EAAOiE,UAAU,GAAKjE,CACnE,CAi4CgD4Y,CAAUlL,GAAM6K,EAAKhR,KAAKmG,GAAK,IAGhEiG,CACX,CACAO,UACItR,KAAK2T,cAAa,GAClB3T,KAAKmT,OAAO8C,oBAAoB,SAAUjW,KAAKsT,YAAYC,KAAKvT,OAC5DA,KAAKqT,WACLrT,KAAKqT,SAASa,aACdlU,KAAKqT,SAAW,aAEbrT,KAAKmT,OAAOxI,QAAQ3I,GAC3BhC,KAAK6T,QACT,EAGJ,MAAMqC,EACFxc,YAAYyc,GACR,IAAIC,EAwCJ,GAvCApW,KAAKqW,OAAS,CACVxP,YAAQrL,EACRsL,aAAc,CAACP,EAAKM,KACiD,IAA1DN,EAAIlC,KAAKyR,cAAcQ,QAAQzP,EAAOiP,eAEjDxN,aAAS9M,EACT8P,kBAAc9P,EACdgQ,iBAAahQ,EACb+a,gBAAY/a,EACZgb,eAAWhb,EACXib,iBAAajb,EACbkb,gBAAYlb,GAEhBwE,KAAK2W,aAAenW,GAAS,MACpBR,KAAK+B,SAASK,QAAWpC,KAAK+B,SAASM,aAG5CrC,KAAK4W,OAAO1M,aAAa,IAE7BlK,KAAK6W,aAAerW,GAAS,MACpBR,KAAK+B,SAASK,QAAWpC,KAAK+B,SAASM,aAG5CrC,KAAK4W,OAAO1M,aAAa,IAE7BlK,KAAK8W,cAAiB3Z,IACb6C,KAAK+B,SAASK,QAGfjF,EAAE/B,SAj+ClB,SAAwBxB,EAAS0Q,GAC7B,SAASyM,EAAS5Z,EAAG/D,GACjB,OAAIA,GAAK+D,GAAKA,EAAEyM,WAAazM,EAAEyM,UAAUyF,SAASjW,IAG9CA,GAAK+D,GAAKA,EAAEwN,SAAWxN,EAAEwN,QAAQ3I,IAAM7E,EAAEwN,QAAQ3I,KAAOsI,EAFjDnN,EAKJ,IACX,CAYA,OAAO4Z,EAASnd,EAAS0Q,IAXzB,SAAS0M,EAAc7Z,EAAG/D,GACtB,OAAK+D,GAAKA,IAAM1B,SAGPsb,EAAS5Z,EAAG/D,GACV+D,EAGA6Z,EAAc7Z,EAAE8Z,WAAY7d,GAN5B,IAQf,CACuC4d,CAAcpd,EAAS0Q,EAClE,CA28C6B4M,CAAe/Z,EAAE/B,OAAQ4E,KAAK+B,SAASC,KACpDhC,KAAKmJ,MAAMhM,EAAEiD,KACjB,EAEJJ,KAAKmX,uBAAyB,KACtB1b,SAAS2b,QACTpX,KAAKmJ,OACT,EAEJnJ,KAAKqX,SAAqC,iBAAlBlB,EAAOhD,OAAsB1X,SAASC,cAAcya,EAAOhD,QAAUgD,EAAOhD,QAC/FnT,KAAKqX,SAIN,YAHIlB,EAAOE,QAAUF,EAAOE,OAAOjN,OAC/B+M,EAAOE,OAAOjN,MAAM,IAAIlE,MAAM,mCAItC,GAA8B,WAA1BlF,KAAKqX,SAASC,QAId,YAHInB,EAAOE,QAAUF,EAAOE,OAAOjN,OAC/B+M,EAAOE,OAAOjN,MAAM,IAAIlE,MAAM,iCAIlClF,KAAKqX,SAAS1M,QAAQ4M,MACtBvX,KAAKsR,UAETtR,KAAK+B,SAAW,IAAID,EAASqU,EAAOpU,UACpC,MAAMyV,EAAiB,CAAC,cAAe,aAAc,YAAa,cAAe,cACjF,IAAK,MAAM1M,KAAOqL,EAAOE,OAChBF,EAAOE,OAAOzZ,eAAekO,MAGG,IAAjC0M,EAAelB,QAAQxL,GACvB9K,KAAKqW,OAAOvL,GAAOtK,EAAS2V,EAAOE,OAAOvL,GAAM,KAGhD9K,KAAKqW,OAAOvL,GAAOqL,EAAOE,OAAOvL,IAGzC9K,KAAK+B,SAASQ,UAAuC,QAA1B6T,EAAKD,EAAOpU,gBAA6B,IAAPqU,OAAgB,EAASA,EAAG7T,UAAY4T,EAAOpU,SAASQ,SAAWvC,KAAKqX,SAAS9U,SAC9IvC,KAAK+B,SAASI,WAAanC,KAAKqX,SAASI,SACzCzX,KAAK+B,SAASE,MAAQjC,KAAKqX,SAASpV,MAAMuI,QAC1CxK,KAAK+B,SAASG,MAAQlC,KAAKqX,SAAS/M,UAAU0G,MAAM,KACpDhR,KAAKmT,OAAS,IAAID,EAAOlT,KAAKqX,UAC9BrX,KAAKmT,OAAOkC,aAAarV,KAAK+B,SAASC,GAAIhC,KAAK+B,SAASE,MAAOjC,KAAK+B,SAASG,OAC9ElC,KAAKmT,OAAOS,SACZ5T,KAAKmT,OAAOiB,cAAiB7M,IACzBvH,KAAKuL,YAAYhE,EAAO,EAE5BvH,KAAKmT,OAAO0B,cAAiBxN,IACzBrH,KAAK+B,SAASG,MAAQmF,EACtBrH,KAAK4W,OAAOpN,mBAAmB,EAEnCxJ,KAAKmT,OAAO2B,iBAAoBvS,IACxBA,EACAvC,KAAK+J,UAGL/J,KAAK2J,QACT,EAEJ3J,KAAKmT,OAAO4B,gBAAmBpQ,IAC3B3E,KAAK8E,QAAQH,EAAK,EAEtB3E,KAAKmH,MAAQ,IAAIvC,EAAM5E,KAAK+B,SAASI,WAAa,WAAa,SAAUgU,EAAOxR,KAAOwR,EAAOxR,KAAO3E,KAAKmT,OAAOxN,WAC7GwQ,EAAOxR,MACP3E,KAAKmT,OAAOmC,cAActV,KAAKmH,MAAMxB,WAEzC,MAAMyB,EAAY,CACd8B,KAAMlJ,KAAKkJ,KAAKqK,KAAKvT,MACrBmJ,MAAOnJ,KAAKmJ,MAAMoK,KAAKvT,MACvBsI,QAAStI,KAAKqW,OAAO/N,QAAUtI,KAAKqW,OAAO/N,aAAU9M,EACrD+P,YAAavL,KAAKuL,YAAYgI,KAAKvT,MACnC8F,UAAW9F,KAAK8F,UAAUyN,KAAKvT,MAC/B6G,OAAQ7G,KAAK6G,OAAO0M,KAAKvT,MACzBsL,aAActL,KAAKqW,OAAO/K,aAC1BE,YAAaxL,KAAKqW,OAAO7K,aAE7BxL,KAAK4W,OAAS,IAAI1P,EAAOlH,KAAK+B,SAAU/B,KAAKmH,MAAOC,GACpDpH,KAAK4W,OAAO1K,eACZlM,KAAK4W,OAAO7G,cAAc/P,KAAKmH,MAAMxB,WACrC,MAAM+R,EAAkB1X,KAAKqX,SAASvK,aAAa,cAC7C6K,EAAuB3X,KAAKqX,SAASvK,aAAa,mBACpD4K,EACA1X,KAAK4W,OAAOtP,KAAKA,KAAKpM,aAAa,aAAcwc,GAE5CC,GACL3X,KAAK4W,OAAOtP,KAAKA,KAAKpM,aAAa,kBAAmByc,GAEtD3X,KAAKqX,SAASJ,YACdjX,KAAKqX,SAASJ,WAAW7J,aAAapN,KAAK4W,OAAOtP,KAAKA,KAAMtH,KAAKqX,SAASO,aAE/Enc,SAAS8U,iBAAiB,QAASvQ,KAAK8W,eACxCrc,OAAO8V,iBAAiB,SAAUvQ,KAAK2W,cAAc,GAClB,SAA/B3W,KAAK+B,SAASmB,cACdzI,OAAO8V,iBAAiB,SAAUvQ,KAAK6W,cAAc,GAEzDpb,SAAS8U,iBAAiB,mBAAoBvQ,KAAKmX,wBAC/CnX,KAAK+B,SAASQ,UACdvC,KAAK+J,UAEL/J,KAAK+B,SAASS,YACdxC,KAAKkJ,OAETlJ,KAAKqX,SAASQ,KAAO7X,IACzB,CACA2J,SACI3J,KAAK+B,SAASQ,UAAW,EACzBvC,KAAKmT,OAAOxJ,SACZ3J,KAAK4W,OAAOjN,QAChB,CACAI,UACI/J,KAAK+B,SAASQ,UAAW,EACzBvC,KAAKmT,OAAOpJ,UACZ/J,KAAK4W,OAAO7M,SAChB,CACApE,UACI,OAAO3F,KAAKmH,MAAMxB,SACtB,CACAb,QAAQH,GACJ,MAAMJ,EAAWvE,KAAKmH,MAAMzB,cACtBoS,EAAM9X,KAAKmH,MAAMpC,kBAAkBJ,GACzC,GAAImT,EAIA,YAHI9X,KAAKqW,OAAOjN,OACZpJ,KAAKqW,OAAOjN,MAAM0O,IAI1B9X,KAAKmH,MAAMrC,QAAQH,GACnB,MAAMoT,EAAY/X,KAAKmH,MAAMxB,UAC7B3F,KAAKmT,OAAOmC,cAAcyC,GAC1B/X,KAAK4W,OAAO1K,eACZlM,KAAK4W,OAAO7G,cAAcgI,GACtB/X,KAAKqW,OAAO7K,cAAgB9J,EAAQ6C,EAAUvE,KAAKmH,MAAMzB,gBACzD1F,KAAKqW,OAAO7K,YAAYxL,KAAKmH,MAAMb,qBAE3C,CACAZ,cACI,OAAO1F,KAAKmH,MAAMzB,aACtB,CACA6F,YAAYrP,EAAO8b,GAAiB,GAChC,MAAMzT,EAAWvE,KAAKmH,MAAMzB,cAC5B1F,KAAKmH,MAAM1B,cAAc,QAAST,MAAMC,QAAQ/I,GAASA,EAAQ,CAACA,IAClE,MAAMyI,EAAO3E,KAAKmH,MAAMxB,UACxB3F,KAAKmT,OAAOmC,cAAc3Q,GAC1B3E,KAAK4W,OAAO1K,eACmC,KAA3ClM,KAAK4W,OAAO3O,QAAQpB,OAAOiD,MAAM5N,MACjC8D,KAAK6G,OAAO7G,KAAK4W,OAAO3O,QAAQpB,OAAOiD,MAAM5N,OAG7C8D,KAAK4W,OAAO7G,cAAcpL,GAE1BqT,GAAkBhY,KAAKqW,OAAO7K,cAAgB9J,EAAQ6C,EAAUvE,KAAKmH,MAAMzB,gBAC3E1F,KAAKqW,OAAO7K,YAAYxL,KAAKmH,MAAMb,qBAE3C,CACAR,UAAU1B,GACN,MAAMG,EAAWvE,KAAKmH,MAAMzB,cACvB1F,KAAKmH,MAAMtB,iBAAiBiL,MAAM7M,IAAQ,IAAImS,EAAI,OAAOnS,EAAE/H,SAAmC,QAAvBka,EAAKhS,EAAOlI,aAA0B,IAAPka,EAAgBA,EAAKhS,EAAOC,KAAK,KACxIrE,KAAKmH,MAAMrB,UAAU1B,GAEzB,MAAMO,EAAO3E,KAAKmH,MAAMxB,UACxB3F,KAAKmT,OAAOmC,cAAc3Q,GAC1B3E,KAAK4W,OAAO1K,eACZlM,KAAK4W,OAAO7G,cAAcpL,GACtB3E,KAAKqW,OAAO7K,cAAgB9J,EAAQ6C,EAAUvE,KAAKmH,MAAMzB,gBACzD1F,KAAKqW,OAAO7K,YAAYxL,KAAKmH,MAAMb,qBAE3C,CACA4C,OACQlJ,KAAK+B,SAASQ,UAAYvC,KAAK+B,SAASK,SAGxCpC,KAAKqW,OAAOE,YACZvW,KAAKqW,OAAOE,aAEhBvW,KAAK4W,OAAO1N,OACRlJ,KAAK+B,SAASU,YACdzC,KAAK4W,OAAOhI,cAEhB5O,KAAK+B,SAASK,QAAS,EACvB7C,YAAW,KACHS,KAAKqW,OAAOG,WACZxW,KAAKqW,OAAOG,YAEZxW,KAAK+B,SAASK,SACdpC,KAAK+B,SAASM,YAAa,EAC/B,GACDrC,KAAK+B,SAAS0B,cACqB,aAAlCzD,KAAK+B,SAASkB,kBACVjD,KAAK+B,SAASO,cACd2V,cAAcjY,KAAK+B,SAASO,cAEhCtC,KAAK+B,SAASO,aAAe4V,YAAYlY,KAAK4W,OAAO1M,YAAYqJ,KAAKvT,KAAK4W,QAAS,MAE5F,CACAzN,MAAM2C,EAAY,MACT9L,KAAK+B,SAASK,SAAUpC,KAAK+B,SAASS,aAGvCxC,KAAKqW,OAAOI,aACZzW,KAAKqW,OAAOI,cAEhBzW,KAAK4W,OAAOzN,QACmC,KAA3CnJ,KAAK4W,OAAO3O,QAAQpB,OAAOiD,MAAM5N,OACjC8D,KAAK6G,OAAO,IAEhB7G,KAAK4W,OAAO/K,UAAUC,GACtB9L,KAAK+B,SAASK,QAAS,EACvBpC,KAAK+B,SAASM,YAAa,EAC3B9C,YAAW,KACHS,KAAKqW,OAAOK,YACZ1W,KAAKqW,OAAOK,YAChB,GACD1W,KAAK+B,SAAS0B,cACbzD,KAAK+B,SAASO,cACd2V,cAAcjY,KAAK+B,SAASO,cAEpC,CACAuE,OAAO3K,GAIH,GAHI8D,KAAK4W,OAAO3O,QAAQpB,OAAOiD,MAAM5N,QAAUA,IAC3C8D,KAAK4W,OAAO3O,QAAQpB,OAAOiD,MAAM5N,MAAQA,IAExC8D,KAAKqW,OAAOxP,OAEb,YADA7G,KAAK4W,OAAO7G,cAAwB,KAAV7T,EAAe8D,KAAKmH,MAAMxB,UAAY3F,KAAKmH,MAAMN,OAAO3K,EAAO8D,KAAKqW,OAAOvP,eAGzG9G,KAAK4W,OAAO/G,kBACZ,MAAMsI,EAAanY,KAAKqW,OAAOxP,OAAO3K,EAAO8D,KAAKmH,MAAMb,sBACpD6R,aAAsBzJ,QACtByJ,EACKxJ,MAAMhK,IACP3E,KAAK4W,OAAO7G,cAAc/P,KAAKmH,MAAM9B,kBAAkBV,GAAM,IAE5DyT,OAAON,IACR9X,KAAK4W,OAAOjH,YAA2B,iBAARmI,EAAmBA,EAAMA,EAAIO,QAAQ,IAInErT,MAAMC,QAAQkT,GACnBnY,KAAK4W,OAAO7G,cAAc/P,KAAKmH,MAAM9B,kBAAkB8S,IAGvDnY,KAAK4W,OAAOjH,YAAY,yDAEhC,CACA2B,UACI7V,SAASwa,oBAAoB,QAASjW,KAAK8W,eAC3Crc,OAAOwb,oBAAoB,SAAUjW,KAAK2W,cAAc,GACrB,SAA/B3W,KAAK+B,SAASmB,cACdzI,OAAOwb,oBAAoB,SAAUjW,KAAK6W,cAAc,GAE5Dpb,SAASwa,oBAAoB,mBAAoBjW,KAAKmX,wBACtDnX,KAAKmH,MAAMrC,QAAQ,IACnB9E,KAAK4W,OAAOtF,UACZtR,KAAKmT,OAAO7B,SAChB,E","sources":["webpack://kelberman.org/./node_modules/jump.js/dist/jump.module.js","webpack://kelberman.org/./node_modules/lodash/_Symbol.js","webpack://kelberman.org/./node_modules/lodash/_baseGetTag.js","webpack://kelberman.org/./node_modules/lodash/_baseTrim.js","webpack://kelberman.org/./node_modules/lodash/_freeGlobal.js","webpack://kelberman.org/./node_modules/lodash/_getRawTag.js","webpack://kelberman.org/./node_modules/lodash/_objectToString.js","webpack://kelberman.org/./node_modules/lodash/_root.js","webpack://kelberman.org/./node_modules/lodash/_trimmedEndIndex.js","webpack://kelberman.org/./node_modules/lodash/debounce.js","webpack://kelberman.org/./node_modules/lodash/isObject.js","webpack://kelberman.org/./node_modules/lodash/isObjectLike.js","webpack://kelberman.org/./node_modules/lodash/isSymbol.js","webpack://kelberman.org/./node_modules/lodash/now.js","webpack://kelberman.org/./node_modules/lodash/throttle.js","webpack://kelberman.org/./node_modules/lodash/toNumber.js","webpack://kelberman.org/./node_modules/slim-select/dist/slimselect.es.js"],"sourcesContent":["// Robert Penner's easeInOutQuad\n\n// find the rest of his easing functions here: http://robertpenner.com/easing/\n// find them exported for ES6 consumption here: https://github.com/jaxgeller/ez.js\n\nvar easeInOutQuad = function easeInOutQuad(t, b, c, d) {\n t /= d / 2;\n if (t < 1) return c / 2 * t * t + b;\n t--;\n return -c / 2 * (t * (t - 2) - 1) + b;\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar jumper = function jumper() {\n // private variable cache\n // no variables are created during a jump, preventing memory leaks\n\n var element = void 0; // element to scroll to (node)\n\n var start = void 0; // where scroll starts (px)\n var stop = void 0; // where scroll stops (px)\n\n var offset = void 0; // adjustment from the stop position (px)\n var easing = void 0; // easing function (function)\n var a11y = void 0; // accessibility support flag (boolean)\n\n var distance = void 0; // distance of scroll (px)\n var duration = void 0; // scroll duration (ms)\n\n var timeStart = void 0; // time scroll started (ms)\n var timeElapsed = void 0; // time spent scrolling thus far (ms)\n\n var next = void 0; // next scroll position (px)\n\n var callback = void 0; // to call when done scrolling (function)\n\n // scroll position helper\n\n function location() {\n return window.scrollY || window.pageYOffset;\n }\n\n // element offset helper\n\n function top(element) {\n return element.getBoundingClientRect().top + start;\n }\n\n // rAF loop helper\n\n function loop(timeCurrent) {\n // store time scroll started, if not started already\n if (!timeStart) {\n timeStart = timeCurrent;\n }\n\n // determine time spent scrolling so far\n timeElapsed = timeCurrent - timeStart;\n\n // calculate next scroll position\n next = easing(timeElapsed, start, distance, duration);\n\n // scroll to it\n window.scrollTo(0, next);\n\n // check progress\n timeElapsed < duration ? window.requestAnimationFrame(loop) // continue scroll loop\n : done(); // scrolling is done\n }\n\n // scroll finished helper\n\n function done() {\n // account for rAF time rounding inaccuracies\n window.scrollTo(0, start + distance);\n\n // if scrolling to an element, and accessibility is enabled\n if (element && a11y) {\n // add tabindex indicating programmatic focus\n element.setAttribute('tabindex', '-1');\n\n // focus the element\n element.focus();\n }\n\n // if it exists, fire the callback\n if (typeof callback === 'function') {\n callback();\n }\n\n // reset time for next jump\n timeStart = false;\n }\n\n // API\n\n function jump(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // resolve options, or use defaults\n duration = options.duration || 1000;\n offset = options.offset || 0;\n callback = options.callback; // \"undefined\" is a suitable default, and won't be called\n easing = options.easing || easeInOutQuad;\n a11y = options.a11y || false;\n\n // cache starting position\n start = location();\n\n // resolve target\n switch (typeof target === 'undefined' ? 'undefined' : _typeof(target)) {\n // scroll from current position\n case 'number':\n element = undefined; // no element to scroll to\n a11y = false; // make sure accessibility is off\n stop = start + target;\n break;\n\n // scroll to element (node)\n // bounding rect is relative to the viewport\n case 'object':\n element = target;\n stop = top(element);\n break;\n\n // scroll to element (selector)\n // bounding rect is relative to the viewport\n case 'string':\n element = document.querySelector(target);\n stop = top(element);\n break;\n }\n\n // resolve scroll distance, accounting for offset\n distance = stop - start + offset;\n\n // resolve duration\n switch (_typeof(options.duration)) {\n // number in ms\n case 'number':\n duration = options.duration;\n break;\n\n // function passed the distance of the scroll\n case 'function':\n duration = options.duration(distance);\n break;\n }\n\n // start the loop\n window.requestAnimationFrame(loop);\n }\n\n // expose only the jump method\n return jump;\n};\n\n// export singleton\n\nvar singleton = jumper();\n\nexport default singleton;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","function generateID() {\n return Math.random().toString(36).substring(2, 10);\n}\nfunction hasClassInTree(element, className) {\n function hasClass(e, c) {\n if (c && e && e.classList && e.classList.contains(c)) {\n return e;\n }\n if (c && e && e.dataset && e.dataset.id && e.dataset.id === className) {\n return e;\n }\n return null;\n }\n function parentByClass(e, c) {\n if (!e || e === document) {\n return null;\n }\n else if (hasClass(e, c)) {\n return e;\n }\n else {\n return parentByClass(e.parentNode, c);\n }\n }\n return hasClass(element, className) || parentByClass(element, className);\n}\nfunction debounce(func, wait = 50, immediate = false) {\n let timeout;\n return function (...args) {\n const context = self;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\nfunction isEqual(a, b) {\n return JSON.stringify(a) === JSON.stringify(b);\n}\nfunction kebabCase(str) {\n const result = str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match) => '-' + match.toLowerCase());\n return str[0] === str[0].toUpperCase() ? result.substring(1) : result;\n}\n\nclass Settings {\n constructor(settings) {\n this.id = '';\n this.style = '';\n this.class = [];\n this.isMultiple = false;\n this.isOpen = false;\n this.isFullOpen = false;\n this.intervalMove = null;\n if (!settings) {\n settings = {};\n }\n this.id = 'ss-' + generateID();\n this.style = settings.style || '';\n this.class = settings.class || [];\n this.disabled = settings.disabled !== undefined ? settings.disabled : false;\n this.alwaysOpen = settings.alwaysOpen !== undefined ? settings.alwaysOpen : false;\n this.showSearch = settings.showSearch !== undefined ? settings.showSearch : true;\n this.searchPlaceholder = settings.searchPlaceholder || 'Search';\n this.searchText = settings.searchText || 'No Results';\n this.searchingText = settings.searchingText || 'Searching...';\n this.searchHighlight = settings.searchHighlight !== undefined ? settings.searchHighlight : false;\n this.closeOnSelect = settings.closeOnSelect !== undefined ? settings.closeOnSelect : true;\n this.contentLocation = settings.contentLocation || document.body;\n this.contentPosition = settings.contentPosition || 'absolute';\n this.openPosition = settings.openPosition || 'auto';\n this.placeholderText = settings.placeholderText !== undefined ? settings.placeholderText : 'Select Value';\n this.allowDeselect = settings.allowDeselect !== undefined ? settings.allowDeselect : false;\n this.hideSelected = settings.hideSelected !== undefined ? settings.hideSelected : false;\n this.showOptionTooltips = settings.showOptionTooltips !== undefined ? settings.showOptionTooltips : false;\n this.minSelected = settings.minSelected || 0;\n this.maxSelected = settings.maxSelected || 1000;\n this.timeoutDelay = settings.timeoutDelay || 200;\n this.maxValuesShown = settings.maxValuesShown || 20;\n this.maxValuesMessage = settings.maxValuesMessage || '{number} selected';\n }\n}\n\nclass Optgroup {\n constructor(optgroup) {\n this.id = !optgroup.id || optgroup.id === '' ? generateID() : optgroup.id;\n this.label = optgroup.label || '';\n this.selectAll = optgroup.selectAll === undefined ? false : optgroup.selectAll;\n this.closable = optgroup.closable || 'off';\n this.options = [];\n if (optgroup.options) {\n for (const o of optgroup.options) {\n this.options.push(new Option(o));\n }\n }\n }\n}\nclass Option {\n constructor(option) {\n this.id = !option.id || option.id === '' ? generateID() : option.id;\n this.value = option.value === undefined ? option.text : option.value;\n this.text = option.text || '';\n this.html = option.html || '';\n this.selected = option.selected !== undefined ? option.selected : false;\n this.display = option.display !== undefined ? option.display : true;\n this.disabled = option.disabled !== undefined ? option.disabled : false;\n this.mandatory = option.mandatory !== undefined ? option.mandatory : false;\n this.placeholder = option.placeholder !== undefined ? option.placeholder : false;\n this.class = option.class || '';\n this.style = option.style || '';\n this.data = option.data || {};\n }\n}\nclass Store {\n constructor(type, data) {\n this.selectType = 'single';\n this.data = [];\n this.selectType = type;\n this.setData(data);\n }\n validateDataArray(data) {\n if (!Array.isArray(data)) {\n return new Error('Data must be an array');\n }\n for (let dataObj of data) {\n if (dataObj instanceof Optgroup || 'label' in dataObj) {\n if (!('label' in dataObj)) {\n return new Error('Optgroup must have a label');\n }\n if ('options' in dataObj && dataObj.options) {\n for (let option of dataObj.options) {\n return this.validateOption(option);\n }\n }\n }\n else if (dataObj instanceof Option || 'text' in dataObj) {\n return this.validateOption(dataObj);\n }\n else {\n return new Error('Data object must be a valid optgroup or option');\n }\n }\n return null;\n }\n validateOption(option) {\n if (!('text' in option)) {\n return new Error('Option must have a text');\n }\n return null;\n }\n partialToFullData(data) {\n let dataFinal = [];\n data.forEach((dataObj) => {\n if (dataObj instanceof Optgroup || 'label' in dataObj) {\n let optOptions = [];\n if ('options' in dataObj && dataObj.options) {\n dataObj.options.forEach((option) => {\n optOptions.push(new Option(option));\n });\n }\n if (optOptions.length > 0) {\n dataFinal.push(new Optgroup(dataObj));\n }\n }\n if (dataObj instanceof Option || 'text' in dataObj) {\n dataFinal.push(new Option(dataObj));\n }\n });\n return dataFinal;\n }\n setData(data) {\n this.data = this.partialToFullData(data);\n if (this.selectType === 'single') {\n this.setSelectedBy('value', this.getSelected());\n }\n }\n getData() {\n return this.filter(null, true);\n }\n getDataOptions() {\n return this.filter(null, false);\n }\n addOption(option) {\n this.setData(this.getData().concat(new Option(option)));\n }\n setSelectedBy(selectedType, selectedValues) {\n let firstOption = null;\n let hasSelected = false;\n for (let dataObj of this.data) {\n if (dataObj instanceof Optgroup) {\n for (let option of dataObj.options) {\n if (!firstOption) {\n firstOption = option;\n }\n option.selected = hasSelected ? false : selectedValues.includes(option[selectedType]);\n if (option.selected && this.selectType === 'single') {\n hasSelected = true;\n }\n }\n }\n if (dataObj instanceof Option) {\n if (!firstOption) {\n firstOption = dataObj;\n }\n dataObj.selected = hasSelected ? false : selectedValues.includes(dataObj[selectedType]);\n if (dataObj.selected && this.selectType === 'single') {\n hasSelected = true;\n }\n }\n }\n if (this.selectType === 'single' && firstOption && !hasSelected) {\n firstOption.selected = true;\n }\n }\n getSelected() {\n let selectedOptions = this.getSelectedOptions();\n let selectedValues = [];\n selectedOptions.forEach((option) => {\n selectedValues.push(option.value);\n });\n return selectedValues;\n }\n getSelectedOptions() {\n return this.filter((opt) => {\n return opt.selected;\n }, false);\n }\n getSelectedIDs() {\n let selectedOptions = this.getSelectedOptions();\n let selectedIDs = [];\n selectedOptions.forEach((op) => {\n selectedIDs.push(op.id);\n });\n return selectedIDs;\n }\n getOptgroupByID(id) {\n for (let dataObj of this.data) {\n if (dataObj instanceof Optgroup && dataObj.id === id) {\n return dataObj;\n }\n }\n return null;\n }\n getOptionByID(id) {\n let options = this.filter((opt) => {\n return opt.id === id;\n }, false);\n return options.length ? options[0] : null;\n }\n search(search, searchFilter) {\n search = search.trim();\n if (search === '') {\n return this.getData();\n }\n return this.filter((opt) => {\n return searchFilter(opt, search);\n }, true);\n }\n filter(filter, includeOptgroup) {\n const dataSearch = [];\n this.data.forEach((dataObj) => {\n if (dataObj instanceof Optgroup) {\n let optOptions = [];\n dataObj.options.forEach((option) => {\n if (!filter || filter(option)) {\n if (!includeOptgroup) {\n dataSearch.push(new Option(option));\n }\n else {\n optOptions.push(new Option(option));\n }\n }\n });\n if (optOptions.length > 0) {\n let optgroup = new Optgroup(dataObj);\n optgroup.options = optOptions;\n dataSearch.push(optgroup);\n }\n }\n if (dataObj instanceof Option) {\n if (!filter || filter(dataObj)) {\n dataSearch.push(new Option(dataObj));\n }\n }\n });\n return dataSearch;\n }\n}\n\nclass Render {\n constructor(settings, store, callbacks) {\n this.classes = {\n main: 'ss-main',\n placeholder: 'ss-placeholder',\n values: 'ss-values',\n single: 'ss-single',\n max: 'ss-max',\n value: 'ss-value',\n valueText: 'ss-value-text',\n valueDelete: 'ss-value-delete',\n valueOut: 'ss-value-out',\n deselect: 'ss-deselect',\n deselectPath: 'M10,10 L90,90 M10,90 L90,10',\n arrow: 'ss-arrow',\n arrowClose: 'M10,30 L50,70 L90,30',\n arrowOpen: 'M10,70 L50,30 L90,70',\n content: 'ss-content',\n openAbove: 'ss-open-above',\n openBelow: 'ss-open-below',\n search: 'ss-search',\n searchHighlighter: 'ss-search-highlight',\n searching: 'ss-searching',\n addable: 'ss-addable',\n addablePath: 'M50,10 L50,90 M10,50 L90,50',\n list: 'ss-list',\n optgroup: 'ss-optgroup',\n optgroupLabel: 'ss-optgroup-label',\n optgroupLabelText: 'ss-optgroup-label-text',\n optgroupActions: 'ss-optgroup-actions',\n optgroupSelectAll: 'ss-selectall',\n optgroupSelectAllBox: 'M60,10 L10,10 L10,90 L90,90 L90,50',\n optgroupSelectAllCheck: 'M30,45 L50,70 L90,10',\n optgroupClosable: 'ss-closable',\n option: 'ss-option',\n optionDelete: 'M10,10 L90,90 M10,90 L90,10',\n highlighted: 'ss-highlighted',\n open: 'ss-open',\n close: 'ss-close',\n selected: 'ss-selected',\n error: 'ss-error',\n disabled: 'ss-disabled',\n hide: 'ss-hide',\n };\n this.store = store;\n this.settings = settings;\n this.callbacks = callbacks;\n this.main = this.mainDiv();\n this.content = this.contentDiv();\n this.updateClassStyles();\n this.updateAriaAttributes();\n this.settings.contentLocation.appendChild(this.content.main);\n }\n enable() {\n this.main.main.classList.remove(this.classes.disabled);\n this.content.search.input.disabled = false;\n }\n disable() {\n this.main.main.classList.add(this.classes.disabled);\n this.content.search.input.disabled = true;\n }\n open() {\n this.main.arrow.path.setAttribute('d', this.classes.arrowOpen);\n this.main.main.classList.add(this.settings.openPosition === 'up' ? this.classes.openAbove : this.classes.openBelow);\n this.main.main.setAttribute('aria-expanded', 'true');\n this.moveContent();\n const selectedOptions = this.store.getSelectedOptions();\n if (selectedOptions.length) {\n const selectedId = selectedOptions[selectedOptions.length - 1].id;\n const selectedOption = this.content.list.querySelector('[data-id=\"' + selectedId + '\"]');\n if (selectedOption) {\n this.ensureElementInView(this.content.list, selectedOption);\n }\n }\n }\n close() {\n this.main.main.classList.remove(this.classes.openAbove);\n this.main.main.classList.remove(this.classes.openBelow);\n this.main.main.setAttribute('aria-expanded', 'false');\n this.content.main.classList.remove(this.classes.openAbove);\n this.content.main.classList.remove(this.classes.openBelow);\n this.main.arrow.path.setAttribute('d', this.classes.arrowClose);\n }\n updateClassStyles() {\n this.main.main.className = '';\n this.main.main.removeAttribute('style');\n this.content.main.className = '';\n this.content.main.removeAttribute('style');\n this.main.main.classList.add(this.classes.main);\n this.content.main.classList.add(this.classes.content);\n if (this.settings.style !== '') {\n this.content.main.style.cssText = this.settings.style;\n }\n if (this.settings.class.length) {\n for (const c of this.settings.class) {\n if (c.trim() !== '') {\n this.main.main.classList.add(c.trim());\n this.content.main.classList.add(c.trim());\n }\n }\n }\n if (this.settings.contentPosition === 'relative') {\n this.content.main.classList.add('ss-' + this.settings.contentPosition);\n }\n }\n updateAriaAttributes() {\n this.main.main.role = 'combobox';\n this.main.main.setAttribute('aria-haspopup', 'listbox');\n this.main.main.setAttribute('aria-controls', this.content.main.id);\n this.main.main.setAttribute('aria-expanded', 'false');\n this.content.main.setAttribute('role', 'listbox');\n }\n mainDiv() {\n const main = document.createElement('div');\n main.dataset.id = this.settings.id;\n main.id = this.settings.id;\n main.tabIndex = 0;\n main.onkeydown = (e) => {\n switch (e.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n this.callbacks.open();\n e.key === 'ArrowDown' ? this.highlight('down') : this.highlight('up');\n return false;\n case 'Tab':\n this.callbacks.close();\n return true;\n case 'Enter':\n case ' ':\n this.callbacks.open();\n const highlighted = this.content.list.querySelector('.' + this.classes.highlighted);\n if (highlighted) {\n highlighted.click();\n }\n return false;\n case 'Escape':\n this.callbacks.close();\n return false;\n }\n };\n main.onclick = (e) => {\n if (this.settings.disabled) {\n return;\n }\n this.settings.isOpen ? this.callbacks.close() : this.callbacks.open();\n };\n const values = document.createElement('div');\n values.classList.add(this.classes.values);\n main.appendChild(values);\n const deselect = document.createElement('div');\n deselect.classList.add(this.classes.deselect);\n if (!this.settings.allowDeselect || this.settings.isMultiple) {\n deselect.classList.add(this.classes.hide);\n }\n deselect.onclick = (e) => {\n e.stopPropagation();\n if (this.settings.disabled) {\n return;\n }\n let shouldDelete = true;\n const before = this.store.getSelectedOptions();\n const after = [];\n if (this.callbacks.beforeChange) {\n shouldDelete = this.callbacks.beforeChange(after, before) === true;\n }\n if (shouldDelete) {\n this.callbacks.setSelected([''], false);\n if (this.settings.closeOnSelect) {\n this.callbacks.close();\n }\n if (this.callbacks.afterChange) {\n this.callbacks.afterChange(after);\n }\n }\n };\n const deselectSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n deselectSvg.setAttribute('viewBox', '0 0 100 100');\n const deselectPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n deselectPath.setAttribute('d', this.classes.deselectPath);\n deselectSvg.appendChild(deselectPath);\n deselect.appendChild(deselectSvg);\n main.appendChild(deselect);\n const arrow = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n arrow.classList.add(this.classes.arrow);\n arrow.setAttribute('viewBox', '0 0 100 100');\n const arrowPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n arrowPath.setAttribute('d', this.classes.arrowClose);\n if (this.settings.alwaysOpen) {\n arrow.classList.add(this.classes.hide);\n }\n arrow.appendChild(arrowPath);\n main.appendChild(arrow);\n return {\n main: main,\n values: values,\n deselect: {\n main: deselect,\n svg: deselectSvg,\n path: deselectPath,\n },\n arrow: {\n main: arrow,\n path: arrowPath,\n },\n };\n }\n mainFocus(eventType) {\n if (eventType !== 'click') {\n this.main.main.focus({ preventScroll: true });\n }\n }\n placeholder() {\n const placeholderOption = this.store.filter((o) => o.placeholder, false);\n let placeholderText = this.settings.placeholderText;\n if (placeholderOption.length) {\n if (placeholderOption[0].html !== '') {\n placeholderText = placeholderOption[0].html;\n }\n else if (placeholderOption[0].text !== '') {\n placeholderText = placeholderOption[0].text;\n }\n }\n const placeholder = document.createElement('div');\n placeholder.classList.add(this.classes.placeholder);\n placeholder.innerHTML = placeholderText;\n return placeholder;\n }\n renderValues() {\n if (!this.settings.isMultiple) {\n this.renderSingleValue();\n return;\n }\n this.renderMultipleValues();\n }\n renderSingleValue() {\n const selected = this.store.filter((o) => {\n return o.selected && !o.placeholder;\n }, false);\n const selectedSingle = selected.length > 0 ? selected[0] : null;\n if (!selectedSingle) {\n this.main.values.innerHTML = this.placeholder().outerHTML;\n }\n else {\n const singleValue = document.createElement('div');\n singleValue.classList.add(this.classes.single);\n singleValue.innerHTML = selectedSingle.html ? selectedSingle.html : selectedSingle.text;\n this.main.values.innerHTML = singleValue.outerHTML;\n }\n if (!this.settings.allowDeselect || !selected.length) {\n this.main.deselect.main.classList.add(this.classes.hide);\n }\n else {\n this.main.deselect.main.classList.remove(this.classes.hide);\n }\n }\n renderMultipleValues() {\n let currentNodes = this.main.values.childNodes;\n let selectedOptions = this.store.filter((opt) => {\n return opt.selected && opt.display;\n }, false);\n if (selectedOptions.length === 0) {\n this.main.values.innerHTML = this.placeholder().outerHTML;\n return;\n }\n else {\n const placeholder = this.main.values.querySelector('.' + this.classes.placeholder);\n if (placeholder) {\n placeholder.remove();\n }\n }\n if (selectedOptions.length > this.settings.maxValuesShown) {\n const singleValue = document.createElement('div');\n singleValue.classList.add(this.classes.max);\n singleValue.textContent = this.settings.maxValuesMessage.replace('{number}', selectedOptions.length.toString());\n this.main.values.innerHTML = singleValue.outerHTML;\n return;\n }\n else {\n const maxValuesMessage = this.main.values.querySelector('.' + this.classes.max);\n if (maxValuesMessage) {\n maxValuesMessage.remove();\n }\n }\n let removeNodes = [];\n for (let i = 0; i < currentNodes.length; i++) {\n const node = currentNodes[i];\n const id = node.getAttribute('data-id');\n if (id) {\n const found = selectedOptions.filter((opt) => {\n return opt.id === id;\n }, false);\n if (!found.length) {\n removeNodes.push(node);\n }\n }\n }\n for (const n of removeNodes) {\n n.classList.add(this.classes.valueOut);\n setTimeout(() => {\n this.main.values.removeChild(n);\n }, 100);\n }\n currentNodes = this.main.values.childNodes;\n for (let d = 0; d < selectedOptions.length; d++) {\n let shouldAdd = true;\n for (let i = 0; i < currentNodes.length; i++) {\n if (selectedOptions[d].id === String(currentNodes[i].dataset.id)) {\n shouldAdd = false;\n }\n }\n if (shouldAdd) {\n if (currentNodes.length === 0) {\n this.main.values.appendChild(this.multipleValue(selectedOptions[d]));\n }\n else if (d === 0) {\n this.main.values.insertBefore(this.multipleValue(selectedOptions[d]), currentNodes[d]);\n }\n else {\n currentNodes[d - 1].insertAdjacentElement('afterend', this.multipleValue(selectedOptions[d]));\n }\n }\n }\n }\n multipleValue(option) {\n const value = document.createElement('div');\n value.classList.add(this.classes.value);\n value.dataset.id = option.id;\n const text = document.createElement('div');\n text.classList.add(this.classes.valueText);\n text.innerHTML = option.text;\n value.appendChild(text);\n if (!option.mandatory) {\n const deleteDiv = document.createElement('div');\n deleteDiv.classList.add(this.classes.valueDelete);\n deleteDiv.onclick = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (this.settings.disabled) {\n return;\n }\n let shouldDelete = true;\n const before = this.store.getSelectedOptions();\n const after = before.filter((o) => {\n return o.selected && o.id !== option.id;\n }, true);\n if (this.settings.minSelected && after.length < this.settings.minSelected) {\n return;\n }\n if (this.callbacks.beforeChange) {\n shouldDelete = this.callbacks.beforeChange(after, before) === true;\n }\n if (shouldDelete) {\n let selectedValues = [];\n for (const o of after) {\n if (o instanceof Optgroup) {\n for (const c of o.options) {\n selectedValues.push(c.value);\n }\n }\n if (o instanceof Option) {\n selectedValues.push(o.value);\n }\n }\n this.callbacks.setSelected(selectedValues, false);\n if (this.settings.closeOnSelect) {\n this.callbacks.close();\n }\n if (this.callbacks.afterChange) {\n this.callbacks.afterChange(after);\n }\n }\n };\n const deleteSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n deleteSvg.setAttribute('viewBox', '0 0 100 100');\n const deletePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n deletePath.setAttribute('d', this.classes.optionDelete);\n deleteSvg.appendChild(deletePath);\n deleteDiv.appendChild(deleteSvg);\n value.appendChild(deleteDiv);\n }\n return value;\n }\n contentDiv() {\n const main = document.createElement('div');\n main.dataset.id = this.settings.id;\n main.id = this.settings.id;\n const search = this.searchDiv();\n main.appendChild(search.main);\n const list = this.listDiv();\n main.appendChild(list);\n return {\n main: main,\n search: search,\n list: list,\n };\n }\n moveContent() {\n if (this.settings.contentPosition === 'relative') {\n this.moveContentBelow();\n return;\n }\n if (this.settings.openPosition === 'down') {\n this.moveContentBelow();\n return;\n }\n else if (this.settings.openPosition === 'up') {\n this.moveContentAbove();\n return;\n }\n if (this.putContent() === 'up') {\n this.moveContentAbove();\n }\n else {\n this.moveContentBelow();\n }\n }\n searchDiv() {\n const main = document.createElement('div');\n const input = document.createElement('input');\n const addable = document.createElement('div');\n main.classList.add(this.classes.search);\n const searchReturn = {\n main,\n input,\n };\n if (!this.settings.showSearch) {\n main.classList.add(this.classes.hide);\n input.readOnly = true;\n }\n input.type = 'search';\n input.placeholder = this.settings.searchPlaceholder;\n input.tabIndex = -1;\n input.setAttribute('aria-label', this.settings.searchPlaceholder);\n input.setAttribute('autocapitalize', 'off');\n input.setAttribute('autocomplete', 'off');\n input.setAttribute('autocorrect', 'off');\n input.oninput = debounce((e) => {\n this.callbacks.search(e.target.value);\n }, 100);\n input.onkeydown = (e) => {\n switch (e.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n e.key === 'ArrowDown' ? this.highlight('down') : this.highlight('up');\n return false;\n case 'Tab':\n this.callbacks.close();\n return true;\n case 'Escape':\n this.callbacks.close();\n return false;\n case 'Enter':\n case ' ':\n if (this.callbacks.addable && e.ctrlKey) {\n addable.click();\n return false;\n }\n else {\n const highlighted = this.content.list.querySelector('.' + this.classes.highlighted);\n if (highlighted) {\n highlighted.click();\n return false;\n }\n }\n return true;\n }\n };\n main.appendChild(input);\n if (this.callbacks.addable) {\n addable.classList.add(this.classes.addable);\n const plus = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n plus.setAttribute('viewBox', '0 0 100 100');\n const plusPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n plusPath.setAttribute('d', this.classes.addablePath);\n plus.appendChild(plusPath);\n addable.appendChild(plus);\n addable.onclick = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!this.callbacks.addable) {\n return;\n }\n const inputValue = this.content.search.input.value.trim();\n if (inputValue === '') {\n this.content.search.input.focus();\n return;\n }\n const runFinish = (oo) => {\n let newOption = new Option(oo);\n this.callbacks.addOption(newOption);\n if (this.settings.isMultiple) {\n let values = this.store.getSelected();\n values.push(newOption.value);\n this.callbacks.setSelected(values, true);\n }\n else {\n this.callbacks.setSelected([newOption.value], true);\n }\n this.callbacks.search('');\n if (this.settings.closeOnSelect) {\n setTimeout(() => {\n this.callbacks.close();\n }, 100);\n }\n };\n const addableValue = this.callbacks.addable(inputValue);\n if (addableValue instanceof Promise) {\n addableValue.then((value) => {\n if (typeof value === 'string') {\n runFinish({\n text: value,\n value: value,\n });\n }\n else {\n runFinish(value);\n }\n });\n }\n else if (typeof addableValue === 'string') {\n runFinish({\n text: addableValue,\n value: addableValue,\n });\n }\n else {\n runFinish(addableValue);\n }\n return;\n };\n main.appendChild(addable);\n searchReturn.addable = {\n main: addable,\n svg: plus,\n path: plusPath,\n };\n }\n return searchReturn;\n }\n searchFocus() {\n this.content.search.input.focus();\n }\n getOptions(notPlaceholder = false, notDisabled = false, notHidden = false) {\n let query = '.' + this.classes.option;\n if (notPlaceholder) {\n query += ':not(.' + this.classes.placeholder + ')';\n }\n if (notDisabled) {\n query += ':not(.' + this.classes.disabled + ')';\n }\n if (notHidden) {\n query += ':not(.' + this.classes.hide + ')';\n }\n return Array.from(this.content.list.querySelectorAll(query));\n }\n highlight(dir) {\n const options = this.getOptions(true, true, true);\n if (options.length === 0) {\n return;\n }\n if (options.length === 1) {\n if (!options[0].classList.contains(this.classes.highlighted)) {\n options[0].classList.add(this.classes.highlighted);\n return;\n }\n }\n for (let i = 0; i < options.length; i++) {\n if (options[i].classList.contains(this.classes.highlighted)) {\n const prevOption = options[i];\n prevOption.classList.remove(this.classes.highlighted);\n const prevParent = prevOption.parentElement;\n if (prevParent && prevParent.classList.contains(this.classes.open)) {\n const optgroupLabel = prevParent.querySelector('.' + this.classes.optgroupLabel);\n if (optgroupLabel) {\n optgroupLabel.click();\n }\n }\n let selectOption = options[dir === 'down' ? (i + 1 < options.length ? i + 1 : 0) : i - 1 >= 0 ? i - 1 : options.length - 1];\n selectOption.classList.add(this.classes.highlighted);\n this.ensureElementInView(this.content.list, selectOption);\n const selectParent = selectOption.parentElement;\n if (selectParent && selectParent.classList.contains(this.classes.close)) {\n const optgroupLabel = selectParent.querySelector('.' + this.classes.optgroupLabel);\n if (optgroupLabel) {\n optgroupLabel.click();\n }\n }\n return;\n }\n }\n options[dir === 'down' ? 0 : options.length - 1].classList.add(this.classes.highlighted);\n this.ensureElementInView(this.content.list, options[dir === 'down' ? 0 : options.length - 1]);\n }\n listDiv() {\n const options = document.createElement('div');\n options.classList.add(this.classes.list);\n return options;\n }\n renderError(error) {\n this.content.list.innerHTML = '';\n const errorDiv = document.createElement('div');\n errorDiv.classList.add(this.classes.error);\n errorDiv.textContent = error;\n this.content.list.appendChild(errorDiv);\n }\n renderSearching() {\n this.content.list.innerHTML = '';\n const searchingDiv = document.createElement('div');\n searchingDiv.classList.add(this.classes.searching);\n searchingDiv.textContent = this.settings.searchingText;\n this.content.list.appendChild(searchingDiv);\n }\n renderOptions(data) {\n this.content.list.innerHTML = '';\n if (data.length === 0) {\n const noResults = document.createElement('div');\n noResults.classList.add(this.classes.search);\n noResults.innerHTML = this.settings.searchText;\n this.content.list.appendChild(noResults);\n return;\n }\n for (const d of data) {\n if (d instanceof Optgroup) {\n const optgroupEl = document.createElement('div');\n optgroupEl.classList.add(this.classes.optgroup);\n const optgroupLabel = document.createElement('div');\n optgroupLabel.classList.add(this.classes.optgroupLabel);\n optgroupEl.appendChild(optgroupLabel);\n const optgroupLabelText = document.createElement('div');\n optgroupLabelText.classList.add(this.classes.optgroupLabelText);\n optgroupLabelText.textContent = d.label;\n optgroupLabel.appendChild(optgroupLabelText);\n const optgroupActions = document.createElement('div');\n optgroupActions.classList.add(this.classes.optgroupActions);\n optgroupLabel.appendChild(optgroupActions);\n if (this.settings.isMultiple && d.selectAll) {\n const selectAll = document.createElement('div');\n selectAll.classList.add(this.classes.optgroupSelectAll);\n let allSelected = true;\n for (const o of d.options) {\n if (!o.selected) {\n allSelected = false;\n break;\n }\n }\n if (allSelected) {\n selectAll.classList.add(this.classes.selected);\n }\n const selectAllText = document.createElement('span');\n selectAllText.textContent = 'Select All';\n selectAll.appendChild(selectAllText);\n const selectAllSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n selectAllSvg.setAttribute('viewBox', '0 0 100 100');\n selectAll.appendChild(selectAllSvg);\n const selectAllBox = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n selectAllBox.setAttribute('d', this.classes.optgroupSelectAllBox);\n selectAllSvg.appendChild(selectAllBox);\n const selectAllCheck = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n selectAllCheck.setAttribute('d', this.classes.optgroupSelectAllCheck);\n selectAllSvg.appendChild(selectAllCheck);\n selectAll.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n const currentSelected = this.store.getSelected();\n if (allSelected) {\n const newSelected = currentSelected.filter((s) => {\n for (const o of d.options) {\n if (s === o.value) {\n return false;\n }\n }\n return true;\n });\n this.callbacks.setSelected(newSelected, true);\n return;\n }\n else {\n const newSelected = currentSelected.concat(d.options.map((o) => o.value));\n this.callbacks.setSelected(newSelected, true);\n }\n });\n optgroupActions.appendChild(selectAll);\n }\n if (d.closable !== 'off') {\n const optgroupClosable = document.createElement('div');\n optgroupClosable.classList.add(this.classes.optgroupClosable);\n const optgroupClosableSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n optgroupClosableSvg.setAttribute('viewBox', '0 0 100 100');\n optgroupClosableSvg.classList.add(this.classes.arrow);\n optgroupClosable.appendChild(optgroupClosableSvg);\n const optgroupClosableArrow = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n optgroupClosableSvg.appendChild(optgroupClosableArrow);\n if (d.options.some((o) => o.selected) || this.content.search.input.value.trim() !== '') {\n optgroupClosable.classList.add(this.classes.open);\n optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);\n }\n else if (d.closable === 'open') {\n optgroupEl.classList.add(this.classes.open);\n optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);\n }\n else if (d.closable === 'close') {\n optgroupEl.classList.add(this.classes.close);\n optgroupClosableArrow.setAttribute('d', this.classes.arrowClose);\n }\n optgroupLabel.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (optgroupEl.classList.contains(this.classes.close)) {\n optgroupEl.classList.remove(this.classes.close);\n optgroupEl.classList.add(this.classes.open);\n optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);\n }\n else {\n optgroupEl.classList.remove(this.classes.open);\n optgroupEl.classList.add(this.classes.close);\n optgroupClosableArrow.setAttribute('d', this.classes.arrowClose);\n }\n });\n optgroupActions.appendChild(optgroupClosable);\n }\n optgroupEl.appendChild(optgroupLabel);\n for (const o of d.options) {\n optgroupEl.appendChild(this.option(o));\n }\n this.content.list.appendChild(optgroupEl);\n }\n if (d instanceof Option) {\n this.content.list.appendChild(this.option(d));\n }\n }\n }\n option(option) {\n if (option.placeholder) {\n const placeholder = document.createElement('div');\n placeholder.classList.add(this.classes.option);\n placeholder.classList.add(this.classes.hide);\n return placeholder;\n }\n const optionEl = document.createElement('div');\n optionEl.dataset.id = option.id;\n optionEl.id = option.id;\n optionEl.classList.add(this.classes.option);\n optionEl.setAttribute('role', 'option');\n if (option.class) {\n option.class.split(' ').forEach((dataClass) => {\n optionEl.classList.add(dataClass);\n });\n }\n if (option.style) {\n optionEl.style.cssText = option.style;\n }\n if (this.settings.searchHighlight && this.content.search.input.value.trim() !== '') {\n optionEl.innerHTML = this.highlightText(option.html !== '' ? option.html : option.text, this.content.search.input.value, this.classes.searchHighlighter);\n }\n else if (option.html !== '') {\n optionEl.innerHTML = option.html;\n }\n else {\n optionEl.textContent = option.text;\n }\n if (this.settings.showOptionTooltips && optionEl.textContent) {\n optionEl.setAttribute('title', optionEl.textContent);\n }\n if (!option.display) {\n optionEl.classList.add(this.classes.hide);\n }\n if (option.disabled) {\n optionEl.classList.add(this.classes.disabled);\n }\n if (option.selected && this.settings.hideSelected) {\n optionEl.classList.add(this.classes.hide);\n }\n if (option.selected) {\n optionEl.classList.add(this.classes.selected);\n optionEl.setAttribute('aria-selected', 'true');\n this.main.main.setAttribute('aria-activedescendant', optionEl.id);\n }\n else {\n optionEl.classList.remove(this.classes.selected);\n optionEl.setAttribute('aria-selected', 'false');\n }\n optionEl.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n const selectedOptions = this.store.getSelected();\n const element = e.currentTarget;\n const elementID = String(element.dataset.id);\n if (option.disabled || (option.selected && !this.settings.allowDeselect)) {\n return;\n }\n if ((this.settings.isMultiple && this.settings.maxSelected <= selectedOptions.length && !option.selected) ||\n (this.settings.isMultiple && this.settings.minSelected >= selectedOptions.length && option.selected)) {\n return;\n }\n let shouldUpdate = false;\n const before = this.store.getSelectedOptions();\n let after = [];\n if (this.settings.isMultiple) {\n if (option.selected) {\n after = before.filter((o) => o.id !== elementID);\n }\n else {\n after = before.concat(option);\n }\n }\n if (!this.settings.isMultiple) {\n if (option.selected) {\n after = [];\n }\n else {\n after = [option];\n }\n }\n if (!this.callbacks.beforeChange) {\n shouldUpdate = true;\n }\n if (this.callbacks.beforeChange) {\n if (this.callbacks.beforeChange(after, before) === false) {\n shouldUpdate = false;\n }\n else {\n shouldUpdate = true;\n }\n }\n if (shouldUpdate) {\n if (!this.store.getOptionByID(elementID)) {\n this.callbacks.addOption(option);\n }\n this.callbacks.setSelected(after.map((o) => o.value), false);\n if (this.settings.closeOnSelect) {\n this.callbacks.close();\n }\n if (this.callbacks.afterChange) {\n this.callbacks.afterChange(after);\n }\n }\n });\n return optionEl;\n }\n destroy() {\n this.main.main.remove();\n this.content.main.remove();\n }\n highlightText(str, search, className) {\n let completedString = str;\n const regex = new RegExp('(' + search.trim() + ')(?![^<]*>[^<>]*${originalTextFoundByRegex}`);\n return completedString;\n }\n moveContentAbove() {\n const mainHeight = this.main.main.offsetHeight;\n const contentHeight = this.content.main.offsetHeight;\n this.main.main.classList.remove(this.classes.openBelow);\n this.main.main.classList.add(this.classes.openAbove);\n this.content.main.classList.remove(this.classes.openBelow);\n this.content.main.classList.add(this.classes.openAbove);\n const containerRect = this.main.main.getBoundingClientRect();\n this.content.main.style.margin = '-' + (mainHeight + contentHeight - 1) + 'px 0px 0px 0px';\n this.content.main.style.top = containerRect.top + containerRect.height + window.scrollY + 'px';\n this.content.main.style.left = containerRect.left + window.scrollX + 'px';\n this.content.main.style.width = containerRect.width + 'px';\n }\n moveContentBelow() {\n this.main.main.classList.remove(this.classes.openAbove);\n this.main.main.classList.add(this.classes.openBelow);\n this.content.main.classList.remove(this.classes.openAbove);\n this.content.main.classList.add(this.classes.openBelow);\n const containerRect = this.main.main.getBoundingClientRect();\n this.content.main.style.margin = '-1px 0px 0px 0px';\n if (this.settings.contentPosition !== 'relative') {\n this.content.main.style.top = containerRect.top + containerRect.height + window.scrollY + 'px';\n this.content.main.style.left = containerRect.left + window.scrollX + 'px';\n this.content.main.style.width = containerRect.width + 'px';\n }\n }\n ensureElementInView(container, element) {\n const cTop = container.scrollTop + container.offsetTop;\n const cBottom = cTop + container.clientHeight;\n const eTop = element.offsetTop;\n const eBottom = eTop + element.clientHeight;\n if (eTop < cTop) {\n container.scrollTop -= cTop - eTop;\n }\n else if (eBottom > cBottom) {\n container.scrollTop += eBottom - cBottom;\n }\n }\n putContent() {\n const mainHeight = this.main.main.offsetHeight;\n const mainRect = this.main.main.getBoundingClientRect();\n const contentHeight = this.content.main.offsetHeight;\n const spaceBelow = window.innerHeight - (mainRect.top + mainHeight);\n if (spaceBelow <= contentHeight) {\n if (mainRect.top > contentHeight) {\n return 'up';\n }\n else {\n return 'down';\n }\n }\n return 'down';\n }\n}\n\nclass Select {\n constructor(select) {\n this.listen = false;\n this.observer = null;\n this.select = select;\n this.select.addEventListener('change', this.valueChange.bind(this), {\n passive: true,\n });\n this.observer = new MutationObserver(this.observeCall.bind(this));\n this.changeListen(true);\n }\n enable() {\n this.select.disabled = false;\n }\n disable() {\n this.select.disabled = true;\n }\n hideUI() {\n this.select.tabIndex = -1;\n this.select.style.display = 'none';\n this.select.setAttribute('aria-hidden', 'true');\n }\n showUI() {\n this.select.removeAttribute('tabindex');\n this.select.style.display = '';\n this.select.removeAttribute('aria-hidden');\n }\n changeListen(listen) {\n this.listen = listen;\n if (listen) {\n if (this.observer) {\n this.observer.observe(this.select, {\n subtree: true,\n childList: true,\n attributes: true,\n });\n }\n }\n if (!listen) {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n }\n valueChange(ev) {\n if (this.listen && this.onValueChange) {\n this.onValueChange(this.getSelectedValues());\n }\n return true;\n }\n observeCall(mutations) {\n if (!this.listen) {\n return;\n }\n let classChanged = false;\n let disabledChanged = false;\n let optgroupOptionChanged = false;\n for (const m of mutations) {\n if (m.target === this.select) {\n if (m.attributeName === 'disabled') {\n disabledChanged = true;\n }\n if (m.attributeName === 'class') {\n classChanged = true;\n }\n }\n if (m.target.nodeName === 'OPTGROUP' || m.target.nodeName === 'OPTION') {\n optgroupOptionChanged = true;\n }\n }\n if (classChanged && this.onClassChange) {\n this.onClassChange(this.select.className.split(' '));\n }\n if (disabledChanged && this.onDisabledChange) {\n this.changeListen(false);\n this.onDisabledChange(this.select.disabled);\n this.changeListen(true);\n }\n if (optgroupOptionChanged && this.onOptionsChange) {\n this.changeListen(false);\n this.onOptionsChange(this.getData());\n this.changeListen(true);\n }\n }\n getData() {\n let data = [];\n const nodes = this.select.childNodes;\n for (const n of nodes) {\n if (n.nodeName === 'OPTGROUP') {\n data.push(this.getDataFromOptgroup(n));\n }\n if (n.nodeName === 'OPTION') {\n data.push(this.getDataFromOption(n));\n }\n }\n return data;\n }\n getDataFromOptgroup(optgroup) {\n let data = {\n id: optgroup.id,\n label: optgroup.label,\n selectAll: optgroup.dataset ? optgroup.dataset.selectall === 'true' : false,\n closable: optgroup.dataset ? optgroup.dataset.closable : 'off',\n options: [],\n };\n const options = optgroup.childNodes;\n for (const o of options) {\n if (o.nodeName === 'OPTION') {\n data.options.push(this.getDataFromOption(o));\n }\n }\n return data;\n }\n getDataFromOption(option) {\n return {\n id: option.id,\n value: option.value,\n text: option.text,\n html: option.dataset && option.dataset.html ? option.dataset.html : '',\n selected: option.selected,\n display: option.style.display === 'none' ? false : true,\n disabled: option.disabled,\n mandatory: option.dataset ? option.dataset.mandatory === 'true' : false,\n placeholder: option.dataset.placeholder === 'true',\n class: option.className,\n style: option.style.cssText,\n data: option.dataset,\n };\n }\n getSelectedValues() {\n let values = [];\n const options = this.select.childNodes;\n for (const o of options) {\n if (o.nodeName === 'OPTGROUP') {\n const optgroupOptions = o.childNodes;\n for (const oo of optgroupOptions) {\n if (oo.nodeName === 'OPTION') {\n const option = oo;\n if (option.selected) {\n values.push(option.value);\n }\n }\n }\n }\n if (o.nodeName === 'OPTION') {\n const option = o;\n if (option.selected) {\n values.push(option.value);\n }\n }\n }\n return values;\n }\n setSelected(value) {\n this.changeListen(false);\n const options = this.select.childNodes;\n for (const o of options) {\n if (o.nodeName === 'OPTGROUP') {\n const optgroup = o;\n const optgroupOptions = optgroup.childNodes;\n for (const oo of optgroupOptions) {\n if (oo.nodeName === 'OPTION') {\n const option = oo;\n option.selected = value.includes(option.value);\n }\n }\n }\n if (o.nodeName === 'OPTION') {\n const option = o;\n option.selected = value.includes(option.value);\n }\n }\n this.changeListen(true);\n }\n updateSelect(id, style, classes) {\n this.changeListen(false);\n if (id) {\n this.select.dataset.id = id;\n }\n if (style) {\n this.select.style.cssText = style;\n }\n if (classes) {\n this.select.className = '';\n classes.forEach((c) => {\n if (c.trim() !== '') {\n this.select.classList.add(c.trim());\n }\n });\n }\n this.changeListen(true);\n }\n updateOptions(data) {\n this.changeListen(false);\n this.select.innerHTML = '';\n for (const d of data) {\n if (d instanceof Optgroup) {\n this.select.appendChild(this.createOptgroup(d));\n }\n if (d instanceof Option) {\n this.select.appendChild(this.createOption(d));\n }\n }\n this.select.dispatchEvent(new Event('change'));\n this.changeListen(true);\n }\n createOptgroup(optgroup) {\n const optgroupEl = document.createElement('optgroup');\n optgroupEl.id = optgroup.id;\n optgroupEl.label = optgroup.label;\n if (optgroup.selectAll) {\n optgroupEl.dataset.selectAll = 'true';\n }\n if (optgroup.closable !== 'off') {\n optgroupEl.dataset.closable = optgroup.closable;\n }\n if (optgroup.options) {\n for (const o of optgroup.options) {\n optgroupEl.appendChild(this.createOption(o));\n }\n }\n return optgroupEl;\n }\n createOption(info) {\n const optionEl = document.createElement('option');\n optionEl.id = info.id;\n optionEl.value = info.value;\n optionEl.innerHTML = info.text;\n if (info.html !== '') {\n optionEl.setAttribute('data-html', info.html);\n }\n if (info.selected) {\n optionEl.selected = info.selected;\n }\n if (info.disabled) {\n optionEl.disabled = true;\n }\n if (info.display === false) {\n optionEl.style.display = 'none';\n }\n if (info.placeholder) {\n optionEl.setAttribute('data-placeholder', 'true');\n }\n if (info.mandatory) {\n optionEl.setAttribute('data-mandatory', 'true');\n }\n if (info.class) {\n info.class.split(' ').forEach((optionClass) => {\n optionEl.classList.add(optionClass);\n });\n }\n if (info.data && typeof info.data === 'object') {\n Object.keys(info.data).forEach((key) => {\n optionEl.setAttribute('data-' + kebabCase(key), info.data[key]);\n });\n }\n return optionEl;\n }\n destroy() {\n this.changeListen(false);\n this.select.removeEventListener('change', this.valueChange.bind(this));\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n delete this.select.dataset.id;\n this.showUI();\n }\n}\n\nclass SlimSelect {\n constructor(config) {\n var _a;\n this.events = {\n search: undefined,\n searchFilter: (opt, search) => {\n return opt.text.toLowerCase().indexOf(search.toLowerCase()) !== -1;\n },\n addable: undefined,\n beforeChange: undefined,\n afterChange: undefined,\n beforeOpen: undefined,\n afterOpen: undefined,\n beforeClose: undefined,\n afterClose: undefined,\n };\n this.windowResize = debounce(() => {\n if (!this.settings.isOpen && !this.settings.isFullOpen) {\n return;\n }\n this.render.moveContent();\n });\n this.windowScroll = debounce(() => {\n if (!this.settings.isOpen && !this.settings.isFullOpen) {\n return;\n }\n this.render.moveContent();\n });\n this.documentClick = (e) => {\n if (!this.settings.isOpen) {\n return;\n }\n if (e.target && !hasClassInTree(e.target, this.settings.id)) {\n this.close(e.type);\n }\n };\n this.windowVisibilityChange = () => {\n if (document.hidden) {\n this.close();\n }\n };\n this.selectEl = (typeof config.select === 'string' ? document.querySelector(config.select) : config.select);\n if (!this.selectEl) {\n if (config.events && config.events.error) {\n config.events.error(new Error('Could not find select element'));\n }\n return;\n }\n if (this.selectEl.tagName !== 'SELECT') {\n if (config.events && config.events.error) {\n config.events.error(new Error('Element isnt of type select'));\n }\n return;\n }\n if (this.selectEl.dataset.ssid) {\n this.destroy();\n }\n this.settings = new Settings(config.settings);\n const debounceEvents = ['afterChange', 'beforeOpen', 'afterOpen', 'beforeClose', 'afterClose'];\n for (const key in config.events) {\n if (!config.events.hasOwnProperty(key)) {\n continue;\n }\n if (debounceEvents.indexOf(key) !== -1) {\n this.events[key] = debounce(config.events[key], 100);\n }\n else {\n this.events[key] = config.events[key];\n }\n }\n this.settings.disabled = ((_a = config.settings) === null || _a === void 0 ? void 0 : _a.disabled) ? config.settings.disabled : this.selectEl.disabled;\n this.settings.isMultiple = this.selectEl.multiple;\n this.settings.style = this.selectEl.style.cssText;\n this.settings.class = this.selectEl.className.split(' ');\n this.select = new Select(this.selectEl);\n this.select.updateSelect(this.settings.id, this.settings.style, this.settings.class);\n this.select.hideUI();\n this.select.onValueChange = (values) => {\n this.setSelected(values);\n };\n this.select.onClassChange = (classes) => {\n this.settings.class = classes;\n this.render.updateClassStyles();\n };\n this.select.onDisabledChange = (disabled) => {\n if (disabled) {\n this.disable();\n }\n else {\n this.enable();\n }\n };\n this.select.onOptionsChange = (data) => {\n this.setData(data);\n };\n this.store = new Store(this.settings.isMultiple ? 'multiple' : 'single', config.data ? config.data : this.select.getData());\n if (config.data) {\n this.select.updateOptions(this.store.getData());\n }\n const callbacks = {\n open: this.open.bind(this),\n close: this.close.bind(this),\n addable: this.events.addable ? this.events.addable : undefined,\n setSelected: this.setSelected.bind(this),\n addOption: this.addOption.bind(this),\n search: this.search.bind(this),\n beforeChange: this.events.beforeChange,\n afterChange: this.events.afterChange,\n };\n this.render = new Render(this.settings, this.store, callbacks);\n this.render.renderValues();\n this.render.renderOptions(this.store.getData());\n const selectAriaLabel = this.selectEl.getAttribute('aria-label');\n const selectAriaLabelledBy = this.selectEl.getAttribute('aria-labelledby');\n if (selectAriaLabel) {\n this.render.main.main.setAttribute('aria-label', selectAriaLabel);\n }\n else if (selectAriaLabelledBy) {\n this.render.main.main.setAttribute('aria-labelledby', selectAriaLabelledBy);\n }\n if (this.selectEl.parentNode) {\n this.selectEl.parentNode.insertBefore(this.render.main.main, this.selectEl.nextSibling);\n }\n document.addEventListener('click', this.documentClick);\n window.addEventListener('resize', this.windowResize, false);\n if (this.settings.openPosition === 'auto') {\n window.addEventListener('scroll', this.windowScroll, false);\n }\n document.addEventListener('visibilitychange', this.windowVisibilityChange);\n if (this.settings.disabled) {\n this.disable();\n }\n if (this.settings.alwaysOpen) {\n this.open();\n }\n this.selectEl.slim = this;\n }\n enable() {\n this.settings.disabled = false;\n this.select.enable();\n this.render.enable();\n }\n disable() {\n this.settings.disabled = true;\n this.select.disable();\n this.render.disable();\n }\n getData() {\n return this.store.getData();\n }\n setData(data) {\n const selected = this.store.getSelected();\n const err = this.store.validateDataArray(data);\n if (err) {\n if (this.events.error) {\n this.events.error(err);\n }\n return;\n }\n this.store.setData(data);\n const dataClean = this.store.getData();\n this.select.updateOptions(dataClean);\n this.render.renderValues();\n this.render.renderOptions(dataClean);\n if (this.events.afterChange && !isEqual(selected, this.store.getSelected())) {\n this.events.afterChange(this.store.getSelectedOptions());\n }\n }\n getSelected() {\n return this.store.getSelected();\n }\n setSelected(value, runAfterChange = true) {\n const selected = this.store.getSelected();\n this.store.setSelectedBy('value', Array.isArray(value) ? value : [value]);\n const data = this.store.getData();\n this.select.updateOptions(data);\n this.render.renderValues();\n if (this.render.content.search.input.value !== '') {\n this.search(this.render.content.search.input.value);\n }\n else {\n this.render.renderOptions(data);\n }\n if (runAfterChange && this.events.afterChange && !isEqual(selected, this.store.getSelected())) {\n this.events.afterChange(this.store.getSelectedOptions());\n }\n }\n addOption(option) {\n const selected = this.store.getSelected();\n if (!this.store.getDataOptions().some((o) => { var _a; return o.value === ((_a = option.value) !== null && _a !== void 0 ? _a : option.text); })) {\n this.store.addOption(option);\n }\n const data = this.store.getData();\n this.select.updateOptions(data);\n this.render.renderValues();\n this.render.renderOptions(data);\n if (this.events.afterChange && !isEqual(selected, this.store.getSelected())) {\n this.events.afterChange(this.store.getSelectedOptions());\n }\n }\n open() {\n if (this.settings.disabled || this.settings.isOpen) {\n return;\n }\n if (this.events.beforeOpen) {\n this.events.beforeOpen();\n }\n this.render.open();\n if (this.settings.showSearch) {\n this.render.searchFocus();\n }\n this.settings.isOpen = true;\n setTimeout(() => {\n if (this.events.afterOpen) {\n this.events.afterOpen();\n }\n if (this.settings.isOpen) {\n this.settings.isFullOpen = true;\n }\n }, this.settings.timeoutDelay);\n if (this.settings.contentPosition === 'absolute') {\n if (this.settings.intervalMove) {\n clearInterval(this.settings.intervalMove);\n }\n this.settings.intervalMove = setInterval(this.render.moveContent.bind(this.render), 500);\n }\n }\n close(eventType = null) {\n if (!this.settings.isOpen || this.settings.alwaysOpen) {\n return;\n }\n if (this.events.beforeClose) {\n this.events.beforeClose();\n }\n this.render.close();\n if (this.render.content.search.input.value !== '') {\n this.search('');\n }\n this.render.mainFocus(eventType);\n this.settings.isOpen = false;\n this.settings.isFullOpen = false;\n setTimeout(() => {\n if (this.events.afterClose) {\n this.events.afterClose();\n }\n }, this.settings.timeoutDelay);\n if (this.settings.intervalMove) {\n clearInterval(this.settings.intervalMove);\n }\n }\n search(value) {\n if (this.render.content.search.input.value !== value) {\n this.render.content.search.input.value = value;\n }\n if (!this.events.search) {\n this.render.renderOptions(value === '' ? this.store.getData() : this.store.search(value, this.events.searchFilter));\n return;\n }\n this.render.renderSearching();\n const searchResp = this.events.search(value, this.store.getSelectedOptions());\n if (searchResp instanceof Promise) {\n searchResp\n .then((data) => {\n this.render.renderOptions(this.store.partialToFullData(data));\n })\n .catch((err) => {\n this.render.renderError(typeof err === 'string' ? err : err.message);\n });\n return;\n }\n else if (Array.isArray(searchResp)) {\n this.render.renderOptions(this.store.partialToFullData(searchResp));\n }\n else {\n this.render.renderError('Search event must return a promise or an array of data');\n }\n }\n destroy() {\n document.removeEventListener('click', this.documentClick);\n window.removeEventListener('resize', this.windowResize, false);\n if (this.settings.openPosition === 'auto') {\n window.removeEventListener('scroll', this.windowScroll, false);\n }\n document.removeEventListener('visibilitychange', this.windowVisibilityChange);\n this.store.setData([]);\n this.render.destroy();\n this.select.destroy();\n }\n}\n\nexport { SlimSelect as default };\n"],"names":["easeInOutQuad","t","b","c","d","_typeof","Symbol","iterator","obj","constructor","prototype","element","start","stop","offset","easing","a11y","distance","duration","timeStart","timeElapsed","next","callback","location","window","scrollY","pageYOffset","top","getBoundingClientRect","loop","timeCurrent","scrollTo","requestAnimationFrame","setAttribute","focus","target","options","arguments","length","undefined","document","querySelector","jumper","module","exports","getRawTag","objectToString","symToStringTag","toStringTag","value","Object","trimmedEndIndex","reTrimStart","string","slice","replace","freeGlobal","g","objectProto","hasOwnProperty","nativeObjectToString","toString","isOwn","call","tag","unmasked","e","result","freeSelf","self","root","Function","reWhitespace","index","test","charAt","isObject","now","toNumber","nativeMax","Math","max","nativeMin","min","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","apply","leadingEdge","setTimeout","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","this","clearTimeout","cancel","flush","type","baseGetTag","isObjectLike","Date","debounce","baseTrim","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","other","valueOf","isBinary","generateID","random","substring","immediate","timeout","context","callNow","isEqual","a","JSON","stringify","Settings","settings","id","style","class","isMultiple","isOpen","isFullOpen","intervalMove","disabled","alwaysOpen","showSearch","searchPlaceholder","searchText","searchingText","searchHighlight","closeOnSelect","contentLocation","body","contentPosition","openPosition","placeholderText","allowDeselect","hideSelected","showOptionTooltips","minSelected","maxSelected","timeoutDelay","maxValuesShown","maxValuesMessage","Optgroup","optgroup","label","selectAll","closable","o","push","Option","option","text","html","selected","display","mandatory","placeholder","data","Store","selectType","setData","validateDataArray","Array","isArray","Error","dataObj","validateOption","partialToFullData","dataFinal","forEach","optOptions","setSelectedBy","getSelected","getData","filter","getDataOptions","addOption","concat","selectedType","selectedValues","firstOption","hasSelected","includes","selectedOptions","getSelectedOptions","opt","getSelectedIDs","selectedIDs","op","getOptgroupByID","getOptionByID","search","searchFilter","trim","includeOptgroup","dataSearch","Render","store","callbacks","classes","main","values","single","valueText","valueDelete","valueOut","deselect","deselectPath","arrow","arrowClose","arrowOpen","content","openAbove","openBelow","searchHighlighter","searching","addable","addablePath","list","optgroupLabel","optgroupLabelText","optgroupActions","optgroupSelectAll","optgroupSelectAllBox","optgroupSelectAllCheck","optgroupClosable","optionDelete","highlighted","open","close","error","hide","mainDiv","contentDiv","updateClassStyles","updateAriaAttributes","appendChild","enable","classList","remove","input","disable","add","path","moveContent","selectedId","selectedOption","ensureElementInView","className","removeAttribute","cssText","role","createElement","dataset","tabIndex","onkeydown","key","highlight","click","onclick","stopPropagation","shouldDelete","before","after","beforeChange","setSelected","afterChange","deselectSvg","createElementNS","arrowPath","svg","mainFocus","eventType","preventScroll","placeholderOption","innerHTML","renderValues","renderMultipleValues","renderSingleValue","selectedSingle","singleValue","outerHTML","currentNodes","childNodes","textContent","removeNodes","i","node","getAttribute","n","removeChild","shouldAdd","String","multipleValue","insertBefore","insertAdjacentElement","deleteDiv","preventDefault","deleteSvg","deletePath","searchDiv","listDiv","putContent","moveContentAbove","moveContentBelow","searchReturn","readOnly","oninput","ctrlKey","plus","plusPath","inputValue","runFinish","oo","newOption","addableValue","Promise","then","searchFocus","getOptions","notPlaceholder","notDisabled","notHidden","query","from","querySelectorAll","dir","contains","prevOption","prevParent","parentElement","selectOption","selectParent","renderError","errorDiv","renderSearching","searchingDiv","renderOptions","noResults","optgroupEl","allSelected","selectAllText","selectAllSvg","selectAllBox","selectAllCheck","addEventListener","currentSelected","newSelected","s","map","optgroupClosableSvg","optgroupClosableArrow","some","optionEl","split","dataClass","highlightText","currentTarget","elementID","shouldUpdate","destroy","str","completedString","regex","RegExp","match","matchStartPosition","matchEndPosition","originalTextFoundByRegex","mainHeight","offsetHeight","contentHeight","containerRect","margin","height","left","scrollX","width","container","cTop","scrollTop","offsetTop","cBottom","clientHeight","eTop","eBottom","mainRect","innerHeight","Select","select","listen","observer","valueChange","bind","passive","MutationObserver","observeCall","changeListen","hideUI","showUI","observe","subtree","childList","attributes","disconnect","ev","onValueChange","getSelectedValues","mutations","classChanged","disabledChanged","optgroupOptionChanged","m","attributeName","nodeName","onClassChange","onDisabledChange","onOptionsChange","nodes","getDataFromOptgroup","getDataFromOption","selectall","optgroupOptions","updateSelect","updateOptions","createOptgroup","createOption","dispatchEvent","Event","info","optionClass","keys","toLowerCase","toUpperCase","kebabCase","removeEventListener","SlimSelect","config","_a","events","indexOf","beforeOpen","afterOpen","beforeClose","afterClose","windowResize","render","windowScroll","documentClick","hasClass","parentByClass","parentNode","hasClassInTree","windowVisibilityChange","hidden","selectEl","tagName","ssid","debounceEvents","multiple","selectAriaLabel","selectAriaLabelledBy","nextSibling","slim","err","dataClean","runAfterChange","clearInterval","setInterval","searchResp","catch","message"],"sourceRoot":""}