{"version":3,"file":"822.js","mappings":"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ACpBA,GAAK,IAAUA,GAAK,IACf,KAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,GACM,KAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACCA,GAAK,KAAUA,GAAK,KACf,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACM,MAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACM,OAANA,GACM,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,KACf,OAANA,GACM,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACpBA,GAAK,MAAUA,GAAK,MACf,OAANA,GACCA,GAAK,MAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACCA,GAAK,OAAUA,GAAK,OACpBA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,OACf,QAANA,GACM,QAANA,GACM,QAANA,GACM,QAANA,GACCA,GAAK,OAAUA,GAAK,ME7uC7B,SAASkyG,GAAcC,GACnBA,EAAItyI,SAAQ,SAAUw2B,GAElB,UADOA,EAAGlb,SACNgsH,EAAgB9wG,IAAOgxG,EAAgBhxG,GACvC,IAAK,IAAI4iE,KAAK5iE,EAAGv7B,eACNu7B,EAAGv7B,QAAQm+F,GAAG99E,SACrB+2H,GAAc77G,EAAGv7B,QAAQm+F,GAAGz/F,YAG3BwtI,EAAgB3wG,IAAOqxG,EAAiBrxG,EAAG0uB,SAG1CkiF,EAAc5wG,IAAO6wG,EAAc7wG,KACzCsxG,EAAmBtxG,EAAG0uB,cAHf1uB,EAAG0uB,MAAM5pC,SAMXssH,EAAapxG,IAClB67G,GAAc77G,EAAGyuG,aAItB,SAASxxH,GAAMxX,EAASwxC,QACd,IAATA,IAAmBA,EAAO,IAC9BA,EAAO,EAAS,CAAEu+F,sBAAsB,EAAMD,qBAAqB,GAAQt+F,GAC3E,IAAI9oC,EAAS,IAAIknI,GAAO5vI,EAASwxC,GAAMh6B,QACvC,GAAI9O,EAAOhE,IAAK,CACZ,IAAIuQ,EAAQqhI,YAAY1L,EAAUliI,EAAOhE,IAAIsxI,OAK7C,MAHA/gI,EAAMoK,SAAW3W,EAAOhE,IAAI2a,SAE5BpK,EAAMshI,gBAAkB7tI,EAAOhE,IAAI1E,QAC7BiV,EAKV,OAHMu8B,MAAAA,OAAmC,EAASA,EAAKglG,kBACnDJ,GAAc1tI,EAAOo+B,KAElBp+B,EAAOo+B,ICrCH,SAAShhC,GAAQsX,EAAIpe,GAChC,IAAIk9C,EAAQl9C,GAAWA,EAAQk9C,MAAQl9C,EAAQk9C,MAAQu6F,GACnDC,EAAa13I,GAAWA,EAAQ03I,WAAa13I,EAAQ03I,WAAaC,GAEtE,OADe33I,GAAWA,EAAQ43I,SAAW53I,EAAQ43I,SAAWC,IAChDz5H,EAAI,CAChB8+B,MAAOA,EACPw6F,WAAYA,IASpB,SAASI,GAAQ15H,EAAI8+B,EAAOw6F,EAAY/4H,GACpC,IAJiBjgB,EAIby+C,EAHa,OADAz+C,EAIUigB,IAHe,iBAAVjgB,GAAuC,kBAAVA,EAG3BigB,EAAM+4H,EAAW/4H,GAC/Co5H,EAAgB76F,EAAMzgC,IAAI0gC,GAK9B,YAJ6B,IAAlB46F,IACPA,EAAgB35H,EAAGlb,KAAKX,KAAMoc,GAC9Bu+B,EAAMnP,IAAIoP,EAAU46F,IAEjBA,EAEX,SAASC,GAAS55H,EAAI8+B,EAAOw6F,GACzB,IAAIj1I,EAAOI,MAAMT,UAAUsC,MAAMxB,KAAKub,UAAW,GAC7C0+B,EAAWu6F,EAAWj1I,GACtBs1I,EAAgB76F,EAAMzgC,IAAI0gC,GAK9B,YAJ6B,IAAlB46F,IACPA,EAAgB35H,EAAG5b,MAAMD,KAAME,GAC/By6C,EAAMnP,IAAIoP,EAAU46F,IAEjBA,EAEX,SAASE,GAAS75H,EAAI9b,EAASs1I,EAAU16F,EAAOg7F,GAC5C,OAAON,EAASp+H,KAAKlX,EAAS8b,EAAI8+B,EAAOg7F,GAE7C,SAASL,GAAgBz5H,EAAIpe,GAEzB,OAAOi4I,GAAS75H,EAAI7b,KADS,IAAd6b,EAAGrd,OAAe+2I,GAAUE,GACPh4I,EAAQk9C,MAAM2sB,SAAU7pE,EAAQ03I,YAWxE,IAAIC,GAAoB,WACpB,OAAOzxI,KAAKC,UAAUsY,YAK1B,SAAS05H,KACL51I,KAAK26C,MAAQ1+C,OAAOqrE,OAAO,MAE/BsuE,GAA4B/1I,UAAUqE,IAAM,SAAUL,GAClD,OAAOA,KAAO7D,KAAK26C,OAEvBi7F,GAA4B/1I,UAAUqa,IAAM,SAAUrW,GAClD,OAAO7D,KAAK26C,MAAM92C,IAEtB+xI,GAA4B/1I,UAAU2rC,IAAM,SAAU3nC,EAAK1H,GACvD6D,KAAK26C,MAAM92C,GAAO1H,GAEtB,ICtEW05I,GDsEPX,GAAe,CACf5tE,OAAQ,WAEJ,OAAO,IAAIsuE,KAGRE,GAAa,CACpBL,SAlCJ,SAA0B55H,EAAIpe,GAC1B,OAAOi4I,GAAS75H,EAAI7b,KAAMy1I,GAAUh4I,EAAQk9C,MAAM2sB,SAAU7pE,EAAQ03I,aAkCpEI,QAhCJ,SAAyB15H,EAAIpe,GACzB,OAAOi4I,GAAS75H,EAAI7b,KAAMu1I,GAAS93I,EAAQk9C,MAAM2sB,SAAU7pE,EAAQ03I,eC9CvE,SAAWU,GAEPA,EAAyB,cAAI,gBAE7BA,EAAyB,cAAI,gBAE7BA,EAA4B,iBAAI,mBANpC,CAOGA,KAAcA,GAAY,KAC7B,ICRWE,GDQPC,GAA6B,SAAUC,GAEvC,SAASD,EAAY90H,EAAKjN,EAAM+gI,GAC5B,IAAIkB,EAAQD,EAAOt1I,KAAKX,KAAMkhB,IAAQlhB,KAGtC,OAFAk2I,EAAMjiI,KAAOA,EACbiiI,EAAMlB,gBAAkBA,EACjBkB,EAKX,OAVAnN,EAAUiN,EAAaC,GAOvBD,EAAYn2I,UAAUC,SAAW,WAC7B,MAAO,oBAAsBE,KAAKiU,KAAO,KAAOjU,KAAKvB,SAElDu3I,EAXqB,CAY9Bn1I,OAEEs1I,GAAmC,SAAUF,GAE7C,SAASE,EAAkBC,EAAYj6I,EAAOsB,EAASu3I,GACnD,OAAOiB,EAAOt1I,KAAKX,KAAM,uBAA0Bo2I,EAAa,OAAWj6I,EAAQ,mBAAuBF,OAAOkQ,KAAK1O,GAAS2E,KAAK,QAAU,IAAMyzI,GAAUQ,cAAerB,IAAoBh1I,KAErM,OAJA+oI,EAAUoN,EAAmBF,GAItBE,EAL2B,CAMpCH,IAEEM,GAAuC,SAAUL,GAEjD,SAASK,EAAsBn6I,EAAOkC,EAAM22I,GACxC,OAAOiB,EAAOt1I,KAAKX,KAAM,cAAiB7D,EAAQ,qBAAwBkC,EAAMw3I,GAAUQ,cAAerB,IAAoBh1I,KAEjI,OAJA+oI,EAAUuN,EAAuBL,GAI1BK,EAL+B,CAMxCN,IAEEO,GAAmC,SAAUN,GAE7C,SAASM,EAAkBH,EAAYpB,GACnC,OAAOiB,EAAOt1I,KAAKX,KAAM,qCAAwCo2I,EAAa,qCAAyCpB,EAAkB,IAAMa,GAAUW,cAAexB,IAAoBh1I,KAEhM,OAJA+oI,EAAUwN,EAAmBN,GAItBM,EAL2B,CAMpCP,ICtBK,SAASS,GAAqBz9G,GACjC,MAAqB,mBAAPA,EAGX,SAAS09G,GAAc5B,EAAK6B,EAAS1+E,EAAYnM,EAAS1tD,EAAQw4I,EAEzE5B,GAEI,GAAmB,IAAfF,EAAIt2I,QAAgBgrI,EAAiBsL,EAAI,IACzC,MAAO,CACH,CACIz2I,KAAM03I,GAAUtM,QAChBttI,MAAO24I,EAAI,GAAG34I,QAK1B,IADA,IAAIgL,EAAS,GACJ+kI,EAAK,EAAG2K,EAAQ/B,EAAK5I,EAAK2K,EAAMr4I,OAAQ0tI,IAAM,CACnD,IAAIlzG,EAAK69G,EAAM3K,GAEf,GAAI1C,EAAiBxwG,GACjB7xB,EAAO/C,KAAK,CACR/F,KAAM03I,GAAUtM,QAChBttI,MAAO68B,EAAG78B,aAMlB,GAAI+tI,EAAelxG,GACmB,iBAAvB49G,GACPzvI,EAAO/C,KAAK,CACR/F,KAAM03I,GAAUtM,QAChBttI,MAAO87D,EAAW6kD,gBAAgB65B,GAAS5qF,OAAO6qF,SAJ9D,CASA,IAAIE,EAAU99G,EAAG78B,MAEjB,IAAMiC,KAAU04I,KAAW14I,GACvB,MAAM,IAAIm4I,GAAkBO,EAAS9B,GAEzC,IAAI74I,EAAQiC,EAAO04I,GACnB,GAAIpN,EAAkB1wG,GACb78B,GAA0B,iBAAVA,GAAuC,iBAAVA,IAC9CA,EACqB,iBAAVA,GAAuC,iBAAVA,EAC9B+I,OAAO/I,GACP,IAEdgL,EAAO/C,KAAK,CACR/F,KAAuB,iBAAVlC,EAAqB45I,GAAUtM,QAAUsM,GAAUzyI,OAChEnH,MAAOA,SAOf,GAAIytI,EAAc5wG,GAAlB,CACI,IAAI0uB,EAA4B,iBAAb1uB,EAAG0uB,MAChBoE,EAAQxhB,KAAKtR,EAAG0uB,OAChB4iF,EAAmBtxG,EAAG0uB,OAClB1uB,EAAG0uB,MAAMuqF,mBACTh0I,EACVkJ,EAAO/C,KAAK,CACR/F,KAAM03I,GAAUtM,QAChBttI,MAAO87D,EACF8+E,kBAAkBJ,EAASjvF,GAC3BqE,OAAO5vD,UAIpB,GAAI0tI,EAAc7wG,GACV0uB,EAA4B,iBAAb1uB,EAAG0uB,MAChBoE,EAAQ/mC,KAAKiU,EAAG0uB,OAChB4iF,EAAmBtxG,EAAG0uB,OAClB1uB,EAAG0uB,MAAMuqF,mBACTh0I,EACVkJ,EAAO/C,KAAK,CACR/F,KAAM03I,GAAUtM,QAChBttI,MAAO87D,EACF8+E,kBAAkBJ,EAASjvF,GAC3BqE,OAAO5vD,UAIpB,GAAIwtI,EAAgB3wG,IACZ0uB,EAA4B,iBAAb1uB,EAAG0uB,MAChBoE,EAAQtf,OAAOxT,EAAG0uB,OAClB2iF,EAAiBrxG,EAAG0uB,OAChB1uB,EAAG0uB,MAAMuqF,mBACTh0I,IACGypD,EAAM3X,QACf5zC,GAESurD,EAAM3X,OAAS,GAE5B5oC,EAAO/C,KAAK,CACR/F,KAAM03I,GAAUtM,QAChBttI,MAAO87D,EACF6kD,gBAAgB65B,EAASjvF,GACzBqE,OAAO5vD,SAfpB,CAmBA,GAAIiuI,EAAapxG,GAAK,CAClB,IAAIyuG,EAAWzuG,EAAGyuG,SAAUuP,EAAUh+G,EAAG78B,MACrC86I,EAAW74I,EAAO44I,GACtB,IAAKP,GAAqBQ,GACtB,MAAM,IAAIX,GAAsBU,EAAS,WAAYhC,GAEzD,IACIkC,EAASD,EADDP,GAAcjP,EAAUkP,EAAS1+E,EAAYnM,EAAS1tD,EAAQw4I,GAC9C1tI,KAAI,SAAUilB,GAAK,OAAOA,EAAEhyB,UACnDmE,MAAMiF,QAAQ2xI,KACfA,EAAS,CAACA,IAEd/vI,EAAO/C,KAAKnE,MAAMkH,EAAQ+vI,EAAOhuI,KAAI,SAAUy5B,GAC3C,MAAO,CACHtkC,KAAmB,iBAANskC,EAAiBozG,GAAUtM,QAAUsM,GAAUzyI,OAC5DnH,MAAOwmC,OAInB,GAAImnG,EAAgB9wG,GAApB,CAEI,KADI+yG,EAAM/yG,EAAGv7B,QAAQtB,IAAU68B,EAAGv7B,QAAQizD,OAEtC,MAAM,IAAIylF,GAAkBn9G,EAAG78B,MAAOA,EAAOF,OAAOkQ,KAAK6sB,EAAGv7B,SAAUu3I,GAE1E7tI,EAAO/C,KAAKnE,MAAMkH,EAAQuvI,GAAc3K,EAAI5vI,MAAOw6I,EAAS1+E,EAAYnM,EAAS1tD,SAGrF,GAAI4rI,EAAgBhxG,GAApB,CACI,IAAI+yG,EACJ,KADIA,EAAM/yG,EAAGv7B,QAAQ,IAAMtB,IACjB,CACN,IAAKygH,KAAKu6B,YACN,MAAM,IAAInB,GAAY,kHAAqHH,GAAUuB,iBAAkBpC,GAE3K,IAAIqC,EAAOp/E,EACNq/E,eAAeX,EAAS,CAAEt4I,KAAM26B,EAAG45G,aACnC7I,OAAO5tI,GAAS68B,EAAGspB,QAAU,IAClCypF,EAAM/yG,EAAGv7B,QAAQ45I,IAASr+G,EAAGv7B,QAAQizD,MAEzC,IAAKq7E,EACD,MAAM,IAAIoK,GAAkBn9G,EAAG78B,MAAOA,EAAOF,OAAOkQ,KAAK6sB,EAAGv7B,SAAUu3I,GAE1E7tI,EAAO/C,KAAKnE,MAAMkH,EAAQuvI,GAAc3K,EAAI5vI,MAAOw6I,EAAS1+E,EAAYnM,EAAS1tD,EAAQjC,GAAS68B,EAAGspB,QAAU,QAIvH,OAxKkBrwC,EAwKE9K,GAvKV3I,OAAS,EACRyT,EAEJA,EAAMlM,QAAO,SAAUqP,EAAKmiI,GAC/B,IAAIC,EAAWpiI,EAAIA,EAAI5W,OAAS,GAShC,OARKg5I,GACDA,EAASn5I,OAAS03I,GAAUtM,SAC5B8N,EAAKl5I,OAAS03I,GAAUtM,QAIxB+N,EAASr7I,OAASo7I,EAAKp7I,MAHvBiZ,EAAIhR,KAAKmzI,GAKNniI,IACR,IAfP,IAAsBnD,ECqBtB,SAASwlI,GAAuBC,GAC5B,MAAO,CACHpwE,OAAQ,WACJ,MAAO,CACHpjE,IAAK,SAAUL,GACX,OAAOA,KAAO6zI,GAElBx9H,IAAK,SAAUrW,GACX,OAAO6zI,EAAM7zI,IAEjB2nC,IAAK,SAAU3nC,EAAK1H,GAChBu7I,EAAM7zI,GAAO1H,ODpCjC,SAAW45I,GACPA,EAAUA,EAAmB,QAAI,GAAK,UACtCA,EAAUA,EAAkB,OAAI,GAAK,SAFzC,CAGGA,KAAcA,GAAY,KCiF7B,IAAI4B,GAAmC,WACnC,SAASA,EAAkBl5I,EAASk4I,EAASiB,EAAiB3nG,GAC1D,IA5CyB0K,EA1BXk9F,EAAe7tB,EAsEzBksB,EAAQl2I,KAoCZ,QAnCgB,IAAZ22I,IAAsBA,EAAUgB,EAAkBG,eACtD93I,KAAK+3I,eAAiB,CAClBvrG,OAAQ,GACR0kF,SAAU,GACV8mB,YAAa,IAEjBh4I,KAAK+rD,OAAS,SAAU3tD,GACpB,IAAI6T,EAAQikI,EAAMQ,cAAct4I,GAEhC,GAAqB,IAAjB6T,EAAMzT,OACN,OAAOyT,EAAM,GAAG9V,MAEpB,IAAIgL,EAAS8K,EAAMlM,QAAO,SAAUqP,EAAKmiI,GASrC,OARKniI,EAAI5W,QACL+4I,EAAKl5I,OAAS03I,GAAUtM,SACO,iBAAxBr0H,EAAIA,EAAI5W,OAAS,GAIxB4W,EAAIA,EAAI5W,OAAS,IAAM+4I,EAAKp7I,MAH5BiZ,EAAIhR,KAAKmzI,EAAKp7I,OAKXiZ,IACR,IACH,OAAIjO,EAAO3I,QAAU,EACV2I,EAAO,IAAM,GAEjBA,GAEXnH,KAAK02I,cAAgB,SAAUt4I,GAC3B,OAAOs4I,GAAcR,EAAM+B,IAAK/B,EAAMS,QAAST,EAAMj+E,WAAYi+E,EAAMpqF,QAAS1tD,OAAQH,EAAWi4I,EAAMz3I,UAE7GuB,KAAKk4I,gBAAkB,WAAc,MAAO,CACxCpxF,OAAQ81D,KAAKC,aAAas7B,mBAAmBjC,EAAMS,SAAS,KAEhE32I,KAAKo4I,OAAS,WAAc,OAAOlC,EAAM+B,KAClB,iBAAZx5I,EAAsB,CAE7B,GADAuB,KAAKvB,QAAUA,GACVk5I,EAAkBU,QACnB,MAAM,IAAI5sB,UAAU,+EAGxBzrH,KAAKi4I,IAAMN,EAAkBU,QAAQ55I,EAAS,CAC1C6vI,UAAWr+F,MAAAA,OAAmC,EAASA,EAAKq+F,iBAIhEtuI,KAAKi4I,IAAMx5I,EAEf,IAAK6B,MAAMiF,QAAQvF,KAAKi4I,KACpB,MAAM,IAAIxsB,UAAU,kDAIxBzrH,KAAK8rD,SA5HS+rF,EA4HcF,EAAkB7rF,SA5HjBk+D,EA4H0B4tB,GAxHpD37I,OAAOkQ,KAAK0rI,GAAe9xI,QAAO,SAAUqP,EAAKwmF,GAb5D,IAAqBxvD,EAAI8iE,EAejB,OADA95F,EAAIwmF,IAdSxvD,EAcQyrG,EAAcj8C,IAdlBsT,EAcsB8a,EAAQpuB,IAV5CqtC,EAASA,EAASA,EAAS,GAAK78F,GAAM,IAAO8iE,GAAM,IAAMjzG,OAAOkQ,KAAKigC,GAAIrmC,QAAO,SAAUqP,EAAKwmF,GAElG,OADAxmF,EAAIwmF,GAAKqtC,EAASA,EAAS,GAAI78F,EAAGwvD,IAAMsT,EAAGtT,IAAM,IAC1CxmF,IACR,KALQg3B,GAaAh3B,IACR6zH,EAAS,GAAI4O,IALLA,GA4HP73I,KAAK22I,QAAUA,EACf32I,KAAKi4D,WACAhoB,GAAQA,EAAKgoB,kBArGR,KADetd,EAsGgC36C,KAAK+3I,kBArG1Cp9F,EAAQ,CAC5BnO,OAAQ,GACR0kF,SAAU,GACV8mB,YAAa,KAEV,CACHl7B,gBAAiBv4G,IAAQ,WAGrB,IAFA,IAAIumI,EACA5qI,EAAO,GACFgsI,EAAK,EAAGA,EAAKhwH,UAAU1d,OAAQ0tI,IACpChsI,EAAKgsI,GAAMhwH,UAAUgwH,GAEzB,OAAO,KAAMpB,EAAKluB,KAAKC,cAAc5lG,KAAKhX,MAAM6qI,EAAI5B,EAAc,MAAC,GAAShpI,OAC7E,CACCy6C,MAAO88F,GAAuB98F,EAAMnO,QACpC6oG,SAAUS,GAAWL,WAEzBsB,kBAAmBxyI,IAAQ,WAGvB,IAFA,IAAIumI,EACA5qI,EAAO,GACFgsI,EAAK,EAAGA,EAAKhwH,UAAU1d,OAAQ0tI,IACpChsI,EAAKgsI,GAAMhwH,UAAUgwH,GAEzB,OAAO,KAAMpB,EAAKluB,KAAK07B,gBAAgBrhI,KAAKhX,MAAM6qI,EAAI5B,EAAc,MAAC,GAAShpI,OAC/E,CACCy6C,MAAO88F,GAAuB98F,EAAMu2E,UACpCmkB,SAAUS,GAAWL,WAEzB6B,eAAgB/yI,IAAQ,WAGpB,IAFA,IAAIumI,EACA5qI,EAAO,GACFgsI,EAAK,EAAGA,EAAKhwH,UAAU1d,OAAQ0tI,IACpChsI,EAAKgsI,GAAMhwH,UAAUgwH,GAEzB,OAAO,KAAMpB,EAAKluB,KAAKu6B,aAAalgI,KAAKhX,MAAM6qI,EAAI5B,EAAc,MAAC,GAAShpI,OAC5E,CACCy6C,MAAO88F,GAAuB98F,EAAMq9F,aACpC3C,SAAUS,GAAWL,aA6I7B,OA3EAx5I,OAAOC,eAAey7I,EAAmB,gBAAiB,CACtDz9H,IAAK,WAKD,OAJKy9H,EAAkBY,wBACnBZ,EAAkBY,uBACd,IAAI37B,KAAKC,cAAeq7B,kBAAkBpxF,QAE3C6wF,EAAkBY,uBAE7BtjE,YAAY,EACZz4D,cAAc,IAElBm7H,EAAkBY,sBAAwB,KAC1CZ,EAAkBU,QAAUpiI,GAI5B0hI,EAAkB7rF,QAAU,CACxBtf,OAAQ,CACJgsG,QAAS,CACL9/E,sBAAuB,GAE3B0zE,SAAU,CACN1kF,MAAO,YAEX7F,QAAS,CACL6F,MAAO,YAGfpd,KAAM,CACFstF,MAAO,CACH/hC,MAAO,UACPF,IAAK,UACLI,KAAM,WAEV4hC,OAAQ,CACJ9hC,MAAO,QACPF,IAAK,UACLI,KAAM,WAEV2hC,KAAM,CACF7hC,MAAO,OACPF,IAAK,UACLI,KAAM,WAEV0hC,KAAM,CACFtrE,QAAS,OACT0pC,MAAO,OACPF,IAAK,UACLI,KAAM,YAGdhxE,KAAM,CACF6yG,MAAO,CACHliC,KAAM,UACND,OAAQ,WAEZkiC,OAAQ,CACJjiC,KAAM,UACND,OAAQ,UACRD,OAAQ,WAEZkiC,KAAM,CACFhiC,KAAM,UACND,OAAQ,UACRD,OAAQ,UACRq1C,aAAc,SAElBpT,KAAM,CACF/hC,KAAM,UACND,OAAQ,UACRD,OAAQ,UACRq1C,aAAc,WAInB8M,EAzI2B,GC9EtC,YCTsH/0G,GAAE,GAAGtjC,GAAE,CAAChB,EAAEu/F,EAAE1kD,IAAIA,GAAG0kD,KAAKj7D,KAAIA,GAAEi7D,GAAG,IAAIv/F,KAAKskC,GAAEi7D,KAAKj7D,GAAEi7D,GAAGv/F,GAAG66C,GAAGA,GAAGA,EAAEroB,GAAE,CAACxyB,EAAEu/F,KAAK,GAAG,MAAMA,EAAE,OAAO,GAAGA,KAAKj7D,IAAGtkC,KAAKskC,GAAEi7D,GAAG,OAAOj7D,GAAEi7D,GAAGv/F,GAAG,MAAM66C,EAAE6oD,GAAEnE,GAAG,IAAI,IAAI1nB,EAAE,EAAEA,EAAEh9B,EAAE36C,OAAO23E,IAAI,CAAC,MAAMvzC,EAAED,GAAEwW,EAAEg9B,GAAG73E,GAAG,GAAGskC,EAAE,OAAOtjC,GAAEhB,EAAEu/F,EAAEj7D,KAAK,IAAIgD,GAAE,MAAMnK,IAAE,QAAE,IAAI,SAASoa,GAAEv3C,GAAG,OAAOA,KAAKsnC,GAAE,SAASjD,GAAErkC,EAAEu/F,GAAG,IAAIhoD,GAAEv3C,GAAG,OAAO,KAAK,MAAM66C,EAAE,SAAS76C,GAAG,OAAOsnC,GAAEtnC,IAAI,KAAzB,CAA+BA,GAAG,OAAO,SAASA,EAAEu/F,GAAG,GAAG,MAAMA,EAAE,OAAO,GAAGA,KAAKv/F,EAAE,OAAOA,EAAEu/F,GAAG,MAAM1kD,EAAE0kD,EAAE37F,MAAM,KAAK,IAAIi0E,EAAE73E,EAAE,IAAI,IAAIA,EAAE,EAAEA,EAAE66C,EAAE36C,OAAOF,IAAI,GAAG,iBAAiB63E,EAAE,CAAC,GAAG73E,EAAE,EAAE,CAAC,MAAMu/F,EAAE1kD,EAAEh3C,MAAM7D,EAAE66C,EAAE36C,QAAQ4D,KAAK,KAAK,GAAGy7F,KAAK1nB,EAAE,CAACA,EAAEA,EAAE0nB,GAAG,OAAO1nB,EAAEA,EAAEh9B,EAAE76C,SAAS63E,OAAE,EAAO,OAAOA,EAA3O,CAA8Oh9B,EAAE0kD,GAAG,SAASzL,GAAE9zF,KAAKu/F,UAAUj7D,GAAEtkC,GAAGm9B,GAAEzzB,QAAQmuE,IAAIA,EAAE73E,GAAG,QAAM,CAAC63E,EAAE73E,IAAI,MAAMu/F,IAAI1nB,MAAa,QAAE,CAAC16C,KAAG,EAAGn9B,KAAKrC,OAAOkQ,KAAK7N,KAAKm9B,GAAEg9G,WAAWn6I,GAAGsnC,GAAEtnC,IAAI,MAAMwvC,GAAE,GAAG,SAAS/oC,GAAEzG,GAAG,OAAOwvC,GAAExvC,GAAG,SAASkyD,GAAElyD,GAAG,OAAO,MAAMA,GAAG0jG,GAAE1jG,GAAGM,MAAMN,IAAI,IAAIu/F,EAAE,OAAO,QAAQA,EAAE94F,GAAEzG,UAAK,IAASu/F,OAAE,EAAOA,EAAEppE,QAAmL,MAAMtG,GAAE,GAAG,SAAS3iB,GAAElN,GAAG,IAAIkyD,GAAElyD,GAAG,OAAOA,KAAK6vB,GAAEA,GAAE7vB,GAAGwb,QAAQ1P,UAAU,MAAMyzF,EAAE,SAASv/F,GAAG,OAAO0jG,GAAE1jG,GAAG4K,KAAK5K,IAAI,MAAMu/F,EAAE94F,GAAEzG,GAAG,MAAM,CAACA,EAAEu/F,EAAE,IAAIA,GAAG,OAAO90F,QAAO,EAAG,CAACzK,KAAKA,EAAEE,OAAO,IAAhG,CAAqGF,GAAG,OAAO6vB,GAAE7vB,GAAGwb,QAAQ1E,IAAIyoF,EAAE30F,KAAI,EAAG5K,EAAEu/F,KAArY,SAAWv/F,EAAEu/F,GAAG,MAAM1kD,EAAEr/B,QAAQ1E,IAAIyoF,EAAE30F,KAAK20F,IAAI,SAASv/F,EAAEu/F,GAAG/vD,GAAExvC,GAAG+F,OAAOw5F,GAAG,IAAI/vD,GAAExvC,GAAGm2B,aAAaqZ,GAAExvC,GAArD,CAAyDA,EAAEu/F,GAAGA,IAAI52F,MAAM3I,GAAGA,EAAEo6I,SAASp6I,QAAQ,OAAO66C,EAAElyC,MAAM42F,GAAGzL,GAAE9zF,KAAKu/F,KAAoOvtC,CAAEhyD,EAAEu/F,MAAM52F,MAAK,KAAM,GAAGupD,GAAElyD,GAAG,OAAOkN,GAAElN,UAAU6vB,GAAE7vB,MAAM6vB,GAAE7vB,GAc70C,SAASokC,GAAEpkC,EAAEu/F,GAAG,IAAI1kD,EAAE,GAAG,IAAI,IAAIg9B,KAAK73E,EAAErC,OAAO4D,UAAUa,eAAeC,KAAKrC,EAAE63E,IAAI0nB,EAAEz0F,QAAQ+sE,GAAG,IAAIh9B,EAAEg9B,GAAG73E,EAAE63E,IAAI,GAAG,MAAM73E,GAAG,mBAAmBrC,OAAOk+H,sBAAsB,CAAC,IAAIv3F,EAAE,EAAE,IAAIuzC,EAAEl6E,OAAOk+H,sBAAsB77H,GAAGskC,EAAEuzC,EAAE33E,OAAOokC,IAAIi7D,EAAEz0F,QAAQ+sE,EAAEvzC,IAAI,GAAG3mC,OAAO4D,UAAUw6H,qBAAqB15H,KAAKrC,EAAE63E,EAAEvzC,MAAMuW,EAAEg9B,EAAEvzC,IAAItkC,EAAE63E,EAAEvzC,KAAK,OAAOuW,EAAE,SAAS6qD,IAAGl9C,OAAOxoD,EAAExB,GAAG+gG,IAAIzkF,QAAQ8K,KAAK,8BAA8B25E,wBAAwBmE,GAAE1jG,GAAG8D,KAAK,YAAYouD,GAAE9K,MAAK,gGAAgG,MAAM,MAAMyH,GAAE,CAACwrF,eAAe,KAAKC,aAAa,IAAI9sF,QAAQ,CAACtf,OAAO,CAACqsG,WAAW,CAACzgF,SAAS,cAAc0gF,YAAY,CAAC1gF,SAAS,eAAe2gF,YAAY,CAAC3gF,SAAS,UAAUk0E,eAAe,QAAQ0M,aAAa,CAAC5gF,SAAS,UAAUk0E,eAAe,UAAUhiG,KAAK,CAACstF,MAAM,CAAC/hC,MAAM,UAAUF,IAAI,UAAUI,KAAK,WAAW4hC,OAAO,CAAC9hC,MAAM,QAAQF,IAAI,UAAUI,KAAK,WAAW2hC,KAAK,CAAC7hC,MAAM,OAAOF,IAAI,UAAUI,KAAK,WAAW0hC,KAAK,CAACtrE,QAAQ,OAAO0pC,MAAM,OAAOF,IAAI,UAAUI,KAAK,YAAYhxE,KAAK,CAAC6yG,MAAM,CAACliC,KAAK,UAAUD,OAAO,WAAWkiC,OAAO,CAACjiC,KAAK,UAAUD,OAAO,UAAUD,OAAO,WAAWkiC,KAAK,CAAChiC,KAAK,UAAUD,OAAO,UAAUD,OAAO,UAAUq1C,aAAa,SAASpT,KAAK,CAAC/hC,KAAK,UAAUD,OAAO,UAAUD,OAAO,UAAUq1C,aAAa,WAAWoO,uBAAsB,EAAGC,0BAAqB,EAAO5K,WAAU,GAAI,SAASpqC,KAAI,OAAO/2C,GAAE,SAASz4C,GAAEpW,GAAG,MAAMwtD,QAAQ+xC,GAAGv/F,EAAE66C,EAAEzW,GAAEpkC,EAAE,CAAC,YAAY63E,EAAE73E,EAAE66I,eAAe76I,EAAEq6I,eAAe,OAAOx/F,EAAE8/F,+BAA+B9/F,EAAE8/F,sBAAsB,MAAM9/F,EAAE+/F,qBAAqB//F,EAAE+/F,qBAAqBl1C,GAAE5qF,QAAQ8K,KAAK,0HAA0HjoB,OAAOge,OAAOkzC,GAAEhU,EAAE,CAACggG,cAAchjE,IAAI0nB,IAAI,WAAWA,GAAG5hG,OAAOge,OAAOkzC,GAAErB,QAAQtf,OAAOqxD,EAAErxD,QAAQ,SAASqxD,GAAG5hG,OAAOge,OAAOkzC,GAAErB,QAAQxhB,KAAKuzD,EAAEvzD,MAAM,SAASuzD,GAAG5hG,OAAOge,OAAOkzC,GAAErB,QAAQ/mC,KAAK84E,EAAE94E,OAAOg9E,GAAEv2D,IAAI2qC,GAAG,MAAMylB,IAAE,SAAE,GAAI,IAAI53C,GAAE,MAAMmgD,IAAE,QAAE,MAAM,SAAS7vD,GAAEh2C,GAAG,OAAOA,EAAE4D,MAAM,KAAKgH,KAAI,CAAE5K,EAAEu/F,EAAE1kD,IAAIA,EAAEh3C,MAAM,EAAE07F,EAAE,GAAGz7F,KAAK,OAAOw6B,UAAU,SAASolE,GAAE1jG,EAAEu/F,EAAEqG,KAAIy0C,gBAAgB,MAAMx/F,EAAE7E,GAAEh2C,GAAG,OAAOu/F,EAAE,IAAI,IAAIzxB,IAAI,IAAIjzB,KAAK7E,GAAEupD,MAAM1kD,EAAE,SAASuM,KAAI,OAAO,MAAM1B,GAAEA,QAAE,EAAOmgD,GAAEs0C,WAAWn6I,IAAI0lD,GAAE,MAAM1lD,EAAEA,OAAE,EAAO,oBAAoB0G,QAAQ,MAAM1G,GAAG2G,SAASm0I,gBAAgB/hF,aAAa,OAAO/4D,MAAM,MAAMyjG,GAAE9lG,OAAOge,OAAOhe,OAAOge,OAAO,GAAGkqF,IAAG,CAAC34D,IAAIltC,IAAI,GAAGA,GAAG,SAASA,GAAG,GAAG,MAAMA,EAAE,OAAO,MAAMu/F,EAAEmE,GAAE1jG,GAAG,IAAI,IAAIA,EAAE,EAAEA,EAAEu/F,EAAEr/F,OAAOF,IAAI,CAAC,MAAM66C,EAAE0kD,EAAEv/F,GAAG,GAAGu3C,GAAEsD,GAAG,OAAOA,GAAnG,CAAuG76C,IAAIkyD,GAAElyD,GAAG,CAAC,MAAMs6I,aAAa/6C,GAAGqG,KAAI,IAAI/qD,EAAE,MAAM,oBAAoBn0C,QAAQ,MAAM0gD,MAAKm4C,EAAE1kD,EAAEn0C,OAAOgQ,YAAW,IAAK4mF,GAAEpwD,KAAI,IAAKqyD,GAAGjC,GAAEpwD,KAAI,GAAIhgC,GAAElN,GAAG2I,MAAK,KAAMk9F,GAAE34D,IAAIltC,MAAMkqC,SAAQ,KAAMvzB,aAAakkC,GAAGyiD,GAAEpwD,KAAI,MAAO,OAAO24D,GAAE34D,IAAIltC,MAAiS2jG,GAAE,IAAI,oBAAoBj9F,OAAO,KAAKA,OAAO+T,UAAUsgI,UAAUr0I,OAAO+T,UAAUugI,UAAU,GAAuJx3C,GAAExjG,IAAI,MAAMu/F,EAAE5hG,OAAOqrE,OAAO,MAAM,OAAOnuB,IAAI,MAAMg9B,EAAExyE,KAAKC,UAAUu1C,GAAG,OAAOg9B,KAAK0nB,EAAEA,EAAE1nB,GAAG0nB,EAAE1nB,GAAG73E,EAAE66C,KAAKkrD,GAAE,CAAC/lG,EAAEu/F,KAAK,MAAM/xC,QAAQ3S,GAAG+qD,KAAI,GAAG5lG,KAAK66C,GAAG0kD,KAAK1kD,EAAE76C,GAAG,OAAO66C,EAAE76C,GAAGu/F,GAAG,MAAM,IAAIh9F,MAAM,0BAA0Bg9F,MAAMv/F,cAAcimG,GAAEzC,IAAGxjG,IAAI,IAAIwoD,OAAO+2C,EAAE9xC,OAAO5S,GAAG76C,EAAE63E,EAAEzzC,GAAEpkC,EAAE,CAAC,SAAS,WAAW,GAAG,MAAMu/F,EAAE,MAAM,IAAIh9F,MAAM,0DAA0D,OAAOs4C,IAAIg9B,EAAEkuB,GAAE,SAASlrD,IAAI,IAAIyjE,KAAKC,aAAahf,EAAE1nB,MAAMytB,GAAE9B,IAAGxjG,IAAI,IAAIwoD,OAAO+2C,EAAE9xC,OAAO5S,GAAG76C,EAAE63E,EAAEzzC,GAAEpkC,EAAE,CAAC,SAAS,WAAW,GAAG,MAAMu/F,EAAE,MAAM,IAAIh9F,MAAM,wDAAwD,OAAOs4C,EAAEg9B,EAAEkuB,GAAE,OAAOlrD,GAAG,IAAIl9C,OAAOkQ,KAAKgqE,GAAG33E,SAAS23E,EAAEkuB,GAAE,OAAO,UAAU,IAAIuY,KAAK07B,eAAez6C,EAAE1nB,MAAMwtB,GAAE7B,IAAGxjG,IAAI,IAAIwoD,OAAO+2C,EAAE9xC,OAAO5S,GAAG76C,EAAE63E,EAAEzzC,GAAEpkC,EAAE,CAAC,SAAS,WAAW,GAAG,MAAMu/F,EAAE,MAAM,IAAIh9F,MAAM,8DAA8D,OAAOs4C,EAAEg9B,EAAEkuB,GAAE,OAAOlrD,GAAG,IAAIl9C,OAAOkQ,KAAKgqE,GAAG33E,SAAS23E,EAAEkuB,GAAE,OAAO,UAAU,IAAIuY,KAAK07B,eAAez6C,EAAE1nB,MAA8Q3wB,GAAEs8C,IAAE,CAAExjG,EAAEu/F,EAAEn4C,OAAM,IAAI,GAAEpnD,EAAEu/F,EAAEqG,KAAIp4C,QAAQ,CAACwiF,UAAUpqC,KAAIoqC,cAAclqC,GAAE,CAAC9lG,EAAEu/F,EAAE,MAAM,IAAI1kD,EAAEg9B,EAAEvzC,EAAEtjC,EAAE,IAAIsmC,EAAEi4D,EAAE,iBAAiBv/F,IAAIsnC,EAAEtnC,EAAEA,EAAEsnC,EAAE9oC,IAAI,MAAMsB,OAAOq9B,EAAEqrB,OAAOjR,EAAE6P,KAAIgzF,QAAQ/1G,GAAGiD,EAAE,GAAG,MAAMiQ,EAAE,MAAM,IAAIh1C,MAAM,mFAAmF,IAAIuxF,EAAEthE,GAAExyB,EAAEu3C,GAAG,GAAGu8C,GAAG,GAAG,iBAAiBA,EAAE,OAAOh5E,QAAQ8K,KAAK,kCAAkC5lB,+CAA+C8zF,mGAAmGA,OAAOA,EAAE,QAAQ9yF,EAAE,QAAQsjC,EAAE,QAAQuzC,GAAGh9B,EAAE+qD,MAAKg1C,4BAAuB,IAAS/iE,OAAE,EAAOA,EAAEx1E,KAAKw4C,EAAE,CAAC2N,OAAOjR,EAAE/4C,GAAGwB,EAAEy8F,aAAap4D,WAAM,IAASC,EAAEA,EAAED,SAAI,IAASrjC,EAAEA,EAAEhB,EAAE,IAAIm9B,EAAE,OAAO22D,EAAE,IAAI8P,EAAE9P,EAAE,IAAI8P,EAAE18C,GAAE4sC,EAAEv8C,GAAGkW,OAAOtwB,GAAG,MAAMoiE,GAAGzkF,QAAQ8K,KAAK,0BAA0B5lB,uBAAuBu/F,EAAEp/F,SAAS,OAAOyjG,GAAG6B,GAAE,CAACzlG,EAAEu/F,IAAr5B,EAACv/F,EAAE,MAAM,IAAIwoD,OAAO+2C,EAAEn4C,MAAKpnD,EAAE66C,EAAEzW,GAAEpkC,EAAE,CAAC,WAAW,OAAOqlG,GAAE1nG,OAAOge,OAAO,CAAC6sC,OAAO+2C,GAAG1kD,KAAw0B0oD,CAAEhE,GAAG9xC,OAAOztD,GAAGwlG,GAAE,CAACxlG,EAAEu/F,IAArgC,EAACv/F,EAAE,MAAM,IAAIwoD,OAAO+2C,EAAEn4C,MAAKpnD,EAAE66C,EAAEzW,GAAEpkC,EAAE,CAAC,WAAW,OAAOslG,GAAE3nG,OAAOge,OAAO,CAAC6sC,OAAO+2C,GAAG1kD,KAAw7Bq2E,CAAE3xB,GAAG9xC,OAAOztD,GAAGolG,GAAE,CAACplG,EAAEu/F,IAArnC,EAACv/F,EAAE,MAAM,IAAIwoD,OAAO+2C,EAAEn4C,MAAKpnD,EAAE66C,EAAEzW,GAAEpkC,EAAE,CAAC,WAAW,OAAOimG,GAAEtoG,OAAOge,OAAO,CAAC6sC,OAAO+2C,GAAG1kD,KAAwiCppC,CAAE8tF,GAAG9xC,OAAOztD,GAAGmlG,GAAE,CAACnlG,EAAEu/F,EAAEn4C,OAAM50B,GAAExyB,EAAEu/F,GAAG2F,IAAE,QAAE,CAACzB,GAAEtmE,KAAG,IAAK2oE,MAAO,QAAE,CAACrC,KAAG,IAAKgC,MAAO,QAAE,CAAChC,KAAG,IAAK+B,MAAO,QAAE,CAAC/B,KAAG,IAAK2B,MAAO,QAAE,CAAC3B,GAAEtmE,KAAG,IAAKgoE,iGCEx3K,IAAIqlC,EAAgB,SAASh7F,EAAGtiC,GAI5B,OAHAs9H,EAAgB7sI,OAAOmE,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUwtC,EAAGtiC,GAAKsiC,EAAEztC,UAAYmL,IACvE,SAAUsiC,EAAGtiC,GAAK,IAAK,IAAI2iB,KAAK3iB,EAAOA,EAAE9K,eAAeytB,KAAI2f,EAAE3f,GAAK3iB,EAAE2iB,KAClE26G,EAAch7F,EAAGtiC,IAGrB,SAASu9H,EAAUj7F,EAAGtiC,GAEzB,SAASw9H,IAAOhpI,KAAKY,YAAcktC,EADnCg7F,EAAch7F,EAAGtiC,GAEjBsiC,EAAEjuC,UAAkB,OAAN2L,EAAavP,OAAOqrE,OAAO97D,IAAMw9H,EAAGnpI,UAAY2L,EAAE3L,UAAW,IAAImpI,GAG5E,IAAIC,EAAW,WAQlB,OAPAA,EAAWhtI,OAAOge,QAAU,SAAkBk/B,GAC1C,IAAK,IAAI1d,EAAGn8B,EAAI,EAAGu+F,EAAI3hF,UAAU1d,OAAQc,EAAIu+F,EAAGv+F,IAE5C,IAAK,IAAI6uB,KADTsN,EAAIvf,UAAU5c,GACOrD,OAAO4D,UAAUa,eAAeC,KAAK86B,EAAGtN,KAAIgrB,EAAEhrB,GAAKsN,EAAEtN,IAE9E,OAAOgrB,GAEJ8vF,EAAShpI,MAAMD,KAAMkc,YAGzB,SAASq9H,EAAO99G,EAAGn9B,GACtB,IAAI66C,EAAI,GACR,IAAK,IAAIhrB,KAAKsN,EAAOx/B,OAAO4D,UAAUa,eAAeC,KAAK86B,EAAGtN,IAAM7vB,EAAE8K,QAAQ+kB,GAAK,IAC9EgrB,EAAEhrB,GAAKsN,EAAEtN,IACb,GAAS,MAALsN,GAAqD,mBAAjCx/B,OAAOk+H,sBACtB,KAAI76H,EAAI,EAAb,IAAgB6uB,EAAIlyB,OAAOk+H,sBAAsB1+F,GAAIn8B,EAAI6uB,EAAE3vB,OAAQc,IAC3DhB,EAAE8K,QAAQ+kB,EAAE7uB,IAAM,GAAKrD,OAAO4D,UAAUw6H,qBAAqB15H,KAAK86B,EAAGtN,EAAE7uB,MACvE65C,EAAEhrB,EAAE7uB,IAAMm8B,EAAEtN,EAAE7uB,KAE1B,OAAO65C,EAiEJ,SAASqgG,EAASrjE,GACrB,IAAI16C,EAAsB,mBAAX+5E,QAAyBA,OAAOikC,SAAUrnD,EAAI32D,GAAK06C,EAAE16C,GAAIn8B,EAAI,EAC5E,GAAI8yF,EAAG,OAAOA,EAAEzxF,KAAKw1E,GACrB,GAAIA,GAAyB,iBAAbA,EAAE33E,OAAqB,MAAO,CAC1CojD,KAAM,WAEF,OADIu0B,GAAK72E,GAAK62E,EAAE33E,SAAQ23E,OAAI,GACrB,CAAEh6E,MAAOg6E,GAAKA,EAAE72E,KAAMo6I,MAAOvjE,KAG5C,MAAM,IAAIs1C,UAAUhwF,EAAI,0BAA4B,mCAGjD,SAASk+G,EAAOxjE,EAAG0nB,GACtB,IAAIzL,EAAsB,mBAAXojB,QAAyBr/B,EAAEq/B,OAAOikC,UACjD,IAAKrnD,EAAG,OAAOjc,EACf,IAAmBvzC,EAAYtkC,EAA3BgB,EAAI8yF,EAAEzxF,KAAKw1E,GAAOizD,EAAK,GAC3B,IACI,WAAc,IAANvrC,GAAgBA,KAAM,MAAQj7D,EAAItjC,EAAEsiD,QAAQ83F,MAAMtQ,EAAGhlI,KAAKw+B,EAAEzmC,OAExE,MAAOuX,GAASpV,EAAI,CAAEoV,MAAOA,GAC7B,QACI,IACQkvB,IAAMA,EAAE82G,OAAStnD,EAAI9yF,EAAU,SAAI8yF,EAAEzxF,KAAKrB,GAElD,QAAU,GAAIhB,EAAG,MAAMA,EAAEoV,OAE7B,OAAO01H,EAGJ,SAASwQ,IACZ,IAAK,IAAIxQ,EAAK,GAAI9pI,EAAI,EAAGA,EAAI4c,UAAU1d,OAAQc,IAC3C8pI,EAAKA,EAAGz9G,OAAOguH,EAAOz9H,UAAU5c,KACpC,OAAO8pI,4LC3IqB,EAAI,sEAL1B,EAAO,yHAGL,EAAO,aALnB,SAQM,QADJ,SAAuC,oCAAT,EAAI,0BAL1B,EAAO,0EAGL,EAAO,uEAKN1tI,GAAI,EAEXyF,EAAO,GACP27B,EAAU,GACV+8G,EAAU,+HAEX,EAAF,EAAEA,EAAU,OAASn+I,EAAKA,KAAK,GAAK,IAAMA,EAAKA,KAAK,IAElD,EAAF,EAAEohC,EAAU,cAAgBg9G,EAAQC,MAAQD,EAAQC,MAAQ,mBAE1D,EAAF,EAAE54I,EAAOzF,EAAKA,KAAK,gMCGlB4D,GAAI,IAAAm8B,GAAE,cAAc,EAAAn9B,EACtBsC,YAAYo5I,GACV,IAAIlP,EACJ,GAAIprF,MAAMs6F,GAAKA,EAAG37I,OAAS,EAAA86C,EAAA,WAA2B,UAAZ6gG,EAAGp9I,OAA0C,OAApBkuI,EAAKkP,EAAGC,cAAmB,EAASnP,EAAGtsI,QAAU,EAClH,MAAMqC,MAAM,8GAEhByvE,OAAO0pE,GACL,OAAO/9I,OAAOkQ,KAAK6tI,GAAIjxI,QAAQmxI,GAAOF,EAAGE,KAAK93I,KAAK,KAErD4F,OAAOkyI,GAAKt3G,IACV,QAA6B,IAAzB5iC,KAAKm6I,gBAA4B,CACnCn6I,KAAKm6I,gBAAkB,IAAI/tE,IAC3B,IAAK,MAAM4tE,KAAMp3G,EACfA,EAAEo3G,IAAOh6I,KAAKm6I,gBAAgBh2I,IAAI61I,GACpC,OAAOh6I,KAAKswE,OAAO1tC,GAErB,MAAMw3G,EAAKF,EAAG1lH,QAAQurG,UACtB//H,KAAKm6I,gBAAgB33I,SAASw3I,IAC5BA,KAAMp3G,IAAMw3G,EAAG5lI,OAAOwlI,GAAKh6I,KAAKm6I,gBAAgB91I,OAAO21I,OAEzD,IAAK,MAAMA,KAAMp3G,EAAG,CAClB,MAAMy3G,IAAOz3G,EAAEo3G,GACfK,IAAOr6I,KAAKm6I,gBAAgBj2I,IAAI81I,KAAQK,GAAMD,EAAGj2I,IAAI61I,GAAKh6I,KAAKm6I,gBAAgBh2I,IAAI61I,KAAQI,EAAG5lI,OAAOwlI,GAAKh6I,KAAKm6I,gBAAgB91I,OAAO21I,KAExI,OAAO,EAAAj1I,kCCzCX,SAASzF,EAAEg7I,EAAI13G,GACb,MAAO,CAACw3G,EAAIv8C,KACV,MAAMpiE,EAAI,CAACvhB,MACT,IAAI4wH,EACJ,OAAiC,OAAzBA,EAAK9qI,KAAKu6I,iBAAsB,EAASzP,EAAG7xG,cAAcqhH,IACjErlE,YAAY,EAAMz4D,cAAc,GACnC,GAAIomB,EAAG,CACL,MAAMo3G,OAAW,IAANn8C,EAAeA,EAAIu8C,EAAGv2I,IAAKsyE,EAAiB,iBAAN6jE,EAAiBxkC,SAAW,KAAOwkC,EACpFv+G,EAAEvhB,IAAM,WACN,IAAI4wH,EACJ,YAAmB,IAAZ9qI,KAAKm2E,KAAkBn2E,KAAKm2E,GAA+B,OAAzB20D,EAAK9qI,KAAKu6I,iBAAsB,EAASzP,EAAG7xG,cAAcqhH,IAAMt6I,KAAKm2E,IAGlH,YAAa,IAAN0nB,EClBH,EAACu8C,EAAIJ,EAAI7jE,KACfl6E,OAAOC,eAAe89I,EAAI7jE,EAAGikE,IDiBL97I,CAAEm9B,EAAG2+G,EAAIv8C,GCf3B,EAACu8C,EAAIJ,KAAO,CAAEvF,KAAM,SAAU+F,UAAW,YAAa32I,IAAKm2I,EAAGn2I,IAAKmmE,WAAYowE,IDe/CjhG,CAAE1d,EAAG2+G,6GERzCK,EAAoB,CAAC7qG,EAAO7sC,KAC9B,MAAM23I,IAAW9qG,EAAMoJ,SAAiBpJ,EAAM+qG,aACxCC,IAAchrG,EAAMirG,YAAoBjrG,EAAMkrG,gBACpD,OAAO,EAAA3sH,CAAC;;;eAGI,IAAA7uB,GAAE,CACZ,gBAAgB,EAChB,sBAAsC,UAAfswC,EAAMnb,KAC7B,uBAAuC,WAAfmb,EAAMnb,KAC9B,sBAAsC,UAAfmb,EAAMnb,KAC7B,0BAA2BimH,EAC3B,8BAA+BE;;;;cAKtB,IAAAzkE,GAAEvmC,EAAMmrG;;cAEPnrG,EAAMorG;sBACEN,EAAW,QAAU;iBACzBx9I,GAAU0yC,EAAMqrG,aAAerrG,EAAMqrG,aAAa/9I,GAAS;;6BAEhD0yC,EAAMoJ;;;yCAGM,EAAA7qB,CAAC,GAAGprB;;;;cAIhC,IAAAozE,GAAEvmC,EAAMsrG;;sBAECN,EAAc,QAAU;;iCAEbhrG,EAAMirG;;;KAKvC,SAASM,EAAcvrG,GAKrB,MAJmB,CACjBA,EAAMoJ,OAASpJ,EAAM+qG,aAAe/qG,EAAMmrG,QAAU,GACpDnrG,EAAMirG,UAAYjrG,EAAMkrG,gBAAkBlrG,EAAMsrG,WAAa,IAC7DnyI,QAAQw8B,GAAQA,IACAnjC,KAAK,WAAQ,8BCtDjC,SAASlF,EAAMmjB,GAYb,MAAO,CAAC+6H,EAAmBx+I,KACzB,MAAMotE,EAAa,CACjB9vD,MACE,OAAO,IAAImhI,EAAar7I,KAAMqgB,SAAuB,IAATzjB,EAAkBA,EAAOw+I,EAAkBv3I,OAEzFoxE,YAAY,EACZz4D,cAAc,GAEhB,YAAgB,IAAT5f,EAnBT,SAAqBotE,EAAYoxE,EAAmBx+I,GAClDX,OAAOC,eAAek/I,EAAmBx+I,EAAMotE,GAkBtBsxE,CAAYtxE,EAAYoxE,EAAmBx+I,GAhBtE,SAAuBotE,EAAYx1C,GACjC,MAAO,CACLigH,KAAM,SACN+F,UAAW,YACX32I,IAAK2wB,EAAQ3wB,IACbmmE,WAAAA,GAW0EuxE,CAAcvxE,EAAYoxE,qBAG1G,IAAIC,EAAe,MACjBz6I,YAAYoN,EAAQqS,GAClBrgB,KAAKgO,OAASA,EACdhO,KAAKqgB,UAAYA,EAEnBm7H,KAAKC,GACH,MAAMC,EAAS,IAAI32G,YAAY/kC,KAAKqgB,UAAWpkB,OAAOge,OAAO,CAC3D0hI,SAAS,EACTzxE,YAAY,EACZ0xE,UAAU,EACVp6H,OAAQ,IACPi6H,IAEH,OADAz7I,KAAKgO,OAAOo7G,cAAcsyB,GACnBA,iCCpCX,SAASG,EAAQ7iH,EAAIp8B,GACnB,OAAIA,EAC8C,OAAzCo8B,EAAGC,cAAc,UAAUr8B,OAE7B,IAAIo8B,EAAG8iH,YAAYl9I,MAAM+1B,GAC1BA,EAAKonH,WAAapnH,EAAKqnH,WAAyC,KAA5BrnH,EAAKsnH,YAAYtmI,QAGrDgf,EAAKonH,WAAapnH,EAAKunH,eACbvnH,EACHwnH,aAAa,wDCV5B,SAASrhC,EAAsBtmF,GAC7B,IAAIqnD,EAAOrnD,EAAQsmF,wBACnB,MAAO,CACLl/G,MAAOigF,EAAKjgF,MACZC,OAAQggF,EAAKhgF,OACbu9C,IAAKyiC,EAAKziC,IACVC,MAAOwiC,EAAKxiC,MACZC,OAAQuiC,EAAKviC,OACbC,KAAMsiC,EAAKtiC,KACXjF,EAAGunC,EAAKtiC,KACRhF,EAAGsnC,EAAKziC,KAKZ,SAASgjG,EAAUznH,GACjB,GAAwB,oBAApBA,EAAK70B,WAAkC,CACzC,IAAIu8I,EAAgB1nH,EAAK0nH,cACzB,OAAOA,GAAgBA,EAAcC,aAAwBt3I,OAE/D,OAAO2vB,EAIT,SAAS4nH,EAAgB5nH,GACvB,IAAI6nH,EAAMJ,EAAUznH,GAGpB,MAAO,CACL8nH,WAHeD,EAAIE,YAInBC,UAHcH,EAAII,aAQtB,SAAS57G,EAAUrM,GAEjB,OAAOA,aADUynH,EAAUznH,GAAMsM,SACItM,aAAgBsM,QAEvD,SAAS47G,EAAcloH,GAErB,OAAOA,aADUynH,EAAUznH,GAAMmoH,aACInoH,aAAgBmoH,YAEvD,SAASC,EAAapoH,GACpB,MAA0B,oBAAfqoH,aAIJroH,aADUynH,EAAUznH,GAAMqoH,YACIroH,aAAgBqoH,YAqBvD,SAASC,EAAYzoH,GACnB,OAAOA,GAAWA,EAAQ0oH,UAAY,IAAIjgH,cAAgB,KAI5D,SAASkgH,EAAmB3oH,GAC1B,QAASwM,EAAUxM,GAAWA,EAAQ6nH,cAAgB7nH,EAAQvvB,WAAaD,OAAOC,UAAUm0I,gBAI9F,SAASgE,EAAoB5oH,GAC3B,OAAOsmF,EAAsBqiC,EAAmB3oH,IAAU+kB,KAAOgjG,EAAgB/nH,GAASioH,WAI5F,SAAStiC,EAAiB3lF,GACxB,OAAO4nH,EAAU5nH,GAAS2lF,iBAAiB3lF,GAI7C,SAAS6oH,EAAe7oH,GACtB,IAAI8oH,EAAoBnjC,EAAiB3lF,GAAU+oH,EAAWD,EAAkBC,SAAUC,EAAYF,EAAkBE,UAAWC,EAAYH,EAAkBG,UACjK,MAAO,6BAA6BjqI,KAAK+pI,EAAWE,EAAYD,GAIlE,SAASE,EAAiBC,EAAyBC,EAAcC,QAC/C,IAAZA,IACFA,GAAU,GAEZ,IAvCqBlpH,EAROH,EA+CxB4kH,EAAkB+D,EAAmBS,GACrC/hE,EAAOi/B,EAAsB6iC,GAC7BG,EAA0BjB,EAAce,GACxCG,EAAS,CACXtB,WAAY,EACZE,UAAW,GAETrkD,EAAU,CACZhkD,EAAG,EACHC,EAAG,GAcL,OAZIupG,IAA4BA,IAA4BD,MACxB,SAA9BZ,EAAYW,IAA4BP,EAAejE,MACzD2E,GApDiBppH,EAoDMipH,KAnDdxB,EAAUznH,IAAUkoH,EAAcloH,GARxC,CACL8nH,YAF0BjoH,EAYEG,GAVR8nH,WACpBE,UAAWnoH,EAAQmoH,WAOZJ,EAAgB5nH,IAoDnBkoH,EAAce,KAChBtlD,EAAUwiB,EAAsB8iC,IACxBtpG,GAAKspG,EAAaI,WAC1B1lD,EAAQ/jD,GAAKqpG,EAAaK,WACjB7E,IACT9gD,EAAQhkD,EAAI8oG,EAAoBhE,KAG7B,CACL9kG,EAAGunC,EAAKtiC,KAAOwkG,EAAOtB,WAAankD,EAAQhkD,EAC3CC,EAAGsnC,EAAKziC,IAAM2kG,EAAOpB,UAAYrkD,EAAQ/jD,EACzC34C,MAAOigF,EAAKjgF,MACZC,OAAQggF,EAAKhgF,QAKjB,SAASqiJ,EAAc1pH,GACrB,MAAO,CACL8f,EAAG9f,EAAQitC,WACXltB,EAAG/f,EAAQ2pH,UACXviJ,MAAO44B,EAAQ4pH,YACfviJ,OAAQ24B,EAAQ6pH,cAKpB,SAASC,EAAc9pH,GACrB,MAA6B,SAAzByoH,EAAYzoH,GACPA,EAEFA,EAAQ+pH,cAAgB/pH,EAAQmI,aAAeogH,EAAavoH,GAAWA,EAAQtzB,KAAO,OAASi8I,EAAmB3oH,GAI3H,SAASgqH,EAAgB7pH,GACvB,MAAI,CAAC,OAAQ,OAAQ,aAAavrB,QAAQ6zI,EAAYtoH,KAAU,EACvDA,EAAK0nH,cAAc3lI,KAExBmmI,EAAcloH,IAAS0oH,EAAe1oH,GACjCA,EAEF6pH,EAAgBF,EAAc3pH,IAIvC,SAAS8pH,EAAkBjqH,EAASkqH,GAClC,IAAIC,OACS,IAATD,IACFA,EAAO,IAET,IAAIE,EAAeJ,EAAgBhqH,GAC/BqqH,EAASD,KAAqE,OAAlDD,EAAwBnqH,EAAQ6nH,oBAAyB,EAASsC,EAAsBjoI,MACpH8lI,EAAMJ,EAAUwC,GAChB5wI,EAAS6wI,EAAS,CAACrC,GAAK7wH,OAAO6wH,EAAIsC,gBAAkB,GAAIzB,EAAeuB,GAAgBA,EAAe,IAAMA,EAC7GG,EAAcL,EAAK/yH,OAAO3d,GAC9B,OAAO6wI,EAASE,EAAcA,EAAYpzH,OAAO8yH,EAAkBH,EAActwI,KAInF,SAASgxI,EAAexqH,GACtB,MAAO,CAAC,QAAS,KAAM,MAAMprB,QAAQ6zI,EAAYzoH,KAAa,EAIhE,SAASyqH,EAAoBzqH,GAC3B,OAAKqoH,EAAcroH,IAAmD,UAAvC2lF,EAAiB3lF,GAASy4B,SAGlDz4B,EAAQopH,aAFN,KAiBX,SAASsB,EAAgB1qH,GAGvB,IAFA,IAAI2qH,EAAU/C,EAAU5nH,GACpBopH,EAAeqB,EAAoBzqH,GAChCopH,GAAgBoB,EAAepB,IAA6D,WAA5CzjC,EAAiByjC,GAAc3wF,UACpF2wF,EAAeqB,EAAoBrB,GAErC,OAAIA,IAA+C,SAA9BX,EAAYW,IAA0D,SAA9BX,EAAYW,IAAwE,WAA5CzjC,EAAiByjC,GAAc3wF,UAC3HkyF,EAEFvB,GAtBT,SAA4BppH,GAG1B,IAFA,IAAI4qH,EAAYrmI,UAAU6K,UAAUqZ,cAAct4B,SAAS,WACvD06I,EAAcf,EAAc9pH,GACzBqoH,EAAcwC,IAAgB,CAAC,OAAQ,QAAQj2I,QAAQ6zI,EAAYoC,IAAgB,GAAG,CAC3F,IAAIxf,EAAM1lB,EAAiBklC,GAC3B,GAAsB,SAAlBxf,EAAIyf,WAA4C,SAApBzf,EAAI0f,aAA0C,UAAhB1f,EAAI2f,SAAuB,CAAC,YAAa,eAAe76I,SAASk7H,EAAI4f,aAAeL,GAAgC,WAAnBvf,EAAI4f,YAA2BL,GAAavf,EAAI92H,QAAyB,SAAf82H,EAAI92H,OAC3N,OAAOs2I,EAEPA,EAAcA,EAAY1iH,WAG9B,OAAO,KAWgB+iH,CAAmBlrH,IAAY2qH,oBAIxD,IAAI/lG,EAAM,MACNE,EAAS,SACTD,EAAQ,QACRE,EAAO,OACPomG,EAAO,OACPC,EAAiB,CAACxmG,EAAKE,EAAQD,EAAOE,GACtCjjB,EAAQ,QACRD,EAAM,MAENwpH,EAAW,WACXC,EAAS,SAETC,EAAsCH,EAAe75I,QAAO,SAASC,EAAKw0I,GAC5E,OAAOx0I,EAAI2lB,OAAO,CAAC6uH,EAAY,IAAMlkH,EAAOkkH,EAAY,IAAMnkH,MAC7D,IACC2pH,EAA6B,GAAGr0H,OAAOi0H,EAAgB,CAACD,IAAO55I,QAAO,SAASC,EAAKw0I,GACtF,OAAOx0I,EAAI2lB,OAAO,CAAC6uH,EAAWA,EAAY,IAAMlkH,EAAOkkH,EAAY,IAAMnkH,MACxE,IAUC4pH,EAAiB,CATJ,aACN,OACK,YACC,aACN,OACK,YACE,cACN,QACK,cAIjB,SAAS1uE,EAAM2uE,GACb,IAAIh3I,EAAM,IAAI8gC,IACV62C,EAAU,IAAIzU,IACdjlE,EAAS,GAIb,SAASg+B,EAAKg7G,GACZt/D,EAAQ18E,IAAIg8I,EAASvjJ,MACN,GAAG+uB,OAAOw0H,EAASC,UAAY,GAAID,EAASE,kBAAoB,IACtE79I,SAAQ,SAAS89I,GACxB,IAAKz/D,EAAQ38E,IAAIo8I,GAAM,CACrB,IAAIC,EAAcr3I,EAAIgR,IAAIomI,GACtBC,GACFp7G,EAAKo7G,OAIXp5I,EAAO/C,KAAK+7I,GAOd,OArBAD,EAAU19I,SAAQ,SAAS29I,GACzBj3I,EAAIsiC,IAAI20G,EAASvjJ,KAAMujJ,MAezBD,EAAU19I,SAAQ,SAAS29I,GACpBt/D,EAAQ38E,IAAIi8I,EAASvjJ,OACxBuoC,EAAKg7G,MAGFh5I,EA4BT,SAASq5I,EAAiBhG,GACxB,OAAOA,EAAUt4I,MAAM,KAAK,GA4C9B,IAAI4xB,EAAM7mB,KAAK6mB,IACXhJ,EAAM7d,KAAK6d,IACXmuC,EAAQhsD,KAAKgsD,MAwBjB,SAASjE,EAAS7a,EAAQ/f,GACxB,IAAIqmH,EAAWrmH,EAAMsmH,aAAetmH,EAAMsmH,cAC1C,GAAIvmG,EAAO6a,SAAS56B,GAClB,OAAO,EACF,GAAIqmH,GAAY1D,EAAa0D,GAAW,CAC7C,IAAI7+F,EAAOxnB,EACX,EAAG,CACD,GAAIwnB,GAAQzH,EAAOwmG,WAAW/+F,GAC5B,OAAO,EAETA,EAAOA,EAAKjlB,YAAcilB,EAAK1gD,WACxB0gD,GAEX,OAAO,EAIT,SAASg/F,EAAiB/kE,GACxB,OAAO5/E,OAAOge,OAAO,GAAI4hE,EAAM,CAC7BtiC,KAAMsiC,EAAKvnC,EACX8E,IAAKyiC,EAAKtnC,EACV8E,MAAOwiC,EAAKvnC,EAAIunC,EAAKjgF,MACrB09C,OAAQuiC,EAAKtnC,EAAIsnC,EAAKhgF,SAiB1B,SAASglJ,EAA2BrsH,EAASssH,GAC3C,OAAOA,IAAmBjB,EAAWe,EA3FvC,SAAyBpsH,GACvB,IAAIgoH,EAAMJ,EAAU5nH,GAChBusH,EAAO5D,EAAmB3oH,GAC1BsqH,EAAiBtC,EAAIsC,eACrBljJ,EAAQmlJ,EAAK7qF,YACbr6D,EAASklJ,EAAKtlC,aACdnnE,EAAI,EACJC,EAAI,EASR,OARIuqG,IACFljJ,EAAQkjJ,EAAeljJ,MACvBC,EAASijJ,EAAejjJ,OACnB,iCAAiC2X,KAAKuF,UAAU6K,aACnD0wB,EAAIwqG,EAAer9E,WACnBltB,EAAIuqG,EAAeX,YAGhB,CACLviJ,MAAAA,EACAC,OAAAA,EACAy4C,EAAGA,EAAI8oG,EAAoB5oH,GAC3B+f,EAAAA,GAuEoDysG,CAAgBxsH,IAAYqoH,EAAciE,GAblG,SAAoCtsH,GAClC,IAAIqnD,EAAOi/B,EAAsBtmF,GASjC,OARAqnD,EAAKziC,IAAMyiC,EAAKziC,IAAM5kB,EAAQypH,UAC9BpiE,EAAKtiC,KAAOsiC,EAAKtiC,KAAO/kB,EAAQwpH,WAChCniE,EAAKviC,OAASuiC,EAAKziC,IAAM5kB,EAAQinF,aACjC5/B,EAAKxiC,MAAQwiC,EAAKtiC,KAAO/kB,EAAQ0hC,YACjC2lB,EAAKjgF,MAAQ44B,EAAQ0hC,YACrB2lB,EAAKhgF,OAAS24B,EAAQinF,aACtB5/B,EAAKvnC,EAAIunC,EAAKtiC,KACdsiC,EAAKtnC,EAAIsnC,EAAKziC,IACPyiC,EAG2GolE,CAA2BH,GAAkBF,EA7DjK,SAAyBpsH,GACvB,IAAImqH,EACAoC,EAAO5D,EAAmB3oH,GAC1B0sH,EAAY3E,EAAgB/nH,GAC5B9d,EAA0D,OAAlDioI,EAAwBnqH,EAAQ6nH,oBAAyB,EAASsC,EAAsBjoI,KAChG9a,EAAQk4B,EAAIitH,EAAKI,YAAaJ,EAAK7qF,YAAax/C,EAAOA,EAAKyqI,YAAc,EAAGzqI,EAAOA,EAAKw/C,YAAc,GACvGr6D,EAASi4B,EAAIitH,EAAKK,aAAcL,EAAKtlC,aAAc/kG,EAAOA,EAAK0qI,aAAe,EAAG1qI,EAAOA,EAAK+kG,aAAe,GAC5GnnE,GAAK4sG,EAAUzE,WAAaW,EAAoB5oH,GAChD+f,GAAK2sG,EAAUvE,UAInB,MAHiD,QAA7CxiC,EAAiBzjG,GAAQqqI,GAAM3jC,YACjC9oE,GAAKxgB,EAAIitH,EAAK7qF,YAAax/C,EAAOA,EAAKw/C,YAAc,GAAKt6D,GAErD,CACLA,MAAAA,EACAC,OAAAA,EACAy4C,EAAAA,EACAC,EAAAA,GA6C8K8sG,CAAgBlE,EAAmB3oH,KAiCrN,SAAS8sH,EAAa9G,GACpB,OAAOA,EAAUt4I,MAAM,KAAK,GAI9B,SAASq/I,EAAyB/G,GAChC,MAAO,CAAC,MAAO,UAAUpxI,QAAQoxI,IAAc,EAAI,IAAM,IAI3D,SAASgH,EAAeC,GACtB,IAKInpD,EALAopD,EAAaD,EAAKE,UAAWntH,EAAUitH,EAAKjtH,QAASgmH,EAAYiH,EAAKjH,UACtEoH,EAAgBpH,EAAYgG,EAAiBhG,GAAa,KAC1DqH,EAAYrH,EAAY8G,EAAa9G,GAAa,KAClDsH,EAAUJ,EAAWptG,EAAIotG,EAAW9lJ,MAAQ,EAAI44B,EAAQ54B,MAAQ,EAChEmmJ,EAAUL,EAAWntG,EAAImtG,EAAW7lJ,OAAS,EAAI24B,EAAQ34B,OAAS,EAEtE,OAAQ+lJ,GACN,KAAKxoG,EACHk/C,EAAU,CACRhkD,EAAGwtG,EACHvtG,EAAGmtG,EAAWntG,EAAI/f,EAAQ34B,QAE5B,MACF,KAAKy9C,EACHg/C,EAAU,CACRhkD,EAAGwtG,EACHvtG,EAAGmtG,EAAWntG,EAAImtG,EAAW7lJ,QAE/B,MACF,KAAKw9C,EACHi/C,EAAU,CACRhkD,EAAGotG,EAAWptG,EAAIotG,EAAW9lJ,MAC7B24C,EAAGwtG,GAEL,MACF,KAAKxoG,EACH++C,EAAU,CACRhkD,EAAGotG,EAAWptG,EAAI9f,EAAQ54B,MAC1B24C,EAAGwtG,GAEL,MACF,QACEzpD,EAAU,CACRhkD,EAAGotG,EAAWptG,EACdC,EAAGmtG,EAAWntG,GAGpB,IAAIytG,EAAWJ,EAAgBL,EAAyBK,GAAiB,KACzE,GAAgB,MAAZI,EAAkB,CACpB,IAAIzlH,EAAmB,MAAbylH,EAAmB,SAAW,QACxC,OAAQH,GACN,KAAKvrH,EACHgiE,EAAQ0pD,GAAY1pD,EAAQ0pD,IAAaN,EAAWnlH,GAAO,EAAI/H,EAAQ+H,GAAO,GAC9E,MACF,KAAKlG,EACHiiE,EAAQ0pD,GAAY1pD,EAAQ0pD,IAAaN,EAAWnlH,GAAO,EAAI/H,EAAQ+H,GAAO,IAKpF,OAAO+7D,EAcT,SAAS2pD,EAAmBC,GAC1B,OAAOjmJ,OAAOge,OAAO,GAVd,CACLm/B,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,KAAM,GAMuC2oG,GAIjD,SAASC,EAAgBhmJ,EAAOgQ,GAC9B,OAAOA,EAAKpG,QAAO,SAASq8I,EAASv+I,GAEnC,OADAu+I,EAAQv+I,GAAO1H,EACRimJ,IACN,IAIL,SAASC,EAAen6G,EAAOzqC,QACb,IAAZA,IACFA,EAAU,IAEZ,IAAId,EAAWc,EAAS6kJ,EAAqB3lJ,EAAS69I,UAAWA,OAAmC,IAAvB8H,EAAgCp6G,EAAMsyG,UAAY8H,EAAoBC,EAAoB5lJ,EAAS2jF,SAAUA,OAAiC,IAAtBiiE,EAvTjL,kBAuTkOA,EAAmBC,EAAwB7lJ,EAAS8lJ,aAAcA,OAAyC,IAA1BD,EAAmC3C,EAAW2C,EAAuBE,EAAwB/lJ,EAASgmJ,eAAgBA,OAA2C,IAA1BD,EAAmC5C,EAAS4C,EAAuBE,EAAuBjmJ,EAASkmJ,YAAaA,OAAuC,IAAzBD,GAA0CA,EAAsBE,EAAmBnmJ,EAAS40D,QAASA,OAA+B,IAArBuxF,EAA8B,EAAIA,EACztBZ,EAAgBD,EAAsC,iBAAZ1wF,EAAuBA,EAAU4wF,EAAgB5wF,EAASquF,IACpGmD,EAAaJ,IAAmB7C,EAtTtB,YAsT2CA,EACrDkD,EAAmB96G,EAAM0R,SAAS+nG,UAClCsB,EAAa/6G,EAAMia,MAAM29F,OACzBtrH,EAAU0T,EAAM0R,SAASipG,EAAcE,EAAaJ,GACpDO,EAtHN,SAAyB1uH,EAAS8rD,EAAUmiE,GAC1C,IAAIU,EAAmC,oBAAb7iE,EAZ5B,SAA4B9rD,GAC1B,IAAI4uH,EAAmB3E,EAAkBH,EAAc9pH,IAEnD6uH,EADoB,CAAC,WAAY,SAASj6I,QAAQ+wG,EAAiB3lF,GAASy4B,WAAa,GACnD4vF,EAAcroH,GAAW0qH,EAAgB1qH,GAAWA,EAC9F,OAAKwM,EAAUqiH,GAGRD,EAAiBr6I,QAAO,SAAS+3I,GACtC,OAAO9/G,EAAU8/G,IAAmB9rF,EAAS8rF,EAAgBuC,IAAmD,SAAhCpG,EAAY6D,MAHrF,GAOkDwC,CAAmB9uH,GAAW,GAAG7I,OAAO20D,GAC/F8iE,EAAmB,GAAGz3H,OAAOw3H,EAAqB,CAACV,IACnDc,EAAsBH,EAAiB,GACvCI,EAAeJ,EAAiBr9I,QAAO,SAAS09I,EAAS3C,GAC3D,IAAIjlE,EAAOglE,EAA2BrsH,EAASssH,GAK/C,OAJA2C,EAAQrqG,IAAMtlB,EAAI+nD,EAAKziC,IAAKqqG,EAAQrqG,KACpCqqG,EAAQpqG,MAAQvuB,EAAI+wD,EAAKxiC,MAAOoqG,EAAQpqG,OACxCoqG,EAAQnqG,OAASxuB,EAAI+wD,EAAKviC,OAAQmqG,EAAQnqG,QAC1CmqG,EAAQlqG,KAAOzlB,EAAI+nD,EAAKtiC,KAAMkqG,EAAQlqG,MAC/BkqG,IACN5C,EAA2BrsH,EAAS+uH,IAKvC,OAJAC,EAAa5nJ,MAAQ4nJ,EAAanqG,MAAQmqG,EAAajqG,KACvDiqG,EAAa3nJ,OAAS2nJ,EAAalqG,OAASkqG,EAAapqG,IACzDoqG,EAAalvG,EAAIkvG,EAAajqG,KAC9BiqG,EAAajvG,EAAIivG,EAAapqG,IACvBoqG,EAsGkBE,CAAgB1iH,EAAUxM,GAAWA,EAAUA,EAAQmvH,gBAAkBxG,EAAmBj1G,EAAM0R,SAASkmG,QAASx/D,EAAUmiE,GACnJmB,EAAsB9oC,EAAsBkoC,GAC5Ca,EAAiBrC,EAAe,CAClCG,UAAWiC,EACXpvH,QAASyuH,EACT5N,SAAU,WACVmF,UAAAA,IAEEsJ,EAAmBlD,EAAiB3kJ,OAAOge,OAAO,GAAIgpI,EAAYY,IAClEE,EAAoBpB,IAAmB7C,EAASgE,EAAmBF,EACnEI,EAAkB,CACpB5qG,IAAK8pG,EAAmB9pG,IAAM2qG,EAAkB3qG,IAAM8oG,EAAc9oG,IACpEE,OAAQyqG,EAAkBzqG,OAAS4pG,EAAmB5pG,OAAS4oG,EAAc5oG,OAC7EC,KAAM2pG,EAAmB3pG,KAAOwqG,EAAkBxqG,KAAO2oG,EAAc3oG,KACvEF,MAAO0qG,EAAkB1qG,MAAQ6pG,EAAmB7pG,MAAQ6oG,EAAc7oG,OAExE4qG,EAAa/7G,EAAMg8G,cAAc5hG,OACrC,GAAIqgG,IAAmB7C,GAAUmE,EAAY,CAC3C,IAAIE,EAAUF,EAAWzJ,GACzBv+I,OAAOkQ,KAAK63I,GAAiBxhJ,SAAQ,SAASqB,GAC5C,IAAIugJ,EAAW,CAAC/qG,EAAOC,GAAQlwC,QAAQvF,IAAQ,EAAI,GAAK,EACpDmuC,EAAO,CAACoH,EAAKE,GAAQlwC,QAAQvF,IAAQ,EAAI,IAAM,IACnDmgJ,EAAgBngJ,IAAQsgJ,EAAQnyG,GAAQoyG,KAG5C,OAAOJ,EAIT,IAAIK,EAAkB,CACpB7J,UAAW,SACX0F,UAAW,GACX7K,SAAU,YAEZ,SAASiP,IACP,IAAK,IAAIC,EAAOroI,UAAU1d,OAAQ0B,EAAO,IAAII,MAAMikJ,GAAOxiI,EAAO,EAAGA,EAAOwiI,EAAMxiI,IAC/E7hB,EAAK6hB,GAAQ7F,UAAU6F,GAEzB,OAAQ7hB,EAAKtB,MAAK,SAAS41B,GACzB,QAASA,GAAoD,mBAAlCA,EAAQsmF,0BAGvC,SAAS0pC,EAAgBC,QACE,IAArBA,IACFA,EAAmB,IAErB,IAAIC,EAAoBD,EAAkBE,EAAwBD,EAAkBE,iBAAkBC,OAA8C,IAA1BF,EAAmC,GAAKA,EAAuBG,EAAyBJ,EAAkBK,eAAgBA,OAA4C,IAA3BD,EAAoCT,EAAkBS,EAC3T,OAAO,SAAuBpD,EAAYsD,EAASvnJ,QACjC,IAAZA,IACFA,EAAUsnJ,GAEZ,IArTcE,EACZzmB,EAoTEt2F,EAAQ,CACVsyG,UAAW,SACX0K,iBAAkB,GAClBznJ,QAASxB,OAAOge,OAAO,GAAIoqI,EAAiBU,GAC5Cb,cAAe,GACftqG,SAAU,CACR+nG,UAAWD,EACX5B,OAAQkF,GAEVG,WAAY,GACZ7qC,OAAQ,IAEN8qC,EAAmB,GACnBC,GAAc,EACd1lB,EAAW,CACbz3F,MAAAA,EACAo9G,WAAY,SAAoBC,GAC9BC,IACAt9G,EAAMzqC,QAAUxB,OAAOge,OAAO,GAAI8qI,EAAgB78G,EAAMzqC,QAAS8nJ,GACjEr9G,EAAMu9G,cAAgB,CACpB9D,UAAW3gH,EAAU0gH,GAAcjD,EAAkBiD,GAAcA,EAAWiC,eAAiBlF,EAAkBiD,EAAWiC,gBAAkB,GAC9I7D,OAAQrB,EAAkBuG,IAE5B,IAvTa9E,EACfwF,EAsTMR,EAtVZ,SAAwBhF,GACtB,IAAIgF,EAAmB3zE,EAAM2uE,GAC7B,OAAOD,EAAel6I,QAAO,SAASC,EAAK2/I,GACzC,OAAO3/I,EAAI2lB,OAAOu5H,EAAiBn8I,QAAO,SAASo3I,GACjD,OAAOA,EAASwF,QAAUA,QAE3B,IAgV0BC,EAvTV1F,EAuTqC,GAAGv0H,OAAOk5H,EAAmB38G,EAAMzqC,QAAQyiJ,WAtT/FwF,EAASxF,EAAUn6I,QAAO,SAAS8/I,EAASlqH,GAC9C,IAAImqH,EAAWD,EAAQlqH,EAAQ/+B,MAK/B,OAJAipJ,EAAQlqH,EAAQ/+B,MAAQkpJ,EAAW7pJ,OAAOge,OAAO,GAAI6rI,EAAUnqH,EAAS,CACtEl+B,QAASxB,OAAOge,OAAO,GAAI6rI,EAASroJ,QAASk+B,EAAQl+B,SACrDgO,KAAMxP,OAAOge,OAAO,GAAI6rI,EAASr6I,KAAMkwB,EAAQlwB,QAC5CkwB,EACEkqH,IACN,IACI5pJ,OAAOkQ,KAAKu5I,GAAQx8I,KAAI,SAASrF,GACtC,OAAO6hJ,EAAO7hJ,QAwUV,OA1BAqkC,EAAMg9G,iBAAmBA,EAAiBn8I,QAAO,SAASqpF,GACxD,OAAOA,EAAE1pF,WA+Fbw/B,EAAMg9G,iBAAiB1iJ,SAAQ,SAASujJ,GACtC,IAAInpJ,EAAOmpJ,EAAMnpJ,KAAMopJ,EAAgBD,EAAMtoJ,QAAS8nJ,OAA6B,IAAlBS,EAA2B,GAAKA,EAAeC,EAAUF,EAAMG,OAChI,GAAuB,mBAAZD,EAAwB,CACjC,IAAIE,EAAYF,EAAQ,CACtB/9G,MAAAA,EACAtrC,KAAAA,EACA+iI,SAAAA,EACAliI,QAAS8nJ,IAIXH,EAAiBhhJ,KAAK+hJ,GAFT,kBA/ERxmB,EAAS33H,UAElBo+I,YAAa,WACX,IAAIf,EAAJ,CAGA,IAAIgB,EAAkBn+G,EAAM0R,SAAU0sG,EAAaD,EAAgB1E,UAAW4E,EAAUF,EAAgBvG,OACxG,GAAKwE,EAAiBgC,EAAYC,GAAlC,CAMAr+G,EAAMia,MAAQ,CACZw/F,UAAWjE,EAAiB4I,EAAYpH,EAAgBqH,GAAqC,UAA3Br+G,EAAMzqC,QAAQ43I,UAChFyK,OAAQ5B,EAAcqI,IAExBr+G,EAAMyN,OAAQ,EACdzN,EAAMsyG,UAAYtyG,EAAMzqC,QAAQ+8I,UAChCtyG,EAAMg9G,iBAAiB1iJ,SAAQ,SAAS29I,GACtC,OAAOj4G,EAAMg8G,cAAc/D,EAASvjJ,MAAQX,OAAOge,OAAO,GAAIkmI,EAAS10I,SAGzE,IADA,IACS+f,EAAQ,EAAGA,EAAQ0c,EAAMg9G,iBAAiB1mJ,OAAQgtB,IAQzD,IAAoB,IAAhB0c,EAAMyN,MAAV,CAKA,IAAI6wG,EAAwBt+G,EAAMg9G,iBAAiB15H,GAAQy5H,EAAMuB,EAAsB3qI,GAAI4qI,EAAyBD,EAAsB/oJ,QAASd,OAAsC,IAA3B8pJ,EAAoC,GAAKA,EAAwB7pJ,EAAO4pJ,EAAsB5pJ,KACzO,mBAARqoJ,IACT/8G,EAAQ+8G,EAAI,CACV/8G,MAAAA,EACAzqC,QAASd,EACTC,KAAAA,EACA+iI,SAAAA,KACIz3F,QAXNA,EAAMyN,OAAQ,EACdnqB,GAAS,KAcfxjB,QAtZYi9I,EAsZK,WACf,OAAO,IAAInrI,SAAQ,SAAS1P,GAC1Bu1H,EAASymB,cACTh8I,EAAQ89B,OAvZT,WASL,OARKs2F,IACHA,EAAU,IAAI1kH,SAAQ,SAAS1P,GAC7B0P,QAAQ1P,UAAUnD,MAAK,WACrBu3H,OAAU,EACVp0H,EAAQ66I,YAIPzmB,IAiZLlrD,QAAS,WACPkyE,IACAH,GAAc,IAGlB,IAAKf,EAAiB5C,EAAYsD,GAIhC,OAAOrlB,EAuBT,SAAS6lB,IACPJ,EAAiB5iJ,SAAQ,SAASyiJ,GAChC,OAAOA,OAETG,EAAmB,GAErB,OA3BAzlB,EAAS2lB,WAAW7nJ,GAASwJ,MAAK,SAASy/I,IACpCrB,GAAe5nJ,EAAQkpJ,eAC1BlpJ,EAAQkpJ,cAAcD,MAyBnB/mB,GAyEX,SAASinB,EAAOC,EAAM1qJ,EAAO2qJ,GAC3B,OAAOhzH,EAAI+yH,EAAM/7H,EAAI3uB,EAAO2qJ,IA+D9B,IAWIC,EAAa,CACf3tG,IAAK,OACLC,MAAO,OACPC,OAAQ,OACRC,KAAM,QAWR,SAASytG,GAAYC,GACnB,IAAIC,EACAlC,EAAUiC,EAAMnH,OAAQmD,EAAagE,EAAMhE,WAAYzI,EAAYyM,EAAMzM,UAAWliD,EAAU2uD,EAAM3uD,QAASrrC,EAAWg6F,EAAMh6F,SAAUk6F,EAAkBF,EAAME,gBAAiBC,EAAWH,EAAMG,SAAUC,EAAeJ,EAAMI,aACjOtB,GAAyB,IAAjBsB,EAZd,SAA2B5F,GACzB,IAAIntG,EAAImtG,EAAKntG,EAAGC,EAAIktG,EAAKltG,EAErBshB,EADM7wD,OACI8wD,kBAAoB,EAClC,MAAO,CACLxhB,EAAG2kB,EAAMA,EAAM3kB,EAAIuhB,GAAOA,IAAQ,EAClCthB,EAAG0kB,EAAMA,EAAM1kB,EAAIshB,GAAOA,IAAQ,GAMAyxF,CAAkBhvD,GAAmC,mBAAjB+uD,EAA8BA,EAAa/uD,GAAWA,EAASivD,EAAUxB,EAAMzxG,EAAGA,OAAgB,IAAZizG,EAAqB,EAAIA,EAASC,EAAUzB,EAAMxxG,EAAGA,OAAgB,IAAZizG,EAAqB,EAAIA,EAC5OC,EAAOnvD,EAAQ53F,eAAe,KAC9BgnJ,EAAOpvD,EAAQ53F,eAAe,KAC9BinJ,EAAQpuG,EACRquG,EAAQxuG,EACRojG,EAAMx3I,OACV,GAAIoiJ,EAAU,CACZ,IAAIxJ,EAAesB,EAAgB8F,GAC/B6C,EAAa,eACbC,EAAY,cACZlK,IAAiBxB,EAAU4I,IAEmB,WAA5C7qC,EADJyjC,EAAeT,EAAmB6H,IACC/3F,WACjC46F,EAAa,eACbC,EAAY,eAGZtN,IAAcphG,IAChBwuG,EAAQtuG,EACR/E,GAAKqpG,EAAaiK,GAAc5E,EAAWpnJ,OAC3C04C,GAAK4yG,EAAkB,GAAK,GAE1B3M,IAAcjhG,IAChBouG,EAAQtuG,EACR/E,GAAKspG,EAAakK,GAAa7E,EAAWrnJ,MAC1C04C,GAAK6yG,EAAkB,GAAK,GAGhC,IAIMY,EAJFC,EAAe/rJ,OAAOge,OAAO,CAC/BgzC,SAAAA,GACCm6F,GAAYL,GACf,OAAII,EAEKlrJ,OAAOge,OAAO,GAAI+tI,IAAeD,EAAiB,IAAmBH,GAASF,EAAO,IAAM,GAAIK,EAAeJ,GAASF,EAAO,IAAM,GAAIM,EAAezI,WAAa9C,EAAI1mF,kBAAoB,GAAK,EAAI,aAAexhB,EAAI,OAASC,EAAI,MAAQ,eAAiBD,EAAI,OAASC,EAAI,SAAUwzG,IAE3R9rJ,OAAOge,OAAO,GAAI+tI,IAAed,EAAkB,IAAoBU,GAASF,EAAOnzG,EAAI,KAAO,GAAI2yG,EAAgBS,GAASF,EAAOnzG,EAAI,KAAO,GAAI4yG,EAAgB5H,UAAY,GAAI4H,IAuC9L,IASItyF,GAAU,CACZA,SAAS,GAqCPqzF,GAAO,CACT1uG,KAAM,QACNF,MAAO,OACPC,OAAQ,MACRF,IAAK,UAEP,SAAS8uG,GAAqB1N,GAC5B,OAAOA,EAAUl1I,QAAQ,0BAA0B,SAAS6iJ,GAC1D,OAAOF,GAAKE,MAKhB,IAAIC,GAAQ,CACV9xH,MAAO,MACPD,IAAK,SAEP,SAASgyH,GAA8B7N,GACrC,OAAOA,EAAUl1I,QAAQ,cAAc,SAAS6iJ,GAC9C,OAAOC,GAAMD,MAgJjB,SAASG,GAAe/K,EAAU1hE,EAAM0sE,GAOtC,YANyB,IAArBA,IACFA,EAAmB,CACjBj0G,EAAG,EACHC,EAAG,IAGA,CACL6E,IAAKmkG,EAASnkG,IAAMyiC,EAAKhgF,OAAS0sJ,EAAiBh0G,EACnD8E,MAAOkkG,EAASlkG,MAAQwiC,EAAKjgF,MAAQ2sJ,EAAiBj0G,EACtDgF,OAAQikG,EAASjkG,OAASuiC,EAAKhgF,OAAS0sJ,EAAiBh0G,EACzDgF,KAAMgkG,EAAShkG,KAAOsiC,EAAKjgF,MAAQ2sJ,EAAiBj0G,GAGxD,SAASk0G,GAAsBjL,GAC7B,MAAO,CAACnkG,EAAKC,EAAOC,EAAQC,GAAM36C,MAAK,SAAS6pJ,GAC9C,OAAOlL,EAASkL,IAAS,KA2K7B,IAUIC,GAA+BlE,EAAgB,CACjDI,iBAFqB,CAlXM,CAC3BhoJ,KAAM,iBACN8L,SAAS,EACTi9I,MAAO,QACP9pI,GAAI,aAEJqqI,OA9BF,SAAiBzE,GACf,IAAIv5G,EAAQu5G,EAAKv5G,MAAOy3F,EAAW8hB,EAAK9hB,SAAUliI,EAAUgkJ,EAAKhkJ,QAC7DkrJ,EAAkBlrJ,EAAQsgJ,OAAQA,OAA6B,IAApB4K,GAAoCA,EAAiBC,EAAkBnrJ,EAAQ8wC,OAAQA,OAA6B,IAApBq6G,GAAoCA,EAC/KzJ,EAAU/C,EAAUl0G,EAAM0R,SAASkmG,QACnC2F,EAAgB,GAAG95H,OAAOuc,EAAMu9G,cAAc9D,UAAWz5G,EAAMu9G,cAAc3F,QASjF,OARI/B,GACF0H,EAAcjjJ,SAAQ,SAASo8I,GAC7BA,EAAa3mI,iBAAiB,SAAU0nH,EAAS33H,OAAQ4sD,OAGzDrmB,GACF4wG,EAAQlnI,iBAAiB,SAAU0nH,EAAS33H,OAAQ4sD,IAE/C,WACDmpF,GACF0H,EAAcjjJ,SAAQ,SAASo8I,GAC7BA,EAAavtH,oBAAoB,SAAUsuG,EAAS33H,OAAQ4sD,OAG5DrmB,GACF4wG,EAAQ9tH,oBAAoB,SAAUsuG,EAAS33H,OAAQ4sD,MAW3DnpD,KAAM,IA6QoB,CAC1B7O,KAAM,gBACN8L,SAAS,EACTi9I,MAAO,OACP9pI,GAbF,SAAuB4lI,GACrB,IAAIv5G,EAAQu5G,EAAKv5G,MAAOtrC,EAAO6kJ,EAAK7kJ,KACpCsrC,EAAMg8G,cAActnJ,GAAQ4kJ,EAAe,CACzCG,UAAWz5G,EAAMia,MAAMw/F,UACvBntH,QAAS0T,EAAMia,MAAM29F,OACrBzK,SAAU,WACVmF,UAAWtyG,EAAMsyG,aAQnB/uI,KAAM,IA7ToB,CAC1B7O,KAAM,gBACN8L,SAAS,EACTi9I,MAAO,cACP9pI,GAzCF,SAAuBgtI,GACrB,IAAI3gH,EAAQ2gH,EAAM3gH,MAAOzqC,EAAUorJ,EAAMprJ,QACrCqrJ,EAAwBrrJ,EAAQ0pJ,gBAAiBA,OAA4C,IAA1B2B,GAA0CA,EAAuBC,EAAoBtrJ,EAAQ2pJ,SAAUA,OAAiC,IAAtB2B,GAAsCA,EAAmBC,EAAwBvrJ,EAAQ4pJ,aAAcA,OAAyC,IAA1B2B,GAA0CA,EASrVhB,EAAe,CACjBxN,UAAWgG,EAAiBt4G,EAAMsyG,WAClCsF,OAAQ53G,EAAM0R,SAASkmG,OACvBmD,WAAY/6G,EAAMia,MAAM29F,OACxBqH,gBAAAA,GAEuC,MAArCj/G,EAAMg8G,cAAc+E,gBACtB/gH,EAAMoyE,OAAOwlC,OAAS7jJ,OAAOge,OAAO,GAAIiuB,EAAMoyE,OAAOwlC,OAAQkH,GAAY/qJ,OAAOge,OAAO,GAAI+tI,EAAc,CACvG1vD,QAASpwD,EAAMg8G,cAAc+E,cAC7Bh8F,SAAU/kB,EAAMzqC,QAAQ43I,SACxB+R,SAAAA,EACAC,aAAAA,OAG6B,MAA7Bn/G,EAAMg8G,cAAcgF,QACtBhhH,EAAMoyE,OAAO4uC,MAAQjtJ,OAAOge,OAAO,GAAIiuB,EAAMoyE,OAAO4uC,MAAOlC,GAAY/qJ,OAAOge,OAAO,GAAI+tI,EAAc,CACrG1vD,QAASpwD,EAAMg8G,cAAcgF,MAC7Bj8F,SAAU,WACVm6F,UAAU,EACVC,aAAAA,OAGJn/G,EAAMi9G,WAAWrF,OAAS7jJ,OAAOge,OAAO,GAAIiuB,EAAMi9G,WAAWrF,OAAQ,CACnE,wBAAyB53G,EAAMsyG,aAQjC/uI,KAAM,IAtLkB,CACxB7O,KAAM,cACN8L,SAAS,EACTi9I,MAAO,QACP9pI,GA9DF,SAAqB4lI,GACnB,IAAIv5G,EAAQu5G,EAAKv5G,MACjBjsC,OAAOkQ,KAAK+7B,EAAM0R,UAAUp3C,SAAQ,SAAS5F,GAC3C,IAAI8qD,EAAQxf,EAAMoyE,OAAO19G,IAAS,GAC9BuoJ,EAAaj9G,EAAMi9G,WAAWvoJ,IAAS,GACvC43B,EAAU0T,EAAM0R,SAASh9C,GACxBigJ,EAAcroH,IAAayoH,EAAYzoH,KAG5Cv4B,OAAOge,OAAOua,EAAQkzB,MAAOA,GAC7BzrD,OAAOkQ,KAAKg5I,GAAY3iJ,SAAQ,SAAS2mJ,GACvC,IAAIhtJ,EAAQgpJ,EAAWgE,IACT,IAAVhtJ,EACFq4B,EAAQ4iC,gBAAgB+xF,GAExB30H,EAAQ6iC,aAAa8xF,GAAiB,IAAVhtJ,EAAiB,GAAKA,WAgDxD+pJ,OA3CF,SAAgBe,GACd,IAAI/+G,EAAQ++G,EAAM/+G,MACdkhH,EAAgB,CAClBtJ,OAAQ,CACN7yF,SAAU/kB,EAAMzqC,QAAQ43I,SACxB97F,KAAM,IACNH,IAAK,IACLyX,OAAQ,KAEVq4F,MAAO,CACLj8F,SAAU,YAEZ00F,UAAW,IAOb,OALA1lJ,OAAOge,OAAOiuB,EAAM0R,SAASkmG,OAAOp4F,MAAO0hG,EAActJ,QACzD53G,EAAMoyE,OAAS8uC,EACXlhH,EAAM0R,SAASsvG,OACjBjtJ,OAAOge,OAAOiuB,EAAM0R,SAASsvG,MAAMxhG,MAAO0hG,EAAcF,OAEnD,WACLjtJ,OAAOkQ,KAAK+7B,EAAM0R,UAAUp3C,SAAQ,SAAS5F,GAC3C,IAAI43B,EAAU0T,EAAM0R,SAASh9C,GACzBuoJ,EAAaj9G,EAAMi9G,WAAWvoJ,IAAS,GAEvC8qD,EADkBzrD,OAAOkQ,KAAK+7B,EAAMoyE,OAAO55G,eAAe9D,GAAQsrC,EAAMoyE,OAAO19G,GAAQwsJ,EAAcxsJ,IAC7EmJ,QAAO,SAASsjJ,EAAQ/sI,GAElD,OADA+sI,EAAO/sI,GAAY,GACZ+sI,IACN,IACExM,EAAcroH,IAAayoH,EAAYzoH,KAG5Cv4B,OAAOge,OAAOua,EAAQkzB,MAAOA,GAC7BzrD,OAAOkQ,KAAKg5I,GAAY3iJ,SAAQ,SAAS8mJ,GACvC90H,EAAQ4iC,gBAAgBkyF,YAW9BlJ,SAAU,CAAC,kBAidQ,CACnBxjJ,KAAM,SACN8L,SAAS,EACTi9I,MAAO,OACPvF,SAAU,CAAC,iBACXvkI,GAnBF,SAAgBorI,GACd,IAAI/+G,EAAQ++G,EAAM/+G,MAAOzqC,EAAUwpJ,EAAMxpJ,QAASb,EAAOqqJ,EAAMrqJ,KAC3D2sJ,EAAkB9rJ,EAAQ6kD,OAAQ6hG,OAA8B,IAApBoF,EAA6B,CAAC,EAAG,GAAKA,EAClF99I,EAAOu0I,EAAWj6I,QAAO,SAASC,EAAKw0I,GAEzC,OADAx0I,EAAIw0I,GApBR,SAAiCA,EAAWr4F,EAAOgiG,GACjD,IAAIvC,EAAgBpB,EAAiBhG,GACjCgP,EAAiB,CAACjwG,EAAMH,GAAKhwC,QAAQw4I,IAAkB,GAAK,EAAI,EAChEH,EAA0B,mBAAZ0C,EAAyBA,EAAQloJ,OAAOge,OAAO,GAAIkoC,EAAO,CAC1Eq4F,UAAAA,KACI2J,EAASsF,EAAWhI,EAAK,GAAIpzF,EAAWozF,EAAK,GAGnD,OAFAgI,EAAWA,GAAY,EACvBp7F,GAAYA,GAAY,GAAKm7F,EACtB,CAACjwG,EAAMF,GAAOjwC,QAAQw4I,IAAkB,EAAI,CACjDttG,EAAG+Z,EACH9Z,EAAGk1G,GACD,CACFn1G,EAAGm1G,EACHl1G,EAAG8Z,GAOcq7F,CAAwBlP,EAAWtyG,EAAMia,MAAOgiG,GAC1Dn+I,IACN,IACC2jJ,EAAwBl+I,EAAKy8B,EAAMsyG,WAAYlmG,EAAIq1G,EAAsBr1G,EAAGC,EAAIo1G,EAAsBp1G,EACjE,MAArCrM,EAAMg8G,cAAc+E,gBACtB/gH,EAAMg8G,cAAc+E,cAAc30G,GAAKA,EACvCpM,EAAMg8G,cAAc+E,cAAc10G,GAAKA,GAEzCrM,EAAMg8G,cAActnJ,GAAQ6O,IA9FX,CACjB7O,KAAM,OACN8L,SAAS,EACTi9I,MAAO,OACP9pI,GA3FF,SAAc4lI,GACZ,IAAIv5G,EAAQu5G,EAAKv5G,MAAOzqC,EAAUgkJ,EAAKhkJ,QAASb,EAAO6kJ,EAAK7kJ,KAC5D,IAAIsrC,EAAMg8G,cAActnJ,GAAMg8C,MAA9B,CAuBA,IApBA,IAAIgxG,EAAoBnsJ,EAAQukJ,SAAU6H,OAAsC,IAAtBD,GAAsCA,EAAmBE,EAAmBrsJ,EAAQssJ,QAASC,OAAoC,IAArBF,GAAqCA,EAAkBG,EAA8BxsJ,EAAQysJ,mBAAoB34F,EAAU9zD,EAAQ8zD,QAAS+uB,EAAW7iF,EAAQ6iF,SAAUmiE,EAAehlJ,EAAQglJ,aAAcI,EAAcplJ,EAAQolJ,YAAasH,EAAwB1sJ,EAAQ2sJ,eAAgBA,OAA2C,IAA1BD,GAA0CA,EAAuBE,EAAwB5sJ,EAAQ4sJ,sBACrjBC,EAAqBpiH,EAAMzqC,QAAQ+8I,UACnCoH,EAAgBpB,EAAiB8J,GAEjCJ,EAAqBD,IADHrI,IAAkB0I,GACqCF,EAhB/E,SAAuC5P,GACrC,GAAIgG,EAAiBhG,KAAemF,EAClC,MAAO,GAET,IAAI4K,EAAoBrC,GAAqB1N,GAC7C,MAAO,CAAC6N,GAA8B7N,GAAY+P,EAAmBlC,GAA8BkC,IAWwCC,CAA8BF,GAA3E,CAACpC,GAAqBoC,KAChHG,EAAc,CAACH,GAAoB3+H,OAAOu+H,GAAoBnkJ,QAAO,SAASC,EAAK0kJ,GACrF,OAAO1kJ,EAAI2lB,OAAO60H,EAAiBkK,KAAgB/K,EAnDvD,SAA8Bz3G,EAAOzqC,QACnB,IAAZA,IACFA,EAAU,IAEZ,IAAId,EAAWc,EAAS+8I,EAAY79I,EAAS69I,UAAWl6D,EAAW3jF,EAAS2jF,SAAUmiE,EAAe9lJ,EAAS8lJ,aAAclxF,EAAU50D,EAAS40D,QAAS64F,EAAiBztJ,EAASytJ,eAAgBO,EAAwBhuJ,EAAS0tJ,sBAAuBA,OAAkD,IAA1BM,EAAmC3K,EAAa2K,EAC9T9I,EAAYP,EAAa9G,GACzBiQ,EAAc5I,EAAYuI,EAAiBrK,EAAsBA,EAAoBh3I,QAAO,SAAS2hJ,GACvG,OAAOpJ,EAAaoJ,KAAgB7I,KACjCjC,EACDgL,EAAoBH,EAAY1hJ,QAAO,SAAS2hJ,GAClD,OAAOL,EAAsBjhJ,QAAQshJ,IAAe,KAErB,IAA7BE,EAAkBpsJ,SACpBosJ,EAAoBH,GAKtB,IAAII,EAAYD,EAAkB7kJ,QAAO,SAASC,EAAK0kJ,GAOrD,OANA1kJ,EAAI0kJ,GAAcrI,EAAen6G,EAAO,CACtCsyG,UAAWkQ,EACXpqE,SAAAA,EACAmiE,aAAAA,EACAlxF,QAAAA,IACCivF,EAAiBkK,IACb1kJ,IACN,IACH,OAAO/J,OAAOkQ,KAAK0+I,GAAW1lH,MAAK,SAASS,EAAGp6B,GAC7C,OAAOq/I,EAAUjlH,GAAKilH,EAAUr/I,MAuB0Bs/I,CAAqB5iH,EAAO,CACpFsyG,UAAWkQ,EACXpqE,SAAAA,EACAmiE,aAAAA,EACAlxF,QAAAA,EACA64F,eAAAA,EACAC,sBAAAA,IACGK,KACJ,IACCK,EAAgB7iH,EAAMia,MAAMw/F,UAC5BsB,EAAa/6G,EAAMia,MAAM29F,OACzBkL,EAAY,IAAIhhH,IAChBihH,GAAqB,EACrBC,EAAwBT,EAAY,GAC/BnrJ,EAAI,EAAGA,EAAImrJ,EAAYjsJ,OAAQc,IAAK,CAC3C,IAAIk7I,EAAYiQ,EAAYnrJ,GACxB6rJ,EAAiB3K,EAAiBhG,GAClC4Q,EAAmB9J,EAAa9G,KAAelkH,EAC/C+0H,EAAa,CAACjyG,EAAKE,GAAQlwC,QAAQ+hJ,IAAmB,EACtD5uH,EAAM8uH,EAAa,QAAU,SAC7B9N,EAAW8E,EAAen6G,EAAO,CACnCsyG,UAAAA,EACAl6D,SAAAA,EACAmiE,aAAAA,EACAI,YAAAA,EACAtxF,QAAAA,IAEE+5F,EAAoBD,EAAaD,EAAmB/xG,EAAQE,EAAO6xG,EAAmB9xG,EAASF,EAC/F2xG,EAAcxuH,GAAO0mH,EAAW1mH,KAClC+uH,EAAoBpD,GAAqBoD,IAE3C,IAAIC,EAAmBrD,GAAqBoD,GACxCE,EAAS,GAOb,GANI3B,GACF2B,EAAOpnJ,KAAKm5I,EAAS4N,IAAmB,GAEtCnB,GACFwB,EAAOpnJ,KAAKm5I,EAAS+N,IAAsB,EAAG/N,EAASgO,IAAqB,GAE1EC,EAAOvlJ,OAAM,SAASwlJ,GACxB,OAAOA,KACL,CACFP,EAAwB1Q,EACxByQ,GAAqB,EACrB,MAEFD,EAAUx/G,IAAIgvG,EAAWgR,GAE3B,GAAIP,EAgBF,IAfA,IACIj+G,EAAQ,SAAgB0+G,GAC1B,IAAIC,EAAmBlB,EAAYmB,MAAK,SAASlB,GAC/C,IAAImB,EAAUb,EAAU9wI,IAAIwwI,GAC5B,GAAImB,EACF,OAAOA,EAAQ1pJ,MAAM,EAAGupJ,GAAKzlJ,OAAM,SAASwlJ,GAC1C,OAAOA,QAIb,GAAIE,EAEF,OADAT,EAAwBS,EACjB,SAGFzf,EAfYke,EAAiB,EAAI,EAeZle,EAAK,GAEpB,UADFl/F,EAAMk/F,GADmBA,KAMpChkG,EAAMsyG,YAAc0Q,IACtBhjH,EAAMg8G,cAActnJ,GAAMg8C,OAAQ,EAClC1Q,EAAMsyG,UAAY0Q,EAClBhjH,EAAMyN,OAAQ,KAQhB0qG,iBAAkB,CAAC,UACnB50I,KAAM,CACJmtC,OAAO,IAgMmB,CAC5Bh8C,KAAM,kBACN8L,SAAS,EACTi9I,MAAO,OACP9pI,GA3EF,SAAyB4lI,GACvB,IAAIv5G,EAAQu5G,EAAKv5G,MAAOzqC,EAAUgkJ,EAAKhkJ,QAASb,EAAO6kJ,EAAK7kJ,KACxDgtJ,EAAoBnsJ,EAAQukJ,SAAU6H,OAAsC,IAAtBD,GAAsCA,EAAmBE,EAAmBrsJ,EAAQssJ,QAASC,OAAoC,IAArBF,GAAsCA,EAAkBxpE,EAAW7iF,EAAQ6iF,SAAUmiE,EAAehlJ,EAAQglJ,aAAcI,EAAcplJ,EAAQolJ,YAAatxF,EAAU9zD,EAAQ8zD,QAASu6F,EAAkBruJ,EAAQsuJ,OAAQA,OAA6B,IAApBD,GAAoCA,EAAiBE,EAAwBvuJ,EAAQwuJ,aAAcA,OAAyC,IAA1BD,EAAmC,EAAIA,EAC9hBzO,EAAW8E,EAAen6G,EAAO,CACnCo4C,SAAAA,EACAmiE,aAAAA,EACAlxF,QAAAA,EACAsxF,YAAAA,IAEEjB,EAAgBpB,EAAiBt4G,EAAMsyG,WACvCqH,EAAYP,EAAap5G,EAAMsyG,WAC/B0R,GAAmBrK,EACnBG,EAAWT,EAAyBK,GACpCmI,EAjBY,MAiBS/H,EAjBH,IAAM,IAkBxB6B,EAAiB37G,EAAMg8G,cAAc+E,cACrC8B,EAAgB7iH,EAAMia,MAAMw/F,UAC5BsB,EAAa/6G,EAAMia,MAAM29F,OACzBqM,EAA4C,mBAAjBF,EAA8BA,EAAahwJ,OAAOge,OAAO,GAAIiuB,EAAMia,MAAO,CACvGq4F,UAAWtyG,EAAMsyG,aACbyR,EACFxgJ,EAAO,CACT6oC,EAAG,EACHC,EAAG,GAEL,GAAKsvG,EAAL,CAGA,GAAIgG,GAAiBG,EAAc,CACjC,IAAIoC,EAAwB,MAAbpK,EAAmB5oG,EAAMG,EACpC8yG,EAAuB,MAAbrK,EAAmB1oG,EAASD,EACtC9c,EAAmB,MAAbylH,EAAmB,SAAW,QACpCmC,EAAUN,EAAe7B,GACzB6E,EAAOhD,EAAe7B,GAAYzE,EAAS6O,GAC3CtF,EAAOjD,EAAe7B,GAAYzE,EAAS8O,GAC3CC,EAAWP,GAAU9I,EAAW1mH,GAAO,EAAI,EAC3CgwH,EAAS1K,IAAcvrH,EAAQy0H,EAAcxuH,GAAO0mH,EAAW1mH,GAC/DiwH,EAAS3K,IAAcvrH,GAAS2sH,EAAW1mH,IAAQwuH,EAAcxuH,GACjEkwH,EAAevkH,EAAM0R,SAASsvG,MAC9BwD,EAAYX,GAAUU,EAAevO,EAAcuO,GAAgB,CACrE7wJ,MAAO,EACPC,OAAQ,GAEN8wJ,EAAqBzkH,EAAMg8G,cAAc,oBAAsBh8G,EAAMg8G,cAAc,oBAAoB3yF,QAh0BtG,CACLnY,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,KAAM,GA6zBFqzG,EAAkBD,EAAmBP,GACrCS,GAAkBF,EAAmBN,GACrCS,GAAWlG,EAAO,EAAGmE,EAAcxuH,GAAMmwH,EAAUnwH,IACnDwwH,GAAYb,EAAkBnB,EAAcxuH,GAAO,EAAI+vH,EAAWQ,GAAWF,EAAkBT,EAAoBI,EAASO,GAAWF,EAAkBT,EACzJa,GAAYd,GAAmBnB,EAAcxuH,GAAO,EAAI+vH,EAAWQ,GAAWD,GAAkBV,EAAoBK,EAASM,GAAWD,GAAkBV,EAC1Jc,GAAoB/kH,EAAM0R,SAASsvG,OAAShK,EAAgBh3G,EAAM0R,SAASsvG,OAC3EgE,GAAeD,GAAiC,MAAbjL,EAAmBiL,GAAkBhP,WAAa,EAAIgP,GAAkBjP,YAAc,EAAI,EAC7HmP,GAAsBjlH,EAAMg8G,cAAc5hG,OAASpa,EAAMg8G,cAAc5hG,OAAOpa,EAAMsyG,WAAWwH,GAAY,EAC3GoL,GAAYvJ,EAAe7B,GAAY+K,GAAYI,GAAsBD,GACzEG,GAAYxJ,EAAe7B,GAAYgL,GAAYG,GACvD,GAAItD,EAAe,CACjB,IAAIyD,GAAkB1G,EAAOmF,EAASjhI,EAAI+7H,EAAMuG,IAAavG,EAAM1C,EAAS4H,EAASj4H,EAAIgzH,EAAMuG,IAAavG,GAC5GjD,EAAe7B,GAAYsL,GAC3B7hJ,EAAKu2I,GAAYsL,GAAkBnJ,EAErC,GAAI6F,EAAc,CAChB,IAAIuD,GAAyB,MAAbvL,EAAmB5oG,EAAMG,EACrCi0G,GAAwB,MAAbxL,EAAmB1oG,EAASD,EACvCo0G,GAAU5J,EAAekG,GACzB2D,GAAOD,GAAUlQ,EAASgQ,IAC1BI,GAAOF,GAAUlQ,EAASiQ,IAC1BI,GAAmBhH,EAAOmF,EAASjhI,EAAI4iI,GAAMN,IAAaM,GAAMD,GAAS1B,EAASj4H,EAAI65H,GAAMN,IAAaM,IAC7G9J,EAAekG,GAAW6D,GAC1BniJ,EAAKs+I,GAAW6D,GAAmBH,IAGvCvlH,EAAMg8G,cAActnJ,GAAQ6O,IAO5B40I,iBAAkB,CAAC,WAzfD,CAClBzjJ,KAAM,QACN8L,SAAS,EACTi9I,MAAO,OACP9pI,GAzDF,SAAe4lI,GACb,IAAIoM,EACA3lH,EAAQu5G,EAAKv5G,MAAOtrC,EAAO6kJ,EAAK7kJ,KAAMa,EAAUgkJ,EAAKhkJ,QACrDgvJ,EAAevkH,EAAM0R,SAASsvG,MAC9BrF,EAAiB37G,EAAMg8G,cAAc+E,cACrCrH,EAAgBpB,EAAiBt4G,EAAMsyG,WACvCxoG,EAAOuvG,EAAyBK,GAEhCrlH,EADa,CAACgd,EAAMF,GAAOjwC,QAAQw4I,IAAkB,EAClC,SAAW,QAClC,GAAK6K,GAAiB5I,EAAtB,CAGA,IAAI3B,EAlBgB,SAA0B3wF,EAASrpB,GAIvD,OAAO+5G,EAAsC,iBAH7C1wF,EAA6B,mBAAZA,EAAyBA,EAAQt1D,OAAOge,OAAO,GAAIiuB,EAAMia,MAAO,CAC/Eq4F,UAAWtyG,EAAMsyG,aACbjpF,GACkDA,EAAU4wF,EAAgB5wF,EAASquF,IAcvEkO,CAAgBrwJ,EAAQ8zD,QAASrpB,GACjDwkH,EAAYxO,EAAcuO,GAC1BsB,EAAmB,MAAT/7G,EAAeoH,EAAMG,EAC/By0G,EAAmB,MAATh8G,EAAesH,EAASD,EAClC40G,EAAU/lH,EAAMia,MAAMw/F,UAAUplH,GAAO2L,EAAMia,MAAMw/F,UAAU3vG,GAAQ6xG,EAAe7xG,GAAQ9J,EAAMia,MAAM29F,OAAOvjH,GAC/G2xH,EAAYrK,EAAe7xG,GAAQ9J,EAAMia,MAAMw/F,UAAU3vG,GACzDi7G,EAAoB/N,EAAgBuN,GACpC0B,EAAalB,EAA6B,MAATj7G,EAAei7G,EAAkBxxC,cAAgB,EAAIwxC,EAAkB/2F,aAAe,EAAI,EAC3Hk4F,EAAoBH,EAAU,EAAIC,EAAY,EAC9CrH,EAAO3E,EAAc6L,GACrBjH,EAAOqH,EAAazB,EAAUnwH,GAAO2lH,EAAc8L,GACnD3tG,EAAS8tG,EAAa,EAAIzB,EAAUnwH,GAAO,EAAI6xH,EAC/CjK,EAAUyC,EAAOC,EAAMxmG,EAAQymG,GAC/BuH,EAAWr8G,EACf9J,EAAMg8G,cAActnJ,KAASixJ,EAAwB,IAA0BQ,GAAYlK,EAAS0J,EAAsBS,aAAenK,EAAU9jG,EAAQwtG,KAgC3J3H,OA9BF,SAAiBe,GACf,IAAI/+G,EAAQ++G,EAAM/+G,MACdqmH,EAD+BtH,EAAMxpJ,QACV+2B,QAASi4H,OAAoC,IAArB8B,EAA8B,sBAAwBA,EACzF,MAAhB9B,IAGwB,iBAAjBA,IACTA,EAAevkH,EAAM0R,SAASkmG,OAAO7mH,cAAcwzH,MAUhDz3F,EAAS9sB,EAAM0R,SAASkmG,OAAQ2M,KAMrCvkH,EAAM0R,SAASsvG,MAAQuD,IAQvBrM,SAAU,CAAC,iBACXC,iBAAkB,CAAC,oBA+VF,CACjBzjJ,KAAM,OACN8L,SAAS,EACTi9I,MAAO,OACPtF,iBAAkB,CAAC,mBACnBxkI,GA/BF,SAAc4lI,GACZ,IAAIv5G,EAAQu5G,EAAKv5G,MAAOtrC,EAAO6kJ,EAAK7kJ,KAChCmuJ,EAAgB7iH,EAAMia,MAAMw/F,UAC5BsB,EAAa/6G,EAAMia,MAAM29F,OACzByI,EAAmBrgH,EAAMg8G,cAAcsK,gBACvCC,EAAoBpM,EAAen6G,EAAO,CAC5Cy6G,eAAgB,cAEd+L,EAAoBrM,EAAen6G,EAAO,CAC5C26G,aAAa,IAEX8L,EAA2BrG,GAAemG,EAAmB1D,GAC7D6D,EAAsBtG,GAAeoG,EAAmBzL,EAAYsF,GACpEsG,EAAoBrG,GAAsBmG,GAC1CG,EAAmBtG,GAAsBoG,GAC7C1mH,EAAMg8G,cAActnJ,GAAQ,CAC1B+xJ,yBAAAA,EACAC,oBAAAA,EACAC,kBAAAA,EACAC,iBAAAA,GAEF5mH,EAAMi9G,WAAWrF,OAAS7jJ,OAAOge,OAAO,GAAIiuB,EAAMi9G,WAAWrF,OAAQ,CACnE,+BAAgC+O,EAChC,sBAAuBC,SAyPvBC,GAzFU,MACZnuJ,YAAY+jH,EAAQqqC,EAASvxJ,GAC3BuC,KAAKivJ,oBAAsBjvJ,KAAKivJ,oBAAoBh4I,KAAKjX,MACzDA,KAAK2kH,OAASA,EACd3kH,KAAKgvJ,QAAUA,EACfhvJ,KAAKvC,QAAUxB,OAAOge,OAAO,CAC3BwvI,SAAU,EACVp7F,SAAU,EACVmsF,UAAW,eACXnF,SAAU,WACV6Z,kBAAmBlvJ,KAAKgvJ,QACxBG,aAAc,kBACdC,YAAa,OAEbC,YAAa,OAEbC,gBAAiB,QAEhB7xJ,GACHuC,KAAKuvJ,WAAY,EACjBvvJ,KAAKgvJ,QAAQ33I,QAAS,EACtBrX,KAAKgvJ,QAAQjvB,UAAUvrH,OAAOxU,KAAKvC,QAAQ0xJ,cAC3CnvJ,KAAKgvJ,QAAQ/2I,iBAAiB,gBAAiBjY,KAAKivJ,qBAEtDA,oBAAoB/xJ,GACHA,EAAM8Q,SACNhO,KAAKvC,QAAQyxJ,oBAC1BlvJ,KAAKvC,QAAQ6xJ,gBAAgB3uJ,KAAKX,KAAM9C,GACnC8C,KAAKuvJ,WAAcvvJ,KAAKgvJ,QAAQ33I,SACnCrX,KAAKgvJ,QAAQ33I,QAAS,EACtBrX,KAAKgvJ,QAAQjvB,UAAUvrH,OAAOxU,KAAKvC,QAAQ0xJ,cAC3CnvJ,KAAKvC,QAAQ4xJ,YAAY1uJ,KAAKX,QAIpCszE,UACEtzE,KAAKgvJ,QAAQ39H,oBAAoB,gBAAiBrxB,KAAKivJ,qBACnDjvJ,KAAK8/I,QACP9/I,KAAK8/I,OAAOxsE,UAGhB9kC,OACExuC,KAAKuvJ,WAAY,EACjBvvJ,KAAKgvJ,QAAQ33I,QAAS,EACtBrX,KAAKgvJ,QAAQ94F,YACb12C,uBAAsB,IAAMxf,KAAKgvJ,QAAQjvB,UAAU57H,IAAInE,KAAKvC,QAAQ0xJ,gBAChEnvJ,KAAK8/I,QACP9/I,KAAK8/I,OAAOxsE,UAEdtzE,KAAK8/I,OAAS4I,GAAa1oJ,KAAK2kH,OAAQ3kH,KAAKgvJ,QAAS,CACpDxU,UAAWx6I,KAAKvC,QAAQ+8I,UACxBnF,SAAUr1I,KAAKvC,QAAQ43I,SACvB6K,UAAW,CACT,CACEtjJ,KAAM,OACNa,QAAS,CACP6iF,SAAU,aAGd,CACE1jF,KAAM,SACNa,QAAS,CACP6kD,OAAQ,CAACtiD,KAAKvC,QAAQgsJ,SAAUzpJ,KAAKvC,QAAQ4wD,eAKrDruD,KAAKgvJ,QAAQ/2I,iBAAiB,iBAAiB,IAAMjY,KAAKvC,QAAQ2xJ,YAAYzuJ,KAAKX,OAAO,CAACmxB,MAAM,IACjG3R,uBAAsB,IAAMxf,KAAK8/I,OAAO93I,WAE1C2mC,OACE3uC,KAAKuvJ,WAAY,EACjBvvJ,KAAKgvJ,QAAQjvB,UAAUvrH,OAAOxU,KAAKvC,QAAQ0xJ,cAE7CK,aACExvJ,KAAK8/I,OAAO93I,SAEds9I,WAAW7nJ,GACTuC,KAAKvC,QAAUxB,OAAOge,OAAOja,KAAKvC,QAASA,GAC3CuC,KAAKuvJ,UAAYvvJ,KAAKgvJ,QAAQjvB,UAAU57H,IAAInE,KAAKvC,QAAQ0xJ,cAAgBnvJ,KAAKgvJ,QAAQjvB,UAAUvrH,OAAOxU,KAAKvC,QAAQ0xJ,cAChHnvJ,KAAK8/I,SACP9/I,KAAK8/I,OAAOwF,WAAW,CACrB9K,UAAWx6I,KAAKvC,QAAQ+8I,UACxBnF,SAAUr1I,KAAKvC,QAAQ43I,WAEzB71H,uBAAsB,IAAMxf,KAAK8/I,OAAO93I,oFCl7C9C,SAAS46B,EAAE6sH,GACT,OAAO,IAAAnxJ,IAAE,SAAS,QAAS,GAAImxJ,GAAK,CAACvnH,OAAO,EAAMohH,WAAW,kECS3DnzE,EAAKu5E,GAAa,MAANA,EAAaA,EAAK,EAAAn7G,+BCjBlC,SAASo7G,EAAMC,GACb,MAAO,CAACxU,EAAmBx+I,KACzB,MAAM,QAACg0E,GAAWwqE,EAClBA,EAAkBxqE,QAAU,SAASi/E,GACnC,GAAI7vJ,KAAK8vJ,kBAAoBD,EAAa3rJ,IAAI0rJ,GAAW,CACvD,MAAM57H,EAAW67H,EAAa31I,IAAI01I,GAC5BG,EAAW/vJ,KAAK4vJ,GAClB57H,IAAa+7H,GACf/vJ,KAAKpD,GAAM+D,KAAKX,KAAMg0B,EAAU+7H,GAGpCn/E,EAAQjwE,KAAKX,KAAM6vJ,GACnB7vJ,KAAK8vJ,kBAAmB,mIC+J1B9V,YAzKAgW,EAAmB/zJ,OAAOsgB,yBAC1B0sH,EAAWhtI,OAAOge,OAClBg2I,EAAa,CAACC,EAAYliJ,EAAQnK,EAAK4wI,KAEzC,IADA,IACqC0b,EADjChpJ,EAASstI,EAAO,OAAI,EAASA,EAAOub,EAAiBhiJ,EAAQnK,GAAOmK,EAC/DoiJ,EAAKF,EAAW1xJ,OAAS,EAAc4xJ,GAAM,EAAGA,KACnDD,EAAYD,EAAWE,MACzBjpJ,GAAUstI,EAAO0b,EAAUniJ,EAAQnK,EAAKsD,GAAUgpJ,EAAUhpJ,KAAYA,GAG5E,OAFIstI,GAAQttI,IACV,OAAU6G,EAAQnK,EAAKsD,GAClBA,GAgCL02F,EAAKwyD,GAAQC,IAAO,MAAa,mBAANA,GAAqBC,EAAuDF,EAAnDG,EAAuDF,EAA/CtrJ,OAAOyrJ,eAAeC,OAAOH,EAAIC,GAAKA,GAAe,EAAED,EAAIC,KACzH,MAAO/b,KAAMkc,EAAI/2G,SAAUw2G,GAAMI,EACjC,MAAO,CAAC/b,KAAMkc,EAAI/2G,SAAUw2G,EAAIQ,SAASC,GACvC7rJ,OAAOyrJ,eAAeC,OAAOH,EAAIM,MAHgF,CAKlHR,EAAIC,GAL2C,IAAEC,EAAIC,GA+GpDM,EAAK7vH,QAAQphC,UAkBb47B,GAjBIq1H,EAAGC,mBAAqBD,EAAGE,sBAiB3B,QAAQ/jJ,KAAKC,SAAW,IAAI/K,MAAM,OACtC7C,EAAI,IAAMm8B,EACVw1H,EAAK,IAAI3xJ,KACTkxD,EAAIvrD,SACJyqJ,EAAK,CAACiB,EAAK,KAAOngG,EAAE0gG,cAAcP,GAClCQ,EAAMR,GAAc,OAAPA,GAA4B,iBAANA,GAA+B,mBAANA,EAC5D/tH,EAAItiC,MAAMiF,QAEVo9B,EAAI,sDACJiD,EAAI,OACJiQ,EAAI,KACJ9lC,EAAI,0FACJ+9B,EAAI,KACJo0D,EAAI,KACJx/D,EAAI,+BACJ0vD,EAAKu+D,GAAO,CAACS,KAAOhB,KAAO,CAAEiB,WAAYV,EAAI1W,QAASmX,EAAIhzJ,OAAQgyJ,IAGlErrJ,GAFIqtF,EAAE,GACFA,EAAE,GACFojB,OAAOskB,IAAI,iBACfvlF,EAAIihE,OAAOskB,IAAI,eACfxlF,EAAI,IAAItK,IACRga,EAAIwM,EAAE8gG,iBAAiB9gG,EAAG,IAAK,MAAM,GAcrCoxC,EAAI,MACNhhG,aAAaq5I,QAAS0W,EAAIU,WAAYf,GAAKiB,GACzC,IAAIlB,EACJrwJ,KAAKm2E,EAAI,GAAIn2E,KAAK8hG,EAAIyvD,EACtB,IAAIC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EACzB,MAAMC,EAAKhB,EAAGnyJ,OAAS,GAAIozJ,EAAIC,GAlB3B,EAAClB,EAAIP,KACX,MAAMmB,EAAKZ,EAAGnyJ,OAAS,EAAGszJ,EAAK,GAC/B,IAAIzB,EAAImB,EAAY,IAAPpB,EAAW,QAAU,GAAIqB,EAAK9uH,EAC3C,IAAK,IAAIovH,EAAK,EAAGA,EAAKR,EAAIQ,IAAM,CAC9B,MAAMC,EAAKrB,EAAGoB,GACd,IAAIE,EAAIC,EAAIC,GAAM,EAAG1lB,EAAK,EAC1B,KAAOA,EAAKulB,EAAGxzJ,SAAWizJ,EAAG9yE,UAAY8tD,EAAIylB,EAAKT,EAAGzvJ,KAAKgwJ,GAAY,OAAPE,IAC7DzlB,EAAKglB,EAAG9yE,UAAW8yE,IAAO9uH,EAAc,QAAVuvH,EAAG,GAAeT,EAAK7rH,OAAc,IAAVssH,EAAG,GAAgBT,EAAK57G,OAAc,IAAVq8G,EAAG,IAAiBxvH,EAAElvB,KAAK0+I,EAAG,MAAQ7B,EAAKrgI,OAAO,KAAOkiI,EAAG,GAAI,MAAOT,EAAK1hJ,QAAe,IAAVmiJ,EAAG,KAAkBT,EAAK1hJ,GAAK0hJ,IAAO1hJ,EAAc,MAAVmiJ,EAAG,IAAcT,EAAW,MAANpB,EAAaA,EAAK1tH,EAAGwvH,GAAM,QAAe,IAAVD,EAAG,GAAgBC,GAAM,GAAKA,EAAKV,EAAG9yE,UAAYuzE,EAAG,GAAG1zJ,OAAQyzJ,EAAKC,EAAG,GAAIT,OAAe,IAAVS,EAAG,GAAgBniJ,EAAc,MAAVmiJ,EAAG,GAAahwD,EAAIp0D,GAAK2jH,IAAOvvD,GAAKuvD,IAAO3jH,EAAI2jH,EAAK1hJ,EAAI0hJ,IAAO7rH,GAAK6rH,IAAO57G,EAAI47G,EAAK9uH,GAAK8uH,EAAK1hJ,EAAGsgJ,OAAK,GACvd,MAAMxjE,EAAK4kE,IAAO1hJ,GAAK4gJ,EAAGoB,EAAK,GAAG1sJ,WAAW,MAAQ,IAAM,GAC3DmsJ,GAAMC,IAAO9uH,EAAIqvH,EAAKf,EAAKkB,GAAM,GAAKL,EAAG1tJ,KAAK6tJ,GAAKD,EAAG7vJ,MAAM,EAAGgwJ,GAAM,QAAUH,EAAG7vJ,MAAMgwJ,GAAM12H,EAAIoxD,GAAMmlE,EAAKv2H,IAAa,IAAR02H,GAAaL,EAAG1tJ,UAAK,GAAS2tJ,GAAMllE,GAExJ,MAAO,CAAC2kE,GAAMb,EAAGY,IAAO,QAAiB,IAAPnB,EAAW,SAAW,IAAK0B,IAOtBxhG,CAAEqgG,EAAIL,GAC3C,GAAItwJ,KAAK6hG,EAAI7hG,KAAK4hG,EAAEgwD,GAAK5tG,EAAEq7F,YAAcr/I,KAAK6hG,EAAEuwD,QAAgB,IAAP9B,EAAU,CACjE,MAAM+B,EAAKryJ,KAAK6hG,EAAEuwD,QAAShB,EAAKiB,EAAG7xB,WACnC4wB,EAAG58I,SAAU69I,EAAG75H,UAAU44H,EAAGtV,YAE/B,KAA+B,QAAvBuU,EAAKrsG,EAAEsuG,aAAwBb,EAAKE,GAAM,CAChD,GAAoB,IAAhBtB,EAAGtU,SAAgB,CACrB,GAAIsU,EAAGkC,gBAAiB,CACtB,MAAMF,EAAK,GACX,IAAK,MAAMjC,KAAMC,EAAGmC,oBAClB,GAAIpC,EAAGj1D,SAAS,UAAYi1D,EAAG/qJ,WAAWo2B,GAAI,CAC5C,MAAM+0H,EAAKqB,EAAGH,KACd,GAAIW,EAAGjuJ,KAAKgsJ,QAAY,IAAPI,EAAe,CAC9B,MAAMiC,EAAKpC,EAAGn3H,aAAas3H,EAAGvzH,cAAgB,SAAS/6B,MAAMu5B,GAAIs2H,EAAK,eAAe/vJ,KAAKwuJ,GAC1FxwJ,KAAKm2E,EAAE/xE,KAAK,CAACosD,EAAG,EAAG1/B,EAAG0gI,EAAI37G,EAAGk8G,EAAG,GAAIrvH,EAAG+vH,EAAItkI,EAAa,MAAV4jI,EAAG,GAAaztD,EAAc,MAAVytD,EAAG,GAAa7tD,EAAc,MAAV6tD,EAAG,GAAajwD,EAAI+B,IAAK4tD,GAAMgB,EAAGj0J,OAAS,OAEjIwB,KAAKm2E,EAAE/xE,KAAK,CAACosD,EAAG,EAAG1/B,EAAG0gI,IAE5B,IAAK,MAAMJ,KAAMiB,EACfhC,EAAGj5F,gBAAgBg6F,GAEvB,GAAI1uH,EAAElvB,KAAK68I,EAAGrzH,SAAU,CACtB,MAAMq1H,EAAKhC,EAAGpU,YAAY/5I,MAAMu5B,GAAI20H,EAAKiC,EAAG7zJ,OAAS,EACrD,GAAI4xJ,EAAK,EAAG,CACVC,EAAGpU,YAAc,GACjB,IAAK,IAAImV,EAAK,EAAGA,EAAKhB,EAAIgB,IACxBf,EAAG73H,OAAO65H,EAAGjB,IAAO1B,KAAO1vJ,KAAKm2E,EAAE/xE,KAAK,CAACosD,EAAG,EAAG1/B,IAAK0gI,IAAMC,IAC3DpB,EAAG73H,OAAO65H,EAAGjC,IAAOV,YAGnB,GAAoB,IAAhBW,EAAGtU,SACZ,GAAIsU,EAAG5kJ,OAASnM,EACdmyJ,IAAMzxJ,KAAKm2E,EAAE/xE,KAAK,CAACosD,EAAG,EAAG1/B,EAAG0gI,QACzB,CACH,IAAIa,GAAM,EACV,MAA8C,KAAtCA,EAAKhC,EAAG5kJ,KAAKrC,QAAQqyB,EAAG42H,EAAK,KACnCryJ,KAAKm2E,EAAE/xE,KAAK,CAACosD,EAAG,EAAG1/B,EAAG0gI,IAAMC,IAAMY,GAAM52H,EAAEj9B,OAAS,EAEzDgzJ,KAGJ5vD,EAAE+uD,GACA,MAAMS,EAAK5gG,EAAEr5C,cAAc,YAC3B,OAAOi6I,EAAGsB,UAAY/B,EAAIS,IAG9B,SAAS1rG,EAAEirG,EAAIS,EAAIhB,EAAKO,EAAIL,GAC1B,IAAIqC,EAAKC,EAAKC,EACVtB,EACJ,GAAIH,IAAOrsJ,EACT,OAAOqsJ,EACT,IAAIU,OAAY,IAAPxB,EAAsC,OAArBqC,EAAMvC,EAAG,SAAmB,EAASuC,EAAIrC,GAAMF,EAAG,GAC5E,MAAMoB,EAAKL,EAAGC,QAAM,EAASA,EAAG0B,gBAChC,OAAc,MAANhB,OAAa,EAASA,EAAGlxJ,eAAiB4wJ,IAA6C,OAArCoB,EAAY,MAANd,OAAa,EAASA,EAAGjuD,IAAsB+uD,EAAIjyJ,KAAKmxJ,GAAI,GAAQA,OAAY,IAAPN,OAAgB,EAAS,IAAIA,EAAGvoB,EAASA,EAAS,GAAI0nB,GAAK,CAACj8I,EAAGi8I,EAAI5sD,EAAGqsD,EAAIrrJ,EAAGurJ,UAAc,IAAPA,GAA6C,OAA3BuC,GAAMtB,EAAKnB,GAAI,IAAmByC,EAAKtB,EAAG,GAAU,IAAIjB,GAAMwB,EAAK1B,EAAG,GAAU0B,QAAY,IAAPA,IAAkBV,EAAK1rG,EAAEirG,EAAImB,EAAGpuD,EAAEitD,EAAIS,EAAGhzJ,QAAS0zJ,EAAIxB,IAAMc,EAElY,IA6IItmB,EAAIioB,EAtHJ/wD,EAAI,MACNphG,YAAY+vJ,EAAIS,EAAIhB,EAAIE,GACtBtwJ,KAAK3B,KAAO,EAAG2B,KAAK8jG,OAAI,EAAQ9jG,KAAK+hG,EAAI4uD,EAAI3wJ,KAAKgiG,EAAIovD,EAAIpxJ,KAAK+jG,EAAIqsD,EAAIpwJ,KAAKvC,QAAU6yJ,EAExF0C,aAAarC,GACX,IAAIgC,EACc,OAAjBA,EAAM3yJ,KAAKgkD,IAAsB2uG,EAAIhyJ,KAAKX,KAAM2wJ,GAE/Ch0H,iBACF,OAAO38B,KAAK+hG,EAAEplE,WAEhBunE,EAAEysD,EAAIS,EAAKpxJ,MACT2wJ,EAAKjrG,EAAE1lD,KAAM2wJ,EAAIS,GAAKD,EAAGR,GAAMA,IAAOp8G,GAAW,MAANo8G,GAAqB,KAAPA,GAAa3wJ,KAAKmkG,IAAM5vD,GAAKv0C,KAAK2jG,IAAK3jG,KAAKmkG,EAAI5vD,GAAKo8G,IAAO3wJ,KAAKmkG,GAAKwsD,IAAO5rJ,GAAK/E,KAAKwjG,EAAEmtD,QAAwB,IAAlBA,EAAGU,WAAwBrxJ,KAAKwvH,EAAEmhC,QAAsB,IAAhBA,EAAG5U,SAAsB/7I,KAAKyjG,EAAEktD,GA3H5N,CAACA,GAAO/tH,EAAE+tH,IAA6D,mBAAxC,MAANA,OAAa,EAASA,EAAGn7C,OAAOikC,WA2HyK3oH,CAAE6/H,GAAM3wJ,KAAKizJ,GAAGtC,GAAM3wJ,KAAKwjG,EAAEmtD,GAErQuC,GAAGvC,EAAIS,EAAKpxJ,KAAKgiG,GACf,OAAOhiG,KAAK+hG,EAAEplE,WAAW4jG,aAAaowB,EAAIS,GAE5C3tD,EAAEktD,GACA3wJ,KAAKmkG,IAAMwsD,IAAO3wJ,KAAK2jG,IAAK3jG,KAAKmkG,EAAInkG,KAAKkzJ,GAAGvC,IAE/CntD,EAAEmtD,GACA,MAAMS,EAAKpxJ,KAAK+hG,EAAEoxD,YACX,OAAP/B,GAA+B,IAAhBA,EAAGrV,WAA8B,OAAX/7I,KAAKgiG,EAAgC,OAAnBovD,EAAG+B,YAAuB/B,IAAOpxJ,KAAKgiG,EAAEoxD,iBAAmBhC,EAAG3lJ,KAAOklJ,EAAK3wJ,KAAKyjG,EAAEjzC,EAAEkwE,eAAeiwB,IAAM3wJ,KAAKmkG,EAAIwsD,EAE1KnhC,EAAEmhC,GACA,IAAIgC,EACJ,MAAOv0J,OAAQgzJ,EAAInX,QAASmW,GAAMO,EAAIL,EAAKtwJ,KAAKiiG,EAAEmuD,EAAIO,GACtD,IAAuB,OAAjBgC,EAAM3yJ,KAAKmkG,QAAa,EAASwuD,EAAItuD,KAAOisD,EAChDtwJ,KAAKmkG,EAAEh3C,EAAEikG,OACN,CACH,MAAMiB,EAAK,IArDT,MACNzxJ,YAAY+vJ,EAAIS,GACdpxJ,KAAKm2E,EAAI,GAAIn2E,KAAK8jG,OAAI,EAAQ9jG,KAAKqkG,EAAIssD,EAAI3wJ,KAAK+jG,EAAIqtD,EAEtDx1D,EAAE+0D,GACA,MAAO9uD,GAAIuwD,QAAShB,GAAKj7E,EAAGi6E,GAAMpwJ,KAAKqkG,EAAGisD,EAAK9/F,EAAE6iG,WAAWjC,GAAI,GAChEptG,EAAEq7F,YAAciR,EAChB,IAAIwB,EAAK9tG,EAAEsuG,WAAYjC,EAAK,EAAGmB,EAAK,EAAGC,EAAKrB,EAAG,GAC/C,UAAc,IAAPqB,GAAwB,OAAPK,GAAe,CACrC,GAAIzB,IAAOoB,EAAG3gI,EAAG,CACf,IAAIwiI,EACK,IAAT7B,EAAGjhG,EAAU8iG,EAAK,IAAItxD,EAAE8vD,EAAIA,EAAGqB,YAAanzJ,KAAM2wJ,GAAe,IAATc,EAAGjhG,EAAU8iG,EAAK,IAAI7B,EAAGtjI,EAAE2jI,EAAIL,EAAG57G,EAAG47G,EAAG/uH,EAAG1iC,KAAM2wJ,GAAe,IAATc,EAAGjhG,IAAY8iG,EAAK,IAAIrvD,EAAE6tD,EAAI9xJ,KAAM2wJ,IAAM3wJ,KAAKm2E,EAAE/xE,KAAKkvJ,GAAK7B,EAAKrB,IAAKoB,QAE/K,IAAPC,GAAiBpB,IAAOoB,EAAG3gI,IAAMghI,EAAK9tG,EAAEsuG,WAAYjC,KAEtD,OAAOC,EAETnjG,EAAEwjG,GACA,IAAIS,EAAK,EACT,IAAK,MAAMhB,KAAMpwJ,KAAKm2E,OACb,IAAPi6E,SAAiC,IAAfA,EAAGnW,SAAsBmW,EAAGlsD,EAAEysD,EAAIP,EAAIgB,GAAKA,GAAMhB,EAAGnW,QAAQz7I,OAAS,GAAK4xJ,EAAGlsD,EAAEysD,EAAGS,KAAOA,MAiC1Fd,EAAItwJ,MAAO+xJ,EAAKM,EAAGz2D,EAAE57F,KAAKvC,SAC3C40J,EAAGllG,EAAEikG,GAAKpxJ,KAAKyjG,EAAEsuD,GAAK/xJ,KAAKmkG,EAAIkuD,GAGnCpwD,EAAE0uD,EAAIS,GACJ,IAAIhB,EAAK97G,EAAEp6B,IAAIy2I,GACf,YAAc,IAAPP,GAAiB97G,EAAE9I,IAAImlH,EAAIP,EAAK,IAAIxuD,EAAEwvD,IAAMhB,EAErD6C,GAAGtC,GACD/tH,EAAE5iC,KAAKmkG,KAAOnkG,KAAKmkG,EAAI,GAAInkG,KAAK2jG,KAChC,MAAMytD,EAAKpxJ,KAAKmkG,EAChB,IAAIisD,EAAIE,EAAK,EACb,IAAK,MAAMiB,KAAMZ,EACfL,IAAOc,EAAG5yJ,OAAS4yJ,EAAGhtJ,KAAKgsJ,EAAK,IAAIpuD,EAAEhiG,KAAKkzJ,GAAGxD,KAAO1vJ,KAAKkzJ,GAAGxD,KAAO1vJ,KAAMA,KAAKvC,UAAY2yJ,EAAKgB,EAAGd,GAAKF,EAAGlsD,EAAEqtD,GAAKjB,IACpHA,EAAKc,EAAG5yJ,SAAWwB,KAAK2jG,EAAEysD,GAAMA,EAAGpuD,EAAEmxD,YAAa7C,GAAKc,EAAG5yJ,OAAS8xJ,GAErE3sD,EAAEgtD,EAAK3wJ,KAAK+hG,EAAEoxD,YAAa/B,GACzB,IAAIuB,EACJ,IAAuB,OAAjBA,EAAM3yJ,KAAKgkD,IAAsB2uG,EAAIhyJ,KAAKX,MAAM,GAAO,EAAMoxJ,GAAKT,GAAMA,IAAO3wJ,KAAKgiG,GAAK,CAC7F,MAAMsxD,EAAK3C,EAAGwC,YACdxC,EAAGn8I,SAAUm8I,EAAK2C,KAIpBzvD,EAAI,MACNjjG,YAAY+vJ,EAAIS,EAAIhB,EAAIE,EAAIiB,GAC1BvxJ,KAAK3B,KAAO,EAAG2B,KAAKmkG,EAAI5vD,EAAGv0C,KAAK8jG,OAAI,EAAQ9jG,KAAK++G,QAAK,EAAQ/+G,KAAKw0B,QAAUm8H,EAAI3wJ,KAAKpD,KAAOw0J,EAAIpxJ,KAAK+jG,EAAIusD,EAAItwJ,KAAKvC,QAAU8zJ,EAAInB,EAAG5xJ,OAAS,GAAe,KAAV4xJ,EAAG,IAAuB,KAAVA,EAAG,IAAapwJ,KAAKmkG,EAAI7jG,MAAM8vJ,EAAG5xJ,OAAS,GAAG0lC,KAAKqQ,GAAIv0C,KAAKi6I,QAAUmW,GAAMpwJ,KAAKmkG,EAAI5vD,EAErPvX,cACF,OAAOh9B,KAAKw0B,QAAQwI,QAEtBknE,EAAEysD,EAAIS,EAAKpxJ,KAAMowJ,EAAIE,GACnB,MAAMiB,EAAKvxJ,KAAKi6I,QAChB,IAAI6X,GAAK,EACT,QAAW,IAAPP,EACFZ,EAAKjrG,EAAE1lD,KAAM2wJ,EAAIS,EAAI,GAAIU,GAAMX,EAAGR,IAAOA,IAAO3wJ,KAAKmkG,GAAKwsD,IAAO5rJ,EAAG+sJ,IAAO9xJ,KAAKmkG,EAAIwsD,OACjF,CACH,MAAMH,EAAKG,EACX,IAAIa,EAAIC,EACR,IAAKd,EAAKY,EAAG,GAAIC,EAAK,EAAGA,EAAKD,EAAG/yJ,OAAS,EAAGgzJ,IAC3CC,EAAK/rG,EAAE1lD,KAAMwwJ,EAAGJ,EAAKoB,GAAKJ,EAAII,GAAKC,IAAO1sJ,IAAM0sJ,EAAKzxJ,KAAKmkG,EAAEqtD,IAAMM,IAAOA,GAAMX,EAAGM,IAAOA,IAAOzxJ,KAAKmkG,EAAEqtD,IAAMC,IAAOl9G,EAAIo8G,EAAKp8G,EAAIo8G,IAAOp8G,IAAMo8G,IAAa,MAANc,EAAaA,EAAK,IAAMF,EAAGC,EAAK,IAAKxxJ,KAAKmkG,EAAEqtD,GAAMC,EAE3MK,IAAOxB,GAAMtwJ,KAAKuzJ,GAAG5C,GAEvB4C,GAAG5C,GACDA,IAAOp8G,EAAIv0C,KAAKw0B,QAAQ4iC,gBAAgBp3D,KAAKpD,MAAQoD,KAAKw0B,QAAQ6iC,aAAar3D,KAAKpD,KAAY,MAAN+zJ,EAAaA,EAAK,MAG5GrsD,EAAI,cAAcT,EACpBjjG,cACE8+C,SAASxjC,WAAYlc,KAAK3B,KAAO,EAEnCk1J,GAAG5C,GACD3wJ,KAAKw0B,QAAQx0B,KAAKpD,MAAQ+zJ,IAAOp8G,OAAI,EAASo8G,IAG9CzsD,EAAI,cAAcL,EACpBjjG,cACE8+C,SAASxjC,WAAYlc,KAAK3B,KAAO,EAEnCk1J,GAAG5C,GACDA,GAAMA,IAAOp8G,EAAIv0C,KAAKw0B,QAAQ6iC,aAAar3D,KAAKpD,KAAM,IAAMoD,KAAKw0B,QAAQ4iC,gBAAgBp3D,KAAKpD,QAG9FklG,EAAI,cAAc+B,EACpBjjG,cACE8+C,SAASxjC,WAAYlc,KAAK3B,KAAO,EAEnC6lG,EAAEysD,EAAIS,EAAKpxJ,MACT,IAAI2yJ,EACJ,IAAKhC,EAAmC,OAA7BgC,EAAMjtG,EAAE1lD,KAAM2wJ,EAAIS,EAAI,IAAcuB,EAAMp+G,KAAOxvC,EAC1D,OACF,MAAMqrJ,EAAKpwJ,KAAKmkG,EAAGmsD,EAAKK,IAAOp8G,GAAK67G,IAAO77G,GAAKo8G,EAAG16H,UAAYm6H,EAAGn6H,SAAW06H,EAAGx/H,OAASi/H,EAAGj/H,MAAQw/H,EAAG/7F,UAAYw7F,EAAGx7F,QAAS28F,EAAKZ,IAAOp8G,IAAM67G,IAAO77G,GAAK+7G,GAC7JA,GAAMtwJ,KAAKw0B,QAAQnD,oBAAoBrxB,KAAKpD,KAAMoD,KAAMowJ,GAAKmB,GAAMvxJ,KAAKw0B,QAAQvc,iBAAiBjY,KAAKpD,KAAMoD,KAAM2wJ,GAAK3wJ,KAAKmkG,EAAIwsD,EAElIrwI,YAAYqwI,GACV,IAAIgC,EAAKC,EACQ,mBAAV5yJ,KAAKmkG,EAAkBnkG,KAAKmkG,EAAExjG,KAAiE,OAA3DiyJ,EAA8B,OAAvBD,EAAM3yJ,KAAKvC,cAAmB,EAASk1J,EAAIzxJ,MAAgB0xJ,EAAM5yJ,KAAKw0B,QAASm8H,GAAM3wJ,KAAKmkG,EAAE7jF,YAAYqwI,KAG1J1sD,EAAI,MACNrjG,YAAY+vJ,EAAIS,EAAIhB,GAClBpwJ,KAAKw0B,QAAUm8H,EAAI3wJ,KAAK3B,KAAO,EAAG2B,KAAK8jG,OAAI,EAAQ9jG,KAAK++G,QAAK,EAAQ/+G,KAAK+jG,EAAIqtD,EAAIpxJ,KAAKvC,QAAU2yJ,EAEnGlsD,EAAEysD,GACAjrG,EAAE1lD,KAAM2wJ,KAIgC,OAA3C7lB,EAAK0oB,WAAWC,yBAA2C3oB,EAAGnqI,KAAK6yJ,WAAY5xD,EAAGI,IAAiD,OAA3C+wD,GAAM/Y,EAAKwZ,YAAYE,iBAA2BX,EAAK/Y,EAAG0Z,gBAAkB,IAAItvJ,KAAK,eAa9K,IA4CIuvJ,EA5CAC,EAAK5uJ,OAAOg4I,kBAAmC,IAApBh4I,OAAO6uJ,UAAuB7uJ,OAAO6uJ,SAASC,eAAiB,uBAAwBC,SAASl0J,WAAa,YAAam0J,cAAcn0J,UACnKo0J,EAAKz+C,SAcL0kC,EAAMyW,GAAO,IAbR,MACP/vJ,YAAY+vJ,EAAIN,GACd,GAAIA,IAAO4D,EACT,MAAMpzJ,MAAM,qEACdb,KAAK2gI,QAAUgwB,EAEblwB,iBACF,OAAOmzB,QAAiB,IAAX5zJ,KAAKm5C,IAAiBn5C,KAAKm5C,EAAI,IAAI66G,cAAiBh0J,KAAKm5C,EAAE+6G,YAAYl0J,KAAK2gI,UAAW3gI,KAAKm5C,EAE3Gr5C,WACE,OAAOE,KAAK2gI,UAGQgwB,EAAK,GAAIsD,GAQ7BE,GAPK,IAAInqH,IAOJ4pH,EAAMjD,GAAOA,EAAMA,GAAOA,aAAcqD,cAAgB,CAAE3B,IACjE,IAAI/B,EAAK,GACT,IAAK,MAAMD,KAAMgC,EAAG+B,SAClB9D,GAAMD,EAAG1vB,QACX,OAAOuZ,EAAGoW,IAJqD,CAK9DK,GAAMA,GAiBT3rJ,OAAOqvJ,0BAA4B,CAAC1D,EAAIS,IAAOT,EAC/C,IA2MI2D,EAAKC,EAiBLC,EA5NAC,EAAK,CAACC,YAAY/D,EAAIS,GACxB,OAAQA,GACN,KAAKhwH,QACHuvH,EAAKA,EAAK,GAAK,KACf,MACF,KAAK10J,OACL,KAAKqE,MACHqwJ,EAAW,MAANA,EAAaA,EAAKhtJ,KAAKC,UAAU+sJ,GAE1C,OAAOA,GACNgE,cAAchE,EAAIS,GACnB,IAAIhB,EAAKO,EACT,OAAQS,GACN,KAAKhwH,QACHgvH,EAAY,OAAPO,EACL,MACF,KAAKzmJ,OACHkmJ,EAAY,OAAPO,EAAc,KAAOzmJ,OAAOymJ,GACjC,MACF,KAAK10J,OACL,KAAKqE,MACH,IACE8vJ,EAAKzsJ,KAAKsS,MAAM06I,GAChB,MAAO0B,GACPjC,EAAK,MAGX,OAAOA,IAEL/tD,EAAK,CAACsuD,EAAIS,IAAOA,IAAOT,IAAOS,GAAMA,GAAMT,GAAMA,GACjDiE,EAAK,CAACtL,WAAW,EAAMjrJ,KAAM6G,OAAQ2vJ,UAAWJ,EAAIK,SAAS,EAAOC,WAAY1yD,GAChF2yD,EAAK,cAAclY,YACrBl8I,cACE8+C,QAAS1/C,KAAK,GAAU,IAAIgqC,IAAOhqC,KAAK,QAAU,EAAQA,KAAK,QAAU,EAAQA,KAAKi1J,iBAAkB,EAAOj1J,KAAKixE,YAAa,EAAOjxE,KAAK,GAAU,KAAMA,KAAK61C,IAEzJq/G,gCACTl1J,KAAKm1J,WACL,MAAMxE,EAAK,GACX,OAAO3wJ,KAAKo1J,kBAAkB5yJ,SAAQ,CAAC4uJ,EAAIhB,KACzC,MAAME,EAAKtwJ,KAAK,GAAQowJ,EAAIgB,QACrB,IAAPd,IAAkBtwJ,KAAK,GAAQwrC,IAAI8kH,EAAIF,GAAKO,EAAGvsJ,KAAKksJ,OAClDK,EAEN0E,sBAAsB1E,EAAIS,EAAKwD,GAC7B,GAAIxD,EAAGlpH,QAAUkpH,EAAG9H,WAAY,GAAQtpJ,KAAKm1J,WAAYn1J,KAAKo1J,kBAAkB5pH,IAAImlH,EAAIS,IAAMA,EAAGkE,aAAet1J,KAAKH,UAAUa,eAAeiwJ,GAAK,CACjJ,MAAMP,EAAkB,iBAANO,EAAiBn7C,SAAW,KAAOm7C,EAAIL,EAAKtwJ,KAAKu1J,sBAAsB5E,EAAIP,EAAIgB,QAC1F,IAAPd,GAAiBr0J,OAAOC,eAAe8D,KAAKH,UAAW8wJ,EAAIL,IAG/D+E,6BAA6B1E,EAAIS,EAAIhB,GACnC,MAAO,CAACl2I,MACN,OAAOla,KAAKoxJ,IACX5lH,IAAI8kH,GACL,MAAMiB,EAAKvxJ,KAAK2wJ,GAChB3wJ,KAAKoxJ,GAAMd,EAAItwJ,KAAKw1J,cAAc7E,EAAIY,EAAInB,IACzC5zI,cAAc,EAAMy4D,YAAY,GAErCogF,0BAA0B1E,GACxB,OAAO3wJ,KAAKo1J,kBAAkBl7I,IAAIy2I,IAAOiE,EAE3CS,kBACE,GAAIr1J,KAAKU,eAAe,aACtB,OAAO,EACTV,KAAKy1J,WAAY,EACjB,MAAM9E,EAAK10J,OAAOkJ,eAAenF,MACjC,GAAI2wJ,EAAGwE,WAAYn1J,KAAKo1J,kBAAoB,IAAIprH,IAAI2mH,EAAGyE,mBAAoBp1J,KAAK,GAAU,IAAIgqC,IAAOhqC,KAAKU,eAAe2zJ,0BAA0B,aAAcr0J,OAAQ,CACvK,MAAMqyJ,EAAKryJ,KAAKouC,WAAYgjH,EAAK,IAAIn1J,OAAOizC,oBAAoBmjH,MAAQp2J,OAAOk+H,sBAAsBk4B,IACrG,IAAK,MAAMjC,KAAMgB,EACfpxJ,KAAK01J,eAAetF,EAAIiC,EAAGjC,IAE/B,OAAOpwJ,KAAK21J,cAAgB31J,KAAK41J,eAAe51J,KAAKs6G,SAAS,EAEhE+6C,sBAAsBjE,GACpB,MAAMhB,EAAK,GACX,GAAI9vJ,MAAMiF,QAAQ6rJ,GAAK,CACrB,MAAMd,EAAK,IAAIlkF,IAAIglF,EAAGyE,KAAK,KAAOj5H,WAClC,IAAK,MAAM02H,KAAMhD,EACfF,EAAG1wE,QAAQy0E,EAAGb,cAET,IAAPlC,GAAiBhB,EAAGhsJ,KAAK+vJ,EAAG/C,IAC9B,OAAOhB,EAETiF,UAAe1E,EAAIS,GACjB,MAAMhB,EAAKgB,EAAG9H,UACd,OAAc,IAAP8G,OAAe,EAAsB,iBAANA,EAAiBA,EAAkB,iBAANO,EAAiBA,EAAG1zH,mBAAgB,EAEzG4Y,IACE71C,KAAK,GAAU,IAAI8Z,SAAS62I,GAAO3wJ,KAAK81J,eAAiBnF,IAAK3wJ,KAAK0lD,EAAI,IAAI1b,IAAOhqC,KAAK,KAAWA,KAAKw1J,gBAEzGO,cAAcpF,GACZ,IAAIgC,EAAKC,GACgB,OAAvBD,EAAM3yJ,KAAK,IAAmB2yJ,EAAM3yJ,KAAK,GAAU,IAAIoE,KAAKusJ,GAAK3wJ,KAAK03D,cAA4C,OAA3Bk7F,EAAMjC,EAAGqF,gBAAkCpD,EAAIjyJ,KAAKgwJ,IAE/IsF,iBAAiBtF,GACf,IAAIgC,EACoB,OAAvBA,EAAM3yJ,KAAK,KAA4B2yJ,EAAIruJ,OAAOtE,KAAK,GAAQoJ,QAAQunJ,KAAQ,EAAG,GAErF,KACE3wJ,KAAKY,YAAYw0J,kBAAkB5yJ,SAAQ,CAACmuJ,EAAIS,KAC9CpxJ,KAAKU,eAAe0wJ,KAAQpxJ,KAAK,GAAQwrC,IAAI4lH,EAAIpxJ,KAAKoxJ,WAAapxJ,KAAKoxJ,OAG5E8E,mBACE,IAAIvD,EACJ,MAAMhC,EAAgC,OAA1BgC,EAAM3yJ,KAAK46G,YAAsB+3C,EAAM3yJ,KAAKm2J,aAAan2J,KAAKY,YAAYw1J,mBACtF,OAtIM9F,EAsIIK,EAtIAN,EAsIIrwJ,KAAKY,YAAY+0J,cArIjC/B,EAAKtD,EAAG+F,mBAAqBhG,EAAGnnJ,KAAKynJ,GAAOA,aAAcqD,cAAgBrD,EAAKA,EAAGlwB,aAAc4vB,EAAG7tJ,SAASmuJ,IAC1G,MAAMJ,EAAKtrJ,SAASkS,cAAc,SAClCo5I,EAAGtU,YAAc0U,EAAGhwB,QAAS2vB,EAAG/4I,YAAYg5I,MAmIGI,EAtI1C,IAACL,EAAID,EAwIZiG,oBACE,IAAI3D,EACJ3yJ,KAAKixE,aAAejxE,KAAKu6I,WAAav6I,KAAKk2J,oBAAqBl2J,KAAK81J,gBAAe,GAA+B,OAAvBnD,EAAM3yJ,KAAK,KAA4B2yJ,EAAInwJ,SAASmuJ,IAC9I,IAAI4F,EACJ,OAAmC,OAA3BA,EAAM5F,EAAGqF,oBAAyB,EAASO,EAAI51J,KAAKgwJ,MAC1D3wJ,KAAK,KAAYA,KAAK,KAAWA,KAAK,GAAUA,KAAK,QAAU,GAErE81J,eAAenF,IAEf6F,uBACE,IAAI7D,EACoB,OAAvBA,EAAM3yJ,KAAK,KAA4B2yJ,EAAInwJ,SAASmuJ,IACnD,IAAI4F,EACJ,OAAsC,OAA9BA,EAAM5F,EAAG8F,uBAA4B,EAASF,EAAI51J,KAAKgwJ,MAC7D3wJ,KAAK,GAAU,IAAI8Z,SAAS62I,GAAO3wJ,KAAK,GAAU2wJ,IAExD+F,yBAAyB/F,EAAIS,EAAIhB,GAC/BpwJ,KAAKgkG,EAAE2sD,EAAIP,GAEb,GAAQO,EAAIS,EAAIhB,EAAKwE,GACnB,IAAIjC,EAAKC,EACT,MAAMrB,EAAKvxJ,KAAKY,YAAY,GAAQ+vJ,EAAIP,GACxC,QAAW,IAAPmB,IAAgC,IAAfnB,EAAG0E,QAAkB,CACxC,MAAMtD,GAAyE,OAAlEoB,EAA8B,OAAvBD,EAAMvC,EAAGyE,gBAAqB,EAASlC,EAAI+B,aAAuB9B,EAAM6B,EAAGC,aAAatD,EAAIhB,EAAG/xJ,MACnH2B,KAAK,GAAU2wJ,EAAU,MAANa,EAAaxxJ,KAAKo3D,gBAAgBm6F,GAAMvxJ,KAAKq3D,aAAak6F,EAAIC,GAAKxxJ,KAAK,GAAU,MAGzGgkG,EAAE2sD,EAAIS,GACJ,IAAIuB,EAAKC,EACT,MAAMxC,EAAKpwJ,KAAKY,YAAa2wJ,EAAKnB,EAAG,GAAQl2I,IAAIy2I,GACjD,QAAW,IAAPY,GAAiBvxJ,KAAK,KAAYuxJ,EAAI,CACxC,MAAMc,EAAKjC,EAAGuG,mBAAmBpF,GAAKC,EAAKa,EAAGwC,UAAW/C,EAAmH,OAA7Gc,EAAwD,OAAjDD,EAAY,MAANnB,OAAa,EAASA,EAAGmD,eAAyBhC,EAAmB,mBAANnB,EAAmBA,EAAK,MAAgBoB,EAAM6B,EAAGE,cAC5L30J,KAAK,GAAUuxJ,EAAIvxJ,KAAKuxJ,GAAMO,EAAGV,EAAIiB,EAAGh0J,MAAO2B,KAAK,GAAU,MAGlEw1J,cAAc7E,EAAIS,EAAIhB,GACpB,IAAIE,GAAK,OACF,IAAPK,MAAoBP,EAAKA,GAAMpwJ,KAAKY,YAAY+1J,mBAAmBhG,IAAKoE,YAAc1yD,GAAIriG,KAAK2wJ,GAAKS,IAAOpxJ,KAAK0lD,EAAExhD,IAAIysJ,IAAO3wJ,KAAK0lD,EAAEla,IAAImlH,EAAIS,IAAoB,IAAfhB,EAAG0E,SAAoB90J,KAAK,KAAY2wJ,SAAwB,IAAjB3wJ,KAAK,KAAuBA,KAAK,GAAU,IAAIgqC,KAAQhqC,KAAK,GAAQwrC,IAAImlH,EAAIP,KAAQE,GAAK,IAAStwJ,KAAKi1J,iBAAmB3E,IAAOtwJ,KAAK,GAAUA,KAAK,MAEvVse,WACEte,KAAKi1J,iBAAkB,EACvB,IACE,UAAWj1J,KAAK,GAASA,KAAK,UACtBA,KAAK,GACb,MAAOqyJ,GACPv4I,QAAQjF,OAAOw9I,GAEjB,MAAM1B,EAAK3wJ,KAAK42J,gBAChB,OAAa,MAANjG,SAAoBA,GAAK3wJ,KAAKi1J,gBAEvC2B,gBACE,IAAIjE,EACJ,IAAK3yJ,KAAKi1J,gBACR,OACFj1J,KAAKixE,WAAYjxE,KAAK,KAAYA,KAAK,GAAQwC,SAAQ,CAAC6vJ,EAAIiB,IAAOtzJ,KAAKszJ,GAAMjB,IAAKryJ,KAAK,QAAU,GAClG,IAAI2wJ,GAAK,EACT,MAAMS,EAAKpxJ,KAAK0lD,EAChB,IACEirG,EAAK3wJ,KAAK62J,aAAazF,GAAKT,GAAM3wJ,KAAK82J,WAAW1F,GAA6B,OAAvBuB,EAAM3yJ,KAAK,KAA4B2yJ,EAAInwJ,SAAS6vJ,IAC1G,IAAIkE,EACJ,OAAgC,OAAxBA,EAAMlE,EAAG0E,iBAAsB,EAASR,EAAI51J,KAAK0xJ,MACvDryJ,KAAKgI,OAAOopJ,IAAOpxJ,KAAK,KAC5B,MAAOszJ,GACP,MAAM3C,GAAK,EAAO3wJ,KAAK,KAAWszJ,EAEpC3C,GAAM3wJ,KAAKwlD,EAAE4rG,GAEf0F,WAAWnG,IAEXnrG,EAAEmrG,GACA,IAAIgC,EACJ3yJ,KAAKixE,aAAejxE,KAAKixE,YAAa,EAAMjxE,KAAKg3J,aAAarG,IAA8B,OAAvBgC,EAAM3yJ,KAAK,KAA4B2yJ,EAAInwJ,SAAS6vJ,IACvH,IAAIkE,EACJ,OAAiC,OAAzBA,EAAMlE,EAAG4E,kBAAuB,EAASV,EAAI51J,KAAK0xJ,MACxDryJ,KAAK4wE,QAAQ+/E,GAEnB,KACE3wJ,KAAK0lD,EAAI,IAAI1b,IAAOhqC,KAAKi1J,iBAAkB,EAEzCiC,qBACF,OAAOl3J,KAAKm3J,oBAEdA,oBACE,OAAOn3J,KAAK,GAEd62J,aAAalG,GACX,OAAO,EAET3oJ,OAAO2oJ,QACY,IAAjB3wJ,KAAK,KAAuBA,KAAK,GAAQwC,SAAQ,CAAC6vJ,EAAIjB,IAAOpxJ,KAAK,GAAQoxJ,EAAIpxJ,KAAKoxJ,GAAKiB,KAAMryJ,KAAK,QAAU,GAASA,KAAK,KAE7H4wE,QAAQ+/E,IAERqG,aAAarG,MAIfqE,EAAGS,WAAY,EAAMT,EAAGoB,kBAAoB,CAAC1lH,KAAM,QAA8D,OAApD4jH,EAAMd,WAAW4D,iCAAmD9C,EAAI3zJ,KAAK6yJ,WAAY,CAAC6D,gBAAiBrC,KAA4D,OAApDT,GAAOZ,EAAKH,YAAY8D,yBAAmC/C,EAAMZ,EAAG2D,wBAA0B,IAAIlzJ,KAAK,eAiBvR,IAAIi2I,EAAK,QAAQptI,KAAKC,SAAW,IAAI/K,MAAM,MACvCo1J,EAAK,IAAMld,EACXmd,EAAK,IAAID,KACTE,GAAKxyJ,SACLyyJ,GAAK,CAAC/G,EAAK,KAAO8G,GAAGvG,cAAcP,GACnCgH,GAAMhH,GAAc,OAAPA,GAA4B,iBAANA,GAA+B,mBAANA,EAC5DiH,GAAKt3J,MAAMiF,QAEX2pG,GAAK,sDACL2oD,GAAK,OACLC,GAAK,KACLC,GAAK,0FACLC,GAAK,KACLC,GAAK,KACLh5G,GAAK,+BACLi5G,GAAMvH,GAAO,CAACS,KAAOhB,KAAO,CAAEiB,WAAYV,EAAI1W,QAASmX,EAAIhzJ,OAAQgyJ,IACnEjqF,GAAK+xF,GAAG,GAER7sB,IADK6sB,GAAG,GACH1iD,OAAOskB,IAAI,iBAChB11D,GAAKoxC,OAAOskB,IAAI,eAChB31D,GAAK,IAAIn6B,IAWTmuH,GAAKV,GAAGnG,iBAAiBmG,GAAI,IAAK,MAAM,GAcxCW,GAAK,MACPx3J,aAAaq5I,QAAS0W,EAAIU,WAAYf,GAAKiB,GACzC,IAAIlB,EACJrwJ,KAAKm2E,EAAI,GAAIn2E,KAAK8hG,EAAIyvD,EACtB,IAAIC,EAAK,EAAGC,EAAK,EAAGC,EAAK,EACzB,MAAMC,EAAKhB,EAAGnyJ,OAAS,GAAIozJ,EAAIC,GAlB1B,EAAClB,EAAIP,KACZ,MAAMmB,EAAKZ,EAAGnyJ,OAAS,EAAGszJ,EAAK,GAC/B,IAAIzB,EAAImB,EAAY,IAAPpB,EAAW,QAAU,GAAIqB,EAAKviD,GAC3C,IAAK,IAAI6iD,EAAK,EAAGA,EAAKR,EAAIQ,IAAM,CAC9B,MAAMC,EAAKrB,EAAGoB,GACd,IAAIE,EAAIC,EAAIC,GAAM,EAAG1lB,EAAK,EAC1B,KAAOA,EAAKulB,EAAGxzJ,SAAWizJ,EAAG9yE,UAAY8tD,EAAIylB,EAAKT,EAAGzvJ,KAAKgwJ,GAAY,OAAPE,IAC7DzlB,EAAKglB,EAAG9yE,UAAW8yE,IAAOviD,GAAe,QAAVgjD,EAAG,GAAeT,EAAKoG,QAAe,IAAV3F,EAAG,GAAgBT,EAAKqG,QAAe,IAAV5F,EAAG,IAAiBjzG,GAAGzrC,KAAK0+I,EAAG,MAAQ7B,EAAKrgI,OAAO,KAAOkiI,EAAG,GAAI,MAAOT,EAAKsG,SAAgB,IAAV7F,EAAG,KAAkBT,EAAKsG,IAAMtG,IAAOsG,GAAe,MAAV7F,EAAG,IAAcT,EAAW,MAANpB,EAAaA,EAAKnhD,GAAIijD,GAAM,QAAe,IAAVD,EAAG,GAAgBC,GAAM,GAAKA,EAAKV,EAAG9yE,UAAYuzE,EAAG,GAAG1zJ,OAAQyzJ,EAAKC,EAAG,GAAIT,OAAe,IAAVS,EAAG,GAAgB6F,GAAe,MAAV7F,EAAG,GAAa+F,GAAKD,IAAMvG,IAAOwG,IAAMxG,IAAOuG,GAAKvG,EAAKsG,GAAKtG,IAAOoG,IAAMpG,IAAOqG,GAAKrG,EAAKviD,IAAMuiD,EAAKsG,GAAI1H,OAAK,GACze,MAAMxjE,EAAK4kE,IAAOsG,IAAMpH,EAAGoB,EAAK,GAAG1sJ,WAAW,MAAQ,IAAM,GAC5DmsJ,GAAMC,IAAOviD,GAAK8iD,EAAKwF,EAAKrF,GAAM,GAAKL,EAAG1tJ,KAAK6tJ,GAAKD,EAAG7vJ,MAAM,EAAGgwJ,GAAM,QAAUH,EAAG7vJ,MAAMgwJ,GAAM9X,EAAKxtD,GAAMmlE,EAAK3X,IAAc,IAAR8X,GAAaL,EAAG1tJ,UAAK,GAAS2tJ,GAAMllE,GAE3J,MAAO,CAAC2kE,GAAMb,EAAGY,IAAO,QAAiB,IAAPnB,EAAW,SAAW,IAAK0B,IAOtB3iD,CAAGwhD,EAAIL,GAC5C,GAAItwJ,KAAK6hG,EAAI7hG,KAAK4hG,EAAEgwD,GAAKuG,GAAG9Y,YAAcr/I,KAAK6hG,EAAEuwD,QAAgB,IAAP9B,EAAU,CAClE,MAAM+B,EAAKryJ,KAAK6hG,EAAEuwD,QAAShB,EAAKiB,EAAG7xB,WACnC4wB,EAAG58I,SAAU69I,EAAG75H,UAAU44H,EAAGtV,YAE/B,KAAgC,QAAxBuU,EAAK8H,GAAG7F,aAAwBb,EAAKE,GAAM,CACjD,GAAoB,IAAhBtB,EAAGtU,SAAgB,CACrB,GAAIsU,EAAGkC,gBAAiB,CACtB,MAAMF,EAAK,GACX,IAAK,MAAMjC,KAAMC,EAAGmC,oBAClB,GAAIpC,EAAGj1D,SAAS,UAAYi1D,EAAG/qJ,WAAWg1I,GAAK,CAC7C,MAAMmW,EAAKqB,EAAGH,KACd,GAAIW,EAAGjuJ,KAAKgsJ,QAAY,IAAPI,EAAe,CAC9B,MAAMiC,EAAKpC,EAAGn3H,aAAas3H,EAAGvzH,cAAgB,SAAS/6B,MAAMm4I,GAAK0X,EAAK,eAAe/vJ,KAAKwuJ,GAC3FxwJ,KAAKm2E,EAAE/xE,KAAK,CAACosD,EAAG,EAAG1/B,EAAG0gI,EAAI37G,EAAGk8G,EAAG,GAAIrvH,EAAG+vH,EAAItkI,EAAa,MAAV4jI,EAAG,GAAasG,GAAe,MAAVtG,EAAG,GAAauG,GAAe,MAAVvG,EAAG,GAAawG,GAAKC,KAAM/G,GAAMgB,EAAGj0J,OAAS,OAErIwB,KAAKm2E,EAAE/xE,KAAK,CAACosD,EAAG,EAAG1/B,EAAG0gI,IAE5B,IAAK,MAAMJ,KAAMiB,EACfhC,EAAGj5F,gBAAgBg6F,GAEvB,GAAInyG,GAAGzrC,KAAK68I,EAAGrzH,SAAU,CACvB,MAAMq1H,EAAKhC,EAAGpU,YAAY/5I,MAAMm4I,GAAK+V,EAAKiC,EAAG7zJ,OAAS,EACtD,GAAI4xJ,EAAK,EAAG,CACVC,EAAGpU,YAAc,GACjB,IAAK,IAAImV,EAAK,EAAGA,EAAKhB,EAAIgB,IACxBf,EAAG73H,OAAO65H,EAAGjB,IAAOsG,MAAO13J,KAAKm2E,EAAE/xE,KAAK,CAACosD,EAAG,EAAG1/B,IAAK0gI,IAAMC,IAC3DpB,EAAG73H,OAAO65H,EAAGjC,IAAOsH,aAGnB,GAAoB,IAAhBrH,EAAGtU,SACZ,GAAIsU,EAAG5kJ,OAAS8rJ,EACd9F,IAAMzxJ,KAAKm2E,EAAE/xE,KAAK,CAACosD,EAAG,EAAG1/B,EAAG0gI,QACzB,CACH,IAAIa,GAAM,EACV,MAA+C,KAAvCA,EAAKhC,EAAG5kJ,KAAKrC,QAAQixI,EAAIgY,EAAK,KACpCryJ,KAAKm2E,EAAE/xE,KAAK,CAACosD,EAAG,EAAG1/B,EAAG0gI,IAAMC,IAAMY,GAAMhY,EAAG77I,OAAS,EAE1DgzJ,KAGJ5vD,EAAE+uD,GACA,MAAMS,EAAKqG,GAAGtgJ,cAAc,YAC5B,OAAOi6I,EAAGsB,UAAY/B,EAAIS,IAG9B,SAASqH,GAAG9H,EAAIS,EAAIhB,EAAKO,EAAIL,GAC3B,IAAIqC,EAAKC,EAAKC,EACVtB,EACJ,GAAIH,IAAO/lB,GACT,OAAO+lB,EACT,IAAIU,OAAY,IAAPxB,EAAsC,OAArBqC,EAAMvC,EAAG,SAAmB,EAASuC,EAAIrC,GAAMF,EAAG,GAC5E,MAAMoB,EAAKmG,GAAGvG,QAAM,EAASA,EAAG0B,gBAChC,OAAc,MAANhB,OAAa,EAASA,EAAGlxJ,eAAiB4wJ,IAA6C,OAArCoB,EAAY,MAANd,OAAa,EAASA,EAAGjuD,IAAsB+uD,EAAIjyJ,KAAKmxJ,GAAI,GAAQA,OAAY,IAAPN,OAAgB,EAAS,IAAIA,EAAGvoB,EAASA,EAAS,GAAI0nB,GAAK,CAACj8I,EAAGi8I,EAAI5sD,EAAGqsD,EAAIrrJ,EAAGurJ,UAAc,IAAPA,GAA6C,OAA3BuC,GAAMtB,EAAKnB,GAAI,IAAmByC,EAAKtB,EAAG,GAAU,IAAIjB,GAAMwB,EAAK1B,EAAG,GAAU0B,QAAY,IAAPA,IAAkBV,EAAKqH,GAAG9H,EAAImB,EAAGpuD,EAAEitD,EAAIS,EAAGhzJ,QAAS0zJ,EAAIxB,IAAMc,EAEnY,IA6IIsH,GAAKC,GAiBLC,GACAC,GAxIAC,GAAK,MACPl4J,YAAY+vJ,EAAIS,EAAIhB,EAAIE,GACtBtwJ,KAAK3B,KAAO,EAAG2B,KAAK8jG,OAAI,EAAQ9jG,KAAK+hG,EAAI4uD,EAAI3wJ,KAAKgiG,EAAIovD,EAAIpxJ,KAAK+jG,EAAIqsD,EAAIpwJ,KAAKvC,QAAU6yJ,EAExF0C,aAAarC,GACX,IAAIgC,EACc,OAAjBA,EAAM3yJ,KAAKgkD,IAAsB2uG,EAAIhyJ,KAAKX,KAAM2wJ,GAE/Ch0H,iBACF,OAAO38B,KAAK+hG,EAAEplE,WAEhBunE,EAAEysD,EAAIS,EAAKpxJ,MACT2wJ,EAAK8H,GAAGz4J,KAAM2wJ,EAAIS,GAAKuG,GAAGhH,GAAMA,IAAOvsF,IAAY,MAANusF,GAAqB,KAAPA,GAAa3wJ,KAAKmkG,IAAM//B,IAAMpkE,KAAK2jG,IAAK3jG,KAAKmkG,EAAI//B,IAAMusF,IAAO3wJ,KAAKmkG,GAAKwsD,IAAOtlB,IAAMrrI,KAAKwjG,EAAEmtD,QAAwB,IAAlBA,EAAGU,WAAwBrxJ,KAAKwvH,EAAEmhC,QAAsB,IAAhBA,EAAG5U,SAAsB/7I,KAAKyjG,EAAEktD,GArIhO,CAACA,GAAOiH,GAAGjH,IAA6D,mBAAxC,MAANA,OAAa,EAASA,EAAGn7C,OAAOikC,WAqI4KtrE,CAAGwiF,GAAM3wJ,KAAKizJ,GAAGtC,GAAM3wJ,KAAKwjG,EAAEmtD,GAE3QuC,GAAGvC,EAAIS,EAAKpxJ,KAAKgiG,GACf,OAAOhiG,KAAK+hG,EAAEplE,WAAW4jG,aAAaowB,EAAIS,GAE5C3tD,EAAEktD,GACA3wJ,KAAKmkG,IAAMwsD,IAAO3wJ,KAAK2jG,IAAK3jG,KAAKmkG,EAAInkG,KAAKkzJ,GAAGvC,IAE/CntD,EAAEmtD,GACA,MAAMS,EAAKpxJ,KAAK+hG,EAAEoxD,YACX,OAAP/B,GAA+B,IAAhBA,EAAGrV,WAA8B,OAAX/7I,KAAKgiG,EAAgC,OAAnBovD,EAAG+B,YAAuB/B,IAAOpxJ,KAAKgiG,EAAEoxD,iBAAmBhC,EAAG3lJ,KAAOklJ,EAAK3wJ,KAAKyjG,EAAEg0D,GAAG/2B,eAAeiwB,IAAM3wJ,KAAKmkG,EAAIwsD,EAE3KnhC,EAAEmhC,GACA,IAAIgC,EACJ,MAAOv0J,OAAQgzJ,EAAInX,QAASmW,GAAMO,EAAIL,EAAKtwJ,KAAKiiG,EAAEmuD,EAAIO,GACtD,IAAuB,OAAjBgC,EAAM3yJ,KAAKmkG,QAAa,EAASwuD,EAAItuD,KAAOisD,EAChDtwJ,KAAKmkG,EAAEh3C,EAAEikG,OACN,CACH,MAAMiB,EAAK,IArDR,MACPzxJ,YAAY+vJ,EAAIS,GACdpxJ,KAAKm2E,EAAI,GAAIn2E,KAAK8jG,OAAI,EAAQ9jG,KAAKqkG,EAAIssD,EAAI3wJ,KAAK+jG,EAAIqtD,EAEtDx1D,EAAE+0D,GACA,MAAO9uD,GAAIuwD,QAAShB,GAAKj7E,EAAGi6E,GAAMpwJ,KAAKqkG,EAAGisD,EAAKmH,GAAGpE,WAAWjC,GAAI,GACjE+G,GAAG9Y,YAAciR,EACjB,IAAIwB,EAAKqG,GAAG7F,WAAYjC,EAAK,EAAGmB,EAAK,EAAGC,EAAKrB,EAAG,GAChD,UAAc,IAAPqB,GAAwB,OAAPK,GAAe,CACrC,GAAIzB,IAAOoB,EAAG3gI,EAAG,CACf,IAAIwiI,EACK,IAAT7B,EAAGjhG,EAAU8iG,EAAK,IAAIwF,GAAGhH,EAAIA,EAAGqB,YAAanzJ,KAAM2wJ,GAAe,IAATc,EAAGjhG,EAAU8iG,EAAK,IAAI7B,EAAGtjI,EAAE2jI,EAAIL,EAAG57G,EAAG47G,EAAG/uH,EAAG1iC,KAAM2wJ,GAAe,IAATc,EAAGjhG,IAAY8iG,EAAK,IAAIyF,GAAGjH,EAAI9xJ,KAAM2wJ,IAAM3wJ,KAAKm2E,EAAE/xE,KAAKkvJ,GAAK7B,EAAKrB,IAAKoB,QAEjL,IAAPC,GAAiBpB,IAAOoB,EAAG3gI,IAAMghI,EAAKqG,GAAG7F,WAAYjC,KAEvD,OAAOC,EAETnjG,EAAEwjG,GACA,IAAIS,EAAK,EACT,IAAK,MAAMhB,KAAMpwJ,KAAKm2E,OACb,IAAPi6E,SAAiC,IAAfA,EAAGnW,SAAsBmW,EAAGlsD,EAAEysD,EAAIP,EAAIgB,GAAKA,GAAMhB,EAAGnW,QAAQz7I,OAAS,GAAK4xJ,EAAGlsD,EAAEysD,EAAGS,KAAOA,MAiCzFd,EAAItwJ,MAAO+xJ,EAAKM,EAAGz2D,EAAE57F,KAAKvC,SAC5C40J,EAAGllG,EAAEikG,GAAKpxJ,KAAKyjG,EAAEsuD,GAAK/xJ,KAAKmkG,EAAIkuD,GAGnCpwD,EAAE0uD,EAAIS,GACJ,IAAIhB,EAAKjsF,GAAGjqD,IAAIy2I,GAChB,YAAc,IAAPP,GAAiBjsF,GAAG34B,IAAImlH,EAAIP,EAAK,IAAIgI,GAAGhH,IAAMhB,EAEvD6C,GAAGtC,GACDiH,GAAG53J,KAAKmkG,KAAOnkG,KAAKmkG,EAAI,GAAInkG,KAAK2jG,KACjC,MAAMytD,EAAKpxJ,KAAKmkG,EAChB,IAAIisD,EAAIE,EAAK,EACb,IAAK,MAAMiB,KAAMZ,EACfL,IAAOc,EAAG5yJ,OAAS4yJ,EAAGhtJ,KAAKgsJ,EAAK,IAAI0I,GAAG94J,KAAKkzJ,GAAGwE,MAAO13J,KAAKkzJ,GAAGwE,MAAO13J,KAAMA,KAAKvC,UAAY2yJ,EAAKgB,EAAGd,GAAKF,EAAGlsD,EAAEqtD,GAAKjB,IACrHA,EAAKc,EAAG5yJ,SAAWwB,KAAK2jG,EAAEysD,GAAMA,EAAGpuD,EAAEmxD,YAAa7C,GAAKc,EAAG5yJ,OAAS8xJ,GAErE3sD,EAAEgtD,EAAK3wJ,KAAK+hG,EAAEoxD,YAAa/B,GACzB,IAAIuB,EACJ,IAAuB,OAAjBA,EAAM3yJ,KAAKgkD,IAAsB2uG,EAAIhyJ,KAAKX,MAAM,GAAO,EAAMoxJ,GAAKT,GAAMA,IAAO3wJ,KAAKgiG,GAAK,CAC7F,MAAMsxD,EAAK3C,EAAGwC,YACdxC,EAAGn8I,SAAUm8I,EAAK2C,KAIpBkF,GAAK,MACP53J,YAAY+vJ,EAAIS,EAAIhB,EAAIE,EAAIiB,GAC1BvxJ,KAAK3B,KAAO,EAAG2B,KAAKmkG,EAAI//B,GAAIpkE,KAAK8jG,OAAI,EAAQ9jG,KAAK++G,QAAK,EAAQ/+G,KAAKw0B,QAAUm8H,EAAI3wJ,KAAKpD,KAAOw0J,EAAIpxJ,KAAK+jG,EAAIusD,EAAItwJ,KAAKvC,QAAU8zJ,EAAInB,EAAG5xJ,OAAS,GAAe,KAAV4xJ,EAAG,IAAuB,KAAVA,EAAG,IAAapwJ,KAAKmkG,EAAI7jG,MAAM8vJ,EAAG5xJ,OAAS,GAAG0lC,KAAKkgC,IAAKpkE,KAAKi6I,QAAUmW,GAAMpwJ,KAAKmkG,EAAI//B,GAEvPpnC,cACF,OAAOh9B,KAAKw0B,QAAQwI,QAEtBknE,EAAEysD,EAAIS,EAAKpxJ,KAAMowJ,EAAIE,GACnB,MAAMiB,EAAKvxJ,KAAKi6I,QAChB,IAAI6X,GAAK,EACT,QAAW,IAAPP,EACFZ,EAAK8H,GAAGz4J,KAAM2wJ,EAAIS,EAAI,GAAIU,GAAM6F,GAAGhH,IAAOA,IAAO3wJ,KAAKmkG,GAAKwsD,IAAOtlB,GAAIymB,IAAO9xJ,KAAKmkG,EAAIwsD,OACnF,CACH,MAAMH,EAAKG,EACX,IAAIa,EAAIC,EACR,IAAKd,EAAKY,EAAG,GAAIC,EAAK,EAAGA,EAAKD,EAAG/yJ,OAAS,EAAGgzJ,IAC3CC,EAAKgH,GAAGz4J,KAAMwwJ,EAAGJ,EAAKoB,GAAKJ,EAAII,GAAKC,IAAOpmB,KAAOomB,EAAKzxJ,KAAKmkG,EAAEqtD,IAAMM,IAAOA,GAAM6F,GAAGlG,IAAOA,IAAOzxJ,KAAKmkG,EAAEqtD,IAAMC,IAAOrtF,GAAKusF,EAAKvsF,GAAKusF,IAAOvsF,KAAOusF,IAAa,MAANc,EAAaA,EAAK,IAAMF,EAAGC,EAAK,IAAKxxJ,KAAKmkG,EAAEqtD,GAAMC,EAEhNK,IAAOxB,GAAMtwJ,KAAKuzJ,GAAG5C,GAEvB4C,GAAG5C,GACDA,IAAOvsF,GAAKpkE,KAAKw0B,QAAQ4iC,gBAAgBp3D,KAAKpD,MAAQoD,KAAKw0B,QAAQ6iC,aAAar3D,KAAKpD,KAAY,MAAN+zJ,EAAaA,EAAK,MAG7G0H,GAAK,cAAcG,GACrB53J,cACE8+C,SAASxjC,WAAYlc,KAAK3B,KAAO,EAEnCk1J,GAAG5C,GACD3wJ,KAAKw0B,QAAQx0B,KAAKpD,MAAQ+zJ,IAAOvsF,QAAK,EAASusF,IAG/C2H,GAAK,cAAcE,GACrB53J,cACE8+C,SAASxjC,WAAYlc,KAAK3B,KAAO,EAEnCk1J,GAAG5C,GACDA,GAAMA,IAAOvsF,GAAKpkE,KAAKw0B,QAAQ6iC,aAAar3D,KAAKpD,KAAM,IAAMoD,KAAKw0B,QAAQ4iC,gBAAgBp3D,KAAKpD,QAG/F27J,GAAK,cAAcC,GACrB53J,cACE8+C,SAASxjC,WAAYlc,KAAK3B,KAAO,EAEnC6lG,EAAEysD,EAAIS,EAAKpxJ,MACT,IAAI2yJ,EACJ,IAAKhC,EAAoC,OAA9BgC,EAAM8F,GAAGz4J,KAAM2wJ,EAAIS,EAAI,IAAcuB,EAAMvuF,MAAQinE,GAC5D,OACF,MAAM+kB,EAAKpwJ,KAAKmkG,EAAGmsD,EAAKK,IAAOvsF,IAAMgsF,IAAOhsF,IAAMusF,EAAG16H,UAAYm6H,EAAGn6H,SAAW06H,EAAGx/H,OAASi/H,EAAGj/H,MAAQw/H,EAAG/7F,UAAYw7F,EAAGx7F,QAAS28F,EAAKZ,IAAOvsF,KAAOgsF,IAAOhsF,IAAMksF,GACjKA,GAAMtwJ,KAAKw0B,QAAQnD,oBAAoBrxB,KAAKpD,KAAMoD,KAAMowJ,GAAKmB,GAAMvxJ,KAAKw0B,QAAQvc,iBAAiBjY,KAAKpD,KAAMoD,KAAM2wJ,GAAK3wJ,KAAKmkG,EAAIwsD,EAElIrwI,YAAYqwI,GACV,IAAIgC,EAAKC,EACQ,mBAAV5yJ,KAAKmkG,EAAkBnkG,KAAKmkG,EAAExjG,KAAiE,OAA3DiyJ,EAA8B,OAAvBD,EAAM3yJ,KAAKvC,cAAmB,EAASk1J,EAAIzxJ,MAAgB0xJ,EAAM5yJ,KAAKw0B,QAASm8H,GAAM3wJ,KAAKmkG,EAAE7jF,YAAYqwI,KAG1JoI,GAAK,MACPn4J,YAAY+vJ,EAAIS,EAAIhB,GAClBpwJ,KAAKw0B,QAAUm8H,EAAI3wJ,KAAK3B,KAAO,EAAG2B,KAAK8jG,OAAI,EAAQ9jG,KAAK++G,QAAK,EAAQ/+G,KAAK+jG,EAAIqtD,EAAIpxJ,KAAKvC,QAAU2yJ,EAEnGlsD,EAAEysD,GACA8H,GAAGz4J,KAAM2wJ,KAIgC,OAA5C+H,GAAMlF,WAAWC,yBAA2CiF,GAAI/3J,KAAK6yJ,WAAY4E,GAAIU,KAAmD,OAA5CH,IAAOnE,EAAKhB,YAAYE,iBAA2BiF,GAAMnE,EAAGd,gBAAkB,IAAItvJ,KAAK,gBAkBnI,OAA/Cy0J,IAAOD,GAAKpF,YAAYwF,oBAA8BH,GAAMD,GAAGI,mBAAqB,IAAI50J,KAAK,eAC/F,IA0BI60J,GAAKC,GA1BLC,GAAK,cAAcnE,EACrBp0J,cACE8+C,SAASxjC,WAAYlc,KAAKskG,EAAI,CAACpjG,KAAMlB,MAAOA,KAAK,QAAU,EAE7Dk2J,mBACE,IACIvF,EACJ,MAAML,EAAK5wG,MAAMw2G,mBACjB,OAA6C,OAA9BvF,EAAK3wJ,KAAKskG,GAAG80D,eAA8BzI,EAAGyI,aAAe9I,EAAG9vB,YAAY8vB,EAE7FtoJ,OAAO2oJ,GACL,MAAMa,EAAKxxJ,KAAKswE,SAChB5wB,MAAM13C,OAAO2oJ,GAAK3wJ,KAAK,GAjQnB,EAAC2wJ,EAAIS,EAAIhB,KACf,IAAIuC,EAAKC,EACT,MAAMtC,EAAsD,OAAhDqC,EAAY,MAANvC,OAAa,EAASA,EAAGgJ,cAAwBzG,EAAMvB,EACzE,IAAIG,EAAKjB,EAAGn3G,EACZ,QAAW,IAAPo4G,EAAe,CACjB,MAAMc,EAAsD,OAAhDO,EAAY,MAANxC,OAAa,EAASA,EAAGgJ,cAAwBxG,EAAM,KACzEtC,EAAGn3G,EAAIo4G,EAAK,IAAIuH,GAAG1H,EAAG7wB,aAAam3B,KAAMrF,GAAKA,OAAI,EAAQjC,GAE5D,OAAOmB,EAAGrtD,EAAEysD,GAAKY,GAyPkB/lJ,CAAEgmJ,EAAIxxJ,KAAKu6I,WAAYv6I,KAAKskG,GAE/DgyD,oBACE,IAAI3D,EACJjzG,MAAM42G,oBAA6C,OAAvB3D,EAAM3yJ,KAAK,KAA4B2yJ,EAAIK,cAAa,GAEtFwD,uBACE,IAAI7D,EACJjzG,MAAM82G,uBAAgD,OAAvB7D,EAAM3yJ,KAAK,KAA4B2yJ,EAAIK,cAAa,GAEzF1iF,SACE,OAAO+6D,KAIX8tB,GAAG1D,WAAY,EAAqD,OAA9CwD,GAAMzF,WAAW6F,2BAA6CJ,GAAIt4J,KAAK6yJ,WAAY,CAAC8F,WAAYH,KAAsD,OAA/CD,GAAM1F,WAAW+F,4BAA8CL,GAAIv4J,KAAK6yJ,WAAY,CAAC8F,WAAYH,iECl9B1N75J,EAAI,CAACg7I,EAAIF,IAAmB,WAAZA,EAAG3F,MAAqB2F,EAAGpwE,cAAgB,UAAWowE,EAAGpwE,aAAc,SAAS,QAAS,GAAIowE,GAAK,CAACwW,SAAS/yD,GAC9HA,EAAE63D,eAAetb,EAAGv2I,IAAKy2I,MACrB,CAAC7F,KAAM,QAAS5wI,IAAK2xG,SAAUglC,UAAW,MAAOxwE,WAAY,GAAIwvF,cAC5C,mBAAlBpf,EAAGof,cAA8Bx5J,KAAKo6I,EAAGv2I,KAAOu2I,EAAGof,YAAY74J,KAAKX,QAC1E4wJ,SAAS/yD,GACVA,EAAE63D,eAAetb,EAAGv2I,IAAKy2I,KAE3B,SAASh8I,EAAE87I,GACT,MAAO,CAACv8C,EAAG1kD,KAAMA,YAAM,IAANA,GAAiBmhG,EAE/BF,EAFuC0W,EAEhC33G,OAAH0kD,EADFj9F,YAAY80J,eAAe5E,EAAIxW,IACrBh7I,EAAE86I,EAAIv8C,GAFW,IAAEy8C,EAAQwW,kDCZ5C,IAAI2I,EAAQ,IAAIrtF,iCCAhB,SAASstF,EAAeC,GACtB,MAAMC,EAAQD,EAAOA,EAAKE,cAAc,CAACC,SAAS,IAAS,GAC3D,IAAIh/I,EAAO,GAMX,MALA,IAAI8+I,GAAO1wJ,KAAKyrB,IACVA,EAAKonH,WAAage,KAAK/d,YACzBlhI,GAAQ6Z,EAAKsnH,gBAGVnhI,iFCKT,IAAIq+B,EAAI,CAAC6gH,UAAW,EAAGC,MAAO,EAAGC,SAAU,EAAGC,kBAAmB,EAAGC,MAAO,EAAGC,QAAS,GACnF5+H,EAAKu+G,GAAO,IAAIE,KAAO,CAAE4Y,gBAAiB9Y,EAAI57I,OAAQ87I,IACtD57I,EAAI,MACNsC,YAAYo5I,GACVh6I,KAAK+jG,EAAIi2C,EAAGj2C,EAAG/jG,KAAK,IAAWg6I,EAAGtlI,EAAG1U,KAAK,IAAWg6I,EAAGj1I,EAE1D2+F,EAAEs2C,EAAIE,GACJ,OAAOl6I,KAAKgI,OAAOgyI,EAAIE,GAEzBlyI,OAAOgyI,EAAIE,GACT,OAAOl6I,KAAKswE,UAAU4pE,mDCxB1B,IAAIogB,EAAYr+J,OAAOC,qECCvB,IAAIq+J,EAAW,GACf,SAASC,EAAYr5J,GACnBo5J,EAAWp5J,EAEb,SAASs5J,IACP,OAAOF,EAASj1J,QAAQ,MAAO,IAEjC,IAAKi1J,EAAU,CACb,MACMvhI,EADa,IAAI/zB,SAAS67H,qBAAqB,WAC/B8qB,MAAMvtI,GAAWA,EAAO89H,aAAa,mBAC3D,GAAInjH,EACFwhI,EAAYxhI,EAAGE,aAAa,sBACvB,CACL,MAAM7a,EAASpZ,SAASg0B,cAAc,8DACtC,IAAI93B,EAAO,GACPkd,IACFld,EAAOkd,EAAO6a,aAAa,QAE7BshI,EAAYr5J,EAAKe,MAAM,KAAKC,MAAM,GAAI,GAAGC,KAAK,mGCQ9Cs4J,EAAaz+J,OAAOge,OAAOhV,SAASkS,cAAc,OAAQ,CAAC0lB,UAAW,mBACtE89H,EAAU,cAAc,EAAAxkF,EAC1Bv1E,cACE8+C,SAASxjC,WACTlc,KAAKuvJ,WAAY,EACjBvvJ,KAAKya,MAAO,EACZza,KAAK46J,UAAW,EAChB56J,KAAK3B,KAAO,UACZ2B,KAAK6kB,SAAW2M,EAAAA,EAElB8kI,oBACE52G,MAAM42G,oBACFt2J,KAAKya,MACPza,KAAKwuC,OAGTA,OACMxuC,KAAKuvJ,YAGMvvJ,KAAK66J,OAAOrf,OAChBsf,iBACT96J,KAAKya,MAAO,GAGdza,KAAKuvJ,WAAY,EACjBvvJ,KAAKya,MAAO,EACRza,KAAK6kB,SAAW2M,EAAAA,IAClBxxB,KAAK+6J,gBAAkB/lJ,YAAW,IAAMhV,KAAK2uC,QAAQ3uC,KAAK6kB,aAG9D8pB,OACO3uC,KAAKya,OAGKza,KAAKg7J,OAAOxf,OAChBsf,iBACT96J,KAAKya,MAAO,GAGdxF,aAAajV,KAAK+6J,iBAClB/6J,KAAKya,MAAO,IAEd6D,cACE,OAAO,IAAIxE,SAAS1P,IACbswJ,EAAWO,eACdh2J,SAASyR,KAAK8hB,OAAOkiI,GAEvBA,EAAWnjJ,YAAYvX,MACvBwf,uBAAsB,KACpBxf,KAAKk2D,YACLl2D,KAAKwuC,UAEPxuC,KAAKiY,iBAAiB,iBAAiB,KACrCyiJ,EAAWjjJ,YAAYzX,MACvBoK,IACKswJ,EAAWzhI,cAAc,aAC5ByhI,EAAWlmJ,WAEZ,CAAC2c,MAAM,OAGd+pI,kBACEjmJ,aAAajV,KAAK+6J,iBACd/6J,KAAKya,MAAQza,KAAK6kB,SAAW2M,EAAAA,IAC/BxxB,KAAK+6J,gBAAkB/lJ,YAAW,IAAMhV,KAAK2uC,QAAQ3uC,KAAK6kB,WAG9Ds2I,mBACEn7J,KAAK2uC,OAEPysH,kBACEp7J,KAAKk7J,kBAEPjM,oBAAoBvT,GAClB,MAAM1tI,EAAS0tI,EAAO1tI,OACM,YAAxB0tI,EAAO2f,cAA8BrtJ,EAAO+xH,UAAU/qE,SAAS,WACjEh1D,KAAKuvJ,UAAYvvJ,KAAKya,KACtBza,KAAKya,KAAOza,KAAKs7J,YAAY9f,OAASx7I,KAAKu7J,YAAY/f,QAG3DggB,mBACEx7J,KAAKya,KAAOza,KAAKwuC,OAASxuC,KAAK2uC,OAEjC8sH,uBACEz7J,KAAKk7J,kBAEP5qF,SACE,OAAO,EAAAniD,CAAC;;;iBAGI,IAAA7uB,GAAE,CACZo8J,OAAO,EACP,cAAe17J,KAAKya,KACpB,iBAAkBza,KAAKuvJ,UACvB,kBAAmBvvJ,KAAK46J,SACxB,iBAAgC,YAAd56J,KAAK3B,KACvB,iBAAgC,YAAd2B,KAAK3B,KACvB,cAA6B,SAAd2B,KAAK3B,KACpB,iBAAgC,YAAd2B,KAAK3B,KACvB,gBAA+B,WAAd2B,KAAK3B;;;;sBAKN2B,KAAKya,KAAO,QAAU;qBACvBza,KAAKo7J,gBAAgBnkJ,KAAKjX;yBACtBA,KAAKivJ,oBAAoBh4I,KAAKjX;;;;;;;;;;UAU7CA,KAAK46J,SAAW,EAAAzsI,CAAC;;;;;2BAKAnuB,KAAKm7J,iBAAiBlkJ,KAAKjX;;;cAGtC;;QAKhB26J,EAAQrgD,QAAS,IAAA7+E,GArIG,+wEAsIpB,QAAW,EACT,IAAAmH,MACC+3H,EAAQ96J,UAAW,YAAa,IACnC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1B6F,EAAQ96J,UAAW,OAAQ,IAC9B,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1B6F,EAAQ96J,UAAW,WAAY,IAClC,QAAW,EACT,IAAAvB,GAAE,CAACw2J,SAAS,KACX6F,EAAQ96J,UAAW,OAAQ,IAC9B,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM6L,UACRywJ,EAAQ96J,UAAW,WAAY,IAClC,QAAW,EACT,OAAM,YACL86J,EAAQ96J,UAAW,SAAU,IAChC,QAAW,EACT,OAAM,kBACL86J,EAAQ96J,UAAW,cAAe,IACrC,QAAW,EACT,OAAM,YACL86J,EAAQ96J,UAAW,SAAU,IAChC,QAAW,EACT,OAAM,kBACL86J,EAAQ96J,UAAW,cAAe,IACrC,QAAW,EACT,OAAM,SACL86J,EAAQ96J,UAAW,mBAAoB,IAC1C,QAAW,EACT,OAAM,aACL86J,EAAQ96J,UAAW,uBAAwB,GAC9C86J,GAAU,QAAW,EACnB,IAAA98D,GAAE,aACD88D,kFC/KCgB,EAAgB,cAAc,EAAAxlF,EAChCv1E,cACE8+C,SAASxjC,WACTlc,KAAKg5C,MAAQ,GAEf4iH,YAAY1+J,GACV,MAAM2+J,EAASC,EAAW5+J,EAAM8Q,QACtB,MAAV6tJ,GAA0BA,EAAO97B,UAAU57H,IAAI,kCAEjD43J,WAAW7+J,GACT,MAAM2+J,EAASC,EAAW5+J,EAAM8Q,QACtB,MAAV6tJ,GAA0BA,EAAO97B,UAAUvrH,OAAO,kCAEpDwnJ,gBAAgB9+J,GACd,MAAM2+J,EAASC,EAAW5+J,EAAM8Q,QACtB,MAAV6tJ,GAA0BA,EAAO97B,UAAU57H,IAAI,kCAEjD83J,eAAe/+J,GACb,MAAM2+J,EAASC,EAAW5+J,EAAM8Q,QACtB,MAAV6tJ,GAA0BA,EAAO97B,UAAUvrH,OAAO,kCAEpD0nJ,mBACE,MAAMC,EAAkB,IAAIn8J,KAAKo8J,YAAYC,iBAAiB,CAACvC,SAAS,KACxEqC,EAAgBjzJ,KAAK8vB,IACnB,MAAMxN,EAAQ2wI,EAAgB/yJ,QAAQ4vB,GAChC6iI,EAASC,EAAW9iI,GACtB6iI,IACFA,EAAO97B,UAAU57H,IAAI,2BACrB03J,EAAO97B,UAAUu8B,OAAO,iCAA4C,IAAV9wI,GAC1DqwI,EAAO97B,UAAUu8B,OAAO,iCAAkC9wI,EAAQ,GAAKA,EAAQ2wI,EAAgB39J,OAAS,GACxGq9J,EAAO97B,UAAUu8B,OAAO,gCAAiC9wI,IAAU2wI,EAAgB39J,OAAS,OAIlG8xE,SACE,OAAO,EAAAniD,CAAC;;;;;qBAKSnuB,KAAKg5C;oBACNh5C,KAAK+7J;mBACN/7J,KAAK47J;qBACH57J,KAAKg8J;oBACNh8J,KAAKi8J;;4BAEGj8J,KAAKk8J;;QAgBjC,SAASJ,EAAW9iI,GAClB,MAAoC,cAA7BA,EAAGgE,QAAQC,cAAgCjE,EAAKA,EAAGC,cAAc,aAZ1E0iI,EAAcrhD,QAAS,IAAA7+E,GAtDI,4OAuD3B,QAAW,EACT,IAAAn8B,GAAE,SACDq8J,EAAc97J,UAAW,cAAe,IAC3C,QAAW,EACT,IAAAvB,MACCq9J,EAAc97J,UAAW,QAAS,GACrC87J,GAAgB,QAAW,EACzB,IAAA99D,GAAE,oBACD89D,yHC7CCY,EAAW,cAAc,EAAApmF,EAC3Bv1E,cACE8+C,SAASxjC,WACTlc,KAAKw8J,UAAW,EAChBx8J,KAAK06I,UAAW,EAChB16I,KAAKy8J,WAAY,EACjBz8J,KAAK08J,WAAY,EACjB18J,KAAK3B,KAAO,UACZ2B,KAAKy0B,KAAO,SACZz0B,KAAKupF,OAAQ,EACbvpF,KAAKw5C,UAAW,EAChBx5C,KAAK28J,SAAU,EACf38J,KAAK48J,MAAO,EACZ58J,KAAK68J,QAAS,EACd78J,KAAK88J,QAAS,EAEhBxG,oBACE52G,MAAM42G,oBACNt2J,KAAKk8J,mBAEP1xC,QACExqH,KAAK67J,OAAOrxC,QAEduyC,MAAMt/J,GACJuC,KAAK67J,OAAOkB,MAAMt/J,GAEpBu/J,OACEh9J,KAAK67J,OAAOmB,OAEdd,mBACEl8J,KAAK06I,UAAW,OAAQ16I,MACxBA,KAAKy8J,WAAY,OAAQz8J,KAAM,UAC/BA,KAAK08J,WAAY,OAAQ18J,KAAM,UAEjC+7J,aACE/7J,KAAKw8J,UAAW,EAChBx8J,KAAKi9J,OAAOzhB,OAEdogB,cACE57J,KAAKw8J,UAAW,EAChBx8J,KAAKk9J,QAAQ1hB,OAEf2hB,YAAYzhB,IACN17I,KAAKw5C,UAAYx5C,KAAK28J,WACxBjhB,EAAO0hB,iBACP1hB,EAAO2hB,mBAGX/sF,SACE,MAAMgtF,IAASt9J,KAAK+d,KACdw/I,EAAW,EAAApvI,CAAC;;4BAEMnuB,KAAKk8J;;;4BAGLl8J,KAAKk8J;;;4BAGLl8J,KAAKk8J;;QAEzBl8J,KAAKupF,MAAQ,EAAAp7D,CAAC;;;;;;;;;;;;;YAaR;QACNnuB,KAAK28J,QAAU,EAAAxuI,CAAC,4BAA8B;MAE5C0tI,EAAS,EAAA1tI,CAAC;;;iBAGJ,IAAA7uB,GAAE,CACZu8J,QAAQ,EACR,kBAAiC,YAAd77J,KAAK3B,KACxB,kBAAiC,YAAd2B,KAAK3B,KACxB,kBAAiC,YAAd2B,KAAK3B,KACxB,eAA8B,SAAd2B,KAAK3B,KACrB,kBAAiC,YAAd2B,KAAK3B,KACxB,iBAAgC,WAAd2B,KAAK3B,KACvB,eAA8B,SAAd2B,KAAK3B,KACrB,gBAA+B,UAAd2B,KAAKy0B,KACtB,iBAAgC,WAAdz0B,KAAKy0B,KACvB,gBAA+B,UAAdz0B,KAAKy0B,KACtB,gBAAiBz0B,KAAKupF,MACtB,iBAAkBvpF,KAAK68J,OACvB,mBAAoB78J,KAAKw5C,SACzB,kBAAmBx5C,KAAKw8J,SACxB,kBAAmBx8J,KAAK28J,QACxB,eAAgB38J,KAAK48J,KACrB,oBAAqB58J,KAAK06I,SAC1B,qBAAsB16I,KAAKy8J,UAC3B,qBAAsBz8J,KAAK08J;oBAEb18J,KAAKw5C;eACVx5C,KAAK88J,OAAS,SAAW;gBACzB,IAAA3mF,GAAEn2E,KAAKpD;iBACN,IAAAu5E,GAAEn2E,KAAK7D;gBACP6D,KAAK+7J;iBACJ/7J,KAAK47J;iBACL57J,KAAKm9J;;UAEZI;;MAGAC,EAAO,EAAArvI,CAAC;;cAEH6K,GAAOh5B,KAAK67J,OAAS7iI;;iBAEpB,IAAA15B,GAAE,CACZu8J,QAAQ,EACR,kBAAiC,YAAd77J,KAAK3B,KACxB,kBAAiC,YAAd2B,KAAK3B,KACxB,kBAAiC,YAAd2B,KAAK3B,KACxB,eAA8B,SAAd2B,KAAK3B,KACrB,kBAAiC,YAAd2B,KAAK3B,KACxB,iBAAgC,WAAd2B,KAAK3B,KACvB,eAA8B,SAAd2B,KAAK3B,KACrB,gBAA+B,UAAd2B,KAAKy0B,KACtB,iBAAgC,WAAdz0B,KAAKy0B,KACvB,gBAA+B,UAAdz0B,KAAKy0B,KACtB,gBAAiBz0B,KAAKupF,MACtB,iBAAkBvpF,KAAK68J,OACvB,mBAAoB78J,KAAKw5C,SACzB,kBAAmBx5C,KAAKw8J,SACxB,kBAAmBx8J,KAAK28J,QACxB,eAAgB38J,KAAK48J,KACrB,oBAAqB58J,KAAK06I,SAC1B,qBAAsB16I,KAAKy8J,UAC3B,qBAAsBz8J,KAAK08J;gBAElB,IAAAvmF,GAAEn2E,KAAK+d;kBACL,IAAAo4D,GAAEn2E,KAAKgO;oBACL,IAAAmoE,GAAEn2E,KAAKy9J;eACZ,IAAAtnF,GAAEn2E,KAAKgO,OAAS,2BAAwB;;wBAE9BhO,KAAKw5C,SAAW,OAAS;mBAC9Bx5C,KAAKw5C,SAAW,KAAO;gBAC1Bx5C,KAAK+7J;iBACJ/7J,KAAK47J;iBACL57J,KAAKm9J;;UAEZI;;MAGN,OAAOD,EAASE,EAAO3B,IAG3BU,EAASjiD,QAAS,IAAA7+E,GA9JG,wgYA+JrB,QAAW,EACT,IAAAn8B,GAAG,YACFi9J,EAAS18J,UAAW,SAAU,IACjC,QAAW,EACT,IAAA+iC,MACC25H,EAAS18J,UAAW,WAAY,IACnC,QAAW,EACT,IAAA+iC,MACC25H,EAAS18J,UAAW,WAAY,IACnC,QAAW,EACT,IAAA+iC,MACC25H,EAAS18J,UAAW,YAAa,IACpC,QAAW,EACT,IAAA+iC,MACC25H,EAAS18J,UAAW,YAAa,IACpC,QAAW,EACT,IAAAvB,GAAE,CAACw2J,SAAS,KACXyH,EAAS18J,UAAW,OAAQ,IAC/B,QAAW,EACT,IAAAvB,GAAE,CAACw2J,SAAS,KACXyH,EAAS18J,UAAW,OAAQ,IAC/B,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1ByH,EAAS18J,UAAW,QAAS,IAChC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1ByH,EAAS18J,UAAW,WAAY,IACnC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1ByH,EAAS18J,UAAW,UAAW,IAClC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1ByH,EAAS18J,UAAW,OAAQ,IAC/B,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1ByH,EAAS18J,UAAW,SAAU,IACjC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1ByH,EAAS18J,UAAW,SAAU,IACjC,QAAW,EACT,IAAAvB,MACCi+J,EAAS18J,UAAW,OAAQ,IAC/B,QAAW,EACT,IAAAvB,MACCi+J,EAAS18J,UAAW,QAAS,IAChC,QAAW,EACT,IAAAvB,MACCi+J,EAAS18J,UAAW,OAAQ,IAC/B,QAAW,EACT,IAAAvB,MACCi+J,EAAS18J,UAAW,SAAU,IACjC,QAAW,EACT,IAAAvB,MACCi+J,EAAS18J,UAAW,WAAY,IACnC,QAAW,EACT,OAAM,YACL08J,EAAS18J,UAAW,SAAU,IACjC,QAAW,EACT,OAAM,aACL08J,EAAS18J,UAAW,UAAW,GAClC08J,GAAW,QAAW,EACpB,IAAA1+D,GAAE,cACD0+D,kIC1NCz/J,EAAK,EACL4gK,EAAa,cAAc,EAAAvnF,EAC7Bv1E,cACE8+C,SAASxjC,WACTlc,KAAKg7I,QAAU,eAAcl+I,EAC7BkD,KAAK+6I,QAAU,kBAAkBj+I,IACjCkD,KAAKw8J,UAAW,EAChBx8J,KAAKw5C,UAAW,EAChBx5C,KAAKwrH,UAAW,EAChBxrH,KAAK29J,SAAU,EACf39J,KAAK49J,eAAgB,EACrB59J,KAAK69J,SAAU,EAEjB7G,eACEh3J,KAAK+C,MAAM66J,cAAgB59J,KAAK49J,cAElCpzC,QACExqH,KAAK+C,MAAMynH,QAEbuyC,MAAMt/J,GACJuC,KAAK+C,MAAMg6J,MAAMt/J,GAEnBu/J,OACEh9J,KAAK+C,MAAMi6J,OAEbc,iBACE,OAAO99J,KAAK+C,MAAM+6J,iBAEpBC,kBAAkBt/J,GAChBuB,KAAK+C,MAAMg7J,kBAAkBt/J,GAC7BuB,KAAK69J,SAAW79J,KAAK+C,MAAMi7J,gBAE7Bb,cACEn9J,KAAK29J,SAAW39J,KAAK29J,QACrB39J,KAAK49J,eAAgB,EAEvB7B,aACE/7J,KAAKw8J,UAAW,EAChBx8J,KAAKi9J,OAAOzhB,OAEdogB,cACE57J,KAAKw8J,UAAW,EAChBx8J,KAAKk9J,QAAQ1hB,OAEfyiB,qBAAqBviB,GACnBA,EAAO0hB,iBACPp9J,KAAK+C,MAAMg6J,QAEbmB,oBACEl+J,KAAK+C,MAAM46J,QAAU39J,KAAK29J,QAC1B39J,KAAK+C,MAAM66J,cAAgB59J,KAAK49J,cAChC59J,KAAKm+J,SAAS3iB,OAEhBlrE,SACE,OAAO,EAAAniD,CAAC;;;iBAGI,IAAA7uB,GAAE,CACZ8+J,UAAU,EACV,oBAAqBp+J,KAAK29J,QAC1B,qBAAsB39J,KAAKw5C,SAC3B,oBAAqBx5C,KAAKw8J,SAC1B,0BAA2Bx8J,KAAK49J;cAExB59J,KAAKg7I;qBACEh7I,KAAKi+J;;;YAGdj+J,KAAK29J,QAAU,EAAAxvI,CAAC;;;;;;;;;;;;;gBAaV;aACLnuB,KAAK29J,SAAW39J,KAAK49J,cAAgB,EAAAzvI,CAAC;;;;;;;;;;;;gBAYjC;;;iBAGDnuB,KAAKg7I;;oBAEH,IAAA7kE,GAAEn2E,KAAKpD;qBACN,IAAAu5E,GAAEn2E,KAAK7D;uBACJ6D,KAAK29J;wBACJ39J,KAAKw5C;wBACLx5C,KAAKwrH;;2BAEFxrH,KAAK29J,QAAU,OAAS;8BACrB39J,KAAK+6I;qBACd/6I,KAAKm9J;oBACNn9J,KAAK+7J;qBACJ/7J,KAAK47J;;;;gCAIM57J,KAAK+6I;;;;QAOrC2iB,EAAWpjD,QAAS,IAAA7+E,GA3HG,g1FA4HvB,QAAW,EACT,IAAAn8B,GAAG,2BACFo+J,EAAW79J,UAAW,QAAS,IAClC,QAAW,EACT,IAAA+iC,MACC86H,EAAW79J,UAAW,WAAY,IACrC,QAAW,EACT,IAAAvB,MACCo/J,EAAW79J,UAAW,OAAQ,IACjC,QAAW,EACT,IAAAvB,MACCo/J,EAAW79J,UAAW,QAAS,IAClC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1B4I,EAAW79J,UAAW,WAAY,IACrC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1B4I,EAAW79J,UAAW,WAAY,IACrC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1B4I,EAAW79J,UAAW,UAAW,IACpC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1B4I,EAAW79J,UAAW,gBAAiB,IAC1C,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1B4I,EAAW79J,UAAW,UAAW,IACpC,QAAW,EACT,OAAM,YACL69J,EAAW79J,UAAW,SAAU,IACnC,QAAW,EACT,OAAM,cACL69J,EAAW79J,UAAW,WAAY,IACrC,QAAW,EACT,OAAM,aACL69J,EAAW79J,UAAW,UAAW,IACpC,QAAW,EACT,OAAM,YACN,OAAM,kBACL69J,EAAW79J,UAAW,oBAAqB,GAC9C69J,GAAa,QAAW,EACtB,IAAA7/D,GAAE,gBACD6/D,8DC/LCW,EAAe,GAkCnB,SAASC,EAAoBC,GAC3B,WAAaA,GACM,IAAf,UACFt5J,SAASyR,KAAKqpH,UAAUvrH,OAAO,8GCA/BgqJ,EDKJ,WACE,IAAIC,GAAY,EAOhB,OANAx5J,SAASkS,cAAc,OAAO4lJ,MAAM,CAC9B2B,oBAEF,OADAD,GAAY,GACL,KAGJA,ECbcE,GACnB7hK,EAAK,EACL8hK,EAAW,cAAc,EAAAzoF,EAC3Bv1E,cACE8+C,SAASxjC,WACTlc,KAAK6+J,YAAc,aAAY/hK,EAC/BkD,KAAK8+J,UAAW,EAChB9+J,KAAK++J,UAAW,EAChB/+J,KAAKg/J,WAAY,EACjBh/J,KAAKuvJ,WAAY,EACjBvvJ,KAAKya,MAAO,EACZza,KAAKg5C,MAAQ,GACbh5C,KAAKi/J,UAAW,EAElB3I,oBACE52G,MAAM42G,oBACNt2J,KAAKk/J,MAAQ,IDpDL,MACVt+J,YAAY4zB,EAAS/2B,GACnBuC,KAAKw0B,QAAUA,EACfx0B,KAAKvC,QAAUA,EACfuC,KAAKm/J,cAAgBn/J,KAAKm/J,cAAcloJ,KAAKjX,MAE/Co/J,WACEf,EAAaj6J,KAAKpE,KAAKw0B,SACvBvvB,SAASgT,iBAAiB,UAAWjY,KAAKm/J,eAE5CE,aACEhB,EAAeA,EAAat1J,QAAQm2J,GAAUA,IAAUl/J,KAAKw0B,UAC7DvvB,SAASosB,oBAAoB,UAAWrxB,KAAKm/J,eAE/CG,WACE,OAAOjB,EAAaA,EAAa7/J,OAAS,KAAOwB,KAAKw0B,QAExD2qI,cAAcjiK,GACZ,IAAI4tI,EAAIioB,EACR,MAAM/kJ,EAAS9Q,EAAM8Q,OACfgvB,EAAUh9B,KAAKw0B,QAAQwI,QAAQC,cACjCj9B,KAAKs/J,YAActxJ,EAAOuxJ,QAAQviI,KAAah9B,KAAKw0B,SAA6E,mBAAnC,OAAtBs2G,EAAK9qI,KAAKvC,cAAmB,EAASqtI,EAAG00B,cAC5F,OAAtBzM,EAAK/yJ,KAAKvC,UAA4Bs1J,EAAGyM,WAAWtiK,MC8BxB8C,KAAM,CACnCw/J,WAAY,IAAMx/J,KAAKy/J,MAAM1C,UAE/B/8J,KAAKk8J,mBACDl8J,KAAKya,MACPza,KAAKwuC,OAGTgoH,uBACE92G,MAAM82G,uBACN8H,EAAoBt+J,MAEtBwuC,OACMxuC,KAAK8+J,WAGM9+J,KAAK66J,OAAOrf,OAChBsf,iBACT96J,KAAKya,MAAO,GAGdza,KAAK8+J,UAAW,EAChB9+J,KAAKuvJ,WAAY,EACjBvvJ,KAAKya,MAAO,EACZza,KAAKk/J,MAAME,WACOp/J,KD/CpB,QC+CoBA,MD9CpBiF,SAASyR,KAAKqpH,UAAU57H,IAAI,kBC+CtBnE,KAAKya,OACH+jJ,EACFh/I,uBAAsB,KACGxf,KAAK0/J,eAAelkB,OACvBsf,kBAClB96J,KAAKy/J,MAAM1C,MAAM,CAAC2B,eAAe,OAIrC1+J,KAAK2/J,OAAO1nJ,iBAAiB,iBAAiB,KACrBjY,KAAK0/J,eAAelkB,OACvBsf,kBAClB96J,KAAKy/J,MAAM1C,UAEZ,CAAC5rI,MAAM,OAIhBwd,OACM3uC,KAAK++J,WAGM/+J,KAAKg7J,OAAOxf,OAChBsf,iBACT96J,KAAKya,MAAO,GAGdza,KAAK++J,UAAW,EAChB/+J,KAAKya,MAAO,EACZza,KAAKk/J,MAAMG,aACXf,EAAoBt+J,QAEtBm7J,mBACEn7J,KAAK2uC,OAEPixH,cAAclkB,GACO,WAAfA,EAAO73I,KACT7D,KAAK2uC,OAGT6sH,mBACEx7J,KAAKya,KAAOza,KAAKwuC,OAASxuC,KAAK2uC,OAEjCkxH,qBAC2B7/J,KAAK8/J,iBAAiBtkB,OACzBsf,kBACpB96J,KAAK2uC,OAGTutH,mBACEl8J,KAAKg/J,WAAY,OAAQh/J,KAAM,UAEjCivJ,oBAAoBvT,GAClB,MAAM1tI,EAAS0tI,EAAO1tI,OACM,YAAxB0tI,EAAO2f,cAA8BrtJ,EAAO+xH,UAAU/qE,SAAS,mBACjEh1D,KAAKuvJ,UAAYvvJ,KAAKya,KACtBza,KAAK8+J,UAAW,EAChB9+J,KAAK++J,UAAW,EAChB/+J,KAAKya,KAAOza,KAAKs7J,YAAY9f,OAASx7I,KAAKu7J,YAAY/f,QAG3DlrE,SACE,OAAO,EAAAniD,CAAC;;;iBAGI,IAAA7uB,GAAE,CACZqgK,QAAQ,EACR,eAAgB3/J,KAAKya,KACrB,kBAAmBza,KAAKuvJ,UACxB,qBAAsBvvJ,KAAKg/J;mBAEdh/J,KAAK4/J;yBACC5/J,KAAKivJ;;6DAE+BjvJ,KAAK6/J;;;;;;;wBAO1C7/J,KAAKya,KAAO,QAAU;wBACvB,IAAA07D,GAAEn2E,KAAKi/J,SAAWj/J,KAAKg5C,WAAQ;6BAC1B,IAAAm9B,GAAGn2E,KAAKi/J,cAAyC,EAA9B,GAAGj/J,KAAK6+J;;;YAG1C7+J,KAAKi/J,SAYA,GAZW,EAAA9wI,CAAC;;gEAEkC,GAAGnuB,KAAK6+J;0CAC9B7+J,KAAKg5C,OAAS9zC,OAAOkgI,aAAa;;;;;;8BAM9CplI,KAAKm7J;;;;;;;;;;8CAUWn7J,KAAKk8J;;;;QAOnD0C,EAAStkD,QAAS,IAAA7+E,GA7JG,mzFA8JrB,QAAW,EACT,IAAAn8B,GAAG,YACFs/J,EAAS/+J,UAAW,SAAU,IACjC,QAAW,EACT,IAAAP,GAAG,mBACFs/J,EAAS/+J,UAAW,QAAS,IAChC,QAAW,EACT,IAAA+iC,MACCg8H,EAAS/+J,UAAW,YAAa,IACpC,QAAW,EACT,IAAA+iC,MACCg8H,EAAS/+J,UAAW,YAAa,IACpC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1B8J,EAAS/+J,UAAW,OAAQ,IAC/B,QAAW,EACT,IAAAvB,GAAE,CAACw2J,SAAS,KACX8J,EAAS/+J,UAAW,QAAS,IAChC,QAAW,EACT,IAAAvB,GAAE,CAACgrJ,UAAW,YAAajrJ,KAAM+iC,QAAS0zH,SAAS,KAClD8J,EAAS/+J,UAAW,WAAY,IACnC,QAAW,EACT,OAAM,YACL++J,EAAS/+J,UAAW,SAAU,IACjC,QAAW,EACT,OAAM,kBACL++J,EAAS/+J,UAAW,cAAe,IACtC,QAAW,EACT,OAAM,YACL++J,EAAS/+J,UAAW,SAAU,IACjC,QAAW,EACT,OAAM,kBACL++J,EAAS/+J,UAAW,cAAe,IACtC,QAAW,EACT,OAAM,qBACL++J,EAAS/+J,UAAW,iBAAkB,IACzC,QAAW,EACT,OAAM,uBACL++J,EAAS/+J,UAAW,mBAAoB,IAC3C,QAAW,EACT,OAAM,SACL++J,EAAS/+J,UAAW,mBAAoB,GAC3C++J,GAAW,QAAW,EACpB,IAAA/gE,GAAE,cACD+gE,2HChNH,SAASmB,EAAW/mI,GAElB,OADiBA,EAAGgnI,UACD,EAErB,SAASC,EAA0BjnI,GACjC,GAAI+mI,EAAW/mI,GACb,OAAOA,EAET,GAAIA,EAAG4hF,WAAY,CACjB,MAAMslD,EAAsB,IAAIlnI,EAAG4hF,WAAW6sB,UAAUmkB,KAAKmU,GAC7D,GAAIG,EACF,OAAOA,EAGX,OAAIlnI,EAAGyuG,SACE,IAAIzuG,EAAGyuG,UAAUv+H,IAAI+2J,GAA2B,GAElD,KAIT,IAAInjK,EAAK,EACLqjK,EAAa,cAAc,EAAAhqF,EAC7Bv1E,cACE8+C,SAASxjC,WACTlc,KAAK6+J,YAAc,eAAc/hK,EACjCkD,KAAKuvJ,WAAY,EACjBvvJ,KAAKya,MAAO,EACZza,KAAKw6I,UAAY,eACjBx6I,KAAKogK,eAAgB,EACrBpgK,KAAKquD,SAAW,EAChBruD,KAAKypJ,SAAW,EAChBzpJ,KAAKqgK,OAAQ,EAEf/J,oBACE52G,MAAM42G,oBACNt2J,KAAKsgK,uBAAyBtgK,KAAKsgK,uBAAuBrpJ,KAAKjX,MAC/DA,KAAKugK,kBAAoBvgK,KAAKugK,kBAAkBtpJ,KAAKjX,MACrDA,KAAKwgK,sBAAwBxgK,KAAKwgK,sBAAsBvpJ,KAAKjX,MAC7DA,KAAKygK,wBAA0BzgK,KAAKygK,wBAAwBxpJ,KAAKjX,MAC5DA,KAAK0gK,oBACR1gK,KAAK0gK,kBAAoB1gK,MAG7Bg3J,eACEh3J,KAAKgvJ,QAAU,IAAI,IAAgBhvJ,KAAKo1D,QAASp1D,KAAKomH,WAAY,CAChEivB,SAAUr1I,KAAKqgK,MAAQ,QAAU,WACjC7lB,UAAWx6I,KAAKw6I,UAChBnsF,SAAUruD,KAAKquD,SACfo7F,SAAUzpJ,KAAKypJ,SACfyF,kBAAmBlvJ,KAAKy/J,MACxBpQ,YAAa,IAAMrvJ,KAAKu7J,YAAY/f,OACpC4T,YAAa,IAAMpvJ,KAAKs7J,YAAY9f,OACpC8T,gBAAiB,KACVtvJ,KAAKya,OACRza,KAAKy/J,MAAM9iB,UAAY,MAIzB38I,KAAKya,MACPza,KAAKwuC,OAGTgoH,uBACE92G,MAAM82G,uBACNx2J,KAAK2uC,OACL3uC,KAAKgvJ,QAAQ17E,UAEfqtF,iBACE,MACMvrG,EADOp1D,KAAKo1D,QAAQn8B,cAAc,QACnBojI,iBAAiB,CAACvC,SAAS,IAAO,GACnD1kG,GAAoC,mBAAlBA,EAAQ2nG,OAC5B3nG,EAAQ2nG,QAGZ6D,UAEE,OADa5gK,KAAKy/J,MAAMxmI,cAAc,QAC1BojI,iBAAiB,CAACvC,SAAS,IAAO/wJ,QAAQiwB,GAAoC,YAA7BA,EAAGgE,QAAQC,gBAA6B,GAEvGujI,sBAAsB9kB,GACpB,IAAI5Q,EACJ,GAAmB,WAAf4Q,EAAO73I,IAGT,OAFA7D,KAAK2uC,YACL3uC,KAAK2gK,iBAGP,GAAmB,QAAfjlB,EAAO73I,IAAe,CACxB,GAAI7D,KAAKya,MAAwF,kBAA9C,OAAhCqwH,EAAK7lI,SAAS47J,oBAAyB,EAAS/1B,EAAG9tG,QAAQC,eAI5E,OAHAy+G,EAAO0hB,iBACPp9J,KAAK2uC,YACL3uC,KAAK2gK,iBAGP3rJ,YAAW,KACT,IAAIs/I,EAAKvB,EACT,MAAM8N,EAAgB7gK,KAAK0gK,kBAAkBhgB,wBAAyB1D,WAAwF,OAA1E+V,EAAuC,OAAjCuB,EAAMrvJ,SAAS47J,oBAAyB,EAASvM,EAAI15C,iBAAsB,EAASm4C,EAAG8N,cAAgB57J,SAAS47J,eACpL,MAAjBA,OAAwB,EAASA,EAActB,QAAQv/J,KAAK0gK,kBAAkB1jI,QAAQC,kBAAoBj9B,KAAK0gK,mBAClH1gK,KAAK2uC,WAMb8xH,wBAAwB/kB,GACTA,EAAOolB,eACVn8J,SAAS3E,KAAK0gK,oBACtB1gK,KAAK2uC,OAIT2xH,uBAAuB5kB,ICtIzB,SAAwBlnH,EAASyhC,EAAWmnD,EAAY,WAAY2jD,EAAW,UAC7E,MAAMz+G,EATR,SAAmB9tB,EAAS2lB,GAC1B,MAAO,CACLf,IAAKnsC,KAAKgsD,MAAMzkC,EAAQsmF,wBAAwB1hE,IAAMe,EAAO2gE,wBAAwB1hE,KACrFG,KAAMtsC,KAAKgsD,MAAMzkC,EAAQsmF,wBAAwBvhE,KAAOY,EAAO2gE,wBAAwBvhE,OAM1EynH,CAAUxsI,EAASyhC,GAC5BkoF,EAAY77F,EAAOlJ,IAAM6c,EAAU0mF,UACnCl7E,EAAanf,EAAO/I,KAAO0c,EAAUwmF,WACrCh3F,EAAOwQ,EAAUwmF,WACjBn3F,EAAO2Q,EAAUwmF,WAAaxmF,EAAUmoF,YACxCz4F,EAAOsQ,EAAU0mF,UACjBp3F,EAAO0Q,EAAU0mF,UAAY1mF,EAAUooF,aAC3B,eAAdjhC,GAA4C,SAAdA,IAC5B37C,EAAahc,EACfwQ,EAAUgrG,SAAS,CAAC1nH,KAAMkoB,EAAYs/F,SAAAA,IAC7Bt/F,EAAajtC,EAAQ0hC,YAAc5Q,GAC5C2Q,EAAUgrG,SAAS,CAAC1nH,KAAMkoB,EAAaxL,EAAUmoF,YAAc5pH,EAAQ0hC,YAAa6qG,SAAAA,KAGtE,aAAd3jD,GAA0C,SAAdA,IAC1B+gC,EAAYx4F,EACdsQ,EAAUgrG,SAAS,CAAC7nH,IAAK+kG,EAAW4iB,SAAAA,IAC3B5iB,EAAY3pH,EAAQinF,aAAel2D,GAC5C0Q,EAAUgrG,SAAS,CAAC7nH,IAAK+kG,EAAYloF,EAAUooF,aAAe7pH,EAAQinF,aAAcslD,SAAAA,KDqHtFG,CADaxlB,EAAO1tI,OACChO,KAAKy/J,OAE5Bc,kBAAkB7kB,GAChB,MAAM1tI,EAAS0tI,EAAO1tI,OAClBhO,KAAKogK,eAAkD,YAAjCpyJ,EAAOgvB,QAAQC,gBACvCj9B,KAAK2uC,OACL3uC,KAAK2gK,kBAGTQ,6BACMnhK,KAAKgvJ,SACPhvJ,KAAKgvJ,QAAQ1J,WAAW,CACtBjQ,SAAUr1I,KAAKqgK,MAAQ,QAAU,WACjC7lB,UAAWx6I,KAAKw6I,UAChBnsF,SAAUruD,KAAKquD,SACfo7F,SAAUzpJ,KAAKypJ,WAIrB2X,qBACEphK,KAAKya,KAAOza,KAAK2uC,OAAS3uC,KAAKwuC,OAEjC6yH,qBAAqB3lB,GACnB,MAAM4lB,EAAOthK,KAAK4gK,UACZW,EAAYD,EAAO,IAAIA,EAAKE,iBAAiB,iBAAmB,GAChEC,EAAgBF,EAAU,GAC1BG,EAAeH,EAAUA,EAAU/iK,OAAS,GAClD,GAAmB,WAAfk9I,EAAO73I,IAGT,OAFA7D,KAAK2gK,sBACL3gK,KAAK2uC,OAGP,GAAI,CAAC,IAAK,SAAShqC,SAAS+2I,EAAO73I,KAGjC,OAFA63I,EAAO0hB,sBACPp9J,KAAKya,KAAOza,KAAK2uC,OAAS3uC,KAAKwuC,QAGjC,GAAI,CAAC,YAAa,WAAW7pC,SAAS+2I,EAAO73I,KAAM,CAKjD,GAJA63I,EAAO0hB,iBACFp9J,KAAKya,MACRza,KAAKwuC,OAEY,cAAfktG,EAAO73I,KAAuB49J,EAEhC,YADAA,EAAc1E,QAGhB,GAAmB,YAAfrhB,EAAO73I,KAAqB69J,EAE9B,YADAA,EAAa3E,QAKb/8J,KAAKya,MAAQ6mJ,IADG,CAAC,MAAO,QAAS,OAAQ,OAAQ,OACf38J,SAAS+2I,EAAO73I,MACpDy9J,EAAKK,aAAajmB,EAAO73I,KAI7B+9J,mBAAmBlmB,GACE,MAAfA,EAAO73I,KACT63I,EAAO0hB,iBAGXyE,0BACE7hK,KAAK8hK,0BAEPA,0BACE,GAAI9hK,KAAKo1D,QAAS,CAChB,MAEM2sG,EAFO/hK,KAAKo1D,QAAQn8B,cAAc,QACVojI,iBAAiB,CAACvC,SAAS,IACd5wJ,IAAI+2J,GAA2B,GACtE8B,IACFA,EAAkB1qG,aAAa,gBAAiB,QAChD0qG,EAAkB1qG,aAAa,gBAAiBr3D,KAAKya,KAAO,OAAS,WAI3E+zB,OACMxuC,KAAKuvJ,YAGMvvJ,KAAK66J,OAAOrf,OAChBsf,iBACT96J,KAAKya,MAAO,GAGdza,KAAKy/J,MAAMxnJ,iBAAiB,cAAejY,KAAKsgK,wBAChDtgK,KAAKy/J,MAAMxnJ,iBAAiB,YAAajY,KAAKugK,mBAC9Ct7J,SAASgT,iBAAiB,UAAWjY,KAAKwgK,uBAC1Cv7J,SAASgT,iBAAiB,YAAajY,KAAKygK,yBAC5CzgK,KAAKuvJ,WAAY,EACjBvvJ,KAAKya,MAAO,EACZza,KAAKgvJ,QAAQxgH,SAEfG,OACO3uC,KAAKuvJ,YAGKvvJ,KAAKg7J,OAAOxf,OAChBsf,iBACT96J,KAAKya,MAAO,GAGdza,KAAKy/J,MAAMpuI,oBAAoB,cAAerxB,KAAKsgK,wBACnDtgK,KAAKy/J,MAAMpuI,oBAAoB,YAAarxB,KAAKugK,mBACjDt7J,SAASgT,iBAAiB,UAAWjY,KAAKwgK,uBAC1Cv7J,SAASosB,oBAAoB,YAAarxB,KAAKygK,yBAC/CzgK,KAAKuvJ,WAAY,EACjBvvJ,KAAKya,MAAO,EACZza,KAAKgvJ,QAAQrgH,SAEf6gH,aACOxvJ,KAAKya,MAGVza,KAAKgvJ,QAAQQ,aAEfgM,mBACEx7J,KAAKya,KAAOza,KAAKwuC,OAASxuC,KAAK2uC,OAC/B3uC,KAAK8hK,0BAEPxxF,SACE,OAAO,EAAAniD,CAAC;;;aAGCnuB,KAAK6+J;iBACF,IAAAv/J,GAAE,CACZ0iK,UAAU,EACV,iBAAkBhiK,KAAKya;;;;;mBAMVza,KAAKohK;qBACHphK,KAAKqhK;mBACPrhK,KAAK4hK;;6CAEqB5hK,KAAK6hK;;;;;;;;;;0BAUxB7hK,KAAKya,KAAO,QAAU;8BAClBza,KAAK6+J;;;;;;QASnCsB,EAAW7lD,QAAS,IAAA7+E,GAhRG,o8CAiRvB,QAAW,EACT,IAAAn8B,GAAG,uBACF6gK,EAAWtgK,UAAW,UAAW,IACpC,QAAW,EACT,IAAAP,GAAG,qBACF6gK,EAAWtgK,UAAW,QAAS,IAClC,QAAW,EACT,IAAAP,GAAG,0BACF6gK,EAAWtgK,UAAW,aAAc,IACvC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BqL,EAAWtgK,UAAW,OAAQ,IACjC,QAAW,EACT,IAAAvB,MACC6hK,EAAWtgK,UAAW,YAAa,IACtC,QAAW,EACT,IAAAvB,GAAE,CAACgrJ,UAAW,kBAAmBjrJ,KAAM+iC,QAAS0zH,SAAS,KACxDqL,EAAWtgK,UAAW,gBAAiB,IAC1C,QAAW,EACT,IAAAvB,GAAE,CAACgrJ,WAAW,KACb6W,EAAWtgK,UAAW,oBAAqB,IAC9C,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM6L,UACRi2J,EAAWtgK,UAAW,WAAY,IACrC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM6L,UACRi2J,EAAWtgK,UAAW,WAAY,IACrC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,WACR++H,EAAWtgK,UAAW,QAAS,IAClC,QAAW,EACT,OAAM,YACLsgK,EAAWtgK,UAAW,SAAU,IACnC,QAAW,EACT,OAAM,kBACLsgK,EAAWtgK,UAAW,cAAe,IACxC,QAAW,EACT,OAAM,YACLsgK,EAAWtgK,UAAW,SAAU,IACnC,QAAW,EACT,OAAM,kBACLsgK,EAAWtgK,UAAW,cAAe,IACxC,QAAW,EACT,OAAM,aACN,OAAM,UACN,OAAM,cACN,OAAM,aACLsgK,EAAWtgK,UAAW,6BAA8B,IACvD,QAAW,EACT,OAAM,SACLsgK,EAAWtgK,UAAW,mBAAoB,GAC7CsgK,GAAa,QAAW,EACtB,IAAAtiE,GAAE,gBACDsiE,wDEnWH,IAAI31H,EAAY,IAAI28C,QAuBhB86E,EAtBJ,SAAiBjpI,GACf,MAAM7sB,EAAO,CAAC,MAAO,UAAW,YAAa,YAAa,aAAc,OAAQ,MAAO,WAAY,UAC7FvH,EAAM1H,IACNiP,EAAKxH,SAASzH,EAAM2G,MACtBm1B,EAAG+mG,UAAU57H,IAAI,kBAGf+9J,EAAQ,IAAMlpI,EAAG+mG,UAAUvrH,OAAO,iBACxCg2B,EAAUgB,IAAIxS,EAAI,CAACp0B,GAAAA,EAAIs9J,MAAAA,IACvBlpI,EAAG/gB,iBAAiB,UAAWrT,GAC/Bo0B,EAAG/gB,iBAAiB,QAASrT,GAC7Bo0B,EAAG/gB,iBAAiB,YAAaiqJ,GACjClpI,EAAG/gB,iBAAiB,YAAaiqJ,IAU/BD,EARJ,SAAmBjpI,GACjB,MAAM,GAACp0B,EAAE,MAAEs9J,GAAS13H,EAAUtwB,IAAI8e,GAClCA,EAAG+mG,UAAUvrH,OAAO,iBACpBwkB,EAAG3H,oBAAoB,UAAWzsB,GAClCo0B,EAAG3H,oBAAoB,QAASzsB,GAChCo0B,EAAG3H,oBAAoB,YAAa6wI,GACpClpI,EAAG3H,oBAAoB,YAAa6wI,sDCKlCC,EAAe,cAAc,EAAAhsF,EAC/Bv1E,cACE8+C,SAASxjC,WACTlc,KAAKg5C,MAAQ,GACbh5C,KAAKw5C,UAAW,EAElBw9G,eACEiL,EAAqBjiK,KAAK67J,QAE5BrF,uBACE92G,MAAM82G,uBACNyL,EAAuBjiK,KAAK67J,QAE9BvrF,SACE,OAAO,EAAAniD,CAAC;;;iBAGI,IAAA7uB,GAAE,CACZ,eAAe,EACf,wBAAyBU,KAAKw5C;oBAEhBx5C,KAAKw5C;;qBAEJx5C,KAAKg5C;;;kBAGT,IAAAm9B,GAAEn2E,KAAKpD;qBACJ,IAAAu5E,GAAEn2E,KAAKoiK;iBACX,IAAAjsF,GAAEn2E,KAAKue;;;;QAOvB4jJ,EAAa7nD,QAAS,IAAA7+E,GAtCI,s/BAuC1B,QAAW,EACT,IAAAn8B,GAAG,WACF6iK,EAAatiK,UAAW,SAAU,IACrC,QAAW,EACT,IAAAvB,MACC6jK,EAAatiK,UAAW,OAAQ,IACnC,QAAW,EACT,IAAAvB,MACC6jK,EAAatiK,UAAW,UAAW,IACtC,QAAW,EACT,IAAAvB,MACC6jK,EAAatiK,UAAW,MAAO,IAClC,QAAW,EACT,IAAAvB,MACC6jK,EAAatiK,UAAW,QAAS,IACpC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BqN,EAAatiK,UAAW,WAAY,GACvCsiK,GAAe,QAAW,EACxB,IAAAtkE,GAAE,mBACDskE,wEC3DCtkE,EAAI,cAAc,EAAAv/F,EACpBsC,YAAYtB,GACV,GAAIogD,MAAMpgD,GAAIU,KAAK7D,MAAQ,EAAAo4C,EAAGj1C,EAAEjB,OAAS,EAAA86C,EAAA,MACvC,MAAMt4C,MAAMb,KAAKY,YAAYyhK,cAAgB,yCAEjD/xF,OAAO1tC,GACL,GAAIA,IAAM,EAAA2R,EACR,OAAOv0C,KAAKsiK,oBAAiB,EAAQtiK,KAAK7D,MAAQymC,EACpD,GAAIA,IAAM,EAAA79B,EACR,OAAO69B,EACT,GAAgB,iBAALA,EACT,MAAM/hC,MAAMb,KAAKY,YAAYyhK,cAAgB,qCAC/C,GAAIz/H,IAAM5iC,KAAK7D,MACb,OAAO6D,KAAKsiK,eACdtiK,KAAK7D,MAAQymC,EACb,MAAMs3G,EAAK,CAACt3G,GACZ,OAAOs3G,EAAG7/F,IAAM6/F,EAAIl6I,KAAKsiK,eAAiB,CAACjR,WAAYrxJ,KAAKY,YAAY2hK,WAAYtoB,QAASC,EAAI97I,OAAQ,MAG7Gy/F,EAAEwkE,cAAgB,aAAcxkE,EAAE0kE,WAAa,GACvC,IAAA9mI,GAAEoiE,GAAV,cCvCI51E,EAAW,CACb,CACErrB,KAAM,UACNywE,SAAWzwE,GAAS,IAAG,yBAA8BA,UAGrD4lK,EAAe,GAOnB,SAASC,EAAe7lK,GACtB,OAAOqrB,EAASlf,QAAQ25J,GAAQA,EAAI9lK,OAASA,IAAM,GClBrD,IAAI+lK,EAAY,IAAI34H,0CC+ChBmP,EAAI,cAAc0kD,IAEtB1kD,EAAEkpH,cAAgB,YAAalpH,EAAEopH,WAAa,EAC9C,IAAI7S,GAAK,IAAAj0H,GAAE0d,GAMPrT,EAAS,IAAI88H,UACbC,EAAS,cAAc,EAAA1sF,EACzBv1E,cACE8+C,SAASxjC,WACTlc,KAAK8iK,IAAM,GACX9iK,KAAKoiK,QAAU,UAEjB9L,oBACE52G,MAAM42G,oBFpDRkM,EAAap+J,KEqDDpE,MAEZg3J,eACEh3J,KAAK+iK,UAEPvM,uBFxDF,IAAqB96J,EEyDjBgkD,MAAM82G,uBFzDW96J,EE0DLsE,KFzDdwiK,EAAeA,EAAaz5J,QAAQiwB,GAAOA,IAAOt9B,IE2DlDsnK,WACE,IAAIhqH,EAAQ,GAQZ,OAPIh5C,KAAKg5C,MACPA,EAAQh5C,KAAKg5C,MACJh5C,KAAKpD,KACdo8C,EAAQh5C,KAAKpD,KAAK0I,QAAQ,KAAM,KACvBtF,KAAKue,MACdy6B,EAAQh5C,KAAKue,IAAIjZ,QAAQ,OAAQ,IAAIA,QAAQ,KAAM,KAAKA,QAAQ,SAAU,KAErE0zC,EAETiqH,SACE,MAAMb,EAAUK,EAAeziK,KAAKoiK,SACpC,OAAIpiK,KAAKpD,MAAQwlK,EACRA,EAAQ/0F,SAASrtE,KAAKpD,MAEtBoD,KAAKue,IAGhB2kJ,SACEljK,KAAK+iK,UAEPzkJ,gBACE,MAAM8jJ,EAAUK,EAAeziK,KAAKoiK,SAC9BrjK,EAAMiB,KAAKijK,SACjB,GAAIlkK,EACF,IACE,MAAMokK,ODpGI,CAACpkK,IACjB,GAAI4jK,EAAUz+J,IAAInF,GAChB,OAAO4jK,EAAUzoJ,IAAInb,GAChB,CACL,MAAMkN,EAAU+K,MAAMjY,GAAKkI,MAAKqX,MAAO9E,IACrC,GAAIA,EAASg1F,GAAI,CACf,MAAM40D,EAAMn+J,SAASkS,cAAc,OACnCisJ,EAAI1Q,gBAAkBl5I,EAASsB,OAC/B,MAAMgoJ,EAAMM,EAAIC,kBAChB,MAAO,CACL70D,GAAIh1F,EAASg1F,GACbxkG,OAAQwP,EAASxP,OACjB84J,IAAKA,GAAqC,QAA9BA,EAAI9lI,QAAQC,cAA0B6lI,EAAIQ,UAAY,IAGpE,MAAO,CACL90D,GAAIh1F,EAASg1F,GACbxkG,OAAQwP,EAASxP,OACjB84J,IAAK,SAKX,OADAH,EAAUn3H,IAAIzsC,EAAKkN,GACZA,IC6EgBs3J,CAAYxkK,GAC/B,GAAIA,IAAQiB,KAAKijK,SACf,OACK,GAAIE,EAAK30D,GAAI,CAClB,MACMg1D,EADM19H,EAAO29H,gBAAgBN,EAAKL,IAAK,aAC3BpsJ,KAAKuiB,cAAc,OACjCuqI,GACEpB,GAAWA,EAAQsB,SACrBtB,EAAQsB,QAAQF,GAElBxjK,KAAK8iK,IAAMU,EAAMF,UACjBtjK,KAAK2jK,OAAOnoB,SAEZx7I,KAAK8iK,IAAM,GACX9iK,KAAK4jK,QAAQpoB,KAAK,CAACh6H,OAAQ,CAACxX,OAAQm5J,EAAKn5J,gBAG3ChK,KAAK8iK,IAAM,GACX9iK,KAAK4jK,QAAQpoB,KAAK,CAACh6H,OAAQ,CAACxX,OAAQm5J,EAAKn5J,UAE3C,MAAOowI,GACPp6I,KAAK4jK,QAAQpoB,KAAK,CAACh6H,OAAQ,CAACxX,QAAS,UAE9BhK,KAAK8iK,MACd9iK,KAAK8iK,IAAM,IAGfe,eACE7jK,KAAK+iK,UAEPzyF,SACE,OAAO,EAAAniD,CAAC,wDAAwDnuB,KAAKgjK,cAActT,EAAG1vJ,KAAK8iK,eAG/FD,EAAOvoD,QAAS,IAAA7+E,GAlFG,gVAmFnB,QAAW,EACT,IAAAmH,MACCigI,EAAOhjK,UAAW,MAAO,IAC5B,QAAW,EACT,IAAAvB,MACCukK,EAAOhjK,UAAW,OAAQ,IAC7B,QAAW,EACT,IAAAvB,MACCukK,EAAOhjK,UAAW,MAAO,IAC5B,QAAW,EACT,IAAAvB,MACCukK,EAAOhjK,UAAW,QAAS,IAC9B,QAAW,EACT,IAAAvB,MACCukK,EAAOhjK,UAAW,UAAW,IAChC,QAAW,EACT,OAAM,YACLgjK,EAAOhjK,UAAW,SAAU,IAC/B,QAAW,EACT,OAAM,aACLgjK,EAAOhjK,UAAW,UAAW,IAChC,QAAW,EACT,OAAM,SACN,OAAM,QACN,OAAM,YACLgjK,EAAOhjK,UAAW,UAAW,GAChCgjK,GAAS,QAAW,EAClB,IAAAhlE,GAAG,YACFglE,wGC1ICiB,EAAa,cAAc,EAAA3tF,EAC7Bv1E,cACE8+C,SAASxjC,WACTlc,KAAKw8J,UAAW,EAChBx8J,KAAK29J,SAAU,EACf39J,KAAK7D,MAAQ,GACb6D,KAAKw5C,UAAW,EAElBujH,MAAMt/J,GACJuC,KAAK+jK,SAAShH,MAAMt/J,GAEtBu/J,OACEh9J,KAAK+jK,SAAS/G,OAEhBjB,aACE/7J,KAAKw8J,UAAW,EAElBZ,cACE57J,KAAKw8J,UAAW,EAElBwH,mBACEhkK,KAAK+8J,QAEPkH,mBACEjkK,KAAKg9J,OAEP1sF,SACE,OAAO,EAAAniD,CAAC;;;iBAGI,IAAA7uB,GAAE,CACZ,aAAa,EACb,qBAAsBU,KAAK29J,QAC3B,sBAAuB39J,KAAKw5C,SAC5B,qBAAsBx5C,KAAKw8J;;wBAGTx8J,KAAKw5C,SAAW,OAAS;uBAC1Bx5C,KAAK29J,QAAU,OAAS;oBAC5B,IAAAxnF,GAAGn2E,KAAKw5C,cAAiB,EAAN;iBACrBx5C,KAAK47J;gBACN57J,KAAK+7J;sBACC/7J,KAAKgkK;sBACLhkK,KAAKikK;;;;;;;;;;;;;;;;;;QAqB3BH,EAAWxpD,QAAS,IAAA7+E,GAnEI,mpDAoExB,QAAW,EACT,IAAAn8B,GAAG,eACFwkK,EAAWjkK,UAAW,WAAY,IACrC,QAAW,EACT,IAAA+iC,MACCkhI,EAAWjkK,UAAW,WAAY,IACrC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BgP,EAAWjkK,UAAW,UAAW,IACpC,QAAW,EACT,IAAAvB,MACCwlK,EAAWjkK,UAAW,QAAS,IAClC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BgP,EAAWjkK,UAAW,WAAY,GACrCikK,GAAa,QAAW,EACtB,IAAAjmE,GAAE,iBACDimE,8DCjGCI,EAAc,cAAc,EAAA/tF,EAC9B7F,SACE,OAAO,EAAAniD,CAAC;;;;QAOZ+1I,EAAY5pD,QAAS,IAAA7+E,GAZI,ohBAazByoI,GAAc,QAAW,EACvB,IAAArmE,GAAE,kBACDqmE,kFCHCC,EAAS,cAAc,EAAAhuF,EACzBv1E,cACE8+C,SAASxjC,WACTlc,KAAKokK,mBAAqB,GAE5BzC,aAAa99J,GACXoR,aAAajV,KAAKqkK,qBAClBrkK,KAAKqkK,oBAAsBrvJ,YAAW,IAAMhV,KAAKokK,mBAAqB,IAAI,KAC1EpkK,KAAKokK,oBAAsBvgK,EAAIo5B,cAC/B,MAAMvuB,EAAQ1O,KAAKskK,WACnB,IAAK,MAAMx1J,KAAQJ,EAAO,CACxB,MAAMirJ,EAAO7qJ,EAAK8rG,WAAW3hF,cAAc,oBAE3C,IADc,OAAe0gI,GAAM18H,cAActnB,OACvCwkB,UAAU,EAAGn6B,KAAKokK,mBAAmB5lK,UAAYwB,KAAKokK,mBAAoB,CAClFt1J,EAAKiuJ,QACL,QAINuH,WAEE,MAAO,IADMtkK,KAAKshK,KAAKroI,cAAc,QACrBojI,iBAAiB,CAACvC,SAAS,KAAQ/wJ,QAAQiwB,GAAoC,iBAA7BA,EAAGgE,QAAQC,gBAAqCjE,EAAGwgB,WAEvH+qH,gBACE,OAAOvkK,KAAKskK,WAAWv7J,QAAQuxI,GAAOA,EAAG1/B,WAAW3hF,cAAc,yBAAwB,GAE5FurI,cAAc11J,GACZA,EAAKiuJ,QAEPI,YAAYzhB,GACV,MACM5sI,EADS4sI,EAAO1tI,OACFuxJ,QAAQ,gBACxBzwJ,IAASA,EAAK0qC,UAChBx5C,KAAKykK,SAASjpB,KAAK,CAACh6H,OAAQ,CAAC1S,KAAAA,KAGjC8wJ,cAAclkB,GACZ,GAAmB,UAAfA,EAAO73I,IAAiB,CAC1B,MAAMiL,EAAO9O,KAAKukK,gBAClB7oB,EAAO0hB,iBACHtuJ,GACF9O,KAAKykK,SAASjpB,KAAK,CAACh6H,OAAQ,CAAC1S,KAAAA,KAMjC,GAHmB,MAAf4sI,EAAO73I,KACT63I,EAAO0hB,iBAEL,CAAC,YAAa,UAAW,OAAQ,OAAOz4J,SAAS+2I,EAAO73I,KAAM,CAChE,MAAM6K,EAAQ1O,KAAKskK,WACbI,EAAe1kK,KAAKukK,gBAC1B,IAAI/4I,EAAQk5I,EAAeh2J,EAAMtF,QAAQs7J,GAAgB,EACzD,GAAIh2J,EAAMlQ,OAgBR,OAfAk9I,EAAO0hB,iBACY,cAAf1hB,EAAO73I,IACT2nB,IACwB,YAAfkwH,EAAO73I,IAChB2nB,IACwB,SAAfkwH,EAAO73I,IAChB2nB,EAAQ,EACgB,QAAfkwH,EAAO73I,MAChB2nB,EAAQ9c,EAAMlQ,OAAS,GAErBgtB,EAAQ,IACVA,EAAQ,GACNA,EAAQ9c,EAAMlQ,OAAS,IACzBgtB,EAAQ9c,EAAMlQ,OAAS,QACzBwB,KAAKwkK,cAAc91J,EAAM8c,IAI7BxrB,KAAK2hK,aAAajmB,EAAO73I,KAE3BysE,SACE,OAAO,EAAAniD,CAAC;yDAC6CnuB,KAAKm9J,wBAAwBn9J,KAAK4/J;;;QAM3FuE,EAAO7pD,QAAS,IAAA7+E,GAnFG,kQAoFnB,QAAW,EACT,IAAAn8B,GAAE,UACD6kK,EAAOtkK,UAAW,OAAQ,IAC7B,QAAW,EACT,OAAM,cACLskK,EAAOtkK,UAAW,WAAY,GACjCskK,GAAS,QAAW,EAClB,IAAAtmE,GAAE,YACDsmE,oFCzFCQ,EAAiB,cAAc,EAAAxuF,EACjCv1E,cACE8+C,SAASxjC,WACTlc,KAAKy0B,KAAO,IACZz0B,KAAKslE,YAAc,EAErB0xF,eACEh3J,KAAK4kK,iBAEPC,yBACE7kK,KAAK4kK,iBAEPA,iBACE,MACM9gH,EAAyB,EADhB9jD,KAAK8kK,UAAUliI,EAAEmiI,QAAQ5oK,MACL8Q,KAAKmqE,GAClC90B,EAASwB,EAAgB9jD,KAAKglK,WAAa,IAAMlhH,EACvD9jD,KAAK8kK,UAAUp9G,MAAMu9G,gBAAkB,GAAGnhH,KAAiBA,IAC3D9jD,KAAK8kK,UAAUp9G,MAAMw9G,iBAAmB,GAAG5iH,IAE7CguB,SACE,OAAO,EAAAniD,CAAC;;kDAEsCnuB,KAAKy0B,eAAez0B,KAAKy0B;;;4BAG/Cz0B,KAAKslE;;;gBAGjBtlE,KAAKy0B,KAAO,EAAuB,EAAnBz0B,KAAKslE;iBACpBtlE,KAAKy0B,KAAO;iBACZz0B,KAAKy0B,KAAO;;;;;4BAKDz0B,KAAKslE;;;gBAGjBtlE,KAAKy0B,KAAO,EAAuB,EAAnBz0B,KAAKslE;iBACpBtlE,KAAKy0B,KAAO;iBACZz0B,KAAKy0B,KAAO;;;;;;;;QAW7BkwI,EAAerqD,QAAS,IAAA7+E,GAtDI,+9BAuD5B,QAAW,EACT,IAAAn8B,GAAE,8BACDqlK,EAAe9kK,UAAW,YAAa,IAC1C,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM6L,UACRy6J,EAAe9kK,UAAW,OAAQ,IACrC,QAAW,EACT,IAAAvB,GAAE,CAACgrJ,UAAW,eAAgBjrJ,KAAM6L,UACnCy6J,EAAe9kK,UAAW,cAAe,IAC5C,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM6L,OAAQ4qJ,SAAS,KACzB6P,EAAe9kK,UAAW,aAAc,IAC3C,QAAW,EACT,OAAM,eACL8kK,EAAe9kK,UAAW,yBAA0B,GACvD8kK,GAAiB,QAAW,EAC1B,IAAA9mE,GAAE,qBACD8mE,8IClDC7nK,EAAK,EACLqoK,EAAU,cAAc,EAAAhvF,EAC1Bv1E,cACE8+C,SAASxjC,WACTlc,KAAKg7I,QAAU,YAAWl+I,EAC1BkD,KAAKk7I,WAAa,mBAAmBp+I,IACrCkD,KAAK+6I,QAAU,eAAej+I,IAC9BkD,KAAKw8J,UAAW,EAChBx8J,KAAK86I,iBAAkB,EACvB96I,KAAK26I,cAAe,EACpB36I,KAAKolK,YAAa,EAClBplK,KAAKpD,KAAO,GACZoD,KAAK7D,MAAQ,EACb6D,KAAKg5C,MAAQ,GACbh5C,KAAK66I,SAAW,GAChB76I,KAAKw5C,UAAW,EAChBx5C,KAAK69J,SAAU,EACf79J,KAAK8qB,IAAM,EACX9qB,KAAK8zB,IAAM,IACX9zB,KAAKskE,KAAO,EACZtkE,KAAKmjD,QAAU,MACfnjD,KAAKqlK,iBAAoBlpK,GAAUA,EAAM2D,WAE3Cw2J,oBACE52G,MAAM42G,oBACNt2J,KAAKk8J,iBAAmBl8J,KAAKk8J,iBAAiBjlJ,KAAKjX,MACnDA,KAAK46G,WAAW3iG,iBAAiB,aAAcjY,KAAKk8J,uBACjC,IAAfl8J,KAAK7D,OAAmC,OAAf6D,KAAK7D,QAChC6D,KAAK7D,MAAQ6D,KAAK8qB,KAChB9qB,KAAK7D,MAAQ6D,KAAK8qB,MACpB9qB,KAAK7D,MAAQ6D,KAAK8qB,KAChB9qB,KAAK7D,MAAQ6D,KAAK8zB,MACpB9zB,KAAK7D,MAAQ6D,KAAK8zB,KACpB9zB,KAAKk8J,mBAEPlF,eACEh3J,KAAKslK,cACLtlK,KAAKulK,eAAiB,IAAIpvG,gBAAe,IAAMn2D,KAAKslK,gBAEtD9O,uBACE92G,MAAM82G,uBACNx2J,KAAK46G,WAAWvpF,oBAAoB,aAAcrxB,KAAKk8J,kBAEzDa,MAAMt/J,GACJuC,KAAK+C,MAAMg6J,MAAMt/J,GAEnBu/J,OACEh9J,KAAK+C,MAAMi6J,OAEbe,kBAAkBt/J,GAChBuB,KAAK+C,MAAMg7J,kBAAkBt/J,GAC7BuB,KAAK69J,SAAW79J,KAAK+C,MAAMi7J,gBAE7BwH,cACExlK,KAAK7D,MAAQ+N,OAAOlK,KAAK+C,MAAM5G,OAC/B6D,KAAKm+J,SAAS3iB,OACdh8H,uBAAsB,IAAMxf,KAAKslK,gBAEnCvJ,aACE/7J,KAAKw8J,UAAW,EAChBx8J,KAAKolK,YAAa,EAClBplK,KAAKi9J,OAAOzhB,OACZx7I,KAAKulK,eAAeE,UAAUzlK,KAAK+C,OAErC64J,cACE57J,KAAKw8J,UAAW,EAChBx8J,KAAKolK,YAAa,EAClBplK,KAAKk9J,QAAQ1hB,OACbx7I,KAAKulK,eAAe70I,QAAQ1wB,KAAK+C,OAEnCm5J,mBACEl8J,KAAK86I,iBAAkB,OAAQ96I,KAAM,aACrCA,KAAK26I,cAAe,OAAQ36I,KAAM,SAEpC0lK,mBACE1lK,KAAK+8J,QAEPuI,cACE,GAAqB,SAAjBtlK,KAAKmjD,QAAoB,CAC3B,MAAMtB,EAAU50C,KAAK6mB,IAAI,GAAI9zB,KAAK7D,MAAQ6D,KAAK8qB,MAAQ9qB,KAAK8zB,IAAM9zB,KAAK8qB,MACjE66I,EAAa3lK,KAAK+C,MAAMq7I,YACxBwnB,EAAe5lK,KAAKymC,OAAO23G,YAC3BynB,EAAY1rD,iBAAiBn6G,KAAK+C,OAAOq3G,iBAAiB,gBAC1D9lE,EAAI,QAAQqxH,EAAa9jH,mBAAyBA,OAAagkH,aAAqBA,WAC1F7lK,KAAKymC,OAAOihB,MAAM43F,UAAY,cAAchrG,KAC5Ct0C,KAAKymC,OAAOihB,MAAMo+G,WAAa,IAAIF,EAAe,OAGtDt1F,SACE,OAAO,OAAkB,CACvB0qE,QAASh7I,KAAKg7I,QACdhiG,MAAOh5C,KAAKg5C,MACZ+hG,QAAS/6I,KAAK+6I,QACdJ,aAAc36I,KAAK26I,aACnBO,WAAYl7I,KAAKk7I,WACjBL,SAAU76I,KAAK66I,SACfC,gBAAiB96I,KAAK86I,gBACtBrmH,KAAM,UACL,EAAAtG,CAAC;;;mBAGU,IAAA7uB,GAAE,CACdw4C,OAAO,EACP,kBAAmB93C,KAAKw5C,SACxB,iBAAkBx5C,KAAKw8J,SACvB,yBAA0Bx8J,KAAKolK,WAC/B,qBAAuC,QAAjBplK,KAAKmjD,QAC3B,wBAA0C,WAAjBnjD,KAAKmjD;wBAEZnjD,KAAK0lK,iBAAiBzuJ,KAAKjX;;;;;;mBAMhCA,KAAKpD;qBACHoD,KAAK7D,MAAQ;wBACV6D,KAAKw5C;mBACX,IAAA28B,GAAEn2E,KAAK8qB;mBACP,IAAAqrD,GAAEn2E,KAAK8zB;oBACN,IAAAqiD,GAAEn2E,KAAKskE;+BACI,IAAA6R,IAAE,OAAc,CACxCn9B,MAAOh5C,KAAKg5C,MACZ+hG,QAAS/6I,KAAK+6I,QACdJ,aAAc36I,KAAK26I,aACnBE,SAAU76I,KAAK66I,SACfK,WAAYl7I,KAAKk7I,WACjBJ,gBAAiB96I,KAAK86I;qBAEP96I,KAAKwlK,YAAYvuJ,KAAKjX;qBACtBA,KAAK47J,YAAY3kJ,KAAKjX;oBACvBA,KAAK+7J,WAAW9kJ,KAAKjX;;YAEZ,SAAjBA,KAAKmjD,QAAqB,EAAAh1B,CAAC,mDAAmDnuB,KAAKqlK,iBAAiBrlK,KAAK7D,oBAAsB;;WAK3IgpK,EAAQ7qD,QAAS,IAAA7+E,GA7IG,ywMA8IpB,QAAW,EACT,IAAAn8B,GAAG,oBACF6lK,EAAQtlK,UAAW,QAAS,IAC/B,QAAW,EACT,IAAAP,GAAG,oBACF6lK,EAAQtlK,UAAW,SAAU,IAChC,QAAW,EACT,IAAA+iC,MACCuiI,EAAQtlK,UAAW,WAAY,IAClC,QAAW,EACT,IAAA+iC,MACCuiI,EAAQtlK,UAAW,kBAAmB,IACzC,QAAW,EACT,IAAA+iC,MACCuiI,EAAQtlK,UAAW,eAAgB,IACtC,QAAW,EACT,IAAA+iC,MACCuiI,EAAQtlK,UAAW,aAAc,IACpC,QAAW,EACT,IAAAvB,MACC6mK,EAAQtlK,UAAW,OAAQ,IAC9B,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM6L,UACRi7J,EAAQtlK,UAAW,QAAS,IAC/B,QAAW,EACT,IAAAvB,MACC6mK,EAAQtlK,UAAW,QAAS,IAC/B,QAAW,EACT,IAAAvB,GAAE,CAACgrJ,UAAW,eACb6b,EAAQtlK,UAAW,WAAY,IAClC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BqQ,EAAQtlK,UAAW,WAAY,IAClC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BqQ,EAAQtlK,UAAW,UAAW,IACjC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM6L,UACRi7J,EAAQtlK,UAAW,MAAO,IAC7B,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM6L,UACRi7J,EAAQtlK,UAAW,MAAO,IAC7B,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM6L,UACRi7J,EAAQtlK,UAAW,OAAQ,IAC9B,QAAW,EACT,IAAAvB,MACC6mK,EAAQtlK,UAAW,UAAW,IACjC,QAAW,EACT,IAAAvB,MACC6mK,EAAQtlK,UAAW,mBAAoB,IAC1C,QAAW,EACT,OAAM,cACLslK,EAAQtlK,UAAW,WAAY,IAClC,QAAW,EACT,OAAM,YACLslK,EAAQtlK,UAAW,SAAU,IAChC,QAAW,EACT,OAAM,aACLslK,EAAQtlK,UAAW,UAAW,IACjC,QAAW,EACT,OAAM,UACN,OAAM,aACLslK,EAAQtlK,UAAW,mBAAoB,GAC1CslK,GAAU,QAAW,EACnB,IAAAtnE,GAAE,aACDsnE,sECtOCY,EAAmB,cAAc,EAAA5vF,EACnCv1E,cACE8+C,SAASxjC,WACTlc,KAAKgmK,iBAAmB,GAE1B1P,oBACE52G,MAAM42G,oBACNt2J,KAAKulK,eAAiB,IAAIpvG,gBAAgB3lC,IACxCxwB,KAAKimK,SAASzqB,KAAK,CAACh6H,OAAQ,CAACgP,QAAAA,QAGjCgmI,uBACE92G,MAAM82G,uBACNx2J,KAAKulK,eAAevvI,aAEtBkmI,mBACE,MACMtiH,EADO55C,KAAK46G,WAAW3hF,cAAc,QACrBojI,iBAAiB,CAACvC,SAAS,IACjD95J,KAAKgmK,iBAAiB98J,KAAK8vB,GAAOh5B,KAAKulK,eAAeE,UAAUzsI,KAChEh5B,KAAKgmK,iBAAmB,GACxBpsH,EAAS1wC,KAAK8vB,IACZh5B,KAAKulK,eAAe70I,QAAQsI,GAC5Bh5B,KAAKgmK,iBAAiB5hK,KAAK40B,MAG/Bs3C,SACE,OAAO,EAAAniD,CAAC,sBAAsBnuB,KAAKk8J,8BAGvC6J,EAAiBzrD,QAAS,IAAA7+E,GAhCI,0KAiC9B,QAAW,EACT,OAAM,cACLsqI,EAAiBlmK,UAAW,WAAY,GAC3CkmK,GAAmB,QAAW,EAC5B,IAAAloE,GAAE,uBACDkoE,wJCPCjpK,EAAK,EACLopK,EAAW,cAAc,EAAA/vF,EAC3Bv1E,cACE8+C,SAASxjC,WACTlc,KAAKg7I,QAAU,aAAYl+I,EAC3BkD,KAAKk7I,WAAa,oBAAoBp+I,IACtCkD,KAAK+6I,QAAU,gBAAgBj+I,IAC/BkD,KAAKw8J,UAAW,EAChBx8J,KAAK86I,iBAAkB,EACvB96I,KAAK26I,cAAe,EACpB36I,KAAKmmK,QAAS,EACdnmK,KAAKomK,aAAe,GACpBpmK,KAAKqmK,YAAc,GACnBrmK,KAAKsmK,UAAW,EAChBtmK,KAAKumK,eAAiB,EACtBvmK,KAAKw5C,UAAW,EAChBx5C,KAAKpD,KAAO,GACZoD,KAAKwmK,YAAc,GACnBxmK,KAAKy0B,KAAO,SACZz0B,KAAKqgK,OAAQ,EACbrgK,KAAK7D,MAAQ,GACb6D,KAAK48J,MAAO,EACZ58J,KAAKwrH,UAAW,EAChBxrH,KAAKymK,WAAY,EACjBzmK,KAAK69J,SAAU,EAEjBvH,oBACE52G,MAAM42G,oBACNt2J,KAAKk8J,iBAAmBl8J,KAAKk8J,iBAAiBjlJ,KAAKjX,MACnDA,KAAK46G,WAAW3iG,iBAAiB,aAAcjY,KAAKk8J,kBACpDl8J,KAAKk8J,mBAEPlF,eACEh3J,KAAKulK,eAAiB,IAAIpvG,gBAAe,IAAMn2D,KAAK0mK,eACpD1mK,KAAK2mK,qBAEPnQ,uBACE92G,MAAM82G,uBACNx2J,KAAK46G,WAAWvpF,oBAAoB,aAAcrxB,KAAKk8J,kBAEzD4B,iBACE,OAAO99J,KAAK+C,MAAM+6J,iBAEpBC,kBAAkBt/J,GAChBuB,KAAK+C,MAAMg7J,kBAAkBt/J,GAC7BuB,KAAK69J,SAAW79J,KAAK+C,MAAMi7J,gBAE7B4I,aAAa93J,GACX,MAAM6qJ,EAAO7qJ,EAAK8rG,WAAW3hF,cAAc,oBAC3C,OAAO,OAAe0gI,GAExB2K,WACE,MAAO,IAAItkK,KAAKwhK,iBAAiB,iBAEnCqF,kBACE,OAAOvmK,MAAMiF,QAAQvF,KAAK7D,OAAS6D,KAAK7D,MAAQ,CAAC6D,KAAK7D,OAExD4/J,aACE/7J,KAAKw8J,UAAW,EAChBx8J,KAAKi9J,OAAOzhB,OAEdsrB,iBAAiBprB,GACfA,EAAO2hB,kBACPr9J,KAAK7D,MAAQ6D,KAAKsmK,SAAW,GAAK,GAClCtmK,KAAK+mK,QAAQvrB,OACbx7I,KAAK2mK,qBAEPK,uBACMhnK,KAAKw5C,UAAYx5C,KAAKmmK,QACxBnmK,KAAKgiK,SAASrzH,OAGlBitH,cACE57J,KAAKw8J,UAAW,EAChBx8J,KAAKk9J,QAAQ1hB,OAEfokB,cAAclkB,GACZ,MAAM1tI,EAAS0tI,EAAO1tI,OAChBU,EAAQ1O,KAAKskK,WACb2C,EAAYv4J,EAAM,GAClBw4J,EAAWx4J,EAAMA,EAAMlQ,OAAS,GACtC,GAAqC,WAAjCwP,EAAOgvB,QAAQC,cAGnB,GAAmB,QAAfy+G,EAAO73I,IAAX,CAMA,GAAI,CAAC,YAAa,WAAWc,SAAS+2I,EAAO73I,KAAM,CAKjD,GAJA63I,EAAO0hB,iBACFp9J,KAAKmmK,QACRnmK,KAAKgiK,SAASxzH,OAEG,cAAfktG,EAAO73I,KAAuBojK,EAEhC,YADAA,EAAUlK,QAGZ,GAAmB,YAAfrhB,EAAO73I,KAAqBqjK,EAE9B,YADAA,EAASnK,QAIR/8J,KAAKmmK,SACRzqB,EAAO2hB,kBACP3hB,EAAO0hB,iBACPp9J,KAAKgiK,SAASxzH,OACdxuC,KAAKshK,KAAKK,aAAajmB,EAAO73I,WAvB1B7D,KAAKmmK,QACPnmK,KAAKgiK,SAASrzH,OAyBpBw4H,mBACE,IAAIr8B,GACkC,OAAzBA,EAAK9qI,KAAK46G,iBAAsB,EAASkwB,EAAG7xG,cAAc,iBACnE8jI,QAENqK,iBAAiB1rB,GACf,MAAM5sI,EAAO4sI,EAAOl6H,OAAO1S,KACvB9O,KAAKsmK,SACPtmK,KAAK7D,MAAQ6D,KAAK7D,MAAMwI,SAASmK,EAAK3S,OAAS6D,KAAK7D,MAAM4M,QAAQ25B,GAAMA,IAAM5zB,EAAK3S,QAAS,IAAI6D,KAAK7D,MAAO2S,EAAK3S,OAEjH6D,KAAK7D,MAAQ2S,EAAK3S,MAEpB6D,KAAK2mK,qBAEPU,eAAe3rB,GACT17I,KAAKw5C,SACPkiG,EAAO0hB,kBAGTp9J,KAAK0mK,aACL1mK,KAAKulK,eAAe70I,QAAQ1wB,MAC5BA,KAAKmmK,QAAS,GAEhBmB,iBACEtnK,KAAKulK,eAAeE,UAAUzlK,MAC9BA,KAAKmmK,QAAS,EAEhBoB,uBACE,MAAMprK,EAAQ6D,KAAK6mK,kBACnB7mK,KAAK7D,MAAQ6D,KAAKsmK,SAAWnqK,EAAQA,EAAM,IAAM,GACjD6D,KAAK2mK,qBAEProJ,yBACEte,KAAK86I,iBAAkB,OAAQ96I,KAAM,aACrCA,KAAK26I,cAAe,OAAQ36I,KAAM,SAClC,MAAM0O,EAAQ1O,KAAKskK,iBACbxqJ,QAAQ1E,IAAI1G,EAAMxF,KAAK4F,GAASA,EAAKwhE,UAASrpE,MAAK,IAAMjH,KAAK2mK,uBAEtEa,qBAAqB9rB,GACNA,EAAOolB,eACKlV,MAAM5yH,GACzBA,aAAc8jH,aACA9jH,EACD+mG,UAAU/qE,SAAS,iBAKpC0mF,EAAO2hB,kBAGXoK,oBACEznK,KAAK2mK,qBACL3mK,KAAKm+J,SAAS3iB,OAEhBkrB,aACE,IAAI57B,EACJ,MAAMx7E,EAAgC,OAAzBw7E,EAAK9qI,KAAK46G,iBAAsB,EAASkwB,EAAG7xG,cAAc,gBACvEj5B,KAAKshK,KAAK55G,MAAM9rD,MAAQ,GAAG0zD,EAAI4G,gBAC3Bl2D,KAAKgiK,UACPhiK,KAAKgiK,SAASxS,aAGlBmX,qBACE,MAAMj4J,EAAQ1O,KAAKskK,WACbnoK,EAAQ6D,KAAK6mK,kBAEnB,GADAn4J,EAAMxF,KAAK4F,GAASA,EAAK6uJ,QAAUxhK,EAAMwI,SAASmK,EAAK3S,SACnD6D,KAAKsmK,SAAU,CACjB,MAAMoB,EAAeh5J,EAAM3F,QAAQ+F,GAAS3S,EAAMwI,SAASmK,EAAK3S,SAwBhE,GAvBA6D,KAAKomK,aAAesB,EAAa,GAAK1nK,KAAK4mK,aAAac,EAAa,IAAM,GAC3E1nK,KAAKqmK,YAAcqB,EAAax+J,KAAK4F,GAC5B,EAAAqf,CAAC;;;;mBAIGnuB,KAAKy0B;oBACJz0B,KAAK48J;;qBAEJ58J,KAAKwnK;uBACHxnK,KAAKwnK;wBACH9rB,IACfA,EAAO2hB,kBACFr9J,KAAKw5C,WACR1qC,EAAK6uJ,SAAU,EACf39J,KAAK2nK;;cAIH3nK,KAAK4mK,aAAa93J;;YAItB9O,KAAKumK,eAAiB,GAAKvmK,KAAKqmK,YAAY7nK,OAASwB,KAAKumK,eAAgB,CAC5E,MAAMrgH,EAAQlmD,KAAKqmK,YAAY7nK,OAC/BwB,KAAKomK,aAAe,GACpBpmK,KAAKqmK,YAAcrmK,KAAKqmK,YAAYlkK,MAAM,EAAGnC,KAAKumK,gBAClDvmK,KAAKqmK,YAAYjiK,KAAK,EAAA+pB,CAAC;4DAC6BnuB,KAAKy0B,UAAUyxB,EAAQlmD,KAAKumK;gBAG7E,CACL,MAAMqB,EAAcl5J,EAAM3F,QAAQ+F,GAASA,EAAK3S,QAAUA,EAAM,KAAI,GACpE6D,KAAKomK,aAAewB,EAAc5nK,KAAK4mK,aAAagB,GAAe,GACnE5nK,KAAKqmK,YAAc,IAGvBsB,qBACE,MAEME,EAFQ7nK,KAAKskK,WACQv7J,QAAQ+F,GAASA,EAAK6uJ,UACdz0J,KAAK4F,GAASA,EAAK3S,QAClD6D,KAAKsmK,SACPtmK,KAAK7D,MAAQ6D,KAAK7D,MAAM4M,QAAQw8B,GAAQsiI,EAAcljK,SAAS4gC,KAE/DvlC,KAAK7D,MAAQ0rK,EAAcrpK,OAAS,EAAIqpK,EAAc,GAAK,GAG/Dv3F,SACE,IAAIw6D,EACJ,MAAMg9B,EAAe9nK,KAAKsmK,SAAWtmK,KAAK7D,MAAMqC,OAAS,EAAmB,KAAfwB,KAAK7D,MAClE,OAAO,OAAkB,CACvB6+I,QAASh7I,KAAKg7I,QACdhiG,MAAOh5C,KAAKg5C,MACZ+hG,QAAS/6I,KAAK+6I,QACdJ,aAAc36I,KAAK26I,aACnBO,WAAYl7I,KAAKk7I,WACjBL,SAAU76I,KAAK66I,SACfC,gBAAiB96I,KAAK86I,gBACtBrmH,KAAMz0B,KAAKy0B,KACXwmH,aAAc,IAAMj7I,KAAKmnK,oBACxB,EAAAh5I,CAAC;;;mBAGWnuB,KAAKqgK;4BACIrgK,KAAKsmK;+BACFtmK;mBACb,IAAAV,GAAE,CACdyqI,QAAQ,EACR,eAAgB/pI,KAAKmmK,OACrB,gBAAsE,KAA/B,OAApBr7B,EAAK9qI,KAAK7D,YAAiB,EAAS2uI,EAAGtsI,QAC1D,kBAAmBwB,KAAKw8J,SACxB,oBAAqBx8J,KAAKymK,UAC1B,mBAAoBzmK,KAAKw5C,SACzB,mBAAoBx5C,KAAKsmK,SACzB,mBAAoBtmK,KAAKsmK,UAAYtmK,KAAKqmK,YAAY7nK,OAAS,EAC/D,8BAAqD,KAAtBwB,KAAKomK,aACpC,gBAA+B,UAAdpmK,KAAKy0B,KACtB,iBAAgC,WAAdz0B,KAAKy0B,KACvB,gBAA+B,UAAdz0B,KAAKy0B,KACtB,eAAgBz0B,KAAK48J,KACrB,kBAAmB58J,KAAK69J;qBAET79J,KAAKqnK;qBACLrnK,KAAKsnK;;;;iBAITtnK,KAAKg7I;;;+BAGQ,IAAA7kE,IAAE,OAAc,CACxCn9B,MAAOh5C,KAAKg5C,MACZ+hG,QAAS/6I,KAAK+6I,QACdJ,aAAc36I,KAAK26I,aACnBE,SAAU76I,KAAK66I,SACfK,WAAYl7I,KAAKk7I,WACjBJ,gBAAiB96I,KAAK86I;;4BAGA96I,KAAKmmK,OAAS,OAAS;uBAC5BnmK,KAAKw5C,SAAW,KAAO;oBAC1Bx5C,KAAK+7J;qBACJ/7J,KAAK47J;uBACH57J,KAAK4/J;;;gBAGZ5/J,KAAKqmK,YAAY7nK,OAAS,EAAA2vB,CAAC,4CAA4CnuB,KAAKqmK,uBAAyBrmK,KAAKomK,cAAgBpmK,KAAKwmK;;;cAGjIxmK,KAAKymK,WAAaqB,EAAe,EAAA35I,CAAC;;;;;6BAKnBnuB,KAAK8mK;;;kBAGd;;;;;;;;;;;0BAWM9mK,KAAKwrH;uBACRs8C,EAAe,IAAM;;;;;iEAKqB9nK,KAAKonK;gCACtCpnK,KAAKk8J;;;WAMrCgK,EAAS5rD,QAAS,IAAA7+E,GApUG,mqNAqUrB,QAAW,EACT,IAAAn8B,GAAG,YACF4mK,EAASrmK,UAAW,WAAY,IACnC,QAAW,EACT,IAAAP,GAAG,2BACF4mK,EAASrmK,UAAW,QAAS,IAChC,QAAW,EACT,IAAAP,GAAG,kBACF4mK,EAASrmK,UAAW,OAAQ,IAC/B,QAAW,EACT,IAAA+iC,MACCsjI,EAASrmK,UAAW,WAAY,IACnC,QAAW,EACT,IAAA+iC,MACCsjI,EAASrmK,UAAW,kBAAmB,IAC1C,QAAW,EACT,IAAA+iC,MACCsjI,EAASrmK,UAAW,eAAgB,IACvC,QAAW,EACT,IAAA+iC,MACCsjI,EAASrmK,UAAW,SAAU,IACjC,QAAW,EACT,IAAA+iC,MACCsjI,EAASrmK,UAAW,eAAgB,IACvC,QAAW,EACT,IAAA+iC,MACCsjI,EAASrmK,UAAW,cAAe,IACtC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BoR,EAASrmK,UAAW,WAAY,IACnC,QAAW,EACT,IAAAvB,GAAE,CAACgrJ,UAAW,mBAAoBjrJ,KAAM6L,UACvCg8J,EAASrmK,UAAW,iBAAkB,IACzC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BoR,EAASrmK,UAAW,WAAY,IACnC,QAAW,EACT,IAAAvB,MACC4nK,EAASrmK,UAAW,OAAQ,IAC/B,QAAW,EACT,IAAAvB,MACC4nK,EAASrmK,UAAW,cAAe,IACtC,QAAW,EACT,IAAAvB,MACC4nK,EAASrmK,UAAW,OAAQ,IAC/B,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,WACR8kI,EAASrmK,UAAW,QAAS,IAChC,QAAW,EACT,IAAAvB,MACC4nK,EAASrmK,UAAW,QAAS,IAChC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BoR,EAASrmK,UAAW,OAAQ,IAC/B,QAAW,EACT,IAAAvB,MACC4nK,EAASrmK,UAAW,QAAS,IAChC,QAAW,EACT,IAAAvB,GAAE,CAACgrJ,UAAW,eACb4c,EAASrmK,UAAW,WAAY,IACnC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BoR,EAASrmK,UAAW,WAAY,IACnC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,WACR8kI,EAASrmK,UAAW,YAAa,IACpC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BoR,EAASrmK,UAAW,UAAW,IAClC,QAAW,EACT,OAAM,aACLqmK,EAASrmK,UAAW,UAAW,IAClC,QAAW,EACT,OAAM,cACLqmK,EAASrmK,UAAW,WAAY,IACnC,QAAW,EACT,OAAM,aACLqmK,EAASrmK,UAAW,UAAW,IAClC,QAAW,EACT,OAAM,YACLqmK,EAASrmK,UAAW,SAAU,IACjC,QAAW,EACT,OAAM,aACLqmK,EAASrmK,UAAW,uBAAwB,IAC/C,QAAW,EACT,OAAM,aACLqmK,EAASrmK,UAAW,uBAAwB,IAC/C,QAAW,EACT,OAAM,aACN,OAAM,UACLqmK,EAASrmK,UAAW,mBAAoB,IAC3C,QAAW,EACT,OAAM,UACLqmK,EAASrmK,UAAW,oBAAqB,GAC5CqmK,GAAW,QAAW,EACpB,IAAAroE,GAAE,cACDqoE,8DCjcC6B,EAAY,cAAc,EAAA5xF,EAC5B7F,SACE,OAAO,EAAAniD,CAAC,oFAGZ45I,EAAUztD,QAAS,IAAA7+E,GARG,i2BAStBssI,GAAY,QAAW,EACrB,IAAAlqE,GAAE,eACDkqE,0HCaCjrK,EAAK,EACLkrK,EAAW,cAAc,EAAA7xF,EAC3Bv1E,cACE8+C,SAASxjC,WACTlc,KAAKioK,SAAW,aAAYnrK,EAC5BkD,KAAK+6I,QAAU,gBAAgBj+I,IAC/BkD,KAAKw8J,UAAW,EAChBx8J,KAAKw5C,UAAW,EAChBx5C,KAAKwrH,UAAW,EAChBxrH,KAAK29J,SAAU,EACf39J,KAAK69J,SAAU,EAEjBrzC,QACExqH,KAAK+C,MAAMynH,QAEbuyC,MAAMt/J,GACJuC,KAAK+C,MAAMg6J,MAAMt/J,GAEnBu/J,OACEh9J,KAAK+C,MAAMi6J,OAEbc,iBACE,OAAO99J,KAAK+C,MAAM+6J,iBAEpBC,kBAAkBt/J,GAChBuB,KAAK+C,MAAMg7J,kBAAkBt/J,GAC7BuB,KAAK69J,SAAW79J,KAAK+C,MAAMi7J,gBAE7Bb,cACEn9J,KAAK29J,SAAW39J,KAAK29J,QAEvB5B,aACE/7J,KAAKw8J,UAAW,EAChBx8J,KAAKi9J,OAAOzhB,OAEdogB,cACE57J,KAAKw8J,UAAW,EAChBx8J,KAAKk9J,QAAQ1hB,OAEfokB,cAAclkB,GACO,cAAfA,EAAO73I,MACT63I,EAAO0hB,iBACPp9J,KAAK29J,SAAU,GAEE,eAAfjiB,EAAO73I,MACT63I,EAAO0hB,iBACPp9J,KAAK29J,SAAU,GAGnBuK,gBAAgBxsB,GACdA,EAAO0hB,iBACPp9J,KAAK+C,MAAMg6J,QAEboL,sBACMnoK,KAAK+C,QACP/C,KAAK+C,MAAM46J,QAAU39J,KAAK29J,QAC1B39J,KAAKm+J,SAAS3iB,QAGlBlrE,SACE,OAAO,EAAAniD,CAAC;;;cAGEnuB,KAAKioK;iBACH,IAAA3oK,GAAE,CACZ8oK,QAAQ,EACR,kBAAmBpoK,KAAK29J,QACxB,mBAAoB39J,KAAKw5C,SACzB,kBAAmBx5C,KAAKw8J;qBAETx8J,KAAKkoK;;;;;;iBAMTloK,KAAKioK;;oBAEH,IAAA9xF,GAAEn2E,KAAKpD;qBACN,IAAAu5E,GAAEn2E,KAAK7D;uBACJ6D,KAAK29J;wBACJ39J,KAAKw5C;wBACLx5C,KAAKwrH;;2BAEFxrH,KAAK29J,QAAU,OAAS;8BACrB39J,KAAK+6I;qBACd/6I,KAAKm9J;oBACNn9J,KAAK+7J;qBACJ/7J,KAAK47J;uBACH57J,KAAK4/J;;;;gCAII5/J,KAAK+6I;;;;QAOrCitB,EAAS1tD,QAAS,IAAA7+E,GAvGG,o9HAwGrB,QAAW,EACT,IAAAn8B,GAAG,2BACF0oK,EAASnoK,UAAW,QAAS,IAChC,QAAW,EACT,IAAA+iC,MACColI,EAASnoK,UAAW,WAAY,IACnC,QAAW,EACT,IAAAvB,MACC0pK,EAASnoK,UAAW,OAAQ,IAC/B,QAAW,EACT,IAAAvB,MACC0pK,EAASnoK,UAAW,QAAS,IAChC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BkT,EAASnoK,UAAW,WAAY,IACnC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BkT,EAASnoK,UAAW,WAAY,IACnC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BkT,EAASnoK,UAAW,UAAW,IAClC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BkT,EAASnoK,UAAW,UAAW,IAClC,QAAW,EACT,OAAM,YACLmoK,EAASnoK,UAAW,SAAU,IACjC,QAAW,EACT,OAAM,cACLmoK,EAASnoK,UAAW,WAAY,IACnC,QAAW,EACT,OAAM,aACLmoK,EAASnoK,UAAW,UAAW,IAClC,QAAW,EACT,OAAM,YACLmoK,EAASnoK,UAAW,sBAAuB,GAC9CmoK,GAAW,QAAW,EACpB,IAAAnqE,GAAE,cACDmqE,0FCvJCK,EAAQ,cAAc,EAAAlyF,EACxBv1E,cACE8+C,SAASxjC,WACTlc,KAAK3B,KAAO,UACZ2B,KAAKy0B,KAAO,SACZz0B,KAAK48J,MAAO,EACZ58J,KAAKymK,WAAY,EAEnBK,mBACE9mK,KAAK+mK,QAAQvrB,OAEflrE,SACE,OAAO,EAAAniD,CAAC;;;iBAGI,IAAA7uB,GAAE,CACZykI,KAAK,EACL,eAA8B,YAAd/jI,KAAK3B,KACrB,eAA8B,YAAd2B,KAAK3B,KACrB,YAA2B,SAAd2B,KAAK3B,KAClB,eAA8B,YAAd2B,KAAK3B,KACrB,cAA6B,WAAd2B,KAAK3B,KACpB,YAA2B,SAAd2B,KAAK3B,KAClB,aAA4B,UAAd2B,KAAKy0B,KACnB,cAA6B,WAAdz0B,KAAKy0B,KACpB,aAA4B,UAAdz0B,KAAKy0B,KACnB,YAAaz0B,KAAK48J,KAClB,iBAAkB58J,KAAKymK;;;;;;UAOnBzmK,KAAKymK,UAAY,EAAAt4I,CAAC;;;;;yBAKHnuB,KAAK8mK;;cAEd;;QAKhBuB,EAAM/tD,QAAS,IAAA7+E,GAjDG,++EAkDlB,QAAW,EACT,IAAAn9B,GAAE,CAACw2J,SAAS,KACXuT,EAAMxoK,UAAW,OAAQ,IAC5B,QAAW,EACT,IAAAvB,GAAE,CAACw2J,SAAS,KACXuT,EAAMxoK,UAAW,OAAQ,IAC5B,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BuT,EAAMxoK,UAAW,OAAQ,IAC5B,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,WACRinI,EAAMxoK,UAAW,YAAa,IACjC,QAAW,EACT,OAAM,aACLwoK,EAAMxoK,UAAW,UAAW,GAC/BwoK,GAAQ,QAAW,EACjB,IAAAxqE,GAAE,WACDwqE,wHCvDCvrK,EAAK,EACLwrK,EAAY,cAAc,EAAAnyF,EAC5Bv1E,cACE8+C,SAASxjC,WACTlc,KAAK6+J,YAAc,cAAa/hK,EAChCkD,KAAKuvJ,WAAY,EACjBvvJ,KAAKoyJ,QAAU,GACfpyJ,KAAKw6I,UAAY,MACjBx6I,KAAKw5C,UAAW,EAChBx5C,KAAKquD,SAAW,GAChBruD,KAAKya,MAAO,EACZza,KAAKypJ,SAAW,EAChBzpJ,KAAKo1D,QAAU,cAEjBkhG,oBACE52G,MAAM42G,oBACNt2J,KAAK+7J,WAAa/7J,KAAK+7J,WAAW9kJ,KAAKjX,MACvCA,KAAKm9J,YAAcn9J,KAAKm9J,YAAYlmJ,KAAKjX,MACzCA,KAAK47J,YAAc57J,KAAK47J,YAAY3kJ,KAAKjX,MACzCA,KAAK4/J,cAAgB5/J,KAAK4/J,cAAc3oJ,KAAKjX,MAC7CA,KAAKg8J,gBAAkBh8J,KAAKg8J,gBAAgB/kJ,KAAKjX,MACjDA,KAAKi8J,eAAiBj8J,KAAKi8J,eAAehlJ,KAAKjX,MAEjDg3J,eACEh3J,KAAKgO,OAAShO,KAAK+/E,YACnB//E,KAAKgvJ,QAAU,IAAI,IAAgBhvJ,KAAKgO,OAAQhO,KAAKomH,YACrDpmH,KAAKuoK,cACLvoK,KAAKiY,iBAAiB,OAAQjY,KAAK+7J,YAAY,GAC/C/7J,KAAKiY,iBAAiB,QAASjY,KAAK47J,aAAa,GACjD57J,KAAKiY,iBAAiB,QAASjY,KAAKm9J,aACpCn9J,KAAKiY,iBAAiB,UAAWjY,KAAK4/J,eACtC5/J,KAAKiY,iBAAiB,YAAajY,KAAKg8J,iBACxCh8J,KAAKiY,iBAAiB,WAAYjY,KAAKi8J,gBACvCj8J,KAAKomH,WAAW/uG,QAAUrX,KAAKya,KAC3Bza,KAAKya,MACPza,KAAKwuC,OAGTgoH,uBACE92G,MAAM82G,uBACNx2J,KAAKgvJ,QAAQ17E,UACbtzE,KAAKqxB,oBAAoB,OAAQrxB,KAAK+7J,YAAY,GAClD/7J,KAAKqxB,oBAAoB,QAASrxB,KAAK47J,aAAa,GACpD57J,KAAKqxB,oBAAoB,QAASrxB,KAAKm9J,aACvCn9J,KAAKqxB,oBAAoB,UAAWrxB,KAAK4/J,eACzC5/J,KAAKqxB,oBAAoB,YAAarxB,KAAKg8J,iBAC3Ch8J,KAAKqxB,oBAAoB,WAAYrxB,KAAKi8J,gBAE5CztH,OACMxuC,KAAKuvJ,WAAavvJ,KAAKw5C,WAGZx5C,KAAK66J,OAAOrf,OAChBsf,iBACT96J,KAAKya,MAAO,GAGdza,KAAKuvJ,WAAY,EACjBvvJ,KAAKya,MAAO,EACZza,KAAKgvJ,QAAQxgH,SAEfG,OACO3uC,KAAKuvJ,YAGKvvJ,KAAKg7J,OAAOxf,OAChBsf,iBACT96J,KAAKya,MAAO,GAGdza,KAAKuvJ,WAAY,EACjBvvJ,KAAKya,MAAO,EACZza,KAAKgvJ,QAAQrgH,SAEfoxC,YACE,MAAM/xE,EAAS,IAAIhO,KAAKynI,UAAUmkB,MAAM5yH,GAAoC,UAA7BA,EAAGgE,QAAQC,eAAyD,YAA5BjE,EAAGE,aAAa,UACvG,IAAKlrB,EACH,MAAM,IAAInN,MAAM,uDAElB,OAAOmN,EAET+tJ,aACM/7J,KAAKwoK,WAAW,UAClBxoK,KAAK2uC,OAGTwuH,cACMn9J,KAAKwoK,WAAW,WAClBxoK,KAAKya,KAAOza,KAAK2uC,OAAS3uC,KAAKwuC,QAGnCotH,cACM57J,KAAKwoK,WAAW,UAClBxoK,KAAKwuC,OAGToxH,cAAclkB,GACR17I,KAAKya,MAAuB,WAAfihI,EAAO73I,MACtB63I,EAAO2hB,kBACPr9J,KAAK2uC,QAGTqtH,kBACMh8J,KAAKwoK,WAAW,UAClBxoK,KAAKwuC,OAGTytH,iBACMj8J,KAAKwoK,WAAW,UAClBxoK,KAAK2uC,OAGT6sH,mBACEx7J,KAAKya,KAAOza,KAAKwuC,OAASxuC,KAAK2uC,OAEjC85H,sBACEzoK,KAAKuoK,cAEPvB,uBACMhnK,KAAKw5C,UAAYx5C,KAAKya,MACxBza,KAAK2uC,OAGTutH,mBACE,MAAMwM,EAAY1oK,KAAKgO,OACjB26J,EAAY3oK,KAAK+/E,YACnB4oF,IAAcD,IACZA,GACFA,EAAUtxG,gBAAgB,oBAE5BuxG,EAAUtxG,aAAa,mBAAoBr3D,KAAK6+J,cAGpD2J,WAAWI,GAET,OADiB5oK,KAAKo1D,QAAQlzD,MAAM,KACpByC,SAASikK,GAE3BL,cACMvoK,KAAKgvJ,SACPhvJ,KAAKgvJ,QAAQ1J,WAAW,CACtB9K,UAAWx6I,KAAKw6I,UAChBnsF,SAAUruD,KAAKquD,SACfo7F,SAAUzpJ,KAAKypJ,SACfyF,kBAAmBlvJ,KAAKmjD,QACxBksG,YAAa,IAAMrvJ,KAAKu7J,YAAY/f,OACpC4T,YAAa,IAAMpvJ,KAAKs7J,YAAY9f,SAI1ClrE,SACE,OAAO,EAAAniD,CAAC;0BACcnuB,KAAKk8J,iBAAiBjlJ,KAAKjX;;;;;eAKtCA,KAAK6+J;mBACF,IAAAv/J,GAAE,CACd6jD,SAAS,EACT,gBAAiBnjD,KAAKya;;wBAGJza,KAAKya,KAAO,QAAU;;iCAEbza,KAAKoyJ;;;QAMtCkW,EAAUhuD,QAAS,IAAA7+E,GA7KG,8zJA8KtB,QAAW,EACT,IAAAn8B,GAAG,wBACFgpK,EAAUzoK,UAAW,aAAc,IACtC,QAAW,EACT,IAAAP,GAAG,aACFgpK,EAAUzoK,UAAW,UAAW,IACnC,QAAW,EACT,IAAAvB,MACCgqK,EAAUzoK,UAAW,UAAW,IACnC,QAAW,EACT,IAAAvB,MACCgqK,EAAUzoK,UAAW,YAAa,IACrC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BwT,EAAUzoK,UAAW,WAAY,IACpC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM6L,UACRo+J,EAAUzoK,UAAW,WAAY,IACpC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM+iC,QAAS0zH,SAAS,KAC1BwT,EAAUzoK,UAAW,OAAQ,IAChC,QAAW,EACT,IAAAvB,GAAE,CAACD,KAAM6L,UACRo+J,EAAUzoK,UAAW,WAAY,IACpC,QAAW,EACT,IAAAvB,MACCgqK,EAAUzoK,UAAW,UAAW,IACnC,QAAW,EACT,OAAM,YACLyoK,EAAUzoK,UAAW,SAAU,IAClC,QAAW,EACT,OAAM,kBACLyoK,EAAUzoK,UAAW,cAAe,IACvC,QAAW,EACT,OAAM,YACLyoK,EAAUzoK,UAAW,SAAU,IAClC,QAAW,EACT,OAAM,kBACLyoK,EAAUzoK,UAAW,cAAe,IACvC,QAAW,EACT,OAAM,SACLyoK,EAAUzoK,UAAW,mBAAoB,IAC5C,QAAW,EACT,OAAM,cACN,OAAM,aACN,OAAM,aACLyoK,EAAUzoK,UAAW,sBAAuB,IAC/C,QAAW,EACT,OAAM,aACLyoK,EAAUzoK,UAAW,uBAAwB,GAChDyoK,GAAY,QAAW,EACrB,IAAAzqE,GAAE,eACDyqE,6GC3PH,IAAIO,EACAC,oBAqBJ,MAAMC,EAAmB,IAAI5hF,QACvB6hF,EAAqB,IAAI7hF,QACzB8hF,EAA2B,IAAI9hF,QAC/B+hF,EAAiB,IAAI/hF,QACrBgiF,EAAwB,IAAIhiF,QA0DlC,IAAIiiF,EAAgB,CAChBlvJ,IAAIlM,EAAQvN,EAAMq2G,GACd,GAAI9oG,aAAkBq7J,eAAgB,CAElC,GAAa,SAAT5oK,EACA,OAAOuoK,EAAmB9uJ,IAAIlM,GAElC,GAAa,qBAATvN,EACA,OAAOuN,EAAOs7J,kBAAoBL,EAAyB/uJ,IAAIlM,GAGnE,GAAa,UAATvN,EACA,OAAOq2G,EAASwyD,iBAAiB,QAC3BrrK,EACA64G,EAASyyD,YAAYzyD,EAASwyD,iBAAiB,IAI7D,OAAO,EAAKt7J,EAAOvN,KAEvB+qC,IAAG,CAACx9B,EAAQvN,EAAMtE,KACd6R,EAAOvN,GAAQtE,GACR,GAEX+H,IAAG,CAAC8J,EAAQvN,IACJuN,aAAkBq7J,iBACR,SAAT5oK,GAA4B,UAATA,IAGjBA,KAAQuN,GAqCvB,SAASw7J,EAAuBrtK,GAC5B,MAAqB,mBAAVA,GAhCOqV,EAiCMrV,KA7BXstK,YAAY5pK,UAAU6qB,aAC7B,qBAAsB2+I,eAAexpK,WA7GnCipK,IACHA,EAAuB,CACpBY,UAAU7pK,UAAU8pK,QACpBD,UAAU7pK,UAAU+pK,SACpBF,UAAU7pK,UAAUgqK,sBAqHEllK,SAAS6M,GAC5B,YAAatR,GAIhB,OADAsR,EAAKvR,MAAM6pK,EAAO9pK,MAAOE,GAClB,EAAK6oK,EAAiB7uJ,IAAIla,QAGlC,YAAaE,GAGhB,OAAO,EAAKsR,EAAKvR,MAAM6pK,EAAO9pK,MAAOE,KAtB9B,SAAU6pK,KAAe7pK,GAC5B,MAAMwmH,EAAKl1G,EAAK7Q,KAAKmpK,EAAO9pK,MAAO+pK,KAAe7pK,GAElD,OADA+oK,EAAyBz9H,IAAIk7E,EAAIqjD,EAAW5kI,KAAO4kI,EAAW5kI,OAAS,CAAC4kI,IACjE,EAAKrjD,KA2BhBvqH,aAAiBktK,gBAhGzB,SAAwC3iD,GAEpC,GAAIsiD,EAAmB9kK,IAAIwiH,GACvB,OACJ,MAAMgzB,EAAO,IAAI5/H,SAAQ,CAAC1P,EAASyK,KAC/B,MAAMm1J,EAAW,KACbtjD,EAAGr1F,oBAAoB,WAAYia,GACnCo7E,EAAGr1F,oBAAoB,QAAS3d,GAChCgzG,EAAGr1F,oBAAoB,QAAS3d,IAE9B43B,EAAW,KACblhC,IACA4/J,KAEEt2J,EAAQ,KACVmB,EAAO6xG,EAAGhzG,OAAS,IAAIu2J,aAAa,aAAc,eAClDD,KAEJtjD,EAAGzuG,iBAAiB,WAAYqzB,GAChCo7E,EAAGzuG,iBAAiB,QAASvE,GAC7BgzG,EAAGzuG,iBAAiB,QAASvE,MAGjCs1J,EAAmBx9H,IAAIk7E,EAAIgzB,GA0EvBwwB,CAA+B/tK,GA9JhBmH,EA+JDnH,GAzJV0sK,IACHA,EAAoB,CACjBY,YACAU,eACAC,SACAV,UACAL,kBAZiDzqK,MAAM+jC,GAAMr/B,aAAkBq/B,IAgK5E,IAAIkzE,MAAM15G,EAAOitK,GAErBjtK,GAzCX,IAAsBqV,EAzHClO,EAoKvB,SAAS,EAAKnH,GAGV,GAAIA,aAAiBkuK,WACjB,OA3IR,SAA0Bp+J,GACtB,MAAMwB,EAAU,IAAIqM,SAAQ,CAAC1P,EAASyK,KAClC,MAAMm1J,EAAW,KACb/9J,EAAQolB,oBAAoB,UAAWi5I,GACvCr+J,EAAQolB,oBAAoB,QAAS3d,IAEnC42J,EAAU,KACZlgK,EAAQ,EAAK6B,EAAQ9E,SACrB6iK,KAEEt2J,EAAQ,KACVmB,EAAO5I,EAAQyH,OACfs2J,KAEJ/9J,EAAQgM,iBAAiB,UAAWqyJ,GACpCr+J,EAAQgM,iBAAiB,QAASvE,MAetC,OAbAjG,EACKxG,MAAM9K,IAGHA,aAAiButK,WACjBX,EAAiBv9H,IAAIrvC,EAAO8P,MAI/BkO,OAAM,SAGXgvJ,EAAsB39H,IAAI/9B,EAASxB,GAC5BwB,EA6GI88J,CAAiBpuK,GAG5B,GAAI+sK,EAAehlK,IAAI/H,GACnB,OAAO+sK,EAAehvJ,IAAI/d,GAC9B,MAAM4zJ,EAAWyZ,EAAuBrtK,GAOxC,OAJI4zJ,IAAa5zJ,IACb+sK,EAAe19H,IAAIrvC,EAAO4zJ,GAC1BoZ,EAAsB39H,IAAIukH,EAAU5zJ,IAEjC4zJ,EAEX,MAAM+Z,EAAU3tK,GAAUgtK,EAAsBjvJ,IAAI/d,GC5KpD,SAASquK,EAAO5tK,EAAMwS,GAAS,QAAEq7J,EAAO,QAAEC,EAAO,SAAEC,EAAQ,WAAEC,GAAe,IACxE,MAAM3+J,EAAU4+J,UAAUpwJ,KAAK7d,EAAMwS,GAC/B07J,EAAc,EAAK7+J,GAgBzB,OAfIy+J,GACAz+J,EAAQgM,iBAAiB,iBAAkB/a,IACvCwtK,EAAQ,EAAKz+J,EAAQ9E,QAASjK,EAAM6tK,WAAY7tK,EAAM8tK,WAAY,EAAK/+J,EAAQye,iBAGnF+/I,GACAx+J,EAAQgM,iBAAiB,WAAW,IAAMwyJ,MAC9CK,EACK7jK,MAAMgkK,IACHL,GACAK,EAAGhzJ,iBAAiB,SAAS,IAAM2yJ,MACnCD,GACAM,EAAGhzJ,iBAAiB,iBAAiB,IAAM0yJ,SAE9CxwJ,OAAM,SACJ2wJ,EAcX,MAAMI,EAAc,CAAC,MAAO,SAAU,SAAU,aAAc,SACxDC,EAAe,CAAC,MAAO,MAAO,SAAU,SACxCC,EAAgB,IAAIphI,IAC1B,SAASqhI,EAAUr9J,EAAQvN,GACvB,KAAMuN,aAAkBy7J,cAClBhpK,KAAQuN,GACM,iBAATvN,EACP,OAEJ,GAAI2qK,EAAclxJ,IAAIzZ,GAClB,OAAO2qK,EAAclxJ,IAAIzZ,GAC7B,MAAM6qK,EAAiB7qK,EAAK6E,QAAQ,aAAc,IAC5CimK,EAAW9qK,IAAS6qK,EACpBE,EAAUL,EAAaxmK,SAAS2mK,GACtC,KAEEA,KAAmBC,EAAWnB,SAAWD,gBAAgBtqK,aACrD2rK,IAAWN,EAAYvmK,SAAS2mK,GAClC,OAEJ,MAAM16J,EAAS0N,eAAgBmtJ,KAAcvrK,GAEzC,MAAMwmH,EAAK1mH,KAAK0qB,YAAY+gJ,EAAWD,EAAU,YAAc,YAC/D,IAAIx9J,EAAS04G,EAAGgxB,MAQhB,OAPI6zB,IACAv9J,EAASA,EAAOwd,MAAMtrB,EAAKuyC,iBAMjB34B,QAAQ1E,IAAI,CACtBpH,EAAOs9J,MAAmBprK,GAC1BsrK,GAAW9kD,EAAGgzB,QACd,IAGR,OADA0xB,EAAc5/H,IAAI/qC,EAAMmQ,GACjBA,EAEE,IAAC86J,EAAAA,EDsCetC,EAAzBA,ECtCuB,IACpBsC,EACHxxJ,IAAK,CAAClM,EAAQvN,EAAMq2G,IAAau0D,EAAUr9J,EAAQvN,IAASirK,EAASxxJ,IAAIlM,EAAQvN,EAAMq2G,GACvF5yG,IAAK,CAAC8J,EAAQvN,MAAW4qK,EAAUr9J,EAAQvN,IAASirK,EAASxnK,IAAI8J,EAAQvN,qgBCvC7E,QAnCA,YAIE,WAAYwT,GAAZ,WAEQxV,EACJ,oDAFuB,WAAZ,KAAuB,KAAU,IAAM,WAAc,KAAK,IAIrE,gBACAwV,EACA,yBAEF,YAAMxV,IAAQ,MAUTwV,KAAOA,EAKZ,EAAKrX,KAAO,iBAGZ,EAAK6B,QAAUA,IAEnB,OAjC6B,OAiC7B,EAjCA,CAA6BoC,siBCEvB8qK,EACI,SAQV,cAME,WAAYttK,EAAMutK,EAAaC,GAA/B,MACE,YAAMxtK,IAAK,YAOX,EAAKm2B,QAAUo3I,EAOf,EAAKpgJ,MAAQqgJ,IAEjB,OAvBqC,OAuBrC,EAvBA,CAAqC,MAqSrC,QAhPA,YAKE,WAAYC,EAAWC,GAAvB,MACE,cAAO,KAKP,EAAKxuC,GAKL,EAAKpsG,KAKL,EAAK66I,GAEL,IAAMvuK,EAAUsuK,GAAe,GAc/B,GARA,EAAKE,UAAYxuK,EAAQyuK,OAMzB,EAAKC,OAASL,GAAwB,GAElC,EAAKG,QACP,IAAK,IAAI3sK,EAAI,EAAG8sK,EAAK,EAAKD,OAAO3tK,OAAQc,EAAI8sK,IAAM9sK,EACjD,EAAK+sK,cAAc,EAAKF,OAAO7sK,GAAIA,UAIvC,EAAKgtK,kBAmMT,OA9OyB,OAkDvB,YAAA1hJ,MAAA,WACE,KAAO5qB,KAAKusK,YAAc,GACxBvsK,KAAKqC,OAWT,YAAAmqK,OAAA,SAAOlqI,GACL,IAAK,IAAIhjC,EAAI,EAAG8sK,EAAK9pI,EAAI9jC,OAAQc,EAAI8sK,IAAM9sK,EACzCU,KAAKoE,KAAKk+B,EAAIhjC,IAEhB,OAAOU,MAUT,YAAAwC,QAAA,SAAQ0/F,GAEN,IADA,IAAM/yC,EAAQnvD,KAAKmsK,OACV7sK,EAAI,EAAG8sK,EAAKj9G,EAAM3wD,OAAQc,EAAI8sK,IAAM9sK,EAC3C4iG,EAAE/yC,EAAM7vD,GAAIA,EAAG6vD,IAYnB,YAAAs9G,SAAA,WACE,OAAOzsK,KAAKmsK,QASd,YAAAr9J,KAAA,SAAK0c,GACH,OAAOxrB,KAAKmsK,OAAO3gJ,IASrB,YAAA+gJ,UAAA,WACE,OAAOvsK,KAAKka,IAAIyxJ,IASlB,YAAAe,SAAA,SAASlhJ,EAAO4Q,GACVp8B,KAAKisK,SACPjsK,KAAKqsK,cAAcjwI,GAErBp8B,KAAKmsK,OAAO7nK,OAAOknB,EAAO,EAAG4Q,GAC7Bp8B,KAAKssK,gBACLtsK,KAAKopH,cACH,IAAIujD,EAAgB,QAAyBvwI,EAAM5Q,KAUvD,YAAAnpB,IAAA,WACE,OAAOrC,KAAK4sK,SAAS5sK,KAAKusK,YAAc,IAS1C,YAAAnoK,KAAA,SAAKg4B,GACCp8B,KAAKisK,SACPjsK,KAAKqsK,cAAcjwI,GAErB,IAAMyhE,EAAI79F,KAAKusK,YAEf,OADAvsK,KAAK0sK,SAAS7uE,EAAGzhE,GACVp8B,KAAKusK,aASd,YAAA/3J,OAAA,SAAO4nB,GAEL,IADA,IAAMkG,EAAMtiC,KAAKmsK,OACR7sK,EAAI,EAAG8sK,EAAK9pI,EAAI9jC,OAAQc,EAAI8sK,IAAM9sK,EACzC,GAAIgjC,EAAIhjC,KAAO88B,EACb,OAAOp8B,KAAK4sK,SAASttK,IAa3B,YAAAstK,SAAA,SAASphJ,GACP,IAAMkQ,EAAO17B,KAAKmsK,OAAO3gJ,GAMzB,OALAxrB,KAAKmsK,OAAO7nK,OAAOknB,EAAO,GAC1BxrB,KAAKssK,gBACLtsK,KAAKopH,cACH,IAAIujD,EAAgB,WAA4BjxI,EAAMlQ,IAEjDkQ,GAST,YAAAmxI,MAAA,SAAMrhJ,EAAO4Q,GACX,IAAMyhE,EAAI79F,KAAKusK,YACf,GAAI/gJ,EAAQqyE,EAAG,CACT79F,KAAKisK,SACPjsK,KAAKqsK,cAAcjwI,EAAM5Q,GAE3B,IAAMkQ,EAAO17B,KAAKmsK,OAAO3gJ,GACzBxrB,KAAKmsK,OAAO3gJ,GAAS4Q,EACrBp8B,KAAKopH,cACH,IAAIujD,EAAgB,WAA4BjxI,EAAMlQ,IAExDxrB,KAAKopH,cACH,IAAIujD,EAAgB,QAAyBvwI,EAAM5Q,QAEhD,CACL,IAAK,IAAI2hC,EAAI0wC,EAAG1wC,EAAI3hC,IAAS2hC,EAC3BntD,KAAK0sK,SAASv/G,OAAGlvD,GAEnB+B,KAAK0sK,SAASlhJ,EAAO4Q,KAOzB,YAAAkwI,cAAA,WACEtsK,KAAKwrC,IAAImgI,EAAiB3rK,KAAKmsK,OAAO3tK,SAQxC,YAAA6tK,cAAA,SAAcjwI,EAAM0wI,GAClB,IAAK,IAAIxtK,EAAI,EAAG8sK,EAAKpsK,KAAKmsK,OAAO3tK,OAAQc,EAAI8sK,IAAM9sK,EACjD,GAAIU,KAAKmsK,OAAO7sK,KAAO88B,GAAQ98B,IAAMwtK,EACnC,MAAM,IAAI,IAAe,KAIjC,EA9OA,CAAyB,mDCnEzB,SAMEC,IAAK,MAMLC,OAAQ,wDCgBV,QA3BA,WACE,aAMEhtK,KAAKitK,UAAW,EAkBpB,OAZE,YAAAC,QAAA,WACOltK,KAAKitK,WACRjtK,KAAKitK,UAAW,EAChBjtK,KAAKmtK,oBAQT,YAAAA,gBAAA,aACF,EAzBA,kiBCwUA,QAtQA,YAOE,WAAYC,GAAZ,MACE,cAAO,KAkDP,GA7CA,EAAK7vC,GAKL,EAAKpsG,KAKL,EAAK66I,GAML,EAAKqB,SAAMpvK,EAMX,EAAKqvK,cAAgB,WAOrB,EAAKC,OAAS,KAMd,EAAKC,oBAAiBvvK,EAMtB,EAAKwvK,mBAAqB,KAE1B,EAAKC,kBAAkB,EAAKJ,cAAe,EAAKK,wBAE5CP,EACF,GAGQ,mBADa,EAAgD,sBAEnE,CACA,IAAMzmD,EAAmC,EACzC,EAAKinD,YAAYjnD,OACZ,CAEL,IAAMv4E,EAAag/H,EACnB,EAAKS,cAAcz/H,YAmK3B,OAxOsB,OAgFpB,YAAA/kB,MAAA,WACE,IAAMA,EAAyC,IACzCykJ,EAAQ9tK,KAAK+tK,gBAAkB/tK,KAAKguK,gBAAkB,MAE5D3kJ,EAAM4kJ,gBAAgBjuK,KAAKkuK,mBAC3B,IAAMvnD,EAAW3mH,KAAKmuK,cAClBxnD,GACFt9F,EAAMukJ,YAAqCjnD,EAASt9F,SAEtD,IAAMq+B,EAAQ1nD,KAAKg6C,WAInB,OAHI0N,GACFr+B,EAAMivD,SAAS5wB,GAEVr+B,GAWT,YAAA8kJ,YAAA,WACE,OAA0CnuK,KAAKka,IAAIla,KAAKstK,gBAU1D,YAAAc,MAAA,WACE,OAAOpuK,KAAKqtK,KAUd,YAAAa,gBAAA,WACE,OAAOluK,KAAKstK,eASd,YAAAtzH,SAAA,WACE,OAAOh6C,KAAKutK,QASd,YAAAc,iBAAA,WACE,OAAOruK,KAAKwtK,gBAMd,YAAAc,sBAAA,WACEtuK,KAAKmpD,WAMP,YAAAwkH,uBAAA,WACM3tK,KAAKytK,sBACP,QAAcztK,KAAKytK,oBACnBztK,KAAKytK,mBAAqB,MAE5B,IAAM9mD,EAAW3mH,KAAKmuK,cAClBxnD,IACF3mH,KAAKytK,oBAAqB,QACxB9mD,EACA,WACA3mH,KAAKsuK,sBACLtuK,OAGJA,KAAKmpD,WAUP,YAAAykH,YAAA,SAAYjnD,GACV3mH,KAAKwrC,IAAIxrC,KAAKstK,cAAe3mD,IAY/B,YAAAruC,SAAA,SAASi2F,GA6CJ,IAA6BhuK,EAO5B,EAnDJP,KAAKutK,OAASgB,EACdvuK,KAAKwtK,eAAkBe,EA4CN,mBADehuK,EAzCRguK,GA2CjBhuK,GAMHD,MAAMiF,QAAQhF,GAChB,EAASA,IAET,OAAqD,mBAArB,EAAe,UAAkB,IAEjE,EAAS,CADuD,IAG3D,WACL,OAAO,SA1DLtC,EAEJ+B,KAAKmpD,WAYP,YAAAqlH,MAAA,SAAM1xK,GACJkD,KAAKqtK,IAAMvwK,EACXkD,KAAKmpD,WAUP,YAAA8kH,gBAAA,SAAgBrxK,GACdoD,KAAKyuK,qBAAqBzuK,KAAKstK,cAAettK,KAAK2tK,wBACnD3tK,KAAKstK,cAAgB1wK,EACrBoD,KAAK0tK,kBAAkB1tK,KAAKstK,cAAettK,KAAK2tK,wBAChD3tK,KAAK2tK,0BAET,EAxOA,CAAsB,yhBChEtB,cAOE,WAAYe,EAAQC,EAAY7yD,EAAY5zE,GAA5C,MACE,cAAO,YAMP,EAAKwmI,OAASA,EAMd,EAAKE,YAAc9yD,EAMnB,EAAK6yD,WAAaA,EAMlB,EAAKzmI,MAAQA,IAqDjB,OArFwB,OAsCtB,YAAAihB,QAAA,WACEnpD,KAAKopH,cAAcylD,EAAA,WAMrB,YAAAC,UAAA,WACE,OAAO9uK,KAAK0uK,QAOd,YAAAK,SAAA,WACE,OAAO,WAMT,YAAAC,cAAA,WACE,OAAOhvK,KAAK4uK,aAMd,YAAAK,cAAA,WACE,OAA8BjvK,KAAe,YAM/C,YAAAkvK,SAAA,WACE,OAAOlvK,KAAKkoC,OAOd,YAAA6/F,KAAA,YACE,WAEJ,EArFA,CAAwB,KAuFxB,ghBC+DO,SAASonC,EAAYC,EAAOC,EAAaC,GAC9C,IAAMC,EAAsC,EACxCC,GAAY,EACZC,GAAW,EACXC,GAAS,EAEPC,EAAe,EACnB,QAAWJ,EAAKV,EAAA,QAAgB,WAC9Ba,GAAS,EACJD,GACHJ,QA2BN,OAtBIE,EAAIhxJ,KAAO,MACbkxJ,GAAW,EACXF,EACG3qC,SACA39H,MAAK,WACAuoK,GACFH,OAGHl1J,OAAM,SAAUzG,GACX87J,IACEE,EACFL,IAEAC,SAKRK,EAAavrK,MAAK,QAAWmrK,EAAKV,EAAA,QAAiBS,IAG9C,WACLE,GAAY,EACZG,EAAantK,QAAQ,QA3KzB,YASE,WACEksK,EACAC,EACA7yD,EACAv9F,EACAqxJ,EACAC,GANF,MAQE,YAAMnB,EAAQC,EAAY7yD,EAAYg0D,EAAA,SAAgB,YAMtD,EAAKC,KAAOxxJ,EAMZ,EAAKyxJ,OAAS,IAAIC,MACE,OAAhBL,IACF,EAAKI,OAAOJ,YAAcA,GAO5B,EAAKM,UAAY,KAMjB,EAAKhoI,MAAQ4nI,EAAA,OAMb,EAAKK,mBAAqBN,IAlDH,OAyDzB,YAAAd,SAAA,WACE,OAAO/uK,KAAKgwK,QAQd,YAAAI,kBAAA,WACEpwK,KAAKkoC,MAAQ4nI,EAAA,QACb9vK,KAAKqwK,iBACLrwK,KAAKmpD,WAQP,YAAAmnH,iBAAA,gBAC0BryK,IAApB+B,KAAK2uK,aACP3uK,KAAK2uK,YAAa,QAAU3uK,KAAK0uK,QAAU1uK,KAAKgwK,OAAOn0K,QAEzDmE,KAAKkoC,MAAQ4nI,EAAA,SACb9vK,KAAKqwK,iBACLrwK,KAAKmpD,WASP,YAAA4+E,KAAA,WACM/nI,KAAKkoC,OAAS4nI,EAAA,QAAmB9vK,KAAKkoC,OAAS4nI,EAAA,UACjD9vK,KAAKkoC,MAAQ4nI,EAAA,UACb9vK,KAAKmpD,UACLnpD,KAAKmwK,mBAAmBnwK,KAAMA,KAAK+vK,MACnC/vK,KAAKkwK,UAAYf,EACfnvK,KAAKgwK,OACLhwK,KAAKswK,iBAAiBr5J,KAAKjX,MAC3BA,KAAKowK,kBAAkBn5J,KAAKjX,SAQlC,YAAAuwK,SAAA,SAASnB,GACPpvK,KAAKgwK,OAASZ,EACdpvK,KAAK2uK,YAAa,QAAU3uK,KAAK0uK,QAAU1uK,KAAKgwK,OAAOn0K,QAQzD,YAAAw0K,eAAA,WACMrwK,KAAKkwK,YACPlwK,KAAKkwK,YACLlwK,KAAKkwK,UAAY,OAzHvB,CAA2B,iDCrB3B,SACEM,KAAM,EACNC,QAAS,EACTC,OAAQ,EACRttK,MAAO,EACPutK,MAAO,kiBCqJT,QAzJA,YASE,WACEC,EACA1oI,EACA3pB,EACAqxJ,EACAiB,EACA9E,GANF,MAQE,YAAM6E,EAAW1oI,EAAO6jI,IAAY,YAMpC,EAAK+E,aAAelB,EAQpB,EAAKG,KAAOxxJ,EAEZ,EAAK1a,IAAM0a,EAMX,EAAKyxJ,OAAS,IAAIC,MACE,OAAhBL,IACF,EAAKI,OAAOJ,YAAcA,GAO5B,EAAKM,UAAY,KAMjB,EAAKa,kBAAoBF,IAsF7B,OA5IwB,OA8DtB,YAAA9B,SAAA,WACE,OAAO/uK,KAAKgwK,QAOd,YAAAO,SAAA,SAAS/7I,GACPx0B,KAAKgwK,OAASx7I,EACdx0B,KAAKkoC,MAAQ,WACbloC,KAAKqwK,iBACLrwK,KAAKmpD,WAQP,YAAAinH,kBAAA,WAgEF,IACQ55I,EAhEJx2B,KAAKkoC,MAAQ,UACbloC,KAAKqwK,iBACLrwK,KAAKgwK,SA8DDx5I,GAAM,QAAsB,EAAG,IACjCmxB,UAAY,gBAChBnxB,EAAIqvC,SAAS,EAAG,EAAG,EAAG,GACfrvC,EAAIi9B,QAhETzzD,KAAKmpD,WAQP,YAAAmnH,iBAAA,WACE,IAAMlB,EAAyCpvK,KAAW,OACtDovK,EAAM4B,cAAgB5B,EAAM6B,cAC9BjxK,KAAKkoC,MAAQ,WAEbloC,KAAKkoC,MAAQ,UAEfloC,KAAKqwK,iBACLrwK,KAAKmpD,WAOP,YAAA4+E,KAAA,WACM/nI,KAAKkoC,OAAS,YAChBloC,KAAKkoC,MAAQ,SACbloC,KAAKgwK,OAAS,IAAIC,MACQ,OAAtBjwK,KAAK8wK,eACP9wK,KAAKgwK,OAAOJ,YAAc5vK,KAAK8wK,eAG/B9wK,KAAKkoC,OAAS,WAChBloC,KAAKkoC,MAAQ,YACbloC,KAAKmpD,UACLnpD,KAAK+wK,kBAAkB/wK,KAAMA,KAAK+vK,MAClC/vK,KAAKkwK,WAAY,OACflwK,KAAKgwK,OACLhwK,KAAKswK,iBAAiBr5J,KAAKjX,MAC3BA,KAAKowK,kBAAkBn5J,KAAKjX,SAUlC,YAAAqwK,eAAA,WACMrwK,KAAKkwK,YACPlwK,KAAKkwK,YACLlwK,KAAKkwK,UAAY,OAGvB,EA5IA,CAAwB,4kBCwPxB,SAASgB,EAAgBhoK,EAAKioK,GAC5B,aAGF,QA3OA,YAIE,WAAYjoK,GAAZ,MACE,cAAO,YAMP,EAAKkoK,KAAOloK,IAsNhB,OAjO0B,OAmBxB,YAAAmoK,oBAAA,SAAoBhzK,EAAM8yK,IACxB,WAOF,YAAAG,oBAAA,SAAoBH,GAClB,IAAMI,EAAYJ,EAAWI,UACvBC,EAA6BL,EAAWK,2BACxCC,EAA6BN,EAAWM,4BAE9C,QACED,EACAL,EAAW18I,KAAK,GAAK,EACrB08I,EAAW18I,KAAK,GAAK,EACrB,EAAI88I,EAAU5C,YACb,EAAI4C,EAAU5C,YACd4C,EAAU3tH,UACV2tH,EAAUlxH,OAAO,IACjBkxH,EAAUlxH,OAAO,KAGpB,QAAYoxH,EAA4BD,IAkB1C,YAAAE,2BAAA,SACEC,EACAR,EACAS,EACAC,EACAr2J,EACAw+E,EACA83E,EACAC,GAEA,IAAI5qK,EACEoqK,EAAYJ,EAAWI,UAS7B,SAASG,EAA2BM,EAASC,EAASzqJ,EAAOm/F,GAC3D,OAAOnrG,EAAS7a,KAAKq5F,EAASi4E,EAASD,EAAUxqJ,EAAQ,KAAMm/F,GAGjE,IAAMurD,EAAaX,EAAUW,WAEvBC,GAAuB,QAAMR,EAAWxvK,QAAS+vK,GACjD55E,EAAU,CAAC,CAAC,EAAG,IACrB,GAAI45E,EAAWE,YAAcP,EAAc,CACzC,IAAMQ,EAAmBH,EAAWpD,YAC9BwD,GAAa,QAASD,GAC5B/5E,EAAQl0F,KAAK,EAAEkuK,EAAY,GAAI,CAACA,EAAY,IAQ9C,IALA,IAAMC,EAAcpB,EAAWqB,iBACzBC,EAAYF,EAAY/zK,OAExB46B,EAA4C,GAC5Cs5I,EAAW,GACRpzK,EAAI,EAAGA,EAAIg5F,EAAQ95F,OAAQc,IAClC,IAAK,IAAI6tD,EAAIslH,EAAY,EAAGtlH,GAAK,IAAKA,EAAG,CACvC,IAAMwlH,EAAaJ,EAAYplH,GACzB3lC,EAAQmrJ,EAAWnrJ,MACzB,GACEA,EAAMorJ,gBACN,OAAOD,EAAYpB,IACnBO,EAAYnxK,KAAKoxK,EAAUvqJ,GAC3B,CACA,IAAMqrJ,EAAgBrrJ,EAAMsrJ,cACtBn3K,EAAS6rB,EAAMurJ,YACrB,GAAIF,GAAiBl3K,EAAQ,CAC3B,IAAMksH,EAAclsH,EAAOq3K,WACvBb,EACAR,EACE,EAAWD,EAA2Bz6J,KAC1C,KACA07J,EAAWX,SAEbU,EAAS,GAAK7qD,EAAY,GAAKvvB,EAAQh5F,GAAG,GAC1CozK,EAAS,GAAK7qD,EAAY,GAAKvvB,EAAQh5F,GAAG,GAC1C6H,EAAS0rK,EAAcnB,2BACrBgB,EACAvB,EACAS,EACA,EACAx4I,GAGJ,GAAIjyB,EACF,OAAOA,GAKf,GAAuB,IAAnBiyB,EAAQ56B,OAAZ,CAGA,IAAM+yE,EAAQ,EAAIn4C,EAAQ56B,OAM1B,OALA46B,EAAQ52B,SAAQ,SAAC4vF,EAAG9yF,GAAM,OAAC8yF,EAAE6gF,YAAc3zK,EAAIiyE,KAC/Cn4C,EAAQ+L,MAAK,SAACS,EAAGp6B,GAAM,OAAAo6B,EAAEqtI,WAAaznK,EAAEynK,cACxC75I,EAAQx6B,MAAK,SAACwzF,GACZ,OAAQjrF,EAASirF,EAAE52E,SAAS42E,EAAE6/E,QAAS7/E,EAAE5qE,MAAO4qE,EAAEu0B,aAE7Cx/G,IAiBT,YAAA+rK,oBAAA,SAAoBrwG,EAAOsuG,EAAYS,EAAcp2J,EAAUs2J,GAC7D,OAAO,WAgBT,YAAAqB,uBAAA,SACExB,EACAR,EACAS,EACAC,EACAC,EACA93E,GAaA,YAAsB/7F,IAXH+B,KAAK0xK,2BACtBC,EACAR,EACAS,EACAC,EACA,KACA7xK,KACA8xK,EACA93E,IASJ,YAAAo5E,OAAA,WACE,OAAOpzK,KAAKoxK,MAQd,YAAAiC,YAAA,SAAYlC,IACV,WAOF,YAAAmC,wBAAA,SAAwBnC,GAClB,sBACFA,EAAWoC,oBAAoBnvK,KAAK8sK,IAG1C,EAjOA,CAA0BsC,EAAA,gjBC8K1B,QApLA,YAIE,WAAYtqK,GAAZ,MACE,YAAMA,IAAI,KAKV,EAAKuqK,wBAAyB,QAC5B,KACAC,EAAA,iBACAxqK,EAAIyqK,WAAW18J,KAAK/N,IAOtB,EAAK0qK,SAAW3uK,SAASkS,cAAc,OACvC,IAAMuwC,EAAQ,EAAKksH,SAASlsH,MAC5BA,EAAMuF,SAAW,WACjBvF,EAAM9rD,MAAQ,OACd8rD,EAAM7rD,OAAS,OACf6rD,EAAMmsH,OAAS,IAEf,EAAKD,SAAS/2I,UAAY,KAAqB,aAE/C,IAAMo5B,EAAY/sD,EAAI4qK,qBACtB79G,EAAUsqE,aAAa,EAAKqzC,SAAU39G,EAAUuqE,YAAc,MAM9D,EAAKuzC,UAAY,GAMjB,EAAKC,kBAAmB,IAwI5B,OAlLmC,OAiDjC,YAAA3C,oBAAA,SAAoBhzK,EAAM8yK,GACxB,IAAMjoK,EAAMlJ,KAAKozK,SACjB,GAAIlqK,EAAI+qK,YAAY51K,GAAO,CACzB,IAAM,EAAQ,IAAI,IAAYA,OAAMJ,EAAWkzK,GAC/CjoK,EAAIkgH,cAAc,KAItB,YAAA+jD,gBAAA,YACE,QAAcntK,KAAKyzK,wBACnBzzK,KAAK4zK,SAASj3I,WAAWllB,YAAYzX,KAAK4zK,UAC1C,YAAMzG,gBAAe,YAOvB,YAAAkG,YAAA,SAAYlC,GACV,GAAKA,EAAL,CAQAnxK,KAAKsxK,oBAAoBH,GACzBnxK,KAAKqxK,oBAAoB,eAA4BF,GAErD,IAAMqB,EAAmBrB,EAAWqB,iBAAiBrtI,MAAK,SAAUS,EAAGp6B,GACrE,OAAOo6B,EAAEiuI,OAASroK,EAAEqoK,UAEhBtC,EAAYJ,EAAWI,UAE7BvxK,KAAK+zK,UAAUv1K,OAAS,EAMxB,IAFA,IAAM01K,EAAkB,GACpBC,EAAkB,KACb70K,EAAI,EAAG8sK,EAAKoG,EAAiBh0K,OAAQc,EAAI8sK,IAAM9sK,EAAG,CACzD,IAAMqzK,EAAaH,EAAiBlzK,GACpC6xK,EAAWiD,WAAa90K,EAExB,IAAMkoB,EAAQmrJ,EAAWnrJ,MACnB6sJ,EAAc7sJ,EAAM8sJ,iBAC1B,KACG,OAAO3B,EAAYpB,IACnB8C,GAAe,WACdA,GAAe,cAEjB7sJ,EAAM+sJ,eALR,CASA,IAAM//I,EAAUhN,EAAM8oD,OAAO6gG,EAAYgD,GACpC3/I,IAGDA,IAAY2/I,IACdn0K,KAAK+zK,UAAU3vK,KAAKowB,GACpB2/I,EAAkB3/I,GAEhB,iBAAkBhN,GACpB0sJ,EAAgB9vK,KAC0C,KAI9D,IAAS9E,EAAI40K,EAAgB11K,OAAS,EAAGc,GAAK,IAAKA,EACjD40K,EAAgB50K,GAAGk1K,gBAAgBrD,IAGrC,QAAgBnxK,KAAK4zK,SAAU5zK,KAAK+zK,WAEpC/zK,KAAKqxK,oBAAoB,gBAA6BF,GAEjDnxK,KAAKg0K,mBACRh0K,KAAK4zK,SAASlsH,MAAMuD,QAAU,GAC9BjrD,KAAKg0K,kBAAmB,GAG1Bh0K,KAAKszK,wBAAwBnC,QA/DvBnxK,KAAKg0K,mBACPh0K,KAAK4zK,SAASlsH,MAAMuD,QAAU,OAC9BjrD,KAAKg0K,kBAAmB,IA6E9B,YAAAd,oBAAA,SAAoBrwG,EAAOsuG,EAAYS,EAAcp2J,EAAUs2J,GAM7D,IALA,IAAMP,EAAYJ,EAAWI,UAEvBgB,EAAcpB,EAAWqB,iBAGtBlzK,EAFSizK,EAAY/zK,OAEL,EAAGc,GAAK,IAAKA,EAAG,CACvC,IAAMqzK,EAAaJ,EAAYjzK,GACzBkoB,EAAQmrJ,EAAWnrJ,MACzB,GACEA,EAAMorJ,gBACN,OAAOD,EAAYpB,IACnBO,EAAYtqJ,GACZ,CACA,IACM/b,EADgB+b,EAAMsrJ,cACD2B,eACzB5xG,EACAsuG,EACAS,GAEF,GAAInmK,EAAM,CACR,IAAMtE,EAASqU,EAASgM,EAAO/b,GAC/B,GAAItE,EACF,OAAOA,MAOnB,EAlLA,CAAmC6iC,6hBCgBnC,QAzBA,YAME,WAAY3rC,EAAM6K,EAAKwrK,GAAvB,MACE,YAAMr2K,IAAK,YAOX,EAAK6K,IAAMA,EAOX,EAAKioK,gBAAgClzK,IAAnBy2K,EAA+BA,EAAiB,OAEtE,OAvBuB,OAuBvB,EAvBA,CAAuB,oeCkGvB,QAjGA,YAQE,WAAYr2K,EAAM6K,EAAKyrK,EAAeC,EAAcF,GAApD,MACE,YAAMr2K,EAAM6K,EAAKwrK,IAAe,YAQhC,EAAKC,cAAgBA,EAMrB,EAAKE,OAAS,KAMd,EAAKC,YAAc,KASnB,EAAKC,cAA4B92K,IAAjB22K,GAA6BA,IAyDjD,OA/F8B,OA8C5B,sBAAI,oBAAK,KAAT,WAIE,OAHK50K,KAAK60K,SACR70K,KAAK60K,OAAS70K,KAAKkJ,IAAI8rK,cAAch1K,KAAK20K,gBAErC30K,KAAK60K,YAEd,SAAUhyG,GACR7iE,KAAK60K,OAAShyG,mCAShB,sBAAI,yBAAU,KAAd,WAIE,OAHK7iE,KAAK80K,cACR90K,KAAK80K,YAAc90K,KAAKkJ,IAAI+rK,uBAAuBj1K,KAAK6iE,QAEnD7iE,KAAK80K,iBAEd,SAAenD,GACb3xK,KAAK80K,YAAcnD,mCAQrB,YAAAvU,eAAA,WACE,YAAMA,eAAc,WAChB,mBAAoBp9J,KAAK20K,eACH30K,KAAkB,cAAEo9J,kBAShD,YAAAC,gBAAA,WACE,YAAMA,gBAAe,WACjB,oBAAqBr9J,KAAK20K,eACJ30K,KAAkB,cAAEq9J,mBAGlD,EA/FA,CAA8B,GCF9B,GAOE6X,YAAa,cAObC,MAAO,UAOPC,SAAU,aAOVC,YAAa,cAQbC,YAAa,cAEbC,YAAa,cACbC,UAAW,YACXC,YAAa,cACbC,WAAY,aACZC,aAAc,eACdC,aAAc,eACdC,cAAe,iBC7CjB,EAEe,+fC8Xf,QA3XA,YAKE,WAAY3sK,EAAK4sK,GAAjB,MACE,YAAM5sK,IAAI,KAOV,EAAKkoK,KAAOloK,EAMZ,EAAK6sK,gBAML,EAAKC,gBAAiB,EAMtB,EAAKC,WAAY,EAMjB,EAAKC,kBAAoB,GAMzB,EAAKC,oBAAmCl4K,IAAlB63K,EAA8B,EAAIA,EAQxD,EAAKM,MAAQ,KAEb,IAAM5hJ,EAAU,EAAK48I,KAAK0C,qBAM1B,EAAKuC,gBAAkB,EAMvB,EAAKC,gBAAkB,GAEvB,EAAK1C,SAAWp/I,EAMhB,EAAK+hJ,yBAA0B,QAC7B/hJ,EACA,EACA,EAAKgiJ,mBACL,GAOF,EAAKC,0BAML,EAAKC,qBAAsB,QACzBliJ,ED/FS,cCiGT,EAAKmiJ,YACL,GAMF,EAAKC,sBAAwB,EAAKC,iBAAiB5/J,KAAK,GAExD,EAAK28J,SAAS37J,iBACZ,cACA,EAAK2+J,wBACL,MAA0B,CAAChiH,SAAS,MAgR1C,OAzXqC,OAkHnC,YAAAkiH,cAAA,SAAcC,GACZ,IAAIC,EAAW,IAAI,EACjB,QACAh3K,KAAKoxK,KACL2F,GAEF/2K,KAAKopH,cAAc4tD,QACU/4K,IAAzB+B,KAAK+1K,iBAEP9gK,aAAajV,KAAK+1K,iBAClB/1K,KAAK+1K,qBAAkB93K,EACvB+4K,EAAW,IAAI,EACb,WACAh3K,KAAKoxK,KACL2F,GAEF/2K,KAAKopH,cAAc4tD,IAGnBh3K,KAAK+1K,gBAAkB/gK,WAErB,WACEhV,KAAK+1K,qBAAkB93K,EACvB,IAAM+4K,EAAW,IAAI,EACnB,cACAh3K,KAAKoxK,KACL2F,GAEF/2K,KAAKopH,cAAc4tD,IACnB//J,KAAKjX,MACP,MAYN,YAAAi3K,sBAAA,SAAsBF,GACpB,IAAM75K,EAAQ65K,EAGZ75K,EAAMmB,MAAQ,aACdnB,EAAMmB,MAAQ,uBAEP2B,KAAKs2K,gBAAgBp5K,EAAMg6K,WACzBh6K,EAAMmB,MAAQ,gBACvB2B,KAAKs2K,gBAAgBp5K,EAAMg6K,YAAa,GAE1Cl3K,KAAKq2K,gBAAkBp6K,OAAOkQ,KAAKnM,KAAKs2K,iBAAiB93K,QAQ3D,YAAA24K,iBAAA,SAAiBJ,GACf/2K,KAAKi3K,sBAAsBF,GAC3B,IAAMC,EAAW,IAAI,EACnB,YACAh3K,KAAKoxK,KACL2F,GAEF/2K,KAAKopH,cAAc4tD,GASjBh3K,KAAKg2K,iBACJgB,EAASlc,mBACT96J,KAAKi2K,WACNj2K,KAAKo3K,qBAAqBL,IAE1B/2K,KAAK82K,cAAc92K,KAAKo2K,OAGG,IAAzBp2K,KAAKq2K,kBACPr2K,KAAKk2K,kBAAkB1zK,QAAQ,MAC/BxC,KAAKk2K,kBAAkB13K,OAAS,EAChCwB,KAAKi2K,WAAY,EACjBj2K,KAAKo2K,MAAQ,OAUjB,YAAAgB,qBAAA,SAAqBL,GACnB,OAA+B,IAAxBA,EAAalb,QAQtB,YAAA2a,mBAAA,SAAmBO,GACjB/2K,KAAKg2K,eAA0C,IAAzBh2K,KAAKq2K,gBAC3Br2K,KAAKi3K,sBAAsBF,GAC3B,IAAMC,EAAW,IAAI,EACnB,cACAh3K,KAAKoxK,KACL2F,GAMF,IAAK,IAAMz6J,KAJXtc,KAAKopH,cAAc4tD,GAGnBh3K,KAAKo2K,MAAoC,GAClBW,EAAc,CACnC,IAAM56K,EAAQ46K,EAAaz6J,GAC3Btc,KAAKo2K,MAAM95J,GAA6B,mBAAVngB,EAAuB,KAAOA,EAG9D,GAAsC,IAAlC6D,KAAKk2K,kBAAkB13K,OAAc,CACvC,IAAMwoC,EAAMhnC,KAAKoxK,KAAKiG,mBACtBr3K,KAAKk2K,kBAAkB9xK,MACrB,QACE4iC,EACA,cACAhnC,KAAKs3K,mBACLt3K,OAEF,QAAOgnC,EAAK,YAA+BhnC,KAAKm3K,iBAAkBn3K,OAclE,QACEA,KAAK4zK,SACL,gBACA5zK,KAAKm3K,iBACLn3K,OAGAA,KAAK4zK,SAASlzB,aAAe1gJ,KAAK4zK,SAASlzB,gBAAkB15G,GAC/DhnC,KAAKk2K,kBAAkB9xK,MACrB,QACEpE,KAAK4zK,SAASlzB,cACd,YACA1gJ,KAAKm3K,iBACLn3K,SAYV,YAAAs3K,mBAAA,SAAmBP,GAIjB,GAAI/2K,KAAKu3K,UAAUR,GAAe,CAChC/2K,KAAKi2K,WAAY,EACjB,IAAMe,EAAW,IAAI,EACnB,cACAh3K,KAAKoxK,KACL2F,EACA/2K,KAAKi2K,WAEPj2K,KAAKopH,cAAc4tD,KAWvB,YAAAL,YAAA,SAAYI,GACV/2K,KAAKy2K,0BAA4BM,EACjC,IAAMhC,KAAc/0K,KAAKo2K,QAASp2K,KAAKu3K,UAAUR,IACjD/2K,KAAKopH,cACH,IAAI,EAAgB2tD,EAAa14K,KAAM2B,KAAKoxK,KAAM2F,EAAchC,KAYpE,YAAA8B,iBAAA,SAAiB35K,GAGf,IAAMy3K,EAAgB30K,KAAKy2K,0BAEvB9B,IAAiBA,EAAc7Z,kBACJ,kBAArB59J,EAAMgtE,aAAiD,IAArBhtE,EAAMgtE,YAEhDhtE,EAAMkgK,kBAUV,YAAAma,UAAA,SAAUR,GACR,OACE/2K,KAAKi2K,WACLhpK,KAAKknB,IAAI4iJ,EAAah8D,QAAU/6G,KAAKo2K,MAAMr7D,SACzC/6G,KAAKm2K,gBACPlpK,KAAKknB,IAAI4iJ,EAAa/7D,QAAUh7G,KAAKo2K,MAAMp7D,SAAWh7G,KAAKm2K,gBAO/D,YAAAhJ,gBAAA,WACMntK,KAAK02K,uBACP,QAAc12K,KAAK02K,qBACnB12K,KAAK02K,oBAAsB,MAE7B12K,KAAK4zK,SAASviJ,oBACZ,cACArxB,KAAK42K,uBAGH52K,KAAKu2K,2BACP,QAAcv2K,KAAKu2K,yBACnBv2K,KAAKu2K,wBAA0B,MAGjCv2K,KAAKk2K,kBAAkB1zK,QAAQ,MAC/BxC,KAAKk2K,kBAAkB13K,OAAS,EAEhCwB,KAAK4zK,SAAW,KAChB,YAAMzG,gBAAe,YAEzB,EAzXA,CAAqCqK,EAAA,iBCNrC,QACc,aADd,EAEQ,OAFR,EAGU,SAHV,EAIQ,+BCFKC,EAAOjmJ,EAAAA,EA4PpB,QA9OA,WAKE,WAAYkmJ,EAAkBC,GAK5B33K,KAAK43K,kBAAoBF,EAMzB13K,KAAK63K,aAAeF,EAMpB33K,KAAK83K,UAAY,GAMjB93K,KAAK+3K,YAAc,GAMnB/3K,KAAKg4K,gBAAkB,GA0M3B,OApME,YAAAptJ,MAAA,WACE5qB,KAAK83K,UAAUt5K,OAAS,EACxBwB,KAAK+3K,YAAYv5K,OAAS,GAC1B,QAAMwB,KAAKg4K,kBAOb,YAAAC,QAAA,WACE,IAAMr+H,EAAW55C,KAAK83K,UAChBI,EAAal4K,KAAK+3K,YAClBvjJ,EAAUolB,EAAS,GACF,GAAnBA,EAASp7C,QACXo7C,EAASp7C,OAAS,EAClB05K,EAAW15K,OAAS,IAEpBo7C,EAAS,GAAKA,EAASv3C,MACvB61K,EAAW,GAAKA,EAAW71K,MAC3BrC,KAAKm4K,QAAQ,IAEf,IAAMC,EAAap4K,KAAK63K,aAAarjJ,GAErC,cADOx0B,KAAKg4K,gBAAgBI,GACrB5jJ,GAQT,YAAA6jJ,QAAA,SAAQ7jJ,IACN,SAASx0B,KAAK63K,aAAarjJ,KAAYx0B,KAAKg4K,iBAAkB,IAC9D,IAAMM,EAAWt4K,KAAK43K,kBAAkBpjJ,GACxC,OAAI8jJ,GAAYb,IACdz3K,KAAK83K,UAAU1zK,KAAKowB,GACpBx0B,KAAK+3K,YAAY3zK,KAAKk0K,GACtBt4K,KAAKg4K,gBAAgBh4K,KAAK63K,aAAarjJ,KAAY,EACnDx0B,KAAKu4K,UAAU,EAAGv4K,KAAK83K,UAAUt5K,OAAS,IACnC,IAQX,YAAAg6K,SAAA,WACE,OAAOx4K,KAAK83K,UAAUt5K,QASxB,YAAAi6K,mBAAA,SAAmBjtJ,GACjB,OAAe,EAARA,EAAY,GASrB,YAAAktJ,oBAAA,SAAoBltJ,GAClB,OAAe,EAARA,EAAY,GASrB,YAAAmtJ,gBAAA,SAAgBntJ,GACd,OAAQA,EAAQ,GAAM,GAOxB,YAAAotJ,SAAA,WACE,IAAIt5K,EACJ,IAAKA,GAAKU,KAAK83K,UAAUt5K,QAAU,GAAK,EAAGc,GAAK,EAAGA,IACjDU,KAAKm4K,QAAQ74K,IAOjB,YAAAu5K,QAAA,WACE,OAAiC,IAA1B74K,KAAK83K,UAAUt5K,QAOxB,YAAAs6K,YAAA,SAAYj1K,GACV,OAAOA,KAAO7D,KAAKg4K,iBAOrB,YAAAe,SAAA,SAASvkJ,GACP,OAAOx0B,KAAK84K,YAAY94K,KAAK63K,aAAarjJ,KAO5C,YAAA2jJ,QAAA,SAAQ3sJ,GAQN,IAPA,IAAMouB,EAAW55C,KAAK83K,UAChBI,EAAal4K,KAAK+3K,YAClBhhI,EAAQ6C,EAASp7C,OACjBg2B,EAAUolB,EAASpuB,GACnB8sJ,EAAWJ,EAAW1sJ,GACtBgzD,EAAahzD,EAEZA,EAAQurB,GAAS,GAAG,CACzB,IAAMiiI,EAASh5K,KAAKy4K,mBAAmBjtJ,GACjCytJ,EAASj5K,KAAK04K,oBAAoBltJ,GAElC0tJ,EACJD,EAASliI,GAASmhI,EAAWe,GAAUf,EAAWc,GAC9CC,EACAD,EAENp/H,EAASpuB,GAASouB,EAASs/H,GAC3BhB,EAAW1sJ,GAAS0sJ,EAAWgB,GAC/B1tJ,EAAQ0tJ,EAGVt/H,EAASpuB,GAASgJ,EAClB0jJ,EAAW1sJ,GAAS8sJ,EACpBt4K,KAAKu4K,UAAU/5F,EAAYhzD,IAQ7B,YAAA+sJ,UAAA,SAAU/5F,EAAYhzD,GAMpB,IALA,IAAMouB,EAAW55C,KAAK83K,UAChBI,EAAal4K,KAAK+3K,YAClBvjJ,EAAUolB,EAASpuB,GACnB8sJ,EAAWJ,EAAW1sJ,GAErBA,EAAQgzD,GAAY,CACzB,IAAM26F,EAAcn5K,KAAK24K,gBAAgBntJ,GACzC,KAAI0sJ,EAAWiB,GAAeb,GAK5B,MAJA1+H,EAASpuB,GAASouB,EAASu/H,GAC3BjB,EAAW1sJ,GAAS0sJ,EAAWiB,GAC/B3tJ,EAAQ2tJ,EAKZv/H,EAASpuB,GAASgJ,EAClB0jJ,EAAW1sJ,GAAS8sJ,GAMtB,YAAAc,aAAA,WACE,IAKI5kJ,EAASl1B,EAAGg5K,EALVZ,EAAmB13K,KAAK43K,kBACxBh+H,EAAW55C,KAAK83K,UAChBI,EAAal4K,KAAK+3K,YACpBvsJ,EAAQ,EACNqyE,EAAIjkD,EAASp7C,OAEnB,IAAKc,EAAI,EAAGA,EAAIu+F,IAAKv+F,GAEnBg5K,EAAWZ,EADXljJ,EAAUolB,EAASt6C,MAEHm4K,SACPz3K,KAAKg4K,gBAAgBh4K,KAAK63K,aAAarjJ,KAE9C0jJ,EAAW1sJ,GAAS8sJ,EACpB1+H,EAASpuB,KAAWgJ,GAGxBolB,EAASp7C,OAASgtB,EAClB0sJ,EAAW15K,OAASgtB,EACpBxrB,KAAK44K,YAET,EA5OA,2eCoGA,QAhHA,YAKE,WAAYS,EAAsBC,GAAlC,MACE,aAKE,SAAU9kJ,GACR,OAAO6kJ,EAAqBp5K,MAAM,KAAMu0B,MAM1C,SAAUA,GACR,OAAmDA,EAAQ,GAAI+kJ,aAElE,YAGD,EAAKC,uBAAyB,EAAKC,iBAAiBxiK,KAAK,GAMzD,EAAKyiK,oBAAsBJ,EAM3B,EAAKK,cAAgB,EAMrB,EAAKC,kBAAoB,KAoE7B,OA9GwB,OAiDtB,YAAAvB,QAAA,SAAQ7jJ,GACN,IAAMm7D,EAAQ,YAAM0oF,QAAO,UAAC7jJ,GAK5B,OAJIm7D,GACWn7D,EAAQ,GAChBvc,iBAAiB,WAAkBjY,KAAKw5K,wBAExC7pF,GAMT,YAAAkqF,gBAAA,WACE,OAAO75K,KAAK25K,eAOd,YAAAF,iBAAA,SAAiBv8K,GACf,IAAM48K,EAAmD58K,EAAY,OAC/DgrC,EAAQ4xI,EAAK5K,WACnB,GACEhnI,IAAU6xI,EAAA,UACV7xI,IAAU6xI,EAAA,SACV7xI,IAAU6xI,EAAA,QACV,CACAD,EAAKzoJ,oBAAoB,WAAkBrxB,KAAKw5K,wBAChD,IAAMQ,EAAUF,EAAKP,SACjBS,KAAWh6K,KAAK45K,2BACX55K,KAAK45K,kBAAkBI,KAC5Bh6K,KAAK25K,eAET35K,KAAK05K,wBAQT,YAAAO,cAAA,SAAcC,EAAiBC,GAG7B,IAFA,IACWL,EAAME,EADbI,EAAW,EAGbp6K,KAAK25K,cAAgBO,GACrBE,EAAWD,GACXn6K,KAAKw4K,WAAa,GAGlBwB,GADAF,EAAmD95K,KAAKi4K,UAAU,IACnDsB,SACPO,EAAK5K,aACC6K,EAAA,QAAoBC,KAAWh6K,KAAK45K,oBAChD55K,KAAK45K,kBAAkBI,IAAW,IAChCh6K,KAAK25K,gBACLS,EACFN,EAAK/xC,SAIb,EA9GA,CAAwB,6gBC6IxB,SAASsyC,GAAuB7yJ,GAC1BA,aAAiB8yJ,EAAA,EACnB9yJ,EAAM+yJ,eAAe,MAGnB/yJ,aAAiB,KACnBA,EAAMgzJ,YAAYh4K,QAAQ63K,IAQ9B,SAASI,GAAoBjzJ,EAAOte,GAClC,GAAIse,aAAiB8yJ,EAAA,EACnB9yJ,EAAM+yJ,eAAerxK,QAGvB,GAAIse,aAAiB,IAEnB,IADA,IAAMsrD,EAAStrD,EAAMgzJ,YAAY/N,WACxBntK,EAAI,EAAG8sK,EAAKt5F,EAAOt0E,OAAQc,EAAI8sK,IAAM9sK,EAC5Cm7K,GAAoB3nG,EAAOxzE,GAAI4J,GAarC,mBAIE,WAAYzL,GAAZ,MACE,cAAO,KAKP,EAAK8/H,GAKL,EAAKpsG,KAKL,EAAK66I,GAEL,IAAM0O,EAm/CV,SAA+Bj9K,GAI7B,IAAIk9K,EAAsB,UACU18K,IAAhCR,EAAQk9K,sBACVA,EACyC,iBAAhCl9K,EAAQk9K,oBACX11K,SAASwpE,eAAehxE,EAAQk9K,qBAChCl9K,EAAQk9K,qBAMhB,IAcIC,EAaAC,EAcAC,EAzCE18K,EAAS,GAET28K,EACJt9K,EAAQq1E,QACiD,mBAA/Br1E,EAAc,OAAW,UACpBA,EAAc,OACzC,IAAI,IAAW,CAACq1E,OAAmCr1E,EAAc,SAkDvE,OAjDAW,EAA6B,WAAI28K,EAEjC38K,EAAyB,OAAIX,EAAQuQ,OAErC5P,EAAuB,KACrBX,EAAQu9K,gBAAgBC,EAAA,GAAOx9K,EAAQu9K,KAAO,IAAIC,EAAA,QAG3Bh9K,IAArBR,EAAQm9K,WACNt6K,MAAMiF,QAAQ9H,EAAQm9K,UACxBA,EAAW,IAAIM,EAAA,EAAWz9K,EAAQm9K,SAASz4K,WAE3C,OAC4D,mBAAhC1E,EAAgB,SAAU,SACpD,IAEFm9K,EAAsCn9K,EAAgB,gBAK7BQ,IAAzBR,EAAQo9K,eACNv6K,MAAMiF,QAAQ9H,EAAQo9K,cACxBA,EAAe,IAAIK,EAAA,EAAWz9K,EAAQo9K,aAAa14K,WAEnD,OAEI,mBADwB1E,EAAoB,aAAU,SAExD,IAEFo9K,EAA0Cp9K,EAAoB,oBAKzCQ,IAArBR,EAAQq9K,SACNx6K,MAAMiF,QAAQ9H,EAAQq9K,UACxBA,EAAW,IAAII,EAAA,EAAWz9K,EAAQq9K,SAAS34K,WAE3C,OAC4D,mBAAhC1E,EAAgB,SAAU,SACpD,IAEFq9K,EAAWr9K,EAAQq9K,UAGrBA,EAAW,IAAII,EAAA,EAGV,CACLN,SAAUA,EACVC,aAAcA,EACdF,oBAAqBA,EACrBG,SAAUA,EACV18K,OAAQA,GA/jDgB+8K,CAAsB19K,GAM9C,EAAK29K,gBAML,EAAKC,SAAU,EAGf,EAAKC,yBAA2B,EAAKC,mBAAmBtkK,KAAK,GAM7D,EAAKukK,sBACyBv9K,IAA5BR,EAAQg+K,gBAAgCh+K,EAAQg+K,gBAAkB,GAMpE,EAAK7M,iBACoB3wK,IAAvBR,EAAQq+G,WACJr+G,EAAQq+G,WACR,KAMN,EAAK4/D,yBAML,EAAKC,mBAKL,EAAKC,gBAA8C,WACjD57K,KAAK27K,wBAAqB19K,EAC1B+B,KAAK67K,aAAansK,KAAK4F,QACvB2B,KAAK,GAMP,EAAK6kK,6BAA8B,UAMnC,EAAKC,6BAA8B,UAMnC,EAAKC,YAAc,EAMnB,EAAKC,YAAc,KAOnB,EAAKC,gBAAkB,KAMvB,EAAKC,yBAA2B,KAMhC,EAAKC,uBAAyB,KAM9B,EAAKC,gCAAkC,KAMvC,EAAKC,UAAYr3K,SAASkS,cAAc,OACxC,EAAKmlK,UAAUz/I,UACb,eAAiB,iBAAkB73B,OAAS,YAAc,IAC5D,EAAKs3K,UAAU50H,MAAMuF,SAAW,WAChC,EAAKqvH,UAAU50H,MAAM61F,SAAW,SAChC,EAAK++B,UAAU50H,MAAM9rD,MAAQ,OAC7B,EAAK0gL,UAAU50H,MAAM7rD,OAAS,OAM9B,EAAK0gL,kBAAoBt3K,SAASkS,cAAc,OAChD,EAAKolK,kBAAkB70H,MAAMuF,SAAW,WACxC,EAAKsvH,kBAAkB70H,MAAMmsH,OAAS,IACtC,EAAK0I,kBAAkB70H,MAAM9rD,MAAQ,OACrC,EAAK2gL,kBAAkB70H,MAAM7rD,OAAS,OACtC,EAAK0gL,kBAAkB70H,MAAM80H,cAAgB,OAC7C,EAAKD,kBAAkB1/I,UAAY,sBACnC,EAAKy/I,UAAU/kK,YAAY,EAAKglK,mBAMhC,EAAKE,2BAA6Bx3K,SAASkS,cAAc,OACzD,EAAKslK,2BAA2B/0H,MAAMuF,SAAW,WACjD,EAAKwvH,2BAA2B/0H,MAAMmsH,OAAS,IAC/C,EAAK4I,2BAA2B/0H,MAAM9rD,MAAQ,OAC9C,EAAK6gL,2BAA2B/0H,MAAM7rD,OAAS,OAC/C,EAAK4gL,2BAA2B/0H,MAAM80H,cAAgB,OACtD,EAAKC,2BAA2B5/I,UAAY,gCAC5C,EAAKy/I,UAAU/kK,YAAY,EAAKklK,4BAMhC,EAAKC,wBAA0B,KAM/B,EAAKvG,eAAiB14K,EAAQq4K,cAM9B,EAAK6G,qBAAuBjC,EAAgBC,oBAM5C,EAAKiC,yBAA2B,KAMhC,EAAKhC,SAAWF,EAAgBE,UAAY,IAAIM,EAAA,EAMhD,EAAKL,aAAeH,EAAgBG,cAAgB,IAAIK,EAAA,EAMxD,EAAK2B,UAAYnC,EAAgBI,SAOjC,EAAKgC,gBAAkB,GAMvB,EAAKC,UAAY,KAMjB,EAAKC,qBAAuB,GAM5B,EAAKC,WAAa,IAAI,EACpB,EAAKC,gBAAgBjmK,KAAK,GAC1B,EAAKkmK,kBAAkBlmK,KAAK,IAG9B,EAAKy2J,kBACH0P,EACA,EAAKC,0BAEP,EAAK3P,kBAAkB0P,EAAkB,EAAKE,oBAC9C,EAAK5P,kBAAkB0P,EAAkB,EAAKG,oBAC9C,EAAK7P,kBAAkB0P,EAAoB,EAAKI,sBAIhD,EAAK3P,cAAc6M,EAAgBt8K,QAEnC,IAAM8K,EAAM,SACRzL,EAAQu9K,MAAUv9K,EAAQu9K,gBAAgBC,EAAA,IAC5Cx9K,EAAQu9K,KAAK/zK,MAAK,SAAUw2K,GAC1Bv0K,EAAIw0K,QAAQ,IAAIzC,EAAA,GAAKwC,OAIzB,EAAK7C,SAAS3iK,iBACZ0lK,EAAA,MAIA,SAAUzgL,GACRA,EAAMs3B,QAAQopJ,OAAO59K,OACrBiX,KAAK,IAGT,EAAK2jK,SAAS3iK,iBACZ0lK,EAAA,SAIA,SAAUzgL,GACRA,EAAMs3B,QAAQopJ,OAAO,OACrB3mK,KAAK,IAGT,EAAK4jK,aAAa5iK,iBAChB0lK,EAAA,MAIA,SAAUzgL,GACRA,EAAMs3B,QAAQopJ,OAAO59K,OACrBiX,KAAK,IAGT,EAAK4jK,aAAa5iK,iBAChB0lK,EAAA,SAIA,SAAUzgL,GACRA,EAAMs3B,QAAQopJ,OAAO,OACrB3mK,KAAK,IAGT,EAAK4lK,UAAU5kK,iBACb0lK,EAAA,MAIA,SAAUzgL,GACR8C,KAAK69K,oBAC4C3gL,EAAa,UAE9D+Z,KAAK,IAGT,EAAK4lK,UAAU5kK,iBACb0lK,EAAA,SAIA,SAAUzgL,GACR,IAGMJ,EAFJI,EAAa,QAEIkxK,aACRnwK,IAAPnB,UACKkD,KAAK88K,gBAAgBhgL,EAAGgD,YAEjC5C,EAAMs3B,QAAQopJ,OAAO,OACrB3mK,KAAK,IAGT,EAAK2jK,SAASp4K,QAKZ,SAAUs7K,GACRA,EAAQF,OAAO59K,OACfiX,KAAK,IAGT,EAAK4jK,aAAar4K,QAKhB,SAAUkpD,GACRA,EAAYkyH,OAAO59K,OACnBiX,KAAK,IAGT,EAAK4lK,UAAUr6K,QAAQ,EAAKq7K,oBAAoB5mK,KAAK,MA+qCzD,OAngD2B,QA2VzB,YAAA8mK,eAAA,WACE,MAAM,IAAIl9K,MAAM,oDAQlB,YAAAm9K,WAAA,SAAWF,GACT99K,KAAKi+K,cAAc75K,KAAK05K,IAY1B,YAAAI,eAAA,SAAexyH,GACb1rD,KAAKm+K,kBAAkB/5K,KAAKsnD,IAU9B,YAAA0yH,SAAA,SAAS52J,GACQxnB,KAAKq+K,gBAAgB7D,YAC7Bp2K,KAAKojB,IAOd,YAAA82J,gBAAA,SAAgBphL,GACdu9K,GAAoBv9K,EAAMsqB,MAAOxnB,OAQnC,YAAAu+K,WAAA,SAAWC,GACTx+K,KAAKy+K,cAAcr6K,KAAKo6K,IAQ1B,YAAAX,oBAAA,SAAoBW,GAClB,IAAM1hL,EAAK0hL,EAAQpQ,aACRnwK,IAAPnB,IACFkD,KAAK88K,gBAAgBhgL,EAAGgD,YAAc0+K,GAExCA,EAAQZ,OAAO59K,OAOjB,YAAAmtK,gBAAA,WACEntK,KAAK0+K,UAAU,MACf,YAAMvR,gBAAe,YAqBvB,YAAAwR,sBAAA,SAAsB97G,EAAOrnD,EAAUuwJ,GACrC,GAAK/rK,KAAKi8K,aAAgBj8K,KAAK+8K,UAA/B,CAGA,IAAMpL,EAAa3xK,KAAK4+K,+BAA+B/7G,GAEjD+uG,OACyB3zK,KAF/B8tK,OAA8B9tK,IAAhB8tK,EAA4BA,EAAc,IAE1C6F,aAA6B7F,EAAY6F,aAAe,EAChEE,OACwB7zK,IAA5B8tK,EAAY+F,YAA4B/F,EAAY+F,YAAc,KAC9DD,GAA4C,IAA7B9F,EAAY8F,aACjC,OAAO7xK,KAAK+8K,UAAUrL,2BACpBC,EACA3xK,KAAKi8K,YACLrK,EACAC,EACAr2J,EACA,KACAs2J,EACA,QAYJ,YAAA+M,mBAAA,SAAmBh8G,EAAOkpG,GACxB,IAAM+S,EAAW,GAQjB,OAPA9+K,KAAK2+K,sBACH97G,GACA,SAAUovG,GACR6M,EAAS16K,KAAK6tK,KAEhBlG,GAEK+S,GAQT,YAAAC,aAAA,WACE,IAAMjsG,EAAS,GAWf,OAVA,SAASksG,EAAcjE,GACrBA,EAAWv4K,SAAQ,SAAUglB,GACvBA,aAAiB,IACnBw3J,EAAcx3J,EAAMgzJ,aAEpB1nG,EAAO1uE,KAAKojB,MAIlBw3J,CAAch/K,KAAKw6K,aACZ1nG,GA+BT,YAAAogG,oBAAA,SAAoBrwG,EAAOrnD,EAAUuwJ,GACnC,GAAK/rK,KAAKi8K,aAAgBj8K,KAAK+8K,UAA/B,CAGA,IAAMt/K,EAAUsuK,GAAe,GACzB6F,OACqB3zK,IAAzBR,EAAQm0K,aAA6Bn0K,EAAQm0K,aAAe,EACxDE,EAAcr0K,EAAQq0K,aAAe,KAC3C,OAAO9xK,KAAK+8K,UAAU7J,oBACpBrwG,EACA7iE,KAAKi8K,YACLrK,EACAp2J,EACAs2J,KAYJ,YAAAmN,kBAAA,SAAkBp8G,EAAOkpG,GACvB,IAAK/rK,KAAKi8K,cAAgBj8K,KAAK+8K,UAC7B,OAAO,EAET,IAAMpL,EAAa3xK,KAAK4+K,+BAA+B/7G,GAEjDivG,OACwB7zK,KAF9B8tK,OAA8B9tK,IAAhB8tK,EAA4BA,EAAc,IAE1C+F,YAA4B/F,EAAY+F,YAAc,KAC9DF,OACyB3zK,IAA7B8tK,EAAY6F,aAA6B7F,EAAY6F,aAAe,EAChEC,GAA4C,IAA7B9F,EAAY8F,aACjC,OAAO7xK,KAAK+8K,UAAU5J,uBACpBxB,EACA3xK,KAAKi8K,YACLrK,EACAC,EACAC,EACA,OAUJ,YAAAoN,mBAAA,SAAmBhiL,GACjB,OAAO8C,KAAKi1K,uBAAuBj1K,KAAKg1K,cAAc93K,KAQxD,YAAAiiL,2BAAA,SAA2BjiL,GACzB,OAAO8C,KAAK4+K,+BAA+B5+K,KAAKg1K,cAAc93K,KAShE,YAAA83K,cAAA,SAAc93K,GACZ,IAAMkiL,EAAmBp/K,KAAKs8K,UAAUxhE,wBAClCvzB,EAEJ,mBAAoBrqF,EACU,EAAQmiL,eAAe,GACvB,EAEhC,MAAO,CACL93F,EAAcwzB,QAAUqkE,EAAiB7lI,KACzCguC,EAAcyzB,QAAUokE,EAAiBhmI,MAa7C,YAAA2mC,UAAA,WACE,OACE//E,KAAKka,IAAIkjK,IAWb,YAAAkC,iBAAA,WACE,IAAMtxK,EAAShO,KAAK+/E,YACpB,YAAe9hF,IAAX+P,EACuB,iBAAXA,EACV/I,SAASwpE,eAAezgE,GACxBA,EAEG,MAWX,YAAAinK,uBAAA,SAAuBpyG,GACrB,OAAO,SACL7iE,KAAK4+K,+BAA+B/7G,GACpC7iE,KAAKu/K,UAAUC,kBAUnB,YAAAZ,+BAAA,SAA+B/7G,GAC7B,IAAMsuG,EAAanxK,KAAKi8K,YACxB,OAAK9K,GAGI,QACLA,EAAWM,2BACX5uG,EAAM1gE,SAJD,MAeX,YAAA87K,YAAA,WACE,OAAOj+K,KAAK46K,UASd,YAAA6D,YAAA,WACE,OAAOz+K,KAAK68K,WAWd,YAAA4C,eAAA,SAAe3iL,GACb,IAAM0hL,EAAUx+K,KAAK88K,gBAAgBhgL,EAAGgD,YACxC,YAAmB7B,IAAZugL,EAAwBA,EAAU,MAW3C,YAAAL,gBAAA,WACE,OAAOn+K,KAAK66K,cASd,YAAAwD,cAAA,WACE,OAAkCr+K,KAAKka,IAAIkjK,IAQ7C,YAAAsC,UAAA,SAAU5sG,GACR,IAAM6sG,EAAQ3/K,KAAKq+K,gBACnB,GAAIvrG,aAAkBooG,EAAA,EACpByE,EAAMD,UAAU5sG,OADlB,CAKA,IAAM8sG,EAAaD,EAAMnF,YACzBoF,EAAWh1J,QACXg1J,EAAWpT,OAAO15F,KAQpB,YAAA0nG,UAAA,WAEE,OADex6K,KAAKq+K,gBAAgB7D,aAOtC,YAAAqF,qBAAA,WAEE,IADA,IAAMrN,EAAmBxyK,KAAKq+K,gBAAgByB,sBACrCxgL,EAAI,EAAG8sK,EAAKoG,EAAiBh0K,OAAQc,EAAI8sK,IAAM9sK,EAAG,CACzD,IAAM4oC,EAAQsqI,EAAiBlzK,GAC/B,GAAK4oC,EAAMwG,QAAX,CAGA,IAAMqxI,EAAW73I,EAAM1gB,MAAMsrJ,cAC7B,GAAIiN,IAAaA,EAASC,MACxB,OAAO,EAET,IAAMrkL,EACJusC,EAAW,MACX6qI,YACF,GAAIp3K,GAAUA,EAAOghK,QACnB,OAAO,GAGX,OAAO,GAUT,YAAAsjB,uBAAA,SAAuBtO,GACrB,IAAMuO,GAAiB,SACrBvO,EACA3xK,KAAKu/K,UAAUC,iBAEjB,OAAOx/K,KAAKmgL,+BAA+BD,IAS7C,YAAAC,+BAAA,SAA+BxO,GAC7B,IAAMR,EAAanxK,KAAKi8K,YACxB,OAAK9K,GAGI,QACLA,EAAWK,2BACXG,EAAWxvK,MAAM,EAAG,IAJf,MAaX,YAAA2wK,YAAA,WACE,OAAO9yK,KAAK+8K,WASd,YAAAqD,QAAA,WACE,OACEpgL,KAAKka,IAAIkjK,IAWb,YAAAmC,QAAA,WACE,OAA4Bv/K,KAAKka,IAAIkjK,IAQvC,YAAAtJ,YAAA,WACE,OAAO9zK,KAAKs8K,WAUd,YAAA+D,oBAAA,WACE,OAAOrgL,KAAKu8K,mBAUd,YAAA+D,6BAAA,WACE,OAAOtgL,KAAKy8K,4BAMd,YAAApF,iBAAA,WACE,IAAMkJ,EAAgBvgL,KAAKs/K,mBAC3B,OAAOiB,EAAgBA,EAAclkC,cAAgBp3I,UAUvD,YAAAi4K,gBAAA,SAAgBpD,EAAM0G,EAAeC,EAAYC,GAC/C,OD17BG,SACLvP,EACA2I,EACA0G,EACAC,EACAC,GAIA,IAAKvP,KAAgBqP,KAAiBrP,EAAWwP,aAC/C,OAAOlJ,EAET,IAAKtG,EAAWwP,YAAYH,GAAe1G,EAAKP,UAC9C,OAAO9B,EAQT,IAAMp3H,EAAS8wH,EAAWI,UAAUlxH,OAC9ByN,EAAS2yH,EAAW,GAAKpgI,EAAO,GAChC0N,EAAS0yH,EAAW,GAAKpgI,EAAO,GACtC,OACE,MAAQpzC,KAAK7F,IAAIs5K,GACjBzzK,KAAK+gD,KAAKF,EAASA,EAASC,EAASA,GAAU2yH,ECg6BxCxD,CACLl9K,KAAKi8K,YACLnC,EACA0G,EACAC,EACAC,IAQJ,YAAAnF,mBAAA,SAAmBqF,EAAcC,GAC/B,IAAMxiL,EAAOwiL,GAAYD,EAAaviL,KAChCyiL,EAAkB,IAAI,EAAgBziL,EAAM2B,KAAM4gL,GACxD5gL,KAAK+gL,sBAAsBD,IAM7B,YAAAC,sBAAA,SAAsBD,GACpB,GAAK9gL,KAAKi8K,YAAV,CAKA,IAAMtH,EACJmM,EAA6B,cAEzBpwK,EAAYikK,EAAct2K,KAChC,GACEqS,IAAc,GACdA,IAAc,WACdA,IAAc,YACd,CACA,IAAMs2B,EAAMhnC,KAAKq3K,mBACX52B,EAAWzgJ,KAAKs8K,UAAU57B,YAC5B1gJ,KAAKs8K,UAAU57B,cACf15G,EACEh5B,EAA8B2mK,EAAoB,OACxD,GAGE30K,KAAKy8K,2BAA2BznH,SAAShnD,MAKvCyyI,IAAaz5G,EAAMA,EAAIoyG,gBAAkBqH,GAAUzrF,SAAShnD,GAE9D,OAIJ,GADA8yK,EAAgB3P,WAAanxK,KAAKi8K,aACU,IAAxCj8K,KAAKopH,cAAc03D,GAErB,IADA,IAAME,EAAoBhhL,KAAKm+K,kBAAkB1R,WAAWtqK,QACnD7C,EAAI0hL,EAAkBxiL,OAAS,EAAGc,GAAK,EAAGA,IAAK,CACtD,IAAMosD,EAAcs1H,EAAkB1hL,GACtC,GACEosD,EAAY0nH,WAAapzK,MACxB0rD,EAAYu1H,aACZjhL,KAAKs/K,sBAIK5zH,EAAYprC,YAAYwgK,IACxBA,EAAgBI,oBAC3B,SASR,YAAAC,iBAAA,WACE,IAAMhQ,EAAanxK,KAAKi8K,YAWlBmF,EAAYphL,KAAKi9K,WACvB,IAAKmE,EAAUvI,UAAW,CACxB,IAAIqB,EAAkBl6K,KAAKw7K,iBACvBrB,EAAcD,EAClB,GAAI/I,EAAY,CACd,IAAMkQ,EAAQlQ,EAAWmQ,UACzB,GAAID,EAAME,GAAA,cAAuBF,EAAME,GAAA,eAAuB,CAC5D,IAAMC,EAAmB9xK,KAAK4F,MAAQ67J,EAAWpsJ,KAAO,EACxDm1J,EAAkBsH,EAAmB,EAAI,EACzCrH,EAAcqH,EAAmB,EAAI,GAGrCJ,EAAUvH,kBAAoBK,IAChCkH,EAAUhI,eACVgI,EAAUnH,cAAcC,EAAiBC,IAIzChJ,GAAcnxK,KAAK+8K,YAAc5L,EAAWh8E,WACjB,IAAzBn1F,KAAKo7K,iBACHp7K,KAAKi0K,YAAY,qBACnBj0K,KAAK+8K,UAAU1L,oBACb,mBACAF,IAGiB,IAAjBnxK,KAAKq7K,UACPr7K,KAAKq7K,SAAU,EACfr7K,KAAKopH,cACH,IAAI,EAASq4D,EAAA,UAAsBzhL,KAAMmxK,OAGnB,IAAjBnxK,KAAKq7K,UACdr7K,KAAKq7K,SAAU,EACfr7K,KAAKopH,cACH,IAAI,EAASq4D,EAAA,YAAwBzhL,KAAMmxK,MAMjD,IADA,IAAMoC,EAAsBvzK,KAAKg9K,qBACxB19K,EAAI,EAAG8sK,EAAKmH,EAAoB/0K,OAAQc,EAAI8sK,IAAM9sK,EACzDi0K,EAAoBj0K,GAAGU,KAAMmxK,GAE/BoC,EAAoB/0K,OAAS,GAM/B,YAAA++K,mBAAA,WACMv9K,KAAKu/K,YAAcv/K,KAAKu/K,UAAUmC,gBACpC1hL,KAAKu/K,UAAUoC,mBAAmB,GAGpC3hL,KAAKswE,UAMP,YAAAktG,qBAAA,WACE,GAAIx9K,KAAK08K,wBAAyB,CAChC,IAAK,IAAIp9K,EAAI,EAAG8sK,EAAKpsK,KAAK48K,yBAAyBp+K,OAAQc,EAAI8sK,IAAM9sK,GACnE,QAAcU,KAAK48K,yBAAyBt9K,IAE9CU,KAAK48K,yBAA2B,KAChC58K,KAAKs8K,UAAUjrJ,oBACb,gBACArxB,KAAKs7K,0BAEPt7K,KAAKs8K,UAAUjrJ,oBACb,UACArxB,KAAKs7K,0BAEPt7K,KAAK08K,wBAAwBxP,UAC7BltK,KAAK08K,wBAA0B,MAC/B,QAAW18K,KAAKs8K,WAQlB,IAAMiE,EAAgBvgL,KAAKs/K,mBAC3B,GAAKiB,EAYE,CAUL,IAAK,IAAM18K,KATX08K,EAAchpK,YAAYvX,KAAKs8K,WAC1Bt8K,KAAK+8K,YACR/8K,KAAK+8K,UAAY/8K,KAAK+9K,kBAGxB/9K,KAAK08K,wBAA0B,IAAI,EACjC18K,KACAA,KAAKm2K,gBAEW,EAChBn2K,KAAK08K,wBAAwBzkK,iBAC3B,EAAoBpU,GACpB7D,KAAK+gL,sBAAsB9pK,KAAKjX,OAGpCA,KAAKs8K,UAAUrkK,iBACb,gBACAjY,KAAKs7K,0BACL,GAEFt7K,KAAKs8K,UAAUrkK,iBACb,UACAjY,KAAKs7K,2BACL,MAA0B,CAAC1mH,SAAS,IAGtC,IAAM0nF,EAAct8I,KAAKq3K,mBAAmB/6B,YACtCq+B,EAAuB36K,KAAK28K,qBAE9B38K,KAAK28K,qBADL4D,EAEJvgL,KAAK48K,yBAA2B,EAC9B,QACEjC,EACA,YACA36K,KAAKu7K,mBACLv7K,OAEF,QACE26K,EACA,aACA36K,KAAKu7K,mBACLv7K,OAEF,QAAOs8I,EAAa,WAAkBt8I,KAAK4hL,WAAY5hL,YAvDrDA,KAAK+8K,YACP9nK,aAAajV,KAAK07K,0BAClB17K,KAAK07K,8BAA2Bz9K,EAChC+B,KAAKg9K,qBAAqBx+K,OAAS,EACnCwB,KAAK+8K,UAAU7P,UACfltK,KAAK+8K,UAAY,MAEf/8K,KAAK27K,qBACPkG,qBAAqB7hL,KAAK27K,oBAC1B37K,KAAK27K,wBAAqB19K,GAkD9B+B,KAAK4hL,cAQP,YAAAzE,kBAAA,WACEn9K,KAAKswE,UAMP,YAAAwxG,2BAAA,WACE9hL,KAAKswE,UAMP,YAAAgtG,mBAAA,WACMt9K,KAAKm8K,4BACP,QAAcn8K,KAAKm8K,0BACnBn8K,KAAKm8K,yBAA2B,MAE9Bn8K,KAAKo8K,0BACP,QAAcp8K,KAAKo8K,wBACnBp8K,KAAKo8K,uBAAyB,MAEhC,IAAMpB,EAAOh7K,KAAKu/K,UACdvE,IACFh7K,KAAK+hL,sBAEL/hL,KAAKm8K,0BAA2B,QAC9BnB,EACAtH,EAAA,iBACA1zK,KAAK8hL,2BACL9hL,MAEFA,KAAKo8K,wBAAyB,QAC5BpB,EACA,WACAh7K,KAAK8hL,2BACL9hL,MAGFg7K,EAAK2G,mBAAmB,IAE1B3hL,KAAKswE,UAMP,YAAA+sG,yBAAA,WACMr9K,KAAKq8K,kCACPr8K,KAAKq8K,gCAAgC75K,QAAQ,MAC7CxC,KAAKq8K,gCAAkC,MAEzC,IAAMtB,EAAa/6K,KAAKq+K,gBACpBtD,IACF/6K,KAAKs+K,gBAAgB,IAAI0D,EAAA,EAAW,WAAYjH,IAChD/6K,KAAKq8K,gCAAkC,EACrC,QAAOtB,EAAYrH,EAAA,iBAAgC1zK,KAAKswE,OAAQtwE,OAChE,QAAO+6K,EAAY,WAAkB/6K,KAAKswE,OAAQtwE,OAClD,QAAO+6K,EAAY,WAAY/6K,KAAKs+K,gBAAiBt+K,OACrD,QAAO+6K,EAAY,cAAe/6K,KAAKiiL,mBAAoBjiL,QAG/DA,KAAKswE,UAMP,YAAA4xG,WAAA,WACE,QAASliL,KAAKi8K,aAOhB,YAAAkG,WAAA,WACMniL,KAAK27K,oBACPkG,qBAAqB7hL,KAAK27K,oBAE5B37K,KAAK47K,mBAMP,YAAAjI,WAAA,WAEE,IADA,IAAMpB,EAAcvyK,KAAKq+K,gBAAgByB,sBAChCxgL,EAAI,EAAG8sK,EAAKmG,EAAY/zK,OAAQc,EAAI8sK,IAAM9sK,EAAG,CACpD,IAAMkoB,EAAQ+qJ,EAAYjzK,GAAGkoB,MACzBA,EAAMorJ,eACRprJ,EAAMsrJ,cAAcsP,uBAS1B,YAAA9xG,OAAA,WACMtwE,KAAK+8K,gBAAyC9+K,IAA5B+B,KAAK27K,qBACzB37K,KAAK27K,mBAAqBn8J,sBAAsBxf,KAAK47K,mBAWzD,YAAAyG,cAAA,SAAcvE,GACZ,OAAO99K,KAAKi+K,cAAczpK,OAAOspK,IAUnC,YAAAwE,kBAAA,SAAkB52H,GAChB,OAAO1rD,KAAKm+K,kBAAkB3pK,OAAOk3C,IAUvC,YAAA62H,YAAA,SAAY/6J,GAEV,OADexnB,KAAKq+K,gBAAgB7D,YACtBhmK,OAAOgT,IAOvB,YAAAy6J,mBAAA,SAAmB/kL,GACjBm9K,GAAuBn9K,EAAMsqB,QAU/B,YAAAg7J,cAAA,SAAchE,GACZ,OAAOx+K,KAAKy+K,cAAcjqK,OAAOgqK,IAOnC,YAAA3C,aAAA,SAAa92J,GAAb,WACQ0P,EAAOz0B,KAAKogL,UACZpF,EAAOh7K,KAAKu/K,UACZkD,EAAqBziL,KAAKi8K,YAE5B9K,EAAa,KACjB,QAAalzK,IAATw2B,IAAsB,SAAQA,IAASumJ,GAAQA,EAAK0H,QAAS,CAC/D,IAAMpB,EAAYtG,EAAK2H,SACrB3iL,KAAKi8K,YAAcj8K,KAAKi8K,YAAYqF,eAAYrjL,GAE5CszK,EAAYyJ,EAAK9L,WA2BvB,GA1BAiC,EAAa,CACXh8E,SAAS,EACTq8E,2BAA4BxxK,KAAK87K,4BACjC8G,cAAe,KACflU,QAAQ,QACN6C,EAAUlxH,OACVkxH,EAAU5C,WACV4C,EAAU3tH,SACVnvB,GAEFjJ,MAAOxrB,KAAKg8K,cACZ5H,WAAY,EACZ5B,iBAAkBxyK,KAAKq+K,gBAAgByB,sBACvChkE,WAAY97G,KAAK4uK,YACjB6C,2BAA4BzxK,KAAK+7K,4BACjCxI,oBAAqB,GACrB9+I,KAAMA,EACN2sJ,UAAWphL,KAAKi9K,WAChBl4J,KAAMA,EACN89J,UAAW,GACXtR,UAAWA,EACX+P,UAAWA,EACXX,YAAa,GACbmC,OAAO,QAAO9iL,MACd+iL,cAAe,IAEbxR,EAAUyR,YAAczR,EAAU0R,eAAgB,CACpD,IAAMr/H,EAAWjhD,MAAM4uK,EAAU2R,cAC7B3R,EAAU3tH,SACV2tH,EAAU2R,aAEd/R,EAAWgS,YAAa,QACtB5R,EAAUyR,WACVzR,EAAU0R,eACVr/H,EACAnvB,IAKNz0B,KAAKi8K,YAAc9K,EAEjBnxK,KAAc,UACdqzK,YAAYlC,GAEVA,IACEA,EAAWh8E,SACbn1F,KAAKswE,SAEPhwE,MAAMT,UAAUuE,KAAKnE,MACnBD,KAAKg9K,qBACL7L,EAAWoC,qBAGTkP,KAECziL,KAAKk8K,mBACJ,QAAQl8K,KAAKk8K,oBACZ,QAAO/K,EAAWzC,OAAQ1uK,KAAKk8K,oBAElCl8K,KAAKopH,cACH,IAAI,EAASq4D,EAAA,YAAwBzhL,KAAMyiL,IAE7CziL,KAAKk8K,iBAAkB,QAAoBl8K,KAAKk8K,kBAKlDl8K,KAAKk8K,kBACJ/K,EAAWmQ,UAAUC,GAAA,eACrBpQ,EAAWmQ,UAAUC,GAAA,kBACrB,QAAOpQ,EAAWzC,OAAQ1uK,KAAKk8K,mBAGhCl8K,KAAKopH,cACH,IAAI,EAASq4D,EAAA,UAAsBzhL,KAAMmxK,KAE3C,QAAMA,EAAWzC,OAAQ1uK,KAAKk8K,mBAIlCl8K,KAAKopH,cAAc,IAAI,EAASq4D,EAAA,aAAyBzhL,KAAMmxK,IAE/DnxK,KAAKo7K,gBACHp7K,KAAKi0K,YAAYwN,EAAA,cACjBzhL,KAAKi0K,YAAYwN,EAAA,YACjBzhL,KAAKi0K,YAAY,qBACZj0K,KAAKi9K,WAAWpD,oBAChB75K,KAAKi9K,WAAWzE,aAChBx4K,KAAK6/K,4BACN5hL,EAED+B,KAAK07K,2BACR17K,KAAK07K,yBAA2B1mK,YAAW,WACzC,EAAK0mK,8BAA2Bz9K,EAChC,EAAKkjL,qBACJ,KAUP,YAAAiC,cAAA,SAAcrI,GACZ,IAAMsI,EAAgBrjL,KAAKq+K,gBACvBgF,GACFrjL,KAAKiiL,mBAAmB,IAAID,EAAA,EAAW,cAAeqB,IAExDrjL,KAAKwrC,IAAI4xI,EAAwBrC,IASnC,YAAAuI,QAAA,SAAQ7uJ,GACNz0B,KAAKwrC,IAAI4xI,EAAkB3oJ,IAU7B,YAAAiqJ,UAAA,SAAU1wK,GACRhO,KAAKwrC,IAAI4xI,EAAoBpvK,IAY/B,YAAA0vK,QAAA,SAAQ1C,GACN,IAAKA,GAAQA,aAAgBC,EAAA,GAC3Bj7K,KAAKwrC,IAAI4xI,EAAkBpC,OAD7B,CAIAh7K,KAAKwrC,IAAI4xI,EAAkB,IAAInC,EAAA,IAE/B,IAAM/xK,EAAMlJ,KACZg7K,EAAK/zK,MAAK,SAAUw2K,GAClBv0K,EAAIw0K,QAAQ,IAAIzC,EAAA,GAAKwC,SASzB,YAAAmE,WAAA,WACE,IAAMrB,EAAgBvgL,KAAKs/K,mBAEvB7qJ,OAAOx2B,EACX,GAAIsiL,EAAe,CACjB,IAAMgD,EAAgBppE,iBAAiBomE,GACjC3kL,EACJ2kL,EAAcniC,YACdl/D,WAAWqkG,EAA+B,iBAC1CrkG,WAAWqkG,EAA2B,aACtCrkG,WAAWqkG,EAA4B,cACvCrkG,WAAWqkG,EAAgC,kBACvC1nL,EACJ0kL,EAAcliC,aACdn/D,WAAWqkG,EAA8B,gBACzCrkG,WAAWqkG,EAA0B,YACrCrkG,WAAWqkG,EAA6B,eACxCrkG,WAAWqkG,EAAiC,mBACzC5gL,MAAM/G,IAAW+G,MAAM9G,KAC1B44B,EAAO,CAAC74B,EAAOC,KAEZ,SAAQ44B,KAEP8rJ,EAAcniC,aACdmiC,EAAcliC,cACdkiC,EAAciD,iBAAiBhlL,SAIjC4a,QAAQ8K,KACN,sEAMRlkB,KAAKsjL,QAAQ7uJ,GACbz0B,KAAK+hL,uBAOP,YAAAA,oBAAA,WACE,IAAM/G,EAAOh7K,KAAKu/K,UAClB,GAAIvE,EAAM,CACR,IAAIvmJ,OAAOx2B,EACLslL,EAAgBppE,iBAAiBn6G,KAAKs8K,WACxCiH,EAAc3nL,OAAS2nL,EAAc1nL,SACvC44B,EAAO,CACL7xB,SAAS2gL,EAAc3nL,MAAO,IAC9BgH,SAAS2gL,EAAc1nL,OAAQ,MAGnCm/K,EAAKyI,gBAAgBhvJ,KAG3B,EAngDA,CAA2B,KAwlD3B,2BC5wDA,SACU,mfC4IH,SAASivJ,GAAY1I,EAAM1qJ,EAAOqzJ,EAAYC,GACnD,IAAMC,EAAc7I,EAAK8I,UAEzB,QAAoB7lL,IAAhB4lL,EAAJ,CAIA,IAAME,EAAU/I,EAAKgJ,mBAAmBH,EAAcvzJ,GAChD2zJ,EAAgBjJ,EAAKkJ,qBAAqBH,GAE5C/I,EAAK0G,gBACP1G,EAAKmJ,mBAEPnJ,EAAK7lF,QAAQ,CACXw5E,WAAYsV,EACZt/D,OAAQg/D,EACR9+J,cAA2B5mB,IAAjB2lL,EAA6BA,EAAe,IACtD92I,OAAQ,SAIZ,SAjIA,YAIE,WAAYi/H,GAAZ,MACE,cAAO,YAKP,EAAKxuC,GAKL,EAAKpsG,KAKL,EAAK66I,GAEDD,GAAeA,EAAYzrJ,cAC7B,EAAKA,YAAcyrJ,EAAYzrJ,aAOjC,EAAK8wJ,KAAO,KAEZ,EAAKgT,WAAU,KAmDnB,OAnF0B,QAyCxB,YAAAnD,UAAA,WACE,OAA+BjhL,KAAKka,IAAI,KAQ1C,YAAAk5J,OAAA,WACE,OAAOpzK,KAAKoxK,MASd,YAAA9wJ,YAAA,SAAYwgK,GACV,OAAO,GAST,YAAAsD,UAAA,SAAU57J,GACRxoB,KAAKwrC,IAAI,GAA4BhjB,IASvC,YAAAo1J,OAAA,SAAO10K,GACLlJ,KAAKoxK,KAAOloK,GAEhB,EAnFA,CAA0B,oeCuB1B,SA9CA,YAIE,WAAY6iK,GAAZ,MACE,cAAO,KAEDtuK,EAAUsuK,GAA4B,UAM5C,EAAKsY,OAAS5mL,EAAQ6yB,MAAQ7yB,EAAQ6yB,MAAQ,EAM9C,EAAKg0J,eAAiCrmL,IAArBR,EAAQonB,SAAyBpnB,EAAQonB,SAAW,MAyBzE,OA5C8B,QA4B5B,YAAAvE,YAAA,SAAYwgK,GACV,IAAIyD,GAAY,EAChB,GAAIzD,EAAgBziL,MAAQ,WAA8B,CACxD,IAAMuiL,EACJE,EAA6B,cAEzB53K,EAAM43K,EAAgB53K,IACtBy7G,EAASm8D,EAAgBnP,WACzBrhJ,EAAQswJ,EAAa4D,UAAYxkL,KAAKqkL,OAASrkL,KAAKqkL,OAE1DX,GADax6K,EAAIq2K,UACCjvJ,EAAOq0F,EAAQ3kH,KAAKskL,WACtC1D,EAAaxjB,iBACbmnB,GAAY,EAEd,OAAQA,GAEZ,EA5CA,CAA8B,meCmMvB,SAAS,GAAS/H,GAIvB,IAHA,IAAMh+K,EAASg+K,EAAch+K,OACzBu8G,EAAU,EACVC,EAAU,EACL17G,EAAI,EAAGA,EAAId,EAAQc,IAC1By7G,GAAWyhE,EAAcl9K,GAAGy7G,QAC5BC,GAAWwhE,EAAcl9K,GAAG07G,QAE9B,MAAO,CAACD,EAAUv8G,EAAQw8G,EAAUx8G,GAiBtC,SAhMA,YAIE,WAAYutK,GAAZ,WACQtuK,EAAUsuK,GAA4B,YAE5C,YAC+D,IAC9D,KAEGtuK,EAAQgnL,kBACV,EAAKA,gBAAkBhnL,EAAQgnL,iBAG7BhnL,EAAQinL,kBACV,EAAKA,gBAAkBjnL,EAAQinL,iBAG7BjnL,EAAQknL,kBACV,EAAKA,gBAAkBlnL,EAAQknL,iBAG7BlnL,EAAQmnL,gBACV,EAAKA,cAAgBnnL,EAAQmnL,eAG3BnnL,EAAQonL,WACV,EAAKA,SAAWpnL,EAAQonL,UAO1B,EAAKC,wBAAyB,EAM9B,EAAKC,iBAAmB,GAMxB,EAAKC,eAAiB,KAkH1B,OAjKiC,QAwD/B,YAAAC,gBAAA,WACE,OAAOjlL,KAAKglL,eAAexmL,QAS7B,YAAAimL,gBAAA,SAAgB3D,GACd,OAAO,GAQT,YAAA4D,gBAAA,SAAgB5D,KAUhB,YAAAxgK,YAAA,SAAYwgK,GACV,IAAKA,EAAgBnM,cACnB,OAAO,EAGT,IAAI4P,GAAY,EAEhB,GADAvkL,KAAKklL,uBAAuBpE,GACxB9gL,KAAK8kL,wBACP,GAAIhE,EAAgBziL,MAAQ,cAC1B2B,KAAK0kL,gBAAgB5D,GAErBA,EAAgBnM,cAAcvX,sBACzB,GAAI0jB,EAAgBziL,MAAQ,YAA+B,CAChE,IAAM8mL,EAAYnlL,KAAK4kL,cAAc9D,GACrC9gL,KAAK8kL,uBACHK,GAAanlL,KAAKglL,eAAexmL,OAAS,QAG9C,GAAIsiL,EAAgBziL,MAAQ,cAAiC,CAC3D,IAAMyL,EAAU9J,KAAKykL,gBAAgB3D,GACrC9gL,KAAK8kL,uBAAyBh7K,EAC9By6K,EAAYvkL,KAAK6kL,SAAS/6K,QACjBg3K,EAAgBziL,MAAQ,eACjC2B,KAAK2kL,gBAAgB7D,GAGzB,OAAQyD,GAQV,YAAAI,gBAAA,SAAgB7D,KAQhB,YAAA8D,cAAA,SAAc9D,GACZ,OAAO,GAST,YAAA+D,SAAA,SAAS/6K,GACP,OAAOA,GAOT,YAAAo7K,uBAAA,SAAuBpE,GACrB,GAqCJ,SAAgCA,GAC9B,IAAMziL,EAAOyiL,EAAgBziL,KAC7B,OACEA,IAAS,eACTA,IAAS,eACTA,IAAS,YA1CL+mL,CAAuBtE,GAAkB,CAC3C,IAAM,EAAQA,EAAgBnM,cAExB73K,EAAK,EAAMo6K,UAAUp3K,WACvBghL,EAAgBziL,MAAQ,mBACnB2B,KAAK+kL,iBAAiBjoL,IACpBgkL,EAAgBziL,MAAQ,eAExBvB,KAAMkD,KAAK+kL,oBADpB/kL,KAAK+kL,iBAAiBjoL,GAAM,GAK9BkD,KAAKglL,gBAAiB,QAAUhlL,KAAK+kL,oBAG3C,EAjKA,CAAiC,ICzB1B,SAAS,GAAIM,GAClB,IAAMC,EAAappK,UAKnB,OAAO,SAAUhf,GAEf,IADA,IAAIkE,GAAO,EACF9B,EAAI,EAAG8sK,EAAKkZ,EAAW9mL,OAAQc,EAAI8sK,IAC1ChrK,EAAOA,GAAQkkL,EAAWhmL,GAAGpC,MADmBoC,GAMlD,OAAO8B,GAYJ,IAmBMmkL,GAAmB,SAAUzE,GACxC,IAAMnM,EACJmM,EAA6B,cAE/B,OACEnM,EAAc6Q,UACZ7Q,EAAc8Q,SAAW9Q,EAAc+Q,UACzC/Q,EAAc6P,UAwBLmB,GAAoB,SAAUzoL,GACzC,OAAOA,EAAMgM,IAAIo2K,mBAAmBnjC,aAAa,aAb9B,SAAUj/I,GAC7B,IAAMqjL,EAAgBrjL,EAAMgM,IAAIo2K,mBAC1Bze,EAAgB3jK,EAAMgM,IAAImuK,mBAAmBxW,cACnD,OAAO0f,EAAcvrH,SAAS6rG,GAW1B,CAAM3jK,IAWC0oL,GAAS,KAsBTC,GAAoB,SAAU/E,GACzC,IAAMnM,EACJmM,EAA6B,cAE/B,OAA+B,GAAxBnM,EAAc9Y,UAAiB,MAAU,MAAO8Y,EAAc+Q,UAsD1DI,GAAiB,SAAUhF,GACtC,IAAMnM,EACJmM,EAA6B,cAE/B,OACGnM,EAAc6Q,UACb7Q,EAAc8Q,SAAW9Q,EAAc+Q,WACxC/Q,EAAc6P,UAgCNuB,GAAe,SAAUjF,GACpC,IAAMnM,EACJmM,EAA6B,cAE/B,OACGnM,EAAc6Q,UACb7Q,EAAc8Q,SAAW9Q,EAAc+Q,UACzC/Q,EAAc6P,UAYLwB,GAAoB,SAAUlF,GACzC,IAGM9jJ,EAFJ8jJ,EAA6B,cAE6B,OAAE9jJ,QAC9D,MAAmB,UAAZA,GAAmC,WAAZA,GAAoC,aAAZA,GAU3CipJ,GAAY,SAAUnF,GACjC,IAAM/J,EAAmE,EAEvEpC,cAGF,OAFA,YAAwB12K,IAAjB84K,EAA4B,IAEA,SAA5BA,EAAamP,aA4CTC,GAAgB,SAAUrF,GACrC,IAAM/J,EAAmE,EAEvEpC,cAEF,OADA,YAAwB12K,IAAjB84K,EAA4B,IAC5BA,EAAaqP,WAAqC,IAAxBrP,EAAalb,meCjIhD,SA1JA,YAIE,WAAYkQ,GAAZ,MACE,YAAM,CACJ8Y,SAAU,QACV,KAEIpnL,EAAUsuK,GAA4B,GAM5C,EAAKsa,SAAW5oL,EAAQ6oL,QAKxB,EAAKC,aAAe,KAKpB,EAAKC,mBAKL,EAAKC,UAAW,EAEhB,IAAMC,EAAYjpL,EAAQipL,UACtBjpL,EAAQipL,UACR,GAAIZ,GAAgBK,WAMxB,EAAKQ,WAAalpL,EAAQmpL,YACtB,GAAIjB,GAAmBe,GACvBA,EAMJ,EAAKG,YAAa,IAwGtB,OAxJsB,QAuDpB,YAAAnC,gBAAA,SAAgB5D,GACT9gL,KAAKymL,WACRzmL,KAAKymL,UAAW,EAChBzmL,KAAKozK,SAASmM,UAAUuH,oBAE1B,IAAM9B,EAAiBhlL,KAAKglL,eACtB+B,EAAW,GAAqB/B,GACtC,GAAIA,EAAexmL,QAAUwB,KAAKwmL,oBAIhC,GAHIxmL,KAAKqmL,UACPrmL,KAAKqmL,SAASr+K,OAAO++K,EAAS,GAAIA,EAAS,IAEzC/mL,KAAKumL,aAAc,CACrB,IAAMj2J,EAAQ,CACZtwB,KAAKumL,aAAa,GAAKQ,EAAS,GAChCA,EAAS,GAAK/mL,KAAKumL,aAAa,IAG5BvL,EADM8F,EAAgB53K,IACXq2K,WACjB,QAAgBjvJ,EAAO0qJ,EAAK/L,kBAC5B,QAAiB3+I,EAAO0qJ,EAAKgM,eAC7BhM,EAAKiM,qBAAqB32J,SAEnBtwB,KAAKqmL,UAGdrmL,KAAKqmL,SAASa,QAEhBlnL,KAAKumL,aAAeQ,EACpB/mL,KAAKwmL,mBAAqBxB,EAAexmL,OACzCsiL,EAAgBnM,cAAcvX,kBAQhC,YAAAwnB,cAAA,SAAc9D,GACZ,IAAM53K,EAAM43K,EAAgB53K,IACtB8xK,EAAO9xK,EAAIq2K,UACjB,GAAmC,IAA/Bv/K,KAAKglL,eAAexmL,OAAc,CACpC,IAAKwB,KAAK6mL,YAAc7mL,KAAKqmL,UAAYrmL,KAAKqmL,SAAShwJ,MAAO,CAC5D,IAAMg4B,EAAWruD,KAAKqmL,SAASc,cACzB/hI,EAAQplD,KAAKqmL,SAASe,WACtB/mI,EAAS26H,EAAKqM,oBACdC,EAAWp+K,EAAIi3K,+BAA+B9/H,GAC9CknI,EAAOr+K,EAAI01K,+BAA+B,CAC9C0I,EAAS,GAAKj5H,EAAWphD,KAAK63C,IAAIM,GAClCkiI,EAAS,GAAKj5H,EAAWphD,KAAK+3C,IAAII,KAEpC41H,EAAKwM,gBAAgB,CACnBnnI,OAAQ26H,EAAKyM,qBAAqBF,GAClC1iK,SAAU,IACVioB,OAAQ,QAOZ,OAJI9sC,KAAKymL,WACPzmL,KAAKymL,UAAW,EAChBzL,EAAK0M,mBAEA,EAQP,OANI1nL,KAAKqmL,UAGPrmL,KAAKqmL,SAASa,QAEhBlnL,KAAKumL,aAAe,MACb,GASX,YAAA9B,gBAAA,SAAgB3D,GACd,GAAI9gL,KAAKglL,eAAexmL,OAAS,GAAKwB,KAAK2mL,WAAW7F,GAAkB,CACtE,IACM9F,EADM8F,EAAgB53K,IACXq2K,UAYjB,OAXAv/K,KAAKumL,aAAe,KAEhBvL,EAAK0G,gBACP1G,EAAKmJ,mBAEHnkL,KAAKqmL,UACPrmL,KAAKqmL,SAASa,QAIhBlnL,KAAK6mL,WAAa7mL,KAAKglL,eAAexmL,OAAS,GACxC,EAEP,OAAO,GAGb,EAxJA,CAAsBmpL,8eC0FtB,SA9FA,YAIE,WAAY5b,GAAZ,WACQtuK,EAAUsuK,GAA4B,YAE5C,YAAM,CACJ8Y,SAAU,QACV,MAMG8B,WAAalpL,EAAQipL,UAAYjpL,EAAQipL,UAAYnB,GAM1D,EAAKqC,gBAAa3pL,EAMlB,EAAKqmL,eAAiCrmL,IAArBR,EAAQonB,SAAyBpnB,EAAQonB,SAAW,MAiEzE,OA5FyB,QAkCvB,YAAA6/J,gBAAA,SAAgB5D,GACd,GAAKmF,GAAUnF,GAAf,CAIA,IAAM53K,EAAM43K,EAAgB53K,IACtB8xK,EAAO9xK,EAAIq2K,UACjB,GAAIvE,EAAK6M,iBAAiBjkI,WAAa,MAAvC,CAGA,IAAMnvB,EAAOvrB,EAAIk3K,UACX99H,EAASw+H,EAAgBj+G,MACzB0S,EAAQtoE,KAAK2xF,MAAMnqE,EAAK,GAAK,EAAI6tB,EAAO,GAAIA,EAAO,GAAK7tB,EAAK,GAAK,GACxE,QAAwBx2B,IAApB+B,KAAK4nL,WAA0B,CACjC,IAAMt3J,EAAQilD,EAAQv1E,KAAK4nL,WAC3B5M,EAAK8M,wBAAwBx3J,GAE/BtwB,KAAK4nL,WAAaryG,KAQpB,YAAAqvG,cAAA,SAAc9D,GACZ,OAAKmF,GAAUnF,KAIHA,EAAgB53K,IACXq2K,UACZmI,eAAe1nL,KAAKskL,YAClB,IAQT,YAAAG,gBAAA,SAAgB3D,GACd,SAAKmF,GAAUnF,KAKb+E,GAAkB/E,KAClB9gL,KAAK2mL,WAAW7F,KAEJA,EAAgB53K,IACxBq2K,UAAUuH,mBACd9mL,KAAK4nL,gBAAa3pL,EACX,KAKb,EA5FA,CAAyB0pL,8eCqGzB,SA5HA,YAIE,WAAY9qJ,GAAZ,MACE,cAAO,YAMP,EAAKkrJ,UAAY,KAMjB,EAAKnU,SAAW3uK,SAASkS,cAAc,OACvC,EAAKy8J,SAASlsH,MAAMuF,SAAW,WAC/B,EAAK2mH,SAASlsH,MAAM80H,cAAgB,OACpC,EAAK5I,SAAS/2I,UAAY,UAAYA,EAMtC,EAAKu0I,KAAO,KAMZ,EAAK4W,YAAc,KAMnB,EAAKC,UAAY,OAoFrB,OA1HwB,QA4CtB,YAAA9a,gBAAA,WACEntK,KAAK49K,OAAO,OAMd,YAAAsK,QAAA,WACE,IAAMxoH,EAAa1/D,KAAKgoL,YAClBroH,EAAW3/D,KAAKioL,UAChBE,EAAK,KACLzgI,EAAQ1nD,KAAK4zK,SAASlsH,MAC5BA,EAAMnO,KAAOtsC,KAAK6d,IAAI40C,EAAW,GAAIC,EAAS,IAAMwoH,EACpDzgI,EAAMtO,IAAMnsC,KAAK6d,IAAI40C,EAAW,GAAIC,EAAS,IAAMwoH,EACnDzgI,EAAM9rD,MAAQqR,KAAKknB,IAAIwrC,EAAS,GAAKD,EAAW,IAAMyoH,EACtDzgI,EAAM7rD,OAASoR,KAAKknB,IAAIwrC,EAAS,GAAKD,EAAW,IAAMyoH,GAMzD,YAAAvK,OAAA,SAAO10K,GACL,GAAIlJ,KAAKoxK,KAAM,CACbpxK,KAAKoxK,KAAKiP,sBAAsB5oK,YAAYzX,KAAK4zK,UACjD,IAAMlsH,EAAQ1nD,KAAK4zK,SAASlsH,MAC5BA,EAAMnO,KAAO,UACbmO,EAAMtO,IAAM,UACZsO,EAAM9rD,MAAQ,UACd8rD,EAAM7rD,OAAS,UAEjBmE,KAAKoxK,KAAOloK,EACRlJ,KAAKoxK,MACPpxK,KAAKoxK,KAAKiP,sBAAsB9oK,YAAYvX,KAAK4zK,WAQrD,YAAAwU,UAAA,SAAU1oH,EAAYC,GACpB3/D,KAAKgoL,YAActoH,EACnB1/D,KAAKioL,UAAYtoH,EACjB3/D,KAAKqoL,yBACLroL,KAAKkoL,WAMP,YAAAG,uBAAA,WACE,IAAM3oH,EAAa1/D,KAAKgoL,YAClBroH,EAAW3/D,KAAKioL,UAOhBpgE,EANS,CACbnoD,EACA,CAACA,EAAW,GAAIC,EAAS,IACzBA,EACA,CAACA,EAAS,GAAID,EAAW,KAEAx2D,IACzBlJ,KAAKoxK,KAAKwN,+BACV5+K,KAAKoxK,MAGPvpD,EAAY,GAAKA,EAAY,GAAG1lH,QAC3BnC,KAAK+nL,UAGR/nL,KAAK+nL,UAAUO,eAAe,CAACzgE,IAF/B7nH,KAAK+nL,UAAY,IAAIQ,GAAA,GAAQ,CAAC1gE,KASlC,YAAAsmD,YAAA,WACE,OAAOnuK,KAAK+nL,WAEhB,EA1HA,CAAwBvU,EAAA,keC8DxB,eAME,WAAYn1K,EAAMszK,EAAYmP,GAA9B,MACE,YAAMziL,IAAK,YAQX,EAAKszK,WAAaA,EAOlB,EAAKmP,gBAAkBA,IAE3B,OAxBkC,QAwBlC,EAxBA,CAAkC,MA6MlC,SA7JA,YAIE,WAAY/U,GAAZ,MACE,cAAO,KAKP,EAAKxuC,GAKL,EAAKpsG,KAKL,EAAK66I,GAEL,IAAMvuK,EAAUsuK,GAA4B,UAM5C,EAAKyc,KAAO,IAAI,GAAU/qL,EAAQo/B,WAAa,cAM/C,EAAK4rJ,cAA+BxqL,IAApBR,EAAQirL,QAAwBjrL,EAAQirL,QAAU,GAE9DjrL,EAAQkrL,WACV,EAAKA,SAAWlrL,EAAQkrL,UAO1B,EAAKX,YAAc,KAMnB,EAAKrB,WAAalpL,EAAQipL,UAAYjpL,EAAQipL,UAAYb,GAM1D,EAAK+C,iBAAmBnrL,EAAQorL,gBAC5BprL,EAAQorL,gBACR,EAAKC,yBAiGb,OA3JsB,QAsEpB,YAAAA,uBAAA,SAAuBhI,EAAiBphH,EAAYC,GAClD,IAAM/jE,EAAQ+jE,EAAS,GAAKD,EAAW,GACjC7jE,EAAS8jE,EAAS,GAAKD,EAAW,GACxC,OAAO9jE,EAAQA,EAAQC,EAASA,GAAUmE,KAAKyoL,UAQjD,YAAAta,YAAA,WACE,OAAOnuK,KAAKwoL,KAAKra,eAOnB,YAAAuW,gBAAA,SAAgB5D,GACd9gL,KAAKwoL,KAAKJ,UAAUpoL,KAAKgoL,YAAalH,EAAgBj+G,OAEtD7iE,KAAKopH,cACH,IAAI2/D,GAnKC,UAqKHjI,EAAgBnP,WAChBmP,KAUN,YAAA8D,cAAA,SAAc9D,GACZ9gL,KAAKwoL,KAAK5K,OAAO,MAEjB,IAAMoL,EAAchpL,KAAK4oL,iBACvB9H,EACA9gL,KAAKgoL,YACLlH,EAAgBj+G,OAYlB,OAVImmH,GACFhpL,KAAK2oL,SAAS7H,GAEhB9gL,KAAKopH,cACH,IAAI2/D,GACFC,EAtLE,SAOG,YAgLLlI,EAAgBnP,WAChBmP,KAGG,GAQT,YAAA2D,gBAAA,SAAgB3D,GACd,QAAI9gL,KAAK2mL,WAAW7F,KAClB9gL,KAAKgoL,YAAclH,EAAgBj+G,MACnC7iE,KAAKwoL,KAAK5K,OAAOkD,EAAgB53K,KACjClJ,KAAKwoL,KAAKJ,UAAUpoL,KAAKgoL,YAAahoL,KAAKgoL,aAC3ChoL,KAAKopH,cACH,IAAI2/D,GAvNA,WAyNFjI,EAAgBnP,WAChBmP,KAGG,IAUX,YAAA6H,SAAA,SAASzrL,KACX,EA3JA,CAAsByqL,meClCtB,SApDA,YAIE,WAAY5b,GAAZ,WACQtuK,EAAUsuK,GAA4B,GAEtC2a,EAAYjpL,EAAQipL,UAAYjpL,EAAQipL,UAAYX,YAE1D,YAAM,CACJW,UAAWA,EACX7pJ,UAAWp/B,EAAQo/B,WAAa,cAChC6rJ,QAASjrL,EAAQirL,WACjB,MAMGpE,eAAiCrmL,IAArBR,EAAQonB,SAAyBpnB,EAAQonB,SAAW,IAMrE,EAAKokK,UAAuBhrL,IAAhBR,EAAQ6+B,KAAoB7+B,EAAQ6+B,MAyBpD,OAlDuB,QAgCrB,YAAAqsJ,SAAA,SAASzrL,GACP,IACM89K,EADMh7K,KAAKozK,SAC8CmM,UAC3D54D,EAAW3mH,KAAKmuK,cAEpB,GAAInuK,KAAKipL,KAAM,CACb,IAAMC,EAAgBlO,EAAKmO,yBAAyBxiE,GAC9CgoD,EAAaqM,EAAKoO,+BAA+BF,GACjDj9I,EAAS+uI,EAAK/L,gBAAkBN,GACtChoD,EAAWA,EAASt9F,SACX0mB,MAAM9D,EAASA,GAG1B+uI,EAAKqO,YAAY1iE,EAAU,CACzB9hG,SAAU7kB,KAAKskL,UACfx3I,OAAQ,SAGd,EAlDA,CAAuB,meC6FvB,SA1FA,YAIE,WAAYi/H,GAAZ,MACE,cAAO,KAEDtuK,EAAUsuK,GAAe,UAO/B,EAAKud,kBAAoB,SAAUxI,GACjC,OACEgF,GAAehF,IAAoBkF,GAAkBlF,IAQzD,EAAK6F,gBACmB1oL,IAAtBR,EAAQipL,UACJjpL,EAAQipL,UACR,EAAK4C,kBAMX,EAAKhF,eAAiCrmL,IAArBR,EAAQonB,SAAyBpnB,EAAQonB,SAAW,IAMrE,EAAK0kK,iBACoBtrL,IAAvBR,EAAQ+rL,WAA2B/rL,EAAQ+rL,WAAa,MAgD9D,OAxF0B,QAmDxB,YAAAlpK,YAAA,SAAYwgK,GACV,IAAIyD,GAAY,EAChB,GAAIzD,EAAgBziL,MAAQ,YAAmB,CAC7C,IAAMorL,EACJ3I,EAA6B,cAEzB4I,EAAUD,EAASC,QACzB,GACE1pL,KAAK2mL,WAAW7F,KCjFhB,IDkFC4I,GCrFD,IDsFEA,GCpFD,IDqFCA,GCtFJ,IDuFIA,GACF,CACA,IACM1O,EADM8F,EAAgB53K,IACXq2K,UACXoK,EAAgB3O,EAAK/L,gBAAkBjvK,KAAKupL,YAC9Cz7H,EAAS,EACXC,EAAS,EC3FX,ID4FI27H,EACF37H,GAAU47H,EChGZ,IDiGWD,EACT57H,GAAU67H,EChGX,IDiGUD,EACT57H,EAAS67H,EAET57H,EAAS47H,EAEX,IAAMr5J,EAAQ,CAACw9B,EAAQC,IACvB,QAAiBz9B,EAAO0qJ,EAAKgM,eTgB9B,SAAahM,EAAM1qJ,EAAOszJ,GAC/B,IAAMgG,EAAgB5O,EAAKqM,oBAC3B,GAAIuC,EAAe,CACjB,IAAMvpI,EAAS,CAACupI,EAAc,GAAKt5J,EAAM,GAAIs5J,EAAc,GAAKt5J,EAAM,IACtE0qJ,EAAKwM,gBAAgB,CACnB3iK,cAA2B5mB,IAAjB2lL,EAA6BA,EAAe,IACtD92I,OAAQ,MACRuT,OAAQ26H,EAAKyM,qBAAqBpnI,MStBhCwpI,CAAI7O,EAAM1qJ,EAAOtwB,KAAKskL,WACtBmF,EAASrsB,iBACTmnB,GAAY,GAGhB,OAAQA,GAEZ,EAxFA,CAA0B,meE2D1B,SA/DA,YAIE,WAAYxY,GAAZ,MACE,cAAO,KAEDtuK,EAAUsuK,GAA4B,UAM5C,EAAK4a,WAAalpL,EAAQipL,UAAYjpL,EAAQipL,UAAYV,GAM1D,EAAK3B,OAAS5mL,EAAQ6yB,MAAQ7yB,EAAQ6yB,MAAQ,EAM9C,EAAKg0J,eAAiCrmL,IAArBR,EAAQonB,SAAyBpnB,EAAQonB,SAAW,MAoCzE,OA7D2B,QAoCzB,YAAAvE,YAAA,SAAYwgK,GACV,IAAIyD,GAAY,EAChB,GACEzD,EAAgBziL,MAAQ,aACxByiL,EAAgBziL,MAAQ,aACxB,CACA,IAAMorL,EACJ3I,EAA6B,cAEzBgJ,EAAWL,EAASK,SAC1B,GACE9pL,KAAK2mL,WAAW7F,KACfgJ,GAAY,IAAIvjD,WAAW,IAAMujD,GAAY,IAAIvjD,WAAW,IAC7D,CACA,IAAMr9H,EAAM43K,EAAgB53K,IACtBonB,EACJw5J,GAAY,IAAIvjD,WAAW,GAAKvmI,KAAKqkL,QAAUrkL,KAAKqkL,OAEtDX,GADax6K,EAAIq2K,UACCjvJ,OAAOryB,EAAW+B,KAAKskL,WACzCmF,EAASrsB,iBACTmnB,GAAY,GAGhB,OAAQA,GAEZ,EA7DA,CAA2B,IC+F3B,GAnHA,WAOE,WAAYwF,EAAOC,EAAal0K,GAK9B9V,KAAKiqL,OAASF,EAMd/pL,KAAKkqL,aAAeF,EAMpBhqL,KAAKmqL,OAASr0K,EAMd9V,KAAKoqL,QAAU,GAMfpqL,KAAKqqL,OAAS,EAMdrqL,KAAKsqL,iBAAmB,EAuE5B,OAjEE,YAAApD,MAAA,WACElnL,KAAKoqL,QAAQ5rL,OAAS,EACtBwB,KAAKqqL,OAAS,EACdrqL,KAAKsqL,iBAAmB,GAO1B,YAAAtiL,OAAA,SAAOssC,EAAGC,GACRv0C,KAAKoqL,QAAQhmL,KAAKkwC,EAAGC,EAAG7kC,KAAK4F,QAM/B,YAAA+gB,IAAA,WACE,GAAIr2B,KAAKoqL,QAAQ5rL,OAAS,EAGxB,OAAO,EAET,IAAMsX,EAAQpG,KAAK4F,MAAQtV,KAAKmqL,OAC1BxrG,EAAY3+E,KAAKoqL,QAAQ5rL,OAAS,EACxC,GAAIwB,KAAKoqL,QAAQzrG,EAAY,GAAK7oE,EAGhC,OAAO,EAKT,IADA,IAAIy0K,EAAa5rG,EAAY,EACtB4rG,EAAa,GAAKvqL,KAAKoqL,QAAQG,EAAa,GAAKz0K,GACtDy0K,GAAc,EAGhB,IAAM1lK,EAAW7kB,KAAKoqL,QAAQzrG,EAAY,GAAK3+E,KAAKoqL,QAAQG,EAAa,GAIzE,GAAI1lK,EAAW,IAAO,GACpB,OAAO,EAGT,IAAM65D,EAAK1+E,KAAKoqL,QAAQzrG,GAAa3+E,KAAKoqL,QAAQG,GAC5ChmE,EAAKvkH,KAAKoqL,QAAQzrG,EAAY,GAAK3+E,KAAKoqL,QAAQG,EAAa,GAGnE,OAFAvqL,KAAKqqL,OAASp9K,KAAK2xF,MAAM2lB,EAAI7lC,GAC7B1+E,KAAKsqL,iBAAmBr9K,KAAK+gD,KAAK0wB,EAAKA,EAAK6lC,EAAKA,GAAM1/F,EAChD7kB,KAAKsqL,iBAAmBtqL,KAAKkqL,cAMtC,YAAA/C,YAAA,WACE,OAAQnnL,KAAKkqL,aAAelqL,KAAKsqL,kBAAoBtqL,KAAKiqL,QAM5D,YAAA7C,SAAA,WACE,OAAOpnL,KAAKqqL,QAEhB,EAjHA,6eCEaG,GACD,WA2RZ,SA/PA,YAIE,WAAYze,GAAZ,WACQtuK,EAAUsuK,GAA4B,MAE5C,YAC+D,IAC9D,MAMI0e,YAAc,EAMnB,EAAKC,WAAa,EAMlB,EAAKC,eAAiC1sL,IAArBR,EAAQmtL,SAAyBntL,EAAQmtL,SAAW,EAMrE,EAAKtG,eAAiCrmL,IAArBR,EAAQonB,SAAyBpnB,EAAQonB,SAAW,IAMrE,EAAKgmK,cAA+B5sL,IAApBR,EAAQ4K,QAAwB5K,EAAQ4K,QAAU,GAMlE,EAAKyiL,gBACmB7sL,IAAtBR,EAAQstL,WAA0BttL,EAAQstL,UAM5C,EAAKC,0BAC6B/sL,IAAhCR,EAAQwtL,qBACJxtL,EAAQwtL,oBAGd,IAAMvE,EAAYjpL,EAAQipL,UAAYjpL,EAAQipL,UAAYd,UAM1D,EAAKe,WAAalpL,EAAQmpL,YACtB,GAAIjB,GAAmBe,GACvBA,EAMJ,EAAKwE,YAAc,KAMnB,EAAKC,gBAAaltL,EAMlB,EAAKmtL,WAML,EAAKC,WAAQptL,EAOb,EAAKqtL,kBAAoB,IAKzB,EAAKC,mBAOL,EAAKC,cAAgB,MAiJzB,OA7P6B,QAkH3B,YAAAC,gBAAA,WACEzrL,KAAKurL,wBAAqBttL,EACb+B,KAAKozK,SAASmM,UACtBmI,oBACHzpL,EACA+B,KAAK0qL,WAAc1qL,KAAK0qL,WAAa,EAAI,GAAK,EAAK,EACnD1qL,KAAKkrL,cAUT,YAAA5qK,YAAA,SAAYwgK,GACV,IAAK9gL,KAAK2mL,WAAW7F,GACnB,OAAO,EAGT,GADaA,EAAgBziL,OAChB,UACX,OAAO,EAGT,IAYIiyB,EAZEpnB,EAAM43K,EAAgB53K,IACtBwiL,EACJ5K,EAA6B,cAqB/B,GAnBA4K,EAAWtuB,iBAEPp9J,KAAK8qL,aACP9qL,KAAKkrL,YAAcpK,EAAgBnP,YAMjCmP,EAAgBziL,MAAQ,YAC1BiyB,EAAQo7J,EAAW39H,OACf,KAAW29H,EAAWC,YAAcC,WAAWC,kBACjDv7J,GAAS,MAEPo7J,EAAWC,YAAcC,WAAWE,iBACtCx7J,GAAS,KAIC,IAAVA,EACF,OAAO,EAEPtwB,KAAK0qL,WAAap6J,EAGpB,IAAMhb,EAAM5F,KAAK4F,WAEOrX,IAApB+B,KAAKmrL,aACPnrL,KAAKmrL,WAAa71K,KAGftV,KAAKqrL,OAAS/1K,EAAMtV,KAAKmrL,WAAanrL,KAAKsrL,qBAC9CtrL,KAAKqrL,MAAQp+K,KAAKknB,IAAI7D,GAAS,EAAIk6J,GA1MhC,SA6ML,IAAMxP,EAAO9xK,EAAIq2K,UACjB,GACEv/K,KAAKqrL,QAAUb,KACbxP,EAAK+Q,2BAA4B/rL,KAAKgrL,qBAgBxC,OAdIhrL,KAAKurL,mBACPt2K,aAAajV,KAAKurL,qBAEdvQ,EAAK0G,gBACP1G,EAAKmJ,mBAEPnJ,EAAK8L,oBAEP9mL,KAAKurL,mBAAqBv2K,WACxBhV,KAAKyrL,gBAAgBx0K,KAAKjX,MAC1BA,KAAK6qL,UAEP7P,EAAKgR,YAAY17J,EAAQtwB,KAAKwrL,cAAexrL,KAAKkrL,aAClDlrL,KAAKmrL,WAAa71K,GACX,EAGTtV,KAAKyqL,aAAen6J,EAEpB,IAAM27J,EAAWh/K,KAAK6mB,IAAI9zB,KAAK6qL,UAAYv1K,EAAMtV,KAAKmrL,YAAa,GAQnE,OANAl2K,aAAajV,KAAKorL,YAClBprL,KAAKorL,WAAap2K,WAChBhV,KAAKksL,iBAAiBj1K,KAAKjX,KAAMkJ,GACjC+iL,IAGK,GAOT,YAAAC,iBAAA,SAAiBhjL,GACf,IAAM8xK,EAAO9xK,EAAIq2K,UACbvE,EAAK0G,gBACP1G,EAAKmJ,mBAEP,IAAI7zJ,IACD,SACCtwB,KAAKyqL,aACJzqL,KAAK2qL,UAAY3qL,KAAKwrL,cACvBxrL,KAAK2qL,UAAY3qL,KAAKwrL,eACpBxrL,KAAKwrL,eACPxQ,EAAK+Q,0BAA4B/rL,KAAKgrL,wBAExC16J,EAAQA,EAASA,EAAQ,EAAI,GAAK,EAAK,GAEzCozJ,GAAY1I,EAAM1qJ,EAAOtwB,KAAKkrL,YAAalrL,KAAKskL,WAEhDtkL,KAAKqrL,WAAQptL,EACb+B,KAAKyqL,YAAc,EACnBzqL,KAAKkrL,YAAc,KACnBlrL,KAAKmrL,gBAAaltL,EAClB+B,KAAKorL,gBAAantL,GASpB,YAAAkuL,eAAA,SAAepB,GACb/qL,KAAK8qL,WAAaC,EACbA,IACH/qL,KAAKkrL,YAAc,OAGzB,EA7PA,CAA6B,meCyH7B,SA5IA,YAIE,WAAYnf,GAAZ,WACQtuK,EAAUsuK,GAA4B,GAEtCqgB,EAA+D,SAIhEA,EAAevH,WAClBuH,EAAevH,SAAW,SAG5B,YAAMuH,IAAe,MAMhBC,QAAU,KAMf,EAAKzE,gBAAa3pL,EAMlB,EAAKquL,WAAY,EAMjB,EAAKC,eAAiB,EAMtB,EAAKC,gBAAmCvuL,IAAtBR,EAAQ4rC,UAA0B5rC,EAAQ4rC,UAAY,GAMxE,EAAKi7I,eAAiCrmL,IAArBR,EAAQonB,SAAyBpnB,EAAQonB,SAAW,MAuFzE,OA1I0B,QA0DxB,YAAA6/J,gBAAA,SAAgB5D,GACd,IAAI2L,EAAgB,EAEdC,EAAS1sL,KAAKglL,eAAe,GAC7B2H,EAAS3sL,KAAKglL,eAAe,GAG7B5/H,EAAQn4C,KAAK2xF,MACjB+tF,EAAO3xE,QAAU0xE,EAAO1xE,QACxB2xE,EAAO5xE,QAAU2xE,EAAO3xE,SAG1B,QAAwB98G,IAApB+B,KAAK4nL,WAA0B,CACjC,IAAMt3J,EAAQ80B,EAAQplD,KAAK4nL,WAC3B5nL,KAAKusL,gBAAkBj8J,GAClBtwB,KAAKssL,WAAar/K,KAAKknB,IAAIn0B,KAAKusL,gBAAkBvsL,KAAKwsL,aAC1DxsL,KAAKssL,WAAY,GAEnBG,EAAgBn8J,EAElBtwB,KAAK4nL,WAAaxiI,EAElB,IAAMl8C,EAAM43K,EAAgB53K,IACtB8xK,EAAO9xK,EAAIq2K,UACjB,GAAIvE,EAAK6M,iBAAiBjkI,WAAa,MAAvC,CAOA,IAAMw7H,EAAmBl2K,EAAI4qK,cAAch5D,wBACrCisE,EAAW,GAAqB/mL,KAAKglL,gBAC3C+B,EAAS,IAAM3H,EAAiB7lI,KAChCwtI,EAAS,IAAM3H,EAAiBhmI,IAChCp5C,KAAKqsL,QAAUnjL,EAAI01K,+BAA+BmI,GAG9C/mL,KAAKssL,YACPpjL,EAAIonE,SACJ0qG,EAAK8M,uBAAuB2E,EAAezsL,KAAKqsL,YASpD,YAAAzH,cAAA,SAAc9D,GACZ,QAAI9gL,KAAKglL,eAAexmL,OAAS,IACnBsiL,EAAgB53K,IACXq2K,UACZmI,eAAe1nL,KAAKskL,WAClB,KAWX,YAAAG,gBAAA,SAAgB3D,GACd,GAAI9gL,KAAKglL,eAAexmL,QAAU,EAAG,CACnC,IAAM0K,EAAM43K,EAAgB53K,IAQ5B,OAPAlJ,KAAKqsL,QAAU,KACfrsL,KAAK4nL,gBAAa3pL,EAClB+B,KAAKssL,WAAY,EACjBtsL,KAAKusL,eAAiB,EACjBvsL,KAAK8kL,wBACR57K,EAAIq2K,UAAUuH,oBAET,EAEP,OAAO,GAGb,EA1IA,CAA0Ba,meCoH1B,SAvHA,YAIE,WAAY5b,GAAZ,WACQtuK,EAAUsuK,GAA4B,GAEtCqgB,EAA+D,SAIhEA,EAAevH,WAClBuH,EAAevH,SAAW,SAG5B,YAAMuH,IAAe,MAMhBC,QAAU,KAMf,EAAK/H,eAAiCrmL,IAArBR,EAAQonB,SAAyBpnB,EAAQonB,SAAW,IAMrE,EAAK+nK,mBAAgB3uL,EAMrB,EAAK4uL,gBAAkB,IA8E3B,OArHwB,QA8CtB,YAAAnI,gBAAA,SAAgB5D,GACd,IAAIgM,EAAa,EAEXJ,EAAS1sL,KAAKglL,eAAe,GAC7B2H,EAAS3sL,KAAKglL,eAAe,GAC7BtmG,EAAKguG,EAAO3xE,QAAU4xE,EAAO5xE,QAC7BwJ,EAAKmoE,EAAO1xE,QAAU2xE,EAAO3xE,QAG7B3sD,EAAWphD,KAAK+gD,KAAK0wB,EAAKA,EAAK6lC,EAAKA,QAEftmH,IAAvB+B,KAAK4sL,gBACPE,EAAa9sL,KAAK4sL,cAAgBv+H,GAEpCruD,KAAK4sL,cAAgBv+H,EAErB,IAAMnlD,EAAM43K,EAAgB53K,IACtB8xK,EAAO9xK,EAAIq2K,UAEC,GAAduN,IACF9sL,KAAK6sL,gBAAkBC,GAIzB,IAAM1N,EAAmBl2K,EAAI4qK,cAAch5D,wBACrCisE,EAAW,GAAqB/mL,KAAKglL,gBAC3C+B,EAAS,IAAM3H,EAAiB7lI,KAChCwtI,EAAS,IAAM3H,EAAiBhmI,IAChCp5C,KAAKqsL,QAAUnjL,EAAI01K,+BAA+BmI,GAGlD79K,EAAIonE,SACJ0qG,EAAK+R,yBAAyBD,EAAY9sL,KAAKqsL,UAQjD,YAAAzH,cAAA,SAAc9D,GACZ,GAAI9gL,KAAKglL,eAAexmL,OAAS,EAAG,CAClC,IACMw8K,EADM8F,EAAgB53K,IACXq2K,UACXniE,EAAYp9G,KAAK6sL,gBAAkB,EAAI,GAAK,EAElD,OADA7R,EAAK0M,eAAe1nL,KAAKskL,UAAWlnE,IAC7B,EAEP,OAAO,GASX,YAAAqnE,gBAAA,SAAgB3D,GACd,GAAI9gL,KAAKglL,eAAexmL,QAAU,EAAG,CACnC,IAAM0K,EAAM43K,EAAgB53K,IAO5B,OANAlJ,KAAKqsL,QAAU,KACfrsL,KAAK4sL,mBAAgB3uL,EACrB+B,KAAK6sL,gBAAkB,EAClB7sL,KAAK8kL,wBACR57K,EAAIq2K,UAAUuH,oBAET,EAEP,OAAO,GAGb,EArHA,CAAwBa,meCqCxB,eAIE,WAAYlqL,UACVA,GAAU,QAAO,GAAIA,IACRm9K,WACXn9K,EAAQm9K,UAAW,YAEhBn9K,EAAQo9K,eACXp9K,EAAQo9K,aCiBP,SAAkB9O,GACvB,IAAMtuK,EDlByC,CACzCmpL,aAAa,ICiByB,GAEtC/L,EAAe,IAAIK,EAAA,EAEnBoL,EAAU,IAAI,IAAS,KAAO,IAAM,KA8E1C,YA3EiCroL,IAA/BR,EAAQuvL,oBACJvvL,EAAQuvL,qBAGZnS,EAAaz2K,KAAK,IAAI,UAIMnG,IAA5BR,EAAQwvL,iBAAgCxvL,EAAQwvL,kBAEhDpS,EAAaz2K,KACX,IAAI,GAAgB,CAClBksB,MAAO7yB,EAAQyvL,UACfroK,SAAUpnB,EAAQ0vL,sBAKYlvL,IAApBR,EAAQ2vL,SAAwB3vL,EAAQ2vL,UAEtDvS,EAAaz2K,KACX,IAAI,GAAQ,CACVwiL,YAAanpL,EAAQmpL,YACrBN,QAASA,WAMWroL,IAAxBR,EAAQ4vL,aAA4B5vL,EAAQ4vL,cAE5CxS,EAAaz2K,KAAK,IAAI,UAGgBnG,IAAtBR,EAAQ6vL,WAA0B7vL,EAAQ6vL,YAE1DzS,EAAaz2K,KACX,IAAI,GAAU,CACZygB,SAAUpnB,EAAQ0vL,sBAKclvL,IAArBR,EAAQ8vL,UAAyB9vL,EAAQ8vL,YAExD1S,EAAaz2K,KAAK,IAAI,IACtBy2K,EAAaz2K,KACX,IAAI,GAAa,CACfksB,MAAO7yB,EAAQyvL,UACfroK,SAAUpnB,EAAQ0vL,uBAMKlvL,IAA3BR,EAAQ+vL,gBAA+B/vL,EAAQ+vL,iBAE/C3S,EAAaz2K,KACX,IAAI,GAAe,CACjBwiL,YAAanpL,EAAQmpL,YACrB/hK,SAAUpnB,EAAQ0vL,sBAMIlvL,IAA1BR,EAAQgwL,eAA8BhwL,EAAQgwL,gBAE9C5S,EAAaz2K,KACX,IAAI,GAAS,CACXygB,SAAUpnB,EAAQ0vL,gBAKjBtS,EDpGoB,IAKzB,YAAMp9K,IAAQ,KAMlB,OArBkB,QAkBhB,YAAAsgL,eAAA,WACE,OAAO,IAAI2P,EAAqB1tL,OAEpC,EArBA,CAAkB,IAuBlB,0DExEA,SAME2tL,WAAY,aAOZC,UAAW,YAOXC,QAAS,UAOTC,UAAW,YAOXC,QAAS,ojBC5BX,cAME,WAAY1vL,EAAMwF,EAAKmwB,GAAvB,MACE,YAAM31B,IAAK,YAOX,EAAKwF,IAAMA,EAQX,EAAKmwB,SAAWA,IAEpB,OAxBiC,OAwBjC,EAxBA,CAAiC,MA2PjC,QA/KA,YAIE,WAAYg6J,GAAZ,MACE,cAAO,YAKP,EAAKzwD,GAKL,EAAKpsG,KAKL,EAAK66I,IAML,QAAO,GAMP,EAAKiiB,QAAU,UAEIhwL,IAAf+vL,GACF,EAAKngB,cAAcmgB,KA0IzB,OA7KyB,OA6CvB,YAAA9zK,IAAA,SAAIrW,GACF,IAAI1H,EAIJ,OAHI6D,KAAKiuL,SAAWjuL,KAAKiuL,QAAQvtL,eAAemD,KAC9C1H,EAAQ6D,KAAKiuL,QAAQpqL,IAEhB1H,GAQT,YAAA+9H,QAAA,WACE,OAAQl6H,KAAKiuL,SAAWhyL,OAAOkQ,KAAKnM,KAAKiuL,UAAa,IAQxD,YAAAjgB,cAAA,WACE,OAAQhuK,KAAKiuL,UAAW,QAAO,GAAIjuL,KAAKiuL,UAAa,IAMvD,YAAAlgB,cAAA,WACE,QAAS/tK,KAAKiuL,SAOhB,YAAArkH,OAAA,SAAO/lE,EAAKmwB,GACV,IAAItjB,EACJA,EAAY,iBAAU7M,GAClB7D,KAAKi0K,YAAYvjK,IACnB1Q,KAAKopH,cAAc,IAAI8kE,EAAYx9K,EAAW7M,EAAKmwB,IAErDtjB,EAAY,mBACR1Q,KAAKi0K,YAAYvjK,IACnB1Q,KAAKopH,cAAc,IAAI8kE,EAAYx9K,EAAW7M,EAAKmwB,KAQvD,YAAA05I,kBAAA,SAAkB7pK,EAAKy6B,GACrBt+B,KAAKiY,iBAAiB,iBAAUpU,GAAOy6B,IAOzC,YAAAmwI,qBAAA,SAAqB5qK,EAAKy6B,GACxBt+B,KAAKqxB,oBAAoB,iBAAUxtB,GAAOy6B,IAU5C,YAAAkN,IAAA,SAAI3nC,EAAK1H,EAAOgyL,GACd,IAAM/vL,EAAS4B,KAAKiuL,UAAYjuL,KAAKiuL,QAAU,IAC/C,GAAIE,EACF/vL,EAAOyF,GAAO1H,MACT,CACL,IAAM63B,EAAW51B,EAAOyF,GACxBzF,EAAOyF,GAAO1H,EACV63B,IAAa73B,GACf6D,KAAK4pE,OAAO/lE,EAAKmwB,KAYvB,YAAA65I,cAAA,SAAczvK,EAAQ+vL,GACpB,IAAK,IAAMtqL,KAAOzF,EAChB4B,KAAKwrC,IAAI3nC,EAAKzF,EAAOyF,GAAMsqL,IAS/B,YAAAC,gBAAA,SAAgBzyL,GACTA,EAAOsyL,UAGZ,QAAOjuL,KAAKiuL,UAAYjuL,KAAKiuL,QAAU,IAAKtyL,EAAOsyL,UASrD,YAAAI,MAAA,SAAMxqL,EAAKsqL,GACT,GAAInuL,KAAKiuL,SAAWpqL,KAAO7D,KAAKiuL,QAAS,CACvC,IAAMj6J,EAAWh0B,KAAKiuL,QAAQpqL,UACvB7D,KAAKiuL,QAAQpqL,IAChB,QAAQ7D,KAAKiuL,WACfjuL,KAAKiuL,QAAU,MAEZE,GACHnuL,KAAK4pE,OAAO/lE,EAAKmwB,KAIzB,EA7KA,CAAyB,mDClFzB,SAMEs6J,eAAgB,siBC2BlB,cACE,mBACE,cAAO,YAEP,EAAK/wD,GAED,EAAe,WAGnB,EAAKpsG,KAED,EAAiB,aAGrB,EAAK66I,GAAiD,EAAe,WAMrE,EAAKuiB,UAAY,IAgFrB,OApGyB,OA2BvB,YAAAplI,QAAA,aACInpD,KAAKuuL,UACPvuL,KAAKopH,cAAc,aASrB,YAAAolE,YAAA,WACE,OAAOxuL,KAAKuuL,WASd,YAAAE,WAAA,SAAWpwL,EAAMigC,GACf,GAAIh+B,MAAMiF,QAAQlH,GAAO,CAGvB,IAFA,IAAMk+B,EAAMl+B,EAAKG,OACX2N,EAAO,IAAI7L,MAAMi8B,GACdj9B,EAAI,EAAGA,EAAIi9B,IAAOj9B,EACzB6M,EAAK7M,IAAK,QAAOU,KAAM3B,EAAKiB,GAAIg/B,GAElC,OAAOnyB,EAEP,OAAO,QAAOnM,KAA4B,EAAQs+B,IAUtD,YAAAowJ,aAAA,SAAarwL,EAAMigC,GACjB,IAAIz6B,EACJ,GAAIvD,MAAMiF,QAAQlH,GAAO,CACvB,IAAMk+B,EAAMl+B,EAAKG,OACjBqF,EAAM,IAAIvD,MAAMi8B,GAChB,IAAK,IAAIj9B,EAAI,EAAGA,EAAIi9B,IAAOj9B,EACzBuE,EAAIvE,IAAK,QAAWU,KAAM3B,EAAKiB,GAAIg/B,QAGrCz6B,GAAM,QAAW7D,KAA4B,EAAQs+B,GAGvD,OADsB,EAAWqwJ,OAAS9qL,EACnCA,GAST,YAAA+qL,WAAA,SAAWvwL,EAAMigC,GACf,IAAMz6B,EAA4B,EAAW8qL,OAC7C,GAAI9qL,GAmDD,SAAiBA,GACtB,GAAIvD,MAAMiF,QAAQ1B,GAChB,IAAK,IAAIvE,EAAI,EAAG8sK,EAAKvoK,EAAIrF,OAAQc,EAAI8sK,IAAM9sK,GACzC,QAAcuE,EAAIvE,SAGpB,QAA6D,GAxD3DuvL,CAAQhrL,QACH,GAAIvD,MAAMiF,QAAQlH,GACvB,IAAK,IAAIiB,EAAI,EAAG8sK,EAAK/tK,EAAKG,OAAQc,EAAI8sK,IAAM9sK,EAC1CU,KAAKqxB,oBAAoBhzB,EAAKiB,GAAIg/B,QAGpCt+B,KAAKqxB,oBAAoBhzB,EAAMigC,IAGrC,EApGA,CAAyB,KAgHzBwwJ,EAAWjvL,UAAU09H,GAYrBuxD,EAAWjvL,UAAUsxB,KASrB29J,EAAWjvL,UAAUmsK,GAkBrB,kjBC6HA,QAhPA,YAME,WAAY4E,EAAW1oI,EAAO6jI,GAA9B,MACE,cAAO,KAEDtuK,EAAUsuK,GAA4B,UAK5C,EAAK6E,UAAYA,EAMjB,EAAK1oI,MAAQA,EAQb,EAAK6mJ,YAAc,KAQnB,EAAKlrL,IAAM,GAMX,EAAKmrL,iBACoB/wL,IAAvBR,EAAQ29C,WAA2B,IAAM39C,EAAQ29C,WAOnD,EAAK6zI,kBAAoB,GAKzB,EAAK30G,cAAgB78E,EAAQ68E,cAuLjC,OA9OmB,OA6DjB,YAAAnxB,QAAA,WACEnpD,KAAKopH,cAAc,aAMrB,YAAAthH,QAAA,aAKA,YAAAyxK,OAAA,WACE,OAAOv5K,KAAK6D,IAAM,IAAM7D,KAAK4wK,WAS/B,YAAAse,eAAA,WACE,IAAKlvL,KAAK+uL,YAER,OAAO/uL,KAET,IAAI85K,EAAO95K,KAAK+uL,YAMhB,EAAG,CACD,GAAIjV,EAAK5K,YAAc,WAIrB,OADAlvK,KAAKgvL,YAAc,EACZlV,EAETA,EAAOA,EAAKiV,kBACLjV,GAGT,OAAO95K,MAOT,YAAAmvL,oBAAA,WACE,GAAKnvL,KAAK+uL,YAAV,CAIA,IAAIjV,EAAO95K,KAAK+uL,YAKZrzJ,EAAO17B,KAEX,EAAG,CACD,GAAI85K,EAAK5K,YAAc,WAAkB,CAIvC4K,EAAKiV,YAAc,KACnB,MACSjV,EAAK5K,YAAc,YAG5BxzI,EAAOo+I,EACEA,EAAK5K,YAAc,SAG5BxzI,EAAKqzJ,YAAcjV,EAAKiV,YAExBrzJ,EAAOo+I,EAETA,EAAOp+I,EAAKqzJ,kBACLjV,KAQX,YAAAsV,aAAA,WACE,OAAOpvL,KAAK4wK,WAMd,YAAA1B,SAAA,WACE,OAAOlvK,KAAKkoC,OAWd,YAAAmnJ,SAAA,SAASnnJ,GACP,GAAIloC,KAAKkoC,QAAU,WAAmBloC,KAAKkoC,MAAQA,EACjD,MAAM,IAAIrnC,MAAM,gCAElBb,KAAKkoC,MAAQA,EACbloC,KAAKmpD,WAUP,YAAA4+E,KAAA,YACE,WASF,YAAAunD,SAAA,SAASxyL,EAAIioB,GACX,IAAK/kB,KAAKgvL,YACR,OAAO,EAGT,IAAI14J,EAAQt2B,KAAKivL,kBAAkBnyL,GACnC,GAAKw5B,GAGE,IAAe,IAAXA,EACT,OAAO,OAHPA,EAAQvR,EACR/kB,KAAKivL,kBAAkBnyL,GAAMw5B,EAK/B,IAAMhG,EAAQvL,EAAOuR,EAAQ,IAAO,GACpC,OAAIhG,GAAStwB,KAAKgvL,YACT,GAEF,QAAO1+J,EAAQtwB,KAAKgvL,cAU7B,YAAAO,aAAA,SAAazyL,GACX,QAAKkD,KAAKgvL,cAG6B,IAAhChvL,KAAKivL,kBAAkBnyL,IAOhC,YAAA0yL,cAAA,SAAc1yL,GACRkD,KAAKgvL,cACPhvL,KAAKivL,kBAAkBnyL,IAAO,IAGpC,EA9OA,CAAmB,ghBClCnB,QApCA,wEAkCA,OAlCwB,OAItB,YAAA2yL,YAAA,SAAY5M,GACV,KAAO7iL,KAAK0vL,oBACG1vL,KAAK2vL,WACTpW,WAAYsJ,IAGnB7iL,KAAKqC,MAAMyF,WAQjB,YAAA8nL,mBAAA,WACE,GAAwB,IAApB5vL,KAAKw4K,WAAT,CAGA,IAAM30K,EAAM7D,KAAK6vL,eAEX/9H,GADY,QAAQjuD,GACN,GACpB7D,KAAKwC,QACH,SAAUs3K,GACJA,EAAKlJ,UAAU,KAAO9+G,IACxB9xD,KAAKwU,QAAO,QAAOslK,EAAKlJ,YACxBkJ,EAAKhyK,YAEPmP,KAAKjX,SAGb,EAlCA,CAAwB,2DCExB,iBAOE,WAAYylD,EAAMH,EAAMK,EAAMJ,GAI5BvlD,KAAKylD,KAAOA,EAKZzlD,KAAKslD,KAAOA,EAKZtlD,KAAK2lD,KAAOA,EAKZ3lD,KAAKulD,KAAOA,EAiGhB,OA1FE,YAAAyP,SAAA,SAAS47G,GACP,OAAO5wK,KAAK8vL,WAAWlf,EAAU,GAAIA,EAAU,KAOjD,YAAAmf,kBAAA,SAAkBC,GAChB,OACEhwL,KAAKylD,MAAQuqI,EAAUvqI,MACvBuqI,EAAU1qI,MAAQtlD,KAAKslD,MACvBtlD,KAAK2lD,MAAQqqI,EAAUrqI,MACvBqqI,EAAUzqI,MAAQvlD,KAAKulD,MAS3B,YAAAuqI,WAAA,SAAWx7I,EAAGC,GACZ,OAAOv0C,KAAKylD,MAAQnR,GAAKA,GAAKt0C,KAAKslD,MAAQtlD,KAAK2lD,MAAQpR,GAAKA,GAAKv0C,KAAKulD,MAOzE,YAAA0qI,OAAA,SAAOD,GACL,OACEhwL,KAAKylD,MAAQuqI,EAAUvqI,MACvBzlD,KAAK2lD,MAAQqqI,EAAUrqI,MACvB3lD,KAAKslD,MAAQ0qI,EAAU1qI,MACvBtlD,KAAKulD,MAAQyqI,EAAUzqI,MAO3B,YAAAinH,OAAA,SAAOwjB,GACDA,EAAUvqI,KAAOzlD,KAAKylD,OACxBzlD,KAAKylD,KAAOuqI,EAAUvqI,MAEpBuqI,EAAU1qI,KAAOtlD,KAAKslD,OACxBtlD,KAAKslD,KAAO0qI,EAAU1qI,MAEpB0qI,EAAUrqI,KAAO3lD,KAAK2lD,OACxB3lD,KAAK2lD,KAAOqqI,EAAUrqI,MAEpBqqI,EAAUzqI,KAAOvlD,KAAKulD,OACxBvlD,KAAKulD,KAAOyqI,EAAUzqI,OAO1B,YAAA2qI,UAAA,WACE,OAAOlwL,KAAKulD,KAAOvlD,KAAK2lD,KAAO,GAMjC,YAAAy6H,QAAA,WACE,MAAO,CAACpgL,KAAKmwL,WAAYnwL,KAAKkwL,cAMhC,YAAAC,SAAA,WACE,OAAOnwL,KAAKslD,KAAOtlD,KAAKylD,KAAO,GAOjC,YAAAsiE,WAAA,SAAWioE,GACT,OACEhwL,KAAKylD,MAAQuqI,EAAU1qI,MACvBtlD,KAAKslD,MAAQ0qI,EAAUvqI,MACvBzlD,KAAK2lD,MAAQqqI,EAAUzqI,MACvBvlD,KAAKulD,MAAQyqI,EAAUrqI,MAG7B,EA3HA,GAqIO,SAASyqI,EAAe3qI,EAAMH,EAAMK,EAAMJ,EAAMyqI,GACrD,YAAkB/xL,IAAd+xL,GACFA,EAAUvqI,KAAOA,EACjBuqI,EAAU1qI,KAAOA,EACjB0qI,EAAUrqI,KAAOA,EACjBqqI,EAAUzqI,KAAOA,EACVyqI,GAEA,IAAIK,EAAU5qI,EAAMH,EAAMK,EAAMJ,GAI3C,wDClJA,SACEirH,KAAM,EACNC,QAAS,EACTC,OAAQ,EAKRttK,MAAO,EACPutK,MAAO,8FCTT,SACE2f,OAAQ,SACRC,WAAY,aACZC,SAAU,qFCML,SAASC,EAAa/hB,EAAQgiB,EAAYC,GAC/C,OAAO,SASKtwI,EAAQsuH,EAAYl6I,EAAMm8J,EAAcC,GAChD,GAAKxwI,EAAL,CAGA,IAAKsuH,IAAe+hB,EAClB,OAAOrwI,EAET,IAAMywI,EAAYJ,EAAa,EAAIj8J,EAAK,GAAKk6I,EACvCoiB,EAAaL,EAAa,EAAIj8J,EAAK,GAAKk6I,EACxCqiB,EAASH,EAAkBA,EAAgB,GAAK,EAChDI,EAASJ,EAAkBA,EAAgB,GAAK,EAClDprI,EAAOipH,EAAO,GAAKoiB,EAAY,EAAIE,EACnC1rI,EAAOopH,EAAO,GAAKoiB,EAAY,EAAIE,EACnCrrI,EAAO+oH,EAAO,GAAKqiB,EAAa,EAAIE,EACpC1rI,EAAOmpH,EAAO,GAAKqiB,EAAa,EAAIE,EAIpCxrI,EAAOH,IAETA,EADAG,GAAQH,EAAOG,GAAQ,GAGrBE,EAAOJ,IAETA,EADAI,GAAQJ,EAAOI,GAAQ,GAIzB,IAAIrR,GAAI,QAAM+L,EAAO,GAAIoF,EAAMH,GAC3B/Q,GAAI,QAAM8L,EAAO,GAAIsF,EAAMJ,GAG/B,GAAIqrI,GAAgBD,GAAUhiB,EAAY,CACxC,IAAMtvH,EAAQ,GAAKsvH,EACnBr6H,IACG+K,EAAQpyC,KAAK7F,IAAI,EAAI6F,KAAK6mB,IAAI,EAAG2xB,EAAOpF,EAAO,IAAMhB,GACtDA,EAAQpyC,KAAK7F,IAAI,EAAI6F,KAAK6mB,IAAI,EAAGusB,EAAO,GAAKiF,GAAQjG,GACvD9K,IACG8K,EAAQpyC,KAAK7F,IAAI,EAAI6F,KAAK6mB,IAAI,EAAG6xB,EAAOtF,EAAO,IAAMhB,GACtDA,EAAQpyC,KAAK7F,IAAI,EAAI6F,KAAK6mB,IAAI,EAAGusB,EAAO,GAAKkF,GAAQlG,GAGzD,MAAO,CAAC/K,EAAGC,KASV,SAAS28I,EAAK7wI,GACnB,OAAOA,0BCzDT,SAAS8wI,EACPxiB,EACAyiB,EACAC,EACAC,GAEA,IAAMC,GAAc,QAASH,GAAaC,EAAa,GACjDG,GAAc,QAAUJ,GAAaC,EAAa,GAExD,OAAIC,EACKrkL,KAAK6d,IAAI6jJ,EAAY1hK,KAAK6mB,IAAIy9J,EAAaC,IAE7CvkL,KAAK6d,IAAI6jJ,EAAY1hK,KAAK6d,IAAIymK,EAAaC,IAepD,SAASC,EAA2B9iB,EAAY+iB,EAAeC,GAC7D,IAAIxqL,EAAS8F,KAAK6d,IAAI6jJ,EAAY+iB,GAalC,OAVAvqL,GACE8F,KAAK7F,IAAI,EAHG,GAGS6F,KAAK6mB,IAAI,EAAG66I,EAAa+iB,EAAgB,IAHlD,GAIZ,EACEC,IACFxqL,EAAS8F,KAAK6mB,IAAI3sB,EAAQwqL,GAC1BxqL,GACE8F,KAAK7F,IAAI,EARC,GAQW6F,KAAK6mB,IAAI,EAAG69J,EAAgBhjB,EAAa,IARpD,GAUV,IAEG,QAAMxnK,EAAQwqL,EAAgB,EAAmB,EAAhBD,GA6InC,SAASE,EACdF,EACAC,EACAE,EACAC,EACAC,GAEA,OAAO,SAQKpjB,EAAYvxD,EAAW3oF,EAAMm8J,GACrC,QAAmB3yL,IAAf0wK,EAA0B,CAC5B,IAAMqjB,EAAeF,EACjBX,EACEO,EACAI,EACAr9J,EACAs9J,GAEFL,EAGJ,YAF8BzzL,IAAf4zL,GAA2BA,IAE1BjB,EAGTa,EACL9iB,EACAqjB,EACAL,IALO,QAAMhjB,EAAYgjB,EAAeK,4eCgpDlD,SAASC,EAAkBz2K,EAAU02K,GACnCl9K,YAAW,WACTwG,EAAS02K,KACR,GAmME,SAASC,EAAgB7jJ,GAC9B,QAAIA,EAAU8jJ,cAAgB9jJ,EAAU+jJ,gBACjC,EAAA1gB,EAAA,IAAiBrjI,EAAU8jJ,aAAc9jJ,EAAU+jJ,gBAItD/jJ,EAAUgkJ,mBAAqBhkJ,EAAUikJ,kBAGzCjkJ,EAAUkkJ,iBAAmBlkJ,EAAUmkJ,eAc7C,SAASC,EAAkB/gB,EAAYl9I,EAAMw4B,EAAU0hH,EAAY/qH,GAEjE,IAAMy9D,EAAWp0G,KAAK63C,KAAKlB,GACvB09D,EAAWr0G,KAAK+3C,KAAKpB,GACrB+uI,EAAOhhB,EAAW,GAAKtwD,EAAWswD,EAAW,GAAKrwD,EAClDsxE,EAAOjhB,EAAW,GAAKtwD,EAAWswD,EAAW,GAAKrwD,EAStD,MAAO,EARPqxE,IAASl+J,EAAK,GAAK,EAAIw4B,EAAS,IAAM0hH,GAKfttD,GAJvBuxE,IAAS3lI,EAAS,GAAKx4B,EAAK,GAAK,GAAKk6I,IAGtCrtD,GAAYA,GAEIsxE,EAAOvxE,EAAWsxE,EAAOrxE,GAK3C,QAlzDA,YAIE,WAAYyqD,GAAZ,MACE,cAAO,KAKP,EAAKxuC,GAKL,EAAKpsG,KAKL,EAAK66I,GAEL,IAAMvuK,GAAU,QAAO,GAAIsuK,UAM3B,EAAK8mB,OAAS,CAAC,EAAG,GAMlB,EAAKC,YAAc,GAMnB,EAAKC,oBAOL,EAAKC,aAAc,QAAiBv1L,EAAQy0K,WAAY,aAMxD,EAAK+gB,cAAgB,CAAC,IAAK,KAM3B,EAAKC,cAAgB,KAMrB,EAAKC,kBAML,EAAKC,gBAML,EAAKC,YAAc,KAMnB,EAAKC,gBAML,EAAKC,cAML,EAAKC,mBAAgBv1L,EAEjBR,EAAQy0K,aACV,UAEEz0K,EAAQ4iD,SACV5iD,EAAQ4iD,QAAS,QAAmB5iD,EAAQ4iD,OAAQ,EAAK2yI,cAEvDv1L,EAAQixK,SACVjxK,EAAQixK,QAAS,QAAejxK,EAAQixK,OAAQ,EAAKskB,cAGvD,EAAKS,cAAch2L,KAm9CvB,OA9jDmB,OAkHjB,YAAAg2L,cAAA,SAAch2L,GACZ,IAAM2wC,GAAa,QAAO,GAAI3wC,GAC9B,IAAK,IAAMoG,KAAO6vL,SACTtlJ,EAAWvqC,GAEpB7D,KAAK6tK,cAAcz/H,GAAY,GAE/B,IAAMulJ,EA8+CH,SAAoCl2L,GACzC,IAAIm2L,EACAlC,EACAC,EAOAkC,OACkB51L,IAApBR,EAAQo2L,QAAwBp2L,EAAQo2L,QAvsDnB,EAysDnBC,OACkB71L,IAApBR,EAAQq2L,QAAwBr2L,EAAQq2L,QAPnB,GASjBC,OACmB91L,IAAvBR,EAAQs2L,WAA2Bt2L,EAAQs2L,WATnB,EAWpBC,OACmB/1L,IAAvBR,EAAQu2L,YAA2Bv2L,EAAQu2L,WAEvCrD,OACmC1yL,IAAvCR,EAAQw2L,4BACJx2L,EAAQw2L,2BAGR3C,OACuBrzL,IAA3BR,EAAQ6zL,gBAA+B7zL,EAAQ6zL,eAE3Cpf,GAAa,QAAiBz0K,EAAQy0K,WAAY,aAClDgiB,EAAahiB,EAAWpD,YAC1BqlB,EAAsB12L,EAAQ02L,oBAC9BzlB,EAASjxK,EAAQixK,OAMrB,GALKslB,GAAetlB,IAAUwD,EAAWkiB,aACvCD,GAAsB,EACtBzlB,EAASwlB,QAGiBj2L,IAAxBR,EAAQ42L,YAA2B,CACrC,IAAMA,EAAc52L,EAAQ42L,YAC5B3C,EAAgB2C,EAAYR,GAC5BlC,OAC2B1zL,IAAzBo2L,EAAYP,GACRO,EAAYP,GACZO,EAAYA,EAAY71L,OAAS,GAGrCo1L,EADEn2L,EAAQwtL,oBDj4DT,SACLoJ,EACAxC,EACAC,EACAC,GAEA,OAAO,SAQKpjB,EAAYvxD,EAAW3oF,EAAMm8J,GACrC,QAAmB3yL,IAAf0wK,EAA0B,CAC5B,IAAM+iB,EAAgB2C,EAAY,GAC5B1C,EAAgB0C,EAAYA,EAAY71L,OAAS,GACjDwzL,EAAeF,EACjBX,EACEO,EACAI,EACAr9J,EACAs9J,GAEFL,EAGJ,GAAId,EAEF,YAD8B3yL,IAAf4zL,GAA2BA,EAInCJ,EACL9iB,EACAqjB,EACAL,IALO,QAAMhjB,EAAYgjB,EAAeK,GAS5C,IAAMsC,EAASrnL,KAAK6d,IAAIknK,EAAcrjB,GAChC78G,EAAI7kD,KAAKwjB,OAAM,QAAkB4jK,EAAaC,EAAQl3E,IAC5D,OAAIi3E,EAAYviI,GAAKkgI,GAAgBlgI,EAAIuiI,EAAY71L,OAAS,EACrD61L,EAAYviI,EAAI,GAElBuiI,EAAYviI,KCq1DEyiI,CACrBF,EACA1D,GACCwD,GAAuBzlB,EACxB4iB,GAGqBM,EACrBF,EACAC,EACAhB,GACCwD,GAAuBzlB,EACxB4iB,OAGC,CAEL,IAKMkD,GALQN,EAGVjnL,KAAK6mB,KAAI,QAASogK,IAAa,QAAUA,IADxC,IAAM,KAAgBO,EAAA,YAAkBviB,EAAWwiB,oBAI/C,IAAoBznL,KAAKghD,IA/DV,EApsDH,GAqwDf0mI,EACJH,EACAvnL,KAAKghD,IAnEiB,EAmEM2mI,SAIR32L,KADtByzL,EAAgBj0L,EAAQi0L,eAEtBmC,EAAU,EAEVnC,EAAgB8C,EAAuBvnL,KAAKghD,IAAI8lI,EAAYF,QAKxC51L,KADtB0zL,EAAgBl0L,EAAQk0L,iBAIlBA,OAFoB1zL,IAApBR,EAAQq2L,aACoB71L,IAA1BR,EAAQi0L,cACMA,EAAgBzkL,KAAKghD,IAAI8lI,EAAYD,GAErCU,EAAuBvnL,KAAKghD,IAAI8lI,EAAYD,GAG9Ca,GAKpBb,EACED,EACA5mL,KAAKwjB,MACHxjB,KAAK7F,IAAIsqL,EAAgBC,GAAiB1kL,KAAK7F,IAAI2sL,IAEvDpC,EAAgBD,EAAgBzkL,KAAKghD,IAAI8lI,EAAYD,EAAUD,GAG7DD,EADEn2L,EAAQwtL,oBD/3DT,SACL4J,EACAnD,EACAoD,EACAjD,EACAC,EACAC,GAEA,OAAO,SAQKpjB,EAAYvxD,EAAW3oF,EAAMm8J,GACrC,QAAmB3yL,IAAf0wK,EAA0B,CAC5B,IAAMqjB,EAAeF,EACjBX,EACEO,EACAI,EACAr9J,EACAs9J,GAEFL,EACEC,OACkB1zL,IAAtB62L,EAAkCA,EAAoB,EAGxD,GAAIlE,EAEF,YAD8B3yL,IAAf4zL,GAA2BA,EAInCJ,EACL9iB,EACAqjB,EACAL,IALO,QAAMhjB,EAAYgjB,EAAeK,GAS5C,IACM+C,EAAe9nL,KAAK+rD,KACxB/rD,KAAK7F,IAAIsqL,EAAgBM,GAAgB/kL,KAAK7F,IAAIytL,GAFlC,MAIZvyI,GAAU86D,GAAa,GAJX,MAI8B,GAC1Ck3E,EAASrnL,KAAK6d,IAAIknK,EAAcrjB,GAChCqmB,EAAkB/nL,KAAKwjB,MAC3BxjB,KAAK7F,IAAIsqL,EAAgB4C,GAAUrnL,KAAK7F,IAAIytL,GAASvyI,GAEjD2yI,EAAYhoL,KAAK6mB,IAAIihK,EAAcC,GACnC/Q,EAAgByN,EAAgBzkL,KAAKghD,IAAI4mI,EAAOI,GACtD,OAAO,QAAMhR,EAAe0N,EAAeK,KC20DtBkD,CACrBnB,EACArC,EACAC,EACAhB,GACCwD,GAAuBzlB,EACxB4iB,GAGqBM,EACrBF,EACAC,EACAhB,GACCwD,GAAuBzlB,EACxB4iB,GAIN,MAAO,CACL6D,WAAYvB,EACZlC,cAAeA,EACfC,cAAeA,EACfkC,QAASA,EACTE,WAAYA,GAjnDqBqB,CAA2B33L,GAM5DuC,KAAKq1L,eAAiB1B,EAAyBjC,cAM/C1xL,KAAKs1L,eAAiB3B,EAAyBhC,cAM/C3xL,KAAKu1L,YAAc5B,EAAyBI,WAM5C/zL,KAAKw1L,aAAe/3L,EAAQ42L,YAM5Br0L,KAAKy1L,SAAWh4L,EAAQ8zD,QAMxBvxD,KAAK01L,SAAW/B,EAAyBE,QAEzC,IAAM8B,EA+6CH,SAAgCl4L,GACrC,QAAuBQ,IAAnBR,EAAQixK,OAAsB,CAChC,IAAMiiB,OAC+B1yL,IAAnCR,EAAQm4L,wBACJn4L,EAAQm4L,uBAEd,OAAOnF,EAAahzL,EAAQixK,OAAQjxK,EAAQ02L,oBAAqBxD,GAGnE,IAAMze,GAAa,QAAiBz0K,EAAQy0K,WAAY,aACxD,IAA2B,IAAvBz0K,EAAQu2L,YAAuB9hB,EAAWkiB,WAAY,CACxD,IAAM1lB,EAASwD,EAAWpD,YAAY3sK,QAGtC,OAFAusK,EAAO,IAAK,IACZA,EAAO,GAAKl9I,EAAAA,EACLi/J,EAAa/hB,GAAQ,GAAO,GAGrC,OAAO,EAh8CoBmnB,CAAuBp4L,GAC1Cm2L,EAAuBD,EAAyBwB,WAChDW,EAilDH,SAAkCr4L,GAGvC,QAD6BQ,IAA3BR,EAAQs4L,gBAA+Bt4L,EAAQs4L,eAC7B,CAClB,IAAMC,EAAoBv4L,EAAQu4L,kBAClC,YAA0B/3L,IAAtB+3L,IAAyD,IAAtBA,GAC9B,WACwB,IAAtBA,EACF,KAC+B,iBAAtBA,GACT,QAAcA,GAEd,KAGT,OAAO,KAhmDoBC,CAAyBx4L,GAMpDuC,KAAKk2L,aAAe,CAClB71I,OAAQs1I,EACRhnB,WAAYilB,EACZhwI,SAAUkyI,GAGZ91L,KAAKm2L,iBAAiCl4L,IAArBR,EAAQmmD,SAAyBnmD,EAAQmmD,SAAW,GACrE5jD,KAAKo2L,uBACgBn4L,IAAnBR,EAAQ4iD,OAAuB5iD,EAAQ4iD,OAAS,WAEvBpiD,IAAvBR,EAAQkxK,WACV3uK,KAAKq2L,cAAc54L,EAAQkxK,iBACD1wK,IAAjBR,EAAQ64L,MACjBt2L,KAAKu2L,QAAQ94L,EAAQ64L,OAazB,sBAAI,sBAAO,KAAX,WACE,OAAOt2L,KAAKy1L,cAEd,SAAYlkI,GACV,IAAIilI,EAAax2L,KAAKy1L,SACtBz1L,KAAKy1L,SAAWlkI,EAChB,IAAMlR,EAASrgD,KAAKy2L,YACpB,GAAIp2I,EAAQ,CACV,IAAMq2I,EAAanlI,GAAW,CAAC,EAAG,EAAG,EAAG,GACxCilI,EAAaA,GAAc,CAAC,EAAG,EAAG,EAAG,GACrC,IAAM7nB,EAAa3uK,KAAKivK,gBAClBzrH,EACHmrH,EAAa,GACb+nB,EAAW,GAAKF,EAAW,GAAKA,EAAW,GAAKE,EAAW,IACxDjzI,EACHkrH,EAAa,GACb+nB,EAAW,GAAKF,EAAW,GAAKA,EAAW,GAAKE,EAAW,IAC9D12L,KAAKo2L,kBAAkB,CAAC/1I,EAAO,GAAKmD,EAASnD,EAAO,GAAKoD,sCAY7D,YAAAkzI,mBAAA,SAAmBtnJ,GACjB,IAAM5xC,EAAUuC,KAAKguK,gBAerB,YAZ2B/vK,IAAvBR,EAAQkxK,WACVlxK,EAAQkxK,WAAa3uK,KAAKivK,gBAE1BxxK,EAAQ64L,KAAOt2L,KAAK8jL,UAItBrmL,EAAQ4iD,OAASrgD,KAAKqnL,oBAGtB5pL,EAAQmmD,SAAW5jD,KAAKgnL,eAEjB,QAAO,GAAIvpL,EAAS4xC,IAoC7B,YAAA8lD,QAAA,SAAQkwF,GACFrlL,KAAK0iL,UAAY1iL,KAAK0hL,gBACxB1hL,KAAK2hL,mBAAmB,GAG1B,IADA,IAAMzhL,EAAO,IAAII,MAAM4b,UAAU1d,QACxBc,EAAI,EAAGA,EAAIY,EAAK1B,SAAUc,EAAG,CACpC,IAAI7B,EAAUye,UAAU5c,GACpB7B,EAAQ4iD,UACV5iD,GAAU,QAAO,GAAIA,IACb4iD,QAAS,QACf5iD,EAAQ4iD,OACRrgD,KAAKw/K,kBAGL/hL,EAAQknH,UACVlnH,GAAU,QAAO,GAAIA,IACbknH,QAAS,QACflnH,EAAQknH,OACR3kH,KAAKw/K,kBAGTt/K,EAAKZ,GAAK7B,EAEZuC,KAAKwnL,gBAAgBvnL,MAAMD,KAAME,IAMnC,YAAAsnL,gBAAA,SAAgBnC,GACd,IACI7pK,EADAo7K,EAAiB16K,UAAU1d,OAG7Bo4L,EAAiB,GACwB,mBAAlC16K,UAAU06K,EAAiB,KAElCp7K,EAAWU,UAAU06K,EAAiB,KACpCA,GAIJ,IADA,IAAIt3L,EAAI,EACDA,EAAIs3L,IAAmB52L,KAAK0iL,UAAWpjL,EAAG,CAE/C,IAAM4oC,EAAQhsB,UAAU5c,GACpB4oC,EAAMmY,QACRrgD,KAAKo2L,kBAAkBluJ,EAAMmY,aAEZpiD,IAAfiqC,EAAMouJ,KACRt2L,KAAKu2L,QAAQruJ,EAAMouJ,MACVpuJ,EAAMymI,YACf3uK,KAAKq2L,cAAcnuJ,EAAMymI,iBAEJ1wK,IAAnBiqC,EAAM0b,UACR5jD,KAAKm2L,YAAYjuJ,EAAM0b,UAG3B,GAAItkD,IAAMs3L,EAAV,CAYA,IALA,IAAItgK,EAAQ5mB,KAAK4F,MACb+qC,EAASrgD,KAAKkzL,cAAc/wL,QAC5BwsK,EAAa3uK,KAAKmzL,kBAClBvvI,EAAW5jD,KAAKozL,gBACdyD,EAAS,GACRv3L,EAAIs3L,IAAkBt3L,EAAG,CAC9B,IAAM7B,EAA2Cye,UAAU5c,GAErDgvC,EAAY,CAChBhY,MAAOA,EACPgV,UAAU,EACVq5E,OAAQlnH,EAAQknH,OAChB9/F,cAA+B5mB,IAArBR,EAAQonB,SAAyBpnB,EAAQonB,SAAW,IAC9DioB,OAAQrvC,EAAQqvC,QAAU,KAC1BtxB,SAAUA,GAmBZ,GAhBI/d,EAAQ4iD,SACV/R,EAAU8jJ,aAAe/xI,EACzB/R,EAAU+jJ,aAAe50L,EAAQ4iD,OAAOl+C,QACxCk+C,EAAS/R,EAAU+jJ,mBAGAp0L,IAAjBR,EAAQ64L,MACVhoJ,EAAUgkJ,iBAAmB3jB,EAC7BrgI,EAAUikJ,iBAAmBvyL,KAAKkkL,qBAAqBzmL,EAAQ64L,MAC/D3nB,EAAargI,EAAUikJ,kBACd90L,EAAQkxK,aACjBrgI,EAAUgkJ,iBAAmB3jB,EAC7BrgI,EAAUikJ,iBAAmB90L,EAAQkxK,WACrCA,EAAargI,EAAUikJ,uBAGAt0L,IAArBR,EAAQmmD,SAAwB,CAClCtV,EAAUkkJ,eAAiB5uI,EAC3B,IAAMtzB,GACJ,QAAO7yB,EAAQmmD,SAAWA,EAAW32C,KAAKmqE,GAAI,EAAInqE,KAAKmqE,IAAMnqE,KAAKmqE,GACpE9oC,EAAUmkJ,eAAiB7uI,EAAWtzB,EACtCszB,EAAWtV,EAAUmkJ,eAInBN,EAAgB7jJ,GAClBA,EAAUhD,UAAW,EAGrBhV,GAASgY,EAAUzpB,SAErBgyK,EAAOzyL,KAAKkqC,GAEdtuC,KAAK8yL,YAAY1uL,KAAKyyL,GACtB72L,KAAK82L,QAAQvV,EAAA,YAAoB,GACjCvhL,KAAK+2L,yBA1DCv7K,GACFy2K,EAAkBz2K,GAAU,IAiElC,YAAAkmK,aAAA,WACE,OAAO1hL,KAAK6yL,OAAOtR,EAAA,aAAsB,GAQ3C,YAAAyV,eAAA,WACE,OAAOh3L,KAAK6yL,OAAOtR,EAAA,eAAwB,GAO7C,YAAA4C,iBAAA,WAEE,IAAIx/D,EADJ3kH,KAAK82L,QAAQvV,EAAA,aAAqBvhL,KAAK6yL,OAAOtR,EAAA,cAE9C,IAAK,IAAIjiL,EAAI,EAAG8sK,EAAKpsK,KAAK8yL,YAAYt0L,OAAQc,EAAI8sK,IAAM9sK,EAAG,CACzD,IAAMu3L,EAAS72L,KAAK8yL,YAAYxzL,GAIhC,GAHIu3L,EAAO,GAAGr7K,UACZy2K,EAAkB4E,EAAO,GAAGr7K,UAAU,IAEnCmpG,EACH,IAAK,IAAIx3D,EAAI,EAAG8pI,EAAKJ,EAAOr4L,OAAQ2uD,EAAI8pI,IAAM9pI,EAAG,CAC/C,IAAM7e,EAAYuoJ,EAAO1pI,GACzB,IAAK7e,EAAUhD,SAAU,CACvBq5E,EAASr2E,EAAUq2E,OACnB,QAKR3kH,KAAK8yL,YAAYt0L,OAAS,EAC1BwB,KAAKwzL,cAAgB7uE,EACrB3kH,KAAKqzL,YAAc,KACnBrzL,KAAKszL,gBAAkBt7I,IACvBh4C,KAAKuzL,cAAgBv7I,KAMvB,YAAA++I,kBAAA,WAKE,QAJiC94L,IAA7B+B,KAAK+yL,sBACPlR,qBAAqB7hL,KAAK+yL,qBAC1B/yL,KAAK+yL,yBAAsB90L,GAExB+B,KAAK0hL,eAAV,CAKA,IAFA,IAAMpsK,EAAM5F,KAAK4F,MACb4hL,GAAO,EACF53L,EAAIU,KAAK8yL,YAAYt0L,OAAS,EAAGc,GAAK,IAAKA,EAAG,CAGrD,IAFA,IAAMu3L,EAAS72L,KAAK8yL,YAAYxzL,GAC5B63L,GAAiB,EACZhqI,EAAI,EAAG8pI,EAAKJ,EAAOr4L,OAAQ2uD,EAAI8pI,IAAM9pI,EAAG,CAC/C,IAAM7e,EAAYuoJ,EAAO1pI,GACzB,IAAI7e,EAAUhD,SAAd,CAGA,IAAMiC,EAAUj4B,EAAMg5B,EAAUhY,MAC5BonE,EACFpvD,EAAUzpB,SAAW,EAAI0oB,EAAUe,EAAUzpB,SAAW,EACtD64E,GAAY,GACdpvD,EAAUhD,UAAW,EACrBoyD,EAAW,GAEXy5F,GAAiB,EAEnB,IAAM5rJ,EAAW+C,EAAUxB,OAAO4wD,GAClC,GAAIpvD,EAAU8jJ,aAAc,CAC1B,IAAM/tE,EAAK/1E,EAAU8jJ,aAAa,GAC5B9tE,EAAKh2E,EAAU8jJ,aAAa,GAC5BnuH,EAAK31B,EAAU+jJ,aAAa,GAC5BnuH,EAAK51B,EAAU+jJ,aAAa,GAClCryL,KAAKqzL,YAAc/kJ,EAAU+jJ,aAC7B,IAAM/9I,EAAI+vE,EAAK94E,GAAY04B,EAAKogD,GAC1B9vE,EAAI+vE,EAAK/4E,GAAY24B,EAAKogD,GAChCtkH,KAAKkzL,cAAgB,CAAC5+I,EAAGC,GAE3B,GAAIjG,EAAUgkJ,kBAAoBhkJ,EAAUikJ,iBAAkB,CAC5D,IAAM5jB,EACS,IAAbpjI,EACI+C,EAAUikJ,iBACVjkJ,EAAUgkJ,iBACV/mJ,GACG+C,EAAUikJ,iBAAmBjkJ,EAAUgkJ,kBAChD,GAAIhkJ,EAAUq2E,OAAQ,CACpB,IAAMlwF,EAAOz0B,KAAKo3L,iBAAiBp3L,KAAKgnL,eAClCqQ,EAAwBr3L,KAAKk2L,aAAavnB,WAC9CA,EACA,EACAl6I,GACA,GAEFz0B,KAAKkzL,cAAgBlzL,KAAKs3L,oBACxBD,EACA/oJ,EAAUq2E,QAGd3kH,KAAKszL,gBAAkBhlJ,EAAUikJ,iBACjCvyL,KAAKmzL,kBAAoBxkB,EACzB3uK,KAAKu3L,mBAAkB,GAEzB,QAC+Bt5L,IAA7BqwC,EAAUkkJ,qBACmBv0L,IAA7BqwC,EAAUmkJ,eACV,CACA,IAAM7uI,EACS,IAAbrY,GACI,QAAO+C,EAAUmkJ,eAAiBxlL,KAAKmqE,GAAI,EAAInqE,KAAKmqE,IACpDnqE,KAAKmqE,GACL9oC,EAAUkkJ,eACVjnJ,GACG+C,EAAUmkJ,eAAiBnkJ,EAAUkkJ,gBAC9C,GAAIlkJ,EAAUq2E,OAAQ,CACpB,IAAM6yE,EAAsBx3L,KAAKk2L,aAAatyI,SAC5CA,GACA,GAEF5jD,KAAKkzL,cAAgBlzL,KAAKy3L,sBACxBD,EACAlpJ,EAAUq2E,QAGd3kH,KAAKuzL,cAAgBjlJ,EAAUmkJ,eAC/BzyL,KAAKozL,gBAAkBxvI,EAIzB,GAFA5jD,KAAKu3L,mBAAkB,GACvBL,GAAO,GACF5oJ,EAAUhD,SACb,OAGJ,GAAI6rJ,EAAgB,CAClBn3L,KAAK8yL,YAAYxzL,GAAK,KACtBU,KAAK82L,QAAQvV,EAAA,aAAqB,GAClCvhL,KAAKqzL,YAAc,KACnBrzL,KAAKszL,gBAAkBt7I,IACvBh4C,KAAKuzL,cAAgBv7I,IACrB,IAAMx8B,EAAWq7K,EAAO,GAAGr7K,SACvBA,GACFy2K,EAAkBz2K,GAAU,IAKlCxb,KAAK8yL,YAAc9yL,KAAK8yL,YAAY/pL,OAAOq4B,SACvC81J,QAAqCj5L,IAA7B+B,KAAK+yL,sBACf/yL,KAAK+yL,oBAAsBvzK,sBACzBxf,KAAK+2L,kBAAkB9/K,KAAKjX,UAUlC,YAAAy3L,sBAAA,SAAsB7zI,EAAU+gE,GAC9B,IAAItkE,EACEupI,EAAgB5pL,KAAKqnL,oBAM3B,YALsBppL,IAAlB2rL,IACFvpI,EAAS,CAACupI,EAAc,GAAKjlE,EAAO,GAAIilE,EAAc,GAAKjlE,EAAO,KAClE,QAAiBtkE,EAAQuD,EAAW5jD,KAAKgnL,gBACzC,QAAc3mI,EAAQskE,IAEjBtkE,GAQT,YAAAi3I,oBAAA,SAAoB3oB,EAAYhqD,GAC9B,IAAItkE,EACEupI,EAAgB5pL,KAAKqnL,oBACrBqQ,EAAoB13L,KAAKivK,gBAU/B,YATsBhxK,IAAlB2rL,QAAqD3rL,IAAtBy5L,IAOjCr3I,EAAS,CALPskE,EAAO,GACNgqD,GAAchqD,EAAO,GAAKilE,EAAc,IAAO8N,EAEhD/yE,EAAO,GACNgqD,GAAchqD,EAAO,GAAKilE,EAAc,IAAO8N,IAG7Cr3I,GAST,YAAA+2I,iBAAA,SAAiBO,GACf,IAAMljK,EAAOz0B,KAAKizL,cAClB,GAAI0E,EAAc,CAChB,IAAMrnI,EAAI77B,EAAK,GACT+7B,EAAI/7B,EAAK,GACf,MAAO,CACLxnB,KAAKknB,IAAIm8B,EAAIrjD,KAAK63C,IAAI6yI,IACpB1qL,KAAKknB,IAAIq8B,EAAIvjD,KAAK+3C,IAAI2yI,IACxB1qL,KAAKknB,IAAIm8B,EAAIrjD,KAAK+3C,IAAI2yI,IACpB1qL,KAAKknB,IAAIq8B,EAAIvjD,KAAK63C,IAAI6yI,KAG1B,OAAOljK,GAWX,YAAAgvJ,gBAAA,SAAgBmU,GACd53L,KAAKizL,cAAgB3yL,MAAMiF,QAAQqyL,GAC/BA,EAASz1L,QACT,CAAC,IAAK,KACLnC,KAAK0hL,gBACR1hL,KAAK2hL,mBAAmB,IAU5B,YAAA8U,UAAA,WACE,IAAMp2I,EAASrgD,KAAKqnL,oBACpB,OAAKhnI,GAGE,QAAiBA,EAAQrgD,KAAKw/K,iBAF5Bn/H,GASX,YAAAgnI,kBAAA,WACE,OACErnL,KAAKka,IAAIw5K,EAAapD,SAO1B,YAAAzI,eAAA,WACE,OAAO7nL,KAAKk2L,cAMd,YAAAnK,uBAAA,WACE,OAAO/rL,KAAKka,IAAI,wBAOlB,YAAAyoK,SAAA,SAASkV,GACP,YAAkB55L,IAAd45L,GACFA,EAAU,GAAK73L,KAAK6yL,OAAO,GAC3BgF,EAAU,GAAK73L,KAAK6yL,OAAO,GACpBgF,GAEA73L,KAAK6yL,OAAO1wL,SAcvB,YAAA21L,gBAAA,SAAgBF,GACd,IAAMlpB,EAAS1uK,KAAK+3L,wBAAwBH,GAC5C,OAAO,QAAalpB,EAAQ1uK,KAAKw/K,kBAQnC,YAAAuY,wBAAA,SAAwBH,GACtB,IAAMnjK,EAAOmjK,GAAY53L,KAAKg4L,+BACxB33I,EACJrgD,KAAKqnL,qBAEP,OAAOhnI,EAAQ,GACf,IAAMsuH,EAAqC3uK,KAAKivK,iBAChD,YAAsBhxK,IAAf0wK,EAA0B,GACjC,IAAM/qH,EAAmC5jD,KAAKgnL,cAG9C,OAFA,YAAoB/oL,IAAb2lD,EAAwB,IAExB,QAAkBvD,EAAQsuH,EAAY/qH,EAAUnvB,IAQzD,YAAAwjK,iBAAA,WACE,OAAOj4L,KAAKq1L,gBAQd,YAAA6C,iBAAA,WACE,OAAOl4L,KAAKs1L,gBAQd,YAAA6C,WAAA,WACE,OACEn4L,KAAKo4L,qBAAqBp4L,KAAKs1L,iBASnC,YAAA+C,WAAA,SAAW/B,GACTt2L,KAAKyzL,cAAczzL,KAAK22L,mBAAmB,CAAC7C,QAASwC,MAQvD,YAAAgC,WAAA,WACE,OACEt4L,KAAKo4L,qBAAqBp4L,KAAKq1L,iBASnC,YAAAkD,WAAA,SAAWjC,GACTt2L,KAAKyzL,cAAczzL,KAAK22L,mBAAmB,CAAC9C,QAASyC,MAQvD,YAAAkC,uBAAA,SAAuB9vL,GACrB1I,KAAKyzL,cAAczzL,KAAK22L,mBAAmB,CAAC1L,oBAAqBviL,MAQnE,YAAA82K,cAAA,WACE,OAAOx/K,KAAKgzL,aASd,YAAA/jB,cAAA,WACE,OAAwCjvK,KAAKka,IAAIw5K,EAAanD,aAShE,YAAAkI,eAAA,WACE,OAAOz4L,KAAKw1L,cAWd,YAAAkD,uBAAA,SAAuBhqB,EAAQkpB,GAC7B,OAAO53L,KAAKopL,gCACV,QAAe1a,EAAQ1uK,KAAKw/K,iBAC5BoY,IAWJ,YAAAxO,+BAAA,SAA+B1a,EAAQkpB,GACrC,IAAMnjK,EAAOmjK,GAAY53L,KAAKg4L,+BACxBzG,GAAc,QAAS7iB,GAAUj6I,EAAK,GACtC+8J,GAAc,QAAU9iB,GAAUj6I,EAAK,GAC7C,OAAOxnB,KAAK6mB,IAAIy9J,EAAaC,IAS/B,YAAAmH,8BAAA,SAA8BC,GAC5B,IAAM/D,EAAQ+D,GAAa,EACrBlH,EAAgB1xL,KAAK64L,yBAAyB74L,KAAKq1L,gBACnD1D,EAAgB3xL,KAAKs1L,eACrBxhK,EAAM7mB,KAAK7F,IAAIsqL,EAAgBC,GAAiB1kL,KAAK7F,IAAIytL,GAC/D,OAAO,SAKK14L,GAER,OADmBu1L,EAAgBzkL,KAAKghD,IAAI4mI,EAAO14L,EAAQ23B,KAYjE,YAAAkzJ,YAAA,WACE,OAA8BhnL,KAAKka,IAAIw5K,EAAalD,WAStD,YAAAsI,8BAAA,SAA8BF,GAC5B,IAAMG,EAAW9rL,KAAK7F,IAAIwxL,GAAa,GACjClH,EAAgB1xL,KAAK64L,yBAAyB74L,KAAKq1L,gBACnD1D,EAAgB3xL,KAAKs1L,eACrBxhK,EAAM7mB,KAAK7F,IAAIsqL,EAAgBC,GAAiBoH,EACtD,OAAO,SAKKpqB,GAER,OADc1hK,KAAK7F,IAAIsqL,EAAgB/iB,GAAcoqB,EAAWjlK,IAYtE,YAAAkkK,6BAAA,SAA6BL,GAC3B,IAAIljK,EAAOz0B,KAAKo3L,iBAAiBO,GAC3BpmI,EAAUvxD,KAAKy1L,SAOrB,OANIlkI,IACF98B,EAAO,CACLA,EAAK,GAAK88B,EAAQ,GAAKA,EAAQ,GAC/B98B,EAAK,GAAK88B,EAAQ,GAAKA,EAAQ,KAG5B98B,GAMT,YAAAy6I,SAAA,WACE,IAAMgD,EAAalyK,KAAKw/K,gBAClB7Q,EAAa3uK,KAAKivK,gBAClBrrH,EAAW5jD,KAAKgnL,cAClB3mI,EACFrgD,KAAKqnL,oBAED91H,EAAUvxD,KAAKy1L,SACrB,GAAIlkI,EAAS,CACX,IAAMynI,EAAch5L,KAAKg4L,+BACzB33I,EAASqyI,EACPryI,EACArgD,KAAKo3L,mBACL,CAAC4B,EAAY,GAAK,EAAIznI,EAAQ,GAAIynI,EAAY,GAAK,EAAIznI,EAAQ,IAC/Do9G,EACA/qH,GAGJ,MAAO,CACLvD,OAAQA,EAAOl+C,MAAM,GACrB+vK,gBAA2Bj0K,IAAfi0K,EAA2BA,EAAa,KACpDvD,WAAYA,EACZqU,WAAYhjL,KAAKqzL,YACjBpQ,eAAgBjjL,KAAKszL,gBACrBpQ,aAAcljL,KAAKuzL,cACnB3vI,SAAUA,EACV0yI,KAAMt2L,KAAK8jL,YAWf,YAAAA,QAAA,WACE,IAAIwS,EACE3nB,EAAa3uK,KAAKivK,gBAIxB,YAHmBhxK,IAAf0wK,IACF2nB,EAAOt2L,KAAKo4L,qBAAqBzpB,IAE5B2nB,GAST,YAAA8B,qBAAA,SAAqBzpB,GACnB,IACI76I,EAAKigK,EADLzxI,EAAStiD,KAAK01L,UAAY,EAE9B,GAAI11L,KAAKw1L,aAAc,CACrB,IAAMxmI,GAAU,QAAkBhvD,KAAKw1L,aAAc7mB,EAAY,GACjErsH,EAAS0M,EACTl7B,EAAM9zB,KAAKw1L,aAAaxmI,GAEtB+kI,EADE/kI,GAAWhvD,KAAKw1L,aAAah3L,OAAS,EAC3B,EAEAs1B,EAAM9zB,KAAKw1L,aAAaxmI,EAAU,QAGjDl7B,EAAM9zB,KAAKq1L,eACXtB,EAAa/zL,KAAKu1L,YAEpB,OAAOjzI,EAASr1C,KAAK7F,IAAI0sB,EAAM66I,GAAc1hK,KAAK7F,IAAI2sL,IASxD,YAAA7P,qBAAA,SAAqBoS,GACnB,GAAIt2L,KAAKw1L,aAAc,CACrB,GAAIx1L,KAAKw1L,aAAah3L,QAAU,EAC9B,OAAO,EAET,IAAMy6L,GAAY,QAChBhsL,KAAKwjB,MAAM6lK,GACX,EACAt2L,KAAKw1L,aAAah3L,OAAS,GAEvBu1L,EACJ/zL,KAAKw1L,aAAayD,GAAaj5L,KAAKw1L,aAAayD,EAAY,GAC/D,OACEj5L,KAAKw1L,aAAayD,GAClBhsL,KAAKghD,IAAI8lI,GAAY,QAAMuC,EAAO2C,EAAW,EAAG,IAGlD,OACEj5L,KAAKq1L,eAAiBpoL,KAAKghD,IAAIjuD,KAAKu1L,YAAae,EAAOt2L,KAAK01L,WAenE,YAAAn2H,IAAA,SAAI25H,EAAkBntB,GAEpB,IAAIplD,EAOJ,IANA,OACErmH,MAAMiF,QAAQ2zL,IAEV,mBADuB,EAAwC,sBAEnE,IAEE54L,MAAMiF,QAAQ2zL,GAAmB,EACnC,SAAQ,QAAQA,GAAmB,IACnC,IAAMxqB,GAAS,QAAewqB,EAAkBl5L,KAAKw/K,iBACrD74D,GAAW,QAAkB+nD,QACxB,GAAIwqB,EAAiBC,YAAcC,EAAA,SAClC1qB,GAAS,QACbwqB,EAAiBpqB,YACjB9uK,KAAKw/K,kBAEP74D,GAAW,QAAkB+nD,IACpBx5E,OAAOl1F,KAAKgnL,eAAe,QAAUtY,QACzC,CACL,IAAM2qB,GAAiB,UAErB1yE,EADE0yE,EAEAH,EACG7vK,QACAi2H,UAAU+5C,EAAgBr5L,KAAKw/K,iBAGzB0Z,EAIfl5L,KAAKqpL,YAAY1iE,EAAUolD,IAQ7B,YAAAod,yBAAA,SAAyBxiE,GAUvB,IATA,IAAM/iE,EAAW5jD,KAAKgnL,cAChB3lE,EAAWp0G,KAAK63C,IAAIlB,GACpB09D,EAAWr0G,KAAK+3C,KAAKpB,GACrB01I,EAAS3yE,EAAS4yE,qBAClBC,EAAS7yE,EAAS8yE,YACpBC,EAAU,IACVC,EAAU,IACVC,GAAU,IACVC,GAAU,IACLv6L,EAAI,EAAG8sK,EAAKktB,EAAO96L,OAAQc,EAAI8sK,EAAI9sK,GAAKk6L,EAAQ,CACvD,IAAM7G,EAAO2G,EAAOh6L,GAAK+hH,EAAWi4E,EAAOh6L,EAAI,GAAKgiH,EAC9CsxE,EAAO0G,EAAOh6L,GAAKgiH,EAAWg4E,EAAOh6L,EAAI,GAAK+hH,EACpDq4E,EAAUzsL,KAAK6d,IAAI4uK,EAAS/G,GAC5BgH,EAAU1sL,KAAK6d,IAAI6uK,EAAS/G,GAC5BgH,EAAU3sL,KAAK6mB,IAAI8lK,EAASjH,GAC5BkH,EAAU5sL,KAAK6mB,IAAI+lK,EAASjH,GAE9B,MAAO,CAAC8G,EAASC,EAASC,EAASC,IAOrC,YAAAxQ,YAAA,SAAY1iE,EAAUolD,GACpB,IAAMtuK,EAAUsuK,GAAe,GAC3Bt3I,EAAOh3B,EAAQg3B,KACdA,IACHA,EAAOz0B,KAAKg4L,gCAEd,IAGIrG,EAHEpgI,OACgBtzD,IAApBR,EAAQ8zD,QAAwB9zD,EAAQ8zD,QAAU,CAAC,EAAG,EAAG,EAAG,GACxDvC,OAA8B/wD,IAApBR,EAAQuxD,SAAwBvxD,EAAQuxD,QAGtD2iI,OAD4B1zL,IAA1BR,EAAQk0L,cACMl0L,EAAQk0L,mBACK1zL,IAApBR,EAAQq2L,QACD9zL,KAAKkkL,qBAAqBzmL,EAAQq2L,SAElC,EAGlB,IAAM5K,EAAgBlpL,KAAKmpL,yBAAyBxiE,GAGhDgoD,EAAa3uK,KAAKopL,+BAA+BF,EAAe,CAClEz0J,EAAK,GAAK88B,EAAQ,GAAKA,EAAQ,GAC/B98B,EAAK,GAAK88B,EAAQ,GAAKA,EAAQ,KAEjCo9G,EAAahsK,MAAMgsK,GACfgjB,EACA1kL,KAAK6mB,IAAI66I,EAAYgjB,GACzBhjB,EAAa3uK,KAAK64L,yBAAyBlqB,EAAY3/G,EAAU,EAAI,GAGrE,IAAMpL,EAAW5jD,KAAKgnL,cAChB1lE,EAAWr0G,KAAK+3C,IAAIpB,GACpBy9D,EAAWp0G,KAAK63C,IAAIlB,GACpBk2I,GAAY,QAAU5Q,GAC5B4Q,EAAU,KAAQvoI,EAAQ,GAAKA,EAAQ,IAAM,EAAKo9G,EAClDmrB,EAAU,KAAQvoI,EAAQ,GAAKA,EAAQ,IAAM,EAAKo9G,EAClD,IAAMloH,EAAUqzI,EAAU,GAAKz4E,EAAWy4E,EAAU,GAAKx4E,EACnD56D,EAAUozI,EAAU,GAAKz4E,EAAWy4E,EAAU,GAAKx4E,EACnDjhE,EAASrgD,KAAKynL,qBAAqB,CAAChhI,EAASC,GAAUioH,GACvDnzJ,EAAW/d,EAAQ+d,SAAW/d,EAAQ+d,SAAW,UAE9Bvd,IAArBR,EAAQonB,SACV7kB,KAAKwnL,gBACH,CACE7Y,WAAYA,EACZtuH,OAAQA,EACRx7B,SAAUpnB,EAAQonB,SAClBioB,OAAQrvC,EAAQqvC,QAElBtxB,IAGFxb,KAAKmzL,kBAAoBxkB,EACzB3uK,KAAKkzL,cAAgB7yI,EACrBrgD,KAAKu3L,mBAAkB,GAAO,GAC9BtF,EAAkBz2K,GAAU,KAWhC,YAAAu+K,SAAA,SAASpoB,EAAYl9I,EAAMw4B,GACzBjtD,KAAKg6L,kBACH,QAAmBroB,EAAY3xK,KAAKw/K,iBACpC/qJ,EACAw4B,IASJ,YAAA+sI,iBAAA,SAAiBroB,EAAYl9I,EAAMw4B,GACjCjtD,KAAKo2L,kBACH1D,EACE/gB,EACAl9I,EACAw4B,EACAjtD,KAAKivK,gBACLjvK,KAAKgnL,iBAaX,YAAAiT,qBAAA,SAAqB55I,EAAQsuH,EAAY/qH,EAAUnvB,GACjD,IAAIylK,EACE3oI,EAAUvxD,KAAKy1L,SACrB,GAAIlkI,GAAWlR,EAAQ,CACrB,IAAM24I,EAAch5L,KAAKg4L,8BAA8Bp0I,GACjDu2I,EAAgBzH,EACpBryI,EACA5rB,EACA,CAACukK,EAAY,GAAK,EAAIznI,EAAQ,GAAIynI,EAAY,GAAK,EAAIznI,EAAQ,IAC/Do9G,EACA/qH,GAEFs2I,EAAc,CACZ75I,EAAO,GAAK85I,EAAc,GAC1B95I,EAAO,GAAK85I,EAAc,IAG9B,OAAOD,GAMT,YAAAxX,MAAA,WACE,QAAS1iL,KAAKqnL,0BAAgDppL,IAAzB+B,KAAKivK,iBAQ5C,YAAAmrB,aAAA,SAAaC,GACX,IAAMh6I,GAAS,QAAiBrgD,KAAKkzL,cAAelzL,KAAKw/K,iBACzDx/K,KAAKs6L,UAAU,CACbj6I,EAAO,GAAKg6I,EAAiB,GAC7Bh6I,EAAO,GAAKg6I,EAAiB,MAQjC,YAAApT,qBAAA,SAAqBoT,GACnB,IAAMh6I,EAASrgD,KAAKkzL,cACpBlzL,KAAKo2L,kBAAkB,CACrB/1I,EAAO,GAAKg6I,EAAiB,GAC7Bh6I,EAAO,GAAKg6I,EAAiB,MAWjC,YAAAE,iBAAA,SAAiBl7I,EAAOskI,GACtB,IAAMh/D,EACJg/D,IAAc,QAAmBA,EAAY3jL,KAAKw/K,iBACpDx/K,KAAK+sL,yBAAyB1tI,EAAOslE,IASvC,YAAAooE,yBAAA,SAAyB1tI,EAAOskI,GAC9B,IAAM6W,EAAWx6L,KAAK0hL,gBAAkB1hL,KAAKg3L,iBACvCviK,EAAOz0B,KAAKo3L,iBAAiBp3L,KAAKgnL,eAClC/C,EAAgBjkL,KAAKk2L,aAAavnB,WACtC3uK,KAAKmzL,kBAAoB9zI,EACzB,EACA5qB,EACA+lK,GAGE7W,IACF3jL,KAAKkzL,cAAgBlzL,KAAKs3L,oBAAoBrT,EAAeN,IAG/D3jL,KAAKmzL,mBAAqB9zI,EAC1Br/C,KAAKu3L,qBAUP,YAAAvL,WAAA,SAAW17J,EAAOqzJ,GAChB3jL,KAAKu6L,iBAAiBttL,KAAKghD,IAAIjuD,KAAKu1L,aAAcjlK,GAAQqzJ,IAU5D,YAAA8W,eAAA,SAAenqK,EAAOqzJ,GAChBA,IACFA,GAAa,QAAmBA,EAAY3jL,KAAKw/K,kBAEnDx/K,KAAK8nL,uBAAuBx3J,EAAOqzJ,IAOrC,YAAAmE,uBAAA,SAAuBx3J,EAAOqzJ,GAC5B,IAAM6W,EAAWx6L,KAAK0hL,gBAAkB1hL,KAAKg3L,iBACvC0D,EAAc16L,KAAKk2L,aAAatyI,SACpC5jD,KAAKozL,gBAAkB9iK,EACvBkqK,GAEE7W,IACF3jL,KAAKkzL,cAAgBlzL,KAAKy3L,sBAAsBiD,EAAa/W,IAE/D3jL,KAAKozL,iBAAmB9iK,EACxBtwB,KAAKu3L,qBASP,YAAA+C,UAAA,SAAUj6I,GACRrgD,KAAKo2L,kBACH/1I,GAAS,QAAmBA,EAAQrgD,KAAKw/K,iBAAmBn/H,IAQhE,YAAA+1I,kBAAA,SAAkB/1I,GAChBrgD,KAAKkzL,cAAgB7yI,EACrBrgD,KAAKu3L,qBAQP,YAAAT,QAAA,SAAQpwL,EAAM4pB,GAGZ,OAFAtwB,KAAK6yL,OAAOnsL,IAAS4pB,EACrBtwB,KAAKmpD,UACEnpD,KAAK6yL,OAAOnsL,IASrB,YAAA2vL,cAAA,SAAc1nB,GACZ3uK,KAAKmzL,kBAAoBxkB,EACzB3uK,KAAKu3L,qBASP,YAAApB,YAAA,SAAYvyI,GACV5jD,KAAKozL,gBAAkBxvI,EACvB5jD,KAAKu3L,qBAQP,YAAAhB,QAAA,SAAQD,GACNt2L,KAAKq2L,cAAcr2L,KAAKkkL,qBAAqBoS,KAW/C,YAAAiB,kBAAA,SAAkBoD,EAAsBC,GACtC,IAAMJ,EACJx6L,KAAK0hL,gBAAkB1hL,KAAKg3L,kBAAoB4D,EAG5CF,EAAc16L,KAAKk2L,aAAatyI,SACpC5jD,KAAKozL,gBACLoH,GAEI/lK,EAAOz0B,KAAKo3L,iBAAiBsD,GAC7BzW,EAAgBjkL,KAAKk2L,aAAavnB,WACtC3uK,KAAKmzL,kBACL,EACA1+J,EACA+lK,GAEIK,EAAY76L,KAAKk2L,aAAa71I,OAClCrgD,KAAKkzL,cACLjP,EACAxvJ,EACA+lK,EACAx6L,KAAKi6L,qBACHj6L,KAAKkzL,cACLjP,EACAyW,EACAjmK,IAIAz0B,KAAKka,IAAIw5K,EAAalD,YAAckK,GACtC16L,KAAKwrC,IAAIkoJ,EAAalD,SAAUkK,GAE9B16L,KAAKka,IAAIw5K,EAAanD,cAAgBtM,IACxCjkL,KAAKwrC,IAAIkoJ,EAAanD,WAAYtM,GAClCjkL,KAAKwrC,IAAI,OAAQxrC,KAAK8jL,WAAW,IAGhC+W,GACA76L,KAAKka,IAAIw5K,EAAapD,UACtB,QAAOtwL,KAAKka,IAAIw5K,EAAapD,QAASuK,IAEvC76L,KAAKwrC,IAAIkoJ,EAAapD,OAAQuK,GAG5B76L,KAAK0hL,iBAAmBiZ,GAC1B36L,KAAKmkL,mBAEPnkL,KAAKwzL,mBAAgBv1L,GAYvB,YAAA0jL,mBAAA,SAAmBiC,EAAckX,EAAyBnX,GACxD,IAAM9+J,OAA4B5mB,IAAjB2lL,EAA6BA,EAAe,IACvDxmE,EAAY09E,GAA2B,EAEvCJ,EAAc16L,KAAKk2L,aAAatyI,SAAS5jD,KAAKozL,iBAC9C3+J,EAAOz0B,KAAKo3L,iBAAiBsD,GAC7BzW,EAAgBjkL,KAAKk2L,aAAavnB,WACtC3uK,KAAKmzL,kBACL/1E,EACA3oF,GAEIomK,EAAY76L,KAAKk2L,aAAa71I,OAClCrgD,KAAKkzL,cACLjP,EACAxvJ,GACA,EACAz0B,KAAKi6L,qBACHj6L,KAAKkzL,cACLjP,EACAyW,EACAjmK,IAIJ,GAAiB,IAAb5P,IAAmB7kB,KAAKwzL,cAK1B,OAJAxzL,KAAKmzL,kBAAoBlP,EACzBjkL,KAAKozL,gBAAkBsH,EACvB16L,KAAKkzL,cAAgB2H,OACrB76L,KAAKu3L,oBAIP,IAAM5yE,EACJg/D,IAA4B,IAAb9+J,EAAiB7kB,KAAKwzL,mBAAgBv1L,GACvD+B,KAAKwzL,mBAAgBv1L,EAGnB+B,KAAKivK,kBAAoBgV,GACzBjkL,KAAKgnL,gBAAkB0T,GACtB16L,KAAKqnL,sBACL,QAAOrnL,KAAKqnL,oBAAqBwT,KAE9B76L,KAAK0hL,gBACP1hL,KAAKmkL,mBAGPnkL,KAAKwnL,gBAAgB,CACnB5jI,SAAU82I,EACVr6I,OAAQw6I,EACRlsB,WAAYsV,EACZp/J,SAAUA,EACVioB,OAAQ,KACR63E,OAAQA,MAWd,YAAAmiE,iBAAA,WACE9mL,KAAK2hL,mBAAmB,GAExB3hL,KAAK82L,QAAQvV,EAAA,cAAsB,IAWrC,YAAAmG,eAAA,SAAe9D,EAAckX,EAAyBnX,GACpD,IAAMh/D,EACJg/D,IAAc,QAAmBA,EAAY3jL,KAAKw/K,iBACpDx/K,KAAK+6L,uBAAuBnX,EAAckX,EAAyBn2E,IAUrE,YAAAo2E,uBAAA,SAAuBnX,EAAckX,EAAyBnX,GAC5D3jL,KAAK82L,QAAQvV,EAAA,eAAuB,GAEpCvhL,KAAK2hL,mBAAmBiC,EAAckX,EAAyBnX,IAUjE,YAAA8D,qBAAA,SAAqB4K,EAAc2I,GACjC,IAAMvmK,EAAOz0B,KAAKo3L,iBAAiBp3L,KAAKgnL,eACxC,OAAOhnL,KAAKk2L,aAAa71I,OACvBgyI,EACA2I,GAAwBh7L,KAAKivK,gBAC7Bx6I,IAaJ,YAAAuvJ,mBAAA,SAAmBiX,EAAYC,GAC7B,IAAMC,EAAYn7L,KAAKkkL,qBAAqB+W,GAC5C,OAAOj7L,KAAKo4L,qBACVp4L,KAAK64L,yBAAyBsC,EAAWD,KAa7C,YAAArC,yBAAA,SAAyBtG,EAAkB2I,GACzC,IAAM99E,EAAY89E,GAAiB,EAC7BzmK,EAAOz0B,KAAKo3L,iBAAiBp3L,KAAKgnL,eAExC,OAAOhnL,KAAKk2L,aAAavnB,WAAW4jB,EAAkBn1E,EAAW3oF,IAErE,EA9jDA,CAAmB,mDC3SnB,SACE2mK,UAAW,EACXC,YAAa,gCCIR,SAAS3uI,EAAa4uI,EAAUC,EAAQC,GAO7C,IANA,IAAI5mF,EAAKD,EACH8mF,EAAaD,GAAkBE,EACjCz5D,EAAM,EACNC,EAAOo5D,EAAS98L,OAChBm9L,GAAQ,EAEL15D,EAAMC,IAIXvtB,GAAO8mF,EAAWH,EADlB1mF,EAAMqtB,GAAQC,EAAOD,GAAQ,IACIs5D,IAEvB,EAERt5D,EAAMrtB,EAAM,GAGZstB,EAAOttB,EACP+mF,GAAShnF,GAKb,OAAOgnF,EAAQ15D,GAAOA,EAUjB,SAASy5D,EAA0B91J,EAAGp6B,GAC3C,OAAOo6B,EAAIp6B,EAAI,EAAIo6B,EAAIp6B,GAAK,EAAI,EAoC3B,SAASowL,EAAkBt5J,EAAKt0B,EAAQovG,GAC7C,IAAMvf,EAAIv7D,EAAI9jC,OACd,GAAI8jC,EAAI,IAAMt0B,EACZ,OAAO,EACF,GAAIA,GAAUs0B,EAAIu7D,EAAI,GAC3B,OAAOA,EAAI,EAEX,IAAIv+F,OAAC,EACL,GAAI89G,EAAY,GACd,IAAK99G,EAAI,EAAGA,EAAIu+F,IAAKv+F,EACnB,GAAIgjC,EAAIhjC,GAAK0O,EACX,OAAO1O,EAAI,OAGV,GAAI89G,EAAY,GACrB,IAAK99G,EAAI,EAAGA,EAAIu+F,IAAKv+F,EACnB,GAAIgjC,EAAIhjC,IAAM0O,EACZ,OAAO1O,OAIX,IAAKA,EAAI,EAAGA,EAAIu+F,IAAKv+F,EAAG,CACtB,GAAIgjC,EAAIhjC,IAAM0O,EACZ,OAAO1O,EACF,GAAIgjC,EAAIhjC,GAAK0O,EAClB,MAAyB,mBAAdovG,EACLA,EAAUpvG,EAAQs0B,EAAIhjC,EAAI,GAAIgjC,EAAIhjC,IAAM,EACnCA,EAAI,EAEJA,EAEAgjC,EAAIhjC,EAAI,GAAK0O,EAASA,EAASs0B,EAAIhjC,GACrCA,EAAI,EAEJA,EAKf,OAAOu+F,EAAI,EASR,SAASg+F,EAAgBv5J,EAAK4kJ,EAAO7wJ,GAC1C,KAAO6wJ,EAAQ7wJ,GAAK,CAClB,IAAMy3E,EAAMxrE,EAAI4kJ,GAChB5kJ,EAAI4kJ,GAAS5kJ,EAAIjM,GACjBiM,EAAIjM,GAAOy3E,IACTo5E,IACA7wJ,GASC,SAASm2I,EAAOlqI,EAAK72B,GAG1B,IAFA,IAAMqwL,EAAYx7L,MAAMiF,QAAQkG,GAAQA,EAAO,CAACA,GAC1CjN,EAASs9L,EAAUt9L,OAChBc,EAAI,EAAGA,EAAId,EAAQc,IAC1BgjC,EAAIA,EAAI9jC,QAAUs9L,EAAUx8L,GA2CzB,SAAS2wL,EAAO8L,EAAMC,GAC3B,IAAMC,EAAOF,EAAKv9L,OAClB,GAAIy9L,IAASD,EAAKx9L,OAChB,OAAO,EAET,IAAK,IAAIc,EAAI,EAAGA,EAAI28L,EAAM38L,IACxB,GAAIy8L,EAAKz8L,KAAO08L,EAAK18L,GACnB,OAAO,EAGX,OAAO,EA6CF,SAAS48L,EAAS55J,EAAK65J,EAAUC,GACtC,IAAMz+E,EAAUw+E,GAAYT,EAC5B,OAAOp5J,EAAIr8B,OAAM,SAAUo2L,EAAY7wK,GACrC,GAAc,IAAVA,EACF,OAAO,EAET,IAAMmiB,EAAMgwE,EAAQr7E,EAAI9W,EAAQ,GAAI6wK,GACpC,QAAS1uJ,EAAM,GAAMyuJ,GAAsB,IAARzuJ,0ICvPhC,SAAS2uJ,EAAOC,EAAWC,GAChC,IAAKD,EACH,MAAM,IAAI,IAAeC,8GCUvBC,EAAgB,oDAQhBC,EAAkB,4BAQjB,SAASC,EAASzwJ,GACvB,MAAqB,iBAAVA,EACFA,EAEApsC,EAASosC,GASpB,SAAS0wJ,EAAU1wJ,GACjB,IAAMlT,EAAK/zB,SAASkS,cAAc,OAElC,GADA6hB,EAAG0uB,MAAMxb,MAAQA,EACM,KAAnBlT,EAAG0uB,MAAMxb,MAAc,CACzBjnC,SAASyR,KAAKa,YAAYyhB,GAC1B,IAAMiqE,EAAMkX,iBAAiBnhF,GAAIkT,MAEjC,OADAjnC,SAASyR,KAAKe,YAAYuhB,GACnBiqE,EAEP,MAAO,GAQJ,IAcCtoD,EAKFkiJ,EAnBOC,GAcLniJ,EAAQ,GAKVkiJ,EAAY,EAET,SAKKphK,GACR,IAAIyQ,EACJ,GAAIyO,EAAMj6C,eAAe+6B,GACvByQ,EAAQyO,EAAMlf,OACT,CACL,GAAIohK,GAtBa,KAsBgB,CAC/B,IAAIv9L,EAAI,EACR,IAAK,IAAMuE,KAAO82C,EACE,IAAP,EAANr7C,cACIq7C,EAAM92C,KACXg5L,GAIR3wJ,EA6BR,SAA6BzQ,GAC3B,IAAImH,EAAG79B,EAAGyG,EAAGo6B,EAAGsG,EAMhB,GAJIwwJ,EAAgB16L,KAAKy5B,KACvBA,EAAImhK,EAAUnhK,IAGZghK,EAAcz6L,KAAKy5B,GAAI,CAEzB,IACIqS,EADE+vD,EAAIpiE,EAAEj9B,OAAS,EAGnBsvC,EADE+vD,GAAK,EACH,EAEA,EAEN,IAAMk/F,EAAiB,IAANl/F,GAAiB,IAANA,EAC5Bj7D,EAAIhgC,SAAS64B,EAAE6K,OAAO,EAAI,EAAIwH,EAAGA,GAAI,IACrC/oC,EAAInC,SAAS64B,EAAE6K,OAAO,EAAI,EAAIwH,EAAGA,GAAI,IACrCtiC,EAAI5I,SAAS64B,EAAE6K,OAAO,EAAI,EAAIwH,EAAGA,GAAI,IAEnClI,EADEm3J,EACEn6L,SAAS64B,EAAE6K,OAAO,EAAI,EAAIwH,EAAGA,GAAI,IAEjC,IAEG,GAALA,IACFlL,GAAKA,GAAK,GAAKA,EACf79B,GAAKA,GAAK,GAAKA,EACfyG,GAAKA,GAAK,GAAKA,EACXuxL,IACFn3J,GAAKA,GAAK,GAAKA,IAGnBsG,EAAQ,CAACtJ,EAAG79B,EAAGyG,EAAGo6B,EAAI,UACS,GAAtBnK,EAAEryB,QAAQ,SAGnBtG,EADAopC,EAAQzQ,EAAEt5B,MAAM,GAAI,GAAGD,MAAM,KAAKgH,IAAIgB,SAER,GAArBuxB,EAAEryB,QAAQ,UAEnB8iC,EAAQzQ,EAAEt5B,MAAM,GAAI,GAAGD,MAAM,KAAKgH,IAAIgB,SAChC9F,KAAK,GACXtB,EAAUopC,KAEV,QAAO,EAAO,IAEhB,OAAOA,EA3EO8wJ,CAAoBvhK,GAC5Bkf,EAAMlf,GAAKyQ,IACT2wJ,EAEJ,OAAO3wJ,IAYN,SAAS+wJ,EAAQ/wJ,GACtB,OAAI5rC,MAAMiF,QAAQ2mC,GACTA,EAEA4wJ,EAAW5wJ,GA+Df,SAASppC,EAAUopC,GAKxB,OAJAA,EAAM,IAAK,QAAOA,EAAM,GAAK,GAAO,EAAG,EAAG,KAC1CA,EAAM,IAAK,QAAOA,EAAM,GAAK,GAAO,EAAG,EAAG,KAC1CA,EAAM,IAAK,QAAOA,EAAM,GAAK,GAAO,EAAG,EAAG,KAC1CA,EAAM,IAAK,QAAMA,EAAM,GAAI,EAAG,GACvBA,EAOF,SAASpsC,EAASosC,GACvB,IAAItJ,EAAIsJ,EAAM,GACVtJ,IAAU,EAAJA,KACRA,EAAKA,EAAI,GAAO,GAElB,IAAI79B,EAAImnC,EAAM,GACVnnC,IAAU,EAAJA,KACRA,EAAKA,EAAI,GAAO,GAElB,IAAIyG,EAAI0gC,EAAM,GAKd,OAJI1gC,IAAU,EAAJA,KACRA,EAAKA,EAAI,GAAO,GAGX,QAAUo3B,EAAI,IAAM79B,EAAI,IAAMyG,EAAI,UADlBvN,IAAbiuC,EAAM,GAAmB,EAAIj/B,KAAKgsD,MAAiB,IAAX/sB,EAAM,IAAY,KACjB,IAO9C,SAASgxJ,EAAczhK,GAI5B,OAHIihK,EAAgBlpL,KAAKioB,KACvBA,EAAImhK,EAAUnhK,IAGdghK,EAAcjpL,KAAKioB,IAA6B,IAAvBA,EAAEryB,QAAQ,UAAwC,IAAtBqyB,EAAEryB,QAAQ,oEC9M5D,SAAS+zL,EAAYjxJ,GAC1B,OAAI5rC,MAAMiF,QAAQ2mC,IACT,QAASA,GAETA,ujBC2JX,QApJA,YAIE,WAAY6/H,GAAZ,WACQtuK,EAAUsuK,GAA4B,KAE5C,YAAM,CACJv3I,QAASvvB,SAASkS,cAAc,OAChCm5D,OAAQ7yE,EAAQ6yE,OAChBtiE,OAAQvQ,EAAQuQ,UAChB,KAEF,IAAM6uB,OACkB5+B,IAAtBR,EAAQo/B,UAA0Bp/B,EAAQo/B,UAAY,YAElDmc,OAA0B/6C,IAAlBR,EAAQu7C,MAAsBv7C,EAAQu7C,MAAQ,IAEtDokJ,OACyBn/L,IAA7BR,EAAQ2/L,iBACJ3/L,EAAQ2/L,iBACR,aAMN,EAAKC,OAAS,KAEO,iBAAVrkJ,GACT,EAAKqkJ,OAASp4L,SAASkS,cAAc,QACrC,EAAKkmL,OAAOxgK,UAAYugK,EACxB,EAAKC,OAAOphD,YAAcjjG,IAE1B,EAAKqkJ,OAASrkJ,EACd,EAAKqkJ,OAAOt9D,UAAU57H,IAAIi5L,IAG5B,IAAME,EAAW7/L,EAAQ6/L,SAAW7/L,EAAQ6/L,SAAW,iBAEjDzhC,EAAS52J,SAASkS,cAAc,UACtC0kJ,EAAOh/H,UAAYA,EAAY,SAC/Bg/H,EAAOxkG,aAAa,OAAQ,UAC5BwkG,EAAOz4G,MAAQk6I,EACfzhC,EAAOtkJ,YAAY,EAAK8lL,QAExBxhC,EAAO5jJ,iBACL42J,EAAA,QACA,EAAK0uB,aAAatmL,KAAK,IACvB,GAGF,IAAMumL,EACJ3gK,EAAY,IAAM,KAAqB,IAAM,KACzCrI,EAAU,EAAKA,eACrBA,EAAQqI,UAAY2gK,EACpBhpK,EAAQjd,YAAYskJ,GAEpB,EAAK4hC,gBAAkBhgM,EAAQigM,WAAajgM,EAAQigM,gBAAaz/L,EAMjE,EAAKqmL,eAAiCrmL,IAArBR,EAAQonB,SAAyBpnB,EAAQonB,SAAW,IAMrE,EAAK84K,eAAiC1/L,IAArBR,EAAQmgM,UAAyBngM,EAAQmgM,SAM1D,EAAKC,eAAY5/L,EAEb,EAAK0/L,WACP,EAAKnpK,QAAQurG,UAAU57H,IAAI,QAmEjC,OAlJqB,OAuFnB,YAAAo5L,aAAA,SAAargM,GACXA,EAAMkgK,sBACuBn/J,IAAzB+B,KAAKy9L,gBACPz9L,KAAKy9L,kBAELz9L,KAAK89L,eAOT,YAAAA,YAAA,WACE,IACM9iB,EADMh7K,KAAKozK,SACAmM,UACjB,GAAKvE,EAAL,CAKA,IAAMp3H,EAAWo3H,EAAKgM,mBACL/oL,IAAb2lD,IACE5jD,KAAKskL,UAAY,GAAK1gI,GAAY,EAAI32C,KAAKmqE,KAAQ,EACrD4jG,EAAK7lF,QAAQ,CACXvxC,SAAU,EACV/+B,SAAU7kB,KAAKskL,UACfx3I,OAAQ,OAGVkuI,EAAKmb,YAAY,MAUvB,YAAA7lH,OAAA,SAAOytH,GACL,IAAM5sB,EAAa4sB,EAAS5sB,WAC5B,GAAKA,EAAL,CAGA,IAAMvtH,EAAWutH,EAAWI,UAAU3tH,SACtC,GAAIA,GAAY5jD,KAAK69L,UAAW,CAC9B,IAAMv+C,EAAY,UAAY17F,EAAW,OACzC,GAAI5jD,KAAK29L,UAAW,CAClB,IAAM3oI,EAAWh1D,KAAKw0B,QAAQurG,UAAU/qE,SAAS,MAC5CA,GAAyB,IAAbpR,EAENoR,GAAyB,IAAbpR,GACrB5jD,KAAKw0B,QAAQurG,UAAUvrH,OAAO,MAF9BxU,KAAKw0B,QAAQurG,UAAU57H,IAAI,MAK/BnE,KAAKq9L,OAAO31I,MAAM43F,UAAYA,EAEhCt/I,KAAK69L,UAAYj6I,IAErB,EAlJA,CAAqBo6I,EAAA,ieC8HrB,QA9HA,YAIE,WAAYjyB,GAAZ,WACQtuK,EAAUsuK,GAA4B,KAE5C,YAAM,CACJv3I,QAASvvB,SAASkS,cAAc,OAChCnJ,OAAQvQ,EAAQuQ,UAChB,KAEF,IAAM6uB,OACkB5+B,IAAtBR,EAAQo/B,UAA0Bp/B,EAAQo/B,UAAY,UAElDvM,OAA0BryB,IAAlBR,EAAQ6yB,MAAsB7yB,EAAQ6yB,MAAQ,EAEtD2tK,OACwBhgM,IAA5BR,EAAQwgM,gBACJxgM,EAAQwgM,gBACRphK,EAAY,MAEZqhK,OACyBjgM,IAA7BR,EAAQygM,iBACJzgM,EAAQygM,iBACRrhK,EAAY,OAEZshK,OACoBlgM,IAAxBR,EAAQ0gM,YAA4B1gM,EAAQ0gM,YAAc,IACtDC,OACqBngM,IAAzBR,EAAQ2gM,aAA6B3gM,EAAQ2gM,aAAe,IAExDC,OACuBpgM,IAA3BR,EAAQ4gM,eAA+B5gM,EAAQ4gM,eAAiB,UAC5DC,OACwBrgM,IAA5BR,EAAQ6gM,gBACJ7gM,EAAQ6gM,gBACR,WAEAC,EAAYt5L,SAASkS,cAAc,UACzConL,EAAU1hK,UAAYohK,EACtBM,EAAUlnI,aAAa,OAAQ,UAC/BknI,EAAUn7I,MAAQi7I,EAClBE,EAAUhnL,YACe,iBAAhB4mL,EACHl5L,SAASy7H,eAAey9D,GACxBA,GAGNI,EAAUtmL,iBACR42J,EAAA,QACA,EAAK0uB,aAAatmL,KAAK,EAAMqZ,IAC7B,GAGF,IAAMkuK,EAAav5L,SAASkS,cAAc,UAC1CqnL,EAAW3hK,UAAYqhK,EACvBM,EAAWnnI,aAAa,OAAQ,UAChCmnI,EAAWp7I,MAAQk7I,EACnBE,EAAWjnL,YACe,iBAAjB6mL,EACHn5L,SAASy7H,eAAe09D,GACxBA,GAGNI,EAAWvmL,iBACT42J,EAAA,QACA,EAAK0uB,aAAatmL,KAAK,GAAOqZ,IAC9B,GAGF,IAAMktK,EACJ3gK,EAAY,IAAM,KAAqB,IAAM,KACzCrI,EAAU,EAAKA,eACrBA,EAAQqI,UAAY2gK,EACpBhpK,EAAQjd,YAAYgnL,GACpB/pK,EAAQjd,YAAYinL,GAMpB,EAAKla,eAAiCrmL,IAArBR,EAAQonB,SAAyBpnB,EAAQonB,SAAW,MA0CzE,OA5HmB,OA0FjB,YAAA04K,aAAA,SAAajtK,EAAOpzB,GAClBA,EAAMkgK,iBACNp9J,KAAKy+L,aAAanuK,IAOpB,YAAAmuK,aAAA,SAAanuK,GACX,IACM0qJ,EADMh7K,KAAKozK,SACAmM,UACjB,GAAKvE,EAAL,CAKA,IAAM6I,EAAc7I,EAAK8I,UACzB,QAAoB7lL,IAAhB4lL,EAA2B,CAC7B,IAAME,EAAU/I,EAAKgJ,mBAAmBH,EAAcvzJ,GAClDtwB,KAAKskL,UAAY,GACftJ,EAAK0G,gBACP1G,EAAKmJ,mBAEPnJ,EAAK7lF,QAAQ,CACXmhG,KAAMvS,EACNl/J,SAAU7kB,KAAKskL,UACfx3I,OAAQ,QAGVkuI,EAAKub,QAAQxS,MAIrB,EA5HA,CAAmBia,EAAA,GCgBZ,SAAS1+I,EAASysH,GACvB,IAAMtuK,EAAUsuK,GAA4B,GAEtC6O,EAAW,IAAIM,EAAA,EAkBrB,YAhBqCj9K,IAAjBR,EAAQ64L,MAAqB74L,EAAQ64L,OAEvD1b,EAASx2K,KAAK,IAAI,EAAK3G,EAAQihM,oBAGQzgM,IAAnBR,EAAQy3F,QAAuBz3F,EAAQy3F,SAE3D0lF,EAASx2K,KAAK,IAAI,EAAO3G,EAAQkhM,sBAIT1gM,IAAxBR,EAAQmhM,aAA4BnhM,EAAQmhM,cAE5ChkB,EAASx2K,KAAK,IAAIy6L,EAAA,EAAYphM,EAAQqhM,qBAGjClkB,sjBCgTT,QAxUA,YAIE,WAAY7O,GAAZ,WACQtuK,EAAUsuK,GAA4B,MAE5C,YAAM,CACJv3I,QAASvvB,SAASkS,cAAc,OAChCm5D,OAAQ7yE,EAAQ6yE,OAChBtiE,OAAQvQ,EAAQuQ,UAChB,MAMG+wL,WAAa95L,SAASkS,cAAc,MAMzC,EAAK6nL,gBACmB/gM,IAAtBR,EAAQwhM,WAA0BxhM,EAAQwhM,UAM5C,EAAKC,eAAiB,EAAKF,WAM3B,EAAKG,0BAA+ClhM,IAAxBR,EAAQ2hM,YAMpC,EAAKC,kBACqBphM,IAAxBR,EAAQ2hM,aAA4B3hM,EAAQ2hM,YAEzC,EAAKC,eACR,EAAKL,YAAa,GAGpB,IAAMniK,OACkB5+B,IAAtBR,EAAQo/B,UAA0Bp/B,EAAQo/B,UAAY,iBAElDygK,OACiBr/L,IAArBR,EAAQ6/L,SAAyB7/L,EAAQ6/L,SAAW,eAEhDgC,OACwBrhM,IAA5BR,EAAQ6hM,gBACJ7hM,EAAQ6hM,gBACRziK,EAAY,UAEZ0iK,OACsBthM,IAA1BR,EAAQ8hM,cAA8B9hM,EAAQ8hM,cAAgB,IAE1DC,OAC0BvhM,IAA9BR,EAAQ+hM,kBACJ/hM,EAAQ+hM,kBACR3iK,EAAY,YAEW,iBAAlB0iK,GAKT,EAAKE,eAAiBx6L,SAASkS,cAAc,QAC7C,EAAKsoL,eAAexjD,YAAcsjD,EAClC,EAAKE,eAAe5iK,UAAY2iK,GAEhC,EAAKC,eAAiBF,EAGxB,IAAMvmJ,OAA0B/6C,IAAlBR,EAAQu7C,MAAsBv7C,EAAQu7C,MAAQ,IAEvC,iBAAVA,GAKT,EAAKqkJ,OAASp4L,SAASkS,cAAc,QACrC,EAAKkmL,OAAOphD,YAAcjjG,EAC1B,EAAKqkJ,OAAOxgK,UAAYyiK,GAExB,EAAKjC,OAASrkJ,EAGhB,IAAM0mJ,EACJ,EAAKL,eAAiB,EAAKL,WAAa,EAAKS,eAAiB,EAAKpC,OAMrE,EAAKsC,cAAgB16L,SAASkS,cAAc,UAC5C,EAAKwoL,cAActoI,aAAa,OAAQ,UACxC,EAAKsoI,cAActoI,aAAa,gBAAiBnyD,QAAQ,EAAK85L,aAC9D,EAAKW,cAAcv8I,MAAQk6I,EAC3B,EAAKqC,cAAcpoL,YAAYmoL,GAE/B,EAAKC,cAAc1nL,iBACjB,UACA,EAAKslL,aAAatmL,KAAK,IACvB,GAGF,IAAMumL,EACJ3gK,EACA,IACA,KACA,IACA,MACC,EAAKmiK,YAAc,EAAKK,aAAe,IAAM,KAAkB,KAC/D,EAAKA,aAAe,GAAK,qBACtB7qK,EAAU,EAAKA,eACrBA,EAAQqI,UAAY2gK,EACpBhpK,EAAQjd,YAAY,EAAKooL,eACzBnrK,EAAQjd,YAAY,EAAKwnL,YAOzB,EAAKa,sBAAwB,GAM7B,EAAK5rB,kBAAmB,IA6L5B,OAtU0B,OAkJxB,YAAA6rB,2BAAA,SAA2B1uB,GAezB,IAVA,IAAMjoD,EAAS,GAMT42E,EAAsB,GAExBV,GAAc,EACZ5sB,EAAmBrB,EAAWqB,iBAC3BlzK,EAAI,EAAG8sK,EAAKoG,EAAiBh0K,OAAQc,EAAI8sK,IAAM9sK,EAAG,CACzD,IAAMqzK,EAAaH,EAAiBlzK,GACpC,IAAK,OAAOqzK,EAAYxB,EAAWI,WAAnC,CAIA,IAAM51K,EACJg3K,EAAgB,MAChBI,YACF,GAAKp3K,EAAL,CAIA,IAAMokM,EAAoBpkM,EAAOqkM,kBACjC,GAAKD,EAAL,CAIA,IAAME,EAAeF,EAAkB5uB,GACvC,GAAK8uB,EAOL,GAHAb,EACEA,IAAuD,IAAxCzjM,EAAOukM,6BAEpB5/L,MAAMiF,QAAQ06L,GAChB,IAAK,IAAI9yI,EAAI,EAAG8pI,EAAKgJ,EAAazhM,OAAQ2uD,EAAI8pI,IAAM9pI,EAC5C8yI,EAAa9yI,KAAM+7D,IACvB42E,EAAoB17L,KAAK67L,EAAa9yI,IACtC+7D,EAAO+2E,EAAa9yI,KAAM,QAIxB8yI,KAAgB/2E,IACpB42E,EAAoB17L,KAAK67L,GACzB/2E,EAAO+2E,IAAgB,MAO7B,OAHKjgM,KAAKm/L,sBACRn/L,KAAKmgM,eAAef,GAEfU,GAOT,YAAAM,eAAA,SAAejvB,GACb,GAAKA,EAAL,CAQA,IAAM8uB,EAAejgM,KAAK6/L,2BAA2B1uB,GAE/CziI,EAAUuxJ,EAAazhM,OAAS,EAMtC,GALIwB,KAAKg0K,kBAAoBtlI,IAC3B1uC,KAAKw0B,QAAQkzB,MAAMuD,QAAUvc,EAAU,GAAK,OAC5C1uC,KAAKg0K,iBAAmBtlI,KAGtB,QAAOuxJ,EAAcjgM,KAAK4/L,uBAA9B,EAIA,QAAe5/L,KAAK++L,YAGpB,IAAK,IAAIz/L,EAAI,EAAG8sK,EAAK6zB,EAAazhM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CACrD,IAAMk1B,EAAUvvB,SAASkS,cAAc,MACvCqd,EAAQk+H,UAAYutC,EAAa3gM,GACjCU,KAAK++L,WAAWxnL,YAAYid,GAG9Bx0B,KAAK4/L,sBAAwBK,QA5BvBjgM,KAAKg0K,mBACPh0K,KAAKw0B,QAAQkzB,MAAMuD,QAAU,OAC7BjrD,KAAKg0K,kBAAmB,IAiC9B,YAAAupB,aAAA,SAAargM,GACXA,EAAMkgK,iBACNp9J,KAAKqgM,gBACLrgM,KAAKk/L,eAAiBl/L,KAAKg/L,YAM7B,YAAAqB,cAAA,WACErgM,KAAKw0B,QAAQurG,UAAUu8B,OAAO,MAC1Bt8J,KAAKg/L,YACP,QAAYh/L,KAAKy/L,eAAgBz/L,KAAKq9L,SAEtC,QAAYr9L,KAAKq9L,OAAQr9L,KAAKy/L,gBAEhCz/L,KAAKg/L,YAAch/L,KAAKg/L,WACxBh/L,KAAK2/L,cAActoI,aAAa,gBAAiBnyD,QAAQlF,KAAKg/L,cAQhE,YAAAsB,eAAA,WACE,OAAOtgM,KAAKq/L,cAQd,YAAAc,eAAA,SAAef,GACTp/L,KAAKq/L,eAAiBD,IAG1Bp/L,KAAKq/L,aAAeD,EACpBp/L,KAAKw0B,QAAQurG,UAAUu8B,OAAO,oBAC1Bt8J,KAAKk/L,gBACPl/L,KAAKqgM,kBAWT,YAAAE,aAAA,SAAatB,GACXj/L,KAAKk/L,eAAiBD,EACjBj/L,KAAKq/L,cAAgBr/L,KAAKg/L,aAAeC,GAG9Cj/L,KAAKqgM,iBASP,YAAAG,aAAA,WACE,OAAOxgM,KAAKg/L,YAQd,YAAA1uH,OAAA,SAAOytH,GACL/9L,KAAKogM,eAAerC,EAAS5sB,aAEjC,EAtUA,CAA0B,8iBCkH1B,QAnHA,YAIE,WAAY1zK,GAAZ,MACE,cAAO,KAED+2B,EAAU/2B,EAAQ+2B,eACpBA,GAAY/2B,EAAQuQ,QAAWwmB,EAAQkzB,MAAM80H,gBAC/ChoJ,EAAQkzB,MAAM80H,cAAgB,QAOhC,EAAKhoJ,QAAUA,GAAoB,KAMnC,EAAKisK,QAAU,KAMf,EAAKrvB,KAAO,KAMZ,EAAKzB,aAAe,GAEhBlyK,EAAQ6yE,SACV,EAAKA,OAAS7yE,EAAQ6yE,QAGpB7yE,EAAQuQ,QACV,EAAK0wK,UAAUjhL,EAAQuQ,UAwE7B,OAjHsB,OAgDpB,YAAAm/J,gBAAA,YACE,QAAWntK,KAAKw0B,SAChB,YAAM24I,gBAAe,YAQvB,YAAAiG,OAAA,WACE,OAAOpzK,KAAKoxK,MAWd,YAAAwM,OAAA,SAAO10K,GACDlJ,KAAKoxK,OACP,QAAWpxK,KAAKw0B,SAElB,IAAK,IAAIl1B,EAAI,EAAG8sK,EAAKpsK,KAAK2vK,aAAanxK,OAAQc,EAAI8sK,IAAM9sK,GACvD,QAAcU,KAAK2vK,aAAarwK,IAElCU,KAAK2vK,aAAanxK,OAAS,EAC3BwB,KAAKoxK,KAAOloK,EACRA,KACalJ,KAAKygM,QAChBzgM,KAAKygM,QACLv3L,EAAIo3K,gCACD/oK,YAAYvX,KAAKw0B,SACpBx0B,KAAKswE,SAAW,MAClBtwE,KAAK2vK,aAAavrK,MAChB,QAAO8E,EAAK,eAAyBlJ,KAAKswE,OAAQtwE,OAGtDkJ,EAAIonE,WASR,YAAAA,OAAA,SAAOytH,KAWP,YAAArf,UAAA,SAAU1wK,GACRhO,KAAKygM,QACe,iBAAXzyL,EAAsB/I,SAASwpE,eAAezgE,GAAUA,GAErE,EAjHA,CAAsB,sGCNf,SAAS7J,EAAIwtK,EAAYrhJ,GAG9B,OAFAqhJ,EAAW,KAAOrhJ,EAAM,GACxBqhJ,EAAW,KAAOrhJ,EAAM,GACjBqhJ,EAuMF,SAASse,EAAOyQ,EAAaC,GAElC,IADA,IAAI1Q,GAAS,EACJ3wL,EAAIohM,EAAYliM,OAAS,EAAGc,GAAK,IAAKA,EAC7C,GAAIohM,EAAYphM,IAAMqhM,EAAYrhM,GAAI,CACpC2wL,GAAS,EACT,MAGJ,OAAOA,EAqBF,SAAS/6F,EAAOy8E,EAAYvsH,GACjC,IAAMi8D,EAAWp0G,KAAK63C,IAAIM,GACpBk8D,EAAWr0G,KAAK+3C,IAAII,GACpB9Q,EAAIq9H,EAAW,GAAKtwD,EAAWswD,EAAW,GAAKrwD,EAC/C/sE,EAAIo9H,EAAW,GAAKtwD,EAAWswD,EAAW,GAAKrwD,EAGrD,OAFAqwD,EAAW,GAAKr9H,EAChBq9H,EAAW,GAAKp9H,EACTo9H,EAoBF,SAAS5hI,EAAM4hI,EAAY5hI,GAGhC,OAFA4hI,EAAW,IAAM5hI,EACjB4hI,EAAW,IAAM5hI,EACV4hI,EA+GF,SAASivB,EAAMjvB,EAAYO,GAChC,GAAIA,EAAWE,WAAY,CACzB,IAAME,GAAa,QAASJ,EAAWpD,aACjC+xB,EAaH,SAAuBlvB,EAAYO,EAAY4uB,GACpD,IAAMzuB,EAAmBH,EAAWpD,YAChC+xB,EAAa,EACjB,GACE3uB,EAAWE,aACVT,EAAW,GAAKU,EAAiB,IAAMV,EAAW,GAAKU,EAAiB,IACzE,CACA,IAAM0uB,EACJD,IAAyB,QAASzuB,GACpCwuB,EAAa5zL,KAAKwjB,OACfkhJ,EAAW,GAAKU,EAAiB,IAAM0uB,GAG5C,OAAOF,EA1BcG,CAAcrvB,EAAYO,EAAYI,GACrDuuB,IACFlvB,EAAW,IAAMkvB,EAAavuB,GAGlC,OAAOX,8FC9YF,IAAMsvB,EAAe,YAgBfC,EAAqB,kBAgBrBC,EAAgB,aAShBC,EAAkB,eAMzBC,EAAY,IAAIrxK,OACpB,CACE,qDACA,4CACA,8DACA,gDACA,8EACA,gEACA,mCACA5tB,KAAK,IACP,KAEIk/L,EAAsB,CAC1B,QACA,UACA,SACA,OACA,aACA,UASWC,EAAoB,SAAUC,GACzC,IAAMz/L,EAAQy/L,EAASz/L,MAAMs/L,GAC7B,IAAKt/L,EACH,OAAO,KAST,IAPA,IAAM2lD,EAAsC,CAC1C6T,WAAY,SACZ9mC,KAAM,QACNizB,MAAO,SACPN,OAAQ,SACRq6I,QAAS,UAEFniM,EAAI,EAAG8sK,EAAKk1B,EAAoB9iM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC5D,IAAMnD,EAAQ4F,EAAMzC,EAAI,QACVrB,IAAV9B,IACFurD,EAAM45I,EAAoBhiM,IAAMnD,GAIpC,OADAurD,EAAMg6I,SAAWh6I,EAAM2oD,OAAOnuG,MAAM,QAC7BwlD,GAOF,SAASi6I,EAAWp3G,GACzB,OAAmB,IAAZA,EAAgB,GAAKrlF,OAAO+H,KAAKgsD,MAAgB,IAAVsxB,GAAiB,uGC3G1D,SAASq3G,EACdC,EACAC,EACAC,EACAC,GAGA,IAAIvuI,EAeJ,OAbEA,EADEsuI,GAAkBA,EAAevjM,OAC1BujM,EAAetvJ,QACf,KACA,IAAImlB,gBAAgBiqI,GAAa,IAAKC,GAAc,KAEpD78L,SAASkS,cAAc,UAE9B0qL,IACFpuI,EAAO73D,MAAQimM,GAEbC,IACFruI,EAAO53D,OAASimM,GAIhBruI,EAAO5c,WAAW,KAAMmrJ,GAsCrB,SAASC,EAAYC,EAASC,GACnC,IAAMhoJ,EAASgoJ,EAAQxlK,WACnBwd,GACFA,EAAOioJ,aAAaF,EAASC,GAQ1B,SAASE,EAAW1tK,GACzB,OAAOA,GAAQA,EAAKgI,WAAahI,EAAKgI,WAAWllB,YAAYkd,GAAQ,KAMhE,SAAS2tK,EAAe3tK,GAC7B,KAAOA,EAAK4tK,WACV5tK,EAAKld,YAAYkd,EAAK4tK,WAYnB,SAASC,EAAgB7tK,EAAM8yG,GAGpC,IAFA,IAAMg7D,EAAc9tK,EAAKmnH,WAEhBx8I,EAAI,KAAWA,EAAG,CACzB,IAAMojM,EAAWD,EAAYnjM,GACvBqjM,EAAWl7D,EAASnoI,GAG1B,IAAKojM,IAAaC,EAChB,MAIED,IAAaC,IAKZD,EAMAC,EAOLhuK,EAAK4rG,aAAaoiE,EAAUD,IAN1B/tK,EAAKld,YAAYirL,KACfpjM,GAPFq1B,EAAKpd,YAAYorL,mCCrHhB,SAASC,EAAOzpJ,GACrB,OAAOlsC,KAAKghD,IAAI9U,EAAG,GASd,SAAS0pJ,EAAQ1pJ,GACtB,OAAO,EAAIypJ,EAAO,EAAIzpJ,GASjB,SAAS2pJ,EAAS3pJ,GACvB,OAAO,EAAIA,EAAIA,EAAI,EAAIA,EAAIA,EAAIA,EAS1B,SAAS0mD,EAAO1mD,GACrB,OAAOA,8HCKF,SAAS1N,EAAOz9B,EAAQ3P,EAAMigC,EAAUykK,EAAUC,GAIvD,GAHID,GAAYA,IAAa/0L,IAC3BswB,EAAWA,EAASrnB,KAAK8rL,IAEvBC,EAAU,CACZ,IAAM,EAAmB1kK,EACzBA,EAAW,WACTtwB,EAAOqjB,oBAAoBhzB,EAAMigC,GACjC,EAAiBr+B,MAAMD,KAAMkc,YAGjC,IAAM+mL,EAAY,CAChBj1L,OAAQA,EACR3P,KAAMA,EACNigC,SAAUA,GAGZ,OADAtwB,EAAOiK,iBAAiB5Z,EAAMigC,GACvB2kK,EAuBF,SAASC,EAAWl1L,EAAQ3P,EAAMigC,EAAUykK,GACjD,OAAOt3J,EAAOz9B,EAAQ3P,EAAMigC,EAAUykK,GAAU,GAY3C,SAASI,EAAct/L,GACxBA,GAAOA,EAAImK,SACbnK,EAAImK,OAAOqjB,oBAAoBxtB,EAAIxF,KAAMwF,EAAIy6B,WAC7C,QAAMz6B,oDC1BV,QA9DA,WAIE,WAAYxF,GAIV2B,KAAKkhL,mBAKLlhL,KAAK86J,iBAOL96J,KAAK3B,KAAOA,EAOZ2B,KAAKgO,OAAS,KAmBlB,OAXE,YAAAovJ,eAAA,WACEp9J,KAAK86J,kBAAmB,GAO1B,YAAAuC,gBAAA,WACEr9J,KAAKkhL,oBAAqB,GAE9B,EA9CA,iDCNA,SAMEkiB,OAAQ,SAORhgM,MAAO,QAEPigM,KAAM,OACNC,MAAO,QACPC,YAAa,cACbpuB,MAAO,QACPC,SAAU,WACVouB,UAAW,YACXC,SAAU,WACVhsB,KAAM,OACNisB,MAAO,QACPC,QAAS,UACTC,SAAU,WACVC,KAAM,OACNC,OAAQ,SACRC,UAAW,YACXC,MAAO,uiBCsJT,QAhKA,YAIE,WAAYC,GAAZ,MACE,cAAO,YAMP,EAAKC,aAAeD,EAMpB,EAAKE,iBAAmB,KAMxB,EAAKC,aAAe,KAMpB,EAAKC,WAAa,OAiItB,OA9JqB,OAoCnB,YAAApsL,iBAAA,SAAiB5Z,EAAMigC,GACrB,GAAKjgC,GAASigC,EAAd,CAGA,IAAMkM,EAAYxqC,KAAKqkM,aAAerkM,KAAKqkM,WAAa,IAClDC,EAAmB95J,EAAUnsC,KAAUmsC,EAAUnsC,GAAQ,KACnB,IAAxCimM,EAAiBl7L,QAAQk1B,IAC3BgmK,EAAiBlgM,KAAKk6B,KAc1B,YAAA8qF,cAAA,SAAclsH,GACZ,IAAMyjC,EAA4B,iBAAVzjC,EAClBmB,EAAOsiC,EAAWzjC,EAAQA,EAAMmB,KAChCmsC,EAAYxqC,KAAKqkM,YAAcrkM,KAAKqkM,WAAWhmM,GACrD,GAAKmsC,EAAL,CAIA,IAAMr/B,EAAMw1B,EAAW,IAAI,KAAMzjC,GAA8B,EAC1DiO,EAAI6C,SACP7C,EAAI6C,OAAShO,KAAKkkM,cAAgBlkM,MAEpC,IAQI4gF,EARE2jH,EAAcvkM,KAAKokM,eAAiBpkM,KAAKokM,aAAe,IACxDI,EACJxkM,KAAKmkM,mBAAqBnkM,KAAKmkM,iBAAmB,IAC9C9lM,KAAQkmM,IACZA,EAAYlmM,GAAQ,EACpBmmM,EAAgBnmM,GAAQ,KAExBkmM,EAAYlmM,GAEd,IAAK,IAAIiB,EAAI,EAAG8sK,EAAK5hI,EAAUhsC,OAAQc,EAAI8sK,IAAM9sK,EAU/C,IAAkB,KARhBshF,EADE,gBAAiBp2C,EAAUlrC,GAE3BkrC,EAAUlrC,GACVghB,YAAYnV,GAGZq/B,EAAUlrC,GACVqB,KAAKX,KAAMmL,KAEYA,EAAI+1K,mBAAoB,CACjDtgG,GAAY,EACZ,MAGJ,GAA4B,KAAtB2jH,EAAYlmM,GAAa,CAC7B,IAAIomM,EAAKD,EAAgBnmM,GAEzB,WADOmmM,EAAgBnmM,GAChBomM,KACLzkM,KAAKqxB,oBAAoBhzB,EAAM,aAE1BkmM,EAAYlmM,GAErB,OAAOuiF,IAMT,YAAAusF,gBAAA,WACEntK,KAAKqkM,aAAc,QAAMrkM,KAAKqkM,aAUhC,YAAAK,aAAA,SAAarmM,GACX,OAAQ2B,KAAKqkM,YAAcrkM,KAAKqkM,WAAWhmM,SAAUJ,GAQvD,YAAAg2K,YAAA,SAAY4M,GACV,QAAK7gL,KAAKqkM,aAGHxjB,EACHA,KAAY7gL,KAAKqkM,WACjBpoM,OAAOkQ,KAAKnM,KAAKqkM,YAAY7lM,OAAS,IAO5C,YAAA6yB,oBAAA,SAAoBhzB,EAAMigC,GACxB,IAAMkM,EAAYxqC,KAAKqkM,YAAcrkM,KAAKqkM,WAAWhmM,GACrD,GAAImsC,EAAW,CACb,IAAMhf,EAAQgf,EAAUphC,QAAQk1B,IACjB,IAAX9S,IACExrB,KAAKmkM,kBAAoB9lM,KAAQ2B,KAAKmkM,kBAExC35J,EAAUhf,GAAS,OACjBxrB,KAAKmkM,iBAAiB9lM,KAExBmsC,EAAUlmC,OAAOknB,EAAO,GACC,IAArBgf,EAAUhsC,eACLwB,KAAKqkM,WAAWhmM,OAMnC,EA9JA,CAAqB,wYCPd,SAASsmM,EAAe98E,GAE7B,IADA,IAAM6mD,EA8KC,CAACl9I,EAAAA,EAAUA,EAAAA,GAAU,KAAW,KA7K9BlyB,EAAI,EAAG8sK,EAAKvkD,EAAYrpH,OAAQc,EAAI8sK,IAAM9sK,EACjDslM,EAAiBl2B,EAAQ7mD,EAAYvoH,IAEvC,OAAOovK,EA0BF,SAASn6J,EAAOm6J,EAAQvyK,EAAO0oM,GACpC,OAAIA,GACFA,EAAW,GAAKn2B,EAAO,GAAKvyK,EAC5B0oM,EAAW,GAAKn2B,EAAO,GAAKvyK,EAC5B0oM,EAAW,GAAKn2B,EAAO,GAAKvyK,EAC5B0oM,EAAW,GAAKn2B,EAAO,GAAKvyK,EACrB0oM,GAEA,CACLn2B,EAAO,GAAKvyK,EACZuyK,EAAO,GAAKvyK,EACZuyK,EAAO,GAAKvyK,EACZuyK,EAAO,GAAKvyK,GAYX,SAASktB,EAAMqlJ,EAAQm2B,GAC5B,OAAIA,GACFA,EAAW,GAAKn2B,EAAO,GACvBm2B,EAAW,GAAKn2B,EAAO,GACvBm2B,EAAW,GAAKn2B,EAAO,GACvBm2B,EAAW,GAAKn2B,EAAO,GAChBm2B,GAEAn2B,EAAOvsK,QAUX,SAAS2iM,EAAyBp2B,EAAQp6H,EAAGC,GAClD,IAAImqC,EAAI6lC,EAeR,OAbE7lC,EADEpqC,EAAIo6H,EAAO,GACRA,EAAO,GAAKp6H,EACRo6H,EAAO,GAAKp6H,EAChBA,EAAIo6H,EAAO,GAEX,GASKhwF,GANV6lC,EADEhwE,EAAIm6H,EAAO,GACRA,EAAO,GAAKn6H,EACRm6H,EAAO,GAAKn6H,EAChBA,EAAIm6H,EAAO,GAEX,GAEenqD,EAWjB,SAASwgF,EAAmBr2B,EAAQiD,GACzC,OAAOme,EAAWphB,EAAQiD,EAAW,GAAIA,EAAW,IAe/C,SAASqzB,EAAeC,EAASC,GACtC,OACED,EAAQ,IAAMC,EAAQ,IACtBA,EAAQ,IAAMD,EAAQ,IACtBA,EAAQ,IAAMC,EAAQ,IACtBA,EAAQ,IAAMD,EAAQ,GAanB,SAASnV,EAAWphB,EAAQp6H,EAAGC,GACpC,OAAOm6H,EAAO,IAAMp6H,GAAKA,GAAKo6H,EAAO,IAAMA,EAAO,IAAMn6H,GAAKA,GAAKm6H,EAAO,GAUpE,SAASy2B,EAAuBz2B,EAAQiD,GAC7C,IAAMlsH,EAAOipH,EAAO,GACd/oH,EAAO+oH,EAAO,GACdppH,EAAOopH,EAAO,GACdnpH,EAAOmpH,EAAO,GACdp6H,EAAIq9H,EAAW,GACfp9H,EAAIo9H,EAAW,GACjByzB,EAAe,YAcnB,OAbI9wJ,EAAImR,EACN2/I,GAA8B,SACrB9wJ,EAAIgR,IACb8/I,GAA8B,WAE5B7wJ,EAAIoR,EACNy/I,GAA8B,UACrB7wJ,EAAIgR,IACb6/I,GAA8B,WAE5BA,IAAiB,cACnBA,EAAe,kBAEVA,EAQF,SAASC,IACd,MAAO,CAAC7zK,EAAAA,EAAUA,EAAAA,GAAU,KAAW,KAYlC,SAAS4+J,EAAe3qI,EAAME,EAAML,EAAMC,EAAMs/I,GACrD,OAAIA,GACFA,EAAW,GAAKp/I,EAChBo/I,EAAW,GAAKl/I,EAChBk/I,EAAW,GAAKv/I,EAChBu/I,EAAW,GAAKt/I,EACTs/I,GAEA,CAACp/I,EAAME,EAAML,EAAMC,GASvB,SAAS+/I,EAAoBT,GAClC,OAAOzU,EAAe5+J,EAAAA,EAAUA,EAAAA,GAAU,KAAW,IAAWqzK,GAQ3D,SAASU,EAA6B5zB,EAAYkzB,GACvD,IAAMvwJ,EAAIq9H,EAAW,GACfp9H,EAAIo9H,EAAW,GACrB,OAAOye,EAAe97I,EAAGC,EAAGD,EAAGC,EAAGswJ,GAqB7B,SAASW,EACdC,EACAnjJ,EACAjsB,EACAmjK,EACAqL,GAGA,OAAOa,EADQJ,EAAoBT,GACEY,EAAiBnjJ,EAAQjsB,EAAKmjK,GAoB9D,SAASvJ,EAAOgV,EAASC,GAC9B,OACED,EAAQ,IAAMC,EAAQ,IACtBD,EAAQ,IAAMC,EAAQ,IACtBD,EAAQ,IAAMC,EAAQ,IACtBD,EAAQ,IAAMC,EAAQ,GA2BnB,SAAS14B,EAAOy4B,EAASC,GAa9B,OAZIA,EAAQ,GAAKD,EAAQ,KACvBA,EAAQ,GAAKC,EAAQ,IAEnBA,EAAQ,GAAKD,EAAQ,KACvBA,EAAQ,GAAKC,EAAQ,IAEnBA,EAAQ,GAAKD,EAAQ,KACvBA,EAAQ,GAAKC,EAAQ,IAEnBA,EAAQ,GAAKD,EAAQ,KACvBA,EAAQ,GAAKC,EAAQ,IAEhBD,EAOF,SAASL,EAAiBl2B,EAAQiD,GACnCA,EAAW,GAAKjD,EAAO,KACzBA,EAAO,GAAKiD,EAAW,IAErBA,EAAW,GAAKjD,EAAO,KACzBA,EAAO,GAAKiD,EAAW,IAErBA,EAAW,GAAKjD,EAAO,KACzBA,EAAO,GAAKiD,EAAW,IAErBA,EAAW,GAAKjD,EAAO,KACzBA,EAAO,GAAKiD,EAAW,IAwBpB,SAAS+zB,EACdh3B,EACA+2B,EACAnjJ,EACAjsB,EACAmjK,GAEA,KAAOl3I,EAASjsB,EAAKisB,GAAUk3I,EAC7BmM,EAASj3B,EAAQ+2B,EAAgBnjJ,GAASmjJ,EAAgBnjJ,EAAS,IAErE,OAAOosH,EAoBF,SAASi3B,EAASj3B,EAAQp6H,EAAGC,GAClCm6H,EAAO,GAAKzhK,KAAK6d,IAAI4jJ,EAAO,GAAIp6H,GAChCo6H,EAAO,GAAKzhK,KAAK6d,IAAI4jJ,EAAO,GAAIn6H,GAChCm6H,EAAO,GAAKzhK,KAAK6mB,IAAI46I,EAAO,GAAIp6H,GAChCo6H,EAAO,GAAKzhK,KAAK6mB,IAAI46I,EAAO,GAAIn6H,GAY3B,SAASqxJ,EAAcl3B,EAAQlzJ,GACpC,IAAI+pB,EAEJ,OADAA,EAAM/pB,EAASqqL,EAAcn3B,OAI7BnpI,EAAM/pB,EAASsqL,EAAep3B,OAI9BnpI,EAAM/pB,EAASuqL,EAAYr3B,KANlBnpI,GAUTA,EAAM/pB,EAASwqL,EAAWt3B,OAInB,EASF,SAASu3B,EAAQv3B,GACtB,IAAI70H,EAAO,EAIX,OAHKg/H,EAAQnK,KACX70H,EAAOs2I,EAASzhB,GAAUwhB,EAAUxhB,IAE/B70H,EASF,SAASgsJ,EAAcn3B,GAC5B,MAAO,CAACA,EAAO,GAAIA,EAAO,IASrB,SAASo3B,EAAep3B,GAC7B,MAAO,CAACA,EAAO,GAAIA,EAAO,IASrB,SAAS+nB,EAAU/nB,GACxB,MAAO,EAAEA,EAAO,GAAKA,EAAO,IAAM,GAAIA,EAAO,GAAKA,EAAO,IAAM,GAS1D,SAASw3B,EAAUx3B,EAAQy3B,GAChC,IAAIx0B,EAYJ,OAXIw0B,IAAW,gBACbx0B,EAAak0B,EAAcn3B,GAClBy3B,IAAW,iBACpBx0B,EAAam0B,EAAep3B,GACnBy3B,IAAW,aACpBx0B,EAAaq0B,EAAWt3B,GACfy3B,IAAW,cACpBx0B,EAAao0B,EAAYr3B,IAEzB,QAAO,EAAO,IAETiD,EAwBF,SAASy0B,EACd/lJ,EACAsuH,EACA/qH,EACAnvB,EACAowK,GAEA,IAAMnmH,EAAMiwF,EAAal6I,EAAK,GAAM,EAC9B8vF,EAAMoqD,EAAal6I,EAAK,GAAM,EAC9BikE,EAAczrF,KAAK63C,IAAIlB,GACvB+0C,EAAc1rF,KAAK+3C,IAAIpB,GACvByiJ,EAAO3nH,EAAKga,EACZ4tG,EAAO5nH,EAAKia,EACZ4tG,EAAOhiF,EAAK7rB,EACZ8tG,EAAOjiF,EAAK5rB,EACZrkD,EAAI+L,EAAO,GACX9L,EAAI8L,EAAO,GACXgkE,EAAK/vE,EAAI+xJ,EAAOG,EAChBviI,EAAK3vB,EAAI+xJ,EAAOG,EAChBriI,EAAK7vB,EAAI+xJ,EAAOG,EAChB55G,EAAKt4C,EAAI+xJ,EAAOG,EAChBliF,EAAK/vE,EAAI+xJ,EAAOC,EAChBriI,EAAK3vB,EAAI+xJ,EAAOC,EAChBniI,EAAK7vB,EAAI+xJ,EAAOC,EAChB15G,EAAKt4C,EAAI+xJ,EAAOC,EACtB,OAAOnW,EACLnjL,KAAK6d,IAAIu5F,EAAIpgD,EAAIE,EAAIyoB,GACrB3/E,KAAK6d,IAAIw5F,EAAIpgD,EAAIE,EAAIyoB,GACrB5/E,KAAK6mB,IAAIuwF,EAAIpgD,EAAIE,EAAIyoB,GACrB3/E,KAAK6mB,IAAIwwF,EAAIpgD,EAAIE,EAAIyoB,GACrBg4G,GAUG,SAAS3U,EAAUxhB,GACxB,OAAOA,EAAO,GAAKA,EAAO,GAqBrB,SAAS+3B,EAAgBxB,EAASC,EAASL,GAChD,IAAM6B,EAAe7B,GA1Yd,CAACrzK,EAAAA,EAAUA,EAAAA,GAAU,KAAW,KAmavC,OAxBIu2F,EAAWk9E,EAASC,IAClBD,EAAQ,GAAKC,EAAQ,GACvBwB,EAAa,GAAKzB,EAAQ,GAE1ByB,EAAa,GAAKxB,EAAQ,GAExBD,EAAQ,GAAKC,EAAQ,GACvBwB,EAAa,GAAKzB,EAAQ,GAE1ByB,EAAa,GAAKxB,EAAQ,GAExBD,EAAQ,GAAKC,EAAQ,GACvBwB,EAAa,GAAKzB,EAAQ,GAE1ByB,EAAa,GAAKxB,EAAQ,GAExBD,EAAQ,GAAKC,EAAQ,GACvBwB,EAAa,GAAKzB,EAAQ,GAE1ByB,EAAa,GAAKxB,EAAQ,IAG5BI,EAAoBoB,GAEfA,EA2BF,SAASV,EAAWt3B,GACzB,MAAO,CAACA,EAAO,GAAIA,EAAO,IASrB,SAASq3B,EAAYr3B,GAC1B,MAAO,CAACA,EAAO,GAAIA,EAAO,IASrB,SAASyhB,EAASzhB,GACvB,OAAOA,EAAO,GAAKA,EAAO,GAUrB,SAAS3mD,EAAWk9E,EAASC,GAClC,OACED,EAAQ,IAAMC,EAAQ,IACtBD,EAAQ,IAAMC,EAAQ,IACtBD,EAAQ,IAAMC,EAAQ,IACtBD,EAAQ,IAAMC,EAAQ,GAUnB,SAASrsB,EAAQnK,GACtB,OAAOA,EAAO,GAAKA,EAAO,IAAMA,EAAO,GAAKA,EAAO,GAQ9C,SAASi4B,EAAej4B,EAAQm2B,GACrC,OAAIA,GACFA,EAAW,GAAKn2B,EAAO,GACvBm2B,EAAW,GAAKn2B,EAAO,GACvBm2B,EAAW,GAAKn2B,EAAO,GACvBm2B,EAAW,GAAKn2B,EAAO,GAChBm2B,GAEAn2B,EAyBJ,SAASk4B,EAAkBl4B,EAAQp4I,EAAOD,GAC/C,IAAI0xF,GAAa,EACX8+E,EAAW1B,EAAuBz2B,EAAQp4I,GAC1CwwK,EAAS3B,EAAuBz2B,EAAQr4I,GAC9C,GACEwwK,IAAa,kBACbC,IAAW,iBAEX/+E,GAAa,MACR,CACL,IAAMtiE,EAAOipH,EAAO,GACd/oH,EAAO+oH,EAAO,GACdppH,EAAOopH,EAAO,GACdnpH,EAAOmpH,EAAO,GACd7pH,EAASvuB,EAAM,GACfyuB,EAASzuB,EAAM,GACf2uB,EAAO5uB,EAAI,GACX6uB,EAAO7uB,EAAI,GACX0wK,GAAS7hJ,EAAOH,IAAWE,EAAOJ,GACpCvQ,OAAC,EAAEC,OAAC,EACDuyJ,EAAS,aAAyBD,EAAW,aAGlD9+E,GADAzzE,EAAI2Q,GAAQC,EAAOK,GAAQwhJ,IACTthJ,GAAQnR,GAAKgR,GAG9ByiE,KACE++E,EAAS,YACVD,EAAW,YAIb9+E,GADAxzE,EAAI2Q,GAAQD,EAAOK,GAAQyhJ,IACTphJ,GAAQpR,GAAKgR,GAG9BwiE,KACE++E,EAAS,YACVD,EAAW,YAIb9+E,GADAzzE,EAAI2Q,GAAQC,EAAOS,GAAQohJ,IACTthJ,GAAQnR,GAAKgR,GAG9ByiE,KACE++E,EAAS,WACVD,EAAW,WAIb9+E,GADAxzE,EAAI2Q,GAAQD,EAAOQ,GAAQshJ,IACTphJ,GAAQpR,GAAKgR,GAGnC,OAAOwiE,EAcF,SAASi/E,EAAet4B,EAAQu4B,EAAapC,EAAYqC,GAC9D,IAAIr/E,EAAc,GAClB,GAAIq/E,EAAY,EAGd,IAFA,IAAMtrM,EAAQ8yK,EAAO,GAAKA,EAAO,GAC3B7yK,EAAS6yK,EAAO,GAAKA,EAAO,GACzBpvK,EAAI,EAAGA,EAAI4nM,IAAa5nM,EAC/BuoH,EAAYzjH,KACVsqK,EAAO,GAAM9yK,EAAQ0D,EAAK4nM,EAC1Bx4B,EAAO,GACPA,EAAO,GACPA,EAAO,GAAM7yK,EAASyD,EAAK4nM,EAC3Bx4B,EAAO,GAAM9yK,EAAQ0D,EAAK4nM,EAC1Bx4B,EAAO,GACPA,EAAO,GACPA,EAAO,GAAM7yK,EAASyD,EAAK4nM,QAI/Br/E,EAAc,CACZ6mD,EAAO,GACPA,EAAO,GACPA,EAAO,GACPA,EAAO,GACPA,EAAO,GACPA,EAAO,GACPA,EAAO,GACPA,EAAO,IAGXu4B,EAAYp/E,EAAaA,EAAa,GAGtC,IAFA,IAAMs/E,EAAK,GACLC,EAAK,GACKt2K,GAAPxxB,EAAI,EAAOuoH,EAAYrpH,QAAQc,EAAIwxB,EAAGxxB,GAAK,EAClD6nM,EAAG/iM,KAAKyjH,EAAYvoH,IACpB8nM,EAAGhjM,KAAKyjH,EAAYvoH,EAAI,IAE1B,OA7xBF,SAA4B6nM,EAAIC,EAAIvC,GAKlC,OAAOzU,EAJMnjL,KAAK6d,IAAI7qB,MAAM,KAAMknM,GACrBl6L,KAAK6d,IAAI7qB,MAAM,KAAMmnM,GACrBn6L,KAAK6mB,IAAI7zB,MAAM,KAAMknM,GACrBl6L,KAAK6mB,IAAI7zB,MAAM,KAAMmnM,GACYvC,GAwxBvCwC,CAAmBF,EAAIC,EAAIvC,GAW7B,SAASjE,EAAMlyB,EAAQwD,GAC5B,IAAMG,EAAmBH,EAAWpD,YAC9BzuH,EAASo2I,EAAU/nB,GACzB,GACEwD,EAAWE,aACV/xH,EAAO,GAAKgyH,EAAiB,IAAMhyH,EAAO,IAAMgyH,EAAiB,IAClE,CACA,IAAMC,EAAa6d,EAAS9d,GAItB/vH,EAHar1C,KAAKwjB,OACrB4vB,EAAO,GAAKgyH,EAAiB,IAAMC,GAEVA,EAC5B5D,EAAO,IAAMpsH,EACbosH,EAAO,IAAMpsH,EAEf,OAAOosH,iDCl1BT,SACE44B,YAAa,cACbC,aAAc,eACdC,SAAU,WACVC,UAAW,2DCJb,SACEC,QAAS,EACTC,aAAc,EACdC,MAAO,EACPC,MAAO,EACPC,MAAO,EACPC,KAAM,oFC6CD,SAASC,EACdjpM,EACAgtD,EACA2iH,EACAC,EACAuD,EACA5H,EACA29B,GAEA,IAAM/sL,EAAM,IAAIb,eAChBa,EAAIT,KACF,MACe,mBAAR1b,EAAqBA,EAAI2vK,EAAQC,EAAYuD,GAAcnzK,GAClE,GAEEgtD,EAAOotI,WAAa,mBACtBj+K,EAAIgtL,aAAe,eAErBhtL,EAAIitL,gBAlEgB,MAuEpBjtL,EAAI8D,OAAS,SAAU9hB,GAErB,IAAKge,EAAIlR,QAAWkR,EAAIlR,QAAU,KAAOkR,EAAIlR,OAAS,IAAM,CAC1D,IAAM3L,EAAO0tD,EAAOotI,UAEhBx9L,OAAM,EACN0C,GAAQ,UAAmBA,GAAQ,SACrC1C,EAASuf,EAAIktL,aACJ/pM,GAAQ,SACjB1C,EAASuf,EAAImtL,eAEX1sM,GAAS,IAAIinK,WAAYa,gBACvBvoJ,EAAIktL,aACJ,oBAGK/pM,GAAQ,mBACjB1C,EAAqCuf,EAAY,UAE/Cvf,EACF2uK,EAGIv+G,EAAOu8I,aAAa3sM,EAAQ,CAC1B+yK,OAAQA,EACR65B,kBAAmBr2B,IAGvBnmH,EAAOy8I,eAAe7sM,IAGxBssM,SAGFA,KAMJ/sL,EAAI0F,QAAUqnL,EACd/sL,EAAI9J,OAYC,SAAS8J,EAAInc,EAAKgtD,GAWvB,OAAO,SAAU2iH,EAAQC,EAAYuD,EAAY5H,EAAS29B,GACxD,IAAMtsM,EAA0D,KAChEqsM,EACEjpM,EACAgtD,EACA2iH,EACAC,EACAuD,GAMA,SAAU4M,EAAU2pB,GAClB9sM,EAAO+sM,YAAY5pB,QACH7gL,IAAZqsK,GACFA,EAAQwU,KAGampB,GAAoB,sDC9JnD,SACEU,aAAc,cACdhlM,KAAM,OACNilM,KAAM,OACNC,IAAK,iGCuNP,QAjKA,WACE,aAKE7oM,KAAKyoM,oBAAiBxqM,EAMtB+B,KAAK8oM,8BAA2B7qM,EAMhC+B,KAAK+oM,oBAAsB,KA6I/B,OAnIE,YAAAC,eAAA,SAAertM,EAAQowK,GACrB,IAAItuK,EACJ,GAAIsuK,EAAa,CACf,IAAI08B,EAAiB18B,EAAY08B,gBAC7B,QAAc18B,EAAY08B,gBAC1BzoM,KAAKwoM,eAAe7sM,GAEtBowK,EAAY2C,QACZ+5B,GACAA,EAAeQ,aAAexU,EAAA,iBAE9BgU,GAAiB,QAAcA,IAChBS,eAAen9B,EAAY2C,QAE5CjxK,EAAU,CACRgrM,eAAgBA,EAChBF,kBAAmBx8B,EAAYw8B,mBAGnC,OAAOvoM,KAAKmpM,aAAa1rM,IAY3B,YAAA0rM,aAAA,SAAa1rM,GACX,OAAO,QACL,CACEgrM,eAAgBzoM,KAAKyoM,eACrBF,kBAAmBvoM,KAAK8oM,0BAE1BrrM,IAQJ,YAAA07L,QAAA,WACE,OAAO,WAWT,YAAAiQ,YAAA,SAAYztM,EAAQowK,GAClB,OAAO,WAWT,YAAAu8B,aAAA,SAAa3sM,EAAQowK,GACnB,OAAO,WAWT,YAAAs9B,aAAA,SAAa1tM,EAAQowK,GACnB,OAAO,WAUT,YAAAy8B,eAAA,SAAe7sM,GACb,OAAO,WAWT,YAAA2tM,aAAA,SAAar3B,EAASlG,GACpB,OAAO,WAWT,YAAAw9B,cAAA,SAAczqB,EAAU/S,GACtB,OAAO,WAWT,YAAAy9B,cAAA,SAAc7iF,EAAUolD,GACtB,OAAO,WAEX,EA/JA,8HCjDO,SAAS09B,EACdhE,EACAnjJ,EACAjsB,EACAmjK,EACA97F,EACAgsG,EACAC,GAEA,IAAIxzH,EAAGh9B,EACD0kD,GAAKxnE,EAAMisB,GAAUk3I,EAC3B,GAAU,IAAN37F,EACF1nB,EAAI7zB,OACC,GAAU,IAANu7C,EACT1nB,EAAI7zB,EACJnJ,EAAIukD,OACC,GAAU,IAANG,EAAS,CAKlB,IAJA,IAAI55B,EAAKwhI,EAAgBnjJ,GACrB4hB,EAAKuhI,EAAgBnjJ,EAAS,GAC9B,EAAS,EACPsnJ,EAAoB,CAAC,GAClBtqM,EAAIgjD,EAASk3I,EAAQl6L,EAAI+2B,EAAK/2B,GAAKk6L,EAAQ,CAClD,IAAMr1H,EAAKshI,EAAgBnmM,GACrB8kE,EAAKqhI,EAAgBnmM,EAAI,GAC/B,GAAU2N,KAAK+gD,MAAMmW,EAAKF,IAAOE,EAAKF,IAAOG,EAAKF,IAAOE,EAAKF,IAC9D0lI,EAAkBxlM,KAAK,GACvB6/D,EAAKE,EACLD,EAAKE,EAEP,IAAMp2D,EAAS0vF,EAAW,EACpBlyE,GAAQ,QAAao+K,EAAmB57L,GAC1Cwd,EAAQ,GACV2tB,GACGnrC,EAAS47L,GAAmBp+K,EAAQ,KACpCo+K,GAAmBp+K,EAAQ,GAAKo+K,GAAmBp+K,EAAQ,IAC9D2qD,EAAI7zB,IAAW92B,EAAQ,GAAKguK,GAE5BrjH,EAAI7zB,EAAS92B,EAAQguK,EAGzB,IAAMt+F,EAAYyuG,EAAgB,EAAIA,EAAgB,EAChDpiB,EAAOmiB,GAAsB,IAAIppM,MAAM46F,GAC7C,IAAS57F,EAAI,EAAGA,EAAI47F,IAAa57F,EAC/BioL,EAAKjoL,QACGrB,IAANk4E,EACIn+B,SACM/5C,IAANk7C,EACAssJ,EAAgBtvH,EAAI72E,IACpB,QAAKmmM,EAAgBtvH,EAAI72E,GAAImmM,EAAgBtvH,EAAIqjH,EAASl6L,GAAI65C,GAEtE,OAAOouI,EAYF,SAASsiB,EACdpE,EACAnjJ,EACAjsB,EACAmjK,EACApnG,EACA03G,GAEA,GAAIzzK,GAAOisB,EACT,OAAO,KAET,IAAIqvH,EACJ,GAAIv/E,EAAIqzG,EAAgBnjJ,EAASk3I,EAAS,GACxC,OAAIsQ,IACFn4B,EAAa8zB,EAAgBtjM,MAAMmgD,EAAQA,EAASk3I,IACzCA,EAAS,GAAKpnG,EAClBu/E,GAEA,KAEJ,GAAI8zB,EAAgBpvK,EAAM,GAAK+7D,EACpC,OAAI03G,IACFn4B,EAAa8zB,EAAgBtjM,MAAMk0B,EAAMmjK,EAAQnjK,IACtCmjK,EAAS,GAAKpnG,EAClBu/E,GAEA,KAIX,GAAIv/E,GAAKqzG,EAAgBnjJ,EAASk3I,EAAS,GACzC,OAAOiM,EAAgBtjM,MAAMmgD,EAAQA,EAASk3I,GAIhD,IAFA,IAAI9wI,EAAKpG,EAASk3I,EACd7wI,EAAKtyB,EAAMmjK,EACR9wI,EAAKC,GAAI,CACd,IAAMisD,EAAOlsD,EAAKC,GAAO,EACrBypC,EAAIqzG,GAAiB7wF,EAAM,GAAK4kF,EAAS,GAC3C7wI,EAAKisD,EAELlsD,EAAKksD,EAAM,EAGf,IAAMm1F,EAAKtE,EAAgB/8I,EAAK8wI,EAAS,GACzC,GAAIpnG,GAAK23G,EACP,OAAOtE,EAAgBtjM,OAAOumD,EAAK,GAAK8wI,GAAS9wI,EAAK,GAAK8wI,EAASA,GAEtE,IACMrgJ,GAAKi5C,EAAI23G,IADJtE,GAAiB/8I,EAAK,GAAK8wI,EAAS,GACpBuQ,GAC3Bp4B,EAAa,GACb,IAAK,IAAIryK,EAAI,EAAGA,EAAIk6L,EAAS,IAAKl6L,EAChCqyK,EAAWvtK,MACT,QACEqhM,GAAiB/8I,EAAK,GAAK8wI,EAASl6L,GACpCmmM,EAAgB/8I,EAAK8wI,EAASl6L,GAC9B65C,IAKN,OADAw4H,EAAWvtK,KAAKguF,GACTu/E,+dCiLT,QApSA,YAME,WAAY9pD,EAAamiF,GAAzB,MACE,cAAO,YAMP,EAAKC,cAAgB,KAMrB,EAAKC,uBAAyB,EAM9B,EAAKvf,WAAa,EAMlB,EAAKwf,mBAAqB,OAEPlsM,IAAf+rM,GAA6B1pM,MAAMiF,QAAQsiH,EAAY,IAMzD,EAAKygE,eACyD,EAG5D0hB,GATF,EAAKI,mBACHJ,EAC6B,KA8PrC,OAlSyB,OAqDvB,YAAAK,iBAAA,SAAiB14B,GACV3xK,KAAKylM,iBAGR,QAAOzlM,KAAKylM,gBAAiB9zB,GAF7B3xK,KAAKylM,gBAAkB9zB,EAAWxvK,QAIpCnC,KAAKmpD,WAQP,YAAA9/B,MAAA,WACE,IAAMihL,EAAa,IAAIC,EACrBvqM,KAAKylM,gBAAgBtjM,QACrBnC,KAAK+vD,QAGP,OADAu6I,EAAWlc,gBAAgBpuL,MACpBsqM,GAUT,YAAAE,eAAA,SAAel2J,EAAGC,EAAGk2J,EAAcC,GACjC,OAAIA,GAAqB,QAAyB1qM,KAAK8uK,YAAax6H,EAAGC,GAC9Dm2J,GAEL1qM,KAAKmqM,mBAAqBnqM,KAAKwuL,gBACjCxuL,KAAK2qL,UAAY19K,KAAK+gD,MACpB,QACEhuD,KAAKylM,gBACL,EACAzlM,KAAKylM,gBAAgBjnM,OACrBwB,KAAKw5L,OACL,IAGJx5L,KAAKmqM,kBAAoBnqM,KAAKwuL,gBAEzB,QACLxuL,KAAKylM,gBACL,EACAzlM,KAAKylM,gBAAgBjnM,OACrBwB,KAAKw5L,OACLx5L,KAAK2qL,WACL,EACAr2I,EACAC,EACAk2J,EACAC,KAeJ,YAAAC,eAAA,SAAenvL,GACb,OAAO,OACLxb,KAAKylM,gBACL,EACAzlM,KAAKylM,gBAAgBjnM,OACrBwB,KAAKw5L,OACLh+K,IAkBJ,YAAAovL,iBAAA,SAAiBx4G,EAAGy4G,GAClB,GACE7qM,KAAK+vD,QAAU,SACf/vD,KAAK+vD,QAAU,SAEf,OAAO,KAET,IAAM+5I,OAAkC7rM,IAApB4sM,GAAgCA,EACpD,OAAOhB,EACL7pM,KAAKylM,gBACL,EACAzlM,KAAKylM,gBAAgBjnM,OACrBwB,KAAKw5L,OACLpnG,EACA03G,IASJ,YAAAgB,eAAA,WACE,OAAO,EAAAC,EAAA,IACL/qM,KAAKylM,gBACL,EACAzlM,KAAKylM,gBAAgBjnM,OACrBwB,KAAKw5L,SAcT,YAAAwR,gBAAA,SAAgBttG,EAAUgsG,GACxB,OAAOD,EACLzpM,KAAKylM,gBACL,EACAzlM,KAAKylM,gBAAgBjnM,OACrBwB,KAAKw5L,OACL97F,EACAgsG,EACA1pM,KAAKw5L,SAST,YAAAjtB,UAAA,WACE,OAAO,OACLvsK,KAAKylM,gBACL,EACAzlM,KAAKylM,gBAAgBjnM,OACrBwB,KAAKw5L,SAOT,YAAAyR,gBAAA,WAKE,OAJIjrM,KAAKkqM,uBAAyBlqM,KAAKwuL,gBACrCxuL,KAAKiqM,cAAgBjqM,KAAKgrM,gBAAgB,GAAKhrM,KAAKiqM,eACpDjqM,KAAKkqM,sBAAwBlqM,KAAKwuL,eAE7BxuL,KAAKiqM,eAQd,YAAAiB,8BAAA,SAA8BC,GAC5B,IAAMC,EAA4B,GAUlC,OATAA,EAA0B5sM,QAAS,QACjCwB,KAAKylM,gBACL,EACAzlM,KAAKylM,gBAAgBjnM,OACrBwB,KAAKw5L,OACL2R,EACAC,EACA,GAEK,IAAIb,EAAWa,EAA2B,SAQnD,YAAAjS,QAAA,WACE,OAAO,iBAST,YAAAkS,iBAAA,SAAiB38B,GACf,OAAO,QACL1uK,KAAKylM,gBACL,EACAzlM,KAAKylM,gBAAgBjnM,OACrBwB,KAAKw5L,OACL9qB,IAUJ,YAAA4Z,eAAA,SAAezgE,EAAamiF,GAC1BhqM,KAAKsrM,UAAUtB,EAAYniF,EAAa,GACnC7nH,KAAKylM,kBACRzlM,KAAKylM,gBAAkB,IAEzBzlM,KAAKylM,gBAAgBjnM,QAAS,EAAA+sM,EAAA,IAC5BvrM,KAAKylM,gBACL,EACA59E,EACA7nH,KAAKw5L,QAEPx5L,KAAKmpD,WAET,EAlSA,CAAyBqiJ,EAAA,keC6UzB,QA3UA,YAQE,WAAY3jF,EAAamiF,EAAYyB,GAArC,MACE,cAAO,KAoBP,GAdA,EAAKC,MAAQ,GAMb,EAAK/gB,WAAa,EAMlB,EAAKwf,mBAAqB,EAEtB7pM,MAAMiF,QAAQsiH,EAAY,IAC5B,EAAKygE,eACgE,EAGnE0hB,QAEG,QAAmB/rM,IAAf+rM,GAA4ByB,EACrC,EAAKrB,mBACHJ,EAC6B,GAE/B,EAAK0B,MAAQD,MACR,CAKL,IAJA,IAAI17I,EAAS,EAAK47I,YACZC,EAA+C,EAC/CnG,EAAkB,GAClBoG,EAAO,GACJvsM,EAAI,EAAG8sK,EAAKw/B,EAAYptM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CACpD,IAAMgrM,EAAasB,EAAYtsM,GACrB,IAANA,IACFywD,EAASu6I,EAAWqB,cAEtB,QAAOlG,EAAiB6E,EAAW/Q,sBACnCsS,EAAKznM,KAAKqhM,EAAgBjnM,QAE5B,EAAK4rM,mBAAmBr6I,EAAQ01I,GAChC,EAAKiG,MAAQG,WAiRnB,OAzU8B,OAiE5B,YAAAC,iBAAA,SAAiBxB,GACVtqM,KAAKylM,iBAGR,QAAOzlM,KAAKylM,gBAAiB6E,EAAW/Q,qBAAqBp3L,SAF7DnC,KAAKylM,gBAAkB6E,EAAW/Q,qBAAqBp3L,QAIzDnC,KAAK0rM,MAAMtnM,KAAKpE,KAAKylM,gBAAgBjnM,QACrCwB,KAAKmpD,WAQP,YAAA9/B,MAAA,WACE,IAAM0iL,EAAkB,IAAIC,EAC1BhsM,KAAKylM,gBAAgBtjM,QACrBnC,KAAK+vD,OACL/vD,KAAK0rM,MAAMvpM,SAGb,OADA4pM,EAAgB3d,gBAAgBpuL,MACzB+rM,GAUT,YAAAvB,eAAA,SAAel2J,EAAGC,EAAGk2J,EAAcC,GACjC,OAAIA,GAAqB,QAAyB1qM,KAAK8uK,YAAax6H,EAAGC,GAC9Dm2J,GAEL1qM,KAAKmqM,mBAAqBnqM,KAAKwuL,gBACjCxuL,KAAK2qL,UAAY19K,KAAK+gD,MACpB,QACEhuD,KAAKylM,gBACL,EACAzlM,KAAK0rM,MACL1rM,KAAKw5L,OACL,IAGJx5L,KAAKmqM,kBAAoBnqM,KAAKwuL,gBAEzB,QACLxuL,KAAKylM,gBACL,EACAzlM,KAAK0rM,MACL1rM,KAAKw5L,OACLx5L,KAAK2qL,WACL,EACAr2I,EACAC,EACAk2J,EACAC,KA0BJ,YAAAE,iBAAA,SAAiBx4G,EAAGy4G,EAAiBoB,GACnC,GACGjsM,KAAK+vD,QAAU,SACd/vD,KAAK+vD,QAAU,UACe,IAAhC/vD,KAAKylM,gBAAgBjnM,OAErB,OAAO,KAET,IAAMsrM,OAAkC7rM,IAApB4sM,GAAgCA,EAC9CvwH,OAAkCr8E,IAApBguM,GAAgCA,EACpD,OFjCG,SACLxG,EACAnjJ,EACAupJ,EACArS,EACApnG,EACA03G,EACAxvH,GAEA,GAAIA,EACF,OAAOuvH,EACLpE,EACAnjJ,EACAupJ,EAAKA,EAAKrtM,OAAS,GACnBg7L,EACApnG,EACA03G,GAGJ,IAAIn4B,EACJ,GAAIv/E,EAAIqzG,EAAgBjM,EAAS,GAC/B,OAAIsQ,IACFn4B,EAAa8zB,EAAgBtjM,MAAM,EAAGq3L,IAC3BA,EAAS,GAAKpnG,EAClBu/E,GAEA,KAGX,GAAI8zB,EAAgBA,EAAgBjnM,OAAS,GAAK4zF,EAChD,OAAI03G,IACFn4B,EAAa8zB,EAAgBtjM,MAAMsjM,EAAgBjnM,OAASg7L,IACjDA,EAAS,GAAKpnG,EAClBu/E,GAEA,KAGX,IAAK,IAAIryK,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC7C,IAAM+2B,EAAMw1K,EAAKvsM,GACjB,GAAIgjD,GAAUjsB,EAAd,CAGA,GAAI+7D,EAAIqzG,EAAgBnjJ,EAASk3I,EAAS,GACxC,OAAO,KACF,GAAIpnG,GAAKqzG,EAAgBpvK,EAAM,GACpC,OAAOwzK,EACLpE,EACAnjJ,EACAjsB,EACAmjK,EACApnG,GACA,GAGJ9vC,EAASjsB,GAEX,OAAO,KExBE61K,CACLlsM,KAAKylM,gBACL,EACAzlM,KAAK0rM,MACL1rM,KAAKw5L,OACLpnG,EACA03G,EACAxvH,IASJ,YAAAwwH,eAAA,WACE,OAAO,EAAAC,EAAA,IACL/qM,KAAKylM,gBACL,EACAzlM,KAAK0rM,MACL1rM,KAAKw5L,SAOT,YAAA2S,QAAA,WACE,OAAOnsM,KAAK0rM,OASd,YAAAU,cAAA,SAAc5gL,GACZ,OAAIA,EAAQ,GAAKxrB,KAAK0rM,MAAMltM,QAAUgtB,EAC7B,KAEF,IAAI,EACTxrB,KAAKylM,gBAAgBtjM,MACT,IAAVqpB,EAAc,EAAIxrB,KAAK0rM,MAAMlgL,EAAQ,GACrCxrB,KAAK0rM,MAAMlgL,IAEbxrB,KAAK+vD,SAST,YAAAs8I,eAAA,WAOE,IANA,IAAM5G,EAAkBzlM,KAAKylM,gBACvBoG,EAAO7rM,KAAK0rM,MACZ37I,EAAS/vD,KAAK+vD,OAEd67I,EAAc,GAChBtpJ,EAAS,EACJhjD,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC7C,IAAM+2B,EAAMw1K,EAAKvsM,GACXgrM,EAAa,IAAI,EACrB7E,EAAgBtjM,MAAMmgD,EAAQjsB,GAC9B05B,GAEF67I,EAAYxnM,KAAKkmM,GACjBhoJ,EAASjsB,EAEX,OAAOu1K,GAMT,YAAAU,iBAAA,WAME,IALA,IAAMC,EAAY,GACZ9G,EAAkBzlM,KAAKylM,gBACzBnjJ,EAAS,EACPupJ,EAAO7rM,KAAK0rM,MACZlS,EAASx5L,KAAKw5L,OACXl6L,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC7C,IAAM+2B,EAAMw1K,EAAKvsM,GACX8yG,EAAWq3F,EACfhE,EACAnjJ,EACAjsB,EACAmjK,EACA,KAEF,QAAO+S,EAAWn6F,GAClB9vD,EAASjsB,EAEX,OAAOk2K,GAQT,YAAArB,8BAAA,SAA8BC,GAC5B,IAAMC,EAA4B,GAC5BoB,EAAiB,GAWvB,OAVApB,EAA0B5sM,QAAS,QACjCwB,KAAKylM,gBACL,EACAzlM,KAAK0rM,MACL1rM,KAAKw5L,OACL2R,EACAC,EACA,EACAoB,GAEK,IAAIR,EACTZ,EACA,OACAoB,IASJ,YAAArT,QAAA,WACE,OAAO,uBAST,YAAAkS,iBAAA,SAAiB38B,GACf,OAAO,QACL1uK,KAAKylM,gBACL,EACAzlM,KAAK0rM,MACL1rM,KAAKw5L,OACL9qB,IAUJ,YAAA4Z,eAAA,SAAezgE,EAAamiF,GAC1BhqM,KAAKsrM,UAAUtB,EAAYniF,EAAa,GACnC7nH,KAAKylM,kBACRzlM,KAAKylM,gBAAkB,IAEzB,IAAMoG,GAAO,EAAAN,EAAA,IACXvrM,KAAKylM,gBACL,EACA59E,EACA7nH,KAAKw5L,OACLx5L,KAAK0rM,OAEP1rM,KAAKylM,gBAAgBjnM,OAAyB,IAAhBqtM,EAAKrtM,OAAe,EAAIqtM,EAAKA,EAAKrtM,OAAS,GACzEwB,KAAKmpD,WAET,EAzUA,CAA8BqiJ,EAAA,2eCkL9B,QAzLA,YAME,WAAY3jF,EAAamiF,GAAzB,MACE,cAAO,YACHA,IAAe1pM,MAAMiF,QAAQsiH,EAAY,IAC3C,EAAKuiF,mBACHJ,EAC6B,GAG/B,EAAK1hB,eACyD,EAG5D0hB,KAqKR,OAvLyB,OA4BvB,YAAAyC,YAAA,SAAY5pJ,GACL7iD,KAAKylM,iBAGR,QAAOzlM,KAAKylM,gBAAiB5iJ,EAAM02I,sBAFnCv5L,KAAKylM,gBAAkB5iJ,EAAM02I,qBAAqBp3L,QAIpDnC,KAAKmpD,WAQP,YAAA9/B,MAAA,WACE,IAAMqjL,EAAa,IAAIC,EACrB3sM,KAAKylM,gBAAgBtjM,QACrBnC,KAAK+vD,QAGP,OADA28I,EAAWte,gBAAgBpuL,MACpB0sM,GAUT,YAAAlC,eAAA,SAAel2J,EAAGC,EAAGk2J,EAAcC,GACjC,GAAIA,GAAqB,QAAyB1qM,KAAK8uK,YAAax6H,EAAGC,GACrE,OAAOm2J,EAIT,IAFA,IAAMjF,EAAkBzlM,KAAKylM,gBACvBjM,EAASx5L,KAAKw5L,OACXl6L,EAAI,EAAG8sK,EAAKq5B,EAAgBjnM,OAAQc,EAAI8sK,EAAI9sK,GAAKk6L,EAAQ,CAChE,IAAMoT,GAAkB,QACtBt4J,EACAC,EACAkxJ,EAAgBnmM,GAChBmmM,EAAgBnmM,EAAI,IAEtB,GAAIstM,EAAkBlC,EAAoB,CACxCA,EAAqBkC,EACrB,IAAK,IAAIz/I,EAAI,EAAGA,EAAIqsI,IAAUrsI,EAC5Bs9I,EAAat9I,GAAKs4I,EAAgBnmM,EAAI6tD,GAExCs9I,EAAajsM,OAASg7L,GAG1B,OAAOkR,GAQT,YAAAI,eAAA,WACE,OAAO,EAAAC,EAAA,IACL/qM,KAAKylM,gBACL,EACAzlM,KAAKylM,gBAAgBjnM,OACrBwB,KAAKw5L,SAUT,YAAA5hF,SAAA,SAASpsF,GACP,IAAMqyE,EAAK79F,KAAKylM,gBAEZzlM,KAAKylM,gBAAgBjnM,OAASwB,KAAKw5L,OADnC,EAEJ,OAAIhuK,EAAQ,GAAKqyE,GAAKryE,EACb,KAEF,IAAI,IACTxrB,KAAKylM,gBAAgBtjM,MACnBqpB,EAAQxrB,KAAKw5L,QACZhuK,EAAQ,GAAKxrB,KAAKw5L,QAErBx5L,KAAK+vD,SAST,YAAA88I,UAAA,WAME,IALA,IAAMpH,EAAkBzlM,KAAKylM,gBACvB11I,EAAS/vD,KAAK+vD,OACdypI,EAASx5L,KAAKw5L,OAEd52I,EAAS,GACNtjD,EAAI,EAAG8sK,EAAKq5B,EAAgBjnM,OAAQc,EAAI8sK,EAAI9sK,GAAKk6L,EAAQ,CAChE,IAAM32I,EAAQ,IAAI,IAAM4iJ,EAAgBtjM,MAAM7C,EAAGA,EAAIk6L,GAASzpI,GAC9DnN,EAAOx+C,KAAKy+C,GAEd,OAAOD,GAQT,YAAAu2I,QAAA,WACE,OAAO,iBAST,YAAAkS,iBAAA,SAAiB38B,GAGf,IAFA,IAAM+2B,EAAkBzlM,KAAKylM,gBACvBjM,EAASx5L,KAAKw5L,OACXl6L,EAAI,EAAG8sK,EAAKq5B,EAAgBjnM,OAAQc,EAAI8sK,EAAI9sK,GAAKk6L,EAAQ,CAChE,IAAMllJ,EAAImxJ,EAAgBnmM,GACpBi1C,EAAIkxJ,EAAgBnmM,EAAI,GAC9B,IAAI,QAAWovK,EAAQp6H,EAAGC,GACxB,OAAO,EAGX,OAAO,GAST,YAAA+zI,eAAA,SAAezgE,EAAamiF,GAC1BhqM,KAAKsrM,UAAUtB,EAAYniF,EAAa,GACnC7nH,KAAKylM,kBACRzlM,KAAKylM,gBAAkB,IAEzBzlM,KAAKylM,gBAAgBjnM,QAAS,EAAA+sM,EAAA,IAC5BvrM,KAAKylM,gBACL,EACA59E,EACA7nH,KAAKw5L,QAEPx5L,KAAKmpD,WAET,EAvLA,CAAyBqiJ,EAAA,gDCNlB,SAASsB,EAAarH,EAAiBnjJ,EAAQyqJ,EAAOvT,GAG3D,IAFA,IAAMwT,EAAc,GAChBt+B,GAAS,UACJpvK,EAAI,EAAG8sK,EAAK2gC,EAAMvuM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC9C,IAAMusM,EAAOkB,EAAMztM,GACnBovK,GAAS,QACP+2B,EACAnjJ,EACAupJ,EAAK,GACLrS,GAEFwT,EAAY5oM,MAAMsqK,EAAO,GAAKA,EAAO,IAAM,GAAIA,EAAO,GAAKA,EAAO,IAAM,GACxEpsH,EAASupJ,EAAKA,EAAKrtM,OAAS,GAE9B,OAAOwuM,0eCqcT,QA9bA,YAOE,WAAYnlF,EAAamiF,EAAYiD,GAArC,MACE,cAAO,KA4CP,GAtCA,EAAKC,OAAS,GAMd,EAAKC,6BAA+B,EAMpC,EAAKC,oBAAsB,KAM3B,EAAKziB,WAAa,EAMlB,EAAKwf,mBAAqB,EAM1B,EAAKkD,mBAAqB,EAM1B,EAAKC,yBAA2B,MAE3BL,IAAc3sM,MAAMiF,QAAQsiH,EAAY,IAAK,CAKhD,IAJA,IAAI93D,EAAS,EAAK47I,YACZ4B,EAAyC,EACzC9H,EAAkB,GAClBsH,EAAQ,GACLztM,EAAI,EAAG8sK,EAAKmhC,EAAS/uM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CACjD,IAAMkuM,EAAUD,EAASjuM,GACf,IAANA,IACFywD,EAASy9I,EAAQ7B,aAInB,IAFA,IAAMrpJ,EAASmjJ,EAAgBjnM,OACzBqtM,EAAO2B,EAAQrB,UACZh/I,EAAI,EAAG8pI,EAAK4U,EAAKrtM,OAAQ2uD,EAAI8pI,IAAM9pI,EAC1C0+I,EAAK1+I,IAAM7K,GAEb,QAAOmjJ,EAAiB+H,EAAQjU,sBAChCwT,EAAM3oM,KAAKynM,GAEb7B,EAAaj6I,EACb83D,EAAc49E,EACdwH,EAAYF,cAEK9uM,IAAf+rM,GAA4BiD,GAC9B,EAAK7C,mBACHJ,EAC6B,GAE/B,EAAKkD,OAASD,GAEd,EAAK3kB,eACuE,EAG1E0hB,KAuWR,OA5b2B,OA+FzB,YAAAyD,cAAA,SAAcD,GAEZ,IAAI3B,EACJ,GAAK7rM,KAAKylM,gBAIH,CACL,IAAMnjJ,EAAStiD,KAAKylM,gBAAgBjnM,QACpC,QAAOwB,KAAKylM,gBAAiB+H,EAAQjU,sBAErC,IAAK,IAAIj6L,EAAI,EAAG8sK,GADhBy/B,EAAO2B,EAAQrB,UAAUhqM,SACC3D,OAAQc,EAAI8sK,IAAM9sK,EAC1CusM,EAAKvsM,IAAMgjD,OARbtiD,KAAKylM,gBAAkB+H,EAAQjU,qBAAqBp3L,QACpD0pM,EAAO2B,EAAQrB,UAAUhqM,QACzBnC,KAAKktM,OAAO9oM,OASdpE,KAAKktM,OAAO9oM,KAAKynM,GACjB7rM,KAAKmpD,WAQP,YAAA9/B,MAAA,WAGE,IAFA,IAAMkT,EAAMv8B,KAAKktM,OAAO1uM,OAClBkvM,EAAW,IAAIptM,MAAMi8B,GAClBj9B,EAAI,EAAGA,EAAIi9B,IAAOj9B,EACzBouM,EAASpuM,GAAKU,KAAKktM,OAAO5tM,GAAG6C,QAG/B,IAAMwrM,EAAe,IAAIC,EACvB5tM,KAAKylM,gBAAgBtjM,QACrBnC,KAAK+vD,OACL29I,GAIF,OAFAC,EAAavf,gBAAgBpuL,MAEtB2tM,GAUT,YAAAnD,eAAA,SAAel2J,EAAGC,EAAGk2J,EAAcC,GACjC,OAAIA,GAAqB,QAAyB1qM,KAAK8uK,YAAax6H,EAAGC,GAC9Dm2J,GAEL1qM,KAAKmqM,mBAAqBnqM,KAAKwuL,gBACjCxuL,KAAK2qL,UAAY19K,KAAK+gD,MACpB,QACEhuD,KAAKylM,gBACL,EACAzlM,KAAKktM,OACLltM,KAAKw5L,OACL,IAGJx5L,KAAKmqM,kBAAoBnqM,KAAKwuL,gBAEzB,QACLxuL,KAAK6tM,6BACL,EACA7tM,KAAKktM,OACLltM,KAAKw5L,OACLx5L,KAAK2qL,WACL,EACAr2I,EACAC,EACAk2J,EACAC,KASJ,YAAA5a,WAAA,SAAWx7I,EAAGC,GACZ,OAAO,QACLv0C,KAAK6tM,6BACL,EACA7tM,KAAKktM,OACLltM,KAAKw5L,OACLllJ,EACAC,IASJ,YAAA0xJ,QAAA,WACE,OAAO,QACLjmM,KAAK6tM,6BACL,EACA7tM,KAAKktM,OACLltM,KAAKw5L,SAiBT,YAAAsR,eAAA,SAAegD,GACb,IAAIrI,EAcJ,YAbkBxnM,IAAd6vM,GACFrI,EAAkBzlM,KAAK6tM,6BAA6B1rM,SACpD,EAAAiiH,EAAA,IACEqhF,EACA,EACAzlM,KAAKktM,OACLltM,KAAKw5L,OACLsU,IAGFrI,EAAkBzlM,KAAKylM,iBAGlB,EAAAsF,EAAA,IACLtF,EACA,EACAzlM,KAAKktM,OACLltM,KAAKw5L,SAOT,YAAAuU,SAAA,WACE,OAAO/tM,KAAKktM,QAMd,YAAAc,sBAAA,WACE,GAAIhuM,KAAKmtM,6BAA+BntM,KAAKwuL,cAAe,CAC1D,IAAMwe,EAAcF,EAClB9sM,KAAKylM,gBACL,EACAzlM,KAAKktM,OACLltM,KAAKw5L,QAEPx5L,KAAKotM,qBAAsB,OACzBptM,KAAK6tM,6BACL,EACA7tM,KAAKktM,OACLltM,KAAKw5L,OACLwT,GAEFhtM,KAAKmtM,4BAA8BntM,KAAKwuL,cAE1C,OAAOxuL,KAAKotM,qBASd,YAAAa,kBAAA,WACE,OAAO,IAAI,EACTjuM,KAAKguM,wBAAwB7rM,QAC7B,UAOJ,YAAA0rM,2BAAA,WACE,GAAI7tM,KAAKqtM,mBAAqBrtM,KAAKwuL,cAAe,CAChD,IAAMiX,EAAkBzlM,KAAKylM,iBAE3B,QAAwBA,EAAiB,EAAGzlM,KAAKktM,OAAQltM,KAAKw5L,QAE9Dx5L,KAAKstM,yBAA2B7H,GAEhCzlM,KAAKstM,yBAA2B7H,EAAgBtjM,QAChDnC,KAAKstM,yBAAyB9uM,QAAS,EAAA4lH,EAAA,IACrCpkH,KAAKstM,yBACL,EACAttM,KAAKktM,OACLltM,KAAKw5L,SAGTx5L,KAAKqtM,kBAAoBrtM,KAAKwuL,cAEhC,OAAOxuL,KAAKstM,0BAQd,YAAApC,8BAAA,SAA8BC,GAC5B,IAAMC,EAA4B,GAC5B8C,EAAkB,GAWxB,OAVA9C,EAA0B5sM,QAAS,QACjCwB,KAAKylM,gBACL,EACAzlM,KAAKktM,OACLltM,KAAKw5L,OACLvsL,KAAK+gD,KAAKm9I,GACVC,EACA,EACA8C,GAEK,IAAIN,EACTxC,EACA,OACA8C,IAUJ,YAAAC,WAAA,SAAW3iL,GACT,GAAIA,EAAQ,GAAKxrB,KAAKktM,OAAO1uM,QAAUgtB,EACrC,OAAO,KAET,IAAI82B,EACJ,GAAc,IAAV92B,EACF82B,EAAS,MACJ,CACL,IAAM8rJ,EAAWpuM,KAAKktM,OAAO1hL,EAAQ,GACrC82B,EAAS8rJ,EAASA,EAAS5vM,OAAS,GAEtC,IAAMqtM,EAAO7rM,KAAKktM,OAAO1hL,GAAOrpB,QAC1Bk0B,EAAMw1K,EAAKA,EAAKrtM,OAAS,GAC/B,GAAe,IAAX8jD,EACF,IAAK,IAAIhjD,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAC1CusM,EAAKvsM,IAAMgjD,EAGf,OAAO,IAAI,KACTtiD,KAAKylM,gBAAgBtjM,MAAMmgD,EAAQjsB,GACnCr2B,KAAK+vD,OACL87I,IASJ,YAAAwC,YAAA,WAME,IALA,IAAMt+I,EAAS/vD,KAAK+vD,OACd01I,EAAkBzlM,KAAKylM,gBACvBsH,EAAQ/sM,KAAKktM,OACbK,EAAW,GACbjrJ,EAAS,EACJhjD,EAAI,EAAG8sK,EAAK2gC,EAAMvuM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC9C,IAAMusM,EAAOkB,EAAMztM,GAAG6C,QAChBk0B,EAAMw1K,EAAKA,EAAKrtM,OAAS,GAC/B,GAAe,IAAX8jD,EACF,IAAK,IAAI6K,EAAI,EAAG8pI,EAAK4U,EAAKrtM,OAAQ2uD,EAAI8pI,IAAM9pI,EAC1C0+I,EAAK1+I,IAAM7K,EAGf,IAAMkrJ,EAAU,IAAI,KAClB/H,EAAgBtjM,MAAMmgD,EAAQjsB,GAC9B05B,EACA87I,GAEF0B,EAASnpM,KAAKopM,GACdlrJ,EAASjsB,EAEX,OAAOk3K,GAQT,YAAApU,QAAA,WACE,OAAO,mBAST,YAAAkS,iBAAA,SAAiB38B,GACf,OAAO,QACL1uK,KAAK6tM,6BACL,EACA7tM,KAAKktM,OACLltM,KAAKw5L,OACL9qB,IAUJ,YAAA4Z,eAAA,SAAezgE,EAAamiF,GAC1BhqM,KAAKsrM,UAAUtB,EAAYniF,EAAa,GACnC7nH,KAAKylM,kBACRzlM,KAAKylM,gBAAkB,IAEzB,IAAMsH,GAAQ,EAAAxB,EAAA,IACZvrM,KAAKylM,gBACL,EACA59E,EACA7nH,KAAKw5L,OACLx5L,KAAKktM,QAEP,GAAqB,IAAjBH,EAAMvuM,OACRwB,KAAKylM,gBAAgBjnM,OAAS,MACzB,CACL,IAAM8vM,EAAWvB,EAAMA,EAAMvuM,OAAS,GACtCwB,KAAKylM,gBAAgBjnM,OACC,IAApB8vM,EAAS9vM,OAAe,EAAI8vM,EAASA,EAAS9vM,OAAS,GAE3DwB,KAAKmpD,WAET,EA5bA,CAA2BqiJ,EAAA,gDCKrB+C,GAAe,UAOrB,aASE,WAAYlwM,EAAMonM,EAAiBoG,EAAMz9J,EAAYtxC,GAInDkD,KAAKwuM,cAMLxuM,KAAKyuM,QAMLzuM,KAAKqtK,IAAMvwK,EAMXkD,KAAK0uM,MAAQrwM,EAMb2B,KAAK2uM,iBAAmBlJ,EAMxBzlM,KAAKotM,oBAAsB,KAM3BptM,KAAK4uM,eAAiB,KAMtB5uM,KAAK0rM,MAAQG,EAMb7rM,KAAK6uM,YAAczgK,EA+NvB,OAtNE,YAAAl0B,IAAA,SAAIrW,GACF,OAAO7D,KAAK6uM,YAAYhrM,IAQ1B,YAAAirK,UAAA,WAYE,OAXK9uK,KAAKyuM,UACRzuM,KAAKyuM,QACHzuM,KAAK0uM,QAAU,WACX,QAA6B1uM,KAAK2uM,mBAClC,QACE3uM,KAAK2uM,iBACL,EACA3uM,KAAK2uM,iBAAiBnwM,OACtB,IAGHwB,KAAKyuM,SAMd,YAAAK,qBAAA,WACE,IAAK9uM,KAAKotM,oBAAqB,CAC7B,IAAM2B,GAAa,QAAU/uM,KAAK8uK,aAClC9uK,KAAKotM,qBAAsB,OACzBptM,KAAK2uM,iBACL,EAC8B3uM,KAAU,MACxC,EACA+uM,EACA,GAGJ,OAAO/uM,KAAKotM,qBAMd,YAAAY,sBAAA,WACE,IAAKhuM,KAAKotM,oBAAqB,CAC7B,IAAMJ,EAAcF,EAClB9sM,KAAK2uM,iBACL,EACqC3uM,KAAU,MAC/C,GAEFA,KAAKotM,qBAAsB,OACzBptM,KAAK2uM,iBACL,EACqC3uM,KAAU,MAC/C,EACAgtM,GAGJ,OAAOhtM,KAAKotM,qBAMd,YAAAnC,gBAAA,WAUE,OATKjrM,KAAK4uM,iBACR5uM,KAAK4uM,eAAiBnF,EACpBzpM,KAAK2uM,iBACL,EACA3uM,KAAK2uM,iBAAiBnwM,OACtB,EACA,KAGGwB,KAAK4uM,gBAMd,YAAAtC,iBAAA,WACE,IAAKtsM,KAAK4uM,eAAgB,CACxB5uM,KAAK4uM,eAAiB,GAItB,IAHA,IAAMnJ,EAAkBzlM,KAAK2uM,iBACzBrsJ,EAAS,EACPupJ,EAAqC7rM,KAAU,MAC5CV,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC7C,IAAM+2B,EAAMw1K,EAAKvsM,GACX8yG,EAAWq3F,EAAiBhE,EAAiBnjJ,EAAQjsB,EAAK,EAAG,KACnE,QAAOr2B,KAAK4uM,eAAgBx8F,GAC5B9vD,EAASjsB,GAGb,OAAOr2B,KAAK4uM,gBASd,YAAAxgC,MAAA,WACE,OAAOpuK,KAAKqtK,KAMd,YAAAwgC,2BAAA,WACE,OAAO7tM,KAAK2uM,kBASd,YAAAxgC,YAAA,WACE,OAAOnuK,MAOT,YAAAgvM,sBAAA,SAAsB7D,GACpB,OAAOnrM,MAUT,YAAAivM,oBAAA,SAAoB9D,EAAkB+D,GACpC,OAAOlvM,MAQT,YAAAguK,cAAA,WACE,OAAOhuK,KAAK6uM,aAMd,YAAApV,UAAA,WACE,OAAO,GAMT,YAAAprB,iBAAA,WACE,OAAOruK,KAAKwuM,eAQd,YAAArV,QAAA,WACE,OAAOn5L,KAAK0uM,OAQd,YAAApvD,UAAA,SAAU4yB,GAER,IAAMi9B,GADNj9B,GAAa,QAAcA,IACIpD,YACzBsgC,EAAkBl9B,EAAWm9B,iBACnC,GAAIF,GAAeC,EAAiB,CAClC,IAAMr/J,GAAQ,QAAUq/J,IAAmB,QAAUD,IACrD,QACEZ,EACAa,EAAgB,GAChBA,EAAgB,GAChBr/J,GACCA,EACD,EACA,EACA,IAEF,QACE/vC,KAAK2uM,iBACL,EACA3uM,KAAK2uM,iBAAiBnwM,OACtB,EACA+vM,EACAvuM,KAAK2uM,oBAOX,YAAAxC,QAAA,WACE,OAAOnsM,KAAK0rM,OAEhB,EA5RA,GA8RA4D,EAAczvM,UAAUkuM,SAAWuB,EAAczvM,UAAUssM,QAK3DmD,EAAczvM,UAAU05L,mBACtB+V,EAAczvM,UAAUguM,2BAoE1B,kfCxFA,SAAS0B,EAAgBxrE,EAAKjxD,EAAQgvD,GACpC,GAAY,IAARiC,EAAW,CACb,IAAMv8G,EAAQ,CACZrb,KAAM,GACN/N,OAAQ,GACR0gL,SAAU,IAENzoJ,EAAMyrG,EAAIC,aAAeD,EAAI1yE,IACnC0yE,EAAI+B,WAAW2rE,EAAgBhoL,EAAO6O,GACtC7O,EAAMhpB,OAASgpB,EAAMs3J,SAAStgL,OAC1BgpB,EAAMhpB,SACRs0E,EAAOtrD,EAAM5qB,MAAQ4qB,IAW3B,SAASgoL,EAAezrE,EAAKv8G,EAAOs6G,GAClC,GAAY,KAARiC,EACFv8G,EAAMpY,QAAU0yH,EAAIC,kBACf,GAAY,IAARgC,EACTv8G,EAAM5qB,KAAOklI,EAAI6C,kBACZ,GAAY,IAARZ,EACTv8G,EAAMknJ,OAAS5sC,EAAIC,kBACd,GAAY,IAARgC,EACTv8G,EAAMs3J,SAAS16K,KAAK09H,EAAI1yE,UACnB,GAAY,IAAR20E,EACTv8G,EAAMrb,KAAK/H,KAAK09H,EAAI6C,mBACf,GAAY,IAARZ,EAAW,CAGpB,IAFA,IAAI5nI,EAAQ,KACNk6B,EAAMyrG,EAAIC,aAAeD,EAAI1yE,IAC5B0yE,EAAI1yE,IAAM/4B,GAEfl6B,EACU,IAFV4nI,EAAMjC,EAAIC,cAAgB,GAGpBD,EAAI6C,aACI,IAARZ,EACAjC,EAAIuC,YACI,IAARN,EACAjC,EAAIwC,aACI,IAARP,EACAjC,EAAI0C,eACI,IAART,EACAjC,EAAIC,aACI,IAARgC,EACAjC,EAAI2C,cACI,IAARV,EACAjC,EAAI4C,cACJ,KAERl9G,EAAMppB,OAAOgG,KAAKjI,IAUtB,SAASszM,EAAiB1rE,EAAKkuC,EAASnwC,GACtC,GAAW,GAAPiC,EACFkuC,EAAQn1K,GAAKglI,EAAIC,kBACZ,GAAW,GAAPgC,EAET,IADA,IAAM1tG,EAAMyrG,EAAIC,aAAeD,EAAI1yE,IAC5B0yE,EAAI1yE,IAAM/4B,GAAK,CACpB,IAAMxyB,EAAMouK,EAAQzqJ,MAAMrb,KAAK21H,EAAIC,cAC7B5lI,EAAQ81K,EAAQzqJ,MAAMppB,OAAO0jI,EAAIC,cACvCkwC,EAAQ7jI,WAAWvqC,GAAO1H,OAEZ,GAAP4nI,EACTkuC,EAAQ5zK,KAAOyjI,EAAIC,aACH,GAAPgC,IACTkuC,EAAQtrD,SAAWmb,EAAI1yE,KAW3B,SAASsgJ,EAAe5tE,EAAKt6G,EAAOloB,GAClCwiI,EAAI1yE,IAAM5nC,EAAMs3J,SAASx/K,GACzB,IAAM+2B,EAAMyrG,EAAIC,aAAeD,EAAI1yE,IAE7B6iH,EAAU,CACdzqJ,MAAOA,EACPnpB,KAAM,EACN+vC,WAAY,IAGd,OADA0zF,EAAI+B,WAAW4rE,EAAkBx9B,EAAS57I,GACnC47I,EA0BT,QA/YA,YAIE,WAAYlG,GAAZ,MACE,cAAO,KAEDtuK,EAAUsuK,GAA4B,UAK5C,EAAK08B,eAAiB,IAAIkH,EAAA,EAAW,CACnC17L,KAAM,GACN27L,MAAOnb,EAAA,iBAOT,EAAKob,cAAgBpyM,EAAQqyM,aACzBryM,EAAQqyM,aACR,EAMJ,EAAKxiC,cAAgB7vK,EAAQsyM,aAM7B,EAAKC,WAAavyM,EAAQwyM,UAAYxyM,EAAQwyM,UAAY,QAM1D,EAAKC,QAAUzyM,EAAQq1E,OAASr1E,EAAQq1E,OAAS,KAMjD,EAAKq9H,YAAc1yM,EAAQ2yM,WAE3B,EAAKrH,oBAAsB,CACzB,qCACA,4BAuNN,OA1QkB,OAgEhB,YAAAsH,iBAAA,SAAiBvuE,EAAKmwC,EAASwzB,EAAiBoG,GAC9C/pE,EAAI1yE,IAAM6iH,EAAQtrD,SAUlB,IARA,IAAMtwF,EAAMyrG,EAAIC,aAAeD,EAAI1yE,IAC/BkhJ,EAAM,EACN9xM,EAAS,EACT81C,EAAI,EACJC,EAAI,EACJg8J,EAAY,EACZC,EAAa,EAEV1uE,EAAI1yE,IAAM/4B,GAAK,CACpB,IAAK73B,EAAQ,CACX,IAAMiyM,EAAS3uE,EAAIC,aACnBuuE,EAAe,EAATG,EACNjyM,EAASiyM,GAAU,EAGrBjyM,IAEY,IAAR8xM,GAAqB,IAARA,GACfh8J,GAAKwtF,EAAI2C,cACTlwF,GAAKutF,EAAI2C,cAEG,IAAR6rE,GAEEC,EAAYC,IACd3E,EAAKznM,KAAKmsM,GACVC,EAAaD,GAIjB9K,EAAgBrhM,KAAKkwC,EAAGC,GACxBg8J,GAAa,GACI,IAARD,EACLC,EAAYC,IAEd/K,EAAgBrhM,KACdqhM,EAAgB+K,GAChB/K,EAAgB+K,EAAa,IAE/BD,GAAa,IAGf,QAAO,EAAO,IAIdA,EAAYC,IACd3E,EAAKznM,KAAKmsM,GACVC,EAAaD,IAWjB,YAAAG,eAAA,SAAe5uE,EAAK6uE,EAAYlzM,GAC9B,IAKIw0K,EALE5zK,EAAOsyM,EAAWtyM,KACxB,GAAa,IAATA,EACF,OAAO,KAIT,IAEIvB,EAFEsB,EAASuyM,EAAWviK,WAGrBpuC,KAAKmwM,aAGRrzM,EAAKsB,EAAO4B,KAAKmwM,oBACV/xM,EAAO4B,KAAKmwM,cAHnBrzM,EAAK6zM,EAAW7zM,GAMlBsB,EAAO4B,KAAKgwM,YAAcW,EAAWnpL,MAAM5qB,KAE3C,IAAM6oM,EAA+C,GAC/CoG,EAAoC,GAC1C7rM,KAAKqwM,iBAAiBvuE,EAAK6uE,EAAYlL,EAAiBoG,GAExD,IAAM+E,EA0OV,SAAyBvyM,EAAMwyM,GAE7B,IAAID,EAYJ,OAXa,IAATvyM,EACFuyM,EACc,IAAZC,EAAgB,UAAqB,gBACrB,IAATxyM,EACTuyM,EACc,IAAZC,EAAgB,gBAA2B,sBAC3B,IAATxyM,IACTuyM,EAAe,aAIVA,EAxPgBE,CAAgBzyM,EAAMwtM,EAAKrtM,QAEhD,GAAIwB,KAAK6vM,gBAAkB,GACzB59B,EAAU,IAAIjyK,KAAK6vM,cACjBe,EACAnL,EACAoG,EACAztM,EACAtB,IAEMwiJ,UAAU7hJ,EAAQgrM,oBACrB,CACL,IAAIsI,OAAI,EACR,GAAIH,GAAgB,YAAsB,CACxC,IAAM7D,GAAQ,QAAYtH,EAAiBoG,GAC3CkF,EACEhE,EAAMvuM,OAAS,EACX,IAAI,EAAainM,EAAiB,OAAmBsH,GACrD,IAAI,KAAQtH,EAAiB,OAAmBoG,QAEtDkF,EACEH,IAAiB,UACb,IAAI,IAAMnL,EAAiB,QAC3BmL,IAAiB,gBACjB,IAAI,EAAWnL,EAAiB,QAChCmL,IAAiB,YACjB,IAAI,KAAQnL,EAAiB,OAAmBoG,GAChD+E,IAAiB,gBACjB,IAAI,EAAWnL,EAAiB,QAChCmL,IAAiB,sBACjB,IAAI,EAAgBnL,EAAiB,OAAmBoG,GACxD,KAKR55B,EAAU,IAAI++B,EAFZhxM,KAAkB,eAGhBA,KAAKstK,eACP2E,EAAQhE,gBAAgBjuK,KAAKstK,eAE/B,IAAM3mD,ERGL,SAAsCA,EAAU4U,EAAOwwC,GAC5D,IAAMw8B,EAAoBx8B,GACtB,QAAcA,EAAYw8B,mBAC1B,KACEE,EAAiB18B,GACnB,QAAcA,EAAY08B,gBAC1B,KAwCJ,OApCEF,GACAE,KACC,QAAqBF,EAAmBE,GAEC9hF,EAAU24B,UACtBmpD,EACHF,GAGb5hF,EQtBKsqF,CAA6BF,EAAM,EAAOtzM,GAC3Dw0K,EAAQrE,YAAYjnD,QACT1oH,IAAPnB,GACFm1K,EAAQzD,MAAM1xK,GAEhBm1K,EAAQpE,cAAczvK,GAAQ,GAGhC,OAAO6zK,GAMT,YAAAknB,QAAA,WACE,OAAO+X,EAAA,gBAWT,YAAA5I,aAAA,SAAa3sM,EAAQowK,GACnB,IAAMj5F,EAAS9yE,KAAKkwM,QACdzyM,EACJuC,KAAKmpM,aAAap9B,GAEd08B,GAAiB,QAAIhrM,EAAQgrM,gBACnCA,EAAeS,eAAezrM,EAAQixK,QACtCjxK,EAAQgrM,eAAiBA,EAEzB,IAAM3mE,EAAM,IAAI,EAA+B,GACzCqvE,EAAYrvE,EAAI+B,WAAW0rE,EAAiB,IAC5CzwB,EAAW,GACjB,IAAK,IAAM,KAAQqyB,EACjB,IAAIr+H,IAAmC,GAAzBA,EAAO1pE,QAAQ,GAA7B,CAGA,IAAMgoM,EAAWD,EAAU,GAErBziC,EAAS0iC,EAAW,CAAC,EAAG,EAAGA,EAAS1iC,OAAQ0iC,EAAS1iC,QAAU,KACrE+5B,EAAe4I,UAAU3iC,GAEzB,IAAK,IAAIpvK,EAAI,EAAG8sK,EAAKglC,EAAS5yM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CACjD,IAAMqxM,EAAajB,EAAe5tE,EAAKsvE,EAAU9xM,GAC3C2yK,EAAUjyK,KAAK0wM,eAAe5uE,EAAK6uE,EAAYlzM,GACrC,OAAZw0K,GACF6M,EAAS16K,KAAK6tK,IAKpB,OAAO6M,GAUT,YAAA0pB,eAAA,SAAe7sM,GACb,OAAOqE,KAAKyoM,gBAQd,YAAA/oB,UAAA,SAAU5sG,GACR9yE,KAAKkwM,QAAUp9H,GAEnB,EA1QA,CAAkB,2FCjCX,SAASw+H,IACd,OAAO,EAOF,SAASC,IACd,OAAO,EAQF,SAASC,KAWT,SAASC,EAAW51L,GACzB,IAGI61L,EAGAC,EAEAC,EARAC,GAAS,EAUb,OAAO,WACL,IAAMC,EAAWxxM,MAAMT,UAAUsC,MAAMxB,KAAKub,WAO5C,OANK21L,GAAU7xM,OAAS4xM,IAAa,QAAYE,EAAUH,KACzDE,GAAS,EACTD,EAAW5xM,KACX2xM,EAAWG,EACXJ,EAAa71L,EAAG5b,MAAMD,KAAMkc,YAEvBw1L,kDC/CX,SACEK,GAAI,KACJC,IAAK,MACLC,IAAK,MACLC,KAAM,sDCJR,SACEC,MAAO,QACPC,YAAa,aACbC,YAAa,aACbC,QAAS,UACTC,YAAa,aACbC,kBAAmB,kBACnBC,cAAe,eACfC,oBAAqB,qBACrBC,OAAQ,0lBC0KV,QAzKA,YAME,WAAY9qF,EAAamiF,GAAzB,MACE,cAAO,YAMP,EAAKrf,WAAa,EAMlB,EAAKwf,mBAAqB,OAEPlsM,IAAf+rM,GAA6B1pM,MAAMiF,QAAQsiH,EAAY,IAMzD,EAAKygE,eACyD,EAG5D0hB,GATF,EAAKI,mBACHJ,EAC6B,KA+IrC,OAvKyB,OAyCvB,YAAA3gL,MAAA,WACE,OAAO,IAAIupL,EAAW5yM,KAAKylM,gBAAgBtjM,QAASnC,KAAK+vD,SAU3D,YAAAy6I,eAAA,SAAel2J,EAAGC,EAAGk2J,EAAcC,GACjC,OAAIA,GAAqB,QAAyB1qM,KAAK8uK,YAAax6H,EAAGC,GAC9Dm2J,GAEL1qM,KAAKmqM,mBAAqBnqM,KAAKwuL,gBACjCxuL,KAAK2qL,UAAY19K,KAAK+gD,MACpB,QACEhuD,KAAKylM,gBACL,EACAzlM,KAAKylM,gBAAgBjnM,OACrBwB,KAAKw5L,OACL,IAGJx5L,KAAKmqM,kBAAoBnqM,KAAKwuL,gBAEzB,QACLxuL,KAAKylM,gBACL,EACAzlM,KAAKylM,gBAAgBjnM,OACrBwB,KAAKw5L,OACLx5L,KAAK2qL,WACL,EACAr2I,EACAC,EACAk2J,EACAC,KASJ,YAAAzE,QAAA,WACE,OAAO,QACLjmM,KAAKylM,gBACL,EACAzlM,KAAKylM,gBAAgBjnM,OACrBwB,KAAKw5L,SAST,YAAAsR,eAAA,WACE,OAAO,QACL9qM,KAAKylM,gBACL,EACAzlM,KAAKylM,gBAAgBjnM,OACrBwB,KAAKw5L,SAST,YAAA0R,8BAAA,SAA8BC,GAC5B,IAAMC,EAA4B,GAUlC,OATAA,EAA0B5sM,QAAS,QACjCwB,KAAKylM,gBACL,EACAzlM,KAAKylM,gBAAgBjnM,OACrBwB,KAAKw5L,OACL2R,EACAC,EACA,GAEK,IAAIwH,EAAWxH,EAA2B,SAQnD,YAAAjS,QAAA,WACE,OAAO,iBAST,YAAAkS,iBAAA,SAAiB38B,GACf,OAAO,GAST,YAAA4Z,eAAA,SAAezgE,EAAamiF,GAC1BhqM,KAAKsrM,UAAUtB,EAAYniF,EAAa,GACnC7nH,KAAKylM,kBACRzlM,KAAKylM,gBAAkB,IAEzBzlM,KAAKylM,gBAAgBjnM,QAAS,QAC5BwB,KAAKylM,gBACL,EACA59E,EACA7nH,KAAKw5L,QAEPx5L,KAAKmpD,WAET,EAvKA,CAAyB,6iBCoGzB,QAzGA,YAKE,WAAY0+D,EAAamiF,GAAzB,MACE,cAAO,YACP,EAAK1hB,eAAezgE,EAAamiF,KAgGrC,OAvGoB,OAelB,YAAA3gL,MAAA,WACE,IAAMw5B,EAAQ,IAAIgwJ,EAAM7yM,KAAKylM,gBAAgBtjM,QAASnC,KAAK+vD,QAE3D,OADAlN,EAAMurI,gBAAgBpuL,MACf6iD,GAUT,YAAA2nJ,eAAA,SAAel2J,EAAGC,EAAGk2J,EAAcC,GACjC,IAAMjF,EAAkBzlM,KAAKylM,gBACvBmH,GAAkB,QACtBt4J,EACAC,EACAkxJ,EAAgB,GAChBA,EAAgB,IAElB,GAAImH,EAAkBlC,EAAoB,CAExC,IADA,IAAMlR,EAASx5L,KAAKw5L,OACXl6L,EAAI,EAAGA,EAAIk6L,IAAUl6L,EAC5BmrM,EAAanrM,GAAKmmM,EAAgBnmM,GAGpC,OADAmrM,EAAajsM,OAASg7L,EACfoT,EAEP,OAAOlC,GASX,YAAAI,eAAA,WACE,OAAQ9qM,KAAKylM,gBAAuBzlM,KAAKylM,gBAAgBtjM,QAA1B,IAQjC,YAAA2wM,cAAA,SAAcpkC,GACZ,OAAO,QAA6B1uK,KAAKylM,gBAAiB/2B,IAQ5D,YAAAyqB,QAAA,WACE,OAAO,WAST,YAAAkS,iBAAA,SAAiB38B,GACf,OAAO,QAAWA,EAAQ1uK,KAAKylM,gBAAgB,GAAIzlM,KAAKylM,gBAAgB,KAQ1E,YAAAnd,eAAA,SAAezgE,EAAamiF,GAC1BhqM,KAAKsrM,UAAUtB,EAAYniF,EAAa,GACnC7nH,KAAKylM,kBACRzlM,KAAKylM,gBAAkB,IAEzBzlM,KAAKylM,gBAAgBjnM,QAAS,QAC5BwB,KAAKylM,gBACL,EACA59E,EACA7nH,KAAKw5L,QAEPx5L,KAAKmpD,WAET,EAvGA,CAAoB,wrBCapB,cAYE,WAAY0+D,EAAamiF,EAAYyB,GAArC,MACE,cAAO,YAMP,EAAKC,MAAQ,GAMb,EAAKqH,4BAA8B,EAMnC,EAAKC,mBAAqB,KAM1B,EAAKroB,WAAa,EAMlB,EAAKwf,mBAAqB,EAM1B,EAAKkD,mBAAqB,EAM1B,EAAKC,yBAA2B,UAEbrvM,IAAf+rM,GAA4ByB,GAC9B,EAAKrB,mBACHJ,EAC6B,GAE/B,EAAK0B,MAAQD,GAEb,EAAKnjB,eACgE,EAGnE0hB,KAyTR,OA7XsB,OA8EpB,YAAAiJ,iBAAA,SAAiBC,GACVlzM,KAAKylM,iBAGR,QAAOzlM,KAAKylM,gBAAiByN,EAAW3Z,sBAFxCv5L,KAAKylM,gBAAkByN,EAAW3Z,qBAAqBp3L,QAIzDnC,KAAK0rM,MAAMtnM,KAAKpE,KAAKylM,gBAAgBjnM,QACrCwB,KAAKmpD,WAQP,YAAA9/B,MAAA,WACE,IAAMmkL,EAAU,IAAIjlB,EAClBvoL,KAAKylM,gBAAgBtjM,QACrBnC,KAAK+vD,OACL/vD,KAAK0rM,MAAMvpM,SAGb,OADAqrM,EAAQpf,gBAAgBpuL,MACjBwtM,GAUT,YAAAhD,eAAA,SAAel2J,EAAGC,EAAGk2J,EAAcC,GACjC,OAAIA,GAAqB,QAAyB1qM,KAAK8uK,YAAax6H,EAAGC,GAC9Dm2J,GAEL1qM,KAAKmqM,mBAAqBnqM,KAAKwuL,gBACjCxuL,KAAK2qL,UAAY19K,KAAK+gD,MACpB,QACEhuD,KAAKylM,gBACL,EACAzlM,KAAK0rM,MACL1rM,KAAKw5L,OACL,IAGJx5L,KAAKmqM,kBAAoBnqM,KAAKwuL,gBAEzB,QACLxuL,KAAKylM,gBACL,EACAzlM,KAAK0rM,MACL1rM,KAAKw5L,OACLx5L,KAAK2qL,WACL,EACAr2I,EACAC,EACAk2J,EACAC,KASJ,YAAA5a,WAAA,SAAWx7I,EAAGC,GACZ,OAAO,QACLv0C,KAAK6tM,6BACL,EACA7tM,KAAK0rM,MACL1rM,KAAKw5L,OACLllJ,EACAC,IASJ,YAAA0xJ,QAAA,WACE,OAAO,QACLjmM,KAAK6tM,6BACL,EACA7tM,KAAK0rM,MACL1rM,KAAKw5L,SAiBT,YAAAsR,eAAA,SAAegD,GACb,IAAIrI,EAQJ,YAPkBxnM,IAAd6vM,GACFrI,EAAkBzlM,KAAK6tM,6BAA6B1rM,SACpD,QAAkBsjM,EAAiB,EAAGzlM,KAAK0rM,MAAO1rM,KAAKw5L,OAAQsU,IAE/DrI,EAAkBzlM,KAAKylM,iBAGlB,QAAwBA,EAAiB,EAAGzlM,KAAK0rM,MAAO1rM,KAAKw5L,SAMtE,YAAA2S,QAAA,WACE,OAAOnsM,KAAK0rM,OAMd,YAAAoD,qBAAA,WACE,GAAI9uM,KAAK+yM,4BAA8B/yM,KAAKwuL,cAAe,CACzD,IAAMugB,GAAa,QAAU/uM,KAAK8uK,aAClC9uK,KAAKgzM,oBAAqB,OACxBhzM,KAAK6tM,6BACL,EACA7tM,KAAK0rM,MACL1rM,KAAKw5L,OACLuV,EACA,GAEF/uM,KAAK+yM,2BAA6B/yM,KAAKwuL,cAEzC,OAAOxuL,KAAKgzM,oBASd,YAAAG,iBAAA,WACE,OAAO,IAAI,IAAMnzM,KAAK8uM,uBAAwB,UAUhD,YAAAsE,mBAAA,WACE,OAAOpzM,KAAK0rM,MAAMltM,QAapB,YAAA60M,cAAA,SAAc7nL,GACZ,OAAIA,EAAQ,GAAKxrB,KAAK0rM,MAAMltM,QAAUgtB,EAC7B,KAEF,IAAI,IACTxrB,KAAKylM,gBAAgBtjM,MACT,IAAVqpB,EAAc,EAAIxrB,KAAK0rM,MAAMlgL,EAAQ,GACrCxrB,KAAK0rM,MAAMlgL,IAEbxrB,KAAK+vD,SAST,YAAAujJ,eAAA,WAME,IALA,IAAMvjJ,EAAS/vD,KAAK+vD,OACd01I,EAAkBzlM,KAAKylM,gBACvBoG,EAAO7rM,KAAK0rM,MACZ6H,EAAc,GAChBjxJ,EAAS,EACJhjD,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC7C,IAAM+2B,EAAMw1K,EAAKvsM,GACX4zM,EAAa,IAAI,IACrBzN,EAAgBtjM,MAAMmgD,EAAQjsB,GAC9B05B,GAEFwjJ,EAAYnvM,KAAK8uM,GACjB5wJ,EAASjsB,EAEX,OAAOk9K,GAMT,YAAA1F,2BAAA,WACE,GAAI7tM,KAAKqtM,mBAAqBrtM,KAAKwuL,cAAe,CAChD,IAAMiX,EAAkBzlM,KAAKylM,iBACzB,QAAuBA,EAAiB,EAAGzlM,KAAK0rM,MAAO1rM,KAAKw5L,QAC9Dx5L,KAAKstM,yBAA2B7H,GAEhCzlM,KAAKstM,yBAA2B7H,EAAgBtjM,QAChDnC,KAAKstM,yBAAyB9uM,QAAS,QACrCwB,KAAKstM,yBACL,EACAttM,KAAK0rM,MACL1rM,KAAKw5L,SAGTx5L,KAAKqtM,kBAAoBrtM,KAAKwuL,cAEhC,OAAOxuL,KAAKstM,0BAQd,YAAApC,8BAAA,SAA8BC,GAC5B,IAAMC,EAA4B,GAC5BoB,EAAiB,GAWvB,OAVApB,EAA0B5sM,QAAS,QACjCwB,KAAKylM,gBACL,EACAzlM,KAAK0rM,MACL1rM,KAAKw5L,OACLvsL,KAAK+gD,KAAKm9I,GACVC,EACA,EACAoB,GAEK,IAAIjkB,EACT6iB,EACA,OACAoB,IASJ,YAAArT,QAAA,WACE,OAAO,aAST,YAAAkS,iBAAA,SAAiB38B,GACf,OAAO,QACL1uK,KAAK6tM,6BACL,EACA7tM,KAAK0rM,MACL1rM,KAAKw5L,OACL9qB,IAUJ,YAAA4Z,eAAA,SAAezgE,EAAamiF,GAC1BhqM,KAAKsrM,UAAUtB,EAAYniF,EAAa,GACnC7nH,KAAKylM,kBACRzlM,KAAKylM,gBAAkB,IAEzB,IAAMoG,GAAO,QACX7rM,KAAKylM,gBACL,EACA59E,EACA7nH,KAAKw5L,OACLx5L,KAAK0rM,OAEP1rM,KAAKylM,gBAAgBjnM,OAAyB,IAAhBqtM,EAAKrtM,OAAe,EAAIqtM,EAAKA,EAAKrtM,OAAS,GACzEwB,KAAKmpD,WAET,EA7XA,CAAsB,MA+XtB,UAcO,SAAS+B,EAAS7K,EAAQsC,EAAQ6wJ,EAAOC,GAI9C,IAHA,IAAM51G,EAAI21G,GAAgB,GAEpB/N,EAAkB,GACfnmM,EAAI,EAAGA,EAAIu+F,IAAKv+F,GACvB,QACEmmM,GACA,QAAaplJ,EAAQsC,EAAS,EAAI11C,KAAKmqE,GAAK93E,EAAKu+F,EAAG41G,IAIxD,OADAhO,EAAgBrhM,KAAKqhM,EAAgB,GAAIA,EAAgB,IAClD,IAAIld,EAAQkd,EAAiB,OAAmB,CACrDA,EAAgBjnM,SAUb,SAASk1M,EAAWhlC,GACzB,IAAMjpH,EAAOipH,EAAO,GACd/oH,EAAO+oH,EAAO,GACdppH,EAAOopH,EAAO,GACdnpH,EAAOmpH,EAAO,GACd+2B,EAAkB,CACtBhgJ,EACAE,EACAF,EACAF,EACAD,EACAC,EACAD,EACAK,EACAF,EACAE,GAEF,OAAO,IAAI4iI,EAAQkd,EAAiB,OAAmB,CACrDA,EAAgBjnM,0lBC1bd+vM,GAAe,UAuTrB,QAzSA,YACE,mBACE,cAAO,YAMP,EAAKE,SAAU,UAMf,EAAKkF,iBAAmB,EAMxB,EAAKC,yCAA2C,EAMhD,EAAKC,2BAA6B,EAUlC,EAAKC,6BAA8B,SAAW,SAC5CC,EACA5I,EACA+D,GAEA,IAAKA,EACH,OAAOlvM,KAAKgvM,sBAAsB7D,GAEpC,IAAM9hL,EAAQrpB,KAAKqpB,QAEnB,OADAA,EAAM29K,eAAekI,GACd7lL,EAAM2lL,sBAAsB7D,QAyPzC,OAvSuB,OAyDrB,YAAA8D,oBAAA,SAAoB9D,EAAkB+D,GACpC,OAAOlvM,KAAK8zM,4BACV9zM,KAAKwuL,cACL2c,EACA+D,IASJ,YAAA7lL,MAAA,WACE,OAAO,WAWT,YAAAmhL,eAAA,SAAel2J,EAAGC,EAAGk2J,EAAcC,GACjC,OAAO,WAQT,YAAA5a,WAAA,SAAWx7I,EAAGC,GACZ,IAAMy/J,EAAQh0M,KAAKi0M,gBAAgB,CAAC3/J,EAAGC,IACvC,OAAOy/J,EAAM,KAAO1/J,GAAK0/J,EAAM,KAAOz/J,GAWxC,YAAA0/J,gBAAA,SAAgBpxJ,EAAOqxJ,GACrB,IAAMzJ,EAAeyJ,GAAsC,CAACl8J,IAAKA,KAEjE,OADAh4C,KAAKwqM,eAAe3nJ,EAAM,GAAIA,EAAM,GAAI4nJ,EAAcj5K,EAAAA,GAC/Ci5K,GAUT,YAAA0J,qBAAA,SAAqBxiC,GACnB,OAAO3xK,KAAK8vL,WAAWne,EAAW,GAAIA,EAAW,KASnD,YAAAmhC,cAAA,SAAcpkC,GACZ,OAAO,WAST,YAAAI,UAAA,SAAU+1B,GACR,GAAI7kM,KAAK2zM,iBAAmB3zM,KAAKwuL,cAAe,CAC9C,IAAM9f,EAAS1uK,KAAK8yM,cAAc9yM,KAAKyuM,UACnC9rM,MAAM+rK,EAAO,KAAO/rK,MAAM+rK,EAAO,OACnC,QAAoBA,GAEtB1uK,KAAK2zM,gBAAkB3zM,KAAKwuL,cAE9B,OAAO,QAAexuL,KAAKyuM,QAAS5J,IAWtC,YAAA3vG,OAAA,SAAO9vC,EAAOu/D,IACZ,WAaF,YAAA50E,MAAA,SAAMs1E,EAAI+uF,EAAQzwB,IAChB,WAYF,YAAA0wB,SAAA,SAASC,GACP,OAAOt0M,KAAKgvM,sBAAsBsF,EAAYA,IAWhD,YAAAtF,sBAAA,SAAsB7D,GACpB,OAAO,WAQT,YAAAhS,QAAA,WACE,OAAO,WAYT,YAAA6N,eAAA,SAAeC,IACb,WASF,YAAAoE,iBAAA,SAAiB38B,GACf,OAAO,WAWT,YAAAz2F,UAAA,SAAUnqB,EAAQC,IAChB,WAkBF,YAAAuxF,UAAA,SAAU3jJ,EAAQ++H,GAEhB,IAAM65E,GAAa,QAAc54M,GAC3BsrM,EACJsN,EAAWtL,YAAcxU,EAAA,eACrB,SAAU+f,EAAeC,EAAgBjb,GACvC,IAAM2V,EAAcoF,EAAWzlC,YACzBsgC,EAAkBmF,EAAWlF,iBAC7Bt/J,GAAQ,QAAUq/J,IAAmB,QAAUD,GAmBrD,OAlBA,QACEZ,EACAa,EAAgB,GAChBA,EAAgB,GAChBr/J,GACCA,EACD,EACA,EACA,IAEF,QACEykK,EACA,EACAA,EAAch2M,OACdg7L,EACA+U,EACAkG,IAEK,QAAaF,EAAY75E,EAAzB,CACL85E,EACAC,EACAjb,KAGJ,QAAa+a,EAAY75E,GAE/B,OADA16H,KAAKgnM,eAAeC,GACbjnM,MAEX,EAvSA,CAAuB,6eC0RhB,SAAS00M,EAAmB3kJ,GACjC,IAAIypI,EAQJ,OAPIzpI,GAAU4kJ,EAAA,KACZnb,EAAS,EACAzpI,GAAU4kJ,EAAA,OAAsB5kJ,GAAU4kJ,EAAA,MACnDnb,EAAS,EACAzpI,GAAU4kJ,EAAA,SACnBnb,EAAS,GAEkB,EASxB,SAASob,EAAgBC,EAAgBv1D,EAAWoqD,GACzD,IAAMjE,EAAkBoP,EAAetb,qBACvC,GAAKkM,EAEE,CACL,IAAMjM,EAASqb,EAAepb,YAC9B,OAAO,QACLgM,EACA,EACAA,EAAgBjnM,OAChBg7L,EACAl6C,EACAoqD,GATF,OAAO,KAcX,QAjVA,YACE,mBACE,cAAO,YAMP,EAAK35I,OAAS4kJ,EAAA,KAMd,EAAKnb,OAAS,EAMd,EAAKiM,gBAAkB,OAoQ3B,OAxR6B,OA4B3B,YAAAqN,cAAA,SAAcpkC,GACZ,OAAO,QACL1uK,KAAKylM,gBACL,EACAzlM,KAAKylM,gBAAgBjnM,OACrBwB,KAAKw5L,OACL9qB,IAQJ,YAAAo8B,eAAA,WACE,OAAO,WAQT,YAAAgK,mBAAA,WACE,OAAO90M,KAAKylM,gBAAgBtjM,MAAM,EAAGnC,KAAKw5L,SAM5C,YAAAD,mBAAA,WACE,OAAOv5L,KAAKylM,iBAQd,YAAAsP,kBAAA,WACE,OAAO/0M,KAAKylM,gBAAgBtjM,MAC1BnC,KAAKylM,gBAAgBjnM,OAASwB,KAAKw5L,SASvC,YAAAmS,UAAA,WACE,OAAO3rM,KAAK+vD,QAQd,YAAAi/I,sBAAA,SAAsB7D,GAOpB,GANInrM,KAAK6zM,6BAA+B7zM,KAAKwuL,gBAC3CxuL,KAAK4zM,yCAA2C,EAChD5zM,KAAK6zM,2BAA6B7zM,KAAKwuL,eAKvC2c,EAAmB,GACgC,IAAlDnrM,KAAK4zM,0CACJzI,GAAoBnrM,KAAK4zM,yCAE3B,OAAO5zM,KAGT,IAAMg1M,EACJh1M,KAAKkrM,8BAA8BC,GAErC,OADkC6J,EAAmBzb,qBACvB/6L,OAASwB,KAAKylM,gBAAgBjnM,OACnDw2M,GAQPh1M,KAAK4zM,yCAA2CzI,EACzCnrM,OASX,YAAAkrM,8BAAA,SAA8BC,GAC5B,OAAOnrM,MAMT,YAAAy5L,UAAA,WACE,OAAOz5L,KAAKw5L,QAOd,YAAA4Q,mBAAA,SAAmBr6I,EAAQ01I,GACzBzlM,KAAKw5L,OAASkb,EAAmB3kJ,GACjC/vD,KAAK+vD,OAASA,EACd/vD,KAAKylM,gBAAkBA,GAQzB,YAAAnd,eAAA,SAAezgE,EAAamiF,IAC1B,WASF,YAAAsB,UAAA,SAAUv7I,EAAQ83D,EAAaotF,GAE7B,IAAIzb,EACJ,GAAIzpI,EACFypI,EAASkb,EAAmB3kJ,OACvB,CACL,IAAK,IAAIzwD,EAAI,EAAGA,EAAI21M,IAAW31M,EAAG,CAChC,GAA2B,IAAvBuoH,EAAYrpH,OAGd,OAFAwB,KAAK+vD,OAAS4kJ,EAAA,UACd30M,KAAKw5L,OAAS,GAGd3xE,EAAoCA,EAAY,GAIpD93D,EA8GN,SAA4BypI,GAC1B,IAAIzpI,EAQJ,OAPc,GAAVypI,EACFzpI,EAAS4kJ,EAAA,KACU,GAAVnb,EACTzpI,EAAS4kJ,EAAA,MACU,GAAVnb,IACTzpI,EAAS4kJ,EAAA,QAEiD,EAvH/CO,CADT1b,EAAS3xE,EAAYrpH,QAGvBwB,KAAK+vD,OAASA,EACd/vD,KAAKw5L,OAASA,GAYhB,YAAAwN,eAAA,SAAeC,GACTjnM,KAAKylM,kBACPwB,EAAYjnM,KAAKylM,gBAAiBzlM,KAAKylM,gBAAiBzlM,KAAKw5L,QAC7Dx5L,KAAKmpD,YAWT,YAAA+rC,OAAA,SAAO9vC,EAAOu/D,GACZ,IAAM8gF,EAAkBzlM,KAAKu5L,qBAC7B,GAAIkM,EAAiB,CACnB,IAAMjM,EAASx5L,KAAKy5L,aACpB,QACEgM,EACA,EACAA,EAAgBjnM,OAChBg7L,EACAp0I,EACAu/D,EACA8gF,GAEFzlM,KAAKmpD,YAaT,YAAApZ,MAAA,SAAMs1E,EAAI+uF,EAAQzwB,GAChB,IAAIr+D,EAAK8uF,OACEn2M,IAAPqnH,IACFA,EAAKD,GAEP,IAAIV,EAASg/D,EACRh/D,IACHA,GAAS,QAAU3kH,KAAK8uK,cAE1B,IAAM22B,EAAkBzlM,KAAKu5L,qBAC7B,GAAIkM,EAAiB,CACnB,IAAMjM,EAASx5L,KAAKy5L,aACpB,QACEgM,EACA,EACAA,EAAgBjnM,OAChBg7L,EACAn0E,EACAC,EACAX,EACA8gF,GAEFzlM,KAAKmpD,YAWT,YAAA8uB,UAAA,SAAUnqB,EAAQC,GAChB,IAAM03I,EAAkBzlM,KAAKu5L,qBAC7B,GAAIkM,EAAiB,CACnB,IAAMjM,EAASx5L,KAAKy5L,aACpB,QACEgM,EACA,EACAA,EAAgBjnM,OAChBg7L,EACA1rI,EACAC,EACA03I,GAEFzlM,KAAKmpD,YAGX,EAxRA,CAA6B,gCCNtB,SAAS+pJ,EAAWzN,EAAiBnjJ,EAAQjsB,EAAKmjK,GAIvD,IAHA,IAAI2b,EAAY,EACZlxI,EAAKwhI,EAAgBpvK,EAAMmjK,GAC3Bt1H,EAAKuhI,EAAgBpvK,EAAMmjK,EAAS,GACjCl3I,EAASjsB,EAAKisB,GAAUk3I,EAAQ,CACrC,IAAMr1H,EAAKshI,EAAgBnjJ,GACrB8hB,EAAKqhI,EAAgBnjJ,EAAS,GACpC6yJ,GAAajxI,EAAKC,EAAKF,EAAKG,EAC5BH,EAAKE,EACLD,EAAKE,EAEP,OAAO+wI,EAAY,EAUd,SAAS5B,EAAY9N,EAAiBnjJ,EAAQupJ,EAAMrS,GAEzD,IADA,IAAI3/I,EAAO,EACFv6C,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC7C,IAAM+2B,EAAMw1K,EAAKvsM,GACjBu6C,GAAQq5J,EAAWzN,EAAiBnjJ,EAAQjsB,EAAKmjK,GACjDl3I,EAASjsB,EAEX,OAAOwjB,EAUF,SAASizJ,EAAarH,EAAiBnjJ,EAAQyqJ,EAAOvT,GAE3D,IADA,IAAI3/I,EAAO,EACFv6C,EAAI,EAAG8sK,EAAK2gC,EAAMvuM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC9C,IAAMusM,EAAOkB,EAAMztM,GACnBu6C,GAAQ05J,EAAY9N,EAAiBnjJ,EAAQupJ,EAAMrS,GACnDl3I,EAASupJ,EAAKA,EAAKrtM,OAAS,GAE9B,OAAOq7C,gJCvCT,SAASu7J,EACP3P,EACA4P,EACAlxD,EACAq1C,EACAllJ,EACAC,EACAk2J,GAEA,IAIInoJ,EAJE2hB,EAAKwhI,EAAgB4P,GACrBnxI,EAAKuhI,EAAgB4P,EAAU,GAC/B32H,EAAK+mH,EAAgBthD,GAAWlgF,EAChCsgD,EAAKkhF,EAAgBthD,EAAU,GAAKjgF,EAE1C,GAAW,IAAPwa,GAAmB,IAAP6lC,EACdjiE,EAAS+yJ,MACJ,CACL,IAAMl8J,IAAM7E,EAAI2vB,GAAMya,GAAMnqC,EAAI2vB,GAAMqgD,IAAO7lC,EAAKA,EAAK6lC,EAAKA,GAC5D,GAAIprE,EAAI,EACNmJ,EAAS6hG,MACJ,IAAIhrG,EAAI,EAAG,CAChB,IAAK,IAAI75C,EAAI,EAAGA,EAAIk6L,IAAUl6L,EAC5BmrM,EAAanrM,IAAK,QAChBmmM,EAAgB4P,EAAU/1M,GAC1BmmM,EAAgBthD,EAAU7kJ,GAC1B65C,GAIJ,YADAsxJ,EAAajsM,OAASg7L,GAGtBl3I,EAAS+yJ,GAGb,IAAS/1M,EAAI,EAAGA,EAAIk6L,IAAUl6L,EAC5BmrM,EAAanrM,GAAKmmM,EAAgBnjJ,EAAShjD,GAE7CmrM,EAAajsM,OAASg7L,EAajB,SAAS8b,EAAgB7P,EAAiBnjJ,EAAQjsB,EAAKmjK,EAAQ1lK,GACpE,IAAImwC,EAAKwhI,EAAgBnjJ,GACrB4hB,EAAKuhI,EAAgBnjJ,EAAS,GAClC,IAAKA,GAAUk3I,EAAQl3I,EAASjsB,EAAKisB,GAAUk3I,EAAQ,CACrD,IAAMr1H,EAAKshI,EAAgBnjJ,GACrB8hB,EAAKqhI,EAAgBnjJ,EAAS,GAC9BizJ,GAAe,QAAUtxI,EAAIC,EAAIC,EAAIC,GACvCmxI,EAAezhL,IACjBA,EAAMyhL,GAERtxI,EAAKE,EACLD,EAAKE,EAEP,OAAOtwC,EAWF,SAAS0hL,EACd/P,EACAnjJ,EACAupJ,EACArS,EACA1lK,GAEA,IAAK,IAAIx0B,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC7C,IAAM+2B,EAAMw1K,EAAKvsM,GACjBw0B,EAAMwhL,EAAgB7P,EAAiBnjJ,EAAQjsB,EAAKmjK,EAAQ1lK,GAC5DwuB,EAASjsB,EAEX,OAAOvC,EAWF,SAAS2hL,EACdhQ,EACAnjJ,EACAyqJ,EACAvT,EACA1lK,GAEA,IAAK,IAAIx0B,EAAI,EAAG8sK,EAAK2gC,EAAMvuM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC9C,IAAMusM,EAAOkB,EAAMztM,GACnBw0B,EAAM0hL,EAAqB/P,EAAiBnjJ,EAAQupJ,EAAMrS,EAAQ1lK,GAClEwuB,EAASupJ,EAAKA,EAAKrtM,OAAS,GAE9B,OAAOs1B,EAiBF,SAAS4hL,EACdjQ,EACAnjJ,EACAjsB,EACAmjK,EACA5O,EACA+qB,EACArhK,EACAC,EACAk2J,EACAC,EACAkL,GAEA,GAAItzJ,GAAUjsB,EACZ,OAAOq0K,EAET,IAAIprM,EAAGstM,EACP,GAAiB,IAAbhiB,EAAgB,CAQlB,IANAgiB,GAAkB,QAChBt4J,EACAC,EACAkxJ,EAAgBnjJ,GAChBmjJ,EAAgBnjJ,EAAS,KAELooJ,EAAoB,CACxC,IAAKprM,EAAI,EAAGA,EAAIk6L,IAAUl6L,EACxBmrM,EAAanrM,GAAKmmM,EAAgBnjJ,EAAShjD,GAG7C,OADAmrM,EAAajsM,OAASg7L,EACfoT,EAEP,OAAOlC,EAKX,IAFA,IAAMmL,EAAWD,GAA8B,CAAC59J,IAAKA,KACjDxsB,EAAQ82B,EAASk3I,EACdhuK,EAAQ6K,GAWb,GAVA++K,EACE3P,EACAj6K,EAAQguK,EACRhuK,EACAguK,EACAllJ,EACAC,EACAshK,IAEFjJ,GAAkB,QAAUt4J,EAAGC,EAAGshK,EAAS,GAAIA,EAAS,KAClCnL,EAAoB,CAExC,IADAA,EAAqBkC,EAChBttM,EAAI,EAAGA,EAAIk6L,IAAUl6L,EACxBmrM,EAAanrM,GAAKu2M,EAASv2M,GAE7BmrM,EAAajsM,OAASg7L,EACtBhuK,GAASguK,OAYThuK,GACEguK,EACAvsL,KAAK6mB,KACD7mB,KAAK+gD,KAAK4+I,GAAmB3/L,KAAK+gD,KAAK08I,IACvC9f,EACA,EACF,GAIR,GAAI+qB,IAEFP,EACE3P,EACApvK,EAAMmjK,EACNl3I,EACAk3I,EACAllJ,EACAC,EACAshK,IAEFjJ,GAAkB,QAAUt4J,EAAGC,EAAGshK,EAAS,GAAIA,EAAS,KAClCnL,GAAoB,CAExC,IADAA,EAAqBkC,EAChBttM,EAAI,EAAGA,EAAIk6L,IAAUl6L,EACxBmrM,EAAanrM,GAAKu2M,EAASv2M,GAE7BmrM,EAAajsM,OAASg7L,EAG1B,OAAOkR,EAiBF,SAASoL,EACdrQ,EACAnjJ,EACAupJ,EACArS,EACA5O,EACA+qB,EACArhK,EACAC,EACAk2J,EACAC,EACAkL,GAGA,IADA,IAAMC,EAAWD,GAA8B,CAAC59J,IAAKA,KAC5C14C,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC7C,IAAM+2B,EAAMw1K,EAAKvsM,GACjBorM,EAAqBgL,EACnBjQ,EACAnjJ,EACAjsB,EACAmjK,EACA5O,EACA+qB,EACArhK,EACAC,EACAk2J,EACAC,EACAmL,GAEFvzJ,EAASjsB,EAEX,OAAOq0K,EAiBF,SAASqL,EACdtQ,EACAnjJ,EACAyqJ,EACAvT,EACA5O,EACA+qB,EACArhK,EACAC,EACAk2J,EACAC,EACAkL,GAGA,IADA,IAAMC,EAAWD,GAA8B,CAAC59J,IAAKA,KAC5C14C,EAAI,EAAG8sK,EAAK2gC,EAAMvuM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC9C,IAAMusM,EAAOkB,EAAMztM,GACnBorM,EAAqBoL,EACnBrQ,EACAnjJ,EACAupJ,EACArS,EACA5O,EACA+qB,EACArhK,EACAC,EACAk2J,EACAC,EACAmL,GAEFvzJ,EAASupJ,EAAKA,EAAKrtM,OAAS,GAE9B,OAAOksM,2FClUF,SAASsL,EACdvQ,EACAnjJ,EACAjsB,EACAmjK,EACA9qB,GAmBA,QAjBgB,QACdA,GAKA,SAAUiD,GACR,OAAQskC,EACNxQ,EACAnjJ,EACAjsB,EACAmjK,EACA7nB,EAAW,GACXA,EAAW,OAgBZ,SAASskC,EACdxQ,EACAnjJ,EACAjsB,EACAmjK,EACAllJ,EACAC,GAYA,IAHA,IAAI2hK,EAAK,EACLjyI,EAAKwhI,EAAgBpvK,EAAMmjK,GAC3Bt1H,EAAKuhI,EAAgBpvK,EAAMmjK,EAAS,GACjCl3I,EAASjsB,EAAKisB,GAAUk3I,EAAQ,CACrC,IAAMr1H,EAAKshI,EAAgBnjJ,GACrB8hB,EAAKqhI,EAAgBnjJ,EAAS,GAChC4hB,GAAM3vB,EACJ6vB,EAAK7vB,IAAM4vB,EAAKF,IAAO1vB,EAAI2vB,IAAO5vB,EAAI2vB,IAAOG,EAAKF,GAAM,GAC1DgyI,IAEO9xI,GAAM7vB,IAAM4vB,EAAKF,IAAO1vB,EAAI2vB,IAAO5vB,EAAI2vB,IAAOG,EAAKF,GAAM,GAClEgyI,IAEFjyI,EAAKE,EACLD,EAAKE,EAEP,OAAc,IAAP8xI,EAYF,SAASC,EACd1Q,EACAnjJ,EACAupJ,EACArS,EACAllJ,EACAC,GAEA,GAAoB,IAAhBs3J,EAAKrtM,OACP,OAAO,EAET,IAAKy3M,EAAqBxQ,EAAiBnjJ,EAAQupJ,EAAK,GAAIrS,EAAQllJ,EAAGC,GACrE,OAAO,EAET,IAAK,IAAIj1C,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAC1C,GACE22M,EAAqBxQ,EAAiBoG,EAAKvsM,EAAI,GAAIusM,EAAKvsM,GAAIk6L,EAAQllJ,EAAGC,GAEvE,OAAO,EAGX,OAAO,EAYF,SAAS6hK,EACd3Q,EACAnjJ,EACAyqJ,EACAvT,EACAllJ,EACAC,GAEA,GAAqB,IAAjBw4J,EAAMvuM,OACR,OAAO,EAET,IAAK,IAAIc,EAAI,EAAG8sK,EAAK2gC,EAAMvuM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC9C,IAAMusM,EAAOkB,EAAMztM,GACnB,GAAI62M,EAAsB1Q,EAAiBnjJ,EAAQupJ,EAAMrS,EAAQllJ,EAAGC,GAClE,OAAO,EAET+N,EAASupJ,EAAKA,EAAKrtM,OAAS,GAE9B,OAAO,gCCpIF,SAAS63M,EAAkB5Q,EAAiBnjJ,EAAQqvH,EAAY6nB,GACrE,IAAK,IAAIl6L,EAAI,EAAG8sK,EAAKuF,EAAWnzK,OAAQc,EAAI8sK,IAAM9sK,EAChDmmM,EAAgBnjJ,KAAYqvH,EAAWryK,GAEzC,OAAOgjD,EAUF,SAASg0J,EACd7Q,EACAnjJ,EACAulE,EACA2xE,GAEA,IAAK,IAAIl6L,EAAI,EAAG8sK,EAAKvkD,EAAYrpH,OAAQc,EAAI8sK,IAAM9sK,EAEjD,IADA,IAAMqyK,EAAa9pD,EAAYvoH,GACtB6tD,EAAI,EAAGA,EAAIqsI,IAAUrsI,EAC5Bs4I,EAAgBnjJ,KAAYqvH,EAAWxkH,GAG3C,OAAO7K,EAWF,SAASi0J,EACd9Q,EACAnjJ,EACAk0J,EACAhd,EACAiS,GAIA,IAFA,IAAMI,EAAOJ,GAAsB,GAC/BnsM,EAAI,EACC6tD,EAAI,EAAG8pI,EAAKuf,EAAah4M,OAAQ2uD,EAAI8pI,IAAM9pI,EAAG,CACrD,IAAM92B,EAAMigL,EACV7Q,EACAnjJ,EACAk0J,EAAarpJ,GACbqsI,GAEFqS,EAAKvsM,KAAO+2B,EACZisB,EAASjsB,EAGX,OADAw1K,EAAKrtM,OAASc,EACPusM,EAWF,SAAS4K,EACdhR,EACAnjJ,EACAo0J,EACAld,EACAyT,GAIA,IAFA,IAAMF,EAAQE,GAAwB,GAClC3tM,EAAI,EACC6tD,EAAI,EAAG8pI,EAAKyf,EAAcl4M,OAAQ2uD,EAAI8pI,IAAM9pI,EAAG,CACtD,IAAM0+I,EAAO0K,EACX9Q,EACAnjJ,EACAo0J,EAAcvpJ,GACdqsI,EACAuT,EAAMztM,IAERytM,EAAMztM,KAAOusM,EACbvpJ,EAASupJ,EAAKA,EAAKrtM,OAAS,GAG9B,OADAuuM,EAAMvuM,OAASc,EACRytM,4ECxFF,SAAS4J,EACdlR,EACAnjJ,EACAjsB,EACAmjK,EACAod,GAIA,IAFA,IAAM/uF,OAAkC5pH,IAApB24M,EAAgCA,EAAkB,GAClEt3M,EAAI,EACC6tD,EAAI7K,EAAQ6K,EAAI92B,EAAK82B,GAAKqsI,EACjC3xE,EAAYvoH,KAAOmmM,EAAgBtjM,MAAMgrD,EAAGA,EAAIqsI,GAGlD,OADA3xE,EAAYrpH,OAASc,EACduoH,EAWF,SAASgvF,EACdpR,EACAnjJ,EACAupJ,EACArS,EACAsd,GAIA,IAFA,IAAMN,OAAoCv4M,IAArB64M,EAAiCA,EAAmB,GACrEx3M,EAAI,EACC6tD,EAAI,EAAG8pI,EAAK4U,EAAKrtM,OAAQ2uD,EAAI8pI,IAAM9pI,EAAG,CAC7C,IAAM92B,EAAMw1K,EAAK1+I,GACjBqpJ,EAAal3M,KAAOq3M,EAClBlR,EACAnjJ,EACAjsB,EACAmjK,EACAgd,EAAal3M,IAEfgjD,EAASjsB,EAGX,OADAmgL,EAAah4M,OAASc,EACfk3M,EAYF,SAASO,EACdtR,EACAnjJ,EACAyqJ,EACAvT,EACAwd,GAKA,IAHA,IAAMN,OACkBz4M,IAAtB+4M,EAAkCA,EAAoB,GACpD13M,EAAI,EACC6tD,EAAI,EAAG8pI,EAAK8V,EAAMvuM,OAAQ2uD,EAAI8pI,IAAM9pI,EAAG,CAC9C,IAAM0+I,EAAOkB,EAAM5/I,GACnBupJ,EAAcp3M,KAAOu3M,EACnBpR,EACAnjJ,EACAupJ,EACArS,EACAkd,EAAcp3M,IAEhBgjD,EAASupJ,EAAKA,EAAKrtM,OAAS,GAG9B,OADAk4M,EAAcl4M,OAASc,EAChBo3M,oHCxEF,SAASO,EACdxR,EACAnjJ,EACAupJ,EACArS,EACAwT,EACAkK,EACAxN,GAOA,IALA,IAAIpqM,EAAG8sK,EAAI93H,EAAG2vB,EAAIE,EAAID,EAAIE,EACpB7vB,EAAIy4J,EAAYkK,EAAoB,GAEpCC,EAAgB,GAEbv0K,EAAI,EAAGw0K,EAAKvL,EAAKrtM,OAAQokC,EAAIw0K,IAAMx0K,EAAG,CAC7C,IAAMvM,EAAMw1K,EAAKjpK,GAGjB,IAFAqhC,EAAKwhI,EAAgBpvK,EAAMmjK,GAC3Bt1H,EAAKuhI,EAAgBpvK,EAAMmjK,EAAS,GAC/Bl6L,EAAIgjD,EAAQhjD,EAAI+2B,EAAK/2B,GAAKk6L,EAC7Br1H,EAAKshI,EAAgBnmM,GACrB8kE,EAAKqhI,EAAgBnmM,EAAI,IACpBi1C,GAAK2vB,GAAME,GAAM7vB,GAAO2vB,GAAM3vB,GAAKA,GAAK6vB,KAC3C9vB,GAAMC,EAAI2vB,IAAOE,EAAKF,IAAQC,EAAKF,GAAMA,EACzCkzI,EAAc/yM,KAAKkwC,IAErB2vB,EAAKE,EACLD,EAAKE,EAKT,IAAIizI,EAASr/J,IACTs/J,GAAmB,IAGvB,IAFAH,EAAchyK,KAAK,MACnB8+B,EAAKkzI,EAAc,GACd73M,EAAI,EAAG8sK,EAAK+qC,EAAc34M,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAClD6kE,EAAKgzI,EAAc73M,GACnB,IAAMi4M,EAAgBtqM,KAAKknB,IAAIgwC,EAAKF,GAChCszI,EAAgBD,IAClBhjK,GAAK2vB,EAAKE,GAAM,GACZ,QAAsBshI,EAAiBnjJ,EAAQupJ,EAAMrS,EAAQllJ,EAAGC,KAClE8iK,EAAS/iK,EACTgjK,EAAmBC,IAGvBtzI,EAAKE,EAOP,OALIxhE,MAAM00M,KAGRA,EAASrK,EAAYkK,IAEnBxN,GACFA,EAAStlM,KAAKizM,EAAQ9iK,EAAG+iK,GAClB5N,GAEA,CAAC2N,EAAQ9iK,EAAG+iK,GAahB,SAASE,EACd/R,EACAnjJ,EACAyqJ,EACAvT,EACAwT,GAGA,IADA,IAAIyK,EAAiB,GACZn4M,EAAI,EAAG8sK,EAAK2gC,EAAMvuM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC9C,IAAMusM,EAAOkB,EAAMztM,GACnBm4M,EAAiBR,EACfxR,EACAnjJ,EACAupJ,EACArS,EACAwT,EACA,EAAI1tM,EACJm4M,GAEFn1J,EAASupJ,EAAKA,EAAKrtM,OAAS,GAE9B,OAAOi5M,+GCxFF,SAASC,EACdjS,EACAnjJ,EACAjsB,EACAmjK,EACA9qB,GAEA,IAAMipC,GAAoB,SACxB,UACAlS,EACAnjJ,EACAjsB,EACAmjK,GAEF,SAAK,QAAW9qB,EAAQipC,QAGpB,QAAejpC,EAAQipC,IAGvBA,EAAkB,IAAMjpC,EAAO,IAAMipC,EAAkB,IAAMjpC,EAAO,IAGpEipC,EAAkB,IAAMjpC,EAAO,IAAMipC,EAAkB,IAAMjpC,EAAO,KAGjE,OACL+2B,EACAnjJ,EACAjsB,EACAmjK,GAOA,SAAUoe,EAAQC,GAChB,OAAO,QAAkBnpC,EAAQkpC,EAAQC,OAaxC,SAASC,EACdrS,EACAnjJ,EACAupJ,EACArS,EACA9qB,GAEA,IAAK,IAAIpvK,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC7C,GACEo4M,EAAqBjS,EAAiBnjJ,EAAQupJ,EAAKvsM,GAAIk6L,EAAQ9qB,GAE/D,OAAO,EAETpsH,EAASupJ,EAAKvsM,GAEhB,OAAO,EAgFF,SAASy4M,EACdtS,EACAnjJ,EACAupJ,EACArS,EACA9qB,GAEA,IA5EK,SACL+2B,EACAnjJ,EACAjsB,EACAmjK,EACA9qB,GAEA,SAAIgpC,EAAqBjS,EAAiBnjJ,EAAQjsB,EAAKmjK,EAAQ9qB,KAI7D,QACE+2B,EACAnjJ,EACAjsB,EACAmjK,EACA9qB,EAAO,GACPA,EAAO,MAMT,QACE+2B,EACAnjJ,EACAjsB,EACAmjK,EACA9qB,EAAO,GACPA,EAAO,MAMT,QACE+2B,EACAnjJ,EACAjsB,EACAmjK,EACA9qB,EAAO,GACPA,EAAO,MAMT,QACE+2B,EACAnjJ,EACAjsB,EACAmjK,EACA9qB,EAAO,GACPA,EAAO,KAuBNspC,CAAqBvS,EAAiBnjJ,EAAQupJ,EAAK,GAAIrS,EAAQ9qB,GAClE,OAAO,EAET,GAAoB,IAAhBm9B,EAAKrtM,OACP,OAAO,EAET,IAAK,IAAIc,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAC1C,IACE,QACEmmM,EACAoG,EAAKvsM,EAAI,GACTusM,EAAKvsM,GACLk6L,EACA9qB,KAICgpC,EACCjS,EACAoG,EAAKvsM,EAAI,GACTusM,EAAKvsM,GACLk6L,EACA9qB,GAGF,OAAO,EAIb,OAAO,EAWF,SAASupC,EACdxS,EACAnjJ,EACAyqJ,EACAvT,EACA9qB,GAEA,IAAK,IAAIpvK,EAAI,EAAG8sK,EAAK2gC,EAAMvuM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC9C,IAAMusM,EAAOkB,EAAMztM,GACnB,GACEy4M,EAA0BtS,EAAiBnjJ,EAAQupJ,EAAMrS,EAAQ9qB,GAEjE,OAAO,EAETpsH,EAASupJ,EAAKA,EAAKrtM,OAAS,GAE9B,OAAO,gCC3NF,SAAS05M,EAAiBzS,EAAiBnjJ,EAAQjsB,EAAKmjK,GAI7D,IAHA,IAAIv1H,EAAKwhI,EAAgBnjJ,GACrB4hB,EAAKuhI,EAAgBnjJ,EAAS,GAC9B9jD,EAAS,EACJc,EAAIgjD,EAASk3I,EAAQl6L,EAAI+2B,EAAK/2B,GAAKk6L,EAAQ,CAClD,IAAMr1H,EAAKshI,EAAgBnmM,GACrB8kE,EAAKqhI,EAAgBnmM,EAAI,GAC/Bd,GAAUyO,KAAK+gD,MAAMmW,EAAKF,IAAOE,EAAKF,IAAOG,EAAKF,IAAOE,EAAKF,IAC9DD,EAAKE,EACLD,EAAKE,EAEP,OAAO5lE,gDCZF,SAASqpH,EAAY49E,EAAiBnjJ,EAAQjsB,EAAKmjK,GACxD,KAAOl3I,EAASjsB,EAAMmjK,GAAQ,CAC5B,IAAK,IAAIl6L,EAAI,EAAGA,EAAIk6L,IAAUl6L,EAAG,CAC/B,IAAMwuG,EAAM23F,EAAgBnjJ,EAAShjD,GACrCmmM,EAAgBnjJ,EAAShjD,GAAKmmM,EAAgBpvK,EAAMmjK,EAASl6L,GAC7DmmM,EAAgBpvK,EAAMmjK,EAASl6L,GAAKwuG,EAEtCxrD,GAAUk3I,EACVnjK,GAAOmjK,GCHJ,SAAS2e,EAAsB1S,EAAiBnjJ,EAAQjsB,EAAKmjK,GAMlE,IAHA,IAAI/6I,EAAO,EACPwlB,EAAKwhI,EAAgBpvK,EAAMmjK,GAC3Bt1H,EAAKuhI,EAAgBpvK,EAAMmjK,EAAS,GACjCl3I,EAASjsB,EAAKisB,GAAUk3I,EAAQ,CACrC,IAAMr1H,EAAKshI,EAAgBnjJ,GACrB8hB,EAAKqhI,EAAgBnjJ,EAAS,GACpC7D,IAAS0lB,EAAKF,IAAOG,EAAKF,GAC1BD,EAAKE,EACLD,EAAKE,EAEP,OAAgB,IAAT3lB,OAAaxgD,EAAYwgD,EAAO,EAgBlC,SAAS25J,EACd3S,EACAnjJ,EACAupJ,EACArS,EACAsU,GAGA,IADA,IAAMz0J,OAAsBp7C,IAAd6vM,GAA0BA,EAC/BxuM,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC7C,IAAM+2B,EAAMw1K,EAAKvsM,GACX+4M,EAAcF,EAClB1S,EACAnjJ,EACAjsB,EACAmjK,GAEF,GAAU,IAANl6L,GACF,GAAK+5C,GAASg/J,IAAkBh/J,IAAUg/J,EACxC,OAAO,OAGT,GAAKh/J,IAAUg/J,IAAkBh/J,GAASg/J,EACxC,OAAO,EAGX/1J,EAASjsB,EAEX,OAAO,EAgBF,SAASiiL,EACd7S,EACAnjJ,EACAyqJ,EACAvT,EACAsU,GAEA,IAAK,IAAIxuM,EAAI,EAAG8sK,EAAK2gC,EAAMvuM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC9C,IAAMusM,EAAOkB,EAAMztM,GACnB,IACG84M,EAAuB3S,EAAiBnjJ,EAAQupJ,EAAMrS,EAAQsU,GAE/D,OAAO,EAELjC,EAAKrtM,SACP8jD,EAASupJ,EAAKA,EAAKrtM,OAAS,IAGhC,OAAO,EAgBF,SAAS+5M,EACd9S,EACAnjJ,EACAupJ,EACArS,EACAsU,GAGA,IADA,IAAMz0J,OAAsBp7C,IAAd6vM,GAA0BA,EAC/BxuM,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC7C,IAAM+2B,EAAMw1K,EAAKvsM,GACX+4M,EAAcF,EAClB1S,EACAnjJ,EACAjsB,EACAmjK,IAGM,IAANl6L,EACK+5C,GAASg/J,IAAkBh/J,IAAUg/J,EACrCh/J,IAAUg/J,IAAkBh/J,GAASg/J,IAE1C,EAAmB5S,EAAiBnjJ,EAAQjsB,EAAKmjK,GAEnDl3I,EAASjsB,EAEX,OAAOisB,EAgBF,SAASk2J,EACd/S,EACAnjJ,EACAyqJ,EACAvT,EACAsU,GAEA,IAAK,IAAIxuM,EAAI,EAAG8sK,EAAK2gC,EAAMvuM,OAAQc,EAAI8sK,IAAM9sK,EAC3CgjD,EAASi2J,EACP9S,EACAnjJ,EACAyqJ,EAAMztM,GACNk6L,EACAsU,GAGJ,OAAOxrJ,EAUF,SAASm2J,EAAYhT,EAAiBoG,GAI3C,IAHA,IAAMkB,EAAQ,GACVzqJ,EAAS,EACTo2J,EAAe,EACVp5M,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC7C,IAAM+2B,EAAMw1K,EAAKvsM,GAEjB,GAAK64M,EAAsB1S,EAAiBnjJ,EAAQjsB,EAAK,GAElD,CACL,GAAqB,IAAjB02K,EAAMvuM,OACR,SAEFuuM,EAAMA,EAAMvuM,OAAS,GAAG4F,KAAKynM,EAAK6M,SALlC3L,EAAM3oM,KAAKynM,EAAK1pM,MAAMu2M,EAAcp5M,EAAI,IAO1Co5M,EAAep5M,EAAI,EACnBgjD,EAASjsB,EAEX,OAAO02K,qFC7LF,SAASvqM,EAAQijM,EAAiBnjJ,EAAQjsB,EAAKmjK,EAAQh+K,GAC5D,IAAIu8C,EAEJ,IADAzV,GAAUk3I,EACHl3I,EAASjsB,EAAKisB,GAAUk3I,EAK7B,GAJAzhI,EAAMv8C,EACJiqL,EAAgBtjM,MAAMmgD,EAASk3I,EAAQl3I,GACvCmjJ,EAAgBtjM,MAAMmgD,EAAQA,EAASk3I,IAGvC,OAAOzhI,EAGX,OAAO,oHC+DF,SAAS4gJ,EACdlT,EACAnjJ,EACAjsB,EACAmjK,EACA2R,EACAC,EACAwN,GAEA,IAAM/6G,GAAKxnE,EAAMisB,GAAUk3I,EAC3B,GAAI37F,EAAI,EAAG,CACT,KAAOv7C,EAASjsB,EAAKisB,GAAUk3I,EAC7B4R,EAA0BwN,KAAsBnT,EAAgBnjJ,GAChE8oJ,EAA0BwN,KACxBnT,EAAgBnjJ,EAAS,GAE7B,OAAOs2J,EAGT,IAAMC,EAAU,IAAIv4M,MAAMu9F,GAC1Bg7G,EAAQ,GAAK,EACbA,EAAQh7G,EAAI,GAAK,EAIjB,IAFA,IAAMzqF,EAAQ,CAACkvC,EAAQjsB,EAAMmjK,GACzBhuK,EAAQ,EACLpY,EAAM5U,OAAS,GAAG,CAQvB,IAPA,IAAM+hD,EAAOntC,EAAM/Q,MACb08D,EAAQ3rD,EAAM/Q,MAChBy2M,EAAqB,EACnB70I,EAAKwhI,EAAgB1mI,GACrBmF,EAAKuhI,EAAgB1mI,EAAQ,GAC7BoF,EAAKshI,EAAgBllJ,GACrB6jB,EAAKqhI,EAAgBllJ,EAAO,GACzBjhD,EAAIy/D,EAAQy6H,EAAQl6L,EAAIihD,EAAMjhD,GAAKk6L,EAAQ,CAClD,IAAMllJ,EAAImxJ,EAAgBnmM,GACpBi1C,EAAIkxJ,EAAgBnmM,EAAI,GACxB,GAAkB,QAAuBg1C,EAAGC,EAAG0vB,EAAIC,EAAIC,EAAIC,GAC7D,EAAkB00I,IACpBttL,EAAQlsB,EACRw5M,EAAqB,GAGrBA,EAAqB3N,IACvB0N,GAASrtL,EAAQ82B,GAAUk3I,GAAU,EACjCz6H,EAAQy6H,EAAShuK,GACnBpY,EAAMhP,KAAK26D,EAAOvzC,GAEhBA,EAAQguK,EAASj5I,GACnBntC,EAAMhP,KAAKonB,EAAO+0B,IAIxB,IAASjhD,EAAI,EAAGA,EAAIu+F,IAAKv+F,EACnBu5M,EAAQv5M,KACV8rM,EAA0BwN,KACxBnT,EAAgBnjJ,EAAShjD,EAAIk6L,GAC/B4R,EAA0BwN,KACxBnT,EAAgBnjJ,EAAShjD,EAAIk6L,EAAS,IAG5C,OAAOof,EAeF,SAASG,EACdtT,EACAnjJ,EACAupJ,EACArS,EACA2R,EACAC,EACAwN,EACApM,GAEA,IAAK,IAAIltM,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC7C,IAAM+2B,EAAMw1K,EAAKvsM,GACjBs5M,EAAmBD,EACjBlT,EACAnjJ,EACAjsB,EACAmjK,EACA2R,EACAC,EACAwN,GAEFpM,EAAepoM,KAAKw0M,GACpBt2J,EAASjsB,EAEX,OAAOuiL,EAwGF,SAASI,EAAK78M,EAAOm4M,GAC1B,OAAOA,EAAYrnM,KAAKgsD,MAAM98D,EAAQm4M,GAsBjC,SAAS2E,EACdxT,EACAnjJ,EACAjsB,EACAmjK,EACA8a,EACAlJ,EACAwN,GAGA,GAAIt2J,GAAUjsB,EACZ,OAAOuiL,EAGT,IAQIz0I,EAAIC,EARJH,EAAK+0I,EAAKvT,EAAgBnjJ,GAASgyJ,GACnCpwI,EAAK80I,EAAKvT,EAAgBnjJ,EAAS,GAAIgyJ,GAC3ChyJ,GAAUk3I,EAEV4R,EAA0BwN,KAAsB30I,EAChDmnI,EAA0BwN,KAAsB10I,EAIhD,GAIE,GAHAC,EAAK60I,EAAKvT,EAAgBnjJ,GAASgyJ,GACnClwI,EAAK40I,EAAKvT,EAAgBnjJ,EAAS,GAAIgyJ,IACvChyJ,GAAUk3I,IACInjK,EAOZ,OAFA+0K,EAA0BwN,KAAsBz0I,EAChDinI,EAA0BwN,KAAsBx0I,EACzCw0I,QAEFz0I,GAAMF,GAAMG,GAAMF,GAC3B,KAAO5hB,EAASjsB,GAAK,CAEnB,IAAMu2D,EAAKosH,EAAKvT,EAAgBnjJ,GAASgyJ,GACnCznH,EAAKmsH,EAAKvT,EAAgBnjJ,EAAS,GAAIgyJ,GAG7C,GAFAhyJ,GAAUk3I,EAEN5sG,GAAMzoB,GAAM0oB,GAAMzoB,EAAtB,CAIA,IAAM80I,EAAM/0I,EAAKF,EACXk1I,EAAM/0I,EAAKF,EAEXk1I,EAAMxsH,EAAK3oB,EACXo1I,EAAMxsH,EAAK3oB,EAKfg1I,EAAMG,GAAOF,EAAMC,IACjBF,EAAM,GAAKE,EAAMF,GAAQA,GAAOE,GAAQF,EAAM,GAAKE,EAAMF,KACzDC,EAAM,GAAKE,EAAMF,GAAQA,GAAOE,GAAQF,EAAM,GAAKE,EAAMF,IAG3Dh1I,EAAKyoB,EACLxoB,EAAKyoB,IAMPu+G,EAA0BwN,KAAsBz0I,EAChDinI,EAA0BwN,KAAsBx0I,EAChDH,EAAKE,EACLD,EAAKE,EACLD,EAAKyoB,EACLxoB,EAAKyoB,IAKP,OAFAu+G,EAA0BwN,KAAsBz0I,EAChDinI,EAA0BwN,KAAsBx0I,EACzCw0I,EAeF,SAASU,EACd7T,EACAnjJ,EACAupJ,EACArS,EACA8a,EACAlJ,EACAwN,EACApM,GAEA,IAAK,IAAIltM,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC7C,IAAM+2B,EAAMw1K,EAAKvsM,GACjBs5M,EAAmBK,EACjBxT,EACAnjJ,EACAjsB,EACAmjK,EACA8a,EACAlJ,EACAwN,GAEFpM,EAAepoM,KAAKw0M,GACpBt2J,EAASjsB,EAEX,OAAOuiL,EAeF,SAASW,EACd9T,EACAnjJ,EACAyqJ,EACAvT,EACA8a,EACAlJ,EACAwN,EACA1K,GAEA,IAAK,IAAI5uM,EAAI,EAAG8sK,EAAK2gC,EAAMvuM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC9C,IAAMusM,EAAOkB,EAAMztM,GACbktM,EAAiB,GACvBoM,EAAmBU,EACjB7T,EACAnjJ,EACAupJ,EACArS,EACA8a,EACAlJ,EACAwN,EACApM,GAEF0B,EAAgB9pM,KAAKooM,GACrBlqJ,EAASupJ,EAAKA,EAAKrtM,OAAS,GAE9B,OAAOo6M,gCC/cF,SAASY,EACd/T,EACAnjJ,EACAjsB,EACAmjK,EACAl6C,EACAoqD,GAIA,IAFA,IAAMniB,EAAOmiB,GAAsB,GAC/BpqM,EAAI,EACC6tD,EAAI7K,EAAQ6K,EAAI92B,EAAK82B,GAAKqsI,EAAQ,CACzC,IAAMllJ,EAAImxJ,EAAgBt4I,GACpB5Y,EAAIkxJ,EAAgBt4I,EAAI,GAC9Bo6H,EAAKjoL,KAAOggJ,EAAU,GAAKhrG,EAAIgrG,EAAU,GAAK/qG,EAAI+qG,EAAU,GAC5DioC,EAAKjoL,KAAOggJ,EAAU,GAAKhrG,EAAIgrG,EAAU,GAAK/qG,EAAI+qG,EAAU,GAK9D,OAHIoqD,GAAYniB,EAAK/oL,QAAUc,IAC7BioL,EAAK/oL,OAASc,GAETioL,EAaF,SAASryF,EACduwG,EACAnjJ,EACAjsB,EACAmjK,EACAp0I,EACAu/D,EACA+kF,GAQA,IANA,IAAMniB,EAAOmiB,GAAsB,GAC7B5kJ,EAAM73C,KAAK63C,IAAIM,GACfJ,EAAM/3C,KAAK+3C,IAAII,GACfq0J,EAAU90F,EAAO,GACjB+0F,EAAU/0F,EAAO,GACnBrlH,EAAI,EACC6tD,EAAI7K,EAAQ6K,EAAI92B,EAAK82B,GAAKqsI,EAAQ,CACzC,IAAM1rI,EAAS23I,EAAgBt4I,GAAKssJ,EAC9B1rJ,EAAS03I,EAAgBt4I,EAAI,GAAKusJ,EACxCnyB,EAAKjoL,KAAOm6M,EAAU3rJ,EAAShJ,EAAMiJ,EAAS/I,EAC9CuiI,EAAKjoL,KAAOo6M,EAAU5rJ,EAAS9I,EAAM+I,EAASjJ,EAC9C,IAAK,IAAI82C,EAAIzuC,EAAI,EAAGyuC,EAAIzuC,EAAIqsI,IAAU59F,EACpC2rF,EAAKjoL,KAAOmmM,EAAgB7pG,GAMhC,OAHI8tG,GAAYniB,EAAK/oL,QAAUc,IAC7BioL,EAAK/oL,OAASc,GAETioL,EAeF,SAASx3I,EACd01J,EACAnjJ,EACAjsB,EACAmjK,EACAn0E,EACAC,EACAX,EACA+kF,GAMA,IAJA,IAAMniB,EAAOmiB,GAAsB,GAC7B+P,EAAU90F,EAAO,GACjB+0F,EAAU/0F,EAAO,GACnBrlH,EAAI,EACC6tD,EAAI7K,EAAQ6K,EAAI92B,EAAK82B,GAAKqsI,EAAQ,CACzC,IAAM1rI,EAAS23I,EAAgBt4I,GAAKssJ,EAC9B1rJ,EAAS03I,EAAgBt4I,EAAI,GAAKusJ,EACxCnyB,EAAKjoL,KAAOm6M,EAAUp0F,EAAKv3D,EAC3By5H,EAAKjoL,KAAOo6M,EAAUp0F,EAAKv3D,EAC3B,IAAK,IAAI6tC,EAAIzuC,EAAI,EAAGyuC,EAAIzuC,EAAIqsI,IAAU59F,EACpC2rF,EAAKjoL,KAAOmmM,EAAgB7pG,GAMhC,OAHI8tG,GAAYniB,EAAK/oL,QAAUc,IAC7BioL,EAAK/oL,OAASc,GAETioL,EAaF,SAAStvG,EACdwtH,EACAnjJ,EACAjsB,EACAmjK,EACA1rI,EACAC,EACA27I,GAIA,IAFA,IAAMniB,EAAOmiB,GAAsB,GAC/BpqM,EAAI,EACC6tD,EAAI7K,EAAQ6K,EAAI92B,EAAK82B,GAAKqsI,EAAQ,CACzCjS,EAAKjoL,KAAOmmM,EAAgBt4I,GAAKW,EACjCy5H,EAAKjoL,KAAOmmM,EAAgBt4I,EAAI,GAAKY,EACrC,IAAK,IAAI6tC,EAAIzuC,EAAI,EAAGyuC,EAAIzuC,EAAIqsI,IAAU59F,EACpC2rF,EAAKjoL,KAAOmmM,EAAgB7pG,GAMhC,OAHI8tG,GAAYniB,EAAK/oL,QAAUc,IAC7BioL,EAAK/oL,OAASc,GAETioL,4JC/IT,IAAMoyB,EACiB,oBAAd5gM,gBAA4D,IAAxBA,UAAU6K,UACjD7K,UAAU6K,UAAUqZ,cACpB,GAMO28K,GAAqC,IAA3BD,EAAGvwM,QAAQ,WAYrBywM,IANmC,IAA1BF,EAAGvwM,QAAQ,WAAoBuwM,EAAGvwM,QAAQ,UAM/B,GAYpB0wM,GAAmC,IAA1BH,EAAGvwM,QAAQ,YAA2C,GAAvBuwM,EAAGvwM,QAAQ,QAMnD2wM,GAAmC,IAA7BJ,EAAGvwM,QAAQ,aASjB4wM,EACiB,oBAArBlkJ,iBAAmCA,iBAAmB,EAOlDmkJ,EACkB,oBAAtBC,mBACoB,oBAApBtiJ,iBACP31C,gBAAgBi4L,kBAMLC,EACM,oBAAVlqC,OAAyBA,MAAMpwK,UAAU+kI,OAKrCw1E,EAA0B,WACrC,IAAIxlJ,GAAU,EACd,IACE,IAAMn3D,EAAUxB,OAAOC,eAAe,GAAI,UAAW,CACnDge,IAAK,WACH06C,GAAU,KAId5vD,OAAOiT,iBAAiB,IAAK,KAAMxa,GACnCuH,OAAOqsB,oBAAoB,IAAK,KAAM5zB,GACtC,MAAOiW,IAGT,OAAOkhD,EAd8B,sjBCkUvC,QA9UA,YAIE,WAAYn3D,GAAZ,MACE,cAAO,KAKP,EAAK8/H,GAKL,EAAKpsG,KAKL,EAAK66I,GAML,EAAKquC,YAAc58M,EAAQ68M,WAK3B,IAAMlsK,GAAa,QAAO,GAAI3wC,SACI,iBAAvBA,EAAQ2wC,oBACVA,EAAWA,YAClB,QAAOA,EAAY3wC,EAAQ2wC,aAG7BA,EAAW,kBACWnwC,IAApBR,EAAQ8sF,QAAwB9sF,EAAQ8sF,QAAU,GACpD,OAAoD,iBAAtCn8C,EAAW,aAAqC,IAE9DA,EAAW,kBACWnwC,IAApBR,EAAQixC,SAAwBjxC,EAAQixC,QAC1CN,EAAW,aAAyB3wC,EAAQo2K,OAC5CzlI,EAAW,yBACiBnwC,IAA1BR,EAAQi0L,cAA8Bj0L,EAAQi0L,cAAgBlgK,EAAAA,EAChE4c,EAAW,yBACiBnwC,IAA1BR,EAAQk0L,cAA8Bl0L,EAAQk0L,cAAgB,EAChEvjJ,EAAW,mBACWnwC,IAApBR,EAAQo2L,QAAwBp2L,EAAQo2L,SAAU,IACpDzlJ,EAAW,mBACWnwC,IAApBR,EAAQq2L,QAAwBr2L,EAAQq2L,QAAUtiK,EAAAA,EAMpD,EAAK+oL,gBACsBt8M,IAAzBmwC,EAAWvR,UAA0BuR,EAAWvR,UAAY,kBACvDuR,EAAWvR,UAElB,EAAKgxI,cAAcz/H,GAMnB,EAAKosK,OAAS,OAyQlB,OA5UwB,OA0EtB,YAAAC,cAAA,WACE,OAAOz6M,KAAKq6M,aAMd,YAAAK,aAAA,WACE,OAAO16M,KAAKu6M,YAUd,YAAAI,cAAA,SAAcC,GAEZ,IAAM1yK,EACJloC,KAAKw6M,QACY,CACfhzL,MAAOxnB,KACPgyK,aAAyB/zK,IAAhB28M,GAAmCA,GAE1C/mC,EAAS7zK,KAAK66M,YAWpB,OAVA3yK,EAAMqiD,SAAU,QAAMt9E,KAAKgsD,MAA0B,IAApBj5D,KAAK86M,cAAsB,IAAK,EAAG,GACpE5yK,EAAMwG,QAAU1uC,KAAK+6M,aACrB7yK,EAAMwmI,OAAS1uK,KAAK8uK,YACpB5mI,EAAM2rI,YAAoB51K,IAAX41K,GAAyB3rI,EAAM8pI,QAAqB6B,EAAXriJ,EAAAA,EACxD0W,EAAMwpJ,cAAgB1xL,KAAKi4L,mBAC3B/vJ,EAAMypJ,cAAgB1kL,KAAK6mB,IAAI9zB,KAAKk4L,mBAAoB,GACxDhwJ,EAAM2rJ,QAAU7zL,KAAKs4L,aACrBpwJ,EAAM4rJ,QAAU9zL,KAAKm4L,aACrBn4L,KAAKw6M,OAAStyK,EAEPA,GAST,YAAA8yK,eAAA,SAAelvC,GACb,OAAO,WAST,YAAAgU,oBAAA,SAAoBm7B,GAClB,OAAO,WAUT,YAAAnsC,UAAA,WACE,OACE9uK,KAAKka,IAAI,aAUb,YAAA+9K,iBAAA,WACE,OAA8Bj4L,KAAKka,IAAI,qBASzC,YAAAg+K,iBAAA,WACE,OAA8Bl4L,KAAKka,IAAI,qBASzC,YAAAo+K,WAAA,WACE,OAA8Bt4L,KAAKka,IAAI,eASzC,YAAAi+K,WAAA,WACE,OAA8Bn4L,KAAKka,IAAI,eASzC,YAAA4gM,WAAA,WACE,OAA8B96M,KAAKka,IAAI,cAOzC,YAAAo6J,eAAA,WACE,OAAO,WAST,YAAAymC,WAAA,WACE,OAA+B/6M,KAAKka,IAAI,cAU1C,YAAA2gM,UAAA,WACE,OAA8B76M,KAAKka,IAAI,cAOzC,YAAAghM,cAAA,SAAcC,GACZn7M,KAAKq6M,YAAcc,EACnBn7M,KAAKmpD,WAUP,YAAAkoJ,UAAA,SAAU3iC,GACR1uK,KAAKwrC,IAAI,WAAsBkjI,IASjC,YAAA0sC,iBAAA,SAAiB1pB,GACf1xL,KAAKwrC,IAAI,mBAA8BkmJ,IASzC,YAAA2pB,iBAAA,SAAiB1pB,GACf3xL,KAAKwrC,IAAI,mBAA8BmmJ,IAWzC,YAAA0G,WAAA,SAAWvE,GACT9zL,KAAKwrC,IAAI,aAAwBsoJ,IAWnC,YAAAyE,WAAA,SAAW1E,GACT7zL,KAAKwrC,IAAI,aAAwBqoJ,IASnC,YAAAynB,WAAA,SAAW/wH,IACT,OAA0B,iBAAZA,EAAsB,IACpCvqF,KAAKwrC,IAAI,YAAuB++C,IASlC,YAAAgxH,WAAA,SAAW7sK,GACT1uC,KAAKwrC,IAAI,YAAuBkD,IAUlC,YAAA8sK,UAAA,SAAUC,GACRz7M,KAAKwrC,IAAI,YAAuBiwK,IAMlC,YAAAtuC,gBAAA,WACMntK,KAAKw6M,SACPx6M,KAAKw6M,OAAOhzL,MAAQ,KACpBxnB,KAAKw6M,OAAS,MAEhB,YAAMrtC,gBAAe,YAEzB,EA5UA,CAAwB,0hBCiGxB,QAnGA,YAIE,WAAYpB,GAAZ,WACQtuK,EAAUsuK,GAA4B,GAEtC2vC,GAAc,QAAO,GAAIj+M,iBAExBi+M,EAAYC,eACZD,EAAYE,0BACnB,YAAMF,IAAY,MAKbn+E,GAKL,EAAKpsG,KAKL,EAAK66I,GAEL,EAAK6vC,gBAA+B59M,IAApBR,EAAQk+M,QAAwBl+M,EAAQk+M,QAAU,GAClE,EAAKG,+BACgC79M,IAAnCR,EAAQm+M,wBACJn+M,EAAQm+M,0BAkElB,OAjG4B,OA0C1B,YAAAG,WAAA,WACE,OAA8B/7M,KAAKka,IAAI,cASzC,YAAA2hM,WAAA,SAAWF,GACT37M,KAAKwrC,IAAI,YAAsBmwK,IASjC,YAAAK,0BAAA,WACE,OACEh8M,KAAKka,IAAI,iCAUb,YAAA4hM,0BAAA,SAA0BF,GACxB57M,KAAKwrC,IAAI,+BAAyCowK,IAmBpD,YAAAK,QAAA,SAAQp5I,GACN,OAAO,YAAMo5I,QAAO,UAACp5I,IAEzB,EAjGA,CAA4B,oiBCStB8oG,EACU,cAiMhB,QAlLA,YAIE,WAAYI,GAAZ,WACQtuK,EAAUsuK,GAA4B,GAEtC2vC,GAAc,QAAO,GAAIj+M,iBAExBi+M,EAAYh0J,aACZg0J,EAAYQ,oBACZR,EAAYS,4BACZT,EAAYU,0BACnB,YAAMV,IAAY,MAMbW,gBACmBp+M,IAAtBR,EAAQ6+M,WAA0B7+M,EAAQ6+M,UAM5C,EAAKC,mBACsBt+M,IAAzBR,EAAQy+M,aAA6Bz+M,EAAQy+M,aAAe,IAO9D,EAAK3uC,OAAS,KAOd,EAAKC,oBAAiBvvK,EAEtB,EAAKq6E,SAAS76E,EAAQiqD,OAMtB,EAAK80J,2BAC8Bv+M,IAAjCR,EAAQ0+M,sBACJ1+M,EAAQ0+M,qBAOd,EAAKM,6BACgCx+M,IAAnCR,EAAQ2+M,wBACJ3+M,EAAQ2+M,yBAoHlB,OAhL8B,OAmE5B,YAAAM,aAAA,WACE,OAAO18M,KAAKq8M,YAiBd,YAAAM,YAAA,SAAY95I,GACV,OAAO,YAAM85I,YAAW,UAAC95I,IAM3B,YAAA+5I,gBAAA,WACE,OAAO58M,KAAKu8M,eAOd,YAAAM,eAAA,WACE,OACE78M,KAAKka,IAAIyxJ,IAUb,YAAA3xH,SAAA,WACE,OAAOh6C,KAAKutK,QAQd,YAAAc,iBAAA,WACE,OAAOruK,KAAKwtK,gBAOd,YAAAsvC,wBAAA,WACE,OAAO98M,KAAKw8M,uBAOd,YAAAO,0BAAA,WACE,OAAO/8M,KAAKy8M,yBAOd,YAAAjoC,gBAAA,SAAgBrD,GACTA,EAAWyR,gBACdzR,EAAWyR,cAAgB,IAAI,EAAM,IAErB5iL,KAAK8yK,cAAe0B,gBAAgBrD,IAOxD,YAAA6rC,eAAA,SAAeC,GACbj9M,KAAKwrC,IAAImgI,EAAuBsxC,IAalC,YAAA3kI,SAAA,SAASi2F,GACPvuK,KAAKutK,YAAuBtvK,IAAdswK,EAA0BA,EAAY,KACpDvuK,KAAKwtK,eACW,OAAde,OAAqBtwK,GAAY,QAAgB+B,KAAKutK,QACxDvtK,KAAKmpD,WAET,EAhLA,CAA8B,4nBC5D9B,cAKE,WAAY9qD,EAAMmpB,GAAlB,MACE,YAAMnpB,IAAK,YAOX,EAAKmpB,MAAQA,IAEjB,OAfgC,OAehC,EAfA,CAAgC,MAmD1BmkJ,EACI,SAkRV,QAvQA,YAIE,WAAYI,GAAZ,WACQtuK,EAAUsuK,GAAe,GACzB2vC,GAAsC,QAAO,GAAIj+M,UAChDi+M,EAAY5oI,OAEnB,IAAIA,EAASr1E,EAAQq1E,gBAErB,YAAM4oI,IAAY,MAKbn+E,GAKL,EAAKpsG,KAKL,EAAK66I,GAML,EAAKkxC,oBAAsB,GAM3B,EAAKC,cAAgB,GAErB,EAAKzvC,kBAAkB/B,EAAiB,EAAKyxC,sBAEzCtqI,EACExyE,MAAMiF,QAAQutE,GAChBA,EAAS,IAAI,IAAWA,EAAO3wE,QAAS,CAAC+pK,QAAQ,KAEjD,OAAuD,mBAAvB,EAAiB,SAAkB,IAGrEp5F,EAAS,IAAI,SAAW70E,EAAW,CAACiuK,QAAQ,IAG9C,EAAKwT,UAAU5sG,KAiNnB,OArQyB,OA0DvB,YAAAuqI,mBAAA,WACEr9M,KAAKmpD,WAMP,YAAAi0J,qBAAA,WACEp9M,KAAKk9M,oBAAoB16M,QAAQ,MACjCxC,KAAKk9M,oBAAoB1+M,OAAS,EAElC,IAAMs0E,EAAS9yE,KAAKw6K,YAMpB,IAAK,IAAM19K,KALXkD,KAAKk9M,oBAAoB94M,MACvB,QAAO0uE,EAAQ,QAAyB9yE,KAAKs9M,iBAAkBt9M,OAC/D,QAAO8yE,EAAQ,WAA4B9yE,KAAKu9M,oBAAqBv9M,OAGtDA,KAAKm9M,cACpBn9M,KAAKm9M,cAAcrgN,GAAI0F,QAAQ,OAEjC,QAAMxC,KAAKm9M,eAGX,IADA,IAAMK,EAAc1qI,EAAO25F,WAClBntK,EAAI,EAAG8sK,EAAKoxC,EAAYh/M,OAAQc,EAAI8sK,EAAI9sK,IAAK,CACpD,IAAMkoB,EAAQg2L,EAAYl+M,GAC1BU,KAAKy9M,wBAAwBj2L,GAC7BxnB,KAAKopH,cAAc,IAAIs0F,EAAW,WAAYl2L,IAEhDxnB,KAAKmpD,WAMP,YAAAs0J,wBAAA,SAAwBj2L,GACtB,IAAMmoJ,EAAe,EACnB,QACEnoJ,EACA,mBACAxnB,KAAKq9M,mBACLr9M,OAEF,QAAOwnB,EAAO,WAAkBxnB,KAAKq9M,mBAAoBr9M,OAGvDwnB,aAAiBm2L,GACnBhuC,EAAavrK,MACX,QAAOojB,EAAO,WAAYxnB,KAAK49M,qBAAsB59M,OACrD,QAAOwnB,EAAO,cAAexnB,KAAK69M,wBAAyB79M,OAI/DA,KAAKm9M,eAAc,QAAO31L,IAAUmoJ,GAMtC,YAAAiuC,qBAAA,SAAqB1gN,GACnB8C,KAAKopH,cAAc,IAAIs0F,EAAW,WAAYxgN,EAAMsqB,SAMtD,YAAAq2L,wBAAA,SAAwB3gN,GACtB8C,KAAKopH,cAAc,IAAIs0F,EAAW,cAAexgN,EAAMsqB,SAOzD,YAAA81L,iBAAA,SAAiBQ,GACf,IAAMt2L,EACJs2L,EAAuB,QAEzB99M,KAAKy9M,wBAAwBj2L,GAC7BxnB,KAAKopH,cAAc,IAAIs0F,EAAW,WAAYl2L,IAC9CxnB,KAAKmpD,WAOP,YAAAo0J,oBAAA,SAAoBO,GAClB,IAAMt2L,EACJs2L,EAAuB,QAEnBj6M,GAAM,QAAO2jB,GACnBxnB,KAAKm9M,cAAct5M,GAAKrB,QAAQ,aACzBxC,KAAKm9M,cAAct5M,GAC1B7D,KAAKopH,cAAc,IAAIs0F,EAAW,cAAel2L,IACjDxnB,KAAKmpD,WAWP,YAAAqxH,UAAA,WACE,OACEx6K,KAAKka,IAAIyxJ,IAYb,YAAA+T,UAAA,SAAU5sG,GACR,IAAM8sG,EAAa5/K,KAAKw6K,YACxB,GAAIoF,EAEF,IADA,IAAMm+B,EAAgBn+B,EAAWnT,WACxBntK,EAAI,EAAG8sK,EAAK2xC,EAAcv/M,OAAQc,EAAI8sK,IAAM9sK,EACnDU,KAAKopH,cAAc,IAAIs0F,EAAW,cAAeK,EAAcz+M,KAInEU,KAAKwrC,IAAImgI,EAAiB74F,IAO5B,YAAAkoI,eAAA,SAAelvC,GACb,IAAM38G,OAAsBlxD,IAAd6tK,EAA0BA,EAAY,GAIpD,OAHA9rK,KAAKw6K,YAAYh4K,SAAQ,SAAUglB,GACjCA,EAAMwzL,eAAe7rJ,MAEhBA,GAYT,YAAA2wH,oBAAA,SAAoBm7B,GAClB,IAAMv+E,OAAwBz+H,IAAfg9M,EAA2BA,EAAa,GACjD7rJ,EAAMstE,EAAOl+H,OAEnBwB,KAAKw6K,YAAYh4K,SAAQ,SAAUglB,GACjCA,EAAMs4J,oBAAoBpjD,MAG5B,IAAMshF,EAAgBh+M,KAAK26M,gBACvBsD,EAAgBD,EAAcnqC,OAC7BonC,QAAuCh9M,IAAzB+/M,EAAcnqC,SAC/BoqC,EAAgB,GAElB,IAAK,IAAI3+M,EAAI8vD,EAAKg9G,EAAK1vC,EAAOl+H,OAAQc,EAAI8sK,EAAI9sK,IAAK,CACjD,IAAMqzK,EAAaj2C,EAAOp9H,GAC1BqzK,EAAWpoF,SAAWyzH,EAAczzH,QACpCooF,EAAWjkI,QAAUikI,EAAWjkI,SAAWsvK,EAActvK,QACzDikI,EAAW+e,cAAgBzkL,KAAK6d,IAC9B6nJ,EAAW+e,cACXssB,EAActsB,eAEhB/e,EAAWgf,cAAgB1kL,KAAK6mB,IAC9B6+I,EAAWgf,cACXqsB,EAAcrsB,eAEhBhf,EAAWkhB,QAAU5mL,KAAK6mB,IAAI6+I,EAAWkhB,QAASmqB,EAAcnqB,SAChElhB,EAAWmhB,QAAU7mL,KAAK6d,IAAI6nJ,EAAWmhB,QAASkqB,EAAclqB,cACnC71L,IAAzB+/M,EAActvC,cACUzwK,IAAtB00K,EAAWjE,OACbiE,EAAWjE,QAAS,QAClBiE,EAAWjE,OACXsvC,EAActvC,QAGhBiE,EAAWjE,OAASsvC,EAActvC,aAGZzwK,IAAtB00K,EAAWkB,SACblB,EAAWkB,OAASoqC,GAIxB,OAAOvhF,GAMT,YAAA43C,eAAA,WACE,OAAO,WAEX,EArQA,CAAyB,olBCyUlB,SAAS4pC,EAAOvrC,EAAYpB,GACjC,IAAKoB,EAAWjkI,QACd,OAAO,EAET,IAAMigI,EAAa4C,EAAU5C,WAC7B,GACEA,EAAagE,EAAWgf,eACxBhjB,GAAcgE,EAAW+e,cAEzB,OAAO,EAET,IAAM4E,EAAO/kB,EAAU+kB,KACvB,OAAOA,EAAO3jB,EAAWkhB,SAAWyC,GAAQ3jB,EAAWmhB,QAGzD,QA/UA,YAIE,WAAYr2L,GAAZ,WACQi+M,GAAc,QAAO,GAAIj+M,UACxBi+M,EAAY//M,UAEnB,YAAM+/M,IAAY,MAKbn+E,GAKL,EAAKpsG,KAKL,EAAK66I,GAML,EAAKmyC,kBAAoB,KAMzB,EAAKC,cAAgB,KAMrB,EAAKC,iBAAmB,KAMxB,EAAKthC,UAAY,KAMjB,EAAKuhC,UAAW,EAGZ7gN,EAAQ6yE,SACV,EAAKA,OAAS7yE,EAAQ6yE,QAGpB7yE,EAAQyL,KACV,EAAK00K,OAAOngL,EAAQyL,KAGtB,EAAKwkK,kBACH,WACA,EAAK6wC,6BAGP,IAAM5iN,EAAS8B,EAAQ9B,OACQ8B,EAAc,OACzC,YACJ,EAAK+gN,UAAU7iN,KA+OnB,OAvToB,OA+ElB,YAAAq/M,eAAA,SAAelvC,GACb,IAAM38G,EAAQ28G,GAAwB,GAEtC,OADA38G,EAAM/qD,KAAKpE,MACJmvD,GAOT,YAAA2wH,oBAAA,SAAoBm7B,GAClB,IAAMv+E,EAASu+E,GAA0B,GAEzC,OADAv+E,EAAOt4H,KAAKpE,KAAK26M,iBACVj+E,GAST,YAAAq2C,UAAA,WACE,OAAkC/yK,KAAKka,IAAI,aAA0B,MAMvE,YAAAukM,gBAAA,WACE,OAAOz+M,KAAK+yK,aAMd,YAAAuB,eAAA,WACE,IAAM34K,EAASqE,KAAK+yK,YACpB,OAAQp3K,EAAiCA,EAAOuzK,WAA/B,eAMnB,YAAAwvC,oBAAA,WACE1+M,KAAKmpD,WAMP,YAAAo1J,4BAAA,WACMv+M,KAAKq+M,oBACP,QAAcr+M,KAAKq+M,kBACnBr+M,KAAKq+M,iBAAmB,MAE1B,IAAM1iN,EAASqE,KAAK+yK,YAChBp3K,IACFqE,KAAKq+M,kBAAmB,QACtB1iN,EACA,WACAqE,KAAK0+M,oBACL1+M,OAGJA,KAAKmpD,WAQP,YAAAwzJ,YAAA,SAAY95I,GACV,OAAK7iE,KAAK+8K,UAGH/8K,KAAK+8K,UAAU4/B,YAAY95I,GAFzB,IAAI/oD,SAAQ,SAAC1P,GAAY,OAAAA,EAAQ,QAS5C,YAAA6xM,QAAA,SAAQp5I,GACN,OAAK7iE,KAAK+8K,WAAc/8K,KAAKs+M,SAGtBt+M,KAAK+8K,UAAUk/B,QAAQp5I,GAFrB,MAaX,YAAAyN,OAAA,SAAO6gG,EAAYnjK,GACjB,IAAM6kK,EAAgB7yK,KAAK8yK,cAE3B,GAAID,EAAc8rC,aAAaxtC,GAE7B,OADAnxK,KAAKs+M,UAAW,EACTzrC,EAAcQ,YAAYlC,EAAYnjK,IAOjD,YAAAumK,SAAA,WACEv0K,KAAKs+M,UAAW,GAOlB,YAAA/jC,eAAA,SAAerxK,GACRA,GACHlJ,KAAKu0K,WAEPv0K,KAAKwrC,IAAI,QAAmBtiC,IAO9B,YAAA01M,eAAA,WACE,OAAO5+M,KAAKka,IAAI,UAelB,YAAA0jK,OAAA,SAAO10K,GACDlJ,KAAKm+M,qBACP,QAAcn+M,KAAKm+M,mBACnBn+M,KAAKm+M,kBAAoB,MAEtBj1M,GACHlJ,KAAKmpD,UAEHnpD,KAAKo+M,iBACP,QAAcp+M,KAAKo+M,eACnBp+M,KAAKo+M,cAAgB,MAEnBl1M,IACFlJ,KAAKm+M,mBAAoB,QACvBj1M,EACA,gBACA,SAAUiC,GACR,IAEMqnK,EADgD,EACjBrB,WAAWqB,iBAC1CG,EAAa3yK,KAAK26M,eAAc,IAEtC,QACGnoC,EAAiB5zK,MAAK,SAAUigN,GAC/B,OAAOA,EAAgBr3L,QAAUmrJ,EAAWnrJ,SAE9C,IAEFgrJ,EAAiBpuK,KAAKuuK,KAExB3yK,MAEFA,KAAKo+M,eAAgB,QAAOp+M,KAAM,WAAkBkJ,EAAIonE,OAAQpnE,GAChElJ,KAAKmpD,YAUT,YAAAq1J,UAAA,SAAU7iN,GACRqE,KAAKwrC,IAAI,WAAsB7vC,IAOjC,YAAAm3K,YAAA,WAIE,OAHK9yK,KAAK+8K,YACR/8K,KAAK+8K,UAAY/8K,KAAK+9K,kBAEjB/9K,KAAK+8K,WAMd,YAAAnK,YAAA,WACE,QAAS5yK,KAAK+8K,WAQhB,YAAAgB,eAAA,WACE,OAAO,MAMT,YAAA5Q,gBAAA,WACMntK,KAAK+8K,YACP/8K,KAAK+8K,UAAU7P,iBACRltK,KAAK+8K,WAGd/8K,KAAKw+M,UAAU,MACf,YAAMrxC,gBAAe,YAEzB,EAvTA,CAAoB,mDC3FpB,SACE2xC,QAAS,UACTC,QAAS,UACTC,OAAQ,SACRC,QAAS,SACTC,eAAgB,gBAChBC,eAAgB,gBAChBC,SAAU,UACVC,SAAU,UACVC,OAAQ,SACRC,IAAK,khBCcP,QAbA,YAIE,WAAYxzC,UACV,YAAMA,IAAY,KAMtB,OAXwB,OAQtB,YAAAgS,eAAA,WACE,OAAO,IAAI,IAAwB/9K,OAEvC,EAXA,CAAwB,mDCXxB,SACEw/M,QAAS,UACTC,2BAA4B,6pBC4vB9B,QAptBA,YAIE,WAAYC,GAAZ,MACE,YAAMA,IAAY,YAGlB,EAAKC,6BAA+B,EAAKC,wBAAwB3oM,KAAK,GAKtE,EAAK4oM,wBAML,EAAKC,QAAS,EAKd,EAAKC,uBAAyB,KAK9B,EAAKC,kBAAoB,KAMzB,EAAKC,mBAAqB,EAM1B,EAAKC,oBAAsBloK,IAM3B,EAAKmoK,iBAAkB,UAMvB,EAAKC,wBAAyB,UAM9B,EAAKC,kBAML,EAAKC,gBAAkB,KAMvB,EAAKC,oBAAsB,KAM3B,EAAKC,qBAAuB,KAM5B,EAAKC,aAAe,KAMpB,EAAKC,oBAAqB,EAK1B,EAAKC,uBAAyB,KAM9B,EAAKC,UAAW,IA8mBpB,OAltBwC,OA4GtC,YAAAC,aAAA,SAAaC,EAAe3vC,EAAY4vC,GACtC,IAAMryC,EAASyC,EAAWzC,OACpB6C,EAAYJ,EAAWI,UACvBlxH,EAASkxH,EAAUlxH,OACnBsuH,EAAa4C,EAAU5C,WACvBuD,EAAaX,EAAUW,WACvBtuH,EAAW2tH,EAAU3tH,SACrByuH,EAAmBH,EAAWpD,YAC9BkyC,EAAehhN,KAAKihN,WAAWluC,YAC/Bj3D,EAAaq1D,EAAWr1D,WACxBwlE,EAAYnQ,EAAWmQ,UACvB4/B,IACJ5/B,EAAUC,EAAA,cAAuBD,EAAUC,EAAA,gBAEvCxhL,EAAUC,KAAKD,QACfnE,EAAQqR,KAAKgsD,MAAMk4G,EAAW18I,KAAK,GAAKqnF,GACxCjgH,EAASoR,KAAKgsD,MAAMk4G,EAAW18I,KAAK,GAAKqnF,GAEzCk4E,EAAagtB,EAAahuC,YAAcd,EAAWE,WACnDE,EAAa0hB,GAAa,QAAS3hB,GAAoB,KACvD8uC,EAAWntB,EACb/mL,KAAK+rD,MAAM01G,EAAO,GAAK2D,EAAiB,IAAMC,GAAc,EAC5D,EACA8uC,EAAQptB,EACR/mL,KAAKwjB,OAAOi+I,EAAO,GAAK2D,EAAiB,IAAMC,GAC/C,EACJ,EAAG,CACD,IAAMhzB,EAAYt/I,KAAKqhN,mBACrBhhK,EACAsuH,EACA/qH,EACAk4D,EACAlgH,EACAC,EACAulN,EAAQ9uC,GAEVwuC,EAAcQ,QACZvhN,EACA,EACAu/I,EACA17F,EACAs9J,OACAjjN,EACA8iN,WAEOK,EAAQD,IAOrB,YAAA3sC,gBAAA,SAAgBrD,GACVnxK,KAAK2gN,wBACP3gN,KAAK6gN,aACH7gN,KAAK2gN,uBACLxvC,EACAA,EAAWyR,gBAWjB,YAAAvP,YAAA,SAAYlC,EAAYnjK,GACtB,IAAM8tG,EAAaq1D,EAAWr1D,WACxB62D,EAAaxB,EAAWqB,iBAAiBrB,EAAWiD,aAG1D,QAAUp0K,KAAKuhN,eAAgB,EAAIzlG,EAAY,EAAIA,IACnD,QAAY97G,KAAKwhN,sBAAuBxhN,KAAKuhN,gBAE7C,IAAME,GAAkB,EAAAniE,EAAA,IAAkBt/I,KAAKuhN,gBAE/CvhN,KAAK0hN,aACH1zM,EACAyzM,EACA9uC,EAAWpoF,QACXvqF,KAAKy6M,cAActpC,IAErB,IAAMpxK,EAAUC,KAAKD,QACf0zD,EAAS1zD,EAAQ0zD,OAEjBkuJ,EAAc3hN,KAAKygN,aACnBE,EAAyB3gN,KAAK2gN,uBACpC,KACIgB,GAAeA,EAAY9oC,cAC3B8nC,GAA0BA,EAAuB9nC,WAEnD,OAAO,KAIT,IAAMj9K,EAAQqR,KAAKgsD,MAAMk4G,EAAW18I,KAAK,GAAKqnF,GACxCjgH,EAASoR,KAAKgsD,MAAMk4G,EAAW18I,KAAK,GAAKqnF,GAC3CroD,EAAO73D,OAASA,GAAS63D,EAAO53D,QAAUA,GAC5C43D,EAAO73D,MAAQA,EACf63D,EAAO53D,OAASA,EACZ43D,EAAO/L,MAAM43F,YAAcmiE,IAC7BhuJ,EAAO/L,MAAM43F,UAAYmiE,IAEjBzhN,KAAK4hN,iBACf7hN,EAAQ0xG,UAAU,EAAG,EAAG71G,EAAOC,GAGjCmE,KAAK6hN,UAAU9hN,EAASoxK,GAExB,IAAMI,EAAYJ,EAAWI,UACvBW,EAAaX,EAAUW,WAGzBntD,GAAU,EACVz0C,GAAS,EACb,GAAIqiG,EAAWjE,QAAU1uK,KAAK4gN,SAAU,CACtC,IAAMkB,GAAc,QAAenvC,EAAWjE,OAAQwD,IAEtDntD,GADAz0C,GAAS,QAAiBwxI,EAAa3wC,EAAWzC,YAC7B,QAAeozC,EAAa3wC,EAAWzC,UAE1D1uK,KAAK+hN,cAAchiN,EAASoxK,EAAY2wC,GAIxCxxI,GACFtwE,KAAK6gN,aAAac,EAAaxwC,GAG7BpsD,GACFhlH,EAAQ+lE,UAGV9lE,KAAKgiN,WAAWjiN,EAASoxK,GAEzB,IAAM5mF,GAAU,EAAAs1C,EAAA,IAAW8yC,EAAWpoF,SAChCt0B,EAAYj2D,KAAKi2D,UASvB,OARIs0B,IAAYt0B,EAAUvO,MAAM6iC,UAC9Bt0B,EAAUvO,MAAM6iC,QAAUA,GAGxBvqF,KAAKqgN,oBAAsB9uC,EAAU3tH,WACvC5jD,KAAKqgN,kBAAoB9uC,EAAU3tH,SACnC5jD,KAAK+/M,uBAAyB,MAEzB//M,KAAKi2D,WAQd,YAAA0mJ,YAAA,SAAY95I,GACV,OAAO,IAAI/oD,QAKT,SAAU1P,GACR,IAAKpK,KAAK+/M,yBAA2B//M,KAAK6/M,wBAAyB,CACjE,IAAMprL,EAAO,CAACz0B,KAAKD,QAAQ0zD,OAAO73D,MAAOoE,KAAKD,QAAQ0zD,OAAO53D,SAC7D,QAAMmE,KAAKuhN,eAAgB9sL,GAC3B,IAAM4rB,EAASrgD,KAAKsgN,gBACd3xC,EAAa3uK,KAAKkgN,oBAClBt8J,EAAW5jD,KAAKqgN,kBAChBnuC,EAAalyK,KAAKugN,oBAClB7xC,EAAS1uK,KAAKogN,uBACd54L,EAAQxnB,KAAKihN,WACbgB,EAAa,GACbrmN,EAAQ64B,EAAK,GAAK,KAClB54B,EAAS44B,EAAK,GAAK,KACzBwtL,EAAW79M,KACTpE,KAAKqhN,mBACHhhK,EACAsuH,EACA/qH,EACA,KACAhoD,EACAC,EACA,GACAsG,SAEJ,IAAMxG,EAAS6rB,EAAMurJ,YACfV,EAAmBH,EAAWpD,YACpC,GACEnzK,EAAOq3K,YACPd,EAAWE,cACV,QAAeC,EAAkB3D,GAClC,CAKA,IAJA,IAAI7pH,EAAS6pH,EAAO,GACd4D,GAAa,QAASD,GACxB+uC,EAAQ,EACR59J,OAAO,EACJqB,EAASwtH,EAAiB,IAE/B7uH,EAAU8uH,IADR8uC,EAEFa,EAAW79M,KACTpE,KAAKqhN,mBACHhhK,EACAsuH,EACA/qH,EACA,KACAhoD,EACAC,EACA2nD,GACArhD,SAEJ0iD,GAAUytH,EAIZ,IAFA8uC,EAAQ,EACRv8J,EAAS6pH,EAAO,GACT7pH,EAASwtH,EAAiB,IAE/B7uH,EAAU8uH,IADR8uC,EAEFa,EAAW79M,KACTpE,KAAKqhN,mBACHhhK,EACAsuH,EACA/qH,EACA,KACAhoD,EACAC,EACA2nD,GACArhD,SAEJ0iD,GAAUytH,EAIdtyK,KAAK+/M,wBAAyB,QAC5BtrL,EACAwtL,EACAjiN,KAAKggN,kBACLx4L,EAAM6mJ,mBACNK,EACAC,EACA/qH,GAGJx5C,GACE,QAAUy4D,EAAO7iE,KAAKggN,kBAAmBhgN,KAAK+/M,0BAEhD9oM,KAAKjX,QAaX,YAAA0xK,2BAAA,SACEC,EACAR,EACAS,EACAp2J,EACA4d,GALF,WAOE,GAAKp5B,KAAKygN,aAAV,CAGA,IA0CIt5M,EA1CEwnK,EAAawC,EAAWI,UAAU5C,WAClC/qH,EAAWutH,EAAWI,UAAU3tH,SAChCp8B,EAAQxnB,KAAKihN,WAGbniC,EAAW,GAQXojC,EAAkB,SAAUjwC,EAAStrD,EAAUssD,GACnD,IAAMpvK,GAAM,QAAOouK,GACblwK,EAAQ+8K,EAASj7K,GACvB,GAAK9B,GAcE,IAAc,IAAVA,GAAkBkxK,EAAalxK,EAAMkxK,WAAY,CAC1D,GAAmB,IAAfA,EAGF,OAFA6L,EAASj7K,IAAO,EAChBu1B,EAAQ90B,OAAO80B,EAAQ02D,YAAY/tF,GAAQ,GACpCyZ,EAASy2J,EAASzqJ,EAAOm/F,GAElC5kH,EAAM4kH,SAAWA,EACjB5kH,EAAMkxK,WAAaA,OArBT,CACV,GAAmB,IAAfA,EAEF,OADA6L,EAASj7K,IAAO,EACT2X,EAASy2J,EAASzqJ,EAAOm/F,GAElCvtF,EAAQh1B,KACL06K,EAASj7K,GAAO,CACfouK,QAASA,EACTzqJ,MAAOA,EACPm/F,SAAUA,EACVssD,WAAYA,EACZz3J,SAAUA,MAgBZ2mM,EAAiB,CAACniN,KAAKygN,cAkB7B,OAjBIzgN,KAAK2gN,wBACPwB,EAAe/9M,KAAKpE,KAAK2gN,wBAE3BwB,EAAevjN,MAAK,SAACkiN,GACnB,OAAQ35M,EAAS25M,EAAcpvC,2BAC7BC,EACAhD,EACA/qH,EACAguH,EACAswC,EACApB,IAAkB,EAAKH,wBACrBxvC,EAAWyR,cACTzR,EAAWyR,cAAcxtK,MAAMlM,KAAI,SAAC4F,GAAS,OAAAA,EAAK3S,SAClD,SAIDgL,IAMT,YAAAi7K,mBAAA,WACE,IAAM56J,EAAQxnB,KAAKihN,WACfz5L,EAAMuzL,cAAgB/6M,KAAKygN,cAC7Bj5L,EAAM2hC,WASV,YAAAy2J,wBAAA,SAAwB1iN,GACtB8C,KAAKoiN,2BAQP,YAAAzD,aAAA,SAAaxtC,GACX,IAAMuuC,EAAc1/M,KAAKihN,WACnBD,EAAetB,EAAY3sC,YACjC,IAAKiuC,EACH,OAAO,EAGT,IAAMqB,EAAYlxC,EAAWmQ,UAAUC,EAAA,aACjC+gC,EAAcnxC,EAAWmQ,UAAUC,EAAA,eACnC46B,EAAuBuD,EAAY5C,0BACnCV,EAAyBsD,EAAY3C,4BAE3C,IACI/8M,KAAK8/M,SAAW3D,GAAwBkG,IACxCjG,GAA0BkG,EAG5B,OADAtiN,KAAK6/M,yBAA0B,GACxB,EAET7/M,KAAK6/M,yBAA0B,EAE/B,IAAM0C,EAAmBpxC,EAAWzC,OAC9B6C,EAAYJ,EAAWI,UACvBW,EAAaX,EAAUW,WACvBvD,EAAa4C,EAAU5C,WACvB7yD,EAAaq1D,EAAWr1D,WACxB0mG,EAAsB9C,EAAYlxB,cAClCi0B,EAA0B/C,EAAY9C,kBACxC8F,EAAyBhD,EAAY7C,sBAEV5+M,IAA3BykN,IACFA,EAAyB,MAG3B,IAAMriK,EAASkxH,EAAUlxH,OAAOl+C,QAC1BusK,GAAS,QACb6zC,EACAE,EAA0B9zC,GAEtBg0C,EAAiBj0C,EAAOvsK,QACxBygN,EAAc,CAACl0C,EAAOvsK,SACtBkwK,EAAmBH,EAAWpD,YAEpC,GACEkyC,EAAahuC,YACbd,EAAWE,cACV,QAAeC,EAAkBlB,EAAWzC,QAC7C,CAMA,IAAM4D,GAAa,QAASD,GACtBwwC,EAAS51M,KAAK6mB,KAAI,QAAS46I,GAAU,EAAG4D,GAC9C5D,EAAO,GAAK2D,EAAiB,GAAKwwC,EAClCn0C,EAAO,GAAK2D,EAAiB,GAAKwwC,GAClC,QAAgBxiK,EAAQ6xH,GACxB,IAAM4wC,GAAa,QAAYF,EAAY,GAAI1wC,GAG7C4wC,EAAW,GAAKzwC,EAAiB,IACjCywC,EAAW,GAAKzwC,EAAiB,GAEjCuwC,EAAYx+M,KAAK,CACf0+M,EAAW,GAAKxwC,EAChBwwC,EAAW,GACXA,EAAW,GAAKxwC,EAChBwwC,EAAW,KAGbA,EAAW,GAAKzwC,EAAiB,IACjCywC,EAAW,GAAKzwC,EAAiB,IAEjCuwC,EAAYx+M,KAAK,CACf0+M,EAAW,GAAKxwC,EAChBwwC,EAAW,GACXA,EAAW,GAAKxwC,EAChBwwC,EAAW,KAKjB,IACG9iN,KAAK8/M,QACN9/M,KAAKkgN,qBAAuBvxC,GAC5B3uK,KAAKigN,mBAAqBuC,GAC1BxiN,KAAKwgN,sBAAwBkC,IAC7B,QAAe1iN,KAAKogN,uBAAwB1xC,GAQ5C,OANK,QAAO1uK,KAAKmgN,gBAAiBwC,KAChC3iN,KAAK+/M,uBAAyB,KAC9B//M,KAAKmgN,gBAAkBwC,GAEzB3iN,KAAKsgN,gBAAkBjgK,EACvBrgD,KAAK0gN,oBAAqB,GACnB,EAGT1gN,KAAKygN,aAAe,KAEpBzgN,KAAK8/M,QAAS,EAEd,IAOIiD,EAPEpB,EAAc,IAAI,KACtB,QAAmBhzC,EAAY7yD,GAC/B4yD,EACAC,EACA7yD,GAIE97G,KAAKihN,WAAWvE,iBAClBqG,EAAwB,IAAI,KAC1B,QAAmBp0C,EAAY7yD,GAC/B4yD,EACAC,EACA7yD,IAIJ,IACIknG,EADE3pB,GAAiB,UAEvB,GAAIA,EAAgB,CAClB,IAAK,IAAI/5L,EAAI,EAAG8sK,EAAKw2C,EAAYpkN,OAAQc,EAAI8sK,IAAM9sK,EAAG,CACpD,IAAM,EAASsjN,EAAYtjN,GACrB,GAAa,QAAa,EAAQ4yK,GACxC8uC,EAAaiC,aACX,GACA,QAAiBt0C,EAAYuD,GAC7BmnB,GAGJ2pB,GAAgB,QAA4B3pB,EAAgBnnB,QAE5D,IAAS5yK,EAAI,EAAG8sK,EAAKw2C,EAAYpkN,OAAQc,EAAI8sK,IAAM9sK,EACjD0hN,EAAaiC,aAAaL,EAAYtjN,GAAIqvK,EAAYuD,GAI1D,IAAMi5B,GAAmB,QAA0Bx8B,EAAY7yD,GAEzDxrC,EAKJ,SAAU2hG,GACR,IAAI33D,EACEk0F,EACJv8B,EAAQ5D,oBAAsBqxC,EAAYrxC,mBAI5C,GAHImgC,IACFl0F,EAASk0F,EAAcv8B,EAAStD,IAE9Br0D,EAAQ,CACV,IAAMqO,EAAQ3oH,KAAKkjN,cACjBjxC,EACAk5B,EACA7wF,EACAqnG,EACAqB,EACAD,GAEF/iN,KAAK8/M,OAAS9/M,KAAK8/M,QAAUn3F,IAE/B1xG,KAAKjX,MAEHmjN,GAAa,QAAaz0C,EAAQwD,GAElC4M,EAAWkiC,EAAaoC,oBAAoBD,GAIlD,IAHIT,GACF5jC,EAAS35I,KAAKu9K,GAEPpjN,EAAI,EAAG8sK,EAAK0S,EAAStgL,OAAQc,EAAI8sK,IAAM9sK,EAC9CgxE,EAAOwuG,EAASx/K,IAElBU,KAAKggN,kBAAoBlhC,EAEzB,IAAMukC,EAA0B1B,EAAYhzL,SACtCmyL,EAAgB,IAAIwC,EAAA,EACxB50C,EACAC,EACA7yD,EACAklG,EAAauC,cACbF,EACA3D,EAAY9C,mBAyBd,OAtBImG,IACF/iN,KAAK2gN,uBAAyB,IAAI2C,EAAA,EAChC50C,EACAC,EACA7yD,EACAklG,EAAauC,cACbR,EAAsBp0L,SACtB+wL,EAAY9C,oBAIhB58M,KAAKkgN,oBAAsBvxC,EAC3B3uK,KAAKigN,kBAAoBuC,EACzBxiN,KAAKwgN,qBAAuBkC,EAC5B1iN,KAAKmgN,gBAAkBwC,EACvB3iN,KAAKogN,uBAAyB1xC,EAC9B1uK,KAAKsgN,gBAAkBjgK,EACvBrgD,KAAKugN,oBAAsBruC,EAC3BlyK,KAAKygN,aAAeK,EACpB9gN,KAAK+/M,uBAAyB,KAE9B//M,KAAK0gN,oBAAqB,GACnB,GAYT,YAAAwC,cAAA,SACEjxC,EACAk5B,EACA7wF,EACAkpG,EACAtU,EACAuU,GAEA,IAAKnpG,EACH,OAAO,EAET,IAAIqiD,GAAU,EACd,GAAIr8J,MAAMiF,QAAQ+0G,GAChB,IAAK,IAAIh7G,EAAI,EAAG8sK,EAAK9xD,EAAO97G,OAAQc,EAAI8sK,IAAM9sK,EAC5Cq9J,GACE,QACE6mD,EACAvxC,EACA33D,EAAOh7G,GACP6rM,EACAnrM,KAAK2/M,6BACLzQ,EACAuU,IACG9mD,OAGTA,GAAU,QACR6mD,EACAvxC,EACA33D,EACA6wF,EACAnrM,KAAK2/M,6BACLzQ,EACAuU,GAGJ,OAAO9mD,GAEX,EAltBA,CAAwC,meCfxC,QAbA,YAIE,WAAYoP,UACV,YAAMA,IAAY,KAMtB,OAX0B,OAQxB,YAAAgS,eAAA,WACE,OAAO,IAAI,EAA0B/9K,OAEzC,EAXA,CAA0B0jN,EAAA,iHCZ1B,QAeU,SAfV,EAuBU,kiBCYJC,EAAgB,CACpB,MAAS,CACP,YACA,WACA,gBACA,UACA,UAEF,OAAU,CAAC,YAAoB,iBAC/B,OAAU,IAMNC,EAAiB,CACrB,OAAU,CAAC,UAAkB,SAAiB,aAC9C,OAAU,CACR,YACA,WACA,gBACA,UACA,SACA,cAUJ,cAIE,WAAYp8L,GAAZ,MACE,YAAMA,IAAM,YAGZ,EAAKm4L,6BAA+B,EAAKC,wBAAwB3oM,KAAK,GAMtE,EAAK6oM,QAAS,EAMd,EAAK+D,uBAML,EAAKC,oCAAsC,KAM3C,EAAKzD,kBAML,EAAK0D,eAAgB,YA8uBzB,OApxB4C,OA+C1C,YAAAC,YAAA,SAAYlqC,EAAMh+D,EAAYo2D,GAC5B,IAAI5hG,EACEpoC,EAAQ4xI,EAAK5K,WAOnB,OANIhnI,IAAU6xI,EAAA,UAAoB7xI,IAAU6xI,EAAA,UAC1C/5K,KAAKikN,qBAAqBnqC,EAAMh+D,EAAYo2D,GACxClyK,KAAKkkN,sBAAsBpqC,KAC7BxpG,GAAS,IAGNA,GAUT,YAAA6zI,QAAA,SAAQryJ,EAAGxd,EAAGC,EAAG48H,GACf,IAAMr1D,EAAaq1D,EAAWr1D,WACxBy1D,EAAYJ,EAAWI,UACvB5C,EAAa4C,EAAU5C,WACvBuD,EAAaX,EAAUW,WACvB1qJ,EAAQxnB,KAAKihN,WACbnnC,EAAOtyJ,EAAMurJ,YAAYoxC,QAAQryJ,EAAGxd,EAAGC,EAAGunE,EAAYo2D,GACtDoP,EAAYnQ,EAAWmQ,UACvB8iC,IACJ9iC,EAAUC,EAAA,cAAuBD,EAAUC,EAAA,gBAa7C,OAXI6iC,GAAStqC,EAAKuqC,mBAChBvqC,EAAKuqC,iBAAmB11C,GAEX3uK,KAAKgkN,YAAYlqC,EAAMh+D,EAAYo2D,KAG/CkyC,GAAQ10M,KAAK4F,MAAQ67J,EAAWpsJ,KAAO,IACxCyC,EAAM88L,kBAAoBC,GAE1BvkN,KAAKwkN,iBAAiB1qC,EAAM3I,GAEvB,YAAMgzC,QAAO,UAACryJ,EAAGxd,EAAGC,EAAG48H,IAOhC,YAAAszC,eAAA,SAAe3qC,GACb,IAAMtyJ,EAAQxnB,KAAKihN,WACnB,OACE,YAAMwD,eAAc,UAAC3qC,KACpBtyJ,EAAM88L,kBAAoBC,GACvB,QAAO/8L,KAAUsyJ,EAAKqoC,eACtBroC,EAAK4qC,WAAWl9L,KAOxB,YAAAm9L,aAAA,SAAa7qC,GACX,OAAOA,EAAK/K,SAAS/uK,KAAKihN,aAQ5B,YAAAtC,aAAA,SAAaxtC,GACX,IAAMyzC,EAAgB5kN,KAAKihN,WAAWzyB,cAKtC,OAJIxuL,KAAK6jN,wBAA0Be,IACjC5kN,KAAK6kN,cAAcrmN,OAAS,GAE9BwB,KAAK6jN,uBAAyBe,EACvB,YAAMjG,aAAY,UAACxtC,IAS5B,YAAA8yC,qBAAA,SAAqBnqC,EAAMh+D,EAAYo2D,GACrC,IAAM1qJ,EACJxnB,KAAKihN,WAEDlN,EAAWvsL,EAAMgnK,cACjByuB,EAAcz1L,EAAMq1L,kBAAoB,KAExCluC,EAAamL,EAAKuqC,iBAClBS,EAAehrC,EAAKirC,eAAev9L,GACzC,GACGs9L,EAAan8F,OACdm8F,EAAaE,qBAAuBr2C,GACpCm2C,EAAaG,kBAAoBlR,GACjC+Q,EAAaI,qBAAuBjI,EAJtC,CASA,IAAMthN,EAAS6rB,EAAMurJ,YACfupC,EAAY90L,EAAMk1L,eAClByI,EAAiBxpN,EAAOypN,cAExBC,EADW1pN,EAAO2pN,yBAAyBpzC,GACrBqzC,mBAAmBzrC,EAAK0rC,kBAE9CC,EAAc9pN,EAAO+pN,eAAe5pG,EAAYo2D,EAAY4H,GAC5D6rC,GAAW,QAAOn+L,UACjBsyJ,EAAK8rC,sBAAsBD,GAClC7rC,EAAKqoC,eAAewD,GAAY,GAC5BrJ,IACFxiC,EAAK+rC,wBAAwBF,GAAY,IAE3C,mBAASxsK,EAAO85G,GACd,IAAM6yD,EAAaL,EAAYtsK,GAC/B,GAAI2sK,EAAW52C,YAAc6K,EAAA,0BAG7B,IAAMgsC,EAAkBD,EAAWl1C,UAC7Bo1C,EACJb,EAAeI,mBAAmBQ,GAC9BE,GAAe,QAAgBZ,EAAYW,GAC3CE,GAAgB,QACpBD,EACAz+L,EAAMo1L,kBAAoBjuC,EAC1B,EAAKw3C,WAEDC,GAAiB,QAAOJ,EAAkBC,GAC5C,KACAC,EACJpB,EAAan8F,OAAQ,EACrB,IAAM66F,EAAe,IAAI,IACvB,EACA0C,EACAv3C,EACA7yD,GAEIinG,EAAwBzG,EAC1B,IAAI,IAAmB,EAAG2J,EAAct3C,EAAY7yD,QACpD79G,EACEktM,GAAmB,QACvBx8B,EACA7yD,GAOIxrC,EAAS,SAAU2hG,GACvB,IAAI33D,EACEk0F,EACJv8B,EAAQ5D,oBAAsB7mJ,EAAM6mJ,mBAItC,GAHImgC,IACFl0F,EAASk0F,EAAcv8B,EAAStD,IAE9Br0D,EAAQ,CACV,IAAMqO,EAAQ3oH,KAAKkjN,cACjBjxC,EACAk5B,EACA7wF,EACAkpG,EACAT,GAEF/iN,KAAK8/M,OAAS9/M,KAAK8/M,QAAUn3F,EAC7Bm8F,EAAan8F,MAAQm8F,EAAan8F,OAASA,IAIzCm2D,EAAWgnC,EAAWnJ,cACxBM,GAAeA,IAAgB6H,EAAaI,qBAC9CpmC,EAAS35I,KAAK83K,GAEhB,IAAK,IAAI39M,EAAI,EAAG8sK,EAAK0S,EAAStgL,OAAQc,EAAI8sK,IAAM9sK,EAAG,CACjD,IAAM2yK,EAAU6M,EAASx/K,GAEtB8mN,KACD,QAAWA,EAAgBn0C,EAAQ9D,cAAcW,cAEjDx+F,EAAO3vE,KAAK,EAAMsxK,GAGtB,IAAMo0C,EAA4B7C,EAAa70L,SAEzC23L,EACJ9+L,EAAM88L,kBAAoBC,GAC1BjI,GACuB,IAAvBmJ,EAAYjnN,OACR,KACAynN,EACAM,EAAuB,IAAI,IAC/BD,EACA33C,EACA7yD,EACAngH,EAAO4nN,cACP8C,EACA7+L,EAAMo1L,mBAGR,GADA9iC,EAAKqoC,eAAewD,GAAUvhN,KAAKmiN,GAC/BxD,EAAuB,CACzB,IAAMpC,EAAyB,IAAI,IACjC,KACAhyC,EACA7yD,EACAngH,EAAO4nN,cACPR,EAAsBp0L,SACtBnH,EAAMo1L,mBAER9iC,EAAK+rC,wBAAwBF,GAAUvhN,KAAKu8M,YA/FvCxnK,EAAI,EAAG85G,EAAKwyD,EAAYjnN,OAAQ26C,EAAI85G,IAAM95G,IAA1CA,GAkGT2rK,EAAaG,iBAAmBlR,EAChC+Q,EAAaI,oBAAsBjI,EACnC6H,EAAaE,mBAAqBr2C,IAYpC,YAAA+C,2BAAA,SACEC,EACAR,EACAS,EACAp2J,EACA4d,GAEA,IAAMu1I,EAAawC,EAAWI,UAAU5C,WAClC/qH,EAAWutH,EAAWI,UAAU3tH,SACtCguH,EAA+B3zK,MAAhB2zK,EAA4B,EAAIA,EAC/C,IAAMpqJ,EAAQxnB,KAAKihN,WAEbuF,EADSh/L,EAAMurJ,YACGuyC,yBACtBn0C,EAAWI,UAAUW,YAGjBu0C,GAAY,QAAe,CAAC90C,KAClC,QAAO80C,EAAW93C,EAAaiD,EAAc60C,GAiD7C,IA9CA,IA6CI9qB,EA7CE7c,EAAW,GAQXojC,EAAkB,SAAUjwC,EAAStrD,EAAUssD,GACnD,IAAIpvK,EAAMouK,EAAQ7D,aACNnwK,IAAR4F,IACFA,GAAM,QAAOouK,IAEf,IAAMlwK,EAAQ+8K,EAASj7K,GACvB,GAAK9B,GAcE,IAAc,IAAVA,GAAkBkxK,EAAalxK,EAAMkxK,WAAY,CAC1D,GAAmB,IAAfA,EAGF,OAFA6L,EAASj7K,IAAO,EAChBu1B,EAAQ90B,OAAO80B,EAAQ02D,YAAY/tF,GAAQ,GACpCyZ,EAASy2J,EAASzqJ,EAAOm/F,GAElC5kH,EAAM4kH,SAAWA,EACjB5kH,EAAMkxK,WAAaA,OArBT,CACV,GAAmB,IAAfA,EAEF,OADA6L,EAASj7K,IAAO,EACT2X,EAASy2J,EAASzqJ,EAAOm/F,GAElCvtF,EAAQh1B,KACL06K,EAASj7K,GAAO,CACfouK,QAASA,EACTzqJ,MAAOA,EACPm/F,SAAUA,EACVssD,WAAYA,EACZz3J,SAAUA,MAeZqpM,EAEF7kN,KAAkB,yBAIbV,EAAO8sK,GACd,IAAM0N,EAAO+qC,EAAcvlN,GACrB+lN,EAAamB,EAASjB,mBAAmBzrC,EAAK0rC,kBACpD,KAAK,QAAWH,EAAYoB,oBAI5B,IAAMd,GAAW,QAAOn+L,GAClB26L,EAAiB,CAACroC,EAAKqoC,eAAewD,IACtCE,EAA0B/rC,EAAK+rC,wBAAwBF,GACzDE,GACF1D,EAAe/9M,KAAKyhN,GAEtB1D,EAAevjN,MAAK,SAACujN,GAKnB,IAJA,IAAMuE,EACJvE,IAAmB0D,EACf10C,EAAWyR,cAAcxtK,MAAMlM,KAAI,SAAC4F,GAAS,OAAAA,EAAK3S,SAClD,KACGg9C,EAAI,EAAG85G,EAAKkvD,EAAe3jN,OAAQ26C,EAAI85G,IAAM95G,EAAG,CACvD,IAAM2nK,EAAgBqB,EAAehpK,GASrC,GARAwiJ,EAAQmlB,EAAcpvC,2BACpBC,EACAhD,EACA/qH,EACAguH,EACAswC,EACAwE,GAGA,OAAO,OA7BNpnN,EAAI,EAAG8sK,EAAKy4C,EAAcrmN,QAASm9L,GAASr8L,EAAI8sK,IAAM9sK,IAAtDA,GAkCT,OAAOq8L,GAQT,YAAAghB,YAAA,SAAY95I,GACV,OAAO,IAAI/oD,QACT,SAAU1P,EAASyK,GAoBjB,IAnBA,IAkBIilK,EAlBEtyJ,EAEFxnB,KAAKihN,WAEH0E,GAAW,QAAOn+L,GAClB7rB,EAAS6rB,EAAMurJ,YACfb,EAAalyK,KAAK2mN,mBAClBt0C,EAAmBH,EAAWpD,YAC9BH,EAAa3uK,KAAKglN,mBAClBwB,EAAW7qN,EAAO2pN,yBAAyBpzC,GAC3CP,GAAa,QACjB3xK,KAAK8jN,oCACLjhJ,EAAM1gE,SAEFyuK,EAAY41C,EAASI,kCACzBj1C,EACAhD,GAGOrvK,EAAI,EAAG8sK,EAAKpsK,KAAK6kN,cAAcrmN,OAAQc,EAAI8sK,IAAM9sK,EACxD,GACEsxK,EAAU9wK,aAAeE,KAAK6kN,cAAcvlN,GAAGsxK,UAAU9wK,WACzD,CAEA,IADAg6K,EAAO95K,KAAK6kN,cAAcvlN,IACjB4vK,aAAe6K,EAAA,SAAkB,CACxC,IAAM,EAASysC,EAASjB,mBAAmBzrC,EAAKlJ,WAE9Cj1K,EAAOq3K,YACPd,EAAWE,cACV,QAAeC,EAAkB,KAElC,QAAMV,EAAYO,GAEpB,MAEF4H,OAAO77K,EAGX,IAAK67K,GAAQA,EAAK+sC,mBAAqB,EACrCz8M,EAAQ,QADV,CAIA,IAAMskK,EAAS83C,EAASjB,mBAAmBzrC,EAAK0rC,kBAC1Crf,GAAS,QAAWz3B,GACpBo4C,EAAY,EACfn1C,EAAW,GAAKw0B,EAAO,IAAMx3B,GAC7Bw3B,EAAO,GAAKx0B,EAAW,IAAMhD,GAE1BmQ,EAAWhF,EACd4rC,iBACA3/M,QAAO,SAAUghN,EAAajB,GAC7B,OAAOiB,EAAYp7L,OAAOm6L,EAAWnJ,iBACpC,IACDiJ,EAAwB9rC,EAAK8rC,sBAAsBD,GACvD,IAAKC,IAA0B5lN,KAAK6/M,wBAAyB,CAC3D,IAAMmH,GAAW,QACfR,EAASS,YAAYT,EAASU,kBAAkBv4C,KAE5C/qH,EAAW5jD,KAAKqgN,kBAChB4B,EAAa,CACjBjiN,KAAKqhN,mBACHmF,EAASW,mBAAmBrtC,EAAK0rC,kBACjC72C,EACA,EACA,KACAq4C,EAAS,GAAK,KACdA,EAAS,GAAK,KACd,IAGJpB,GAAwB,QACtBoB,EACA/E,EACAnjC,EACAt3J,EAAM6mJ,mBACNm4C,EAASjB,mBAAmBzrC,EAAK0rC,kBACjC1rC,EAAKirC,eAAev9L,GAAOw9L,mBAC3BphK,GAEFk2H,EAAK8rC,sBAAsBD,GAAYC,EAEzCx7M,GAAQ,QAAU08M,EAAWhoC,EAAU8mC,MACvC3uM,KAAKjX,QAOX,YAAAoiL,mBAAA,WACE,IAAM56J,EAAQxnB,KAAKihN,WACfz5L,EAAMuzL,mBAAgD98M,IAAhC+B,KAAK6jN,wBAC7Br8L,EAAM2hC,WASV,YAAAy2J,wBAAA,SAAwB1iN,GACtB8C,KAAKoiN,2BAOP,YAAA5tC,gBAAA,SAAgBrD,GACd,IAAMpxK,EAAUC,KAAKD,QACf41E,EAAQ51E,EAAQ6uF,YACtB7uF,EAAQ6uF,YAAc5uF,KAAKihN,WAAWnG,aAStC,IARA,IAAMx5B,EAAYnQ,EAAWmQ,UACvB8iC,IACJ9iC,EAAUC,EAAA,cAAuBD,EAAUC,EAAA,gBAEvC6lC,EAEFpnN,KAAkB,cAEbV,EAAI,EAAG8sK,EAAKg7C,EAAM5oN,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC9C,IAAMw6K,EAAOstC,EAAM9nN,GACbumN,EACJ/rC,EAAK+rC,yBAAwB,QAAO7lN,KAAKihN,aAC3C,GAAI4E,EACF,IAAK,IAAI14J,EAAI04J,EAAwBrnN,OAAS,EAAG2uD,GAAK,IAAKA,EACzD04J,EAAwB14J,GAAGm0J,QACzBthN,KAAKD,QACL,EACAC,KAAKqnN,uBAAuBvtC,EAAM3I,GAClCA,EAAWI,UAAU3tH,SACrBwgK,OACAnmN,EACAkzK,EAAWyR,eAKnB7iL,EAAQ6uF,YAAcjZ,GAGxB,YAAA0xI,uBAAA,SAAuBvtC,EAAM3I,GAC3B,IAAMr1D,EAAaq1D,EAAWr1D,WACxBy1D,EAAYJ,EAAWI,UACvBlxH,EAASkxH,EAAUlxH,OACnBsuH,EAAa4C,EAAU5C,WACvB/qH,EAAW2tH,EAAU3tH,SACrBnvB,EAAO08I,EAAW18I,KAClB74B,EAAQqR,KAAKgsD,MAAMxkC,EAAK,GAAKqnF,GAC7BjgH,EAASoR,KAAKgsD,MAAMxkC,EAAK,GAAKqnF,GAG9B0qG,EADSxmN,KAAKihN,WAAWluC,YACPuyC,yBACtBn0C,EAAWI,UAAUW,YAEjBtB,EAAYkJ,EAAKlJ,UACjBy0C,EAAamB,EAASjB,mBAAmBzrC,EAAK0rC,kBAC9C8B,EACJd,EAASjB,mBAAmB30C,EAAW5wK,KAAKmmN,WAAW,GAAKd,EAAW,GAazE,OAZkB,SAChB,QAAMrlN,KAAKwhN,sBAAsBr/M,QAAS,EAAI25G,EAAY,EAAIA,GAC9D97G,KAAKqhN,mBACHhhK,EACAsuH,EACA/qH,EACAk4D,EACAlgH,EACAC,EACAyrN,KAYN,YAAAj0C,YAAA,SAAYlC,EAAYnjK,GACtB,IAAMszK,EAAYnQ,EAAWmQ,UACvB8iC,IACJ9iC,EAAUC,EAAA,cAAuBD,EAAUC,EAAA,gBAG7C,YAAMlO,YAAW,UAAClC,EAAYnjK,GAC9BhO,KAAK8jN,oCACH3yC,EAAWM,2BAA2BtvK,QACxCnC,KAAKqgN,kBAAoBlvC,EAAWI,UAAU3tH,SAE9C,IAAMp8B,EACJxnB,KAAKihN,WAEDsG,EAAa//L,EAAM88L,gBACnBvkN,EAAUC,KAAKD,QACf41E,EAAQ51E,EAAQ6uF,YACtB7uF,EAAQ6uF,YAAcpnE,EAAMszL,aAc5B,IAbA,IAAM0M,EAAc5D,EAAe2D,GAC7Bh2C,EAAYJ,EAAWI,UACvB3tH,EAAW2tH,EAAU3tH,SACrB6jK,EAAajgM,EAAMurJ,YAEnBjhH,EADW21J,EAAWnC,yBAAyB/zC,EAAUW,YAC5Cg1C,kBACjB31C,EAAU5C,WACV84C,EAAWC,YAGPN,EAAQpnN,KAAK6kN,cACb8C,EAAQ,GACRC,EAAS,GACNtoN,EAAI8nN,EAAM5oN,OAAS,EAAGc,GAAK,IAAKA,EAAG,CAC1C,IAAMw6K,EACJstC,EAAM9nN,GAEF6iN,EAAiBroC,EAAKqoC,gBAAe,QAAO36L,IAAQze,QACxD,SAAC42K,GAAU,OAAAA,EAAMkoC,aAAaL,MAEhC,GAA8B,IAA1BrF,EAAe3jN,OAAnB,CAQA,IALA,IAAM8gJ,EAAYt/I,KAAKqnN,uBAAuBvtC,EAAM3I,GAC9C22C,EAAWhuC,EAAKlJ,UAAU,GAC5Bm3C,GAAe,EAEbC,EAAc7F,EAAe,GAAG8F,cAAc3oE,GAC3CnyF,EAAI,EAAG8pI,EAAK0wB,EAAMnpN,OAAQ2uD,EAAI8pI,IAAM9pI,EAC3C,GAAI2E,IAAMg2J,GAAYA,EAAWF,EAAOz6J,GAAI,CAC1C,IAAMzT,EAAOiuK,EAAMx6J,IAEjB,QACE,CAAC66J,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,IAC7D,CAACtuK,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,OAG9BquK,IACHhoN,EAAQ6lE,OACRmiJ,GAAe,GAEjBhoN,EAAQumE,YAERvmE,EAAQwmE,OAAOyhJ,EAAY,GAAIA,EAAY,IAC3CjoN,EAAQymE,OAAOwhJ,EAAY,GAAIA,EAAY,IAC3CjoN,EAAQymE,OAAOwhJ,EAAY,GAAIA,EAAY,IAC3CjoN,EAAQymE,OAAOwhJ,EAAY,GAAIA,EAAY,IAE3CjoN,EAAQwmE,OAAO7sB,EAAK,GAAIA,EAAK,IAC7B35C,EAAQymE,OAAO9sB,EAAK,GAAIA,EAAK,IAC7B35C,EAAQymE,OAAO9sB,EAAK,GAAIA,EAAK,IAC7B35C,EAAQymE,OAAO9sB,EAAK,GAAIA,EAAK,IAC7B35C,EAAQ25C,QAIdiuK,EAAMvjN,KAAK4jN,GACXJ,EAAOxjN,KAAK0jN,GACZ,IAAK,IAAI3uK,EAAI,EAAG85G,EAAKkvD,EAAe3jN,OAAQ26C,EAAI85G,IAAM95G,EAC9BgpK,EAAehpK,GACvBmoK,QACZvhN,EACA,EACAu/I,EACA17F,EACAwgK,EACAoD,GAGAO,GACFhoN,EAAQ+lE,WAKZ,OAFA/lE,EAAQ6uF,YAAcjZ,EAEf31E,KAAKi2D,WAWd,YAAAitJ,cAAA,SACEjxC,EACAk5B,EACA7wF,EACAkpG,EACAC,GAEA,IAAKnpG,EACH,OAAO,EAET,IAAIqiD,GAAU,EACd,GAAIr8J,MAAMiF,QAAQ+0G,GAChB,IAAK,IAAIh7G,EAAI,EAAG8sK,EAAK9xD,EAAO97G,OAAQc,EAAI8sK,IAAM9sK,EAC5Cq9J,GACE,QACE6mD,EACAvxC,EACA33D,EAAOh7G,GACP6rM,EACAnrM,KAAK2/M,kCACL1hN,EACAwlN,IACG9mD,OAGTA,GAAU,QACR6mD,EACAvxC,EACA33D,EACA6wF,EACAnrM,KAAK2/M,kCACL1hN,EACAwlN,GAGJ,OAAO9mD,GAQT,YAAAunD,sBAAA,SAAsBpqC,GACpB,IAAMtyJ,EACJxnB,KAAKihN,WAEP,GAAIz5L,EAAM88L,kBAAoBC,EAC5B,OAAO,EAET,IAAM2D,EAAcpuC,EAAKirC,eAAev9L,GAClCusL,EAAWvsL,EAAMgnK,cACjB7f,EAAamL,EAAKuqC,iBACxB,OACE6D,EAAYC,yBAA2Bx5C,GACvCu5C,EAAYE,uBAAyBrU,GASzC,YAAAyQ,iBAAA,SAAiB1qC,EAAM3I,GACrB,IAAM3pJ,EACJxnB,KAAKihN,WAEDiH,EAAcpuC,EAAKirC,eAAev9L,GAClCusL,EAAWvsL,EAAMgnK,cACjB2zB,EAAiBroC,EAAKqoC,gBAAe,QAAO36L,IAClD0gM,EAAYE,qBAAuBrU,EAEnC,IAAMnjC,EAAYkJ,EAAK0rC,iBACjB1zJ,EAAI8+G,EAAU,GACdj1K,EAAS6rB,EAAMurJ,YACjBj3D,EAAaq1D,EAAWr1D,WAEtBo2D,EADYf,EAAWI,UACAW,WACvBs0C,EAAW7qN,EAAO2pN,yBAAyBpzC,GAC3CwO,EAAiB8lC,EAASv3C,cAAc6K,EAAKlJ,UAAU,IACvDy3C,EACHl3C,EAAWr1D,WAAag+D,EAAKuqC,iBAAoB3jC,EAC9C/R,EAAa63C,EAASv3C,cAAcn9G,GACpC/xD,EAAU+5K,EAAKjjI,WAAWrvB,GAGhCs0F,EAAa7uG,KAAKgsD,MAChBhsD,KAAK6mB,IAAIgoF,EAAYusG,EAAmBvsG,IAE1C,IAAMrnF,EAAO94B,EAAO2sN,iBAAiBx2J,EAAGgqD,EAAYo2D,GACpDnyK,EAAQ0zD,OAAO73D,MAAQ64B,EAAK,GAC5B10B,EAAQ0zD,OAAO53D,OAAS44B,EAAK,GAC7B,IAAM8zL,EAAczsG,EAAausG,EACjC,GAAoB,IAAhBE,EAAmB,CACrB,IAAM9G,GAAkB,QAAezhN,KAAK+jN,gBAC5C,QAAetC,EAAiB8G,EAAaA,GAC7CxoN,EAAQk8G,aAAah8G,MAAMF,EAAS0hN,GAEtC,IAAM4D,EAAamB,EAASjB,mBAAmB30C,EAAW5wK,KAAKmmN,WACzDqC,EAAaH,EAAmB15C,EAChCrvB,GAAY,QAAet/I,KAAK+jN,gBACtC,QAAezkE,EAAWkpE,GAAaA,IACvC,QAAmBlpE,GAAY+lE,EAAW,IAAKA,EAAW,IAC1D,IAAK,IAAI/lN,EAAI,EAAG8sK,EAAK+1C,EAAe3jN,OAAQc,EAAI8sK,IAAM9sK,EAC9B6iN,EAAe7iN,GACvBgiN,QACZvhN,EACAwoN,EACAjpE,EACA,GACA,EACAqkE,EAAcn8L,EAAM88L,kBAGxB4D,EAAYC,uBAAyBruC,EAAKuqC,kBAE9C,EApxBA,CAA4C,KAsxB5C,sgBCjnBA,QAjJA,YAIE,WAAYt4C,GAAZ,WACQtuK,EAAUsuK,GAA4B,GAEtC2vC,GAAqC,QAAO,GAAIj+M,UAC/Ci+M,EAAYC,eACZD,EAAYE,0BAEnB,YAC8F,IAG7F,MAKIr+E,GAKL,EAAKpsG,KAKL,EAAK66I,GF9GA,UEgHDvuK,EAAQ8pN,aAGVnuM,QAAQ8K,KAAK,sDACbzmB,EAAQ8pN,gBAAatpN,GAEvB,IAAMspN,EAAa9pN,EAAQ8pN,YAAchD,SACzC,OACEgD,GAAchD,GACZgD,GAAchD,EAChB,IAOF,EAAKkE,YAAclB,EAEnB,EAAK1L,WAAWp+M,EAAQk+M,QAAUl+M,EAAQk+M,QAAU,GACpD,EAAKG,+BACgC79M,IAAnCR,EAAQm+M,wBACJn+M,EAAQm+M,wBASd,EAAKnB,cAOL,EAAKS,gBAyET,OA/I8B,OAyE5B,YAAAn9B,eAAA,WACE,OAAO,IAAI,EAA8B/9K,OAiB3C,YAAA28M,YAAA,SAAY95I,GACV,OAAO,YAAM85I,YAAW,UAAC95I,IAM3B,YAAAyhJ,cAAA,WACE,OAAOtkN,KAAKyoN,aASd,YAAA1M,WAAA,WACE,OAA8B/7M,KAAKka,IAAIwuM,EAAA,YASzC,YAAA1M,0BAAA,WACE,OACEh8M,KAAKka,IAAIwuM,EAAA,+BAUb,YAAA7M,WAAA,SAAWF,GACT37M,KAAKwrC,IAAIk9K,EAAA,UAAsB/M,IASjC,YAAAG,0BAAA,SAA0BF,GACxB57M,KAAKwrC,IAAIk9K,EAAA,6BAAyC9M,IAEtD,EA/IA,CAA8B8H,EAAA,ikBCF9B,QAxEA,YAIE,WAAYjmN,GAAZ,WACQyqC,EAAQ6xI,EAAA,gBAEd,YAAMt8K,EAAQmzK,UAAW1oI,EAAO,CAC9BkT,WAAY39C,EAAQ29C,WACpBk/B,YAAa78E,EAAQ68E,eACrB,MAMGquI,QAAUlrN,EAAQmrN,OAMvB,EAAKC,MAAQ,KAMb,EAAKC,OAAS,OA0ClB,OAtEuB,OAoCrB,YAAA7M,QAAA,WACE,OAAOj8M,KAAK6oN,OAQd,YAAAE,SAAA,WACE,OAAO/oN,KAAK8oN,QAOd,YAAA/gF,KAAA,WACE/nI,KAAKkoC,MAAQ6xI,EAAA,UACb/5K,KAAKmpD,UAEL,IAAMlnC,EAAOjiB,KACbA,KAAK2oN,UACF1hN,MAAK,SAAUwE,GACdwW,EAAK4mM,MAAQp9M,EACbwW,EAAKimB,MAAQ6xI,EAAA,SACb93J,EAAKknC,aAENhvC,OAAM,SAAUzG,GACfuO,EAAK6mM,OAASp1M,EACduO,EAAKimB,MAAQ6xI,EAAA,QACb93J,EAAKknC,cAGb,EAtEA,CAAuB6/J,EAAA,kECMVC,EAAuB,MAgBvBC,EAAc,MAyCrBC,EAAc,CAAC,qBAAsB,QAAS,YAAa,aAO1D,SAAStyK,EAAW4c,EAAQ21J,GASjC,IARA,IAAMjkE,GAAa,QACjB,CACEkkE,uBAAuB,EACvBC,WAAW,MAEbF,GAEIh9C,EAAK+8C,EAAY3qN,OACdc,EAAI,EAAGA,EAAI8sK,IAAM9sK,EACxB,IACE,IAAMS,EAAU0zD,EAAO5c,WAAWsyK,EAAY7pN,GAAI6lJ,GAClD,GAAIplJ,EACF,OAA6C,EAE/C,MAAOzB,IAIX,OAAO,mBCzET,aAME,WAAYD,EAAMkrN,GAKhBvpN,KAAKmvD,MAAQ,KAMbnvD,KAAK3B,KAAOA,GAEZ,ODvCwB,QCuCjBA,GAAyBA,IAAS4qN,EAAsB,IAM/DjpN,KAAKwpN,WAAsBvrN,IAAdsrN,EAA0BA,EA9C5BL,MA0Gf,OArDE,YAAAO,OAAA,SAAOh1L,GACLz0B,KAAKmvD,MAAQ,IAAKu6J,EAAqB1pN,KAAK3B,MAA/B,CAAsCo2B,IAOrD,YAAAk1L,UAAA,SAAUx6J,GACR,IAAMy6J,EAAaF,EAAqB1pN,KAAK3B,MAC7C2B,KAAKmvD,MAAQy6J,EAAW/nN,KACpB+nN,EAAW/nN,KAAKstD,GAChB,IAAIy6J,EAAWz6J,IAQrB,YAAA06J,gBAAA,SAAgBt1M,GACdvU,KAAKmvD,MAAQ,IAAKu6J,EAAqB1pN,KAAK3B,MAA/B,CAAsCkW,IAMrD,YAAA4kL,QAAA,WACE,OAAOn5L,KAAK3B,MAOd,YAAAouK,SAAA,WACE,OAAOzsK,KAAKmvD,OAMd,YAAA26J,SAAA,WACE,OAAO9pN,KAAKwpN,OAOd,YAAAppC,QAAA,WACE,OAAOpgL,KAAKmvD,MAAQnvD,KAAKmvD,MAAM3wD,OAAS,GAE5C,EArFA,GA4FO,SAASkrN,EAAqBrrN,GACnC,OAAQA,IAGD4qN,EACIc,YAEAC,aAIb,sgBCxHA,SAASC,EAAiBC,EAAIC,EAAS7vI,GACrC,IAAM8vI,EAAiB9vI,EAAc4vI,EAAGG,OAASH,EAAGI,QACpDJ,EAAGK,YAAYL,EAAGM,WAAYL,GAC9BD,EAAGO,cAAcP,EAAGM,WAAYN,EAAGQ,eAAgBR,EAAGS,eACtDT,EAAGO,cAAcP,EAAGM,WAAYN,EAAGU,eAAgBV,EAAGS,eACtDT,EAAGO,cAAcP,EAAGM,WAAYN,EAAGW,mBAAoBT,GACvDF,EAAGO,cAAcP,EAAGM,WAAYN,EAAGY,mBAAoBV,GAuBzD,SAASW,EACPC,EACAb,EACA1+M,EACAgpB,EACAw2L,EACA3wI,GAEA,IACI4wI,EACAC,EAFEjB,EAAKc,EAAOI,QAGd3/M,aAAgBu+M,cAClBkB,EAAchB,EAAGmB,MACjBL,EAAOM,aAAa,qBAEpBH,EAA+B,OADbH,EAAOM,aAAa,8BAGtCJ,EAAchB,EAAGqB,cACjBJ,GAAiB,GAEnBlB,EAAiBC,EAAIC,EAAS7vI,GAAe6wI,GAE7C,IAUIp/J,EAVEy/J,EAAc//M,EAAKggN,WAAah3L,EAAK,GACvCi3L,EAAkB,EAUtB,OATIF,EAAc,GAAM,EACtBE,EAAkB,EACTF,EAAc,GAAM,EAC7BE,EAAkB,EACTF,EAAc,GAAM,IAC7BE,EAAkB,GAIZT,GACN,KAAK,EACHl/J,EAASm+J,EAAGyB,UACZ,MAEF,KAAK,EACH5/J,EAASm+J,EAAG0B,gBACZ,MAEF,KAAK,EACH7/J,EAASm+J,EAAG2B,IACZ,MAEF,KAAK,EACH9/J,EAASm+J,EAAG4B,KACZ,MAEF,QACE,MAAM,IAAIjrN,MAAM,uCAAgCoqN,IAIpD,IAAMc,EAAqB7B,EAAG8B,aAAa9B,EAAG+B,kBAC9C/B,EAAGgC,YAAYhC,EAAG+B,iBAAkBP,GACpCxB,EAAGiC,WACDjC,EAAGM,WACH,EACAz+J,EACAt3B,EAAK,GACLA,EAAK,GACL,EACAs3B,EACAm/J,EACAz/M,GAEFy+M,EAAGgC,YAAYhC,EAAG+B,iBAAkBF,GAMtC,IAAIK,EAAe,KA4RnB,QAtQA,YAIE,WAAY3uN,GAAZ,MACE,cAAO,KAKP,EAAKq8K,KAKL,EAAKuyC,SAAW,GAChB,EAAKlvC,kBAAoB,EAAKA,kBAAkBlmK,KAAK,GAKrD,EAAKwd,MAAO,QAAOh3B,EAAQ8kD,KAAK0kK,YAAYxpN,EAAQq8K,KAAKlJ,UAAU,KAMnE,EAAK07C,gBAAkB7uN,EAAQ8uN,gBAAkB,EAMjD,EAAKC,QAAU/uN,EAAQolN,QAAU,EAKjC,EAAKoI,UAAYjzK,IAMjB,EAAKy0K,QAAUhvN,EAAQutN,OAEvB,IAAM1xB,EAAS,IAAI,EF9KK,ME8K0B4vB,UAClD5vB,EAAOqwB,UAAU,CACf,EACA,EACA,EACA,EACA,EACA,EACA,EACA,IAEF,EAAK8C,QAAQC,gBAAgBpzB,GAK7B,EAAKA,OAASA,EAEd,EAAKqzB,QAAQlvN,EAAQq8K,QAoMzB,OApQ0B,OAsExB,YAAA6yC,QAAA,SAAQ7yC,GACN,GAAIA,IAAS95K,KAAK85K,KAOhB,GANI95K,KAAK85K,MACP95K,KAAK85K,KAAKzoJ,oBAAoBw9I,EAAA,SAAkB7uK,KAAKm9K,mBAEvDn9K,KAAK85K,KAAOA,EACZ95K,KAAKqsN,SAAS7tN,OAAS,EACvBwB,KAAK0vK,OAASoK,EAAK5K,aAAe6K,EAAA,SAC9B/5K,KAAK0vK,OACP1vK,KAAK4sN,kBACA,CACL,GAAI9yC,aAAgB+yC,EAAA,EAAW,CAC7B,IAAMz9C,EAAQ0K,EAAK/K,WACfK,aAAiBa,QAAUb,EAAMQ,cACnCR,EAAMQ,YAAc,aAGxBkK,EAAK7hK,iBAAiB42J,EAAA,SAAkB7uK,KAAKm9K,qBAKnD,YAAAyvC,YAAA,WACE,IAAM5B,EAAShrN,KAAKysN,QACdvC,EAAKc,EAAOI,QACZtxC,EAAO95K,KAAK85K,KAElB,GAAIA,aAAgB+yC,EAAA,GAAa/yC,aAAgB,IAAY,CAC3D,IAAI1K,EAAQ0K,EAAK/K,WACjB,GAAqB,IAAjB/uK,KAAKwsN,QAAe,CACtB,IAAM3J,EAAS7iN,KAAKssN,gBAAkBtsN,KAAKwsN,QACrC5wN,EAAQqR,KAAKgsD,MAAMm2G,EAAMxzK,MAAQ,EAAIinN,GACrChnN,EAASoR,KAAKgsD,MAAMm2G,EAAMvzK,OAAS,EAAIgnN,GACvC9iN,GAAU,QAAsBnE,EAAOC,GACxCi+K,EAAKx/F,cACR,QAAOv6E,EAAS,KAElBA,EAAQ8xG,UACNu9D,EACAyzC,EACAA,EACAjnN,EACAC,EACA,EACA,EACAD,EACAC,GAEFuzK,EAAQrvK,EAAQ0zD,OAElB,IAAM02J,EAAUD,EAAG4C,gBAInB,OAHA9sN,KAAKqsN,SAASjoN,KAAK+lN,GACnBnqN,KAAKirN,UAAY,OAxOvB,SAA4Bf,EAAIC,EAAS/6C,EAAO90F,GAC9C2vI,EAAiBC,EAAIC,EAAS7vI,GAE9B4vI,EAAGiC,WAAWjC,EAAGM,WAAY,EAAGN,EAAG4B,KAAM5B,EAAG4B,KAAM5B,EAAGqB,cAAen8C,GAsOhE29C,CAAmB7C,EAAIC,EAAS/6C,EAAO0K,EAAKx/F,aAI9C,IAAMqf,EAAY,CAChB35F,KAAKy0B,KAAK,GAAKz0B,KAAKssN,gBACpBtsN,KAAKy0B,KAAK,GAAKz0B,KAAKssN,iBAEhB7gN,EAAOquK,EAAKmiC,UACZ+Q,EAAUvhN,aAAgBu+M,aAC1BiD,EAAatzH,EAAU,GAAKA,EAAU,GACtCuzH,EAAWF,EAAUhD,aAAe5oF,WACpC+rF,EAAkBD,EAASE,kBAC3B5B,EAAc//M,EAAKggN,WAAa9xH,EAAU,GAEhD35F,KAAKirN,UAAYh+M,KAAKwjB,MAAM+6L,EAAc2B,EAAkBxzH,EAAU,IACtE,IAAM0zH,EAAepgN,KAAK+rD,KAAKh5D,KAAKirN,UAAY,GAEhD,GAAqB,IAAjBoC,EAWF,OAVMlD,EAAUD,EAAG4C,gBACnB9sN,KAAKqsN,SAASjoN,KAAK+lN,QACnBY,EACEC,EACAb,EACA1+M,EACAkuF,EACA35F,KAAKirN,UACLnxC,EAAKx/F,aAMT,IADA,IAAMgzI,EAAoB,IAAIhtN,MAAM+sN,GAC3BE,EAAe,EAAGA,EAAeF,IAAgBE,EAAc,CAChEpD,EAAUD,EAAG4C,gBACnB9sN,KAAKqsN,SAASjoN,KAAK+lN,GAEnB,IAAMc,EACJsC,EAAeF,EAAe,EAAI,EAAIrtN,KAAKirN,UAAY,EACzDqC,EAAkBC,GAAgB,IAAIL,EAASD,EAAahC,GAM9D,IAHA,IAAI7wK,EAAY,EACZozK,EAAY,EACVC,EAAW9zH,EAAU,GAAK35F,KAAKirN,UAC5ByC,EAAW,EAAGA,EAAW/zH,EAAU,KAAM+zH,EAAU,CAC1D,IAAK,IAAIC,EAAW,EAAGA,EAAWF,IAAYE,EAAU,CACtD,IAAMC,EAAYniN,EAAK+hN,EAAYG,GAE7BE,EAAa5gN,KAAKwjB,MAAM2pB,EAAYp6C,KAAKirN,WACzC6C,EAAYH,EAAW3tN,KAAKirN,WAE5B8C,EAAcT,EADdC,EAAetgN,KAAKwjB,MAAMq9L,EAAY,KAIhCD,GAFN5C,EAAY8C,EAAYvvN,OAASyuN,GACda,EAAY,GACoBF,IAEvDxzK,EAEJozK,GAAahC,EAAc2B,EAG7B,IAASI,EAAe,EAAGA,EAAeF,IAAgBE,EAAc,CACtE,IACMQ,EAENhD,EACEC,EAJIb,EAAUnqN,KAAKqsN,SAASkB,GACxBQ,EAAcT,EAAkBC,GAMpC5zH,EALIsxH,EAAY8C,EAAYvvN,OAASyuN,EAOrCnzC,EAAKx/F,eAKX,YAAA6iG,kBAAA,WACMn9K,KAAK85K,KAAK5K,aAAe6K,EAAA,WAC3B/5K,KAAK0vK,QAAS,EACd1vK,KAAK4sN,cACL5sN,KAAKopH,cAAcylD,EAAA,YAIvB,YAAA1B,gBAAA,WACE,IAAM+8C,EAAKlqN,KAAKysN,QAAQrB,QACxBprN,KAAKysN,QAAQuB,aAAahuN,KAAKs5L,QAC/B,IAAK,IAAIh6L,EAAI,EAAGA,EAAIU,KAAKqsN,SAAS7tN,SAAUc,EAC1C4qN,EAAG+D,cAAcjuN,KAAKqsN,SAAS/sN,IAEjCU,KAAK85K,KAAKzoJ,oBAAoBw9I,EAAA,SAAkB7uK,KAAKm9K,oBASvD,YAAA+wC,aAAA,SAAa5pI,EAAKP,GAChB,IAAK/jF,KAAK0vK,OACR,OAAO,KAMT,GAHAprF,EAAMr3E,KAAKwjB,MAAMzwB,KAAKssN,gBAAkBhoI,GACxCP,EAAM92E,KAAKwjB,MAAMzwB,KAAKssN,gBAAkBvoI,GAEpC/jF,KAAK85K,gBAAgB,EAAU,CACjC,IAAM,EAAO95K,KAAK85K,KAAKmiC,UACjBkS,EAAelhN,KAAKwjB,MAAMzwB,KAAKssN,gBAAkBtsN,KAAKy0B,KAAK,IACjE,GAAI,aAAgB25L,SAAU,CAC5B,IAAMC,EAAgB,EAAK5C,YAAczrN,KAAKy0B,KAAK,GAAKz0B,KAAKy0B,KAAK,IAC5D,EAASsvD,EAAMoqI,EAAeE,EAAgB/pI,EAAM+pI,EACpD95M,EAAS,EAAKA,OAAOpS,MAAM,EAAQ,EAASksN,GAClD,OAAO,IAAID,SAAS75M,GAGtB,IAAM+tC,EAASyhC,EAAMoqI,EAAenuN,KAAKirN,UAAY3mI,EAAMtkF,KAAKirN,UAChE,OAAO,EAAK9oN,MAAMmgD,EAAQA,EAAStiD,KAAKirN,WAtQ9C,IACQx3J,EA6QAhoD,EALC2gN,KAxQD34J,EAASxuD,SAASkS,cAAc,WAC/Bvb,MAAQ,EACf63D,EAAO53D,OAAS,EAChBuwN,EAAe34J,EAAO5c,WAAW,OAwQ/Bu1K,EAAa36G,UAAU,EAAG,EAAG,EAAG,GAGhC,IAAM29D,EAAQpvK,KAAK85K,KAAK/K,WACxB,IACEq9C,EAAav6G,UAAUu9D,EAAO9qF,EAAKP,EAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GACvDt4E,EAAO2gN,EAAakC,aAAa,EAAG,EAAG,EAAG,GAAG7iN,KAC7C,MAAOtI,GACP,OAAO,KAET,OAAOsI,GAEX,EApQA,CAA0B,sCC5I1B,QACQ,mBADR,EAEY,+CC6FZ,aAIE,WAAYhO,GACVuC,KAAKuuN,IAAM9wN,EAAQ+wN,aACnB,IAAMtE,EAAKlqN,KAAKuuN,IAEhBvuN,KAAKyuN,YAAchxN,EAAQixN,YAAc,EAEzC1uN,KAAK2uN,qBAAuBzE,EAAG4C,gBAC/B9sN,KAAK4uN,yBAA2B,KAEhC5uN,KAAK6uN,aAAe3E,EAAG4E,oBAIvB,IAAMC,EAAe7E,EAAG8E,aAAa9E,EAAG+E,eACxC/E,EAAGgF,aACDH,EACAtxN,EAAQsxN,cApHgB,qUAsH1B7E,EAAGiF,cAAcJ,GACjB,IAAMK,EAAiBlF,EAAG8E,aAAa9E,EAAGmF,iBAC1CnF,EAAGgF,aACDE,EACA3xN,EAAQ2xN,gBA1GkB,6NA4G5BlF,EAAGiF,cAAcC,GACjBpvN,KAAKsvN,qBAAuBpF,EAAGqF,gBAC/BrF,EAAGsF,aAAaxvN,KAAKsvN,qBAAsBP,GAC3C7E,EAAGsF,aAAaxvN,KAAKsvN,qBAAsBF,GAC3ClF,EAAGuF,YAAYzvN,KAAKsvN,sBAGpBtvN,KAAK0vN,4BAA8BxF,EAAGyF,eAEtCzF,EAAG0F,WAAW1F,EAAGvhB,aAAc3oM,KAAK0vN,6BACpCxF,EAAG2F,WACD3F,EAAGvhB,aACH,IAAIqhB,aAJgB,EAAE,GAAI,EAAG,GAAI,GAAI,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,EAAG,IAK5DE,EAAGhB,aAGLlpN,KAAK8vN,4BAA8B5F,EAAG6F,kBACpC/vN,KAAKsvN,qBACL,cAEFtvN,KAAKgwN,6BAA+B9F,EAAG+F,mBACrCjwN,KAAKsvN,qBACL,gBAEFtvN,KAAKkwN,6BAA+BhG,EAAG+F,mBACrCjwN,KAAKsvN,qBACL,aAEFtvN,KAAKmwN,6BAA+BjG,EAAG+F,mBACrCjwN,KAAKsvN,qBACL,WAQFtvN,KAAKowN,UAAY,GACjB3yN,EAAQ4yN,UACNp0N,OAAOkQ,KAAK1O,EAAQ4yN,UAAU7tN,QAC5B,SAAU5F,GACRoD,KAAKowN,UAAUhsN,KAAK,CAClBjI,MAAOsB,EAAQ4yN,SAASzzN,GACxBkhB,SAAUosM,EAAG+F,mBAAmBjwN,KAAKsvN,qBAAsB1yN,MAE7Dqa,KAAKjX,OAmOf,OA1NE,YAAAorN,MAAA,WACE,OAAOprN,KAAKuuN,KAUd,YAAAtmN,KAAA,SAAKkpK,GACH,IAAM+4C,EAAKlqN,KAAKorN,QACVkF,EAAc,CAClBpG,EAAGqG,mBAAqBvwN,KAAKyuN,YAC7BvE,EAAGsG,oBAAsBxwN,KAAKyuN,aAQhC,GAJAvE,EAAGuG,gBAAgBvG,EAAGwG,YAAa1wN,KAAK2wN,kBACxCzG,EAAGrqE,SAAS,EAAG,EAAGywE,EAAY,GAAIA,EAAY,KAI3CtwN,KAAK4uN,0BACN5uN,KAAK4uN,yBAAyB,KAAO0B,EAAY,IACjDtwN,KAAK4uN,yBAAyB,KAAO0B,EAAY,GACjD,CACAtwN,KAAK4uN,yBAA2B0B,EAGhC,IACMM,EAAiB1G,EAAG4B,KAEpB//J,EAASm+J,EAAG4B,KACZztN,EAAO6rN,EAAGqB,cAEhBrB,EAAGK,YAAYL,EAAGM,WAAYxqN,KAAK2uN,sBACnCzE,EAAGiC,WACDjC,EAAGM,WARS,EAUZoG,EACAN,EAAY,GACZA,EAAY,GAVC,EAYbvkK,EACA1tD,EAVW,MAcb6rN,EAAGO,cAAcP,EAAGM,WAAYN,EAAGW,mBAAoBX,EAAGG,QAC1DH,EAAGO,cAAcP,EAAGM,WAAYN,EAAGQ,eAAgBR,EAAGS,eACtDT,EAAGO,cAAcP,EAAGM,WAAYN,EAAGU,eAAgBV,EAAGS,eAGtDT,EAAG2G,qBACD3G,EAAGwG,YACHxG,EAAG4G,kBACH5G,EAAGM,WACHxqN,KAAK2uN,qBACL,KAaN,YAAA1uN,MAAA,SAAMkxK,EAAY4/C,EAAUC,EAAYC,GACtC,IAAM/G,EAAKlqN,KAAKorN,QACV32L,EAAO08I,EAAW18I,KASxB,GAPAy1L,EAAGuG,gBACDvG,EAAGwG,YACHK,EAAWA,EAASJ,iBAAmB,MAEzCzG,EAAGgH,cAAchH,EAAGiH,UACpBjH,EAAGK,YAAYL,EAAGM,WAAYxqN,KAAK2uN,uBAE9BoC,EAAU,CAGb,IAAMK,GAAW,QAAOlH,EAAGz2J,QAC3B,IAAK09G,EAAW4R,cAAcquC,GAAW,CACvC,IAAMjsE,EAAa+kE,EAAGmH,uBAClBlsE,GAAcA,EAAWkkE,wBAC3Ba,EAAGoH,WAAW,EAAK,EAAK,EAAK,GAC7BpH,EAAGt/L,MAAMs/L,EAAGqH,mBAGdpgD,EAAW4R,cAAcquC,IAAY,GAIzClH,EAAGloL,OAAOkoL,EAAGsH,OACbtH,EAAGuH,UAAUvH,EAAGwH,IAAKxH,EAAGyH,qBACxBzH,EAAGrqE,SAAS,EAAG,EAAGqqE,EAAGqG,mBAAoBrG,EAAGsG,qBAE5CtG,EAAG0F,WAAW1F,EAAGvhB,aAAc3oM,KAAK0vN,6BAEpCxF,EAAG0H,WAAW5xN,KAAKsvN,sBACnBpF,EAAG2H,wBAAwB7xN,KAAK8vN,6BAChC5F,EAAG4H,oBACD9xN,KAAK8vN,4BACL,EACA5F,EAAGmB,OACH,EACA,EACA,GAEFnB,EAAG6H,UAAU/xN,KAAKgwN,6BAA8Bv7L,EAAK,GAAIA,EAAK,IAC9Dy1L,EAAG8H,UAAUhyN,KAAKmwN,6BAA8B,GAEhD,IAAM5lI,EAAU4mF,EAAWqB,iBAAiBrB,EAAWiD,YAAY7pF,QACnE2/H,EAAG+H,UAAUjyN,KAAKkwN,6BAA8B3lI,GAEhDvqF,KAAKkyN,cAAc/gD,GAEf6/C,GACFA,EAAW9G,EAAI/4C,GAEjB+4C,EAAGiI,WAAWjI,EAAGkI,UAAW,EAAG,GAC3BnB,GACFA,EAAY/G,EAAI/4C,IAQpB,YAAAw/C,eAAA,WACE,OAAO3wN,KAAK6uN,cAQd,YAAAqD,cAAA,SAAc/gD,GACZ,IAEIh1K,EAFE+tN,EAAKlqN,KAAKorN,QAGZiH,EAAc,EAClBryN,KAAKowN,UAAU5tN,SAAQ,SAAU8vN,GAO/B,IANAn2N,EAC2B,mBAAlBm2N,EAAQn2N,MACXm2N,EAAQn2N,MAAMg1K,GACdmhD,EAAQn2N,iBAGOo2N,mBAAqBp2N,aAAiBq2N,UAEpDF,EAAQnI,UACXmI,EAAQnI,QAAUD,EAAG4C,iBAEvB5C,EAAGgH,cAAchH,EAAG,iBAAUmI,KAC9BnI,EAAGK,YAAYL,EAAGM,WAAY8H,EAAQnI,SACtCD,EAAGO,cAAcP,EAAGM,WAAYN,EAAGW,mBAAoBX,EAAGG,QAC1DH,EAAGO,cAAcP,EAAGM,WAAYN,EAAGQ,eAAgBR,EAAGS,eACtDT,EAAGO,cAAcP,EAAGM,WAAYN,EAAGU,eAAgBV,EAAGS,eAElDxuN,aAAiBq2N,UACnBtI,EAAGiC,WACDjC,EAAGM,WACH,EACAN,EAAG4B,KACH5B,EAAG4B,KACH3vN,EAAMP,MACNO,EAAMN,OACN,EACAquN,EAAGqB,cACH,IAAInqF,WAAWjlI,EAAMsP,OAGvBy+M,EAAGiC,WACDjC,EAAGM,WACH,EACAN,EAAG4B,KACH5B,EAAG4B,KACH5B,EAAGqB,cACHpvN,GAKJ+tN,EAAG8H,UAAUM,EAAQx0M,SAAUu0M,UAC1B,GAAI/xN,MAAMiF,QAAQpJ,GACvB,OAAQA,EAAMqC,QACZ,KAAK,EAEH,YADA0rN,EAAG6H,UAAUO,EAAQx0M,SAAU3hB,EAAM,GAAIA,EAAM,IAEjD,KAAK,EAEH,YADA+tN,EAAGuI,UAAUH,EAAQx0M,SAAU3hB,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAE3D,KAAK,EAQH,YAPA+tN,EAAGwI,UACDJ,EAAQx0M,SACR3hB,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,IAGV,QACE,WAEsB,iBAAVA,GAChB+tN,EAAG+H,UAAUK,EAAQx0M,SAAU3hB,OAIvC,EA7SA,GA+SA,wBCrYO,SAASw2N,EAAcC,EAAMtzE,GAOlC,OANAszE,EAAK,GAAKtzE,EAAU,GACpBszE,EAAK,GAAKtzE,EAAU,GACpBszE,EAAK,GAAKtzE,EAAU,GACpBszE,EAAK,GAAKtzE,EAAU,GACpBszE,EAAK,IAAMtzE,EAAU,GACrBszE,EAAK,IAAMtzE,EAAU,GACdszE,geCgGHC,EAAc,GAMpB,SAASC,EAAwBjvN,GAC/B,MAAO,UAAYA,EAGrB,IAAIkvN,EAA4B,EAkLhC,cAIE,WAAYhnD,GAAZ,IAhLMloK,EAgLN,EACE,cAAO,KACDpG,EAAUsuK,GAAe,GAG/B,EAAKinD,6BAA+B,EAAKC,uBAAuBh8M,KAAK,GAGrE,EAAKi8M,iCACH,EAAKC,2BAA2Bl8M,KAAK,GAMvC,EAAKm8M,gBAAkB31N,EAAQ41N,eAC3BP,EAAwBr1N,EAAQ41N,iBAhMhCxvN,EAAM,UAAYkvN,EACxBA,GAA6B,EACtBlvN,GAqML,EAAKyvN,QA9LT,SAAmBzvN,GACjB,IAAI0vN,EAAYV,EAAYhvN,GAC5B,IAAK0vN,EAAW,CACd,IAAM9/J,EAASxuD,SAASkS,cAAc,UACtCs8C,EAAO/L,MAAMuF,SAAW,WACxBwG,EAAO/L,MAAMnO,KAAO,IACpBg6K,EAAY,CAACC,MAAO,EAAG//J,OAAM,GAC7Bo/J,EAAYhvN,GAAO0vN,EAIrB,OADAA,EAAUC,OAAS,EACZD,EAAU9/J,OAmLA+a,CAAU,EAAK4kJ,iBAM9B,EAAK7E,IAAM13K,EAAW,EAAKy8K,SAM3B,EAAKG,aAAe,GAMpB,EAAKC,gBAAkB,GAMvB,EAAKC,gBAAkB,KAEvB,EAAKL,QAAQr7M,iBACX27M,EACA,EAAKZ,8BAEP,EAAKM,QAAQr7M,iBACX27M,EACA,EAAKV,kCAOP,EAAKW,qBAAsB,UAM3B,EAAKC,oBAAqB,UAM1B,EAAKC,SDzXA,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GC+XnD,EAAKC,kBAAoB,GAMzB,EAAKC,iBAAmB,GAQxB,EAAK7D,UAAY,GACb3yN,EAAQ4yN,UACV,EAAK6D,YAAYz2N,EAAQ4yN,UAG3B,IAAMnG,EAAK,EAAKkB,eAShB,EAAK+I,mBAAqB12N,EAAQ22N,cAC9B32N,EAAQ22N,cAAclrN,KAAI,SAAUzL,GAClC,OAAO,IAAI,EAAwB,CACjC+wN,aAActE,EACdwE,WAAYjxN,EAAQixN,WACpBK,aAActxN,EAAQsxN,aACtBK,eAAgB3xN,EAAQ2xN,eACxBiB,SAAU5yN,EAAQ4yN,cAGtB,CAAC,IAAI,EAAwB,CAAC7B,aAActE,KAMhD,EAAKmK,qBAAuB,KAM5B,EAAKlpC,WAAaz7K,KAAK4F,QAopB3B,OA1xB0B,OA4IxB,YAAA4+M,YAAA,SAAY7D,GAEV,IAAK,IAAM,KADXrwN,KAAKowN,UAAY,GACEC,EACjBrwN,KAAKowN,UAAUhsN,KAAK,CAClBxH,KAAM,EACNT,MAAOk0N,EAAS,KAGpBrwN,KAAKg0N,kBAAoB,IAO3B,YAAAM,sBAAA,SAAsBjB,GACpB,OAAOrzN,KAAKozN,kBAAoBN,EAAwBO,IAS1D,YAAA/H,aAAA,SAAa1uN,GACX,GAAIA,KAAQoD,KAAK0zN,gBACf,OAAO1zN,KAAK0zN,gBAAgB92N,GAE9B,IAAMk/L,EAAY97L,KAAKuuN,IAAIjD,aAAa1uN,GAExC,OADAoD,KAAK0zN,gBAAgB92N,GAAQk/L,EACtBA,GAUT,YAAA8zB,WAAA,SAAWr7M,GACT,IAAM21M,EAAKlqN,KAAKorN,QACVmJ,GAAY,QAAOhgN,GACrBigN,EAAcx0N,KAAKyzN,aAAac,GAC/BC,IAEHA,EAAc,CACZjgN,OAAQA,EACRkgN,YAHkBvK,EAAGyF,gBAKvB3vN,KAAKyzN,aAAac,GAAaC,GAEjCtK,EAAG0F,WAAWr7M,EAAO4kL,UAAWq7B,EAAYC,cAS9C,YAAA/H,gBAAA,SAAgBn4M,GACd,IAAM21M,EAAKlqN,KAAKorN,QAChBprN,KAAK4vN,WAAWr7M,GAChB21M,EAAG2F,WAAWt7M,EAAO4kL,UAAW5kL,EAAOk4J,WAAYl4J,EAAOu1M,aAM5D,YAAAkE,aAAA,SAAa/sF,GACX,IAAMipF,EAAKlqN,KAAKorN,QACVmJ,GAAY,QAAOtzF,GACnByzF,EAAmB10N,KAAKyzN,aAAac,GACvCG,IAAqBxK,EAAGyK,iBAC1BzK,EAAG8D,aAAa0G,EAAiBD,oBAE5Bz0N,KAAKyzN,aAAac,IAM3B,YAAApnD,gBAAA,WACEntK,KAAKszN,QAAQjiM,oBACXuiM,EACA5zN,KAAKgzN,8BAEPhzN,KAAKszN,QAAQjiM,oBACXuiM,EACA5zN,KAAKkzN,kCAzXX,SAAuBrvN,GACrB,IAAM0vN,EAAYV,EAAYhvN,GAC9B,GAAK0vN,IAILA,EAAUC,OAAS,IACfD,EAAUC,MAAQ,IAAtB,CAIA,IAEM13B,EADKjlJ,EADI08K,EAAU9/J,QAEJ63J,aAAa,sBAC9BxvB,GACFA,EAAU84B,qBAGL/B,EAAYhvN,IA0WjBgxN,CAAc70N,KAAKozN,wBAEZpzN,KAAKuuN,WACLvuN,KAAKszN,SAWd,YAAAwB,YAAA,SAAY3jD,EAAY4jD,GACtB,IAAM7K,EAAKlqN,KAAKorN,QACV33J,EAASzzD,KAAKwuE,YACd/5C,EAAO08I,EAAW18I,KAClBqnF,EAAaq1D,EAAWr1D,WAE9BroD,EAAO73D,MAAQ64B,EAAK,GAAKqnF,EACzBroD,EAAO53D,OAAS44B,EAAK,GAAKqnF,EAC1BroD,EAAO/L,MAAM9rD,MAAQ64B,EAAK,GAAK,KAC/Bg/B,EAAO/L,MAAM7rD,OAAS44B,EAAK,GAAK,KAEhCy1L,EAAG0H,WAAW5xN,KAAK2zN,iBAGnB,IAAK,IAAIr0N,EAAIU,KAAKm0N,mBAAmB31N,OAAS,EAAGc,GAAK,EAAGA,IACvDU,KAAKm0N,mBAAmB70N,GAAG2I,KAAKkpK,GAGlC+4C,EAAGK,YAAYL,EAAGM,WAAY,MAE9BN,EAAGoH,WAAW,EAAK,EAAK,EAAK,GAC7BpH,EAAGt/L,MAAMs/L,EAAGqH,kBAEZrH,EAAGloL,OAAOkoL,EAAGsH,OACbtH,EAAGuH,UACDvH,EAAGwH,IACHqD,EAAwB7K,EAAG8K,KAAO9K,EAAGyH,qBAGvCzH,EAAG0H,WAAW5xN,KAAK2zN,iBACnB3zN,KAAKi1N,gBAAgB9jD,GACrBnxK,KAAKkyN,cAAc/gD,IAWrB,YAAA+jD,0BAAA,SAA0B/jD,EAAYgkD,EAAcJ,GAClD,IAAM7K,EAAKlqN,KAAKorN,QACV32L,EAAO0gM,EAAa/0C,UAE1B8pC,EAAGuG,gBAAgBvG,EAAGwG,YAAayE,EAAaC,kBAChDlL,EAAGrqE,SAAS,EAAG,EAAGprH,EAAK,GAAIA,EAAK,IAChCy1L,EAAGK,YAAYL,EAAGM,WAAY2K,EAAaE,cAC3CnL,EAAGoH,WAAW,EAAK,EAAK,EAAK,GAC7BpH,EAAGt/L,MAAMs/L,EAAGqH,kBACZrH,EAAGloL,OAAOkoL,EAAGsH,OACbtH,EAAGuH,UACDvH,EAAGwH,IACHqD,EAAwB7K,EAAG8K,KAAO9K,EAAGyH,qBAGvCzH,EAAG0H,WAAW5xN,KAAK2zN,iBACnB3zN,KAAKi1N,gBAAgB9jD,GACrBnxK,KAAKkyN,cAAc/gD,IASrB,YAAAmkD,aAAA,SAAah/L,EAAOD,GAClB,IAAM6zL,EAAKlqN,KAAKorN,QAChBprN,KAAKsrN,aAAa,0BAElB,IAAM5wK,EAAcwvK,EAAGqL,aAGjB36J,EAAWvkC,EAAMC,EACjBk/L,EAHc,EAGEl/L,EACtB4zL,EAAGoL,aAAapL,EAAGkI,UAAWx3J,EAAUlgB,EAAa86K,IASvD,YAAAC,aAAA,SAAatkD,EAAY6/C,EAAYC,GAEnC,IAAK,IAAI3xN,EAAI,EAAG8sK,EAAKpsK,KAAKm0N,mBAAmB31N,OAAQc,EAAI8sK,EAAI9sK,IACvDA,IAAM8sK,EAAK,EACbpsK,KAAKm0N,mBAAmB70N,GAAGW,MACzBkxK,EACA,KACA6/C,EACAC,GAGFjxN,KAAKm0N,mBAAmB70N,GAAGW,MACzBkxK,EACAnxK,KAAKm0N,mBAAmB70N,EAAI,KAUpC,YAAAkvE,UAAA,WACE,OAAOxuE,KAAKszN,SAQd,YAAAlI,MAAA,WACE,OAAOprN,KAAKuuN,KAQd,YAAA0G,gBAAA,SAAgB9jD,GACd,IAAM18I,EAAO08I,EAAW18I,KAClBmvB,EAAWutH,EAAWI,UAAU3tH,SAEhC8xK,GAAoB,QAAe11N,KAAK8zN,qBAC9C,QAAe4B,EAAmB,EAAIjhM,EAAK,GAAI,EAAIA,EAAK,IAExD,IAAMkhM,GAAqB,QAAe31N,KAAK6zN,qBAC9B,IAAbjwK,IACF,QAAgB+xK,GAAqB/xK,GAGvC5jD,KAAK41N,sBAxoBc,sBA0oBjBjD,EAAc3yN,KAAK+zN,SAAU2B,IAE/B11N,KAAK41N,sBA3oBiB,uBA6oBpBjD,EAAc3yN,KAAK+zN,SAAU4B,IAG/B31N,KAAK61N,qBA/oBD,SAipB+B,MAAhCnmN,KAAK4F,MAAQtV,KAAKmrL,aAErBnrL,KAAK61N,qBAlpBD,SAkpB2C1kD,EAAWI,UAAU+kB,MACpEt2L,KAAK61N,qBAlpBK,eAopBR1kD,EAAWI,UAAU5C,aASzB,YAAAujD,cAAA,SAAc/gD,GACZ,IAEIh1K,EAFE+tN,EAAKlqN,KAAKorN,QAGZiH,EAAc,EAClBryN,KAAKowN,UAAU5tN,QACb,SAAU8vN,GAOR,IANAn2N,EAC2B,mBAAlBm2N,EAAQn2N,MACXm2N,EAAQn2N,MAAMg1K,GACdmhD,EAAQn2N,iBAIKo2N,mBACjBp2N,aAAiB25N,kBACjB35N,aAAiBq2N,UAGZF,EAAQnI,UACXmI,EAAQliM,eAAYnyB,EACpBq0N,EAAQnI,QAAUD,EAAG4C,iBAEvB5C,EAAGgH,cAAchH,EAAG,iBAAUmI,KAC9BnI,EAAGK,YAAYL,EAAGM,WAAY8H,EAAQnI,SACtCD,EAAGO,cAAcP,EAAGM,WAAYN,EAAGW,mBAAoBX,EAAGG,QAC1DH,EAAGO,cAAcP,EAAGM,WAAYN,EAAGQ,eAAgBR,EAAGS,eACtDT,EAAGO,cAAcP,EAAGM,WAAYN,EAAGU,eAAgBV,EAAGS,kBAGlDxuN,aAAiB25N,mBACa,EAAQxqL,WACxBgnL,EAAQliM,YAAcj0B,IACtCm2N,EAAQliM,UAAYj0B,EACpB+tN,EAAGiC,WACDjC,EAAGM,WACH,EACAN,EAAG4B,KACH5B,EAAG4B,KACH5B,EAAGqB,cACHpvN,IAKJ+tN,EAAG8H,UAAUhyN,KAAKiwN,mBAAmBqC,EAAQ11N,MAAOy1N,UAC/C,GAAI/xN,MAAMiF,QAAQpJ,IAA2B,IAAjBA,EAAMqC,OACvCwB,KAAK41N,sBACHtD,EAAQ11N,KACR+1N,EAAc3yN,KAAK+zN,SAAU53N,SAE1B,GAAImE,MAAMiF,QAAQpJ,IAAUA,EAAMqC,QAAU,EACjD,OAAQrC,EAAMqC,QACZ,KAAK,EAMH,YALA0rN,EAAG6H,UACD/xN,KAAKiwN,mBAAmBqC,EAAQ11N,MAChCT,EAAM,GACNA,EAAM,IAGV,KAAK,EAOH,YANA+tN,EAAGuI,UACDzyN,KAAKiwN,mBAAmBqC,EAAQ11N,MAChCT,EAAM,GACNA,EAAM,GACNA,EAAM,IAGV,KAAK,EAQH,YAPA+tN,EAAGwI,UACD1yN,KAAKiwN,mBAAmBqC,EAAQ11N,MAChCT,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,IAGV,QACE,WAEsB,iBAAVA,GAChB+tN,EAAG+H,UAAUjyN,KAAKiwN,mBAAmBqC,EAAQ11N,MAAOT,IAEtD8a,KAAKjX,QAUX,YAAA4xN,WAAA,SAAWmE,GACT,OAAIA,GAAW/1N,KAAK2zN,kBAGP3zN,KAAKorN,QACbwG,WAAWmE,GACd/1N,KAAK2zN,gBAAkBoC,EACvB/1N,KAAKg0N,kBAAoB,GACzBh0N,KAAKi0N,iBAAmB,IACjB,IAaX,YAAA9E,cAAA,SAAcxzN,EAAQ0C,GACpB,IAAM6rN,EAAKlqN,KAAKorN,QACV4K,EAAS9L,EAAG8E,aAAa3wN,GAG/B,OAFA6rN,EAAGgF,aAAa8G,EAAQr6N,GACxBuuN,EAAGiF,cAAc6G,GACVA,GAUT,YAAAC,WAAA,SAAWC,EAAsBC,GAC/B,IAAMjM,EAAKlqN,KAAKorN,QAEVgE,EAAiBpvN,KAAKmvN,cAC1B+G,EACAhM,EAAGmF,iBAGCN,EAAe/uN,KAAKmvN,cACxBgH,EACAjM,EAAG+E,eAGC8G,EAAU7L,EAAGqF,gBAKnB,GAJArF,EAAGsF,aAAauG,EAAS3G,GACzBlF,EAAGsF,aAAauG,EAAShH,GACzB7E,EAAGuF,YAAYsG,IAEV7L,EAAGkM,mBAAmBhH,EAAgBlF,EAAGmM,gBAAiB,CAC7D,IAAM53N,EAAU,8CAAuCyrN,EAAGoM,iBACxDlH,IAEF,MAAM,IAAIvuN,MAAMpC,GAIlB,GAFAyrN,EAAGqM,aAAanH,IAEXlF,EAAGkM,mBAAmBrH,EAAc7E,EAAGmM,gBAI1C,MAHM53N,EAAU,4CAAqCyrN,EAAGoM,iBACtDvH,IAEI,IAAIluN,MAAMpC,GAIlB,GAFAyrN,EAAGqM,aAAaxH,IAEX7E,EAAGsM,oBAAoBT,EAAS7L,EAAGuM,aAItC,MAHMh4N,EAAU,qCAA8ByrN,EAAGoM,iBAC/CvH,IAEI,IAAIluN,MAAMpC,GAGlB,OAAOs3N,GAST,YAAA9F,mBAAA,SAAmBrzN,GAOjB,YANqCqB,IAAjC+B,KAAKg0N,kBAAkBp3N,KACzBoD,KAAKg0N,kBAAkBp3N,GAAQoD,KAAKorN,QAAQ6E,mBAC1CjwN,KAAK2zN,gBACL/2N,IAGGoD,KAAKg0N,kBAAkBp3N,IAShC,YAAA85N,qBAAA,SAAqB95N,GAOnB,YANoCqB,IAAhC+B,KAAKi0N,iBAAiBr3N,KACxBoD,KAAKi0N,iBAAiBr3N,GAAQoD,KAAKorN,QAAQ2E,kBACzC/vN,KAAK2zN,gBACL/2N,IAGGoD,KAAKi0N,iBAAiBr3N,IAW/B,YAAA+5N,wBAAA,SAAwBxlD,EAAY7xB,GAClC,IAAM7qH,EAAO08I,EAAW18I,KAClBmvB,EAAWutH,EAAWI,UAAU3tH,SAChC+qH,EAAawC,EAAWI,UAAU5C,WAClCtuH,EAAS8wH,EAAWI,UAAUlxH,OAapC,OAXA,QAAei/F,IACf,QACEA,EACA,EACA,EACA,GAAKqvB,EAAal6I,EAAK,IACvB,GAAKk6I,EAAal6I,EAAK,KACtBmvB,GACAvD,EAAO,IACPA,EAAO,IAEHi/F,GAST,YAAAu2E,qBAAA,SAAqBvD,EAASn2N,GAC5B6D,KAAKorN,QAAQ6G,UAAUjyN,KAAKiwN,mBAAmBqC,GAAUn2N,IAQ3D,YAAAy6N,oBAAA,SAAoBtE,EAASn2N,GAC3B6D,KAAKorN,QAAQyL,WAAW72N,KAAKiwN,mBAAmBqC,GAAUn2N,IAS5D,YAAAy5N,sBAAA,SAAsBtD,EAASn2N,GAC7B6D,KAAKorN,QAAQ0L,iBACX92N,KAAKiwN,mBAAmBqC,IACxB,EACAn2N,IAcJ,YAAA46N,sBAAA,SAAsBC,EAAYviM,EAAMp2B,EAAMm7L,EAAQl3I,GACpD,IAAMxkC,EAAW9d,KAAK02N,qBAAqBM,GAEvCl5M,EAAW,IAGf9d,KAAKorN,QAAQyG,wBAAwB/zM,GACrC9d,KAAKorN,QAAQ0G,oBACXh0M,EACA2W,EACAp2B,GACA,EACAm7L,EACAl3I,KAWJ,YAAA20K,iBAAA,SAAiB9xE,GAGf,IAFA,IAAMq0C,EAwFH,SAAiCr0C,GAEtC,IADA,IAAIq0C,EAAS,EACJl6L,EAAI,EAAGA,EAAI6lJ,EAAW3mJ,OAAQc,IAAK,CAC1C,IAAMy9B,EAAOooH,EAAW7lJ,GACxBk6L,GAAUz8J,EAAKtI,KAAOyiM,EAAoBn6L,EAAK1+B,MAEjD,OAAOm7L,EA9FU29B,CAAwBhyE,GACnC7iG,EAAS,EACJhjD,EAAI,EAAGA,EAAI6lJ,EAAW3mJ,OAAQc,IAAK,CAC1C,IAAMy9B,EAAOooH,EAAW7lJ,GACxBU,KAAK+2N,sBACHh6L,EAAKngC,KACLmgC,EAAKtI,KACLsI,EAAK1+B,MNv7BQ,KMw7Bbm7L,EACAl3I,GAEFA,GAAUvlB,EAAKtI,KAAOyiM,EAAoBn6L,EAAK1+B,QAQnD,YAAA40N,uBAAA,YACE,QAAMjzN,KAAKyzN,cACXzzN,KAAK2zN,gBAAkB,MAOzB,YAAAR,2BAAA,aAaA,YAAArG,cAAA,SAAcr4L,EAAM2iM,EAAUC,GAC5B,IAAMnN,EAAKlqN,KAAKorN,QACVjB,EAAUkN,GAAenN,EAAG4C,gBAI5B8D,EAAiB1G,EAAG4B,KAEpB//J,EAASm+J,EAAG4B,KACZztN,EAAO6rN,EAAGqB,cA4BhB,OA3BArB,EAAGK,YAAYL,EAAGM,WAAYL,GAC1BiN,EACFlN,EAAGiC,WACDjC,EAAGM,WARO,EAUVoG,EACA7kK,EACA1tD,EACA+4N,GAGFlN,EAAGiC,WACDjC,EAAGM,WAjBO,EAmBVoG,EACAn8L,EAAK,GACLA,EAAK,GAnBM,EAqBXs3B,EACA1tD,EACA,MAGJ6rN,EAAGO,cAAcP,EAAGM,WAAYN,EAAGW,mBAAoBX,EAAGG,QAC1DH,EAAGO,cAAcP,EAAGM,WAAYN,EAAGQ,eAAgBR,EAAGS,eACtDT,EAAGO,cAAcP,EAAGM,WAAYN,EAAGU,eAAgBV,EAAGS,eAE/CR,GAEX,EA1xBA,CAA0B32C,EAAA,GAgzB1B,SAAS0jD,EAAoB74N,GAC3B,OAAQA,GACN,KN1iCyB,KM2iCvB,OAAO+iI,WAAWgsF,kBACpB,KNtiC0B,KMuiCxB,OAAO7qL,YAAY6qL,kBACrB,KNliCwB,KMmiCtB,OAAOrD,YAAYqD,kBAErB,QACE,OAAOpD,aAAaoD,mBAI1B,mfCxjCA,eAKE,WAAY5lM,EAAOukJ,GAAnB,MACE,YAAMvkJ,IAAM,KAEN/pB,EAAUsuK,GAAe,UAQ/B,EAAKurD,wBAAyB,UAM9B,EAAKC,cAAgB,KAKrB,EAAKC,eAAiB/5N,EAAQ22N,cAK9B,EAAKhE,UAAY3yN,EAAQ4yN,SAMzB,EAAKrF,OAELxjM,EAAMkmJ,kBAAkB,QAAmB,EAAK+pD,aAAaxgN,KAAK,IAElE,EAAKygN,wBAA0B,EAAKA,wBAAwBzgN,KAAK,GACjE,EAAK0gN,yBAA2B,EAAKA,yBAAyB1gN,KAAK,KAmPvE,OA9RiC,QAmD/B,YAAAygN,wBAAA,SAAwB33N,EAASoxK,GAC/B,IAAM3pJ,EAAQxnB,KAAKihN,WACnB,GAAIz5L,EAAMysJ,YAAY,gBAA6B,CACjD,IAAM,EAAQ,IAAI,IAChB,oBACAh2K,EACAkzK,EACApxK,GAEFynB,EAAM4hG,cAAc,KASxB,YAAAuuG,yBAAA,SAAyB53N,EAASoxK,GAChC,IAAM3pJ,EAAQxnB,KAAKihN,WACnB,GAAIz5L,EAAMysJ,YAAY,iBAA8B,CAClD,IAAM,EAAQ,IAAI,IAChB,qBACAh2K,EACAkzK,EACApxK,GAEFynB,EAAM4hG,cAAc,KAQxB,YAAAzzE,MAAA,SAAMl4C,GACJuC,KAAKowN,UAAY3yN,EAAQ4yN,SACrBrwN,KAAKgrN,QACPhrN,KAAKgrN,OAAOkJ,YAAYl0N,KAAKowN,YAOjC,YAAAqH,aAAA,WACMz3N,KAAKgrN,SACPhrN,KAAKgrN,OAAO99C,iBACLltK,KAAKgrN,SAShB,YAAArM,aAAA,SAAaxtC,GACX,GAAInxK,KAAKihN,WAAWxC,kBAAmB,CAIrC,IAHA,IAAImZ,GAAiB,EACjBC,GAAe,EACfh7L,OAAS,EACJv9B,EAAI,EAAG8sK,EAAK+E,EAAWqB,iBAAiBh0K,OAAQc,EAAI8sK,EAAI9sK,IAAK,CACpE,IAAMkoB,EAAQ2pJ,EAAWqB,iBAAiBlzK,GAAGkoB,MACvCu4J,EAAWv4J,EAAMsrJ,cACvB,GAAMiN,aAAoB+3C,EAA1B,CAIA,IAAMC,EAAiBvwM,EAAMkzL,eAM7B,IALIkd,GAAkBG,IAAmBl7L,KACvCg7L,GAAe,EACfD,GAAiB,GAEnB/6L,EAAYk7L,EACRh4C,IAAa//K,KACf,WAVA43N,GAAiB,EAcrB,IAAMvE,EACJ,OAASliD,EAAW2R,MAAQ,UAAY+0C,EAErC73N,KAAKgrN,QAAWhrN,KAAKgrN,OAAOsJ,sBAAsBjB,KACrDrzN,KAAKy3N,eAELz3N,KAAKgrN,OAAS,IAAI,EAAY,CAC5BoJ,cAAep0N,KAAKw3N,eACpBnH,SAAUrwN,KAAKowN,UACfiD,eAAgBA,IAGdx2L,IACF78B,KAAKgrN,OAAOx8I,YAAY3xC,UAAYA,GAGtC78B,KAAKg4N,sBAIT,OAAOh4N,KAAKi4N,qBAAqB9mD,IAMnC,YAAA6mD,mBAAA,aAQA,YAAAC,qBAAA,SAAqB9mD,GACnB,OAAO,GAMT,YAAAhE,gBAAA,WACEntK,KAAKy3N,eACL,YAAMtqD,gBAAe,YASvB,YAAA+qD,qBAAA,SAAqB75N,EAAM0B,EAASoxK,GAClC,IAAM3pJ,EAAQxnB,KAAKihN,WACnB,GAAIz5L,EAAMysJ,YAAY51K,GAAO,EAC3B,QACE2B,KAAKs3N,uBACL,EACA,EACAnmD,EAAWr1D,YACVq1D,EAAWr1D,WACZ,EACA,GACCq1D,EAAW18I,KAAK,IAGnB,IAAM,EAAQ,IAAI,IAChBp2B,EACA2B,KAAKs3N,uBACLnmD,EACApxK,GAEFynB,EAAM4hG,cAAc,KASxB,YAAAy4F,UAAA,SAAU9hN,EAASoxK,GACjBnxK,KAAKk4N,qBAAqB,cAA2Bn4N,EAASoxK,IAQhE,YAAA6wC,WAAA,SAAWjiN,EAASoxK,GAClBnxK,KAAKk4N,qBAAqB,eAA4Bn4N,EAASoxK,IAWjE,YAAAsD,eAAA,SAAe5xG,EAAOsuG,EAAYS,GAChC,IAAMumD,GAAc,QAClB,CAAChnD,EAAWr1D,WAAY,EAAG,EAAGq1D,EAAWr1D,WAAY,EAAG,GACxDj5C,EAAM1gE,SAEF+nN,EAAKlqN,KAAKgrN,OAAOI,QACvB,IAAKlB,EACH,OAAO,KAET,IACMpI,EADQ9hN,KAAKihN,WACOnyC,YAC1B,GAAIgzC,EAAa,CACf,IAAMsW,GAAmB,QACvBjnD,EAAWM,2BACX5uG,EAAM1gE,SAIR,KAAK,QAAmB2/M,EAAasW,GACnC,OAAO,KAIX,IAAMjzE,EAAa+kE,EAAGmH,uBACtB,IAAKlsE,IAAeA,EAAWkkE,sBAE7B,OAAO,IAAIjoF,WAGb,IAWI31H,EAXE6oC,EAAIrnC,KAAKgsD,MAAMk/J,EAAY,IAC3B5jL,EAAItnC,KAAKgsD,MAAMk/J,EAAY,IAC7B/L,EAAepsN,KAAKu3N,cACxB,IAAKnL,EAAc,CACjB,IAAMiM,EAAcpzN,SAASkS,cAAc,UAC3CkhN,EAAYz8N,MAAQ,EACpBy8N,EAAYx8N,OAAS,EACrBuwN,EAAeiM,EAAYxhL,WAAW,MACtC72C,KAAKu3N,cAAgBnL,EAEvBA,EAAa36G,UAAU,EAAG,EAAG,EAAG,GAEhC,IACE26G,EAAav6G,UAAUq4G,EAAGz2J,OAAQnf,EAAGC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACvD9oC,EAAO2gN,EAAakC,aAAa,EAAG,EAAG,EAAG,GAAG7iN,KAC7C,MAAOtI,GACP,OAAOsI,EAGT,OAAgB,IAAZA,EAAK,GACA,KAEFA,GAEX,EA9RA,CAAiC6uK,EAAA,GA4ajC,4gBCtcag+C,GACS,iBADTA,GAEK,kBAFLA,GAGO,oBAHPA,GAIJ,UAJIA,GAKU,sBALVA,GAMW,uBANXA,GAOS,sBAPTA,GAQO,mBARPA,GASO,mBATPA,GAUI,iBAVJA,GAWC,eAXDA,GAYL,SAGKC,GACI,iBAMXC,GAAwB,CAC5B,CACE57N,KAAM27N,GACN9jM,KAAM,EACNp2B,KRoBiB,OQbfo6N,GAAQ,GAOd,SAASC,GAAU5mK,GACjB,OAAO,GAAK,EAAI,GAAKA,EAAI,IAAM,EAUjC,SAAS6mK,GAAuBC,EAAiBC,EAAa/mK,GACtDA,KAAK8mK,IACTA,EAAgB9mK,GAAK,IAEvB8mK,EAAgB9mK,GAAG1tD,KAAKy0N,GAQ1B,SAASC,GAAgB3nD,EAAYzC,GACnC,IAAMiE,EAAaxB,EAAWqB,iBAAiBrB,EAAWiD,YACtDzB,EAAWjE,SACbA,GAAS,QACPA,GACA,SAAeiE,EAAWjE,OAAQyC,EAAWI,UAAUW,cAG3D,IAAMv2K,EACJg3K,EAAWnrJ,MAAMi3L,kBAEnB,IAAK9iN,EAAOq3K,WAAY,CACtB,IAAM+lD,EAAap9N,EAChB2pN,yBAAyBn0C,EAAWI,UAAUW,YAC9CpD,YACCiqD,IACFrqD,GAAS,QAAgBA,EAAQqqD,IAGrC,OAAOrqD,EAGT,SAASsqD,GAAYr9N,EAAQi1K,GAC3B,MAAO,UAAGj1K,EAAO49K,SAAQ,aAAI,SAAgB3I,IAwrB/C,SAjqBA,YAKE,WAAYqoD,EAAWx7N,GAAvB,MACE,YAAMw7N,EAAW,CACf5I,SAAU5yN,EAAQ4yN,YAClB,KAMF,EAAK6I,gBAAiB,EAOtB,EAAKC,gBAAiB,UAMtB,EAAKC,UH/JA,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GGqKnD,EAAKC,eAAiB,IAAIhpC,EAAA,EAAU,EAAG,EAAG,EAAG,GAM7C,EAAKipC,gBAAiB,SAAgB,EAAG,EAAG,GAM5C,EAAKC,UAAY,CAAC,EAAG,GAMrB,EAAKC,SAKL,EAAKC,cAAgBh8N,EAAQsxN,aAK7B,EAAK2K,gBAAkBj8N,EAAQ2xN,eAmB/B,EAAKuK,SAAW,IAAI,EAAiB1Q,EAAsBC,GAC3D,EAAKyQ,SAAShQ,UAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IAExC,IAAM9sB,OAAkC5+L,IAAtBR,EAAQo/L,UAA0Bp/L,EAAQo/L,UAAY,WAMxE,EAAK+8B,kBAAoB,IAAIC,EAAA,EAASh9B,GAMtC,EAAKi9B,iBAAmBr8N,EAAQs8N,iBAAmB,GAMnD,EAAK99C,YAAc,OA0jBvB,OA/pBqC,QA2GnC,YAAAtmI,MAAA,SAAMl4C,GACJ,YAAMk4C,MAAK,UAAC,CACV06K,SAAU5yN,EAAQ4yN,WAEpBrwN,KAAKy5N,cAAgBh8N,EAAQsxN,aAC7B/uN,KAAK05N,gBAAkBj8N,EAAQ2xN,eAC/BpvN,KAAK85N,iBAAmBr8N,EAAQs8N,iBAAmB,GAE/C/5N,KAAKgrN,SACPhrN,KAAKw5N,SAAWx5N,KAAKgrN,OAAOiL,WAC1Bj2N,KAAK05N,gBACL15N,KAAKy5N,iBAKX,YAAAzB,mBAAA,WACEh4N,KAAKw5N,SAAWx5N,KAAKgrN,OAAOiL,WAC1Bj2N,KAAK05N,gBACL15N,KAAKy5N,eAGPz5N,KAAKgrN,OAAO0B,gBAAgB1sN,KAAK25N,WAQnC,YAAAK,gBAAA,SAAgBlgD,GACd,IAAMm/C,EAAYj5N,KAAKihN,WACjBgZ,EAAYngD,EAAK5K,WACjB0sC,EAAyBqd,EAAUjd,4BACzC,OACEie,GAAalgD,EAAA,UACbkgD,GAAalgD,EAAA,SACZkgD,GAAalgD,EAAA,UAAoB6hC,GAStC,YAAAqc,qBAAA,SAAqB9mD,GACnB,IACMx1K,EADQqE,KAAKihN,WACExC,kBACrB,QAAK9iN,KAID,QAAQm9N,GAAgB3nD,EAAYA,EAAWzC,UAG5C/yK,EAAOuzK,aAAegrD,EAAA,SAS/B,YAAAC,aAAA,SAAahpD,EAAYzC,EAAQ0rD,EAAUxB,GACzC,IAAMrnD,EAAYJ,EAAWI,UACvB0nD,EAAYj5N,KAAKihN,WACjBwG,EAAawR,EAAUxa,kBACvB+H,EAAWiB,EAAWnC,yBAAyB/zC,EAAUW,YACzDq6C,EAAiB9E,EAAW4S,kBAAkBlpD,EAAWr1D,YACzD+mG,EAAS4E,EAAW6S,uBAAuB/oD,EAAUW,YAErDsO,GAAgB,QAAOinC,GACvBjnC,KAAiBrP,EAAWwP,cAChCxP,EAAWwP,YAAYH,GAAiB,IAW1C,IARA,IAAMG,EAAcxP,EAAWwP,YAAYH,GAErC+5C,EAAmBv6N,KAAK45N,kBACxBY,EAAOvtN,KAAK6mB,IAChBsmM,EAAWnB,EAAUld,aACrByK,EAASluB,aACT2gC,EAAU3gC,cAEHxmI,EAAIsoK,EAAUtoK,GAAK0oK,IAAQ1oK,EASlC,IARA,IAAMk+H,EAAYw2B,EAASiU,0BACzB/rD,EACA58G,EACA9xD,KAAKq5N,gBAGD34C,EAAiB8lC,EAASv3C,cAAcn9G,GAErCxd,EAAI07I,EAAUvqI,KAAMnR,GAAK07I,EAAU1qI,OAAQhR,EAClD,IAAK,IAAIC,EAAIy7I,EAAUrqI,KAAMpR,GAAKy7I,EAAUzqI,OAAQhR,EAAG,CACrD,IAAMq8H,GAAY,SAAgB9+G,EAAGxd,EAAGC,EAAGv0C,KAAKs5N,gBAC1C1+K,EAAWo+K,GAAYvR,EAAY72C,GAGrCioD,OAAW,EAGX/+C,OAAI,EAMR,GAJIygD,EAAiBG,YAAY9/K,KAE/Bk/H,GADA++C,EAAc0B,EAAiBrgN,IAAI0gC,IAChBk/H,OAEhB++C,GAAeA,EAAY/+C,KAAKj2K,MAAQ4jN,EAAWluC,SAQtD,GAPAO,EAAO2tC,EAAWtD,QAChBryJ,EACAxd,EACAC,EACA48H,EAAWr1D,WACXy1D,EAAUW,YAEP2mD,EAUH,GAAI74N,KAAKg6N,gBAAgBlgD,GACvB++C,EAAYlM,QAAQ7yC,OACf,CACL,IAAMiV,EAEFjV,EAAKoV,iBAET2pC,EAAYlM,QAAQ59B,QAhBtB8pC,EAAc,IAAI,EAAY,CAC5B/+C,KAAMA,EACNv3H,KAAMikK,EACNwE,OAAQhrN,KAAKgrN,OACbuB,eAAgBA,EAChB1J,OAAQA,IAEV0X,EAAiB/uL,IAAIoP,EAAUi+K,GAcnCF,GAAuBC,EAAiBC,EAAa/mK,GAErD,IAAM6oK,EAAe7gD,EAAKP,SAC1BoH,EAAYg6C,IAAgB,EAExB7gD,EAAK5K,aAAe6K,EAAA,SACjB5I,EAAWiQ,UAAUtI,YAAY6hD,IACpCxpD,EAAWiQ,UAAU/I,QAAQ,CAC3ByB,EACA0G,EACAgmC,EAASW,mBAAmBv2C,GAC5B8P,OAcd,YAAArN,YAAA,SAAYlC,GACVnxK,KAAKi8K,YAAc9K,EACnBnxK,KAAKk5N,gBAAiB,EACtB,IAAMhP,EAAKlqN,KAAKgrN,OAAOI,QACvBprN,KAAK6hN,UAAUqI,EAAI/4C,GAEnB,IAAMI,EAAYJ,EAAWI,UAEvBk2C,EADYznN,KAAKihN,WACMxC,kBACvB+H,EAAWiB,EAAWnC,yBAAyB/zC,EAAUW,YACzDxD,EAASoqD,GAAgB3nD,EAAYA,EAAWzC,QAChD58G,EAAI00J,EAASU,kBACjB31C,EAAU5C,WACV84C,EAAWC,YAMPkR,EAAkB,GAExB,GAAIznD,EAAWgS,WAAY,CACzB,IAAMy3C,EAAUpU,EAASU,kBACvB31C,EAAU0R,eACVwkC,EAAWC,YAEPvkC,EAAa21C,GAAgB3nD,EAAYA,EAAWgS,YAC1DnjL,KAAKm6N,aAAahpD,EAAYgS,EAAYy3C,EAAShC,GAGrD54N,KAAKm6N,aAAahpD,EAAYzC,EAAQ58G,EAAG8mK,GAgBzC,IARA,IAAMiC,EAAc,GAEdngI,GAAM,QAAO16F,MACb+kB,EAAOosJ,EAAWpsJ,KACpB+1M,GAAQ,EAGNC,EAAenC,EAAgB9mK,GAC5BxyD,EAAI,EAAG8sK,EAAK2uD,EAAav8N,OAAQc,EAAI8sK,IAAM9sK,EAAG,CACrD,IAEMsxK,GADAkJ,GADA++C,EAAckC,EAAaz7N,IACRw6K,MACFlJ,UAEvB,GAAIioD,EAAYnpD,OAAQ,CAEtB,GAAc,KADR/5F,EAAQmkG,EAAKwV,SAAS50F,EAAK31E,IAChB,CAEf+0J,EAAK0V,cAAc90F,GACnB,SAEFogI,GAAQ,EAERD,EADMG,GAAe,SAAgBpqD,IACTj7F,EAY9B,GAVA31E,KAAKk5N,gBAAiB,GAGIl5N,KAAKi7N,cAC7BzU,EACA51C,EACA9+G,EAAI,EACJ8mK,GASF,IADA,IAAM/kC,EAAU2yB,EAASluB,aAChB4iC,EAAUppK,EAAI,EAAGopK,GAAWrnC,IACX7zL,KAAKi7N,cAC3BzU,EACA51C,EACAsqD,EACAtC,KAL4CsC,IAclDl7N,KAAKgrN,OAAO4G,WAAW5xN,KAAKw5N,UAC5Bx5N,KAAKgrN,OAAO8J,YAAY3jD,GAAa2pD,GASrC,IAPA,IAAMK,EAAKl/N,OAAOkQ,KAAKysN,GACpB1vN,IAAIgB,QACJi7B,KAAK,OAEFshB,EAAU8qH,EAAUlxH,OAAO,GAC3BqG,EAAU6qH,EAAUlxH,OAAO,GAExB8M,EAAI,EAAG8pI,EAAKkkC,EAAG38N,OAAQ2uD,EAAI8pI,IAAM9pI,EACxC,KAAMiuK,EAAQD,EAAGhuK,GACXuzH,EAAiB8lC,EAASv3C,cAAcmsD,GACxCpU,GAAW,QAAOR,EAASS,YAAYmU,GAAQp7N,KAAKu5N,WACpD8B,EAAa7U,EAAS8U,UAAUF,GAEhCG,GACH90K,EAAU40K,EAAW,KAAOrU,EAAS,GAAKtmC,GACvC86C,GACHH,EAAW,GAAK30K,IAAYsgK,EAAS,GAAKtmC,GAEvC+6C,EAAYlqD,EAAU5C,WAAa+R,EAEnC19K,EAAQ01N,GAAU0C,GAClB,EAAexC,EAAgBwC,GACrC,IAAS97N,EAAI,EAAG8sK,EAAK,EAAa5tK,OAAQc,EAAI8sK,IAAM9sK,EAElD,IADMu5N,EAAc,EAAav5N,IAChBowK,OAAjB,CAIMkB,GADAkJ,EAAO++C,EAAY/+C,MACFlJ,UADvB,IAAMkJ,EAwDAnkG,EAtDAqlJ,GAAe,SAAgBpqD,GAE/B8qD,EAAc9qD,EAAU,GACxB+qD,EAAc/qD,EAAU,IAE9B,QACE5wK,KAAKm5N,eACL,EACA,EACA,GAAMhoD,EAAW18I,KAAK,GAAKgnM,EAAazU,EAAS,KAChD,GAAM71C,EAAW18I,KAAK,GAAKgnM,EAAazU,EAAS,IAClDz1C,EAAU3tH,WACR23K,EAAUG,KACVF,EAAUG,IAGd37N,KAAKgrN,OAAO4K,sBACV0C,GACA,EAAkBt4N,KAAKo5N,UAAWp5N,KAAKm5N,iBAGzCn5N,KAAKgrN,OAAO4E,WAAWiJ,EAAYv/B,QACnCt5L,KAAKgrN,OAAO4E,WAAW5vN,KAAK25N,UAC5B35N,KAAKgrN,OAAOiM,iBAAiBuB,IAG7B,IADA,IAAInG,EAAc,EACXA,EAAcwG,EAAYxM,SAAS7tN,QAAQ,CAChD,IAAMo9N,EAAkB,UAAYvJ,EAC9BwJ,EAAc,UAAGvD,GAA2B,YAAIjG,EAAW,KACjEnI,EAAGgH,cAAchH,EAAG0R,IACpB1R,EAAGK,YAAYL,EAAGM,WAAYqO,EAAYxM,SAASgG,IACnDnI,EAAG8H,UACDhyN,KAAKgrN,OAAOiF,mBAAmB4L,GAC/BxJ,KAEAA,EAGJ,IACE,IAAIyJ,EAAe,EACnBA,EAAe97N,KAAK85N,iBAAiBt7N,SACnCs9N,EACF,CACA,IAAMC,EAAiB/7N,KAAK85N,iBAAiBgC,GAC7C5R,EAAGgH,cAAchH,EAAG,UAAYmI,IAChC,IAAMlI,EAAU4R,EAAe1G,WAAWnL,GAC1CA,EAAGK,YAAYL,EAAGM,WAAYL,GAC9BD,EAAG8H,UACDhyN,KAAKgrN,OAAOiF,mBAAmB8L,EAAen/N,MAC9Cy1N,KAEAA,GAGE18I,EACJqlJ,KAAgBH,EAAcA,EAAYG,GAAgB,GAEhD,IACV7pD,EAAWh8E,SAAU,GAGvBn1F,KAAKgrN,OAAO6K,qBAAqByC,GAA2B3iJ,GAC5D31E,KAAKgrN,OAAO6K,qBAAqByC,GAAgBt1N,GACjDhD,KAAKgrN,OAAO6K,qBACVyC,GACAtR,EAAS,IAEXhnN,KAAKgrN,OAAO6K,qBACVyC,GACAtR,EAAS,IAEXhnN,KAAKgrN,OAAO6K,qBACVyC,GACA53C,GAEF1gL,KAAKgrN,OAAO6K,qBACVyC,GACA+C,EAAW,GAAKK,EAAc1U,EAAS,GAAKtmC,GAE9C1gL,KAAKgrN,OAAO6K,qBACVyC,GACA+C,EAAW,GAAKM,EAAc3U,EAAS,GAAKtmC,GAE9C1gL,KAAKgrN,OAAO4L,oBAAoB0B,GAAwB5pD,GACxD1uK,KAAKgrN,OAAO6K,qBACVyC,GACA/mD,EAAU5C,YAEZ3uK,KAAKgrN,OAAO6K,qBAAqByC,GAAe/mD,EAAU+kB,MAE1Dt2L,KAAKgrN,OAAOsK,aAAa,EAAGt1N,KAAK25N,SAASv5C,YAI9CpgL,KAAKgrN,OAAOyK,aACVtkD,EACAnxK,KAAK03N,wBACL13N,KAAK23N,0BAMP,IAHA,IAAMlkK,EAASzzD,KAAKgrN,OAAOx8I,YAErB+rJ,EAAmBv6N,KAAK45N,kBACvBW,EAAiB7qC,kBAAkB,CACxC,IAAMmpC,GAAAA,EAAc0B,EAAiBl4N,OACzB6qK,UAiBd,OAHAiE,EAAWoC,oBAAoBnvK,MAJJ,SAAU8E,EAAKioK,GACxCs2C,EAAWh4B,YAAYte,EAAWI,UAAUW,WAAYumD,OAK1Dz4N,KAAKgiN,WAAWkI,EAAI/4C,GACb19G,GAOT,YAAAwoJ,QAAA,SAAQp5I,GAEN,IADW7iE,KAAKgrN,OAAOI,QAErB,OAAO,KAGT,IAAMj6C,EAAanxK,KAAKi8K,YACxB,IAAK9K,EACH,OAAO,KAGT,IAAM3pJ,EAAQxnB,KAAKihN,WACbtvC,GAAa,QACjBR,EAAWM,2BACX5uG,EAAM1gE,SAGFovK,EAAYJ,EAAWI,UACvBuwC,EAAct6L,EAAMsnJ,YAC1B,GAAIgzC,KAEC,SACC,SAAeA,EAAavwC,EAAUW,YACtCP,GAGF,OAAO,KAIX,IAAMh2K,EAAS6rB,EAAMi3L,kBACf+H,EAAW7qN,EAAO2pN,yBAAyB/zC,EAAUW,YAC3D,IAAKv2K,EAAOq3K,WAAY,CACtB,IAAM+lD,EAAavS,EAAS13C,YAC5B,GAAIiqD,KACG,QAAmBA,EAAYpnD,GAClC,OAAO,KAMb,IADA,IAAM4oD,EAAmBv6N,KAAK45N,kBAExB9nK,EAAI00J,EAASU,kBAAkB31C,EAAU5C,YAC7C78G,GAAK00J,EAASluB,eACZxmI,EACF,CACA,IAAM8+G,EAAY41C,EAASwV,yBAAyBrqD,EAAY7/G,GAC1DlX,EAAWo+K,GAAYr9N,EAAQi1K,GACrC,GAAK2pD,EAAiBG,YAAY9/K,GAAlC,CAGA,IAAMi+K,EAAc0B,EAAiBrgN,IAAI0gC,GACzC,GAAKi+K,EAAYnpD,OAAjB,CAGA,IAAM2rD,EAAa7U,EAAS8U,UAAUxpK,GAChCk1J,GAAW,QAAOR,EAASS,YAAYn1J,IACvC4uH,EAAiB8lC,EAASv3C,cAAcn9G,GAExCwyB,GACHqtF,EAAW,GAAK0pD,EAAW,IAAM36C,EAClC9P,EAAU,GAAKo2C,EAAS,GAEpBjjI,GACHs3I,EAAW,GAAK1pD,EAAW,IAAM+O,EAClC9P,EAAU,GAAKo2C,EAAS,GAE1B,OAAO6R,EAAY3K,aAAa5pI,EAAKP,KAEvC,OAAO,MAcT,YAAAk3I,cAAA,SAAczU,EAAU51C,EAAWqrD,EAAMrD,GACvC,IAAM5oC,EAAYw2B,EAAS0V,6BACzBtrD,EACAqrD,EACAj8N,KAAKq5N,gBAGP,IAAKrpC,EACH,OAAO,EAMT,IAHA,IAAImsC,GAAU,EACR5B,EAAmBv6N,KAAK45N,kBACxBj+N,EAASqE,KAAKihN,WAAWxC,kBACtBnqK,EAAI07I,EAAUvqI,KAAMnR,GAAK07I,EAAU1qI,OAAQhR,EAClD,IAAK,IAAIC,EAAIy7I,EAAUrqI,KAAMpR,GAAKy7I,EAAUzqI,OAAQhR,EAAG,CACrD,IAAMqG,EAAWo+K,GAAYr9N,EAAQ,CAACsgO,EAAM3nL,EAAGC,IAC3Cm7H,GAAS,EACb,GAAI6qD,EAAiBG,YAAY9/K,GAAW,CAC1C,IAAMi+K,EAAc0B,EAAiBrgN,IAAI0gC,GACrCi+K,EAAYnpD,SACdipD,GAAuBC,EAAiBC,EAAaoD,GACrDvsD,GAAS,GAGRA,IACHysD,GAAU,GAIhB,OAAOA,GAGT,YAAA1E,aAAA,WACE,GAAIz3N,KAAKgrN,OAAQ,CACf,IAAMuP,EAAmBv6N,KAAK45N,kBAC9BW,EAAiB/3N,SAAQ,SAACq2N,GAAgB,OAAAA,EAAY3rD,aACtDqtD,EAAiB3vM,QAGnB,YAAM6sM,aAAY,YAMpB,YAAAtqD,gBAAA,WACE,IAAM69C,EAAShrN,KAAKgrN,OAChBA,IACSA,EAAOI,QACfgR,cAAcp8N,KAAKw5N,iBACfx5N,KAAKw5N,SAEZxO,EAAOgD,aAAahuN,KAAK25N,WAG3B,YAAMxsD,gBAAe,kBAEdntK,KAAK25N,gBACL35N,KAAK45N,yBACL55N,KAAKi8K,aAEhB,EA/pBA,CAAqC,IC3FrC,GA7CA,WAKE,WAAYr/K,EAAM6O,GAChBzL,KAAKpD,KAAOA,EACZoD,KAAKyL,KAAOA,EAMZzL,KAAKq8N,SAAW,KA8BpB,OAvBE,YAAAhH,WAAA,SAAWnL,GACT,IAAKlqN,KAAKq8N,SAAU,CAClB,IAAMlS,EAAUD,EAAG4C,gBACnB5C,EAAGK,YAAYL,EAAGM,WAAYL,GAC9BD,EAAGO,cAAcP,EAAGM,WAAYN,EAAGQ,eAAgBR,EAAGS,eACtDT,EAAGO,cAAcP,EAAGM,WAAYN,EAAGU,eAAgBV,EAAGS,eACtDT,EAAGO,cAAcP,EAAGM,WAAYN,EAAGW,mBAAoBX,EAAGI,SAC1DJ,EAAGO,cAAcP,EAAGM,WAAYN,EAAGY,mBAAoBZ,EAAGI,SAC1DJ,EAAGiC,WACDjC,EAAGM,WACH,EACAN,EAAG4B,KACH9rN,KAAKyL,KAAKjN,OAAS,EACnB,EACA,EACA0rN,EAAG4B,KACH5B,EAAGqB,cACHvrN,KAAKyL,MAEPzL,KAAKq8N,SAAWlS,EAElB,OAAOnqN,KAAKq8N,UAEhB,EA3CA,4BCqGaC,GAMN,GAkBMC,GAAY,GAQlB,SAASC,GAAargO,GAC3B,GAAqB,iBAAVA,EACT,OAjCM,EAmCR,GAAqB,kBAAVA,EACT,OAjCO,EAmCT,GAAqB,iBAAVA,EACT,OAAI,SAAcA,GACTmgO,EAvCH,EA2CR,IAAKh8N,MAAMiF,QAAQpJ,GACjB,MAAM,IAAI0E,MAAM,gCAAyB8C,KAAKC,UAAUzH,KAE1D,IAAMsgO,EAAmC,EAIzC,GAHoBA,EAASx2N,OAAM,SAAUy8B,GAC3C,MAAoB,iBAANA,KAGd,OAAwB,IAApB+5L,EAASj+N,QAAoC,IAApBi+N,EAASj+N,OAC7B89N,GAjDG,GAqDd,GAA2B,iBAAhBG,EAAS,GAClB,MAAM,IAAI57N,MACR,wDAAiD8C,KAAKC,UACpD64N,KAIN,IAAMC,EAAWH,GAAUE,EAAS,IACpC,QAAiBx+N,IAAby+N,EACF,MAAM,IAAI77N,MACR,4CAAqC8C,KAAKC,UAAU64N,KAGxD,OAAOC,EAASC,cAAcF,EAASt6N,MAAM,IA6BxC,SAASy6N,GAAal6L,GAC3B,IAAMjH,EAAIiH,EAAE5iC,WACZ,OAA2B,IAApB27B,EAAEryB,QAAQ,KAAcqyB,EAAI,KAAOA,EAQrC,SAASohM,GAAY1tK,GAC1B,GAAIA,EAAM3wD,OAAS,GAAK2wD,EAAM3wD,OAAS,EACrC,MAAM,IAAIqC,MACR,kEAGJ,MAAO,aAAMsuD,EAAM3wD,OAAM,YAAI2wD,EAAMjmD,IAAI0zN,IAAcx6N,KAAK,MAAK,KA4B1D,SAAS06N,GAA0B/8N,EAASuiE,GAMjD,YAL0CrkE,IAAtC8B,EAAQg9N,kBAAkBz6J,KAC5BviE,EAAQg9N,kBAAkBz6J,GAAUrmE,OAAOkQ,KACzCpM,EAAQg9N,mBACRv+N,QAEGuB,EAAQg9N,kBAAkBz6J,GAsB5B,SAAS06J,GAAiBj9N,EAAS5D,EAAO8gO,GAE/C,GAAI38N,MAAMiF,QAAQpJ,IAA8B,iBAAbA,EAAM,GAAiB,CACxD,IAAMugO,EAAWH,GAAUpgO,EAAM,IACjC,QAAiB8B,IAAby+N,EACF,MAAM,IAAI77N,MACR,4CAAqC8C,KAAKC,UAAUzH,KAGxD,OAAOugO,EAASQ,OAAOn9N,EAAS5D,EAAMgG,MAAM,GAAI86N,GAGlD,IAAME,EAAYX,GAAargO,GAC/B,IAxLQ,EAwLHghO,GAAiC,EACpC,OAAOP,GAAmC,GAG5C,IAzLS,EAyLJO,GAAkC,EACrC,OAAOhhO,EAAM2D,WAGf,IA/LQ,EAgMLq9N,GAAiC,SACpBl/N,IAAbg/N,GAjMK,GAiMqBA,GAE3B,OArCG,SAAsBl9N,EAASuiE,GACpC,OAAOs6J,GAAaE,GAA0B/8N,EAASuiE,IAoC9C86J,CAAar9N,EAAS5D,EAAM2D,YAGrC,IArMO,EAsMJq9N,GAAgC,SACnBl/N,IAAbg/N,GAvMI,GAuMsBA,GAE3B,OA9EG,SAAqB/wL,GAC1B,IAAMijB,GAAQ,SAAQjjB,GAAO/pC,QAI7B,OAHIgtD,EAAM3wD,OAAS,GACjB2wD,EAAM/qD,KAAK,GAENy4N,GACL1tK,EAAMjmD,KAAI,SAAUy5B,EAAGrjC,GACrB,OAAOA,EAAI,EAAIqjC,EAAI,IAAMA,MAuEpB06L,CAAkD,GAG3D,IA1Mc,GA0MTF,GAAuC,EAC1C,OAAON,GAAyC,GAGlD,MAAM,IAAIh8N,MAAM,gCAAyB1E,EAAK,2BAAmB8gO,EAAQ,MAG3E,SAASK,GAAanhO,GACpB,KAtNQ,EAsNFqgO,GAAargO,IACjB,MAAM,IAAI0E,MACR,4CAAqC8C,KAAKC,UAAUzH,GAAM,aAIhE,SAASohO,GAAcn/N,GACrB,IAAK,IAAIkB,EAAI,EAAGA,EAAIlB,EAAOI,OAAQc,IACjCg+N,GAAal/N,EAAOkB,IAGxB,SAASk+N,GAAarhO,GACpB,KAjOQ,EAiOFqgO,GAAargO,IACjB,MAAM,IAAI0E,MACR,2CAAoC8C,KAAKC,UAAUzH,GAAM,aAI/D,SAASshO,GAActhO,GACrB,KAtOS,EAsOHqgO,GAAargO,IACjB,MAAM,IAAI0E,MACR,4CAAqC8C,KAAKC,UAAUzH,GAAM,aAIhE,SAASuhO,GAAgBx9N,EAAM62C,GAC7B,GAAI72C,EAAK1B,SAAWu4C,EAClB,MAAM,IAAIl2C,MACR,kBAAWk2C,EAAK,yCAAiC72C,EAAK1B,OAAM,aAIlE,SAASm/N,GAAmBz9N,EAAM62C,GAChC,GAAI72C,EAAK1B,OAASu4C,EAChB,MAAM,IAAIl2C,MACR,mBAAYk2C,EAAK,yCAAiC72C,EAAK1B,OAAM,aAInE,SAASo/N,GAAmB19N,EAAM62C,GAChC,GAAI72C,EAAK1B,OAASu4C,EAChB,MAAM,IAAIl2C,MACR,kBAAWk2C,EAAK,yCAAiC72C,EAAK1B,OAAM,aAIlE,SAASq/N,GAAe39N,GACtB,GAAIA,EAAK1B,OAAS,GAAM,EACtB,MAAM,IAAIqC,MACR,wDAAiDX,EAAI,aAW3D,SAAS49N,GAAyB59N,EAAM69N,GACtC,GArM2BZ,EAqMTY,GApMX,SAAKZ,GAAa,GAAM,EAqM7B,MAAM,IAAIt8N,MACR,uEAAgE8C,KAAKC,UACnE1D,KAxMD,IAAsBi9N,EAmOtB,SAASa,GAAuBC,GACrC,MAAO,SAAWA,EAtBpB1B,GAAe,IAAI,CACjBI,cAAe,SAAUz8N,GACvB,OAAOo8N,IAETY,OAAQ,SAAUn9N,EAASG,GACzBw9N,GAAgBx9N,EAAM,GACtBs9N,GAAat9N,EAAK,IAClB,IAAM/D,EAAQ+D,EAAK,GAAGJ,WAKtB,OAJ2C,IAAvCC,EAAQolJ,WAAW/7I,QAAQjN,IAC7B4D,EAAQolJ,WAAW/gJ,KAAKjI,IAEX4D,EAAQm+N,iBAAmB,KAAO,MACjC/hO,IAapBogO,GAAe,IAAI,CACjBI,cAAe,SAAUz8N,GACvB,OAAOo8N,IAETY,OAAQ,SAAUn9N,EAASG,GACzBw9N,GAAgBx9N,EAAM,GACtBs9N,GAAat9N,EAAK,IAClB,IAAM/D,EAAQ+D,EAAK,GAAGJ,WAItB,OAH0C,IAAtCC,EAAQo+N,UAAU/0N,QAAQjN,IAC5B4D,EAAQo+N,UAAU/5N,KAAKjI,GAElB6hO,GAAuB7hO,KAI3B,IAAMiiO,GAAwB,oBAGrC7B,GAAmB,QAAI,CACrBI,cAAe,SAAUz8N,GACvB,OAvUK,GAyUPg9N,OAAQ,SAAUn9N,EAASG,GACzBw9N,GAAgBx9N,EAAM,GACtBo9N,GAAap9N,EAAK,IAClB,IAAMsrB,EAAQwxM,GAAiBj9N,EAASG,EAAK,IACvCiuC,EAASjuC,EAAK,GACpB,IAAKI,MAAMiF,QAAQ4oC,GACjB,MAAM,IAAIttC,MAAM,mDAIlB,IAFA,IAAMw9N,EAAYlwL,EAAO3vC,OACnB8/N,EAAU,IAAIl9F,WAAuB,EAAZi9F,GACtB/+N,EAAI,EAAGA,EAAI++N,EAAW/+N,IAAK,CAClC,IAAMi/N,EAAYpwL,EAAO7uC,GAIrB4sC,OAAK,EACT,GAAyB,iBAAdqyL,EACTryL,GAAQ,SAAWqyL,OACd,CACL,IAAKj+N,MAAMiF,QAAQg5N,GACjB,MAAM,IAAI19N,MACR,wEAGJ,IAAM,EAAS09N,EAAU//N,OACzB,GAAe,IAAX,EACF0tC,EAAQqyL,MACH,CACL,GAAe,IAAX,EACF,MAAM,IAAI19N,MACR,4DAAqD,IAGzDqrC,EAAQ,CAACqyL,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAI,IAGvD,IAAMj8K,EAAa,EAAJhjD,EACfg/N,EAAQh8K,GAAUpW,EAAM,GACxBoyL,EAAQh8K,EAAS,GAAKpW,EAAM,GAC5BoyL,EAAQh8K,EAAS,GAAKpW,EAAM,GAC5BoyL,EAAQh8K,EAAS,GAAgB,IAAXpW,EAAM,GAEzBnsC,EAAQg6N,kBACXh6N,EAAQg6N,gBAAkB,IAE5B,IAAMyE,EAAc,UAAGJ,GAAqB,YAAIr+N,EAAQg6N,gBAAgBv7N,OAAM,KACxEu9N,EAAiB,IAAI,GAAeyC,EAAaF,GAEvD,OADAv+N,EAAQg6N,gBAAgB31N,KAAK23N,GACtB,oBAAayC,EAAW,mBAAWhzM,EAAK,qBAAa6yM,EAAS,eAIzE,IAAMI,GAAsB,eAuT5B,SAASC,GAAiBhC,GACxB,MAAO,CACLC,cAAe,SAAUz8N,GACvB,OAtrBK,GAwrBPg9N,OAAQ,SAAUn9N,EAASG,GACzBw9N,GAAgBx9N,EAAM,GAItB,IADA,IAAI7B,EAAOi+N,GACFh9N,EAAI,EAAGA,EAAIY,EAAK1B,OAAQc,IAC/BjB,GAAQm+N,GAAat8N,EAAKZ,IAE5B,GA7rBE,IA6rBEjB,EACF,MAAM,IAAIwC,MACR,0DAAmD8C,KAAKC,UACtD1D,GACD,aAQL,OAFA7B,IAAQ,EAED,WAAI2+N,GACTj9N,EACAG,EAAK,GACL7B,GACD,YAAIq+N,EAAQ,YAAIM,GAAiBj9N,EAASG,EAAK,GAAI7B,GAAK,OAoB/D,SAASsgO,GAAoBjC,GAC3B,MAAO,CACLC,cAAe,SAAUz8N,GACvB,OAvuBK,GAyuBPg9N,OAAQ,SAAUn9N,EAASG,GACzBy9N,GAAmBz9N,EAAM,GACzB,IAAK,IAAIZ,EAAI,EAAGA,EAAIY,EAAK1B,OAAQc,IAC/Bm+N,GAAcv9N,EAAKZ,IAErB,IAAI6H,EAAS,GAKb,OAJAA,EAASjH,EACNgJ,KAAI,SAACkT,GAAQ,OAAA4gN,GAAiBj9N,EAASqc,MACvCha,KAAK,WAAIs6N,EAAQ,MACX,WAAIv1N,EAAM,OApXzBo1N,GAAgB,KAAI,CAClBI,cAAe,SAAUz8N,GACvB,OAnYM,GAqYRg9N,OAAQ,SAAUn9N,EAASG,GACzBy9N,GAAmBz9N,EAAM,GACzB09N,GAAmB19N,EAAM,GACzB,IAAM0+N,EAAO1+N,EAAK,GAElB,KAAMu+N,MAAuB1+N,EAAQ8+N,WAAY,CAG/C,IAFA,IAAIC,EAAW,GACT7T,EAAYlrN,EAAQkrN,WAAa,EAC9B3rN,EAAI,EAAGA,EAAI2rN,EAAW3rN,IAAK,CAClC,IAAMy/N,EAAa9xN,KAAKwjB,MAAMnxB,EAAI,GAC9BwuN,EAAYxuN,EAAI,EAChBwuN,IAAc7C,EAAY,GAAmB,IAAd6C,IAEjCA,EAAY,GAEd,IAAMkR,EAAc,UAAG1G,GAA2B,YAAIyG,EAAU,KAChED,GAAY,kCACIx/N,EAAI,EAAC,+CACE0/N,EAAW,4CAAoClR,EAAS,6BAKjF/tN,EAAQ8+N,UAA6B,aAAI,mHAEdvG,GAA4B,6CAC5BA,GAA6B,wBAClDwG,EAAQ,uBAKhB,IAAMG,EAAiBjC,GAAiBj9N,EAAS6+N,GAC3CM,EAAoBlC,GAAiBj9N,EAASG,EAAK,IAAM,GACzDi/N,EAAoBnC,GAAiBj9N,EAASG,EAAK,IAAM,GAC/D,MAAO,UAAGu+N,GAAmB,YAAIQ,EAAc,aAAKC,EAAiB,aAAKC,EAAiB,OAI/F5C,GAAgB,KAAI,CAClBI,cAAe,SAAUz8N,GACvB,OA9aM,GAgbRg9N,OAAQ,SAAUn9N,EAASG,GAEzB,OADAw9N,GAAgBx9N,EAAM,GACf,WAIXq8N,GAAgB,KAAI,CAClBI,cAAe,SAAUz8N,GACvB,OAxbM,GA0bRg9N,OAAQ,SAAUn9N,EAASG,GAEzB,OADAw9N,GAAgBx9N,EAAM,GACf,WAIXq8N,GAAsB,WAAI,CACxBI,cAAe,SAAUz8N,GACvB,OAlcM,GAocRg9N,OAAQ,SAAUn9N,EAASG,GAEzB,OADAw9N,GAAgBx9N,EAAM,GACf,iBAIXq8N,GAAU,KAAO,CACfI,cAAe,SAAUz8N,GACvB,OA5cM,GA8cRg9N,OAAQ,SAAUn9N,EAASG,GAGzB,OAFAw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACP,WAAI88N,GAAiBj9N,EAASG,EAAK,IAAG,cAAM88N,GACjDj9N,EACAG,EAAK,IACN,OAILq8N,GAAU,KAAO,CACfI,cAAe,SAAUz8N,GACvB,OA1dM,GA4dRg9N,OAAQ,SAAUn9N,EAASG,GAGzB,OAFAw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACP,WAAI88N,GAAiBj9N,EAASG,EAAK,IAAG,cAAM88N,GACjDj9N,EACAG,EAAK,IACN,OAILq8N,GAAU,KAAO,CACfI,cAAe,SAAUz8N,GACvB,OAxeM,GA0eRg9N,OAAQ,SAAUn9N,EAASG,GAGzB,OAFAw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACP,WAAI88N,GAAiBj9N,EAASG,EAAK,IAAG,cAAM88N,GACjDj9N,EACAG,EAAK,IACN,OAILq8N,GAAU,KAAO,CACfI,cAAe,SAAUz8N,GACvB,OAtfM,GAwfRg9N,OAAQ,SAAUn9N,EAASG,GAGzB,OAFAw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACP,WAAI88N,GAAiBj9N,EAASG,EAAK,IAAG,cAAM88N,GACjDj9N,EACAG,EAAK,IACN,OAILq8N,GAAiB,MAAI,CACnBI,cAAe,SAAUz8N,GACvB,OApgBM,GAsgBRg9N,OAAQ,SAAUn9N,EAASG,GACzBw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACd,IAAM4qB,EAAMkyM,GAAiBj9N,EAASG,EAAK,IACrC4zB,EAAMkpM,GAAiBj9N,EAASG,EAAK,IAC3C,MAAO,gBAAS88N,GAAiBj9N,EAASG,EAAK,IAAG,aAAK4qB,EAAG,aAAKgJ,EAAG,OAItEyoM,GAAU,KAAO,CACfI,cAAe,SAAUz8N,GACvB,OAjhBM,GAmhBRg9N,OAAQ,SAAUn9N,EAASG,GAGzB,OAFAw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACP,cAAO88N,GAAiBj9N,EAASG,EAAK,IAAG,aAAK88N,GACnDj9N,EACAG,EAAK,IACN,OAILq8N,GAAU,KAAO,CACfI,cAAe,SAAUz8N,GACvB,OA/hBM,GAiiBRg9N,OAAQ,SAAUn9N,EAASG,GAGzB,OAFAw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACP,cAAO88N,GAAiBj9N,EAASG,EAAK,IAAG,aAAK88N,GACnDj9N,EACAG,EAAK,IACN,OAILq8N,GAAe,IAAI,CACjBI,cAAe,SAAUz8N,GACvB,OA7iBM,GA+iBRg9N,OAAQ,SAAUn9N,EAASG,GAGzB,OAFAw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACP,cAAO88N,GAAiBj9N,EAASG,EAAK,IAAG,OAIpDq8N,GAAiB,MAAI,CACnBI,cAAe,SAAUz8N,GACvB,OAxjBM,GA0jBRg9N,OAAQ,SAAUn9N,EAASG,GAGzB,OAFAw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACP,gBAAS88N,GAAiBj9N,EAASG,EAAK,IAAG,OAItDq8N,GAAiB,MAAI,CACnBI,cAAe,SAAUz8N,GACvB,OAnkBM,GAqkBRg9N,OAAQ,SAAUn9N,EAASG,GAGzB,OAFAw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACP,gBAAS88N,GAAiBj9N,EAASG,EAAK,IAAG,aAItDq8N,GAAgB,KAAI,CAClBI,cAAe,SAAUz8N,GACvB,OA9kBM,GAglBRg9N,OAAQ,SAAUn9N,EAASG,GAGzB,OAFAw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACP,eAAQ88N,GAAiBj9N,EAASG,EAAK,IAAG,OAIrDq8N,GAAe,IAAI,CACjBI,cAAe,SAAUz8N,GACvB,OAzlBM,GA2lBRg9N,OAAQ,SAAUn9N,EAASG,GAGzB,OAFAw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACP,cAAO88N,GAAiBj9N,EAASG,EAAK,IAAG,OAIpDq8N,GAAe,IAAI,CACjBI,cAAe,SAAUz8N,GACvB,OApmBM,GAsmBRg9N,OAAQ,SAAUn9N,EAASG,GAGzB,OAFAw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACP,cAAO88N,GAAiBj9N,EAASG,EAAK,IAAG,OAIpDq8N,GAAgB,KAAI,CAClBI,cAAe,SAAUz8N,GACvB,OA/mBM,GAinBRg9N,OAAQ,SAAUn9N,EAASG,GAIzB,OAHAy9N,GAAmBz9N,EAAM,GACzB09N,GAAmB19N,EAAM,GACzBq9N,GAAcr9N,GACS,IAAhBA,EAAK1B,OACR,eAAQw+N,GAAiBj9N,EAASG,EAAK,IAAG,aAAK88N,GAC7Cj9N,EACAG,EAAK,IACN,KACD,eAAQ88N,GAAiBj9N,EAASG,EAAK,IAAG,OAIlDq8N,GAAU,KAAO,CACfI,cAAe,SAAUz8N,GACvB,OA7nBO,GA+nBTg9N,OAAQ,SAAUn9N,EAASG,GAGzB,OAFAw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACP,WAAI88N,GAAiBj9N,EAASG,EAAK,IAAG,cAAM88N,GACjDj9N,EACAG,EAAK,IACN,OAILq8N,GAAU,MAAQ,CAChBI,cAAe,SAAUz8N,GACvB,OA3oBO,GA6oBTg9N,OAAQ,SAAUn9N,EAASG,GAGzB,OAFAw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACP,WAAI88N,GAAiBj9N,EAASG,EAAK,IAAG,eAAO88N,GAClDj9N,EACAG,EAAK,IACN,OAILq8N,GAAU,KAAO,CACfI,cAAe,SAAUz8N,GACvB,OAzpBO,GA2pBTg9N,OAAQ,SAAUn9N,EAASG,GAGzB,OAFAw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACP,WAAI88N,GAAiBj9N,EAASG,EAAK,IAAG,cAAM88N,GACjDj9N,EACAG,EAAK,IACN,OAILq8N,GAAU,MAAQ,CAChBI,cAAe,SAAUz8N,GACvB,OAvqBO,GAyqBTg9N,OAAQ,SAAUn9N,EAASG,GAGzB,OAFAw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACP,WAAI88N,GAAiBj9N,EAASG,EAAK,IAAG,eAAO88N,GAClDj9N,EACAG,EAAK,IACN,OAsCLq8N,GAAU,MAAQmC,GAAiB,MAEnCnC,GAAU,MAAQmC,GAAiB,MAEnCnC,GAAU,KAAO,CACfI,cAAe,SAAUz8N,GACvB,OA3tBO,GA6tBTg9N,OAAQ,SAAUn9N,EAASG,GAGzB,OAFAw9N,GAAgBx9N,EAAM,GACtBu9N,GAAcv9N,EAAK,IACZ,YAAK88N,GAAiBj9N,EAASG,EAAK,IAAG,OAwBlDq8N,GAAe,IAAIoC,GAAoB,MAEvCpC,GAAe,IAAIoC,GAAoB,MAEvCpC,GAAmB,QAAI,CACrBI,cAAe,SAAUz8N,GACvB,OA9vBO,GAgwBTg9N,OAAQ,SAAUn9N,EAASG,GACzBw9N,GAAgBx9N,EAAM,GACtBq9N,GAAcr9N,GACd,IAAM4qB,EAAMkyM,GAAiBj9N,EAASG,EAAK,IACrC4zB,EAAMkpM,GAAiBj9N,EAASG,EAAK,IACrC/D,EAAQ6gO,GAAiBj9N,EAASG,EAAK,IAC7C,MAAO,WAAI/D,EAAK,eAAO2uB,EAAG,eAAO3uB,EAAK,eAAO23B,EAAG,OAIpDyoM,GAAiB,MAAI,CACnBI,cAAe,SAAUz8N,GACvB,OA3wBY,IA6wBdg9N,OAAQ,SAAUn9N,EAASG,GACzBy9N,GAAmBz9N,EAAM,GACzB09N,GAAmB19N,EAAM,GACzBq9N,GAAcr9N,GACd,IAAMk/N,EAAal/N,EAAKgJ,KAAI,SAAUq8B,GACpC,OAAOy3L,GAAiBj9N,EAASwlC,EAtxB7B,MAwxBN,MAAO,aAAMrlC,EAAK1B,OAAM,YAAI4gO,EAAWh9N,KAAK,MAAK,OAIrDm6N,GAAiB,MAAI,CACnBI,cAAe,SAAUz8N,GACvB,OA5xBK,GA8xBPg9N,OAAQ,SAAUn9N,EAASG,GACzBy9N,GAAmBz9N,EAAM,GACzB09N,GAAmB19N,EAAM,GACzBq9N,GAAcr9N,GACd,IAAMivD,EAAqC,EACvB,IAAhBjvD,EAAK1B,QACP2wD,EAAM/qD,KAAK,GAEb,IAAMg7N,EAAal/N,EAAKgJ,KAAI,SAAUq8B,EAAKjmC,GACzC,OACE09N,GAAiBj9N,EAASwlC,EA1yBxB,IA2yBDjmC,EAAI,EAAI,WAAa,OAG1B,MAAO,aAAMY,EAAK1B,OAAM,YAAI4gO,EAAWh9N,KAAK,MAAK,OAIrDm6N,GAAuB,YAAI,CACzBI,cAAe,SAAUz8N,GAEvB,IADA,IAAI7B,EAAOi+N,EACFh9N,EAAI,EAAGA,EAAIY,EAAK1B,OAAQc,GAAK,EACpCjB,GAAcm+N,GAAat8N,EAAKZ,IAElC,OAAOjB,GAET6+N,OAAQ,SAAUn9N,EAASG,EAAMm/N,GAC/BxB,GAAe39N,GACfy9N,GAAmBz9N,EAAM,GAGzB,IACIo/N,EADEjhO,EAAO6B,EAAK,GAElB,OAAQ7B,EAAK,IACX,IAAK,SACHihO,EAAgB,EAChB,MACF,IAAK,cACHA,EAAgBjhO,EAAK,GACrB,MACF,QACEihO,EAAgB,KAEpB,IAAKA,EACH,MAAM,IAAIz+N,MACR,2EAAoE8C,KAAKC,UACvEvF,KAMN,IAAM4+N,OAA4Bh/N,IAAjBohO,EAA6BA,EAAe/C,GACvDiD,EAAahD,GAAuB,YAAEI,cAAcz8N,GAAQ+8N,EAClEa,GAAyB59N,EAAMq/N,GAM/B,IAJA,IAAMx8N,EAAQi6N,GAAiBj9N,EAASG,EAAK,IACvCs/N,EAAW5C,GAAa0C,GAE1Bn4N,EAAS,GACJ7H,EAAI,EAAGA,EAAIY,EAAK1B,OAAS,EAAGc,GAAK,EAAG,CAC3C,IAAMmgO,EAAQzC,GAAiBj9N,EAASG,EAAKZ,IACvCogO,EACJv4N,GAAU61N,GAAiBj9N,EAASG,EAAKZ,EAAI,GAAIigO,GAC7CI,EAAQ3C,GAAiBj9N,EAASG,EAAKZ,EAAI,IAC3CsgO,EAAU5C,GAAiBj9N,EAASG,EAAKZ,EAAI,GAAIigO,GACvDp4N,EAAS,cAAOu4N,EAAO,aAAKE,EAAO,wBAAgB78N,EAAK,cAAM08N,EAAK,gBAAQE,EAAK,cAAMF,EAAK,yBAAiBD,EAAQ,MAEtH,OAAOr4N,IAIXo1N,GAAiB,MAAI,CACnBI,cAAe,SAAUz8N,GAEvB,IADA,IAAI7B,EAAOi+N,GACFh9N,EAAI,EAAGA,EAAIY,EAAK1B,OAAQc,GAAK,EACpCjB,GAAcm+N,GAAat8N,EAAKZ,IAGlC,OADAjB,EAAcm+N,GAAat8N,EAAKA,EAAK1B,OAAS,KAGhD0+N,OAAQ,SAAUn9N,EAASG,EAAMm/N,GAC/BxB,GAAe39N,GACfy9N,GAAmBz9N,EAAM,GAEzB,IAAM+8N,OAA4Bh/N,IAAjBohO,EAA6BA,EAAe/C,GACvDiD,EAAahD,GAAiB,MAAEI,cAAcz8N,GAAQ+8N,EAC5Da,GAAyB59N,EAAMq/N,GAS/B,IAPA,IAAMx8N,EAAQi6N,GAAiBj9N,EAASG,EAAK,IACvCm7D,EAAW2hK,GACfj9N,EACAG,EAAKA,EAAK1B,OAAS,GACnB+gO,GAEEp4N,EAAS,KACJ7H,EAAIY,EAAK1B,OAAS,EAAGc,GAAK,EAAGA,GAAK,EAAG,CAC5C,IAAMyC,EAAQi7N,GAAiBj9N,EAASG,EAAKZ,IACvCmnC,EAASu2L,GAAiBj9N,EAASG,EAAKZ,EAAI,GAAIigO,GACtDp4N,EAAS,WAAIpE,EAAK,eAAOhB,EAAK,cAAM0kC,EAAM,cAAMt/B,GAAUk0D,EAAQ,KAEpE,OAAOl0D,IAIXo1N,GAAgB,KAAI,CAClBI,cAAe,SAAUz8N,GAEvB,IADA,IAAI7B,EAAOi+N,GACFh9N,EAAI,EAAGA,EAAIY,EAAK1B,OAAQc,GAAK,EACpCjB,GAAcm+N,GAAat8N,EAAKZ,IAGlC,OADAjB,EAAcm+N,GAAat8N,EAAKA,EAAK1B,OAAS,KAGhD0+N,OAAQ,SAAUn9N,EAASG,EAAMm/N,IAvoBnC,SAAuBn/N,GACrB,GAAIA,EAAK1B,OAAS,GAAM,EACtB,MAAM,IAAIqC,MACR,uDAAgDX,EAAI,aAqoBtD2/N,CAAc3/N,GACdy9N,GAAmBz9N,EAAM,GAEzB,IAAM+8N,OAA4Bh/N,IAAjBohO,EAA6BA,EAAe/C,GACvDiD,EAAahD,GAAgB,KAAEI,cAAcz8N,GAAQ+8N,EAC3Da,GAAyB59N,EAAMq/N,GAC/B,IAAK,IAAIjgO,EAAI,EAAGA,EAAIY,EAAK1B,OAAS,EAAGc,GAAK,EACxCm+N,GAAcv9N,EAAKZ,IAGrB,IAAM+7D,EAAW2hK,GACfj9N,EACAG,EAAKA,EAAK1B,OAAS,GACnB+gO,GAEEp4N,EAAS,KACb,IAAS7H,EAAIY,EAAK1B,OAAS,EAAGc,GAAK,EAAGA,GAAK,EAAG,CAC5C,IAAMonL,EAAYs2C,GAAiBj9N,EAASG,EAAKZ,IAC3CmnC,EAASu2L,GAAiBj9N,EAASG,EAAKZ,EAAI,GAAIigO,GACtDp4N,EAAS,WAAIu/K,EAAS,cAAMjgJ,EAAM,cAAMt/B,GAAUk0D,EAAQ,KAE5D,OAAOl0D,meCp7BX,SAAS24N,GAAWp4K,EAAOujK,GACzB,IAAM8D,EAAe,+BACFwJ,GAAwB,+BAC1BD,GAAuB,gCACtBA,GAA4B,gCAC5BA,GAA6B,gCAC7BA,GAA2B,gCAC3BA,GAAyB,gCACzBA,GAAyB,gCACzBA,GAAc,4HAMTC,GAAwB,gDAEvCD,GAAyB,cAAMA,GAA2B,cAAMA,GAA4B,0CAC5FA,GAAyB,cAAMA,GAA2B,cAAMA,GAA6B,+DAEjFA,GAAuB,mBAAWC,GAAwB,aAAKD,GAAc,sBAO3Fv4N,EAAU,CACdm+N,kBAAkB,EAClBC,UAAW,GACXh5E,WAAY,GACZ43E,kBAAmB,GACnB8B,UAAW,GACX5T,UAAWA,GAGP8U,EAAW,GAEjB,QAAoB9hO,IAAhBypD,EAAMxb,MAAqB,CAC7B,IAAMA,EAAQ8wL,GAAiBj9N,EAAS2nD,EAAMxb,MDzBzC,GC0BL6zL,EAAS37N,KAAK,kBAAW8nC,EAAK,MAGhC,QAAuBjuC,IAAnBypD,EAAMs4K,SAAwB,CAChC,IAAMA,EAAWhD,GACfj9N,EACA2nD,EAAMs4K,SDlCF,GCqCND,EAAS37N,KACP,6BAAsB47N,EAAQ,kCAA0BA,EAAQ,wDAIpE,QAAuB/hO,IAAnBypD,EAAMu4K,SAAwB,CAChC,IAAMA,EAAWjD,GACfj9N,EACA2nD,EAAMu4K,SD7CF,GCgDNF,EAAS37N,KACP,6BAAsB67N,EAAQ,oEAIlC,QAAyBhiO,IAArBypD,EAAMw4K,WAA0B,CAClC,IAAMA,EAAalD,GACjBj9N,EACA2nD,EAAMw4K,WDxDF,GC2DNH,EAAS37N,KAAK,qCACS87N,EAAU,qZAanC,QAAoBjiO,IAAhBypD,EAAMy4K,MAAqB,CAC7B,IAAMA,EAAQnD,GAAiBj9N,EAAS2nD,EAAMy4K,MD1ExC,GC2ENJ,EAAS37N,KAAK,gDAAyC+7N,EAAK,QAG9D,QAAyBliO,IAArBypD,EAAM04K,WAA0B,CAClC,IAAMA,EAAapD,GACjBj9N,EACA2nD,EAAM04K,WDjFF,GCoFNL,EAAS37N,KACP,wCAAiCg8N,EAAU,iDAK/C,IAAM/P,EAAW,GAEXgQ,EAAetgO,EAAQo+N,UAAU3/N,OACvC,GAAI6hO,EAAe,IAAM34K,EAAMy2K,UAC7B,MAAM,IAAIt9N,MACR,+CAAwCd,EAAQo+N,UAAS,MAI7D,mBAAS7+N,GACP,IAAM2+N,EAAel+N,EAAQo+N,UAAU7+N,GACvC,KAAM2+N,KAAgBv2K,EAAMy2K,WAC1B,MAAM,IAAIt9N,MAAM,mBAAYo9N,EAAY,yBAE1C,IAAMpC,EAAcmC,GAAuBC,GAC3C5N,EAASwL,GAAe,WACtB,IAAI1/N,EAAQurD,EAAMy2K,UAAUF,GAI5B,MAHqB,iBAAV9hO,IACTA,EAAQ2gO,GAA0B/8N,EAAS5D,SAE5B8B,IAAV9B,EAAsBA,GAAS,UAXjCmD,EAAI,EAAGA,EAAI+gO,IAAgB/gO,IAA3BA,GAeT,IAAMghO,EAAsBrkO,OAAOkQ,KAAKkkN,GAAUnnN,KAAI,SAAUtM,GAC9D,MAAO,wBAAiBA,EAAI,QAGxBywN,EAAepgN,KAAK+rD,KAAKiyJ,EAAY,GAC3CqV,EAAoBl8N,KAClB,4BAAqBk0N,GAA2B,YAAIjL,EAAY,OAG9DttN,EAAQg6N,iBACVuG,EAAoBl8N,KAClB,4BAAqBg6N,GAAqB,YAAIr+N,EAAQg6N,gBAAgBv7N,OAAM,OAIhF,IAAM+hO,EAAqBtkO,OAAOkQ,KAAKpM,EAAQ8+N,WAAW31N,KAAI,SAC5DtM,GAEA,OAAOmD,EAAQ8+N,UAAUjiO,MAgD3B,MAAO,CACLmyN,aAAcA,EACdK,eA/CqB,uNASNkJ,GAAsB,gCACrBA,GAAyB,gCACzBA,GAA4B,gCAC5BA,GAA6B,gCAC7BA,GAAmB,gCACnBA,GAAa,oBAE3BgI,EAAoBl+N,KAAK,MAAK,mBAE9Bm+N,EAAmBn+N,KAAK,MAAK,sEAITk2N,GAAsB,2CACtBA,GAAsB,2CACtBA,GAAsB,2CACtBA,GAAsB,qFAMxCA,GAA2B,2CAG3ByH,EAAS39N,KAAK,MAAK,uKAQHk2N,GAAyB,YAM7CjI,SAAUA,EACV0J,gBAAiBh6N,EAAQg6N,iBAgB7B,mBAIE,WAAYhuD,GAAZ,WACQtuK,EAAUsuK,GAAc,QAAO,GAAIA,GAAe,GAElDrkH,EAAQjqD,EAAQiqD,OAAS,UACxBjqD,EAAQiqD,MAEf,IAAMm1I,EAAYp/L,EAAQo/L,wBACnBp/L,EAAQo/L,aAEf,YAAMp/L,IAAQ,MAMT+iO,SAAW/iO,EAAQi3B,QAMxB,EAAK+rM,gBAAkB,KAMvB,EAAKvgB,oBAAsBloK,IAM3B,EAAKu1H,OAAS7lH,EAMd,EAAKg5K,WAAa7jC,EAMlB,EAAK8jC,gBAAkB,EAAKpzD,OAAO4wD,WAAa,GAEhD,EAAKzwD,kBAAkB,WAAsB,EAAKkzD,uBA6JtD,OAhN6B,QA4D3B,YAAAC,WAAA,SAAWnyD,EAAQC,GACjB,IAAMhzK,EAASqE,KAAK+yK,YACpB,OAAO/yK,KAAKwgO,SACiB,mBAAlBxgO,KAAKwgO,SACVxgO,KAAKwgO,SAAS9xD,EAAQC,GACtB3uK,KAAKwgO,SACP7kO,EACA,CAACA,GACD,IAMN,YAAA8iN,gBAAA,WACE,OAAOz+M,KAAKygO,iBAAmBzgO,KAAK+yK,aAMtC,YAAAuB,eAAA,WACE,IAAM34K,EAASqE,KAAKy+M,kBACpB,OAAO9iN,EAASA,EAAOuzK,WAAa,eAMtC,YAAA0xD,oBAAA,WACM5gO,KAAK+yK,aACP/yK,KAAKs4E,SAASt4E,KAAKutK,SAQvB,YAAAuzD,oBAAA,WACE,IAAMnlO,EAASqE,KAAK+yK,YACpB,OAAOp3K,GAAU,cAAeA,EAASA,EAAOsvN,UAAY,GAG9D,YAAAltC,eAAA,WACE,IAAMgjD,EAAcjB,GAAW9/N,KAAKutK,OAAQvtK,KAAK8gO,uBAEjD,OAAO,IAAI,GAAuB9gO,KAAM,CACtC+uN,aAAcgS,EAAYhS,aAC1BK,eAAgB2R,EAAY3R,eAC5BiB,SAAU0Q,EAAY1Q,SACtBxzB,UAAW78L,KAAK0gO,WAChB3G,gBAAiBgH,EAAYhH,mBASjC,YAAAiH,cAAA,SAAc7vD,EAAYz8I,GAGxB,IAFA,IACI++B,EADEo/G,EAAgB7yK,KAAK8yK,cAElBxzK,EAAI,EAAG8sK,EAAK13I,EAAQl2B,OAAQc,EAAI8sK,IAAM9sK,EAC7CU,KAAKygO,gBAAkB/rM,EAAQp1B,GAC3BuzK,EAAc8rC,aAAaxtC,KAC7B19G,EAASo/G,EAAcQ,YAAYlC,IAGvC,OAAO19G,GAST,YAAA6c,OAAA,SAAO6gG,EAAYnjK,GAAnB,WACEhO,KAAKs+M,UAAW,EAIhB,IAHA,IAAM/sC,EAAYJ,EAAWI,UACvB78I,EAAU10B,KAAK6gO,WAAW1vD,EAAWzC,OAAQ6C,EAAU5C,YACzDqR,GAAQ,aACH1gL,EAAO8sK,GACd,IAAMzwK,EAAS+4B,EAAQp1B,GACjB+0K,EAAc14K,EAAOuzK,WAC3B,GAAImF,GAAe,YAAqB,CACtC,IAAM,EAAW,WACX14K,EAAOuzK,YAAc,YACvBvzK,EAAO01B,oBAAoB,SAAU,GACrC,EAAK83B,YAGTxtD,EAAOsc,iBAAiB,SAAU,GAEpC+nK,EAAQA,GAAS3L,GAAe,WAZzB/0K,EAAI,EAAG8sK,EAAK13I,EAAQl2B,OAAQc,EAAI8sK,IAAM9sK,IAAtCA,GAcT,IAAMm0D,EAASzzD,KAAKghO,cAAc7vD,EAAYz8I,GAC9C,GAAI10B,KAAK8yK,cAAcomD,gBAAkBl5C,EAGvC,OADAhgL,KAAKkgN,oBAAsB3uC,EAAU5C,WAC9Bl7G,EAGT,GAAIzzD,KAAKkgN,oBAAsB,GAAM3uC,EAAU5C,WAAY,CACzD,IAAMsyD,EAAajhO,KAAK6gO,WACtB1vD,EAAWzC,OACX1uK,KAAKkgN,qBACLn3M,QAAO,SAACpN,GAAW,OAAC+4B,EAAQ/vB,SAAShJ,MACvC,GAAIslO,EAAWziO,OAAS,EACtB,OAAOwB,KAAKghO,cAAc7vD,EAAY8vD,GAG1C,OAAOxtK,GAWT,YAAA6kB,SAAA,SAAS5wB,GACP1nD,KAAK2gO,gBAAkBj5K,EAAMy2K,WAAa,GAC1Cn+N,KAAKutK,OAAS7lH,EACd,IAAMq5K,EAAcjB,GAAW9/N,KAAKutK,OAAQvtK,KAAK8gO,uBAChC9gO,KAAK8yK,cACbn9H,MAAM,CACbo5K,aAAcgS,EAAYhS,aAC1BK,eAAgB2R,EAAY3R,eAC5BiB,SAAU0Q,EAAY1Q,SACtB0J,gBAAiBgH,EAAYhH,kBAE/B/5N,KAAKmpD,WAQP,YAAA+3K,qBAAA,SAAqB/C,IACnB,QAAOn+N,KAAK2gO,gBAAiBxC,GAC7Bn+N,KAAKmpD,WAET,EAhNA,CAA6Bg4K,EAAA,GAuN7BC,GAAevhO,UAAUqtK,QAEzB,yCC/fO,SAAStoD,EAAMzoH,EAAO2uB,EAAKgJ,GAChC,OAAO7mB,KAAK6d,IAAI7d,KAAK6mB,IAAI33B,EAAO2uB,GAAMgJ,wHAYjC,IAAMutM,EAIP,SAAUp0N,KAELA,KAAKo0N,KAGL,SAAU/sL,GACf,IAAMC,EAAwB,KAAO49C,IAAI79C,GACzC,OAAQC,EAAI,EAAIA,GAAK,GAed+sL,EAIP,SAAUr0N,KAELA,KAAKq0N,KAGL,SAAUhtL,GACf,OAAOrnC,KAAK7F,IAAIktC,GAAKrnC,KAAKs0N,OAiBzB,SAASC,EAAuBltL,EAAGC,EAAG0vB,EAAIC,EAAIC,EAAIC,GACvD,IAAMsa,EAAKva,EAAKF,EACVsgD,EAAKngD,EAAKF,EAChB,GAAW,IAAPwa,GAAmB,IAAP6lC,EAAU,CACxB,IAAMprE,IAAM7E,EAAI2vB,GAAMya,GAAMnqC,EAAI2vB,GAAMqgD,IAAO7lC,EAAKA,EAAK6lC,EAAKA,GACxDprE,EAAI,GACN8qB,EAAKE,EACLD,EAAKE,GACIjrB,EAAI,IACb8qB,GAAMya,EAAKvlC,EACX+qB,GAAMqgD,EAAKprE,GAGf,OAAOyzJ,EAAgBt4J,EAAGC,EAAG0vB,EAAIC,GAW5B,SAAS0oI,EAAgB3oI,EAAIC,EAAIC,EAAIC,GAC1C,IAAMsa,EAAKva,EAAKF,EACVsgD,EAAKngD,EAAKF,EAChB,OAAOwa,EAAKA,EAAK6lC,EAAKA,EAUjB,SAASk9G,EAAkBC,GAGhC,IAFA,IAAM7jI,EAAI6jI,EAAIljO,OAELc,EAAI,EAAGA,EAAIu+F,EAAGv+F,IAAK,CAI1B,IAFA,IAAIqiO,EAASriO,EACTsiO,EAAQ30N,KAAKknB,IAAIutM,EAAIpiO,GAAGA,IACnBsjC,EAAItjC,EAAI,EAAGsjC,EAAIi7D,EAAGj7D,IAAK,CAC9B,IAAMi/L,EAAW50N,KAAKknB,IAAIutM,EAAI9+L,GAAGtjC,IAC7BuiO,EAAWD,IACbA,EAAQC,EACRF,EAAS/+L,GAIb,GAAc,IAAVg/L,EACF,OAAO,KAIT,IAAM9zH,EAAM4zH,EAAIC,GAChBD,EAAIC,GAAUD,EAAIpiO,GAClBoiO,EAAIpiO,GAAKwuG,EAGT,IAAK,IAAI3gD,EAAI7tD,EAAI,EAAG6tD,EAAI0wC,EAAG1wC,IAEzB,IADA,IAAM20K,GAAQJ,EAAIv0K,GAAG7tD,GAAKoiO,EAAIpiO,GAAGA,GACxBs8F,EAAIt8F,EAAGs8F,EAAIiC,EAAI,EAAGjC,IACrBt8F,GAAKs8F,EACP8lI,EAAIv0K,GAAGyuC,GAAK,EAEZ8lI,EAAIv0K,GAAGyuC,IAAMkmI,EAAOJ,EAAIpiO,GAAGs8F,GAQnC,IADA,IAAMtnD,EAAI,IAAIh0C,MAAMu9F,GACX/sE,EAAI+sE,EAAI,EAAG/sE,GAAK,EAAGA,IAAK,CAC/BwjB,EAAExjB,GAAK4wM,EAAI5wM,GAAG+sE,GAAK6jI,EAAI5wM,GAAGA,GAC1B,IAAK,IAAIshE,EAAIthE,EAAI,EAAGshE,GAAK,EAAGA,IAC1BsvI,EAAItvI,GAAGyL,IAAM6jI,EAAItvI,GAAGthE,GAAKwjB,EAAExjB,GAG/B,OAAOwjB,EASF,SAAS6pD,EAAU4jI,GACxB,OAAyB,IAAjBA,EAAwB90N,KAAKmqE,GAShC,SAAS6mB,EAAU+jI,GACxB,OAAQA,EAAiB/0N,KAAKmqE,GAAM,IAU/B,SAAS6qJ,EAAOr8L,EAAGp6B,GACxB,IAAMo3B,EAAIgD,EAAIp6B,EACd,OAAOo3B,EAAIp3B,EAAI,EAAIo3B,EAAIp3B,EAAIo3B,EAWtB,SAASs/L,EAAKt8L,EAAGp6B,EAAG8oC,GACzB,OAAO1O,EAAI0O,GAAK9oC,EAAIo6B,GASf,SAASu8L,EAAQtkI,EAAGukI,GACzB,IAAMn2L,EAASh/B,KAAKghD,IAAI,GAAIm0K,GAC5B,OAAOn1N,KAAKgsD,MAAM4kC,EAAI5xD,GAAUA,EAqB3B,SAASxb,EAAMotE,EAAGukI,GACvB,OAAOn1N,KAAKwjB,MAAM0xM,EAAQtkI,EAAGukI,IAUxB,SAASppK,EAAK6kC,EAAGukI,GACtB,OAAOn1N,KAAK+rD,KAAKmpK,EAAQtkI,EAAGukI,+EC3OvB,IAAMnoN,EACc,mBAAlBhe,OAAOge,OACVhe,OAAOge,OACP,SAAUjM,EAAQq0N,GAChB,GAAIr0N,MAAAA,EACF,MAAM,IAAIy9G,UAAU,8CAItB,IADA,IAAMhlF,EAASxqC,OAAO+R,GACb1O,EAAI,EAAG8sK,EAAKlwJ,UAAU1d,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAClD,IAAM3D,EAASugB,UAAU5c,GACzB,GAAI3D,MAAAA,EACF,IAAK,IAAMkI,KAAOlI,EACZA,EAAO+E,eAAemD,KACxB4iC,EAAO5iC,GAAOlI,EAAOkI,IAK7B,OAAO4iC,GAOR,SAAS7b,EAAMtnB,GACpB,IAAK,IAAMgZ,KAAYhZ,SACdA,EAAOgZ,GAYX,IAAMgmN,EACc,mBAAlBrmO,OAAOmC,OACVnC,OAAOmC,OACP,SAAUkF,GACR,IAAMlF,EAAS,GACf,IAAK,IAAMke,KAAYhZ,EACrBlF,EAAOgG,KAAKd,EAAOgZ,IAErB,OAAOle,GAQR,SAASy6K,EAAQv1K,GACtB,IAAIgZ,EACJ,IAAKA,KAAYhZ,EACf,OAAO,EAET,OAAQgZ,qrBC7DGimN,EAAS,QAMTC,EAAYv1N,KAAKmqE,GAAKmrJ,EAMtBvjB,EAAS,EAAEwjB,GAAYA,EAAWA,EAAWA,GAM7CC,EAAe,EAAE,KAAM,GAAI,IAAK,IAOhCC,EAAaH,EAASt1N,KAAK7F,IAAI6F,KAAKggG,IAAIhgG,KAAKmqE,GAAK,IAM/D,cAIE,WAAYnjE,UACV,YAAM,CACJA,KAAMA,EACN27L,MAAOnb,EAAA,UACP/lB,OAAQswC,EACRloM,QAAQ,EACR6rN,YAAaF,EACbG,mBAAoB,SAAUj0D,EAAY9rH,GACxC,OAAO8rH,GAAa,QAAK9rH,EAAM,GAAK0/K,OAEtC,KAEN,OAhBiC,OAgBjC,EAhBA,CAAiC5yB,EAAA,GAwBpBkzB,EAAc,CACzB,IAAIC,EAAmB,aACvB,IAAIA,EAAmB,eACvB,IAAIA,EAAmB,eACvB,IAAIA,EAAmB,eACvB,IAAIA,EAAmB,8CACvB,IAAIA,EAAmB,+gBCtDZ,EAAS,EAAE,KAAM,GAAI,IAAK,IAM1B,EAdS,QAcU71N,KAAKmqE,GAAe,IAUpD,cAKE,WAAYnjE,EAAM8uN,UAChB,YAAM,CACJ9uN,KAAMA,EACN27L,MAAOnb,EAAA,WACP/lB,OAAQ,EACRs0D,gBAAiBD,EACjBjsN,QAAQ,EACRmsN,cAAe,EACfN,YAAa,KACb,KAEN,OAhBiC,OAgBjC,EAhBA,CAAiChzB,EAAA,GAwBpB,EAAc,CACzB,IAAIuzB,EAAmB,UACvB,IAAIA,EAAmB,YAAa,OACpC,IAAIA,EAAmB,iCACvB,IAAIA,EAAmB,4BACvB,IAAIA,EAAmB,gDACvB,IAAIA,EAAmB,+CAAgD,OACvE,IAAIA,EAAmB,6CAA8C,QC5DnEvoL,EAAQ,GCERsnK,EAAa,GAiBV,SAAS,EAAItmN,EAAQ++H,EAAausE,GACvC,IAAMk8B,EAAaxnO,EAAOynO,UACpBC,EAAkB3oG,EAAY0oG,UAC9BD,KAAclhB,IAClBA,EAAWkhB,GAAc,IAE3BlhB,EAAWkhB,GAAYE,GAAmBp8B,oCCmExCq8B,GAAwB,EAKrB,SAASC,EAAyBC,GAEvCF,SAD6BrlO,IAAhBulO,GAAmCA,GAW3C,SAASC,EAAe1gO,EAAO2gO,EAAY/5B,GAChD,IAAIljK,EACJ,QAAmBxoC,IAAfylO,EAA0B,CAC5B,IAAK,IAAIpkO,EAAI,EAAG8sK,EAAKrpK,EAAMvE,OAAQc,EAAI8sK,IAAM9sK,EAC3CokO,EAAWpkO,GAAKyD,EAAMzD,GAExBmnC,EAASi9L,OAETj9L,EAAS1jC,EAAMZ,QAEjB,OAAOskC,EASF,SAASk9L,EAAkB5gO,EAAO2gO,EAAY/5B,GACnD,QAAmB1rM,IAAfylO,GAA4B3gO,IAAU2gO,EAAY,CACpD,IAAK,IAAIpkO,EAAI,EAAG8sK,EAAKrpK,EAAMvE,OAAQc,EAAI8sK,IAAM9sK,EAC3CokO,EAAWpkO,GAAKyD,EAAMzD,GAExByD,EAAQ2gO,EAEV,OAAO3gO,EAUF,SAAS6gO,EAAc1xD,IFtHvB,SAAaj+J,EAAMi+J,GACxBv3H,EAAM1mC,GAAQi+J,EEsHd/tK,CAAQ+tK,EAAWkxD,UAAWlxD,GAC9B,EAAiBA,EAAYA,EAAYuxD,GAmBpC,SAAS,EAAII,GAClB,MAAiC,iBAAnBA,EFvJZlpL,EAFgB1mC,EE0JgB,IFvJhC0mC,EAAM1mC,EAAK3O,QAAQ,yCAA0C,aAC7D,KEuJ4B,GAAoB,KF3J7C,IAAa2O,EEkLb,SAAS2uN,EAAmB1wD,EAAYvD,EAAY9rH,EAAOihL,GAEhE,IAAIC,EACErgL,GAFNwuH,EAAa,EAAIA,IAES8xD,yBAC1B,GAAItgL,EACFqgL,EAAkBrgL,EAAOirH,EAAY9rH,GACjCihL,GAAaA,IAAc5xD,EAAW+2B,aAClCg6B,EAAgB/wD,EAAWwiB,sBAE/BqvC,EACGA,EAAkBd,EAAiB,KAAgBa,QAGrD,CACL,IAAMl0B,EAAQ19B,EAAW+2B,WACzB,GAAK2G,GAASnb,EAAA,aAAkBqvC,GAAcA,GAAarvC,EAAA,WACzDsvC,EAAkBp1D,MACb,CAIL,IAuBMs0D,EAvBA,EAAagB,EACjB/xD,EACA,EAAI,cAEN,GAAI,IAAeyxD,GAAqB/zB,IAAUnb,EAAA,WAEhDsvC,EAAkBp1D,EAAauD,EAAWwiB,uBACrC,CACL,IAAIwvC,EAAW,CACbrhL,EAAM,GAAK8rH,EAAa,EACxB9rH,EAAM,GACNA,EAAM,GAAK8rH,EAAa,EACxB9rH,EAAM,GACNA,EAAM,GACNA,EAAM,GAAK8rH,EAAa,EACxB9rH,EAAM,GACNA,EAAM,GAAK8rH,EAAa,GAE1Bu1D,EAAW,EAAWA,EAAUA,EAAU,GAG1CH,IAFc,QAAYG,EAAS/hO,MAAM,EAAG,GAAI+hO,EAAS/hO,MAAM,EAAG,KACnD,QAAY+hO,EAAS/hO,MAAM,EAAG,GAAI+hO,EAAS/hO,MAAM,EAAG,KAC9B,OAKjBlE,KAHhBglO,EAAgBa,EAClB,KAAgBA,GAChB5xD,EAAWwiB,sBAEbqvC,GAAmBd,IAIzB,OAAOc,EAUF,SAASI,EAAyBC,IArGlC,SAAwBA,GAC7BA,EAAY5hO,QAAQohO,GAqGpBS,CAAeD,GACfA,EAAY5hO,SAAQ,SAAU7G,GAC5ByoO,EAAY5hO,SAAQ,SAAUk4H,GACxB/+H,IAAW++H,GACb,EAAiB/+H,EAAQ++H,EAAa+oG,SA8CvC,SAASa,EAAiBpyD,EAAYqyD,GAC3C,OAAKryD,EAE4B,iBAAfA,EACT,EAAIA,GAEsB,EAJ1B,EAAIqyD,GAmFR,SAASC,EAAW7yD,EAAY8yD,GAErC,OADAlB,IACOjkF,EACLqyB,EACA,iBACmB1zK,IAAnBwmO,EAA+BA,EAAiB,aAa7C,SAASC,EAAS/yD,EAAY8yD,GACnC,IAAME,EAASrlF,EACbqyB,OACmB1zK,IAAnBwmO,EAA+BA,EAAiB,YAChD,aAEIG,EAAMD,EAAO,GAInB,OAHIC,GAAO,KAAOA,EAAM,OACtBD,EAAO,IAAK,QAAOC,EAAM,IAAK,KAAO,KAEhCD,EAaF,SAASE,EAAWC,EAAaC,GACtC,GAAID,IAAgBC,EAClB,OAAO,EAET,IAAMC,EAAaF,EAAY77B,aAAe87B,EAAY97B,WAC1D,OAAI67B,EAAY1B,YAAc2B,EAAY3B,WAGlBa,EAA4Ba,EAAaC,KACtCtB,IAHlBuB,EAgBJ,SAASf,EACdgB,EACAC,GAEA,IAEIC,EDrZC,SAAahC,EAAYE,GAC9B,IAAI/jF,EAIJ,OAHI6jF,KAAclhB,GAAcohB,KAAmBphB,EAAWkhB,KAC5D7jF,EAAY2iE,EAAWkhB,GAAYE,IAE9B/jF,ECgZa,CAFD2lF,EAAiB7B,UACZ8B,EAAsB9B,WAK9C,OAHK+B,IACHA,EAAgBxB,GAEXwB,EAaF,SAASC,EAAazpO,EAAQ++H,GAGnC,OAAOupG,EAFkB,EAAItoO,GACC,EAAI++H,IAkB7B,SAAS4kB,EAAUqyB,EAAYh2K,EAAQ++H,GAE5C,OADsB0qG,EAAazpO,EAAQ++H,EACpCyqG,CAAcxzD,OAAY1zK,EAAW0zK,EAAWnzK,QAelD,SAAS6mO,EAAgB32D,EAAQ/yK,EAAQ++H,EAAawsE,GAC3D,IAAMi+B,EAAgBC,EAAazpO,EAAQ++H,GAC3C,OAAO,QAAeg0C,EAAQy2D,OAAelnO,EAAWipM,GA0B1D,IArQEo+B,EACAC,EACAC,EAmQEnsC,EAAiB,KA2Bd,SAASosC,IACd,OAAOpsC,EAmBF,SAASqsC,EAAiB/zD,EAAYszD,GAC3C,OACStzD,EAYJ,SAASg0D,EAAmBh0D,EAAYi0D,GAC7C,OAEItC,KACC,QAAO3xD,EAAY,CAAC,EAAG,KACxBA,EAAW,KAAO,KAClBA,EAAW,IAAM,KACjBA,EAAW,KAAO,IAClBA,EAAW,IAAM,KAEjB2xD,GAAwB,EAExBlqN,QAAQ8K,KACN,2FAGGytJ,EAYJ,SAASk0D,EAAan3D,EAAQu2D,GACnC,OACSv2D,EAYJ,SAASo3D,EAAep3D,EAAQk3D,GACrC,OACSl3D,EAaJ,SAASq3D,EAAiBp3D,EAAYs2D,GAEzC,OAAOt2D,EAyETw1D,EAAyB,GACzBA,EAAyB,GAvczBmB,EA4cE,EA3cFC,EJ3MK,SAAsBxiO,EAAO2gO,EAAY/5B,GAC9C,IAAMnrM,EAASuE,EAAMvE,OACf08F,EAAYyuG,EAAgB,EAAIA,EAAgB,EAClDljK,EAASi9L,OACEzlO,IAAXwoC,IAGAA,EAFEy0D,EAAY,EAELn4F,EAAMZ,QAEN,IAAI7B,MAAM9B,IAGvB,IAAK,IAAIc,EAAI,EAAGA,EAAId,EAAQc,GAAK47F,EAAW,CAC1Cz0D,EAAOnnC,GAAMkjO,EAAYz/N,EAAMzD,GAAM,IACrC,IAAIi1C,EAAIguL,EAASt1N,KAAK7F,IAAI6F,KAAKggG,IAAKhgG,KAAKmqE,KAAOr0E,EAAMzD,EAAI,GAAK,IAAO,MAClEi1C,EAAImuL,EACNnuL,EAAImuL,EACKnuL,GAAKmuL,IACdnuL,GAAKmuL,GAEPj8L,EAAOnnC,EAAI,GAAKi1C,EAElB,OAAO9N,GIsLP++L,EJ3KK,SAAoBziO,EAAO2gO,EAAY/5B,GAC5C,IAAMnrM,EAASuE,EAAMvE,OACf08F,EAAYyuG,EAAgB,EAAIA,EAAgB,EAClDljK,EAASi9L,OACEzlO,IAAXwoC,IAGAA,EAFEy0D,EAAY,EAELn4F,EAAMZ,QAEN,IAAI7B,MAAM9B,IAGvB,IAAK,IAAIc,EAAI,EAAGA,EAAId,EAAQc,GAAK47F,EAC/Bz0D,EAAOnnC,GAAM,IAAMyD,EAAMzD,GAAMkjO,EAC/B/7L,EAAOnnC,EAAI,GACR,IAAM2N,KAAK+4N,KAAK/4N,KAAKklF,IAAIpvF,EAAMzD,EAAI,GAAKijO,IAAYt1N,KAAKmqE,GAAK,GAEnE,OAAO3wC,GImmBL,EAvcWjkC,SAAQ,SAAUsiO,GAC7BQ,EAAa9iO,SAAQ,SAAUuiO,GAC7B,EAAiBD,EAAaC,EAAaQ,GAC3C,EAAiBR,EAAaD,EAAaU,qECxBjD,QA3NA,WAIE,WAAY/nO,GAKVuC,KAAKimO,MAAQxoO,EAAQwW,KASrBjU,KAAKkmO,OAAsDzoO,EAAa,MASxEuC,KAAKyuM,aAA6BxwM,IAAnBR,EAAQixK,OAAuBjxK,EAAQixK,OAAS,KAS/D1uK,KAAKmmO,kBACqBloO,IAAxBR,EAAQklO,YAA4BllO,EAAQklO,YAAc,KAM5D3iO,KAAKomO,sBACyBnoO,IAA5BR,EAAQulO,gBAAgCvlO,EAAQulO,gBAAkB,MAMpEhjO,KAAKqmO,aAA6BpoO,IAAnBR,EAAQqZ,QAAuBrZ,EAAQqZ,OAMtD9W,KAAKsmO,aAAetmO,KAAKqmO,UAAWrmO,KAAKyuM,SAMzCzuM,KAAKumO,wBAA0B9oO,EAAQmlO,mBAMvC5iO,KAAKwmO,iBAAmB,KAMxBxmO,KAAKymO,eAAiBhpO,EAAQwlO,cA+IlC,OAzIE,YAAA7wD,SAAA,WACE,OAAOpyK,KAAKsmO,WAQd,YAAAlD,QAAA,WACE,OAAOpjO,KAAKimO,OAQd,YAAAn3D,UAAA,WACE,OAAO9uK,KAAKyuM,SAQd,YAAAxF,SAAA,WACE,OAAOjpM,KAAKkmO,QAUd,YAAAxxC,iBAAA,WACE,OAAO10L,KAAKymO,gBAAkB,KAAgBzmO,KAAKkmO,SAQrD,YAAA72B,eAAA,WACE,OAAOrvM,KAAKmmO,cAcd,YAAAO,mBAAA,WACE,OAAO1mO,KAAKomO,kBAQd,YAAAhyC,SAAA,WACE,OAAOp0L,KAAKqmO,SAQd,YAAAM,UAAA,SAAU7vN,GACR9W,KAAKqmO,QAAUvvN,EACf9W,KAAKsmO,aAAexvN,IAAU9W,KAAKyuM,UAMrC,YAAAm4B,mBAAA,WACE,OAAO5mO,KAAKwmO,kBAMd,YAAAK,mBAAA,SAAmBrgB,GACjBxmN,KAAKwmO,iBAAmBhgB,GAQ1B,YAAAnV,UAAA,SAAU3iC,GACR1uK,KAAKyuM,QAAU//B,EACf1uK,KAAKsmO,aAAetmO,KAAKqmO,UAAW33D,IAStC,YAAAw6B,eAAA,SAAey5B,GACb3iO,KAAKmmO,aAAexD,GAStB,YAAAmE,sBAAA,SAAsBt1N,GACpBxR,KAAKumO,wBAA0B/0N,GAQjC,YAAAwyN,uBAAA,WACE,OAAOhkO,KAAKumO,yBAEhB,EAzNA,2DC1CA,IAAM9xC,EAAQ,CAKZsyC,QAAS,UAKTC,QAAS,UAKTC,KAAM,KAKNC,OAAQ,IAKRC,OAAQ,SAKRC,YAAa,cAKbC,OAAQ,SA6BGC,EAAkB,GAE/BA,EAAgB7yC,EAAMsyC,SAAW,SAAW,EAAI95N,KAAKmqE,IACrDkwJ,EAAgB7yC,EAAMuyC,SAAY,EAAI/5N,KAAKmqE,GAAK,QAAW,IAC3DkwJ,EAAgB7yC,EAAMwyC,MAAQ,MAC9BK,EAAgB7yC,EAAMyyC,QAAU,EAChCI,EAAgB7yC,EAAM4yC,QAAU,KAAO,KAEvC,2gBCtCA,QArCA,YAQE,WAAYhpO,EAAMkpO,EAA2B7yD,EAAgB8yD,GAA7D,MACE,YAAMnpO,IAAK,YAQX,EAAKmjN,sBAAwB+lB,EAO7B,EAAKp2D,WAAauD,EASlB,EAAK30K,QAAUynO,IAEnB,OAnC0B,OAmC1B,EAnCA,CAA0B,oDCC1B,SAMEC,UAAW,YAOX95C,WAAY,aASZ+5C,WAAY,aASZC,YAAa,cASbC,eAAgB,gECmElB,QAxGA,yBAsGA,OA7FE,YAAAC,WAAA,SAAWlhH,EAAUsrD,EAAS8N,EAAU+nD,KAOxC,YAAAC,aAAA,SAAaphH,KAOb,YAAAruC,SAAA,SAAS5wB,KAMT,YAAAsgL,WAAA,SAAWC,EAAgBh2D,KAM3B,YAAAi2D,YAAA,SAAYj2D,EAASvqH,KAMrB,YAAAygL,uBAAA,SAAuBC,EAA4Bn2D,KAMnD,YAAAo2D,eAAA,SAAeC,EAAoBr2D,KAMnC,YAAAs2D,oBAAA,SAAoBC,EAAyBv2D,KAM7C,YAAAw2D,eAAA,SAAeC,EAAoBz2D,KAMnC,YAAA02D,iBAAA,SAAiBC,EAAsB32D,KAMvC,YAAAvgE,UAAA,SAAUm3H,EAAe52D,KAMzB,YAAA62D,YAAA,SAAYC,EAAiB92D,KAM7B,YAAAhrD,SAAA,SAASN,EAAUsrD,KAMnB,YAAA+2D,mBAAA,SAAmBrhL,EAAWE,KAM9B,YAAAohL,cAAA,SAAcC,EAAYC,KAM1B,YAAAC,aAAA,SAAaC,EAAWF,KAC1B,EAtGA,gQC4EaG,EAAc,kBAMdC,EAAmB,OAMnBC,EAAiB,QAMjBC,EAAkB,GAMlBC,EAAwB,EAMxBC,EAAkB,QAMlBC,EAAoB,GAMpBC,EAAqB,OAMrBC,EAAmB,SAMnBC,EAAsB,SAMtBC,EAAiB,CAAC,EAAG,EAAG,EAAG,GAM3BC,EAAmB,EAKnBC,EAAe,IAAI,KAUN,IAAI,KACnB5mD,QAAU,WACnBlqK,QAAQ8K,KAAK,8BAMf,IAKIimN,EA8GEC,EAnHFC,EAAiB,KAURC,EAAc,GAMdC,EAAe,WAC1B,IAKIjgO,EAAUkgO,EAJR/1M,EAAO,QACPg2M,EAAiB,CAAC,YAAa,SAC/BluM,EAAMkuM,EAAejsO,OACrBsc,EAAO,2BASb,SAAS4vN,EAAY9wI,EAAW+wI,EAAY9wI,GAE1C,IADA,IAAI+wI,GAAY,EACPtrO,EAAI,EAAGA,EAAIi9B,IAAOj9B,EAAG,CAC5B,IAAMurO,EAAgBJ,EAAenrO,GAKrC,GAJAkrO,EAAiBM,EACflxI,EAAY,IAAM+wI,EAAa,IAAMl2M,EAAOo2M,EAC5C/vN,GAEE++E,GAAcgxI,EAAe,CAC/B,IAAMjvO,EAAQkvO,EACZlxI,EACE,IACA+wI,EACA,IACAl2M,EACAolE,EACA,IACAgxI,EACF/vN,GAIF8vN,EAAYA,GAAahvO,GAAS4uO,GAGtC,QAAII,EAMN,SAASn/E,IAGP,IAFA,IAAI/R,GAAO,EACLqxF,EAAQb,EAAahwG,UAClB56H,EAAI,EAAG8sK,EAAK2+D,EAAMvsO,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC9C,IAAMg8D,EAAOyvK,EAAMzrO,GACf4qO,EAAahwN,IAAIohD,GAjDT,MAkDNovK,EAAYzqO,MAAMD,KAAMs7D,EAAKp5D,MAAM,SACrC,QAAMooO,GAEND,EAAiB,KACjBF,OAAclsO,EACdisO,EAAa1+L,IAAI8vB,EAvDT,OAyDR4uK,EAAa1+L,IAAI8vB,EAAM4uK,EAAahwN,IAAIohD,GAAQ,GAAG,GACnDo+E,GAAO,IAITA,IACFlvI,cAAcF,GACdA,OAAWrM,GAIf,OAAO,SAAUujM,GACf,IAAMlmI,GAAO,OAAkBkmI,GAC/B,GAAKlmI,EAIL,IADA,IAAMomI,EAAWpmI,EAAKomI,SACbpiM,EAAI,EAAG8sK,EAAKs1B,EAASljM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CACjD,IAAM+wG,EAASqxF,EAASpiM,GAClBuE,EAAMy3D,EAAK5T,MAAQ,KAAO4T,EAAKlU,OAAS,KAAOipD,OACvBpyG,IAA1BisO,EAAahwN,IAAIrW,KACnBqmO,EAAa1+L,IAAI3nC,EA9EP,KA8EqB,GAC1B6mO,EAAYpvK,EAAK5T,MAAO4T,EAAKlU,OAAQipD,KACxC65H,EAAa1+L,IAAI3nC,EAAK,GAAG,QACR5F,IAAbqM,IACFA,EAAWC,YAAYkhJ,EAAO,SAnFd,GA+Ffu/E,EAKJ,SAAUxpC,GACf,IAAI3lM,EAASyuO,EAAY9oC,GACzB,GAAcvjM,MAAVpC,EAAqB,CACvB,GAAI,KAAyB,CAC3B,IAAMy/D,GAAO,OAAkBkmI,GACzBxuF,EAAU/uB,EAAYu9G,EAAU,MAItC3lM,GAHmB8G,MAAMuH,OAAOoxD,EAAKC,aACjC,IACArxD,OAAOoxD,EAAKC,cAGby3C,EAAQG,wBAA0BH,EAAQI,+BAExCg3H,KACHA,EAAiBnlO,SAASkS,cAAc,QACzBu7I,UAAY,IAC3B03E,EAAe1iL,MAAMujL,UAAY,IACjCb,EAAe1iL,MAAM5B,UAAY,OACjCskL,EAAe1iL,MAAM7rD,OAAS,OAC9BuuO,EAAe1iL,MAAM6J,QAAU,IAC/B64K,EAAe1iL,MAAMqC,OAAS,OAC9BqgL,EAAe1iL,MAAMuF,SAAW,WAChCm9K,EAAe1iL,MAAMuD,QAAU,QAC/Bm/K,EAAe1iL,MAAMnO,KAAO,YAE9B6wL,EAAe1iL,MAAM4T,KAAOkmI,EAC5Bv8L,SAASyR,KAAKa,YAAY6yN,GAC1BvuO,EAASuuO,EAAe/rF,aACxBp5I,SAASyR,KAAKe,YAAY2yN,GAE5BE,EAAY9oC,GAAY3lM,EAE1B,OAAOA,GASX,SAASooF,EAAY3oB,EAAMxgD,GAQzB,OAPKuvN,IACHA,GAAiB,QAAsB,EAAG,IAExC/uK,GAAQ6uK,IACVE,EAAe/uK,KAAOA,EACtB6uK,EAAcE,EAAe/uK,MAExB+uK,EAAepmJ,YAAYnpE,GAQ7B,SAASgwN,EAAiBxvK,EAAMxgD,GACrC,OAAOmpE,EAAY3oB,EAAMxgD,GAAMlf,MAU1B,SAASsvO,EAAyB5vK,EAAMxgD,EAAM6/B,GACnD,GAAI7/B,KAAQ6/B,EACV,OAAOA,EAAM7/B,GAEf,IAAMlf,EAAQkvO,EAAiBxvK,EAAMxgD,GAErC,OADA6/B,EAAM7/B,GAAQlf,EACPA,EAQF,SAASuvO,EAAkBxsH,EAAWu4B,GAQ3C,IAPA,IAAMp1E,EAAS,GACTC,EAAU,GACVwhB,EAAa,GACf3nF,EAAQ,EACRmsD,EAAY,EACZlsD,EAAS,EACT0/D,EAAa,EACRj8D,EAAI,EAAG8sK,EAAKl1B,EAAO14I,OAAQc,GAAK8sK,EAAI9sK,GAAK,EAAG,CACnD,IAAMwb,EAAOo8H,EAAO53I,GACpB,GAAa,OAATwb,GAAiBxb,IAAM8sK,EAA3B,CAOA,IAAM9wG,EAAO47E,EAAO53I,EAAI,IAAMq/G,EAAUrjD,KAClC8vK,EAAeN,EAAiBxvK,EAAMxgD,GAC5CgnD,EAAO19D,KAAKgnO,GACZrjL,GAAaqjL,EACb,IAAMC,EAAgBL,EAAkB1vK,GACxCyG,EAAQ39D,KAAKinO,GACb9vK,EAAatuD,KAAK6mB,IAAIynC,EAAY8vK,QAZhCzvO,EAAQqR,KAAK6mB,IAAIl4B,EAAOmsD,GACxBw7B,EAAWn/E,KAAK2jD,GAChBA,EAAY,EACZlsD,GAAU0/D,EAWd,MAAO,CAAC3/D,MAAK,EAAEC,OAAM,EAAEimE,OAAM,EAAEC,QAAO,EAAEwhB,WAAU,GA8B7C,SAAS+nJ,EACdvrO,EACAu/I,EACA/0D,EACAghJ,EACAC,EACAC,EACAn7K,EACAE,EACAlc,EACAC,EACAxE,GAEAhwC,EAAQ6lE,OAEQ,IAAZ2kB,IACFxqF,EAAQ6uF,aAAerE,GAErB+0D,GACFv/I,EAAQk8G,aAAah8G,MAAMF,EAASu/I,GAGjB,EAAeosF,qBAElC3rO,EAAQk4E,UAAU3jC,EAAGC,GACrBx0C,EAAQgwC,MAAMA,EAAM,GAAIA,EAAM,IA2ClC,SAAkCiJ,EAAOj5C,GAEvC,IADA,IAAM2rO,EAAsB1yL,EAAM0yL,oBACzBpsO,EAAI,EAAG8sK,EAAKs/D,EAAoBltO,OAAQc,EAAI8sK,EAAI9sK,GAAK,EACxDgB,MAAMiF,QAAQmmO,EAAoBpsO,EAAI,IACxCS,EAAQ2rO,EAAoBpsO,IAAIW,MAC9BF,EACA2rO,EAAoBpsO,EAAI,IAG1BS,EAAQ2rO,EAAoBpsO,IAAMosO,EAAoBpsO,EAAI,GAnD5DqsO,CAA8C,EAAgB5rO,IACrDgwC,EAAM,GAAK,GAAKA,EAAM,GAAK,GAEpChwC,EAAQk4E,UAAU3jC,EAAGC,GACrBx0C,EAAQgwC,MAAMA,EAAM,GAAIA,EAAM,IAC9BhwC,EAAQ8xG,UAC6D,EAGnE25H,EACAC,EACAn7K,EACAE,EACA,EACA,EACAF,EACAE,IAIFzwD,EAAQ8xG,UAC6D,EAGnE25H,EACAC,EACAn7K,EACAE,EACAlc,EACAC,EACA+b,EAAIvgB,EAAM,GACVygB,EAAIzgB,EAAM,IAIdhwC,EAAQ+lE,2lBCkKV,QA5mBA,YAOE,WAAYwuI,EAAWljB,EAAWziB,EAAY7yD,GAA9C,MACE,cAAO,YAMP,EAAKw4F,UAAYA,EAOjB,EAAKljB,UAAYA,EAMjB,EAAKt1E,WAAaA,EAMlB,EAAK5yB,aAAe,EAOpB,EAAKylF,WAAaA,EAMlB,EAAKi9D,2BAA6B,KAMlC,EAAKC,2BAA6B,KAMlC,EAAKC,mBAAqB,KAM1B,EAAKC,aAAe,GAMpB,EAAKlkH,YAAc,GAMnB,EAAKmkH,eAAiB,GAMtB,EAAKC,yBAA2B,GAMhC,EAAK/jM,MAA8D,KAkhBvE,OA1mB4B,OAgG1B,YAAAgkM,gBAAA,SAAgBC,GACd,IAAMrwH,EAAa97G,KAAK87G,WACxB,OAAqB,GAAdA,EACHqwH,EACAA,EAAUjjO,KAAI,SAAUkjO,GACtB,OAAOA,EAAOtwH,MAUtB,YAAAuwH,2BAAA,SAA2B5mC,EAAiBjM,GAK1C,IAJA,IAAM9qB,EAAS1uK,KAAKssO,uBACd55D,EAAW1yK,KAAKgsO,eAChBnkH,EAAc7nH,KAAK6nH,YACrB0kH,EAAQ1kH,EAAYrpH,OACfc,EAAI,EAAG8sK,EAAKq5B,EAAgBjnM,OAAQc,EAAI8sK,EAAI9sK,GAAKk6L,EACxD9mB,EAAS,GAAK+yB,EAAgBnmM,GAC9BozK,EAAS,GAAK+yB,EAAgBnmM,EAAI,IAC9B,QAAmBovK,EAAQgE,KAC7B7qD,EAAY0kH,KAAW75D,EAAS,GAChC7qD,EAAY0kH,KAAW75D,EAAS,IAGpC,OAAO65D,GAaT,YAAAC,0BAAA,SACE/mC,EACAnjJ,EACAjsB,EACAmjK,EACAizC,EACA5mM,GAEA,IAAMgiF,EAAc7nH,KAAK6nH,YACrB0kH,EAAQ1kH,EAAYrpH,OAClBkwK,EAAS1uK,KAAKssO,uBAChBzmM,IACFyc,GAAUk3I,GAEZ,IAKIl6L,EAAGotO,EAASC,EALZC,EAAannC,EAAgBnjJ,GAC7BuqL,EAAapnC,EAAgBnjJ,EAAS,GACpCwqL,EAAY9sO,KAAKgsO,eACnBe,GAAU,EAGd,IAAKztO,EAAIgjD,EAASk3I,EAAQl6L,EAAI+2B,EAAK/2B,GAAKk6L,EACtCszC,EAAU,GAAKrnC,EAAgBnmM,GAC/BwtO,EAAU,GAAKrnC,EAAgBnmM,EAAI,IACnCqtO,GAAU,QAAuBj+D,EAAQo+D,MACzBJ,GACVK,IACFllH,EAAY0kH,KAAWK,EACvB/kH,EAAY0kH,KAAWM,EACvBE,GAAU,GAEZllH,EAAY0kH,KAAWO,EAAU,GACjCjlH,EAAY0kH,KAAWO,EAAU,IACxBH,IAAY,kBACrB9kH,EAAY0kH,KAAWO,EAAU,GACjCjlH,EAAY0kH,KAAWO,EAAU,GACjCC,GAAU,GAEVA,GAAU,EAEZH,EAAaE,EAAU,GACvBD,EAAaC,EAAU,GACvBJ,EAAUC,EAQZ,OAJKF,GAAUM,GAAYztO,IAAMgjD,EAASk3I,KACxC3xE,EAAY0kH,KAAWK,EACvB/kH,EAAY0kH,KAAWM,GAElBN,GAWT,YAAAS,uBAAA,SAAuBvnC,EAAiBnjJ,EAAQupJ,EAAMrS,EAAQyzC,GAC5D,IAAK,IAAI3tO,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC7C,IAAM+2B,EAAMw1K,EAAKvsM,GACX4tO,EAAaltO,KAAKwsO,0BACtB/mC,EACAnjJ,EACAjsB,EACAmjK,GACA,GACA,GAEFyzC,EAAY7oO,KAAK8oO,GACjB5qL,EAASjsB,EAEX,OAAOisB,GAST,YAAAulL,WAAA,SAAWlhH,EAAUsrD,EAAS8N,EAAU+nD,GACtC9nO,KAAKmtO,cAAcxmH,EAAUsrD,GAE7B,IAIIwzB,EAAiBynC,EAAYD,EAAaG,EAC1C9qL,EALEjkD,EAAOsoH,EAASwyE,UAChBK,EAAS7yE,EAAS8yE,YAClB4zC,EAAertO,KAAK6nH,YAAYrpH,OAKtC,OAAQH,GACN,KAAK,kBACHonM,EAC8D,EAE1DoI,6BACJu/B,EAAe,GACf,IAAMrgC,EACwD,EAE1DgB,WACJzrJ,EAAS,EACT,IAAK,IAAIhjD,EAAI,EAAG8sK,EAAK2gC,EAAMvuM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC9C,IAAMguO,EAAS,GACfhrL,EAAStiD,KAAKgtO,uBACZvnC,EACAnjJ,EACAyqJ,EAAMztM,GACNk6L,EACA8zC,GAEFF,EAAahpO,KAAKkpO,GAEpBttO,KAAK+rO,aAAa3nO,KAAK,CACrB,YACAipO,EACAD,EACAzmH,EACAo5D,EACA,OAEF//K,KAAKisO,yBAAyB7nO,KAAK,CACjC,YACAipO,EACAD,EACAzmH,EACAmhH,GAAwB/nD,EACxB,OAEF,MACF,KAAK,YACL,KAAK,sBACHktD,EAAc,GACdxnC,EACEpnM,GAAQ,YACmD,EAErDwvM,6BACFlnF,EAAS4yE,qBACfj3I,EAAStiD,KAAKgtO,uBACZvnC,EACA,EACuG,EAErG0G,UACF3S,EACAyzC,GAEFjtO,KAAK+rO,aAAa3nO,KAAK,CACrB,YACAipO,EACAJ,EACAtmH,EACAo5D,EACA,OAEF//K,KAAKisO,yBAAyB7nO,KAAK,CACjC,YACAipO,EACAJ,EACAtmH,EACAmhH,GAAwB/nD,EACxB,OAEF,MACF,KAAK,gBACL,KAAK,WACH0lB,EAAkB9+E,EAAS4yE,qBAC3B2zC,EAAaltO,KAAKwsO,0BAChB/mC,EACA,EACAA,EAAgBjnM,OAChBg7L,GACA,GACA,GAEFx5L,KAAK+rO,aAAa3nO,KAAK,CACrB,YACAipO,EACAH,EACAvmH,EACAo5D,EACA,OAEF//K,KAAKisO,yBAAyB7nO,KAAK,CACjC,YACAipO,EACAH,EACAvmH,EACAmhH,GAAwB/nD,EACxB,OAEF,MACF,KAAK,gBACH0lB,EAAkB9+E,EAAS4yE,sBAC3B2zC,EAAaltO,KAAKqsO,2BAA2B5mC,EAAiBjM,IAE7C6zC,IACfrtO,KAAK+rO,aAAa3nO,KAAK,CACrB,YACAipO,EACAH,EACAvmH,EACAo5D,EACA,OAEF//K,KAAKisO,yBAAyB7nO,KAAK,CACjC,YACAipO,EACAH,EACAvmH,EACAmhH,GAAwB/nD,EACxB,QAGJ,MACF,KAAK,UACH0lB,EAAkB9+E,EAAS4yE,qBAC3Bv5L,KAAK6nH,YAAYzjH,KAAKqhM,EAAgB,GAAIA,EAAgB,IAC1DynC,EAAaltO,KAAK6nH,YAAYrpH,OAE9BwB,KAAK+rO,aAAa3nO,KAAK,CACrB,YACAipO,EACAH,EACAvmH,EACAo5D,IAEF//K,KAAKisO,yBAAyB7nO,KAAK,CACjC,YACAipO,EACAH,EACAvmH,EACAmhH,GAAwB/nD,IAK9B//K,KAAKutO,YAAYt7D,IAQnB,YAAAk7D,cAAA,SAAcxmH,EAAUsrD,GACtBjyK,KAAK4rO,2BAA6B,CAChC,oBACA35D,EACA,EACAtrD,GAEF3mH,KAAK+rO,aAAa3nO,KAAKpE,KAAK4rO,4BAC5B5rO,KAAK6rO,2BAA6B,CAChC,oBACA55D,EACA,EACAtrD,GAEF3mH,KAAKisO,yBAAyB7nO,KAAKpE,KAAK6rO,6BAM1C,YAAAl9M,OAAA,WACE,MAAO,CACLo9M,aAAc/rO,KAAK+rO,aACnBE,yBAA0BjsO,KAAKisO,yBAC/BpkH,YAAa7nH,KAAK6nH,cAOtB,YAAA2lH,gCAAA,WACE,IAIIluO,EAJE2sO,EAA2BjsO,KAAKisO,yBAEtCA,EAAyBrvM,UAGzB,IACI6wM,EACApvO,EAFEw/F,EAAIouI,EAAyBztO,OAG/B0oL,GAAS,EACb,IAAK5nL,EAAI,EAAGA,EAAIu+F,IAAKv+F,GAEnBjB,GADAovO,EAAcxB,EAAyB3sO,IAC+B,KAC1D,kBACV4nL,EAAQ5nL,EACCjB,GAAQ,sBACjBovO,EAAY,GAAKnuO,GACjB,QAAgBU,KAAKisO,yBAA0B/kD,EAAO5nL,GACtD4nL,GAAS,IASf,YAAA8hD,mBAAA,SAAmBrhL,EAAWE,GAC5B,IAAM3f,EAAQloC,KAAKkoC,MACnB,GAAIyf,EAAW,CACb,IAAM+lL,EAAiB/lL,EAAUgmL,WACjCzlM,EAAMyf,WAAY,OAChB+lL,GAAkC,WAGpCxlM,EAAMyf,eAAY1pD,EAEpB,GAAI4pD,EAAa,CACf,IAAM+lL,EAAmB/lL,EAAY8lL,WACrCzlM,EAAM2f,aAAc,OAClB+lL,GAAsC,MAExC,IAAMC,EAAqBhmL,EAAYimL,aACvC5lM,EAAMqwC,aACmBt6E,IAAvB4vO,EAAmCA,EAAqB,KAC1D,IAAME,EAAsBlmL,EAAYmmL,cACxC9lM,EAAMk9C,SAAW2oJ,EACbA,EAAoB5rO,QACpB,KACJ,IAAM8rO,EAA4BpmL,EAAYqmL,oBAC9ChmM,EAAMm+B,eAAiB4nK,GAEnB,KACJ,IAAME,EAAsBtmL,EAAYumL,cACxClmM,EAAMkwC,cACoBn6E,IAAxBkwO,EACIA,EACA,KACN,IAAME,EAAmBxmL,EAAYsoI,WACrCjoJ,EAAM6f,eACiB9pD,IAArBowO,EAAiCA,EAAmB,KACtD,IAAMC,EAAwBzmL,EAAY0mL,gBAC1CrmM,EAAMsmM,gBACsBvwO,IAA1BqwO,EACIA,EACA,KAEFpmM,EAAM6f,UAAY/nD,KAAKkpF,eACzBlpF,KAAKkpF,aAAehhD,EAAM6f,UAE1B/nD,KAAK8rO,mBAAqB,WAG5B5jM,EAAM2f,iBAAc5pD,EACpBiqC,EAAMqwC,aAAUt6E,EAChBiqC,EAAMk9C,SAAW,KACjBl9C,EAAMm+B,oBAAiBpoE,EACvBiqC,EAAMkwC,cAAWn6E,EACjBiqC,EAAM6f,eAAY9pD,EAClBiqC,EAAMsmM,gBAAavwO,GAQvB,YAAAwwO,WAAA,SAAWvmM,GACT,IAAMyf,EAAYzf,EAAMyf,UAElB+mL,EAAkB,CAAC,oBAAkC/mL,GAK3D,MAJyB,iBAAdA,GAET+mL,EAAgBtqO,MAAK,GAEhBsqO,GAMT,YAAAC,YAAA,SAAYzmM,GACVloC,KAAK+rO,aAAa3nO,KAAKpE,KAAK4uO,aAAa1mM,KAO3C,YAAA0mM,aAAA,SAAa1mM,GACX,MAAO,CACL,sBACAA,EAAM2f,YACN3f,EAAM6f,UAAY/nD,KAAK87G,WACvB5zE,EAAMqwC,QACNrwC,EAAMkwC,SACNlwC,EAAMsmM,WACNxuO,KAAKksO,gBAAgBhkM,EAAMk9C,UAC3Bl9C,EAAMm+B,eAAiBrmE,KAAK87G,aAQhC,YAAA+yH,gBAAA,SAAgB3mM,EAAOumM,GACrB,IAAM9mL,EAAYzf,EAAMyf,UACC,iBAAdA,GAA0Bzf,EAAM4mM,kBAAoBnnL,SAC3C1pD,IAAd0pD,GACF3nD,KAAK+rO,aAAa3nO,KAAKqqO,EAAW9tO,KAAKX,KAAMkoC,IAE/CA,EAAM4mM,iBAAmBnnL,IAQ7B,YAAAonL,kBAAA,SAAkB7mM,EAAOymM,GACvB,IAAM9mL,EAAc3f,EAAM2f,YACpB0wB,EAAUrwC,EAAMqwC,QAChB6M,EAAWl9C,EAAMk9C,SACjB/e,EAAiBn+B,EAAMm+B,eACvB+R,EAAWlwC,EAAMkwC,SACjBrwB,EAAY7f,EAAM6f,UAClBymL,EAAatmM,EAAMsmM,YAEvBtmM,EAAM8mM,oBAAsBnnL,GAC5B3f,EAAM+mM,gBAAkB12J,GACvB6M,GAAYl9C,EAAMgnM,mBAChB,QAAOhnM,EAAMgnM,gBAAiB9pJ,IACjCl9C,EAAMinM,uBAAyB9oK,GAC/Bn+B,EAAMknM,iBAAmBh3J,GACzBlwC,EAAMmnM,kBAAoBtnL,GAC1B7f,EAAMonM,mBAAqBd,UAEPvwO,IAAhB4pD,GACF8mL,EAAYhuO,KAAKX,KAAMkoC,GAEzBA,EAAM8mM,mBAAqBnnL,EAC3B3f,EAAM+mM,eAAiB12J,EACvBrwC,EAAMgnM,gBAAkB9pJ,EACxBl9C,EAAMinM,sBAAwB9oK,EAC9Bn+B,EAAMknM,gBAAkBh3J,EACxBlwC,EAAMmnM,iBAAmBtnL,EACzB7f,EAAMonM,kBAAoBd,IAO9B,YAAAjB,YAAA,SAAYt7D,GACVjyK,KAAK4rO,2BAA2B,GAAK5rO,KAAK+rO,aAAavtO,OACvDwB,KAAK4rO,2BAA6B,KAClC5rO,KAAK6rO,2BAA2B,GAAK7rO,KAAKisO,yBAAyBztO,OACnEwB,KAAK6rO,2BAA6B,KAClC,IAAM0D,EAAyB,CAAC,kBAAgCt9D,GAChEjyK,KAAK+rO,aAAa3nO,KAAKmrO,GACvBvvO,KAAKisO,yBAAyB7nO,KAAKmrO,IAUrC,YAAAjD,qBAAA,WACE,IAAKtsO,KAAK8rO,qBACR9rO,KAAK8rO,oBAAqB,QAAM9rO,KAAKoxL,WACjCpxL,KAAKkpF,aAAe,GAAG,CACzB,IAAMttF,EAASoE,KAAK2uK,YAAc3uK,KAAKkpF,aAAe,GAAM,GAC5D,QAAOlpF,KAAK8rO,mBAAoBlwO,EAAOoE,KAAK8rO,oBAGhD,OAAO9rO,KAAK8rO,oBAEhB,EA1mBA,CAA4B,ghBCsO5B,QA/PA,YAOE,WAAYx3B,EAAWljB,EAAWziB,EAAY7yD,GAA9C,MACE,YAAMw4F,EAAWljB,EAAWziB,EAAY7yD,IAAW,YAMnD,EAAK0zH,mBAAqB,KAM1B,EAAKx/D,OAAS,KAMd,EAAKy/D,sBAAmBxxO,EAMxB,EAAKyxO,cAAWzxO,EAMhB,EAAK0xO,cAAW1xO,EAMhB,EAAK2xO,aAAU3xO,EAMf,EAAK4xO,cAAW5xO,EAMhB,EAAK6xO,cAAW7xO,EAMhB,EAAK8xO,cAAW9xO,EAMhB,EAAK+xO,qBAAkB/xO,EAMvB,EAAK4/L,eAAY5/L,EAMjB,EAAKgyO,YAAShyO,EAMd,EAAKiyO,YAASjyO,EAOd,EAAKkyO,6BAA0BlyO,IAgKnC,OA7PiC,OAoG/B,YAAAyzG,UAAA,SAAUm3H,EAAe52D,GACvB,GAAKjyK,KAAKgwK,OAAV,CAGAhwK,KAAKmtO,cAActE,EAAe52D,GAClC,IAAMwzB,EAAkBojC,EAActvC,qBAChCC,EAASqvC,EAAcpvC,YACvB22C,EAAUpwO,KAAK6nH,YAAYrpH,OAC3B+tO,EAAQvsO,KAAKqsO,2BAA2B5mC,EAAiBjM,GAC/Dx5L,KAAK+rO,aAAa3nO,KAAK,CACrB,gBACAgsO,EACA7D,EACAvsO,KAAKgwK,OAELhwK,KAAK0vO,SAAW1vO,KAAKyvO,iBACrBzvO,KAAK2vO,SAAW3vO,KAAKyvO,iBACrBxiO,KAAK+rD,KAAKh5D,KAAK4vO,QAAU5vO,KAAKyvO,kBAC9BzvO,KAAK6vO,SACL7vO,KAAK8vO,SACL9vO,KAAK+vO,SACL/vO,KAAKgwO,gBACLhwO,KAAK69L,UACL,CACG79L,KAAKiwO,OAAO,GAAKjwO,KAAK87G,WAAc97G,KAAKyvO,iBACzCzvO,KAAKiwO,OAAO,GAAKjwO,KAAK87G,WAAc97G,KAAKyvO,kBAE5CxiO,KAAK+rD,KAAKh5D,KAAKkwO,OAASlwO,KAAKyvO,kBAC7BzvO,KAAKmwO,0BAEPnwO,KAAKisO,yBAAyB7nO,KAAK,CACjC,gBACAgsO,EACA7D,EACAvsO,KAAKwvO,mBAELxvO,KAAK0vO,SACL1vO,KAAK2vO,SACL3vO,KAAK4vO,QACL5vO,KAAK6vO,SACL7vO,KAAK8vO,SACL9vO,KAAK+vO,SACL/vO,KAAKgwO,gBACLhwO,KAAK69L,UACL79L,KAAKiwO,OACLjwO,KAAKkwO,OACLlwO,KAAKmwO,0BAEPnwO,KAAKutO,YAAYt7D,KAOnB,YAAAw2D,eAAA,SAAeC,EAAoBz2D,GACjC,GAAKjyK,KAAKgwK,OAAV,CAGAhwK,KAAKmtO,cAAczE,EAAoBz2D,GACvC,IAAMwzB,EAAkBijC,EAAmBnvC,qBACrCC,EAASkvC,EAAmBjvC,YAC5B22C,EAAUpwO,KAAK6nH,YAAYrpH,OAC3B+tO,EAAQvsO,KAAKqsO,2BAA2B5mC,EAAiBjM,GAC/Dx5L,KAAK+rO,aAAa3nO,KAAK,CACrB,gBACAgsO,EACA7D,EACAvsO,KAAKgwK,OAELhwK,KAAK0vO,SAAW1vO,KAAKyvO,iBACrBzvO,KAAK2vO,SAAW3vO,KAAKyvO,iBACrBxiO,KAAK+rD,KAAKh5D,KAAK4vO,QAAU5vO,KAAKyvO,kBAC9BzvO,KAAK6vO,SACL7vO,KAAK8vO,SACL9vO,KAAK+vO,SACL/vO,KAAKgwO,gBACLhwO,KAAK69L,UACL,CACG79L,KAAKiwO,OAAO,GAAKjwO,KAAK87G,WAAc97G,KAAKyvO,iBACzCzvO,KAAKiwO,OAAO,GAAKjwO,KAAK87G,WAAc97G,KAAKyvO,kBAE5CxiO,KAAK+rD,KAAKh5D,KAAKkwO,OAASlwO,KAAKyvO,kBAC7BzvO,KAAKmwO,0BAEPnwO,KAAKisO,yBAAyB7nO,KAAK,CACjC,gBACAgsO,EACA7D,EACAvsO,KAAKwvO,mBAELxvO,KAAK0vO,SACL1vO,KAAK2vO,SACL3vO,KAAK4vO,QACL5vO,KAAK6vO,SACL7vO,KAAK8vO,SACL9vO,KAAK+vO,SACL/vO,KAAKgwO,gBACLhwO,KAAK69L,UACL79L,KAAKiwO,OACLjwO,KAAKkwO,OACLlwO,KAAKmwO,0BAEPnwO,KAAKutO,YAAYt7D,KAMnB,YAAAtjJ,OAAA,WAgBE,OAfA3uB,KAAKwtO,kCAELxtO,KAAK0vO,cAAWzxO,EAChB+B,KAAK2vO,cAAW1xO,EAChB+B,KAAKwvO,mBAAqB,KAC1BxvO,KAAKgwK,OAAS,KACdhwK,KAAKyvO,sBAAmBxxO,EACxB+B,KAAK4vO,aAAU3xO,EACf+B,KAAKiwO,YAAShyO,EACd+B,KAAK6vO,cAAW5xO,EAChB+B,KAAK8vO,cAAW7xO,EAChB+B,KAAK+vO,cAAW9xO,EAChB+B,KAAKgwO,qBAAkB/xO,EACvB+B,KAAK69L,eAAY5/L,EACjB+B,KAAKkwO,YAASjyO,EACP,YAAM0wB,OAAM,YAOrB,YAAAs6M,cAAA,SAAcC,EAAYmH,GACxB,IAAM1rH,EAASukH,EAAWoH,YACpB77M,EAAOy0M,EAAW9oD,UAClBmwD,EAAoBrH,EAAWsH,uBAC/BphE,EAAQ85D,EAAWn6D,SAAS/uK,KAAK87G,YACjCtoF,EAAS01M,EAAW5N,YAC1Bt7N,KAAKyvO,iBAAmBvG,EAAWl6D,cAAchvK,KAAK87G,YACtD97G,KAAK0vO,SAAW/qH,EAAO,GACvB3kH,KAAK2vO,SAAWhrH,EAAO,GACvB3kH,KAAKwvO,mBAAqBe,EAC1BvwO,KAAKgwK,OAASZ,EACdpvK,KAAK4vO,QAAUn7M,EAAK,GACpBz0B,KAAK6vO,SAAW3G,EAAWpuB,aAC3B96M,KAAK8vO,SAAWt8M,EAAO,GAAKxzB,KAAKyvO,iBACjCzvO,KAAK+vO,SAAWv8M,EAAO,GAAKxzB,KAAKyvO,iBACjCzvO,KAAKgwO,gBAAkB9G,EAAWuH,oBAClCzwO,KAAK69L,UAAYqrC,EAAWliD,cAC5BhnL,KAAKiwO,OAAS/G,EAAWwH,gBACzB1wO,KAAKkwO,OAASz7M,EAAK,GACnBz0B,KAAKmwO,wBAA0BE,GAEnC,EA7PA,CAAiC,4eC4JjC,QAxJA,YAOE,WAAY/7B,EAAWljB,EAAWziB,EAAY7yD,UAC5C,YAAMw4F,EAAWljB,EAAWziB,EAAY7yD,IAAW,KA8IvD,OAtJsC,OAmBpC,YAAA60H,qBAAA,SAAqBlrC,EAAiBnjJ,EAAQjsB,EAAKmjK,GACjD,IAAM42C,EAAUpwO,KAAK6nH,YAAYrpH,OAC3B+tO,EAAQvsO,KAAKwsO,0BACjB/mC,EACAnjJ,EACAjsB,EACAmjK,GACA,GACA,GAEIo3C,EAA0B,CAC9B,qBACAR,EACA7D,GAIF,OAFAvsO,KAAK+rO,aAAa3nO,KAAKwsO,GACvB5wO,KAAKisO,yBAAyB7nO,KAAKwsO,GAC5Bv6M,GAOT,YAAAgyM,eAAA,SAAeC,EAAoBr2D,GACjC,IAAM/pI,EAAQloC,KAAKkoC,MACb2f,EAAc3f,EAAM2f,YACpBE,EAAY7f,EAAM6f,UACxB,QAAoB9pD,IAAhB4pD,QAA2C5pD,IAAd8pD,EAAjC,CAGA/nD,KAAK+uO,kBAAkB7mM,EAAOloC,KAAK2uO,aACnC3uO,KAAKmtO,cAAc7E,EAAoBr2D,GACvCjyK,KAAKisO,yBAAyB7nO,KAC5B,CACE,sBACA8jC,EAAM2f,YACN3f,EAAM6f,UACN7f,EAAMqwC,QACNrwC,EAAMkwC,SACNlwC,EAAMsmM,WACN,KACA,MAEF,MAEF,IAAM/oC,EAAkB6iC,EAAmB/uC,qBACrCC,EAAS8uC,EAAmB7uC,YAClCz5L,KAAK2wO,qBACHlrC,EACA,EACAA,EAAgBjnM,OAChBg7L,GAEFx5L,KAAKisO,yBAAyB7nO,KAAK,MACnCpE,KAAKutO,YAAYt7D,KAOnB,YAAAs2D,oBAAA,SAAoBC,EAAyBv2D,GAC3C,IAAM/pI,EAAQloC,KAAKkoC,MACb2f,EAAc3f,EAAM2f,YACpBE,EAAY7f,EAAM6f,UACxB,QAAoB9pD,IAAhB4pD,QAA2C5pD,IAAd8pD,EAAjC,CAGA/nD,KAAK+uO,kBAAkB7mM,EAAOloC,KAAK2uO,aACnC3uO,KAAKmtO,cAAc3E,EAAyBv2D,GAC5CjyK,KAAKisO,yBAAyB7nO,KAC5B,CACE,sBACA8jC,EAAM2f,YACN3f,EAAM6f,UACN7f,EAAMqwC,QACNrwC,EAAMkwC,SACNlwC,EAAMsmM,WACNtmM,EAAMk9C,SACNl9C,EAAMm+B,gBAER,MAMF,IAJA,IAAMwlI,EAAO28B,EAAwBr8B,UAC/B1G,EAAkB+iC,EAAwBjvC,qBAC1CC,EAASgvC,EAAwB/uC,YACnCn3I,EAAS,EACJhjD,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAC1CgjD,EAAStiD,KAAK2wO,qBACZlrC,EACAnjJ,EACuBupJ,EAAKvsM,GAC5Bk6L,GAGJx5L,KAAKisO,yBAAyB7nO,KAAK,MACnCpE,KAAKutO,YAAYt7D,KAMnB,YAAAtjJ,OAAA,WACE,IAAMuZ,EAAQloC,KAAKkoC,MASnB,OAPsBjqC,MAApBiqC,EAAM2oM,YACN3oM,EAAM2oM,YAAc7wO,KAAK6nH,YAAYrpH,QAErCwB,KAAK+rO,aAAa3nO,KAAK,MAEzBpE,KAAKwtO,kCACLxtO,KAAKkoC,MAAQ,KACN,YAAMvZ,OAAM,YAMrB,YAAAggN,YAAA,SAAYzmM,GAEYjqC,MAApBiqC,EAAM2oM,YACN3oM,EAAM2oM,YAAc7wO,KAAK6nH,YAAYrpH,SAErCwB,KAAK+rO,aAAa3nO,KAAK,MACvB8jC,EAAM2oM,WAAa7wO,KAAK6nH,YAAYrpH,QAEtC0pC,EAAM2oM,WAAa,EACnB,YAAMlC,YAAW,UAACzmM,GAClBloC,KAAK+rO,aAAa3nO,KAAK,OAE3B,EAtJA,CAAsC,6eCsPtC,QAnPA,YAOE,WAAYkwM,EAAWljB,EAAWziB,EAAY7yD,UAC5C,YAAMw4F,EAAWljB,EAAWziB,EAAY7yD,IAAW,KAyOvD,OAjPmC,OAmBjC,YAAAg1H,sBAAA,SAAsBrrC,EAAiBnjJ,EAAQupJ,EAAMrS,GACnD,IAAMtxJ,EAAQloC,KAAKkoC,MACbhE,OAA2BjmC,IAApBiqC,EAAMyf,UACb8e,OAA+BxoE,IAAtBiqC,EAAM2f,YACfgpJ,EAAUhF,EAAKrtM,OACrBwB,KAAK+rO,aAAa3nO,KAAK,MACvBpE,KAAKisO,yBAAyB7nO,KAAK,MACnC,IAAK,IAAI9E,EAAI,EAAGA,EAAIuxM,IAAWvxM,EAAG,CAChC,IAAM+2B,EAAMw1K,EAAKvsM,GACX8wO,EAAUpwO,KAAK6nH,YAAYrpH,OAC3B+tO,EAAQvsO,KAAKwsO,0BACjB/mC,EACAnjJ,EACAjsB,EACAmjK,GACA,GACC/yH,GAEGmqK,EAA0B,CAC9B,qBACAR,EACA7D,GAEFvsO,KAAK+rO,aAAa3nO,KAAKwsO,GACvB5wO,KAAKisO,yBAAyB7nO,KAAKwsO,GAC/BnqK,IAGFzmE,KAAK+rO,aAAa3nO,KAAK,MACvBpE,KAAKisO,yBAAyB7nO,KAAK,OAErCk+C,EAASjsB,EAUX,OARI6N,IACFlkC,KAAK+rO,aAAa3nO,KAAK,MACvBpE,KAAKisO,yBAAyB7nO,KAAK,OAEjCqiE,IACFzmE,KAAK+rO,aAAa3nO,KAAK,MACvBpE,KAAKisO,yBAAyB7nO,KAAK,OAE9Bk+C,GAOT,YAAA0lL,WAAA,SAAWC,EAAgBh2D,GACzB,IAAM/pI,EAAQloC,KAAKkoC,MACbyf,EAAYzf,EAAMyf,UAClBE,EAAc3f,EAAM2f,YAC1B,QAAkB5pD,IAAd0pD,QAA2C1pD,IAAhB4pD,EAA/B,CAGA7nD,KAAK+wO,uBACL/wO,KAAKmtO,cAAclF,EAAgBh2D,QACXh0K,IAApBiqC,EAAMyf,WACR3nD,KAAKisO,yBAAyB7nO,KAAK,CACjC,oBACA,YAGsBnG,IAAtBiqC,EAAM2f,aACR7nD,KAAKisO,yBAAyB7nO,KAAK,CACjC,sBACA8jC,EAAM2f,YACN3f,EAAM6f,UACN7f,EAAMqwC,QACNrwC,EAAMkwC,SACNlwC,EAAMsmM,WACNtmM,EAAMk9C,SACNl9C,EAAMm+B,iBAGV,IAAMo/H,EAAkBwiC,EAAe1uC,qBACjCC,EAASyuC,EAAexuC,YACxB22C,EAAUpwO,KAAK6nH,YAAYrpH,OACjCwB,KAAKwsO,0BACH/mC,EACA,EACAA,EAAgBjnM,OAChBg7L,GACA,GACA,GAEF,IAAMw3C,EAAoB,CAAC,YAA0BZ,GACrDpwO,KAAK+rO,aAAa3nO,KAAK,KAAsB4sO,GAC7ChxO,KAAKisO,yBAAyB7nO,KAAK,KAAsB4sO,QACjC/yO,IAApBiqC,EAAMyf,YACR3nD,KAAK+rO,aAAa3nO,KAAK,MACvBpE,KAAKisO,yBAAyB7nO,KAAK,YAEXnG,IAAtBiqC,EAAM2f,cACR7nD,KAAK+rO,aAAa3nO,KAAK,MACvBpE,KAAKisO,yBAAyB7nO,KAAK,OAErCpE,KAAKutO,YAAYt7D,KAOnB,YAAA62D,YAAA,SAAYC,EAAiB92D,GAC3B,IAAM/pI,EAAQloC,KAAKkoC,MACbyf,EAAYzf,EAAMyf,UAClBE,EAAc3f,EAAM2f,YAC1B,QAAkB5pD,IAAd0pD,QAA2C1pD,IAAhB4pD,EAA/B,CAGA7nD,KAAK+wO,uBACL/wO,KAAKmtO,cAAcpE,EAAiB92D,QACZh0K,IAApBiqC,EAAMyf,WACR3nD,KAAKisO,yBAAyB7nO,KAAK,CACjC,oBACA,YAGsBnG,IAAtBiqC,EAAM2f,aACR7nD,KAAKisO,yBAAyB7nO,KAAK,CACjC,sBACA8jC,EAAM2f,YACN3f,EAAM6f,UACN7f,EAAMqwC,QACNrwC,EAAMkwC,SACNlwC,EAAMsmM,WACNtmM,EAAMk9C,SACNl9C,EAAMm+B,iBAGV,IAAMwlI,EAAOk9B,EAAgB58B,UACvB1G,EAAkBsjC,EAAgBl7B,6BAClCrU,EAASuvC,EAAgBtvC,YAC/Bz5L,KAAK8wO,sBACHrrC,EACA,EAC6B,EAC7BjM,GAEFx5L,KAAKutO,YAAYt7D,KAOnB,YAAA02D,iBAAA,SAAiBC,EAAsB32D,GACrC,IAAM/pI,EAAQloC,KAAKkoC,MACbyf,EAAYzf,EAAMyf,UAClBE,EAAc3f,EAAM2f,YAC1B,QAAkB5pD,IAAd0pD,QAA2C1pD,IAAhB4pD,EAA/B,CAGA7nD,KAAK+wO,uBACL/wO,KAAKmtO,cAAcvE,EAAsB32D,QACjBh0K,IAApBiqC,EAAMyf,WACR3nD,KAAKisO,yBAAyB7nO,KAAK,CACjC,oBACA,YAGsBnG,IAAtBiqC,EAAM2f,aACR7nD,KAAKisO,yBAAyB7nO,KAAK,CACjC,sBACA8jC,EAAM2f,YACN3f,EAAM6f,UACN7f,EAAMqwC,QACNrwC,EAAMkwC,SACNlwC,EAAMsmM,WACNtmM,EAAMk9C,SACNl9C,EAAMm+B,iBAOV,IAJA,IAAM0mI,EAAQ67B,EAAqB76B,WAC7BtI,EAAkBmjC,EAAqB/6B,6BACvCrU,EAASovC,EAAqBnvC,YAChCn3I,EAAS,EACJhjD,EAAI,EAAG8sK,EAAK2gC,EAAMvuM,OAAQc,EAAI8sK,IAAM9sK,EAC3CgjD,EAAStiD,KAAK8wO,sBACZrrC,EACAnjJ,EACAyqJ,EAAMztM,GACNk6L,GAGJx5L,KAAKutO,YAAYt7D,KAMnB,YAAAtjJ,OAAA,WACE3uB,KAAKwtO,kCACLxtO,KAAKkoC,MAAQ,KAKb,IAAMosK,EAAYt0M,KAAKs0M,UACvB,GAAkB,IAAdA,EAEF,IADA,IAAMzsF,EAAc7nH,KAAK6nH,YAChBvoH,EAAI,EAAG8sK,EAAKvkD,EAAYrpH,OAAQc,EAAI8sK,IAAM9sK,EACjDuoH,EAAYvoH,IAAK,QAAKuoH,EAAYvoH,GAAIg1M,GAG1C,OAAO,YAAM3lL,OAAM,YAMrB,YAAAoiN,qBAAA,WACE,IAAM7oM,EAAQloC,KAAKkoC,WAEDjqC,IADAiqC,EAAMyf,WAEtB3nD,KAAK6uO,gBAAgB3mM,EAAOloC,KAAKyuO,iBAETxwO,IAAtBiqC,EAAM2f,aACR7nD,KAAK+uO,kBAAkB7mM,EAAOloC,KAAK2uO,cAGzC,EAjPA,CAAmC,mBCA7BsC,EAAqB,CACzB,OAAUC,EACV,QAAWC,EAAA,EACX,MAASC,EACT,WAAcC,EACd,QAAWH,EACX,KAAQI,EAAA,GAqFV,QAlFA,WAOE,WAAYh9B,EAAWljB,EAAWziB,EAAY7yD,GAK5C97G,KAAKuxO,WAAaj9B,EAMlBt0M,KAAKwxO,WAAapgD,EAMlBpxL,KAAK4uK,YAAc9yD,EAMnB97G,KAAKyxO,YAAc9iE,EAMnB3uK,KAAK0xO,kBAAoB,GA4C7B,OAtCE,YAAA/iN,OAAA,WACE,IAAMgjN,EAAsB,GAC5B,IAAK,IAAMC,KAAQ5xO,KAAK0xO,kBAAmB,CACzCC,EAAoBC,GAAQD,EAAoBC,IAAS,GACzD,IAAMC,EAAW7xO,KAAK0xO,kBAAkBE,GACxC,IAAK,IAAME,KAAcD,EAAU,CACjC,IAAME,EAAqBF,EAASC,GAAYnjN,SAChDgjN,EAAoBC,GAAME,GAAcC,GAG5C,OAAOJ,GAQT,YAAAK,WAAA,SAAWn+D,EAAQo+D,GACjB,IAAMC,OAAuBj0O,IAAX41K,EAAuBA,EAAO/zK,WAAa,IACzDqyO,EAAUnyO,KAAK0xO,kBAAkBQ,QACrBj0O,IAAZk0O,IACFA,EAAU,GACVnyO,KAAK0xO,kBAAkBQ,GAAaC,GAEtC,IAAIh+J,EAASg+J,EAAQF,GAWrB,YAVeh0O,IAAXk2E,IAEFA,EAAS,IAAIi+J,EADOnB,EAAmBgB,IAErCjyO,KAAKuxO,WACLvxO,KAAKwxO,WACLxxO,KAAKyxO,YACLzxO,KAAK4uK,aAEPujE,EAAQF,GAAe99J,GAElBA,GAEX,EAhFA,iDCfA,SACEw+H,OAAQ,SACR0/B,QAAS,UACTC,MAAO,QACPlgC,YAAa,aACbE,QAAS,UACT1J,KAAM,mJCSD,SAAS2pC,EACd9sC,EACAnjJ,EACAjsB,EACAmjK,EACA1+K,EACA03N,EACAC,EACA1iM,EACAm7L,EACA5vK,EACA3gB,EACAiJ,GAEA,IAAIugB,EAAKshI,EAAgBnjJ,GACrB8hB,EAAKqhI,EAAgBnjJ,EAAS,GAC9B2hB,EAAK,EACLC,EAAK,EACLqzI,EAAgB,EAChBm7B,EAAW,EAEf,SAAS/oE,IACP1lG,EAAKE,EACLD,EAAKE,EAELD,EAAKshI,EADLnjJ,GAAUk3I,GAEVp1H,EAAKqhI,EAAgBnjJ,EAAS,GAC9BowL,GAAYn7B,EACZA,EAAgBtqM,KAAK+gD,MAAMmW,EAAKF,IAAOE,EAAKF,IAAOG,EAAKF,IAAOE,EAAKF,IAEtE,GACEylG,UACOrnH,EAASjsB,EAAMmjK,GAAUk5C,EAAWn7B,EAAgBi7B,GAU7D,IARA,IAAIl4J,EACgB,IAAlBi9H,EAAsB,GAAKi7B,EAASE,GAAYn7B,EAC5Co7B,GAAS,QAAK1uK,EAAIE,EAAImW,GACtBs4J,GAAS,QAAK1uK,EAAIE,EAAIkW,GAEtB01D,EAAc1tF,EAASk3I,EACvBq5C,EAAcH,EACdI,EAAON,EAASziM,EAAQm7L,EAAyB5vK,EAAMxgD,EAAM6/B,GAC5D2H,EAASjsB,EAAMmjK,GAAUk5C,EAAWn7B,EAAgBu7B,GACzDnpE,IAEFrvF,EAAgC,IAAlBi9H,EAAsB,GAAKu7B,EAAOJ,GAAYn7B,EAC5D,IAII36K,EAJEqoB,GAAO,QAAKgf,EAAIE,EAAImW,GACpBp1B,GAAO,QAAKgf,EAAIE,EAAIkW,GAI1B,GAAI12B,EAAU,CACZ,IAAMiyG,EAAO,CAAC88E,EAAQC,EAAQ3tL,EAAMC,IACpC,QAAO2wG,EAAM,EAAG,EAAG,EAAGjyG,EAAUiyG,EAAMA,GACtCj5H,EAAUi5H,EAAK,GAAKA,EAAK,QAEzBj5H,EAAU+1M,EAAS1tL,EAGrB,IAUI8tL,EAVE37J,EAAKnqE,KAAKmqE,GACVjwE,EAAS,GACT6rO,EAAgBhjG,EAAcwpD,IAAWl3I,EAU/C,GAPAi1J,EAAgB,EAChBm7B,EAAWG,EACX1uK,EAAKshI,EAHLnjJ,EAAS0tF,GAIT5rE,EAAKqhI,EAAgBnjJ,EAAS,GAI1B0wL,EAAe,CACjBrpE,IAEAopE,EAAgB9lO,KAAK2xF,MAAMx6B,EAAKF,EAAIC,EAAKF,GACrCrnC,IACFm2M,GAAiBA,EAAgB,GAAK37J,EAAKA,GAE7C,IAAM9iC,GAAK2Q,EAAO0tL,GAAU,EACtBp+L,GAAK2Q,EAAO0tL,GAAU,EAE5B,OADAzrO,EAAO,GAAK,CAACmtC,EAAGC,GAAIu+L,EAAON,GAAU,EAAGO,EAAej4N,GAChD3T,EAGT,IAAK,IAAI7H,EAAI,EAAG8sK,EAAKtxJ,EAAKtc,OAAQc,EAAI8sK,GAAM,CAC1CzC,IACA,IAAIvkH,EAAQn4C,KAAK2xF,MAAMx6B,EAAKF,EAAIC,EAAKF,GAIrC,GAHIrnC,IACFwoB,GAASA,EAAQ,GAAKgyB,EAAKA,QAEPn5E,IAAlB80O,EAA6B,CAC/B,IAAIziN,EAAQ80B,EAAQ2tL,EAEpB,GADAziN,GAASA,EAAQ8mD,GAAM,EAAIA,EAAK9mD,GAAS8mD,EAAK,EAAIA,EAAK,EACnDnqE,KAAKknB,IAAI7D,GAASmiN,EACpB,OAAO,KAGXM,EAAgB3tL,EAIhB,IAFA,IAAM6tL,EAAS3zO,EACX4zO,EAAa,EACV5zO,EAAI8sK,IAAM9sK,EAAG,CAClB,IACMi9B,EAAMwT,EAAQm7L,EAAyB5vK,EAAMxgD,EADrC8hB,EAAUwvI,EAAK9sK,EAAI,EAAIA,GAC2Bq7C,GAChE,GACE2H,EAASk3I,EAASnjK,GAClBq8M,EAAWn7B,EAAgBi7B,EAASU,EAAa32M,EAAM,EAEvD,MAEF22M,GAAc32M,EAEhB,GAAIj9B,IAAM2zO,EAAV,CAGA,IAAME,EAAQv2M,EACV9hB,EAAKqf,UAAUiyI,EAAK6mE,EAAQ7mE,EAAK9sK,GACjCwb,EAAKqf,UAAU84M,EAAQ3zO,GAC3Bg7E,EACoB,IAAlBi9H,EACI,GACCi7B,EAASU,EAAa,EAAIR,GAAYn7B,EACvCjjK,GAAI,QAAK2vB,EAAIE,EAAImW,GACjB/lC,GAAI,QAAK2vB,EAAIE,EAAIkW,GACvBnzE,EAAO/C,KAAK,CAACkwC,EAAGC,EAAG2+L,EAAa,EAAG9tL,EAAO+tL,IAC1CX,GAAUU,GAEZ,OAAO/rO,0BCzFHg/M,GAAY,UAGZjgJ,EAAK,GAELC,EAAK,GAEL+rF,EAAK,GAEL/6E,EAAK,GAMX,SAASi8J,EAAgBC,GACvB,OAAOA,EAAuB,GAAGC,aAGnC,IAAMC,EAAW,IAAIvjN,OAEnB,IACE9qB,OAAOkgI,aAAa,MAAW,IAAMlgI,OAAOkgI,aAAa,MACzDlgI,OAAOkgI,aAAa,OAAW,IAAMlgI,OAAOkgI,aAAa,OACzDlgI,OAAOkgI,aAAa,OAAW,IAAMlgI,OAAOkgI,aAAa,OACzDlgI,OAAOkgI,aAAa,OAAW,IAAMlgI,OAAOkgI,aAAa,OACzDlgI,OAAOkgI,aAAa,QAAW,IAAMlgI,OAAOkgI,aAAa,QAC3D,KASF,SAASouG,EAAoB14N,EAAMw/C,GAIjC,MAHe,UAAVA,GAA+B,QAAVA,GAAqBi5K,EAAS//N,KAAKsH,KAC3Dw/C,EAAkB,UAAVA,EAAoB,OAAS,SAEhC,IAAWA,GASpB,SAASm5K,EAAiBztO,EAAKgM,EAAM1S,GAKnC,OAJIA,EAAI,GACN0G,EAAI5B,KAAK,KAAM,IAEjB4B,EAAI5B,KAAK4N,EAAM,IACRhM,EAonCT,QAjnCA,WAOE,WAAY2oK,EAAY7yD,EAAY43H,EAAU3H,GAK5C/rO,KAAK0zO,SAAWA,EAMhB1zO,KAAK87G,WAAaA,EAOlB97G,KAAK2uK,WAAaA,EAMlB3uK,KAAK2zO,WAML3zO,KAAK+rO,aAAeA,EAAaA,aAMjC/rO,KAAK6nH,YAAckkH,EAAalkH,YAMhC7nH,KAAK4zO,iBAAmB,GAMxB5zO,KAAK6zO,oBAAqB,UAM1B7zO,KAAKisO,yBAA2BF,EAAaE,yBAM7CjsO,KAAK8zO,kBAAoB,KAMzB9zO,KAAK+zO,cAAgB,EAKrB/zO,KAAKg0O,WAAajI,EAAaiI,YAAc,GAK7Ch0O,KAAKi0O,aAAelI,EAAakI,cAAgB,GAKjDj0O,KAAKk0O,WAAanI,EAAamI,YAAc,GAM7Cl0O,KAAKm0O,QAAU,GAMfn0O,KAAKo0O,QAAU,GA2gCnB,OAjgCE,YAAAC,YAAA,SAAYv5N,EAAMw5N,EAASC,EAASC,GAClC,IAAM3wO,EAAMiX,EAAOw5N,EAAUC,EAAUC,EACvC,GAAIx0O,KAAKo0O,QAAQvwO,GACf,OAAO7D,KAAKo0O,QAAQvwO,GAEtB,IAAM4wO,EAAcD,EAAYx0O,KAAKi0O,aAAaO,GAAa,KACzDE,EAAYH,EAAUv0O,KAAKg0O,WAAWO,GAAW,KACjDI,EAAY30O,KAAKk0O,WAAWI,GAC5Bx4H,EAAa97G,KAAK87G,WAClB/rE,EAAQ,CACZ4kM,EAAU5kM,MAAM,GAAK+rE,EACrB64H,EAAU5kM,MAAM,GAAK+rE,GAEjB84H,EAAct0O,MAAMiF,QAAQuV,GAC5Bw/C,EAAQk5K,EACZoB,EAAc95N,EAAK,GAAKA,EACxB65N,EAAU7vK,WAAa,MAEnBQ,EACJkvK,GAAaC,EAAY1sL,UAAY0sL,EAAY1sL,UAAY,EAEzDmvF,EAAS09F,EACX95N,EACAA,EAAK5Y,MAAM,MAAM6D,OAAO0tO,EAAkB,IAExC,GAA+C,QACnDkB,EACAz9F,GAFKt7I,EAAK,QAAEC,EAAM,SAAEimE,EAAM,SAAEC,EAAO,UAAEwhB,EAAU,aAI3CxsB,EAAcn7D,EAAQ0pE,EACtBomK,EAAsB,GAEtBp7K,GAAKyG,EAAc,GAAKhnB,EAAM,GAC9BygB,GAAK30D,EAASypE,GAAev1B,EAAM,GAEnCiJ,EAAQ,CACZp9C,MAAO00D,EAAI,EAAIrjD,KAAKwjB,MAAM6/B,GAAKrjD,KAAK+rD,KAAK1I,GACzCz0D,OAAQ20D,EAAI,EAAIvjD,KAAKwjB,MAAM+/B,GAAKvjD,KAAK+rD,KAAKxI,GAC1Ck7K,oBAAqBA,GAEP,GAAZ37L,EAAM,IAAuB,GAAZA,EAAM,IACzB27L,EAAoBtnO,KAAK,QAAS2rC,GAEhCykM,IACF9I,EAAoBtnO,KAAK,cAAeqwO,EAAY5sL,aACpD6jL,EAAoBtnO,KAAK,YAAakhE,GACtComK,EAAoBtnO,KAAK,UAAWqwO,EAAYl8J,SAChDmzJ,EAAoBtnO,KAAK,WAAYqwO,EAAYr8J,UACjDszJ,EAAoBtnO,KAAK,aAAcqwO,EAAYjG,aAEnC,KAA0BqG,kCAAoCC,0BAClEj1O,UAAUumE,cACpBslK,EAAoBtnO,KAAK,cAAe,CAACqwO,EAAYrvJ,WACrDsmJ,EAAoBtnO,KAAK,iBAAkBqwO,EAAYpuK,kBAGvDkuK,GACF7I,EAAoBtnO,KAAK,YAAaswO,EAAU/sL,WAElD+jL,EAAoBtnO,KAAK,eAAgB,UACzCsnO,EAAoBtnO,KAAK,YAAa,UAUtC,IATA,IAQI2wO,EAREC,EAAY,GAAM16K,EACpBhmB,EAAIgmB,EAAQvD,EAAci+K,EAAY1vK,EACpC2vK,EAAqB,GACrBC,EAAmB,GACrB35K,EAAa,EACb45K,EAAa,EACbC,EAAmB,EACnBC,EAAiB,EAEZ/1O,EAAI,EAAG8sK,EAAKl1B,EAAO14I,OAAQc,EAAI8sK,EAAI9sK,GAAK,EAAG,CAClD,IAAM,EAAO43I,EAAO53I,GACpB,GAAa,OAAT,EAAJ,CAOA,IAAMg8D,EAAO47E,EAAO53I,EAAI,IAAMq1O,EAAUr5K,KACpCA,IAASy5K,IACPP,GACFS,EAAmB7wO,KAAK,OAAQk3D,GAE9Bi5K,GACFW,EAAiB9wO,KAAK,OAAQk3D,GAEhCy5K,EAAez5K,GAEjBC,EAAatuD,KAAK6mB,IAAIynC,EAAYwG,EAAQqzK,IAC1C,IAAME,EAAiB,CACrB,EACAhhM,EACE0gM,EAAYlzK,EAAOszK,GACnB96K,GAASwH,EAAOszK,GAAoB7xJ,EAAW8xJ,IACjD,IAAO/vK,EAAc/J,GAAc45K,GAErC7gM,GAAKwtB,EAAOszK,GACRZ,GACFS,EAAmB7wO,KAAK,aAAckxO,GAEpCf,GACFW,EAAiB9wO,KAAK,WAAYkxO,KAElCF,OA/BAD,GAAc55K,EACdA,EAAa,EACbjnB,EAAIgmB,EAAQvD,EAAci+K,EAAY1vK,IACpC+vK,EAiCN,OAHA/0O,MAAMT,UAAUuE,KAAKnE,MAAMyrO,EAAqBuJ,GAChD30O,MAAMT,UAAUuE,KAAKnE,MAAMyrO,EAAqBwJ,GAChDl1O,KAAKo0O,QAAQvwO,GAAOm1C,EACbA,GAYT,YAAAu8L,sBAAA,SACEx1O,EACAmmE,EACAC,EACA+rF,EACA/6E,EACAu3J,EACA8G,GAEAz1O,EAAQumE,YACRvmE,EAAQwmE,OAAOtmE,MAAMF,EAASmmE,GAC9BnmE,EAAQymE,OAAOvmE,MAAMF,EAASomE,GAC9BpmE,EAAQymE,OAAOvmE,MAAMF,EAASmyJ,GAC9BnyJ,EAAQymE,OAAOvmE,MAAMF,EAASo3E,GAC9Bp3E,EAAQymE,OAAOvmE,MAAMF,EAASmmE,GAC1BwoK,IACF1uO,KAAK2zO,WAAqCjF,EAAgB,GAC1D1uO,KAAKy1O,MAAM11O,IAETy1O,IACFx1O,KAAK01O,gBACH31O,EACwB,GAE1BA,EAAQ0mE,WAwBZ,YAAAkvK,iCAAA,SACEC,EACAC,EACApvL,EACAC,EACA9qD,EACAC,EACA49M,EACAC,EACA8xB,EACAC,EACA7nL,EACA7T,EACAmxK,EACA3vJ,EACAukL,EACA7jE,GAIA,IAqBI3yB,EArBAhrG,EAAImS,GAFRgzJ,GAAW1pK,EAAM,IAGbwE,EAAImS,GAFRgzJ,GAAW3pK,EAAM,IAIXugB,EAAI10D,EAAQ4vO,EAAUoK,EAAaA,EAAapK,EAAU5vO,EAC1D40D,EAAI30D,EAAS4vO,EAAUoK,EAAcA,EAAcpK,EAAU5vO,EAC7Dk6O,EAAOxkL,EAAQ,GAAKjB,EAAIvgB,EAAM,GAAKwhB,EAAQ,GAC3CykL,EAAOzkL,EAAQ,GAAKf,EAAIzgB,EAAM,GAAKwhB,EAAQ,GAC3C0kL,EAAO3hM,EAAIid,EAAQ,GACnB2kL,EAAO3hM,EAAIgd,EAAQ,GAkDzB,OAhDIukL,GAA2B,IAAblyL,KAChBsiB,EAAG,GAAK+vK,EACR9+J,EAAG,GAAK8+J,EACR/vK,EAAG,GAAKgwK,EACR/vK,EAAG,GAAK+vK,EACR/vK,EAAG,GAAK8vK,EAAOF,EACf7jF,EAAG,GAAK/rF,EAAG,GACX+rF,EAAG,GAAKgkF,EAAOF,EACf7+J,EAAG,GAAK+6E,EAAG,IAII,IAAbtuG,GACF07F,GAAY,SACV,UACA74F,EACAC,EACA,EACA,EACA9C,GACC6C,GACAC,IAGH,QAAe44F,EAAWp5E,IAC1B,QAAeo5E,EAAWn5E,IAC1B,QAAem5E,EAAW4S,IAC1B,QAAe5S,EAAWnoE,IAC1B,QACElqE,KAAK6d,IAAIo7C,EAAG,GAAIC,EAAG,GAAI+rF,EAAG,GAAI/6E,EAAG,IACjClqE,KAAK6d,IAAIo7C,EAAG,GAAIC,EAAG,GAAI+rF,EAAG,GAAI/6E,EAAG,IACjClqE,KAAK6mB,IAAIoyC,EAAG,GAAIC,EAAG,GAAI+rF,EAAG,GAAI/6E,EAAG,IACjClqE,KAAK6mB,IAAIoyC,EAAG,GAAIC,EAAG,GAAI+rF,EAAG,GAAI/6E,EAAG,IACjCgvI,KAGF,QACEl5M,KAAK6d,IAAImrN,EAAMA,EAAOF,GACtB9oO,KAAK6d,IAAIorN,EAAMA,EAAOF,GACtB/oO,KAAK6mB,IAAImiN,EAAMA,EAAOF,GACtB9oO,KAAK6mB,IAAIoiN,EAAMA,EAAOF,GACtB7vB,GAGAjF,IACF5sK,EAAIrnC,KAAKgsD,MAAM3kB,GACfC,EAAItnC,KAAKgsD,MAAM1kB,IAEV,CACL4hM,WAAY7hM,EACZ8hM,WAAY7hM,EACZ8hM,WAAY/lL,EACZgmL,WAAY9lL,EACZg7K,QAASA,EACTC,QAASA,EACT6H,aAAc,CACZ7tL,KAAM0gK,EAAU,GAChBxgK,KAAMwgK,EAAU,GAChB7gK,KAAM6gK,EAAU,GAChB5gK,KAAM4gK,EAAU,GAChBhqN,MAAO81K,GAETwvC,gBAAiBniE,EACjBvvG,MAAOA,IAeX,YAAAwmM,oBAAA,SACEx2O,EACAy2O,EACAC,EACAC,EACAnsJ,EACAmkJ,EACA8G,GAEA,IAAMM,KAAgBpH,IAAmB8G,GAEnClmL,EAAMonL,EAAWpD,aACjB7/K,EAAS1zD,EAAQ0zD,OACjBkjL,EAAgBnB,EACjBA,EAAkB,GAAKkB,EAAW3mM,MAAM,GAAM,EAC/C,EAiCJ,OA/BEuf,EAAI7J,KAAOkxL,GAAiBljL,EAAO73D,MAAQ46O,GAC3ClnL,EAAIhK,KAAOqxL,GAAiB,GAC5BrnL,EAAI3J,KAAOgxL,GAAiBljL,EAAO53D,OAAS26O,GAC5ClnL,EAAI/J,KAAOoxL,GAAiB,IAGxBb,GACF91O,KAAKu1O,sBACHx1O,EACAmmE,EACAC,EACA+rF,EACA/6E,EACwB,EACA,IAG5B,QACEp3E,EACA22O,EAAWj1B,gBACXl3H,EACAksJ,EACAC,EAAWlL,QACXkL,EAAWjL,QACXiL,EAAWL,WACXK,EAAWJ,WACXI,EAAWP,WACXO,EAAWN,WACXM,EAAW3mM,SAGR,GAOT,YAAA0lM,MAAA,SAAM11O,GACJ,GAAIC,KAAK2zO,WAAY,CACnB,IAAM,GAAS,QAAe3zO,KAAK6zO,mBAAoB,CAAC,EAAG,IACrD+C,EAAa,IAAM52O,KAAK87G,WAC9B/7G,EAAQ6lE,OACR7lE,EAAQk4E,UAAU,EAAO,GAAK2+J,EAAY,EAAO,GAAKA,GACtD72O,EAAQm1F,OAAOl1F,KAAK+zO,eAEtBh0O,EAAQmkC,OACJlkC,KAAK2zO,YACP5zO,EAAQ+lE,WASZ,YAAA4vK,gBAAA,SAAgB31O,EAAS0tO,GACvB1tO,EAAqB,YACoC0tO,EAAY,GACrE1tO,EAAQgoD,UAAmC0lL,EAAY,GACvD1tO,EAAQw4E,QAAwCk1J,EAAY,GAC5D1tO,EAAQq4E,SAA0Cq1J,EAAY,GAC9D1tO,EAAQyuO,WAAoCf,EAAY,GACpD1tO,EAAQqmE,cACVrmE,EAAQsmE,eAAwConK,EAAY,GAC5D1tO,EAAQqmE,YAA0CqnK,EAAY,MAYlE,YAAAoJ,6BAAA,SAA6B/7N,EAAMw5N,EAASE,EAAWD,GACrD,IAAMI,EAAY30O,KAAKk0O,WAAWI,GAE5Bt7L,EAAQh5C,KAAKq0O,YAAYv5N,EAAMw5N,EAASC,EAASC,GAEjDC,EAAcz0O,KAAKi0O,aAAaO,GAChC14H,EAAa97G,KAAK87G,WAClBxhD,EAAQk5K,EACZlzO,MAAMiF,QAAQuV,GAAQA,EAAK,GAAKA,EAChC65N,EAAU7vK,WAAa,MAEnBgyK,EAAW,IAAWnC,EAAU1vK,cAAgB,MAChDK,EACJmvK,GAAeA,EAAY1sL,UAAY0sL,EAAY1sL,UAAY,EASjE,MAAO,CACL/O,MAAOA,EACPygK,QAPcn/I,GADFthB,EAAMp9C,MAAQkgH,EAAa,EAAI64H,EAAU5kM,MAAM,IAC7B,GAAK,GAAMuqB,GAASgL,EAQlDo0I,QANCo9B,EAAW99L,EAAMn9C,OAAUigH,EAC5B,GAAK,GAAMg7H,GAAYxxK,IAuB3B,YAAAyxK,SAAA,SACEh3O,EACAy2O,EACAl3F,EACAysF,EACA7qB,EACA81B,EACAC,EACAl2B,GAGA,IAAIm2B,EACAl3O,KAAK8zO,oBAAqB,QAAOx0F,EAAWt/I,KAAK6zO,oBACnDqD,EAAmBl3O,KAAK8zO,mBAEnB9zO,KAAK8zO,oBACR9zO,KAAK8zO,kBAAoB,IAE3BoD,GAAmB,QACjBl3O,KAAK6nH,YACL,EACA7nH,KAAK6nH,YAAYrpH,OACjB,EACA8gJ,EACAt/I,KAAK8zO,oBAEP,QAAsB9zO,KAAK6zO,mBAAoBv0F,IAuCjD,IArCA,IAGI63F,EACA19B,EACFC,EACApgI,EACA89J,EACAC,EACAC,EACAloE,EACAt0J,EACAw5N,EACAE,EACAD,EAqBwDtiE,EACtD39H,EAAGC,EAAGgjM,EApCNj4O,EAAI,EACF8sK,EAAK2/D,EAAavtO,OACpBsvC,EAAI,EAaJ0pM,EAAc,EACdC,EAAgB,EAChBC,EAAsB,KACtBC,EAAwB,KACtBC,EAAkB53O,KAAK4zO,iBACvBiE,EAAe73O,KAAK+zO,cACpB+D,EACJ7qO,KAAKgsD,MAAgD,KAA1ChsD,KAAK2xF,OAAO0gD,EAAU,GAAIA,EAAU,KAAc,KAEzDp3G,EAAuD,CAC3DnoC,QAASA,EACT+7G,WAAY97G,KAAK87G,WACjB6yD,WAAY3uK,KAAK2uK,WACjB/qH,SAAUi0L,GAKNE,EACJ/3O,KAAK+rO,cAAgBA,GAAgB/rO,KAAK0zO,SAAW,EAAI,IAGpDp0O,EAAI8sK,GAAI,CACb,IAAMqhE,EAAc1B,EAAazsO,GAIjC,OAFEmuO,EAAY,IAGZ,KAAK,oBACHx7D,EACEw7D,EAAY,GAEd8J,EAAkB9J,EAAY,GACzBx7D,EAAQ9D,mBAGOlwK,IAAlBg5O,IACC,QAAWA,EAAeM,EAAgBzoE,eAIzCxvK,EAFFA,EAA2BmuO,EAAY,GAAM,EAL7CnuO,EAA2BmuO,EAAY,GASzC,MACF,KAAK,gBACC+J,EAAcO,IAChB/3O,KAAKy1O,MAAM11O,GACXy3O,EAAc,GAEZC,EAAgBM,IAClBh4O,EAAQ0mE,SACRgxK,EAAgB,GAEbD,GAAgBC,IACnB13O,EAAQumE,YACRgT,EAAQthC,IACRo/L,EAAQp/L,OAER14C,EACF,MACF,KAAK,YAEH,IAAM2kE,EAAKizK,EADXppM,EAA2B2/L,EAAY,IAEjCvpK,EAAKgzK,EAAiBppM,EAAI,GAG1B4wC,EAFKw4J,EAAiBppM,EAAI,GAEhBm2B,EACVsgD,EAFK2yH,EAAiBppM,EAAI,GAEhBo2B,EACVthC,EAAI31B,KAAK+gD,KAAK0wB,EAAKA,EAAK6lC,EAAKA,GACnCxkH,EAAQwmE,OAAOtC,EAAKrhC,EAAGshC,GACvBnkE,EAAQ6mD,IAAIqd,EAAIC,EAAIthC,EAAG,EAAG,EAAI31B,KAAKmqE,IAAI,KACrC93E,EACF,MACF,KAAK,gBACHS,EAAQs1E,cACN/1E,EACF,MACF,KAAK,YACHwuC,EAA2B2/L,EAAY,GACvC0J,EAAK1J,EAAY,GACjB,IAAM9mH,EAEF8mH,EAAY,GAEV1tD,GAAW0tD,EAAY,GACvB5xN,GAA2B,GAAtB4xN,EAAYjvO,OAAcivO,EAAY,QAAKxvO,EACtDiqC,EAAMy+E,SAAWA,EACjBz+E,EAAM+pI,QAAUA,EACV3yK,KAAKs4O,IACTA,EAAgBt4O,GAAK,IAEvB,IAAMg6L,GAASs+C,EAAgBt4O,GAC3Buc,GACFA,GAAGq7N,EAAkBppM,EAAGqpM,EAAI,EAAG79C,KAE/BA,GAAO,GAAK49C,EAAiBppM,GAC7BwrJ,GAAO,GAAK49C,EAAiBppM,EAAI,GACjCwrJ,GAAO96L,OAAS,GAElBuhL,GAASuZ,GAAQpxJ,KACf5oC,EACF,MACF,KAAK,gBACHwuC,EAA2B2/L,EAAY,GACvC0J,EAA4B1J,EAAY,GACxCr+D,EAEIq+D,EAAY,GAIhBh0B,EAAiCg0B,EAAY,GAC7C/zB,EAAiC+zB,EAAY,GAC7C,IAAI5xO,GAAgC4xO,EAAY,GAC1CljJ,GAAiCkjJ,EAAY,GAC7CjC,GAAiCiC,EAAY,GAC7ChC,GAAiCgC,EAAY,GAC7CuK,GAAyCvK,EAAY,IACvD7pL,GAAkC6pL,EAAY,IAC5C19L,GACJ09L,EAAY,IAEV7xO,GAA+B6xO,EAAY,IACzCwK,GAEFxK,EAAY,IAGhB,IAAKr+D,GAASq+D,EAAYjvO,QAAU,GAAI,CAEtCsc,EAA8B2yN,EAAY,IAC1C6G,EAAiC7G,EAAY,IAC7C+G,EAAmC/G,EAAY,IAC/C8G,EAAiC9G,EAAY,IAC7C,IAAMyK,GAAkBl4O,KAAK62O,6BAC3B/7N,EACAw5N,EACAE,EACAD,GAEFnlE,EAAQ8oE,GAAgBl/L,MACxBy0L,EAAY,GAAKr+D,EACjB,IAAM+oE,GAAqC1K,EAAY,IACvDh0B,GAAWy+B,GAAgBz+B,QAAU0+B,IAAen4O,KAAK87G,WACzD2xH,EAAY,GAAKh0B,EACjB,IAAM2+B,GAAqC3K,EAAY,IACvD/zB,GAAWw+B,GAAgBx+B,QAAU0+B,IAAep4O,KAAK87G,WACzD2xH,EAAY,GAAK/zB,EACjB79M,GAASuzK,EAAMvzK,OACf4xO,EAAY,GAAK5xO,GACjBD,GAAQwzK,EAAMxzK,MACd6xO,EAAY,IAAM7xO,GAGpB,IAAIy8O,QAAc,EACd5K,EAAYjvO,OAAS,KACvB65O,GAAwC5K,EAAY,KAGtD,IAAIl8K,QAAO,EAAE+mL,QAAc,EAAEC,QAAgB,EACzC9K,EAAYjvO,OAAS,IACvB+yD,GAAwCk8K,EAAY,IACpD6K,GAAyC7K,EAAY,IACrD8K,GAA2C9K,EAAY,MAEvDl8K,GAAU,KACV+mL,IAAiB,EACjBC,IAAmB,GAGjBP,IAAkBF,EAEpBl0L,IAAYi0L,EACFG,IAAmBF,IAE7Bl0L,IAAYi0L,GAGd,IADA,IAAIW,GAAa,EACV1qM,EAAIqpM,EAAIrpM,GAAK,EAClB,KACEuqM,IACAA,GAAeG,MAAgB58O,GAAQoE,KAAK87G,YAF9C,CAMA,IAmBM57G,GAAO,CACXH,EACAy2O,EACApnE,EAtBIsnE,GAAa12O,KAAK21O,iCACtBvmE,EAAMxzK,MACNwzK,EAAMvzK,OACNq7O,EAAiBppM,GACjBopM,EAAiBppM,EAAI,GACrBlyC,GACAC,GACA49M,EACAC,EACA8xB,GACAC,GACA7nL,GACA7T,GACAmxK,EACA3vJ,GACA+mL,IAAkBC,GAClBtmE,GAQA1nF,GACA+tJ,GAC4B,EACxB,KACJC,GAC4B,EACxB,MAEFE,QAAS,EACTC,QAAiB,EACrB,GAAI33B,GAAqBk3B,GAAwB,CAC/C,IAAMzsN,GAAQ2rN,EAAKrpM,EACnB,IAAKmqM,GAAuBzsN,IAAQ,CAElCysN,GAAuBzsN,IAAStrB,GAEhC,SAKF,GAHAu4O,GAAYR,GAAuBzsN,WAC5BysN,GAAuBzsN,IAC9BktN,GAAoBtF,EAAgBqF,IAChC13B,EAAkBj5E,SAAS4wG,IAC7B,SAIF33B,GACAA,EAAkBj5E,SAAS4uG,GAAWpD,gBAIpCmF,KAEE13B,GACFA,EAAkB/4E,OAAO0wG,IAG3B14O,KAAKu2O,oBAAoBt2O,MAAMD,KAAMy4O,KAEnC13B,GACFA,EAAkB/4E,OAAO0uG,GAAWpD,cAEtCtzO,KAAKu2O,oBAAoBt2O,MAAMD,KAAME,OAErCZ,EACF,MACF,KAAK,gBACH,IAAM4nL,GAA+BumD,EAAY,GAC3Cp3M,GAA6Bo3M,EAAY,GACzCqJ,GAAkCrJ,EAAY,GAC9ClwF,GAAkCkwF,EAAY,GACpD8G,EAAiC9G,EAAY,GAC7C,IAAMgF,GAAkChF,EAAY,GAC9CkL,GAA2ClL,EAAY,GACvDhqL,GAAiCgqL,EAAY,GACnD+G,EAAmC/G,EAAY,GAC/C,IAAMnoK,GAAqCmoK,EAAY,IACvD3yN,EAA8B2yN,EAAY,IAC1C6G,EAAiC7G,EAAY,IAC7C,IAAMmL,GAAkB,CACCnL,EAAY,IACZA,EAAY,KAG/BkH,GAAY30O,KAAKk0O,WAAWI,GAC5Bh5K,GAAOq5K,GAAUr5K,KACjBu9K,GAAY,CAChBlE,GAAU5kM,MAAM,GAAK4oM,GACrBhE,GAAU5kM,MAAM,GAAK4oM,IAGnBG,QAAY,EACZx9K,MAAQt7D,KAAKm0O,QACf2E,GAAe94O,KAAKm0O,QAAQ74K,KAE5Bw9K,GAAe,GACf94O,KAAKm0O,QAAQ74K,IAAQw9K,IAGvB,IAAMC,IAAa,OAAiB7B,EAAkBhwD,GAAO7wJ,GAAK,GAC5D2iN,GACJ/rO,KAAKknB,IAAI0kN,GAAU,KACnB,QAAyBv9K,GAAMxgD,EAAMg+N,IACvC,GAAIv7F,IAAYy7F,IAAcD,GAAY,CACxC,IAAMj0K,GAAY9kE,KAAKk0O,WAAWI,GAASxvK,UAErC7yD,GAAQsgO,EACZ2E,EACAhwD,GACA7wJ,GACA,EACAvb,GANci+N,GAAaC,IAAc,IAAWl0K,IAQpD2tK,GACAxlO,KAAKknB,IAAI0kN,GAAU,IACnB,KACAv9K,GACAw9K,GACAhB,EAA4B,EAAI93O,KAAK+zO,eAEvCkF,EAAW,GAAIhnO,GAAO,CAEpB,IAAMohO,GAAyB,GAC3B1wM,QAAC,EAAEu2M,QAAE,EAAE/F,QAAK,EAAEn6L,QAAK,EAAEu+F,QAAI,EAC7B,GAAIi9F,EACF,IAAK7xM,GAAI,EAAGu2M,GAAKjnO,GAAMzT,OAAQmkC,GAAIu2M,KAAMv2M,GAAG,CAE1CwwM,IADA57F,GAAOtlI,GAAM0wB,KACuB,GACpCqW,GAAQh5C,KAAKq0O,YAAYlB,GAAOmB,EAAS,GAAIE,GAC7C/6B,EACyBliE,GAAK,IAC3BshG,GAAU,GAAK,GAAKvzK,GAAcA,IACrCo0I,EACEo9B,GAAW99L,GAAMn9C,OACG,GAAlB,GAAMi7O,IAAgBxxK,GAAcuzK,GAAU,GAC9CA,GAAU,GACZp1L,GACF,IAAMizL,GAAa12O,KAAK21O,iCACtB38L,GAAMp9C,MACNo9C,GAAMn9C,OACN07I,GAAK,GACLA,GAAK,GACLv+F,GAAMp9C,MACNo9C,GAAMn9C,OACN49M,EACAC,EACA,EACA,EACAniE,GAAK,GACLqhG,IACA,EACA,MACA,EACA3mE,GAEF,GACE8uC,GACAA,EAAkBj5E,SAAS4uG,GAAWpD,cAEtC,MAAM2F,EAER5F,GAAuBjvO,KAAK,CAC1BrE,EACAy2O,EACAx9L,GACA09L,GACA,EACA,KACA,OAIN,GAAInC,EACF,IAAK5xM,GAAI,EAAGu2M,GAAKjnO,GAAMzT,OAAQmkC,GAAIu2M,KAAMv2M,GAAG,CAwB1C,GAtBAwwM,IADA57F,GAAOtlI,GAAM0wB,KACuB,GACpCqW,GAAQh5C,KAAKq0O,YAAYlB,GAAOmB,EAASC,EAAS,IAClD96B,EAAiCliE,GAAK,GACtCmiE,EAAUo9B,GAAW99L,GAAMn9C,OAAS4nD,GAC9BizL,GAAa12O,KAAK21O,iCACtB38L,GAAMp9C,MACNo9C,GAAMn9C,OACN07I,GAAK,GACLA,GAAK,GACLv+F,GAAMp9C,MACNo9C,GAAMn9C,OACN49M,EACAC,EACA,EACA,EACAniE,GAAK,GACLqhG,IACA,EACA,MACA,EACA3mE,GAGA8uC,GACAA,EAAkBj5E,SAAS4uG,GAAWpD,cAEtC,MAAM2F,EAER5F,GAAuBjvO,KAAK,CAC1BrE,EACAy2O,EACAx9L,GACA09L,GACA,EACA,KACA,OAIF31B,GACFA,EAAkBh5E,KAChBsrG,GAAuBnqO,IAAIkqO,IAG/B,IAAK,IAAI,GAAI,EAAG,GAAKC,GAAuB70O,OAAQ,GAAI,KAAM,GAC5DwB,KAAKu2O,oBAAoBt2O,MAAMD,KAAMqzO,GAAuB,QAIhE/zO,EACF,MACF,KAAK,kBACH,QAA4BrB,IAAxB+4O,EAAmC,CAIrC,IAAM7vO,GAAS6vO,EAHf/kE,EACEw7D,EAAY,GAE8B8J,GAC5C,GAAIpwO,GACF,OAAOA,KAGT7H,EACF,MACF,KAAK,UACCy4O,EACFP,IAEAx3O,KAAKy1O,MAAM11O,KAEXT,EACF,MACF,KAAK,qBAYH,IAXAwuC,EAA2B2/L,EAAY,GACvC0J,EAA4B1J,EAAY,GACxCn5L,EAAI4iM,EAAiBppM,GAGrBwpM,GAFA/iM,EAAI2iM,EAAiBppM,EAAI,IAEX,GAAO,GADrBupM,EAAU/iM,EAAI,GAAO,KAENglC,GAASg+J,IAAWF,IACjCr3O,EAAQwmE,OAAOjyB,EAAGC,GAClB+kC,EAAQ+9J,EACRD,EAAQE,GAELxpM,GAAK,EAAGA,EAAIqpM,EAAIrpM,GAAK,EAGxBupM,GAFA/iM,EAAI4iM,EAAiBppM,IAEP,GAAO,EACrBwpM,GAFA/iM,EAAI2iM,EAAiBppM,EAAI,IAEX,GAAO,EACjBA,GAAKqpM,EAAK,GAAKE,IAAW/9J,GAASg+J,IAAWF,IAChDr3O,EAAQymE,OAAOlyB,EAAGC,GAClB+kC,EAAQ+9J,EACRD,EAAQE,KAGVh4O,EACF,MACF,KAAK,oBACHo4O,EAAsBjK,EACtBztO,KAAK2zO,WAAalG,EAAY,GAE1B+J,IACFx3O,KAAKy1O,MAAM11O,GACXy3O,EAAc,EACVC,IACF13O,EAAQ0mE,SACRgxK,EAAgB,IAIpB13O,EAAQ4nD,UAEJ8lL,EAAY,KAEdnuO,EACF,MACF,KAAK,sBACHq4O,EAAwBlK,EACpBgK,IACF13O,EAAQ0mE,SACRgxK,EAAgB,GAElBz3O,KAAK01O,gBAAgB31O,EAAiC,KACpDT,EACF,MACF,KAAK,YACCy4O,EACFN,IAEA13O,EAAQ0mE,WAERnnE,EACF,MACF,UACIA,GAIJk4O,GACFx3O,KAAKy1O,MAAM11O,GAET03O,GACF13O,EAAQ0mE,UAaZ,YAAA66I,QAAA,SACEvhN,EACAy2O,EACAl3F,EACAu4F,EACA32B,EACAH,GAEA/gN,KAAK+zO,cAAgB8D,EACrB73O,KAAK+2O,SACHh3O,EACAy2O,EACAl3F,EACAt/I,KAAK+rO,aACL7qB,OACAjjN,OACAA,EACA8iN,IAcJ,YAAAo4B,oBAAA,SACEp5O,EACAu/I,EACAu4F,EACAb,EACAC,GAGA,OADAj3O,KAAK+zO,cAAgB8D,EACd73O,KAAK+2O,SACVh3O,EACA,EACAu/I,EACAt/I,KAAKisO,0BACL,EACA+K,EACAC,IAGN,EA/mCA,2BCjGMmC,EAAQ,CACZC,EAAA,UACAA,EAAA,SACAA,EAAA,cACAA,EAAA,QACAA,EAAA,OACAA,EAAA,WAGF,aAaE,WACEjoD,EACAziB,EACA7yD,EACA43H,EACA4F,EACAC,GAMAv5O,KAAKwxO,WAAapgD,EAMlBpxL,KAAKw5O,UAAY9F,EAMjB1zO,KAAK4uK,YAAc9yD,EAMnB97G,KAAKyxO,YAAc9iE,EAMnB3uK,KAAKu8M,cAAgBg9B,EAMrBv5O,KAAKy5O,mBAAqB,GAM1Bz5O,KAAK05O,qBAAuB,KAM5B15O,KAAK25O,wBAAyB,UAE9B35O,KAAK45O,iBAAiBN,GAgR1B,OAzQE,YAAA5/L,KAAA,SAAK35C,EAASu/I,GACZ,IAAMu6F,EAAiB75O,KAAKioN,cAAc3oE,GAC1Cv/I,EAAQumE,YACRvmE,EAAQwmE,OAAOszK,EAAe,GAAIA,EAAe,IACjD95O,EAAQymE,OAAOqzK,EAAe,GAAIA,EAAe,IACjD95O,EAAQymE,OAAOqzK,EAAe,GAAIA,EAAe,IACjD95O,EAAQymE,OAAOqzK,EAAe,GAAIA,EAAe,IACjD95O,EAAQ25C,QAQV,YAAAkgM,iBAAA,SAAiBN,GACf,IAAK,IAAMzlE,KAAUylE,EAAiB,CACpC,IAAIQ,EAAY95O,KAAKy5O,mBAAmB5lE,QACtB51K,IAAd67O,IACFA,EAAY,GACZ95O,KAAKy5O,mBAAmB5lE,GAAUimE,GAEpC,IAAMC,EAAsBT,EAAgBzlE,GAC5C,IAAK,IAAMo+D,KAAe8H,EAAqB,CAC7C,IAAMhO,EAAegO,EAAoB9H,GACzC6H,EAAU7H,GAAe,IAAI,EAC3BjyO,KAAKyxO,YACLzxO,KAAK4uK,YACL5uK,KAAKw5O,UACLzN,MAUR,YAAAlkB,aAAA,SAAaiyB,GACX,IAAK,IAAMjmE,KAAU7zK,KAAKy5O,mBAExB,IADA,IAAMO,EAAah6O,KAAKy5O,mBAAmB5lE,GAClCv0K,EAAI,EAAG8sK,EAAK0tE,EAAUt7O,OAAQc,EAAI8sK,IAAM9sK,EAC/C,GAAIw6O,EAAUx6O,KAAM06O,EAClB,OAAO,EAIb,OAAO,GAaT,YAAAtoE,2BAAA,SACEC,EACAhD,EACA/qH,EACAguH,EACAp2J,EACAkrM,GAGA,IAAMuzB,EAA6B,GADnCroE,EAAe3kK,KAAKgsD,MAAM24G,IACa,EACjCtyB,GAAY,QAChBt/I,KAAK25O,uBACL/nE,EAAe,GACfA,EAAe,GACf,EAAIjD,GACH,EAAIA,GACJ/qH,GACA+tH,EAAW,IACXA,EAAW,IAGRuoE,GAAcl6O,KAAK05O,qBACrBQ,IACFl6O,KAAK05O,sBAAuB,QAC1BO,EACAA,IAGJ,IAeIxzB,EAfE1mN,EAAUC,KAAK05O,qBAGnB35O,EAAQ0zD,OAAO73D,QAAUq+O,GACzBl6O,EAAQ0zD,OAAO53D,SAAWo+O,GAE1Bl6O,EAAQ0zD,OAAO73D,MAAQq+O,EACvBl6O,EAAQ0zD,OAAO53D,OAASo+O,GACdC,GACVn6O,EAAQ0xG,UAAU,EAAG,EAAGwoI,EAAaA,QAOZh8O,IAAvB+B,KAAKu8M,gBACPkK,GAAY,WACZ,QAAiBA,EAAW90C,IAC5B,QACE80C,EACA93C,GAAc3uK,KAAKu8M,cAAgB3qC,GACnC60C,IAIJ,IAEIwrB,EAFEkI,EAuKH,SAA4Bx3L,GACjC,QAA2C1kD,IAAvCm8O,EAA2Bz3L,GAC7B,OAAOy3L,EAA2Bz3L,GAMpC,IAHA,IAAMluB,EAAgB,EAATkuB,EAAa,EACpB03L,EAAgB13L,EAASA,EACzB23L,EAAY,IAAIh6O,MAAM+5O,EAAgB,GACnC/6O,EAAI,EAAGA,GAAKqjD,IAAUrjD,EAC7B,IAAK,IAAI6tD,EAAI,EAAGA,GAAKxK,IAAUwK,EAAG,CAChC,IAAM8lH,EAAa3zK,EAAIA,EAAI6tD,EAAIA,EAC/B,GAAI8lH,EAAaonE,EACf,MAEF,IAAIhsL,EAAWisL,EAAUrnE,GACpB5kH,IACHA,EAAW,GACXisL,EAAUrnE,GAAc5kH,GAE1BA,EAASjqD,KAA4C,IAArCu+C,EAASrjD,GAAKm1B,GAAQkuB,EAASwK,IAAU,GACrD7tD,EAAI,GACN+uD,EAASjqD,KAA4C,IAArCu+C,EAASrjD,GAAKm1B,GAAQkuB,EAASwK,IAAU,GAEvDA,EAAI,IACNkB,EAASjqD,KAA4C,IAArCu+C,EAASrjD,GAAKm1B,GAAQkuB,EAASwK,IAAU,GACrD7tD,EAAI,GACN+uD,EAASjqD,KAA4C,IAArCu+C,EAASrjD,GAAKm1B,GAAQkuB,EAASwK,IAAU,IAOjE,IADA,IAAM0gK,EAAa,GACHzhD,GAAP9sK,EAAI,EAAQg7O,EAAU97O,QAAQc,EAAI8sK,IAAM9sK,EAC3Cg7O,EAAUh7O,IACZuuN,EAAWzpN,KAAI,MAAfypN,EAAmBysB,EAAUh7O,IAKjC,OADA86O,EAA2Bz3L,GAAUkrK,EAC9BA,EA/MW0sB,CAAmB3oE,GASnC,SAASswC,EAAgBjwC,EAAStrD,GAOhC,IANA,IAAM6zH,EAAYz6O,EAAQuuN,aACxB,EACA,EACA2rB,EACAA,GACAxuO,KACO,EAAI,EAAG2gK,EAAK+tE,EAAQ37O,OAAQ,EAAI4tK,EAAI,IAC3C,GAAIouE,EAAUL,EAAQ,IAAM,EAAG,CAC7B,IACGzzB,GACAurB,IAAgBoH,EAAA,SACfpH,IAAgBoH,EAAA,SACwB,IAA1C3yB,EAAoBt9M,QAAQ6oK,GAC5B,CACA,IAAMtvG,GAAOw3K,EAAQ,GAAK,GAAK,EACzB7lM,EAAIs9H,EAAgBjvG,EAAMs3K,EAC1B1lM,EAAIq9H,GAAiBjvG,EAAMs3K,EAAe,GAC1C,EAASz+N,EAASy2J,EAAStrD,EAAUryE,EAAIA,EAAIC,EAAIA,GACvD,GAAI,EACF,OAAO,EAGXx0C,EAAQ0xG,UAAU,EAAG,EAAGwoI,EAAaA,GACrC,OAON,IAGI36O,EAAG6tD,EAAG2sL,EAAWjyM,EAAU1gC,EAHzBg0N,EAAKl/N,OAAOkQ,KAAKnM,KAAKy5O,oBAAoBvwO,IAAIgB,QAIpD,IAHAixN,EAAGh2L,KAAK,MAGH7lC,EAAI67N,EAAG38N,OAAS,EAAGc,GAAK,IAAKA,EAAG,CACnC,IAAM4yO,EAAY/W,EAAG77N,GAAGQ,WAExB,IADAg6O,EAAY95O,KAAKy5O,mBAAmBvH,GAC/B/kL,EAAIisL,EAAM56O,OAAS,EAAG2uD,GAAK,IAAKA,EAGnC,QAAiBlvD,KADjB4pC,EAAWiyM,EADX7H,EAAcmH,EAAMjsL,OAGlBhmD,EAAS0gC,EAASsxM,oBAChBp5O,EACAu/I,EACA17F,EACAs+J,EACAuE,IAGA,OAAOt/M,IAYjB,YAAA8gN,cAAA,SAAc3oE,GACZ,IAAM8xC,EAAYpxL,KAAKwxO,WACvB,IAAKpgD,EACH,OAAO,KAET,IAAM3rI,EAAO2rI,EAAU,GACjBzrI,EAAOyrI,EAAU,GACjB9rI,EAAO8rI,EAAU,GACjB7rI,EAAO6rI,EAAU,GACjByoD,EAAiB,CAACp0L,EAAME,EAAMF,EAAMF,EAAMD,EAAMC,EAAMD,EAAMK,GAElE,OADA,QAAYk0L,EAAgB,EAAG,EAAG,EAAGv6F,EAAWu6F,GACzCA,GAMT,YAAAhhE,QAAA,WACE,OAAO,QAAQ74K,KAAKy5O,qBAatB,YAAAn4B,QAAA,SACEvhN,EACAy2O,EACAl3F,EACAu4F,EACA32B,EACAu5B,EACA15B,GAGA,IAAMoa,EAAKl/N,OAAOkQ,KAAKnM,KAAKy5O,oBAAoBvwO,IAAIgB,QACpDixN,EAAGh2L,KAAK,MAIJnlC,KAAKwxO,aACPzxO,EAAQ6lE,OACR5lE,KAAK05C,KAAK35C,EAASu/I,IAGrB,IACIhgJ,EAAG8sK,EAAIj/G,EAAG8pI,EAAIk7C,EAASh+J,EADrBumK,EAAeD,GAAsCrB,EAK3D,IAHIr4B,GACFoa,EAAGv+L,UAEAt9B,EAAI,EAAG8sK,EAAK+uD,EAAG38N,OAAQc,EAAI8sK,IAAM9sK,EAAG,CACvC,IAAM4yO,EAAY/W,EAAG77N,GAAGQ,WAExB,IADAqyO,EAAUnyO,KAAKy5O,mBAAmBvH,GAC7B/kL,EAAI,EAAG8pI,EAAKyjD,EAAal8O,OAAQ2uD,EAAI8pI,IAAM9pI,OAG/BlvD,KADfk2E,EAASg+J,EADWuI,EAAavtL,MAG/BgnB,EAAOmtI,QACLvhN,EACAy2O,EACAl3F,EACAu4F,EACA32B,EACAH,GAMJ/gN,KAAKwxO,YACPzxO,EAAQ+lE,WAGd,EArVA,GA6VMs0K,EAA6B,GAoDnC,6FCvaA,IAAMO,EAAc,CAClBC,eAAgB,EAChBC,WAAY,EACZloC,OAAQ,EACRmoC,WAAY,EACZC,OAAQ,EACRC,WAAY,EACZC,WAAY,EACZC,aAAc,EACdC,KAAM,EACNC,gBAAiB,EACjBC,eAAgB,GAChBC,iBAAkB,GAClBC,OAAQ,IAMG7M,EAAkB,CAACiM,EAAYQ,MAK/B3F,EAAoB,CAACmF,EAAYY,QAKjCC,EAAuB,CAACb,EAAYE,YAKpCY,EAAuB,CAACd,EAAYG,YAEjD,mJC9BO,SAASY,EAAcjJ,EAAUhtC,EAAiBnjJ,EAAQjsB,EAAKmjK,GACpE,IAKUl6L,EAAGq8O,EAAKC,EAAK33K,EAAIC,EAAI23K,EAAKC,EAAKC,EAAKC,EAL1CC,EAAa35L,EACb45L,EAAW55L,EACX65L,EAAS,EACT/pJ,EAAI,EACJ97D,EAAQgsB,EAEZ,IAAKhjD,EAAIgjD,EAAQhjD,EAAI+2B,EAAK/2B,GAAKk6L,EAAQ,CACrC,IAAMr1H,EAAKshI,EAAgBnmM,GACrB8kE,EAAKqhI,EAAgBnmM,EAAI,QACpBrB,IAAPgmE,IACF83K,EAAM53K,EAAKF,EACX+3K,EAAM53K,EAAKF,EACX03K,EAAM3uO,KAAK+gD,KAAK+tL,EAAMA,EAAMC,EAAMA,QACtB/9O,IAAR49O,IACFzpJ,GAAKupJ,EACE1uO,KAAKmvO,MAAMP,EAAME,EAAMD,EAAME,IAAQL,EAAMC,IACvCnJ,IACLrgJ,EAAI+pJ,IACNA,EAAS/pJ,EACT6pJ,EAAa3lN,EACb4lN,EAAW58O,GAEb8yF,EAAI,EACJ97D,EAAQh3B,EAAIk6L,IAGhBmiD,EAAMC,EACNC,EAAME,EACND,EAAME,GAER/3K,EAAKE,EACLD,EAAKE,EAGP,OADAguB,GAAKwpJ,GACMO,EAAS,CAAC7lN,EAAOh3B,GAAK,CAAC28O,EAAYC,4cClBnCG,EAAa,CACxB,KAAQ,EACR,IAAO,EACP,OAAU,GACV,MAAS,EACT,MAAS,EACT,IAAO,EACP,OAAU,GACV,QAAW,GACX,WAAc,GACd,YAAe,GACf,OAAU,GA6kBZ,QA1kBA,YAOE,WAAY/nC,EAAWljB,EAAWziB,EAAY7yD,GAA9C,MACE,YAAMw4F,EAAWljB,EAAWziB,EAAY7yD,IAAW,YAMnD,EAAKs4H,QAAU,KAMf,EAAKkI,MAAQ,GAMb,EAAKC,aAAe,EAMpB,EAAKC,aAAe,EAMpB,EAAKC,yBAAsBx+O,EAM3B,EAAKy+O,cAAgB,EAMrB,EAAKC,eAAiB,KAKtB,EAAK3I,WAAa,GAMlB,EAAK4I,iBAAmB,KAKxB,EAAK3I,aAAe,GAMpB,EAAK4I,WAA6D,GAKlE,EAAK3I,WAAa,GAMlB,EAAK4I,SAAW,GAMhB,EAAKC,SAAW,GAMhB,EAAKC,WAAa,GAOlB,EAAK7M,6BAA0BlyO,IAkenC,OAxkBgC,OA4G9B,YAAA0wB,OAAA,WACE,IAAMo9M,EAAe,YAAMp9M,OAAM,WAIjC,OAHAo9M,EAAamI,WAAal0O,KAAKk0O,WAC/BnI,EAAaiI,WAAah0O,KAAKg0O,WAC/BjI,EAAakI,aAAej0O,KAAKi0O,aAC1BlI,GAOT,YAAA9kH,SAAA,SAASN,EAAUsrD,GACjB,IAAMyiE,EAAY10O,KAAK28O,eACjBlI,EAAcz0O,KAAK48O,iBACnBjI,EAAY30O,KAAK68O,WACvB,GAAmB,KAAf78O,KAAKs8O,OAAiB3H,IAAeD,GAAcD,GAAvD,CAIA,IAAM5sH,EAAc7nH,KAAK6nH,YACrBq/D,EAAQr/D,EAAYrpH,OAElBoyM,EAAejqF,EAASwyE,UAC1BsM,EAAkB,KAClBjM,EAAS7yE,EAAS8yE,YAEtB,GACEk7C,EAAUn6F,YAAcyiG,EAAA,QACvBrsC,GAAgBxX,EAAA,eACfwX,GAAgBxX,EAAA,qBAChBwX,GAAgBxX,EAAA,WAChBwX,GAAgBxX,EAAA,gBAsDb,CACL,IAAIi/C,EAAiB1D,EAAUp3F,SAAW,KAAO,GACjD,OAAQqzD,GACN,KAAKxX,EAAA,QACL,KAAKA,EAAA,cACHqM,EAC4D,EAExDlM,qBACJ,MACF,KAAKH,EAAA,cACHqM,EAC4D,EAExDwF,kBACJ,MACF,KAAK7R,EAAA,SACHqM,EACwD,EAEpDhP,YACJ,MACF,KAAK2C,EAAA,oBACHqM,EACiE,EAE7D6G,mBACJ9S,EAAS,EACT,MACF,KAAKJ,EAAA,UACHqM,EACyD,EAErDqJ,uBACC6lC,EAAUp3F,UACb86F,EAAej0O,KAAKqhM,EAAgB,GAAKzlM,KAAK2uK,YAEhD6qB,EAAS,EACT,MACF,KAAKJ,EAAA,gBACH,IAAMqe,EACwD,EAE1DzJ,wBAEJ,IADAvI,EAAkB,GACTnmM,EAAI,EAAG8sK,EAAKqrC,EAAej5M,OAAQc,EAAI8sK,EAAI9sK,GAAK,EAClDq1O,EAAUp3F,UACb86F,EAAej0O,KAAKqzM,EAAen4M,EAAI,GAAKU,KAAK2uK,YAEnD82B,EAAgBrhM,KAAKqzM,EAAen4M,GAAIm4M,EAAen4M,EAAI,IAE7D,GAA+B,IAA3BmmM,EAAgBjnM,OAClB,OAEFg7L,EAAS,EAKb,IADMnjK,EAAMr2B,KAAKqsO,2BAA2B5mC,EAAiBjM,MACjDtS,EACV,OAEF,GACEmxD,IACChiN,EAAM6wJ,GAAS,GAAMue,EAAgBjnM,OAASg7L,EAC/C,CACA,IAAI,EAAMtS,EAAQ,EAClBmxD,EAAiBA,EAAetvO,QAAO,SAACunD,EAAGhxD,GACzC,IAAM49O,EACJr1H,EAAwB,GAAX,EAAMvoH,MAAYmmM,EAAgBnmM,EAAIk6L,IACnD3xE,EAAwB,GAAX,EAAMvoH,GAAS,KAAOmmM,EAAgBnmM,EAAIk6L,EAAS,GAIlE,OAHK0jD,KACD,EAEGA,KAIXl9O,KAAKm9O,mBAEDxI,EAAU2D,gBAAkB3D,EAAU4D,oBACxCv4O,KAAKgpO,mBACH2L,EAAU2D,eACV3D,EAAU4D,kBAER5D,EAAU2D,iBACZt4O,KAAK6uO,gBAAgB7uO,KAAKkoC,MAAOloC,KAAKyuO,YACtCzuO,KAAKisO,yBAAyB7nO,KAAKpE,KAAKyuO,WAAWzuO,KAAKkoC,SAEtDysM,EAAU4D,mBACZv4O,KAAK+uO,kBAAkB/uO,KAAKkoC,MAAOloC,KAAK2uO,aACxC3uO,KAAKisO,yBAAyB7nO,KAAKpE,KAAK4uO,aAAa5uO,KAAKkoC,UAI9DloC,KAAKmtO,cAAcxmH,EAAUsrD,GAG7B,IAAI1gH,EAAUojL,EAAUpjL,QACxB,GACEA,GAAW,OACVojL,EAAU5kM,MAAM,GAAK,GAAK4kM,EAAU5kM,MAAM,GAAK,GAChD,CACA,IAAIkvE,EAAK01H,EAAUpjL,QAAQ,GACvB2U,EAAKyuK,EAAUpjL,QAAQ,GACvB4U,EAAKwuK,EAAUpjL,QAAQ,GACvB2gG,EAAKyiF,EAAUpjL,QAAQ,GACvBojL,EAAU5kM,MAAM,GAAK,IACvBm2B,GAAMA,EACNgsF,GAAMA,GAEJyiF,EAAU5kM,MAAM,GAAK,IACvBkvE,GAAMA,EACN94C,GAAMA,GAER5U,EAAU,CAAC0tD,EAAI/4C,EAAIC,EAAI+rF,GAMzB,IAAM,EAAalyJ,KAAK87G,WACxB97G,KAAK+rO,aAAa3nO,KAAK,CACrB,gBACA8iL,EACA7wJ,EACA,KACA2hB,IACAA,IACAA,IACA,EACA,EACA,EACAh4C,KAAKy8O,oBACLz8O,KAAK08O,cACL,CAAC,EAAG,GACJ1kM,IACAh4C,KAAKmwO,wBACL5+K,GAAW,KACP,KACAA,EAAQroD,KAAI,SAAUilB,GACpB,OAAOA,EAAI,OAEfwmN,EAAU2D,iBACV3D,EAAU4D,iBACZv4O,KAAKs8O,MACLt8O,KAAK88O,SACL98O,KAAKg9O,WACLh9O,KAAK+8O,SACL/8O,KAAKu8O,aACLv8O,KAAKw8O,aACLnE,IAEF,IAAMtoM,EAAQ,EAAI,EAClB/vC,KAAKisO,yBAAyB7nO,KAAK,CACjC,gBACA8iL,EACA7wJ,EACA,KACA2hB,IACAA,IACAA,IACA,EACA,EACA,EACAh4C,KAAKy8O,oBACLz8O,KAAK08O,cACL,CAAC3sM,EAAOA,GACRiI,IACAh4C,KAAKmwO,wBACL5+K,IACEojL,EAAU2D,iBACV3D,EAAU4D,iBACZv4O,KAAKs8O,MACLt8O,KAAK88O,SACL98O,KAAKg9O,WACLh9O,KAAK+8O,SACL/8O,KAAKu8O,aACLv8O,KAAKw8O,aACLnE,IAGFr4O,KAAKutO,YAAYt7D,OA3OjB,CACA,KAAK,QAAWjyK,KAAKssO,uBAAwB3lH,EAASmoD,aACpD,OAEF,IAAI+8B,OAAI,EAER,GADApG,EAAkB9+E,EAAS4yE,qBACvBqX,GAAgBxX,EAAA,cAClByS,EAAO,CAACpG,EAAgBjnM,aACnB,GAAIoyM,GAAgBxX,EAAA,oBACzByS,EAAsE,EAEpEM,eACG,GAAIyE,GAAgBxX,EAAA,UACzByS,EAA8D,EAC3DM,UACAhqM,MAAM,EAAG,QACP,GAAIyuM,GAAgBxX,EAAA,gBAA4B,CACrD,IAAM2T,EACwD,EAE1DgB,WACJlC,EAAO,GACP,IAAK,IAAIvsM,EAAI,EAAG8sK,EAAK2gC,EAAMvuM,OAAQc,EAAI8sK,IAAM9sK,EAC3CusM,EAAKznM,KAAK2oM,EAAMztM,GAAG,IAGvBU,KAAKmtO,cAAcxmH,EAAUsrD,GAI7B,IAHA,IAAMntG,EAAY6vK,EAAU7vK,UACxBs4K,EAAa,EACbC,OAAO,EACFlnK,EAAI,EAAGmnK,EAAKzxC,EAAKrtM,OAAQ23E,EAAImnK,IAAMnnK,EAAG,CAC7C,GAAiBl4E,MAAb6mE,EAAwB,CAC1B,IAAMhtB,EAAQ4jM,EACZ/G,EAAUlC,SACVhtC,EACA23C,EACAvxC,EAAK11H,GACLqjH,GAEF4jD,EAAatlM,EAAM,GACnBulM,EAAUvlM,EAAM,QAEhBulM,EAAUxxC,EAAK11H,GAEjB,IAAS72E,EAAI89O,EAAY99O,EAAI+9O,EAAS/9O,GAAKk6L,EACzC3xE,EAAYzjH,KAAKqhM,EAAgBnmM,GAAImmM,EAAgBnmM,EAAI,IAE3D,IAAM+2B,EAAMwxF,EAAYrpH,OACxB4+O,EAAavxC,EAAK11H,GAClBn2E,KAAKu9O,WAAWr2D,EAAO7wJ,GACvB6wJ,EAAQ7wJ,EAEVr2B,KAAKutO,YAAYt7D,MA8LrB,YAAAkrE,gBAAA,WACE,IAAM1I,EAAcz0O,KAAK48O,iBACnBjI,EAAY30O,KAAK68O,WACjBnI,EAAY10O,KAAK28O,eAEjBnI,EAAYx0O,KAAKg9O,WACnBvI,IACID,KAAax0O,KAAKi0O,eACtBj0O,KAAKi0O,aAAaO,GAAa,CAC7B3sL,YAAa4sL,EAAY5sL,YACzB0wB,QAASk8J,EAAYl8J,QACrBlS,eAAgBouK,EAAYpuK,eAC5Bte,UAAW0sL,EAAY1sL,UACvBqwB,SAAUq8J,EAAYr8J,SACtBo2J,WAAYiG,EAAYjG,WACxBppJ,SAAUqvJ,EAAYrvJ,YAI5B,IAAMkvJ,EAAUt0O,KAAK88O,SACfxI,KAAWt0O,KAAKk0O,aACpBl0O,KAAKk0O,WAAWI,GAAW,CACzBh5K,KAAMq5K,EAAUr5K,KAChBwJ,UAAW6vK,EAAU7vK,WAAa,KAClCG,aAAc0vK,EAAU1vK,cAAgB,KACxCl1B,MAAO4kM,EAAU5kM,QAGrB,IAAMwkM,EAAUv0O,KAAK+8O,SACjBrI,IACIH,KAAWv0O,KAAKg0O,aACpBh0O,KAAKg0O,WAAWO,GAAW,CACzB5sL,UAAW+sL,EAAU/sL,cAW7B,YAAA41L,WAAA,SAAWr2D,EAAO7wJ,GAChB,IAAMo+M,EAAcz0O,KAAK48O,iBACnBjI,EAAY30O,KAAK68O,WAEjBrI,EAAYx0O,KAAKg9O,WACjB1I,EAAUt0O,KAAK88O,SACfvI,EAAUv0O,KAAK+8O,SACrB/8O,KAAKm9O,kBAEL,IAAMrhI,EAAa97G,KAAK87G,WAClBg7H,EAAWuF,EAAW1H,EAAU1vK,cAEhCxhB,EAAUzjD,KAAKw8O,aAAe1gI,EAC9BhhG,EAAO9a,KAAKs8O,MACZh3K,EAAcmvK,EACfA,EAAY1sL,UAAY96C,KAAKknB,IAAIwgN,EAAU5kM,MAAM,IAAO,EACzD,EAEJ/vC,KAAK+rO,aAAa3nO,KAAK,CACrB,gBACA8iL,EACA7wJ,EACAygN,EACAnC,EAAUp3F,SACVg3F,EACAI,EAAUlC,SACV32H,EACAr4D,EACA+wL,EACAlvK,EAAcw2C,EACdhhG,EACAw5N,EACA,IAEFt0O,KAAKisO,yBAAyB7nO,KAAK,CACjC,gBACA8iL,EACA7wJ,EACAygN,EACAnC,EAAUp3F,SACVg3F,EACAI,EAAUlC,SACV,EACAhvL,EACA+wL,EACAlvK,EACAxqD,EACAw5N,EACA,EAAIx4H,KAQR,YAAAstH,aAAA,SAAaC,EAAWgH,GACtB,IAAIsE,EAAWD,EAAWD,EAC1B,GAAKpL,EAEE,CACL,IAAMmU,EAAgBnU,EAAUoU,UAC3BD,IAIH9I,EAAY10O,KAAK28O,kBAEfjI,EAA4D,GAC5D10O,KAAK28O,eAAiBjI,GAExBA,EAAU/sL,WAAY,OACpB61L,EAAc7P,YAAc,QAT9B+G,EAAY,KACZ10O,KAAK28O,eAAiBjI,GAYxB,IAAMgJ,EAAkBrU,EAAUsU,YAClC,GAAKD,EAGE,EACLjJ,EAAcz0O,KAAK48O,oBAEjBnI,EAAgE,GAChEz0O,KAAK48O,iBAAmBnI,GAE1B,IAAMrvJ,EAAWs4J,EAAgB1P,cAC3B3nK,EAAiBq3K,EAAgBxP,oBACjCnmL,EAAY21L,EAAgBvtD,WAC5Bq+C,EAAakP,EAAgBnP,gBACnCkG,EAAYl8J,QAAUmlK,EAAgB5P,cAAgB,KACtD2G,EAAYrvJ,SAAWA,EAAWA,EAASjjF,QAAU,KACrDsyO,EAAYpuK,oBACSpoE,IAAnBooE,EAA+B,KAAwBA,EACzDouK,EAAYr8J,SAAWslK,EAAgBtP,eAAiB,KACxDqG,EAAY1sL,eACI9pD,IAAd8pD,EAA0B,KAAmBA,EAC/C0sL,EAAYjG,gBACKvwO,IAAfuwO,EAA2B,KAAoBA,EACjDiG,EAAY5sL,aAAc,OACxB61L,EAAgB/P,YAAc,WAtBhC8G,EAAc,KACdz0O,KAAK48O,iBAAmBnI,EAyB1BE,EAAY30O,KAAK68O,WACjB,IAAMvhL,EAAO+tK,EAAUuU,WAAa,MACpC,QAAatiL,GACb,IAAMu9K,EAAYxP,EAAUqH,gBAC5BiE,EAAUp3F,SAAW8rF,EAAUwU,cAC/BlJ,EAAUr5K,KAAOA,EACjBq5K,EAAUlC,SAAWpJ,EAAUyU,cAC/BnJ,EAAUn6F,UAAY6uF,EAAU0U,eAChCpJ,EAAU7vK,UAAYukK,EAAU2U,eAChCrJ,EAAU1vK,aACRokK,EAAU4U,mBAAqB,KACjCtJ,EAAU2D,eAAiBjP,EAAU6U,oBACrCvJ,EAAU4D,iBAAmBlP,EAAU8U,sBACvCxJ,EAAUpjL,QAAU83K,EAAUr5K,cAAgB,KAC9C2kL,EAAU5kM,WAAsB9xC,IAAd46O,EAA0B,CAAC,EAAG,GAAKA,EAErD,IAAMV,EAAc9O,EAAU+U,aACxBhG,EAAc/O,EAAUgV,aACxBC,EAAqBjV,EAAUoH,oBAC/B8N,EAAelV,EAAUriD,cAC/BhnL,KAAKs8O,MAAQjT,EAAUmV,WAAa,GACpCx+O,KAAKu8O,kBAA+Bt+O,IAAhBk6O,EAA4B,EAAIA,EACpDn4O,KAAKw8O,kBAA+Bv+O,IAAhBm6O,EAA4B,EAAIA,EACpDp4O,KAAKy8O,yBACoBx+O,IAAvBqgP,GAA2CA,EAC7Ct+O,KAAK08O,mBAAiCz+O,IAAjBsgP,EAA6B,EAAIA,EAEtDv+O,KAAKg9O,WAAavI,GACqB,iBAA3BA,EAAY5sL,YAChB4sL,EAAY5sL,aACZ,QAAO4sL,EAAY5sL,cACvB4sL,EAAYl8J,QACZk8J,EAAYpuK,eACZ,IACAouK,EAAY1sL,UACZ0sL,EAAYr8J,SACZq8J,EAAYjG,WACZ,IACAiG,EAAYrvJ,SAAShjF,OACrB,IACA,GACJpC,KAAK88O,SACHnI,EAAUr5K,KACVq5K,EAAU5kM,OACT4kM,EAAU7vK,WAAa,MACvB6vK,EAAU1vK,cAAgB,KAC7BjlE,KAAK+8O,SAAWrI,EACkB,iBAAvBA,EAAU/sL,UACf+sL,EAAU/sL,UACV,KAAM,QAAO+sL,EAAU/sL,WACzB,QA/FJ3nD,KAAKs8O,MAAQ,GAiGft8O,KAAKmwO,wBAA0BE,GAEnC,EAxkBA,CAAgC,umBCHhC,cAUE,WACEtwO,EACA+7G,EACA4yD,EACApvB,EACAu4F,EACA4G,EACAC,GAPF,MASE,cAAO,YAMP,EAAKC,SAAW5+O,EAMhB,EAAK6uK,YAAc9yD,EAMnB,EAAK2yF,QAAU//B,EAMf,EAAKkwE,WAAat/F,EAMlB,EAAKy0F,cAAgB8D,EAMrB,EAAKgH,kBAAoBJ,EAMzB,EAAKK,eAAiBJ,EAMtB,EAAKK,kBAAoB,KAMzB,EAAKC,oBAAsB,KAM3B,EAAKC,kBAAoB,KAMzB,EAAKC,WAAa,KAMlB,EAAKC,aAAe,KAMpB,EAAKnvE,OAAS,KAMd,EAAKovE,cAAgB,EAMrB,EAAKC,cAAgB,EAMrB,EAAKC,aAAe,EAMpB,EAAKC,cAAgB,EAMrB,EAAKC,cAAgB,EAMrB,EAAKC,cAAgB,EAMrB,EAAKC,sBAAuB,EAM5B,EAAKC,eAAiB,EAMtB,EAAKC,YAAc,CAAC,EAAG,GAMvB,EAAKC,YAAc,EAMnB,EAAKvD,MAAQ,GAMb,EAAKC,aAAe,EAMpB,EAAKC,aAAe,EAMpB,EAAKC,qBAAsB,EAM3B,EAAKC,cAAgB,EAMrB,EAAKoD,WAAa,CAAC,EAAG,GAMtB,EAAKnD,eAAiB,KAMtB,EAAKC,iBAAmB,KAMxB,EAAKC,WAAa,KAMlB,EAAK/I,kBAAoB,GAMzB,EAAKiM,oBAAqB,YAu4B9B,OAtmCsC,OAyOpC,YAAAC,YAAA,SAAYv6C,EAAiBnjJ,EAAQjsB,EAAKmjK,GACxC,GAAKx5L,KAAKgwK,OAAV,CAGA,IAAMknE,GAAmB,EAAA53F,EAAA,IACvBmmD,EACAnjJ,EACAjsB,EACAmjK,EACAx5L,KAAK4+O,WACL5+O,KAAK8zO,mBAED/zO,EAAUC,KAAK2+O,SACfsB,EAAiBjgP,KAAK+/O,mBACtBpqK,EAAQ51E,EAAQ6uF,YACI,GAAtB5uF,KAAKu/O,gBACPx/O,EAAQ6uF,YAAcjZ,EAAQ31E,KAAKu/O,eAErC,IAAI37L,EAAW5jD,KAAK2/O,eAChB3/O,KAAK0/O,uBACP97L,GAAY5jD,KAAK+zO,eAEnB,IAAK,IAAIz0O,EAAI,EAAG8sK,EAAK8qE,EAAiB14O,OAAQc,EAAI8sK,EAAI9sK,GAAK,EAAG,CAC5D,IAAMg1C,EAAI4iM,EAAiB53O,GAAKU,KAAKo/O,cAC/B7qM,EAAI2iM,EAAiB53O,EAAI,GAAKU,KAAKq/O,cACzC,GACe,IAAbz7L,GACuB,GAAvB5jD,KAAK4/O,YAAY,IACM,GAAvB5/O,KAAK4/O,YAAY,GACjB,CACA,IAAMn5L,EAAUnS,EAAIt0C,KAAKo/O,cACnB14L,EAAUnS,EAAIv0C,KAAKq/O,eACzB,QACEY,EACAx5L,EACAC,EACA,EACA,EACA9C,GACC6C,GACAC,GAEH3mD,EAAQk8G,aAAah8G,MAAMF,EAASkgP,GACpClgP,EAAQk4E,UAAUxxB,EAASC,GAC3B3mD,EAAQgwC,MAAM/vC,KAAK4/O,YAAY,GAAI5/O,KAAK4/O,YAAY,IACpD7/O,EAAQ8xG,UACN7xG,KAAKgwK,OACLhwK,KAAKw/O,cACLx/O,KAAKy/O,cACLz/O,KAAK6/O,YACL7/O,KAAKs/O,cACJt/O,KAAKo/O,eACLp/O,KAAKq/O,cACNr/O,KAAK6/O,YACL7/O,KAAKs/O,cAEPv/O,EAAQk8G,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,QAEpCl8G,EAAQ8xG,UACN7xG,KAAKgwK,OACLhwK,KAAKw/O,cACLx/O,KAAKy/O,cACLz/O,KAAK6/O,YACL7/O,KAAKs/O,aACLhrM,EACAC,EACAv0C,KAAK6/O,YACL7/O,KAAKs/O,cAIe,GAAtBt/O,KAAKu/O,gBACPx/O,EAAQ6uF,YAAcjZ,KAW1B,YAAAuqK,UAAA,SAAUz6C,EAAiBnjJ,EAAQjsB,EAAKmjK,GACtC,GAAKx5L,KAAK68O,YAA6B,KAAf78O,KAAKs8O,MAA7B,CAGIt8O,KAAK28O,gBACP38O,KAAKmgP,qBAAqBngP,KAAK28O,gBAE7B38O,KAAK48O,kBACP58O,KAAKogP,uBAAuBpgP,KAAK48O,kBAEnC58O,KAAKqgP,qBAAqBrgP,KAAK68O,YAC/B,IAAM3F,GAAmB,EAAA53F,EAAA,IACvBmmD,EACAnjJ,EACAjsB,EACAmjK,EACAx5L,KAAK4+O,WACL5+O,KAAK8zO,mBAED/zO,EAAUC,KAAK2+O,SACjB/6L,EAAW5jD,KAAK08O,cAIpB,IAHI18O,KAAKy8O,sBACP74L,GAAY5jD,KAAK+zO,eAEZzxL,EAASjsB,EAAKisB,GAAUk3I,EAAQ,CACrC,IAAMllJ,EAAI4iM,EAAiB50L,GAAUtiD,KAAKu8O,aACpChoM,EAAI2iM,EAAiB50L,EAAS,GAAKtiD,KAAKw8O,aAC9C,GACe,IAAb54L,GACsB,GAAtB5jD,KAAK8/O,WAAW,IACM,GAAtB9/O,KAAK8/O,WAAW,GAChB,CACA,IAAMG,GAAiB,QACrBjgP,KAAK+/O,mBACLzrM,EACAC,EACA,EACA,EACAqP,GACCtP,GACAC,GAEHx0C,EAAQk8G,aAAah8G,MAAMF,EAASkgP,GACpClgP,EAAQk4E,UAAU3jC,EAAGC,GACrBx0C,EAAQgwC,MAAM/vC,KAAK8/O,WAAW,GAAI9/O,KAAK8/O,WAAW,IAC9C9/O,KAAK48O,kBACP78O,EAAQ8yG,WAAW7yG,KAAKs8O,MAAO,EAAG,GAEhCt8O,KAAK28O,gBACP58O,EAAQ6lF,SAAS5lF,KAAKs8O,MAAO,EAAG,GAElCv8O,EAAQk8G,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,QAEhCj8G,KAAK48O,kBACP78O,EAAQ8yG,WAAW7yG,KAAKs8O,MAAOhoM,EAAGC,GAEhCv0C,KAAK28O,gBACP58O,EAAQ6lF,SAAS5lF,KAAKs8O,MAAOhoM,EAAGC,MAexC,YAAA+rM,cAAA,SAAc76C,EAAiBnjJ,EAAQjsB,EAAKmjK,EAAQhxL,GAClD,IAAMzI,EAAUC,KAAK2+O,SACfzH,GAAmB,EAAA53F,EAAA,IACvBmmD,EACAnjJ,EACAjsB,EACAmjK,EACAx5L,KAAK4+O,WACL5+O,KAAK8zO,mBAEP/zO,EAAQwmE,OAAO2wK,EAAiB,GAAIA,EAAiB,IACrD,IAAI14O,EAAS04O,EAAiB14O,OAC1BgK,IACFhK,GAAU,GAEZ,IAAK,IAAIc,EAAI,EAAGA,EAAId,EAAQc,GAAK,EAC/BS,EAAQymE,OAAO0wK,EAAiB53O,GAAI43O,EAAiB53O,EAAI,IAK3D,OAHIkJ,GACFzI,EAAQs1E,YAEHh/C,GAWT,YAAAkqN,WAAA,SAAW96C,EAAiBnjJ,EAAQupJ,EAAMrS,GACxC,IAAK,IAAIl6L,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAC1CgjD,EAAStiD,KAAKsgP,cACZ76C,EACAnjJ,EACAupJ,EAAKvsM,GACLk6L,GACA,GAGJ,OAAOl3I,GAUT,YAAA0lL,WAAA,SAAWrhH,GACT,IAAK,QAAW3mH,KAAKyuM,QAAS9nF,EAASmoD,aAAvC,CAGA,GAAI9uK,KAAKk/O,YAAcl/O,KAAKm/O,aAAc,CACpCn/O,KAAKk/O,YACPl/O,KAAKmgP,qBAAqBngP,KAAKk/O,YAE7Bl/O,KAAKm/O,cACPn/O,KAAKogP,uBAAuBpgP,KAAKm/O,cAEnC,IAAMjI,GAAmB,QACvBvwH,EACA3mH,KAAK4+O,WACL5+O,KAAK8zO,mBAEDp1J,EAAKw4J,EAAiB,GAAKA,EAAiB,GAC5C3yH,EAAK2yH,EAAiB,GAAKA,EAAiB,GAC5Cv0L,EAAS11C,KAAK+gD,KAAK0wB,EAAKA,EAAK6lC,EAAKA,GAClCxkH,EAAUC,KAAK2+O,SACrB5+O,EAAQumE,YACRvmE,EAAQ6mD,IACNswL,EAAiB,GACjBA,EAAiB,GACjBv0L,EACA,EACA,EAAI11C,KAAKmqE,IAEPp3E,KAAKk/O,YACPn/O,EAAQmkC,OAENlkC,KAAKm/O,cACPp/O,EAAQ0mE,SAGO,KAAfzmE,KAAKs8O,OACPt8O,KAAKkgP,UAAUv5H,EAAS8vE,YAAa,EAAG,EAAG,KAW/C,YAAAn+G,SAAA,SAAS5wB,GACP1nD,KAAKgpO,mBAAmBthL,EAAM+1L,UAAW/1L,EAAMi2L,aAC/C39O,KAAKipO,cAAcvhL,EAAMqnH,YACzB/uK,KAAKopO,aAAa1hL,EAAM82L,YAM1B,YAAAviI,aAAA,SAAaqjC,GACXt/I,KAAK4+O,WAAat/F,GAUpB,YAAAyoF,aAAA,SAAaphH,GAEX,OADaA,EAASwyE,WAEpB,KAAKC,EAAA,QACHp5L,KAAK0xG,UACkD,GAEvD,MACF,KAAK0nF,EAAA,cACHp5L,KAAKqoO,eACuD,GAE5D,MACF,KAAKjvC,EAAA,UACHp5L,KAAK8oO,YACoD,GAEzD,MACF,KAAK1vC,EAAA,cACHp5L,KAAKyoO,eACuD,GAE5D,MACF,KAAKrvC,EAAA,oBACHp5L,KAAKuoO,oBAC4D,GAIjE,MACF,KAAKnvC,EAAA,gBACHp5L,KAAK2oO,iBACyD,GAE9D,MACF,KAAKvvC,EAAA,sBACHp5L,KAAKmoO,uBAC+D,GAIpE,MACF,KAAK/uC,EAAA,SACHp5L,KAAKgoO,WACmD,KAiB9D,YAAAE,YAAA,SAAYj2D,EAASvqH,GACnB,IAAMi/D,EAAWj/D,EAAM84L,qBAAN94L,CAA4BuqH,GACxCtrD,IAAa,QAAW3mH,KAAKyuM,QAAS9nF,EAASmoD,eAGpD9uK,KAAKs4E,SAAS5wB,GACd1nD,KAAK+nO,aAAaphH,KASpB,YAAAwhH,uBAAA,SAAuBxhH,GAErB,IADA,IAAM85H,EAAa95H,EAAS+5H,qBACnBphP,EAAI,EAAG8sK,EAAKq0E,EAAWjiP,OAAQc,EAAI8sK,IAAM9sK,EAChDU,KAAK+nO,aAAa0Y,EAAWnhP,KAUjC,YAAAoyG,UAAA,SAAUiV,GACJ3mH,KAAK6+O,oBACPl4H,EACEA,EAASsoF,oBACPjvM,KAAK6+O,kBACL7+O,KAAK8+O,iBAIX,IAAMr5C,EAAkB9+E,EAAS4yE,qBAC3BC,EAAS7yE,EAAS8yE,YACpBz5L,KAAKgwK,QACPhwK,KAAKggP,YAAYv6C,EAAiB,EAAGA,EAAgBjnM,OAAQg7L,GAE5C,KAAfx5L,KAAKs8O,OACPt8O,KAAKkgP,UAAUz6C,EAAiB,EAAGA,EAAgBjnM,OAAQg7L,IAU/D,YAAAivC,eAAA,SAAe9hH,GACT3mH,KAAK6+O,oBACPl4H,EACEA,EAASsoF,oBACPjvM,KAAK6+O,kBACL7+O,KAAK8+O,iBAIX,IAAMr5C,EAAkB9+E,EAAS4yE,qBAC3BC,EAAS7yE,EAAS8yE,YACpBz5L,KAAKgwK,QACPhwK,KAAKggP,YAAYv6C,EAAiB,EAAGA,EAAgBjnM,OAAQg7L,GAE5C,KAAfx5L,KAAKs8O,OACPt8O,KAAKkgP,UAAUz6C,EAAiB,EAAGA,EAAgBjnM,OAAQg7L,IAU/D,YAAA6uC,eAAA,SAAe1hH,GASb,GARI3mH,KAAK6+O,oBACPl4H,EACEA,EAASsoF,oBACPjvM,KAAK6+O,kBACL7+O,KAAK8+O,kBAIN,QAAW9+O,KAAKyuM,QAAS9nF,EAASmoD,aAAvC,CAGA,GAAI9uK,KAAKm/O,aAAc,CACrBn/O,KAAKogP,uBAAuBpgP,KAAKm/O,cACjC,IAAMp/O,EAAUC,KAAK2+O,SACfl5C,EAAkB9+E,EAAS4yE,qBACjCx5L,EAAQumE,YACRtmE,KAAKsgP,cACH76C,EACA,EACAA,EAAgBjnM,OAChBmoH,EAAS8yE,aACT,GAEF15L,EAAQ0mE,SAEV,GAAmB,KAAfzmE,KAAKs8O,MAAc,CACrB,IAAMqE,EAAeh6H,EAASskF,kBAC9BjrM,KAAKkgP,UAAUS,EAAc,EAAG,EAAG,MAUvC,YAAApY,oBAAA,SAAoB5hH,GACd3mH,KAAK6+O,oBACPl4H,EAEIA,EAASsoF,oBACPjvM,KAAK6+O,kBACL7+O,KAAK8+O,iBAIb,IAAM8B,EAAiBj6H,EAASmoD,YAChC,IAAK,QAAW9uK,KAAKyuM,QAASmyC,GAA9B,CAGA,GAAI5gP,KAAKm/O,aAAc,CACrBn/O,KAAKogP,uBAAuBpgP,KAAKm/O,cACjC,IAAMp/O,EAAUC,KAAK2+O,SACfl5C,EAAkB9+E,EAAS4yE,qBAC7Bj3I,EAAS,EACPupJ,EAAqCllF,EAASwlF,UAC9C3S,EAAS7yE,EAAS8yE,YACxB15L,EAAQumE,YACR,IAAK,IAAIhnE,EAAI,EAAG8sK,EAAKy/B,EAAKrtM,OAAQc,EAAI8sK,IAAM9sK,EAC1CgjD,EAAStiD,KAAKsgP,cACZ76C,EACAnjJ,EACAupJ,EAAKvsM,GACLk6L,GACA,GAGJz5L,EAAQ0mE,SAEV,GAAmB,KAAfzmE,KAAKs8O,MAAc,CACrB,IAAMuE,EAAgBl6H,EAAS2lF,mBAC/BtsM,KAAKkgP,UAAUW,EAAe,EAAGA,EAAcriP,OAAQ,MAU3D,YAAAsqO,YAAA,SAAYniH,GASV,GARI3mH,KAAK6+O,oBACPl4H,EACEA,EAASsoF,oBACPjvM,KAAK6+O,kBACL7+O,KAAK8+O,kBAIN,QAAW9+O,KAAKyuM,QAAS9nF,EAASmoD,aAAvC,CAGA,GAAI9uK,KAAKm/O,cAAgBn/O,KAAKk/O,WAAY,CACpCl/O,KAAKk/O,YACPl/O,KAAKmgP,qBAAqBngP,KAAKk/O,YAE7Bl/O,KAAKm/O,cACPn/O,KAAKogP,uBAAuBpgP,KAAKm/O,cAEnC,IAAMp/O,EAAUC,KAAK2+O,SACrB5+O,EAAQumE,YACRtmE,KAAKugP,WACH55H,EAASknF,6BACT,EAC8BlnF,EAASwlF,UACvCxlF,EAAS8yE,aAEPz5L,KAAKk/O,YACPn/O,EAAQmkC,OAENlkC,KAAKm/O,cACPp/O,EAAQ0mE,SAGZ,GAAmB,KAAfzmE,KAAKs8O,MAAc,CACrB,IAAMwE,EAAoBn6H,EAASmoF,uBACnC9uM,KAAKkgP,UAAUY,EAAmB,EAAG,EAAG,MAS5C,YAAAnY,iBAAA,SAAiBhiH,GASf,GARI3mH,KAAK6+O,oBACPl4H,EACEA,EAASsoF,oBACPjvM,KAAK6+O,kBACL7+O,KAAK8+O,kBAIN,QAAW9+O,KAAKyuM,QAAS9nF,EAASmoD,aAAvC,CAGA,GAAI9uK,KAAKm/O,cAAgBn/O,KAAKk/O,WAAY,CACpCl/O,KAAKk/O,YACPl/O,KAAKmgP,qBAAqBngP,KAAKk/O,YAE7Bl/O,KAAKm/O,cACPn/O,KAAKogP,uBAAuBpgP,KAAKm/O,cAEnC,IAAMp/O,EAAUC,KAAK2+O,SACfl5C,EAAkB9+E,EAASknF,6BAC7BvrJ,EAAS,EACPyqJ,EAAQpmF,EAASonF,WACjBvU,EAAS7yE,EAAS8yE,YACxB15L,EAAQumE,YACR,IAAK,IAAIhnE,EAAI,EAAG8sK,EAAK2gC,EAAMvuM,OAAQc,EAAI8sK,IAAM9sK,EAAG,CAC9C,IAAMusM,EAAOkB,EAAMztM,GACnBgjD,EAAStiD,KAAKugP,WAAW96C,EAAiBnjJ,EAAQupJ,EAAMrS,GAEtDx5L,KAAKk/O,YACPn/O,EAAQmkC,OAENlkC,KAAKm/O,cACPp/O,EAAQ0mE,SAGZ,GAAmB,KAAfzmE,KAAKs8O,MAAc,CACrB,IAAMyE,EAAqBp6H,EAASqnF,wBACpChuM,KAAKkgP,UAAUa,EAAoB,EAAGA,EAAmBviP,OAAQ,MAQrE,YAAA2hP,qBAAA,SAAqBzL,GACnB,IAAM30O,EAAUC,KAAK2+O,SACfqC,EAAmBhhP,KAAK++O,kBACzBiC,EAMCA,EAAiBr5L,WAAa+sL,EAAU/sL,YAC1Cq5L,EAAiBr5L,UAAY+sL,EAAU/sL,UACvC5nD,EAAQ4nD,UAAY+sL,EAAU/sL,YAPhC5nD,EAAQ4nD,UAAY+sL,EAAU/sL,UAC9B3nD,KAAK++O,kBAAoB,CACvBp3L,UAAW+sL,EAAU/sL,aAc3B,YAAAy4L,uBAAA,SAAuB3L,GACrB,IAAM10O,EAAUC,KAAK2+O,SACfsC,EAAqBjhP,KAAKg/O,oBAC3BiC,GAoBCA,EAAmB1oK,SAAWk8J,EAAYl8J,UAC5C0oK,EAAmB1oK,QAAUk8J,EAAYl8J,QACzCx4E,EAAQw4E,QAAUk8J,EAAYl8J,SAE5Bx4E,EAAQqmE,eACL,QAAO66K,EAAmB77J,SAAUqvJ,EAAYrvJ,WACnDrlF,EAAQqmE,YACL66K,EAAmB77J,SAAWqvJ,EAAYrvJ,UAG3C67J,EAAmB56K,gBAAkBouK,EAAYpuK,iBACnD46K,EAAmB56K,eAAiBouK,EAAYpuK,eAChDtmE,EAAQsmE,eAAiBouK,EAAYpuK,iBAGrC46K,EAAmB7oK,UAAYq8J,EAAYr8J,WAC7C6oK,EAAmB7oK,SAAWq8J,EAAYr8J,SAC1Cr4E,EAAQq4E,SAAWq8J,EAAYr8J,UAE7B6oK,EAAmBl5L,WAAa0sL,EAAY1sL,YAC9Ck5L,EAAmBl5L,UAAY0sL,EAAY1sL,UAC3ChoD,EAAQgoD,UAAY0sL,EAAY1sL,WAE9Bk5L,EAAmBzS,YAAciG,EAAYjG,aAC/CyS,EAAmBzS,WAAaiG,EAAYjG,WAC5CzuO,EAAQyuO,WAAaiG,EAAYjG,YAE/ByS,EAAmBp5L,aAAe4sL,EAAY5sL,cAChDo5L,EAAmBp5L,YAAc4sL,EAAY5sL,YAC7C9nD,EAAQ8nD,YAAc4sL,EAAY5sL,eAhDpC9nD,EAAQw4E,QAAUk8J,EAAYl8J,QAC1Bx4E,EAAQqmE,cACVrmE,EAAQqmE,YAAYquK,EAAYrvJ,UAChCrlF,EAAQsmE,eAAiBouK,EAAYpuK,gBAEvCtmE,EAAQq4E,SAAWq8J,EAAYr8J,SAC/Br4E,EAAQgoD,UAAY0sL,EAAY1sL,UAChChoD,EAAQyuO,WAAaiG,EAAYjG,WACjCzuO,EAAQ8nD,YAAc4sL,EAAY5sL,YAClC7nD,KAAKg/O,oBAAsB,CACzBzmK,QAASk8J,EAAYl8J,QACrB6M,SAAUqvJ,EAAYrvJ,SACtB/e,eAAgBouK,EAAYpuK,eAC5B+R,SAAUq8J,EAAYr8J,SACtBrwB,UAAW0sL,EAAY1sL,UACvBymL,WAAYiG,EAAYjG,WACxB3mL,YAAa4sL,EAAY5sL,eAyC/B,YAAAw4L,qBAAA,SAAqB1L,GACnB,IAAM50O,EAAUC,KAAK2+O,SACfuC,EAAmBlhP,KAAKi/O,kBACxBn6K,EAAY6vK,EAAU7vK,UACxB6vK,EAAU7vK,UACV,KACCo8K,GAYCA,EAAiB5lL,MAAQq5K,EAAUr5K,OACrC4lL,EAAiB5lL,KAAOq5K,EAAUr5K,KAClCv7D,EAAQu7D,KAAOq5K,EAAUr5K,MAEvB4lL,EAAiBp8K,WAAaA,IAChCo8K,EAAiBp8K,UAA2C,EAC5D/kE,EAAQ+kE,UAA2C,GAEjDo8K,EAAiBj8K,cAAgB0vK,EAAU1vK,eAC7Ci8K,EAAiBj8K,aACf0vK,EAAsB,aAExB50O,EAAQklE,aACN0vK,EAAsB,gBAxB1B50O,EAAQu7D,KAAOq5K,EAAUr5K,KACzBv7D,EAAQ+kE,UAA2C,EACnD/kE,EAAQklE,aACN0vK,EAAsB,aAExB30O,KAAKi/O,kBAAoB,CACvB3jL,KAAMq5K,EAAUr5K,KAChBwJ,UAAWA,EACXG,aAAc0vK,EAAU1vK,gBA6B9B,YAAA+jK,mBAAA,SAAmBrhL,EAAWE,GAA9B,WACE,GAAKF,EAEE,CACL,IAAM+lL,EAAiB/lL,EAAUgmL,WACjC3tO,KAAKk/O,WAAa,CAChBv3L,WAAW,OACT+lL,GAAkC,YALtC1tO,KAAKk/O,WAAa,KASpB,GAAKr3L,EAEE,CACL,IAAM+lL,EAAmB/lL,EAAY8lL,WAC/BE,EAAqBhmL,EAAYimL,aACjCC,EAAsBlmL,EAAYmmL,cAClCC,EAA4BpmL,EAAYqmL,oBACxCC,EAAsBtmL,EAAYumL,cAClCC,EAAmBxmL,EAAYsoI,WAC/Bm+C,EAAwBzmL,EAAY0mL,gBACpCnpJ,EAAW2oJ,GAEb,KACJ/tO,KAAKm/O,aAAe,CAClB5mK,aACyBt6E,IAAvB4vO,EACIA,EACA,KACNzoJ,SACuB,IAArBplF,KAAK4uK,YACDxpF,EACAA,EAASl8E,KAAI,SAAC20F,GAAM,OAAAA,EAAI,EAAK+wE,eACnCvoG,gBACG4nK,GAEG,MAAyBjuO,KAAK4uK,YACpCx2F,cAC0Bn6E,IAAxBkwO,EACIA,EACA,KACNpmL,gBACwB9pD,IAArBowO,EACGA,EACA,MAAoBruO,KAAK4uK,YAC/B4/D,gBAC4BvwO,IAA1BqwO,EACIA,EACA,KACNzmL,aAAa,OACX+lL,GAAsC,YAtC1C5tO,KAAKm/O,aAAe,MAkDxB,YAAAlW,cAAA,SAAcC,GACZ,IAAIiY,EACJ,GAAKjY,IAAgBiY,EAAYjY,EAAW9oD,WAA5C,CAIA,IAAMghE,EAAclY,EAAWoH,YACzB+Q,EAAcnY,EAAW5N,YAC/Bt7N,KAAKgwK,OAASk5D,EAAWn6D,SAAS/uK,KAAK4uK,aACvC5uK,KAAKo/O,cAAgBgC,EAAY,GAAKphP,KAAK4uK,YAC3C5uK,KAAKq/O,cAAgB+B,EAAY,GAAKphP,KAAK4uK,YAC3C5uK,KAAKs/O,aAAe6B,EAAU,GAAKnhP,KAAK4uK,YACxC5uK,KAAKu/O,cAAgBrW,EAAWpuB,aAChC96M,KAAKw/O,cAAgB6B,EAAY,GACjCrhP,KAAKy/O,cAAgB4B,EAAY,GACjCrhP,KAAK0/O,qBAAuBxW,EAAWuH,oBACvCzwO,KAAK2/O,eAAiBzW,EAAWliD,cACjChnL,KAAK4/O,YAAc1W,EAAWwH,gBAC9B1wO,KAAK6/O,YAAcsB,EAAU,GAAKnhP,KAAK4uK,iBAfrC5uK,KAAKgwK,OAAS,MAwBlB,YAAAo5D,aAAA,SAAaC,GACX,GAAKA,EAEE,CACL,IAAMmU,EAAgBnU,EAAUoU,UAChC,GAAKD,EAEE,CACL,IAAM8D,EAAqB9D,EAAc7P,WACzC3tO,KAAK28O,eAAiB,CACpBh1L,WAAW,OACT25L,GAA0C,YAL9CthP,KAAK28O,eAAiB,KASxB,IAAMe,EAAkBrU,EAAUsU,YAClC,GAAKD,EAEE,CACL,IAAM6D,EAAuB7D,EAAgB/P,WACvC6T,EAAyB9D,EAAgB5P,aACzC2T,EAA0B/D,EAAgB1P,cAC1C0T,EACJhE,EAAgBxP,oBACZyT,EAA0BjE,EAAgBtP,cAC1CwT,EAAuBlE,EAAgBvtD,WACvC0xD,EAA4BnE,EAAgBnP,gBAClDvuO,KAAK48O,iBAAmB,CACtBrkK,aAC6Bt6E,IAA3BujP,EACIA,EACA,KACNp8J,SAAUq8J,GAEN,KACJp7K,eAAgBq7K,GAEZ,KACJtpK,cAC8Bn6E,IAA5B0jP,EACIA,EACA,KACN55L,eAC2B9pD,IAAzB2jP,EACIA,EACA,KACNpT,gBACgCvwO,IAA9B4jP,EACIA,EACA,KACNh6L,aAAa,OACX05L,GAA8C,YAlClDvhP,KAAK48O,iBAAmB,KAsC1B,IAAMkF,EAAWzY,EAAUuU,UACrBzF,EAAc9O,EAAU+U,aACxBhG,EAAc/O,EAAUgV,aACxBC,EAAqBjV,EAAUoH,oBAC/B8N,EAAelV,EAAUriD,cACzB6xD,EAAYxP,EAAUqH,gBACtBqR,EAAW1Y,EAAUmV,UACrBwD,EAAgB3Y,EAAU2U,eAC1BiE,EAAmB5Y,EAAU4U,kBACnCj+O,KAAK68O,WAAa,CAChBvhL,UAAmBr9D,IAAb6jP,EAAyBA,EAAW,KAC1Ch9K,eACoB7mE,IAAlB+jP,EAA8BA,EAAgB,KAChD/8K,kBACuBhnE,IAArBgkP,EACIA,EACA,MAERjiP,KAAKs8O,WACUr+O,IAAb8jP,EACIzhP,MAAMiF,QAAQw8O,GACZA,EAASh8O,QAAO,SAACC,EAAKmzC,EAAG75C,GAAM,OAAC0G,GAAO1G,EAAI,EAAI,IAAM65C,KAAI,IACzD4oM,EACF,GACN/hP,KAAKu8O,kBACat+O,IAAhBk6O,EAA4Bn4O,KAAK4uK,YAAcupE,EAAc,EAC/Dn4O,KAAKw8O,kBACav+O,IAAhBm6O,EAA4Bp4O,KAAK4uK,YAAcwpE,EAAc,EAC/Dp4O,KAAKy8O,yBACoBx+O,IAAvBqgP,GAAmCA,EACrCt+O,KAAK08O,mBAAiCz+O,IAAjBsgP,EAA6BA,EAAe,EACjEv+O,KAAK8/O,WAAa,CAChB9/O,KAAK4uK,YAAciqE,EAAU,GAC7B74O,KAAK4uK,YAAciqE,EAAU,SAtF/B74O,KAAKs8O,MAAQ,IA0FnB,EAtmCA,CAAsC4F,EAAA,GAwmCtC,sDCpoCaC,EAAwB,GAgB9B,SAASC,EACd3tN,EACAwtL,EACAnjC,EACA0vB,EACA9/B,EACAC,EACA/qH,GAEA,IAAMhoD,EAAQ64B,EAAK,GAAK0tN,EAClBtmP,EAAS44B,EAAK,GAAK0tN,EACnBpiP,GAAU,QAAsBnE,EAAOC,GAC7CkE,EAAQsiP,uBAAwB,EAahC,IAZA,IAAM5uL,EAAS1zD,EAAQ0zD,OACjBssH,EAAW,IAAI,EACnBhgL,EACAoiP,EACAzzE,EACA,KACA9qH,GAEI0+L,EAAexjE,EAAStgL,OAExB+jP,EAAct1O,KAAKwjB,MAAM,SAAwB6xN,GACjDE,EAAmB,GAChBljP,EAAI,EAAGA,GAAKgjP,IAAgBhjP,EAAG,CACtC,IAAM2yK,EAAU6M,EAASx/K,EAAI,GACvBmjP,EAAuBxwE,EAAQ5D,oBAAsBmgC,EAC3D,GAAKA,EAAL,CAGA,IAAIl0F,EAASmoI,EAAqBxwE,EAAStD,GAC3C,GAAKr0D,EAAL,CAGKh6G,MAAMiF,QAAQ+0G,KACjBA,EAAS,CAACA,IAIZ,IAFA,IACMpuE,EAAQ,KAAO,UADP5sC,EAAIijP,GACoBziP,SAAS,KAAKqC,OAAO,GAClDgrD,EAAI,EAAG8pI,EAAK38E,EAAO97G,OAAQ2uD,EAAI8pI,IAAM9pI,EAAG,CAC/C,IAAMu1L,EAAgBpoI,EAAOntD,GACvBw5D,EAAW+7H,EAAclC,qBAAdkC,CAAoCzwE,GACrD,GAAKtrD,IAAa,QAAW+nD,EAAQ/nD,EAASmoD,aAA9C,CAGA,IAAMpnH,EAAQg7L,EAAcr5N,QACtB6a,EAAOwjB,EAAM+1L,UACfv5M,GACFA,EAAKy+M,SAASz2M,GAEhB,IAAMu6B,EAAS/e,EAAMi2L,YACjBl3K,IACFA,EAAOk8K,SAASz2M,GAChBu6B,EAAOL,YAAY,OAErB1e,EAAMk7L,aAAQ3kP,GACd,IAAMmxK,EAAQszE,EAAc3zE,WAC5B,GAAIK,GAAgC,IAAvBA,EAAM0rC,aAAoB,CACrC,IAAM+nC,EAAUzzE,EAAM0zE,eACtB,IAAKD,EACH,SAGF,IAAME,GAAa,QACjBF,EAAQ,GACRA,EAAQ,QACR5kP,EACA,CAAC03E,OAAO,IAEJ45F,EAAMwzE,EAAWtvL,OACvBsvL,EAAWp7L,UAAYzb,EACvB62M,EAAWl9K,SAAS,EAAG,EAAG0pG,EAAI3zK,MAAO2zK,EAAI1zK,QACzC6rD,EAAM6oH,SACJ,IAAIyyE,EAAA,EAAK,CACPzzE,IAAKA,EACLszE,QAASA,EACTl+H,OAAQyqD,EAAMkhE,YACd2S,aAAcC,EAAA,SACdC,aAAcD,EAAA,SACd5gM,OAAQ8sH,EAAMksD,YACd/wI,QAAS,EACT91D,KAAM26I,EAAMgR,UACZrwI,MAAOq/H,EAAMrmG,WACbnlB,SAAUwrH,EAAM4X,cAChBgxD,eAAgB5oE,EAAMqhE,uBAI5B,IAAM58D,EAASnsH,EAAMmzJ,aAAe,GAChCuoC,EAAiBZ,EAAiB3uE,MAEpCuvE,EAAiB,GACjBZ,EAAiB3uE,GAAUuvE,EAC3BA,EAAehqD,EAAA,WAAwB,GACvCgqD,EAAehqD,EAAA,UAAuB,GACtCgqD,EAAehqD,EAAA,eAA4B,GAC3CgqD,EAAehqD,EAAA,SAAsB,IAEvCgqD,EAAez8H,EAASwyE,UAAU7zL,QAAQ,QAAS,KAAKlB,KACtDuiH,EACAj/D,OAQN,IAHA,IAAM27L,EAAapnP,OAAOkQ,KAAKq2O,GAC5Bt5O,IAAIgB,QACJi7B,KAAK,MACQinI,GAAP9sK,EAAI,EAAQ+jP,EAAW7kP,QAAQc,EAAI8sK,IAAM9sK,EAAG,CACnD,IAAM8jP,EAAiBZ,EAAiBa,EAAW/jP,IACnD,IAAK,IAAMjB,KAAQ+kP,EACjB,KAAME,EAAeF,EAAe/kP,GACpC,IAAS8uD,EAAI,EAAG8pI,EAAKqsD,EAAa9kP,OAAQ2uD,EAAI8pI,EAAI9pI,GAAK,EAAG,CACxD4yH,EAASznG,SAASgrK,EAAan2L,EAAI,IACnC,IAAK,IAAIyuC,EAAI,EAAG2nJ,EAAKthC,EAAWzjN,OAAQo9F,EAAI2nJ,IAAM3nJ,EAChDmkF,EAAS9jE,aAAagmG,EAAWrmH,IACjCmkF,EAASgoD,aAAaub,EAAan2L,MAK3C,OAAOptD,EAAQuuN,aAAa,EAAG,EAAG76J,EAAO73D,MAAO63D,EAAO53D,QAYlD,SAAS2nP,EAAU3gL,EAAOi8G,EAAU07D,GACzC,IAAMiJ,EAAiB,GACvB,GAAIjJ,EAAW,CACb,IAAMlmM,EAAIrnC,KAAKwjB,MAAMxjB,KAAKgsD,MAAM4J,EAAM,IAAMs/K,GACtC5tM,EAAItnC,KAAKwjB,MAAMxjB,KAAKgsD,MAAM4J,EAAM,IAAMs/K,GAItC32N,EAGJ,IAFC,QAAM8oB,EAAG,EAAGkmM,EAAU5+O,MAAQ,IAC7B,QAAM24C,EAAG,EAAGimM,EAAU3+O,OAAS,GAAK2+O,EAAU5+O,OAE5CgnC,EAAI43M,EAAU/uO,KAAK+f,GACnBzmB,EAAIy1O,EAAU/uO,KAAK+f,EAAQ,GAE3BlsB,EADIk7O,EAAU/uO,KAAK+f,EAAQ,GACnB,KAAOzmB,EAAI,IAAM69B,GACzB2/M,EAAct1O,KAAKwjB,MAAM,SAAwBquJ,EAAStgL,QAC5Dc,GAAKA,EAAIijP,GAAgB,GAC3BkB,EAAer/O,KAAK06K,EAASx/K,EAAIijP,EAAc,IAGnD,OAAOkB,2iBC4BT,QAxMA,YAIE,WAAYj8N,GAAZ,MACE,cAAO,YAMP,EAAKw4J,OAAQ,EAGb,EAAK0jE,wBAA0B,EAAKC,mBAAmB1sO,KAAK,GAM5D,EAAK2sO,OAASp8N,EAKd,EAAKm5L,uBAAyB,OA6KlC,OAtM4B,OAkC1B,YAAAhE,YAAA,SAAY95I,GACV,OAAO,WAOT,YAAAo5I,QAAA,SAAQp5I,GACN,OAAO,MAST,YAAA87I,aAAA,SAAaxtC,GACX,OAAO,WAUT,YAAAkC,YAAA,SAAYlC,EAAYnjK,GACtB,OAAO,WAST,YAAA61O,mBAAA,SAAmBz8B,EAAO9wB,EAAMxc,GACzBstC,EAAM9wB,KACT8wB,EAAM9wB,GAAQ,IAEhB8wB,EAAM9wB,GAAMxc,EAAKlJ,UAAU9wK,YAAcg6K,GAa3C,YAAAgqE,uBAAA,SAAuBnoP,EAAQu2K,EAAYk1C,GACzC,OAOE,SAAU9wB,EAAMtG,GACd,IAAMx0K,EAAWxb,KAAK6jP,mBAAmB5sO,KAAKjX,KAAMonN,EAAO9wB,GAC3D,OAAO36L,EAAOooP,kBAAkB7xE,EAAYokB,EAAMtG,EAAWx0K,IAC7DvE,KAAKjX,OAaX,YAAA0xK,2BAAA,SACEC,EACAR,EACAS,EACAp2J,EACA4d,KAcF,YAAAq7I,eAAA,SAAe5xG,EAAOsuG,EAAYS,GAChC,OAAO,MAMT,YAAAqvC,SAAA,WACE,OAAOjhN,KAAK4jP,QAOd,YAAAxhE,mBAAA,aAOA,YAAAuhE,mBAAA,SAAmBzmP,GAC2CA,EAAY,OAC9DgyK,aAAe,YACvBlvK,KAAKoiN,2BAWT,YAAA4hC,UAAA,SAAU50E,GACR,IAAI60E,EAAa70E,EAAMF,WAQvB,OAPI+0E,GAAc,YAAqBA,GAAc,WACnD70E,EAAMn3J,iBAAiB,WAAkBjY,KAAK0jP,yBAE5CO,GAAc,WAChB70E,EAAMrnC,OACNk8G,EAAa70E,EAAMF,YAEd+0E,GAAc,YAMvB,YAAA7hC,wBAAA,WACE,IAAM56L,EAAQxnB,KAAKihN,WACfz5L,EAAMuzL,cAAgBvzL,EAAM8sJ,kBAAoB,WAClD9sJ,EAAM2hC,WAOV,YAAAgkH,gBAAA,kBACSntK,KAAK4jP,OACZ,YAAMz2E,gBAAe,YAEzB,EAtMA,CAA4B,0kBCaxBi/C,EAAe,KAgWnB,QAlVA,YAIE,WAAY5kM,GAAZ,MACE,YAAMA,IAAM,YAMZ,EAAKyuC,UAAY,KAMjB,EAAK+uJ,mBAQL,EAAKk/B,eAAgB,UAQrB,EAAK3iC,gBAAiB,UAQtB,EAAKC,uBAAwB,UAK7B,EAAKzhN,QAAU,KAKf,EAAK6hN,iBAAkB,EAMvB,EAAK2V,cAAgB,KAMrB,EAAKpmD,WAAa,OAiRtB,OAhVkC,OAwEhC,YAAAm9C,aAAA,SAAal/C,EAAO9qF,EAAKP,GApF3B,IACQtwB,EAyFAhoD,EALC2gN,KApFD34J,EAASxuD,SAASkS,cAAc,WAC/Bvb,MAAQ,EACf63D,EAAO53D,OAAS,EAChBuwN,EAAe34J,EAAO5c,WAAW,OAoF/Bu1K,EAAa36G,UAAU,EAAG,EAAG,EAAG,GAGhC,IACE26G,EAAav6G,UAAUu9D,EAAO9qF,EAAKP,EAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GACvDt4E,EAAO2gN,EAAakC,aAAa,EAAG,EAAG,EAAG,GAAG7iN,KAC7C,MAAOtI,GACP,OAAO,KAET,OAAOsI,GAOT,YAAAgvM,cAAA,SAActpC,GACZ,IACImpC,EADUt6M,KAAKihN,WACIxG,gBAIvB,MAH0B,mBAAfH,IACTA,EAAaA,EAAWnpC,EAAWI,UAAU5C,aAExC2rC,QAAcr8M,GAUvB,YAAAyjN,aAAA,SAAa1zM,EAAQsxI,EAAW/0D,EAAS45J,GACvC,IACIluL,EAAWl2D,EADTg4N,EAAiB/3N,KAAKihN,WAAWvG,eA8BvC,GA3BE1sM,GACAA,EAAO6uB,YAAck7L,GACI,KAAzB/pN,EAAO05C,MAAM6iC,SACD,IAAZA,KACE45J,GACCn2O,EAAO05C,MAAME,kBACZ,SACE,QAAQ55C,EAAO05C,MAAME,kBACrB,QAAQu8L,OAGR1wL,EAASzlD,EAAOq1J,6BACAkvD,oBACpBxyN,EAAU0zD,EAAO5c,WAAW,OAG5B92C,GAAWA,EAAQ0zD,OAAO/L,MAAM43F,YAAcA,GAEhDt/I,KAAKi2D,UAAYjoD,EACjBhO,KAAKD,QAAUA,EACfC,KAAK4hN,iBAAkB,GACd5hN,KAAK4hN,kBAEd5hN,KAAKi2D,UAAY,KACjBj2D,KAAKD,QAAU,KACfC,KAAK4hN,iBAAkB,IAEpB5hN,KAAKi2D,UAAW,EACnBA,EAAYhxD,SAASkS,cAAc,QACzB0lB,UAAYk7L,EACtB,IAAIrwK,EAAQuO,EAAUvO,MACtBA,EAAMuF,SAAW,WACjBvF,EAAM9rD,MAAQ,OACd8rD,EAAM7rD,OAAS,OACXsoP,IACFz8L,EAAME,gBAAkBu8L,GAG1B,IAAM1wL,GADN1zD,GAAU,WACa0zD,OACvBwC,EAAU1+C,YAAYk8C,IACtB/L,EAAQ+L,EAAO/L,OACTuF,SAAW,WACjBvF,EAAMnO,KAAO,IACbmO,EAAM08L,gBAAkB,WACxBpkP,KAAKi2D,UAAYA,EACjBj2D,KAAKD,QAAUA,IAUnB,YAAAgiN,cAAA,SAAchiN,EAASoxK,EAAYzC,GACjC,IAAMnyF,GAAU,QAAWmyF,GACrBlyF,GAAW,QAAYkyF,GACvBhyF,GAAc,QAAegyF,GAC7BjyF,GAAa,QAAciyF,IAEjC,QAAeyC,EAAWK,2BAA4Bj1F,IACtD,QAAe40F,EAAWK,2BAA4Bh1F,IACtD,QAAe20F,EAAWK,2BAA4B90F,IACtD,QAAey0F,EAAWK,2BAA4B/0F,GAEtD,IAAM4nK,EAAWrkP,KAAKwhN,uBACtB,QAAe6iC,EAAU9nK,IACzB,QAAe8nK,EAAU7nK,IACzB,QAAe6nK,EAAU3nK,IACzB,QAAe2nK,EAAU5nK,GAEzB18E,EAAQ6lE,OACR7lE,EAAQumE,YACRvmE,EAAQwmE,OAAOt5D,KAAKgsD,MAAMsjB,EAAQ,IAAKtvE,KAAKgsD,MAAMsjB,EAAQ,KAC1Dx8E,EAAQymE,OAAOv5D,KAAKgsD,MAAMujB,EAAS,IAAKvvE,KAAKgsD,MAAMujB,EAAS,KAC5Dz8E,EAAQymE,OAAOv5D,KAAKgsD,MAAMyjB,EAAY,IAAKzvE,KAAKgsD,MAAMyjB,EAAY,KAClE38E,EAAQymE,OAAOv5D,KAAKgsD,MAAMwjB,EAAW,IAAKxvE,KAAKgsD,MAAMwjB,EAAW,KAChE18E,EAAQ25C,QASV,YAAAw+K,qBAAA,SAAqB75N,EAAM0B,EAASoxK,GAClC,IAAM3pJ,EAAQxnB,KAAKihN,WACnB,GAAIz5L,EAAMysJ,YAAY51K,GAAO,CAC3B,IAAM,EAAQ,IAAI,IAChBA,EACA2B,KAAKwhN,sBACLrwC,EACApxK,GAEFynB,EAAM4hG,cAAc,KASxB,YAAAy4F,UAAA,SAAU9hN,EAASoxK,GACjBnxK,KAAKmxK,WAAaA,EAClBnxK,KAAKk4N,qBAAqB,cAA2Bn4N,EAASoxK,IAQhE,YAAA6wC,WAAA,SAAWjiN,EAASoxK,GAClBnxK,KAAKk4N,qBAAqB,eAA4Bn4N,EAASoxK,IAejE,YAAAkwC,mBAAA,SACEhhK,EACAsuH,EACA/qH,EACAk4D,EACAlgH,EACAC,EACA2nD,GAEA,IAAM01J,EAAMt9M,EAAQ,EACdu9M,EAAMt9M,EAAS,EACfwpH,EAAKvJ,EAAa6yD,EAClBrpD,GAAMD,EACN+zF,GAAO/4J,EAAO,GAAKmD,EACnB61J,GAAOh5J,EAAO,GACpB,OAAO,QACLrgD,KAAKkkP,cACLhrC,EACAC,EACA9zF,EACAC,GACC1hE,EACDw1J,EACAC,IAYJ,YAAA5kC,eAAA,SAAe5xG,EAAOsuG,EAAYS,GAChC,IAAMumD,GAAc,QAClBn4N,KAAKwhN,sBACL3+I,EAAM1gE,SAEFpC,EAAUC,KAAKD,QAGf+hN,EADQ9hN,KAAKihN,WACOnyC,YAC1B,GAAIgzC,EAAa,CACf,IAAMsW,GAAmB,QACvBjnD,EAAWM,2BACX5uG,EAAM1gE,SAIR,KAAK,QAAmB2/M,EAAasW,GACnC,OAAO,KAIX,IAWI3sN,EAXE6oC,EAAIrnC,KAAKgsD,MAAMk/J,EAAY,IAC3B5jL,EAAItnC,KAAKgsD,MAAMk/J,EAAY,IAC7B/L,EAAepsN,KAAKu3N,cACxB,IAAKnL,EAAc,CACjB,IAAMiM,EAAcpzN,SAASkS,cAAc,UAC3CkhN,EAAYz8N,MAAQ,EACpBy8N,EAAYx8N,OAAS,EACrBuwN,EAAeiM,EAAYxhL,WAAW,MACtC72C,KAAKu3N,cAAgBnL,EAEvBA,EAAa36G,UAAU,EAAG,EAAG,EAAG,GAEhC,IACE26G,EAAav6G,UAAU9xG,EAAQ0zD,OAAQnf,EAAGC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC5D9oC,EAAO2gN,EAAakC,aAAa,EAAG,EAAG,EAAG,GAAG7iN,KAC7C,MAAOtI,GACP,MAAiB,kBAAbA,EAAIvG,MAENoD,KAAKu3N,cAAgB,KACd,IAAIn2F,YAEN31H,EAGT,OAAgB,IAAZA,EAAK,GACA,KAEFA,GAMT,YAAA0hK,gBAAA,kBACSntK,KAAKmxK,WACZ,YAAMhE,gBAAe,YAEzB,EAhVA,CAAkC,woBCgsBlC,QAlsBA,YAIE,WAAY8rD,GAAZ,MACE,YAAMA,IAAU,YAMhB,EAAKqrB,eAAgB,EAMrB,EAAKnkC,gBAAkB,KAMvB,EAAKokC,mBAML,EAAK59B,mBAAqB,KAM1B,EAAK1B,iBAML,EAAKJ,cAAgB,GAMrB,EAAK2/B,WAAY,EAMjB,EAAKr+B,WAAY,UAMjB,EAAKs+B,cAAgB,IAAI,IAAU,EAAG,EAAG,EAAG,KAqoBhD,OAhsBsC,OAmEpC,YAAAhgC,eAAA,SAAe3qC,GACb,IAAMm/C,EAAYj5N,KAAKihN,WACjBgZ,EAAYngD,EAAK5K,WACjB0sC,EAAyBqd,EAAUjd,4BACzC,OACEie,GAAa,YACbA,GAAa,WACZA,GAAa,YAAoBre,GAWtC,YAAAuI,QAAA,SAAQryJ,EAAGxd,EAAGC,EAAG48H,GACf,IAAMr1D,EAAaq1D,EAAWr1D,WACxBo2D,EAAaf,EAAWI,UAAUW,WAClC+mD,EAAYj5N,KAAKihN,WAEnBnnC,EADem/C,EAAUlmD,YACPoxC,QAAQryJ,EAAGxd,EAAGC,EAAGunE,EAAYo2D,GAanD,OAZI4H,EAAK5K,YAAc,YAChB+pD,EAAUjd,4BAGJid,EAAUld,aAAe,IAElC/7M,KAAKwkP,WAAY,GAHjB1qE,EAAKuV,SAAS,aAMbrvL,KAAKykN,eAAe3qC,KACvBA,EAAOA,EAAKoV,kBAEPpV,GAOT,YAAAmiC,QAAA,SAAQp5I,GACN,IAAMsuG,EAAanxK,KAAKmxK,WACxB,IAAKA,EACH,OAAO,KAGT,IAAM3pJ,EAAQxnB,KAAKihN,WACbtvC,GAAa,QACjBR,EAAWM,2BACX5uG,EAAM1gE,SAGF2/M,EAAct6L,EAAMsnJ,YAC1B,GAAIgzC,KACG,QAAmBA,EAAanwC,GACnC,OAAO,KAWX,IAPA,IAAM71D,EAAaq1D,EAAWr1D,WACxBo2D,EAAaf,EAAWI,UAAUW,WAClCX,EAAYJ,EAAWI,UACvB51K,EAAS6rB,EAAMi3L,kBACf+H,EAAW7qN,EAAO2pN,yBAAyB/zC,EAAUW,YACrDq6C,EAAiB5wN,EAAO0+N,kBAAkBlpD,EAAWr1D,YAGrDhqD,EAAI00J,EAASU,kBAAkB31C,EAAU5C,YAC7C78G,GAAK00J,EAASluB,eACZxmI,EACF,CACA,IAAM8+G,EAAY41C,EAASwV,yBAAyBrqD,EAAY7/G,GAC1DgoH,EAAOn+K,EAAOwoN,QAClBryJ,EACA8+G,EAAU,GACVA,EAAU,GACV90D,EACAo2D,GAEF,KAAM4H,aAAgB,KAAaA,aAAgB,KACjD,OAAO,KAGT,GAAIA,EAAK5K,aAAe,WAAxB,CAIA,IAAMmsD,EAAa7U,EAAS8U,UAAUxpK,GAChCk1J,GAAW,QAAOR,EAASS,YAAYn1J,IACvC4uH,EAAiB8lC,EAASv3C,cAAcn9G,GAExCwyB,EAAMr3E,KAAKwjB,MACf87L,IACI56C,EAAW,GAAK0pD,EAAW,IAAM36C,EACjC9P,EAAU,GAAKo2C,EAAS,KAGxBjjI,EAAM92E,KAAKwjB,MACf87L,IACI8O,EAAW,GAAK1pD,EAAW,IAAM+O,EACjC9P,EAAU,GAAKo2C,EAAS,KAG9B,OAAOhnN,KAAKsuN,aAAax0C,EAAK/K,WAAYzqF,EAAKP,IAGjD,OAAO,MAST,YAAA8/J,mBAAA,SAAmBz8B,EAAO9wB,EAAMxc,GAC9B,QAAI95K,KAAKykN,eAAe3qC,IACf,YAAM+pE,mBAAkB,UAACz8B,EAAO9wB,EAAMxc,IAUjD,YAAA6kC,aAAA,SAAaxtC,GACX,QAASnxK,KAAKihN,WAAWluC,aAS3B,YAAAM,YAAA,SAAYlC,EAAYnjK,GACtB,IAAM2kK,EAAaxB,EAAWqB,iBAAiBrB,EAAWiD,YACpD7C,EAAYJ,EAAWI,UACvBW,EAAaX,EAAUW,WACvBwyE,EAAiBnzE,EAAU5C,WAC3Bg2E,EAAapzE,EAAUlxH,OACvBuD,EAAW2tH,EAAU3tH,SACrBk4D,EAAaq1D,EAAWr1D,WAExBm9G,EAAYj5N,KAAKihN,WACjBwG,EAAawR,EAAUlmD,YACvB6xE,EAAiBn9B,EAAWj5B,cAC5Bg4B,EAAWiB,EAAWnC,yBAAyBpzC,GAC/CpgH,EAAI00J,EAASU,kBAAkBw9B,EAAgBj9B,EAAWC,YAC1DhnC,EAAiB8lC,EAASv3C,cAAcn9G,GAE1C48G,EAASyC,EAAWzC,OAClBozC,EACJnvC,EAAWjE,SAAU,QAAeiE,EAAWjE,OAAQwD,GACrD4vC,IACFpzC,GAAS,QACPA,GACA,QAAeiE,EAAWjE,OAAQwD,KAItC,IAAMq6C,EAAiB9E,EAAW4S,kBAAkBv+G,GAGhDlgH,EAAQqR,KAAKgsD,MAAMk4G,EAAW18I,KAAK,GAAK83L,GACxC1wN,EAASoR,KAAKgsD,MAAMk4G,EAAW18I,KAAK,GAAK83L,GAE7C,GAAI3oK,EAAU,CACZ,IAAMnvB,EAAOxnB,KAAKgsD,MAAMhsD,KAAK+gD,KAAKpyD,EAAQA,EAAQC,EAASA,IAC3DD,EAAQ64B,EACR54B,EAAS44B,EAGX,IAAMiqD,EAAMgiG,EAAiB9kL,EAAS,EAAI2wN,EACpChoG,EAAMm8D,EAAiB7kL,EAAU,EAAI0wN,EACrCs4B,EAAe,CACnBF,EAAW,GAAKjmK,EAChBimK,EAAW,GAAKpgI,EAChBogI,EAAW,GAAKjmK,EAChBimK,EAAW,GAAKpgI,GAGZyrE,EAAYw2B,EAASiU,0BAA0B/rD,EAAQ58G,GAKvDgzL,EAAiB,GACvBA,EAAehzL,GAAK,GAEpB,IAAMizL,EAAkB/kP,KAAK8jP,uBAC3Br8B,EACAv1C,EACA4yE,GAGI3+B,EAAYnmN,KAAKmmN,UACjB6+B,EAAehlP,KAAKykP,cAC1BzkP,KAAKwkP,WAAY,EACjB,IAAK,IAAIlwM,EAAI07I,EAAUvqI,KAAMnR,GAAK07I,EAAU1qI,OAAQhR,EAClD,IAAK,IAAIC,EAAIy7I,EAAUrqI,KAAMpR,GAAKy7I,EAAUzqI,OAAQhR,EAAG,CACrD,IAAMulI,EAAO95K,KAAKmkN,QAAQryJ,EAAGxd,EAAGC,EAAG48H,GACnC,GAAInxK,KAAKykN,eAAe3qC,GAAO,CAC7B,IAAMp/E,GAAM,QAAO16F,MACnB,GAAI85K,EAAK5K,YAAc,WAAkB,CACvC41E,EAAehzL,GAAGgoH,EAAKlJ,UAAU9wK,YAAcg6K,EAC/C,IAAMyV,EAAezV,EAAKyV,aAAa70F,GAEpC16F,KAAKwkP,YACLj1D,IAAsD,IAAtCvvL,KAAK6kN,cAAcz7M,QAAQ0wK,KAE5C95K,KAAKwkP,WAAY,GAGrB,GAA4C,IAAxC1qE,EAAKwV,SAAS50F,EAAKy2E,EAAWpsJ,MAEhC,SAIJ,IAAMkgO,EAAiBz+B,EAAS0+B,2BAC9BprE,EAAKlJ,UACLo0E,EACA7+B,GAGEgW,GAAU,EACV8oB,IACF9oB,EAAU4oB,EAAgBjzL,EAAI,EAAGmzL,IAE9B9oB,GACH3V,EAAS2+B,gCACPrrE,EAAKlJ,UACLm0E,EACAC,EACA7+B,GAMR,IAAMi/B,EAAc1kE,EAAiBgkE,GAGrC,QACE1kP,KAAKuhN,eACLpwC,EAAW18I,KAAK,GAAK,EACrB08I,EAAW18I,KAAK,GAAK,EACrB,EAAI83L,EACJ,EAAIA,EACJ3oK,GACChoD,EAAQ,GACRC,EAAS,GAGZ,IAAM4lN,GAAkB,QAAkBzhN,KAAKuhN,gBAE/CvhN,KAAK0hN,aACH1zM,EACAyzM,EACA9uC,EAAWpoF,QACXvqF,KAAKy6M,cAActpC,IAErB,IAAMpxK,EAAUC,KAAKD,QACf0zD,EAAS1zD,EAAQ0zD,QAEvB,QAAYzzD,KAAKwhN,sBAAuBxhN,KAAKuhN,iBAG7C,QACEvhN,KAAKkkP,cACLtoP,EAAQ,EACRC,EAAS,EACTupP,EACAA,EACA,GACCxpP,EAAQ,GACRC,EAAS,GAGR43D,EAAO73D,OAASA,GAAS63D,EAAO53D,QAAUA,GAC5C43D,EAAO73D,MAAQA,EACf63D,EAAO53D,OAASA,GACNmE,KAAK4hN,iBACf7hN,EAAQ0xG,UAAU,EAAG,EAAG71G,EAAOC,GAG7BimN,GACF9hN,KAAK+hN,cAAchiN,EAASoxK,EAAY2wC,GAGrC2F,EAAW49B,mBACd,QAAOtlP,EAAS,KAGlBC,KAAK6hN,UAAU9hN,EAASoxK,GAExBnxK,KAAK6kN,cAAcrmN,OAAS,EAE5B,IAGImpN,EAAOC,EAAQI,EAHfmT,EAAKl/N,OAAOkQ,KAAK24O,GAAgB57O,IAAIgB,QACzCixN,EAAGh2L,KAAK,MAIiB,IAAvBwtI,EAAWpoF,SACTvqF,KAAK4hN,kBACL6F,EAAW69B,UAAUn0E,EAAWI,UAAUW,aAI5Cy1C,EAAQ,GACRC,EAAS,IAHTuT,EAAKA,EAAGv+L,UAKV,IAAK,IAAIt9B,EAAI67N,EAAG38N,OAAS,EAAGc,GAAK,IAAKA,EAAG,CACvC,IAAMwoN,GAAWqT,EAAG77N,GACdimP,GAAuB99B,EAAWa,iBACtCR,GACAhsG,EACAo2D,GAGIszE,GADoBh/B,EAASv3C,cAAc64C,IACRpnC,EACnC,GAAK6kE,GAAqB,GAAKC,GAAeJ,EAC9C,GAAKG,GAAqB,GAAKC,GAAeJ,EAC9CK,GAAkBj/B,EAASwV,0BAC/B,QAAW6oB,GACX/8B,IAEI49B,GAAmBl/B,EAASjB,mBAAmBkgC,IAC/C,IAAS,QAAezlP,KAAKkkP,cAAe,CAC/C33B,GAAkBm5B,GAAiB,GAAKb,EAAa,IACpDnkE,EACD6rC,GAAkBs4B,EAAa,GAAKa,GAAiB,IACpDhlE,IAEEilE,GACJp5B,EAAiB9E,EAAW6S,uBAAuBpoD,GAC/C0zE,GAAcd,EAAeh9B,IACnC,IAAK,IAAMkT,MAAgB4qB,GAAa,CACtC,IAGMh1E,IAHAkJ,EACJ8rE,GAAY5qB,KAESpqD,UAGjBi1E,GAASJ,GAAgB,GAAK70E,GAAU,GACxCk1E,GAAQ74O,KAAKgsD,MAAM,GAAO,IAAM4sL,GAAS,GAAK,IAC9CE,GAASN,GAAgB,GAAK70E,GAAU,GACxCo1E,GAAQ/4O,KAAKgsD,MAAM,GAAO,IAAM8sL,GAAS,GAAK,IAG9Cz1L,GAAIw1L,IAFJxxM,EAAIrnC,KAAKgsD,MAAM,GAAO,GAAK4sL,GAAS,KAGpCr1L,GAAIw1L,IAFJzxM,EAAItnC,KAAKgsD,MAAM,GAAO,GAAK8sL,GAAS,KAGpC3qM,GAAa0W,IAAMg2J,GAIrBC,IAAe,EACnB,KAHMx4B,EACJn0I,IAA+D,IAAjD0+H,EAAKwV,UAAS,QAAOtvL,MAAOmxK,EAAWpsJ,OAGrD,GAAI4iM,EAAO,CAETK,EAAc,CAAC1zK,EAAGC,EAAGD,EAAIgc,GAAG/b,EAAGD,EAAIgc,GAAG/b,EAAIic,GAAGlc,EAAGC,EAAIic,IACpD,IAAK,IAAI,GAAI,EAAG47G,GAAKu7C,EAAMnpN,OAAQ,GAAI4tK,KAAM,GAC3C,GAAIt6G,IAAMg2J,IAAYA,GAAWF,EAAO,IAAI,CAC1C,IAAMluK,GAAOiuK,EAAM,KAEjB,QACE,CAACrzK,EAAGC,EAAGD,EAAIgc,GAAG/b,EAAIic,IAClB,CAAC9W,GAAK,GAAIA,GAAK,GAAIA,GAAK,GAAIA,GAAK,OAG9BquK,KACHhoN,EAAQ6lE,OACRmiJ,IAAe,GAEjBhoN,EAAQumE,YAERvmE,EAAQwmE,OAAOyhJ,EAAY,GAAIA,EAAY,IAC3CjoN,EAAQymE,OAAOwhJ,EAAY,GAAIA,EAAY,IAC3CjoN,EAAQymE,OAAOwhJ,EAAY,GAAIA,EAAY,IAC3CjoN,EAAQymE,OAAOwhJ,EAAY,GAAIA,EAAY,IAE3CjoN,EAAQwmE,OAAO7sB,GAAK,GAAIA,GAAK,IAC7B35C,EAAQymE,OAAO9sB,GAAK,GAAIA,GAAK,IAC7B35C,EAAQymE,OAAO9sB,GAAK,GAAIA,GAAK,IAC7B35C,EAAQymE,OAAO9sB,GAAK,GAAIA,GAAK,IAC7B35C,EAAQ25C,QAIdiuK,EAAMvjN,KAAK4jN,GACXJ,EAAOxjN,KAAK0jN,SAEZ/nN,EAAQ0xG,UAAUn9D,EAAGC,EAAG+b,GAAGE,IAG/BxwD,KAAKimP,cACHnsE,EACA3I,EACA78H,EACAC,EACA+b,GACAE,GACAm1L,GACAvqM,IAEEusK,IAAUp4B,GACRw4B,IACFhoN,EAAQ+lE,UAEV9lE,KAAK6kN,cAAcnlI,QAAQo6F,IAE3B95K,KAAK6kN,cAAczgN,KAAK01K,GAE1B95K,KAAKkmP,gBAAgB/0E,EAAW0R,UAAW4kC,EAAY3tC,IAI3D95K,KAAKilN,iBAAmB2/B,EACxB5kP,KAAKglN,mBAAqBtkC,EAC1B1gL,KAAKskP,eACFtkP,KAAKmgN,mBAAoB,QAAOngN,KAAKmgN,gBAAiB0kC,GACzD7kP,KAAKmgN,gBAAkB0kC,EACvB7kP,KAAKukP,mBAAqBzoI,EAC1B97G,KAAK2mN,mBAAqBz0C,EAE1BlyK,KAAKmmP,kBACHh1E,EACAs2C,EACAjB,EACA1qG,EACAo2D,EACAxD,EACA58G,EACAmnK,EAAUld,cAEZ/7M,KAAKomP,oBAAoBj1E,EAAYs2C,GAErCznN,KAAKgiN,WAAWjiN,EAASoxK,GAErBwB,EAAWjE,QACb3uK,EAAQ+lE,WAEV,QAAO/lE,EAAS,KAEZ0hN,IAAoBhuJ,EAAO/L,MAAM43F,YACnC7rF,EAAO/L,MAAM43F,UAAYmiE,GAE3B,IAAMl3H,IAAU,QAAWooF,EAAWpoF,SAChCt0B,GAAYj2D,KAAKi2D,UAKvB,OAJIs0B,KAAYt0B,GAAUvO,MAAM6iC,UAC9Bt0B,GAAUvO,MAAM6iC,QAAUA,IAGrBvqF,KAAKi2D,WAad,YAAAgwL,cAAA,SAAcnsE,EAAM3I,EAAY78H,EAAGC,EAAG+b,EAAGE,EAAGqyJ,EAAQznK,GAClD,IAAMg0H,EAAQpvK,KAAK2kN,aAAa7qC,GAChC,GAAK1K,EAAL,CAGA,IAAM10E,GAAM,QAAO16F,MACb21E,EAAQv6B,EAAa0+H,EAAKwV,SAAS50F,EAAKy2E,EAAWpsJ,MAAQ,EAC3DshO,EAAe1wK,IAAU31E,KAAKD,QAAQ6uF,YACxCy3J,IACFrmP,KAAKD,QAAQ6lE,OACb5lE,KAAKD,QAAQ6uF,YAAcjZ,GAE7B31E,KAAKD,QAAQ8xG,UACXu9D,EACAyzC,EACAA,EACAzzC,EAAMxzK,MAAQ,EAAIinN,EAClBzzC,EAAMvzK,OAAS,EAAIgnN,EACnBvuK,EACAC,EACA+b,EACAE,GAGE61L,GACFrmP,KAAKD,QAAQ+lE,UAED,IAAV6P,EACFw7F,EAAWh8E,SAAU,EACZ/5C,GACT0+H,EAAK0V,cAAc90F,KAOvB,YAAAq0E,SAAA,WACE,IAAMhvK,EAAUC,KAAKD,QACrB,OAAOA,EAAUA,EAAQ0zD,OAAS,MASpC,YAAAkxJ,aAAA,SAAa7qC,GACX,OAAOA,EAAK/K,YAQd,YAAAq3E,oBAAA,SAAoBj1E,EAAYs2C,GAC9B,GAAIA,EAAW/3B,iBAAkB,CAM/B,IAAM42D,EAAqB,SAAU7+B,EAAYv+M,EAAKioK,GACpD,IAAMqP,GAAgB,QAAOinC,GACzBjnC,KAAiBrP,EAAW0R,WAC9B4kC,EAAWh4B,YACTte,EAAWI,UAAUW,WACrBf,EAAW0R,UAAUrC,KAGzBvpK,KAAK,KAAMwwM,GAEbt2C,EAAWoC,oBAAoBnvK,KACqC,KAaxE,YAAA8hP,gBAAA,SAAgBrjE,EAAW4kC,EAAY3tC,GAErC,IAAM0G,GAAgB,QAAOinC,GACvBjnC,KAAiBqC,IACrBA,EAAUrC,GAAiB,IAE7BqC,EAAUrC,GAAe1G,EAAKP,WAAY,GAqB5C,YAAA4sE,kBAAA,SACEh1E,EACAs2C,EACAjB,EACA1qG,EACAo2D,EACAxD,EACAo5C,EACAnM,EACA4qC,GAEA,IAAM/lE,GAAgB,QAAOinC,GACvBjnC,KAAiBrP,EAAWwP,cAChCxP,EAAWwP,YAAYH,GAAiB,IAE1C,IAII1G,EAAMkW,EAAWtP,EAAgBpsI,EAAGC,EAAGud,EAJrC6uH,EAAcxP,EAAWwP,YAAYH,GACrCY,EAAYjQ,EAAWiQ,UAEzBolE,EAAY,EAEhB,IAAK10L,EAHW00J,EAASluB,aAGPxmI,GAAKg2J,IAAYh2J,EAGjC,IAFAk+H,EAAYw2B,EAASiU,0BAA0B/rD,EAAQ58G,EAAGk+H,GAC1DtP,EAAiB8lC,EAASv3C,cAAcn9G,GACnCxd,EAAI07I,EAAUvqI,KAAMnR,GAAK07I,EAAU1qI,OAAQhR,EAC9C,IAAKC,EAAIy7I,EAAUrqI,KAAMpR,GAAKy7I,EAAUzqI,OAAQhR,EAC1CuzK,EAAWh2J,GAAK6pJ,KAChB6qC,GACF1sE,EAAO2tC,EAAWtD,QAAQryJ,EAAGxd,EAAGC,EAAGunE,EAAYo2D,IACtChD,YAAc,WACrByR,EAAY7G,EAAKP,WAAY,EACxB6H,EAAUtI,YAAYgB,EAAKP,WAC9B6H,EAAU/I,QAAQ,CAChByB,EACA0G,EACAgmC,EAASW,mBAAmBrtC,EAAKlJ,WACjC8P,UAImBziL,IAArBsoP,GACFA,EAAiBzsE,IAGnB2tC,EAAWg/B,QAAQ30L,EAAGxd,EAAGC,EAAG29H,GAKpCu1C,EAAWi/B,gBAAgBF,EAAWt0E,IAE1C,EAhsBA,CAAsC,2DC7B/B,IAAMy0E,EAA2B,CACtCtE,uBAAuB,EACvBuE,yBAAyB,GAOdC,EAA0B,CACrCxE,uBAAuB,EACvBuE,yBAAyB,yHCWrBE,EAAqB,CACzB,MAkUF,SACEtjC,EACA78F,EACAj/D,EACAuqH,EACAwxC,GAEA,IAGIw0B,EAHE/O,EAAaxhL,EAAMqnH,WACnBs6D,EAAY3hL,EAAM82L,UAQxB,GALI/6B,IACFD,EAAeC,EACfw0B,EACE/O,GAAcG,GAAaA,EAAUmV,UAAY,QAAKvgP,GAEtDirO,EAAY,CACd,GAAIA,EAAW6d,iBAAmB,WAChC,OAEF,IAAMC,EAAcxjC,EAAawuB,WAC/BtqL,EAAMmzJ,YACN,WAEFmsC,EAAY/d,cAAcC,EAAY+O,GACtC+O,EAAYt1I,UAAUiV,EAAUsrD,GAElC,GAAIo3D,GAAaA,EAAUmV,UAAW,CACpC,IAAMyI,EAAazjC,EAAawuB,WAC9BtqL,EAAMmzJ,YACN,UAEFosC,EAAW7d,aAAaC,EAAW4O,GACnCgP,EAAWhgI,SAASN,EAAUsrD,KAlWhC,WA0NF,SACEuxC,EACA78F,EACAj/D,EACAuqH,EACAwxC,GAEA,IAAM57J,EAAcH,EAAMi2L,YAC1B,GAAI91L,EAAa,CACf,IAAMq/L,EAAmB1jC,EAAawuB,WACpCtqL,EAAMmzJ,YACN,iBAEFqsC,EAAiBle,mBAAmB,KAAMnhL,GAC1Cq/L,EAAiB7e,eAAe1hH,EAAUsrD,GAE5C,IAAMo3D,EAAY3hL,EAAM82L,UACxB,GAAInV,GAAaA,EAAUmV,UAAW,CACpC,IAAMyI,GAAcxjC,GAA6BD,GAAcwuB,WAC7DtqL,EAAMmzJ,YACN,UAEFosC,EAAW7d,aAAaC,GACxB4d,EAAWhgI,SAASN,EAAUsrD,KAhPhC,QAwZF,SACEuxC,EACA78F,EACAj/D,EACAuqH,EACAwxC,GAEA,IAAM97J,EAAYD,EAAM+1L,UAClB51L,EAAcH,EAAMi2L,YAC1B,GAAIh2L,GAAaE,EAAa,CAC5B,IAAMs/L,EAAgB3jC,EAAawuB,WACjCtqL,EAAMmzJ,YACN,aAEFssC,EAAcne,mBAAmBrhL,EAAWE,GAC5Cs/L,EAAcre,YAAYniH,EAAUsrD,GAEtC,IAAMo3D,EAAY3hL,EAAM82L,UACxB,GAAInV,GAAaA,EAAUmV,UAAW,CACpC,IAAMyI,GAAcxjC,GAA6BD,GAAcwuB,WAC7DtqL,EAAMmzJ,YACN,UAEFosC,EAAW7d,aAAaC,GACxB4d,EAAWhgI,SAASN,EAAUsrD,KA/ahC,WA2WF,SACEuxC,EACA78F,EACAj/D,EACAuqH,EACAwxC,GAEA,IAGIw0B,EAHE/O,EAAaxhL,EAAMqnH,WACnBs6D,EAAY3hL,EAAM82L,UAQxB,GALI/6B,IACFD,EAAeC,EACfw0B,EACE/O,GAAcG,GAAaA,EAAUmV,UAAY,QAAKvgP,GAEtDirO,EAAY,CACd,GAAIA,EAAW6d,iBAAmB,WAChC,OAEF,IAAMC,EAAcxjC,EAAawuB,WAC/BtqL,EAAMmzJ,YACN,WAEFmsC,EAAY/d,cAAcC,EAAY+O,GACtC+O,EAAYve,eAAe9hH,EAAUsrD,GAEvC,GAAIo3D,GAAaA,EAAUmV,UAAW,CACpC,IAAMyI,GAAcxjC,GAA6BD,GAAcwuB,WAC7DtqL,EAAMmzJ,YACN,UAEFosC,EAAW7d,aAAaC,EAAW4O,GACnCgP,EAAWhgI,SAASN,EAAUsrD,KA3YhC,gBAyPF,SACEuxC,EACA78F,EACAj/D,EACAuqH,EACAwxC,GAEA,IAAM57J,EAAcH,EAAMi2L,YAC1B,GAAI91L,EAAa,CACf,IAAMq/L,EAAmB1jC,EAAawuB,WACpCtqL,EAAMmzJ,YACN,iBAEFqsC,EAAiBle,mBAAmB,KAAMnhL,GAC1Cq/L,EAAiB3e,oBAAoB5hH,EAAUsrD,GAEjD,IAAMo3D,EAAY3hL,EAAM82L,UACxB,GAAInV,GAAaA,EAAUmV,UAAW,CACpC,IAAMyI,GAAcxjC,GAA6BD,GAAcwuB,WAC7DtqL,EAAMmzJ,YACN,UAEFosC,EAAW7d,aAAaC,GACxB4d,EAAWhgI,SAASN,EAAUsrD,KA/QhC,aA0RF,SACEuxC,EACA78F,EACAj/D,EACAuqH,EACAwxC,GAEA,IAAM97J,EAAYD,EAAM+1L,UAClB51L,EAAcH,EAAMi2L,YAC1B,GAAI91L,GAAeF,EAAW,CAC5B,IAAMw/L,EAAgB3jC,EAAawuB,WACjCtqL,EAAMmzJ,YACN,aAEFssC,EAAcne,mBAAmBrhL,EAAWE,GAC5Cs/L,EAAcxe,iBAAiBhiH,EAAUsrD,GAE3C,IAAMo3D,EAAY3hL,EAAM82L,UACxB,GAAInV,GAAaA,EAAUmV,UAAW,CACpC,IAAMyI,GAAcxjC,GAA6BD,GAAcwuB,WAC7DtqL,EAAMmzJ,YACN,UAEFosC,EAAW7d,aAAaC,GACxB4d,EAAWhgI,SAASN,EAAUsrD,KAjThC,mBAyLF,SACE0vC,EACAh7F,EACAj/D,EACAuqH,EACAwxC,GAEA,IACInkN,EAAG8sK,EADDq0E,EAAa95H,EAAS+5H,qBAE5B,IAAKphP,EAAI,EAAG8sK,EAAKq0E,EAAWjiP,OAAQc,EAAI8sK,IAAM9sK,GAE5C8nP,EADyBN,EAAmBrG,EAAWnhP,GAAG65L,YAExDwoB,EACA8+B,EAAWnhP,GACXooD,EACAuqH,EACAwxC,IAxMJ,OAsCF,SACED,EACA78F,EACAj/D,EACAuqH,EACAwxC,GAEA,IAAM97J,EAAYD,EAAM+1L,UAClB51L,EAAcH,EAAMi2L,YAC1B,GAAIh2L,GAAaE,EAAa,CAC5B,IAAMw/L,EAAe7jC,EAAawuB,WAChCtqL,EAAMmzJ,YACN,YAEFwsC,EAAare,mBAAmBrhL,EAAWE,GAC3Cw/L,EAAarf,WAAWrhH,EAAUsrD,GAEpC,IAAMo3D,EAAY3hL,EAAM82L,UACxB,GAAInV,GAAaA,EAAUmV,UAAW,CACpC,IAAMyI,GAAcxjC,GAA6BD,GAAcwuB,WAC7DtqL,EAAMmzJ,YACN,UAEFosC,EAAW7d,aAAaC,GACxB4d,EAAWhgI,SAASN,EAAUsrD,MAtD3B,SAASq1E,EAAaC,EAAUC,GACrC,OAAO5kP,UAAS,QAAO2kP,GAAW,IAAM3kP,UAAS,QAAO4kP,GAAW,IAQ9D,SAASC,EAAoB94E,EAAY7yD,GAC9C,IAAMw4F,EAAYozC,EAAa/4E,EAAY7yD,GAC3C,OAAOw4F,EAAYA,EAQd,SAASozC,EAAa/4E,EAAY7yD,GACvC,MA5CyB,GA4CI6yD,EAAc7yD,EAgDtC,SAASonG,EACdvB,EACA1vC,EACAvqH,EACAyjJ,EACA7sK,EACA4wK,EACAuU,GAEA,IAAI9mD,GAAU,EACRusE,EAAaxhL,EAAMqnH,WACzB,GAAIm6D,EAAY,CACd,IAAI+a,EAAa/a,EAAW6d,gBACxB9C,GAAc,YAAqBA,GAAc,UACnD/a,EAAWye,oBAAoBrpN,IAE3B2lN,GAAc,UAChB/a,EAAWnhG,OAEbk8G,EAAa/a,EAAW6d,gBACxB7d,EAAW0e,kBAAkBtpN,GAC7Bq+H,GAAU,GAYd,OAWF,SACEglD,EACA1vC,EACAvqH,EACAyjJ,EACA+D,EACAuU,GAEA,IAAM98F,EAAWj/D,EAAM84L,qBAAN94L,CAA4BuqH,GAC7C,GAAKtrD,EAAL,CAGA,IAAMquF,EAAqBruF,EAASsoF,oBAClC9D,EACA+D,GAEexnJ,EAAMorH,cAErB+0E,EAAelmC,EAAa3M,EAAoBttJ,EAAOuqH,IAGvDm1E,EADyBN,EAAmB9xC,EAAmB7b,YAE7DwoB,EACA3M,EACAttJ,EACAuqH,EACAwxC,IA9CJqkC,CACEnmC,EACA1vC,EACAvqH,EACAyjJ,EACA+D,EACAuU,GAGK9mD,EAgDT,SAASkrF,EAAelmC,EAAah7F,EAAUj/D,EAAOuqH,GACpD,GAAItrD,EAASwyE,WAAa,wBAUXwoB,EAAYqwB,WAAWtqL,EAAMmzJ,YAAa,aAClDgtB,WACsD,EAC3D51D,EACAvqH,EAAMorH,cACNprH,EAAMqgM,gCAVN,IAJA,IAAMtH,EAC2D,EAE7DuH,gBACK1oP,EAAI,EAAG8sK,EAAKq0E,EAAWjiP,OAAQc,EAAI8sK,IAAM9sK,EAChDuoP,EAAelmC,EAAa8+B,EAAWnhP,GAAIooD,EAAOuqH,yECvLpDg2E,8DAYJ,SAASC,EAAiB1xN,EAAK2xN,EAAInpM,EAAI84G,EAAI74G,GACzCzoB,EAAI8vC,YACJ9vC,EAAI+vC,OAAO,EAAG,GACd/vC,EAAIgwC,OAAO2hL,EAAInpM,GACfxoB,EAAIgwC,OAAOsxF,EAAI74G,GACfzoB,EAAI6+C,YACJ7+C,EAAIovC,OACJpvC,EAAIkjB,OACJljB,EAAIqvC,SAAS,EAAG,EAAG54D,KAAK6mB,IAAIq0N,EAAIrwF,GAAM,EAAG7qJ,KAAK6mB,IAAIkrB,EAAIC,IACtDzoB,EAAIsvC,UAWN,SAASsiL,EAA8B38O,EAAM62C,GAE3C,OACEr1C,KAAKknB,IAAI1oB,EAAc,EAAT62C,GAAc,KAAO,GACnCr1C,KAAKknB,IAAI1oB,EAAc,EAAT62C,EAAa,GAAK,QAAc,EA2C3C,SAAS+lM,EACd9zC,EACA+zC,EACAj2D,EACAE,GAEA,IAAMH,GAAe,QAAUC,EAAci2D,EAAY/zC,GAGrDjiB,GAAmB,QACrBg2D,EACA/1D,EACAF,GAGIk2D,EAAsBD,EAAW5zD,wBACXz2L,IAAxBsqP,IACFj2D,GAAoBi2D,GAEtB,IAAMC,EAAsBj0C,EAAW7f,wBACXz2L,IAAxBuqP,IACFl2D,GAAoBk2D,GAOtB,IAAMC,EAAel0C,EAAWzlC,YAChC,IAAK25E,IAAgB,QAAmBA,EAAcr2D,GAAe,CACnE,IAAMs2D,GACJ,QAAmBn0C,EAAYjiB,EAAkBF,GACjDE,EACE77J,SAASiyN,IAAuBA,EAAqB,IACvDp2D,GAAoBo2D,GAIxB,OAAOp2D,EAeF,SAASq2D,EACdp0C,EACA+zC,EACAM,EACAr2D,GAEA,IAAMF,GAAe,QAAUu2D,GAC3Bt2D,EAAmB+1D,EACrB9zC,EACA+zC,EACAj2D,EACAE,GAeF,QAZK97J,SAAS67J,IAAqBA,GAAoB,KACrD,QAAcs2D,GAAc,SAAUziD,GAOpC,OANA7T,EAAmB+1D,EACjB9zC,EACA+zC,EACAniD,EACA5T,GAEK97J,SAAS67J,IAAqBA,EAAmB,KAIrDA,EA0BF,SAAShiH,EACd10E,EACAC,EACAigH,EACAw2E,EACAm2D,EACAl2D,EACAq2D,EACAC,EACAn0N,EACAmuL,EACAimC,EACA78C,GAEA,IAAMlsM,GAAU,QACdkN,KAAKgsD,MAAM6iD,EAAalgH,GACxBqR,KAAKgsD,MAAM6iD,EAAajgH,IAO1B,GAJKowM,IACH,QAAOlsM,EAAS,KAGK,IAAnB20B,EAAQl2B,OACV,OAAOuB,EAAQ0zD,OAKjB,SAASs1L,EAAW5sP,GAClB,OAAO8Q,KAAKgsD,MAAM98D,EAAQ2/G,GAAcA,EAH1C/7G,EAAQgwC,MAAM+rE,EAAYA,GAM1B/7G,EAAQipP,yBAA2B,UAEnC,IAAMC,GAAmB,UACzBv0N,EAAQlyB,SAAQ,SAAU+b,EAAKjf,EAAGgjC,IAChC,QAAO2mN,EAAkB1qO,EAAImwJ,WAG/B,IAAMw6E,GAAqB,QAASD,GAC9BE,GAAsB,QAAUF,GAChCG,GAAgB,QACpBn8O,KAAKgsD,MAAO6iD,EAAaotI,EAAsB52D,GAC/CrlL,KAAKgsD,MAAO6iD,EAAaqtI,EAAuB72D,IAG7C2Z,IACH,QAAOm9C,EAAe,KAGxB,IAAMC,EAAcvtI,EAAaw2E,EAEjC59J,EAAQlyB,SAAQ,SAAU+b,EAAKjf,EAAGgjC,GAChC,IAAMgnN,EAAO/qO,EAAImwJ,OAAO,GAAKu6E,EAAiB,GACxCM,IAAShrO,EAAImwJ,OAAO,GAAKu6E,EAAiB,IAC1CO,GAAW,QAASjrO,EAAImwJ,QACxB+6E,GAAY,QAAUlrO,EAAImwJ,QAG5BnwJ,EAAI6wJ,MAAMxzK,MAAQ,GAAK2iB,EAAI6wJ,MAAMvzK,OAAS,GAC5CutP,EAAcv3I,UACZtzF,EAAI6wJ,MACJyzC,EACAA,EACAtkM,EAAI6wJ,MAAMxzK,MAAQ,EAAIinN,EACtBtkM,EAAI6wJ,MAAMvzK,OAAS,EAAIgnN,EACvBymC,EAAOD,EACPE,EAAOF,EACPG,EAAWH,EACXI,EAAYJ,MAKlB,IAAMK,GAAgB,QAAWd,GAuJjC,OArJAC,EAAcc,eAAennP,SAAQ,SAAUonP,EAAUtqP,EAAGgjC,GAqB1D,IAAM3mC,EAASiuP,EAASjuP,OAClBqS,EAAS47O,EAAS57O,OACpBq2G,EAAK1oH,EAAO,GAAG,GACjB2oH,EAAK3oH,EAAO,GAAG,GACbsoE,EAAKtoE,EAAO,GAAG,GACjBuoE,EAAKvoE,EAAO,GAAG,GACbwoE,EAAKxoE,EAAO,GAAG,GACjByoE,EAAKzoE,EAAO,GAAG,GAEXkuP,EAAKd,GAAY/6O,EAAO,GAAG,GAAK07O,EAAc,IAAMn3D,GACpD/iI,EAAKu5L,IACP/6O,EAAO,GAAG,GAAK07O,EAAc,IAAMn3D,GAEjC41D,EAAKY,GAAY/6O,EAAO,GAAG,GAAK07O,EAAc,IAAMn3D,GACpDvzI,EAAK+pM,IACP/6O,EAAO,GAAG,GAAK07O,EAAc,IAAMn3D,GAEjCz6B,EAAKixF,GAAY/6O,EAAO,GAAG,GAAK07O,EAAc,IAAMn3D,GACpDtzI,EAAK8pM,IACP/6O,EAAO,GAAG,GAAK07O,EAAc,IAAMn3D,GAMjCu3D,EAAwBzlI,EACxB0lI,EAAwBzlI,EAC9BD,EAAK,EACLC,EAAK,EAML,IAAM0lI,EAAkB,CACtB,CANF/lL,GAAM6lL,EACN5lL,GAAM6lL,EAKK,EAAG,EAAG5B,EAAK0B,GACpB,CALF1lL,GAAM2lL,EACN1lL,GAAM2lL,EAIK,EAAG,EAAGjyF,EAAK+xF,GACpB,CAAC,EAAG,EAAG5lL,EAAIC,EAAIllB,EAAKwQ,GACpB,CAAC,EAAG,EAAG2U,EAAIC,EAAInlB,EAAKuQ,IAEhBy6L,GAAc,QAAkBD,GACtC,GAAKC,EAAL,CAOA,GAHAlqP,EAAQ6lE,OACR7lE,EAAQumE,YAtRZ,WACE,QAAiCroE,IAA7BgqP,EAAwC,CAC1C,IAAMzxN,EAAMvxB,SAASkS,cAAc,UAAU0/B,WAAW,MACxDrgB,EAAIwyN,yBAA2B,UAC/BxyN,EAAImxB,UAAY,wBAChBugM,EAAiB1xN,EAAK,EAAG,EAAG,EAAG,GAC/B0xN,EAAiB1xN,EAAK,EAAG,EAAG,EAAG,GAC/B,IAAM/qB,EAAO+qB,EAAI83L,aAAa,EAAG,EAAG,EAAG,GAAG7iN,KAC1Cw8O,EACEG,EAA8B38O,EAAM,IACpC28O,EAA8B38O,EAAM,IACpC28O,EAA8B38O,EAAM,GAGxC,OAAOw8O,EA0QDiC,KAAgCj+C,EAAiB,CAEnDlsM,EAAQwmE,OAAO4hL,EAAInpM,GAKnB,IAHA,IACMmrM,EAAKN,EAAK1B,EACViC,EAAK56L,EAAKxQ,EACPslB,EAAO,EAAGA,EAHL,EAGmBA,IAE/BvkE,EAAQymE,OACN2hL,EAAKY,GAAazkL,EAAO,GAAK6lL,EANpB,GAOVnrM,EAAK+pM,EAAYzkL,EAAO8lL,EAAM,IAGpB70J,GAARjxB,GACFvkE,EAAQymE,OACN2hL,EAAKY,GAAazkL,EAAO,GAAK6lL,EAZtB,GAaRnrM,EAAK+pM,GAAazkL,EAAO,GAAK8lL,EAAM,IAK1CrqP,EAAQymE,OAAOsxF,EAAI74G,QAEnBl/C,EAAQwmE,OAAO4hL,EAAInpM,GACnBj/C,EAAQymE,OAAOqjL,EAAIr6L,GACnBzvD,EAAQymE,OAAOsxF,EAAI74G,GAGrBl/C,EAAQ25C,OAER35C,EAAQu/I,UACN2qG,EAAY,GACZA,EAAY,GACZA,EAAY,GACZA,EAAY,GACZJ,EACAr6L,GAGFzvD,EAAQk4E,UACNgxK,EAAiB,GAAKa,EACtBb,EAAiB,GAAKc,GAGxBhqP,EAAQgwC,MACNuiJ,EAAmBx2E,GAClBw2E,EAAmBx2E,GAGtB/7G,EAAQ8xG,UAAUu3I,EAAc31L,OAAQ,EAAG,GAC3C1zD,EAAQ+lE,cAGNgjL,IACF/oP,EAAQ6lE,OAER7lE,EAAQipP,yBAA2B,cACnCjpP,EAAQ8nD,YAAc,QACtB9nD,EAAQgoD,UAAY,EAEpB8gM,EAAcc,eAAennP,SAAQ,SAAUonP,EAAUtqP,EAAGgjC,GAC1D,IAAMt0B,EAAS47O,EAAS57O,OAClB67O,GAAM77O,EAAO,GAAG,GAAK07O,EAAc,IAAMn3D,EACzC/iI,IAAOxhD,EAAO,GAAG,GAAK07O,EAAc,IAAMn3D,EAC1C41D,GAAMn6O,EAAO,GAAG,GAAK07O,EAAc,IAAMn3D,EACzCvzI,IAAOhxC,EAAO,GAAG,GAAK07O,EAAc,IAAMn3D,EAC1Cz6B,GAAM9pJ,EAAO,GAAG,GAAK07O,EAAc,IAAMn3D,EACzCtzI,IAAOjxC,EAAO,GAAG,GAAK07O,EAAc,IAAMn3D,EAEhDxyL,EAAQumE,YACRvmE,EAAQwmE,OAAO4hL,EAAInpM,GACnBj/C,EAAQymE,OAAOqjL,EAAIr6L,GACnBzvD,EAAQymE,OAAOsxF,EAAI74G,GACnBl/C,EAAQs1E,YACRt1E,EAAQ0mE,YAGV1mE,EAAQ+lE,WAEH/lE,EAAQ0zD,gIC6EjB,QAzcA,WASE,WACE8gJ,EACA+zC,EACAM,EACAyB,EACAC,EACAC,GAMAvqP,KAAKwqP,YAAcj2C,EAMnBv0M,KAAKyqP,YAAcnC,EAGnB,IAAIoC,EAAoB,GAClBC,GAAe,QAAa3qP,KAAKyqP,YAAazqP,KAAKwqP,aAOzDxqP,KAAK4qP,cAAgB,SAAUjoN,GAC7B,IAAM9+B,EAAM8+B,EAAE,GAAK,IAAMA,EAAE,GAI3B,OAHK+nN,EAAkB7mP,KACrB6mP,EAAkB7mP,GAAO8mP,EAAahoN,IAEjC+nN,EAAkB7mP,IAO3B7D,KAAK6qP,iBAAmBR,EAMxBrqP,KAAK8qP,uBAAyBR,EAAiBA,EAM/CtqP,KAAK+qP,WAAa,GAOlB/qP,KAAKgrP,iBAAkB,EAMvBhrP,KAAKirP,kBACHjrP,KAAKwqP,YAAYp4E,cACfi4E,KACArqP,KAAKwqP,YAAY17E,cACnB,QAASu7E,KAAoB,QAASrqP,KAAKwqP,YAAY17E,aAMzD9uK,KAAKkrP,kBAAoBlrP,KAAKwqP,YAAY17E,aACtC,QAAS9uK,KAAKwqP,YAAY17E,aAC1B,KAMJ9uK,KAAKmrP,kBAAoBnrP,KAAKyqP,YAAY37E,aACtC,QAAS9uK,KAAKyqP,YAAY37E,aAC1B,KAEJ,IAAMs8E,GAAqB,QAAWxC,GAChCyC,GAAsB,QAAYzC,GAClC0C,GAAyB,QAAe1C,GACxC2C,GAAwB,QAAc3C,GACtC4C,EAAgBxrP,KAAK4qP,cAAcQ,GACnCK,EAAiBzrP,KAAK4qP,cAAcS,GACpCK,EAAoB1rP,KAAK4qP,cAAcU,GACvCK,EAAmB3rP,KAAK4qP,cAAcW,GAYtCK,EArIc,IAuIjBrB,EACGt9O,KAAK6mB,IACH,EACA7mB,KAAK+rD,MACH,SACE,QAAQ4vL,IACL2B,EACCA,EACA,IACA,QAIV,GAcN,GAZAvqP,KAAK6rP,SACHT,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGE5rP,KAAKgrP,gBAAiB,CACxB,IAAI,EAAYx5N,EAAAA,EAChBxxB,KAAK+qP,WAAWvoP,SAAQ,SAAUonP,EAAUtqP,EAAGgjC,GAC7C,EAAYr1B,KAAK6d,IACf,EACA8+N,EAASjuP,OAAO,GAAG,GACnBiuP,EAASjuP,OAAO,GAAG,GACnBiuP,EAASjuP,OAAO,GAAG,OAMvBqE,KAAK+qP,WAAWvoP,QACd,SAAUonP,GACR,GACE38O,KAAK6mB,IACH81N,EAASjuP,OAAO,GAAG,GACnBiuP,EAASjuP,OAAO,GAAG,GACnBiuP,EAASjuP,OAAO,GAAG,IAEnB,EACFqE,KAAKkrP,kBAAoB,EACzB,CACA,IAAMY,EAAc,CAClB,CAAClC,EAASjuP,OAAO,GAAG,GAAIiuP,EAASjuP,OAAO,GAAG,IAC3C,CAACiuP,EAASjuP,OAAO,GAAG,GAAIiuP,EAASjuP,OAAO,GAAG,IAC3C,CAACiuP,EAASjuP,OAAO,GAAG,GAAIiuP,EAASjuP,OAAO,GAAG,KAEzCmwP,EAAY,GAAG,GAAK,EAAY9rP,KAAKkrP,kBAAoB,IAC3DY,EAAY,GAAG,IAAM9rP,KAAKkrP,mBAExBY,EAAY,GAAG,GAAK,EAAY9rP,KAAKkrP,kBAAoB,IAC3DY,EAAY,GAAG,IAAM9rP,KAAKkrP,mBAExBY,EAAY,GAAG,GAAK,EAAY9rP,KAAKkrP,kBAAoB,IAC3DY,EAAY,GAAG,IAAM9rP,KAAKkrP,mBAM5B,IAAMzlM,EAAOx4C,KAAK6d,IAChBghO,EAAY,GAAG,GACfA,EAAY,GAAG,GACfA,EAAY,GAAG,IAEJ7+O,KAAK6mB,IAChBg4N,EAAY,GAAG,GACfA,EAAY,GAAG,GACfA,EAAY,GAAG,IAENrmM,EAAOzlD,KAAKkrP,kBAAoB,IACzCtB,EAASjuP,OAASmwP,KAGtB70O,KAAKjX,OAIX0qP,EAAoB,GA0PxB,OA7OE,YAAAqB,aAAA,SAAanmN,EAAGp6B,EAAGm3B,EAAGqpN,EAAMC,EAAMC,GAChClsP,KAAK+qP,WAAW3mP,KAAK,CACnBzI,OAAQ,CAACqwP,EAAMC,EAAMC,GACrBl+O,OAAQ,CAAC43B,EAAGp6B,EAAGm3B,MAoBnB,YAAAkpN,SAAA,SAASjmN,EAAGp6B,EAAGm3B,EAAGmL,EAAGk+M,EAAMC,EAAMC,EAAMC,EAAMP,GAC3C,IAAMQ,GAAmB,QAAe,CAACJ,EAAMC,EAAMC,EAAMC,IACrDE,EAAkBrsP,KAAKkrP,mBACzB,QAASkB,GAAoBpsP,KAAKkrP,kBAClC,KACEoB,EAA0CtsP,KAAsB,kBAIhEusP,EACJvsP,KAAKwqP,YAAYp4E,YACjBi6E,EAAkB,IAClBA,EAAkB,EAEhBG,GAAmB,EAEvB,GAAIZ,EAAiB,EAAG,CACtB,GAAI5rP,KAAKyqP,YAAYr2D,YAAcp0L,KAAKmrP,kBAAmB,CACzD,IAAMsB,GAAmB,QAAe,CAAC7mN,EAAGp6B,EAAGm3B,EAAGmL,IAGlD0+M,GADE,QAASC,GAAoBzsP,KAAKmrP,kBA5QjB,KA8QuBqB,GAEvCD,GAAUvsP,KAAKwqP,YAAYp2D,YAAci4D,IAC5CG,EACEH,EAlRiB,KAkRuBG,GAI9C,MAAKA,GAAoBxsP,KAAK6qP,kBAE1Bp0N,SAAS21N,EAAiB,KAC1B31N,SAAS21N,EAAiB,KAC1B31N,SAAS21N,EAAiB,KAC1B31N,SAAS21N,EAAiB,OAErB,QAAWA,EAAkBpsP,KAAK6qP,kBAP3C,CAcA,IAAI6B,EAAc,EAElB,KAAKF,GAEA/1N,SAASu1N,EAAK,KACdv1N,SAASu1N,EAAK,KACdv1N,SAASw1N,EAAK,KACdx1N,SAASw1N,EAAK,KACdx1N,SAASy1N,EAAK,KACdz1N,SAASy1N,EAAK,KACdz1N,SAAS01N,EAAK,KACd11N,SAAS01N,EAAK,KAEf,GAAIP,EAAiB,EACnBY,GAAmB,OASnB,GACiB,IANjBE,GACIj2N,SAASu1N,EAAK,KAAQv1N,SAASu1N,EAAK,IAAU,EAAJ,IAC1Cv1N,SAASw1N,EAAK,KAAQx1N,SAASw1N,EAAK,IAAU,EAAJ,IAC1Cx1N,SAASy1N,EAAK,KAAQz1N,SAASy1N,EAAK,IAAU,EAAJ,IAC1Cz1N,SAAS01N,EAAK,KAAQ11N,SAAS01N,EAAK,IAAU,EAAJ,KAG7B,GAAfO,GACe,GAAfA,GACe,GAAfA,EAEA,OAMR,GAAId,EAAiB,EAAG,CACtB,IAAKY,EAAkB,CACrB,IAAMnsM,EAAS,EAAEza,EAAE,GAAKjD,EAAE,IAAM,GAAIiD,EAAE,GAAKjD,EAAE,IAAM,GAC7CgqN,EAAY3sP,KAAK4qP,cAAcvqM,GAEjCq+B,OAAE,EAMJA,EALE6tK,IAEC,QAAOP,EAAK,GAAIM,IACf,QAAOJ,EAAK,GAAII,IAClB,GACqB,QAAOK,EAAU,GAAIL,IAEtCN,EAAK,GAAKE,EAAK,IAAM,EAAIS,EAAU,GAE3C,IAAMpoI,GAAMynI,EAAK,GAAKE,EAAK,IAAM,EAAIS,EAAU,GAE/CH,EAD8B9tK,EAAKA,EAAK6lC,EAAKA,EACFvkH,KAAK8qP,uBAElD,GAAI0B,EAAkB,CACpB,GAAIv/O,KAAKknB,IAAIyR,EAAE,GAAKjD,EAAE,KAAO11B,KAAKknB,IAAIyR,EAAE,GAAKjD,EAAE,IAAK,CAElD,IAAMiqN,EAAK,EAAEphP,EAAE,GAAKm3B,EAAE,IAAM,GAAIn3B,EAAE,GAAKm3B,EAAE,IAAM,GACzCkqN,EAAQ7sP,KAAK4qP,cAAcgC,GAC3BE,EAAK,EAAEh/M,EAAE,GAAKlI,EAAE,IAAM,GAAIkI,EAAE,GAAKlI,EAAE,IAAM,GACzCmnN,EAAQ/sP,KAAK4qP,cAAckC,GAEjC9sP,KAAK6rP,SACHjmN,EACAp6B,EACAohP,EACAE,EACAd,EACAC,EACAY,EACAE,EACAnB,EAAiB,GAEnB5rP,KAAK6rP,SACHiB,EACAF,EACAjqN,EACAmL,EACAi/M,EACAF,EACAX,EACAC,EACAP,EAAiB,OAEd,CAEL,IAAMoB,EAAK,EAAEpnN,EAAE,GAAKp6B,EAAE,IAAM,GAAIo6B,EAAE,GAAKp6B,EAAE,IAAM,GACzCyhP,EAAQjtP,KAAK4qP,cAAcoC,GAC3BE,EAAK,EAAEvqN,EAAE,GAAKmL,EAAE,IAAM,GAAInL,EAAE,GAAKmL,EAAE,IAAM,GACzCq/M,EAAQntP,KAAK4qP,cAAcsC,GAEjCltP,KAAK6rP,SACHjmN,EACAonN,EACAE,EACAp/M,EACAk+M,EACAiB,EACAE,EACAhB,EACAP,EAAiB,GAEnB5rP,KAAK6rP,SACHmB,EACAxhP,EACAm3B,EACAuqN,EACAD,EACAhB,EACAC,EACAiB,EACAvB,EAAiB,GAGrB,QAIJ,GAAIW,EAAQ,CACV,IAAKvsP,KAAKirP,kBACR,OAEFjrP,KAAKgrP,iBAAkB,EAOE,IAAR,GAAd0B,IACH1sP,KAAK+rP,aAAanmN,EAAGjD,EAAGmL,EAAGk+M,EAAME,EAAMC,GAEd,IAAR,GAAdO,IACH1sP,KAAK+rP,aAAanmN,EAAGjD,EAAGn3B,EAAGwgP,EAAME,EAAMD,GAErCS,IAEyB,IAAR,GAAdA,IACH1sP,KAAK+rP,aAAavgP,EAAGsiC,EAAGlI,EAAGqmN,EAAME,EAAMH,GAEd,IAAR,EAAdU,IACH1sP,KAAK+rP,aAAavgP,EAAGsiC,EAAGnL,EAAGspN,EAAME,EAAMD,MAU7C,YAAAkB,sBAAA,WACE,IAAM1+E,GAAS,UASf,OAPA1uK,KAAK+qP,WAAWvoP,SAAQ,SAAUonP,EAAUtqP,EAAGgjC,GAC7C,IAAM/jB,EAAMqrO,EAASjuP,QACrB,QAAiB+yK,EAAQnwJ,EAAI,KAC7B,QAAiBmwJ,EAAQnwJ,EAAI,KAC7B,QAAiBmwJ,EAAQnwJ,EAAI,OAGxBmwJ,GAMT,YAAAi7E,aAAA,WACE,OAAO3pP,KAAK+qP,YAEhB,EAvcA,geCgTA,QAtUA,YAgBE,WACEx2C,EACA4Q,EACAmjC,EACA+E,EACAz8E,EACA40C,EACA1pG,EACA+mG,EACAyqC,EACAC,EACAzE,EACA78C,GAZF,MAcE,YAAMr7B,EAAWmJ,EAAA,OAAgB,CAACz/F,cAAe2xH,KAAiB,KAMlE,EAAKuhD,kBAAmCvvP,IAApB6qP,GAAgCA,EAMpD,EAAKl6E,YAAc9yD,EAMnB,EAAK0wG,QAAU3J,EAMf,EAAKyQ,QAAU,KAMf,EAAKm6B,gBAAkBtoC,EAMvB,EAAKuoC,gBAAkBL,EAMvB,EAAKM,kBAAoBnoC,GAAsC50C,EAM/D,EAAKg9E,aAAe,GAMpB,EAAKC,qBAAuB,KAM5B,EAAKC,SAAW,EAEhB,IAAMlF,EAAeyE,EAAe9nC,mBAClC,EAAKooC,mBAEDI,EAAkB,EAAKL,gBAAgB5+E,YACzCu7E,EAAkB,EAAKoD,gBAAgB3+E,YAErCk/E,EAAsBD,GACxB,QAAgBnF,EAAcmF,GAC9BnF,EAEJ,GAAqC,KAAjC,QAAQoF,UAGV,EAAK9lN,MAAQ6xI,EAAA,UAIf,IAAMk0E,EAAmB15C,EAAWzlC,YAChCm/E,IAIA5D,EAHGA,GAGe,QAAgBA,EAAiB4D,GAFjCA,GAMtB,IAAM17D,EAAmB86D,EAAep+E,cACtC,EAAK0+E,kBAAkB,IAGnBr7D,GAAmB,QACvBiiB,EACA+zC,EACA0F,EACAz7D,GAGF,IAAK97J,SAAS67J,IAAqBA,GAAoB,SAGrD,EAAKpqJ,MAAQ6xI,EAAA,UAIf,IAAMm0E,OACmBjwP,IAAvBsvP,EAAmCA,EAAqB,IAe1D,GATA,EAAKY,eAAiB,IAAI,EACxB55C,EACA+zC,EACA0F,EACA3D,EACA/3D,EAAmB47D,EACnB37D,GAGgD,IAA9C,EAAK47D,eAAexE,eAAenrP,cAErC,EAAK0pC,MAAQ6xI,EAAA,UAIf,EAAK+zE,SAAW3oC,EAAe+B,kBAAkB50B,GACjD,IAAIm2D,EAAe,EAAK0F,eAAef,wBAmBvC,GAjBI/C,IACE91C,EAAWniC,YACbq2E,EAAa,IAAK,QAChBA,EAAa,GACb4B,EAAgB,GAChBA,EAAgB,IAElB5B,EAAa,IAAK,QAChBA,EAAa,GACb4B,EAAgB,GAChBA,EAAgB,KAGlB5B,GAAe,QAAgBA,EAAc4B,KAI5C,QAAQ5B,GAEN,CAML,IALA,IAAM2F,EAAcjpC,EAAesV,0BACjCguB,EACA,EAAKqF,UAGEO,EAAOD,EAAY3oM,KAAM4oM,GAAQD,EAAY9oM,KAAM+oM,IAC1D,IAAK,IAAIC,EAAOF,EAAYzoM,KAAM2oM,GAAQF,EAAY7oM,KAAM+oM,IAAQ,CAClE,IAAMx0E,EAAOwzE,EAAgB,EAAKQ,SAAUO,EAAMC,EAAMxyI,GACpDg+D,GACF,EAAK8zE,aAAaxpP,KAAK01K,GAKI,IAA7B,EAAK8zE,aAAapvP,SACpB,EAAK0pC,MAAQ6xI,EAAA,cAjBf,EAAK7xI,MAAQ6xI,EAAA,iBAiJnB,OApUyB,OA6MvB,YAAAhL,SAAA,WACE,OAAO/uK,KAAKszN,SAMd,YAAAi7B,WAAA,WACE,IAAM75N,EAAU,GAahB,GAZA10B,KAAK4tP,aAAaprP,QAChB,SAAUs3K,EAAMx6K,EAAGgjC,GACbw3I,GAAQA,EAAK5K,YAAc6K,EAAA,UAC7BrlJ,EAAQtwB,KAAK,CACXsqK,OAAQ1uK,KAAKytP,gBAAgBloC,mBAAmBzrC,EAAKlJ,WACrDxB,MAAO0K,EAAK/K,cAGhB93J,KAAKjX,OAETA,KAAK4tP,aAAapvP,OAAS,EAEJ,IAAnBk2B,EAAQl2B,OACVwB,KAAKkoC,MAAQ6xI,EAAA,YACR,CACL,IAAMjoH,EAAI9xD,KAAK2tP,kBAAkB,GAC3Bl5N,EAAOz0B,KAAK0tP,gBAAgBzmC,YAAYn1J,GACxCl2D,EAAwB,iBAAT64B,EAAoBA,EAAOA,EAAK,GAC/C54B,EAAyB,iBAAT44B,EAAoBA,EAAOA,EAAK,GAChD89J,EAAmBvyL,KAAK0tP,gBAAgBz+E,cAAcn9G,GACtDwgI,EAAmBtyL,KAAKytP,gBAAgBx+E,cAC5CjvK,KAAK8tP,UAGDlF,EAAe5oP,KAAK0tP,gBAAgBnoC,mBACxCvlN,KAAK2tP,mBAGP3tP,KAAKszN,SAAU,QACb13N,EACAC,EACAmE,KAAK4uK,YACL0jB,EACAtyL,KAAKytP,gBAAgB3+E,YACrByjB,EACAq2D,EACA5oP,KAAKmuP,eACLz5N,EACA10B,KAAKwsN,QACLxsN,KAAKwtP,aACLxtP,KAAKs6E,aAGPt6E,KAAKkoC,MAAQ6xI,EAAA,SAEf/5K,KAAKmpD,WAMP,YAAA4+E,KAAA,WACE,GAAI/nI,KAAKkoC,OAAS6xI,EAAA,OAAgB,CAChC/5K,KAAKkoC,MAAQ6xI,EAAA,UACb/5K,KAAKmpD,UAEL,IAAI,EAAa,EAEjBnpD,KAAK6tP,qBAAuB,GAC5B7tP,KAAK4tP,aAAaprP,QAChB,SAAUs3K,EAAMx6K,EAAGgjC,GACjB,IAAM4F,EAAQ4xI,EAAK5K,WACnB,GAAIhnI,GAAS6xI,EAAA,QAAkB7xI,GAAS6xI,EAAA,UAAmB,CACzD,IAEA,IAAM,GAAkB,QACtBD,EACAjL,EAAA,UACA,SAAUvwK,GACR,IAAM4pC,EAAQ4xI,EAAK5K,WAEjBhnI,GAAS6xI,EAAA,UACT7xI,GAAS6xI,EAAA,SACT7xI,GAAS6xI,EAAA,WAET,QAAc,GAEK,KADnB,IAEE/5K,KAAKwuP,mBACLxuP,KAAKuuP,iBAIXvuP,MAEFA,KAAK6tP,qBAAqBzpP,KAAK,KAEjC6S,KAAKjX,OAGU,IAAf,EACFgV,WAAWhV,KAAKuuP,WAAWt3O,KAAKjX,MAAO,GAEvCA,KAAK4tP,aAAaprP,SAAQ,SAAUs3K,EAAMx6K,EAAGgjC,GAC7Bw3I,EAAK5K,YACN6K,EAAA,QACXD,EAAK/xC,YAUf,YAAAymH,iBAAA,WACExuP,KAAK6tP,qBAAqBrrP,QAAQ,MAClCxC,KAAK6tP,qBAAuB,MAEhC,EApUA,CAAyB7kC,EAAA,yDClBlB,IAAMylC,EAAkB,GAOlBC,GAA6B,0FCHnC,SAASzsN,EAAQ2hB,GACtB,YAAiB3lD,IAAb2lD,EACK,OAEP,EAQG,SAASstI,EAAKttI,GACnB,YAAiB3lD,IAAb2lD,EACKA,OAEP,EAQG,SAAS+qM,EAAc9wJ,GAC5B,IAAMtoB,EAAS,EAAItoE,KAAKmqE,GAAMymB,EAC9B,OAAO,SAMKj6C,EAAUgtI,GAClB,OAAIA,EACKhtI,OAGQ3lD,IAAb2lD,EACFA,EAAW32C,KAAKwjB,MAAMmzB,EAAW2xB,EAAQ,IAAOA,OAGhD,GAUD,SAASq5K,EAAiBC,GAC/B,IAAMv6C,EAAYu6C,IAAiB,QAAU,GAC7C,OAAO,SAMKjrM,EAAUgtI,GAClB,OAAIA,EACKhtI,OAGQ3lD,IAAb2lD,EACE32C,KAAKknB,IAAIyvB,IAAa0wJ,EACjB,EAEA1wJ,OAGT,iCCnED,SAASrvC,EAAOkgB,EAAMgO,EAAKm1J,GAMhC,YALiB35L,IAAb25L,IACFA,EAAW,CAAC,EAAG,IAEjBA,EAAS,GAAKnjK,EAAK,GAAK,EAAIgO,EAC5Bm1J,EAAS,GAAKnjK,EAAK,GAAK,EAAIgO,EACrBm1J,EAQF,SAASk3D,EAAQr6N,GACtB,OAAOA,EAAK,GAAK,GAAKA,EAAK,GAAK,EAU3B,SAASsb,EAAMtb,EAAM4qB,EAAOu4I,GAMjC,YALiB35L,IAAb25L,IACFA,EAAW,CAAC,EAAG,IAEjBA,EAAS,GAAMnjK,EAAK,GAAK4qB,EAAQ,GAAO,EACxCu4I,EAAS,GAAMnjK,EAAK,GAAK4qB,EAAQ,GAAO,EACjCu4I,EAYF,SAASm3D,EAAOt6N,EAAMmjK,GAC3B,OAAIt3L,MAAMiF,QAAQkvB,GACTA,QAEUx2B,IAAb25L,EACFA,EAAW,CAACnjK,EAAMA,IAElBmjK,EAAS,GAAKnjK,EACdmjK,EAAS,GAAKnjK,GAETmjK,goBCkQX,QAnQA,YAIE,WAAYn6L,GAAZ,MACE,YAAM,CACJwiM,aAAcxiM,EAAQwiM,aACtBW,MAAOnjM,EAAQmjM,SACf,YAMF,EAAKjyB,gBAAa1wK,EAMlB,EAAKowD,cAAgCpwD,IAArBR,EAAQ4wD,SAAyB5wD,EAAQ4wD,SAAW,GAMpE,EAAKF,YAAc1wD,EAAQ0wD,aAAe,EAM1C,EAAK6gM,mBAAqB,EAM1B,EAAKlwE,SAAW,GAOhB,EAAKmwE,iBACHxxP,EAAQwxP,kBACR,SAAUh9E,GACR,IAAMtrD,EAAiCsrD,EAAQ9D,cAE/C,OADA,OAAOxnD,EAASwyE,WAAa,UAAoB,IAC1CxyE,GAOX,EAAKuoI,qBAAuBzxP,EAAQ0xP,cAMpC,EAAKxzP,OAAS,KAKd,EAAKyzP,cAAgB,EAAKC,QAAQp4O,KAAK,GAEvC,EAAKq4O,eAAe,EAAKjhM,SAAU,EAAKF,aACxC,EAAKqwJ,UAAU/gN,EAAQ9B,QAAU,QA0LrC,OAjQsB,OA+EpB,YAAAivB,MAAA,SAAM2kO,GACJvvP,KAAK8+K,SAAStgL,OAAS,EACvB,YAAMosB,MAAK,UAAC2kO,IAQd,YAAApoE,YAAA,WACE,OAAOnnL,KAAKquD,UAQd,YAAA0kH,UAAA,WACE,OAAO/yK,KAAKrE,QAQd,YAAAsnN,aAAA,SAAav0C,EAAQC,EAAYuD,GAC/BlyK,KAAKrE,OAAOsnN,aAAav0C,EAAQC,EAAYuD,GACzCvD,IAAe3uK,KAAK2uK,aACtB3uK,KAAK2uK,WAAaA,EAClB3uK,KAAKqvP,YAST,YAAAG,YAAA,SAAYnhM,GACVruD,KAAKsvP,eAAejhM,EAAUruD,KAAKmuD,cASrC,YAAAshM,eAAA,SAAethM,GACbnuD,KAAKsvP,eAAetvP,KAAKquD,SAAUF,IAQrC,YAAAuhM,eAAA,WACE,OAAO1vP,KAAKmuD,aAQd,YAAAqwJ,UAAA,SAAU7iN,GACJqE,KAAKrE,QACPqE,KAAKrE,OAAO01B,oBAAoB,WAAkBrxB,KAAKovP,eAEzDpvP,KAAKrE,OAASA,EACVA,GACFA,EAAOsc,iBAAiB,WAAkBjY,KAAKovP,eAEjDpvP,KAAKqvP,WAMP,YAAAA,QAAA,WACErvP,KAAK4qB,QACL5qB,KAAK2vP,UACL3vP,KAAK0oM,YAAY1oM,KAAK8+K,WAQxB,YAAAwwE,eAAA,SAAejhM,EAAUF,GACvB,IAAM9O,EACS,IAAbgP,EAAiB,EAAIphD,KAAK6d,IAAIqjC,EAAaE,GAAYA,EACnDlF,EACJkF,IAAaruD,KAAKquD,UAAYruD,KAAKgvP,qBAAuB3vM,EAC5Dr/C,KAAKquD,SAAWA,EAChBruD,KAAKmuD,YAAcA,EACnBnuD,KAAKgvP,mBAAqB3vM,EACtB8J,GACFnpD,KAAKqvP,WAOT,YAAAM,QAAA,WACE,QAAwB1xP,IAApB+B,KAAK2uK,YAA6B3uK,KAAKrE,OAU3C,IAPA,IAAM+yK,GAAS,UACTkhF,EAAc5vP,KAAKquD,SAAWruD,KAAK2uK,WACnCmQ,EAAW9+K,KAAKrE,OAAOghN,cAGvBkzC,EAAY,GAETvwP,EAAI,EAAG8sK,EAAK0S,EAAStgL,OAAQc,EAAI8sK,EAAI9sK,IAAK,CACjD,IAAM2yK,EAAU6M,EAASx/K,GACzB,MAAM,QAAO2yK,KAAY49E,GAAY,CACnC,IAAMlpI,EAAW3mH,KAAKivP,iBAAiBh9E,GACvC,GAAItrD,EAAU,CACZ,IAAMkB,EAAclB,EAASmkF,kBAC7B,QAA6BjjF,EAAa6mD,IAC1C,QAAOA,EAAQkhF,EAAalhF,GAE5B,IAAMohF,EAAY9vP,KAAKrE,OACpBynN,oBAAoB10C,GACpB3lK,QAAO,SAAUgnP,GAChB,IAAMr1J,GAAM,QAAOq1J,GACnB,QAAIr1J,KAAOm1J,KAGXA,EAAUn1J,IAAO,GACV,MAEX16F,KAAK8+K,SAAS16K,KAAKpE,KAAKmvP,cAAcW,EAAWphF,QAYzD,YAAAygF,cAAA,SAAcrwE,EAAUpQ,GAEtB,IADA,IAAMqY,EAAW,CAAC,EAAG,GACZznL,EAAIw/K,EAAStgL,OAAS,EAAGc,GAAK,IAAKA,EAAG,CAC7C,IAAM,EAAWU,KAAKivP,iBAAiBnwE,EAASx/K,IAC5C,GACF,QAAcynL,EAAU,EAAS+jB,kBAEjChsB,EAASx6K,OAAOhF,EAAG,IAGvB,QAAgBynL,EAAU,EAAIjI,EAAStgL,QACvC,IAAMwxP,GAAe,QAAUthF,GACzBrvH,EAAQr/C,KAAKgvP,mBACbroI,EAAW,IAAI,IAAM,CACzBogE,EAAS,IAAM,EAAI1nI,GAAS2wM,EAAa,GAAK3wM,EAC9C0nI,EAAS,IAAM,EAAI1nI,GAAS2wM,EAAa,GAAK3wM,IAEhD,OAAIr/C,KAAKkvP,qBACAlvP,KAAKkvP,qBAAqBvoI,EAAUm4D,GAEpC,IAAI,IAAQ,CACjBn4D,SAAQ,EACRm4D,SAAQ,KAIhB,EAjQA,CAAsB,sgBC8BtB,QA9CA,YAIE,WAAY/S,GACV,IAQIk0B,EARExiM,EAAUsuK,GAAe,GAE3BzxF,OACyBr8E,IAA3BR,EAAQwyP,gBAA+BxyP,EAAQwyP,oBACrBhyP,IAAxBR,EAAQ68E,cACVA,EAAc78E,EAAQ68E,aAKtB2lH,OAD2BhiM,IAAzBR,EAAQwiM,aACKxiM,EAAQwiM,aAER,CAxDnB,4GA2DE,IAAMrwB,OACoB3xK,IAAxBR,EAAQmyK,YAA4BnyK,EAAQmyK,YAAc,YAEtD7wK,OACYd,IAAhBR,EAAQsB,IACJtB,EAAQsB,IACR,8DAEN,YAAM,CACJkhM,aAAcA,EACdiwD,yBAAyB,EACzBrzD,UAAWp/L,EAAQo/L,UACnBjtB,YAAaA,EACbt1F,YAAaA,EACbw5G,aAA6B71L,IAApBR,EAAQq2L,QAAwBr2L,EAAQq2L,QAAU,GAC3Dq8D,YAA2BlyP,IAAnBR,EAAQ0yP,QAAuB1yP,EAAQ0yP,OAC/CC,2BAA4B3yP,EAAQ2yP,2BACpCv/E,iBAAkBpzK,EAAQozK,iBAC1Bz1H,WAAY39C,EAAQ29C,WACpBr8C,IAAKA,EACL6hM,MAAOnjM,EAAQmjM,MACf8mB,WAAYjqN,EAAQiqN,cACpB,KAEN,OA5CkB,OA4ClB,EA5CA,CAAkB,oiBC0KlB,SAAS2oC,EAAkBC,GACzB,OAAKA,EAGDhwP,MAAMiF,QAAQ+qP,GACT,SAAUn/E,GACf,OAAOm/E,GAIoB,mBAApBA,EACFA,EAGF,SAAUn/E,GACf,MAAO,CAACm/E,IAbD,KAiBX,QAnMA,YAIE,WAAY7yP,GAAZ,MACE,cAAO,KAMP,EAAKy0K,YAAa,QAAcz0K,EAAQy0K,YAMxC,EAAKq+E,cAAgBF,EAAkB5yP,EAAQwiM,cAM/C,EAAKuwD,8BACiCvyP,IAApCR,EAAQyyP,yBACJzyP,EAAQyyP,wBAQd,EAAKvzF,SAAU,EAMf,EAAK69C,YACev8M,IAAlBR,EAAQyqC,MAAsBzqC,EAAQyqC,MAAQ,UAMhD,EAAKuoN,YAA2BxyP,IAAlBR,EAAQmjM,OAAsBnjM,EAAQmjM,MAMpD,EAAK8vD,eAAiBjzP,EAAQ68E,YAM9B,EAAKq2K,aAAe,KAMpB,EAAKC,aAAe,KAEpB,IAAM3uO,EAAO,SAKb,EAAK4uO,aAAe,IAAI/2O,SAAQ,SAAU1P,EAASyK,GACjDoN,EAAK0uO,aAAevmP,EACpB6X,EAAK2uO,aAAe/7O,OAgG1B,OAzKqB,OAkFnB,YAAAmrL,gBAAA,WACE,OAAOhgM,KAAKuwP,eAOd,YAAArwD,2BAAA,WACE,OAAOlgM,KAAKwwP,0BAQd,YAAAhxE,cAAA,WACE,OAAOx/K,KAAKkyK,YAOd,YAAAumB,eAAA,WACE,OAAO,WAMT,YAAAlZ,QAAA,WACE,OAAOv/K,KAAK6wP,cAQd,YAAA3hF,SAAA,WACE,OAAOlvK,KAAKw6M,QAMd,YAAAxnC,SAAA,WACE,OAAOhzK,KAAKywP,QAMd,YAAApL,eAAA,WACE,OAAOrlP,KAAK0wP,cAOd,YAAArB,QAAA,WACErvP,KAAKmpD,WAUP,YAAA2nM,gBAAA,SAAgB7wD,GACdjgM,KAAKuwP,cAAgBF,EAAkBpwD,GACvCjgM,KAAKmpD,WAOP,YAAAkmI,SAAA,SAASnnJ,GACPloC,KAAKw6M,OAAStyK,EACdloC,KAAKmpD,WAET,EAzKA,CAAqB,mDCvCrB,SACE4nM,UAAW,YACXtgF,QAAS,UACTugF,MAAO,QACP5tP,MAAO,8mBCqcT,SAAS6tP,EAAwBC,EAAW3yO,GACQ2yO,EAAUniF,WAAYxwJ,IACtEA,EAGJ,QAlZA,YAIE,WAAY9gB,GAAZ,WACM68E,OACyBr8E,IAA3BR,EAAQwyP,gBAA+BxyP,EAAQwyP,2BACrBhyP,IAAxBR,EAAQ68E,cACVA,EAAc78E,EAAQ68E,gBAGxB,YAAM,CACJ2lH,aAAcxiM,EAAQwiM,aACtBpD,UAAWp/L,EAAQo/L,UACnBszD,OAAQ1yP,EAAQ0yP,OAChBj+E,WAAYz0K,EAAQy0K,WACpBhqI,MAAOzqC,EAAQyqC,MACfs+K,SAAU/oN,EAAQ+oN,SAClB31C,iBAAkBpzK,EAAQozK,iBACtBpzK,EAAQozK,iBACRogF,EACJ1kC,eAAgB9uN,EAAQ8uN,eACxB4kC,gBAAiB1zP,EAAQ0zP,gBACzBpyP,IAAKtB,EAAQsB,IACbqyP,KAAM3zP,EAAQ2zP,KACdxwD,MAAOnjM,EAAQmjM,MACfxlJ,WAAY39C,EAAQ29C,WACpBk/B,YAAaA,EACbz2E,IAAKpG,EAAQoG,IACbqsP,wBAAyBzyP,EAAQyyP,wBACjCxoC,WAAYjqN,EAAQiqN,cACpB,MAMG93C,iBACqB3xK,IAAxBR,EAAQmyK,YAA4BnyK,EAAQmyK,YAAc,KAM5D,EAAKyhF,eACmBpzP,IAAtBR,EAAQ4zP,UAA0B5zP,EAAQ4zP,UAAY,IAMxD,EAAKC,uBAAyB,GAM9B,EAAKC,sBAAwB,GAM7B,EAAKC,4BAA8B/zP,EAAQ2yP,2BAM3C,EAAKqB,0BAA2B,IAkUpC,OAvYwB,OA2EtB,YAAA/hE,eAAA,WACE,IAAK,IACH,OAAO,YAAMA,eAAc,WAE7B,GAAI1vL,KAAK0xP,UAAUhiE,iBACjB,OAAO,EAEP,IAAK,IAAM7rL,KAAO7D,KAAKsxP,uBACrB,GAAItxP,KAAKsxP,uBAAuBztP,GAAK6rL,iBACnC,OAAO,EAIb,OAAO,GAOT,YAAAD,YAAA,SAAYvd,EAAY2Q,GACtB,GAAK,IAAL,CAIA,IAAM8uE,EAAgB3xP,KAAK4xP,0BAA0B1/E,GAKrD,IAAK,IAAMp1K,KAHXkD,KAAK0xP,UAAUjiE,YACbzvL,KAAK0xP,WAAaC,EAAgB9uE,EAAY,IAE/B7iL,KAAKsxP,uBAAwB,CAC5C,IAAMI,EAAY1xP,KAAKsxP,uBAAuBx0P,GAC9C40P,EAAUjiE,YAAYiiE,GAAaC,EAAgB9uE,EAAY,UAV/D,YAAM4M,YAAW,UAACvd,EAAY2Q,IAkBlC,YAAAy3C,uBAAA,SAAuBpoD,GACrB,OACE,KACAlyK,KAAKw/K,iBACLtN,KACC,QAAWlyK,KAAKw/K,gBAAiBtN,GAE3B,EAEAlyK,KAAK6xP,aAOhB,YAAAA,UAAA,WACE,OAAO,GAOT,YAAAt4E,OAAA,WACE,IAAI11K,EAAM,YAAM01K,OAAM,WAItB,OAHKv5K,KAAKqlP,mBACRxhP,GAAO,0BAEFA,GAOT,YAAAyhP,UAAA,SAAUpzE,GACR,QACE,KACAlyK,KAAKw/K,iBACLtN,KACC,QAAWlyK,KAAKw/K,gBAAiBtN,KAI3B,YAAMozE,UAAS,UAACpzE,IAQ3B,YAAAozC,yBAAA,SAAyBpzC,GACvB,IAAK,IACH,OAAO,YAAMozC,yBAAwB,UAACpzC,GAExC,IAAM4/E,EAAW9xP,KAAKw/K,gBACtB,IAAIx/K,KAAKwmN,UAAcsrC,KAAY,QAAWA,EAAU5/E,GAEjD,CACL,IAAM6/E,GAAU,QAAO7/E,GAKvB,OAJM6/E,KAAW/xP,KAAKuxP,wBACpBvxP,KAAKuxP,sBAAsBQ,IACzB,QAAyB7/E,IAEtBlyK,KAAKuxP,sBAAsBQ,GAPlC,OAAO/xP,KAAKwmN,UAehB,YAAAorC,0BAAA,SAA0B1/E,GACxB,IAAK,IACH,OAAO,YAAM0/E,0BAAyB,UAAC1/E,GAEzC,IAAM4/E,EAAW9xP,KAAKw/K,gBACtB,IAAKsyE,IAAY,QAAWA,EAAU5/E,GACpC,OAAOlyK,KAAK0xP,UAEZ,IAAMK,GAAU,QAAO7/E,GAMvB,OALM6/E,KAAW/xP,KAAKsxP,yBACpBtxP,KAAKsxP,uBAAuBS,GAAW,IAAI,IACzC/xP,KAAK0xP,UAAUM,gBAGZhyP,KAAKsxP,uBAAuBS,IAcvC,YAAAE,YAAA,SAAYngM,EAAGxd,EAAGC,EAAGunE,EAAYo2D,EAAYruK,GAC3C,IAAM+sK,EAAY,CAAC9+G,EAAGxd,EAAGC,GACnB29M,EAAelyP,KAAKmyP,+BACxBvhF,EACAsB,GAEIkgF,EAAUF,EACZlyP,KAAKmxP,gBAAgBe,EAAcp2I,EAAYo2D,QAC/Cj0K,EACE67K,EAAO,IAAI95K,KAAKqxP,UACpBzgF,OACY3yK,IAAZm0P,EAAwB,SAAiB,eAC7Bn0P,IAAZm0P,EAAwBA,EAAU,GAClCpyP,KAAK4vK,YACL5vK,KAAK6wK,iBACL7wK,KAAKqyP,aAIP,OAFAv4E,EAAKj2K,IAAMA,EACXi2K,EAAK7hK,iBAAiB,WAAkBjY,KAAKy5K,iBAAiBxiK,KAAKjX,OAC5D85K,GAWT,YAAAqqC,QAAA,SAAQryJ,EAAGxd,EAAGC,EAAGunE,EAAYo2D,GAC3B,IAAM+yD,EAAmBjlO,KAAKw/K,gBAC9B,GACG,KACAylD,GACA/yD,KACD,QAAW+yD,EAAkB/yD,GASxB,CACL,IAAMv3H,EAAQ36C,KAAK4xP,0BAA0B1/E,GACvCtB,EAAY,CAAC9+G,EAAGxd,EAAGC,GACrBulI,OAAI,EACFkhD,GAAe,QAAOpqD,GACxBj2H,EAAM+/K,YAAYM,KACpBlhD,EAAOn/H,EAAMzgC,IAAI8gN,IAEnB,IAAMn3N,EAAM7D,KAAKu5K,SACjB,GAAIO,GAAQA,EAAKj2K,KAAOA,EACtB,OAAOi2K,EAEP,IAAMqrC,EAAiBnlN,KAAKslN,yBAAyB2f,GAC/CooB,EAAiBrtP,KAAKslN,yBAAyBpzC,GAC/CszC,EAAmBxlN,KAAKmyP,+BAC5BvhF,EACAsB,GAEIogF,EAAU,IAAI,IAClBrtB,EACA9f,EACAjzC,EACAm7E,EACAz8E,EACA40C,EACAxlN,KAAKq6N,kBAAkBv+G,GACvB97G,KAAK6xP,YACL,SAAU//L,EAAGxd,EAAGC,EAAGunE,GACjB,OAAO97G,KAAKuyP,gBAAgBzgM,EAAGxd,EAAGC,EAAGunE,EAAYmpH,IACjDhuN,KAAKjX,MACPA,KAAKwxP,4BACLxxP,KAAKyxP,yBACLzxP,KAAKqlP,kBAWP,OATAiN,EAAQzuP,IAAMA,EAEVi2K,GACFw4E,EAAQvjE,YAAcjV,EACtBw4E,EAAQnjE,sBACRx0I,EAAMr1C,QAAQ01N,EAAcs3B,IAE5B33M,EAAMnP,IAAIwvL,EAAcs3B,GAEnBA,EAlDT,OAAOtyP,KAAKuyP,gBACVzgM,EACAxd,EACAC,EACAunE,EACAmpH,GAAoB/yD,IA2D1B,YAAAqgF,gBAAA,SAAgBzgM,EAAGxd,EAAGC,EAAGunE,EAAYo2D,GACnC,IAAI4H,EAAO,KACLkhD,GAAe,QAAUlpK,EAAGxd,EAAGC,GAC/B1wC,EAAM7D,KAAKu5K,SACjB,GAAKv5K,KAAK0xP,UAAUh3B,YAAYM,IAK9B,IADAlhD,EAAO95K,KAAK0xP,UAAUx3O,IAAI8gN,IACjBn3N,KAAOA,EAAK,CAInB,IAAMkrL,EAAcjV,EACpBA,EAAO95K,KAAKiyP,YAAYngM,EAAGxd,EAAGC,EAAGunE,EAAYo2D,EAAYruK,GAGrDkrL,EAAY7f,YAAc,SAE5B4K,EAAKiV,YAAcA,EAAYA,YAE/BjV,EAAKiV,YAAcA,EAErBjV,EAAKqV,sBACLnvL,KAAK0xP,UAAUpsP,QAAQ01N,EAAclhD,SAnBvCA,EAAO95K,KAAKiyP,YAAYngM,EAAGxd,EAAGC,EAAGunE,EAAYo2D,EAAYruK,GACzD7D,KAAK0xP,UAAUlmN,IAAIwvL,EAAclhD,GAqBnC,OAAOA,GAQT,YAAA04E,2BAAA,SAA2BliL,GACzB,GACG,KACDtwE,KAAKyxP,0BAA4BnhL,EAFnC,CAOA,IAAK,IAAMxzE,KADXkD,KAAKyxP,yBAA2BnhL,EACftwE,KAAKsxP,uBACpBtxP,KAAKsxP,uBAAuBx0P,GAAI8tB,QAElC5qB,KAAKmpD,YAeP,YAAAspM,yBAAA,SAAyBvgF,EAAYwgF,GACnC,GAAI,IAA4B,CAC9B,IAAMC,GAAO,QAAczgF,GAC3B,GAAIygF,EAAM,CACR,IAAMZ,GAAU,QAAOY,GACjBZ,KAAW/xP,KAAKuxP,wBACpBvxP,KAAKuxP,sBAAsBQ,GAAWW,MAKhD,EAvYA,CAAwB,kDC5DjB,IAAME,EAAsB,kBCI5B,SAASC,EAAaC,EAAKhjM,GAChC,IAAMijM,EAAY,GAElB92P,OAAOkQ,KAAK2jD,GAAQttD,SAAQ,SAAUo5F,GAClB,OAAd9rC,EAAO8rC,SAA6B39F,IAAd6xD,EAAO8rC,IAC/Bm3J,EAAU3uP,KAAKw3F,EAAI,IAAMh9E,mBAAmBkxC,EAAO8rC,QAGvD,IAAMo3J,EAAKD,EAAU3wP,KAAK,KAK1B,OADA0wP,GAA4B,KAF5BA,EAAMA,EAAIxtP,QAAQ,QAAS,KAEjB8D,QAAQ,KAAc0pP,EAAM,IAAMA,EAAM,KACrCE,2hBCycf,QA/YA,YAIE,WAAYjnF,GAAZ,WACQtuK,EAAUsuK,GAAmD,GAE/DzxF,OACyBr8E,IAA3BR,EAAQwyP,gBAA+BxyP,EAAQwyP,oBACrBhyP,IAAxBR,EAAQ68E,cACVA,EAAc78E,EAAQ68E,aAGxB,IAAMxqB,EAASryD,EAAQqyD,QAAU,GAE3BhkB,IAAc,gBAAiBgkB,IAASA,EAAoB,qBAElE,YAAM,CACJmwI,aAAcxiM,EAAQwiM,aACtBiwD,wBAAyBzyP,EAAQyyP,wBACjCrzD,UAAWp/L,EAAQo/L,UACnBjtB,YAAanyK,EAAQmyK,YACrBt1F,YAAaA,EACb61K,QAASrkN,EACTomI,WAAYz0K,EAAQy0K,WACpBk+E,2BAA4B3yP,EAAQ2yP,2BACpCiB,UAAW5zP,EAAQ4zP,UACnB7qC,SAAU/oN,EAAQ+oN,SAClB31C,iBAAkBpzK,EAAQozK,iBAC1B9xK,IAAKtB,EAAQsB,IACbqyP,KAAM3zP,EAAQ2zP,KACdxwD,WAAyB3iM,IAAlBR,EAAQmjM,OAAsBnjM,EAAQmjM,MAC7CxlJ,WAAY39C,EAAQ29C,WACpBssK,WAAYjqN,EAAQiqN,cACpB,MAMG8E,aAA6BvuN,IAAnBR,EAAQolN,OAAuBplN,EAAQolN,OAAS,EAM/D,EAAKowC,QAAUnjM,EAMf,EAAKojM,MAAO,EAMZ,EAAKC,YAED11P,EAAkB,WAOtB,EAAK21P,YAA2Bn1P,IAAlBR,EAAQ41P,OAAsB51P,EAAQ41P,MAMpD,EAAKC,YAAa,UAElB,EAAKC,aACL,EAAKC,OAAO,EAAKC,sBAiUrB,OA7YsB,OA6FpB,YAAAC,kBAAA,SAAkB/hF,EAAYhD,EAAYuD,EAAYpiH,GACpD,IAAM6jM,GAAgB,QAAczhF,GAC9B0hF,EAAsB5zP,KAAKw/K,gBAE7BgnC,EAAWxmN,KAAKolN,cACfoB,IACHA,EAAWxmN,KAAKslN,yBAAyBquC,IAG3C,IAAM7hM,EAAI00J,EAASU,kBAAkBv4C,EAAY3uK,KAAK0nN,YAChD92C,EAAY41C,EAASwV,yBAAyBrqD,EAAY7/G,GAEhE,KAAI00J,EAAS/tB,iBAAiBj6L,QAAUoyK,EAAU,IAAlD,CAIA,IAAI8P,EAAiB8lC,EAASv3C,cAAc2B,EAAU,IAClDy0C,EAAamB,EAASjB,mBAAmB30C,EAAW5wK,KAAKszP,YACzDtsC,GAAW,QAAOR,EAASS,YAAYr2C,EAAU,IAAK5wK,KAAK6zP,SAEzDhxC,EAAS7iN,KAAKwsN,QACL,IAAX3J,IACFmE,GAAW,QAAWA,EAAUnE,EAAQ7iN,KAAK6zP,SAC7CxuC,GAAa,QAAOA,EAAY3kC,EAAiBmiC,EAAQwC,IAGvDuuC,GAAuBA,IAAwBD,IACjDjzE,GAAiB,QACfkzE,EACAD,EACAhiF,EACA+O,GAEF2kC,GAAa,QACXA,EACAsuC,EACAC,GAEFjiF,GAAa,QAAUA,EAAYgiF,EAAeC,IAGpD,IAAME,EAAa,CACjB,QAAW,MACX,QAAWlB,EACX,QAAW,iBACX,OAAU,YACV,aAAe,EACf,aAAgB5yP,KAAKizP,QAAgB,SAEvC,QAAOa,EAAY9zP,KAAKizP,QAASnjM,GAEjC,IAAMxb,EAAIrnC,KAAKwjB,OAAOkhJ,EAAW,GAAK0zC,EAAW,IAAM3kC,GACjDnsI,EAAItnC,KAAKwjB,OAAO40L,EAAW,GAAK1zC,EAAW,IAAM+O,GAKvD,OAHAozE,EAAW9zP,KAAKkzP,KAAO,IAAM,KAAO5+M,EACpCw/M,EAAW9zP,KAAKkzP,KAAO,IAAM,KAAO3+M,EAE7Bv0C,KAAK+zP,eACVnjF,EACAo2C,EACA3B,EACA,EACAuuC,GAAuBD,EACvBG,KAkBJ,YAAAE,aAAA,SAAarlF,EAAY7+G,GACvB,QAAqB7xD,IAAjB+B,KAAKoxP,KAAK,GAAd,CAIA,IAAM0C,EAAa,CACjB,QAAW,MACX,QAAWlB,EACX,QAAW,mBACX,OAAU,aAGZ,QAAe30P,IAAX6xD,QAA4C7xD,IAApB6xD,EAAc,MAAiB,CACzD,IAAMgjB,EAAS9yE,KAAKizP,QAAQgB,OAE5B,GADuB3zP,MAAMiF,QAAQutE,IAA6B,IAAlBA,EAAOt0E,OAErD,OAEFs1P,EAAkB,MAAIhhL,EAGxB,QAAmB70E,IAAf0wK,EAA0B,CAC5B,IAAMulF,EAAMl0P,KAAKw/K,gBACbx/K,KAAKw/K,gBAAgBkV,mBACrB,EAEJo/D,EAAkB,MAAKnlF,EAAaulF,EADlB,MAMpB,OAFA,QAAOJ,EAAYhkM,GAEZ+iM,EAAoC7yP,KAAKoxP,KAAK,GAAK0C,KAM5D,YAAAjC,UAAA,WACE,OAAO7xP,KAAKwsN,SASd,YAAA2nC,UAAA,WACE,OAAOn0P,KAAKizP,SAad,YAAAc,eAAA,SACEnjF,EACAo2C,EACA3B,EACAvpG,EACAo2D,EACApiH,GAEA,IAAMshM,EAAOpxP,KAAKoxP,KAClB,GAAKA,EAAL,CAaA,GATAthM,EAAc,MAAIk3J,EAAS,GAC3Bl3J,EAAe,OAAIk3J,EAAS,GAE5Bl3J,EAAO9vD,KAAKkzP,KAAO,MAAQ,OAAShhF,EAAWkxD,UAEzC,WAAYpjO,KAAKizP,UACrBnjM,EAAe,OAAI,IAGH,GAAdgsD,EACF,OAAQ97G,KAAKmzP,aACX,IClUK,YDmUH,IAAMiB,EAAO,GAAKt4I,EAAa,GAAO,EAClC,mBAAoBhsD,EACtBA,EAAuB,gBAAK,QAAUskM,EAEtCtkM,EAAuB,eAAI,OAASskM,EAEtC,MACF,ICrUK,YDsUHtkM,EAAuB,eAAI,GAAKgsD,EAChC,MACF,IClVW,iBDmVX,ICpUA,ODqUEhsD,EAAY,IAAI,GAAKgsD,EACrB,MACF,SACE,QAAO,EAAO,IAKpB,IAAMknH,EAAkB9wD,EAAWw0D,qBAC7B2tB,EAAOhvC,EACb,GAAIrlN,KAAKkzP,MAAwC,MAAhClwB,EAAgB18L,OAAO,EAAG,GAAY,CACrD,IAAIwnE,OAAG,EACPA,EAAMu3G,EAAW,GACjBgvC,EAAK,GAAKhvC,EAAW,GACrBgvC,EAAK,GAAKvmJ,EACVA,EAAMu3G,EAAW,GACjBgvC,EAAK,GAAKhvC,EAAW,GACrBgvC,EAAK,GAAKvmJ,EAWZ,OATAh+C,EAAa,KAAIukM,EAAKjyP,KAAK,KASpBywP,EANY,GAAfzB,EAAK5yP,OACD4yP,EAAK,GAGLA,GADQ,SAAO,QAAcxgF,GAAYwgF,EAAK5yP,SAG7BsxD,KAQ3B,YAAAuqK,kBAAA,SAAkBv+G,GAChB,OAAQ97G,KAAKozP,aAA+Bn1P,IAArB+B,KAAKmzP,YAAgCr3I,EAAJ,GAO1D,YAAA23I,iBAAA,WACE,IAAIn0P,EAAI,EACFquC,EAAM,GACZ,IAAK,IAAM9pC,KAAO7D,KAAKizP,QACrBtlN,EAAIruC,KAAOuE,EAAM,IAAM7D,KAAKizP,QAAQpvP,GAEtC,OAAO8pC,EAAIvrC,KAAK,MAQlB,YAAAkyP,aAAA,SAAaxkM,IACX,QAAO9vD,KAAKizP,QAASnjM,GACrB9vD,KAAKuzP,aACLvzP,KAAKwzP,OAAOxzP,KAAKyzP,qBAMnB,YAAAF,WAAA,WACE,IAAMnkP,EAAUpP,KAAKizP,QAAiB,SAAKL,EAC3C5yP,KAAKkzP,KE9YF,SAAyBl0M,EAAIC,GAIlC,IAHA,IAAM6pE,GAAM,GAAK9pE,GAAI98C,MAAM,KACrBg4I,EF4YiC,ME5YlBh4I,MAAM,KAElB5C,EAAI,EAAGA,EAAI2N,KAAK6mB,IAAIg1F,EAAGtqH,OAAQ07I,EAAG17I,QAASc,IAAK,CACvD,IAAMi1P,EAAK3xP,SAASkmH,EAAGxpH,IAAM,IAAK,IAC5BwxJ,EAAKluJ,SAASs3I,EAAG56I,IAAM,IAAK,IAElC,GAAIi1P,EAAKzjG,EACP,OAAO,EAET,GAAIA,EAAKyjG,EACP,OAAQ,EAIZ,OAAO,EF8XOC,CAAgBplP,IAAmB,GAUjD,YAAA+hP,gBAAA,SAAgBvgF,EAAW90D,EAAYo2D,GACrC,IAAIs0C,EAAWxmN,KAAKolN,cAKpB,GAJKoB,IACHA,EAAWxmN,KAAKslN,yBAAyBpzC,MAGvCs0C,EAAS/tB,iBAAiBj6L,QAAUoyK,EAAU,IAAlD,CAIkB,GAAd90D,GAAqB97G,KAAKozP,aAA+Bn1P,IAArB+B,KAAKmzP,cAC3Cr3I,EAAa,GAGf,IAAM4kE,EAAiB8lC,EAASv3C,cAAc2B,EAAU,IACpDy0C,EAAamB,EAASjB,mBAAmB30C,EAAW5wK,KAAKszP,YACzDtsC,GAAW,QAAOR,EAASS,YAAYr2C,EAAU,IAAK5wK,KAAK6zP,SAEzDhxC,EAAS7iN,KAAKwsN,QACL,IAAX3J,IACFmE,GAAW,QAAWA,EAAUnE,EAAQ7iN,KAAK6zP,SAC7CxuC,GAAa,QAAOA,EAAY3kC,EAAiBmiC,EAAQwC,IAGzC,GAAdvpG,IACFkrG,GAAW,QAAUA,EAAUlrG,EAAY97G,KAAK6zP,UAGlD,IAAMC,EAAa,CACjB,QAAW,MACX,QAAWlB,EACX,QAAW,SACX,OAAU,YACV,aAAe,GAIjB,OAFA,QAAOkB,EAAY9zP,KAAKizP,SAEjBjzP,KAAK+zP,eACVnjF,EACAo2C,EACA3B,EACAvpG,EACAo2D,EACA4hF,KAGN,EA7YA,CAAsBW,EAAA,8lBG/BtB,cAIE,WAAYh3P,GAAZ,MACE,YAAM,CACJwiM,aAAcxiM,EAAQwiM,aACtBiwD,wBAAyBzyP,EAAQyyP,wBACjCh+E,WAAYz0K,EAAQy0K,WACpBhqI,MAAOzqC,EAAQyqC,MACf04J,MAAOnjM,EAAQmjM,MACftmH,YAAa78E,EAAQ68E,eACrB,YAKF,EAAKijD,GAKL,EAAKpsG,KAKL,EAAK66I,GAML,EAAK0oF,aAA6Bz2P,IAAnBR,EAAQ0yP,QAAuB1yP,EAAQ0yP,OAMtD,EAAK7jC,qBACwBruN,IAA3BR,EAAQ8uN,eAA+B9uN,EAAQ8uN,eAAiB,EAKlE,EAAK/F,cAAgCvoN,IAArBR,EAAQ+oN,SAAyB/oN,EAAQ+oN,SAAW,KAGhE,EAAKA,WACP,QAAO,EAAKA,SAASS,YAAY,EAAKT,SAASluB,cAFhC,CAAC,IAAK,MASvB,EAAKo5D,UAAY,IAAIiD,EAAA,EAAUl3P,EAAQo/L,WAAa,GAMpD,EAAKg3D,QAAU,CAAC,EAAG,GAMnB,EAAKe,KAAOn3P,EAAQoG,KAAO,GAM3B,EAAKwuP,YAAc,CACjBj3M,WAAY39C,EAAQ29C,WACpBk/B,YAAa78E,EAAQ68E,aAUvB,EAAKotI,WAAajqN,EAAQiqN,WAAajqN,EAAQiqN,WAAa,IAyOhE,OA/TyB,OA4FvB,YAAAh4B,eAAA,WACE,OAAO1vL,KAAK0xP,UAAUhiE,kBAOxB,YAAAD,YAAA,SAAYvd,EAAY2Q,GACtB,IAAM6uE,EAAY1xP,KAAK4xP,0BAA0B1/E,GAC7Cw/E,GACFA,EAAUjiE,YAAY5M,IAa1B,YAAAkhE,kBAAA,SAAkB7xE,EAAYpgH,EAAGk+H,EAAWx0K,GAC1C,IAAMk2O,EAAY1xP,KAAK4xP,0BAA0B1/E,GACjD,IAAKw/E,EACH,OAAO,EAKT,IAFA,IACI53E,EAAMkhD,EAActrD,EADpBysD,GAAU,EAEL7nL,EAAI07I,EAAUvqI,KAAMnR,GAAK07I,EAAU1qI,OAAQhR,EAClD,IAAK,IAAIC,EAAIy7I,EAAUrqI,KAAMpR,GAAKy7I,EAAUzqI,OAAQhR,EAClDymL,GAAe,QAAUlpK,EAAGxd,EAAGC,GAC/Bm7H,GAAS,EACLgiF,EAAUh3B,YAAYM,KAIxBtrD,GAHAoK,EACE43E,EAAUx3O,IAAI8gN,IAEF9rD,aAAe6K,EAAA,YAE3BrK,GAA4B,IAAnBl0J,EAASs+J,IAGjBpK,IACHysD,GAAU,GAIhB,OAAOA,GAOT,YAAA7B,uBAAA,SAAuBpoD,GACrB,OAAO,GAOT,YAAAqH,OAAA,WACE,OAAOv5K,KAAK40P,MAQd,YAAApB,OAAA,SAAO3vP,GACD7D,KAAK40P,OAAS/wP,IAChB7D,KAAK40P,KAAO/wP,EACZ7D,KAAKmpD,YAQT,YAAAm8L,UAAA,SAAUpzE,GACR,OAAOlyK,KAAK00P,SAMd,YAAAj8D,eAAA,WACE,OAAKz4L,KAAKwmN,SAGHxmN,KAAKwmN,SAAS/tB,iBAFZ,MAcX,YAAA0rB,QAAA,SAAQryJ,EAAGxd,EAAGC,EAAGunE,EAAYo2D,GAC3B,OAAO,WAQT,YAAAkzC,YAAA,WACE,OAAOplN,KAAKwmN,UAOd,YAAAlB,yBAAA,SAAyBpzC,GACvB,OAAKlyK,KAAKwmN,SAGDxmN,KAAKwmN,UAFL,QAAyBt0C,IAWpC,YAAA0/E,0BAAA,SAA0B1/E,GAKxB,OAJA,QACE,QAAWlyK,KAAKw/K,gBAAiBtN,GACjC,IAEKlyK,KAAK0xP,WAUd,YAAAr3B,kBAAA,SAAkBv+G,GAChB,OAAO97G,KAAKssN,iBASd,YAAAhE,iBAAA,SAAiBx2J,EAAGgqD,EAAYo2D,GAC9B,IAAMs0C,EAAWxmN,KAAKslN,yBAAyBpzC,GACzCq6C,EAAiBvsN,KAAKq6N,kBAAkBv+G,GACxCkrG,GAAW,QAAOR,EAASS,YAAYn1J,GAAI9xD,KAAK6zP,SACtD,OAAsB,GAAlBtnC,EACKvF,GAEA,QAAUA,EAAUuF,EAAgBvsN,KAAK6zP,UAapD,YAAA1B,+BAAA,SAA+BvhF,EAAW6zD,GACxC,IAAMvyD,OACej0K,IAAnBwmO,EAA+BA,EAAiBzkO,KAAKw/K,gBACjDgnC,EAAWxmN,KAAKslN,yBAAyBpzC,GAI/C,OAHIlyK,KAAKgzK,YAAcd,EAAWkiB,aAChCxjB,GAAY,QAAM41C,EAAU51C,EAAWsB,KAElC,QAAiBtB,EAAW41C,GAAY51C,EAAY,MAO7D,YAAAhmJ,MAAA,WACE5qB,KAAK0xP,UAAU9mO,SAGjB,YAAAykO,QAAA,WACErvP,KAAK4qB,QACL,YAAMykO,QAAO,YAQf,YAAA3I,gBAAA,SAAgBF,EAAWt0E,GACzB,IAAMw/E,EAAY1xP,KAAK4xP,0BAA0B1/E,GAC7Cs0E,EAAYkL,EAAUM,gBACxBN,EAAUM,cAAgBxL,IAY9B,YAAAC,QAAA,SAAQ30L,EAAGxd,EAAGC,EAAG29H,KACnB,EA/TA,CAAyB2iF,EAAA,GAsUzB,cAKE,WAAYx2P,EAAMy7K,GAAlB,MACE,YAAMz7K,IAAK,YAOX,EAAKy7K,KAAOA,IAEhB,OAfqC,OAerC,EAfA,CAAqC/4I,EAAA,IAiBrC,wBC/XO,SAAS+zN,EAAmBC,EAAUvuC,GAC3C,IAAMwuC,EAAS,SACTC,EAAS,SACTC,EAAS,SACTC,EAAa,UACnB,OAAO,SAOKvkF,EAAW90D,EAAYo2D,GAC/B,OAAKtB,EAGImkF,EACJzvP,QAAQ0vP,EAAQpkF,EAAU,GAAG9wK,YAC7BwF,QAAQ2vP,EAAQrkF,EAAU,GAAG9wK,YAC7BwF,QAAQ4vP,EAAQtkF,EAAU,GAAG9wK,YAC7BwF,QAAQ6vP,GAAY,WACnB,IAAMrjM,EAAI8+G,EAAU,GACd94H,EAAQ0uK,EAAS4uC,iBAAiBtjM,GAGxC,OAFA,OAAOha,EAAO,KACJA,EAAMo4I,YAActf,EAAU,GAAK,GACpC9wK,mBAXb,ieC4MR,QAhMA,YAIE,WAAYrC,GAAZ,MACE,YAAM,CACJwiM,aAAcxiM,EAAQwiM,aACtBpD,UAAWp/L,EAAQo/L,UACnBszD,OAAQ1yP,EAAQ0yP,OAChBj+E,WAAYz0K,EAAQy0K,WACpBhqI,MAAOzqC,EAAQyqC,MACfs+K,SAAU/oN,EAAQ+oN,SAClB+F,eAAgB9uN,EAAQ8uN,eACxB3rB,MAAOnjM,EAAQmjM,MACfxlJ,WAAY39C,EAAQ29C,WACpBk/B,YAAa78E,EAAQ68E,YACrBz2E,IAAKpG,EAAQoG,IACbqsP,wBAAyBzyP,EAAQyyP,wBACjCxoC,WAAYjqN,EAAQiqN,cACpB,YAMF,EAAK2tC,yBACH,EAAKlE,kBAAoBmE,EAAQz1P,UAAUsxP,gBAM7C,EAAKtgF,iBAAmBpzK,EAAQozK,iBAE5BpzK,EAAQ0zP,kBACV,EAAKA,gBAAkB1zP,EAAQ0zP,iBAOjC,EAAKC,KAAO,KAER3zP,EAAQ2zP,KACV,EAAKmE,QAAQ93P,EAAQ2zP,MACZ3zP,EAAQsB,KACjB,EAAKy2P,OAAO/3P,EAAQsB,KAOtB,EAAK02P,iBAAmB,KAwI5B,OA9LsB,OA8DpB,YAAAC,oBAAA,WACE,OAAO11P,KAAK6wK,kBAQd,YAAA8kF,mBAAA,WACE,OAAO15P,OAAOkJ,eAAenF,MAAMmxP,kBAAoBnxP,KAAKmxP,gBACxDnxP,KAAKmxP,gBAAgBl6O,KAAKjX,MAC1BA,KAAKmxP,iBAUX,YAAAyE,QAAA,WACE,OAAO51P,KAAKoxP,MAQd,YAAA33E,iBAAA,SAAiBv8K,GACf,IAGImB,EAHEy7K,EAAoD58K,EAAY,OAChEw9F,GAAM,QAAOo/E,GACbmgD,EAAYngD,EAAK5K,WAEnB+qD,GAAalgD,EAAA,WACf/5K,KAAKy1P,iBAAiB/6J,IAAO,EAC7Br8F,EC7HW,iBD8HFq8F,KAAO16F,KAAKy1P,0BACdz1P,KAAKy1P,iBAAiB/6J,GAC7Br8F,EACE47N,GAAalgD,EAAA,QClHJ,gBDoHLkgD,GAAalgD,EAAA,SC3HV,mBD6HH97K,GAEIA,MAARI,GACF2B,KAAKopH,cAAc,IAAIysI,EAAgBx3P,EAAMy7K,KASjD,YAAAg8E,oBAAA,SAAoBjlF,GAClB7wK,KAAK0xP,UAAU9mO,QACf5qB,KAAK6wK,iBAAmBA,EACxB7wK,KAAKmpD,WASP,YAAA4sM,mBAAA,SAAmB5E,EAAiBttP,GAClC7D,KAAKmxP,gBAAkBA,EACvBnxP,KAAK0xP,UAAU9hE,0BACI,IAAR/rL,EACT7D,KAAKwzP,OAAO3vP,GAEZ7D,KAAKmpD,WAST,YAAAqsM,OAAA,SAAOz2P,GACL,IAAMqyP,EDvFH,SAAmBryP,GACxB,IAAMqyP,EAAO,GACTrvP,EAAQ,sBAAsBC,KAAKjD,GACvC,GAAIgD,EAAO,CAET,IAAMi0P,EAAgBj0P,EAAM,GAAGwkI,WAAW,GACpC0vH,EAAel0P,EAAM,GAAGwkI,WAAW,GACrCujD,OAAQ,EACZ,IAAKA,EAAWksE,EAAelsE,GAAYmsE,IAAgBnsE,EACzDsnE,EAAKhtP,KAAKrF,EAAIuG,QAAQvD,EAAM,GAAImD,OAAOkgI,aAAa0kD,KAEtD,OAAOsnE,EAGT,GADArvP,EAAQ,kBAAkBC,KAAKjD,GACpB,CAGT,IADA,IAAM,EAAO6D,SAASb,EAAM,GAAI,IACvBzC,EAAIsD,SAASb,EAAM,GAAI,IAAKzC,GAAK,EAAMA,IAC9C8xP,EAAKhtP,KAAKrF,EAAIuG,QAAQvD,EAAM,GAAIzC,EAAEQ,aAEpC,OAAOsxP,EAGT,OADAA,EAAKhtP,KAAKrF,GACHqyP,ECgEQ8E,CAAUn3P,GACvBiB,KAAKoxP,KAAOA,EACZpxP,KAAKu1P,QAAQnE,IAQf,YAAAmE,QAAA,SAAQnE,GACNpxP,KAAKoxP,KAAOA,EACZ,IAAMvtP,EAAMutP,EAAKhvP,KAAK,MAClBpC,KAAKq1P,yBACPr1P,KAAK+1P,mBDvJJ,SAA6BI,EAAW3vC,GAG7C,IAFA,IAAMjqL,EAAM45N,EAAU33P,OAChB43P,EAAmB,IAAI91P,MAAMi8B,GAC1Bj9B,EAAI,EAAGA,EAAIi9B,IAAOj9B,EACzB82P,EAAiB92P,GAAKw1P,EAAmBqB,EAAU72P,GAAIknN,GAEzD,OAOK,SAAoC4vC,GACzC,OAAgC,IAA5BA,EAAiB53P,OACZ43P,EAAiB,GAEnB,SAOKxlF,EAAW90D,EAAYo2D,GAC/B,GAAKtB,EAEE,CACL,IAAMpgH,GAAI,QAAcogH,GAClBplJ,GAAQ,QAAOglC,EAAG4lM,EAAiB53P,QACzC,OAAO43P,EAAiB5qO,GAAOolJ,EAAW90D,EAAYo2D,KAxBrDmkF,CAA2BD,GCiJNE,CAAoBlF,EAAMpxP,KAAKwmN,UAAW3iN,GAElE7D,KAAKwzP,OAAO3vP,IAUhB,YAAAstP,gBAAA,SAAgBvgF,EAAW90D,EAAYo2D,KAUvC,YAAAu0E,QAAA,SAAQ30L,EAAGxd,EAAGC,GACZ,IAAMymL,GAAe,QAAUlpK,EAAGxd,EAAGC,GACjCv0C,KAAK0xP,UAAUh3B,YAAYM,IAC7Bh7N,KAAK0xP,UAAUx3O,IAAI8gN,IAGzB,EA9LA,CAAsBhS,+IE2LtB,QAzMA,WAIE,WAAYutC,GAIVv2P,KAAKw2P,OAAS,IAAI,EAAOD,GAQzBv2P,KAAKy2P,OAAS,GAuLlB,OA/KE,YAAAzuH,OAAA,SAAO0mC,EAAQvyK,GAEb,IAAM2S,EAAO,CACX22C,KAAMipH,EAAO,GACb/oH,KAAM+oH,EAAO,GACbppH,KAAMopH,EAAO,GACbnpH,KAAMmpH,EAAO,GACbvyK,MAAOA,GAGT6D,KAAKw2P,OAAOxuH,OAAOl5H,GACnB9O,KAAKy2P,QAAO,QAAOt6P,IAAU2S,GAQ/B,YAAAi5H,KAAA,SAAK2uH,EAASt4P,GAEZ,IADA,IAAMsQ,EAAQ,IAAIpO,MAAMlC,EAAOI,QACtBc,EAAI,EAAGwxB,EAAI1yB,EAAOI,OAAQc,EAAIwxB,EAAGxxB,IAAK,CAC7C,IAAMovK,EAASgoF,EAAQp3P,GACjBnD,EAAQiC,EAAOkB,GAGfwP,EAAO,CACX22C,KAAMipH,EAAO,GACb/oH,KAAM+oH,EAAO,GACbppH,KAAMopH,EAAO,GACbnpH,KAAMmpH,EAAO,GACbvyK,MAAOA,GAETuS,EAAMpP,GAAKwP,EACX9O,KAAKy2P,QAAO,QAAOt6P,IAAU2S,EAE/B9O,KAAKw2P,OAAOzuH,KAAKr5H,IAQnB,YAAA8F,OAAA,SAAOrY,GACL,IAAMu+F,GAAM,QAAOv+F,GAIb2S,EAAO9O,KAAKy2P,OAAO/7J,GAEzB,cADO16F,KAAKy2P,OAAO/7J,GACiB,OAA7B16F,KAAKw2P,OAAOhiP,OAAO1F,IAQ5B,YAAA9G,OAAA,SAAO0mK,EAAQvyK,GACb,IAAM2S,EAAO9O,KAAKy2P,QAAO,QAAOt6P,IAC1Bk4P,EAAO,CAACvlP,EAAK22C,KAAM32C,EAAK62C,KAAM72C,EAAKw2C,KAAMx2C,EAAKy2C,OAC/C,QAAO8uM,EAAM3lF,KAChB1uK,KAAKwU,OAAOrY,GACZ6D,KAAKgoI,OAAO0mC,EAAQvyK,KAQxB,YAAAw6P,OAAA,WAEE,OADc32P,KAAKw2P,OAAOphP,MACblM,KAAI,SAAU4F,GACzB,OAAOA,EAAK3S,UAShB,YAAAy6P,YAAA,SAAYloF,GAEV,IAAM2lF,EAAO,CACX5uM,KAAMipH,EAAO,GACb/oH,KAAM+oH,EAAO,GACbppH,KAAMopH,EAAO,GACbnpH,KAAMmpH,EAAO,IAGf,OADc1uK,KAAKw2P,OAAO5uH,OAAOysH,GACpBnrP,KAAI,SAAU4F,GACzB,OAAOA,EAAK3S,UAWhB,YAAAqG,QAAA,SAAQgZ,GACN,OAAOxb,KAAK62P,SAAS72P,KAAK22P,SAAUn7O,IAStC,YAAAs7O,gBAAA,SAAgBpoF,EAAQlzJ,GACtB,OAAOxb,KAAK62P,SAAS72P,KAAK42P,YAAYloF,GAASlzJ,IASjD,YAAAq7O,SAAA,SAASz4P,EAAQod,GAEf,IADA,IAAIrU,EACK7H,EAAI,EAAGwxB,EAAI1yB,EAAOI,OAAQc,EAAIwxB,EAAGxxB,IAExC,GADA6H,EAASqU,EAASpd,EAAOkB,IAEvB,OAAO6H,EAGX,OAAOA,GAMT,YAAA0xK,QAAA,WACE,OAAO,QAAQ74K,KAAKy2P,SAMtB,YAAA7rO,MAAA,WACE5qB,KAAKw2P,OAAO5rO,QACZ5qB,KAAKy2P,OAAS,IAOhB,YAAA3nF,UAAA,SAAU+1B,GACR,IAAMp5L,EAAOzL,KAAKw2P,OAAO9xP,SACzB,OAAO,QACL+G,EAAKg6C,KACLh6C,EAAKk6C,KACLl6C,EAAK65C,KACL75C,EAAK85C,KACLs/I,IAOJ,YAAAl5K,OAAA,SAAOorO,GAEL,IAAK,IAAMz3P,KADXU,KAAKw2P,OAAOzuH,KAAKgvH,EAAMP,OAAOphP,OACd2hP,EAAMN,OACpBz2P,KAAKy2P,OAAOn3P,GAAKy3P,EAAMN,OAAOn3P,IAGpC,EAvMA,2BCjBA,QAMc,aANd,EA4BiB,8BCtBV,SAAS,EAAIovK,EAAQC,GAC1B,MAAO,CAAC,EAAC,KAAW,IAAWn9I,EAAAA,EAAUA,EAAAA,6fCwB3C,cAME,WAAYnzB,EAAM24P,EAAaC,GAA/B,MACE,YAAM54P,IAAK,YAOX,EAAK4zK,QAAU+kF,EAOf,EAAKl4E,SAAWm4E,IAEpB,OAvBuC,OAuBvC,EAvBA,CAAuCl2N,EAAA,IAwIvC,cAIE,WAAYgrI,GAAZ,WACQtuK,EAAUsuK,GAAe,MAE/B,YAAM,CACJk0B,aAAcxiM,EAAQwiM,aACtB3lH,aAAa,EACb43F,gBAAYj0K,EACZiqC,MAAO,UACP04J,WAAyB3iM,IAAlBR,EAAQmjM,OAAsBnjM,EAAQmjM,SAC7C,MAKGrjE,GAKL,EAAKpsG,KAKL,EAAK66I,GAML,EAAK28C,QAAU,KAMf,EAAKuuC,QAAUz5P,EAAQsuD,OAMvB,EAAKytL,eAAiCv7O,IAArBR,EAAQi2O,UAAgCj2O,EAAQi2O,SAMjE,EAAKyjB,KAAO15P,EAAQsB,SAEGd,IAAnBR,EAAQmrN,OACV,EAAKD,QAAUlrN,EAAQmrN,YACA3qN,IAAd,EAAKk5P,QACd,OAAO,EAAKD,QAAS,GAErB,EAAKvuC,SAAU,QACb,EAAKwuC,KACkD,EAAY,UAQvE,EAAKC,eACkBn5P,IAArBR,EAAQ43I,SAAyB53I,EAAQ43I,SAAW,EAEtD,IAqDIuqC,EAAYd,EArDVu4E,OACwBp5P,IAA5BR,EAAQ45P,iBAAgC55P,EAAQ45P,uBAMlD,EAAKC,eAAiBD,EAAkB,IAAI,EAAU,KAMtD,EAAKE,oBAAsB,IAAI,EAM/B,EAAKC,qBAAuB,EAM5B,EAAKC,sBAAwB,GAO7B,EAAKC,SAAW,GAOhB,EAAKC,UAAY,GAMjB,EAAKC,mBAAqB,GAM1B,EAAKC,oBAAsB,KAGvBv3P,MAAMiF,QAAQ9H,EAAQqhL,UACxBA,EAEIrhL,EAAgB,SAEXA,EAAQqhL,WAKjBA,GAJAc,EAEIniL,EAAgB,UAEEgvK,YAEnB4qF,QAAkCp5P,IAAf2hL,IACtBA,EAAa,IAAI1E,EAAA,EAAW4D,SAEb7gL,IAAb6gL,GACF,EAAKg5E,oBAAoBh5E,QAER7gL,IAAf2hL,GACF,EAAKm4E,wBAAwBn4E,KAoyBnC,OAr7B2B,OAiKzB,YAAAo4E,WAAA,SAAW/lF,GACTjyK,KAAKi4P,mBAAmBhmF,GACxBjyK,KAAKmpD,WAQP,YAAA8uM,mBAAA,SAAmBhmF,GACjB,IAAMimF,GAAa,QAAOjmF,GAE1B,GAAKjyK,KAAKm4P,YAAYD,EAAYjmF,GAAlC,CAOAjyK,KAAKo4P,mBAAmBF,EAAYjmF,GAEpC,IAAMtrD,EAAWsrD,EAAQ9D,cACzB,GAAIxnD,EAAU,CACZ,IAAM+nD,EAAS/nD,EAASmoD,YACpB9uK,KAAKs3P,gBACPt3P,KAAKs3P,eAAetvH,OAAO0mC,EAAQuD,QAGrCjyK,KAAKy3P,sBAAsBS,GAAcjmF,EAG3CjyK,KAAKopH,cACH,IAAIivI,EAAkBC,EAA4BrmF,SAnB9CjyK,KAAK63P,qBACP73P,KAAK63P,oBAAoBrjP,OAAOy9J,IA2BtC,YAAAmmF,mBAAA,SAAmBF,EAAYjmF,GAC7BjyK,KAAK43P,mBAAmBM,GAAc,EACpC,QAAOjmF,EAASpD,EAAA,SAAkB7uK,KAAKu4P,qBAAsBv4P,OAC7D,QACEiyK,EACAyB,EAAA,iBACA1zK,KAAKu4P,qBACLv4P,QAYN,YAAAm4P,YAAA,SAAYD,EAAYjmF,GACtB,IAAI5lI,GAAQ,EACNvvC,EAAKm1K,EAAQ7D,QAYnB,YAXWnwK,IAAPnB,IACIA,EAAGgD,aAAcE,KAAK03P,SAG1BrrN,GAAQ,EAFRrsC,KAAK03P,SAAS56P,EAAGgD,YAAcmyK,GAK/B5lI,KACF,SAAS6rN,KAAcl4P,KAAK23P,WAAY,IACxC33P,KAAK23P,UAAUO,GAAcjmF,GAExB5lI,GAQT,YAAAq8J,YAAA,SAAY5pB,GACV9+K,KAAK83P,oBAAoBh5E,GACzB9+K,KAAKmpD,WAQP,YAAA2uM,oBAAA,SAAoBh5E,GAKlB,IAJA,IAAM43E,EAAU,GACV8B,EAAc,GACdC,EAAmB,GAEhBn5P,EAAI,EAAG,EAASw/K,EAAStgL,OAAQc,EAAI,EAAQA,IAAK,CACzD,IAAM2yK,EAAU6M,EAASx/K,GACnB44P,GAAa,QAAOjmF,GACtBjyK,KAAKm4P,YAAYD,EAAYjmF,IAC/BumF,EAAYp0P,KAAK6tK,GAIZ3yK,EAAI,EAAb,IAAK,IAAW,EAASk5P,EAAYh6P,OAAQc,EAAI,EAAQA,IAAK,CACtD2yK,EAAUumF,EAAYl5P,GACtB44P,GAAa,QAAOjmF,GAC1BjyK,KAAKo4P,mBAAmBF,EAAYjmF,GAEpC,IAAMtrD,EAAWsrD,EAAQ9D,cACzB,GAAIxnD,EAAU,CACZ,IAAM+nD,EAAS/nD,EAASmoD,YACxB4nF,EAAQtyP,KAAKsqK,GACb+pF,EAAiBr0P,KAAK6tK,QAEtBjyK,KAAKy3P,sBAAsBS,GAAcjmF,EAO7C,GAJIjyK,KAAKs3P,gBACPt3P,KAAKs3P,eAAevvH,KAAK2uH,EAAS+B,GAGhCz4P,KAAKi0K,YAAYqkF,GACd,CAAIh5P,EAAI,EAAb,IAAK,IAAW,EAASk5P,EAAYh6P,OAAQc,EAAI,EAAQA,IACvDU,KAAKopH,cACH,IAAIivI,EAAkBC,EAA4BE,EAAYl5P,OAUtE,YAAAy4P,wBAAA,SAAwBn4E,GACtB,IAAI84E,GAAsB,EAC1B14P,KAAKiY,iBACHqgP,GAIA,SAAUntP,GACHutP,IACHA,GAAsB,EACtB94E,EAAWx7K,KAAK+G,EAAI8mK,SACpBymF,GAAsB,MAI5B14P,KAAKiY,iBACHqgP,GAIA,SAAUntP,GACHutP,IACHA,GAAsB,EACtB94E,EAAWprK,OAAOrJ,EAAI8mK,SACtBymF,GAAsB,MAI5B94E,EAAW3nK,iBACT0lK,EAAA,MAIA,SAAUxyK,GACHutP,IACHA,GAAsB,EACtB14P,KAAKg4P,WAED7sP,EAAW,SAGfutP,GAAsB,IAExBzhP,KAAKjX,OAET4/K,EAAW3nK,iBACT0lK,EAAA,SAIA,SAAUxyK,GACHutP,IACHA,GAAsB,EACtB14P,KAAK24P,cAEDxtP,EAAW,SAGfutP,GAAsB,IAExBzhP,KAAKjX,OAETA,KAAK63P,oBAAsBj4E,GAQ7B,YAAAh1J,MAAA,SAAM2kO,GACJ,GAAIA,EAAU,CACZ,IAAK,IAAMqJ,KAAa54P,KAAK43P,mBACd53P,KAAK43P,mBAAmBgB,GAChCp2P,QAAQ,MAEVxC,KAAK63P,sBACR73P,KAAK43P,mBAAqB,GAC1B53P,KAAK03P,SAAW,GAChB13P,KAAK23P,UAAY,SAGnB,GAAI33P,KAAKs3P,eAAgB,CACvB,IAAMuB,EAAwB,SAAU5mF,GACtCjyK,KAAK84P,sBAAsB7mF,IAC3Bh7J,KAAKjX,MAEP,IAAK,IAAMlD,KADXkD,KAAKs3P,eAAe90P,QAAQq2P,GACX74P,KAAKy3P,sBACpBz3P,KAAK84P,sBAAsB94P,KAAKy3P,sBAAsB36P,IAIxDkD,KAAK63P,qBACP73P,KAAK63P,oBAAoBjtO,QAGvB5qB,KAAKs3P,gBACPt3P,KAAKs3P,eAAe1sO,QAEtB5qB,KAAKy3P,sBAAwB,GAE7B,IAAMsB,EAAa,IAAIV,EFliBlB,SEmiBLr4P,KAAKopH,cAAc2vI,GACnB/4P,KAAKmpD,WAeP,YAAA6vM,eAAA,SAAex9O,GACb,GAAIxb,KAAKs3P,eACP,OAAOt3P,KAAKs3P,eAAe90P,QAAQgZ,GAC1Bxb,KAAK63P,qBACd73P,KAAK63P,oBAAoBr1P,QAAQgZ,IAgBrC,YAAAy9O,iCAAA,SAAiCtnF,EAAYn2J,GAC3C,IAAMkzJ,EAAS,CAACiD,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,IACxE,OAAO3xK,KAAKk5P,uBAAuBxqF,GAAQ,SAAUuD,GAEnD,OADiBA,EAAQ9D,cACZgmC,qBAAqBxiC,GACzBn2J,EAASy2J,QAEhB,MAwBN,YAAAinF,uBAAA,SAAuBxqF,EAAQlzJ,GAC7B,GAAIxb,KAAKs3P,eACP,OAAOt3P,KAAKs3P,eAAeR,gBAAgBpoF,EAAQlzJ,GAC1Cxb,KAAK63P,qBACd73P,KAAK63P,oBAAoBr1P,QAAQgZ,IAmBrC,YAAA29O,iCAAA,SAAiCzqF,EAAQlzJ,GACvC,OAAOxb,KAAKk5P,uBACVxqF,GAKA,SAAUuD,GAER,GADiBA,EAAQ9D,cACZk9B,iBAAiB38B,GAAS,CACrC,IAAMvnK,EAASqU,EAASy2J,GACxB,GAAI9qK,EACF,OAAOA,OAcjB,YAAAiyP,sBAAA,WACE,OAAOp5P,KAAK63P,qBASd,YAAAl7C,YAAA,WACE,IAAI79B,EASJ,OARI9+K,KAAK63P,oBACP/4E,EAAW9+K,KAAK63P,oBAAoBprF,WAAWtqK,MAAM,GAC5CnC,KAAKs3P,iBACdx4E,EAAW9+K,KAAKs3P,eAAeX,UAC1B,QAAQ32P,KAAKy3P,yBAChB,QAAO34E,GAAU,QAAU9+K,KAAKy3P,yBAGmC,GAWzE,YAAA4B,wBAAA,SAAwB1nF,GACtB,IAAMmN,EAAW,GAIjB,OAHA9+K,KAAKi5P,iCAAiCtnF,GAAY,SAAUM,GAC1D6M,EAAS16K,KAAK6tK,MAET6M,GAeT,YAAAskC,oBAAA,SAAoB10C,GAClB,OAAI1uK,KAAKs3P,eACAt3P,KAAKs3P,eAAeV,YAAYloF,GAC9B1uK,KAAK63P,oBACP73P,KAAK63P,oBAAoBprF,WAAWtqK,MAAM,GAE1C,IAgBX,YAAAm3P,8BAAA,SAA8B3nF,EAAY4nF,GAQxC,IAAMjlN,EAAIq9H,EAAW,GACfp9H,EAAIo9H,EAAW,GACjB6nF,EAAiB,KACf/uD,EAAe,CAACzyJ,IAAKA,KACvB0yJ,EAAqBl5K,EAAAA,EACnBk9I,EAAS,EAAC,KAAW,IAAWl9I,EAAAA,EAAUA,EAAAA,GAC1CzoB,EAASwwP,GAA0B,KA+BzC,OA9BAv5P,KAAKs3P,eAAeR,gBAClBpoF,GAIA,SAAUuD,GACR,GAAIlpK,EAAOkpK,GAAU,CACnB,IAAMtrD,EAAWsrD,EAAQ9D,cACnBsrF,EAA6B/uD,EAOnC,IANAA,EAAqB/jF,EAAS6jF,eAC5Bl2J,EACAC,EACAk2J,EACAC,IAEuB+uD,EAA4B,CACnDD,EAAiBvnF,EAKjB,IAAM9jH,EAAclhD,KAAK+gD,KAAK08I,GAC9Bh8B,EAAO,GAAKp6H,EAAI6Z,EAChBugH,EAAO,GAAKn6H,EAAI4Z,EAChBugH,EAAO,GAAKp6H,EAAI6Z,EAChBugH,EAAO,GAAKn6H,EAAI4Z,OAKjBqrM,GAaT,YAAA1qF,UAAA,SAAU+1B,GACR,OAAO7kM,KAAKs3P,eAAexoF,UAAU+1B,IAYvC,YAAA60D,eAAA,SAAe58P,GACb,IAAMm1K,EAAUjyK,KAAK03P,SAAS56P,EAAGgD,YACjC,YAAmB7B,IAAZg0K,EAAwBA,EAAU,MAS3C,YAAA0nF,gBAAA,SAAgBj/J,GACd,IAAMu3E,EAAUjyK,KAAK23P,UAAUj9J,GAC/B,YAAmBz8F,IAAZg0K,EAAwBA,EAAU,MAS3C,YAAA2nF,UAAA,WACE,OAAO55P,KAAKk3P,SAMd,YAAA3zC,YAAA,WACE,OAAOvjN,KAAKw5O,WASd,YAAAv2E,OAAA,WACE,OAAOjjK,KAAKm3P,MAOd,YAAAoB,qBAAA,SAAqBr7P,GACnB,IAAM+0K,EACJ/0K,EAAY,OAERg7P,GAAa,QAAOjmF,GACpBtrD,EAAWsrD,EAAQ9D,cACzB,GAAKxnD,EAOE,CACL,IAAM+nD,EAAS/nD,EAASmoD,YACpBopF,KAAcl4P,KAAKy3P,8BACdz3P,KAAKy3P,sBAAsBS,GAC9Bl4P,KAAKs3P,gBACPt3P,KAAKs3P,eAAetvH,OAAO0mC,EAAQuD,IAGjCjyK,KAAKs3P,gBACPt3P,KAAKs3P,eAAetvP,OAAO0mK,EAAQuD,QAfjCimF,KAAcl4P,KAAKy3P,wBACnBz3P,KAAKs3P,gBACPt3P,KAAKs3P,eAAe9iP,OAAOy9J,GAE7BjyK,KAAKy3P,sBAAsBS,GAAcjmF,GAe7C,IAAMn1K,EAAKm1K,EAAQ7D,QACnB,QAAWnwK,IAAPnB,EAAkB,CACpB,IAAM8nB,EAAM9nB,EAAGgD,WACXE,KAAK03P,SAAS9yO,KAASqtJ,IACzBjyK,KAAK65P,mBAAmB5nF,GACxBjyK,KAAK03P,SAAS9yO,GAAOqtJ,QAGvBjyK,KAAK65P,mBAAmB5nF,GACxBjyK,KAAK23P,UAAUO,GAAcjmF,EAE/BjyK,KAAKmpD,UACLnpD,KAAKopH,cACH,IAAIivI,EFp4BO,gBEo4B0CpmF,KAUzD,YAAA6nF,WAAA,SAAW7nF,GACT,IAAMn1K,EAAKm1K,EAAQ7D,QACnB,YAAWnwK,IAAPnB,EACKA,KAAMkD,KAAK03P,UAEX,QAAOzlF,KAAYjyK,KAAK23P,WAOnC,YAAA9+E,QAAA,WACE,OAAI74K,KAAKs3P,eAELt3P,KAAKs3P,eAAez+E,YAAa,QAAQ74K,KAAKy3P,wBAG9Cz3P,KAAK63P,qBACyC,IAAzC73P,KAAK63P,oBAAoBtrF,aAUpC,YAAA02C,aAAA,SAAav0C,EAAQC,EAAYuD,GAG/B,IAFA,IAAM6nF,EAAqB/5P,KAAKu3P,oBAC1ByC,EAAgBh6P,KAAKo3P,UAAU1oF,EAAQC,EAAYuD,cAChD5yK,EAAO8sK,GACd,IAAM6tF,EAAeD,EAAc16P,GACby6P,EAAmBjD,gBACvCmD,GAKA,SAAU32P,GACR,OAAO,QAAeA,EAAOorK,OAAQurF,UAIrC,EAAKzC,qBACP,EAAKpuI,cACH,IAAIivI,EFv6BO,sBEy6Bb,EAAK1vC,QAAQhoN,KAAK,EAEhBs5P,EACAtrF,EACAuD,EACA,SAAU4M,KACN9+K,KAAKw3P,qBACPx3P,KAAKopH,cACH,IAAIivI,EF16BC,uBE46BHp6P,EACA6gL,KAGJ7nK,KAAK,GACP,aACIjX,KAAKw3P,qBACPx3P,KAAKopH,cACH,IAAIivI,EF76BG,uBE+6BTphP,KAAK,IAET8iP,EAAmB/xH,OAAOiyH,EAAc,CAACvrF,OAAQurF,EAAa93P,mBAvCzD7C,EAAI,EAAG8sK,EAAK4tF,EAAcx7P,OAAQc,EAAI8sK,IAAM9sK,IAA5CA,GA0CTU,KAAK28J,UACH38J,KAAK2oN,QAAQnqN,OAAS,IAAYwB,KAAKw3P,qBAAuB,GAGlE,YAAAnI,QAAA,WACErvP,KAAK4qB,OAAM,GACX5qB,KAAKu3P,oBAAoB3sO,QACzB,YAAMykO,QAAO,YAQf,YAAA6K,mBAAA,SAAmBxrF,GACjB,IACInuK,EADEw5P,EAAqB/5P,KAAKu3P,oBAEhCwC,EAAmBjD,gBAAgBpoF,GAAQ,SAAUprK,GACnD,IAAI,QAAOA,EAAOorK,OAAQA,GAExB,OADAnuK,EAAM+C,GACC,KAGP/C,GACFw5P,EAAmBvlP,OAAOjU,IAW9B,YAAAo4P,cAAA,SAAc1mF,GACZ,GAAKA,EAAL,CAGA,IAAMimF,GAAa,QAAOjmF,GACtBimF,KAAcl4P,KAAKy3P,6BACdz3P,KAAKy3P,sBAAsBS,GAE9Bl4P,KAAKs3P,gBACPt3P,KAAKs3P,eAAe9iP,OAAOy9J,GAGhBjyK,KAAK84P,sBAAsB7mF,IAExCjyK,KAAKmpD,YAWT,YAAA2vM,sBAAA,SAAsB7mF,GACpB,IAAMimF,GAAa,QAAOjmF,GACpBkoF,EAAoBn6P,KAAK43P,mBAAmBM,GAClD,GAAKiC,EAAL,CAGAA,EAAkB33P,QAAQ,aACnBxC,KAAK43P,mBAAmBM,GAC/B,IAAMp7P,EAAKm1K,EAAQ7D,QAQnB,YAPWnwK,IAAPnB,UACKkD,KAAK03P,SAAS56P,EAAGgD,mBAEnBE,KAAK23P,UAAUO,GACtBl4P,KAAKopH,cACH,IAAIivI,EAAkBC,EAA+BrmF,IAEhDA,IAUT,YAAA4nF,mBAAA,SAAmB5nF,GACjB,IAAIv1H,GAAU,EACd,IAAK,IAAM5/C,KAAMkD,KAAK03P,SACpB,GAAI13P,KAAK03P,SAAS56P,KAAQm1K,EAAS,QAC1BjyK,KAAK03P,SAAS56P,GACrB4/C,GAAU,EACV,MAGJ,OAAOA,GAST,YAAA09M,UAAA,SAAUxxC,GACR5oN,KAAK2oN,QAAUC,GAQjB,YAAA4sC,OAAA,SAAOz2P,IACL,OAAOiB,KAAKk3P,QAAS,GACrBl3P,KAAKm3P,KAAOp4P,EACZiB,KAAKo6P,WAAU,QAAIr7P,EAAKiB,KAAKk3P,WAEjC,EAr7BA,CAA2BrC,EAAA,GAu7B3B,+hBC59BA,QAnIA,YASE,WAAYjkF,EAAW1oI,EAAO3pB,EAAKwtC,EAAQ8kH,EAAkB9E,GAA7D,MACE,YAAM6E,EAAW1oI,EAAO6jI,IAAY,YAMpC,EAAK2C,OAAS,KAMd,EAAKwoF,QAAUnrM,EAMf,EAAKsuM,UAAY,KAMjB,EAAK1xC,QAML,EAAKz2C,WAAa,KAMlB,EAAKvD,WAML,EAAKoC,kBAAoBF,EAMzB,EAAKsmF,KAAO54O,EAEZ,EAAK1a,IAAM0a,IAqEf,OAjIyB,OAoEvB,YAAAq7O,UAAA,WACE,OAAO55P,KAAKk3P,SAQd,YAAAv6C,YAAA,WACE,OAAO38M,KAAKq6P,WAMd,YAAAtyH,KAAA,WACM/nI,KAAKkoC,OAAS6xI,EAAA,SAChB/5K,KAAKqvL,SAAStV,EAAA,WACd/5K,KAAK+wK,kBAAkB/wK,KAAMA,KAAKm3P,MAC9Bn3P,KAAK2oN,SACP3oN,KAAK2oN,QAAQ3oN,KAAK0uK,OAAQ1uK,KAAK2uK,WAAY3uK,KAAKkyK,cAUtD,YAAAnzJ,OAAA,SAAO+/J,EAAU2pB,GACfzoM,KAAKs6P,YAAYx7E,IAMnB,YAAAy7E,QAAA,WACEv6P,KAAKqvL,SAAStV,EAAA,UAShB,YAAAugF,YAAA,SAAYx7E,GACV9+K,KAAKq6P,UAAYv7E,EACjB9+K,KAAKqvL,SAAStV,EAAA,WAQhB,YAAAqgF,UAAA,SAAUxxC,GACR5oN,KAAK2oN,QAAUC,GAEnB,EAjIA,CAAyBI,EAAA,ygBCenBwxC,EAAa,GA8InB,QA5IA,YAQE,WAAY5pF,EAAW1oI,EAAOgqN,EAAcxsC,GAA5C,MACE,YAAM90C,EAAW1oI,EAAO,CAACkT,WAAY,KAAG,YAMxC,EAAKujM,SAAW,GAMhB,EAAKx8B,eAAiB,GAMtB,EAAK0D,wBAA0B,GAM/B,EAAKgB,mBAAqB,EAK1B,EAAKjB,sBAAwB,GAM7B,EAAK60C,aAAe,GAKpB,EAAKh1C,YAAc,GAKnB,EAAKi1C,cAAgB,GAKrB,EAAKr2C,iBAKL,EAAKqB,eAAiBA,EAAezuM,UAAKhZ,EAAW,GAKrD,EAAKunN,iBAAmB0sC,IAqE5B,OA1I+B,OA4E7B,YAAAr7M,WAAA,SAAWrvB,GACT,IAAM3jB,GAAM,QAAO2jB,GAInB,OAHM3jB,KAAO7D,KAAK2+O,WAChB3+O,KAAK2+O,SAAS96O,IAAO,QAAsB,EAAG,EAAG22P,IAE5Cx6P,KAAK2+O,SAAS96O,IAOvB,YAAA6gN,WAAA,SAAWl9L,GACT,OAAO,QAAOA,KAAUxnB,KAAK2+O,UAQ/B,YAAA5vE,SAAA,SAASvnJ,GACP,OAAOxnB,KAAK0kN,WAAWl9L,GAASxnB,KAAK62C,WAAWrvB,GAAOisC,OAAS,MAOlE,YAAAsxJ,eAAA,SAAev9L,GACb,IAAM3jB,GAAM,QAAO2jB,GAYnB,OAXM3jB,KAAO7D,KAAKy6P,eAChBz6P,KAAKy6P,aAAa52P,GAAO,CACvB8kH,OAAO,EACPu8F,oBAAqB,KACrBF,mBAAoBhtK,IACpBitK,kBAAmB,EACnBkD,uBAAwBnwK,IACxBowK,sBAAuB,EACvBuyC,eAAgB,IAGb36P,KAAKy6P,aAAa52P,IAM3B,YAAAkkI,KAAA,WACE/nI,KAAK0lN,kBAMP,YAAA59M,QAAA,WACE,IAAK,IAAMjE,KAAO7D,KAAK2+O,SACrB6b,EAAWp2P,KAAKpE,KAAK2+O,SAAS96O,GAAK4vD,eAC5BzzD,KAAK2+O,SAAS96O,GAEvB,YAAMiE,QAAO,YAEjB,EA1IA,CAA+BkhN,EAAA,6hBCsc/B,QAtXA,YAIE,WAAYvrN,GAAZ,WACQy0K,EAAaz0K,EAAQy0K,YAAc,YAEnCxD,EAASjxK,EAAQixK,SAAU,QAAqBwD,GAEhDs0C,EACJ/oN,EAAQ+oN,WACR,QAAU,CACR93C,OAAQA,EACRgjB,cAAej0L,EAAQi0L,cACvBoC,aAA6B71L,IAApBR,EAAQq2L,QAAwBr2L,EAAQq2L,QAAU,GAC3DD,QAASp2L,EAAQo2L,QACjBmzB,SAAUvpN,EAAQupN,UAAY,eAGlC,YAAM,CACJ/mB,aAAcxiM,EAAQwiM,aACtBiwD,wBAAyBzyP,EAAQyyP,wBACjCrzD,UAAWp/L,EAAQo/L,UACnBviH,aAAa,EACb61K,QAAQ,EACRj+E,WAAYA,EACZhqI,MAAOzqC,EAAQyqC,MACfs+K,SAAUA,EACV31C,iBAAkBpzK,EAAQozK,iBACtBpzK,EAAQozK,iBACR+pF,EACJzJ,gBAAiB1zP,EAAQ0zP,gBACzBpyP,IAAKtB,EAAQsB,IACbqyP,KAAM3zP,EAAQ2zP,KACdxwD,WAAyB3iM,IAAlBR,EAAQmjM,OAA6BnjM,EAAQmjM,MACpDxlJ,WAAY39C,EAAQ29C,WACpBssK,gBAAmCzpN,IAAvBR,EAAQiqN,WAA2B,EAAIjqN,EAAQiqN,cAC3D,MAMGwvC,QAAUz5P,EAAQsuD,OAAStuD,EAAQsuD,OAAS,KAMjD,EAAK8uM,gBAAkB,IAAIlG,EAAA,EAAU,EAAKjD,UAAUM,eAMpD,EAAKxY,UAAgCv7O,MAApBR,EAAQi2O,UAA+Bj2O,EAAQi2O,SAMhE,EAAK2d,UAAY5zP,EAAQ4zP,UAAY5zP,EAAQ4zP,UAAY,EAMzD,EAAKyJ,WAAa,KAiTtB,OApXyB,OAkFvB,YAAA13C,oBAAA,SAAoB10C,GAClB,IAAMoQ,EAAW,GACX4yE,EAAY1xP,KAAK0xP,UACvB,GAA6B,IAAzBA,EAAUl5E,WACZ,OAAOsG,EAET,IAAMhtH,GAAI,QAAQ4/L,EAAU7hE,gBAAgB,GACtC22B,EAAWxmN,KAAKwmN,SAuBtB,OAtBAkrC,EAAUlvP,SAAQ,SAAUs3K,GAC1B,GAAIA,EAAKlJ,UAAU,KAAO9+G,GAAKgoH,EAAK5K,aAAe6K,EAAA,SAInD,IADA,IAAM0rC,EAAc3rC,EAAK4rC,iBAChBpmN,EAAI,EAAG8sK,EAAKq5C,EAAYjnN,OAAQc,EAAI8sK,IAAM9sK,EAAG,CACpD,IAAMwmN,EAAaL,EAAYnmN,GACzBsxK,EAAYk1C,EAAWl1C,UAC7B,IAAI,QAAWlC,EAAQ83C,EAASjB,mBAAmB30C,IAAa,CAC9D,IAAMmqF,EAAej1C,EAAWnJ,cAChC,GAAIo+C,EACF,IAAK,IAAI5tM,EAAI,EAAG8pI,EAAK8jE,EAAav8P,OAAQ2uD,EAAI8pI,IAAM9pI,EAAG,CACrD,IAAMoxK,EAAYw8B,EAAa5tM,GACzBw5D,EAAW43G,EAAUpwD,eACvB,QAAWO,EAAQ/nD,EAASmoD,cAC9BgQ,EAAS16K,KAAKm6N,SAOnBz/C,GAMT,YAAAykC,YAAA,WACE,OAAOvjN,KAAKw5O,WAOd,YAAA5uN,MAAA,WACE5qB,KAAK0xP,UAAU9mO,QACf5qB,KAAK66P,gBAAgBjwO,SAOvB,YAAA6kK,YAAA,SAAYvd,EAAY2Q,GACtB,IAAM6uE,EAAY1xP,KAAK4xP,0BAA0B1/E,GAC3C8oF,EAAkB/+P,OAAOkQ,KAAK02K,GAAW98K,QAAO,SAACC,EAAKnC,GAC1D,IAAM+2C,GAAW,QAAsB/2C,GACvC,GAAI6tP,EAAUh3B,YAAY9/K,GAExB,IADA,IAAM6qK,EAAcisC,EAAUx3O,IAAI0gC,GAAU6qK,YACnCnmN,EAAI,EAAG8sK,EAAKq5C,EAAYjnN,OAAQc,EAAI8sK,IAAM9sK,EACjD0G,EAAIy/M,EAAYnmN,GAAGi6K,WAAY,EAGnC,OAAOvzK,IACN,IACH,YAAMypL,YAAW,UAACvd,EAAY2Q,GAC9B7iL,KAAK66P,gBAAgBprE,YAAYurE,IASnC,YAAAt1C,eAAA,SAAe5pG,EAAYo2D,EAAY4H,GAAvC,WACE,GAAIA,EAAK5K,aAAe6K,EAAA,OAAgB,CACtCD,EAAKuV,SAAStV,EAAA,WACd,IAAMm4E,EAAep4E,EAAK0rC,iBACpBgB,EAAWxmN,KAAKslN,yBAAyBpzC,GACzCxD,EAAS83C,EAASjB,mBAAmB2sC,GACrCpgM,EAAIogM,EAAa,GACjBvjF,EAAa63C,EAASv3C,cAAcn9G,IAE1C,QAAa48G,GAASC,EAAYD,GAClC,IAAM,EAAiB1uK,KAAKwmN,SACtBiiC,EAAe,EAAe35E,YAChC25E,IACF,QAAgB/5E,EAAQ+5E,EAAc/5E,GAExC,IAAMusF,EAAU,EAAe/zC,kBAAkBv4C,EAAY,GAE7D,EAAeusF,iBAAiBxsF,EAAQusF,GAAS,SAACl1C,GAChD,IAAMqsC,EAAU,EAAKjB,gBACnBprC,EACAjqG,EACAo2D,GAEI4zC,EAAa,EAAK+0C,gBAAgBngC,YAAY03B,GAChD,EAAKyI,gBAAgB3gP,IAAIk4O,GACzB,IAAI,EAAKf,UACPtrC,EACAqsC,EAAUr4E,EAAA,OAAiBA,EAAA,QAC3Bq4E,EACA,EAAK8E,QACL,EAAKrmF,kBAEXiJ,EAAK2rC,YAAYrhN,KAAK0hN,GACtB,IAAMq1C,EAAkBr1C,EAAW52C,WACnC,GAAIisF,EAAkBphF,EAAA,SAAkB,CACtC,IAAM,EAAe,SAAC78K,GACpB,EAAKu8K,iBAAiBv8K,GACtB,IAAMgrC,EAAQ49K,EAAW52C,WACzB,GAAIhnI,IAAU6xI,EAAA,UAAoB7xI,IAAU6xI,EAAA,QAAiB,CAC3D,IAAMqhF,EAAgBt1C,EAAWvsC,SAC7B6hF,KAAiBthF,EAAK4gF,cACpB50C,EAAW52C,aAAe6K,EAAA,iBACrBD,EAAK4gF,cAAcU,GAG5BthF,EAAK+sC,qBAEH3+K,IAAU6xI,EAAA,QACZD,EAAK4gF,cAAcU,IAAiB,EAEpCt1C,EAAWz0L,oBAAoBw9I,EAAA,SAAkB,GAEnB,IAA5BiL,EAAK+sC,oBACP/sC,EAAKuV,UACH,QAAQvV,EAAK4gF,eACT3gF,EAAA,SACAA,EAAA,WAKZ+rC,EAAW7tM,iBAAiB42J,EAAA,SAAkB,GAC9CiL,EAAK+sC,qBAEHs0C,IAAoBphF,EAAA,SACtB+rC,EAAWp3C,OACT,EAAe62C,mBAAmBQ,GACpCD,EAAW5zC,WAAaA,EACxB4zC,EAAWn3C,WAAa,EAAeM,cACrC82C,EAAgB,IAElB,EAAK80C,gBAAgBrvN,IAAI4mN,EAAStsC,GAClCA,EAAW/9E,WAGV+xC,EAAK+sC,oBACR/sC,EAAKuV,SACHvV,EAAK2rC,YAAY7mN,MACf,SAACknN,GAAe,OAAAA,EAAW52C,aAAe6K,EAAA,WAExCA,EAAA,QACAA,EAAA,UAKV,OAAOD,EAAK2rC,aAWd,YAAAtB,QAAA,SAAQryJ,EAAGxd,EAAGC,EAAGunE,EAAYo2D,GAC3B,IAEI4H,EAFEuhF,GAAW,QAAUvpM,EAAGxd,EAAGC,GAC3B1wC,EAAM7D,KAAKu5K,SAEjB,GAAIv5K,KAAK0xP,UAAUh3B,YAAY2gC,KAC7BvhF,EAAO95K,KAAK0xP,UAAUx3O,IAAImhP,IACjBx3P,MAAQA,EACf,OAAOi2K,EAGX,IAAMlJ,EAAY,CAAC9+G,EAAGxd,EAAGC,GACrB29M,EAAelyP,KAAKmyP,+BACtBvhF,EACAsB,GAEIu2E,EAAezoP,KAAKolN,cAAct2C,YAClC03C,EAAWxmN,KAAKslN,yBAAyBpzC,GAC/C,GAAIggF,GAAgBzJ,EAAc,CAChC,IAAMpjC,EAAamB,EAASjB,mBAAmB2sC,IAE/C,QAAa7sC,GAAamB,EAASv3C,cAAcn9G,GAAIuzJ,IAChD,QAAWojC,EAAcpjC,KAC5B6sC,EAAe,MAGnB,IAAIz5B,GAAQ,EACZ,GAAqB,OAAjBy5B,EAAuB,CACzB,IAAM/sC,EAAiBnlN,KAAKwmN,SACtB73C,EAAa63C,EAASv3C,cAAcn9G,GACpCmpM,EAAU91C,EAAe+B,kBAAkBv4C,EAAY,GAEvDD,EAAS83C,EAASjB,mBAAmB2sC,IAC3C,QAAaxjF,GAASC,EAAYD,GAClCy2C,EAAe+1C,iBACbxsF,EACAusF,EACA,SAAUl1C,GACR0S,EACEA,IACCz4N,KAAKmxP,gBAAgBprC,EAAiBjqG,EAAYo2D,IACrDj7J,KAAKjX,OAGX,IAAMsyP,EAAU,IAAI,EAClB1hF,EACA6nD,EAAQ1+C,EAAA,QAAkBA,EAAA,OAC1Bm4E,EACAlyP,KAAK0lN,eAAezuM,KAAKjX,KAAM87G,EAAYo2D,IAW7C,OARAogF,EAAQzuP,IAAMA,EACVi2K,GACFw4E,EAAQvjE,YAAcjV,EACtBw4E,EAAQnjE,sBACRnvL,KAAK0xP,UAAUpsP,QAAQ+1P,EAAU/I,IAEjCtyP,KAAK0xP,UAAUlmN,IAAI6vN,EAAU/I,GAExBA,GAOT,YAAAhtC,yBAAA,SAAyBpzC,GACvB,IAAMj+J,EAAOi+J,EAAWkxD,UACpB5c,EAAWxmN,KAAK86P,WAAW7mP,GAC/B,IAAKuyM,EAAU,CAGb,IAAMrB,EAAiBnlN,KAAKwmN,SAC5BA,GAAW,QACTt0C,OACAj0K,EACAknN,EACIA,EAAe8B,YAAY9B,EAAe7sB,mBAC1Cr6L,GAEN+B,KAAK86P,WAAW7mP,GAAQuyM,EAE1B,OAAOA,GAQT,YAAA6T,kBAAA,SAAkBv+G,GAChB,OAAOA,GAST,YAAAwsG,iBAAA,SAAiBx2J,EAAGgqD,EAAYo2D,GAC9B,IAAMs0C,EAAWxmN,KAAKslN,yBAAyBpzC,GACzC80C,GAAW,QAAOR,EAASS,YAAYn1J,GAAI9xD,KAAK6zP,SACtD,MAAO,CACL5mP,KAAKgsD,MAAM+tJ,EAAS,GAAKlrG,GACzB7uG,KAAKgsD,MAAM+tJ,EAAS,GAAKlrG,KAS7B,YAAA4qI,gBAAA,SAAgBF,EAAWt0E,GACzB,YAAMw0E,gBAAe,UAAa,EAAZF,EAAet0E,GACrClyK,KAAK66P,gBAAgB7I,cACnBhyP,KAAK4xP,0BAA0B1/E,GAAY8/E,eAEjD,EApXA,CAAyBsD,EAAA,GA6XlB,SAASsF,EAAoB9gF,EAAM/6K,GACxC+6K,EAAKsgF,WAMH,SAAU1rF,EAAQC,EAAYuD,IAC5B,QACEnzK,EACA+6K,EAAK8/E,YACLlrF,EACAC,EACAuD,EACA4H,EAAK/6J,OAAO9H,KAAK6iK,GACjBA,EAAKygF,QAAQtjP,KAAK6iK,mhBC5X1B,QAjDA,YAIE,WAAY/N,GACV,IAAMtuK,EAAUsuK,GAAe,GAE3BzxF,OACyBr8E,IAA3BR,EAAQwyP,gBAA+BxyP,EAAQwyP,oBACrBhyP,IAAxBR,EAAQ68E,cACVA,EAAc78E,EAAQ68E,aAGxB,IAAM43F,OACmBj0K,IAAvBR,EAAQy0K,WAA2Bz0K,EAAQy0K,WAAa,YAEpDs0C,OACiBvoN,IAArBR,EAAQ+oN,SACJ/oN,EAAQ+oN,UACR,QAAU,CACR93C,QAAQ,QAAqBwD,GAC7Bwf,cAAej0L,EAAQi0L,cACvBoC,QAASr2L,EAAQq2L,QACjBD,QAASp2L,EAAQo2L,QACjBmzB,SAAUvpN,EAAQupN,kBAG1B,YAAM,CACJ/mB,aAAcxiM,EAAQwiM,aACtBpD,UAAWp/L,EAAQo/L,UACnBjtB,YAAanyK,EAAQmyK,YACrBt1F,YAAaA,EACb61K,OAAQ1yP,EAAQ0yP,OAChBj+E,WAAYA,EACZk+E,2BAA4B3yP,EAAQ2yP,2BACpC5pC,SAAUA,EACV31C,iBAAkBpzK,EAAQozK,iBAC1B07C,eAAgB9uN,EAAQ8uN,eACxB4kC,gBAAiB1zP,EAAQ0zP,gBACzBpyP,IAAKtB,EAAQsB,IACbqyP,KAAM3zP,EAAQ2zP,KACdxwD,WAAyB3iM,IAAlBR,EAAQmjM,OAAsBnjM,EAAQmjM,MAC7CxlJ,WAAY39C,EAAQ29C,WACpB80M,wBAAyBzyP,EAAQyyP,wBACjCxoC,WAAYjqN,EAAQiqN,cACpB,KAEN,OA/CkB,OA+ClB,EA/CA,CAAkB,2EC/CL4zC,EAAiB,UAWvB,SAASn0E,EAAY/6I,EAAI8iE,EAAIqsJ,GAClC,IAAM54M,EAAS44M,GAAcD,EACvBE,GAAO,QAAUpvN,EAAG,IACpBqvN,GAAO,QAAUvsJ,EAAG,IACpBwsJ,GAAeD,EAAOD,GAAQ,EAC9BG,GAAc,QAAUzsJ,EAAG,GAAK9iE,EAAG,IAAM,EACzCxG,EACJ34B,KAAK+3C,IAAI02M,GAAezuP,KAAK+3C,IAAI02M,GACjCzuP,KAAK+3C,IAAI22M,GACP1uP,KAAK+3C,IAAI22M,GACT1uP,KAAK63C,IAAI02M,GACTvuP,KAAK63C,IAAI22M,GACb,OAAO,EAAI94M,EAAS11C,KAAK2xF,MAAM3xF,KAAK+gD,KAAKpoB,GAAI34B,KAAK+gD,KAAK,EAAIpoB,IAyMtD,SAAS0c,EAAOlW,EAAIiiB,EAAUutM,EAASL,GAC5C,IAAM54M,EAAS44M,GAAcD,EACvBE,GAAO,QAAUpvN,EAAG,IACpByvN,GAAO,QAAUzvN,EAAG,IACpB0vN,EAAOztM,EAAW1L,EAClBo5M,EAAM9uP,KAAK4zD,KACf5zD,KAAK+3C,IAAIw2M,GAAQvuP,KAAK63C,IAAIg3M,GACxB7uP,KAAK63C,IAAI02M,GAAQvuP,KAAK+3C,IAAI82M,GAAQ7uP,KAAK63C,IAAI82M,IAEzCh3B,EACJi3B,EACA5uP,KAAK2xF,MACH3xF,KAAK+3C,IAAI42M,GAAW3uP,KAAK+3C,IAAI82M,GAAQ7uP,KAAK63C,IAAI02M,GAC9CvuP,KAAK63C,IAAIg3M,GAAQ7uP,KAAK+3C,IAAIw2M,GAAQvuP,KAAK+3C,IAAI+2M,IAE/C,MAAO,EAAC,QAAUn3B,IAAM,QAAUm3B,iECYpC,QA3PA,WAIE,WAAYC,GAMVh8P,KAAKgyP,mBACmB/zP,IAAtB+9P,EAAkCA,EAAoB,KAMxDh8P,KAAKi8P,OAAS,EAMdj8P,KAAKk8P,SAAW,GAMhBl8P,KAAKm8P,QAAU,KAMfn8P,KAAKo8P,QAAU,KAsNnB,OAhNE,YAAA1sE,eAAA,WACE,OAAO1vL,KAAKgyP,cAAgB,GAAKhyP,KAAKw4K,WAAax4K,KAAKgyP,eAO1D,YAAAviE,YAAA,SAAYytD,GACV,KAAOl9O,KAAK0vL,kBACV1vL,KAAKqC,OAOT,YAAAuoB,MAAA,WACE5qB,KAAKi8P,OAAS,EACdj8P,KAAKk8P,SAAW,GAChBl8P,KAAKm8P,QAAU,KACfn8P,KAAKo8P,QAAU,MAOjB,YAAA1hC,YAAA,SAAY72N,GACV,OAAO7D,KAAKk8P,SAASx7P,eAAemD,IAStC,YAAArB,QAAA,SAAQ0/F,GAEN,IADA,IAAI3vE,EAAQvyB,KAAKm8P,QACV5pO,GACL2vE,EAAE3vE,EAAM8pO,OAAQ9pO,EAAMqiO,KAAM50P,MAC5BuyB,EAAQA,EAAM+pO,OASlB,YAAApiP,IAAA,SAAIrW,EAAKkoK,GACP,IAAMx5I,EAAQvyB,KAAKk8P,SAASr4P,GAE5B,OADA,YAAiB5F,IAAVs0B,EAAqB,IACxBA,IAAUvyB,KAAKo8P,UAER7pO,IAAUvyB,KAAKm8P,SACxBn8P,KAAKm8P,QAAgCn8P,KAAKm8P,QAAa,MACvDn8P,KAAKm8P,QAAQI,MAAQ,OAErBhqO,EAAM+pO,MAAMC,MAAQhqO,EAAMgqO,MAC1BhqO,EAAMgqO,MAAMD,MAAQ/pO,EAAM+pO,OAE5B/pO,EAAM+pO,MAAQ,KACd/pO,EAAMgqO,MAAQv8P,KAAKo8P,QACnBp8P,KAAKo8P,QAAQE,MAAQ/pO,EACrBvyB,KAAKo8P,QAAU7pO,GAXNA,EAAM8pO,QAoBjB,YAAA7nP,OAAA,SAAO3Q,GACL,IAAM0uB,EAAQvyB,KAAKk8P,SAASr4P,GAkB5B,OAjBA,YAAiB5F,IAAVs0B,EAAqB,IACxBA,IAAUvyB,KAAKo8P,SACjBp8P,KAAKo8P,QAAgC7pO,EAAW,MAC5CvyB,KAAKo8P,UACPp8P,KAAKo8P,QAAQE,MAAQ,OAEd/pO,IAAUvyB,KAAKm8P,SACxBn8P,KAAKm8P,QAAgC5pO,EAAW,MAC5CvyB,KAAKm8P,UACPn8P,KAAKm8P,QAAQI,MAAQ,QAGvBhqO,EAAM+pO,MAAMC,MAAQhqO,EAAMgqO,MAC1BhqO,EAAMgqO,MAAMD,MAAQ/pO,EAAM+pO,cAErBt8P,KAAKk8P,SAASr4P,KACnB7D,KAAKi8P,OACA1pO,EAAM8pO,QAMf,YAAA7jF,SAAA,WACE,OAAOx4K,KAAKi8P,QAMd,YAAA/hI,QAAA,WACE,IAEI3nG,EAFEpmB,EAAO,IAAI7L,MAAMN,KAAKi8P,QACxB38P,EAAI,EAER,IAAKizB,EAAQvyB,KAAKo8P,QAAS7pO,EAAOA,EAAQA,EAAMgqO,MAC9CpwP,EAAK7M,KAAOizB,EAAMqiO,KAEpB,OAAOzoP,GAMT,YAAAm2N,UAAA,WACE,IAEI/vM,EAFEn0B,EAAS,IAAIkC,MAAMN,KAAKi8P,QAC1B38P,EAAI,EAER,IAAKizB,EAAQvyB,KAAKo8P,QAAS7pO,EAAOA,EAAQA,EAAMgqO,MAC9Cn+P,EAAOkB,KAAOizB,EAAM8pO,OAEtB,OAAOj+P,GAMT,YAAAuxL,SAAA,WACE,OAAO3vL,KAAKm8P,QAAQE,QAMtB,YAAAG,YAAA,WACE,OAAOx8P,KAAKm8P,QAAQvH,MAOtB,YAAA/kE,aAAA,WACE,OAAO7vL,KAAKo8P,QAAQxH,MAMtB,YAAAvyP,IAAA,WACE,IAAMkwB,EAAQvyB,KAAKm8P,QAUnB,cATOn8P,KAAKk8P,SAAS3pO,EAAMqiO,MACvBriO,EAAM+pO,QACR/pO,EAAM+pO,MAAMC,MAAQ,MAEtBv8P,KAAKm8P,QAAgC5pO,EAAW,MAC3CvyB,KAAKm8P,UACRn8P,KAAKo8P,QAAU,QAEfp8P,KAAKi8P,OACA1pO,EAAM8pO,QAOf,YAAA/2P,QAAA,SAAQzB,EAAK1H,GACX6D,KAAKka,IAAIrW,GACT7D,KAAKk8P,SAASr4P,GAAKw4P,OAASlgQ,GAO9B,YAAAqvC,IAAA,SAAI3nC,EAAK1H,IACP,SAAS0H,KAAO7D,KAAKk8P,UAAW,IAChC,IAAM3pO,EAAQ,CACZqiO,KAAM/wP,EACNy4P,MAAO,KACPC,MAAOv8P,KAAKo8P,QACZC,OAAQlgQ,GAEL6D,KAAKo8P,QAGRp8P,KAAKo8P,QAAQE,MAAQ/pO,EAFrBvyB,KAAKm8P,QAAU5pO,EAIjBvyB,KAAKo8P,QAAU7pO,EACfvyB,KAAKk8P,SAASr4P,GAAO0uB,IACnBvyB,KAAKi8P,QAQT,YAAA34E,QAAA,SAAQ7uJ,GACNz0B,KAAKgyP,cAAgBv9N,GAEzB,EAzPA,ogBCuDA,QArDA,YAIE,WAAYs3I,GACV,IAAMtuK,EAAUsuK,GAA4B,UAE5C,YAAM,CACJnpH,OAAQpxB,EAAAA,EACR0S,KAAMzmC,EAAQymC,KACdye,OAAQllD,EAAQklD,OAChB8jB,OAAQhpE,EAAQgpE,OAChB12B,WAAyB9xC,IAAlBR,EAAQsyC,MAAsBtyC,EAAQsyC,MAAQ,EACrD6T,cAA+B3lD,IAArBR,EAAQmmD,SAAyBnmD,EAAQmmD,SAAW,EAC9Do0L,oBAC6B/5O,IAA3BR,EAAQu6O,gBAA+Bv6O,EAAQu6O,eACjDykB,kBAC2Bx+P,IAAzBR,EAAQg/P,aAA6Bh/P,EAAQg/P,aAAe,CAAC,EAAG,MAClE,KAiCN,OAnD0B,OA0BxB,YAAApzO,MAAA,WACE,IAAM0mB,EAAQ/vC,KAAK+oE,WACbrhB,EAAQ,IAAIg1M,EAAY,CAC5Bx4N,KAAMlkC,KAAKy9O,UAAYz9O,KAAKy9O,UAAUp0N,aAAUprB,EAChDwoE,OAAQzmE,KAAK29O,YAAc39O,KAAK29O,YAAYt0N,aAAUprB,EACtD0kD,OAAQ3iD,KAAK28P,YACb5sN,MAAOzvC,MAAMiF,QAAQwqC,GAASA,EAAM5tC,QAAU4tC,EAC9C6T,SAAU5jD,KAAKgnL,cACfgxD,eAAgBh4O,KAAKywO,oBACrBgsB,aAAcz8P,KAAK48P,kBAAkBz6P,UAGvC,OADAulD,EAAM4zJ,WAAWt7M,KAAK86M,cACfpzJ,GAST,YAAAm1M,UAAA,SAAUl6M,GACR3iD,KAAK88P,QAAUn6M,EACf3iD,KAAKswE,UAET,EAnDA,CAA0B,mDCqC1B,QA9CA,WAIE,WAAYy7F,GACV,IAAMtuK,EAAUsuK,GAAe,GAM/B/rK,KAAK+8P,YAA2B9+P,IAAlBR,EAAQyuC,MAAsBzuC,EAAQyuC,MAAQ,KAiChE,OAzBE,YAAA7iB,MAAA,WACE,IAAM6iB,EAAQlsC,KAAK2tO,WACnB,OAAO,IAAIqvB,EAAK,CACd9wN,MAAO5rC,MAAMiF,QAAQ2mC,GAASA,EAAM/pC,QAAU+pC,QAASjuC,KAS3D,YAAA0vO,SAAA,WACE,OAAO3tO,KAAK+8P,QASd,YAAApa,SAAA,SAASz2M,GACPlsC,KAAK+8P,OAAS7wN,GAElB,EA5CA,yECRA,QAKe,cALf,EAUgB,eAVhB,EAeY,WAfZ,EAoBa,kiBCbT+wN,EAAqB,KAEzB,cASE,WAAY7tF,EAAO7wJ,EAAKkW,EAAMm7I,EAAaq0E,EAAY/3M,GAAvD,MACE,cAAO,YAMP,EAAKsjM,mBAAqB,KAM1B,EAAKx/D,OAAUZ,GAAQ,IAAIa,MAEP,OAAhBL,IAC+B,EAAW,OAAEA,YAAcA,GAO9D,EAAK0jD,QAAU,GAMf,EAAKypC,OAAS7wN,EAMd,EAAKgkI,UAAY,KAMjB,EAAKgtF,YAAcjZ,EAMnB,EAAKkZ,MAAQ1oO,EAMb,EAAKs7I,KAAOxxJ,EAKZ,EAAK6+O,WAkMT,OArQwB,OA0EtB,YAAAC,WAAA,WACE,QAAsBp/P,IAAlB+B,KAAKo9P,UAA0Bp9P,KAAKk9P,cAAgBptF,EAAA,SAAmB,CACpEmtF,IACHA,GAAqB,QAAsB,EAAG,IAEhDA,EAAmBprJ,UAAU7xG,KAAKgwK,OAAQ,EAAG,GAC7C,IACEitF,EAAmB3uC,aAAa,EAAG,EAAG,EAAG,GACzCtuN,KAAKo9P,UAAW,EAChB,MAAO9+P,GACP2+P,EAAqB,KACrBj9P,KAAKo9P,UAAW,GAGpB,OAAyB,IAAlBp9P,KAAKo9P,UAMd,YAAAE,qBAAA,WACEt9P,KAAKopH,cAAcylD,EAAA,WAMrB,YAAAuB,kBAAA,WACEpwK,KAAKk9P,YAAcptF,EAAA,QACnB9vK,KAAKqwK,iBACLrwK,KAAKs9P,wBAMP,YAAAhtF,iBAAA,WACEtwK,KAAKk9P,YAAcptF,EAAA,SACf9vK,KAAKm9P,OACPn9P,KAAKgwK,OAAOp0K,MAAQoE,KAAKm9P,MAAM,GAC/Bn9P,KAAKgwK,OAAOn0K,OAASmE,KAAKm9P,MAAM,IAEhCn9P,KAAKm9P,MAAQ,CAACn9P,KAAKgwK,OAAOp0K,MAAOoE,KAAKgwK,OAAOn0K,QAE/CmE,KAAKqwK,iBACLrwK,KAAKs9P,wBAOP,YAAAvuF,SAAA,SAASjzD,GAEP,OADA97G,KAAKu9P,cAAczhJ,GACZ97G,KAAKszN,QAAQx3G,GAAc97G,KAAKszN,QAAQx3G,GAAc97G,KAAKgwK,QAOpE,YAAAhB,cAAA,SAAclzD,GAEZ,OADA97G,KAAKu9P,cAAczhJ,GACZ97G,KAAKszN,QAAQx3G,GAAcA,EAAa,GAMjD,YAAAirI,cAAA,WACE,OAAO/mP,KAAKk9P,aAMd,YAAA1sB,qBAAA,WACE,IAAKxwO,KAAKwvO,mBACR,GAAIxvO,KAAKq9P,aAAc,CACrB,IAAMzhQ,EAAQoE,KAAKm9P,MAAM,GACnBthQ,EAASmE,KAAKm9P,MAAM,GACpBp9P,GAAU,QAAsBnE,EAAOC,GAC7CkE,EAAQ8lE,SAAS,EAAG,EAAGjqE,EAAOC,GAC9BmE,KAAKwvO,mBAAqBzvO,EAAQ0zD,YAElCzzD,KAAKwvO,mBAAqBxvO,KAAKgwK,OAGnC,OAAOhwK,KAAKwvO,oBAOd,YAAApvD,QAAA,WACE,OAAOpgL,KAAKm9P,OAMd,YAAAK,OAAA,WACE,OAAOx9P,KAAK+vK,MAMd,YAAAhoC,KAAA,WACE,GAAI/nI,KAAKk9P,aAAeptF,EAAA,OAAiB,CACvC9vK,KAAKk9P,YAAcptF,EAAA,UACnB,IACmC9vK,KAAW,OAAEue,IAAMve,KAAK+vK,KACzD,MAAOzxK,GACP0B,KAAKowK,oBAEPpwK,KAAKkwK,WAAY,OACflwK,KAAKgwK,OACLhwK,KAAKswK,iBAAiBr5J,KAAKjX,MAC3BA,KAAKowK,kBAAkBn5J,KAAKjX,SASlC,YAAAu9P,cAAA,SAAczhJ,GACZ,GACG97G,KAAK+8P,SACN/8P,KAAKszN,QAAQx3G,IACb97G,KAAKk9P,cAAgBptF,EAAA,SAHvB,CAQA,IAAMr8G,EAASxuD,SAASkS,cAAc,UACtCnX,KAAKszN,QAAQx3G,GAAcroD,EAE3BA,EAAO73D,MAAQqR,KAAK+rD,KAAKh5D,KAAKgwK,OAAOp0K,MAAQkgH,GAC7CroD,EAAO53D,OAASoR,KAAK+rD,KAAKh5D,KAAKgwK,OAAOn0K,OAASigH,GAE/C,IAAMtlF,EAAMi9B,EAAO5c,WAAW,MAQ9B,GAPArgB,EAAIuZ,MAAM+rE,EAAYA,GACtBtlF,EAAIq7E,UAAU7xG,KAAKgwK,OAAQ,EAAG,GAE9Bx5I,EAAIwyN,yBAA2B,WAIM,aAAjCxyN,EAAIwyN,0BAA2ChpP,KAAKq9P,aACtD7mO,EAAImxB,WAAY,QAAS3nD,KAAK+8P,QAC9BvmO,EAAIqvC,SAAS,EAAG,EAAGpS,EAAO73D,MAAQkgH,EAAYroD,EAAO53D,OAASigH,GAE9DtlF,EAAIwyN,yBAA2B,iBAC/BxyN,EAAIq7E,UAAU7xG,KAAKgwK,OAAQ,EAAG,OACzB,CAQL,IAPA,IAAMytF,EAAUjnO,EAAI83L,aAAa,EAAG,EAAG76J,EAAO73D,MAAO63D,EAAO53D,QACtD4P,EAAOgyP,EAAQhyP,KACfm3B,EAAI5iC,KAAK+8P,OAAO,GAAK,IACrBh4P,EAAI/E,KAAK+8P,OAAO,GAAK,IACrBvxP,EAAIxL,KAAK+8P,OAAO,GAAK,IACrBn3N,EAAI5lC,KAAK+8P,OAAO,GAEbz9P,EAAI,EAAG8sK,EAAK3gK,EAAKjN,OAAQc,EAAI8sK,EAAI9sK,GAAK,EAC7CmM,EAAKnM,IAAMsjC,EACXn3B,EAAKnM,EAAI,IAAMyF,EACf0G,EAAKnM,EAAI,IAAMkM,EACfC,EAAKnM,EAAI,IAAMsmC,EAEjBpP,EAAIknO,aAAaD,EAAS,EAAG,MASjC,YAAAptF,eAAA,WACMrwK,KAAKkwK,YACPlwK,KAAKkwK,YACLlwK,KAAKkwK,UAAY,OAGvB,EArQA,CAAwB,yeCoCxB,cAIE,WAAYnE,GAAZ,WACQtuK,EAAUsuK,GAAe,GAKzBxhF,OAA8BtsF,IAApBR,EAAQ8sF,QAAwB9sF,EAAQ8sF,QAAU,EAK5D3mC,OAAgC3lD,IAArBR,EAAQmmD,SAAyBnmD,EAAQmmD,SAAW,EAK/D7T,OAA0B9xC,IAAlBR,EAAQsyC,MAAsBtyC,EAAQsyC,MAAQ,EAKtDioM,OACuB/5O,IAA3BR,EAAQu6O,gBAA+Bv6O,EAAQu6O,kBAEjD,YAAM,CACJztJ,QAASA,EACT3mC,SAAUA,EACV7T,MAAOA,EACP0sN,kBAC2Bx+P,IAAzBR,EAAQg/P,aAA6Bh/P,EAAQg/P,aAAe,CAAC,EAAG,GAClEzkB,eAAgBA,KAChB,MAMG3rD,aAA6BpuL,IAAnBR,EAAQknH,OAAuBlnH,EAAQknH,OAAS,CAAC,GAAK,IAMrE,EAAKg5I,kBAAoB,KAMzB,EAAKC,mBACsB3/P,IAAzBR,EAAQogQ,aACJpgQ,EAAQogQ,aACRC,EAMN,EAAKC,mBACsB9/P,IAAzBR,EAAQwlP,aACJxlP,EAAQwlP,aACRC,EAAA,WAMN,EAAK8a,mBACsB//P,IAAzBR,EAAQ0lP,aACJ1lP,EAAQ0lP,aACRD,EAAA,WAMN,EAAKpyE,kBACqB7yK,IAAxBR,EAAQmyK,YAA4BnyK,EAAQmyK,YAAc,KAK5D,IAAMR,OAAwBnxK,IAAhBR,EAAQ8xK,IAAoB9xK,EAAQ8xK,IAAM,KAMxD,EAAK0uF,SAAWxgQ,EAAQolP,QAKxB,IAAItkO,EAAM9gB,EAAQ8gB,KAElB,cAAiBtgB,IAARsgB,GAAqB6wJ,GAAQ,IACtC,QAAQA,GAAUA,GAAS,EAAK6uF,SAAW,QAE9BhgQ,IAARsgB,GAAoC,IAAfA,EAAI/f,SAAiB4wK,IAC7C7wJ,EAAsC,EAAQA,MAAO,QAAO6wJ,KAE9D,YAAenxK,IAARsgB,GAAqBA,EAAI/f,OAAS,EAAG,GAK5C,IAAMylP,OACYhmP,IAAhBR,EAAQ8gB,IAAoBuxJ,EAAA,OAAkBA,EAAA,gBAMhD,EAAKitF,YAA2B9+P,IAAlBR,EAAQyuC,OAAsB,QAAQzuC,EAAQyuC,OAAS,KAMrE,EAAKgyN,WDiHF,SAAa9uF,EAAO7wJ,EAAKkW,EAAMm7I,EAAaq0E,EAAY/3M,GAC7D,IAAIiyN,EAAY,QAAmB5/O,EAAKqxJ,EAAa1jI,GAKrD,OAJKiyN,IACHA,EAAY,IAAIC,EAAUhvF,EAAO7wJ,EAAKkW,EAAMm7I,EAAaq0E,EAAY/3M,GACrE,QAAmB3tB,EAAKqxJ,EAAa1jI,EAAOiyN,IAEvCA,ECvHajkP,CAChBk1J,EACsB,OACJnxK,IAAlB,EAAKggQ,SAAyB,EAAKA,SAAW,KAC9C,EAAKntF,aACLmzE,EACA,EAAK8Y,QAOP,EAAKsB,aAA6BpgQ,IAAnBR,EAAQ6kD,OAAuB7kD,EAAQ6kD,OAAS,CAAC,EAAG,GAKnE,EAAKg8M,mBACsBrgQ,IAAzBR,EAAQ8gQ,aACJ9gQ,EAAQ8gQ,aACRT,EAMN,EAAKU,QAAU,KAMf,EAAKrB,WAAyBl/P,IAAjBR,EAAQg3B,KAAqBh3B,EAAQg3B,KAAO,OAgO7D,OA5XmB,OAoKjB,YAAApL,MAAA,WACE,IAAM0mB,EAAQ/vC,KAAK+oE,WACnB,OAAO,IAAIi6K,EAAK,CACdr+H,OAAQ3kH,KAAKqsL,QAAQlqL,QACrB07P,aAAc79P,KAAK49P,cACnB3a,aAAcjjP,KAAK+9P,cACnB5a,aAAcnjP,KAAKg+P,cACnB9xN,MACElsC,KAAK+8P,QAAU/8P,KAAK+8P,OAAO56P,MACvBnC,KAAK+8P,OAAO56P,QACZnC,KAAK+8P,aAAU9+P,EACrB2xK,YAAa5vK,KAAK8wK,aAClB+xE,QAAS7iP,KAAKi+P,SACd37M,OAAQtiD,KAAKq+P,QAAQl8P,QACrBo8P,aAAcv+P,KAAKs+P,cACnB/zK,QAASvqF,KAAK86M,aACdk9B,eAAgBh4O,KAAKywO,oBACrB7sL,SAAU5jD,KAAKgnL,cACfj3I,MAAOzvC,MAAMiF,QAAQwqC,GAASA,EAAM5tC,QAAU4tC,EAC9Ctb,KAAqB,OAAfz0B,KAAKm9P,MAAiBn9P,KAAKm9P,MAAMh7P,aAAUlE,EACjDsgB,IAAKve,KAAKw9P,YAUd,YAAAltB,UAAA,WACE,IAAI3rH,EAAS3kH,KAAK29P,kBAClB,IAAKh5I,EAAQ,CACXA,EAAS3kH,KAAKqsL,QACd,IAAM53J,EAAOz0B,KAAKogL,UAClB,GACEpgL,KAAK+9P,eAAiB7a,EAAA,YACtBljP,KAAKg+P,eAAiB9a,EAAA,WACtB,CACA,IAAKzuN,EACH,OAAO,KAETkwF,EAAS3kH,KAAKqsL,QAAQlqL,QAClBnC,KAAK+9P,eAAiB7a,EAAA,aACxBv+H,EAAO,IAAMlwF,EAAK,IAEhBz0B,KAAKg+P,eAAiB9a,EAAA,aACxBv+H,EAAO,IAAMlwF,EAAK,IAItB,GAAIz0B,KAAK49P,eAAiBE,EAAqB,CAC7C,IAAKrpO,EACH,OAAO,KAELkwF,IAAW3kH,KAAKqsL,UAClB1nE,EAAS3kH,KAAKqsL,QAAQlqL,SAGtBnC,KAAK49P,eAAiBE,GACtB99P,KAAK49P,eAAiBE,IAEtBn5I,EAAO,IAAMA,EAAO,GAAKlwF,EAAK,IAG9Bz0B,KAAK49P,eAAiBE,GACtB99P,KAAK49P,eAAiBE,IAEtBn5I,EAAO,IAAMA,EAAO,GAAKlwF,EAAK,IAGlCz0B,KAAK29P,kBAAoBh5I,EAE3B,IAAM83I,EAAez8P,KAAK48P,kBAC1B,MAAO,CAACj4I,EAAO,GAAK83I,EAAa,GAAI93I,EAAO,GAAK83I,EAAa,KAUhE,YAAAgC,UAAA,SAAU95I,GACR3kH,KAAKqsL,QAAU1nE,EACf3kH,KAAK29P,kBAAoB,MAQ3B,YAAAhwB,SAAA,WACE,OAAO3tO,KAAK+8P,QASd,YAAAhuF,SAAA,SAASjzD,GACP,OAAO97G,KAAKk+P,WAAWnvF,SAASjzD,IASlC,YAAAkzD,cAAA,SAAclzD,GACZ,OAAO97G,KAAKk+P,WAAWlvF,cAAclzD,IAMvC,YAAAgnI,aAAA,WACE,OAAO9iP,KAAKk+P,WAAW99E,WAMzB,YAAA2mE,cAAA,WACE,OAAO/mP,KAAKk+P,WAAWnX,iBAMzB,YAAAvW,qBAAA,WACE,OAAOxwO,KAAKk+P,WAAW1tB,wBAQzB,YAAAlV,UAAA,WACE,GAAIt7N,KAAKw+P,QACP,OAAOx+P,KAAKw+P,QAEd,IAAIl8M,EAAStiD,KAAKq+P,QAElB,GAAIr+P,KAAKs+P,eAAiBR,EAAqB,CAC7C,IAAMrpO,EAAOz0B,KAAKogL,UACZs+E,EAAgB1+P,KAAKk+P,WAAW99E,UACtC,IAAK3rJ,IAASiqO,EACZ,OAAO,KAETp8M,EAASA,EAAOngD,QAEdnC,KAAKs+P,eAAiBR,GACtB99P,KAAKs+P,eAAiBR,IAEtBx7M,EAAO,GAAKo8M,EAAc,GAAKjqO,EAAK,GAAK6tB,EAAO,IAGhDtiD,KAAKs+P,eAAiBR,GACtB99P,KAAKs+P,eAAiBR,IAEtBx7M,EAAO,GAAKo8M,EAAc,GAAKjqO,EAAK,GAAK6tB,EAAO,IAIpD,OADAtiD,KAAKw+P,QAAUl8M,EACRtiD,KAAKw+P,SAQd,YAAAhB,OAAA,WACE,OAAOx9P,KAAKk+P,WAAWV,UAQzB,YAAAp9E,QAAA,WACE,OAAQpgL,KAAKm9P,MAAoCn9P,KAAKm9P,MAAjCn9P,KAAKk+P,WAAW99E,WAMvC,YAAAwnE,kBAAA,SAAkBtpN,GAChBt+B,KAAKk+P,WAAWjmP,iBAAiB42J,EAAA,SAAkBvwI,IAUrD,YAAAypG,KAAA,WACE/nI,KAAKk+P,WAAWn2H,QAMlB,YAAA4/G,oBAAA,SAAoBrpN,GAClBt+B,KAAKk+P,WAAW7sO,oBAAoBw9I,EAAA,SAAkBvwI,IAE1D,EA5XA,CAAmB,KA8XnB,wDC3aA,SAKEqgO,SAAU,WAKVx3B,OAAQ,oECqFV,SAAS5tD,EAAOh7J,EAAKqxJ,EAAa1jI,GAEhC,OAAO0jI,EAAc,IAAMrxJ,EAAM,KADb2tB,GAAQ,QAASA,GAAS,QAIhD,IAOa6G,EAAS,IA1GtB,WACE,aAKE/yC,KAAK4+P,OAAS,GAMd5+P,KAAK0gO,WAAa,EAMlB1gO,KAAK6+P,cAAgB,GAoEzB,OA9DE,YAAAj0O,MAAA,WACE5qB,KAAK4+P,OAAS,GACd5+P,KAAK0gO,WAAa,GAMpB,YAAAhxC,eAAA,WACE,OAAO1vL,KAAK0gO,WAAa1gO,KAAK6+P,eAMhC,YAAAC,OAAA,WACE,GAAI9+P,KAAK0vL,iBAAkB,CACzB,IAAIpwL,EAAI,EACR,IAAK,IAAMuE,KAAO7D,KAAK4+P,OAAQ,CAC7B,IAAMT,EAAYn+P,KAAK4+P,OAAO/6P,GACZ,IAAP,EAANvE,MAAmB6+P,EAAUlqF,uBACzBj0K,KAAK4+P,OAAO/6P,KACjB7D,KAAK0gO,eAYf,YAAAxmN,IAAA,SAAIqE,EAAKqxJ,EAAa1jI,GACpB,IAAMroC,EAAM01K,EAAOh7J,EAAKqxJ,EAAa1jI,GACrC,OAAOroC,KAAO7D,KAAK4+P,OAAS5+P,KAAK4+P,OAAO/6P,GAAO,MASjD,YAAA2nC,IAAA,SAAIjtB,EAAKqxJ,EAAa1jI,EAAOiyN,GAC3B,IAAMt6P,EAAM01K,EAAOh7J,EAAKqxJ,EAAa1jI,GACrClsC,KAAK4+P,OAAO/6P,GAAOs6P,IACjBn+P,KAAK0gO,YAUT,YAAAp9C,QAAA,SAAQy7E,GACN/+P,KAAK6+P,cAAgBE,EACrB/+P,KAAK8+P,UAET,EAtFA,0EC+QA,QAjQA,WAIE,WAAYrhQ,GAKVuC,KAAK6vO,SAAWpyO,EAAQ8sF,QAMxBvqF,KAAKgwO,gBAAkBvyO,EAAQu6O,eAM/Bh4O,KAAK69L,UAAYpgM,EAAQmmD,SAMzB5jD,KAAKiwO,OAASxyO,EAAQsyC,MAMtB/vC,KAAKg/P,aAAc,QAAOvhQ,EAAQsyC,OAMlC/vC,KAAKi/P,cAAgBxhQ,EAAQg/P,aAwNjC,OAhNE,YAAApzO,MAAA,WACE,IAAM0mB,EAAQ/vC,KAAK+oE,WACnB,OAAO,IAAIm2L,EAAW,CACpB30K,QAASvqF,KAAK86M,aACd/qK,MAAOzvC,MAAMiF,QAAQwqC,GAASA,EAAM5tC,QAAU4tC,EAC9C6T,SAAU5jD,KAAKgnL,cACfgxD,eAAgBh4O,KAAKywO,oBACrBgsB,aAAcz8P,KAAK48P,kBAAkBz6P,WASzC,YAAA24M,WAAA,WACE,OAAO96M,KAAK6vO,UAQd,YAAAY,kBAAA,WACE,OAAOzwO,KAAKgwO,iBAQd,YAAAhpD,YAAA,WACE,OAAOhnL,KAAK69L,WAQd,YAAA90H,SAAA,WACE,OAAO/oE,KAAKiwO,QAOd,YAAAS,cAAA,WACE,OAAO1wO,KAAKg/P,aAQd,YAAApC,gBAAA,WACE,OAAO58P,KAAKi/P,eASd,YAAA3uB,UAAA,WACE,OAAO,WAST,YAAAvhE,SAAA,SAASjzD,GACP,OAAO,WAOT,YAAA00H,qBAAA,WACE,OAAO,WAQT,YAAAxhE,cAAA,SAAclzD,GACZ,OAAO,GAOT,YAAAirI,cAAA,WACE,OAAO,WAOT,YAAAjE,aAAA,WACE,OAAO,WAQT,YAAAxnB,UAAA,WACE,OAAO,WAQT,YAAAl7C,QAAA,WACE,OAAO,WAST,YAAA++E,gBAAA,SAAgB1C,GACdz8P,KAAKi/P,cAAgBxC,GASvB,YAAAnhD,WAAA,SAAW/wH,GACTvqF,KAAK6vO,SAAWtlJ,GASlB,YAAA60K,kBAAA,SAAkBpnB,GAChBh4O,KAAKgwO,gBAAkBgI,GASzB,YAAA7hD,YAAA,SAAYvyI,GACV5jD,KAAK69L,UAAYj6I,GAQnB,YAAAy7M,SAAA,SAAStvN,GACP/vC,KAAKiwO,OAASlgM,EACd/vC,KAAKg/P,aAAc,QAAOjvN,IAO5B,YAAA63M,kBAAA,SAAkBtpN,IAChB,WAOF,YAAAypG,KAAA,YACE,WAOF,YAAA4/G,oBAAA,SAAoBrpN,IAClB,WAEJ,EA/PA,ojBC0jBA,QA5hBA,YAIE,WAAY7gC,GAAZ,WAIQu6O,OACuB/5O,IAA3BR,EAAQu6O,gBAA+Bv6O,EAAQu6O,wBAEjD,YAAM,CACJztJ,QAAS,EACTytJ,eAAgBA,EAChBp0L,cAA+B3lD,IAArBR,EAAQmmD,SAAyBnmD,EAAQmmD,SAAW,EAC9D7T,WAAyB9xC,IAAlBR,EAAQsyC,MAAsBtyC,EAAQsyC,MAAQ,EACrD0sN,kBAC2Bx+P,IAAzBR,EAAQg/P,aAA6Bh/P,EAAQg/P,aAAe,CAAC,EAAG,MAClE,MAMGnpC,aAAUr1N,EAMf,EAAKqhQ,oBAAsB,KAM3B,EAAK7pB,WAAyBx3O,IAAjBR,EAAQymC,KAAqBzmC,EAAQymC,KAAO,KAMzD,EAAKs6N,QAAU,CAAC,EAAG,GAMnB,EAAKp0E,QAAU3sL,EAAQmlD,OAMvB,EAAKk6M,aACgB7+P,IAAnBR,EAAQklD,OAAuBllD,EAAQklD,OAASllD,EAAQ8hQ,QAM1D,EAAKC,SAAW/hQ,EAAQgiQ,QAMxB,EAAKp1E,YAA2BpsL,IAAlBR,EAAQ2nD,MAAsB3nD,EAAQ2nD,MAAQ,EAM5D,EAAKs6M,aAA6BzhQ,IAAnBR,EAAQgpE,OAAuBhpE,EAAQgpE,OAAS,KAM/D,EAAK02L,MAAQ,KAMb,EAAKwC,eAAiB,KAEtB,EAAKrvL,WAmcT,OA1hB2B,OA+FzB,YAAAjnD,MAAA,WACE,IAAM0mB,EAAQ/vC,KAAK+oE,WACbrhB,EAAQ,IAAIk4M,EAAa,CAC7B17N,KAAMlkC,KAAKy9O,UAAYz9O,KAAKy9O,UAAUp0N,aAAUprB,EAChD2kD,OAAQ5iD,KAAK6sM,YACblqJ,OAAQ3iD,KAAK28P,YACb8C,QAASz/P,KAAK6/P,aACdz6M,MAAOplD,KAAKonL,WACZ3gH,OAAQzmE,KAAK29O,YAAc39O,KAAK29O,YAAYt0N,aAAUprB,EACtD2lD,SAAU5jD,KAAKgnL,cACfgxD,eAAgBh4O,KAAKywO,oBACrB1gM,MAAOzvC,MAAMiF,QAAQwqC,GAASA,EAAM5tC,QAAU4tC,EAC9C0sN,aAAcz8P,KAAK48P,kBAAkBz6P,UAGvC,OADAulD,EAAM4zJ,WAAWt7M,KAAK86M,cACfpzJ,GAST,YAAA4oL,UAAA,WACE,IAAM77M,EAAOz0B,KAAKm9P,MAClB,IAAK1oO,EACH,OAAO,KAET,IAAMgoO,EAAez8P,KAAK48P,kBAC1B,MAAO,CAACnoO,EAAK,GAAK,EAAIgoO,EAAa,GAAIhoO,EAAK,GAAK,EAAIgoO,EAAa,KAQpE,YAAAr1E,SAAA,WACE,OAAOpnL,KAAKqqL,QAQd,YAAAozD,QAAA,WACE,OAAOz9O,KAAKy1O,OAMd,YAAAjF,qBAAA,WAIE,OAHKxwO,KAAKs/P,qBACRt/P,KAAK8/P,0BAA0B9/P,KAAK2/P,gBAE/B3/P,KAAKs/P,qBASd,YAAAvwF,SAAA,SAASjzD,GACP,IAAIszD,EAAQpvK,KAAKszN,QAAQx3G,GACzB,IAAKszD,EAAO,CACV,IAAM2wF,EAAgB//P,KAAK2/P,eACrB5/P,GAAU,QACdggQ,EAActrO,KAAOqnF,EACrBikJ,EAActrO,KAAOqnF,GAEvB97G,KAAKggQ,MAAMD,EAAehgQ,EAAS+7G,GAEnCszD,EAAQrvK,EAAQ0zD,OAChBzzD,KAAKszN,QAAQx3G,GAAcszD,EAE7B,OAAOA,GAQT,YAAAJ,cAAA,SAAclzD,GACZ,OAAOA,GAMT,YAAAgnI,aAAA,WACE,OAAO9iP,KAAKm9P,OAMd,YAAApW,cAAA,WACE,OAAO,YAQT,YAAAzrB,UAAA,WACE,OAAOt7N,KAAKw+P,SAQd,YAAA3xD,UAAA,WACE,OAAO7sM,KAAKoqL,SAQd,YAAAuyE,UAAA,WACE,OAAO38P,KAAK88P,SAQd,YAAA+C,WAAA,WACE,OAAO7/P,KAAKw/P,UAQd,YAAAp/E,QAAA,WACE,OAAOpgL,KAAKm9P,OAQd,YAAAxf,UAAA,WACE,OAAO39O,KAAK0/P,SAMd,YAAA9X,kBAAA,SAAkBtpN,KAKlB,YAAAypG,KAAA,aAKA,YAAA4/G,oBAAA,SAAoBrpN,KAUpB,YAAA2hO,uBAAA,SAAuB7nL,EAAU9S,EAAakpK,GAC5C,GACkB,IAAhBlpK,GACAtlE,KAAKoqL,UAAY54J,EAAAA,GACH,UAAb4mD,GAAqC,UAAbA,EAEzB,OAAO9S,EAwBT,IAAIw/C,EAAK9kH,KAAK88P,QACVrtG,OAAuBxxJ,IAAlB+B,KAAKw/P,SAAyB16I,EAAK9kH,KAAKw/P,SACjD,GAAI16I,EAAK2qC,EAAI,CACX,IAAM3hD,EAAMgX,EACZA,EAAK2qC,EACLA,EAAK3hD,EAEP,IAAMlrD,OACc3kD,IAAlB+B,KAAKw/P,SAAyBx/P,KAAKoqL,QAAyB,EAAfpqL,KAAKoqL,QAC9Cz0G,EAAS,EAAI1oE,KAAKmqE,GAAMx0B,EACxBhd,EAAI6pH,EAAKxiJ,KAAK+3C,IAAI2wB,GAElB7nC,EAAIg3E,EADA73G,KAAK+gD,KAAKyhG,EAAKA,EAAK7pH,EAAIA,GAE5BtnC,EAAI2O,KAAK+gD,KAAKpoB,EAAIA,EAAIkI,EAAIA,GAC1BoyN,EAAa5hQ,EAAIsnC,EACvB,GAAiB,UAAbwyC,GAAwB8nL,GAAc1xB,EACxC,OAAO0xB,EAAa56L,EAetB,IAAMs2B,EAAIt2B,EAAc,EAAI46L,EACtBpvO,EAAKw0C,EAAc,GAAMx3B,EAAIxvC,GAE7B6hQ,EADOlzP,KAAK+gD,MAAM82D,EAAKlpB,IAAMkpB,EAAKlpB,GAAK9qE,EAAIA,GACzBg0F,EACxB,QAAsB7mH,IAAlB+B,KAAKw/P,UAAuC,UAAbpnL,EACjC,OAAkB,EAAX+nL,EAIT,IAAMC,EAAKt7I,EAAK73G,KAAK+3C,IAAI2wB,GAEnBwhK,EAAK1nF,EADAxiJ,KAAK+gD,KAAK82D,EAAKA,EAAKs7I,EAAKA,GAG9BC,EADKpzP,KAAK+gD,KAAKoyM,EAAKA,EAAKjpB,EAAKA,GACPipB,EAC7B,GAAIC,GAAmB7xB,EAAY,CACjC,IAAM8xB,EAAeD,EAAkB/6L,EAAe,EAAImqF,EAAK3qC,EAC/D,OAAO,EAAI73G,KAAK6mB,IAAIqsO,EAAUG,GAEhC,OAAkB,EAAXH,GAOT,YAAAI,oBAAA,WACE,IAII14M,EAJAuwB,EAAW,KACXo2J,EAAa,EACbppJ,EAAW,KACX/e,EAAiB,EAEjBf,EAAc,EAEdtlE,KAAK0/P,UAEa,QADpB73M,EAAc7nD,KAAK0/P,QAAQ/xB,cAEzB9lL,EAAc,MAEhBA,GAAc,OAAYA,QAEN5pD,KADpBqnE,EAActlE,KAAK0/P,QAAQvvE,cAEzB7qH,EAAc,MAEhB8f,EAAWplF,KAAK0/P,QAAQ1xB,cACxB3nK,EAAiBrmE,KAAK0/P,QAAQxxB,yBAEbjwO,KADjBm6E,EAAWp4E,KAAK0/P,QAAQtxB,iBAEtBh2J,EAAW,WAGMn6E,KADnBuwO,EAAaxuO,KAAK0/P,QAAQnxB,mBAExBC,EAAa,OAIjB,IAAMrqO,EAAMnE,KAAKigQ,uBAAuB7nL,EAAU9S,EAAakpK,GACzDzoL,EAAY94C,KAAK6mB,IAAI9zB,KAAK88P,QAAS98P,KAAKw/P,UAAY,GAG1D,MAAO,CACL33M,YAAaA,EACbyd,YAAaA,EACb7wC,KALWxnB,KAAK+rD,KAAK,EAAIjT,EAAY5hD,GAMrCihF,SAAUA,EACV/e,eAAgBA,EAChB+R,SAAUA,EACVo2J,WAAYA,IAOhB,YAAAl+J,OAAA,WACEtwE,KAAK2/P,eAAiB3/P,KAAKugQ,sBAC3B,IAAM9rO,EAAOz0B,KAAK2/P,eAAelrO,KACjCz0B,KAAKszN,QAAU,GACftzN,KAAKm9P,MAAQ,CAAC1oO,EAAMA,IAStB,YAAAurO,MAAA,SAAMD,EAAehgQ,EAAS+7G,GAO5B,GANA/7G,EAAQgwC,MAAM+rE,EAAYA,GAE1B/7G,EAAQk4E,UAAU8nL,EAActrO,KAAO,EAAGsrO,EAActrO,KAAO,GAE/Dz0B,KAAKwgQ,YAAYzgQ,GAEbC,KAAKy1O,MAAO,CACd,IAAIvpM,EAAQlsC,KAAKy1O,MAAM9H,WACT,OAAVzhM,IACFA,EAAQ,MAEVnsC,EAAQ4nD,WAAY,OAAYzb,GAChCnsC,EAAQmkC,OAENlkC,KAAK0/P,UACP3/P,EAAQ8nD,YAAck4M,EAAcl4M,YACpC9nD,EAAQgoD,UAAYg4M,EAAcz6L,YAC9BvlE,EAAQqmE,aAAe25L,EAAc36K,WACvCrlF,EAAQqmE,YAAY25L,EAAc36K,UAClCrlF,EAAQsmE,eAAiB05L,EAAc15L,gBAEzCtmE,EAAQq4E,SAAW2nL,EAAc3nL,SACjCr4E,EAAQyuO,WAAauxB,EAAcvxB,WACnCzuO,EAAQ0mE,WAQZ,YAAAq5L,0BAAA,SAA0BC,GACxB,GAAI//P,KAAKy1O,MAAO,CACd,IAAIvpM,EAAQlsC,KAAKy1O,MAAM9H,WAGnBpjJ,EAAU,EASd,GARqB,iBAAVr+C,IACTA,GAAQ,QAAQA,IAEJ,OAAVA,EACFq+C,EAAU,EACDjqF,MAAMiF,QAAQ2mC,KACvBq+C,EAA2B,IAAjBr+C,EAAM1tC,OAAe0tC,EAAM,GAAK,GAE5B,IAAZq+C,EAAe,CAGjB,IAAMxqF,GAAU,QACdggQ,EAActrO,KACdsrO,EAActrO,MAEhBz0B,KAAKs/P,oBAAsBv/P,EAAQ0zD,OAEnCzzD,KAAKygQ,wBAAwBV,EAAehgQ,IAG3CC,KAAKs/P,sBACRt/P,KAAKs/P,oBAAsBt/P,KAAK+uK,SAAS,KAQ7C,YAAAyxF,YAAA,SAAYzgQ,GACV,IAAI6iD,EAAS5iD,KAAKoqL,QACZznI,EAAS3iD,KAAK88P,QACpB,GAAIl6M,IAAWpxB,EAAAA,EACbzxB,EAAQ6mD,IAAI,EAAG,EAAGjE,EAAQ,EAAG,EAAI11C,KAAKmqE,QACjC,CACL,IAAMqoL,OAA4BxhQ,IAAlB+B,KAAKw/P,SAAyB78M,EAAS3iD,KAAKw/P,cACtCvhQ,IAAlB+B,KAAKw/P,WACP58M,GAAU,GAIZ,IAFA,IAAM+B,EAAa3kD,KAAKqqL,OAASp9K,KAAKmqE,GAAK,EACrC9S,EAAQ,EAAIr3D,KAAKmqE,GAAMx0B,EACpBtjD,EAAI,EAAGA,EAAIsjD,EAAQtjD,IAAK,CAC/B,IAAMohQ,EAAS/7M,EAAarlD,EAAIglE,EAC1Bq8L,EAAUrhQ,EAAI,GAAM,EAAIqjD,EAAS88M,EACvC1/P,EAAQymE,OAAOm6L,EAAU1zP,KAAK63C,IAAI47M,GAASC,EAAU1zP,KAAK+3C,IAAI07M,IAEhE3gQ,EAAQs1E,cASZ,YAAAorL,wBAAA,SAAwBV,EAAehgQ,GAErCA,EAAQk4E,UAAU8nL,EAActrO,KAAO,EAAGsrO,EAActrO,KAAO,GAE/Dz0B,KAAKwgQ,YAAYzgQ,GAEjBA,EAAQ4nD,UAAY,KACpB5nD,EAAQmkC,OACJlkC,KAAK0/P,UACP3/P,EAAQ8nD,YAAck4M,EAAcl4M,YACpC9nD,EAAQgoD,UAAYg4M,EAAcz6L,YAC9By6L,EAAc36K,WAChBrlF,EAAQqmE,YAAY25L,EAAc36K,UAClCrlF,EAAQsmE,eAAiB05L,EAAc15L,gBAEzCtmE,EAAQq4E,SAAW2nL,EAAc3nL,SACjCr4E,EAAQyuO,WAAauxB,EAAcvxB,WACnCzuO,EAAQ0mE,WAGd,EA1hBA,CAA2B,mDCsL3B,QAhNA,WAIE,WAAYslG,GACV,IAAMtuK,EAAUsuK,GAAe,GAM/B/rK,KAAK+8P,YAA2B9+P,IAAlBR,EAAQyuC,MAAsBzuC,EAAQyuC,MAAQ,KAM5DlsC,KAAK4gQ,SAAWnjQ,EAAQ86E,QAMxBv4E,KAAK6gQ,eAAiC5iQ,IAArBR,EAAQ2nF,SAAyB3nF,EAAQ2nF,SAAW,KAMrEplF,KAAK8gQ,gBAAkBrjQ,EAAQ4oE,eAM/BrmE,KAAK+gQ,UAAYtjQ,EAAQ26E,SAMzBp4E,KAAKghQ,YAAcvjQ,EAAQ+wO,WAM3BxuO,KAAKkwO,OAASzyO,EAAQ7B,MA+J1B,OAvJE,YAAAytB,MAAA,WACE,IAAM6iB,EAAQlsC,KAAK2tO,WACnB,OAAO,IAAIszB,EAAO,CAChB/0N,MAAO5rC,MAAMiF,QAAQ2mC,GAASA,EAAM/pC,QAAU+pC,QAASjuC,EACvDs6E,QAASv4E,KAAK8tO,aACd1oJ,SAAUplF,KAAKguO,cAAgBhuO,KAAKguO,cAAc7rO,aAAUlE,EAC5DooE,eAAgBrmE,KAAKkuO,oBACrB91J,SAAUp4E,KAAKouO,cACfI,WAAYxuO,KAAKuuO,gBACjB3yO,MAAOoE,KAAKmwL,cAShB,YAAAw9C,SAAA,WACE,OAAO3tO,KAAK+8P,QAQd,YAAAjvB,WAAA,WACE,OAAO9tO,KAAK4gQ,UAQd,YAAA5yB,YAAA,WACE,OAAOhuO,KAAK6gQ,WAQd,YAAA3yB,kBAAA,WACE,OAAOluO,KAAK8gQ,iBAQd,YAAA1yB,YAAA,WACE,OAAOpuO,KAAK+gQ,WAQd,YAAAxyB,cAAA,WACE,OAAOvuO,KAAKghQ,aAQd,YAAA7wE,SAAA,WACE,OAAOnwL,KAAKkwO,QASd,YAAAyS,SAAA,SAASz2M,GACPlsC,KAAK+8P,OAAS7wN,GAShB,YAAAg1N,WAAA,SAAW3oL,GACTv4E,KAAK4gQ,SAAWroL,GAelB,YAAAnS,YAAA,SAAYgf,GACVplF,KAAK6gQ,UAAYz7K,GASnB,YAAA+7K,kBAAA,SAAkB96L,GAChBrmE,KAAK8gQ,gBAAkBz6L,GASzB,YAAA+6L,YAAA,SAAYhpL,GACVp4E,KAAK+gQ,UAAY3oL,GASnB,YAAAipL,cAAA,SAAc7yB,GACZxuO,KAAKghQ,YAAcxyB,GASrB,YAAArpJ,SAAA,SAASvpF,GACPoE,KAAKkwO,OAASt0O,GAElB,EA9MA,gHC6HA,aAIE,WAAYmwK,GACV,IAAMtuK,EAAUsuK,GAAe,GAM/B/rK,KAAK+nL,UAAY,KAMjB/nL,KAAKshQ,kBAAoBC,OAEAtjQ,IAArBR,EAAQkpH,UACV3mH,KAAK4tK,YAAYnwK,EAAQkpH,UAO3B3mH,KAAKy1O,WAAyBx3O,IAAjBR,EAAQymC,KAAqBzmC,EAAQymC,KAAO,KAMzDlkC,KAAKgwK,YAA2B/xK,IAAlBR,EAAQ2xK,MAAsB3xK,EAAQ2xK,MAAQ,KAM5DpvK,KAAK+8K,eAAiC9+K,IAArBR,EAAQsiL,SAAyBtiL,EAAQsiL,SAAW,KAMrE//K,KAAKwhQ,2BAC8BvjQ,IAAjCR,EAAQqqO,qBACJrqO,EAAQqqO,qBACR,KAMN9nO,KAAK0/P,aAA6BzhQ,IAAnBR,EAAQgpE,OAAuBhpE,EAAQgpE,OAAS,KAM/DzmE,KAAKs8O,WAAyBr+O,IAAjBR,EAAQqd,KAAqBrd,EAAQqd,KAAO,KAMzD9a,KAAKyhQ,QAAUhkQ,EAAQo2K,OA4M3B,OApME,YAAAxqJ,MAAA,WACE,IAAIs9F,EAAW3mH,KAAKmuK,cAMpB,OALIxnD,GAAgC,iBAAbA,IACrBA,EAAgE,EAE9Dt9F,SAEG,IAAIq4O,EAAM,CACf/6I,SAAUA,EACVziF,KAAMlkC,KAAKy9O,UAAYz9O,KAAKy9O,UAAUp0N,aAAUprB,EAChDmxK,MAAOpvK,KAAK+uK,WAAa/uK,KAAK+uK,WAAW1lJ,aAAUprB,EACnD8hL,SAAU//K,KAAK8yK,cACfrsG,OAAQzmE,KAAK29O,YAAc39O,KAAK29O,YAAYt0N,aAAUprB,EACtD6c,KAAM9a,KAAKw+O,UAAYx+O,KAAKw+O,UAAUn1N,aAAUprB,EAChD41K,OAAQ7zK,KAAK66M,eAUjB,YAAA/nC,YAAA,WACE,OAAO9yK,KAAK+8K,WASd,YAAA4kF,YAAA,SAAY5hF,GACV//K,KAAK+8K,UAAYgD,GASnB,YAAA6hF,wBAAA,SAAwB7hF,GACtB//K,KAAKwhQ,sBAAwBzhF,GAS/B,YAAAgoE,wBAAA,WACE,OAAO/nP,KAAKwhQ,uBAUd,YAAArzF,YAAA,WACE,OAAOnuK,KAAK+nL,WASd,YAAAy4D,oBAAA,WACE,OAAOxgP,KAAKshQ,mBAQd,YAAA7jB,QAAA,WACE,OAAOz9O,KAAKy1O,OAQd,YAAAosB,QAAA,SAAQ39N,GACNlkC,KAAKy1O,MAAQvxM,GAQf,YAAA6qI,SAAA,WACE,OAAO/uK,KAAKgwK,QAQd,YAAAO,SAAA,SAASnB,GACPpvK,KAAKgwK,OAASZ,GAQhB,YAAAuuE,UAAA,WACE,OAAO39O,KAAK0/P,SAQd,YAAAoC,UAAA,SAAUr7L,GACRzmE,KAAK0/P,QAAUj5L,GAQjB,YAAA+3K,QAAA,WACE,OAAOx+O,KAAKs8O,OAQd,YAAAsG,QAAA,SAAQ9nO,GACN9a,KAAKs8O,MAAQxhO,GAQf,YAAA+/L,UAAA,WACE,OAAO76M,KAAKyhQ,SAWd,YAAA7zF,YAAA,SAAYjnD,GACc,mBAAbA,EACT3mH,KAAKshQ,kBAAoB36I,EACI,iBAAbA,EAChB3mH,KAAKshQ,kBAAoB,SAAUrvF,GACjC,OACEA,EAAQ/3J,IAAIysG,IAGNA,OAEY1oH,IAAb0oH,IACT3mH,KAAKshQ,kBAAoB,WACvB,OAA4D,IAH9DthQ,KAAKshQ,kBAAoBC,EAM3BvhQ,KAAK+nL,UAAYphE,GASnB,YAAA60F,UAAA,SAAU3nC,GACR7zK,KAAKyhQ,QAAU5tF,GAEnB,EA9QA,GAwRO,SAASkuF,EAAWxhQ,GACzB,IAAIiuM,EAQE,EANa,mBAARjuM,EACTiuM,EAAgBjuM,GAMZD,MAAMiF,QAAQhF,GAChB,EAASA,IAET,OAAqD,mBAArB,EAAe,UAAkB,IAEjE,EAAS,CAD0B,IAGrCiuM,EAAgB,WACd,OAAO,IAGX,OAAOA,EAMT,IAAIwzD,EAAgB,KAOb,SAASC,EAAmBhwF,EAAStD,GAM1C,IAAKqzF,EAAe,CAClB,IAAM99N,EAAO,IAAI,IAAK,CACpBgI,MAAO,0BAEHu6B,EAAS,IAAI,IAAO,CACxBv6B,MAAO,UACPtwC,MAAO,OAETomQ,EAAgB,CACd,IAAIN,EAAM,CACRtyF,MAAO,IAAI,IAAY,CACrBlrI,KAAMA,EACNuiC,OAAQA,EACR9jB,OAAQ,IAEVze,KAAMA,EACNuiC,OAAQA,KAId,OAAOu7L,EAuET,SAAST,EAAwBtvF,GAC/B,OAAOA,EAAQ9D,cAGjB,0FCvBA,QA1eA,WAIE,WAAYpC,GACV,IAAMtuK,EAAUsuK,GAAe,GAM/B/rK,KAAKkiQ,MAAQzkQ,EAAQ69D,KAMrBt7D,KAAK69L,UAAYpgM,EAAQmmD,SAMzB5jD,KAAKgwO,gBAAkBvyO,EAAQu6O,eAM/Bh4O,KAAKiwO,OAASxyO,EAAQsyC,MAMtB/vC,KAAKg/P,aAAc,aAAyB/gQ,IAAlBR,EAAQsyC,MAAsBtyC,EAAQsyC,MAAQ,GAMxE/vC,KAAKs8O,MAAQ7+O,EAAQqd,KAMrB9a,KAAKmiQ,WAAa1kQ,EAAQqnE,UAM1B9kE,KAAKoiQ,cAAgB3kQ,EAAQwnE,aAM7BjlE,KAAKy1O,WACcx3O,IAAjBR,EAAQymC,KACJzmC,EAAQymC,KACR,IAAI,IAAK,CAACgI,MAvGO,SA6GvBlsC,KAAKqiQ,eACkBpkQ,IAArBR,EAAQg1O,SAAyBh1O,EAAQg1O,SAAWxlO,KAAKmqE,GAAK,EAMhEp3E,KAAKsiQ,gBACmBrkQ,IAAtBR,EAAQ+8I,UAA0B/8I,EAAQ+8I,UAAY,UAMxDx6I,KAAKuiQ,YAAc9kQ,EAAQ8/I,SAM3Bv9I,KAAK0/P,aAA6BzhQ,IAAnBR,EAAQgpE,OAAuBhpE,EAAQgpE,OAAS,KAM/DzmE,KAAKwiQ,cAA+BvkQ,IAApBR,EAAQ+lD,QAAwB/lD,EAAQ+lD,QAAU,EAMlExjD,KAAKyiQ,cAA+BxkQ,IAApBR,EAAQgmD,QAAwBhmD,EAAQgmD,QAAU,EAMlEzjD,KAAK0iQ,gBAAkBjlQ,EAAQ66O,eAC3B76O,EAAQ66O,eACR,KAMJt4O,KAAK2iQ,kBAAoBllQ,EAAQ86O,iBAC7B96O,EAAQ86O,iBACR,KAMJv4O,KAAKy1L,cAA+Bx3L,IAApBR,EAAQ8zD,QAAwB,KAAO9zD,EAAQ8zD,QA8WnE,OAtWE,YAAAloC,MAAA,WACE,IAAM0mB,EAAQ/vC,KAAK+oE,WACnB,OAAO,IAAI65L,EAAK,CACdtnM,KAAMt7D,KAAK49O,UACXpjG,UAAWx6I,KAAK+9O,eAChBtL,SAAUzyO,KAAK89O,cACfvgG,SAAUv9I,KAAK69O,cACfj6L,SAAU5jD,KAAKgnL,cACfgxD,eAAgBh4O,KAAKywO,oBACrB1gM,MAAOzvC,MAAMiF,QAAQwqC,GAASA,EAAM5tC,QAAU4tC,EAC9Cj1B,KAAM9a,KAAKw+O,UACX15K,UAAW9kE,KAAKg+O,eAChB/4K,aAAcjlE,KAAKi+O,kBACnB/5M,KAAMlkC,KAAKy9O,UAAYz9O,KAAKy9O,UAAUp0N,aAAUprB,EAChDwoE,OAAQzmE,KAAK29O,YAAc39O,KAAK29O,YAAYt0N,aAAUprB,EACtDulD,QAASxjD,KAAKo+O,aACd36L,QAASzjD,KAAKq+O,aACd/F,eAAgBt4O,KAAKk+O,oBACjBl+O,KAAKk+O,oBAAoB70N,aACzBprB,EACJs6O,iBAAkBv4O,KAAKm+O,sBACnBn+O,KAAKm+O,sBAAsB90N,aAC3BprB,EACJszD,QAASvxD,KAAKgwD,mBAAgB/xD,KASlC,YAAA4/O,YAAA,WACE,OAAO79O,KAAKuiQ,WAQd,YAAA3kB,QAAA,WACE,OAAO59O,KAAKkiQ,OAQd,YAAApkB,YAAA,WACE,OAAO99O,KAAKqiQ,WAQd,YAAAtkB,aAAA,WACE,OAAO/9O,KAAKsiQ,YAQd,YAAAlkB,WAAA,WACE,OAAOp+O,KAAKwiQ,UAQd,YAAAnkB,WAAA,WACE,OAAOr+O,KAAKyiQ,UAQd,YAAAhlB,QAAA,WACE,OAAOz9O,KAAKy1O,OAQd,YAAAhF,kBAAA,WACE,OAAOzwO,KAAKgwO,iBAQd,YAAAhpD,YAAA,WACE,OAAOhnL,KAAK69L,WAQd,YAAA90H,SAAA,WACE,OAAO/oE,KAAKiwO,QAOd,YAAAS,cAAA,WACE,OAAO1wO,KAAKg/P,aAQd,YAAArhB,UAAA,WACE,OAAO39O,KAAK0/P,SAQd,YAAAlhB,QAAA,WACE,OAAOx+O,KAAKs8O,OAQd,YAAA0B,aAAA,WACE,OAAOh+O,KAAKmiQ,YAQd,YAAAlkB,gBAAA,WACE,OAAOj+O,KAAKoiQ,eAQd,YAAAlkB,kBAAA,WACE,OAAOl+O,KAAK0iQ,iBAQd,YAAAvkB,oBAAA,WACE,OAAOn+O,KAAK2iQ,mBAQd,YAAA3yM,WAAA,WACE,OAAOhwD,KAAKy1L,UASd,YAAAotE,YAAA,SAAYtlH,GACVv9I,KAAKuiQ,UAAYhlH,GASnB,YAAAulH,QAAA,SAAQxnM,GACNt7D,KAAKkiQ,MAAQ5mM,GASf,YAAAynM,YAAA,SAAYtwB,GACVzyO,KAAKqiQ,UAAY5vB,GASnB,YAAAuwB,WAAA,SAAWx/M,GACTxjD,KAAKwiQ,SAAWh/M,GASlB,YAAAy/M,WAAA,SAAWx/M,GACTzjD,KAAKyiQ,SAAWh/M,GASlB,YAAAy/M,aAAA,SAAa1oH,GACXx6I,KAAKsiQ,WAAa9nH,GASpB,YAAA4kH,kBAAA,SAAkBpnB,GAChBh4O,KAAKgwO,gBAAkBgI,GASzB,YAAA6pB,QAAA,SAAQ39N,GACNlkC,KAAKy1O,MAAQvxM,GASf,YAAAiyJ,YAAA,SAAYvyI,GACV5jD,KAAK69L,UAAYj6I,GASnB,YAAAy7M,SAAA,SAAStvN,GACP/vC,KAAKiwO,OAASlgM,EACd/vC,KAAKg/P,aAAc,aAAiB/gQ,IAAV8xC,EAAsBA,EAAQ,IAS1D,YAAA+xN,UAAA,SAAUr7L,GACRzmE,KAAK0/P,QAAUj5L,GASjB,YAAAm8K,QAAA,SAAQ9nO,GACN9a,KAAKs8O,MAAQxhO,GASf,YAAAqoP,aAAA,SAAar+L,GACX9kE,KAAKmiQ,WAAar9L,GASpB,YAAAs+L,gBAAA,SAAgBn+L,GACdjlE,KAAKoiQ,cAAgBn9L,GASvB,YAAAo+L,kBAAA,SAAkBn/N,GAChBlkC,KAAK0iQ,gBAAkBx+N,GASzB,YAAAo/N,oBAAA,SAAoB78L,GAClBzmE,KAAK2iQ,kBAAoBl8L,GAS3B,YAAA88L,WAAA,SAAWhyM,GACTvxD,KAAKy1L,SAAWlkI,GAEpB,EAxeA,iDC3CA,SACE4gJ,MAAO,QACPqxD,KAAM,qCCKD,SAASpzE,EAAet+H,EAAGxd,EAAGC,EAAGkvN,GACtC,YAAsBxlQ,IAAlBwlQ,GACFA,EAAc,GAAK3xM,EACnB2xM,EAAc,GAAKnvN,EACnBmvN,EAAc,GAAKlvN,EACZkvN,GAEA,CAAC3xM,EAAGxd,EAAGC,GAUX,SAASmvN,EAAU5xM,EAAGxd,EAAGC,GAC9B,OAAOud,EAAI,IAAMxd,EAAI,IAAMC,EAQtB,SAASglI,EAAO3I,GACrB,OAAO8yF,EAAU9yF,EAAU,GAAIA,EAAU,GAAIA,EAAU,IAQlD,SAAS+yF,EAAsB3pF,GAC9B,MAAYA,EACf7/I,UAAU6/I,EAAQlqF,YAAY,KAAO,EAAGkqF,EAAQx7K,QAChD0D,MAAM,KACNgH,IAAIgB,QACP,OAAOw5P,EAJC,KAAG,KAAG,MAYT,SAASE,EAAQ//P,GACtB,OAAOA,EAAI3B,MAAM,KAAKgH,IAAIgB,QAOrB,SAAS+9I,EAAK2oB,GACnB,OAAQA,EAAU,IAAMA,EAAU,IAAMA,EAAU,GAQ7C,SAASizF,EAAiBjzF,EAAW41C,GAC1C,IAAM10J,EAAI8+G,EAAU,GACdt8H,EAAIs8H,EAAU,GACdr8H,EAAIq8H,EAAU,GAEpB,GAAI41C,EAASluB,aAAexmI,GAAKA,EAAI00J,EAASruB,aAC5C,OAAO,EAET,IAAMnI,EAAYw2B,EAAS4uC,iBAAiBtjM,GAC5C,OAAKk+H,GAGIA,EAAUF,WAAWx7I,EAAGC,2PC7E7BuvN,EAAe,CAAC,EAAG,EAAG,GA8oB5B,QAjmBA,WAIE,WAAYrmQ,GAwBV,IAAIs2L,EACJ,GApBA/zL,KAAK6zL,aAA8B51L,IAApBR,EAAQo2L,QAAwBp2L,EAAQo2L,QAAU,EAMjE7zL,KAAKw1L,aAAe/3L,EAAQ42L,aAC5B,QACE,QACEr0L,KAAKw1L,cACL,SAAU5vJ,EAAGp6B,GACX,OAAOA,EAAIo6B,KAEb,GAEF,KAKGnoC,EAAQ06B,QACX,IAAK,IAAI74B,EAAI,EAAG8sK,EAAKpsK,KAAKw1L,aAAah3L,OAAS,EAAGc,EAAI8sK,IAAM9sK,EAC3D,GAAKy0L,GAGH,GAAI/zL,KAAKw1L,aAAal2L,GAAKU,KAAKw1L,aAAal2L,EAAI,KAAOy0L,EAAY,CAClEA,OAAa91L,EACb,YAJF81L,EAAa/zL,KAAKw1L,aAAal2L,GAAKU,KAAKw1L,aAAal2L,EAAI,GAchEU,KAAKu1L,YAAcxB,EAMnB/zL,KAAK8zL,QAAU9zL,KAAKw1L,aAAah3L,OAAS,EAM1CwB,KAAKw+P,aAA6BvgQ,IAAnBR,EAAQ+1B,OAAuB/1B,EAAQ+1B,OAAS,KAM/DxzB,KAAK+jQ,SAAW,UACQ9lQ,IAApBR,EAAQ06B,UACVn4B,KAAK+jQ,SAAWtmQ,EAAQ06B,SACxB,OAAOn4B,KAAK+jQ,SAASvlQ,QAAUwB,KAAKw1L,aAAah3L,OAAQ,KAG3D,IAAMkwK,EAASjxK,EAAQixK,YAERzwK,IAAXywK,GAAyB1uK,KAAKw+P,SAAYx+P,KAAK+jQ,WACjD/jQ,KAAKw+P,SAAU,QAAW9vF,KAG5B,QACI1uK,KAAKw+P,SAAWx+P,KAAK+jQ,UAAc/jQ,KAAKw+P,UAAYx+P,KAAK+jQ,SAC3D,IAOF/jQ,KAAKgkQ,WAAa,UACQ/lQ,IAAtBR,EAAQwmQ,YACVjkQ,KAAKgkQ,WAAavmQ,EAAQwmQ,WAC1B,OAAOjkQ,KAAKgkQ,WAAWxlQ,QAAUwB,KAAKw1L,aAAah3L,OAAQ,KAO7DwB,KAAKkkQ,eACkBjmQ,IAArBR,EAAQupN,SACJvpN,EAAQupN,SACPhnN,KAAKgkQ,WAEN,KADA,KAEN,QACIhkQ,KAAKkkQ,WAAalkQ,KAAKgkQ,YACtBhkQ,KAAKkkQ,YAAclkQ,KAAKgkQ,WAC3B,IAOFhkQ,KAAKyuM,aAAqBxwM,IAAXywK,EAAuBA,EAAS,KAM/C1uK,KAAKmkQ,gBAAkB,KAMvBnkQ,KAAKokQ,SAAW,CAAC,EAAG,GAMpBpkQ,KAAKszP,WAAa,CAAC,EAAG,EAAG,EAAG,QAENr1P,IAAlBR,EAAQ4mQ,MACVrkQ,KAAKmkQ,gBAAkB1mQ,EAAQ4mQ,MAAMn7P,KAAI,SAAUurB,EAAMq9B,GACvD,IAAMk+H,EAAY,IAAIK,EAAA,EACpBpjL,KAAK6d,IAAI,EAAG2J,EAAK,IACjBxnB,KAAK6mB,IAAIW,EAAK,GAAK,GAAI,GACvBxnB,KAAK6d,IAAI,EAAG2J,EAAK,IACjBxnB,KAAK6mB,IAAIW,EAAK,GAAK,GAAI,IAEzB,GAAIi6I,EAAQ,CACV,IAAM41F,EAAsBtkQ,KAAKy6N,0BAA0B/rD,EAAQ58G,GACnEk+H,EAAUvqI,KAAOx4C,KAAK6mB,IAAIwwO,EAAoB7+M,KAAMuqI,EAAUvqI,MAC9DuqI,EAAU1qI,KAAOr4C,KAAK6d,IAAIw5O,EAAoBh/M,KAAM0qI,EAAU1qI,MAC9D0qI,EAAUrqI,KAAO14C,KAAK6mB,IAAIwwO,EAAoB3+M,KAAMqqI,EAAUrqI,MAC9DqqI,EAAUzqI,KAAOt4C,KAAK6d,IAAIw5O,EAAoB/+M,KAAMyqI,EAAUzqI,MAEhE,OAAOyqI,IACNhwL,MACM0uK,GACT1uK,KAAKukQ,qBAAqB71F,GA0chC,OA9bE,YAAAwsF,iBAAA,SAAiBxsF,EAAQ4nB,EAAM96K,GAE7B,IADA,IAAMw0K,EAAYhwL,KAAKy6N,0BAA0B/rD,EAAQ4nB,GAChDh3L,EAAI0wL,EAAUvqI,KAAM2mH,EAAK4jB,EAAU1qI,KAAMhmD,GAAK8sK,IAAM9sK,EAC3D,IAAK,IAAI6tD,EAAI6iI,EAAUrqI,KAAMsxI,EAAKjH,EAAUzqI,KAAM4H,GAAK8pI,IAAM9pI,EAC3D3xC,EAAS,CAAC86K,EAAMh3L,EAAG6tD,KAYzB,YAAAg4L,gCAAA,SACEv0E,EACAp1J,EACAgpP,EACA3/D,GAEA,IAAI7U,EAAW17I,EAAGC,EACdkwN,EAAkB,KAClB3yM,EAAI8+G,EAAU,GAAK,EAOvB,IANyB,IAArB5wK,KAAKu1L,aACPjhJ,EAAIs8H,EAAU,GACdr8H,EAAIq8H,EAAU,IAEd6zF,EAAkBzkQ,KAAKulN,mBAAmB30C,EAAWi0B,GAEhD/yI,GAAK9xD,KAAK6zL,SAAS,CAYxB,GAXyB,IAArB7zL,KAAKu1L,aACPjhJ,EAAIrnC,KAAKwjB,MAAM6jB,EAAI,GACnBC,EAAItnC,KAAKwjB,MAAM8jB,EAAI,GACnBy7I,GAAY,OAAwB17I,EAAGA,EAAGC,EAAGA,EAAGiwN,IAEhDx0E,EAAYhwL,KAAKy6N,0BACfgqC,EACA3yM,EACA0yM,GAGAhpP,EAASs2C,EAAGk+H,GACd,OAAO,IAEPl+H,EAEJ,OAAO,GAQT,YAAAg9G,UAAA,WACE,OAAO9uK,KAAKyuM,SAQd,YAAAtW,WAAA,WACE,OAAOn4L,KAAK8zL,SAQd,YAAAwE,WAAA,WACE,OAAOt4L,KAAK6zL,SASd,YAAAynC,UAAA,SAAUxpK,GACR,OAAI9xD,KAAKw+P,QACAx+P,KAAKw+P,QAELx+P,KAAK+jQ,SAASjyM,IAUzB,YAAAm9G,cAAA,SAAcn9G,GACZ,OAAO9xD,KAAKw1L,aAAa1jI,IAQ3B,YAAA2mI,eAAA,WACE,OAAOz4L,KAAKw1L,cASd,YAAA0vD,2BAAA,SAA2Bt0E,EAAW4zF,EAAe3/D,GACnD,GAAIj0B,EAAU,GAAK5wK,KAAK8zL,QAAS,CAC/B,GAAyB,IAArB9zL,KAAKu1L,YAAmB,CAC1B,IAAM9vI,EAAsB,EAAfmrH,EAAU,GACjBjrH,EAAsB,EAAfirH,EAAU,GACvB,OAAO,OACLnrH,EACAA,EAAO,EACPE,EACAA,EAAO,EACP6+M,GAGJ,IAAMC,EAAkBzkQ,KAAKulN,mBAC3B30C,EACAi0B,GAAc7kM,KAAKszP,YAErB,OAAOtzP,KAAKy6N,0BACVgqC,EACA7zF,EAAU,GAAK,EACf4zF,GAGJ,OAAO,MAST,YAAAtoC,6BAAA,SAA6BtrD,EAAW9+G,EAAG0yM,GACzC,GAAI1yM,EAAI9xD,KAAK8zL,SAAWhiI,EAAI9xD,KAAK6zL,QAC/B,OAAO,KAGT,IAAM6wE,EAAa9zF,EAAU,GACvB+zF,EAAa/zF,EAAU,GACvBg0F,EAAah0F,EAAU,GAE7B,GAAI9+G,IAAM4yM,EACR,OAAO,OACLC,EACAC,EACAD,EACAC,EACAJ,GAIJ,GAAIxkQ,KAAKu1L,YAAa,CACpB,IAAMtpJ,EAASh/B,KAAKghD,IAAIjuD,KAAKu1L,YAAazjI,EAAI4yM,GACxCj/M,EAAOx4C,KAAKwjB,MAAMk0O,EAAa14N,GAC/B0Z,EAAO14C,KAAKwjB,MAAMm0O,EAAa34N,GACrC,GAAI6lB,EAAI4yM,EACN,OAAO,OAAwBj/M,EAAMA,EAAME,EAAMA,EAAM6+M,GAGzD,IAAMl/M,EAAOr4C,KAAKwjB,MAAMwb,GAAU04N,EAAa,IAAM,EAC/Cp/M,EAAOt4C,KAAKwjB,MAAMwb,GAAU24N,EAAa,IAAM,EACrD,OAAO,OAAwBn/M,EAAMH,EAAMK,EAAMJ,EAAMi/M,GAGzD,IAAMC,EAAkBzkQ,KAAKulN,mBAAmB30C,EAAW5wK,KAAKszP,YAChE,OAAOtzP,KAAKy6N,0BAA0BgqC,EAAiB3yM,EAAG0yM,IAU5D,YAAAK,mBAAA,SAAmB/yM,EAAGk+H,EAAW6U,GAC/B,IAAMrxK,EAASxzB,KAAKs7N,UAAUxpK,GACxB68G,EAAa3uK,KAAKivK,cAAcn9G,GAChCk1J,GAAW,QAAOhnN,KAAKinN,YAAYn1J,GAAI9xD,KAAKokQ,UAC5C3+M,EAAOjyB,EAAO,GAAKw8J,EAAUvqI,KAAOuhK,EAAS,GAAKr4C,EAClDrpH,EAAO9xB,EAAO,IAAMw8J,EAAU1qI,KAAO,GAAK0hK,EAAS,GAAKr4C,EACxDhpH,EAAOnyB,EAAO,GAAKw8J,EAAUrqI,KAAOqhK,EAAS,GAAKr4C,EAClDppH,EAAO/xB,EAAO,IAAMw8J,EAAUzqI,KAAO,GAAKyhK,EAAS,GAAKr4C,EAC9D,OAAO,QAAelpH,EAAME,EAAML,EAAMC,EAAMs/I,IAUhD,YAAA41B,0BAAA,SAA0B/rD,EAAQ58G,EAAG0yM,GACnC,IAAM5zF,EAAYkzF,EAClB9jQ,KAAK8kQ,uBAAuBp2F,EAAO,GAAIA,EAAO,GAAI58G,GAAG,EAAO8+G,GAC5D,IAAMnrH,EAAOmrH,EAAU,GACjBjrH,EAAOirH,EAAU,GAEvB,OADA5wK,KAAK8kQ,uBAAuBp2F,EAAO,GAAIA,EAAO,GAAI58G,GAAG,EAAM8+G,IACpD,OACLnrH,EACAmrH,EAAU,GACVjrH,EACAirH,EAAU,GACV4zF,IAQJ,YAAAr9C,mBAAA,SAAmBv2C,GACjB,IAAMp9I,EAASxzB,KAAKs7N,UAAU1qD,EAAU,IAClCjC,EAAa3uK,KAAKivK,cAAc2B,EAAU,IAC1Co2C,GAAW,QAAOhnN,KAAKinN,YAAYr2C,EAAU,IAAK5wK,KAAKokQ,UAC7D,MAAO,CACL5wO,EAAO,IAAMo9I,EAAU,GAAK,IAAOo2C,EAAS,GAAKr4C,EACjDn7I,EAAO,IAAMo9I,EAAU,GAAK,IAAOo2C,EAAS,GAAKr4C,IAYrD,YAAA42C,mBAAA,SAAmB30C,EAAWi0B,GAC5B,IAAMrxK,EAASxzB,KAAKs7N,UAAU1qD,EAAU,IAClCjC,EAAa3uK,KAAKivK,cAAc2B,EAAU,IAC1Co2C,GAAW,QAAOhnN,KAAKinN,YAAYr2C,EAAU,IAAK5wK,KAAKokQ,UACvD3+M,EAAOjyB,EAAO,GAAKo9I,EAAU,GAAKo2C,EAAS,GAAKr4C,EAChDhpH,EAAOnyB,EAAO,IAAMo9I,EAAU,GAAK,GAAKo2C,EAAS,GAAKr4C,EACtDrpH,EAAOG,EAAOuhK,EAAS,GAAKr4C,EAC5BppH,EAAOI,EAAOqhK,EAAS,GAAKr4C,EAClC,OAAO,QAAelpH,EAAME,EAAML,EAAMC,EAAMs/I,IAchD,YAAA+hB,kCAAA,SAAkCj1C,EAAYhD,EAAY80F,GACxD,OAAOzjQ,KAAK+kQ,gCACVpzF,EAAW,GACXA,EAAW,GACXhD,GACA,EACA80F,IAiBJ,YAAAsB,gCAAA,SACEzwN,EACAC,EACAo6H,EACAq2F,EACAvB,GAEA,IAAM3xM,EAAI9xD,KAAKknN,kBAAkBv4C,GAC3B5+H,EAAQ4+H,EAAa3uK,KAAKivK,cAAcn9G,GACxCt+B,EAASxzB,KAAKs7N,UAAUxpK,GACxBk1J,GAAW,QAAOhnN,KAAKinN,YAAYn1J,GAAI9xD,KAAKokQ,UAE9CO,EAAc50N,GAASuE,EAAI9gB,EAAO,IAAOm7I,EAAaq4C,EAAS,GAC/D49C,EAAc70N,GAASvc,EAAO,GAAK+gB,GAAMo6H,EAAaq4C,EAAS,GAUnE,OARIg+C,GACFL,GAAa,QAAKA,EA5fP,GA4f+B,EAC1CC,GAAa,QAAKA,EA7fP,GA6f+B,IAE1CD,GAAa,QAAMA,EA/fR,GAggBXC,GAAa,QAAMA,EAhgBR,KAmgBN,QAAwB9yM,EAAG6yM,EAAYC,EAAYnB,IAkB5D,YAAAqB,uBAAA,SAAuBxwN,EAAGC,EAAGud,EAAGkzM,EAA2BvB,GACzD,IAAMjwO,EAASxzB,KAAKs7N,UAAUxpK,GACxB68G,EAAa3uK,KAAKivK,cAAcn9G,GAChCk1J,GAAW,QAAOhnN,KAAKinN,YAAYn1J,GAAI9xD,KAAKokQ,UAE9CO,GAAcrwN,EAAI9gB,EAAO,IAAMm7I,EAAaq4C,EAAS,GACrD49C,GAAcpxO,EAAO,GAAK+gB,GAAKo6H,EAAaq4C,EAAS,GAUzD,OARIg+C,GACFL,GAAa,QAAKA,EA9hBP,GA8hB+B,EAC1CC,GAAa,QAAKA,EA/hBP,GA+hB+B,IAE1CD,GAAa,QAAMA,EAjiBR,GAkiBXC,GAAa,QAAMA,EAliBR,KAqiBN,QAAwB9yM,EAAG6yM,EAAYC,EAAYnB,IAW5D,YAAAznC,yBAAA,SAAyBrqD,EAAY7/G,EAAG2xM,GACtC,OAAOzjQ,KAAK8kQ,uBACVnzF,EAAW,GACXA,EAAW,GACX7/G,GACA,EACA2xM,IAQJ,YAAAwB,uBAAA,SAAuBr0F,GACrB,OAAO5wK,KAAKw1L,aAAa5kB,EAAU,KAWrC,YAAAq2C,YAAA,SAAYn1J,GACV,OAAI9xD,KAAKkkQ,UACAlkQ,KAAKkkQ,UAELlkQ,KAAKgkQ,WAAWlyM,IAQ3B,YAAAsjM,iBAAA,SAAiBtjM,GACf,OAAK9xD,KAAKmkQ,gBAKDnkQ,KAAKmkQ,gBAAgBryM,GAJrB9xD,KAAKyuM,QACRzuM,KAAKy6N,0BAA0Bz6N,KAAKyuM,QAAS38I,GAC7C,MAuBR,YAAAo1J,kBAAA,SAAkBv4C,EAAYusB,GAC5B,IAAMppI,GAAI,QACR9xD,KAAKw1L,aACL7mB,EACAusB,GAAiB,GAEnB,OAAO,QAAMppI,EAAG9xD,KAAK6zL,QAAS7zL,KAAK8zL,UAOrC,YAAAywE,qBAAA,SAAqB71F,GAGnB,IAFA,IAAMlwK,EAASwB,KAAKw1L,aAAah3L,OAC3B0mQ,EAAiB,IAAI5kQ,MAAM9B,GACxBszD,EAAI9xD,KAAK6zL,QAAS/hI,EAAItzD,IAAUszD,EACvCozM,EAAepzM,GAAK9xD,KAAKy6N,0BAA0B/rD,EAAQ58G,GAE7D9xD,KAAKmkQ,gBAAkBe,GAE3B,EA/lBA,2BCzCO,SAASC,EAAiBjzF,GAC/B,IAAIs0C,EAAWt0C,EAAW00D,qBAK1B,OAJKpgB,IACHA,EAAW4+C,EAAoBlzF,GAC/BA,EAAW20D,mBAAmBrgB,IAEzBA,EASF,SAAS5lB,EAAM4lB,EAAU51C,EAAWsB,GACzC,IAAMpgH,EAAI8+G,EAAU,GACdvwH,EAASmmK,EAASW,mBAAmBv2C,GACrCyB,EAAmBgzF,EAAqBnzF,GAC9C,IAAK,QAAmBG,EAAkBhyH,GAQxC,OAAOuwH,EAPP,IAAM0B,GAAa,QAASD,GACtBwuB,EAAa5zL,KAAK+rD,MACrBq5G,EAAiB,GAAKhyH,EAAO,IAAMiyH,GAGtC,OADAjyH,EAAO,IAAMiyH,EAAauuB,EACnB2lB,EAASwV,yBAAyB37K,EAAQyR,GA8C9C,SAASwzM,EAAUv5F,GACxB,IAAMw5F,EAAax5F,GAAe,GAE5B2C,EAAS62F,EAAW72F,SAAU,QAAc,aAAaI,YAEzD02F,EAAc,CAClB92F,OAAQA,EACRmlB,QAAS0xE,EAAW1xE,QACpBmzB,SAAUu+C,EAAWv+C,SACrB3yB,YAAaoxE,EACX/2F,EACA62F,EAAWzxE,QACXyxE,EAAWv+C,SACXu+C,EAAW7zE,gBAGf,OAAO,IAAI,EAAS8zE,GAatB,SAASC,EACP/2F,EACAg3F,EACAC,EACAC,GAiBA,IAfA,IAAM9xE,OAA0B71L,IAAhBynQ,EAA4BA,EAAc,IAEpD7pQ,GAAS,QAAU6yK,GACnB9yK,GAAQ,QAAS8yK,GAEjBs4C,GAAW,aACE/oN,IAAjB0nQ,EAA6BA,EAAe,KAExCj0E,EACJk0E,EAAoB,EAChBA,EACA34P,KAAK6mB,IAAIl4B,EAAQorN,EAAS,GAAInrN,EAASmrN,EAAS,IAEhDxoN,EAASs1L,EAAU,EACnBO,EAAc,IAAI/zL,MAAM9B,GACrBszD,EAAI,EAAGA,EAAItzD,IAAUszD,EAC5BuiI,EAAYviI,GAAK4/H,EAAgBzkL,KAAKghD,IAAI,EAAG6D,GAE/C,OAAOuiI,EAYF,SAAS+wE,EACdlzF,EACAwzF,EACAC,EACAE,GAGA,OAvGK,SAAyBn3F,EAAQg3F,EAAaC,EAAcE,GACjE,IAAM1/D,OAAwBloM,IAAf4nQ,EAA2BA,EAAaC,EAAA,WAEjDzxE,EAAcoxE,EAAsB/2F,EAAQg3F,EAAaC,GAE/D,OAAO,IAAI,EAAS,CAClBj3F,OAAQA,EACRl7I,QAAQ,QAAUk7I,EAAQy3B,GAC1B9R,YAAaA,EACb2yB,SAAU2+C,IA8FLI,CADQV,EAAqBnzF,GACLwzF,EAAaC,EAAcE,GASrD,SAASR,EAAqBnzF,GAEnC,IAAIxD,GADJwD,GAAa,QAAcA,IACHpD,YACxB,IAAKJ,EAAQ,CACX,IAAMlzF,EACH,IAAM,KAAgBi5G,EAAA,YAAkBviB,EAAWwiB,mBACtDhmB,GAAS,SAAgBlzF,GAAOA,EAAMA,EAAMA,GAE9C,OAAOkzF,wDC9KF,IAAMs3F,EAAmB,GAMnBC,EAAoB,0JCiQ7BC,sBAlPEC,EAAO,IAAI7lQ,MAAM,GAMhB,SAASgnE,IACd,MAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAQlB,SAAS3xB,EAAM2pG,GACpB,OAAO9zG,EAAI8zG,EAAW,EAAG,EAAG,EAAG,EAAG,EAAG,GAUhC,SAAS8E,EAASgiH,EAAYC,GACnC,IAAM5qK,EAAK2qK,EAAW,GAChBrhI,EAAKqhI,EAAW,GAChBh6N,EAAKg6N,EAAW,GAChBE,EAAKF,EAAW,GAChBG,EAAKH,EAAW,GAChBI,EAAKJ,EAAW,GAChBvuG,EAAKwuG,EAAW,GAChBrhI,EAAKqhI,EAAW,GAChBn3J,EAAKm3J,EAAW,GAChBruG,EAAKquG,EAAW,GAChBjsH,EAAKisH,EAAW,GAChBpuG,EAAKouG,EAAW,GAStB,OAPAD,EAAW,GAAK3qK,EAAKo8D,EAAKzrH,EAAK44F,EAC/BohI,EAAW,GAAKrhI,EAAK8yB,EAAKyuG,EAAKthI,EAC/BohI,EAAW,GAAK3qK,EAAKyT,EAAK9iE,EAAK4rH,EAC/BouG,EAAW,GAAKrhI,EAAK71B,EAAKo3J,EAAKtuG,EAC/BouG,EAAW,GAAK3qK,EAAK2+C,EAAKhuG,EAAK6rH,EAAKsuG,EACpCH,EAAW,GAAKrhI,EAAKqV,EAAKksH,EAAKruG,EAAKuuG,EAE7BJ,EAcF,SAAS56N,EAAI8zG,EAAW15G,EAAGp6B,EAAGm3B,EAAGmL,EAAGxvC,EAAG4jG,GAO5C,OANAo9C,EAAU,GAAK15G,EACf05G,EAAU,GAAK9zI,EACf8zI,EAAU,GAAK38G,EACf28G,EAAU,GAAKxxG,EACfwxG,EAAU,GAAKhhJ,EACfghJ,EAAU,GAAKp9C,EACRo9C,EASF,SAASmnH,EAAaL,EAAYC,GAOvC,OANAD,EAAW,GAAKC,EAAW,GAC3BD,EAAW,GAAKC,EAAW,GAC3BD,EAAW,GAAKC,EAAW,GAC3BD,EAAW,GAAKC,EAAW,GAC3BD,EAAW,GAAKC,EAAW,GAC3BD,EAAW,GAAKC,EAAW,GACpBD,EAYF,SAASnmQ,EAAMq/I,EAAWqyB,GAC/B,IAAMr9H,EAAIq9H,EAAW,GACfp9H,EAAIo9H,EAAW,GAGrB,OAFAA,EAAW,GAAKryB,EAAU,GAAKhrG,EAAIgrG,EAAU,GAAK/qG,EAAI+qG,EAAU,GAChEqyB,EAAW,GAAKryB,EAAU,GAAKhrG,EAAIgrG,EAAU,GAAK/qG,EAAI+qG,EAAU,GACzDqyB,EASF,SAASz8E,EAAOoqD,EAAWl6F,GAChC,IAAMN,EAAM73C,KAAK63C,IAAIM,GACfJ,EAAM/3C,KAAK+3C,IAAII,GACrB,OAAOg/F,EAAS9E,EAAW9zG,EAAI26N,EAAMrhN,EAAKE,GAAMA,EAAKF,EAAK,EAAG,IAUxD,SAAS/U,EAAMuvG,EAAWhrG,EAAGC,GAClC,OAAO6vG,EAAS9E,EAAW9zG,EAAI26N,EAAM7xN,EAAG,EAAG,EAAGC,EAAG,EAAG,IAU/C,SAASmyN,EAAU14P,EAAQsmC,EAAGC,GACnC,OAAO/I,EAAIx9B,EAAQsmC,EAAG,EAAG,EAAGC,EAAG,EAAG,GAU7B,SAAS0jC,EAAUqnE,EAAW5gE,EAAI6lC,GACvC,OAAO6/B,EAAS9E,EAAW9zG,EAAI26N,EAAM,EAAG,EAAG,EAAG,EAAGznL,EAAI6lC,IAgBhD,SAASoiJ,EAAQrnH,EAAW45D,EAAKC,EAAK9zF,EAAIC,EAAIlgE,EAAOg0J,EAAKC,GAC/D,IAAMr0J,EAAM/3C,KAAK+3C,IAAII,GACfN,EAAM73C,KAAK63C,IAAIM,GAOrB,OANAk6F,EAAU,GAAKj6B,EAAKvgE,EACpBw6F,EAAU,GAAKh6B,EAAKtgE,EACpBs6F,EAAU,IAAMj6B,EAAKrgE,EACrBs6F,EAAU,GAAKh6B,EAAKxgE,EACpBw6F,EAAU,GAAK85D,EAAM/zF,EAAKvgE,EAAMu0J,EAAMh0F,EAAKrgE,EAAMk0J,EACjD55D,EAAU,GAAK85D,EAAM9zF,EAAKtgE,EAAMq0J,EAAM/zF,EAAKxgE,EAAMq0J,EAC1C75D,EAqCF,SAASsnH,EAAY54P,EAAQrS,GAClC,IAyB0B+lO,EAzBpBmlC,GAyBoBnlC,EAzBF/lO,GA0Bb,GAAK+lO,EAAI,GAAKA,EAAI,GAAKA,EAAI,IAzBtC,OAAe,IAARmlC,EAAW,IAElB,IAAMjhO,EAAIjqC,EAAO,GACX6P,EAAI7P,EAAO,GACXgnC,EAAIhnC,EAAO,GACXmyC,EAAInyC,EAAO,GACX2C,EAAI3C,EAAO,GACXumG,EAAIvmG,EAAO,GASjB,OAPAqS,EAAO,GAAK8/B,EAAI+4N,EAChB74P,EAAO,IAAMxC,EAAIq7P,EACjB74P,EAAO,IAAM20B,EAAIkkO,EACjB74P,EAAO,GAAK43B,EAAIihO,EAChB74P,EAAO,IAAM20B,EAAIu/D,EAAIp0D,EAAIxvC,GAAKuoQ,EAC9B74P,EAAO,KAAO43B,EAAIs8D,EAAI12F,EAAIlN,GAAKuoQ,EAExB74P,EAwBF,SAASlO,EAAS4hO,GACvB,IAAMolC,EAAkB,UAAYplC,EAAIt/N,KAAK,MAAQ,IACrD,GAAI,KACF,OAAO0kQ,EAET,IAAMnyO,EACJuxO,IAAuBA,EAAqBjhQ,SAASkS,cAAc,QAErE,OADAwd,EAAK+yB,MAAM43F,UAAYwnH,EAChBnyO,EAAK+yB,MAAM43F,wCCxRb,SAAS1zF,IACd,OACE,WACE,MAAM,IAAI/qD,MAAM,kCAFI,uCAY1B,IAAIkmQ,EAAc,EAWX,SAASC,EAAOzmQ,GACrB,OAAOA,EAAI0mQ,SAAW1mQ,EAAI0mQ,OAAS/hQ,SAAS6hQ,IAOvC,IAAMG,EAAU,sJCvCvB,MAAMC,EAAelrQ,OAAOqrE,OAAO,MACnC6/L,EAAmB,KAAI,IACvBA,EAAoB,MAAI,IACxBA,EAAmB,KAAI,IACvBA,EAAmB,KAAI,IACvBA,EAAsB,QAAI,IAC1BA,EAAsB,QAAI,IAC1BA,EAAmB,KAAI,IACvB,MAAMC,EAAuBnrQ,OAAOqrE,OAAO,MAC3CrrE,OAAOkQ,KAAKg7P,GAAc3kQ,SAAQqB,IAC9BujQ,EAAqBD,EAAatjQ,IAAQA,KAE9C,MAAMwjQ,EAAe,CAAEhpQ,KAAM,QAASoN,KAAM,gBCXtC67P,EAAiC,mBAATC,MACT,oBAATA,MACqC,6BAAzCtrQ,OAAO4D,UAAUC,SAASa,KAAK4mQ,MACjCC,EAA+C,mBAAhBtmI,YA4B/BumI,EAAqB,CAACh8P,EAAM+P,KAC9B,MAAMksP,EAAa,IAAIC,WAKvB,OAJAD,EAAW1oP,OAAS,WAChB,MAAMozI,EAAUs1G,EAAWvgQ,OAAOjF,MAAM,KAAK,GAC7CsZ,EAAS,IAAM42I,IAEZs1G,EAAWE,cAAcn8P,IAEpC,EA7BqB,EAAGpN,KAAAA,EAAMoN,KAAAA,GAAQo8P,EAAgBrsP,KAClD,OAAI8rP,GAAkB77P,aAAgB87P,KAC9BM,EACOrsP,EAAS/P,GAGTg8P,EAAmBh8P,EAAM+P,GAG/BgsP,IACJ/7P,aAAgBy1H,cAfV3gI,EAegCkL,EAdN,mBAAvBy1H,YAAYC,OACpBD,YAAYC,OAAO5gI,GACnBA,GAAOA,EAAIgU,kBAAkB2sH,cAa3B2mI,EACOrsP,EAAS/P,GAGTg8P,EAAmB,IAAIF,KAAK,CAAC97P,IAAQ+P,GAI7CA,EAAS2rP,EAAa9oQ,IAASoN,GAAQ,KAxBnClL,IAAAA,GCNT4yO,EAAQ,mEAERjqH,EAA+B,oBAAfkY,WAA6B,GAAK,IAAIA,WAAW,KACvE,IAAK,IAAI9hI,EAAI,EAAGA,EAAI6zO,EAAM30O,OAAQc,IAC9B4pH,EAAOiqH,EAAM5sG,WAAWjnI,IAAMA,EAE3B,MCJD,EAA+C,mBAAhB4hI,YA4B/B4mI,EAAqB,CAACr8P,EAAMs8P,KAC9B,GAAI,EAAuB,CACvB,MAAMC,EDVQ,CAACC,IACnB,IAA8D3oQ,EAAU4oQ,EAAUC,EAAUC,EAAUC,EAAlGC,EAA+B,IAAhBL,EAAOzpQ,OAAe+9B,EAAM0rO,EAAOzpQ,OAAW2vB,EAAI,EACnC,MAA9B85O,EAAOA,EAAOzpQ,OAAS,KACvB8pQ,IACkC,MAA9BL,EAAOA,EAAOzpQ,OAAS,IACvB8pQ,KAGR,MAAMC,EAAc,IAAIrnI,YAAYonI,GAAeE,EAAQ,IAAIpnI,WAAWmnI,GAC1E,IAAKjpQ,EAAI,EAAGA,EAAIi9B,EAAKj9B,GAAK,EACtB4oQ,EAAWh/I,EAAO++I,EAAO1hI,WAAWjnI,IACpC6oQ,EAAWj/I,EAAO++I,EAAO1hI,WAAWjnI,EAAI,IACxC8oQ,EAAWl/I,EAAO++I,EAAO1hI,WAAWjnI,EAAI,IACxC+oQ,EAAWn/I,EAAO++I,EAAO1hI,WAAWjnI,EAAI,IACxCkpQ,EAAMr6O,KAAQ+5O,GAAY,EAAMC,GAAY,EAC5CK,EAAMr6O,MAAoB,GAAXg6O,IAAkB,EAAMC,GAAY,EACnDI,EAAMr6O,MAAoB,EAAXi6O,IAAiB,EAAiB,GAAXC,EAE1C,OAAOE,GCRa3jI,CAAOn5H,GACvB,OAAOg9P,EAAUT,EAASD,GAG1B,MAAO,CAAEE,QAAQ,EAAMx8P,KAAAA,IAGzBg9P,EAAY,CAACh9P,EAAMs8P,IAEZ,SADDA,GAEOt8P,aAAgBy1H,YAAc,IAAIqmI,KAAK,CAAC97P,IAGxCA,EAGnB,EA7CqB,CAACi9P,EAAeX,KACjC,GAA6B,iBAAlBW,EACP,MAAO,CACHrqQ,KAAM,UACNoN,KAAMg9P,EAAUC,EAAeX,IAGvC,MAAM1pQ,EAAOqqQ,EAAc74N,OAAO,GAClC,MAAa,MAATxxC,EACO,CACHA,KAAM,UACNoN,KAAMq8P,EAAmBY,EAAcvuO,UAAU,GAAI4tO,IAG1CX,EAAqB/oQ,GAIjCqqQ,EAAclqQ,OAAS,EACxB,CACEH,KAAM+oQ,EAAqB/oQ,GAC3BoN,KAAMi9P,EAAcvuO,UAAU,IAEhC,CACE97B,KAAM+oQ,EAAqB/oQ,IARxBgpQ,GCjBTsB,EAAYzjQ,OAAOkgI,aAAa,ICI/B,SAASwjI,EAAQroQ,GACtB,GAAIA,EAAK,OAWX,SAAeA,GACb,IAAK,IAAIsD,KAAO+kQ,EAAQ/oQ,UACtBU,EAAIsD,GAAO+kQ,EAAQ/oQ,UAAUgE,GAE/B,OAAOtD,EAfSy7H,CAAMz7H,GA2BxBqoQ,EAAQ/oQ,UAAU09H,GAClBqrI,EAAQ/oQ,UAAUoY,iBAAmB,SAAS/a,EAAO2e,GAInD,OAHA7b,KAAK6oQ,WAAa7oQ,KAAK6oQ,YAAc,IACpC7oQ,KAAK6oQ,WAAW,IAAM3rQ,GAAS8C,KAAK6oQ,WAAW,IAAM3rQ,IAAU,IAC7DkH,KAAKyX,GACD7b,MAaT4oQ,EAAQ/oQ,UAAUsxB,KAAO,SAASj0B,EAAO2e,GACvC,SAAS0hH,IACPv9H,KAAK8oQ,IAAI5rQ,EAAOqgI,GAChB1hH,EAAG5b,MAAMD,KAAMkc,WAKjB,OAFAqhH,EAAG1hH,GAAKA,EACR7b,KAAKu9H,GAAGrgI,EAAOqgI,GACRv9H,MAaT4oQ,EAAQ/oQ,UAAUipQ,IAClBF,EAAQ/oQ,UAAUg1D,eAClB+zM,EAAQ/oQ,UAAUkpQ,mBAClBH,EAAQ/oQ,UAAUwxB,oBAAsB,SAASn0B,EAAO2e,GAItD,GAHA7b,KAAK6oQ,WAAa7oQ,KAAK6oQ,YAAc,GAGjC,GAAK3sP,UAAU1d,OAEjB,OADAwB,KAAK6oQ,WAAa,GACX7oQ,KAIT,IAUIkxB,EAVAqZ,EAAYvqC,KAAK6oQ,WAAW,IAAM3rQ,GACtC,IAAKqtC,EAAW,OAAOvqC,KAGvB,GAAI,GAAKkc,UAAU1d,OAEjB,cADOwB,KAAK6oQ,WAAW,IAAM3rQ,GACtB8C,KAKT,IAAK,IAAIV,EAAI,EAAGA,EAAIirC,EAAU/rC,OAAQc,IAEpC,IADA4xB,EAAKqZ,EAAUjrC,MACJuc,GAAMqV,EAAGrV,KAAOA,EAAI,CAC7B0uB,EAAUjmC,OAAOhF,EAAG,GACpB,MAUJ,OAJyB,IAArBirC,EAAU/rC,eACLwB,KAAK6oQ,WAAW,IAAM3rQ,GAGxB8C,MAWT4oQ,EAAQ/oQ,UAAU27I,KAAO,SAASt+I,GAChC8C,KAAK6oQ,WAAa7oQ,KAAK6oQ,YAAc,GAKrC,IAHA,IAAI3oQ,EAAO,IAAII,MAAM4b,UAAU1d,OAAS,GACpC+rC,EAAYvqC,KAAK6oQ,WAAW,IAAM3rQ,GAE7BoC,EAAI,EAAGA,EAAI4c,UAAU1d,OAAQc,IACpCY,EAAKZ,EAAI,GAAK4c,UAAU5c,GAG1B,GAAIirC,EAEG,CAAIjrC,EAAI,EAAb,IAAK,IAAWi9B,GADhBgO,EAAYA,EAAUpoC,MAAM,IACI3D,OAAQc,EAAIi9B,IAAOj9B,EACjDirC,EAAUjrC,GAAGW,MAAMD,KAAME,GAI7B,OAAOF,MAIT4oQ,EAAQ/oQ,UAAUmpQ,aAAeJ,EAAQ/oQ,UAAU27I,KAUnDotH,EAAQ/oQ,UAAU2qC,UAAY,SAASttC,GAErC,OADA8C,KAAK6oQ,WAAa7oQ,KAAK6oQ,YAAc,GAC9B7oQ,KAAK6oQ,WAAW,IAAM3rQ,IAAU,IAWzC0rQ,EAAQ/oQ,UAAUopQ,aAAe,SAAS/rQ,GACxC,QAAU8C,KAAKwqC,UAAUttC,GAAOsB,QCvK3B,MAAM0qQ,EACW,oBAATjnP,KACAA,KAEgB,oBAAXjd,OACLA,OAGApF,SAAS,cAATA,GCPR,SAASupQ,EAAK5oQ,KAAQw8B,GACzB,OAAOA,EAAKh3B,QAAO,CAACC,EAAK41F,KACjBr7F,EAAIG,eAAek7F,KACnB51F,EAAI41F,GAAKr7F,EAAIq7F,IAEV51F,IACR,IAGP,MAAMojQ,EAAqBp0P,WACrBq0P,EAAuBp0P,aACtB,SAASq0P,EAAsB/oQ,EAAK0vC,GACnCA,EAAKs5N,iBACLhpQ,EAAIipQ,aAAeJ,EAAmBnyP,KAAK,GAC3C1W,EAAIkpQ,eAAiBJ,EAAqBpyP,KAAK,KAG/C1W,EAAIipQ,aAAex0P,WAAWiC,KAAK,GACnC1W,EAAIkpQ,eAAiBx0P,aAAagC,KAAK,IChB/C,MAAMyyP,UAAuB7oQ,MACzBD,YAAY6L,EAAQmmB,EAAa7yB,GAC7B2/C,MAAMjzC,GACNzM,KAAK4yB,YAAcA,EACnB5yB,KAAKD,QAAUA,EACfC,KAAK3B,KAAO,kBAGb,MAAMsrQ,UAAkBf,EAO3BhoQ,YAAYqvC,GACRyP,QACA1/C,KAAKukC,UAAW,EAChB+kO,EAAsBtpQ,KAAMiwC,GAC5BjwC,KAAKiwC,KAAOA,EACZjwC,KAAK8iC,MAAQmN,EAAKnN,MAClB9iC,KAAKua,WAAa,GAClBva,KAAK4pQ,OAAS35N,EAAK25N,OAWvBrP,QAAQ9tP,EAAQmmB,EAAa7yB,GAEzB,OADA2/C,MAAMspN,aAAa,QAAS,IAAIU,EAAej9P,EAAQmmB,EAAa7yB,IAC7DC,KAOXya,OAKI,MAJI,WAAaza,KAAKua,YAAc,KAAOva,KAAKua,aAC5Cva,KAAKua,WAAa,UAClBva,KAAK6pQ,UAEF7pQ,KAOXwI,QAKI,MAJI,YAAcxI,KAAKua,YAAc,SAAWva,KAAKua,aACjDva,KAAK8pQ,UACL9pQ,KAAK+pQ,WAEF/pQ,KAQXoR,KAAK44P,GACG,SAAWhqQ,KAAKua,YAChBva,KAAKu7H,MAAMyuI,GAWnBC,SACIjqQ,KAAKua,WAAa,OAClBva,KAAKukC,UAAW,EAChBmb,MAAMspN,aAAa,QAQvBkB,OAAOz+P,GACH,MAAM0+P,EAAS,EAAa1+P,EAAMzL,KAAK4pQ,OAAO7B,YAC9C/nQ,KAAKoqQ,SAASD,GAOlBC,SAASD,GACLzqN,MAAMspN,aAAa,SAAUmB,GAOjCJ,QAAQM,GACJrqQ,KAAKua,WAAa,SAClBmlC,MAAMspN,aAAa,QAASqB,IC/GpC,MAAMC,EAAW,mEAAmEpoQ,MAAM,IAAkBgH,EAAM,GAClH,IAAqBwyB,EAAjB6uO,EAAO,EAAGjrQ,EAAI,EAQX,SAAS,EAAOmjC,GACnB,IAAI+nO,EAAU,GACd,GACIA,EAAUF,EAAS7nO,EAZ6E,IAY7D+nO,EACnC/nO,EAAMx1B,KAAKwjB,MAAMgS,EAb+E,UAc3FA,EAAM,GACf,OAAO+nO,EAsBJ,SAASC,IACZ,MAAMn1P,EAAM,GAAQ,IAAI5F,MACxB,OAAI4F,IAAQomB,GACD6uO,EAAO,EAAG7uO,EAAOpmB,GACrBA,EAAM,IAAM,EAAOi1P,KAK9B,KAAOjrQ,EA9CiG,GA8CrFA,IACf4J,EAAIohQ,EAAShrQ,IAAMA,ECzChB,SAAS,EAAOiB,GACnB,IAAIuB,EAAM,GACV,IAAK,IAAIxC,KAAKiB,EACNA,EAAIG,eAAepB,KACfwC,EAAItD,SACJsD,GAAO,KACXA,GAAO8c,mBAAmBtf,GAAK,IAAMsf,mBAAmBre,EAAIjB,KAGpE,OAAOwC,EChBX,IAAI3F,GAAQ,EACZ,IACIA,EAAkC,oBAAnBke,gBACX,oBAAqB,IAAIA,eAEjC,MAAOlX,IAIA,MAAMunQ,EAAUvuQ,ECPhB,SAASwuQ,EAAI16N,GAChB,MAAM26N,EAAU36N,EAAK26N,QAErB,IACI,GAAI,oBAAuBvwP,kBAAoBuwP,GAAWF,GACtD,OAAO,IAAIrwP,eAGnB,MAAO/b,IACP,IAAKssQ,EACD,IACI,OAAO,IAAI,EAAW,CAAC,UAAUj/O,OAAO,UAAUvpB,KAAK,OAAM,qBAEjE,MAAO9D,KCRf,SAASm6N,KACT,MAAMoyC,EAIK,MAHK,IAAI,EAAe,CAC3BD,SAAS,IAEM1iE,aAkOhB,MAAM3vK,UAAgBqwO,EAOzBhoQ,YAAYkyP,EAAK7iN,GACbyP,QACA4pN,EAAsBtpQ,KAAMiwC,GAC5BjwC,KAAKiwC,KAAOA,EACZjwC,KAAK4Q,OAASq/B,EAAKr/B,QAAU,MAC7B5Q,KAAK8yP,IAAMA,EACX9yP,KAAKse,OAAQ,IAAU2xB,EAAK3xB,MAC5Bte,KAAKyL,UAAOxN,IAAcgyC,EAAKxkC,KAAOwkC,EAAKxkC,KAAO,KAClDzL,KAAKsnE,SAOTA,SACI,MAAMr3B,EAAOk5N,EAAKnpQ,KAAKiwC,KAAM,QAAS,MAAO,MAAO,aAAc,OAAQ,KAAM,UAAW,qBAAsB,aACjHA,EAAK26N,UAAY5qQ,KAAKiwC,KAAK66N,GAC3B76N,EAAK86N,UAAY/qQ,KAAKiwC,KAAKk3J,GAC3B,MAAMjsL,EAAOlb,KAAKkb,IAAM,IAAI,EAAe+0B,GAC3C,IACI/0B,EAAIT,KAAKza,KAAK4Q,OAAQ5Q,KAAK8yP,IAAK9yP,KAAKse,OACrC,IACI,GAAIte,KAAKiwC,KAAK+6N,aAAc,CACxB9vP,EAAI+vP,uBAAyB/vP,EAAI+vP,uBAAsB,GACvD,IAAK,IAAI3rQ,KAAKU,KAAKiwC,KAAK+6N,aAChBhrQ,KAAKiwC,KAAK+6N,aAAatqQ,eAAepB,IACtC4b,EAAIR,iBAAiBpb,EAAGU,KAAKiwC,KAAK+6N,aAAa1rQ,KAK/D,MAAOhB,IACP,GAAI,SAAW0B,KAAK4Q,OAChB,IACIsK,EAAIR,iBAAiB,eAAgB,4BAEzC,MAAOpc,IAEX,IACI4c,EAAIR,iBAAiB,SAAU,OAEnC,MAAOpc,IAEH,oBAAqB4c,IACrBA,EAAIitL,gBAAkBnoM,KAAKiwC,KAAKk4J,iBAEhCnoM,KAAKiwC,KAAKi7N,iBACVhwP,EAAI7S,QAAUrI,KAAKiwC,KAAKi7N,gBAE5BhwP,EAAIZ,mBAAqB,KACjB,IAAMY,EAAIX,aAEV,MAAQW,EAAIlR,QAAU,OAASkR,EAAIlR,OACnChK,KAAK+e,SAKL/e,KAAKwpQ,cAAa,KACdxpQ,KAAKu6P,QAA8B,iBAAfr/O,EAAIlR,OAAsBkR,EAAIlR,OAAS,KAC5D,KAGXkR,EAAI9J,KAAKpR,KAAKyL,MAElB,MAAOnN,GAOH,YAHA0B,KAAKwpQ,cAAa,KACdxpQ,KAAKu6P,QAAQj8P,KACd,GAGiB,oBAAb2G,WACPjF,KAAKwrB,MAAQ+M,EAAQ4yO,gBACrB5yO,EAAQ6yO,SAASprQ,KAAKwrB,OAASxrB,MAQvCu6P,QAAQp3P,GACJnD,KAAKgpQ,aAAa,QAAS7lQ,EAAKnD,KAAKkb,KACrClb,KAAKqrQ,SAAQ,GAOjBA,QAAQC,GACJ,QAAI,IAAuBtrQ,KAAKkb,KAAO,OAASlb,KAAKkb,IAArD,CAIA,GADAlb,KAAKkb,IAAIZ,mBAAqBm+M,EAC1B6yC,EACA,IACItrQ,KAAKkb,IAAIqwP,QAEb,MAAOjtQ,IAEa,oBAAb2G,iBACAszB,EAAQ6yO,SAASprQ,KAAKwrB,OAEjCxrB,KAAKkb,IAAM,MAOf6D,SACI,MAAMtT,EAAOzL,KAAKkb,IAAIktL,aACT,OAAT38L,IACAzL,KAAKgpQ,aAAa,OAAQv9P,GAC1BzL,KAAKgpQ,aAAa,WAClBhpQ,KAAKqrQ,WAQbE,QACIvrQ,KAAKqrQ,WAqBb,SAASG,IACL,IAAK,IAAIlsQ,KAAKi5B,EAAQ6yO,SACd7yO,EAAQ6yO,SAAS1qQ,eAAepB,IAChCi5B,EAAQ6yO,SAAS9rQ,GAAGisQ,QArBhChzO,EAAQ4yO,cAAgB,EACxB5yO,EAAQ6yO,SAAW,GAMK,oBAAbnmQ,WAEoB,mBAAhBwmQ,YAEPA,YAAY,WAAYD,GAES,mBAArBvzP,kBAEZA,iBADyB,eAAgB,EAAa,WAAa,SAChCuzP,GAAe,ICxYnD,MAAME,EACqC,mBAAZ5xP,SAAqD,mBAApBA,QAAQ1P,QAEhE8mB,GAAMpX,QAAQ1P,UAAUnD,KAAKiqB,GAG7B,CAACA,EAAIs4O,IAAiBA,EAAat4O,EAAI,GAGzCy6O,EAAY,aAAwB,eCH3CC,EAAqC,oBAAd7yP,WACI,iBAAtBA,UAAU8yP,SACmB,gBAApC9yP,UAAU8yP,QAAQ5uO,cCPT6uO,EAAa,CACtBC,UDOG,cAAiBpC,EAOpB/oQ,YAAYqvC,GACRyP,MAAMzP,GACNjwC,KAAK6nQ,gBAAkB53N,EAAK+7N,YAO5BpvQ,WACA,MAAO,YAOXitQ,SACI,IAAK7pQ,KAAKyrJ,QAEN,OAEJ,MAAMqnG,EAAM9yP,KAAK8yP,MACXmZ,EAAYjsQ,KAAKiwC,KAAKg8N,UAEtBh8N,EAAO27N,EACP,GACAzC,EAAKnpQ,KAAKiwC,KAAM,QAAS,oBAAqB,MAAO,MAAO,aAAc,OAAQ,KAAM,UAAW,qBAAsB,eAAgB,kBAAmB,SAAU,aAAc,SAAU,uBAChMjwC,KAAKiwC,KAAK+6N,eACV/6N,EAAKxhC,QAAUzO,KAAKiwC,KAAK+6N,cAE7B,IACIhrQ,KAAKksQ,GACyBN,EAIpB,IAAID,EAAU7Y,EAAKmZ,EAAWh8N,GAH9Bg8N,EACI,IAAIN,EAAU7Y,EAAKmZ,GACnB,IAAIN,EAAU7Y,GAGhC,MAAO3vP,GACH,OAAOnD,KAAKgpQ,aAAa,QAAS7lQ,GAEtCnD,KAAKksQ,GAAGnE,WAAa/nQ,KAAK4pQ,OAAO7B,YD/CR,cCgDzB/nQ,KAAKmsQ,oBAOTA,oBACInsQ,KAAKksQ,GAAGE,OAAS,KACTpsQ,KAAKiwC,KAAKo8N,WACVrsQ,KAAKksQ,GAAGI,QAAQC,QAEpBvsQ,KAAKiqQ,UAETjqQ,KAAKksQ,GAAGM,QAAUC,GAAczsQ,KAAK+pQ,QAAQ,CACzCn3O,YAAa,8BACb7yB,QAAS0sQ,IAEbzsQ,KAAKksQ,GAAGQ,UAAYjrP,GAAMzhB,KAAKkqQ,OAAOzoP,EAAGhW,MACzCzL,KAAKksQ,GAAGtrP,QAAUtiB,GAAK0B,KAAKu6P,QAAQ,kBAAmBj8P,GAQ3Di9H,MAAMyuI,GACFhqQ,KAAKukC,UAAW,EAGhB,IAAK,IAAIjlC,EAAI,EAAGA,EAAI0qQ,EAAQxrQ,OAAQc,IAAK,CACrC,MAAM6qQ,EAASH,EAAQ1qQ,GACjBqtQ,EAAartQ,IAAM0qQ,EAAQxrQ,OAAS,EAC1C,EAAa2rQ,EAAQnqQ,KAAK6nQ,gBAAgBp8P,IAmBtC,IAGQzL,KAAKksQ,GAAG96P,KAAK3F,GAMrB,MAAOnN,IAEHquQ,GAGAjB,GAAS,KACL1rQ,KAAKukC,UAAW,EAChBvkC,KAAKgpQ,aAAa,WACnBhpQ,KAAKwpQ,kBAUxBM,eAC2B,IAAZ9pQ,KAAKksQ,KACZlsQ,KAAKksQ,GAAG1jQ,QACRxI,KAAKksQ,GAAK,MAQlBpZ,MACI,IAAIhwN,EAAQ9iC,KAAK8iC,OAAS,GAC1B,MAAM8pO,EAAS5sQ,KAAKiwC,KAAK48N,OAAS,MAAQ,KAC1C,IAAIxrQ,EAAO,GAEPrB,KAAKiwC,KAAK5uC,OACR,QAAUurQ,GAAqC,MAA3B1iQ,OAAOlK,KAAKiwC,KAAK5uC,OAClC,OAASurQ,GAAqC,KAA3B1iQ,OAAOlK,KAAKiwC,KAAK5uC,SACzCA,EAAO,IAAMrB,KAAKiwC,KAAK5uC,MAGvBrB,KAAKiwC,KAAK68N,oBACVhqO,EAAM9iC,KAAKiwC,KAAK88N,gBAAkBtC,KAGjCzqQ,KAAK6nQ,iBACN/kO,EAAMkqO,IAAM,GAEhB,MAAMC,EAAe,EAAOnqO,GAE5B,OAAQ8pO,EACJ,QAF8C,IAArC5sQ,KAAKiwC,KAAKi9N,SAAS9jQ,QAAQ,KAG5B,IAAMpJ,KAAKiwC,KAAKi9N,SAAW,IAAMltQ,KAAKiwC,KAAKi9N,UACnD7rQ,EACArB,KAAKiwC,KAAK9uC,MACT8rQ,EAAazuQ,OAAS,IAAMyuQ,EAAe,IAQpDxhH,QACI,QAASkgH,ICrLbwB,QHWG,cAAsBxD,EAOzB/oQ,YAAYqvC,GAGR,GAFAyP,MAAMzP,GACNjwC,KAAKmtQ,SAAU,EACS,oBAAbrvP,SAA0B,CACjC,MAAMsvP,EAAQ,WAAatvP,SAASvc,SACpC,IAAIF,EAAOyc,SAASzc,KAEfA,IACDA,EAAO+rQ,EAAQ,MAAQ,MAE3BptQ,KAAK8qQ,GACoB,oBAAbhtP,UACJmyB,EAAKi9N,WAAapvP,SAASovP,UAC3B7rQ,IAAS4uC,EAAK5uC,KACtBrB,KAAKmnM,GAAKl3J,EAAK48N,SAAWO,EAK9B,MAAMpB,EAAc/7N,GAAQA,EAAK+7N,YACjChsQ,KAAK6nQ,eAAiBgD,IAAYmB,EAKlCpvQ,WACA,MAAO,UAQXitQ,SACI7pQ,KAAKqtQ,OAQTC,MAAMC,GACFvtQ,KAAKua,WAAa,UAClB,MAAM+yP,EAAQ,KACVttQ,KAAKua,WAAa,SAClBgzP,KAEJ,GAAIvtQ,KAAKmtQ,UAAYntQ,KAAKukC,SAAU,CAChC,IAAI2hB,EAAQ,EACRlmD,KAAKmtQ,UACLjnN,IACAlmD,KAAKmxB,KAAK,gBAAgB,aACpB+0B,GAASonN,QAGdttQ,KAAKukC,WACN2hB,IACAlmD,KAAKmxB,KAAK,SAAS,aACb+0B,GAASonN,aAKnBA,IAQRD,OACIrtQ,KAAKmtQ,SAAU,EACfntQ,KAAKwtQ,SACLxtQ,KAAKgpQ,aAAa,QAOtBkB,OAAOz+P,GTvFW,EAACgiQ,EAAgB1F,KACnC,MAAM2F,EAAiBD,EAAevrQ,MAAMymQ,GACtCqB,EAAU,GAChB,IAAK,IAAI1qQ,EAAI,EAAGA,EAAIouQ,EAAelvQ,OAAQc,IAAK,CAC5C,MAAMquQ,EAAgB,EAAaD,EAAepuQ,GAAIyoQ,GAEtD,GADAiC,EAAQ5lQ,KAAKupQ,GACc,UAAvBA,EAActvQ,KACd,MAGR,OAAO2rQ,GS4FH4D,CAAcniQ,EAAMzL,KAAK4pQ,OAAO7B,YAAYvlQ,SAd3B2nQ,IAMb,GAJI,YAAcnqQ,KAAKua,YAA8B,SAAhB4vP,EAAO9rQ,MACxC2B,KAAKiqQ,SAGL,UAAYE,EAAO9rQ,KAEnB,OADA2B,KAAK+pQ,QAAQ,CAAEn3O,YAAa,oCACrB,EAGX5yB,KAAKoqQ,SAASD,MAKd,WAAanqQ,KAAKua,aAElBva,KAAKmtQ,SAAU,EACfntQ,KAAKgpQ,aAAa,gBACd,SAAWhpQ,KAAKua,YAChBva,KAAKqtQ,QAWjBvD,UACI,MAAMthQ,EAAQ,KACVxI,KAAKu7H,MAAM,CAAC,CAAEl9H,KAAM,YAEpB,SAAW2B,KAAKua,WAChB/R,IAKAxI,KAAKmxB,KAAK,OAAQ3oB,GAU1B+yH,MAAMyuI,GACFhqQ,KAAKukC,UAAW,ET5JF,EAACylO,EAASxuP,KAE5B,MAAMhd,EAASwrQ,EAAQxrQ,OACjBkvQ,EAAiB,IAAIptQ,MAAM9B,GACjC,IAAIu4C,EAAQ,EACZizN,EAAQxnQ,SAAQ,CAAC2nQ,EAAQ7qQ,KAErB,EAAa6qQ,GAAQ,GAAOzB,IACxBgF,EAAepuQ,GAAKopQ,IACd3xN,IAAUv4C,GACZgd,EAASkyP,EAAetrQ,KAAKumQ,WSmJrCkF,CAAc7D,GAASv+P,IACnBzL,KAAK8tQ,QAAQriQ,GAAM,KACfzL,KAAKukC,UAAW,EAChBvkC,KAAKgpQ,aAAa,eAS9BlW,MACI,IAAIhwN,EAAQ9iC,KAAK8iC,OAAS,GAC1B,MAAM8pO,EAAS5sQ,KAAKiwC,KAAK48N,OAAS,QAAU,OAC5C,IAAIxrQ,EAAO,IAEP,IAAUrB,KAAKiwC,KAAK68N,oBACpBhqO,EAAM9iC,KAAKiwC,KAAK88N,gBAAkBtC,KAEjCzqQ,KAAK6nQ,gBAAmB/kO,EAAMle,MAC/Bke,EAAMkqO,IAAM,GAGZhtQ,KAAKiwC,KAAK5uC,OACR,UAAYurQ,GAAqC,MAA3B1iQ,OAAOlK,KAAKiwC,KAAK5uC,OACpC,SAAWurQ,GAAqC,KAA3B1iQ,OAAOlK,KAAKiwC,KAAK5uC,SAC3CA,EAAO,IAAMrB,KAAKiwC,KAAK5uC,MAE3B,MAAM4rQ,EAAe,EAAOnqO,GAE5B,OAAQ8pO,EACJ,QAF8C,IAArC5sQ,KAAKiwC,KAAKi9N,SAAS9jQ,QAAQ,KAG5B,IAAMpJ,KAAKiwC,KAAKi9N,SAAW,IAAMltQ,KAAKiwC,KAAKi9N,UACnD7rQ,EACArB,KAAKiwC,KAAK9uC,MACT8rQ,EAAazuQ,OAAS,IAAMyuQ,EAAe,IAQpDhhQ,QAAQgkC,EAAO,IAEX,OADAh0C,OAAOge,OAAOg2B,EAAM,CAAE66N,GAAI9qQ,KAAK8qQ,GAAI3jE,GAAInnM,KAAKmnM,IAAMnnM,KAAKiwC,MAChD,IAAI1X,EAAQv4B,KAAK8yP,MAAO7iN,GASnC69N,QAAQriQ,EAAMoQ,GACV,MAAMpD,EAAMzY,KAAKiM,QAAQ,CACrB2E,OAAQ,OACRnF,KAAMA,IAEVgN,EAAI8kH,GAAG,UAAW1hH,GAClBpD,EAAI8kH,GAAG,SAAS,CAACwwI,EAAWhuQ,KACxBC,KAAKu6P,QAAQ,iBAAkBwT,EAAWhuQ,MAQlDytQ,SACI,MAAM/0P,EAAMzY,KAAKiM,UACjBwM,EAAI8kH,GAAG,OAAQv9H,KAAKkqQ,OAAOjzP,KAAKjX,OAChCyY,EAAI8kH,GAAG,SAAS,CAACwwI,EAAWhuQ,KACxBC,KAAKu6P,QAAQ,iBAAkBwT,EAAWhuQ,MAE9CC,KAAKguQ,QAAUv1P,KIrOjBw1P,EAAK,0OACLh8P,EAAQ,CACV,SAAU,WAAY,YAAa,WAAY,OAAQ,WAAY,OAAQ,OAAQ,WAAY,OAAQ,YAAa,OAAQ,QAAS,UAElI,SAASgE,EAAMnU,GAClB,MAAMyc,EAAMzc,EAAK0J,EAAI1J,EAAIsH,QAAQ,KAAM9K,EAAIwD,EAAIsH,QAAQ,MAC7C,GAANoC,IAAiB,GAANlN,IACXwD,EAAMA,EAAIq4B,UAAU,EAAG3uB,GAAK1J,EAAIq4B,UAAU3uB,EAAGlN,GAAGgH,QAAQ,KAAM,KAAOxD,EAAIq4B,UAAU77B,EAAGwD,EAAItD,SAE9F,IAAI4zF,EAAI67K,EAAGjsQ,KAAKF,GAAO,IAAKgxP,EAAM,GAAIxzP,EAAI,GAC1C,KAAOA,KACHwzP,EAAI7gP,EAAM3S,IAAM8yF,EAAE9yF,IAAM,GAU5B,OARU,GAANkM,IAAiB,GAANlN,IACXw0P,EAAIn3P,OAAS4iB,EACbu0O,EAAI5xP,KAAO4xP,EAAI5xP,KAAKi5B,UAAU,EAAG24N,EAAI5xP,KAAK1C,OAAS,GAAG8G,QAAQ,KAAM,KACpEwtP,EAAIob,UAAYpb,EAAIob,UAAU5oQ,QAAQ,IAAK,IAAIA,QAAQ,IAAK,IAAIA,QAAQ,KAAM,KAC9EwtP,EAAIqb,SAAU,GAElBrb,EAAIsb,UAIR,SAAmB7tQ,EAAKY,GACpB,MAAyB65C,EAAQ75C,EAAKmE,QAAzB,WAAuC,KAAKpD,MAAM,KAO/D,MANyB,KAArBf,EAAKmlC,OAAO,EAAG,IAA6B,IAAhBnlC,EAAK3C,QACjCw8C,EAAM12C,OAAO,EAAG,GAEmB,KAAnCnD,EAAKmlC,OAAOnlC,EAAK3C,OAAS,EAAG,IAC7Bw8C,EAAM12C,OAAO02C,EAAMx8C,OAAS,EAAG,GAE5Bw8C,EAZSozN,CAAUtb,EAAKA,EAAU,MACzCA,EAAIub,SAaR,SAAkBvb,EAAKhwN,GACnB,MAAMr3B,EAAO,GAMb,OALAq3B,EAAMx9B,QAAQ,6BAA6B,SAAUgpQ,EAAIC,EAAIC,GACrDD,IACA9iQ,EAAK8iQ,GAAMC,MAGZ/iQ,EApBQ4iQ,CAASvb,EAAKA,EAAW,OACjCA,ECtBJ,MAAM2b,UAAe7F,EAQxBhoQ,YAAYkyP,EAAK7iN,EAAO,IACpByP,QACIozM,GAAO,iBAAoBA,IAC3B7iN,EAAO6iN,EACPA,EAAM,MAENA,GACAA,EAAM78O,EAAM68O,GACZ7iN,EAAKi9N,SAAWpa,EAAI5xP,KACpB+uC,EAAK48N,OAA0B,UAAjB/Z,EAAIvxP,UAAyC,QAAjBuxP,EAAIvxP,SAC9C0uC,EAAK5uC,KAAOyxP,EAAIzxP,KACZyxP,EAAIhwN,QACJmN,EAAKnN,MAAQgwN,EAAIhwN,QAEhBmN,EAAK/uC,OACV+uC,EAAKi9N,SAAWj3P,EAAMg6B,EAAK/uC,MAAMA,MAErCooQ,EAAsBtpQ,KAAMiwC,GAC5BjwC,KAAK6sQ,OACD,MAAQ58N,EAAK48N,OACP58N,EAAK48N,OACe,oBAAb/uP,UAA4B,WAAaA,SAASvc,SAC/D0uC,EAAKi9N,WAAaj9N,EAAK5uC,OAEvB4uC,EAAK5uC,KAAOrB,KAAK6sQ,OAAS,MAAQ,MAEtC7sQ,KAAKktQ,SACDj9N,EAAKi9N,WACoB,oBAAbpvP,SAA2BA,SAASovP,SAAW,aAC/DltQ,KAAKqB,KACD4uC,EAAK5uC,OACoB,oBAAbyc,UAA4BA,SAASzc,KACvCyc,SAASzc,KACTrB,KAAK6sQ,OACD,MACA,MAClB7sQ,KAAK8rQ,WAAa77N,EAAK67N,YAAc,CAAC,UAAW,aACjD9rQ,KAAKua,WAAa,GAClBva,KAAK0uQ,YAAc,GACnB1uQ,KAAK2uQ,cAAgB,EACrB3uQ,KAAKiwC,KAAOh0C,OAAOge,OAAO,CACtB9Y,KAAM,aACNytQ,OAAO,EACPzmE,iBAAiB,EACjBz9B,SAAS,EACTqiG,eAAgB,IAChB8B,iBAAiB,EACjBC,oBAAoB,EACpBC,kBAAmB,CACf1lO,UAAW,MAEfzuB,iBAAkB,GAClBo0P,qBAAqB,GACtB/+N,GACHjwC,KAAKiwC,KAAK9uC,KAAOnB,KAAKiwC,KAAK9uC,KAAKmE,QAAQ,MAAO,IAAM,IACtB,iBAApBtF,KAAKiwC,KAAKnN,QACjB9iC,KAAKiwC,KAAKnN,MR7Cf,SAAgBkwN,GACnB,IAAIic,EAAM,GACNC,EAAQlc,EAAG9wP,MAAM,KACrB,IAAK,IAAI5C,EAAI,EAAGwxB,EAAIo+O,EAAM1wQ,OAAQc,EAAIwxB,EAAGxxB,IAAK,CAC1C,IAAI6vQ,EAAOD,EAAM5vQ,GAAG4C,MAAM,KAC1B+sQ,EAAIG,mBAAmBD,EAAK,KAAOC,mBAAmBD,EAAK,IAE/D,OAAOF,EQsCmB,CAAOjvQ,KAAKiwC,KAAKnN,QAGvC9iC,KAAKlD,GAAK,KACVkD,KAAKqvQ,SAAW,KAChBrvQ,KAAKsvQ,aAAe,KACpBtvQ,KAAKuvQ,YAAc,KAEnBvvQ,KAAKwvQ,iBAAmB,KACQ,mBAArBv3P,mBACHjY,KAAKiwC,KAAK++N,qBAIV/2P,iBAAiB,gBAAgB,KACzBjY,KAAK4M,YAEL5M,KAAK4M,UAAUm8P,qBACf/oQ,KAAK4M,UAAUpE,YAEpB,GAEe,cAAlBxI,KAAKktQ,WACLltQ,KAAKyvQ,qBAAuB,KACxBzvQ,KAAK+pQ,QAAQ,kBAAmB,CAC5Bn3O,YAAa,6BAGrB3a,iBAAiB,UAAWjY,KAAKyvQ,sBAAsB,KAG/DzvQ,KAAKya,OASTrE,gBAAgBxZ,GACZ,MAAMkmC,EAAQ7mC,OAAOge,OAAO,GAAIja,KAAKiwC,KAAKnN,OAE1CA,EAAM4sO,IdnFU,EcqFhB5sO,EAAMl2B,UAAYhQ,EAEdoD,KAAKlD,KACLgmC,EAAMle,IAAM5kB,KAAKlD,IACrB,MAAMmzC,EAAOh0C,OAAOge,OAAO,GAAIja,KAAKiwC,KAAKr1B,iBAAiBhe,GAAOoD,KAAKiwC,KAAM,CACxEnN,MAAAA,EACA8mO,OAAQ5pQ,KACRktQ,SAAUltQ,KAAKktQ,SACfL,OAAQ7sQ,KAAK6sQ,OACbxrQ,KAAMrB,KAAKqB,OAEf,OAAO,IAAIyqQ,EAAWlvQ,GAAMqzC,GAOhCx1B,OACI,IAAI7N,EACJ,GAAI5M,KAAKiwC,KAAK4+N,iBACVJ,EAAOkB,wBACmC,IAA1C3vQ,KAAK8rQ,WAAW1iQ,QAAQ,aACxBwD,EAAY,gBAEX,IAAI,IAAM5M,KAAK8rQ,WAAWttQ,OAK3B,YAHAwB,KAAKwpQ,cAAa,KACdxpQ,KAAKgpQ,aAAa,QAAS,6BAC5B,GAIHp8P,EAAY5M,KAAK8rQ,WAAW,GAEhC9rQ,KAAKua,WAAa,UAElB,IACI3N,EAAY5M,KAAKoW,gBAAgBxJ,GAErC,MAAOtO,GAGH,OAFA0B,KAAK8rQ,WAAWr5N,aAChBzyC,KAAKya,OAGT7N,EAAU6N,OACVza,KAAK4vQ,aAAahjQ,GAOtBgjQ,aAAahjQ,GACL5M,KAAK4M,WACL5M,KAAK4M,UAAUm8P,qBAGnB/oQ,KAAK4M,UAAYA,EAEjBA,EACK2wH,GAAG,QAASv9H,KAAK6vQ,QAAQ54P,KAAKjX,OAC9Bu9H,GAAG,SAAUv9H,KAAKoqQ,SAASnzP,KAAKjX,OAChCu9H,GAAG,QAASv9H,KAAKu6P,QAAQtjP,KAAKjX,OAC9Bu9H,GAAG,SAAS9wH,GAAUzM,KAAK+pQ,QAAQ,kBAAmBt9P,KAQ/DqjQ,MAAMlzQ,GACF,IAAIgQ,EAAY5M,KAAKoW,gBAAgBxZ,GACjCmzQ,GAAS,EACbtB,EAAOkB,uBAAwB,EAC/B,MAAMK,EAAkB,KAChBD,IAEJnjQ,EAAUwE,KAAK,CAAC,CAAE/S,KAAM,OAAQoN,KAAM,WACtCmB,EAAUukB,KAAK,UAAUjQ,IACrB,IAAI6uP,EAEJ,GAAI,SAAW7uP,EAAI7iB,MAAQ,UAAY6iB,EAAIzV,KAAM,CAG7C,GAFAzL,KAAKiwQ,WAAY,EACjBjwQ,KAAKgpQ,aAAa,YAAap8P,IAC1BA,EACD,OACJ6hQ,EAAOkB,sBAAwB,cAAgB/iQ,EAAUhQ,KACzDoD,KAAK4M,UAAU0gQ,OAAM,KACbyC,GAEA,WAAa/vQ,KAAKua,aAEtB8wP,IACArrQ,KAAK4vQ,aAAahjQ,GAClBA,EAAUwE,KAAK,CAAC,CAAE/S,KAAM,aACxB2B,KAAKgpQ,aAAa,UAAWp8P,GAC7BA,EAAY,KACZ5M,KAAKiwQ,WAAY,EACjBjwQ,KAAKoI,gBAGR,CACD,MAAMjF,EAAM,IAAItC,MAAM,eAEtBsC,EAAIyJ,UAAYA,EAAUhQ,KAC1BoD,KAAKgpQ,aAAa,eAAgB7lQ,SAI9C,SAAS+sQ,IACDH,IAGJA,GAAS,EACT1E,IACAz+P,EAAUpE,QACVoE,EAAY,MAGhB,MAAMgU,EAAUzd,IACZ,MAAMuQ,EAAQ,IAAI7S,MAAM,gBAAkBsC,GAE1CuQ,EAAM9G,UAAYA,EAAUhQ,KAC5BszQ,IACAlwQ,KAAKgpQ,aAAa,eAAgBt1P,IAEtC,SAASy8P,IACLvvP,EAAQ,oBAGZ,SAAS4rP,IACL5rP,EAAQ,iBAGZ,SAASwvP,EAAUxyP,GACXhR,GAAagR,EAAGhhB,OAASgQ,EAAUhQ,MACnCszQ,IAIR,MAAM7E,EAAU,KACZz+P,EAAUioD,eAAe,OAAQm7M,GACjCpjQ,EAAUioD,eAAe,QAASj0C,GAClChU,EAAUioD,eAAe,QAASs7M,GAClCnwQ,KAAK8oQ,IAAI,QAAS0D,GAClBxsQ,KAAK8oQ,IAAI,YAAasH,IAE1BxjQ,EAAUukB,KAAK,OAAQ6+O,GACvBpjQ,EAAUukB,KAAK,QAASvQ,GACxBhU,EAAUukB,KAAK,QAASg/O,GACxBnwQ,KAAKmxB,KAAK,QAASq7O,GACnBxsQ,KAAKmxB,KAAK,YAAai/O,GACvBxjQ,EAAU6N,OAOdwvP,SAOI,GANAjqQ,KAAKua,WAAa,OAClBk0P,EAAOkB,sBAAwB,cAAgB3vQ,KAAK4M,UAAUhQ,KAC9DoD,KAAKgpQ,aAAa,QAClBhpQ,KAAKoI,QAGD,SAAWpI,KAAKua,YAChBva,KAAKiwC,KAAKy6H,SACV1qK,KAAK4M,UAAU0gQ,MAAO,CACtB,IAAIhuQ,EAAI,EACR,MAAMwxB,EAAI9wB,KAAKqvQ,SAAS7wQ,OACxB,KAAOc,EAAIwxB,EAAGxxB,IACVU,KAAK8vQ,MAAM9vQ,KAAKqvQ,SAAS/vQ,KASrC8qQ,SAASD,GACL,GAAI,YAAcnqQ,KAAKua,YACnB,SAAWva,KAAKua,YAChB,YAAcva,KAAKua,WAInB,OAHAva,KAAKgpQ,aAAa,SAAUmB,GAE5BnqQ,KAAKgpQ,aAAa,aACVmB,EAAO9rQ,MACX,IAAK,OACD2B,KAAKqwQ,YAAY1sQ,KAAKsS,MAAMk0P,EAAO1+P,OACnC,MACJ,IAAK,OACDzL,KAAKswQ,mBACLtwQ,KAAKuwQ,WAAW,QAChBvwQ,KAAKgpQ,aAAa,QAClBhpQ,KAAKgpQ,aAAa,QAClB,MACJ,IAAK,QACD,MAAM7lQ,EAAM,IAAItC,MAAM,gBAEtBsC,EAAI8Q,KAAOk2P,EAAO1+P,KAClBzL,KAAKu6P,QAAQp3P,GACb,MACJ,IAAK,UACDnD,KAAKgpQ,aAAa,OAAQmB,EAAO1+P,MACjCzL,KAAKgpQ,aAAa,UAAWmB,EAAO1+P,OAapD4kQ,YAAY5kQ,GACRzL,KAAKgpQ,aAAa,YAAav9P,GAC/BzL,KAAKlD,GAAK2O,EAAKmZ,IACf5kB,KAAK4M,UAAUk2B,MAAMle,IAAMnZ,EAAKmZ,IAChC5kB,KAAKqvQ,SAAWrvQ,KAAKwwQ,eAAe/kQ,EAAK4jQ,UACzCrvQ,KAAKsvQ,aAAe7jQ,EAAK6jQ,aACzBtvQ,KAAKuvQ,YAAc9jQ,EAAK8jQ,YACxBvvQ,KAAKywQ,WAAahlQ,EAAKglQ,WACvBzwQ,KAAKiqQ,SAED,WAAajqQ,KAAKua,YAEtBva,KAAKswQ,mBAOTA,mBACItwQ,KAAKypQ,eAAezpQ,KAAKwvQ,kBACzBxvQ,KAAKwvQ,iBAAmBxvQ,KAAKwpQ,cAAa,KACtCxpQ,KAAK+pQ,QAAQ,kBACd/pQ,KAAKsvQ,aAAetvQ,KAAKuvQ,aACxBvvQ,KAAKiwC,KAAKo8N,WACVrsQ,KAAKwvQ,iBAAiBjD,QAQ9BsD,UACI7vQ,KAAK0uQ,YAAYpqQ,OAAO,EAAGtE,KAAK2uQ,eAIhC3uQ,KAAK2uQ,cAAgB,EACjB,IAAM3uQ,KAAK0uQ,YAAYlwQ,OACvBwB,KAAKgpQ,aAAa,SAGlBhpQ,KAAKoI,QAQbA,QACI,GAAI,WAAapI,KAAKua,YAClBva,KAAK4M,UAAU23B,WACdvkC,KAAKiwQ,WACNjwQ,KAAK0uQ,YAAYlwQ,OAAQ,CACzB,MAAMwrQ,EAAUhqQ,KAAK0wQ,qBACrB1wQ,KAAK4M,UAAUwE,KAAK44P,GAGpBhqQ,KAAK2uQ,cAAgB3E,EAAQxrQ,OAC7BwB,KAAKgpQ,aAAa,UAS1B0H,qBAII,KAH+B1wQ,KAAKywQ,YACR,YAAxBzwQ,KAAK4M,UAAUhQ,MACfoD,KAAK0uQ,YAAYlwQ,OAAS,GAE1B,OAAOwB,KAAK0uQ,YAEhB,IAAIiC,EAAc,EAClB,IAAK,IAAIrxQ,EAAI,EAAGA,EAAIU,KAAK0uQ,YAAYlwQ,OAAQc,IAAK,CAC9C,MAAMmM,EAAOzL,KAAK0uQ,YAAYpvQ,GAAGmM,KAIjC,GAHIA,IACAklQ,GXvYO,iBADIpwQ,EWwYekL,GXjY1C,SAAoB3J,GAChB,IAAI6gC,EAAI,EAAGnkC,EAAS,EACpB,IAAK,IAAIc,EAAI,EAAGwxB,EAAIhvB,EAAItD,OAAQc,EAAIwxB,EAAGxxB,IACnCqjC,EAAI7gC,EAAIykI,WAAWjnI,GACfqjC,EAAI,IACJnkC,GAAU,EAELmkC,EAAI,KACTnkC,GAAU,EAELmkC,EAAI,OAAUA,GAAK,MACxBnkC,GAAU,GAGVc,IACAd,GAAU,GAGlB,OAAOA,EAvBIkF,CAAWnD,GAGf0M,KAAK+rD,KAPQ,MAOFz4D,EAAIkrN,YAAclrN,EAAIk0B,QWqY5Bn1B,EAAI,GAAKqxQ,EAAc3wQ,KAAKywQ,WAC5B,OAAOzwQ,KAAK0uQ,YAAYvsQ,MAAM,EAAG7C,GAErCqxQ,GAAe,EX7YpB,IAAoBpwQ,EW+YnB,OAAOP,KAAK0uQ,YAWhBnzI,MAAMr6G,EAAKzjB,EAASoe,GAEhB,OADA7b,KAAKuwQ,WAAW,UAAWrvP,EAAKzjB,EAASoe,GAClC7b,KAEXoR,KAAK8P,EAAKzjB,EAASoe,GAEf,OADA7b,KAAKuwQ,WAAW,UAAWrvP,EAAKzjB,EAASoe,GAClC7b,KAWXuwQ,WAAWlyQ,EAAMoN,EAAMhO,EAASoe,GAS5B,GARI,mBAAsBpQ,IACtBoQ,EAAKpQ,EACLA,OAAOxN,GAEP,mBAAsBR,IACtBoe,EAAKpe,EACLA,EAAU,MAEV,YAAcuC,KAAKua,YAAc,WAAava,KAAKua,WACnD,QAEJ9c,EAAUA,GAAW,IACbmzQ,UAAW,IAAUnzQ,EAAQmzQ,SACrC,MAAMzG,EAAS,CACX9rQ,KAAMA,EACNoN,KAAMA,EACNhO,QAASA,GAEbuC,KAAKgpQ,aAAa,eAAgBmB,GAClCnqQ,KAAK0uQ,YAAYtqQ,KAAK+lQ,GAClBtuP,GACA7b,KAAKmxB,KAAK,QAAStV,GACvB7b,KAAKoI,QAOTI,QACI,MAAMA,EAAQ,KACVxI,KAAK+pQ,QAAQ,gBACb/pQ,KAAK4M,UAAUpE,SAEbqoQ,EAAkB,KACpB7wQ,KAAK8oQ,IAAI,UAAW+H,GACpB7wQ,KAAK8oQ,IAAI,eAAgB+H,GACzBroQ,KAEEsoQ,EAAiB,KAEnB9wQ,KAAKmxB,KAAK,UAAW0/O,GACrB7wQ,KAAKmxB,KAAK,eAAgB0/O,IAqB9B,MAnBI,YAAc7wQ,KAAKua,YAAc,SAAWva,KAAKua,aACjDva,KAAKua,WAAa,UACdva,KAAK0uQ,YAAYlwQ,OACjBwB,KAAKmxB,KAAK,SAAS,KACXnxB,KAAKiwQ,UACLa,IAGAtoQ,OAIHxI,KAAKiwQ,UACVa,IAGAtoQ,KAGDxI,KAOXu6P,QAAQp3P,GACJsrQ,EAAOkB,uBAAwB,EAC/B3vQ,KAAKgpQ,aAAa,QAAS7lQ,GAC3BnD,KAAK+pQ,QAAQ,kBAAmB5mQ,GAOpC4mQ,QAAQt9P,EAAQmmB,GACR,YAAc5yB,KAAKua,YACnB,SAAWva,KAAKua,YAChB,YAAcva,KAAKua,aAEnBva,KAAKypQ,eAAezpQ,KAAKwvQ,kBAEzBxvQ,KAAK4M,UAAUm8P,mBAAmB,SAElC/oQ,KAAK4M,UAAUpE,QAEfxI,KAAK4M,UAAUm8P,qBACoB,mBAAxB13O,qBACPA,oBAAoB,UAAWrxB,KAAKyvQ,sBAAsB,GAG9DzvQ,KAAKua,WAAa,SAElBva,KAAKlD,GAAK,KAEVkD,KAAKgpQ,aAAa,QAASv8P,EAAQmmB,GAGnC5yB,KAAK0uQ,YAAc,GACnB1uQ,KAAK2uQ,cAAgB,GAU7B6B,eAAenB,GACX,MAAM0B,EAAmB,GACzB,IAAIzxQ,EAAI,EACR,MAAM6tD,EAAIkiN,EAAS7wQ,OACnB,KAAOc,EAAI6tD,EAAG7tD,KACLU,KAAK8rQ,WAAW1iQ,QAAQimQ,EAAS/vQ,KAClCyxQ,EAAiB3sQ,KAAKirQ,EAAS/vQ,IAEvC,OAAOyxQ,GAGftC,EAAOltQ,SdpiBiB,Ee5BAktQ,EAAOltQ,SCF/B,MAAM,EAA+C,mBAAhB2/H,YAM/B,EAAWjlI,OAAO4D,UAAUC,SAC5B,EAAiC,mBAATynQ,MACT,oBAATA,MACoB,6BAAxB,EAAS5mQ,KAAK4mQ,MAChByJ,EAAiC,mBAATC,MACT,oBAATA,MACoB,6BAAxB,EAAStwQ,KAAKswQ,MAMf,SAASC,EAAS3wQ,GACrB,OAAS,IAA0BA,aAAe2gI,aAlBvC,CAAC3gI,GACyB,mBAAvB2gI,YAAYC,OACpBD,YAAYC,OAAO5gI,GACnBA,EAAIgU,kBAAkB2sH,YAeqC,CAAO3gI,KACnE,GAAkBA,aAAegnQ,MACjCyJ,GAAkBzwQ,aAAe0wQ,KAEnC,SAASE,GAAU5wQ,EAAKmE,GAC3B,IAAKnE,GAAsB,iBAARA,EACf,OAAO,EAEX,GAAID,MAAMiF,QAAQhF,GAAM,CACpB,IAAK,IAAIjB,EAAI,EAAGwxB,EAAIvwB,EAAI/B,OAAQc,EAAIwxB,EAAGxxB,IACnC,GAAI6xQ,GAAU5wQ,EAAIjB,IACd,OAAO,EAGf,OAAO,EAEX,GAAI4xQ,EAAS3wQ,GACT,OAAO,EAEX,GAAIA,EAAImE,QACkB,mBAAfnE,EAAImE,QACU,IAArBwX,UAAU1d,OACV,OAAO2yQ,GAAU5wQ,EAAImE,UAAU,GAEnC,IAAK,MAAMb,KAAOtD,EACd,GAAItE,OAAO4D,UAAUa,eAAeC,KAAKJ,EAAKsD,IAAQstQ,GAAU5wQ,EAAIsD,IAChE,OAAO,EAGf,OAAO,ECxCJ,SAASutQ,GAAkBjH,GAC9B,MAAMkH,EAAU,GACVC,EAAanH,EAAO1+P,KACpB09H,EAAOghI,EAGb,OAFAhhI,EAAK19H,KAAO8lQ,GAAmBD,EAAYD,GAC3CloI,EAAKqoI,YAAcH,EAAQ7yQ,OACpB,CAAE2rQ,OAAQhhI,EAAMkoI,QAASA,GAEpC,SAASE,GAAmB9lQ,EAAM4lQ,GAC9B,IAAK5lQ,EACD,OAAOA,EACX,GAAIylQ,EAASzlQ,GAAO,CAChB,MAAM+6J,EAAc,CAAEirG,cAAc,EAAMhvO,IAAK4uO,EAAQ7yQ,QAEvD,OADA6yQ,EAAQjtQ,KAAKqH,GACN+6J,EAEN,GAAIlmK,MAAMiF,QAAQkG,GAAO,CAC1B,MAAM6f,EAAU,IAAIhrB,MAAMmL,EAAKjN,QAC/B,IAAK,IAAIc,EAAI,EAAGA,EAAImM,EAAKjN,OAAQc,IAC7BgsB,EAAQhsB,GAAKiyQ,GAAmB9lQ,EAAKnM,GAAI+xQ,GAE7C,OAAO/lP,EAEN,GAAoB,iBAAT7f,KAAuBA,aAAgBiE,MAAO,CAC1D,MAAM4b,EAAU,GAChB,IAAK,MAAMznB,KAAO4H,EACVxP,OAAO4D,UAAUa,eAAeC,KAAK8K,EAAM5H,KAC3CynB,EAAQznB,GAAO0tQ,GAAmB9lQ,EAAK5H,GAAMwtQ,IAGrD,OAAO/lP,EAEX,OAAO7f,EAUJ,SAASimQ,GAAkBvH,EAAQkH,GAGtC,OAFAlH,EAAO1+P,KAAOkmQ,GAAmBxH,EAAO1+P,KAAM4lQ,GAC9ClH,EAAOqH,iBAAcvzQ,EACdksQ,EAEX,SAASwH,GAAmBlmQ,EAAM4lQ,GAC9B,IAAK5lQ,EACD,OAAOA,EACX,GAAIA,GAAQA,EAAKgmQ,aACb,OAAOJ,EAAQ5lQ,EAAKg3B,KAEnB,GAAIniC,MAAMiF,QAAQkG,GACnB,IAAK,IAAInM,EAAI,EAAGA,EAAImM,EAAKjN,OAAQc,IAC7BmM,EAAKnM,GAAKqyQ,GAAmBlmQ,EAAKnM,GAAI+xQ,QAGzC,GAAoB,iBAAT5lQ,EACZ,IAAK,MAAM5H,KAAO4H,EACVxP,OAAO4D,UAAUa,eAAeC,KAAK8K,EAAM5H,KAC3C4H,EAAK5H,GAAO8tQ,GAAmBlmQ,EAAK5H,GAAMwtQ,IAItD,OAAO5lQ,ECjEJ,MAAM,GAAW,EACjB,IAAImmQ,IACX,SAAWA,GACPA,EAAWA,EAAoB,QAAI,GAAK,UACxCA,EAAWA,EAAuB,WAAI,GAAK,aAC3CA,EAAWA,EAAkB,MAAI,GAAK,QACtCA,EAAWA,EAAgB,IAAI,GAAK,MACpCA,EAAWA,EAA0B,cAAI,GAAK,gBAC9CA,EAAWA,EAAyB,aAAI,GAAK,eAC7CA,EAAWA,EAAuB,WAAI,GAAK,aAP/C,CAQGA,KAAeA,GAAa,KAIxB,MAAMC,GAMTjxQ,YAAYkxQ,GACR9xQ,KAAK8xQ,SAAWA,EAQpBC,OAAOxxQ,GACH,OAAIA,EAAIlC,OAASuzQ,GAAWx3G,OAAS75J,EAAIlC,OAASuzQ,GAAWI,MACrDb,GAAU5wQ,GAQX,CAACP,KAAKiyQ,eAAe1xQ,KAPpBA,EAAIlC,KACAkC,EAAIlC,OAASuzQ,GAAWx3G,MAClBw3G,GAAWM,aACXN,GAAWO,WACdnyQ,KAAKoyQ,eAAe7xQ,IAQvC0xQ,eAAe1xQ,GAEX,IAAIuB,EAAM,GAAKvB,EAAIlC,KAmBnB,OAjBIkC,EAAIlC,OAASuzQ,GAAWM,cACxB3xQ,EAAIlC,OAASuzQ,GAAWO,aACxBrwQ,GAAOvB,EAAIixQ,YAAc,KAIzBjxQ,EAAI8xQ,KAAO,MAAQ9xQ,EAAI8xQ,MACvBvwQ,GAAOvB,EAAI8xQ,IAAM,KAGjB,MAAQ9xQ,EAAIzD,KACZgF,GAAOvB,EAAIzD,IAGX,MAAQyD,EAAIkL,OACZ3J,GAAO6B,KAAKC,UAAUrD,EAAIkL,KAAMzL,KAAK8xQ,WAElChwQ,EAOXswQ,eAAe7xQ,GACX,MAAM+xQ,EAAiBlB,GAAkB7wQ,GACnC4oI,EAAOnpI,KAAKiyQ,eAAeK,EAAenI,QAC1CkH,EAAUiB,EAAejB,QAE/B,OADAA,EAAQ3xL,QAAQypD,GACTkoI,GAQR,MAAMkB,WAAgB3J,EAMzBhoQ,YAAY4xQ,GACR9yN,QACA1/C,KAAKwyQ,QAAUA,EAOnBruQ,IAAI5D,GACA,IAAI4pQ,EACJ,GAAmB,iBAAR5pQ,EACP4pQ,EAASnqQ,KAAKyyQ,aAAalyQ,GACvB4pQ,EAAO9rQ,OAASuzQ,GAAWM,cAC3B/H,EAAO9rQ,OAASuzQ,GAAWO,YAE3BnyQ,KAAK0yQ,cAAgB,IAAIC,GAAoBxI,GAElB,IAAvBA,EAAOqH,aACP9xN,MAAMspN,aAAa,UAAWmB,IAKlCzqN,MAAMspN,aAAa,UAAWmB,OAGjC,KAAI+G,EAAS3wQ,KAAQA,EAAI0nQ,OAe1B,MAAM,IAAIpnQ,MAAM,iBAAmBN,GAbnC,IAAKP,KAAK0yQ,cACN,MAAM,IAAI7xQ,MAAM,oDAGhBspQ,EAASnqQ,KAAK0yQ,cAAcE,eAAeryQ,GACvC4pQ,IAEAnqQ,KAAK0yQ,cAAgB,KACrBhzN,MAAMspN,aAAa,UAAWmB,KAc9CsI,aAAa3wQ,GACT,IAAIxC,EAAI,EAER,MAAM6uB,EAAI,CACN9vB,KAAM6L,OAAOpI,EAAI+tC,OAAO,KAE5B,QAA2B5xC,IAAvB2zQ,GAAWzjP,EAAE9vB,MACb,MAAM,IAAIwC,MAAM,uBAAyBstB,EAAE9vB,MAG/C,GAAI8vB,EAAE9vB,OAASuzQ,GAAWM,cACtB/jP,EAAE9vB,OAASuzQ,GAAWO,WAAY,CAClC,MAAM77O,EAAQh3B,EAAI,EAClB,KAA2B,MAApBwC,EAAI+tC,SAASvwC,IAAcA,GAAKwC,EAAItD,SAC3C,MAAMyiI,EAAMn/H,EAAIq4B,UAAU7D,EAAOh3B,GACjC,GAAI2hI,GAAO/2H,OAAO+2H,IAA0B,MAAlBn/H,EAAI+tC,OAAOvwC,GACjC,MAAM,IAAIuB,MAAM,uBAEpBstB,EAAEqjP,YAActnQ,OAAO+2H,GAG3B,GAAI,MAAQn/H,EAAI+tC,OAAOvwC,EAAI,GAAI,CAC3B,MAAMg3B,EAAQh3B,EAAI,EAClB,OAASA,GAED,MADMwC,EAAI+tC,OAAOvwC,IAGjBA,IAAMwC,EAAItD,SAGlB2vB,EAAEkkP,IAAMvwQ,EAAIq4B,UAAU7D,EAAOh3B,QAG7B6uB,EAAEkkP,IAAM,IAGZ,MAAMzwN,EAAO9/C,EAAI+tC,OAAOvwC,EAAI,GAC5B,GAAI,KAAOsiD,GAAQ13C,OAAO03C,IAASA,EAAM,CACrC,MAAMtrB,EAAQh3B,EAAI,EAClB,OAASA,GAAG,CACR,MAAMqjC,EAAI7gC,EAAI+tC,OAAOvwC,GACrB,GAAI,MAAQqjC,GAAKz4B,OAAOy4B,IAAMA,EAAG,GAC3BrjC,EACF,MAEJ,GAAIA,IAAMwC,EAAItD,OACV,MAER2vB,EAAErxB,GAAKoN,OAAOpI,EAAIq4B,UAAU7D,EAAOh3B,EAAI,IAG3C,GAAIwC,EAAI+tC,SAASvwC,GAAI,CACjB,MAAM0P,EAAUhP,KAAK6yQ,SAAS/wQ,EAAIwkC,OAAOhnC,IACzC,IAAIizQ,GAAQO,eAAe3kP,EAAE9vB,KAAM2Q,GAI/B,MAAM,IAAInO,MAAM,mBAHhBstB,EAAE1iB,KAAOuD,EAMjB,OAAOmf,EAEX0kP,SAAS/wQ,GACL,IACI,OAAO6B,KAAKsS,MAAMnU,EAAK9B,KAAKwyQ,SAEhC,MAAOl0Q,GACH,OAAO,GAGf+2J,sBAAsBh3J,EAAM2Q,GACxB,OAAQ3Q,GACJ,KAAKuzQ,GAAWmB,QACZ,MAA0B,iBAAZ/jQ,EAClB,KAAK4iQ,GAAWoB,WACZ,YAAmB/0Q,IAAZ+Q,EACX,KAAK4iQ,GAAWqB,cACZ,MAA0B,iBAAZjkQ,GAA2C,iBAAZA,EACjD,KAAK4iQ,GAAWx3G,MAChB,KAAKw3G,GAAWM,aACZ,OAAO5xQ,MAAMiF,QAAQyJ,IAAYA,EAAQxQ,OAAS,EACtD,KAAKozQ,GAAWI,IAChB,KAAKJ,GAAWO,WACZ,OAAO7xQ,MAAMiF,QAAQyJ,IAMjCskE,UACQtzE,KAAK0yQ,eACL1yQ,KAAK0yQ,cAAcQ,0BAY/B,MAAMP,GACF/xQ,YAAYupQ,GACRnqQ,KAAKmqQ,OAASA,EACdnqQ,KAAKqxQ,QAAU,GACfrxQ,KAAKmzQ,UAAYhJ,EAUrByI,eAAeQ,GAEX,GADApzQ,KAAKqxQ,QAAQjtQ,KAAKgvQ,GACdpzQ,KAAKqxQ,QAAQ7yQ,SAAWwB,KAAKmzQ,UAAU3B,YAAa,CAEpD,MAAMrH,EAASuH,GAAkB1xQ,KAAKmzQ,UAAWnzQ,KAAKqxQ,SAEtD,OADArxQ,KAAKkzQ,yBACE/I,EAEX,OAAO,KAKX+I,yBACIlzQ,KAAKmzQ,UAAY,KACjBnzQ,KAAKqxQ,QAAU,IC1RhB,SAAS9zI,GAAGh9H,EAAKkhB,EAAI5F,GAExB,OADAtb,EAAIg9H,GAAG97G,EAAI5F,GACJ,WACHtb,EAAIuoQ,IAAIrnP,EAAI5F,ICIpB,MAAMw3P,GAAkBp3Q,OAAOi/C,OAAO,CAClCo4N,QAAS,EACTC,cAAe,EACfv9O,WAAY,EACZw9O,cAAe,EAEfC,YAAa,EACb5+M,eAAgB,IAEb,MAAM,WAAe+zM,EAMxBhoQ,YAAY8yQ,EAAIrB,EAAKpiO,GACjByP,QACA1/C,KAAK2zQ,WAAY,EACjB3zQ,KAAK4zQ,cAAgB,GACrB5zQ,KAAK6zQ,WAAa,GAClB7zQ,KAAK8zQ,IAAM,EACX9zQ,KAAK+zQ,KAAO,GACZ/zQ,KAAKg0Q,MAAQ,GACbh0Q,KAAK0zQ,GAAKA,EACV1zQ,KAAKqyQ,IAAMA,EACPpiO,GAAQA,EAAKgkO,OACbj0Q,KAAKi0Q,KAAOhkO,EAAKgkO,MAEjBj0Q,KAAK0zQ,GAAGQ,cACRl0Q,KAAKya,OAKT05P,mBACA,OAAQn0Q,KAAK2zQ,UAOjBS,YACI,GAAIp0Q,KAAKq0Q,KACL,OACJ,MAAMX,EAAK1zQ,KAAK0zQ,GAChB1zQ,KAAKq0Q,KAAO,CACR92I,GAAGm2I,EAAI,OAAQ1zQ,KAAKosQ,OAAOn1P,KAAKjX,OAChCu9H,GAAGm2I,EAAI,SAAU1zQ,KAAKs0Q,SAASr9P,KAAKjX,OACpCu9H,GAAGm2I,EAAI,QAAS1zQ,KAAK4gB,QAAQ3J,KAAKjX,OAClCu9H,GAAGm2I,EAAI,QAAS1zQ,KAAKwsQ,QAAQv1P,KAAKjX,QAMtCwoB,aACA,QAASxoB,KAAKq0Q,KAOlBf,UACI,OAAItzQ,KAAK2zQ,YAET3zQ,KAAKo0Q,YACAp0Q,KAAK0zQ,GAAkB,eACxB1zQ,KAAK0zQ,GAAGj5P,OACR,SAAWza,KAAK0zQ,GAAGa,aACnBv0Q,KAAKosQ,UALEpsQ,KAWfya,OACI,OAAOza,KAAKszQ,UAQhBliQ,QAAQlR,GAGJ,OAFAA,EAAKw/E,QAAQ,WACb1/E,KAAKw7I,KAAKv7I,MAAMD,KAAME,GACfF,KASXw7I,KAAK/5H,KAAOvhB,GACR,GAAImzQ,GAAgB3yQ,eAAe+gB,GAC/B,MAAM,IAAI5gB,MAAM,IAAM4gB,EAAK,8BAE/BvhB,EAAKw/E,QAAQj+D,GACb,MAAM0oP,EAAS,CACX9rQ,KAAMuzQ,GAAWx3G,MACjB3uJ,KAAMvL,EAEViqQ,QAAiB,IAGjB,GAFAA,EAAO1sQ,QAAQmzQ,UAAmC,IAAxB5wQ,KAAKg0Q,MAAMpD,SAEjC,mBAAsB1wQ,EAAKA,EAAK1B,OAAS,GAAI,CAC7C,MAAM1B,EAAKkD,KAAK8zQ,MACVU,EAAMt0Q,EAAKmC,MACjBrC,KAAKy0Q,qBAAqB33Q,EAAI03Q,GAC9BrK,EAAOrtQ,GAAKA,EAEhB,MAAM43Q,EAAsB10Q,KAAK0zQ,GAAGiB,QAChC30Q,KAAK0zQ,GAAGiB,OAAO/nQ,WACf5M,KAAK0zQ,GAAGiB,OAAO/nQ,UAAU23B,SAY7B,OAXsBvkC,KAAKg0Q,MAAMY,YAAcF,IAAwB10Q,KAAK2zQ,aAGnE3zQ,KAAK2zQ,WACV3zQ,KAAK60Q,wBAAwB1K,GAC7BnqQ,KAAKmqQ,OAAOA,IAGZnqQ,KAAK6zQ,WAAWzvQ,KAAK+lQ,IAEzBnqQ,KAAKg0Q,MAAQ,GACNh0Q,KAKXy0Q,qBAAqB33Q,EAAI03Q,GACrB,MAAMnsQ,EAAUrI,KAAKg0Q,MAAM3rQ,QAC3B,QAAgBpK,IAAZoK,EAEA,YADArI,KAAK+zQ,KAAKj3Q,GAAM03Q,GAIpB,MAAMM,EAAQ90Q,KAAK0zQ,GAAGlK,cAAa,YACxBxpQ,KAAK+zQ,KAAKj3Q,GACjB,IAAK,IAAIwC,EAAI,EAAGA,EAAIU,KAAK6zQ,WAAWr1Q,OAAQc,IACpCU,KAAK6zQ,WAAWv0Q,GAAGxC,KAAOA,GAC1BkD,KAAK6zQ,WAAWvvQ,OAAOhF,EAAG,GAGlCk1Q,EAAI7zQ,KAAKX,KAAM,IAAIa,MAAM,8BAC1BwH,GACHrI,KAAK+zQ,KAAKj3Q,GAAM,IAAIoD,KAEhBF,KAAK0zQ,GAAGjK,eAAeqL,GACvBN,EAAIv0Q,MAAMD,KAAM,CAAC,QAASE,KASlCiqQ,OAAOA,GACHA,EAAOkI,IAAMryQ,KAAKqyQ,IAClBryQ,KAAK0zQ,GAAGqB,QAAQ5K,GAOpBiC,SAC4B,mBAAbpsQ,KAAKi0Q,KACZj0Q,KAAKi0Q,MAAMxoQ,IACPzL,KAAKmqQ,OAAO,CAAE9rQ,KAAMuzQ,GAAWmB,QAAStnQ,KAAAA,OAI5CzL,KAAKmqQ,OAAO,CAAE9rQ,KAAMuzQ,GAAWmB,QAAStnQ,KAAMzL,KAAKi0Q,OAS3DrzP,QAAQzd,GACCnD,KAAK2zQ,WACN3zQ,KAAKgpQ,aAAa,gBAAiB7lQ,GAU3CqpQ,QAAQ//P,EAAQmmB,GACZ5yB,KAAK2zQ,WAAY,SACV3zQ,KAAKlD,GACZkD,KAAKgpQ,aAAa,aAAcv8P,EAAQmmB,GAQ5C0hP,SAASnK,GAEL,GADsBA,EAAOkI,MAAQryQ,KAAKqyQ,IAG1C,OAAQlI,EAAO9rQ,MACX,KAAKuzQ,GAAWmB,QACZ,GAAI5I,EAAO1+P,MAAQ0+P,EAAO1+P,KAAKmZ,IAAK,CAChC,MAAM9nB,EAAKqtQ,EAAO1+P,KAAKmZ,IACvB5kB,KAAKg1Q,UAAUl4Q,QAGfkD,KAAKgpQ,aAAa,gBAAiB,IAAInoQ,MAAM,8LAEjD,MACJ,KAAK+wQ,GAAWx3G,MAChB,KAAKw3G,GAAWM,aACZlyQ,KAAKi1Q,QAAQ9K,GACb,MACJ,KAAKyH,GAAWI,IAChB,KAAKJ,GAAWO,WACZnyQ,KAAKk1Q,MAAM/K,GACX,MACJ,KAAKyH,GAAWoB,WACZhzQ,KAAKm1Q,eACL,MACJ,KAAKvD,GAAWqB,cACZjzQ,KAAKszE,UACL,MAAMnwE,EAAM,IAAItC,MAAMspQ,EAAO1+P,KAAKhN,SAElC0E,EAAIsI,KAAO0+P,EAAO1+P,KAAKA,KACvBzL,KAAKgpQ,aAAa,gBAAiB7lQ,IAU/C8xQ,QAAQ9K,GACJ,MAAMjqQ,EAAOiqQ,EAAO1+P,MAAQ,GACxB,MAAQ0+P,EAAOrtQ,IACfoD,EAAKkE,KAAKpE,KAAKw0Q,IAAIrK,EAAOrtQ,KAE1BkD,KAAK2zQ,UACL3zQ,KAAKo1Q,UAAUl1Q,GAGfF,KAAK4zQ,cAAcxvQ,KAAKnI,OAAOi/C,OAAOh7C,IAG9Ck1Q,UAAUl1Q,GACN,GAAIF,KAAKq1Q,eAAiBr1Q,KAAKq1Q,cAAc72Q,OAAQ,CACjD,MAAMgsC,EAAYxqC,KAAKq1Q,cAAclzQ,QACrC,IAAK,MAAMm8B,KAAYkM,EACnBlM,EAASr+B,MAAMD,KAAME,GAG7Bw/C,MAAM87F,KAAKv7I,MAAMD,KAAME,GAO3Bs0Q,IAAI13Q,GACA,MAAMmlB,EAAOjiB,KACb,IAAIs1Q,GAAO,EACX,OAAO,YAAap1Q,GAEZo1Q,IAEJA,GAAO,EACPrzP,EAAKkoP,OAAO,CACR9rQ,KAAMuzQ,GAAWI,IACjBl1Q,GAAIA,EACJ2O,KAAMvL,MAUlBg1Q,MAAM/K,GACF,MAAMqK,EAAMx0Q,KAAK+zQ,KAAK5J,EAAOrtQ,IACzB,mBAAsB03Q,IACtBA,EAAIv0Q,MAAMD,KAAMmqQ,EAAO1+P,aAChBzL,KAAK+zQ,KAAK5J,EAAOrtQ,KAUhCk4Q,UAAUl4Q,GACNkD,KAAKlD,GAAKA,EACVkD,KAAK2zQ,WAAY,EACjB3zQ,KAAKu1Q,eACLv1Q,KAAKgpQ,aAAa,WAOtBuM,eACIv1Q,KAAK4zQ,cAAcpxQ,SAAStC,GAASF,KAAKo1Q,UAAUl1Q,KACpDF,KAAK4zQ,cAAgB,GACrB5zQ,KAAK6zQ,WAAWrxQ,SAAS2nQ,IACrBnqQ,KAAK60Q,wBAAwB1K,GAC7BnqQ,KAAKmqQ,OAAOA,MAEhBnqQ,KAAK6zQ,WAAa,GAOtBsB,eACIn1Q,KAAKszE,UACLtzE,KAAKwsQ,QAAQ,wBASjBl5L,UACQtzE,KAAKq0Q,OAELr0Q,KAAKq0Q,KAAK7xQ,SAASgzQ,GAAeA,MAClCx1Q,KAAKq0Q,UAAOp2Q,GAEhB+B,KAAK0zQ,GAAa,SAAE1zQ,MAQxBg2B,aAUI,OATIh2B,KAAK2zQ,WACL3zQ,KAAKmqQ,OAAO,CAAE9rQ,KAAMuzQ,GAAWoB,aAGnChzQ,KAAKszE,UACDtzE,KAAK2zQ,WAEL3zQ,KAAKwsQ,QAAQ,wBAEVxsQ,KAQXwI,QACI,OAAOxI,KAAKg2B,aAShB46O,SAASA,GAEL,OADA5wQ,KAAKg0Q,MAAMpD,SAAWA,EACf5wQ,KASP40Q,eAEA,OADA50Q,KAAKg0Q,MAAMY,UAAW,EACf50Q,KAiBXqI,QAAQA,GAEJ,OADArI,KAAKg0Q,MAAM3rQ,QAAUA,EACdrI,KASXy1Q,MAAMn3O,GAGF,OAFAt+B,KAAKq1Q,cAAgBr1Q,KAAKq1Q,eAAiB,GAC3Cr1Q,KAAKq1Q,cAAcjxQ,KAAKk6B,GACjBt+B,KASX01Q,WAAWp3O,GAGP,OAFAt+B,KAAKq1Q,cAAgBr1Q,KAAKq1Q,eAAiB,GAC3Cr1Q,KAAKq1Q,cAAc31L,QAAQphD,GACpBt+B,KAQX21Q,OAAOr3O,GACH,IAAKt+B,KAAKq1Q,cACN,OAAOr1Q,KAEX,GAAIs+B,EAAU,CACV,MAAMkM,EAAYxqC,KAAKq1Q,cACvB,IAAK,IAAI/1Q,EAAI,EAAGA,EAAIkrC,EAAUhsC,OAAQc,IAClC,GAAIg/B,IAAakM,EAAUlrC,GAEvB,OADAkrC,EAAUlmC,OAAOhF,EAAG,GACbU,UAKfA,KAAKq1Q,cAAgB,GAEzB,OAAOr1Q,KAQX41Q,eACI,OAAO51Q,KAAKq1Q,eAAiB,GAkBjCQ,cAAcv3O,GAGV,OAFAt+B,KAAK81Q,sBAAwB91Q,KAAK81Q,uBAAyB,GAC3D91Q,KAAK81Q,sBAAsB1xQ,KAAKk6B,GACzBt+B,KAkBX+1Q,mBAAmBz3O,GAGf,OAFAt+B,KAAK81Q,sBAAwB91Q,KAAK81Q,uBAAyB,GAC3D91Q,KAAK81Q,sBAAsBp2L,QAAQphD,GAC5Bt+B,KAsBXg2Q,eAAe13O,GACX,IAAKt+B,KAAK81Q,sBACN,OAAO91Q,KAEX,GAAIs+B,EAAU,CACV,MAAMkM,EAAYxqC,KAAK81Q,sBACvB,IAAK,IAAIx2Q,EAAI,EAAGA,EAAIkrC,EAAUhsC,OAAQc,IAClC,GAAIg/B,IAAakM,EAAUlrC,GAEvB,OADAkrC,EAAUlmC,OAAOhF,EAAG,GACbU,UAKfA,KAAK81Q,sBAAwB,GAEjC,OAAO91Q,KAQXi2Q,uBACI,OAAOj2Q,KAAK81Q,uBAAyB,GASzCjB,wBAAwB1K,GACpB,GAAInqQ,KAAK81Q,uBAAyB91Q,KAAK81Q,sBAAsBt3Q,OAAQ,CACjE,MAAMgsC,EAAYxqC,KAAK81Q,sBAAsB3zQ,QAC7C,IAAK,MAAMm8B,KAAYkM,EACnBlM,EAASr+B,MAAMD,KAAMmqQ,EAAO1+P,QCjkBrC,SAASyqQ,GAAQjmO,GACpBA,EAAOA,GAAQ,GACfjwC,KAAKm2Q,GAAKlmO,EAAKnlB,KAAO,IACtB9qB,KAAK8zB,IAAMmc,EAAKnc,KAAO,IACvB9zB,KAAKisC,OAASgE,EAAKhE,QAAU,EAC7BjsC,KAAKo2Q,OAASnmO,EAAKmmO,OAAS,GAAKnmO,EAAKmmO,QAAU,EAAInmO,EAAKmmO,OAAS,EAClEp2Q,KAAKq2Q,SAAW,EAQpBH,GAAQr2Q,UAAUglB,SAAW,WACzB,IAAIsxP,EAAKn2Q,KAAKm2Q,GAAKlpQ,KAAKghD,IAAIjuD,KAAKisC,OAAQjsC,KAAKq2Q,YAC9C,GAAIr2Q,KAAKo2Q,OAAQ,CACb,IAAIE,EAAOrpQ,KAAKC,SACZqpQ,EAAYtpQ,KAAKwjB,MAAM6lP,EAAOt2Q,KAAKo2Q,OAASD,GAChDA,EAAoC,IAAN,EAAxBlpQ,KAAKwjB,MAAa,GAAP6lP,IAAuBH,EAAKI,EAAYJ,EAAKI,EAElE,OAAgC,EAAzBtpQ,KAAK6d,IAAIqrP,EAAIn2Q,KAAK8zB,MAO7BoiP,GAAQr2Q,UAAU81C,MAAQ,WACtB31C,KAAKq2Q,SAAW,GAOpBH,GAAQr2Q,UAAUywF,OAAS,SAAUxlE,GACjC9qB,KAAKm2Q,GAAKrrP,GAOdorP,GAAQr2Q,UAAU0wF,OAAS,SAAUz8D,GACjC9zB,KAAK8zB,IAAMA,GAOfoiP,GAAQr2Q,UAAU22Q,UAAY,SAAUJ,GACpCp2Q,KAAKo2Q,OAASA,GC1DX,MAAMK,WAAgB7N,EACzBhoQ,YAAYkyP,EAAK7iN,GACb,IAAI66F,EACJprF,QACA1/C,KAAK02Q,KAAO,GACZ12Q,KAAKq0Q,KAAO,GACRvhB,GAAO,iBAAoBA,IAC3B7iN,EAAO6iN,EACPA,OAAM70P,IAEVgyC,EAAOA,GAAQ,IACV9uC,KAAO8uC,EAAK9uC,MAAQ,aACzBnB,KAAKiwC,KAAOA,EACZq5N,EAAsBtpQ,KAAMiwC,GAC5BjwC,KAAK22Q,cAAmC,IAAtB1mO,EAAK0mO,cACvB32Q,KAAK42Q,qBAAqB3mO,EAAK2mO,sBAAwBplP,EAAAA,GACvDxxB,KAAK62Q,kBAAkB5mO,EAAK4mO,mBAAqB,KACjD72Q,KAAK82Q,qBAAqB7mO,EAAK6mO,sBAAwB,KACvD92Q,KAAK+2Q,oBAAwD,QAAnCjsI,EAAK76F,EAAK8mO,2BAAwC,IAAPjsI,EAAgBA,EAAK,IAC1F9qI,KAAKg3Q,QAAU,IAAId,GAAQ,CACvBprP,IAAK9qB,KAAK62Q,oBACV/iP,IAAK9zB,KAAK82Q,uBACVV,OAAQp2Q,KAAK+2Q,wBAEjB/2Q,KAAKqI,QAAQ,MAAQ4nC,EAAK5nC,QAAU,IAAQ4nC,EAAK5nC,SACjDrI,KAAKu0Q,YAAc,SACnBv0Q,KAAK8yP,IAAMA,EACX,MAAMmkB,EAAUhnO,EAAKnK,QAAU,EAC/B9lC,KAAKk3Q,QAAU,IAAID,EAAQpF,QAC3B7xQ,KAAKm3Q,QAAU,IAAIF,EAAQ1E,QAC3BvyQ,KAAKk0Q,cAAoC,IAArBjkO,EAAKmnO,YACrBp3Q,KAAKk0Q,cACLl0Q,KAAKya,OAEbk8P,aAAaj0O,GACT,OAAKxmB,UAAU1d,QAEfwB,KAAKq3Q,gBAAkB30O,EAChB1iC,MAFIA,KAAKq3Q,cAIpBT,qBAAqBl0O,GACjB,YAAUzkC,IAANykC,EACO1iC,KAAKs3Q,uBAChBt3Q,KAAKs3Q,sBAAwB50O,EACtB1iC,MAEX62Q,kBAAkBn0O,GACd,IAAIooG,EACJ,YAAU7sI,IAANykC,EACO1iC,KAAKu3Q,oBAChBv3Q,KAAKu3Q,mBAAqB70O,EACF,QAAvBooG,EAAK9qI,KAAKg3Q,eAA4B,IAAPlsI,GAAyBA,EAAGx6C,OAAO5tD,GAC5D1iC,MAEX+2Q,oBAAoBr0O,GAChB,IAAIooG,EACJ,YAAU7sI,IAANykC,EACO1iC,KAAKw3Q,sBAChBx3Q,KAAKw3Q,qBAAuB90O,EACJ,QAAvBooG,EAAK9qI,KAAKg3Q,eAA4B,IAAPlsI,GAAyBA,EAAG0rI,UAAU9zO,GAC/D1iC,MAEX82Q,qBAAqBp0O,GACjB,IAAIooG,EACJ,YAAU7sI,IAANykC,EACO1iC,KAAKy3Q,uBAChBz3Q,KAAKy3Q,sBAAwB/0O,EACL,QAAvBooG,EAAK9qI,KAAKg3Q,eAA4B,IAAPlsI,GAAyBA,EAAGv6C,OAAO7tD,GAC5D1iC,MAEXqI,QAAQq6B,GACJ,OAAKxmB,UAAU1d,QAEfwB,KAAK03Q,SAAWh1O,EACT1iC,MAFIA,KAAK03Q,SAUpBC,wBAES33Q,KAAK43Q,eACN53Q,KAAKq3Q,eACqB,IAA1Br3Q,KAAKg3Q,QAAQX,UAEbr2Q,KAAK63Q,YAUbp9P,KAAKoB,GACD,IAAK7b,KAAKu0Q,YAAYnrQ,QAAQ,QAC1B,OAAOpJ,KACXA,KAAK20Q,OAAS,IAAI,EAAO30Q,KAAK8yP,IAAK9yP,KAAKiwC,MACxC,MAAM25N,EAAS5pQ,KAAK20Q,OACd1yP,EAAOjiB,KACbA,KAAKu0Q,YAAc,UACnBv0Q,KAAK83Q,eAAgB,EAErB,MAAMC,EAAiBx6I,GAAGqsI,EAAQ,QAAQ,WACtC3nP,EAAKmqP,SACLvwP,GAAMA,OAGJm8P,EAAWz6I,GAAGqsI,EAAQ,SAAUzmQ,IAClC8e,EAAKopP,UACLppP,EAAKsyP,YAAc,SACnBv0Q,KAAKgpQ,aAAa,QAAS7lQ,GACvB0Y,EACAA,EAAG1Y,GAIH8e,EAAK01P,0BAGb,IAAI,IAAU33Q,KAAK03Q,SAAU,CACzB,MAAMrvQ,EAAUrI,KAAK03Q,SACL,IAAZrvQ,GACA0vQ,IAGJ,MAAMjD,EAAQ90Q,KAAKwpQ,cAAa,KAC5BuO,IACAnO,EAAOphQ,QAEPohQ,EAAOpuH,KAAK,QAAS,IAAI36I,MAAM,cAChCwH,GACCrI,KAAKiwC,KAAKo8N,WACVyI,EAAMvI,QAEVvsQ,KAAKq0Q,KAAKjwQ,MAAK,WACX6Q,aAAa6/P,MAKrB,OAFA90Q,KAAKq0Q,KAAKjwQ,KAAK2zQ,GACf/3Q,KAAKq0Q,KAAKjwQ,KAAK4zQ,GACRh4Q,KAQXszQ,QAAQz3P,GACJ,OAAO7b,KAAKya,KAAKoB,GAOrBuwP,SAEIpsQ,KAAKqrQ,UAELrrQ,KAAKu0Q,YAAc,OACnBv0Q,KAAKgpQ,aAAa,QAElB,MAAMY,EAAS5pQ,KAAK20Q,OACpB30Q,KAAKq0Q,KAAKjwQ,KAAKm5H,GAAGqsI,EAAQ,OAAQ5pQ,KAAKi4Q,OAAOhhQ,KAAKjX,OAAQu9H,GAAGqsI,EAAQ,OAAQ5pQ,KAAKk4Q,OAAOjhQ,KAAKjX,OAAQu9H,GAAGqsI,EAAQ,QAAS5pQ,KAAK4gB,QAAQ3J,KAAKjX,OAAQu9H,GAAGqsI,EAAQ,QAAS5pQ,KAAKwsQ,QAAQv1P,KAAKjX,OAAQu9H,GAAGv9H,KAAKm3Q,QAAS,UAAWn3Q,KAAKm4Q,UAAUlhQ,KAAKjX,QAOvPi4Q,SACIj4Q,KAAKgpQ,aAAa,QAOtBkP,OAAOzsQ,GACHzL,KAAKm3Q,QAAQhzQ,IAAIsH,GAOrB0sQ,UAAUhO,GACNnqQ,KAAKgpQ,aAAa,SAAUmB,GAOhCvpP,QAAQzd,GACJnD,KAAKgpQ,aAAa,QAAS7lQ,GAQ/BymQ,OAAOyI,EAAKpiO,GACR,IAAI25N,EAAS5pQ,KAAK02Q,KAAKrE,GAKvB,OAJKzI,IACDA,EAAS,IAAI,GAAO5pQ,KAAMqyQ,EAAKpiO,GAC/BjwC,KAAK02Q,KAAKrE,GAAOzI,GAEdA,EAQXh0N,SAASg0N,GACL,MAAM8M,EAAOz6Q,OAAOkQ,KAAKnM,KAAK02Q,MAC9B,IAAK,MAAMrE,KAAOqE,EAEd,GADe12Q,KAAK02Q,KAAKrE,GACd7pP,OACP,OAGRxoB,KAAKo4Q,SAQTrD,QAAQ5K,GACJ,MAAMuD,EAAiB1tQ,KAAKk3Q,QAAQnF,OAAO5H,GAC3C,IAAK,IAAI7qQ,EAAI,EAAGA,EAAIouQ,EAAelvQ,OAAQc,IACvCU,KAAK20Q,OAAOp5I,MAAMmyI,EAAepuQ,GAAI6qQ,EAAO1sQ,SAQpD4tQ,UACIrrQ,KAAKq0Q,KAAK7xQ,SAASgzQ,GAAeA,MAClCx1Q,KAAKq0Q,KAAK71Q,OAAS,EACnBwB,KAAKm3Q,QAAQ7jM,UAOjB8kM,SACIp4Q,KAAK83Q,eAAgB,EACrB93Q,KAAK43Q,eAAgB,EACrB53Q,KAAKwsQ,QAAQ,gBACTxsQ,KAAK20Q,QACL30Q,KAAK20Q,OAAOnsQ,QAOpBwtB,aACI,OAAOh2B,KAAKo4Q,SAOhB5L,QAAQ//P,EAAQmmB,GACZ5yB,KAAKqrQ,UACLrrQ,KAAKg3Q,QAAQrhO,QACb31C,KAAKu0Q,YAAc,SACnBv0Q,KAAKgpQ,aAAa,QAASv8P,EAAQmmB,GAC/B5yB,KAAKq3Q,gBAAkBr3Q,KAAK83Q,eAC5B93Q,KAAK63Q,YAQbA,YACI,GAAI73Q,KAAK43Q,eAAiB53Q,KAAK83Q,cAC3B,OAAO93Q,KACX,MAAMiiB,EAAOjiB,KACb,GAAIA,KAAKg3Q,QAAQX,UAAYr2Q,KAAKs3Q,sBAC9Bt3Q,KAAKg3Q,QAAQrhO,QACb31C,KAAKgpQ,aAAa,oBAClBhpQ,KAAK43Q,eAAgB,MAEpB,CACD,MAAM9hQ,EAAQ9V,KAAKg3Q,QAAQnyP,WAC3B7kB,KAAK43Q,eAAgB,EACrB,MAAM9C,EAAQ90Q,KAAKwpQ,cAAa,KACxBvnP,EAAK61P,gBAET93Q,KAAKgpQ,aAAa,oBAAqB/mP,EAAK+0P,QAAQX,UAEhDp0P,EAAK61P,eAET71P,EAAKxH,MAAMtX,IACHA,GACA8e,EAAK21P,eAAgB,EACrB31P,EAAK41P,YACL73Q,KAAKgpQ,aAAa,kBAAmB7lQ,IAGrC8e,EAAKo2P,oBAGdviQ,GACC9V,KAAKiwC,KAAKo8N,WACVyI,EAAMvI,QAEVvsQ,KAAKq0Q,KAAKjwQ,MAAK,WACX6Q,aAAa6/P,OASzBuD,cACI,MAAMC,EAAUt4Q,KAAKg3Q,QAAQX,SAC7Br2Q,KAAK43Q,eAAgB,EACrB53Q,KAAKg3Q,QAAQrhO,QACb31C,KAAKgpQ,aAAa,YAAasP,ICrVvC,MAAM39N,GAAQ,GACd,SAAS,GAAOm4M,EAAK7iN,GACE,iBAAR6iN,IACP7iN,EAAO6iN,EACPA,OAAM70P,GAGV,MAAM0zC,ECHH,SAAamhN,EAAK3xP,EAAO,GAAIo3Q,GAChC,IAAIh4Q,EAAMuyP,EAEVylB,EAAMA,GAA4B,oBAAbz6P,UAA4BA,SAC7C,MAAQg1O,IACRA,EAAMylB,EAAIh3Q,SAAW,KAAOg3Q,EAAIr3Q,MAEjB,iBAAR4xP,IACH,MAAQA,EAAIjjN,OAAO,KAEfijN,EADA,MAAQA,EAAIjjN,OAAO,GACb0oO,EAAIh3Q,SAAWuxP,EAGfylB,EAAIr3Q,KAAO4xP,GAGpB,sBAAsBt/O,KAAKs/O,KAExBA,OADA,IAAuBylB,EACjBA,EAAIh3Q,SAAW,KAAOuxP,EAGtB,WAAaA,GAI3BvyP,EAAM0V,EAAM68O,IAGXvyP,EAAIc,OACD,cAAcmS,KAAKjT,EAAIgB,UACvBhB,EAAIc,KAAO,KAEN,eAAemS,KAAKjT,EAAIgB,YAC7BhB,EAAIc,KAAO,QAGnBd,EAAIY,KAAOZ,EAAIY,MAAQ,IACvB,MACMD,GADkC,IAA3BX,EAAIW,KAAKkI,QAAQ,KACV,IAAM7I,EAAIW,KAAO,IAAMX,EAAIW,KAS/C,OAPAX,EAAIzD,GAAKyD,EAAIgB,SAAW,MAAQL,EAAO,IAAMX,EAAIc,KAAOF,EAExDZ,EAAIwd,KACAxd,EAAIgB,SACA,MACAL,GACCq3Q,GAAOA,EAAIl3Q,OAASd,EAAIc,KAAO,GAAK,IAAMd,EAAIc,MAChDd,ED5CQxB,CAAI+zP,GADnB7iN,EAAOA,GAAQ,IACc9uC,MAAQ,cAC/BxF,EAASg2C,EAAOh2C,OAChBmB,EAAK60C,EAAO70C,GACZqE,EAAOwwC,EAAOxwC,KACdq3Q,EAAgB79N,GAAM79C,IAAOqE,KAAQw5C,GAAM79C,GAAU,KAK3D,IAAI42Q,EAaJ,OAjBsBzjO,EAAKwoO,UACvBxoO,EAAK,0BACL,IAAUA,EAAKyoO,WACfF,EAGA9E,EAAK,IAAI+C,GAAQ96Q,EAAQs0C,IAGpB0K,GAAM79C,KACP69C,GAAM79C,GAAM,IAAI25Q,GAAQ96Q,EAAQs0C,IAEpCyjO,EAAK/4N,GAAM79C,IAEX60C,EAAO7O,QAAUmN,EAAKnN,QACtBmN,EAAKnN,MAAQ6O,EAAO08N,UAEjBqF,EAAG9J,OAAOj4N,EAAOxwC,KAAM8uC,GAIlCh0C,OAAOge,OAAO,GAAQ,CAClBw8P,QAAO,GACPhI,OAAM,GACNiF,GAAI,GACJJ,QAAS,mDE3Cb,SAAeh1Q,EAAE66C,KAAKl9C,OAAOu0B,QAAQ2oB,GAAG32C,SAAQ,EAAE22C,EAAEvW,MAAMtkC,EAAEopD,MAAM41D,YAAY,KAAKnkE,IAAIvW,MAAK,CAAC56B,OAAO46B,GAAG3mC,OAAOu0B,QAAQoS,GAAGpgC,SAAQ,EAAEogC,EAAEuzC,MAAM73E,EAAEopD,MAAM41D,YAAY,KAAK16E,IAAIuzC,UAAUh9B,EAAEvW,MAAK3mC,OAAOkQ,KAAKgtC,GAAG32C,SAAQ22C,GAAG76C,EAAEopD,MAAMixN,eAAe,KAAKx/N,OAAMA,EAAEvW,4HCAvP,SAAS63D,6dACT,MAAMm+K,EAAWtkO,GAAKA,EACtB,SAASr6B,EAAO4+P,EAAKt6P,GAEjB,IAAK,MAAMq9E,KAAKr9E,EACZs6P,EAAIj9K,GAAKr9E,EAAIq9E,GACjB,OAAOi9K,EAUX,SAAS/xP,EAAIjL,GACT,OAAOA,IAEX,SAASi9P,IACL,OAAO78Q,OAAOqrE,OAAO,MAEzB,SAASyxM,EAAQC,GACbA,EAAIx2Q,QAAQskB,GAEhB,SAASmyP,EAAY9nK,GACjB,MAAwB,mBAAVA,EAElB,SAAS+nK,EAAetzO,EAAGp6B,GACvB,OAAOo6B,GAAKA,EAAIp6B,GAAKA,EAAIo6B,IAAMp6B,GAAOo6B,GAAkB,iBAANA,GAAgC,mBAANA,EAEhF,IAAIuzO,EACJ,SAASC,EAAcC,EAAat6Q,GAKhC,OAJKo6Q,IACDA,EAAuBl0Q,SAASkS,cAAc,MAElDgiQ,EAAqBp7P,KAAOhf,EACrBs6Q,IAAgBF,EAAqBp7P,KAKhD,SAASu7P,EAAS/4Q,GACd,OAAmC,IAA5BtE,OAAOkQ,KAAK5L,GAAK/B,OAO5B,SAASi6I,EAAUf,KAAUntG,GACzB,GAAa,MAATmtG,EACA,OAAOj9C,EAEX,MAAM8+K,EAAQ7hI,EAAMe,aAAaluG,GACjC,OAAOgvO,EAAMC,YAAc,IAAMD,EAAMC,cAAgBD,EAE3D,SAASE,EAAgB/hI,GACrB,IAAIv7I,EAEJ,OADAs8I,EAAUf,GAAO3nI,GAAK5T,EAAQ4T,GAA9B0oI,GACOt8I,EAEX,SAASu9Q,EAAoBj3Q,EAAWi1I,EAAOl8H,GAC3C/Y,EAAUk3Q,GAAGC,WAAWx1Q,KAAKq0I,EAAUf,EAAOl8H,IAoDlD,SAASq+P,EAAuBjqO,GAC5B,MAAMzoC,EAAS,GACf,IAAK,MAAMy0F,KAAKhsD,EACC,MAATgsD,EAAE,KACFz0F,EAAOy0F,GAAKhsD,EAAMgsD,IAC1B,OAAOz0F,EA0BX,SAAS2yQ,EAAc39Q,GACnB,OAAgB,MAATA,EAAgB,GAAKA,EAOhC,SAAS49Q,EAAiBC,GACtB,OAAOA,GAAiBf,EAAYe,EAAc1mM,SAAW0mM,EAAc1mM,QAAUmnB,EAGzF,MAAMw/K,EAA8B,oBAAXj1Q,OACzB,IAAIsQ,EAAM2kQ,EACJ,IAAMj1Q,OAAO8sB,YAAYxc,MACzB,IAAM5F,KAAK4F,MACb4kQ,EAAMD,EAAY/oP,GAAM1R,sBAAsB0R,GAAMupE,EASxD,MAAM0/K,EAAQ,IAAI/tM,IAClB,SAASguM,EAAU9kQ,GACf6kQ,EAAM33Q,SAAQiS,IACLA,EAAKkuB,EAAErtB,KACR6kQ,EAAM91Q,OAAOoQ,GACbA,EAAKytF,QAGM,IAAfi4K,EAAM1lP,MACNylP,EAAIE,GAYZ,SAASntO,EAAKzxB,GACV,IAAI/G,EAGJ,OAFmB,IAAf0lQ,EAAM1lP,MACNylP,EAAIE,GACD,CACH3sQ,QAAS,IAAIqM,SAAQugQ,IACjBF,EAAMh2Q,IAAIsQ,EAAO,CAAEkuB,EAAGnnB,EAAU0mF,EAAGm4K,OAEvC9O,QACI4O,EAAM91Q,OAAOoQ,KAOzB,IAAI6lQ,GAAe,EAmGnB,SAAS9hP,EAAOxqB,EAAQ2mB,GACpB3mB,EAAOuJ,YAAYod,GAWvB,SAAS4lP,EAAmB5lP,GACxB,IAAKA,EACD,OAAO1vB,SACX,MAAMmrG,EAAOz7E,EAAK+rH,YAAc/rH,EAAK+rH,cAAgB/rH,EAAK0nH,cAC1D,OAAIjsC,GAAQA,EAAKlvG,KACNkvG,EAEJz7E,EAAK0nH,cAEhB,SAASm+H,EAAwB7lP,GAC7B,MAAM8lP,EAAgBjmP,EAAQ,SAE9B,OAEJ,SAA2BG,EAAM+yB,GAC7BlvB,EAAO7D,EAAKrd,MAAQqd,EAAM+yB,GAJ1BgzN,CAAkBH,EAAmB5lP,GAAO8lP,GACrCA,EAAcE,MA6BzB,SAAS3yI,EAAOh6H,EAAQ2mB,EAAMgwF,GAC1B32G,EAAOuyH,aAAa5rG,EAAMgwF,GAAU,MAUxC,SAASltD,EAAO9iC,GACZA,EAAKgI,WAAWllB,YAAYkd,GAEhC,SAASimP,EAAaC,EAAYC,GAC9B,IAAK,IAAIx7Q,EAAI,EAAGA,EAAIu7Q,EAAWr8Q,OAAQc,GAAK,EACpCu7Q,EAAWv7Q,IACXu7Q,EAAWv7Q,GAAGwuC,EAAEgtO,GAG5B,SAAStmP,EAAQ53B,GACb,OAAOqI,SAASkS,cAAcva,GAiBlC,SAASm+Q,EAAYn+Q,GACjB,OAAOqI,SAAS+1Q,gBAAgB,6BAA8Bp+Q,GAElE,SAASke,EAAKrP,GACV,OAAOxG,SAASy7H,eAAej1H,GAEnC,SAASwvQ,IACL,OAAOngQ,EAAK,KAEhB,SAAS29M,IACL,OAAO39M,EAAK,IAEhB,SAAS2wB,EAAO9W,EAAMz3B,EAAO8iB,EAASviB,GAElC,OADAk3B,EAAK1c,iBAAiB/a,EAAO8iB,EAASviB,GAC/B,IAAMk3B,EAAKtD,oBAAoBn0B,EAAO8iB,EAASviB,GA8B1D,SAASs/B,EAAKpI,EAAM20H,EAAWntJ,GACd,MAATA,EACAw4B,EAAKyiC,gBAAgBkyF,GAChB30H,EAAKuE,aAAaowH,KAAentJ,GACtCw4B,EAAK0iC,aAAaiyF,EAAWntJ,GA4BrC,SAAS++Q,EAAwBvmP,EAAMl0B,EAAMtE,GACrCsE,KAAQk0B,EACRA,EAAKl0B,GAA8B,kBAAfk0B,EAAKl0B,IAAiC,KAAVtE,GAAsBA,EAGtE4gC,EAAKpI,EAAMl0B,EAAMtE,GAoJzB,SAASg/Q,EAASrgQ,EAAMrP,GACpBA,EAAO,GAAKA,EACRqP,EAAKsgQ,YAAc3vQ,IACnBqP,EAAKrP,KAAOA,GAapB,SAAS4vQ,EAAU1mP,EAAM9wB,EAAK1H,EAAOm/Q,GACnB,OAAVn/Q,EACAw4B,EAAK+yB,MAAMixN,eAAe90Q,GAG1B8wB,EAAK+yB,MAAM41D,YAAYz5G,EAAK1H,EAAOm/Q,EAAY,YAAc,IA+ErE,SAASC,EAAa/mP,EAAS53B,EAAM0/J,GACjC9nI,EAAQurG,UAAUu8B,EAAS,MAAQ,UAAU1/J,GAEjD,SAAS4+Q,EAAan9Q,EAAMmjB,GAAQ,QAAEm6H,GAAU,EAAK,WAAEzxE,GAAa,GAAU,IAC1E,MAAM5rE,EAAI2G,SAASw2Q,YAAY,eAE/B,OADAn9Q,EAAEo9Q,gBAAgBr9Q,EAAMs9I,EAASzxE,EAAY1oD,GACtCljB,EAKX,MAAMq9Q,EACF/6Q,YAAYg7Q,GAAS,GACjB57Q,KAAK47Q,QAAS,EACd57Q,KAAK47Q,OAASA,EACd57Q,KAAK1B,EAAI0B,KAAK69F,EAAI,KAEtBl7D,EAAEo+G,GACE/gJ,KAAKwwD,EAAEuwF,GAEX3uD,EAAE2uD,EAAM/yI,EAAQ22G,EAAS,MAChB3kH,KAAK1B,IACF0B,KAAK47Q,OACL57Q,KAAK1B,EAAIy8Q,EAAY/sQ,EAAOkvI,UAE5Bl9I,KAAK1B,EAAIk2B,EAAQxmB,EAAOkvI,UAC5Bl9I,KAAKm5C,EAAInrC,EACThO,KAAK2iC,EAAEo+G,IAEX/gJ,KAAKV,EAAEqlH,GAEXn0D,EAAEuwF,GACE/gJ,KAAK1B,EAAEo0J,UAAY3R,EACnB/gJ,KAAK69F,EAAIv9F,MAAMuB,KAAK7B,KAAK1B,EAAEw9I,YAE/Bx8I,EAAEqlH,GACE,IAAK,IAAIrlH,EAAI,EAAGA,EAAIU,KAAK69F,EAAEr/F,OAAQc,GAAK,EACpC0oI,EAAOhoI,KAAKm5C,EAAGn5C,KAAK69F,EAAEv+F,GAAIqlH,GAGlCx2F,EAAE4yH,GACE/gJ,KAAK8tC,IACL9tC,KAAKwwD,EAAEuwF,GACP/gJ,KAAKV,EAAEU,KAAK4lC,GAEhBkI,IACI9tC,KAAK69F,EAAEr7F,QAAQi1D,IAwCvB,MAAMokN,EAAiB,IAAI7xO,IAC3B,IAoII8xO,EApIAtzP,EAAS,EAcb,SAASuzP,EAAYpnP,EAAMiR,EAAGp6B,EAAGqZ,EAAU/O,EAAOkmQ,EAAMngQ,EAAI6+E,EAAM,GAC9D,MAAMp2B,EAAO,OAASz/C,EACtB,IAAIo3P,EAAY,MAChB,IAAK,IAAI9tP,EAAI,EAAGA,GAAK,EAAGA,GAAKm2C,EAAM,CAC/B,MAAMnrB,EAAIvT,GAAKp6B,EAAIo6B,GAAKo2O,EAAK7tP,GAC7B8tP,GAAiB,IAAJ9tP,EAAU,KAAKtS,EAAGs9B,EAAG,EAAIA,QAE1C,MAAMk+F,EAAO4kI,EAAY,SAASpgQ,EAAGrQ,EAAG,EAAIA,SACtC5O,EAAO,YApBjB,SAAckF,GACV,IAAImmJ,EAAO,KACP3oJ,EAAIwC,EAAItD,OACZ,KAAOc,KACH2oJ,GAASA,GAAQ,GAAKA,EAAQnmJ,EAAIykI,WAAWjnI,GACjD,OAAO2oJ,IAAS,EAeSA,CAAK5Q,MAAS38C,IACjC1zD,EAAMuzO,EAAmB5lP,IACzB,WAAEunP,EAAU,MAAEC,GAAUN,EAAe3hQ,IAAI8sB,IAfrD,SAAkCA,EAAKrS,GACnC,MAAMw/E,EAAO,CAAE+nK,WAAY1B,EAAwB7lP,GAAOwnP,MAAO,IAEjE,OADAN,EAAerwO,IAAIxE,EAAKmtE,GACjBA,EAYkDioK,CAAyBp1O,EAAKrS,GAClFwnP,EAAMv/Q,KACPu/Q,EAAMv/Q,IAAQ,EACds/Q,EAAWG,WAAW,cAAcz/Q,KAAQy6I,IAAQ6kI,EAAW9nH,SAAS51J,SAE5E,MAAM8vC,EAAY3Z,EAAK+yB,MAAMpZ,WAAa,GAG1C,OAFA3Z,EAAK+yB,MAAMpZ,UAAY,GAAGA,EAAY,GAAGA,MAAgB,KAAK1xC,KAAQioB,cAAqB/O,aAC3F0S,GAAU,EACH5rB,EAEX,SAAS0/Q,EAAY3nP,EAAM/3B,GACvB,MAAMqjC,GAAYtL,EAAK+yB,MAAMpZ,WAAa,IAAIpsC,MAAM,MAC9C0/C,EAAO3hB,EAASl3B,OAAOnM,EACvB8yC,GAAQA,EAAKtmC,QAAQxM,GAAQ,EAC7B8yC,IAAsC,IAA9BA,EAAKtmC,QAAQ,aAErBmzQ,EAAUt8O,EAASzhC,OAASojD,EAAKpjD,OACnC+9Q,IACA5nP,EAAK+yB,MAAMpZ,UAAYsT,EAAKx/C,KAAK,MACjComB,GAAU+zP,EACL/zP,GAKT0xP,GAAI,KACI1xP,IAEJqzP,EAAer5Q,SAAQ2xG,IACnB,MAAM,WAAE+nK,GAAe/nK,EACvB,IAAI70G,EAAI48Q,EAAW9nH,SAAS51J,OAC5B,KAAOc,KACH48Q,EAAWM,WAAWl9Q,GAC1B60G,EAAKgoK,MAAQ,MAEjBN,EAAejxP,aA0EvB,SAAS6xP,EAAsBh6Q,GAC3Bq5Q,EAAoBr5Q,EAExB,SAASi6Q,IACL,IAAKZ,EACD,MAAM,IAAIj7Q,MAAM,oDACpB,OAAOi7Q,EAKX,SAASa,EAAQ9gQ,GACb6gQ,IAAwB/C,GAAGiD,SAASx4Q,KAAKyX,GAQ7C,SAASghQ,KACL,MAAMp6Q,EAAYi6Q,IAClB,MAAO,CAACr+Q,EAAMmjB,GAAU0oD,WAAAA,GAAa,GAAU,MAC3C,MAAM3/B,EAAY9nC,EAAUk3Q,GAAGpvO,UAAUlsC,GACzC,GAAIksC,EAAW,CAGX,MAAMrtC,EAAQs+Q,EAAan9Q,EAAMmjB,EAAQ,CAAE0oD,WAAAA,IAI3C,OAHA3/B,EAAUpoC,QAAQK,SAAQqZ,IACtBA,EAAGlb,KAAK8B,EAAWvF,OAEfA,EAAM49J,iBAElB,OAAO,GA2Bf,MAAMgiH,GAAmB,GAEnBC,GAAoB,GACpBC,GAAmB,GACnBC,GAAkB,GAClBC,GAAmBpjQ,QAAQ1P,UACjC,IAAI+yQ,IAAmB,EACvB,SAASC,KACAD,KACDA,IAAmB,EACnBD,GAAiBj2Q,KAAKmB,KAG9B,SAAS+iC,KAEL,OADAiyO,KACOF,GAEX,SAASG,GAAoBxhQ,GACzBmhQ,GAAiB54Q,KAAKyX,GAuB1B,MAAMyhQ,GAAiB,IAAIlxM,IAC3B,IAgDI3+D,GAhDA8vQ,GAAW,EACf,SAASn1Q,KACL,MAAMo1Q,EAAkB1B,EACxB,EAAG,CAGC,KAAOyB,GAAWT,GAAiBt+Q,QAAQ,CACvC,MAAMiE,EAAYq6Q,GAAiBS,IACnCA,KACAd,EAAsBh6Q,GACtBuF,GAAOvF,EAAUk3Q,IAKrB,IAHA8C,EAAsB,MACtBK,GAAiBt+Q,OAAS,EAC1B++Q,GAAW,EACJR,GAAkBv+Q,QACrBu+Q,GAAkB16Q,KAAlB06Q,GAIJ,IAAK,IAAIz9Q,EAAI,EAAGA,EAAI09Q,GAAiBx+Q,OAAQc,GAAK,EAAG,CACjD,MAAMkc,EAAWwhQ,GAAiB19Q,GAC7Bg+Q,GAAep5Q,IAAIsX,KAEpB8hQ,GAAen5Q,IAAIqX,GACnBA,KAGRwhQ,GAAiBx+Q,OAAS,QACrBs+Q,GAAiBt+Q,QAC1B,KAAOy+Q,GAAgBz+Q,QACnBy+Q,GAAgB56Q,KAAhB46Q,GAEJE,IAAmB,EACnBG,GAAe1yP,QACf6xP,EAAsBe,GAE1B,SAASx1Q,GAAO2xQ,GACZ,GAAoB,OAAhBA,EAAG52O,SAAmB,CACtB42O,EAAG3xQ,SACH+wQ,EAAQY,EAAG8D,eACX,MAAM90J,EAAQgxJ,EAAGhxJ,MACjBgxJ,EAAGhxJ,MAAQ,EAAE,GACbgxJ,EAAG52O,UAAY42O,EAAG52O,SAAS5U,EAAEwrP,EAAGnjP,IAAKmyF,GACrCgxJ,EAAG+D,aAAal7Q,QAAQ66Q,KAKhC,SAAS5vO,KAOL,OANKhgC,KACDA,GAAUqM,QAAQ1P,UAClBqD,GAAQxG,MAAK,KACTwG,GAAU,SAGXA,GAEX,SAASkwQ,GAAShpP,EAAMyoF,EAAWq3B,GAC/B9/G,EAAKy0F,cAAcoyJ,EAAa,GAAGp+J,EAAY,QAAU,UAAUq3B,MAEvE,MAAMmpI,GAAW,IAAIxxM,IACrB,IAAIyxM,GACJ,SAASC,KACLD,GAAS,CACLj7O,EAAG,EACHD,EAAG,GACHxU,EAAG0vP,IAGX,SAASE,KACAF,GAAOj7O,GACRm2O,EAAQ8E,GAAOl7O,GAEnBk7O,GAASA,GAAO1vP,EAEpB,SAAS6vP,GAAcC,EAAO3zM,GACtB2zM,GAASA,EAAM3+Q,IACfs+Q,GAASv5Q,OAAO45Q,GAChBA,EAAM3+Q,EAAEgrE,IAGhB,SAAS4zM,GAAeD,EAAO3zM,EAAO7S,EAAQj8C,GAC1C,GAAIyiQ,GAASA,EAAM9nM,EAAG,CAClB,GAAIynM,GAAS15Q,IAAI+5Q,GACb,OACJL,GAASz5Q,IAAI85Q,GACbJ,GAAOl7O,EAAEv+B,MAAK,KACVw5Q,GAASv5Q,OAAO45Q,GACZziQ,IACIi8C,GACAwmN,EAAMnwO,EAAE,GACZtyB,QAGRyiQ,EAAM9nM,EAAE7L,IAGhB,MAAM6zM,GAAkB,CAAEt5P,SAAU,GACpC,SAASu5P,GAAqBzpP,EAAM9Y,EAAIi0C,GACpC,IAEIuuN,EACA5pQ,EAHAo6B,EAAShzB,EAAG8Y,EAAMm7B,GAClB/kB,GAAU,EAGV2vD,EAAM,EACV,SAAS2wK,IACDgT,GACA/B,EAAY3nP,EAAM0pP,GAE1B,SAASn+I,IACL,MAAM,MAAEpqH,EAAQ,EAAC,SAAE+O,EAAW,IAAG,OAAEioB,EAAS8rO,EAAQ,KAAEztO,EAAOsvD,EAAI,IAAEolC,GAAQhxF,GAAUsvO,GACjFt+I,IACAw+I,EAAiBtC,EAAYpnP,EAAM,EAAG,EAAG9P,EAAU/O,EAAOg3B,EAAQ+yF,EAAKnlC,MAC3EvvD,EAAK,EAAG,GACR,MAAMmzO,EAAahpQ,IAAQQ,EACrByoQ,EAAWD,EAAaz5P,EAC1BpQ,GACAA,EAAK82P,QACTxgO,GAAU,EACVsyO,IAAoB,IAAMM,GAAShpP,GAAM,EAAM,WAC/ClgB,EAAOw4B,GAAK33B,IACR,GAAIy1B,EAAS,CACT,GAAIz1B,GAAOipQ,EAIP,OAHApzO,EAAK,EAAG,GACRwyO,GAAShpP,GAAM,EAAM,OACrB02O,IACOtgO,GAAU,EAErB,GAAIz1B,GAAOgpQ,EAAY,CACnB,MAAMnlO,EAAIrM,GAAQx3B,EAAMgpQ,GAAcz5P,GACtCsmB,EAAKgO,EAAG,EAAIA,IAGpB,OAAOpO,KAGf,IAAI/lB,GAAU,EACd,MAAO,CACHsR,QACQtR,IAEJA,GAAU,EACVs3P,EAAY3nP,GACRskP,EAAYpqO,IACZA,EAASA,IACTpB,KAAOxmC,KAAKi5H,IAGZA,MAGR/1D,aACInlD,GAAU,GAEdqR,MACQ0U,IACAsgO,IACAtgO,GAAU,KAK1B,SAASyzO,GAAsB7pP,EAAM9Y,EAAIi0C,GACrC,IAEIuuN,EAFAxvO,EAAShzB,EAAG8Y,EAAMm7B,GAClB/kB,GAAU,EAEd,MAAM40I,EAAQk+F,GAEd,SAAS39I,IACL,MAAM,MAAEpqH,EAAQ,EAAC,SAAE+O,EAAW,IAAG,OAAEioB,EAAS8rO,EAAQ,KAAEztO,EAAOsvD,EAAI,IAAEolC,GAAQhxF,GAAUsvO,GACjFt+I,IACAw+I,EAAiBtC,EAAYpnP,EAAM,EAAG,EAAG9P,EAAU/O,EAAOg3B,EAAQ+yF,IACtE,MAAMy+I,EAAahpQ,IAAQQ,EACrByoQ,EAAWD,EAAaz5P,EAC9Bw4P,IAAoB,IAAMM,GAAShpP,GAAM,EAAO,WAChDsY,GAAK33B,IACD,GAAIy1B,EAAS,CACT,GAAIz1B,GAAOipQ,EAQP,OAPApzO,EAAK,EAAG,GACRwyO,GAAShpP,GAAM,EAAO,SACfgrJ,EAAM/8I,GAGTm2O,EAAQp5F,EAAMh9I,IAEX,EAEX,GAAIrtB,GAAOgpQ,EAAY,CACnB,MAAMnlO,EAAIrM,GAAQx3B,EAAMgpQ,GAAcz5P,GACtCsmB,EAAK,EAAIgO,EAAGA,IAGpB,OAAOpO,KAaf,OAtCA40I,EAAM/8I,GAAK,EA4BPq2O,EAAYpqO,GACZpB,KAAOxmC,MAAK,KAER4nC,EAASA,IACTqxF,OAIJA,IAEG,CACH7pG,IAAIsf,GACIA,GAAS9G,EAAO1D,MAChB0D,EAAO1D,KAAK,EAAG,GAEfJ,IACIszO,GACA/B,EAAY3nP,EAAM0pP,GACtBtzO,GAAU,KAK1B,SAAS0zO,GAAgC9pP,EAAM9Y,EAAIi0C,EAAQ4uN,GACvD,IAAI7vO,EAAShzB,EAAG8Y,EAAMm7B,GAClB3W,EAAIulO,EAAQ,EAAI,EAChBC,EAAkB,KAClBC,EAAkB,KAClBP,EAAiB,KACrB,SAASQ,IACDR,GACA/B,EAAY3nP,EAAM0pP,GAE1B,SAASp2Q,EAAK8tN,EAASlxM,GACnB,MAAMipB,EAAKioL,EAAQvqN,EAAI2tC,EAEvB,OADAt0B,GAAY5X,KAAKknB,IAAI2Z,GACd,CACHlI,EACAp6B,EAAGuqN,EAAQvqN,EACXsiC,EAAAA,EACAjpB,SAAAA,EACAyR,MAAOy/L,EAAQz/L,MACfD,IAAK0/L,EAAQz/L,MAAQzR,EACrB86J,MAAOo2C,EAAQp2C,OAGvB,SAASz/C,EAAG10H,GACR,MAAM,MAAEsK,EAAQ,EAAC,SAAE+O,EAAW,IAAG,OAAEioB,EAAS8rO,EAAQ,KAAEztO,EAAOsvD,EAAI,IAAEolC,GAAQhxF,GAAUsvO,GAC/EpoD,EAAU,CACZz/L,MAAOhhB,IAAQQ,EACftK,EAAAA,GAECA,IAEDuqN,EAAQp2C,MAAQk+F,GAChBA,GAAOj7O,GAAK,GAEZ+7O,GAAmBC,EACnBA,EAAkB7oD,GAKdl2F,IACAg/I,IACAR,EAAiBtC,EAAYpnP,EAAMwkB,EAAG3tC,EAAGqZ,EAAU/O,EAAOg3B,EAAQ+yF,IAElEr0H,GACA2/B,EAAK,EAAG,GACZwzO,EAAkB12Q,EAAK8tN,EAASlxM,GAChCw4P,IAAoB,IAAMM,GAAShpP,EAAMnpB,EAAG,WAC5CyhC,GAAK33B,IAUD,GATIspQ,GAAmBtpQ,EAAMspQ,EAAgBtoP,QACzCqoP,EAAkB12Q,EAAK22Q,EAAiB/5P,GACxC+5P,EAAkB,KAClBjB,GAAShpP,EAAMgqP,EAAgBnzQ,EAAG,SAC9Bq0H,IACAg/I,IACAR,EAAiBtC,EAAYpnP,EAAMwkB,EAAGwlO,EAAgBnzQ,EAAGmzQ,EAAgB95P,SAAU,EAAGioB,EAAQ+B,EAAOgxF,OAGzG8+I,EACA,GAAIrpQ,GAAOqpQ,EAAgBtoP,IACvB8U,EAAKgO,EAAIwlO,EAAgBnzQ,EAAG,EAAI2tC,GAChCwkO,GAAShpP,EAAMgqP,EAAgBnzQ,EAAG,OAC7BozQ,IAEGD,EAAgBnzQ,EAEhBqzQ,MAIOF,EAAgBh/F,MAAM/8I,GACzBm2O,EAAQ4F,EAAgBh/F,MAAMh9I,IAG1Cg8O,EAAkB,UAEjB,GAAIrpQ,GAAOqpQ,EAAgBroP,MAAO,CACnC,MAAMnI,EAAI7Y,EAAMqpQ,EAAgBroP,MAChC6iB,EAAIwlO,EAAgB/4O,EAAI+4O,EAAgB7wO,EAAIhB,EAAO3e,EAAIwwP,EAAgB95P,UACvEsmB,EAAKgO,EAAG,EAAIA,GAGpB,SAAUwlO,IAAmBC,OAIzC,MAAO,CACH93P,IAAItb,GACIytQ,EAAYpqO,GACZpB,KAAOxmC,MAAK,KAER4nC,EAASA,IACTqxF,EAAG10H,MAIP00H,EAAG10H,IAGX6qB,MACIwoP,IACAF,EAAkBC,EAAkB,OAoXhD,IA2KIE,GA5GJ,SAASC,GAAiBd,GACtBA,GAASA,EAAMt7O,IAKnB,SAASq8O,GAAgBv8Q,EAAWuL,EAAQ22G,EAAQs6J,GAChD,MAAM,SAAEl8O,EAAQ,SAAE65O,EAAQ,WAAEhD,EAAU,aAAE8D,GAAiBj7Q,EAAUk3Q,GACnE52O,GAAYA,EAASqvD,EAAEpkF,EAAQ22G,GAC1Bs6J,GAED5B,IAAoB,KAChB,MAAM6B,EAAiBtC,EAAS1zQ,IAAI4d,GAAK/d,OAAOkwQ,GAC5CW,EACAA,EAAWx1Q,QAAQ86Q,GAKnBnG,EAAQmG,GAEZz8Q,EAAUk3Q,GAAGiD,SAAW,MAGhCc,EAAal7Q,QAAQ66Q,IAEzB,SAAS8B,GAAkB18Q,EAAWq4Q,GAClC,MAAMnB,EAAKl3Q,EAAUk3Q,GACD,OAAhBA,EAAG52O,WACHg2O,EAAQY,EAAGC,YACXD,EAAG52O,UAAY42O,EAAG52O,SAAS+K,EAAEgtO,GAG7BnB,EAAGC,WAAaD,EAAG52O,SAAW,KAC9B42O,EAAGnjP,IAAM,IAWjB,SAASvuB,GAAKxF,EAAWhF,EAASkiI,EAAUy/I,EAAiBC,EAAWzvO,EAAO0vO,EAAe32J,EAAQ,EAAE,IACpG,MAAM42J,EAAmBzD,EACzBW,EAAsBh6Q,GACtB,MAAMk3Q,EAAKl3Q,EAAUk3Q,GAAK,CACtB52O,SAAU,KACVvM,IAAK,KAELoZ,MAAAA,EACA5nC,OAAQyyF,EACR4kL,UAAAA,EACAG,MAAO1G,IAEP8D,SAAU,GACVhD,WAAY,GACZ6F,cAAe,GACfhC,cAAe,GACfC,aAAc,GACd39Q,QAAS,IAAIiqC,IAAIvsC,EAAQsC,UAAYw/Q,EAAmBA,EAAiB5F,GAAG55Q,QAAU,KAEtFwqC,UAAWuuO,IACXnwJ,MAAAA,EACA+2J,YAAY,EACZtvK,KAAM3yG,EAAQuQ,QAAUuxQ,EAAiB5F,GAAGvpK,MAEhDkvK,GAAiBA,EAAc3F,EAAGvpK,MAClC,IAAI4vE,GAAQ,EAkBZ,GAjBA25F,EAAGnjP,IAAMmpG,EACHA,EAASl9H,EAAWhF,EAAQmyC,OAAS,IAAI,CAACtwC,EAAGy4D,KAAQqiC,KACnD,MAAMj+F,EAAQi+F,EAAK57F,OAAS47F,EAAK,GAAKriC,EAOtC,OANI4hN,EAAGnjP,KAAO6oP,EAAU1F,EAAGnjP,IAAIl3B,GAAIq6Q,EAAGnjP,IAAIl3B,GAAKnD,MACtCw9Q,EAAG+F,YAAc/F,EAAG6F,MAAMlgR,IAC3Bq6Q,EAAG6F,MAAMlgR,GAAGnD,GACZ6jL,GAxCpB,SAAoBv9K,EAAWnD,IACI,IAA3BmD,EAAUk3Q,GAAGhxJ,MAAM,KACnBm0J,GAAiB14Q,KAAK3B,GACtB26Q,KACA36Q,EAAUk3Q,GAAGhxJ,MAAMzkF,KAAK,IAE5BzhC,EAAUk3Q,GAAGhxJ,MAAOrpH,EAAI,GAAM,IAAO,GAAMA,EAAI,GAmC/BqgR,CAAWl9Q,EAAWnD,IAEvBy4D,KAET,GACN4hN,EAAG3xQ,SACHg4K,GAAQ,EACR+4F,EAAQY,EAAG8D,eAEX9D,EAAG52O,WAAWq8O,GAAkBA,EAAgBzF,EAAGnjP,KAC/C/4B,EAAQuQ,OAAQ,CAChB,GAAIvQ,EAAQmiR,QAAS,CAlpDzBtF,GAAe,EAopDP,MAAM1gH,EA52ClB,SAAkBplI,GACd,OAAOl0B,MAAMuB,KAAK2yB,EAAQsnH,YA22CJrU,CAAShqI,EAAQuQ,QAE/B2rQ,EAAG52O,UAAY42O,EAAG52O,SAASjS,EAAE8oI,GAC7BA,EAAMp3J,QAAQi1D,QAIdkiN,EAAG52O,UAAY42O,EAAG52O,SAASJ,IAE3BllC,EAAQihR,OACRV,GAAcv7Q,EAAUk3Q,GAAG52O,UAC/Bi8O,GAAgBv8Q,EAAWhF,EAAQuQ,OAAQvQ,EAAQknH,OAAQlnH,EAAQwhR,eA5pDvE3E,GAAe,EA8pDXlyQ,KAEJq0Q,EAAsB8C,GAtcS,oBAAXv6Q,OAClBA,OACsB,oBAAfwuJ,WACHA,WACA18I,OA+IiB,IAAIs1D,IAAI,CAC/B,kBACA,sBACA,QACA,YACA,WACA,UACA,WACA,UACA,QACA,WACA,iBACA,SACA,QACA,OACA,WACA,QACA,WACA,aACA,OACA,cACA,WACA,WACA,WACA,aA8RuB,mBAAhB0wE,cACPgiI,GAAgB,cAAchiI,YAC1Bl8I,cACI8+C,QACA1/C,KAAKm2J,aAAa,CAAEzlH,KAAM,SAE9B4lH,oBACI,MAAM,SAAEsmH,GAAa58Q,KAAK25Q,GAC1B35Q,KAAK25Q,GAAG8F,cAAgB7C,EAAS1zQ,IAAI4d,GAAK/d,OAAOkwQ,GAEjD,IAAK,MAAMp1Q,KAAO7D,KAAK25Q,GAAGkG,QAEtB7/Q,KAAKuX,YAAYvX,KAAK25Q,GAAGkG,QAAQh8Q,IAGzC6yJ,yBAAyB35H,EAAM+iP,EAAW/vH,GACtC/vJ,KAAK+8B,GAAQgzH,EAEjByG,uBACIuiH,EAAQ/4Q,KAAK25Q,GAAG8F,eAEpBM,WACIZ,GAAkBn/Q,KAAM,GACxBA,KAAK+/Q,SAAWtlL,EAEpBulL,IAAI3hR,EAAMmd,GAEN,MAAM+uB,EAAavqC,KAAK25Q,GAAGpvO,UAAUlsC,KAAU2B,KAAK25Q,GAAGpvO,UAAUlsC,GAAQ,IAEzE,OADAksC,EAAUnmC,KAAKoX,GACR,KACH,MAAMgQ,EAAQ+e,EAAUnhC,QAAQoS,IACjB,IAAXgQ,GACA+e,EAAUjmC,OAAOknB,EAAO,IAGpCy0P,KAAKnmI,GACG95I,KAAKkgR,QAAU5G,EAASx/H,KACxB95I,KAAK25Q,GAAG+F,YAAa,EACrB1/Q,KAAKkgR,MAAMpmI,GACX95I,KAAK25Q,GAAG+F,YAAa,MAQrC,MAAMS,GACFJ,WACIZ,GAAkBn/Q,KAAM,GACxBA,KAAK+/Q,SAAWtlL,EAEpBulL,IAAI3hR,EAAMmd,GACN,MAAM+uB,EAAavqC,KAAK25Q,GAAGpvO,UAAUlsC,KAAU2B,KAAK25Q,GAAGpvO,UAAUlsC,GAAQ,IAEzE,OADAksC,EAAUnmC,KAAKoX,GACR,KACH,MAAMgQ,EAAQ+e,EAAUnhC,QAAQoS,IACjB,IAAXgQ,GACA+e,EAAUjmC,OAAOknB,EAAO,IAGpCy0P,KAAKnmI,GACG95I,KAAKkgR,QAAU5G,EAASx/H,KACxB95I,KAAK25Q,GAAG+F,YAAa,EACrB1/Q,KAAKkgR,MAAMpmI,GACX95I,KAAK25Q,GAAG+F,YAAa,wFCt7DjC,MAAMU,EAAmB,GAgBzB,SAAS77O,EAASpoC,EAAOm6B,EAAQ,OAC7B,IAAIsV,EACJ,MAAMy0O,EAAc,IAAIj0M,IACxB,SAAS5gC,EAAI80O,GACT,IAAI,QAAenkR,EAAOmkR,KACtBnkR,EAAQmkR,EACJ10O,GAAM,CACN,MAAM20O,GAAaH,EAAiB5hR,OACpC,IAAK,MAAMgiR,KAAcH,EACrBG,EAAW,KACXJ,EAAiBh8Q,KAAKo8Q,EAAYrkR,GAEtC,GAAIokR,EAAW,CACX,IAAK,IAAIjhR,EAAI,EAAGA,EAAI8gR,EAAiB5hR,OAAQc,GAAK,EAC9C8gR,EAAiB9gR,GAAG,GAAG8gR,EAAiB9gR,EAAI,IAEhD8gR,EAAiB5hR,OAAS,IAuB1C,MAAO,CAAEgtC,IAAAA,EAAKxjC,OAlBd,SAAgB6T,GACZ2vB,EAAI3vB,EAAG1f,KAiBWs8I,UAftB,SAAmB3xH,EAAKqjD,EAAa,OACjC,MAAMq2M,EAAa,CAAC15P,EAAKqjD,GAMzB,OALAk2M,EAAYl8Q,IAAIq8Q,GACS,IAArBH,EAAY5rP,OACZmX,EAAOtV,EAAMkV,IAAQ,OAEzB1kB,EAAI3qB,GACG,KACHkkR,EAAYh8Q,OAAOm8Q,GACM,IAArBH,EAAY5rP,OACZmX,IACAA,EAAO,SAMvB,SAAS60O,EAAQC,EAAQ7kQ,EAAI8kQ,GACzB,MAAMC,GAAUtgR,MAAMiF,QAAQm7Q,GACxBG,EAAeD,EACf,CAACF,GACDA,EACA/gI,EAAO9jI,EAAGrd,OAAS,EACzB,MAxDO,CACHi6I,UAAWl0G,EAuDCo8O,GAAgBn1O,IAC5B,IAAIs1O,GAAS,EACb,MAAM1iR,EAAS,GACf,IAAIogI,EAAU,EACV6sI,EAAU,MACd,MAAM0V,EAAO,KACT,GAAIviJ,EACA,OAEJ6sI,IACA,MAAMlkQ,EAAS0U,EAAG+kQ,EAASxiR,EAAO,GAAKA,EAAQotC,GAC3Cm0G,EACAn0G,EAAIrkC,GAGJkkQ,GAAU,SAAYlkQ,GAAUA,EAAS,OAG3C65Q,EAAgBH,EAAa33Q,KAAI,CAACwuI,EAAOp4I,KAAM,SAAUo4I,GAAQv7I,IACnEiC,EAAOkB,GAAKnD,EACZqiI,KAAa,GAAKl/H,GACdwhR,GACAC,OAEL,KACCviJ,GAAY,GAAKl/H,OAIrB,OAFAwhR,GAAS,EACTC,IACO,YACH,SAAQC,GACR3V,QAtF8B5yH,kFCkD1C,SAAS,EAASt/F,GACd,MAAM+oD,EAAI/oD,EAAI,EACd,OAAO+oD,EAAIA,EAAIA,EAAI,ECrBvB,SAAS++K,EAAKtsP,GAAM,MAAE7e,EAAQ,EAAC,SAAE+O,EAAW,IAAG,OAAEioB,EAAS,OAAW,IACjE,MAAMqpC,GAAKgkC,iBAAiBxlF,GAAM41D,QAClC,MAAO,CACHz0E,MAAAA,EACA+O,SAAAA,EACAioB,OAAAA,EACA+yF,IAAK1mF,GAAK,YAAYA,EAAIg9B,GAGlC,SAAS+qM,EAAIvsP,GAAM,MAAE7e,EAAQ,EAAC,SAAE+O,EAAW,IAAG,OAAEioB,EAAS,EAAQ,EAAEwH,EAAI,EAAC,EAAEC,EAAI,EAAC,QAAEg2C,EAAU,GAAM,IAC7F,MAAM7iC,EAAQyyD,iBAAiBxlF,GACzBwsP,GAAkBz5N,EAAM6iC,QACxB+0D,EAAgC,SAApB53F,EAAM43F,UAAuB,GAAK53F,EAAM43F,UACpD8hI,EAAKD,GAAkB,EAAI52L,GACjC,MAAO,CACHz0E,MAAAA,EACA+O,SAAAA,EACAioB,OAAAA,EACA+yF,IAAK,CAAC1mF,EAAGtD,IAAM,sBACPypG,gBAAwB,EAAInmG,GAAK7E,SAAS,EAAI6E,GAAK5E,yBACrD4sO,EAAkBC,EAAKvrO,qDC9DrC,IAAI5zB,KAAK,yBAAyBlS,IAAI,MAAM8tF,IAAI,SAASA,EAAEA,EAAE1kD,GAAG,OAAO,IAAIr/B,SAAQ,SAAU8oB,GAAG,IAAItkC,EAAE,IAAI+iR,eAAe/iR,EAAEgjR,MAAM5U,UAAU,SAAS7uK,GAAGj7D,EAAEi7D,EAAEpyF,OAAOoyF,EAAE0jL,YAAYpoO,EAAE,CAAC76C,EAAEkjR,WAAiL,SAAS5+O,EAAEi7D,EAAE1kD,IAAI,MAAMA,GAAGA,EAAE0kD,EAAEr/F,UAAU26C,EAAE0kD,EAAEr/F,QAAQ,IAAI,IAAIokC,EAAE,EAAEtkC,EAAE,IAAIgC,MAAM64C,GAAGvW,EAAEuW,EAAEvW,IAAItkC,EAAEskC,GAAGi7D,EAAEj7D,GAAG,OAAOtkC,EAAE,SAASA,EAAEu/F,EAAE1kD,GAAG,IAAI76C,EAAE,GAAG,oBAAoBk3G,QAAQ,MAAM3X,EAAE2X,OAAOikC,UAAU,CAAC,GAAGn5I,MAAMiF,QAAQs4F,KAAKv/F,EAAE,SAASu/F,EAAE1kD,GAAG,GAAG0kD,EAAE,CAAC,GAAG,iBAAiBA,EAAE,OAAOj7D,EAAEi7D,EAAE1kD,GAAG,IAAI76C,EAAErC,OAAO4D,UAAUC,SAASa,KAAKk9F,GAAG17F,MAAM,GAAG,GAAG,MAAM,WAAW7D,GAAGu/F,EAAEj9F,cAActC,EAAEu/F,EAAEj9F,YAAYhE,MAAM,QAAQ0B,GAAG,QAAQA,EAAEgC,MAAMuB,KAAKg8F,GAAG,cAAcv/F,GAAG,2CAA2CkV,KAAKlV,GAAGskC,EAAEi7D,EAAE1kD,QAAG,GAApR,CAA6R0kD,KAAK1kD,GAAG0kD,GAAG,iBAAiBA,EAAEr/F,OAAO,CAACF,IAAIu/F,EAAEv/F,GAAG,IAAIgB,EAAE,EAAE,OAAO,WAAW,OAAOA,GAAGu+F,EAAEr/F,OAAO,CAACk7I,MAAK,GAAI,CAACA,MAAK,EAAGv9I,MAAM0hG,EAAEv+F,OAAO,MAAM,IAAImsH,UAAU,yIAAyI,OAAOntH,EAAEu/F,EAAE2X,OAAOikC,aAAa73F,KAAK3qC,KAAK3Y,GAAG,IAAI2jB,KAAK,uBAAuBlS,IAAI,MAAM8tF,IAAI,IAAIv+F,EAAE,WAAW,IAAIu+F,EAAE79F,KAAKA,KAAKyN,QAAQ,IAAIqM,SAAQ,SAAUq/B,EAAEvW,GAAGi7D,EAAEzzF,QAAQ+uC,EAAE0kD,EAAEhpF,OAAO+tB,MAAM,SAASuzC,EAAE0nB,EAAE1kD,GAAG,IAAIvW,EAAE9kB,SAASC,KAAK,OAAO,IAAI0jQ,IAAI5jL,EAAEj7D,GAAG7kB,OAAO,IAAI0jQ,IAAItoO,EAAEvW,GAAG7kB,KAAK,IAAI83B,EAAE,SAASgoD,EAAE1kD,GAAGn5C,KAAK3B,KAAKw/F,EAAE5hG,OAAOge,OAAOja,KAAKm5C,IAAI,SAASvT,EAAEi4D,EAAE1kD,EAAEvW,GAAG,OAAOA,EAAEuW,EAAEA,EAAE0kD,GAAGA,GAAGA,GAAGA,EAAE52F,OAAO42F,EAAE/jF,QAAQ1P,QAAQyzF,IAAI1kD,EAAE0kD,EAAE52F,KAAKkyC,GAAG0kD,GAAG,SAASl7D,KAAK,IAAIu/D,EAAE,CAAC7jG,KAAK,gBAAgB,SAASo9B,EAAEoiE,EAAE1kD,GAAG,IAAIA,EAAE,OAAO0kD,GAAGA,EAAE52F,KAAK42F,EAAE52F,KAAK07B,GAAG7oB,QAAQ1P,UAAU,IAAIs4B,EAAE,SAASE,GAAG,IAAItkC,EAAEqkC,EAAE,SAASD,EAAEm7D,EAAE1kD,GAAG,IAAI76C,EAAEqkC,EAAE,YAAO,IAASwW,IAAIA,EAAE,KAAK76C,EAAEskC,EAAEjiC,KAAKX,OAAOA,MAAM0hR,GAAG,GAAGpjR,EAAEqjR,GAAG,EAAErjR,EAAEsjR,GAAG,IAAItiR,EAAEhB,EAAEujR,GAAG,IAAIviR,EAAEhB,EAAEi/H,GAAG,IAAIj+H,EAAEhB,EAAE0tK,GAAG,EAAE1tK,EAAEwjR,GAAG,IAAI11M,IAAI9tE,EAAEyjR,GAAG,WAAW,IAAIlkL,EAAEv/F,EAAEud,GAAGs9B,EAAE0kD,EAAEmkL,WAAW1jR,EAAEqjR,GAAG,IAAIxrM,EAAEh9B,EAAE8oO,UAAU3jR,EAAE4jR,GAAGpiR,aAAagyB,YAAYxc,MAAMhX,EAAE0tK,GAAG,KAAK1tK,EAAE6jR,GAAGhpO,EAAE0kD,EAAExsE,oBAAoB,cAAc/yB,EAAEyjR,MAAMzjR,EAAE8jR,GAAGjpO,EAAE76C,EAAEwjR,GAAG39Q,IAAIg1C,GAAG76C,EAAEsjR,GAAGx3Q,QAAQ+uC,MAAM76C,EAAEqjR,GAAGxoO,EAAElhC,iBAAiB,cAAc3Z,EAAEkmH,KAAKlmH,EAAEkmH,GAAG,SAAS3mB,GAAG,IAAI1kD,EAAE76C,EAAEud,GAAG+mB,EAAEi7D,EAAE7vF,OAAO1O,EAAEsjC,EAAEsF,MAAMiuC,EAAEvzC,IAAItkC,EAAE6jR,GAAGv8O,EAAE,CAACy8O,GAAGz/O,EAAE0/O,WAAWnsM,EAAEw+F,cAAc92E,IAAI1nB,GAAG73E,EAAEikR,KAAK38O,EAAE48O,UAAS,GAAIlkR,EAAE8qH,cAAc,IAAIvzE,EAAEv2C,EAAEsmC,IAAI,cAActmC,EAAEhB,EAAE43M,GAAGj0L,KAAKjN,YAAW,WAAY,cAAc1V,GAAG65C,EAAEspO,UAAU7/O,GAAGtkC,EAAE8qH,cAAc,IAAIvzE,EAAE,UAAUjQ,MAAM,KAAK,eAAetmC,IAAI2V,aAAa3W,EAAE43M,IAAI//H,GAAG73E,EAAEujR,GAAGz3Q,QAAQw4B,KAAKtkC,EAAEokR,GAAG,SAAS7kL,GAAG,IAAI1kD,EAAE76C,EAAE8jR,GAAGx/O,EAAEuW,IAAIpgC,UAAU4pQ,cAAcjxO,WAAWpzC,EAAE8qH,cAAc,IAAIvzE,EAAE,cAAc,CAACysO,WAAW1/O,EAAE+xI,cAAc92E,EAAEwkL,GAAGlpO,EAAEqpO,SAASlkR,EAAEikR,MAAM3/O,GAAGtkC,EAAEi/H,GAAGnzH,QAAQ+uC,IAAI76C,EAAEskR,IAAIjgP,EAAE,SAASk7D,GAAG,IAAI1kD,EAAE0kD,EAAEpyF,KAAKm3B,EAAEi7D,EAAEglL,MAAMvjR,EAAEu+F,EAAEliG,OAAO,OAAOiqC,EAAEtnC,EAAEwkR,SAAQ,WAAYxkR,EAAEwjR,GAAG59Q,IAAI5E,IAAIhB,EAAE8qH,cAAc,IAAIvzE,EAAE,UAAU,CAACpqC,KAAK0tC,EAAEw7H,cAAc92E,EAAEglL,MAAMjgP,EAAEy/O,GAAG/iR,SAAS,WAAW,IAAI,IAAIu+F,EAAE,GAAG1kD,EAAE,EAAEA,EAAEj9B,UAAU1d,OAAO26C,IAAI0kD,EAAE1kD,GAAGj9B,UAAUi9B,GAAG,IAAI,OAAOr/B,QAAQ1P,QAAQu4B,EAAE1iC,MAAMD,KAAK69F,IAAI,MAAMA,GAAG,OAAO/jF,QAAQjF,OAAOgpF,MAAMv/F,EAAE4jR,GAAGrkL,EAAEv/F,EAAEojR,GAAGvoO,EAAEpgC,UAAU4pQ,cAAc1qQ,iBAAiB,UAAU3Z,EAAEskR,IAAItkR,EAAEqkC,EAAEC,GAAGtkC,EAAEokC,GAAG7iC,UAAU5D,OAAOqrE,OAAO3kC,EAAE9iC,WAAWvB,EAAEuB,UAAUe,YAAYtC,EAAEA,EAAE+B,UAAUsiC,EAAE,IAAM7R,EAAIw/B,EAAE5tB,EAAE7iC,UAAU,OAAOywD,EAAEmX,SAAS,SAASo2B,GAAG,IAAI1kD,QAAG,IAAS0kD,EAAE,GAAGA,GAAGklL,UAAUngP,OAAE,IAASuW,GAAGA,EAAE,IAAI,IAAI76C,EAAE0B,KAAK,OAAO,SAAS69F,EAAE1kD,GAAG,IAAIvW,EAAEi7D,IAAI,OAAGj7D,GAAGA,EAAE37B,KAAY27B,EAAE37B,KAAKkyC,GAAUA,IAA7D,EAAmE,WAAY,IAAIvW,GAAG,aAAa39B,SAASsV,WAAW,OAAOkhB,EAAE,IAAI3hB,SAAQ,SAAU+jF,GAAG,OAAO74F,OAAOiT,iBAAiB,OAAO4lF,UAAS,WAAY,OAAOv/F,EAAEikR,GAAGnhP,QAAQroB,UAAU4pQ,cAAcjxO,YAAYpzC,EAAE0kR,GAAG1kR,EAAE2kR,KAAKr9O,EAAEtnC,EAAE4kR,MAAK,SAAUrlL,GAAGv/F,EAAEud,GAAGgiF,EAAEv/F,EAAE0kR,KAAK1kR,EAAE8jR,GAAG9jR,EAAE0kR,GAAG1kR,EAAEujR,GAAGz3Q,QAAQ9L,EAAE0kR,IAAI1kR,EAAEi/H,GAAGnzH,QAAQ9L,EAAE0kR,IAAI1kR,EAAE0kR,GAAG/qQ,iBAAiB,cAAc3Z,EAAEkmH,GAAG,CAACrzF,MAAK,KAAM,IAAIgoB,EAAE76C,EAAEud,GAAG4mQ,QAAQ,OAAOtpO,GAAGg9B,EAAEh9B,EAAE8oO,UAAU3jR,EAAE4jR,GAAGpiR,cAAcxB,EAAE8jR,GAAGjpO,EAAEr/B,QAAQ1P,UAAUnD,MAAK,WAAY3I,EAAE8qH,cAAc,IAAIvzE,EAAE,UAAU,CAACwsO,GAAGlpO,EAAEgqO,0BAAyB,QAASl8Q,MAAK,gBAAiB3I,EAAE8jR,KAAK9jR,EAAEsjR,GAAGx3Q,QAAQ9L,EAAE8jR,IAAI9jR,EAAEwjR,GAAG39Q,IAAI7F,EAAE8jR,KAAK9jR,EAAEud,GAAG5D,iBAAiB,cAAc3Z,EAAEyjR,IAAIhpQ,UAAU4pQ,cAAc1qQ,iBAAiB,mBAAmB3Z,EAAEokR,IAAIpkR,EAAEud,SAAS,MAAMgiF,GAAG,OAAO/jF,QAAQjF,OAAOgpF,KAAKvtC,EAAEtoD,OAAO,WAAW,IAAI,OAAOhI,KAAK6b,GAAG4f,EAAEz7B,KAAK6b,GAAG7T,eAAU,EAAO,MAAM61F,GAAG,OAAO/jF,QAAQjF,OAAOgpF,KAAKvtC,EAAEwyN,MAAM,WAAW,YAAO,IAAS9iR,KAAKoiR,GAAGtoQ,QAAQ1P,QAAQpK,KAAKoiR,IAAIpiR,KAAK4hR,GAAGn0Q,SAAS6iD,EAAE8yN,UAAU,SAASjqO,GAAG,IAAI,OAAOvT,EAAE5lC,KAAK8iR,SAAQ,SAAUlgP,GAAG,OAAOi7D,EAAEj7D,EAAEuW,MAAM,MAAM0kD,GAAG,OAAO/jF,QAAQjF,OAAOgpF,KAAKvtC,EAAE+yN,mBAAmB,WAAWrjR,KAAK6b,IAAI7b,KAAK6b,GAAG4mQ,SAAS5kL,EAAE79F,KAAK6b,GAAG4mQ,QAAQvgL,IAAI5xC,EAAE2yN,GAAG,WAAW,IAAIplL,EAAE9kF,UAAU4pQ,cAAcjxO,WAAW,OAAOmsD,GAAG1nB,EAAE0nB,EAAEokL,UAAUjiR,KAAKkiR,GAAGpiR,YAAY+9F,OAAE,GAAQvtC,EAAE4yN,GAAG,WAAW,IAAI,IAAIrlL,EAAE79F,KAAK,OAAO,SAAS69F,EAAE1kD,GAAG,IAAI,IAAIvW,EAAEi7D,IAAI,MAAMA,GAAG,OAAO1kD,EAAE0kD,GAAG,OAAGj7D,GAAGA,EAAE37B,KAAY27B,EAAE37B,UAAK,EAAOkyC,GAAUvW,EAA7F,EAAgG,WAAY,OAAOgD,EAAE7sB,UAAU4pQ,cAAcl7M,SAASo2B,EAAEqkL,GAAGrkL,EAAE6jL,KAAI,SAAUvoO,GAAG,OAAO0kD,EAAEmuE,GAAGl6I,YAAYxc,MAAM6jC,QAAO,SAAU0kD,GAAG,MAAMA,KAAK,MAAMA,GAAG,OAAO/jF,QAAQjF,OAAOgpF,MAAU/sE,EAAE,CAAC,CAACjtB,IAAI,SAASqW,IAAI,WAAW,OAAOla,KAAK6hR,GAAGp0Q,UAAU,CAAC5J,IAAI,cAAcqW,IAAI,WAAW,OAAOla,KAAKu9H,GAAG9vH,aAA7mJ,SAAWowF,EAAE1kD,GAAG,IAAI,IAAIvW,EAAE,EAAEA,EAAEuW,EAAE36C,OAAOokC,IAAI,CAAC,IAAItkC,EAAE66C,EAAEvW,GAAGtkC,EAAE22E,WAAW32E,EAAE22E,aAAY,EAAG32E,EAAEke,cAAa,EAAG,UAAUle,IAAIA,EAAEimC,UAAS,GAAItoC,OAAOC,eAAe2hG,EAAEv/F,EAAEuF,IAAIvF,IAAw9I66C,CAA1HzW,EAA8H7iC,UAAUixB,GAAa4R,EAA5tG,CAA+tG,WAAW,SAASm7D,IAAI79F,KAAKsjR,GAAG,IAAIt5O,IAAI,IAAImP,EAAE0kD,EAAEh+F,UAAU,OAAOs5C,EAAElhC,iBAAiB,SAAS4lF,EAAE1kD,GAAGn5C,KAAKujR,GAAG1lL,GAAG15F,IAAIg1C,IAAIA,EAAE9nB,oBAAoB,SAASwsE,EAAE1kD,GAAGn5C,KAAKujR,GAAG1lL,GAAGx5F,OAAO80C,IAAIA,EAAEiwE,cAAc,SAASvrB,GAAGA,EAAE7vF,OAAOhO,KAAK,IAAI,IAAIm5C,EAAEvW,EAAEtkC,EAAE0B,KAAKujR,GAAG1lL,EAAEx/F,SAAS86C,EAAEvW,KAAK82G,OAAO,EAAGvgG,EAAEh9C,OAAO0hG,IAAK1kD,EAAEoqO,GAAG,SAAS1lL,GAAG,OAAO79F,KAAKsjR,GAAGp/Q,IAAI25F,IAAI79F,KAAKsjR,GAAG93O,IAAIqyD,EAAE,IAAIzxB,KAAKpsE,KAAKsjR,GAAGppQ,IAAI2jF,IAAIA,EAAxW","sources":["webpack://meteocool/./node_modules/@fortawesome/free-brands-svg-icons/faGithub.js","webpack://meteocool/./node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleDown.js","webpack://meteocool/./node_modules/@fortawesome/free-solid-svg-icons/faAngleDoubleUp.js","webpack://meteocool/./node_modules/@fortawesome/free-solid-svg-icons/faAnglesDown.js","webpack://meteocool/./node_modules/@fortawesome/free-solid-svg-icons/faAnglesUp.js","webpack://meteocool/./node_modules/@fortawesome/free-solid-svg-icons/faCircle.js","webpack://meteocool/./node_modules/@fortawesome/free-solid-svg-icons/faClockRotateLeft.js","webpack://meteocool/./node_modules/@fortawesome/free-solid-svg-icons/faHistory.js","webpack://meteocool/./node_modules/@fortawesome/free-solid-svg-icons/faLayerGroup.js","webpack://meteocool/./node_modules/@fortawesome/free-solid-svg-icons/faPause.js","webpack://meteocool/./node_modules/@fortawesome/free-solid-svg-icons/faPlay.js","webpack://meteocool/./node_modules/@fortawesome/free-solid-svg-icons/faRetweet.js","webpack://meteocool/./node_modules/@sentry/src/flags.ts","webpack://meteocool/./node_modules/@sentry/src/integrations/inboundfilters.ts","webpack://meteocool/./node_modules/@sentry/src/integrations/functiontostring.ts","webpack://meteocool/./node_modules/@sentry/src/version.ts","webpack://meteocool/./node_modules/@sentry/src/polyfill.ts","webpack://meteocool/./node_modules/@sentry/src/error.ts","webpack://meteocool/./node_modules/@sentry/src/dsn.ts","webpack://meteocool/./node_modules/@sentry/src/normalize.ts","webpack://meteocool/./node_modules/@sentry/src/memo.ts","webpack://meteocool/./node_modules/@sentry/src/integration.ts","webpack://meteocool/./node_modules/@sentry/src/baseclient.ts","webpack://meteocool/./node_modules/@sentry/src/api.ts","webpack://meteocool/./node_modules/@sentry/src/envelope.ts","webpack://meteocool/./node_modules/@sentry/src/request.ts","webpack://meteocool/./node_modules/@sentry/src/transports/noop.ts","webpack://meteocool/./node_modules/@sentry/src/basebackend.ts","webpack://meteocool/./node_modules/src/stack-parsers.ts","webpack://meteocool/./node_modules/src/eventbuilder.ts","webpack://meteocool/./node_modules/@sentry/src/promisebuffer.ts","webpack://meteocool/./node_modules/@sentry/src/ratelimit.ts","webpack://meteocool/./node_modules/@sentry/src/status.ts","webpack://meteocool/./node_modules/@sentry/src/transports/base.ts","webpack://meteocool/./node_modules/src/flags.ts","webpack://meteocool/./node_modules/src/transports/utils.ts","webpack://meteocool/./node_modules/src/transports/base.ts","webpack://meteocool/./node_modules/@sentry/src/clientreport.ts","webpack://meteocool/./node_modules/@sentry/src/async.ts","webpack://meteocool/./node_modules/src/transports/fetch.ts","webpack://meteocool/./node_modules/src/transports/xhr.ts","webpack://meteocool/./node_modules/src/backend.ts","webpack://meteocool/./node_modules/src/transports/new-fetch.ts","webpack://meteocool/./node_modules/src/transports/new-xhr.ts","webpack://meteocool/./node_modules/@sentry/src/index.ts","webpack://meteocool/./node_modules/src/helpers.ts","webpack://meteocool/./node_modules/src/integrations/breadcrumbs.ts","webpack://meteocool/./node_modules/src/client.ts","webpack://meteocool/./node_modules/src/integrations/trycatch.ts","webpack://meteocool/./node_modules/src/integrations/globalhandlers.ts","webpack://meteocool/./node_modules/src/integrations/linkederrors.ts","webpack://meteocool/./node_modules/src/integrations/dedupe.ts","webpack://meteocool/./node_modules/src/integrations/useragent.ts","webpack://meteocool/./node_modules/src/sdk.ts","webpack://meteocool/./node_modules/@sentry/src/sdk.ts","webpack://meteocool/./node_modules/@sentry/src/session.ts","webpack://meteocool/./node_modules/@sentry/src/hub.ts","webpack://meteocool/./node_modules/@sentry/src/scope.ts","webpack://meteocool/./node_modules/src/captureconsole.ts","webpack://meteocool/./node_modules/src/constants.ts","webpack://meteocool/./node_modules/src/errors.ts","webpack://meteocool/./node_modules/src/hubextensions.ts","webpack://meteocool/./node_modules/src/idletransaction.ts","webpack://meteocool/./node_modules/@sentry/src/tracing.ts","webpack://meteocool/./node_modules/src/browser/backgroundtab.ts","webpack://meteocool/./node_modules/src/browser/web-vitals/lib/bindReporter.ts","webpack://meteocool/./node_modules/src/browser/web-vitals/lib/initMetric.ts","webpack://meteocool/./node_modules/src/browser/web-vitals/lib/generateUniqueID.ts","webpack://meteocool/./node_modules/src/browser/web-vitals/lib/observe.ts","webpack://meteocool/./node_modules/src/browser/web-vitals/lib/onHidden.ts","webpack://meteocool/./node_modules/src/browser/web-vitals/lib/getVisibilityWatcher.ts","webpack://meteocool/./node_modules/src/browser/web-vitals/getLCP.ts","webpack://meteocool/./node_modules/src/browser/metrics.ts","webpack://meteocool/./node_modules/src/browser/web-vitals/getCLS.ts","webpack://meteocool/./node_modules/src/browser/web-vitals/getFID.ts","webpack://meteocool/./node_modules/src/browser/request.ts","webpack://meteocool/./node_modules/src/browser/router.ts","webpack://meteocool/./node_modules/src/browser/browsertracing.ts","webpack://meteocool/./node_modules/src/index.ts","webpack://meteocool/./node_modules/src/span.ts","webpack://meteocool/./node_modules/src/transaction.ts","webpack://meteocool/./node_modules/src/utils.ts","webpack://meteocool/./node_modules/@sentry/src/severity.ts","webpack://meteocool/./node_modules/@sentry/src/browser.ts","webpack://meteocool/./node_modules/@sentry/src/global.ts","webpack://meteocool/./node_modules/@sentry/src/instrument.ts","webpack://meteocool/./node_modules/@sentry/src/is.ts","webpack://meteocool/./node_modules/@sentry/src/logger.ts","webpack://meteocool/./node_modules/@sentry/src/misc.ts","webpack://meteocool/./node_modules/@sentry/src/node.ts","webpack://meteocool/./node_modules/@sentry/src/env.ts","webpack://meteocool/./node_modules/@sentry/src/object.ts","webpack://meteocool/./node_modules/@sentry/src/enums.ts","webpack://meteocool/./node_modules/@sentry/src/stacktrace.ts","webpack://meteocool/./node_modules/@sentry/src/string.ts","webpack://meteocool/./node_modules/@sentry/src/supports.ts","webpack://meteocool/./node_modules/@sentry/src/syncpromise.ts","webpack://meteocool/./node_modules/@sentry/src/time.ts","webpack://meteocool/./node_modules/chart.js/dist/chart.esm.js","webpack://meteocool/./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack://meteocool/./node_modules/chartjs-chart-error-bars/src/controllers/utils.ts","webpack://meteocool/./node_modules/chartjs-chart-error-bars/src/elements/render.ts","webpack://meteocool/./node_modules/chartjs-chart-error-bars/src/elements/BarWithErrorBar.ts","webpack://meteocool/./node_modules/chartjs-chart-error-bars/src/elements/PointWithErrorBar.ts","webpack://meteocool/./node_modules/chartjs-chart-error-bars/src/elements/ArcWithErrorBar.ts","webpack://meteocool/./node_modules/chartjs-chart-error-bars/src/controllers/tooltip.ts","webpack://meteocool/./node_modules/chartjs-chart-error-bars/src/animate.ts","webpack://meteocool/./node_modules/chartjs-chart-error-bars/src/controllers/base.ts","webpack://meteocool/./node_modules/chartjs-chart-error-bars/src/controllers/patchController.ts","webpack://meteocool/./node_modules/chartjs-chart-error-bars/src/controllers/BarWithErrorBarsController.ts","webpack://meteocool/./node_modules/chartjs-chart-error-bars/src/controllers/LineWithErrorBarsController.ts","webpack://meteocool/./node_modules/chartjs-chart-error-bars/src/controllers/ScatterWithErrorBarsController.ts","webpack://meteocool/./node_modules/chartjs-chart-error-bars/src/controllers/PolarAreaWithErrorBarsController.ts","webpack://meteocool/./node_modules/chartjs-chart-error-bars/src/index.umd.ts","webpack://meteocool/./node_modules/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.esm.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://meteocool/./node_modules/date-fns/esm/isDate/index.js","webpack://meteocool/./node_modules/date-fns/esm/isValid/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://meteocool/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://meteocool/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://meteocool/./node_modules/date-fns/esm/format/index.js","webpack://meteocool/./node_modules/date-fns/esm/compareAsc/index.js","webpack://meteocool/./node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack://meteocool/./node_modules/date-fns/esm/endOfDay/index.js","webpack://meteocool/./node_modules/date-fns/esm/endOfMonth/index.js","webpack://meteocool/./node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack://meteocool/./node_modules/date-fns/esm/differenceInMonths/index.js","webpack://meteocool/./node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/roundingMethods/index.js","webpack://meteocool/./node_modules/date-fns/esm/differenceInSeconds/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/cloneObject/index.js","webpack://meteocool/./node_modules/date-fns/esm/_lib/assign/index.js","webpack://meteocool/./node_modules/date-fns/esm/formatDistance/index.js","webpack://meteocool/./node_modules/date-fns/esm/formatDistanceToNow/index.js","webpack://meteocool/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://meteocool/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://meteocool/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://meteocool/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://meteocool/./node_modules/date-fns/esm/locale/de/_lib/formatDistance/index.js","webpack://meteocool/./node_modules/date-fns/esm/locale/de/_lib/formatLong/index.js","webpack://meteocool/./node_modules/date-fns/esm/locale/de/_lib/formatRelative/index.js","webpack://meteocool/./node_modules/date-fns/esm/locale/de/_lib/localize/index.js","webpack://meteocool/./node_modules/date-fns/esm/locale/de/index.js","webpack://meteocool/./node_modules/date-fns/esm/locale/de/_lib/match/index.js","webpack://meteocool/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://meteocool/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://meteocool/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://meteocool/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://meteocool/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://meteocool/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://meteocool/./node_modules/date-fns/esm/toDate/index.js","webpack://meteocool/./node_modules/deepmerge/dist/cjs.js","webpack://meteocool/./node_modules/ieee754/index.js","webpack://meteocool/./node_modules/javascript-state-machine/lib/state-machine.js","webpack://meteocool/./node_modules/nanobar/nanobar.js","webpack://meteocool/./node_modules/pbf/index.js","webpack://meteocool/./node_modules/rbush/rbush.min.js","webpack://meteocool/./node_modules/intl-messageformat/node_modules/tslib/tslib.es6.js","webpack://meteocool/./node_modules/@formatjs/icu-messageformat-parser/node_modules/tslib/tslib.es6.js","webpack://meteocool/./node_modules/@formatjs/icu-messageformat-parser/lib/error.js","webpack://meteocool/./node_modules/@formatjs/icu-messageformat-parser/lib/types.js","webpack://meteocool/./node_modules/@formatjs/icu-messageformat-parser/lib/regex.generated.js","webpack://meteocool/./node_modules/@formatjs/icu-skeleton-parser/lib/date-time.js","webpack://meteocool/./node_modules/@formatjs/icu-skeleton-parser/node_modules/tslib/tslib.es6.js","webpack://meteocool/./node_modules/@formatjs/icu-skeleton-parser/lib/regex.generated.js","webpack://meteocool/./node_modules/@formatjs/icu-messageformat-parser/lib/parser.js","webpack://meteocool/./node_modules/@formatjs/icu-skeleton-parser/lib/number.js","webpack://meteocool/./node_modules/@formatjs/icu-messageformat-parser/lib/index.js","webpack://meteocool/./node_modules/@formatjs/fast-memoize/lib/index.js","webpack://meteocool/./node_modules/intl-messageformat/lib/src/error.js","webpack://meteocool/./node_modules/intl-messageformat/lib/src/formatters.js","webpack://meteocool/./node_modules/intl-messageformat/lib/src/core.js","webpack://meteocool/./node_modules/intl-messageformat/lib/index.js","webpack://meteocool/./node_modules/svelte-i18n/dist/runtime.esm.js","webpack://meteocool/./node_modules/tslib/tslib.es6.js","webpack://meteocool/./node_modules/fa-svelte/src/Icon.svelte","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.5D6J5A4S.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.BMRAUHVW.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.AUTNDGPL.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.DVMX54UT.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.NVGUFQGY.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.PCLPGKVT.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.POBXNCHG.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.QXBOLCLQ.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.SA3KMFF3.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.SUD4FHJ4.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.SXOXLYUK.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.T6M3ZU4B.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.TKRDPH6K.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.U2XCTTGK.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.VSJN236Y.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.W2OJMTVT.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.YALGRZIW.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.H5KN65BJ.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.VWVPKVRX.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.WBP2A37O.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.K6LMKFET.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.5LDML7H2.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.P2UCGNSV.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.7B2OHDEZ.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.LDX6FEXO.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.GQSSQUA6.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.TMDRFQNJ.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.VTPVAM7N.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.AF62ZLUK.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.7GTYP37T.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.TMPRVZRP.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.NTHT6BDS.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.5Z7K7S4R.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.6USUGDGG.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.BH4RIFNS.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.DJVWU3G3.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.2UTMENXG.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.UCHSUGLU.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.EKCE4CN6.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.G56F4LFW.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.EGCU4NSR.js","webpack://meteocool/./node_modules/@shoelace-style/shoelace/dist/chunks/chunk.JHFBW6TQ.js","webpack://meteocool/./node_modules/idb/build/wrap-idb-value.js","webpack://meteocool/./node_modules/idb/build/index.js","webpack://meteocool/./node_modules/ol/src/AssertionError.js","webpack://meteocool/./node_modules/ol/src/Collection.js","webpack://meteocool/./node_modules/ol/src/CollectionEventType.js","webpack://meteocool/./node_modules/ol/src/Disposable.js","webpack://meteocool/./node_modules/ol/src/Feature.js","webpack://meteocool/./node_modules/ol/src/ImageBase.js","webpack://meteocool/./node_modules/ol/src/Image.js","webpack://meteocool/./node_modules/ol/src/ImageState.js","webpack://meteocool/./node_modules/ol/src/ImageTile.js","webpack://meteocool/./node_modules/ol/src/renderer/Map.js","webpack://meteocool/./node_modules/ol/src/renderer/Composite.js","webpack://meteocool/./node_modules/ol/src/MapEvent.js","webpack://meteocool/./node_modules/ol/src/MapBrowserEvent.js","webpack://meteocool/./node_modules/ol/src/MapBrowserEventType.js","webpack://meteocool/./node_modules/ol/src/pointer/EventType.js","webpack://meteocool/./node_modules/ol/src/MapBrowserEventHandler.js","webpack://meteocool/./node_modules/ol/src/MapProperty.js","webpack://meteocool/./node_modules/ol/src/structs/PriorityQueue.js","webpack://meteocool/./node_modules/ol/src/TileQueue.js","webpack://meteocool/./node_modules/ol/src/PluggableMap.js","webpack://meteocool/./node_modules/ol/src/interaction/Property.js","webpack://meteocool/./node_modules/ol/src/interaction/Interaction.js","webpack://meteocool/./node_modules/ol/src/interaction/DoubleClickZoom.js","webpack://meteocool/./node_modules/ol/src/interaction/Pointer.js","webpack://meteocool/./node_modules/ol/src/events/condition.js","webpack://meteocool/./node_modules/ol/src/interaction/DragPan.js","webpack://meteocool/./node_modules/ol/src/interaction/DragRotate.js","webpack://meteocool/./node_modules/ol/src/render/Box.js","webpack://meteocool/./node_modules/ol/src/interaction/DragBox.js","webpack://meteocool/./node_modules/ol/src/interaction/DragZoom.js","webpack://meteocool/./node_modules/ol/src/interaction/KeyboardPan.js","webpack://meteocool/./node_modules/ol/src/events/KeyCode.js","webpack://meteocool/./node_modules/ol/src/interaction/KeyboardZoom.js","webpack://meteocool/./node_modules/ol/src/Kinetic.js","webpack://meteocool/./node_modules/ol/src/interaction/MouseWheelZoom.js","webpack://meteocool/./node_modules/ol/src/interaction/PinchRotate.js","webpack://meteocool/./node_modules/ol/src/interaction/PinchZoom.js","webpack://meteocool/./node_modules/ol/src/Map.js","webpack://meteocool/./node_modules/ol/src/interaction.js","webpack://meteocool/./node_modules/ol/src/MapEventType.js","webpack://meteocool/./node_modules/ol/src/Object.js","webpack://meteocool/./node_modules/ol/src/ObjectEventType.js","webpack://meteocool/./node_modules/ol/src/Observable.js","webpack://meteocool/./node_modules/ol/src/Tile.js","webpack://meteocool/./node_modules/ol/src/TileCache.js","webpack://meteocool/./node_modules/ol/src/TileRange.js","webpack://meteocool/./node_modules/ol/src/TileState.js","webpack://meteocool/./node_modules/ol/src/ViewProperty.js","webpack://meteocool/./node_modules/ol/src/centerconstraint.js","webpack://meteocool/./node_modules/ol/src/resolutionconstraint.js","webpack://meteocool/./node_modules/ol/src/View.js","webpack://meteocool/./node_modules/ol/src/ViewHint.js","webpack://meteocool/./node_modules/ol/src/array.js","webpack://meteocool/./node_modules/ol/src/asserts.js","webpack://meteocool/./node_modules/ol/src/color.js","webpack://meteocool/./node_modules/ol/src/colorlike.js","webpack://meteocool/./node_modules/ol/src/control/Rotate.js","webpack://meteocool/./node_modules/ol/src/control/Zoom.js","webpack://meteocool/./node_modules/ol/src/control.js","webpack://meteocool/./node_modules/ol/src/control/Attribution.js","webpack://meteocool/./node_modules/ol/src/control/Control.js","webpack://meteocool/./node_modules/ol/src/coordinate.js","webpack://meteocool/./node_modules/ol/src/css.js","webpack://meteocool/./node_modules/ol/src/dom.js","webpack://meteocool/./node_modules/ol/src/easing.js","webpack://meteocool/./node_modules/ol/src/events.js","webpack://meteocool/./node_modules/ol/src/events/Event.js","webpack://meteocool/./node_modules/ol/src/events/EventType.js","webpack://meteocool/./node_modules/ol/src/events/Target.js","webpack://meteocool/./node_modules/ol/src/extent.js","webpack://meteocool/./node_modules/ol/src/extent/Corner.js","webpack://meteocool/./node_modules/ol/src/extent/Relationship.js","webpack://meteocool/./node_modules/ol/src/featureloader.js","webpack://meteocool/./node_modules/ol/src/format/FormatType.js","webpack://meteocool/./node_modules/ol/src/format/Feature.js","webpack://meteocool/./node_modules/ol/src/geom/flat/interpolate.js","webpack://meteocool/./node_modules/ol/src/geom/LineString.js","webpack://meteocool/./node_modules/ol/src/geom/MultiLineString.js","webpack://meteocool/./node_modules/ol/src/geom/MultiPoint.js","webpack://meteocool/./node_modules/ol/src/geom/flat/center.js","webpack://meteocool/./node_modules/ol/src/geom/MultiPolygon.js","webpack://meteocool/./node_modules/ol/src/render/Feature.js","webpack://meteocool/./node_modules/ol/src/format/MVT.js","webpack://meteocool/./node_modules/ol/src/functions.js","webpack://meteocool/./node_modules/ol/src/geom/GeometryLayout.js","webpack://meteocool/./node_modules/ol/src/geom/GeometryType.js","webpack://meteocool/./node_modules/ol/src/geom/LinearRing.js","webpack://meteocool/./node_modules/ol/src/geom/Point.js","webpack://meteocool/./node_modules/ol/src/geom/Polygon.js","webpack://meteocool/./node_modules/ol/src/geom/Geometry.js","webpack://meteocool/./node_modules/ol/src/geom/SimpleGeometry.js","webpack://meteocool/./node_modules/ol/src/geom/flat/area.js","webpack://meteocool/./node_modules/ol/src/geom/flat/closest.js","webpack://meteocool/./node_modules/ol/src/geom/flat/contains.js","webpack://meteocool/./node_modules/ol/src/geom/flat/deflate.js","webpack://meteocool/./node_modules/ol/src/geom/flat/inflate.js","webpack://meteocool/./node_modules/ol/src/geom/flat/interiorpoint.js","webpack://meteocool/./node_modules/ol/src/geom/flat/intersectsextent.js","webpack://meteocool/./node_modules/ol/src/geom/flat/length.js","webpack://meteocool/./node_modules/ol/src/geom/flat/reverse.js","webpack://meteocool/./node_modules/ol/src/geom/flat/orient.js","webpack://meteocool/./node_modules/ol/src/geom/flat/segments.js","webpack://meteocool/./node_modules/ol/src/geom/flat/simplify.js","webpack://meteocool/./node_modules/ol/src/geom/flat/transform.js","webpack://meteocool/./node_modules/ol/src/has.js","webpack://meteocool/./node_modules/ol/src/layer/Base.js","webpack://meteocool/./node_modules/ol/src/layer/BaseTile.js","webpack://meteocool/./node_modules/ol/src/layer/BaseVector.js","webpack://meteocool/./node_modules/ol/src/layer/Group.js","webpack://meteocool/./node_modules/ol/src/layer/Layer.js","webpack://meteocool/./node_modules/ol/src/layer/Property.js","webpack://meteocool/./node_modules/ol/src/layer/Tile.js","webpack://meteocool/./node_modules/ol/src/layer/TileProperty.js","webpack://meteocool/./node_modules/ol/src/renderer/canvas/VectorLayer.js","webpack://meteocool/./node_modules/ol/src/layer/Vector.js","webpack://meteocool/./node_modules/ol/src/layer/VectorTileRenderType.js","webpack://meteocool/./node_modules/ol/src/renderer/canvas/VectorTileLayer.js","webpack://meteocool/./node_modules/ol/src/layer/VectorTile.js","webpack://meteocool/./node_modules/ol/src/DataTile.js","webpack://meteocool/./node_modules/ol/src/webgl.js","webpack://meteocool/./node_modules/ol/src/webgl/Buffer.js","webpack://meteocool/./node_modules/ol/src/webgl/TileTexture.js","webpack://meteocool/./node_modules/ol/src/webgl/ContextEventType.js","webpack://meteocool/./node_modules/ol/src/webgl/PostProcessingPass.js","webpack://meteocool/./node_modules/ol/src/vec/mat4.js","webpack://meteocool/./node_modules/ol/src/webgl/Helper.js","webpack://meteocool/./node_modules/ol/src/renderer/webgl/Layer.js","webpack://meteocool/./node_modules/ol/src/renderer/webgl/TileLayer.js","webpack://meteocool/./node_modules/ol/src/webgl/PaletteTexture.js","webpack://meteocool/./node_modules/ol/src/style/expressions.js","webpack://meteocool/./node_modules/ol/src/layer/WebGLTile.js","webpack://meteocool/./node_modules/ol/src/math.js","webpack://meteocool/./node_modules/ol/src/obj.js","webpack://meteocool/./node_modules/ol/src/proj/epsg3857.js","webpack://meteocool/./node_modules/ol/src/proj/epsg4326.js","webpack://meteocool/./node_modules/ol/src/proj/projections.js","webpack://meteocool/./node_modules/ol/src/proj/transforms.js","webpack://meteocool/./node_modules/ol/src/proj.js","webpack://meteocool/./node_modules/ol/src/proj/Projection.js","webpack://meteocool/./node_modules/ol/src/proj/Units.js","webpack://meteocool/./node_modules/ol/src/render/Event.js","webpack://meteocool/./node_modules/ol/src/render/EventType.js","webpack://meteocool/./node_modules/ol/src/render/VectorContext.js","webpack://meteocool/./node_modules/ol/src/render/canvas.js","webpack://meteocool/./node_modules/ol/src/render/canvas/Builder.js","webpack://meteocool/./node_modules/ol/src/render/canvas/ImageBuilder.js","webpack://meteocool/./node_modules/ol/src/render/canvas/LineStringBuilder.js","webpack://meteocool/./node_modules/ol/src/render/canvas/PolygonBuilder.js","webpack://meteocool/./node_modules/ol/src/render/canvas/BuilderGroup.js","webpack://meteocool/./node_modules/ol/src/render/canvas/BuilderType.js","webpack://meteocool/./node_modules/ol/src/geom/flat/textpath.js","webpack://meteocool/./node_modules/ol/src/render/canvas/Executor.js","webpack://meteocool/./node_modules/ol/src/render/canvas/ExecutorGroup.js","webpack://meteocool/./node_modules/ol/src/render/canvas/Instruction.js","webpack://meteocool/./node_modules/ol/src/geom/flat/straightchunk.js","webpack://meteocool/./node_modules/ol/src/render/canvas/TextBuilder.js","webpack://meteocool/./node_modules/ol/src/render/canvas/Immediate.js","webpack://meteocool/./node_modules/ol/src/render/canvas/hitdetect.js","webpack://meteocool/./node_modules/ol/src/renderer/Layer.js","webpack://meteocool/./node_modules/ol/src/renderer/canvas/Layer.js","webpack://meteocool/./node_modules/ol/src/renderer/canvas/TileLayer.js","webpack://meteocool/./node_modules/ol/src/renderer/canvas/common.js","webpack://meteocool/./node_modules/ol/src/renderer/vector.js","webpack://meteocool/./node_modules/ol/src/reproj.js","webpack://meteocool/./node_modules/ol/src/reproj/Triangulation.js","webpack://meteocool/./node_modules/ol/src/reproj/Tile.js","webpack://meteocool/./node_modules/ol/src/reproj/common.js","webpack://meteocool/./node_modules/ol/src/rotationconstraint.js","webpack://meteocool/./node_modules/ol/src/size.js","webpack://meteocool/./node_modules/ol/src/source/Cluster.js","webpack://meteocool/./node_modules/ol/src/source/OSM.js","webpack://meteocool/./node_modules/ol/src/source/Source.js","webpack://meteocool/./node_modules/ol/src/source/State.js","webpack://meteocool/./node_modules/ol/src/source/TileImage.js","webpack://meteocool/./node_modules/ol/src/source/common.js","webpack://meteocool/./node_modules/ol/src/uri.js","webpack://meteocool/./node_modules/ol/src/source/TileWMS.js","webpack://meteocool/./node_modules/ol/src/source/WMSServerType.js","webpack://meteocool/./node_modules/ol/src/string.js","webpack://meteocool/./node_modules/ol/src/source/Tile.js","webpack://meteocool/./node_modules/ol/src/tileurlfunction.js","webpack://meteocool/./node_modules/ol/src/source/UrlTile.js","webpack://meteocool/./node_modules/ol/src/source/TileEventType.js","webpack://meteocool/./node_modules/ol/src/structs/RBush.js","webpack://meteocool/./node_modules/ol/src/source/VectorEventType.js","webpack://meteocool/./node_modules/ol/src/loadingstrategy.js","webpack://meteocool/./node_modules/ol/src/source/Vector.js","webpack://meteocool/./node_modules/ol/src/VectorTile.js","webpack://meteocool/./node_modules/ol/src/VectorRenderTile.js","webpack://meteocool/./node_modules/ol/src/source/VectorTile.js","webpack://meteocool/./node_modules/ol/src/source/XYZ.js","webpack://meteocool/./node_modules/ol/src/sphere.js","webpack://meteocool/./node_modules/ol/src/structs/LRUCache.js","webpack://meteocool/./node_modules/ol/src/style/Circle.js","webpack://meteocool/./node_modules/ol/src/style/Fill.js","webpack://meteocool/./node_modules/ol/src/style/IconOrigin.js","webpack://meteocool/./node_modules/ol/src/style/IconImage.js","webpack://meteocool/./node_modules/ol/src/style/Icon.js","webpack://meteocool/./node_modules/ol/src/style/IconAnchorUnits.js","webpack://meteocool/./node_modules/ol/src/style/IconImageCache.js","webpack://meteocool/./node_modules/ol/src/style/Image.js","webpack://meteocool/./node_modules/ol/src/style/RegularShape.js","webpack://meteocool/./node_modules/ol/src/style/Stroke.js","webpack://meteocool/./node_modules/ol/src/style/Style.js","webpack://meteocool/./node_modules/ol/src/style/Text.js","webpack://meteocool/./node_modules/ol/src/style/TextPlacement.js","webpack://meteocool/./node_modules/ol/src/tilecoord.js","webpack://meteocool/./node_modules/ol/src/tilegrid/TileGrid.js","webpack://meteocool/./node_modules/ol/src/tilegrid.js","webpack://meteocool/./node_modules/ol/src/tilegrid/common.js","webpack://meteocool/./node_modules/ol/src/transform.js","webpack://meteocool/./node_modules/ol/src/util.js","webpack://meteocool/./node_modules/engine.io-parser/build/esm/commons.js","webpack://meteocool/./node_modules/engine.io-parser/build/esm/encodePacket.browser.js","webpack://meteocool/./node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","webpack://meteocool/./node_modules/engine.io-parser/build/esm/decodePacket.browser.js","webpack://meteocool/./node_modules/engine.io-parser/build/esm/index.js","webpack://meteocool/./node_modules/@socket.io/component-emitter/index.mjs","webpack://meteocool/./node_modules/engine.io-client/build/esm/globalThis.browser.js","webpack://meteocool/./node_modules/engine.io-client/build/esm/util.js","webpack://meteocool/./node_modules/engine.io-client/build/esm/transport.js","webpack://meteocool/./node_modules/engine.io-client/build/esm/contrib/yeast.js","webpack://meteocool/./node_modules/engine.io-client/build/esm/contrib/parseqs.js","webpack://meteocool/./node_modules/engine.io-client/build/esm/contrib/has-cors.js","webpack://meteocool/./node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js","webpack://meteocool/./node_modules/engine.io-client/build/esm/transports/polling.js","webpack://meteocool/./node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js","webpack://meteocool/./node_modules/engine.io-client/build/esm/transports/websocket.js","webpack://meteocool/./node_modules/engine.io-client/build/esm/transports/index.js","webpack://meteocool/./node_modules/engine.io-client/build/esm/contrib/parseuri.js","webpack://meteocool/./node_modules/engine.io-client/build/esm/socket.js","webpack://meteocool/./node_modules/engine.io-client/build/esm/index.js","webpack://meteocool/./node_modules/socket.io-parser/build/esm/is-binary.js","webpack://meteocool/./node_modules/socket.io-parser/build/esm/binary.js","webpack://meteocool/./node_modules/socket.io-parser/build/esm/index.js","webpack://meteocool/./node_modules/socket.io-client/build/esm/on.js","webpack://meteocool/./node_modules/socket.io-client/build/esm/socket.js","webpack://meteocool/./node_modules/socket.io-client/build/esm/contrib/backo2.js","webpack://meteocool/./node_modules/socket.io-client/build/esm/manager.js","webpack://meteocool/./node_modules/socket.io-client/build/esm/index.js","webpack://meteocool/./node_modules/socket.io-client/build/esm/url.js","webpack://meteocool/./node_modules/svelte-css-vars/dist/index.mjs","webpack://meteocool/./node_modules/svelte/internal/index.mjs","webpack://meteocool/./node_modules/svelte/store/index.mjs","webpack://meteocool/./node_modules/svelte/easing/index.mjs","webpack://meteocool/./node_modules/svelte/transition/index.mjs","webpack://meteocool/./node_modules/workbox-window/build/workbox-window.prod.es5.mjs"],"sourcesContent":["'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fab';\nvar iconName = 'github';\nvar width = 496;\nvar height = 512;\nvar aliases = [];\nvar unicode = 'f09b';\nvar svgPathData = 'M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3 .3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5 .3-6.2 2.3zm44.2-1.7c-2.9 .7-4.9 2.6-4.6 4.9 .3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3 .7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3 .3 2.9 2.3 3.9 1.6 1 3.6 .7 4.3-.7 .7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3 .7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3 .7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faGithub = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar source = require('./faAnglesDown');\nexports.definition = {\n prefix: source.prefix,\n iconName: source.iconName,\n icon: [\n source.width,\n source.height,\n source.aliases,\n source.unicode,\n source.svgPathData\n ]};\n\nexports.faAngleDoubleDown = exports.definition;\nexports.prefix = source.prefix;\nexports.iconName = source.iconName;\nexports.width = source.width;\nexports.height = source.height;\nexports.ligatures = source.aliases;\nexports.unicode = source.unicode;\nexports.svgPathData = source.svgPathData;\nexports.aliases = source.aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar source = require('./faAnglesUp');\nexports.definition = {\n prefix: source.prefix,\n iconName: source.iconName,\n icon: [\n source.width,\n source.height,\n source.aliases,\n source.unicode,\n source.svgPathData\n ]};\n\nexports.faAngleDoubleUp = exports.definition;\nexports.prefix = source.prefix;\nexports.iconName = source.iconName;\nexports.width = source.width;\nexports.height = source.height;\nexports.ligatures = source.aliases;\nexports.unicode = source.unicode;\nexports.svgPathData = source.svgPathData;\nexports.aliases = source.aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'angles-down';\nvar width = 384;\nvar height = 512;\nvar aliases = [\"angle-double-down\"];\nvar unicode = 'f103';\nvar svgPathData = 'M169.4 278.6C175.6 284.9 183.8 288 192 288s16.38-3.125 22.62-9.375l160-160c12.5-12.5 12.5-32.75 0-45.25s-32.75-12.5-45.25 0L192 210.8L54.63 73.38c-12.5-12.5-32.75-12.5-45.25 0s-12.5 32.75 0 45.25L169.4 278.6zM329.4 265.4L192 402.8L54.63 265.4c-12.5-12.5-32.75-12.5-45.25 0s-12.5 32.75 0 45.25l160 160C175.6 476.9 183.8 480 192 480s16.38-3.125 22.62-9.375l160-160c12.5-12.5 12.5-32.75 0-45.25S341.9 252.9 329.4 265.4z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faAnglesDown = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'angles-up';\nvar width = 384;\nvar height = 512;\nvar aliases = [\"angle-double-up\"];\nvar unicode = 'f102';\nvar svgPathData = 'M54.63 246.6L192 109.3l137.4 137.4C335.6 252.9 343.8 256 352 256s16.38-3.125 22.62-9.375c12.5-12.5 12.5-32.75 0-45.25l-160-160c-12.5-12.5-32.75-12.5-45.25 0l-160 160c-12.5 12.5-12.5 32.75 0 45.25S42.13 259.1 54.63 246.6zM214.6 233.4c-12.5-12.5-32.75-12.5-45.25 0l-160 160c-12.5 12.5-12.5 32.75 0 45.25s32.75 12.5 45.25 0L192 301.3l137.4 137.4C335.6 444.9 343.8 448 352 448s16.38-3.125 22.62-9.375c12.5-12.5 12.5-32.75 0-45.25L214.6 233.4z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faAnglesUp = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'circle';\nvar width = 512;\nvar height = 512;\nvar aliases = [128308,128309,128992,128993,128994,128995,128996,9898,9899,11044,61708,61915,9679];\nvar unicode = 'f111';\nvar svgPathData = 'M512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faCircle = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'clock-rotate-left';\nvar width = 512;\nvar height = 512;\nvar aliases = [\"history\"];\nvar unicode = 'f1da';\nvar svgPathData = 'M256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C201.7 512 151.2 495 109.7 466.1C95.2 455.1 91.64 436 101.8 421.5C111.9 407 131.8 403.5 146.3 413.6C177.4 435.3 215.2 448 256 448C362 448 448 362 448 256C448 149.1 362 64 256 64C202.1 64 155 85.46 120.2 120.2L151 151C166.1 166.1 155.4 192 134.1 192H24C10.75 192 0 181.3 0 168V57.94C0 36.56 25.85 25.85 40.97 40.97L74.98 74.98C121.3 28.69 185.3 0 255.1 0L256 0zM256 128C269.3 128 280 138.7 280 152V246.1L344.1 311C354.3 320.4 354.3 335.6 344.1 344.1C335.6 354.3 320.4 354.3 311 344.1L239 272.1C234.5 268.5 232 262.4 232 256V152C232 138.7 242.7 128 256 128V128z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faClockRotateLeft = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar source = require('./faClockRotateLeft');\nexports.definition = {\n prefix: source.prefix,\n iconName: source.iconName,\n icon: [\n source.width,\n source.height,\n source.aliases,\n source.unicode,\n source.svgPathData\n ]};\n\nexports.faHistory = exports.definition;\nexports.prefix = source.prefix;\nexports.iconName = source.iconName;\nexports.width = source.width;\nexports.height = source.height;\nexports.ligatures = source.aliases;\nexports.unicode = source.unicode;\nexports.svgPathData = source.svgPathData;\nexports.aliases = source.aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'layer-group';\nvar width = 512;\nvar height = 512;\nvar aliases = [];\nvar unicode = 'f5fd';\nvar svgPathData = 'M232.5 5.171C247.4-1.718 264.6-1.718 279.5 5.171L498.1 106.2C506.6 110.1 512 118.6 512 127.1C512 137.3 506.6 145.8 498.1 149.8L279.5 250.8C264.6 257.7 247.4 257.7 232.5 250.8L13.93 149.8C5.438 145.8 0 137.3 0 127.1C0 118.6 5.437 110.1 13.93 106.2L232.5 5.171zM498.1 234.2C506.6 238.1 512 246.6 512 255.1C512 265.3 506.6 273.8 498.1 277.8L279.5 378.8C264.6 385.7 247.4 385.7 232.5 378.8L13.93 277.8C5.438 273.8 0 265.3 0 255.1C0 246.6 5.437 238.1 13.93 234.2L67.13 209.6L219.1 279.8C242.5 290.7 269.5 290.7 292.9 279.8L444.9 209.6L498.1 234.2zM292.9 407.8L444.9 337.6L498.1 362.2C506.6 366.1 512 374.6 512 383.1C512 393.3 506.6 401.8 498.1 405.8L279.5 506.8C264.6 513.7 247.4 513.7 232.5 506.8L13.93 405.8C5.438 401.8 0 393.3 0 383.1C0 374.6 5.437 366.1 13.93 362.2L67.13 337.6L219.1 407.8C242.5 418.7 269.5 418.7 292.9 407.8V407.8z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faLayerGroup = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'pause';\nvar width = 320;\nvar height = 512;\nvar aliases = [9208];\nvar unicode = 'f04c';\nvar svgPathData = 'M272 63.1l-32 0c-26.51 0-48 21.49-48 47.1v288c0 26.51 21.49 48 48 48L272 448c26.51 0 48-21.49 48-48v-288C320 85.49 298.5 63.1 272 63.1zM80 63.1l-32 0c-26.51 0-48 21.49-48 48v288C0 426.5 21.49 448 48 448l32 0c26.51 0 48-21.49 48-48v-288C128 85.49 106.5 63.1 80 63.1z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faPause = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'play';\nvar width = 384;\nvar height = 512;\nvar aliases = [9654];\nvar unicode = 'f04b';\nvar svgPathData = 'M361 215C375.3 223.8 384 239.3 384 256C384 272.7 375.3 288.2 361 296.1L73.03 472.1C58.21 482 39.66 482.4 24.52 473.9C9.377 465.4 0 449.4 0 432V80C0 62.64 9.377 46.63 24.52 38.13C39.66 29.64 58.21 29.99 73.03 39.04L361 215z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faPlay = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","'use strict';\nObject.defineProperty(exports, '__esModule', { value: true });\nvar prefix = 'fas';\nvar iconName = 'retweet';\nvar width = 640;\nvar height = 512;\nvar aliases = [];\nvar unicode = 'f079';\nvar svgPathData = 'M614.2 334.8C610.5 325.8 601.7 319.1 592 319.1H544V176C544 131.9 508.1 96 464 96h-128c-17.67 0-32 14.31-32 32s14.33 32 32 32h128C472.8 160 480 167.2 480 176v143.1h-48c-9.703 0-18.45 5.844-22.17 14.82s-1.656 19.29 5.203 26.16l80 80.02C499.7 445.7 505.9 448 512 448s12.28-2.344 16.97-7.031l80-80.02C615.8 354.1 617.9 343.8 614.2 334.8zM304 352h-128C167.2 352 160 344.8 160 336V192h48c9.703 0 18.45-5.844 22.17-14.82s1.656-19.29-5.203-26.16l-80-80.02C140.3 66.34 134.1 64 128 64S115.7 66.34 111 71.03l-80 80.02C24.17 157.9 22.11 168.2 25.83 177.2S38.3 192 48 192H96V336C96 380.1 131.9 416 176 416h128c17.67 0 32-14.31 32-32S321.7 352 304 352z';\n\nexports.definition = {\n prefix: prefix,\n iconName: iconName,\n icon: [\n width,\n height,\n aliases,\n unicode,\n svgPathData\n ]};\n\nexports.faRetweet = exports.definition;\nexports.prefix = prefix;\nexports.iconName = iconName;\nexports.width = width;\nexports.height = height;\nexports.ligatures = aliases;\nexports.unicode = unicode;\nexports.svgPathData = svgPathData;\nexports.aliases = aliases;","/*\n * This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking\n * for users.\n *\n * Debug flags need to be declared in each package individually and must not be imported across package boundaries,\n * because some build tools have trouble tree-shaking imported guards.\n *\n * As a convention, we define debug flags in a `flags.ts` file in the root of a package's `src` folder.\n *\n * Debug flag files will contain \"magic strings\" like `__SENTRY_DEBUG__` that may get replaced with actual values during\n * our, or the user's build process. Take care when introducing new flags - they must not throw if they are not\n * replaced.\n */\n\ndeclare const __SENTRY_DEBUG__: boolean;\n\n/** Flag that is true for debug builds, false otherwise. */\nexport const IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;\n","import { Event, EventProcessor, Hub, Integration, StackFrame } from '@sentry/types';\nimport { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../flags';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\n/** Options for the InboundFilters integration */\nexport interface InboundFiltersOptions {\n allowUrls: Array;\n denyUrls: Array;\n ignoreErrors: Array;\n ignoreInternal: boolean;\n\n /** @deprecated use {@link InboundFiltersOptions.allowUrls} instead. */\n whitelistUrls: Array;\n /** @deprecated use {@link InboundFiltersOptions.denyUrls} instead. */\n blacklistUrls: Array;\n}\n\n/** Inbound filters configurable by the user */\nexport class InboundFilters implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'InboundFilters';\n\n /**\n * @inheritDoc\n */\n public name: string = InboundFilters.id;\n\n public constructor(private readonly _options: Partial = {}) {}\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (processor: EventProcessor) => void, getCurrentHub: () => Hub): void {\n addGlobalEventProcessor((event: Event) => {\n const hub = getCurrentHub();\n if (hub) {\n const self = hub.getIntegration(InboundFilters);\n if (self) {\n const client = hub.getClient();\n const clientOptions = client ? client.getOptions() : {};\n const options = _mergeOptions(self._options, clientOptions);\n return _shouldDropEvent(event, options) ? null : event;\n }\n }\n return event;\n });\n }\n}\n\n/** JSDoc */\nexport function _mergeOptions(\n internalOptions: Partial = {},\n clientOptions: Partial = {},\n): Partial {\n return {\n allowUrls: [\n // eslint-disable-next-line deprecation/deprecation\n ...(internalOptions.whitelistUrls || []),\n ...(internalOptions.allowUrls || []),\n // eslint-disable-next-line deprecation/deprecation\n ...(clientOptions.whitelistUrls || []),\n ...(clientOptions.allowUrls || []),\n ],\n denyUrls: [\n // eslint-disable-next-line deprecation/deprecation\n ...(internalOptions.blacklistUrls || []),\n ...(internalOptions.denyUrls || []),\n // eslint-disable-next-line deprecation/deprecation\n ...(clientOptions.blacklistUrls || []),\n ...(clientOptions.denyUrls || []),\n ],\n ignoreErrors: [\n ...(internalOptions.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...DEFAULT_IGNORE_ERRORS,\n ],\n ignoreInternal: internalOptions.ignoreInternal !== undefined ? internalOptions.ignoreInternal : true,\n };\n}\n\n/** JSDoc */\nexport function _shouldDropEvent(event: Event, options: Partial): boolean {\n if (options.ignoreInternal && _isSentryError(event)) {\n IS_DEBUG_BUILD &&\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (_isIgnoredError(event, options.ignoreErrors)) {\n IS_DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (_isDeniedUrl(event, options.denyUrls)) {\n IS_DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to being matched by \\`denyUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!_isAllowedUrl(event, options.allowUrls)) {\n IS_DEBUG_BUILD &&\n logger.warn(\n `Event dropped due to not being matched by \\`allowUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${_getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n}\n\nfunction _isIgnoredError(event: Event, ignoreErrors?: Array): boolean {\n if (!ignoreErrors || !ignoreErrors.length) {\n return false;\n }\n\n return _getPossibleEventMessages(event).some(message =>\n ignoreErrors.some(pattern => isMatchingPattern(message, pattern)),\n );\n}\n\nfunction _isDeniedUrl(event: Event, denyUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!denyUrls || !denyUrls.length) {\n return false;\n }\n const url = _getEventFilterUrl(event);\n return !url ? false : denyUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _isAllowedUrl(event: Event, allowUrls?: Array): boolean {\n // TODO: Use Glob instead?\n if (!allowUrls || !allowUrls.length) {\n return true;\n }\n const url = _getEventFilterUrl(event);\n return !url ? true : allowUrls.some(pattern => isMatchingPattern(url, pattern));\n}\n\nfunction _getPossibleEventMessages(event: Event): string[] {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n const { type = '', value = '' } = (event.exception.values && event.exception.values[0]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n IS_DEBUG_BUILD && logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n}\n\nfunction _isSentryError(event: Event): boolean {\n try {\n // @ts-ignore can't be a sentry error if undefined\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return event.exception.values[0].type === 'SentryError';\n } catch (e) {\n // ignore\n }\n return false;\n}\n\nfunction _getLastValidUrl(frames: StackFrame[] = []): string | null {\n for (let i = frames.length - 1; i >= 0; i--) {\n const frame = frames[i];\n\n if (frame && frame.filename !== '' && frame.filename !== '[native code]') {\n return frame.filename || null;\n }\n }\n\n return null;\n}\n\nfunction _getEventFilterUrl(event: Event): string | null {\n try {\n if (event.stacktrace) {\n return _getLastValidUrl(event.stacktrace.frames);\n }\n let frames;\n try {\n // @ts-ignore we only care about frames if the whole thing here is defined\n frames = event.exception.values[0].stacktrace.frames;\n } catch (e) {\n // ignore\n }\n return frames ? _getLastValidUrl(frames) : null;\n } catch (oO) {\n IS_DEBUG_BUILD && logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n}\n","import { Integration, WrappedFunction } from '@sentry/types';\nimport { getOriginalFunction } from '@sentry/utils';\n\nlet originalFunctionToString: () => void;\n\n/** Patch toString calls to return proper name for wrapped functions */\nexport class FunctionToString implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'FunctionToString';\n\n /**\n * @inheritDoc\n */\n public name: string = FunctionToString.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function (this: WrappedFunction, ...args: any[]): string {\n const context = getOriginalFunction(this) || this;\n return originalFunctionToString.apply(context, args);\n };\n }\n}\n","export const SDK_VERSION = '6.19.7';\n","export const setPrototypeOf =\n Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties);\n\n/**\n * setPrototypeOf polyfill using __proto__\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction setProtoOf(obj: TTarget, proto: TProto): TTarget & TProto {\n // @ts-ignore __proto__ does not exist on obj\n obj.__proto__ = proto;\n return obj as TTarget & TProto;\n}\n\n/**\n * setPrototypeOf polyfill using mixin\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction mixinProperties(obj: TTarget, proto: TProto): TTarget & TProto {\n for (const prop in proto) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) {\n // @ts-ignore typescript complains about indexing so we remove\n obj[prop] = proto[prop];\n }\n }\n\n return obj as TTarget & TProto;\n}\n","import { setPrototypeOf } from './polyfill';\n\n/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n /** Display name of this error instance. */\n public name: string;\n\n public constructor(public message: string) {\n super(message);\n\n this.name = new.target.prototype.constructor.name;\n setPrototypeOf(this, new.target.prototype);\n }\n}\n","import { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { SentryError } from './error';\nimport { IS_DEBUG_BUILD } from './flags';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n\nfunction isValidProtocol(protocol?: string): protocol is DsnProtocol {\n return protocol === 'http' || protocol === 'https';\n}\n\n/**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\nexport function dsnToString(dsn: DsnComponents, withPassword: boolean = false): string {\n const { host, path, pass, port, projectId, protocol, publicKey } = dsn;\n return (\n `${protocol}://${publicKey}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n}\n\nfunction dsnFromString(str: string): DsnComponents {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n throw new SentryError(`Invalid Sentry Dsn: ${str}`);\n }\n\n const [protocol, publicKey, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() as string;\n }\n\n if (projectId) {\n const projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n\n return dsnFromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, publicKey });\n}\n\nfunction dsnFromComponents(components: DsnComponents): DsnComponents {\n // TODO this is for backwards compatibility, and can be removed in a future version\n if ('user' in components && !('publicKey' in components)) {\n components.publicKey = components.user;\n }\n\n return {\n user: components.publicKey || '',\n protocol: components.protocol,\n publicKey: components.publicKey || '',\n pass: components.pass || '',\n host: components.host,\n port: components.port || '',\n path: components.path || '',\n projectId: components.projectId,\n };\n}\n\nfunction validateDsn(dsn: DsnComponents): boolean | void {\n if (!IS_DEBUG_BUILD) {\n return;\n }\n\n const { port, projectId, protocol } = dsn;\n\n const requiredComponents: ReadonlyArray = ['protocol', 'publicKey', 'host', 'projectId'];\n requiredComponents.forEach(component => {\n if (!dsn[component]) {\n throw new SentryError(`Invalid Sentry Dsn: ${component} missing`);\n }\n });\n\n if (!projectId.match(/^\\d+$/)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid projectId ${projectId}`);\n }\n\n if (!isValidProtocol(protocol)) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid protocol ${protocol}`);\n }\n\n if (port && isNaN(parseInt(port, 10))) {\n throw new SentryError(`Invalid Sentry Dsn: Invalid port ${port}`);\n }\n\n return true;\n}\n\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nexport function makeDsn(from: DsnLike): DsnComponents {\n const components = typeof from === 'string' ? dsnFromString(from) : dsnFromComponents(from);\n\n validateDsn(components);\n\n return components;\n}\n","import { Primitive } from '@sentry/types';\n\nimport { isError, isEvent, isNaN, isSyntheticEvent } from './is';\nimport { memoBuilder, MemoFunc } from './memo';\nimport { convertToPlainObject } from './object';\nimport { getFunctionName } from './stacktrace';\n\ntype Prototype = { constructor: (...args: unknown[]) => unknown };\n// This is a hack to placate TS, relying on the fact that technically, arrays are objects with integer keys. Normally we\n// think of those keys as actual numbers, but `arr['0']` turns out to work just as well as `arr[0]`, and doing it this\n// way lets us use a single type in the places where behave as if we are only dealing with objects, even if some of them\n// might be arrays.\ntype ObjOrArray = { [key: string]: T };\n\n/**\n * Recursively normalizes the given object.\n *\n * - Creates a copy to prevent original input mutation\n * - Skips non-enumerable properties\n * - When stringifying, calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializable values (`undefined`/`NaN`/functions) to serializable format\n * - Translates known global objects/classes to a string representations\n * - Takes care of `Error` object serialization\n * - Optionally limits depth of final output\n * - Optionally limits number of properties/elements included in any single object/array\n *\n * @param input The object to be normalized.\n * @param depth The max depth to which to normalize the object. (Anything deeper stringified whole.)\n * @param maxProperties The max number of elements or properties to be included in any single array or\n * object in the normallized output..\n * @returns A normalized version of the object, or `\"**non-serializable**\"` if any errors are thrown during normalization.\n */\nexport function normalize(input: unknown, depth: number = +Infinity, maxProperties: number = +Infinity): any {\n try {\n // since we're at the outermost level, there is no key\n return visit('', input, depth, maxProperties);\n } catch (err) {\n return { ERROR: `**non-serializable** (${err})` };\n }\n}\n\n/** JSDoc */\nexport function normalizeToSize(\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const normalized = normalize(object, depth);\n\n if (jsonSize(normalized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return normalized as T;\n}\n\n/**\n * Visits a node to perform normalization on it\n *\n * @param key The key corresponding to the given node\n * @param value The node to be visited\n * @param depth Optional number indicating the maximum recursion depth\n * @param maxProperties Optional maximum number of properties/elements included in any single object/array\n * @param memo Optional Memo class handling decycling\n */\nfunction visit(\n key: string,\n value: unknown,\n depth: number = +Infinity,\n maxProperties: number = +Infinity,\n memo: MemoFunc = memoBuilder(),\n): Primitive | ObjOrArray {\n const [memoize, unmemoize] = memo;\n\n // If the value has a `toJSON` method, see if we can bail and let it do the work\n const valueWithToJSON = value as unknown & { toJSON?: () => Primitive | ObjOrArray };\n if (valueWithToJSON && typeof valueWithToJSON.toJSON === 'function') {\n try {\n return valueWithToJSON.toJSON();\n } catch (err) {\n // pass (The built-in `toJSON` failed, but we can still try to do it ourselves)\n }\n }\n\n // Get the simple cases out of the way first\n if (value === null || (['number', 'boolean', 'string'].includes(typeof value) && !isNaN(value))) {\n return value as Primitive;\n }\n\n const stringified = stringifyValue(key, value);\n\n // Anything we could potentially dig into more (objects or arrays) will have come back as `\"[object XXXX]\"`.\n // Everything else will have already been serialized, so if we don't see that pattern, we're done.\n if (!stringified.startsWith('[object ')) {\n return stringified;\n }\n\n // We're also done if we've reached the max depth\n if (depth === 0) {\n // At this point we know `serialized` is a string of the form `\"[object XXXX]\"`. Clean it up so it's just `\"[XXXX]\"`.\n return stringified.replace('object ', '');\n }\n\n // If we've already visited this branch, bail out, as it's circular reference. If not, note that we're seeing it now.\n if (memoize(value)) {\n return '[Circular ~]';\n }\n\n // At this point we know we either have an object or an array, we haven't seen it before, and we're going to recurse\n // because we haven't yet reached the max depth. Create an accumulator to hold the results of visiting each\n // property/entry, and keep track of the number of items we add to it.\n const normalized = (Array.isArray(value) ? [] : {}) as ObjOrArray;\n let numAdded = 0;\n\n // Before we begin, convert`Error` and`Event` instances into plain objects, since some of each of their relevant\n // properties are non-enumerable and otherwise would get missed.\n const visitable = (isError(value) || isEvent(value) ? convertToPlainObject(value) : value) as ObjOrArray;\n\n for (const visitKey in visitable) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(visitable, visitKey)) {\n continue;\n }\n\n if (numAdded >= maxProperties) {\n normalized[visitKey] = '[MaxProperties ~]';\n break;\n }\n\n // Recursively visit all the child nodes\n const visitValue = visitable[visitKey];\n normalized[visitKey] = visit(visitKey, visitValue, depth - 1, maxProperties, memo);\n\n numAdded += 1;\n }\n\n // Once we've visited all the branches, remove the parent from memo storage\n unmemoize(value);\n\n // Return accumulated values\n return normalized;\n}\n\n// TODO remove this in v7 (this means the method will no longer be exported, under any name)\nexport { visit as walk };\n\n/**\n * Stringify the given value. Handles various known special values and types.\n *\n * Not meant to be used on simple primitives which already have a string representation, as it will, for example, turn\n * the number 1231 into \"[Object Number]\", nor on `null`, as it will throw.\n *\n * @param value The value to stringify\n * @returns A stringified representation of the given value\n */\nfunction stringifyValue(\n key: unknown,\n // this type is a tiny bit of a cheat, since this function does handle NaN (which is technically a number), but for\n // our internal use, it'll do\n value: Exclude,\n): string {\n try {\n if (key === 'domain' && value && typeof value === 'object' && (value as { _events: unknown })._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n // It's safe to use `global`, `window`, and `document` here in this manner, as we are asserting using `typeof` first\n // which won't throw if they are not present.\n\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n\n // eslint-disable-next-line no-restricted-globals\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n // this catches `undefined` (but not `null`, which is a primitive and can be serialized on its own)\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n if (typeof value === 'symbol') {\n return `[${String(value)}]`;\n }\n\n // stringified BigInts are indistinguishable from regular numbers, so we need to label them to avoid confusion\n if (typeof value === 'bigint') {\n return `[BigInt: ${String(value)}]`;\n }\n\n // Now that we've knocked out all the special cases and the primitives, all we have left are objects. Simply casting\n // them to strings means that instances of classes which haven't defined their `toStringTag` will just come out as\n // `\"[object Object]\"`. If we instead look at the constructor's name (which is the same as the name of the class),\n // we can make sure that only plain objects come out that way.\n return `[object ${(Object.getPrototypeOf(value) as Prototype).constructor.name}]`;\n } catch (err) {\n return `**non-serializable** (${err})`;\n }\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport type MemoFunc = [\n // memoize\n (obj: any) => boolean,\n // unmemoize\n (obj: any) => void,\n];\n\n/**\n * Helper to decycle json objects\n */\nexport function memoBuilder(): MemoFunc {\n const hasWeakSet = typeof WeakSet === 'function';\n const inner: any = hasWeakSet ? new WeakSet() : [];\n function memoize(obj: any): boolean {\n if (hasWeakSet) {\n if (inner.has(obj)) {\n return true;\n }\n inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < inner.length; i++) {\n const value = inner[i];\n if (value === obj) {\n return true;\n }\n }\n inner.push(obj);\n return false;\n }\n\n function unmemoize(obj: any): void {\n if (hasWeakSet) {\n inner.delete(obj);\n } else {\n for (let i = 0; i < inner.length; i++) {\n if (inner[i] === obj) {\n inner.splice(i, 1);\n break;\n }\n }\n }\n }\n return [memoize, unmemoize];\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { Integration, Options } from '@sentry/types';\nimport { addNonEnumerableProperty, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport type IntegrationIndex = {\n [key: string]: Integration;\n} & { initialized?: boolean };\n\n/**\n * @private\n */\nfunction filterDuplicates(integrations: Integration[]): Integration[] {\n return integrations.reduce((acc, integrations) => {\n if (acc.every(accIntegration => integrations.name !== accIntegration.name)) {\n acc.push(integrations);\n }\n return acc;\n }, [] as Integration[]);\n}\n\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options: Options): Integration[] {\n const defaultIntegrations = (options.defaultIntegrations && [...options.defaultIntegrations]) || [];\n const userIntegrations = options.integrations;\n\n let integrations: Integration[] = [...filterDuplicates(defaultIntegrations)];\n\n if (Array.isArray(userIntegrations)) {\n // Filter out integrations that are also included in user options\n integrations = [\n ...integrations.filter(integrations =>\n userIntegrations.every(userIntegration => userIntegration.name !== integrations.name),\n ),\n // And filter out duplicated user options integrations\n ...filterDuplicates(userIntegrations),\n ];\n } else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(integrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n\n // Make sure that if present, `Debug` integration will always run last\n const integrationsNames = integrations.map(i => i.name);\n const alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push(...integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1));\n }\n\n return integrations;\n}\n\n/** Setup given integration */\nexport function setupIntegration(integration: Integration): void {\n if (installedIntegrations.indexOf(integration.name) !== -1) {\n return;\n }\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n IS_DEBUG_BUILD && logger.log(`Integration installed: ${integration.name}`);\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(options: O): IntegrationIndex {\n const integrations: IntegrationIndex = {};\n getIntegrationsToSetup(options).forEach(integration => {\n integrations[integration.name] = integration;\n setupIntegration(integration);\n });\n // set the `initialized` flag so we don't run through the process again unecessarily; use `Object.defineProperty`\n // because by default it creates a property which is nonenumerable, which we want since `initialized` shouldn't be\n // considered a member of the index the way the actual integrations are\n addNonEnumerableProperty(integrations, 'initialized', true);\n return integrations;\n}\n","/* eslint-disable max-lines */\nimport { Scope, Session } from '@sentry/hub';\nimport {\n Client,\n DsnComponents,\n Event,\n EventHint,\n Integration,\n IntegrationClass,\n Options,\n Severity,\n Transport,\n} from '@sentry/types';\nimport {\n checkOrSetAlreadyCaught,\n dateTimestampInSeconds,\n isPlainObject,\n isPrimitive,\n isThenable,\n logger,\n makeDsn,\n normalize,\n rejectedSyncPromise,\n resolvedSyncPromise,\n SentryError,\n SyncPromise,\n truncate,\n uuid4,\n} from '@sentry/utils';\n\nimport { Backend, BackendClass } from './basebackend';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { IntegrationIndex, setupIntegrations } from './integration';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding backend constructor and options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}. Also, the Backend instance is available via\n * {@link Client.getBackend}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event via the backend, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(NodeBackend, options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class BaseClient implements Client {\n /**\n * The backend used to physically interact in the environment. Usually, this\n * will correspond to the client. When composing SDKs, however, the Backend\n * from the root SDK will be used.\n */\n protected readonly _backend: B;\n\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: DsnComponents;\n\n /** Array of used integrations. */\n protected _integrations: IntegrationIndex = {};\n\n /** Number of calls being processed */\n protected _numProcessing: number = 0;\n\n /**\n * Initializes this client instance.\n *\n * @param backendClass A constructor function to create the backend.\n * @param options Options for the client.\n */\n protected constructor(backendClass: BackendClass, options: O) {\n this._backend = new backendClass(options);\n this._options = options;\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n }\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n IS_DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this._getBackend()\n .eventFromException(exception, hint)\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(message: string, level?: Severity, hint?: EventHint, scope?: Scope): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n\n const promisedEvent = isPrimitive(message)\n ? this._getBackend().eventFromMessage(String(message), level, hint)\n : this._getBackend().eventFromException(message, hint);\n\n this._process(\n promisedEvent\n .then(event => this._captureEvent(event, hint, scope))\n .then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n IS_DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return;\n }\n\n let eventId: string | undefined = hint && hint.event_id;\n\n this._process(\n this._captureEvent(event, hint, scope).then(result => {\n eventId = result;\n }),\n );\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(session: Session): void {\n if (!this._isEnabled()) {\n IS_DEBUG_BUILD && logger.warn('SDK not enabled, will not capture session.');\n return;\n }\n\n if (!(typeof session.release === 'string')) {\n IS_DEBUG_BUILD && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this._sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n session.update({ init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n public getDsn(): DsnComponents | undefined {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport {\n return this._getBackend().getTransport();\n }\n\n /**\n * @inheritDoc\n */\n public flush(timeout?: number): PromiseLike {\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return this.getTransport()\n .close(timeout)\n .then(transportFlushed => clientFinished && transportFlushed);\n });\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n public setupIntegrations(): void {\n if (this._isEnabled() && !this._integrations.initialized) {\n this._integrations = setupIntegrations(this._options);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n try {\n return (this._integrations[integration.id] as T) || null;\n } catch (_oO) {\n IS_DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /** Updates existing session based on the provided event */\n protected _updateSessionFromEvent(session: Session, event: Event): void {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n session.update({\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /** Deliver captured session to Sentry */\n protected _sendSession(session: Session): void {\n this._getBackend().sendSession(session);\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n protected _isClientDoneProcessing(timeout?: number): PromiseLike {\n return new SyncPromise(resolve => {\n let ticked: number = 0;\n const tick: number = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Returns the current backend. */\n protected _getBackend(): B {\n return this._backend;\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike {\n const { normalizeDepth = 3, normalizeMaxBreadth = 1_000 } = this.getOptions();\n const prepared: Event = {\n ...event,\n event_id: event.event_id || (hint && hint.event_id ? hint.event_id : uuid4()),\n timestamp: event.timestamp || dateTimestampInSeconds(),\n };\n\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\n\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n let finalScope = scope;\n if (hint && hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n\n // We prepare the result here with a resolved Event.\n let result = resolvedSyncPromise(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (finalScope) {\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n if (evt) {\n // TODO this is more of the hack trying to solve https://github.com/getsentry/sentry-javascript/issues/2809\n // it is only attached as extra data to the event if the event somehow skips being normalized\n evt.sdkProcessingMetadata = {\n ...evt.sdkProcessingMetadata,\n normalizeDepth: `${normalize(normalizeDepth)} (${typeof normalizeDepth})`,\n };\n }\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return this._normalizeEvent(evt, normalizeDepth, normalizeMaxBreadth);\n }\n return evt;\n });\n }\n\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n protected _normalizeEvent(event: Event | null, depth: number, maxBreadth: number): Event | null {\n if (!event) {\n return null;\n }\n\n const normalized = {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth, maxBreadth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth, maxBreadth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth, maxBreadth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth, maxBreadth),\n }),\n };\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n normalized.contexts.trace = event.contexts.trace;\n }\n\n normalized.sdkProcessingMetadata = { ...normalized.sdkProcessingMetadata, baseClientNormalized: true };\n\n return normalized;\n }\n\n /**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\n protected _applyClientOptions(event: Event): void {\n const options = this.getOptions();\n const { environment, release, dist, maxValueLength = 250 } = options;\n\n if (!('environment' in event)) {\n event.environment = 'environment' in options ? environment : 'production';\n }\n\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n\n const exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n }\n\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param event The event that will be filled with all integrations.\n */\n protected _applyIntegrationsMetadata(event: Event): void {\n const integrationsArray = Object.keys(this._integrations);\n if (integrationsArray.length > 0) {\n event.sdk = event.sdk || {};\n event.sdk.integrations = [...(event.sdk.integrations || []), ...integrationsArray];\n }\n }\n\n /**\n * Tells the backend to send this event\n * @param event The Sentry event to send\n */\n protected _sendEvent(event: Event): void {\n this._getBackend().sendEvent(event);\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n protected _captureEvent(event: Event, hint?: EventHint, scope?: Scope): PromiseLike {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n IS_DEBUG_BUILD && logger.error(reason);\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n protected _processEvent(event: Event, hint?: EventHint, scope?: Scope): PromiseLike {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeSend, sampleRate } = this.getOptions();\n const transport = this.getTransport();\n\n type RecordLostEvent = NonNullable;\n type RecordLostEventParams = Parameters;\n\n function recordLostEvent(outcome: RecordLostEventParams[0], category: RecordLostEventParams[1]): void {\n if (transport.recordLostEvent) {\n transport.recordLostEvent(outcome, category);\n }\n }\n\n if (!this._isEnabled()) {\n return rejectedSyncPromise(new SentryError('SDK not enabled, will not capture event.'));\n }\n\n const isTransaction = event.type === 'transaction';\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n recordLostEvent('sample_rate', 'event');\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n ),\n );\n }\n\n return this._prepareEvent(event, scope, hint)\n .then(prepared => {\n if (prepared === null) {\n recordLostEvent('event_processor', event.type || 'event');\n throw new SentryError('An event processor returned null, will not send event.');\n }\n\n const isInternalException = hint && hint.data && (hint.data as { __sentry__: boolean }).__sentry__ === true;\n if (isInternalException || isTransaction || !beforeSend) {\n return prepared;\n }\n\n const beforeSendResult = beforeSend(prepared, hint);\n return _ensureBeforeSendRv(beforeSendResult);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n recordLostEvent('before_send', event.type || 'event');\n throw new SentryError('`beforeSend` returned `null`, will not send event.');\n }\n\n const session = scope && scope.getSession && scope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n this._sendEvent(processedEvent);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason as Error,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n protected _process(promise: PromiseLike): void {\n this._numProcessing += 1;\n void promise.then(\n value => {\n this._numProcessing -= 1;\n return value;\n },\n reason => {\n this._numProcessing -= 1;\n return reason;\n },\n );\n }\n}\n\n/**\n * Verifies that return value of configured `beforeSend` is of expected type.\n */\nfunction _ensureBeforeSendRv(rv: PromiseLike | Event | null): PromiseLike | Event | null {\n const nullErr = '`beforeSend` method has to return `null` or a valid event.';\n if (isThenable(rv)) {\n return rv.then(\n event => {\n if (!(isPlainObject(event) || event === null)) {\n throw new SentryError(nullErr);\n }\n return event;\n },\n e => {\n throw new SentryError(`beforeSend rejected with ${e}`);\n },\n );\n } else if (!(isPlainObject(rv) || rv === null)) {\n throw new SentryError(nullErr);\n }\n return rv;\n}\n","import { DsnComponents, DsnLike, SdkMetadata } from '@sentry/types';\nimport { dsnToString, makeDsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/**\n * Stores details about a Sentry SDK\n */\nexport interface APIDetails {\n /** The DSN as passed to Sentry.init() */\n initDsn: DsnLike;\n /** Metadata about the SDK (name, version, etc) for inclusion in envelope headers */\n metadata: SdkMetadata;\n /** The internally used Dsn object. */\n readonly dsn: DsnComponents;\n /** The envelope tunnel to use. */\n readonly tunnel?: string;\n}\n\n/**\n * Helper class to provide urls, headers and metadata that can be used to form\n * different types of requests to Sentry endpoints.\n * Supports both envelopes and regular event requests.\n *\n * @deprecated Please use APIDetails\n **/\nexport class API {\n /** The DSN as passed to Sentry.init() */\n public dsn: DsnLike;\n\n /** Metadata about the SDK (name, version, etc) for inclusion in envelope headers */\n public metadata: SdkMetadata;\n\n /** The internally used Dsn object. */\n private readonly _dsnObject: DsnComponents;\n\n /** The envelope tunnel to use. */\n private readonly _tunnel?: string;\n\n /** Create a new instance of API */\n public constructor(dsn: DsnLike, metadata: SdkMetadata = {}, tunnel?: string) {\n this.dsn = dsn;\n this._dsnObject = makeDsn(dsn);\n this.metadata = metadata;\n this._tunnel = tunnel;\n }\n\n /** Returns the Dsn object. */\n public getDsn(): DsnComponents {\n return this._dsnObject;\n }\n\n /** Does this transport force envelopes? */\n public forceEnvelope(): boolean {\n return !!this._tunnel;\n }\n\n /** Returns the prefix to construct Sentry ingestion API endpoints. */\n public getBaseApiEndpoint(): string {\n return getBaseApiEndpoint(this._dsnObject);\n }\n\n /** Returns the store endpoint URL. */\n public getStoreEndpoint(): string {\n return getStoreEndpoint(this._dsnObject);\n }\n\n /**\n * Returns the store endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n public getStoreEndpointWithUrlEncodedAuth(): string {\n return getStoreEndpointWithUrlEncodedAuth(this._dsnObject);\n }\n\n /**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n public getEnvelopeEndpointWithUrlEncodedAuth(): string {\n return getEnvelopeEndpointWithUrlEncodedAuth(this._dsnObject, this._tunnel);\n }\n}\n\n/** Initializes API Details */\nexport function initAPIDetails(dsn: DsnLike, metadata?: SdkMetadata, tunnel?: string): APIDetails {\n return {\n initDsn: dsn,\n metadata: metadata || {},\n dsn: makeDsn(dsn),\n tunnel,\n } as APIDetails;\n}\n\n/** Returns the prefix to construct Sentry ingestion API endpoints. */\nfunction getBaseApiEndpoint(dsn: DsnComponents): string {\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}${dsn.path ? `/${dsn.path}` : ''}/api/`;\n}\n\n/** Returns the ingest API endpoint for target. */\nfunction _getIngestEndpoint(dsn: DsnComponents, target: 'store' | 'envelope'): string {\n return `${getBaseApiEndpoint(dsn)}${dsn.projectId}/${target}/`;\n}\n\n/** Returns a URL-encoded string with auth config suitable for a query string. */\nfunction _encodedAuth(dsn: DsnComponents): string {\n return urlEncode({\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.publicKey,\n sentry_version: SENTRY_API_VERSION,\n });\n}\n\n/** Returns the store endpoint URL. */\nfunction getStoreEndpoint(dsn: DsnComponents): string {\n return _getIngestEndpoint(dsn, 'store');\n}\n\n/**\n * Returns the store endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getStoreEndpointWithUrlEncodedAuth(dsn: DsnComponents): string {\n return `${getStoreEndpoint(dsn)}?${_encodedAuth(dsn)}`;\n}\n\n/** Returns the envelope endpoint URL. */\nfunction _getEnvelopeEndpoint(dsn: DsnComponents): string {\n return _getIngestEndpoint(dsn, 'envelope');\n}\n\n/**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\nexport function getEnvelopeEndpointWithUrlEncodedAuth(dsn: DsnComponents, tunnel?: string): string {\n return tunnel ? tunnel : `${_getEnvelopeEndpoint(dsn)}?${_encodedAuth(dsn)}`;\n}\n\n/**\n * Returns an object that can be used in request headers.\n * This is needed for node and the old /store endpoint in sentry\n */\nexport function getRequestHeaders(\n dsn: DsnComponents,\n clientName: string,\n clientVersion: string,\n): { [key: string]: string } {\n // CHANGE THIS to use metadata but keep clientName and clientVersion compatible\n const header = [`Sentry sentry_version=${SENTRY_API_VERSION}`];\n header.push(`sentry_client=${clientName}/${clientVersion}`);\n header.push(`sentry_key=${dsn.publicKey}`);\n if (dsn.pass) {\n header.push(`sentry_secret=${dsn.pass}`);\n }\n return {\n 'Content-Type': 'application/json',\n 'X-Sentry-Auth': header.join(', '),\n };\n}\n\n/** Returns the url to the report dialog endpoint. */\nexport function getReportDialogEndpoint(\n dsnLike: DsnLike,\n dialogOptions: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n user?: { name?: string; email?: string };\n },\n): string {\n const dsn = makeDsn(dsnLike);\n const endpoint = `${getBaseApiEndpoint(dsn)}embed/error-page/`;\n\n let encodedOptions = `dsn=${dsnToString(dsn)}`;\n for (const key in dialogOptions) {\n if (key === 'dsn') {\n continue;\n }\n\n if (key === 'user') {\n if (!dialogOptions.user) {\n continue;\n }\n if (dialogOptions.user.name) {\n encodedOptions += `&name=${encodeURIComponent(dialogOptions.user.name)}`;\n }\n if (dialogOptions.user.email) {\n encodedOptions += `&email=${encodeURIComponent(dialogOptions.user.email)}`;\n }\n } else {\n encodedOptions += `&${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`;\n }\n }\n\n return `${endpoint}?${encodedOptions}`;\n}\n","import { Envelope } from '@sentry/types';\n\nimport { isPrimitive } from './is';\n\n/**\n * Creates an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function createEnvelope(headers: E[0], items: E[1] = []): E {\n return [headers, items] as E;\n}\n\n/**\n * Add an item to an envelope.\n * Make sure to always explicitly provide the generic to this function\n * so that the envelope types resolve correctly.\n */\nexport function addItemToEnvelope(envelope: E, newItem: E[1][number]): E {\n const [headers, items] = envelope;\n return [headers, [...items, newItem]] as E;\n}\n\n/**\n * Get the type of the envelope. Grabs the type from the first envelope item.\n */\nexport function getEnvelopeType(envelope: E): string {\n const [, [[firstItemHeader]]] = envelope;\n return firstItemHeader.type;\n}\n\n/**\n * Serializes an envelope into a string.\n */\nexport function serializeEnvelope(envelope: Envelope): string {\n const [headers, items] = envelope;\n const serializedHeaders = JSON.stringify(headers);\n\n // Have to cast items to any here since Envelope is a union type\n // Fixed in Typescript 4.2\n // TODO: Remove any[] cast when we upgrade to TS 4.2\n // https://github.com/microsoft/TypeScript/issues/36390\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (items as any[]).reduce((acc, item: typeof items[number]) => {\n const [itemHeaders, payload] = item;\n // We do not serialize payloads that are primitives\n const serializedPayload = isPrimitive(payload) ? String(payload) : JSON.stringify(payload);\n return `${acc}\\n${JSON.stringify(itemHeaders)}\\n${serializedPayload}`;\n }, serializedHeaders);\n}\n","import {\n Event,\n EventEnvelope,\n EventItem,\n SdkInfo,\n SentryRequest,\n SentryRequestType,\n Session,\n SessionAggregates,\n SessionEnvelope,\n SessionItem,\n} from '@sentry/types';\nimport { createEnvelope, dsnToString, normalize, serializeEnvelope } from '@sentry/utils';\n\nimport { APIDetails, getEnvelopeEndpointWithUrlEncodedAuth, getStoreEndpointWithUrlEncodedAuth } from './api';\n\n/** Extract sdk info from from the API metadata */\nfunction getSdkMetadataForEnvelopeHeader(api: APIDetails): SdkInfo | undefined {\n if (!api.metadata || !api.metadata.sdk) {\n return;\n }\n const { name, version } = api.metadata.sdk;\n return { name, version };\n}\n\n/**\n * Apply SdkInfo (name, version, packages, integrations) to the corresponding event key.\n * Merge with existing data if any.\n **/\nfunction enhanceEventWithSdkInfo(event: Event, sdkInfo?: SdkInfo): Event {\n if (!sdkInfo) {\n return event;\n }\n event.sdk = event.sdk || {};\n event.sdk.name = event.sdk.name || sdkInfo.name;\n event.sdk.version = event.sdk.version || sdkInfo.version;\n event.sdk.integrations = [...(event.sdk.integrations || []), ...(sdkInfo.integrations || [])];\n event.sdk.packages = [...(event.sdk.packages || []), ...(sdkInfo.packages || [])];\n return event;\n}\n\n/** Creates an envelope from a Session */\nexport function createSessionEnvelope(\n session: Session | SessionAggregates,\n api: APIDetails,\n): [SessionEnvelope, SentryRequestType] {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n const envelopeHeaders = {\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!api.tunnel && { dsn: dsnToString(api.dsn) }),\n };\n\n // I know this is hacky but we don't want to add `sessions` to request type since it's never rate limited\n const type = 'aggregates' in session ? ('sessions' as SentryRequestType) : 'session';\n\n // TODO (v7) Have to cast type because envelope items do not accept a `SentryRequestType`\n const envelopeItem = [{ type } as { type: 'session' | 'sessions' }, session] as SessionItem;\n const envelope = createEnvelope(envelopeHeaders, [envelopeItem]);\n\n return [envelope, type];\n}\n\n/** Creates a SentryRequest from a Session. */\nexport function sessionToSentryRequest(session: Session | SessionAggregates, api: APIDetails): SentryRequest {\n const [envelope, type] = createSessionEnvelope(session, api);\n return {\n body: serializeEnvelope(envelope),\n type,\n url: getEnvelopeEndpointWithUrlEncodedAuth(api.dsn, api.tunnel),\n };\n}\n\n/**\n * Create an Envelope from an event. Note that this is duplicated from below,\n * but on purpose as this will be refactored in v7.\n */\nexport function createEventEnvelope(event: Event, api: APIDetails): EventEnvelope {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n const eventType = event.type || 'event';\n\n const { transactionSampling } = event.sdkProcessingMetadata || {};\n const { method: samplingMethod, rate: sampleRate } = transactionSampling || {};\n\n // TODO: Below is a temporary hack in order to debug a serialization error - see\n // https://github.com/getsentry/sentry-javascript/issues/2809,\n // https://github.com/getsentry/sentry-javascript/pull/4425, and\n // https://github.com/getsentry/sentry-javascript/pull/4574.\n //\n // TL; DR: even though we normalize all events (which should prevent this), something is causing `JSON.stringify` to\n // throw a circular reference error.\n //\n // When it's time to remove it:\n // 1. Delete everything between here and where the request object `req` is created, EXCEPT the line deleting\n // `sdkProcessingMetadata`\n // 2. Restore the original version of the request body, which is commented out\n // 3. Search for either of the PR URLs above and pull out the companion hacks in the browser playwright tests and the\n // baseClient tests in this package\n enhanceEventWithSdkInfo(event, api.metadata.sdk);\n event.tags = event.tags || {};\n event.extra = event.extra || {};\n\n // In theory, all events should be marked as having gone through normalization and so\n // we should never set this tag/extra data\n if (!(event.sdkProcessingMetadata && event.sdkProcessingMetadata.baseClientNormalized)) {\n event.tags.skippedNormalization = true;\n event.extra.normalizeDepth = event.sdkProcessingMetadata ? event.sdkProcessingMetadata.normalizeDepth : 'unset';\n }\n\n // prevent this data from being sent to sentry\n // TODO: This is NOT part of the hack - DO NOT DELETE\n delete event.sdkProcessingMetadata;\n\n const envelopeHeaders = {\n event_id: event.event_id as string,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!api.tunnel && { dsn: dsnToString(api.dsn) }),\n };\n const eventItem: EventItem = [\n {\n type: eventType,\n sample_rates: [{ id: samplingMethod, rate: sampleRate }],\n },\n event,\n ];\n return createEnvelope(envelopeHeaders, [eventItem]);\n}\n\n/** Creates a SentryRequest from an event. */\nexport function eventToSentryRequest(event: Event, api: APIDetails): SentryRequest {\n const sdkInfo = getSdkMetadataForEnvelopeHeader(api);\n const eventType = event.type || 'event';\n const useEnvelope = eventType === 'transaction' || !!api.tunnel;\n\n const { transactionSampling } = event.sdkProcessingMetadata || {};\n const { method: samplingMethod, rate: sampleRate } = transactionSampling || {};\n\n // TODO: Below is a temporary hack in order to debug a serialization error - see\n // https://github.com/getsentry/sentry-javascript/issues/2809,\n // https://github.com/getsentry/sentry-javascript/pull/4425, and\n // https://github.com/getsentry/sentry-javascript/pull/4574.\n //\n // TL; DR: even though we normalize all events (which should prevent this), something is causing `JSON.stringify` to\n // throw a circular reference error.\n //\n // When it's time to remove it:\n // 1. Delete everything between here and where the request object `req` is created, EXCEPT the line deleting\n // `sdkProcessingMetadata`\n // 2. Restore the original version of the request body, which is commented out\n // 3. Search for either of the PR URLs above and pull out the companion hacks in the browser playwright tests and the\n // baseClient tests in this package\n enhanceEventWithSdkInfo(event, api.metadata.sdk);\n event.tags = event.tags || {};\n event.extra = event.extra || {};\n\n // In theory, all events should be marked as having gone through normalization and so\n // we should never set this tag/extra data\n if (!(event.sdkProcessingMetadata && event.sdkProcessingMetadata.baseClientNormalized)) {\n event.tags.skippedNormalization = true;\n event.extra.normalizeDepth = event.sdkProcessingMetadata ? event.sdkProcessingMetadata.normalizeDepth : 'unset';\n }\n\n // prevent this data from being sent to sentry\n // TODO: This is NOT part of the hack - DO NOT DELETE\n delete event.sdkProcessingMetadata;\n\n let body;\n try {\n // 99.9% of events should get through just fine - no change in behavior for them\n body = JSON.stringify(event);\n } catch (err) {\n // Record data about the error without replacing original event data, then force renormalization\n event.tags.JSONStringifyError = true;\n event.extra.JSONStringifyError = err;\n try {\n body = JSON.stringify(normalize(event));\n } catch (newErr) {\n // At this point even renormalization hasn't worked, meaning something about the event data has gone very wrong.\n // Time to cut our losses and record only the new error. With luck, even in the problematic cases we're trying to\n // debug with this hack, we won't ever land here.\n const innerErr = newErr as Error;\n body = JSON.stringify({\n message: 'JSON.stringify error after renormalization',\n // setting `extra: { innerErr }` here for some reason results in an empty object, so unpack manually\n extra: { message: innerErr.message, stack: innerErr.stack },\n });\n }\n }\n\n const req: SentryRequest = {\n // this is the relevant line of code before the hack was added, to make it easy to undo said hack once we've solved\n // the mystery\n // body: JSON.stringify(sdkInfo ? enhanceEventWithSdkInfo(event, api.metadata.sdk) : event),\n body,\n type: eventType,\n url: useEnvelope\n ? getEnvelopeEndpointWithUrlEncodedAuth(api.dsn, api.tunnel)\n : getStoreEndpointWithUrlEncodedAuth(api.dsn),\n };\n\n // https://develop.sentry.dev/sdk/envelopes/\n\n // Since we don't need to manipulate envelopes nor store them, there is no\n // exported concept of an Envelope with operations including serialization and\n // deserialization. Instead, we only implement a minimal subset of the spec to\n // serialize events inline here.\n if (useEnvelope) {\n const envelopeHeaders = {\n event_id: event.event_id as string,\n sent_at: new Date().toISOString(),\n ...(sdkInfo && { sdk: sdkInfo }),\n ...(!!api.tunnel && { dsn: dsnToString(api.dsn) }),\n };\n const eventItem: EventItem = [\n {\n type: eventType,\n sample_rates: [{ id: samplingMethod, rate: sampleRate }],\n },\n req.body,\n ];\n const envelope = createEnvelope(envelopeHeaders, [eventItem]);\n req.body = serializeEnvelope(envelope);\n }\n\n return req;\n}\n","import { Event, Response, Transport } from '@sentry/types';\nimport { resolvedSyncPromise } from '@sentry/utils';\n\n/** Noop transport */\nexport class NoopTransport implements Transport {\n /**\n * @inheritDoc\n */\n public sendEvent(_: Event): PromiseLike {\n return resolvedSyncPromise({\n reason: 'NoopTransport: Event has been skipped because no Dsn is configured.',\n status: 'skipped',\n });\n }\n\n /**\n * @inheritDoc\n */\n public close(_?: number): PromiseLike {\n return resolvedSyncPromise(true);\n }\n}\n","import { Event, EventHint, Options, Session, Severity, Transport } from '@sentry/types';\nimport { logger, SentryError } from '@sentry/utils';\n\nimport { initAPIDetails } from './api';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { createEventEnvelope, createSessionEnvelope } from './request';\nimport { NewTransport } from './transports/base';\nimport { NoopTransport } from './transports/noop';\n\n/**\n * Internal platform-dependent Sentry SDK Backend.\n *\n * While {@link Client} contains business logic specific to an SDK, the\n * Backend offers platform specific implementations for low-level operations.\n * These are persisting and loading information, sending events, and hooking\n * into the environment.\n *\n * Backends receive a handle to the Client in their constructor. When a\n * Backend automatically generates events, it must pass them to\n * the Client for validation and processing first.\n *\n * Usually, the Client will be of corresponding type, e.g. NodeBackend\n * receives NodeClient. However, higher-level SDKs can choose to instantiate\n * multiple Backends and delegate tasks between them. In this case, an event\n * generated by one backend might very well be sent by another one.\n *\n * The client also provides access to options via {@link Client.getOptions}.\n * @hidden\n */\nexport interface Backend {\n /** Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n eventFromException(exception: any, hint?: EventHint): PromiseLike;\n\n /** Creates an {@link Event} from primitive inputs to `captureMessage`. */\n eventFromMessage(message: string, level?: Severity, hint?: EventHint): PromiseLike;\n\n /** Submits the event to Sentry */\n sendEvent(event: Event): void;\n\n /** Submits the session to Sentry */\n sendSession(session: Session): void;\n\n /**\n * Returns the transport that is used by the backend.\n * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent.\n *\n * @returns The transport.\n */\n getTransport(): Transport;\n}\n\n/**\n * A class object that can instantiate Backend objects.\n * @hidden\n */\nexport type BackendClass = new (options: O) => B;\n\n/**\n * This is the base implemention of a Backend.\n * @hidden\n */\nexport abstract class BaseBackend implements Backend {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** Cached transport used internally. */\n protected _transport: Transport;\n\n /** New v7 Transport that is initialized alongside the old one */\n protected _newTransport?: NewTransport;\n\n /** Creates a new backend instance. */\n public constructor(options: O) {\n this._options = options;\n if (!this._options.dsn) {\n IS_DEBUG_BUILD && logger.warn('No DSN provided, backend will not do anything.');\n }\n this._transport = this._setupTransport();\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public eventFromException(_exception: any, _hint?: EventHint): PromiseLike {\n throw new SentryError('Backend has to implement `eventFromException` method');\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(_message: string, _level?: Severity, _hint?: EventHint): PromiseLike {\n throw new SentryError('Backend has to implement `eventFromMessage` method');\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): void {\n // TODO(v7): Remove the if-else\n if (\n this._newTransport &&\n this._options.dsn &&\n this._options._experiments &&\n this._options._experiments.newTransport\n ) {\n const api = initAPIDetails(this._options.dsn, this._options._metadata, this._options.tunnel);\n const env = createEventEnvelope(event, api);\n void this._newTransport.send(env).then(null, reason => {\n IS_DEBUG_BUILD && logger.error('Error while sending event:', reason);\n });\n } else {\n void this._transport.sendEvent(event).then(null, reason => {\n IS_DEBUG_BUILD && logger.error('Error while sending event:', reason);\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session): void {\n if (!this._transport.sendSession) {\n IS_DEBUG_BUILD && logger.warn(\"Dropping session because custom transport doesn't implement sendSession\");\n return;\n }\n\n // TODO(v7): Remove the if-else\n if (\n this._newTransport &&\n this._options.dsn &&\n this._options._experiments &&\n this._options._experiments.newTransport\n ) {\n const api = initAPIDetails(this._options.dsn, this._options._metadata, this._options.tunnel);\n const [env] = createSessionEnvelope(session, api);\n void this._newTransport.send(env).then(null, reason => {\n IS_DEBUG_BUILD && logger.error('Error while sending session:', reason);\n });\n } else {\n void this._transport.sendSession(session).then(null, reason => {\n IS_DEBUG_BUILD && logger.error('Error while sending session:', reason);\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport {\n return this._transport;\n }\n\n /**\n * Sets up the transport so it can be used later to send requests.\n */\n protected _setupTransport(): Transport {\n return new NoopTransport();\n }\n}\n","import { StackFrame } from '@sentry/types';\nimport { StackLineParser, StackLineParserFn } from '@sentry/utils';\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\nconst OPERA10_PRIORITY = 10;\nconst OPERA11_PRIORITY = 20;\nconst CHROME_PRIORITY = 30;\nconst WINJS_PRIORITY = 40;\nconst GECKO_PRIORITY = 50;\n\nfunction createFrame(filename: string, func: string, lineno?: number, colno?: number): StackFrame {\n const frame: StackFrame = {\n filename,\n function: func,\n // All browser frames are considered in_app\n in_app: true,\n };\n\n if (lineno !== undefined) {\n frame.lineno = lineno;\n }\n\n if (colno !== undefined) {\n frame.colno = colno;\n }\n\n return frame;\n}\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chromeRegex =\n /^\\s*at (?:(.*?) ?\\((?:address at )?)?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\nconst chromeEvalRegex = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\nconst chrome: StackLineParserFn = line => {\n const parts = chromeRegex.exec(line);\n\n if (parts) {\n const isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\n if (isEval) {\n const subMatch = chromeEvalRegex.exec(parts[2]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = subMatch[1]; // url\n parts[3] = subMatch[2]; // line\n parts[4] = subMatch[3]; // column\n }\n }\n\n // Kamil: One more hack won't hurt us right? Understanding and adding more rules on top of these regexps right now\n // would be way too time consuming. (TODO: Rewrite whole RegExp to be more readable)\n const [func, filename] = extractSafariExtensionDetails(parts[1] || UNKNOWN_FUNCTION, parts[2]);\n\n return createFrame(filename, func, parts[3] ? +parts[3] : undefined, parts[4] ? +parts[4] : undefined);\n }\n\n return;\n};\n\nexport const chromeStackParser: StackLineParser = [CHROME_PRIORITY, chrome];\n\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst geckoREgex =\n /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js)|\\/[\\w\\-. /=]+)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst geckoEvalRegex = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\nconst gecko: StackLineParserFn = line => {\n const parts = geckoREgex.exec(line);\n\n if (parts) {\n const isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval) {\n const subMatch = geckoEvalRegex.exec(parts[3]);\n\n if (subMatch) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || 'eval';\n parts[3] = subMatch[1];\n parts[4] = subMatch[2];\n parts[5] = ''; // no column when eval\n }\n }\n\n let filename = parts[3];\n let func = parts[1] || UNKNOWN_FUNCTION;\n [func, filename] = extractSafariExtensionDetails(func, filename);\n\n return createFrame(filename, func, parts[4] ? +parts[4] : undefined, parts[5] ? +parts[5] : undefined);\n }\n\n return;\n};\n\nexport const geckoStackParser: StackLineParser = [GECKO_PRIORITY, gecko];\n\nconst winjsRegex =\n /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\nconst winjs: StackLineParserFn = line => {\n const parts = winjsRegex.exec(line);\n\n return parts\n ? createFrame(parts[2], parts[1] || UNKNOWN_FUNCTION, +parts[3], parts[4] ? +parts[4] : undefined)\n : undefined;\n};\n\nexport const winjsStackParser: StackLineParser = [WINJS_PRIORITY, winjs];\n\nconst opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n\nconst opera10: StackLineParserFn = line => {\n const parts = opera10Regex.exec(line);\n return parts ? createFrame(parts[2], parts[3] || UNKNOWN_FUNCTION, +parts[1]) : undefined;\n};\n\nexport const opera10StackParser: StackLineParser = [OPERA10_PRIORITY, opera10];\n\nconst opera11Regex =\n / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\(.*\\))? in (.*):\\s*$/i;\n\nconst opera11: StackLineParserFn = line => {\n const parts = opera11Regex.exec(line);\n return parts ? createFrame(parts[5], parts[3] || parts[4] || UNKNOWN_FUNCTION, +parts[1], +parts[2]) : undefined;\n};\n\nexport const opera11StackParser: StackLineParser = [OPERA11_PRIORITY, opera11];\n\n/**\n * Safari web extensions, starting version unknown, can produce \"frames-only\" stacktraces.\n * What it means, is that instead of format like:\n *\n * Error: wat\n * at function@url:row:col\n * at function@url:row:col\n * at function@url:row:col\n *\n * it produces something like:\n *\n * function@url:row:col\n * function@url:row:col\n * function@url:row:col\n *\n * Because of that, it won't be captured by `chrome` RegExp and will fall into `Gecko` branch.\n * This function is extracted so that we can use it in both places without duplicating the logic.\n * Unfortunately \"just\" changing RegExp is too complicated now and making it pass all tests\n * and fix this case seems like an impossible, or at least way too time-consuming task.\n */\nconst extractSafariExtensionDetails = (func: string, filename: string): [string, string] => {\n const isSafariExtension = func.indexOf('safari-extension') !== -1;\n const isSafariWebExtension = func.indexOf('safari-web-extension') !== -1;\n\n return isSafariExtension || isSafariWebExtension\n ? [\n func.indexOf('@') !== -1 ? func.split('@')[0] : UNKNOWN_FUNCTION,\n isSafariExtension ? `safari-extension:${filename}` : `safari-web-extension:${filename}`,\n ]\n : [func, filename];\n};\n","import { Event, EventHint, Exception, Severity, StackFrame } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n createStackParser,\n extractExceptionKeysForMessage,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n normalizeToSize,\n resolvedSyncPromise,\n} from '@sentry/utils';\n\nimport {\n chromeStackParser,\n geckoStackParser,\n opera10StackParser,\n opera11StackParser,\n winjsStackParser,\n} from './stack-parsers';\n\n/**\n * This function creates an exception from an TraceKitStackTrace\n * @param stacktrace TraceKitStackTrace that will be converted to an exception\n * @hidden\n */\nexport function exceptionFromError(ex: Error): Exception {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(ex);\n\n const exception: Exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(\n exception: Record,\n syntheticException?: Error,\n isUnhandledRejection?: boolean,\n): Event {\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n isUnhandledRejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(syntheticException);\n if (frames.length) {\n event.stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromError(ex: Error): Event {\n return {\n exception: {\n values: [exceptionFromError(ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nexport function parseStackFrames(ex: Error & { framesToPop?: number; stacktrace?: string }): StackFrame[] {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return createStackParser(\n opera10StackParser,\n opera11StackParser,\n chromeStackParser,\n winjsStackParser,\n geckoStackParser,\n )(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex: Error & { framesToPop?: number }): number {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: Error & { message: { error?: Error } }): string {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nexport function eventFromException(\n exception: unknown,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = Severity.Error;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(\n message: string,\n level: Severity = Severity.Info,\n hint?: EventHint,\n attachStacktrace?: boolean,\n): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(\n exception: unknown,\n syntheticException?: Error,\n attachStacktrace?: boolean,\n isUnhandledRejection?: boolean,\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n return eventFromError(errorEvent.error as Error);\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception as DOMError) || isDOMException(exception as DOMException)) {\n const domException = exception as DOMException;\n\n if ('stack' in (exception as Error)) {\n event = eventFromError(exception as Error);\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception as Record;\n event = eventFromPlainObject(objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(exception as string, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromString(input: string, syntheticException?: Error, attachStacktrace?: boolean): Event {\n const event: Event = {\n message: input,\n };\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(syntheticException);\n if (frames.length) {\n event.stacktrace = { frames };\n }\n }\n\n return event;\n}\n","import { SentryError } from './error';\nimport { rejectedSyncPromise, resolvedSyncPromise, SyncPromise } from './syncpromise';\n\nexport interface PromiseBuffer {\n // exposes the internal array so tests can assert on the state of it.\n // XXX: this really should not be public api.\n $: Array>;\n add(taskProducer: () => PromiseLike): PromiseLike;\n drain(timeout?: number): PromiseLike;\n}\n\n/**\n * Creates an new PromiseBuffer object with the specified limit\n * @param limit max number of promises that can be stored in the buffer\n */\nexport function makePromiseBuffer(limit?: number): PromiseBuffer {\n const buffer: Array> = [];\n\n function isReady(): boolean {\n return limit === undefined || buffer.length < limit;\n }\n\n /**\n * Remove a promise from the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n function remove(task: PromiseLike): PromiseLike {\n return buffer.splice(buffer.indexOf(task), 1)[0];\n }\n\n /**\n * Add a promise (representing an in-flight action) to the queue, and set it to remove itself on fulfillment.\n *\n * @param taskProducer A function producing any PromiseLike; In previous versions this used to be `task:\n * PromiseLike`, but under that model, Promises were instantly created on the call-site and their executor\n * functions therefore ran immediately. Thus, even if the buffer was full, the action still happened. By\n * requiring the promise to be wrapped in a function, we can defer promise creation until after the buffer\n * limit check.\n * @returns The original promise.\n */\n function add(taskProducer: () => PromiseLike): PromiseLike {\n if (!isReady()) {\n return rejectedSyncPromise(new SentryError('Not adding Promise due to buffer limit reached.'));\n }\n\n // start the task and add its promise to the queue\n const task = taskProducer();\n if (buffer.indexOf(task) === -1) {\n buffer.push(task);\n }\n void task\n .then(() => remove(task))\n // Use `then(null, rejectionHandler)` rather than `catch(rejectionHandler)` so that we can use `PromiseLike`\n // rather than `Promise`. `PromiseLike` doesn't have a `.catch` method, making its polyfill smaller. (ES5 didn't\n // have promises, so TS has to polyfill when down-compiling.)\n .then(null, () =>\n remove(task).then(null, () => {\n // We have to add another catch here because `remove()` starts a new promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Wait for all promises in the queue to resolve or for timeout to expire, whichever comes first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the queue is still non-empty. Passing `0` (or\n * not passing anything) will make the promise wait as long as it takes for the queue to drain before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if the queue is already empty or drains before the timeout, and\n * `false` otherwise\n */\n function drain(timeout?: number): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let counter = buffer.length;\n\n if (!counter) {\n return resolve(true);\n }\n\n // wait for `timeout` ms and then resolve to `false` (if not cancelled first)\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n\n // if all promises resolve in time, cancel the timer and resolve to `true`\n buffer.forEach(item => {\n void resolvedSyncPromise(item).then(() => {\n // eslint-disable-next-line no-plusplus\n if (!--counter) {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n }\n }, reject);\n });\n });\n }\n\n return {\n $: buffer,\n add,\n drain,\n };\n}\n","// Keeping the key broad until we add the new transports\nexport type RateLimits = Record;\n\nexport const DEFAULT_RETRY_AFTER = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param header string representation of 'Retry-After' header\n * @param now current unix timestamp\n *\n */\nexport function parseRetryAfterHeader(header: string, now: number = Date.now()): number {\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return DEFAULT_RETRY_AFTER;\n}\n\n/**\n * Gets the time that given category is disabled until for rate limiting\n */\nexport function disabledUntil(limits: RateLimits, category: string): number {\n return limits[category] || limits.all || 0;\n}\n\n/**\n * Checks if a category is rate limited\n */\nexport function isRateLimited(limits: RateLimits, category: string, now: number = Date.now()): boolean {\n return disabledUntil(limits, category) > now;\n}\n\n/**\n * Update ratelimits from incoming headers.\n * Returns true if headers contains a non-empty rate limiting header.\n */\nexport function updateRateLimits(\n limits: RateLimits,\n headers: Record,\n now: number = Date.now(),\n): RateLimits {\n const updatedRateLimits: RateLimits = {\n ...limits,\n };\n\n // \"The name is case-insensitive.\"\n // https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n const rateLimitHeader = headers['x-sentry-rate-limits'];\n const retryAfterHeader = headers['retry-after'];\n\n if (rateLimitHeader) {\n /**\n * rate limit headers are of the form\n *
,
,..\n * where each
is of the form\n * : : : \n * where\n * is a delay in seconds\n * is the event type(s) (error, transaction, etc) being rate limited and is of the form\n * ;;...\n * is what's being limited (org, project, or key) - ignored by SDK\n * is an arbitrary string like \"org_quota\" - ignored by SDK\n */\n for (const limit of rateLimitHeader.trim().split(',')) {\n const parameters = limit.split(':', 2);\n const headerDelay = parseInt(parameters[0], 10);\n const delay = (!isNaN(headerDelay) ? headerDelay : 60) * 1000; // 60sec default\n if (!parameters[1]) {\n updatedRateLimits.all = now + delay;\n } else {\n for (const category of parameters[1].split(';')) {\n updatedRateLimits[category] = now + delay;\n }\n }\n }\n } else if (retryAfterHeader) {\n updatedRateLimits.all = now + parseRetryAfterHeader(retryAfterHeader, now);\n }\n\n return updatedRateLimits;\n}\n","import { EventStatus } from '@sentry/types';\n/**\n * Converts an HTTP status code to sentry status {@link EventStatus}.\n *\n * @param code number HTTP status code\n * @returns EventStatus\n */\nexport function eventStatusFromHttpCode(code: number): EventStatus {\n if (code >= 200 && code < 300) {\n return 'success';\n }\n\n if (code === 429) {\n return 'rate_limit';\n }\n\n if (code >= 400 && code < 500) {\n return 'invalid';\n }\n\n if (code >= 500) {\n return 'failed';\n }\n\n return 'unknown';\n}\n","import { Envelope, EventStatus } from '@sentry/types';\nimport {\n disabledUntil,\n eventStatusFromHttpCode,\n getEnvelopeType,\n isRateLimited,\n makePromiseBuffer,\n PromiseBuffer,\n RateLimits,\n rejectedSyncPromise,\n resolvedSyncPromise,\n serializeEnvelope,\n updateRateLimits,\n} from '@sentry/utils';\n\nexport const ERROR_TRANSPORT_CATEGORY = 'error';\n\nexport const TRANSACTION_TRANSPORT_CATEGORY = 'transaction';\n\nexport const ATTACHMENT_TRANSPORT_CATEGORY = 'attachment';\n\nexport const SESSION_TRANSPORT_CATEGORY = 'session';\n\ntype TransportCategory =\n | typeof ERROR_TRANSPORT_CATEGORY\n | typeof TRANSACTION_TRANSPORT_CATEGORY\n | typeof ATTACHMENT_TRANSPORT_CATEGORY\n | typeof SESSION_TRANSPORT_CATEGORY;\n\nexport type TransportRequest = {\n body: string;\n category: TransportCategory;\n};\n\nexport type TransportMakeRequestResponse = {\n body?: string;\n headers?: {\n [key: string]: string | null;\n 'x-sentry-rate-limits': string | null;\n 'retry-after': string | null;\n };\n reason?: string;\n statusCode: number;\n};\n\nexport type TransportResponse = {\n status: EventStatus;\n reason?: string;\n};\n\ninterface InternalBaseTransportOptions {\n bufferSize?: number;\n}\n\nexport interface BaseTransportOptions extends InternalBaseTransportOptions {\n // url to send the event\n // transport does not care about dsn specific - client should take care of\n // parsing and figuring that out\n url: string;\n}\n\n// TODO: Move into Browser Transport\nexport interface BrowserTransportOptions extends BaseTransportOptions {\n // options to pass into fetch request\n fetchParams: Record;\n headers?: Record;\n sendClientReports?: boolean;\n}\n\nexport interface NewTransport {\n send(request: Envelope): PromiseLike;\n flush(timeout?: number): PromiseLike;\n}\n\nexport type TransportRequestExecutor = (request: TransportRequest) => PromiseLike;\n\nexport const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;\n\n/**\n * Creates a `NewTransport`\n *\n * @param options\n * @param makeRequest\n */\nexport function createTransport(\n options: InternalBaseTransportOptions,\n makeRequest: TransportRequestExecutor,\n buffer: PromiseBuffer = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE),\n): NewTransport {\n let rateLimits: RateLimits = {};\n\n const flush = (timeout?: number): PromiseLike => buffer.drain(timeout);\n\n function send(envelope: Envelope): PromiseLike {\n const envCategory = getEnvelopeType(envelope);\n const category = envCategory === 'event' ? 'error' : (envCategory as TransportCategory);\n const request: TransportRequest = {\n category,\n body: serializeEnvelope(envelope),\n };\n\n // Don't add to buffer if transport is already rate-limited\n if (isRateLimited(rateLimits, category)) {\n return rejectedSyncPromise({\n status: 'rate_limit',\n reason: getRateLimitReason(rateLimits, category),\n });\n }\n\n const requestTask = (): PromiseLike =>\n makeRequest(request).then(({ body, headers, reason, statusCode }): PromiseLike => {\n const status = eventStatusFromHttpCode(statusCode);\n if (headers) {\n rateLimits = updateRateLimits(rateLimits, headers);\n }\n if (status === 'success') {\n return resolvedSyncPromise({ status, reason });\n }\n return rejectedSyncPromise({\n status,\n reason:\n reason ||\n body ||\n (status === 'rate_limit' ? getRateLimitReason(rateLimits, category) : 'Unknown transport error'),\n });\n });\n\n return buffer.add(requestTask);\n }\n\n return {\n send,\n flush,\n };\n}\n\nfunction getRateLimitReason(rateLimits: RateLimits, category: TransportCategory): string {\n return `Too many ${category} requests, backing off until: ${new Date(\n disabledUntil(rateLimits, category),\n ).toISOString()}`;\n}\n","/*\n * This file defines flags and constants that can be modified during compile time in order to facilitate tree shaking\n * for users.\n *\n * Debug flags need to be declared in each package individually and must not be imported across package boundaries,\n * because some build tools have trouble tree-shaking imported guards.\n *\n * As a convention, we define debug flags in a `flags.ts` file in the root of a package's `src` folder.\n *\n * Debug flag files will contain \"magic strings\" like `__SENTRY_DEBUG__` that may get replaced with actual values during\n * our, or the user's build process. Take care when introducing new flags - they must not throw if they are not\n * replaced.\n */\n\ndeclare const __SENTRY_DEBUG__: boolean;\n\n/** Flag that is true for debug builds, false otherwise. */\nexport const IS_DEBUG_BUILD = typeof __SENTRY_DEBUG__ === 'undefined' ? true : __SENTRY_DEBUG__;\n","import { forget, getGlobalObject, isNativeFetch, logger, supportsFetch } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../flags';\n\nconst global = getGlobalObject();\nlet cachedFetchImpl: FetchImpl;\n\nexport type FetchImpl = typeof fetch;\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nexport function getNativeFetchImplementation(): FetchImpl {\n if (cachedFetchImpl) {\n return cachedFetchImpl;\n }\n\n /* eslint-disable @typescript-eslint/unbound-method */\n\n // Fast path to avoid DOM I/O\n if (isNativeFetch(global.fetch)) {\n return (cachedFetchImpl = global.fetch.bind(global));\n }\n\n const document = global.document;\n let fetchImpl = global.fetch;\n // eslint-disable-next-line deprecation/deprecation\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow.fetch) {\n fetchImpl = contentWindow.fetch;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n IS_DEBUG_BUILD &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', e);\n }\n }\n\n return (cachedFetchImpl = fetchImpl.bind(global));\n /* eslint-enable @typescript-eslint/unbound-method */\n}\n\n/**\n * Sends sdk client report using sendBeacon or fetch as a fallback if available\n *\n * @param url report endpoint\n * @param body report payload\n */\nexport function sendReport(url: string, body: string): void {\n const isRealNavigator = Object.prototype.toString.call(global && global.navigator) === '[object Navigator]';\n const hasSendBeacon = isRealNavigator && typeof global.navigator.sendBeacon === 'function';\n\n if (hasSendBeacon) {\n // Prevent illegal invocations - https://xgwang.me/posts/you-may-not-know-beacon/#it-may-throw-error%2C-be-sure-to-catch\n const sendBeacon = global.navigator.sendBeacon.bind(global.navigator);\n return sendBeacon(url, body);\n }\n\n if (supportsFetch()) {\n const fetch = getNativeFetchImplementation();\n return forget(\n fetch(url, {\n body,\n method: 'POST',\n credentials: 'omit',\n keepalive: true,\n }),\n );\n }\n}\n","import {\n APIDetails,\n eventToSentryRequest,\n getEnvelopeEndpointWithUrlEncodedAuth,\n getStoreEndpointWithUrlEncodedAuth,\n initAPIDetails,\n sessionToSentryRequest,\n} from '@sentry/core';\nimport {\n ClientReport,\n Event,\n Outcome,\n Response as SentryResponse,\n SentryRequest,\n SentryRequestType,\n Session,\n Transport,\n TransportOptions,\n} from '@sentry/types';\nimport {\n createClientReportEnvelope,\n disabledUntil,\n dsnToString,\n eventStatusFromHttpCode,\n getGlobalObject,\n isRateLimited,\n logger,\n makePromiseBuffer,\n PromiseBuffer,\n RateLimits,\n serializeEnvelope,\n updateRateLimits,\n} from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { sendReport } from './utils';\n\nfunction requestTypeToCategory(ty: SentryRequestType): string {\n const tyStr = ty as string;\n return tyStr === 'event' ? 'error' : tyStr;\n}\n\nconst global = getGlobalObject();\n\n/** Base Transport class implementation */\nexport abstract class BaseTransport implements Transport {\n /**\n * @deprecated\n */\n public url: string;\n\n /** Helper to get Sentry API endpoints. */\n protected readonly _api: APIDetails;\n\n /** A simple buffer holding all requests. */\n protected readonly _buffer: PromiseBuffer = makePromiseBuffer(30);\n\n /** Locks transport after receiving rate limits in a response */\n protected _rateLimits: RateLimits = {};\n\n protected _outcomes: { [key: string]: number } = {};\n\n public constructor(public options: TransportOptions) {\n this._api = initAPIDetails(options.dsn, options._metadata, options.tunnel);\n // eslint-disable-next-line deprecation/deprecation\n this.url = getStoreEndpointWithUrlEncodedAuth(this._api.dsn);\n\n if (this.options.sendClientReports && global.document) {\n global.document.addEventListener('visibilitychange', () => {\n if (global.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): PromiseLike {\n return this._sendRequest(eventToSentryRequest(event, this._api), event);\n }\n\n /**\n * @inheritDoc\n */\n public sendSession(session: Session): PromiseLike {\n return this._sendRequest(sessionToSentryRequest(session, this._api), session);\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this._buffer.drain(timeout);\n }\n\n /**\n * @inheritDoc\n */\n public recordLostEvent(reason: Outcome, category: SentryRequestType): void {\n if (!this.options.sendClientReports) {\n return;\n }\n // We want to track each category (event, transaction, session) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n const key = `${requestTypeToCategory(category)}:${reason}`;\n IS_DEBUG_BUILD && logger.log(`Adding outcome: ${key}`);\n this._outcomes[key] = (this._outcomes[key] ?? 0) + 1;\n }\n\n /**\n * Send outcomes as an envelope\n */\n protected _flushOutcomes(): void {\n if (!this.options.sendClientReports) {\n return;\n }\n\n const outcomes = this._outcomes;\n this._outcomes = {};\n\n // Nothing to send\n if (!Object.keys(outcomes).length) {\n IS_DEBUG_BUILD && logger.log('No outcomes to flush');\n return;\n }\n\n IS_DEBUG_BUILD && logger.log(`Flushing outcomes:\\n${JSON.stringify(outcomes, null, 2)}`);\n\n const url = getEnvelopeEndpointWithUrlEncodedAuth(this._api.dsn, this._api.tunnel);\n\n const discardedEvents = Object.keys(outcomes).map(key => {\n const [category, reason] = key.split(':');\n return {\n reason,\n category,\n quantity: outcomes[key],\n };\n // TODO: Improve types on discarded_events to get rid of cast\n }) as ClientReport['discarded_events'];\n const envelope = createClientReportEnvelope(discardedEvents, this._api.tunnel && dsnToString(this._api.dsn));\n\n try {\n sendReport(url, serializeEnvelope(envelope));\n } catch (e) {\n IS_DEBUG_BUILD && logger.error(e);\n }\n }\n\n /**\n * Handle Sentry repsonse for promise-based transports.\n */\n protected _handleResponse({\n requestType,\n response,\n headers,\n resolve,\n reject,\n }: {\n requestType: SentryRequestType;\n response: Response | XMLHttpRequest;\n headers: Record;\n resolve: (value?: SentryResponse | PromiseLike | null | undefined) => void;\n reject: (reason?: unknown) => void;\n }): void {\n const status = eventStatusFromHttpCode(response.status);\n\n this._rateLimits = updateRateLimits(this._rateLimits, headers);\n // eslint-disable-next-line deprecation/deprecation\n if (this._isRateLimited(requestType)) {\n IS_DEBUG_BUILD &&\n // eslint-disable-next-line deprecation/deprecation\n logger.warn(`Too many ${requestType} requests, backing off until: ${this._disabledUntil(requestType)}`);\n }\n\n if (status === 'success') {\n resolve({ status });\n return;\n }\n\n reject(response);\n }\n\n /**\n * Gets the time that given category is disabled until for rate limiting\n *\n * @deprecated Please use `disabledUntil` from @sentry/utils\n */\n protected _disabledUntil(requestType: SentryRequestType): Date {\n const category = requestTypeToCategory(requestType);\n return new Date(disabledUntil(this._rateLimits, category));\n }\n\n /**\n * Checks if a category is rate limited\n *\n * @deprecated Please use `isRateLimited` from @sentry/utils\n */\n protected _isRateLimited(requestType: SentryRequestType): boolean {\n const category = requestTypeToCategory(requestType);\n return isRateLimited(this._rateLimits, category);\n }\n\n protected abstract _sendRequest(\n sentryRequest: SentryRequest,\n originalPayload: Event | Session,\n ): PromiseLike;\n}\n","import { ClientReport, ClientReportEnvelope, ClientReportItem } from '@sentry/types';\n\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nexport function createClientReportEnvelope(\n discarded_events: ClientReport['discarded_events'],\n dsn?: string,\n timestamp?: number,\n): ClientReportEnvelope {\n const clientReportItem: ClientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n","/**\n * Consumes the promise and logs the error when it rejects.\n * @param promise A promise to forget.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function forget(promise: PromiseLike): void {\n void promise.then(null, e => {\n // TODO: Use a better logging mechanism\n // eslint-disable-next-line no-console\n console.error(e);\n });\n}\n","import { Event, Response, SentryRequest, Session, TransportOptions } from '@sentry/types';\nimport { SentryError, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\n\nimport { BaseTransport } from './base';\nimport { FetchImpl, getNativeFetchImplementation } from './utils';\n\n/** `fetch` based transport */\nexport class FetchTransport extends BaseTransport {\n /**\n * Fetch API reference which always points to native browser implementation.\n */\n private _fetch: typeof fetch;\n\n public constructor(options: TransportOptions, fetchImpl: FetchImpl = getNativeFetchImplementation()) {\n super(options);\n this._fetch = fetchImpl;\n }\n\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n protected _sendRequest(sentryRequest: SentryRequest, originalPayload: Event | Session): PromiseLike {\n // eslint-disable-next-line deprecation/deprecation\n if (this._isRateLimited(sentryRequest.type)) {\n this.recordLostEvent('ratelimit_backoff', sentryRequest.type);\n\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n // eslint-disable-next-line deprecation/deprecation\n reason: `Transport for ${sentryRequest.type} requests locked till ${this._disabledUntil(\n sentryRequest.type,\n )} due to too many requests.`,\n status: 429,\n });\n }\n\n const options: RequestInit = {\n body: sentryRequest.body,\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: (supportsReferrerPolicy() ? 'origin' : '') as ReferrerPolicy,\n };\n if (this.options.fetchParameters !== undefined) {\n Object.assign(options, this.options.fetchParameters);\n }\n if (this.options.headers !== undefined) {\n options.headers = this.options.headers;\n }\n\n return this._buffer\n .add(\n () =>\n new SyncPromise((resolve, reject) => {\n void this._fetch(sentryRequest.url, options)\n .then(response => {\n const headers = {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n };\n this._handleResponse({\n requestType: sentryRequest.type,\n response,\n headers,\n resolve,\n reject,\n });\n })\n .catch(reject);\n }),\n )\n .then(undefined, reason => {\n // It's either buffer rejection or any other xhr/fetch error, which are treated as NetworkError.\n if (reason instanceof SentryError) {\n this.recordLostEvent('queue_overflow', sentryRequest.type);\n } else {\n this.recordLostEvent('network_error', sentryRequest.type);\n }\n throw reason;\n });\n }\n}\n","import { Event, Response, SentryRequest, Session } from '@sentry/types';\nimport { SentryError, SyncPromise } from '@sentry/utils';\n\nimport { BaseTransport } from './base';\n\n/** `XHR` based transport */\nexport class XHRTransport extends BaseTransport {\n /**\n * @param sentryRequest Prepared SentryRequest to be delivered\n * @param originalPayload Original payload used to create SentryRequest\n */\n protected _sendRequest(sentryRequest: SentryRequest, originalPayload: Event | Session): PromiseLike {\n // eslint-disable-next-line deprecation/deprecation\n if (this._isRateLimited(sentryRequest.type)) {\n this.recordLostEvent('ratelimit_backoff', sentryRequest.type);\n\n return Promise.reject({\n event: originalPayload,\n type: sentryRequest.type,\n // eslint-disable-next-line deprecation/deprecation\n reason: `Transport for ${sentryRequest.type} requests locked till ${this._disabledUntil(\n sentryRequest.type,\n )} due to too many requests.`,\n status: 429,\n });\n }\n\n return this._buffer\n .add(\n () =>\n new SyncPromise((resolve, reject) => {\n const request = new XMLHttpRequest();\n\n request.onreadystatechange = (): void => {\n if (request.readyState === 4) {\n const headers = {\n 'x-sentry-rate-limits': request.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': request.getResponseHeader('Retry-After'),\n };\n this._handleResponse({ requestType: sentryRequest.type, response: request, headers, resolve, reject });\n }\n };\n\n request.open('POST', sentryRequest.url);\n for (const header in this.options.headers) {\n if (Object.prototype.hasOwnProperty.call(this.options.headers, header)) {\n request.setRequestHeader(header, this.options.headers[header]);\n }\n }\n request.send(sentryRequest.body);\n }),\n )\n .then(undefined, reason => {\n // It's either buffer rejection or any other xhr/fetch error, which are treated as NetworkError.\n if (reason instanceof SentryError) {\n this.recordLostEvent('queue_overflow', sentryRequest.type);\n } else {\n this.recordLostEvent('network_error', sentryRequest.type);\n }\n throw reason;\n });\n }\n}\n","import { BaseBackend, getEnvelopeEndpointWithUrlEncodedAuth, initAPIDetails } from '@sentry/core';\nimport { Event, EventHint, Options, Severity, Transport, TransportOptions } from '@sentry/types';\nimport { supportsFetch } from '@sentry/utils';\n\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { FetchTransport, makeNewFetchTransport, makeNewXHRTransport, XHRTransport } from './transports';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see BrowserClient for more information.\n */\nexport interface BrowserOptions extends Options {\n /**\n * A pattern for error URLs which should exclusively be sent to Sentry.\n * This is the opposite of {@link Options.denyUrls}.\n * By default, all errors will be sent.\n */\n allowUrls?: Array;\n\n /**\n * A pattern for error URLs which should not be sent to Sentry.\n * To allow certain errors instead, use {@link Options.allowUrls}.\n * By default, all errors will be sent.\n */\n denyUrls?: Array;\n\n /** @deprecated use {@link Options.allowUrls} instead. */\n whitelistUrls?: Array;\n\n /** @deprecated use {@link Options.denyUrls} instead. */\n blacklistUrls?: Array;\n}\n\n/**\n * The Sentry Browser SDK Backend.\n * @hidden\n */\nexport class BrowserBackend extends BaseBackend {\n /**\n * @inheritDoc\n */\n public eventFromException(exception: unknown, hint?: EventHint): PromiseLike {\n return eventFromException(exception, hint, this._options.attachStacktrace);\n }\n /**\n * @inheritDoc\n */\n public eventFromMessage(message: string, level: Severity = Severity.Info, hint?: EventHint): PromiseLike {\n return eventFromMessage(message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n protected _setupTransport(): Transport {\n if (!this._options.dsn) {\n // We return the noop transport here in case there is no Dsn.\n return super._setupTransport();\n }\n\n const transportOptions: TransportOptions = {\n ...this._options.transportOptions,\n dsn: this._options.dsn,\n tunnel: this._options.tunnel,\n sendClientReports: this._options.sendClientReports,\n _metadata: this._options._metadata,\n };\n\n const api = initAPIDetails(transportOptions.dsn, transportOptions._metadata, transportOptions.tunnel);\n const url = getEnvelopeEndpointWithUrlEncodedAuth(api.dsn, api.tunnel);\n\n if (this._options.transport) {\n return new this._options.transport(transportOptions);\n }\n if (supportsFetch()) {\n const requestOptions: RequestInit = { ...transportOptions.fetchParameters };\n this._newTransport = makeNewFetchTransport({ requestOptions, url });\n return new FetchTransport(transportOptions);\n }\n\n this._newTransport = makeNewXHRTransport({\n url,\n headers: transportOptions.headers,\n });\n return new XHRTransport(transportOptions);\n }\n}\n","import {\n BaseTransportOptions,\n createTransport,\n NewTransport,\n TransportMakeRequestResponse,\n TransportRequest,\n} from '@sentry/core';\n\nimport { FetchImpl, getNativeFetchImplementation } from './utils';\n\nexport interface FetchTransportOptions extends BaseTransportOptions {\n requestOptions?: RequestInit;\n}\n\n/**\n * Creates a Transport that uses the Fetch API to send events to Sentry.\n */\nexport function makeNewFetchTransport(\n options: FetchTransportOptions,\n nativeFetch: FetchImpl = getNativeFetchImplementation(),\n): NewTransport {\n function makeRequest(request: TransportRequest): PromiseLike {\n const requestOptions: RequestInit = {\n body: request.body,\n method: 'POST',\n referrerPolicy: 'origin',\n ...options.requestOptions,\n };\n\n return nativeFetch(options.url, requestOptions).then(response => {\n return response.text().then(body => ({\n body,\n headers: {\n 'x-sentry-rate-limits': response.headers.get('X-Sentry-Rate-Limits'),\n 'retry-after': response.headers.get('Retry-After'),\n },\n reason: response.statusText,\n statusCode: response.status,\n }));\n });\n }\n\n return createTransport({ bufferSize: options.bufferSize }, makeRequest);\n}\n","import {\n BaseTransportOptions,\n createTransport,\n NewTransport,\n TransportMakeRequestResponse,\n TransportRequest,\n} from '@sentry/core';\nimport { SyncPromise } from '@sentry/utils';\n\n/**\n * The DONE ready state for XmlHttpRequest\n *\n * Defining it here as a constant b/c XMLHttpRequest.DONE is not always defined\n * (e.g. during testing, it is `undefined`)\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState}\n */\nconst XHR_READYSTATE_DONE = 4;\n\nexport interface XHRTransportOptions extends BaseTransportOptions {\n headers?: { [key: string]: string };\n}\n\n/**\n * Creates a Transport that uses the XMLHttpRequest API to send events to Sentry.\n */\nexport function makeNewXHRTransport(options: XHRTransportOptions): NewTransport {\n function makeRequest(request: TransportRequest): PromiseLike {\n return new SyncPromise((resolve, _reject) => {\n const xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = (): void => {\n if (xhr.readyState === XHR_READYSTATE_DONE) {\n const response = {\n body: xhr.response,\n headers: {\n 'x-sentry-rate-limits': xhr.getResponseHeader('X-Sentry-Rate-Limits'),\n 'retry-after': xhr.getResponseHeader('Retry-After'),\n },\n reason: xhr.statusText,\n statusCode: xhr.status,\n };\n resolve(response);\n }\n };\n\n xhr.open('POST', options.url);\n\n for (const header in options.headers) {\n if (Object.prototype.hasOwnProperty.call(options.headers, header)) {\n xhr.setRequestHeader(header, options.headers[header]);\n }\n }\n\n xhr.send(request.body);\n });\n }\n\n return createTransport({ bufferSize: options.bufferSize }, makeRequest);\n}\n","import { getCurrentHub, Hub, Scope } from '@sentry/hub';\nimport {\n Breadcrumb,\n CaptureContext,\n CustomSamplingContext,\n Event,\n Extra,\n Extras,\n Primitive,\n Severity,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\n\n/**\n * This calls a function on the current hub.\n * @param method function to call on hub.\n * @param args to pass to function.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction callOnHub(method: string, ...args: any[]): T {\n const hub = getCurrentHub();\n if (hub && hub[method as keyof Hub]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (hub[method as keyof Hub] as any)(...args);\n }\n throw new Error(`No hub defined or ${method} was not found on the hub, please open a bug report.`);\n}\n\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function captureException(exception: any, captureContext?: CaptureContext): string {\n const syntheticException = new Error('Sentry syntheticException');\n\n return callOnHub('captureException', exception, {\n captureContext,\n originalException: exception,\n syntheticException,\n });\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nexport function captureMessage(message: string, captureContext?: CaptureContext | Severity): string {\n const syntheticException = new Error(message);\n\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n\n return callOnHub('captureMessage', message, level, {\n originalException: message,\n syntheticException,\n ...context,\n });\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nexport function captureEvent(event: Event): string {\n return callOnHub('captureEvent', event);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nexport function configureScope(callback: (scope: Scope) => void): void {\n callOnHub('configureScope', callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nexport function addBreadcrumb(breadcrumb: Breadcrumb): void {\n callOnHub('addBreadcrumb', breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setContext(name: string, context: { [key: string]: any } | null): void {\n callOnHub('setContext', name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nexport function setExtras(extras: Extras): void {\n callOnHub('setExtras', extras);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nexport function setTags(tags: { [key: string]: Primitive }): void {\n callOnHub('setTags', tags);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nexport function setExtra(key: string, extra: Extra): void {\n callOnHub('setExtra', key, extra);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nexport function setTag(key: string, value: Primitive): void {\n callOnHub('setTag', key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nexport function setUser(user: User | null): void {\n callOnHub('setUser', user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nexport function withScope(callback: (scope: Scope) => void): void {\n callOnHub('withScope', callback);\n}\n\n/**\n * Calls a function on the latest client. Use this with caution, it's meant as\n * in \"internal\" helper so we don't need to expose every possible function in\n * the shim. It is not guaranteed that the client actually implements the\n * function.\n *\n * @param method The method to call on the client/client.\n * @param args Arguments to pass to the client/fontend.\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _callOnClient(method: string, ...args: any[]): void {\n callOnHub('_invokeClient', method, ...args);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nexport function startTransaction(\n context: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): Transaction {\n return callOnHub('startTransaction', { ...context }, customSamplingContext);\n}\n","import { captureException, getReportDialogEndpoint, withScope } from '@sentry/core';\nimport { DsnLike, Event as SentryEvent, Mechanism, Scope, WrappedFunction } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n addNonEnumerableProperty,\n getGlobalObject,\n getOriginalFunction,\n logger,\n markFunctionWrapped,\n} from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\n\nconst global = getGlobalObject();\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(() => {\n ignoreOnError -= 1;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n fn: WrappedFunction,\n options: {\n mechanism?: Mechanism;\n } = {},\n before?: WrappedFunction,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n /* eslint-disable prefer-rest-params */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const sentryWrapped: WrappedFunction = function (this: any): void {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope: Scope) => {\n scope.addEventProcessor((event: SentryEvent) => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get(): string {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\n/**\n * All properties the report dialog supports\n */\nexport interface ReportDialogOptions {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(): void;\n}\n\n/**\n * Injects the Report Dialog script\n * @hidden\n */\nexport function injectReportDialog(options: ReportDialogOptions = {}): void {\n if (!global.document) {\n return;\n }\n\n if (!options.eventId) {\n IS_DEBUG_BUILD && logger.error('Missing eventId option in showReportDialog call');\n return;\n }\n\n if (!options.dsn) {\n IS_DEBUG_BUILD && logger.error('Missing dsn option in showReportDialog call');\n return;\n }\n\n const script = global.document.createElement('script');\n script.async = true;\n script.src = getReportDialogEndpoint(options.dsn, options);\n\n if (options.onLoad) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n script.onload = options.onLoad;\n }\n\n const injectionPoint = global.document.head || global.document.body;\n\n if (injectionPoint) {\n injectionPoint.appendChild(script);\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable max-lines */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, Integration, Severity } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n getEventDescription,\n getGlobalObject,\n htmlTreeAsString,\n parseUrl,\n safeJoin,\n severityFromString,\n} from '@sentry/utils';\n\n/** JSDoc */\ninterface BreadcrumbsOptions {\n console: boolean;\n dom: boolean | { serializeAttribute: string | string[] };\n fetch: boolean;\n history: boolean;\n sentry: boolean;\n xhr: boolean;\n}\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nexport class Breadcrumbs implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Breadcrumbs';\n\n /**\n * @inheritDoc\n */\n public name: string = Breadcrumbs.id;\n\n /** JSDoc */\n private readonly _options: BreadcrumbsOptions;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this._options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Create a breadcrumb of `sentry` from the events themselves\n */\n public addSentryBreadcrumb(event: Event): void {\n if (!this._options.sentry) {\n return;\n }\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n public setupOnce(): void {\n if (this._options.console) {\n addInstrumentationHandler('console', _consoleBreadcrumb);\n }\n if (this._options.dom) {\n addInstrumentationHandler('dom', _domBreadcrumb(this._options.dom));\n }\n if (this._options.xhr) {\n addInstrumentationHandler('xhr', _xhrBreadcrumb);\n }\n if (this._options.fetch) {\n addInstrumentationHandler('fetch', _fetchBreadcrumb);\n }\n if (this._options.history) {\n addInstrumentationHandler('history', _historyBreadcrumb);\n }\n }\n}\n\n/**\n * A HOC that creaes a function that creates breadcrumbs from DOM API calls.\n * This is a HOC so that we get access to dom options in the closure.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _domBreadcrumb(dom: BreadcrumbsOptions['dom']): (handlerData: { [key: string]: any }) => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function _innerDomBreadcrumb(handlerData: { [key: string]: any }): void {\n let target;\n let keyAttrs = typeof dom === 'object' ? dom.serializeAttribute : undefined;\n\n if (typeof keyAttrs === 'string') {\n keyAttrs = [keyAttrs];\n }\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target as Node, keyAttrs)\n : htmlTreeAsString(handlerData.event as unknown as Node, keyAttrs);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n global: handlerData.global,\n },\n );\n }\n\n return _innerDomBreadcrumb;\n}\n\n/**\n * Creates breadcrumbs from console API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _consoleBreadcrumb(handlerData: { [key: string]: any }): void {\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: severityFromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n}\n\n/**\n * Creates breadcrumbs from XHR API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _xhrBreadcrumb(handlerData: { [key: string]: any }): void {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n\n const { method, url, status_code, body } = handlerData.xhr.__sentry_xhr__ || {};\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data: {\n method,\n url,\n status_code,\n },\n type: 'http',\n },\n {\n xhr: handlerData.xhr,\n input: body,\n },\n );\n\n return;\n }\n}\n\n/**\n * Creates breadcrumbs from fetch API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _fetchBreadcrumb(handlerData: { [key: string]: any }): void {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: handlerData.fetchData,\n level: Severity.Error,\n type: 'http',\n },\n {\n data: handlerData.error,\n input: handlerData.args,\n },\n );\n } else {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n type: 'http',\n },\n {\n input: handlerData.args,\n response: handlerData.response,\n },\n );\n }\n}\n\n/**\n * Creates breadcrumbs from history API calls\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _historyBreadcrumb(handlerData: { [key: string]: any }): void {\n const global = getGlobalObject();\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(global.location.href);\n let parsedFrom = parseUrl(from);\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n}\n","import { BaseClient, Scope, SDK_VERSION } from '@sentry/core';\nimport { Event, EventHint } from '@sentry/types';\nimport { getGlobalObject, logger } from '@sentry/utils';\n\nimport { BrowserBackend, BrowserOptions } from './backend';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { injectReportDialog, ReportDialogOptions } from './helpers';\nimport { Breadcrumbs } from './integrations';\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BrowserOptions = {}) {\n options._metadata = options._metadata || {};\n options._metadata.sdk = options._metadata.sdk || {\n name: 'sentry.javascript.browser',\n packages: [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n super(BrowserBackend, options);\n }\n\n /**\n * Show a report dialog to the user to send feedback to a specific event.\n *\n * @param options Set individual options for the dialog\n */\n public showReportDialog(options: ReportDialogOptions = {}): void {\n // doesn't work without a document (React Native)\n const document = getGlobalObject().document;\n if (!document) {\n return;\n }\n\n if (!this._isEnabled()) {\n IS_DEBUG_BUILD && logger.error('Trying to call showReportDialog with Sentry Client disabled');\n return;\n }\n\n injectReportDialog({\n ...options,\n dsn: options.dsn || this.getDsn(),\n });\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, scope, hint);\n }\n\n /**\n * @inheritDoc\n */\n protected _sendEvent(event: Event): void {\n const integration = this.getIntegration(Breadcrumbs);\n if (integration) {\n integration.addSentryBreadcrumb(event);\n }\n super._sendEvent(event);\n }\n}\n","import { Integration, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getGlobalObject, getOriginalFunction } from '@sentry/utils';\n\nimport { wrap } from '../helpers';\n\nconst DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\n/** JSDoc */\ninterface TryCatchOptions {\n setTimeout: boolean;\n setInterval: boolean;\n requestAnimationFrame: boolean;\n XMLHttpRequest: boolean;\n eventTarget: boolean | string[];\n}\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nexport class TryCatch implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'TryCatch';\n\n /**\n * @inheritDoc\n */\n public name: string = TryCatch.id;\n\n /** JSDoc */\n private readonly _options: TryCatchOptions;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: Partial) {\n this._options = {\n XMLHttpRequest: true,\n eventTarget: true,\n requestAnimationFrame: true,\n setInterval: true,\n setTimeout: true,\n ...options,\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n public setupOnce(): void {\n const global = getGlobalObject();\n\n if (this._options.setTimeout) {\n fill(global, 'setTimeout', _wrapTimeFunction);\n }\n\n if (this._options.setInterval) {\n fill(global, 'setInterval', _wrapTimeFunction);\n }\n\n if (this._options.requestAnimationFrame) {\n fill(global, 'requestAnimationFrame', _wrapRAF);\n }\n\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', _wrapXHR);\n }\n\n const eventTargetOption = this._options.eventTarget;\n if (eventTargetOption) {\n const eventTarget = Array.isArray(eventTargetOption) ? eventTargetOption : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(_wrapEventTarget);\n }\n }\n}\n\n/** JSDoc */\nfunction _wrapTimeFunction(original: () => void): () => number {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, ...args: any[]): number {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _wrapRAF(original: any): (callback: () => void) => any {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: any, callback: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.apply(this, [\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n ]);\n };\n}\n\n/** JSDoc */\nfunction _wrapXHR(originalSend: () => void): () => void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (this: XMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original: WrappedFunction): () => any {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n const originalFunction = getOriginalFunction(original);\n if (originalFunction) {\n wrapOptions.mechanism.data.handler = getFunctionName(originalFunction);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n}\n\n/** JSDoc */\nfunction _wrapEventTarget(target: string): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const global = getGlobalObject() as { [key: string]: any };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = global[target] && global[target].prototype;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (original: () => void): (\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n try {\n if (typeof fn.handleEvent === 'function') {\n fn.handleEvent = wrap(fn.handleEvent.bind(fn), {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.apply(this, [\n eventName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn as any as WrappedFunction, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n ]);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (\n originalRemoveEventListener: () => void,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n return function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n const wrappedEventHandler = fn as unknown as WrappedFunction;\n try {\n const originalEventHandler = wrappedEventHandler && wrappedEventHandler.__sentry_wrapped__;\n if (originalEventHandler) {\n originalRemoveEventListener.call(this, eventName, originalEventHandler, options);\n }\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return originalRemoveEventListener.call(this, eventName, wrappedEventHandler, options);\n };\n },\n );\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Hub, Integration, Primitive, Severity } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { shouldIgnoreOnError } from '../helpers';\n\ntype GlobalHandlersIntegrationsOptionKeys = 'onerror' | 'onunhandledrejection';\n\n/** JSDoc */\ntype GlobalHandlersIntegrations = Record;\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'GlobalHandlers';\n\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /**\n * Stores references functions to installing handlers. Will set to undefined\n * after they have been run so that they are not used twice.\n */\n private _installFunc: Record void) | undefined> = {\n onerror: _installGlobalOnErrorHandler,\n onunhandledrejection: _installGlobalOnUnhandledRejectionHandler,\n };\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n const options = this._options;\n\n // We can disable guard-for-in as we construct the options object above + do checks against\n // `this._installFunc` for the property.\n // eslint-disable-next-line guard-for-in\n for (const key in options) {\n const installFunc = this._installFunc[key as GlobalHandlersIntegrationsOptionKeys];\n if (installFunc && options[key as GlobalHandlersIntegrationsOptionKeys]) {\n globalHandlerLog(key);\n installFunc();\n this._installFunc[key as GlobalHandlersIntegrationsOptionKeys] = undefined;\n }\n }\n }\n}\n\n/** JSDoc */\nfunction _installGlobalOnErrorHandler(): void {\n addInstrumentationHandler(\n 'error',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (data: { msg: any; url: any; line: any; column: any; error: any }) => {\n const [hub, attachStacktrace] = getHubAndAttachStacktrace();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n const { msg, url, line, column, error } = data;\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return;\n }\n\n const event =\n error === undefined && isString(msg)\n ? _eventFromIncompleteOnError(msg, url, line, column)\n : _enhanceEventWithInitialFrame(\n eventFromUnknownInput(error || msg, undefined, attachStacktrace, false),\n url,\n line,\n column,\n );\n\n event.level = Severity.Error;\n\n addMechanismAndCapture(hub, error, event, 'onerror');\n },\n );\n}\n\n/** JSDoc */\nfunction _installGlobalOnUnhandledRejectionHandler(): void {\n addInstrumentationHandler(\n 'unhandledrejection',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (e: any) => {\n const [hub, attachStacktrace] = getHubAndAttachStacktrace();\n if (!hub.getIntegration(GlobalHandlers)) {\n return;\n }\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n if (shouldIgnoreOnError() || (error && error.__sentry_own_request__)) {\n return true;\n }\n\n const event = isPrimitive(error)\n ? _eventFromRejectionWithPrimitive(error)\n : eventFromUnknownInput(error, undefined, attachStacktrace, true);\n\n event.level = Severity.Error;\n\n addMechanismAndCapture(hub, error, event, 'onunhandledrejection');\n return;\n },\n );\n}\n\n/**\n * Create an event from a promise rejection where the `reason` is a primitive.\n *\n * @param reason: The `reason` property of the promise rejection\n * @returns An Event object with an appropriate `exception` value\n */\nfunction _eventFromRejectionWithPrimitive(reason: Primitive): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n // String() is needed because the Primitive type includes symbols (which can't be automatically stringified)\n value: `Non-Error promise rejection captured with value: ${String(reason)}`,\n },\n ],\n },\n };\n}\n\n/**\n * This function creates a stack from an old, error-less onerror handler.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE =\n /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name = 'Error';\n\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name,\n value: message,\n },\n ],\n },\n };\n\n return _enhanceEventWithInitialFrame(event, url, line, column);\n}\n\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n // event.exception\n const e = (event.exception = event.exception || {});\n // event.exception.values\n const ev = (e.values = e.values || []);\n // event.exception.values[0]\n const ev0 = (ev[0] = ev[0] || {});\n // event.exception.values[0].stacktrace\n const ev0s = (ev0.stacktrace = ev0.stacktrace || {});\n // event.exception.values[0].stacktrace.frames\n const ev0sf = (ev0s.frames = ev0s.frames || []);\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n // event.exception.values[0].stacktrace.frames\n if (ev0sf.length === 0) {\n ev0sf.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n}\n\nfunction globalHandlerLog(type: string): void {\n IS_DEBUG_BUILD && logger.log(`Global Handler attached: ${type}`);\n}\n\nfunction addMechanismAndCapture(hub: Hub, error: EventHint['originalException'], event: Event, type: string): void {\n addExceptionMechanism(event, {\n handled: false,\n type,\n });\n hub.captureEvent(event, {\n originalException: error,\n });\n}\n\nfunction getHubAndAttachStacktrace(): [Hub, boolean | undefined] {\n const hub = getCurrentHub();\n const client = hub.getClient();\n const attachStacktrace = client && client.getOptions().attachStacktrace;\n return [hub, attachStacktrace];\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Exception, ExtendedError, Integration } from '@sentry/types';\nimport { isInstanceOf } from '@sentry/utils';\n\nimport { exceptionFromError } from '../eventbuilder';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\ninterface LinkedErrorsOptions {\n key: string;\n limit: number;\n}\n\n/** Adds SDK info to an event. */\nexport class LinkedErrors implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'LinkedErrors';\n\n /**\n * @inheritDoc\n */\n public readonly name: string = LinkedErrors.id;\n\n /**\n * @inheritDoc\n */\n private readonly _key: LinkedErrorsOptions['key'];\n\n /**\n * @inheritDoc\n */\n private readonly _limit: LinkedErrorsOptions['limit'];\n\n /**\n * @inheritDoc\n */\n public constructor(options: Partial = {}) {\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event, hint?: EventHint) => {\n const self = getCurrentHub().getIntegration(LinkedErrors);\n return self ? _handler(self._key, self._limit, event, hint) : event;\n });\n }\n}\n\n/**\n * @inheritDoc\n */\nexport function _handler(key: string, limit: number, event: Event, hint?: EventHint): Event | null {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n const linkedErrors = _walkErrorTree(limit, hint.originalException as ExtendedError, key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n}\n\n/**\n * JSDOC\n */\nexport function _walkErrorTree(limit: number, error: ExtendedError, key: string, stack: Exception[] = []): Exception[] {\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= limit) {\n return stack;\n }\n const exception = exceptionFromError(error[key]);\n return _walkErrorTree(limit, error[key], key, [exception, ...stack]);\n}\n","import { Event, EventProcessor, Exception, Hub, Integration, StackFrame } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../flags';\n\n/** Deduplication filter */\nexport class Dedupe implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'Dedupe';\n\n /**\n * @inheritDoc\n */\n public name: string = Dedupe.id;\n\n /**\n * @inheritDoc\n */\n private _previousEvent?: Event;\n\n /**\n * @inheritDoc\n */\n public setupOnce(addGlobalEventProcessor: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n addGlobalEventProcessor((currentEvent: Event) => {\n const self = getCurrentHub().getIntegration(Dedupe);\n if (self) {\n // Juuust in case something goes wrong\n try {\n if (_shouldDropEvent(currentEvent, self._previousEvent)) {\n IS_DEBUG_BUILD && logger.warn('Event dropped due to being a duplicate of previously captured event.');\n return null;\n }\n } catch (_oO) {\n return (self._previousEvent = currentEvent);\n }\n\n return (self._previousEvent = currentEvent);\n }\n return currentEvent;\n });\n }\n}\n\n/** JSDoc */\nfunction _shouldDropEvent(currentEvent: Event, previousEvent?: Event): boolean {\n if (!previousEvent) {\n return false;\n }\n\n if (_isSameMessageEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n if (_isSameExceptionEvent(currentEvent, previousEvent)) {\n return true;\n }\n\n return false;\n}\n\n/** JSDoc */\nfunction _isSameMessageEvent(currentEvent: Event, previousEvent: Event): boolean {\n const currentMessage = currentEvent.message;\n const previousMessage = previousEvent.message;\n\n // If neither event has a message property, they were both exceptions, so bail out\n if (!currentMessage && !previousMessage) {\n return false;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentMessage && !previousMessage) || (!currentMessage && previousMessage)) {\n return false;\n }\n\n if (currentMessage !== previousMessage) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameExceptionEvent(currentEvent: Event, previousEvent: Event): boolean {\n const previousException = _getExceptionFromEvent(previousEvent);\n const currentException = _getExceptionFromEvent(currentEvent);\n\n if (!previousException || !currentException) {\n return false;\n }\n\n if (previousException.type !== currentException.type || previousException.value !== currentException.value) {\n return false;\n }\n\n if (!_isSameFingerprint(currentEvent, previousEvent)) {\n return false;\n }\n\n if (!_isSameStacktrace(currentEvent, previousEvent)) {\n return false;\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameStacktrace(currentEvent: Event, previousEvent: Event): boolean {\n let currentFrames = _getFramesFromEvent(currentEvent);\n let previousFrames = _getFramesFromEvent(previousEvent);\n\n // If neither event has a stacktrace, they are assumed to be the same\n if (!currentFrames && !previousFrames) {\n return true;\n }\n\n // If only one event has a stacktrace, but not the other one, they are not the same\n if ((currentFrames && !previousFrames) || (!currentFrames && previousFrames)) {\n return false;\n }\n\n currentFrames = currentFrames as StackFrame[];\n previousFrames = previousFrames as StackFrame[];\n\n // If number of frames differ, they are not the same\n if (previousFrames.length !== currentFrames.length) {\n return false;\n }\n\n // Otherwise, compare the two\n for (let i = 0; i < previousFrames.length; i++) {\n const frameA = previousFrames[i];\n const frameB = currentFrames[i];\n\n if (\n frameA.filename !== frameB.filename ||\n frameA.lineno !== frameB.lineno ||\n frameA.colno !== frameB.colno ||\n frameA.function !== frameB.function\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/** JSDoc */\nfunction _isSameFingerprint(currentEvent: Event, previousEvent: Event): boolean {\n let currentFingerprint = currentEvent.fingerprint;\n let previousFingerprint = previousEvent.fingerprint;\n\n // If neither event has a fingerprint, they are assumed to be the same\n if (!currentFingerprint && !previousFingerprint) {\n return true;\n }\n\n // If only one event has a fingerprint, but not the other one, they are not the same\n if ((currentFingerprint && !previousFingerprint) || (!currentFingerprint && previousFingerprint)) {\n return false;\n }\n\n currentFingerprint = currentFingerprint as string[];\n previousFingerprint = previousFingerprint as string[];\n\n // Otherwise, compare the two\n try {\n return !!(currentFingerprint.join('') === previousFingerprint.join(''));\n } catch (_oO) {\n return false;\n }\n}\n\n/** JSDoc */\nfunction _getExceptionFromEvent(event: Event): Exception | undefined {\n return event.exception && event.exception.values && event.exception.values[0];\n}\n\n/** JSDoc */\nfunction _getFramesFromEvent(event: Event): StackFrame[] | undefined {\n const exception = event.exception;\n\n if (exception) {\n try {\n // @ts-ignore Object could be undefined\n return exception.values[0].stacktrace.frames;\n } catch (_oO) {\n return undefined;\n }\n } else if (event.stacktrace) {\n return event.stacktrace.frames;\n }\n return undefined;\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, Integration } from '@sentry/types';\nimport { getGlobalObject } from '@sentry/utils';\n\nconst global = getGlobalObject();\n\n/** UserAgent */\nexport class UserAgent implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'UserAgent';\n\n /**\n * @inheritDoc\n */\n public name: string = UserAgent.id;\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n if (getCurrentHub().getIntegration(UserAgent)) {\n // if none of the information we want exists, don't bother\n if (!global.navigator && !global.location && !global.document) {\n return event;\n }\n\n // grab as much info as exists and add it to the event\n const url = (event.request && event.request.url) || (global.location && global.location.href);\n const { referrer } = global.document || {};\n const { userAgent } = global.navigator || {};\n\n const headers = {\n ...(event.request && event.request.headers),\n ...(referrer && { Referer: referrer }),\n ...(userAgent && { 'User-Agent': userAgent }),\n };\n const request = { ...(url && { url }), headers };\n\n return { ...event, request };\n }\n return event;\n });\n }\n}\n","import { getCurrentHub, initAndBind, Integrations as CoreIntegrations } from '@sentry/core';\nimport { Hub } from '@sentry/types';\nimport { addInstrumentationHandler, getGlobalObject, logger, resolvedSyncPromise } from '@sentry/utils';\n\nimport { BrowserOptions } from './backend';\nimport { BrowserClient } from './client';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { ReportDialogOptions, wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, Dedupe, GlobalHandlers, LinkedErrors, TryCatch, UserAgent } from './integrations';\n\nexport const defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new Dedupe(),\n new UserAgent(),\n];\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options: BrowserOptions = {}): void {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n const window = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window.SENTRY_RELEASE && window.SENTRY_RELEASE.id) {\n options.release = window.SENTRY_RELEASE.id;\n }\n }\n if (options.autoSessionTracking === undefined) {\n options.autoSessionTracking = true;\n }\n if (options.sendClientReports === undefined) {\n options.sendClientReports = true;\n }\n\n initAndBind(BrowserClient, options);\n\n if (options.autoSessionTracking) {\n startSessionTracking();\n }\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options: ReportDialogOptions = {}): void {\n const hub = getCurrentHub();\n const scope = hub.getScope();\n if (scope) {\n options.user = {\n ...scope.getUser(),\n ...options.user,\n };\n }\n\n if (!options.eventId) {\n options.eventId = hub.lastEventId();\n }\n const client = hub.getClient();\n if (client) {\n client.showReportDialog(options);\n }\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad(): void {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback: () => void): void {\n callback();\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function flush(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n IS_DEBUG_BUILD && logger.warn('Cannot flush events. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nexport function close(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n IS_DEBUG_BUILD && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return resolvedSyncPromise(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn: (...args: any) => any): any {\n return internalWrap(fn)();\n}\n\nfunction startSessionOnHub(hub: Hub): void {\n hub.startSession({ ignoreDuration: true });\n hub.captureSession();\n}\n\n/**\n * Enable automatic Session Tracking for the initial page load.\n */\nfunction startSessionTracking(): void {\n const window = getGlobalObject();\n const document = window.document;\n\n if (typeof document === 'undefined') {\n IS_DEBUG_BUILD && logger.warn('Session tracking in non-browser environment with @sentry/browser is not supported.');\n return;\n }\n\n const hub = getCurrentHub();\n\n // The only way for this to be false is for there to be a version mismatch between @sentry/browser (>= 6.0.0) and\n // @sentry/hub (< 5.27.0). In the simple case, there won't ever be such a mismatch, because the two packages are\n // pinned at the same version in package.json, but there are edge cases where it's possible. See\n // https://github.com/getsentry/sentry-javascript/issues/3207 and\n // https://github.com/getsentry/sentry-javascript/issues/3234 and\n // https://github.com/getsentry/sentry-javascript/issues/3278.\n if (!hub.captureSession) {\n return;\n }\n\n // The session duration for browser sessions does not track a meaningful\n // concept that can be used as a metric.\n // Automatically captured sessions are akin to page views, and thus we\n // discard their duration.\n startSessionOnHub(hub);\n\n // We want to create a session for every navigation as well\n addInstrumentationHandler('history', ({ from, to }) => {\n // Don't create an additional session for the initial route or if the location did not change\n if (!(from === undefined || from === to)) {\n startSessionOnHub(getCurrentHub());\n }\n });\n}\n","import { getCurrentHub } from '@sentry/hub';\nimport { Client, Options } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\n\n/** A class object that can instantiate Client objects. */\nexport type ClientClass = new (options: O) => F;\n\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instantiate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(clientClass: ClientClass, options: O): void {\n if (options.debug === true) {\n if (IS_DEBUG_BUILD) {\n logger.enable();\n } else {\n // use `console.warn` rather than `logger.warn` since by non-debug bundles have all `logger.x` statements stripped\n // eslint-disable-next-line no-console\n console.warn('[Sentry] Cannot initialize SDK with `debug` option using a non-debug bundle.');\n }\n }\n const hub = getCurrentHub();\n const scope = hub.getScope();\n if (scope) {\n scope.update(options.initialScope);\n }\n const client = new clientClass(options);\n hub.bindClient(client);\n}\n","import { Session as SessionInterface, SessionContext, SessionStatus } from '@sentry/types';\nimport { dropUndefinedKeys, timestampInSeconds, uuid4 } from '@sentry/utils';\n\n/**\n * @inheritdoc\n */\nexport class Session implements SessionInterface {\n public userAgent?: string;\n public errors: number = 0;\n public release?: string;\n public sid: string = uuid4();\n public did?: string;\n public timestamp: number;\n public started: number;\n public duration?: number = 0;\n public status: SessionStatus = 'ok';\n public environment?: string;\n public ipAddress?: string;\n public init: boolean = true;\n public ignoreDuration: boolean = false;\n\n public constructor(context?: Omit) {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n this.timestamp = startingTime;\n this.started = startingTime;\n if (context) {\n this.update(context);\n }\n }\n\n /** JSDoc */\n // eslint-disable-next-line complexity\n public update(context: SessionContext = {}): void {\n if (context.user) {\n if (!this.ipAddress && context.user.ip_address) {\n this.ipAddress = context.user.ip_address;\n }\n\n if (!this.did && !context.did) {\n this.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n this.timestamp = context.timestamp || timestampInSeconds();\n if (context.ignoreDuration) {\n this.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n this.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n this.init = context.init;\n }\n if (!this.did && context.did) {\n this.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n this.started = context.started;\n }\n if (this.ignoreDuration) {\n this.duration = undefined;\n } else if (typeof context.duration === 'number') {\n this.duration = context.duration;\n } else {\n const duration = this.timestamp - this.started;\n this.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n this.release = context.release;\n }\n if (context.environment) {\n this.environment = context.environment;\n }\n if (!this.ipAddress && context.ipAddress) {\n this.ipAddress = context.ipAddress;\n }\n if (!this.userAgent && context.userAgent) {\n this.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n this.errors = context.errors;\n }\n if (context.status) {\n this.status = context.status;\n }\n }\n\n /** JSDoc */\n public close(status?: Exclude): void {\n if (status) {\n this.update({ status });\n } else if (this.status === 'ok') {\n this.update({ status: 'exited' });\n } else {\n this.update();\n }\n }\n\n /** JSDoc */\n public toJSON(): {\n init: boolean;\n sid: string;\n did?: string;\n timestamp: string;\n started: string;\n duration?: number;\n status: SessionStatus;\n errors: number;\n attrs?: {\n release?: string;\n environment?: string;\n user_agent?: string;\n ip_address?: string;\n };\n } {\n return dropUndefinedKeys({\n sid: `${this.sid}`,\n init: this.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(this.started * 1000).toISOString(),\n timestamp: new Date(this.timestamp * 1000).toISOString(),\n status: this.status,\n errors: this.errors,\n did: typeof this.did === 'number' || typeof this.did === 'string' ? `${this.did}` : undefined,\n duration: this.duration,\n attrs: {\n release: this.release,\n environment: this.environment,\n ip_address: this.ipAddress,\n user_agent: this.userAgent,\n },\n });\n }\n}\n","/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n CustomSamplingContext,\n Event,\n EventHint,\n Extra,\n Extras,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Primitive,\n SessionContext,\n Severity,\n Span,\n SpanContext,\n Transaction,\n TransactionContext,\n User,\n} from '@sentry/types';\nimport {\n consoleSandbox,\n dateTimestampInSeconds,\n getGlobalObject,\n getGlobalSingleton,\n isNodeEnv,\n logger,\n uuid4,\n} from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\nimport { Scope } from './scope';\nimport { Session } from './session';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * A layer in the process stack.\n * @hidden\n */\nexport interface Layer {\n client?: Client;\n scope?: Scope;\n}\n\n/**\n * An object that contains a hub and maintains a scope stack.\n * @hidden\n */\nexport interface Carrier {\n __SENTRY__?: {\n hub?: Hub;\n /**\n * Extra Hub properties injected by various SDKs\n */\n integrations?: Integration[];\n extensions?: {\n /** Hack to prevent bundlers from breaking our usage of the domain package in the cross-platform Hub package */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n domain?: { [key: string]: any };\n } & {\n /** Extension methods for the hub, which are bound to the current Hub instance */\n // eslint-disable-next-line @typescript-eslint/ban-types\n [key: string]: Function;\n };\n };\n}\n\n/**\n * @hidden\n * @deprecated Can be removed once `Hub.getActiveDomain` is removed.\n */\nexport interface DomainAsCarrier extends Carrier {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n members: { [key: string]: any }[];\n}\n\n/**\n * @inheritDoc\n */\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[] = [{}];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n public constructor(client?: Client, scope: Scope = new Scope(), private readonly _version: number = API_VERSION) {\n this.getStackTop().scope = scope;\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n public bindClient(client?: Client): void {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n const scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n public popScope(): boolean {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n public withScope(callback: (scope: Scope) => void): void {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /** Returns the scope of the top stack. */\n public getScope(): Scope | undefined {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public captureException(exception: any, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimic the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error('Sentry syntheticException');\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: exception,\n syntheticException,\n };\n }\n\n this._invokeClient('captureException', exception, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(message: string, level?: Severity, hint?: EventHint): string {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimic the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error(message);\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: message,\n syntheticException,\n };\n }\n\n this._invokeClient('captureMessage', message, level, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (event.type !== 'transaction') {\n this._lastEventId = eventId;\n }\n\n this._invokeClient('captureEvent', event, {\n ...hint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const { scope, client } = this.getStackTop();\n\n if (!scope || !client) return;\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): void {\n const scope = this.getScope();\n if (scope) scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): void {\n const scope = this.getScope();\n if (scope) scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): void {\n const scope = this.getScope();\n if (scope) scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): void {\n const scope = this.getScope();\n if (scope) scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): void {\n const scope = this.getScope();\n if (scope) scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setContext(name: string, context: { [key: string]: any } | null): void {\n const scope = this.getScope();\n if (scope) scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n public configureScope(callback: (scope: Scope) => void): void {\n const { scope, client } = this.getStackTop();\n if (scope && client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public run(callback: (hub: Hub) => void): void {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n const client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n IS_DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSpan(context: SpanContext): Span {\n return this._callExtensionMethod('startSpan', context);\n }\n\n /**\n * @inheritDoc\n */\n public startTransaction(context: TransactionContext, customSamplingContext?: CustomSamplingContext): Transaction {\n return this._callExtensionMethod('startTransaction', context, customSamplingContext);\n }\n\n /**\n * @inheritDoc\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n public captureSession(endSession: boolean = false): void {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n public endSession(): void {\n const layer = this.getStackTop();\n const scope = layer && layer.scope;\n const session = scope && scope.getSession();\n if (session) {\n session.close();\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n if (scope) {\n scope.setSession();\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSession(context?: SessionContext): Session {\n const { scope, client } = this.getStackTop();\n const { release, environment } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const global = getGlobalObject<{ navigator?: { userAgent?: string } }>();\n const { userAgent } = global.navigator || {};\n\n const session = new Session({\n release,\n environment,\n ...(scope && { user: scope.getUser() }),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n if (scope) {\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n currentSession.update({ status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n }\n\n return session;\n }\n\n /**\n * Sends the current Session on the scope\n */\n private _sendSessionUpdate(): void {\n const { scope, client } = this.getStackTop();\n if (!scope) return;\n\n const session = scope.getSession && scope.getSession();\n if (session) {\n if (client && client.captureSession) {\n client.captureSession(session);\n }\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _invokeClient(method: M, ...args: any[]): void {\n const { scope, client } = this.getStackTop();\n if (client && client[method]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n (client as any)[method](...args, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _callExtensionMethod(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n IS_DEBUG_BUILD && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nexport function getMainCarrier(): Carrier {\n const carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Returns the active domain, if one exists\n * @deprecated No longer used; remove in v7\n * @returns The domain, or undefined if there is no active domain\n */\n// eslint-disable-next-line deprecation/deprecation\nexport function getActiveDomain(): DomainAsCarrier | undefined {\n IS_DEBUG_BUILD && logger.warn('Function `getActiveDomain` is deprecated and will be removed in a future version.');\n\n const sentry = getMainCarrier().__SENTRY__;\n\n return sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n}\n\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry: Carrier): Hub {\n try {\n const sentry = getMainCarrier().__SENTRY__;\n const activeDomain = sentry && sentry.extensions && sentry.extensions.domain && sentry.extensions.domain.active;\n\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n const registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n","/* eslint-disable max-lines */\nimport {\n Breadcrumb,\n CaptureContext,\n Context,\n Contexts,\n Event,\n EventHint,\n EventProcessor,\n Extra,\n Extras,\n Primitive,\n RequestSession,\n Scope as ScopeInterface,\n ScopeContext,\n Severity,\n Span,\n Transaction,\n User,\n} from '@sentry/types';\nimport { dateTimestampInSeconds, getGlobalSingleton, isPlainObject, isThenable, SyncPromise } from '@sentry/utils';\n\nimport { Session } from './session';\n\n/**\n * Absolute maximum number of breadcrumbs added to an event.\n * The `maxBreadcrumbs` option cannot be higher than this value.\n */\nconst MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifying is happening. */\n protected _notifyingListeners: boolean = false;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void> = [];\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[] = [];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[] = [];\n\n /** User */\n protected _user: User = {};\n\n /** Tags */\n protected _tags: { [key: string]: Primitive } = {};\n\n /** Extra */\n protected _extra: Extras = {};\n\n /** Contexts */\n protected _contexts: Contexts = {};\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n protected _level?: Severity;\n\n /** Transaction Name */\n protected _transactionName?: string;\n\n /** Span */\n protected _span?: Span;\n\n /** Session */\n protected _session?: Session;\n\n /** Request Mode Session Status */\n protected _requestSession?: RequestSession;\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n protected _sdkProcessingMetadata?: { [key: string]: unknown } = {};\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n public static clone(scope?: Scope): Scope {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n this._user = user || {};\n if (this._session) {\n this._session.update({ user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getUser(): User | undefined {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n public getRequestSession(): RequestSession | undefined {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n public setRequestSession(requestSession?: RequestSession): this {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: Primitive }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: Extras): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: Extra): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(level: Severity): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTransactionName(name?: string): this {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Can be removed in major version.\n * @deprecated in favor of {@link this.setTransactionName}\n */\n public setTransaction(name?: string): this {\n return this.setTransactionName(name);\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: Context | null): this {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts = { ...this._contexts, [key]: context };\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n public getTransaction(): Transaction | undefined {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n public setSession(session?: Session): this {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getSession(): Session | undefined {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n public update(captureContext?: CaptureContext): this {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext as (scope: T) => T)(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext as ScopeContext;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? Math.min(maxBreadcrumbs, MAX_BREADCRUMBS) : MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n this._breadcrumbs = [...this._breadcrumbs, mergedBreadcrumb].slice(-maxCrumbs);\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional information about the original exception.\n * @hidden\n */\n public applyToEvent(event: Event, hint?: EventHint): PromiseLike {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transactionName = this._span.transaction && this._span.transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = this._sdkProcessingMetadata;\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n public setSDKProcessingMetadata(newData: { [key: string]: unknown }): this {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n protected _notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint?: EventHint,\n index: number = 0,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n if (isThenable(result)) {\n void result\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n private _applyFingerprint(event: Event): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n getGlobalEventProcessors().push(callback);\n}\n","import { EventProcessor, Hub, Integration } from '@sentry/types';\nimport { CONSOLE_LEVELS, fill, getGlobalObject, safeJoin, severityFromString } from '@sentry/utils';\n\nconst global = getGlobalObject();\n\n/** Send Console API calls as Sentry Events */\nexport class CaptureConsole implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'CaptureConsole';\n\n /**\n * @inheritDoc\n */\n public name: string = CaptureConsole.id;\n\n /**\n * @inheritDoc\n */\n private readonly _levels: readonly string[] = CONSOLE_LEVELS;\n\n /**\n * @inheritDoc\n */\n public constructor(options: { levels?: string[] } = {}) {\n if (options.levels) {\n this._levels = options.levels;\n }\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n if (!('console' in global)) {\n return;\n }\n\n this._levels.forEach((level: string) => {\n if (!(level in global.console)) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(global.console, level, (originalConsoleMethod: () => any) => (...args: any[]): void => {\n const hub = getCurrentHub();\n\n if (hub.getIntegration(CaptureConsole)) {\n hub.withScope(scope => {\n scope.setLevel(severityFromString(level));\n scope.setExtra('arguments', args);\n scope.addEventProcessor(event => {\n event.logger = 'console';\n return event;\n });\n\n let message = safeJoin(args, ' ');\n if (level === 'assert') {\n if (args[0] === false) {\n message = `Assertion failed: ${safeJoin(args.slice(1), ' ') || 'console.assert'}`;\n scope.setExtra('arguments', args.slice(1));\n hub.captureMessage(message);\n }\n } else if (level === 'error' && args[0] instanceof Error) {\n hub.captureException(args[0]);\n } else {\n hub.captureMessage(message);\n }\n });\n }\n\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(global.console, args);\n }\n });\n });\n }\n}\n","// Store finish reasons in tuple to save on bundle size\n// Readonly type should enforce that this is not mutated.\nexport const FINISH_REASON_TAG = 'finishReason';\n\nexport const IDLE_TRANSACTION_FINISH_REASONS = ['heartbeatFailed', 'idleTimeout', 'documentHidden'] as const;\n","import { addInstrumentationHandler, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\nimport { SpanStatusType } from './span';\nimport { getActiveTransaction } from './utils';\n\n/**\n * Configures global error listeners\n */\nexport function registerErrorInstrumentation(): void {\n addInstrumentationHandler('error', errorCallback);\n addInstrumentationHandler('unhandledrejection', errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback(): void {\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const status: SpanStatusType = 'internal_error';\n IS_DEBUG_BUILD && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n","import { getMainCarrier, Hub } from '@sentry/hub';\nimport {\n CustomSamplingContext,\n Integration,\n IntegrationClass,\n Options,\n SamplingContext,\n TransactionContext,\n} from '@sentry/types';\nimport { dynamicRequire, isNaN, isNodeEnv, loadModule, logger } from '@sentry/utils';\n\nimport { registerErrorInstrumentation } from './errors';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { IdleTransaction } from './idletransaction';\nimport { Transaction } from './transaction';\nimport { hasTracingEnabled } from './utils';\n\n/** Returns all trace headers that are currently on the top scope. */\nfunction traceHeaders(this: Hub): { [key: string]: string } {\n const scope = this.getScope();\n if (scope) {\n const span = scope.getSpan();\n if (span) {\n return {\n 'sentry-trace': span.toTraceparent(),\n };\n }\n }\n return {};\n}\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * @param transaction: The transaction needing a sampling decision\n * @param options: The current client's options, so we can access `tracesSampleRate` and/or `tracesSampler`\n * @param samplingContext: Default and user-provided data which may be used to help make the decision\n *\n * @returns The given transaction with its `sampled` value set\n */\nfunction sample(transaction: T, options: Options, samplingContext: SamplingContext): T {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n if (transaction.sampled !== undefined) {\n transaction.setMetadata({\n transactionSampling: { method: 'explicitly_set' },\n });\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_sampler',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n transaction.setMetadata({\n transactionSampling: { method: 'inheritance' },\n });\n } else {\n sampleRate = options.tracesSampleRate;\n transaction.setMetadata({\n transactionSampling: {\n method: 'client_rate',\n // cast to number in case it's a boolean\n rate: Number(sampleRate),\n },\n });\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n IS_DEBUG_BUILD && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n IS_DEBUG_BUILD &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n transaction.sampled = Math.random() < (sampleRate as number | boolean);\n\n // if we're not going to keep it, we're done\n if (!transaction.sampled) {\n IS_DEBUG_BUILD &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n IS_DEBUG_BUILD && logger.log(`[Tracing] starting ${transaction.op} transaction - ${transaction.name}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate: unknown): boolean {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n IS_DEBUG_BUILD &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n IS_DEBUG_BUILD &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n this: Hub,\n transactionContext: TransactionContext,\n customSamplingContext?: CustomSamplingContext,\n): Transaction {\n const client = this.getClient();\n const options = (client && client.getOptions()) || {};\n\n let transaction = new Transaction(transactionContext, this);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nexport function startIdleTransaction(\n hub: Hub,\n transactionContext: TransactionContext,\n idleTimeout?: number,\n onScope?: boolean,\n customSamplingContext?: CustomSamplingContext,\n): IdleTransaction {\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {};\n\n let transaction = new IdleTransaction(transactionContext, hub, idleTimeout, onScope);\n transaction = sample(transaction, options, {\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n ...customSamplingContext,\n });\n if (transaction.sampled) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans as number));\n }\n return transaction;\n}\n\n/**\n * @private\n */\nexport function _addTracingExtensions(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n}\n\n/**\n * @private\n */\nfunction _autoloadDatabaseIntegrations(): void {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n\n const packageToIntegrationMapping: Record Integration> = {\n mongodb() {\n const integration = dynamicRequire(module, './integrations/node/mongo') as {\n Mongo: IntegrationClass;\n };\n return new integration.Mongo();\n },\n mongoose() {\n const integration = dynamicRequire(module, './integrations/node/mongo') as {\n Mongo: IntegrationClass;\n };\n return new integration.Mongo({ mongoose: true });\n },\n mysql() {\n const integration = dynamicRequire(module, './integrations/node/mysql') as {\n Mysql: IntegrationClass;\n };\n return new integration.Mysql();\n },\n pg() {\n const integration = dynamicRequire(module, './integrations/node/postgres') as {\n Postgres: IntegrationClass;\n };\n return new integration.Postgres();\n },\n };\n\n const mappedPackages = Object.keys(packageToIntegrationMapping)\n .filter(moduleName => !!loadModule(moduleName))\n .map(pkg => {\n try {\n return packageToIntegrationMapping[pkg]();\n } catch (e) {\n return undefined;\n }\n })\n .filter(p => p) as Integration[];\n\n if (mappedPackages.length > 0) {\n carrier.__SENTRY__.integrations = [...(carrier.__SENTRY__.integrations || []), ...mappedPackages];\n }\n}\n\n/**\n * This patches the global object and injects the Tracing extensions methods\n */\nexport function addExtensionMethods(): void {\n _addTracingExtensions();\n\n // Detect and automatically load specified integrations.\n if (isNodeEnv()) {\n _autoloadDatabaseIntegrations();\n }\n\n // If an error happens globally, we should make sure transaction status is set to error.\n registerErrorInstrumentation();\n}\n","import { Hub } from '@sentry/hub';\nimport { TransactionContext } from '@sentry/types';\nimport { logger, timestampWithMs } from '@sentry/utils';\n\nimport { FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS } from './constants';\nimport { IS_DEBUG_BUILD } from './flags';\nimport { Span, SpanRecorder } from './span';\nimport { Transaction } from './transaction';\n\nexport const DEFAULT_IDLE_TIMEOUT = 1000;\nexport const HEARTBEAT_INTERVAL = 5000;\n\n/**\n * @inheritDoc\n */\nexport class IdleTransactionSpanRecorder extends SpanRecorder {\n public constructor(\n private readonly _pushActivity: (id: string) => void,\n private readonly _popActivity: (id: string) => void,\n public transactionSpanId: string = '',\n maxlen?: number,\n ) {\n super(maxlen);\n }\n\n /**\n * @inheritDoc\n */\n public add(span: Span): void {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanId !== this.transactionSpanId) {\n // We patch span.finish() to pop an activity after setting an endTimestamp.\n span.finish = (endTimestamp?: number) => {\n span.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n this._popActivity(span.spanId);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (span.endTimestamp === undefined) {\n this._pushActivity(span.spanId);\n }\n }\n\n super.add(span);\n }\n}\n\nexport type BeforeFinishCallback = (transactionSpan: IdleTransaction, endTimestamp: number) => void;\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nexport class IdleTransaction extends Transaction {\n // Activities store a list of active spans\n public activities: Record = {};\n\n // Track state of activities in previous heartbeat\n private _prevHeartbeatString: string | undefined;\n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n private _heartbeatCounter: number = 0;\n\n // We should not use heartbeat if we finished a transaction\n private _finished: boolean = false;\n\n private readonly _beforeFinishCallbacks: BeforeFinishCallback[] = [];\n\n /**\n * If a transaction is created and no activities are added, we want to make sure that\n * it times out properly. This is cleared and not used when activities are added.\n */\n private _initTimeout: ReturnType | undefined;\n\n public constructor(\n transactionContext: TransactionContext,\n private readonly _idleHub?: Hub,\n /**\n * The time to wait in ms until the idle transaction will be finished.\n * @default 1000\n */\n private readonly _idleTimeout: number = DEFAULT_IDLE_TIMEOUT,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n private readonly _onScope: boolean = false,\n ) {\n super(transactionContext, _idleHub);\n\n if (_idleHub && _onScope) {\n // There should only be one active transaction on the scope\n clearActiveTransaction(_idleHub);\n\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n IS_DEBUG_BUILD && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanId}`);\n _idleHub.configureScope(scope => scope.setSpan(this));\n }\n\n this._initTimeout = setTimeout(() => {\n if (!this._finished) {\n this.finish();\n }\n }, this._idleTimeout);\n }\n\n /** {@inheritDoc} */\n public finish(endTimestamp: number = timestampWithMs()): string | undefined {\n this._finished = true;\n this.activities = {};\n\n if (this.spanRecorder) {\n IS_DEBUG_BUILD &&\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestamp * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestamp);\n }\n\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span: Span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanId === this.spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!span.endTimestamp) {\n span.endTimestamp = endTimestamp;\n span.setStatus('cancelled');\n IS_DEBUG_BUILD &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const keepSpan = span.startTimestamp < endTimestamp;\n if (!keepSpan) {\n IS_DEBUG_BUILD &&\n logger.log(\n '[Tracing] discarding Span since it happened after Transaction was finished',\n JSON.stringify(span, undefined, 2),\n );\n }\n return keepSpan;\n });\n\n IS_DEBUG_BUILD && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n IS_DEBUG_BUILD && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n clearActiveTransaction(this._idleHub);\n }\n\n return super.finish(endTimestamp);\n }\n\n /**\n * Register a callback function that gets excecuted before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n public registerBeforeFinishCallback(callback: BeforeFinishCallback): void {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public initSpanRecorder(maxlen?: number): void {\n if (!this.spanRecorder) {\n const pushActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n const popActivity = (id: string): void => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n IS_DEBUG_BUILD && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n private _pushActivity(spanId: string): void {\n if (this._initTimeout) {\n clearTimeout(this._initTimeout);\n this._initTimeout = undefined;\n }\n IS_DEBUG_BUILD && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n IS_DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n private _popActivity(spanId: string): void {\n if (this.activities[spanId]) {\n IS_DEBUG_BUILD && logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n IS_DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n const timeout = this._idleTimeout;\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampWithMs is in seconds, timeout is in ms\n const end = timestampWithMs() + timeout / 1000;\n\n setTimeout(() => {\n if (!this._finished) {\n this.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[1]);\n this.finish(end);\n }\n }, timeout);\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n private _beat(): void {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n const heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter += 1;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n IS_DEBUG_BUILD && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[0]);\n this.finish();\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n private _pingHeartbeat(): void {\n IS_DEBUG_BUILD && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, HEARTBEAT_INTERVAL);\n }\n}\n\n/**\n * Reset transaction on scope to `undefined`\n */\nfunction clearActiveTransaction(hub?: Hub): void {\n if (hub) {\n const scope = hub.getScope();\n if (scope) {\n const transaction = scope.getTransaction();\n if (transaction) {\n scope.setSpan(undefined);\n }\n }\n }\n}\n","import { TraceparentData } from '@sentry/types';\n\nexport const TRACEPARENT_REGEXP = new RegExp(\n '^[ \\\\t]*' + // whitespace\n '([0-9a-f]{32})?' + // trace_id\n '-?([0-9a-f]{16})?' + // span_id\n '-?([01])?' + // sampled\n '[ \\\\t]*$', // whitespace\n);\n\n/**\n * Extract transaction context data from a `sentry-trace` header.\n *\n * @param traceparent Traceparent string\n *\n * @returns Object containing data from the header, or undefined if traceparent string is malformed\n */\nexport function extractTraceparentData(traceparent: string): TraceparentData | undefined {\n const matches = traceparent.match(TRACEPARENT_REGEXP);\n if (matches) {\n let parentSampled: boolean | undefined;\n if (matches[3] === '1') {\n parentSampled = true;\n } else if (matches[3] === '0') {\n parentSampled = false;\n }\n return {\n traceId: matches[1],\n parentSampled,\n parentSpanId: matches[2],\n };\n }\n return undefined;\n}\n","import { getGlobalObject, logger } from '@sentry/utils';\n\nimport { FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS } from '../constants';\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { IdleTransaction } from '../idletransaction';\nimport { SpanStatusType } from '../span';\nimport { getActiveTransaction } from '../utils';\n\nconst global = getGlobalObject();\n\n/**\n * Add a listener that cancels and finishes a transaction when the global\n * document is hidden.\n */\nexport function registerBackgroundTabDetection(): void {\n if (global && global.document) {\n global.document.addEventListener('visibilitychange', () => {\n const activeTransaction = getActiveTransaction() as IdleTransaction;\n if (global.document.hidden && activeTransaction) {\n const statusType: SpanStatusType = 'cancelled';\n\n IS_DEBUG_BUILD &&\n logger.log(\n `[Tracing] Transaction: ${statusType} -> since tab moved to the background, op: ${activeTransaction.op}`,\n );\n // We should not set status if it is already set, this prevent important statuses like\n // error or data loss from being overwritten on transaction.\n if (!activeTransaction.status) {\n activeTransaction.setStatus(statusType);\n }\n activeTransaction.setTag('visibilitychange', 'document.hidden');\n activeTransaction.setTag(FINISH_REASON_TAG, IDLE_TRANSACTION_FINISH_REASONS[2]);\n activeTransaction.finish();\n }\n });\n } else {\n IS_DEBUG_BUILD && logger.warn('[Tracing] Could not set up background tab detection due to lack of global document');\n }\n}\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Metric, ReportHandler } from '../types';\n\nexport const bindReporter = (\n callback: ReportHandler,\n metric: Metric,\n reportAllChanges?: boolean,\n): ((forceReport?: boolean) => void) => {\n let prevValue: number;\n return (forceReport?: boolean) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n metric.delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (metric.delta || prevValue === undefined) {\n prevValue = metric.value;\n callback(metric);\n }\n }\n }\n };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Metric } from '../types';\nimport { generateUniqueID } from './generateUniqueID';\n\nexport const initMetric = (name: Metric['name'], value?: number): Metric => {\n return {\n name,\n value: value ?? -1,\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nexport const generateUniqueID = (): string => {\n return `v2-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface PerformanceEntryHandler {\n (entry: PerformanceEntry): void;\n}\n\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nexport const observe = (type: string, callback: PerformanceEntryHandler): PerformanceObserver | undefined => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n // More extensive feature detect needed for Firefox due to:\n // https://github.com/GoogleChrome/web-vitals/issues/142\n if (type === 'first-input' && !('PerformanceEventTiming' in self)) {\n return;\n }\n\n const po: PerformanceObserver = new PerformanceObserver(l => l.getEntries().map(callback));\n\n po.observe({ type, buffered: true });\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getGlobalObject } from '@sentry/utils';\n\nexport interface OnHiddenCallback {\n (event: Event): void;\n}\n\nexport const onHidden = (cb: OnHiddenCallback, once?: boolean): void => {\n const onHiddenOrPageHide = (event: Event): void => {\n if (event.type === 'pagehide' || getGlobalObject().document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getGlobalObject } from '@sentry/utils';\n\nimport { onHidden } from './onHidden';\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = (): number => {\n return getGlobalObject().document.visibilityState === 'hidden' ? 0 : Infinity;\n};\n\nconst trackChanges = (): void => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nexport const getVisibilityWatcher = (): {\n readonly firstHiddenTime: number;\n} => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe, PerformanceEntryHandler } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { ReportHandler } from './types';\n\n// https://wicg.github.io/largest-contentful-paint/#sec-largest-contentful-paint-interface\nexport interface LargestContentfulPaint extends PerformanceEntry {\n renderTime: DOMHighResTimeStamp;\n loadTime: DOMHighResTimeStamp;\n size: number;\n id: string;\n url: string;\n element?: Element;\n toJSON(): Record;\n}\n\nconst reportedMetricIDs: Record = {};\n\nexport const getLCP = (onReport: ReportHandler, reportAllChanges?: boolean): void => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report: ReturnType;\n\n const entryHandler = (entry: PerformanceEntry): void => {\n // The startTime attribute returns the value of the renderTime if it is not 0,\n // and the value of the loadTime otherwise.\n const value = entry.startTime;\n\n // If the page was hidden prior to paint time of the entry,\n // ignore it and mark the metric as final, otherwise add the entry.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries.push(entry);\n }\n\n if (report) {\n report();\n }\n };\n\n const po = observe('largest-contentful-paint', entryHandler);\n\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n\n const stopListening = (): void => {\n if (!reportedMetricIDs[metric.id]) {\n po.takeRecords().map(entryHandler as PerformanceEntryHandler);\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n addEventListener(type, stopListening, { once: true, capture: true });\n });\n\n onHidden(stopListening, true);\n }\n};\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Measurements, SpanContext } from '@sentry/types';\nimport { browserPerformanceTimeOrigin, getGlobalObject, htmlTreeAsString, isNodeEnv, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { Span } from '../span';\nimport { Transaction } from '../transaction';\nimport { msToSec } from '../utils';\nimport { getCLS, LayoutShift } from './web-vitals/getCLS';\nimport { getFID } from './web-vitals/getFID';\nimport { getLCP, LargestContentfulPaint } from './web-vitals/getLCP';\nimport { getVisibilityWatcher } from './web-vitals/lib/getVisibilityWatcher';\nimport { NavigatorDeviceMemory, NavigatorNetworkInformation } from './web-vitals/types';\n\nconst global = getGlobalObject();\n\n/** Class tracking metrics */\nexport class MetricsInstrumentation {\n private _measurements: Measurements = {};\n\n private _performanceCursor: number = 0;\n private _lcpEntry: LargestContentfulPaint | undefined;\n private _clsEntry: LayoutShift | undefined;\n\n public constructor(private _reportAllChanges: boolean = false) {\n if (!isNodeEnv() && global && global.performance && global.document) {\n if (global.performance.mark) {\n global.performance.mark('sentry-tracing-init');\n }\n\n this._trackCLS();\n this._trackLCP();\n this._trackFID();\n }\n }\n\n /** Add performance related spans to a transaction */\n public addPerformanceEntries(transaction: Transaction): void {\n if (!global || !global.performance || !global.performance.getEntries || !browserPerformanceTimeOrigin) {\n // Gatekeeper if performance API not available\n return;\n }\n\n IS_DEBUG_BUILD && logger.log('[Tracing] Adding & adjusting spans using Performance API');\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n let responseStartTimestamp: number | undefined;\n let requestStartTimestamp: number | undefined;\n\n global.performance\n .getEntries()\n .slice(this._performanceCursor)\n .forEach((entry: Record) => {\n const startTime = msToSec(entry.startTime as number);\n const duration = msToSec(entry.duration as number);\n\n if (transaction.op === 'navigation' && timeOrigin + startTime < transaction.startTimestamp) {\n return;\n }\n\n switch (entry.entryType) {\n case 'navigation': {\n addNavigationSpans(transaction, entry, timeOrigin);\n responseStartTimestamp = timeOrigin + msToSec(entry.responseStart as number);\n requestStartTimestamp = timeOrigin + msToSec(entry.requestStart as number);\n break;\n }\n case 'mark':\n case 'paint':\n case 'measure': {\n const startTimestamp = addMeasureSpans(transaction, entry, startTime, duration, timeOrigin);\n // capture web vitals\n\n const firstHidden = getVisibilityWatcher();\n // Only report if the page wasn't hidden prior to the web vital.\n const shouldRecord = entry.startTime < firstHidden.firstHiddenTime;\n\n if (entry.name === 'first-paint' && shouldRecord) {\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding FP');\n this._measurements['fp'] = { value: entry.startTime };\n this._measurements['mark.fp'] = { value: startTimestamp };\n }\n\n if (entry.name === 'first-contentful-paint' && shouldRecord) {\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding FCP');\n this._measurements['fcp'] = { value: entry.startTime };\n this._measurements['mark.fcp'] = { value: startTimestamp };\n }\n\n break;\n }\n case 'resource': {\n const resourceName = (entry.name as string).replace(global.location.origin, '');\n addResourceSpans(transaction, entry, resourceName, startTime, duration, timeOrigin);\n break;\n }\n default:\n // Ignore other entry types.\n }\n });\n\n this._performanceCursor = Math.max(performance.getEntries().length - 1, 0);\n\n this._trackNavigator(transaction);\n\n // Measurements are only available for pageload transactions\n if (transaction.op === 'pageload') {\n // normalize applicable web vital values to be relative to transaction.startTimestamp\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin);\n\n // Generate TTFB (Time to First Byte), which measured as the time between the beginning of the transaction and the\n // start of the response in milliseconds\n if (typeof responseStartTimestamp === 'number') {\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding TTFB');\n this._measurements['ttfb'] = { value: (responseStartTimestamp - transaction.startTimestamp) * 1000 };\n\n if (typeof requestStartTimestamp === 'number' && requestStartTimestamp <= responseStartTimestamp) {\n // Capture the time spent making the request and receiving the first byte of the response.\n // This is the time between the start of the request and the start of the response in milliseconds.\n this._measurements['ttfb.requestTime'] = { value: (responseStartTimestamp - requestStartTimestamp) * 1000 };\n }\n }\n\n ['fcp', 'fp', 'lcp'].forEach(name => {\n if (!this._measurements[name] || timeOrigin >= transaction.startTimestamp) {\n return;\n }\n\n // The web vitals, fcp, fp, lcp, and ttfb, all measure relative to timeOrigin.\n // Unfortunately, timeOrigin is not captured within the transaction span data, so these web vitals will need\n // to be adjusted to be relative to transaction.startTimestamp.\n\n const oldValue = this._measurements[name].value;\n const measurementTimestamp = timeOrigin + msToSec(oldValue);\n // normalizedValue should be in milliseconds\n const normalizedValue = Math.abs((measurementTimestamp - transaction.startTimestamp) * 1000);\n\n const delta = normalizedValue - oldValue;\n IS_DEBUG_BUILD &&\n logger.log(`[Measurements] Normalized ${name} from ${oldValue} to ${normalizedValue} (${delta})`);\n\n this._measurements[name].value = normalizedValue;\n });\n\n if (this._measurements['mark.fid'] && this._measurements['fid']) {\n // create span for FID\n\n _startChild(transaction, {\n description: 'first input delay',\n endTimestamp: this._measurements['mark.fid'].value + msToSec(this._measurements['fid'].value),\n op: 'web.vitals',\n startTimestamp: this._measurements['mark.fid'].value,\n });\n }\n\n // If FCP is not recorded we should not record the cls value\n // according to the new definition of CLS.\n if (!('fcp' in this._measurements)) {\n delete this._measurements.cls;\n }\n\n transaction.setMeasurements(this._measurements);\n tagMetricInfo(transaction, this._lcpEntry, this._clsEntry);\n transaction.setTag('sentry_reportAllChanges', this._reportAllChanges);\n }\n }\n\n /**\n * Capture the information of the user agent.\n */\n private _trackNavigator(transaction: Transaction): void {\n const navigator = global.navigator as null | (Navigator & NavigatorNetworkInformation & NavigatorDeviceMemory);\n if (!navigator) {\n return;\n }\n\n // track network connectivity\n const connection = navigator.connection;\n if (connection) {\n if (connection.effectiveType) {\n transaction.setTag('effectiveConnectionType', connection.effectiveType);\n }\n\n if (connection.type) {\n transaction.setTag('connectionType', connection.type);\n }\n\n if (isMeasurementValue(connection.rtt)) {\n this._measurements['connection.rtt'] = { value: connection.rtt as number };\n }\n\n if (isMeasurementValue(connection.downlink)) {\n this._measurements['connection.downlink'] = { value: connection.downlink as number };\n }\n }\n\n if (isMeasurementValue(navigator.deviceMemory)) {\n transaction.setTag('deviceMemory', String(navigator.deviceMemory));\n }\n\n if (isMeasurementValue(navigator.hardwareConcurrency)) {\n transaction.setTag('hardwareConcurrency', String(navigator.hardwareConcurrency));\n }\n }\n\n /** Starts tracking the Cumulative Layout Shift on the current page. */\n private _trackCLS(): void {\n // See:\n // https://web.dev/evolving-cls/\n // https://web.dev/cls-web-tooling/\n getCLS(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding CLS');\n this._measurements['cls'] = { value: metric.value };\n this._clsEntry = entry as LayoutShift;\n });\n }\n\n /** Starts tracking the Largest Contentful Paint on the current page. */\n private _trackLCP(): void {\n getLCP(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin as number);\n const startTime = msToSec(entry.startTime);\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding LCP');\n this._measurements['lcp'] = { value: metric.value };\n this._measurements['mark.lcp'] = { value: timeOrigin + startTime };\n this._lcpEntry = entry as LargestContentfulPaint;\n }, this._reportAllChanges);\n }\n\n /** Starts tracking the First Input Delay on the current page. */\n private _trackFID(): void {\n getFID(metric => {\n const entry = metric.entries.pop();\n if (!entry) {\n return;\n }\n\n const timeOrigin = msToSec(browserPerformanceTimeOrigin as number);\n const startTime = msToSec(entry.startTime);\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding FID');\n this._measurements['fid'] = { value: metric.value };\n this._measurements['mark.fid'] = { value: timeOrigin + startTime };\n });\n }\n}\n\n/** Instrument navigation entries */\nfunction addNavigationSpans(transaction: Transaction, entry: Record, timeOrigin: number): void {\n ['unloadEvent', 'redirect', 'domContentLoadedEvent', 'loadEvent', 'connect'].forEach(event => {\n addPerformanceNavigationTiming(transaction, entry, event, timeOrigin);\n });\n addPerformanceNavigationTiming(transaction, entry, 'secureConnection', timeOrigin, 'TLS/SSL', 'connectEnd');\n addPerformanceNavigationTiming(transaction, entry, 'fetch', timeOrigin, 'cache', 'domainLookupStart');\n addPerformanceNavigationTiming(transaction, entry, 'domainLookup', timeOrigin, 'DNS');\n addRequest(transaction, entry, timeOrigin);\n}\n\n/** Create measure related spans */\nfunction addMeasureSpans(\n transaction: Transaction,\n entry: Record,\n startTime: number,\n duration: number,\n timeOrigin: number,\n): number {\n const measureStartTimestamp = timeOrigin + startTime;\n const measureEndTimestamp = measureStartTimestamp + duration;\n\n _startChild(transaction, {\n description: entry.name as string,\n endTimestamp: measureEndTimestamp,\n op: entry.entryType as string,\n startTimestamp: measureStartTimestamp,\n });\n\n return measureStartTimestamp;\n}\n\nexport interface ResourceEntry extends Record {\n initiatorType?: string;\n transferSize?: number;\n encodedBodySize?: number;\n decodedBodySize?: number;\n}\n\n/** Create resource-related spans */\nexport function addResourceSpans(\n transaction: Transaction,\n entry: ResourceEntry,\n resourceName: string,\n startTime: number,\n duration: number,\n timeOrigin: number,\n): void {\n // we already instrument based on fetch and xhr, so we don't need to\n // duplicate spans here.\n if (entry.initiatorType === 'xmlhttprequest' || entry.initiatorType === 'fetch') {\n return;\n }\n\n const data: Record = {};\n if ('transferSize' in entry) {\n data['Transfer Size'] = entry.transferSize;\n }\n if ('encodedBodySize' in entry) {\n data['Encoded Body Size'] = entry.encodedBodySize;\n }\n if ('decodedBodySize' in entry) {\n data['Decoded Body Size'] = entry.decodedBodySize;\n }\n\n const startTimestamp = timeOrigin + startTime;\n const endTimestamp = startTimestamp + duration;\n\n _startChild(transaction, {\n description: resourceName,\n endTimestamp,\n op: entry.initiatorType ? `resource.${entry.initiatorType}` : 'resource',\n startTimestamp,\n data,\n });\n}\n\n/** Create performance navigation related spans */\nfunction addPerformanceNavigationTiming(\n transaction: Transaction,\n entry: Record,\n event: string,\n timeOrigin: number,\n description?: string,\n eventEnd?: string,\n): void {\n const end = eventEnd ? (entry[eventEnd] as number | undefined) : (entry[`${event}End`] as number | undefined);\n const start = entry[`${event}Start`] as number | undefined;\n if (!start || !end) {\n return;\n }\n _startChild(transaction, {\n op: 'browser',\n description: description ?? event,\n startTimestamp: timeOrigin + msToSec(start),\n endTimestamp: timeOrigin + msToSec(end),\n });\n}\n\n/** Create request and response related spans */\nfunction addRequest(transaction: Transaction, entry: Record, timeOrigin: number): void {\n _startChild(transaction, {\n op: 'browser',\n description: 'request',\n startTimestamp: timeOrigin + msToSec(entry.requestStart as number),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n });\n\n _startChild(transaction, {\n op: 'browser',\n description: 'response',\n startTimestamp: timeOrigin + msToSec(entry.responseStart as number),\n endTimestamp: timeOrigin + msToSec(entry.responseEnd as number),\n });\n}\n\n/**\n * Helper function to start child on transactions. This function will make sure that the transaction will\n * use the start timestamp of the created child span if it is earlier than the transactions actual\n * start timestamp.\n */\nexport function _startChild(transaction: Transaction, { startTimestamp, ...ctx }: SpanContext): Span {\n if (startTimestamp && transaction.startTimestamp > startTimestamp) {\n transaction.startTimestamp = startTimestamp;\n }\n\n return transaction.startChild({\n startTimestamp,\n ...ctx,\n });\n}\n\n/**\n * Checks if a given value is a valid measurement value.\n */\nfunction isMeasurementValue(value: any): boolean {\n return typeof value === 'number' && isFinite(value);\n}\n\n/** Add LCP / CLS data to transaction to allow debugging */\nfunction tagMetricInfo(\n transaction: Transaction,\n lcpEntry: MetricsInstrumentation['_lcpEntry'],\n clsEntry: MetricsInstrumentation['_clsEntry'],\n): void {\n if (lcpEntry) {\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding LCP Data');\n\n // Capture Properties of the LCP element that contributes to the LCP.\n\n if (lcpEntry.element) {\n transaction.setTag('lcp.element', htmlTreeAsString(lcpEntry.element));\n }\n\n if (lcpEntry.id) {\n transaction.setTag('lcp.id', lcpEntry.id);\n }\n\n if (lcpEntry.url) {\n // Trim URL to the first 200 characters.\n transaction.setTag('lcp.url', lcpEntry.url.trim().slice(0, 200));\n }\n\n transaction.setTag('lcp.size', lcpEntry.size);\n }\n\n // See: https://developer.mozilla.org/en-US/docs/Web/API/LayoutShift\n if (clsEntry && clsEntry.sources) {\n IS_DEBUG_BUILD && logger.log('[Measurements] Adding CLS Data');\n clsEntry.sources.forEach((source, index) =>\n transaction.setTag(`cls.source.${index + 1}`, htmlTreeAsString(source.node)),\n );\n }\n}\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { initMetric } from './lib/initMetric';\nimport { observe, PerformanceEntryHandler } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { ReportHandler } from './types';\n\n// https://wicg.github.io/layout-instability/#sec-layout-shift\nexport interface LayoutShift extends PerformanceEntry {\n value: number;\n hadRecentInput: boolean;\n sources: Array;\n toJSON(): Record;\n}\n\nexport interface LayoutShiftAttribution {\n node?: Node;\n previousRect: DOMRectReadOnly;\n currentRect: DOMRectReadOnly;\n}\n\nexport const getCLS = (onReport: ReportHandler, reportAllChanges?: boolean): void => {\n const metric = initMetric('CLS', 0);\n let report: ReturnType;\n\n let sessionValue = 0;\n let sessionEntries: PerformanceEntry[] = [];\n\n const entryHandler = (entry: LayoutShift): void => {\n // Only count layout shifts without recent user input.\n // TODO: Figure out why entry can be undefined\n if (entry && !entry.hadRecentInput) {\n const firstSessionEntry = sessionEntries[0];\n const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n };\n\n const po = observe('layout-shift', entryHandler as PerformanceEntryHandler);\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n\n onHidden(() => {\n po.takeRecords().map(entryHandler as PerformanceEntryHandler);\n report(true);\n });\n }\n};\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bindReporter } from './lib/bindReporter';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher';\nimport { initMetric } from './lib/initMetric';\nimport { observe, PerformanceEntryHandler } from './lib/observe';\nimport { onHidden } from './lib/onHidden';\nimport { PerformanceEventTiming, ReportHandler } from './types';\n\nexport const getFID = (onReport: ReportHandler, reportAllChanges?: boolean): void => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FID');\n let report: ReturnType;\n\n const entryHandler = (entry: PerformanceEventTiming): void => {\n // Only report if the page wasn't hidden prior to the first input.\n if (report && entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n const po = observe('first-input', entryHandler as PerformanceEntryHandler);\n if (po) {\n report = bindReporter(onReport, metric, reportAllChanges);\n onHidden(() => {\n po.takeRecords().map(entryHandler as PerformanceEntryHandler);\n po.disconnect();\n }, true);\n }\n};\n","import { addInstrumentationHandler, isInstanceOf, isMatchingPattern } from '@sentry/utils';\n\nimport { Span } from '../span';\nimport { getActiveTransaction, hasTracingEnabled } from '../utils';\n\nexport const DEFAULT_TRACING_ORIGINS = ['localhost', /^\\//];\n\n/** Options for Request Instrumentation */\nexport interface RequestInstrumentationOptions {\n /**\n * List of strings / regex where the integration should create Spans out of. Additionally this will be used\n * to define which outgoing requests the `sentry-trace` header will be attached to.\n *\n * Default: ['localhost', /^\\//] {@see DEFAULT_TRACING_ORIGINS}\n */\n tracingOrigins: Array;\n\n /**\n * Flag to disable patching all together for fetch requests.\n *\n * Default: true\n */\n traceFetch: boolean;\n\n /**\n * Flag to disable patching all together for xhr requests.\n *\n * Default: true\n */\n traceXHR: boolean;\n\n /**\n * This function will be called before creating a span for a request with the given url.\n * Return false if you don't want a span for the given url.\n *\n * By default it uses the `tracingOrigins` options as a url match.\n */\n shouldCreateSpanForRequest?(url: string): boolean;\n}\n\n/** Data returned from fetch callback */\nexport interface FetchData {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args: any[]; // the arguments passed to the fetch call itself\n fetchData?: {\n method: string;\n url: string;\n // span_id\n __span?: string;\n };\n\n // TODO Should this be unknown instead? If we vendor types, make it a Response\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n response?: any;\n error?: unknown;\n\n startTimestamp: number;\n endTimestamp?: number;\n}\n\n/** Data returned from XHR request */\nexport interface XHRData {\n xhr?: {\n __sentry_xhr__?: {\n method: string;\n url: string;\n status_code: number;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: Record;\n };\n __sentry_xhr_span_id__?: string;\n setRequestHeader?: (key: string, val: string) => void;\n __sentry_own_request__?: boolean;\n };\n startTimestamp: number;\n endTimestamp?: number;\n}\n\nexport const defaultRequestInstrumentationOptions: RequestInstrumentationOptions = {\n traceFetch: true,\n traceXHR: true,\n tracingOrigins: DEFAULT_TRACING_ORIGINS,\n};\n\n/** Registers span creators for xhr and fetch requests */\nexport function instrumentOutgoingRequests(_options?: Partial): void {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest } = {\n ...defaultRequestInstrumentationOptions,\n ..._options,\n };\n\n // We should cache url -> decision so that we don't have to compute\n // regexp everytime we create a request.\n const urlMap: Record = {};\n\n const defaultShouldCreateSpan = (url: string): boolean => {\n if (urlMap[url]) {\n return urlMap[url];\n }\n const origins = tracingOrigins;\n urlMap[url] =\n origins.some((origin: string | RegExp) => isMatchingPattern(url, origin)) &&\n !isMatchingPattern(url, 'sentry_key');\n return urlMap[url];\n };\n\n // We want that our users don't have to re-implement shouldCreateSpanForRequest themselves\n // That's why we filter out already unwanted Spans from tracingOrigins\n let shouldCreateSpan = defaultShouldCreateSpan;\n if (typeof shouldCreateSpanForRequest === 'function') {\n shouldCreateSpan = (url: string) => {\n return defaultShouldCreateSpan(url) && shouldCreateSpanForRequest(url);\n };\n }\n\n const spans: Record = {};\n\n if (traceFetch) {\n addInstrumentationHandler('fetch', (handlerData: FetchData) => {\n fetchCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n\n if (traceXHR) {\n addInstrumentationHandler('xhr', (handlerData: XHRData) => {\n xhrCallback(handlerData, shouldCreateSpan, spans);\n });\n }\n}\n\n/**\n * Create and track fetch request spans\n */\nexport function fetchCallback(\n handlerData: FetchData,\n shouldCreateSpan: (url: string) => boolean,\n spans: Record,\n): void {\n if (!hasTracingEnabled() || !(handlerData.fetchData && shouldCreateSpan(handlerData.fetchData.url))) {\n return;\n }\n\n if (handlerData.endTimestamp) {\n const spanId = handlerData.fetchData.__span;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n if (handlerData.response) {\n // TODO (kmclb) remove this once types PR goes through\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n span.setHttpStatus(handlerData.response.status);\n } else if (handlerData.error) {\n span.setStatus('internal_error');\n }\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const span = activeTransaction.startChild({\n data: {\n ...handlerData.fetchData,\n type: 'fetch',\n },\n description: `${handlerData.fetchData.method} ${handlerData.fetchData.url}`,\n op: 'http.client',\n });\n\n handlerData.fetchData.__span = span.spanId;\n spans[span.spanId] = span;\n\n const request = (handlerData.args[0] = handlerData.args[0] as string | Request);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const options = (handlerData.args[1] = (handlerData.args[1] as { [key: string]: any }) || {});\n let headers = options.headers;\n if (isInstanceOf(request, Request)) {\n headers = (request as Request).headers;\n }\n if (headers) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (typeof headers.append === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n headers.append('sentry-trace', span.toTraceparent());\n } else if (Array.isArray(headers)) {\n headers = [...headers, ['sentry-trace', span.toTraceparent()]];\n } else {\n headers = { ...headers, 'sentry-trace': span.toTraceparent() };\n }\n } else {\n headers = { 'sentry-trace': span.toTraceparent() };\n }\n options.headers = headers;\n }\n}\n\n/**\n * Create and track xhr request spans\n */\nexport function xhrCallback(\n handlerData: XHRData,\n shouldCreateSpan: (url: string) => boolean,\n spans: Record,\n): void {\n if (\n !hasTracingEnabled() ||\n (handlerData.xhr && handlerData.xhr.__sentry_own_request__) ||\n !(handlerData.xhr && handlerData.xhr.__sentry_xhr__ && shouldCreateSpan(handlerData.xhr.__sentry_xhr__.url))\n ) {\n return;\n }\n\n const xhr = handlerData.xhr.__sentry_xhr__;\n\n // check first if the request has finished and is tracked by an existing span which should now end\n if (handlerData.endTimestamp) {\n const spanId = handlerData.xhr.__sentry_xhr_span_id__;\n if (!spanId) return;\n\n const span = spans[spanId];\n if (span) {\n span.setHttpStatus(xhr.status_code);\n span.finish();\n\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete spans[spanId];\n }\n return;\n }\n\n // if not, create a new span to track it\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const span = activeTransaction.startChild({\n data: {\n ...xhr.data,\n type: 'xhr',\n method: xhr.method,\n url: xhr.url,\n },\n description: `${xhr.method} ${xhr.url}`,\n op: 'http.client',\n });\n\n handlerData.xhr.__sentry_xhr_span_id__ = span.spanId;\n spans[handlerData.xhr.__sentry_xhr_span_id__] = span;\n\n if (handlerData.xhr.setRequestHeader) {\n try {\n handlerData.xhr.setRequestHeader('sentry-trace', span.toTraceparent());\n } catch (_) {\n // Error: InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.\n }\n }\n }\n}\n","import { Transaction, TransactionContext } from '@sentry/types';\nimport { addInstrumentationHandler, getGlobalObject, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../flags';\n\nconst global = getGlobalObject();\n\n/**\n * Default function implementing pageload and navigation transactions\n */\nexport function instrumentRoutingWithDefaults(\n customStartTransaction: (context: TransactionContext) => T | undefined,\n startTransactionOnPageLoad: boolean = true,\n startTransactionOnLocationChange: boolean = true,\n): void {\n if (!global || !global.location) {\n IS_DEBUG_BUILD && logger.warn('Could not initialize routing instrumentation due to invalid location');\n return;\n }\n\n let startingUrl: string | undefined = global.location.href;\n\n let activeTransaction: T | undefined;\n if (startTransactionOnPageLoad) {\n activeTransaction = customStartTransaction({ name: global.location.pathname, op: 'pageload' });\n }\n\n if (startTransactionOnLocationChange) {\n addInstrumentationHandler('history', ({ to, from }: { to: string; from?: string }) => {\n /**\n * This early return is there to account for some cases where a navigation transaction starts right after\n * long-running pageload. We make sure that if `from` is undefined and a valid `startingURL` exists, we don't\n * create an uneccessary navigation transaction.\n *\n * This was hard to duplicate, but this behavior stopped as soon as this fix was applied. This issue might also\n * only be caused in certain development environments where the usage of a hot module reloader is causing\n * errors.\n */\n if (from === undefined && startingUrl && startingUrl.indexOf(to) !== -1) {\n startingUrl = undefined;\n return;\n }\n\n if (from !== to) {\n startingUrl = undefined;\n if (activeTransaction) {\n IS_DEBUG_BUILD && logger.log(`[Tracing] Finishing current transaction with op: ${activeTransaction.op}`);\n // If there's an open transaction on the scope, we need to finish it before creating an new one.\n activeTransaction.finish();\n }\n activeTransaction = customStartTransaction({ name: global.location.pathname, op: 'navigation' });\n }\n });\n }\n}\n","import { Hub } from '@sentry/hub';\nimport { EventProcessor, Integration, Transaction, TransactionContext } from '@sentry/types';\nimport { getGlobalObject, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from '../flags';\nimport { startIdleTransaction } from '../hubextensions';\nimport { DEFAULT_IDLE_TIMEOUT, IdleTransaction } from '../idletransaction';\nimport { extractTraceparentData, secToMs } from '../utils';\nimport { registerBackgroundTabDetection } from './backgroundtab';\nimport { MetricsInstrumentation } from './metrics';\nimport {\n defaultRequestInstrumentationOptions,\n instrumentOutgoingRequests,\n RequestInstrumentationOptions,\n} from './request';\nimport { instrumentRoutingWithDefaults } from './router';\n\nexport const DEFAULT_MAX_TRANSACTION_DURATION_SECONDS = 600;\n\n/** Options for Browser Tracing integration */\nexport interface BrowserTracingOptions extends RequestInstrumentationOptions {\n /**\n * The time to wait in ms until the transaction will be finished. The transaction will use the end timestamp of\n * the last finished span as the endtime for the transaction.\n * Time is in ms.\n *\n * Default: 1000\n */\n idleTimeout: number;\n\n /**\n * Flag to enable/disable creation of `navigation` transaction on history changes.\n *\n * Default: true\n */\n startTransactionOnLocationChange: boolean;\n\n /**\n * Flag to enable/disable creation of `pageload` transaction on first pageload.\n *\n * Default: true\n */\n startTransactionOnPageLoad: boolean;\n\n /**\n * The maximum duration of a transaction before it will be marked as \"deadline_exceeded\".\n * If you never want to mark a transaction set it to 0.\n * Time is in seconds.\n *\n * Default: 600\n */\n maxTransactionDuration: number;\n\n /**\n * Flag Transactions where tabs moved to background with \"cancelled\". Browser background tab timing is\n * not suited towards doing precise measurements of operations. By default, we recommend that this option\n * be enabled as background transactions can mess up your statistics in nondeterministic ways.\n *\n * Default: true\n */\n markBackgroundTransactions: boolean;\n\n /**\n * _metricOptions allows the user to send options to change how metrics are collected.\n *\n * _metricOptions is currently experimental.\n *\n * Default: undefined\n */\n _metricOptions?: Partial<{ _reportAllChanges: boolean }>;\n\n /**\n * beforeNavigate is called before a pageload/navigation transaction is created and allows users to modify transaction\n * context data, or drop the transaction entirely (by setting `sampled = false` in the context).\n *\n * Note: For legacy reasons, transactions can also be dropped by returning `undefined`.\n *\n * @param context: The context data which will be passed to `startTransaction` by default\n *\n * @returns A (potentially) modified context object, with `sampled = false` if the transaction should be dropped.\n */\n beforeNavigate?(context: TransactionContext): TransactionContext | undefined;\n\n /**\n * Instrumentation that creates routing change transactions. By default creates\n * pageload and navigation transactions.\n */\n routingInstrumentation(\n customStartTransaction: (context: TransactionContext) => T | undefined,\n startTransactionOnPageLoad?: boolean,\n startTransactionOnLocationChange?: boolean,\n ): void;\n}\n\nconst DEFAULT_BROWSER_TRACING_OPTIONS = {\n idleTimeout: DEFAULT_IDLE_TIMEOUT,\n markBackgroundTransactions: true,\n maxTransactionDuration: DEFAULT_MAX_TRANSACTION_DURATION_SECONDS,\n routingInstrumentation: instrumentRoutingWithDefaults,\n startTransactionOnLocationChange: true,\n startTransactionOnPageLoad: true,\n ...defaultRequestInstrumentationOptions,\n};\n\n/**\n * The Browser Tracing integration automatically instruments browser pageload/navigation\n * actions as transactions, and captures requests, metrics and errors as spans.\n *\n * The integration can be configured with a variety of options, and can be extended to use\n * any routing library. This integration uses {@see IdleTransaction} to create transactions.\n */\nexport class BrowserTracing implements Integration {\n /**\n * @inheritDoc\n */\n public static id: string = 'BrowserTracing';\n\n /** Browser Tracing integration options */\n public options: BrowserTracingOptions;\n\n /**\n * @inheritDoc\n */\n public name: string = BrowserTracing.id;\n\n private _getCurrentHub?: () => Hub;\n\n private readonly _metrics: MetricsInstrumentation;\n\n private readonly _emitOptionsWarning?: boolean;\n\n /** Store configured idle timeout so that it can be added as a tag to transactions */\n private _configuredIdleTimeout: BrowserTracingOptions['idleTimeout'] | undefined = undefined;\n\n public constructor(_options?: Partial) {\n let tracingOrigins = defaultRequestInstrumentationOptions.tracingOrigins;\n // NOTE: Logger doesn't work in constructors, as it's initialized after integrations instances\n if (_options) {\n this._configuredIdleTimeout = _options.idleTimeout;\n if (_options.tracingOrigins && Array.isArray(_options.tracingOrigins) && _options.tracingOrigins.length !== 0) {\n tracingOrigins = _options.tracingOrigins;\n } else {\n IS_DEBUG_BUILD && (this._emitOptionsWarning = true);\n }\n }\n\n this.options = {\n ...DEFAULT_BROWSER_TRACING_OPTIONS,\n ..._options,\n tracingOrigins,\n };\n\n const { _metricOptions } = this.options;\n this._metrics = new MetricsInstrumentation(_metricOptions && _metricOptions._reportAllChanges);\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(_: (callback: EventProcessor) => void, getCurrentHub: () => Hub): void {\n this._getCurrentHub = getCurrentHub;\n\n if (this._emitOptionsWarning) {\n IS_DEBUG_BUILD &&\n logger.warn(\n '[Tracing] You need to define `tracingOrigins` in the options. Set an array of urls or patterns to trace.',\n );\n IS_DEBUG_BUILD &&\n logger.warn(\n `[Tracing] We added a reasonable default for you: ${defaultRequestInstrumentationOptions.tracingOrigins}`,\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const {\n routingInstrumentation: instrumentRouting,\n startTransactionOnLocationChange,\n startTransactionOnPageLoad,\n markBackgroundTransactions,\n traceFetch,\n traceXHR,\n tracingOrigins,\n shouldCreateSpanForRequest,\n } = this.options;\n\n instrumentRouting(\n (context: TransactionContext) => this._createRouteTransaction(context),\n startTransactionOnPageLoad,\n startTransactionOnLocationChange,\n );\n\n if (markBackgroundTransactions) {\n registerBackgroundTabDetection();\n }\n\n instrumentOutgoingRequests({ traceFetch, traceXHR, tracingOrigins, shouldCreateSpanForRequest });\n }\n\n /** Create routing idle transaction. */\n private _createRouteTransaction(context: TransactionContext): Transaction | undefined {\n if (!this._getCurrentHub) {\n IS_DEBUG_BUILD &&\n logger.warn(`[Tracing] Did not create ${context.op} transaction because _getCurrentHub is invalid.`);\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { beforeNavigate, idleTimeout, maxTransactionDuration } = this.options;\n\n const parentContextFromHeader = context.op === 'pageload' ? getHeaderContext() : undefined;\n\n const expandedContext = {\n ...context,\n ...parentContextFromHeader,\n trimEnd: true,\n };\n const modifiedContext = typeof beforeNavigate === 'function' ? beforeNavigate(expandedContext) : expandedContext;\n\n // For backwards compatibility reasons, beforeNavigate can return undefined to \"drop\" the transaction (prevent it\n // from being sent to Sentry).\n const finalContext = modifiedContext === undefined ? { ...expandedContext, sampled: false } : modifiedContext;\n\n if (finalContext.sampled === false) {\n IS_DEBUG_BUILD && logger.log(`[Tracing] Will not send ${finalContext.op} transaction because of beforeNavigate.`);\n }\n\n IS_DEBUG_BUILD && logger.log(`[Tracing] Starting ${finalContext.op} transaction on scope`);\n\n const hub = this._getCurrentHub();\n const { location } = getGlobalObject() as WindowOrWorkerGlobalScope & { location: Location };\n\n const idleTransaction = startIdleTransaction(\n hub,\n finalContext,\n idleTimeout,\n true,\n { location }, // for use in the tracesSampler\n );\n idleTransaction.registerBeforeFinishCallback((transaction, endTimestamp) => {\n this._metrics.addPerformanceEntries(transaction);\n adjustTransactionDuration(secToMs(maxTransactionDuration), transaction, endTimestamp);\n });\n\n idleTransaction.setTag('idleTimeout', this._configuredIdleTimeout);\n\n return idleTransaction as Transaction;\n }\n}\n\n/**\n * Gets transaction context from a sentry-trace meta.\n *\n * @returns Transaction context data from the header or undefined if there's no header or the header is malformed\n */\nexport function getHeaderContext(): Partial | undefined {\n const header = getMetaContent('sentry-trace');\n if (header) {\n return extractTraceparentData(header);\n }\n\n return undefined;\n}\n\n/** Returns the value of a meta tag */\nexport function getMetaContent(metaName: string): string | null {\n const el = getGlobalObject().document.querySelector(`meta[name=${metaName}]`);\n return el ? el.getAttribute('content') : null;\n}\n\n/** Adjusts transaction value based on max transaction duration */\nfunction adjustTransactionDuration(maxDuration: number, transaction: IdleTransaction, endTimestamp: number): void {\n const diff = endTimestamp - transaction.startTimestamp;\n const isOutdatedTransaction = endTimestamp && (diff > maxDuration || diff < 0);\n if (isOutdatedTransaction) {\n transaction.setStatus('deadline_exceeded');\n transaction.setTag('maxTransactionDurationExceeded', 'true');\n }\n}\n","import { addExtensionMethods } from './hubextensions';\nimport * as Integrations from './integrations';\n\nexport { Integrations };\n\n// This is already exported as part of `Integrations` above (and for the moment will remain so for\n// backwards compatibility), but that interferes with treeshaking, so we also export it separately\n// here.\n//\n// Previously we expected users to import tracing integrations like\n//\n// import { Integrations } from '@sentry/tracing';\n// const instance = new Integrations.BrowserTracing();\n//\n// This makes the integrations unable to be treeshaken though. To address this, we now have\n// this individual export. We now expect users to consume BrowserTracing like so:\n//\n// import { BrowserTracing } from '@sentry/tracing';\n// const instance = new BrowserTracing();\n//\n// For an example of of the new usage of BrowserTracing, see @sentry/nextjs index.client.ts\nexport { BrowserTracing } from './browser';\n\nexport { Span, SpanStatusType, spanStatusfromHttpCode } from './span';\n// eslint-disable-next-line deprecation/deprecation\nexport { SpanStatus } from './spanstatus';\nexport { Transaction } from './transaction';\nexport {\n // TODO deprecate old name in v7\n instrumentOutgoingRequests as registerRequestInstrumentation,\n RequestInstrumentationOptions,\n defaultRequestInstrumentationOptions,\n} from './browser';\nexport { IdleTransaction } from './idletransaction';\nexport { startIdleTransaction } from './hubextensions';\n\n// We are patching the global object with our hub extension methods\naddExtensionMethods();\n\nexport { addExtensionMethods };\n\nexport {\n extractTraceparentData,\n getActiveTransaction,\n hasTracingEnabled,\n stripUrlQueryAndFragment,\n TRACEPARENT_REGEXP,\n} from './utils';\n","/* eslint-disable max-lines */\nimport { Primitive, Span as SpanInterface, SpanContext, Transaction } from '@sentry/types';\nimport { dropUndefinedKeys, timestampWithMs, uuid4 } from '@sentry/utils';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nexport class SpanRecorder {\n public spans: Span[] = [];\n\n private readonly _maxlen: number;\n\n public constructor(maxlen: number = 1000) {\n this._maxlen = maxlen;\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n public add(span: Span): void {\n if (this.spans.length > this._maxlen) {\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nexport class Span implements SpanInterface {\n /**\n * @inheritDoc\n */\n public traceId: string = uuid4();\n\n /**\n * @inheritDoc\n */\n public spanId: string = uuid4().substring(16);\n\n /**\n * @inheritDoc\n */\n public parentSpanId?: string;\n\n /**\n * Internal keeper of the status\n */\n public status?: SpanStatusType | string;\n\n /**\n * @inheritDoc\n */\n public sampled?: boolean;\n\n /**\n * Timestamp in seconds when the span was created.\n */\n public startTimestamp: number = timestampWithMs();\n\n /**\n * Timestamp in seconds when the span ended.\n */\n public endTimestamp?: number;\n\n /**\n * @inheritDoc\n */\n public op?: string;\n\n /**\n * @inheritDoc\n */\n public description?: string;\n\n /**\n * @inheritDoc\n */\n public tags: { [key: string]: Primitive } = {};\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public data: { [key: string]: any } = {};\n\n /**\n * List of spans that were finalized\n */\n public spanRecorder?: SpanRecorder;\n\n /**\n * @inheritDoc\n */\n public transaction?: Transaction;\n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(spanContext?: SpanContext) {\n if (!spanContext) {\n return this;\n }\n if (spanContext.traceId) {\n this.traceId = spanContext.traceId;\n }\n if (spanContext.spanId) {\n this.spanId = spanContext.spanId;\n }\n if (spanContext.parentSpanId) {\n this.parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this.sampled = spanContext.sampled;\n }\n if (spanContext.op) {\n this.op = spanContext.op;\n }\n if (spanContext.description) {\n this.description = spanContext.description;\n }\n if (spanContext.data) {\n this.data = spanContext.data;\n }\n if (spanContext.tags) {\n this.tags = spanContext.tags;\n }\n if (spanContext.status) {\n this.status = spanContext.status;\n }\n if (spanContext.startTimestamp) {\n this.startTimestamp = spanContext.startTimestamp;\n }\n if (spanContext.endTimestamp) {\n this.endTimestamp = spanContext.endTimestamp;\n }\n }\n\n /**\n * @inheritDoc\n * @deprecated\n */\n public child(\n spanContext?: Pick>,\n ): Span {\n return this.startChild(spanContext);\n }\n\n /**\n * @inheritDoc\n */\n public startChild(\n spanContext?: Pick>,\n ): Span {\n const childSpan = new Span({\n ...spanContext,\n parentSpanId: this.spanId,\n sampled: this.sampled,\n traceId: this.traceId,\n });\n\n childSpan.spanRecorder = this.spanRecorder;\n if (childSpan.spanRecorder) {\n childSpan.spanRecorder.add(childSpan);\n }\n\n childSpan.transaction = this.transaction;\n\n return childSpan;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: Primitive): this {\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n public setData(key: string, value: any): this {\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setStatus(value: SpanStatusType): this {\n this.status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setHttpStatus(httpStatus: number): this {\n this.setTag('http.status_code', String(httpStatus));\n const spanStatus = spanStatusfromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n this.setStatus(spanStatus);\n }\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public isSuccess(): boolean {\n return this.status === 'ok';\n }\n\n /**\n * @inheritDoc\n */\n public finish(endTimestamp?: number): void {\n this.endTimestamp = typeof endTimestamp === 'number' ? endTimestamp : timestampWithMs();\n }\n\n /**\n * @inheritDoc\n */\n public toTraceparent(): string {\n let sampledString = '';\n if (this.sampled !== undefined) {\n sampledString = this.sampled ? '-1' : '-0';\n }\n return `${this.traceId}-${this.spanId}${sampledString}`;\n }\n\n /**\n * @inheritDoc\n */\n public toContext(): SpanContext {\n return dropUndefinedKeys({\n data: this.data,\n description: this.description,\n endTimestamp: this.endTimestamp,\n op: this.op,\n parentSpanId: this.parentSpanId,\n sampled: this.sampled,\n spanId: this.spanId,\n startTimestamp: this.startTimestamp,\n status: this.status,\n tags: this.tags,\n traceId: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n public updateWithContext(spanContext: SpanContext): this {\n this.data = spanContext.data ?? {};\n this.description = spanContext.description;\n this.endTimestamp = spanContext.endTimestamp;\n this.op = spanContext.op;\n this.parentSpanId = spanContext.parentSpanId;\n this.sampled = spanContext.sampled;\n this.spanId = spanContext.spanId ?? this.spanId;\n this.startTimestamp = spanContext.startTimestamp ?? this.startTimestamp;\n this.status = spanContext.status;\n this.tags = spanContext.tags ?? {};\n this.traceId = spanContext.traceId ?? this.traceId;\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public getTraceContext(): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: { [key: string]: any };\n description?: string;\n op?: string;\n parent_span_id?: string;\n span_id: string;\n status?: string;\n tags?: { [key: string]: Primitive };\n trace_id: string;\n } {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n trace_id: this.traceId,\n });\n }\n\n /**\n * @inheritDoc\n */\n public toJSON(): {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data?: { [key: string]: any };\n description?: string;\n op?: string;\n parent_span_id?: string;\n span_id: string;\n start_timestamp: number;\n status?: string;\n tags?: { [key: string]: Primitive };\n timestamp?: number;\n trace_id: string;\n } {\n return dropUndefinedKeys({\n data: Object.keys(this.data).length > 0 ? this.data : undefined,\n description: this.description,\n op: this.op,\n parent_span_id: this.parentSpanId,\n span_id: this.spanId,\n start_timestamp: this.startTimestamp,\n status: this.status,\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this.endTimestamp,\n trace_id: this.traceId,\n });\n }\n}\n\nexport type SpanStatusType =\n /** The operation completed successfully. */\n | 'ok'\n /** Deadline expired before operation could complete. */\n | 'deadline_exceeded'\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n | 'unauthenticated'\n /** 403 Forbidden */\n | 'permission_denied'\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n | 'not_found'\n /** 429 Too Many Requests */\n | 'resource_exhausted'\n /** Client specified an invalid argument. 4xx. */\n | 'invalid_argument'\n /** 501 Not Implemented */\n | 'unimplemented'\n /** 503 Service Unavailable */\n | 'unavailable'\n /** Other/generic 5xx. */\n | 'internal_error'\n /** Unknown. Any non-standard HTTP status code. */\n | 'unknown_error'\n /** The operation was cancelled (typically by the user). */\n | 'cancelled'\n /** Already exists (409) */\n | 'already_exists'\n /** Operation was rejected because the system is not in a state required for the operation's */\n | 'failed_precondition'\n /** The operation was aborted, typically due to a concurrency issue. */\n | 'aborted'\n /** Operation was attempted past the valid range. */\n | 'out_of_range'\n /** Unrecoverable data loss or corruption */\n | 'data_loss';\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nexport function spanStatusfromHttpCode(httpStatus: number): SpanStatusType {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n","import { getCurrentHub, Hub } from '@sentry/hub';\nimport {\n Event,\n Measurements,\n Transaction as TransactionInterface,\n TransactionContext,\n TransactionMetadata,\n} from '@sentry/types';\nimport { dropUndefinedKeys, isInstanceOf, logger } from '@sentry/utils';\n\nimport { IS_DEBUG_BUILD } from './flags';\nimport { Span as SpanClass, SpanRecorder } from './span';\n\n/** JSDoc */\nexport class Transaction extends SpanClass implements TransactionInterface {\n public name: string;\n\n public metadata: TransactionMetadata;\n\n private _measurements: Measurements = {};\n\n /**\n * The reference to the current hub.\n */\n private readonly _hub: Hub = getCurrentHub() as unknown as Hub;\n\n private _trimEnd?: boolean;\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n */\n public constructor(transactionContext: TransactionContext, hub?: Hub) {\n super(transactionContext);\n\n if (isInstanceOf(hub, Hub)) {\n this._hub = hub as Hub;\n }\n\n this.name = transactionContext.name || '';\n\n this.metadata = transactionContext.metadata || {};\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n this.transaction = this;\n }\n\n /**\n * JSDoc\n */\n public setName(name: string): void {\n this.name = name;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n public initSpanRecorder(maxlen: number = 1000): void {\n if (!this.spanRecorder) {\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n this.spanRecorder.add(this);\n }\n\n /**\n * Set observed measurements for this transaction.\n * @hidden\n */\n public setMeasurements(measurements: Measurements): void {\n this._measurements = { ...measurements };\n }\n\n /**\n * Set metadata for this transaction.\n * @hidden\n */\n public setMetadata(newMetadata: TransactionMetadata): void {\n this.metadata = { ...this.metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n public finish(endTimestamp?: number): string | undefined {\n // This transaction is already finished, so we should not flush it again.\n if (this.endTimestamp !== undefined) {\n return undefined;\n }\n\n if (!this.name) {\n IS_DEBUG_BUILD && logger.warn('Transaction has no name, falling back to ``.');\n this.name = '';\n }\n\n // just sets the end timestamp\n super.finish(endTimestamp);\n\n if (this.sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n IS_DEBUG_BUILD && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n const client = this._hub.getClient();\n const transport = client && client.getTransport && client.getTransport();\n if (transport && transport.recordLostEvent) {\n transport.recordLostEvent('sample_rate', 'transaction');\n }\n return undefined;\n }\n\n const finishedSpans = this.spanRecorder ? this.spanRecorder.spans.filter(s => s !== this && s.endTimestamp) : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n this.endTimestamp = finishedSpans.reduce((prev: SpanClass, current: SpanClass) => {\n if (prev.endTimestamp && current.endTimestamp) {\n return prev.endTimestamp > current.endTimestamp ? prev : current;\n }\n return prev;\n }).endTimestamp;\n }\n\n const transaction: Event = {\n contexts: {\n trace: this.getTraceContext(),\n },\n spans: finishedSpans,\n start_timestamp: this.startTimestamp,\n tags: this.tags,\n timestamp: this.endTimestamp,\n transaction: this.name,\n type: 'transaction',\n sdkProcessingMetadata: this.metadata,\n };\n\n const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n IS_DEBUG_BUILD &&\n logger.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n IS_DEBUG_BUILD && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this.name}.`);\n\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n public toContext(): TransactionContext {\n const spanContext = super.toContext();\n\n return dropUndefinedKeys({\n ...spanContext,\n name: this.name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n public updateWithContext(transactionContext: TransactionContext): this {\n super.updateWithContext(transactionContext);\n\n this.name = transactionContext.name ?? '';\n\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n}\n","import { getCurrentHub, Hub } from '@sentry/hub';\nimport { Options, Transaction } from '@sentry/types';\n\n/**\n * The `extractTraceparentData` function and `TRACEPARENT_REGEXP` constant used\n * to be declared in this file. It was later moved into `@sentry/utils` as part of a\n * move to remove `@sentry/tracing` dependencies from `@sentry/node` (`extractTraceparentData`\n * is the only tracing function used by `@sentry/node`).\n *\n * These exports are kept here for backwards compatability's sake.\n *\n * TODO(v7): Reorganize these exports\n *\n * See https://github.com/getsentry/sentry-javascript/issues/4642 for more details.\n */\nexport { TRACEPARENT_REGEXP, extractTraceparentData } from '@sentry/utils';\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nexport function hasTracingEnabled(maybeOptions?: Options | undefined): boolean {\n const client = getCurrentHub().getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && ('tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\n/** Grabs active transaction off scope, if any */\nexport function getActiveTransaction(maybeHub?: Hub): T | undefined {\n const hub = maybeHub || getCurrentHub();\n const scope = hub.getScope();\n return scope && (scope.getTransaction() as T | undefined);\n}\n\n/**\n * Converts from milliseconds to seconds\n * @param time time in ms\n */\nexport function msToSec(time: number): number {\n return time / 1000;\n}\n\n/**\n * Converts from seconds to milliseconds\n * @param time time in seconds\n */\nexport function secToMs(time: number): number {\n return time * 1000;\n}\n\n// so it can be used in manual instrumentation without necessitating a hard dependency on @sentry/utils\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\n","/**\n * TODO(v7): Remove this enum and replace with SeverityLevel\n */\nexport enum Severity {\n /** JSDoc */\n Fatal = 'fatal',\n /** JSDoc */\n Error = 'error',\n /** JSDoc */\n Warning = 'warning',\n /** JSDoc */\n Log = 'log',\n /** JSDoc */\n Info = 'info',\n /** JSDoc */\n Debug = 'debug',\n /** JSDoc */\n Critical = 'critical',\n}\n\n// TODO: in v7, these can disappear, because they now also exist in `@sentry/utils`. (Having them there rather than here\n// is nice because then it enforces the idea that only types are exported from `@sentry/types`.)\nexport const SeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug', 'critical'] as const;\nexport type SeverityLevel = typeof SeverityLevels[number];\n","import { getGlobalObject } from './global';\nimport { isString } from './is';\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(elem: unknown, keyAttrs?: string[]): string {\n type SimpleNode = {\n parentNode: SimpleNode;\n } | null;\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const MAX_OUTPUT_LEN = 80;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n\n // eslint-disable-next-line no-plusplus\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem, keyAttrs);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown, keyAttrs?: string[]): string {\n const elem = el as {\n tagName?: string;\n id?: string;\n className?: string;\n getAttribute(key: string): string;\n };\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n\n // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n const keyAttrPairs =\n keyAttrs && keyAttrs.length\n ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n : null;\n\n if (keyAttrPairs && keyAttrPairs.length) {\n keyAttrPairs.forEach(keyAttrPair => {\n out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n });\n } else {\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n }\n const allowedAttrs = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n const global = getGlobalObject();\n try {\n return global.document.location.href;\n } catch (oO) {\n return '';\n }\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { Integration } from '@sentry/types';\n\nimport { isNodeEnv } from './node';\n\n/** Internal */\ninterface SentryGlobal {\n Sentry?: {\n Integrations?: Integration[];\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n };\n}\n\nconst fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject(): T & SentryGlobal {\n return (\n isNodeEnv()\n ? global\n : typeof window !== 'undefined' // eslint-disable-line no-restricted-globals\n ? window // eslint-disable-line no-restricted-globals\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject\n ) as T & SentryGlobal;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `getGlobalObject`'s return value\n * @returns the singleton\n */\nexport function getGlobalSingleton(name: keyof SentryGlobal['__SENTRY__'], creator: () => T, obj?: unknown): T {\n const global = (obj || getGlobalObject()) as SentryGlobal;\n const __SENTRY__ = (global.__SENTRY__ = global.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/ban-types */\nimport { WrappedFunction } from '@sentry/types';\n\nimport { IS_DEBUG_BUILD } from './flags';\nimport { getGlobalObject } from './global';\nimport { isInstanceOf, isString } from './is';\nimport { CONSOLE_LEVELS, logger } from './logger';\nimport { fill } from './object';\nimport { getFunctionName } from './stacktrace';\nimport { supportsHistory, supportsNativeFetch } from './supports';\n\nconst global = getGlobalObject();\n\ntype InstrumentHandlerType =\n | 'console'\n | 'dom'\n | 'fetch'\n | 'history'\n | 'sentry'\n | 'xhr'\n | 'error'\n | 'unhandledrejection';\ntype InstrumentHandlerCallback = (data: any) => void;\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Instruments given API */\nfunction instrument(type: InstrumentHandlerType): void {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n IS_DEBUG_BUILD && logger.warn('unknown instrumentation type:', type);\n return;\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(type: InstrumentHandlerType, callback: InstrumentHandlerCallback): void {\n handlers[type] = handlers[type] || [];\n (handlers[type] as InstrumentHandlerCallback[]).push(callback);\n instrument(type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type: InstrumentHandlerType, data: any): void {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (const handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n IS_DEBUG_BUILD &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole(): void {\n if (!('console' in global)) {\n return;\n }\n\n CONSOLE_LEVELS.forEach(function (level: string): void {\n if (!(level in global.console)) {\n return;\n }\n\n fill(global.console, level, function (originalConsoleMethod: () => any): Function {\n return function (...args: any[]): void {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleMethod) {\n originalConsoleMethod.apply(global.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch(): void {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(global, 'fetch', function (originalFetch: () => void): () => void {\n return function (...args: any[]): void {\n const handlerData = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...handlerData,\n });\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(global, args).then(\n (response: Response) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error: Error) => {\n triggerHandlers('fetch', {\n ...handlerData,\n endTimestamp: Date.now(),\n error,\n });\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n },\n );\n };\n });\n}\n\ntype XHRSendInput = null | Blob | BufferSource | FormData | URLSearchParams | string;\n\n/** JSDoc */\ninterface SentryWrappedXMLHttpRequest extends XMLHttpRequest {\n [key: string]: any;\n __sentry_xhr__?: {\n method?: string;\n url?: string;\n status_code?: number;\n body?: XHRSendInput;\n };\n}\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs: any[] = []): string {\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs: any[] = []): string {\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n\n/** JSDoc */\nfunction instrumentXHR(): void {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function (originalOpen: () => void): () => void {\n return function (this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr = this;\n const url = args[1];\n const xhrInfo: SentryWrappedXMLHttpRequest['__sentry_xhr__'] = (xhr.__sentry_xhr__ = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n });\n\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhrInfo.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler = function (): void {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = xhr.status;\n } catch (e) {\n /* do nothing */\n }\n\n triggerHandlers('xhr', {\n args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr,\n });\n }\n };\n\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original: WrappedFunction): Function {\n return function (...readyStateArgs: any[]): void {\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n } else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n return originalOpen.apply(xhr, args);\n };\n });\n\n fill(xhrproto, 'send', function (originalSend: () => void): () => void {\n return function (this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n if (this.__sentry_xhr__ && args[0] !== undefined) {\n this.__sentry_xhr__.body = args[0];\n }\n\n triggerHandlers('xhr', {\n args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref: string;\n\n/** JSDoc */\nfunction instrumentHistory(): void {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = global.onpopstate;\n global.onpopstate = function (this: WindowEventHandlers, ...args: any[]): any {\n const to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n return function (this: History, ...args: any[]): void {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\n\nconst debounceDuration = 1000;\nlet debounceTimerID: number | undefined;\nlet lastCapturedEvent: Event | undefined;\n\n/**\n * Decide whether the current event should finish the debounce of previously captured one.\n * @param previous previously captured event\n * @param current event to be captured\n */\nfunction shouldShortcircuitPreviousDebounce(previous: Event | undefined, current: Event): boolean {\n // If there was no previous event, it should always be swapped for the new one.\n if (!previous) {\n return true;\n }\n\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (previous.type !== current.type) {\n return true;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (previous.target !== current.target) {\n return true;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return false;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(event: Event): boolean {\n // We are only interested in filtering `keypress` events for now.\n if (event.type !== 'keypress') {\n return false;\n }\n\n try {\n const target = event.target as HTMLElement;\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param handler function that will be triggered\n * @param globalListener indicates whether event was captured by the global event listener\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction makeDOMEventHandler(handler: Function, globalListener: boolean = false): (event: Event) => void {\n return (event: Event): void => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event)) {\n return;\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no debounce timer, it means that we can safely capture the new event and store it for future comparisons.\n if (debounceTimerID === undefined) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n // If there is a debounce awaiting, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n else if (shouldShortcircuitPreviousDebounce(lastCapturedEvent, event)) {\n handler({\n event: event,\n name,\n global: globalListener,\n });\n lastCapturedEvent = event;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = global.setTimeout(() => {\n debounceTimerID = undefined;\n }, debounceDuration);\n };\n}\n\ntype AddEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n) => void;\ntype RemoveEventListener = (\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n) => void;\n\ntype InstrumentedElement = Element & {\n __sentry_instrumentation_handlers__?: {\n [key in 'click' | 'keypress']?: {\n handler?: Function;\n /** The number of custom listeners attached to this element */\n refCount: number;\n };\n };\n};\n\n/** JSDoc */\nfunction instrumentDOM(): void {\n if (!('document' in global)) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n global.document.addEventListener('click', globalDOMEventHandler, false);\n global.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target: string) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const proto = (global as any)[target] && (global as any)[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener: AddEventListener): AddEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): AddEventListener {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = (el.__sentry_instrumentation_handlers__ = el.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount += 1;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener: RemoveEventListener): RemoveEventListener {\n return function (\n this: Element,\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n if (type === 'click' || type == 'keypress') {\n try {\n const el = this as InstrumentedElement;\n const handlers = el.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount -= 1;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete el.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListenrs` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\nlet _oldOnErrorHandler: OnErrorEventHandler = null;\n/** JSDoc */\nfunction instrumentError(): void {\n _oldOnErrorHandler = global.onerror;\n\n global.onerror = function (msg: any, url: any, line: any, column: any, error: any): boolean {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler: ((e: any) => void) | null = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n\n global.onunhandledrejection = function (e: any): boolean {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n\nimport { Primitive } from '@sentry/types';\n\n// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: unknown): wat is Error {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n\nfunction isBuiltin(wat: unknown, ty: string): boolean {\n return objectToString.call(wat) === `[object ${ty}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: unknown): boolean {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: unknown): boolean {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: unknown): wat is string {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: unknown): wat is Primitive {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: unknown): wat is Record {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: unknown): boolean {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: unknown): boolean {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: unknown): wat is RegExp {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): wat is PromiseLike {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: unknown): boolean {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isNaN(wat: unknown): boolean {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n","import { WrappedFunction } from '@sentry/types';\n\nimport { IS_DEBUG_BUILD } from './flags';\nimport { getGlobalObject, getGlobalSingleton } from './global';\n\n// TODO: Implement different loggers for different environments\nconst global = getGlobalObject();\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nexport const CONSOLE_LEVELS = ['debug', 'info', 'warn', 'error', 'log', 'assert'] as const;\n\ntype LoggerMethod = (...args: unknown[]) => void;\ntype LoggerConsoleMethods = Record;\n\n/** JSDoc */\ninterface Logger extends LoggerConsoleMethods {\n disable(): void;\n enable(): void;\n}\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox(callback: () => T): T {\n const global = getGlobalObject();\n\n if (!('console' in global)) {\n return callback();\n }\n\n const originalConsole = global.console as Console & Record;\n const wrappedLevels: Partial = {};\n\n // Restore all wrapped console methods\n CONSOLE_LEVELS.forEach(level => {\n // TODO(v7): Remove this check as it's only needed for Node 6\n const originalWrappedFunc =\n originalConsole[level] && (originalConsole[level] as WrappedFunction).__sentry_original__;\n if (level in global.console && originalWrappedFunc) {\n wrappedLevels[level] = originalConsole[level] as LoggerConsoleMethods[typeof level];\n originalConsole[level] = originalWrappedFunc as Console[typeof level];\n }\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level as typeof CONSOLE_LEVELS[number]];\n });\n }\n}\n\nfunction makeLogger(): Logger {\n let enabled = false;\n const logger: Partial = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n };\n\n if (IS_DEBUG_BUILD) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args: any[]) => {\n if (enabled) {\n consoleSandbox(() => {\n global.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger as Logger;\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nlet logger: Logger;\nif (IS_DEBUG_BUILD) {\n logger = getGlobalSingleton('logger', makeLogger);\n} else {\n logger = makeLogger();\n}\n\nexport { logger };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Event, Exception, Mechanism, StackFrame } from '@sentry/types';\n\nimport { getGlobalObject } from './global';\nimport { addNonEnumerableProperty } from './object';\nimport { snipLine } from './string';\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\ninterface MsCryptoWindow extends Window {\n msCrypto?: Crypto;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const global = getGlobalObject() as MsCryptoWindow;\n const crypto = global.crypto || global.msCrypto;\n\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n const arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n // eslint-disable-next-line no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // eslint-disable-next-line no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n const pad = (num: number): string => {\n let v = num.toString(16);\n while (v.length < 4) {\n v = `0${v}`;\n }\n return v;\n };\n\n return (\n pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7])\n );\n }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // eslint-disable-next-line no-bitwise\n const r = (Math.random() * 16) | 0;\n // eslint-disable-next-line no-bitwise\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url: string): {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n} {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\nfunction getFirstException(event: Event): Exception | undefined {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nexport function addExceptionMechanism(event: Event, newMechanism?: Partial): void {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n const lineno = frame.lineno || 0;\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n\n/**\n * Strip the query string and fragment off of a given URL or path (if present)\n *\n * @param urlPath Full URL or path, including possible query string and/or fragment\n * @returns URL or path without query string or fragment\n */\nexport function stripUrlQueryAndFragment(urlPath: string): string {\n // eslint-disable-next-line no-useless-escape\n return urlPath.split(/[\\?#]/, 1)[0];\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nexport function checkOrSetAlreadyCaught(exception: unknown): boolean {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception as any).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception as { [key: string]: unknown }, '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n","/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\nimport { isBrowserBundle } from './env';\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nexport function dynamicRequire(mod: any, request: string): any {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nexport function loadModule(moduleName: string): T | undefined {\n let mod: T | undefined;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) as T;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These fags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\ndeclare const __SENTRY_BROWSER_BUNDLE__: boolean | undefined;\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nexport function isBrowserBundle(): boolean {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n","/* eslint-disable max-lines */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ExtendedError, WrappedFunction } from '@sentry/types';\n\nimport { htmlTreeAsString } from './browser';\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive } from './is';\nimport { truncate } from './string';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacementFactory: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacementFactory(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n markFunctionWrapped(wrapped, original);\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nexport function addNonEnumerableProperty(obj: { [key: string]: unknown }, name: string, value: unknown): void {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nexport function markFunctionWrapped(wrapped: WrappedFunction, original: WrappedFunction): void {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nexport function getOriginalFunction(func: WrappedFunction): WrappedFunction | undefined {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any object into an object literal with all its attributes\n * attached to it.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n */\nexport function convertToPlainObject(value: unknown): {\n [key: string]: unknown;\n} {\n let newObj = value as {\n [key: string]: unknown;\n };\n\n if (isError(value)) {\n newObj = {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value as ExtendedError),\n };\n } else if (isEvent(value)) {\n /**\n * Event-like interface that's usable in browser and node\n */\n interface SimpleEvent {\n [key: string]: unknown;\n type: string;\n target?: unknown;\n currentTarget?: unknown;\n }\n\n const event = value as SimpleEvent;\n\n newObj = {\n type: event.type,\n target: serializeEventTarget(event.target),\n currentTarget: serializeEventTarget(event.currentTarget),\n ...getOwnProperties(event),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = event.detail;\n }\n }\n return newObj;\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target: unknown): string {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj: { [key: string]: unknown }): { [key: string]: unknown } {\n const extractedProps: { [key: string]: unknown } = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = obj[property];\n }\n }\n return extractedProps;\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function extractExceptionKeysForMessage(exception: any, maxLength: number = 40): string {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return the new object with removed keys that value was `undefined`.\n * Works recursively on objects and arrays.\n */\nexport function dropUndefinedKeys(val: T): T {\n if (isPlainObject(val)) {\n const rv: { [key: string]: any } = {};\n for (const key of Object.keys(val)) {\n if (typeof val[key] !== 'undefined') {\n rv[key] = dropUndefinedKeys(val[key]);\n }\n }\n return rv as T;\n }\n\n if (Array.isArray(val)) {\n return (val as any[]).map(dropUndefinedKeys) as any;\n }\n\n return val;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nexport function objectify(wat: unknown): typeof Object {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat as any).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n","export const SeverityLevels = ['fatal', 'error', 'warning', 'log', 'info', 'debug', 'critical'] as const;\nexport type SeverityLevel = typeof SeverityLevels[number];\n","import { StackFrame } from '@sentry/types';\n\nconst STACKTRACE_LIMIT = 50;\n\nexport type StackParser = (stack: string, skipFirst?: number) => StackFrame[];\nexport type StackLineParserFn = (line: string) => StackFrame | undefined;\nexport type StackLineParser = [number, StackLineParserFn];\n\n/**\n * Creates a stack parser with the supplied line parsers\n *\n * StackFrames are returned in the correct order for Sentry Exception\n * frames and with Sentry SDK internal frames removed from the top and bottom\n *\n */\nexport function createStackParser(...parsers: StackLineParser[]): StackParser {\n const sortedParsers = parsers.sort((a, b) => a[0] - b[0]).map(p => p[1]);\n\n return (stack: string, skipFirst: number = 0): StackFrame[] => {\n const frames: StackFrame[] = [];\n\n for (const line of stack.split('\\n').slice(skipFirst)) {\n for (const parser of sortedParsers) {\n const frame = parser(line);\n\n if (frame) {\n frames.push(frame);\n break;\n }\n }\n }\n\n return stripSentryFramesAndReverse(frames);\n };\n}\n\n/**\n * @hidden\n */\nexport function stripSentryFramesAndReverse(stack: StackFrame[]): StackFrame[] {\n if (!stack.length) {\n return [];\n }\n\n let localStack = stack;\n\n const firstFrameFunction = localStack[0].function || '';\n const lastFrameFunction = localStack[localStack.length - 1].function || '';\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(frame => ({\n ...frame,\n filename: frame.filename || localStack[0].filename,\n function: frame.function || '?',\n }))\n .reverse();\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n","import { isRegExp, isString } from './is';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string (0 = unlimited)\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const lineLength = newLine.length;\n if (lineLength <= 150) {\n return newLine;\n }\n if (colno > lineLength) {\n // eslint-disable-next-line no-param-reassign\n colno = lineLength;\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, lineLength);\n if (end > lineLength - 5) {\n end = lineLength;\n }\n if (end === lineLength) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < lineLength) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value: string, pattern: RegExp | string): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n\n/**\n * Given a string, escape characters which have meaning in the regex grammar, such that the result is safe to feed to\n * `new RegExp()`.\n *\n * Based on https://github.com/sindresorhus/escape-string-regexp. Vendored to a) reduce the size by skipping the runtime\n * type-checking, and b) ensure it gets down-compiled for old versions of Node (the published package only supports Node\n * 12+).\n *\n * @param regexString The string to escape\n * @returns An version of the string with all special regex characters escaped\n */\nexport function escapeStringForRegex(regexString: string): string {\n // escape the hyphen separately so we can also replace it with a unicode literal hyphen, to avoid the problems\n // discussed in https://github.com/sindresorhus/escape-string-regexp/issues/20.\n return regexString.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n}\n","import { IS_DEBUG_BUILD } from './flags';\nimport { getGlobalObject } from './global';\nimport { logger } from './logger';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n try {\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch(): boolean {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n\n try {\n new Headers();\n new Request('');\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function isNativeFetch(func: Function): boolean {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n if (!supportsFetch()) {\n return false;\n }\n\n const global = getGlobalObject();\n\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = global.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof (doc.createElement as unknown) === 'function') {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n IS_DEBUG_BUILD &&\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n return 'ReportingObserver' in getGlobalObject();\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy(): boolean {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default'\n // (see https://caniuse.com/#feat=referrer-policy),\n // it doesn't. And it throws an exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n const global = getGlobalObject();\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const chrome = (global as any).chrome;\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n const hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n\n/** SyncPromise internal states */\nconst enum States {\n /** Pending */\n PENDING = 0,\n /** Resolved / OK */\n RESOLVED = 1,\n /** Rejected / Error */\n REJECTED = 2,\n}\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nexport function resolvedSyncPromise(value: T | PromiseLike): PromiseLike {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nexport function rejectedSyncPromise(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise implements PromiseLike {\n private _state: States = States.PENDING;\n private _handlers: Array<[boolean, (value: T) => void, (reason: any) => any]> = [];\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void,\n ) {\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val as unknown as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value as PromiseLike).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value as unknown as any);\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };\n}\n\nexport { SyncPromise };\n","import { getGlobalObject } from './global';\nimport { dynamicRequire, isNodeEnv } from './node';\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\ninterface TimestampSource {\n nowSeconds(): number;\n}\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nconst dateTimestampSource: TimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\ninterface Performance {\n /**\n * The millisecond timestamp at which measurement began, measured in Unix time.\n */\n timeOrigin: number;\n /**\n * Returns the current millisecond timestamp, where 0 represents the start of measurement.\n */\n now(): number;\n}\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance(): Performance | undefined {\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n const timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance(): Performance | undefined {\n try {\n const perfHooks = dynamicRequire(module, 'perf_hooks') as { performance: Performance };\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nconst platformPerformance: Performance | undefined = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nconst timestampSource: TimestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nexport const dateTimestampInSeconds: () => number = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nexport const timestampInSeconds: () => number = timestampSource.nowSeconds.bind(timestampSource);\n\n// Re-exported with an old name for backwards-compatibility.\nexport const timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nexport const usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nexport let _browserPerformanceTimeOriginMode: string;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nexport const browserPerformanceTimeOrigin = ((): number | undefined => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = getGlobalObject();\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n","/*!\n * Chart.js v3.7.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as isNumber, w as _limitValue, x as _lookupByKey, y as getRelativePosition$1, z as _isPointInArea, A as _rlookupByKey, B as getAngleFromPoint, C as toPadding, D as each, E as getMaximumSize, F as _getParentNode, G as readUsedSize, I as throttled, J as supportsEventListenerOptions, K as _isDomSupported, L as log10, M as _factorize, N as finiteOrDefault, O as callback, Q as _addGrace, R as toDegrees, S as _measureText, U as _int16Range, V as _alignPixel, W as clipArea, X as renderText, Y as unclipArea, Z as toFont, $ as _toLeftRightCenter, a0 as _alignStartEnd, a1 as overrides, a2 as merge, a3 as _capitalize, a4 as descriptors, a5 as isFunction, a6 as _attachContext, a7 as _createResolver, a8 as _descriptors, a9 as mergeIf, aa as uid, ab as debounce, ac as retinaScale, ad as clearCanvas, ae as setsEqual, af as _elementsEqual, ag as _isClickEvent, ah as _isBetween, ai as _readValueToProps, aj as _updateBezierControlPoints, ak as _computeSegments, al as _boundSegments, am as _steppedInterpolation, an as _bezierInterpolation, ao as _pointInLine, ap as _steppedLineTo, aq as _bezierCurveTo, ar as drawPoint, as as addRoundedRectPath, at as toTRBL, au as toTRBLCorners, av as _boundSegment, aw as _normalizeAngle, ax as getRtlAdapter, ay as overrideTextDirection, az as _textX, aA as restoreTextDirection, aB as noop, aC as distanceBetweenPoints, aD as _setMinAndMaxByKey, aE as niceNum, aF as almostWhole, aG as almostEquals, aH as _decimalPlaces, aI as _longestText, aJ as _filterBetween, aK as _lookup } from './chunks/helpers.segment.js';\nexport { d as defaults } from './chunks/helpers.segment.js';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const metasets = iScale.getMatchingVisibleMetas(this._type);\n const stacked = iScale.options.stacked;\n const ilen = metasets.length;\n const stacks = [];\n let i, item;\n for (i = 0; i < ilen; ++i) {\n item = metasets[i];\n if (!item.controller.options.grouped) {\n continue;\n }\n if (typeof dataIndex !== 'undefined') {\n const val = item.controller.getParsed(dataIndex)[\n item.controller._cachedMeta.vScale.axis\n ];\n if (isNullOrUndef(val) || isNaN(val)) {\n continue;\n }\n }\n if (stacked === false || stacks.indexOf(item.stack) === -1 ||\n\t\t\t\t(stacked === undefined && item.stack === undefined)) {\n stacks.push(item.stack);\n }\n if (item.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\nfunction getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max)).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const dataset = this.getDataset();\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(dataset.data[i]) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const dataset = this.getDataset();\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(dataset.data[index]) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const dataset = this.getDataset();\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, dataset.data[i]);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass ScatterController extends LineController {\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction getRelativePosition(e, chart) {\n if ('native' in e) {\n return {\n x: e.x,\n y: e.y\n };\n }\n return getRelativePosition$1(e, chart);\n}\nfunction evaluateAllVisibleItems(chart, handler) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n let index, data, element;\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n ({index, data} = metasets[i]);\n for (let j = 0, jlen = data.length; j < jlen; ++j) {\n element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction optimizedEvaluateItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition) {\n const items = [];\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n optimizedEvaluateItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n optimizedEvaluateItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = _isPointInArea(center, chart.chartArea, chart._minPadding);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n optimizedEvaluateItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition) {\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition);\n}\nfunction getAxisItems(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const items = [];\n const axis = options.axis;\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateAllVisibleItems(chart, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n intersectsItem = true;\n }\n });\n if (options.intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition)\n : getNearestItems(chart, position, axis, false, useFinalPosition);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition) :\n getNearestItems(chart, position, axis, false, useFinalPosition);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getIntersectItems(chart, position, axis, useFinalPosition);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition);\n },\n x(chart, e, options, useFinalPosition) {\n return getAxisItems(chart, e, {axis: 'x', intersect: options.intersect}, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n return getAxisItems(chart, e, {axis: 'y', intersect: options.intersect}, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition$1(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = grid.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n if (isHorizontal) {\n x = pixel;\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n }\n }\n return plugins;\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, plugins, options, all) {\n const result = [];\n const context = chart.getContext();\n for (let i = 0; i < plugins.length; i++) {\n const plugin = plugins[i];\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, plugin, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, plugin, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n return config.createResolver(scopes, context, [''], {scriptable: false, indexable: false, allKeys: true});\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.7.1\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: _isPointInArea(e, this.chartArea, this._minPadding)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (meta.type !== 'line') {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\nfunction decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n if (fill[0] === '-' || fill[0] === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n let target = null;\n let horizontal;\n if (fill === 'start') {\n target = scale.bottom;\n } else if (fill === 'end') {\n target = scale.top;\n } else if (isObject(fill)) {\n target = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n target = scale.getBasePixel();\n }\n if (isNumberFinite(target)) {\n horizontal = scale.isHorizontal();\n return {\n x: horizontal ? target : null,\n y: horizontal ? null : target\n };\n }\n return null;\n}\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const target = [];\n const start = options.reverse ? scale.max : scale.min;\n const end = options.reverse ? scale.min : scale.max;\n let i, center, value;\n if (fill === 'start') {\n value = start;\n } else if (fill === 'end') {\n value = end;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n if (options.grid.circular) {\n center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\nfunction getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return createBoundaryLine(boundary, line);\n}\nfunction createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _clip(ctx, target, clipY) {\n const {segments, points} = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {start, end} = segment;\n const firstPoint = points[start];\n const lastPoint = points[findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {move: lineLoop});\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = findSegmentEnd(start, end, points);\n const bounds = getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\nfunction _fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n _clip(ctx, target, area.top);\n _fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n _clip(ctx, target, area.bottom);\n }\n _fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction drawfill(ctx, source, area) {\n const target = getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nvar plugin_filler = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw) {\n drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (source) {\n drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!source || source.fill === false || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxWidth * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if (type === 'mousemove' && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = labelColors.borderWidth || 1;\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n if (tooltip) {\n tooltip.draw(chart.ctx);\n }\n chart.notifyPlugins('afterTooltipDraw', args);\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: plugin_filler,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n ctx.fillRect(left - padding.left, top - padding.top, right - left + padding.width, bottom - top + padding.height);\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, plugin_filler as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","/*!\n * Chart.js v3.7.1\n * https://www.chartjs.org\n * (c) 2022 Chart.js Contributors\n * Released under the MIT License\n */\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst emptyString = '';\nconst dot = '.';\nfunction indexOfDotOrLength(key, start) {\n const idx = key.indexOf(dot, start);\n return idx === -1 ? key.length : idx;\n}\nfunction resolveObjectKey(obj, key) {\n if (key === emptyString) {\n return obj;\n }\n let pos = 0;\n let idx = indexOfDotOrLength(key, pos);\n while (obj && idx > pos) {\n obj = obj[key.substr(pos, idx - pos)];\n pos = idx + 1;\n idx = indexOfDotOrLength(key, pos);\n }\n return obj;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.1.9\n * https://github.com/kurkle/color#readme\n * (c) 2020 Jukka Kurkela\n * Released under the MIT License\n */\nconst map = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = '0123456789ABCDEF';\nconst h1 = (b) => hex[b & 0xF];\nconst h2 = (b) => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = (b) => (((b & 0xF0) >> 4) === (b & 0xF));\nfunction isShort(v) {\n\treturn eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\n}\nfunction hexParse(str) {\n\tvar len = str.length;\n\tvar ret;\n\tif (str[0] === '#') {\n\t\tif (len === 4 || len === 5) {\n\t\t\tret = {\n\t\t\t\tr: 255 & map[str[1]] * 17,\n\t\t\t\tg: 255 & map[str[2]] * 17,\n\t\t\t\tb: 255 & map[str[3]] * 17,\n\t\t\t\ta: len === 5 ? map[str[4]] * 17 : 255\n\t\t\t};\n\t\t} else if (len === 7 || len === 9) {\n\t\t\tret = {\n\t\t\t\tr: map[str[1]] << 4 | map[str[2]],\n\t\t\t\tg: map[str[3]] << 4 | map[str[4]],\n\t\t\t\tb: map[str[5]] << 4 | map[str[6]],\n\t\t\t\ta: len === 9 ? (map[str[7]] << 4 | map[str[8]]) : 255\n\t\t\t};\n\t\t}\n\t}\n\treturn ret;\n}\nfunction hexString(v) {\n\tvar f = isShort(v) ? h1 : h2;\n\treturn v\n\t\t? '#' + f(v.r) + f(v.g) + f(v.b) + (v.a < 255 ? f(v.a) : '')\n\t\t: v;\n}\nfunction round(v) {\n\treturn v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n\treturn lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n\treturn lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n\treturn lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n\treturn lim(round(v * 100), 0, 100);\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n\tconst m = RGB_RE.exec(str);\n\tlet a = 255;\n\tlet r, g, b;\n\tif (!m) {\n\t\treturn;\n\t}\n\tif (m[7] !== r) {\n\t\tconst v = +m[7];\n\t\ta = 255 & (m[8] ? p2b(v) : v * 255);\n\t}\n\tr = +m[1];\n\tg = +m[3];\n\tb = +m[5];\n\tr = 255 & (m[2] ? p2b(r) : r);\n\tg = 255 & (m[4] ? p2b(g) : g);\n\tb = 255 & (m[6] ? p2b(b) : b);\n\treturn {\n\t\tr: r,\n\t\tg: g,\n\t\tb: b,\n\t\ta: a\n\t};\n}\nfunction rgbString(v) {\n\treturn v && (\n\t\tv.a < 255\n\t\t\t? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n\t\t\t: `rgb(${v.r}, ${v.g}, ${v.b})`\n\t);\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n\tconst a = s * Math.min(l, 1 - l);\n\tconst f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n\treturn [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n\tconst f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n\treturn [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n\tconst rgb = hsl2rgbn(h, 1, 0.5);\n\tlet i;\n\tif (w + b > 1) {\n\t\ti = 1 / (w + b);\n\t\tw *= i;\n\t\tb *= i;\n\t}\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] *= 1 - w - b;\n\t\trgb[i] += w;\n\t}\n\treturn rgb;\n}\nfunction rgb2hsl(v) {\n\tconst range = 255;\n\tconst r = v.r / range;\n\tconst g = v.g / range;\n\tconst b = v.b / range;\n\tconst max = Math.max(r, g, b);\n\tconst min = Math.min(r, g, b);\n\tconst l = (max + min) / 2;\n\tlet h, s, d;\n\tif (max !== min) {\n\t\td = max - min;\n\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\t\th = max === r\n\t\t\t? ((g - b) / d) + (g < b ? 6 : 0)\n\t\t\t: max === g\n\t\t\t\t? (b - r) / d + 2\n\t\t\t\t: (r - g) / d + 4;\n\t\th = h * 60 + 0.5;\n\t}\n\treturn [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n\treturn (\n\t\tArray.isArray(a)\n\t\t\t? f(a[0], a[1], a[2])\n\t\t\t: f(a, b, c)\n\t).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n\treturn calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n\treturn calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n\treturn calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n\treturn (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n\tconst m = HUE_RE.exec(str);\n\tlet a = 255;\n\tlet v;\n\tif (!m) {\n\t\treturn;\n\t}\n\tif (m[5] !== v) {\n\t\ta = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n\t}\n\tconst h = hue(+m[2]);\n\tconst p1 = +m[3] / 100;\n\tconst p2 = +m[4] / 100;\n\tif (m[1] === 'hwb') {\n\t\tv = hwb2rgb(h, p1, p2);\n\t} else if (m[1] === 'hsv') {\n\t\tv = hsv2rgb(h, p1, p2);\n\t} else {\n\t\tv = hsl2rgb(h, p1, p2);\n\t}\n\treturn {\n\t\tr: v[0],\n\t\tg: v[1],\n\t\tb: v[2],\n\t\ta: a\n\t};\n}\nfunction rotate(v, deg) {\n\tvar h = rgb2hsl(v);\n\th[0] = hue(h[0] + deg);\n\th = hsl2rgb(h);\n\tv.r = h[0];\n\tv.g = h[1];\n\tv.b = h[2];\n}\nfunction hslString(v) {\n\tif (!v) {\n\t\treturn;\n\t}\n\tconst a = rgb2hsl(v);\n\tconst h = a[0];\n\tconst s = n2p(a[1]);\n\tconst l = n2p(a[2]);\n\treturn v.a < 255\n\t\t? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n\t\t: `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map$1 = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n\tconst unpacked = {};\n\tconst keys = Object.keys(names);\n\tconst tkeys = Object.keys(map$1);\n\tlet i, j, k, ok, nk;\n\tfor (i = 0; i < keys.length; i++) {\n\t\tok = nk = keys[i];\n\t\tfor (j = 0; j < tkeys.length; j++) {\n\t\t\tk = tkeys[j];\n\t\t\tnk = nk.replace(k, map$1[k]);\n\t\t}\n\t\tk = parseInt(names[ok], 16);\n\t\tunpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n\t}\n\treturn unpacked;\n}\nlet names$1;\nfunction nameParse(str) {\n\tif (!names$1) {\n\t\tnames$1 = unpack();\n\t\tnames$1.transparent = [0, 0, 0, 0];\n\t}\n\tconst a = names$1[str.toLowerCase()];\n\treturn a && {\n\t\tr: a[0],\n\t\tg: a[1],\n\t\tb: a[2],\n\t\ta: a.length === 4 ? a[3] : 255\n\t};\n}\nfunction modHSL(v, i, ratio) {\n\tif (v) {\n\t\tlet tmp = rgb2hsl(v);\n\t\ttmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n\t\ttmp = hsl2rgb(tmp);\n\t\tv.r = tmp[0];\n\t\tv.g = tmp[1];\n\t\tv.b = tmp[2];\n\t}\n}\nfunction clone(v, proto) {\n\treturn v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n\tvar v = {r: 0, g: 0, b: 0, a: 255};\n\tif (Array.isArray(input)) {\n\t\tif (input.length >= 3) {\n\t\t\tv = {r: input[0], g: input[1], b: input[2], a: 255};\n\t\t\tif (input.length > 3) {\n\t\t\t\tv.a = n2b(input[3]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tv = clone(input, {r: 0, g: 0, b: 0, a: 1});\n\t\tv.a = n2b(v.a);\n\t}\n\treturn v;\n}\nfunction functionParse(str) {\n\tif (str.charAt(0) === 'r') {\n\t\treturn rgbParse(str);\n\t}\n\treturn hueParse(str);\n}\nclass Color {\n\tconstructor(input) {\n\t\tif (input instanceof Color) {\n\t\t\treturn input;\n\t\t}\n\t\tconst type = typeof input;\n\t\tlet v;\n\t\tif (type === 'object') {\n\t\t\tv = fromObject(input);\n\t\t} else if (type === 'string') {\n\t\t\tv = hexParse(input) || nameParse(input) || functionParse(input);\n\t\t}\n\t\tthis._rgb = v;\n\t\tthis._valid = !!v;\n\t}\n\tget valid() {\n\t\treturn this._valid;\n\t}\n\tget rgb() {\n\t\tvar v = clone(this._rgb);\n\t\tif (v) {\n\t\t\tv.a = b2n(v.a);\n\t\t}\n\t\treturn v;\n\t}\n\tset rgb(obj) {\n\t\tthis._rgb = fromObject(obj);\n\t}\n\trgbString() {\n\t\treturn this._valid ? rgbString(this._rgb) : this._rgb;\n\t}\n\thexString() {\n\t\treturn this._valid ? hexString(this._rgb) : this._rgb;\n\t}\n\thslString() {\n\t\treturn this._valid ? hslString(this._rgb) : this._rgb;\n\t}\n\tmix(color, weight) {\n\t\tconst me = this;\n\t\tif (color) {\n\t\t\tconst c1 = me.rgb;\n\t\t\tconst c2 = color.rgb;\n\t\t\tlet w2;\n\t\t\tconst p = weight === w2 ? 0.5 : weight;\n\t\t\tconst w = 2 * p - 1;\n\t\t\tconst a = c1.a - c2.a;\n\t\t\tconst w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\t\tw2 = 1 - w1;\n\t\t\tc1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n\t\t\tc1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n\t\t\tc1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n\t\t\tc1.a = p * c1.a + (1 - p) * c2.a;\n\t\t\tme.rgb = c1;\n\t\t}\n\t\treturn me;\n\t}\n\tclone() {\n\t\treturn new Color(this.rgb);\n\t}\n\talpha(a) {\n\t\tthis._rgb.a = n2b(a);\n\t\treturn this;\n\t}\n\tclearer(ratio) {\n\t\tconst rgb = this._rgb;\n\t\trgb.a *= 1 - ratio;\n\t\treturn this;\n\t}\n\tgreyscale() {\n\t\tconst rgb = this._rgb;\n\t\tconst val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n\t\trgb.r = rgb.g = rgb.b = val;\n\t\treturn this;\n\t}\n\topaquer(ratio) {\n\t\tconst rgb = this._rgb;\n\t\trgb.a *= 1 + ratio;\n\t\treturn this;\n\t}\n\tnegate() {\n\t\tconst v = this._rgb;\n\t\tv.r = 255 - v.r;\n\t\tv.g = 255 - v.g;\n\t\tv.b = 255 - v.b;\n\t\treturn this;\n\t}\n\tlighten(ratio) {\n\t\tmodHSL(this._rgb, 2, ratio);\n\t\treturn this;\n\t}\n\tdarken(ratio) {\n\t\tmodHSL(this._rgb, 2, -ratio);\n\t\treturn this;\n\t}\n\tsaturate(ratio) {\n\t\tmodHSL(this._rgb, 1, ratio);\n\t\treturn this;\n\t}\n\tdesaturate(ratio) {\n\t\tmodHSL(this._rgb, 1, -ratio);\n\t\treturn this;\n\t}\n\trotate(deg) {\n\t\trotate(this._rgb, deg);\n\t\treturn this;\n\t}\n}\nfunction index_esm(input) {\n\treturn new Color(input);\n}\n\nconst isPatternOrGradient = (value) => value instanceof CanvasGradient || value instanceof CanvasPattern;\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n let type, xOffset, yOffset, size, cornerRadius;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n ctx.arc(x, y, radius, 0, TAU);\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n ctx.rect(x - size, y - size, 2 * size, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(evt, canvas) {\n const e = evt.native || evt;\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _toLeftRightCenter as $, _rlookupByKey as A, getAngleFromPoint as B, toPadding as C, each as D, getMaximumSize as E, _getParentNode as F, readUsedSize as G, HALF_PI as H, throttled as I, supportsEventListenerOptions as J, _isDomSupported as K, log10 as L, _factorize as M, finiteOrDefault as N, callback as O, PI as P, _addGrace as Q, toDegrees as R, _measureText as S, TAU as T, _int16Range as U, _alignPixel as V, clipArea as W, renderText as X, unclipArea as Y, toFont as Z, _arrayUnique as _, resolve as a, _angleDiff as a$, _alignStartEnd as a0, overrides as a1, merge as a2, _capitalize as a3, descriptors as a4, isFunction as a5, _attachContext as a6, _createResolver as a7, _descriptors as a8, mergeIf as a9, restoreTextDirection as aA, noop as aB, distanceBetweenPoints as aC, _setMinAndMaxByKey as aD, niceNum as aE, almostWhole as aF, almostEquals as aG, _decimalPlaces as aH, _longestText as aI, _filterBetween as aJ, _lookup as aK, getHoverColor as aL, clone$1 as aM, _merger as aN, _mergerIf as aO, _deprecated as aP, toFontString as aQ, splineCurve as aR, splineCurveMonotone as aS, getStyle as aT, fontString as aU, toLineHeight as aV, PITAU as aW, INFINITY as aX, RAD_PER_DEG as aY, QUARTER_PI as aZ, TWO_THIRDS_PI as a_, uid as aa, debounce as ab, retinaScale as ac, clearCanvas as ad, setsEqual as ae, _elementsEqual as af, _isClickEvent as ag, _isBetween as ah, _readValueToProps as ai, _updateBezierControlPoints as aj, _computeSegments as ak, _boundSegments as al, _steppedInterpolation as am, _bezierInterpolation as an, _pointInLine as ao, _steppedLineTo as ap, _bezierCurveTo as aq, drawPoint as ar, addRoundedRectPath as as, toTRBL as at, toTRBLCorners as au, _boundSegment as av, _normalizeAngle as aw, getRtlAdapter as ax, overrideTextDirection as ay, _textX as az, isArray as b, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, isNumber as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _limitValue as w, _lookupByKey as x, getRelativePosition as y, _isPointInArea as z };\n","import type { LinearScale, RadialLinearScale } from 'chart.js';\nimport type { IErrorBarRDataPoint, IErrorBarXYDataPoint } from './base';\n\nexport const allModelKeys = ['xMin', 'xMax', 'yMin', 'yMax'];\n\nexport function modelKeys(horizontal: boolean): (keyof IErrorBarXYDataPoint)[] {\n return (horizontal ? allModelKeys.slice(0, 2) : allModelKeys.slice(2)) as any;\n}\n\nexport function calculateScale(\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n properties: any,\n data: Partial,\n index: number,\n scale: LinearScale,\n reset?: boolean\n): void {\n const keys = [`${scale.axis}Min`, `${scale.axis}Max`] as const;\n const base = scale.getBasePixel();\n\n for (const key of keys) {\n const v = data[key as keyof IErrorBarXYDataPoint];\n if (Array.isArray(v)) {\n // eslint-disable-next-line no-param-reassign\n properties[key] = v.map((d) => (reset ? base : scale.getPixelForValue(d, index)));\n } else if (typeof v === 'number') {\n // eslint-disable-next-line no-param-reassign\n properties[key] = reset ? base : scale.getPixelForValue(v, index);\n }\n }\n}\n\nexport function calculatePolarScale(\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n properties: any,\n data: IErrorBarRDataPoint,\n scale: RadialLinearScale,\n reset: boolean,\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n options: any\n): void {\n const animationOpts = options.animation;\n const keys = [`${scale.axis}Min`, `${scale.axis}Max`];\n\n const toAngle = (v: number) => {\n const valueRadius = scale.getDistanceFromCenterForValue(v);\n const resetRadius = animationOpts.animateScale ? 0 : valueRadius;\n return reset ? resetRadius : valueRadius;\n };\n\n for (const key of keys) {\n const v = data[key as keyof IErrorBarRDataPoint];\n if (Array.isArray(v)) {\n // eslint-disable-next-line no-param-reassign\n properties[key] = v.map(toAngle);\n } else if (typeof v === 'number') {\n // eslint-disable-next-line no-param-reassign\n properties[key] = toAngle(v);\n }\n }\n}\n","import type { Element, ArcProps } from 'chart.js';\n\nexport const errorBarDefaults = {\n errorBarLineWidth: { v: [1, 3] },\n errorBarColor: { v: ['#2c2c2c', '#1f1f1f'] },\n errorBarWhiskerLineWidth: { v: [1, 3] },\n errorBarWhiskerRatio: { v: [0.2, 0.25] },\n errorBarWhiskerSize: { v: [20, 24] },\n errorBarWhiskerColor: { v: ['#2c2c2c', '#1f1f1f'] },\n};\n\nexport const errorBarDescriptors = /* #__PURE__ */ {\n _scriptable: true,\n _indexable: (name: string): boolean => name !== 'v',\n};\n\nexport interface IErrorBarOptions {\n /**\n * line width of the center line\n * @default {v: [1, 3]}\n * @scriptable\n */\n errorBarLineWidth: number | { v: number[] };\n /**\n * color of the center line\n * @default {v: ['#2c2c2c', '#1f1f1f']}\n * @scriptable\n */\n errorBarColor: string | { v: string[] };\n /**\n * line width of the whisker lines\n * @default {v: [1, 3]}\n * @scriptable\n */\n errorBarWhiskerLineWidth: number | { v: number[] };\n /**\n * width of the whiskers in relation to the bar width, use `0` to force a fixed with, see below\n * @default {v: [0.2, 0.25]}\n * @scriptable\n */\n errorBarWhiskerRatio: number | { v: number[] };\n /**\n * pixel width of the whiskers for non bar chart cases\n * @default {v: [20, 24]}\n * @scriptable\n */\n errorBarWhiskerSize: number | { v: number[] };\n /**\n * color of the whisker lines\n * @default {v: ['#2c2c2c', '#1f1f1f']}\n * @scriptable\n */\n errorBarWhiskerColor: string | { v: string[] };\n}\n\nexport const styleKeys = Object.keys(errorBarDefaults);\n\nfunction resolveMulti(vMin: number | number[], vMax: number | number[]) {\n const vMinArr = Array.isArray(vMin) ? vMin : [vMin];\n const vMaxArr = Array.isArray(vMax) ? vMax : [vMax];\n\n if (vMinArr.length === vMaxArr.length) {\n return vMinArr.map((v, i) => [v, vMaxArr[i]]);\n }\n const max = Math.max(vMinArr.length, vMaxArr.length);\n\n return Array(max).map((_, i) => [vMinArr[i % vMinArr.length], vMaxArr[i % vMaxArr.length]]);\n}\n\nfunction resolveOption(val: T | { v: T[] }, index: number): T;\nfunction resolveOption(val: readonly T[], index: number): T;\nfunction resolveOption(val: T | { v: T[] } | readonly T[], index: number) {\n if (typeof val === 'string' || typeof val === 'number') {\n return val;\n }\n const v = Array.isArray(val) ? val : (val as unknown as { v: T[] }).v;\n return v[index % v.length];\n}\n\nfunction calculateHalfSize(total: number | null, options: IErrorBarOptions, i: number) {\n const ratio = resolveOption(options.errorBarWhiskerRatio, i);\n if (total != null && ratio > 0) {\n return total * ratio * 0.5;\n }\n const size = resolveOption(options.errorBarWhiskerSize, i);\n return size * 0.5;\n}\n\nfunction drawErrorBarVertical(\n props: IErrorBarProps,\n vMin: null | number | number[],\n vMax: null | number | number[],\n options: IErrorBarOptions,\n ctx: CanvasRenderingContext2D\n) {\n ctx.save();\n ctx.translate(props.x, 0);\n\n const bars = resolveMulti(vMin == null ? props.y : vMin, vMax == null ? props.y : vMax);\n\n bars.reverse().forEach(([mi, ma], j) => {\n const i = bars.length - j - 1;\n const halfWidth = calculateHalfSize(props.width, options, i);\n // center line\n ctx.lineWidth = resolveOption(options.errorBarLineWidth, i);\n ctx.strokeStyle = resolveOption(options.errorBarColor, i);\n ctx.beginPath();\n ctx.moveTo(0, mi);\n ctx.lineTo(0, ma);\n ctx.stroke();\n\n // whisker\n ctx.lineWidth = resolveOption(options.errorBarWhiskerLineWidth, i);\n ctx.strokeStyle = resolveOption(options.errorBarWhiskerColor, i);\n ctx.beginPath();\n ctx.moveTo(-halfWidth, mi);\n ctx.lineTo(halfWidth, mi);\n ctx.moveTo(-halfWidth, ma);\n ctx.lineTo(halfWidth, ma);\n ctx.stroke();\n });\n\n ctx.restore();\n}\n\nfunction drawErrorBarHorizontal(\n props: IErrorBarProps,\n vMin: null | number | number[],\n vMax: null | number | number[],\n options: IErrorBarOptions,\n ctx: CanvasRenderingContext2D\n) {\n ctx.save();\n ctx.translate(0, props.y);\n\n const bars = resolveMulti(vMin == null ? props.x : vMin, vMax == null ? props.x : vMax);\n\n bars.reverse().forEach(([mi, ma], j) => {\n const i = bars.length - j - 1;\n const halfHeight = calculateHalfSize(props.height, options, i);\n // center line\n ctx.lineWidth = resolveOption(options.errorBarLineWidth, i);\n ctx.strokeStyle = resolveOption(options.errorBarColor, i);\n ctx.beginPath();\n ctx.moveTo(mi, 0);\n ctx.lineTo(ma, 0);\n ctx.stroke();\n\n // whisker\n ctx.lineWidth = resolveOption(options.errorBarWhiskerLineWidth, i);\n ctx.strokeStyle = resolveOption(options.errorBarWhiskerColor, i);\n ctx.beginPath();\n ctx.moveTo(mi, -halfHeight);\n ctx.lineTo(mi, halfHeight);\n ctx.moveTo(ma, -halfHeight);\n ctx.lineTo(ma, halfHeight);\n ctx.stroke();\n });\n\n ctx.restore();\n}\n\nexport interface IErrorBarProps {\n x: number;\n y: number;\n width: number;\n height: number;\n xMin?: number | number[];\n yMin?: number | number[];\n xMax?: number | number[];\n yMax?: number | number[];\n}\n\nexport function renderErrorBar

(elem: Element, ctx: CanvasRenderingContext2D): void {\n const props = elem.getProps(['x', 'y', 'width', 'height', 'xMin', 'xMax', 'yMin', 'yMax']);\n if (props.xMin != null || props.xMax != null) {\n drawErrorBarHorizontal(props, props.xMin ?? null, props.xMax ?? null, elem.options as any, ctx);\n }\n if (props.yMin != null || props.yMax != null) {\n drawErrorBarVertical(props, props.yMin ?? null, props.yMax ?? null, elem.options as any, ctx);\n }\n}\n\n/**\n * @param {number} vMin\n * @param {number} vMax\n * @param {CanvasRenderingContext2D} ctx\n */\nfunction drawErrorBarArc(\n props: ArcProps,\n vMin: null | number | number[],\n vMax: null | number | number[],\n options: IErrorBarOptions,\n ctx: CanvasRenderingContext2D\n) {\n ctx.save();\n ctx.translate(props.x, props.y); // move to center\n\n const angle = (props.startAngle + props.endAngle) / 2;\n const cosAngle = Math.cos(angle);\n const sinAngle = Math.sin(angle);\n // perpendicular\n const v = {\n x: -sinAngle,\n y: cosAngle,\n };\n const length = Math.sqrt(v.x * v.x + v.y * v.y);\n v.x /= length;\n v.y /= length;\n\n const bars = resolveMulti(vMin ?? props.outerRadius, vMax ?? props.outerRadius);\n\n bars.reverse().forEach(([mi, ma], j) => {\n const i = bars.length - j - 1;\n\n const minCos = mi * cosAngle;\n const minSin = mi * sinAngle;\n const maxCos = ma * cosAngle;\n const maxSin = ma * sinAngle;\n\n const halfHeight = calculateHalfSize(null, options, i);\n const eX = v.x * halfHeight;\n const eY = v.y * halfHeight;\n\n // center line\n ctx.lineWidth = resolveOption(options.errorBarLineWidth, i);\n ctx.strokeStyle = resolveOption(options.errorBarColor, i);\n ctx.beginPath();\n ctx.moveTo(minCos, minSin);\n ctx.lineTo(maxCos, maxSin);\n ctx.stroke();\n\n // whisker\n ctx.lineWidth = resolveOption(options.errorBarWhiskerLineWidth, i);\n ctx.strokeStyle = resolveOption(options.errorBarWhiskerColor, i);\n ctx.beginPath();\n ctx.moveTo(minCos + eX, minSin + eY);\n ctx.lineTo(minCos - eX, minSin - eY);\n ctx.moveTo(maxCos + eX, maxSin + eY);\n ctx.lineTo(maxCos - eX, maxSin - eY);\n ctx.stroke();\n });\n\n ctx.restore();\n}\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function renderErrorBarArc(elem: any, ctx: CanvasRenderingContext2D): void {\n const props = elem.getProps(['x', 'y', 'startAngle', 'endAngle', 'rMin', 'rMax', 'outerRadius']);\n if (props.rMin != null || props.rMax != null) {\n drawErrorBarArc(props, props.rMin, props.rMax, elem.options as any, ctx);\n }\n}\n","import { BarElement } from 'chart.js';\nimport { renderErrorBar, errorBarDefaults, errorBarDescriptors, IErrorBarOptions } from './render';\n\nexport default class BarWithErrorBar extends BarElement {\n draw(ctx: CanvasRenderingContext2D): void {\n super.draw(ctx);\n\n renderErrorBar(this, ctx);\n }\n\n static readonly id = 'barWithErrorBar';\n\n static readonly defaults: any = /* #__PURE__ */ { ...BarElement.defaults, ...errorBarDefaults };\n\n static readonly defaultRoutes = BarElement.defaultRoutes;\n\n static readonly descriptors = errorBarDescriptors;\n}\n\ndeclare module 'chart.js' {\n export interface ElementOptionsByType {\n barWithErrorBar: ScriptableAndArrayOptions<\n IErrorBarOptions & BarOptions & BarHoverOptions,\n ScriptableContext\n >;\n }\n}\n","import { PointElement } from 'chart.js';\nimport { renderErrorBar, errorBarDefaults, errorBarDescriptors, IErrorBarOptions } from './render';\n\nexport default class PointWithErrorBar extends PointElement {\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n draw(ctx: CanvasRenderingContext2D, area?: any): void {\n (super.draw.call as any)(this, ctx, area);\n\n renderErrorBar(this as any, ctx);\n }\n\n static readonly id = 'pointWithErrorBar';\n\n static readonly defaults: any = /* #__PURE__ */ { ...PointElement.defaults, ...errorBarDefaults };\n\n static readonly defaultRoutes = PointElement.defaultRoutes;\n\n static readonly descriptors = errorBarDescriptors;\n}\n\ndeclare module 'chart.js' {\n export interface ElementOptionsByType {\n pointWithErrorBar: ScriptableAndArrayOptions<\n IErrorBarOptions & PointOptions & PointHoverOptions,\n ScriptableContext\n >;\n }\n}\n","import { ArcElement } from 'chart.js';\nimport { renderErrorBarArc, errorBarDefaults, errorBarDescriptors, IErrorBarOptions } from './render';\n\nexport default class ArcWithErrorBar extends ArcElement {\n draw(ctx: CanvasRenderingContext2D): void {\n super.draw(ctx);\n\n renderErrorBarArc(this, ctx);\n }\n\n static readonly id = 'arcWithErrorBar';\n\n static readonly defaults: any = /* #__PURE__ */ { ...ArcElement.defaults, ...errorBarDefaults };\n\n static readonly defaultRoutes = ArcElement.defaultRoutes;\n\n static readonly descriptors = errorBarDescriptors;\n}\n\ndeclare module 'chart.js' {\n export interface ElementOptionsByType {\n arcWithErrorBar: ScriptableAndArrayOptions<\n IErrorBarOptions & ArcOptions & ArcHoverOptions,\n ScriptableContext\n >;\n }\n}\n","import { Tooltip, PolarAreaController, TooltipItem, TooltipModel } from 'chart.js';\nimport { modelKeys } from './utils';\nimport type { IErrorBarRDataPoint, IErrorBarXYDataPoint } from './base';\n\nfunction reverseOrder(v: T | T[]) {\n return Array.isArray(v) ? v.slice().reverse() : v;\n}\n\nexport function generateBarTooltip(this: TooltipModel<'bar'>, item: TooltipItem<'bar'>): string {\n const keys = modelKeys((item.element as any).horizontal);\n const base = (Tooltip as any).defaults.callbacks.label.call(this, item);\n const v = item.chart.data.datasets[item.datasetIndex].data[item.dataIndex] as unknown as IErrorBarXYDataPoint;\n if (v == null || keys.every((k) => v[k] == null)) {\n return base;\n }\n return `${base} (${reverseOrder(v[keys[0]])} .. ${v[keys[1]]})`;\n}\n\nexport function generateTooltipScatter(item: TooltipItem<'scatter'>): string {\n const v = item.chart.data.datasets[item.datasetIndex].data[item.dataIndex] as unknown as IErrorBarXYDataPoint;\n\n const subLabel = (base: string | number | boolean, horizontal: boolean) => {\n const keys = modelKeys(horizontal);\n if (v == null || keys.every((k) => v[k] == null)) {\n return base;\n }\n return `${base} [${reverseOrder(v[keys[0]])} .. ${v[keys[1]]}]`;\n };\n\n return `(${subLabel(item.label, true)}, ${subLabel(item.parsed.y, false)})`;\n}\n\nexport function generateTooltipPolar(this: TooltipModel<'polarArea'>, item: TooltipItem<'polarArea'>): string {\n const base = (PolarAreaController as any).overrides.plugins.tooltip.callbacks.label.call(this, item);\n const v = item.chart.data.datasets[item.datasetIndex].data[item.dataIndex] as unknown as IErrorBarRDataPoint;\n\n const keys = ['rMin', 'rMax'] as const;\n if (v == null || keys.every((k) => v[k] == null)) {\n return base;\n }\n return `${base} [${reverseOrder(v[keys[0]])} .. ${v[keys[1]]}]`;\n}\n","import { color } from 'chart.js/helpers';\nimport { styleKeys } from './elements/render';\nimport { allModelKeys } from './controllers/utils';\n\nconst interpolators = {\n color(from: string, to: string, factor: number) {\n const f = from || 'transparent';\n const t = to || 'transparent';\n if (f === t) {\n return to;\n }\n const c0 = color(f);\n const c1 = c0.valid && color(t);\n return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to;\n },\n number(from: number, to: number, factor: number) {\n if (from === to) {\n return to;\n }\n return from + (to - from) * factor;\n },\n};\n\nfunction interpolateArrayOption(\n from: T | T[] | { v: T[] },\n to: T | T[] | { v: T[] },\n factor: number,\n type: 'string' | 'number',\n interpolator: (from: T, to: T, factor: number) => T\n):\n | T\n | T[]\n | {\n v: T[];\n } {\n if (typeof from === type && typeof to === type) {\n return interpolator(from as T, to as T, factor);\n }\n if (Array.isArray(from) && Array.isArray(to)) {\n return from.map((f, i) => interpolator(f, to[i], factor));\n }\n const isV = (t: T | T[] | { v: T[] }): t is { v: T[] } => t && Array.isArray((t as { v: T[] }).v);\n\n if (isV(from) && isV(to)) {\n return { v: from.v.map((f, i) => interpolator(f, to.v[i], factor)) };\n }\n return to;\n}\n\nfunction interpolateNumberOptionArray(\n from: number[],\n to: number[],\n factor: number\n): number | number[] | { v: number[] } {\n return interpolateArrayOption(from, to, factor, 'number', interpolators.number);\n}\n\nfunction interpolateColorOptionArray(\n from: string[],\n to: string[],\n factor: number\n): string | string[] | { v: string[] } {\n return interpolateArrayOption(from, to, factor, 'string', interpolators.color);\n}\n\nexport const animationHints = {\n animations: {\n numberArray: {\n fn: interpolateNumberOptionArray,\n properties: allModelKeys.concat(\n styleKeys.filter((d) => !d.endsWith('Color')),\n ['rMin', 'rMax']\n ),\n },\n colorArray: {\n fn: interpolateColorOptionArray,\n properties: styleKeys.filter((d) => d.endsWith('Color')),\n },\n },\n};\n\nexport default animationHints;\n","import type { Scale } from 'chart.js';\n\nexport interface IErrorBarXDataPoint {\n /**\n * the actual value\n */\n x: number;\n /**\n * the minimal absolute error bar value\n */\n xMin: number | number[];\n /**\n * the maximal absolute error bar value\n */\n xMax: number | number[];\n}\n\nexport interface IErrorBarYDataPoint {\n /**\n * the actual value\n */\n y: number;\n /**\n * the minimal absolute error bar value\n */\n yMin: number | number[];\n /**\n * the maximal absolute error bar value\n */\n yMax: number | number[];\n}\n\nexport interface IErrorBarRDataPoint {\n /**\n * the actual value\n */\n r: number;\n /**\n * the minimal absolute error bar value\n */\n rMin: number | number[];\n /**\n * the maximal absolute error bar value\n */\n rMax: number | number[];\n}\n\nexport interface IErrorBarXYDataPoint extends IErrorBarXDataPoint, IErrorBarYDataPoint {}\n\nexport function getMinMax(\n scale: Scale,\n superMethod: (scale: Scale) => { min: number; max: number }\n): { min: number; max: number } {\n const { axis } = scale;\n // eslint-disable-next-line no-param-reassign\n scale.axis = `${axis}MinMin`;\n const { min } = superMethod(scale);\n // eslint-disable-next-line no-param-reassign\n scale.axis = `${axis}MaxMax`;\n const { max } = superMethod(scale);\n // eslint-disable-next-line no-param-reassign\n scale.axis = axis;\n return { min, max };\n}\n\nfunction computeExtrema(v: number, vm: number | number[], op: (...args: number[]) => number) {\n if (Array.isArray(vm)) {\n return op(...vm);\n }\n if (typeof vm === 'number') {\n return vm;\n }\n return v;\n}\n\nexport function parseErrorNumberData(parsed: any[], scale: Scale, data: any[], start: number, count: number): void {\n const axis = typeof scale === 'string' ? scale : scale.axis;\n const vMin = `${axis}Min`;\n const vMax = `${axis}Max`;\n const vMinMin = `${axis}MinMin`;\n const vMaxMax = `${axis}MaxMax`;\n for (let i = 0; i < count; i += 1) {\n const index = i + start;\n const p = parsed[i];\n p[vMin] = data[index][vMin];\n p[vMax] = data[index][vMax];\n p[vMinMin] = computeExtrema(p[axis], p[vMin], Math.min);\n p[vMaxMax] = computeExtrema(p[axis], p[vMax], Math.max);\n }\n}\n\nexport function parseErrorLabelData(parsed: any[], scale: Scale, start: number, count: number): void {\n const { axis } = scale;\n const labels = scale.getLabels();\n for (let i = 0; i < count; i += 1) {\n const index = i + start;\n const p = parsed[i];\n p[axis] = scale.parse(labels[index], index);\n }\n}\n","import { registry, DatasetControllerChartComponent, ChartComponent } from 'chart.js';\n\nexport default function patchController(\n type: TYPE,\n config: T,\n controller: DatasetControllerChartComponent,\n elements: ChartComponent | ChartComponent[] = [],\n scales: ChartComponent | ChartComponent[] = []\n): T & { type: TYPE } {\n registry.addControllers(controller);\n if (Array.isArray(elements)) {\n registry.addElements(...elements);\n } else {\n registry.addElements(elements);\n }\n if (Array.isArray(scales)) {\n registry.addScales(...scales);\n } else {\n registry.addScales(scales);\n }\n const c = config as any;\n c.type = type;\n return c;\n}\n","import {\n Chart,\n BarController,\n LinearScale,\n CategoryScale,\n Scale,\n ChartMeta,\n UpdateMode,\n ScriptableAndArrayOptions,\n ScriptableContext,\n ChartConfiguration,\n ChartItem,\n BarControllerDatasetOptions,\n Element,\n} from 'chart.js';\nimport { merge } from 'chart.js/helpers';\nimport { calculateScale } from './utils';\nimport type { IErrorBarOptions } from '../elements/render';\nimport { BarWithErrorBar } from '../elements';\nimport { generateBarTooltip } from './tooltip';\nimport { animationHints } from '../animate';\nimport {\n getMinMax,\n parseErrorNumberData,\n parseErrorLabelData,\n IErrorBarXDataPoint,\n IErrorBarXYDataPoint,\n} from './base';\nimport patchController from './patchController';\n\nexport class BarWithErrorBarsController extends BarController {\n getMinMax(scale: Scale, canStack: boolean): { min: number; max: number } {\n return getMinMax(scale, (patchedScale) => super.getMinMax(patchedScale, canStack));\n }\n\n parseObjectData(meta: ChartMeta, data: any[], start: number, count: number): Record[] {\n const parsed = super.parseObjectData(meta, data, start, count);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n parseErrorNumberData(parsed, meta.vScale!, data, start, count);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n parseErrorLabelData(parsed, meta.iScale!, start, count);\n return parsed;\n }\n\n updateElement(\n element: Element,\n index: number | undefined,\n properties: Record,\n mode: UpdateMode\n ): void {\n // inject the other error bar related properties\n if (typeof index === 'number') {\n calculateScale(\n properties,\n this.getParsed(index) as Partial,\n index,\n this._cachedMeta.vScale as LinearScale,\n mode === 'reset'\n );\n }\n super.updateElement(element, index, properties, mode);\n }\n\n static readonly id = 'barWithErrorBars';\n\n static readonly defaults: any = /* #__PURE__ */ merge({}, [\n BarController.defaults,\n animationHints,\n {\n dataElementType: BarWithErrorBar.id,\n },\n ]);\n\n static readonly overrides: any = /* #__PURE__ */ merge({}, [\n (BarController as any).overrides,\n {\n plugins: {\n tooltip: {\n callbacks: {\n label: generateBarTooltip,\n },\n },\n },\n },\n ]);\n\n static readonly defaultRoutes = BarController.defaultRoutes;\n}\n\nexport interface BarWithErrorBarsControllerDatasetOptions\n extends BarControllerDatasetOptions,\n ScriptableAndArrayOptions> {}\n\ndeclare module 'chart.js' {\n export interface ChartTypeRegistry {\n barWithErrorBars: {\n chartOptions: BarControllerChartOptions;\n datasetOptions: BarWithErrorBarsControllerDatasetOptions;\n defaultDataPoint: IErrorBarXDataPoint;\n scales: keyof CartesianScaleTypeRegistry;\n metaExtensions: Record;\n parsedDataType: IErrorBarXDataPoint & ChartTypeRegistry['bar']['parsedDataType'];\n };\n }\n}\n\nexport class BarWithErrorBarsChart extends Chart<\n 'barWithErrorBars',\n DATA,\n LABEL\n> {\n static id = BarWithErrorBarsController.id;\n\n constructor(item: ChartItem, config: Omit, 'type'>) {\n super(\n item,\n patchController('barWithErrorBars', config, BarWithErrorBarsController, BarWithErrorBar, [\n LinearScale,\n CategoryScale,\n ])\n );\n }\n}\n","import {\n Chart,\n LineController,\n LinearScale,\n CategoryScale,\n ChartItem,\n Scale,\n ChartConfiguration,\n ChartMeta,\n LineControllerDatasetOptions,\n ScriptableAndArrayOptions,\n UpdateMode,\n ScriptableContext,\n Element,\n} from 'chart.js';\nimport { merge } from 'chart.js/helpers';\nimport { calculateScale } from './utils';\nimport type { IErrorBarOptions } from '../elements/render';\nimport { PointWithErrorBar } from '../elements';\nimport { generateBarTooltip } from './tooltip';\nimport { animationHints } from '../animate';\nimport {\n getMinMax,\n parseErrorNumberData,\n parseErrorLabelData,\n IErrorBarXDataPoint,\n IErrorBarXYDataPoint,\n} from './base';\nimport patchController from './patchController';\n\nexport class LineWithErrorBarsController extends LineController {\n getMinMax(scale: Scale, canStack: boolean): { min: number; max: number } {\n return getMinMax(scale, (patchedScale) => super.getMinMax(patchedScale, canStack));\n }\n\n parseObjectData(meta: ChartMeta, data: any[], start: number, count: number): Record[] {\n const parsed = super.parseObjectData(meta, data, start, count);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n parseErrorNumberData(parsed, meta.vScale!, data, start, count);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n parseErrorLabelData(parsed, meta.iScale!, start, count);\n return parsed;\n }\n\n updateElement(\n element: Element,\n index: number | undefined,\n properties: Record,\n mode: UpdateMode\n ): void {\n // inject the other error bar related properties\n if (element instanceof PointWithErrorBar && typeof index === 'number') {\n // inject the other error bar related properties\n calculateScale(\n properties,\n this.getParsed(index) as Partial,\n index,\n this._cachedMeta.vScale as LinearScale,\n mode === 'reset'\n );\n }\n super.updateElement(element, index, properties, mode);\n }\n\n static readonly id = 'lineWithErrorBars';\n\n static readonly defaults: any = /* #__PURE__ */ merge({}, [\n LineController.defaults,\n animationHints,\n {\n dataElementType: PointWithErrorBar.id,\n },\n ]);\n\n static readonly overrides: any = /* #__PURE__ */ merge({}, [\n (LineController as any).overrides,\n {\n plugins: {\n tooltip: {\n callbacks: {\n label: generateBarTooltip,\n },\n },\n },\n },\n ]);\n\n static readonly defaultRoutes = LineController.defaultRoutes;\n}\n\nexport interface LineWithErrorBarsControllerDatasetOptions\n extends LineControllerDatasetOptions,\n ScriptableAndArrayOptions> {}\n\ndeclare module 'chart.js' {\n export interface ChartTypeRegistry {\n lineWithErrorBars: {\n chartOptions: LineControllerChartOptions;\n datasetOptions: LineWithErrorBarsControllerDatasetOptions;\n defaultDataPoint: IErrorBarXDataPoint;\n scales: keyof CartesianScaleTypeRegistry;\n metaExtensions: Record;\n parsedDataType: IErrorBarXDataPoint & ChartTypeRegistry['line']['parsedDataType'];\n };\n }\n}\n\nexport class LineWithErrorBarsChart extends Chart<\n 'lineWithErrorBars',\n DATA,\n LABEL\n> {\n static id = LineWithErrorBarsController.id;\n\n constructor(item: ChartItem, config: Omit, 'type'>) {\n super(\n item,\n patchController('lineWithErrorBars', config, LineWithErrorBarsController, PointWithErrorBar, [\n LinearScale,\n CategoryScale,\n ])\n );\n }\n}\n","import {\n Chart,\n ScatterController,\n LinearScale,\n ChartItem,\n ChartConfiguration,\n ChartMeta,\n ScatterControllerDatasetOptions,\n Scale,\n ScriptableAndArrayOptions,\n UpdateMode,\n LineController,\n ScriptableContext,\n Element,\n} from 'chart.js';\nimport { merge } from 'chart.js/helpers';\nimport { calculateScale } from './utils';\nimport { getMinMax, IErrorBarXYDataPoint, parseErrorNumberData } from './base';\nimport { generateTooltipScatter } from './tooltip';\nimport { animationHints } from '../animate';\nimport { PointWithErrorBar } from '../elements';\nimport type { IErrorBarOptions } from '../elements/render';\nimport patchController from './patchController';\n\nexport class ScatterWithErrorBarsController extends ScatterController {\n getMinMax(scale: Scale, canStack: boolean): { min: number; max: number } {\n return getMinMax(scale, (patchedScale) => super.getMinMax(patchedScale, canStack));\n }\n\n parseObjectData(meta: ChartMeta, data: any[], start: number, count: number): Record[] {\n const parsed = super.parseObjectData(meta, data, start, count);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n parseErrorNumberData(parsed, meta.xScale!, data, start, count);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n parseErrorNumberData(parsed, meta.yScale!, data, start, count);\n return parsed;\n }\n\n updateElement(\n element: Element,\n index: number | undefined,\n properties: Record,\n mode: UpdateMode\n ): void {\n // inject the other error bar related properties\n if (element instanceof PointWithErrorBar && typeof index === 'number') {\n // inject the other error bar related properties\n calculateScale(\n properties,\n this.getParsed(index) as Partial,\n index,\n this._cachedMeta.xScale as LinearScale,\n mode === 'reset'\n );\n calculateScale(\n properties,\n this.getParsed(index) as Partial,\n index,\n this._cachedMeta.yScale as LinearScale,\n mode === 'reset'\n );\n }\n super.updateElement(element, index, properties, mode);\n }\n\n static readonly id = 'scatterWithErrorBars';\n\n static readonly defaults: any = /* #__PURE__ */ merge({}, [\n ScatterController.defaults,\n animationHints,\n {\n dataElementType: PointWithErrorBar.id,\n },\n ]);\n\n static readonly overrides: any = /* #__PURE__ */ merge({}, [\n (ScatterController as any).overrides,\n {\n plugins: {\n tooltip: {\n callbacks: {\n label: generateTooltipScatter,\n },\n },\n },\n },\n ]);\n\n static readonly defaultRoutes = LineController.defaultRoutes;\n}\n\nexport interface ScatterWithErrorBarsControllerDatasetOptions\n extends ScatterControllerDatasetOptions,\n ScriptableAndArrayOptions> {}\n\ndeclare module 'chart.js' {\n export interface ChartTypeRegistry {\n scatterWithErrorBars: {\n chartOptions: ScatterControllerChartOptions;\n datasetOptions: ScatterWithErrorBarsControllerDatasetOptions;\n defaultDataPoint: IErrorBarXYDataPoint;\n scales: keyof CartesianScaleTypeRegistry;\n metaExtensions: Record;\n parsedDataType: IErrorBarXYDataPoint & ChartTypeRegistry['scatter']['parsedDataType'];\n };\n }\n}\n\nexport class ScatterWithErrorBarsChart extends Chart<\n 'scatterWithErrorBars',\n DATA,\n LABEL\n> {\n static id = ScatterWithErrorBarsController.id;\n\n constructor(item: ChartItem, config: Omit, 'type'>) {\n super(\n item,\n patchController('scatterWithErrorBars', config, ScatterWithErrorBarsController, PointWithErrorBar, [LinearScale])\n );\n }\n}\n","import {\n Chart,\n PolarAreaController,\n RadialLinearScale,\n Scale,\n UpdateMode,\n Element,\n ChartMeta,\n ChartItem,\n ChartConfiguration,\n PolarAreaControllerDatasetOptions,\n ScriptableAndArrayOptions,\n ScriptableContext,\n} from 'chart.js';\nimport { merge } from 'chart.js/helpers';\nimport { calculatePolarScale } from './utils';\nimport { getMinMax, IErrorBarRDataPoint, parseErrorNumberData } from './base';\nimport { generateTooltipPolar } from './tooltip';\nimport { animationHints } from '../animate';\nimport { ArcWithErrorBar } from '../elements';\nimport type { IErrorBarOptions } from '../elements/render';\nimport patchController from './patchController';\n\nexport class PolarAreaWithErrorBarsController extends PolarAreaController {\n getMinMax(scale: Scale, canStack: boolean): { min: number; max: number } {\n return getMinMax(scale, (patchedScale) => super.getMinMax(patchedScale, canStack));\n }\n\n countVisibleElements(): number {\n const meta = this._cachedMeta;\n return meta.data.reduce((acc, _, index) => {\n // use different data lookup\n if (!Number.isNaN((meta._parsed[index] as { r: number }).r) && this.chart.getDataVisibility(index)) {\n return acc + 1;\n }\n return acc;\n }, 0);\n }\n\n // _computeAngle(index: number, mode, defaultAngle: number): number {\n // return this.chart.getDataVisibility(index)\n // ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n // : 0;\n // }\n\n // _computeAngle(index: number): number {\n // const meta = this._cachedMeta;\n // const count = (meta as any).count as number;\n // // use different data lookup\n // if (Number.isNaN((meta._parsed[index] as { r: number }).r) || !this.chart.getDataVisibility(index)) {\n // return 0;\n // }\n // const context = (this as any).getContext(index, true);\n // return resolve([(this.chart.options as any).elements.arc.angle, (2 * Math.PI) / count], context, index);\n // }\n\n // eslint-disable-next-line class-methods-use-this\n parseObjectData(meta: ChartMeta, data: any[], start: number, count: number): Record[] {\n const parsed = new Array(count);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const scale = meta.rScale!;\n for (let i = 0; i < count; i += 1) {\n const index = i + start;\n const item = data[index];\n const v = scale.parse(item[scale.axis], index);\n parsed[i] = {\n [scale.axis]: v,\n };\n }\n parseErrorNumberData(parsed, scale, data, start, count);\n return parsed;\n }\n\n updateElement(\n element: Element,\n index: number | undefined,\n properties: Record,\n mode: UpdateMode\n ): void {\n if (typeof index === 'number') {\n calculatePolarScale(\n properties,\n this.getParsed(index) as IErrorBarRDataPoint,\n this._cachedMeta.rScale as RadialLinearScale,\n mode === 'reset',\n this.chart.options\n );\n }\n super.updateElement(element, index, properties, mode);\n }\n\n updateElements(arcs: Element[], start: number, count: number, mode: UpdateMode): void {\n const scale = this.chart.scales.r as RadialLinearScale;\n const bak = scale.getDistanceFromCenterForValue;\n scale.getDistanceFromCenterForValue = function getDistanceFromCenterForValue(v) {\n if (typeof v === 'number') {\n return bak.call(this, v);\n }\n return bak.call(this, (v as any).r);\n };\n super.updateElements(arcs, start, count, mode);\n scale.getDistanceFromCenterForValue = bak;\n }\n\n static readonly id = 'polarAreaWithErrorBars';\n\n static readonly defaults: any = /* #__PURE__ */ merge({}, [\n PolarAreaController.defaults,\n animationHints,\n {\n dataElementType: ArcWithErrorBar.id,\n },\n ]);\n\n static readonly overrides: any = /* #__PURE__ */ merge({}, [\n (PolarAreaController as any).overrides,\n {\n plugins: {\n tooltip: {\n callbacks: {\n label: generateTooltipPolar,\n },\n },\n },\n },\n ]);\n\n static readonly defaultRoutes = PolarAreaController.defaultRoutes;\n}\n\nexport interface PolarAreaWithErrorBarsControllerDatasetOptions\n extends PolarAreaControllerDatasetOptions,\n ScriptableAndArrayOptions> {}\n\ndeclare module 'chart.js' {\n export interface ChartTypeRegistry {\n polarAreaWithErrorBars: {\n chartOptions: PolarAreaControllerChartOptions;\n datasetOptions: PolarAreaWithErrorBarsControllerDatasetOptions;\n defaultDataPoint: IErrorBarRDataPoint;\n scales: keyof CartesianScaleTypeRegistry;\n metaExtensions: Record;\n parsedDataType: IErrorBarRDataPoint & ChartTypeRegistry['polarArea']['parsedDataType'];\n };\n }\n}\n\nexport class PolarAreaWithErrorBarsChart extends Chart<\n 'polarAreaWithErrorBars',\n DATA,\n LABEL\n> {\n static id = PolarAreaWithErrorBarsController.id;\n\n constructor(item: ChartItem, config: Omit, 'type'>) {\n super(\n item,\n patchController('polarAreaWithErrorBars', config, PolarAreaWithErrorBarsController, ArcWithErrorBar, [\n RadialLinearScale,\n ])\n );\n }\n}\n","import { registry } from 'chart.js';\nimport {\n BarWithErrorBarsController,\n LineWithErrorBarsController,\n PolarAreaWithErrorBarsController,\n ScatterWithErrorBarsController,\n} from './controllers';\nimport { BarWithErrorBar, ArcWithErrorBar, PointWithErrorBar } from './elements';\n\nexport * from '.';\n\nregistry.addControllers(\n BarWithErrorBarsController,\n LineWithErrorBarsController,\n PolarAreaWithErrorBarsController,\n ScatterWithErrorBarsController\n);\nregistry.addElements(BarWithErrorBar, ArcWithErrorBar, PointWithErrorBar);\n","/*!\n * chartjs-plugin-datalabels v2.0.0\n * https://chartjs-plugin-datalabels.netlify.app\n * (c) 2017-2021 chartjs-plugin-datalabels contributors\n * Released under the MIT license\n */\nimport { isNullOrUndef, merge, toFont, resolve, toPadding, valueOrDefault, callback, isObject, each } from 'chart.js/helpers';\nimport { defaults as defaults$1, ArcElement, PointElement, BarElement } from 'chart.js';\n\nvar devicePixelRatio = (function() {\n if (typeof window !== 'undefined') {\n if (window.devicePixelRatio) {\n return window.devicePixelRatio;\n }\n\n // devicePixelRatio is undefined on IE10\n // https://stackoverflow.com/a/20204180/8837887\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/85\n var screen = window.screen;\n if (screen) {\n return (screen.deviceXDPI || 1) / (screen.logicalXDPI || 1);\n }\n }\n\n return 1;\n}());\n\nvar utils = {\n // @todo move this in Chart.helpers.toTextLines\n toTextLines: function(inputs) {\n var lines = [];\n var input;\n\n inputs = [].concat(inputs);\n while (inputs.length) {\n input = inputs.pop();\n if (typeof input === 'string') {\n lines.unshift.apply(lines, input.split('\\n'));\n } else if (Array.isArray(input)) {\n inputs.push.apply(inputs, input);\n } else if (!isNullOrUndef(inputs)) {\n lines.unshift('' + input);\n }\n }\n\n return lines;\n },\n\n // @todo move this in Chart.helpers.canvas.textSize\n // @todo cache calls of measureText if font doesn't change?!\n textSize: function(ctx, lines, font) {\n var items = [].concat(lines);\n var ilen = items.length;\n var prev = ctx.font;\n var width = 0;\n var i;\n\n ctx.font = font.string;\n\n for (i = 0; i < ilen; ++i) {\n width = Math.max(ctx.measureText(items[i]).width, width);\n }\n\n ctx.font = prev;\n\n return {\n height: ilen * font.lineHeight,\n width: width\n };\n },\n\n /**\n * Returns value bounded by min and max. This is equivalent to max(min, min(value, max)).\n * @todo move this method in Chart.helpers.bound\n * https://doc.qt.io/qt-5/qtglobal.html#qBound\n */\n bound: function(min, value, max) {\n return Math.max(min, Math.min(value, max));\n },\n\n /**\n * Returns an array of pair [value, state] where state is:\n * * -1: value is only in a0 (removed)\n * * 1: value is only in a1 (added)\n */\n arrayDiff: function(a0, a1) {\n var prev = a0.slice();\n var updates = [];\n var i, j, ilen, v;\n\n for (i = 0, ilen = a1.length; i < ilen; ++i) {\n v = a1[i];\n j = prev.indexOf(v);\n\n if (j === -1) {\n updates.push([v, 1]);\n } else {\n prev.splice(j, 1);\n }\n }\n\n for (i = 0, ilen = prev.length; i < ilen; ++i) {\n updates.push([prev[i], -1]);\n }\n\n return updates;\n },\n\n /**\n * https://github.com/chartjs/chartjs-plugin-datalabels/issues/70\n */\n rasterize: function(v) {\n return Math.round(v * devicePixelRatio) / devicePixelRatio;\n }\n};\n\nfunction orient(point, origin) {\n var x0 = origin.x;\n var y0 = origin.y;\n\n if (x0 === null) {\n return {x: 0, y: -1};\n }\n if (y0 === null) {\n return {x: 1, y: 0};\n }\n\n var dx = point.x - x0;\n var dy = point.y - y0;\n var ln = Math.sqrt(dx * dx + dy * dy);\n\n return {\n x: ln ? dx / ln : 0,\n y: ln ? dy / ln : -1\n };\n}\n\nfunction aligned(x, y, vx, vy, align) {\n switch (align) {\n case 'center':\n vx = vy = 0;\n break;\n case 'bottom':\n vx = 0;\n vy = 1;\n break;\n case 'right':\n vx = 1;\n vy = 0;\n break;\n case 'left':\n vx = -1;\n vy = 0;\n break;\n case 'top':\n vx = 0;\n vy = -1;\n break;\n case 'start':\n vx = -vx;\n vy = -vy;\n break;\n case 'end':\n // keep natural orientation\n break;\n default:\n // clockwise rotation (in degree)\n align *= (Math.PI / 180);\n vx = Math.cos(align);\n vy = Math.sin(align);\n break;\n }\n\n return {\n x: x,\n y: y,\n vx: vx,\n vy: vy\n };\n}\n\n// Line clipping (Cohen–Sutherland algorithm)\n// https://en.wikipedia.org/wiki/Cohen–Sutherland_algorithm\n\nvar R_INSIDE = 0;\nvar R_LEFT = 1;\nvar R_RIGHT = 2;\nvar R_BOTTOM = 4;\nvar R_TOP = 8;\n\nfunction region(x, y, rect) {\n var res = R_INSIDE;\n\n if (x < rect.left) {\n res |= R_LEFT;\n } else if (x > rect.right) {\n res |= R_RIGHT;\n }\n if (y < rect.top) {\n res |= R_TOP;\n } else if (y > rect.bottom) {\n res |= R_BOTTOM;\n }\n\n return res;\n}\n\nfunction clipped(segment, area) {\n var x0 = segment.x0;\n var y0 = segment.y0;\n var x1 = segment.x1;\n var y1 = segment.y1;\n var r0 = region(x0, y0, area);\n var r1 = region(x1, y1, area);\n var r, x, y;\n\n // eslint-disable-next-line no-constant-condition\n while (true) {\n if (!(r0 | r1) || (r0 & r1)) {\n // both points inside or on the same side: no clipping\n break;\n }\n\n // at least one point is outside\n r = r0 || r1;\n\n if (r & R_TOP) {\n x = x0 + (x1 - x0) * (area.top - y0) / (y1 - y0);\n y = area.top;\n } else if (r & R_BOTTOM) {\n x = x0 + (x1 - x0) * (area.bottom - y0) / (y1 - y0);\n y = area.bottom;\n } else if (r & R_RIGHT) {\n y = y0 + (y1 - y0) * (area.right - x0) / (x1 - x0);\n x = area.right;\n } else if (r & R_LEFT) {\n y = y0 + (y1 - y0) * (area.left - x0) / (x1 - x0);\n x = area.left;\n }\n\n if (r === r0) {\n x0 = x;\n y0 = y;\n r0 = region(x0, y0, area);\n } else {\n x1 = x;\n y1 = y;\n r1 = region(x1, y1, area);\n }\n }\n\n return {\n x0: x0,\n x1: x1,\n y0: y0,\n y1: y1\n };\n}\n\nfunction compute$1(range, config) {\n var anchor = config.anchor;\n var segment = range;\n var x, y;\n\n if (config.clamp) {\n segment = clipped(segment, config.area);\n }\n\n if (anchor === 'start') {\n x = segment.x0;\n y = segment.y0;\n } else if (anchor === 'end') {\n x = segment.x1;\n y = segment.y1;\n } else {\n x = (segment.x0 + segment.x1) / 2;\n y = (segment.y0 + segment.y1) / 2;\n }\n\n return aligned(x, y, range.vx, range.vy, config.align);\n}\n\nvar positioners = {\n arc: function(el, config) {\n var angle = (el.startAngle + el.endAngle) / 2;\n var vx = Math.cos(angle);\n var vy = Math.sin(angle);\n var r0 = el.innerRadius;\n var r1 = el.outerRadius;\n\n return compute$1({\n x0: el.x + vx * r0,\n y0: el.y + vy * r0,\n x1: el.x + vx * r1,\n y1: el.y + vy * r1,\n vx: vx,\n vy: vy\n }, config);\n },\n\n point: function(el, config) {\n var v = orient(el, config.origin);\n var rx = v.x * el.options.radius;\n var ry = v.y * el.options.radius;\n\n return compute$1({\n x0: el.x - rx,\n y0: el.y - ry,\n x1: el.x + rx,\n y1: el.y + ry,\n vx: v.x,\n vy: v.y\n }, config);\n },\n\n bar: function(el, config) {\n var v = orient(el, config.origin);\n var x = el.x;\n var y = el.y;\n var sx = 0;\n var sy = 0;\n\n if (el.horizontal) {\n x = Math.min(el.x, el.base);\n sx = Math.abs(el.base - el.x);\n } else {\n y = Math.min(el.y, el.base);\n sy = Math.abs(el.base - el.y);\n }\n\n return compute$1({\n x0: x,\n y0: y + sy,\n x1: x + sx,\n y1: y,\n vx: v.x,\n vy: v.y\n }, config);\n },\n\n fallback: function(el, config) {\n var v = orient(el, config.origin);\n\n return compute$1({\n x0: el.x,\n y0: el.y,\n x1: el.x,\n y1: el.y,\n vx: v.x,\n vy: v.y\n }, config);\n }\n};\n\nvar rasterize = utils.rasterize;\n\nfunction boundingRects(model) {\n var borderWidth = model.borderWidth || 0;\n var padding = model.padding;\n var th = model.size.height;\n var tw = model.size.width;\n var tx = -tw / 2;\n var ty = -th / 2;\n\n return {\n frame: {\n x: tx - padding.left - borderWidth,\n y: ty - padding.top - borderWidth,\n w: tw + padding.width + borderWidth * 2,\n h: th + padding.height + borderWidth * 2\n },\n text: {\n x: tx,\n y: ty,\n w: tw,\n h: th\n }\n };\n}\n\nfunction getScaleOrigin(el, context) {\n var scale = context.chart.getDatasetMeta(context.datasetIndex).vScale;\n\n if (!scale) {\n return null;\n }\n\n if (scale.xCenter !== undefined && scale.yCenter !== undefined) {\n return {x: scale.xCenter, y: scale.yCenter};\n }\n\n var pixel = scale.getBasePixel();\n return el.horizontal ?\n {x: pixel, y: null} :\n {x: null, y: pixel};\n}\n\nfunction getPositioner(el) {\n if (el instanceof ArcElement) {\n return positioners.arc;\n }\n if (el instanceof PointElement) {\n return positioners.point;\n }\n if (el instanceof BarElement) {\n return positioners.bar;\n }\n return positioners.fallback;\n}\n\nfunction drawRoundedRect(ctx, x, y, w, h, radius) {\n var HALF_PI = Math.PI / 2;\n\n if (radius) {\n var r = Math.min(radius, h / 2, w / 2);\n var left = x + r;\n var top = y + r;\n var right = x + w - r;\n var bottom = y + h - r;\n\n ctx.moveTo(x, top);\n if (left < right && top < bottom) {\n ctx.arc(left, top, r, -Math.PI, -HALF_PI);\n ctx.arc(right, top, r, -HALF_PI, 0);\n ctx.arc(right, bottom, r, 0, HALF_PI);\n ctx.arc(left, bottom, r, HALF_PI, Math.PI);\n } else if (left < right) {\n ctx.moveTo(left, y);\n ctx.arc(right, top, r, -HALF_PI, HALF_PI);\n ctx.arc(left, top, r, HALF_PI, Math.PI + HALF_PI);\n } else if (top < bottom) {\n ctx.arc(left, top, r, -Math.PI, 0);\n ctx.arc(left, bottom, r, 0, Math.PI);\n } else {\n ctx.arc(left, top, r, -Math.PI, Math.PI);\n }\n ctx.closePath();\n ctx.moveTo(x, y);\n } else {\n ctx.rect(x, y, w, h);\n }\n}\n\nfunction drawFrame(ctx, rect, model) {\n var bgColor = model.backgroundColor;\n var borderColor = model.borderColor;\n var borderWidth = model.borderWidth;\n\n if (!bgColor && (!borderColor || !borderWidth)) {\n return;\n }\n\n ctx.beginPath();\n\n drawRoundedRect(\n ctx,\n rasterize(rect.x) + borderWidth / 2,\n rasterize(rect.y) + borderWidth / 2,\n rasterize(rect.w) - borderWidth,\n rasterize(rect.h) - borderWidth,\n model.borderRadius);\n\n ctx.closePath();\n\n if (bgColor) {\n ctx.fillStyle = bgColor;\n ctx.fill();\n }\n\n if (borderColor && borderWidth) {\n ctx.strokeStyle = borderColor;\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = 'miter';\n ctx.stroke();\n }\n}\n\nfunction textGeometry(rect, align, font) {\n var h = font.lineHeight;\n var w = rect.w;\n var x = rect.x;\n var y = rect.y + h / 2;\n\n if (align === 'center') {\n x += w / 2;\n } else if (align === 'end' || align === 'right') {\n x += w;\n }\n\n return {\n h: h,\n w: w,\n x: x,\n y: y\n };\n}\n\nfunction drawTextLine(ctx, text, cfg) {\n var shadow = ctx.shadowBlur;\n var stroked = cfg.stroked;\n var x = rasterize(cfg.x);\n var y = rasterize(cfg.y);\n var w = rasterize(cfg.w);\n\n if (stroked) {\n ctx.strokeText(text, x, y, w);\n }\n\n if (cfg.filled) {\n if (shadow && stroked) {\n // Prevent drawing shadow on both the text stroke and fill, so\n // if the text is stroked, remove the shadow for the text fill.\n ctx.shadowBlur = 0;\n }\n\n ctx.fillText(text, x, y, w);\n\n if (shadow && stroked) {\n ctx.shadowBlur = shadow;\n }\n }\n}\n\nfunction drawText(ctx, lines, rect, model) {\n var align = model.textAlign;\n var color = model.color;\n var filled = !!color;\n var font = model.font;\n var ilen = lines.length;\n var strokeColor = model.textStrokeColor;\n var strokeWidth = model.textStrokeWidth;\n var stroked = strokeColor && strokeWidth;\n var i;\n\n if (!ilen || (!filled && !stroked)) {\n return;\n }\n\n // Adjust coordinates based on text alignment and line height\n rect = textGeometry(rect, align, font);\n\n ctx.font = font.string;\n ctx.textAlign = align;\n ctx.textBaseline = 'middle';\n ctx.shadowBlur = model.textShadowBlur;\n ctx.shadowColor = model.textShadowColor;\n\n if (filled) {\n ctx.fillStyle = color;\n }\n if (stroked) {\n ctx.lineJoin = 'round';\n ctx.lineWidth = strokeWidth;\n ctx.strokeStyle = strokeColor;\n }\n\n for (i = 0, ilen = lines.length; i < ilen; ++i) {\n drawTextLine(ctx, lines[i], {\n stroked: stroked,\n filled: filled,\n w: rect.w,\n x: rect.x,\n y: rect.y + rect.h * i\n });\n }\n}\n\nvar Label = function(config, ctx, el, index) {\n var me = this;\n\n me._config = config;\n me._index = index;\n me._model = null;\n me._rects = null;\n me._ctx = ctx;\n me._el = el;\n};\n\nmerge(Label.prototype, {\n /**\n * @private\n */\n _modelize: function(display, lines, config, context) {\n var me = this;\n var index = me._index;\n var font = toFont(resolve([config.font, {}], context, index));\n var color = resolve([config.color, defaults$1.color], context, index);\n\n return {\n align: resolve([config.align, 'center'], context, index),\n anchor: resolve([config.anchor, 'center'], context, index),\n area: context.chart.chartArea,\n backgroundColor: resolve([config.backgroundColor, null], context, index),\n borderColor: resolve([config.borderColor, null], context, index),\n borderRadius: resolve([config.borderRadius, 0], context, index),\n borderWidth: resolve([config.borderWidth, 0], context, index),\n clamp: resolve([config.clamp, false], context, index),\n clip: resolve([config.clip, false], context, index),\n color: color,\n display: display,\n font: font,\n lines: lines,\n offset: resolve([config.offset, 0], context, index),\n opacity: resolve([config.opacity, 1], context, index),\n origin: getScaleOrigin(me._el, context),\n padding: toPadding(resolve([config.padding, 0], context, index)),\n positioner: getPositioner(me._el),\n rotation: resolve([config.rotation, 0], context, index) * (Math.PI / 180),\n size: utils.textSize(me._ctx, lines, font),\n textAlign: resolve([config.textAlign, 'start'], context, index),\n textShadowBlur: resolve([config.textShadowBlur, 0], context, index),\n textShadowColor: resolve([config.textShadowColor, color], context, index),\n textStrokeColor: resolve([config.textStrokeColor, color], context, index),\n textStrokeWidth: resolve([config.textStrokeWidth, 0], context, index)\n };\n },\n\n update: function(context) {\n var me = this;\n var model = null;\n var rects = null;\n var index = me._index;\n var config = me._config;\n var value, label, lines;\n\n // We first resolve the display option (separately) to avoid computing\n // other options in case the label is hidden (i.e. display: false).\n var display = resolve([config.display, true], context, index);\n\n if (display) {\n value = context.dataset.data[index];\n label = valueOrDefault(callback(config.formatter, [value, context]), value);\n lines = isNullOrUndef(label) ? [] : utils.toTextLines(label);\n\n if (lines.length) {\n model = me._modelize(display, lines, config, context);\n rects = boundingRects(model);\n }\n }\n\n me._model = model;\n me._rects = rects;\n },\n\n geometry: function() {\n return this._rects ? this._rects.frame : {};\n },\n\n rotation: function() {\n return this._model ? this._model.rotation : 0;\n },\n\n visible: function() {\n return this._model && this._model.opacity;\n },\n\n model: function() {\n return this._model;\n },\n\n draw: function(chart, center) {\n var me = this;\n var ctx = chart.ctx;\n var model = me._model;\n var rects = me._rects;\n var area;\n\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n if (model.clip) {\n area = model.area;\n ctx.beginPath();\n ctx.rect(\n area.left,\n area.top,\n area.right - area.left,\n area.bottom - area.top);\n ctx.clip();\n }\n\n ctx.globalAlpha = utils.bound(0, model.opacity, 1);\n ctx.translate(rasterize(center.x), rasterize(center.y));\n ctx.rotate(model.rotation);\n\n drawFrame(ctx, rects.frame, model);\n drawText(ctx, model.lines, rects.text, model);\n\n ctx.restore();\n }\n});\n\nvar MIN_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991; // eslint-disable-line es/no-number-minsafeinteger\nvar MAX_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; // eslint-disable-line es/no-number-maxsafeinteger\n\nfunction rotated(point, center, angle) {\n var cos = Math.cos(angle);\n var sin = Math.sin(angle);\n var cx = center.x;\n var cy = center.y;\n\n return {\n x: cx + cos * (point.x - cx) - sin * (point.y - cy),\n y: cy + sin * (point.x - cx) + cos * (point.y - cy)\n };\n}\n\nfunction projected(points, axis) {\n var min = MAX_INTEGER;\n var max = MIN_INTEGER;\n var origin = axis.origin;\n var i, pt, vx, vy, dp;\n\n for (i = 0; i < points.length; ++i) {\n pt = points[i];\n vx = pt.x - origin.x;\n vy = pt.y - origin.y;\n dp = axis.vx * vx + axis.vy * vy;\n min = Math.min(min, dp);\n max = Math.max(max, dp);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nfunction toAxis(p0, p1) {\n var vx = p1.x - p0.x;\n var vy = p1.y - p0.y;\n var ln = Math.sqrt(vx * vx + vy * vy);\n\n return {\n vx: (p1.x - p0.x) / ln,\n vy: (p1.y - p0.y) / ln,\n origin: p0,\n ln: ln\n };\n}\n\nvar HitBox = function() {\n this._rotation = 0;\n this._rect = {\n x: 0,\n y: 0,\n w: 0,\n h: 0\n };\n};\n\nmerge(HitBox.prototype, {\n center: function() {\n var r = this._rect;\n return {\n x: r.x + r.w / 2,\n y: r.y + r.h / 2\n };\n },\n\n update: function(center, rect, rotation) {\n this._rotation = rotation;\n this._rect = {\n x: rect.x + center.x,\n y: rect.y + center.y,\n w: rect.w,\n h: rect.h\n };\n },\n\n contains: function(point) {\n var me = this;\n var margin = 1;\n var rect = me._rect;\n\n point = rotated(point, me.center(), -me._rotation);\n\n return !(point.x < rect.x - margin\n || point.y < rect.y - margin\n || point.x > rect.x + rect.w + margin * 2\n || point.y > rect.y + rect.h + margin * 2);\n },\n\n // Separating Axis Theorem\n // https://gamedevelopment.tutsplus.com/tutorials/collision-detection-using-the-separating-axis-theorem--gamedev-169\n intersects: function(other) {\n var r0 = this._points();\n var r1 = other._points();\n var axes = [\n toAxis(r0[0], r0[1]),\n toAxis(r0[0], r0[3])\n ];\n var i, pr0, pr1;\n\n if (this._rotation !== other._rotation) {\n // Only separate with r1 axis if the rotation is different,\n // else it's enough to separate r0 and r1 with r0 axis only!\n axes.push(\n toAxis(r1[0], r1[1]),\n toAxis(r1[0], r1[3])\n );\n }\n\n for (i = 0; i < axes.length; ++i) {\n pr0 = projected(r0, axes[i]);\n pr1 = projected(r1, axes[i]);\n\n if (pr0.max < pr1.min || pr1.max < pr0.min) {\n return false;\n }\n }\n\n return true;\n },\n\n /**\n * @private\n */\n _points: function() {\n var me = this;\n var rect = me._rect;\n var angle = me._rotation;\n var center = me.center();\n\n return [\n rotated({x: rect.x, y: rect.y}, center, angle),\n rotated({x: rect.x + rect.w, y: rect.y}, center, angle),\n rotated({x: rect.x + rect.w, y: rect.y + rect.h}, center, angle),\n rotated({x: rect.x, y: rect.y + rect.h}, center, angle)\n ];\n }\n});\n\nfunction coordinates(el, model, geometry) {\n var point = model.positioner(el, model);\n var vx = point.vx;\n var vy = point.vy;\n\n if (!vx && !vy) {\n // if aligned center, we don't want to offset the center point\n return {x: point.x, y: point.y};\n }\n\n var w = geometry.w;\n var h = geometry.h;\n\n // take in account the label rotation\n var rotation = model.rotation;\n var dx = Math.abs(w / 2 * Math.cos(rotation)) + Math.abs(h / 2 * Math.sin(rotation));\n var dy = Math.abs(w / 2 * Math.sin(rotation)) + Math.abs(h / 2 * Math.cos(rotation));\n\n // scale the unit vector (vx, vy) to get at least dx or dy equal to\n // w or h respectively (else we would calculate the distance to the\n // ellipse inscribed in the bounding rect)\n var vs = 1 / Math.max(Math.abs(vx), Math.abs(vy));\n dx *= vx * vs;\n dy *= vy * vs;\n\n // finally, include the explicit offset\n dx += model.offset * vx;\n dy += model.offset * vy;\n\n return {\n x: point.x + dx,\n y: point.y + dy\n };\n}\n\nfunction collide(labels, collider) {\n var i, j, s0, s1;\n\n // IMPORTANT Iterate in the reverse order since items at the end of the\n // list have an higher weight/priority and thus should be less impacted\n // by the overlapping strategy.\n\n for (i = labels.length - 1; i >= 0; --i) {\n s0 = labels[i].$layout;\n\n for (j = i - 1; j >= 0 && s0._visible; --j) {\n s1 = labels[j].$layout;\n\n if (s1._visible && s0._box.intersects(s1._box)) {\n collider(s0, s1);\n }\n }\n }\n\n return labels;\n}\n\nfunction compute(labels) {\n var i, ilen, label, state, geometry, center, proxy;\n\n // Initialize labels for overlap detection\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n state = label.$layout;\n\n if (state._visible) {\n // Chart.js 3 removed el._model in favor of getProps(), making harder to\n // abstract reading values in positioners. Also, using string arrays to\n // read values (i.e. var {a,b,c} = el.getProps([\"a\",\"b\",\"c\"])) would make\n // positioners inefficient in the normal case (i.e. not the final values)\n // and the code a bit ugly, so let's use a Proxy instead.\n proxy = new Proxy(label._el, {get: (el, p) => el.getProps([p], true)[p]});\n\n geometry = label.geometry();\n center = coordinates(proxy, label.model(), geometry);\n state._box.update(center, geometry, label.rotation());\n }\n }\n\n // Auto hide overlapping labels\n return collide(labels, function(s0, s1) {\n var h0 = s0._hidable;\n var h1 = s1._hidable;\n\n if ((h0 && h1) || h1) {\n s1._visible = false;\n } else if (h0) {\n s0._visible = false;\n }\n });\n}\n\nvar layout = {\n prepare: function(datasets) {\n var labels = [];\n var i, j, ilen, jlen, label;\n\n for (i = 0, ilen = datasets.length; i < ilen; ++i) {\n for (j = 0, jlen = datasets[i].length; j < jlen; ++j) {\n label = datasets[i][j];\n labels.push(label);\n label.$layout = {\n _box: new HitBox(),\n _hidable: false,\n _visible: true,\n _set: i,\n _idx: j\n };\n }\n }\n\n // TODO New `z` option: labels with a higher z-index are drawn\n // of top of the ones with a lower index. Lowest z-index labels\n // are also discarded first when hiding overlapping labels.\n labels.sort(function(a, b) {\n var sa = a.$layout;\n var sb = b.$layout;\n\n return sa._idx === sb._idx\n ? sb._set - sa._set\n : sb._idx - sa._idx;\n });\n\n this.update(labels);\n\n return labels;\n },\n\n update: function(labels) {\n var dirty = false;\n var i, ilen, label, model, state;\n\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n model = label.model();\n state = label.$layout;\n state._hidable = model && model.display === 'auto';\n state._visible = label.visible();\n dirty |= state._hidable;\n }\n\n if (dirty) {\n compute(labels);\n }\n },\n\n lookup: function(labels, point) {\n var i, state;\n\n // IMPORTANT Iterate in the reverse order since items at the end of\n // the list have an higher z-index, thus should be picked first.\n\n for (i = labels.length - 1; i >= 0; --i) {\n state = labels[i].$layout;\n\n if (state && state._visible && state._box.contains(point)) {\n return labels[i];\n }\n }\n\n return null;\n },\n\n draw: function(chart, labels) {\n var i, ilen, label, state, geometry, center;\n\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n label = labels[i];\n state = label.$layout;\n\n if (state._visible) {\n geometry = label.geometry();\n center = coordinates(label._el, label.model(), geometry);\n state._box.update(center, geometry, label.rotation());\n label.draw(chart, center);\n }\n }\n }\n};\n\nvar formatter = function(value) {\n if (isNullOrUndef(value)) {\n return null;\n }\n\n var label = value;\n var keys, klen, k;\n if (isObject(value)) {\n if (!isNullOrUndef(value.label)) {\n label = value.label;\n } else if (!isNullOrUndef(value.r)) {\n label = value.r;\n } else {\n label = '';\n keys = Object.keys(value);\n for (k = 0, klen = keys.length; k < klen; ++k) {\n label += (k !== 0 ? ', ' : '') + keys[k] + ': ' + value[keys[k]];\n }\n }\n }\n\n return '' + label;\n};\n\n/**\n * IMPORTANT: make sure to also update tests and TypeScript definition\n * files (`/test/specs/defaults.spec.js` and `/types/options.d.ts`)\n */\n\nvar defaults = {\n align: 'center',\n anchor: 'center',\n backgroundColor: null,\n borderColor: null,\n borderRadius: 0,\n borderWidth: 0,\n clamp: false,\n clip: false,\n color: undefined,\n display: true,\n font: {\n family: undefined,\n lineHeight: 1.2,\n size: undefined,\n style: undefined,\n weight: null\n },\n formatter: formatter,\n labels: undefined,\n listeners: {},\n offset: 4,\n opacity: 1,\n padding: {\n top: 4,\n right: 4,\n bottom: 4,\n left: 4\n },\n rotation: 0,\n textAlign: 'start',\n textStrokeColor: undefined,\n textStrokeWidth: 0,\n textShadowBlur: 0,\n textShadowColor: undefined\n};\n\n/**\n * @see https://github.com/chartjs/Chart.js/issues/4176\n */\n\nvar EXPANDO_KEY = '$datalabels';\nvar DEFAULT_KEY = '$default';\n\nfunction configure(dataset, options) {\n var override = dataset.datalabels;\n var listeners = {};\n var configs = [];\n var labels, keys;\n\n if (override === false) {\n return null;\n }\n if (override === true) {\n override = {};\n }\n\n options = merge({}, [options, override]);\n labels = options.labels || {};\n keys = Object.keys(labels);\n delete options.labels;\n\n if (keys.length) {\n keys.forEach(function(key) {\n if (labels[key]) {\n configs.push(merge({}, [\n options,\n labels[key],\n {_key: key}\n ]));\n }\n });\n } else {\n // Default label if no \"named\" label defined.\n configs.push(options);\n }\n\n // listeners: {: {: }}\n listeners = configs.reduce(function(target, config) {\n each(config.listeners || {}, function(fn, event) {\n target[event] = target[event] || {};\n target[event][config._key || DEFAULT_KEY] = fn;\n });\n\n delete config.listeners;\n return target;\n }, {});\n\n return {\n labels: configs,\n listeners: listeners\n };\n}\n\nfunction dispatchEvent(chart, listeners, label) {\n if (!listeners) {\n return;\n }\n\n var context = label.$context;\n var groups = label.$groups;\n var callback$1;\n\n if (!listeners[groups._set]) {\n return;\n }\n\n callback$1 = listeners[groups._set][groups._key];\n if (!callback$1) {\n return;\n }\n\n if (callback(callback$1, [context]) === true) {\n // Users are allowed to tweak the given context by injecting values that can be\n // used in scriptable options to display labels differently based on the current\n // event (e.g. highlight an hovered label). That's why we update the label with\n // the output context and schedule a new chart render by setting it dirty.\n chart[EXPANDO_KEY]._dirty = true;\n label.update(context);\n }\n}\n\nfunction dispatchMoveEvents(chart, listeners, previous, label) {\n var enter, leave;\n\n if (!previous && !label) {\n return;\n }\n\n if (!previous) {\n enter = true;\n } else if (!label) {\n leave = true;\n } else if (previous !== label) {\n leave = enter = true;\n }\n\n if (leave) {\n dispatchEvent(chart, listeners.leave, previous);\n }\n if (enter) {\n dispatchEvent(chart, listeners.enter, label);\n }\n}\n\nfunction handleMoveEvents(chart, event) {\n var expando = chart[EXPANDO_KEY];\n var listeners = expando._listeners;\n var previous, label;\n\n if (!listeners.enter && !listeners.leave) {\n return;\n }\n\n if (event.type === 'mousemove') {\n label = layout.lookup(expando._labels, event);\n } else if (event.type !== 'mouseout') {\n return;\n }\n\n previous = expando._hovered;\n expando._hovered = label;\n dispatchMoveEvents(chart, listeners, previous, label);\n}\n\nfunction handleClickEvents(chart, event) {\n var expando = chart[EXPANDO_KEY];\n var handlers = expando._listeners.click;\n var label = handlers && layout.lookup(expando._labels, event);\n if (label) {\n dispatchEvent(chart, handlers, label);\n }\n}\n\nvar plugin = {\n id: 'datalabels',\n\n defaults: defaults,\n\n beforeInit: function(chart) {\n chart[EXPANDO_KEY] = {\n _actives: []\n };\n },\n\n beforeUpdate: function(chart) {\n var expando = chart[EXPANDO_KEY];\n expando._listened = false;\n expando._listeners = {}; // {: {: {: }}}\n expando._datasets = []; // per dataset labels: [Label[]]\n expando._labels = []; // layouted labels: Label[]\n },\n\n afterDatasetUpdate: function(chart, args, options) {\n var datasetIndex = args.index;\n var expando = chart[EXPANDO_KEY];\n var labels = expando._datasets[datasetIndex] = [];\n var visible = chart.isDatasetVisible(datasetIndex);\n var dataset = chart.data.datasets[datasetIndex];\n var config = configure(dataset, options);\n var elements = args.meta.data || [];\n var ctx = chart.ctx;\n var i, j, ilen, jlen, cfg, key, el, label;\n\n ctx.save();\n\n for (i = 0, ilen = elements.length; i < ilen; ++i) {\n el = elements[i];\n el[EXPANDO_KEY] = [];\n\n if (visible && el && chart.getDataVisibility(i) && !el.skip) {\n for (j = 0, jlen = config.labels.length; j < jlen; ++j) {\n cfg = config.labels[j];\n key = cfg._key;\n\n label = new Label(cfg, ctx, el, i);\n label.$groups = {\n _set: datasetIndex,\n _key: key || DEFAULT_KEY\n };\n label.$context = {\n active: false,\n chart: chart,\n dataIndex: i,\n dataset: dataset,\n datasetIndex: datasetIndex\n };\n\n label.update(label.$context);\n el[EXPANDO_KEY].push(label);\n labels.push(label);\n }\n }\n }\n\n ctx.restore();\n\n // Store listeners at the chart level and per event type to optimize\n // cases where no listeners are registered for a specific event.\n merge(expando._listeners, config.listeners, {\n merger: function(event, target, source) {\n target[event] = target[event] || {};\n target[event][args.index] = source[event];\n expando._listened = true;\n }\n });\n },\n\n afterUpdate: function(chart, options) {\n chart[EXPANDO_KEY]._labels = layout.prepare(\n chart[EXPANDO_KEY]._datasets,\n options);\n },\n\n // Draw labels on top of all dataset elements\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/29\n // https://github.com/chartjs/chartjs-plugin-datalabels/issues/32\n afterDatasetsDraw: function(chart) {\n layout.draw(chart, chart[EXPANDO_KEY]._labels);\n },\n\n beforeEvent: function(chart, args) {\n // If there is no listener registered for this chart, `listened` will be false,\n // meaning we can immediately ignore the incoming event and avoid useless extra\n // computation for users who don't implement label interactions.\n if (chart[EXPANDO_KEY]._listened) {\n var event = args.event;\n switch (event.type) {\n case 'mousemove':\n case 'mouseout':\n handleMoveEvents(chart, event);\n break;\n case 'click':\n handleClickEvents(chart, event);\n break;\n }\n }\n },\n\n afterEvent: function(chart) {\n var expando = chart[EXPANDO_KEY];\n var previous = expando._actives;\n var actives = expando._actives = chart.getActiveElements();\n var updates = utils.arrayDiff(previous, actives);\n var i, ilen, j, jlen, update, label, labels;\n\n for (i = 0, ilen = updates.length; i < ilen; ++i) {\n update = updates[i];\n if (update[1]) {\n labels = update[0].element[EXPANDO_KEY] || [];\n for (j = 0, jlen = labels.length; j < jlen; ++j) {\n label = labels[j];\n label.$context.active = (update[1] === 1);\n label.update(label.$context);\n }\n }\n }\n\n if (expando._dirty || updates.length) {\n layout.update(expando._labels);\n chart.render();\n }\n\n delete expando._dirty;\n }\n};\n\nexport default plugin;\n","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function (date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaa':\n return dayPeriodEnumValue;\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n }\n}","import isValid from \"../isValid/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\n\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * var result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\n\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\n\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * var result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\n\nexport default function isLastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\n\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n var result; // Check for the difference of less than month\n\n if (difference < 1) {\n result = 0;\n } else {\n if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n // This will check if the date is end of Feb and assign a higher end of month date\n // to compare it with Jan\n dateLeft.setDate(30);\n }\n\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference); // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign; // Check for cases of one full calendar month\n\n if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n isLastMonthNotFull = false;\n }\n\n result = sign * (difference - Number(isLastMonthNotFull));\n } // Prevent negative zero\n\n\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\n\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function (value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n\n};\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\n\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import assign from \"../assign/index.js\";\nexport default function cloneObject(dirtyObject) {\n return assign({}, dirtyObject);\n}","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (Object.prototype.hasOwnProperty.call(dirtyObject, property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}","import compareAsc from \"../compareAsc/index.js\";\nimport differenceInMonths from \"../differenceInMonths/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_TWO_MONTHS = 86400;\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWords ` to `formatDistance`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * - The order of arguments is swapped to make the function\n * consistent with `differenceIn...` functions.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWords(\n * new Date(1986, 3, 4, 10, 32, 0),\n * new Date(1986, 3, 4, 11, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n *\n * // v2.0.0 onward\n *\n * formatDistance(\n * new Date(1986, 3, 4, 11, 32, 0),\n * new Date(1986, 3, 4, 10, 32, 0),\n * { addSuffix: true }\n * ) //=> 'in about 1 hour'\n * ```\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * const result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistance(dirtyDate, dirtyBaseDate) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n requiredArgs(2, arguments);\n var locale = options.locale || defaultLocale;\n\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property');\n }\n\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n\n var localizeOptions = cloneObject(options);\n localizeOptions.addSuffix = Boolean(options.addSuffix);\n localizeOptions.comparison = comparison;\n var dateLeft;\n var dateRight;\n\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000;\n var minutes = Math.round((seconds - offsetInSeconds) / 60);\n var months; // 0 up to 2 mins\n\n if (minutes < 2) {\n if (options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', null, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n }\n } // 2 mins up to 0.75 hrs\n\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions); // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions); // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60);\n return locale.formatDistance('aboutXHours', hours, localizeOptions); // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions); // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions); // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('aboutXMonths', months, localizeOptions);\n }\n\n months = differenceInMonths(dateRight, dateLeft); // 2 months up to 12 months\n\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions); // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12;\n var years = Math.floor(months / 12); // N years up to 1 years 3 months\n\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions); // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions); // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions);\n }\n }\n}","import distanceInWords from \"../formatDistance/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNow\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The function was renamed from `distanceInWordsToNow ` to `formatDistanceToNow`\n * to make its name consistent with `format` and `formatRelative`.\n *\n * ```javascript\n * // Before v2.0.0\n *\n * distanceInWordsToNow(new Date(2014, 6, 2), { addSuffix: true })\n * //=> 'in 6 months'\n *\n * // v2.0.0 onward\n *\n * formatDistanceToNow(new Date(2014, 6, 2), { addSuffix: true })\n * //=> 'in 6 months'\n * ```\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result specifies if now is earlier or later than the passed date\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * var result = formatDistanceToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * var result = formatDistanceToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * var result = formatDistanceToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * var eoLocale = require('date-fns/locale/eo')\n * var result = formatDistanceToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistanceToNow(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n return distanceInWords(dirtyDate, Date.now(), dirtyOptions);\n}","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n return valuesArray[index];\n };\n}","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n\n return undefined;\n}","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n standalone: {\n one: 'weniger als 1 Sekunde',\n other: 'weniger als {{count}} Sekunden'\n },\n withPreposition: {\n one: 'weniger als 1 Sekunde',\n other: 'weniger als {{count}} Sekunden'\n }\n },\n xSeconds: {\n standalone: {\n one: '1 Sekunde',\n other: '{{count}} Sekunden'\n },\n withPreposition: {\n one: '1 Sekunde',\n other: '{{count}} Sekunden'\n }\n },\n halfAMinute: {\n standalone: 'halbe Minute',\n withPreposition: 'halben Minute'\n },\n lessThanXMinutes: {\n standalone: {\n one: 'weniger als 1 Minute',\n other: 'weniger als {{count}} Minuten'\n },\n withPreposition: {\n one: 'weniger als 1 Minute',\n other: 'weniger als {{count}} Minuten'\n }\n },\n xMinutes: {\n standalone: {\n one: '1 Minute',\n other: '{{count}} Minuten'\n },\n withPreposition: {\n one: '1 Minute',\n other: '{{count}} Minuten'\n }\n },\n aboutXHours: {\n standalone: {\n one: 'etwa 1 Stunde',\n other: 'etwa {{count}} Stunden'\n },\n withPreposition: {\n one: 'etwa 1 Stunde',\n other: 'etwa {{count}} Stunden'\n }\n },\n xHours: {\n standalone: {\n one: '1 Stunde',\n other: '{{count}} Stunden'\n },\n withPreposition: {\n one: '1 Stunde',\n other: '{{count}} Stunden'\n }\n },\n xDays: {\n standalone: {\n one: '1 Tag',\n other: '{{count}} Tage'\n },\n withPreposition: {\n one: '1 Tag',\n other: '{{count}} Tagen'\n }\n },\n aboutXWeeks: {\n standalone: {\n one: 'etwa 1 Woche',\n other: 'etwa {{count}} Wochen'\n },\n withPreposition: {\n one: 'etwa 1 Woche',\n other: 'etwa {{count}} Wochen'\n }\n },\n xWeeks: {\n standalone: {\n one: '1 Woche',\n other: '{{count}} Wochen'\n },\n withPreposition: {\n one: '1 Woche',\n other: '{{count}} Wochen'\n }\n },\n aboutXMonths: {\n standalone: {\n one: 'etwa 1 Monat',\n other: 'etwa {{count}} Monate'\n },\n withPreposition: {\n one: 'etwa 1 Monat',\n other: 'etwa {{count}} Monaten'\n }\n },\n xMonths: {\n standalone: {\n one: '1 Monat',\n other: '{{count}} Monate'\n },\n withPreposition: {\n one: '1 Monat',\n other: '{{count}} Monaten'\n }\n },\n aboutXYears: {\n standalone: {\n one: 'etwa 1 Jahr',\n other: 'etwa {{count}} Jahre'\n },\n withPreposition: {\n one: 'etwa 1 Jahr',\n other: 'etwa {{count}} Jahren'\n }\n },\n xYears: {\n standalone: {\n one: '1 Jahr',\n other: '{{count}} Jahre'\n },\n withPreposition: {\n one: '1 Jahr',\n other: '{{count}} Jahren'\n }\n },\n overXYears: {\n standalone: {\n one: 'mehr als 1 Jahr',\n other: 'mehr als {{count}} Jahre'\n },\n withPreposition: {\n one: 'mehr als 1 Jahr',\n other: 'mehr als {{count}} Jahren'\n }\n },\n almostXYears: {\n standalone: {\n one: 'fast 1 Jahr',\n other: 'fast {{count}} Jahre'\n },\n withPreposition: {\n one: 'fast 1 Jahr',\n other: 'fast {{count}} Jahren'\n }\n }\n};\n\nvar formatDistance = function (token, count, options) {\n var result;\n var tokenValue = options !== null && options !== void 0 && options.addSuffix ? formatDistanceLocale[token].withPreposition : formatDistanceLocale[token].standalone;\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', String(count));\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return 'vor ' + result;\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\n// DIN 5008: https://de.wikipedia.org/wiki/Datumsformat#DIN_5008\nvar dateFormats = {\n full: 'EEEE, do MMMM y',\n // Montag, 7. Januar 2018\n long: 'do MMMM y',\n // 7. Januar 2018\n medium: 'do MMM y',\n // 7. Jan. 2018\n short: 'dd.MM.y' // 07.01.2018\n\n};\nvar timeFormats = {\n full: 'HH:mm:ss zzzz',\n long: 'HH:mm:ss z',\n medium: 'HH:mm:ss',\n short: 'HH:mm'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'um' {{time}}\",\n long: \"{{date}} 'um' {{time}}\",\n medium: '{{date}} {{time}}',\n short: '{{date}} {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'letzten' eeee 'um' p\",\n yesterday: \"'gestern um' p\",\n today: \"'heute um' p\",\n tomorrow: \"'morgen um' p\",\n nextWeek: \"eeee 'um' p\",\n other: 'P'\n};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['v.Chr.', 'n.Chr.'],\n abbreviated: ['v.Chr.', 'n.Chr.'],\n wide: ['vor Christus', 'nach Christus']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1. Quartal', '2. Quartal', '3. Quartal', '4. Quartal']\n}; // Note: in German, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],\n wide: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember']\n}; // https://st.unicode.org/cldr-apps/v#/de/Gregorian/\n\nvar formattingMonthValues = {\n narrow: monthValues.narrow,\n abbreviated: ['Jan.', 'Feb.', 'März', 'Apr.', 'Mai', 'Juni', 'Juli', 'Aug.', 'Sep.', 'Okt.', 'Nov.', 'Dez.'],\n wide: monthValues.wide\n};\nvar dayValues = {\n narrow: ['S', 'M', 'D', 'M', 'D', 'F', 'S'],\n short: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],\n abbreviated: ['So.', 'Mo.', 'Di.', 'Mi.', 'Do.', 'Fr.', 'Sa.'],\n wide: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag']\n}; // https://www.unicode.org/cldr/charts/32/summary/de.html#1881\n\nvar dayPeriodValues = {\n narrow: {\n am: 'vm.',\n pm: 'nm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachm.',\n evening: 'Abend',\n night: 'Nacht'\n },\n abbreviated: {\n am: 'vorm.',\n pm: 'nachm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachmittag',\n evening: 'Abend',\n night: 'Nacht'\n },\n wide: {\n am: 'vormittags',\n pm: 'nachmittags',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'Morgen',\n afternoon: 'Nachmittag',\n evening: 'Abend',\n night: 'Nacht'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'vm.',\n pm: 'nm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachm.',\n evening: 'abends',\n night: 'nachts'\n },\n abbreviated: {\n am: 'vorm.',\n pm: 'nachm.',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachmittags',\n evening: 'abends',\n night: 'nachts'\n },\n wide: {\n am: 'vormittags',\n pm: 'nachmittags',\n midnight: 'Mitternacht',\n noon: 'Mittag',\n morning: 'morgens',\n afternoon: 'nachmittags',\n evening: 'abends',\n night: 'nachts'\n }\n};\n\nvar ordinalNumber = function (dirtyNumber) {\n var number = Number(dirtyNumber);\n return number + '.';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n formattingValues: formattingMonthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary German locale.\n * @language German\n * @iso-639-2 deu\n * @author Thomas Eilmsteiner [@DeMuu]{@link https://github.com/DeMuu}\n * @author Asia [@asia-t]{@link https://github.com/asia-t}\n * @author Van Vuong Ngo [@vanvuongngo]{@link https://github.com/vanvuongngo}\n * @author RomanErnst [@pex]{@link https://github.com/pex}\n * @author Philipp Keck [@Philipp91]{@link https://github.com/Philipp91}\n */\nvar locale = {\n code: 'de',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 1\n /* Monday */\n ,\n firstWeekContainsDate: 4\n }\n};\nexport default locale;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(\\.)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(v\\.? ?Chr\\.?|n\\.? ?Chr\\.?)/i,\n abbreviated: /^(v\\.? ?Chr\\.?|n\\.? ?Chr\\.?)/i,\n wide: /^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i\n};\nvar parseEraPatterns = {\n any: [/^v/i, /^n/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](\\.)? Quartal/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(j[aä]n|feb|mär[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\\.?/i,\n wide: /^(januar|februar|märz|april|mai|juni|juli|august|september|oktober|november|dezember)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^j[aä]/i, /^f/i, /^mär/i, /^ap/i, /^mai/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smdmf]/i,\n short: /^(so|mo|di|mi|do|fr|sa)/i,\n abbreviated: /^(son?|mon?|die?|mit?|don?|fre?|sam?)\\.?/i,\n wide: /^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i\n};\nvar parseDayPatterns = {\n any: [/^so/i, /^mo/i, /^di/i, /^mi/i, /^do/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(vm\\.?|nm\\.?|Mitternacht|Mittag|morgens|nachm\\.?|abends|nachts)/i,\n abbreviated: /^(vorm\\.?|nachm\\.?|Mitternacht|Mittag|morgens|nachm\\.?|abends|nachts)/i,\n wide: /^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^v/i,\n pm: /^n/i,\n midnight: /^Mitte/i,\n noon: /^Mitta/i,\n morning: /morgens/i,\n afternoon: /nachmittags/i,\n // will never be matched. Afternoon is matched by `pm`\n evening: /abends/i,\n night: /nachts/i // will never be matched. Night is matched by `pm`\n\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nvar formatDistance = function (token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nvar ordinalNumber = function (dirtyNumber, _options) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"StateMachine\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"StateMachine\"] = factory();\n\telse\n\t\troot[\"StateMachine\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 5);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function(target, sources) {\n var n, source, key;\n for(n = 1 ; n < arguments.length ; n++) {\n source = arguments[n];\n for(key in source) {\n if (source.hasOwnProperty(key))\n target[key] = source[key];\n }\n }\n return target;\n}\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n//-------------------------------------------------------------------------------------------------\n\nvar mixin = __webpack_require__(0);\n\n//-------------------------------------------------------------------------------------------------\n\nmodule.exports = {\n\n build: function(target, config) {\n var n, max, plugin, plugins = config.plugins;\n for(n = 0, max = plugins.length ; n < max ; n++) {\n plugin = plugins[n];\n if (plugin.methods)\n mixin(target, plugin.methods);\n if (plugin.properties)\n Object.defineProperties(target, plugin.properties);\n }\n },\n\n hook: function(fsm, name, additional) {\n var n, max, method, plugin,\n plugins = fsm.config.plugins,\n args = [fsm.context];\n\n if (additional)\n args = args.concat(additional)\n\n for(n = 0, max = plugins.length ; n < max ; n++) {\n plugin = plugins[n]\n method = plugins[n][name]\n if (method)\n method.apply(plugin, args);\n }\n }\n\n}\n\n//-------------------------------------------------------------------------------------------------\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n//-------------------------------------------------------------------------------------------------\n\nfunction camelize(label) {\n\n if (label.length === 0)\n return label;\n\n var n, result, word, words = label.split(/[_-]/);\n\n // single word with first character already lowercase, return untouched\n if ((words.length === 1) && (words[0][0].toLowerCase() === words[0][0]))\n return label;\n\n result = words[0].toLowerCase();\n for(n = 1 ; n < words.length ; n++) {\n result = result + words[n].charAt(0).toUpperCase() + words[n].substring(1).toLowerCase();\n }\n\n return result;\n}\n\n//-------------------------------------------------------------------------------------------------\n\ncamelize.prepended = function(prepend, label) {\n label = camelize(label);\n return prepend + label[0].toUpperCase() + label.substring(1);\n}\n\n//-------------------------------------------------------------------------------------------------\n\nmodule.exports = camelize;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n//-------------------------------------------------------------------------------------------------\n\nvar mixin = __webpack_require__(0),\n camelize = __webpack_require__(2);\n\n//-------------------------------------------------------------------------------------------------\n\nfunction Config(options, StateMachine) {\n\n options = options || {};\n\n this.options = options; // preserving original options can be useful (e.g visualize plugin)\n this.defaults = StateMachine.defaults;\n this.states = [];\n this.transitions = [];\n this.map = {};\n this.lifecycle = this.configureLifecycle();\n this.init = this.configureInitTransition(options.init);\n this.data = this.configureData(options.data);\n this.methods = this.configureMethods(options.methods);\n\n this.map[this.defaults.wildcard] = {};\n\n this.configureTransitions(options.transitions || []);\n\n this.plugins = this.configurePlugins(options.plugins, StateMachine.plugin);\n\n}\n\n//-------------------------------------------------------------------------------------------------\n\nmixin(Config.prototype, {\n\n addState: function(name) {\n if (!this.map[name]) {\n this.states.push(name);\n this.addStateLifecycleNames(name);\n this.map[name] = {};\n }\n },\n\n addStateLifecycleNames: function(name) {\n this.lifecycle.onEnter[name] = camelize.prepended('onEnter', name);\n this.lifecycle.onLeave[name] = camelize.prepended('onLeave', name);\n this.lifecycle.on[name] = camelize.prepended('on', name);\n },\n\n addTransition: function(name) {\n if (this.transitions.indexOf(name) < 0) {\n this.transitions.push(name);\n this.addTransitionLifecycleNames(name);\n }\n },\n\n addTransitionLifecycleNames: function(name) {\n this.lifecycle.onBefore[name] = camelize.prepended('onBefore', name);\n this.lifecycle.onAfter[name] = camelize.prepended('onAfter', name);\n this.lifecycle.on[name] = camelize.prepended('on', name);\n },\n\n mapTransition: function(transition) {\n var name = transition.name,\n from = transition.from,\n to = transition.to;\n this.addState(from);\n if (typeof to !== 'function')\n this.addState(to);\n this.addTransition(name);\n this.map[from][name] = transition;\n return transition;\n },\n\n configureLifecycle: function() {\n return {\n onBefore: { transition: 'onBeforeTransition' },\n onAfter: { transition: 'onAfterTransition' },\n onEnter: { state: 'onEnterState' },\n onLeave: { state: 'onLeaveState' },\n on: { transition: 'onTransition' }\n };\n },\n\n configureInitTransition: function(init) {\n if (typeof init === 'string') {\n return this.mapTransition(mixin({}, this.defaults.init, { to: init, active: true }));\n }\n else if (typeof init === 'object') {\n return this.mapTransition(mixin({}, this.defaults.init, init, { active: true }));\n }\n else {\n this.addState(this.defaults.init.from);\n return this.defaults.init;\n }\n },\n\n configureData: function(data) {\n if (typeof data === 'function')\n return data;\n else if (typeof data === 'object')\n return function() { return data; }\n else\n return function() { return {}; }\n },\n\n configureMethods: function(methods) {\n return methods || {};\n },\n\n configurePlugins: function(plugins, builtin) {\n plugins = plugins || [];\n var n, max, plugin;\n for(n = 0, max = plugins.length ; n < max ; n++) {\n plugin = plugins[n];\n if (typeof plugin === 'function')\n plugins[n] = plugin = plugin()\n if (plugin.configure)\n plugin.configure(this);\n }\n return plugins\n },\n\n configureTransitions: function(transitions) {\n var i, n, transition, from, to, wildcard = this.defaults.wildcard;\n for(n = 0 ; n < transitions.length ; n++) {\n transition = transitions[n];\n from = Array.isArray(transition.from) ? transition.from : [transition.from || wildcard]\n to = transition.to || wildcard;\n for(i = 0 ; i < from.length ; i++) {\n this.mapTransition({ name: transition.name, from: from[i], to: to });\n }\n }\n },\n\n transitionFor: function(state, transition) {\n var wildcard = this.defaults.wildcard;\n return this.map[state][transition] ||\n this.map[wildcard][transition];\n },\n\n transitionsFor: function(state) {\n var wildcard = this.defaults.wildcard;\n return Object.keys(this.map[state]).concat(Object.keys(this.map[wildcard]));\n },\n\n allStates: function() {\n return this.states;\n },\n\n allTransitions: function() {\n return this.transitions;\n }\n\n});\n\n//-------------------------------------------------------------------------------------------------\n\nmodule.exports = Config;\n\n//-------------------------------------------------------------------------------------------------\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\nvar mixin = __webpack_require__(0),\n Exception = __webpack_require__(6),\n plugin = __webpack_require__(1),\n UNOBSERVED = [ null, [] ];\n\n//-------------------------------------------------------------------------------------------------\n\nfunction JSM(context, config) {\n this.context = context;\n this.config = config;\n this.state = config.init.from;\n this.observers = [context];\n}\n\n//-------------------------------------------------------------------------------------------------\n\nmixin(JSM.prototype, {\n\n init: function(args) {\n mixin(this.context, this.config.data.apply(this.context, args));\n plugin.hook(this, 'init');\n if (this.config.init.active)\n return this.fire(this.config.init.name, []);\n },\n\n is: function(state) {\n return Array.isArray(state) ? (state.indexOf(this.state) >= 0) : (this.state === state);\n },\n\n isPending: function() {\n return this.pending;\n },\n\n can: function(transition) {\n return !this.isPending() && !!this.seek(transition);\n },\n\n cannot: function(transition) {\n return !this.can(transition);\n },\n\n allStates: function() {\n return this.config.allStates();\n },\n\n allTransitions: function() {\n return this.config.allTransitions();\n },\n\n transitions: function() {\n return this.config.transitionsFor(this.state);\n },\n\n seek: function(transition, args) {\n var wildcard = this.config.defaults.wildcard,\n entry = this.config.transitionFor(this.state, transition),\n to = entry && entry.to;\n if (typeof to === 'function')\n return to.apply(this.context, args);\n else if (to === wildcard)\n return this.state\n else\n return to\n },\n\n fire: function(transition, args) {\n return this.transit(transition, this.state, this.seek(transition, args), args);\n },\n\n transit: function(transition, from, to, args) {\n\n var lifecycle = this.config.lifecycle,\n changed = this.config.options.observeUnchangedState || (from !== to);\n\n if (!to)\n return this.context.onInvalidTransition(transition, from, to);\n\n if (this.isPending())\n return this.context.onPendingTransition(transition, from, to);\n\n this.config.addState(to); // might need to add this state if it's unknown (e.g. conditional transition or goto)\n\n this.beginTransit();\n\n args.unshift({ // this context will be passed to each lifecycle event observer\n transition: transition,\n from: from,\n to: to,\n fsm: this.context\n });\n\n return this.observeEvents([\n this.observersForEvent(lifecycle.onBefore.transition),\n this.observersForEvent(lifecycle.onBefore[transition]),\n changed ? this.observersForEvent(lifecycle.onLeave.state) : UNOBSERVED,\n changed ? this.observersForEvent(lifecycle.onLeave[from]) : UNOBSERVED,\n this.observersForEvent(lifecycle.on.transition),\n changed ? [ 'doTransit', [ this ] ] : UNOBSERVED,\n changed ? this.observersForEvent(lifecycle.onEnter.state) : UNOBSERVED,\n changed ? this.observersForEvent(lifecycle.onEnter[to]) : UNOBSERVED,\n changed ? this.observersForEvent(lifecycle.on[to]) : UNOBSERVED,\n this.observersForEvent(lifecycle.onAfter.transition),\n this.observersForEvent(lifecycle.onAfter[transition]),\n this.observersForEvent(lifecycle.on[transition])\n ], args);\n },\n\n beginTransit: function() { this.pending = true; },\n endTransit: function(result) { this.pending = false; return result; },\n failTransit: function(result) { this.pending = false; throw result; },\n doTransit: function(lifecycle) { this.state = lifecycle.to; },\n\n observe: function(args) {\n if (args.length === 2) {\n var observer = {};\n observer[args[0]] = args[1];\n this.observers.push(observer);\n }\n else {\n this.observers.push(args[0]);\n }\n },\n\n observersForEvent: function(event) { // TODO: this could be cached\n var n = 0, max = this.observers.length, observer, result = [];\n for( ; n < max ; n++) {\n observer = this.observers[n];\n if (observer[event])\n result.push(observer);\n }\n return [ event, result, true ]\n },\n\n observeEvents: function(events, args, previousEvent, previousResult) {\n if (events.length === 0) {\n return this.endTransit(previousResult === undefined ? true : previousResult);\n }\n\n var event = events[0][0],\n observers = events[0][1],\n pluggable = events[0][2];\n\n args[0].event = event;\n if (event && pluggable && event !== previousEvent)\n plugin.hook(this, 'lifecycle', args);\n\n if (observers.length === 0) {\n events.shift();\n return this.observeEvents(events, args, event, previousResult);\n }\n else {\n var observer = observers.shift(),\n result = observer[event].apply(observer, args);\n if (result && typeof result.then === 'function') {\n return result.then(this.observeEvents.bind(this, events, args, event))\n .catch(this.failTransit.bind(this))\n }\n else if (result === false) {\n return this.endTransit(false);\n }\n else {\n return this.observeEvents(events, args, event, result);\n }\n }\n },\n\n onInvalidTransition: function(transition, from, to) {\n throw new Exception(\"transition is invalid in current state\", transition, from, to, this.state);\n },\n\n onPendingTransition: function(transition, from, to) {\n throw new Exception(\"transition is invalid while previous transition is still in progress\", transition, from, to, this.state);\n }\n\n});\n\n//-------------------------------------------------------------------------------------------------\n\nmodule.exports = JSM;\n\n//-------------------------------------------------------------------------------------------------\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n//-----------------------------------------------------------------------------------------------\n\nvar mixin = __webpack_require__(0),\n camelize = __webpack_require__(2),\n plugin = __webpack_require__(1),\n Config = __webpack_require__(3),\n JSM = __webpack_require__(4);\n\n//-----------------------------------------------------------------------------------------------\n\nvar PublicMethods = {\n is: function(state) { return this._fsm.is(state) },\n can: function(transition) { return this._fsm.can(transition) },\n cannot: function(transition) { return this._fsm.cannot(transition) },\n observe: function() { return this._fsm.observe(arguments) },\n transitions: function() { return this._fsm.transitions() },\n allTransitions: function() { return this._fsm.allTransitions() },\n allStates: function() { return this._fsm.allStates() },\n onInvalidTransition: function(t, from, to) { return this._fsm.onInvalidTransition(t, from, to) },\n onPendingTransition: function(t, from, to) { return this._fsm.onPendingTransition(t, from, to) },\n}\n\nvar PublicProperties = {\n state: {\n configurable: false,\n enumerable: true,\n get: function() {\n return this._fsm.state;\n },\n set: function(state) {\n throw Error('use transitions to change state')\n }\n }\n}\n\n//-----------------------------------------------------------------------------------------------\n\nfunction StateMachine(options) {\n return apply(this || {}, options);\n}\n\nfunction factory() {\n var cstor, options;\n if (typeof arguments[0] === 'function') {\n cstor = arguments[0];\n options = arguments[1] || {};\n }\n else {\n cstor = function() { this._fsm.apply(this, arguments) };\n options = arguments[0] || {};\n }\n var config = new Config(options, StateMachine);\n build(cstor.prototype, config);\n cstor.prototype._fsm.config = config; // convenience access to shared config without needing an instance\n return cstor;\n}\n\n//-------------------------------------------------------------------------------------------------\n\nfunction apply(instance, options) {\n var config = new Config(options, StateMachine);\n build(instance, config);\n instance._fsm();\n return instance;\n}\n\nfunction build(target, config) {\n if ((typeof target !== 'object') || Array.isArray(target))\n throw Error('StateMachine can only be applied to objects');\n plugin.build(target, config);\n Object.defineProperties(target, PublicProperties);\n mixin(target, PublicMethods);\n mixin(target, config.methods);\n config.allTransitions().forEach(function(transition) {\n target[camelize(transition)] = function() {\n return this._fsm.fire(transition, [].slice.call(arguments))\n }\n });\n target._fsm = function() {\n this._fsm = new JSM(this, config);\n this._fsm.init(arguments);\n }\n}\n\n//-----------------------------------------------------------------------------------------------\n\nStateMachine.version = '3.0.1';\nStateMachine.factory = factory;\nStateMachine.apply = apply;\nStateMachine.defaults = {\n wildcard: '*',\n init: {\n name: 'init',\n from: 'none'\n }\n}\n\n//===============================================================================================\n\nmodule.exports = StateMachine;\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function(message, transition, from, to, current) {\n this.message = message;\n this.transition = transition;\n this.from = from;\n this.to = to;\n this.current = current;\n}\n\n\n/***/ })\n/******/ ]);\n});","/* http://nanobar.micronube.com/ || https://github.com/jacoborus/nanobar/ MIT LICENSE */\n(function (root) {\n 'use strict'\n // container styles\n var css = '.nanobar{width:100%;height:4px;z-index:9999;top:0}.bar{width:0;height:100%;transition:height .3s;background:#000}'\n\n // add required css in head div\n function addCss () {\n var s = document.getElementById('nanobarcss')\n\n // check whether style tag is already inserted\n if (s === null) {\n s = document.createElement('style')\n s.type = 'text/css'\n s.id = 'nanobarcss'\n document.head.insertBefore(s, document.head.firstChild)\n // the world\n if (!s.styleSheet) return s.appendChild(document.createTextNode(css))\n // IE\n s.styleSheet.cssText = css\n }\n }\n\n function addClass (el, cls) {\n if (el.classList) el.classList.add(cls)\n else el.className += ' ' + cls\n }\n\n // create a progress bar\n // this will be destroyed after reaching 100% progress\n function createBar (rm) {\n // create progress element\n var el = document.createElement('div'),\n width = 0,\n here = 0,\n on = 0,\n bar = {\n el: el,\n go: go\n }\n\n addClass(el, 'bar')\n\n // animation loop\n function move () {\n var dist = width - here\n\n if (dist < 0.1 && dist > -0.1) {\n place(here)\n on = 0\n if (width === 100) {\n el.style.height = 0\n setTimeout(function () {\n rm(el)\n }, 300)\n }\n } else {\n place(width - dist / 4)\n setTimeout(go, 16)\n }\n }\n\n // set bar width\n function place (num) {\n width = num\n el.style.width = width + '%'\n }\n\n function go (num) {\n if (num >= 0) {\n here = num\n if (!on) {\n on = 1\n move()\n }\n } else if (on) {\n move()\n }\n }\n return bar\n }\n\n function Nanobar (opts) {\n opts = opts || {}\n // set options\n var el = document.createElement('div'),\n applyGo,\n nanobar = {\n el: el,\n go: function (p) {\n // expand bar\n applyGo(p)\n // create new bar when progress reaches 100%\n if (p === 100) {\n init()\n }\n }\n }\n\n // remove element from nanobar container\n function rm (child) {\n el.removeChild(child)\n }\n\n // create and insert progress var in nanobar container\n function init () {\n var bar = createBar(rm)\n el.appendChild(bar.el)\n applyGo = bar.go\n }\n\n addCss()\n\n addClass(el, 'nanobar')\n if (opts.id) el.id = opts.id\n if (opts.classname) addClass(el, opts.classname)\n\n // insert container\n if (opts.target) {\n // inside a div\n el.style.position = 'relative'\n opts.target.insertBefore(el, opts.target.firstChild)\n } else {\n // on top of the page\n el.style.position = 'fixed'\n document.getElementsByTagName('body')[0].appendChild(el)\n }\n\n init()\n return nanobar\n }\n\n if (typeof exports === 'object') {\n // CommonJS\n module.exports = Nanobar\n } else if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], function () { return Nanobar })\n } else {\n // Browser globals\n root.Nanobar = Nanobar\n }\n}(this))\n","'use strict';\n\nmodule.exports = Pbf;\n\nvar ieee754 = require('ieee754');\n\nfunction Pbf(buf) {\n this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0);\n this.pos = 0;\n this.type = 0;\n this.length = this.buf.length;\n}\n\nPbf.Varint = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nPbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64\nPbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nPbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32\n\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16),\n SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\n// Threshold chosen based on both benchmarking and knowledge about browser string\n// data structures (which currently switch structure types at 12 bytes or more)\nvar TEXT_DECODER_MIN_LENGTH = 12;\nvar utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf8');\n\nPbf.prototype = {\n\n destroy: function() {\n this.buf = null;\n },\n\n // === READING =================================================================\n\n readFields: function(readField, result, end) {\n end = end || this.length;\n\n while (this.pos < end) {\n var val = this.readVarint(),\n tag = val >> 3,\n startPos = this.pos;\n\n this.type = val & 0x7;\n readField(tag, result, this);\n\n if (this.pos === startPos) this.skip(val);\n }\n return result;\n },\n\n readMessage: function(readField, result) {\n return this.readFields(readField, result, this.readVarint() + this.pos);\n },\n\n readFixed32: function() {\n var val = readUInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n readSFixed32: function() {\n var val = readInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n readFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readSFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readFloat: function() {\n var val = ieee754.read(this.buf, this.pos, true, 23, 4);\n this.pos += 4;\n return val;\n },\n\n readDouble: function() {\n var val = ieee754.read(this.buf, this.pos, true, 52, 8);\n this.pos += 8;\n return val;\n },\n\n readVarint: function(isSigned) {\n var buf = this.buf,\n val, b;\n\n b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n b = buf[this.pos]; val |= (b & 0x0f) << 28;\n\n return readVarintRemainder(val, isSigned, this);\n },\n\n readVarint64: function() { // for compatibility with v2.0.1\n return this.readVarint(true);\n },\n\n readSVarint: function() {\n var num = this.readVarint();\n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n },\n\n readBoolean: function() {\n return Boolean(this.readVarint());\n },\n\n readString: function() {\n var end = this.readVarint() + this.pos;\n var pos = this.pos;\n this.pos = end;\n\n if (end - pos >= TEXT_DECODER_MIN_LENGTH && utf8TextDecoder) {\n // longer strings are fast with the built-in browser TextDecoder API\n return readUtf8TextDecoder(this.buf, pos, end);\n }\n // short strings are fast with our custom implementation\n return readUtf8(this.buf, pos, end);\n },\n\n readBytes: function() {\n var end = this.readVarint() + this.pos,\n buffer = this.buf.subarray(this.pos, end);\n this.pos = end;\n return buffer;\n },\n\n // verbose for performance reasons; doesn't affect gzipped size\n\n readPackedVarint: function(arr, isSigned) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readVarint(isSigned));\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readVarint(isSigned));\n return arr;\n },\n readPackedSVarint: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSVarint());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSVarint());\n return arr;\n },\n readPackedBoolean: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readBoolean());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readBoolean());\n return arr;\n },\n readPackedFloat: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFloat());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFloat());\n return arr;\n },\n readPackedDouble: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readDouble());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readDouble());\n return arr;\n },\n readPackedFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed32());\n return arr;\n },\n readPackedSFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed32());\n return arr;\n },\n readPackedFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed64());\n return arr;\n },\n readPackedSFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed64());\n return arr;\n },\n\n skip: function(val) {\n var type = val & 0x7;\n if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {}\n else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos;\n else if (type === Pbf.Fixed32) this.pos += 4;\n else if (type === Pbf.Fixed64) this.pos += 8;\n else throw new Error('Unimplemented type: ' + type);\n },\n\n // === WRITING =================================================================\n\n writeTag: function(tag, type) {\n this.writeVarint((tag << 3) | type);\n },\n\n realloc: function(min) {\n var length = this.length || 16;\n\n while (length < this.pos + min) length *= 2;\n\n if (length !== this.length) {\n var buf = new Uint8Array(length);\n buf.set(this.buf);\n this.buf = buf;\n this.length = length;\n }\n },\n\n finish: function() {\n this.length = this.pos;\n this.pos = 0;\n return this.buf.subarray(0, this.length);\n },\n\n writeFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeSFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeSFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeVarint: function(val) {\n val = +val || 0;\n\n if (val > 0xfffffff || val < 0) {\n writeBigVarint(val, this);\n return;\n }\n\n this.realloc(4);\n\n this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = (val >>> 7) & 0x7f;\n },\n\n writeSVarint: function(val) {\n this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n },\n\n writeBoolean: function(val) {\n this.writeVarint(Boolean(val));\n },\n\n writeString: function(str) {\n str = String(str);\n this.realloc(str.length * 4);\n\n this.pos++; // reserve 1 byte for short string length\n\n var startPos = this.pos;\n // write the string directly to the buffer and see how much was written\n this.pos = writeUtf8(this.buf, str, this.pos);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeFloat: function(val) {\n this.realloc(4);\n ieee754.write(this.buf, val, this.pos, true, 23, 4);\n this.pos += 4;\n },\n\n writeDouble: function(val) {\n this.realloc(8);\n ieee754.write(this.buf, val, this.pos, true, 52, 8);\n this.pos += 8;\n },\n\n writeBytes: function(buffer) {\n var len = buffer.length;\n this.writeVarint(len);\n this.realloc(len);\n for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n },\n\n writeRawMessage: function(fn, obj) {\n this.pos++; // reserve 1 byte for short message length\n\n // write the message directly to the buffer and see how much was written\n var startPos = this.pos;\n fn(obj, this);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeMessage: function(tag, fn, obj) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeRawMessage(fn, obj);\n },\n\n writePackedVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedVarint, arr); },\n writePackedSVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSVarint, arr); },\n writePackedBoolean: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedBoolean, arr); },\n writePackedFloat: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFloat, arr); },\n writePackedDouble: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedDouble, arr); },\n writePackedFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed32, arr); },\n writePackedSFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr); },\n writePackedFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed64, arr); },\n writePackedSFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr); },\n\n writeBytesField: function(tag, buffer) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeBytes(buffer);\n },\n writeFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFixed32(val);\n },\n writeSFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeSFixed32(val);\n },\n writeFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeFixed64(val);\n },\n writeSFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeSFixed64(val);\n },\n writeVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeVarint(val);\n },\n writeSVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeSVarint(val);\n },\n writeStringField: function(tag, str) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeString(str);\n },\n writeFloatField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFloat(val);\n },\n writeDoubleField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeDouble(val);\n },\n writeBooleanField: function(tag, val) {\n this.writeVarintField(tag, Boolean(val));\n }\n};\n\nfunction readVarintRemainder(l, s, p) {\n var buf = p.buf,\n h, b;\n\n b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n throw new Error('Expected varint not more than 10 bytes');\n}\n\nfunction readPackedEnd(pbf) {\n return pbf.type === Pbf.Bytes ?\n pbf.readVarint() + pbf.pos : pbf.pos + 1;\n}\n\nfunction toNum(low, high, isSigned) {\n if (isSigned) {\n return high * 0x100000000 + (low >>> 0);\n }\n\n return ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\nfunction writeBigVarint(val, pbf) {\n var low, high;\n\n if (val >= 0) {\n low = (val % 0x100000000) | 0;\n high = (val / 0x100000000) | 0;\n } else {\n low = ~(-val % 0x100000000);\n high = ~(-val / 0x100000000);\n\n if (low ^ 0xffffffff) {\n low = (low + 1) | 0;\n } else {\n low = 0;\n high = (high + 1) | 0;\n }\n }\n\n if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n throw new Error('Given varint doesn\\'t fit into 10 bytes');\n }\n\n pbf.realloc(10);\n\n writeBigVarintLow(low, high, pbf);\n writeBigVarintHigh(high, pbf);\n}\n\nfunction writeBigVarintLow(low, high, pbf) {\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos] = low & 0x7f;\n}\n\nfunction writeBigVarintHigh(high, pbf) {\n var lsb = (high & 0x07) << 4;\n\n pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f;\n}\n\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n var extraLen =\n len <= 0x3fff ? 1 :\n len <= 0x1fffff ? 2 :\n len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));\n\n // if 1 byte isn't enough for encoding message length, shift the data to the right\n pbf.realloc(extraLen);\n for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\nfunction writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]); }\nfunction writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]); }\nfunction writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]); }\nfunction writePackedDouble(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]); }\nfunction writePackedBoolean(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]); }\nfunction writePackedFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]); }\nfunction writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); }\nfunction writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]); }\nfunction writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); }\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\nfunction readUInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] * 0x1000000);\n}\n\nfunction writeInt32(buf, val, pos) {\n buf[pos] = val;\n buf[pos + 1] = (val >>> 8);\n buf[pos + 2] = (val >>> 16);\n buf[pos + 3] = (val >>> 24);\n}\n\nfunction readInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] << 24);\n}\n\nfunction readUtf8(buf, pos, end) {\n var str = '';\n var i = pos;\n\n while (i < end) {\n var b0 = buf[i];\n var c = null; // codepoint\n var bytesPerSequence =\n b0 > 0xEF ? 4 :\n b0 > 0xDF ? 3 :\n b0 > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence > end) break;\n\n var b1, b2, b3;\n\n if (bytesPerSequence === 1) {\n if (b0 < 0x80) {\n c = b0;\n }\n } else if (bytesPerSequence === 2) {\n b1 = buf[i + 1];\n if ((b1 & 0xC0) === 0x80) {\n c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n if (c <= 0x7F) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 3) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 4) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n b3 = buf[i + 3];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n if (c <= 0xFFFF || c >= 0x110000) {\n c = null;\n }\n }\n }\n\n if (c === null) {\n c = 0xFFFD;\n bytesPerSequence = 1;\n\n } else if (c > 0xFFFF) {\n c -= 0x10000;\n str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n c = 0xDC00 | c & 0x3FF;\n }\n\n str += String.fromCharCode(c);\n i += bytesPerSequence;\n }\n\n return str;\n}\n\nfunction readUtf8TextDecoder(buf, pos, end) {\n return utf8TextDecoder.decode(buf.subarray(pos, end));\n}\n\nfunction writeUtf8(buf, str, pos) {\n for (var i = 0, c, lead; i < str.length; i++) {\n c = str.charCodeAt(i); // code point\n\n if (c > 0xD7FF && c < 0xE000) {\n if (lead) {\n if (c < 0xDC00) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = c;\n continue;\n } else {\n c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n lead = null;\n }\n } else {\n if (c > 0xDBFF || (i + 1 === str.length)) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n } else {\n lead = c;\n }\n continue;\n }\n } else if (lead) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = null;\n }\n\n if (c < 0x80) {\n buf[pos++] = c;\n } else {\n if (c < 0x800) {\n buf[pos++] = c >> 0x6 | 0xC0;\n } else {\n if (c < 0x10000) {\n buf[pos++] = c >> 0xC | 0xE0;\n } else {\n buf[pos++] = c >> 0x12 | 0xF0;\n buf[pos++] = c >> 0xC & 0x3F | 0x80;\n }\n buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n }\n buf[pos++] = c & 0x3F | 0x80;\n }\n }\n return pos;\n}\n","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=t||self).RBush=i()}(this,function(){\"use strict\";function t(t,r,e,a,h){!function t(n,r,e,a,h){for(;a>e;){if(a-e>600){var o=a-e+1,s=r-e+1,l=Math.log(o),f=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*f*(o-f)/o)*(s-o/2<0?-1:1),m=Math.max(e,Math.floor(r-s*f/o+u)),c=Math.min(a,Math.floor(r+(o-s)*f/o+u));t(n,r,m,c,h)}var p=n[r],d=e,x=a;for(i(n,e,r),h(n[a],p)>0&&i(n,e,a);d0;)x--}0===h(n[e],p)?i(n,e,x):i(n,++x,a),x<=r&&(e=x+1),r<=x&&(a=x-1)}}(t,r,e||0,a||t.length-1,h||n)}function i(t,i,n){var r=t[i];t[i]=t[n],t[n]=r}function n(t,i){return ti?1:0}var r=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function e(t,i,n){if(!n)return i.indexOf(t);for(var r=0;r=t.minX&&i.maxY>=t.minY}function p(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function d(i,n,r,e,a){for(var h=[n,r];h.length;)if(!((r=h.pop())-(n=h.pop())<=e)){var o=n+Math.ceil((r-n)/e/2)*e;t(i,o,n,r,a),h.push(n,o,o,r)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(t){var i=this.data,n=[];if(!c(t,i))return n;for(var r=this.toBBox,e=[];i;){for(var a=0;a=0&&e[i].children.length>this._maxEntries;)this._split(e,i),i--;this._adjustParentBBoxes(r,e,i)},r.prototype._split=function(t,i){var n=t[i],r=n.children.length,e=this._minEntries;this._chooseSplitAxis(n,e,r);var h=this._chooseSplitIndex(n,e,r),o=p(n.children.splice(h,n.children.length-h));o.height=n.height,o.leaf=n.leaf,a(n,this.toBBox),a(o,this.toBBox),i?t[i-1].children.push(o):this._splitRoot(n,o)},r.prototype._splitRoot=function(t,i){this.data=p([t,i]),this.data.height=t.height+1,this.data.leaf=!1,a(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(t,i,n){for(var r,e,a,o,s,l,u,m=1/0,c=1/0,p=i;p<=n-i;p++){var d=h(t,0,p,this.toBBox),x=h(t,p,n,this.toBBox),v=(e=d,a=x,o=void 0,s=void 0,l=void 0,u=void 0,o=Math.max(e.minX,a.minX),s=Math.max(e.minY,a.minY),l=Math.min(e.maxX,a.maxX),u=Math.min(e.maxY,a.maxY),Math.max(0,l-o)*Math.max(0,u-s)),M=f(d)+f(x);v=i;c--){var p=t.children[c];o(s,t.leaf?e(p):p),l+=u(s)}return l},r.prototype._adjustParentBBoxes=function(t,i,n){for(var r=n;r>=0;r--)o(i[r],t)},r.prototype._condense=function(t){for(var i=t.length-1,n=void 0;i>=0;i--)0===t[i].children.length?i>0?(n=t[i-1].children).splice(n.indexOf(t[i]),1):this.clear():a(t[i],this.toBBox)},r});\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export var ErrorKind;\n(function (ErrorKind) {\n /** Argument is unclosed (e.g. `{0`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_CLOSING_BRACE\"] = 1] = \"EXPECT_ARGUMENT_CLOSING_BRACE\";\n /** Argument is empty (e.g. `{}`). */\n ErrorKind[ErrorKind[\"EMPTY_ARGUMENT\"] = 2] = \"EMPTY_ARGUMENT\";\n /** Argument is malformed (e.g. `{foo!}``) */\n ErrorKind[ErrorKind[\"MALFORMED_ARGUMENT\"] = 3] = \"MALFORMED_ARGUMENT\";\n /** Expect an argument type (e.g. `{foo,}`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_TYPE\"] = 4] = \"EXPECT_ARGUMENT_TYPE\";\n /** Unsupported argument type (e.g. `{foo,foo}`) */\n ErrorKind[ErrorKind[\"INVALID_ARGUMENT_TYPE\"] = 5] = \"INVALID_ARGUMENT_TYPE\";\n /** Expect an argument style (e.g. `{foo, number, }`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_STYLE\"] = 6] = \"EXPECT_ARGUMENT_STYLE\";\n /** The number skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_NUMBER_SKELETON\"] = 7] = \"INVALID_NUMBER_SKELETON\";\n /** The date time skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_DATE_TIME_SKELETON\"] = 8] = \"INVALID_DATE_TIME_SKELETON\";\n /** Exepct a number skeleton following the `::` (e.g. `{foo, number, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_NUMBER_SKELETON\"] = 9] = \"EXPECT_NUMBER_SKELETON\";\n /** Exepct a date time skeleton following the `::` (e.g. `{foo, date, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_DATE_TIME_SKELETON\"] = 10] = \"EXPECT_DATE_TIME_SKELETON\";\n /** Unmatched apostrophes in the argument style (e.g. `{foo, number, 'test`) */\n ErrorKind[ErrorKind[\"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\"] = 11] = \"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\";\n /** Missing select argument options (e.g. `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_OPTIONS\"] = 12] = \"EXPECT_SELECT_ARGUMENT_OPTIONS\";\n /** Expecting an offset value in `plural` or `selectordinal` argument (e.g `{foo, plural, offset}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 13] = \"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Offset value in `plural` or `selectordinal` is invalid (e.g. `{foo, plural, offset: x}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 14] = \"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Expecting a selector in `select` argument (e.g `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR\"] = 15] = \"EXPECT_SELECT_ARGUMENT_SELECTOR\";\n /** Expecting a selector in `plural` or `selectordinal` argument (e.g `{foo, plural}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR\"] = 16] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR\";\n /** Expecting a message fragment after the `select` selector (e.g. `{foo, select, apple}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\"] = 17] = \"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\";\n /**\n * Expecting a message fragment after the `plural` or `selectordinal` selector\n * (e.g. `{foo, plural, one}`)\n */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\"] = 18] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\";\n /** Selector in `plural` or `selectordinal` is malformed (e.g. `{foo, plural, =x {#}}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_SELECTOR\"] = 19] = \"INVALID_PLURAL_ARGUMENT_SELECTOR\";\n /**\n * Duplicate selectors in `plural` or `selectordinal` argument.\n * (e.g. {foo, plural, one {#} one {#}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\"] = 20] = \"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\";\n /** Duplicate selectors in `select` argument.\n * (e.g. {foo, select, apple {apple} apple {apple}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_SELECT_ARGUMENT_SELECTOR\"] = 21] = \"DUPLICATE_SELECT_ARGUMENT_SELECTOR\";\n /** Plural or select argument option must have `other` clause. */\n ErrorKind[ErrorKind[\"MISSING_OTHER_CLAUSE\"] = 22] = \"MISSING_OTHER_CLAUSE\";\n /** The tag is malformed. (e.g. `foo) */\n ErrorKind[ErrorKind[\"INVALID_TAG\"] = 23] = \"INVALID_TAG\";\n /** The tag name is invalid. (e.g. `<123>foo`) */\n ErrorKind[ErrorKind[\"INVALID_TAG_NAME\"] = 25] = \"INVALID_TAG_NAME\";\n /** The closing tag does not match the opening tag. (e.g. `foo`) */\n ErrorKind[ErrorKind[\"UNMATCHED_CLOSING_TAG\"] = 26] = \"UNMATCHED_CLOSING_TAG\";\n /** The opening tag has unmatched closing tag. (e.g. `foo`) */\n ErrorKind[ErrorKind[\"UNCLOSED_TAG\"] = 27] = \"UNCLOSED_TAG\";\n})(ErrorKind || (ErrorKind = {}));\n","export var TYPE;\n(function (TYPE) {\n /**\n * Raw text\n */\n TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n /**\n * Variable w/o any format, e.g `var` in `this is a {var}`\n */\n TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n /**\n * Variable w/ number format\n */\n TYPE[TYPE[\"number\"] = 2] = \"number\";\n /**\n * Variable w/ date format\n */\n TYPE[TYPE[\"date\"] = 3] = \"date\";\n /**\n * Variable w/ time format\n */\n TYPE[TYPE[\"time\"] = 4] = \"time\";\n /**\n * Variable w/ select format\n */\n TYPE[TYPE[\"select\"] = 5] = \"select\";\n /**\n * Variable w/ plural format\n */\n TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n /**\n * Only possible within plural argument.\n * This is the `#` symbol that will be substituted with the count.\n */\n TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n /**\n * XML-like tag\n */\n TYPE[TYPE[\"tag\"] = 8] = \"tag\";\n})(TYPE || (TYPE = {}));\nexport var SKELETON_TYPE;\n(function (SKELETON_TYPE) {\n SKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n SKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n})(SKELETON_TYPE || (SKELETON_TYPE = {}));\n/**\n * Type Guards\n */\nexport function isLiteralElement(el) {\n return el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n return el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n return el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n return el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n return el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n return el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n return el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n return el.type === TYPE.pound;\n}\nexport function isTagElement(el) {\n return el.type === TYPE.tag;\n}\nexport function isNumberSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.number);\n}\nexport function isDateTimeSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.dateTime);\n}\nexport function createLiteralElement(value) {\n return {\n type: TYPE.literal,\n value: value,\n };\n}\nexport function createNumberElement(value, style) {\n return {\n type: TYPE.number,\n value: value,\n style: style,\n };\n}\n","// @generated from regex-gen.ts\nexport var SPACE_SEPARATOR_REGEX = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/;\n","/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nexport function parseDateTimeSkeleton(skeleton) {\n var result = {};\n skeleton.replace(DATE_TIME_REGEX, function (match) {\n var len = match.length;\n switch (match[0]) {\n // Era\n case 'G':\n result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n break;\n // Year\n case 'y':\n result.year = len === 2 ? '2-digit' : 'numeric';\n break;\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n // Quarter\n case 'q':\n case 'Q':\n throw new RangeError('`q/Q` (quarter) patterns are not supported');\n // Month\n case 'M':\n case 'L':\n result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n break;\n // Week\n case 'w':\n case 'W':\n throw new RangeError('`w/W` (week) patterns are not supported');\n case 'd':\n result.day = ['numeric', '2-digit'][len - 1];\n break;\n case 'D':\n case 'F':\n case 'g':\n throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n // Weekday\n case 'E':\n result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n break;\n case 'e':\n if (len < 4) {\n throw new RangeError('`e..eee` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n case 'c':\n if (len < 4) {\n throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n // Period\n case 'a': // AM, PM\n result.hour12 = true;\n break;\n case 'b': // am, pm, noon, midnight\n case 'B': // flexible day periods\n throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n // Hour\n case 'h':\n result.hourCycle = 'h12';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'H':\n result.hourCycle = 'h23';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'K':\n result.hourCycle = 'h11';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'k':\n result.hourCycle = 'h24';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'j':\n case 'J':\n case 'C':\n throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n // Minute\n case 'm':\n result.minute = ['numeric', '2-digit'][len - 1];\n break;\n // Second\n case 's':\n result.second = ['numeric', '2-digit'][len - 1];\n break;\n case 'S':\n case 'A':\n throw new RangeError('`S/A` (second) patterns are not supported, use `s` instead');\n // Zone\n case 'z': // 1..3, 4: specific non-location format\n result.timeZoneName = len < 4 ? 'short' : 'long';\n break;\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n throw new RangeError('`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead');\n }\n return '';\n });\n return result;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","// @generated from regex-gen.ts\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/i;\n","var _a;\nimport { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { SKELETON_TYPE, TYPE, } from './types';\nimport { SPACE_SEPARATOR_REGEX } from './regex.generated';\nimport { parseNumberSkeleton, parseNumberSkeletonFromString, parseDateTimeSkeleton, } from '@formatjs/icu-skeleton-parser';\nvar SPACE_SEPARATOR_START_REGEX = new RegExp(\"^\" + SPACE_SEPARATOR_REGEX.source + \"*\");\nvar SPACE_SEPARATOR_END_REGEX = new RegExp(SPACE_SEPARATOR_REGEX.source + \"*$\");\nfunction createLocation(start, end) {\n return { start: start, end: end };\n}\n// #region Ponyfills\n// Consolidate these variables up top for easier toggling during debugging\nvar hasNativeStartsWith = !!String.prototype.startsWith;\nvar hasNativeFromCodePoint = !!String.fromCodePoint;\nvar hasNativeFromEntries = !!Object.fromEntries;\nvar hasNativeCodePointAt = !!String.prototype.codePointAt;\nvar hasTrimStart = !!String.prototype.trimStart;\nvar hasTrimEnd = !!String.prototype.trimEnd;\nvar hasNativeIsSafeInteger = !!Number.isSafeInteger;\nvar isSafeInteger = hasNativeIsSafeInteger\n ? Number.isSafeInteger\n : function (n) {\n return (typeof n === 'number' &&\n isFinite(n) &&\n Math.floor(n) === n &&\n Math.abs(n) <= 0x1fffffffffffff);\n };\n// IE11 does not support y and u.\nvar REGEX_SUPPORTS_U_AND_Y = true;\ntry {\n var re = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n /**\n * legacy Edge or Xbox One browser\n * Unicode flag support: supported\n * Pattern_Syntax support: not supported\n * See https://github.com/formatjs/formatjs/issues/2822\n */\n REGEX_SUPPORTS_U_AND_Y = ((_a = re.exec('a')) === null || _a === void 0 ? void 0 : _a[0]) === 'a';\n}\ncatch (_) {\n REGEX_SUPPORTS_U_AND_Y = false;\n}\nvar startsWith = hasNativeStartsWith\n ? // Native\n function startsWith(s, search, position) {\n return s.startsWith(search, position);\n }\n : // For IE11\n function startsWith(s, search, position) {\n return s.slice(position, position + search.length) === search;\n };\nvar fromCodePoint = hasNativeFromCodePoint\n ? String.fromCodePoint\n : // IE11\n function fromCodePoint() {\n var codePoints = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n var elements = '';\n var length = codePoints.length;\n var i = 0;\n var code;\n while (length > i) {\n code = codePoints[i++];\n if (code > 0x10ffff)\n throw RangeError(code + ' is not a valid code point');\n elements +=\n code < 0x10000\n ? String.fromCharCode(code)\n : String.fromCharCode(((code -= 0x10000) >> 10) + 0xd800, (code % 0x400) + 0xdc00);\n }\n return elements;\n };\nvar fromEntries = \n// native\nhasNativeFromEntries\n ? Object.fromEntries\n : // Ponyfill\n function fromEntries(entries) {\n var obj = {};\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var _a = entries_1[_i], k = _a[0], v = _a[1];\n obj[k] = v;\n }\n return obj;\n };\nvar codePointAt = hasNativeCodePointAt\n ? // Native\n function codePointAt(s, index) {\n return s.codePointAt(index);\n }\n : // IE 11\n function codePointAt(s, index) {\n var size = s.length;\n if (index < 0 || index >= size) {\n return undefined;\n }\n var first = s.charCodeAt(index);\n var second;\n return first < 0xd800 ||\n first > 0xdbff ||\n index + 1 === size ||\n (second = s.charCodeAt(index + 1)) < 0xdc00 ||\n second > 0xdfff\n ? first\n : ((first - 0xd800) << 10) + (second - 0xdc00) + 0x10000;\n };\nvar trimStart = hasTrimStart\n ? // Native\n function trimStart(s) {\n return s.trimStart();\n }\n : // Ponyfill\n function trimStart(s) {\n return s.replace(SPACE_SEPARATOR_START_REGEX, '');\n };\nvar trimEnd = hasTrimEnd\n ? // Native\n function trimEnd(s) {\n return s.trimEnd();\n }\n : // Ponyfill\n function trimEnd(s) {\n return s.replace(SPACE_SEPARATOR_END_REGEX, '');\n };\n// Prevent minifier to translate new RegExp to literal form that might cause syntax error on IE11.\nfunction RE(s, flag) {\n return new RegExp(s, flag);\n}\n// #endregion\nvar matchIdentifierAtIndex;\nif (REGEX_SUPPORTS_U_AND_Y) {\n // Native\n var IDENTIFIER_PREFIX_RE_1 = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var _a;\n IDENTIFIER_PREFIX_RE_1.lastIndex = index;\n var match = IDENTIFIER_PREFIX_RE_1.exec(s);\n return (_a = match[1]) !== null && _a !== void 0 ? _a : '';\n };\n}\nelse {\n // IE11\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var match = [];\n while (true) {\n var c = codePointAt(s, index);\n if (c === undefined || _isWhiteSpace(c) || _isPatternSyntax(c)) {\n break;\n }\n match.push(c);\n index += c >= 0x10000 ? 2 : 1;\n }\n return fromCodePoint.apply(void 0, match);\n };\n}\nvar Parser = /** @class */ (function () {\n function Parser(message, options) {\n if (options === void 0) { options = {}; }\n this.message = message;\n this.position = { offset: 0, line: 1, column: 1 };\n this.ignoreTag = !!options.ignoreTag;\n this.requiresOtherClause = !!options.requiresOtherClause;\n this.shouldParseSkeletons = !!options.shouldParseSkeletons;\n }\n Parser.prototype.parse = function () {\n if (this.offset() !== 0) {\n throw Error('parser can only be used once');\n }\n return this.parseMessage(0, '', false);\n };\n Parser.prototype.parseMessage = function (nestingLevel, parentArgType, expectingCloseTag) {\n var elements = [];\n while (!this.isEOF()) {\n var char = this.char();\n if (char === 123 /* `{` */) {\n var result = this.parseArgument(nestingLevel, expectingCloseTag);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else if (char === 125 /* `}` */ && nestingLevel > 0) {\n break;\n }\n else if (char === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) {\n var position = this.clonePosition();\n this.bump();\n elements.push({\n type: TYPE.pound,\n location: createLocation(position, this.clonePosition()),\n });\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n this.peek() === 47 // char code for '/'\n ) {\n if (expectingCloseTag) {\n break;\n }\n else {\n return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(this.clonePosition(), this.clonePosition()));\n }\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n _isAlpha(this.peek() || 0)) {\n var result = this.parseTag(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else {\n var result = this.parseLiteral(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n }\n return { val: elements, err: null };\n };\n /**\n * A tag name must start with an ASCII lower/upper case letter. The grammar is based on the\n * [custom element name][] except that a dash is NOT always mandatory and uppercase letters\n * are accepted:\n *\n * ```\n * tag ::= \"<\" tagName (whitespace)* \"/>\" | \"<\" tagName (whitespace)* \">\" message \"\"\n * tagName ::= [a-z] (PENChar)*\n * PENChar ::=\n * \"-\" | \".\" | [0-9] | \"_\" | [a-z] | [A-Z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] |\n * [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * ```\n *\n * [custom element name]: https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n * NOTE: We're a bit more lax here since HTML technically does not allow uppercase HTML element but we do\n * since other tag-based engines like React allow it\n */\n Parser.prototype.parseTag = function (nestingLevel, parentArgType) {\n var startPosition = this.clonePosition();\n this.bump(); // `<`\n var tagName = this.parseTagName();\n this.bumpSpace();\n if (this.bumpIf('/>')) {\n // Self closing tag\n return {\n val: {\n type: TYPE.literal,\n value: \"<\" + tagName + \"/>\",\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else if (this.bumpIf('>')) {\n var childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);\n if (childrenResult.err) {\n return childrenResult;\n }\n var children = childrenResult.val;\n // Expecting a close tag\n var endTagStartPosition = this.clonePosition();\n if (this.bumpIf('')) {\n return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n }\n return {\n val: {\n type: TYPE.tag,\n value: tagName,\n children: children,\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else {\n return this.error(ErrorKind.UNCLOSED_TAG, createLocation(startPosition, this.clonePosition()));\n }\n }\n else {\n return this.error(ErrorKind.INVALID_TAG, createLocation(startPosition, this.clonePosition()));\n }\n };\n /**\n * This method assumes that the caller has peeked ahead for the first tag character.\n */\n Parser.prototype.parseTagName = function () {\n var startOffset = this.offset();\n this.bump(); // the first tag name character\n while (!this.isEOF() && _isPotentialElementNameChar(this.char())) {\n this.bump();\n }\n return this.message.slice(startOffset, this.offset());\n };\n Parser.prototype.parseLiteral = function (nestingLevel, parentArgType) {\n var start = this.clonePosition();\n var value = '';\n while (true) {\n var parseQuoteResult = this.tryParseQuote(parentArgType);\n if (parseQuoteResult) {\n value += parseQuoteResult;\n continue;\n }\n var parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);\n if (parseUnquotedResult) {\n value += parseUnquotedResult;\n continue;\n }\n var parseLeftAngleResult = this.tryParseLeftAngleBracket();\n if (parseLeftAngleResult) {\n value += parseLeftAngleResult;\n continue;\n }\n break;\n }\n var location = createLocation(start, this.clonePosition());\n return {\n val: { type: TYPE.literal, value: value, location: location },\n err: null,\n };\n };\n Parser.prototype.tryParseLeftAngleBracket = function () {\n if (!this.isEOF() &&\n this.char() === 60 /* `<` */ &&\n (this.ignoreTag ||\n // If at the opening tag or closing tag position, bail.\n !_isAlphaOrSlash(this.peek() || 0))) {\n this.bump(); // `<`\n return '<';\n }\n return null;\n };\n /**\n * Starting with ICU 4.8, an ASCII apostrophe only starts quoted text if it immediately precedes\n * a character that requires quoting (that is, \"only where needed\"), and works the same in\n * nested messages as on the top level of the pattern. The new behavior is otherwise compatible.\n */\n Parser.prototype.tryParseQuote = function (parentArgType) {\n if (this.isEOF() || this.char() !== 39 /* `'` */) {\n return null;\n }\n // Parse escaped char following the apostrophe, or early return if there is no escaped char.\n // Check if is valid escaped character\n switch (this.peek()) {\n case 39 /* `'` */:\n // double quote, should return as a single quote.\n this.bump();\n this.bump();\n return \"'\";\n // '{', '<', '>', '}'\n case 123:\n case 60:\n case 62:\n case 125:\n break;\n case 35: // '#'\n if (parentArgType === 'plural' || parentArgType === 'selectordinal') {\n break;\n }\n return null;\n default:\n return null;\n }\n this.bump(); // apostrophe\n var codePoints = [this.char()]; // escaped char\n this.bump();\n // read chars until the optional closing apostrophe is found\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch === 39 /* `'` */) {\n if (this.peek() === 39 /* `'` */) {\n codePoints.push(39);\n // Bump one more time because we need to skip 2 characters.\n this.bump();\n }\n else {\n // Optional closing apostrophe.\n this.bump();\n break;\n }\n }\n else {\n codePoints.push(ch);\n }\n this.bump();\n }\n return fromCodePoint.apply(void 0, codePoints);\n };\n Parser.prototype.tryParseUnquoted = function (nestingLevel, parentArgType) {\n if (this.isEOF()) {\n return null;\n }\n var ch = this.char();\n if (ch === 60 /* `<` */ ||\n ch === 123 /* `{` */ ||\n (ch === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) ||\n (ch === 125 /* `}` */ && nestingLevel > 0)) {\n return null;\n }\n else {\n this.bump();\n return fromCodePoint(ch);\n }\n };\n Parser.prototype.parseArgument = function (nestingLevel, expectingCloseTag) {\n var openingBracePosition = this.clonePosition();\n this.bump(); // `{`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n if (this.char() === 125 /* `}` */) {\n this.bump();\n return this.error(ErrorKind.EMPTY_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n // argument name\n var value = this.parseIdentifierIfPossible().value;\n if (!value) {\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n switch (this.char()) {\n // Simple argument: `{name}`\n case 125 /* `}` */: {\n this.bump(); // `}`\n return {\n val: {\n type: TYPE.argument,\n // value does not include the opening and closing braces.\n value: value,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n err: null,\n };\n }\n // Argument with options: `{name, format, ...}`\n case 44 /* `,` */: {\n this.bump(); // `,`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n return this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);\n }\n default:\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n };\n /**\n * Advance the parser until the end of the identifier, if it is currently on\n * an identifier character. Return an empty string otherwise.\n */\n Parser.prototype.parseIdentifierIfPossible = function () {\n var startingPosition = this.clonePosition();\n var startOffset = this.offset();\n var value = matchIdentifierAtIndex(this.message, startOffset);\n var endOffset = startOffset + value.length;\n this.bumpTo(endOffset);\n var endPosition = this.clonePosition();\n var location = createLocation(startingPosition, endPosition);\n return { value: value, location: location };\n };\n Parser.prototype.parseArgumentOptions = function (nestingLevel, expectingCloseTag, value, openingBracePosition) {\n var _a;\n // Parse this range:\n // {name, type, style}\n // ^---^\n var typeStartPosition = this.clonePosition();\n var argType = this.parseIdentifierIfPossible().value;\n var typeEndPosition = this.clonePosition();\n switch (argType) {\n case '':\n // Expecting a style string number, date, time, plural, selectordinal, or select.\n return this.error(ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n case 'number':\n case 'date':\n case 'time': {\n // Parse this range:\n // {name, number, style}\n // ^-------^\n this.bumpSpace();\n var styleAndLocation = null;\n if (this.bumpIf(',')) {\n this.bumpSpace();\n var styleStartPosition = this.clonePosition();\n var result = this.parseSimpleArgStyleIfPossible();\n if (result.err) {\n return result;\n }\n var style = trimEnd(result.val);\n if (style.length === 0) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var styleLocation = createLocation(styleStartPosition, this.clonePosition());\n styleAndLocation = { style: style, styleLocation: styleLocation };\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_1 = createLocation(openingBracePosition, this.clonePosition());\n // Extract style or skeleton\n if (styleAndLocation && startsWith(styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style, '::', 0)) {\n // Skeleton starts with `::`.\n var skeleton = trimStart(styleAndLocation.style.slice(2));\n if (argType === 'number') {\n var result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);\n if (result.err) {\n return result;\n }\n return {\n val: { type: TYPE.number, value: value, location: location_1, style: result.val },\n err: null,\n };\n }\n else {\n if (skeleton.length === 0) {\n return this.error(ErrorKind.EXPECT_DATE_TIME_SKELETON, location_1);\n }\n var style = {\n type: SKELETON_TYPE.dateTime,\n pattern: skeleton,\n location: styleAndLocation.styleLocation,\n parsedOptions: this.shouldParseSkeletons\n ? parseDateTimeSkeleton(skeleton)\n : {},\n };\n var type = argType === 'date' ? TYPE.date : TYPE.time;\n return {\n val: { type: type, value: value, location: location_1, style: style },\n err: null,\n };\n }\n }\n // Regular style or no style.\n return {\n val: {\n type: argType === 'number'\n ? TYPE.number\n : argType === 'date'\n ? TYPE.date\n : TYPE.time,\n value: value,\n location: location_1,\n style: (_a = styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style) !== null && _a !== void 0 ? _a : null,\n },\n err: null,\n };\n }\n case 'plural':\n case 'selectordinal':\n case 'select': {\n // Parse this range:\n // {name, plural, options}\n // ^---------^\n var typeEndPosition_1 = this.clonePosition();\n this.bumpSpace();\n if (!this.bumpIf(',')) {\n return this.error(ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation(typeEndPosition_1, __assign({}, typeEndPosition_1)));\n }\n this.bumpSpace();\n // Parse offset:\n // {name, plural, offset:1, options}\n // ^-----^\n //\n // or the first option:\n //\n // {name, plural, one {...} other {...}}\n // ^--^\n var identifierAndLocation = this.parseIdentifierIfPossible();\n var pluralOffset = 0;\n if (argType !== 'select' && identifierAndLocation.value === 'offset') {\n if (!this.bumpIf(':')) {\n return this.error(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n this.bumpSpace();\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);\n if (result.err) {\n return result;\n }\n // Parse another identifier for option parsing\n this.bumpSpace();\n identifierAndLocation = this.parseIdentifierIfPossible();\n pluralOffset = result.val;\n }\n var optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);\n if (optionsResult.err) {\n return optionsResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_2 = createLocation(openingBracePosition, this.clonePosition());\n if (argType === 'select') {\n return {\n val: {\n type: TYPE.select,\n value: value,\n options: fromEntries(optionsResult.val),\n location: location_2,\n },\n err: null,\n };\n }\n else {\n return {\n val: {\n type: TYPE.plural,\n value: value,\n options: fromEntries(optionsResult.val),\n offset: pluralOffset,\n pluralType: argType === 'plural' ? 'cardinal' : 'ordinal',\n location: location_2,\n },\n err: null,\n };\n }\n }\n default:\n return this.error(ErrorKind.INVALID_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n }\n };\n Parser.prototype.tryParseArgumentClose = function (openingBracePosition) {\n // Parse: {value, number, ::currency/GBP }\n //\n if (this.isEOF() || this.char() !== 125 /* `}` */) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bump(); // `}`\n return { val: true, err: null };\n };\n /**\n * See: https://github.com/unicode-org/icu/blob/af7ed1f6d2298013dc303628438ec4abe1f16479/icu4c/source/common/messagepattern.cpp#L659\n */\n Parser.prototype.parseSimpleArgStyleIfPossible = function () {\n var nestedBraces = 0;\n var startPosition = this.clonePosition();\n while (!this.isEOF()) {\n var ch = this.char();\n switch (ch) {\n case 39 /* `'` */: {\n // Treat apostrophe as quoting but include it in the style part.\n // Find the end of the quoted literal text.\n this.bump();\n var apostrophePosition = this.clonePosition();\n if (!this.bumpUntil(\"'\")) {\n return this.error(ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation(apostrophePosition, this.clonePosition()));\n }\n this.bump();\n break;\n }\n case 123 /* `{` */: {\n nestedBraces += 1;\n this.bump();\n break;\n }\n case 125 /* `}` */: {\n if (nestedBraces > 0) {\n nestedBraces -= 1;\n }\n else {\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n }\n break;\n }\n default:\n this.bump();\n break;\n }\n }\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n };\n Parser.prototype.parseNumberSkeletonFromString = function (skeleton, location) {\n var tokens = [];\n try {\n tokens = parseNumberSkeletonFromString(skeleton);\n }\n catch (e) {\n return this.error(ErrorKind.INVALID_NUMBER_SKELETON, location);\n }\n return {\n val: {\n type: SKELETON_TYPE.number,\n tokens: tokens,\n location: location,\n parsedOptions: this.shouldParseSkeletons\n ? parseNumberSkeleton(tokens)\n : {},\n },\n err: null,\n };\n };\n /**\n * @param nesting_level The current nesting level of messages.\n * This can be positive when parsing message fragment in select or plural argument options.\n * @param parent_arg_type The parent argument's type.\n * @param parsed_first_identifier If provided, this is the first identifier-like selector of\n * the argument. It is a by-product of a previous parsing attempt.\n * @param expecting_close_tag If true, this message is directly or indirectly nested inside\n * between a pair of opening and closing tags. The nested message will not parse beyond\n * the closing tag boundary.\n */\n Parser.prototype.tryParsePluralOrSelectOptions = function (nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {\n var _a;\n var hasOtherClause = false;\n var options = [];\n var parsedSelectors = new Set();\n var selector = parsedFirstIdentifier.value, selectorLocation = parsedFirstIdentifier.location;\n // Parse:\n // one {one apple}\n // ^--^\n while (true) {\n if (selector.length === 0) {\n var startPosition = this.clonePosition();\n if (parentArgType !== 'select' && this.bumpIf('=')) {\n // Try parse `={number}` selector\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);\n if (result.err) {\n return result;\n }\n selectorLocation = createLocation(startPosition, this.clonePosition());\n selector = this.message.slice(startPosition.offset, this.offset());\n }\n else {\n break;\n }\n }\n // Duplicate selector clauses\n if (parsedSelectors.has(selector)) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR\n : ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);\n }\n if (selector === 'other') {\n hasOtherClause = true;\n }\n // Parse:\n // one {one apple}\n // ^----------^\n this.bumpSpace();\n var openingBracePosition = this.clonePosition();\n if (!this.bumpIf('{')) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\n : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);\n if (fragmentResult.err) {\n return fragmentResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n options.push([\n selector,\n {\n value: fragmentResult.val,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n ]);\n // Keep track of the existing selectors\n parsedSelectors.add(selector);\n // Prep next selector clause.\n this.bumpSpace();\n (_a = this.parseIdentifierIfPossible(), selector = _a.value, selectorLocation = _a.location);\n }\n if (options.length === 0) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR\n : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation(this.clonePosition(), this.clonePosition()));\n }\n if (this.requiresOtherClause && !hasOtherClause) {\n return this.error(ErrorKind.MISSING_OTHER_CLAUSE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n return { val: options, err: null };\n };\n Parser.prototype.tryParseDecimalInteger = function (expectNumberError, invalidNumberError) {\n var sign = 1;\n var startingPosition = this.clonePosition();\n if (this.bumpIf('+')) {\n }\n else if (this.bumpIf('-')) {\n sign = -1;\n }\n var hasDigits = false;\n var decimal = 0;\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch >= 48 /* `0` */ && ch <= 57 /* `9` */) {\n hasDigits = true;\n decimal = decimal * 10 + (ch - 48);\n this.bump();\n }\n else {\n break;\n }\n }\n var location = createLocation(startingPosition, this.clonePosition());\n if (!hasDigits) {\n return this.error(expectNumberError, location);\n }\n decimal *= sign;\n if (!isSafeInteger(decimal)) {\n return this.error(invalidNumberError, location);\n }\n return { val: decimal, err: null };\n };\n Parser.prototype.offset = function () {\n return this.position.offset;\n };\n Parser.prototype.isEOF = function () {\n return this.offset() === this.message.length;\n };\n Parser.prototype.clonePosition = function () {\n // This is much faster than `Object.assign` or spread.\n return {\n offset: this.position.offset,\n line: this.position.line,\n column: this.position.column,\n };\n };\n /**\n * Return the code point at the current position of the parser.\n * Throws if the index is out of bound.\n */\n Parser.prototype.char = function () {\n var offset = this.position.offset;\n if (offset >= this.message.length) {\n throw Error('out of bound');\n }\n var code = codePointAt(this.message, offset);\n if (code === undefined) {\n throw Error(\"Offset \" + offset + \" is at invalid UTF-16 code unit boundary\");\n }\n return code;\n };\n Parser.prototype.error = function (kind, location) {\n return {\n val: null,\n err: {\n kind: kind,\n message: this.message,\n location: location,\n },\n };\n };\n /** Bump the parser to the next UTF-16 code unit. */\n Parser.prototype.bump = function () {\n if (this.isEOF()) {\n return;\n }\n var code = this.char();\n if (code === 10 /* '\\n' */) {\n this.position.line += 1;\n this.position.column = 1;\n this.position.offset += 1;\n }\n else {\n this.position.column += 1;\n // 0 ~ 0x10000 -> unicode BMP, otherwise skip the surrogate pair.\n this.position.offset += code < 0x10000 ? 1 : 2;\n }\n };\n /**\n * If the substring starting at the current position of the parser has\n * the given prefix, then bump the parser to the character immediately\n * following the prefix and return true. Otherwise, don't bump the parser\n * and return false.\n */\n Parser.prototype.bumpIf = function (prefix) {\n if (startsWith(this.message, prefix, this.offset())) {\n for (var i = 0; i < prefix.length; i++) {\n this.bump();\n }\n return true;\n }\n return false;\n };\n /**\n * Bump the parser until the pattern character is found and return `true`.\n * Otherwise bump to the end of the file and return `false`.\n */\n Parser.prototype.bumpUntil = function (pattern) {\n var currentOffset = this.offset();\n var index = this.message.indexOf(pattern, currentOffset);\n if (index >= 0) {\n this.bumpTo(index);\n return true;\n }\n else {\n this.bumpTo(this.message.length);\n return false;\n }\n };\n /**\n * Bump the parser to the target offset.\n * If target offset is beyond the end of the input, bump the parser to the end of the input.\n */\n Parser.prototype.bumpTo = function (targetOffset) {\n if (this.offset() > targetOffset) {\n throw Error(\"targetOffset \" + targetOffset + \" must be greater than or equal to the current offset \" + this.offset());\n }\n targetOffset = Math.min(targetOffset, this.message.length);\n while (true) {\n var offset = this.offset();\n if (offset === targetOffset) {\n break;\n }\n if (offset > targetOffset) {\n throw Error(\"targetOffset \" + targetOffset + \" is at invalid UTF-16 code unit boundary\");\n }\n this.bump();\n if (this.isEOF()) {\n break;\n }\n }\n };\n /** advance the parser through all whitespace to the next non-whitespace code unit. */\n Parser.prototype.bumpSpace = function () {\n while (!this.isEOF() && _isWhiteSpace(this.char())) {\n this.bump();\n }\n };\n /**\n * Peek at the *next* Unicode codepoint in the input without advancing the parser.\n * If the input has been exhausted, then this returns null.\n */\n Parser.prototype.peek = function () {\n if (this.isEOF()) {\n return null;\n }\n var code = this.char();\n var offset = this.offset();\n var nextCode = this.message.charCodeAt(offset + (code >= 0x10000 ? 2 : 1));\n return nextCode !== null && nextCode !== void 0 ? nextCode : null;\n };\n return Parser;\n}());\nexport { Parser };\n/**\n * This check if codepoint is alphabet (lower & uppercase)\n * @param codepoint\n * @returns\n */\nfunction _isAlpha(codepoint) {\n return ((codepoint >= 97 && codepoint <= 122) ||\n (codepoint >= 65 && codepoint <= 90));\n}\nfunction _isAlphaOrSlash(codepoint) {\n return _isAlpha(codepoint) || codepoint === 47; /* '/' */\n}\n/** See `parseTag` function docs. */\nfunction _isPotentialElementNameChar(c) {\n return (c === 45 /* '-' */ ||\n c === 46 /* '.' */ ||\n (c >= 48 && c <= 57) /* 0..9 */ ||\n c === 95 /* '_' */ ||\n (c >= 97 && c <= 122) /** a..z */ ||\n (c >= 65 && c <= 90) /* A..Z */ ||\n c == 0xb7 ||\n (c >= 0xc0 && c <= 0xd6) ||\n (c >= 0xd8 && c <= 0xf6) ||\n (c >= 0xf8 && c <= 0x37d) ||\n (c >= 0x37f && c <= 0x1fff) ||\n (c >= 0x200c && c <= 0x200d) ||\n (c >= 0x203f && c <= 0x2040) ||\n (c >= 0x2070 && c <= 0x218f) ||\n (c >= 0x2c00 && c <= 0x2fef) ||\n (c >= 0x3001 && c <= 0xd7ff) ||\n (c >= 0xf900 && c <= 0xfdcf) ||\n (c >= 0xfdf0 && c <= 0xfffd) ||\n (c >= 0x10000 && c <= 0xeffff));\n}\n/**\n * Code point equivalent of regex `\\p{White_Space}`.\n * From: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isWhiteSpace(c) {\n return ((c >= 0x0009 && c <= 0x000d) ||\n c === 0x0020 ||\n c === 0x0085 ||\n (c >= 0x200e && c <= 0x200f) ||\n c === 0x2028 ||\n c === 0x2029);\n}\n/**\n * Code point equivalent of regex `\\p{Pattern_Syntax}`.\n * See https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isPatternSyntax(c) {\n return ((c >= 0x0021 && c <= 0x0023) ||\n c === 0x0024 ||\n (c >= 0x0025 && c <= 0x0027) ||\n c === 0x0028 ||\n c === 0x0029 ||\n c === 0x002a ||\n c === 0x002b ||\n c === 0x002c ||\n c === 0x002d ||\n (c >= 0x002e && c <= 0x002f) ||\n (c >= 0x003a && c <= 0x003b) ||\n (c >= 0x003c && c <= 0x003e) ||\n (c >= 0x003f && c <= 0x0040) ||\n c === 0x005b ||\n c === 0x005c ||\n c === 0x005d ||\n c === 0x005e ||\n c === 0x0060 ||\n c === 0x007b ||\n c === 0x007c ||\n c === 0x007d ||\n c === 0x007e ||\n c === 0x00a1 ||\n (c >= 0x00a2 && c <= 0x00a5) ||\n c === 0x00a6 ||\n c === 0x00a7 ||\n c === 0x00a9 ||\n c === 0x00ab ||\n c === 0x00ac ||\n c === 0x00ae ||\n c === 0x00b0 ||\n c === 0x00b1 ||\n c === 0x00b6 ||\n c === 0x00bb ||\n c === 0x00bf ||\n c === 0x00d7 ||\n c === 0x00f7 ||\n (c >= 0x2010 && c <= 0x2015) ||\n (c >= 0x2016 && c <= 0x2017) ||\n c === 0x2018 ||\n c === 0x2019 ||\n c === 0x201a ||\n (c >= 0x201b && c <= 0x201c) ||\n c === 0x201d ||\n c === 0x201e ||\n c === 0x201f ||\n (c >= 0x2020 && c <= 0x2027) ||\n (c >= 0x2030 && c <= 0x2038) ||\n c === 0x2039 ||\n c === 0x203a ||\n (c >= 0x203b && c <= 0x203e) ||\n (c >= 0x2041 && c <= 0x2043) ||\n c === 0x2044 ||\n c === 0x2045 ||\n c === 0x2046 ||\n (c >= 0x2047 && c <= 0x2051) ||\n c === 0x2052 ||\n c === 0x2053 ||\n (c >= 0x2055 && c <= 0x205e) ||\n (c >= 0x2190 && c <= 0x2194) ||\n (c >= 0x2195 && c <= 0x2199) ||\n (c >= 0x219a && c <= 0x219b) ||\n (c >= 0x219c && c <= 0x219f) ||\n c === 0x21a0 ||\n (c >= 0x21a1 && c <= 0x21a2) ||\n c === 0x21a3 ||\n (c >= 0x21a4 && c <= 0x21a5) ||\n c === 0x21a6 ||\n (c >= 0x21a7 && c <= 0x21ad) ||\n c === 0x21ae ||\n (c >= 0x21af && c <= 0x21cd) ||\n (c >= 0x21ce && c <= 0x21cf) ||\n (c >= 0x21d0 && c <= 0x21d1) ||\n c === 0x21d2 ||\n c === 0x21d3 ||\n c === 0x21d4 ||\n (c >= 0x21d5 && c <= 0x21f3) ||\n (c >= 0x21f4 && c <= 0x22ff) ||\n (c >= 0x2300 && c <= 0x2307) ||\n c === 0x2308 ||\n c === 0x2309 ||\n c === 0x230a ||\n c === 0x230b ||\n (c >= 0x230c && c <= 0x231f) ||\n (c >= 0x2320 && c <= 0x2321) ||\n (c >= 0x2322 && c <= 0x2328) ||\n c === 0x2329 ||\n c === 0x232a ||\n (c >= 0x232b && c <= 0x237b) ||\n c === 0x237c ||\n (c >= 0x237d && c <= 0x239a) ||\n (c >= 0x239b && c <= 0x23b3) ||\n (c >= 0x23b4 && c <= 0x23db) ||\n (c >= 0x23dc && c <= 0x23e1) ||\n (c >= 0x23e2 && c <= 0x2426) ||\n (c >= 0x2427 && c <= 0x243f) ||\n (c >= 0x2440 && c <= 0x244a) ||\n (c >= 0x244b && c <= 0x245f) ||\n (c >= 0x2500 && c <= 0x25b6) ||\n c === 0x25b7 ||\n (c >= 0x25b8 && c <= 0x25c0) ||\n c === 0x25c1 ||\n (c >= 0x25c2 && c <= 0x25f7) ||\n (c >= 0x25f8 && c <= 0x25ff) ||\n (c >= 0x2600 && c <= 0x266e) ||\n c === 0x266f ||\n (c >= 0x2670 && c <= 0x2767) ||\n c === 0x2768 ||\n c === 0x2769 ||\n c === 0x276a ||\n c === 0x276b ||\n c === 0x276c ||\n c === 0x276d ||\n c === 0x276e ||\n c === 0x276f ||\n c === 0x2770 ||\n c === 0x2771 ||\n c === 0x2772 ||\n c === 0x2773 ||\n c === 0x2774 ||\n c === 0x2775 ||\n (c >= 0x2794 && c <= 0x27bf) ||\n (c >= 0x27c0 && c <= 0x27c4) ||\n c === 0x27c5 ||\n c === 0x27c6 ||\n (c >= 0x27c7 && c <= 0x27e5) ||\n c === 0x27e6 ||\n c === 0x27e7 ||\n c === 0x27e8 ||\n c === 0x27e9 ||\n c === 0x27ea ||\n c === 0x27eb ||\n c === 0x27ec ||\n c === 0x27ed ||\n c === 0x27ee ||\n c === 0x27ef ||\n (c >= 0x27f0 && c <= 0x27ff) ||\n (c >= 0x2800 && c <= 0x28ff) ||\n (c >= 0x2900 && c <= 0x2982) ||\n c === 0x2983 ||\n c === 0x2984 ||\n c === 0x2985 ||\n c === 0x2986 ||\n c === 0x2987 ||\n c === 0x2988 ||\n c === 0x2989 ||\n c === 0x298a ||\n c === 0x298b ||\n c === 0x298c ||\n c === 0x298d ||\n c === 0x298e ||\n c === 0x298f ||\n c === 0x2990 ||\n c === 0x2991 ||\n c === 0x2992 ||\n c === 0x2993 ||\n c === 0x2994 ||\n c === 0x2995 ||\n c === 0x2996 ||\n c === 0x2997 ||\n c === 0x2998 ||\n (c >= 0x2999 && c <= 0x29d7) ||\n c === 0x29d8 ||\n c === 0x29d9 ||\n c === 0x29da ||\n c === 0x29db ||\n (c >= 0x29dc && c <= 0x29fb) ||\n c === 0x29fc ||\n c === 0x29fd ||\n (c >= 0x29fe && c <= 0x2aff) ||\n (c >= 0x2b00 && c <= 0x2b2f) ||\n (c >= 0x2b30 && c <= 0x2b44) ||\n (c >= 0x2b45 && c <= 0x2b46) ||\n (c >= 0x2b47 && c <= 0x2b4c) ||\n (c >= 0x2b4d && c <= 0x2b73) ||\n (c >= 0x2b74 && c <= 0x2b75) ||\n (c >= 0x2b76 && c <= 0x2b95) ||\n c === 0x2b96 ||\n (c >= 0x2b97 && c <= 0x2bff) ||\n (c >= 0x2e00 && c <= 0x2e01) ||\n c === 0x2e02 ||\n c === 0x2e03 ||\n c === 0x2e04 ||\n c === 0x2e05 ||\n (c >= 0x2e06 && c <= 0x2e08) ||\n c === 0x2e09 ||\n c === 0x2e0a ||\n c === 0x2e0b ||\n c === 0x2e0c ||\n c === 0x2e0d ||\n (c >= 0x2e0e && c <= 0x2e16) ||\n c === 0x2e17 ||\n (c >= 0x2e18 && c <= 0x2e19) ||\n c === 0x2e1a ||\n c === 0x2e1b ||\n c === 0x2e1c ||\n c === 0x2e1d ||\n (c >= 0x2e1e && c <= 0x2e1f) ||\n c === 0x2e20 ||\n c === 0x2e21 ||\n c === 0x2e22 ||\n c === 0x2e23 ||\n c === 0x2e24 ||\n c === 0x2e25 ||\n c === 0x2e26 ||\n c === 0x2e27 ||\n c === 0x2e28 ||\n c === 0x2e29 ||\n (c >= 0x2e2a && c <= 0x2e2e) ||\n c === 0x2e2f ||\n (c >= 0x2e30 && c <= 0x2e39) ||\n (c >= 0x2e3a && c <= 0x2e3b) ||\n (c >= 0x2e3c && c <= 0x2e3f) ||\n c === 0x2e40 ||\n c === 0x2e41 ||\n c === 0x2e42 ||\n (c >= 0x2e43 && c <= 0x2e4f) ||\n (c >= 0x2e50 && c <= 0x2e51) ||\n c === 0x2e52 ||\n (c >= 0x2e53 && c <= 0x2e7f) ||\n (c >= 0x3001 && c <= 0x3003) ||\n c === 0x3008 ||\n c === 0x3009 ||\n c === 0x300a ||\n c === 0x300b ||\n c === 0x300c ||\n c === 0x300d ||\n c === 0x300e ||\n c === 0x300f ||\n c === 0x3010 ||\n c === 0x3011 ||\n (c >= 0x3012 && c <= 0x3013) ||\n c === 0x3014 ||\n c === 0x3015 ||\n c === 0x3016 ||\n c === 0x3017 ||\n c === 0x3018 ||\n c === 0x3019 ||\n c === 0x301a ||\n c === 0x301b ||\n c === 0x301c ||\n c === 0x301d ||\n (c >= 0x301e && c <= 0x301f) ||\n c === 0x3020 ||\n c === 0x3030 ||\n c === 0xfd3e ||\n c === 0xfd3f ||\n (c >= 0xfe45 && c <= 0xfe46));\n}\n","import { __assign } from \"tslib\";\nimport { WHITE_SPACE_REGEX } from './regex.generated';\nexport function parseNumberSkeletonFromString(skeleton) {\n if (skeleton.length === 0) {\n throw new Error('Number skeleton cannot be empty');\n }\n // Parse the skeleton\n var stringTokens = skeleton\n .split(WHITE_SPACE_REGEX)\n .filter(function (x) { return x.length > 0; });\n var tokens = [];\n for (var _i = 0, stringTokens_1 = stringTokens; _i < stringTokens_1.length; _i++) {\n var stringToken = stringTokens_1[_i];\n var stemAndOptions = stringToken.split('/');\n if (stemAndOptions.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n var stem = stemAndOptions[0], options = stemAndOptions.slice(1);\n for (var _a = 0, options_1 = options; _a < options_1.length; _a++) {\n var option = options_1[_a];\n if (option.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n }\n tokens.push({ stem: stem, options: options });\n }\n return tokens;\n}\nfunction icuUnitToEcma(unit) {\n return unit.replace(/^(.*?)-/, '');\n}\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?$/g;\nvar INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nvar CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\nfunction parseSignificantPrecision(str) {\n var result = {};\n str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n // @@@ case\n if (typeof g2 !== 'string') {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits = g1.length;\n }\n // @@@+ case\n else if (g2 === '+') {\n result.minimumSignificantDigits = g1.length;\n }\n // .### case\n else if (g1[0] === '#') {\n result.maximumSignificantDigits = g1.length;\n }\n // .@@## or .@@@ case\n else {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits =\n g1.length + (typeof g2 === 'string' ? g2.length : 0);\n }\n return '';\n });\n return result;\n}\nfunction parseSign(str) {\n switch (str) {\n case 'sign-auto':\n return {\n signDisplay: 'auto',\n };\n case 'sign-accounting':\n case '()':\n return {\n currencySign: 'accounting',\n };\n case 'sign-always':\n case '+!':\n return {\n signDisplay: 'always',\n };\n case 'sign-accounting-always':\n case '()!':\n return {\n signDisplay: 'always',\n currencySign: 'accounting',\n };\n case 'sign-except-zero':\n case '+?':\n return {\n signDisplay: 'exceptZero',\n };\n case 'sign-accounting-except-zero':\n case '()?':\n return {\n signDisplay: 'exceptZero',\n currencySign: 'accounting',\n };\n case 'sign-never':\n case '+_':\n return {\n signDisplay: 'never',\n };\n }\n}\nfunction parseConciseScientificAndEngineeringStem(stem) {\n // Engineering\n var result;\n if (stem[0] === 'E' && stem[1] === 'E') {\n result = {\n notation: 'engineering',\n };\n stem = stem.slice(2);\n }\n else if (stem[0] === 'E') {\n result = {\n notation: 'scientific',\n };\n stem = stem.slice(1);\n }\n if (result) {\n var signDisplay = stem.slice(0, 2);\n if (signDisplay === '+!') {\n result.signDisplay = 'always';\n stem = stem.slice(2);\n }\n else if (signDisplay === '+?') {\n result.signDisplay = 'exceptZero';\n stem = stem.slice(2);\n }\n if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n throw new Error('Malformed concise eng/scientific notation');\n }\n result.minimumIntegerDigits = stem.length;\n }\n return result;\n}\nfunction parseNotationOptions(opt) {\n var result = {};\n var signOpts = parseSign(opt);\n if (signOpts) {\n return signOpts;\n }\n return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\nexport function parseNumberSkeleton(tokens) {\n var result = {};\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n switch (token.stem) {\n case 'percent':\n case '%':\n result.style = 'percent';\n continue;\n case '%x100':\n result.style = 'percent';\n result.scale = 100;\n continue;\n case 'currency':\n result.style = 'currency';\n result.currency = token.options[0];\n continue;\n case 'group-off':\n case ',_':\n result.useGrouping = false;\n continue;\n case 'precision-integer':\n case '.':\n result.maximumFractionDigits = 0;\n continue;\n case 'measure-unit':\n case 'unit':\n result.style = 'unit';\n result.unit = icuUnitToEcma(token.options[0]);\n continue;\n case 'compact-short':\n case 'K':\n result.notation = 'compact';\n result.compactDisplay = 'short';\n continue;\n case 'compact-long':\n case 'KK':\n result.notation = 'compact';\n result.compactDisplay = 'long';\n continue;\n case 'scientific':\n result = __assign(__assign(__assign({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'engineering':\n result = __assign(__assign(__assign({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'notation-simple':\n result.notation = 'standard';\n continue;\n // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n case 'unit-width-narrow':\n result.currencyDisplay = 'narrowSymbol';\n result.unitDisplay = 'narrow';\n continue;\n case 'unit-width-short':\n result.currencyDisplay = 'code';\n result.unitDisplay = 'short';\n continue;\n case 'unit-width-full-name':\n result.currencyDisplay = 'name';\n result.unitDisplay = 'long';\n continue;\n case 'unit-width-iso-code':\n result.currencyDisplay = 'symbol';\n continue;\n case 'scale':\n result.scale = parseFloat(token.options[0]);\n continue;\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n case 'integer-width':\n if (token.options.length > 1) {\n throw new RangeError('integer-width stems only accept a single optional option');\n }\n token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {\n if (g1) {\n result.minimumIntegerDigits = g2.length;\n }\n else if (g3 && g4) {\n throw new Error('We currently do not support maximum integer digits');\n }\n else if (g5) {\n throw new Error('We currently do not support exact integer digits');\n }\n return '';\n });\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n result.minimumIntegerDigits = token.stem.length;\n continue;\n }\n if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n // Precision\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n // precision-integer case\n if (token.options.length > 1) {\n throw new RangeError('Fraction-precision stems only accept a single optional option');\n }\n token.stem.replace(FRACTION_PRECISION_REGEX, function (_, g1, g2, g3, g4, g5) {\n // .000* case (before ICU67 it was .000+)\n if (g2 === '*') {\n result.minimumFractionDigits = g1.length;\n }\n // .### case\n else if (g3 && g3[0] === '#') {\n result.maximumFractionDigits = g3.length;\n }\n // .00## case\n else if (g4 && g5) {\n result.minimumFractionDigits = g4.length;\n result.maximumFractionDigits = g4.length + g5.length;\n }\n else {\n result.minimumFractionDigits = g1.length;\n result.maximumFractionDigits = g1.length;\n }\n return '';\n });\n if (token.options.length) {\n result = __assign(__assign({}, result), parseSignificantPrecision(token.options[0]));\n }\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));\n continue;\n }\n var signOpts = parseSign(token.stem);\n if (signOpts) {\n result = __assign(__assign({}, result), signOpts);\n }\n var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n if (conciseScientificAndEngineeringOpts) {\n result = __assign(__assign({}, result), conciseScientificAndEngineeringOpts);\n }\n }\n return result;\n}\n","import { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { Parser } from './parser';\nimport { isDateElement, isDateTimeSkeleton, isNumberElement, isNumberSkeleton, isPluralElement, isSelectElement, isTagElement, isTimeElement, } from './types';\nfunction pruneLocation(els) {\n els.forEach(function (el) {\n delete el.location;\n if (isSelectElement(el) || isPluralElement(el)) {\n for (var k in el.options) {\n delete el.options[k].location;\n pruneLocation(el.options[k].value);\n }\n }\n else if (isNumberElement(el) && isNumberSkeleton(el.style)) {\n delete el.style.location;\n }\n else if ((isDateElement(el) || isTimeElement(el)) &&\n isDateTimeSkeleton(el.style)) {\n delete el.style.location;\n }\n else if (isTagElement(el)) {\n pruneLocation(el.children);\n }\n });\n}\nexport function parse(message, opts) {\n if (opts === void 0) { opts = {}; }\n opts = __assign({ shouldParseSkeletons: true, requiresOtherClause: true }, opts);\n var result = new Parser(message, opts).parse();\n if (result.err) {\n var error = SyntaxError(ErrorKind[result.err.kind]);\n // @ts-expect-error Assign to error object\n error.location = result.err.location;\n // @ts-expect-error Assign to error object\n error.originalMessage = result.err.message;\n throw error;\n }\n if (!(opts === null || opts === void 0 ? void 0 : opts.captureLocation)) {\n pruneLocation(result.val);\n }\n return result.val;\n}\nexport * from './types';\n","//\n// Main\n//\nexport default function memoize(fn, options) {\n var cache = options && options.cache ? options.cache : cacheDefault;\n var serializer = options && options.serializer ? options.serializer : serializerDefault;\n var strategy = options && options.strategy ? options.strategy : strategyDefault;\n return strategy(fn, {\n cache: cache,\n serializer: serializer,\n });\n}\n//\n// Strategy\n//\nfunction isPrimitive(value) {\n return (value == null || typeof value === 'number' || typeof value === 'boolean'); // || typeof value === \"string\" 'unsafe' primitive for our needs\n}\nfunction monadic(fn, cache, serializer, arg) {\n var cacheKey = isPrimitive(arg) ? arg : serializer(arg);\n var computedValue = cache.get(cacheKey);\n if (typeof computedValue === 'undefined') {\n computedValue = fn.call(this, arg);\n cache.set(cacheKey, computedValue);\n }\n return computedValue;\n}\nfunction variadic(fn, cache, serializer) {\n var args = Array.prototype.slice.call(arguments, 3);\n var cacheKey = serializer(args);\n var computedValue = cache.get(cacheKey);\n if (typeof computedValue === 'undefined') {\n computedValue = fn.apply(this, args);\n cache.set(cacheKey, computedValue);\n }\n return computedValue;\n}\nfunction assemble(fn, context, strategy, cache, serialize) {\n return strategy.bind(context, fn, cache, serialize);\n}\nfunction strategyDefault(fn, options) {\n var strategy = fn.length === 1 ? monadic : variadic;\n return assemble(fn, this, strategy, options.cache.create(), options.serializer);\n}\nfunction strategyVariadic(fn, options) {\n return assemble(fn, this, variadic, options.cache.create(), options.serializer);\n}\nfunction strategyMonadic(fn, options) {\n return assemble(fn, this, monadic, options.cache.create(), options.serializer);\n}\n//\n// Serializer\n//\nvar serializerDefault = function () {\n return JSON.stringify(arguments);\n};\n//\n// Cache\n//\nfunction ObjectWithoutPrototypeCache() {\n this.cache = Object.create(null);\n}\nObjectWithoutPrototypeCache.prototype.has = function (key) {\n return key in this.cache;\n};\nObjectWithoutPrototypeCache.prototype.get = function (key) {\n return this.cache[key];\n};\nObjectWithoutPrototypeCache.prototype.set = function (key, value) {\n this.cache[key] = value;\n};\nvar cacheDefault = {\n create: function create() {\n // @ts-ignore\n return new ObjectWithoutPrototypeCache();\n },\n};\nexport var strategies = {\n variadic: strategyVariadic,\n monadic: strategyMonadic,\n};\n","import { __extends } from \"tslib\";\nexport var ErrorCode;\n(function (ErrorCode) {\n // When we have a placeholder but no value to format\n ErrorCode[\"MISSING_VALUE\"] = \"MISSING_VALUE\";\n // When value supplied is invalid\n ErrorCode[\"INVALID_VALUE\"] = \"INVALID_VALUE\";\n // When we need specific Intl API but it's not available\n ErrorCode[\"MISSING_INTL_API\"] = \"MISSING_INTL_API\";\n})(ErrorCode || (ErrorCode = {}));\nvar FormatError = /** @class */ (function (_super) {\n __extends(FormatError, _super);\n function FormatError(msg, code, originalMessage) {\n var _this = _super.call(this, msg) || this;\n _this.code = code;\n _this.originalMessage = originalMessage;\n return _this;\n }\n FormatError.prototype.toString = function () {\n return \"[formatjs Error: \" + this.code + \"] \" + this.message;\n };\n return FormatError;\n}(Error));\nexport { FormatError };\nvar InvalidValueError = /** @class */ (function (_super) {\n __extends(InvalidValueError, _super);\n function InvalidValueError(variableId, value, options, originalMessage) {\n return _super.call(this, \"Invalid values for \\\"\" + variableId + \"\\\": \\\"\" + value + \"\\\". Options are \\\"\" + Object.keys(options).join('\", \"') + \"\\\"\", ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueError;\n}(FormatError));\nexport { InvalidValueError };\nvar InvalidValueTypeError = /** @class */ (function (_super) {\n __extends(InvalidValueTypeError, _super);\n function InvalidValueTypeError(value, type, originalMessage) {\n return _super.call(this, \"Value for \\\"\" + value + \"\\\" must be of type \" + type, ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueTypeError;\n}(FormatError));\nexport { InvalidValueTypeError };\nvar MissingValueError = /** @class */ (function (_super) {\n __extends(MissingValueError, _super);\n function MissingValueError(variableId, originalMessage) {\n return _super.call(this, \"The intl string context variable \\\"\" + variableId + \"\\\" was not provided to the string \\\"\" + originalMessage + \"\\\"\", ErrorCode.MISSING_VALUE, originalMessage) || this;\n }\n return MissingValueError;\n}(FormatError));\nexport { MissingValueError };\n","import { isArgumentElement, isDateElement, isDateTimeSkeleton, isLiteralElement, isNumberElement, isNumberSkeleton, isPluralElement, isPoundElement, isSelectElement, isTimeElement, isTagElement, } from '@formatjs/icu-messageformat-parser';\nimport { MissingValueError, InvalidValueError, ErrorCode, FormatError, InvalidValueTypeError, } from './error';\nexport var PART_TYPE;\n(function (PART_TYPE) {\n PART_TYPE[PART_TYPE[\"literal\"] = 0] = \"literal\";\n PART_TYPE[PART_TYPE[\"object\"] = 1] = \"object\";\n})(PART_TYPE || (PART_TYPE = {}));\nfunction mergeLiteral(parts) {\n if (parts.length < 2) {\n return parts;\n }\n return parts.reduce(function (all, part) {\n var lastPart = all[all.length - 1];\n if (!lastPart ||\n lastPart.type !== PART_TYPE.literal ||\n part.type !== PART_TYPE.literal) {\n all.push(part);\n }\n else {\n lastPart.value += part.value;\n }\n return all;\n }, []);\n}\nexport function isFormatXMLElementFn(el) {\n return typeof el === 'function';\n}\n// TODO(skeleton): add skeleton support\nexport function formatToParts(els, locales, formatters, formats, values, currentPluralValue, \n// For debugging\noriginalMessage) {\n // Hot path for straight simple msg translations\n if (els.length === 1 && isLiteralElement(els[0])) {\n return [\n {\n type: PART_TYPE.literal,\n value: els[0].value,\n },\n ];\n }\n var result = [];\n for (var _i = 0, els_1 = els; _i < els_1.length; _i++) {\n var el = els_1[_i];\n // Exit early for string parts.\n if (isLiteralElement(el)) {\n result.push({\n type: PART_TYPE.literal,\n value: el.value,\n });\n continue;\n }\n // TODO: should this part be literal type?\n // Replace `#` in plural rules with the actual numeric value.\n if (isPoundElement(el)) {\n if (typeof currentPluralValue === 'number') {\n result.push({\n type: PART_TYPE.literal,\n value: formatters.getNumberFormat(locales).format(currentPluralValue),\n });\n }\n continue;\n }\n var varName = el.value;\n // Enforce that all required values are provided by the caller.\n if (!(values && varName in values)) {\n throw new MissingValueError(varName, originalMessage);\n }\n var value = values[varName];\n if (isArgumentElement(el)) {\n if (!value || typeof value === 'string' || typeof value === 'number') {\n value =\n typeof value === 'string' || typeof value === 'number'\n ? String(value)\n : '';\n }\n result.push({\n type: typeof value === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: value,\n });\n continue;\n }\n // Recursively format plural and select parts' option — which can be a\n // nested pattern structure. The choosing of the option to use is\n // abstracted-by and delegated-to the part helper object.\n if (isDateElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.date[el.style]\n : isDateTimeSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isTimeElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.time[el.style]\n : isDateTimeSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isNumberElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.number[el.style]\n : isNumberSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n if (style && style.scale) {\n value =\n value *\n (style.scale || 1);\n }\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getNumberFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isTagElement(el)) {\n var children = el.children, value_1 = el.value;\n var formatFn = values[value_1];\n if (!isFormatXMLElementFn(formatFn)) {\n throw new InvalidValueTypeError(value_1, 'function', originalMessage);\n }\n var parts = formatToParts(children, locales, formatters, formats, values, currentPluralValue);\n var chunks = formatFn(parts.map(function (p) { return p.value; }));\n if (!Array.isArray(chunks)) {\n chunks = [chunks];\n }\n result.push.apply(result, chunks.map(function (c) {\n return {\n type: typeof c === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: c,\n };\n }));\n }\n if (isSelectElement(el)) {\n var opt = el.options[value] || el.options.other;\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values));\n continue;\n }\n if (isPluralElement(el)) {\n var opt = el.options[\"=\" + value];\n if (!opt) {\n if (!Intl.PluralRules) {\n throw new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", ErrorCode.MISSING_INTL_API, originalMessage);\n }\n var rule = formatters\n .getPluralRules(locales, { type: el.pluralType })\n .select(value - (el.offset || 0));\n opt = el.options[rule] || el.options.other;\n }\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values, value - (el.offset || 0)));\n continue;\n }\n }\n return mergeLiteral(result);\n}\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { __assign, __spreadArray } from \"tslib\";\nimport { parse } from '@formatjs/icu-messageformat-parser';\nimport memoize, { strategies } from '@formatjs/fast-memoize';\nimport { formatToParts, PART_TYPE, } from './formatters';\n// -- MessageFormat --------------------------------------------------------\nfunction mergeConfig(c1, c2) {\n if (!c2) {\n return c1;\n }\n return __assign(__assign(__assign({}, (c1 || {})), (c2 || {})), Object.keys(c1).reduce(function (all, k) {\n all[k] = __assign(__assign({}, c1[k]), (c2[k] || {}));\n return all;\n }, {}));\n}\nfunction mergeConfigs(defaultConfig, configs) {\n if (!configs) {\n return defaultConfig;\n }\n return Object.keys(defaultConfig).reduce(function (all, k) {\n all[k] = mergeConfig(defaultConfig[k], configs[k]);\n return all;\n }, __assign({}, defaultConfig));\n}\nfunction createFastMemoizeCache(store) {\n return {\n create: function () {\n return {\n has: function (key) {\n return key in store;\n },\n get: function (key) {\n return store[key];\n },\n set: function (key, value) {\n store[key] = value;\n },\n };\n },\n };\n}\nfunction createDefaultFormatters(cache) {\n if (cache === void 0) { cache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n }; }\n return {\n getNumberFormat: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.number),\n strategy: strategies.variadic,\n }),\n getDateTimeFormat: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.dateTime),\n strategy: strategies.variadic,\n }),\n getPluralRules: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args)))();\n }, {\n cache: createFastMemoizeCache(cache.pluralRules),\n strategy: strategies.variadic,\n }),\n };\n}\nvar IntlMessageFormat = /** @class */ (function () {\n function IntlMessageFormat(message, locales, overrideFormats, opts) {\n var _this = this;\n if (locales === void 0) { locales = IntlMessageFormat.defaultLocale; }\n this.formatterCache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n };\n this.format = function (values) {\n var parts = _this.formatToParts(values);\n // Hot path for straight simple msg translations\n if (parts.length === 1) {\n return parts[0].value;\n }\n var result = parts.reduce(function (all, part) {\n if (!all.length ||\n part.type !== PART_TYPE.literal ||\n typeof all[all.length - 1] !== 'string') {\n all.push(part.value);\n }\n else {\n all[all.length - 1] += part.value;\n }\n return all;\n }, []);\n if (result.length <= 1) {\n return result[0] || '';\n }\n return result;\n };\n this.formatToParts = function (values) {\n return formatToParts(_this.ast, _this.locales, _this.formatters, _this.formats, values, undefined, _this.message);\n };\n this.resolvedOptions = function () { return ({\n locale: Intl.NumberFormat.supportedLocalesOf(_this.locales)[0],\n }); };\n this.getAst = function () { return _this.ast; };\n if (typeof message === 'string') {\n this.message = message;\n if (!IntlMessageFormat.__parse) {\n throw new TypeError('IntlMessageFormat.__parse must be set to process `message` of type `string`');\n }\n // Parse string messages into an AST.\n this.ast = IntlMessageFormat.__parse(message, {\n ignoreTag: opts === null || opts === void 0 ? void 0 : opts.ignoreTag,\n });\n }\n else {\n this.ast = message;\n }\n if (!Array.isArray(this.ast)) {\n throw new TypeError('A message must be provided as a String or AST.');\n }\n // Creates a new object with the specified `formats` merged with the default\n // formats.\n this.formats = mergeConfigs(IntlMessageFormat.formats, overrideFormats);\n // Defined first because it's used to build the format pattern.\n this.locales = locales;\n this.formatters =\n (opts && opts.formatters) || createDefaultFormatters(this.formatterCache);\n }\n Object.defineProperty(IntlMessageFormat, \"defaultLocale\", {\n get: function () {\n if (!IntlMessageFormat.memoizedDefaultLocale) {\n IntlMessageFormat.memoizedDefaultLocale =\n new Intl.NumberFormat().resolvedOptions().locale;\n }\n return IntlMessageFormat.memoizedDefaultLocale;\n },\n enumerable: false,\n configurable: true\n });\n IntlMessageFormat.memoizedDefaultLocale = null;\n IntlMessageFormat.__parse = parse;\n // Default format options used as the prototype of the `formats` provided to the\n // constructor. These are used when constructing the internal Intl.NumberFormat\n // and Intl.DateTimeFormat instances.\n IntlMessageFormat.formats = {\n number: {\n integer: {\n maximumFractionDigits: 0,\n },\n currency: {\n style: 'currency',\n },\n percent: {\n style: 'percent',\n },\n },\n date: {\n short: {\n month: 'numeric',\n day: 'numeric',\n year: '2-digit',\n },\n medium: {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n },\n long: {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n full: {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n },\n time: {\n short: {\n hour: 'numeric',\n minute: 'numeric',\n },\n medium: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n long: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n full: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n },\n };\n return IntlMessageFormat;\n}());\nexport { IntlMessageFormat };\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { IntlMessageFormat } from './src/core';\nexport * from './src/formatters';\nexport * from './src/core';\nexport * from './src/error';\nexport default IntlMessageFormat;\n","import{writable as e,derived as n}from\"svelte/store\";import t from\"deepmerge\";import o from\"intl-messageformat\";const r={},i=(e,n,t)=>t?(n in r||(r[n]={}),e in r[n]||(r[n][e]=t),t):t,l=(e,n)=>{if(null==n)return;if(n in r&&e in r[n])return r[n][e];const t=E(n);for(let o=0;o0){const n=t.slice(e,t.length).join(\".\");if(n in o){o=o[n];break}}o=o[t[e]]}else o=void 0;return o}(t,n)}function m(e,...n){delete r[e],s.update((o=>(o[e]=t.all([o[e]||{},...n]),o)))}const f=n([s],(([e])=>Object.keys(e)));s.subscribe((e=>a=e));const d={};function g(e){return d[e]}function h(e){return null!=e&&E(e).some((e=>{var n;return null===(n=g(e))||void 0===n?void 0:n.size}))}function w(e,n){const t=Promise.all(n.map((n=>(function(e,n){d[e].delete(n),0===d[e].size&&delete d[e]}(e,n),n().then((e=>e.default||e))))));return t.then((n=>m(e,...n)))}const p={};function b(e){if(!h(e))return e in p?p[e]:Promise.resolve();const n=function(e){return E(e).map((e=>{const n=g(e);return[e,n?[...n]:[]]})).filter((([,e])=>e.length>0))}(e);return p[e]=Promise.all(n.map((([e,n])=>w(e,n)))).then((()=>{if(h(e))return b(e);delete p[e]})),p[e]}function y(e,n){g(e)||function(e){d[e]=new Set}(e);const t=g(e);g(e).has(n)||(u(e)||s.update((n=>(n[e]={},n))),t.add(n))}\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */function v(e,n){var t={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&n.indexOf(o)<0&&(t[o]=e[o]);if(null!=e&&\"function\"==typeof Object.getOwnPropertySymbols){var r=0;for(o=Object.getOwnPropertySymbols(e);rt.slice(0,n+1).join(\"-\"))).reverse()}function E(e,n=M().fallbackLocale){const t=x(e);return n?[...new Set([...t,...x(n)])]:t}function P(){return null!=T?T:void 0}L.subscribe((e=>{T=null!=e?e:void 0,\"undefined\"!=typeof window&&null!=e&&document.documentElement.setAttribute(\"lang\",e)}));const D=Object.assign(Object.assign({},L),{set:e=>{if(e&&function(e){if(null==e)return;const n=E(e);for(let e=0;ek.set(!0)),n):k.set(!0),b(e).then((()=>{L.set(e)})).finally((()=>{clearTimeout(t),k.set(!1)}))}return L.set(e)}}),S=(e,n)=>{const t=e.split(\"&\").find((e=>0===e.indexOf(`${n}=`)));return t?t.split(\"=\").pop():null},N=(e,n)=>{const t=n.exec(e);return t&&t[1]||null},A=e=>\"undefined\"==typeof window?null:N(window.location.hostname,e),I=e=>\"undefined\"==typeof window?null:N(window.location.pathname,e),F=()=>\"undefined\"==typeof window?null:window.navigator.language||window.navigator.languages[0],z=e=>\"undefined\"==typeof window?null:S(window.location.search.substr(1),e),Z=e=>\"undefined\"==typeof window?null:S(window.location.hash.substr(1),e),C=e=>{const n=Object.create(null);return t=>{const o=JSON.stringify(t);return o in n?n[o]:n[o]=e(t)}},G=(e,n)=>{const{formats:t}=M();if(e in t&&n in t[e])return t[e][n];throw new Error(`[svelte-i18n] Unknown \"${n}\" ${e} format.`)},J=C((e=>{var{locale:n,format:t}=e,o=v(e,[\"locale\",\"format\"]);if(null==n)throw new Error('[svelte-i18n] A \"locale\" must be set to format numbers');return t&&(o=G(\"number\",t)),new Intl.NumberFormat(n,o)})),U=C((e=>{var{locale:n,format:t}=e,o=v(e,[\"locale\",\"format\"]);if(null==n)throw new Error('[svelte-i18n] A \"locale\" must be set to format dates');return t?o=G(\"date\",t):0===Object.keys(o).length&&(o=G(\"date\",\"short\")),new Intl.DateTimeFormat(n,o)})),V=C((e=>{var{locale:n,format:t}=e,o=v(e,[\"locale\",\"format\"]);if(null==n)throw new Error('[svelte-i18n] A \"locale\" must be set to format time values');return t?o=G(\"time\",t):0===Object.keys(o).length&&(o=G(\"time\",\"short\")),new Intl.DateTimeFormat(n,o)})),_=(e={})=>{var{locale:n=P()}=e,t=v(e,[\"locale\"]);return J(Object.assign({locale:n},t))},q=(e={})=>{var{locale:n=P()}=e,t=v(e,[\"locale\"]);return U(Object.assign({locale:n},t))},B=(e={})=>{var{locale:n=P()}=e,t=v(e,[\"locale\"]);return V(Object.assign({locale:n},t))},H=C(((e,n=P())=>new o(e,n,M().formats,{ignoreTag:M().ignoreTag}))),K=(e,n={})=>{var t,o,r,i;let a=n;\"object\"==typeof e&&(a=e,e=a.id);const{values:s,locale:u=P(),default:c}=a;if(null==u)throw new Error(\"[svelte-i18n] Cannot format a message without first setting the initial locale.\");let m=l(e,u);if(m){if(\"string\"!=typeof m)return console.warn(`[svelte-i18n] Message with id \"${e}\" must be of type \"string\", found: \"${typeof m}\". Gettin its value through the \"$format\" method is deprecated; use the \"json\" method instead.`),m}else m=null!==(i=null!==(r=null===(o=(t=M()).handleMissingMessage)||void 0===o?void 0:o.call(t,{locale:u,id:e,defaultValue:c}))&&void 0!==r?r:c)&&void 0!==i?i:e;if(!s)return m;let f=m;try{f=H(m,u).format(s)}catch(n){console.warn(`[svelte-i18n] Message \"${e}\" has syntax error:`,n.message)}return f},Q=(e,n)=>B(n).format(e),R=(e,n)=>q(n).format(e),W=(e,n)=>_(n).format(e),X=(e,n=P())=>l(e,n),Y=n([D,s],(()=>K)),ee=n([D],(()=>Q)),ne=n([D],(()=>R)),te=n([D],(()=>W)),oe=n([D,s],(()=>X));function re(e){return e}function ie(e){return b(e||P()||M().initialLocale)}export{Y as _,m as addMessages,ne as date,re as defineMessages,s as dictionary,Y as format,q as getDateFormatter,Z as getLocaleFromHash,A as getLocaleFromHostname,F as getLocaleFromNavigator,I as getLocaleFromPathname,z as getLocaleFromQueryString,H as getMessageFormatter,_ as getNumberFormatter,B as getTimeFormatter,$ as init,k as isLoading,oe as json,D as locale,f as locales,te as number,y as register,Y as t,ee as time,ie as waitLocale};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","\r\n \r\n\r\n\r\n\r\n","import {\n e,\n s,\n t\n} from \"./chunk.VSJN236Y.js\";\nimport {\n g\n} from \"./chunk.SXOXLYUK.js\";\n\n// node_modules/lit-html/directives/class-map.js\n/**\n * @license\n * Copyright (c) 2018 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nvar i = s(class extends e {\n constructor(t2) {\n var _a;\n if (super(t2), t2.type !== t.ATTRIBUTE || t2.name !== \"class\" || ((_a = t2.strings) == null ? void 0 : _a.length) > 2)\n throw Error(\"The `classMap` directive must be used in the `class` attribute and must be the only part in the attribute.\");\n }\n render(t2) {\n return Object.keys(t2).filter((s2) => t2[s2]).join(\" \");\n }\n update(s2, [r]) {\n if (this.previousClasses === void 0) {\n this.previousClasses = new Set();\n for (const t2 in r)\n r[t2] && this.previousClasses.add(t2);\n return this.render(r);\n }\n const e2 = s2.element.classList;\n this.previousClasses.forEach((t2) => {\n t2 in r || (e2.remove(t2), this.previousClasses.delete(t2));\n });\n for (const t2 in r) {\n const s3 = !!r[t2];\n s3 !== this.previousClasses.has(t2) && (s3 ? (e2.add(t2), this.previousClasses.add(t2)) : (e2.remove(t2), this.previousClasses.delete(t2)));\n }\n return g;\n }\n});\n\nexport {\n i\n};\n","import {\n e,\n t\n} from \"./chunk.AUTNDGPL.js\";\n\n// node_modules/@lit/reactive-element/decorators/query.js\nfunction i(i2, r) {\n return (e2, n) => {\n const s = {get() {\n var _a;\n return (_a = this.renderRoot) == null ? void 0 : _a.querySelector(i2);\n }, enumerable: true, configurable: true};\n if (r) {\n const t2 = n !== void 0 ? n : e2.key, o = typeof t2 == \"symbol\" ? Symbol() : \"__\" + t2;\n s.get = function() {\n var _a;\n return this[o] === void 0 && (this[o] = (_a = this.renderRoot) == null ? void 0 : _a.querySelector(i2)), this[o];\n };\n }\n return n !== void 0 ? e(s, e2, n) : t(s, e2);\n };\n}\n\nexport {\n i\n};\n","// node_modules/@lit/reactive-element/decorators/base.js\nvar e = (e2, t2, o) => {\n Object.defineProperty(t2, o, e2);\n};\nvar t = (e2, t2) => ({kind: \"method\", placement: \"prototype\", key: t2.key, descriptor: e2});\n\nexport {\n e,\n t\n};\n","import {\n o\n} from \"./chunk.SA3KMFF3.js\";\nimport {\n i\n} from \"./chunk.5D6J5A4S.js\";\nimport {\n p\n} from \"./chunk.SXOXLYUK.js\";\n\n// src/internal/form-control.ts\nvar renderFormControl = (props, input) => {\n const hasLabel = props.label ? true : !!props.hasLabelSlot;\n const hasHelpText = props.helpText ? true : !!props.hasHelpTextSlot;\n return p`\n \n props.onLabelClick ? props.onLabelClick(event) : null}\n >\n ${props.label}\n \n\n

${p`${input}`}
\n\n \n ${props.helpText}\n \n \n `;\n};\nfunction getLabelledBy(props) {\n const labelledBy = [\n props.label || props.hasLabelSlot ? props.labelId : \"\",\n props.helpText || props.hasHelpTextSlot ? props.helpTextId : \"\"\n ].filter((val) => val);\n return labelledBy.join(\" \") || void 0;\n}\n\nexport {\n renderFormControl,\n getLabelledBy\n};\n","// src/internal/decorators.ts\nfunction event(eventName) {\n function legacyEvent(descriptor, protoOrDescriptor, name) {\n Object.defineProperty(protoOrDescriptor, name, descriptor);\n }\n function standardEvent(descriptor, element) {\n return {\n kind: \"method\",\n placement: \"prototype\",\n key: element.key,\n descriptor\n };\n }\n return (protoOrDescriptor, name) => {\n const descriptor = {\n get() {\n return new EventEmitter(this, eventName || (name !== void 0 ? name : protoOrDescriptor.key));\n },\n enumerable: true,\n configurable: true\n };\n return name !== void 0 ? legacyEvent(descriptor, protoOrDescriptor, name) : standardEvent(descriptor, protoOrDescriptor);\n };\n}\nvar EventEmitter = class {\n constructor(target, eventName) {\n this.target = target;\n this.eventName = eventName;\n }\n emit(eventOptions) {\n const event2 = new CustomEvent(this.eventName, Object.assign({\n bubbles: true,\n cancelable: true,\n composed: true,\n detail: {}\n }, eventOptions));\n this.target.dispatchEvent(event2);\n return event2;\n }\n};\n\nexport {\n event\n};\n","// src/internal/slot.ts\nfunction hasSlot(el, name) {\n if (name) {\n return el.querySelector(`[slot=\"${name}\"]`) !== null;\n }\n return [...el.childNodes].some((node) => {\n if (node.nodeType === node.TEXT_NODE && node.textContent.trim() !== \"\") {\n return true;\n }\n if (node.nodeType === node.ELEMENT_NODE) {\n const el2 = node;\n if (!el2.hasAttribute(\"slot\")) {\n return true;\n }\n }\n return false;\n });\n}\n\nexport {\n hasSlot\n};\n","// node_modules/@popperjs/core/dist/esm/dom-utils/getBoundingClientRect.js\nfunction getBoundingClientRect(element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n y: rect.top\n };\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/getWindow.js\nfunction getWindow(node) {\n if (node.toString() !== \"[object Window]\") {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n return node;\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/getWindowScroll.js\nfunction getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft,\n scrollTop\n };\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/instanceOf.js\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\nfunction isShadowRoot(node) {\n if (typeof ShadowRoot === \"undefined\") {\n return false;\n }\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/getHTMLElementScroll.js\nfunction getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/getNodeScroll.js\nfunction getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/getNodeName.js\nfunction getNodeName(element) {\n return element ? (element.nodeName || \"\").toLowerCase() : null;\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/getDocumentElement.js\nfunction getDocumentElement(element) {\n return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement;\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/getWindowScrollBarX.js\nfunction getWindowScrollBarX(element) {\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/getComputedStyle.js\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/isScrollParent.js\nfunction isScrollParent(element) {\n var _getComputedStyle = getComputedStyle(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/getCompositeRect.js\nfunction getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement);\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== \"body\" || isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/getLayoutRect.js\nfunction getLayoutRect(element) {\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/getParentNode.js\nfunction getParentNode(element) {\n if (getNodeName(element) === \"html\") {\n return element;\n }\n return element.assignedSlot || element.parentNode || (isShadowRoot(element) ? element.host : null) || getDocumentElement(element);\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/getScrollParent.js\nfunction getScrollParent(node) {\n if ([\"html\", \"body\", \"#document\"].indexOf(getNodeName(node)) >= 0) {\n return node.ownerDocument.body;\n }\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n return getScrollParent(getParentNode(node));\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/listScrollParents.js\nfunction listScrollParents(element, list) {\n var _element$ownerDocumen;\n if (list === void 0) {\n list = [];\n }\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : updatedList.concat(listScrollParents(getParentNode(target)));\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/isTableElement.js\nfunction isTableElement(element) {\n return [\"table\", \"td\", \"th\"].indexOf(getNodeName(element)) >= 0;\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/getOffsetParent.js\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === \"fixed\") {\n return null;\n }\n return element.offsetParent;\n}\nfunction getContainingBlock(element) {\n var isFirefox = navigator.userAgent.toLowerCase().includes(\"firefox\");\n var currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && [\"html\", \"body\"].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode);\n if (css.transform !== \"none\" || css.perspective !== \"none\" || css.contain === \"paint\" || [\"transform\", \"perspective\"].includes(css.willChange) || isFirefox && css.willChange === \"filter\" || isFirefox && css.filter && css.filter !== \"none\") {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n return null;\n}\nfunction getOffsetParent(element) {\n var window2 = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === \"static\") {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n if (offsetParent && (getNodeName(offsetParent) === \"html\" || getNodeName(offsetParent) === \"body\" && getComputedStyle(offsetParent).position === \"static\")) {\n return window2;\n }\n return offsetParent || getContainingBlock(element) || window2;\n}\n\n// node_modules/@popperjs/core/dist/esm/enums.js\nvar top = \"top\";\nvar bottom = \"bottom\";\nvar right = \"right\";\nvar left = \"left\";\nvar auto = \"auto\";\nvar basePlacements = [top, bottom, right, left];\nvar start = \"start\";\nvar end = \"end\";\nvar clippingParents = \"clippingParents\";\nvar viewport = \"viewport\";\nvar popper = \"popper\";\nvar reference = \"reference\";\nvar variationPlacements = /* @__PURE__ */ basePlacements.reduce(function(acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nvar placements = /* @__PURE__ */ [].concat(basePlacements, [auto]).reduce(function(acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nvar beforeRead = \"beforeRead\";\nvar read = \"read\";\nvar afterRead = \"afterRead\";\nvar beforeMain = \"beforeMain\";\nvar main = \"main\";\nvar afterMain = \"afterMain\";\nvar beforeWrite = \"beforeWrite\";\nvar write = \"write\";\nvar afterWrite = \"afterWrite\";\nvar modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];\n\n// node_modules/@popperjs/core/dist/esm/utils/orderModifiers.js\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function(modifier) {\n map.set(modifier.name, modifier);\n });\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function(dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n modifiers.forEach(function(modifier) {\n if (!visited.has(modifier.name)) {\n sort(modifier);\n }\n });\n return result;\n}\nfunction orderModifiers(modifiers) {\n var orderedModifiers = order(modifiers);\n return modifierPhases.reduce(function(acc, phase) {\n return acc.concat(orderedModifiers.filter(function(modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}\n\n// node_modules/@popperjs/core/dist/esm/utils/debounce.js\nfunction debounce(fn2) {\n var pending;\n return function() {\n if (!pending) {\n pending = new Promise(function(resolve) {\n Promise.resolve().then(function() {\n pending = void 0;\n resolve(fn2());\n });\n });\n }\n return pending;\n };\n}\n\n// node_modules/@popperjs/core/dist/esm/utils/getBasePlacement.js\nfunction getBasePlacement(placement) {\n return placement.split(\"-\")[0];\n}\n\n// node_modules/@popperjs/core/dist/esm/utils/mergeByName.js\nfunction mergeByName(modifiers) {\n var merged = modifiers.reduce(function(merged2, current) {\n var existing = merged2[current.name];\n merged2[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged2;\n }, {});\n return Object.keys(merged).map(function(key) {\n return merged[key];\n });\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/getViewportRect.js\nfunction getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x: x + getWindowScrollBarX(element),\n y\n };\n}\n\n// node_modules/@popperjs/core/dist/esm/utils/math.js\nvar max = Math.max;\nvar min = Math.min;\nvar round = Math.round;\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/getDocumentRect.js\nfunction getDocumentRect(element) {\n var _element$ownerDocumen;\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n if (getComputedStyle(body || html).direction === \"rtl\") {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/contains.js\nfunction contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode();\n if (parent.contains(child)) {\n return true;\n } else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n }\n next = next.parentNode || next.host;\n } while (next);\n }\n return false;\n}\n\n// node_modules/@popperjs/core/dist/esm/utils/rectToClientRect.js\nfunction rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}\n\n// node_modules/@popperjs/core/dist/esm/dom-utils/getClippingRect.js\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n}\nfunction getClippingParents(element) {\n var clippingParents2 = listScrollParents(getParentNode(element));\n var canEscapeClipping = [\"absolute\", \"fixed\"].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n if (!isElement(clipperElement)) {\n return [];\n }\n return clippingParents2.filter(function(clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== \"body\";\n });\n}\nfunction getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === \"clippingParents\" ? getClippingParents(element) : [].concat(boundary);\n var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents2[0];\n var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}\n\n// node_modules/@popperjs/core/dist/esm/utils/getVariation.js\nfunction getVariation(placement) {\n return placement.split(\"-\")[1];\n}\n\n// node_modules/@popperjs/core/dist/esm/utils/getMainAxisFromPlacement.js\nfunction getMainAxisFromPlacement(placement) {\n return [\"top\", \"bottom\"].indexOf(placement) >= 0 ? \"x\" : \"y\";\n}\n\n// node_modules/@popperjs/core/dist/esm/utils/computeOffsets.js\nfunction computeOffsets(_ref) {\n var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference2.x + reference2.width / 2 - element.width / 2;\n var commonY = reference2.y + reference2.height / 2 - element.height / 2;\n var offsets;\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference2.y - element.height\n };\n break;\n case bottom:\n offsets = {\n x: commonX,\n y: reference2.y + reference2.height\n };\n break;\n case right:\n offsets = {\n x: reference2.x + reference2.width,\n y: commonY\n };\n break;\n case left:\n offsets = {\n x: reference2.x - element.width,\n y: commonY\n };\n break;\n default:\n offsets = {\n x: reference2.x,\n y: reference2.y\n };\n }\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n if (mainAxis != null) {\n var len = mainAxis === \"y\" ? \"height\" : \"width\";\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2);\n break;\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2);\n break;\n default:\n }\n }\n return offsets;\n}\n\n// node_modules/@popperjs/core/dist/esm/utils/getFreshSideObject.js\nfunction getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}\n\n// node_modules/@popperjs/core/dist/esm/utils/mergePaddingObject.js\nfunction mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}\n\n// node_modules/@popperjs/core/dist/esm/utils/expandToHashMap.js\nfunction expandToHashMap(value, keys) {\n return keys.reduce(function(hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}\n\n// node_modules/@popperjs/core/dist/esm/utils/detectOverflow.js\nfunction detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== \"number\" ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var referenceElement = state.elements.reference;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(referenceElement);\n var popperOffsets2 = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: \"absolute\",\n placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset;\n if (elementContext === popper && offsetData) {\n var offset2 = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function(key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? \"y\" : \"x\";\n overflowOffsets[key] += offset2[axis] * multiply;\n });\n }\n return overflowOffsets;\n}\n\n// node_modules/@popperjs/core/dist/esm/createPopper.js\nvar DEFAULT_OPTIONS = {\n placement: \"bottom\",\n modifiers: [],\n strategy: \"absolute\"\n};\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return !args.some(function(element) {\n return !(element && typeof element.getBoundingClientRect === \"function\");\n });\n}\nfunction popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers2 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper2(reference2, popper2, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n var state = {\n placement: \"bottom\",\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference2,\n popper: popper2\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state,\n setOptions: function setOptions(options2) {\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options2);\n state.scrollParents = {\n reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],\n popper: listScrollParents(popper2)\n };\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers2, state.options.modifiers)));\n state.orderedModifiers = orderedModifiers.filter(function(m) {\n return m.enabled;\n });\n if (false) {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function(_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function(_ref2) {\n var name = _ref2.name;\n return name === \"flip\";\n });\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', \"present and enabled to work.\"].join(\" \"));\n }\n }\n var _getComputedStyle = getComputedStyle(popper2), marginTop = _getComputedStyle.marginTop, marginRight = _getComputedStyle.marginRight, marginBottom = _getComputedStyle.marginBottom, marginLeft = _getComputedStyle.marginLeft;\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function(margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', \"between the popper and its reference element or boundary.\", \"To replicate margin, use the `offset` modifier, as well as\", \"the `padding` option in the `preventOverflow` and `flip`\", \"modifiers.\"].join(\" \"));\n }\n }\n runModifierEffects();\n return instance.update();\n },\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper;\n if (!areValidElements(reference3, popper3)) {\n if (false) {\n console.error(INVALID_ELEMENT_ERROR);\n }\n return;\n }\n state.rects = {\n reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === \"fixed\"),\n popper: getLayoutRect(popper3)\n };\n state.reset = false;\n state.placement = state.options.placement;\n state.orderedModifiers.forEach(function(modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (false) {\n __debug_loops__ += 1;\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n var _state$orderedModifie = state.orderedModifiers[index], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;\n if (typeof fn2 === \"function\") {\n state = fn2({\n state,\n options: _options,\n name,\n instance\n }) || state;\n }\n }\n },\n update: debounce(function() {\n return new Promise(function(resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n if (!areValidElements(reference2, popper2)) {\n if (false) {\n console.error(INVALID_ELEMENT_ERROR);\n }\n return instance;\n }\n instance.setOptions(options).then(function(state2) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state2);\n }\n });\n function runModifierEffects() {\n state.orderedModifiers.forEach(function(_ref3) {\n var name = _ref3.name, _ref3$options = _ref3.options, options2 = _ref3$options === void 0 ? {} : _ref3$options, effect4 = _ref3.effect;\n if (typeof effect4 === \"function\") {\n var cleanupFn = effect4({\n state,\n name,\n instance,\n options: options2\n });\n var noopFn = function noopFn2() {\n };\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function(fn2) {\n return fn2();\n });\n effectCleanupFns = [];\n }\n return instance;\n };\n}\n\n// node_modules/@popperjs/core/dist/esm/modifiers/applyStyles.js\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function(name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name];\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function(name2) {\n var value = attributes[name2];\n if (value === false) {\n element.removeAttribute(name2);\n } else {\n element.setAttribute(name2, value === true ? \"\" : value);\n }\n });\n });\n}\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: \"0\",\n top: \"0\",\n margin: \"0\"\n },\n arrow: {\n position: \"absolute\"\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n return function() {\n Object.keys(state.elements).forEach(function(name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]);\n var style = styleProperties.reduce(function(style2, property) {\n style2[property] = \"\";\n return style2;\n }, {});\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function(attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n}\nvar applyStyles_default = {\n name: \"applyStyles\",\n enabled: true,\n phase: \"write\",\n fn: applyStyles,\n effect,\n requires: [\"computeStyles\"]\n};\n\n// node_modules/@popperjs/core/dist/esm/utils/within.js\nfunction within(min2, value, max2) {\n return max(min2, min(value, max2));\n}\n\n// node_modules/@popperjs/core/dist/esm/modifiers/arrow.js\nvar toPaddingObject = function toPaddingObject2(padding, state) {\n padding = typeof padding === \"function\" ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== \"number\" ? padding : expandToHashMap(padding, basePlacements));\n};\nfunction arrow(_ref) {\n var _state$modifiersData$;\n var state = _ref.state, name = _ref.name, options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets2 = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? \"height\" : \"width\";\n if (!arrowElement || !popperOffsets2) {\n return;\n }\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === \"y\" ? top : left;\n var maxProp = axis === \"y\" ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len];\n var startDiff = popperOffsets2[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === \"y\" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2;\n var min2 = paddingObject[minProp];\n var max2 = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset2 = within(min2, center, max2);\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset2, _state$modifiersData$.centerOffset = offset2 - center, _state$modifiersData$);\n}\nfunction effect2(_ref2) {\n var state = _ref2.state, options = _ref2.options;\n var _options$element = options.element, arrowElement = _options$element === void 0 ? \"[data-popper-arrow]\" : _options$element;\n if (arrowElement == null) {\n return;\n }\n if (typeof arrowElement === \"string\") {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n if (!arrowElement) {\n return;\n }\n }\n if (false) {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', \"To use an SVG arrow, wrap it in an HTMLElement that will be used as\", \"the arrow.\"].join(\" \"));\n }\n }\n if (!contains(state.elements.popper, arrowElement)) {\n if (false) {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', \"element.\"].join(\" \"));\n }\n return;\n }\n state.elements.arrow = arrowElement;\n}\nvar arrow_default = {\n name: \"arrow\",\n enabled: true,\n phase: \"main\",\n fn: arrow,\n effect: effect2,\n requires: [\"popperOffsets\"],\n requiresIfExists: [\"preventOverflow\"]\n};\n\n// node_modules/@popperjs/core/dist/esm/modifiers/computeStyles.js\nvar unsetSides = {\n top: \"auto\",\n right: \"auto\",\n bottom: \"auto\",\n left: \"auto\"\n};\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x, y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(round(x * dpr) / dpr) || 0,\n y: round(round(y * dpr) / dpr) || 0\n };\n}\nfunction mapToStyles(_ref2) {\n var _Object$assign2;\n var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets;\n var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === \"function\" ? roundOffsets(offsets) : offsets, _ref3$x = _ref3.x, x = _ref3$x === void 0 ? 0 : _ref3$x, _ref3$y = _ref3.y, y = _ref3$y === void 0 ? 0 : _ref3$y;\n var hasX = offsets.hasOwnProperty(\"x\");\n var hasY = offsets.hasOwnProperty(\"y\");\n var sideX = left;\n var sideY = top;\n var win = window;\n if (adaptive) {\n var offsetParent = getOffsetParent(popper2);\n var heightProp = \"clientHeight\";\n var widthProp = \"clientWidth\";\n if (offsetParent === getWindow(popper2)) {\n offsetParent = getDocumentElement(popper2);\n if (getComputedStyle(offsetParent).position !== \"static\") {\n heightProp = \"scrollHeight\";\n widthProp = \"scrollWidth\";\n }\n }\n if (placement === top) {\n sideY = bottom;\n y -= offsetParent[heightProp] - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n if (placement === left) {\n sideX = right;\n x -= offsetParent[widthProp] - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n var commonStyles = Object.assign({\n position\n }, adaptive && unsetSides);\n if (gpuAcceleration) {\n var _Object$assign;\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? \"0\" : \"\", _Object$assign[sideX] = hasX ? \"0\" : \"\", _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : \"\", _Object$assign2[sideX] = hasX ? x + \"px\" : \"\", _Object$assign2.transform = \"\", _Object$assign2));\n}\nfunction computeStyles(_ref4) {\n var state = _ref4.state, options = _ref4.options;\n var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n if (false) {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || \"\";\n if (adaptive && [\"transform\", \"top\", \"right\", \"bottom\", \"left\"].some(function(property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn([\"Popper: Detected CSS transitions on at least one of the following\", 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', \"\\n\\n\", 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', \"for smooth transitions, or remove these properties from the CSS\", \"transition declaration on the popper element if only transitioning\", \"opacity or background-color for example.\", \"\\n\\n\", \"We recommend using the popper element as a wrapper around an inner\", \"element that can have any CSS property transitioned for animations.\"].join(\" \"));\n }\n }\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration\n };\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive,\n roundOffsets\n })));\n }\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: \"absolute\",\n adaptive: false,\n roundOffsets\n })));\n }\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n \"data-popper-placement\": state.placement\n });\n}\nvar computeStyles_default = {\n name: \"computeStyles\",\n enabled: true,\n phase: \"beforeWrite\",\n fn: computeStyles,\n data: {}\n};\n\n// node_modules/@popperjs/core/dist/esm/modifiers/eventListeners.js\nvar passive = {\n passive: true\n};\nfunction effect3(_ref) {\n var state = _ref.state, instance = _ref.instance, options = _ref.options;\n var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;\n var window2 = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n if (scroll) {\n scrollParents.forEach(function(scrollParent) {\n scrollParent.addEventListener(\"scroll\", instance.update, passive);\n });\n }\n if (resize) {\n window2.addEventListener(\"resize\", instance.update, passive);\n }\n return function() {\n if (scroll) {\n scrollParents.forEach(function(scrollParent) {\n scrollParent.removeEventListener(\"scroll\", instance.update, passive);\n });\n }\n if (resize) {\n window2.removeEventListener(\"resize\", instance.update, passive);\n }\n };\n}\nvar eventListeners_default = {\n name: \"eventListeners\",\n enabled: true,\n phase: \"write\",\n fn: function fn() {\n },\n effect: effect3,\n data: {}\n};\n\n// node_modules/@popperjs/core/dist/esm/utils/getOppositePlacement.js\nvar hash = {\n left: \"right\",\n right: \"left\",\n bottom: \"top\",\n top: \"bottom\"\n};\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function(matched) {\n return hash[matched];\n });\n}\n\n// node_modules/@popperjs/core/dist/esm/utils/getOppositeVariationPlacement.js\nvar hash2 = {\n start: \"end\",\n end: \"start\"\n};\nfunction getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function(matched) {\n return hash2[matched];\n });\n}\n\n// node_modules/@popperjs/core/dist/esm/utils/computeAutoPlacement.js\nfunction computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements2 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {\n return getVariation(placement2) === variation;\n }) : basePlacements;\n var allowedPlacements = placements2.filter(function(placement2) {\n return allowedAutoPlacements.indexOf(placement2) >= 0;\n });\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements2;\n if (false) {\n console.error([\"Popper: The `allowedAutoPlacements` option did not allow any\", \"placements. Ensure the `placement` option matches the variation\", \"of the allowed placements.\", 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(\" \"));\n }\n }\n var overflows = allowedPlacements.reduce(function(acc, placement2) {\n acc[placement2] = detectOverflow(state, {\n placement: placement2,\n boundary,\n rootBoundary,\n padding\n })[getBasePlacement(placement2)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function(a, b) {\n return overflows[a] - overflows[b];\n });\n}\n\n// node_modules/@popperjs/core/dist/esm/modifiers/flip.js\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\nfunction flip(_ref) {\n var state = _ref.state, options = _ref.options, name = _ref.name;\n if (state.modifiersData[name]._skip) {\n return;\n }\n var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements2 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {\n return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, {\n placement: placement2,\n boundary,\n rootBoundary,\n padding,\n flipVariations,\n allowedAutoPlacements\n }) : placement2);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements2[0];\n for (var i = 0; i < placements2.length; i++) {\n var placement = placements2[i];\n var _basePlacement = getBasePlacement(placement);\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? \"width\" : \"height\";\n var overflow = detectOverflow(state, {\n placement,\n boundary,\n rootBoundary,\n altBoundary,\n padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n if (checks.every(function(check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n checksMap.set(placement, checks);\n }\n if (makeFallbackChecks) {\n var numberOfChecks = flipVariations ? 3 : 1;\n var _loop = function _loop2(_i2) {\n var fittingPlacement = placements2.find(function(placement2) {\n var checks2 = checksMap.get(placement2);\n if (checks2) {\n return checks2.slice(0, _i2).every(function(check) {\n return check;\n });\n }\n });\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n if (_ret === \"break\")\n break;\n }\n }\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n}\nvar flip_default = {\n name: \"flip\",\n enabled: true,\n phase: \"main\",\n fn: flip,\n requiresIfExists: [\"offset\"],\n data: {\n _skip: false\n }\n};\n\n// node_modules/@popperjs/core/dist/esm/modifiers/hide.js\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function(side) {\n return overflow[side] >= 0;\n });\n}\nfunction hide(_ref) {\n var state = _ref.state, name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: \"reference\"\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets,\n popperEscapeOffsets,\n isReferenceHidden,\n hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n \"data-popper-reference-hidden\": isReferenceHidden,\n \"data-popper-escaped\": hasPopperEscaped\n });\n}\nvar hide_default = {\n name: \"hide\",\n enabled: true,\n phase: \"main\",\n requiresIfExists: [\"preventOverflow\"],\n fn: hide\n};\n\n// node_modules/@popperjs/core/dist/esm/modifiers/offset.js\nfunction distanceAndSkiddingToXY(placement, rects, offset2) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n var _ref = typeof offset2 === \"function\" ? offset2(Object.assign({}, rects, {\n placement\n })) : offset2, skidding = _ref[0], distance = _ref[1];\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\nfunction offset(_ref2) {\n var state = _ref2.state, options = _ref2.options, name = _ref2.name;\n var _options$offset = options.offset, offset2 = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function(acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset2);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n state.modifiersData[name] = data;\n}\nvar offset_default = {\n name: \"offset\",\n enabled: true,\n phase: \"main\",\n requires: [\"popperOffsets\"],\n fn: offset\n};\n\n// node_modules/@popperjs/core/dist/esm/modifiers/popperOffsets.js\nfunction popperOffsets(_ref) {\n var state = _ref.state, name = _ref.name;\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: \"absolute\",\n placement: state.placement\n });\n}\nvar popperOffsets_default = {\n name: \"popperOffsets\",\n enabled: true,\n phase: \"read\",\n fn: popperOffsets,\n data: {}\n};\n\n// node_modules/@popperjs/core/dist/esm/utils/getAltAxis.js\nfunction getAltAxis(axis) {\n return axis === \"x\" ? \"y\" : \"x\";\n}\n\n// node_modules/@popperjs/core/dist/esm/modifiers/preventOverflow.js\nfunction preventOverflow(_ref) {\n var state = _ref.state, options = _ref.options, name = _ref.name;\n var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary,\n rootBoundary,\n padding,\n altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets2 = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === \"function\" ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n if (!popperOffsets2) {\n return;\n }\n if (checkMainAxis || checkAltAxis) {\n var mainSide = mainAxis === \"y\" ? top : left;\n var altSide = mainAxis === \"y\" ? bottom : right;\n var len = mainAxis === \"y\" ? \"height\" : \"width\";\n var offset2 = popperOffsets2[mainAxis];\n var min2 = popperOffsets2[mainAxis] + overflow[mainSide];\n var max2 = popperOffsets2[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData[\"arrow#persistent\"] ? state.modifiersData[\"arrow#persistent\"].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide];\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === \"y\" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets2[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets2[mainAxis] + maxOffset - offsetModifierValue;\n if (checkMainAxis) {\n var preventedOffset = within(tether ? min(min2, tetherMin) : min2, offset2, tether ? max(max2, tetherMax) : max2);\n popperOffsets2[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset2;\n }\n if (checkAltAxis) {\n var _mainSide = mainAxis === \"x\" ? top : left;\n var _altSide = mainAxis === \"x\" ? bottom : right;\n var _offset = popperOffsets2[altAxis];\n var _min = _offset + overflow[_mainSide];\n var _max = _offset - overflow[_altSide];\n var _preventedOffset = within(tether ? min(_min, tetherMin) : _min, _offset, tether ? max(_max, tetherMax) : _max);\n popperOffsets2[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n }\n state.modifiersData[name] = data;\n}\nvar preventOverflow_default = {\n name: \"preventOverflow\",\n enabled: true,\n phase: \"main\",\n fn: preventOverflow,\n requiresIfExists: [\"offset\"]\n};\n\n// node_modules/@popperjs/core/dist/esm/popper.js\nvar defaultModifiers = [eventListeners_default, popperOffsets_default, computeStyles_default, applyStyles_default, offset_default, flip_default, preventOverflow_default, arrow_default, hide_default];\nvar createPopper = /* @__PURE__ */ popperGenerator({\n defaultModifiers\n});\n\n// src/internal/popover.ts\nvar Popover = class {\n constructor(anchor, popover, options) {\n this.handleTransitionEnd = this.handleTransitionEnd.bind(this);\n this.anchor = anchor;\n this.popover = popover;\n this.options = Object.assign({\n skidding: 0,\n distance: 0,\n placement: \"bottom-start\",\n strategy: \"absolute\",\n transitionElement: this.popover,\n visibleClass: \"popover-visible\",\n onAfterShow: () => {\n },\n onAfterHide: () => {\n },\n onTransitionEnd: () => {\n }\n }, options);\n this.isVisible = false;\n this.popover.hidden = true;\n this.popover.classList.remove(this.options.visibleClass);\n this.popover.addEventListener(\"transitionend\", this.handleTransitionEnd);\n }\n handleTransitionEnd(event) {\n const target = event.target;\n if (target === this.options.transitionElement) {\n this.options.onTransitionEnd.call(this, event);\n if (!this.isVisible && !this.popover.hidden) {\n this.popover.hidden = true;\n this.popover.classList.remove(this.options.visibleClass);\n this.options.onAfterHide.call(this);\n }\n }\n }\n destroy() {\n this.popover.removeEventListener(\"transitionend\", this.handleTransitionEnd);\n if (this.popper) {\n this.popper.destroy();\n }\n }\n show() {\n this.isVisible = true;\n this.popover.hidden = false;\n this.popover.clientWidth;\n requestAnimationFrame(() => this.popover.classList.add(this.options.visibleClass));\n if (this.popper) {\n this.popper.destroy();\n }\n this.popper = createPopper(this.anchor, this.popover, {\n placement: this.options.placement,\n strategy: this.options.strategy,\n modifiers: [\n {\n name: \"flip\",\n options: {\n boundary: \"viewport\"\n }\n },\n {\n name: \"offset\",\n options: {\n offset: [this.options.skidding, this.options.distance]\n }\n }\n ]\n });\n this.popover.addEventListener(\"transitionend\", () => this.options.onAfterShow.call(this), {once: true});\n requestAnimationFrame(() => this.popper.update());\n }\n hide() {\n this.isVisible = false;\n this.popover.classList.remove(this.options.visibleClass);\n }\n reposition() {\n this.popper.update();\n }\n setOptions(options) {\n this.options = Object.assign(this.options, options);\n this.isVisible ? this.popover.classList.add(this.options.visibleClass) : this.popover.classList.remove(this.options.visibleClass);\n if (this.popper) {\n this.popper.setOptions({\n placement: this.options.placement,\n strategy: this.options.strategy\n });\n requestAnimationFrame(() => this.popper.update());\n }\n }\n};\nvar popover_default = Popover;\n\nexport {\n popover_default\n};\n","import {\n e\n} from \"./chunk.T6M3ZU4B.js\";\nimport {\n __assign\n} from \"./chunk.SXOXLYUK.js\";\n\n// node_modules/@lit/reactive-element/decorators/state.js\nfunction r(r2) {\n return e(__assign(__assign({}, r2), {state: true, attribute: false}));\n}\n\nexport {\n r\n};\n","import {\n y\n} from \"./chunk.SXOXLYUK.js\";\n\n// node_modules/lit-html/directives/if-defined.js\n/**\n * @license\n * Copyright (c) 2018 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nvar o = (o2) => o2 != null ? o2 : y;\n\nexport {\n o\n};\n","// src/internal/decorators.ts\nfunction watch(propName) {\n return (protoOrDescriptor, name) => {\n const {updated} = protoOrDescriptor;\n protoOrDescriptor.updated = function(changedProps) {\n if (this.__hasBeenUpdated && changedProps.has(propName)) {\n const oldValue = changedProps.get(propName);\n const newValue = this[propName];\n if (oldValue !== newValue) {\n this[name].call(this, oldValue, newValue);\n }\n }\n updated.call(this, changedProps);\n this.__hasBeenUpdated = true;\n };\n };\n}\n\nexport {\n watch\n};\n","import {\n __defProp\n} from \"./chunk.W2OJMTVT.js\";\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __assign = Object.assign;\nvar __decorate = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i5 = decorators.length - 1, decorator; i5 >= 0; i5--)\n if (decorator = decorators[i5])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result)\n __defProp(target, key, result);\n return result;\n};\n\n// node_modules/@lit/reactive-element/decorators/base.js\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n// node_modules/@lit/reactive-element/decorators/custom-element.js\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nvar n = (n6) => (e7) => typeof e7 == \"function\" ? ((n7, e8) => (window.customElements.define(n7, e8), e8))(n6, e7) : ((n7, e8) => {\n const {kind: t5, elements: i5} = e8;\n return {kind: t5, elements: i5, finisher(e9) {\n window.customElements.define(n7, e9);\n }};\n})(n6, e7);\n\n// node_modules/@lit/reactive-element/decorators/property.js\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n// node_modules/@lit/reactive-element/decorators/query-async.js\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n// node_modules/@lit/reactive-element/decorators/query.js\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n// node_modules/@lit/reactive-element/decorators/state.js\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n// node_modules/@lit/reactive-element/decorators/event-options.js\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n// node_modules/@lit/reactive-element/decorators/query-all.js\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\n\n// node_modules/@lit/reactive-element/decorators/query-assigned-nodes.js\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nvar n2 = Element.prototype;\nvar o = n2.msMatchesSelector || n2.webkitMatchesSelector;\n\n// node_modules/lit-html/lit-html.js\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nvar t2;\nvar s = `lit$${(Math.random() + \"\").slice(9)}$`;\nvar i = \"?\" + s;\nvar e3 = `<${i}>`;\nvar h = document;\nvar o2 = (t5 = \"\") => h.createComment(t5);\nvar n3 = (t5) => t5 === null || typeof t5 != \"object\" && typeof t5 != \"function\";\nvar r = Array.isArray;\nvar l = (t5) => r(t5) || typeof (t5 == null ? void 0 : t5[Symbol.iterator]) == \"function\";\nvar c = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar a = /-->/g;\nvar u = />/g;\nvar _ = />|[ \t\\n\f\\r](?:([^\u0000-\u001f-Ÿ \"'>=/]+)([ \t\\n\f\\r]*=[ \t\\n\f\\r]*(?:[^ \t\\n\f\\r\"'`<>=]|(\"|')|))|$)/g;\nvar d = /'/g;\nvar f = /\"/g;\nvar v = /^(?:script|style|textarea)$/i;\nvar m = (t5) => (s5, ...i5) => ({_$litType$: t5, strings: s5, values: i5});\nvar p = m(1);\nvar $ = m(2);\nvar g = Symbol.for(\"lit-noChange\");\nvar y = Symbol.for(\"lit-nothing\");\nvar x = new Map();\nvar T = h.createTreeWalker(h, 133, null, false);\nvar w = (t5, i5) => {\n const h4 = t5.length - 1, o7 = [];\n let n6, r5 = i5 === 2 ? \"\" : \"\", l3 = c;\n for (let i6 = 0; i6 < h4; i6++) {\n const h5 = t5[i6];\n let m3, p3, $3 = -1, g3 = 0;\n for (; g3 < h5.length && (l3.lastIndex = g3, p3 = l3.exec(h5), p3 !== null); )\n g3 = l3.lastIndex, l3 === c ? p3[1] === \"!--\" ? l3 = a : p3[1] !== void 0 ? l3 = u : p3[2] !== void 0 ? (v.test(p3[2]) && (n6 = RegExp(\"\" ? (l3 = n6 != null ? n6 : c, $3 = -1) : p3[1] === void 0 ? $3 = -2 : ($3 = l3.lastIndex - p3[2].length, m3 = p3[1], l3 = p3[3] === void 0 ? _ : p3[3] === '\"' ? f : d) : l3 === f || l3 === d ? l3 = _ : l3 === a || l3 === u ? l3 = c : (l3 = _, n6 = void 0);\n const y3 = l3 === _ && t5[i6 + 1].startsWith(\"/>\") ? \" \" : \"\";\n r5 += l3 === c ? h5 + e3 : $3 >= 0 ? (o7.push(m3), h5.slice(0, $3) + \"$lit$\" + h5.slice($3) + s + y3) : h5 + s + ($3 === -2 ? (o7.push(void 0), i6) : y3);\n }\n return [r5 + (t5[h4] || \"\") + (i5 === 2 ? \"\" : \"\"), o7];\n};\nvar A = class {\n constructor({strings: t5, _$litType$: e7}, h4) {\n let n6;\n this.o = [], this.C = h4;\n let r5 = 0, l3 = 0, c3 = 0;\n const a3 = t5.length - 1, [u3, _3] = w(t5, e7);\n if (this.B = this.A(u3), T.currentNode = this.B.content, e7 === 2) {\n const t6 = this.B.content, s5 = t6.firstChild;\n s5.remove(), t6.append(...s5.childNodes);\n }\n for (; (n6 = T.nextNode()) !== null && l3 < a3; ) {\n if (n6.nodeType === 1) {\n if (n6.hasAttributes()) {\n const t6 = [];\n for (const i5 of n6.getAttributeNames())\n if (i5.endsWith(\"$lit$\") || i5.startsWith(s)) {\n const e8 = _3[c3++];\n if (t6.push(i5), e8 !== void 0) {\n const t7 = n6.getAttribute(e8.toLowerCase() + \"$lit$\").split(s), i6 = /([.?@])?(.*)/.exec(e8);\n this.o.push({h: 1, l: r5, u: i6[2], v: t7, p: i6[1] === \".\" ? I : i6[1] === \"?\" ? M : i6[1] === \"@\" ? C : S}), l3 += t7.length - 1;\n } else\n this.o.push({h: 6, l: r5});\n }\n for (const s5 of t6)\n n6.removeAttribute(s5);\n }\n if (v.test(n6.tagName)) {\n const t6 = n6.textContent.split(s), i5 = t6.length - 1;\n if (i5 > 0) {\n n6.textContent = \"\";\n for (let s5 = 0; s5 < i5; s5++)\n n6.append(t6[s5] || o2()), this.o.push({h: 2, l: ++r5}), l3++;\n n6.append(t6[i5] || o2());\n }\n }\n } else if (n6.nodeType === 8)\n if (n6.data === i)\n l3++, this.o.push({h: 2, l: r5});\n else {\n let t6 = -1;\n for (; (t6 = n6.data.indexOf(s, t6 + 1)) !== -1; )\n this.o.push({h: 7, l: r5}), l3++, t6 += s.length - 1;\n }\n r5++;\n }\n }\n A(t5) {\n const s5 = h.createElement(\"template\");\n return s5.innerHTML = t5, s5;\n }\n};\nfunction P(t5, s5, i5 = t5, e7) {\n var _a6, _b5, _c;\n var h4;\n if (s5 === g)\n return s5;\n let o7 = e7 !== void 0 ? (_a6 = i5.\\u03A3_) == null ? void 0 : _a6[e7] : i5.\\u03A3m;\n const r5 = n3(s5) ? void 0 : s5._$litDirective$;\n return (o7 == null ? void 0 : o7.constructor) !== r5 && ((_b5 = o7 == null ? void 0 : o7.S) == null ? void 0 : _b5.call(o7, false), o7 = r5 === void 0 ? void 0 : new r5(__assign(__assign({}, t5), {$: t5, Q: i5, g: e7})), e7 !== void 0 ? ((_c = (h4 = i5).\\u03A3_) != null ? _c : h4.\\u03A3_ = [])[e7] = o7 : i5.\\u03A3m = o7), o7 !== void 0 && (s5 = P(t5, o7.W(t5, s5.values), o7, e7)), s5;\n}\nvar V = class {\n constructor(t5, s5) {\n this.o = [], this.R = void 0, this.G = t5, this.Q = s5;\n }\n k(t5) {\n const {B: {content: s5}, o: i5} = this.G, e7 = h.importNode(s5, true);\n T.currentNode = e7;\n let o7 = T.nextNode(), n6 = 0, r5 = 0, l3 = i5[0];\n for (; l3 !== void 0 && o7 !== null; ) {\n if (n6 === l3.l) {\n let s6;\n l3.h === 2 ? s6 = new E(o7, o7.nextSibling, this, t5) : l3.h === 1 ? s6 = new l3.p(o7, l3.u, l3.v, this, t5) : l3.h === 6 && (s6 = new N(o7, this, t5)), this.o.push(s6), l3 = i5[++r5];\n }\n l3 !== void 0 && n6 !== l3.l && (o7 = T.nextNode(), n6++);\n }\n return e7;\n }\n j(t5) {\n let s5 = 0;\n for (const i5 of this.o)\n i5 !== void 0 && (i5.strings !== void 0 ? (i5.M(t5, i5, s5), s5 += i5.strings.length - 2) : i5.M(t5[s5])), s5++;\n }\n};\nvar E = class {\n constructor(t5, s5, i5, e7) {\n this.type = 2, this.R = void 0, this.D = t5, this.E = s5, this.Q = i5, this.options = e7;\n }\n setConnected(t5) {\n var _a6;\n (_a6 = this.T) == null ? void 0 : _a6.call(this, t5);\n }\n get parentNode() {\n return this.D.parentNode;\n }\n M(t5, s5 = this) {\n t5 = P(this, t5, s5), n3(t5) ? t5 === y || t5 == null || t5 === \"\" ? (this.L !== y && this.V(), this.L = y) : t5 !== this.L && t5 !== g && this.Y(t5) : t5._$litType$ !== void 0 ? this.q(t5) : t5.nodeType !== void 0 ? this.X(t5) : l(t5) ? this.tt(t5) : this.Y(t5);\n }\n it(t5, s5 = this.E) {\n return this.D.parentNode.insertBefore(t5, s5);\n }\n X(t5) {\n this.L !== t5 && (this.V(), this.L = this.it(t5));\n }\n Y(t5) {\n const s5 = this.D.nextSibling;\n s5 !== null && s5.nodeType === 3 && (this.E === null ? s5.nextSibling === null : s5 === this.E.previousSibling) ? s5.data = t5 : this.X(h.createTextNode(t5)), this.L = t5;\n }\n q(t5) {\n var _a6;\n const {values: s5, strings: i5} = t5, e7 = this.F(i5, t5);\n if (((_a6 = this.L) == null ? void 0 : _a6.G) === e7)\n this.L.j(s5);\n else {\n const t6 = new V(e7, this), i6 = t6.k(this.options);\n t6.j(s5), this.X(i6), this.L = t6;\n }\n }\n F(t5, s5) {\n let i5 = x.get(t5);\n return i5 === void 0 && x.set(t5, i5 = new A(s5)), i5;\n }\n tt(t5) {\n r(this.L) || (this.L = [], this.V());\n const s5 = this.L;\n let i5, e7 = 0;\n for (const h4 of t5)\n e7 === s5.length ? s5.push(i5 = new E(this.it(o2()), this.it(o2()), this, this.options)) : i5 = s5[e7], i5.M(h4), e7++;\n e7 < s5.length && (this.V(i5 && i5.E.nextSibling, e7), s5.length = e7);\n }\n V(t5 = this.D.nextSibling, s5) {\n var _a6;\n for ((_a6 = this.T) == null ? void 0 : _a6.call(this, false, true, s5); t5 && t5 !== this.E; ) {\n const s6 = t5.nextSibling;\n t5.remove(), t5 = s6;\n }\n }\n};\nvar S = class {\n constructor(t5, s5, i5, e7, h4) {\n this.type = 1, this.L = y, this.R = void 0, this.st = void 0, this.element = t5, this.name = s5, this.Q = e7, this.options = h4, i5.length > 2 || i5[0] !== \"\" || i5[1] !== \"\" ? (this.L = Array(i5.length - 1).fill(y), this.strings = i5) : this.L = y;\n }\n get tagName() {\n return this.element.tagName;\n }\n M(t5, s5 = this, i5, e7) {\n const h4 = this.strings;\n let o7 = false;\n if (h4 === void 0)\n t5 = P(this, t5, s5, 0), o7 = !n3(t5) || t5 !== this.L && t5 !== g, o7 && (this.L = t5);\n else {\n const e8 = t5;\n let r5, l3;\n for (t5 = h4[0], r5 = 0; r5 < h4.length - 1; r5++)\n l3 = P(this, e8[i5 + r5], s5, r5), l3 === g && (l3 = this.L[r5]), o7 || (o7 = !n3(l3) || l3 !== this.L[r5]), l3 === y ? t5 = y : t5 !== y && (t5 += (l3 != null ? l3 : \"\") + h4[r5 + 1]), this.L[r5] = l3;\n }\n o7 && !e7 && this.nt(t5);\n }\n nt(t5) {\n t5 === y ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t5 != null ? t5 : \"\");\n }\n};\nvar I = class extends S {\n constructor() {\n super(...arguments), this.type = 3;\n }\n nt(t5) {\n this.element[this.name] = t5 === y ? void 0 : t5;\n }\n};\nvar M = class extends S {\n constructor() {\n super(...arguments), this.type = 4;\n }\n nt(t5) {\n t5 && t5 !== y ? this.element.setAttribute(this.name, \"\") : this.element.removeAttribute(this.name);\n }\n};\nvar C = class extends S {\n constructor() {\n super(...arguments), this.type = 5;\n }\n M(t5, s5 = this) {\n var _a6;\n if ((t5 = (_a6 = P(this, t5, s5, 0)) != null ? _a6 : y) === g)\n return;\n const i5 = this.L, e7 = t5 === y && i5 !== y || t5.capture !== i5.capture || t5.once !== i5.once || t5.passive !== i5.passive, h4 = t5 !== y && (i5 === y || e7);\n e7 && this.element.removeEventListener(this.name, this, i5), h4 && this.element.addEventListener(this.name, this, t5), this.L = t5;\n }\n handleEvent(t5) {\n var _a6, _b5;\n typeof this.L == \"function\" ? this.L.call((_b5 = (_a6 = this.options) == null ? void 0 : _a6.host) != null ? _b5 : this.element, t5) : this.L.handleEvent(t5);\n }\n};\nvar N = class {\n constructor(t5, s5, i5) {\n this.element = t5, this.type = 6, this.R = void 0, this.st = void 0, this.Q = s5, this.options = i5;\n }\n M(t5) {\n P(this, t5);\n }\n};\nvar _a, _b;\n(_a = globalThis.litHtmlPlatformSupport) == null ? void 0 : _a.call(globalThis, A, E), ((_b = (t2 = globalThis).litHtmlVersions) != null ? _b : t2.litHtmlVersions = []).push(\"2.0.0-pre.6\");\n\n// node_modules/@lit/reactive-element/css-tag.js\n/**\n@license\nCopyright (c) 2019 The Polymer Project Authors. All rights reserved.\nThis code may only be used under the BSD style license found at\nhttp://polymer.github.io/LICENSE.txt The complete set of authors may be found at\nhttp://polymer.github.io/AUTHORS.txt The complete set of contributors may be\nfound at http://polymer.github.io/CONTRIBUTORS.txt Code distributed by Google as\npart of the polymer project is also subject to an additional IP rights grant\nfound at http://polymer.github.io/PATENTS.txt\n*/\nvar t3 = window.ShadowRoot && (window.ShadyCSS === void 0 || window.ShadyCSS.nativeShadow) && \"adoptedStyleSheets\" in Document.prototype && \"replace\" in CSSStyleSheet.prototype;\nvar e4 = Symbol();\nvar n4 = class {\n constructor(t5, n6) {\n if (n6 !== e4)\n throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");\n this.cssText = t5;\n }\n get styleSheet() {\n return t3 && this.t === void 0 && (this.t = new CSSStyleSheet(), this.t.replaceSync(this.cssText)), this.t;\n }\n toString() {\n return this.cssText;\n }\n};\nvar s2 = (t5) => new n4(t5 + \"\", e4);\nvar o3 = new Map();\nvar i2 = (e7, n6) => {\n t3 ? e7.adoptedStyleSheets = n6.map((t5) => t5 instanceof CSSStyleSheet ? t5 : t5.styleSheet) : n6.forEach((t5) => {\n const n7 = document.createElement(\"style\");\n n7.textContent = t5.cssText, e7.appendChild(n7);\n });\n};\nvar S2 = t3 ? (t5) => t5 : (t5) => t5 instanceof CSSStyleSheet ? ((t6) => {\n let e7 = \"\";\n for (const n6 of t6.cssRules)\n e7 += n6.cssText;\n return s2(e7);\n})(t5) : t5;\n\n// node_modules/@lit/reactive-element/reactive-element.js\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nvar i3;\nwindow.JSCompiler_renameProperty = (t5, s5) => t5;\nvar e5 = {toAttribute(t5, s5) {\n switch (s5) {\n case Boolean:\n t5 = t5 ? \"\" : null;\n break;\n case Object:\n case Array:\n t5 = t5 == null ? t5 : JSON.stringify(t5);\n }\n return t5;\n}, fromAttribute(t5, s5) {\n let i5 = t5;\n switch (s5) {\n case Boolean:\n i5 = t5 !== null;\n break;\n case Number:\n i5 = t5 === null ? null : Number(t5);\n break;\n case Object:\n case Array:\n try {\n i5 = JSON.parse(t5);\n } catch (t6) {\n i5 = null;\n }\n }\n return i5;\n}};\nvar h2 = (t5, s5) => s5 !== t5 && (s5 == s5 || t5 == t5);\nvar r3 = {attribute: true, type: String, converter: e5, reflect: false, hasChanged: h2};\nvar o4 = class extends HTMLElement {\n constructor() {\n super(), this.\\u03A0i = new Map(), this.\\u03A0o = void 0, this.\\u03A0h = void 0, this.isUpdatePending = false, this.hasUpdated = false, this.\\u03A0l = null, this.u();\n }\n static get observedAttributes() {\n this.finalize();\n const t5 = [];\n return this.elementProperties.forEach((s5, i5) => {\n const e7 = this.\\u03A0p(i5, s5);\n e7 !== void 0 && (this.\\u03A0m.set(e7, i5), t5.push(e7));\n }), t5;\n }\n static createProperty(t5, s5 = r3) {\n if (s5.state && (s5.attribute = false), this.finalize(), this.elementProperties.set(t5, s5), !s5.noAccessor && !this.prototype.hasOwnProperty(t5)) {\n const i5 = typeof t5 == \"symbol\" ? Symbol() : \"__\" + t5, e7 = this.getPropertyDescriptor(t5, i5, s5);\n e7 !== void 0 && Object.defineProperty(this.prototype, t5, e7);\n }\n }\n static getPropertyDescriptor(t5, s5, i5) {\n return {get() {\n return this[s5];\n }, set(e7) {\n const h4 = this[t5];\n this[s5] = e7, this.requestUpdate(t5, h4, i5);\n }, configurable: true, enumerable: true};\n }\n static getPropertyOptions(t5) {\n return this.elementProperties.get(t5) || r3;\n }\n static finalize() {\n if (this.hasOwnProperty(\"finalized\"))\n return false;\n this.finalized = true;\n const t5 = Object.getPrototypeOf(this);\n if (t5.finalize(), this.elementProperties = new Map(t5.elementProperties), this.\\u03A0m = new Map(), this.hasOwnProperty(JSCompiler_renameProperty(\"properties\", this))) {\n const t6 = this.properties, s5 = [...Object.getOwnPropertyNames(t6), ...Object.getOwnPropertySymbols(t6)];\n for (const i5 of s5)\n this.createProperty(i5, t6[i5]);\n }\n return this.elementStyles = this.finalizeStyles(this.styles), true;\n }\n static finalizeStyles(s5) {\n const i5 = [];\n if (Array.isArray(s5)) {\n const e7 = new Set(s5.flat(1 / 0).reverse());\n for (const s6 of e7)\n i5.unshift(S2(s6));\n } else\n s5 !== void 0 && i5.push(S2(s5));\n return i5;\n }\n static \\u03A0p(t5, s5) {\n const i5 = s5.attribute;\n return i5 === false ? void 0 : typeof i5 == \"string\" ? i5 : typeof t5 == \"string\" ? t5.toLowerCase() : void 0;\n }\n u() {\n this.\\u03A0v = new Promise((t5) => this.enableUpdating = t5), this.P = new Map(), this.\\u03A0g(), this.requestUpdate();\n }\n addController(t5) {\n var _a6, _b5;\n ((_a6 = this.\\u03A0_) != null ? _a6 : this.\\u03A0_ = []).push(t5), this.isConnected && ((_b5 = t5.hostConnected) == null ? void 0 : _b5.call(t5));\n }\n removeController(t5) {\n var _a6;\n (_a6 = this.\\u03A0_) == null ? void 0 : _a6.splice(this.\\u03A0_.indexOf(t5) >>> 0, 1);\n }\n \\u03A0g() {\n this.constructor.elementProperties.forEach((t5, s5) => {\n this.hasOwnProperty(s5) && (this.\\u03A0i.set(s5, this[s5]), delete this[s5]);\n });\n }\n createRenderRoot() {\n var _a6;\n const t5 = (_a6 = this.shadowRoot) != null ? _a6 : this.attachShadow(this.constructor.shadowRootOptions);\n return i2(t5, this.constructor.elementStyles), t5;\n }\n connectedCallback() {\n var _a6;\n this.hasUpdated || (this.renderRoot = this.createRenderRoot()), this.enableUpdating(true), (_a6 = this.\\u03A0_) == null ? void 0 : _a6.forEach((t5) => {\n var _a7;\n return (_a7 = t5.hostConnected) == null ? void 0 : _a7.call(t5);\n }), this.\\u03A0h && (this.\\u03A0h(), this.\\u03A0o = this.\\u03A0h = void 0);\n }\n enableUpdating(t5) {\n }\n disconnectedCallback() {\n var _a6;\n (_a6 = this.\\u03A0_) == null ? void 0 : _a6.forEach((t5) => {\n var _a7;\n return (_a7 = t5.hostDisconnected) == null ? void 0 : _a7.call(t5);\n }), this.\\u03A0o = new Promise((t5) => this.\\u03A0h = t5);\n }\n attributeChangedCallback(t5, s5, i5) {\n this.O(t5, i5);\n }\n \\u03A0j(t5, s5, i5 = r3) {\n var _a6, _b5;\n const h4 = this.constructor.\\u03A0p(t5, i5);\n if (h4 !== void 0 && i5.reflect === true) {\n const r5 = ((_b5 = (_a6 = i5.converter) == null ? void 0 : _a6.toAttribute) != null ? _b5 : e5.toAttribute)(s5, i5.type);\n this.\\u03A0l = t5, r5 == null ? this.removeAttribute(h4) : this.setAttribute(h4, r5), this.\\u03A0l = null;\n }\n }\n O(t5, s5) {\n var _a6, _b5;\n const i5 = this.constructor, h4 = i5.\\u03A0m.get(t5);\n if (h4 !== void 0 && this.\\u03A0l !== h4) {\n const t6 = i5.getPropertyOptions(h4), r5 = t6.converter, o7 = (_b5 = (_a6 = r5 == null ? void 0 : r5.fromAttribute) != null ? _a6 : typeof r5 == \"function\" ? r5 : null) != null ? _b5 : e5.fromAttribute;\n this.\\u03A0l = h4, this[h4] = o7(s5, t6.type), this.\\u03A0l = null;\n }\n }\n requestUpdate(t5, s5, i5) {\n let e7 = true;\n t5 !== void 0 && (((i5 = i5 || this.constructor.getPropertyOptions(t5)).hasChanged || h2)(this[t5], s5) ? (this.P.has(t5) || this.P.set(t5, s5), i5.reflect === true && this.\\u03A0l !== t5 && (this.\\u03A0k === void 0 && (this.\\u03A0k = new Map()), this.\\u03A0k.set(t5, i5))) : e7 = false), !this.isUpdatePending && e7 && (this.\\u03A0v = this.\\u03A0q());\n }\n async \\u03A0q() {\n this.isUpdatePending = true;\n try {\n for (await this.\\u03A0v; this.\\u03A0o; )\n await this.\\u03A0o;\n } catch (t6) {\n Promise.reject(t6);\n }\n const t5 = this.performUpdate();\n return t5 != null && await t5, !this.isUpdatePending;\n }\n performUpdate() {\n var _a6;\n if (!this.isUpdatePending)\n return;\n this.hasUpdated, this.\\u03A0i && (this.\\u03A0i.forEach((t6, s6) => this[s6] = t6), this.\\u03A0i = void 0);\n let t5 = false;\n const s5 = this.P;\n try {\n t5 = this.shouldUpdate(s5), t5 ? (this.willUpdate(s5), (_a6 = this.\\u03A0_) == null ? void 0 : _a6.forEach((t6) => {\n var _a7;\n return (_a7 = t6.hostUpdate) == null ? void 0 : _a7.call(t6);\n }), this.update(s5)) : this.\\u03A0$();\n } catch (s6) {\n throw t5 = false, this.\\u03A0$(), s6;\n }\n t5 && this.H(s5);\n }\n willUpdate(t5) {\n }\n H(t5) {\n var _a6;\n this.hasUpdated || (this.hasUpdated = true, this.firstUpdated(t5)), (_a6 = this.\\u03A0_) == null ? void 0 : _a6.forEach((t6) => {\n var _a7;\n return (_a7 = t6.hostUpdated) == null ? void 0 : _a7.call(t6);\n }), this.updated(t5);\n }\n \\u03A0$() {\n this.P = new Map(), this.isUpdatePending = false;\n }\n get updateComplete() {\n return this.getUpdateComplete();\n }\n getUpdateComplete() {\n return this.\\u03A0v;\n }\n shouldUpdate(t5) {\n return true;\n }\n update(t5) {\n this.\\u03A0k !== void 0 && (this.\\u03A0k.forEach((t6, s5) => this.\\u03A0j(s5, this[s5], t6)), this.\\u03A0k = void 0), this.\\u03A0$();\n }\n updated(t5) {\n }\n firstUpdated(t5) {\n }\n};\nvar _a2, _b2;\no4.finalized = true, o4.shadowRootOptions = {mode: \"open\"}, (_a2 = globalThis.reactiveElementPlatformSupport) == null ? void 0 : _a2.call(globalThis, {ReactiveElement: o4}), ((_b2 = (i3 = globalThis).reactiveElementVersions) != null ? _b2 : i3.reactiveElementVersions = []).push(\"1.0.0-pre.2\");\n\n// node_modules/lit-element/node_modules/lit-html/lit-html.js\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nvar t4;\nvar s3 = `lit$${(Math.random() + \"\").slice(9)}$`;\nvar i4 = \"?\" + s3;\nvar e6 = `<${i4}>`;\nvar h3 = document;\nvar o5 = (t5 = \"\") => h3.createComment(t5);\nvar n5 = (t5) => t5 === null || typeof t5 != \"object\" && typeof t5 != \"function\";\nvar r4 = Array.isArray;\nvar l2 = (t5) => r4(t5) || typeof (t5 == null ? void 0 : t5[Symbol.iterator]) == \"function\";\nvar c2 = /<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g;\nvar a2 = /-->/g;\nvar u2 = />/g;\nvar _2 = />|[ \t\\n\f\\r](?:([^\u0000-\u001f-Ÿ \"'>=/]+)([ \t\\n\f\\r]*=[ \t\\n\f\\r]*(?:[^ \t\\n\f\\r\"'`<>=]|(\"|')|))|$)/g;\nvar d2 = /'/g;\nvar f2 = /\"/g;\nvar v2 = /^(?:script|style|textarea)$/i;\nvar m2 = (t5) => (s5, ...i5) => ({_$litType$: t5, strings: s5, values: i5});\nvar p2 = m2(1);\nvar $2 = m2(2);\nvar g2 = Symbol.for(\"lit-noChange\");\nvar y2 = Symbol.for(\"lit-nothing\");\nvar x2 = new Map();\nvar b = (t5, s5, i5) => {\n var _a6, _b5;\n const e7 = (_a6 = i5 == null ? void 0 : i5.renderBefore) != null ? _a6 : s5;\n let h4 = e7.t;\n if (h4 === void 0) {\n const t6 = (_b5 = i5 == null ? void 0 : i5.renderBefore) != null ? _b5 : null;\n e7.t = h4 = new E2(s5.insertBefore(o5(), t6), t6, void 0, i5);\n }\n return h4.M(t5), h4;\n};\nvar T2 = h3.createTreeWalker(h3, 133, null, false);\nvar w2 = (t5, i5) => {\n const h4 = t5.length - 1, o7 = [];\n let n6, r5 = i5 === 2 ? \"\" : \"\", l3 = c2;\n for (let i6 = 0; i6 < h4; i6++) {\n const h5 = t5[i6];\n let m3, p3, $3 = -1, g3 = 0;\n for (; g3 < h5.length && (l3.lastIndex = g3, p3 = l3.exec(h5), p3 !== null); )\n g3 = l3.lastIndex, l3 === c2 ? p3[1] === \"!--\" ? l3 = a2 : p3[1] !== void 0 ? l3 = u2 : p3[2] !== void 0 ? (v2.test(p3[2]) && (n6 = RegExp(\"\" ? (l3 = n6 != null ? n6 : c2, $3 = -1) : p3[1] === void 0 ? $3 = -2 : ($3 = l3.lastIndex - p3[2].length, m3 = p3[1], l3 = p3[3] === void 0 ? _2 : p3[3] === '\"' ? f2 : d2) : l3 === f2 || l3 === d2 ? l3 = _2 : l3 === a2 || l3 === u2 ? l3 = c2 : (l3 = _2, n6 = void 0);\n const y3 = l3 === _2 && t5[i6 + 1].startsWith(\"/>\") ? \" \" : \"\";\n r5 += l3 === c2 ? h5 + e6 : $3 >= 0 ? (o7.push(m3), h5.slice(0, $3) + \"$lit$\" + h5.slice($3) + s3 + y3) : h5 + s3 + ($3 === -2 ? (o7.push(void 0), i6) : y3);\n }\n return [r5 + (t5[h4] || \"\") + (i5 === 2 ? \"\" : \"\"), o7];\n};\nvar A2 = class {\n constructor({strings: t5, _$litType$: e7}, h4) {\n let n6;\n this.o = [], this.C = h4;\n let r5 = 0, l3 = 0, c3 = 0;\n const a3 = t5.length - 1, [u3, _3] = w2(t5, e7);\n if (this.B = this.A(u3), T2.currentNode = this.B.content, e7 === 2) {\n const t6 = this.B.content, s5 = t6.firstChild;\n s5.remove(), t6.append(...s5.childNodes);\n }\n for (; (n6 = T2.nextNode()) !== null && l3 < a3; ) {\n if (n6.nodeType === 1) {\n if (n6.hasAttributes()) {\n const t6 = [];\n for (const i5 of n6.getAttributeNames())\n if (i5.endsWith(\"$lit$\") || i5.startsWith(s3)) {\n const e8 = _3[c3++];\n if (t6.push(i5), e8 !== void 0) {\n const t7 = n6.getAttribute(e8.toLowerCase() + \"$lit$\").split(s3), i6 = /([.?@])?(.*)/.exec(e8);\n this.o.push({h: 1, l: r5, u: i6[2], v: t7, p: i6[1] === \".\" ? I2 : i6[1] === \"?\" ? M2 : i6[1] === \"@\" ? C2 : S3}), l3 += t7.length - 1;\n } else\n this.o.push({h: 6, l: r5});\n }\n for (const s5 of t6)\n n6.removeAttribute(s5);\n }\n if (v2.test(n6.tagName)) {\n const t6 = n6.textContent.split(s3), i5 = t6.length - 1;\n if (i5 > 0) {\n n6.textContent = \"\";\n for (let s5 = 0; s5 < i5; s5++)\n n6.append(t6[s5] || o5()), this.o.push({h: 2, l: ++r5}), l3++;\n n6.append(t6[i5] || o5());\n }\n }\n } else if (n6.nodeType === 8)\n if (n6.data === i4)\n l3++, this.o.push({h: 2, l: r5});\n else {\n let t6 = -1;\n for (; (t6 = n6.data.indexOf(s3, t6 + 1)) !== -1; )\n this.o.push({h: 7, l: r5}), l3++, t6 += s3.length - 1;\n }\n r5++;\n }\n }\n A(t5) {\n const s5 = h3.createElement(\"template\");\n return s5.innerHTML = t5, s5;\n }\n};\nfunction P2(t5, s5, i5 = t5, e7) {\n var _a6, _b5, _c;\n var h4;\n if (s5 === g2)\n return s5;\n let o7 = e7 !== void 0 ? (_a6 = i5.\\u03A3_) == null ? void 0 : _a6[e7] : i5.\\u03A3m;\n const r5 = n5(s5) ? void 0 : s5._$litDirective$;\n return (o7 == null ? void 0 : o7.constructor) !== r5 && ((_b5 = o7 == null ? void 0 : o7.S) == null ? void 0 : _b5.call(o7, false), o7 = r5 === void 0 ? void 0 : new r5(__assign(__assign({}, t5), {$: t5, Q: i5, g: e7})), e7 !== void 0 ? ((_c = (h4 = i5).\\u03A3_) != null ? _c : h4.\\u03A3_ = [])[e7] = o7 : i5.\\u03A3m = o7), o7 !== void 0 && (s5 = P2(t5, o7.W(t5, s5.values), o7, e7)), s5;\n}\nvar V2 = class {\n constructor(t5, s5) {\n this.o = [], this.R = void 0, this.G = t5, this.Q = s5;\n }\n k(t5) {\n const {B: {content: s5}, o: i5} = this.G, e7 = h3.importNode(s5, true);\n T2.currentNode = e7;\n let o7 = T2.nextNode(), n6 = 0, r5 = 0, l3 = i5[0];\n for (; l3 !== void 0 && o7 !== null; ) {\n if (n6 === l3.l) {\n let s6;\n l3.h === 2 ? s6 = new E2(o7, o7.nextSibling, this, t5) : l3.h === 1 ? s6 = new l3.p(o7, l3.u, l3.v, this, t5) : l3.h === 6 && (s6 = new N2(o7, this, t5)), this.o.push(s6), l3 = i5[++r5];\n }\n l3 !== void 0 && n6 !== l3.l && (o7 = T2.nextNode(), n6++);\n }\n return e7;\n }\n j(t5) {\n let s5 = 0;\n for (const i5 of this.o)\n i5 !== void 0 && (i5.strings !== void 0 ? (i5.M(t5, i5, s5), s5 += i5.strings.length - 2) : i5.M(t5[s5])), s5++;\n }\n};\nvar E2 = class {\n constructor(t5, s5, i5, e7) {\n this.type = 2, this.R = void 0, this.D = t5, this.E = s5, this.Q = i5, this.options = e7;\n }\n setConnected(t5) {\n var _a6;\n (_a6 = this.T) == null ? void 0 : _a6.call(this, t5);\n }\n get parentNode() {\n return this.D.parentNode;\n }\n M(t5, s5 = this) {\n t5 = P2(this, t5, s5), n5(t5) ? t5 === y2 || t5 == null || t5 === \"\" ? (this.L !== y2 && this.V(), this.L = y2) : t5 !== this.L && t5 !== g2 && this.Y(t5) : t5._$litType$ !== void 0 ? this.q(t5) : t5.nodeType !== void 0 ? this.X(t5) : l2(t5) ? this.tt(t5) : this.Y(t5);\n }\n it(t5, s5 = this.E) {\n return this.D.parentNode.insertBefore(t5, s5);\n }\n X(t5) {\n this.L !== t5 && (this.V(), this.L = this.it(t5));\n }\n Y(t5) {\n const s5 = this.D.nextSibling;\n s5 !== null && s5.nodeType === 3 && (this.E === null ? s5.nextSibling === null : s5 === this.E.previousSibling) ? s5.data = t5 : this.X(h3.createTextNode(t5)), this.L = t5;\n }\n q(t5) {\n var _a6;\n const {values: s5, strings: i5} = t5, e7 = this.F(i5, t5);\n if (((_a6 = this.L) == null ? void 0 : _a6.G) === e7)\n this.L.j(s5);\n else {\n const t6 = new V2(e7, this), i6 = t6.k(this.options);\n t6.j(s5), this.X(i6), this.L = t6;\n }\n }\n F(t5, s5) {\n let i5 = x2.get(t5);\n return i5 === void 0 && x2.set(t5, i5 = new A2(s5)), i5;\n }\n tt(t5) {\n r4(this.L) || (this.L = [], this.V());\n const s5 = this.L;\n let i5, e7 = 0;\n for (const h4 of t5)\n e7 === s5.length ? s5.push(i5 = new E2(this.it(o5()), this.it(o5()), this, this.options)) : i5 = s5[e7], i5.M(h4), e7++;\n e7 < s5.length && (this.V(i5 && i5.E.nextSibling, e7), s5.length = e7);\n }\n V(t5 = this.D.nextSibling, s5) {\n var _a6;\n for ((_a6 = this.T) == null ? void 0 : _a6.call(this, false, true, s5); t5 && t5 !== this.E; ) {\n const s6 = t5.nextSibling;\n t5.remove(), t5 = s6;\n }\n }\n};\nvar S3 = class {\n constructor(t5, s5, i5, e7, h4) {\n this.type = 1, this.L = y2, this.R = void 0, this.st = void 0, this.element = t5, this.name = s5, this.Q = e7, this.options = h4, i5.length > 2 || i5[0] !== \"\" || i5[1] !== \"\" ? (this.L = Array(i5.length - 1).fill(y2), this.strings = i5) : this.L = y2;\n }\n get tagName() {\n return this.element.tagName;\n }\n M(t5, s5 = this, i5, e7) {\n const h4 = this.strings;\n let o7 = false;\n if (h4 === void 0)\n t5 = P2(this, t5, s5, 0), o7 = !n5(t5) || t5 !== this.L && t5 !== g2, o7 && (this.L = t5);\n else {\n const e8 = t5;\n let r5, l3;\n for (t5 = h4[0], r5 = 0; r5 < h4.length - 1; r5++)\n l3 = P2(this, e8[i5 + r5], s5, r5), l3 === g2 && (l3 = this.L[r5]), o7 || (o7 = !n5(l3) || l3 !== this.L[r5]), l3 === y2 ? t5 = y2 : t5 !== y2 && (t5 += (l3 != null ? l3 : \"\") + h4[r5 + 1]), this.L[r5] = l3;\n }\n o7 && !e7 && this.nt(t5);\n }\n nt(t5) {\n t5 === y2 ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t5 != null ? t5 : \"\");\n }\n};\nvar I2 = class extends S3 {\n constructor() {\n super(...arguments), this.type = 3;\n }\n nt(t5) {\n this.element[this.name] = t5 === y2 ? void 0 : t5;\n }\n};\nvar M2 = class extends S3 {\n constructor() {\n super(...arguments), this.type = 4;\n }\n nt(t5) {\n t5 && t5 !== y2 ? this.element.setAttribute(this.name, \"\") : this.element.removeAttribute(this.name);\n }\n};\nvar C2 = class extends S3 {\n constructor() {\n super(...arguments), this.type = 5;\n }\n M(t5, s5 = this) {\n var _a6;\n if ((t5 = (_a6 = P2(this, t5, s5, 0)) != null ? _a6 : y2) === g2)\n return;\n const i5 = this.L, e7 = t5 === y2 && i5 !== y2 || t5.capture !== i5.capture || t5.once !== i5.once || t5.passive !== i5.passive, h4 = t5 !== y2 && (i5 === y2 || e7);\n e7 && this.element.removeEventListener(this.name, this, i5), h4 && this.element.addEventListener(this.name, this, t5), this.L = t5;\n }\n handleEvent(t5) {\n var _a6, _b5;\n typeof this.L == \"function\" ? this.L.call((_b5 = (_a6 = this.options) == null ? void 0 : _a6.host) != null ? _b5 : this.element, t5) : this.L.handleEvent(t5);\n }\n};\nvar N2 = class {\n constructor(t5, s5, i5) {\n this.element = t5, this.type = 6, this.R = void 0, this.st = void 0, this.Q = s5, this.options = i5;\n }\n M(t5) {\n P2(this, t5);\n }\n};\nvar _a3, _b3;\n(_a3 = globalThis.litHtmlPlatformSupport) == null ? void 0 : _a3.call(globalThis, A2, E2), ((_b3 = (t4 = globalThis).litHtmlVersions) != null ? _b3 : t4.litHtmlVersions = []).push(\"2.0.0-pre.6\");\n\n// node_modules/lit-element/lit-element.js\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nvar s4;\nvar _a4;\n((_a4 = (s4 = globalThis).litElementVersions) != null ? _a4 : s4.litElementVersions = []).push(\"3.0.0-pre.3\");\nvar o6 = class extends o4 {\n constructor() {\n super(...arguments), this.I = {host: this}, this.\\u03A6o = void 0;\n }\n createRenderRoot() {\n var _a6;\n var t5;\n const e7 = super.createRenderRoot();\n return (_a6 = (t5 = this.I).renderBefore) != null ? _a6 : t5.renderBefore = e7.firstChild, e7;\n }\n update(t5) {\n const r5 = this.render();\n super.update(t5), this.\\u03A6o = b(r5, this.renderRoot, this.I);\n }\n connectedCallback() {\n var _a6;\n super.connectedCallback(), (_a6 = this.\\u03A6o) == null ? void 0 : _a6.setConnected(true);\n }\n disconnectedCallback() {\n var _a6;\n super.disconnectedCallback(), (_a6 = this.\\u03A6o) == null ? void 0 : _a6.setConnected(false);\n }\n render() {\n return g2;\n }\n};\nvar _a5, _b4;\no6.finalized = true, (_a5 = globalThis.litElementHydrateSupport) == null ? void 0 : _a5.call(globalThis, {LitElement: o6}), (_b4 = globalThis.litElementPlatformSupport) == null ? void 0 : _b4.call(globalThis, {LitElement: o6});\n\nexport {\n n,\n __getOwnPropDesc,\n o6 as o,\n s2 as s,\n __assign,\n p2 as p,\n g,\n y,\n __decorate\n};\n","import {\n __assign\n} from \"./chunk.SXOXLYUK.js\";\n\n// node_modules/@lit/reactive-element/decorators/property.js\nvar i = (i2, e2) => e2.kind === \"method\" && e2.descriptor && !(\"value\" in e2.descriptor) ? __assign(__assign({}, e2), {finisher(n) {\n n.createProperty(e2.key, i2);\n}}) : {kind: \"field\", key: Symbol(), placement: \"own\", descriptor: {}, initializer() {\n typeof e2.initializer == \"function\" && (this[e2.key] = e2.initializer.call(this));\n}, finisher(n) {\n n.createProperty(e2.key, i2);\n}};\nfunction e(e2) {\n return (n, t) => t !== void 0 ? ((i2, e3, n2) => {\n e3.constructor.createProperty(n2, i2);\n })(e2, n, t) : i(e2, n);\n}\n\nexport {\n e\n};\n","// src/internal/scroll.ts\nvar locks = new Set();\n\nexport {\n locks\n};\n","// src/internal/slot.ts\nfunction getTextContent(slot) {\n const nodes = slot ? slot.assignedNodes({flatten: true}) : [];\n let text = \"\";\n [...nodes].map((node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n text += node.textContent;\n }\n });\n return text;\n}\n\nexport {\n getTextContent\n};\n","// node_modules/lit-html/directive.js\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nvar t = {ATTRIBUTE: 1, CHILD: 2, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4, EVENT: 5, ELEMENT: 6};\nvar s = (t2) => (...s2) => ({_$litDirective$: t2, values: s2});\nvar e = class {\n constructor(t2) {\n this.Q = t2.Q, this.\\u03A3bt = t2.$, this.\\u03A3gt = t2.g;\n }\n W(t2, s2) {\n return this.update(t2, s2);\n }\n update(t2, s2) {\n return this.render(...s2);\n }\n};\n\nexport {\n t,\n s,\n e\n};\n","var __defProp = Object.defineProperty;\n\nexport {\n __defProp\n};\n","// src/utilities/base-path.ts\nvar basePath = \"\";\nfunction setBasePath(path) {\n basePath = path;\n}\nfunction getBasePath() {\n return basePath.replace(/\\/$/, \"\");\n}\nif (!basePath) {\n const allScripts = [...document.getElementsByTagName(\"script\")];\n const el = allScripts.find((script) => script.hasAttribute(\"data-shoelace\"));\n if (el) {\n setBasePath(el.getAttribute(\"data-shoelace\"));\n } else {\n const script = document.querySelector('script[src$=\"shoelace.js\"], script[src$=\"shoelace.min.js\"]');\n let path = \"\";\n if (script) {\n path = script.getAttribute(\"src\");\n }\n setBasePath(path.split(\"/\").slice(0, -1).join(\"/\"));\n }\n}\n\nexport {\n setBasePath,\n getBasePath\n};\n","import {\n watch\n} from \"./chunk.SUD4FHJ4.js\";\nimport {\n event\n} from \"./chunk.NVGUFQGY.js\";\nimport {\n r\n} from \"./chunk.QXBOLCLQ.js\";\nimport {\n i\n} from \"./chunk.5D6J5A4S.js\";\nimport {\n e\n} from \"./chunk.T6M3ZU4B.js\";\nimport {\n __decorate,\n n,\n o,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/alert/alert.scss\nvar alert_default = \":host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n/**\\n * @prop --box-shadow: The alert's box shadow.\\n */\\n:host {\\n display: contents;\\n margin: 0;\\n}\\n\\n.alert {\\n position: relative;\\n display: flex;\\n align-items: stretch;\\n background-color: var(--sl-color-white);\\n border: solid 1px var(--sl-color-gray-200);\\n border-top-width: 3px;\\n border-radius: var(--sl-border-radius-medium);\\n box-shadow: var(--box-shadow);\\n font-family: var(--sl-font-sans);\\n font-size: var(--sl-font-size-small);\\n font-weight: var(--sl-font-weight-normal);\\n line-height: 1.6;\\n color: var(--sl-color-gray-700);\\n opacity: 0;\\n transform: scale(0.9);\\n transition: var(--sl-transition-medium) opacity ease, var(--sl-transition-medium) transform ease;\\n margin: inherit;\\n}\\n.alert:not(.alert--visible) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n clip: rect(0 0 0 0);\\n clip-path: inset(50%);\\n overflow: hidden;\\n pointer-events: none;\\n visibility: hidden;\\n}\\n\\n.alert--open {\\n opacity: 1;\\n transform: none;\\n}\\n\\n.alert__icon {\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n font-size: var(--sl-font-size-large);\\n}\\n.alert__icon ::slotted(*) {\\n margin-left: var(--sl-spacing-large);\\n}\\n\\n.alert--primary {\\n border-top-color: var(--sl-color-primary-500);\\n}\\n.alert--primary .alert__icon {\\n color: var(--sl-color-primary-500);\\n}\\n\\n.alert--success {\\n border-top-color: var(--sl-color-success-500);\\n}\\n.alert--success .alert__icon {\\n color: var(--sl-color-success-500);\\n}\\n\\n.alert--info {\\n border-top-color: var(--sl-color-info-500);\\n}\\n.alert--info .alert__icon {\\n color: var(--sl-color-info-500);\\n}\\n\\n.alert--warning {\\n border-top-color: var(--sl-color-warning-500);\\n}\\n.alert--warning .alert__icon {\\n color: var(--sl-color-warning-500);\\n}\\n\\n.alert--danger {\\n border-top-color: var(--sl-color-danger-500);\\n}\\n.alert--danger .alert__icon {\\n color: var(--sl-color-danger-500);\\n}\\n\\n.alert__message {\\n flex: 1 1 auto;\\n padding: var(--sl-spacing-large);\\n overflow: hidden;\\n}\\n\\n.alert__close {\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n font-size: var(--sl-font-size-large);\\n padding-right: var(--sl-spacing-medium);\\n}\";\n\n// src/components/alert/alert.ts\nvar toastStack = Object.assign(document.createElement(\"div\"), {className: \"sl-toast-stack\"});\nvar SlAlert = class extends o {\n constructor() {\n super(...arguments);\n this.isVisible = false;\n this.open = false;\n this.closable = false;\n this.type = \"primary\";\n this.duration = Infinity;\n }\n connectedCallback() {\n super.connectedCallback();\n if (this.open) {\n this.show();\n }\n }\n show() {\n if (this.isVisible) {\n return;\n }\n const slShow = this.slShow.emit();\n if (slShow.defaultPrevented) {\n this.open = false;\n return;\n }\n this.isVisible = true;\n this.open = true;\n if (this.duration < Infinity) {\n this.autoHideTimeout = setTimeout(() => this.hide(), this.duration);\n }\n }\n hide() {\n if (!this.open) {\n return;\n }\n const slHide = this.slHide.emit();\n if (slHide.defaultPrevented) {\n this.open = true;\n return;\n }\n clearTimeout(this.autoHideTimeout);\n this.open = false;\n }\n async toast() {\n return new Promise((resolve) => {\n if (!toastStack.parentElement) {\n document.body.append(toastStack);\n }\n toastStack.appendChild(this);\n requestAnimationFrame(() => {\n this.clientWidth;\n this.show();\n });\n this.addEventListener(\"sl-after-hide\", () => {\n toastStack.removeChild(this);\n resolve();\n if (!toastStack.querySelector(\"sl-alert\")) {\n toastStack.remove();\n }\n }, {once: true});\n });\n }\n restartAutoHide() {\n clearTimeout(this.autoHideTimeout);\n if (this.open && this.duration < Infinity) {\n this.autoHideTimeout = setTimeout(() => this.hide(), this.duration);\n }\n }\n handleCloseClick() {\n this.hide();\n }\n handleMouseMove() {\n this.restartAutoHide();\n }\n handleTransitionEnd(event2) {\n const target = event2.target;\n if (event2.propertyName === \"opacity\" && target.classList.contains(\"alert\")) {\n this.isVisible = this.open;\n this.open ? this.slAfterShow.emit() : this.slAfterHide.emit();\n }\n }\n handleOpenChange() {\n this.open ? this.show() : this.hide();\n }\n handleDurationChange() {\n this.restartAutoHide();\n }\n render() {\n return p`\n \n \n \n \n\n \n \n \n\n ${this.closable ? p`\n \n \n \n ` : \"\"}\n \n `;\n }\n};\nSlAlert.styles = s(alert_default);\n__decorate([\n r()\n], SlAlert.prototype, \"isVisible\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlAlert.prototype, \"open\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlAlert.prototype, \"closable\", 2);\n__decorate([\n e({reflect: true})\n], SlAlert.prototype, \"type\", 2);\n__decorate([\n e({type: Number})\n], SlAlert.prototype, \"duration\", 2);\n__decorate([\n event(\"sl-show\")\n], SlAlert.prototype, \"slShow\", 2);\n__decorate([\n event(\"sl-after-show\")\n], SlAlert.prototype, \"slAfterShow\", 2);\n__decorate([\n event(\"sl-hide\")\n], SlAlert.prototype, \"slHide\", 2);\n__decorate([\n event(\"sl-after-hide\")\n], SlAlert.prototype, \"slAfterHide\", 2);\n__decorate([\n watch(\"open\")\n], SlAlert.prototype, \"handleOpenChange\", 1);\n__decorate([\n watch(\"duration\")\n], SlAlert.prototype, \"handleDurationChange\", 1);\nSlAlert = __decorate([\n n(\"sl-alert\")\n], SlAlert);\nvar alert_default2 = SlAlert;\n\nexport {\n alert_default2 as alert_default\n};\n","import {\n i\n} from \"./chunk.BMRAUHVW.js\";\nimport {\n e\n} from \"./chunk.T6M3ZU4B.js\";\nimport {\n __decorate,\n n,\n o,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/button-group/button-group.scss\nvar button_group_default = \":host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n:host {\\n display: inline-block;\\n}\\n\\n.button-group {\\n display: flex;\\n flex-wrap: nowrap;\\n}\";\n\n// src/components/button-group/button-group.ts\nvar SlButtonGroup = class extends o {\n constructor() {\n super(...arguments);\n this.label = \"\";\n }\n handleFocus(event) {\n const button = findButton(event.target);\n button == null ? void 0 : button.classList.add(\"sl-button-group__button--focus\");\n }\n handleBlur(event) {\n const button = findButton(event.target);\n button == null ? void 0 : button.classList.remove(\"sl-button-group__button--focus\");\n }\n handleMouseOver(event) {\n const button = findButton(event.target);\n button == null ? void 0 : button.classList.add(\"sl-button-group__button--hover\");\n }\n handleMouseOut(event) {\n const button = findButton(event.target);\n button == null ? void 0 : button.classList.remove(\"sl-button-group__button--hover\");\n }\n handleSlotChange() {\n const slottedElements = [...this.defaultSlot.assignedElements({flatten: true})];\n slottedElements.map((el) => {\n const index = slottedElements.indexOf(el);\n const button = findButton(el);\n if (button) {\n button.classList.add(\"sl-button-group__button\");\n button.classList.toggle(\"sl-button-group__button--first\", index === 0);\n button.classList.toggle(\"sl-button-group__button--inner\", index > 0 && index < slottedElements.length - 1);\n button.classList.toggle(\"sl-button-group__button--last\", index === slottedElements.length - 1);\n }\n });\n }\n render() {\n return p`\n \n \n \n `;\n }\n};\nSlButtonGroup.styles = s(button_group_default);\n__decorate([\n i(\"slot\")\n], SlButtonGroup.prototype, \"defaultSlot\", 2);\n__decorate([\n e()\n], SlButtonGroup.prototype, \"label\", 2);\nSlButtonGroup = __decorate([\n n(\"sl-button-group\")\n], SlButtonGroup);\nvar button_group_default2 = SlButtonGroup;\nfunction findButton(el) {\n return el.tagName.toLowerCase() === \"sl-button\" ? el : el.querySelector(\"sl-button\");\n}\n\nexport {\n button_group_default2 as button_group_default\n};\n","import {\n hasSlot\n} from \"./chunk.PCLPGKVT.js\";\nimport {\n o\n} from \"./chunk.SA3KMFF3.js\";\nimport {\n event\n} from \"./chunk.NVGUFQGY.js\";\nimport {\n r\n} from \"./chunk.QXBOLCLQ.js\";\nimport {\n i\n} from \"./chunk.5D6J5A4S.js\";\nimport {\n i as i2\n} from \"./chunk.BMRAUHVW.js\";\nimport {\n e\n} from \"./chunk.T6M3ZU4B.js\";\nimport {\n __decorate,\n n,\n o as o2,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/button/button.scss\nvar button_default = ':host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n:host {\\n display: inline-block;\\n width: auto;\\n cursor: pointer;\\n}\\n\\n.button {\\n display: inline-flex;\\n align-items: stretch;\\n justify-content: center;\\n width: 100%;\\n border-style: solid;\\n border-width: var(--sl-input-border-width);\\n font-family: var(--sl-input-font-family);\\n font-weight: var(--sl-font-weight-semibold);\\n text-decoration: none;\\n user-select: none;\\n white-space: nowrap;\\n vertical-align: middle;\\n padding: 0;\\n transition: var(--sl-transition-fast) background-color, var(--sl-transition-fast) color, var(--sl-transition-fast) border, var(--sl-transition-fast) box-shadow;\\n cursor: inherit;\\n}\\n.button::-moz-focus-inner {\\n border: 0;\\n}\\n.button:focus {\\n outline: none;\\n}\\n.button.button--disabled {\\n opacity: 0.5;\\n cursor: not-allowed;\\n}\\n.button.button--disabled * {\\n pointer-events: none;\\n}\\n.button ::slotted(sl-icon) {\\n pointer-events: none;\\n}\\n\\n.button__prefix,\\n.button__suffix {\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n}\\n\\n.button__label ::slotted(sl-icon) {\\n vertical-align: -2px;\\n}\\n\\n.button.button--default {\\n background-color: var(--sl-color-white);\\n border-color: var(--sl-color-gray-300);\\n color: var(--sl-color-gray-600);\\n -webkit-tap-highlight-color: var(--sl-color-primary-300);\\n}\\n@media (hover: hover) and (pointer: fine) {\\n .button.button--default:hover:not(.button--disabled) {\\n background-color: var(--sl-color-primary-50);\\n border-color: var(--sl-color-primary-300);\\n color: var(--sl-color-primary-600);\\n }\\n}\\n.button.button--default:focus:not(.button--disabled) {\\n background-color: var(--sl-color-primary-50);\\n border-color: var(--sl-color-primary-300);\\n color: var(--sl-color-primary-600);\\n box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-primary);\\n}\\n.button.button--default:active:not(.button--disabled) {\\n background-color: var(--sl-color-primary-100);\\n border-color: var(--sl-color-primary-400);\\n color: var(--sl-color-primary-700);\\n}\\n.button.button--primary {\\n background-color: var(--sl-color-primary-500);\\n border-color: var(--sl-color-primary-500);\\n color: var(--sl-color-primary-text);\\n -webkit-tap-highlight-color: var(--sl-color-primary-400);\\n}\\n@media (hover: hover) and (pointer: fine) {\\n .button.button--primary:hover:not(.button--disabled) {\\n background-color: var(--sl-color-primary-400);\\n border-color: var(--sl-color-primary-400);\\n color: var(--sl-color-primary-text);\\n }\\n}\\n.button.button--primary:focus:not(.button--disabled) {\\n background-color: var(--sl-color-primary-400);\\n border-color: var(--sl-color-primary-400);\\n color: var(--sl-color-primary-text);\\n box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-primary);\\n}\\n.button.button--primary:active:not(.button--disabled) {\\n background-color: var(--sl-color-primary-500);\\n border-color: var(--sl-color-primary-500);\\n color: var(--sl-color-primary-text);\\n}\\n.button.button--success {\\n background-color: var(--sl-color-success-500);\\n border-color: var(--sl-color-success-500);\\n color: var(--sl-color-success-text);\\n -webkit-tap-highlight-color: var(--sl-color-success-400);\\n}\\n@media (hover: hover) and (pointer: fine) {\\n .button.button--success:hover:not(.button--disabled) {\\n background-color: var(--sl-color-success-400);\\n border-color: var(--sl-color-success-400);\\n color: var(--sl-color-success-text);\\n }\\n}\\n.button.button--success:focus:not(.button--disabled) {\\n background-color: var(--sl-color-success-400);\\n border-color: var(--sl-color-success-400);\\n color: var(--sl-color-success-text);\\n box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-success);\\n}\\n.button.button--success:active:not(.button--disabled) {\\n background-color: var(--sl-color-success-500);\\n border-color: var(--sl-color-success-500);\\n color: var(--sl-color-success-text);\\n}\\n.button.button--info {\\n background-color: var(--sl-color-info-500);\\n border-color: var(--sl-color-info-500);\\n color: var(--sl-color-info-text);\\n -webkit-tap-highlight-color: var(--sl-color-info-400);\\n}\\n@media (hover: hover) and (pointer: fine) {\\n .button.button--info:hover:not(.button--disabled) {\\n background-color: var(--sl-color-info-400);\\n border-color: var(--sl-color-info-400);\\n color: var(--sl-color-info-text);\\n }\\n}\\n.button.button--info:focus:not(.button--disabled) {\\n background-color: var(--sl-color-info-400);\\n border-color: var(--sl-color-info-400);\\n color: var(--sl-color-info-text);\\n box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-info);\\n}\\n.button.button--info:active:not(.button--disabled) {\\n background-color: var(--sl-color-info-500);\\n border-color: var(--sl-color-info-500);\\n color: var(--sl-color-info-text);\\n}\\n.button.button--warning {\\n background-color: var(--sl-color-warning-500);\\n border-color: var(--sl-color-warning-500);\\n color: var(--sl-color-warning-text);\\n -webkit-tap-highlight-color: var(--sl-color-warning-400);\\n}\\n@media (hover: hover) and (pointer: fine) {\\n .button.button--warning:hover:not(.button--disabled) {\\n background-color: var(--sl-color-warning-400);\\n border-color: var(--sl-color-warning-400);\\n color: var(--sl-color-warning-text);\\n }\\n}\\n.button.button--warning:focus:not(.button--disabled) {\\n background-color: var(--sl-color-warning-400);\\n border-color: var(--sl-color-warning-400);\\n color: var(--sl-color-warning-text);\\n box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-warning);\\n}\\n.button.button--warning:active:not(.button--disabled) {\\n background-color: var(--sl-color-warning-500);\\n border-color: var(--sl-color-warning-500);\\n color: var(--sl-color-warning-text);\\n}\\n.button.button--danger {\\n background-color: var(--sl-color-danger-500);\\n border-color: var(--sl-color-danger-500);\\n color: var(--sl-color-danger-text);\\n -webkit-tap-highlight-color: var(--sl-color-danger-400);\\n}\\n@media (hover: hover) and (pointer: fine) {\\n .button.button--danger:hover:not(.button--disabled) {\\n background-color: var(--sl-color-danger-400);\\n border-color: var(--sl-color-danger-400);\\n color: var(--sl-color-danger-text);\\n }\\n}\\n.button.button--danger:focus:not(.button--disabled) {\\n background-color: var(--sl-color-danger-400);\\n border-color: var(--sl-color-danger-400);\\n color: var(--sl-color-danger-text);\\n box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-danger);\\n}\\n.button.button--danger:active:not(.button--disabled) {\\n background-color: var(--sl-color-danger-500);\\n border-color: var(--sl-color-danger-500);\\n color: var(--sl-color-danger-text);\\n}\\n\\n.button--text {\\n background-color: transparent;\\n border-color: transparent;\\n color: var(--sl-color-primary-500);\\n}\\n.button--text:hover:not(.button--disabled) {\\n background-color: transparent;\\n border-color: transparent;\\n color: var(--sl-color-primary-400);\\n}\\n.button--text:focus:not(.button--disabled) {\\n background-color: transparent;\\n border-color: transparent;\\n color: var(--sl-color-primary-400);\\n box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-primary);\\n}\\n.button--text:active:not(.button--disabled) {\\n background-color: transparent;\\n border-color: transparent;\\n color: var(--sl-color-primary-600);\\n}\\n\\n.button--small {\\n font-size: var(--sl-button-font-size-small);\\n height: var(--sl-input-height-small);\\n line-height: calc(var(--sl-input-height-small) - var(--sl-input-border-width) * 2);\\n border-radius: var(--sl-input-border-radius-small);\\n}\\n\\n.button--medium {\\n font-size: var(--sl-button-font-size-medium);\\n height: var(--sl-input-height-medium);\\n line-height: calc(var(--sl-input-height-medium) - var(--sl-input-border-width) * 2);\\n border-radius: var(--sl-input-border-radius-medium);\\n}\\n\\n.button--large {\\n font-size: var(--sl-button-font-size-large);\\n height: var(--sl-input-height-large);\\n line-height: calc(var(--sl-input-height-large) - var(--sl-input-border-width) * 2);\\n border-radius: var(--sl-input-border-radius-large);\\n}\\n\\n.button--pill.button--small {\\n border-radius: var(--sl-input-height-small);\\n}\\n.button--pill.button--medium {\\n border-radius: var(--sl-input-height-medium);\\n}\\n.button--pill.button--large {\\n border-radius: var(--sl-input-height-large);\\n}\\n\\n.button--circle {\\n padding-left: 0;\\n padding-right: 0;\\n}\\n.button--circle.button--small {\\n width: var(--sl-input-height-small);\\n border-radius: 50%;\\n}\\n.button--circle.button--medium {\\n width: var(--sl-input-height-medium);\\n border-radius: 50%;\\n}\\n.button--circle.button--large {\\n width: var(--sl-input-height-large);\\n border-radius: 50%;\\n}\\n.button--circle .button__prefix,\\n.button--circle .button__suffix,\\n.button--circle .button__caret {\\n display: none;\\n}\\n\\n.button--caret .button__suffix {\\n display: none;\\n}\\n.button--caret .button__caret {\\n display: flex;\\n align-items: center;\\n}\\n.button--caret .button__caret svg {\\n width: 1em;\\n height: 1em;\\n}\\n\\n.button--loading {\\n position: relative;\\n cursor: wait;\\n}\\n.button--loading .button__prefix,\\n.button--loading .button__label,\\n.button--loading .button__suffix,\\n.button--loading .button__caret {\\n visibility: hidden;\\n}\\n.button--loading sl-spinner {\\n --indicator-color: currentColor;\\n position: absolute;\\n height: 1em;\\n width: 1em;\\n top: calc(50% - 0.5em);\\n left: calc(50% - 0.5em);\\n}\\n\\n.button ::slotted(sl-badge) {\\n position: absolute;\\n top: 0;\\n right: 0;\\n transform: translateY(-50%) translateX(50%);\\n pointer-events: none;\\n}\\n\\n.button--has-label.button--small .button__label {\\n padding: 0 var(--sl-spacing-small);\\n}\\n.button--has-label.button--medium .button__label {\\n padding: 0 var(--sl-spacing-medium);\\n}\\n.button--has-label.button--large .button__label {\\n padding: 0 var(--sl-spacing-large);\\n}\\n\\n.button--has-prefix.button--small {\\n padding-left: var(--sl-spacing-x-small);\\n}\\n.button--has-prefix.button--small .button__label {\\n padding-left: var(--sl-spacing-x-small);\\n}\\n.button--has-prefix.button--medium {\\n padding-left: var(--sl-spacing-small);\\n}\\n.button--has-prefix.button--medium .button__label {\\n padding-left: var(--sl-spacing-small);\\n}\\n.button--has-prefix.button--large {\\n padding-left: var(--sl-spacing-small);\\n}\\n.button--has-prefix.button--large .button__label {\\n padding-left: var(--sl-spacing-small);\\n}\\n\\n.button--has-suffix.button--small,\\n.button--caret.button--small {\\n padding-right: var(--sl-spacing-x-small);\\n}\\n.button--has-suffix.button--small .button__label,\\n.button--caret.button--small .button__label {\\n padding-right: var(--sl-spacing-x-small);\\n}\\n.button--has-suffix.button--medium,\\n.button--caret.button--medium {\\n padding-right: var(--sl-spacing-small);\\n}\\n.button--has-suffix.button--medium .button__label,\\n.button--caret.button--medium .button__label {\\n padding-right: var(--sl-spacing-small);\\n}\\n.button--has-suffix.button--large,\\n.button--caret.button--large {\\n padding-right: var(--sl-spacing-small);\\n}\\n.button--has-suffix.button--large .button__label,\\n.button--caret.button--large .button__label {\\n padding-right: var(--sl-spacing-small);\\n}\\n\\n:host(.sl-button-group__button--first) .button {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0;\\n}\\n\\n:host(.sl-button-group__button--inner) .button {\\n border-radius: 0;\\n}\\n\\n:host(.sl-button-group__button--last) .button {\\n border-top-left-radius: 0;\\n border-bottom-left-radius: 0;\\n}\\n\\n:host(.sl-button-group__button:not(.sl-button-group__button--first)) {\\n margin-left: calc(-1 * var(--sl-input-border-width));\\n}\\n\\n:host(.sl-button-group__button:not(.sl-button-group__button--focus, .sl-button-group__button--first, [type=default]):not(:hover, :active, :focus)) .button:after {\\n content: \"\";\\n position: absolute;\\n top: 0;\\n left: 0;\\n bottom: 0;\\n border-left: solid 1px #fff4;\\n mix-blend-mode: lighten;\\n}\\n\\n:host(.sl-button-group__button--hover) {\\n z-index: 1;\\n}\\n\\n:host(.sl-button-group__button--focus) {\\n z-index: 2;\\n}';\n\n// src/components/button/button.ts\nvar SlButton = class extends o2 {\n constructor() {\n super(...arguments);\n this.hasFocus = false;\n this.hasLabel = false;\n this.hasPrefix = false;\n this.hasSuffix = false;\n this.type = \"default\";\n this.size = \"medium\";\n this.caret = false;\n this.disabled = false;\n this.loading = false;\n this.pill = false;\n this.circle = false;\n this.submit = false;\n }\n connectedCallback() {\n super.connectedCallback();\n this.handleSlotChange();\n }\n click() {\n this.button.click();\n }\n focus(options) {\n this.button.focus(options);\n }\n blur() {\n this.button.blur();\n }\n handleSlotChange() {\n this.hasLabel = hasSlot(this);\n this.hasPrefix = hasSlot(this, \"prefix\");\n this.hasSuffix = hasSlot(this, \"suffix\");\n }\n handleBlur() {\n this.hasFocus = false;\n this.slBlur.emit();\n }\n handleFocus() {\n this.hasFocus = true;\n this.slFocus.emit();\n }\n handleClick(event2) {\n if (this.disabled || this.loading) {\n event2.preventDefault();\n event2.stopPropagation();\n }\n }\n render() {\n const isLink = this.href ? true : false;\n const interior = p`\n \n \n \n \n \n \n \n \n \n ${this.caret ? p`\n \n \n \n \n \n ` : \"\"}\n ${this.loading ? p`` : \"\"}\n `;\n const button = p`\n \n ${interior}\n \n `;\n const link = p`\n this.button = el}\n part=\"base\"\n class=${i({\n button: true,\n \"button--default\": this.type === \"default\",\n \"button--primary\": this.type === \"primary\",\n \"button--success\": this.type === \"success\",\n \"button--info\": this.type === \"info\",\n \"button--warning\": this.type === \"warning\",\n \"button--danger\": this.type === \"danger\",\n \"button--text\": this.type === \"text\",\n \"button--small\": this.size === \"small\",\n \"button--medium\": this.size === \"medium\",\n \"button--large\": this.size === \"large\",\n \"button--caret\": this.caret,\n \"button--circle\": this.circle,\n \"button--disabled\": this.disabled,\n \"button--focused\": this.hasFocus,\n \"button--loading\": this.loading,\n \"button--pill\": this.pill,\n \"button--has-label\": this.hasLabel,\n \"button--has-prefix\": this.hasPrefix,\n \"button--has-suffix\": this.hasSuffix\n })}\n href=${o(this.href)}\n target=${o(this.target)}\n download=${o(this.download)}\n rel=${o(this.target ? \"noreferrer noopener\" : void 0)}\n role=\"button\"\n aria-disabled=${this.disabled ? \"true\" : \"false\"}\n tabindex=${this.disabled ? \"-1\" : \"0\"}\n @blur=${this.handleBlur}\n @focus=${this.handleFocus}\n @click=${this.handleClick}\n >\n ${interior}\n
\n `;\n return isLink ? link : button;\n }\n};\nSlButton.styles = s(button_default);\n__decorate([\n i2(\".button\")\n], SlButton.prototype, \"button\", 2);\n__decorate([\n r()\n], SlButton.prototype, \"hasFocus\", 2);\n__decorate([\n r()\n], SlButton.prototype, \"hasLabel\", 2);\n__decorate([\n r()\n], SlButton.prototype, \"hasPrefix\", 2);\n__decorate([\n r()\n], SlButton.prototype, \"hasSuffix\", 2);\n__decorate([\n e({reflect: true})\n], SlButton.prototype, \"type\", 2);\n__decorate([\n e({reflect: true})\n], SlButton.prototype, \"size\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlButton.prototype, \"caret\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlButton.prototype, \"disabled\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlButton.prototype, \"loading\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlButton.prototype, \"pill\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlButton.prototype, \"circle\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlButton.prototype, \"submit\", 2);\n__decorate([\n e()\n], SlButton.prototype, \"name\", 2);\n__decorate([\n e()\n], SlButton.prototype, \"value\", 2);\n__decorate([\n e()\n], SlButton.prototype, \"href\", 2);\n__decorate([\n e()\n], SlButton.prototype, \"target\", 2);\n__decorate([\n e()\n], SlButton.prototype, \"download\", 2);\n__decorate([\n event(\"sl-blur\")\n], SlButton.prototype, \"slBlur\", 2);\n__decorate([\n event(\"sl-focus\")\n], SlButton.prototype, \"slFocus\", 2);\nSlButton = __decorate([\n n(\"sl-button\")\n], SlButton);\nvar button_default2 = SlButton;\n\nexport {\n button_default2 as button_default\n};\n","import {\n watch\n} from \"./chunk.SUD4FHJ4.js\";\nimport {\n o\n} from \"./chunk.SA3KMFF3.js\";\nimport {\n event\n} from \"./chunk.NVGUFQGY.js\";\nimport {\n r\n} from \"./chunk.QXBOLCLQ.js\";\nimport {\n i\n} from \"./chunk.5D6J5A4S.js\";\nimport {\n i as i2\n} from \"./chunk.BMRAUHVW.js\";\nimport {\n e\n} from \"./chunk.T6M3ZU4B.js\";\nimport {\n __decorate,\n n,\n o as o2,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/checkbox/checkbox.scss\nvar checkbox_default = \":host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n:host {\\n display: inline-block;\\n}\\n\\n.checkbox {\\n display: inline-flex;\\n align-items: center;\\n font-family: var(--sl-input-font-family);\\n font-size: var(--sl-input-font-size-medium);\\n font-weight: var(--sl-input-font-weight);\\n color: var(--sl-input-color);\\n vertical-align: middle;\\n cursor: pointer;\\n}\\n\\n.checkbox__control {\\n flex: 0 0 auto;\\n position: relative;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n width: var(--sl-toggle-size);\\n height: var(--sl-toggle-size);\\n border: solid var(--sl-input-border-width) var(--sl-input-border-color);\\n border-radius: 2px;\\n background-color: var(--sl-input-background-color);\\n color: var(--sl-color-white);\\n transition: var(--sl-transition-fast) border-color, var(--sl-transition-fast) background-color, var(--sl-transition-fast) color, var(--sl-transition-fast) box-shadow;\\n}\\n.checkbox__control input[type=checkbox] {\\n position: absolute;\\n opacity: 0;\\n padding: 0;\\n margin: 0;\\n pointer-events: none;\\n}\\n.checkbox__control .checkbox__icon {\\n display: inline-flex;\\n width: var(--sl-toggle-size);\\n height: var(--sl-toggle-size);\\n}\\n.checkbox__control .checkbox__icon svg {\\n width: 100%;\\n height: 100%;\\n}\\n\\n.checkbox:not(.checkbox--checked):not(.checkbox--disabled) .checkbox__control:hover {\\n border-color: var(--sl-input-border-color-hover);\\n background-color: var(--sl-input-background-color-hover);\\n}\\n\\n.checkbox.checkbox--focused:not(.checkbox--checked):not(.checkbox--disabled) .checkbox__control {\\n border-color: var(--sl-input-border-color-focus);\\n background-color: var(--sl-input-background-color-focus);\\n box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-primary);\\n}\\n\\n.checkbox--checked .checkbox__control,\\n.checkbox--indeterminate .checkbox__control {\\n border-color: var(--sl-color-primary-500);\\n background-color: var(--sl-color-primary-500);\\n}\\n\\n.checkbox.checkbox--checked:not(.checkbox--disabled) .checkbox__control:hover,\\n.checkbox.checkbox--indeterminate:not(.checkbox--disabled) .checkbox__control:hover {\\n border-color: var(--sl-color-primary-400);\\n background-color: var(--sl-color-primary-400);\\n}\\n\\n.checkbox.checkbox--checked:not(.checkbox--disabled).checkbox--focused .checkbox__control,\\n.checkbox.checkbox--indeterminate:not(.checkbox--disabled).checkbox--focused .checkbox__control {\\n border-color: var(--sl-color-primary-400);\\n background-color: var(--sl-color-primary-400);\\n box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-primary);\\n}\\n\\n.checkbox--disabled {\\n opacity: 0.5;\\n cursor: not-allowed;\\n}\\n\\n.checkbox__label {\\n line-height: var(--sl-toggle-size);\\n margin-left: 0.5em;\\n user-select: none;\\n}\";\n\n// src/components/checkbox/checkbox.ts\nvar id = 0;\nvar SlCheckbox = class extends o2 {\n constructor() {\n super(...arguments);\n this.inputId = `checkbox-${++id}`;\n this.labelId = `checkbox-label-${id}`;\n this.hasFocus = false;\n this.disabled = false;\n this.required = false;\n this.checked = false;\n this.indeterminate = false;\n this.invalid = false;\n }\n firstUpdated() {\n this.input.indeterminate = this.indeterminate;\n }\n click() {\n this.input.click();\n }\n focus(options) {\n this.input.focus(options);\n }\n blur() {\n this.input.blur();\n }\n reportValidity() {\n return this.input.reportValidity();\n }\n setCustomValidity(message) {\n this.input.setCustomValidity(message);\n this.invalid = !this.input.checkValidity();\n }\n handleClick() {\n this.checked = !this.checked;\n this.indeterminate = false;\n }\n handleBlur() {\n this.hasFocus = false;\n this.slBlur.emit();\n }\n handleFocus() {\n this.hasFocus = true;\n this.slFocus.emit();\n }\n handleLabelMouseDown(event2) {\n event2.preventDefault();\n this.input.focus();\n }\n handleStateChange() {\n this.input.checked = this.checked;\n this.input.indeterminate = this.indeterminate;\n this.slChange.emit();\n }\n render() {\n return p`\n \n \n ${this.checked ? p`\n \n \n \n \n \n \n \n \n \n \n \n \n ` : \"\"}\n ${!this.checked && this.indeterminate ? p`\n \n \n \n \n \n \n \n \n \n \n \n ` : \"\"}\n\n \n \n\n \n \n \n \n `;\n }\n};\nSlCheckbox.styles = s(checkbox_default);\n__decorate([\n i2('input[type=\"checkbox\"]')\n], SlCheckbox.prototype, \"input\", 2);\n__decorate([\n r()\n], SlCheckbox.prototype, \"hasFocus\", 2);\n__decorate([\n e()\n], SlCheckbox.prototype, \"name\", 2);\n__decorate([\n e()\n], SlCheckbox.prototype, \"value\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlCheckbox.prototype, \"disabled\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlCheckbox.prototype, \"required\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlCheckbox.prototype, \"checked\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlCheckbox.prototype, \"indeterminate\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlCheckbox.prototype, \"invalid\", 2);\n__decorate([\n event(\"sl-blur\")\n], SlCheckbox.prototype, \"slBlur\", 2);\n__decorate([\n event(\"sl-change\")\n], SlCheckbox.prototype, \"slChange\", 2);\n__decorate([\n event(\"sl-focus\")\n], SlCheckbox.prototype, \"slFocus\", 2);\n__decorate([\n watch(\"checked\"),\n watch(\"indeterminate\")\n], SlCheckbox.prototype, \"handleStateChange\", 1);\nSlCheckbox = __decorate([\n n(\"sl-checkbox\")\n], SlCheckbox);\nvar checkbox_default2 = SlCheckbox;\n\nexport {\n checkbox_default2 as checkbox_default\n};\n","import {\n locks\n} from \"./chunk.TKRDPH6K.js\";\n\n// src/internal/modal.ts\nvar activeModals = [];\nvar Modal = class {\n constructor(element, options) {\n this.element = element;\n this.options = options;\n this.handleFocusIn = this.handleFocusIn.bind(this);\n }\n activate() {\n activeModals.push(this.element);\n document.addEventListener(\"focusin\", this.handleFocusIn);\n }\n deactivate() {\n activeModals = activeModals.filter((modal) => modal !== this.element);\n document.removeEventListener(\"focusin\", this.handleFocusIn);\n }\n isActive() {\n return activeModals[activeModals.length - 1] === this.element;\n }\n handleFocusIn(event) {\n var _a, _b;\n const target = event.target;\n const tagName = this.element.tagName.toLowerCase();\n if (this.isActive() && target.closest(tagName) !== this.element && typeof ((_a = this.options) == null ? void 0 : _a.onfocusOut) === \"function\") {\n (_b = this.options) == null ? void 0 : _b.onfocusOut(event);\n }\n }\n};\nvar modal_default = Modal;\n\n// src/internal/scroll.ts\nfunction lockBodyScrolling(lockingEl) {\n locks.add(lockingEl);\n document.body.classList.add(\"sl-scroll-lock\");\n}\nfunction unlockBodyScrolling(lockingEl) {\n locks.delete(lockingEl);\n if (locks.size === 0) {\n document.body.classList.remove(\"sl-scroll-lock\");\n }\n}\n\n// src/internal/support.ts\nfunction isPreventScrollSupported() {\n let supported = false;\n document.createElement(\"div\").focus({\n get preventScroll() {\n supported = true;\n return false;\n }\n });\n return supported;\n}\n\nexport {\n isPreventScrollSupported,\n lockBodyScrolling,\n unlockBodyScrolling,\n modal_default\n};\n","import {\n isPreventScrollSupported,\n lockBodyScrolling,\n modal_default,\n unlockBodyScrolling\n} from \"./chunk.5LDML7H2.js\";\nimport {\n watch\n} from \"./chunk.SUD4FHJ4.js\";\nimport {\n hasSlot\n} from \"./chunk.PCLPGKVT.js\";\nimport {\n o\n} from \"./chunk.SA3KMFF3.js\";\nimport {\n event\n} from \"./chunk.NVGUFQGY.js\";\nimport {\n r\n} from \"./chunk.QXBOLCLQ.js\";\nimport {\n i\n} from \"./chunk.5D6J5A4S.js\";\nimport {\n i as i2\n} from \"./chunk.BMRAUHVW.js\";\nimport {\n e\n} from \"./chunk.T6M3ZU4B.js\";\nimport {\n __decorate,\n n,\n o as o2,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/dialog/dialog.scss\nvar dialog_default = \":host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n/**\\n * @prop --width: The preferred width of the dialog. Note that the dialog will shrink to accommodate smaller screens.\\n * @prop --header-spacing: The amount of padding to use for the header.\\n * @prop --body-spacing: The amount of padding to use for the body.\\n * @prop --footer-spacing: The amount of padding to use for the footer.\\n */\\n:host {\\n --width: 31rem;\\n --header-spacing: var(--sl-spacing-large);\\n --body-spacing: var(--sl-spacing-large);\\n --footer-spacing: var(--sl-spacing-large);\\n display: contents;\\n}\\n\\n.dialog {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n z-index: var(--sl-z-index-dialog);\\n}\\n.dialog:not(.dialog--visible) {\\n position: absolute;\\n width: 1px;\\n height: 1px;\\n clip: rect(0 0 0 0);\\n clip-path: inset(50%);\\n overflow: hidden;\\n pointer-events: none;\\n visibility: hidden;\\n}\\n\\n.dialog__panel {\\n display: flex;\\n flex-direction: column;\\n z-index: 2;\\n width: var(--width);\\n max-width: calc(100% - var(--sl-spacing-xx-large));\\n max-height: calc(100% - var(--sl-spacing-xx-large));\\n background-color: var(--sl-panel-background-color);\\n border-radius: var(--sl-border-radius-medium);\\n box-shadow: var(--sl-shadow-x-large);\\n opacity: 0;\\n transform: scale(0.8);\\n transition: var(--sl-transition-medium) opacity, var(--sl-transition-medium) transform;\\n}\\n.dialog__panel:focus {\\n outline: none;\\n}\\n\\n@media screen and (max-width: 420px) {\\n .dialog__panel {\\n max-height: 80vh;\\n }\\n}\\n.dialog--open .dialog__panel {\\n display: flex;\\n opacity: 1;\\n transform: none;\\n}\\n\\n.dialog__header {\\n flex: 0 0 auto;\\n display: flex;\\n}\\n\\n.dialog__title {\\n flex: 1 1 auto;\\n font-size: var(--sl-font-size-large);\\n line-height: var(--sl-line-height-dense);\\n padding: var(--header-spacing);\\n}\\n\\n.dialog__close {\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n font-size: var(--sl-font-size-x-large);\\n padding: 0 var(--header-spacing);\\n}\\n\\n.dialog__body {\\n flex: 1 1 auto;\\n padding: var(--body-spacing);\\n overflow: auto;\\n -webkit-overflow-scrolling: touch;\\n}\\n\\n.dialog__footer {\\n flex: 0 0 auto;\\n text-align: right;\\n padding: var(--footer-spacing);\\n}\\n.dialog__footer ::slotted(sl-button:not(:first-of-type)) {\\n margin-left: var(--sl-spacing-x-small);\\n}\\n\\n.dialog:not(.dialog--has-footer) .dialog__footer {\\n display: none;\\n}\\n\\n.dialog__overlay {\\n position: fixed;\\n top: 0;\\n right: 0;\\n bottom: 0;\\n left: 0;\\n background-color: var(--sl-overlay-background-color);\\n opacity: 0;\\n transition: var(--sl-transition-medium) opacity;\\n}\\n\\n.dialog--open .dialog__overlay {\\n opacity: 1;\\n}\";\n\n// src/components/dialog/dialog.ts\nvar hasPreventScroll = isPreventScrollSupported();\nvar id = 0;\nvar SlDialog = class extends o2 {\n constructor() {\n super(...arguments);\n this.componentId = `dialog-${++id}`;\n this.willShow = false;\n this.willHide = false;\n this.hasFooter = false;\n this.isVisible = false;\n this.open = false;\n this.label = \"\";\n this.noHeader = false;\n }\n connectedCallback() {\n super.connectedCallback();\n this.modal = new modal_default(this, {\n onfocusOut: () => this.panel.focus()\n });\n this.handleSlotChange();\n if (this.open) {\n this.show();\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n unlockBodyScrolling(this);\n }\n show() {\n if (this.willShow) {\n return;\n }\n const slShow = this.slShow.emit();\n if (slShow.defaultPrevented) {\n this.open = false;\n return;\n }\n this.willShow = true;\n this.isVisible = true;\n this.open = true;\n this.modal.activate();\n lockBodyScrolling(this);\n if (this.open) {\n if (hasPreventScroll) {\n requestAnimationFrame(() => {\n const slInitialFocus = this.slInitialFocus.emit();\n if (!slInitialFocus.defaultPrevented) {\n this.panel.focus({preventScroll: true});\n }\n });\n } else {\n this.dialog.addEventListener(\"transitionend\", () => {\n const slInitialFocus = this.slInitialFocus.emit();\n if (!slInitialFocus.defaultPrevented) {\n this.panel.focus();\n }\n }, {once: true});\n }\n }\n }\n hide() {\n if (this.willHide) {\n return;\n }\n const slHide = this.slHide.emit();\n if (slHide.defaultPrevented) {\n this.open = true;\n return;\n }\n this.willHide = true;\n this.open = false;\n this.modal.deactivate();\n unlockBodyScrolling(this);\n }\n handleCloseClick() {\n this.hide();\n }\n handleKeyDown(event2) {\n if (event2.key === \"Escape\") {\n this.hide();\n }\n }\n handleOpenChange() {\n this.open ? this.show() : this.hide();\n }\n handleOverlayClick() {\n const slOverlayDismiss = this.slOverlayDismiss.emit();\n if (!slOverlayDismiss.defaultPrevented) {\n this.hide();\n }\n }\n handleSlotChange() {\n this.hasFooter = hasSlot(this, \"footer\");\n }\n handleTransitionEnd(event2) {\n const target = event2.target;\n if (event2.propertyName === \"opacity\" && target.classList.contains(\"dialog__panel\")) {\n this.isVisible = this.open;\n this.willShow = false;\n this.willHide = false;\n this.open ? this.slAfterShow.emit() : this.slAfterHide.emit();\n }\n }\n render() {\n return p`\n \n
\n\n \n ${!this.noHeader ? p`\n
\n \n ${this.label || String.fromCharCode(65279)} \n \n \n
\n ` : \"\"}\n\n
\n \n
\n\n
\n \n
\n \n \n `;\n }\n};\nSlDialog.styles = s(dialog_default);\n__decorate([\n i2(\".dialog\")\n], SlDialog.prototype, \"dialog\", 2);\n__decorate([\n i2(\".dialog__panel\")\n], SlDialog.prototype, \"panel\", 2);\n__decorate([\n r()\n], SlDialog.prototype, \"hasFooter\", 2);\n__decorate([\n r()\n], SlDialog.prototype, \"isVisible\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlDialog.prototype, \"open\", 2);\n__decorate([\n e({reflect: true})\n], SlDialog.prototype, \"label\", 2);\n__decorate([\n e({attribute: \"no-header\", type: Boolean, reflect: true})\n], SlDialog.prototype, \"noHeader\", 2);\n__decorate([\n event(\"sl-show\")\n], SlDialog.prototype, \"slShow\", 2);\n__decorate([\n event(\"sl-after-show\")\n], SlDialog.prototype, \"slAfterShow\", 2);\n__decorate([\n event(\"sl-hide\")\n], SlDialog.prototype, \"slHide\", 2);\n__decorate([\n event(\"sl-after-hide\")\n], SlDialog.prototype, \"slAfterHide\", 2);\n__decorate([\n event(\"sl-initial-focus\")\n], SlDialog.prototype, \"slInitialFocus\", 2);\n__decorate([\n event(\"sl-overlay-dismiss\")\n], SlDialog.prototype, \"slOverlayDismiss\", 2);\n__decorate([\n watch(\"open\")\n], SlDialog.prototype, \"handleOpenChange\", 1);\nSlDialog = __decorate([\n n(\"sl-dialog\")\n], SlDialog);\nvar dialog_default2 = SlDialog;\n\nexport {\n dialog_default2 as dialog_default\n};\n","import {\n popover_default\n} from \"./chunk.POBXNCHG.js\";\nimport {\n scrollIntoView\n} from \"./chunk.LDX6FEXO.js\";\nimport {\n watch\n} from \"./chunk.SUD4FHJ4.js\";\nimport {\n event\n} from \"./chunk.NVGUFQGY.js\";\nimport {\n i\n} from \"./chunk.5D6J5A4S.js\";\nimport {\n i as i2\n} from \"./chunk.BMRAUHVW.js\";\nimport {\n e\n} from \"./chunk.T6M3ZU4B.js\";\nimport {\n __decorate,\n n,\n o,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/dropdown/dropdown.scss\nvar dropdown_default = \":host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n:host {\\n display: inline-block;\\n}\\n\\n.dropdown {\\n position: relative;\\n}\\n\\n.dropdown__trigger {\\n display: block;\\n}\\n\\n.dropdown__positioner {\\n position: absolute;\\n z-index: var(--sl-z-index-dropdown);\\n}\\n\\n.dropdown__panel {\\n max-height: 75vh;\\n font-family: var(--sl-font-sans);\\n font-size: var(--sl-font-size-medium);\\n font-weight: var(--sl-font-weight-normal);\\n color: var(--color);\\n background-color: var(--sl-panel-background-color);\\n border: solid 1px var(--sl-panel-border-color);\\n border-radius: var(--sl-border-radius-medium);\\n box-shadow: var(--sl-shadow-large);\\n opacity: 0;\\n overflow: auto;\\n overscroll-behavior: none;\\n pointer-events: none;\\n transform: scale(0.9);\\n transition: var(--sl-transition-fast) opacity, var(--sl-transition-fast) transform;\\n}\\n\\n.dropdown__positioner[data-popper-placement^=top] .dropdown__panel {\\n transform-origin: bottom;\\n}\\n.dropdown__positioner[data-popper-placement^=bottom] .dropdown__panel {\\n transform-origin: top;\\n}\\n.dropdown__positioner[data-popper-placement^=left] .dropdown__panel {\\n transform-origin: right;\\n}\\n.dropdown__positioner[data-popper-placement^=right] .dropdown__panel {\\n transform-origin: left;\\n}\\n.dropdown__positioner.popover-visible .dropdown__panel {\\n opacity: 1;\\n transform: none;\\n pointer-events: all;\\n}\";\n\n// src/internal/tabbable.ts\nfunction isTabbable(el) {\n const tabIndex = el.tabIndex;\n return tabIndex > -1;\n}\nfunction getNearestTabbableElement(el) {\n if (isTabbable(el)) {\n return el;\n }\n if (el.shadowRoot) {\n const tabbableShadowChild = [...el.shadowRoot.children].find(isTabbable);\n if (tabbableShadowChild) {\n return tabbableShadowChild;\n }\n }\n if (el.children) {\n return [...el.children].map(getNearestTabbableElement)[0];\n }\n return null;\n}\n\n// src/components/dropdown/dropdown.ts\nvar id = 0;\nvar SlDropdown = class extends o {\n constructor() {\n super(...arguments);\n this.componentId = `dropdown-${++id}`;\n this.isVisible = false;\n this.open = false;\n this.placement = \"bottom-start\";\n this.closeOnSelect = true;\n this.distance = 2;\n this.skidding = 0;\n this.hoist = false;\n }\n connectedCallback() {\n super.connectedCallback();\n this.handleMenuItemActivate = this.handleMenuItemActivate.bind(this);\n this.handlePanelSelect = this.handlePanelSelect.bind(this);\n this.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this);\n this.handleDocumentMouseDown = this.handleDocumentMouseDown.bind(this);\n if (!this.containingElement) {\n this.containingElement = this;\n }\n }\n firstUpdated() {\n this.popover = new popover_default(this.trigger, this.positioner, {\n strategy: this.hoist ? \"fixed\" : \"absolute\",\n placement: this.placement,\n distance: this.distance,\n skidding: this.skidding,\n transitionElement: this.panel,\n onAfterHide: () => this.slAfterHide.emit(),\n onAfterShow: () => this.slAfterShow.emit(),\n onTransitionEnd: () => {\n if (!this.open) {\n this.panel.scrollTop = 0;\n }\n }\n });\n if (this.open) {\n this.show();\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.hide();\n this.popover.destroy();\n }\n focusOnTrigger() {\n const slot = this.trigger.querySelector(\"slot\");\n const trigger = slot.assignedElements({flatten: true})[0];\n if (trigger && typeof trigger.focus === \"function\") {\n trigger.focus();\n }\n }\n getMenu() {\n const slot = this.panel.querySelector(\"slot\");\n return slot.assignedElements({flatten: true}).filter((el) => el.tagName.toLowerCase() === \"sl-menu\")[0];\n }\n handleDocumentKeyDown(event2) {\n var _a;\n if (event2.key === \"Escape\") {\n this.hide();\n this.focusOnTrigger();\n return;\n }\n if (event2.key === \"Tab\") {\n if (this.open && ((_a = document.activeElement) == null ? void 0 : _a.tagName.toLowerCase()) === \"sl-menu-item\") {\n event2.preventDefault();\n this.hide();\n this.focusOnTrigger();\n return;\n }\n setTimeout(() => {\n var _a2, _b;\n const activeElement = this.containingElement.getRootNode() instanceof ShadowRoot ? (_b = (_a2 = document.activeElement) == null ? void 0 : _a2.shadowRoot) == null ? void 0 : _b.activeElement : document.activeElement;\n if ((activeElement == null ? void 0 : activeElement.closest(this.containingElement.tagName.toLowerCase())) !== this.containingElement) {\n this.hide();\n return;\n }\n });\n }\n }\n handleDocumentMouseDown(event2) {\n const path = event2.composedPath();\n if (!path.includes(this.containingElement)) {\n this.hide();\n return;\n }\n }\n handleMenuItemActivate(event2) {\n const item = event2.target;\n scrollIntoView(item, this.panel);\n }\n handlePanelSelect(event2) {\n const target = event2.target;\n if (this.closeOnSelect && target.tagName.toLowerCase() === \"sl-menu\") {\n this.hide();\n this.focusOnTrigger();\n }\n }\n handlePopoverOptionsChange() {\n if (this.popover) {\n this.popover.setOptions({\n strategy: this.hoist ? \"fixed\" : \"absolute\",\n placement: this.placement,\n distance: this.distance,\n skidding: this.skidding\n });\n }\n }\n handleTriggerClick() {\n this.open ? this.hide() : this.show();\n }\n handleTriggerKeyDown(event2) {\n const menu = this.getMenu();\n const menuItems = menu ? [...menu.querySelectorAll(\"sl-menu-item\")] : [];\n const firstMenuItem = menuItems[0];\n const lastMenuItem = menuItems[menuItems.length - 1];\n if (event2.key === \"Escape\") {\n this.focusOnTrigger();\n this.hide();\n return;\n }\n if ([\" \", \"Enter\"].includes(event2.key)) {\n event2.preventDefault();\n this.open ? this.hide() : this.show();\n return;\n }\n if ([\"ArrowDown\", \"ArrowUp\"].includes(event2.key)) {\n event2.preventDefault();\n if (!this.open) {\n this.show();\n }\n if (event2.key === \"ArrowDown\" && firstMenuItem) {\n firstMenuItem.focus();\n return;\n }\n if (event2.key === \"ArrowUp\" && lastMenuItem) {\n lastMenuItem.focus();\n return;\n }\n }\n const ignoredKeys = [\"Tab\", \"Shift\", \"Meta\", \"Ctrl\", \"Alt\"];\n if (this.open && menu && !ignoredKeys.includes(event2.key)) {\n menu.typeToSelect(event2.key);\n return;\n }\n }\n handleTriggerKeyUp(event2) {\n if (event2.key === \" \") {\n event2.preventDefault();\n }\n }\n handleTriggerSlotChange() {\n this.updateAccessibleTrigger();\n }\n updateAccessibleTrigger() {\n if (this.trigger) {\n const slot = this.trigger.querySelector(\"slot\");\n const assignedElements = slot.assignedElements({flatten: true});\n const accessibleTrigger = assignedElements.map(getNearestTabbableElement)[0];\n if (accessibleTrigger) {\n accessibleTrigger.setAttribute(\"aria-haspopup\", \"true\");\n accessibleTrigger.setAttribute(\"aria-expanded\", this.open ? \"true\" : \"false\");\n }\n }\n }\n show() {\n if (this.isVisible) {\n return;\n }\n const slShow = this.slShow.emit();\n if (slShow.defaultPrevented) {\n this.open = false;\n return;\n }\n this.panel.addEventListener(\"sl-activate\", this.handleMenuItemActivate);\n this.panel.addEventListener(\"sl-select\", this.handlePanelSelect);\n document.addEventListener(\"keydown\", this.handleDocumentKeyDown);\n document.addEventListener(\"mousedown\", this.handleDocumentMouseDown);\n this.isVisible = true;\n this.open = true;\n this.popover.show();\n }\n hide() {\n if (!this.isVisible) {\n return;\n }\n const slHide = this.slHide.emit();\n if (slHide.defaultPrevented) {\n this.open = true;\n return;\n }\n this.panel.removeEventListener(\"sl-activate\", this.handleMenuItemActivate);\n this.panel.removeEventListener(\"sl-select\", this.handlePanelSelect);\n document.addEventListener(\"keydown\", this.handleDocumentKeyDown);\n document.removeEventListener(\"mousedown\", this.handleDocumentMouseDown);\n this.isVisible = false;\n this.open = false;\n this.popover.hide();\n }\n reposition() {\n if (!this.open) {\n return;\n }\n this.popover.reposition();\n }\n handleOpenChange() {\n this.open ? this.show() : this.hide();\n this.updateAccessibleTrigger();\n }\n render() {\n return p`\n \n \n \n \n\n \n
\n \n \n
\n \n \n `;\n }\n};\nSlDropdown.styles = s(dropdown_default);\n__decorate([\n i2(\".dropdown__trigger\")\n], SlDropdown.prototype, \"trigger\", 2);\n__decorate([\n i2(\".dropdown__panel\")\n], SlDropdown.prototype, \"panel\", 2);\n__decorate([\n i2(\".dropdown__positioner\")\n], SlDropdown.prototype, \"positioner\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlDropdown.prototype, \"open\", 2);\n__decorate([\n e()\n], SlDropdown.prototype, \"placement\", 2);\n__decorate([\n e({attribute: \"close-on-select\", type: Boolean, reflect: true})\n], SlDropdown.prototype, \"closeOnSelect\", 2);\n__decorate([\n e({attribute: false})\n], SlDropdown.prototype, \"containingElement\", 2);\n__decorate([\n e({type: Number})\n], SlDropdown.prototype, \"distance\", 2);\n__decorate([\n e({type: Number})\n], SlDropdown.prototype, \"skidding\", 2);\n__decorate([\n e({type: Boolean})\n], SlDropdown.prototype, \"hoist\", 2);\n__decorate([\n event(\"sl-show\")\n], SlDropdown.prototype, \"slShow\", 2);\n__decorate([\n event(\"sl-after-show\")\n], SlDropdown.prototype, \"slAfterShow\", 2);\n__decorate([\n event(\"sl-hide\")\n], SlDropdown.prototype, \"slHide\", 2);\n__decorate([\n event(\"sl-after-hide\")\n], SlDropdown.prototype, \"slAfterHide\", 2);\n__decorate([\n watch(\"distance\"),\n watch(\"hoist\"),\n watch(\"placement\"),\n watch(\"skidding\")\n], SlDropdown.prototype, \"handlePopoverOptionsChange\", 1);\n__decorate([\n watch(\"open\")\n], SlDropdown.prototype, \"handleOpenChange\", 1);\nSlDropdown = __decorate([\n n(\"sl-dropdown\")\n], SlDropdown);\nvar dropdown_default2 = SlDropdown;\n\nexport {\n dropdown_default2 as dropdown_default\n};\n","// src/internal/offset.ts\nfunction getOffset(element, parent) {\n return {\n top: Math.round(element.getBoundingClientRect().top - parent.getBoundingClientRect().top),\n left: Math.round(element.getBoundingClientRect().left - parent.getBoundingClientRect().left)\n };\n}\n\n// src/internal/scroll.ts\nfunction scrollIntoView(element, container, direction = \"vertical\", behavior = \"smooth\") {\n const offset = getOffset(element, container);\n const offsetTop = offset.top + container.scrollTop;\n const offsetLeft = offset.left + container.scrollLeft;\n const minX = container.scrollLeft;\n const maxX = container.scrollLeft + container.offsetWidth;\n const minY = container.scrollTop;\n const maxY = container.scrollTop + container.offsetHeight;\n if (direction === \"horizontal\" || direction === \"both\") {\n if (offsetLeft < minX) {\n container.scrollTo({left: offsetLeft, behavior});\n } else if (offsetLeft + element.clientWidth > maxX) {\n container.scrollTo({left: offsetLeft - container.offsetWidth + element.clientWidth, behavior});\n }\n }\n if (direction === \"vertical\" || direction === \"both\") {\n if (offsetTop < minY) {\n container.scrollTo({top: offsetTop, behavior});\n } else if (offsetTop + element.clientHeight > maxY) {\n container.scrollTo({top: offsetTop - container.offsetHeight + element.clientHeight, behavior});\n }\n }\n}\n\nexport {\n getOffset,\n scrollIntoView\n};\n","// src/internal/focus-visible.ts\nvar listeners = new WeakMap();\nfunction observe(el) {\n const keys = [\"Tab\", \"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\", \"PageDown\", \"PageUp\"];\n const is = (event) => {\n if (keys.includes(event.key)) {\n el.classList.add(\"focus-visible\");\n }\n };\n const isNot = () => el.classList.remove(\"focus-visible\");\n listeners.set(el, {is, isNot});\n el.addEventListener(\"keydown\", is);\n el.addEventListener(\"keyup\", is);\n el.addEventListener(\"mousedown\", isNot);\n el.addEventListener(\"mousedown\", isNot);\n}\nfunction unobserve(el) {\n const {is, isNot} = listeners.get(el);\n el.classList.remove(\"focus-visible\");\n el.removeEventListener(\"keydown\", is);\n el.removeEventListener(\"keyup\", is);\n el.removeEventListener(\"mousedown\", isNot);\n el.removeEventListener(\"mousedown\", isNot);\n}\nvar focusVisible = {\n observe,\n unobserve\n};\n\nexport {\n focusVisible\n};\n","import {\n focusVisible\n} from \"./chunk.GQSSQUA6.js\";\nimport {\n o\n} from \"./chunk.SA3KMFF3.js\";\nimport {\n i\n} from \"./chunk.5D6J5A4S.js\";\nimport {\n i as i2\n} from \"./chunk.BMRAUHVW.js\";\nimport {\n e\n} from \"./chunk.T6M3ZU4B.js\";\nimport {\n __decorate,\n n,\n o as o2,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/icon-button/icon-button.scss\nvar icon_button_default = \":host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n:host {\\n display: inline-block;\\n}\\n\\n.icon-button {\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n background: none;\\n border: none;\\n border-radius: var(--sl-border-radius-medium);\\n font-size: inherit;\\n color: var(--sl-color-gray-500);\\n padding: var(--sl-spacing-x-small);\\n cursor: pointer;\\n transition: var(--sl-transition-medium) color;\\n -webkit-appearance: none;\\n}\\n.icon-button:hover:not(.icon-button--disabled), .icon-button:focus:not(.icon-button--disabled) {\\n color: var(--sl-color-primary-500);\\n}\\n.icon-button:active:not(.icon-button--disabled) {\\n color: var(--sl-color-primary-600);\\n}\\n.icon-button:focus {\\n outline: none;\\n}\\n\\n.icon-button--disabled {\\n opacity: 0.5;\\n cursor: not-allowed;\\n}\\n\\n.focus-visible.icon-button:focus {\\n box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-primary);\\n}\";\n\n// src/components/icon-button/icon-button.ts\nvar SlIconButton = class extends o2 {\n constructor() {\n super(...arguments);\n this.label = \"\";\n this.disabled = false;\n }\n firstUpdated() {\n focusVisible.observe(this.button);\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n focusVisible.unobserve(this.button);\n }\n render() {\n return p`\n \n \n \n `;\n }\n};\nSlIconButton.styles = s(icon_button_default);\n__decorate([\n i2(\"button\")\n], SlIconButton.prototype, \"button\", 2);\n__decorate([\n e()\n], SlIconButton.prototype, \"name\", 2);\n__decorate([\n e()\n], SlIconButton.prototype, \"library\", 2);\n__decorate([\n e()\n], SlIconButton.prototype, \"src\", 2);\n__decorate([\n e()\n], SlIconButton.prototype, \"label\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlIconButton.prototype, \"disabled\", 2);\nSlIconButton = __decorate([\n n(\"sl-icon-button\")\n], SlIconButton);\nvar icon_button_default2 = SlIconButton;\n\nexport {\n icon_button_default2 as icon_button_default\n};\n","import {\n e,\n s,\n t\n} from \"./chunk.VSJN236Y.js\";\nimport {\n g,\n y\n} from \"./chunk.SXOXLYUK.js\";\n\n// node_modules/lit-html/directives/unsafe-html.js\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nvar n = class extends e {\n constructor(i) {\n if (super(i), this.value = y, i.type !== t.CHILD)\n throw Error(this.constructor.directiveName + \"() can only be used in child bindings\");\n }\n render(r) {\n if (r === y)\n return this.templateResult = void 0, this.value = r;\n if (r === g)\n return r;\n if (typeof r != \"string\")\n throw Error(this.constructor.directiveName + \"() called with a non-string value\");\n if (r === this.value)\n return this.templateResult;\n this.value = r;\n const s2 = [r];\n return s2.raw = s2, this.templateResult = {_$litType$: this.constructor.resultType, strings: s2, values: []};\n }\n};\nn.directiveName = \"unsafeHTML\", n.resultType = 1;\nvar o = s(n);\n\nexport {\n n,\n o\n};\n","import {\n getBasePath\n} from \"./chunk.YALGRZIW.js\";\n\n// src/components/icon/library.ts\nvar registry = [\n {\n name: \"default\",\n resolver: (name) => `${getBasePath()}/assets/icons/${name}.svg`\n }\n];\nvar watchedIcons = [];\nfunction watchIcon(icon) {\n watchedIcons.push(icon);\n}\nfunction unwatchIcon(icon) {\n watchedIcons = watchedIcons.filter((el) => el !== icon);\n}\nfunction getIconLibrary(name) {\n return registry.filter((lib) => lib.name === name)[0];\n}\nfunction registerIconLibrary(name, options) {\n unregisterIconLibrary(name);\n registry.push({\n name,\n resolver: options.resolver,\n mutator: options.mutator\n });\n watchedIcons.map((icon) => {\n if (icon.library === name) {\n icon.redraw();\n }\n });\n}\nfunction unregisterIconLibrary(name) {\n registry = registry.filter((lib) => lib.name !== name);\n}\n\nexport {\n watchIcon,\n unwatchIcon,\n getIconLibrary,\n registerIconLibrary,\n unregisterIconLibrary\n};\n","// src/components/icon/request.ts\nvar iconFiles = new Map();\nvar requestIcon = (url) => {\n if (iconFiles.has(url)) {\n return iconFiles.get(url);\n } else {\n const request = fetch(url).then(async (response) => {\n if (response.ok) {\n const div = document.createElement(\"div\");\n div.innerHTML = await response.text();\n const svg = div.firstElementChild;\n return {\n ok: response.ok,\n status: response.status,\n svg: svg && svg.tagName.toLowerCase() === \"svg\" ? svg.outerHTML : \"\"\n };\n } else {\n return {\n ok: response.ok,\n status: response.status,\n svg: null\n };\n }\n });\n iconFiles.set(url, request);\n return request;\n }\n};\n\nexport {\n requestIcon\n};\n","import {\n n\n} from \"./chunk.VTPVAM7N.js\";\nimport {\n getIconLibrary,\n unwatchIcon,\n watchIcon\n} from \"./chunk.AF62ZLUK.js\";\nimport {\n requestIcon\n} from \"./chunk.7GTYP37T.js\";\nimport {\n watch\n} from \"./chunk.SUD4FHJ4.js\";\nimport {\n event\n} from \"./chunk.NVGUFQGY.js\";\nimport {\n r\n} from \"./chunk.QXBOLCLQ.js\";\nimport {\n s\n} from \"./chunk.VSJN236Y.js\";\nimport {\n e\n} from \"./chunk.T6M3ZU4B.js\";\nimport {\n __decorate,\n n as n2,\n o,\n p,\n s as s2\n} from \"./chunk.SXOXLYUK.js\";\n\n// node_modules/lit-html/directives/unsafe-svg.js\n/**\n * @license\n * Copyright (c) 2017 The Polymer Project Authors. All rights reserved.\n * This code may only be used under the BSD style license found at\n * http://polymer.github.io/LICENSE.txt\n * The complete set of authors may be found at\n * http://polymer.github.io/AUTHORS.txt\n * The complete set of contributors may be found at\n * http://polymer.github.io/CONTRIBUTORS.txt\n * Code distributed by Google as part of the polymer project is also\n * subject to an additional IP rights grant found at\n * http://polymer.github.io/PATENTS.txt\n */\nvar t = class extends n {\n};\nt.directiveName = \"unsafeSVG\", t.resultType = 2;\nvar o2 = s(t);\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/icon/icon.scss\nvar icon_default = \":host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n:host {\\n display: inline-block;\\n width: 1em;\\n height: 1em;\\n contain: strict;\\n box-sizing: content-box !important;\\n}\\n\\n.icon,\\nsvg {\\n display: block;\\n height: 100%;\\n width: 100%;\\n}\";\n\n// src/components/icon/icon.ts\nvar parser = new DOMParser();\nvar SlIcon = class extends o {\n constructor() {\n super(...arguments);\n this.svg = \"\";\n this.library = \"default\";\n }\n connectedCallback() {\n super.connectedCallback();\n watchIcon(this);\n }\n firstUpdated() {\n this.setIcon();\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n unwatchIcon(this);\n }\n getLabel() {\n let label = \"\";\n if (this.label) {\n label = this.label;\n } else if (this.name) {\n label = this.name.replace(/-/g, \" \");\n } else if (this.src) {\n label = this.src.replace(/.*\\//, \"\").replace(/-/g, \" \").replace(/\\.svg/i, \"\");\n }\n return label;\n }\n getUrl() {\n const library = getIconLibrary(this.library);\n if (this.name && library) {\n return library.resolver(this.name);\n } else {\n return this.src;\n }\n }\n redraw() {\n this.setIcon();\n }\n async setIcon() {\n const library = getIconLibrary(this.library);\n const url = this.getUrl();\n if (url) {\n try {\n const file = await requestIcon(url);\n if (url !== this.getUrl()) {\n return;\n } else if (file.ok) {\n const doc = parser.parseFromString(file.svg, \"text/html\");\n const svgEl = doc.body.querySelector(\"svg\");\n if (svgEl) {\n if (library && library.mutator) {\n library.mutator(svgEl);\n }\n this.svg = svgEl.outerHTML;\n this.slLoad.emit();\n } else {\n this.svg = \"\";\n this.slError.emit({detail: {status: file.status}});\n }\n } else {\n this.svg = \"\";\n this.slError.emit({detail: {status: file.status}});\n }\n } catch (e2) {\n this.slError.emit({detail: {status: -1}});\n }\n } else if (this.svg) {\n this.svg = \"\";\n }\n }\n handleChange() {\n this.setIcon();\n }\n render() {\n return p`
${o2(this.svg)}
`;\n }\n};\nSlIcon.styles = s2(icon_default);\n__decorate([\n r()\n], SlIcon.prototype, \"svg\", 2);\n__decorate([\n e()\n], SlIcon.prototype, \"name\", 2);\n__decorate([\n e()\n], SlIcon.prototype, \"src\", 2);\n__decorate([\n e()\n], SlIcon.prototype, \"label\", 2);\n__decorate([\n e()\n], SlIcon.prototype, \"library\", 2);\n__decorate([\n event(\"sl-load\")\n], SlIcon.prototype, \"slLoad\", 2);\n__decorate([\n event(\"sl-error\")\n], SlIcon.prototype, \"slError\", 2);\n__decorate([\n watch(\"name\"),\n watch(\"src\"),\n watch(\"library\")\n], SlIcon.prototype, \"setIcon\", 1);\nSlIcon = __decorate([\n n2(\"sl-icon\")\n], SlIcon);\nvar icon_default2 = SlIcon;\n\nexport {\n icon_default2 as icon_default\n};\n","import {\n o\n} from \"./chunk.SA3KMFF3.js\";\nimport {\n r\n} from \"./chunk.QXBOLCLQ.js\";\nimport {\n i\n} from \"./chunk.5D6J5A4S.js\";\nimport {\n i as i2\n} from \"./chunk.BMRAUHVW.js\";\nimport {\n e\n} from \"./chunk.T6M3ZU4B.js\";\nimport {\n __decorate,\n n,\n o as o2,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/menu-item/menu-item.scss\nvar menu_item_default = \":host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n:host {\\n display: block;\\n}\\n\\n.menu-item {\\n position: relative;\\n display: flex;\\n align-items: stretch;\\n font-family: var(--sl-font-sans);\\n font-size: var(--sl-font-size-medium);\\n font-weight: var(--sl-font-weight-normal);\\n line-height: var(--sl-line-height-normal);\\n letter-spacing: var(--sl-letter-spacing-normal);\\n text-align: left;\\n color: var(--sl-color-gray-700);\\n padding: var(--sl-spacing-xx-small) var(--sl-spacing-x-large);\\n transition: var(--sl-transition-fast) fill;\\n user-select: none;\\n white-space: nowrap;\\n cursor: pointer;\\n}\\n.menu-item.menu-item--focused:not(.menu-item--disabled) {\\n outline: none;\\n background-color: var(--sl-color-primary-500);\\n color: var(--sl-color-white);\\n}\\n.menu-item.menu-item--disabled {\\n outline: none;\\n color: var(--sl-color-gray-400);\\n cursor: not-allowed;\\n}\\n.menu-item .menu-item__label {\\n flex: 1 1 auto;\\n}\\n.menu-item .menu-item__prefix {\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n}\\n.menu-item .menu-item__prefix ::slotted(*) {\\n margin-right: var(--sl-spacing-x-small);\\n}\\n.menu-item .menu-item__suffix {\\n flex: 0 0 auto;\\n display: flex;\\n align-items: center;\\n}\\n.menu-item .menu-item__suffix ::slotted(*) {\\n margin-left: var(--sl-spacing-x-small);\\n}\\n\\n.menu-item .menu-item__check {\\n display: flex;\\n position: absolute;\\n left: 0.5em;\\n top: calc(50% - 0.5em);\\n visibility: hidden;\\n align-items: center;\\n font-size: inherit;\\n}\\n\\n.menu-item--checked .menu-item__check {\\n visibility: visible;\\n}\";\n\n// src/components/menu-item/menu-item.ts\nvar SlMenuItem = class extends o2 {\n constructor() {\n super(...arguments);\n this.hasFocus = false;\n this.checked = false;\n this.value = \"\";\n this.disabled = false;\n }\n focus(options) {\n this.menuItem.focus(options);\n }\n blur() {\n this.menuItem.blur();\n }\n handleBlur() {\n this.hasFocus = false;\n }\n handleFocus() {\n this.hasFocus = true;\n }\n handleMouseEnter() {\n this.focus();\n }\n handleMouseLeave() {\n this.blur();\n }\n render() {\n return p`\n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n `;\n }\n};\nSlMenuItem.styles = s(menu_item_default);\n__decorate([\n i2(\".menu-item\")\n], SlMenuItem.prototype, \"menuItem\", 2);\n__decorate([\n r()\n], SlMenuItem.prototype, \"hasFocus\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlMenuItem.prototype, \"checked\", 2);\n__decorate([\n e()\n], SlMenuItem.prototype, \"value\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlMenuItem.prototype, \"disabled\", 2);\nSlMenuItem = __decorate([\n n(\"sl-menu-item\")\n], SlMenuItem);\nvar menu_item_default2 = SlMenuItem;\n\nexport {\n menu_item_default2 as menu_item_default\n};\n","import {\n __decorate,\n n,\n o,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/menu-label/menu-label.scss\nvar menu_label_default = \":host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n:host {\\n display: block;\\n}\\n\\n.menu-label {\\n font-family: var(--sl-font-sans);\\n font-size: var(--sl-font-size-small);\\n font-weight: var(--sl-font-weight-normal);\\n line-height: var(--sl-line-height-normal);\\n letter-spacing: var(--sl-letter-spacing-normal);\\n color: var(--sl-color-gray-400);\\n padding: var(--sl-spacing-xx-small) var(--sl-spacing-x-large);\\n user-select: none;\\n}\";\n\n// src/components/menu-label/menu-label.ts\nvar SlMenuLabel = class extends o {\n render() {\n return p`\n
\n \n
\n `;\n }\n};\nSlMenuLabel.styles = s(menu_label_default);\nSlMenuLabel = __decorate([\n n(\"sl-menu-label\")\n], SlMenuLabel);\nvar menu_label_default2 = SlMenuLabel;\n\nexport {\n menu_label_default2 as menu_label_default\n};\n","import {\n getTextContent\n} from \"./chunk.U2XCTTGK.js\";\nimport {\n event\n} from \"./chunk.NVGUFQGY.js\";\nimport {\n i\n} from \"./chunk.BMRAUHVW.js\";\nimport {\n __decorate,\n n,\n o,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/menu/menu.scss\nvar menu_default = \":host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n:host {\\n display: block;\\n}\\n\\n.menu {\\n padding: var(--sl-spacing-x-small) 0;\\n}\\n.menu:focus {\\n outline: none;\\n}\";\n\n// src/components/menu/menu.ts\nvar SlMenu = class extends o {\n constructor() {\n super(...arguments);\n this.typeToSelectString = \"\";\n }\n typeToSelect(key) {\n clearTimeout(this.typeToSelectTimeout);\n this.typeToSelectTimeout = setTimeout(() => this.typeToSelectString = \"\", 750);\n this.typeToSelectString += key.toLowerCase();\n const items = this.getItems();\n for (const item of items) {\n const slot = item.shadowRoot.querySelector(\"slot:not([name])\");\n const label = getTextContent(slot).toLowerCase().trim();\n if (label.substring(0, this.typeToSelectString.length) === this.typeToSelectString) {\n item.focus();\n break;\n }\n }\n }\n getItems() {\n const slot = this.menu.querySelector(\"slot\");\n return [...slot.assignedElements({flatten: true})].filter((el) => el.tagName.toLowerCase() === \"sl-menu-item\" && !el.disabled);\n }\n getActiveItem() {\n return this.getItems().filter((i2) => i2.shadowRoot.querySelector(\".menu-item--focused\"))[0];\n }\n setActiveItem(item) {\n item.focus();\n }\n handleClick(event2) {\n const target = event2.target;\n const item = target.closest(\"sl-menu-item\");\n if (item && !item.disabled) {\n this.slSelect.emit({detail: {item}});\n }\n }\n handleKeyDown(event2) {\n if (event2.key === \"Enter\") {\n const item = this.getActiveItem();\n event2.preventDefault();\n if (item) {\n this.slSelect.emit({detail: {item}});\n }\n }\n if (event2.key === \" \") {\n event2.preventDefault();\n }\n if ([\"ArrowDown\", \"ArrowUp\", \"Home\", \"End\"].includes(event2.key)) {\n const items = this.getItems();\n const selectedItem = this.getActiveItem();\n let index = selectedItem ? items.indexOf(selectedItem) : 0;\n if (items.length) {\n event2.preventDefault();\n if (event2.key === \"ArrowDown\") {\n index++;\n } else if (event2.key === \"ArrowUp\") {\n index--;\n } else if (event2.key === \"Home\") {\n index = 0;\n } else if (event2.key === \"End\") {\n index = items.length - 1;\n }\n if (index < 0)\n index = 0;\n if (index > items.length - 1)\n index = items.length - 1;\n this.setActiveItem(items[index]);\n return;\n }\n }\n this.typeToSelect(event2.key);\n }\n render() {\n return p`\n
\n \n
\n `;\n }\n};\nSlMenu.styles = s(menu_default);\n__decorate([\n i(\".menu\")\n], SlMenu.prototype, \"menu\", 2);\n__decorate([\n event(\"sl-select\")\n], SlMenu.prototype, \"slSelect\", 2);\nSlMenu = __decorate([\n n(\"sl-menu\")\n], SlMenu);\nvar menu_default2 = SlMenu;\n\nexport {\n menu_default2 as menu_default\n};\n","import {\n watch\n} from \"./chunk.SUD4FHJ4.js\";\nimport {\n i\n} from \"./chunk.BMRAUHVW.js\";\nimport {\n e\n} from \"./chunk.T6M3ZU4B.js\";\nimport {\n __decorate,\n n,\n o,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/progress-ring/progress-ring.scss\nvar progress_ring_default = \":host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n/**\\n * @prop --track-color: The track color.\\n * @prop --indicator-color: The indicator color.\\n */\\n:host {\\n --track-color: var(--sl-color-gray-200);\\n --indicator-color: var(--sl-color-primary-500);\\n display: inline-flex;\\n}\\n\\n.progress-ring {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n position: relative;\\n}\\n\\n.progress-ring__image {\\n transform: rotate(-90deg);\\n transform-origin: 50% 50%;\\n}\\n\\n.progress-ring__track {\\n stroke: var(--track-color);\\n}\\n\\n.progress-ring__indicator {\\n stroke: var(--indicator-color);\\n transition: 0.35s stroke-dashoffset, 0.35s stroke;\\n}\\n\\n.progress-ring__label {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n text-align: center;\\n user-select: none;\\n}\";\n\n// src/components/progress-ring/progress-ring.ts\nvar SlProgressRing = class extends o {\n constructor() {\n super(...arguments);\n this.size = 128;\n this.strokeWidth = 4;\n }\n firstUpdated() {\n this.updateProgress();\n }\n handlePercentageChange() {\n this.updateProgress();\n }\n updateProgress() {\n const radius = this.indicator.r.baseVal.value;\n const circumference = radius * 2 * Math.PI;\n const offset = circumference - this.percentage / 100 * circumference;\n this.indicator.style.strokeDasharray = `${circumference} ${circumference}`;\n this.indicator.style.strokeDashoffset = `${offset}`;\n }\n render() {\n return p`\n
\n \n \n\n \n \n\n \n \n \n
\n `;\n }\n};\nSlProgressRing.styles = s(progress_ring_default);\n__decorate([\n i(\".progress-ring__indicator\")\n], SlProgressRing.prototype, \"indicator\", 2);\n__decorate([\n e({type: Number})\n], SlProgressRing.prototype, \"size\", 2);\n__decorate([\n e({attribute: \"stroke-width\", type: Number})\n], SlProgressRing.prototype, \"strokeWidth\", 2);\n__decorate([\n e({type: Number, reflect: true})\n], SlProgressRing.prototype, \"percentage\", 2);\n__decorate([\n watch(\"percentage\")\n], SlProgressRing.prototype, \"handlePercentageChange\", 1);\nSlProgressRing = __decorate([\n n(\"sl-progress-ring\")\n], SlProgressRing);\nvar progress_ring_default2 = SlProgressRing;\n\nexport {\n progress_ring_default2 as progress_ring_default\n};\n","import {\n getLabelledBy,\n renderFormControl\n} from \"./chunk.DVMX54UT.js\";\nimport {\n watch\n} from \"./chunk.SUD4FHJ4.js\";\nimport {\n hasSlot\n} from \"./chunk.PCLPGKVT.js\";\nimport {\n o\n} from \"./chunk.SA3KMFF3.js\";\nimport {\n event\n} from \"./chunk.NVGUFQGY.js\";\nimport {\n r\n} from \"./chunk.QXBOLCLQ.js\";\nimport {\n i\n} from \"./chunk.5D6J5A4S.js\";\nimport {\n i as i2\n} from \"./chunk.BMRAUHVW.js\";\nimport {\n e\n} from \"./chunk.T6M3ZU4B.js\";\nimport {\n __decorate,\n n,\n o as o2,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/range/range.scss\nvar range_default = ':host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n.form-control .form-control__label {\\n display: none;\\n}\\n.form-control .form-control__help-text {\\n display: none;\\n}\\n\\n.form-control--has-label .form-control__label {\\n display: inline-block;\\n color: var(--sl-input-label-color);\\n margin-bottom: var(--sl-spacing-xxx-small);\\n}\\n.form-control--has-label.form-control--small .form-control__label {\\n font-size: var(--sl-input-label-font-size-small);\\n}\\n.form-control--has-label.form-control--medium .form-control__label {\\n font-size: var(--sl-input-label-font-size-medium);\\n}\\n.form-control--has-label.form-control--large .form-control_label {\\n font-size: var(--sl-input-label-font-size-large);\\n}\\n\\n.form-control--has-help-text .form-control__help-text {\\n display: block;\\n color: var(--sl-input-help-text-color);\\n}\\n.form-control--has-help-text .form-control__help-text ::slotted(*) {\\n margin-top: var(--sl-spacing-xxx-small);\\n}\\n.form-control--has-help-text.form-control--small .form-control__help-text {\\n font-size: var(--sl-input-help-text-font-size-small);\\n}\\n.form-control--has-help-text.form-control--medium .form-control__help-text {\\n font-size: var(--sl-input-help-text-font-size-medium);\\n}\\n.form-control--has-help-text.form-control--large .form-control__help-text {\\n font-size: var(--sl-input-help-text-font-size-large);\\n}\\n\\n:host {\\n --thumb-size: 20px;\\n --tooltip-offset-y: 10px;\\n --track-color: var(--sl-color-gray-200);\\n --track-height: 6px;\\n display: block;\\n}\\n\\n.range {\\n position: relative;\\n}\\n.range .range__control {\\n -webkit-appearance: none;\\n width: 100%;\\n height: var(--sl-input-height-medium);\\n background: transparent;\\n line-height: var(--sl-input-height-medium);\\n vertical-align: middle;\\n}\\n.range .range__control::-webkit-slider-runnable-track {\\n width: 100%;\\n height: var(--track-height);\\n background-color: var(--track-color);\\n border-radius: 3px;\\n border: none;\\n}\\n.range .range__control::-webkit-slider-thumb {\\n border: none;\\n width: var(--thumb-size);\\n height: var(--thumb-size);\\n border-radius: 50%;\\n background-color: var(--sl-color-primary-500);\\n border: solid var(--sl-input-border-width) var(--sl-color-primary-500);\\n -webkit-appearance: none;\\n margin-top: calc(var(--thumb-size) / -2 + var(--track-height) / 2);\\n transition: var(--sl-transition-fast) border-color, var(--sl-transition-fast) background-color, var(--sl-transition-fast) color, var(--sl-transition-fast) box-shadow, var(--sl-transition-fast) transform;\\n cursor: pointer;\\n}\\n.range .range__control:not(:disabled)::-webkit-slider-thumb:hover {\\n background-color: var(--sl-color-primary-400);\\n border-color: var(--sl-color-primary-400);\\n}\\n.range .range__control:not(:disabled):focus::-webkit-slider-thumb {\\n background-color: var(--sl-color-primary-400);\\n border-color: var(--sl-color-primary-400);\\n box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-primary);\\n}\\n.range .range__control:not(:disabled)::-webkit-slider-thumb:active {\\n background-color: var(--sl-color-primary-500);\\n border-color: var(--sl-color-primary-500);\\n cursor: grabbing;\\n}\\n.range .range__control::-moz-focus-outer {\\n border: 0;\\n}\\n.range .range__control::-moz-range-track {\\n width: 100%;\\n height: var(--track-height);\\n background-color: var(--track-color);\\n border-radius: 3px;\\n border: none;\\n}\\n.range .range__control::-moz-range-thumb {\\n border: none;\\n height: var(--thumb-size);\\n width: var(--thumb-size);\\n border-radius: 50%;\\n background-color: var(--sl-color-primary-500);\\n border-color: var(--sl-color-primary-500);\\n transition: var(--sl-transition-fast) border-color, var(--sl-transition-fast) background-color, var(--sl-transition-fast) color, var(--sl-transition-fast) box-shadow, var(--sl-transition-fast) transform;\\n cursor: pointer;\\n}\\n.range .range__control:not(:disabled)::-moz-range-thumb:hover {\\n background-color: var(--sl-color-primary-400);\\n border-color: var(--sl-color-primary-400);\\n}\\n.range .range__control:not(:disabled):focus::-moz-range-thumb {\\n background-color: var(--sl-color-primary-400);\\n border-color: var(--sl-color-primary-400);\\n box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-primary);\\n}\\n.range .range__control:not(:disabled)::-moz-range-thumb:active {\\n background-color: var(--sl-color-primary-600);\\n border-color: var(--sl-color-primary-600);\\n cursor: grabbing;\\n}\\n.range .range__control:focus {\\n outline: none;\\n}\\n.range .range__control:disabled {\\n opacity: 0.5;\\n}\\n.range .range__control:disabled::-webkit-slider-thumb {\\n cursor: not-allowed;\\n}\\n.range .range__control:disabled::-moz-range-thumb {\\n cursor: not-allowed;\\n}\\n\\n.range__tooltip {\\n position: absolute;\\n z-index: var(--sl-z-index-tooltip);\\n left: 1px;\\n border-radius: var(--sl-tooltip-border-radius);\\n background-color: var(--sl-tooltip-background-color);\\n font-family: var(--sl-tooltip-font-family);\\n font-size: var(--sl-tooltip-font-size);\\n font-weight: var(--sl-tooltip-font-weight);\\n line-height: var(--sl-tooltip-line-height);\\n color: var(--sl-tooltip-color);\\n opacity: 0;\\n padding: var(--sl-tooltip-padding);\\n transition: var(--sl-transition-fast) opacity;\\n pointer-events: none;\\n}\\n.range__tooltip:after {\\n content: \"\";\\n position: absolute;\\n width: 0;\\n height: 0;\\n left: 50%;\\n margin-left: calc(-1 * var(--sl-tooltip-arrow-size));\\n}\\n\\n.range--tooltip-visible .range__tooltip {\\n opacity: 1;\\n}\\n\\n.range--tooltip-top .range__tooltip {\\n top: calc(-1 * var(--thumb-size) - var(--tooltip-offset-y));\\n}\\n.range--tooltip-top .range__tooltip:after {\\n border-top: var(--sl-tooltip-arrow-size) solid var(--sl-tooltip-background-color);\\n border-left: var(--sl-tooltip-arrow-size) solid transparent;\\n border-right: var(--sl-tooltip-arrow-size) solid transparent;\\n top: 100%;\\n}\\n\\n.range--tooltip-bottom .range__tooltip {\\n bottom: calc(-1 * var(--thumb-size) - var(--tooltip-offset-y));\\n}\\n.range--tooltip-bottom .range__tooltip:after {\\n border-bottom: var(--sl-tooltip-arrow-size) solid var(--sl-tooltip-background-color);\\n border-left: var(--sl-tooltip-arrow-size) solid transparent;\\n border-right: var(--sl-tooltip-arrow-size) solid transparent;\\n bottom: 100%;\\n}';\n\n// src/components/range/range.ts\nvar id = 0;\nvar SlRange = class extends o2 {\n constructor() {\n super(...arguments);\n this.inputId = `input-${++id}`;\n this.helpTextId = `input-help-text-${id}`;\n this.labelId = `input-label-${id}`;\n this.hasFocus = false;\n this.hasHelpTextSlot = false;\n this.hasLabelSlot = false;\n this.hasTooltip = false;\n this.name = \"\";\n this.value = 0;\n this.label = \"\";\n this.helpText = \"\";\n this.disabled = false;\n this.invalid = false;\n this.min = 0;\n this.max = 100;\n this.step = 1;\n this.tooltip = \"top\";\n this.tooltipFormatter = (value) => value.toString();\n }\n connectedCallback() {\n super.connectedCallback();\n this.handleSlotChange = this.handleSlotChange.bind(this);\n this.shadowRoot.addEventListener(\"slotchange\", this.handleSlotChange);\n if (this.value === void 0 || this.value === null)\n this.value = this.min;\n if (this.value < this.min)\n this.value = this.min;\n if (this.value > this.max)\n this.value = this.max;\n this.handleSlotChange();\n }\n firstUpdated() {\n this.syncTooltip();\n this.resizeObserver = new ResizeObserver(() => this.syncTooltip());\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.shadowRoot.removeEventListener(\"slotchange\", this.handleSlotChange);\n }\n focus(options) {\n this.input.focus(options);\n }\n blur() {\n this.input.blur();\n }\n setCustomValidity(message) {\n this.input.setCustomValidity(message);\n this.invalid = !this.input.checkValidity();\n }\n handleInput() {\n this.value = Number(this.input.value);\n this.slChange.emit();\n requestAnimationFrame(() => this.syncTooltip());\n }\n handleBlur() {\n this.hasFocus = false;\n this.hasTooltip = false;\n this.slBlur.emit();\n this.resizeObserver.unobserve(this.input);\n }\n handleFocus() {\n this.hasFocus = true;\n this.hasTooltip = true;\n this.slFocus.emit();\n this.resizeObserver.observe(this.input);\n }\n handleSlotChange() {\n this.hasHelpTextSlot = hasSlot(this, \"help-text\");\n this.hasLabelSlot = hasSlot(this, \"label\");\n }\n handleTouchStart() {\n this.focus();\n }\n syncTooltip() {\n if (this.tooltip !== \"none\") {\n const percent = Math.max(0, (this.value - this.min) / (this.max - this.min));\n const inputWidth = this.input.offsetWidth;\n const tooltipWidth = this.output.offsetWidth;\n const thumbSize = getComputedStyle(this.input).getPropertyValue(\"--thumb-size\");\n const x = `calc(${inputWidth * percent}px - calc(calc(${percent} * ${thumbSize}) - calc(${thumbSize} / 2)))`;\n this.output.style.transform = `translateX(${x})`;\n this.output.style.marginLeft = `-${tooltipWidth / 2}px`;\n }\n }\n render() {\n return renderFormControl({\n inputId: this.inputId,\n label: this.label,\n labelId: this.labelId,\n hasLabelSlot: this.hasLabelSlot,\n helpTextId: this.helpTextId,\n helpText: this.helpText,\n hasHelpTextSlot: this.hasHelpTextSlot,\n size: \"medium\"\n }, p`\n \n \n ${this.tooltip !== \"none\" ? p` ${this.tooltipFormatter(this.value)} ` : \"\"}\n \n `);\n }\n};\nSlRange.styles = s(range_default);\n__decorate([\n i2(\".range__control\")\n], SlRange.prototype, \"input\", 2);\n__decorate([\n i2(\".range__tooltip\")\n], SlRange.prototype, \"output\", 2);\n__decorate([\n r()\n], SlRange.prototype, \"hasFocus\", 2);\n__decorate([\n r()\n], SlRange.prototype, \"hasHelpTextSlot\", 2);\n__decorate([\n r()\n], SlRange.prototype, \"hasLabelSlot\", 2);\n__decorate([\n r()\n], SlRange.prototype, \"hasTooltip\", 2);\n__decorate([\n e()\n], SlRange.prototype, \"name\", 2);\n__decorate([\n e({type: Number})\n], SlRange.prototype, \"value\", 2);\n__decorate([\n e()\n], SlRange.prototype, \"label\", 2);\n__decorate([\n e({attribute: \"help-text\"})\n], SlRange.prototype, \"helpText\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlRange.prototype, \"disabled\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlRange.prototype, \"invalid\", 2);\n__decorate([\n e({type: Number})\n], SlRange.prototype, \"min\", 2);\n__decorate([\n e({type: Number})\n], SlRange.prototype, \"max\", 2);\n__decorate([\n e({type: Number})\n], SlRange.prototype, \"step\", 2);\n__decorate([\n e()\n], SlRange.prototype, \"tooltip\", 2);\n__decorate([\n e()\n], SlRange.prototype, \"tooltipFormatter\", 2);\n__decorate([\n event(\"sl-change\")\n], SlRange.prototype, \"slChange\", 2);\n__decorate([\n event(\"sl-blur\")\n], SlRange.prototype, \"slBlur\", 2);\n__decorate([\n event(\"sl-focus\")\n], SlRange.prototype, \"slFocus\", 2);\n__decorate([\n watch(\"label\"),\n watch(\"helpText\")\n], SlRange.prototype, \"handleSlotChange\", 1);\nSlRange = __decorate([\n n(\"sl-range\")\n], SlRange);\nvar range_default2 = SlRange;\n\nexport {\n range_default2 as range_default\n};\n","import {\n event\n} from \"./chunk.NVGUFQGY.js\";\nimport {\n __decorate,\n n,\n o,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/resize-observer/resize-observer.scss\nvar resize_observer_default = \":host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n:host {\\n display: contents;\\n}\";\n\n// src/components/resize-observer/resize-observer.ts\nvar SlResizeObserver = class extends o {\n constructor() {\n super(...arguments);\n this.observedElements = [];\n }\n connectedCallback() {\n super.connectedCallback();\n this.resizeObserver = new ResizeObserver((entries) => {\n this.slResize.emit({detail: {entries}});\n });\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.resizeObserver.disconnect();\n }\n handleSlotChange() {\n const slot = this.shadowRoot.querySelector(\"slot\");\n const elements = slot.assignedElements({flatten: true});\n this.observedElements.map((el) => this.resizeObserver.unobserve(el));\n this.observedElements = [];\n elements.map((el) => {\n this.resizeObserver.observe(el);\n this.observedElements.push(el);\n });\n }\n render() {\n return p` `;\n }\n};\nSlResizeObserver.styles = s(resize_observer_default);\n__decorate([\n event(\"sl-resize\")\n], SlResizeObserver.prototype, \"slResize\", 2);\nSlResizeObserver = __decorate([\n n(\"sl-resize-observer\")\n], SlResizeObserver);\nvar resize_observer_default2 = SlResizeObserver;\n\nexport {\n resize_observer_default2 as resize_observer_default\n};\n","import {\n getLabelledBy,\n renderFormControl\n} from \"./chunk.DVMX54UT.js\";\nimport {\n getTextContent\n} from \"./chunk.U2XCTTGK.js\";\nimport {\n watch\n} from \"./chunk.SUD4FHJ4.js\";\nimport {\n hasSlot\n} from \"./chunk.PCLPGKVT.js\";\nimport {\n o\n} from \"./chunk.SA3KMFF3.js\";\nimport {\n event\n} from \"./chunk.NVGUFQGY.js\";\nimport {\n r\n} from \"./chunk.QXBOLCLQ.js\";\nimport {\n i\n} from \"./chunk.5D6J5A4S.js\";\nimport {\n i as i2\n} from \"./chunk.BMRAUHVW.js\";\nimport {\n e\n} from \"./chunk.T6M3ZU4B.js\";\nimport {\n __decorate,\n n,\n o as o2,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/select/select.scss\nvar select_default = \":host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n.form-control .form-control__label {\\n display: none;\\n}\\n.form-control .form-control__help-text {\\n display: none;\\n}\\n\\n.form-control--has-label .form-control__label {\\n display: inline-block;\\n color: var(--sl-input-label-color);\\n margin-bottom: var(--sl-spacing-xxx-small);\\n}\\n.form-control--has-label.form-control--small .form-control__label {\\n font-size: var(--sl-input-label-font-size-small);\\n}\\n.form-control--has-label.form-control--medium .form-control__label {\\n font-size: var(--sl-input-label-font-size-medium);\\n}\\n.form-control--has-label.form-control--large .form-control_label {\\n font-size: var(--sl-input-label-font-size-large);\\n}\\n\\n.form-control--has-help-text .form-control__help-text {\\n display: block;\\n color: var(--sl-input-help-text-color);\\n}\\n.form-control--has-help-text .form-control__help-text ::slotted(*) {\\n margin-top: var(--sl-spacing-xxx-small);\\n}\\n.form-control--has-help-text.form-control--small .form-control__help-text {\\n font-size: var(--sl-input-help-text-font-size-small);\\n}\\n.form-control--has-help-text.form-control--medium .form-control__help-text {\\n font-size: var(--sl-input-help-text-font-size-medium);\\n}\\n.form-control--has-help-text.form-control--large .form-control__help-text {\\n font-size: var(--sl-input-help-text-font-size-large);\\n}\\n\\n/**\\n * @prop --focus-ring: The focus ring style to use when the control receives focus, a `box-shadow` property.\\n */\\n:host {\\n --focus-ring: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-primary);\\n display: block;\\n}\\n\\n.select {\\n display: block;\\n}\\n\\n.select__box {\\n display: inline-flex;\\n align-items: center;\\n justify-content: start;\\n position: relative;\\n width: 100%;\\n font-family: var(--sl-input-font-family);\\n font-weight: var(--sl-input-font-weight);\\n letter-spacing: var(--sl-input-letter-spacing);\\n background-color: var(--sl-input-background-color);\\n border: solid var(--sl-input-border-width) var(--sl-input-border-color);\\n vertical-align: middle;\\n overflow: hidden;\\n transition: var(--sl-transition-fast) color, var(--sl-transition-fast) border, var(--sl-transition-fast) box-shadow;\\n cursor: pointer;\\n}\\n\\n.select:not(.select--disabled) .select__box:hover {\\n background-color: var(--sl-input-background-color-hover);\\n border-color: var(--sl-input-border-color-hover);\\n color: var(--sl-input-color-hover);\\n}\\n\\n.select:not(.select--disabled) .select__box:focus {\\n background-color: var(--sl-input-background-color-focus);\\n border-color: var(--sl-input-border-color-focus);\\n box-shadow: var(--focus-ring);\\n outline: none;\\n color: var(--sl-input-color-focus);\\n}\\n\\n.select--disabled .select__box {\\n background-color: var(--sl-input-background-color-disabled);\\n border-color: var(--sl-input-border-color-disabled);\\n color: var(--sl-input-color-disabled);\\n opacity: 0.5;\\n cursor: not-allowed;\\n outline: none;\\n}\\n.select--disabled .select__tags,\\n.select--disabled .select__clear {\\n pointer-events: none;\\n}\\n\\n.select__label {\\n flex: 1 1 auto;\\n display: flex;\\n align-items: center;\\n user-select: none;\\n scrollbar-width: none;\\n -ms-overflow-style: none;\\n overflow-x: auto;\\n overflow-y: hidden;\\n white-space: nowrap;\\n}\\n.select__label::-webkit-scrollbar {\\n width: 0;\\n height: 0;\\n}\\n\\n.select__clear {\\n flex: 0 0 auto;\\n}\\n\\n.select__icon {\\n flex: 0 0 auto;\\n display: inline-flex;\\n transition: var(--sl-transition-medium) transform ease;\\n}\\n\\n.select--open .select__icon {\\n transform: rotate(-180deg);\\n}\\n\\n.select--placeholder-visible .select__label {\\n color: var(--sl-input-placeholder-color);\\n}\\n\\n.select--disabled.select--placeholder-visible .select__label {\\n color: var(--sl-input-placeholder-color-disabled);\\n}\\n\\n.select__tags {\\n display: inline-flex;\\n align-items: center;\\n flex-wrap: wrap;\\n justify-content: left;\\n margin-left: var(--sl-spacing-xx-small);\\n}\\n\\n.select__hidden-select {\\n clip: rect(0 0 0 0);\\n clip-path: inset(50%);\\n height: 1px;\\n overflow: hidden;\\n position: absolute;\\n white-space: nowrap;\\n width: 1px;\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n}\\n\\n.select--small .select__box {\\n border-radius: var(--sl-input-border-radius-small);\\n font-size: var(--sl-input-font-size-small);\\n min-height: var(--sl-input-height-small);\\n}\\n.select--small .select__label {\\n margin: 0 var(--sl-input-spacing-small);\\n}\\n.select--small .select__clear {\\n margin-right: var(--sl-input-spacing-small);\\n}\\n.select--small .select__icon {\\n margin-right: var(--sl-input-spacing-small);\\n}\\n.select--small .select__tags {\\n padding-bottom: 2px;\\n}\\n.select--small .select__tags sl-tag {\\n padding-top: 2px;\\n}\\n.select--small .select__tags sl-tag:not(:last-of-type) {\\n margin-right: var(--sl-spacing-xx-small);\\n}\\n.select--small.select--has-tags .select__label {\\n margin-left: 0;\\n}\\n\\n.select--medium .select__box {\\n border-radius: var(--sl-input-border-radius-medium);\\n font-size: var(--sl-input-font-size-medium);\\n min-height: var(--sl-input-height-medium);\\n}\\n.select--medium .select__label {\\n margin: 0 var(--sl-input-spacing-medium);\\n}\\n.select--medium .select__clear {\\n margin-right: var(--sl-input-spacing-medium);\\n}\\n.select--medium .select__icon {\\n margin-right: var(--sl-input-spacing-medium);\\n}\\n.select--medium .select__tags {\\n padding-bottom: 3px;\\n}\\n.select--medium .select__tags sl-tag {\\n padding-top: 3px;\\n}\\n.select--medium .select__tags sl-tag:not(:last-of-type) {\\n margin-right: var(--sl-spacing-xx-small);\\n}\\n.select--medium.select--has-tags .select__label {\\n margin-left: 0;\\n}\\n\\n.select--large .select__box {\\n border-radius: var(--sl-input-border-radius-large);\\n font-size: var(--sl-input-font-size-large);\\n min-height: var(--sl-input-height-large);\\n}\\n.select--large .select__label {\\n margin: 0 var(--sl-input-spacing-large);\\n}\\n.select--large .select__clear {\\n margin-right: var(--sl-input-spacing-large);\\n}\\n.select--large .select__icon {\\n margin-right: var(--sl-input-spacing-large);\\n}\\n.select--large .select__tags {\\n padding-bottom: 4px;\\n}\\n.select--large .select__tags sl-tag {\\n padding-top: 4px;\\n}\\n.select--large .select__tags sl-tag:not(:last-of-type) {\\n margin-right: var(--sl-spacing-xx-small);\\n}\\n.select--large.select--has-tags .select__label {\\n margin-left: 0;\\n}\\n\\n.select--pill.select--small .select__box {\\n border-radius: var(--sl-input-height-small);\\n}\\n.select--pill.select--medium .select__box {\\n border-radius: var(--sl-input-height-medium);\\n}\\n.select--pill.select--large .select__box {\\n border-radius: var(--sl-input-height-large);\\n}\";\n\n// src/components/select/select.ts\nvar id = 0;\nvar SlSelect = class extends o2 {\n constructor() {\n super(...arguments);\n this.inputId = `select-${++id}`;\n this.helpTextId = `select-help-text-${id}`;\n this.labelId = `select-label-${id}`;\n this.hasFocus = false;\n this.hasHelpTextSlot = false;\n this.hasLabelSlot = false;\n this.isOpen = false;\n this.displayLabel = \"\";\n this.displayTags = [];\n this.multiple = false;\n this.maxTagsVisible = 3;\n this.disabled = false;\n this.name = \"\";\n this.placeholder = \"\";\n this.size = \"medium\";\n this.hoist = false;\n this.value = \"\";\n this.pill = false;\n this.required = false;\n this.clearable = false;\n this.invalid = false;\n }\n connectedCallback() {\n super.connectedCallback();\n this.handleSlotChange = this.handleSlotChange.bind(this);\n this.shadowRoot.addEventListener(\"slotchange\", this.handleSlotChange);\n this.handleSlotChange();\n }\n firstUpdated() {\n this.resizeObserver = new ResizeObserver(() => this.resizeMenu());\n this.syncItemsFromValue();\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.shadowRoot.removeEventListener(\"slotchange\", this.handleSlotChange);\n }\n reportValidity() {\n return this.input.reportValidity();\n }\n setCustomValidity(message) {\n this.input.setCustomValidity(message);\n this.invalid = !this.input.checkValidity();\n }\n getItemLabel(item) {\n const slot = item.shadowRoot.querySelector(\"slot:not([name])\");\n return getTextContent(slot);\n }\n getItems() {\n return [...this.querySelectorAll(\"sl-menu-item\")];\n }\n getValueAsArray() {\n return Array.isArray(this.value) ? this.value : [this.value];\n }\n handleBlur() {\n this.hasFocus = false;\n this.slBlur.emit();\n }\n handleClearClick(event2) {\n event2.stopPropagation();\n this.value = this.multiple ? [] : \"\";\n this.slClear.emit();\n this.syncItemsFromValue();\n }\n handleDisabledChange() {\n if (this.disabled && this.isOpen) {\n this.dropdown.hide();\n }\n }\n handleFocus() {\n this.hasFocus = true;\n this.slFocus.emit();\n }\n handleKeyDown(event2) {\n const target = event2.target;\n const items = this.getItems();\n const firstItem = items[0];\n const lastItem = items[items.length - 1];\n if (target.tagName.toLowerCase() === \"sl-tag\") {\n return;\n }\n if (event2.key === \"Tab\") {\n if (this.isOpen) {\n this.dropdown.hide();\n }\n return;\n }\n if ([\"ArrowDown\", \"ArrowUp\"].includes(event2.key)) {\n event2.preventDefault();\n if (!this.isOpen) {\n this.dropdown.show();\n }\n if (event2.key === \"ArrowDown\" && firstItem) {\n firstItem.focus();\n return;\n }\n if (event2.key === \"ArrowUp\" && lastItem) {\n lastItem.focus();\n return;\n }\n }\n if (!this.isOpen) {\n event2.stopPropagation();\n event2.preventDefault();\n this.dropdown.show();\n this.menu.typeToSelect(event2.key);\n }\n }\n handleLabelClick() {\n var _a;\n const box = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector(\".select__box\");\n box.focus();\n }\n handleMenuSelect(event2) {\n const item = event2.detail.item;\n if (this.multiple) {\n this.value = this.value.includes(item.value) ? this.value.filter((v) => v !== item.value) : [...this.value, item.value];\n } else {\n this.value = item.value;\n }\n this.syncItemsFromValue();\n }\n handleMenuShow(event2) {\n if (this.disabled) {\n event2.preventDefault();\n return;\n }\n this.resizeMenu();\n this.resizeObserver.observe(this);\n this.isOpen = true;\n }\n handleMenuHide() {\n this.resizeObserver.unobserve(this);\n this.isOpen = false;\n }\n handleMultipleChange() {\n const value = this.getValueAsArray();\n this.value = this.multiple ? value : value[0] || \"\";\n this.syncItemsFromValue();\n }\n async handleSlotChange() {\n this.hasHelpTextSlot = hasSlot(this, \"help-text\");\n this.hasLabelSlot = hasSlot(this, \"label\");\n const items = this.getItems();\n await Promise.all(items.map((item) => item.render)).then(() => this.syncItemsFromValue());\n }\n handleTagInteraction(event2) {\n const path = event2.composedPath();\n const clearButton = path.find((el) => {\n if (el instanceof HTMLElement) {\n const element = el;\n return element.classList.contains(\"tag__clear\");\n }\n return false;\n });\n if (clearButton) {\n event2.stopPropagation();\n }\n }\n handleValueChange() {\n this.syncItemsFromValue();\n this.slChange.emit();\n }\n resizeMenu() {\n var _a;\n const box = (_a = this.shadowRoot) == null ? void 0 : _a.querySelector(\".select__box\");\n this.menu.style.width = `${box.clientWidth}px`;\n if (this.dropdown) {\n this.dropdown.reposition();\n }\n }\n syncItemsFromValue() {\n const items = this.getItems();\n const value = this.getValueAsArray();\n items.map((item) => item.checked = value.includes(item.value));\n if (this.multiple) {\n const checkedItems = items.filter((item) => value.includes(item.value));\n this.displayLabel = checkedItems[0] ? this.getItemLabel(checkedItems[0]) : \"\";\n this.displayTags = checkedItems.map((item) => {\n return p`\n {\n event2.stopPropagation();\n if (!this.disabled) {\n item.checked = false;\n this.syncValueFromItems();\n }\n }}\n >\n ${this.getItemLabel(item)}\n \n `;\n });\n if (this.maxTagsVisible > 0 && this.displayTags.length > this.maxTagsVisible) {\n const total = this.displayTags.length;\n this.displayLabel = \"\";\n this.displayTags = this.displayTags.slice(0, this.maxTagsVisible);\n this.displayTags.push(p`\n +${total - this.maxTagsVisible} \n `);\n }\n } else {\n const checkedItem = items.filter((item) => item.value === value[0])[0];\n this.displayLabel = checkedItem ? this.getItemLabel(checkedItem) : \"\";\n this.displayTags = [];\n }\n }\n syncValueFromItems() {\n const items = this.getItems();\n const checkedItems = items.filter((item) => item.checked);\n const checkedValues = checkedItems.map((item) => item.value);\n if (this.multiple) {\n this.value = this.value.filter((val) => checkedValues.includes(val));\n } else {\n this.value = checkedValues.length > 0 ? checkedValues[0] : \"\";\n }\n }\n render() {\n var _a;\n const hasSelection = this.multiple ? this.value.length > 0 : this.value !== \"\";\n return renderFormControl({\n inputId: this.inputId,\n label: this.label,\n labelId: this.labelId,\n hasLabelSlot: this.hasLabelSlot,\n helpTextId: this.helpTextId,\n helpText: this.helpText,\n hasHelpTextSlot: this.hasHelpTextSlot,\n size: this.size,\n onLabelClick: () => this.handleLabelClick()\n }, p`\n 0,\n \"select--placeholder-visible\": this.displayLabel === \"\",\n \"select--small\": this.size === \"small\",\n \"select--medium\": this.size === \"medium\",\n \"select--large\": this.size === \"large\",\n \"select--pill\": this.pill,\n \"select--invalid\": this.invalid\n })}\n @sl-show=${this.handleMenuShow}\n @sl-hide=${this.handleMenuHide}\n >\n \n
\n ${this.displayTags.length ? p` ${this.displayTags} ` : this.displayLabel || this.placeholder}\n
\n\n ${this.clearable && hasSelection ? p`\n \n ` : \"\"}\n\n \n \n \n\n \n \n \n\n \n \n \n \n `);\n }\n};\nSlSelect.styles = s(select_default);\n__decorate([\n i2(\".select\")\n], SlSelect.prototype, \"dropdown\", 2);\n__decorate([\n i2(\".select__hidden-select\")\n], SlSelect.prototype, \"input\", 2);\n__decorate([\n i2(\".select__menu\")\n], SlSelect.prototype, \"menu\", 2);\n__decorate([\n r()\n], SlSelect.prototype, \"hasFocus\", 2);\n__decorate([\n r()\n], SlSelect.prototype, \"hasHelpTextSlot\", 2);\n__decorate([\n r()\n], SlSelect.prototype, \"hasLabelSlot\", 2);\n__decorate([\n r()\n], SlSelect.prototype, \"isOpen\", 2);\n__decorate([\n r()\n], SlSelect.prototype, \"displayLabel\", 2);\n__decorate([\n r()\n], SlSelect.prototype, \"displayTags\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlSelect.prototype, \"multiple\", 2);\n__decorate([\n e({attribute: \"max-tags-visible\", type: Number})\n], SlSelect.prototype, \"maxTagsVisible\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlSelect.prototype, \"disabled\", 2);\n__decorate([\n e()\n], SlSelect.prototype, \"name\", 2);\n__decorate([\n e()\n], SlSelect.prototype, \"placeholder\", 2);\n__decorate([\n e()\n], SlSelect.prototype, \"size\", 2);\n__decorate([\n e({type: Boolean})\n], SlSelect.prototype, \"hoist\", 2);\n__decorate([\n e()\n], SlSelect.prototype, \"value\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlSelect.prototype, \"pill\", 2);\n__decorate([\n e()\n], SlSelect.prototype, \"label\", 2);\n__decorate([\n e({attribute: \"help-text\"})\n], SlSelect.prototype, \"helpText\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlSelect.prototype, \"required\", 2);\n__decorate([\n e({type: Boolean})\n], SlSelect.prototype, \"clearable\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlSelect.prototype, \"invalid\", 2);\n__decorate([\n event(\"sl-clear\")\n], SlSelect.prototype, \"slClear\", 2);\n__decorate([\n event(\"sl-change\")\n], SlSelect.prototype, \"slChange\", 2);\n__decorate([\n event(\"sl-focus\")\n], SlSelect.prototype, \"slFocus\", 2);\n__decorate([\n event(\"sl-blur\")\n], SlSelect.prototype, \"slBlur\", 2);\n__decorate([\n watch(\"disabled\")\n], SlSelect.prototype, \"handleDisabledChange\", 1);\n__decorate([\n watch(\"multiple\")\n], SlSelect.prototype, \"handleMultipleChange\", 1);\n__decorate([\n watch(\"helpText\"),\n watch(\"label\")\n], SlSelect.prototype, \"handleSlotChange\", 1);\n__decorate([\n watch(\"value\")\n], SlSelect.prototype, \"handleValueChange\", 1);\nSlSelect = __decorate([\n n(\"sl-select\")\n], SlSelect);\nvar select_default2 = SlSelect;\n\nexport {\n select_default2 as select_default\n};\n","import {\n __decorate,\n n,\n o,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/spinner/spinner.scss\nvar spinner_default = \":host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n/**\\n * @prop --track-color: The color of the spinner's track.\\n * @prop --indicator-color: The color of the spinner's indicator.\\n * @prop --stroke-width: The width of the indicator.\\n */\\n:host {\\n --track-color: #0d131e20;\\n --indicator-color: var(--sl-color-primary-500);\\n --stroke-width: 2px;\\n display: inline-flex;\\n}\\n\\n.spinner {\\n display: inline-block;\\n width: 1em;\\n height: 1em;\\n border-radius: 50%;\\n border: solid var(--stroke-width) var(--track-color);\\n border-top-color: var(--indicator-color);\\n border-right-color: var(--indicator-color);\\n animation: 1s linear infinite spin;\\n}\\n\\n@keyframes spin {\\n 0% {\\n transform: rotate(0deg);\\n }\\n 100% {\\n transform: rotate(360deg);\\n }\\n}\";\n\n// src/components/spinner/spinner.ts\nvar SlSpinner = class extends o {\n render() {\n return p` `;\n }\n};\nSlSpinner.styles = s(spinner_default);\nSlSpinner = __decorate([\n n(\"sl-spinner\")\n], SlSpinner);\nvar spinner_default2 = SlSpinner;\n\nexport {\n spinner_default2 as spinner_default\n};\n","import {\n watch\n} from \"./chunk.SUD4FHJ4.js\";\nimport {\n o\n} from \"./chunk.SA3KMFF3.js\";\nimport {\n event\n} from \"./chunk.NVGUFQGY.js\";\nimport {\n r\n} from \"./chunk.QXBOLCLQ.js\";\nimport {\n i\n} from \"./chunk.5D6J5A4S.js\";\nimport {\n i as i2\n} from \"./chunk.BMRAUHVW.js\";\nimport {\n e\n} from \"./chunk.T6M3ZU4B.js\";\nimport {\n __decorate,\n n,\n o as o2,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/switch/switch.scss\nvar switch_default = \":host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n/**\\n * @prop --width: The width of the switch.\\n * @prop --height: The height of the switch.\\n * @prop --thumb-size: The size of the thumb.\\n */\\n:host {\\n --height: var(--sl-toggle-size);\\n --thumb-size: calc(var(--sl-toggle-size) + 4px);\\n --width: calc(var(--height) * 2);\\n display: inline-block;\\n}\\n\\n.switch {\\n display: inline-flex;\\n align-items: center;\\n font-family: var(--sl-input-font-family);\\n font-size: var(--sl-input-font-size-medium);\\n font-weight: var(--sl-input-font-weight);\\n color: var(--sl-input-color);\\n vertical-align: middle;\\n cursor: pointer;\\n}\\n\\n.switch__control {\\n flex: 0 0 auto;\\n position: relative;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n width: var(--width);\\n height: var(--height);\\n background-color: var(--sl-color-gray-300);\\n border: solid var(--sl-input-border-width) var(--sl-color-gray-300);\\n border-radius: var(--height);\\n transition: var(--sl-transition-fast) border-color, var(--sl-transition-fast) background-color;\\n}\\n.switch__control .switch__thumb {\\n width: var(--thumb-size);\\n height: var(--thumb-size);\\n background-color: var(--sl-color-white);\\n border-radius: 50%;\\n border: solid var(--sl-input-border-width) var(--sl-input-border-color);\\n transform: translateX(calc(var(--width) / -2 + var(--thumb-size) / 2 - (var(--thumb-size) - var(--height)) / 2));\\n transition: var(--sl-transition-fast) transform ease, var(--sl-transition-fast) background-color, var(--sl-transition-fast) border-color, var(--sl-transition-fast) box-shadow;\\n}\\n.switch__control input[type=checkbox] {\\n position: absolute;\\n opacity: 0;\\n padding: 0;\\n margin: 0;\\n pointer-events: none;\\n}\\n\\n.switch:not(.switch--checked):not(.switch--disabled) .switch__control:hover {\\n background-color: var(--sl-color-gray-200);\\n border-color: var(--sl-color-gray-200);\\n}\\n.switch:not(.switch--checked):not(.switch--disabled) .switch__control:hover .switch__thumb {\\n background-color: var(--sl-color-white);\\n border-color: var(--sl-input-border-color);\\n}\\n\\n.switch.switch--focused:not(.switch--checked):not(.switch--disabled) .switch__control {\\n background-color: var(--sl-color-gray-200);\\n border-color: var(--sl-color-gray-200);\\n}\\n.switch.switch--focused:not(.switch--checked):not(.switch--disabled) .switch__control .switch__thumb {\\n background-color: var(--sl-color-white);\\n border-color: var(--sl-color-primary-500);\\n box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-primary);\\n}\\n\\n.switch--checked .switch__control {\\n background-color: var(--sl-color-primary-500);\\n border-color: var(--sl-color-primary-500);\\n}\\n.switch--checked .switch__control .switch__thumb {\\n background-color: var(--sl-color-white);\\n border-color: var(--sl-color-primary-500);\\n transform: translateX(calc(var(--width) / 2 - var(--thumb-size) / 2 + (var(--thumb-size) - var(--height)) / 2));\\n}\\n\\n.switch.switch--checked:not(.switch--disabled) .switch__control:hover {\\n background-color: var(--sl-color-primary-400);\\n border-color: var(--sl-color-primary-400);\\n}\\n.switch.switch--checked:not(.switch--disabled) .switch__control:hover .switch__thumb {\\n background-color: var(--sl-color-white);\\n border-color: var(--sl-color-primary-500);\\n}\\n\\n.switch.switch--checked:not(.switch--disabled).switch--focused .switch__control {\\n background-color: var(--sl-color-primary-400);\\n border-color: var(--sl-color-primary-400);\\n}\\n.switch.switch--checked:not(.switch--disabled).switch--focused .switch__control .switch__thumb {\\n background-color: var(--sl-color-white);\\n border-color: var(--sl-color-primary-500);\\n box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-primary);\\n}\\n\\n.switch--disabled {\\n opacity: 0.5;\\n cursor: not-allowed;\\n}\\n\\n.switch__label {\\n line-height: var(--height);\\n margin-left: 0.5em;\\n user-select: none;\\n}\";\n\n// src/components/switch/switch.ts\nvar id = 0;\nvar SlSwitch = class extends o2 {\n constructor() {\n super(...arguments);\n this.switchId = `switch-${++id}`;\n this.labelId = `switch-label-${id}`;\n this.hasFocus = false;\n this.disabled = false;\n this.required = false;\n this.checked = false;\n this.invalid = false;\n }\n click() {\n this.input.click();\n }\n focus(options) {\n this.input.focus(options);\n }\n blur() {\n this.input.blur();\n }\n reportValidity() {\n return this.input.reportValidity();\n }\n setCustomValidity(message) {\n this.input.setCustomValidity(message);\n this.invalid = !this.input.checkValidity();\n }\n handleClick() {\n this.checked = !this.checked;\n }\n handleBlur() {\n this.hasFocus = false;\n this.slBlur.emit();\n }\n handleFocus() {\n this.hasFocus = true;\n this.slFocus.emit();\n }\n handleKeyDown(event2) {\n if (event2.key === \"ArrowLeft\") {\n event2.preventDefault();\n this.checked = false;\n }\n if (event2.key === \"ArrowRight\") {\n event2.preventDefault();\n this.checked = true;\n }\n }\n handleMouseDown(event2) {\n event2.preventDefault();\n this.input.focus();\n }\n handleCheckedChange() {\n if (this.input) {\n this.input.checked = this.checked;\n this.slChange.emit();\n }\n }\n render() {\n return p`\n \n \n \n\n \n \n\n \n \n \n \n `;\n }\n};\nSlSwitch.styles = s(switch_default);\n__decorate([\n i2('input[type=\"checkbox\"]')\n], SlSwitch.prototype, \"input\", 2);\n__decorate([\n r()\n], SlSwitch.prototype, \"hasFocus\", 2);\n__decorate([\n e()\n], SlSwitch.prototype, \"name\", 2);\n__decorate([\n e()\n], SlSwitch.prototype, \"value\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlSwitch.prototype, \"disabled\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlSwitch.prototype, \"required\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlSwitch.prototype, \"checked\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlSwitch.prototype, \"invalid\", 2);\n__decorate([\n event(\"sl-blur\")\n], SlSwitch.prototype, \"slBlur\", 2);\n__decorate([\n event(\"sl-change\")\n], SlSwitch.prototype, \"slChange\", 2);\n__decorate([\n event(\"sl-focus\")\n], SlSwitch.prototype, \"slFocus\", 2);\n__decorate([\n watch(\"checked\")\n], SlSwitch.prototype, \"handleCheckedChange\", 1);\nSlSwitch = __decorate([\n n(\"sl-switch\")\n], SlSwitch);\nvar switch_default2 = SlSwitch;\n\nexport {\n switch_default2 as switch_default\n};\n","import {\n event\n} from \"./chunk.NVGUFQGY.js\";\nimport {\n i\n} from \"./chunk.5D6J5A4S.js\";\nimport {\n e\n} from \"./chunk.T6M3ZU4B.js\";\nimport {\n __decorate,\n n,\n o,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/tag/tag.scss\nvar tag_default = \":host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n:host {\\n display: inline-block;\\n}\\n\\n.tag {\\n display: flex;\\n align-items: center;\\n border: solid 1px;\\n line-height: 1;\\n white-space: nowrap;\\n user-select: none;\\n cursor: default;\\n}\\n\\n.tag__clear::part(base) {\\n color: inherit;\\n padding: 0;\\n}\\n\\n.tag--primary {\\n background-color: var(--sl-color-primary-100);\\n border-color: var(--sl-color-primary-200);\\n color: var(--sl-color-primary-700);\\n}\\n\\n.tag--success {\\n background-color: var(--sl-color-success-100);\\n border-color: var(--sl-color-success-200);\\n color: var(--sl-color-success-700);\\n}\\n\\n.tag--info {\\n background-color: var(--sl-color-info-100);\\n border-color: var(--sl-color-info-200);\\n color: var(--sl-color-info-700);\\n}\\n\\n.tag--warning {\\n background-color: var(--sl-color-warning-100);\\n border-color: var(--sl-color-warning-200);\\n color: var(--sl-color-warning-700);\\n}\\n\\n.tag--danger {\\n background-color: var(--sl-color-danger-100);\\n border-color: var(--sl-color-danger-200);\\n color: var(--sl-color-danger-700);\\n}\\n\\n.tag--small {\\n font-size: var(--sl-button-font-size-small);\\n height: calc(var(--sl-input-height-small) * 0.8);\\n line-height: calc(var(--sl-input-height-small) - var(--sl-input-border-width) * 2);\\n border-radius: var(--sl-input-border-radius-small);\\n padding: 0 var(--sl-spacing-x-small);\\n}\\n.tag--small .tag__clear {\\n margin-left: var(--sl-spacing-xx-small);\\n margin-right: calc(-1 * var(--sl-spacing-xxx-small));\\n}\\n\\n.tag--medium {\\n font-size: var(--sl-button-font-size-medium);\\n height: calc(var(--sl-input-height-medium) * 0.8);\\n line-height: calc(var(--sl-input-height-medium) - var(--sl-input-border-width) * 2);\\n border-radius: var(--sl-input-border-radius-medium);\\n padding: 0 var(--sl-spacing-small);\\n}\\n.tag--medium .tag__clear {\\n margin-left: var(--sl-spacing-xx-small);\\n margin-right: calc(-1 * var(--sl-spacing-xx-small));\\n}\\n\\n.tag--large {\\n font-size: var(--sl-button-font-size-large);\\n height: calc(var(--sl-input-height-large) * 0.8);\\n line-height: calc(var(--sl-input-height-large) - var(--sl-input-border-width) * 2);\\n border-radius: var(--sl-input-border-radius-large);\\n padding: 0 var(--sl-spacing-medium);\\n}\\n.tag--large .tag__clear {\\n margin-left: var(--sl-spacing-xx-small);\\n margin-right: calc(-1 * var(--sl-spacing-x-small));\\n}\\n\\n.tag--pill {\\n border-radius: var(--sl-border-radius-pill);\\n}\";\n\n// src/components/tag/tag.ts\nvar SlTag = class extends o {\n constructor() {\n super(...arguments);\n this.type = \"primary\";\n this.size = \"medium\";\n this.pill = false;\n this.clearable = false;\n }\n handleClearClick() {\n this.slClear.emit();\n }\n render() {\n return p`\n \n \n \n \n\n ${this.clearable ? p`\n \n ` : \"\"}\n \n `;\n }\n};\nSlTag.styles = s(tag_default);\n__decorate([\n e({reflect: true})\n], SlTag.prototype, \"type\", 2);\n__decorate([\n e({reflect: true})\n], SlTag.prototype, \"size\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlTag.prototype, \"pill\", 2);\n__decorate([\n e({type: Boolean})\n], SlTag.prototype, \"clearable\", 2);\n__decorate([\n event(\"sl-clear\")\n], SlTag.prototype, \"slClear\", 2);\nSlTag = __decorate([\n n(\"sl-tag\")\n], SlTag);\nvar tag_default2 = SlTag;\n\nexport {\n tag_default2 as tag_default\n};\n","import {\n popover_default\n} from \"./chunk.POBXNCHG.js\";\nimport {\n watch\n} from \"./chunk.SUD4FHJ4.js\";\nimport {\n event\n} from \"./chunk.NVGUFQGY.js\";\nimport {\n i\n} from \"./chunk.5D6J5A4S.js\";\nimport {\n i as i2\n} from \"./chunk.BMRAUHVW.js\";\nimport {\n e\n} from \"./chunk.T6M3ZU4B.js\";\nimport {\n __decorate,\n n,\n o,\n p,\n s\n} from \"./chunk.SXOXLYUK.js\";\n\n// _ew4pej8sx:/Users/valentin/src/shoelace/src/components/tooltip/tooltip.scss\nvar tooltip_default = ':host {\\n position: relative;\\n box-sizing: border-box;\\n}\\n:host *, :host *:before, :host *:after {\\n box-sizing: inherit;\\n}\\n\\n/**\\n * @prop --hide-delay: The amount of time to wait before hiding the tooltip.\\n * @prop --hide-duration: The amount of time the hide transition takes to complete.\\n * @prop --hide-timing-function: The timing function (easing) to use for the hide transition.\\n * @prop --max-width: The maximum width of the tooltip.\\n * @prop --show-delay: The amount of time to wait before showing the tooltip.\\n * @prop --show-duration: The amount of time the show transition takes to complete.\\n * @prop --show-timing-function: The timing function (easing) to use for the show transition.\\n */\\n:host {\\n --max-width: 20rem;\\n --hide-delay: 0s;\\n --hide-duration: 0.125s;\\n --hide-timing-function: ease;\\n --show-delay: 0.125s;\\n --show-duration: 0.125s;\\n --show-timing-function: ease;\\n display: contents;\\n}\\n\\n.tooltip-positioner {\\n position: absolute;\\n z-index: var(--sl-z-index-tooltip);\\n pointer-events: none;\\n}\\n\\n.tooltip {\\n max-width: var(--max-width);\\n border-radius: var(--sl-tooltip-border-radius);\\n background-color: var(--sl-tooltip-background-color);\\n font-family: var(--sl-tooltip-font-family);\\n font-size: var(--sl-tooltip-font-size);\\n font-weight: var(--sl-tooltip-font-weight);\\n line-height: var(--sl-tooltip-line-height);\\n color: var(--sl-tooltip-color);\\n opacity: 0;\\n padding: var(--sl-tooltip-padding);\\n transform: scale(0.8);\\n transform-origin: bottom;\\n transition-property: opacity, transform;\\n transition-delay: var(--hide-delay);\\n transition-duration: var(--hide-duration);\\n transition-timing-function: var(--hide-timing-function);\\n}\\n.tooltip:after {\\n content: \"\";\\n position: absolute;\\n width: 0;\\n height: 0;\\n}\\n\\n.tooltip-positioner[data-popper-placement^=top] .tooltip {\\n transform-origin: bottom;\\n}\\n.tooltip-positioner[data-popper-placement^=bottom] .tooltip {\\n transform-origin: top;\\n}\\n.tooltip-positioner[data-popper-placement^=left] .tooltip {\\n transform-origin: right;\\n}\\n.tooltip-positioner[data-popper-placement^=right] .tooltip {\\n transform-origin: left;\\n}\\n.tooltip-positioner.popover-visible .tooltip {\\n opacity: 1;\\n transform: none;\\n transition-delay: var(--show-delay);\\n transition-duration: var(--show-duration);\\n transition-timing-function: var(--show-timing-function);\\n}\\n\\n.tooltip-positioner[data-popper-placement^=bottom] .tooltip:after {\\n bottom: 100%;\\n left: calc(50% - var(--sl-tooltip-arrow-size));\\n border-bottom: var(--sl-tooltip-arrow-size) solid var(--sl-tooltip-background-color);\\n border-left: var(--sl-tooltip-arrow-size) solid transparent;\\n border-right: var(--sl-tooltip-arrow-size) solid transparent;\\n}\\n\\n.tooltip-positioner[data-popper-placement=bottom-start] .tooltip:after {\\n left: var(--sl-tooltip-arrow-start-end-offset);\\n}\\n\\n.tooltip-positioner[data-popper-placement=bottom-end] .tooltip:after {\\n right: var(--sl-tooltip-arrow-start-end-offset);\\n left: auto;\\n}\\n\\n.tooltip-positioner[data-popper-placement^=top] .tooltip:after {\\n top: 100%;\\n left: calc(50% - var(--sl-tooltip-arrow-size));\\n border-top: var(--sl-tooltip-arrow-size) solid var(--sl-tooltip-background-color);\\n border-left: var(--sl-tooltip-arrow-size) solid transparent;\\n border-right: var(--sl-tooltip-arrow-size) solid transparent;\\n}\\n\\n.tooltip-positioner[data-popper-placement=top-start] .tooltip:after {\\n left: var(--sl-tooltip-arrow-start-end-offset);\\n}\\n\\n.tooltip-positioner[data-popper-placement=top-end] .tooltip:after {\\n right: var(--sl-tooltip-arrow-start-end-offset);\\n left: auto;\\n}\\n\\n.tooltip-positioner[data-popper-placement^=left] .tooltip:after {\\n top: calc(50% - var(--sl-tooltip-arrow-size));\\n left: 100%;\\n border-left: var(--sl-tooltip-arrow-size) solid var(--sl-tooltip-background-color);\\n border-top: var(--sl-tooltip-arrow-size) solid transparent;\\n border-bottom: var(--sl-tooltip-arrow-size) solid transparent;\\n}\\n\\n.tooltip-positioner[data-popper-placement=left-start] .tooltip:after {\\n top: var(--sl-tooltip-arrow-start-end-offset);\\n}\\n\\n.tooltip-positioner[data-popper-placement=left-end] .tooltip:after {\\n top: auto;\\n bottom: var(--sl-tooltip-arrow-start-end-offset);\\n}\\n\\n.tooltip-positioner[data-popper-placement^=right] .tooltip:after {\\n top: calc(50% - var(--sl-tooltip-arrow-size));\\n right: 100%;\\n border-right: var(--sl-tooltip-arrow-size) solid var(--sl-tooltip-background-color);\\n border-top: var(--sl-tooltip-arrow-size) solid transparent;\\n border-bottom: var(--sl-tooltip-arrow-size) solid transparent;\\n}\\n\\n.tooltip-positioner[data-popper-placement=right-start] .tooltip:after {\\n top: var(--sl-tooltip-arrow-start-end-offset);\\n}\\n\\n.tooltip-positioner[data-popper-placement=right-end] .tooltip:after {\\n top: auto;\\n bottom: var(--sl-tooltip-arrow-start-end-offset);\\n}';\n\n// src/components/tooltip/tooltip.ts\nvar id = 0;\nvar SlTooltip = class extends o {\n constructor() {\n super(...arguments);\n this.componentId = `tooltip-${++id}`;\n this.isVisible = false;\n this.content = \"\";\n this.placement = \"top\";\n this.disabled = false;\n this.distance = 10;\n this.open = false;\n this.skidding = 0;\n this.trigger = \"hover focus\";\n }\n connectedCallback() {\n super.connectedCallback();\n this.handleBlur = this.handleBlur.bind(this);\n this.handleClick = this.handleClick.bind(this);\n this.handleFocus = this.handleFocus.bind(this);\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMouseOver = this.handleMouseOver.bind(this);\n this.handleMouseOut = this.handleMouseOut.bind(this);\n }\n firstUpdated() {\n this.target = this.getTarget();\n this.popover = new popover_default(this.target, this.positioner);\n this.syncOptions();\n this.addEventListener(\"blur\", this.handleBlur, true);\n this.addEventListener(\"focus\", this.handleFocus, true);\n this.addEventListener(\"click\", this.handleClick);\n this.addEventListener(\"keydown\", this.handleKeyDown);\n this.addEventListener(\"mouseover\", this.handleMouseOver);\n this.addEventListener(\"mouseout\", this.handleMouseOut);\n this.positioner.hidden = !this.open;\n if (this.open) {\n this.show();\n }\n }\n disconnectedCallback() {\n super.disconnectedCallback();\n this.popover.destroy();\n this.removeEventListener(\"blur\", this.handleBlur, true);\n this.removeEventListener(\"focus\", this.handleFocus, true);\n this.removeEventListener(\"click\", this.handleClick);\n this.removeEventListener(\"keydown\", this.handleKeyDown);\n this.removeEventListener(\"mouseover\", this.handleMouseOver);\n this.removeEventListener(\"mouseout\", this.handleMouseOut);\n }\n show() {\n if (this.isVisible || this.disabled) {\n return;\n }\n const slShow = this.slShow.emit();\n if (slShow.defaultPrevented) {\n this.open = false;\n return;\n }\n this.isVisible = true;\n this.open = true;\n this.popover.show();\n }\n hide() {\n if (!this.isVisible) {\n return;\n }\n const slHide = this.slHide.emit();\n if (slHide.defaultPrevented) {\n this.open = true;\n return;\n }\n this.isVisible = false;\n this.open = false;\n this.popover.hide();\n }\n getTarget() {\n const target = [...this.children].find((el) => el.tagName.toLowerCase() !== \"style\" && el.getAttribute(\"slot\") !== \"content\");\n if (!target) {\n throw new Error(\"Invalid tooltip target: no child element was found.\");\n }\n return target;\n }\n handleBlur() {\n if (this.hasTrigger(\"focus\")) {\n this.hide();\n }\n }\n handleClick() {\n if (this.hasTrigger(\"click\")) {\n this.open ? this.hide() : this.show();\n }\n }\n handleFocus() {\n if (this.hasTrigger(\"focus\")) {\n this.show();\n }\n }\n handleKeyDown(event2) {\n if (this.open && event2.key === \"Escape\") {\n event2.stopPropagation();\n this.hide();\n }\n }\n handleMouseOver() {\n if (this.hasTrigger(\"hover\")) {\n this.show();\n }\n }\n handleMouseOut() {\n if (this.hasTrigger(\"hover\")) {\n this.hide();\n }\n }\n handleOpenChange() {\n this.open ? this.show() : this.hide();\n }\n handleOptionsChange() {\n this.syncOptions();\n }\n handleDisabledChange() {\n if (this.disabled && this.open) {\n this.hide();\n }\n }\n handleSlotChange() {\n const oldTarget = this.target;\n const newTarget = this.getTarget();\n if (newTarget !== oldTarget) {\n if (oldTarget) {\n oldTarget.removeAttribute(\"aria-describedby\");\n }\n newTarget.setAttribute(\"aria-describedby\", this.componentId);\n }\n }\n hasTrigger(triggerType) {\n const triggers = this.trigger.split(\" \");\n return triggers.includes(triggerType);\n }\n syncOptions() {\n if (this.popover) {\n this.popover.setOptions({\n placement: this.placement,\n distance: this.distance,\n skidding: this.skidding,\n transitionElement: this.tooltip,\n onAfterHide: () => this.slAfterHide.emit(),\n onAfterShow: () => this.slAfterShow.emit()\n });\n }\n }\n render() {\n return p`\n \n\n
\n \n ${this.content}\n
\n \n `;\n }\n};\nSlTooltip.styles = s(tooltip_default);\n__decorate([\n i2(\".tooltip-positioner\")\n], SlTooltip.prototype, \"positioner\", 2);\n__decorate([\n i2(\".tooltip\")\n], SlTooltip.prototype, \"tooltip\", 2);\n__decorate([\n e()\n], SlTooltip.prototype, \"content\", 2);\n__decorate([\n e()\n], SlTooltip.prototype, \"placement\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlTooltip.prototype, \"disabled\", 2);\n__decorate([\n e({type: Number})\n], SlTooltip.prototype, \"distance\", 2);\n__decorate([\n e({type: Boolean, reflect: true})\n], SlTooltip.prototype, \"open\", 2);\n__decorate([\n e({type: Number})\n], SlTooltip.prototype, \"skidding\", 2);\n__decorate([\n e()\n], SlTooltip.prototype, \"trigger\", 2);\n__decorate([\n event(\"sl-show\")\n], SlTooltip.prototype, \"slShow\", 2);\n__decorate([\n event(\"sl-after-show\")\n], SlTooltip.prototype, \"slAfterShow\", 2);\n__decorate([\n event(\"sl-hide\")\n], SlTooltip.prototype, \"slHide\", 2);\n__decorate([\n event(\"sl-after-hide\")\n], SlTooltip.prototype, \"slAfterHide\", 2);\n__decorate([\n watch(\"open\")\n], SlTooltip.prototype, \"handleOpenChange\", 1);\n__decorate([\n watch(\"placement\"),\n watch(\"distance\"),\n watch(\"skidding\")\n], SlTooltip.prototype, \"handleOptionsChange\", 1);\n__decorate([\n watch(\"disabled\")\n], SlTooltip.prototype, \"handleDisabledChange\", 1);\nSlTooltip = __decorate([\n n(\"sl-tooltip\")\n], SlTooltip);\nvar tooltip_default2 = SlTooltip;\n\nexport {\n tooltip_default2 as tooltip_default\n};\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction));\n });\n }\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking)\n db.addEventListener('versionchange', () => blocking());\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","/**\n * @module ol/AssertionError\n */\nimport {VERSION} from './util.js';\n\n/**\n * Error object thrown when an assertion failed. This is an ECMA-262 Error,\n * extended with a `code` property.\n * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error.\n */\nclass AssertionError extends Error {\n /**\n * @param {number} code Error code.\n */\n constructor(code) {\n const path = VERSION === 'latest' ? VERSION : 'v' + VERSION.split('-')[0];\n const message =\n 'Assertion failed. See https://openlayers.org/en/' +\n path +\n '/doc/errors/#' +\n code +\n ' for details.';\n\n super(message);\n\n /**\n * Error code. The meaning of the code can be found on\n * https://openlayers.org/en/latest/doc/errors/ (replace `latest` with\n * the version found in the OpenLayers script's header comment if a version\n * other than the latest is used).\n * @type {number}\n * @api\n */\n this.code = code;\n\n /**\n * @type {string}\n */\n this.name = 'AssertionError';\n\n // Re-assign message, see https://github.com/Rich-Harris/buble/issues/40\n this.message = message;\n }\n}\n\nexport default AssertionError;\n","/**\n * @module ol/Collection\n */\nimport AssertionError from './AssertionError.js';\nimport BaseObject from './Object.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport Event from './events/Event.js';\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n LENGTH: 'length',\n};\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n */\nexport class CollectionEvent extends Event {\n /**\n * @param {import(\"./CollectionEventType.js\").default} type Type.\n * @param {*} [opt_element] Element.\n * @param {number} [opt_index] The index of the added or removed element.\n */\n constructor(type, opt_element, opt_index) {\n super(type);\n\n /**\n * The element that is added to or removed from the collection.\n * @type {*}\n * @api\n */\n this.element = opt_element;\n\n /**\n * The index of the added or removed element.\n * @type {number}\n * @api\n */\n this.index = opt_index;\n }\n}\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature<'add'|'remove', CollectionEvent, Return> &\n * import(\"./Observable\").CombinedOnSignature} CollectionOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {boolean} [unique=false] Disallow the same item from being added to\n * the collection twice.\n */\n\n/**\n * @classdesc\n * An expanded version of standard JS Array, adding convenience methods for\n * manipulation. Add and remove changes to the Collection trigger a Collection\n * event. Note that this does not cover changes to the objects _within_ the\n * Collection; they trigger events on the appropriate object, not on the\n * Collection as a whole.\n *\n * @fires CollectionEvent\n *\n * @template T\n * @api\n */\nclass Collection extends BaseObject {\n /**\n * @param {Array} [opt_array] Array.\n * @param {Options} [opt_options] Collection options.\n */\n constructor(opt_array, opt_options) {\n super();\n\n /***\n * @type {CollectionOnSignature}\n */\n this.on;\n\n /***\n * @type {CollectionOnSignature}\n */\n this.once;\n\n /***\n * @type {CollectionOnSignature}\n */\n this.un;\n\n const options = opt_options || {};\n\n /**\n * @private\n * @type {boolean}\n */\n this.unique_ = !!options.unique;\n\n /**\n * @private\n * @type {!Array}\n */\n this.array_ = opt_array ? opt_array : [];\n\n if (this.unique_) {\n for (let i = 0, ii = this.array_.length; i < ii; ++i) {\n this.assertUnique_(this.array_[i], i);\n }\n }\n\n this.updateLength_();\n }\n\n /**\n * Remove all elements from the collection.\n * @api\n */\n clear() {\n while (this.getLength() > 0) {\n this.pop();\n }\n }\n\n /**\n * Add elements to the collection. This pushes each item in the provided array\n * to the end of the collection.\n * @param {!Array} arr Array.\n * @return {Collection} This collection.\n * @api\n */\n extend(arr) {\n for (let i = 0, ii = arr.length; i < ii; ++i) {\n this.push(arr[i]);\n }\n return this;\n }\n\n /**\n * Iterate over each element, calling the provided callback.\n * @param {function(T, number, Array): *} f The function to call\n * for every element. This function takes 3 arguments (the element, the\n * index and the array). The return value is ignored.\n * @api\n */\n forEach(f) {\n const array = this.array_;\n for (let i = 0, ii = array.length; i < ii; ++i) {\n f(array[i], i, array);\n }\n }\n\n /**\n * Get a reference to the underlying Array object. Warning: if the array\n * is mutated, no events will be dispatched by the collection, and the\n * collection's \"length\" property won't be in sync with the actual length\n * of the array.\n * @return {!Array} Array.\n * @api\n */\n getArray() {\n return this.array_;\n }\n\n /**\n * Get the element at the provided index.\n * @param {number} index Index.\n * @return {T} Element.\n * @api\n */\n item(index) {\n return this.array_[index];\n }\n\n /**\n * Get the length of this collection.\n * @return {number} The length of the array.\n * @observable\n * @api\n */\n getLength() {\n return this.get(Property.LENGTH);\n }\n\n /**\n * Insert an element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n insertAt(index, elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n this.array_.splice(index, 0, elem);\n this.updateLength_();\n this.dispatchEvent(\n new CollectionEvent(CollectionEventType.ADD, elem, index)\n );\n }\n\n /**\n * Remove the last element of the collection and return it.\n * Return `undefined` if the collection is empty.\n * @return {T|undefined} Element.\n * @api\n */\n pop() {\n return this.removeAt(this.getLength() - 1);\n }\n\n /**\n * Insert the provided element at the end of the collection.\n * @param {T} elem Element.\n * @return {number} New length of the collection.\n * @api\n */\n push(elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n const n = this.getLength();\n this.insertAt(n, elem);\n return this.getLength();\n }\n\n /**\n * Remove the first occurrence of an element from the collection.\n * @param {T} elem Element.\n * @return {T|undefined} The removed element or undefined if none found.\n * @api\n */\n remove(elem) {\n const arr = this.array_;\n for (let i = 0, ii = arr.length; i < ii; ++i) {\n if (arr[i] === elem) {\n return this.removeAt(i);\n }\n }\n return undefined;\n }\n\n /**\n * Remove the element at the provided index and return it.\n * Return `undefined` if the collection does not contain this index.\n * @param {number} index Index.\n * @return {T|undefined} Value.\n * @api\n */\n removeAt(index) {\n const prev = this.array_[index];\n this.array_.splice(index, 1);\n this.updateLength_();\n this.dispatchEvent(\n new CollectionEvent(CollectionEventType.REMOVE, prev, index)\n );\n return prev;\n }\n\n /**\n * Set the element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n setAt(index, elem) {\n const n = this.getLength();\n if (index < n) {\n if (this.unique_) {\n this.assertUnique_(elem, index);\n }\n const prev = this.array_[index];\n this.array_[index] = elem;\n this.dispatchEvent(\n new CollectionEvent(CollectionEventType.REMOVE, prev, index)\n );\n this.dispatchEvent(\n new CollectionEvent(CollectionEventType.ADD, elem, index)\n );\n } else {\n for (let j = n; j < index; ++j) {\n this.insertAt(j, undefined);\n }\n this.insertAt(index, elem);\n }\n }\n\n /**\n * @private\n */\n updateLength_() {\n this.set(Property.LENGTH, this.array_.length);\n }\n\n /**\n * @private\n * @param {T} elem Element.\n * @param {number} [opt_except] Optional index to ignore.\n */\n assertUnique_(elem, opt_except) {\n for (let i = 0, ii = this.array_.length; i < ii; ++i) {\n if (this.array_[i] === elem && i !== opt_except) {\n throw new AssertionError(58);\n }\n }\n }\n}\n\nexport default Collection;\n","/**\n * @module ol/CollectionEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove',\n};\n","/**\n * @module ol/Disposable\n */\n\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nclass Disposable {\n constructor() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @protected\n */\n this.disposed = false;\n }\n\n /**\n * Clean up.\n */\n dispose() {\n if (!this.disposed) {\n this.disposed = true;\n this.disposeInternal();\n }\n }\n\n /**\n * Extension point for disposable objects.\n * @protected\n */\n disposeInternal() {}\n}\n\nexport default Disposable;\n","/**\n * @module ol/Feature\n */\nimport BaseObject from './Object.js';\nimport EventType from './events/EventType.js';\nimport {assert} from './asserts.js';\nimport {listen, unlistenByKey} from './events.js';\n\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n\n/**\n * @typedef {Feature|import(\"./render/Feature.js\").default} FeatureLike\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} FeatureOnSignature\n */\n\n/***\n * @template Geometry\n * @typedef {Object & { geometry?: Geometry }} ObjectWithGeometry\n */\n\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object~BaseObject} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature. For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature';\n * import Polygon from 'ol/geom/Polygon';\n * import Point from 'ol/geom/Point';\n *\n * var feature = new Feature({\n * geometry: new Polygon(polyCoords),\n * labelPoint: new Point(labelCoords),\n * name: 'My Polygon'\n * });\n *\n * // get the polygon geometry\n * var poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * var point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} [Geometry=import(\"./geom/Geometry.js\").default]\n */\nclass Feature extends BaseObject {\n /**\n * @param {Geometry|ObjectWithGeometry} [opt_geometryOrProperties]\n * You may pass a Geometry object directly, or an object literal containing\n * properties. If you pass an object literal, you may include a Geometry\n * associated with a `geometry` key.\n */\n constructor(opt_geometryOrProperties) {\n super();\n\n /***\n * @type {FeatureOnSignature}\n */\n this.on;\n\n /***\n * @type {FeatureOnSignature}\n */\n this.once;\n\n /***\n * @type {FeatureOnSignature}\n */\n this.un;\n\n /**\n * @private\n * @type {number|string|undefined}\n */\n this.id_ = undefined;\n\n /**\n * @type {string}\n * @private\n */\n this.geometryName_ = 'geometry';\n\n /**\n * User provided style.\n * @private\n * @type {import(\"./style/Style.js\").StyleLike}\n */\n this.style_ = null;\n\n /**\n * @private\n * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n */\n this.styleFunction_ = undefined;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.geometryChangeKey_ = null;\n\n this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n\n if (opt_geometryOrProperties) {\n if (\n typeof (\n /** @type {?} */ (opt_geometryOrProperties).getSimplifiedGeometry\n ) === 'function'\n ) {\n const geometry = /** @type {Geometry} */ (opt_geometryOrProperties);\n this.setGeometry(geometry);\n } else {\n /** @type {Object} */\n const properties = opt_geometryOrProperties;\n this.setProperties(properties);\n }\n }\n }\n\n /**\n * Clone this feature. If the original feature has a geometry it\n * is also cloned. The feature id is not set in the clone.\n * @return {Feature} The clone.\n * @api\n */\n clone() {\n const clone = /** @type {Feature} */ (\n new Feature(this.hasProperties() ? this.getProperties() : null)\n );\n clone.setGeometryName(this.getGeometryName());\n const geometry = this.getGeometry();\n if (geometry) {\n clone.setGeometry(/** @type {Geometry} */ (geometry.clone()));\n }\n const style = this.getStyle();\n if (style) {\n clone.setStyle(style);\n }\n return clone;\n }\n\n /**\n * Get the feature's default geometry. A feature may have any number of named\n * geometries. The \"default\" geometry (the one that is rendered by default) is\n * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n * @return {Geometry|undefined} The default geometry for the feature.\n * @api\n * @observable\n */\n getGeometry() {\n return /** @type {Geometry|undefined} */ (this.get(this.geometryName_));\n }\n\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is either set when reading data from a remote source or set explicitly by\n * calling {@link module:ol/Feature~Feature#setId}.\n * @return {number|string|undefined} Id.\n * @api\n */\n getId() {\n return this.id_;\n }\n\n /**\n * Get the name of the feature's default geometry. By default, the default\n * geometry is named `geometry`.\n * @return {string} Get the property name associated with the default geometry\n * for this feature.\n * @api\n */\n getGeometryName() {\n return this.geometryName_;\n }\n\n /**\n * Get the feature's style. Will return what was provided to the\n * {@link module:ol/Feature~Feature#setStyle} method.\n * @return {import(\"./style/Style.js\").StyleLike|undefined} The feature style.\n * @api\n */\n getStyle() {\n return this.style_;\n }\n\n /**\n * Get the feature's style function.\n * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n * representing the current style of this feature.\n * @api\n */\n getStyleFunction() {\n return this.styleFunction_;\n }\n\n /**\n * @private\n */\n handleGeometryChange_() {\n this.changed();\n }\n\n /**\n * @private\n */\n handleGeometryChanged_() {\n if (this.geometryChangeKey_) {\n unlistenByKey(this.geometryChangeKey_);\n this.geometryChangeKey_ = null;\n }\n const geometry = this.getGeometry();\n if (geometry) {\n this.geometryChangeKey_ = listen(\n geometry,\n EventType.CHANGE,\n this.handleGeometryChange_,\n this\n );\n }\n this.changed();\n }\n\n /**\n * Set the default geometry for the feature. This will update the property\n * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n * @param {Geometry|undefined} geometry The new geometry.\n * @api\n * @observable\n */\n setGeometry(geometry) {\n this.set(this.geometryName_, geometry);\n }\n\n /**\n * Set the style for the feature to override the layer style. This can be a\n * single style object, an array of styles, or a function that takes a\n * resolution and returns an array of styles. To unset the feature style, call\n * `setStyle()` without arguments or a falsey value.\n * @param {import(\"./style/Style.js\").StyleLike} [opt_style] Style for this feature.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n setStyle(opt_style) {\n this.style_ = opt_style;\n this.styleFunction_ = !opt_style\n ? undefined\n : createStyleFunction(opt_style);\n this.changed();\n }\n\n /**\n * Set the feature id. The feature id is considered stable and may be used when\n * requesting features or comparing identifiers returned from a remote source.\n * The feature id can be used with the\n * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n * @param {number|string|undefined} id The feature id.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n setId(id) {\n this.id_ = id;\n this.changed();\n }\n\n /**\n * Set the property name to be used when getting the feature's default geometry.\n * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n * this name will be returned.\n * @param {string} name The property name of the default geometry.\n * @api\n */\n setGeometryName(name) {\n this.removeChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.geometryName_ = name;\n this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.handleGeometryChanged_();\n }\n}\n\n/**\n * Convert the provided object into a feature style function. Functions passed\n * through unchanged. Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array|!import(\"./style/Style.js\").default} obj\n * A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n if (typeof obj === 'function') {\n return obj;\n } else {\n /**\n * @type {Array}\n */\n let styles;\n if (Array.isArray(obj)) {\n styles = obj;\n } else {\n assert(typeof (/** @type {?} */ (obj).getZIndex) === 'function', 41); // Expected an `import(\"./style/Style.js\").Style` or an array of `import(\"./style/Style.js\").Style`\n const style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n styles = [style];\n }\n return function () {\n return styles;\n };\n }\n}\nexport default Feature;\n","/**\n * @module ol/ImageBase\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport {abstract} from './util.js';\n\n/**\n * @abstract\n */\nclass ImageBase extends EventTarget {\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"./ImageState.js\").default} state State.\n */\n constructor(extent, resolution, pixelRatio, state) {\n super();\n\n /**\n * @protected\n * @type {import(\"./extent.js\").Extent}\n */\n this.extent = extent;\n\n /**\n * @private\n * @type {number}\n */\n this.pixelRatio_ = pixelRatio;\n\n /**\n * @protected\n * @type {number|undefined}\n */\n this.resolution = resolution;\n\n /**\n * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n this.state = state;\n }\n\n /**\n * @protected\n */\n changed() {\n this.dispatchEvent(EventType.CHANGE);\n }\n\n /**\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n getExtent() {\n return this.extent;\n }\n\n /**\n * @abstract\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n */\n getImage() {\n return abstract();\n }\n\n /**\n * @return {number} PixelRatio.\n */\n getPixelRatio() {\n return this.pixelRatio_;\n }\n\n /**\n * @return {number} Resolution.\n */\n getResolution() {\n return /** @type {number} */ (this.resolution);\n }\n\n /**\n * @return {import(\"./ImageState.js\").default} State.\n */\n getState() {\n return this.state;\n }\n\n /**\n * Load not yet loaded URI.\n * @abstract\n */\n load() {\n abstract();\n }\n}\n\nexport default ImageBase;\n","/**\n * @module ol/Image\n */\nimport EventType from './events/EventType.js';\nimport ImageBase from './ImageBase.js';\nimport ImageState from './ImageState.js';\nimport {IMAGE_DECODE} from './has.js';\nimport {getHeight} from './extent.js';\nimport {listenOnce, unlistenByKey} from './events.js';\n\n/**\n * A function that takes an {@link module:ol/Image~ImageWrapper} for the image and a\n * `{string}` for the src as arguments. It is supposed to make it so the\n * underlying image {@link module:ol/Image~ImageWrapper#getImage} is assigned the\n * content specified by the src. If not specified, the default is\n *\n * function(image, src) {\n * image.getImage().src = src;\n * }\n *\n * Providing a custom `imageLoadFunction` can be useful to load images with\n * post requests or - in general - through XHR requests, where the src of the\n * image element would be set to a data URI when the content is loaded.\n *\n * @typedef {function(ImageWrapper, string): void} LoadFunction\n * @api\n */\n\nclass ImageWrapper extends ImageBase {\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|undefined} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {LoadFunction} imageLoadFunction Image load function.\n */\n constructor(\n extent,\n resolution,\n pixelRatio,\n src,\n crossOrigin,\n imageLoadFunction\n ) {\n super(extent, resolution, pixelRatio, ImageState.IDLE);\n\n /**\n * @private\n * @type {string}\n */\n this.src_ = src;\n\n /**\n * @private\n * @type {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement}\n */\n this.image_ = new Image();\n if (crossOrigin !== null) {\n this.image_.crossOrigin = crossOrigin;\n }\n\n /**\n * @private\n * @type {?function():void}\n */\n this.unlisten_ = null;\n\n /**\n * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n this.state = ImageState.IDLE;\n\n /**\n * @private\n * @type {LoadFunction}\n */\n this.imageLoadFunction_ = imageLoadFunction;\n }\n\n /**\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n getImage() {\n return this.image_;\n }\n\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n handleImageError_() {\n this.state = ImageState.ERROR;\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Tracks successful image load.\n *\n * @private\n */\n handleImageLoad_() {\n if (this.resolution === undefined) {\n this.resolution = getHeight(this.extent) / this.image_.height;\n }\n this.state = ImageState.LOADED;\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n * @api\n */\n load() {\n if (this.state == ImageState.IDLE || this.state == ImageState.ERROR) {\n this.state = ImageState.LOADING;\n this.changed();\n this.imageLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(\n this.image_,\n this.handleImageLoad_.bind(this),\n this.handleImageError_.bind(this)\n );\n }\n }\n\n /**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image.\n */\n setImage(image) {\n this.image_ = image;\n this.resolution = getHeight(this.extent) / this.image_.height;\n }\n\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n unlistenImage_() {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n }\n}\n\n/**\n * @param {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} image Image element.\n * @param {function():any} loadHandler Load callback function.\n * @param {function():any} errorHandler Error callback function.\n * @return {function():void} Callback to stop listening.\n */\nexport function listenImage(image, loadHandler, errorHandler) {\n const img = /** @type {HTMLImageElement} */ (image);\n let listening = true;\n let decoding = false;\n let loaded = false;\n\n const listenerKeys = [\n listenOnce(img, EventType.LOAD, function () {\n loaded = true;\n if (!decoding) {\n loadHandler();\n }\n }),\n ];\n\n if (img.src && IMAGE_DECODE) {\n decoding = true;\n img\n .decode()\n .then(function () {\n if (listening) {\n loadHandler();\n }\n })\n .catch(function (error) {\n if (listening) {\n if (loaded) {\n loadHandler();\n } else {\n errorHandler();\n }\n }\n });\n } else {\n listenerKeys.push(listenOnce(img, EventType.ERROR, errorHandler));\n }\n\n return function unlisten() {\n listening = false;\n listenerKeys.forEach(unlistenByKey);\n };\n}\n\nexport default ImageWrapper;\n","/**\n * @module ol/ImageState\n */\n\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n ERROR: 3,\n EMPTY: 4,\n};\n","/**\n * @module ol/ImageTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\nimport {createCanvasContext2D} from './dom.js';\nimport {listenImage} from './Image.js';\n\nclass ImageTile extends Tile {\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"./Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n * @param {import(\"./Tile.js\").Options} [opt_options] Tile options.\n */\n constructor(\n tileCoord,\n state,\n src,\n crossOrigin,\n tileLoadFunction,\n opt_options\n ) {\n super(tileCoord, state, opt_options);\n\n /**\n * @private\n * @type {?string}\n */\n this.crossOrigin_ = crossOrigin;\n\n /**\n * Image URI\n *\n * @private\n * @type {string}\n */\n this.src_ = src;\n\n this.key = src;\n\n /**\n * @private\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n this.image_ = new Image();\n if (crossOrigin !== null) {\n this.image_.crossOrigin = crossOrigin;\n }\n\n /**\n * @private\n * @type {?function():void}\n */\n this.unlisten_ = null;\n\n /**\n * @private\n * @type {import(\"./Tile.js\").LoadFunction}\n */\n this.tileLoadFunction_ = tileLoadFunction;\n }\n\n /**\n * Get the HTML image element for this tile (may be a Canvas, Image, or Video).\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n getImage() {\n return this.image_;\n }\n\n /**\n * Sets an HTML image element for this tile (may be a Canvas or preloaded Image).\n * @param {HTMLCanvasElement|HTMLImageElement} element Element.\n */\n setImage(element) {\n this.image_ = element;\n this.state = TileState.LOADED;\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n handleImageError_() {\n this.state = TileState.ERROR;\n this.unlistenImage_();\n this.image_ = getBlankImage();\n this.changed();\n }\n\n /**\n * Tracks successful image load.\n *\n * @private\n */\n handleImageLoad_() {\n const image = /** @type {HTMLImageElement} */ (this.image_);\n if (image.naturalWidth && image.naturalHeight) {\n this.state = TileState.LOADED;\n } else {\n this.state = TileState.EMPTY;\n }\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Load not yet loaded URI.\n * @api\n */\n load() {\n if (this.state == TileState.ERROR) {\n this.state = TileState.IDLE;\n this.image_ = new Image();\n if (this.crossOrigin_ !== null) {\n this.image_.crossOrigin = this.crossOrigin_;\n }\n }\n if (this.state == TileState.IDLE) {\n this.state = TileState.LOADING;\n this.changed();\n this.tileLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(\n this.image_,\n this.handleImageLoad_.bind(this),\n this.handleImageError_.bind(this)\n );\n }\n }\n\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n unlistenImage_() {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n }\n}\n\n/**\n * Get a 1-pixel blank image.\n * @return {HTMLCanvasElement} Blank image.\n */\nfunction getBlankImage() {\n const ctx = createCanvasContext2D(1, 1);\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return ctx.canvas;\n}\n\nexport default ImageTile;\n","/**\n * @module ol/renderer/Map\n */\nimport Disposable from '../Disposable.js';\nimport {TRUE} from '../functions.js';\nimport {abstract} from '../util.js';\nimport {compose as composeTransform, makeInverse} from '../transform.js';\nimport {getWidth} from '../extent.js';\nimport {shared as iconImageCache} from '../style/IconImageCache.js';\nimport {inView} from '../layer/Layer.js';\nimport {wrapX} from '../coordinate.js';\n\n/**\n * @typedef HitMatch\n * @property {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @property {import(\"../layer/Layer.js\").default} layer Layer.\n * @property {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @property {number} distanceSq Squared distance.\n * @property {import(\"./vector.js\").FeatureCallback} callback Callback.\n * @template T\n */\n\n/**\n * @abstract\n */\nclass MapRenderer extends Disposable {\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n constructor(map) {\n super();\n\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default}\n */\n this.map_ = map;\n }\n\n /**\n * @abstract\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n dispatchRenderEvent(type, frameState) {\n abstract();\n }\n\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @protected\n */\n calculateMatrices2D(frameState) {\n const viewState = frameState.viewState;\n const coordinateToPixelTransform = frameState.coordinateToPixelTransform;\n const pixelToCoordinateTransform = frameState.pixelToCoordinateTransform;\n\n composeTransform(\n coordinateToPixelTransform,\n frameState.size[0] / 2,\n frameState.size[1] / 2,\n 1 / viewState.resolution,\n -1 / viewState.resolution,\n -viewState.rotation,\n -viewState.center[0],\n -viewState.center[1]\n );\n\n makeInverse(pixelToCoordinateTransform, coordinateToPixelTransform);\n }\n\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {import(\"./vector.js\").FeatureCallback} callback Feature callback.\n * @param {S} thisArg Value to use as `this` when executing `callback`.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg2 Value to use as `this` when executing `layerFilter`.\n * @return {T|undefined} Callback result.\n * @template S,T,U\n */\n forEachFeatureAtCoordinate(\n coordinate,\n frameState,\n hitTolerance,\n checkWrapped,\n callback,\n thisArg,\n layerFilter,\n thisArg2\n ) {\n let result;\n const viewState = frameState.viewState;\n\n /**\n * @param {boolean} managed Managed layer.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../layer/Layer.js\").default} layer Layer.\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @return {T|undefined} Callback result.\n */\n function forEachFeatureAtCoordinate(managed, feature, layer, geometry) {\n return callback.call(thisArg, feature, managed ? layer : null, geometry);\n }\n\n const projection = viewState.projection;\n\n const translatedCoordinate = wrapX(coordinate.slice(), projection);\n const offsets = [[0, 0]];\n if (projection.canWrapX() && checkWrapped) {\n const projectionExtent = projection.getExtent();\n const worldWidth = getWidth(projectionExtent);\n offsets.push([-worldWidth, 0], [worldWidth, 0]);\n }\n\n const layerStates = frameState.layerStatesArray;\n const numLayers = layerStates.length;\n\n const matches = /** @type {Array>} */ ([]);\n const tmpCoord = [];\n for (let i = 0; i < offsets.length; i++) {\n for (let j = numLayers - 1; j >= 0; --j) {\n const layerState = layerStates[j];\n const layer = layerState.layer;\n if (\n layer.hasRenderer() &&\n inView(layerState, viewState) &&\n layerFilter.call(thisArg2, layer)\n ) {\n const layerRenderer = layer.getRenderer();\n const source = layer.getSource();\n if (layerRenderer && source) {\n const coordinates = source.getWrapX()\n ? translatedCoordinate\n : coordinate;\n const callback = forEachFeatureAtCoordinate.bind(\n null,\n layerState.managed\n );\n tmpCoord[0] = coordinates[0] + offsets[i][0];\n tmpCoord[1] = coordinates[1] + offsets[i][1];\n result = layerRenderer.forEachFeatureAtCoordinate(\n tmpCoord,\n frameState,\n hitTolerance,\n callback,\n matches\n );\n }\n if (result) {\n return result;\n }\n }\n }\n }\n if (matches.length === 0) {\n return undefined;\n }\n const order = 1 / matches.length;\n matches.forEach((m, i) => (m.distanceSq += i * order));\n matches.sort((a, b) => a.distanceSq - b.distanceSq);\n matches.some((m) => {\n return (result = m.callback(m.feature, m.layer, m.geometry));\n });\n return result;\n }\n\n /**\n * @abstract\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {function(import(\"../layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback Layer\n * callback.\n * @param {function(import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @return {T|undefined} Callback result.\n * @template T\n */\n forEachLayerAtPixel(pixel, frameState, hitTolerance, callback, layerFilter) {\n return abstract();\n }\n\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg Value to use as `this` when executing `layerFilter`.\n * @return {boolean} Is there a feature at the given coordinate?\n * @template U\n */\n hasFeatureAtCoordinate(\n coordinate,\n frameState,\n hitTolerance,\n checkWrapped,\n layerFilter,\n thisArg\n ) {\n const hasFeature = this.forEachFeatureAtCoordinate(\n coordinate,\n frameState,\n hitTolerance,\n checkWrapped,\n TRUE,\n this,\n layerFilter,\n thisArg\n );\n\n return hasFeature !== undefined;\n }\n\n /**\n * @return {import(\"../PluggableMap.js\").default} Map.\n */\n getMap() {\n return this.map_;\n }\n\n /**\n * Render.\n * @abstract\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n renderFrame(frameState) {\n abstract();\n }\n\n /**\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n * @protected\n */\n scheduleExpireIconCache(frameState) {\n if (iconImageCache.canExpireCache()) {\n frameState.postRenderFunctions.push(expireIconCache);\n }\n }\n}\n\n/**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\nfunction expireIconCache(map, frameState) {\n iconImageCache.expire();\n}\n\nexport default MapRenderer;\n","/**\n * @module ol/renderer/Composite\n */\nimport MapRenderer from './Map.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport RenderEvent from '../render/Event.js';\nimport RenderEventType from '../render/EventType.js';\nimport SourceState from '../source/State.js';\nimport {CLASS_UNSELECTABLE} from '../css.js';\nimport {checkedFonts} from '../render/canvas.js';\nimport {inView} from '../layer/Layer.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {replaceChildren} from '../dom.js';\n\n/**\n * @classdesc\n * Canvas map renderer.\n * @api\n */\nclass CompositeMapRenderer extends MapRenderer {\n /**\n * @param {import(\"../PluggableMap.js\").default} map Map.\n */\n constructor(map) {\n super(map);\n\n /**\n * @type {import(\"../events.js\").EventsKey}\n */\n this.fontChangeListenerKey_ = listen(\n checkedFonts,\n ObjectEventType.PROPERTYCHANGE,\n map.redrawText.bind(map)\n );\n\n /**\n * @private\n * @type {HTMLDivElement}\n */\n this.element_ = document.createElement('div');\n const style = this.element_.style;\n style.position = 'absolute';\n style.width = '100%';\n style.height = '100%';\n style.zIndex = '0';\n\n this.element_.className = CLASS_UNSELECTABLE + ' ol-layers';\n\n const container = map.getViewport();\n container.insertBefore(this.element_, container.firstChild || null);\n\n /**\n * @private\n * @type {Array}\n */\n this.children_ = [];\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderedVisible_ = true;\n }\n\n /**\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n dispatchRenderEvent(type, frameState) {\n const map = this.getMap();\n if (map.hasListener(type)) {\n const event = new RenderEvent(type, undefined, frameState);\n map.dispatchEvent(event);\n }\n }\n\n disposeInternal() {\n unlistenByKey(this.fontChangeListenerKey_);\n this.element_.parentNode.removeChild(this.element_);\n super.disposeInternal();\n }\n\n /**\n * Render.\n * @param {?import(\"../PluggableMap.js\").FrameState} frameState Frame state.\n */\n renderFrame(frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element_.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n\n this.calculateMatrices2D(frameState);\n this.dispatchRenderEvent(RenderEventType.PRECOMPOSE, frameState);\n\n const layerStatesArray = frameState.layerStatesArray.sort(function (a, b) {\n return a.zIndex - b.zIndex;\n });\n const viewState = frameState.viewState;\n\n this.children_.length = 0;\n /**\n * @type {Array}\n */\n const declutterLayers = [];\n let previousElement = null;\n for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n const layerState = layerStatesArray[i];\n frameState.layerIndex = i;\n\n const layer = layerState.layer;\n const sourceState = layer.getSourceState();\n if (\n !inView(layerState, viewState) ||\n (sourceState != SourceState.READY &&\n sourceState != SourceState.UNDEFINED)\n ) {\n layer.unrender();\n continue;\n }\n\n const element = layer.render(frameState, previousElement);\n if (!element) {\n continue;\n }\n if (element !== previousElement) {\n this.children_.push(element);\n previousElement = element;\n }\n if ('getDeclutter' in layer) {\n declutterLayers.push(\n /** @type {import(\"../layer/BaseVector.js\").default} */ (layer)\n );\n }\n }\n for (let i = declutterLayers.length - 1; i >= 0; --i) {\n declutterLayers[i].renderDeclutter(frameState);\n }\n\n replaceChildren(this.element_, this.children_);\n\n this.dispatchRenderEvent(RenderEventType.POSTCOMPOSE, frameState);\n\n if (!this.renderedVisible_) {\n this.element_.style.display = '';\n this.renderedVisible_ = true;\n }\n\n this.scheduleExpireIconCache(frameState);\n }\n\n /**\n * @param {import(\"../pixel.js\").Pixel} pixel Pixel.\n * @param {import(\"../PluggableMap.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {function(import(\"../layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback Layer\n * callback.\n * @param {function(import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @return {T|undefined} Callback result.\n * @template T\n */\n forEachLayerAtPixel(pixel, frameState, hitTolerance, callback, layerFilter) {\n const viewState = frameState.viewState;\n\n const layerStates = frameState.layerStatesArray;\n const numLayers = layerStates.length;\n\n for (let i = numLayers - 1; i >= 0; --i) {\n const layerState = layerStates[i];\n const layer = layerState.layer;\n if (\n layer.hasRenderer() &&\n inView(layerState, viewState) &&\n layerFilter(layer)\n ) {\n const layerRenderer = layer.getRenderer();\n const data = layerRenderer.getDataAtPixel(\n pixel,\n frameState,\n hitTolerance\n );\n if (data) {\n const result = callback(layer, data);\n if (result) {\n return result;\n }\n }\n }\n }\n return undefined;\n }\n}\n\nexport default CompositeMapRenderer;\n","/**\n * @module ol/MapEvent\n */\nimport Event from './events/Event.js';\n\n/**\n * @classdesc\n * Events emitted as map events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map event.\n */\nclass MapEvent extends Event {\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {?import(\"./PluggableMap.js\").FrameState} [opt_frameState] Frame state.\n */\n constructor(type, map, opt_frameState) {\n super(type);\n\n /**\n * The map where the event occurred.\n * @type {import(\"./PluggableMap.js\").default}\n * @api\n */\n this.map = map;\n\n /**\n * The frame state at the time of the event.\n * @type {?import(\"./PluggableMap.js\").FrameState}\n * @api\n */\n this.frameState = opt_frameState !== undefined ? opt_frameState : null;\n }\n}\n\nexport default MapEvent;\n","/**\n * @module ol/MapBrowserEvent\n */\nimport MapEvent from './MapEvent.js';\n\n/**\n * @classdesc\n * Events emitted as map browser events are instances of this type.\n * See {@link module:ol/PluggableMap~PluggableMap} for which events trigger a map browser event.\n * @template {UIEvent} EVENT\n */\nclass MapBrowserEvent extends MapEvent {\n /**\n * @param {string} type Event type.\n * @param {import(\"./PluggableMap.js\").default} map Map.\n * @param {EVENT} originalEvent Original event.\n * @param {boolean} [opt_dragging] Is the map currently being dragged?\n * @param {?import(\"./PluggableMap.js\").FrameState} [opt_frameState] Frame state.\n */\n constructor(type, map, originalEvent, opt_dragging, opt_frameState) {\n super(type, map, opt_frameState);\n\n /**\n * The original browser event.\n * @const\n * @type {EVENT}\n * @api\n */\n this.originalEvent = originalEvent;\n\n /**\n * The map pixel relative to the viewport corresponding to the original browser event.\n * @type {?import(\"./pixel.js\").Pixel}\n */\n this.pixel_ = null;\n\n /**\n * The coordinate in the user projection corresponding to the original browser event.\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n this.coordinate_ = null;\n\n /**\n * Indicates if the map is currently being dragged. Only set for\n * `POINTERDRAG` and `POINTERMOVE` events. Default is `false`.\n *\n * @type {boolean}\n * @api\n */\n this.dragging = opt_dragging !== undefined ? opt_dragging : false;\n }\n\n /**\n * The map pixel relative to the viewport corresponding to the original event.\n * @type {import(\"./pixel.js\").Pixel}\n * @api\n */\n get pixel() {\n if (!this.pixel_) {\n this.pixel_ = this.map.getEventPixel(this.originalEvent);\n }\n return this.pixel_;\n }\n set pixel(pixel) {\n this.pixel_ = pixel;\n }\n\n /**\n * The coordinate corresponding to the original browser event. This will be in the user\n * projection if one is set. Otherwise it will be in the view projection.\n * @type {import(\"./coordinate.js\").Coordinate}\n * @api\n */\n get coordinate() {\n if (!this.coordinate_) {\n this.coordinate_ = this.map.getCoordinateFromPixel(this.pixel);\n }\n return this.coordinate_;\n }\n set coordinate(coordinate) {\n this.coordinate_ = coordinate;\n }\n\n /**\n * Prevents the default browser action.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault.\n * @api\n */\n preventDefault() {\n super.preventDefault();\n if ('preventDefault' in this.originalEvent) {\n /** @type {UIEvent} */ (this.originalEvent).preventDefault();\n }\n }\n\n /**\n * Prevents further propagation of the current event.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation.\n * @api\n */\n stopPropagation() {\n super.stopPropagation();\n if ('stopPropagation' in this.originalEvent) {\n /** @type {UIEvent} */ (this.originalEvent).stopPropagation();\n }\n }\n}\n\nexport default MapBrowserEvent;\n","/**\n * @module ol/MapBrowserEventType\n */\nimport EventType from './events/EventType.js';\n\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n /**\n * A true single click with no dragging and no double click. Note that this\n * event is delayed by 250 ms to ensure that it is not a double click.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#singleclick\n * @api\n */\n SINGLECLICK: 'singleclick',\n\n /**\n * A click with no dragging. A double click will fire two of this.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#click\n * @api\n */\n CLICK: EventType.CLICK,\n\n /**\n * A true double click, with no dragging.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#dblclick\n * @api\n */\n DBLCLICK: EventType.DBLCLICK,\n\n /**\n * Triggered when a pointer is dragged.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointerdrag\n * @api\n */\n POINTERDRAG: 'pointerdrag',\n\n /**\n * Triggered when a pointer is moved. Note that on touch devices this is\n * triggered when the map is panned, so is not the same as mousemove.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointermove\n * @api\n */\n POINTERMOVE: 'pointermove',\n\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel',\n};\n\n/***\n * @typedef {'singleclick'|'click'|'dblclick'|'pointerdrag'|'pointermove'} Types\n */\n","/**\n * @module ol/pointer/EventType\n */\n\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n POINTERMOVE: 'pointermove',\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel',\n};\n","/**\n * @module ol/MapBrowserEventHandler\n */\n\nimport EventType from './events/EventType.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport Target from './events/Target.js';\nimport {PASSIVE_EVENT_LISTENERS} from './has.js';\nimport {VOID} from './functions.js';\nimport {listen, unlistenByKey} from './events.js';\n\nclass MapBrowserEventHandler extends Target {\n /**\n * @param {import(\"./PluggableMap.js\").default} map The map with the viewport to listen to events on.\n * @param {number} [moveTolerance] The minimal distance the pointer must travel to trigger a move.\n */\n constructor(map, moveTolerance) {\n super(map);\n\n /**\n * This is the element that we will listen to the real events on.\n * @type {import(\"./PluggableMap.js\").default}\n * @private\n */\n this.map_ = map;\n\n /**\n * @type {any}\n * @private\n */\n this.clickTimeoutId_;\n\n /**\n * Emulate dblclick and singleclick. Will be true when only one pointer is active.\n * @type {boolean}\n */\n this.emulateClicks_ = false;\n\n /**\n * @type {boolean}\n * @private\n */\n this.dragging_ = false;\n\n /**\n * @type {!Array}\n * @private\n */\n this.dragListenerKeys_ = [];\n\n /**\n * @type {number}\n * @private\n */\n this.moveTolerance_ = moveTolerance === undefined ? 1 : moveTolerance;\n\n /**\n * The most recent \"down\" type event (or null if none have occurred).\n * Set on pointerdown.\n * @type {PointerEvent|null}\n * @private\n */\n this.down_ = null;\n\n const element = this.map_.getViewport();\n\n /**\n * @type {number}\n * @private\n */\n this.activePointers_ = 0;\n\n /**\n * @type {!Object}\n * @private\n */\n this.trackedTouches_ = {};\n\n this.element_ = element;\n\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n this.pointerdownListenerKey_ = listen(\n element,\n PointerEventType.POINTERDOWN,\n this.handlePointerDown_,\n this\n );\n\n /**\n * @type {PointerEvent}\n * @private\n */\n this.originalPointerMoveEvent_;\n\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n this.relayedListenerKey_ = listen(\n element,\n PointerEventType.POINTERMOVE,\n this.relayEvent_,\n this\n );\n\n /**\n * @private\n */\n this.boundHandleTouchMove_ = this.handleTouchMove_.bind(this);\n\n this.element_.addEventListener(\n EventType.TOUCHMOVE,\n this.boundHandleTouchMove_,\n PASSIVE_EVENT_LISTENERS ? {passive: false} : false\n );\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n emulateClick_(pointerEvent) {\n let newEvent = new MapBrowserEvent(\n MapBrowserEventType.CLICK,\n this.map_,\n pointerEvent\n );\n this.dispatchEvent(newEvent);\n if (this.clickTimeoutId_ !== undefined) {\n // double-click\n clearTimeout(this.clickTimeoutId_);\n this.clickTimeoutId_ = undefined;\n newEvent = new MapBrowserEvent(\n MapBrowserEventType.DBLCLICK,\n this.map_,\n pointerEvent\n );\n this.dispatchEvent(newEvent);\n } else {\n // click\n this.clickTimeoutId_ = setTimeout(\n /** @this {MapBrowserEventHandler} */\n function () {\n this.clickTimeoutId_ = undefined;\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.SINGLECLICK,\n this.map_,\n pointerEvent\n );\n this.dispatchEvent(newEvent);\n }.bind(this),\n 250\n );\n }\n }\n\n /**\n * Keeps track on how many pointers are currently active.\n *\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n updateActivePointers_(pointerEvent) {\n const event = pointerEvent;\n\n if (\n event.type == MapBrowserEventType.POINTERUP ||\n event.type == MapBrowserEventType.POINTERCANCEL\n ) {\n delete this.trackedTouches_[event.pointerId];\n } else if (event.type == MapBrowserEventType.POINTERDOWN) {\n this.trackedTouches_[event.pointerId] = true;\n }\n this.activePointers_ = Object.keys(this.trackedTouches_).length;\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerUp_(pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.POINTERUP,\n this.map_,\n pointerEvent\n );\n this.dispatchEvent(newEvent);\n\n // We emulate click events on left mouse button click, touch contact, and pen\n // contact. isMouseActionButton returns true in these cases (evt.button is set\n // to 0).\n // See http://www.w3.org/TR/pointerevents/#button-states\n // We only fire click, singleclick, and doubleclick if nobody has called\n // event.preventDefault().\n if (\n this.emulateClicks_ &&\n !newEvent.defaultPrevented &&\n !this.dragging_ &&\n this.isMouseActionButton_(pointerEvent)\n ) {\n this.emulateClick_(this.down_);\n }\n\n if (this.activePointers_ === 0) {\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.dragging_ = false;\n this.down_ = null;\n }\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} If the left mouse button was pressed.\n * @private\n */\n isMouseActionButton_(pointerEvent) {\n return pointerEvent.button === 0;\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerDown_(pointerEvent) {\n this.emulateClicks_ = this.activePointers_ === 0;\n this.updateActivePointers_(pointerEvent);\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.POINTERDOWN,\n this.map_,\n pointerEvent\n );\n this.dispatchEvent(newEvent);\n\n // Store a copy of the down event\n this.down_ = /** @type {PointerEvent} */ ({});\n for (const property in pointerEvent) {\n const value = pointerEvent[property];\n this.down_[property] = typeof value === 'function' ? VOID : value;\n }\n\n if (this.dragListenerKeys_.length === 0) {\n const doc = this.map_.getOwnerDocument();\n this.dragListenerKeys_.push(\n listen(\n doc,\n MapBrowserEventType.POINTERMOVE,\n this.handlePointerMove_,\n this\n ),\n listen(doc, MapBrowserEventType.POINTERUP, this.handlePointerUp_, this),\n /* Note that the listener for `pointercancel is set up on\n * `pointerEventHandler_` and not `documentPointerEventHandler_` like\n * the `pointerup` and `pointermove` listeners.\n *\n * The reason for this is the following: `TouchSource.vacuumTouches_()`\n * issues `pointercancel` events, when there was no `touchend` for a\n * `touchstart`. Now, let's say a first `touchstart` is registered on\n * `pointerEventHandler_`. The `documentPointerEventHandler_` is set up.\n * But `documentPointerEventHandler_` doesn't know about the first\n * `touchstart`. If there is no `touchend` for the `touchstart`, we can\n * only receive a `touchcancel` from `pointerEventHandler_`, because it is\n * only registered there.\n */\n listen(\n this.element_,\n MapBrowserEventType.POINTERCANCEL,\n this.handlePointerUp_,\n this\n )\n );\n if (this.element_.getRootNode && this.element_.getRootNode() !== doc) {\n this.dragListenerKeys_.push(\n listen(\n this.element_.getRootNode(),\n MapBrowserEventType.POINTERUP,\n this.handlePointerUp_,\n this\n )\n );\n }\n }\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerMove_(pointerEvent) {\n // Between pointerdown and pointerup, pointermove events are triggered.\n // To avoid a 'false' touchmove event to be dispatched, we test if the pointer\n // moved a significant distance.\n if (this.isMoving_(pointerEvent)) {\n this.dragging_ = true;\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.POINTERDRAG,\n this.map_,\n pointerEvent,\n this.dragging_\n );\n this.dispatchEvent(newEvent);\n }\n }\n\n /**\n * Wrap and relay a pointer event. Note that this requires that the type\n * string for the MapBrowserEvent matches the PointerEvent type.\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n relayEvent_(pointerEvent) {\n this.originalPointerMoveEvent_ = pointerEvent;\n const dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(\n new MapBrowserEvent(pointerEvent.type, this.map_, pointerEvent, dragging)\n );\n }\n\n /**\n * Flexible handling of a `touch-action: none` css equivalent: because calling\n * `preventDefault()` on a `pointermove` event does not stop native page scrolling\n * and zooming, we also listen for `touchmove` and call `preventDefault()` on it\n * when an interaction (currently `DragPan` handles the event.\n * @param {TouchEvent} event Event.\n * @private\n */\n handleTouchMove_(event) {\n // Due to https://github.com/mpizenberg/elm-pep/issues/2, `this.originalPointerMoveEvent_`\n // may not be initialized yet when we get here on a platform without native pointer events.\n const originalEvent = this.originalPointerMoveEvent_;\n if (\n (!originalEvent || originalEvent.defaultPrevented) &&\n (typeof event.cancelable !== 'boolean' || event.cancelable === true)\n ) {\n event.preventDefault();\n }\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} Is moving.\n * @private\n */\n isMoving_(pointerEvent) {\n return (\n this.dragging_ ||\n Math.abs(pointerEvent.clientX - this.down_.clientX) >\n this.moveTolerance_ ||\n Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_\n );\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n if (this.relayedListenerKey_) {\n unlistenByKey(this.relayedListenerKey_);\n this.relayedListenerKey_ = null;\n }\n this.element_.removeEventListener(\n EventType.TOUCHMOVE,\n this.boundHandleTouchMove_\n );\n\n if (this.pointerdownListenerKey_) {\n unlistenByKey(this.pointerdownListenerKey_);\n this.pointerdownListenerKey_ = null;\n }\n\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n\n this.element_ = null;\n super.disposeInternal();\n }\n}\n\nexport default MapBrowserEventHandler;\n","/**\n * @module ol/MapProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n LAYERGROUP: 'layergroup',\n SIZE: 'size',\n TARGET: 'target',\n VIEW: 'view',\n};\n","/**\n * @module ol/structs/PriorityQueue\n */\nimport {assert} from '../asserts.js';\nimport {clear} from '../obj.js';\n\n/**\n * @type {number}\n */\nexport const DROP = Infinity;\n\n/**\n * @classdesc\n * Priority queue.\n *\n * The implementation is inspired from the Closure Library's Heap class and\n * Python's heapq module.\n *\n * See https://github.com/google/closure-library/blob/master/closure/goog/structs/heap.js\n * and https://hg.python.org/cpython/file/2.7/Lib/heapq.py.\n *\n * @template T\n */\nclass PriorityQueue {\n /**\n * @param {function(T): number} priorityFunction Priority function.\n * @param {function(T): string} keyFunction Key function.\n */\n constructor(priorityFunction, keyFunction) {\n /**\n * @type {function(T): number}\n * @private\n */\n this.priorityFunction_ = priorityFunction;\n\n /**\n * @type {function(T): string}\n * @private\n */\n this.keyFunction_ = keyFunction;\n\n /**\n * @type {Array}\n * @private\n */\n this.elements_ = [];\n\n /**\n * @type {Array}\n * @private\n */\n this.priorities_ = [];\n\n /**\n * @type {!Object}\n * @private\n */\n this.queuedElements_ = {};\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n clear() {\n this.elements_.length = 0;\n this.priorities_.length = 0;\n clear(this.queuedElements_);\n }\n\n /**\n * Remove and return the highest-priority element. O(log N).\n * @return {T} Element.\n */\n dequeue() {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const element = elements[0];\n if (elements.length == 1) {\n elements.length = 0;\n priorities.length = 0;\n } else {\n elements[0] = elements.pop();\n priorities[0] = priorities.pop();\n this.siftUp_(0);\n }\n const elementKey = this.keyFunction_(element);\n delete this.queuedElements_[elementKey];\n return element;\n }\n\n /**\n * Enqueue an element. O(log N).\n * @param {T} element Element.\n * @return {boolean} The element was added to the queue.\n */\n enqueue(element) {\n assert(!(this.keyFunction_(element) in this.queuedElements_), 31); // Tried to enqueue an `element` that was already added to the queue\n const priority = this.priorityFunction_(element);\n if (priority != DROP) {\n this.elements_.push(element);\n this.priorities_.push(priority);\n this.queuedElements_[this.keyFunction_(element)] = true;\n this.siftDown_(0, this.elements_.length - 1);\n return true;\n }\n return false;\n }\n\n /**\n * @return {number} Count.\n */\n getCount() {\n return this.elements_.length;\n }\n\n /**\n * Gets the index of the left child of the node at the given index.\n * @param {number} index The index of the node to get the left child for.\n * @return {number} The index of the left child.\n * @private\n */\n getLeftChildIndex_(index) {\n return index * 2 + 1;\n }\n\n /**\n * Gets the index of the right child of the node at the given index.\n * @param {number} index The index of the node to get the right child for.\n * @return {number} The index of the right child.\n * @private\n */\n getRightChildIndex_(index) {\n return index * 2 + 2;\n }\n\n /**\n * Gets the index of the parent of the node at the given index.\n * @param {number} index The index of the node to get the parent for.\n * @return {number} The index of the parent.\n * @private\n */\n getParentIndex_(index) {\n return (index - 1) >> 1;\n }\n\n /**\n * Make this a heap. O(N).\n * @private\n */\n heapify_() {\n let i;\n for (i = (this.elements_.length >> 1) - 1; i >= 0; i--) {\n this.siftUp_(i);\n }\n }\n\n /**\n * @return {boolean} Is empty.\n */\n isEmpty() {\n return this.elements_.length === 0;\n }\n\n /**\n * @param {string} key Key.\n * @return {boolean} Is key queued.\n */\n isKeyQueued(key) {\n return key in this.queuedElements_;\n }\n\n /**\n * @param {T} element Element.\n * @return {boolean} Is queued.\n */\n isQueued(element) {\n return this.isKeyQueued(this.keyFunction_(element));\n }\n\n /**\n * @param {number} index The index of the node to move down.\n * @private\n */\n siftUp_(index) {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const count = elements.length;\n const element = elements[index];\n const priority = priorities[index];\n const startIndex = index;\n\n while (index < count >> 1) {\n const lIndex = this.getLeftChildIndex_(index);\n const rIndex = this.getRightChildIndex_(index);\n\n const smallerChildIndex =\n rIndex < count && priorities[rIndex] < priorities[lIndex]\n ? rIndex\n : lIndex;\n\n elements[index] = elements[smallerChildIndex];\n priorities[index] = priorities[smallerChildIndex];\n index = smallerChildIndex;\n }\n\n elements[index] = element;\n priorities[index] = priority;\n this.siftDown_(startIndex, index);\n }\n\n /**\n * @param {number} startIndex The index of the root.\n * @param {number} index The index of the node to move up.\n * @private\n */\n siftDown_(startIndex, index) {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const element = elements[index];\n const priority = priorities[index];\n\n while (index > startIndex) {\n const parentIndex = this.getParentIndex_(index);\n if (priorities[parentIndex] > priority) {\n elements[index] = elements[parentIndex];\n priorities[index] = priorities[parentIndex];\n index = parentIndex;\n } else {\n break;\n }\n }\n elements[index] = element;\n priorities[index] = priority;\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n reprioritize() {\n const priorityFunction = this.priorityFunction_;\n const elements = this.elements_;\n const priorities = this.priorities_;\n let index = 0;\n const n = elements.length;\n let element, i, priority;\n for (i = 0; i < n; ++i) {\n element = elements[i];\n priority = priorityFunction(element);\n if (priority == DROP) {\n delete this.queuedElements_[this.keyFunction_(element)];\n } else {\n priorities[index] = priority;\n elements[index++] = element;\n }\n }\n elements.length = index;\n priorities.length = index;\n this.heapify_();\n }\n}\n\nexport default PriorityQueue;\n","/**\n * @module ol/TileQueue\n */\nimport EventType from './events/EventType.js';\nimport PriorityQueue, {DROP} from './structs/PriorityQueue.js';\nimport TileState from './TileState.js';\n\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import(\"./coordinate.js\").Coordinate, number): number} PriorityFunction\n */\n\nclass TileQueue extends PriorityQueue {\n /**\n * @param {PriorityFunction} tilePriorityFunction Tile priority function.\n * @param {function(): ?} tileChangeCallback Function called on each tile change event.\n */\n constructor(tilePriorityFunction, tileChangeCallback) {\n super(\n /**\n * @param {Array} element Element.\n * @return {number} Priority.\n */\n function (element) {\n return tilePriorityFunction.apply(null, element);\n },\n /**\n * @param {Array} element Element.\n * @return {string} Key.\n */\n function (element) {\n return /** @type {import(\"./Tile.js\").default} */ (element[0]).getKey();\n }\n );\n\n /** @private */\n this.boundHandleTileChange_ = this.handleTileChange.bind(this);\n\n /**\n * @private\n * @type {function(): ?}\n */\n this.tileChangeCallback_ = tileChangeCallback;\n\n /**\n * @private\n * @type {number}\n */\n this.tilesLoading_ = 0;\n\n /**\n * @private\n * @type {!Object}\n */\n this.tilesLoadingKeys_ = {};\n }\n\n /**\n * @param {Array} element Element.\n * @return {boolean} The element was added to the queue.\n */\n enqueue(element) {\n const added = super.enqueue(element);\n if (added) {\n const tile = element[0];\n tile.addEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n return added;\n }\n\n /**\n * @return {number} Number of tiles loading.\n */\n getTilesLoading() {\n return this.tilesLoading_;\n }\n\n /**\n * @param {import(\"./events/Event.js\").default} event Event.\n * @protected\n */\n handleTileChange(event) {\n const tile = /** @type {import(\"./Tile.js\").default} */ (event.target);\n const state = tile.getState();\n if (\n state === TileState.LOADED ||\n state === TileState.ERROR ||\n state === TileState.EMPTY\n ) {\n tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n const tileKey = tile.getKey();\n if (tileKey in this.tilesLoadingKeys_) {\n delete this.tilesLoadingKeys_[tileKey];\n --this.tilesLoading_;\n }\n this.tileChangeCallback_();\n }\n }\n\n /**\n * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n * @param {number} maxNewLoads Maximum number of new tiles to load.\n */\n loadMoreTiles(maxTotalLoading, maxNewLoads) {\n let newLoads = 0;\n let state, tile, tileKey;\n while (\n this.tilesLoading_ < maxTotalLoading &&\n newLoads < maxNewLoads &&\n this.getCount() > 0\n ) {\n tile = /** @type {import(\"./Tile.js\").default} */ (this.dequeue()[0]);\n tileKey = tile.getKey();\n state = tile.getState();\n if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n this.tilesLoadingKeys_[tileKey] = true;\n ++this.tilesLoading_;\n ++newLoads;\n tile.load();\n }\n }\n }\n}\n\nexport default TileQueue;\n\n/**\n * @param {import('./PluggableMap.js').FrameState} frameState Frame state.\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\nexport function getTilePriority(\n frameState,\n tile,\n tileSourceKey,\n tileCenter,\n tileResolution\n) {\n // Filter out tiles at higher zoom levels than the current zoom level, or that\n // are outside the visible extent.\n if (!frameState || !(tileSourceKey in frameState.wantedTiles)) {\n return DROP;\n }\n if (!frameState.wantedTiles[tileSourceKey][tile.getKey()]) {\n return DROP;\n }\n // Prioritize the highest zoom level tiles closest to the focus.\n // Tiles at higher zoom levels are prioritized using Math.log(tileResolution).\n // Within a zoom level, tiles are prioritized by the distance in pixels between\n // the center of the tile and the center of the viewport. The factor of 65536\n // means that the prioritization should behave as desired for tiles up to\n // 65536 * Math.log(2) = 45426 pixels from the focus.\n const center = frameState.viewState.center;\n const deltaX = tileCenter[0] - center[0];\n const deltaY = tileCenter[1] - center[1];\n return (\n 65536 * Math.log(tileResolution) +\n Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution\n );\n}\n","/**\n * @module ol/PluggableMap\n */\nimport BaseObject from './Object.js';\nimport Collection from './Collection.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport EventType from './events/EventType.js';\nimport Layer from './layer/Layer.js';\nimport LayerGroup, {GroupEvent} from './layer/Group.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventHandler from './MapBrowserEventHandler.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapEvent from './MapEvent.js';\nimport MapEventType from './MapEventType.js';\nimport MapProperty from './MapProperty.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport RenderEventType from './render/EventType.js';\nimport TileQueue, {getTilePriority} from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport {DEVICE_PIXEL_RATIO, PASSIVE_EVENT_LISTENERS} from './has.js';\nimport {TRUE} from './functions.js';\nimport {\n apply as applyTransform,\n create as createTransform,\n} from './transform.js';\nimport {assert} from './asserts.js';\nimport {\n clone,\n createOrUpdateEmpty,\n equals,\n getForViewAndSize,\n isEmpty,\n} from './extent.js';\nimport {fromUserCoordinate, toUserCoordinate} from './proj.js';\nimport {getUid} from './util.js';\nimport {hasArea} from './size.js';\nimport {listen, unlistenByKey} from './events.js';\nimport {removeNode} from './dom.js';\n\n/**\n * State of the current frame. Only `pixelRatio`, `time` and `viewState` should\n * be used in applications.\n * @typedef {Object} FrameState\n * @property {number} pixelRatio The pixel ratio of the frame.\n * @property {number} time The time when rendering of the frame was requested.\n * @property {import(\"./View.js\").State} viewState The state of the current view.\n * @property {boolean} animate Animate.\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform CoordinateToPixelTransform.\n * @property {import(\"rbush\").default} declutterTree DeclutterTree.\n * @property {null|import(\"./extent.js\").Extent} extent Extent.\n * @property {import(\"./extent.js\").Extent} [nextExtent] Next extent during an animation series.\n * @property {number} index Index.\n * @property {Array} layerStatesArray LayerStatesArray.\n * @property {number} layerIndex LayerIndex.\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform PixelToCoordinateTransform.\n * @property {Array} postRenderFunctions PostRenderFunctions.\n * @property {import(\"./size.js\").Size} size Size.\n * @property {TileQueue} tileQueue TileQueue.\n * @property {!Object>} usedTiles UsedTiles.\n * @property {Array} viewHints ViewHints.\n * @property {!Object>} wantedTiles WantedTiles.\n * @property {string} mapId The id of the map.\n * @property {Object} renderTargets Identifiers of previously rendered elements.\n */\n\n/**\n * @typedef {function(PluggableMap, ?FrameState): any} PostRenderFunction\n */\n\n/**\n * @typedef {Object} AtPixelOptions\n * @property {undefined|function(import(\"./layer/Layer.js\").default): boolean} [layerFilter] Layer filter\n * function. The filter function will receive one argument, the\n * {@link module:ol/layer/Layer~Layer layer-candidate} and it should return a boolean value.\n * Only layers which are visible and for which this function returns `true`\n * will be tested for features. By default, all visible layers will be tested.\n * @property {number} [hitTolerance=0] Hit-detection tolerance in css pixels. Pixels\n * inside the radius around the given position will be checked for features.\n * @property {boolean} [checkWrapped=true] Check-Wrapped Will check for for wrapped geometries inside the range of\n * +/- 1 world width. Works only if a projection is used that can be wrapped.\n */\n\n/**\n * @typedef {Object} MapOptionsInternal\n * @property {Collection} [controls] Controls.\n * @property {Collection} [interactions] Interactions.\n * @property {HTMLElement|Document} keyboardEventTarget KeyboardEventTarget.\n * @property {Collection} overlays Overlays.\n * @property {Object} values Values.\n */\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:layergroup'|'change:size'|'change:target'|'change:view'} MapObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} PluggableMapOnSignature\n */\n\n/**\n * Object literal with config options for the map.\n * @typedef {Object} MapOptions\n * @property {Collection|Array} [controls]\n * Controls initially added to the map. If not specified,\n * {@link module:ol/control.defaults} is used.\n * @property {number} [pixelRatio=window.devicePixelRatio] The ratio between\n * physical pixels and device-independent pixels (dips) on the device.\n * @property {Collection|Array} [interactions]\n * Interactions that are initially added to the map. If not specified,\n * {@link module:ol/interaction.defaults} is used.\n * @property {HTMLElement|Document|string} [keyboardEventTarget] The element to\n * listen to keyboard events on. This determines when the `KeyboardPan` and\n * `KeyboardZoom` interactions trigger. For example, if this option is set to\n * `document` the keyboard interactions will always trigger. If this option is\n * not specified, the element the library listens to keyboard events on is the\n * map target (i.e. the user-provided div for the map). If this is not\n * `document`, the target element needs to be focused for key events to be\n * emitted, requiring that the target element has a `tabindex` attribute.\n * @property {Array|Collection|LayerGroup} [layers]\n * Layers. If this is not defined, a map with no layers will be rendered. Note\n * that layers are rendered in the order supplied, so if you want, for example,\n * a vector layer to appear on top of a tile layer, it must come after the tile\n * layer.\n * @property {number} [maxTilesLoading=16] Maximum number tiles to load\n * simultaneously.\n * @property {number} [moveTolerance=1] The minimum distance in pixels the\n * cursor must move to be detected as a map move event instead of a click.\n * Increasing this value can make it easier to click on the map.\n * @property {Collection|Array} [overlays]\n * Overlays initially added to the map. By default, no overlays are added.\n * @property {HTMLElement|string} [target] The container for the map, either the\n * element itself or the `id` of the element. If not specified at construction\n * time, {@link module:ol/Map~Map#setTarget} must be called for the map to be\n * rendered. If passed by element, the container can be in a secondary document.\n * @property {View|Promise} [view] The map's view. No layer sources will be\n * fetched unless this is specified at construction time or through\n * {@link module:ol/Map~Map#setView}.\n */\n\n/**\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n */\nfunction removeLayerMapProperty(layer) {\n if (layer instanceof Layer) {\n layer.setMapInternal(null);\n return;\n }\n if (layer instanceof LayerGroup) {\n layer.getLayers().forEach(removeLayerMapProperty);\n }\n}\n\n/**\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @param {PluggableMap} map Map.\n */\nfunction setLayerMapProperty(layer, map) {\n if (layer instanceof Layer) {\n layer.setMapInternal(map);\n return;\n }\n if (layer instanceof LayerGroup) {\n const layers = layer.getLayers().getArray();\n for (let i = 0, ii = layers.length; i < ii; ++i) {\n setLayerMapProperty(layers[i], map);\n }\n }\n}\n\n/**\n * @fires import(\"./MapBrowserEvent.js\").MapBrowserEvent\n * @fires import(\"./MapEvent.js\").MapEvent\n * @fires import(\"./render/Event.js\").default#precompose\n * @fires import(\"./render/Event.js\").default#postcompose\n * @fires import(\"./render/Event.js\").default#rendercomplete\n * @api\n */\nclass PluggableMap extends BaseObject {\n /**\n * @param {MapOptions} options Map options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {PluggableMapOnSignature}\n */\n this.on;\n\n /***\n * @type {PluggableMapOnSignature}\n */\n this.once;\n\n /***\n * @type {PluggableMapOnSignature}\n */\n this.un;\n\n const optionsInternal = createOptionsInternal(options);\n\n /**\n * @private\n * @type {boolean|undefined}\n */\n this.renderComplete_;\n\n /**\n * @private\n * @type {boolean}\n */\n this.loaded_ = true;\n\n /** @private */\n this.boundHandleBrowserEvent_ = this.handleBrowserEvent.bind(this);\n\n /**\n * @type {number}\n * @private\n */\n this.maxTilesLoading_ =\n options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n\n /**\n * @private\n * @type {number}\n */\n this.pixelRatio_ =\n options.pixelRatio !== undefined\n ? options.pixelRatio\n : DEVICE_PIXEL_RATIO;\n\n /**\n * @private\n * @type {*}\n */\n this.postRenderTimeoutHandle_;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.animationDelayKey_;\n\n /**\n * @private\n */\n this.animationDelay_ = /** @this {PluggableMap} */ function () {\n this.animationDelayKey_ = undefined;\n this.renderFrame_(Date.now());\n }.bind(this);\n\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n this.coordinateToPixelTransform_ = createTransform();\n\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n this.pixelToCoordinateTransform_ = createTransform();\n\n /**\n * @private\n * @type {number}\n */\n this.frameIndex_ = 0;\n\n /**\n * @private\n * @type {?FrameState}\n */\n this.frameState_ = null;\n\n /**\n * The extent at the previous 'moveend' event.\n * @private\n * @type {import(\"./extent.js\").Extent}\n */\n this.previousExtent_ = null;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.viewPropertyListenerKey_ = null;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.viewChangeListenerKey_ = null;\n\n /**\n * @private\n * @type {?Array}\n */\n this.layerGroupPropertyListenerKeys_ = null;\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.viewport_ = document.createElement('div');\n this.viewport_.className =\n 'ol-viewport' + ('ontouchstart' in window ? ' ol-touch' : '');\n this.viewport_.style.position = 'relative';\n this.viewport_.style.overflow = 'hidden';\n this.viewport_.style.width = '100%';\n this.viewport_.style.height = '100%';\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.overlayContainer_ = document.createElement('div');\n this.overlayContainer_.style.position = 'absolute';\n this.overlayContainer_.style.zIndex = '0';\n this.overlayContainer_.style.width = '100%';\n this.overlayContainer_.style.height = '100%';\n this.overlayContainer_.style.pointerEvents = 'none';\n this.overlayContainer_.className = 'ol-overlaycontainer';\n this.viewport_.appendChild(this.overlayContainer_);\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.overlayContainerStopEvent_ = document.createElement('div');\n this.overlayContainerStopEvent_.style.position = 'absolute';\n this.overlayContainerStopEvent_.style.zIndex = '0';\n this.overlayContainerStopEvent_.style.width = '100%';\n this.overlayContainerStopEvent_.style.height = '100%';\n this.overlayContainerStopEvent_.style.pointerEvents = 'none';\n this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n this.viewport_.appendChild(this.overlayContainerStopEvent_);\n\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n this.mapBrowserEventHandler_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.moveTolerance_ = options.moveTolerance;\n\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n\n /**\n * @private\n * @type {?Array}\n */\n this.targetChangeHandlerKeys_ = null;\n\n /**\n * @type {Collection}\n * @protected\n */\n this.controls = optionsInternal.controls || new Collection();\n\n /**\n * @type {Collection}\n * @protected\n */\n this.interactions = optionsInternal.interactions || new Collection();\n\n /**\n * @type {Collection}\n * @private\n */\n this.overlays_ = optionsInternal.overlays;\n\n /**\n * A lookup of overlays by id.\n * @private\n * @type {Object}\n */\n this.overlayIdIndex_ = {};\n\n /**\n * @type {import(\"./renderer/Map.js\").default|null}\n * @private\n */\n this.renderer_ = null;\n\n /**\n * @private\n * @type {!Array}\n */\n this.postRenderFunctions_ = [];\n\n /**\n * @private\n * @type {TileQueue}\n */\n this.tileQueue_ = new TileQueue(\n this.getTilePriority.bind(this),\n this.handleTileChange_.bind(this)\n );\n\n this.addChangeListener(\n MapProperty.LAYERGROUP,\n this.handleLayerGroupChanged_\n );\n this.addChangeListener(MapProperty.VIEW, this.handleViewChanged_);\n this.addChangeListener(MapProperty.SIZE, this.handleSizeChanged_);\n this.addChangeListener(MapProperty.TARGET, this.handleTargetChanged_);\n\n // setProperties will trigger the rendering of the map if the map\n // is \"defined\" already.\n this.setProperties(optionsInternal.values);\n\n const map = this;\n if (options.view && !(options.view instanceof View)) {\n options.view.then(function (viewOptions) {\n map.setView(new View(viewOptions));\n });\n }\n\n this.controls.addEventListener(\n CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(this)\n );\n\n this.controls.addEventListener(\n CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(this)\n );\n\n this.interactions.addEventListener(\n CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(this);\n }.bind(this)\n );\n\n this.interactions.addEventListener(\n CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n event.element.setMap(null);\n }.bind(this)\n );\n\n this.overlays_.addEventListener(\n CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n this.addOverlayInternal_(\n /** @type {import(\"./Overlay.js\").default} */ (event.element)\n );\n }.bind(this)\n );\n\n this.overlays_.addEventListener(\n CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n function (event) {\n const overlay = /** @type {import(\"./Overlay.js\").default} */ (\n event.element\n );\n const id = overlay.getId();\n if (id !== undefined) {\n delete this.overlayIdIndex_[id.toString()];\n }\n event.element.setMap(null);\n }.bind(this)\n );\n\n this.controls.forEach(\n /**\n * @param {import(\"./control/Control.js\").default} control Control.\n * @this {PluggableMap}\n */\n function (control) {\n control.setMap(this);\n }.bind(this)\n );\n\n this.interactions.forEach(\n /**\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction.\n * @this {PluggableMap}\n */\n function (interaction) {\n interaction.setMap(this);\n }.bind(this)\n );\n\n this.overlays_.forEach(this.addOverlayInternal_.bind(this));\n }\n\n /**\n * @abstract\n * @return {import(\"./renderer/Map.js\").default} The map renderer\n */\n createRenderer() {\n throw new Error('Use a map type that has a createRenderer method');\n }\n\n /**\n * Add the given control to the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @api\n */\n addControl(control) {\n this.getControls().push(control);\n }\n\n /**\n * Add the given interaction to the map. If you want to add an interaction\n * at another point of the collection use `getInteraction()` and the methods\n * available on {@link module:ol/Collection~Collection}. This can be used to\n * stop the event propagation from the handleEvent function. The interactions\n * get to handle the events in the reverse order of this collection.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to add.\n * @api\n */\n addInteraction(interaction) {\n this.getInteractions().push(interaction);\n }\n\n /**\n * Adds the given layer to the top of this map. If you want to add a layer\n * elsewhere in the stack, use `getLayers()` and the methods available on\n * {@link module:ol/Collection~Collection}.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @api\n */\n addLayer(layer) {\n const layers = this.getLayerGroup().getLayers();\n layers.push(layer);\n }\n\n /**\n * @param {import(\"./layer/Group.js\").GroupEvent} event The layer add event.\n * @private\n */\n handleLayerAdd_(event) {\n setLayerMapProperty(event.layer, this);\n }\n\n /**\n * Add the given overlay to the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @api\n */\n addOverlay(overlay) {\n this.getOverlays().push(overlay);\n }\n\n /**\n * This deals with map's overlay collection changes.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @private\n */\n addOverlayInternal_(overlay) {\n const id = overlay.getId();\n if (id !== undefined) {\n this.overlayIdIndex_[id.toString()] = overlay;\n }\n overlay.setMap(this);\n }\n\n /**\n *\n * Clean up.\n */\n disposeInternal() {\n this.setTarget(null);\n super.disposeInternal();\n }\n\n /**\n * Detect features that intersect a pixel on the viewport, and execute a\n * callback with each intersecting feature. Layers included in the detection can\n * be configured through the `layerFilter` option in `opt_options`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(import(\"./Feature.js\").FeatureLike, import(\"./layer/Layer.js\").default, import(\"./geom/SimpleGeometry.js\").default): T} callback Feature callback. The callback will be\n * called with two arguments. The first argument is one\n * {@link module:ol/Feature~Feature feature} or\n * {@link module:ol/render/Feature~RenderFeature render feature} at the pixel, the second is\n * the {@link module:ol/layer/Layer~Layer layer} of the feature and will be null for\n * unmanaged layers. To stop detection, callback functions can return a\n * truthy value.\n * @param {AtPixelOptions} [opt_options] Optional options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template T\n * @api\n */\n forEachFeatureAtPixel(pixel, callback, opt_options) {\n if (!this.frameState_ || !this.renderer_) {\n return;\n }\n const coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n const hitTolerance =\n opt_options.hitTolerance !== undefined ? opt_options.hitTolerance : 0;\n const layerFilter =\n opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;\n const checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.forEachFeatureAtCoordinate(\n coordinate,\n this.frameState_,\n hitTolerance,\n checkWrapped,\n callback,\n null,\n layerFilter,\n null\n );\n }\n\n /**\n * Get all features that intersect a pixel on the viewport.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions} [opt_options] Optional options.\n * @return {Array} The detected features or\n * an empty array if none were found.\n * @api\n */\n getFeaturesAtPixel(pixel, opt_options) {\n const features = [];\n this.forEachFeatureAtPixel(\n pixel,\n function (feature) {\n features.push(feature);\n },\n opt_options\n );\n return features;\n }\n\n /**\n * Get all layers from all layer groups.\n * @return {Array} Layers.\n * @api\n */\n getAllLayers() {\n const layers = [];\n function addLayersFrom(layerGroup) {\n layerGroup.forEach(function (layer) {\n if (layer instanceof LayerGroup) {\n addLayersFrom(layer.getLayers());\n } else {\n layers.push(layer);\n }\n });\n }\n addLayersFrom(this.getLayers());\n return layers;\n }\n\n /**\n * Please the `layer.getData()` method for {@link module:ol/layer/Tile~TileLayer#getData tile layers} or\n * {@link module:ol/layer/Image~ImageLayer#getData image layers} instead of using this method.\n *\n * Detect layers that have a color value at a pixel on the viewport, and\n * execute a callback with each matching layer. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n *\n * Note: In maps with more than one layer, this method will typically return pixel data\n * representing the composed image of all layers visible at the given pixel – because layers\n * will generally share the same rendering context. To force layers to render separately, and\n * to get pixel data representing only one layer at a time, you can assign each layer a unique\n * `className` in its constructor.\n *\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(this: S, import(\"./layer/Layer.js\").default, (Uint8ClampedArray|Uint8Array)): T} callback\n * Layer callback. This callback will receive two arguments: first is the\n * {@link module:ol/layer/Layer~Layer layer}, second argument is an array representing\n * [R, G, B, A] pixel values (0 - 255) and will be `null` for layer types\n * that do not currently support this argument. To stop detection, callback\n * functions can return a truthy value.\n * @param {AtPixelOptions} [opt_options] Configuration options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template S,T\n * @api\n * @deprecated\n */\n forEachLayerAtPixel(pixel, callback, opt_options) {\n if (!this.frameState_ || !this.renderer_) {\n return;\n }\n const options = opt_options || {};\n const hitTolerance =\n options.hitTolerance !== undefined ? options.hitTolerance : 0;\n const layerFilter = options.layerFilter || TRUE;\n return this.renderer_.forEachLayerAtPixel(\n pixel,\n this.frameState_,\n hitTolerance,\n callback,\n layerFilter\n );\n }\n\n /**\n * Detect if features intersect a pixel on the viewport. Layers included in the\n * detection can be configured through `opt_layerFilter`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions} [opt_options] Optional options.\n * @return {boolean} Is there a feature at the given pixel?\n * @api\n */\n hasFeatureAtPixel(pixel, opt_options) {\n if (!this.frameState_ || !this.renderer_) {\n return false;\n }\n const coordinate = this.getCoordinateFromPixelInternal(pixel);\n opt_options = opt_options !== undefined ? opt_options : {};\n const layerFilter =\n opt_options.layerFilter !== undefined ? opt_options.layerFilter : TRUE;\n const hitTolerance =\n opt_options.hitTolerance !== undefined ? opt_options.hitTolerance : 0;\n const checkWrapped = opt_options.checkWrapped !== false;\n return this.renderer_.hasFeatureAtCoordinate(\n coordinate,\n this.frameState_,\n hitTolerance,\n checkWrapped,\n layerFilter,\n null\n );\n }\n\n /**\n * Returns the coordinate in user projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n getEventCoordinate(event) {\n return this.getCoordinateFromPixel(this.getEventPixel(event));\n }\n\n /**\n * Returns the coordinate in view projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n */\n getEventCoordinateInternal(event) {\n return this.getCoordinateFromPixelInternal(this.getEventPixel(event));\n }\n\n /**\n * Returns the map pixel position for a browser event relative to the viewport.\n * @param {UIEvent} event Event.\n * @return {import(\"./pixel.js\").Pixel} Pixel.\n * @api\n */\n getEventPixel(event) {\n const viewportPosition = this.viewport_.getBoundingClientRect();\n const eventPosition =\n //FIXME Are we really calling this with a TouchEvent anywhere?\n 'changedTouches' in event\n ? /** @type {TouchEvent} */ (event).changedTouches[0]\n : /** @type {MouseEvent} */ (event);\n\n return [\n eventPosition.clientX - viewportPosition.left,\n eventPosition.clientY - viewportPosition.top,\n ];\n }\n\n /**\n * Get the target in which this map is rendered.\n * Note that this returns what is entered as an option or in setTarget:\n * if that was an element, it returns an element; if a string, it returns that.\n * @return {HTMLElement|string|undefined} The Element or id of the Element that the\n * map is rendered in.\n * @observable\n * @api\n */\n getTarget() {\n return /** @type {HTMLElement|string|undefined} */ (\n this.get(MapProperty.TARGET)\n );\n }\n\n /**\n * Get the DOM element into which this map is rendered. In contrast to\n * `getTarget` this method always return an `Element`, or `null` if the\n * map has no target.\n * @return {HTMLElement} The element that the map is rendered in.\n * @api\n */\n getTargetElement() {\n const target = this.getTarget();\n if (target !== undefined) {\n return typeof target === 'string'\n ? document.getElementById(target)\n : target;\n } else {\n return null;\n }\n }\n\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * user projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n * @api\n */\n getCoordinateFromPixel(pixel) {\n return toUserCoordinate(\n this.getCoordinateFromPixelInternal(pixel),\n this.getView().getProjection()\n );\n }\n\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * map view projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n */\n getCoordinateFromPixelInternal(pixel) {\n const frameState = this.frameState_;\n if (!frameState) {\n return null;\n } else {\n return applyTransform(\n frameState.pixelToCoordinateTransform,\n pixel.slice()\n );\n }\n }\n\n /**\n * Get the map controls. Modifying this collection changes the controls\n * associated with the map.\n * @return {Collection} Controls.\n * @api\n */\n getControls() {\n return this.controls;\n }\n\n /**\n * Get the map overlays. Modifying this collection changes the overlays\n * associated with the map.\n * @return {Collection} Overlays.\n * @api\n */\n getOverlays() {\n return this.overlays_;\n }\n\n /**\n * Get an overlay by its identifier (the value returned by overlay.getId()).\n * Note that the index treats string and numeric identifiers as the same. So\n * `map.getOverlayById(2)` will return an overlay with id `'2'` or `2`.\n * @param {string|number} id Overlay identifier.\n * @return {import(\"./Overlay.js\").default} Overlay.\n * @api\n */\n getOverlayById(id) {\n const overlay = this.overlayIdIndex_[id.toString()];\n return overlay !== undefined ? overlay : null;\n }\n\n /**\n * Get the map interactions. Modifying this collection changes the interactions\n * associated with the map.\n *\n * Interactions are used for e.g. pan, zoom and rotate.\n * @return {Collection} Interactions.\n * @api\n */\n getInteractions() {\n return this.interactions;\n }\n\n /**\n * Get the layergroup associated with this map.\n * @return {LayerGroup} A layer group containing the layers in this map.\n * @observable\n * @api\n */\n getLayerGroup() {\n return /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP));\n }\n\n /**\n * Clear any existing layers and add layers to the map.\n * @param {Array|Collection} layers The layers to be added to the map.\n * @api\n */\n setLayers(layers) {\n const group = this.getLayerGroup();\n if (layers instanceof Collection) {\n group.setLayers(layers);\n return;\n }\n\n const collection = group.getLayers();\n collection.clear();\n collection.extend(layers);\n }\n\n /**\n * Get the collection of layers associated with this map.\n * @return {!Collection} Layers.\n * @api\n */\n getLayers() {\n const layers = this.getLayerGroup().getLayers();\n return layers;\n }\n\n /**\n * @return {boolean} Layers have sources that are still loading.\n */\n getLoadingOrNotReady() {\n const layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n const state = layerStatesArray[i];\n if (!state.visible) {\n continue;\n }\n const renderer = state.layer.getRenderer();\n if (renderer && !renderer.ready) {\n return true;\n }\n const source = /** @type {import(\"./layer/Layer.js\").default} */ (\n state.layer\n ).getSource();\n if (source && source.loading) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the user\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n * @api\n */\n getPixelFromCoordinate(coordinate) {\n const viewCoordinate = fromUserCoordinate(\n coordinate,\n this.getView().getProjection()\n );\n return this.getPixelFromCoordinateInternal(viewCoordinate);\n }\n\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the map view\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n */\n getPixelFromCoordinateInternal(coordinate) {\n const frameState = this.frameState_;\n if (!frameState) {\n return null;\n } else {\n return applyTransform(\n frameState.coordinateToPixelTransform,\n coordinate.slice(0, 2)\n );\n }\n }\n\n /**\n * Get the map renderer.\n * @return {import(\"./renderer/Map.js\").default|null} Renderer\n */\n getRenderer() {\n return this.renderer_;\n }\n\n /**\n * Get the size of this map.\n * @return {import(\"./size.js\").Size|undefined} The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n getSize() {\n return /** @type {import(\"./size.js\").Size|undefined} */ (\n this.get(MapProperty.SIZE)\n );\n }\n\n /**\n * Get the view associated with this map. A view manages properties such as\n * center and resolution.\n * @return {View} The view that controls this map.\n * @observable\n * @api\n */\n getView() {\n return /** @type {View} */ (this.get(MapProperty.VIEW));\n }\n\n /**\n * Get the element that serves as the map viewport.\n * @return {HTMLElement} Viewport.\n * @api\n */\n getViewport() {\n return this.viewport_;\n }\n\n /**\n * Get the element that serves as the container for overlays. Elements added to\n * this container will let mousedown and touchstart events through to the map,\n * so clicks and gestures on an overlay will trigger {@link module:ol/MapBrowserEvent~MapBrowserEvent}\n * events.\n * @return {!HTMLElement} The map's overlay container.\n */\n getOverlayContainer() {\n return this.overlayContainer_;\n }\n\n /**\n * Get the element that serves as a container for overlays that don't allow\n * event propagation. Elements added to this container won't let mousedown and\n * touchstart events through to the map, so clicks and gestures on an overlay\n * don't trigger any {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n * @return {!HTMLElement} The map's overlay container that stops events.\n */\n getOverlayContainerStopEvent() {\n return this.overlayContainerStopEvent_;\n }\n\n /**\n * @return {!Document} The document where the map is displayed.\n */\n getOwnerDocument() {\n const targetElement = this.getTargetElement();\n return targetElement ? targetElement.ownerDocument : document;\n }\n\n /**\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\n getTilePriority(tile, tileSourceKey, tileCenter, tileResolution) {\n return getTilePriority(\n this.frameState_,\n tile,\n tileSourceKey,\n tileCenter,\n tileResolution\n );\n }\n\n /**\n * @param {UIEvent} browserEvent Browser event.\n * @param {string} [opt_type] Type.\n */\n handleBrowserEvent(browserEvent, opt_type) {\n const type = opt_type || browserEvent.type;\n const mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);\n this.handleMapBrowserEvent(mapBrowserEvent);\n }\n\n /**\n * @param {MapBrowserEvent} mapBrowserEvent The event to handle.\n */\n handleMapBrowserEvent(mapBrowserEvent) {\n if (!this.frameState_) {\n // With no view defined, we cannot translate pixels into geographical\n // coordinates so interactions cannot be used.\n return;\n }\n const originalEvent = /** @type {PointerEvent} */ (\n mapBrowserEvent.originalEvent\n );\n const eventType = originalEvent.type;\n if (\n eventType === PointerEventType.POINTERDOWN ||\n eventType === EventType.WHEEL ||\n eventType === EventType.KEYDOWN\n ) {\n const doc = this.getOwnerDocument();\n const rootNode = this.viewport_.getRootNode\n ? this.viewport_.getRootNode()\n : doc;\n const target = /** @type {Node} */ (originalEvent.target);\n if (\n // Abort if the target is a child of the container for elements whose events are not meant\n // to be handled by map interactions.\n this.overlayContainerStopEvent_.contains(target) ||\n // Abort if the event target is a child of the container that is no longer in the page.\n // It's possible for the target to no longer be in the page if it has been removed in an\n // event listener, this might happen in a Control that recreates it's content based on\n // user interaction either manually or via a render in something like https://reactjs.org/\n !(rootNode === doc ? doc.documentElement : rootNode).contains(target)\n ) {\n return;\n }\n }\n mapBrowserEvent.frameState = this.frameState_;\n if (this.dispatchEvent(mapBrowserEvent) !== false) {\n const interactionsArray = this.getInteractions().getArray().slice();\n for (let i = interactionsArray.length - 1; i >= 0; i--) {\n const interaction = interactionsArray[i];\n if (\n interaction.getMap() !== this ||\n !interaction.getActive() ||\n !this.getTargetElement()\n ) {\n continue;\n }\n const cont = interaction.handleEvent(mapBrowserEvent);\n if (!cont || mapBrowserEvent.propagationStopped) {\n break;\n }\n }\n }\n }\n\n /**\n * @protected\n */\n handlePostRender() {\n const frameState = this.frameState_;\n\n // Manage the tile queue\n // Image loads are expensive and a limited resource, so try to use them\n // efficiently:\n // * When the view is static we allow a large number of parallel tile loads\n // to complete the frame as quickly as possible.\n // * When animating or interacting, image loads can cause janks, so we reduce\n // the maximum number of loads per frame and limit the number of parallel\n // tile loads to remain reactive to view changes and to reduce the chance of\n // loading tiles that will quickly disappear from view.\n const tileQueue = this.tileQueue_;\n if (!tileQueue.isEmpty()) {\n let maxTotalLoading = this.maxTilesLoading_;\n let maxNewLoads = maxTotalLoading;\n if (frameState) {\n const hints = frameState.viewHints;\n if (hints[ViewHint.ANIMATING] || hints[ViewHint.INTERACTING]) {\n const lowOnFrameBudget = Date.now() - frameState.time > 8;\n maxTotalLoading = lowOnFrameBudget ? 0 : 8;\n maxNewLoads = lowOnFrameBudget ? 0 : 2;\n }\n }\n if (tileQueue.getTilesLoading() < maxTotalLoading) {\n tileQueue.reprioritize(); // FIXME only call if view has changed\n tileQueue.loadMoreTiles(maxTotalLoading, maxNewLoads);\n }\n }\n\n if (frameState && this.renderer_ && !frameState.animate) {\n if (this.renderComplete_ === true) {\n if (this.hasListener(RenderEventType.RENDERCOMPLETE)) {\n this.renderer_.dispatchRenderEvent(\n RenderEventType.RENDERCOMPLETE,\n frameState\n );\n }\n if (this.loaded_ === false) {\n this.loaded_ = true;\n this.dispatchEvent(\n new MapEvent(MapEventType.LOADEND, this, frameState)\n );\n }\n } else if (this.loaded_ === true) {\n this.loaded_ = false;\n this.dispatchEvent(\n new MapEvent(MapEventType.LOADSTART, this, frameState)\n );\n }\n }\n\n const postRenderFunctions = this.postRenderFunctions_;\n for (let i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n postRenderFunctions[i](this, frameState);\n }\n postRenderFunctions.length = 0;\n }\n\n /**\n * @private\n */\n handleSizeChanged_() {\n if (this.getView() && !this.getView().getAnimating()) {\n this.getView().resolveConstraints(0);\n }\n\n this.render();\n }\n\n /**\n * @private\n */\n handleTargetChanged_() {\n if (this.mapBrowserEventHandler_) {\n for (let i = 0, ii = this.targetChangeHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.targetChangeHandlerKeys_[i]);\n }\n this.targetChangeHandlerKeys_ = null;\n this.viewport_.removeEventListener(\n EventType.CONTEXTMENU,\n this.boundHandleBrowserEvent_\n );\n this.viewport_.removeEventListener(\n EventType.WHEEL,\n this.boundHandleBrowserEvent_\n );\n this.mapBrowserEventHandler_.dispose();\n this.mapBrowserEventHandler_ = null;\n removeNode(this.viewport_);\n }\n\n // target may be undefined, null, a string or an Element.\n // If it's a string we convert it to an Element before proceeding.\n // If it's not now an Element we remove the viewport from the DOM.\n // If it's an Element we append the viewport element to it.\n\n const targetElement = this.getTargetElement();\n if (!targetElement) {\n if (this.renderer_) {\n clearTimeout(this.postRenderTimeoutHandle_);\n this.postRenderTimeoutHandle_ = undefined;\n this.postRenderFunctions_.length = 0;\n this.renderer_.dispose();\n this.renderer_ = null;\n }\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n this.animationDelayKey_ = undefined;\n }\n } else {\n targetElement.appendChild(this.viewport_);\n if (!this.renderer_) {\n this.renderer_ = this.createRenderer();\n }\n\n this.mapBrowserEventHandler_ = new MapBrowserEventHandler(\n this,\n this.moveTolerance_\n );\n for (const key in MapBrowserEventType) {\n this.mapBrowserEventHandler_.addEventListener(\n MapBrowserEventType[key],\n this.handleMapBrowserEvent.bind(this)\n );\n }\n this.viewport_.addEventListener(\n EventType.CONTEXTMENU,\n this.boundHandleBrowserEvent_,\n false\n );\n this.viewport_.addEventListener(\n EventType.WHEEL,\n this.boundHandleBrowserEvent_,\n PASSIVE_EVENT_LISTENERS ? {passive: false} : false\n );\n\n const defaultView = this.getOwnerDocument().defaultView;\n const keyboardEventTarget = !this.keyboardEventTarget_\n ? targetElement\n : this.keyboardEventTarget_;\n this.targetChangeHandlerKeys_ = [\n listen(\n keyboardEventTarget,\n EventType.KEYDOWN,\n this.handleBrowserEvent,\n this\n ),\n listen(\n keyboardEventTarget,\n EventType.KEYPRESS,\n this.handleBrowserEvent,\n this\n ),\n listen(defaultView, EventType.RESIZE, this.updateSize, this),\n ];\n }\n\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n }\n\n /**\n * @private\n */\n handleTileChange_() {\n this.render();\n }\n\n /**\n * @private\n */\n handleViewPropertyChanged_() {\n this.render();\n }\n\n /**\n * @private\n */\n handleViewChanged_() {\n if (this.viewPropertyListenerKey_) {\n unlistenByKey(this.viewPropertyListenerKey_);\n this.viewPropertyListenerKey_ = null;\n }\n if (this.viewChangeListenerKey_) {\n unlistenByKey(this.viewChangeListenerKey_);\n this.viewChangeListenerKey_ = null;\n }\n const view = this.getView();\n if (view) {\n this.updateViewportSize_();\n\n this.viewPropertyListenerKey_ = listen(\n view,\n ObjectEventType.PROPERTYCHANGE,\n this.handleViewPropertyChanged_,\n this\n );\n this.viewChangeListenerKey_ = listen(\n view,\n EventType.CHANGE,\n this.handleViewPropertyChanged_,\n this\n );\n\n view.resolveConstraints(0);\n }\n this.render();\n }\n\n /**\n * @private\n */\n handleLayerGroupChanged_() {\n if (this.layerGroupPropertyListenerKeys_) {\n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n this.layerGroupPropertyListenerKeys_ = null;\n }\n const layerGroup = this.getLayerGroup();\n if (layerGroup) {\n this.handleLayerAdd_(new GroupEvent('addlayer', layerGroup));\n this.layerGroupPropertyListenerKeys_ = [\n listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),\n listen(layerGroup, EventType.CHANGE, this.render, this),\n listen(layerGroup, 'addlayer', this.handleLayerAdd_, this),\n listen(layerGroup, 'removelayer', this.handleLayerRemove_, this),\n ];\n }\n this.render();\n }\n\n /**\n * @return {boolean} Is rendered.\n */\n isRendered() {\n return !!this.frameState_;\n }\n\n /**\n * Requests an immediate render in a synchronous manner.\n * @api\n */\n renderSync() {\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n }\n this.animationDelay_();\n }\n\n /**\n * Redraws all text after new fonts have loaded\n */\n redrawText() {\n const layerStates = this.getLayerGroup().getLayerStatesArray();\n for (let i = 0, ii = layerStates.length; i < ii; ++i) {\n const layer = layerStates[i].layer;\n if (layer.hasRenderer()) {\n layer.getRenderer().handleFontsChanged();\n }\n }\n }\n\n /**\n * Request a map rendering (at the next animation frame).\n * @api\n */\n render() {\n if (this.renderer_ && this.animationDelayKey_ === undefined) {\n this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_);\n }\n }\n\n /**\n * Remove the given control from the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @return {import(\"./control/Control.js\").default|undefined} The removed control (or undefined\n * if the control was not found).\n * @api\n */\n removeControl(control) {\n return this.getControls().remove(control);\n }\n\n /**\n * Remove the given interaction from the map.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to remove.\n * @return {import(\"./interaction/Interaction.js\").default|undefined} The removed interaction (or\n * undefined if the interaction was not found).\n * @api\n */\n removeInteraction(interaction) {\n return this.getInteractions().remove(interaction);\n }\n\n /**\n * Removes the given layer from the map.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @return {import(\"./layer/Base.js\").default|undefined} The removed layer (or undefined if the\n * layer was not found).\n * @api\n */\n removeLayer(layer) {\n const layers = this.getLayerGroup().getLayers();\n return layers.remove(layer);\n }\n\n /**\n * @param {import(\"./layer/Group.js\").GroupEvent} event The layer remove event.\n * @private\n */\n handleLayerRemove_(event) {\n removeLayerMapProperty(event.layer);\n }\n\n /**\n * Remove the given overlay from the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @return {import(\"./Overlay.js\").default|undefined} The removed overlay (or undefined\n * if the overlay was not found).\n * @api\n */\n removeOverlay(overlay) {\n return this.getOverlays().remove(overlay);\n }\n\n /**\n * @param {number} time Time.\n * @private\n */\n renderFrame_(time) {\n const size = this.getSize();\n const view = this.getView();\n const previousFrameState = this.frameState_;\n /** @type {?FrameState} */\n let frameState = null;\n if (size !== undefined && hasArea(size) && view && view.isDef()) {\n const viewHints = view.getHints(\n this.frameState_ ? this.frameState_.viewHints : undefined\n );\n const viewState = view.getState();\n frameState = {\n animate: false,\n coordinateToPixelTransform: this.coordinateToPixelTransform_,\n declutterTree: null,\n extent: getForViewAndSize(\n viewState.center,\n viewState.resolution,\n viewState.rotation,\n size\n ),\n index: this.frameIndex_++,\n layerIndex: 0,\n layerStatesArray: this.getLayerGroup().getLayerStatesArray(),\n pixelRatio: this.pixelRatio_,\n pixelToCoordinateTransform: this.pixelToCoordinateTransform_,\n postRenderFunctions: [],\n size: size,\n tileQueue: this.tileQueue_,\n time: time,\n usedTiles: {},\n viewState: viewState,\n viewHints: viewHints,\n wantedTiles: {},\n mapId: getUid(this),\n renderTargets: {},\n };\n if (viewState.nextCenter && viewState.nextResolution) {\n const rotation = isNaN(viewState.nextRotation)\n ? viewState.rotation\n : viewState.nextRotation;\n\n frameState.nextExtent = getForViewAndSize(\n viewState.nextCenter,\n viewState.nextResolution,\n rotation,\n size\n );\n }\n }\n\n this.frameState_ = frameState;\n /** @type {import(\"./renderer/Map.js\").default} */ (\n this.renderer_\n ).renderFrame(frameState);\n\n if (frameState) {\n if (frameState.animate) {\n this.render();\n }\n Array.prototype.push.apply(\n this.postRenderFunctions_,\n frameState.postRenderFunctions\n );\n\n if (previousFrameState) {\n const moveStart =\n !this.previousExtent_ ||\n (!isEmpty(this.previousExtent_) &&\n !equals(frameState.extent, this.previousExtent_));\n if (moveStart) {\n this.dispatchEvent(\n new MapEvent(MapEventType.MOVESTART, this, previousFrameState)\n );\n this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n }\n }\n\n const idle =\n this.previousExtent_ &&\n !frameState.viewHints[ViewHint.ANIMATING] &&\n !frameState.viewHints[ViewHint.INTERACTING] &&\n !equals(frameState.extent, this.previousExtent_);\n\n if (idle) {\n this.dispatchEvent(\n new MapEvent(MapEventType.MOVEEND, this, frameState)\n );\n clone(frameState.extent, this.previousExtent_);\n }\n }\n\n this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n\n this.renderComplete_ =\n this.hasListener(MapEventType.LOADSTART) ||\n this.hasListener(MapEventType.LOADEND) ||\n this.hasListener(RenderEventType.RENDERCOMPLETE)\n ? !this.tileQueue_.getTilesLoading() &&\n !this.tileQueue_.getCount() &&\n !this.getLoadingOrNotReady()\n : undefined;\n\n if (!this.postRenderTimeoutHandle_) {\n this.postRenderTimeoutHandle_ = setTimeout(() => {\n this.postRenderTimeoutHandle_ = undefined;\n this.handlePostRender();\n }, 0);\n }\n }\n\n /**\n * Sets the layergroup of this map.\n * @param {LayerGroup} layerGroup A layer group containing the layers in this map.\n * @observable\n * @api\n */\n setLayerGroup(layerGroup) {\n const oldLayerGroup = this.getLayerGroup();\n if (oldLayerGroup) {\n this.handleLayerRemove_(new GroupEvent('removelayer', oldLayerGroup));\n }\n this.set(MapProperty.LAYERGROUP, layerGroup);\n }\n\n /**\n * Set the size of this map.\n * @param {import(\"./size.js\").Size|undefined} size The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n setSize(size) {\n this.set(MapProperty.SIZE, size);\n }\n\n /**\n * Set the target element to render this map into.\n * @param {HTMLElement|string} [target] The Element or id of the Element\n * that the map is rendered in.\n * @observable\n * @api\n */\n setTarget(target) {\n this.set(MapProperty.TARGET, target);\n }\n\n /**\n * Set the view for this map.\n * @param {View|Promise} view The view that controls this map.\n * It is also possible to pass a promise that resolves to options for constructing a view. This\n * alternative allows view properties to be resolved by sources or other components that load\n * view-related metadata.\n * @observable\n * @api\n */\n setView(view) {\n if (!view || view instanceof View) {\n this.set(MapProperty.VIEW, view);\n return;\n }\n this.set(MapProperty.VIEW, new View());\n\n const map = this;\n view.then(function (viewOptions) {\n map.setView(new View(viewOptions));\n });\n }\n\n /**\n * Force a recalculation of the map viewport size. This should be called when\n * third-party code changes the size of the map viewport.\n * @api\n */\n updateSize() {\n const targetElement = this.getTargetElement();\n\n let size = undefined;\n if (targetElement) {\n const computedStyle = getComputedStyle(targetElement);\n const width =\n targetElement.offsetWidth -\n parseFloat(computedStyle['borderLeftWidth']) -\n parseFloat(computedStyle['paddingLeft']) -\n parseFloat(computedStyle['paddingRight']) -\n parseFloat(computedStyle['borderRightWidth']);\n const height =\n targetElement.offsetHeight -\n parseFloat(computedStyle['borderTopWidth']) -\n parseFloat(computedStyle['paddingTop']) -\n parseFloat(computedStyle['paddingBottom']) -\n parseFloat(computedStyle['borderBottomWidth']);\n if (!isNaN(width) && !isNaN(height)) {\n size = [width, height];\n if (\n !hasArea(size) &&\n !!(\n targetElement.offsetWidth ||\n targetElement.offsetHeight ||\n targetElement.getClientRects().length\n )\n ) {\n // eslint-disable-next-line\n console.warn(\n \"No map visible because the map container's width or height are 0.\"\n );\n }\n }\n }\n\n this.setSize(size);\n this.updateViewportSize_();\n }\n\n /**\n * Recomputes the viewport size and save it on the view object (if any)\n * @private\n */\n updateViewportSize_() {\n const view = this.getView();\n if (view) {\n let size = undefined;\n const computedStyle = getComputedStyle(this.viewport_);\n if (computedStyle.width && computedStyle.height) {\n size = [\n parseInt(computedStyle.width, 10),\n parseInt(computedStyle.height, 10),\n ];\n }\n view.setViewportSize(size);\n }\n }\n}\n\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n /**\n * @type {HTMLElement|Document}\n */\n let keyboardEventTarget = null;\n if (options.keyboardEventTarget !== undefined) {\n keyboardEventTarget =\n typeof options.keyboardEventTarget === 'string'\n ? document.getElementById(options.keyboardEventTarget)\n : options.keyboardEventTarget;\n }\n\n /**\n * @type {Object}\n */\n const values = {};\n\n const layerGroup =\n options.layers &&\n typeof (/** @type {?} */ (options.layers).getLayers) === 'function'\n ? /** @type {LayerGroup} */ (options.layers)\n : new LayerGroup({layers: /** @type {Collection} */ (options.layers)});\n values[MapProperty.LAYERGROUP] = layerGroup;\n\n values[MapProperty.TARGET] = options.target;\n\n values[MapProperty.VIEW] =\n options.view instanceof View ? options.view : new View();\n\n let controls;\n if (options.controls !== undefined) {\n if (Array.isArray(options.controls)) {\n controls = new Collection(options.controls.slice());\n } else {\n assert(\n typeof (/** @type {?} */ (options.controls).getArray) === 'function',\n 47\n ); // Expected `controls` to be an array or an `import(\"./Collection.js\").Collection`\n controls = /** @type {Collection} */ (options.controls);\n }\n }\n\n let interactions;\n if (options.interactions !== undefined) {\n if (Array.isArray(options.interactions)) {\n interactions = new Collection(options.interactions.slice());\n } else {\n assert(\n typeof (/** @type {?} */ (options.interactions).getArray) ===\n 'function',\n 48\n ); // Expected `interactions` to be an array or an `import(\"./Collection.js\").Collection`\n interactions = /** @type {Collection} */ (options.interactions);\n }\n }\n\n let overlays;\n if (options.overlays !== undefined) {\n if (Array.isArray(options.overlays)) {\n overlays = new Collection(options.overlays.slice());\n } else {\n assert(\n typeof (/** @type {?} */ (options.overlays).getArray) === 'function',\n 49\n ); // Expected `overlays` to be an array or an `import(\"./Collection.js\").Collection`\n overlays = options.overlays;\n }\n } else {\n overlays = new Collection();\n }\n\n return {\n controls: controls,\n interactions: interactions,\n keyboardEventTarget: keyboardEventTarget,\n overlays: overlays,\n values: values,\n };\n}\nexport default PluggableMap;\n","/**\n * @module ol/interaction/Property\n */\n\n/**\n * @enum {string}\n */\nexport default {\n ACTIVE: 'active',\n};\n","/**\n * @module ol/interaction/Interaction\n */\nimport BaseObject from '../Object.js';\nimport InteractionProperty from './Property.js';\nimport {easeOut, linear} from '../easing.js';\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} InteractionOnSignature\n */\n\n/**\n * Object literal with config options for interactions.\n * @typedef {Object} InteractionOptions\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} handleEvent\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. If the function returns a falsy value, propagation of\n * the event to other interactions in the map's interactions chain will be\n * prevented (this includes functions with no explicit return). The interactions\n * are traversed in reverse order of the interactions collection of the map.\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * User actions that change the state of the map. Some are similar to controls,\n * but are not associated with a DOM element.\n * For example, {@link module:ol/interaction/KeyboardZoom~KeyboardZoom} is\n * functionally the same as {@link module:ol/control/Zoom~Zoom}, but triggered\n * by a keyboard event not a button element event.\n * Although interactions do not have a DOM element, some of them do render\n * vectors and so are visible on the screen.\n * @api\n */\nclass Interaction extends BaseObject {\n /**\n * @param {InteractionOptions} [opt_options] Options.\n */\n constructor(opt_options) {\n super();\n\n /***\n * @type {InteractionOnSignature}\n */\n this.on;\n\n /***\n * @type {InteractionOnSignature}\n */\n this.once;\n\n /***\n * @type {InteractionOnSignature}\n */\n this.un;\n\n if (opt_options && opt_options.handleEvent) {\n this.handleEvent = opt_options.handleEvent;\n }\n\n /**\n * @private\n * @type {import(\"../PluggableMap.js\").default|null}\n */\n this.map_ = null;\n\n this.setActive(true);\n }\n\n /**\n * Return whether the interaction is currently active.\n * @return {boolean} `true` if the interaction is active, `false` otherwise.\n * @observable\n * @api\n */\n getActive() {\n return /** @type {boolean} */ (this.get(InteractionProperty.ACTIVE));\n }\n\n /**\n * Get the map associated with this interaction.\n * @return {import(\"../PluggableMap.js\").default|null} Map.\n * @api\n */\n getMap() {\n return this.map_;\n }\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event}.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n handleEvent(mapBrowserEvent) {\n return true;\n }\n\n /**\n * Activate or deactivate the interaction.\n * @param {boolean} active Active.\n * @observable\n * @api\n */\n setActive(active) {\n this.set(InteractionProperty.ACTIVE, active);\n }\n\n /**\n * Remove the interaction from its current map and attach it to the new map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../PluggableMap.js\").default|null} map Map.\n */\n setMap(map) {\n this.map_ = map;\n }\n}\n\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {import(\"../coordinate.js\").Coordinate} delta Delta.\n * @param {number} [opt_duration] Duration.\n */\nexport function pan(view, delta, opt_duration) {\n const currentCenter = view.getCenterInternal();\n if (currentCenter) {\n const center = [currentCenter[0] + delta[0], currentCenter[1] + delta[1]];\n view.animateInternal({\n duration: opt_duration !== undefined ? opt_duration : 250,\n easing: linear,\n center: view.getConstrainedCenter(center),\n });\n }\n}\n\n/**\n * @param {import(\"../View.js\").default} view View.\n * @param {number} delta Delta from previous zoom level.\n * @param {import(\"../coordinate.js\").Coordinate} [opt_anchor] Anchor coordinate in the user projection.\n * @param {number} [opt_duration] Duration.\n */\nexport function zoomByDelta(view, delta, opt_anchor, opt_duration) {\n const currentZoom = view.getZoom();\n\n if (currentZoom === undefined) {\n return;\n }\n\n const newZoom = view.getConstrainedZoom(currentZoom + delta);\n const newResolution = view.getResolutionForZoom(newZoom);\n\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n resolution: newResolution,\n anchor: opt_anchor,\n duration: opt_duration !== undefined ? opt_duration : 250,\n easing: easeOut,\n });\n}\n\nexport default Interaction;\n","/**\n * @module ol/interaction/DoubleClickZoom\n */\nimport Interaction, {zoomByDelta} from './Interaction.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {number} [delta=1] The zoom delta applied on each double click.\n */\n\n/**\n * @classdesc\n * Allows the user to zoom by double-clicking on the map.\n * @api\n */\nclass DoubleClickZoom extends Interaction {\n /**\n * @param {Options} [opt_options] Options.\n */\n constructor(opt_options) {\n super();\n\n const options = opt_options ? opt_options : {};\n\n /**\n * @private\n * @type {number}\n */\n this.delta_ = options.delta ? options.delta : 1;\n\n /**\n * @private\n * @type {number}\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n }\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} (if it was a\n * doubleclick) and eventually zooms the map.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n */\n handleEvent(mapBrowserEvent) {\n let stopEvent = false;\n if (mapBrowserEvent.type == MapBrowserEventType.DBLCLICK) {\n const browserEvent = /** @type {MouseEvent} */ (\n mapBrowserEvent.originalEvent\n );\n const map = mapBrowserEvent.map;\n const anchor = mapBrowserEvent.coordinate;\n const delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;\n const view = map.getView();\n zoomByDelta(view, delta, anchor, this.duration_);\n browserEvent.preventDefault();\n stopEvent = true;\n }\n return !stopEvent;\n }\n}\n\nexport default DoubleClickZoom;\n","/**\n * @module ol/interaction/Pointer\n */\nimport Interaction from './Interaction.js';\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport {getValues} from '../obj.js';\n\n/**\n * @typedef {Object} Options\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleDownEvent]\n * Function handling \"down\" events. If the function returns `true` then a drag\n * sequence is started.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleDragEvent]\n * Function handling \"drag\" events. This function is called on \"move\" events\n * during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleEvent]\n * Method called by the map to notify the interaction that a browser event was\n * dispatched to the map. The function may return `false` to prevent the\n * propagation of the event to other interactions in the map's interactions\n * chain.\n * @property {function(import(\"../MapBrowserEvent.js\").default):void} [handleMoveEvent]\n * Function handling \"move\" events. This function is called on \"move\" events.\n * This functions is also called during a drag sequence, so during a drag\n * sequence both the `handleDragEvent` function and this function are called.\n * If `handleDownEvent` is defined and it returns true this function will not\n * be called during a drag sequence.\n * @property {function(import(\"../MapBrowserEvent.js\").default):boolean} [handleUpEvent]\n * Function handling \"up\" events. If the function returns `false` then the\n * current drag sequence is stopped.\n * @property {function(boolean):boolean} [stopDown]\n * Should the down event be propagated to other interactions, or should be\n * stopped?\n */\n\n/**\n * @classdesc\n * Base class that calls user-defined functions on `down`, `move` and `up`\n * events. This class also manages \"drag sequences\".\n *\n * When the `handleDownEvent` user function returns `true` a drag sequence is\n * started. During a drag sequence the `handleDragEvent` user function is\n * called on `move` events. The drag sequence ends when the `handleUpEvent`\n * user function is called and returns `false`.\n * @api\n */\nclass PointerInteraction extends Interaction {\n /**\n * @param {Options} [opt_options] Options.\n */\n constructor(opt_options) {\n const options = opt_options ? opt_options : {};\n\n super(\n /** @type {import(\"./Interaction.js\").InteractionOptions} */ (options)\n );\n\n if (options.handleDownEvent) {\n this.handleDownEvent = options.handleDownEvent;\n }\n\n if (options.handleDragEvent) {\n this.handleDragEvent = options.handleDragEvent;\n }\n\n if (options.handleMoveEvent) {\n this.handleMoveEvent = options.handleMoveEvent;\n }\n\n if (options.handleUpEvent) {\n this.handleUpEvent = options.handleUpEvent;\n }\n\n if (options.stopDown) {\n this.stopDown = options.stopDown;\n }\n\n /**\n * @type {boolean}\n * @protected\n */\n this.handlingDownUpSequence = false;\n\n /**\n * @type {!Object}\n * @private\n */\n this.trackedPointers_ = {};\n\n /**\n * @type {Array}\n * @protected\n */\n this.targetPointers = [];\n }\n\n /**\n * Returns the current number of pointers involved in the interaction,\n * e.g. `2` when two fingers are used.\n * @return {number} The number of pointers.\n * @api\n */\n getPointerCount() {\n return this.targetPointers.length;\n }\n\n /**\n * Handle pointer down events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n * @protected\n */\n handleDownEvent(mapBrowserEvent) {\n return false;\n }\n\n /**\n * Handle pointer drag events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @protected\n */\n handleDragEvent(mapBrowserEvent) {}\n\n /**\n * Handles the {@link module:ol/MapBrowserEvent~MapBrowserEvent map browser event} and may call into\n * other functions, if event sequences like e.g. 'drag' or 'down-up' etc. are\n * detected.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} `false` to stop event propagation.\n * @api\n */\n handleEvent(mapBrowserEvent) {\n if (!mapBrowserEvent.originalEvent) {\n return true;\n }\n\n let stopEvent = false;\n this.updateTrackedPointers_(mapBrowserEvent);\n if (this.handlingDownUpSequence) {\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERDRAG) {\n this.handleDragEvent(mapBrowserEvent);\n // prevent page scrolling during dragging\n mapBrowserEvent.originalEvent.preventDefault();\n } else if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {\n const handledUp = this.handleUpEvent(mapBrowserEvent);\n this.handlingDownUpSequence =\n handledUp && this.targetPointers.length > 0;\n }\n } else {\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {\n const handled = this.handleDownEvent(mapBrowserEvent);\n this.handlingDownUpSequence = handled;\n stopEvent = this.stopDown(handled);\n } else if (mapBrowserEvent.type == MapBrowserEventType.POINTERMOVE) {\n this.handleMoveEvent(mapBrowserEvent);\n }\n }\n return !stopEvent;\n }\n\n /**\n * Handle pointer move events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @protected\n */\n handleMoveEvent(mapBrowserEvent) {}\n\n /**\n * Handle pointer up events.\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} If the event was consumed.\n * @protected\n */\n handleUpEvent(mapBrowserEvent) {\n return false;\n }\n\n /**\n * This function is used to determine if \"down\" events should be propagated\n * to other interactions or should be stopped.\n * @param {boolean} handled Was the event handled by the interaction?\n * @return {boolean} Should the `down` event be stopped?\n */\n stopDown(handled) {\n return handled;\n }\n\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @private\n */\n updateTrackedPointers_(mapBrowserEvent) {\n if (isPointerDraggingEvent(mapBrowserEvent)) {\n const event = mapBrowserEvent.originalEvent;\n\n const id = event.pointerId.toString();\n if (mapBrowserEvent.type == MapBrowserEventType.POINTERUP) {\n delete this.trackedPointers_[id];\n } else if (mapBrowserEvent.type == MapBrowserEventType.POINTERDOWN) {\n this.trackedPointers_[id] = event;\n } else if (id in this.trackedPointers_) {\n // update only when there was a pointerdown event for this pointer\n this.trackedPointers_[id] = event;\n }\n this.targetPointers = getValues(this.trackedPointers_);\n }\n }\n}\n\n/**\n * @param {Array} pointerEvents List of events.\n * @return {import(\"../pixel.js\").Pixel} Centroid pixel.\n */\nexport function centroid(pointerEvents) {\n const length = pointerEvents.length;\n let clientX = 0;\n let clientY = 0;\n for (let i = 0; i < length; i++) {\n clientX += pointerEvents[i].clientX;\n clientY += pointerEvents[i].clientY;\n }\n return [clientX / length, clientY / length];\n}\n\n/**\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Event.\n * @return {boolean} Whether the event is a pointerdown, pointerdrag\n * or pointerup event.\n */\nfunction isPointerDraggingEvent(mapBrowserEvent) {\n const type = mapBrowserEvent.type;\n return (\n type === MapBrowserEventType.POINTERDOWN ||\n type === MapBrowserEventType.POINTERDRAG ||\n type === MapBrowserEventType.POINTERUP\n );\n}\n\nexport default PointerInteraction;\n","/**\n * @module ol/events/condition\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport {FALSE, TRUE} from '../functions.js';\nimport {MAC, WEBKIT} from '../has.js';\nimport {assert} from '../asserts.js';\n\n/**\n * A function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * `{boolean}`. If the condition is met, true should be returned.\n *\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default): boolean} Condition\n */\n\n/**\n * Creates a condition function that passes when all provided conditions pass.\n * @param {...Condition} var_args Conditions to check.\n * @return {Condition} Condition function.\n */\nexport function all(var_args) {\n const conditions = arguments;\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @return {boolean} All conditions passed.\n */\n return function (event) {\n let pass = true;\n for (let i = 0, ii = conditions.length; i < ii; ++i) {\n pass = pass && conditions[i](event);\n if (!pass) {\n break;\n }\n }\n return pass;\n };\n}\n\n/**\n * Return `true` if only the alt-key is pressed, `false` otherwise (e.g. when\n * additionally the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt key is pressed.\n * @api\n */\nexport const altKeyOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if only the alt-key and shift-key is pressed, `false` otherwise\n * (e.g. when additionally the platform-modifier-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt and shift keys are pressed.\n * @api\n */\nexport const altShiftKeysOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if the map has the focus. This condition requires a map target\n * element with a `tabindex` attribute, e.g. `
`.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map has the focus.\n * @api\n */\nexport const focus = function (event) {\n const targetElement = event.map.getTargetElement();\n const activeElement = event.map.getOwnerDocument().activeElement;\n return targetElement.contains(activeElement);\n};\n\n/**\n * Return `true` if the map has the focus or no 'tabindex' attribute set.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map container has the focus or no 'tabindex' attribute.\n */\nexport const focusWithTabindex = function (event) {\n return event.map.getTargetElement().hasAttribute('tabindex')\n ? focus(event)\n : true;\n};\n\n/**\n * Return always true.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True.\n * @api\n */\nexport const always = TRUE;\n\n/**\n * Return `true` if the event is a `click` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `click` event.\n * @api\n */\nexport const click = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.CLICK;\n};\n\n/**\n * Return `true` if the event has an \"action\"-producing mouse button.\n *\n * By definition, this includes left-click on windows/linux, and left-click\n * without the ctrl key on Macs.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} The result.\n */\nexport const mouseActionButton = function (mapBrowserEvent) {\n const originalEvent = /** @type {MouseEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return originalEvent.button == 0 && !(WEBKIT && MAC && originalEvent.ctrlKey);\n};\n\n/**\n * Return always false.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} False.\n * @api\n */\nexport const never = FALSE;\n\n/**\n * Return `true` if the browser event is a `pointermove` event, `false`\n * otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the browser event is a `pointermove` event.\n * @api\n */\nexport const pointerMove = function (mapBrowserEvent) {\n return mapBrowserEvent.type == 'pointermove';\n};\n\n/**\n * Return `true` if the event is a map `singleclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `singleclick` event.\n * @api\n */\nexport const singleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.SINGLECLICK;\n};\n\n/**\n * Return `true` if the event is a map `dblclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `dblclick` event.\n * @api\n */\nexport const doubleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.DBLCLICK;\n};\n\n/**\n * Return `true` if no modifier key (alt-, shift- or platform-modifier-key) is\n * pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if there no modifier keys are pressed.\n * @api\n */\nexport const noModifierKeys = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n !originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if only the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed, `false` otherwise (e.g. when additionally\n * the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the platform modifier key is pressed.\n * @api\n */\nexport const platformModifierKeyOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n !originalEvent.altKey &&\n (MAC ? originalEvent.metaKey : originalEvent.ctrlKey) &&\n !originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if only the shift-key is pressed, `false` otherwise (e.g. when\n * additionally the alt-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the shift key is pressed.\n * @api\n */\nexport const shiftKeyOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n !originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if the target element is not editable, i.e. not a ``-,\n * `