{"version":3,"file":"js/chunk-vendors.5262cfea.js","mappings":"uGAMe,SAASA,EACtBC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGA,IAqBIC,EArBAC,EAAmC,oBAAlBT,EACjBA,EAAcS,QACdT,EAsDJ,GAnDIC,IACFQ,EAAQR,OAASA,EACjBQ,EAAQP,gBAAkBA,EAC1BO,EAAQC,WAAY,GAIlBP,IACFM,EAAQE,YAAa,GAInBN,IACFI,EAAQG,SAAW,UAAYP,GAI7BC,GACFE,EAAO,SAAUK,GAEfA,EACEA,GACCC,KAAKC,QAAUD,KAAKC,OAAOC,YAC3BF,KAAKG,QAAUH,KAAKG,OAAOF,QAAUD,KAAKG,OAAOF,OAAOC,WAEtDH,GAA0C,qBAAxBK,sBACrBL,EAAUK,qBAGRd,GACFA,EAAae,KAAKL,KAAMD,GAGtBA,GAAWA,EAAQO,uBACrBP,EAAQO,sBAAsBC,IAAIf,IAKtCG,EAAQa,aAAed,GACdJ,IACTI,EAAOD,EACH,WACAH,EAAae,KACXL,MACCL,EAAQE,WAAaG,KAAKG,OAASH,MAAMS,MAAMC,SAASC,aAG3DrB,GAGFI,EACF,GAAIC,EAAQE,WAAY,CAGtBF,EAAQiB,cAAgBlB,EAExB,IAAImB,EAAiBlB,EAAQR,OAC7BQ,EAAQR,OAAS,SAAmC2B,EAAGf,GAErD,OADAL,EAAKW,KAAKN,GACHc,EAAeC,EAAGf,QAEtB,CAEL,IAAIgB,EAAWpB,EAAQqB,aACvBrB,EAAQqB,aAAeD,EACnB,GAAGE,OAAOF,EAAUrB,GACpB,CAACA,GAIT,MAAO,CACLwB,QAAShC,EACTS,QAASA,G,sDC/FbwB,EAAOD,QAAU,EAAjB,O,kCCEA,IAAIE,EAAQ,EAAQ,MAChBC,EAAS,EAAQ,MACjBC,EAAU,EAAQ,MAClBC,EAAW,EAAQ,MACnBC,EAAgB,EAAQ,MACxBC,EAAe,EAAQ,MACvBC,EAAkB,EAAQ,MAC1BC,EAAuB,EAAQ,MAC/BC,EAAa,EAAQ,MACrBC,EAAgB,EAAQ,KACxBC,EAAgB,EAAQ,KAE5BX,EAAOD,QAAU,SAAoBa,GACnC,OAAO,IAAIC,SAAQ,SAA4BC,EAASC,GACtD,IAGIC,EAHAC,EAAcL,EAAOM,KACrBC,EAAiBP,EAAOQ,QACxBC,EAAeT,EAAOS,aAE1B,SAASC,IACHV,EAAOW,aACTX,EAAOW,YAAYC,YAAYR,GAG7BJ,EAAOa,QACTb,EAAOa,OAAOC,oBAAoB,QAASV,GAI3Cf,EAAM0B,WAAWV,IAAgBhB,EAAM2B,+BAClCT,EAAe,gBAGxB,IAAIU,EAAU,IAAIC,eAGlB,GAAIlB,EAAOmB,KAAM,CACf,IAAIC,EAAWpB,EAAOmB,KAAKC,UAAY,GACnCC,EAAWrB,EAAOmB,KAAKE,SAAWC,SAASC,mBAAmBvB,EAAOmB,KAAKE,WAAa,GAC3Fd,EAAeiB,cAAgB,SAAWC,KAAKL,EAAW,IAAMC,GAGlE,IAAIK,EAAWjC,EAAcO,EAAO2B,QAAS3B,EAAO4B,KAOpD,SAASC,IACP,GAAKZ,EAAL,CAIA,IAAIa,EAAkB,0BAA2Bb,EAAUvB,EAAauB,EAAQc,yBAA2B,KACvGC,EAAgBvB,GAAiC,SAAjBA,GAA6C,SAAjBA,EACvCQ,EAAQgB,SAA/BhB,EAAQiB,aACND,EAAW,CACb3B,KAAM0B,EACNG,OAAQlB,EAAQkB,OAChBC,WAAYnB,EAAQmB,WACpB5B,QAASsB,EACT9B,OAAQA,EACRiB,QAASA,GAGX3B,GAAO,SAAkB+C,GACvBnC,EAAQmC,GACR3B,OACC,SAAiB4B,GAClBnC,EAAOmC,GACP5B,MACCuB,GAGHhB,EAAU,MAoEZ,GAnGAA,EAAQsB,KAAKvC,EAAOwC,OAAOC,cAAejD,EAASkC,EAAU1B,EAAO0C,OAAQ1C,EAAO2C,mBAAmB,GAGtG1B,EAAQ2B,QAAU5C,EAAO4C,QA+BrB,cAAe3B,EAEjBA,EAAQY,UAAYA,EAGpBZ,EAAQ4B,mBAAqB,WACtB5B,GAAkC,IAAvBA,EAAQ6B,aAQD,IAAnB7B,EAAQkB,QAAkBlB,EAAQ8B,aAAwD,IAAzC9B,EAAQ8B,YAAYC,QAAQ,WAKjFC,WAAWpB,IAKfZ,EAAQiC,QAAU,WACXjC,IAILd,EAAO,IAAIN,EAAW,kBAAmBA,EAAWsD,aAAcnD,EAAQiB,IAG1EA,EAAU,OAIZA,EAAQmC,QAAU,WAGhBjD,EAAO,IAAIN,EAAW,gBAAiBA,EAAWwD,YAAarD,EAAQiB,EAASA,IAGhFA,EAAU,MAIZA,EAAQqC,UAAY,WAClB,IAAIC,EAAsBvD,EAAO4C,QAAU,cAAgB5C,EAAO4C,QAAU,cAAgB,mBACxFY,EAAexD,EAAOwD,cAAgB5D,EACtCI,EAAOuD,sBACTA,EAAsBvD,EAAOuD,qBAE/BpD,EAAO,IAAIN,EACT0D,EACAC,EAAaC,oBAAsB5D,EAAW6D,UAAY7D,EAAWsD,aACrEnD,EACAiB,IAGFA,EAAU,MAMR5B,EAAM2B,uBAAwB,CAEhC,IAAI2C,GAAa3D,EAAO4D,iBAAmBjE,EAAgB+B,KAAc1B,EAAO6D,eAC9EtE,EAAQuE,KAAK9D,EAAO6D,qBACpBE,EAEEJ,IACFpD,EAAeP,EAAOgE,gBAAkBL,GAKxC,qBAAsB1C,GACxB5B,EAAM4E,QAAQ1D,GAAgB,SAA0B2D,EAAKC,GAChC,qBAAhB9D,GAAqD,iBAAtB8D,EAAIC,qBAErC7D,EAAe4D,GAGtBlD,EAAQoD,iBAAiBF,EAAKD,MAM/B7E,EAAMiF,YAAYtE,EAAO4D,mBAC5B3C,EAAQ2C,kBAAoB5D,EAAO4D,iBAIjCnD,GAAiC,SAAjBA,IAClBQ,EAAQR,aAAeT,EAAOS,cAIS,oBAA9BT,EAAOuE,oBAChBtD,EAAQuD,iBAAiB,WAAYxE,EAAOuE,oBAIP,oBAA5BvE,EAAOyE,kBAAmCxD,EAAQyD,QAC3DzD,EAAQyD,OAAOF,iBAAiB,WAAYxE,EAAOyE,mBAGjDzE,EAAOW,aAAeX,EAAOa,UAG/BT,EAAa,SAASuE,GACf1D,IAGLd,GAAQwE,GAAWA,GAAUA,EAAOC,KAAQ,IAAI9E,EAAkB6E,GAClE1D,EAAQ4D,QACR5D,EAAU,OAGZjB,EAAOW,aAAeX,EAAOW,YAAYmE,UAAU1E,GAC/CJ,EAAOa,SACTb,EAAOa,OAAOkE,QAAU3E,IAAeJ,EAAOa,OAAO2D,iBAAiB,QAASpE,KAI9EC,IACHA,EAAc,MAGhB,IAAI2E,EAAWjF,EAAc2B,GAEzBsD,IAA+D,IAAnD,CAAE,OAAQ,QAAS,QAAShC,QAAQgC,GAClD7E,EAAO,IAAIN,EAAW,wBAA0BmF,EAAW,IAAKnF,EAAWoF,gBAAiBjF,IAM9FiB,EAAQiE,KAAK7E,Q,kCCzNjB,IAAIhB,EAAQ,EAAQ,MAChB8F,EAAO,EAAQ,MACfC,EAAQ,EAAQ,KAChBC,EAAc,EAAQ,MACtBC,EAAW,EAAQ,MAQvB,SAASC,EAAeC,GACtB,IAAIxH,EAAU,IAAIoH,EAAMI,GACpBC,EAAWN,EAAKC,EAAMM,UAAUzE,QAASjD,GAa7C,OAVAqB,EAAMsG,OAAOF,EAAUL,EAAMM,UAAW1H,GAGxCqB,EAAMsG,OAAOF,EAAUzH,GAGvByH,EAASG,OAAS,SAAgBC,GAChC,OAAON,EAAeF,EAAYG,EAAeK,KAG5CJ,EAIT,IAAIK,EAAQP,EAAeD,GAG3BQ,EAAMV,MAAQA,EAGdU,EAAMhG,cAAgB,EAAQ,KAC9BgG,EAAMC,YAAc,EAAQ,MAC5BD,EAAME,SAAW,EAAQ,MACzBF,EAAMG,QAAU,gBAChBH,EAAMI,WAAa,EAAQ,MAG3BJ,EAAMjG,WAAa,EAAQ,MAG3BiG,EAAMK,OAASL,EAAMhG,cAGrBgG,EAAMM,IAAM,SAAaC,GACvB,OAAOpG,QAAQmG,IAAIC,IAErBP,EAAMQ,OAAS,EAAQ,MAGvBR,EAAMS,aAAe,EAAQ,MAE7BnH,EAAOD,QAAU2G,EAGjB1G,EAAOD,QAAP,WAAyB2G,G,kCC7DzB,IAAIhG,EAAgB,EAAQ,KAQ5B,SAASiG,EAAYS,GACnB,GAAwB,oBAAbA,EACT,MAAM,IAAIC,UAAU,gCAGtB,IAAIC,EAEJzI,KAAK0I,QAAU,IAAI1G,SAAQ,SAAyBC,GAClDwG,EAAiBxG,KAGnB,IAAI0G,EAAQ3I,KAGZA,KAAK0I,QAAQE,MAAK,SAASlC,GACzB,GAAKiC,EAAME,WAAX,CAEA,IAAIC,EACAC,EAAIJ,EAAME,WAAWG,OAEzB,IAAKF,EAAI,EAAGA,EAAIC,EAAGD,IACjBH,EAAME,WAAWC,GAAGpC,GAEtBiC,EAAME,WAAa,SAIrB7I,KAAK0I,QAAQE,KAAO,SAASK,GAC3B,IAAIC,EAEAR,EAAU,IAAI1G,SAAQ,SAASC,GACjC0G,EAAM9B,UAAU5E,GAChBiH,EAAWjH,KACV2G,KAAKK,GAMR,OAJAP,EAAQhC,OAAS,WACfiC,EAAMhG,YAAYuG,IAGbR,GAGTH,GAAS,SAAgBY,GACnBR,EAAMS,SAKVT,EAAMS,OAAS,IAAIvH,EAAcsH,GACjCV,EAAeE,EAAMS,YAOzBtB,EAAYL,UAAU4B,iBAAmB,WACvC,GAAIrJ,KAAKoJ,OACP,MAAMpJ,KAAKoJ,QAQftB,EAAYL,UAAUZ,UAAY,SAAmByC,GAC/CtJ,KAAKoJ,OACPE,EAAStJ,KAAKoJ,QAIZpJ,KAAK6I,WACP7I,KAAK6I,WAAWU,KAAKD,GAErBtJ,KAAK6I,WAAa,CAACS,IAQvBxB,EAAYL,UAAU9E,YAAc,SAAqB2G,GACvD,GAAKtJ,KAAK6I,WAAV,CAGA,IAAIW,EAAQxJ,KAAK6I,WAAW9D,QAAQuE,IACrB,IAAXE,GACFxJ,KAAK6I,WAAWY,OAAOD,EAAO,KAQlC1B,EAAY4B,OAAS,WACnB,IAAIhD,EACAiC,EAAQ,IAAIb,GAAY,SAAkB6B,GAC5CjD,EAASiD,KAEX,MAAO,CACLhB,MAAOA,EACPjC,OAAQA,IAIZvF,EAAOD,QAAU4G,G,iCCpHjB,IAAIlG,EAAa,EAAQ,MACrBR,EAAQ,EAAQ,MAQpB,SAASS,EAAcsH,GAErBvH,EAAWvB,KAAKL,KAAiB,MAAXmJ,EAAkB,WAAaA,EAASvH,EAAWgI,cACzE5J,KAAK6J,KAAO,gBAGdzI,EAAM0I,SAASjI,EAAeD,EAAY,CACxCmI,YAAY,IAGd5I,EAAOD,QAAUW,G,8BCnBjBV,EAAOD,QAAU,SAAkBkD,GACjC,SAAUA,IAASA,EAAM2F,c,iCCD3B,IAAI3I,EAAQ,EAAQ,MAChBG,EAAW,EAAQ,MACnByI,EAAqB,EAAQ,KAC7BC,EAAkB,EAAQ,MAC1B7C,EAAc,EAAQ,MACtB5F,EAAgB,EAAQ,MACxB0I,EAAY,EAAQ,MAEpBC,EAAaD,EAAUC,WAM3B,SAAShD,EAAMS,GACb5H,KAAKqH,SAAWO,EAChB5H,KAAKoK,aAAe,CAClBpH,QAAS,IAAIgH,EACbhG,SAAU,IAAIgG,GASlB7C,EAAMM,UAAUzE,QAAU,SAAiBqH,EAAatI,GAG3B,kBAAhBsI,GACTtI,EAASA,GAAU,GACnBA,EAAO4B,IAAM0G,GAEbtI,EAASsI,GAAe,GAG1BtI,EAASqF,EAAYpH,KAAKqH,SAAUtF,GAGhCA,EAAOwC,OACTxC,EAAOwC,OAASxC,EAAOwC,OAAO4B,cACrBnG,KAAKqH,SAAS9C,OACvBxC,EAAOwC,OAASvE,KAAKqH,SAAS9C,OAAO4B,cAErCpE,EAAOwC,OAAS,MAGlB,IAAIgB,EAAexD,EAAOwD,kBAELO,IAAjBP,GACF2E,EAAUI,cAAc/E,EAAc,CACpCgF,kBAAmBJ,EAAW5E,aAAa4E,EAAWK,SACtDC,kBAAmBN,EAAW5E,aAAa4E,EAAWK,SACtDhF,oBAAqB2E,EAAW5E,aAAa4E,EAAWK,WACvD,GAIL,IAAIE,EAA0B,GAC1BC,GAAiC,EACrC3K,KAAKoK,aAAapH,QAAQgD,SAAQ,SAAoC4E,GACjC,oBAAxBA,EAAYC,UAA0D,IAAhCD,EAAYC,QAAQ9I,KAIrE4I,EAAiCA,GAAkCC,EAAYE,YAE/EJ,EAAwBK,QAAQH,EAAYI,UAAWJ,EAAYK,cAGrE,IAKIvC,EALAwC,EAA2B,GAO/B,GANAlL,KAAKoK,aAAapG,SAASgC,SAAQ,SAAkC4E,GACnEM,EAAyB3B,KAAKqB,EAAYI,UAAWJ,EAAYK,cAK9DN,EAAgC,CACnC,IAAIQ,EAAQ,CAAClB,OAAiBnE,GAE9BsF,MAAM3D,UAAUsD,QAAQM,MAAMF,EAAOT,GACrCS,EAAQA,EAAMlK,OAAOiK,GAErBxC,EAAU1G,QAAQC,QAAQF,GAC1B,MAAOoJ,EAAMnC,OACXN,EAAUA,EAAQE,KAAKuC,EAAMG,QAASH,EAAMG,SAG9C,OAAO5C,EAIT,IAAI6C,EAAYxJ,EAChB,MAAO2I,EAAwB1B,OAAQ,CACrC,IAAIwC,EAAcd,EAAwBY,QACtCG,EAAaf,EAAwBY,QACzC,IACEC,EAAYC,EAAYD,GACxB,MAAOG,GACPD,EAAWC,GACX,OAIJ,IACEhD,EAAUuB,EAAgBsB,GAC1B,MAAOG,GACP,OAAO1J,QAAQE,OAAOwJ,GAGxB,MAAOR,EAAyBlC,OAC9BN,EAAUA,EAAQE,KAAKsC,EAAyBI,QAASJ,EAAyBI,SAGpF,OAAO5C,GAGTvB,EAAMM,UAAUkE,OAAS,SAAgB5J,GACvCA,EAASqF,EAAYpH,KAAKqH,SAAUtF,GACpC,IAAI0B,EAAWjC,EAAcO,EAAO2B,QAAS3B,EAAO4B,KACpD,OAAOpC,EAASkC,EAAU1B,EAAO0C,OAAQ1C,EAAO2C,mBAIlDtD,EAAM4E,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6BzB,GAE/E4C,EAAMM,UAAUlD,GAAU,SAASZ,EAAK5B,GACtC,OAAO/B,KAAKgD,QAAQoE,EAAYrF,GAAU,GAAI,CAC5CwC,OAAQA,EACRZ,IAAKA,EACLtB,MAAON,GAAU,IAAIM,YAK3BjB,EAAM4E,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BzB,GAGrE,SAASqH,EAAmBC,GAC1B,OAAO,SAAoBlI,EAAKtB,EAAMN,GACpC,OAAO/B,KAAKgD,QAAQoE,EAAYrF,GAAU,GAAI,CAC5CwC,OAAQA,EACRhC,QAASsJ,EAAS,CAChB,eAAgB,uBACd,GACJlI,IAAKA,EACLtB,KAAMA,MAKZ8E,EAAMM,UAAUlD,GAAUqH,IAE1BzE,EAAMM,UAAUlD,EAAS,QAAUqH,GAAmB,MAGxDzK,EAAOD,QAAUiG,G,kCC7JjB,IAAI/F,EAAQ,EAAQ,MAYpB,SAASQ,EAAWuH,EAAS2C,EAAM/J,EAAQiB,EAASgB,GAClD+H,MAAM1L,KAAKL,MACXA,KAAKmJ,QAAUA,EACfnJ,KAAK6J,KAAO,aACZiC,IAAS9L,KAAK8L,KAAOA,GACrB/J,IAAW/B,KAAK+B,OAASA,GACzBiB,IAAYhD,KAAKgD,QAAUA,GAC3BgB,IAAahE,KAAKgE,SAAWA,GAG/B5C,EAAM0I,SAASlI,EAAYmK,MAAO,CAChCC,OAAQ,WACN,MAAO,CAEL7C,QAASnJ,KAAKmJ,QACdU,KAAM7J,KAAK6J,KAEXoC,YAAajM,KAAKiM,YAClBC,OAAQlM,KAAKkM,OAEbC,SAAUnM,KAAKmM,SACfC,WAAYpM,KAAKoM,WACjBC,aAAcrM,KAAKqM,aACnBC,MAAOtM,KAAKsM,MAEZvK,OAAQ/B,KAAK+B,OACb+J,KAAM9L,KAAK8L,KACX5H,OAAQlE,KAAKgE,UAAYhE,KAAKgE,SAASE,OAASlE,KAAKgE,SAASE,OAAS,SAK7E,IAAIuD,EAAY7F,EAAW6F,UACvB8E,EAAc,GAElB,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,gBAEAvG,SAAQ,SAAS8F,GACjBS,EAAYT,GAAQ,CAAC1H,MAAO0H,MAG9BU,OAAOC,iBAAiB7K,EAAY2K,GACpCC,OAAOE,eAAejF,EAAW,eAAgB,CAACrD,OAAO,IAGzDxC,EAAW+K,KAAO,SAASjB,EAAOI,EAAM/J,EAAQiB,EAASgB,EAAU4I,GACjE,IAAIC,EAAaL,OAAO7E,OAAOF,GAY/B,OAVArG,EAAM0L,aAAapB,EAAOmB,GAAY,SAAgBE,GACpD,OAAOA,IAAQhB,MAAMtE,aAGvB7F,EAAWvB,KAAKwM,EAAYnB,EAAMvC,QAAS2C,EAAM/J,EAAQiB,EAASgB,GAElE6I,EAAWhD,KAAO6B,EAAM7B,KAExB+C,GAAeJ,OAAOQ,OAAOH,EAAYD,GAElCC,GAGT1L,EAAOD,QAAUU,G,iCCnFjB,IAAIR,EAAQ,EAAQ,MAEpB,SAAS4I,IACPhK,KAAKiN,SAAW,GAWlBjD,EAAmBvC,UAAUyF,IAAM,SAAalC,EAAWC,EAAUtL,GAOnE,OANAK,KAAKiN,SAAS1D,KAAK,CACjByB,UAAWA,EACXC,SAAUA,EACVH,cAAanL,GAAUA,EAAQmL,YAC/BD,QAASlL,EAAUA,EAAQkL,QAAU,OAEhC7K,KAAKiN,SAASjE,OAAS,GAQhCgB,EAAmBvC,UAAU0F,MAAQ,SAAeC,GAC9CpN,KAAKiN,SAASG,KAChBpN,KAAKiN,SAASG,GAAM,OAYxBpD,EAAmBvC,UAAUzB,QAAU,SAAiBqH,GACtDjM,EAAM4E,QAAQhG,KAAKiN,UAAU,SAAwBnM,GACzC,OAANA,GACFuM,EAAGvM,OAKTK,EAAOD,QAAU8I,G,kCCnDjB,IAAIsD,EAAgB,EAAQ,MACxBC,EAAc,EAAQ,MAW1BpM,EAAOD,QAAU,SAAuBwC,EAAS8J,GAC/C,OAAI9J,IAAY4J,EAAcE,GACrBD,EAAY7J,EAAS8J,GAEvBA,I,kCChBT,IAAIpM,EAAQ,EAAQ,MAChBqM,EAAgB,EAAQ,MACxB1F,EAAW,EAAQ,MACnBV,EAAW,EAAQ,MACnBxF,EAAgB,EAAQ,KAK5B,SAAS6L,EAA6B3L,GAKpC,GAJIA,EAAOW,aACTX,EAAOW,YAAY2G,mBAGjBtH,EAAOa,QAAUb,EAAOa,OAAOkE,QACjC,MAAM,IAAIjF,EAUdV,EAAOD,QAAU,SAAyBa,GACxC2L,EAA6B3L,GAG7BA,EAAOQ,QAAUR,EAAOQ,SAAW,GAGnCR,EAAOM,KAAOoL,EAAcpN,KAC1B0B,EACAA,EAAOM,KACPN,EAAOQ,QACPR,EAAO4L,kBAIT5L,EAAOQ,QAAUnB,EAAMwM,MACrB7L,EAAOQ,QAAQsL,QAAU,GACzB9L,EAAOQ,QAAQR,EAAOwC,SAAW,GACjCxC,EAAOQ,SAGTnB,EAAM4E,QACJ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WAClD,SAA2BzB,UAClBxC,EAAOQ,QAAQgC,MAI1B,IAAIuJ,EAAU/L,EAAO+L,SAAWzG,EAASyG,QAEzC,OAAOA,EAAQ/L,GAAQ6G,MAAK,SAA6B5E,GAWvD,OAVA0J,EAA6B3L,GAG7BiC,EAAS3B,KAAOoL,EAAcpN,KAC5B0B,EACAiC,EAAS3B,KACT2B,EAASzB,QACTR,EAAOgM,mBAGF/J,KACN,SAA4BoF,GAe7B,OAdKrB,EAASqB,KACZsE,EAA6B3L,GAGzBqH,GAAUA,EAAOpF,WACnBoF,EAAOpF,SAAS3B,KAAOoL,EAAcpN,KACnC0B,EACAqH,EAAOpF,SAAS3B,KAChB+G,EAAOpF,SAASzB,QAChBR,EAAOgM,qBAKN/L,QAAQE,OAAOkH,Q,kCClF1B,IAAIhI,EAAQ,EAAQ,MAUpBD,EAAOD,QAAU,SAAqB8M,EAASC,GAE7CA,EAAUA,GAAW,GACrB,IAAIlM,EAAS,GAEb,SAASmM,EAAeC,EAAQzE,GAC9B,OAAItI,EAAMgN,cAAcD,IAAW/M,EAAMgN,cAAc1E,GAC9CtI,EAAMwM,MAAMO,EAAQzE,GAClBtI,EAAMgN,cAAc1E,GACtBtI,EAAMwM,MAAM,GAAIlE,GACdtI,EAAMiN,QAAQ3E,GAChBA,EAAO4E,QAET5E,EAIT,SAAS6E,EAAoBC,GAC3B,OAAKpN,EAAMiF,YAAY4H,EAAQO,IAEnBpN,EAAMiF,YAAY2H,EAAQQ,SAA/B,EACEN,OAAepI,EAAWkI,EAAQQ,IAFlCN,EAAeF,EAAQQ,GAAOP,EAAQO,IAOjD,SAASC,EAAiBD,GACxB,IAAKpN,EAAMiF,YAAY4H,EAAQO,IAC7B,OAAON,OAAepI,EAAWmI,EAAQO,IAK7C,SAASE,EAAiBF,GACxB,OAAKpN,EAAMiF,YAAY4H,EAAQO,IAEnBpN,EAAMiF,YAAY2H,EAAQQ,SAA/B,EACEN,OAAepI,EAAWkI,EAAQQ,IAFlCN,OAAepI,EAAWmI,EAAQO,IAO7C,SAASG,EAAgBH,GACvB,OAAIA,KAAQP,EACHC,EAAeF,EAAQQ,GAAOP,EAAQO,IACpCA,KAAQR,EACVE,OAAepI,EAAWkI,EAAQQ,SADpC,EAKT,IAAII,EAAW,CACb,IAAOH,EACP,OAAUA,EACV,KAAQA,EACR,QAAWC,EACX,iBAAoBA,EACpB,kBAAqBA,EACrB,iBAAoBA,EACpB,QAAWA,EACX,eAAkBA,EAClB,gBAAmBA,EACnB,QAAWA,EACX,aAAgBA,EAChB,eAAkBA,EAClB,eAAkBA,EAClB,iBAAoBA,EACpB,mBAAsBA,EACtB,WAAcA,EACd,iBAAoBA,EACpB,cAAiBA,EACjB,eAAkBA,EAClB,UAAaA,EACb,UAAaA,EACb,WAAcA,EACd,YAAeA,EACf,WAAcA,EACd,iBAAoBA,EACpB,eAAkBC,GASpB,OANAvN,EAAM4E,QAAQwG,OAAOqC,KAAKb,GAAS/M,OAAOuL,OAAOqC,KAAKZ,KAAW,SAA4BO,GAC3F,IAAIZ,EAAQgB,EAASJ,IAASD,EAC1BO,EAAclB,EAAMY,GACvBpN,EAAMiF,YAAYyI,IAAgBlB,IAAUe,IAAqB5M,EAAOyM,GAAQM,MAG5E/M,I,kCChGT,IAAIH,EAAa,EAAQ,MASzBT,EAAOD,QAAU,SAAgBe,EAASC,EAAQ8B,GAChD,IAAI+K,EAAiB/K,EAASjC,OAAOgN,eAChC/K,EAASE,QAAW6K,IAAkBA,EAAe/K,EAASE,QAGjEhC,EAAO,IAAIN,EACT,mCAAqCoC,EAASE,OAC9C,CAACtC,EAAWoF,gBAAiBpF,EAAWoN,kBAAkBC,KAAKC,MAAMlL,EAASE,OAAS,KAAO,GAC9FF,EAASjC,OACTiC,EAAShB,QACTgB,IAPF/B,EAAQ+B,K,kCCZZ,IAAI5C,EAAQ,EAAQ,MAChBiG,EAAW,EAAQ,MAUvBlG,EAAOD,QAAU,SAAuBmB,EAAME,EAAS4M,GACrD,IAAIpP,EAAUC,MAAQqH,EAMtB,OAJAjG,EAAM4E,QAAQmJ,GAAK,SAAmB9B,GACpChL,EAAOgL,EAAGhN,KAAKN,EAASsC,EAAME,MAGzBF,I,kCClBT,IAAIjB,EAAQ,EAAQ,MAChBgO,EAAsB,EAAQ,MAC9BxN,EAAa,EAAQ,MACrBD,EAAuB,EAAQ,MAC/BsG,EAAa,EAAQ,MAErBoH,EAAuB,CACzB,eAAgB,qCAGlB,SAASC,EAAsB/M,EAAS6B,IACjChD,EAAMiF,YAAY9D,IAAYnB,EAAMiF,YAAY9D,EAAQ,mBAC3DA,EAAQ,gBAAkB6B,GAI9B,SAASmL,IACP,IAAIzB,EAQJ,OAP8B,qBAAnB7K,gBAGmB,qBAAZuM,SAAuE,qBAA5ChD,OAAO/E,UAAUgI,SAASpP,KAAKmP,YAD1E1B,EAAU,EAAQ,OAKbA,EAGT,SAAS4B,EAAgBC,EAAUC,EAAQC,GACzC,GAAIzO,EAAM0O,SAASH,GACjB,IAEE,OADCC,GAAUG,KAAKC,OAAOL,GAChBvO,EAAM6O,KAAKN,GAClB,MAAOO,GACP,GAAe,gBAAXA,EAAErG,KACJ,MAAMqG,EAKZ,OAAQL,GAAWE,KAAKI,WAAWR,GAGrC,IAAItI,EAAW,CAEb9B,aAAc5D,EAEdmM,QAASyB,IAET5B,iBAAkB,CAAC,SAA0BtL,EAAME,GAIjD,GAHA6M,EAAoB7M,EAAS,UAC7B6M,EAAoB7M,EAAS,gBAEzBnB,EAAM0B,WAAWT,IACnBjB,EAAMgP,cAAc/N,IACpBjB,EAAMiP,SAAShO,IACfjB,EAAMkP,SAASjO,IACfjB,EAAMmP,OAAOlO,IACbjB,EAAMoP,OAAOnO,GAEb,OAAOA,EAET,GAAIjB,EAAMqP,kBAAkBpO,GAC1B,OAAOA,EAAKqO,OAEd,GAAItP,EAAMuP,kBAAkBtO,GAE1B,OADAiN,EAAsB/M,EAAS,mDACxBF,EAAKoN,WAGd,IAGImB,EAHAC,EAAkBzP,EAAM0P,SAASzO,GACjC0O,EAAcxO,GAAWA,EAAQ,gBAIrC,IAAKqO,EAAaxP,EAAMwP,WAAWvO,KAAWwO,GAAmC,wBAAhBE,EAAwC,CACvG,IAAIC,EAAYhR,KAAKiR,KAAOjR,KAAKiR,IAAIC,SACrC,OAAOjJ,EAAW2I,EAAa,CAAC,UAAWvO,GAAQA,EAAM2O,GAAa,IAAIA,GACrE,OAAIH,GAAmC,qBAAhBE,GAC5BzB,EAAsB/M,EAAS,oBACxBmN,EAAgBrN,IAGlBA,IAGT0L,kBAAmB,CAAC,SAA2B1L,GAC7C,IAAIkD,EAAevF,KAAKuF,cAAgB8B,EAAS9B,aAC7CgF,EAAoBhF,GAAgBA,EAAagF,kBACjDE,EAAoBlF,GAAgBA,EAAakF,kBACjD0G,GAAqB5G,GAA2C,SAAtBvK,KAAKwC,aAEnD,GAAI2O,GAAsB1G,GAAqBrJ,EAAM0O,SAASzN,IAASA,EAAK2G,OAC1E,IACE,OAAO+G,KAAKC,MAAM3N,GAClB,MAAO6N,GACP,GAAIiB,EAAmB,CACrB,GAAe,gBAAXjB,EAAErG,KACJ,MAAMjI,EAAW+K,KAAKuD,EAAGtO,EAAWoN,iBAAkBhP,KAAM,KAAMA,KAAKgE,UAEzE,MAAMkM,GAKZ,OAAO7N,IAOTsC,QAAS,EAETiB,eAAgB,aAChBG,eAAgB,eAEhBqL,kBAAmB,EACnBC,eAAgB,EAEhBJ,IAAK,CACHC,SAAU,EAAQ,OAGpBnC,eAAgB,SAAwB7K,GACtC,OAAOA,GAAU,KAAOA,EAAS,KAGnC3B,QAAS,CACPsL,OAAQ,CACN,OAAU,uCAKhBzM,EAAM4E,QAAQ,CAAC,SAAU,MAAO,SAAS,SAA6BzB,GACpE8C,EAAS9E,QAAQgC,GAAU,MAG7BnD,EAAM4E,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BzB,GACrE8C,EAAS9E,QAAQgC,GAAUnD,EAAMwM,MAAMyB,MAGzClO,EAAOD,QAAUmG,G,8BC/IjBlG,EAAOD,QAAU,CACfqJ,mBAAmB,EACnBE,mBAAmB,EACnBjF,qBAAqB,I,iBCLvBrE,EAAOD,QAAU,CACf,QAAW,W,8BCCbC,EAAOD,QAAU,SAAcmM,EAAIiE,GACjC,OAAO,WAEL,IADA,IAAIC,EAAO,IAAInG,MAAMoG,UAAUxI,QACtBF,EAAI,EAAGA,EAAIyI,EAAKvI,OAAQF,IAC/ByI,EAAKzI,GAAK0I,UAAU1I,GAEtB,OAAOuE,EAAGhC,MAAMiG,EAASC,M,kCCN7B,IAAInQ,EAAQ,EAAQ,MAEpB,SAASqQ,EAAOxL,GACd,OAAO3C,mBAAmB2C,GACxByL,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KAUrBvQ,EAAOD,QAAU,SAAkByC,EAAKc,EAAQC,GAE9C,IAAKD,EACH,OAAOd,EAGT,IAAIgO,EACJ,GAAIjN,EACFiN,EAAmBjN,EAAiBD,QAC/B,GAAIrD,EAAMuP,kBAAkBlM,GACjCkN,EAAmBlN,EAAOgL,eACrB,CACL,IAAImC,EAAQ,GAEZxQ,EAAM4E,QAAQvB,GAAQ,SAAmBwB,EAAKC,GAChC,OAARD,GAA+B,qBAARA,IAIvB7E,EAAMiN,QAAQpI,GAChBC,GAAY,KAEZD,EAAM,CAACA,GAGT7E,EAAM4E,QAAQC,GAAK,SAAoB4L,GACjCzQ,EAAM0Q,OAAOD,GACfA,EAAIA,EAAEE,cACG3Q,EAAM0P,SAASe,KACxBA,EAAI9B,KAAKI,UAAU0B,IAErBD,EAAMrI,KAAKkI,EAAOvL,GAAO,IAAMuL,EAAOI,WAI1CF,EAAmBC,EAAMI,KAAK,KAGhC,GAAIL,EAAkB,CACpB,IAAIM,EAAgBtO,EAAIoB,QAAQ,MACT,IAAnBkN,IACFtO,EAAMA,EAAI2K,MAAM,EAAG2D,IAGrBtO,KAA8B,IAAtBA,EAAIoB,QAAQ,KAAc,IAAM,KAAO4M,EAGjD,OAAOhO,I,8BC3DTxC,EAAOD,QAAU,SAAqBwC,EAASwO,GAC7C,OAAOA,EACHxO,EAAQgO,QAAQ,OAAQ,IAAM,IAAMQ,EAAYR,QAAQ,OAAQ,IAChEhO,I,kCCVN,IAAItC,EAAQ,EAAQ,MAEpBD,EAAOD,QACLE,EAAM2B,uBAGJ,WACE,MAAO,CACLoP,MAAO,SAAetI,EAAMzF,EAAOgO,EAASC,EAAMC,EAAQC,GACxD,IAAIC,EAAS,GACbA,EAAOjJ,KAAKM,EAAO,IAAMvG,mBAAmBc,IAExChD,EAAMqR,SAASL,IACjBI,EAAOjJ,KAAK,WAAa,IAAImJ,KAAKN,GAASO,eAGzCvR,EAAM0O,SAASuC,IACjBG,EAAOjJ,KAAK,QAAU8I,GAGpBjR,EAAM0O,SAASwC,IACjBE,EAAOjJ,KAAK,UAAY+I,IAGX,IAAXC,GACFC,EAAOjJ,KAAK,UAGdqJ,SAASJ,OAASA,EAAOR,KAAK,OAGhCnM,KAAM,SAAcgE,GAClB,IAAIgJ,EAAQD,SAASJ,OAAOK,MAAM,IAAIC,OAAO,aAAejJ,EAAO,cACnE,OAAQgJ,EAAQE,mBAAmBF,EAAM,IAAM,MAGjDG,OAAQ,SAAgBnJ,GACtB7J,KAAKmS,MAAMtI,EAAM,GAAI6I,KAAKO,MAAQ,SA/BxC,GAqCA,WACE,MAAO,CACLd,MAAO,aACPtM,KAAM,WAAkB,OAAO,MAC/BmN,OAAQ,cAJZ,I,8BCrCJ7R,EAAOD,QAAU,SAAuByC,GAItC,MAAO,8BAA8BuP,KAAKvP,K,kCCV5C,IAAIvC,EAAQ,EAAQ,MAQpBD,EAAOD,QAAU,SAAsBiS,GACrC,OAAO/R,EAAM0P,SAASqC,KAAsC,IAAzBA,EAAQ7K,e,kCCT7C,IAAIlH,EAAQ,EAAQ,MAEpBD,EAAOD,QACLE,EAAM2B,uBAIJ,WACE,IAEIqQ,EAFAC,EAAO,kBAAkBH,KAAKI,UAAUC,WACxCC,EAAiBZ,SAASa,cAAc,KAS5C,SAASC,EAAW/P,GAClB,IAAIgQ,EAAOhQ,EAWX,OATI0P,IAEFG,EAAeI,aAAa,OAAQD,GACpCA,EAAOH,EAAeG,MAGxBH,EAAeI,aAAa,OAAQD,GAG7B,CACLA,KAAMH,EAAeG,KACrB5M,SAAUyM,EAAezM,SAAWyM,EAAezM,SAAS2K,QAAQ,KAAM,IAAM,GAChFmC,KAAML,EAAeK,KACrBC,OAAQN,EAAeM,OAASN,EAAeM,OAAOpC,QAAQ,MAAO,IAAM,GAC3EqC,KAAMP,EAAeO,KAAOP,EAAeO,KAAKrC,QAAQ,KAAM,IAAM,GACpEsC,SAAUR,EAAeQ,SACzBC,KAAMT,EAAeS,KACrBC,SAAiD,MAAtCV,EAAeU,SAASC,OAAO,GACxCX,EAAeU,SACf,IAAMV,EAAeU,UAY3B,OARAd,EAAYM,EAAWU,OAAOC,SAASV,MAQhC,SAAyBW,GAC9B,IAAIC,EAAUnT,EAAM0O,SAASwE,GAAeZ,EAAWY,GAAcA,EACrE,OAAQC,EAAOxN,WAAaqM,EAAUrM,UAClCwN,EAAOV,OAAST,EAAUS,MAhDlC,GAqDA,WACE,OAAO,WACL,OAAO,GAFX,I,kCC5DJ,IAAIzS,EAAQ,EAAQ,MAEpBD,EAAOD,QAAU,SAA6BqB,EAASiS,GACrDpT,EAAM4E,QAAQzD,GAAS,SAAuB6B,EAAOyF,GAC/CA,IAAS2K,GAAkB3K,EAAKrF,gBAAkBgQ,EAAehQ,gBACnEjC,EAAQiS,GAAkBpQ,SACnB7B,EAAQsH,S,iBCPrB1I,EAAOD,QAAU,M,kCCCjB,IAAIE,EAAQ,EAAQ,MAIhBqT,EAAoB,CACtB,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,cAgB5BtT,EAAOD,QAAU,SAAsBqB,GACrC,IACI2D,EACAD,EACA6C,EAHAyL,EAAS,GAKb,OAAKhS,GAELnB,EAAM4E,QAAQzD,EAAQmS,MAAM,OAAO,SAAgBC,GAKjD,GAJA7L,EAAI6L,EAAK5P,QAAQ,KACjBmB,EAAM9E,EAAM6O,KAAK0E,EAAKC,OAAO,EAAG9L,IAAI3C,cACpCF,EAAM7E,EAAM6O,KAAK0E,EAAKC,OAAO9L,EAAI,IAE7B5C,EAAK,CACP,GAAIqO,EAAOrO,IAAQuO,EAAkB1P,QAAQmB,IAAQ,EACnD,OAGAqO,EAAOrO,GADG,eAARA,GACaqO,EAAOrO,GAAOqO,EAAOrO,GAAO,IAAIjF,OAAO,CAACgF,IAEzCsO,EAAOrO,GAAOqO,EAAOrO,GAAO,KAAOD,EAAMA,MAKtDsO,GAnBgBA,I,6BC9BzBpT,EAAOD,QAAU,SAAuByC,GACtC,IAAIkP,EAAQ,4BAA4BgC,KAAKlR,GAC7C,OAAOkP,GAASA,EAAM,IAAM,K,8BCkB9B1R,EAAOD,QAAU,SAAgB4T,GAC/B,OAAO,SAAcC,GACnB,OAAOD,EAASzJ,MAAM,KAAM0J,M,kCCtBhC,IAAI3T,EAAQ,EAAQ,MASpB,SAAS6G,EAAW8E,EAAKiI,GAEvBA,EAAWA,GAAY,IAAI9D,SAE3B,IAAI5E,EAAQ,GAEZ,SAAS2I,EAAa7Q,GACpB,OAAc,OAAVA,EAAuB,GAEvBhD,EAAM0Q,OAAO1N,GACRA,EAAM2N,cAGX3Q,EAAMgP,cAAchM,IAAUhD,EAAM8T,aAAa9Q,GAC5B,oBAAT+Q,KAAsB,IAAIA,KAAK,CAAC/Q,IAAUgR,OAAOzI,KAAKvI,GAG/DA,EAGT,SAASiR,EAAMhT,EAAMiT,GACnB,GAAIlU,EAAMgN,cAAc/L,IAASjB,EAAMiN,QAAQhM,GAAO,CACpD,IAA6B,IAAzBiK,EAAMvH,QAAQ1C,GAChB,MAAM0J,MAAM,kCAAoCuJ,GAGlDhJ,EAAM/C,KAAKlH,GAEXjB,EAAM4E,QAAQ3D,GAAM,SAAc+B,EAAO8B,GACvC,IAAI9E,EAAMiF,YAAYjC,GAAtB,CACA,IACI2Q,EADAQ,EAAUD,EAAYA,EAAY,IAAMpP,EAAMA,EAGlD,GAAI9B,IAAUkR,GAA8B,kBAAVlR,EAChC,GAAIhD,EAAMoU,SAAStP,EAAK,MAEtB9B,EAAQ2L,KAAKI,UAAU/L,QAClB,GAAIhD,EAAMoU,SAAStP,EAAK,QAAU6O,EAAM3T,EAAMqU,QAAQrR,IAK3D,YAHA2Q,EAAI/O,SAAQ,SAAS0P,IAClBtU,EAAMiF,YAAYqP,IAAOV,EAASW,OAAOJ,EAASN,EAAaS,OAMtEL,EAAMjR,EAAOmR,OAGfjJ,EAAMsJ,WAENZ,EAASW,OAAOL,EAAWL,EAAa5S,IAM5C,OAFAgT,EAAMtI,GAECiI,EAGT7T,EAAOD,QAAU+G,G,kCCrEjB,IAAID,EAAU,gBACVpG,EAAa,EAAQ,MAErBuI,EAAa,GAGjB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAUnE,SAAQ,SAASW,EAAMmC,GACrFqB,EAAWxD,GAAQ,SAAmBkP,GACpC,cAAcA,IAAUlP,GAAQ,KAAOmC,EAAI,EAAI,KAAO,KAAOnC,MAIjE,IAAImP,EAAqB,GA6CzB,SAASxL,EAAc3K,EAASoW,EAAQC,GACtC,GAAuB,kBAAZrW,EACT,MAAM,IAAIiC,EAAW,4BAA6BA,EAAWqU,sBAE/D,IAAIpH,EAAOrC,OAAOqC,KAAKlP,GACnBmJ,EAAI+F,EAAK7F,OACb,MAAOF,KAAM,EAAG,CACd,IAAIoN,EAAMrH,EAAK/F,GACXoB,EAAY6L,EAAOG,GACvB,GAAIhM,EAAJ,CACE,IAAI9F,EAAQzE,EAAQuW,GAChBC,OAAmBrQ,IAAV1B,GAAuB8F,EAAU9F,EAAO8R,EAAKvW,GAC1D,IAAe,IAAXwW,EACF,MAAM,IAAIvU,EAAW,UAAYsU,EAAM,YAAcC,EAAQvU,EAAWqU,2BAI5E,IAAqB,IAAjBD,EACF,MAAM,IAAIpU,EAAW,kBAAoBsU,EAAKtU,EAAWwU,iBAtD/DjM,EAAW5E,aAAe,SAAsB2E,EAAWmM,EAASlN,GAClE,SAASmN,EAAcJ,EAAKK,GAC1B,MAAO,WAAavO,EAAU,0BAA6BkO,EAAM,IAAOK,GAAQpN,EAAU,KAAOA,EAAU,IAI7G,OAAO,SAAS/E,EAAO8R,EAAKM,GAC1B,IAAkB,IAAdtM,EACF,MAAM,IAAItI,EACR0U,EAAcJ,EAAK,qBAAuBG,EAAU,OAASA,EAAU,KACvEzU,EAAW6U,gBAef,OAXIJ,IAAYP,EAAmBI,KACjCJ,EAAmBI,IAAO,EAE1BQ,QAAQC,KACNL,EACEJ,EACA,+BAAiCG,EAAU,8CAK1CnM,GAAYA,EAAU9F,EAAO8R,EAAKM,KAkC7CrV,EAAOD,QAAU,CACfoJ,cAAeA,EACfH,WAAYA,I,kCClFd,IAAIjD,EAAO,EAAQ,MAIfuI,EAAWjD,OAAO/E,UAAUgI,SAG5BmH,EAAS,SAAUC,GAErB,OAAO,SAAShB,GACd,IAAIiB,EAAMrH,EAASpP,KAAKwV,GACxB,OAAOgB,EAAMC,KAASD,EAAMC,GAAOA,EAAIxI,MAAM,GAAI,GAAGnI,gBAJ3C,CAMVqG,OAAO7E,OAAO,OAEjB,SAASoP,EAAWpQ,GAElB,OADAA,EAAOA,EAAKR,cACL,SAAkB0P,GACvB,OAAOe,EAAOf,KAAWlP,GAU7B,SAAS0H,EAAQpI,GACf,OAAOmF,MAAMiD,QAAQpI,GASvB,SAASI,EAAYJ,GACnB,MAAsB,qBAARA,EAShB,SAASoK,EAASpK,GAChB,OAAe,OAARA,IAAiBI,EAAYJ,IAA4B,OAApBA,EAAI+Q,cAAyB3Q,EAAYJ,EAAI+Q,cAChD,oBAA7B/Q,EAAI+Q,YAAY3G,UAA2BpK,EAAI+Q,YAAY3G,SAASpK,GAUlF,IAAImK,EAAgB2G,EAAW,eAS/B,SAAStG,EAAkBxK,GACzB,IAAIkQ,EAMJ,OAJEA,EAD0B,qBAAhBc,aAAiCA,YAAkB,OACpDA,YAAYC,OAAOjR,GAEnB,GAAUA,EAAU,QAAMmK,EAAcnK,EAAIyK,QAEhDyF,EAST,SAASrG,EAAS7J,GAChB,MAAsB,kBAARA,EAShB,SAASwM,EAASxM,GAChB,MAAsB,kBAARA,EAShB,SAAS6K,EAAS7K,GAChB,OAAe,OAARA,GAA+B,kBAARA,EAShC,SAASmI,EAAcnI,GACrB,GAAoB,WAAhB2Q,EAAO3Q,GACT,OAAO,EAGT,IAAIwB,EAAY+E,OAAO2K,eAAelR,GACtC,OAAqB,OAAdwB,GAAsBA,IAAc+E,OAAO/E,UAUpD,IAAIqK,EAASiF,EAAW,QASpBxG,EAASwG,EAAW,QASpBvG,EAASuG,EAAW,QASpBnG,EAAamG,EAAW,YAQ5B,SAASK,EAAWnR,GAClB,MAA8B,sBAAvBwJ,EAASpP,KAAK4F,GASvB,SAASqK,EAASrK,GAChB,OAAO6K,EAAS7K,IAAQmR,EAAWnR,EAAIoR,MASzC,SAASvU,EAAW+S,GAClB,IAAIyB,EAAU,oBACd,OAAOzB,IACgB,oBAAb3E,UAA2B2E,aAAiB3E,UACpDzB,EAASpP,KAAKwV,KAAWyB,GACxBF,EAAWvB,EAAMpG,WAAaoG,EAAMpG,aAAe6H,GAUxD,IAAI3G,EAAoBoG,EAAW,mBAQnC,SAAS9G,EAAK6G,GACZ,OAAOA,EAAI7G,KAAO6G,EAAI7G,OAAS6G,EAAIpF,QAAQ,aAAc,IAkB3D,SAAS3O,IACP,OAAyB,qBAAduQ,WAAoD,gBAAtBA,UAAUiE,SACY,iBAAtBjE,UAAUiE,SACY,OAAtBjE,UAAUiE,WAI/B,qBAAXnD,QACa,qBAAbxB,UAgBX,SAAS5M,EAAQ+G,EAAKM,GAEpB,GAAY,OAARN,GAA+B,qBAARA,EAU3B,GALmB,kBAARA,IAETA,EAAM,CAACA,IAGLsB,EAAQtB,GAEV,IAAK,IAAIjE,EAAI,EAAGC,EAAIgE,EAAI/D,OAAQF,EAAIC,EAAGD,IACrCuE,EAAGhN,KAAK,KAAM0M,EAAIjE,GAAIA,EAAGiE,QAI3B,IAAK,IAAI7G,KAAO6G,EACVP,OAAO/E,UAAU+P,eAAenX,KAAK0M,EAAK7G,IAC5CmH,EAAGhN,KAAK,KAAM0M,EAAI7G,GAAMA,EAAK6G,GAuBrC,SAASa,IACP,IAAIuI,EAAS,GACb,SAASsB,EAAYxR,EAAKC,GACpBkI,EAAc+H,EAAOjQ,KAASkI,EAAcnI,GAC9CkQ,EAAOjQ,GAAO0H,EAAMuI,EAAOjQ,GAAMD,GACxBmI,EAAcnI,GACvBkQ,EAAOjQ,GAAO0H,EAAM,GAAI3H,GACfoI,EAAQpI,GACjBkQ,EAAOjQ,GAAOD,EAAIqI,QAElB6H,EAAOjQ,GAAOD,EAIlB,IAAK,IAAI6C,EAAI,EAAGC,EAAIyI,UAAUxI,OAAQF,EAAIC,EAAGD,IAC3C9C,EAAQwL,UAAU1I,GAAI2O,GAExB,OAAOtB,EAWT,SAASzO,EAAOgQ,EAAGC,EAAGrG,GAQpB,OAPAtL,EAAQ2R,GAAG,SAAqB1R,EAAKC,GAEjCwR,EAAExR,GADAoL,GAA0B,oBAARrL,EACXiB,EAAKjB,EAAKqL,GAEVrL,KAGNyR,EAST,SAASE,EAASC,GAIhB,OAH8B,QAA1BA,EAAQC,WAAW,KACrBD,EAAUA,EAAQvJ,MAAM,IAEnBuJ,EAWT,SAAS/N,EAASkN,EAAae,EAAkBC,EAAOzL,GACtDyK,EAAYvP,UAAY+E,OAAO7E,OAAOoQ,EAAiBtQ,UAAW8E,GAClEyK,EAAYvP,UAAUuP,YAAcA,EACpCgB,GAASxL,OAAOQ,OAAOgK,EAAYvP,UAAWuQ,GAWhD,SAASlL,EAAamL,EAAWC,EAASC,GACxC,IAAIH,EACAlP,EACA0F,EACA4J,EAAS,GAEbF,EAAUA,GAAW,GAErB,EAAG,CACDF,EAAQxL,OAAO6L,oBAAoBJ,GACnCnP,EAAIkP,EAAMhP,OACV,MAAOF,KAAM,EACX0F,EAAOwJ,EAAMlP,GACRsP,EAAO5J,KACV0J,EAAQ1J,GAAQyJ,EAAUzJ,GAC1B4J,EAAO5J,IAAQ,GAGnByJ,EAAYzL,OAAO2K,eAAec,SAC3BA,KAAeE,GAAUA,EAAOF,EAAWC,KAAaD,IAAczL,OAAO/E,WAEtF,OAAOyQ,EAUT,SAAS1C,EAASsB,EAAKwB,EAAcC,GACnCzB,EAAM0B,OAAO1B,SACIhR,IAAbyS,GAA0BA,EAAWzB,EAAI9N,UAC3CuP,EAAWzB,EAAI9N,QAEjBuP,GAAYD,EAAatP,OACzB,IAAIyP,EAAY3B,EAAI/R,QAAQuT,EAAcC,GAC1C,OAAsB,IAAfE,GAAoBA,IAAcF,EAS3C,SAAS9C,EAAQI,GACf,IAAKA,EAAO,OAAO,KACnB,IAAI/M,EAAI+M,EAAM7M,OACd,GAAI3C,EAAYyC,GAAI,OAAO,KAC3B,IAAIiM,EAAM,IAAI3J,MAAMtC,GACpB,MAAOA,KAAM,EACXiM,EAAIjM,GAAK+M,EAAM/M,GAEjB,OAAOiM,EAIT,IAAIG,EAAe,SAAUwD,GAE3B,OAAO,SAAS7C,GACd,OAAO6C,GAAc7C,aAAiB6C,GAHvB,CAKM,qBAAfC,YAA8BnM,OAAO2K,eAAewB,aAE9DxX,EAAOD,QAAU,CACfmN,QAASA,EACT+B,cAAeA,EACfC,SAAUA,EACVvN,WAAYA,EACZ2N,kBAAmBA,EACnBX,SAAUA,EACV2C,SAAUA,EACV3B,SAAUA,EACV1C,cAAeA,EACf/H,YAAaA,EACbyL,OAAQA,EACRvB,OAAQA,EACRC,OAAQA,EACR4G,WAAYA,EACZ9G,SAAUA,EACVK,kBAAmBA,EACnB5N,qBAAsBA,EACtBiD,QAASA,EACT4H,MAAOA,EACPlG,OAAQA,EACRuI,KAAMA,EACN2H,SAAUA,EACV9N,SAAUA,EACVgD,aAAcA,EACd8J,OAAQA,EACRG,WAAYA,EACZvB,SAAUA,EACVC,QAASA,EACTP,aAAcA,EACdtE,WAAYA,I,6TC3cd,MAAMgI,EAAoB,WACxB,MAAsB,qBAAXxE,OACF,SAASU,GACd,OAAOA,KAGJV,OAAOyE,sBANS,GAQzB,SAASC,EAAUzL,EAAIiE,EAASyH,GAC9B,MAAMC,EAAaD,GAAY,CAAExH,GAASnG,MAAM3D,UAAU6G,MAAMjO,KAAKkR,IACrE,IAAI0H,GAAU,EACV1H,EAAO,GACX,OAAO,YAAY2H,GACjB3H,EAAOyH,EAAWE,GACbD,IACHA,GAAU,EACVL,EAAiBvY,KAAK+T,QAAQ,KAC5B6E,GAAU,EACV5L,EAAGhC,MAAMiG,EAASC,QAK1B,SAAS4H,EAAS9L,EAAI+L,GACpB,IAAIzU,EACJ,OAAO,YAAY4M,GAOjB,OANI6H,GACFC,aAAa1U,GACbA,EAAUK,WAAWqI,EAAI+L,EAAO7H,IAEhClE,EAAGhC,MAAMrL,KAAMuR,GAEV6H,GAGX,MAAME,EAAsBC,GAAoB,UAAVA,EAAoB,OAAmB,QAAVA,EAAkB,QAAU,SACzFC,EAAiB,CAACD,EAAOE,EAAOC,IAAkB,UAAVH,EAAoBE,EAAkB,QAAVF,EAAkBG,GAAOD,EAAQC,GAAO,EAC5GC,EAAS,CAACJ,EAAOK,EAAMC,EAAOC,KAClC,MAAMC,EAAQD,EAAM,OAAS,QAC7B,OAAOP,IAAUQ,EAAQF,EAAkB,WAAVN,GAAsBK,EAAOC,GAAS,EAAID,GAG7E,SAASI,KACT,MAAMC,EAAO,WACX,IAAI7M,EAAK,EACT,OAAO,WACL,OAAOA,KAHC,GAMZ,SAAS8M,EAAc9V,GACrB,OAAiB,OAAVA,GAAmC,qBAAVA,EAElC,SAASiK,EAAQjK,GACf,GAAIgH,MAAMiD,SAAWjD,MAAMiD,QAAQjK,GACjC,OAAO,EAET,MAAMuC,EAAO6F,OAAO/E,UAAUgI,SAASpP,KAAK+D,GAC5C,MAAyB,YAArBuC,EAAK2H,MAAM,EAAG,IAAuC,WAAnB3H,EAAK2H,OAAO,GAKpD,SAASwC,EAAS1M,GAChB,OAAiB,OAAVA,GAA4D,oBAA1CoI,OAAO/E,UAAUgI,SAASpP,KAAK+D,GAE1D,MAAM+V,EAAkB/V,IAA4B,kBAAVA,GAAsBA,aAAiBgW,SAAWC,UAAUjW,GACtG,SAASkW,EAAgBlW,EAAOmW,GAC9B,OAAOJ,EAAe/V,GAASA,EAAQmW,EAEzC,SAASC,EAAepW,EAAOmW,GAC7B,MAAwB,qBAAVnW,EAAwBmW,EAAenW,EAEvD,MAAMqW,EAAe,CAACrW,EAAOsW,IACV,kBAAVtW,GAAsBA,EAAMoR,SAAS,KAC1CmF,WAAWvW,GAAS,IAClBA,EAAQsW,EACRE,EAAc,CAACxW,EAAOsW,IACT,kBAAVtW,GAAsBA,EAAMoR,SAAS,KAC1CmF,WAAWvW,GAAS,IAAMsW,GACvBtW,EACP,SAAS0Q,EAASzH,EAAIkE,EAAMD,GAC1B,GAAIjE,GAAyB,oBAAZA,EAAGhN,KAClB,OAAOgN,EAAGhC,MAAMiG,EAASC,GAG7B,SAASsJ,EAAKC,EAAUzN,EAAIiE,EAASyJ,GACnC,IAAIjS,EAAGkS,EAAKnM,EACZ,GAAIR,EAAQyM,GAEV,GADAE,EAAMF,EAAS9R,OACX+R,EACF,IAAKjS,EAAIkS,EAAM,EAAGlS,GAAK,EAAGA,IACxBuE,EAAGhN,KAAKiR,EAASwJ,EAAShS,GAAIA,QAGhC,IAAKA,EAAI,EAAGA,EAAIkS,EAAKlS,IACnBuE,EAAGhN,KAAKiR,EAASwJ,EAAShS,GAAIA,QAG7B,GAAIgI,EAASgK,GAGlB,IAFAjM,EAAOrC,OAAOqC,KAAKiM,GACnBE,EAAMnM,EAAK7F,OACNF,EAAI,EAAGA,EAAIkS,EAAKlS,IACnBuE,EAAGhN,KAAKiR,EAASwJ,EAASjM,EAAK/F,IAAK+F,EAAK/F,IAI/C,SAASmS,EAAeC,EAAIC,GAC1B,IAAIrS,EAAGsS,EAAMC,EAAIC,EACjB,IAAKJ,IAAOC,GAAMD,EAAGlS,SAAWmS,EAAGnS,OACjC,OAAO,EAET,IAAKF,EAAI,EAAGsS,EAAOF,EAAGlS,OAAQF,EAAIsS,IAAQtS,EAGxC,GAFAuS,EAAKH,EAAGpS,GACRwS,EAAKH,EAAGrS,GACJuS,EAAGE,eAAiBD,EAAGC,cAAgBF,EAAG7R,QAAU8R,EAAG9R,MACzD,OAAO,EAGX,OAAO,EAET,SAASgS,EAAQ9R,GACf,GAAI2E,EAAQ3E,GACV,OAAOA,EAAO+R,IAAID,GAEpB,GAAI1K,EAASpH,GAAS,CACpB,MAAMyE,EAAS3B,OAAO7E,OAAO,MACvBkH,EAAOrC,OAAOqC,KAAKnF,GACnBgS,EAAO7M,EAAK7F,OAClB,IAAI2S,EAAI,EACR,KAAOA,EAAID,IAAQC,EACjBxN,EAAOU,EAAK8M,IAAMH,EAAQ9R,EAAOmF,EAAK8M,KAExC,OAAOxN,EAET,OAAOzE,EAET,SAASkS,EAAW1V,GAClB,OAAmE,IAA5D,CAAC,YAAa,YAAa,eAAenB,QAAQmB,GAE3D,SAAS2V,EAAQ3V,EAAKiI,EAAQzE,EAAQ/J,GACpC,IAAKic,EAAW1V,GACd,OAEF,MAAM4V,EAAO3N,EAAOjI,GACd6V,EAAOrS,EAAOxD,GAChB4K,EAASgL,IAAShL,EAASiL,GAC7BnO,EAAMkO,EAAMC,EAAMpc,GAElBwO,EAAOjI,GAAOsV,EAAQO,GAG1B,SAASnO,EAAMO,EAAQzE,EAAQ/J,GAC7B,MAAMqc,EAAU3N,EAAQ3E,GAAUA,EAAS,CAACA,GACtC0R,EAAOY,EAAQhT,OACrB,IAAK8H,EAAS3C,GACZ,OAAOA,EAETxO,EAAUA,GAAW,GACrB,MAAMsc,EAAStc,EAAQsc,QAAUJ,EACjC,IAAK,IAAI/S,EAAI,EAAGA,EAAIsS,IAAQtS,EAAG,CAE7B,GADAY,EAASsS,EAAQlT,IACZgI,EAASpH,GACZ,SAEF,MAAMmF,EAAOrC,OAAOqC,KAAKnF,GACzB,IAAK,IAAIiS,EAAI,EAAGD,EAAO7M,EAAK7F,OAAQ2S,EAAID,IAAQC,EAC9CM,EAAOpN,EAAK8M,GAAIxN,EAAQzE,EAAQ/J,GAGpC,OAAOwO,EAET,SAAS+N,EAAQ/N,EAAQzE,GACvB,OAAOkE,EAAMO,EAAQzE,EAAQ,CAACuS,OAAQE,IAExC,SAASA,EAAUjW,EAAKiI,EAAQzE,GAC9B,IAAKkS,EAAW1V,GACd,OAEF,MAAM4V,EAAO3N,EAAOjI,GACd6V,EAAOrS,EAAOxD,GAChB4K,EAASgL,IAAShL,EAASiL,GAC7BG,EAAQJ,EAAMC,GACJvP,OAAO/E,UAAU+P,eAAenX,KAAK8N,EAAQjI,KACvDiI,EAAOjI,GAAOsV,EAAQO,IAS1B,MAAMK,EAAc,GACdC,EAAM,IACZ,SAASC,EAAmBpW,EAAKuT,GAC/B,MAAM8C,EAAMrW,EAAInB,QAAQsX,EAAK5C,GAC7B,OAAgB,IAAT8C,EAAarW,EAAI8C,OAASuT,EAEnC,SAASC,EAAiBzP,EAAK7G,GAC7B,GAAIA,IAAQkW,EACV,OAAOrP,EAET,IAAI0P,EAAM,EACNF,EAAMD,EAAmBpW,EAAKuW,GAClC,MAAO1P,GAAOwP,EAAME,EAClB1P,EAAMA,EAAI7G,EAAIoI,MAAMmO,EAAKF,IACzBE,EAAMF,EAAM,EACZA,EAAMD,EAAmBpW,EAAKuW,GAEhC,OAAO1P,EAET,SAAS2P,EAAY5F,GACnB,OAAOA,EAAI3C,OAAO,GAAG3P,cAAgBsS,EAAIxI,MAAM,GAEjD,MAAMqO,EAAWvY,GAA2B,qBAAVA,EAC5BgT,EAAchT,GAA2B,oBAAVA,EAC/BwY,EAAY,CAAClF,EAAGC,KACpB,GAAID,EAAEmF,OAASlF,EAAEkF,KACf,OAAO,EAET,IAAK,MAAMC,KAAQpF,EACjB,IAAKC,EAAEoF,IAAID,GACT,OAAO,EAGX,OAAO,GAET,SAASE,EAAc9M,GACrB,MAAkB,YAAXA,EAAEvJ,MAAiC,UAAXuJ,EAAEvJ,MAA+B,gBAAXuJ,EAAEvJ,KAGzD,MAAMsW,EAAKhO,KAAKgO,GACVC,EAAM,EAAID,EACVE,EAAQD,EAAMD,EACdG,EAAWhD,OAAOiD,kBAClBC,EAAcL,EAAK,IACnBM,EAAUN,EAAK,EACfO,EAAaP,EAAK,EAClBQ,EAAqB,EAALR,EAAS,EACzBS,EAAQzO,KAAKyO,MACbC,EAAO1O,KAAK0O,KAClB,SAASC,EAAQC,GACf,MAAMC,EAAe7O,KAAK8O,MAAMF,GAChCA,EAAQG,EAAaH,EAAOC,EAAcD,EAAQ,KAAQC,EAAeD,EACzE,MAAMI,EAAYhP,KAAKiP,IAAI,GAAIjP,KAAKC,MAAMwO,EAAMG,KAC1CM,EAAWN,EAAQI,EACnBG,EAAeD,GAAY,EAAI,EAAIA,GAAY,EAAI,EAAIA,GAAY,EAAI,EAAI,GACjF,OAAOC,EAAeH,EAExB,SAASI,EAAWja,GAClB,MAAM+R,EAAS,GACTmI,EAAOrP,KAAKqP,KAAKla,GACvB,IAAI0E,EACJ,IAAKA,EAAI,EAAGA,EAAIwV,EAAMxV,IAChB1E,EAAQ0E,IAAM,IAChBqN,EAAO5M,KAAKT,GACZqN,EAAO5M,KAAKnF,EAAQ0E,IAOxB,OAJIwV,KAAiB,EAAPA,IACZnI,EAAO5M,KAAK+U,GAEdnI,EAAOoI,MAAK,CAAC7G,EAAGC,IAAMD,EAAIC,IAAG/B,MACtBO,EAET,SAAS1D,EAAS+L,GAChB,OAAQC,MAAM9D,WAAW6D,KAAOnE,SAASmE,GAE3C,SAASR,EAAaU,EAAGC,EAAGC,GAC1B,OAAO3P,KAAK4P,IAAIH,EAAIC,GAAKC,EAE3B,SAASE,EAAYJ,EAAGE,GACtB,MAAMG,EAAU9P,KAAK8O,MAAMW,GAC3B,OAASK,EAAUH,GAAYF,GAAQK,EAAUH,GAAYF,EAE/D,SAASM,EAAmBC,EAAO9Q,EAAQ+Q,GACzC,IAAIpW,EAAGsS,EAAMhX,EACb,IAAK0E,EAAI,EAAGsS,EAAO6D,EAAMjW,OAAQF,EAAIsS,EAAMtS,IACzC1E,EAAQ6a,EAAMnW,GAAGoW,GACZT,MAAMra,KACT+J,EAAOgR,IAAMlQ,KAAKkQ,IAAIhR,EAAOgR,IAAK/a,GAClC+J,EAAOiR,IAAMnQ,KAAKmQ,IAAIjR,EAAOiR,IAAKhb,IAIxC,SAASib,EAAUC,GACjB,OAAOA,GAAWrC,EAAK,KAEzB,SAASsC,GAAUC,GACjB,OAAOA,GAAW,IAAMvC,GAE1B,SAASwC,GAAef,GACtB,IAAKvE,EAAeuE,GAClB,OAEF,IAAIxO,EAAI,EACJwP,EAAI,EACR,MAAOzQ,KAAK8O,MAAMW,EAAIxO,GAAKA,IAAMwO,EAC/BxO,GAAK,GACLwP,IAEF,OAAOA,EAET,SAASC,GAAkBC,EAAaC,GACtC,MAAMC,EAAsBD,EAAWnB,EAAIkB,EAAYlB,EACjDqB,EAAsBF,EAAWlB,EAAIiB,EAAYjB,EACjDqB,EAA2B/Q,KAAKqP,KAAKwB,EAAsBA,EAAsBC,EAAsBA,GAC7G,IAAIE,EAAQhR,KAAKiR,MAAMH,EAAqBD,GAI5C,OAHIG,GAAU,GAAMhD,IAClBgD,GAAS/C,GAEJ,CACL+C,MAAAA,EACAE,SAAUH,GAGd,SAASI,GAAsBC,EAAKC,GAClC,OAAOrR,KAAKqP,KAAKrP,KAAKiP,IAAIoC,EAAI5B,EAAI2B,EAAI3B,EAAG,GAAKzP,KAAKiP,IAAIoC,EAAI3B,EAAI0B,EAAI1B,EAAG,IAExE,SAAS4B,GAAW7I,EAAGC,GACrB,OAAQD,EAAIC,EAAIwF,GAASD,EAAMD,EAEjC,SAASuD,GAAgB9I,GACvB,OAAQA,EAAIwF,EAAMA,GAAOA,EAE3B,SAASuD,GAAcR,EAAOxG,EAAOC,EAAKgH,GACxC,MAAMhJ,EAAI8I,GAAgBP,GACpBU,EAAIH,GAAgB/G,GACpBvJ,EAAIsQ,GAAgB9G,GACpBkH,EAAeJ,GAAgBG,EAAIjJ,GACnCmJ,EAAaL,GAAgBtQ,EAAIwH,GACjCoJ,EAAeN,GAAgB9I,EAAIiJ,GACnCI,EAAaP,GAAgB9I,EAAIxH,GACvC,OAAOwH,IAAMiJ,GAAKjJ,IAAMxH,GAAMwQ,GAAyBC,IAAMzQ,GACvD0Q,EAAeC,GAAcC,EAAeC,EAEpD,SAASC,GAAY5c,EAAO+a,EAAKC,GAC/B,OAAOnQ,KAAKmQ,IAAID,EAAKlQ,KAAKkQ,IAAIC,EAAKhb,IAErC,SAAS6c,GAAY7c,GACnB,OAAO4c,GAAY5c,GAAQ,MAAO,OAEpC,SAAS8c,GAAW9c,EAAOqV,EAAOC,EAAKkF,EAAU,MAC/C,OAAOxa,GAAS6K,KAAKkQ,IAAI1F,EAAOC,GAAOkF,GAAWxa,GAAS6K,KAAKmQ,IAAI3F,EAAOC,GAAOkF,EAGpF,MAAMuC,GAAUC,GAAY,IAANA,GAAiB,IAANA,EAC3BC,GAAY,CAACD,EAAGT,EAAGjB,KAAQzQ,KAAKiP,IAAI,EAAG,IAAMkD,GAAK,IAAMnS,KAAKqS,KAAKF,EAAIT,GAAKzD,EAAMwC,GACjF6B,GAAa,CAACH,EAAGT,EAAGjB,IAAMzQ,KAAKiP,IAAI,GAAI,GAAKkD,GAAKnS,KAAKqS,KAAKF,EAAIT,GAAKzD,EAAMwC,GAAK,EAC/E8B,GAAU,CACdC,OAAQL,GAAKA,EACbM,WAAYN,GAAKA,EAAIA,EACrBO,YAAaP,IAAMA,GAAKA,EAAI,GAC5BQ,cAAeR,IAAOA,GAAK,IAAO,EAC9B,GAAMA,EAAIA,GACT,MAAUA,GAAMA,EAAI,GAAK,GAC9BS,YAAaT,GAAKA,EAAIA,EAAIA,EAC1BU,aAAcV,IAAMA,GAAK,GAAKA,EAAIA,EAAI,EACtCW,eAAgBX,IAAOA,GAAK,IAAO,EAC/B,GAAMA,EAAIA,EAAIA,EACd,KAAQA,GAAK,GAAKA,EAAIA,EAAI,GAC9BY,YAAaZ,GAAKA,EAAIA,EAAIA,EAAIA,EAC9Ba,aAAcb,MAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,GAC5Cc,eAAgBd,IAAOA,GAAK,IAAO,EAC/B,GAAMA,EAAIA,EAAIA,EAAIA,GACjB,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAI,GACnCe,YAAaf,GAAKA,EAAIA,EAAIA,EAAIA,EAAIA,EAClCgB,aAAchB,IAAMA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,EAC9CiB,eAAgBjB,IAAOA,GAAK,IAAO,EAC/B,GAAMA,EAAIA,EAAIA,EAAIA,EAAIA,EACtB,KAAQA,GAAK,GAAKA,EAAIA,EAAIA,EAAIA,EAAI,GACtCkB,WAAYlB,GAA8B,EAAxBnS,KAAKsT,IAAInB,EAAI7D,GAC/BiF,YAAapB,GAAKnS,KAAKqS,IAAIF,EAAI7D,GAC/BkF,cAAerB,IAAM,IAAOnS,KAAKsT,IAAItF,EAAKmE,GAAK,GAC/CsB,WAAYtB,GAAY,IAANA,EAAW,EAAInS,KAAKiP,IAAI,EAAG,IAAMkD,EAAI,IACvDuB,YAAavB,GAAY,IAANA,EAAW,EAA4B,EAAvBnS,KAAKiP,IAAI,GAAI,GAAKkD,GACrDwB,cAAexB,GAAKD,GAAOC,GAAKA,EAAIA,EAAI,GACpC,GAAMnS,KAAKiP,IAAI,EAAG,IAAU,EAAJkD,EAAQ,IAChC,IAAyC,EAAjCnS,KAAKiP,IAAI,GAAI,IAAU,EAAJkD,EAAQ,KACvCyB,WAAYzB,GAAMA,GAAK,EAAKA,IAAMnS,KAAKqP,KAAK,EAAI8C,EAAIA,GAAK,GACzD0B,YAAa1B,GAAKnS,KAAKqP,KAAK,GAAK8C,GAAK,GAAKA,GAC3C2B,cAAe3B,IAAOA,GAAK,IAAO,GAC7B,IAAOnS,KAAKqP,KAAK,EAAI8C,EAAIA,GAAK,GAC/B,IAAOnS,KAAKqP,KAAK,GAAK8C,GAAK,GAAKA,GAAK,GACzC4B,cAAe5B,GAAKD,GAAOC,GAAKA,EAAIC,GAAUD,EAAG,KAAO,IACxD6B,eAAgB7B,GAAKD,GAAOC,GAAKA,EAAIG,GAAWH,EAAG,KAAO,IAC1D8B,iBAAiB9B,GACf,MAAMT,EAAI,MACJjB,EAAI,IACV,OAAOyB,GAAOC,GAAKA,EACjBA,EAAI,GACA,GAAMC,GAAc,EAAJD,EAAOT,EAAGjB,GAC1B,GAAM,GAAM6B,GAAe,EAAJH,EAAQ,EAAGT,EAAGjB,IAE7CyD,WAAW/B,GACT,MAAMT,EAAI,QACV,OAAOS,EAAIA,IAAMT,EAAI,GAAKS,EAAIT,IAEhCyC,YAAYhC,GACV,MAAMT,EAAI,QACV,OAAQS,GAAK,GAAKA,IAAMT,EAAI,GAAKS,EAAIT,GAAK,GAE5C0C,cAAcjC,GACZ,IAAIT,EAAI,QACR,OAAKS,GAAK,IAAO,EACDA,EAAIA,IAAuB,GAAhBT,GAAK,QAAgBS,EAAIT,GAA3C,GAEF,KAAQS,GAAK,GAAKA,IAAuB,GAAhBT,GAAK,QAAgBS,EAAIT,GAAK,IAEhE2C,aAAclC,GAAK,EAAII,GAAQ+B,cAAc,EAAInC,GACjDmC,cAAcnC,GACZ,MAAMoC,EAAI,OACJC,EAAI,KACV,OAAIrC,EAAK,EAAIqC,EACJD,EAAIpC,EAAIA,EAEbA,EAAK,EAAIqC,EACJD,GAAKpC,GAAM,IAAMqC,GAAMrC,EAAI,IAEhCA,EAAK,IAAMqC,EACND,GAAKpC,GAAM,KAAOqC,GAAMrC,EAAI,MAE9BoC,GAAKpC,GAAM,MAAQqC,GAAMrC,EAAI,SAEtCsC,gBAAiBtC,GAAMA,EAAI,GACO,GAA9BI,GAAQ8B,aAAiB,EAAJlC,GACc,GAAnCI,GAAQ+B,cAAkB,EAAJnC,EAAQ,GAAW;;;;;;;AAS/C,SAASrD,GAAMlM,GACb,OAAOA,EAAI,GAAM,EAEnB,MAAM8R,GAAM,CAAC9R,EAAG9I,EAAGjI,IAAMmO,KAAKmQ,IAAInQ,KAAKkQ,IAAItN,EAAG/Q,GAAIiI,GAClD,SAAS6a,GAAI/R,GACX,OAAO8R,GAAI5F,GAAU,KAAJlM,GAAW,EAAG,KAEjC,SAASgS,GAAIhS,GACX,OAAO8R,GAAI5F,GAAU,IAAJlM,GAAU,EAAG,KAEhC,SAASiS,GAAIjS,GACX,OAAO8R,GAAI5F,GAAMlM,EAAI,MAAQ,IAAK,EAAG,GAEvC,SAASkS,GAAIlS,GACX,OAAO8R,GAAI5F,GAAU,IAAJlM,GAAU,EAAG,KAEhC,MAAMmS,GAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAGC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAIC,EAAG,GAAI5M,EAAG,GAAIC,EAAG,GAAIhO,EAAG,GAAI8Z,EAAG,GAAIvT,EAAG,GAAIqU,EAAG,IACrJC,GAAM,IAAI,oBACVC,GAAK9M,GAAK6M,GAAQ,GAAJ7M,GACd+M,GAAK/M,GAAK6M,IAAS,IAAJ7M,IAAa,GAAK6M,GAAQ,GAAJ7M,GACrCgN,GAAKhN,IAAW,IAAJA,IAAa,KAAY,GAAJA,GACjCiN,GAAU/S,GAAK8S,GAAG9S,EAAEgT,IAAMF,GAAG9S,EAAEiT,IAAMH,GAAG9S,EAAE8F,IAAMgN,GAAG9S,EAAE6F,GAC3D,SAASqN,GAASjO,GAChB,IACIkO,EADAhK,EAAMlE,EAAI9N,OAmBd,MAjBe,MAAX8N,EAAI,KACM,IAARkE,GAAqB,IAARA,EACfgK,EAAM,CACJH,EAAG,IAAsB,GAAhBb,GAAMlN,EAAI,IACnBgO,EAAG,IAAsB,GAAhBd,GAAMlN,EAAI,IACnBa,EAAG,IAAsB,GAAhBqM,GAAMlN,EAAI,IACnBY,EAAW,IAARsD,EAA4B,GAAhBgJ,GAAMlN,EAAI,IAAW,KAErB,IAARkE,GAAqB,IAARA,IACtBgK,EAAM,CACJH,EAAGb,GAAMlN,EAAI,KAAO,EAAIkN,GAAMlN,EAAI,IAClCgO,EAAGd,GAAMlN,EAAI,KAAO,EAAIkN,GAAMlN,EAAI,IAClCa,EAAGqM,GAAMlN,EAAI,KAAO,EAAIkN,GAAMlN,EAAI,IAClCY,EAAW,IAARsD,EAAagJ,GAAMlN,EAAI,KAAO,EAAIkN,GAAMlN,EAAI,IAAO,OAIrDkO,EAET,MAAMC,GAAQ,CAACvN,EAAG6M,IAAM7M,EAAI,IAAM6M,EAAE7M,GAAK,GACzC,SAASwN,GAAUrT,GACjB,IAAI0S,EAAIK,GAAQ/S,GAAK4S,GAAKC,GAC1B,OAAO7S,EACH,IAAM0S,EAAE1S,EAAEgT,GAAKN,EAAE1S,EAAEiT,GAAKP,EAAE1S,EAAE8F,GAAKsN,GAAMpT,EAAE6F,EAAG6M,QAC5Cze,EAEN,MAAMqf,GAAS,+GACf,SAASC,GAAStkB,EAAG6f,EAAG5X,GACtB,MAAM2O,EAAIiJ,EAAI1R,KAAKkQ,IAAIpW,EAAG,EAAIA,GACxBwb,EAAI,CAAC/F,EAAG7C,GAAK6C,EAAI1d,EAAI,IAAM,KAAOiI,EAAI2O,EAAIzI,KAAKmQ,IAAInQ,KAAKkQ,IAAIxD,EAAI,EAAG,EAAIA,EAAG,IAAK,GACrF,MAAO,CAAC4I,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAExB,SAASc,GAASvkB,EAAG6f,EAAG9O,GACtB,MAAM0S,EAAI,CAAC/F,EAAG7C,GAAK6C,EAAI1d,EAAI,IAAM,IAAM+Q,EAAIA,EAAI8O,EAAI1R,KAAKmQ,IAAInQ,KAAKkQ,IAAIxD,EAAG,EAAIA,EAAG,GAAI,GACnF,MAAO,CAAC4I,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAExB,SAASe,GAASxkB,EAAGykB,EAAG5N,GACtB,MAAM6N,EAAMJ,GAAStkB,EAAG,EAAG,IAC3B,IAAIgI,EAMJ,IALIyc,EAAI5N,EAAI,IACV7O,EAAI,GAAKyc,EAAI5N,GACb4N,GAAKzc,EACL6O,GAAK7O,GAEFA,EAAI,EAAGA,EAAI,EAAGA,IACjB0c,EAAI1c,IAAM,EAAIyc,EAAI5N,EAClB6N,EAAI1c,IAAMyc,EAEZ,OAAOC,EAET,SAASC,GAASZ,EAAGC,EAAGnN,EAAG8L,EAAGrE,GAC5B,OAAIyF,IAAMzF,GACC0F,EAAInN,GAAK8L,GAAMqB,EAAInN,EAAI,EAAI,GAElCmN,IAAM1F,GACAzH,EAAIkN,GAAKpB,EAAI,GAEfoB,EAAIC,GAAKrB,EAAI,EAEvB,SAASiC,GAAQ7T,GACf,MAAMgM,EAAQ,IACRgH,EAAIhT,EAAEgT,EAAIhH,EACViH,EAAIjT,EAAEiT,EAAIjH,EACVlG,EAAI9F,EAAE8F,EAAIkG,EACVuB,EAAMnQ,KAAKmQ,IAAIyF,EAAGC,EAAGnN,GACrBwH,EAAMlQ,KAAKkQ,IAAI0F,EAAGC,EAAGnN,GACrB5O,GAAKqW,EAAMD,GAAO,EACxB,IAAIre,EAAG6f,EAAG8C,EAOV,OANIrE,IAAQD,IACVsE,EAAIrE,EAAMD,EACVwB,EAAI5X,EAAI,GAAM0a,GAAK,EAAIrE,EAAMD,GAAOsE,GAAKrE,EAAMD,GAC/Cre,EAAI2kB,GAASZ,EAAGC,EAAGnN,EAAG8L,EAAGrE,GACzBte,EAAQ,GAAJA,EAAS,IAER,CAAK,EAAJA,EAAO6f,GAAK,EAAG5X,GAEzB,SAAS4c,GAAMpB,EAAG7M,EAAGC,EAAGhO,GACtB,OACEyB,MAAMiD,QAAQqJ,GACV6M,EAAE7M,EAAE,GAAIA,EAAE,GAAIA,EAAE,IAChB6M,EAAE7M,EAAGC,EAAGhO,IACZ8R,IAAIoI,IAER,SAAS+B,GAAQ9kB,EAAG6f,EAAG5X,GACrB,OAAO4c,GAAMP,GAAUtkB,EAAG6f,EAAG5X,GAE/B,SAAS8c,GAAQ/kB,EAAGykB,EAAG5N,GACrB,OAAOgO,GAAML,GAAUxkB,EAAGykB,EAAG5N,GAE/B,SAASmO,GAAQhlB,EAAG6f,EAAG9O,GACrB,OAAO8T,GAAMN,GAAUvkB,EAAG6f,EAAG9O,GAE/B,SAASkU,GAAIjlB,GACX,OAAQA,EAAI,IAAM,KAAO,IAE3B,SAASklB,GAASlP,GAChB,MAAM0M,EAAI2B,GAAOtQ,KAAKiC,GACtB,IACIjF,EADA6F,EAAI,IAER,IAAK8L,EACH,OAEEA,EAAE,KAAO3R,IACX6F,EAAI8L,EAAE,GAAKI,IAAKJ,EAAE,IAAMK,IAAKL,EAAE,KAEjC,MAAM1iB,EAAIilB,IAAKvC,EAAE,IACXyC,GAAMzC,EAAE,GAAK,IACb0C,GAAM1C,EAAE,GAAK,IAQnB,OANE3R,EADW,QAAT2R,EAAE,GACAqC,GAAQ/kB,EAAGmlB,EAAIC,GACD,QAAT1C,EAAE,GACPsC,GAAQhlB,EAAGmlB,EAAIC,GAEfN,GAAQ9kB,EAAGmlB,EAAIC,GAEd,CACLrB,EAAGhT,EAAE,GACLiT,EAAGjT,EAAE,GACL8F,EAAG9F,EAAE,GACL6F,EAAGA,GAGP,SAASyO,GAAOtU,EAAGuU,GACjB,IAAItlB,EAAI4kB,GAAQ7T,GAChB/Q,EAAE,GAAKilB,GAAIjlB,EAAE,GAAKslB,GAClBtlB,EAAI8kB,GAAQ9kB,GACZ+Q,EAAEgT,EAAI/jB,EAAE,GACR+Q,EAAEiT,EAAIhkB,EAAE,GACR+Q,EAAE8F,EAAI7W,EAAE,GAEV,SAASulB,GAAUxU,GACjB,IAAKA,EACH,OAEF,MAAM6F,EAAIgO,GAAQ7T,GACZ/Q,EAAI4W,EAAE,GACNiJ,EAAIoD,GAAIrM,EAAE,IACV3O,EAAIgb,GAAIrM,EAAE,IAChB,OAAO7F,EAAE6F,EAAI,IACT,QAAQ5W,MAAM6f,OAAO5X,OAAO+a,GAAIjS,EAAE6F,MAClC,OAAO5W,MAAM6f,OAAO5X,MAE1B,MAAM0S,GAAM,CACViD,EAAG,OACH4H,EAAG,QACHC,EAAG,KACHC,EAAG,MACHC,EAAG,KACHC,EAAG,SACHC,EAAG,QACH1C,EAAG,KACH2C,EAAG,KACHC,EAAG,KACH3C,EAAG,KACHC,EAAG,QACHC,EAAG,QACH0C,EAAG,KACHC,EAAG,WACH1C,EAAG,KACH2C,EAAG,KACHC,EAAG,KACHC,EAAG,KACHC,EAAG,KACHC,EAAG,QACH9C,EAAG,KACH+C,EAAG,KACHC,EAAG,OACHC,EAAG,KACHC,EAAG,QACHC,EAAG,MAECC,GAAU,CACdC,OAAQ,SACRC,YAAa,SACbC,KAAM,OACNC,UAAW,SACXC,KAAM,SACNC,MAAO,SACPC,OAAQ,SACRC,MAAO,IACPC,aAAc,SACdC,GAAI,KACJC,QAAS,SACTC,KAAM,SACNC,UAAW,SACXC,OAAQ,SACRC,SAAU,SACVC,QAAS,SACTC,IAAK,SACLC,YAAa,SACbC,QAAS,SACTC,QAAS,SACTC,KAAM,OACNC,IAAK,KACLC,MAAO,OACPC,QAAS,SACTC,KAAM,SACNC,KAAM,OACNC,KAAM,SACNC,OAAQ,SACRC,QAAS,SACTC,SAAU,SACVC,OAAQ,SACRC,MAAO,SACPC,IAAK,SACLC,OAAQ,SACRC,OAAQ,SACRC,KAAM,SACNC,MAAO,SACPC,MAAO,SACPC,IAAK,OACLC,OAAQ,SACRC,OAAQ,SACRC,SAAU,OACVC,OAAQ,SACRC,OAAQ,SACRC,SAAU,SACVC,SAAU,SACVC,SAAU,SACVC,SAAU,SACVC,OAAQ,SACRC,QAAS,SACTC,UAAW,SACXC,IAAK,SACLC,OAAQ,SACRC,IAAK,SACLC,IAAK,OACLC,MAAO,SACPC,IAAK,SACLC,QAAS,SACTC,OAAQ,SACRC,QAAS,SACTC,MAAO,SACPC,KAAM,SACNC,MAAO,SACPC,OAAQ,SACRC,UAAW,SACXC,QAAS,SACTC,WAAY,SACZC,IAAK,SACLC,KAAM,SACNC,MAAO,SACPC,UAAW,SACXC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,OAAQ,SACRC,OAAQ,SACRC,OAAQ,SACRC,MAAO,SACPC,MAAO,SACPC,QAAS,SACTC,IAAK,SACLC,KAAM,OACNC,QAAS,SACTC,IAAK,SACLC,OAAQ,SACRC,MAAO,SACPC,WAAY,SACZC,IAAK,KACLC,MAAO,SACPC,OAAQ,SACRC,OAAQ,SACRC,KAAM,SACNC,UAAW,OACXC,IAAK,SACLC,SAAU,SACVC,WAAY,SACZC,QAAS,SACTC,SAAU,SACVC,QAAS,SACTC,WAAY,SACZC,KAAM,KACNC,OAAQ,SACRC,KAAM,SACNC,QAAS,SACTC,MAAO,SACPC,QAAS,SACTC,KAAM,SACNC,UAAW,SACXC,OAAQ,SACRC,MAAO,SACPC,WAAY,SACZC,UAAW,SACXC,QAAS,SACTC,KAAM,SACNC,IAAK,SACLC,KAAM,SACNC,QAAS,SACTC,MAAO,SACPC,YAAa,SACbC,GAAI,SACJC,SAAU,SACVC,MAAO,SACPC,UAAW,SACXC,MAAO,SACPC,UAAW,SACXC,MAAO,SACPC,QAAS,SACTC,MAAO,SACPC,OAAQ,SACRC,MAAO,SACPC,IAAK,SACLC,KAAM,SACNC,KAAM,SACNC,KAAM,SACNC,SAAU,OACVC,OAAQ,SACRC,IAAK,SACLC,IAAK,OACLC,MAAO,SACPC,OAAQ,SACRC,GAAI,SACJC,MAAO,SACPC,IAAK,SACLC,KAAM,SACNC,UAAW,SACXC,GAAI,SACJC,MAAO,UAET,SAASC,KACP,MAAMC,EAAW,GACXniB,EAAOrC,OAAOqC,KAAK6Y,IACnBuJ,EAAQzkB,OAAOqC,KAAK4M,IAC1B,IAAI3S,EAAGooB,EAAGvV,EAAGwV,EAAIC,EACjB,IAAKtoB,EAAI,EAAGA,EAAI+F,EAAK7F,OAAQF,IAAK,CAEhC,IADAqoB,EAAKC,EAAKviB,EAAK/F,GACVooB,EAAI,EAAGA,EAAID,EAAMjoB,OAAQkoB,IAC5BvV,EAAIsV,EAAMC,GACVE,EAAKA,EAAG1f,QAAQiK,EAAGF,GAAIE,IAEzBA,EAAI0V,SAAS3J,GAAQyJ,GAAK,IAC1BH,EAASI,GAAM,CAACzV,GAAK,GAAK,IAAMA,GAAK,EAAI,IAAU,IAAJA,GAEjD,OAAOqV,EAET,IAAIM,GACJ,SAASC,GAAUza,GACZwa,KACHA,GAAQP,KACRO,GAAME,YAAc,CAAC,EAAG,EAAG,EAAG,IAEhC,MAAM9Z,EAAI4Z,GAAMxa,EAAI3Q,eACpB,OAAOuR,GAAK,CACVmN,EAAGnN,EAAE,GACLoN,EAAGpN,EAAE,GACLC,EAAGD,EAAE,GACLA,EAAgB,IAAbA,EAAE1O,OAAe0O,EAAE,GAAK,KAG/B,MAAM+Z,GAAS,uGACf,SAASC,GAAS5a,GAChB,MAAM0M,EAAIiO,GAAO5c,KAAKiC,GACtB,IACI+N,EAAGC,EAAGnN,EADND,EAAI,IAER,GAAK8L,EAAL,CAGA,GAAIA,EAAE,KAAOqB,EAAG,CACd,MAAMhT,GAAK2R,EAAE,GACb9L,EAAI8L,EAAE,GAAKI,GAAI/R,GAAK8R,GAAQ,IAAJ9R,EAAS,EAAG,KAQtC,OANAgT,GAAKrB,EAAE,GACPsB,GAAKtB,EAAE,GACP7L,GAAK6L,EAAE,GACPqB,EAAI,KAAOrB,EAAE,GAAKI,GAAIiB,GAAKlB,GAAIkB,EAAG,EAAG,MACrCC,EAAI,KAAOtB,EAAE,GAAKI,GAAIkB,GAAKnB,GAAImB,EAAG,EAAG,MACrCnN,EAAI,KAAO6L,EAAE,GAAKI,GAAIjM,GAAKgM,GAAIhM,EAAG,EAAG,MAC9B,CACLkN,EAAGA,EACHC,EAAGA,EACHnN,EAAGA,EACHD,EAAGA,IAGP,SAASia,GAAU9f,GACjB,OAAOA,IACLA,EAAE6F,EAAI,IACF,QAAQ7F,EAAEgT,MAAMhT,EAAEiT,MAAMjT,EAAE8F,MAAMmM,GAAIjS,EAAE6F,MACtC,OAAO7F,EAAEgT,MAAMhT,EAAEiT,MAAMjT,EAAE8F,MAGjC,MAAMia,GAAK/f,GAAKA,GAAK,SAAgB,MAAJA,EAAqC,MAAzB5C,KAAKiP,IAAIrM,EAAG,EAAM,KAAe,KACxElF,GAAOkF,GAAKA,GAAK,OAAUA,EAAI,MAAQ5C,KAAKiP,KAAKrM,EAAI,MAAS,MAAO,KAC3E,SAASggB,GAAYC,EAAMC,EAAM3Q,GAC/B,MAAMyD,EAAIlY,GAAKmX,GAAIgO,EAAKjN,IAClBC,EAAInY,GAAKmX,GAAIgO,EAAKhN,IAClBnN,EAAIhL,GAAKmX,GAAIgO,EAAKna,IACxB,MAAO,CACLkN,EAAGhB,GAAI+N,GAAG/M,EAAIzD,GAAKzU,GAAKmX,GAAIiO,EAAKlN,IAAMA,KACvCC,EAAGjB,GAAI+N,GAAG9M,EAAI1D,GAAKzU,GAAKmX,GAAIiO,EAAKjN,IAAMA,KACvCnN,EAAGkM,GAAI+N,GAAGja,EAAIyJ,GAAKzU,GAAKmX,GAAIiO,EAAKpa,IAAMA,KACvCD,EAAGoa,EAAKpa,EAAI0J,GAAK2Q,EAAKra,EAAIoa,EAAKpa,IAGnC,SAASsa,GAAOngB,EAAG/I,EAAGmpB,GACpB,GAAIpgB,EAAG,CACL,IAAIqgB,EAAMxM,GAAQ7T,GAClBqgB,EAAIppB,GAAKmG,KAAKmQ,IAAI,EAAGnQ,KAAKkQ,IAAI+S,EAAIppB,GAAKopB,EAAIppB,GAAKmpB,EAAa,IAANnpB,EAAU,IAAM,IACvEopB,EAAMtM,GAAQsM,GACdrgB,EAAEgT,EAAIqN,EAAI,GACVrgB,EAAEiT,EAAIoN,EAAI,GACVrgB,EAAE8F,EAAIua,EAAI,IAGd,SAASC,GAAMtgB,EAAGugB,GAChB,OAAOvgB,EAAIrF,OAAOQ,OAAOolB,GAAS,GAAIvgB,GAAKA,EAE7C,SAASwgB,GAAWC,GAClB,IAAIzgB,EAAI,CAACgT,EAAG,EAAGC,EAAG,EAAGnN,EAAG,EAAGD,EAAG,KAY9B,OAXItM,MAAMiD,QAAQikB,GACZA,EAAMtpB,QAAU,IAClB6I,EAAI,CAACgT,EAAGyN,EAAM,GAAIxN,EAAGwN,EAAM,GAAI3a,EAAG2a,EAAM,GAAI5a,EAAG,KAC3C4a,EAAMtpB,OAAS,IACjB6I,EAAE6F,EAAImM,GAAIyO,EAAM,OAIpBzgB,EAAIsgB,GAAMG,EAAO,CAACzN,EAAG,EAAGC,EAAG,EAAGnN,EAAG,EAAGD,EAAG,IACvC7F,EAAE6F,EAAImM,GAAIhS,EAAE6F,IAEP7F,EAET,SAAS0gB,GAAczb,GACrB,MAAsB,MAAlBA,EAAI3C,OAAO,GACNud,GAAS5a,GAEXkP,GAASlP,GAElB,MAAM0b,GACJxb,YAAYsb,GACV,GAAIA,aAAiBE,GACnB,OAAOF,EAET,MAAM3rB,SAAc2rB,EACpB,IAAIzgB,EACS,WAATlL,EACFkL,EAAIwgB,GAAWC,GACG,WAAT3rB,IACTkL,EAAIkT,GAASuN,IAAUf,GAAUe,IAAUC,GAAcD,IAE3DtyB,KAAKyyB,KAAO5gB,EACZ7R,KAAK0yB,SAAW7gB,EAEd8gB,YACF,OAAO3yB,KAAK0yB,OAEVlN,UACF,IAAI3T,EAAIsgB,GAAMnyB,KAAKyyB,MAInB,OAHI5gB,IACFA,EAAE6F,EAAIoM,GAAIjS,EAAE6F,IAEP7F,EAEL2T,QAAIzY,GACN/M,KAAKyyB,KAAOJ,GAAWtlB,GAEzB4kB,YACE,OAAO3xB,KAAK0yB,OAASf,GAAU3xB,KAAKyyB,WAAQ3sB,EAE9Cof,YACE,OAAOllB,KAAK0yB,OAASxN,GAAUllB,KAAKyyB,WAAQ3sB,EAE9CugB,YACE,OAAOrmB,KAAK0yB,OAASrM,GAAUrmB,KAAKyyB,WAAQ3sB,EAE9C8sB,IAAIC,EAAOC,GACT,GAAID,EAAO,CACT,MAAME,EAAK/yB,KAAKwlB,IACVwN,EAAKH,EAAMrN,IACjB,IAAIyN,EACJ,MAAMvT,EAAIoT,IAAWG,EAAK,GAAMH,EAC1BvN,EAAI,EAAI7F,EAAI,EACZhI,EAAIqb,EAAGrb,EAAIsb,EAAGtb,EACdwb,IAAO3N,EAAI7N,KAAO,EAAI6N,GAAKA,EAAI7N,IAAM,EAAI6N,EAAI7N,IAAM,GAAK,EAC9Dub,EAAK,EAAIC,EACTH,EAAGlO,EAAI,IAAOqO,EAAKH,EAAGlO,EAAIoO,EAAKD,EAAGnO,EAAI,GACtCkO,EAAGjO,EAAI,IAAOoO,EAAKH,EAAGjO,EAAImO,EAAKD,EAAGlO,EAAI,GACtCiO,EAAGpb,EAAI,IAAOub,EAAKH,EAAGpb,EAAIsb,EAAKD,EAAGrb,EAAI,GACtCob,EAAGrb,EAAIgI,EAAIqT,EAAGrb,GAAK,EAAIgI,GAAKsT,EAAGtb,EAC/B1X,KAAKwlB,IAAMuN,EAEb,OAAO/yB,KAET6xB,YAAYgB,EAAOzR,GAIjB,OAHIyR,IACF7yB,KAAKyyB,KAAOZ,GAAY7xB,KAAKyyB,KAAMI,EAAMJ,KAAMrR,IAE1CphB,KAETmyB,QACE,OAAO,IAAIK,GAAMxyB,KAAKwlB,KAExBP,MAAMvN,GAEJ,OADA1X,KAAKyyB,KAAK/a,EAAImM,GAAInM,GACX1X,KAETmzB,QAAQlB,GACN,MAAMzM,EAAMxlB,KAAKyyB,KAEjB,OADAjN,EAAI9N,GAAK,EAAIua,EACNjyB,KAETozB,YACE,MAAM5N,EAAMxlB,KAAKyyB,KACXxsB,EAAM8X,GAAc,GAARyH,EAAIX,EAAkB,IAARW,EAAIV,EAAmB,IAARU,EAAI7N,GAEnD,OADA6N,EAAIX,EAAIW,EAAIV,EAAIU,EAAI7N,EAAI1R,EACjBjG,KAETqzB,QAAQpB,GACN,MAAMzM,EAAMxlB,KAAKyyB,KAEjB,OADAjN,EAAI9N,GAAK,EAAIua,EACNjyB,KAETszB,SACE,MAAMzhB,EAAI7R,KAAKyyB,KAIf,OAHA5gB,EAAEgT,EAAI,IAAMhT,EAAEgT,EACdhT,EAAEiT,EAAI,IAAMjT,EAAEiT,EACdjT,EAAE8F,EAAI,IAAM9F,EAAE8F,EACP3X,KAETuzB,QAAQtB,GAEN,OADAD,GAAOhyB,KAAKyyB,KAAM,EAAGR,GACdjyB,KAETwzB,OAAOvB,GAEL,OADAD,GAAOhyB,KAAKyyB,KAAM,GAAIR,GACfjyB,KAETyzB,SAASxB,GAEP,OADAD,GAAOhyB,KAAKyyB,KAAM,EAAGR,GACdjyB,KAET0zB,WAAWzB,GAET,OADAD,GAAOhyB,KAAKyyB,KAAM,GAAIR,GACfjyB,KAETmmB,OAAOC,GAEL,OADAD,GAAOnmB,KAAKyyB,KAAMrM,GACXpmB,MAGX,SAAS2zB,GAAUrB,GACjB,OAAO,IAAIE,GAAMF,GAGnB,SAASsB,GAAoBxvB,GAC3B,GAAIA,GAA0B,kBAAVA,EAAoB,CACtC,MAAMuC,EAAOvC,EAAMqL,WACnB,MAAgB,2BAAT9I,GAA8C,4BAATA,EAE9C,OAAO,EAET,SAASksB,GAAMzuB,GACb,OAAOwvB,GAAoBxvB,GAASA,EAAQuvB,GAAUvvB,GAExD,SAASyvB,GAAczvB,GACrB,OAAOwvB,GAAoBxvB,GACvBA,EACAuvB,GAAUvvB,GAAOqvB,SAAS,IAAKD,OAAO,IAAKtO,YAGjD,MAAM4O,GAAYtnB,OAAO7E,OAAO,MAC1B4E,GAAcC,OAAO7E,OAAO,MAClC,SAASosB,GAAWC,EAAM9tB,GACxB,IAAKA,EACH,OAAO8tB,EAET,MAAMnlB,EAAO3I,EAAIwO,MAAM,KACvB,IAAK,IAAI5L,EAAI,EAAG0V,EAAI3P,EAAK7F,OAAQF,EAAI0V,IAAK1V,EAAG,CAC3C,MAAM6S,EAAI9M,EAAK/F,GACfkrB,EAAOA,EAAKrY,KAAOqY,EAAKrY,GAAKnP,OAAO7E,OAAO,OAE7C,OAAOqsB,EAET,SAASC,GAAIC,EAAMC,EAAOC,GACxB,MAAqB,kBAAVD,EACFvmB,EAAMmmB,GAAWG,EAAMC,GAAQC,GAEjCxmB,EAAMmmB,GAAWG,EAAM,IAAKC,GAErC,MAAME,GACJrd,YAAYsd,GACVt0B,KAAKu0B,eAAYzuB,EACjB9F,KAAKw0B,gBAAkB,kBACvBx0B,KAAKy0B,YAAc,kBACnBz0B,KAAK6yB,MAAQ,OACb7yB,KAAK00B,SAAW,GAChB10B,KAAK20B,iBAAoB50B,GAAYA,EAAQ60B,MAAMC,SAASC,sBAC5D90B,KAAK+0B,SAAW,GAChB/0B,KAAKg1B,OAAS,CACZ,YACA,WACA,QACA,aACA,aAEFh1B,KAAKi1B,KAAO,CACVC,OAAQ,qDACRrY,KAAM,GACNsY,MAAO,SACPC,WAAY,IACZtC,OAAQ,MAEV9yB,KAAKq1B,MAAQ,GACbr1B,KAAKs1B,qBAAuB,CAACC,EAAK51B,IAAYk0B,GAAcl0B,EAAQ60B,iBACpEx0B,KAAKw1B,iBAAmB,CAACD,EAAK51B,IAAYk0B,GAAcl0B,EAAQ80B,aAChEz0B,KAAKy1B,WAAa,CAACF,EAAK51B,IAAYk0B,GAAcl0B,EAAQkzB,OAC1D7yB,KAAK01B,UAAY,IACjB11B,KAAK21B,YAAc,CACjBC,KAAM,UACNC,WAAW,EACXC,kBAAkB,GAEpB91B,KAAK+1B,qBAAsB,EAC3B/1B,KAAKg2B,QAAU,KACfh2B,KAAKi2B,QAAU,KACfj2B,KAAKk2B,SAAU,EACfl2B,KAAKm2B,QAAU,GACfn2B,KAAKo2B,YAAa,EAClBp2B,KAAKq2B,WAAQvwB,EACb9F,KAAKs2B,OAAS,GACdt2B,KAAKu2B,UAAW,EAChBv2B,KAAKw2B,yBAA0B,EAC/Bx2B,KAAKy2B,SAASnC,GAEhBL,IAAIE,EAAOC,GACT,OAAOH,GAAIj0B,KAAMm0B,EAAOC,GAE1BsC,IAAIvC,GACF,OAAOJ,GAAW/zB,KAAMm0B,GAE1BsC,SAAStC,EAAOC,GACd,OAAOH,GAAI1nB,GAAa4nB,EAAOC,GAEjCuC,SAASxC,EAAOC,GACd,OAAOH,GAAIH,GAAWK,EAAOC,GAE/BwC,MAAMzC,EAAOtqB,EAAMgtB,EAAaC,GAC9B,MAAMC,EAAchD,GAAW/zB,KAAMm0B,GAC/B6C,EAAoBjD,GAAW/zB,KAAM62B,GACrCI,EAAc,IAAMptB,EAC1B2C,OAAOC,iBAAiBsqB,EAAa,CACnC,CAACE,GAAc,CACb7yB,MAAO2yB,EAAYltB,GACnBqtB,UAAU,GAEZ,CAACrtB,GAAO,CACNstB,YAAY,EACZT,MACE,MAAMU,EAAQp3B,KAAKi3B,GACb9oB,EAAS6oB,EAAkBF,GACjC,OAAIhmB,EAASsmB,GACJ5qB,OAAOQ,OAAO,GAAImB,EAAQipB,GAE5B5c,EAAe4c,EAAOjpB,IAE/B8lB,IAAI7vB,GACFpE,KAAKi3B,GAAe7yB,OAM9B,IAAIiD,GAAW,IAAIgtB,GAAS,CAC1BgD,YAAcxtB,IAAUA,EAAKytB,WAAW,MACxCC,WAAa1tB,GAAkB,WAATA,EACtBwrB,MAAO,CACLmC,UAAW,eAEb7B,YAAa,CACX0B,aAAa,EACbE,YAAY,KAIhB,SAASE,GAAaxC,GACpB,OAAKA,GAAQ/a,EAAc+a,EAAKpY,OAAS3C,EAAc+a,EAAKC,QACnD,MAEDD,EAAKE,MAAQF,EAAKE,MAAQ,IAAM,KACrCF,EAAKnC,OAASmC,EAAKnC,OAAS,IAAM,IACnCmC,EAAKpY,KAAO,MACZoY,EAAKC,OAET,SAASwC,GAAanC,EAAKlzB,EAAMs1B,EAAIC,EAASC,GAC5C,IAAIC,EAAYz1B,EAAKw1B,GAQrB,OAPKC,IACHA,EAAYz1B,EAAKw1B,GAAUtC,EAAIwC,YAAYF,GAAQG,MACnDL,EAAGpuB,KAAKsuB,IAENC,EAAYF,IACdA,EAAUE,GAELF,EAET,SAASK,GAAa1C,EAAKN,EAAMiD,EAAerhB,GAC9CA,EAAQA,GAAS,GACjB,IAAIxU,EAAOwU,EAAMxU,KAAOwU,EAAMxU,MAAQ,GAClCs1B,EAAK9gB,EAAMshB,eAAiBthB,EAAMshB,gBAAkB,GACpDthB,EAAMoe,OAASA,IACjB5yB,EAAOwU,EAAMxU,KAAO,GACpBs1B,EAAK9gB,EAAMshB,eAAiB,GAC5BthB,EAAMoe,KAAOA,GAEfM,EAAI6C,OACJ7C,EAAIN,KAAOA,EACX,IAAI2C,EAAU,EACd,MAAMxc,EAAO8c,EAAclvB,OAC3B,IAAIF,EAAGooB,EAAGmH,EAAMxiB,EAAOyiB,EACvB,IAAKxvB,EAAI,EAAGA,EAAIsS,EAAMtS,IAEpB,GADA+M,EAAQqiB,EAAcpvB,QACRhD,IAAV+P,GAAiC,OAAVA,IAAqC,IAAnBxH,EAAQwH,GACnD+hB,EAAUF,GAAanC,EAAKlzB,EAAMs1B,EAAIC,EAAS/hB,QAC1C,GAAIxH,EAAQwH,GACjB,IAAKqb,EAAI,EAAGmH,EAAOxiB,EAAM7M,OAAQkoB,EAAImH,EAAMnH,IACzCoH,EAAcziB,EAAMqb,QACAprB,IAAhBwyB,GAA6C,OAAhBA,GAAyBjqB,EAAQiqB,KAChEV,EAAUF,GAAanC,EAAKlzB,EAAMs1B,EAAIC,EAASU,IAKvD/C,EAAIgD,UACJ,MAAMC,EAAQb,EAAG3uB,OAAS,EAC1B,GAAIwvB,EAAQN,EAAclvB,OAAQ,CAChC,IAAKF,EAAI,EAAGA,EAAI0vB,EAAO1vB,WACdzG,EAAKs1B,EAAG7uB,IAEjB6uB,EAAGluB,OAAO,EAAG+uB,GAEf,OAAOZ,EAET,SAASa,GAAY7D,EAAO8D,EAAOV,GACjC,MAAMrD,EAAmBC,EAAM+D,wBACzBC,EAAsB,IAAVZ,EAAc/oB,KAAKmQ,IAAI4Y,EAAQ,EAAG,IAAO,EAC3D,OAAO/oB,KAAK8O,OAAO2a,EAAQE,GAAajE,GAAoBA,EAAmBiE,EAEjF,SAASC,GAAYC,EAAQvD,GAC3BA,EAAMA,GAAOuD,EAAOC,WAAW,MAC/BxD,EAAI6C,OACJ7C,EAAIyD,iBACJzD,EAAI0D,UAAU,EAAG,EAAGH,EAAOd,MAAOc,EAAOI,QACzC3D,EAAIgD,UAEN,SAASY,GAAU5D,EAAK51B,EAAS+e,EAAGC,GAClC,IAAIhY,EAAMyyB,EAASC,EAASxc,EAAMyc,EAClC,MAAMnE,EAAQx1B,EAAQ45B,WAChBC,EAAW75B,EAAQ65B,SACnBC,EAAS95B,EAAQ85B,OACvB,IAAIC,GAAOF,GAAY,GAAKlc,EAC5B,GAAI6X,GAA0B,kBAAVA,IAClBxuB,EAAOwuB,EAAM1lB,WACA,8BAAT9I,GAAiD,+BAATA,GAM1C,OALA4uB,EAAI6C,OACJ7C,EAAIoE,UAAUjb,EAAGC,GACjB4W,EAAIpP,OAAOuT,GACXnE,EAAIqE,UAAUzE,GAAQA,EAAM6C,MAAQ,GAAI7C,EAAM+D,OAAS,EAAG/D,EAAM6C,MAAO7C,EAAM+D,aAC7E3D,EAAIgD,UAIR,KAAI9Z,MAAMgb,IAAWA,GAAU,GAA/B,CAIA,OADAlE,EAAIsE,YACI1E,GACR,QACEI,EAAIuE,IAAIpb,EAAGC,EAAG8a,EAAQ,EAAGvc,GACzBqY,EAAIwE,YACJ,MACF,IAAK,WACHxE,EAAIyE,OAAOtb,EAAIzP,KAAKqS,IAAIoY,GAAOD,EAAQ9a,EAAI1P,KAAKsT,IAAImX,GAAOD,GAC3DC,GAAOjc,EACP8X,EAAI0E,OAAOvb,EAAIzP,KAAKqS,IAAIoY,GAAOD,EAAQ9a,EAAI1P,KAAKsT,IAAImX,GAAOD,GAC3DC,GAAOjc,EACP8X,EAAI0E,OAAOvb,EAAIzP,KAAKqS,IAAIoY,GAAOD,EAAQ9a,EAAI1P,KAAKsT,IAAImX,GAAOD,GAC3DlE,EAAIwE,YACJ,MACF,IAAK,cACHT,EAAwB,KAATG,EACf5c,EAAO4c,EAASH,EAChBF,EAAUnqB,KAAKsT,IAAImX,EAAMlc,GAAcX,EACvCwc,EAAUpqB,KAAKqS,IAAIoY,EAAMlc,GAAcX,EACvC0Y,EAAIuE,IAAIpb,EAAI0a,EAASza,EAAI0a,EAASC,EAAcI,EAAMzc,EAAIyc,EAAMnc,GAChEgY,EAAIuE,IAAIpb,EAAI2a,EAAS1a,EAAIya,EAASE,EAAcI,EAAMnc,EAASmc,GAC/DnE,EAAIuE,IAAIpb,EAAI0a,EAASza,EAAI0a,EAASC,EAAcI,EAAKA,EAAMnc,GAC3DgY,EAAIuE,IAAIpb,EAAI2a,EAAS1a,EAAIya,EAASE,EAAcI,EAAMnc,EAASmc,EAAMzc,GACrEsY,EAAIwE,YACJ,MACF,IAAK,OACH,IAAKP,EAAU,CACb3c,EAAO5N,KAAKirB,QAAUT,EACtBlE,EAAI4E,KAAKzb,EAAI7B,EAAM8B,EAAI9B,EAAM,EAAIA,EAAM,EAAIA,GAC3C,MAEF6c,GAAOlc,EACT,IAAK,UACH4b,EAAUnqB,KAAKsT,IAAImX,GAAOD,EAC1BJ,EAAUpqB,KAAKqS,IAAIoY,GAAOD,EAC1BlE,EAAIyE,OAAOtb,EAAI0a,EAASza,EAAI0a,GAC5B9D,EAAI0E,OAAOvb,EAAI2a,EAAS1a,EAAIya,GAC5B7D,EAAI0E,OAAOvb,EAAI0a,EAASza,EAAI0a,GAC5B9D,EAAI0E,OAAOvb,EAAI2a,EAAS1a,EAAIya,GAC5B7D,EAAIwE,YACJ,MACF,IAAK,WACHL,GAAOlc,EACT,IAAK,QACH4b,EAAUnqB,KAAKsT,IAAImX,GAAOD,EAC1BJ,EAAUpqB,KAAKqS,IAAIoY,GAAOD,EAC1BlE,EAAIyE,OAAOtb,EAAI0a,EAASza,EAAI0a,GAC5B9D,EAAI0E,OAAOvb,EAAI0a,EAASza,EAAI0a,GAC5B9D,EAAIyE,OAAOtb,EAAI2a,EAAS1a,EAAIya,GAC5B7D,EAAI0E,OAAOvb,EAAI2a,EAAS1a,EAAIya,GAC5B,MACF,IAAK,OACHA,EAAUnqB,KAAKsT,IAAImX,GAAOD,EAC1BJ,EAAUpqB,KAAKqS,IAAIoY,GAAOD,EAC1BlE,EAAIyE,OAAOtb,EAAI0a,EAASza,EAAI0a,GAC5B9D,EAAI0E,OAAOvb,EAAI0a,EAASza,EAAI0a,GAC5B9D,EAAIyE,OAAOtb,EAAI2a,EAAS1a,EAAIya,GAC5B7D,EAAI0E,OAAOvb,EAAI2a,EAAS1a,EAAIya,GAC5BM,GAAOlc,EACP4b,EAAUnqB,KAAKsT,IAAImX,GAAOD,EAC1BJ,EAAUpqB,KAAKqS,IAAIoY,GAAOD,EAC1BlE,EAAIyE,OAAOtb,EAAI0a,EAASza,EAAI0a,GAC5B9D,EAAI0E,OAAOvb,EAAI0a,EAASza,EAAI0a,GAC5B9D,EAAIyE,OAAOtb,EAAI2a,EAAS1a,EAAIya,GAC5B7D,EAAI0E,OAAOvb,EAAI2a,EAAS1a,EAAIya,GAC5B,MACF,IAAK,OACHA,EAAUnqB,KAAKsT,IAAImX,GAAOD,EAC1BJ,EAAUpqB,KAAKqS,IAAIoY,GAAOD,EAC1BlE,EAAIyE,OAAOtb,EAAI0a,EAASza,EAAI0a,GAC5B9D,EAAI0E,OAAOvb,EAAI0a,EAASza,EAAI0a,GAC5B,MACF,IAAK,OACH9D,EAAIyE,OAAOtb,EAAGC,GACd4W,EAAI0E,OAAOvb,EAAIzP,KAAKsT,IAAImX,GAAOD,EAAQ9a,EAAI1P,KAAKqS,IAAIoY,GAAOD,GAC3D,MAEFlE,EAAI6E,OACAz6B,EAAQ06B,YAAc,GACxB9E,EAAI+E,UAGR,SAASC,GAAeC,EAAOC,EAAMC,GAEnC,OADAA,EAASA,GAAU,IACXD,GAASD,GAASA,EAAM9b,EAAI+b,EAAK7gB,KAAO8gB,GAAUF,EAAM9b,EAAI+b,EAAK5gB,MAAQ6gB,GACjFF,EAAM7b,EAAI8b,EAAKE,IAAMD,GAAUF,EAAM7b,EAAI8b,EAAKG,OAASF,EAEzD,SAASG,GAAStF,EAAKkF,GACrBlF,EAAI6C,OACJ7C,EAAIsE,YACJtE,EAAI4E,KAAKM,EAAK7gB,KAAM6gB,EAAKE,IAAKF,EAAK5gB,MAAQ4gB,EAAK7gB,KAAM6gB,EAAKG,OAASH,EAAKE,KACzEpF,EAAIuF,OAEN,SAASC,GAAWxF,GAClBA,EAAIgD,UAEN,SAASyC,GAAezF,EAAK0F,EAAU9sB,EAAQ+sB,EAAMtF,GACnD,IAAKqF,EACH,OAAO1F,EAAI0E,OAAO9rB,EAAOuQ,EAAGvQ,EAAOwQ,GAErC,GAAa,WAATiX,EAAmB,CACrB,MAAMuF,GAAYF,EAASvc,EAAIvQ,EAAOuQ,GAAK,EAC3C6W,EAAI0E,OAAOkB,EAAUF,EAAStc,GAC9B4W,EAAI0E,OAAOkB,EAAUhtB,EAAOwQ,OACV,UAATiX,MAAuBsF,EAChC3F,EAAI0E,OAAOgB,EAASvc,EAAGvQ,EAAOwQ,GAE9B4W,EAAI0E,OAAO9rB,EAAOuQ,EAAGuc,EAAStc,GAEhC4W,EAAI0E,OAAO9rB,EAAOuQ,EAAGvQ,EAAOwQ,GAE9B,SAASyc,GAAe7F,EAAK0F,EAAU9sB,EAAQ+sB,GAC7C,IAAKD,EACH,OAAO1F,EAAI0E,OAAO9rB,EAAOuQ,EAAGvQ,EAAOwQ,GAErC4W,EAAI8F,cACFH,EAAOD,EAASK,KAAOL,EAASM,KAChCL,EAAOD,EAASO,KAAOP,EAASQ,KAChCP,EAAO/sB,EAAOotB,KAAOptB,EAAOmtB,KAC5BJ,EAAO/sB,EAAOstB,KAAOttB,EAAOqtB,KAC5BrtB,EAAOuQ,EACPvQ,EAAOwQ,GAEX,SAAS+c,GAAWnG,EAAKoG,EAAMjd,EAAGC,EAAGsW,EAAMze,EAAO,IAChD,MAAMolB,EAAQvtB,EAAQstB,GAAQA,EAAO,CAACA,GAChCrB,EAAS9jB,EAAKqlB,YAAc,GAA0B,KAArBrlB,EAAKslB,YAC5C,IAAIhzB,EAAG6L,EAIP,IAHA4gB,EAAI6C,OACJ7C,EAAIN,KAAOA,EAAK4C,OAChBkE,GAAcxG,EAAK/e,GACd1N,EAAI,EAAGA,EAAI8yB,EAAM5yB,SAAUF,EAC9B6L,EAAOinB,EAAM9yB,GACTwxB,IACE9jB,EAAKslB,cACPvG,EAAIyG,YAAcxlB,EAAKslB,aAEpB5hB,EAAc1D,EAAKqlB,eACtBtG,EAAI0G,UAAYzlB,EAAKqlB,aAEvBtG,EAAI2G,WAAWvnB,EAAM+J,EAAGC,EAAGnI,EAAK2lB,WAElC5G,EAAI6G,SAASznB,EAAM+J,EAAGC,EAAGnI,EAAK2lB,UAC9BE,GAAa9G,EAAK7W,EAAGC,EAAGhK,EAAM6B,GAC9BmI,GAAKsW,EAAKG,WAEZG,EAAIgD,UAEN,SAASwD,GAAcxG,EAAK/e,GACtBA,EAAK8lB,aACP/G,EAAIoE,UAAUnjB,EAAK8lB,YAAY,GAAI9lB,EAAK8lB,YAAY,IAEjDpiB,EAAc1D,EAAKgjB,WACtBjE,EAAIpP,OAAO3P,EAAKgjB,UAEdhjB,EAAKqc,QACP0C,EAAIgH,UAAY/lB,EAAKqc,OAEnBrc,EAAKgmB,YACPjH,EAAIiH,UAAYhmB,EAAKgmB,WAEnBhmB,EAAKimB,eACPlH,EAAIkH,aAAejmB,EAAKimB,cAG5B,SAASJ,GAAa9G,EAAK7W,EAAGC,EAAGhK,EAAM6B,GACrC,GAAIA,EAAKkmB,eAAiBlmB,EAAKmmB,UAAW,CACxC,MAAMC,EAAUrH,EAAIwC,YAAYpjB,GAC1BiF,EAAO8E,EAAIke,EAAQC,sBACnBhjB,EAAQ6E,EAAIke,EAAQE,uBACpBnC,EAAMhc,EAAIie,EAAQG,wBAClBnC,EAASjc,EAAIie,EAAQI,yBACrBC,EAAczmB,EAAKkmB,eAAiB/B,EAAMC,GAAU,EAAIA,EAC9DrF,EAAIyG,YAAczG,EAAIgH,UACtBhH,EAAIsE,YACJtE,EAAI0G,UAAYzlB,EAAK0mB,iBAAmB,EACxC3H,EAAIyE,OAAOpgB,EAAMqjB,GACjB1H,EAAI0E,OAAOpgB,EAAOojB,GAClB1H,EAAI+E,UAGR,SAAS6C,GAAmB5H,EAAK4E,GAC/B,MAAM,EAACzb,EAAC,EAAEC,EAAC,EAAE4G,EAAC,EAAEzkB,EAAC,OAAE24B,GAAUU,EAC7B5E,EAAIuE,IAAIpb,EAAI+a,EAAO2D,QAASze,EAAI8a,EAAO2D,QAAS3D,EAAO2D,SAAU7f,EAASN,GAAI,GAC9EsY,EAAI0E,OAAOvb,EAAGC,EAAI7d,EAAI24B,EAAO4D,YAC7B9H,EAAIuE,IAAIpb,EAAI+a,EAAO4D,WAAY1e,EAAI7d,EAAI24B,EAAO4D,WAAY5D,EAAO4D,WAAYpgB,EAAIM,GAAS,GAC1FgY,EAAI0E,OAAOvb,EAAI6G,EAAIkU,EAAO6D,YAAa3e,EAAI7d,GAC3Cy0B,EAAIuE,IAAIpb,EAAI6G,EAAIkU,EAAO6D,YAAa3e,EAAI7d,EAAI24B,EAAO6D,YAAa7D,EAAO6D,YAAa/f,EAAS,GAAG,GAChGgY,EAAI0E,OAAOvb,EAAI6G,EAAG5G,EAAI8a,EAAO8D,UAC7BhI,EAAIuE,IAAIpb,EAAI6G,EAAIkU,EAAO8D,SAAU5e,EAAI8a,EAAO8D,SAAU9D,EAAO8D,SAAU,GAAIhgB,GAAS,GACpFgY,EAAI0E,OAAOvb,EAAI+a,EAAO2D,QAASze,GAGjC,MAAM6e,GAAc,IAAI1qB,OAAO,wCACzB2qB,GAAa,IAAI3qB,OAAO,yEAC9B,SAAS4qB,GAAat5B,EAAOyY,GAC3B,MAAM8gB,GAAW,GAAKv5B,GAAOyO,MAAM2qB,IACnC,IAAKG,GAA0B,WAAfA,EAAQ,GACtB,OAAc,IAAP9gB,EAGT,OADAzY,GAASu5B,EAAQ,GACTA,EAAQ,IAChB,IAAK,KACH,OAAOv5B,EACT,IAAK,IACHA,GAAS,IACT,MAEF,OAAOyY,EAAOzY,EAEhB,MAAMw5B,GAAe/rB,IAAMA,GAAK,EAChC,SAASgsB,GAAkBz5B,EAAO4T,GAChC,MAAMgN,EAAM,GACN8Y,EAAWhtB,EAASkH,GACpBnJ,EAAOivB,EAAWtxB,OAAOqC,KAAKmJ,GAASA,EACvCnS,EAAOiL,EAAS1M,GAClB05B,EACEtvB,GAAQgM,EAAepW,EAAMoK,GAAOpK,EAAM4T,EAAMxJ,KAChDA,GAAQpK,EAAMoK,GAChB,IAAMpK,EACV,IAAK,MAAMoK,KAAQK,EACjBmW,EAAIxW,GAAQovB,GAAa/3B,EAAK2I,IAEhC,OAAOwW,EAET,SAAS+Y,GAAO35B,GACd,OAAOy5B,GAAkBz5B,EAAO,CAACu2B,IAAK,IAAK9gB,MAAO,IAAK+gB,OAAQ,IAAKhhB,KAAM,MAE5E,SAASokB,GAAc55B,GACrB,OAAOy5B,GAAkBz5B,EAAO,CAAC,UAAW,WAAY,aAAc,gBAExE,SAAS65B,GAAU75B,GACjB,MAAM2I,EAAMgxB,GAAO35B,GAGnB,OAFA2I,EAAIirB,MAAQjrB,EAAI6M,KAAO7M,EAAI8M,MAC3B9M,EAAImsB,OAASnsB,EAAI4tB,IAAM5tB,EAAI6tB,OACpB7tB,EAET,SAASmxB,GAAOv+B,EAASw+B,GACvBx+B,EAAUA,GAAW,GACrBw+B,EAAWA,GAAY92B,GAAS4tB,KAChC,IAAIpY,EAAOrC,EAAe7a,EAAQkd,KAAMshB,EAASthB,MAC7B,kBAATA,IACTA,EAAOwU,SAASxU,EAAM,KAExB,IAAIsY,EAAQ3a,EAAe7a,EAAQw1B,MAAOgJ,EAAShJ,OAC/CA,KAAW,GAAKA,GAAOtiB,MAAM4qB,MAC/B/mB,QAAQC,KAAK,kCAAoCwe,EAAQ,KACzDA,EAAQ,IAEV,MAAMF,EAAO,CACXC,OAAQ1a,EAAe7a,EAAQu1B,OAAQiJ,EAASjJ,QAChDE,WAAYsI,GAAaljB,EAAe7a,EAAQy1B,WAAY+I,EAAS/I,YAAavY,GAClFA,KAAAA,EACAsY,MAAAA,EACArC,OAAQtY,EAAe7a,EAAQmzB,OAAQqL,EAASrL,QAChD+E,OAAQ,IAGV,OADA5C,EAAK4C,OAASJ,GAAaxC,GACpBA,EAET,SAAShzB,GAAQm8B,EAAQr+B,EAASyJ,EAAO60B,GACvC,IACIv1B,EAAGsS,EAAMhX,EADTk6B,GAAY,EAEhB,IAAKx1B,EAAI,EAAGsS,EAAOgjB,EAAOp1B,OAAQF,EAAIsS,IAAQtS,EAE5C,GADA1E,EAAQg6B,EAAOt1B,QACDhD,IAAV1B,SAGY0B,IAAZ/F,GAA0C,oBAAVqE,IAClCA,EAAQA,EAAMrE,GACdu+B,GAAY,QAEAx4B,IAAV0D,GAAuB6E,EAAQjK,KACjCA,EAAQA,EAAMoF,EAAQpF,EAAM4E,QAC5Bs1B,GAAY,QAEAx4B,IAAV1B,GAIF,OAHIi6B,IAASC,IACXD,EAAKC,WAAY,GAEZl6B,EAIb,SAASm6B,GAAUC,EAAQC,EAAOC,GAChC,MAAM,IAACvf,EAAG,IAAEC,GAAOof,EACbG,EAAS/jB,EAAY6jB,GAAQrf,EAAMD,GAAO,GAC1Cyf,EAAW,CAACx6B,EAAO7D,IAAQm+B,GAAyB,IAAVt6B,EAAc,EAAIA,EAAQ7D,EAC1E,MAAO,CACL4e,IAAKyf,EAASzf,GAAMlQ,KAAK4P,IAAI8f,IAC7Bvf,IAAKwf,EAASxf,EAAKuf,IAGvB,SAASE,GAAcC,EAAe/+B,GACpC,OAAOyM,OAAOQ,OAAOR,OAAO7E,OAAOm3B,GAAgB/+B,GAGrD,SAASg/B,GAAQC,EAAO56B,EAAO66B,GAC7BA,EAAMA,GAAO,CAAEz1B,GAAUw1B,EAAMx1B,GAASpF,GACxC,IAEI86B,EAFAC,EAAKH,EAAMh2B,OAAS,EACpBo2B,EAAK,EAET,MAAOD,EAAKC,EAAK,EACfF,EAAOE,EAAKD,GAAO,EACfF,EAAIC,GACNE,EAAKF,EAELC,EAAKD,EAGT,MAAO,CAACE,GAAAA,EAAID,GAAAA,GAEd,MAAME,GAAe,CAACL,EAAO94B,EAAK9B,IAChC26B,GAAQC,EAAO56B,GAAOoF,GAASw1B,EAAMx1B,GAAOtD,GAAO9B,IAC/Ck7B,GAAgB,CAACN,EAAO94B,EAAK9B,IACjC26B,GAAQC,EAAO56B,GAAOoF,GAASw1B,EAAMx1B,GAAOtD,IAAQ9B,IACtD,SAASm7B,GAAenL,EAAQjV,EAAKC,GACnC,IAAI3F,EAAQ,EACRC,EAAM0a,EAAOprB,OACjB,MAAOyQ,EAAQC,GAAO0a,EAAO3a,GAAS0F,EACpC1F,IAEF,MAAOC,EAAMD,GAAS2a,EAAO1a,EAAM,GAAK0F,EACtC1F,IAEF,OAAOD,EAAQ,GAAKC,EAAM0a,EAAOprB,OAC7BorB,EAAO9lB,MAAMmL,EAAOC,GACpB0a,EAEN,MAAMoL,GAAc,CAAC,OAAQ,MAAO,QAAS,SAAU,WACvD,SAASC,GAAkBxgB,EAAO3V,GAC5B2V,EAAMygB,SACRzgB,EAAMygB,SAASC,UAAUp2B,KAAKD,IAGhCkD,OAAOE,eAAeuS,EAAO,WAAY,CACvC2gB,cAAc,EACdzI,YAAY,EACZ/yB,MAAO,CACLu7B,UAAW,CAACr2B,MAGhBk2B,GAAYx5B,SAASE,IACnB,MAAM3B,EAAS,UAAYmY,EAAYxW,GACjC25B,EAAO5gB,EAAM/Y,GACnBsG,OAAOE,eAAeuS,EAAO/Y,EAAK,CAChC05B,cAAc,EACdzI,YAAY,EACZ/yB,SAASmN,GACP,MAAMuuB,EAAMD,EAAKx0B,MAAMrL,KAAMuR,GAM7B,OALA0N,EAAMygB,SAASC,UAAU35B,SAAS+5B,IACF,oBAAnBA,EAAOx7B,IAChBw7B,EAAOx7B,MAAWgN,MAGfuuB,SAKf,SAASE,GAAoB/gB,EAAO3V,GAClC,MAAM22B,EAAOhhB,EAAMygB,SACnB,IAAKO,EACH,OAEF,MAAMN,EAAYM,EAAKN,UACjBn2B,EAAQm2B,EAAU56B,QAAQuE,IACjB,IAAXE,GACFm2B,EAAUl2B,OAAOD,EAAO,GAEtBm2B,EAAU32B,OAAS,IAGvBw2B,GAAYx5B,SAASE,WACZ+Y,EAAM/Y,aAER+Y,EAAMygB,UAEf,SAASQ,GAAaC,GACpB,MAAMlM,EAAM,IAAImM,IAChB,IAAIt3B,EAAGsS,EACP,IAAKtS,EAAI,EAAGsS,EAAO+kB,EAAMn3B,OAAQF,EAAIsS,IAAQtS,EAC3CmrB,EAAI1zB,IAAI4/B,EAAMr3B,IAEhB,OAAImrB,EAAIpX,OAASzB,EACR+kB,EAEF/0B,MAAMuB,KAAKsnB,GAGpB,SAASoM,GAAgBC,EAAQC,EAAW,CAAC,IAAKC,EAAaF,EAAQnC,EAAUsC,EAAY,KAAMH,EAAO,KACnG3jB,EAAQwhB,KACXA,EAAWj1B,GAAS,YAAao3B,IAEnC,MAAMzpB,EAAQ,CACZ,CAAC6pB,OAAOC,aAAc,SACtBC,YAAY,EACZC,QAASP,EACTQ,YAAaN,EACbhJ,UAAW2G,EACX4C,WAAYN,EACZ9J,SAAWxC,GAAUkM,GAAgB,CAAClM,KAAUmM,GAASC,EAAUC,EAAYrC,IAEjF,OAAO,IAAI6C,MAAMnqB,EAAO,CACtBoqB,eAAe9yB,EAAQK,GAIrB,cAHOL,EAAOK,UACPL,EAAO+yB,aACPZ,EAAO,GAAG9xB,IACV,GAETkoB,IAAIvoB,EAAQK,GACV,OAAO2yB,GAAQhzB,EAAQK,GACrB,IAAM4yB,GAAqB5yB,EAAM+xB,EAAUD,EAAQnyB,MAEvDkzB,yBAAyBlzB,EAAQK,GAC/B,OAAO8yB,QAAQD,yBAAyBlzB,EAAO0yB,QAAQ,GAAIryB,IAE7D2I,iBACE,OAAOmqB,QAAQnqB,eAAempB,EAAO,KAEvCvjB,IAAI5O,EAAQK,GACV,OAAO+yB,GAAqBpzB,GAAQqzB,SAAShzB,IAE/CizB,QAAQtzB,GACN,OAAOozB,GAAqBpzB,IAE9B8lB,IAAI9lB,EAAQK,EAAMpK,GAChB,MAAMs9B,EAAUvzB,EAAOwzB,WAAaxzB,EAAOwzB,SAAWlB,KAGtD,OAFAtyB,EAAOK,GAAQkzB,EAAQlzB,GAAQpK,SACxB+J,EAAO+yB,OACP,KAIb,SAASU,GAAeC,EAAO9hC,EAAS+hC,EAAUC,GAChD,MAAMlrB,EAAQ,CACZ+pB,YAAY,EACZoB,OAAQH,EACRI,SAAUliC,EACVmiC,UAAWJ,EACXK,OAAQ,IAAI/B,IACZ9L,aAAcA,GAAauN,EAAOE,GAClCK,WAAa7M,GAAQqM,GAAeC,EAAOtM,EAAKuM,EAAUC,GAC1DpL,SAAWxC,GAAUyN,GAAeC,EAAMlL,SAASxC,GAAQp0B,EAAS+hC,EAAUC,IAEhF,OAAO,IAAIf,MAAMnqB,EAAO,CACtBoqB,eAAe9yB,EAAQK,GAGrB,cAFOL,EAAOK,UACPqzB,EAAMrzB,IACN,GAETkoB,IAAIvoB,EAAQK,EAAM6zB,GAChB,OAAOlB,GAAQhzB,EAAQK,GACrB,IAAM8zB,GAAoBn0B,EAAQK,EAAM6zB,MAE5ChB,yBAAyBlzB,EAAQK,GAC/B,OAAOL,EAAOmmB,aAAaiO,QACvBjB,QAAQvkB,IAAI8kB,EAAOrzB,GAAQ,CAAC2oB,YAAY,EAAMyI,cAAc,QAAQ95B,EACpEw7B,QAAQD,yBAAyBQ,EAAOrzB,IAE9C2I,iBACE,OAAOmqB,QAAQnqB,eAAe0qB,IAEhC9kB,IAAI5O,EAAQK,GACV,OAAO8yB,QAAQvkB,IAAI8kB,EAAOrzB,IAE5BizB,UACE,OAAOH,QAAQG,QAAQI,IAEzB5N,IAAI9lB,EAAQK,EAAMpK,GAGhB,OAFAy9B,EAAMrzB,GAAQpK,SACP+J,EAAOK,IACP,KAIb,SAAS8lB,GAAauN,EAAOx6B,EAAW,CAACm7B,YAAY,EAAMC,WAAW,IACpE,MAAM,YAACpL,EAAchwB,EAASm7B,WAAU,WAAEjL,EAAalwB,EAASo7B,UAAS,SAAEC,EAAWr7B,EAASk7B,SAAWV,EAC1G,MAAO,CACLU,QAASG,EACTF,WAAYnL,EACZoL,UAAWlL,EACXoL,aAAcvrB,EAAWigB,GAAeA,EAAc,IAAMA,EAC5DuL,YAAaxrB,EAAWmgB,GAAcA,EAAa,IAAMA,GAG7D,MAAMsL,GAAU,CAACC,EAAQj5B,IAASi5B,EAASA,EAASpmB,EAAY7S,GAAQA,EAClEk5B,GAAmB,CAACv0B,EAAMpK,IAAU0M,EAAS1M,IAAmB,aAAToK,IACzB,OAAjChC,OAAO2K,eAAe/S,IAAmBA,EAAM4S,cAAgBxK,QAClE,SAAS20B,GAAQhzB,EAAQK,EAAMvM,GAC7B,GAAIuK,OAAO/E,UAAU+P,eAAenX,KAAK8N,EAAQK,GAC/C,OAAOL,EAAOK,GAEhB,MAAMpK,EAAQnC,IAEd,OADAkM,EAAOK,GAAQpK,EACRA,EAET,SAASk+B,GAAoBn0B,EAAQK,EAAM6zB,GACzC,MAAM,OAACL,EAAM,SAAEC,EAAQ,UAAEC,EAAW5N,aAAc/nB,GAAe4B,EACjE,IAAI/J,EAAQ49B,EAAOxzB,GAUnB,OATI4I,EAAWhT,IAAUmI,EAAYo2B,aAAan0B,KAChDpK,EAAQ4+B,GAAmBx0B,EAAMpK,EAAO+J,EAAQk0B,IAE9Ch0B,EAAQjK,IAAUA,EAAM4E,SAC1B5E,EAAQ6+B,GAAcz0B,EAAMpK,EAAO+J,EAAQ5B,EAAYq2B,cAErDG,GAAiBv0B,EAAMpK,KACzBA,EAAQw9B,GAAex9B,EAAO69B,EAAUC,GAAaA,EAAU1zB,GAAOjC,IAEjEnI,EAET,SAAS4+B,GAAmBx0B,EAAMpK,EAAO+J,EAAQk0B,GAC/C,MAAM,OAACL,EAAM,SAAEC,EAAQ,UAAEC,EAAS,OAAEC,GAAUh0B,EAC9C,GAAIg0B,EAAOplB,IAAIvO,GACb,MAAM,IAAIzC,MAAM,uBAAyBX,MAAMuB,KAAKw1B,GAAQnwB,KAAK,MAAQ,KAAOxD,GAQlF,OANA2zB,EAAO5hC,IAAIiO,GACXpK,EAAQA,EAAM69B,EAAUC,GAAaG,GACrCF,EAAOe,OAAO10B,GACVu0B,GAAiBv0B,EAAMpK,KACzBA,EAAQ++B,GAAkBnB,EAAOnB,QAASmB,EAAQxzB,EAAMpK,IAEnDA,EAET,SAAS6+B,GAAcz0B,EAAMpK,EAAO+J,EAAQy0B,GAC1C,MAAM,OAACZ,EAAM,SAAEC,EAAQ,UAAEC,EAAW5N,aAAc/nB,GAAe4B,EACjE,GAAIwO,EAAQslB,EAASz4B,QAAUo5B,EAAYp0B,GACzCpK,EAAQA,EAAM69B,EAASz4B,MAAQpF,EAAM4E,aAChC,GAAI8H,EAAS1M,EAAM,IAAK,CAC7B,MAAM2Q,EAAM3Q,EACNk8B,EAAS0B,EAAOnB,QAAQ1oB,QAAOwI,GAAKA,IAAM5L,IAChD3Q,EAAQ,GACR,IAAK,MAAM0Y,KAAQ/H,EAAK,CACtB,MAAMquB,EAAWD,GAAkB7C,EAAQ0B,EAAQxzB,EAAMsO,GACzD1Y,EAAMmF,KAAKq4B,GAAewB,EAAUnB,EAAUC,GAAaA,EAAU1zB,GAAOjC,KAGhF,OAAOnI,EAET,SAASi/B,GAAgBlF,EAAU3vB,EAAMpK,GACvC,OAAOgT,EAAW+mB,GAAYA,EAAS3vB,EAAMpK,GAAS+5B,EAExD,MAAMmF,GAAW,CAACp9B,EAAK/F,KAAmB,IAAR+F,EAAe/F,EAC9B,kBAAR+F,EAAmBsW,EAAiBrc,EAAQ+F,QAAOJ,EAC9D,SAASy9B,GAAUtP,EAAKuP,EAAct9B,EAAKu9B,EAAgBr/B,GACzD,IAAK,MAAMjE,KAAUqjC,EAAc,CACjC,MAAMrP,EAAQmP,GAASp9B,EAAK/F,GAC5B,GAAIg0B,EAAO,CACTF,EAAI1zB,IAAI4zB,GACR,MAAMgK,EAAWkF,GAAgBlP,EAAMqD,UAAWtxB,EAAK9B,GACvD,GAAIuY,EAAQwhB,IAAaA,IAAaj4B,GAAOi4B,IAAasF,EACxD,OAAOtF,OAEJ,IAAc,IAAVhK,GAAmBxX,EAAQ8mB,IAAmBv9B,IAAQu9B,EAC/D,OAAO,KAGX,OAAO,EAET,SAASN,GAAkBK,EAAcJ,EAAU50B,EAAMpK,GACvD,MAAMo8B,EAAa4C,EAAStC,YACtB3C,EAAWkF,GAAgBD,EAAS5L,UAAWhpB,EAAMpK,GACrDs/B,EAAY,IAAIF,KAAiBhD,GACjCvM,EAAM,IAAImM,IAChBnM,EAAI1zB,IAAI6D,GACR,IAAI8B,EAAMy9B,GAAiB1P,EAAKyP,EAAWl1B,EAAM2vB,GAAY3vB,EAAMpK,GACnE,OAAY,OAAR8B,MAGAyW,EAAQwhB,IAAaA,IAAa3vB,IACpCtI,EAAMy9B,GAAiB1P,EAAKyP,EAAWvF,EAAUj4B,EAAK9B,GAC1C,OAAR8B,KAICm6B,GAAgBj1B,MAAMuB,KAAKsnB,GAAM,CAAC,IAAKuM,EAAYrC,GACxD,IAAMyF,GAAaR,EAAU50B,EAAMpK,MAEvC,SAASu/B,GAAiB1P,EAAKyP,EAAWx9B,EAAKi4B,EAAUrhB,GACvD,MAAO5W,EACLA,EAAMq9B,GAAUtP,EAAKyP,EAAWx9B,EAAKi4B,EAAUrhB,GAEjD,OAAO5W,EAET,SAAS09B,GAAaR,EAAU50B,EAAMpK,GACpC,MAAMjE,EAASijC,EAASrC,aAClBvyB,KAAQrO,IACZA,EAAOqO,GAAQ,IAEjB,MAAML,EAAShO,EAAOqO,GACtB,OAAIH,EAAQF,IAAW2C,EAAS1M,GACvBA,EAEF+J,EAET,SAASizB,GAAqB5yB,EAAM+xB,EAAUD,EAAQuB,GACpD,IAAIz9B,EACJ,IAAK,MAAM0+B,KAAUvC,EAEnB,GADAn8B,EAAQ8E,GAAS25B,GAAQC,EAAQt0B,GAAO8xB,GACpC3jB,EAAQvY,GACV,OAAO2+B,GAAiBv0B,EAAMpK,GAC1B++B,GAAkB7C,EAAQuB,EAAOrzB,EAAMpK,GACvCA,EAIV,SAAS8E,GAAShD,EAAKo6B,GACrB,IAAK,MAAMnM,KAASmM,EAAQ,CAC1B,IAAKnM,EACH,SAEF,MAAM/vB,EAAQ+vB,EAAMjuB,GACpB,GAAIyW,EAAQvY,GACV,OAAOA,GAIb,SAASm9B,GAAqBpzB,GAC5B,IAAIU,EAAOV,EAAO+yB,MAIlB,OAHKryB,IACHA,EAAOV,EAAO+yB,MAAQ2C,GAAyB11B,EAAO0yB,UAEjDhyB,EAET,SAASg1B,GAAyBvD,GAChC,MAAMrM,EAAM,IAAImM,IAChB,IAAK,MAAMjM,KAASmM,EAClB,IAAK,MAAMp6B,KAAOsG,OAAOqC,KAAKslB,GAAOhc,QAAOwD,IAAMA,EAAE2b,WAAW,OAC7DrD,EAAI1zB,IAAI2F,GAGZ,OAAOkF,MAAMuB,KAAKsnB,GAEpB,SAAS6P,GAA4BC,EAAM1hC,EAAMoX,EAAOuqB,GACtD,MAAM,OAACC,GAAUF,GACX,IAAC79B,EAAM,KAAOlG,KAAKkkC,SACnB3vB,EAAS,IAAInJ,MAAM44B,GACzB,IAAIl7B,EAAGsS,EAAM5R,EAAOsT,EACpB,IAAKhU,EAAI,EAAGsS,EAAO4oB,EAAOl7B,EAAIsS,IAAQtS,EACpCU,EAAQV,EAAI2Q,EACZqD,EAAOza,EAAKmH,GACZ+K,EAAOzL,GAAK,CACV+b,EAAGof,EAAOj0B,MAAMwM,EAAiBM,EAAM5W,GAAMsD,IAGjD,OAAO+K,EAGT,MAAM4vB,GAAU/pB,OAAO+pB,SAAW,MAC5BC,GAAW,CAACC,EAAQv7B,IAAMA,EAAIu7B,EAAOr7B,SAAWq7B,EAAOv7B,GAAGw7B,MAAQD,EAAOv7B,GACzEy7B,GAAgB7O,GAA4B,MAAdA,EAAoB,IAAM,IAC9D,SAAS8O,GAAYC,EAAYC,EAAaC,EAAYvjB,GACxD,MAAM6Z,EAAWwJ,EAAWH,KAAOI,EAAcD,EAC3CG,EAAUF,EACVG,EAAOF,EAAWL,KAAOI,EAAcC,EACvCG,EAAM1kB,GAAsBwkB,EAAS3J,GACrC8J,EAAM3kB,GAAsBykB,EAAMD,GACxC,IAAII,EAAMF,GAAOA,EAAMC,GACnBE,EAAMF,GAAOD,EAAMC,GACvBC,EAAMvmB,MAAMumB,GAAO,EAAIA,EACvBC,EAAMxmB,MAAMwmB,GAAO,EAAIA,EACvB,MAAMC,EAAK9jB,EAAI4jB,EACTG,EAAK/jB,EAAI6jB,EACf,MAAO,CACLhK,SAAU,CACRvc,EAAGkmB,EAAQlmB,EAAIwmB,GAAML,EAAKnmB,EAAIuc,EAASvc,GACvCC,EAAGimB,EAAQjmB,EAAIumB,GAAML,EAAKlmB,EAAIsc,EAAStc,IAEzCkmB,KAAM,CACJnmB,EAAGkmB,EAAQlmB,EAAIymB,GAAMN,EAAKnmB,EAAIuc,EAASvc,GACvCC,EAAGimB,EAAQjmB,EAAIwmB,GAAMN,EAAKlmB,EAAIsc,EAAStc,KAI7C,SAASymB,GAAef,EAAQgB,EAAQC,GACtC,MAAMC,EAAYlB,EAAOr7B,OACzB,IAAIw8B,EAAQC,EAAOC,EAAMC,EAAkBC,EACvCC,EAAazB,GAASC,EAAQ,GAClC,IAAK,IAAIv7B,EAAI,EAAGA,EAAIy8B,EAAY,IAAKz8B,EACnC88B,EAAeC,EACfA,EAAazB,GAASC,EAAQv7B,EAAI,GAC7B88B,GAAiBC,IAGlB7nB,EAAaqnB,EAAOv8B,GAAI,EAAGq7B,IAC7BmB,EAAGx8B,GAAKw8B,EAAGx8B,EAAI,GAAK,GAGtB08B,EAASF,EAAGx8B,GAAKu8B,EAAOv8B,GACxB28B,EAAQH,EAAGx8B,EAAI,GAAKu8B,EAAOv8B,GAC3B68B,EAAmB12B,KAAKiP,IAAIsnB,EAAQ,GAAKv2B,KAAKiP,IAAIunB,EAAO,GACrDE,GAAoB,IAGxBD,EAAO,EAAIz2B,KAAKqP,KAAKqnB,GACrBL,EAAGx8B,GAAK08B,EAASE,EAAOL,EAAOv8B,GAC/Bw8B,EAAGx8B,EAAI,GAAK28B,EAAQC,EAAOL,EAAOv8B,MAGtC,SAASg9B,GAAgBzB,EAAQiB,EAAI5P,EAAY,KAC/C,MAAMqQ,EAAYxB,GAAa7O,GACzB6P,EAAYlB,EAAOr7B,OACzB,IAAIg9B,EAAOC,EAAaL,EACpBC,EAAazB,GAASC,EAAQ,GAClC,IAAK,IAAIv7B,EAAI,EAAGA,EAAIy8B,IAAaz8B,EAAG,CAIlC,GAHAm9B,EAAcL,EACdA,EAAeC,EACfA,EAAazB,GAASC,EAAQv7B,EAAI,IAC7B88B,EACH,SAEF,MAAMM,EAASN,EAAalQ,GACtByQ,EAASP,EAAaG,GACxBE,IACFD,GAASE,EAASD,EAAYvQ,IAAc,EAC5CkQ,EAAa,MAAMlQ,KAAewQ,EAASF,EAC3CJ,EAAa,MAAMG,KAAeI,EAASH,EAAQV,EAAGx8B,IAEpD+8B,IACFG,GAASH,EAAWnQ,GAAawQ,GAAU,EAC3CN,EAAa,MAAMlQ,KAAewQ,EAASF,EAC3CJ,EAAa,MAAMG,KAAeI,EAASH,EAAQV,EAAGx8B,KAI5D,SAASs9B,GAAoB/B,EAAQ3O,EAAY,KAC/C,MAAMqQ,EAAYxB,GAAa7O,GACzB6P,EAAYlB,EAAOr7B,OACnBq8B,EAASj6B,MAAMm6B,GAAWnL,KAAK,GAC/BkL,EAAKl6B,MAAMm6B,GACjB,IAAIz8B,EAAGm9B,EAAaL,EAChBC,EAAazB,GAASC,EAAQ,GAClC,IAAKv7B,EAAI,EAAGA,EAAIy8B,IAAaz8B,EAI3B,GAHAm9B,EAAcL,EACdA,EAAeC,EACfA,EAAazB,GAASC,EAAQv7B,EAAI,GAC7B88B,EAAL,CAGA,GAAIC,EAAY,CACd,MAAMQ,EAAaR,EAAWnQ,GAAakQ,EAAalQ,GACxD2P,EAAOv8B,GAAoB,IAAfu9B,GAAoBR,EAAWE,GAAaH,EAAaG,IAAcM,EAAa,EAElGf,EAAGx8B,GAAMm9B,EACJJ,EACAloB,EAAK0nB,EAAOv8B,EAAI,MAAQ6U,EAAK0nB,EAAOv8B,IAAO,GAC3Cu8B,EAAOv8B,EAAI,GAAKu8B,EAAOv8B,IAAM,EAFhBu8B,EAAOv8B,EAAI,GADNu8B,EAAOv8B,GAKhCs8B,GAAef,EAAQgB,EAAQC,GAC/BQ,GAAgBzB,EAAQiB,EAAI5P,GAE9B,SAAS4Q,GAAgBC,EAAIpnB,EAAKC,GAChC,OAAOnQ,KAAKmQ,IAAInQ,KAAKkQ,IAAIonB,EAAInnB,GAAMD,GAErC,SAASqnB,GAAgBnC,EAAQ5J,GAC/B,IAAI3xB,EAAGsS,EAAMof,EAAOiM,EAAQC,EACxBC,EAAapM,GAAe8J,EAAO,GAAI5J,GAC3C,IAAK3xB,EAAI,EAAGsS,EAAOipB,EAAOr7B,OAAQF,EAAIsS,IAAQtS,EAC5C49B,EAAaD,EACbA,EAASE,EACTA,EAAa79B,EAAIsS,EAAO,GAAKmf,GAAe8J,EAAOv7B,EAAI,GAAI2xB,GACtDgM,IAGLjM,EAAQ6J,EAAOv7B,GACX49B,IACFlM,EAAMc,KAAOgL,GAAgB9L,EAAMc,KAAMb,EAAK7gB,KAAM6gB,EAAK5gB,OACzD2gB,EAAMgB,KAAO8K,GAAgB9L,EAAMgB,KAAMf,EAAKE,IAAKF,EAAKG,SAEtD+L,IACFnM,EAAMe,KAAO+K,GAAgB9L,EAAMe,KAAMd,EAAK7gB,KAAM6gB,EAAK5gB,OACzD2gB,EAAMiB,KAAO6K,GAAgB9L,EAAMiB,KAAMhB,EAAKE,IAAKF,EAAKG,UAI9D,SAASgM,GAA2BvC,EAAQ1kC,EAAS86B,EAAMoM,EAAMnR,GAC/D,IAAI5sB,EAAGsS,EAAMof,EAAOsM,EAIpB,GAHInnC,EAAQonC,WACV1C,EAASA,EAAOlsB,QAAQouB,IAAQA,EAAGjC,QAEE,aAAnC3kC,EAAQqnC,uBACVZ,GAAoB/B,EAAQ3O,OACvB,CACL,IAAIuR,EAAOJ,EAAOxC,EAAOA,EAAOr7B,OAAS,GAAKq7B,EAAO,GACrD,IAAKv7B,EAAI,EAAGsS,EAAOipB,EAAOr7B,OAAQF,EAAIsS,IAAQtS,EAC5C0xB,EAAQ6J,EAAOv7B,GACfg+B,EAAgBtC,GACdyC,EACAzM,EACA6J,EAAOp1B,KAAKkQ,IAAIrW,EAAI,EAAGsS,GAAQyrB,EAAO,EAAI,IAAMzrB,GAChDzb,EAAQunC,SAEV1M,EAAMc,KAAOwL,EAAc7L,SAASvc,EACpC8b,EAAMgB,KAAOsL,EAAc7L,SAAStc,EACpC6b,EAAMe,KAAOuL,EAAcjC,KAAKnmB,EAChC8b,EAAMiB,KAAOqL,EAAcjC,KAAKlmB,EAChCsoB,EAAOzM,EAGP76B,EAAQ6mC,iBACVA,GAAgBnC,EAAQ5J,GAI5B,SAAS0M,KACP,MAAyB,qBAAX/yB,QAA8C,qBAAbxB,SAEjD,SAASw0B,GAAeC,GACtB,IAAIlnC,EAASknC,EAAQC,WAIrB,OAHInnC,GAAgC,wBAAtBA,EAAOsP,aACnBtP,EAASA,EAAO0T,MAEX1T,EAET,SAASonC,GAAcC,EAAYxT,EAAMyT,GACvC,IAAIC,EASJ,MAR0B,kBAAfF,GACTE,EAAgBrW,SAASmW,EAAY,KACJ,IAA7BA,EAAWziC,QAAQ,OACrB2iC,EAAgBA,EAAgB,IAAM1T,EAAKsT,WAAWG,KAGxDC,EAAgBF,EAEXE,EAET,MAAMC,GAAoBC,GAAYxzB,OAAOuzB,iBAAiBC,EAAS,MACvE,SAASC,GAASnyB,EAAIwJ,GACpB,OAAOyoB,GAAiBjyB,GAAIoyB,iBAAiB5oB,GAE/C,MAAM6oB,GAAY,CAAC,MAAO,QAAS,SAAU,QAC7C,SAASC,GAAmBC,EAAQ9S,EAAO+S,GACzC,MAAM/xB,EAAS,GACf+xB,EAASA,EAAS,IAAMA,EAAS,GACjC,IAAK,IAAIp/B,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1B,MAAM2T,EAAMsrB,GAAUj/B,GACtBqN,EAAOsG,GAAO9B,WAAWstB,EAAO9S,EAAQ,IAAM1Y,EAAMyrB,KAAY,EAIlE,OAFA/xB,EAAO6hB,MAAQ7hB,EAAOyD,KAAOzD,EAAO0D,MACpC1D,EAAO+iB,OAAS/iB,EAAOwkB,IAAMxkB,EAAOykB,OAC7BzkB,EAET,MAAMgyB,GAAe,CAACzpB,EAAGC,EAAGxQ,KAAYuQ,EAAI,GAAKC,EAAI,MAAQxQ,IAAWA,EAAOxN,YAC/E,SAASynC,GAAkBl4B,EAAG4oB,GAC5B,MAAMuP,EAAUn4B,EAAEm4B,QACZ3+B,EAAS2+B,GAAWA,EAAQr/B,OAASq/B,EAAQ,GAAKn4B,GAClD,QAACo4B,EAAO,QAAEC,GAAW7+B,EAC3B,IACIgV,EAAGC,EADH6pB,GAAM,EAEV,GAAIL,GAAaG,EAASC,EAASr4B,EAAE/B,QACnCuQ,EAAI4pB,EACJ3pB,EAAI4pB,MACC,CACL,MAAMpO,EAAOrB,EAAO2P,wBACpB/pB,EAAIhV,EAAOg/B,QAAUvO,EAAKvgB,KAC1B+E,EAAIjV,EAAOi/B,QAAUxO,EAAKQ,IAC1B6N,GAAM,EAER,MAAO,CAAC9pB,EAAAA,EAAGC,EAAAA,EAAG6pB,IAAAA,GAEhB,SAASI,GAAoBC,EAAKjU,GAChC,GAAI,WAAYiU,EACd,OAAOA,EAET,MAAM,OAAC/P,EAAM,wBAAEH,GAA2B/D,EACpCO,EAAQwS,GAAiB7O,GACzBgQ,EAAgC,eAApB3T,EAAM4T,UAClBC,EAAWhB,GAAmB7S,EAAO,WACrC8T,EAAUjB,GAAmB7S,EAAO,SAAU,UAC9C,EAACzW,EAAC,EAAEC,EAAC,IAAE6pB,GAAOJ,GAAkBS,EAAK/P,GACrCM,EAAU4P,EAASpvB,MAAQ4uB,GAAOS,EAAQrvB,MAC1Cyf,EAAU2P,EAASrO,KAAO6N,GAAOS,EAAQtO,KAC/C,IAAI,MAAC3C,EAAK,OAAEkB,GAAUtE,EAKtB,OAJIkU,IACF9Q,GAASgR,EAAShR,MAAQiR,EAAQjR,MAClCkB,GAAU8P,EAAS9P,OAAS+P,EAAQ/P,QAE/B,CACLxa,EAAGzP,KAAK8O,OAAOW,EAAI0a,GAAWpB,EAAQc,EAAOd,MAAQW,GACrDha,EAAG1P,KAAK8O,OAAOY,EAAI0a,GAAWH,EAASJ,EAAOI,OAASP,IAG3D,SAASuQ,GAAiBpQ,EAAQd,EAAOkB,GACvC,IAAIiD,EAAUgN,EACd,QAAcrjC,IAAVkyB,QAAkClyB,IAAXozB,EAAsB,CAC/C,MAAMkQ,EAAYhC,GAAetO,GACjC,GAAKsQ,EAGE,CACL,MAAMjP,EAAOiP,EAAUX,wBACjBY,EAAiB1B,GAAiByB,GAClCE,EAAkBtB,GAAmBqB,EAAgB,SAAU,SAC/DE,EAAmBvB,GAAmBqB,EAAgB,WAC5DrR,EAAQmC,EAAKnC,MAAQuR,EAAiBvR,MAAQsR,EAAgBtR,MAC9DkB,EAASiB,EAAKjB,OAASqQ,EAAiBrQ,OAASoQ,EAAgBpQ,OACjEiD,EAAWoL,GAAc8B,EAAelN,SAAUiN,EAAW,eAC7DD,EAAY5B,GAAc8B,EAAeF,UAAWC,EAAW,qBAV/DpR,EAAQc,EAAO0Q,YACftQ,EAASJ,EAAO2Q,aAYpB,MAAO,CACLzR,MAAAA,EACAkB,OAAAA,EACAiD,SAAUA,GAAY/e,EACtB+rB,UAAWA,GAAa/rB,GAG5B,MAAMssB,GAAS73B,GAAK5C,KAAK8O,MAAU,GAAJlM,GAAU,GACzC,SAAS83B,GAAe7Q,EAAQ8Q,EAASC,EAAUC,GACjD,MAAM3U,EAAQwS,GAAiB7O,GACzBiR,EAAU/B,GAAmB7S,EAAO,UACpCgH,EAAWoL,GAAcpS,EAAMgH,SAAUrD,EAAQ,gBAAkB1b,EACnE+rB,EAAY5B,GAAcpS,EAAMgU,UAAWrQ,EAAQ,iBAAmB1b,EACtE4sB,EAAgBd,GAAiBpQ,EAAQ8Q,EAASC,GACxD,IAAI,MAAC7R,EAAK,OAAEkB,GAAU8Q,EACtB,GAAwB,gBAApB7U,EAAM4T,UAA6B,CACrC,MAAME,EAAUjB,GAAmB7S,EAAO,SAAU,SAC9C6T,EAAWhB,GAAmB7S,EAAO,WAC3C6C,GAASgR,EAAShR,MAAQiR,EAAQjR,MAClCkB,GAAU8P,EAAS9P,OAAS+P,EAAQ/P,OAStC,OAPAlB,EAAQ/oB,KAAKmQ,IAAI,EAAG4Y,EAAQ+R,EAAQ/R,OACpCkB,EAASjqB,KAAKmQ,IAAI,EAAG0qB,EAAc76B,KAAKC,MAAM8oB,EAAQ8R,GAAe5Q,EAAS6Q,EAAQ7Q,QACtFlB,EAAQ0R,GAAOz6B,KAAKkQ,IAAI6Y,EAAOmE,EAAU6N,EAAc7N,WACvDjD,EAASwQ,GAAOz6B,KAAKkQ,IAAI+Z,EAAQiQ,EAAWa,EAAcb,YACtDnR,IAAUkB,IACZA,EAASwQ,GAAO1R,EAAQ,IAEnB,CACLA,MAAAA,EACAkB,OAAAA,GAGJ,SAAS+Q,GAAYrV,EAAOsV,EAAYC,GACtC,MAAMC,EAAaF,GAAc,EAC3BG,EAAep7B,KAAKC,MAAM0lB,EAAMsE,OAASkR,GACzCE,EAAcr7B,KAAKC,MAAM0lB,EAAMoD,MAAQoS,GAC7CxV,EAAMsE,OAASmR,EAAeD,EAC9BxV,EAAMoD,MAAQsS,EAAcF,EAC5B,MAAMtR,EAASlE,EAAMkE,OAKrB,OAJIA,EAAO3D,QAAUgV,IAAgBrR,EAAO3D,MAAM+D,SAAWJ,EAAO3D,MAAM6C,SACxEc,EAAO3D,MAAM+D,OAAS,GAAGtE,EAAMsE,WAC/BJ,EAAO3D,MAAM6C,MAAQ,GAAGpD,EAAMoD,YAE5BpD,EAAM+D,0BAA4ByR,GAC/BtR,EAAOI,SAAWmR,GAClBvR,EAAOd,QAAUsS,KACtB1V,EAAM+D,wBAA0ByR,EAChCtR,EAAOI,OAASmR,EAChBvR,EAAOd,MAAQsS,EACf1V,EAAMW,IAAIgV,aAAaH,EAAY,EAAG,EAAGA,EAAY,EAAG,IACjD,GAIX,MAAMI,GAAgC,WACpC,IAAIC,GAAmB,EACvB,IACE,MAAM9qC,EAAU,CACV+qC,cAEF,OADAD,GAAmB,GACZ,IAGXr2B,OAAO7N,iBAAiB,OAAQ,KAAM5G,GACtCyU,OAAOvR,oBAAoB,OAAQ,KAAMlD,GACzC,MAAOuQ,IAET,OAAOu6B,EAb4B,GAerC,SAASE,GAAa/C,EAAS1oB,GAC7B,MAAM9a,EAAQyjC,GAASD,EAAS1oB,GAC1Bye,EAAUv5B,GAASA,EAAMyO,MAAM,qBACrC,OAAO8qB,GAAWA,EAAQ,QAAK73B,EAGjC,SAAS8kC,GAAa3kB,EAAIC,EAAI9E,EAAGwU,GAC/B,MAAO,CACLlX,EAAGuH,EAAGvH,EAAI0C,GAAK8E,EAAGxH,EAAIuH,EAAGvH,GACzBC,EAAGsH,EAAGtH,EAAIyC,GAAK8E,EAAGvH,EAAIsH,EAAGtH,IAG7B,SAASksB,GAAsB5kB,EAAIC,EAAI9E,EAAGwU,GACxC,MAAO,CACLlX,EAAGuH,EAAGvH,EAAI0C,GAAK8E,EAAGxH,EAAIuH,EAAGvH,GACzBC,EAAY,WAATiX,EAAoBxU,EAAI,GAAM6E,EAAGtH,EAAIuH,EAAGvH,EAChC,UAATiX,EAAmBxU,EAAI,EAAI6E,EAAGtH,EAAIuH,EAAGvH,EACrCyC,EAAI,EAAI8E,EAAGvH,EAAIsH,EAAGtH,GAGxB,SAASmsB,GAAqB7kB,EAAIC,EAAI9E,EAAGwU,GACvC,MAAMmV,EAAM,CAACrsB,EAAGuH,EAAGsV,KAAM5c,EAAGsH,EAAGwV,MACzBuP,EAAM,CAACtsB,EAAGwH,EAAGoV,KAAM3c,EAAGuH,EAAGsV,MACzB9jB,EAAIkzB,GAAa3kB,EAAI8kB,EAAK3pB,GAC1BzJ,EAAIizB,GAAaG,EAAKC,EAAK5pB,GAC3BzX,EAAIihC,GAAaI,EAAK9kB,EAAI9E,GAC1BqC,EAAImnB,GAAalzB,EAAGC,EAAGyJ,GACvBlR,EAAI06B,GAAajzB,EAAGhO,EAAGyX,GAC7B,OAAOwpB,GAAannB,EAAGvT,EAAGkR,GAG5B,MAAM6pB,GAAY,IAAIC,IACtB,SAASC,GAAgBC,EAAQzrC,GAC/BA,EAAUA,GAAW,GACrB,MAAM0rC,EAAWD,EAASr7B,KAAKI,UAAUxQ,GACzC,IAAI2rC,EAAYL,GAAUvU,IAAI2U,GAK9B,OAJKC,IACHA,EAAY,IAAIC,KAAKC,aAAaJ,EAAQzrC,GAC1CsrC,GAAUhX,IAAIoX,EAAUC,IAEnBA,EAET,SAASG,GAAaC,EAAKN,EAAQzrC,GACjC,OAAOwrC,GAAgBC,EAAQzrC,GAASgsC,OAAOD,GAGjD,MAAME,GAAwB,SAASC,EAAO7T,GAC5C,MAAO,CACLtZ,EAAEA,GACA,OAAOmtB,EAAQA,EAAQ7T,EAAQtZ,GAEjCotB,SAASvmB,GACPyS,EAAQzS,GAEViX,UAAUjjB,GACR,MAAc,WAAVA,EACKA,EAEQ,UAAVA,EAAoB,OAAS,SAEtCwyB,MAAMrtB,EAAGta,GACP,OAAOsa,EAAIta,GAEb4nC,WAAWttB,EAAGutB,GACZ,OAAOvtB,EAAIutB,KAIXC,GAAwB,WAC5B,MAAO,CACLxtB,EAAEA,GACA,OAAOA,GAETotB,SAASvmB,KAETiX,UAAUjjB,GACR,OAAOA,GAETwyB,MAAMrtB,EAAGta,GACP,OAAOsa,EAAIta,GAEb4nC,WAAWttB,EAAGytB,GACZ,OAAOztB,KAIb,SAAS0tB,GAActyB,EAAK+xB,EAAO7T,GACjC,OAAOle,EAAM8xB,GAAsBC,EAAO7T,GAASkU,KAErD,SAASG,GAAsB9W,EAAK+W,GAClC,IAAInX,EAAOoX,EACO,QAAdD,GAAqC,QAAdA,IACzBnX,EAAQI,EAAIuD,OAAO3D,MACnBoX,EAAW,CACTpX,EAAM2S,iBAAiB,aACvB3S,EAAMqX,oBAAoB,cAE5BrX,EAAMsX,YAAY,YAAaH,EAAW,aAC1C/W,EAAImX,kBAAoBH,GAG5B,SAASI,GAAqBpX,EAAKgX,QAChBzmC,IAAbymC,WACKhX,EAAImX,kBACXnX,EAAIuD,OAAO3D,MAAMsX,YAAY,YAAaF,EAAS,GAAIA,EAAS,KAIpE,SAASK,GAAW1tB,GAClB,MAAiB,UAAbA,EACK,CACL2tB,QAASpsB,GACTqsB,QAASvsB,GACTwsB,UAAWvsB,IAGR,CACLqsB,QAAS3rB,GACT4rB,QAAS,CAACp1B,EAAGC,IAAMD,EAAIC,EACvBo1B,UAAWruB,GAAKA,GAGpB,SAASsuB,IAAiB,MAACvzB,EAAK,IAAEC,EAAG,MAAEsqB,EAAK,KAAE6C,EAAI,MAAE1R,IAClD,MAAO,CACL1b,MAAOA,EAAQuqB,EACftqB,IAAKA,EAAMsqB,EACX6C,KAAMA,IAASntB,EAAMD,EAAQ,GAAKuqB,IAAU,EAC5C7O,MAAAA,GAGJ,SAAS8X,GAAWC,EAAS7I,EAAQ8I,GACnC,MAAM,SAACjuB,EAAUzF,MAAO2zB,EAAY1zB,IAAK2zB,GAAYF,GAC/C,QAACN,EAAO,UAAEE,GAAaH,GAAW1tB,GAClC8kB,EAAQK,EAAOr7B,OACrB,IACIF,EAAGsS,GADH,MAAC3B,EAAK,IAAEC,EAAG,KAAEmtB,GAAQqG,EAEzB,GAAIrG,EAAM,CAGR,IAFAptB,GAASuqB,EACTtqB,GAAOsqB,EACFl7B,EAAI,EAAGsS,EAAO4oB,EAAOl7B,EAAIsS,IAAQtS,EAAG,CACvC,IAAK+jC,EAAQE,EAAU1I,EAAO5qB,EAAQuqB,GAAO9kB,IAAYkuB,EAAYC,GACnE,MAEF5zB,IACAC,IAEFD,GAASuqB,EACTtqB,GAAOsqB,EAKT,OAHItqB,EAAMD,IACRC,GAAOsqB,GAEF,CAACvqB,MAAAA,EAAOC,IAAAA,EAAKmtB,KAAAA,EAAM1R,MAAO+X,EAAQ/X,OAE3C,SAASmY,GAAcJ,EAAS7I,EAAQ8I,GACtC,IAAKA,EACH,MAAO,CAACD,GAEV,MAAM,SAAChuB,EAAUzF,MAAO2zB,EAAY1zB,IAAK2zB,GAAYF,EAC/CnJ,EAAQK,EAAOr7B,QACf,QAAC8jC,EAAO,QAAED,EAAO,UAAEE,GAAaH,GAAW1tB,IAC3C,MAACzF,EAAK,IAAEC,EAAG,KAAEmtB,EAAI,MAAE1R,GAAS8X,GAAWC,EAAS7I,EAAQ8I,GACxDh3B,EAAS,GACf,IAEI/R,EAAOo2B,EAAO+S,EAFdC,GAAS,EACTC,EAAW,KAEf,MAAMC,EAAgB,IAAMb,EAAQO,EAAYG,EAAWnpC,IAA6C,IAAnC0oC,EAAQM,EAAYG,GACnFI,EAAc,IAAmC,IAA7Bb,EAAQO,EAAUjpC,IAAgByoC,EAAQQ,EAAUE,EAAWnpC,GACnFwpC,EAAc,IAAMJ,GAAUE,IAC9BG,EAAa,KAAOL,GAAUG,IACpC,IAAK,IAAI7kC,EAAI2Q,EAAOwtB,EAAOxtB,EAAO3Q,GAAK4Q,IAAO5Q,EAC5C0xB,EAAQ6J,EAAOv7B,EAAIk7B,GACfxJ,EAAM8J,OAGVlgC,EAAQ2oC,EAAUvS,EAAMtb,IACpB9a,IAAUmpC,IAGdC,EAASX,EAAQzoC,EAAOgpC,EAAYC,GACnB,OAAbI,GAAqBG,MACvBH,EAA0C,IAA/BX,EAAQ1oC,EAAOgpC,GAAoBtkC,EAAIm+B,GAEnC,OAAbwG,GAAqBI,MACvB13B,EAAO5M,KAAKyjC,GAAiB,CAACvzB,MAAOg0B,EAAU/zB,IAAK5Q,EAAG+9B,KAAAA,EAAM7C,MAAAA,EAAO7O,MAAAA,KACpEsY,EAAW,MAEbxG,EAAOn+B,EACPykC,EAAYnpC,IAKd,OAHiB,OAAbqpC,GACFt3B,EAAO5M,KAAKyjC,GAAiB,CAACvzB,MAAOg0B,EAAU/zB,IAAAA,EAAKmtB,KAAAA,EAAM7C,MAAAA,EAAO7O,MAAAA,KAE5Dhf,EAET,SAAS23B,GAAen5B,EAAMw4B,GAC5B,MAAMh3B,EAAS,GACT43B,EAAWp5B,EAAKo5B,SACtB,IAAK,IAAIjlC,EAAI,EAAGA,EAAIilC,EAAS/kC,OAAQF,IAAK,CACxC,MAAMklC,EAAMV,GAAcS,EAASjlC,GAAI6L,EAAK0vB,OAAQ8I,GAChDa,EAAIhlC,QACNmN,EAAO5M,QAAQykC,GAGnB,OAAO73B,EAET,SAAS83B,GAAgB5J,EAAQL,EAAO6C,EAAME,GAC5C,IAAIttB,EAAQ,EACRC,EAAMsqB,EAAQ,EAClB,GAAI6C,IAASE,EACX,MAAOttB,EAAQuqB,IAAUK,EAAO5qB,GAAO6qB,KACrC7qB,IAGJ,MAAOA,EAAQuqB,GAASK,EAAO5qB,GAAO6qB,KACpC7qB,IAEFA,GAASuqB,EACL6C,IACFntB,GAAOD,GAET,MAAOC,EAAMD,GAAS4qB,EAAO3qB,EAAMsqB,GAAOM,KACxC5qB,IAGF,OADAA,GAAOsqB,EACA,CAACvqB,MAAAA,EAAOC,IAAAA,GAEjB,SAASw0B,GAAc7J,EAAQ5qB,EAAO2F,EAAKynB,GACzC,MAAM7C,EAAQK,EAAOr7B,OACfmN,EAAS,GACf,IAEIuD,EAFAy0B,EAAO10B,EACPwtB,EAAO5C,EAAO5qB,GAElB,IAAKC,EAAMD,EAAQ,EAAGC,GAAO0F,IAAO1F,EAAK,CACvC,MAAM00B,EAAM/J,EAAO3qB,EAAMsqB,GACrBoK,EAAI9J,MAAQ8J,EAAIC,KACbpH,EAAK3C,OACRuC,GAAO,EACP1wB,EAAO5M,KAAK,CAACkQ,MAAOA,EAAQuqB,EAAOtqB,KAAMA,EAAM,GAAKsqB,EAAO6C,KAAAA,IAC3DptB,EAAQ00B,EAAOC,EAAIC,KAAO30B,EAAM,OAGlCy0B,EAAOz0B,EACHutB,EAAK3C,OACP7qB,EAAQC,IAGZutB,EAAOmH,EAKT,OAHa,OAATD,GACFh4B,EAAO5M,KAAK,CAACkQ,MAAOA,EAAQuqB,EAAOtqB,IAAKy0B,EAAOnK,EAAO6C,KAAAA,IAEjD1wB,EAET,SAASm4B,GAAiB35B,EAAM45B,GAC9B,MAAMlK,EAAS1vB,EAAK0vB,OACd0C,EAAWpyB,EAAKhV,QAAQonC,SACxB/C,EAAQK,EAAOr7B,OACrB,IAAKg7B,EACH,MAAO,GAET,MAAM6C,IAASlyB,EAAK65B,OACd,MAAC/0B,EAAK,IAAEC,GAAOu0B,GAAgB5J,EAAQL,EAAO6C,EAAME,GAC1D,IAAiB,IAAbA,EACF,OAAO0H,GAAc95B,EAAM,CAAC,CAAC8E,MAAAA,EAAOC,IAAAA,EAAKmtB,KAAAA,IAAQxC,EAAQkK,GAE3D,MAAMnvB,EAAM1F,EAAMD,EAAQC,EAAMsqB,EAAQtqB,EAClCg1B,IAAiB/5B,EAAKg6B,WAAuB,IAAVl1B,GAAeC,IAAQsqB,EAAQ,EACxE,OAAOyK,GAAc95B,EAAMu5B,GAAc7J,EAAQ5qB,EAAO2F,EAAKsvB,GAAerK,EAAQkK,GAEtF,SAASE,GAAc95B,EAAMo5B,EAAU1J,EAAQkK,GAC7C,OAAKA,GAAmBA,EAAenM,YAAeiC,EAG/CuK,GAAgBj6B,EAAMo5B,EAAU1J,EAAQkK,GAFtCR,EAIX,SAASa,GAAgBj6B,EAAMo5B,EAAU1J,EAAQkK,GAC/C,MAAMM,EAAel6B,EAAKm6B,OAAO/V,aAC3BgW,EAAYC,GAAUr6B,EAAKhV,UAC1BsvC,cAAe1zB,EAAc5b,SAAS,SAAConC,IAAapyB,EACrDqvB,EAAQK,EAAOr7B,OACfmN,EAAS,GACf,IAAI+4B,EAAYH,EACZt1B,EAAQs0B,EAAS,GAAGt0B,MACpB3Q,EAAI2Q,EACR,SAAS01B,EAASxuB,EAAGzQ,EAAGnH,EAAGqmC,GACzB,MAAMC,EAAMtI,GAAY,EAAI,EAC5B,GAAIpmB,IAAMzQ,EAAV,CAGAyQ,GAAKqjB,EACL,MAAOK,EAAO1jB,EAAIqjB,GAAOM,KACvB3jB,GAAK0uB,EAEP,MAAOhL,EAAOn0B,EAAI8zB,GAAOM,KACvBp0B,GAAKm/B,EAEH1uB,EAAIqjB,IAAU9zB,EAAI8zB,IACpB7tB,EAAO5M,KAAK,CAACkQ,MAAOkH,EAAIqjB,EAAOtqB,IAAKxJ,EAAI8zB,EAAO6C,KAAM99B,EAAGosB,MAAOia,IAC/DF,EAAYE,EACZ31B,EAAQvJ,EAAI8zB,IAGhB,IAAK,MAAMkJ,KAAWa,EAAU,CAC9Bt0B,EAAQstB,EAAWttB,EAAQyzB,EAAQzzB,MACnC,IACI0b,EADA8R,EAAO5C,EAAO5qB,EAAQuqB,GAE1B,IAAKl7B,EAAI2Q,EAAQ,EAAG3Q,GAAKokC,EAAQxzB,IAAK5Q,IAAK,CACzC,MAAMy9B,EAAKlC,EAAOv7B,EAAIk7B,GACtB7O,EAAQ6Z,GAAUT,EAAenM,WAAWvD,GAAcgQ,EAAc,CACtEloC,KAAM,UACN2oC,GAAIrI,EACJhhB,GAAIsgB,EACJgJ,aAAczmC,EAAI,GAAKk7B,EACvBwL,YAAa1mC,EAAIk7B,EACjBzoB,aAAAA,MAEEk0B,GAAata,EAAO+Z,IACtBC,EAAS11B,EAAO3Q,EAAI,EAAGokC,EAAQrG,KAAMqI,GAEvCjI,EAAOV,EACP2I,EAAY/Z,EAEV1b,EAAQ3Q,EAAI,GACdqmC,EAAS11B,EAAO3Q,EAAI,EAAGokC,EAAQrG,KAAMqI,GAGzC,OAAO/4B,EAET,SAAS64B,GAAUrvC,GACjB,MAAO,CACL60B,gBAAiB70B,EAAQ60B,gBACzBkb,eAAgB/vC,EAAQ+vC,eACxBC,WAAYhwC,EAAQgwC,WACpBC,iBAAkBjwC,EAAQiwC,iBAC1BC,gBAAiBlwC,EAAQkwC,gBACzBxV,YAAa16B,EAAQ06B,YACrB5F,YAAa90B,EAAQ80B,aAGzB,SAASgb,GAAata,EAAO+Z,GAC3B,OAAOA,GAAan/B,KAAKI,UAAUglB,KAAWplB,KAAKI,UAAU++B;;;;;;;ACv+E/D,MAAMY,GACJ94B,cACEhX,KAAK+vC,SAAW,KAChB/vC,KAAKgwC,QAAU,IAAI9E,IACnBlrC,KAAKiwC,UAAW,EAChBjwC,KAAKkwC,eAAYpqC,EAEnBqqC,QAAQvb,EAAOwb,EAAOC,EAAM1pC,GAC1B,MAAM2pC,EAAYF,EAAMzQ,UAAUh5B,GAC5B4pC,EAAWH,EAAMI,SACvBF,EAAUtqC,SAAQqH,GAAMA,EAAG,CACzBunB,MAAAA,EACA6b,QAASL,EAAMK,QACfF,SAAAA,EACAG,YAAazhC,KAAKkQ,IAAIkxB,EAAOD,EAAM32B,MAAO82B,OAG9CI,WACM3wC,KAAK+vC,WAGT/vC,KAAKiwC,UAAW,EAChBjwC,KAAK+vC,SAAWn3B,EAAiBvY,KAAK+T,QAAQ,KAC5CpU,KAAK4wC,UACL5wC,KAAK+vC,SAAW,KACZ/vC,KAAKiwC,UACPjwC,KAAK2wC,eAIXC,QAAQP,EAAO39B,KAAKO,OAClB,IAAI49B,EAAY,EAChB7wC,KAAKgwC,QAAQhqC,SAAQ,CAACoqC,EAAOxb,KAC3B,IAAKwb,EAAMU,UAAYV,EAAMjQ,MAAMn3B,OACjC,OAEF,MAAMm3B,EAAQiQ,EAAMjQ,MACpB,IAEIrjB,EAFAhU,EAAIq3B,EAAMn3B,OAAS,EACnB+nC,GAAO,EAEX,KAAOjoC,GAAK,IAAKA,EACfgU,EAAOqjB,EAAMr3B,GACTgU,EAAKk0B,SACHl0B,EAAKm0B,OAASb,EAAMI,WACtBJ,EAAMI,SAAW1zB,EAAKm0B,QAExBn0B,EAAKo0B,KAAKb,GACVU,GAAO,IAEP5Q,EAAMr3B,GAAKq3B,EAAMA,EAAMn3B,OAAS,GAChCm3B,EAAMvqB,OAGNm7B,IACFnc,EAAMmc,OACN/wC,KAAKmwC,QAAQvb,EAAOwb,EAAOC,EAAM,aAE9BlQ,EAAMn3B,SACTonC,EAAMU,SAAU,EAChB9wC,KAAKmwC,QAAQvb,EAAOwb,EAAOC,EAAM,YACjCD,EAAMK,SAAU,GAElBI,GAAa1Q,EAAMn3B,UAErBhJ,KAAKkwC,UAAYG,EACC,IAAdQ,IACF7wC,KAAKiwC,UAAW,GAGpBkB,UAAUvc,GACR,MAAMwc,EAASpxC,KAAKgwC,QACpB,IAAII,EAAQgB,EAAO1a,IAAI9B,GAavB,OAZKwb,IACHA,EAAQ,CACNU,SAAS,EACTL,SAAS,EACTtQ,MAAO,GACPR,UAAW,CACT0R,SAAU,GACVC,SAAU,KAGdF,EAAOnd,IAAIW,EAAOwb,IAEbA,EAETmB,OAAO3c,EAAO4c,EAAOC,GACnBzxC,KAAKmxC,UAAUvc,GAAO+K,UAAU6R,GAAOjoC,KAAKkoC,GAE9ClxC,IAAIq0B,EAAOuL,GACJA,GAAUA,EAAMn3B,QAGrBhJ,KAAKmxC,UAAUvc,GAAOuL,MAAM52B,QAAQ42B,GAEtCpjB,IAAI6X,GACF,OAAO50B,KAAKmxC,UAAUvc,GAAOuL,MAAMn3B,OAAS,EAE9CyQ,MAAMmb,GACJ,MAAMwb,EAAQpwC,KAAKgwC,QAAQtZ,IAAI9B,GAC1Bwb,IAGLA,EAAMU,SAAU,EAChBV,EAAM32B,MAAQ/G,KAAKO,MACnBm9B,EAAMI,SAAWJ,EAAMjQ,MAAMuR,QAAO,CAACC,EAAKvD,IAAQn/B,KAAKmQ,IAAIuyB,EAAKvD,EAAIwD,YAAY,GAChF5xC,KAAK2wC,YAEPG,QAAQlc,GACN,IAAK50B,KAAKiwC,SACR,OAAO,EAET,MAAMG,EAAQpwC,KAAKgwC,QAAQtZ,IAAI9B,GAC/B,SAAKwb,GAAUA,EAAMU,SAAYV,EAAMjQ,MAAMn3B,QAK/CqlC,KAAKzZ,GACH,MAAMwb,EAAQpwC,KAAKgwC,QAAQtZ,IAAI9B,GAC/B,IAAKwb,IAAUA,EAAMjQ,MAAMn3B,OACzB,OAEF,MAAMm3B,EAAQiQ,EAAMjQ,MACpB,IAAIr3B,EAAIq3B,EAAMn3B,OAAS,EACvB,KAAOF,GAAK,IAAKA,EACfq3B,EAAMr3B,GAAGpC,SAEX0pC,EAAMjQ,MAAQ,GACdngC,KAAKmwC,QAAQvb,EAAOwb,EAAO19B,KAAKO,MAAO,YAEzCD,OAAO4hB,GACL,OAAO50B,KAAKgwC,QAAQ9M,OAAOtO,IAG/B,IAAIid,GAAW,IAAI/B,GAEnB,MAAMte,GAAc,cACdsgB,GAAgB,CACpBtnC,QAAQmC,EAAMilB,EAAImgB,GAChB,OAAOA,EAAS,GAAMngB,EAAKjlB,GAE7BkmB,MAAMlmB,EAAMilB,EAAImgB,GACd,MAAMC,EAAKnf,GAAMlmB,GAAQ6kB,IACnBuB,EAAKif,EAAGrf,OAASE,GAAMjB,GAAMJ,IACnC,OAAOuB,GAAMA,EAAGJ,MACZI,EAAGH,IAAIof,EAAID,GAAQ7sB,YACnB0M,GAEN1lB,OAAOS,EAAMilB,EAAImgB,GACf,OAAOplC,GAAQilB,EAAKjlB,GAAQolC,IAGhC,MAAME,GACJj7B,YAAYk7B,EAAK/jC,EAAQK,EAAMojB,GAC7B,MAAMugB,EAAehkC,EAAOK,GAC5BojB,EAAK3vB,GAAQ,CAACiwC,EAAItgB,GAAIA,EAAIugB,EAAcD,EAAIvlC,OAC5C,MAAMA,EAAO1K,GAAQ,CAACiwC,EAAIvlC,KAAMwlC,EAAcvgB,IAC9C5xB,KAAKgxC,SAAU,EACfhxC,KAAKoyC,IAAMF,EAAI7kC,IAAMykC,GAAcI,EAAIvrC,aAAegG,GACtD3M,KAAKqyC,QAAU7wB,GAAQ0wB,EAAII,SAAW9wB,GAAQC,OAC9CzhB,KAAKuyC,OAAStjC,KAAKC,MAAMwD,KAAKO,OAASi/B,EAAI94B,OAAS,IACpDpZ,KAAK4xC,UAAY5xC,KAAKixC,OAAShiC,KAAKC,MAAMgjC,EAAI1B,UAC9CxwC,KAAKwuC,QAAU0D,EAAIrL,KACnB7mC,KAAKwyC,QAAUrkC,EACfnO,KAAKyyC,MAAQjkC,EACbxO,KAAK0yC,MAAQ/lC,EACb3M,KAAK2yC,IAAM/gB,EACX5xB,KAAK4yC,eAAY9sC,EAEnB+sC,SACE,OAAO7yC,KAAKgxC,QAEd8B,OAAOZ,EAAKtgB,EAAIye,GACd,GAAIrwC,KAAKgxC,QAAS,CAChBhxC,KAAKmwC,SAAQ,GACb,MAAMgC,EAAenyC,KAAKwyC,QAAQxyC,KAAKyyC,OACjCM,EAAU1C,EAAOrwC,KAAKuyC,OACtBS,EAAShzC,KAAK4xC,UAAYmB,EAChC/yC,KAAKuyC,OAASlC,EACdrwC,KAAK4xC,UAAY3iC,KAAKC,MAAMD,KAAKmQ,IAAI4zB,EAAQd,EAAI1B,WACjDxwC,KAAKixC,QAAU8B,EACf/yC,KAAKwuC,QAAU0D,EAAIrL,KACnB7mC,KAAK2yC,IAAM1wC,GAAQ,CAACiwC,EAAItgB,GAAIA,EAAIugB,EAAcD,EAAIvlC,OAClD3M,KAAK0yC,MAAQzwC,GAAQ,CAACiwC,EAAIvlC,KAAMwlC,EAAcvgB,KAGlDlrB,SACM1G,KAAKgxC,UACPhxC,KAAKkxC,KAAKx+B,KAAKO,OACfjT,KAAKgxC,SAAU,EACfhxC,KAAKmwC,SAAQ,IAGjBe,KAAKb,GACH,MAAM0C,EAAU1C,EAAOrwC,KAAKuyC,OACtB/B,EAAWxwC,KAAK4xC,UAChBpjC,EAAOxO,KAAKyyC,MACZ9lC,EAAO3M,KAAK0yC,MACZ7L,EAAO7mC,KAAKwuC,MACZ5c,EAAK5xB,KAAK2yC,IAChB,IAAIZ,EAEJ,GADA/xC,KAAKgxC,QAAUrkC,IAASilB,IAAOiV,GAASkM,EAAUvC,IAC7CxwC,KAAKgxC,QAGR,OAFAhxC,KAAKwyC,QAAQhkC,GAAQojB,OACrB5xB,KAAKmwC,SAAQ,GAGX4C,EAAU,EACZ/yC,KAAKwyC,QAAQhkC,GAAQ7B,GAGvBolC,EAAUgB,EAAUvC,EAAY,EAChCuB,EAASlL,GAAQkL,EAAS,EAAI,EAAIA,EAASA,EAC3CA,EAAS/xC,KAAKqyC,QAAQpjC,KAAKkQ,IAAI,EAAGlQ,KAAKmQ,IAAI,EAAG2yB,KAC9C/xC,KAAKwyC,QAAQhkC,GAAQxO,KAAKoyC,IAAIzlC,EAAMilB,EAAImgB,IAE1CkB,OACE,MAAM7qC,EAAWpI,KAAK4yC,YAAc5yC,KAAK4yC,UAAY,IACrD,OAAO,IAAI5wC,SAAQ,CAAC89B,EAAKoT,KACvB9qC,EAASmB,KAAK,CAACu2B,IAAAA,EAAKoT,IAAAA,OAGxB/C,QAAQgD,GACN,MAAM5uC,EAAS4uC,EAAW,MAAQ,MAC5B/qC,EAAWpI,KAAK4yC,WAAa,GACnC,IAAK,IAAI9pC,EAAI,EAAGA,EAAIV,EAASY,OAAQF,IACnCV,EAASU,GAAGvE,MAKlB,MAAM6uC,GAAU,CAAC,IAAK,IAAK,cAAe,SAAU,WAC9CC,GAAS,CAAC,QAAS,cAAe,mBACxChsC,GAAS4sB,IAAI,YAAa,CACxB7a,WAAOtT,EACP0qC,SAAU,IACV8B,OAAQ,eACRjlC,QAAIvH,EACJ6G,UAAM7G,EACN+gC,UAAM/gC,EACN8rB,QAAI9rB,EACJa,UAAMb,IAER,MAAMwtC,GAAmB9mC,OAAOqC,KAAKxH,GAASktB,WAC9CltB,GAASovB,SAAS,YAAa,CAC7Be,WAAW,EACXD,YAAY,EACZF,YAAcxtB,GAAkB,eAATA,GAAkC,eAATA,GAAkC,OAATA,IAE3ExC,GAAS4sB,IAAI,aAAc,CACzBof,OAAQ,CACN1sC,KAAM,QACN4sC,WAAYF,IAEdD,QAAS,CACPzsC,KAAM,SACN4sC,WAAYH,MAGhB/rC,GAASovB,SAAS,aAAc,CAC9Be,UAAW,cAEbnwB,GAAS4sB,IAAI,cAAe,CAC1B4e,OAAQ,CACNte,UAAW,CACTic,SAAU,MAGdgD,OAAQ,CACNjf,UAAW,CACTic,SAAU,IAGdiD,KAAM,CACJC,WAAY,CACVL,OAAQ,CACN1mC,KAAM,eAERgnC,QAAS,CACPhtC,KAAM,UACN6pC,SAAU,KAIhBoD,KAAM,CACJF,WAAY,CACVL,OAAQ,CACNzhB,GAAI,eAEN+hB,QAAS,CACPhtC,KAAM,UACN2rC,OAAQ,SACRjlC,GAAIwE,GAAS,EAAJA,OAKjB,MAAMgiC,GACJ78B,YAAY4d,EAAO7yB,GACjB/B,KAAK8uC,OAASla,EACd50B,KAAK8zC,YAAc,IAAI5I,IACvBlrC,KAAK+zC,UAAUhyC,GAEjBgyC,UAAUhyC,GACR,IAAK+O,EAAS/O,GACZ,OAEF,MAAMiyC,EAAgBh0C,KAAK8zC,YAC3BtnC,OAAO6L,oBAAoBtW,GAAQiE,SAAQE,IACzC,MAAMgsC,EAAMnwC,EAAOmE,GACnB,IAAK4K,EAASohC,GACZ,OAEF,MAAMiB,EAAW,GACjB,IAAK,MAAMc,KAAUX,GACnBH,EAASc,GAAU/B,EAAI+B,IAExB5lC,EAAQ6jC,EAAIqB,aAAerB,EAAIqB,YAAc,CAACrtC,IAAMF,SAASwI,IACxDA,IAAStI,GAAQ8tC,EAAcj3B,IAAIvO,IACrCwlC,EAAc/f,IAAIzlB,EAAM2kC,SAKhCe,gBAAgB/lC,EAAQimB,GACtB,MAAM+f,EAAa/f,EAAOz0B,QACpBA,EAAUy0C,GAAqBjmC,EAAQgmC,GAC7C,IAAKx0C,EACH,MAAO,GAET,MAAM+zC,EAAa1zC,KAAKq0C,kBAAkB10C,EAASw0C,GAOnD,OANIA,EAAWG,SACbC,GAASpmC,EAAOxO,QAAQ60C,YAAaL,GAAYvrC,MAAK,KACpDuF,EAAOxO,QAAUw0C,KAChB,SAGET,EAETW,kBAAkBlmC,EAAQimB,GACxB,MAAM4f,EAAgBh0C,KAAK8zC,YACrBJ,EAAa,GACb5C,EAAU3iC,EAAOqmC,cAAgBrmC,EAAOqmC,YAAc,IACtDx8B,EAAQxL,OAAOqC,KAAKulB,GACpBic,EAAO39B,KAAKO,MAClB,IAAInK,EACJ,IAAKA,EAAIkP,EAAMhP,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACtC,MAAM0F,EAAOwJ,EAAMlP,GACnB,GAAuB,MAAnB0F,EAAK2F,OAAO,GACd,SAEF,GAAa,YAAT3F,EAAoB,CACtBklC,EAAWnqC,QAAQvJ,KAAKk0C,gBAAgB/lC,EAAQimB,IAChD,SAEF,MAAMhwB,EAAQgwB,EAAO5lB,GACrB,IAAI+lB,EAAYuc,EAAQtiC,GACxB,MAAM0jC,EAAM8B,EAActd,IAAIloB,GAC9B,GAAI+lB,EAAW,CACb,GAAI2d,GAAO3d,EAAUse,SAAU,CAC7Bte,EAAUue,OAAOZ,EAAK9tC,EAAOisC,GAC7B,SAEA9b,EAAU7tB,SAGTwrC,GAAQA,EAAI1B,UAIjBM,EAAQtiC,GAAQ+lB,EAAY,IAAI0d,GAAUC,EAAK/jC,EAAQK,EAAMpK,GAC7DsvC,EAAWnqC,KAAKgrB,IAJdpmB,EAAOK,GAAQpK,EAMnB,OAAOsvC,EAETZ,OAAO3kC,EAAQimB,GACb,GAA8B,IAA1Bp0B,KAAK8zC,YAAYj3B,KAEnB,YADArQ,OAAOQ,OAAOmB,EAAQimB,GAGxB,MAAMsf,EAAa1zC,KAAKq0C,kBAAkBlmC,EAAQimB,GAClD,OAAIsf,EAAW1qC,QACb6oC,GAAStxC,IAAIP,KAAK8uC,OAAQ4E,IACnB,QAFT,GAMJ,SAASa,GAASb,EAAYH,GAC5B,MAAMzC,EAAU,GACVjiC,EAAOrC,OAAOqC,KAAK0kC,GACzB,IAAK,IAAIzqC,EAAI,EAAGA,EAAI+F,EAAK7F,OAAQF,IAAK,CACpC,MAAM2rC,EAAOf,EAAW7kC,EAAK/F,IACzB2rC,GAAQA,EAAK5B,UACf/B,EAAQvnC,KAAKkrC,EAAKxB,QAGtB,OAAOjxC,QAAQmG,IAAI2oC,GAErB,SAASsD,GAAqBjmC,EAAQgmC,GACpC,IAAKA,EACH,OAEF,IAAIx0C,EAAUwO,EAAOxO,QACrB,GAAKA,EAOL,OAHIA,EAAQ20C,UACVnmC,EAAOxO,QAAUA,EAAU6M,OAAOQ,OAAO,GAAIrN,EAAS,CAAC20C,SAAS,EAAOE,YAAa,MAE/E70C,EANLwO,EAAOxO,QAAUw0C,EASrB,SAASO,GAAUre,EAAOse,GACxB,MAAMn+B,EAAO6f,GAASA,EAAM12B,SAAW,GACjCob,EAAUvE,EAAKuE,QACfoE,OAAmBrZ,IAAb0Q,EAAK2I,IAAoBw1B,EAAkB,EACjDv1B,OAAmBtZ,IAAb0Q,EAAK4I,IAAoBu1B,EAAkB,EACvD,MAAO,CACLl7B,MAAOsB,EAAUqE,EAAMD,EACvBzF,IAAKqB,EAAUoE,EAAMC,GAGzB,SAASw1B,GAAYC,EAAQC,EAAQH,GACnC,IAAwB,IAApBA,EACF,OAAO,EAET,MAAMj2B,EAAIg2B,GAAUG,EAAQF,GACtBh2B,EAAI+1B,GAAUI,EAAQH,GAC5B,MAAO,CACLha,IAAKhc,EAAEjF,IACPG,MAAO6E,EAAEhF,IACTkhB,OAAQjc,EAAElF,MACVG,KAAM8E,EAAEjF,OAGZ,SAASs7B,GAAO3wC,GACd,IAAIgd,EAAGyD,EAAGlN,EAAG5O,EASb,OARI+H,EAAS1M,IACXgd,EAAIhd,EAAMu2B,IACV9V,EAAIzgB,EAAMyV,MACVlC,EAAIvT,EAAMw2B,OACV7xB,EAAI3E,EAAMwV,MAEVwH,EAAIyD,EAAIlN,EAAI5O,EAAI3E,EAEX,CACLu2B,IAAKvZ,EACLvH,MAAOgL,EACP+V,OAAQjjB,EACRiC,KAAM7Q,EACNisC,UAAoB,IAAV5wC,GAGd,SAAS6wC,GAAwBrgB,EAAOsgB,GACtC,MAAMrmC,EAAO,GACPsmC,EAAWvgB,EAAMwgB,uBAAuBF,GAC9C,IAAIpsC,EAAGsS,EACP,IAAKtS,EAAI,EAAGsS,EAAO+5B,EAASnsC,OAAQF,EAAIsS,IAAQtS,EAC9C+F,EAAKtF,KAAK4rC,EAASrsC,GAAGU,OAExB,OAAOqF,EAET,SAASwmC,GAAW/oC,EAAOlI,EAAOkxC,EAAS31C,EAAU,IACnD,MAAMkP,EAAOvC,EAAMuC,KACb0mC,EAA8B,WAAjB51C,EAAQi2B,KAC3B,IAAI9sB,EAAGsS,EAAMG,EAAci6B,EAC3B,GAAc,OAAVpxC,EAAJ,CAGA,IAAK0E,EAAI,EAAGsS,EAAOvM,EAAK7F,OAAQF,EAAIsS,IAAQtS,EAAG,CAE7C,GADAyS,GAAgB1M,EAAK/F,GACjByS,IAAiB+5B,EAAS,CAC5B,GAAI31C,EAAQwI,IACV,SAEF,MAEFqtC,EAAalpC,EAAM8nB,OAAO7Y,GACtBpB,EAAeq7B,KAAgBD,GAAyB,IAAVnxC,GAAeuZ,EAAKvZ,KAAWuZ,EAAK63B,MACpFpxC,GAASoxC,GAGb,OAAOpxC,GAET,SAASqxC,GAAyBpzC,GAChC,MAAMwM,EAAOrC,OAAOqC,KAAKxM,GACnBqzC,EAAQ,IAAItqC,MAAMyD,EAAK7F,QAC7B,IAAIF,EAAGsS,EAAMlV,EACb,IAAK4C,EAAI,EAAGsS,EAAOvM,EAAK7F,OAAQF,EAAIsS,IAAQtS,EAC1C5C,EAAM2I,EAAK/F,GACX4sC,EAAM5sC,GAAK,CACT4V,EAAGxY,EACHyY,EAAGtc,EAAK6D,IAGZ,OAAOwvC,EAET,SAASC,GAAUtf,EAAO0N,GACxB,MAAM6R,EAAUvf,GAASA,EAAM12B,QAAQi2C,QACvC,OAAOA,QAAwB9vC,IAAZ8vC,QAAwC9vC,IAAfi+B,EAAKz3B,MAEnD,SAASupC,GAAYC,EAAYC,EAAYhS,GAC3C,MAAO,GAAG+R,EAAW1oC,MAAM2oC,EAAW3oC,MAAM22B,EAAKz3B,OAASy3B,EAAKp9B,OAEjE,SAASqvC,GAAc3f,GACrB,MAAM,IAAClX,EAAG,IAAEC,EAAG,WAAE62B,EAAU,WAAEC,GAAc7f,EAAM2f,gBACjD,MAAO,CACL72B,IAAK82B,EAAa92B,EAAM/E,OAAO+7B,kBAC/B/2B,IAAK82B,EAAa92B,EAAMhF,OAAOiD,mBAGnC,SAAS+4B,GAAiBC,EAAQC,EAAUC,GAC1C,MAAMC,EAAWH,EAAOC,KAAcD,EAAOC,GAAY,IACzD,OAAOE,EAASD,KAAgBC,EAASD,GAAc,IAEzD,SAASE,GAAoBnqC,EAAOoqC,EAAQC,EAAUhwC,GACpD,IAAK,MAAMo9B,KAAQ2S,EAAOE,wBAAwBjwC,GAAMoU,UAAW,CACjE,MAAM3W,EAAQkI,EAAMy3B,EAAKv6B,OACzB,GAAKmtC,GAAYvyC,EAAQ,IAAQuyC,GAAYvyC,EAAQ,EACnD,OAAO2/B,EAAKv6B,MAGhB,OAAO,KAET,SAASqtC,GAAaC,EAAYviC,GAChC,MAAM,MAACqgB,EAAOmiB,YAAahT,GAAQ+S,EAC7BT,EAASzhB,EAAMoiB,UAAYpiB,EAAMoiB,QAAU,KAC3C,OAAC/S,EAAM,OAAEyS,EAAQltC,MAAO+R,GAAgBwoB,EACxCkT,EAAQhT,EAAOiT,KACfC,EAAQT,EAAOQ,KACfhxC,EAAM2vC,GAAY5R,EAAQyS,EAAQ3S,GAClC3oB,EAAO7G,EAAOvL,OACpB,IAAIsD,EACJ,IAAK,IAAIxD,EAAI,EAAGA,EAAIsS,IAAQtS,EAAG,CAC7B,MAAMgU,EAAOvI,EAAOzL,IACb,CAACmuC,GAAQztC,EAAO,CAAC2tC,GAAQ/yC,GAAS0Y,EACnCs6B,EAAat6B,EAAKk6B,UAAYl6B,EAAKk6B,QAAU,IACnD1qC,EAAQ8qC,EAAWD,GAASf,GAAiBC,EAAQnwC,EAAKsD,GAC1D8C,EAAMiP,GAAgBnX,EACtBkI,EAAM+qC,KAAOZ,GAAoBnqC,EAAOoqC,GAAQ,EAAM3S,EAAKp9B,MAC3D2F,EAAMgrC,QAAUb,GAAoBnqC,EAAOoqC,GAAQ,EAAO3S,EAAKp9B,OAGnE,SAAS4wC,GAAgB3iB,EAAOsiB,GAC9B,MAAM5gB,EAAS1B,EAAM0B,OACrB,OAAO9pB,OAAOqC,KAAKynB,GAAQne,QAAOjS,GAAOowB,EAAOpwB,GAAKgxC,OAASA,IAAM5rC,QAEtE,SAASksC,GAAqBr3C,EAAQqJ,GACpC,OAAOq1B,GAAc1+B,EACnB,CACE0yC,QAAQ,EACR4E,aAAS3xC,EACTyV,aAAc/R,EACdA,MAAAA,EACAosB,KAAM,UACNjvB,KAAM,YAIZ,SAAS+wC,GAAkBv3C,EAAQqJ,EAAOo+B,GACxC,OAAO/I,GAAc1+B,EAAQ,CAC3B0yC,QAAQ,EACR8E,UAAWnuC,EACX+K,YAAQzO,EACR8xC,SAAK9xC,EACL8hC,QAAAA,EACAp+B,MAAAA,EACAosB,KAAM,UACNjvB,KAAM,SAGV,SAASkxC,GAAY9T,EAAM5D,GACzB,MAAM5kB,EAAewoB,EAAK+S,WAAWttC,MAC/B0tC,EAAOnT,EAAK2S,QAAU3S,EAAK2S,OAAOQ,KACxC,GAAKA,EAAL,CAGA/W,EAAQA,GAAS4D,EAAK+T,QACtB,IAAK,MAAMvjC,KAAU4rB,EAAO,CAC1B,MAAMkW,EAAS9hC,EAAOyiC,QACtB,IAAKX,QAA2BvwC,IAAjBuwC,EAAOa,SAAsDpxC,IAA/BuwC,EAAOa,GAAM37B,GACxD,cAEK86B,EAAOa,GAAM37B,KAGxB,MAAMw8B,GAAsBniB,GAAkB,UAATA,GAA6B,SAATA,EACnDoiB,GAAmB,CAACC,EAAQC,IAAWA,EAASD,EAASzrC,OAAOQ,OAAO,GAAIirC,GAC3EE,GAAc,CAACC,EAAUrU,EAAMnP,IAAUwjB,IAAarU,EAAKsU,QAAUtU,EAAKuU,UAC3E,CAACzpC,KAAMomC,GAAwBrgB,GAAO,GAAOR,OAAQ,MAC1D,MAAMmkB,GACJvhC,YAAY4d,EAAOrZ,GACjBvb,KAAK40B,MAAQA,EACb50B,KAAKw4C,KAAO5jB,EAAMW,IAClBv1B,KAAKwJ,MAAQ+R,EACbvb,KAAKy4C,gBAAkB,GACvBz4C,KAAK+2C,YAAc/2C,KAAK04C,UACxB14C,KAAK24C,MAAQ34C,KAAK+2C,YAAYpwC,KAC9B3G,KAAKL,aAAUmG,EACf9F,KAAKkkC,UAAW,EAChBlkC,KAAK44C,WAAQ9yC,EACb9F,KAAK64C,iBAAc/yC,EACnB9F,KAAK84C,oBAAiBhzC,EACtB9F,KAAK+4C,gBAAajzC,EAClB9F,KAAKg5C,gBAAalzC,EAClB9F,KAAKi5C,qBAAsB,EAC3Bj5C,KAAKk5C,oBAAqB,EAC1Bl5C,KAAKm5C,cAAWrzC,EAChB9F,KAAKo5C,UAAY,GACjBp5C,KAAKq5C,aAEPA,aACE,MAAMtV,EAAO/jC,KAAK+2C,YAClB/2C,KAAK+zC,YACL/zC,KAAKs5C,aACLvV,EAAKuU,SAAW3C,GAAU5R,EAAK2S,OAAQ3S,GACvC/jC,KAAKu5C,cAEPC,YAAYj+B,GACNvb,KAAKwJ,QAAU+R,GACjBs8B,GAAY73C,KAAK+2C,aAEnB/2C,KAAKwJ,MAAQ+R,EAEf+9B,aACE,MAAM1kB,EAAQ50B,KAAK40B,MACbmP,EAAO/jC,KAAK+2C,YACZU,EAAUz3C,KAAKy5C,aACfC,EAAW,CAACxC,EAAMx4B,EAAGC,EAAGkG,IAAe,MAATqyB,EAAex4B,EAAa,MAATw4B,EAAeryB,EAAIlG,EACpEg7B,EAAM5V,EAAK6V,QAAUp/B,EAAei9B,EAAQmC,QAASrC,GAAgB3iB,EAAO,MAC5EilB,EAAM9V,EAAK+V,QAAUt/B,EAAei9B,EAAQqC,QAASvC,GAAgB3iB,EAAO,MAC5EmlB,EAAMhW,EAAKiW,QAAUx/B,EAAei9B,EAAQuC,QAASzC,GAAgB3iB,EAAO,MAC5Ec,EAAYqO,EAAKrO,UACjBukB,EAAMlW,EAAKmW,QAAUR,EAAShkB,EAAWikB,EAAKE,EAAKE,GACnDI,EAAMpW,EAAKqW,QAAUV,EAAShkB,EAAWmkB,EAAKF,EAAKI,GACzDhW,EAAK8Q,OAAS70C,KAAKq6C,cAAcV,GACjC5V,EAAK+Q,OAAS90C,KAAKq6C,cAAcR,GACjC9V,EAAKuW,OAASt6C,KAAKq6C,cAAcN,GACjChW,EAAKE,OAASjkC,KAAKq6C,cAAcJ,GACjClW,EAAK2S,OAAS12C,KAAKq6C,cAAcF,GAEnCV,aACE,OAAOz5C,KAAK40B,MAAMvyB,KAAKqyB,SAAS10B,KAAKwJ,OAEvCkvC,UACE,OAAO14C,KAAK40B,MAAM2lB,eAAev6C,KAAKwJ,OAExC6wC,cAAcG,GACZ,OAAOx6C,KAAK40B,MAAM0B,OAAOkkB,GAE3BC,eAAepkB,GACb,MAAM0N,EAAO/jC,KAAK+2C,YAClB,OAAO1gB,IAAU0N,EAAKE,OAClBF,EAAK2S,OACL3S,EAAKE,OAEXyW,QACE16C,KAAK4wC,QAAQ,SAEf+J,WACE,MAAM5W,EAAO/jC,KAAK+2C,YACd/2C,KAAK44C,OACP5Y,GAAoBhgC,KAAK44C,MAAO54C,MAE9B+jC,EAAKuU,UACPT,GAAY9T,GAGhB6W,aACE,MAAMnD,EAAUz3C,KAAKy5C,aACfp3C,EAAOo1C,EAAQp1C,OAASo1C,EAAQp1C,KAAO,IACvCu2C,EAAQ54C,KAAK44C,MACnB,GAAI9nC,EAASzO,GACXrC,KAAK44C,MAAQnD,GAAyBpzC,QACjC,GAAIu2C,IAAUv2C,EAAM,CACzB,GAAIu2C,EAAO,CACT5Y,GAAoB4Y,EAAO54C,MAC3B,MAAM+jC,EAAO/jC,KAAK+2C,YAClBc,GAAY9T,GACZA,EAAK+T,QAAU,GAEbz1C,GAAQmK,OAAOquC,aAAax4C,IAC9Bo9B,GAAkBp9B,EAAMrC,MAE1BA,KAAKo5C,UAAY,GACjBp5C,KAAK44C,MAAQv2C,GAGjBk3C,cACE,MAAMxV,EAAO/jC,KAAK+2C,YAClB/2C,KAAK46C,aACD56C,KAAK86C,qBACP/W,EAAK0T,QAAU,IAAIz3C,KAAK86C,oBAG5BC,sBAAsBC,GACpB,MAAMjX,EAAO/jC,KAAK+2C,YACZU,EAAUz3C,KAAKy5C,aACrB,IAAIwB,GAAe,EACnBj7C,KAAK46C,aACL,MAAMM,EAAanX,EAAKuU,SACxBvU,EAAKuU,SAAW3C,GAAU5R,EAAK2S,OAAQ3S,GACnCA,EAAKz3B,QAAUmrC,EAAQnrC,QACzB2uC,GAAe,EACfpD,GAAY9T,GACZA,EAAKz3B,MAAQmrC,EAAQnrC,OAEvBtM,KAAKm7C,gBAAgBH,IACjBC,GAAgBC,IAAenX,EAAKuU,WACtCzB,GAAa72C,KAAM+jC,EAAK+T,SAG5B/D,YACE,MAAMhyC,EAAS/B,KAAK40B,MAAM7yB,OACpBq5C,EAAYr5C,EAAOs5C,iBAAiBr7C,KAAK24C,OACzCrY,EAASv+B,EAAOu5C,gBAAgBt7C,KAAKy5C,aAAc2B,GAAW,GACpEp7C,KAAKL,QAAUoC,EAAOw5C,eAAejb,EAAQtgC,KAAK+4B,cAClD/4B,KAAKkkC,SAAWlkC,KAAKL,QAAQu2B,QAC7Bl2B,KAAKy4C,gBAAkB,GAEzBzoC,MAAMyJ,EAAOuqB,GACX,MAAO+S,YAAahT,EAAM6U,MAAOv2C,GAAQrC,MACnC,OAACikC,EAAM,SAAEqU,GAAYvU,EACrBkT,EAAQhT,EAAOiT,KACrB,IAEIpuC,EAAGslC,EAAK75B,EAFRinC,EAAmB,IAAV/hC,GAAeuqB,IAAU3hC,EAAK2G,QAAgB+6B,EAAK0X,QAC5DxU,EAAOxtB,EAAQ,GAAKsqB,EAAK+T,QAAQr+B,EAAQ,GAE7C,IAAsB,IAAlBzZ,KAAKkkC,SACPH,EAAK+T,QAAUz1C,EACf0hC,EAAK0X,SAAU,EACflnC,EAASlS,MACJ,CAEHkS,EADElG,EAAQhM,EAAKoX,IACNzZ,KAAK07C,eAAe3X,EAAM1hC,EAAMoX,EAAOuqB,GACvClzB,EAASzO,EAAKoX,IACdzZ,KAAK27C,gBAAgB5X,EAAM1hC,EAAMoX,EAAOuqB,GAExChkC,KAAK47C,mBAAmB7X,EAAM1hC,EAAMoX,EAAOuqB,GAEtD,MAAM6X,EAA6B,IAAqB,OAAfzN,EAAI6I,IAAoBhQ,GAAQmH,EAAI6I,GAAShQ,EAAKgQ,GAC3F,IAAKnuC,EAAI,EAAGA,EAAIk7B,IAASl7B,EACvBi7B,EAAK+T,QAAQhvC,EAAI2Q,GAAS20B,EAAM75B,EAAOzL,GACnC0yC,IACEK,MACFL,GAAS,GAEXvU,EAAOmH,GAGXrK,EAAK0X,QAAUD,EAEblD,GACFzB,GAAa72C,KAAMuU,GAGvBqnC,mBAAmB7X,EAAM1hC,EAAMoX,EAAOuqB,GACpC,MAAM,OAACC,EAAM,OAAEyS,GAAU3S,EACnBkT,EAAQhT,EAAOiT,KACfC,EAAQT,EAAOQ,KACf4E,EAAS7X,EAAO8X,YAChBC,EAAc/X,IAAWyS,EACzBniC,EAAS,IAAInJ,MAAM44B,GACzB,IAAIl7B,EAAGsS,EAAM5R,EACb,IAAKV,EAAI,EAAGsS,EAAO4oB,EAAOl7B,EAAIsS,IAAQtS,EACpCU,EAAQV,EAAI2Q,EACZlF,EAAOzL,GAAK,CACV,CAACmuC,GAAQ+E,GAAe/X,EAAOj0B,MAAM8rC,EAAOtyC,GAAQA,GACpD,CAAC2tC,GAAQT,EAAO1mC,MAAM3N,EAAKmH,GAAQA,IAGvC,OAAO+K,EAETmnC,eAAe3X,EAAM1hC,EAAMoX,EAAOuqB,GAChC,MAAM,OAAC6Q,EAAM,OAAEC,GAAU/Q,EACnBxvB,EAAS,IAAInJ,MAAM44B,GACzB,IAAIl7B,EAAGsS,EAAM5R,EAAOsT,EACpB,IAAKhU,EAAI,EAAGsS,EAAO4oB,EAAOl7B,EAAIsS,IAAQtS,EACpCU,EAAQV,EAAI2Q,EACZqD,EAAOza,EAAKmH,GACZ+K,EAAOzL,GAAK,CACV4V,EAAGm2B,EAAO7kC,MAAM8M,EAAK,GAAItT,GACzBmV,EAAGm2B,EAAO9kC,MAAM8M,EAAK,GAAItT,IAG7B,OAAO+K,EAETonC,gBAAgB5X,EAAM1hC,EAAMoX,EAAOuqB,GACjC,MAAM,OAAC6Q,EAAM,OAAEC,GAAU/Q,GACnB,SAACkY,EAAW,IAAG,SAAEC,EAAW,KAAOl8C,KAAKkkC,SACxC3vB,EAAS,IAAInJ,MAAM44B,GACzB,IAAIl7B,EAAGsS,EAAM5R,EAAOsT,EACpB,IAAKhU,EAAI,EAAGsS,EAAO4oB,EAAOl7B,EAAIsS,IAAQtS,EACpCU,EAAQV,EAAI2Q,EACZqD,EAAOza,EAAKmH,GACZ+K,EAAOzL,GAAK,CACV4V,EAAGm2B,EAAO7kC,MAAMwM,EAAiBM,EAAMm/B,GAAWzyC,GAClDmV,EAAGm2B,EAAO9kC,MAAMwM,EAAiBM,EAAMo/B,GAAW1yC,IAGtD,OAAO+K,EAET4nC,UAAU3yC,GACR,OAAOxJ,KAAK+2C,YAAYe,QAAQtuC,GAElC4yC,eAAe5yC,GACb,OAAOxJ,KAAK+2C,YAAY10C,KAAKmH,GAE/B6rC,WAAWhf,EAAO9hB,EAAQqhB,GACxB,MAAMhB,EAAQ50B,KAAK40B,MACbmP,EAAO/jC,KAAK+2C,YACZ3yC,EAAQmQ,EAAO8hB,EAAM6gB,MACrB5qC,EAAQ,CACZuC,KAAMomC,GAAwBrgB,GAAO,GACrCR,OAAQ7f,EAAOyiC,QAAQ3gB,EAAM6gB,OAE/B,OAAO7B,GAAW/oC,EAAOlI,EAAO2/B,EAAKv6B,MAAO,CAACosB,KAAAA,IAE/CymB,sBAAsBx+B,EAAOwY,EAAO9hB,EAAQjI,GAC1C,MAAMgwC,EAAc/nC,EAAO8hB,EAAM6gB,MACjC,IAAI9yC,EAAwB,OAAhBk4C,EAAuBC,IAAMD,EACzC,MAAMloB,EAAS9nB,GAASiI,EAAOyiC,QAAQ3gB,EAAM6gB,MACzC5qC,GAAS8nB,IACX9nB,EAAM8nB,OAASA,EACfhwB,EAAQixC,GAAW/oC,EAAOgwC,EAAat8C,KAAK+2C,YAAYvtC,QAE1DqU,EAAMsB,IAAMlQ,KAAKkQ,IAAItB,EAAMsB,IAAK/a,GAChCyZ,EAAMuB,IAAMnQ,KAAKmQ,IAAIvB,EAAMuB,IAAKhb,GAElCo4C,UAAUnmB,EAAO+hB,GACf,MAAMrU,EAAO/jC,KAAK+2C,YACZe,EAAU/T,EAAK+T,QACf0D,EAASzX,EAAK0X,SAAWplB,IAAU0N,EAAKE,OACxC7oB,EAAO08B,EAAQ9uC,OACfyzC,EAAaz8C,KAAKy6C,eAAepkB,GACjC/pB,EAAQ6rC,GAAYC,EAAUrU,EAAM/jC,KAAK40B,OACzC/W,EAAQ,CAACsB,IAAK/E,OAAOiD,kBAAmB+B,IAAKhF,OAAO+7B,oBACnDh3B,IAAKu9B,EAAUt9B,IAAKu9B,GAAY3G,GAAcyG,GACrD,IAAI3zC,EAAGyL,EACP,SAASqoC,IACProC,EAASujC,EAAQhvC,GACjB,MAAM0sC,EAAajhC,EAAOkoC,EAAWvF,MACrC,OAAQ/8B,EAAe5F,EAAO8hB,EAAM6gB,QAAUwF,EAAWlH,GAAcmH,EAAWnH,EAEpF,IAAK1sC,EAAI,EAAGA,EAAIsS,IAAQtS,EACtB,IAAI8zC,MAGJ58C,KAAKq8C,sBAAsBx+B,EAAOwY,EAAO9hB,EAAQjI,GAC7CkvC,GACF,MAGJ,GAAIA,EACF,IAAK1yC,EAAIsS,EAAO,EAAGtS,GAAK,IAAKA,EAC3B,IAAI8zC,IAAJ,CAGA58C,KAAKq8C,sBAAsBx+B,EAAOwY,EAAO9hB,EAAQjI,GACjD,MAGJ,OAAOuR,EAETg/B,mBAAmBxmB,GACjB,MAAM9hB,EAASvU,KAAK+2C,YAAYe,QAC1B1jB,EAAS,GACf,IAAItrB,EAAGsS,EAAMhX,EACb,IAAK0E,EAAI,EAAGsS,EAAO7G,EAAOvL,OAAQF,EAAIsS,IAAQtS,EAC5C1E,EAAQmQ,EAAOzL,GAAGutB,EAAM6gB,MACpB/8B,EAAe/V,IACjBgwB,EAAO7qB,KAAKnF,GAGhB,OAAOgwB,EAET0oB,iBACE,OAAO,EAETC,iBAAiBvzC,GACf,MAAMu6B,EAAO/jC,KAAK+2C,YACZ9S,EAASF,EAAKE,OACdyS,EAAS3S,EAAK2S,OACdniC,EAASvU,KAAKm8C,UAAU3yC,GAC9B,MAAO,CACLwzC,MAAO/Y,EAAS,GAAKA,EAAOgZ,iBAAiB1oC,EAAO0vB,EAAOiT,OAAS,GACpE9yC,MAAOsyC,EAAS,GAAKA,EAAOuG,iBAAiB1oC,EAAOmiC,EAAOQ,OAAS,IAGxEtG,QAAQhb,GACN,MAAMmO,EAAO/jC,KAAK+2C,YAClB/2C,KAAK8yC,OAAOld,GAAQ,WACpBmO,EAAKmZ,MAAQnI,GAAOv6B,EAAexa,KAAKL,QAAQm7B,KAAM8Z,GAAY7Q,EAAK8Q,OAAQ9Q,EAAK+Q,OAAQ90C,KAAK88C,oBAEnGhK,OAAOld,IACPmb,OACE,MAAMxb,EAAMv1B,KAAKw4C,KACX5jB,EAAQ50B,KAAK40B,MACbmP,EAAO/jC,KAAK+2C,YACZhiB,EAAWgP,EAAK1hC,MAAQ,GACxBo4B,EAAO7F,EAAMuoB,UACbtK,EAAS,GACTp5B,EAAQzZ,KAAK+4C,YAAc,EAC3B/U,EAAQhkC,KAAKg5C,YAAejkB,EAAS/rB,OAASyQ,EAC9C+c,EAA0Bx2B,KAAKL,QAAQ62B,wBAC7C,IAAI1tB,EAIJ,IAHIi7B,EAAK0T,SACP1T,EAAK0T,QAAQ1G,KAAKxb,EAAKkF,EAAMhhB,EAAOuqB,GAEjCl7B,EAAI2Q,EAAO3Q,EAAI2Q,EAAQuqB,IAASl7B,EAAG,CACtC,MAAM8+B,EAAU7S,EAASjsB,GACrB8+B,EAAQyQ,SAGRzQ,EAAQiL,QAAUrc,EACpBqc,EAAOtpC,KAAKq+B,GAEZA,EAAQmJ,KAAKxb,EAAKkF,IAGtB,IAAK3xB,EAAI,EAAGA,EAAI+pC,EAAO7pC,SAAUF,EAC/B+pC,EAAO/pC,GAAGioC,KAAKxb,EAAKkF,GAGxBoN,SAASr+B,EAAOqpC,GACd,MAAMjd,EAAOid,EAAS,SAAW,UACjC,YAAiB/sC,IAAV0D,GAAuBxJ,KAAK+2C,YAAYU,QAC3Cz3C,KAAKo9C,6BAA6BxnB,GAClC51B,KAAKq9C,0BAA0B7zC,GAAS,EAAGosB,GAEjDmD,WAAWvvB,EAAOqpC,EAAQjd,GACxB,MAAM6hB,EAAUz3C,KAAKy5C,aACrB,IAAI15C,EACJ,GAAIyJ,GAAS,GAAKA,EAAQxJ,KAAK+2C,YAAY10C,KAAK2G,OAAQ,CACtD,MAAM4+B,EAAU5nC,KAAK+2C,YAAY10C,KAAKmH,GACtCzJ,EAAU6nC,EAAQuR,WACfvR,EAAQuR,SAAWzB,GAAkB13C,KAAK+4B,aAAcvvB,EAAOo+B,IAClE7nC,EAAQwU,OAASvU,KAAKm8C,UAAU3yC,GAChCzJ,EAAQ63C,IAAMH,EAAQp1C,KAAKmH,GAC3BzJ,EAAQyJ,MAAQzJ,EAAQ43C,UAAYnuC,OAEpCzJ,EAAUC,KAAKm5C,WACZn5C,KAAKm5C,SAAW3B,GAAqBx3C,KAAK40B,MAAMmE,aAAc/4B,KAAKwJ,QACtEzJ,EAAQ03C,QAAUA,EAClB13C,EAAQyJ,MAAQzJ,EAAQwb,aAAevb,KAAKwJ,MAI9C,OAFAzJ,EAAQ8yC,SAAWA,EACnB9yC,EAAQ61B,KAAOA,EACR71B,EAETq9C,6BAA6BxnB,GAC3B,OAAO51B,KAAKs9C,uBAAuBt9C,KAAK86C,mBAAmB1tC,GAAIwoB,GAEjEynB,0BAA0B7zC,EAAOosB,GAC/B,OAAO51B,KAAKs9C,uBAAuBt9C,KAAKu9C,gBAAgBnwC,GAAIwoB,EAAMpsB,GAEpE8zC,uBAAuBE,EAAa5nB,EAAO,UAAWpsB,GACpD,MAAMqpC,EAAkB,WAATjd,EACT/e,EAAQ7W,KAAKy4C,gBACbpN,EAAWmS,EAAc,IAAM5nB,EAC/BqiB,EAASphC,EAAMw0B,GACfoS,EAAUz9C,KAAKi5C,qBAAuBt8B,EAAQnT,GACpD,GAAIyuC,EACF,OAAOD,GAAiBC,EAAQwF,GAElC,MAAM17C,EAAS/B,KAAK40B,MAAM7yB,OACpBq5C,EAAYr5C,EAAO27C,wBAAwB19C,KAAK24C,MAAO6E,GACvDjd,EAAWsS,EAAS,CAAC,GAAG2K,SAAoB,QAASA,EAAa,IAAM,CAACA,EAAa,IACtFld,EAASv+B,EAAOu5C,gBAAgBt7C,KAAKy5C,aAAc2B,GACnD9pB,EAAQ9kB,OAAOqC,KAAKxH,GAAS0tB,SAASyoB,IACtCz9C,EAAU,IAAMC,KAAK+4B,WAAWvvB,EAAOqpC,GACvCze,EAASryB,EAAO47C,oBAAoBrd,EAAQhP,EAAOvxB,EAASwgC,GAKlE,OAJInM,EAAOkgB,UACTlgB,EAAOkgB,QAAUmJ,EACjB5mC,EAAMw0B,GAAY7+B,OAAOoxC,OAAO5F,GAAiB5jB,EAAQqpB,KAEpDrpB,EAETypB,mBAAmBr0C,EAAOs0C,EAAYjL,GACpC,MAAMje,EAAQ50B,KAAK40B,MACb/d,EAAQ7W,KAAKy4C,gBACbpN,EAAW,aAAayS,IACxB7F,EAASphC,EAAMw0B,GACrB,GAAI4M,EACF,OAAOA,EAET,IAAIt4C,EACJ,IAAgC,IAA5Bi1B,EAAMj1B,QAAQ40B,UAAqB,CACrC,MAAMxyB,EAAS/B,KAAK40B,MAAM7yB,OACpBq5C,EAAYr5C,EAAOg8C,0BAA0B/9C,KAAK24C,MAAOmF,GACzDxd,EAASv+B,EAAOu5C,gBAAgBt7C,KAAKy5C,aAAc2B,GACzDz7C,EAAUoC,EAAOw5C,eAAejb,EAAQtgC,KAAK+4B,WAAWvvB,EAAOqpC,EAAQiL,IAEzE,MAAMpK,EAAa,IAAIG,GAAWjf,EAAOj1B,GAAWA,EAAQ+zC,YAI5D,OAHI/zC,GAAWA,EAAQihC,aACrB/pB,EAAMw0B,GAAY7+B,OAAOoxC,OAAOlK,IAE3BA,EAETsK,iBAAiBr+C,GACf,GAAKA,EAAQ20C,QAGb,OAAOt0C,KAAK84C,iBAAmB94C,KAAK84C,eAAiBtsC,OAAOQ,OAAO,GAAIrN,IAEzEs+C,eAAeroB,EAAMsoB,GACnB,OAAQA,GAAiBnG,GAAmBniB,IAAS51B,KAAK40B,MAAMupB,oBAElEC,cAAcxW,EAASp+B,EAAO+pC,EAAY3d,GACpCmiB,GAAmBniB,GACrBppB,OAAOQ,OAAO46B,EAAS2L,GAEvBvzC,KAAK69C,mBAAmBr0C,EAAOosB,GAAMkd,OAAOlL,EAAS2L,GAGzD8K,oBAAoBH,EAAetoB,EAAMue,GACnC+J,IAAkBnG,GAAmBniB,IACvC51B,KAAK69C,wBAAmB/3C,EAAW8vB,GAAMkd,OAAOoL,EAAe/J,GAGnEmK,UAAU1W,EAASp+B,EAAOosB,EAAMid,GAC9BjL,EAAQiL,OAASA,EACjB,MAAMlzC,EAAUK,KAAK6nC,SAASr+B,EAAOqpC,GACrC7yC,KAAK69C,mBAAmBr0C,EAAOosB,EAAMid,GAAQC,OAAOlL,EAAS,CAC3DjoC,SAAWkzC,GAAU7yC,KAAKg+C,iBAAiBr+C,IAAaA,IAG5D4+C,iBAAiB3W,EAASrsB,EAAc/R,GACtCxJ,KAAKs+C,UAAU1W,EAASp+B,EAAO,UAAU,GAE3Cg1C,cAAc5W,EAASrsB,EAAc/R,GACnCxJ,KAAKs+C,UAAU1W,EAASp+B,EAAO,UAAU,GAE3Ci1C,2BACE,MAAM7W,EAAU5nC,KAAK+2C,YAAYU,QAC7B7P,GACF5nC,KAAKs+C,UAAU1W,OAAS9hC,EAAW,UAAU,GAGjD44C,wBACE,MAAM9W,EAAU5nC,KAAK+2C,YAAYU,QAC7B7P,GACF5nC,KAAKs+C,UAAU1W,OAAS9hC,EAAW,UAAU,GAGjDq1C,gBAAgBH,GACd,MAAM34C,EAAOrC,KAAK44C,MACZ7jB,EAAW/0B,KAAK+2C,YAAY10C,KAClC,IAAK,MAAOkC,EAAQo6C,EAAMC,KAAS5+C,KAAKo5C,UACtCp5C,KAAKuE,GAAQo6C,EAAMC,GAErB5+C,KAAKo5C,UAAY,GACjB,MAAMyF,EAAU9pB,EAAS/rB,OACnB81C,EAAUz8C,EAAK2G,OACfg7B,EAAQ/0B,KAAKkQ,IAAI2/B,EAASD,GAC5B7a,GACFhkC,KAAKgQ,MAAM,EAAGg0B,GAEZ8a,EAAUD,EACZ7+C,KAAK++C,gBAAgBF,EAASC,EAAUD,EAAS7D,GACxC8D,EAAUD,GACnB7+C,KAAKg/C,gBAAgBF,EAASD,EAAUC,GAG5CC,gBAAgBtlC,EAAOuqB,EAAOgX,GAAmB,GAC/C,MAAMjX,EAAO/jC,KAAK+2C,YACZ10C,EAAO0hC,EAAK1hC,KACZqX,EAAMD,EAAQuqB,EACpB,IAAIl7B,EACJ,MAAMm2C,EAAQlqC,IAEZ,IADAA,EAAI/L,QAAUg7B,EACTl7B,EAAIiM,EAAI/L,OAAS,EAAGF,GAAK4Q,EAAK5Q,IACjCiM,EAAIjM,GAAKiM,EAAIjM,EAAIk7B,IAIrB,IADAib,EAAK58C,GACAyG,EAAI2Q,EAAO3Q,EAAI4Q,IAAO5Q,EACzBzG,EAAKyG,GAAK,IAAI9I,KAAKu9C,gBAEjBv9C,KAAKkkC,UACP+a,EAAKlb,EAAK+T,SAEZ93C,KAAKgQ,MAAMyJ,EAAOuqB,GACdgX,GACFh7C,KAAKk/C,eAAe78C,EAAMoX,EAAOuqB,EAAO,SAG5Ckb,eAAetX,EAASnuB,EAAOuqB,EAAOpO,IACtCopB,gBAAgBvlC,EAAOuqB,GACrB,MAAMD,EAAO/jC,KAAK+2C,YAClB,GAAI/2C,KAAKkkC,SAAU,CACjB,MAAMib,EAAUpb,EAAK+T,QAAQruC,OAAOgQ,EAAOuqB,GACvCD,EAAKuU,UACPT,GAAY9T,EAAMob,GAGtBpb,EAAK1hC,KAAKoH,OAAOgQ,EAAOuqB,GAE1Bob,MAAM7tC,GACJ,GAAIvR,KAAKkkC,SACPlkC,KAAKo5C,UAAU7vC,KAAKgI,OACf,CACL,MAAOhN,EAAQo6C,EAAMC,GAAQrtC,EAC7BvR,KAAKuE,GAAQo6C,EAAMC,GAErB5+C,KAAK40B,MAAMyqB,aAAa91C,KAAK,CAACvJ,KAAKwJ,SAAU+H,IAE/C+tC,cACE,MAAMtb,EAAQxyB,UAAUxI,OACxBhJ,KAAKo/C,MAAM,CAAC,kBAAmBp/C,KAAKy5C,aAAap3C,KAAK2G,OAASg7B,EAAOA,IAExEub,aACEv/C,KAAKo/C,MAAM,CAAC,kBAAmBp/C,KAAK+2C,YAAY10C,KAAK2G,OAAS,EAAG,IAEnEw2C,eACEx/C,KAAKo/C,MAAM,CAAC,kBAAmB,EAAG,IAEpCK,cAAchmC,EAAOuqB,GACfA,GACFhkC,KAAKo/C,MAAM,CAAC,kBAAmB3lC,EAAOuqB,IAExC,MAAM0b,EAAWluC,UAAUxI,OAAS,EAChC02C,GACF1/C,KAAKo/C,MAAM,CAAC,kBAAmB3lC,EAAOimC,IAG1CC,iBACE3/C,KAAKo/C,MAAM,CAAC,kBAAmB,EAAG5tC,UAAUxI,UAOhD,SAAS42C,GAAkBvpB,EAAO1vB,GAChC,IAAK0vB,EAAMwpB,OAAOC,KAAM,CACtB,MAAMC,EAAe1pB,EAAMugB,wBAAwBjwC,GACnD,IAAIytB,EAAS,GACb,IAAK,IAAItrB,EAAI,EAAGsS,EAAO2kC,EAAa/2C,OAAQF,EAAIsS,EAAMtS,IACpDsrB,EAASA,EAAOnzB,OAAO8+C,EAAaj3C,GAAGguC,WAAW+F,mBAAmBxmB,IAEvEA,EAAMwpB,OAAOC,KAAO5f,GAAa9L,EAAO7V,MAAK,CAAC7G,EAAGC,IAAMD,EAAIC,KAE7D,OAAO0e,EAAMwpB,OAAOC,KAEtB,SAASE,GAAqBjc,GAC5B,MAAM1N,EAAQ0N,EAAKE,OACb7P,EAASwrB,GAAkBvpB,EAAO0N,EAAKp9B,MAC7C,IACImC,EAAGsS,EAAM6kC,EAAMhZ,EADf9nB,EAAMkX,EAAM6pB,QAEhB,MAAMC,EAAmB,KACV,QAATF,IAA4B,QAAVA,IAGlBtjC,EAAQsqB,KACV9nB,EAAMlQ,KAAKkQ,IAAIA,EAAKlQ,KAAK4P,IAAIohC,EAAOhZ,IAAS9nB,IAE/C8nB,EAAOgZ,IAET,IAAKn3C,EAAI,EAAGsS,EAAOgZ,EAAOprB,OAAQF,EAAIsS,IAAQtS,EAC5Cm3C,EAAO5pB,EAAM+pB,iBAAiBhsB,EAAOtrB,IACrCq3C,IAGF,IADAlZ,OAAOnhC,EACFgD,EAAI,EAAGsS,EAAOib,EAAMgqB,MAAMr3C,OAAQF,EAAIsS,IAAQtS,EACjDm3C,EAAO5pB,EAAMiqB,gBAAgBx3C,GAC7Bq3C,IAEF,OAAOhhC,EAET,SAASohC,GAAyB/2C,EAAOg3C,EAAO7gD,EAAS8gD,GACvD,MAAMC,EAAY/gD,EAAQghD,aAC1B,IAAI9jC,EAAMoV,EAQV,OAPI/X,EAAcwmC,IAChB7jC,EAAO2jC,EAAMrhC,IAAMxf,EAAQihD,mBAC3B3uB,EAAQtyB,EAAQkhD,gBAEhBhkC,EAAO6jC,EAAYD,EACnBxuB,EAAQ,GAEH,CACL6uB,MAAOjkC,EAAO4jC,EACdxuB,MAAAA,EACAxY,MAAO+mC,EAAMO,OAAOv3C,GAAUqT,EAAO,GAGzC,SAASmkC,GAA0Bx3C,EAAOg3C,EAAO7gD,EAAS8gD,GACxD,MAAMM,EAASP,EAAMO,OACfd,EAAOc,EAAOv3C,GACpB,IAAIy9B,EAAOz9B,EAAQ,EAAIu3C,EAAOv3C,EAAQ,GAAK,KACvCq7B,EAAOr7B,EAAQu3C,EAAO/3C,OAAS,EAAI+3C,EAAOv3C,EAAQ,GAAK,KAC3D,MAAMy3C,EAAUthD,EAAQihD,mBACX,OAAT3Z,IACFA,EAAOgZ,GAAiB,OAATpb,EAAgB2b,EAAM9mC,IAAM8mC,EAAM/mC,MAAQorB,EAAOob,IAErD,OAATpb,IACFA,EAAOob,EAAOA,EAAOhZ,GAEvB,MAAMxtB,EAAQwmC,GAAQA,EAAOhxC,KAAKkQ,IAAI8nB,EAAMpC,IAAS,EAAIoc,EACnDpkC,EAAO5N,KAAK4P,IAAIgmB,EAAOoC,GAAQ,EAAIga,EACzC,MAAO,CACLH,MAAOjkC,EAAO4jC,EACdxuB,MAAOtyB,EAAQkhD,cACfpnC,MAAAA,GAGJ,SAASynC,GAAcC,EAAOrkC,EAAM45B,EAAQ5tC,GAC1C,MAAMs4C,EAAa1K,EAAO1mC,MAAMmxC,EAAM,GAAIr4C,GACpCu4C,EAAW3K,EAAO1mC,MAAMmxC,EAAM,GAAIr4C,GAClCqW,EAAMlQ,KAAKkQ,IAAIiiC,EAAYC,GAC3BjiC,EAAMnQ,KAAKmQ,IAAIgiC,EAAYC,GACjC,IAAIC,EAAWniC,EACXoiC,EAASniC,EACTnQ,KAAK4P,IAAIM,GAAOlQ,KAAK4P,IAAIO,KAC3BkiC,EAAWliC,EACXmiC,EAASpiC,GAEXrC,EAAK45B,EAAOQ,MAAQqK,EACpBzkC,EAAK0kC,QAAU,CACbF,SAAAA,EACAC,OAAAA,EACA9nC,MAAO2nC,EACP1nC,IAAK2nC,EACLliC,IAAAA,EACAC,IAAAA,GAGJ,SAASqiC,GAAWN,EAAOrkC,EAAM45B,EAAQ5tC,GAMvC,OALIuF,EAAQ8yC,GACVD,GAAcC,EAAOrkC,EAAM45B,EAAQ5tC,GAEnCgU,EAAK45B,EAAOQ,MAAQR,EAAO1mC,MAAMmxC,EAAOr4C,GAEnCgU,EAET,SAAS4kC,GAAsB3d,EAAM1hC,EAAMoX,EAAOuqB,GAChD,MAAMC,EAASF,EAAKE,OACdyS,EAAS3S,EAAK2S,OACdoF,EAAS7X,EAAO8X,YAChBC,EAAc/X,IAAWyS,EACzBniC,EAAS,GACf,IAAIzL,EAAGsS,EAAM0B,EAAMqkC,EACnB,IAAKr4C,EAAI2Q,EAAO2B,EAAO3B,EAAQuqB,EAAOl7B,EAAIsS,IAAQtS,EAChDq4C,EAAQ9+C,EAAKyG,GACbgU,EAAO,GACPA,EAAKmnB,EAAOiT,MAAQ8E,GAAe/X,EAAOj0B,MAAM8rC,EAAOhzC,GAAIA,GAC3DyL,EAAOhL,KAAKk4C,GAAWN,EAAOrkC,EAAM45B,EAAQ5tC,IAE9C,OAAOyL,EAET,SAASotC,GAAWC,GAClB,OAAOA,QAA8B97C,IAApB87C,EAAON,eAA4Cx7C,IAAlB87C,EAAOL,OAE3D,SAASM,GAAQhlC,EAAM65B,EAAQoL,GAC7B,OAAa,IAATjlC,EACKc,EAAKd,IAEN65B,EAAOqL,eAAiB,GAAK,IAAMrL,EAAOv3B,KAAO2iC,EAAa,GAAK,GAE7E,SAASE,GAAYzO,GACnB,IAAIx4B,EAAStB,EAAOC,EAAKihB,EAAKC,EAiB9B,OAhBI2Y,EAAW0O,YACblnC,EAAUw4B,EAAW1T,KAAO0T,EAAW70B,EACvCjF,EAAQ,OACRC,EAAM,UAENqB,EAAUw4B,EAAW1T,KAAO0T,EAAW50B,EACvClF,EAAQ,SACRC,EAAM,OAEJqB,GACF4f,EAAM,MACNC,EAAS,UAETD,EAAM,QACNC,EAAS,OAEJ,CAACnhB,MAAAA,EAAOC,IAAAA,EAAKqB,QAAAA,EAAS4f,IAAAA,EAAKC,OAAAA,GAEpC,SAASsnB,GAAiB3O,EAAY5zC,EAAS2M,EAAO9C,GACpD,IAAI24C,EAAOxiD,EAAQyiD,cACnB,MAAMtiB,EAAM,GACZ,IAAKqiB,EAEH,YADA5O,EAAW6O,cAAgBtiB,GAG7B,MAAM,MAACrmB,EAAK,IAAEC,EAAG,QAAEqB,EAAO,IAAE4f,EAAG,OAAEC,GAAUonB,GAAYzO,GAC1C,WAAT4O,GAAqB71C,IACvBinC,EAAW8O,oBAAqB,GAC3B/1C,EAAM+qC,MAAQ,KAAO7tC,EACxB24C,EAAOxnB,GACGruB,EAAMgrC,SAAW,KAAO9tC,EAClC24C,EAAOvnB,GAEPkF,EAAIwiB,GAAU1nB,EAAQnhB,EAAOC,EAAKqB,KAAY,EAC9ConC,EAAOxnB,IAGXmF,EAAIwiB,GAAUH,EAAM1oC,EAAOC,EAAKqB,KAAY,EAC5Cw4B,EAAW6O,cAAgBtiB,EAE7B,SAASwiB,GAAUH,EAAMzqC,EAAGC,EAAGoD,GAO7B,OANIA,GACFonC,EAAOI,GAAKJ,EAAMzqC,EAAGC,GACrBwqC,EAAOK,GAASL,EAAMxqC,EAAGD,IAEzByqC,EAAOK,GAASL,EAAMzqC,EAAGC,GAEpBwqC,EAET,SAASI,GAAKE,EAAMnnC,EAAIonC,GACtB,OAAOD,IAASnnC,EAAKonC,EAAKD,IAASC,EAAKpnC,EAAKmnC,EAE/C,SAASD,GAAS3wC,EAAG4H,EAAOC,GAC1B,MAAa,UAAN7H,EAAgB4H,EAAc,QAAN5H,EAAc6H,EAAM7H,EAErD,SAAS8wC,GAAiBpP,GAAY,cAACqP,GAAgB3wB,GACrDshB,EAAWqP,cAAkC,SAAlBA,EACb,IAAV3wB,EAAc,IAAO,EACrB2wB,EA7LNrK,GAAkBlxC,SAAW,GAC7BkxC,GAAkB9wC,UAAUqzC,mBAAqB,KACjDvC,GAAkB9wC,UAAU81C,gBAAkB,KA6L9C,MAAMsF,WAAsBtK,GAC1BqD,mBAAmB7X,EAAM1hC,EAAMoX,EAAOuqB,GACpC,OAAO0d,GAAsB3d,EAAM1hC,EAAMoX,EAAOuqB,GAElD0X,eAAe3X,EAAM1hC,EAAMoX,EAAOuqB,GAChC,OAAO0d,GAAsB3d,EAAM1hC,EAAMoX,EAAOuqB,GAElD2X,gBAAgB5X,EAAM1hC,EAAMoX,EAAOuqB,GACjC,MAAM,OAACC,EAAM,OAAEyS,GAAU3S,GACnB,SAACkY,EAAW,IAAG,SAAEC,EAAW,KAAOl8C,KAAKkkC,SACxC4e,EAA2B,MAAhB7e,EAAOiT,KAAe+E,EAAWC,EAC5C6G,EAA2B,MAAhBrM,EAAOQ,KAAe+E,EAAWC,EAC5C3nC,EAAS,GACf,IAAIzL,EAAGsS,EAAM0B,EAAM/P,EACnB,IAAKjE,EAAI2Q,EAAO2B,EAAO3B,EAAQuqB,EAAOl7B,EAAIsS,IAAQtS,EAChDiE,EAAM1K,EAAKyG,GACXgU,EAAO,GACPA,EAAKmnB,EAAOiT,MAAQjT,EAAOj0B,MAAMwM,EAAiBzP,EAAK+1C,GAAWh6C,GAClEyL,EAAOhL,KAAKk4C,GAAWjlC,EAAiBzP,EAAKg2C,GAAWjmC,EAAM45B,EAAQ5tC,IAExE,OAAOyL,EAET8nC,sBAAsBx+B,EAAOwY,EAAO9hB,EAAQjI,GAC1C02C,MAAM3G,sBAAsBx+B,EAAOwY,EAAO9hB,EAAQjI,GAClD,MAAMs1C,EAASrtC,EAAOitC,QAClBI,GAAUvrB,IAAUr2B,KAAK+2C,YAAYL,SACvC74B,EAAMsB,IAAMlQ,KAAKkQ,IAAItB,EAAMsB,IAAKyiC,EAAOziC,KACvCtB,EAAMuB,IAAMnQ,KAAKmQ,IAAIvB,EAAMuB,IAAKwiC,EAAOxiC,MAG3C09B,iBACE,OAAO,EAETC,iBAAiBvzC,GACf,MAAMu6B,EAAO/jC,KAAK+2C,aACZ,OAAC9S,EAAM,OAAEyS,GAAU3S,EACnBxvB,EAASvU,KAAKm8C,UAAU3yC,GACxBo4C,EAASrtC,EAAOitC,QAChBp9C,EAAQu9C,GAAWC,GACrB,IAAMA,EAAOnoC,MAAQ,KAAOmoC,EAAOloC,IAAM,IACzC,GAAKg9B,EAAOuG,iBAAiB1oC,EAAOmiC,EAAOQ,OAC/C,MAAO,CACL8F,MAAO,GAAK/Y,EAAOgZ,iBAAiB1oC,EAAO0vB,EAAOiT,OAClD9yC,MAAAA,GAGJi1C,aACEr5C,KAAKi5C,qBAAsB,EAC3B+J,MAAM3J,aACN,MAAMtV,EAAO/jC,KAAK+2C,YAClBhT,EAAKz3B,MAAQtM,KAAKy5C,aAAantC,MAEjCwmC,OAAOld,GACL,MAAMmO,EAAO/jC,KAAK+2C,YAClB/2C,KAAKk/C,eAAenb,EAAK1hC,KAAM,EAAG0hC,EAAK1hC,KAAK2G,OAAQ4sB,GAEtDspB,eAAe+D,EAAMxpC,EAAOuqB,EAAOpO,GACjC,MAAM8kB,EAAiB,UAAT9kB,GACR,MAACpsB,EAAOutC,aAAa,OAACL,IAAW12C,KACjC6/B,EAAO6W,EAAOwM,eACdjB,EAAavL,EAAOqL,eACpBvB,EAAQxgD,KAAKmjD,YACbC,EAAYpjD,KAAKq9C,0BAA0B5jC,EAAOmc,GAClDsoB,EAAgBl+C,KAAKg+C,iBAAiBoF,GACtCnF,EAAiBj+C,KAAKi+C,eAAeroB,EAAMsoB,GACjDl+C,KAAKq+C,oBAAoBH,EAAetoB,EAAMwtB,GAC9C,IAAK,IAAIt6C,EAAI2Q,EAAO3Q,EAAI2Q,EAAQuqB,EAAOl7B,IAAK,CAC1C,MAAMyL,EAASvU,KAAKm8C,UAAUrzC,GACxBu6C,EAAU3I,GAASxgC,EAAc3F,EAAOmiC,EAAOQ,OAAS,CAACrX,KAAAA,EAAMyjB,KAAMzjB,GAAQ7/B,KAAKujD,yBAAyBz6C,GAC3G06C,EAAUxjD,KAAKyjD,yBAAyB36C,EAAG03C,GAC3Cl0C,GAASiI,EAAOyiC,SAAW,IAAIN,EAAOQ,MACtC3D,EAAa,CACjB0O,WAAAA,EACApiB,KAAMwjB,EAAQxjB,KACdwiB,oBAAqB/1C,GAASq1C,GAAWptC,EAAOitC,UAAah4C,IAAU8C,EAAM+qC,MAAQ7tC,IAAU8C,EAAMgrC,QACrG54B,EAAGujC,EAAaoB,EAAQC,KAAOE,EAAQE,OACvC/kC,EAAGsjC,EAAauB,EAAQE,OAASL,EAAQC,KACzCpqB,OAAQ+oB,EAAauB,EAAQ3mC,KAAO5N,KAAK4P,IAAIwkC,EAAQxmC,MACrDmb,MAAOiqB,EAAahzC,KAAK4P,IAAIwkC,EAAQxmC,MAAQ2mC,EAAQ3mC,MAEnDohC,IACF1K,EAAW5zC,QAAUu+C,GAAiBl+C,KAAKq9C,0BAA0Bv0C,EAAGm6C,EAAKn6C,GAAG+pC,OAAS,SAAWjd,IAEtG,MAAMj2B,EAAU4zC,EAAW5zC,SAAWsjD,EAAKn6C,GAAGnJ,QAC9CuiD,GAAiB3O,EAAY5zC,EAAS2M,EAAO9C,GAC7Cm5C,GAAiBpP,EAAY5zC,EAAS6gD,EAAMvuB,OAC5CjyB,KAAKo+C,cAAc6E,EAAKn6C,GAAIA,EAAGyqC,EAAY3d,IAG/C+tB,WAAWxV,EAAMwJ,GACf,MAAM5T,EAAO/jC,KAAK+2C,YACZ9S,EAASF,EAAKE,OACdkR,EAAWlR,EAAO2S,wBAAwB52C,KAAK24C,OAC/C/C,EAAU3R,EAAOtkC,QAAQi2C,QACzBx6B,EAAO+5B,EAASnsC,OAChBqtC,EAAS,GACf,IAAIvtC,EAAGgU,EACP,IAAKhU,EAAI,EAAGA,EAAIsS,IAAQtS,EAEtB,GADAgU,EAAOq4B,EAASrsC,GACXgU,EAAKg6B,WAAWn3C,QAAQikD,QAA7B,CAGA,GAAyB,qBAAdjM,EAA2B,CACpC,MAAM1xC,EAAM6W,EAAKg6B,WAAWqF,UAAUxE,GACpC76B,EAAKg6B,WAAWC,YAAYL,OAAOQ,MAErC,GAAIh9B,EAAcjU,IAAQwY,MAAMxY,GAC9B,SAOJ,KAJgB,IAAZ2vC,IAAqD,IAAhCS,EAAOtxC,QAAQ+X,EAAKxQ,aAClCxG,IAAZ8vC,QAAwC9vC,IAAfgX,EAAKxQ,QAC3B+pC,EAAO9sC,KAAKuT,EAAKxQ,OAEfwQ,EAAKtT,QAAU2kC,EACjB,MAMJ,OAHKkI,EAAOrtC,QACVqtC,EAAO9sC,UAAKzD,GAEPuwC,EAETwN,eAAer6C,GACb,OAAOxJ,KAAK2jD,gBAAW79C,EAAW0D,GAAOR,OAE3C86C,eAAevoC,EAAc1R,EAAM8tC,GACjC,MAAMtB,EAASr2C,KAAK2jD,WAAWpoC,EAAco8B,GACvCnuC,OAAkB1D,IAAT+D,EACXwsC,EAAOtxC,QAAQ8E,IACd,EACL,OAAmB,IAAXL,EACJ6sC,EAAOrtC,OAAS,EAChBQ,EAEN25C,YACE,MAAM3sC,EAAOxW,KAAKL,QACZokC,EAAO/jC,KAAK+2C,YACZ9S,EAASF,EAAKE,OACd8c,EAAS,GACf,IAAIj4C,EAAGsS,EACP,IAAKtS,EAAI,EAAGsS,EAAO2oB,EAAK1hC,KAAK2G,OAAQF,EAAIsS,IAAQtS,EAC/Ci4C,EAAOx3C,KAAK06B,EAAOmc,iBAAiBpgD,KAAKm8C,UAAUrzC,GAAGm7B,EAAOiT,MAAOpuC,IAEtE,MAAM63C,EAAenqC,EAAKmqC,aACpBxhC,EAAMwhC,GAAgBX,GAAqBjc,GACjD,MAAO,CACL5kB,IAAAA,EACA4hC,OAAAA,EACAtnC,MAAOwqB,EAAO8f,YACdrqC,IAAKuqB,EAAO+f,UACZvD,WAAYzgD,KAAK6jD,iBACjBxtB,MAAO4N,EACP2f,QAASptC,EAAKotC,QACd3xB,MAAO0uB,EAAe,EAAInqC,EAAKoqC,mBAAqBpqC,EAAKqqC,eAG7D0C,yBAAyB/5C,GACvB,MAAOutC,aAAa,OAACL,EAAM,SAAE4B,GAAW34C,SAAUkgC,KAAMokB,EAAS,aAAEC,IAAiBlkD,KAC9E8hD,EAAamC,GAAa,EAC1B1vC,EAASvU,KAAKm8C,UAAU3yC,GACxBo4C,EAASrtC,EAAOitC,QAChB2C,EAAWxC,GAAWC,GAC5B,IAGI0B,EAAMzmC,EAHNzY,EAAQmQ,EAAOmiC,EAAOQ,MACtBz9B,EAAQ,EACRzQ,EAASsvC,EAAWt4C,KAAKq1C,WAAWqB,EAAQniC,EAAQ+jC,GAAYl0C,EAEhE4E,IAAW5E,IACbqV,EAAQzQ,EAAS5E,EACjB4E,EAAS5E,GAEP+/C,IACF//C,EAAQw9C,EAAON,SACft4C,EAAS44C,EAAOL,OAASK,EAAON,SAClB,IAAVl9C,GAAeuZ,EAAKvZ,KAAWuZ,EAAKikC,EAAOL,UAC7C9nC,EAAQ,GAEVA,GAASrV,GAEX,MAAMg9C,EAAclnC,EAAc+pC,IAAeE,EAAuB1qC,EAAZwqC,EAC5D,IAAIpkB,EAAO6W,EAAO0J,iBAAiBgB,GAOnC,GALEkC,EADEtjD,KAAK40B,MAAMwvB,kBAAkB56C,GACxBktC,EAAO0J,iBAAiB3mC,EAAQzQ,GAEhC62B,EAEThjB,EAAOymC,EAAOzjB,EACV5wB,KAAK4P,IAAIhC,GAAQqnC,EAAc,CACjCrnC,EAAOglC,GAAQhlC,EAAM65B,EAAQoL,GAAcoC,EACvC9/C,IAAU09C,IACZjiB,GAAQhjB,EAAO,GAEjB,MAAMwnC,EAAa3N,EAAO4N,mBAAmB,GACvCC,EAAW7N,EAAO4N,mBAAmB,GACrCnlC,EAAMlQ,KAAKkQ,IAAIklC,EAAYE,GAC3BnlC,EAAMnQ,KAAKmQ,IAAIilC,EAAYE,GACjC1kB,EAAO5wB,KAAKmQ,IAAInQ,KAAKkQ,IAAI0gB,EAAMzgB,GAAMD,GACrCmkC,EAAOzjB,EAAOhjB,EAEhB,GAAIgjB,IAAS6W,EAAO0J,iBAAiB0B,GAAa,CAChD,MAAM0C,EAAW7mC,EAAKd,GAAQ65B,EAAO+N,qBAAqB3C,GAAc,EACxEjiB,GAAQ2kB,EACR3nC,GAAQ2nC,EAEV,MAAO,CACL3nC,KAAAA,EACAgjB,KAAAA,EACAyjB,KAAAA,EACAI,OAAQJ,EAAOzmC,EAAO,GAG1B4mC,yBAAyBj6C,EAAOg3C,GAC9B,MAAMnqB,EAAQmqB,EAAMnqB,MACd12B,EAAUK,KAAKL,QACf+kD,EAAW/kD,EAAQ+kD,SACnBC,EAAkBnqC,EAAe7a,EAAQglD,gBAAiBC,EAAAA,GAChE,IAAIlB,EAAQ7mC,EACZ,GAAI2jC,EAAMoD,QAAS,CACjB,MAAMnD,EAAaiE,EAAW1kD,KAAK6jD,eAAer6C,GAASg3C,EAAMC,WAC3D5iC,EAAiC,SAAzBle,EAAQghD,aAClBK,GAA0Bx3C,EAAOg3C,EAAO7gD,EAAS8gD,GACjDF,GAAyB/2C,EAAOg3C,EAAO7gD,EAAS8gD,GAC9CoE,EAAa7kD,KAAK8jD,eAAe9jD,KAAKwJ,MAAOxJ,KAAK+2C,YAAYzqC,MAAOo4C,EAAWl7C,OAAQ1D,GAC9F49C,EAAS7lC,EAAMpE,MAASoE,EAAMijC,MAAQ+D,EAAehnC,EAAMijC,MAAQ,EACnEjkC,EAAO5N,KAAKkQ,IAAIwlC,EAAiB9mC,EAAMijC,MAAQjjC,EAAMoU,YAErDyxB,EAASrtB,EAAM+pB,iBAAiBpgD,KAAKm8C,UAAU3yC,GAAO6sB,EAAM6gB,MAAO1tC,GACnEqT,EAAO5N,KAAKkQ,IAAIwlC,EAAiBnE,EAAMrhC,IAAMqhC,EAAMvuB,OAErD,MAAO,CACL4N,KAAM6jB,EAAS7mC,EAAO,EACtBymC,KAAMI,EAAS7mC,EAAO,EACtB6mC,OAAAA,EACA7mC,KAAAA,GAGJk0B,OACE,MAAMhN,EAAO/jC,KAAK+2C,YACZL,EAAS3S,EAAK2S,OACdoO,EAAQ/gB,EAAK1hC,KACb+Y,EAAO0pC,EAAM97C,OACnB,IAAIF,EAAI,EACR,KAAOA,EAAIsS,IAAQtS,EACsB,OAAnC9I,KAAKm8C,UAAUrzC,GAAG4tC,EAAOQ,OAC3B4N,EAAMh8C,GAAGioC,KAAK/wC,KAAKw4C,OAK3BqK,GAAcz1C,GAAK,MACnBy1C,GAAcx7C,SAAW,CACvByzC,oBAAoB,EACpByC,gBAAiB,MACjBqD,mBAAoB,GACpBC,cAAe,GACf+C,SAAS,EACTlQ,WAAY,CACVN,QAAS,CACPzsC,KAAM,SACN4sC,WAAY,CAAC,IAAK,IAAK,OAAQ,QAAS,aAI9CsP,GAAc/uB,UAAY,CACxBwC,OAAQ,CACNyuB,QAAS,CACPp+C,KAAM,WACNq+C,QAAQ,EACRC,KAAM,CACJD,QAAQ,IAGZE,QAAS,CACPv+C,KAAM,SACN+3B,aAAa,KAKnB,MAAMymB,WAAyB5M,GAC7Bc,aACEr5C,KAAKi5C,qBAAsB,EAC3B+J,MAAM3J,aAERuC,mBAAmB7X,EAAM1hC,EAAMoX,EAAOuqB,GACpC,MAAMzvB,EAASyuC,MAAMpH,mBAAmB7X,EAAM1hC,EAAMoX,EAAOuqB,GAC3D,IAAK,IAAIl7B,EAAI,EAAGA,EAAIyL,EAAOvL,OAAQF,IACjCyL,EAAOzL,GAAG04C,QAAUxhD,KAAKq9C,0BAA0Bv0C,EAAI2Q,GAAOggB,OAEhE,OAAOllB,EAETmnC,eAAe3X,EAAM1hC,EAAMoX,EAAOuqB,GAChC,MAAMzvB,EAASyuC,MAAMtH,eAAe3X,EAAM1hC,EAAMoX,EAAOuqB,GACvD,IAAK,IAAIl7B,EAAI,EAAGA,EAAIyL,EAAOvL,OAAQF,IAAK,CACtC,MAAMgU,EAAOza,EAAKoX,EAAQ3Q,GAC1ByL,EAAOzL,GAAG04C,QAAUhnC,EAAesC,EAAK,GAAI9c,KAAKq9C,0BAA0Bv0C,EAAI2Q,GAAOggB,QAExF,OAAOllB,EAETonC,gBAAgB5X,EAAM1hC,EAAMoX,EAAOuqB,GACjC,MAAMzvB,EAASyuC,MAAMrH,gBAAgB5X,EAAM1hC,EAAMoX,EAAOuqB,GACxD,IAAK,IAAIl7B,EAAI,EAAGA,EAAIyL,EAAOvL,OAAQF,IAAK,CACtC,MAAMgU,EAAOza,EAAKoX,EAAQ3Q,GAC1ByL,EAAOzL,GAAG04C,QAAUhnC,EAAesC,GAAQA,EAAK+H,IAAM/H,EAAK+H,EAAG7kB,KAAKq9C,0BAA0Bv0C,EAAI2Q,GAAOggB,QAE1G,OAAOllB,EAETuoC,iBACE,MAAMz6C,EAAOrC,KAAK+2C,YAAY10C,KAC9B,IAAI+c,EAAM,EACV,IAAK,IAAItW,EAAIzG,EAAK2G,OAAS,EAAGF,GAAK,IAAKA,EACtCsW,EAAMnQ,KAAKmQ,IAAIA,EAAK/c,EAAKyG,GAAG+T,KAAK7c,KAAKq9C,0BAA0Bv0C,IAAM,GAExE,OAAOsW,EAAM,GAAKA,EAEpB29B,iBAAiBvzC,GACf,MAAMu6B,EAAO/jC,KAAK+2C,aACZ,OAAClC,EAAM,OAAEC,GAAU/Q,EACnBxvB,EAASvU,KAAKm8C,UAAU3yC,GACxBkV,EAAIm2B,EAAOoI,iBAAiB1oC,EAAOmK,GACnCC,EAAIm2B,EAAOmI,iBAAiB1oC,EAAOoK,GACnCkG,EAAItQ,EAAOitC,QACjB,MAAO,CACLxE,MAAOjZ,EAAKiZ,MACZ54C,MAAO,IAAMsa,EAAI,KAAOC,GAAKkG,EAAI,KAAOA,EAAI,IAAM,KAGtDiuB,OAAOld,GACL,MAAMyO,EAASrkC,KAAK+2C,YAAY10C,KAChCrC,KAAKk/C,eAAe7a,EAAQ,EAAGA,EAAOr7B,OAAQ4sB,GAEhDspB,eAAe7a,EAAQ5qB,EAAOuqB,EAAOpO,GACnC,MAAM8kB,EAAiB,UAAT9kB,GACR,OAACqO,EAAM,OAAEyS,GAAU12C,KAAK+2C,YACxBqM,EAAYpjD,KAAKq9C,0BAA0B5jC,EAAOmc,GAClDsoB,EAAgBl+C,KAAKg+C,iBAAiBoF,GACtCnF,EAAiBj+C,KAAKi+C,eAAeroB,EAAMsoB,GAC3CjH,EAAQhT,EAAOiT,KACfC,EAAQT,EAAOQ,KACrB,IAAK,IAAIpuC,EAAI2Q,EAAO3Q,EAAI2Q,EAAQuqB,EAAOl7B,IAAK,CAC1C,MAAM0xB,EAAQ6J,EAAOv7B,GACfyL,GAAUmmC,GAAS16C,KAAKm8C,UAAUrzC,GAClCyqC,EAAa,GACbrN,EAASqN,EAAW0D,GAASyD,EAAQzW,EAAOqgB,mBAAmB,IAAOrgB,EAAOmc,iBAAiB7rC,EAAO0iC,IACrG9Q,EAASoN,EAAW4D,GAASuD,EAAQhE,EAAOwM,eAAiBxM,EAAO0J,iBAAiB7rC,EAAO4iC,IAClG5D,EAAWjP,KAAO7lB,MAAMynB,IAAWznB,MAAM0nB,GACrC8X,IACF1K,EAAW5zC,QAAUK,KAAKq9C,0BAA0Bv0C,EAAG0xB,EAAMqY,OAAS,SAAWjd,GAC7E8kB,IACFnH,EAAW5zC,QAAQ85B,OAAS,IAGhCz5B,KAAKo+C,cAAc5jB,EAAO1xB,EAAGyqC,EAAY3d,GAE3C51B,KAAKq+C,oBAAoBH,EAAetoB,EAAMwtB,GAEhD/F,0BAA0B7zC,EAAOosB,GAC/B,MAAMrhB,EAASvU,KAAKm8C,UAAU3yC,GAC9B,IAAI4qB,EAAS4uB,MAAM3F,0BAA0B7zC,EAAOosB,GAChDxB,EAAOkgB,UACTlgB,EAAS5nB,OAAOQ,OAAO,GAAIonB,EAAQ,CAACkgB,SAAS,KAE/C,MAAM7a,EAASrF,EAAOqF,OAKtB,MAJa,WAAT7D,IACFxB,EAAOqF,OAAS,GAElBrF,EAAOqF,QAAUjf,EAAejG,GAAUA,EAAOitC,QAAS/nB,GACnDrF,GAkCX,SAASgxB,GAAkB5rB,EAAU6rB,EAAeC,GAClD,IAAIC,EAAS,EACTC,EAAS,EACTld,EAAU,EACVC,EAAU,EACd,GAAI8c,EAAgBnoC,EAAK,CACvB,MAAMuoC,EAAajsB,EACbksB,EAAWD,EAAaJ,EACxBM,EAAS12C,KAAKsT,IAAIkjC,GAClBG,EAAS32C,KAAKqS,IAAImkC,GAClBI,EAAO52C,KAAKsT,IAAImjC,GAChBI,EAAO72C,KAAKqS,IAAIokC,GAChBK,EAAU,CAAC9lC,EAAOvI,EAAGC,IAAM8I,GAAcR,EAAOwlC,EAAYC,GAAU,GAAQ,EAAIz2C,KAAKmQ,IAAI1H,EAAGA,EAAI4tC,EAAQ3tC,EAAGA,EAAI2tC,GACjHU,EAAU,CAAC/lC,EAAOvI,EAAGC,IAAM8I,GAAcR,EAAOwlC,EAAYC,GAAU,IAAS,EAAIz2C,KAAKkQ,IAAIzH,EAAGA,EAAI4tC,EAAQ3tC,EAAGA,EAAI2tC,GAClHW,EAAOF,EAAQ,EAAGJ,EAAQE,GAC1BK,EAAOH,EAAQxoC,EAASqoC,EAAQE,GAChCK,EAAOH,EAAQ/oC,EAAI0oC,EAAQE,GAC3BO,EAAOJ,EAAQ/oC,EAAKM,EAASqoC,EAAQE,GAC3CP,GAAUU,EAAOE,GAAQ,EACzBX,GAAUU,EAAOE,GAAQ,EACzB9d,IAAY2d,EAAOE,GAAQ,EAC3B5d,IAAY2d,EAAOE,GAAQ,EAE7B,MAAO,CAACb,OAAAA,EAAQC,OAAAA,EAAQld,QAAAA,EAASC,QAAAA,GAtDnC4c,GAAiB/3C,GAAK,SACtB+3C,GAAiB99C,SAAW,CAC1ByzC,oBAAoB,EACpByC,gBAAiB,QACjB7J,WAAY,CACVN,QAAS,CACPzsC,KAAM,SACN4sC,WAAY,CAAC,IAAK,IAAK,cAAe,aAI5C4R,GAAiBrxB,UAAY,CAC3BwC,OAAQ,CACN5X,EAAG,CACD/X,KAAM,UAERgY,EAAG,CACDhY,KAAM,WAGVwvB,QAAS,CACPkwB,QAAS,CACP/V,UAAW,CACTgW,QACE,MAAO,QAgCjB,MAAMC,WAA2BhO,GAC/BvhC,YAAY4d,EAAOrZ,GACjBynC,MAAMpuB,EAAOrZ,GACbvb,KAAKi5C,qBAAsB,EAC3Bj5C,KAAKwmD,iBAAc1gD,EACnB9F,KAAKymD,iBAAc3gD,EACnB9F,KAAKsoC,aAAUxiC,EACf9F,KAAKuoC,aAAUziC,EAEjBwzC,cACAtpC,MAAMyJ,EAAOuqB,GACX,MAAM3hC,EAAOrC,KAAKy5C,aAAap3C,KACzB0hC,EAAO/jC,KAAK+2C,YAClB,IAAsB,IAAlB/2C,KAAKkkC,SACPH,EAAK+T,QAAUz1C,MACV,CACL,IAKIyG,EAAGsS,EALHsrC,EAAU59C,IAAOzG,EAAKyG,GAC1B,GAAIgI,EAASzO,EAAKoX,IAAS,CACzB,MAAM,IAACvT,EAAM,SAAWlG,KAAKkkC,SAC7BwiB,EAAU59C,IAAO0T,EAAiBna,EAAKyG,GAAI5C,GAG7C,IAAK4C,EAAI2Q,EAAO2B,EAAO3B,EAAQuqB,EAAOl7B,EAAIsS,IAAQtS,EAChDi7B,EAAK+T,QAAQhvC,GAAK49C,EAAO59C,IAI/B69C,eACE,OAAOtnC,EAAUrf,KAAKL,QAAQ65B,SAAW,IAE3CotB,oBACE,OAAOvnC,EAAUrf,KAAKL,QAAQ0lD,eAEhCwB,sBACE,IAAI1nC,EAAMjC,EACNkC,GAAOlC,EACX,IAAK,IAAIpU,EAAI,EAAGA,EAAI9I,KAAK40B,MAAMvyB,KAAKqyB,SAAS1rB,SAAUF,EACrD,GAAI9I,KAAK40B,MAAMkyB,iBAAiBh+C,GAAI,CAClC,MAAMguC,EAAa92C,KAAK40B,MAAM2lB,eAAezxC,GAAGguC,WAC1Ctd,EAAWsd,EAAW6P,eACtBtB,EAAgBvO,EAAW8P,oBACjCznC,EAAMlQ,KAAKkQ,IAAIA,EAAKqa,GACpBpa,EAAMnQ,KAAKmQ,IAAIA,EAAKoa,EAAW6rB,GAGnC,MAAO,CACL7rB,SAAUra,EACVkmC,cAAejmC,EAAMD,GAGzB2zB,OAAOld,GACL,MAAMhB,EAAQ50B,KAAK40B,OACb,UAACuoB,GAAavoB,EACdmP,EAAO/jC,KAAK+2C,YACZgQ,EAAOhjB,EAAK1hC,KACZ2kD,EAAUhnD,KAAKinD,oBAAsBjnD,KAAKknD,aAAaH,GAAQ/mD,KAAKL,QAAQqnD,QAC5EG,EAAUl4C,KAAKmQ,KAAKnQ,KAAKkQ,IAAIg+B,EAAUnlB,MAAOmlB,EAAUjkB,QAAU8tB,GAAW,EAAG,GAChF1B,EAASr2C,KAAKkQ,IAAI1E,EAAaza,KAAKL,QAAQ2lD,OAAQ6B,GAAU,GAC9DC,EAAcpnD,KAAKqnD,eAAernD,KAAKwJ,QACvC,cAAC67C,EAAa,SAAE7rB,GAAYx5B,KAAK6mD,uBACjC,OAACtB,EAAM,OAAEC,EAAM,QAAEld,EAAO,QAAEC,GAAW6c,GAAkB5rB,EAAU6rB,EAAeC,GAChFnpB,GAAYghB,EAAUnlB,MAAQgvB,GAAWzB,EACzCpc,GAAagU,EAAUjkB,OAAS8tB,GAAWxB,EAC3C8B,EAAYr4C,KAAKmQ,IAAInQ,KAAKkQ,IAAIgd,EAAUgN,GAAa,EAAG,GACxDsd,EAAc7rC,EAAY5a,KAAKL,QAAQ85B,OAAQ6tB,GAC/Cd,EAAcv3C,KAAKmQ,IAAIqnC,EAAcnB,EAAQ,GAC7CiC,GAAgBd,EAAcD,GAAexmD,KAAKwnD,gCACxDxnD,KAAKsoC,QAAUA,EAAUme,EACzBzmD,KAAKuoC,QAAUA,EAAUke,EACzB1iB,EAAK0jB,MAAQznD,KAAK0nD,iBAClB1nD,KAAKymD,YAAcA,EAAcc,EAAevnD,KAAK2nD,qBAAqB3nD,KAAKwJ,OAC/ExJ,KAAKwmD,YAAcv3C,KAAKmQ,IAAIpf,KAAKymD,YAAcc,EAAeH,EAAa,GAC3EpnD,KAAKk/C,eAAe6H,EAAM,EAAGA,EAAK/9C,OAAQ4sB,GAE5CgyB,eAAe9+C,EAAG4xC,GAChB,MAAMlkC,EAAOxW,KAAKL,QACZokC,EAAO/jC,KAAK+2C,YACZsO,EAAgBrlD,KAAK4mD,oBAC3B,OAAKlM,GAASlkC,EAAK+d,UAAUszB,gBAAmB7nD,KAAK40B,MAAMwvB,kBAAkBt7C,IAA0B,OAApBi7B,EAAK+T,QAAQhvC,IAAei7B,EAAK1hC,KAAKyG,GAAGuvC,OACnH,EAEFr4C,KAAK8nD,uBAAuB/jB,EAAK+T,QAAQhvC,GAAKu8C,EAAgBnoC,GAEvEgiC,eAAe6H,EAAMttC,EAAOuqB,EAAOpO,GACjC,MAAM8kB,EAAiB,UAAT9kB,EACRhB,EAAQ50B,KAAK40B,MACbuoB,EAAYvoB,EAAMuoB,UAClB3mC,EAAOoe,EAAMj1B,QACbooD,EAAgBvxC,EAAK+d,UACrByzB,GAAW7K,EAAUvjC,KAAOujC,EAAUtjC,OAAS,EAC/CouC,GAAW9K,EAAUxiB,IAAMwiB,EAAUviB,QAAU,EAC/CstB,EAAexN,GAASqN,EAAcG,aACtC1B,EAAc0B,EAAe,EAAIloD,KAAKwmD,YACtCC,EAAcyB,EAAe,EAAIloD,KAAKymD,YACtCrD,EAAYpjD,KAAKq9C,0BAA0B5jC,EAAOmc,GAClDsoB,EAAgBl+C,KAAKg+C,iBAAiBoF,GACtCnF,EAAiBj+C,KAAKi+C,eAAeroB,EAAMsoB,GACjD,IACIp1C,EADA28C,EAAazlD,KAAK2mD,eAEtB,IAAK79C,EAAI,EAAGA,EAAI2Q,IAAS3Q,EACvB28C,GAAczlD,KAAK4nD,eAAe9+C,EAAG4xC,GAEvC,IAAK5xC,EAAI2Q,EAAO3Q,EAAI2Q,EAAQuqB,IAASl7B,EAAG,CACtC,MAAMu8C,EAAgBrlD,KAAK4nD,eAAe9+C,EAAG4xC,GACvC5gB,EAAMitB,EAAKj+C,GACXyqC,EAAa,CACjB70B,EAAGspC,EAAUhoD,KAAKsoC,QAClB3pB,EAAGspC,EAAUjoD,KAAKuoC,QAClBkd,WAAAA,EACAC,SAAUD,EAAaJ,EACvBA,cAAAA,EACAoB,YAAAA,EACAD,YAAAA,GAEEvI,IACF1K,EAAW5zC,QAAUu+C,GAAiBl+C,KAAKq9C,0BAA0Bv0C,EAAGgxB,EAAI+Y,OAAS,SAAWjd,IAElG6vB,GAAcJ,EACdrlD,KAAKo+C,cAActkB,EAAKhxB,EAAGyqC,EAAY3d,GAEzC51B,KAAKq+C,oBAAoBH,EAAetoB,EAAMwtB,GAEhDsE,iBACE,MAAM3jB,EAAO/jC,KAAK+2C,YACZoR,EAAWpkB,EAAK1hC,KACtB,IACIyG,EADA2+C,EAAQ,EAEZ,IAAK3+C,EAAI,EAAGA,EAAIq/C,EAASn/C,OAAQF,IAAK,CACpC,MAAM1E,EAAQ2/B,EAAK+T,QAAQhvC,GACb,OAAV1E,GAAmBqa,MAAMra,KAAUpE,KAAK40B,MAAMwvB,kBAAkBt7C,IAAOq/C,EAASr/C,GAAGuvC,SACrFoP,GAASx4C,KAAK4P,IAAIza,IAGtB,OAAOqjD,EAETK,uBAAuB1jD,GACrB,MAAMqjD,EAAQznD,KAAK+2C,YAAY0Q,MAC/B,OAAIA,EAAQ,IAAMhpC,MAAMra,GACf8Y,GAAOjO,KAAK4P,IAAIza,GAASqjD,GAE3B,EAET1K,iBAAiBvzC,GACf,MAAMu6B,EAAO/jC,KAAK+2C,YACZniB,EAAQ50B,KAAK40B,MACbknB,EAASlnB,EAAMvyB,KAAKy5C,QAAU,GAC9B13C,EAAQqnC,GAAa1H,EAAK+T,QAAQtuC,GAAQorB,EAAMj1B,QAAQyrC,QAC9D,MAAO,CACL4R,MAAOlB,EAAOtyC,IAAU,GACxBpF,MAAAA,GAGJ6iD,kBAAkBF,GAChB,IAAI3nC,EAAM,EACV,MAAMwV,EAAQ50B,KAAK40B,MACnB,IAAI9rB,EAAGsS,EAAM2oB,EAAM+S,EAAYn3C,EAC/B,IAAKonD,EACH,IAAKj+C,EAAI,EAAGsS,EAAOwZ,EAAMvyB,KAAKqyB,SAAS1rB,OAAQF,EAAIsS,IAAQtS,EACzD,GAAI8rB,EAAMkyB,iBAAiBh+C,GAAI,CAC7Bi7B,EAAOnP,EAAM2lB,eAAezxC,GAC5Bi+C,EAAOhjB,EAAK1hC,KACZy0C,EAAa/S,EAAK+S,WAClB,MAIN,IAAKiQ,EACH,OAAO,EAET,IAAKj+C,EAAI,EAAGsS,EAAO2rC,EAAK/9C,OAAQF,EAAIsS,IAAQtS,EAC1CnJ,EAAUm3C,EAAWuG,0BAA0Bv0C,GACnB,UAAxBnJ,EAAQyoD,cACVhpC,EAAMnQ,KAAKmQ,IAAIA,EAAKzf,EAAQ06B,aAAe,EAAG16B,EAAQ0oD,kBAAoB,IAG9E,OAAOjpC,EAET8nC,aAAaH,GACX,IAAI3nC,EAAM,EACV,IAAK,IAAItW,EAAI,EAAGsS,EAAO2rC,EAAK/9C,OAAQF,EAAIsS,IAAQtS,EAAG,CACjD,MAAMnJ,EAAUK,KAAKq9C,0BAA0Bv0C,GAC/CsW,EAAMnQ,KAAKmQ,IAAIA,EAAKzf,EAAQqlD,QAAU,EAAGrlD,EAAQ2oD,aAAe,GAElE,OAAOlpC,EAETuoC,qBAAqBpsC,GACnB,IAAIgtC,EAAmB,EACvB,IAAK,IAAIz/C,EAAI,EAAGA,EAAIyS,IAAgBzS,EAC9B9I,KAAK40B,MAAMkyB,iBAAiBh+C,KAC9By/C,GAAoBvoD,KAAKqnD,eAAev+C,IAG5C,OAAOy/C,EAETlB,eAAe9rC,GACb,OAAOtM,KAAKmQ,IAAI5E,EAAexa,KAAK40B,MAAMvyB,KAAKqyB,SAASnZ,GAAcuX,OAAQ,GAAI,GAEpF00B,gCACE,OAAOxnD,KAAK2nD,qBAAqB3nD,KAAK40B,MAAMvyB,KAAKqyB,SAAS1rB,SAAW,GAGzEu9C,GAAmBn5C,GAAK,WACxBm5C,GAAmBl/C,SAAW,CAC5ByzC,oBAAoB,EACpByC,gBAAiB,MACjBhpB,UAAW,CACTszB,eAAe,EACfK,cAAc,GAEhBxU,WAAY,CACVN,QAAS,CACPzsC,KAAM,SACN4sC,WAAY,CAAC,gBAAiB,WAAY,cAAe,cAAe,aAAc,IAAK,IAAK,SAAU,cAAe,aAG7H+R,OAAQ,MACR9rB,SAAU,EACV6rB,cAAe,IACf5rB,OAAQ,OACRutB,QAAS,EACTtxB,UAAW,KAEb6wB,GAAmBh6C,YAAc,CAC/B8qB,YAAcxtB,GAAkB,YAATA,EACvB0tB,WAAa1tB,GAAkB,YAATA,GAExB08C,GAAmBzyB,UAAY,CAC7BgW,YAAa,EACb3T,QAAS,CACPqyB,OAAQ,CACN1M,OAAQ,CACN2M,eAAe7zB,GACb,MAAMvyB,EAAOuyB,EAAMvyB,KACnB,GAAIA,EAAKy5C,OAAO9yC,QAAU3G,EAAKqyB,SAAS1rB,OAAQ,CAC9C,MAAO8yC,QAAQ,WAACviB,IAAe3E,EAAM4zB,OAAO7oD,QAC5C,OAAO0C,EAAKy5C,OAAOrgC,KAAI,CAACuhC,EAAOl0C,KAC7B,MAAMi7B,EAAOnP,EAAM2lB,eAAe,GAC5BplB,EAAQ4O,EAAK+S,WAAWjP,SAAS/+B,GACvC,MAAO,CACL6yB,KAAMqhB,EACNzgB,UAAWpH,EAAMX,gBACjBwH,YAAa7G,EAAMV,YACnBwH,UAAW9G,EAAMkF,YACjBd,WAAYA,EACZ8e,QAASzjB,EAAMwvB,kBAAkBt7C,GACjCU,MAAOV,MAIb,MAAO,KAGXmtB,QAAQ/lB,EAAGw4C,EAAYF,GACrBA,EAAO5zB,MAAM+zB,qBAAqBD,EAAWl/C,OAC7Cg/C,EAAO5zB,MAAMke,WAGjBuT,QAAS,CACP/V,UAAW,CACTgW,QACE,MAAO,IAETtJ,MAAM4L,GACJ,IAAIC,EAAYD,EAAY5L,MAC5B,MAAM54C,EAAQ,KAAOwkD,EAAYE,eAOjC,OANIz6C,EAAQw6C,IACVA,EAAYA,EAAUv6C,QACtBu6C,EAAU,IAAMzkD,GAEhBykD,GAAazkD,EAERykD,OAOjB,MAAME,WAAuBxQ,GAC3Bc,aACEr5C,KAAKi5C,qBAAsB,EAC3Bj5C,KAAKk5C,oBAAqB,EAC1B8J,MAAM3J,aAERvG,OAAOld,GACL,MAAMmO,EAAO/jC,KAAK+2C,aACXU,QAAS9iC,EAAMtS,KAAMgiC,EAAS,GAAE,SAAE2kB,GAAYjlB,EAC/CklB,EAAqBjpD,KAAK40B,MAAMupB,oBACtC,IAAI,MAAC1kC,EAAK,MAAEuqB,GAASklB,GAAgCnlB,EAAMM,EAAQ4kB,GACnEjpD,KAAK+4C,WAAat/B,EAClBzZ,KAAKg5C,WAAahV,EACdmlB,GAAmBplB,KACrBtqB,EAAQ,EACRuqB,EAAQK,EAAOr7B,QAEjB2L,EAAKm6B,OAAS9uC,KAAK40B,MACnBjgB,EAAKs6B,cAAgBjvC,KAAKwJ,MAC1BmL,EAAKy0C,aAAeJ,EAASI,WAC7Bz0C,EAAK0vB,OAASA,EACd,MAAM1kC,EAAUK,KAAKo9C,6BAA6BxnB,GAC7C51B,KAAKL,QAAQ42B,WAChB52B,EAAQ06B,YAAc,GAExB16B,EAAQutC,QAAUltC,KAAKL,QAAQutC,QAC/BltC,KAAKo+C,cAAczpC,OAAM7O,EAAW,CAClCujD,UAAWJ,EACXtpD,QAAAA,GACCi2B,GACH51B,KAAKk/C,eAAe7a,EAAQ5qB,EAAOuqB,EAAOpO,GAE5CspB,eAAe7a,EAAQ5qB,EAAOuqB,EAAOpO,GACnC,MAAM8kB,EAAiB,UAAT9kB,GACR,OAACqO,EAAM,OAAEyS,EAAM,SAAE4B,EAAQ,SAAE0Q,GAAYhpD,KAAK+2C,YAC5CqM,EAAYpjD,KAAKq9C,0BAA0B5jC,EAAOmc,GAClDsoB,EAAgBl+C,KAAKg+C,iBAAiBoF,GACtCnF,EAAiBj+C,KAAKi+C,eAAeroB,EAAMsoB,GAC3CjH,EAAQhT,EAAOiT,KACfC,EAAQT,EAAOQ,MACf,SAACnQ,EAAQ,QAAEmG,GAAWltC,KAAKL,QAC3B2pD,EAAe72C,EAASs0B,GAAYA,EAAW3sB,OAAOiD,kBACtDksC,EAAevpD,KAAK40B,MAAMupB,qBAAuBzD,GAAkB,SAAT9kB,EAChE,IAAI4zB,EAAa/vC,EAAQ,GAAKzZ,KAAKm8C,UAAU1iC,EAAQ,GACrD,IAAK,IAAI3Q,EAAI2Q,EAAO3Q,EAAI2Q,EAAQuqB,IAASl7B,EAAG,CAC1C,MAAM0xB,EAAQ6J,EAAOv7B,GACfyL,EAASvU,KAAKm8C,UAAUrzC,GACxByqC,EAAagW,EAAe/uB,EAAQ,GACpCivB,EAAWvvC,EAAc3F,EAAO4iC,IAChCjR,EAASqN,EAAW0D,GAAShT,EAAOmc,iBAAiB7rC,EAAO0iC,GAAQnuC,GACpEq9B,EAASoN,EAAW4D,GAASuD,GAAS+O,EAAW/S,EAAOwM,eAAiBxM,EAAO0J,iBAAiB9H,EAAWt4C,KAAKq1C,WAAWqB,EAAQniC,EAAQ+jC,GAAY/jC,EAAO4iC,GAAQruC,GAC7KyqC,EAAWjP,KAAO7lB,MAAMynB,IAAWznB,MAAM0nB,IAAWsjB,EACpDlW,EAAWlF,KAAOvlC,EAAI,GAAMmG,KAAK4P,IAAItK,EAAO0iC,GAASuS,EAAWvS,IAAWqS,EACvEpc,IACFqG,EAAWh/B,OAASA,EACpBg/B,EAAWqE,IAAMoR,EAAS3mD,KAAKyG,IAE7Bm1C,IACF1K,EAAW5zC,QAAUu+C,GAAiBl+C,KAAKq9C,0BAA0Bv0C,EAAG0xB,EAAMqY,OAAS,SAAWjd,IAE/F2zB,GACHvpD,KAAKo+C,cAAc5jB,EAAO1xB,EAAGyqC,EAAY3d,GAE3C4zB,EAAaj1C,EAEfvU,KAAKq+C,oBAAoBH,EAAetoB,EAAMwtB,GAEhDtG,iBACE,MAAM/Y,EAAO/jC,KAAK+2C,YACZU,EAAU1T,EAAK0T,QACfiS,EAASjS,EAAQ93C,SAAW83C,EAAQ93C,QAAQ06B,aAAe,EAC3Dh4B,EAAO0hC,EAAK1hC,MAAQ,GAC1B,IAAKA,EAAK2G,OACR,OAAO0gD,EAET,MAAMjlB,EAAapiC,EAAK,GAAGwa,KAAK7c,KAAKq9C,0BAA0B,IACzDsM,EAAYtnD,EAAKA,EAAK2G,OAAS,GAAG6T,KAAK7c,KAAKq9C,0BAA0Bh7C,EAAK2G,OAAS,IAC1F,OAAOiG,KAAKmQ,IAAIsqC,EAAQjlB,EAAYklB,GAAa,EAEnD5Y,OACE,MAAMhN,EAAO/jC,KAAK+2C,YAClBhT,EAAK0T,QAAQmS,oBAAoB5pD,KAAK40B,MAAMuoB,UAAWpZ,EAAKE,OAAOiT,MACnE8L,MAAMjS,QAoBV,SAASmY,GAAgCnlB,EAAMM,EAAQ4kB,GACrD,MAAMY,EAAaxlB,EAAOr7B,OAC1B,IAAIyQ,EAAQ,EACRuqB,EAAQ6lB,EACZ,GAAI9lB,EAAK0X,QAAS,CAChB,MAAM,OAACxX,EAAM,QAAE6T,GAAW/T,EACpBmT,EAAOjT,EAAOiT,MACd,IAAC/3B,EAAG,IAAEC,EAAG,WAAE62B,EAAU,WAAEC,GAAcjS,EAAO+R,gBAC9CC,IACFx8B,EAAQuH,GAAY/R,KAAKkQ,IACvBkgB,GAAayY,EAAS7T,EAAOiT,KAAM/3B,GAAKigB,GACxC6pB,EAAqBY,EAAaxqB,GAAagF,EAAQ6S,EAAMjT,EAAOmc,iBAAiBjhC,IAAMigB,IAC7F,EAAGyqB,EAAa,IAGhB7lB,EADEkS,EACMl1B,GAAY/R,KAAKmQ,IACvBigB,GAAayY,EAAS7T,EAAOiT,KAAM93B,GAAK+f,GAAK,EAC7C8pB,EAAqB,EAAI5pB,GAAagF,EAAQ6S,EAAMjT,EAAOmc,iBAAiBhhC,IAAM+f,GAAK,GACzF1lB,EAAOowC,GAAcpwC,EAEbowC,EAAapwC,EAGzB,MAAO,CAACA,MAAAA,EAAOuqB,MAAAA,GAEjB,SAASmlB,GAAmBplB,GAC1B,MAAM,OAAC8Q,EAAM,OAAEC,EAAM,aAAEgV,GAAgB/lB,EACjCgmB,EAAY,CAChBC,KAAMnV,EAAO11B,IACb8qC,KAAMpV,EAAOz1B,IACb8qC,KAAMpV,EAAO31B,IACbgrC,KAAMrV,EAAO11B,KAEf,IAAK0qC,EAEH,OADA/lB,EAAK+lB,aAAeC,GACb,EAET,MAAMK,EAAUN,EAAaE,OAASnV,EAAO11B,KAC1C2qC,EAAaG,OAASpV,EAAOz1B,KAC7B0qC,EAAaI,OAASpV,EAAO31B,KAC7B2qC,EAAaK,OAASrV,EAAO11B,IAEhC,OADA5S,OAAOQ,OAAO88C,EAAcC,GACrBK,EA3DTrB,GAAe37C,GAAK,OACpB27C,GAAe1hD,SAAW,CACxByzC,mBAAoB,OACpByC,gBAAiB,QACjBhnB,UAAU,EACVwQ,UAAU,GAEZgiB,GAAej1B,UAAY,CACzBwC,OAAQ,CACNyuB,QAAS,CACPp+C,KAAM,YAERu+C,QAAS,CACPv+C,KAAM,YAiDZ,MAAM0jD,WAA4B9R,GAChCvhC,YAAY4d,EAAOrZ,GACjBynC,MAAMpuB,EAAOrZ,GACbvb,KAAKwmD,iBAAc1gD,EACnB9F,KAAKymD,iBAAc3gD,EAErBi3C,iBAAiBvzC,GACf,MAAMu6B,EAAO/jC,KAAK+2C,YACZniB,EAAQ50B,KAAK40B,MACbknB,EAASlnB,EAAMvyB,KAAKy5C,QAAU,GAC9B13C,EAAQqnC,GAAa1H,EAAK+T,QAAQtuC,GAAOqb,EAAG+P,EAAMj1B,QAAQyrC,QAChE,MAAO,CACL4R,MAAOlB,EAAOtyC,IAAU,GACxBpF,MAAAA,GAGJu3C,gBAAgB5X,EAAM1hC,EAAMoX,EAAOuqB,GACjC,OAAOF,GAA4B58B,KAAKlH,KAAjC8jC,CAAuCC,EAAM1hC,EAAMoX,EAAOuqB,GAEnE8O,OAAOld,GACL,MAAMmxB,EAAO/mD,KAAK+2C,YAAY10C,KAC9BrC,KAAKsqD,gBACLtqD,KAAKk/C,eAAe6H,EAAM,EAAGA,EAAK/9C,OAAQ4sB,GAE5C4mB,YACE,MAAMzY,EAAO/jC,KAAK+2C,YACZl5B,EAAQ,CAACsB,IAAK/E,OAAOiD,kBAAmB+B,IAAKhF,OAAO+7B,mBAY1D,OAXApS,EAAK1hC,KAAK2D,SAAQ,CAAC4hC,EAASp+B,KAC1B,MAAM+K,EAASvU,KAAKm8C,UAAU3yC,GAAOqb,GAChCpG,MAAMlK,IAAWvU,KAAK40B,MAAMwvB,kBAAkB56C,KAC7C+K,EAASsJ,EAAMsB,MACjBtB,EAAMsB,IAAM5K,GAEVA,EAASsJ,EAAMuB,MACjBvB,EAAMuB,IAAM7K,OAIXsJ,EAETysC,gBACE,MAAM11B,EAAQ50B,KAAK40B,MACbuoB,EAAYvoB,EAAMuoB,UAClB3mC,EAAOoe,EAAMj1B,QACb4qD,EAAUt7C,KAAKkQ,IAAIg+B,EAAUtjC,MAAQsjC,EAAUvjC,KAAMujC,EAAUviB,OAASuiB,EAAUxiB,KAClF8rB,EAAcx3C,KAAKmQ,IAAImrC,EAAU,EAAG,GACpC/D,EAAcv3C,KAAKmQ,IAAI5I,EAAKg0C,iBAAoB/D,EAAc,IAAQjwC,EAAqB,iBAAI,EAAG,GAClG+wC,GAAgBd,EAAcD,GAAe5xB,EAAM61B,yBACzDzqD,KAAKymD,YAAcA,EAAec,EAAevnD,KAAKwJ,MACtDxJ,KAAKwmD,YAAcxmD,KAAKymD,YAAcc,EAExCrI,eAAe6H,EAAMttC,EAAOuqB,EAAOpO,GACjC,MAAM8kB,EAAiB,UAAT9kB,EACRhB,EAAQ50B,KAAK40B,MACbpe,EAAOoe,EAAMj1B,QACbooD,EAAgBvxC,EAAK+d,UACrB8B,EAAQr2B,KAAK+2C,YAAYuD,OACzB0N,EAAU3xB,EAAMq0B,QAChBzC,EAAU5xB,EAAMs0B,QAChBC,EAAoBv0B,EAAMw0B,cAAc,GAAK,GAAM5tC,EACzD,IACInU,EADAmX,EAAQ2qC,EAEZ,MAAME,EAAe,IAAM9qD,KAAK+qD,uBAChC,IAAKjiD,EAAI,EAAGA,EAAI2Q,IAAS3Q,EACvBmX,GAASjgB,KAAKgrD,cAAcliD,EAAG8sB,EAAMk1B,GAEvC,IAAKhiD,EAAI2Q,EAAO3Q,EAAI2Q,EAAQuqB,EAAOl7B,IAAK,CACtC,MAAMgxB,EAAMitB,EAAKj+C,GACjB,IAAI28C,EAAaxlC,EACbylC,EAAWzlC,EAAQjgB,KAAKgrD,cAAcliD,EAAG8sB,EAAMk1B,GAC/CrE,EAAc7xB,EAAMwvB,kBAAkBt7C,GAAKutB,EAAM40B,8BAA8BjrD,KAAKm8C,UAAUrzC,GAAG+b,GAAK,EAC1G5E,EAAQylC,EACJhL,IACEqN,EAAcG,eAChBzB,EAAc,GAEZsB,EAAcF,gBAChBpC,EAAaC,EAAWkF,IAG5B,MAAMrX,EAAa,CACjB70B,EAAGspC,EACHrpC,EAAGspC,EACHzB,YAAa,EACbC,YAAAA,EACAhB,WAAAA,EACAC,SAAAA,EACA/lD,QAASK,KAAKq9C,0BAA0Bv0C,EAAGgxB,EAAI+Y,OAAS,SAAWjd,IAErE51B,KAAKo+C,cAActkB,EAAKhxB,EAAGyqC,EAAY3d,IAG3Cm1B,uBACE,MAAMhnB,EAAO/jC,KAAK+2C,YAClB,IAAI/S,EAAQ,EAMZ,OALAD,EAAK1hC,KAAK2D,SAAQ,CAAC4hC,EAASp+B,MACrBiV,MAAMze,KAAKm8C,UAAU3yC,GAAOqb,IAAM7kB,KAAK40B,MAAMwvB,kBAAkB56C,IAClEw6B,OAGGA,EAETgnB,cAAcxhD,EAAOosB,EAAMk1B,GACzB,OAAO9qD,KAAK40B,MAAMwvB,kBAAkB56C,GAChC6V,EAAUrf,KAAKq9C,0BAA0B7zC,EAAOosB,GAAM3V,OAAS6qC,GAC/D,GAGRT,GAAoBj9C,GAAK,YACzBi9C,GAAoBhjD,SAAW,CAC7Bk2C,gBAAiB,MACjBhpB,UAAW,CACTszB,eAAe,EACfK,cAAc,GAEhBxU,WAAY,CACVN,QAAS,CACPzsC,KAAM,SACN4sC,WAAY,CAAC,IAAK,IAAK,aAAc,WAAY,cAAe,iBAGpE7d,UAAW,IACX+vB,WAAY,GAEd4E,GAAoBv2B,UAAY,CAC9BgW,YAAa,EACb3T,QAAS,CACPqyB,OAAQ,CACN1M,OAAQ,CACN2M,eAAe7zB,GACb,MAAMvyB,EAAOuyB,EAAMvyB,KACnB,GAAIA,EAAKy5C,OAAO9yC,QAAU3G,EAAKqyB,SAAS1rB,OAAQ,CAC9C,MAAO8yC,QAAQ,WAACviB,IAAe3E,EAAM4zB,OAAO7oD,QAC5C,OAAO0C,EAAKy5C,OAAOrgC,KAAI,CAACuhC,EAAOl0C,KAC7B,MAAMi7B,EAAOnP,EAAM2lB,eAAe,GAC5BplB,EAAQ4O,EAAK+S,WAAWjP,SAAS/+B,GACvC,MAAO,CACL6yB,KAAMqhB,EACNzgB,UAAWpH,EAAMX,gBACjBwH,YAAa7G,EAAMV,YACnBwH,UAAW9G,EAAMkF,YACjBd,WAAYA,EACZ8e,QAASzjB,EAAMwvB,kBAAkBt7C,GACjCU,MAAOV,MAIb,MAAO,KAGXmtB,QAAQ/lB,EAAGw4C,EAAYF,GACrBA,EAAO5zB,MAAM+zB,qBAAqBD,EAAWl/C,OAC7Cg/C,EAAO5zB,MAAMke,WAGjBuT,QAAS,CACP/V,UAAW,CACTgW,QACE,MAAO,IAETtJ,MAAMj9C,GACJ,OAAOA,EAAQ60B,MAAMvyB,KAAKy5C,OAAO/7C,EAAQ43C,WAAa,KAAO53C,EAAQ+oD,mBAK7ExyB,OAAQ,CACNzR,EAAG,CACDle,KAAM,eACNukD,WAAY,CACVC,SAAS,GAEXzsB,aAAa,EACbumB,KAAM,CACJmG,UAAU,GAEZC,YAAa,CACXF,SAAS,GAEX1F,WAAY,KAKlB,MAAM6F,WAAsB/E,IAE5B+E,GAAcl+C,GAAK,MACnBk+C,GAAcjkD,SAAW,CACvBi+C,OAAQ,EACR9rB,SAAU,EACV6rB,cAAe,IACf5rB,OAAQ,QAGV,MAAM8xB,WAAwBhT,GAC5BwE,iBAAiBvzC,GACf,MAAMktC,EAAS12C,KAAK+2C,YAAYL,OAC1BniC,EAASvU,KAAKm8C,UAAU3yC,GAC9B,MAAO,CACLwzC,MAAOtG,EAAOqF,YAAYvyC,GAC1BpF,MAAO,GAAKsyC,EAAOuG,iBAAiB1oC,EAAOmiC,EAAOQ,QAGtDyE,gBAAgB5X,EAAM1hC,EAAMoX,EAAOuqB,GACjC,OAAOF,GAA4B58B,KAAKlH,KAAjC8jC,CAAuCC,EAAM1hC,EAAMoX,EAAOuqB,GAEnE8O,OAAOld,GACL,MAAMmO,EAAO/jC,KAAK+2C,YACZpiC,EAAOovB,EAAK0T,QACZpT,EAASN,EAAK1hC,MAAQ,GACtBy5C,EAAS/X,EAAKE,OAAO8X,YAE3B,GADApnC,EAAK0vB,OAASA,EACD,WAATzO,EAAmB,CACrB,MAAMj2B,EAAUK,KAAKo9C,6BAA6BxnB,GAC7C51B,KAAKL,QAAQ42B,WAChB52B,EAAQ06B,YAAc,GAExB,MAAMkZ,EAAa,CACjB/E,OAAO,EACPG,UAAWmN,EAAO9yC,SAAWq7B,EAAOr7B,OACpCrJ,QAAAA,GAEFK,KAAKo+C,cAAczpC,OAAM7O,EAAWytC,EAAY3d,GAElD51B,KAAKk/C,eAAe7a,EAAQ,EAAGA,EAAOr7B,OAAQ4sB,GAEhDspB,eAAe7a,EAAQ5qB,EAAOuqB,EAAOpO,GACnC,MAAMS,EAAQr2B,KAAK+2C,YAAYuD,OACzBI,EAAiB,UAAT9kB,EACd,IAAK,IAAI9sB,EAAI2Q,EAAO3Q,EAAI2Q,EAAQuqB,EAAOl7B,IAAK,CAC1C,MAAM0xB,EAAQ6J,EAAOv7B,GACfnJ,EAAUK,KAAKq9C,0BAA0Bv0C,EAAG0xB,EAAMqY,OAAS,SAAWjd,GACtE41B,EAAgBn1B,EAAMo1B,yBAAyB3iD,EAAG9I,KAAKm8C,UAAUrzC,GAAG+b,GACpEnG,EAAIg8B,EAAQrkB,EAAMq0B,QAAUc,EAAc9sC,EAC1CC,EAAI+7B,EAAQrkB,EAAMs0B,QAAUa,EAAc7sC,EAC1C40B,EAAa,CACjB70B,EAAAA,EACAC,EAAAA,EACAsB,MAAOurC,EAAcvrC,MACrBqkB,KAAM7lB,MAAMC,IAAMD,MAAME,GACxBhf,QAAAA,GAEFK,KAAKo+C,cAAc5jB,EAAO1xB,EAAGyqC,EAAY3d,KAI/C21B,GAAgBn+C,GAAK,QACrBm+C,GAAgBlkD,SAAW,CACzByzC,mBAAoB,OACpByC,gBAAiB,QACjB7nB,UAAW,IACXa,UAAU,EACVxB,SAAU,CACRpgB,KAAM,CACJylB,KAAM,WAIZmxB,GAAgBz3B,UAAY,CAC1BgW,YAAa,EACbxT,OAAQ,CACNzR,EAAG,CACDle,KAAM,kBAKZ,MAAM+kD,WAA0B3C,IAEhC2C,GAAkBt+C,GAAK,UACvBs+C,GAAkBrkD,SAAW,CAC3BkvB,UAAU,EACV6D,MAAM,GAERsxB,GAAkB53B,UAAY,CAC5B6B,YAAa,CACXC,KAAM,SAERO,QAAS,CACPkwB,QAAS,CACP/V,UAAW,CACTgW,QACE,MAAO,IAETtJ,MAAMlgC,GACJ,MAAO,IAAMA,EAAKkgC,MAAQ,KAAOlgC,EAAKgsC,eAAiB,QAK/DxyB,OAAQ,CACN5X,EAAG,CACD/X,KAAM,UAERgY,EAAG,CACDhY,KAAM,YAiBZ,SAAS,KACP,MAAM,IAAIoF,MAAM,mFAElB,MAAM4/C,GACJ30C,YAAYrX,GACVK,KAAKL,QAAUA,GAAW,GAE5BisD,UACE,OAAO,KAET57C,MAAM5L,EAAOunC,GACX,OAAO,KAETA,OAAOkgB,EAAWlgB,GAChB,OAAO,KAETprC,IAAIsrD,EAAWC,EAAQC,GACrB,OAAO,KAETC,KAAKt0C,EAAGC,EAAGo0C,GACT,OAAO,KAETE,QAAQJ,EAAWE,EAAMG,GACvB,OAAO,KAETC,MAAMN,EAAWE,GACf,OAAO,MAGXJ,GAAYh1B,SAAW,SAASy1B,GAC9B5/C,OAAOQ,OAAO2+C,GAAYlkD,UAAW2kD,IAEvC,IAAIC,GAAW,CACbC,MAAOX,IAGT,SAASY,GAAaC,EAAStV,EAAM9yC,EAAOyxB,GAC1C,MAAM,WAACihB,EAAU,KAAEz0C,EAAI,QAAEo5C,GAAW+Q,EAC9BvoB,EAAS6S,EAAWC,YAAY9S,OACtC,GAAIA,GAAUiT,IAASjT,EAAOiT,MAAiB,MAATA,GAAgBuE,GAAWp5C,EAAK2G,OAAQ,CAC5E,MAAMyjD,EAAexoB,EAAOyoB,eAAiBptB,GAAgBD,GAC7D,IAAKxJ,EACH,OAAO42B,EAAapqD,EAAM60C,EAAM9yC,GAC3B,GAAI0yC,EAAWgC,eAAgB,CACpC,MAAMpjC,EAAKrT,EAAK,GACVwb,EAA+B,oBAAhBnI,EAAGi3C,UAA2Bj3C,EAAGi3C,SAASzV,GAC/D,GAAIr5B,EAAO,CACT,MAAMpE,EAAQgzC,EAAapqD,EAAM60C,EAAM9yC,EAAQyZ,GACzCnE,EAAM+yC,EAAapqD,EAAM60C,EAAM9yC,EAAQyZ,GAC7C,MAAO,CAACuhB,GAAI3lB,EAAM2lB,GAAID,GAAIzlB,EAAIylB,MAIpC,MAAO,CAACC,GAAI,EAAGD,GAAI98B,EAAK2G,OAAS,GAEnC,SAAS4jD,GAAyBh4B,EAAOsiB,EAAM3+B,EAAUs0C,EAASh3B,GAChE,MAAMsf,EAAWvgB,EAAMk4B,+BACjB1oD,EAAQmU,EAAS2+B,GACvB,IAAK,IAAIpuC,EAAI,EAAGsS,EAAO+5B,EAASnsC,OAAQF,EAAIsS,IAAQtS,EAAG,CACrD,MAAM,MAACU,EAAK,KAAEnH,GAAQ8yC,EAASrsC,IACzB,GAACs2B,EAAE,GAAED,GAAMotB,GAAapX,EAASrsC,GAAIouC,EAAM9yC,EAAOyxB,GACxD,IAAK,IAAI3E,EAAIkO,EAAIlO,GAAKiO,IAAMjO,EAAG,CAC7B,MAAM0W,EAAUvlC,EAAK6uB,GAChB0W,EAAQtD,MACXuoB,EAAQjlB,EAASp+B,EAAO0nB,KAKhC,SAAS67B,GAAyB7V,GAChC,MAAM8V,GAA8B,IAAvB9V,EAAKnyC,QAAQ,KACpBkoD,GAA8B,IAAvB/V,EAAKnyC,QAAQ,KAC1B,OAAO,SAASsb,EAAKC,GACnB,MAAM4sC,EAASF,EAAO/9C,KAAK4P,IAAIwB,EAAI3B,EAAI4B,EAAI5B,GAAK,EAC1CyuC,EAASF,EAAOh+C,KAAK4P,IAAIwB,EAAI1B,EAAI2B,EAAI3B,GAAK,EAChD,OAAO1P,KAAKqP,KAAKrP,KAAKiP,IAAIgvC,EAAQ,GAAKj+C,KAAKiP,IAAIivC,EAAQ,KAG5D,SAASC,GAAkBx4B,EAAOrc,EAAU2+B,EAAMmW,EAAkBv3B,GAClE,MAAMqK,EAAQ,GACd,IAAKrK,IAAqBlB,EAAM04B,cAAc/0C,GAC5C,OAAO4nB,EAET,MAAMotB,EAAiB,SAAS3lB,EAASrsB,EAAc/R,IAChDssB,GAAqByE,GAAeqN,EAAShT,EAAMuoB,UAAW,KAG/DvV,EAAQ4lB,QAAQj1C,EAASmG,EAAGnG,EAASoG,EAAG0uC,IAC1CltB,EAAM52B,KAAK,CAACq+B,QAAAA,EAASrsB,aAAAA,EAAc/R,MAAAA,KAIvC,OADAojD,GAAyBh4B,EAAOsiB,EAAM3+B,EAAUg1C,GAAgB,GACzDptB,EAET,SAASstB,GAAsB74B,EAAOrc,EAAU2+B,EAAMmW,GACpD,IAAIltB,EAAQ,GACZ,SAASotB,EAAe3lB,EAASrsB,EAAc/R,GAC7C,MAAM,WAACi8C,EAAU,SAAEC,GAAY9d,EAAQ8lB,SAAS,CAAC,aAAc,YAAaL,IACtE,MAACptC,GAASN,GAAkBioB,EAAS,CAAClpB,EAAGnG,EAASmG,EAAGC,EAAGpG,EAASoG,IACnE8B,GAAcR,EAAOwlC,EAAYC,IACnCvlB,EAAM52B,KAAK,CAACq+B,QAAAA,EAASrsB,aAAAA,EAAc/R,MAAAA,IAIvC,OADAojD,GAAyBh4B,EAAOsiB,EAAM3+B,EAAUg1C,GACzCptB,EAET,SAASwtB,GAAyB/4B,EAAOrc,EAAU2+B,EAAMrhB,EAAWw3B,EAAkBv3B,GACpF,IAAIqK,EAAQ,GACZ,MAAMytB,EAAiBb,GAAyB7V,GAChD,IAAI2W,EAAczzC,OAAOiD,kBACzB,SAASkwC,EAAe3lB,EAASrsB,EAAc/R,GAC7C,MAAMgkD,EAAU5lB,EAAQ4lB,QAAQj1C,EAASmG,EAAGnG,EAASoG,EAAG0uC,GACxD,GAAIx3B,IAAc23B,EAChB,OAEF,MAAM9J,EAAS9b,EAAQkmB,eAAeT,GAChCU,IAAgBj4B,GAAoBlB,EAAM04B,cAAc5J,GAC9D,IAAKqK,IAAgBP,EACnB,OAEF,MAAMrtC,EAAWytC,EAAer1C,EAAUmrC,GACtCvjC,EAAW0tC,GACb1tB,EAAQ,CAAC,CAACyH,QAAAA,EAASrsB,aAAAA,EAAc/R,MAAAA,IACjCqkD,EAAc1tC,GACLA,IAAa0tC,GACtB1tB,EAAM52B,KAAK,CAACq+B,QAAAA,EAASrsB,aAAAA,EAAc/R,MAAAA,IAIvC,OADAojD,GAAyBh4B,EAAOsiB,EAAM3+B,EAAUg1C,GACzCptB,EAET,SAAS6tB,GAAgBp5B,EAAOrc,EAAU2+B,EAAMrhB,EAAWw3B,EAAkBv3B,GAC3E,OAAKA,GAAqBlB,EAAM04B,cAAc/0C,GAG9B,MAAT2+B,GAAiBrhB,EAEpB83B,GAAyB/4B,EAAOrc,EAAU2+B,EAAMrhB,EAAWw3B,EAAkBv3B,GAD7E23B,GAAsB74B,EAAOrc,EAAU2+B,EAAMmW,GAHxC,GAMX,SAASY,GAAar5B,EAAOrc,EAAU2+B,EAAMrhB,EAAWw3B,GACtD,MAAMltB,EAAQ,GACR+tB,EAAuB,MAAThX,EAAe,WAAa,WAChD,IAAIiX,GAAiB,EAOrB,OANAvB,GAAyBh4B,EAAOsiB,EAAM3+B,GAAU,CAACqvB,EAASrsB,EAAc/R,KAClEo+B,EAAQsmB,GAAa31C,EAAS2+B,GAAOmW,KACvCltB,EAAM52B,KAAK,CAACq+B,QAAAA,EAASrsB,aAAAA,EAAc/R,MAAAA,IACnC2kD,EAAiBA,GAAkBvmB,EAAQ4lB,QAAQj1C,EAASmG,EAAGnG,EAASoG,EAAG0uC,OAG3Ex3B,IAAcs4B,EACT,GAEFhuB,EAET,IAAIiuB,GAAc,CAChBxB,yBAAAA,GACAyB,MAAO,CACL7kD,MAAMorB,EAAO1kB,EAAGvQ,EAAS0tD,GACvB,MAAM90C,EAAWqwB,GAAoB14B,EAAG0kB,GAClCsiB,EAAOv3C,EAAQu3C,MAAQ,IACvBphB,EAAmBn2B,EAAQm2B,mBAAoB,EAC/CqK,EAAQxgC,EAAQk2B,UAClBu3B,GAAkBx4B,EAAOrc,EAAU2+B,EAAMmW,EAAkBv3B,GAC3Dk4B,GAAgBp5B,EAAOrc,EAAU2+B,GAAM,EAAOmW,EAAkBv3B,GAC9Df,EAAW,GACjB,OAAKoL,EAAMn3B,QAGX4rB,EAAMk4B,+BAA+B9mD,SAAS+9B,IAC5C,MAAMv6B,EAAQ22B,EAAM,GAAG32B,MACjBo+B,EAAU7D,EAAK1hC,KAAKmH,GACtBo+B,IAAYA,EAAQtD,MACtBvP,EAASxrB,KAAK,CAACq+B,QAAAA,EAASrsB,aAAcwoB,EAAKv6B,MAAOA,MAAAA,OAG/CurB,GATE,IAWX0iB,QAAQ7iB,EAAO1kB,EAAGvQ,EAAS0tD,GACzB,MAAM90C,EAAWqwB,GAAoB14B,EAAG0kB,GAClCsiB,EAAOv3C,EAAQu3C,MAAQ,KACvBphB,EAAmBn2B,EAAQm2B,mBAAoB,EACrD,IAAIqK,EAAQxgC,EAAQk2B,UAChBu3B,GAAkBx4B,EAAOrc,EAAU2+B,EAAMmW,EAAkBv3B,GAC7Dk4B,GAAgBp5B,EAAOrc,EAAU2+B,GAAM,EAAOmW,EAAkBv3B,GAClE,GAAIqK,EAAMn3B,OAAS,EAAG,CACpB,MAAMuS,EAAe4kB,EAAM,GAAG5kB,aACxBlZ,EAAOuyB,EAAM2lB,eAAeh/B,GAAclZ,KAChD89B,EAAQ,GACR,IAAK,IAAIr3B,EAAI,EAAGA,EAAIzG,EAAK2G,SAAUF,EACjCq3B,EAAM52B,KAAK,CAACq+B,QAASvlC,EAAKyG,GAAIyS,aAAAA,EAAc/R,MAAOV,IAGvD,OAAOq3B,GAET3F,MAAM5F,EAAO1kB,EAAGvQ,EAAS0tD,GACvB,MAAM90C,EAAWqwB,GAAoB14B,EAAG0kB,GAClCsiB,EAAOv3C,EAAQu3C,MAAQ,KACvBphB,EAAmBn2B,EAAQm2B,mBAAoB,EACrD,OAAOs3B,GAAkBx4B,EAAOrc,EAAU2+B,EAAMmW,EAAkBv3B,IAEpEw4B,QAAQ15B,EAAO1kB,EAAGvQ,EAAS0tD,GACzB,MAAM90C,EAAWqwB,GAAoB14B,EAAG0kB,GAClCsiB,EAAOv3C,EAAQu3C,MAAQ,KACvBphB,EAAmBn2B,EAAQm2B,mBAAoB,EACrD,OAAOk4B,GAAgBp5B,EAAOrc,EAAU2+B,EAAMv3C,EAAQk2B,UAAWw3B,EAAkBv3B,IAErFpX,EAAEkW,EAAO1kB,EAAGvQ,EAAS0tD,GACnB,MAAM90C,EAAWqwB,GAAoB14B,EAAG0kB,GACxC,OAAOq5B,GAAar5B,EAAOrc,EAAU,IAAK5Y,EAAQk2B,UAAWw3B,IAE/D1uC,EAAEiW,EAAO1kB,EAAGvQ,EAAS0tD,GACnB,MAAM90C,EAAWqwB,GAAoB14B,EAAG0kB,GACxC,OAAOq5B,GAAar5B,EAAOrc,EAAU,IAAK5Y,EAAQk2B,UAAWw3B,MAKnE,MAAMkB,GAAmB,CAAC,OAAQ,MAAO,QAAS,UAClD,SAASC,GAAiBvvC,EAAO1G,GAC/B,OAAO0G,EAAM9G,QAAOtG,GAAKA,EAAE4K,MAAQlE,IAErC,SAASk2C,GAA4BxvC,EAAOi4B,GAC1C,OAAOj4B,EAAM9G,QAAOtG,IAA0C,IAArC08C,GAAiBxpD,QAAQ8M,EAAE4K,MAAe5K,EAAE22B,IAAI0O,OAASA,IAEpF,SAASwX,GAAazvC,EAAOlE,GAC3B,OAAOkE,EAAMV,MAAK,CAAC7G,EAAGC,KACpB,MAAM0D,EAAKN,EAAUpD,EAAID,EACnB4D,EAAKP,EAAUrD,EAAIC,EACzB,OAAO0D,EAAGyX,SAAWxX,EAAGwX,OACtBzX,EAAG7R,MAAQ8R,EAAG9R,MACd6R,EAAGyX,OAASxX,EAAGwX,UAGrB,SAAS67B,GAAUC,GACjB,MAAMC,EAAc,GACpB,IAAI/lD,EAAGsS,EAAMotB,EAAK/rB,EAAKnQ,EAAOwiD,EAC9B,IAAKhmD,EAAI,EAAGsS,GAAQwzC,GAAS,IAAI5lD,OAAQF,EAAIsS,IAAQtS,EACnD0/B,EAAMomB,EAAM9lD,KACVyP,SAAUkE,EAAK9c,SAAU2M,MAAAA,EAAOwiD,YAAAA,EAAc,IAAMtmB,GACtDqmB,EAAYtlD,KAAK,CACfC,MAAOV,EACP0/B,IAAAA,EACA/rB,IAAAA,EACAwlC,WAAYzZ,EAAIuZ,eAChBjvB,OAAQ0V,EAAI1V,OACZxmB,MAAOA,GAAUmQ,EAAMnQ,EACvBwiD,YAAAA,IAGJ,OAAOD,EAET,SAASE,GAAYC,GACnB,MAAM3Y,EAAS,GACf,IAAK,MAAM4Y,KAAQD,EAAS,CAC1B,MAAM,MAAC1iD,EAAK,IAAEmQ,EAAG,YAAEqyC,GAAeG,EAClC,IAAK3iD,IAAUiiD,GAAiB/sB,SAAS/kB,GACvC,SAEF,MAAM0lB,EAASkU,EAAO/pC,KAAW+pC,EAAO/pC,GAAS,CAAC03B,MAAO,EAAGkrB,OAAQ,EAAGp8B,OAAQ,EAAGjW,KAAM,IACxFslB,EAAO6B,QACP7B,EAAOrP,QAAUg8B,EAEnB,OAAOzY,EAET,SAAS8Y,GAAcH,EAASvqD,GAC9B,MAAM4xC,EAAS0Y,GAAYC,IACrB,aAACI,EAAY,cAAEC,GAAiB5qD,EACtC,IAAIqE,EAAGsS,EAAMk0C,EACb,IAAKxmD,EAAI,EAAGsS,EAAO4zC,EAAQhmD,OAAQF,EAAIsS,IAAQtS,EAAG,CAChDwmD,EAASN,EAAQlmD,GACjB,MAAM,SAACymD,GAAYD,EAAO9mB,IACpBl8B,EAAQ+pC,EAAOiZ,EAAOhjD,OACtBylC,EAASzlC,GAASgjD,EAAOR,YAAcxiD,EAAMwmB,OAC/Cw8B,EAAOrN,YACTqN,EAAOt3B,MAAQ+Z,EAASA,EAASqd,EAAeG,GAAY9qD,EAAO+qD,eACnEF,EAAOp2B,OAASm2B,IAEhBC,EAAOt3B,MAAQo3B,EACfE,EAAOp2B,OAAS6Y,EAASA,EAASsd,EAAgBE,GAAY9qD,EAAOgrD,iBAGzE,OAAOpZ,EAET,SAASqZ,GAAiBd,GACxB,MAAMC,EAAcF,GAAUC,GACxBW,EAAWb,GAAaG,EAAY12C,QAAO82C,GAAQA,EAAKzmB,IAAI+mB,YAAW,GACvE31C,EAAO80C,GAAaF,GAAiBK,EAAa,SAAS,GAC3Dh1C,EAAQ60C,GAAaF,GAAiBK,EAAa,UACnDl0B,EAAM+zB,GAAaF,GAAiBK,EAAa,QAAQ,GACzDj0B,EAAS8zB,GAAaF,GAAiBK,EAAa,WACpDc,EAAmBlB,GAA4BI,EAAa,KAC5De,EAAiBnB,GAA4BI,EAAa,KAChE,MAAO,CACLU,SAAAA,EACAM,WAAYj2C,EAAK3Y,OAAO05B,GACxBm1B,eAAgBj2C,EAAM5Y,OAAO2uD,GAAgB3uD,OAAO25B,GAAQ35B,OAAO0uD,GACnExS,UAAWqR,GAAiBK,EAAa,aACzCkB,SAAUn2C,EAAK3Y,OAAO4Y,GAAO5Y,OAAO2uD,GACpC3N,WAAYtnB,EAAI15B,OAAO25B,GAAQ35B,OAAO0uD,IAG1C,SAASK,GAAeC,EAAY9S,EAAWzlC,EAAGC,GAChD,OAAO1I,KAAKmQ,IAAI6wC,EAAWv4C,GAAIylC,EAAUzlC,IAAMzI,KAAKmQ,IAAI6wC,EAAWt4C,GAAIwlC,EAAUxlC,IAEnF,SAASu4C,GAAiBD,EAAYE,GACpCF,EAAWt1B,IAAM1rB,KAAKmQ,IAAI6wC,EAAWt1B,IAAKw1B,EAAWx1B,KACrDs1B,EAAWr2C,KAAO3K,KAAKmQ,IAAI6wC,EAAWr2C,KAAMu2C,EAAWv2C,MACvDq2C,EAAWr1B,OAAS3rB,KAAKmQ,IAAI6wC,EAAWr1B,OAAQu1B,EAAWv1B,QAC3Dq1B,EAAWp2C,MAAQ5K,KAAKmQ,IAAI6wC,EAAWp2C,MAAOs2C,EAAWt2C,OAE3D,SAASu2C,GAAWjT,EAAW14C,EAAQ6qD,EAAQjZ,GAC7C,MAAM,IAAC55B,EAAG,IAAE+rB,GAAO8mB,EACbW,EAAa9S,EAAU8S,WAC7B,IAAKn/C,EAAS2L,GAAM,CACd6yC,EAAOzyC,OACTsgC,EAAU1gC,IAAQ6yC,EAAOzyC,MAE3B,MAAMvQ,EAAQ+pC,EAAOiZ,EAAOhjD,QAAU,CAACuQ,KAAM,EAAGmnB,MAAO,GACvD13B,EAAMuQ,KAAO5N,KAAKmQ,IAAI9S,EAAMuQ,KAAMyyC,EAAOrN,WAAazZ,EAAItP,OAASsP,EAAIxQ,OACvEs3B,EAAOzyC,KAAOvQ,EAAMuQ,KAAOvQ,EAAM03B,MACjCmZ,EAAU1gC,IAAQ6yC,EAAOzyC,KAEvB2rB,EAAI6nB,YACNH,GAAiBD,EAAYznB,EAAI6nB,cAEnC,MAAMC,EAAWrhD,KAAKmQ,IAAI,EAAG3a,EAAO8rD,WAAaP,GAAeC,EAAY9S,EAAW,OAAQ,UACzFqT,EAAYvhD,KAAKmQ,IAAI,EAAG3a,EAAOgsD,YAAcT,GAAeC,EAAY9S,EAAW,MAAO,WAC1FuT,EAAeJ,IAAanT,EAAU53B,EACtCorC,EAAgBH,IAAcrT,EAAUr8C,EAG9C,OAFAq8C,EAAU53B,EAAI+qC,EACdnT,EAAUr8C,EAAI0vD,EACPlB,EAAOrN,WACV,CAAC2O,KAAMF,EAAcG,MAAOF,GAC5B,CAACC,KAAMD,EAAeE,MAAOH,GAEnC,SAASI,GAAiB3T,GACxB,MAAM8S,EAAa9S,EAAU8S,WAC7B,SAASc,EAAUt0C,GACjB,MAAMkiB,EAAS1vB,KAAKmQ,IAAI6wC,EAAWxzC,GAAO0gC,EAAU1gC,GAAM,GAE1D,OADA0gC,EAAU1gC,IAAQkiB,EACXA,EAETwe,EAAUx+B,GAAKoyC,EAAU,OACzB5T,EAAUz+B,GAAKqyC,EAAU,QACzBA,EAAU,SACVA,EAAU,UAEZ,SAASC,GAAW/O,EAAY9E,GAC9B,MAAM8S,EAAa9S,EAAU8S,WAC7B,SAASgB,EAAmBlpB,GAC1B,MAAMrN,EAAS,CAAC9gB,KAAM,EAAG+gB,IAAK,EAAG9gB,MAAO,EAAG+gB,OAAQ,GAInD,OAHAmN,EAAU/hC,SAASyW,IACjBie,EAAOje,GAAOxN,KAAKmQ,IAAI+9B,EAAU1gC,GAAMwzC,EAAWxzC,OAE7Cie,EAET,OACIu2B,EADGhP,EACgB,CAAC,OAAQ,SACT,CAAC,MAAO,WAEjC,SAASiP,GAAStC,EAAOzR,EAAW14C,EAAQ4xC,GAC1C,MAAM8a,EAAa,GACnB,IAAIroD,EAAGsS,EAAMk0C,EAAQ9mB,EAAK4oB,EAAOhH,EACjC,IAAKthD,EAAI,EAAGsS,EAAOwzC,EAAM5lD,OAAQooD,EAAQ,EAAGtoD,EAAIsS,IAAQtS,EAAG,CACzDwmD,EAASV,EAAM9lD,GACf0/B,EAAM8mB,EAAO9mB,IACbA,EAAIsK,OACFwc,EAAOt3B,OAASmlB,EAAU53B,EAC1B+pC,EAAOp2B,QAAUikB,EAAUr8C,EAC3BkwD,GAAW1B,EAAOrN,WAAY9E,IAEhC,MAAM,KAACyT,EAAI,MAAEC,GAAST,GAAWjT,EAAW14C,EAAQ6qD,EAAQjZ,GAC5D+a,GAASR,GAAQO,EAAWnoD,OAC5BohD,EAAUA,GAAWyG,EAChBroB,EAAI+mB,UACP4B,EAAW5nD,KAAK+lD,GAGpB,OAAO8B,GAASF,GAASC,EAAYhU,EAAW14C,EAAQ4xC,IAAW+T,EAErE,SAASiH,GAAW7oB,EAAK5uB,EAAM+gB,EAAK3C,EAAOkB,GACzCsP,EAAI7N,IAAMA,EACV6N,EAAI5uB,KAAOA,EACX4uB,EAAI3uB,MAAQD,EAAOoe,EACnBwQ,EAAI5N,OAASD,EAAMzB,EACnBsP,EAAIxQ,MAAQA,EACZwQ,EAAItP,OAASA,EAEf,SAASo4B,GAAW1C,EAAOzR,EAAW14C,EAAQ4xC,GAC5C,MAAMkb,EAAc9sD,EAAO+sD,QAC3B,IAAI,EAAC9yC,EAAC,EAAEC,GAAKw+B,EACb,IAAK,MAAMmS,KAAUV,EAAO,CAC1B,MAAMpmB,EAAM8mB,EAAO9mB,IACbl8B,EAAQ+pC,EAAOiZ,EAAOhjD,QAAU,CAAC03B,MAAO,EAAGkrB,OAAQ,EAAGp8B,OAAQ,GAC9DA,EAAUw8B,EAAOR,YAAcxiD,EAAMwmB,QAAW,EACtD,GAAIw8B,EAAOrN,WAAY,CACrB,MAAMjqB,EAAQmlB,EAAU53B,EAAIuN,EACtBoG,EAAS5sB,EAAMuQ,MAAQ2rB,EAAItP,OAC7Bvc,EAAQrQ,EAAMmN,SAChBkF,EAAIrS,EAAMmN,OAER+uB,EAAI+mB,SACN8B,GAAW7oB,EAAK+oB,EAAY33C,KAAM+E,EAAGla,EAAO8rD,WAAagB,EAAY13C,MAAQ03C,EAAY33C,KAAMsf,GAE/Fm4B,GAAW7oB,EAAK2U,EAAUvjC,KAAOtN,EAAM4iD,OAAQvwC,EAAGqZ,EAAOkB,GAE3D5sB,EAAMmN,MAAQkF,EACdrS,EAAM4iD,QAAUl3B,EAChBrZ,EAAI6pB,EAAI5N,WACH,CACL,MAAM1B,EAASikB,EAAUr8C,EAAIgyB,EACvBkF,EAAQ1rB,EAAMuQ,MAAQ2rB,EAAIxQ,MAC5Brb,EAAQrQ,EAAMmN,SAChBiF,EAAIpS,EAAMmN,OAER+uB,EAAI+mB,SACN8B,GAAW7oB,EAAK9pB,EAAG6yC,EAAY52B,IAAK3C,EAAOvzB,EAAOgsD,YAAcc,EAAY32B,OAAS22B,EAAY52B,KAEjG02B,GAAW7oB,EAAK9pB,EAAGy+B,EAAUxiB,IAAMruB,EAAM4iD,OAAQl3B,EAAOkB,GAE1D5sB,EAAMmN,MAAQiF,EACdpS,EAAM4iD,QAAUh2B,EAChBxa,EAAI8pB,EAAI3uB,OAGZsjC,EAAUz+B,EAAIA,EACdy+B,EAAUx+B,EAAIA,EAEhBtX,GAAS4sB,IAAI,SAAU,CACrBw9B,aAAa,EACbD,QAAS,CACP72B,IAAK,EACL9gB,MAAO,EACP+gB,OAAQ,EACRhhB,KAAM,KAGV,IAAIo1C,GAAU,CACZ0C,OAAO98B,EAAO9X,GACP8X,EAAMg6B,QACTh6B,EAAMg6B,MAAQ,IAEhB9xC,EAAKyyC,SAAWzyC,EAAKyyC,WAAY,EACjCzyC,EAAKvE,SAAWuE,EAAKvE,UAAY,MACjCuE,EAAKgW,OAAShW,EAAKgW,QAAU,EAC7BhW,EAAK60C,QAAU70C,EAAK60C,SAAW,WAC7B,MAAO,CAAC,CACNC,EAAG,EACH7gB,KAAKoM,GACHrgC,EAAKi0B,KAAKoM,OAIhBvoB,EAAMg6B,MAAMrlD,KAAKuT,IAEnB+0C,UAAUj9B,EAAOk9B,GACf,MAAMtoD,EAAQorB,EAAMg6B,MAAQh6B,EAAMg6B,MAAM7pD,QAAQ+sD,IAAe,GAChD,IAAXtoD,GACForB,EAAMg6B,MAAMnlD,OAAOD,EAAO,IAG9BuqC,UAAUnf,EAAO9X,EAAMnd,GACrBmd,EAAKyyC,SAAW5vD,EAAQ4vD,SACxBzyC,EAAKvE,SAAW5Y,EAAQ4Y,SACxBuE,EAAKgW,OAASnzB,EAAQmzB,QAExBggB,OAAOle,EAAOoD,EAAOkB,EAAQ64B,GAC3B,IAAKn9B,EACH,OAEF,MAAM48B,EAAUvzB,GAAUrJ,EAAMj1B,QAAQ2vD,OAAOkC,SACzChC,EAAiBvgD,KAAKmQ,IAAI4Y,EAAQw5B,EAAQx5B,MAAO,GACjDy3B,EAAkBxgD,KAAKmQ,IAAI8Z,EAASs4B,EAAQt4B,OAAQ,GACpD01B,EAAQc,GAAiB96B,EAAMg6B,OAC/BoD,EAAgBpD,EAAMmB,SACtBkC,EAAkBrD,EAAM3M,WAC9BpnC,EAAK+Z,EAAMg6B,OAAOpmB,IACgB,oBAArBA,EAAI0pB,cACb1pB,EAAI0pB,kBAGR,MAAMC,EAA0BH,EAActgB,QAAO,CAAC+V,EAAOwH,IAC3DA,EAAKzmB,IAAI7oC,UAAwC,IAA7BsvD,EAAKzmB,IAAI7oC,QAAQwrD,QAAoB1D,EAAQA,EAAQ,GAAG,IAAM,EAC9EhjD,EAAS+H,OAAOoxC,OAAO,CAC3B2S,WAAYv4B,EACZy4B,YAAav3B,EACbs4B,QAAAA,EACAhC,eAAAA,EACAC,gBAAAA,EACAL,aAAcI,EAAiB,EAAI2C,EACnC9C,cAAeI,EAAkB,IAE7BQ,EAAazjD,OAAOQ,OAAO,GAAIwkD,GACrCtB,GAAiBD,EAAYhyB,GAAU8zB,IACvC,MAAM5U,EAAY3wC,OAAOQ,OAAO,CAC9BijD,WAAAA,EACA1qC,EAAGiqC,EACH1uD,EAAG2uD,EACH/wC,EAAG8yC,EAAQ53C,KACX+E,EAAG6yC,EAAQ72B,KACV62B,GACGnb,EAAS8Y,GAAc6C,EAAc/wD,OAAOgxD,GAAkBxtD,GACpEysD,GAAStC,EAAMW,SAAUpS,EAAW14C,EAAQ4xC,GAC5C6a,GAASc,EAAe7U,EAAW14C,EAAQ4xC,GACvC6a,GAASe,EAAiB9U,EAAW14C,EAAQ4xC,IAC/C6a,GAASc,EAAe7U,EAAW14C,EAAQ4xC,GAE7Cya,GAAiB3T,GACjBmU,GAAW1C,EAAMiB,WAAY1S,EAAW14C,EAAQ4xC,GAChD8G,EAAUz+B,GAAKy+B,EAAU53B,EACzB43B,EAAUx+B,GAAKw+B,EAAUr8C,EACzBwwD,GAAW1C,EAAMkB,eAAgB3S,EAAW14C,EAAQ4xC,GACpDzhB,EAAMuoB,UAAY,CAChBvjC,KAAMujC,EAAUvjC,KAChB+gB,IAAKwiB,EAAUxiB,IACf9gB,MAAOsjC,EAAUvjC,KAAOujC,EAAU53B,EAClCqV,OAAQuiB,EAAUxiB,IAAMwiB,EAAUr8C,EAClCo4B,OAAQikB,EAAUr8C,EAClBk3B,MAAOmlB,EAAU53B,GAEnB1K,EAAK+zC,EAAMzR,WAAYmS,IACrB,MAAM9mB,EAAM8mB,EAAO9mB,IACnBh8B,OAAOQ,OAAOw7B,EAAK5T,EAAMuoB,WACzB3U,EAAIsK,OAAOqK,EAAU53B,EAAG43B,EAAUr8C,EAAG,CAAC8Y,KAAM,EAAG+gB,IAAK,EAAG9gB,MAAO,EAAG+gB,OAAQ,SAK/E,MAAMw3B,GACJC,eAAev5B,EAAQgR,IACvBwoB,eAAevyD,GACb,OAAO,EAETwG,iBAAiBquB,EAAOjuB,EAAM2C,IAC9BzG,oBAAoB+xB,EAAOjuB,EAAM2C,IACjCwrB,sBACE,OAAO,EAET6U,eAAe/B,EAAS5P,EAAOkB,EAAQ4Q,GAGrC,OAFA9R,EAAQ/oB,KAAKmQ,IAAI,EAAG4Y,GAAS4P,EAAQ5P,OACrCkB,EAASA,GAAU0O,EAAQ1O,OACpB,CACLlB,MAAAA,EACAkB,OAAQjqB,KAAKmQ,IAAI,EAAG0qB,EAAc76B,KAAKC,MAAM8oB,EAAQ8R,GAAe5Q,IAGxEq5B,WAAWz5B,GACT,OAAO,EAET05B,aAAazwD,KAIf,MAAM0wD,WAAsBL,GAC1BC,eAAev1C,GACb,OAAOA,GAAQA,EAAKic,YAAcjc,EAAKic,WAAW,OAAS,KAE7Dy5B,aAAazwD,GACXA,EAAOpC,QAAQ40B,WAAY,GAI/B,MAAMm+B,GAAc,WACdC,GAAc,CAClBC,WAAY,YACZC,UAAW,YACXC,SAAU,UACVC,aAAc,aACdC,YAAa,YACbC,YAAa,YACbC,UAAW,UACXC,aAAc,WACdC,WAAY,YAERC,GAAgBjvD,GAAmB,OAAVA,GAA4B,KAAVA,EACjD,SAASkvD,GAAWx6B,EAAQgR,GAC1B,MAAM3U,EAAQ2D,EAAO3D,MACfo+B,EAAez6B,EAAO06B,aAAa,UACnCC,EAAc36B,EAAO06B,aAAa,SAcxC,GAbA16B,EAAO45B,IAAe,CACpBjiB,QAAS,CACPvX,OAAQq6B,EACRv7B,MAAOy7B,EACPt+B,MAAO,CACLg2B,QAASh2B,EAAMg2B,QACfjyB,OAAQ/D,EAAM+D,OACdlB,MAAO7C,EAAM6C,SAInB7C,EAAMg2B,QAAUh2B,EAAMg2B,SAAW,QACjCh2B,EAAM4T,UAAY5T,EAAM4T,WAAa,aACjCsqB,GAAcI,GAAc,CAC9B,MAAMC,EAAe/oB,GAAa7R,EAAQ,cACrBhzB,IAAjB4tD,IACF56B,EAAOd,MAAQ07B,GAGnB,GAAIL,GAAcE,GAChB,GAA4B,KAAxBz6B,EAAO3D,MAAM+D,OACfJ,EAAOI,OAASJ,EAAOd,OAAS8R,GAAe,OAC1C,CACL,MAAM6pB,EAAgBhpB,GAAa7R,EAAQ,eACrBhzB,IAAlB6tD,IACF76B,EAAOI,OAASy6B,GAItB,OAAO76B,EAET,MAAM86B,KAAuBppB,IAA+B,CAACE,SAAS,GACtE,SAASmpB,GAAY7/B,EAAMrtB,EAAM2C,GAC/B0qB,EAAKztB,iBAAiBI,EAAM2C,EAAUsqD,IAExC,SAASE,GAAel/B,EAAOjuB,EAAM2C,GACnCsrB,EAAMkE,OAAOj2B,oBAAoB8D,EAAM2C,EAAUsqD,IAEnD,SAASG,GAAgBviB,EAAO5c,GAC9B,MAAMjuB,EAAOgsD,GAAYnhB,EAAM7qC,OAAS6qC,EAAM7qC,MACxC,EAAC+X,EAAC,EAAEC,GAAKiqB,GAAoB4I,EAAO5c,GAC1C,MAAO,CACLjuB,KAAAA,EACAiuB,MAAAA,EACAo/B,OAAQxiB,EACR9yB,OAAS5Y,IAAN4Y,EAAkBA,EAAI,KACzBC,OAAS7Y,IAAN6Y,EAAkBA,EAAI,MAG7B,SAASs1C,GAAiBC,EAAUp7B,GAClC,IAAK,MAAM9E,KAAQkgC,EACjB,GAAIlgC,IAAS8E,GAAU9E,EAAKmgC,SAASr7B,GACnC,OAAO,EAIb,SAASs7B,GAAqBx/B,EAAOjuB,EAAM2C,GACzC,MAAMwvB,EAASlE,EAAMkE,OACfu7B,EAAW,IAAIC,kBAAiBC,IACpC,IAAIC,GAAU,EACd,IAAK,MAAMrT,KAASoT,EAClBC,EAAUA,GAAWP,GAAiB9S,EAAMsT,WAAY37B,GACxD07B,EAAUA,IAAYP,GAAiB9S,EAAMuT,aAAc57B,GAEzD07B,GACFlrD,OAIJ,OADA+qD,EAASM,QAAQ/hD,SAAU,CAACgiD,WAAW,EAAMC,SAAS,IAC/CR,EAET,SAASS,GAAqBlgC,EAAOjuB,EAAM2C,GACzC,MAAMwvB,EAASlE,EAAMkE,OACfu7B,EAAW,IAAIC,kBAAiBC,IACpC,IAAIC,GAAU,EACd,IAAK,MAAMrT,KAASoT,EAClBC,EAAUA,GAAWP,GAAiB9S,EAAMuT,aAAc57B,GAC1D07B,EAAUA,IAAYP,GAAiB9S,EAAMsT,WAAY37B,GAEvD07B,GACFlrD,OAIJ,OADA+qD,EAASM,QAAQ/hD,SAAU,CAACgiD,WAAW,EAAMC,SAAS,IAC/CR,EAET,MAAMU,GAAqB,IAAI7pB,IAC/B,IAAI8pB,GAAsB,EAC1B,SAASC,KACP,MAAMC,EAAM9gD,OAAOugB,iBACfugC,IAAQF,KAGZA,GAAsBE,EACtBH,GAAmB/uD,SAAQ,CAACwtC,EAAQ5e,KAC9BA,EAAM+D,0BAA4Bu8B,GACpC1hB,QAIN,SAAS2hB,GAA8BvgC,EAAO4e,GACvCuhB,GAAmBl4C,MACtBzI,OAAO7N,iBAAiB,SAAU0uD,IAEpCF,GAAmB9gC,IAAIW,EAAO4e,GAEhC,SAAS4hB,GAAgCxgC,GACvCmgC,GAAmB7xB,OAAOtO,GACrBmgC,GAAmBl4C,MACtBzI,OAAOvR,oBAAoB,SAAUoyD,IAGzC,SAASI,GAAqBzgC,EAAOjuB,EAAM2C,GACzC,MAAMwvB,EAASlE,EAAMkE,OACfsQ,EAAYtQ,GAAUsO,GAAetO,GAC3C,IAAKsQ,EACH,OAEF,MAAMoK,EAAS16B,GAAU,CAACkf,EAAOkB,KAC/B,MAAM3T,EAAI6jB,EAAUI,YACpBlgC,EAAS0uB,EAAOkB,GACZ3T,EAAI6jB,EAAUI,aAChBlgC,MAED8K,QACGigD,EAAW,IAAIiB,gBAAef,IAClC,MAAMpT,EAAQoT,EAAQ,GAChBv8B,EAAQmpB,EAAMoU,YAAYv9B,MAC1BkB,EAASioB,EAAMoU,YAAYr8B,OACnB,IAAVlB,GAA0B,IAAXkB,GAGnBsa,EAAOxb,EAAOkB,MAIhB,OAFAm7B,EAASM,QAAQvrB,GACjB+rB,GAA8BvgC,EAAO4e,GAC9B6gB,EAET,SAASmB,GAAgB5gC,EAAOjuB,EAAM0tD,GAChCA,GACFA,EAASoB,aAEE,WAAT9uD,GACFyuD,GAAgCxgC,GAGpC,SAAS8gC,GAAqB9gC,EAAOjuB,EAAM2C,GACzC,MAAMwvB,EAASlE,EAAMkE,OACf+I,EAAQ/oB,GAAW04B,IACL,OAAd5c,EAAMW,KACRjsB,EAASyqD,GAAgBviB,EAAO5c,MAEjCA,GAAQrjB,IACT,MAAMigC,EAAQjgC,EAAK,GACnB,MAAO,CAACigC,EAAOA,EAAMlJ,QAASkJ,EAAMjJ,YAGtC,OADAsrB,GAAY/6B,EAAQnyB,EAAMk7B,GACnBA,EAET,MAAM8zB,WAAoBvD,GACxBC,eAAev5B,EAAQgR,GACrB,MAAM/pC,EAAU+4B,GAAUA,EAAOC,YAAcD,EAAOC,WAAW,MACjE,OAAIh5B,GAAWA,EAAQ+4B,SAAWA,GAChCw6B,GAAWx6B,EAAQgR,GACZ/pC,GAEF,KAETuyD,eAAevyD,GACb,MAAM+4B,EAAS/4B,EAAQ+4B,OACvB,IAAKA,EAAO45B,IACV,OAAO,EAET,MAAMjiB,EAAU3X,EAAO45B,IAAajiB,QACpC,CAAC,SAAU,SAASzqC,SAASwI,IAC3B,MAAMpK,EAAQqsC,EAAQjiC,GAClB0L,EAAc9V,GAChB00B,EAAO88B,gBAAgBpnD,GAEvBsqB,EAAOllB,aAAapF,EAAMpK,MAG9B,MAAM+wB,EAAQsb,EAAQtb,OAAS,GAM/B,OALA3oB,OAAOqC,KAAKsmB,GAAOnvB,SAASE,IAC1B4yB,EAAO3D,MAAMjvB,GAAOivB,EAAMjvB,MAE5B4yB,EAAOd,MAAQc,EAAOd,aACfc,EAAO45B,KACP,EAETnsD,iBAAiBquB,EAAOjuB,EAAM2C,GAC5BtJ,KAAK6C,oBAAoB+xB,EAAOjuB,GAChC,MAAMkvD,EAAUjhC,EAAMkhC,WAAalhC,EAAMkhC,SAAW,IAC9C7oD,EAAW,CACf8oD,OAAQ3B,GACR4B,OAAQlB,GACRthB,OAAQ6hB,IAEJxI,EAAU5/C,EAAStG,IAAS+uD,GAClCG,EAAQlvD,GAAQkmD,EAAQj4B,EAAOjuB,EAAM2C,GAEvCzG,oBAAoB+xB,EAAOjuB,GACzB,MAAMkvD,EAAUjhC,EAAMkhC,WAAalhC,EAAMkhC,SAAW,IAC9Cj0B,EAAQg0B,EAAQlvD,GACtB,IAAKk7B,EACH,OAEF,MAAM50B,EAAW,CACf8oD,OAAQP,GACRQ,OAAQR,GACRhiB,OAAQgiB,IAEJ3I,EAAU5/C,EAAStG,IAASmtD,GAClCjH,EAAQj4B,EAAOjuB,EAAMk7B,GACrBg0B,EAAQlvD,QAAQb,EAElBgvB,sBACE,OAAO1gB,OAAOugB,iBAEhBgV,eAAe7Q,EAAQd,EAAOkB,EAAQ4Q,GACpC,OAAOH,GAAe7Q,EAAQd,EAAOkB,EAAQ4Q,GAE/CyoB,WAAWz5B,GACT,MAAMsQ,EAAYhC,GAAetO,GACjC,SAAUsQ,IAAaA,EAAU6sB,cAIrC,SAASC,GAAgBp9B,GACvB,OAAKqO,MAAiD,qBAApBgvB,iBAAmCr9B,aAAkBq9B,gBAC9E1D,GAEFkD,GAGT,MAAMS,GACJp/C,cACEhX,KAAK0e,OAAI5Y,EACT9F,KAAK2e,OAAI7Y,EACT9F,KAAK6yC,QAAS,EACd7yC,KAAKL,aAAUmG,EACf9F,KAAKw0C,iBAAc1uC,EAErBuwD,gBAAgBhJ,GACd,MAAM,EAAC3uC,EAAC,EAAEC,GAAK3e,KAAK0tD,SAAS,CAAC,IAAK,KAAML,GACzC,MAAO,CAAC3uC,EAAAA,EAAGC,EAAAA,GAEb23C,WACE,OAAO7jD,EAASzS,KAAK0e,IAAMjM,EAASzS,KAAK2e,GAE3C+uC,SAAS11C,EAAOu+C,GACd,MAAMnmB,EAAQpwC,KAAKw0C,YACnB,IAAK+hB,IAAUnmB,EACb,OAAOpwC,KAET,MAAMglB,EAAM,GAIZ,OAHAhN,EAAMhS,SAAQwI,IACZwW,EAAIxW,GAAQ4hC,EAAM5hC,IAAS4hC,EAAM5hC,GAAMqkC,SAAWzC,EAAM5hC,GAAMmkC,IAAM3yC,KAAKwO,MAEpEwW,GAGXoxC,GAAQ/uD,SAAW,GACnB+uD,GAAQI,mBAAgB1wD,EAExB,MAAM2wD,GAAa,CACjBriC,OAAOhwB,GACL,OAAOiK,EAAQjK,GAASA,EAAQ,GAAKA,GAEvCsyD,QAAQC,EAAWntD,EAAO62C,GACxB,GAAkB,IAAdsW,EACF,MAAO,IAET,MAAMvrB,EAASprC,KAAK40B,MAAMj1B,QAAQyrC,OAClC,IAAIwrB,EACA5wB,EAAQ2wB,EACZ,GAAItW,EAAMr3C,OAAS,EAAG,CACpB,MAAM6tD,EAAU5nD,KAAKmQ,IAAInQ,KAAK4P,IAAIwhC,EAAM,GAAGj8C,OAAQ6K,KAAK4P,IAAIwhC,EAAMA,EAAMr3C,OAAS,GAAG5E,SAChFyyD,EAAU,MAAQA,EAAU,QAC9BD,EAAW,cAEb5wB,EAAQ8wB,GAAeH,EAAWtW,GAEpC,MAAM0W,EAAWr5C,EAAMzO,KAAK4P,IAAImnB,IAC1BgxB,EAAa/nD,KAAKmQ,IAAInQ,KAAKkQ,KAAK,EAAIlQ,KAAKC,MAAM6nD,GAAW,IAAK,GAC/Dp3D,EAAU,CAACi3D,SAAAA,EAAUK,sBAAuBD,EAAYE,sBAAuBF,GAErF,OADAxqD,OAAOQ,OAAOrN,EAASK,KAAKL,QAAQ0gD,MAAM1U,QACnCF,GAAakrB,EAAWvrB,EAAQzrC,IAEzCw3D,YAAYR,EAAWntD,EAAO62C,GAC5B,GAAkB,IAAdsW,EACF,MAAO,IAET,MAAM3jB,EAAS2jB,EAAa1nD,KAAKiP,IAAI,GAAIjP,KAAKC,MAAMwO,EAAMi5C,KAC1D,OAAe,IAAX3jB,GAA2B,IAAXA,GAA2B,IAAXA,EAC3ByjB,GAAWC,QAAQr2D,KAAKL,KAAM22D,EAAWntD,EAAO62C,GAElD,KAGX,SAASyW,GAAeH,EAAWtW,GACjC,IAAIra,EAAQqa,EAAMr3C,OAAS,EAAIq3C,EAAM,GAAGj8C,MAAQi8C,EAAM,GAAGj8C,MAAQi8C,EAAM,GAAGj8C,MAAQi8C,EAAM,GAAGj8C,MAI3F,OAHI6K,KAAK4P,IAAImnB,IAAU,GAAK2wB,IAAc1nD,KAAKC,MAAMynD,KACnD3wB,EAAQ2wB,EAAY1nD,KAAKC,MAAMynD,IAE1B3wB,EAET,IAAIoxB,GAAQ,CAACX,WAAAA,IAqEb,SAASY,GAAShhC,EAAOgqB,GACvB,MAAMiX,EAAWjhC,EAAM12B,QAAQ0gD,MACzBkX,EAAaD,EAASE,eAAiBC,GAAkBphC,GACzDqhC,EAAeJ,EAASK,MAAMC,QAAUC,GAAgBxX,GAAS,GACjEyX,EAAkBJ,EAAa1uD,OAC/B+uD,EAAQL,EAAa,GACrBvpB,EAAOupB,EAAaI,EAAkB,GACtCE,EAAW,GACjB,GAAIF,EAAkBP,EAEpB,OADAU,GAAW5X,EAAO2X,EAAUN,EAAcI,EAAkBP,GACrDS,EAET,MAAMhR,EAAUkR,GAAiBR,EAAcrX,EAAOkX,GACtD,GAAIO,EAAkB,EAAG,CACvB,IAAIhvD,EAAGsS,EACP,MAAM+8C,EAAkBL,EAAkB,EAAI7oD,KAAK8O,OAAOowB,EAAO4pB,IAAUD,EAAkB,IAAM,KAEnG,IADAxzB,GAAK+b,EAAO2X,EAAUhR,EAAS9sC,EAAci+C,GAAmB,EAAIJ,EAAQI,EAAiBJ,GACxFjvD,EAAI,EAAGsS,EAAO08C,EAAkB,EAAGhvD,EAAIsS,EAAMtS,IAChDw7B,GAAK+b,EAAO2X,EAAUhR,EAAS0Q,EAAa5uD,GAAI4uD,EAAa5uD,EAAI,IAGnE,OADAw7B,GAAK+b,EAAO2X,EAAUhR,EAAS7Y,EAAMj0B,EAAci+C,GAAmB9X,EAAMr3C,OAASmlC,EAAOgqB,GACrFH,EAGT,OADA1zB,GAAK+b,EAAO2X,EAAUhR,GACfgR,EAET,SAASP,GAAkBphC,GACzB,MAAM2uB,EAAS3uB,EAAM12B,QAAQqlD,OACvBoT,EAAa/hC,EAAMgiC,YACnBC,EAAWjiC,EAAM6pB,QAAUkY,GAAcpT,EAAS,EAAI,GACtDuT,EAAWliC,EAAMmiC,WAAaJ,EACpC,OAAOnpD,KAAKC,MAAMD,KAAKkQ,IAAIm5C,EAAUC,IAEvC,SAASL,GAAiBR,EAAcrX,EAAOkX,GAC7C,MAAMkB,EAAmBC,GAAehB,GAClC1Q,EAAU3G,EAAMr3C,OAASuuD,EAC/B,IAAKkB,EACH,OAAOxpD,KAAKmQ,IAAI4nC,EAAS,GAE3B,MAAM2R,EAAUt6C,EAAWo6C,GAC3B,IAAK,IAAI3vD,EAAI,EAAGsS,EAAOu9C,EAAQ3vD,OAAS,EAAGF,EAAIsS,EAAMtS,IAAK,CACxD,MAAMipC,EAAS4mB,EAAQ7vD,GACvB,GAAIipC,EAASiV,EACX,OAAOjV,EAGX,OAAO9iC,KAAKmQ,IAAI4nC,EAAS,GAE3B,SAAS6Q,GAAgBxX,GACvB,MAAMlqC,EAAS,GACf,IAAIrN,EAAGsS,EACP,IAAKtS,EAAI,EAAGsS,EAAOilC,EAAMr3C,OAAQF,EAAIsS,EAAMtS,IACrCu3C,EAAMv3C,GAAG6uD,OACXxhD,EAAO5M,KAAKT,GAGhB,OAAOqN,EAET,SAAS8hD,GAAW5X,EAAO2X,EAAUN,EAAc1Q,GACjD,IAEIl+C,EAFAk7B,EAAQ,EACRa,EAAO6yB,EAAa,GAGxB,IADA1Q,EAAU/3C,KAAK2pD,KAAK5R,GACfl+C,EAAI,EAAGA,EAAIu3C,EAAMr3C,OAAQF,IACxBA,IAAM+7B,IACRmzB,EAASzuD,KAAK82C,EAAMv3C,IACpBk7B,IACAa,EAAO6yB,EAAa1zB,EAAQgjB,IAIlC,SAAS1iB,GAAK+b,EAAO2X,EAAUhR,EAAS6R,EAAYC,GAClD,MAAMr/C,EAAQe,EAAeq+C,EAAY,GACnCn/C,EAAMzK,KAAKkQ,IAAI3E,EAAes+C,EAAUzY,EAAMr3C,QAASq3C,EAAMr3C,QACnE,IACIA,EAAQF,EAAG+7B,EADXb,EAAQ,EAEZgjB,EAAU/3C,KAAK2pD,KAAK5R,GAChB8R,IACF9vD,EAAS8vD,EAAWD,EACpB7R,EAAUh+C,EAASiG,KAAKC,MAAMlG,EAASg+C,IAEzCniB,EAAOprB,EACP,MAAOorB,EAAO,EACZb,IACAa,EAAO51B,KAAK8O,MAAMtE,EAAQuqB,EAAQgjB,GAEpC,IAAKl+C,EAAImG,KAAKmQ,IAAI3F,EAAO,GAAI3Q,EAAI4Q,EAAK5Q,IAChCA,IAAM+7B,IACRmzB,EAASzuD,KAAK82C,EAAMv3C,IACpBk7B,IACAa,EAAO51B,KAAK8O,MAAMtE,EAAQuqB,EAAQgjB,IAIxC,SAAS0R,GAAe3jD,GACtB,MAAMiG,EAAMjG,EAAI/L,OAChB,IAAIF,EAAGkjD,EACP,GAAIhxC,EAAM,EACR,OAAO,EAET,IAAKgxC,EAAOj3C,EAAI,GAAIjM,EAAI,EAAGA,EAAIkS,IAAOlS,EACpC,GAAIiM,EAAIjM,GAAKiM,EAAIjM,EAAI,KAAOkjD,EAC1B,OAAO,EAGX,OAAOA,EA5KT3kD,GAAS4sB,IAAI,QAAS,CACpBk3B,SAAS,EACTnG,QAAQ,EACRjqC,SAAS,EACT2jB,aAAa,EACbyO,OAAQ,QACR1O,MAAO,EACPwmB,KAAM,CACJkG,SAAS,EACTlvB,UAAW,EACX88B,YAAY,EACZC,iBAAiB,EACjBC,WAAW,EACXb,WAAY,EACZc,UAAW,CAAC1gB,EAAM74C,IAAYA,EAAQs8B,UACtCk9B,UAAW,CAAC3gB,EAAM74C,IAAYA,EAAQkzB,MACtCmyB,QAAQ,EACRrV,WAAY,GACZC,iBAAkB,EAClBvV,YAAa,GAEfisB,MAAO,CACL6E,SAAS,EACTxvB,KAAM,GACN61B,QAAS,CACP72B,IAAK,EACLC,OAAQ,IAGZylB,MAAO,CACL+Y,YAAa,EACbC,YAAa,GACbC,QAAQ,EACRC,gBAAiB,EACjBC,gBAAiB,GACjBhI,QAAS,EACTrG,SAAS,EACTkM,UAAU,EACVoC,gBAAiB,EACjBC,YAAa,EACb5kD,SAAUsiD,GAAMX,WAAWriC,OAC3BulC,MAAO,GACPhC,MAAO,GACPp+C,MAAO,SACPqgD,WAAY,OACZC,mBAAmB,EACnBC,cAAe,4BACfC,gBAAiB,KAGrB1yD,GAASuvB,MAAM,cAAe,QAAS,GAAI,SAC3CvvB,GAASuvB,MAAM,aAAc,QAAS,GAAI,eAC1CvvB,GAASuvB,MAAM,aAAc,cAAe,GAAI,eAChDvvB,GAASuvB,MAAM,cAAe,QAAS,GAAI,SAC3CvvB,GAASovB,SAAS,QAAS,CACzBe,WAAW,EACXH,YAAcxtB,IAAUA,EAAKytB,WAAW,YAAcztB,EAAKytB,WAAW,UAAqB,aAATztB,GAAgC,WAATA,EACzG0tB,WAAa1tB,GAAkB,eAATA,GAAkC,mBAATA,IAEjDxC,GAASovB,SAAS,SAAU,CAC1Be,UAAW,UAEbnwB,GAASovB,SAAS,cAAe,CAC/BY,YAAcxtB,GAAkB,oBAATA,GAAuC,aAATA,EACrD0tB,WAAa1tB,GAAkB,oBAATA,IA+GxB,MAAMmwD,GAAgBzgD,GAAoB,SAAVA,EAAmB,QAAoB,UAAVA,EAAoB,OAASA,EACpF0gD,GAAiB,CAAC5jC,EAAO8rB,EAAM6C,IAAoB,QAAT7C,GAA2B,SAATA,EAAkB9rB,EAAM8rB,GAAQ6C,EAAS3uB,EAAM8rB,GAAQ6C,EACzH,SAASkV,GAAOnlD,EAAKolD,GACnB,MAAMhkD,EAAS,GACTikD,EAAYrlD,EAAI/L,OAASmxD,EACzBn/C,EAAMjG,EAAI/L,OAChB,IAAIF,EAAI,EACR,KAAOA,EAAIkS,EAAKlS,GAAKsxD,EACnBjkD,EAAO5M,KAAKwL,EAAI9F,KAAKC,MAAMpG,KAE7B,OAAOqN,EAET,SAASkkD,GAAoBhkC,EAAO7sB,EAAO8wD,GACzC,MAAMtxD,EAASqtB,EAAMgqB,MAAMr3C,OACrBuxD,EAAatrD,KAAKkQ,IAAI3V,EAAOR,EAAS,GACtCyQ,EAAQ4c,EAAM0tB,YACdrqC,EAAM2c,EAAM2tB,UACZplC,EAAU,KAChB,IACIomC,EADAwV,EAAYnkC,EAAMiqB,gBAAgBia,GAEtC,KAAID,IAEAtV,EADa,IAAXh8C,EACOiG,KAAKmQ,IAAIo7C,EAAY/gD,EAAOC,EAAM8gD,GACxB,IAAVhxD,GACC6sB,EAAMiqB,gBAAgB,GAAKka,GAAa,GAExCA,EAAYnkC,EAAMiqB,gBAAgBia,EAAa,IAAM,EAEjEC,GAAaD,EAAa/wD,EAAQw7C,GAAUA,EACxCwV,EAAY/gD,EAAQmF,GAAW47C,EAAY9gD,EAAMkF,IAIvD,OAAO47C,EAET,SAASriC,GAAesiC,EAAQzxD,GAC9B6R,EAAK4/C,GAAS5jD,IACZ,MAAM8gB,EAAK9gB,EAAM8gB,GACXa,EAAQb,EAAG3uB,OAAS,EAC1B,IAAIF,EACJ,GAAI0vB,EAAQxvB,EAAQ,CAClB,IAAKF,EAAI,EAAGA,EAAI0vB,IAAS1vB,SAChB+N,EAAMxU,KAAKs1B,EAAG7uB,IAEvB6uB,EAAGluB,OAAO,EAAG+uB,OAInB,SAASkiC,GAAkB/6D,GACzB,OAAOA,EAAQs5D,UAAYt5D,EAAQy4D,WAAa,EAElD,SAASuC,GAAeh7D,EAASw+B,GAC/B,IAAKx+B,EAAQwrD,QACX,OAAO,EAET,MAAMl2B,EAAOiJ,GAAOv+B,EAAQs1B,KAAMkJ,GAC5BqzB,EAAUvzB,GAAUt+B,EAAQ6xD,SAC5B51B,EAAQvtB,EAAQ1O,EAAQg8B,MAAQh8B,EAAQg8B,KAAK3yB,OAAS,EAC5D,OAAQ4yB,EAAQ3G,EAAKG,WAAco8B,EAAQt4B,OAE7C,SAAS0hC,GAAmBz6D,EAAQk2B,GAClC,OAAOwI,GAAc1+B,EAAQ,CAC3Bk2B,MAAAA,EACA1vB,KAAM,UAGV,SAASk0D,GAAkB16D,EAAQqJ,EAAO0nC,GACxC,OAAOrS,GAAc1+B,EAAQ,CAC3B+wC,KAAAA,EACA1nC,MAAAA,EACA7C,KAAM,SAGV,SAASm0D,GAAWvhD,EAAOhB,EAAUwC,GACnC,IAAIiK,EAAM1L,EAAmBC,GAI7B,OAHKwB,GAAwB,UAAbxC,IAA2BwC,GAAwB,UAAbxC,KACpDyM,EAAMg1C,GAAah1C,IAEdA,EAET,SAAS+1C,GAAU1kC,EAAO2uB,EAAQzsC,EAAUgB,GAC1C,MAAM,IAACohB,EAAG,KAAE/gB,EAAI,OAAEghB,EAAM,MAAE/gB,EAAK,MAAE+a,GAASyB,GACpC,UAAC8mB,EAAS,OAAE7mB,GAAU1B,EAC5B,IACIuH,EAAU6+B,EAAQC,EADlBzhC,EAAW,EAEf,MAAMN,EAAS0B,EAASD,EAClB3C,EAAQne,EAAQD,EACtB,GAAIyc,EAAM0rB,eAAgB,CAExB,GADAiZ,EAASxhD,EAAeD,EAAOK,EAAMC,GACjC/I,EAASyH,GAAW,CACtB,MAAM2iD,EAAiB1uD,OAAOqC,KAAK0J,GAAU,GACvCnU,EAAQmU,EAAS2iD,GACvBD,EAAS3kC,EAAO4kC,GAAgB9a,iBAAiBh8C,GAAS80B,EAAS8rB,OAEnEiW,EADsB,WAAb1iD,GACC4kC,EAAUviB,OAASuiB,EAAUxiB,KAAO,EAAIzB,EAAS8rB,EAElDiV,GAAe5jC,EAAO9d,EAAUysC,GAE3C7oB,EAAWtiB,EAAQD,MACd,CACL,GAAI9I,EAASyH,GAAW,CACtB,MAAM2iD,EAAiB1uD,OAAOqC,KAAK0J,GAAU,GACvCnU,EAAQmU,EAAS2iD,GACvBF,EAAS1kC,EAAO4kC,GAAgB9a,iBAAiBh8C,GAAS4zB,EAAQgtB,OAElEgW,EADsB,WAAbziD,GACC4kC,EAAUvjC,KAAOujC,EAAUtjC,OAAS,EAAIme,EAAQgtB,EAEjDiV,GAAe5jC,EAAO9d,EAAUysC,GAE3CiW,EAASzhD,EAAeD,EAAOqhB,EAAQD,GACvCnB,EAAwB,SAAbjhB,GAAuBgF,EAAUA,EAE9C,MAAO,CAACy9C,OAAAA,EAAQC,OAAAA,EAAQ9+B,SAAAA,EAAU3C,SAAAA,GAEpC,MAAM2hC,WAAc/E,GAClBp/C,YAAYk7B,GACV8Q,QACAhjD,KAAKoN,GAAK8kC,EAAI9kC,GACdpN,KAAK2G,KAAOurC,EAAIvrC,KAChB3G,KAAKL,aAAUmG,EACf9F,KAAKu1B,IAAM2c,EAAI3c,IACfv1B,KAAK40B,MAAQsd,EAAItd,MACjB50B,KAAK26B,SAAM70B,EACX9F,KAAK46B,YAAS90B,EACd9F,KAAK4Z,UAAO9T,EACZ9F,KAAK6Z,WAAQ/T,EACb9F,KAAKg4B,WAAQlyB,EACb9F,KAAKk5B,YAASpzB,EACd9F,KAAKo7D,SAAW,CACdxhD,KAAM,EACNC,MAAO,EACP8gB,IAAK,EACLC,OAAQ,GAEV56B,KAAKm8B,cAAWr2B,EAChB9F,KAAKmpC,eAAYrjC,EACjB9F,KAAKq7D,gBAAav1D,EAClB9F,KAAKs7D,mBAAgBx1D,EACrB9F,KAAKu7D,iBAAcz1D,EACnB9F,KAAKw7D,kBAAe11D,EACpB9F,KAAKk3C,UAAOpxC,EACZ9F,KAAKy7D,mBAAgB31D,EACrB9F,KAAKmf,SAAMrZ,EACX9F,KAAKof,SAAMtZ,EACX9F,KAAK07D,YAAS51D,EACd9F,KAAKqgD,MAAQ,GACbrgD,KAAK27D,eAAiB,KACtB37D,KAAK47D,YAAc,KACnB57D,KAAK67D,YAAc,KACnB77D,KAAKkgD,QAAU,EACflgD,KAAKw4D,WAAa,EAClBx4D,KAAK87D,kBAAoB,GACzB97D,KAAK+jD,iBAAcj+C,EACnB9F,KAAKgkD,eAAYl+C,EACjB9F,KAAK0sD,gBAAiB,EACtB1sD,KAAK+7D,cAAWj2D,EAChB9F,KAAKg8D,cAAWl2D,EAChB9F,KAAKi8D,mBAAgBn2D,EACrB9F,KAAKk8D,mBAAgBp2D,EACrB9F,KAAKm8D,aAAe,EACpBn8D,KAAKo8D,aAAe,EACpBp8D,KAAK6/C,OAAS,GACd7/C,KAAKq8D,mBAAoB,EACzBr8D,KAAKm5C,cAAWrzC,EAElBw2D,KAAK38D,GACHK,KAAKL,QAAUA,EAAQyiC,WAAWpiC,KAAK+4B,cACvC/4B,KAAKk3C,KAAOv3C,EAAQu3C,KACpBl3C,KAAKg8D,SAAWh8D,KAAKgQ,MAAMrQ,EAAQwf,KACnCnf,KAAK+7D,SAAW/7D,KAAKgQ,MAAMrQ,EAAQyf,KACnCpf,KAAKk8D,cAAgBl8D,KAAKgQ,MAAMrQ,EAAQ48D,cACxCv8D,KAAKi8D,cAAgBj8D,KAAKgQ,MAAMrQ,EAAQ68D,cAE1CxsD,MAAM4nC,EAAKpuC,GACT,OAAOouC,EAET5B,gBACE,IAAI,SAACgmB,EAAQ,SAAED,EAAQ,cAAEG,EAAa,cAAED,GAAiBj8D,KAKzD,OAJAg8D,EAAW1hD,EAAgB0hD,EAAU5hD,OAAOiD,mBAC5C0+C,EAAWzhD,EAAgByhD,EAAU3hD,OAAO+7B,mBAC5C+lB,EAAgB5hD,EAAgB4hD,EAAe9hD,OAAOiD,mBACtD4+C,EAAgB3hD,EAAgB2hD,EAAe7hD,OAAO+7B,mBAC/C,CACLh3B,IAAK7E,EAAgB0hD,EAAUE,GAC/B98C,IAAK9E,EAAgByhD,EAAUE,GAC/BhmB,WAAY97B,EAAe6hD,GAC3B9lB,WAAY/7B,EAAe4hD,IAG/Bvf,UAAUpE,GACR,IACIv6B,GADA,IAACsB,EAAG,IAAEC,EAAG,WAAE62B,EAAU,WAAEC,GAAcl2C,KAAKg2C,gBAE9C,GAAIC,GAAcC,EAChB,MAAO,CAAC/2B,IAAAA,EAAKC,IAAAA,GAEf,MAAMq9C,EAAQz8D,KAAK42C,0BACnB,IAAK,IAAI9tC,EAAI,EAAGsS,EAAOqhD,EAAMzzD,OAAQF,EAAIsS,IAAQtS,EAC/C+U,EAAQ4+C,EAAM3zD,GAAGguC,WAAW0F,UAAUx8C,KAAMo4C,GACvCnC,IACH92B,EAAMlQ,KAAKkQ,IAAIA,EAAKtB,EAAMsB,MAEvB+2B,IACH92B,EAAMnQ,KAAKmQ,IAAIA,EAAKvB,EAAMuB,MAK9B,OAFAD,EAAM+2B,GAAc/2B,EAAMC,EAAMA,EAAMD,EACtCC,EAAM62B,GAAc92B,EAAMC,EAAMD,EAAMC,EAC/B,CACLD,IAAK7E,EAAgB6E,EAAK7E,EAAgB8E,EAAKD,IAC/CC,IAAK9E,EAAgB8E,EAAK9E,EAAgB6E,EAAKC,KAGnDixC,aACE,MAAO,CACLz2C,KAAM5Z,KAAKu7D,aAAe,EAC1B5gC,IAAK36B,KAAKq7D,YAAc,EACxBxhD,MAAO7Z,KAAKw7D,cAAgB,EAC5B5gC,OAAQ56B,KAAKs7D,eAAiB,GAGlCoB,WACE,OAAO18D,KAAKqgD,MAEdtE,YACE,MAAM15C,EAAOrC,KAAK40B,MAAMvyB,KACxB,OAAOrC,KAAKL,QAAQm8C,SAAW97C,KAAK+hD,eAAiB1/C,EAAKs6D,QAAUt6D,EAAKu6D,UAAYv6D,EAAKy5C,QAAU,GAEtGoW,eACElyD,KAAK6/C,OAAS,GACd7/C,KAAKq8D,mBAAoB,EAE3BQ,eACE/nD,EAAS9U,KAAKL,QAAQk9D,aAAc,CAAC78D,OAEvC8yC,OAAO3W,EAAUgN,EAAWY,GAC1B,MAAM,YAACrL,EAAW,MAAED,EAAO4hB,MAAOiX,GAAYt3D,KAAKL,QAC7Cm9D,EAAaxF,EAASwF,WAC5B98D,KAAK68D,eACL78D,KAAKm8B,SAAWA,EAChBn8B,KAAKmpC,UAAYA,EACjBnpC,KAAKo7D,SAAWrxB,EAAUv9B,OAAOQ,OAAO,CACtC4M,KAAM,EACNC,MAAO,EACP8gB,IAAK,EACLC,OAAQ,GACPmP,GACH/pC,KAAKqgD,MAAQ,KACbrgD,KAAK67D,YAAc,KACnB77D,KAAK27D,eAAiB,KACtB37D,KAAK47D,YAAc,KACnB57D,KAAK+8D,sBACL/8D,KAAKg9D,gBACLh9D,KAAKi9D,qBACLj9D,KAAKw4D,WAAax4D,KAAK+hD,eACnB/hD,KAAKg4B,MAAQ+R,EAAQnwB,KAAOmwB,EAAQlwB,MACpC7Z,KAAKk5B,OAAS6Q,EAAQpP,IAAMoP,EAAQnP,OACnC56B,KAAKq8D,oBACRr8D,KAAKk9D,mBACLl9D,KAAKm9D,sBACLn9D,KAAKo9D,kBACLp9D,KAAK07D,OAASn9B,GAAUv+B,KAAMy+B,EAAOC,GACrC1+B,KAAKq8D,mBAAoB,GAE3Br8D,KAAKq9D,mBACLr9D,KAAKqgD,MAAQrgD,KAAKs9D,cAAgB,GAClCt9D,KAAKu9D,kBACL,MAAMC,EAAkBV,EAAa98D,KAAKqgD,MAAMr3C,OAChDhJ,KAAKy9D,sBAAsBD,EAAkBtD,GAAOl6D,KAAKqgD,MAAOyc,GAAc98D,KAAKqgD,OACnFrgD,KAAK+zC,YACL/zC,KAAK09D,+BACL19D,KAAK29D,yBACL39D,KAAK49D,8BACDtG,EAASnM,UAAYmM,EAASD,UAAgC,SAApBC,EAAS5tD,UACrD1J,KAAKqgD,MAAQgX,GAASr3D,KAAMA,KAAKqgD,OACjCrgD,KAAK67D,YAAc,KACnB77D,KAAK69D,iBAEHL,GACFx9D,KAAKy9D,sBAAsBz9D,KAAKqgD,OAElCrgD,KAAK89D,YACL99D,KAAK+9D,MACL/9D,KAAKg+D,WACLh+D,KAAKi+D,cAEPlqB,YACE,IACIsQ,EAAYE,EADZ2Z,EAAgBl+D,KAAKL,QAAQob,QAE7B/a,KAAK+hD,gBACPsC,EAAarkD,KAAK4Z,KAClB2qC,EAAWvkD,KAAK6Z,QAEhBwqC,EAAarkD,KAAK26B,IAClB4pB,EAAWvkD,KAAK46B,OAChBsjC,GAAiBA,GAEnBl+D,KAAK+jD,YAAcM,EACnBrkD,KAAKgkD,UAAYO,EACjBvkD,KAAK0sD,eAAiBwR,EACtBl+D,KAAKkgD,QAAUqE,EAAWF,EAC1BrkD,KAAKm+D,eAAiBn+D,KAAKL,QAAQy+D,cAErCH,cACEnpD,EAAS9U,KAAKL,QAAQs+D,YAAa,CAACj+D,OAEtC+8D,sBACEjoD,EAAS9U,KAAKL,QAAQo9D,oBAAqB,CAAC/8D,OAE9Cg9D,gBACMh9D,KAAK+hD,gBACP/hD,KAAKg4B,MAAQh4B,KAAKm8B,SAClBn8B,KAAK4Z,KAAO,EACZ5Z,KAAK6Z,MAAQ7Z,KAAKg4B,QAElBh4B,KAAKk5B,OAASl5B,KAAKmpC,UACnBnpC,KAAK26B,IAAM,EACX36B,KAAK46B,OAAS56B,KAAKk5B,QAErBl5B,KAAKu7D,YAAc,EACnBv7D,KAAKq7D,WAAa,EAClBr7D,KAAKw7D,aAAe,EACpBx7D,KAAKs7D,cAAgB,EAEvB2B,qBACEnoD,EAAS9U,KAAKL,QAAQs9D,mBAAoB,CAACj9D,OAE7Cq+D,WAAWx0D,GACT7J,KAAK40B,MAAM0pC,cAAcz0D,EAAM7J,KAAK+4B,cACpCjkB,EAAS9U,KAAKL,QAAQkK,GAAO,CAAC7J,OAEhCk9D,mBACEl9D,KAAKq+D,WAAW,oBAElBlB,uBACAC,kBACEp9D,KAAKq+D,WAAW,mBAElBhB,mBACEr9D,KAAKq+D,WAAW,oBAElBf,aACE,MAAO,GAETC,kBACEv9D,KAAKq+D,WAAW,mBAElBE,8BACEzpD,EAAS9U,KAAKL,QAAQ4+D,4BAA6B,CAACv+D,OAEtDw+D,mBAAmBne,GACjB,MAAMiX,EAAWt3D,KAAKL,QAAQ0gD,MAC9B,IAAIv3C,EAAGsS,EAAM81B,EACb,IAAKpoC,EAAI,EAAGsS,EAAOilC,EAAMr3C,OAAQF,EAAIsS,EAAMtS,IACzCooC,EAAOmP,EAAMv3C,GACbooC,EAAK8L,MAAQloC,EAASwiD,EAASxiD,SAAU,CAACo8B,EAAK9sC,MAAO0E,EAAGu3C,GAAQrgD,MAGrEy+D,6BACE3pD,EAAS9U,KAAKL,QAAQ8+D,2BAA4B,CAACz+D,OAErD09D,+BACE5oD,EAAS9U,KAAKL,QAAQ+9D,6BAA8B,CAAC19D,OAEvD29D,yBACE,MAAMh+D,EAAUK,KAAKL,QACf23D,EAAW33D,EAAQ0gD,MACnBqe,EAAW1+D,KAAKqgD,MAAMr3C,OACtBowD,EAAc9B,EAAS8B,aAAe,EACtCC,EAAc/B,EAAS+B,YAC7B,IACIH,EAAW/vB,EAAWw1B,EADtBlD,EAAgBrC,EAEpB,IAAKp5D,KAAK4+D,eAAiBtH,EAASnM,SAAWiO,GAAeC,GAAeqF,GAAY,IAAM1+D,KAAK+hD,eAElG,YADA/hD,KAAKy7D,cAAgBrC,GAGvB,MAAMyF,EAAa7+D,KAAK8+D,iBAClBC,EAAgBF,EAAWG,OAAOhnC,MAClCinC,EAAiBJ,EAAWK,QAAQhmC,OACpCiD,EAAWnb,GAAYhhB,KAAK40B,MAAMoD,MAAQ+mC,EAAe,EAAG/+D,KAAKm8B,UACvE+8B,EAAYv5D,EAAQqlD,OAAShlD,KAAKm8B,SAAWuiC,EAAWviC,GAAYuiC,EAAW,GAC3EK,EAAgB,EAAI7F,IACtBA,EAAY/8B,GAAYuiC,GAAY/+D,EAAQqlD,OAAS,GAAM,IAC3D7b,EAAYnpC,KAAKmpC,UAAYuxB,GAAkB/6D,EAAQslD,MACvDqS,EAAS9F,QAAUmJ,GAAeh7D,EAAQ2mD,MAAOtmD,KAAK40B,MAAMj1B,QAAQs1B,MACpE0pC,EAAmB1vD,KAAKqP,KAAKygD,EAAgBA,EAAgBE,EAAiBA,GAC9ExD,EAAgBl8C,GAAUtQ,KAAKkQ,IAC7BlQ,KAAKkwD,KAAKn+C,IAAa69C,EAAWK,QAAQhmC,OAAS,GAAKggC,GAAY,EAAG,IACvEjqD,KAAKkwD,KAAKn+C,GAAYmoB,EAAYw1B,GAAmB,EAAG,IAAM1vD,KAAKkwD,KAAKn+C,GAAYi+C,EAAiBN,GAAmB,EAAG,MAE7HlD,EAAgBxsD,KAAKmQ,IAAIg6C,EAAanqD,KAAKkQ,IAAIk6C,EAAaoC,KAE9Dz7D,KAAKy7D,cAAgBA,EAEvBmC,8BACE9oD,EAAS9U,KAAKL,QAAQi+D,4BAA6B,CAAC59D,OAEtD69D,iBACAC,YACEhpD,EAAS9U,KAAKL,QAAQm+D,UAAW,CAAC99D,OAEpC+9D,MACE,MAAMxT,EAAU,CACdvyB,MAAO,EACPkB,OAAQ,IAEJ,MAACtE,EAAOj1B,SAAU0gD,MAAOiX,EAAUhR,MAAO8Y,EAAWna,KAAMoa,IAAar/D,KACxEmrD,EAAUnrD,KAAK4+D,aACf7c,EAAe/hD,KAAK+hD,eAC1B,GAAIoJ,EAAS,CACX,MAAMmU,EAAc3E,GAAeyE,EAAWxqC,EAAMj1B,QAAQs1B,MAQ5D,GAPI8sB,GACFwI,EAAQvyB,MAAQh4B,KAAKm8B,SACrBouB,EAAQrxB,OAASwhC,GAAkB2E,GAAYC,IAE/C/U,EAAQrxB,OAASl5B,KAAKmpC,UACtBohB,EAAQvyB,MAAQ0iC,GAAkB2E,GAAYC,GAE5ChI,EAASnM,SAAWnrD,KAAKqgD,MAAMr3C,OAAQ,CACzC,MAAM,MAAC+uD,EAAK,KAAE5pB,EAAI,OAAE6wB,EAAM,QAAEE,GAAWl/D,KAAK8+D,iBACtCS,EAAiC,EAAnBjI,EAAS9F,QACvBgO,EAAengD,EAAUrf,KAAKy7D,eAC9Bl5C,EAAMtT,KAAKsT,IAAIi9C,GACfl+C,EAAMrS,KAAKqS,IAAIk+C,GACrB,GAAIzd,EAAc,CAChB,MAAM0d,EAAcnI,EAASgC,OAAS,EAAIh4C,EAAM09C,EAAOhnC,MAAQzV,EAAM28C,EAAQhmC,OAC7EqxB,EAAQrxB,OAASjqB,KAAKkQ,IAAInf,KAAKmpC,UAAWohB,EAAQrxB,OAASumC,EAAcF,OACpE,CACL,MAAMG,EAAapI,EAASgC,OAAS,EAAI/2C,EAAMy8C,EAAOhnC,MAAQ1W,EAAM49C,EAAQhmC,OAC5EqxB,EAAQvyB,MAAQ/oB,KAAKkQ,IAAInf,KAAKm8B,SAAUouB,EAAQvyB,MAAQ0nC,EAAaH,GAEvEv/D,KAAK2/D,kBAAkB5H,EAAO5pB,EAAM7sB,EAAKiB,IAG7CviB,KAAK4/D,iBACD7d,GACF/hD,KAAKg4B,MAAQh4B,KAAKkgD,QAAUtrB,EAAMoD,MAAQh4B,KAAKo7D,SAASxhD,KAAO5Z,KAAKo7D,SAASvhD,MAC7E7Z,KAAKk5B,OAASqxB,EAAQrxB,SAEtBl5B,KAAKg4B,MAAQuyB,EAAQvyB,MACrBh4B,KAAKk5B,OAASl5B,KAAKkgD,QAAUtrB,EAAMsE,OAASl5B,KAAKo7D,SAASzgC,IAAM36B,KAAKo7D,SAASxgC,QAGlF+kC,kBAAkB5H,EAAO5pB,EAAM7sB,EAAKiB,GAClC,MAAO89B,OAAO,MAAC9mC,EAAK,QAAEi4C,GAAQ,SAAEj5C,GAAYvY,KAAKL,QAC3CkgE,EAAmC,IAAvB7/D,KAAKy7D,cACjBqE,EAAgC,QAAbvnD,GAAoC,MAAdvY,KAAKk3C,KACpD,GAAIl3C,KAAK+hD,eAAgB,CACvB,MAAMge,EAAa//D,KAAKsgD,gBAAgB,GAAKtgD,KAAK4Z,KAC5ComD,EAAchgE,KAAK6Z,MAAQ7Z,KAAKsgD,gBAAgBtgD,KAAKqgD,MAAMr3C,OAAS,GAC1E,IAAIuyD,EAAc,EACdC,EAAe,EACfqE,EACEC,GACFvE,EAAch5C,EAAMw1C,EAAM//B,MAC1BwjC,EAAel6C,EAAM6sB,EAAKjV,SAE1BqiC,EAAcj6C,EAAMy2C,EAAM7+B,OAC1BsiC,EAAej5C,EAAM4rB,EAAKnW,OAET,UAAVze,EACTiiD,EAAertB,EAAKnW,MACD,QAAVze,EACTgiD,EAAcxD,EAAM//B,MACD,UAAVze,IACTgiD,EAAcxD,EAAM//B,MAAQ,EAC5BwjC,EAAertB,EAAKnW,MAAQ,GAE9Bh4B,KAAKu7D,YAActsD,KAAKmQ,KAAKm8C,EAAcwE,EAAavO,GAAWxxD,KAAKg4B,OAASh4B,KAAKg4B,MAAQ+nC,GAAa,GAC3G//D,KAAKw7D,aAAevsD,KAAKmQ,KAAKo8C,EAAewE,EAAcxO,GAAWxxD,KAAKg4B,OAASh4B,KAAKg4B,MAAQgoC,GAAc,OAC1G,CACL,IAAI3E,EAAaltB,EAAKjV,OAAS,EAC3BoiC,EAAgBvD,EAAM7+B,OAAS,EACrB,UAAV3f,GACF8hD,EAAa,EACbC,EAAgBvD,EAAM7+B,QACH,QAAV3f,IACT8hD,EAAaltB,EAAKjV,OAClBoiC,EAAgB,GAElBt7D,KAAKq7D,WAAaA,EAAa7J,EAC/BxxD,KAAKs7D,cAAgBA,EAAgB9J,GAGzCoO,iBACM5/D,KAAKo7D,WACPp7D,KAAKo7D,SAASxhD,KAAO3K,KAAKmQ,IAAIpf,KAAKu7D,YAAav7D,KAAKo7D,SAASxhD,MAC9D5Z,KAAKo7D,SAASzgC,IAAM1rB,KAAKmQ,IAAIpf,KAAKq7D,WAAYr7D,KAAKo7D,SAASzgC,KAC5D36B,KAAKo7D,SAASvhD,MAAQ5K,KAAKmQ,IAAIpf,KAAKw7D,aAAcx7D,KAAKo7D,SAASvhD,OAChE7Z,KAAKo7D,SAASxgC,OAAS3rB,KAAKmQ,IAAIpf,KAAKs7D,cAAet7D,KAAKo7D,SAASxgC,SAGtEojC,WACElpD,EAAS9U,KAAKL,QAAQq+D,SAAU,CAACh+D,OAEnC+hD,eACE,MAAM,KAAC7K,EAAI,SAAE3+B,GAAYvY,KAAKL,QAC9B,MAAoB,QAAb4Y,GAAmC,WAAbA,GAAkC,MAAT2+B,EAExD+oB,aACE,OAAOjgE,KAAKL,QAAQ4vD,SAEtBkO,sBAAsBpd,GAGpB,IAAIv3C,EAAGsS,EACP,IAHApb,KAAKu+D,8BACLv+D,KAAKw+D,mBAAmBne,GAEnBv3C,EAAI,EAAGsS,EAAOilC,EAAMr3C,OAAQF,EAAIsS,EAAMtS,IACrCoR,EAAcmmC,EAAMv3C,GAAGk0C,SACzBqD,EAAM52C,OAAOX,EAAG,GAChBsS,IACAtS,KAGJ9I,KAAKy+D,6BAEPK,iBACE,IAAID,EAAa7+D,KAAK67D,YACtB,IAAKgD,EAAY,CACf,MAAM/B,EAAa98D,KAAKL,QAAQ0gD,MAAMyc,WACtC,IAAIzc,EAAQrgD,KAAKqgD,MACbyc,EAAazc,EAAMr3C,SACrBq3C,EAAQ6Z,GAAO7Z,EAAOyc,IAExB98D,KAAK67D,YAAcgD,EAAa7+D,KAAKkgE,mBAAmB7f,EAAOA,EAAMr3C,QAEvE,OAAO61D,EAETqB,mBAAmB7f,EAAOr3C,GACxB,MAAM,IAACusB,EAAKumC,kBAAmBrB,GAAUz6D,KACnCmgE,EAAS,GACTC,EAAU,GAChB,IAEIt3D,EAAGooB,EAAGmH,EAAM2kB,EAAOqjB,EAAUC,EAAYzpD,EAAOue,EAAY4C,EAAOkB,EAAQqnC,EAF3EC,EAAkB,EAClBC,EAAmB,EAEvB,IAAK33D,EAAI,EAAGA,EAAIE,IAAUF,EAAG,CAO3B,GANAk0C,EAAQqD,EAAMv3C,GAAGk0C,MACjBqjB,EAAWrgE,KAAK0gE,wBAAwB53D,GACxCysB,EAAIN,KAAOqrC,EAAaD,EAASxoC,OACjChhB,EAAQ4jD,EAAO6F,GAAc7F,EAAO6F,IAAe,CAACj+D,KAAM,GAAIs1B,GAAI,IAClEvC,EAAairC,EAASjrC,WACtB4C,EAAQkB,EAAS,EACZhf,EAAc8iC,IAAW3uC,EAAQ2uC,IAG/B,GAAI3uC,EAAQ2uC,GACjB,IAAK9rB,EAAI,EAAGmH,EAAO2kB,EAAMh0C,OAAQkoB,EAAImH,IAAQnH,EAC3CqvC,EAAcvjB,EAAM9rB,GACfhX,EAAcqmD,IAAiBlyD,EAAQkyD,KAC1CvoC,EAAQN,GAAanC,EAAK1e,EAAMxU,KAAMwU,EAAM8gB,GAAIK,EAAOuoC,GACvDrnC,GAAU9D,QAPd4C,EAAQN,GAAanC,EAAK1e,EAAMxU,KAAMwU,EAAM8gB,GAAIK,EAAOglB,GACvD9jB,EAAS9D,EAUX+qC,EAAO52D,KAAKyuB,GACZooC,EAAQ72D,KAAK2vB,GACbsnC,EAAkBvxD,KAAKmQ,IAAI4Y,EAAOwoC,GAClCC,EAAmBxxD,KAAKmQ,IAAI8Z,EAAQunC,GAEtCtoC,GAAesiC,EAAQzxD,GACvB,MAAMg2D,EAASmB,EAAOp7D,QAAQy7D,GACxBtB,EAAUkB,EAAQr7D,QAAQ07D,GAC1BE,EAAWpkD,IAAQ,CAAEyb,MAAOmoC,EAAO5jD,IAAQ,EAAG2c,OAAQknC,EAAQ7jD,IAAQ,IAC5E,MAAO,CACLw7C,MAAO4I,EAAQ,GACfxyB,KAAMwyB,EAAQ33D,EAAS,GACvBg2D,OAAQ2B,EAAQ3B,GAChBE,QAASyB,EAAQzB,GACjBiB,OAAAA,EACAC,QAAAA,GAGJnjB,iBAAiB74C,GACf,OAAOA,EAETg8C,iBAAiBh8C,EAAOoF,GACtB,OAAO+yC,IAETqkB,iBAAiBloC,IACjB4nB,gBAAgB92C,GACd,MAAM62C,EAAQrgD,KAAKqgD,MACnB,OAAI72C,EAAQ,GAAKA,EAAQ62C,EAAMr3C,OAAS,EAC/B,KAEFhJ,KAAKogD,iBAAiBC,EAAM72C,GAAOpF,OAE5CkgD,mBAAmBuc,GACb7gE,KAAK0sD,iBACPmU,EAAU,EAAIA,GAEhB,MAAMnoC,EAAQ14B,KAAK+jD,YAAc8c,EAAU7gE,KAAKkgD,QAChD,OAAOj/B,GAAYjhB,KAAKm+D,eAAiB1lC,GAAYz4B,KAAK40B,MAAO8D,EAAO,GAAKA,GAE/EooC,mBAAmBpoC,GACjB,MAAMmoC,GAAWnoC,EAAQ14B,KAAK+jD,aAAe/jD,KAAKkgD,QAClD,OAAOlgD,KAAK0sD,eAAiB,EAAImU,EAAUA,EAE7C3d,eACE,OAAOljD,KAAKogD,iBAAiBpgD,KAAK+gE,gBAEpCA,eACE,MAAM,IAAC5hD,EAAG,IAAEC,GAAOpf,KACnB,OAAOmf,EAAM,GAAKC,EAAM,EAAIA,EAC1BD,EAAM,GAAKC,EAAM,EAAID,EACrB,EAEJ4Z,WAAWvvB,GACT,MAAM62C,EAAQrgD,KAAKqgD,OAAS,GAC5B,GAAI72C,GAAS,GAAKA,EAAQ62C,EAAMr3C,OAAQ,CACtC,MAAMkoC,EAAOmP,EAAM72C,GACnB,OAAO0nC,EAAKiI,WACbjI,EAAKiI,SAAW0hB,GAAkB76D,KAAK+4B,aAAcvvB,EAAO0nC,IAE7D,OAAOlxC,KAAKm5C,WACZn5C,KAAKm5C,SAAWyhB,GAAmB56D,KAAK40B,MAAMmE,aAAc/4B,OAE9Dq4D,YACE,MAAM2I,EAAchhE,KAAKL,QAAQ0gD,MAC3B4gB,EAAM5hD,EAAUrf,KAAKy7D,eACrBl5C,EAAMtT,KAAK4P,IAAI5P,KAAKsT,IAAI0+C,IACxB3/C,EAAMrS,KAAK4P,IAAI5P,KAAKqS,IAAI2/C,IACxBpC,EAAa7+D,KAAK8+D,iBAClBtN,EAAUwP,EAAYvH,iBAAmB,EACzCl0C,EAAIs5C,EAAaA,EAAWG,OAAOhnC,MAAQw5B,EAAU,EACrD1wD,EAAI+9D,EAAaA,EAAWK,QAAQhmC,OAASs4B,EAAU,EAC7D,OAAOxxD,KAAK+hD,eACRjhD,EAAIyhB,EAAMgD,EAAIjE,EAAMiE,EAAIhD,EAAMzhB,EAAIwgB,EAClCxgB,EAAIwgB,EAAMiE,EAAIhD,EAAMzhB,EAAIyhB,EAAMgD,EAAIjE,EAExCs9C,aACE,MAAMzT,EAAUnrD,KAAKL,QAAQwrD,QAC7B,MAAgB,SAAZA,IACOA,EAEJnrD,KAAK42C,0BAA0B5tC,OAAS,EAEjDk4D,sBAAsB/jB,GACpB,MAAMjG,EAAOl3C,KAAKk3C,KACZtiB,EAAQ50B,KAAK40B,MACbj1B,EAAUK,KAAKL,SACf,KAACslD,EAAI,SAAE1sC,GAAY5Y,EACnBqlD,EAASC,EAAKD,OACdjD,EAAe/hD,KAAK+hD,eACpB1B,EAAQrgD,KAAKqgD,MACb8gB,EAAc9gB,EAAMr3C,QAAUg8C,EAAS,EAAI,GAC3Coc,EAAK1G,GAAkBzV,GACvB9kB,EAAQ,GACRkhC,EAAapc,EAAK7iB,WAAWpiC,KAAK+4B,cAClCuoC,EAAYD,EAAWtI,WAAasI,EAAWhnC,YAAc,EAC7DknC,EAAgBD,EAAY,EAC5BE,EAAmB,SAAS9oC,GAChC,OAAOD,GAAY7D,EAAO8D,EAAO4oC,IAEnC,IAAIG,EAAa34D,EAAG0xD,EAAWkH,EAC3BC,EAAKC,EAAKC,EAAKC,EAAKC,EAAIC,EAAIC,EAAIC,EACpC,GAAiB,QAAb3pD,EACFkpD,EAAcD,EAAiBxhE,KAAK46B,QACpCgnC,EAAM5hE,KAAK46B,OAASwmC,EACpBU,EAAML,EAAcF,EACpBS,EAAKR,EAAiBrkB,EAAUxiB,KAAO4mC,EACvCW,EAAK/kB,EAAUviB,YACV,GAAiB,WAAbriB,EACTkpD,EAAcD,EAAiBxhE,KAAK26B,KACpCqnC,EAAK7kB,EAAUxiB,IACfunC,EAAKV,EAAiBrkB,EAAUviB,QAAU2mC,EAC1CK,EAAMH,EAAcF,EACpBO,EAAM9hE,KAAK26B,IAAMymC,OACZ,GAAiB,SAAb7oD,EACTkpD,EAAcD,EAAiBxhE,KAAK6Z,OACpC8nD,EAAM3hE,KAAK6Z,MAAQunD,EACnBS,EAAMJ,EAAcF,EACpBQ,EAAKP,EAAiBrkB,EAAUvjC,MAAQ2nD,EACxCU,EAAK9kB,EAAUtjC,WACV,GAAiB,UAAbtB,EACTkpD,EAAcD,EAAiBxhE,KAAK4Z,MACpCmoD,EAAK5kB,EAAUvjC,KACfqoD,EAAKT,EAAiBrkB,EAAUtjC,OAAS0nD,EACzCI,EAAMF,EAAcF,EACpBM,EAAM7hE,KAAK4Z,KAAOwnD,OACb,GAAa,MAATlqB,EAAc,CACvB,GAAiB,WAAb3+B,EACFkpD,EAAcD,GAAkBrkB,EAAUxiB,IAAMwiB,EAAUviB,QAAU,EAAI,SACnE,GAAI9pB,EAASyH,GAAW,CAC7B,MAAM2iD,EAAiB1uD,OAAOqC,KAAK0J,GAAU,GACvCnU,EAAQmU,EAAS2iD,GACvBuG,EAAcD,EAAiBxhE,KAAK40B,MAAM0B,OAAO4kC,GAAgB9a,iBAAiBh8C,IAEpF49D,EAAK7kB,EAAUxiB,IACfunC,EAAK/kB,EAAUviB,OACfgnC,EAAMH,EAAcF,EACpBO,EAAMF,EAAMR,OACP,GAAa,MAATlqB,EAAc,CACvB,GAAiB,WAAb3+B,EACFkpD,EAAcD,GAAkBrkB,EAAUvjC,KAAOujC,EAAUtjC,OAAS,QAC/D,GAAI/I,EAASyH,GAAW,CAC7B,MAAM2iD,EAAiB1uD,OAAOqC,KAAK0J,GAAU,GACvCnU,EAAQmU,EAAS2iD,GACvBuG,EAAcD,EAAiBxhE,KAAK40B,MAAM0B,OAAO4kC,GAAgB9a,iBAAiBh8C,IAEpFu9D,EAAMF,EAAcF,EACpBM,EAAMF,EAAMP,EACZW,EAAK5kB,EAAUvjC,KACfqoD,EAAK9kB,EAAUtjC,MAEjB,MAAMsoD,EAAQ3nD,EAAe7a,EAAQ0gD,MAAMmX,cAAe2J,GACpDiB,EAAOnzD,KAAKmQ,IAAI,EAAGnQ,KAAK2pD,KAAKuI,EAAcgB,IACjD,IAAKr5D,EAAI,EAAGA,EAAIq4D,EAAar4D,GAAKs5D,EAAM,CACtC,MAAMC,EAAcpd,EAAK7iB,WAAWpiC,KAAK+4B,WAAWjwB,IAC9CmzB,EAAYomC,EAAYpmC,UACxBqmC,EAAYD,EAAYxvC,MACxB8c,EAAasV,EAAKtV,YAAc,GAChCC,EAAmByyB,EAAYzyB,iBAC/BspB,EAAYmJ,EAAYnJ,UACxBC,EAAYkJ,EAAYlJ,UACxBoJ,EAAiBF,EAAYE,gBAAkB,GAC/CC,EAAuBH,EAAYG,qBACzChI,EAAYH,GAAoBr6D,KAAM8I,EAAGk8C,QACvBl/C,IAAd00D,IAGJkH,EAAmBjpC,GAAY7D,EAAO4lC,EAAWv+B,GAC7C8lB,EACF4f,EAAME,EAAME,EAAKE,EAAKP,EAEtBE,EAAME,EAAME,EAAKE,EAAKR,EAExBvhC,EAAM52B,KAAK,CACTo4D,IAAAA,EACAC,IAAAA,EACAC,IAAAA,EACAC,IAAAA,EACAC,GAAAA,EACAC,GAAAA,EACAC,GAAAA,EACAC,GAAAA,EACAlqC,MAAOiE,EACPpJ,MAAOyvC,EACP3yB,WAAAA,EACAC,iBAAAA,EACAspB,UAAAA,EACAC,UAAAA,EACAoJ,eAAAA,EACAC,qBAAAA,KAKJ,OAFAxiE,KAAKm8D,aAAegF,EACpBnhE,KAAKo8D,aAAeqF,EACbthC,EAETsiC,mBAAmBtlB,GACjB,MAAMjG,EAAOl3C,KAAKk3C,KACZv3C,EAAUK,KAAKL,SACf,SAAC4Y,EAAU8nC,MAAO2gB,GAAerhE,EACjCoiD,EAAe/hD,KAAK+hD,eACpB1B,EAAQrgD,KAAKqgD,OACb,MAAC9mC,EAAK,WAAEqgD,EAAU,QAAEpI,EAAO,OAAE8H,GAAU0H,EACvCI,EAAK1G,GAAkB/6D,EAAQslD,MAC/Byd,EAAiBtB,EAAK5P,EACtBmR,EAAkBrJ,GAAU9H,EAAUkR,EACtClpC,GAAYna,EAAUrf,KAAKy7D,eAC3Bt7B,EAAQ,GACd,IAAIr3B,EAAGsS,EAAM81B,EAAM8L,EAAOt+B,EAAGC,EAAG6d,EAAW9D,EAAOzD,EAAMG,EAAYwtC,EAAWC,EAC3EpmC,EAAe,SACnB,GAAiB,QAAblkB,EACFoG,EAAI3e,KAAK46B,OAAS+nC,EAClBnmC,EAAYx8B,KAAK8iE,+BACZ,GAAiB,WAAbvqD,EACToG,EAAI3e,KAAK26B,IAAMgoC,EACfnmC,EAAYx8B,KAAK8iE,+BACZ,GAAiB,SAAbvqD,EAAqB,CAC9B,MAAMyM,EAAMhlB,KAAK+iE,wBAAwB3B,GACzC5kC,EAAYxX,EAAIwX,UAChB9d,EAAIsG,EAAItG,OACH,GAAiB,UAAbnG,EAAsB,CAC/B,MAAMyM,EAAMhlB,KAAK+iE,wBAAwB3B,GACzC5kC,EAAYxX,EAAIwX,UAChB9d,EAAIsG,EAAItG,OACH,GAAa,MAATw4B,EAAc,CACvB,GAAiB,WAAb3+B,EACFoG,GAAMw+B,EAAUxiB,IAAMwiB,EAAUviB,QAAU,EAAK8nC,OAC1C,GAAI5xD,EAASyH,GAAW,CAC7B,MAAM2iD,EAAiB1uD,OAAOqC,KAAK0J,GAAU,GACvCnU,EAAQmU,EAAS2iD,GACvBv8C,EAAI3e,KAAK40B,MAAM0B,OAAO4kC,GAAgB9a,iBAAiBh8C,GAASs+D,EAElElmC,EAAYx8B,KAAK8iE,+BACZ,GAAa,MAAT5rB,EAAc,CACvB,GAAiB,WAAb3+B,EACFmG,GAAMy+B,EAAUvjC,KAAOujC,EAAUtjC,OAAS,EAAK6oD,OAC1C,GAAI5xD,EAASyH,GAAW,CAC7B,MAAM2iD,EAAiB1uD,OAAOqC,KAAK0J,GAAU,GACvCnU,EAAQmU,EAAS2iD,GACvBx8C,EAAI1e,KAAK40B,MAAM0B,OAAO4kC,GAAgB9a,iBAAiBh8C,GAEzDo4B,EAAYx8B,KAAK+iE,wBAAwB3B,GAAI5kC,UAElC,MAAT0a,IACY,UAAV39B,EACFkjB,EAAe,MACI,QAAVljB,IACTkjB,EAAe,WAGnB,MAAMoiC,EAAa7+D,KAAK8+D,iBACxB,IAAKh2D,EAAI,EAAGsS,EAAOilC,EAAMr3C,OAAQF,EAAIsS,IAAQtS,EAAG,CAC9CooC,EAAOmP,EAAMv3C,GACbk0C,EAAQ9L,EAAK8L,MACb,MAAMqlB,EAAcrB,EAAY5+B,WAAWpiC,KAAK+4B,WAAWjwB,IAC3D4vB,EAAQ14B,KAAKsgD,gBAAgBx3C,GAAKk4D,EAAYtH,YAC9CzkC,EAAOj1B,KAAK0gE,wBAAwB53D,GACpCssB,EAAaH,EAAKG,WAClBwtC,EAAYv0D,EAAQ2uC,GAASA,EAAMh0C,OAAS,EAC5C,MAAMg6D,EAAYJ,EAAY,EACxB/vC,EAAQwvC,EAAYxvC,MACpBiJ,EAAcumC,EAAY7I,gBAC1B39B,EAAcwmC,EAAY9I,gBAChC,IAoCI0J,EApCAC,EAAgB1mC,EAqCpB,GApCIulB,GACFrjC,EAAIga,EACc,UAAd8D,IAEA0mC,EADEp6D,IAAMsS,EAAO,EACEpb,KAAKL,QAAQob,QAAoB,OAAV,QACzB,IAANjS,EACQ9I,KAAKL,QAAQob,QAAmB,QAAT,OAExB,UAKhB8nD,EAFa,QAAbtqD,EACiB,SAAfqhD,GAAsC,IAAbpgC,GACbopC,EAAYxtC,EAAaA,EAAa,EAC5B,WAAfwkC,GACKiF,EAAWK,QAAQhmC,OAAS,EAAI8pC,EAAY5tC,EAAaA,GAEzDypC,EAAWK,QAAQhmC,OAAS9D,EAAa,EAGtC,SAAfwkC,GAAsC,IAAbpgC,EACdpE,EAAa,EACF,WAAfwkC,EACIiF,EAAWK,QAAQhmC,OAAS,EAAI8pC,EAAY5tC,EAE5CypC,EAAWK,QAAQhmC,OAAS0pC,EAAYxtC,EAGrDkkC,IACFuJ,IAAe,KAGjBlkD,EAAI+Z,EACJmqC,GAAc,EAAID,GAAaxtC,EAAa,GAG1CitC,EAAYxI,kBAAmB,CACjC,MAAMsJ,EAAellC,GAAUokC,EAAYtI,iBACrC7gC,EAAS2lC,EAAWuB,QAAQt3D,GAC5BkvB,EAAQ6mC,EAAWsB,OAAOr3D,GAChC,IAAI6xB,EAAMhc,EAAIkkD,EAAaM,EAAaxoC,IACpC/gB,EAAO8E,EAAIykD,EAAavpD,KAC5B,OAAQ6iB,GACR,IAAK,SACH9B,GAAOzB,EAAS,EAChB,MACF,IAAK,SACHyB,GAAOzB,EACP,MAEF,OAAQsD,GACR,IAAK,SACH5iB,GAAQoe,EAAQ,EAChB,MACF,IAAK,QACHpe,GAAQoe,EACR,MAEFirC,EAAW,CACTrpD,KAAAA,EACA+gB,IAAAA,EACA3C,MAAOA,EAAQmrC,EAAanrC,MAC5BkB,OAAQA,EAASiqC,EAAajqC,OAC9BrG,MAAOwvC,EAAYvI,eAGvB35B,EAAM52B,KAAK,CACTiwB,SAAAA,EACAwjB,MAAAA,EACA/nB,KAAAA,EACApC,MAAAA,EACAiJ,YAAAA,EACAD,YAAAA,EACAgnC,WAAAA,EACArmC,UAAW0mC,EACXzmC,aAAAA,EACAH,YAAa,CAAC5d,EAAGC,GACjBskD,SAAAA,IAGJ,OAAO9iC,EAET2iC,0BACE,MAAM,SAACvqD,EAAQ,MAAE8nC,GAASrgD,KAAKL,QACzB65B,GAAYna,EAAUrf,KAAKy7D,eACjC,GAAIjiC,EACF,MAAoB,QAAbjhB,EAAqB,OAAS,QAEvC,IAAIgB,EAAQ,SAQZ,MAPoB,UAAhB8mC,EAAM9mC,MACRA,EAAQ,OACiB,QAAhB8mC,EAAM9mC,MACfA,EAAQ,QACiB,UAAhB8mC,EAAM9mC,QACfA,EAAQ,SAEHA,EAETwpD,wBAAwB3B,GACtB,MAAM,SAAC7oD,EAAU8nC,OAAO,WAACuZ,EAAU,OAAEN,EAAM,QAAE9H,IAAYxxD,KAAKL,QACxDk/D,EAAa7+D,KAAK8+D,iBAClB4D,EAAiBtB,EAAK5P,EACtBwN,EAASH,EAAWG,OAAOhnC,MACjC,IAAIwE,EACA9d,EAoDJ,MAnDiB,SAAbnG,EACE+gD,GACF56C,EAAI1e,KAAK6Z,MAAQ23C,EACE,SAAfoI,EACFp9B,EAAY,OACY,WAAfo9B,GACTp9B,EAAY,SACZ9d,GAAMsgD,EAAS,IAEfxiC,EAAY,QACZ9d,GAAKsgD,KAGPtgD,EAAI1e,KAAK6Z,MAAQ6oD,EACE,SAAf9I,EACFp9B,EAAY,QACY,WAAfo9B,GACTp9B,EAAY,SACZ9d,GAAMsgD,EAAS,IAEfxiC,EAAY,OACZ9d,EAAI1e,KAAK4Z,OAGS,UAAbrB,EACL+gD,GACF56C,EAAI1e,KAAK4Z,KAAO43C,EACG,SAAfoI,EACFp9B,EAAY,QACY,WAAfo9B,GACTp9B,EAAY,SACZ9d,GAAMsgD,EAAS,IAEfxiC,EAAY,OACZ9d,GAAKsgD,KAGPtgD,EAAI1e,KAAK4Z,KAAO8oD,EACG,SAAf9I,EACFp9B,EAAY,OACY,WAAfo9B,GACTp9B,EAAY,SACZ9d,GAAKsgD,EAAS,IAEdxiC,EAAY,QACZ9d,EAAI1e,KAAK6Z,QAIb2iB,EAAY,QAEP,CAACA,UAAAA,EAAW9d,EAAAA,GAErB0kD,oBACE,GAAIpjE,KAAKL,QAAQ0gD,MAAMiZ,OACrB,OAEF,MAAM1kC,EAAQ50B,KAAK40B,MACbrc,EAAWvY,KAAKL,QAAQ4Y,SAC9B,MAAiB,SAAbA,GAAoC,UAAbA,EAClB,CAACoiB,IAAK,EAAG/gB,KAAM5Z,KAAK4Z,KAAMghB,OAAQhG,EAAMsE,OAAQrf,MAAO7Z,KAAK6Z,OAClD,QAAbtB,GAAmC,WAAbA,EACnB,CAACoiB,IAAK36B,KAAK26B,IAAK/gB,KAAM,EAAGghB,OAAQ56B,KAAK46B,OAAQ/gB,MAAO+a,EAAMoD,YADlE,EAIJqrC,iBACE,MAAM,IAAC9tC,EAAK51B,SAAS,gBAAC60B,GAAgB,KAAE5a,EAAI,IAAE+gB,EAAG,MAAE3C,EAAK,OAAEkB,GAAUl5B,KAChEw0B,IACFe,EAAI6C,OACJ7C,EAAIgH,UAAY/H,EAChBe,EAAI+tC,SAAS1pD,EAAM+gB,EAAK3C,EAAOkB,GAC/B3D,EAAIgD,WAGRksB,qBAAqBrgD,GACnB,MAAM6gD,EAAOjlD,KAAKL,QAAQslD,KAC1B,IAAKjlD,KAAK4+D,eAAiB3Z,EAAKkG,QAC9B,OAAO,EAET,MAAM9K,EAAQrgD,KAAKqgD,MACb72C,EAAQ62C,EAAMkjB,WAAUniD,GAAKA,EAAEhd,QAAUA,IAC/C,GAAIoF,GAAS,EAAG,CACd,MAAMgN,EAAOyuC,EAAK7iB,WAAWpiC,KAAK+4B,WAAWvvB,IAC7C,OAAOgN,EAAKylB,UAEd,OAAO,EAETunC,SAASrmB,GACP,MAAM8H,EAAOjlD,KAAKL,QAAQslD,KACpB1vB,EAAMv1B,KAAKu1B,IACX4K,EAAQngC,KAAK27D,iBAAmB37D,KAAK27D,eAAiB37D,KAAKkhE,sBAAsB/jB,IACvF,IAAIr0C,EAAGsS,EACP,MAAMqoD,EAAW,CAACx9C,EAAIC,EAAIiP,KACnBA,EAAM6C,OAAU7C,EAAMtC,QAG3B0C,EAAI6C,OACJ7C,EAAI0G,UAAY9G,EAAM6C,MACtBzC,EAAIyG,YAAc7G,EAAMtC,MACxB0C,EAAImuC,YAAYvuC,EAAMwa,YAAc,IACpCpa,EAAIouC,eAAiBxuC,EAAMya,iBAC3Bra,EAAIsE,YACJtE,EAAIyE,OAAO/T,EAAGvH,EAAGuH,EAAGtH,GACpB4W,EAAI0E,OAAO/T,EAAGxH,EAAGwH,EAAGvH,GACpB4W,EAAI+E,SACJ/E,EAAIgD,YAEN,GAAI0sB,EAAKkG,QACP,IAAKriD,EAAI,EAAGsS,EAAO+kB,EAAMn3B,OAAQF,EAAIsS,IAAQtS,EAAG,CAC9C,MAAMgU,EAAOqjB,EAAMr3B,GACfm8C,EAAK+T,iBACPyK,EACE,CAAC/kD,EAAG5B,EAAKilD,GAAIpjD,EAAG7B,EAAKklD,IACrB,CAACtjD,EAAG5B,EAAKmlD,GAAItjD,EAAG7B,EAAKolD,IACrBplD,GAGAmoC,EAAKgU,WACPwK,EACE,CAAC/kD,EAAG5B,EAAK6kD,IAAKhjD,EAAG7B,EAAK8kD,KACtB,CAACljD,EAAG5B,EAAK+kD,IAAKljD,EAAG7B,EAAKglD,KACtB,CACEjvC,MAAO/V,EAAKq8C,UACZnhC,MAAOlb,EAAKo8C,UACZvpB,WAAY7yB,EAAKylD,eACjB3yB,iBAAkB9yB,EAAK0lD,wBAOnCzJ,aACE,MAAM,MAACnkC,EAAK,IAAEW,EAAK51B,SAAS,KAACslD,IAASjlD,KAChCqhE,EAAapc,EAAK7iB,WAAWpiC,KAAK+4B,cAClCuoC,EAAYrc,EAAK8T,WAAasI,EAAWhnC,YAAc,EAC7D,IAAKinC,EACH,OAEF,MAAMsC,EAAgB3e,EAAK7iB,WAAWpiC,KAAK+4B,WAAW,IAAIkD,UACpDwlC,EAAczhE,KAAKo8D,aACzB,IAAI2F,EAAIE,EAAID,EAAIE,EACZliE,KAAK+hD,gBACPggB,EAAKtpC,GAAY7D,EAAO50B,KAAK4Z,KAAM0nD,GAAaA,EAAY,EAC5DW,EAAKxpC,GAAY7D,EAAO50B,KAAK6Z,MAAO+pD,GAAiBA,EAAgB,EACrE5B,EAAKE,EAAKT,IAEVO,EAAKvpC,GAAY7D,EAAO50B,KAAK26B,IAAK2mC,GAAaA,EAAY,EAC3DY,EAAKzpC,GAAY7D,EAAO50B,KAAK46B,OAAQgpC,GAAiBA,EAAgB,EACtE7B,EAAKE,EAAKR,GAEZlsC,EAAI6C,OACJ7C,EAAI0G,UAAYolC,EAAWhnC,YAC3B9E,EAAIyG,YAAcqlC,EAAW5sC,YAC7Bc,EAAIsE,YACJtE,EAAIyE,OAAO+nC,EAAIC,GACfzsC,EAAI0E,OAAOgoC,EAAIC,GACf3sC,EAAI+E,SACJ/E,EAAIgD,UAENsrC,WAAW1mB,GACT,MAAM6jB,EAAchhE,KAAKL,QAAQ0gD,MACjC,IAAK2gB,EAAY7V,QACf,OAEF,MAAM51B,EAAMv1B,KAAKu1B,IACXkF,EAAOz6B,KAAKojE,oBACd3oC,GACFI,GAAStF,EAAKkF,GAEhB,MAAM0F,EAAQngC,KAAK47D,cAAgB57D,KAAK47D,YAAc57D,KAAKyiE,mBAAmBtlB,IAC9E,IAAIr0C,EAAGsS,EACP,IAAKtS,EAAI,EAAGsS,EAAO+kB,EAAMn3B,OAAQF,EAAIsS,IAAQtS,EAAG,CAC9C,MAAMgU,EAAOqjB,EAAMr3B,GACbu3D,EAAWvjD,EAAKmY,KAChB+nB,EAAQlgC,EAAKkgC,MACflgC,EAAKmmD,WACP1tC,EAAIgH,UAAYzf,EAAKmmD,SAASpwC,MAC9B0C,EAAI+tC,SAASxmD,EAAKmmD,SAASrpD,KAAMkD,EAAKmmD,SAAStoC,IAAK7d,EAAKmmD,SAASjrC,MAAOlb,EAAKmmD,SAAS/pC,SAEzF,IAAIva,EAAI7B,EAAK+lD,WACbnnC,GAAWnG,EAAKynB,EAAO,EAAGr+B,EAAG0hD,EAAUvjD,GAErC2d,GACFM,GAAWxF,GAGfuuC,YACE,MAAM,IAACvuC,EAAK51B,SAAS,SAAC4Y,EAAQ,MAAE+tC,EAAK,QAAEvrC,IAAY/a,KACnD,IAAKsmD,EAAM6E,QACT,OAEF,MAAMl2B,EAAOiJ,GAAOooB,EAAMrxB,MACpBu8B,EAAUvzB,GAAUqoB,EAAMkL,SAC1Bj4C,EAAQ+sC,EAAM/sC,MACpB,IAAIyrC,EAAS/vB,EAAKG,WAAa,EACd,WAAb7c,GAAsC,WAAbA,GAAyBzH,EAASyH,IAC7DysC,GAAUwM,EAAQ52B,OACdvsB,EAAQi4C,EAAM3qB,QAChBqpB,GAAU/vB,EAAKG,YAAckxB,EAAM3qB,KAAK3yB,OAAS,KAGnDg8C,GAAUwM,EAAQ72B,IAEpB,MAAM,OAACqgC,EAAM,OAAEC,EAAM,SAAE9+B,EAAQ,SAAE3C,GAAYuhC,GAAU/6D,KAAMglD,EAAQzsC,EAAUgB,GAC/EmiB,GAAWnG,EAAK+wB,EAAM3qB,KAAM,EAAG,EAAG1G,EAAM,CACtCpC,MAAOyzB,EAAMzzB,MACbsJ,SAAAA,EACA3C,SAAAA,EACAgD,UAAWs+B,GAAWvhD,EAAOhB,EAAUwC,GACvC0hB,aAAc,SACdH,YAAa,CAAC0+B,EAAQC,KAG1BlqB,KAAKoM,GACEn9C,KAAK4+D,eAGV5+D,KAAKqjE,iBACLrjE,KAAKwjE,SAASrmB,GACdn9C,KAAK+4D,aACL/4D,KAAK8jE,YACL9jE,KAAK6jE,WAAW1mB,IAElBwU,UACE,MAAMn7C,EAAOxW,KAAKL,QACZokE,EAAKvtD,EAAK6pC,OAAS7pC,EAAK6pC,MAAMuR,GAAK,EACnCoS,EAAKxpD,EAAehE,EAAKyuC,MAAQzuC,EAAKyuC,KAAK2M,GAAI,GACrD,OAAK5xD,KAAK4+D,cAAgB5+D,KAAK+wC,OAASoqB,GAAM1zD,UAAUspC,KAQjD,CAAC,CACN6gB,EAAGoS,EACHjzB,KAAOoM,IACLn9C,KAAKqjE,iBACLrjE,KAAKwjE,SAASrmB,GACdn9C,KAAK8jE,cAEN,CACDlS,EAAGoS,EAAK,EACRjzB,KAAM,KACJ/wC,KAAK+4D,eAEN,CACDnH,EAAGmS,EACHhzB,KAAOoM,IACLn9C,KAAK6jE,WAAW1mB,MAtBX,CAAC,CACNyU,EAAGmS,EACHhzB,KAAOoM,IACLn9C,KAAK+wC,KAAKoM,MAuBlBvG,wBAAwBjwC,GACtB,MAAM81D,EAAQz8D,KAAK40B,MAAMk4B,+BACnBmX,EAASjkE,KAAKk3C,KAAO,SACrB/gC,EAAS,GACf,IAAIrN,EAAGsS,EACP,IAAKtS,EAAI,EAAGsS,EAAOqhD,EAAMzzD,OAAQF,EAAIsS,IAAQtS,EAAG,CAC9C,MAAMi7B,EAAO04B,EAAM3zD,GACfi7B,EAAKkgC,KAAYjkE,KAAKoN,IAAQzG,GAAQo9B,EAAKp9B,OAASA,GACtDwP,EAAO5M,KAAKw6B,GAGhB,OAAO5tB,EAETuqD,wBAAwBl3D,GACtB,MAAMgN,EAAOxW,KAAKL,QAAQ0gD,MAAMje,WAAWpiC,KAAK+4B,WAAWvvB,IAC3D,OAAO00B,GAAO1nB,EAAKye,MAErBivC,aACE,MAAMC,EAAWnkE,KAAK0gE,wBAAwB,GAAGtrC,WACjD,OAAQp1B,KAAK+hD,eAAiB/hD,KAAKg4B,MAAQh4B,KAAKk5B,QAAUirC,GAI9D,MAAMC,GACJptD,YAAYrQ,EAAMwtB,EAAOwC,GACvB32B,KAAK2G,KAAOA,EACZ3G,KAAKm0B,MAAQA,EACbn0B,KAAK22B,SAAWA,EAChB32B,KAAKmgC,MAAQ3zB,OAAO7E,OAAO,MAE7B08D,UAAU19D,GACR,OAAO6F,OAAO/E,UAAU68D,cAAcjkE,KAAKL,KAAK2G,KAAKc,UAAWd,EAAKc,WAEvE88D,SAASznD,GACP,MAAMsV,EAAQ5lB,OAAO2K,eAAe2F,GACpC,IAAI0nD,EACAC,GAAkBryC,KACpBoyC,EAAcxkE,KAAKukE,SAASnyC,IAE9B,MAAM+N,EAAQngC,KAAKmgC,MACb/yB,EAAK0P,EAAK1P,GACV+mB,EAAQn0B,KAAKm0B,MAAQ,IAAM/mB,EACjC,IAAKA,EACH,MAAM,IAAIrB,MAAM,2BAA6B+Q,GAE/C,OAAI1P,KAAM+yB,IAGVA,EAAM/yB,GAAM0P,EACZ4nD,GAAiB5nD,EAAMqX,EAAOqwC,GAC1BxkE,KAAK22B,UACPtvB,GAASsvB,SAAS7Z,EAAK1P,GAAI0P,EAAKgX,YALzBK,EASXuC,IAAItpB,GACF,OAAOpN,KAAKmgC,MAAM/yB,GAEpBu3D,WAAW7nD,GACT,MAAMqjB,EAAQngC,KAAKmgC,MACb/yB,EAAK0P,EAAK1P,GACV+mB,EAAQn0B,KAAKm0B,MACf/mB,KAAM+yB,UACDA,EAAM/yB,GAEX+mB,GAAS/mB,KAAM/F,GAAS8sB,YACnB9sB,GAAS8sB,GAAO/mB,GACnBpN,KAAK22B,iBACA7C,GAAU1mB,KAKzB,SAASs3D,GAAiB5nD,EAAMqX,EAAOqwC,GACrC,MAAMI,EAAeh3D,EAAMpB,OAAO7E,OAAO,MAAO,CAC9C68D,EAAcn9D,GAASqvB,IAAI8tC,GAAe,GAC1Cn9D,GAASqvB,IAAIvC,GACbrX,EAAKzV,WAEPA,GAAS4sB,IAAIE,EAAOywC,GAChB9nD,EAAK05C,eACPqO,GAAc1wC,EAAOrX,EAAK05C,eAExB15C,EAAKvQ,aACPlF,GAASovB,SAAStC,EAAOrX,EAAKvQ,aAGlC,SAASs4D,GAAc1wC,EAAO2wC,GAC5Bt4D,OAAOqC,KAAKi2D,GAAQ9+D,SAAQkZ,IAC1B,MAAM6lD,EAAgB7lD,EAASxK,MAAM,KAC/BswD,EAAaD,EAAcnvD,MAC3BqvD,EAAc,CAAC9wC,GAAOlzB,OAAO8jE,GAAe/yD,KAAK,KACjDJ,EAAQkzD,EAAO5lD,GAAUxK,MAAM,KAC/BoiB,EAAallB,EAAMgE,MACnBihB,EAAcjlB,EAAMI,KAAK,KAC/B3K,GAASuvB,MAAMquC,EAAaD,EAAYnuC,EAAaC,MAGzD,SAAS2tC,GAAkBryC,GACzB,MAAO,OAAQA,GAAS,aAAcA,EAGxC,MAAM8yC,GACJluD,cACEhX,KAAKmlE,YAAc,IAAIf,GAAc7rB,GAAmB,YAAY,GACpEv4C,KAAK+0B,SAAW,IAAIqvC,GAAchO,GAAS,YAC3Cp2D,KAAKm2B,QAAU,IAAIiuC,GAAc53D,OAAQ,WACzCxM,KAAKs2B,OAAS,IAAI8tC,GAAcjJ,GAAO,UACvCn7D,KAAKolE,iBAAmB,CAACplE,KAAKmlE,YAAanlE,KAAKs2B,OAAQt2B,KAAK+0B,UAE/Dx0B,OAAOgR,GACLvR,KAAKqlE,MAAM,WAAY9zD,GAEzByB,UAAUzB,GACRvR,KAAKqlE,MAAM,aAAc9zD,GAE3B+zD,kBAAkB/zD,GAChBvR,KAAKqlE,MAAM,WAAY9zD,EAAMvR,KAAKmlE,aAEpC5rB,eAAehoC,GACbvR,KAAKqlE,MAAM,WAAY9zD,EAAMvR,KAAK+0B,UAEpCwwC,cAAch0D,GACZvR,KAAKqlE,MAAM,WAAY9zD,EAAMvR,KAAKm2B,SAEpCqvC,aAAaj0D,GACXvR,KAAKqlE,MAAM,WAAY9zD,EAAMvR,KAAKs2B,QAEpCmvC,cAAcr4D,GACZ,OAAOpN,KAAK0lE,KAAKt4D,EAAIpN,KAAKmlE,YAAa,cAEzCQ,WAAWv4D,GACT,OAAOpN,KAAK0lE,KAAKt4D,EAAIpN,KAAK+0B,SAAU,WAEtC6wC,UAAUx4D,GACR,OAAOpN,KAAK0lE,KAAKt4D,EAAIpN,KAAKm2B,QAAS,UAErC0vC,SAASz4D,GACP,OAAOpN,KAAK0lE,KAAKt4D,EAAIpN,KAAKs2B,OAAQ,SAEpCwvC,qBAAqBv0D,GACnBvR,KAAKqlE,MAAM,aAAc9zD,EAAMvR,KAAKmlE,aAEtCY,kBAAkBx0D,GAChBvR,KAAKqlE,MAAM,aAAc9zD,EAAMvR,KAAK+0B,UAEtCixC,iBAAiBz0D,GACfvR,KAAKqlE,MAAM,aAAc9zD,EAAMvR,KAAKm2B,SAEtC8vC,gBAAgB10D,GACdvR,KAAKqlE,MAAM,aAAc9zD,EAAMvR,KAAKs2B,QAEtC+uC,MAAM9gE,EAAQgN,EAAM20D,GAClB,IAAI30D,GAAMvL,SAAQmgE,IAChB,MAAMC,EAAMF,GAAiBlmE,KAAKqmE,oBAAoBF,GAClDD,GAAiBE,EAAI/B,UAAU8B,IAASC,IAAQpmE,KAAKm2B,SAAWgwC,EAAI/4D,GACtEpN,KAAKsmE,MAAM/hE,EAAQ6hE,EAAKD,GAExBtrD,EAAKsrD,GAAKrpD,IACR,MAAMypD,EAAUL,GAAiBlmE,KAAKqmE,oBAAoBvpD,GAC1D9c,KAAKsmE,MAAM/hE,EAAQgiE,EAASzpD,SAKpCwpD,MAAM/hE,EAAQiiE,EAAUC,GACtB,MAAMC,EAAchqD,EAAYnY,GAChCuQ,EAAS2xD,EAAU,SAAWC,GAAc,GAAID,GAChDD,EAASjiE,GAAQkiE,GACjB3xD,EAAS2xD,EAAU,QAAUC,GAAc,GAAID,GAEjDJ,oBAAoB1/D,GAClB,IAAK,IAAImC,EAAI,EAAGA,EAAI9I,KAAKolE,iBAAiBp8D,OAAQF,IAAK,CACrD,MAAMs9D,EAAMpmE,KAAKolE,iBAAiBt8D,GAClC,GAAIs9D,EAAI/B,UAAU19D,GAChB,OAAOy/D,EAGX,OAAOpmE,KAAKm2B,QAEduvC,KAAKt4D,EAAI84D,EAAev/D,GACtB,MAAMmW,EAAOopD,EAAcxvC,IAAItpB,GAC/B,QAAatH,IAATgX,EACF,MAAM,IAAI/Q,MAAM,IAAMqB,EAAK,yBAA2BzG,EAAO,KAE/D,OAAOmW,GAGX,IAAI0pD,GAAW,IAAItB,GAEnB,MAAMyB,GACJ3vD,cACEhX,KAAK4mE,MAAQ,GAEfC,OAAOjyC,EAAOl1B,EAAM6R,EAAM4G,GACX,eAATzY,IACFM,KAAK4mE,MAAQ5mE,KAAK8mE,mBAAmBlyC,GAAO,GAC5C50B,KAAKmwC,QAAQnwC,KAAK4mE,MAAOhyC,EAAO,YAElC,MAAMroB,EAAc4L,EAASnY,KAAKs0B,aAAaM,GAAOzc,OAAOA,GAAUnY,KAAKs0B,aAAaM,GACnFze,EAASnW,KAAKmwC,QAAQ5jC,EAAaqoB,EAAOl1B,EAAM6R,GAKtD,MAJa,iBAAT7R,IACFM,KAAKmwC,QAAQ5jC,EAAaqoB,EAAO,QACjC50B,KAAKmwC,QAAQnwC,KAAK4mE,MAAOhyC,EAAO,cAE3Bze,EAETg6B,QAAQ5jC,EAAaqoB,EAAOl1B,EAAM6R,GAChCA,EAAOA,GAAQ,GACf,IAAK,MAAMw1D,KAAcx6D,EAAa,CACpC,MAAMy6D,EAASD,EAAWC,OACpBziE,EAASyiE,EAAOtnE,GAChB+E,EAAS,CAACmwB,EAAOrjB,EAAMw1D,EAAWpnE,SACxC,IAAyC,IAArCmV,EAASvQ,EAAQE,EAAQuiE,IAAqBz1D,EAAK01D,WACrD,OAAO,EAGX,OAAO,EAETC,aACOhtD,EAAcla,KAAK6/C,UACtB7/C,KAAKmnE,UAAYnnE,KAAK6/C,OACtB7/C,KAAK6/C,YAAS/5C,GAGlBwuB,aAAaM,GACX,GAAI50B,KAAK6/C,OACP,OAAO7/C,KAAK6/C,OAEd,MAAMtzC,EAAcvM,KAAK6/C,OAAS7/C,KAAK8mE,mBAAmBlyC,GAE1D,OADA50B,KAAKonE,oBAAoBxyC,GAClBroB,EAETu6D,mBAAmBlyC,EAAOzsB,GACxB,MAAMpG,EAAS6yB,GAASA,EAAM7yB,OACxBpC,EAAU6a,EAAezY,EAAOpC,SAAWoC,EAAOpC,QAAQw2B,QAAS,IACnEA,EAAUkxC,GAAWtlE,GAC3B,OAAmB,IAAZpC,GAAsBwI,EAAWm/D,GAAkB1yC,EAAOuB,EAASx2B,EAASwI,GAAhD,GAErCi/D,oBAAoBxyC,GAClB,MAAM2yC,EAAsBvnE,KAAKmnE,WAAa,GACxC56D,EAAcvM,KAAK6/C,OACnBmM,EAAO,CAACt0C,EAAGC,IAAMD,EAAES,QAAOuG,IAAM/G,EAAE6vD,MAAK7oD,GAAKD,EAAEsoD,OAAO55D,KAAOuR,EAAEqoD,OAAO55D,OAC3EpN,KAAKmwC,QAAQ6b,EAAKub,EAAqBh7D,GAAcqoB,EAAO,QAC5D50B,KAAKmwC,QAAQ6b,EAAKz/C,EAAag7D,GAAsB3yC,EAAO,UAGhE,SAASyyC,GAAWtlE,GAClB,MAAMo0B,EAAU,GACVtnB,EAAOrC,OAAOqC,KAAK23D,GAASrwC,QAAQgK,OAC1C,IAAK,IAAIr3B,EAAI,EAAGA,EAAI+F,EAAK7F,OAAQF,IAC/BqtB,EAAQ5sB,KAAKi9D,GAASZ,UAAU/2D,EAAK/F,KAEvC,MAAMsuB,EAAQr1B,EAAOo0B,SAAW,GAChC,IAAK,IAAIrtB,EAAI,EAAGA,EAAIsuB,EAAMpuB,OAAQF,IAAK,CACrC,MAAMk+D,EAAS5vC,EAAMtuB,IACY,IAA7BqtB,EAAQpxB,QAAQiiE,IAClB7wC,EAAQ5sB,KAAKy9D,GAGjB,OAAO7wC,EAET,SAASsxC,GAAQ9nE,EAASwI,GACxB,OAAKA,IAAmB,IAAZxI,GAGI,IAAZA,EACK,GAEFA,EALE,KAOX,SAAS2nE,GAAkB1yC,EAAOuB,EAASx2B,EAASwI,GAClD,MAAMgO,EAAS,GACTpW,EAAU60B,EAAMmE,aACtB,IAAK,IAAIjwB,EAAI,EAAGA,EAAIqtB,EAAQntB,OAAQF,IAAK,CACvC,MAAMk+D,EAAS7wC,EAAQrtB,GACjBsE,EAAK45D,EAAO55D,GACZoJ,EAAOixD,GAAQ9nE,EAAQyN,GAAKjF,GACrB,OAATqO,GAGJL,EAAO5M,KAAK,CACVy9D,OAAAA,EACArnE,QAAS+nE,GAAW9yC,EAAM7yB,OAAQilE,EAAQxwD,EAAMzW,KAGpD,OAAOoW,EAET,SAASuxD,GAAW3lE,EAAQilE,EAAQxwD,EAAMzW,GACxC,MAAM8O,EAAO9M,EAAO4lE,gBAAgBX,GAC9B1mC,EAASv+B,EAAOu5C,gBAAgB9kC,EAAM3H,GAC5C,OAAO9M,EAAOw5C,eAAejb,EAAQvgC,EAAS,CAAC,IAAK,CAACyiC,YAAY,EAAOC,WAAW,EAAOF,SAAS,IAGrG,SAASqlC,GAAajhE,EAAMhH,GAC1B,MAAMkoE,EAAkBxgE,GAASqtB,SAAS/tB,IAAS,GAC7CmhE,GAAkBnoE,EAAQ+0B,UAAY,IAAI/tB,IAAS,GACzD,OAAOmhE,EAAepyC,WAAa/1B,EAAQ+1B,WAAamyC,EAAgBnyC,WAAa,IAEvF,SAASqyC,GAA0B36D,EAAIsoB,GACrC,IAAIwhB,EAAO9pC,EAMX,MALW,YAAPA,EACF8pC,EAAOxhB,EACS,YAAPtoB,IACT8pC,EAAqB,MAAdxhB,EAAoB,IAAM,KAE5BwhB,EAET,SAAS8wB,GAA0B9wB,EAAMxhB,GACvC,OAAOwhB,IAASxhB,EAAY,UAAY,UAE1C,SAASuyC,GAAiB1vD,GACxB,MAAiB,QAAbA,GAAmC,WAAbA,EACjB,IAEQ,SAAbA,GAAoC,UAAbA,EAClB,SADT,EAIF,SAAS2vD,GAAc96D,EAAI+6D,GACzB,MAAW,MAAP/6D,GAAqB,MAAPA,EACTA,EAEF+6D,EAAajxB,MAAQ+wB,GAAiBE,EAAa5vD,WAAanL,EAAG+G,OAAO,GAAGhO,cAEtF,SAASiiE,GAAiBrmE,EAAQpC,GAChC,MAAM0oE,EAAgBv0C,GAAU/xB,EAAO4E,OAAS,CAAC2vB,OAAQ,IACnDgyC,EAAe3oE,EAAQ22B,QAAU,GACjCiyC,EAAiBX,GAAa7lE,EAAO4E,KAAMhH,GAC3C6oE,EAAWh8D,OAAO7E,OAAO,MACzB2uB,EAAS9pB,OAAO7E,OAAO,MA+B7B,OA9BA6E,OAAOqC,KAAKy5D,GAActiE,SAAQoH,IAChC,MAAMq7D,EAAYH,EAAal7D,GAC/B,IAAK0D,EAAS23D,GACZ,OAAO/xD,QAAQhL,MAAM,0CAA0C0B,KAEjE,GAAIq7D,EAAUzmC,OACZ,OAAOtrB,QAAQC,KAAK,kDAAkDvJ,KAExE,MAAM8pC,EAAOgxB,GAAc96D,EAAIq7D,GACzBC,EAAYV,GAA0B9wB,EAAMqxB,GAC5CI,EAAsBN,EAAc/xC,QAAU,GACpDkyC,EAAStxB,GAAQsxB,EAAStxB,IAAS9pC,EACnCkpB,EAAOlpB,GAAM8O,EAAQ1P,OAAO7E,OAAO,MAAO,CAAC,CAACuvC,KAAAA,GAAOuxB,EAAWE,EAAoBzxB,GAAOyxB,EAAoBD,QAE/G3mE,EAAOM,KAAKqyB,SAAS1uB,SAAQyxC,IAC3B,MAAM9wC,EAAO8wC,EAAQ9wC,MAAQ5E,EAAO4E,KAC9B+uB,EAAY+hB,EAAQ/hB,WAAakyC,GAAajhE,EAAMhH,GACpDkoE,EAAkB/zC,GAAUntB,IAAS,GACrCgiE,EAAsBd,EAAgBvxC,QAAU,GACtD9pB,OAAOqC,KAAK85D,GAAqB3iE,SAAQ4iE,IACvC,MAAM1xB,EAAO6wB,GAA0Ba,EAAWlzC,GAC5CtoB,EAAKqqC,EAAQP,EAAO,WAAasxB,EAAStxB,IAASA,EACzD5gB,EAAOlpB,GAAMkpB,EAAOlpB,IAAOZ,OAAO7E,OAAO,MACzCuU,EAAQoa,EAAOlpB,GAAK,CAAC,CAAC8pC,KAAAA,GAAOoxB,EAAal7D,GAAKu7D,EAAoBC,WAGvEp8D,OAAOqC,KAAKynB,GAAQtwB,SAAQE,IAC1B,MAAMmwB,EAAQC,EAAOpwB,GACrBgW,EAAQma,EAAO,CAAChvB,GAASivB,OAAOD,EAAM1vB,MAAOU,GAASgvB,WAEjDC,EAET,SAASuyC,GAAY9mE,GACnB,MAAMpC,EAAUoC,EAAOpC,UAAYoC,EAAOpC,QAAU,IACpDA,EAAQw2B,QAAU3b,EAAe7a,EAAQw2B,QAAS,IAClDx2B,EAAQ22B,OAAS8xC,GAAiBrmE,EAAQpC,GAE5C,SAASmpE,GAASzmE,GAIhB,OAHAA,EAAOA,GAAQ,GACfA,EAAKqyB,SAAWryB,EAAKqyB,UAAY,GACjCryB,EAAKy5C,OAASz5C,EAAKy5C,QAAU,GACtBz5C,EAET,SAAS0mE,GAAWhnE,GAIlB,OAHAA,EAASA,GAAU,GACnBA,EAAOM,KAAOymE,GAAS/mE,EAAOM,MAC9BwmE,GAAY9mE,GACLA,EAET,MAAMinE,GAAW,IAAI99B,IACf+9B,GAAa,IAAI7oC,IACvB,SAAS8oC,GAAW79B,EAAU89B,GAC5B,IAAIt6D,EAAOm6D,GAAStyC,IAAI2U,GAMxB,OALKx8B,IACHA,EAAOs6D,IACPH,GAAS/0C,IAAIoX,EAAUx8B,GACvBo6D,GAAW1oE,IAAIsO,IAEVA,EAET,MAAMu6D,GAAa,CAACn1C,EAAKlnB,EAAK7G,KAC5B,MAAMsQ,EAAOgG,EAAiBzP,EAAK7G,QACtBJ,IAAT0Q,GACFyd,EAAI1zB,IAAIiW,IAGZ,MAAM6yD,GACJryD,YAAYjV,GACV/B,KAAKspE,QAAUP,GAAWhnE,GAC1B/B,KAAKupE,YAAc,IAAIr+B,IACvBlrC,KAAKwpE,eAAiB,IAAIt+B,IAExBrW,eACF,OAAO70B,KAAKspE,QAAQz0C,SAElBluB,WACF,OAAO3G,KAAKspE,QAAQ3iE,KAElBA,SAAKA,GACP3G,KAAKspE,QAAQ3iE,KAAOA,EAElBtE,WACF,OAAOrC,KAAKspE,QAAQjnE,KAElBA,SAAKA,GACPrC,KAAKspE,QAAQjnE,KAAOymE,GAASzmE,GAE3B1C,cACF,OAAOK,KAAKspE,QAAQ3pE,QAElBA,YAAQA,GACVK,KAAKspE,QAAQ3pE,QAAUA,EAErBw2B,cACF,OAAOn2B,KAAKspE,QAAQnzC,QAEtB2c,SACE,MAAM/wC,EAAS/B,KAAKspE,QACpBtpE,KAAKypE,aACLZ,GAAY9mE,GAEd0nE,aACEzpE,KAAKupE,YAAYG,QACjB1pE,KAAKwpE,eAAeE,QAEtBruB,iBAAiBsuB,GACf,OAAOT,GAAWS,GAChB,IAAM,CAAC,CACL,YAAYA,IACZ,OAGN5rB,0BAA0B4rB,EAAa7rB,GACrC,OAAOorB,GAAW,GAAGS,gBAA0B7rB,KAC7C,IAAM,CACJ,CACE,YAAY6rB,iBAA2B7rB,IACvC,eAAeA,KAEjB,CACE,YAAY6rB,IACZ,OAIRjsB,wBAAwBisB,EAAansB,GACnC,OAAO0rB,GAAW,GAAGS,KAAensB,KAClC,IAAM,CAAC,CACL,YAAYmsB,cAAwBnsB,IACpC,YAAYmsB,IACZ,YAAYnsB,IACZ,OAGNmqB,gBAAgBX,GACd,MAAM55D,EAAK45D,EAAO55D,GACZzG,EAAO3G,KAAK2G,KAClB,OAAOuiE,GAAW,GAAGviE,YAAeyG,KAClC,IAAM,CAAC,CACL,WAAWA,OACR45D,EAAO4C,wBAA0B,OAG1CC,cAAcC,EAAWC,GACvB,MAAMR,EAAcvpE,KAAKupE,YACzB,IAAI1yD,EAAQ0yD,EAAY7yC,IAAIozC,GAK5B,OAJKjzD,IAASkzD,IACZlzD,EAAQ,IAAIq0B,IACZq+B,EAAYt1C,IAAI61C,EAAWjzD,IAEtBA,EAETykC,gBAAgBwuB,EAAWE,EAAUD,GACnC,MAAM,QAACpqE,EAAO,KAAEgH,GAAQ3G,KAClB6W,EAAQ7W,KAAK6pE,cAAcC,EAAWC,GACtC9xB,EAASphC,EAAM6f,IAAIszC,GACzB,GAAI/xB,EACF,OAAOA,EAET,MAAM3X,EAAS,IAAIF,IACnB4pC,EAAShkE,SAAQ6I,IACXi7D,IACFxpC,EAAO//B,IAAIupE,GACXj7D,EAAK7I,SAAQE,GAAOkjE,GAAW9oC,EAAQwpC,EAAW5jE,MAEpD2I,EAAK7I,SAAQE,GAAOkjE,GAAW9oC,EAAQ3gC,EAASuG,KAChD2I,EAAK7I,SAAQE,GAAOkjE,GAAW9oC,EAAQxM,GAAUntB,IAAS,GAAIT,KAC9D2I,EAAK7I,SAAQE,GAAOkjE,GAAW9oC,EAAQj5B,GAAUnB,KACjD2I,EAAK7I,SAAQE,GAAOkjE,GAAW9oC,EAAQ/zB,GAAarG,QAEtD,MAAM+Y,EAAQ7T,MAAMuB,KAAK2zB,GAOzB,OANqB,IAAjBrhB,EAAMjW,QACRiW,EAAM1V,KAAKiD,OAAO7E,OAAO,OAEvBshE,GAAWlsD,IAAIitD,IACjBnzD,EAAMod,IAAI+1C,EAAU/qD,GAEfA,EAETgrD,oBACE,MAAM,QAACtqE,EAAO,KAAEgH,GAAQ3G,KACxB,MAAO,CACLL,EACAm0B,GAAUntB,IAAS,GACnBU,GAASqtB,SAAS/tB,IAAS,GAC3B,CAACA,KAAAA,GACDU,GACAkF,IAGJoxC,oBAAoBrd,EAAQhP,EAAOvxB,EAASwgC,EAAW,CAAC,KACtD,MAAMpqB,EAAS,CAACm+B,SAAS,IACnB,SAAClR,EAAQ,YAAE8mC,GAAeC,GAAYnqE,KAAKwpE,eAAgBlpC,EAAQC,GACzE,IAAI5gC,EAAUyjC,EACd,GAAIgnC,GAAYhnC,EAAU9R,GAAQ,CAChCnb,EAAOm+B,SAAU,EACjBv0C,EAAUqX,EAAWrX,GAAWA,IAAYA,EAC5C,MAAMsqE,EAAcrqE,KAAKu7C,eAAejb,EAAQvgC,EAASmqE,GACzDvqE,EAAUiiC,GAAewB,EAAUrjC,EAASsqE,GAE9C,IAAK,MAAM77D,KAAQ8iB,EACjBnb,EAAO3H,GAAQ7O,EAAQ6O,GAEzB,OAAO2H,EAETolC,eAAejb,EAAQvgC,EAASwgC,EAAW,CAAC,IAAKwB,GAC/C,MAAM,SAACqB,GAAY+mC,GAAYnqE,KAAKwpE,eAAgBlpC,EAAQC,GAC5D,OAAOzvB,EAAS/Q,GACZ6hC,GAAewB,EAAUrjC,OAAS+F,EAAWi8B,GAC7CqB,GAGR,SAAS+mC,GAAYG,EAAehqC,EAAQC,GAC1C,IAAI1pB,EAAQyzD,EAAc5zC,IAAI4J,GACzBzpB,IACHA,EAAQ,IAAIq0B,IACZo/B,EAAcr2C,IAAIqM,EAAQzpB,IAE5B,MAAMw0B,EAAW9K,EAASvuB,OAC1B,IAAIimC,EAASphC,EAAM6f,IAAI2U,GACvB,IAAK4M,EAAQ,CACX,MAAM7U,EAAW/C,GAAgBC,EAAQC,GACzC0X,EAAS,CACP7U,SAAAA,EACA8mC,YAAa3pC,EAASpoB,QAAOuH,IAAMA,EAAEvZ,cAAcq7B,SAAS,YAE9D3qB,EAAMod,IAAIoX,EAAU4M,GAEtB,OAAOA,EAET,MAAMsyB,GAAcnmE,GAAS0M,EAAS1M,IACjCoI,OAAO6L,oBAAoBjU,GAAOstC,QAAO,CAACC,EAAKzrC,IAAQyrC,GAAOv6B,EAAWhT,EAAM8B,MAAO,GAC3F,SAASkkE,GAAYvoC,EAAOvQ,GAC1B,MAAM,aAACqR,EAAY,YAAEC,GAAetO,GAAauN,GACjD,IAAK,MAAMrzB,KAAQ8iB,EAAO,CACxB,MAAMkR,EAAaG,EAAan0B,GAC1Bi0B,EAAYG,EAAYp0B,GACxBpK,GAASq+B,GAAaD,IAAeX,EAAMrzB,GACjD,GAAKg0B,IAAeprB,EAAWhT,IAAUmmE,GAAYnmE,KAC/Cq+B,GAAap0B,EAAQjK,GACzB,OAAO,EAGX,OAAO,EAGT,IAAIiS,GAAU,QAEd,MAAMm0D,GAAkB,CAAC,MAAO,SAAU,OAAQ,QAAS,aAC3D,SAASC,GAAqBlyD,EAAU2+B,GACtC,MAAoB,QAAb3+B,GAAmC,WAAbA,IAAiE,IAAvCiyD,GAAgBzlE,QAAQwT,IAA6B,MAAT2+B,EAErG,SAASwzB,GAAcC,EAAIC,GACzB,OAAO,SAASlzD,EAAGC,GACjB,OAAOD,EAAEizD,KAAQhzD,EAAEgzD,GACfjzD,EAAEkzD,GAAMjzD,EAAEizD,GACVlzD,EAAEizD,GAAMhzD,EAAEgzD,IAGlB,SAASE,GAAqB9qE,GAC5B,MAAM60B,EAAQ70B,EAAQ60B,MAChB0e,EAAmB1e,EAAMj1B,QAAQ40B,UACvCK,EAAM0pC,cAAc,eACpBxpD,EAASw+B,GAAoBA,EAAiBw3B,WAAY,CAAC/qE,GAAU60B,GAEvE,SAASm2C,GAAoBhrE,GAC3B,MAAM60B,EAAQ70B,EAAQ60B,MAChB0e,EAAmB1e,EAAMj1B,QAAQ40B,UACvCzf,EAASw+B,GAAoBA,EAAiB03B,WAAY,CAACjrE,GAAU60B,GAEvE,SAASq2C,GAAUnuD,GASjB,OARIqqB,MAAqC,kBAATrqB,EAC9BA,EAAOlK,SAASs4D,eAAepuD,GACtBA,GAAQA,EAAK9T,SACtB8T,EAAOA,EAAK,IAEVA,GAAQA,EAAKgc,SACfhc,EAAOA,EAAKgc,QAEPhc,EAET,MAAMquD,GAAY,GACZC,GAAYllE,IAChB,MAAM4yB,EAASmyC,GAAU/kE,GACzB,OAAOsG,OAAO4nB,OAAO+2C,IAAWhzD,QAAQxO,GAAMA,EAAEmvB,SAAWA,IAAQljB,OAErE,SAASy1D,GAAgBt+D,EAAK0M,EAAOwlC,GACnC,MAAMpwC,EAAOrC,OAAOqC,KAAK9B,GACzB,IAAK,MAAM7G,KAAO2I,EAAM,CACtB,MAAMy8D,GAAUplE,EAChB,GAAIolE,GAAU7xD,EAAO,CACnB,MAAMrV,EAAQ2I,EAAI7G,UACX6G,EAAI7G,IACP+4C,EAAO,GAAKqsB,EAAS7xD,KACvB1M,EAAIu+D,EAASrsB,GAAQ76C,KAK7B,SAASmnE,GAAmBr7D,EAAGs7D,EAAWC,EAAaC,GACrD,OAAKD,GAA0B,aAAXv7D,EAAEvJ,KAGlB+kE,EACKF,EAEFt7D,EALE,KAOX,MAAMy7D,GACJ30D,YAAY8F,EAAM8uD,GAChB,MAAM7pE,EAAS/B,KAAK+B,OAAS,IAAIsnE,GAAOuC,GAClCC,EAAgBZ,GAAUnuD,GAC1BgvD,EAAgBV,GAASS,GAC/B,GAAIC,EACF,MAAM,IAAI//D,MACR,4CAA+C+/D,EAAc1+D,GAA7D,wDAIJ,MAAMzN,EAAUoC,EAAOw5C,eAAex5C,EAAOkoE,oBAAqBjqE,KAAK+4B,cACvE/4B,KAAK60B,SAAW,IAAK9yB,EAAO8yB,UAAYqhC,GAAgB2V,IACxD7rE,KAAK60B,SAAS29B,aAAazwD,GAC3B,MAAMhC,EAAUC,KAAK60B,SAASw9B,eAAewZ,EAAelsE,EAAQmqC,aAC9DhR,EAAS/4B,GAAWA,EAAQ+4B,OAC5BI,EAASJ,GAAUA,EAAOI,OAC1BlB,EAAQc,GAAUA,EAAOd,MAC/Bh4B,KAAKoN,GAAK6M,IACVja,KAAKu1B,IAAMx1B,EACXC,KAAK84B,OAASA,EACd94B,KAAKg4B,MAAQA,EACbh4B,KAAKk5B,OAASA,EACdl5B,KAAK+rE,SAAWpsE,EAChBK,KAAKgsE,aAAehsE,KAAK8pC,YACzB9pC,KAAK2xD,QAAU,GACf3xD,KAAKisE,UAAY,GACjBjsE,KAAKg3C,aAAUlxC,EACf9F,KAAK4uD,MAAQ,GACb5uD,KAAK24B,6BAA0B7yB,EAC/B9F,KAAKm9C,eAAYr3C,EACjB9F,KAAKgxC,QAAU,GACfhxC,KAAKksE,gBAAapmE,EAClB9F,KAAK6I,WAAa,GAClB7I,KAAKmsE,0BAAuBrmE,EAC5B9F,KAAKosE,gBAAkB,GACvBpsE,KAAKs2B,OAAS,GACdt2B,KAAKqsE,SAAW,IAAI1F,GACpB3mE,KAAK81D,SAAW,GAChB91D,KAAKssE,eAAiB,GACtBtsE,KAAKusE,UAAW,EAChBvsE,KAAKm+C,yBAAsBr4C,EAC3B9F,KAAKm5C,cAAWrzC,EAChB9F,KAAKwsE,UAAYrzD,GAASyc,GAAQ51B,KAAK8yC,OAAOld,IAAOj2B,EAAQ8sE,aAAe,GAC5EzsE,KAAKq/C,aAAe,GACpB8rB,GAAUnrE,KAAKoN,IAAMpN,KAChBD,GAAY+4B,GAIjB+Y,GAASN,OAAOvxC,KAAM,WAAY6qE,IAClCh5B,GAASN,OAAOvxC,KAAM,WAAY+qE,IAClC/qE,KAAK0sE,cACD1sE,KAAKusE,UACPvsE,KAAK8yC,UAPLp8B,QAAQhL,MAAM,qEAUdo+B,kBACF,MAAOnqC,SAAS,YAACmqC,EAAW,oBAAE/T,GAAoB,MAAEiC,EAAK,OAAEkB,EAAM,aAAE8yC,GAAgBhsE,KACnF,OAAKka,EAAc4vB,GAGf/T,GAAuBi2C,EAClBA,EAEF9yC,EAASlB,EAAQkB,EAAS,KALxB4Q,EAOPznC,WACF,OAAOrC,KAAK+B,OAAOM,KAEjBA,SAAKA,GACPrC,KAAK+B,OAAOM,KAAOA,EAEjB1C,cACF,OAAOK,KAAK+rE,SAEVpsE,YAAQA,GACVK,KAAK+B,OAAOpC,QAAUA,EAExB+sE,cASE,OARA1sE,KAAKs+D,cAAc,cACft+D,KAAKL,QAAQy2B,WACfp2B,KAAKwzC,SAELvJ,GAAYjqC,KAAMA,KAAKL,QAAQg1B,kBAEjC30B,KAAK2sE,aACL3sE,KAAKs+D,cAAc,aACZt+D,KAET0pE,QAEE,OADA7wC,GAAY74B,KAAK84B,OAAQ94B,KAAKu1B,KACvBv1B,KAETquC,OAEE,OADAwD,GAASxD,KAAKruC,MACPA,KAETwzC,OAAOxb,EAAOkB,GACP2Y,GAASf,QAAQ9wC,MAGpBA,KAAK4sE,kBAAoB,CAAC50C,MAAAA,EAAOkB,OAAAA,GAFjCl5B,KAAK6sE,QAAQ70C,EAAOkB,GAKxB2zC,QAAQ70C,EAAOkB,GACb,MAAMv5B,EAAUK,KAAKL,QACfm5B,EAAS94B,KAAK84B,OACdgR,EAAcnqC,EAAQo2B,qBAAuB/1B,KAAK8pC,YAClDgjC,EAAU9sE,KAAK60B,SAAS8U,eAAe7Q,EAAQd,EAAOkB,EAAQ4Q,GAC9DijC,EAAWptE,EAAQg1B,kBAAoB30B,KAAK60B,SAASC,sBACrDc,EAAO51B,KAAKg4B,MAAQ,SAAW,SACrCh4B,KAAKg4B,MAAQ80C,EAAQ90C,MACrBh4B,KAAKk5B,OAAS4zC,EAAQ5zC,OACtBl5B,KAAKgsE,aAAehsE,KAAK8pC,YACpBG,GAAYjqC,KAAM+sE,GAAU,KAGjC/sE,KAAKs+D,cAAc,SAAU,CAACzhD,KAAMiwD,IACpCh4D,EAASnV,EAAQqtE,SAAU,CAAChtE,KAAM8sE,GAAU9sE,MACxCA,KAAKusE,UACHvsE,KAAKwsE,UAAU52C,IACjB51B,KAAKb,UAIX8tE,sBACE,MAAMttE,EAAUK,KAAKL,QACfutE,EAAgBvtE,EAAQ22B,QAAU,GACxCzb,EAAKqyD,GAAe,CAACC,EAAalJ,KAChCkJ,EAAY//D,GAAK62D,KAGrBmJ,sBACE,MAAMztE,EAAUK,KAAKL,QACf0tE,EAAY1tE,EAAQ22B,OACpBA,EAASt2B,KAAKs2B,OACdg3C,EAAU9gE,OAAOqC,KAAKynB,GAAQob,QAAO,CAAC3kC,EAAKK,KAC/CL,EAAIK,IAAM,EACHL,IACN,IACH,IAAIozB,EAAQ,GACRktC,IACFltC,EAAQA,EAAMl/B,OACZuL,OAAOqC,KAAKw+D,GAAW5xD,KAAKrO,IAC1B,MAAM+6D,EAAekF,EAAUjgE,GACzB8pC,EAAOgxB,GAAc96D,EAAI+6D,GACzBoF,EAAoB,MAATr2B,EACX6K,EAAwB,MAAT7K,EACrB,MAAO,CACLv3C,QAASwoE,EACTqF,UAAWD,EAAW,YAAcxrB,EAAe,SAAW,OAC9D0rB,MAAOF,EAAW,eAAiBxrB,EAAe,WAAa,eAKvElnC,EAAKslB,GAAQrjB,IACX,MAAMqrD,EAAerrD,EAAKnd,QACpByN,EAAK+6D,EAAa/6D,GAClB8pC,EAAOgxB,GAAc96D,EAAI+6D,GACzBuF,EAAYlzD,EAAe2tD,EAAaxhE,KAAMmW,EAAK2wD,YAC3B3nE,IAA1BqiE,EAAa5vD,UAA0BkyD,GAAqBtC,EAAa5vD,SAAU2+B,KAAUuzB,GAAqB3tD,EAAK0wD,aACzHrF,EAAa5vD,SAAWuE,EAAK0wD,WAE/BF,EAAQlgE,IAAM,EACd,IAAIipB,EAAQ,KACZ,GAAIjpB,KAAMkpB,GAAUA,EAAOlpB,GAAIzG,OAAS+mE,EACtCr3C,EAAQC,EAAOlpB,OACV,CACL,MAAMugE,EAAanH,GAASX,SAAS6H,GACrCr3C,EAAQ,IAAIs3C,EAAW,CACrBvgE,GAAAA,EACAzG,KAAM+mE,EACNn4C,IAAKv1B,KAAKu1B,IACVX,MAAO50B,OAETs2B,EAAOD,EAAMjpB,IAAMipB,EAErBA,EAAMimC,KAAK6L,EAAcxoE,MAE3Bkb,EAAKyyD,GAAS,CAACM,EAAYxgE,KACpBwgE,UACIt3C,EAAOlpB,MAGlByN,EAAKyb,GAASD,IACZ24B,GAAQjb,UAAU/zC,KAAMq2B,EAAOA,EAAM12B,SACrCqvD,GAAQ0C,OAAO1xD,KAAMq2B,MAGzBw3C,kBACE,MAAM14B,EAAWn1C,KAAKisE,UAChBntB,EAAU9+C,KAAKqC,KAAKqyB,SAAS1rB,OAC7B61C,EAAU1J,EAASnsC,OAEzB,GADAmsC,EAAS52B,MAAK,CAAC7G,EAAGC,IAAMD,EAAElO,MAAQmO,EAAEnO,QAChCq1C,EAAUC,EAAS,CACrB,IAAK,IAAIh2C,EAAIg2C,EAASh2C,EAAI+1C,IAAW/1C,EACnC9I,KAAK8tE,oBAAoBhlE,GAE3BqsC,EAAS1rC,OAAOq1C,EAASD,EAAUC,GAErC9+C,KAAKosE,gBAAkBj3B,EAAS7mC,MAAM,GAAGiQ,KAAKmsD,GAAc,QAAS,UAEvEqD,8BACE,MAAO9B,UAAW92B,EAAU9yC,MAAM,SAACqyB,IAAa10B,KAC5Cm1C,EAASnsC,OAAS0rB,EAAS1rB,eACtBhJ,KAAKg3C,QAEd7B,EAASnvC,SAAQ,CAAC+9B,EAAMv6B,KACmC,IAArDkrB,EAASvc,QAAOuG,GAAKA,IAAMqlB,EAAKilB,WAAUhgD,QAC5ChJ,KAAK8tE,oBAAoBtkE,MAI/BwkE,2BACE,MAAMC,EAAiB,GACjBv5C,EAAW10B,KAAKqC,KAAKqyB,SAC3B,IAAI5rB,EAAGsS,EAEP,IADApb,KAAK+tE,8BACAjlE,EAAI,EAAGsS,EAAOsZ,EAAS1rB,OAAQF,EAAIsS,EAAMtS,IAAK,CACjD,MAAM2uC,EAAU/iB,EAAS5rB,GACzB,IAAIi7B,EAAO/jC,KAAKu6C,eAAezxC,GAC/B,MAAMnC,EAAO8wC,EAAQ9wC,MAAQ3G,KAAK+B,OAAO4E,KAWzC,GAVIo9B,EAAKp9B,MAAQo9B,EAAKp9B,OAASA,IAC7B3G,KAAK8tE,oBAAoBhlE,GACzBi7B,EAAO/jC,KAAKu6C,eAAezxC,IAE7Bi7B,EAAKp9B,KAAOA,EACZo9B,EAAKrO,UAAY+hB,EAAQ/hB,WAAakyC,GAAajhE,EAAM3G,KAAKL,SAC9DokC,EAAKmqC,MAAQz2B,EAAQy2B,OAAS,EAC9BnqC,EAAKv6B,MAAQV,EACbi7B,EAAKiZ,MAAQ,GAAKvF,EAAQuF,MAC1BjZ,EAAK4P,QAAU3zC,KAAK8mD,iBAAiBh+C,GACjCi7B,EAAK+S,WACP/S,EAAK+S,WAAW0C,YAAY1wC,GAC5Bi7B,EAAK+S,WAAWwC,iBACX,CACL,MAAM60B,EAAkB3H,GAASf,cAAc9+D,IACzC,mBAACm0C,EAAkB,gBAAEyC,GAAmBl2C,GAASqtB,SAAS/tB,GAChE6F,OAAOQ,OAAOmhE,EAAgB1mE,UAAW,CACvC81C,gBAAiBipB,GAASb,WAAWpoB,GACrCzC,mBAAoBA,GAAsB0rB,GAASb,WAAW7qB,KAEhE/W,EAAK+S,WAAa,IAAIq3B,EAAgBnuE,KAAM8I,GAC5CmlE,EAAe1kE,KAAKw6B,EAAK+S,aAI7B,OADA92C,KAAK6tE,kBACEI,EAETG,iBACEvzD,EAAK7a,KAAKqC,KAAKqyB,UAAU,CAAC+iB,EAASl8B,KACjCvb,KAAKu6C,eAAeh/B,GAAcu7B,WAAW4D,UAC5C16C,MAEL06C,QACE16C,KAAKouE,iBACLpuE,KAAKs+D,cAAc,SAErBxrB,OAAOld,GACL,MAAM7zB,EAAS/B,KAAK+B,OACpBA,EAAO+wC,SACP,MAAMnzC,EAAUK,KAAK+rE,SAAWhqE,EAAOw5C,eAAex5C,EAAOkoE,oBAAqBjqE,KAAK+4B,cACjFs1C,EAAgBruE,KAAKm+C,qBAAuBx+C,EAAQ40B,UAK1D,GAJAv0B,KAAKsuE,gBACLtuE,KAAKuuE,sBACLvuE,KAAKwuE,uBACLxuE,KAAKqsE,SAASnF,cACuD,IAAjElnE,KAAKs+D,cAAc,eAAgB,CAAC1oC,KAAAA,EAAMqxC,YAAY,IACxD,OAEF,MAAMgH,EAAiBjuE,KAAKguE,2BAC5BhuE,KAAKs+D,cAAc,wBACnB,IAAIvM,EAAa,EACjB,IAAK,IAAIjpD,EAAI,EAAGsS,EAAOpb,KAAKqC,KAAKqyB,SAAS1rB,OAAQF,EAAIsS,EAAMtS,IAAK,CAC/D,MAAM,WAACguC,GAAc92C,KAAKu6C,eAAezxC,GACnC4xC,GAAS2zB,IAAyD,IAAxCJ,EAAelpE,QAAQ+xC,GACvDA,EAAWiE,sBAAsBL,GACjCqX,EAAa9iD,KAAKmQ,KAAK03B,EAAWgG,iBAAkBiV,GAEtDA,EAAa/xD,KAAKyuE,YAAc9uE,EAAQ2vD,OAAOmC,YAAcM,EAAa,EAC1E/xD,KAAK0uE,cAAc3c,GACdsc,GACHxzD,EAAKozD,GAAiBn3B,IACpBA,EAAW4D,WAGf16C,KAAK2uE,gBAAgB/4C,GACrB51B,KAAKs+D,cAAc,cAAe,CAAC1oC,KAAAA,IACnC51B,KAAK2xD,QAAQpzC,KAAKmsD,GAAc,IAAK,SACrC,MAAM,QAAC15B,EAAO,WAAEk7B,GAAclsE,KAC1BksE,EACFlsE,KAAK4uE,cAAc1C,GAAY,GACtBl7B,EAAQhoC,QACjBhJ,KAAK6uE,mBAAmB79B,EAASA,GAAS,GAE5ChxC,KAAKb,SAEPmvE,gBACEzzD,EAAK7a,KAAKs2B,QAASD,IACjB24B,GAAQ6C,UAAU7xD,KAAMq2B,MAE1Br2B,KAAKitE,sBACLjtE,KAAKotE,sBAEPmB,sBACE,MAAM5uE,EAAUK,KAAKL,QACfmvE,EAAiB,IAAI1uC,IAAI5zB,OAAOqC,KAAK7O,KAAK6I,aAC1CkmE,EAAY,IAAI3uC,IAAIzgC,EAAQq1B,QAC7BpY,EAAUkyD,EAAgBC,MAAgB/uE,KAAKmsE,uBAAyBxsE,EAAQy2B,aACnFp2B,KAAKgvE,eACLhvE,KAAK2sE,cAGT6B,uBACE,MAAM,eAAClC,GAAkBtsE,KACnBivE,EAAUjvE,KAAKkvE,0BAA4B,GACjD,IAAK,MAAM,OAAC3qE,EAAM,MAAEkV,EAAK,MAAEuqB,KAAUirC,EAAS,CAC5C,MAAMhwB,EAAkB,oBAAX16C,GAAgCy/B,EAAQA,EACrDqnC,GAAgBiB,EAAgB7yD,EAAOwlC,IAG3CiwB,yBACE,MAAM7vB,EAAer/C,KAAKq/C,aAC1B,IAAKA,IAAiBA,EAAar2C,OACjC,OAEFhJ,KAAKq/C,aAAe,GACpB,MAAM8vB,EAAenvE,KAAKqC,KAAKqyB,SAAS1rB,OAClComE,EAAW7yD,GAAQ,IAAI6jB,IAC3Bif,EACGlnC,QAAOxO,GAAKA,EAAE,KAAO4S,IACrBd,KAAI,CAAC9R,EAAGb,IAAMA,EAAI,IAAMa,EAAEF,OAAO,GAAGuI,KAAK,QAExCq9D,EAAYD,EAAQ,GAC1B,IAAK,IAAItmE,EAAI,EAAGA,EAAIqmE,EAAcrmE,IAChC,IAAK8T,EAAUyyD,EAAWD,EAAQtmE,IAChC,OAGJ,OAAOsC,MAAMuB,KAAK0iE,GACf5zD,KAAI9R,GAAKA,EAAE+K,MAAM,OACjB+G,KAAI/D,IAAK,CAAEnT,OAAQmT,EAAE,GAAI+B,OAAQ/B,EAAE,GAAIssB,OAAQtsB,EAAE,OAEtDg3D,cAAc3c,GACZ,IAA+D,IAA3D/xD,KAAKs+D,cAAc,eAAgB,CAAC2I,YAAY,IAClD,OAEFjY,GAAQlc,OAAO9yC,KAAMA,KAAKg4B,MAAOh4B,KAAKk5B,OAAQ64B,GAC9C,MAAMt3B,EAAOz6B,KAAKm9C,UACZmyB,EAAS70C,EAAKzC,OAAS,GAAKyC,EAAKvB,QAAU,EACjDl5B,KAAK2xD,QAAU,GACf92C,EAAK7a,KAAK4uD,OAAQpmB,IACZ8mC,GAA2B,cAAjB9mC,EAAIjwB,WAGdiwB,EAAIuL,WACNvL,EAAIuL,YAEN/zC,KAAK2xD,QAAQpoD,QAAQi/B,EAAImpB,cACxB3xD,MACHA,KAAK2xD,QAAQ3rD,SAAQ,CAAC8W,EAAMtT,KAC1BsT,EAAKyyD,KAAO/lE,KAEdxJ,KAAKs+D,cAAc,eAErBqQ,gBAAgB/4C,GACd,IAA6E,IAAzE51B,KAAKs+D,cAAc,uBAAwB,CAAC1oC,KAAAA,EAAMqxC,YAAY,IAAlE,CAGA,IAAK,IAAIn+D,EAAI,EAAGsS,EAAOpb,KAAKqC,KAAKqyB,SAAS1rB,OAAQF,EAAIsS,IAAQtS,EAC5D9I,KAAKu6C,eAAezxC,GAAGguC,WAAW/C,YAEpC,IAAK,IAAIjrC,EAAI,EAAGsS,EAAOpb,KAAKqC,KAAKqyB,SAAS1rB,OAAQF,EAAIsS,IAAQtS,EAC5D9I,KAAKwvE,eAAe1mE,EAAGsO,EAAWwe,GAAQA,EAAK,CAACra,aAAczS,IAAM8sB,GAEtE51B,KAAKs+D,cAAc,sBAAuB,CAAC1oC,KAAAA,KAE7C45C,eAAehmE,EAAOosB,GACpB,MAAMmO,EAAO/jC,KAAKu6C,eAAe/wC,GAC3B+H,EAAO,CAACwyB,KAAAA,EAAMv6B,MAAAA,EAAOosB,KAAAA,EAAMqxC,YAAY,IACW,IAApDjnE,KAAKs+D,cAAc,sBAAuB/sD,KAG9CwyB,EAAK+S,WAAWlG,QAAQhb,GACxBrkB,EAAK01D,YAAa,EAClBjnE,KAAKs+D,cAAc,qBAAsB/sD,IAE3CpS,UACiE,IAA3Da,KAAKs+D,cAAc,eAAgB,CAAC2I,YAAY,MAGhDp1B,GAAS90B,IAAI/c,MACXA,KAAKusE,WAAa16B,GAASf,QAAQ9wC,OACrC6xC,GAASp4B,MAAMzZ,OAGjBA,KAAK+wC,OACL85B,GAAqB,CAACj2C,MAAO50B,SAGjC+wC,OACE,IAAIjoC,EACJ,GAAI9I,KAAK4sE,kBAAmB,CAC1B,MAAM,MAAC50C,EAAK,OAAEkB,GAAUl5B,KAAK4sE,kBAC7B5sE,KAAK6sE,QAAQ70C,EAAOkB,GACpBl5B,KAAK4sE,kBAAoB,KAG3B,GADA5sE,KAAK0pE,QACD1pE,KAAKg4B,OAAS,GAAKh4B,KAAKk5B,QAAU,EACpC,OAEF,IAA6D,IAAzDl5B,KAAKs+D,cAAc,aAAc,CAAC2I,YAAY,IAChD,OAEF,MAAMwI,EAASzvE,KAAK2xD,QACpB,IAAK7oD,EAAI,EAAGA,EAAI2mE,EAAOzmE,QAAUymE,EAAO3mE,GAAG8oD,GAAK,IAAK9oD,EACnD2mE,EAAO3mE,GAAGioC,KAAK/wC,KAAKm9C,WAGtB,IADAn9C,KAAK0vE,gBACE5mE,EAAI2mE,EAAOzmE,SAAUF,EAC1B2mE,EAAO3mE,GAAGioC,KAAK/wC,KAAKm9C,WAEtBn9C,KAAKs+D,cAAc,aAErBlpB,uBAAuBF,GACrB,MAAMC,EAAWn1C,KAAKosE,gBAChBj2D,EAAS,GACf,IAAIrN,EAAGsS,EACP,IAAKtS,EAAI,EAAGsS,EAAO+5B,EAASnsC,OAAQF,EAAIsS,IAAQtS,EAAG,CACjD,MAAMi7B,EAAOoR,EAASrsC,GACjBosC,IAAiBnR,EAAK4P,SACzBx9B,EAAO5M,KAAKw6B,GAGhB,OAAO5tB,EAET22C,+BACE,OAAO9sD,KAAKo1C,wBAAuB,GAErCs6B,gBACE,IAAqE,IAAjE1vE,KAAKs+D,cAAc,qBAAsB,CAAC2I,YAAY,IACxD,OAEF,MAAM9xB,EAAWn1C,KAAK8sD,+BACtB,IAAK,IAAIhkD,EAAIqsC,EAASnsC,OAAS,EAAGF,GAAK,IAAKA,EAC1C9I,KAAK2vE,aAAax6B,EAASrsC,IAE7B9I,KAAKs+D,cAAc,qBAErBqR,aAAa5rC,GACX,MAAMxO,EAAMv1B,KAAKu1B,IACXuF,EAAOiJ,EAAKmZ,MACZ0yB,GAAW90C,EAAKka,SAChBva,EAAOz6B,KAAKm9C,UACZ5rC,EAAO,CACXwyB,KAAAA,EACAv6B,MAAOu6B,EAAKv6B,MACZy9D,YAAY,IAEwC,IAAlDjnE,KAAKs+D,cAAc,oBAAqB/sD,KAGxCq+D,GACF/0C,GAAStF,EAAK,CACZ3b,MAAoB,IAAdkhB,EAAKlhB,KAAiB,EAAI6gB,EAAK7gB,KAAOkhB,EAAKlhB,KACjDC,OAAsB,IAAfihB,EAAKjhB,MAAkB7Z,KAAKg4B,MAAQyC,EAAK5gB,MAAQihB,EAAKjhB,MAC7D8gB,KAAkB,IAAbG,EAAKH,IAAgB,EAAIF,EAAKE,IAAMG,EAAKH,IAC9CC,QAAwB,IAAhBE,EAAKF,OAAmB56B,KAAKk5B,OAASuB,EAAKG,OAASE,EAAKF,SAGrEmJ,EAAK+S,WAAW/F,OACZ6+B,GACF70C,GAAWxF,GAEbhkB,EAAK01D,YAAa,EAClBjnE,KAAKs+D,cAAc,mBAAoB/sD,IAEzC+7C,cAAc9yB,GACZ,OAAOD,GAAeC,EAAOx6B,KAAKm9C,UAAWn9C,KAAKyuE,aAEpDoB,0BAA0B3/D,EAAG0lB,EAAMj2B,EAAS0tD,GAC1C,MAAM9oD,EAAS6pD,GAAYC,MAAMz4B,GACjC,MAAsB,oBAAXrxB,EACFA,EAAOvE,KAAMkQ,EAAGvQ,EAAS0tD,GAE3B,GAET9S,eAAeh/B,GACb,MAAMk8B,EAAUz3C,KAAKqC,KAAKqyB,SAASnZ,GAC7B45B,EAAWn1C,KAAKisE,UACtB,IAAIloC,EAAOoR,EAASh9B,QAAOuG,GAAKA,GAAKA,EAAEsqC,WAAavR,IAAS7hC,MAkB7D,OAjBKmuB,IACHA,EAAO,CACLp9B,KAAM,KACNtE,KAAM,GACNo1C,QAAS,KACTX,WAAY,KACZuB,OAAQ,KACRuB,QAAS,KACTE,QAAS,KACTo0B,MAAOz2B,GAAWA,EAAQy2B,OAAS,EACnC1kE,MAAO+R,EACPytC,SAAUvR,EACVK,QAAS,GACT2D,SAAS,GAEXtG,EAAS5rC,KAAKw6B,IAETA,EAEThL,aACE,OAAO/4B,KAAKm5C,WAAan5C,KAAKm5C,SAAWta,GAAc,KAAM,CAACjK,MAAO50B,KAAM2G,KAAM,WAEnF8jD,yBACE,OAAOzqD,KAAK8sD,+BAA+B9jD,OAE7C89C,iBAAiBvrC,GACf,MAAMk8B,EAAUz3C,KAAKqC,KAAKqyB,SAASnZ,GACnC,IAAKk8B,EACH,OAAO,EAET,MAAM1T,EAAO/jC,KAAKu6C,eAAeh/B,GACjC,MAA8B,mBAAhBwoB,EAAKsU,QAAwBtU,EAAKsU,QAAUZ,EAAQY,OAEpEy3B,qBAAqBv0D,EAAco4B,GACjC,MAAM5P,EAAO/jC,KAAKu6C,eAAeh/B,GACjCwoB,EAAKsU,QAAU1E,EAEjBgV,qBAAqBn/C,GACnBxJ,KAAKssE,eAAe9iE,IAAUxJ,KAAKssE,eAAe9iE,GAEpD46C,kBAAkB56C,GAChB,OAAQxJ,KAAKssE,eAAe9iE,GAE9BumE,kBAAkBx0D,EAAco8B,EAAWhE,GACzC,MAAM/d,EAAO+d,EAAU,OAAS,OAC1B5P,EAAO/jC,KAAKu6C,eAAeh/B,GAC3B60B,EAAQrM,EAAK+S,WAAW+G,wBAAmB/3C,EAAW8vB,GACxDjZ,EAAQg7B,IACV5T,EAAK1hC,KAAKs1C,GAAWU,QAAU1E,EAC/B3zC,KAAK8yC,WAEL9yC,KAAK8vE,qBAAqBv0D,EAAco4B,GACxCvD,EAAM0C,OAAO/O,EAAM,CAAC4P,QAAAA,IACpB3zC,KAAK8yC,QAAQvd,GAAQA,EAAIha,eAAiBA,EAAeqa,OAAO9vB,KAGpE8tC,KAAKr4B,EAAco8B,GACjB33C,KAAK+vE,kBAAkBx0D,EAAco8B,GAAW,GAElDlE,KAAKl4B,EAAco8B,GACjB33C,KAAK+vE,kBAAkBx0D,EAAco8B,GAAW,GAElDm2B,oBAAoBvyD,GAClB,MAAMwoB,EAAO/jC,KAAKisE,UAAU1wD,GACxBwoB,GAAQA,EAAK+S,YACf/S,EAAK+S,WAAW6D,kBAEX36C,KAAKisE,UAAU1wD,GAExBy0D,QACE,IAAIlnE,EAAGsS,EAGP,IAFApb,KAAKquC,OACLwD,GAAS7+B,OAAOhT,MACX8I,EAAI,EAAGsS,EAAOpb,KAAKqC,KAAKqyB,SAAS1rB,OAAQF,EAAIsS,IAAQtS,EACxD9I,KAAK8tE,oBAAoBhlE,GAG7BmnE,UACEjwE,KAAKs+D,cAAc,iBACnB,MAAM,OAACxlC,EAAM,IAAEvD,GAAOv1B,KACtBA,KAAKgwE,QACLhwE,KAAK+B,OAAO0nE,aACR3wC,IACF94B,KAAKgvE,eACLn2C,GAAYC,EAAQvD,GACpBv1B,KAAK60B,SAASy9B,eAAe/8B,GAC7Bv1B,KAAK84B,OAAS,KACd94B,KAAKu1B,IAAM,MAEbv1B,KAAKs+D,cAAc,kBACZ6M,GAAUnrE,KAAKoN,IACtBpN,KAAKs+D,cAAc,gBAErB4R,iBAAiB3+D,GACf,OAAOvR,KAAK84B,OAAOq3C,aAAa5+D,GAElCo7D,aACE3sE,KAAKowE,iBACDpwE,KAAKL,QAAQy2B,WACfp2B,KAAKqwE,uBAELrwE,KAAKusE,UAAW,EAGpB6D,iBACE,MAAMzwC,EAAY3/B,KAAK6I,WACjBgsB,EAAW70B,KAAK60B,SAChBy7C,EAAO,CAAC3pE,EAAM2C,KAClBurB,EAAStuB,iBAAiBvG,KAAM2G,EAAM2C,GACtCq2B,EAAUh5B,GAAQ2C,GAEdA,EAAW,CAAC4G,EAAGwO,EAAGC,KACtBzO,EAAEo4B,QAAU5pB,EACZxO,EAAEq4B,QAAU5pB,EACZ3e,KAAK4uE,cAAc1+D,IAErB2K,EAAK7a,KAAKL,QAAQq1B,QAASruB,GAAS2pE,EAAK3pE,EAAM2C,KAEjD+mE,uBACOrwE,KAAKmsE,uBACRnsE,KAAKmsE,qBAAuB,IAE9B,MAAMxsC,EAAY3/B,KAAKmsE,qBACjBt3C,EAAW70B,KAAK60B,SAChBy7C,EAAO,CAAC3pE,EAAM2C,KAClBurB,EAAStuB,iBAAiBvG,KAAM2G,EAAM2C,GACtCq2B,EAAUh5B,GAAQ2C,GAEdinE,EAAU,CAAC5pE,EAAM2C,KACjBq2B,EAAUh5B,KACZkuB,EAAShyB,oBAAoB7C,KAAM2G,EAAM2C,UAClCq2B,EAAUh5B,KAGf2C,EAAW,CAAC0uB,EAAOkB,KACnBl5B,KAAK84B,QACP94B,KAAKwzC,OAAOxb,EAAOkB,IAGvB,IAAIs3C,EACJ,MAAMjE,EAAW,KACfgE,EAAQ,SAAUhE,GAClBvsE,KAAKusE,UAAW,EAChBvsE,KAAKwzC,SACL88B,EAAK,SAAUhnE,GACfgnE,EAAK,SAAUE,IAEjBA,EAAW,KACTxwE,KAAKusE,UAAW,EAChBgE,EAAQ,SAAUjnE,GAClBtJ,KAAKgwE,QACLhwE,KAAK6sE,QAAQ,EAAG,GAChByD,EAAK,SAAU/D,IAEb13C,EAAS09B,WAAWvyD,KAAK84B,QAC3ByzC,IAEAiE,IAGJxB,eACEn0D,EAAK7a,KAAK6I,YAAY,CAACS,EAAU3C,KAC/B3G,KAAK60B,SAAShyB,oBAAoB7C,KAAM2G,EAAM2C,MAEhDtJ,KAAK6I,WAAa,GAClBgS,EAAK7a,KAAKmsE,sBAAsB,CAAC7iE,EAAU3C,KACzC3G,KAAK60B,SAAShyB,oBAAoB7C,KAAM2G,EAAM2C,MAEhDtJ,KAAKmsE,0BAAuBrmE,EAE9B2qE,iBAAiBtwC,EAAOvK,EAAMgiC,GAC5B,MAAM90B,EAAS80B,EAAU,MAAQ,SACjC,IAAI7zB,EAAMjnB,EAAMhU,EAAGsS,EAKnB,IAJa,YAATwa,IACFmO,EAAO/jC,KAAKu6C,eAAepa,EAAM,GAAG5kB,cACpCwoB,EAAK+S,WAAW,IAAMhU,EAAS,wBAE5Bh6B,EAAI,EAAGsS,EAAO+kB,EAAMn3B,OAAQF,EAAIsS,IAAQtS,EAAG,CAC9CgU,EAAOqjB,EAAMr3B,GACb,MAAMguC,EAAah6B,GAAQ9c,KAAKu6C,eAAez9B,EAAKvB,cAAcu7B,WAC9DA,GACFA,EAAWhU,EAAS,cAAchmB,EAAK8qB,QAAS9qB,EAAKvB,aAAcuB,EAAKtT,QAI9EknE,oBACE,OAAO1wE,KAAKgxC,SAAW,GAEzB2/B,kBAAkBC,GAChB,MAAMC,EAAa7wE,KAAKgxC,SAAW,GAC7B6B,EAAS+9B,EAAen1D,KAAI,EAAEF,aAAAA,EAAc/R,MAAAA,MAChD,MAAMu6B,EAAO/jC,KAAKu6C,eAAeh/B,GACjC,IAAKwoB,EACH,MAAM,IAAIh4B,MAAM,6BAA+BwP,GAEjD,MAAO,CACLA,aAAAA,EACAqsB,QAAS7D,EAAK1hC,KAAKmH,GACnBA,MAAAA,MAGE4gD,GAAWnvC,EAAe43B,EAAQg+B,GACpCzmB,IACFpqD,KAAKgxC,QAAU6B,EACf7yC,KAAKksE,WAAa,KAClBlsE,KAAK6uE,mBAAmBh8B,EAAQg+B,IAGpCvS,cAAc5+D,EAAM6R,EAAM4G,GACxB,OAAOnY,KAAKqsE,SAASxF,OAAO7mE,KAAMN,EAAM6R,EAAM4G,GAEhD02D,mBAAmBh8B,EAAQg+B,EAAYC,GACrC,MAAMC,EAAe/wE,KAAKL,QAAQ01B,MAC5B22B,EAAO,CAACt0C,EAAGC,IAAMD,EAAES,QAAOuG,IAAM/G,EAAE6vD,MAAK7oD,GAAKD,EAAEnD,eAAiBoD,EAAEpD,cAAgBmD,EAAElV,QAAUmV,EAAEnV,UAC/FwnE,EAAchlB,EAAK6kB,EAAYh+B,GAC/Bo+B,EAAYH,EAASj+B,EAASmZ,EAAKnZ,EAAQg+B,GAC7CG,EAAYhoE,QACdhJ,KAAKywE,iBAAiBO,EAAaD,EAAan7C,MAAM,GAEpDq7C,EAAUjoE,QAAU+nE,EAAan7C,MACnC51B,KAAKywE,iBAAiBQ,EAAWF,EAAan7C,MAAM,GAGxDg5C,cAAc1+D,EAAG4gE,GACf,MAAMv/D,EAAO,CACXigC,MAAOthC,EACP4gE,OAAAA,EACA7J,YAAY,EACZwE,YAAazrE,KAAKstD,cAAcp9C,IAE5BghE,EAAelK,IAAYA,EAAOrnE,QAAQq1B,QAAUh1B,KAAKL,QAAQq1B,QAAQwM,SAAStxB,EAAE8jD,OAAOrtD,MACjG,IAA6D,IAAzD3G,KAAKs+D,cAAc,cAAe/sD,EAAM2/D,GAC1C,OAEF,MAAM9mB,EAAUpqD,KAAKmxE,aAAajhE,EAAG4gE,EAAQv/D,EAAKk6D,aAMlD,OALAl6D,EAAK01D,YAAa,EAClBjnE,KAAKs+D,cAAc,aAAc/sD,EAAM2/D,IACnC9mB,GAAW74C,EAAK64C,UAClBpqD,KAAKb,SAEAa,KAETmxE,aAAajhE,EAAG4gE,EAAQrF,GACtB,MAAOz6B,QAAS6/B,EAAa,GAAE,QAAElxE,GAAWK,KACtCqtD,EAAmByjB,EACnBj+B,EAAS7yC,KAAKoxE,mBAAmBlhE,EAAG2gE,EAAYpF,EAAape,GAC7Dqe,EAAU1uD,EAAc9M,GACxBs7D,EAAYD,GAAmBr7D,EAAGlQ,KAAKksE,WAAYT,EAAaC,GAClED,IACFzrE,KAAKksE,WAAa,KAClBp3D,EAASnV,EAAQq2B,QAAS,CAAC9lB,EAAG2iC,EAAQ7yC,MAAOA,MACzC0rE,GACF52D,EAASnV,EAAQs2B,QAAS,CAAC/lB,EAAG2iC,EAAQ7yC,MAAOA,OAGjD,MAAMoqD,GAAWnvC,EAAe43B,EAAQg+B,GAMxC,OALIzmB,GAAW0mB,KACb9wE,KAAKgxC,QAAU6B,EACf7yC,KAAK6uE,mBAAmBh8B,EAAQg+B,EAAYC,IAE9C9wE,KAAKksE,WAAaV,EACXphB,EAETgnB,mBAAmBlhE,EAAG2gE,EAAYpF,EAAape,GAC7C,GAAe,aAAXn9C,EAAEvJ,KACJ,MAAO,GAET,IAAK8kE,EACH,OAAOoF,EAET,MAAME,EAAe/wE,KAAKL,QAAQ01B,MAClC,OAAOr1B,KAAK6vE,0BAA0B3/D,EAAG6gE,EAAan7C,KAAMm7C,EAAc1jB,IAG9E,MAAMgkB,GAAoB,IAAMx2D,EAAK8wD,GAAMR,WAAYv2C,GAAUA,EAAMy3C,SAASnF,eAC1E/vC,IAAa,EA0CnB,SAASm6C,GAAQ/7C,EAAKqS,EAAS8d,GAC7B,MAAM,WAACD,EAAU,YAAE8rB,EAAW,EAAE7yD,EAAC,EAAEC,EAAC,YAAE8nC,EAAW,YAAED,GAAe5e,EAClE,IAAI4pC,EAAcD,EAAc9qB,EAChClxB,EAAIsE,YACJtE,EAAIuE,IAAIpb,EAAGC,EAAG8nC,EAAahB,EAAa+rB,EAAa9rB,EAAW8rB,GAC5DhrB,EAAc+qB,GAChBC,EAAcD,EAAc/qB,EAC5BjxB,EAAIuE,IAAIpb,EAAGC,EAAG6nC,EAAad,EAAW8rB,EAAa/rB,EAAa+rB,GAAa,IAE7Ej8C,EAAIuE,IAAIpb,EAAGC,EAAG4yD,EAAa7rB,EAAWnoC,EAASkoC,EAAaloC,GAE9DgY,EAAIwE,YACJxE,EAAIuF,OAEN,SAAS22C,GAAgBrtE,GACvB,OAAOy5B,GAAkBz5B,EAAO,CAAC,aAAc,WAAY,aAAc,aAE3E,SAASstE,GAAoB53C,EAAK0sB,EAAaC,EAAakrB,GAC1D,MAAMC,EAAIH,GAAgB33C,EAAIn6B,QAAQkyE,cAChCC,GAAiBrrB,EAAcD,GAAe,EAC9CurB,EAAa9iE,KAAKkQ,IAAI2yD,EAAeH,EAAanrB,EAAc,GAChEwrB,EAAqB/rE,IACzB,MAAMgsE,GAAiBxrB,EAAcx3C,KAAKkQ,IAAI2yD,EAAe7rE,IAAQ0rE,EAAa,EAClF,OAAO3wD,GAAY/a,EAAK,EAAGgJ,KAAKkQ,IAAI2yD,EAAeG,KAErD,MAAO,CACLC,WAAYF,EAAkBJ,EAAEM,YAChCC,SAAUH,EAAkBJ,EAAEO,UAC9BC,WAAYpxD,GAAY4wD,EAAEQ,WAAY,EAAGL,GACzCM,SAAUrxD,GAAY4wD,EAAES,SAAU,EAAGN,IAGzC,SAASO,GAAWztD,EAAG0tD,EAAO7zD,EAAGC,GAC/B,MAAO,CACLD,EAAGA,EAAImG,EAAI5V,KAAKsT,IAAIgwD,GACpB5zD,EAAGA,EAAIkG,EAAI5V,KAAKqS,IAAIixD,IAGxB,SAASC,GAAQj9C,EAAKqS,EAASod,EAAQgC,EAASttC,GAC9C,MAAM,EAACgF,EAAC,EAAEC,EAAG8mC,WAAYhsC,EAAK,YAAE83D,EAAa/qB,YAAaisB,GAAU7qC,EAC9D6e,EAAcx3C,KAAKmQ,IAAIwoB,EAAQ6e,YAAcO,EAAUhC,EAASusB,EAAa,GAC7E/qB,EAAcisB,EAAS,EAAIA,EAASzrB,EAAUhC,EAASusB,EAAc,EAC3E,IAAImB,EAAgB,EACpB,MAAMztD,EAAQvL,EAAMD,EACpB,GAAIutC,EAAS,CACX,MAAM2rB,EAAuBF,EAAS,EAAIA,EAASzrB,EAAU,EACvD4rB,EAAuBnsB,EAAc,EAAIA,EAAcO,EAAU,EACjE6rB,GAAsBF,EAAuBC,GAAwB,EACrEE,EAAuC,IAAvBD,EAA4B5tD,EAAQ4tD,GAAuBA,EAAqB7rB,GAAW/hC,EACjHytD,GAAiBztD,EAAQ6tD,GAAiB,EAE5C,MAAMC,EAAO9jE,KAAKmQ,IAAI,KAAO6F,EAAQwhC,EAAczB,EAAS/nC,GAAMwpC,EAC5DusB,GAAe/tD,EAAQ8tD,GAAQ,EAC/BttB,EAAahsC,EAAQu5D,EAAcN,EACnChtB,EAAWhsC,EAAMs5D,EAAcN,GAC/B,WAACR,EAAU,SAAEC,EAAQ,WAAEC,EAAU,SAAEC,GAAYX,GAAoB9pC,EAAS4e,EAAaC,EAAaf,EAAWD,GACjHwtB,EAA2BxsB,EAAcyrB,EACzCgB,EAAyBzsB,EAAc0rB,EACvCgB,EAA0B1tB,EAAaysB,EAAae,EACpDG,EAAwB1tB,EAAWysB,EAAWe,EAC9CG,EAA2B7sB,EAAc4rB,EACzCkB,EAAyB9sB,EAAc6rB,EACvCkB,EAA0B9tB,EAAa2sB,EAAaiB,EACpDG,EAAwB9tB,EAAW2sB,EAAWiB,EAGpD,GAFA/9C,EAAIsE,YACJtE,EAAIuE,IAAIpb,EAAGC,EAAG8nC,EAAa0sB,EAAyBC,GAChDjB,EAAW,EAAG,CAChB,MAAMsB,EAAUnB,GAAWY,EAAwBE,EAAuB10D,EAAGC,GAC7E4W,EAAIuE,IAAI25C,EAAQ/0D,EAAG+0D,EAAQ90D,EAAGwzD,EAAUiB,EAAuB1tB,EAAWnoC,GAE5E,MAAMm2D,EAAKpB,GAAWgB,EAAwB5tB,EAAUhnC,EAAGC,GAE3D,GADA4W,EAAI0E,OAAOy5C,EAAGh1D,EAAGg1D,EAAG/0D,GAChB0zD,EAAW,EAAG,CAChB,MAAMoB,EAAUnB,GAAWgB,EAAwBE,EAAuB90D,EAAGC,GAC7E4W,EAAIuE,IAAI25C,EAAQ/0D,EAAG+0D,EAAQ90D,EAAG0zD,EAAU3sB,EAAWnoC,EAASi2D,EAAwBvkE,KAAKgO,IAG3F,GADAsY,EAAIuE,IAAIpb,EAAGC,EAAG6nC,EAAad,EAAY2sB,EAAW7rB,EAAcf,EAAc2sB,EAAa5rB,GAAc,GACrG4rB,EAAa,EAAG,CAClB,MAAMqB,EAAUnB,GAAWe,EAA0BE,EAAyB70D,EAAGC,GACjF4W,EAAIuE,IAAI25C,EAAQ/0D,EAAG+0D,EAAQ90D,EAAGyzD,EAAYmB,EAA0BtkE,KAAKgO,GAAIwoC,EAAaloC,GAE5F,MAAMo2D,EAAKrB,GAAWW,EAA0BxtB,EAAY/mC,EAAGC,GAE/D,GADA4W,EAAI0E,OAAO05C,EAAGj1D,EAAGi1D,EAAGh1D,GAChBuzD,EAAa,EAAG,CAClB,MAAMuB,EAAUnB,GAAWW,EAA0BE,EAAyBz0D,EAAGC,GACjF4W,EAAIuE,IAAI25C,EAAQ/0D,EAAG+0D,EAAQ90D,EAAGuzD,EAAYzsB,EAAaloC,EAAS41D,GAElE59C,EAAIwE,YAEN,SAAS65C,GAAQr+C,EAAKqS,EAASod,EAAQgC,GACrC,MAAM,YAAC6sB,EAAW,WAAEpuB,EAAU,cAAEJ,GAAiBzd,EACjD,IAAI8d,EAAW9d,EAAQ8d,SACvB,GAAImuB,EAAa,CACfrB,GAAQj9C,EAAKqS,EAASod,EAAQgC,EAASvB,EAAavoC,GACpD,IAAK,IAAIpU,EAAI,EAAGA,EAAI+qE,IAAe/qE,EACjCysB,EAAI6E,OAED3b,MAAM4mC,KACTK,EAAWD,EAAaJ,EAAgBnoC,EACpCmoC,EAAgBnoC,IAAQ,IAC1BwoC,GAAYxoC,IAMlB,OAFAs1D,GAAQj9C,EAAKqS,EAASod,EAAQgC,EAAStB,GACvCnwB,EAAI6E,OACGsrB,EAET,SAASouB,GAAsBv+C,EAAKqS,EAASmsC,GAC3C,MAAM,EAACr1D,EAAC,EAAEC,EAAC,WAAE8mC,EAAU,YAAE8rB,EAAW,YAAEsC,GAAejsC,EAC/C6e,EAAcx3C,KAAKmQ,IAAIwoB,EAAQ6e,YAAc8qB,EAAa,GAC1D/qB,EAAc5e,EAAQ4e,YAAc+qB,EAC1C,IAAIzoE,EAMJ,IALIirE,GACFzC,GAAQ/7C,EAAKqS,EAAS6d,EAAavoC,GAErCqY,EAAIsE,YACJtE,EAAIuE,IAAIpb,EAAGC,EAAG6nC,EAAaf,EAAavoC,EAAKuoC,GAAY,GACpD38C,EAAI,EAAGA,EAAI+qE,IAAe/qE,EAC7BysB,EAAI+E,SAIN,IAFA/E,EAAIsE,YACJtE,EAAIuE,IAAIpb,EAAGC,EAAG8nC,EAAahB,EAAYA,EAAavoC,GAC/CpU,EAAI,EAAGA,EAAI+qE,IAAe/qE,EAC7BysB,EAAI+E,SAGR,SAASy+B,GAAWxjC,EAAKqS,EAASod,EAAQgC,EAAStB,GACjD,MAAM,QAAC/lD,GAAWioC,GACZ,YAACvN,EAAW,gBAAEwV,GAAmBlwC,EACjCo0E,EAAgC,UAAxBp0E,EAAQyoD,YACjB/tB,IAGD05C,GACFx+C,EAAI0G,UAA0B,EAAd5B,EAChB9E,EAAIy+C,SAAWnkC,GAAmB,UAElCta,EAAI0G,UAAY5B,EAChB9E,EAAIy+C,SAAWnkC,GAAmB,SAEhCjI,EAAQisC,aACVC,GAAsBv+C,EAAKqS,EAASmsC,GAElCA,GACFzC,GAAQ/7C,EAAKqS,EAAS8d,GAExB8sB,GAAQj9C,EAAKqS,EAASod,EAAQgC,EAAStB,GACvCnwB,EAAI+E,UA7LN9tB,OAAOC,iBAAiBk/D,GAAO,CAC7BtkE,SAAU,CACR8vB,WAAAA,GACA/yB,MAAOiD,IAET8jE,UAAW,CACTh0C,WAAAA,GACA/yB,MAAO+mE,IAETr3C,UAAW,CACTqD,WAAAA,GACA/yB,MAAO0vB,IAET0yC,SAAU,CACRrvC,WAAAA,GACA/yB,MAAOoiE,IAETnwD,QAAS,CACP8gB,WAAAA,GACA/yB,MAAOiS,IAET+0D,SAAU,CACRj0C,WAAAA,GACA/yB,MAAOgnE,IAET7G,SAAU,CACRptC,WAAAA,GACA/yB,MAAO,IAAI+7B,KACTqmC,GAASjmE,OAAO4/B,GAChBkxC,OAGJ1M,WAAY,CACVxtC,WAAAA,GACA/yB,MAAO,IAAI+7B,KACTqmC,GAASxzD,UAAUmtB,GACnBkxC,SA2JN,MAAM4C,WAAmB7d,GACvBp/C,YAAYk7B,GACV8Q,QACAhjD,KAAKL,aAAUmG,EACf9F,KAAKqlD,mBAAgBv/C,EACrB9F,KAAKylD,gBAAa3/C,EAClB9F,KAAK0lD,cAAW5/C,EAChB9F,KAAKwmD,iBAAc1gD,EACnB9F,KAAKymD,iBAAc3gD,EACnB9F,KAAKuxE,YAAc,EACnBvxE,KAAK6zE,YAAc,EACf3hC,GACF1lC,OAAOQ,OAAOhN,KAAMkyC,GAGxBsb,QAAQ0mB,EAAQC,EAAQ9mB,GACtB,MAAM7yB,EAAQx6B,KAAK0tD,SAAS,CAAC,IAAK,KAAML,IAClC,MAACptC,EAAK,SAAEE,GAAYR,GAAkB6a,EAAO,CAAC9b,EAAGw1D,EAAQv1D,EAAGw1D,KAC5D,WAAC1uB,EAAU,SAAEC,EAAQ,YAAEc,EAAW,YAAEC,EAAW,cAAEpB,GAAiBrlD,KAAK0tD,SAAS,CACpF,aACA,WACA,cACA,cACA,iBACCL,GACG+mB,EAAUp0E,KAAKL,QAAQqnD,QAAU,EACjCY,EAAiBptC,EAAe6qC,EAAeK,EAAWD,GAC1D4uB,EAAgBzsB,GAAkB1qC,GAAOuD,GAAcR,EAAOwlC,EAAYC,GAC1E4uB,EAAepzD,GAAWf,EAAUqmC,EAAc4tB,EAAS3tB,EAAc2tB,GAC/E,OAAQC,GAAiBC,EAE3BxmB,eAAeT,GACb,MAAM,EAAC3uC,EAAC,EAAEC,EAAC,WAAE8mC,EAAU,SAAEC,EAAQ,YAAEc,EAAW,YAAEC,GAAezmD,KAAK0tD,SAAS,CAC3E,IACA,IACA,aACA,WACA,cACA,cACA,iBACCL,IACG,OAACrI,EAAM,QAAEgC,GAAWhnD,KAAKL,QACzB40E,GAAa9uB,EAAaC,GAAY,EACtC8uB,GAAchuB,EAAcC,EAAcO,EAAUhC,GAAU,EACpE,MAAO,CACLtmC,EAAGA,EAAIzP,KAAKsT,IAAIgyD,GAAaC,EAC7B71D,EAAGA,EAAI1P,KAAKqS,IAAIizD,GAAaC,GAGjCne,gBAAgBhJ,GACd,OAAOrtD,KAAK8tD,eAAeT,GAE7Btc,KAAKxb,GACH,MAAM,QAAC51B,EAAO,cAAE0lD,GAAiBrlD,KAC3BglD,GAAUrlD,EAAQqlD,QAAU,GAAK,EACjCgC,GAAWrnD,EAAQqnD,SAAW,GAAK,EAGzC,GAFAhnD,KAAKuxE,YAAuC,UAAxB5xE,EAAQyoD,YAA2B,IAAO,EAC9DpoD,KAAK6zE,YAAcxuB,EAAgBnoC,EAAMjO,KAAKC,MAAMm2C,EAAgBnoC,GAAO,EACrD,IAAlBmoC,GAAuBrlD,KAAKwmD,YAAc,GAAKxmD,KAAKymD,YAAc,EACpE,OAEFlxB,EAAI6C,OACJ,IAAIq8C,EAAe,EACnB,GAAIzvB,EAAQ,CACVyvB,EAAezvB,EAAS,EACxB,MAAMuvB,GAAav0E,KAAKylD,WAAazlD,KAAK0lD,UAAY,EACtDnwB,EAAIoE,UAAU1qB,KAAKsT,IAAIgyD,GAAaE,EAAcxlE,KAAKqS,IAAIizD,GAAaE,GACpEz0E,KAAKqlD,eAAiBpoC,IACxBw3D,EAAezvB,GAGnBzvB,EAAIgH,UAAY58B,EAAQ60B,gBACxBe,EAAIyG,YAAcr8B,EAAQ80B,YAC1B,MAAMixB,EAAWkuB,GAAQr+C,EAAKv1B,KAAMy0E,EAAcztB,GAClD+R,GAAWxjC,EAAKv1B,KAAMy0E,EAAcztB,EAAStB,GAC7CnwB,EAAIgD,WAkBR,SAASm8C,GAASn/C,EAAK51B,EAASw1B,EAAQx1B,GACtC41B,EAAIo/C,QAAUn6D,EAAe2a,EAAMua,eAAgB/vC,EAAQ+vC,gBAC3Dna,EAAImuC,YAAYlpD,EAAe2a,EAAMwa,WAAYhwC,EAAQgwC,aACzDpa,EAAIouC,eAAiBnpD,EAAe2a,EAAMya,iBAAkBjwC,EAAQiwC,kBACpEra,EAAIy+C,SAAWx5D,EAAe2a,EAAM0a,gBAAiBlwC,EAAQkwC,iBAC7Dta,EAAI0G,UAAYzhB,EAAe2a,EAAMkF,YAAa16B,EAAQ06B,aAC1D9E,EAAIyG,YAAcxhB,EAAe2a,EAAMV,YAAa90B,EAAQ80B,aAE9D,SAASwF,GAAO1E,EAAK0F,EAAU9sB,GAC7BonB,EAAI0E,OAAO9rB,EAAOuQ,EAAGvQ,EAAOwQ,GAE9B,SAASi2D,GAAcj1E,GACrB,OAAIA,EAAQk1E,QACH75C,GAELr7B,EAAQunC,SAA8C,aAAnCvnC,EAAQqnC,uBACtB5L,GAEFnB,GAET,SAAS66C,GAASzwC,EAAQ6I,EAASzoC,EAAS,IAC1C,MAAMu/B,EAAQK,EAAOr7B,QACdyQ,MAAOs7D,EAAc,EAAGr7D,IAAKs7D,EAAYhxC,EAAQ,GAAKv/B,GACtDgV,MAAOw7D,EAAcv7D,IAAKw7D,GAAchoC,EACzCzzB,EAAQxK,KAAKmQ,IAAI21D,EAAaE,GAC9Bv7D,EAAMzK,KAAKkQ,IAAI61D,EAAWE,GAC1BC,EAAUJ,EAAcE,GAAgBD,EAAYC,GAAgBF,EAAcG,GAAcF,EAAYE,EAClH,MAAO,CACLlxC,MAAAA,EACAvqB,MAAAA,EACAotB,KAAMqG,EAAQrG,KACdzrB,KAAM1B,EAAMD,IAAU07D,EAAUnxC,EAAQtqB,EAAMD,EAAQC,EAAMD,GAGhE,SAAS27D,GAAY7/C,EAAK5gB,EAAMu4B,EAASzoC,GACvC,MAAM,OAAC4/B,EAAM,QAAE1kC,GAAWgV,GACpB,MAACqvB,EAAK,MAAEvqB,EAAK,KAAEotB,EAAI,KAAEzrB,GAAQ05D,GAASzwC,EAAQ6I,EAASzoC,GACvD4wE,EAAaT,GAAcj1E,GACjC,IACImJ,EAAG0xB,EAAOyM,GADV,KAACgY,GAAO,EAAI,QAAElkC,GAAWtW,GAAU,GAEvC,IAAKqE,EAAI,EAAGA,GAAKsS,IAAQtS,EACvB0xB,EAAQ6J,GAAQ5qB,GAASsB,EAAUK,EAAOtS,EAAIA,IAAMk7B,GAChDxJ,EAAM8J,OAEC2a,GACT1pB,EAAIyE,OAAOQ,EAAM9b,EAAG8b,EAAM7b,GAC1BsgC,GAAO,GAEPo2B,EAAW9/C,EAAK0R,EAAMzM,EAAOzf,EAASpb,EAAQk1E,SAEhD5tC,EAAOzM,GAMT,OAJIqM,IACFrM,EAAQ6J,GAAQ5qB,GAASsB,EAAUK,EAAO,IAAM4oB,GAChDqxC,EAAW9/C,EAAK0R,EAAMzM,EAAOzf,EAASpb,EAAQk1E,YAEvChuC,EAEX,SAASyuC,GAAgB//C,EAAK5gB,EAAMu4B,EAASzoC,GAC3C,MAAM4/B,EAAS1vB,EAAK0vB,QACd,MAACL,EAAK,MAAEvqB,EAAK,KAAE2B,GAAQ05D,GAASzwC,EAAQ6I,EAASzoC,IACjD,KAACw6C,GAAO,EAAI,QAAElkC,GAAWtW,GAAU,GACzC,IAEIqE,EAAG0xB,EAAO+6C,EAAOnvB,EAAMF,EAAMsvB,EAF7BC,EAAO,EACPC,EAAS,EAEb,MAAMC,EAAcnsE,IAAWiQ,GAASsB,EAAUK,EAAO5R,EAAQA,IAAUw6B,EACrE4xC,EAAQ,KACRxvB,IAASF,IACX3wB,EAAI0E,OAAOw7C,EAAMvvB,GACjB3wB,EAAI0E,OAAOw7C,EAAMrvB,GACjB7wB,EAAI0E,OAAOw7C,EAAMD,KAOrB,IAJIv2B,IACFzkB,EAAQ6J,EAAOsxC,EAAW,IAC1BpgD,EAAIyE,OAAOQ,EAAM9b,EAAG8b,EAAM7b,IAEvB7V,EAAI,EAAGA,GAAKsS,IAAQtS,EAAG,CAE1B,GADA0xB,EAAQ6J,EAAOsxC,EAAW7sE,IACtB0xB,EAAM8J,KACR,SAEF,MAAM5lB,EAAI8b,EAAM9b,EACVC,EAAI6b,EAAM7b,EACVk3D,EAAa,EAAJn3D,EACXm3D,IAAWN,GACT52D,EAAIynC,EACNA,EAAOznC,EACEA,EAAIunC,IACbA,EAAOvnC,GAET82D,GAAQC,EAASD,EAAO/2D,KAAOg3D,IAE/BE,IACArgD,EAAI0E,OAAOvb,EAAGC,GACd42D,EAAQM,EACRH,EAAS,EACTtvB,EAAOF,EAAOvnC,GAEhB62D,EAAQ72D,EAEVi3D,IAEF,SAASE,GAAkBnhE,GACzB,MAAM6B,EAAO7B,EAAKhV,QACZgwC,EAAan5B,EAAKm5B,YAAcn5B,EAAKm5B,WAAW3mC,OAChD+sE,GAAephE,EAAKy0C,aAAez0C,EAAK65B,QAAUh4B,EAAK0wB,SAA2C,aAAhC1wB,EAAKwwB,yBAA0CxwB,EAAKq+D,UAAYllC,EACxI,OAAOomC,EAAcT,GAAkBF,GAEzC,SAASY,GAAwBr2E,GAC/B,OAAIA,EAAQk1E,QACHhqC,GAELlrC,EAAQunC,SAA8C,aAAnCvnC,EAAQqnC,uBACtB8D,GAEFF,GAET,SAASqrC,GAAoB1gD,EAAK5gB,EAAM8E,EAAOuqB,GAC7C,IAAI3xB,EAAOsC,EAAKuhE,MACX7jE,IACHA,EAAOsC,EAAKuhE,MAAQ,IAAIC,OACpBxhE,EAAKtC,KAAKA,EAAMoH,EAAOuqB,IACzB3xB,EAAK0nB,aAGT26C,GAASn/C,EAAK5gB,EAAKhV,SACnB41B,EAAI+E,OAAOjoB,GAEb,SAAS+jE,GAAiB7gD,EAAK5gB,EAAM8E,EAAOuqB,GAC1C,MAAM,SAAC+J,EAAQ,QAAEpuC,GAAWgV,EACtB0hE,EAAgBP,GAAkBnhE,GACxC,IAAK,MAAMu4B,KAAWa,EACpB2mC,GAASn/C,EAAK51B,EAASutC,EAAQ/X,OAC/BI,EAAIsE,YACAw8C,EAAc9gD,EAAK5gB,EAAMu4B,EAAS,CAACzzB,MAAAA,EAAOC,IAAKD,EAAQuqB,EAAQ,KACjEzO,EAAIwE,YAENxE,EAAI+E,SAzJR25C,GAAW7mE,GAAK,MAChB6mE,GAAW5sE,SAAW,CACpB+gD,YAAa,SACb3zB,YAAa,OACbob,qBAAiB/pC,EACjB+rE,aAAc,EACdx3C,YAAa,EACb2qB,OAAQ,EACRgC,QAAS,EACT/mC,WAAOna,GAETmuE,GAAWzd,cAAgB,CACzBhiC,gBAAiB,mBAgJnB,MAAM8hD,GAA8B,oBAAXH,OACzB,SAASplC,GAAKxb,EAAK5gB,EAAM8E,EAAOuqB,GAC1BsyC,KAAc3hE,EAAKhV,QAAQutC,QAC7B+oC,GAAoB1gD,EAAK5gB,EAAM8E,EAAOuqB,GAEtCoyC,GAAiB7gD,EAAK5gB,EAAM8E,EAAOuqB,GAGvC,MAAMuyC,WAAoBngB,GACxBp/C,YAAYk7B,GACV8Q,QACAhjD,KAAKqpD,UAAW,EAChBrpD,KAAKL,aAAUmG,EACf9F,KAAK8uC,YAAShpC,EACd9F,KAAKwuC,WAAQ1oC,EACb9F,KAAK2uC,eAAY7oC,EACjB9F,KAAKk2E,WAAQpwE,EACb9F,KAAKw2E,aAAU1wE,EACf9F,KAAKy2E,eAAY3wE,EACjB9F,KAAKopD,YAAa,EAClBppD,KAAK02E,gBAAiB,EACtB12E,KAAKivC,mBAAgBnpC,EACjBosC,GACF1lC,OAAOQ,OAAOhN,KAAMkyC,GAGxB0X,oBAAoBzM,EAAWznB,GAC7B,MAAM/1B,EAAUK,KAAKL,QACrB,IAAKA,EAAQunC,SAA8C,aAAnCvnC,EAAQqnC,0BAA2CrnC,EAAQk1E,UAAY70E,KAAK02E,eAAgB,CAClH,MAAM7vC,EAAOlnC,EAAQonC,SAAW/mC,KAAKwuC,MAAQxuC,KAAK2uC,UAClD/H,GAA2B5mC,KAAKw2E,QAAS72E,EAASw9C,EAAWtW,EAAMnR,GACnE11B,KAAK02E,gBAAiB,GAGtBryC,WAAOA,GACTrkC,KAAKw2E,QAAUnyC,SACRrkC,KAAKy2E,iBACLz2E,KAAKk2E,MACZl2E,KAAK02E,gBAAiB,EAEpBryC,aACF,OAAOrkC,KAAKw2E,QAEVzoC,eACF,OAAO/tC,KAAKy2E,YAAcz2E,KAAKy2E,UAAYnoC,GAAiBtuC,KAAMA,KAAKL,QAAQutC,UAEjF6qB,QACE,MAAMhqB,EAAW/tC,KAAK+tC,SAChB1J,EAASrkC,KAAKqkC,OACpB,OAAO0J,EAAS/kC,QAAUq7B,EAAO0J,EAAS,GAAGt0B,OAE/C00B,OACE,MAAMJ,EAAW/tC,KAAK+tC,SAChB1J,EAASrkC,KAAKqkC,OACdL,EAAQ+J,EAAS/kC,OACvB,OAAOg7B,GAASK,EAAO0J,EAAS/J,EAAQ,GAAGtqB,KAE7CmY,YAAY2I,EAAOtb,GACjB,MAAMvf,EAAUK,KAAKL,QACfyE,EAAQo2B,EAAMtb,GACdmlB,EAASrkC,KAAKqkC,OACd0J,EAAWD,GAAe9tC,KAAM,CAACkf,SAAAA,EAAUzF,MAAOrV,EAAOsV,IAAKtV,IACpE,IAAK2pC,EAAS/kC,OACZ,OAEF,MAAMmN,EAAS,GACTwgE,EAAeX,GAAwBr2E,GAC7C,IAAImJ,EAAGsS,EACP,IAAKtS,EAAI,EAAGsS,EAAO2yB,EAAS/kC,OAAQF,EAAIsS,IAAQtS,EAAG,CACjD,MAAM,MAAC2Q,EAAK,IAAEC,GAAOq0B,EAASjlC,GACxBmd,EAAKoe,EAAO5qB,GACZyM,EAAKme,EAAO3qB,GAClB,GAAIuM,IAAOC,EAAI,CACb/P,EAAO5M,KAAK0c,GACZ,SAEF,MAAM7E,EAAInS,KAAK4P,KAAKza,EAAQ6hB,EAAG/G,KAAcgH,EAAGhH,GAAY+G,EAAG/G,KACzD03D,EAAeD,EAAa1wD,EAAIC,EAAI9E,EAAGzhB,EAAQk1E,SACrD+B,EAAa13D,GAAYsb,EAAMtb,GAC/B/I,EAAO5M,KAAKqtE,GAEd,OAAyB,IAAlBzgE,EAAOnN,OAAemN,EAAO,GAAKA,EAE3Ci/D,YAAY7/C,EAAK2X,EAASzoC,GACxB,MAAM4xE,EAAgBP,GAAkB91E,MACxC,OAAOq2E,EAAc9gD,EAAKv1B,KAAMktC,EAASzoC,GAE3C4N,KAAKkjB,EAAK9b,EAAOuqB,GACf,MAAM+J,EAAW/tC,KAAK+tC,SAChBsoC,EAAgBP,GAAkB91E,MACxC,IAAI6mC,EAAO7mC,KAAKwuC,MAChB/0B,EAAQA,GAAS,EACjBuqB,EAAQA,GAAUhkC,KAAKqkC,OAAOr7B,OAASyQ,EACvC,IAAK,MAAMyzB,KAAWa,EACpBlH,GAAQwvC,EAAc9gD,EAAKv1B,KAAMktC,EAAS,CAACzzB,MAAAA,EAAOC,IAAKD,EAAQuqB,EAAQ,IAEzE,QAAS6C,EAEXkK,KAAKxb,EAAK4nB,EAAW1jC,EAAOuqB,GAC1B,MAAMrkC,EAAUK,KAAKL,SAAW,GAC1B0kC,EAASrkC,KAAKqkC,QAAU,GAC1BA,EAAOr7B,QAAUrJ,EAAQ06B,cAC3B9E,EAAI6C,OACJ2Y,GAAKxb,EAAKv1B,KAAMyZ,EAAOuqB,GACvBzO,EAAIgD,WAEFv4B,KAAKqpD,WACPrpD,KAAK02E,gBAAiB,EACtB12E,KAAKk2E,WAAQpwE,IA2BnB,SAAS+wE,GAAUnhE,EAAI+G,EAAKy6B,EAAMmW,GAChC,MAAM1tD,EAAU+V,EAAG/V,SACZ,CAACu3C,GAAO9yC,GAASsR,EAAGg4C,SAAS,CAACxW,GAAOmW,GAC5C,OAAQp+C,KAAK4P,IAAIpC,EAAMrY,GAASzE,EAAQ85B,OAAS95B,EAAQm3E,UA1B3DP,GAAYnpE,GAAK,OACjBmpE,GAAYlvE,SAAW,CACrBqoC,eAAgB,OAChBC,WAAY,GACZC,iBAAkB,EAClBC,gBAAiB,QACjBxV,YAAa,EACbmM,iBAAiB,EACjBQ,uBAAwB,UACxB5M,MAAM,EACN2M,UAAU,EACV8tC,SAAS,EACT3tC,QAAS,GAEXqvC,GAAY/f,cAAgB,CAC1BhiC,gBAAiB,kBACjBC,YAAa,eAEf8hD,GAAYhqE,YAAc,CACxB8qB,aAAa,EACbE,WAAa1tB,GAAkB,eAATA,GAAkC,SAATA,GAQjD,MAAMktE,WAAqB3gB,GACzBp/C,YAAYk7B,GACV8Q,QACAhjD,KAAKL,aAAUmG,EACf9F,KAAKuU,YAASzO,EACd9F,KAAKskC,UAAOx+B,EACZ9F,KAAKquC,UAAOvoC,EACRosC,GACF1lC,OAAOQ,OAAOhN,KAAMkyC,GAGxBsb,QAAQwpB,EAAQC,EAAQ5pB,GACtB,MAAM1tD,EAAUK,KAAKL,SACf,EAAC+e,EAAC,EAAEC,GAAK3e,KAAK0tD,SAAS,CAAC,IAAK,KAAML,GACzC,OAASp+C,KAAKiP,IAAI84D,EAASt4D,EAAG,GAAKzP,KAAKiP,IAAI+4D,EAASt4D,EAAG,GAAM1P,KAAKiP,IAAIve,EAAQm3E,UAAYn3E,EAAQ85B,OAAQ,GAE7Gy9C,SAASF,EAAQ3pB,GACf,OAAOwpB,GAAU72E,KAAMg3E,EAAQ,IAAK3pB,GAEtC8pB,SAASF,EAAQ5pB,GACf,OAAOwpB,GAAU72E,KAAMi3E,EAAQ,IAAK5pB,GAEtCS,eAAeT,GACb,MAAM,EAAC3uC,EAAC,EAAEC,GAAK3e,KAAK0tD,SAAS,CAAC,IAAK,KAAML,GACzC,MAAO,CAAC3uC,EAAAA,EAAGC,EAAAA,GAEb9B,KAAKld,GACHA,EAAUA,GAAWK,KAAKL,SAAW,GACrC,IAAI85B,EAAS95B,EAAQ85B,QAAU,EAC/BA,EAASxqB,KAAKmQ,IAAIqa,EAAQA,GAAU95B,EAAQy3E,aAAe,GAC3D,MAAM/8C,EAAcZ,GAAU95B,EAAQ06B,aAAe,EACrD,OAAgC,GAAxBZ,EAASY,GAEnB0W,KAAKxb,EAAKkF,GACR,MAAM96B,EAAUK,KAAKL,QACjBK,KAAKskC,MAAQ3kC,EAAQ85B,OAAS,KAAQc,GAAev6B,KAAMy6B,EAAMz6B,KAAK6c,KAAKld,GAAW,KAG1F41B,EAAIyG,YAAcr8B,EAAQ80B,YAC1Bc,EAAI0G,UAAYt8B,EAAQ06B,YACxB9E,EAAIgH,UAAY58B,EAAQ60B,gBACxB2E,GAAU5D,EAAK51B,EAASK,KAAK0e,EAAG1e,KAAK2e,IAEvCguC,WACE,MAAMhtD,EAAUK,KAAKL,SAAW,GAChC,OAAOA,EAAQ85B,OAAS95B,EAAQm3E,WAkBpC,SAASO,GAAaC,EAAKjqB,GACzB,MAAM,EAAC3uC,EAAC,EAAEC,EAAC,KAAEkhB,EAAI,MAAE7H,EAAK,OAAEkB,GAAUo+C,EAAI5pB,SAAS,CAAC,IAAK,IAAK,OAAQ,QAAS,UAAWL,GACxF,IAAIzzC,EAAMC,EAAO8gB,EAAKC,EAAQ28C,EAc9B,OAbID,EAAIr1B,YACNs1B,EAAOr+C,EAAS,EAChBtf,EAAO3K,KAAKkQ,IAAIT,EAAGmhB,GACnBhmB,EAAQ5K,KAAKmQ,IAAIV,EAAGmhB,GACpBlF,EAAMhc,EAAI44D,EACV38C,EAASjc,EAAI44D,IAEbA,EAAOv/C,EAAQ,EACfpe,EAAO8E,EAAI64D,EACX19D,EAAQ6E,EAAI64D,EACZ58C,EAAM1rB,KAAKkQ,IAAIR,EAAGkhB,GAClBjF,EAAS3rB,KAAKmQ,IAAIT,EAAGkhB,IAEhB,CAACjmB,KAAAA,EAAM+gB,IAAAA,EAAK9gB,MAAAA,EAAO+gB,OAAAA,GAE5B,SAAS48C,GAAYlzC,EAAMlgC,EAAO+a,EAAKC,GACrC,OAAOklB,EAAO,EAAItjB,GAAY5c,EAAO+a,EAAKC,GAE5C,SAASq4D,GAAiBH,EAAKI,EAAMC,GACnC,MAAMvzE,EAAQkzE,EAAI33E,QAAQ06B,YACpBiK,EAAOgzC,EAAIl1B,cACXwvB,EAAI7zC,GAAO35B,GACjB,MAAO,CACLgd,EAAGo2D,GAAYlzC,EAAK3J,IAAKi3C,EAAEj3C,IAAK,EAAGg9C,GACnC9yD,EAAG2yD,GAAYlzC,EAAKzqB,MAAO+3D,EAAE/3D,MAAO,EAAG69D,GACvC//D,EAAG6/D,GAAYlzC,EAAK1J,OAAQg3C,EAAEh3C,OAAQ,EAAG+8C,GACzC5uE,EAAGyuE,GAAYlzC,EAAK1qB,KAAMg4D,EAAEh4D,KAAM,EAAG89D,IAGzC,SAASE,GAAkBN,EAAKI,EAAMC,GACpC,MAAM,mBAACt1B,GAAsBi1B,EAAI5pB,SAAS,CAAC,uBACrCtpD,EAAQkzE,EAAI33E,QAAQkyE,aACpBD,EAAI5zC,GAAc55B,GAClByzE,EAAO5oE,KAAKkQ,IAAIu4D,EAAMC,GACtBrzC,EAAOgzC,EAAIl1B,cACX01B,EAAez1B,GAAsBvxC,EAAS1M,GACpD,MAAO,CACLg5B,QAASo6C,IAAaM,GAAgBxzC,EAAK3J,KAAO2J,EAAK1qB,KAAMg4D,EAAEx0C,QAAS,EAAGy6C,GAC3Et6C,SAAUi6C,IAAaM,GAAgBxzC,EAAK3J,KAAO2J,EAAKzqB,MAAO+3D,EAAEr0C,SAAU,EAAGs6C,GAC9Ex6C,WAAYm6C,IAAaM,GAAgBxzC,EAAK1J,QAAU0J,EAAK1qB,KAAMg4D,EAAEv0C,WAAY,EAAGw6C,GACpFv6C,YAAak6C,IAAaM,GAAgBxzC,EAAK1J,QAAU0J,EAAKzqB,MAAO+3D,EAAEt0C,YAAa,EAAGu6C,IAG3F,SAASE,GAAcT,GACrB,MAAMnqC,EAASkqC,GAAaC,GACtBt/C,EAAQmV,EAAOtzB,MAAQszB,EAAOvzB,KAC9Bsf,EAASiU,EAAOvS,OAASuS,EAAOxS,IAChC+uB,EAAS+tB,GAAiBH,EAAKt/C,EAAQ,EAAGkB,EAAS,GACnDO,EAASm+C,GAAkBN,EAAKt/C,EAAQ,EAAGkB,EAAS,GAC1D,MAAO,CACL8+C,MAAO,CACLt5D,EAAGyuB,EAAOvzB,KACV+E,EAAGwuB,EAAOxS,IACVpV,EAAGyS,EACHl3B,EAAGo4B,EACHO,OAAAA,GAEFs6C,MAAO,CACLr1D,EAAGyuB,EAAOvzB,KAAO8vC,EAAO3gD,EACxB4V,EAAGwuB,EAAOxS,IAAM+uB,EAAOtoC,EACvBmE,EAAGyS,EAAQ0xB,EAAO3gD,EAAI2gD,EAAO7kC,EAC7B/jB,EAAGo4B,EAASwwB,EAAOtoC,EAAIsoC,EAAO/xC,EAC9B8hB,OAAQ,CACN2D,QAASnuB,KAAKmQ,IAAI,EAAGqa,EAAO2D,QAAUnuB,KAAKmQ,IAAIsqC,EAAOtoC,EAAGsoC,EAAO3gD,IAChEw0B,SAAUtuB,KAAKmQ,IAAI,EAAGqa,EAAO8D,SAAWtuB,KAAKmQ,IAAIsqC,EAAOtoC,EAAGsoC,EAAO7kC,IAClEwY,WAAYpuB,KAAKmQ,IAAI,EAAGqa,EAAO4D,WAAapuB,KAAKmQ,IAAIsqC,EAAO/xC,EAAG+xC,EAAO3gD,IACtEu0B,YAAaruB,KAAKmQ,IAAI,EAAGqa,EAAO6D,YAAcruB,KAAKmQ,IAAIsqC,EAAO/xC,EAAG+xC,EAAO7kC,OAKhF,SAAS2oC,GAAQ8pB,EAAK54D,EAAGC,EAAG0uC,GAC1B,MAAM4qB,EAAc,OAANv5D,EACRw5D,EAAc,OAANv5D,EACRw5D,EAAWF,GAASC,EACpB/qC,EAASmqC,IAAQa,GAAYd,GAAaC,EAAKjqB,GACrD,OAAOlgB,IACH8qC,GAAS/2D,GAAWxC,EAAGyuB,EAAOvzB,KAAMuzB,EAAOtzB,UAC3Cq+D,GAASh3D,GAAWvC,EAAGwuB,EAAOxS,IAAKwS,EAAOvS,SAEhD,SAASw9C,GAAU3+C,GACjB,OAAOA,EAAO2D,SAAW3D,EAAO8D,UAAY9D,EAAO4D,YAAc5D,EAAO6D,YAE1E,SAAS+6C,GAAkB9iD,EAAK4E,GAC9B5E,EAAI4E,KAAKA,EAAKzb,EAAGyb,EAAKxb,EAAGwb,EAAK5U,EAAG4U,EAAKr5B,GAExC,SAASw3E,GAAYn+C,EAAM2xB,EAAQysB,EAAU,IAC3C,MAAM75D,EAAIyb,EAAKzb,IAAM65D,EAAQ75D,GAAKotC,EAAS,EACrCntC,EAAIwb,EAAKxb,IAAM45D,EAAQ55D,GAAKmtC,EAAS,EACrCvmC,GAAK4U,EAAKzb,EAAIyb,EAAK5U,IAAMgzD,EAAQ75D,EAAI65D,EAAQhzD,EAAIumC,EAAS,GAAKptC,EAC/D5d,GAAKq5B,EAAKxb,EAAIwb,EAAKr5B,IAAMy3E,EAAQ55D,EAAI45D,EAAQz3E,EAAIgrD,EAAS,GAAKntC,EACrE,MAAO,CACLD,EAAGyb,EAAKzb,EAAIA,EACZC,EAAGwb,EAAKxb,EAAIA,EACZ4G,EAAG4U,EAAK5U,EAAIA,EACZzkB,EAAGq5B,EAAKr5B,EAAIA,EACZ24B,OAAQU,EAAKV,QAlHjBs9C,GAAa3pE,GAAK,QAClB2pE,GAAa1vE,SAAW,CACtBgzB,YAAa,EACby8C,UAAW,EACXzuB,iBAAkB,EAClB+uB,YAAa,EACb79C,WAAY,SACZE,OAAQ,EACRD,SAAU,GAEZu9C,GAAavgB,cAAgB,CAC3BhiC,gBAAiB,kBACjBC,YAAa,eAyGf,MAAM+jD,WAAmBpiB,GACvBp/C,YAAYk7B,GACV8Q,QACAhjD,KAAKL,aAAUmG,EACf9F,KAAKiiD,gBAAan8C,EAClB9F,KAAK6/B,UAAO/5B,EACZ9F,KAAKg4B,WAAQlyB,EACb9F,KAAKk5B,YAASpzB,EACd9F,KAAK4iD,mBAAgB98C,EACjBosC,GACF1lC,OAAOQ,OAAOhN,KAAMkyC,GAGxBnB,KAAKxb,GACH,MAAM,cAACqtB,EAAejjD,SAAS,YAAC80B,EAAW,gBAAED,IAAoBx0B,MAC3D,MAAC+zE,EAAK,MAAEiE,GAASD,GAAc/3E,MAC/By4E,EAAcL,GAAUJ,EAAMv+C,QAAU0D,GAAqBk7C,GACnE9iD,EAAI6C,OACA4/C,EAAMzyD,IAAMwuD,EAAMxuD,GAAKyyD,EAAMl3E,IAAMizE,EAAMjzE,IAC3Cy0B,EAAIsE,YACJ4+C,EAAYljD,EAAK+iD,GAAYN,EAAOp1B,EAAemxB,IACnDx+C,EAAIuF,OACJ29C,EAAYljD,EAAK+iD,GAAYvE,GAAQnxB,EAAeo1B,IACpDziD,EAAIgH,UAAY9H,EAChBc,EAAI6E,KAAK,YAEX7E,EAAIsE,YACJ4+C,EAAYljD,EAAK+iD,GAAYvE,EAAOnxB,IACpCrtB,EAAIgH,UAAY/H,EAChBe,EAAI6E,OACJ7E,EAAIgD,UAENi1B,QAAQwpB,EAAQC,EAAQ5pB,GACtB,OAAOG,GAAQxtD,KAAMg3E,EAAQC,EAAQ5pB,GAEvC6pB,SAASF,EAAQ3pB,GACf,OAAOG,GAAQxtD,KAAMg3E,EAAQ,KAAM3pB,GAErC8pB,SAASF,EAAQ5pB,GACf,OAAOG,GAAQxtD,KAAM,KAAMi3E,EAAQ5pB,GAErCS,eAAeT,GACb,MAAM,EAAC3uC,EAAC,EAAEC,EAAC,KAAEkhB,EAAI,WAAEoiB,GAAcjiD,KAAK0tD,SAAS,CAAC,IAAK,IAAK,OAAQ,cAAeL,GACjF,MAAO,CACL3uC,EAAGujC,GAAcvjC,EAAImhB,GAAQ,EAAInhB,EACjCC,EAAGsjC,EAAatjC,GAAKA,EAAIkhB,GAAQ,GAGrC8sB,SAASzV,GACP,MAAgB,MAATA,EAAel3C,KAAKg4B,MAAQ,EAAIh4B,KAAKk5B,OAAS,GAGzDs/C,GAAWprE,GAAK,MAChBorE,GAAWnxE,SAAW,CACpB+6C,cAAe,QACf/nB,YAAa,EACbw3C,aAAc,EACdjvB,cAAe,OACfrpB,gBAAYzzB,GAEd0yE,GAAWhiB,cAAgB,CACzBhiC,gBAAiB,kBACjBC,YAAa,eAitBf,MAAMikD,GAAa,CAACC,EAAWxU,KAC7B,IAAI,UAACyU,EAAYzU,EAAQ,SAAE0U,EAAW1U,GAAYwU,EAKlD,OAJIA,EAAUG,gBACZF,EAAY3pE,KAAKkQ,IAAIy5D,EAAWzU,GAChC0U,EAAW5pE,KAAKkQ,IAAI05D,EAAU1U,IAEzB,CACL0U,SAAAA,EACAD,UAAAA,EACAG,WAAY9pE,KAAKmQ,IAAI+kD,EAAUyU,KAG7BI,GAAa,CAACthE,EAAGC,IAAY,OAAND,GAAoB,OAANC,GAAcD,EAAE6D,eAAiB5D,EAAE4D,cAAgB7D,EAAElO,QAAUmO,EAAEnO,MAC5G,MAAMyvE,WAAe7iB,GACnBp/C,YAAYjV,GACVihD,QACAhjD,KAAKk5E,QAAS,EACdl5E,KAAKm5E,eAAiB,GACtBn5E,KAAKo5E,aAAe,KACpBp5E,KAAKq5E,cAAe,EACpBr5E,KAAK40B,MAAQ7yB,EAAO6yB,MACpB50B,KAAKL,QAAUoC,EAAOpC,QACtBK,KAAKu1B,IAAMxzB,EAAOwzB,IAClBv1B,KAAKs5E,iBAAcxzE,EACnB9F,KAAKu5E,iBAAczzE,EACnB9F,KAAKw5E,gBAAa1zE,EAClB9F,KAAKmpC,eAAYrjC,EACjB9F,KAAKm8B,cAAWr2B,EAChB9F,KAAK26B,SAAM70B,EACX9F,KAAK46B,YAAS90B,EACd9F,KAAK4Z,UAAO9T,EACZ9F,KAAK6Z,WAAQ/T,EACb9F,KAAKk5B,YAASpzB,EACd9F,KAAKg4B,WAAQlyB,EACb9F,KAAKo7D,cAAWt1D,EAChB9F,KAAKuY,cAAWzS,EAChB9F,KAAK8yB,YAAShtB,EACd9F,KAAKuvD,cAAWzpD,EAElBgtC,OAAO3W,EAAUgN,EAAWY,GAC1B/pC,KAAKm8B,SAAWA,EAChBn8B,KAAKmpC,UAAYA,EACjBnpC,KAAKo7D,SAAWrxB,EAChB/pC,KAAKg9D,gBACLh9D,KAAKy5E,cACLz5E,KAAK+9D,MAEPf,gBACMh9D,KAAK+hD,gBACP/hD,KAAKg4B,MAAQh4B,KAAKm8B,SAClBn8B,KAAK4Z,KAAO5Z,KAAKo7D,SAASxhD,KAC1B5Z,KAAK6Z,MAAQ7Z,KAAKg4B,QAElBh4B,KAAKk5B,OAASl5B,KAAKmpC,UACnBnpC,KAAK26B,IAAM36B,KAAKo7D,SAASzgC,IACzB36B,KAAK46B,OAAS56B,KAAKk5B,QAGvBugD,cACE,MAAMd,EAAY34E,KAAKL,QAAQm8C,QAAU,GACzC,IAAIw9B,EAAcxkE,EAAS6jE,EAAUlwB,eAAgB,CAACzoD,KAAK40B,OAAQ50B,OAAS,GACxE24E,EAAUxgE,SACZmhE,EAAcA,EAAYnhE,QAAQ2E,GAAS67D,EAAUxgE,OAAO2E,EAAM9c,KAAK40B,MAAMvyB,SAE3Es2E,EAAUp6D,OACZ+6D,EAAcA,EAAY/6D,MAAK,CAAC7G,EAAGC,IAAMghE,EAAUp6D,KAAK7G,EAAGC,EAAG3X,KAAK40B,MAAMvyB,SAEvErC,KAAKL,QAAQob,SACfu+D,EAAYv+D,UAEd/a,KAAKs5E,YAAcA,EAErBvb,MACE,MAAM,QAACp+D,EAAO,IAAE41B,GAAOv1B,KACvB,IAAKL,EAAQwrD,QAEX,YADAnrD,KAAKg4B,MAAQh4B,KAAKk5B,OAAS,GAG7B,MAAMy/C,EAAYh5E,EAAQm8C,OACpB49B,EAAYx7C,GAAOy6C,EAAU1jD,MAC7BkvC,EAAWuV,EAAU78D,KACrByiD,EAAct/D,KAAK25E,uBACnB,SAACd,EAAQ,WAAEE,GAAcL,GAAWC,EAAWxU,GACrD,IAAInsC,EAAOkB,EACX3D,EAAIN,KAAOykD,EAAU7hD,OACjB73B,KAAK+hD,gBACP/pB,EAAQh4B,KAAKm8B,SACbjD,EAASl5B,KAAK45E,SAASta,EAAa6E,EAAU0U,EAAUE,GAAc,KAEtE7/C,EAASl5B,KAAKmpC,UACdnR,EAAQh4B,KAAK65E,SAASva,EAAa6E,EAAU0U,EAAUE,GAAc,IAEvE/4E,KAAKg4B,MAAQ/oB,KAAKkQ,IAAI6Y,EAAOr4B,EAAQw8B,UAAYn8B,KAAKm8B,UACtDn8B,KAAKk5B,OAASjqB,KAAKkQ,IAAI+Z,EAAQv5B,EAAQwpC,WAAanpC,KAAKmpC,WAE3DywC,SAASta,EAAa6E,EAAU0U,EAAUE,GACxC,MAAM,IAACxjD,EAAG,SAAE4G,EAAUx8B,SAAUm8C,QAAQ,QAAC0V,KAAaxxD,KAChD85E,EAAW95E,KAAKm5E,eAAiB,GACjCK,EAAax5E,KAAKw5E,WAAa,CAAC,GAChCpkD,EAAa2jD,EAAavnB,EAChC,IAAIuoB,EAAcza,EAClB/pC,EAAIiH,UAAY,OAChBjH,EAAIkH,aAAe,SACnB,IAAIu9C,GAAO,EACPr/C,GAAOvF,EAYX,OAXAp1B,KAAKs5E,YAAYtzE,SAAQ,CAAC0iD,EAAY5/C,KACpC,MAAMmjC,EAAY4sC,EAAY1U,EAAW,EAAK5uC,EAAIwC,YAAY2wB,EAAW/sB,MAAM3D,OACrE,IAANlvB,GAAW0wE,EAAWA,EAAWxwE,OAAS,GAAKijC,EAAY,EAAIulB,EAAUr1B,KAC3E49C,GAAe3kD,EACfokD,EAAWA,EAAWxwE,QAAUF,EAAI,EAAI,EAAI,IAAM,EAClD6xB,GAAOvF,EACP4kD,KAEFF,EAAShxE,GAAK,CAAC8Q,KAAM,EAAG+gB,IAAAA,EAAKq/C,IAAAA,EAAKhiD,MAAOiU,EAAW/S,OAAQ6/C,GAC5DS,EAAWA,EAAWxwE,OAAS,IAAMijC,EAAYulB,KAE5CuoB,EAETF,SAASva,EAAa6E,EAAU0U,EAAUE,GACxC,MAAM,IAACxjD,EAAG,UAAE4T,EAAWxpC,SAAUm8C,QAAQ,QAAC0V,KAAaxxD,KACjD85E,EAAW95E,KAAKm5E,eAAiB,GACjCI,EAAcv5E,KAAKu5E,YAAc,GACjCU,EAAc9wC,EAAYm2B,EAChC,IAAI4a,EAAa1oB,EACb2oB,EAAkB,EAClBC,EAAmB,EACnBxgE,EAAO,EACPygE,EAAM,EAgBV,OAfAr6E,KAAKs5E,YAAYtzE,SAAQ,CAAC0iD,EAAY5/C,KACpC,MAAMmjC,EAAY4sC,EAAY1U,EAAW,EAAK5uC,EAAIwC,YAAY2wB,EAAW/sB,MAAM3D,MAC3ElvB,EAAI,GAAKsxE,EAAmBrB,EAAa,EAAIvnB,EAAUyoB,IACzDC,GAAcC,EAAkB3oB,EAChC+nB,EAAYhwE,KAAK,CAACyuB,MAAOmiD,EAAiBjhD,OAAQkhD,IAClDxgE,GAAQugE,EAAkB3oB,EAC1B6oB,IACAF,EAAkBC,EAAmB,GAEvCN,EAAShxE,GAAK,CAAC8Q,KAAAA,EAAM+gB,IAAKy/C,EAAkBC,IAAAA,EAAKriD,MAAOiU,EAAW/S,OAAQ6/C,GAC3EoB,EAAkBlrE,KAAKmQ,IAAI+6D,EAAiBluC,GAC5CmuC,GAAoBrB,EAAavnB,KAEnC0oB,GAAcC,EACdZ,EAAYhwE,KAAK,CAACyuB,MAAOmiD,EAAiBjhD,OAAQkhD,IAC3CF,EAETI,iBACE,IAAKt6E,KAAKL,QAAQwrD,QAChB,OAEF,MAAMmU,EAAct/D,KAAK25E,uBAClBR,eAAgBW,EAAUn6E,SAAS,MAAC4Z,EAAOuiC,QAAQ,QAAC0V,GAAQ,IAAE13C,IAAQ9Z,KACvEu6E,EAAYnuC,GAActyB,EAAK9Z,KAAK4Z,KAAM5Z,KAAKg4B,OACrD,GAAIh4B,KAAK+hD,eAAgB,CACvB,IAAIi4B,EAAM,EACNpgE,EAAOJ,EAAeD,EAAOvZ,KAAK4Z,KAAO43C,EAASxxD,KAAK6Z,MAAQ7Z,KAAKw5E,WAAWQ,IACnF,IAAK,MAAMQ,KAAUV,EACfE,IAAQQ,EAAOR,MACjBA,EAAMQ,EAAOR,IACbpgE,EAAOJ,EAAeD,EAAOvZ,KAAK4Z,KAAO43C,EAASxxD,KAAK6Z,MAAQ7Z,KAAKw5E,WAAWQ,KAEjFQ,EAAO7/C,KAAO36B,KAAK26B,IAAM2kC,EAAc9N,EACvCgpB,EAAO5gE,KAAO2gE,EAAUvuC,WAAWuuC,EAAU77D,EAAE9E,GAAO4gE,EAAOxiD,OAC7Dpe,GAAQ4gE,EAAOxiD,MAAQw5B,MAEpB,CACL,IAAI6oB,EAAM,EACN1/C,EAAMnhB,EAAeD,EAAOvZ,KAAK26B,IAAM2kC,EAAc9N,EAASxxD,KAAK46B,OAAS56B,KAAKu5E,YAAYc,GAAKnhD,QACtG,IAAK,MAAMshD,KAAUV,EACfU,EAAOH,MAAQA,IACjBA,EAAMG,EAAOH,IACb1/C,EAAMnhB,EAAeD,EAAOvZ,KAAK26B,IAAM2kC,EAAc9N,EAASxxD,KAAK46B,OAAS56B,KAAKu5E,YAAYc,GAAKnhD,SAEpGshD,EAAO7/C,IAAMA,EACb6/C,EAAO5gE,MAAQ5Z,KAAK4Z,KAAO43C,EAC3BgpB,EAAO5gE,KAAO2gE,EAAUvuC,WAAWuuC,EAAU77D,EAAE87D,EAAO5gE,MAAO4gE,EAAOxiD,OACpE2C,GAAO6/C,EAAOthD,OAASs4B,GAI7BzP,eACE,MAAiC,QAA1B/hD,KAAKL,QAAQ4Y,UAAgD,WAA1BvY,KAAKL,QAAQ4Y,SAEzDw4B,OACE,GAAI/wC,KAAKL,QAAQwrD,QAAS,CACxB,MAAM51B,EAAMv1B,KAAKu1B,IACjBsF,GAAStF,EAAKv1B,MACdA,KAAKy6E,QACL1/C,GAAWxF,IAGfklD,QACE,MAAO96E,QAAS6W,EAAI,YAAE+iE,EAAW,WAAEC,EAAU,IAAEjkD,GAAOv1B,MAChD,MAACuZ,EAAOuiC,OAAQ68B,GAAaniE,EAC7BkkE,EAAerzE,GAASwrB,MACxB0nD,EAAYnuC,GAAc51B,EAAKsD,IAAK9Z,KAAK4Z,KAAM5Z,KAAKg4B,OACpD0hD,EAAYx7C,GAAOy6C,EAAU1jD,OAC5BpC,MAAO8nD,EAAS,QAAEnpB,GAAWmnB,EAC9BxU,EAAWuV,EAAU78D,KACrB+9D,EAAezW,EAAW,EAChC,IAAI0W,EACJ76E,KAAK8jE,YACLvuC,EAAIiH,UAAY+9C,EAAU/9C,UAAU,QACpCjH,EAAIkH,aAAe,SACnBlH,EAAI0G,UAAY,GAChB1G,EAAIN,KAAOykD,EAAU7hD,OACrB,MAAM,SAACghD,EAAQ,UAAED,EAAS,WAAEG,GAAcL,GAAWC,EAAWxU,GAC1D2W,EAAgB,SAASp8D,EAAGC,EAAG+pC,GACnC,GAAIjqC,MAAMo6D,IAAaA,GAAY,GAAKp6D,MAAMm6D,IAAcA,EAAY,EACtE,OAEFrjD,EAAI6C,OACJ,MAAM6D,EAAYzhB,EAAekuC,EAAWzsB,UAAW,GAQvD,GAPA1G,EAAIgH,UAAY/hB,EAAekuC,EAAWnsB,UAAWm+C,GACrDnlD,EAAIo/C,QAAUn6D,EAAekuC,EAAWisB,QAAS,QACjDp/C,EAAIouC,eAAiBnpD,EAAekuC,EAAWib,eAAgB,GAC/DpuC,EAAIy+C,SAAWx5D,EAAekuC,EAAWsrB,SAAU,SACnDz+C,EAAI0G,UAAYA,EAChB1G,EAAIyG,YAAcxhB,EAAekuC,EAAW1sB,YAAa0+C,GACzDnlD,EAAImuC,YAAYlpD,EAAekuC,EAAWqyB,SAAU,KAChDpC,EAAUG,cAAe,CAC3B,MAAMkC,EAAc,CAClBvhD,OAAQo/C,EAAW5pE,KAAKgsE,MAAQ,EAChC1hD,WAAYmvB,EAAWnvB,WACvBC,SAAUkvB,EAAWlvB,SACrBa,YAAa4B,GAET+rB,EAAUuyB,EAAUxuC,MAAMrtB,EAAGm6D,EAAW,GACxC5wB,EAAUtpC,EAAIi8D,EACpBzhD,GAAU5D,EAAKylD,EAAahzB,EAASC,OAChC,CACL,MAAMizB,EAAUv8D,EAAI1P,KAAKmQ,KAAK+kD,EAAWyU,GAAa,EAAG,GACnDuC,EAAWZ,EAAUvuC,WAAWttB,EAAGm6D,GACnChH,EAAe7zC,GAAc0qB,EAAWmpB,cAC9Ct8C,EAAIsE,YACArtB,OAAO4nB,OAAOy9C,GAAcrK,MAAK31D,GAAW,IAANA,IACxCsrB,GAAmB5H,EAAK,CACtB7W,EAAGy8D,EACHx8D,EAAGu8D,EACH31D,EAAGszD,EACH/3E,EAAG83E,EACHn/C,OAAQo4C,IAGVt8C,EAAI4E,KAAKghD,EAAUD,EAASrC,EAAUD,GAExCrjD,EAAI6E,OACc,IAAd6B,GACF1G,EAAI+E,SAGR/E,EAAIgD,WAEA6D,EAAW,SAAS1d,EAAGC,EAAG+pC,GAC9BhtB,GAAWnG,EAAKmzB,EAAW/sB,KAAMjd,EAAGC,EAAKo6D,EAAa,EAAIW,EAAW,CACnEh9C,cAAegsB,EAAWrQ,OAC1B7b,UAAW+9C,EAAU/9C,UAAUksB,EAAWlsB,cAGxCulB,EAAe/hD,KAAK+hD,eACpBud,EAAct/D,KAAK25E,sBAEvBkB,EADE94B,EACO,CACPrjC,EAAGlF,EAAeD,EAAOvZ,KAAK4Z,KAAO43C,EAASxxD,KAAK6Z,MAAQ2/D,EAAW,IACtE76D,EAAG3e,KAAK26B,IAAM62B,EAAU8N,EACxB3qD,KAAM,GAGC,CACP+J,EAAG1e,KAAK4Z,KAAO43C,EACf7yC,EAAGnF,EAAeD,EAAOvZ,KAAK26B,IAAM2kC,EAAc9N,EAASxxD,KAAK46B,OAAS2+C,EAAY,GAAGrgD,QACxFvkB,KAAM,GAGV03B,GAAsBrsC,KAAKu1B,IAAK/e,EAAK4kE,eACrC,MAAMhmD,EAAa2jD,EAAavnB,EAChCxxD,KAAKs5E,YAAYtzE,SAAQ,CAAC0iD,EAAY5/C,KACpCysB,EAAIyG,YAAc0sB,EAAWiyB,WAAaA,EAC1CplD,EAAIgH,UAAYmsB,EAAWiyB,WAAaA,EACxC,MAAM7iD,EAAYvC,EAAIwC,YAAY2wB,EAAW/sB,MAAM3D,MAC7CwE,EAAY+9C,EAAU/9C,UAAUksB,EAAWlsB,YAAcksB,EAAWlsB,UAAYm8C,EAAUn8C,YAC1FxE,EAAQ6gD,EAAW+B,EAAe9iD,EACxC,IAAIpZ,EAAIm8D,EAAOn8D,EACXC,EAAIk8D,EAAOl8D,EACf47D,EAAUzuC,SAAS9rC,KAAKg4B,OACpB+pB,EACEj5C,EAAI,GAAK4V,EAAIsZ,EAAQw5B,EAAUxxD,KAAK6Z,QACtC8E,EAAIk8D,EAAOl8D,GAAKyW,EAChBylD,EAAOlmE,OACP+J,EAAIm8D,EAAOn8D,EAAIlF,EAAeD,EAAOvZ,KAAK4Z,KAAO43C,EAASxxD,KAAK6Z,MAAQ2/D,EAAWqB,EAAOlmE,QAElF7L,EAAI,GAAK6V,EAAIyW,EAAap1B,KAAK46B,SACxClc,EAAIm8D,EAAOn8D,EAAIA,EAAI66D,EAAYsB,EAAOlmE,MAAMqjB,MAAQw5B,EACpDqpB,EAAOlmE,OACPgK,EAAIk8D,EAAOl8D,EAAInF,EAAeD,EAAOvZ,KAAK26B,IAAM2kC,EAAc9N,EAASxxD,KAAK46B,OAAS2+C,EAAYsB,EAAOlmE,MAAMukB,SAEhH,MAAMmiD,EAAQd,EAAU77D,EAAEA,GAC1Bo8D,EAAcO,EAAO18D,EAAG+pC,GACxBhqC,EAAI/E,EAAO6iB,EAAW9d,EAAIm6D,EAAW+B,EAAc74B,EAAerjC,EAAIsZ,EAAQh4B,KAAK6Z,MAAOrD,EAAKsD,KAC/FsiB,EAASm+C,EAAU77D,EAAEA,GAAIC,EAAG+pC,GACxB3G,EACF84B,EAAOn8D,GAAKsZ,EAAQw5B,EAEpBqpB,EAAOl8D,GAAKyW,KAGhBuX,GAAqB3sC,KAAKu1B,IAAK/e,EAAK4kE,eAEtCtX,YACE,MAAMttD,EAAOxW,KAAKL,QACZy/D,EAAY5oD,EAAK8vC,MACjBg1B,EAAYp9C,GAAOkhC,EAAUnqC,MAC7BsmD,EAAet9C,GAAUmhC,EAAU5N,SACzC,IAAK4N,EAAUjU,QACb,OAEF,MAAMovB,EAAYnuC,GAAc51B,EAAKsD,IAAK9Z,KAAK4Z,KAAM5Z,KAAKg4B,OACpDzC,EAAMv1B,KAAKu1B,IACXhd,EAAW6mD,EAAU7mD,SACrBqiE,EAAeU,EAAUz+D,KAAO,EAChC2+D,EAA6BD,EAAa5gD,IAAMigD,EACtD,IAAIj8D,EACA/E,EAAO5Z,KAAK4Z,KACZuiB,EAAWn8B,KAAKg4B,MACpB,GAAIh4B,KAAK+hD,eACP5lB,EAAWltB,KAAKmQ,OAAOpf,KAAKw5E,YAC5B76D,EAAI3e,KAAK26B,IAAM6gD,EACf5hE,EAAOJ,EAAehD,EAAK+C,MAAOK,EAAM5Z,KAAK6Z,MAAQsiB,OAChD,CACL,MAAMgN,EAAYnpC,KAAKu5E,YAAY7nC,QAAO,CAACC,EAAK90B,IAAS5N,KAAKmQ,IAAIuyB,EAAK90B,EAAKqc,SAAS,GACrFva,EAAI68D,EAA6BhiE,EAAehD,EAAK+C,MAAOvZ,KAAK26B,IAAK36B,KAAK46B,OAASuO,EAAY3yB,EAAKslC,OAAO0V,QAAUxxD,KAAK25E,uBAE7H,MAAMj7D,EAAIlF,EAAejB,EAAUqB,EAAMA,EAAOuiB,GAChD5G,EAAIiH,UAAY+9C,EAAU/9C,UAAUljB,EAAmBf,IACvDgd,EAAIkH,aAAe,SACnBlH,EAAIyG,YAAcojC,EAAUvsC,MAC5B0C,EAAIgH,UAAY6iC,EAAUvsC,MAC1B0C,EAAIN,KAAOqmD,EAAUzjD,OACrB6D,GAAWnG,EAAK6pC,EAAUzjC,KAAMjd,EAAGC,EAAG28D,GAExC3B,sBACE,MAAMva,EAAYp/D,KAAKL,QAAQ2mD,MACzBg1B,EAAYp9C,GAAOkhC,EAAUnqC,MAC7BsmD,EAAet9C,GAAUmhC,EAAU5N,SACzC,OAAO4N,EAAUjU,QAAUmwB,EAAUlmD,WAAammD,EAAariD,OAAS,EAE1EuiD,iBAAiB/8D,EAAGC,GAClB,IAAI7V,EAAG4yE,EAAQC,EACf,GAAIz6D,GAAWxC,EAAG1e,KAAK4Z,KAAM5Z,KAAK6Z,QAC7BqH,GAAWvC,EAAG3e,KAAK26B,IAAK36B,KAAK46B,QAEhC,IADA+gD,EAAK37E,KAAKm5E,eACLrwE,EAAI,EAAGA,EAAI6yE,EAAG3yE,SAAUF,EAE3B,GADA4yE,EAASC,EAAG7yE,GACRoY,GAAWxC,EAAGg9D,EAAO9hE,KAAM8hE,EAAO9hE,KAAO8hE,EAAO1jD,QAC/C9W,GAAWvC,EAAG+8D,EAAO/gD,IAAK+gD,EAAO/gD,IAAM+gD,EAAOxiD,QACjD,OAAOl5B,KAAKs5E,YAAYxwE,GAI9B,OAAO,KAET8yE,YAAY1rE,GACV,MAAMsG,EAAOxW,KAAKL,QAClB,IAAKk8E,GAAW3rE,EAAEvJ,KAAM6P,GACtB,OAEF,MAAMslE,EAAc97E,KAAKy7E,iBAAiBvrE,EAAEwO,EAAGxO,EAAEyO,GACjD,GAAe,cAAXzO,EAAEvJ,MAAmC,aAAXuJ,EAAEvJ,KAAqB,CACnD,MAAMs0B,EAAWj7B,KAAKo5E,aAChB2C,EAAW/C,GAAW/9C,EAAU6gD,GAClC7gD,IAAa8gD,GACfjnE,EAAS0B,EAAKwlE,QAAS,CAAC9rE,EAAG+qB,EAAUj7B,MAAOA,MAE9CA,KAAKo5E,aAAe0C,EAChBA,IAAgBC,GAClBjnE,EAAS0B,EAAKwf,QAAS,CAAC9lB,EAAG4rE,EAAa97E,MAAOA,WAExC87E,GACThnE,EAAS0B,EAAKyf,QAAS,CAAC/lB,EAAG4rE,EAAa97E,MAAOA,OAIrD,SAAS67E,GAAWl1E,EAAM6P,GACxB,QAAc,cAAT7P,GAAiC,aAATA,IAAyB6P,EAAKwf,UAAWxf,EAAKwlE,aAGvExlE,EAAKyf,SAAqB,UAATtvB,GAA6B,YAATA,GAK3C,IAAIs1E,GAAgB,CAClB7uE,GAAI,SACJ8uE,SAAUjD,GACVx/D,MAAMmb,EAAOunD,EAAOx8E,GAClB,MAAM6oD,EAAS5zB,EAAM4zB,OAAS,IAAIywB,GAAO,CAAC1jD,IAAKX,EAAMW,IAAK51B,QAAAA,EAASi1B,MAAAA,IACnEo6B,GAAQjb,UAAUnf,EAAO4zB,EAAQ7oD,GACjCqvD,GAAQ0C,OAAO98B,EAAO4zB,IAExBna,KAAKzZ,GACHo6B,GAAQ6C,UAAUj9B,EAAOA,EAAM4zB,eACxB5zB,EAAM4zB,QAEfqU,aAAajoC,EAAOunD,EAAOx8E,GACzB,MAAM6oD,EAAS5zB,EAAM4zB,OACrBwG,GAAQjb,UAAUnf,EAAO4zB,EAAQ7oD,GACjC6oD,EAAO7oD,QAAUA,GAEnBs+D,YAAYrpC,GACV,MAAM4zB,EAAS5zB,EAAM4zB,OACrBA,EAAOixB,cACPjxB,EAAO8xB,kBAET8B,WAAWxnD,EAAOrjB,GACXA,EAAKu/D,QACRl8C,EAAM4zB,OAAOozB,YAAYrqE,EAAKigC,QAGlCnqC,SAAU,CACR8jD,SAAS,EACT5yC,SAAU,MACVgB,MAAO,SACPg2C,UAAU,EACVx0C,SAAS,EACT+X,OAAQ,IACRmD,QAAQ/lB,EAAGw4C,EAAYF,GACrB,MAAMh/C,EAAQk/C,EAAWntC,aACnB8gE,EAAK7zB,EAAO5zB,MACdynD,EAAGv1B,iBAAiBt9C,IACtB6yE,EAAGzoC,KAAKpqC,GACRk/C,EAAWrQ,QAAS,IAEpBgkC,EAAG5oC,KAAKjqC,GACRk/C,EAAWrQ,QAAS,IAGxBriB,QAAS,KACTgmD,QAAS,KACTlgC,OAAQ,CACNjpB,MAAQ0C,GAAQA,EAAIX,MAAMj1B,QAAQkzB,MAClCgmD,SAAU,GACVrnB,QAAS,GACT/I,eAAe7zB,GACb,MAAMF,EAAWE,EAAMvyB,KAAKqyB,UACrBonB,QAAQ,cAACg9B,EAAa,WAAEv/C,EAAU,UAAEiD,EAAS,MAAE3J,IAAU+B,EAAM4zB,OAAO7oD,QAC7E,OAAOi1B,EAAMwgB,yBAAyB35B,KAAKsoB,IACzC,MAAM5O,EAAQ4O,EAAK+S,WAAWjP,SAASixC,EAAgB,OAAIhzE,GACrDu0B,EAAc4D,GAAU9I,EAAMkF,aACpC,MAAO,CACLsB,KAAMjH,EAASqP,EAAKv6B,OAAOwzC,MAC3BzgB,UAAWpH,EAAMX,gBACjBmmD,UAAW9nD,EACXwlB,QAAStU,EAAK4P,QACdghC,QAASx/C,EAAMua,eACfqrC,SAAU5lD,EAAMwa,WAChBg0B,eAAgBxuC,EAAMya,iBACtBokC,SAAU7+C,EAAM0a,gBAChB5T,WAAY5B,EAAYrC,MAAQqC,EAAYnB,QAAU,EACtD8C,YAAa7G,EAAMV,YACnB8E,WAAYA,GAAcpE,EAAMoE,WAChCC,SAAUrE,EAAMqE,SAChBgD,UAAWA,GAAarH,EAAMqH,UAC9Bq1C,aAAc,EACdt2D,aAAcwoB,EAAKv6B,SAEpBxJ,QAGPsmD,MAAO,CACLzzB,MAAQ0C,GAAQA,EAAIX,MAAMj1B,QAAQkzB,MAClCs4B,SAAS,EACT5yC,SAAU,SACVojB,KAAM,KAGVpvB,YAAa,CACX8qB,YAAcxtB,IAAUA,EAAKytB,WAAW,MACxCwkB,OAAQ,CACNzkB,YAAcxtB,IAAU,CAAC,iBAAkB,SAAU,QAAQ23B,SAAS33B,MAK5E,MAAMyyE,WAAclmB,GAClBp/C,YAAYjV,GACVihD,QACAhjD,KAAK40B,MAAQ7yB,EAAO6yB,MACpB50B,KAAKL,QAAUoC,EAAOpC,QACtBK,KAAKu1B,IAAMxzB,EAAOwzB,IAClBv1B,KAAKu8E,cAAWz2E,EAChB9F,KAAK26B,SAAM70B,EACX9F,KAAK46B,YAAS90B,EACd9F,KAAK4Z,UAAO9T,EACZ9F,KAAK6Z,WAAQ/T,EACb9F,KAAKg4B,WAAQlyB,EACb9F,KAAKk5B,YAASpzB,EACd9F,KAAKuY,cAAWzS,EAChB9F,KAAK8yB,YAAShtB,EACd9F,KAAKuvD,cAAWzpD,EAElBgtC,OAAO3W,EAAUgN,GACf,MAAM3yB,EAAOxW,KAAKL,QAGlB,GAFAK,KAAK4Z,KAAO,EACZ5Z,KAAK26B,IAAM,GACNnkB,EAAK20C,QAER,YADAnrD,KAAKg4B,MAAQh4B,KAAKk5B,OAASl5B,KAAK6Z,MAAQ7Z,KAAK46B,OAAS,GAGxD56B,KAAKg4B,MAAQh4B,KAAK6Z,MAAQsiB,EAC1Bn8B,KAAKk5B,OAASl5B,KAAK46B,OAASuO,EAC5B,MAAMy5B,EAAYv0D,EAAQmI,EAAKmlB,MAAQnlB,EAAKmlB,KAAK3yB,OAAS,EAC1DhJ,KAAKu8E,SAAWt+C,GAAUznB,EAAKg7C,SAC/B,MAAMgrB,EAAW5Z,EAAY1kC,GAAO1nB,EAAKye,MAAMG,WAAap1B,KAAKu8E,SAASrjD,OACtEl5B,KAAK+hD,eACP/hD,KAAKk5B,OAASsjD,EAEdx8E,KAAKg4B,MAAQwkD,EAGjBz6B,eACE,MAAMtlC,EAAMzc,KAAKL,QAAQ4Y,SACzB,MAAe,QAARkE,GAAyB,WAARA,EAE1BggE,UAAUz3B,GACR,MAAM,IAACrqB,EAAG,KAAE/gB,EAAI,OAAEghB,EAAM,MAAE/gB,EAAK,QAAEla,GAAWK,KACtCuZ,EAAQ5Z,EAAQ4Z,MACtB,IACI4iB,EAAU6+B,EAAQC,EADlBzhC,EAAW,EAkBf,OAhBIx5B,KAAK+hD,gBACPiZ,EAASxhD,EAAeD,EAAOK,EAAMC,GACrCohD,EAAStgC,EAAMqqB,EACf7oB,EAAWtiB,EAAQD,IAEM,SAArBja,EAAQ4Y,UACVyiD,EAASphD,EAAOorC,EAChBiW,EAASzhD,EAAeD,EAAOqhB,EAAQD,GACvCnB,GAAiB,GAANvc,IAEX+9C,EAASnhD,EAAQmrC,EACjBiW,EAASzhD,EAAeD,EAAOohB,EAAKC,GACpCpB,EAAgB,GAALvc,GAEbkf,EAAWvB,EAASD,GAEf,CAACqgC,OAAAA,EAAQC,OAAAA,EAAQ9+B,SAAAA,EAAU3C,SAAAA,GAEpCuX,OACE,MAAMxb,EAAMv1B,KAAKu1B,IACX/e,EAAOxW,KAAKL,QAClB,IAAK6W,EAAK20C,QACR,OAEF,MAAMuxB,EAAWx+C,GAAO1nB,EAAKye,MACvBG,EAAasnD,EAAStnD,WACtB4vB,EAAS5vB,EAAa,EAAIp1B,KAAKu8E,SAAS5hD,KACxC,OAACqgC,EAAM,OAAEC,EAAM,SAAE9+B,EAAQ,SAAE3C,GAAYx5B,KAAKy8E,UAAUz3B,GAC5DtpB,GAAWnG,EAAK/e,EAAKmlB,KAAM,EAAG,EAAG+gD,EAAU,CACzC7pD,MAAOrc,EAAKqc,MACZsJ,SAAAA,EACA3C,SAAAA,EACAgD,UAAWljB,EAAmB9C,EAAK+C,OACnCkjB,aAAc,SACdH,YAAa,CAAC0+B,EAAQC,MAI5B,SAAS0hB,GAAY/nD,EAAOwqC,GAC1B,MAAM9Y,EAAQ,IAAIg2B,GAAM,CACtB/mD,IAAKX,EAAMW,IACX51B,QAASy/D,EACTxqC,MAAAA,IAEFo6B,GAAQjb,UAAUnf,EAAO0xB,EAAO8Y,GAChCpQ,GAAQ0C,OAAO98B,EAAO0xB,GACtB1xB,EAAMgoD,WAAat2B,EAErB,IAAIu2B,GAAe,CACjBzvE,GAAI,QACJ8uE,SAAUI,GACV7iE,MAAMmb,EAAOunD,EAAOx8E,GAClBg9E,GAAY/nD,EAAOj1B,IAErB0uC,KAAKzZ,GACH,MAAMgoD,EAAahoD,EAAMgoD,WACzB5tB,GAAQ6C,UAAUj9B,EAAOgoD,UAClBhoD,EAAMgoD,YAEf/f,aAAajoC,EAAOunD,EAAOx8E,GACzB,MAAM2mD,EAAQ1xB,EAAMgoD,WACpB5tB,GAAQjb,UAAUnf,EAAO0xB,EAAO3mD,GAChC2mD,EAAM3mD,QAAUA,GAElB0H,SAAU,CACRkS,MAAO,SACP4xC,SAAS,EACTl2B,KAAM,CACJnC,OAAQ,QAEVy8B,UAAU,EACViC,QAAS,GACTj5C,SAAU,MACVojB,KAAM,GACN7I,OAAQ,KAEV0jC,cAAe,CACb3jC,MAAO,SAETtmB,YAAa,CACX8qB,aAAa,EACbE,YAAY,IAIJ,IAAIulD,QA2ChB,MAAMC,GAAc,CAClBC,QAAQ78C,GACN,IAAKA,EAAMn3B,OACT,OAAO,EAET,IAAIF,EAAGkS,EACH0D,EAAI,EACJC,EAAI,EACJqlB,EAAQ,EACZ,IAAKl7B,EAAI,EAAGkS,EAAMmlB,EAAMn3B,OAAQF,EAAIkS,IAAOlS,EAAG,CAC5C,MAAM4M,EAAKyqB,EAAMr3B,GAAG8+B,QACpB,GAAIlyB,GAAMA,EAAG4gD,WAAY,CACvB,MAAM75C,EAAM/G,EAAG2gD,kBACf33C,GAAKjC,EAAIiC,EACTC,GAAKlC,EAAIkC,IACPqlB,GAGN,MAAO,CACLtlB,EAAGA,EAAIslB,EACPrlB,EAAGA,EAAIqlB,IAGXsqB,QAAQnuB,EAAO88C,GACb,IAAK98C,EAAMn3B,OACT,OAAO,EAET,IAGIF,EAAGkS,EAAKkiE,EAHRx+D,EAAIu+D,EAAcv+D,EAClBC,EAAIs+D,EAAct+D,EAClBkvC,EAAczzC,OAAOiD,kBAEzB,IAAKvU,EAAI,EAAGkS,EAAMmlB,EAAMn3B,OAAQF,EAAIkS,IAAOlS,EAAG,CAC5C,MAAM4M,EAAKyqB,EAAMr3B,GAAG8+B,QACpB,GAAIlyB,GAAMA,EAAG4gD,WAAY,CACvB,MAAM5S,EAAShuC,EAAGo4C,iBACZrqC,EAAIrD,GAAsB68D,EAAev5B,GAC3CjgC,EAAIoqC,IACNA,EAAcpqC,EACdy5D,EAAiBxnE,IAIvB,GAAIwnE,EAAgB,CAClB,MAAMC,EAAKD,EAAe7mB,kBAC1B33C,EAAIy+D,EAAGz+D,EACPC,EAAIw+D,EAAGx+D,EAET,MAAO,CACLD,EAAAA,EACAC,EAAAA,KAIN,SAASy+D,GAAav9C,EAAMw9C,GAQ1B,OAPIA,IACEhvE,EAAQgvE,GACVjyE,MAAM3D,UAAU8B,KAAK8B,MAAMw0B,EAAMw9C,GAEjCx9C,EAAKt2B,KAAK8zE,IAGPx9C,EAET,SAASy9C,GAAcxmE,GACrB,OAAoB,kBAARA,GAAoBA,aAAe0B,SAAW1B,EAAI/R,QAAQ,OAAS,EACtE+R,EAAIpC,MAAM,MAEZoC,EAET,SAASymE,GAAkB3oD,EAAO9X,GAChC,MAAM,QAAC8qB,EAAO,aAAErsB,EAAY,MAAE/R,GAASsT,EACjCg6B,EAAaliB,EAAM2lB,eAAeh/B,GAAcu7B,YAChD,MAACkG,EAAK,MAAE54C,GAAS0yC,EAAWiG,iBAAiBvzC,GACnD,MAAO,CACLorB,MAAAA,EACAooB,MAAAA,EACAzoC,OAAQuiC,EAAWqF,UAAU3yC,GAC7BouC,IAAKhjB,EAAMvyB,KAAKqyB,SAASnZ,GAAclZ,KAAKmH,GAC5Cs/C,eAAgB1kD,EAChBqzC,QAASX,EAAW2C,aACpB9B,UAAWnuC,EACX+R,aAAAA,EACAqsB,QAAAA,GAGJ,SAAS41C,GAAen3B,EAAS1mD,GAC/B,MAAM41B,EAAM8wB,EAAQzxB,MAAMW,KACpB,KAACkoD,EAAI,OAAEC,EAAM,MAAEp3B,GAASD,GACxB,SAACwyB,EAAQ,UAAED,GAAaj5E,EACxBg+E,EAAWz/C,GAAOv+B,EAAQg+E,UAC1BrC,EAAYp9C,GAAOv+B,EAAQ27E,WAC3BsC,EAAa1/C,GAAOv+B,EAAQi+E,YAC5BC,EAAiBv3B,EAAMt9C,OACvB80E,EAAkBJ,EAAO10E,OACzB+0E,EAAoBN,EAAKz0E,OACzBwoD,EAAUvzB,GAAUt+B,EAAQ6xD,SAClC,IAAIt4B,EAASs4B,EAAQt4B,OACjBlB,EAAQ,EACRgmD,EAAqBP,EAAK/rC,QAAO,CAAC1N,EAAOi6C,IAAaj6C,EAAQi6C,EAASC,OAAOl1E,OAASi1E,EAASriD,MAAM5yB,OAASi1E,EAASE,MAAMn1E,QAAQ,GAO1I,GANAg1E,GAAsB33B,EAAQ+3B,WAAWp1E,OAASq9C,EAAQg4B,UAAUr1E,OAChE60E,IACF3kD,GAAU2kD,EAAiBvC,EAAUlmD,YACnCyoD,EAAiB,GAAKl+E,EAAQ2+E,aAC/B3+E,EAAQ4+E,mBAEPP,EAAoB,CACtB,MAAMQ,EAAiB7+E,EAAQ8+E,cAAgBxvE,KAAKmQ,IAAIw5D,EAAW+E,EAASvoD,YAAcuoD,EAASvoD,WACnG8D,GAAU6kD,EAAoBS,GAC5BR,EAAqBD,GAAqBJ,EAASvoD,YACnD4oD,EAAqB,GAAKr+E,EAAQ++E,YAElCZ,IACF5kD,GAAUv5B,EAAQg/E,gBACjBb,EAAkBF,EAAWxoD,YAC5B0oD,EAAkB,GAAKn+E,EAAQi/E,eAEnC,IAAIC,EAAe,EACnB,MAAMC,EAAe,SAASnqE,GAC5BqjB,EAAQ/oB,KAAKmQ,IAAI4Y,EAAOzC,EAAIwC,YAAYpjB,GAAMqjB,MAAQ6mD,IAkBxD,OAhBAtpD,EAAI6C,OACJ7C,EAAIN,KAAOqmD,EAAUzjD,OACrBhd,EAAKwrC,EAAQC,MAAOw4B,GACpBvpD,EAAIN,KAAO0oD,EAAS9lD,OACpBhd,EAAKwrC,EAAQ+3B,WAAWn9E,OAAOolD,EAAQg4B,WAAYS,GACnDD,EAAel/E,EAAQ8+E,cAAiB5F,EAAW,EAAIl5E,EAAQwwD,WAAc,EAC7Et1C,EAAK4iE,GAAOQ,IACVpjE,EAAKojE,EAASC,OAAQY,GACtBjkE,EAAKojE,EAASriD,MAAOkjD,GACrBjkE,EAAKojE,EAASE,MAAOW,MAEvBD,EAAe,EACftpD,EAAIN,KAAO2oD,EAAW/lD,OACtBhd,EAAKwrC,EAAQq3B,OAAQoB,GACrBvpD,EAAIgD,UACJP,GAASw5B,EAAQx5B,MACV,CAACA,MAAAA,EAAOkB,OAAAA,GAEjB,SAAS6lD,GAAgBnqD,EAAO/X,GAC9B,MAAM,EAAC8B,EAAC,OAAEua,GAAUrc,EACpB,OAAI8B,EAAIua,EAAS,EACR,MACEva,EAAKiW,EAAMsE,OAASA,EAAS,EAC/B,SAEF,SAET,SAAS8lD,GAAoBC,EAAQrqD,EAAOj1B,EAASkd,GACnD,MAAM,EAAC6B,EAAC,MAAEsZ,GAASnb,EACbqiE,EAAQv/E,EAAQw/E,UAAYx/E,EAAQy/E,aAC1C,MAAe,SAAXH,GAAqBvgE,EAAIsZ,EAAQknD,EAAQtqD,EAAMoD,QAGpC,UAAXinD,GAAsBvgE,EAAIsZ,EAAQknD,EAAQ,QAA9C,GAIF,SAASG,GAAgBzqD,EAAOj1B,EAASkd,EAAMyiE,GAC7C,MAAM,EAAC5gE,EAAC,MAAEsZ,GAASnb,GACZmb,MAAOunD,EAAYpiC,WAAW,KAACvjC,EAAI,MAAEC,IAAU+a,EACtD,IAAIqqD,EAAS,SAWb,MAVe,WAAXK,EACFL,EAASvgE,IAAM9E,EAAOC,GAAS,EAAI,OAAS,QACnC6E,GAAKsZ,EAAQ,EACtBinD,EAAS,OACAvgE,GAAK6gE,EAAavnD,EAAQ,IACnCinD,EAAS,SAEPD,GAAoBC,EAAQrqD,EAAOj1B,EAASkd,KAC9CoiE,EAAS,UAEJA,EAET,SAASO,GAAmB5qD,EAAOj1B,EAASkd,GAC1C,MAAMyiE,EAASziE,EAAKyiE,QAAU3/E,EAAQ2/E,QAAUP,GAAgBnqD,EAAO/X,GACvE,MAAO,CACLoiE,OAAQpiE,EAAKoiE,QAAUt/E,EAAQs/E,QAAUI,GAAgBzqD,EAAOj1B,EAASkd,EAAMyiE,GAC/EA,OAAAA,GAGJ,SAASG,GAAO5iE,EAAMoiE,GACpB,IAAI,EAACvgE,EAAC,MAAEsZ,GAASnb,EAMjB,MALe,UAAXoiE,EACFvgE,GAAKsZ,EACe,WAAXinD,IACTvgE,GAAMsZ,EAAQ,GAETtZ,EAET,SAASghE,GAAO7iE,EAAMyiE,EAAQK,GAC5B,IAAI,EAAChhE,EAAC,OAAEua,GAAUrc,EAQlB,MAPe,QAAXyiE,EACF3gE,GAAKghE,EAELhhE,GADoB,WAAX2gE,EACJpmD,EAASymD,EAERzmD,EAAS,EAEVva,EAET,SAASihE,GAAmBjgF,EAASkd,EAAMgjE,EAAWjrD,GACpD,MAAM,UAACuqD,EAAS,aAAEC,EAAY,aAAE9lD,GAAgB35B,GAC1C,OAACs/E,EAAM,OAAEK,GAAUO,EACnBF,EAAiBR,EAAYC,GAC7B,QAAChiD,EAAO,SAAEG,EAAQ,WAAEF,EAAU,YAAEC,GAAeU,GAAc1E,GACnE,IAAI5a,EAAI+gE,GAAO5iE,EAAMoiE,GACrB,MAAMtgE,EAAI+gE,GAAO7iE,EAAMyiE,EAAQK,GAY/B,MAXe,WAAXL,EACa,SAAXL,EACFvgE,GAAKihE,EACe,UAAXV,IACTvgE,GAAKihE,GAEa,SAAXV,EACTvgE,GAAKzP,KAAKmQ,IAAIge,EAASC,GAAc8hD,EACjB,UAAXF,IACTvgE,GAAKzP,KAAKmQ,IAAIme,EAAUD,GAAe6hD,GAElC,CACLzgE,EAAGsC,GAAYtC,EAAG,EAAGkW,EAAMoD,MAAQnb,EAAKmb,OACxCrZ,EAAGqC,GAAYrC,EAAG,EAAGiW,EAAMsE,OAASrc,EAAKqc,SAG7C,SAAS4mD,GAAYz5B,EAAS9sC,EAAO5Z,GACnC,MAAM6xD,EAAUvzB,GAAUt+B,EAAQ6xD,SAClC,MAAiB,WAAVj4C,EACH8sC,EAAQ3nC,EAAI2nC,EAAQruB,MAAQ,EAClB,UAAVze,EACE8sC,EAAQ3nC,EAAI2nC,EAAQruB,MAAQw5B,EAAQ33C,MACpCwsC,EAAQ3nC,EAAI8yC,EAAQ53C,KAE5B,SAASmmE,GAAwBjrE,GAC/B,OAAOsoE,GAAa,GAAIE,GAAcxoE,IAExC,SAASkrE,GAAqB7/E,EAAQkmD,EAAS45B,GAC7C,OAAOphD,GAAc1+B,EAAQ,CAC3BkmD,QAAAA,EACA45B,aAAAA,EACAt5E,KAAM,YAGV,SAASu5E,GAAkB5vC,EAAWvwC,GACpC,MAAM42B,EAAW52B,GAAWA,EAAQ03C,SAAW13C,EAAQ03C,QAAQ4O,SAAWtmD,EAAQ03C,QAAQ4O,QAAQ/V,UAClG,OAAO3Z,EAAW2Z,EAAU3Z,SAASA,GAAY2Z,EAEnD,MAAM6vC,WAAgB/pB,GACpBp/C,YAAYjV,GACVihD,QACAhjD,KAAKogF,QAAU,EACfpgF,KAAKgxC,QAAU,GACfhxC,KAAKqgF,oBAAiBv6E,EACtB9F,KAAKsgF,WAAQx6E,EACb9F,KAAKugF,uBAAoBz6E,EACzB9F,KAAKwgF,cAAgB,GACrBxgF,KAAKw0C,iBAAc1uC,EACnB9F,KAAKm5C,cAAWrzC,EAChB9F,KAAK40B,MAAQ7yB,EAAO6yB,OAAS7yB,EAAO+sC,OACpC9uC,KAAK8uC,OAAS9uC,KAAK40B,MACnB50B,KAAKL,QAAUoC,EAAOpC,QACtBK,KAAKygF,gBAAa36E,EAClB9F,KAAKsmD,WAAQxgD,EACb9F,KAAKo+E,gBAAat4E,EAClB9F,KAAKy9E,UAAO33E,EACZ9F,KAAKq+E,eAAYv4E,EACjB9F,KAAK09E,YAAS53E,EACd9F,KAAKi/E,YAASn5E,EACd9F,KAAKs/E,YAASx5E,EACd9F,KAAK0e,OAAI5Y,EACT9F,KAAK2e,OAAI7Y,EACT9F,KAAKk5B,YAASpzB,EACd9F,KAAKg4B,WAAQlyB,EACb9F,KAAK0gF,YAAS56E,EACd9F,KAAK2gF,YAAS76E,EACd9F,KAAK4gF,iBAAc96E,EACnB9F,KAAK6gF,sBAAmB/6E,EACxB9F,KAAK8gF,qBAAkBh7E,EAEzBuzC,WAAW15C,GACTK,KAAKL,QAAUA,EACfK,KAAKugF,uBAAoBz6E,EACzB9F,KAAKm5C,cAAWrzC,EAElB+3C,qBACE,MAAM5F,EAASj4C,KAAKugF,kBACpB,GAAItoC,EACF,OAAOA,EAET,MAAMrjB,EAAQ50B,KAAK40B,MACbj1B,EAAUK,KAAKL,QAAQyiC,WAAWpiC,KAAK+4B,cACvCviB,EAAO7W,EAAQi4D,SAAWhjC,EAAMj1B,QAAQ40B,WAAa50B,EAAQ+zC,WAC7DA,EAAa,IAAIG,GAAW7zC,KAAK40B,MAAOpe,GAI9C,OAHIA,EAAKoqB,aACP5gC,KAAKugF,kBAAoB/zE,OAAOoxC,OAAOlK,IAElCA,EAET3a,aACE,OAAO/4B,KAAKm5C,WACZn5C,KAAKm5C,SAAW6mC,GAAqBhgF,KAAK40B,MAAMmE,aAAc/4B,KAAMA,KAAKwgF,gBAE3EO,SAAShhF,EAASJ,GAChB,MAAM,UAAC2wC,GAAa3wC,EACdqhF,EAAc1wC,EAAU0wC,YAAY31E,MAAMrL,KAAM,CAACD,IACjDumD,EAAQhW,EAAUgW,MAAMj7C,MAAMrL,KAAM,CAACD,IACrCkhF,EAAa3wC,EAAU2wC,WAAW51E,MAAMrL,KAAM,CAACD,IACrD,IAAI67B,EAAQ,GAIZ,OAHAA,EAAQwhD,GAAaxhD,EAAO0hD,GAAc0D,IAC1CplD,EAAQwhD,GAAaxhD,EAAO0hD,GAAch3B,IAC1C1qB,EAAQwhD,GAAaxhD,EAAO0hD,GAAc2D,IACnCrlD,EAETslD,cAAcjB,EAActgF,GAC1B,OAAOogF,GAAwBpgF,EAAQ2wC,UAAU8tC,WAAW/yE,MAAMrL,KAAM,CAACigF,KAE3EkB,QAAQlB,EAActgF,GACpB,MAAM,UAAC2wC,GAAa3wC,EACdyhF,EAAY,GAalB,OAZAvmE,EAAKolE,GAAelgF,IAClB,MAAMk+E,EAAW,CACfC,OAAQ,GACRtiD,MAAO,GACPuiD,MAAO,IAEHkD,EAASnB,GAAkB5vC,EAAWvwC,GAC5Cq9E,GAAaa,EAASC,OAAQZ,GAAc+D,EAAOC,YAAYjhF,KAAKL,KAAMD,KAC1Eq9E,GAAaa,EAASriD,MAAOylD,EAAOrkC,MAAM38C,KAAKL,KAAMD,IACrDq9E,GAAaa,EAASE,MAAOb,GAAc+D,EAAOE,WAAWlhF,KAAKL,KAAMD,KACxEqhF,EAAU73E,KAAK00E,MAEVmD,EAETI,aAAavB,EAActgF,GACzB,OAAOogF,GAAwBpgF,EAAQ2wC,UAAU+tC,UAAUhzE,MAAMrL,KAAM,CAACigF,KAE1EwB,UAAUxB,EAActgF,GACtB,MAAM,UAAC2wC,GAAa3wC,EACd+hF,EAAepxC,EAAUoxC,aAAar2E,MAAMrL,KAAM,CAACigF,IACnDvC,EAASptC,EAAUotC,OAAOryE,MAAMrL,KAAM,CAACigF,IACvC0B,EAAcrxC,EAAUqxC,YAAYt2E,MAAMrL,KAAM,CAACigF,IACvD,IAAIrkD,EAAQ,GAIZ,OAHAA,EAAQwhD,GAAaxhD,EAAO0hD,GAAcoE,IAC1C9lD,EAAQwhD,GAAaxhD,EAAO0hD,GAAcI,IAC1C9hD,EAAQwhD,GAAaxhD,EAAO0hD,GAAcqE,IACnC/lD,EAETgmD,aAAajiF,GACX,MAAMkzC,EAAS7yC,KAAKgxC,QACd3uC,EAAOrC,KAAK40B,MAAMvyB,KAClBu+E,EAAc,GACdC,EAAmB,GACnBC,EAAkB,GACxB,IACIh4E,EAAGkS,EADHilE,EAAe,GAEnB,IAAKn3E,EAAI,EAAGkS,EAAM63B,EAAO7pC,OAAQF,EAAIkS,IAAOlS,EAC1Cm3E,EAAa12E,KAAKg0E,GAAkBv9E,KAAK40B,MAAOie,EAAO/pC,KAkBzD,OAhBInJ,EAAQwY,SACV8nE,EAAeA,EAAa9nE,QAAO,CAACyvB,EAASp+B,EAAOyV,IAAUtf,EAAQwY,OAAOyvB,EAASp+B,EAAOyV,EAAO5c,MAElG1C,EAAQkiF,WACV5B,EAAeA,EAAa1hE,MAAK,CAAC7G,EAAGC,IAAMhY,EAAQkiF,SAASnqE,EAAGC,EAAGtV,MAEpEwY,EAAKolE,GAAelgF,IAClB,MAAMshF,EAASnB,GAAkBvgF,EAAQ2wC,UAAWvwC,GACpD6gF,EAAYr3E,KAAK83E,EAAOS,WAAWzhF,KAAKL,KAAMD,IAC9C8gF,EAAiBt3E,KAAK83E,EAAOU,gBAAgB1hF,KAAKL,KAAMD,IACxD+gF,EAAgBv3E,KAAK83E,EAAOW,eAAe3hF,KAAKL,KAAMD,OAExDC,KAAK4gF,YAAcA,EACnB5gF,KAAK6gF,iBAAmBA,EACxB7gF,KAAK8gF,gBAAkBA,EACvB9gF,KAAKygF,WAAaR,EACXA,EAETntC,OAAOsX,EAAS0mB,GACd,MAAMnxE,EAAUK,KAAKL,QAAQyiC,WAAWpiC,KAAK+4B,cACvC8Z,EAAS7yC,KAAKgxC,QACpB,IAAIuC,EACA0sC,EAAe,GACnB,GAAKptC,EAAO7pC,OAML,CACL,MAAMuP,EAAWwkE,GAAYp9E,EAAQ4Y,UAAUlY,KAAKL,KAAM6yC,EAAQ7yC,KAAKqgF,gBACvEJ,EAAejgF,KAAK4hF,aAAajiF,GACjCK,KAAKsmD,MAAQtmD,KAAK+gF,SAASd,EAActgF,GACzCK,KAAKo+E,WAAap+E,KAAKkhF,cAAcjB,EAActgF,GACnDK,KAAKy9E,KAAOz9E,KAAKmhF,QAAQlB,EAActgF,GACvCK,KAAKq+E,UAAYr+E,KAAKwhF,aAAavB,EAActgF,GACjDK,KAAK09E,OAAS19E,KAAKyhF,UAAUxB,EAActgF,GAC3C,MAAMkd,EAAO7c,KAAKsgF,MAAQ9C,GAAex9E,KAAML,GACzCsiF,EAAkBz1E,OAAOQ,OAAO,GAAIuL,EAAUsE,GAC9CgjE,EAAYL,GAAmBx/E,KAAK40B,MAAOj1B,EAASsiF,GACpDC,EAAkBtC,GAAmBjgF,EAASsiF,EAAiBpC,EAAW7/E,KAAK40B,OACrF50B,KAAKi/E,OAASY,EAAUZ,OACxBj/E,KAAKs/E,OAASO,EAAUP,OACxB/rC,EAAa,CACX6sC,QAAS,EACT1hE,EAAGwjE,EAAgBxjE,EACnBC,EAAGujE,EAAgBvjE,EACnBqZ,MAAOnb,EAAKmb,MACZkB,OAAQrc,EAAKqc,OACbwnD,OAAQnoE,EAASmG,EACjBiiE,OAAQpoE,EAASoG,QA1BE,IAAjB3e,KAAKogF,UACP7sC,EAAa,CACX6sC,QAAS,IA2BfpgF,KAAKwgF,cAAgBP,EACrBjgF,KAAKm5C,cAAWrzC,EACZytC,GACFvzC,KAAK69C,qBAAqB/K,OAAO9yC,KAAMuzC,GAErC6W,GAAWzqD,EAAQwiF,UACrBxiF,EAAQwiF,SAAS9hF,KAAKL,KAAM,CAAC40B,MAAO50B,KAAK40B,MAAOyxB,QAASrmD,KAAM8wE,OAAAA,IAGnEsR,UAAUC,EAAc9sD,EAAK1Y,EAAMld,GACjC,MAAM2iF,EAAgBtiF,KAAKuiF,iBAAiBF,EAAcxlE,EAAMld,GAChE41B,EAAI0E,OAAOqoD,EAAcvgB,GAAIugB,EAActgB,IAC3CzsC,EAAI0E,OAAOqoD,EAAcrgB,GAAIqgB,EAAcpgB,IAC3C3sC,EAAI0E,OAAOqoD,EAAcE,GAAIF,EAAcG,IAE7CF,iBAAiBF,EAAcxlE,EAAMld,GACnC,MAAM,OAACs/E,EAAM,OAAEK,GAAUt/E,MACnB,UAACm/E,EAAS,aAAE7lD,GAAgB35B,GAC5B,QAACy9B,EAAO,SAAEG,EAAQ,WAAEF,EAAU,YAAEC,GAAeU,GAAc1E,IAC5D5a,EAAGgkE,EAAK/jE,EAAGgkE,GAAON,GACnB,MAACrqD,EAAK,OAAEkB,GAAUrc,EACxB,IAAIklD,EAAIE,EAAIugB,EAAIxgB,EAAIE,EAAIugB,EAoCxB,MAnCe,WAAXnD,GACFpd,EAAKygB,EAAOzpD,EAAS,EACN,SAAX+lD,GACFld,EAAK2gB,EACLzgB,EAAKF,EAAKod,EACVnd,EAAKE,EAAKid,EACVsD,EAAKvgB,EAAKid,IAEVpd,EAAK2gB,EAAM1qD,EACXiqC,EAAKF,EAAKod,EACVnd,EAAKE,EAAKid,EACVsD,EAAKvgB,EAAKid,GAEZqD,EAAKzgB,IAGHE,EADa,SAAXgd,EACGyD,EAAMzzE,KAAKmQ,IAAIge,EAASC,GAAc,EACvB,UAAX4hD,EACJyD,EAAM1qD,EAAQ/oB,KAAKmQ,IAAIme,EAAUD,GAAe6hD,EAEhDn/E,KAAK0gF,OAEG,QAAXpB,GACFtd,EAAK2gB,EACLzgB,EAAKF,EAAKmd,EACVpd,EAAKE,EAAKkd,EACVqD,EAAKvgB,EAAKkd,IAEVnd,EAAK2gB,EAAMzpD,EACXgpC,EAAKF,EAAKmd,EACVpd,EAAKE,EAAKkd,EACVqD,EAAKvgB,EAAKkd,GAEZsD,EAAKzgB,GAEA,CAACD,GAAAA,EAAIE,GAAAA,EAAIugB,GAAAA,EAAIxgB,GAAAA,EAAIE,GAAAA,EAAIugB,GAAAA,GAE9B3e,UAAUv9B,EAAIhR,EAAK51B,GACjB,MAAM2mD,EAAQtmD,KAAKsmD,MACbt9C,EAASs9C,EAAMt9C,OACrB,IAAIsyE,EAAWgD,EAAcx1E,EAC7B,GAAIE,EAAQ,CACV,MAAMuxE,EAAYnuC,GAAczsC,EAAQma,IAAK9Z,KAAK0e,EAAG1e,KAAKg4B,OAQ1D,IAPAuO,EAAG7nB,EAAIohE,GAAY9/E,KAAML,EAAQm7D,WAAYn7D,GAC7C41B,EAAIiH,UAAY+9C,EAAU/9C,UAAU78B,EAAQm7D,YAC5CvlC,EAAIkH,aAAe,SACnB6+C,EAAYp9C,GAAOv+B,EAAQ27E,WAC3BgD,EAAe3+E,EAAQ2+E,aACvB/oD,EAAIgH,UAAY58B,EAAQijF,WACxBrtD,EAAIN,KAAOqmD,EAAUzjD,OAChB/uB,EAAI,EAAGA,EAAIE,IAAUF,EACxBysB,EAAI6G,SAASkqB,EAAMx9C,GAAIyxE,EAAU77D,EAAE6nB,EAAG7nB,GAAI6nB,EAAG5nB,EAAI28D,EAAUlmD,WAAa,GACxEmR,EAAG5nB,GAAK28D,EAAUlmD,WAAakpD,EAC3Bx1E,EAAI,IAAME,IACZu9B,EAAG5nB,GAAKhf,EAAQ4+E,kBAAoBD,IAK5CuE,cAActtD,EAAKgR,EAAIz9B,EAAGyxE,EAAW56E,GACnC,MAAMihF,EAAc5gF,KAAK4gF,YAAY93E,GAC/Bi5E,EAAkB/hF,KAAK6gF,iBAAiB/3E,IACxC,UAAC8vE,EAAS,SAAEC,EAAQ,WAAE1oB,GAAcxwD,EACpCg+E,EAAWz/C,GAAOv+B,EAAQg+E,UAC1BmF,EAAShD,GAAY9/E,KAAM,OAAQL,GACnCojF,EAAYxI,EAAU77D,EAAEokE,GACxBE,EAAUpK,EAAY+E,EAASvoD,YAAcuoD,EAASvoD,WAAawjD,GAAa,EAAI,EACpFqK,EAAS18C,EAAG5nB,EAAIqkE,EACtB,GAAIrjF,EAAQm5E,cAAe,CACzB,MAAMkC,EAAc,CAClBvhD,OAAQxqB,KAAKkQ,IAAI05D,EAAUD,GAAa,EACxCr/C,WAAYwoD,EAAgBxoD,WAC5BC,SAAUuoD,EAAgBvoD,SAC1Ba,YAAa,GAET2tB,EAAUuyB,EAAUvuC,WAAW+2C,EAAWlK,GAAYA,EAAW,EACjE5wB,EAAUg7B,EAASrK,EAAY,EACrCrjD,EAAIyG,YAAcr8B,EAAQujF,mBAC1B3tD,EAAIgH,UAAY58B,EAAQujF,mBACxB/pD,GAAU5D,EAAKylD,EAAahzB,EAASC,GACrC1yB,EAAIyG,YAAc4kD,EAAYnsD,YAC9Bc,EAAIgH,UAAYqkD,EAAYpsD,gBAC5B2E,GAAU5D,EAAKylD,EAAahzB,EAASC,OAChC,CACL1yB,EAAI0G,UAAY2kD,EAAYvmD,aAAe,EAC3C9E,EAAIyG,YAAc4kD,EAAYnsD,YAC9Bc,EAAImuC,YAAYkd,EAAYjxC,YAAc,IAC1Cpa,EAAIouC,eAAiBid,EAAYhxC,kBAAoB,EACrD,MAAMuzC,EAAS5I,EAAUvuC,WAAW+2C,EAAWlK,EAAW1oB,GACpDizB,EAAS7I,EAAUvuC,WAAWuuC,EAAUxuC,MAAMg3C,EAAW,GAAIlK,EAAW1oB,EAAa,GACrF0hB,EAAe7zC,GAAc4iD,EAAY/O,cAC3CrlE,OAAO4nB,OAAOy9C,GAAcrK,MAAK31D,GAAW,IAANA,KACxC0jB,EAAIsE,YACJtE,EAAIgH,UAAY58B,EAAQujF,mBACxB/lD,GAAmB5H,EAAK,CACtB7W,EAAGykE,EACHxkE,EAAGskE,EACH19D,EAAGszD,EACH/3E,EAAG83E,EACHn/C,OAAQo4C,IAEVt8C,EAAI6E,OACJ7E,EAAI+E,SACJ/E,EAAIgH,UAAYqkD,EAAYpsD,gBAC5Be,EAAIsE,YACJsD,GAAmB5H,EAAK,CACtB7W,EAAG0kE,EACHzkE,EAAGskE,EAAS,EACZ19D,EAAGszD,EAAW,EACd/3E,EAAG83E,EAAY,EACfn/C,OAAQo4C,IAEVt8C,EAAI6E,SAEJ7E,EAAIgH,UAAY58B,EAAQujF,mBACxB3tD,EAAI+tC,SAAS6f,EAAQF,EAAQpK,EAAUD,GACvCrjD,EAAI8tD,WAAWF,EAAQF,EAAQpK,EAAUD,GACzCrjD,EAAIgH,UAAYqkD,EAAYpsD,gBAC5Be,EAAI+tC,SAAS8f,EAAQH,EAAS,EAAGpK,EAAW,EAAGD,EAAY,IAG/DrjD,EAAIgH,UAAYv8B,KAAK8gF,gBAAgBh4E,GAEvCw6E,SAAS/8C,EAAIhR,EAAK51B,GAChB,MAAM,KAAC89E,GAAQz9E,MACT,YAAC0+E,EAAW,UAAE6E,EAAS,cAAE9E,EAAa,UAAE7F,EAAS,SAAEC,EAAQ,WAAE1oB,GAAcxwD,EAC3Eg+E,EAAWz/C,GAAOv+B,EAAQg+E,UAChC,IAAIa,EAAiBb,EAASvoD,WAC1BouD,EAAe,EACnB,MAAMjJ,EAAYnuC,GAAczsC,EAAQma,IAAK9Z,KAAK0e,EAAG1e,KAAKg4B,OACpDyrD,EAAiB,SAAS9uE,GAC9B4gB,EAAI6G,SAASznB,EAAM4lE,EAAU77D,EAAE6nB,EAAG7nB,EAAI8kE,GAAej9C,EAAG5nB,EAAI6/D,EAAiB,GAC7Ej4C,EAAG5nB,GAAK6/D,EAAiBE,GAErBgF,EAA0BnJ,EAAU/9C,UAAU+mD,GACpD,IAAItF,EAAU0F,EAAW/nD,EAAO9yB,EAAGooB,EAAG9V,EAAMid,EAU5C,IATA9C,EAAIiH,UAAY+mD,EAChBhuD,EAAIkH,aAAe,SACnBlH,EAAIN,KAAO0oD,EAAS9lD,OACpB0O,EAAG7nB,EAAIohE,GAAY9/E,KAAM0jF,EAAyB/jF,GAClD41B,EAAIgH,UAAY58B,EAAQikF,UACxB/oE,EAAK7a,KAAKo+E,WAAYqF,GACtBD,EAAe/E,GAA6C,UAA5BiF,EACd,WAAdH,EAA0B1K,EAAW,EAAI1oB,EAAe0oB,EAAW,EAAI1oB,EACvE,EACCrnD,EAAI,EAAGsS,EAAOqiE,EAAKz0E,OAAQF,EAAIsS,IAAQtS,EAAG,CAU7C,IATAm1E,EAAWR,EAAK30E,GAChB66E,EAAY3jF,KAAK8gF,gBAAgBh4E,GACjCysB,EAAIgH,UAAYonD,EAChB9oE,EAAKojE,EAASC,OAAQuF,GACtB7nD,EAAQqiD,EAASriD,MACb6iD,GAAiB7iD,EAAM5yB,SACzBhJ,KAAK6iF,cAActtD,EAAKgR,EAAIz9B,EAAGyxE,EAAW56E,GAC1C6+E,EAAiBvvE,KAAKmQ,IAAIu+D,EAASvoD,WAAYwjD,IAE5C1nD,EAAI,EAAGmH,EAAOuD,EAAM5yB,OAAQkoB,EAAImH,IAAQnH,EAC3CuyD,EAAe7nD,EAAM1K,IACrBstD,EAAiBb,EAASvoD,WAE5Bva,EAAKojE,EAASE,MAAOsF,GAEvBD,EAAe,EACfhF,EAAiBb,EAASvoD,WAC1Bva,EAAK7a,KAAKq+E,UAAWoF,GACrBl9C,EAAG5nB,GAAK+/D,EAEVmF,WAAWt9C,EAAIhR,EAAK51B,GAClB,MAAM+9E,EAAS19E,KAAK09E,OACd10E,EAAS00E,EAAO10E,OACtB,IAAI40E,EAAY90E,EAChB,GAAIE,EAAQ,CACV,MAAMuxE,EAAYnuC,GAAczsC,EAAQma,IAAK9Z,KAAK0e,EAAG1e,KAAKg4B,OAQ1D,IAPAuO,EAAG7nB,EAAIohE,GAAY9/E,KAAML,EAAQmkF,YAAankF,GAC9C4mC,EAAG5nB,GAAKhf,EAAQg/E,gBAChBppD,EAAIiH,UAAY+9C,EAAU/9C,UAAU78B,EAAQmkF,aAC5CvuD,EAAIkH,aAAe,SACnBmhD,EAAa1/C,GAAOv+B,EAAQi+E,YAC5BroD,EAAIgH,UAAY58B,EAAQokF,YACxBxuD,EAAIN,KAAO2oD,EAAW/lD,OACjB/uB,EAAI,EAAGA,EAAIE,IAAUF,EACxBysB,EAAI6G,SAASshD,EAAO50E,GAAIyxE,EAAU77D,EAAE6nB,EAAG7nB,GAAI6nB,EAAG5nB,EAAIi/D,EAAWxoD,WAAa,GAC1EmR,EAAG5nB,GAAKi/D,EAAWxoD,WAAaz1B,EAAQi/E,eAI9Cvb,eAAe98B,EAAIhR,EAAKyuD,EAAarkF,GACnC,MAAM,OAACs/E,EAAM,OAAEK,GAAUt/E,MACnB,EAAC0e,EAAC,EAAEC,GAAK4nB,GACT,MAACvO,EAAK,OAAEkB,GAAU8qD,GAClB,QAAC5mD,EAAO,SAAEG,EAAQ,WAAEF,EAAU,YAAEC,GAAeU,GAAcr+B,EAAQ25B,cAC3E/D,EAAIgH,UAAY58B,EAAQ60B,gBACxBe,EAAIyG,YAAcr8B,EAAQ80B,YAC1Bc,EAAI0G,UAAYt8B,EAAQ06B,YACxB9E,EAAIsE,YACJtE,EAAIyE,OAAOtb,EAAI0e,EAASze,GACT,QAAX2gE,GACFt/E,KAAKoiF,UAAU77C,EAAIhR,EAAKyuD,EAAarkF,GAEvC41B,EAAI0E,OAAOvb,EAAIsZ,EAAQuF,EAAU5e,GACjC4W,EAAI0uD,iBAAiBvlE,EAAIsZ,EAAOrZ,EAAGD,EAAIsZ,EAAOrZ,EAAI4e,GACnC,WAAX+hD,GAAkC,UAAXL,GACzBj/E,KAAKoiF,UAAU77C,EAAIhR,EAAKyuD,EAAarkF,GAEvC41B,EAAI0E,OAAOvb,EAAIsZ,EAAOrZ,EAAIua,EAASoE,GACnC/H,EAAI0uD,iBAAiBvlE,EAAIsZ,EAAOrZ,EAAIua,EAAQxa,EAAIsZ,EAAQsF,EAAa3e,EAAIua,GAC1D,WAAXomD,GACFt/E,KAAKoiF,UAAU77C,EAAIhR,EAAKyuD,EAAarkF,GAEvC41B,EAAI0E,OAAOvb,EAAI2e,EAAY1e,EAAIua,GAC/B3D,EAAI0uD,iBAAiBvlE,EAAGC,EAAIua,EAAQxa,EAAGC,EAAIua,EAASmE,GACrC,WAAXiiD,GAAkC,SAAXL,GACzBj/E,KAAKoiF,UAAU77C,EAAIhR,EAAKyuD,EAAarkF,GAEvC41B,EAAI0E,OAAOvb,EAAGC,EAAIye,GAClB7H,EAAI0uD,iBAAiBvlE,EAAGC,EAAGD,EAAI0e,EAASze,GACxC4W,EAAIwE,YACJxE,EAAI6E,OACAz6B,EAAQ06B,YAAc,GACxB9E,EAAI+E,SAGR4pD,uBAAuBvkF,GACrB,MAAMi1B,EAAQ50B,KAAK40B,MACbwb,EAAQpwC,KAAKw0C,YACb2vC,EAAQ/zC,GAASA,EAAM1xB,EACvB0lE,EAAQh0C,GAASA,EAAMzxB,EAC7B,GAAIwlE,GAASC,EAAO,CAClB,MAAM7rE,EAAWwkE,GAAYp9E,EAAQ4Y,UAAUlY,KAAKL,KAAMA,KAAKgxC,QAAShxC,KAAKqgF,gBAC7E,IAAK9nE,EACH,OAEF,MAAMsE,EAAO7c,KAAKsgF,MAAQ9C,GAAex9E,KAAML,GACzCsiF,EAAkBz1E,OAAOQ,OAAO,GAAIuL,EAAUvY,KAAKsgF,OACnDT,EAAYL,GAAmB5qD,EAAOj1B,EAASsiF,GAC/CznD,EAAQolD,GAAmBjgF,EAASsiF,EAAiBpC,EAAWjrD,GAClEuvD,EAAMxxC,MAAQnY,EAAM9b,GAAK0lE,EAAMzxC,MAAQnY,EAAM7b,IAC/C3e,KAAKi/E,OAASY,EAAUZ,OACxBj/E,KAAKs/E,OAASO,EAAUP,OACxBt/E,KAAKg4B,MAAQnb,EAAKmb,MAClBh4B,KAAKk5B,OAASrc,EAAKqc,OACnBl5B,KAAK0gF,OAASnoE,EAASmG,EACvB1e,KAAK2gF,OAASpoE,EAASoG,EACvB3e,KAAK69C,qBAAqB/K,OAAO9yC,KAAMw6B,KAI7C6pD,cACE,QAASrkF,KAAKogF,QAEhBrvC,KAAKxb,GACH,MAAM51B,EAAUK,KAAKL,QAAQyiC,WAAWpiC,KAAK+4B,cAC7C,IAAIqnD,EAAUpgF,KAAKogF,QACnB,IAAKA,EACH,OAEFpgF,KAAKkkF,uBAAuBvkF,GAC5B,MAAMqkF,EAAc,CAClBhsD,MAAOh4B,KAAKg4B,MACZkB,OAAQl5B,KAAKk5B,QAETqN,EAAK,CACT7nB,EAAG1e,KAAK0e,EACRC,EAAG3e,KAAK2e,GAEVyhE,EAAUnxE,KAAK4P,IAAIuhE,GAAW,KAAO,EAAIA,EACzC,MAAM5uB,EAAUvzB,GAAUt+B,EAAQ6xD,SAC5B8yB,EAAoBtkF,KAAKsmD,MAAMt9C,QAAUhJ,KAAKo+E,WAAWp1E,QAAUhJ,KAAKy9E,KAAKz0E,QAAUhJ,KAAKq+E,UAAUr1E,QAAUhJ,KAAK09E,OAAO10E,OAC9HrJ,EAAQi4D,SAAW0sB,IACrB/uD,EAAI6C,OACJ7C,EAAIgvD,YAAcnE,EAClBpgF,KAAKqjE,eAAe98B,EAAIhR,EAAKyuD,EAAarkF,GAC1C0sC,GAAsB9W,EAAK51B,EAAQy7E,eACnC70C,EAAG5nB,GAAK6yC,EAAQ72B,IAChB36B,KAAK8jE,UAAUv9B,EAAIhR,EAAK51B,GACxBK,KAAKsjF,SAAS/8C,EAAIhR,EAAK51B,GACvBK,KAAK6jF,WAAWt9C,EAAIhR,EAAK51B,GACzBgtC,GAAqBpX,EAAK51B,EAAQy7E,eAClC7lD,EAAIgD,WAGRm4C,oBACE,OAAO1wE,KAAKgxC,SAAW,GAEzB2/B,kBAAkBC,EAAgBqM,GAChC,MAAMpM,EAAa7wE,KAAKgxC,QAClB6B,EAAS+9B,EAAen1D,KAAI,EAAEF,aAAAA,EAAc/R,MAAAA,MAChD,MAAMu6B,EAAO/jC,KAAK40B,MAAM2lB,eAAeh/B,GACvC,IAAKwoB,EACH,MAAM,IAAIh4B,MAAM,kCAAoCwP,GAEtD,MAAO,CACLA,aAAAA,EACAqsB,QAAS7D,EAAK1hC,KAAKmH,GACnBA,MAAAA,MAGE4gD,GAAWnvC,EAAe41D,EAAYh+B,GACtC2xC,EAAkBxkF,KAAKykF,iBAAiB5xC,EAAQoqC,IAClD7yB,GAAWo6B,KACbxkF,KAAKgxC,QAAU6B,EACf7yC,KAAKqgF,eAAiBpD,EACtBj9E,KAAK0kF,qBAAsB,EAC3B1kF,KAAK8yC,QAAO,IAGhB8oC,YAAY1rE,EAAG4gE,EAAQrF,GAAc,GACnC,GAAIqF,GAAU9wE,KAAK0kF,oBACjB,OAAO,EAET1kF,KAAK0kF,qBAAsB,EAC3B,MAAM/kF,EAAUK,KAAKL,QACfkxE,EAAa7wE,KAAKgxC,SAAW,GAC7B6B,EAAS7yC,KAAKoxE,mBAAmBlhE,EAAG2gE,EAAYC,EAAQrF,GACxD+Y,EAAkBxkF,KAAKykF,iBAAiB5xC,EAAQ3iC,GAChDk6C,EAAU0mB,IAAW71D,EAAe43B,EAAQg+B,IAAe2T,EAWjE,OAVIp6B,IACFpqD,KAAKgxC,QAAU6B,GACXlzC,EAAQi4D,SAAWj4D,EAAQwiF,YAC7BniF,KAAKqgF,eAAiB,CACpB3hE,EAAGxO,EAAEwO,EACLC,EAAGzO,EAAEyO,GAEP3e,KAAK8yC,QAAO,EAAMg+B,KAGf1mB,EAETgnB,mBAAmBlhE,EAAG2gE,EAAYC,EAAQrF,GACxC,MAAM9rE,EAAUK,KAAKL,QACrB,GAAe,aAAXuQ,EAAEvJ,KACJ,MAAO,GAET,IAAK8kE,EACH,OAAOoF,EAET,MAAMh+B,EAAS7yC,KAAK40B,MAAMi7C,0BAA0B3/D,EAAGvQ,EAAQi2B,KAAMj2B,EAASmxE,GAI9E,OAHInxE,EAAQob,SACV83B,EAAO93B,UAEF83B,EAET4xC,iBAAiB5xC,EAAQ3iC,GACvB,MAAM,OAACwwE,EAAM,OAAEC,EAAM,QAAEhhF,GAAWK,KAC5BuY,EAAWwkE,GAAYp9E,EAAQ4Y,UAAUlY,KAAKL,KAAM6yC,EAAQ3iC,GAClE,OAAoB,IAAbqI,IAAuBmoE,IAAWnoE,EAASmG,GAAKiiE,IAAWpoE,EAASoG,IAG/EwhE,GAAQpD,YAAcA,GACtB,IAAI4H,GAAiB,CACnBv3E,GAAI,UACJ8uE,SAAUiE,GACVpD,YAAAA,GACA6H,UAAUhwD,EAAOunD,EAAOx8E,GAClBA,IACFi1B,EAAMyxB,QAAU,IAAI85B,GAAQ,CAACvrD,MAAAA,EAAOj1B,QAAAA,MAGxCk9D,aAAajoC,EAAOunD,EAAOx8E,GACrBi1B,EAAMyxB,SACRzxB,EAAMyxB,QAAQhN,WAAW15C,IAG7B+6C,MAAM9lB,EAAOunD,EAAOx8E,GACdi1B,EAAMyxB,SACRzxB,EAAMyxB,QAAQhN,WAAW15C,IAG7BklF,UAAUjwD,GACR,MAAMyxB,EAAUzxB,EAAMyxB,QACtB,GAAIA,GAAWA,EAAQg+B,cAAe,CACpC,MAAM9yE,EAAO,CACX80C,QAAAA,GAEF,IAAuD,IAAnDzxB,EAAM0pC,cAAc,oBAAqB/sD,GAC3C,OAEF80C,EAAQtV,KAAKnc,EAAMW,KACnBX,EAAM0pC,cAAc,mBAAoB/sD,KAG5C6qE,WAAWxnD,EAAOrjB,GAChB,GAAIqjB,EAAMyxB,QAAS,CACjB,MAAMgH,EAAmB97C,EAAKu/D,OAC1Bl8C,EAAMyxB,QAAQu1B,YAAYrqE,EAAKigC,MAAO6b,EAAkB97C,EAAKk6D,eAC/Dl6D,EAAK64C,SAAU,KAIrB/iD,SAAU,CACRuwD,SAAS,EACTuqB,SAAU,KACV5pE,SAAU,UACVic,gBAAiB,kBACjBouD,WAAY,OACZtH,UAAW,CACTxoD,OAAQ,QAEVwrD,aAAc,EACdC,kBAAmB,EACnBzjB,WAAY,OACZ8oB,UAAW,OACXlF,YAAa,EACbf,SAAU,GAEV4F,UAAW,OACXQ,YAAa,OACbnF,cAAe,EACfD,gBAAiB,EACjBf,WAAY,CACV9qD,OAAQ,QAEVgxD,YAAa,OACbtyB,QAAS,EACT4tB,aAAc,EACdD,UAAW,EACX7lD,aAAc,EACds/C,UAAW,CAACrjD,EAAK/e,IAASA,EAAKmnE,SAAS9gE,KACxCg8D,SAAU,CAACtjD,EAAK/e,IAASA,EAAKmnE,SAAS9gE,KACvCqmE,mBAAoB,OACpBzE,eAAe,EACftuB,WAAY,EACZ17B,YAAa,gBACb4F,YAAa,EACb9F,UAAW,CACTic,SAAU,IACV8B,OAAQ,gBAEVoB,WAAY,CACVN,QAAS,CACPzsC,KAAM,SACN4sC,WAAY,CAAC,IAAK,IAAK,QAAS,SAAU,SAAU,WAEtD6sC,QAAS,CACP9tC,OAAQ,SACR9B,SAAU,MAGdF,UAAW,CACT0wC,YAAahnE,EACbssC,MAAM25B,GACJ,GAAIA,EAAaj3E,OAAS,EAAG,CAC3B,MAAM8T,EAAOmjE,EAAa,GACpBnkC,EAASh/B,EAAK8X,MAAMvyB,KAAKy5C,OACzBgpC,EAAahpC,EAASA,EAAO9yC,OAAS,EAC5C,GAAIhJ,MAAQA,KAAKL,SAAiC,YAAtBK,KAAKL,QAAQi2B,KACvC,OAAO9Y,EAAK26B,QAAQuF,OAAS,GACxB,GAAIlgC,EAAKkgC,MACd,OAAOlgC,EAAKkgC,MACP,GAAI8nC,EAAa,GAAKhoE,EAAK66B,UAAYmtC,EAC5C,OAAOhpC,EAAOh/B,EAAK66B,WAGvB,MAAO,IAETspC,WAAYjnE,EACZokE,WAAYpkE,EACZsnE,YAAatnE,EACbgjC,MAAM4L,GACJ,GAAI5oD,MAAQA,KAAKL,SAAiC,YAAtBK,KAAKL,QAAQi2B,KACvC,OAAOgzB,EAAY5L,MAAQ,KAAO4L,EAAYE,gBAAkBF,EAAYE,eAE9E,IAAI9L,EAAQ4L,EAAYnR,QAAQuF,OAAS,GACrCA,IACFA,GAAS,MAEX,MAAM54C,EAAQwkD,EAAYE,eAI1B,OAHK5uC,EAAc9V,KACjB44C,GAAS54C,GAEJ44C,GAET8kC,WAAWl5B,GACT,MAAM7kB,EAAO6kB,EAAYh0B,MAAM2lB,eAAeqO,EAAYrtC,cACpD5b,EAAUokC,EAAK+S,WAAWjP,SAAS+gB,EAAYjR,WACrD,MAAO,CACLljB,YAAa90B,EAAQ80B,YACrBD,gBAAiB70B,EAAQ60B,gBACzB6F,YAAa16B,EAAQ06B,YACrBsV,WAAYhwC,EAAQgwC,WACpBC,iBAAkBjwC,EAAQiwC,iBAC1BiiC,aAAc,IAGlBmQ,iBACE,OAAOhiF,KAAKL,QAAQikF,WAEtB7B,gBAAgBn5B,GACd,MAAM7kB,EAAO6kB,EAAYh0B,MAAM2lB,eAAeqO,EAAYrtC,cACpD5b,EAAUokC,EAAK+S,WAAWjP,SAAS+gB,EAAYjR,WACrD,MAAO,CACLpe,WAAY55B,EAAQ45B,WACpBC,SAAU75B,EAAQ65B,WAGtB+nD,WAAYvnE,EACZqkE,UAAWrkE,EACX0nE,aAAc1nE,EACd0jE,OAAQ1jE,EACR2nE,YAAa3nE,IAGjBw8C,cAAe,CACbmnB,SAAU,OACVC,WAAY,OACZtC,UAAW,QAEb/uE,YAAa,CACX8qB,YAAcxtB,GAAkB,WAATA,GAA8B,aAATA,GAAgC,aAATA,EACnE0tB,YAAY,EACZ+Y,UAAW,CACTjZ,aAAa,EACbE,YAAY,GAEdhD,UAAW,CACTiD,WAAW,GAEbkc,WAAY,CACVlc,UAAW,cAGfoyC,uBAAwB,CAAC,gBAa3B,MAAMmb,GAAc,CAACjpC,EAAQlE,EAAKpuC,EAAOw7E,KACpB,kBAARptC,GACTpuC,EAAQsyC,EAAOvyC,KAAKquC,GAAO,EAC3BotC,EAAYj6E,QAAQ,CAACvB,MAAAA,EAAOwzC,MAAOpF,KAC1Bn5B,MAAMm5B,KACfpuC,EAAQ,MAEHA,GAET,SAASy7E,GAAenpC,EAAQlE,EAAKpuC,EAAOw7E,GAC1C,MAAMjtB,EAAQjc,EAAO/2C,QAAQ6yC,GAC7B,IAAe,IAAXmgB,EACF,OAAOgtB,GAAYjpC,EAAQlE,EAAKpuC,EAAOw7E,GAEzC,MAAM72C,EAAO2N,EAAOopC,YAAYttC,GAChC,OAAOmgB,IAAU5pB,EAAO3kC,EAAQuuD,EAElC,MAAMwC,GAAa,CAAC/wD,EAAO4V,IAAkB,OAAV5V,EAAiB,KAAOwX,GAAY/R,KAAK8O,MAAMvU,GAAQ,EAAG4V,GAC7F,MAAM+lE,WAAsBhqB,GAC1BnkD,YAAYk7B,GACV8Q,MAAM9Q,GACNlyC,KAAKolF,iBAAct/E,EACnB9F,KAAKqlF,YAAc,EACnBrlF,KAAKslF,aAAe,GAEtBhpB,KAAK6L,GACH,MAAMod,EAAQvlF,KAAKslF,aACnB,GAAIC,EAAMv8E,OAAQ,CAChB,MAAM8yC,EAAS97C,KAAK+7C,YACpB,IAAK,MAAM,MAACvyC,EAAK,MAAEwzC,KAAUuoC,EACvBzpC,EAAOtyC,KAAWwzC,GACpBlB,EAAOryC,OAAOD,EAAO,GAGzBxJ,KAAKslF,aAAe,GAEtBtiC,MAAMsZ,KAAK6L,GAEbn4D,MAAM4nC,EAAKpuC,GACT,GAAI0Q,EAAc09B,GAChB,OAAO,KAET,MAAMkE,EAAS97C,KAAK+7C,YAGpB,OAFAvyC,EAAQ6Q,SAAS7Q,IAAUsyC,EAAOtyC,KAAWouC,EAAMpuC,EAC/Cy7E,GAAenpC,EAAQlE,EAAKp9B,EAAehR,EAAOouC,GAAM53C,KAAKslF,cAC1D/qB,GAAW/wD,EAAOsyC,EAAO9yC,OAAS,GAE3Cm0D,sBACE,MAAM,WAAClnB,EAAU,WAAEC,GAAcl2C,KAAKg2C,gBACtC,IAAI,IAAC72B,EAAG,IAAEC,GAAOpf,KAAKw8C,WAAU,GACJ,UAAxBx8C,KAAKL,QAAQwtC,SACV8I,IACH92B,EAAM,GAEH+2B,IACH92B,EAAMpf,KAAK+7C,YAAY/yC,OAAS,IAGpChJ,KAAKmf,IAAMA,EACXnf,KAAKof,IAAMA,EAEbk+C,aACE,MAAMn+C,EAAMnf,KAAKmf,IACXC,EAAMpf,KAAKof,IACX4lC,EAAShlD,KAAKL,QAAQqlD,OACtB3E,EAAQ,GACd,IAAIvE,EAAS97C,KAAK+7C,YAClBD,EAAkB,IAAR38B,GAAaC,IAAQ08B,EAAO9yC,OAAS,EAAK8yC,EAASA,EAAOxtC,MAAM6Q,EAAKC,EAAM,GACrFpf,KAAKqlF,YAAcp2E,KAAKmQ,IAAI08B,EAAO9yC,QAAUg8C,EAAS,EAAI,GAAI,GAC9DhlD,KAAKolF,YAAcplF,KAAKmf,KAAO6lC,EAAS,GAAM,GAC9C,IAAK,IAAI5gD,EAAQ+a,EAAK/a,GAASgb,EAAKhb,IAClCi8C,EAAM92C,KAAK,CAACnF,MAAAA,IAEd,OAAOi8C,EAETpD,iBAAiB74C,GACf,MAAM03C,EAAS97C,KAAK+7C,YACpB,OAAI33C,GAAS,GAAKA,EAAQ03C,EAAO9yC,OACxB8yC,EAAO13C,GAETA,EAET2vC,YACEiP,MAAMjP,YACD/zC,KAAK+hD,iBACR/hD,KAAK0sD,gBAAkB1sD,KAAK0sD,gBAGhCtM,iBAAiBh8C,GAIf,MAHqB,kBAAVA,IACTA,EAAQpE,KAAKgQ,MAAM5L,IAEJ,OAAVA,EAAiBm4C,IAAMv8C,KAAKskD,oBAAoBlgD,EAAQpE,KAAKolF,aAAeplF,KAAKqlF,aAE1F/kC,gBAAgB92C,GACd,MAAM62C,EAAQrgD,KAAKqgD,MACnB,OAAI72C,EAAQ,GAAKA,EAAQ62C,EAAMr3C,OAAS,EAC/B,KAEFhJ,KAAKogD,iBAAiBC,EAAM72C,GAAOpF,OAE5Cw8D,iBAAiBloC,GACf,OAAOzpB,KAAK8O,MAAM/d,KAAKolF,YAAcplF,KAAK8gE,mBAAmBpoC,GAAS14B,KAAKqlF,aAE7EniC,eACE,OAAOljD,KAAK46B,QAUhB,SAAS4qD,GAAgBC,EAAmBC,GAC1C,MAAMrlC,EAAQ,GACRslC,EAAc,OACd,OAACx4C,EAAM,KAAEi1B,EAAI,IAAEjjD,EAAG,IAAEC,EAAG,UAAEwmE,EAAS,MAAE5hD,EAAK,SAAE6hD,EAAQ,UAAEC,EAAS,cAAEC,GAAiBN,EACjF15B,EAAOqW,GAAQ,EACf4jB,EAAYH,EAAW,GACtB1mE,IAAK8mE,EAAM7mE,IAAK8mE,GAAQR,EACzBzvC,GAAc/7B,EAAciF,GAC5B+2B,GAAch8B,EAAckF,GAC5B+mE,GAAgBjsE,EAAc8pB,GAC9BoiD,GAAcF,EAAOD,IAASH,EAAY,GAChD,IACI/zC,EAAQs0C,EAASC,EAASC,EAD1Bv/B,EAAUppC,GAASsoE,EAAOD,GAAQD,EAAYj6B,GAAQA,EAE1D,GAAI/E,EAAU2+B,IAAgB1vC,IAAeC,EAC3C,MAAO,CAAC,CAAC9xC,MAAO6hF,GAAO,CAAC7hF,MAAO8hF,IAEjCK,EAAYt3E,KAAK2pD,KAAKstB,EAAOl/B,GAAW/3C,KAAKC,MAAM+2E,EAAOj/B,GACtDu/B,EAAYP,IACdh/B,EAAUppC,EAAQ2oE,EAAYv/B,EAAUg/B,EAAYj6B,GAAQA,GAEzD7xC,EAAc0rE,KACjB7zC,EAAS9iC,KAAKiP,IAAI,GAAI0nE,GACtB5+B,EAAU/3C,KAAK2pD,KAAK5R,EAAUjV,GAAUA,GAE3B,UAAX5E,GACFk5C,EAAUp3E,KAAKC,MAAM+2E,EAAOj/B,GAAWA,EACvCs/B,EAAUr3E,KAAK2pD,KAAKstB,EAAOl/B,GAAWA,IAEtCq/B,EAAUJ,EACVK,EAAUJ,GAERjwC,GAAcC,GAAcksB,GAAQtjD,GAAaM,EAAMD,GAAOijD,EAAMpb,EAAU,MAChFu/B,EAAYt3E,KAAK8O,MAAM9O,KAAKkQ,KAAKC,EAAMD,GAAO6nC,EAAS6+B,IACvD7+B,GAAW5nC,EAAMD,GAAOonE,EACxBF,EAAUlnE,EACVmnE,EAAUlnE,GACD+mE,GACTE,EAAUpwC,EAAa92B,EAAMknE,EAC7BC,EAAUpwC,EAAa92B,EAAMknE,EAC7BC,EAAYviD,EAAQ,EACpBgjB,GAAWs/B,EAAUD,GAAWE,IAEhCA,GAAaD,EAAUD,GAAWr/B,EAEhCu/B,EADEvoE,EAAauoE,EAAWt3E,KAAK8O,MAAMwoE,GAAYv/B,EAAU,KAC/C/3C,KAAK8O,MAAMwoE,GAEXt3E,KAAK2pD,KAAK2tB,IAG1B,MAAMC,EAAgBv3E,KAAKmQ,IACzBK,GAAeunC,GACfvnC,GAAe4mE,IAEjBt0C,EAAS9iC,KAAKiP,IAAI,GAAIhE,EAAc0rE,GAAaY,EAAgBZ,GACjES,EAAUp3E,KAAK8O,MAAMsoE,EAAUt0C,GAAUA,EACzCu0C,EAAUr3E,KAAK8O,MAAMuoE,EAAUv0C,GAAUA,EACzC,IAAI7gB,EAAI,EAcR,IAbI+kB,IACE8vC,GAAiBM,IAAYlnE,GAC/BkhC,EAAM92C,KAAK,CAACnF,MAAO+a,IACfknE,EAAUlnE,GACZ+R,IAEElT,EAAa/O,KAAK8O,OAAOsoE,EAAUn1D,EAAI81B,GAAWjV,GAAUA,EAAQ5yB,EAAKsnE,GAAkBtnE,EAAKinE,EAAYX,KAC9Gv0D,KAEOm1D,EAAUlnE,GACnB+R,KAGGA,EAAIq1D,IAAar1D,EACtBmvB,EAAM92C,KAAK,CAACnF,MAAO6K,KAAK8O,OAAOsoE,EAAUn1D,EAAI81B,GAAWjV,GAAUA,IAWpE,OATImE,GAAc6vC,GAAiBO,IAAYlnE,EACzCihC,EAAMr3C,QAAUgV,EAAaqiC,EAAMA,EAAMr3C,OAAS,GAAG5E,MAAOgb,EAAKqnE,GAAkBrnE,EAAKgnE,EAAYX,IACtGplC,EAAMA,EAAMr3C,OAAS,GAAG5E,MAAQgb,EAEhCihC,EAAM92C,KAAK,CAACnF,MAAOgb,IAEX82B,GAAcowC,IAAYlnE,GACpCihC,EAAM92C,KAAK,CAACnF,MAAOkiF,IAEdjmC,EAET,SAASomC,GAAkBriF,EAAOgiF,GAAY,WAACnkC,EAAU,YAAEmX,IACzD,MAAM1/B,EAAMra,EAAU+5C,GAChBnnC,GAASgwB,EAAahzC,KAAKqS,IAAIoY,GAAOzqB,KAAKsT,IAAImX,KAAS,KACxD1wB,EAAS,IAAOo9E,GAAc,GAAKhiF,GAAO4E,OAChD,OAAOiG,KAAKkQ,IAAIinE,EAAan0D,EAAOjpB,GA/FtCm8E,GAAc/3E,GAAK,WACnB+3E,GAAc99E,SAAW,CACvBg5C,MAAO,CACLvrC,SAAUqwE,GAAc19E,UAAUw1C,mBA8FtC,MAAMypC,WAAwBvrB,GAC5BnkD,YAAYk7B,GACV8Q,MAAM9Q,GACNlyC,KAAKyZ,WAAQ3T,EACb9F,KAAK0Z,SAAM5T,EACX9F,KAAKolF,iBAAct/E,EACnB9F,KAAK2mF,eAAY7gF,EACjB9F,KAAKqlF,YAAc,EAErBr1E,MAAM4nC,EAAKpuC,GACT,OAAI0Q,EAAc09B,KAGE,kBAARA,GAAoBA,aAAex9B,UAAYC,UAAUu9B,GAF5D,MAKDA,EAEVgvC,yBACE,MAAM,YAACloD,GAAe1+B,KAAKL,SACrB,WAACs2C,EAAU,WAAEC,GAAcl2C,KAAKg2C,gBACtC,IAAI,IAAC72B,EAAG,IAAEC,GAAOpf,KACjB,MAAM6mF,EAASh1E,GAAMsN,EAAM82B,EAAa92B,EAAMtN,EACxCi1E,EAASj1E,GAAMuN,EAAM82B,EAAa92B,EAAMvN,EAC9C,GAAI6sB,EAAa,CACf,MAAMqoD,EAAUppE,EAAKwB,GACf6nE,EAAUrpE,EAAKyB,GACjB2nE,EAAU,GAAKC,EAAU,EAC3BF,EAAO,GACEC,EAAU,GAAKC,EAAU,GAClCH,EAAO,GAGX,GAAI1nE,IAAQC,EAAK,CACf,IAAI4lC,EAAS,GACT5lC,GAAOhF,OAAO6sE,kBAAoB9nE,GAAO/E,OAAO8sE,oBAClDliC,EAAS/1C,KAAK4P,IAAU,IAANO,IAEpB0nE,EAAO1nE,EAAM4lC,GACRtmB,GACHmoD,EAAO1nE,EAAM6lC,GAGjBhlD,KAAKmf,IAAMA,EACXnf,KAAKof,IAAMA,EAEb+nE,eACE,MAAM7vB,EAAWt3D,KAAKL,QAAQ0gD,MAC9B,IACIwlC,GADA,cAACruB,EAAa,SAAE4vB,GAAY9vB,EAehC,OAbI8vB,GACFvB,EAAW52E,KAAK2pD,KAAK54D,KAAKof,IAAMgoE,GAAYn4E,KAAKC,MAAMlP,KAAKmf,IAAMioE,GAAY,EAC1EvB,EAAW,MACbnvE,QAAQC,KAAK,UAAU3W,KAAKoN,sBAAsBg6E,mCAA0CvB,8BAC5FA,EAAW,OAGbA,EAAW7lF,KAAKqnF,mBAChB7vB,EAAgBA,GAAiB,IAE/BA,IACFquB,EAAW52E,KAAKkQ,IAAIq4C,EAAequB,IAE9BA,EAETwB,mBACE,OAAOjtE,OAAOiD,kBAEhBigD,aACE,MAAM9mD,EAAOxW,KAAKL,QACZ23D,EAAW9gD,EAAK6pC,MACtB,IAAIwlC,EAAW7lF,KAAKmnF,eACpBtB,EAAW52E,KAAKmQ,IAAI,EAAGymE,GACvB,MAAMyB,EAA0B,CAC9BzB,SAAAA,EACA14C,OAAQ32B,EAAK22B,OACbhuB,IAAK3I,EAAK2I,IACVC,IAAK5I,EAAK4I,IACVwmE,UAAWtuB,EAASsuB,UACpBxjB,KAAM9K,EAAS8vB,SACfpjD,MAAOszB,EAAStzB,MAChB8hD,UAAW9lF,KAAKkkE,aAChBjiB,WAAYjiD,KAAK+hD,eACjBqX,YAAa9B,EAAS8B,aAAe,EACrC2sB,eAA0C,IAA3BzuB,EAASyuB,eAEpBL,EAAY1lF,KAAK07D,QAAU17D,KAC3BqgD,EAAQmlC,GAAgB8B,EAAyB5B,GAYvD,MAXoB,UAAhBlvE,EAAK22B,QACPnuB,EAAmBqhC,EAAOrgD,KAAM,SAE9BwW,EAAKuE,SACPslC,EAAMtlC,UACN/a,KAAKyZ,MAAQzZ,KAAKof,IAClBpf,KAAK0Z,IAAM1Z,KAAKmf,MAEhBnf,KAAKyZ,MAAQzZ,KAAKmf,IAClBnf,KAAK0Z,IAAM1Z,KAAKof,KAEXihC,EAETtM,YACE,MAAMsM,EAAQrgD,KAAKqgD,MACnB,IAAI5mC,EAAQzZ,KAAKmf,IACbzF,EAAM1Z,KAAKof,IAEf,GADA4jC,MAAMjP,YACF/zC,KAAKL,QAAQqlD,QAAU3E,EAAMr3C,OAAQ,CACvC,MAAMg8C,GAAUtrC,EAAMD,GAASxK,KAAKmQ,IAAIihC,EAAMr3C,OAAS,EAAG,GAAK,EAC/DyQ,GAASurC,EACTtrC,GAAOsrC,EAEThlD,KAAKolF,YAAc3rE,EACnBzZ,KAAK2mF,UAAYjtE,EACjB1Z,KAAKqlF,YAAc3rE,EAAMD,EAE3BwjC,iBAAiB74C,GACf,OAAOqnC,GAAarnC,EAAOpE,KAAK40B,MAAMj1B,QAAQyrC,OAAQprC,KAAKL,QAAQ0gD,MAAM1U,SAI7E,MAAM47C,WAAoBb,GACxBvpB,sBACE,MAAM,IAACh+C,EAAG,IAAEC,GAAOpf,KAAKw8C,WAAU,GAClCx8C,KAAKmf,IAAMhF,EAAegF,GAAOA,EAAM,EACvCnf,KAAKof,IAAMjF,EAAeiF,GAAOA,EAAM,EACvCpf,KAAK4mF,yBAEPS,mBACE,MAAMplC,EAAajiD,KAAK+hD,eAClB/4C,EAASi5C,EAAajiD,KAAKg4B,MAAQh4B,KAAKk5B,OACxCkgC,EAAc/5C,EAAUrf,KAAKL,QAAQ0gD,MAAM+Y,aAC3CnnC,GAASgwB,EAAahzC,KAAKqS,IAAI83C,GAAenqD,KAAKsT,IAAI62C,KAAiB,KACxEiH,EAAWrgE,KAAK0gE,wBAAwB,GAC9C,OAAOzxD,KAAK2pD,KAAK5vD,EAASiG,KAAKkQ,IAAI,GAAIkhD,EAASjrC,WAAanD,IAE/DmuB,iBAAiBh8C,GACf,OAAiB,OAAVA,EAAiBm4C,IAAMv8C,KAAKskD,oBAAoBlgD,EAAQpE,KAAKolF,aAAeplF,KAAKqlF,aAE1FzkB,iBAAiBloC,GACf,OAAO14B,KAAKolF,YAAcplF,KAAK8gE,mBAAmBpoC,GAAS14B,KAAKqlF,aAUpE,SAASmC,GAAQC,GACf,MAAMz0C,EAASy0C,EAAWx4E,KAAKiP,IAAI,GAAIjP,KAAKC,MAAMwO,EAAM+pE,KACxD,OAAkB,IAAXz0C,EAET,SAAS00C,GAAcjC,EAAmBC,GACxC,MAAMiC,EAAS14E,KAAKC,MAAMwO,EAAMgoE,EAAUtmE,MACpCwoE,EAAiB34E,KAAK2pD,KAAK8sB,EAAUtmE,IAAMnQ,KAAKiP,IAAI,GAAIypE,IACxDtnC,EAAQ,GACd,IAAIonC,EAAUntE,EAAgBmrE,EAAkBtmE,IAAKlQ,KAAKiP,IAAI,GAAIjP,KAAKC,MAAMwO,EAAMgoE,EAAUvmE,QACzF0oE,EAAM54E,KAAKC,MAAMwO,EAAM+pE,IACvBK,EAAc74E,KAAKC,MAAMu4E,EAAUx4E,KAAKiP,IAAI,GAAI2pE,IAChDjC,EAAYiC,EAAM,EAAI54E,KAAKiP,IAAI,GAAIjP,KAAK4P,IAAIgpE,IAAQ,EACxD,GACExnC,EAAM92C,KAAK,CAACnF,MAAOqjF,EAAS9vB,MAAO6vB,GAAQC,OACzCK,EACkB,KAAhBA,IACFA,EAAc,IACZD,EACFjC,EAAYiC,GAAO,EAAI,EAAIjC,GAE7B6B,EAAUx4E,KAAK8O,MAAM+pE,EAAc74E,KAAKiP,IAAI,GAAI2pE,GAAOjC,GAAaA,QAC7DiC,EAAMF,GAAWE,IAAQF,GAAUG,EAAcF,GAC1D,MAAMG,EAAWztE,EAAgBmrE,EAAkBrmE,IAAKqoE,GAExD,OADApnC,EAAM92C,KAAK,CAACnF,MAAO2jF,EAAUpwB,MAAO6vB,GAAQC,KACrCpnC,EA/BTknC,GAAYn6E,GAAK,SACjBm6E,GAAYlgF,SAAW,CACrBg5C,MAAO,CACLvrC,SAAUsiD,GAAMX,WAAWC,UA8B/B,MAAMsxB,WAAyB7sB,GAC7BnkD,YAAYk7B,GACV8Q,MAAM9Q,GACNlyC,KAAKyZ,WAAQ3T,EACb9F,KAAK0Z,SAAM5T,EACX9F,KAAKolF,iBAAct/E,EACnB9F,KAAKqlF,YAAc,EAErBr1E,MAAM4nC,EAAKpuC,GACT,MAAMpF,EAAQsiF,GAAgBj/E,UAAUuI,MAAM3E,MAAMrL,KAAM,CAAC43C,EAAKpuC,IAChE,GAAc,IAAVpF,EAIJ,OAAO+V,EAAe/V,IAAUA,EAAQ,EAAIA,EAAQ,KAHlDpE,KAAKioF,OAAQ,EAKjB9qB,sBACE,MAAM,IAACh+C,EAAG,IAAEC,GAAOpf,KAAKw8C,WAAU,GAClCx8C,KAAKmf,IAAMhF,EAAegF,GAAOlQ,KAAKmQ,IAAI,EAAGD,GAAO,KACpDnf,KAAKof,IAAMjF,EAAeiF,GAAOnQ,KAAKmQ,IAAI,EAAGA,GAAO,KAChDpf,KAAKL,QAAQ++B,cACf1+B,KAAKioF,OAAQ,GAEfjoF,KAAK4mF,yBAEPA,yBACE,MAAM,WAAC3wC,EAAU,WAAEC,GAAcl2C,KAAKg2C,gBACtC,IAAI72B,EAAMnf,KAAKmf,IACXC,EAAMpf,KAAKof,IACf,MAAMynE,EAASh1E,GAAMsN,EAAM82B,EAAa92B,EAAMtN,EACxCi1E,EAASj1E,GAAMuN,EAAM82B,EAAa92B,EAAMvN,EACxCg2E,EAAM,CAACh2E,EAAG2R,IAAMvU,KAAKiP,IAAI,GAAIjP,KAAKC,MAAMwO,EAAM7L,IAAM2R,GACtDrE,IAAQC,IACND,GAAO,GACT0nE,EAAO,GACPC,EAAO,MAEPD,EAAOgB,EAAI1oE,GAAM,IACjB2nE,EAAOe,EAAIzoE,EAAK,MAGhBD,GAAO,GACT0nE,EAAOgB,EAAIzoE,GAAM,IAEfA,GAAO,GACT0nE,EAAOe,EAAI1oE,EAAK,IAEdnf,KAAKioF,OAASjoF,KAAKmf,MAAQnf,KAAKk8D,eAAiB/8C,IAAQ0oE,EAAI7nF,KAAKmf,IAAK,IACzE0nE,EAAOgB,EAAI1oE,GAAM,IAEnBnf,KAAKmf,IAAMA,EACXnf,KAAKof,IAAMA,EAEbk+C,aACE,MAAM9mD,EAAOxW,KAAKL,QACZ8lF,EAAoB,CACxBtmE,IAAKnf,KAAKg8D,SACV58C,IAAKpf,KAAK+7D,UAEN1b,EAAQqnC,GAAcjC,EAAmBzlF,MAY/C,MAXoB,UAAhBwW,EAAK22B,QACPnuB,EAAmBqhC,EAAOrgD,KAAM,SAE9BwW,EAAKuE,SACPslC,EAAMtlC,UACN/a,KAAKyZ,MAAQzZ,KAAKof,IAClBpf,KAAK0Z,IAAM1Z,KAAKmf,MAEhBnf,KAAKyZ,MAAQzZ,KAAKmf,IAClBnf,KAAK0Z,IAAM1Z,KAAKof,KAEXihC,EAETpD,iBAAiB74C,GACf,YAAiB0B,IAAV1B,EACH,IACAqnC,GAAarnC,EAAOpE,KAAK40B,MAAMj1B,QAAQyrC,OAAQprC,KAAKL,QAAQ0gD,MAAM1U,QAExEoI,YACE,MAAMt6B,EAAQzZ,KAAKmf,IACnB6jC,MAAMjP,YACN/zC,KAAKolF,YAAc1nE,EAAMjE,GACzBzZ,KAAKqlF,YAAc3nE,EAAM1d,KAAKof,KAAO1B,EAAMjE,GAE7C2mC,iBAAiBh8C,GAIf,YAHc0B,IAAV1B,GAAiC,IAAVA,IACzBA,EAAQpE,KAAKmf,KAED,OAAV/a,GAAkBqa,MAAMra,GACnBm4C,IAEFv8C,KAAKskD,mBAAmBlgD,IAAUpE,KAAKmf,IAC1C,GACCzB,EAAMtZ,GAASpE,KAAKolF,aAAeplF,KAAKqlF,aAE/CzkB,iBAAiBloC,GACf,MAAMmoC,EAAU7gE,KAAK8gE,mBAAmBpoC,GACxC,OAAOzpB,KAAKiP,IAAI,GAAIle,KAAKolF,YAAcvkB,EAAU7gE,KAAKqlF,cAa1D,SAAS6C,GAAsB1xE,GAC7B,MAAM8gD,EAAW9gD,EAAK6pC,MACtB,GAAIiX,EAASnM,SAAW30C,EAAK20C,QAAS,CACpC,MAAMqG,EAAUvzB,GAAUq5B,EAASyC,iBACnC,OAAOv/C,EAAe88C,EAASriC,MAAQqiC,EAASriC,KAAKpY,KAAMxV,GAAS4tB,KAAKpY,MAAQ20C,EAAQt4B,OAE3F,OAAO,EAET,SAASivD,GAAiB5yD,EAAKN,EAAM+nB,GAEnC,OADAA,EAAQ3uC,EAAQ2uC,GAASA,EAAQ,CAACA,GAC3B,CACLz3B,EAAG0S,GAAa1C,EAAKN,EAAK4C,OAAQmlB,GAClCl8C,EAAGk8C,EAAMh0C,OAASisB,EAAKG,YAG3B,SAASgzD,GAAgBnoE,EAAOxD,EAAKI,EAAMsC,EAAKC,GAC9C,OAAIa,IAAUd,GAAOc,IAAUb,EACtB,CACL3F,MAAOgD,EAAOI,EAAO,EACrBnD,IAAK+C,EAAOI,EAAO,GAEZoD,EAAQd,GAAOc,EAAQb,EACzB,CACL3F,MAAOgD,EAAMI,EACbnD,IAAK+C,GAGF,CACLhD,MAAOgD,EACP/C,IAAK+C,EAAMI,GAGf,SAASwrE,GAAmBhyD,GAC1B,MAAMosB,EAAO,CACX15C,EAAGstB,EAAMzc,KAAOyc,EAAMkmD,SAAS3iE,KAC/BiL,EAAGwR,EAAMxc,MAAQwc,EAAMkmD,SAAS1iE,MAChCuH,EAAGiV,EAAMsE,IAAMtE,EAAMkmD,SAAS5hD,IAC9BhjB,EAAG0e,EAAMuE,OAASvE,EAAMkmD,SAAS3hD,QAE7B0tD,EAAS97E,OAAOQ,OAAO,GAAIy1C,GAC3Boc,EAAa,GACbrN,EAAU,GACV+2B,EAAalyD,EAAMmyD,aAAax/E,OAChCy/E,EAAiBpyD,EAAM12B,QAAQ0rD,YAC/Bq9B,EAAkBD,EAAeE,kBAAoB1rE,EAAKsrE,EAAa,EAC7E,IAAK,IAAIz/E,EAAI,EAAGA,EAAIy/E,EAAYz/E,IAAK,CACnC,MAAM0N,EAAOiyE,EAAermD,WAAW/L,EAAMuyD,qBAAqB9/E,IAClE0oD,EAAQ1oD,GAAK0N,EAAKg7C,QAClB,MAAMhG,EAAgBn1B,EAAMwyD,iBAAiB//E,EAAGutB,EAAMyyD,YAAct3B,EAAQ1oD,GAAI4/E,GAC1EK,EAAS7qD,GAAO1nB,EAAKye,MACrBunD,EAAW2L,GAAiB9xD,EAAMd,IAAKwzD,EAAQ1yD,EAAMmyD,aAAa1/E,IACxE+1D,EAAW/1D,GAAK0zE,EAChB,MAAMhd,EAAeh/C,GAAgB6V,EAAMw0B,cAAc/hD,GAAK4/E,GACxDzoE,EAAQhR,KAAK8O,MAAMwB,GAAUigD,IAC7BwpB,EAAUZ,GAAgBnoE,EAAOurC,EAAc9sC,EAAG89D,EAASj3D,EAAG,EAAG,KACjE0jE,EAAUb,GAAgBnoE,EAAOurC,EAAc7sC,EAAG69D,EAAS17E,EAAG,GAAI,KACxEooF,GAAaZ,EAAQ7lC,EAAM+c,EAAcwpB,EAASC,GAEpD5yD,EAAM8yD,eACJ1mC,EAAK15C,EAAIu/E,EAAOv/E,EAChBu/E,EAAOzjE,EAAI49B,EAAK59B,EAChB49B,EAAKrhC,EAAIknE,EAAOlnE,EAChBknE,EAAO3wE,EAAI8qC,EAAK9qC,GAElB0e,EAAM+yD,iBAAmBC,GAAqBhzD,EAAOwoC,EAAYrN,GAEnE,SAAS03B,GAAaZ,EAAQ7lC,EAAMxiC,EAAO+oE,EAASC,GAClD,MAAM3nE,EAAMrS,KAAK4P,IAAI5P,KAAKqS,IAAIrB,IACxBsC,EAAMtT,KAAK4P,IAAI5P,KAAKsT,IAAItC,IAC9B,IAAIvB,EAAI,EACJC,EAAI,EACJqqE,EAAQvvE,MAAQgpC,EAAK15C,GACvB2V,GAAK+jC,EAAK15C,EAAIigF,EAAQvvE,OAAS6H,EAC/BgnE,EAAOv/E,EAAIkG,KAAKkQ,IAAImpE,EAAOv/E,EAAG05C,EAAK15C,EAAI2V,IAC9BsqE,EAAQtvE,IAAM+oC,EAAK59B,IAC5BnG,GAAKsqE,EAAQtvE,IAAM+oC,EAAK59B,GAAKvD,EAC7BgnE,EAAOzjE,EAAI5V,KAAKmQ,IAAIkpE,EAAOzjE,EAAG49B,EAAK59B,EAAInG,IAErCuqE,EAAQxvE,MAAQgpC,EAAKrhC,GACvBzC,GAAK8jC,EAAKrhC,EAAI6nE,EAAQxvE,OAAS8I,EAC/B+lE,EAAOlnE,EAAInS,KAAKkQ,IAAImpE,EAAOlnE,EAAGqhC,EAAKrhC,EAAIzC,IAC9BsqE,EAAQvvE,IAAM+oC,EAAK9qC,IAC5BgH,GAAKsqE,EAAQvvE,IAAM+oC,EAAK9qC,GAAK4K,EAC7B+lE,EAAO3wE,EAAI1I,KAAKmQ,IAAIkpE,EAAO3wE,EAAG8qC,EAAK9qC,EAAIgH,IAG3C,SAAS0qE,GAAqBhzD,EAAOwoC,EAAYrN,GAC/C,MAAMrxB,EAAQ,GACRooD,EAAalyD,EAAMmyD,aAAax/E,OAChCwN,EAAO6f,EAAM12B,QACb2pF,EAAQpB,GAAsB1xE,GAAQ,EACtC+yE,EAAgBlzD,EAAMyyD,YACtBJ,EAAkBlyE,EAAK60C,YAAYs9B,kBAAoB1rE,EAAKsrE,EAAa,EAC/E,IAAK,IAAIz/E,EAAI,EAAGA,EAAIy/E,EAAYz/E,IAAK,CACnC,MAAM0gF,EAAqBnzD,EAAMwyD,iBAAiB//E,EAAGygF,EAAgBD,EAAQ93B,EAAQ1oD,GAAI4/E,GACnFzoE,EAAQhR,KAAK8O,MAAMwB,GAAUiB,GAAgBgpE,EAAmBvpE,MAAQ1C,KACxEV,EAAOgiD,EAAW/1D,GAClB6V,EAAI8qE,GAAUD,EAAmB7qE,EAAG9B,EAAK/b,EAAGmf,GAC5Cuc,EAAYktD,GAAqBzpE,GACjCrG,EAAO+vE,GAAiBH,EAAmB9qE,EAAG7B,EAAK0I,EAAGiX,GAC5D2D,EAAM52B,KAAK,CACTmV,EAAG8qE,EAAmB9qE,EACtBC,EAAAA,EACA6d,UAAAA,EACA5iB,KAAAA,EACA+gB,IAAKhc,EACL9E,MAAOD,EAAOiD,EAAK0I,EACnBqV,OAAQjc,EAAI9B,EAAK/b,IAGrB,OAAOq/B,EAET,SAASupD,GAAqBzpE,GAC5B,OAAc,IAAVA,GAAyB,MAAVA,EACV,SACEA,EAAQ,IACV,OAEF,QAET,SAAS0pE,GAAiBjrE,EAAG6G,EAAGhM,GAM9B,MALc,UAAVA,EACFmF,GAAK6G,EACc,WAAVhM,IACTmF,GAAM6G,EAAI,GAEL7G,EAET,SAAS+qE,GAAU9qE,EAAG7d,EAAGmf,GAMvB,OALc,KAAVA,GAA0B,MAAVA,EAClBtB,GAAM7d,EAAI,GACDmf,EAAQ,KAAOA,EAAQ,MAChCtB,GAAK7d,GAEA6d,EAET,SAASirE,GAAgBvzD,EAAOyuD,GAC9B,MAAM,IAACvvD,EAAK51B,SAAS,YAAC0rD,IAAgBh1B,EACtC,IAAK,IAAIvtB,EAAIg8E,EAAa,EAAGh8E,GAAK,EAAGA,IAAK,CACxC,MAAMu5D,EAAchX,EAAYjpB,WAAW/L,EAAMuyD,qBAAqB9/E,IAChEigF,EAAS7qD,GAAOmkC,EAAYptC,OAC5B,EAACvW,EAAC,EAAEC,EAAC,UAAE6d,EAAS,KAAE5iB,EAAI,IAAE+gB,EAAG,MAAE9gB,EAAK,OAAE+gB,GAAUvE,EAAM+yD,iBAAiBtgF,IACrE,cAACgxD,GAAiBuI,EACxB,IAAKnoD,EAAc4/C,GAAgB,CACjC,MAAM+X,EAAe7zC,GAAcqkC,EAAYwP,cACzCrgB,EAAUvzB,GAAUokC,EAAYtI,iBACtCxkC,EAAIgH,UAAYu9B,EAChB,MAAM+vB,EAAejwE,EAAO43C,EAAQ53C,KAC9BkwE,EAAcnvD,EAAM62B,EAAQ72B,IAC5BovD,EAAgBlwE,EAAQD,EAAO43C,EAAQx5B,MACvCgyD,EAAiBpvD,EAASD,EAAM62B,EAAQt4B,OAC1C1sB,OAAO4nB,OAAOy9C,GAAcrK,MAAK31D,GAAW,IAANA,KACxC0jB,EAAIsE,YACJsD,GAAmB5H,EAAK,CACtB7W,EAAGmrE,EACHlrE,EAAGmrE,EACHvkE,EAAGwkE,EACHjpF,EAAGkpF,EACHvwD,OAAQo4C,IAEVt8C,EAAI6E,QAEJ7E,EAAI+tC,SAASumB,EAAcC,EAAaC,EAAeC,GAG3DtuD,GACEnG,EACAc,EAAMmyD,aAAa1/E,GACnB4V,EACAC,EAAKoqE,EAAO3zD,WAAa,EACzB2zD,EACA,CACEl2D,MAAOwvC,EAAYxvC,MACnB2J,UAAWA,EACXC,aAAc,YAKtB,SAASwtD,GAAe5zD,EAAOoD,EAAQ2xB,EAAU05B,GAC/C,MAAM,IAACvvD,GAAOc,EACd,GAAI+0B,EACF71B,EAAIuE,IAAIzD,EAAMq0B,QAASr0B,EAAMs0B,QAASlxB,EAAQ,EAAGvc,OAC5C,CACL,IAAIsuC,EAAgBn1B,EAAMwyD,iBAAiB,EAAGpvD,GAC9ClE,EAAIyE,OAAOwxB,EAAc9sC,EAAG8sC,EAAc7sC,GAC1C,IAAK,IAAI7V,EAAI,EAAGA,EAAIg8E,EAAYh8E,IAC9B0iD,EAAgBn1B,EAAMwyD,iBAAiB//E,EAAG2wB,GAC1ClE,EAAI0E,OAAOuxB,EAAc9sC,EAAG8sC,EAAc7sC,IAIhD,SAASurE,GAAe7zD,EAAO8zD,EAAc1wD,EAAQqrD,GACnD,MAAMvvD,EAAMc,EAAMd,IACZ61B,EAAW++B,EAAa/+B,UACxB,MAACv4B,EAAK,UAAEoJ,GAAakuD,GACrB/+B,IAAa05B,IAAgBjyD,IAAUoJ,GAAaxC,EAAS,IAGnElE,EAAI6C,OACJ7C,EAAIyG,YAAcnJ,EAClB0C,EAAI0G,UAAYA,EAChB1G,EAAImuC,YAAYymB,EAAax6C,YAC7Bpa,EAAIouC,eAAiBwmB,EAAav6C,iBAClCra,EAAIsE,YACJowD,GAAe5zD,EAAOoD,EAAQ2xB,EAAU05B,GACxCvvD,EAAIwE,YACJxE,EAAI+E,SACJ/E,EAAIgD,WAEN,SAAS6xD,GAAwBjqF,EAAQqJ,EAAOwzC,GAC9C,OAAOne,GAAc1+B,EAAQ,CAC3B68C,MAAAA,EACAxzC,MAAAA,EACA7C,KAAM,eAhOVqhF,GAAiB56E,GAAK,cACtB46E,GAAiB3gF,SAAW,CAC1Bg5C,MAAO,CACLvrC,SAAUsiD,GAAMX,WAAWU,YAC3BQ,MAAO,CACLC,SAAS,KA8Nf,MAAMyyB,WAA0B3D,GAC9B1vE,YAAYk7B,GACV8Q,MAAM9Q,GACNlyC,KAAK0qD,aAAU5kD,EACf9F,KAAK2qD,aAAU7kD,EACf9F,KAAK8oF,iBAAchjF,EACnB9F,KAAKwoF,aAAe,GACpBxoF,KAAKopF,iBAAmB,GAE1BpsB,gBACE,MAAMxL,EAAUxxD,KAAKu8E,SAAWt+C,GAAUiqD,GAAsBloF,KAAKL,SAAW,GAC1E4lB,EAAIvlB,KAAKg4B,MAAQh4B,KAAKm8B,SAAWq1B,EAAQx5B,MACzCl3B,EAAId,KAAKk5B,OAASl5B,KAAKmpC,UAAYqoB,EAAQt4B,OACjDl5B,KAAK0qD,QAAUz7C,KAAKC,MAAMlP,KAAK4Z,KAAO2L,EAAI,EAAIisC,EAAQ53C,MACtD5Z,KAAK2qD,QAAU17C,KAAKC,MAAMlP,KAAK26B,IAAM75B,EAAI,EAAI0wD,EAAQ72B,KACrD36B,KAAK8oF,YAAc75E,KAAKC,MAAMD,KAAKkQ,IAAIoG,EAAGzkB,GAAK,GAEjDq8D,sBACE,MAAM,IAACh+C,EAAG,IAAEC,GAAOpf,KAAKw8C,WAAU,GAClCx8C,KAAKmf,IAAMhF,EAAegF,KAASV,MAAMU,GAAOA,EAAM,EACtDnf,KAAKof,IAAMjF,EAAeiF,KAASX,MAAMW,GAAOA,EAAM,EACtDpf,KAAK4mF,yBAEPS,mBACE,OAAOp4E,KAAK2pD,KAAK54D,KAAK8oF,YAAcZ,GAAsBloF,KAAKL,UAEjE6+D,mBAAmBne,GACjBqmC,GAAgBj/E,UAAU+2D,mBAAmBn+D,KAAKL,KAAMqgD,GACxDrgD,KAAKwoF,aAAexoF,KAAK+7C,YACtBtgC,KAAI,CAACrX,EAAOoF,KACX,MAAMwzC,EAAQloC,EAAS9U,KAAKL,QAAQ0rD,YAAYv2C,SAAU,CAAC1Q,EAAOoF,GAAQxJ,MAC1E,OAAOg9C,GAAmB,IAAVA,EAAcA,EAAQ,MAEvC7kC,QAAO,CAACtG,EAAG/I,IAAM9I,KAAK40B,MAAMwvB,kBAAkBt7C,KAEnDi1D,MACE,MAAMvnD,EAAOxW,KAAKL,QACd6W,EAAK20C,SAAW30C,EAAK60C,YAAYF,QACnCk9B,GAAmBroF,MAEnBA,KAAKmpF,eAAe,EAAG,EAAG,EAAG,GAGjCA,eAAemB,EAAcC,EAAeC,EAAaC,GACvDzqF,KAAK0qD,SAAWz7C,KAAKC,OAAOo7E,EAAeC,GAAiB,GAC5DvqF,KAAK2qD,SAAW17C,KAAKC,OAAOs7E,EAAcC,GAAkB,GAC5DzqF,KAAK8oF,aAAe75E,KAAKkQ,IAAInf,KAAK8oF,YAAc,EAAG75E,KAAKmQ,IAAIkrE,EAAcC,EAAeC,EAAaC,IAExG5/B,cAAcrhD,GACZ,MAAMkhF,EAAkBxtE,GAAOld,KAAKwoF,aAAax/E,QAAU,GACrDy8C,EAAazlD,KAAKL,QAAQ8lD,YAAc,EAC9C,OAAOjlC,GAAgBhX,EAAQkhF,EAAkBrrE,EAAUomC,IAE7DwF,8BAA8B7mD,GAC5B,GAAI8V,EAAc9V,GAChB,OAAOm4C,IAET,MAAMouC,EAAgB3qF,KAAK8oF,aAAe9oF,KAAKof,IAAMpf,KAAKmf,KAC1D,OAAInf,KAAKL,QAAQob,SACP/a,KAAKof,IAAMhb,GAASumF,GAEtBvmF,EAAQpE,KAAKmf,KAAOwrE,EAE9BC,8BAA8BzqE,GAC5B,GAAIjG,EAAciG,GAChB,OAAOo8B,IAET,MAAMsuC,EAAiB1qE,GAAYngB,KAAK8oF,aAAe9oF,KAAKof,IAAMpf,KAAKmf,MACvE,OAAOnf,KAAKL,QAAQob,QAAU/a,KAAKof,IAAMyrE,EAAiB7qF,KAAKmf,IAAM0rE,EAEvEjC,qBAAqBp/E,GACnB,MAAM6hD,EAAcrrD,KAAKwoF,cAAgB,GACzC,GAAIh/E,GAAS,GAAKA,EAAQ6hD,EAAYriD,OAAQ,CAC5C,MAAM8hF,EAAaz/B,EAAY7hD,GAC/B,OAAO4gF,GAAwBpqF,KAAK+4B,aAAcvvB,EAAOshF,IAG7DjC,iBAAiBr/E,EAAOuhF,EAAoBrC,EAAkB,GAC5D,MAAMzoE,EAAQjgB,KAAK6qD,cAAcrhD,GAAS+T,EAAUmrE,EACpD,MAAO,CACLhqE,EAAGzP,KAAKsT,IAAItC,GAAS8qE,EAAqB/qF,KAAK0qD,QAC/C/rC,EAAG1P,KAAKqS,IAAIrB,GAAS8qE,EAAqB/qF,KAAK2qD,QAC/C1qC,MAAAA,GAGJwrC,yBAAyBjiD,EAAOpF,GAC9B,OAAOpE,KAAK6oF,iBAAiBr/E,EAAOxJ,KAAKirD,8BAA8B7mD,IAEzE4mF,gBAAgBxhF,GACd,OAAOxJ,KAAKyrD,yBAAyBjiD,GAAS,EAAGxJ,KAAK+gE,gBAExDkqB,sBAAsBzhF,GACpB,MAAM,KAACoQ,EAAI,IAAE+gB,EAAG,MAAE9gB,EAAK,OAAE+gB,GAAU56B,KAAKopF,iBAAiB5/E,GACzD,MAAO,CACLoQ,KAAAA,EACA+gB,IAAAA,EACA9gB,MAAAA,EACA+gB,OAAAA,GAGJyoC,iBACE,MAAM,gBAAC7uC,EAAiBywB,MAAM,SAACmG,IAAaprD,KAAKL,QACjD,GAAI60B,EAAiB,CACnB,MAAMe,EAAMv1B,KAAKu1B,IACjBA,EAAI6C,OACJ7C,EAAIsE,YACJowD,GAAejqF,KAAMA,KAAKirD,8BAA8BjrD,KAAK2mF,WAAYv7B,EAAUprD,KAAKwoF,aAAax/E,QACrGusB,EAAIwE,YACJxE,EAAIgH,UAAY/H,EAChBe,EAAI6E,OACJ7E,EAAIgD,WAGRirC,WACE,MAAMjuC,EAAMv1B,KAAKu1B,IACX/e,EAAOxW,KAAKL,SACZ,WAACurD,EAAU,KAAEjG,GAAQzuC,EACrBsuE,EAAa9kF,KAAKwoF,aAAax/E,OACrC,IAAIF,EAAGk8C,EAAQzsC,EAaf,GAZI/B,EAAK60C,YAAYF,SACnBy+B,GAAgB5pF,KAAM8kF,GAEpB7/B,EAAKkG,SACPnrD,KAAKqgD,MAAMr6C,SAAQ,CAACkrC,EAAM1nC,KACxB,GAAc,IAAVA,EAAa,CACfw7C,EAAShlD,KAAKirD,8BAA8B/Z,EAAK9sC,OACjD,MAAMi+D,EAAcpd,EAAK7iB,WAAWpiC,KAAK+4B,WAAWvvB,EAAQ,IAC5D0gF,GAAelqF,KAAMqiE,EAAard,EAAQ8/B,OAI5C55B,EAAWC,QAAS,CAEtB,IADA51B,EAAI6C,OACCtvB,EAAIg8E,EAAa,EAAGh8E,GAAK,EAAGA,IAAK,CACpC,MAAMu5D,EAAcnX,EAAW9oB,WAAWpiC,KAAK4oF,qBAAqB9/E,KAC9D,MAAC+pB,EAAK,UAAEoJ,GAAaomC,EACtBpmC,GAAcpJ,IAGnB0C,EAAI0G,UAAYA,EAChB1G,EAAIyG,YAAcnJ,EAClB0C,EAAImuC,YAAYrB,EAAY1yB,YAC5Bpa,EAAIouC,eAAiBtB,EAAYzyB,iBACjCoV,EAAShlD,KAAKirD,8BAA8Bz0C,EAAK6pC,MAAMtlC,QAAU/a,KAAKmf,IAAMnf,KAAKof,KACjF7G,EAAWvY,KAAK6oF,iBAAiB//E,EAAGk8C,GACpCzvB,EAAIsE,YACJtE,EAAIyE,OAAOh6B,KAAK0qD,QAAS1qD,KAAK2qD,SAC9Bp1B,EAAI0E,OAAO1hB,EAASmG,EAAGnG,EAASoG,GAChC4W,EAAI+E,UAEN/E,EAAIgD,WAGRwgC,cACA8K,aACE,MAAMtuC,EAAMv1B,KAAKu1B,IACX/e,EAAOxW,KAAKL,QACZ23D,EAAW9gD,EAAK6pC,MACtB,IAAKiX,EAASnM,QACZ,OAEF,MAAM1F,EAAazlD,KAAK6qD,cAAc,GACtC,IAAI7F,EAAQhtB,EACZzC,EAAI6C,OACJ7C,EAAIoE,UAAU35B,KAAK0qD,QAAS1qD,KAAK2qD,SACjCp1B,EAAIpP,OAAOs/B,GACXlwB,EAAIiH,UAAY,SAChBjH,EAAIkH,aAAe,SACnBz8B,KAAKqgD,MAAMr6C,SAAQ,CAACkrC,EAAM1nC,KACxB,GAAc,IAAVA,IAAgBgN,EAAKuE,QACvB,OAEF,MAAMsnD,EAAc/K,EAASl1B,WAAWpiC,KAAK+4B,WAAWvvB,IAClD62D,EAAWniC,GAAOmkC,EAAYptC,MAEpC,GADA+vB,EAAShlD,KAAKirD,8BAA8BjrD,KAAKqgD,MAAM72C,GAAOpF,OAC1Di+D,EAAYxI,kBAAmB,CACjCtkC,EAAIN,KAAOorC,EAASxoC,OACpBG,EAAQzC,EAAIwC,YAAYmZ,EAAK8L,OAAOhlB,MACpCzC,EAAIgH,UAAY8lC,EAAYvI,cAC5B,MAAMtI,EAAUvzB,GAAUokC,EAAYtI,iBACtCxkC,EAAI+tC,UACDtrC,EAAQ,EAAIw5B,EAAQ53C,MACpBorC,EAASqb,EAASxjD,KAAO,EAAI20C,EAAQ72B,IACtC3C,EAAQw5B,EAAQx5B,MAChBqoC,EAASxjD,KAAO20C,EAAQt4B,QAG5BwC,GAAWnG,EAAK2b,EAAK8L,MAAO,GAAIgI,EAAQqb,EAAU,CAChDxtC,MAAOwvC,EAAYxvC,WAGvB0C,EAAIgD,UAENurC,cAEFumB,GAAkBj9E,GAAK,eACvBi9E,GAAkBhjF,SAAW,CAC3B8jD,SAAS,EACT+/B,SAAS,EACT3yE,SAAU,YACV2yC,WAAY,CACVC,SAAS,EACTlvB,UAAW,EACX0T,WAAY,GACZC,iBAAkB,GAEpBqV,KAAM,CACJmG,UAAU,GAEZ3F,WAAY,EACZpF,MAAO,CACLwZ,mBAAmB,EACnB/kD,SAAUsiD,GAAMX,WAAWC,SAE7BrL,YAAa,CACXyO,mBAAeh0D,EACfi0D,gBAAiB,EACjB5O,SAAS,EACTl2B,KAAM,CACJpY,KAAM,IAER/H,SAASkoC,GACP,OAAOA,GAETwU,QAAS,EACTm3B,mBAAmB,IAGvB0B,GAAkB7zB,cAAgB,CAChC,mBAAoB,cACpB,oBAAqB,QACrB,cAAe,SAEjB6zB,GAAkB99E,YAAc,CAC9B2+C,WAAY,CACV1zB,UAAW,SAIf,MAAM2zD,GAAY,CAChBC,YAAa,CAACv9E,QAAQ,EAAMgP,KAAM,EAAGwuE,MAAO,KAC5CC,OAAQ,CAACz9E,QAAQ,EAAMgP,KAAM,IAAMwuE,MAAO,IAC1CE,OAAQ,CAAC19E,QAAQ,EAAMgP,KAAM,IAAOwuE,MAAO,IAC3CG,KAAM,CAAC39E,QAAQ,EAAMgP,KAAM,KAASwuE,MAAO,IAC3CI,IAAK,CAAC59E,QAAQ,EAAMgP,KAAM,MAAUwuE,MAAO,IAC3CK,KAAM,CAAC79E,QAAQ,EAAOgP,KAAM,OAAWwuE,MAAO,GAC9CM,MAAO,CAAC99E,QAAQ,EAAMgP,KAAM,OAASwuE,MAAO,IAC5CO,QAAS,CAAC/9E,QAAQ,EAAOgP,KAAM,OAASwuE,MAAO,GAC/CQ,KAAM,CAACh+E,QAAQ,EAAMgP,KAAM,SAEvBivE,GAASt/E,OAAOqC,KAAKs8E,IAC3B,SAASY,GAAOr0E,EAAGC,GACjB,OAAOD,EAAIC,EAEb,SAAS3H,GAAMqmB,EAAO/D,GACpB,GAAIpY,EAAcoY,GAChB,OAAO,KAET,MAAMxkB,EAAUuoB,EAAM21D,UAChB,OAACp8E,EAAM,MAAEmO,EAAK,WAAEkuE,GAAc51D,EAAM61D,WAC1C,IAAI9nF,EAAQkuB,EASZ,MARsB,oBAAX1iB,IACTxL,EAAQwL,EAAOxL,IAEZ+V,EAAe/V,KAClBA,EAA0B,kBAAXwL,EACX9B,EAAQkC,MAAM5L,EAAOwL,GACrB9B,EAAQkC,MAAM5L,IAEN,OAAVA,EACK,MAEL2Z,IACF3Z,EAAkB,SAAV2Z,IAAqBtL,EAASw5E,KAA8B,IAAfA,EAEjDn+E,EAAQm+C,QAAQ7nD,EAAO2Z,GADvBjQ,EAAQm+C,QAAQ7nD,EAAO,UAAW6nF,KAGhC7nF,GAEV,SAAS+nF,GAA0BC,EAASjtE,EAAKC,EAAKitE,GACpD,MAAMjxE,EAAO0wE,GAAM9iF,OACnB,IAAK,IAAIF,EAAIgjF,GAAM/mF,QAAQqnF,GAAUtjF,EAAIsS,EAAO,IAAKtS,EAAG,CACtD,MAAMwjF,EAAWnB,GAAUW,GAAMhjF,IAC3BipC,EAASu6C,EAASjB,MAAQiB,EAASjB,MAAQjxE,OAAO6sE,iBACxD,GAAIqF,EAASz+E,QAAUoB,KAAK2pD,MAAMx5C,EAAMD,IAAQ4yB,EAASu6C,EAASzvE,QAAUwvE,EAC1E,OAAOP,GAAMhjF,GAGjB,OAAOgjF,GAAM1wE,EAAO,GAEtB,SAASmxE,GAA2Bl2D,EAAOqoC,EAAU0tB,EAASjtE,EAAKC,GACjE,IAAK,IAAItW,EAAIgjF,GAAM9iF,OAAS,EAAGF,GAAKgjF,GAAM/mF,QAAQqnF,GAAUtjF,IAAK,CAC/D,MAAMijD,EAAO+/B,GAAMhjF,GACnB,GAAIqiF,GAAUp/B,GAAMl+C,QAAUwoB,EAAM21D,SAAShgC,KAAK5sC,EAAKD,EAAK4sC,IAAS2S,EAAW,EAC9E,OAAO3S,EAGX,OAAO+/B,GAAMM,EAAUN,GAAM/mF,QAAQqnF,GAAW,GAElD,SAASI,GAAmBzgC,GAC1B,IAAK,IAAIjjD,EAAIgjF,GAAM/mF,QAAQgnD,GAAQ,EAAG3wC,EAAO0wE,GAAM9iF,OAAQF,EAAIsS,IAAQtS,EACrE,GAAIqiF,GAAUW,GAAMhjF,IAAI+E,OACtB,OAAOi+E,GAAMhjF,GAInB,SAAS2jF,GAAQpsC,EAAOqsC,EAAMC,GAC5B,GAAKA,GAEE,GAAIA,EAAW3jF,OAAQ,CAC5B,MAAM,GAACo2B,EAAE,GAAED,GAAMJ,GAAQ4tD,EAAYD,GAC/B7gC,EAAY8gC,EAAWvtD,IAAOstD,EAAOC,EAAWvtD,GAAMutD,EAAWxtD,GACvEkhB,EAAMwL,IAAa,QAJnBxL,EAAMqsC,IAAQ,EAOlB,SAASE,GAAcv2D,EAAOgqB,EAAO5kC,EAAKoxE,GACxC,MAAM/+E,EAAUuoB,EAAM21D,SAChBj0B,GAASjqD,EAAQm+C,QAAQ5L,EAAM,GAAGj8C,MAAOyoF,GACzC1+C,EAAOkS,EAAMA,EAAMr3C,OAAS,GAAG5E,MACrC,IAAIuzD,EAAOnuD,EACX,IAAKmuD,EAAQI,EAAOJ,GAASxpB,EAAMwpB,GAAS7pD,EAAQvN,IAAIo3D,EAAO,EAAGk1B,GAChErjF,EAAQiS,EAAIk8C,GACRnuD,GAAS,IACX62C,EAAM72C,GAAOmuD,OAAQ,GAGzB,OAAOtX,EAET,SAASysC,GAAoBz2D,EAAOjC,EAAQy4D,GAC1C,MAAMxsC,EAAQ,GACR5kC,EAAM,GACNL,EAAOgZ,EAAOprB,OACpB,IAAIF,EAAG1E,EACP,IAAK0E,EAAI,EAAGA,EAAIsS,IAAQtS,EACtB1E,EAAQgwB,EAAOtrB,GACf2S,EAAIrX,GAAS0E,EACbu3C,EAAM92C,KAAK,CACTnF,MAAAA,EACAuzD,OAAO,IAGX,OAAiB,IAATv8C,GAAeyxE,EAAqBD,GAAcv2D,EAAOgqB,EAAO5kC,EAAKoxE,GAAzCxsC,EAEtC,MAAM0sC,WAAkB5xB,GACtBnkD,YAAYgB,GACVgrC,MAAMhrC,GACNhY,KAAK6/C,OAAS,CACZx9C,KAAM,GACNy5C,OAAQ,GACR3zC,IAAK,IAEPnI,KAAKgtF,MAAQ,MACbhtF,KAAKitF,gBAAannF,EAClB9F,KAAKktF,SAAW,GAChBltF,KAAKmtF,aAAc,EACnBntF,KAAKksF,gBAAapmF,EAEpBw2D,KAAK+Q,EAAW72D,GACd,MAAMk2E,EAAOrf,EAAUqf,OAASrf,EAAUqf,KAAO,IAC3C5+E,EAAU9N,KAAKgsF,SAAW,IAAI3/B,GAASC,MAAM+gB,EAAUhhB,SAAShc,MACtEn0B,EAAQwwE,EAAKU,eAAgBt/E,EAAQ89C,WACrC5rD,KAAKksF,WAAa,CAChBt8E,OAAQ88E,EAAK98E,OACbmO,MAAO2uE,EAAK3uE,MACZkuE,WAAYS,EAAKT,YAEnBjpC,MAAMsZ,KAAK+Q,GACXrtE,KAAKmtF,YAAc32E,EAAK62E,WAE1Br9E,MAAM4nC,EAAKpuC,GACT,YAAY1D,IAAR8xC,EACK,KAEF5nC,GAAMhQ,KAAM43C,GAErBsa,eACElP,MAAMkP,eACNlyD,KAAK6/C,OAAS,CACZx9C,KAAM,GACNy5C,OAAQ,GACR3zC,IAAK,IAGTg1D,sBACE,MAAMx9D,EAAUK,KAAKL,QACfmO,EAAU9N,KAAKgsF,SACfjgC,EAAOpsD,EAAQ+sF,KAAK3gC,MAAQ,MAClC,IAAI,IAAC5sC,EAAG,IAAEC,EAAG,WAAE62B,EAAU,WAAEC,GAAcl2C,KAAKg2C,gBAC9C,SAASs3C,EAAangD,GACf8I,GAAex3B,MAAM0uB,EAAOhuB,OAC/BA,EAAMlQ,KAAKkQ,IAAIA,EAAKguB,EAAOhuB,MAExB+2B,GAAez3B,MAAM0uB,EAAO/tB,OAC/BA,EAAMnQ,KAAKmQ,IAAIA,EAAK+tB,EAAO/tB,MAG1B62B,GAAeC,IAClBo3C,EAAattF,KAAKutF,mBACK,UAAnB5tF,EAAQwtC,QAA+C,WAAzBxtC,EAAQ0gD,MAAM32C,QAC9C4jF,EAAattF,KAAKw8C,WAAU,KAGhCr9B,EAAMhF,EAAegF,KAASV,MAAMU,GAAOA,GAAOrR,EAAQm+C,QAAQv5C,KAAKO,MAAO84C,GAC9E3sC,EAAMjF,EAAeiF,KAASX,MAAMW,GAAOA,GAAOtR,EAAQq+C,MAAMz5C,KAAKO,MAAO84C,GAAQ,EACpF/rD,KAAKmf,IAAMlQ,KAAKkQ,IAAIA,EAAKC,EAAM,GAC/Bpf,KAAKof,IAAMnQ,KAAKmQ,IAAID,EAAM,EAAGC,GAE/BmuE,kBACE,MAAMx4E,EAAM/U,KAAKwtF,qBACjB,IAAIruE,EAAM/E,OAAOiD,kBACb+B,EAAMhF,OAAO+7B,kBAKjB,OAJIphC,EAAI/L,SACNmW,EAAMpK,EAAI,GACVqK,EAAMrK,EAAIA,EAAI/L,OAAS,IAElB,CAACmW,IAAAA,EAAKC,IAAAA,GAEfk+C,aACE,MAAM39D,EAAUK,KAAKL,QACf8tF,EAAW9tF,EAAQ+sF,KACnBp1B,EAAW33D,EAAQ0gD,MACnBssC,EAAiC,WAApBr1B,EAAS5tD,OAAsB1J,KAAKwtF,qBAAuBxtF,KAAK0tF,YAC5D,UAAnB/tF,EAAQwtC,QAAsBw/C,EAAW3jF,SAC3ChJ,KAAKmf,IAAMnf,KAAKg8D,UAAY2wB,EAAW,GACvC3sF,KAAKof,IAAMpf,KAAK+7D,UAAY4wB,EAAWA,EAAW3jF,OAAS,IAE7D,MAAMmW,EAAMnf,KAAKmf,IACXC,EAAMpf,KAAKof,IACXihC,EAAQ9gB,GAAeotD,EAAYxtE,EAAKC,GAU9C,OATApf,KAAKgtF,MAAQS,EAAS1hC,OAASuL,EAASD,SACpC80B,GAA0BsB,EAASrB,QAASpsF,KAAKmf,IAAKnf,KAAKof,IAAKpf,KAAK2tF,kBAAkBxuE,IACvFotE,GAA2BvsF,KAAMqgD,EAAMr3C,OAAQykF,EAASrB,QAASpsF,KAAKmf,IAAKnf,KAAKof,MACpFpf,KAAKitF,WAAc31B,EAASK,MAAMC,SAA0B,SAAf53D,KAAKgtF,MAC9CR,GAAmBxsF,KAAKgtF,YADyClnF,EAErE9F,KAAK4tF,YAAYjB,GACbhtF,EAAQob,SACVslC,EAAMtlC,UAED+xE,GAAoB9sF,KAAMqgD,EAAOrgD,KAAKitF,YAE/CpvB,gBACM79D,KAAKL,QAAQkuF,qBACf7tF,KAAK4tF,YAAY5tF,KAAKqgD,MAAM5kC,KAAIy1B,IAASA,EAAK9sC,SAGlDwpF,YAAYjB,GACV,IAEI50B,EAAO5pB,EAFP10B,EAAQ,EACRC,EAAM,EAEN1Z,KAAKL,QAAQqlD,QAAU2nC,EAAW3jF,SACpC+uD,EAAQ/3D,KAAK8tF,mBAAmBnB,EAAW,IAEzClzE,EADwB,IAAtBkzE,EAAW3jF,OACL,EAAI+uD,GAEH/3D,KAAK8tF,mBAAmBnB,EAAW,IAAM50B,GAAS,EAE7D5pB,EAAOnuC,KAAK8tF,mBAAmBnB,EAAWA,EAAW3jF,OAAS,IAE5D0Q,EADwB,IAAtBizE,EAAW3jF,OACPmlC,GAECA,EAAOnuC,KAAK8tF,mBAAmBnB,EAAWA,EAAW3jF,OAAS,KAAO,GAGhF,MAAMm5D,EAAQwqB,EAAW3jF,OAAS,EAAI,GAAM,IAC5CyQ,EAAQuH,GAAYvH,EAAO,EAAG0oD,GAC9BzoD,EAAMsH,GAAYtH,EAAK,EAAGyoD,GAC1BniE,KAAKktF,SAAW,CAACzzE,MAAAA,EAAOC,IAAAA,EAAKq4B,OAAQ,GAAKt4B,EAAQ,EAAIC,IAExDg0E,YACE,MAAM5/E,EAAU9N,KAAKgsF,SACf7sE,EAAMnf,KAAKmf,IACXC,EAAMpf,KAAKof,IACXzf,EAAUK,KAAKL,QACf8tF,EAAW9tF,EAAQ+sF,KACnB/yB,EAAQ8zB,EAAS1hC,MAAQogC,GAA0BsB,EAASrB,QAASjtE,EAAKC,EAAKpf,KAAK2tF,kBAAkBxuE,IACtGioE,EAAW5sE,EAAeizE,EAASrG,SAAU,GAC7Cl7B,EAAoB,SAAVyN,GAAmB8zB,EAASxB,WACtC8B,EAAat7E,EAASy5C,KAAwB,IAAZA,EAClC7L,EAAQ,GACd,IACIqsC,EAAM1oD,EADN+zB,EAAQ54C,EAMZ,GAJI4uE,IACFh2B,GAASjqD,EAAQm+C,QAAQ8L,EAAO,UAAW7L,IAE7C6L,GAASjqD,EAAQm+C,QAAQ8L,EAAOg2B,EAAa,MAAQp0B,GACjD7rD,EAAQk+C,KAAK5sC,EAAKD,EAAKw6C,GAAS,IAASytB,EAC3C,MAAM,IAAIr7E,MAAMoT,EAAM,QAAUC,EAAM,uCAAyCgoE,EAAW,IAAMztB,GAElG,MAAMgzB,EAAsC,SAAzBhtF,EAAQ0gD,MAAM32C,QAAqB1J,KAAKguF,oBAC3D,IAAKtB,EAAO30B,EAAO/zB,EAAQ,EAAG0oD,EAAOttE,EAAKstE,GAAQ5+E,EAAQvN,IAAImsF,EAAMtF,EAAUztB,GAAQ31B,IACpFyoD,GAAQpsC,EAAOqsC,EAAMC,GAKvB,OAHID,IAASttE,GAA0B,UAAnBzf,EAAQwtC,QAAgC,IAAVnJ,GAChDyoD,GAAQpsC,EAAOqsC,EAAMC,GAEhBngF,OAAOqC,KAAKwxC,GAAO9hC,MAAK,CAAC7G,EAAGC,IAAMD,EAAIC,IAAG8D,KAAIiD,IAAMA,IAE5Du+B,iBAAiB74C,GACf,MAAM0J,EAAU9N,KAAKgsF,SACfyB,EAAWztF,KAAKL,QAAQ+sF,KAC9B,OAAIe,EAASQ,cACJngF,EAAQ69B,OAAOvnC,EAAOqpF,EAASQ,eAEjCngF,EAAQ69B,OAAOvnC,EAAOqpF,EAASL,eAAec,UAEvDC,oBAAoBzB,EAAMljF,EAAO62C,EAAO1U,GACtC,MAAMhsC,EAAUK,KAAKL,QACfisD,EAAUjsD,EAAQ+sF,KAAKU,eACvBrhC,EAAO/rD,KAAKgtF,MACZH,EAAY7sF,KAAKitF,WACjBmB,EAAcriC,GAAQH,EAAQG,GAC9BsiC,EAAcxB,GAAajhC,EAAQihC,GACnC37C,EAAOmP,EAAM72C,GACbmuD,EAAQk1B,GAAawB,GAAen9C,GAAQA,EAAKymB,MACjD3a,EAAQh9C,KAAKgsF,SAASrgD,OAAO+gD,EAAM/gD,IAAWgsB,EAAQ02B,EAAcD,IACpE9iD,EAAY3rC,EAAQ0gD,MAAMvrC,SAChC,OAAOw2B,EAAYx2B,EAASw2B,EAAW,CAAC0R,EAAOxzC,EAAO62C,GAAQrgD,MAAQg9C,EAExEwhB,mBAAmBne,GACjB,IAAIv3C,EAAGsS,EAAM81B,EACb,IAAKpoC,EAAI,EAAGsS,EAAOilC,EAAMr3C,OAAQF,EAAIsS,IAAQtS,EAC3CooC,EAAOmP,EAAMv3C,GACbooC,EAAK8L,MAAQh9C,KAAKmuF,oBAAoBj9C,EAAK9sC,MAAO0E,EAAGu3C,GAGzDytC,mBAAmB1pF,GACjB,OAAiB,OAAVA,EAAiBm4C,KAAOn4C,EAAQpE,KAAKmf,MAAQnf,KAAKof,IAAMpf,KAAKmf,KAEtEihC,iBAAiBh8C,GACf,MAAMkqF,EAAUtuF,KAAKktF,SACfzwE,EAAMzc,KAAK8tF,mBAAmB1pF,GACpC,OAAOpE,KAAKskD,oBAAoBgqC,EAAQ70E,MAAQgD,GAAO6xE,EAAQv8C,QAEjE6uB,iBAAiBloC,GACf,MAAM41D,EAAUtuF,KAAKktF,SACfzwE,EAAMzc,KAAK8gE,mBAAmBpoC,GAAS41D,EAAQv8C,OAASu8C,EAAQ50E,IACtE,OAAO1Z,KAAKmf,IAAM1C,GAAOzc,KAAKof,IAAMpf,KAAKmf,KAE3CovE,cAAcvxC,GACZ,MAAMwxC,EAAYxuF,KAAKL,QAAQ0gD,MACzBouC,EAAiBzuF,KAAKu1B,IAAIwC,YAAYilB,GAAOhlB,MAC7C/X,EAAQZ,EAAUrf,KAAK+hD,eAAiBysC,EAAUn1B,YAAcm1B,EAAUp1B,aAC1Es1B,EAAcz/E,KAAKsT,IAAItC,GACvB0uE,EAAc1/E,KAAKqS,IAAIrB,GACvB2uE,EAAe5uF,KAAK0gE,wBAAwB,GAAG7jD,KACrD,MAAO,CACL0I,EAAIkpE,EAAiBC,EAAgBE,EAAeD,EACpD7tF,EAAI2tF,EAAiBE,EAAgBC,EAAeF,GAGxDf,kBAAkBkB,GAChB,MAAMpB,EAAWztF,KAAKL,QAAQ+sF,KACxBU,EAAiBK,EAASL,eAC1BzhD,EAASyhD,EAAeK,EAAS1hC,OAASqhC,EAAehC,YACzD0D,EAAe9uF,KAAKmuF,oBAAoBU,EAAa,EAAG/B,GAAoB9sF,KAAM,CAAC6uF,GAAc7uF,KAAKitF,YAAathD,GACnH9uB,EAAO7c,KAAKuuF,cAAcO,GAC1BzC,EAAWp9E,KAAKC,MAAMlP,KAAK+hD,eAAiB/hD,KAAKg4B,MAAQnb,EAAK0I,EAAIvlB,KAAKk5B,OAASrc,EAAK/b,GAAK,EAChG,OAAOurF,EAAW,EAAIA,EAAW,EAEnC2B,oBACE,IACIllF,EAAGsS,EADHuxE,EAAa3sF,KAAK6/C,OAAOx9C,MAAQ,GAErC,GAAIsqF,EAAW3jF,OACb,OAAO2jF,EAET,MAAMlwB,EAAQz8D,KAAK42C,0BACnB,GAAI52C,KAAKmtF,aAAe1wB,EAAMzzD,OAC5B,OAAQhJ,KAAK6/C,OAAOx9C,KAAOo6D,EAAM,GAAG3lB,WAAW+F,mBAAmB78C,MAEpE,IAAK8I,EAAI,EAAGsS,EAAOqhD,EAAMzzD,OAAQF,EAAIsS,IAAQtS,EAC3C6jF,EAAaA,EAAW1rF,OAAOw7D,EAAM3zD,GAAGguC,WAAW+F,mBAAmB78C,OAExE,OAAQA,KAAK6/C,OAAOx9C,KAAOrC,KAAK+sC,UAAU4/C,GAE5Ca,qBACE,MAAMb,EAAa3sF,KAAK6/C,OAAO/D,QAAU,GACzC,IAAIhzC,EAAGsS,EACP,GAAIuxE,EAAW3jF,OACb,OAAO2jF,EAET,MAAM7wC,EAAS97C,KAAK+7C,YACpB,IAAKjzC,EAAI,EAAGsS,EAAO0gC,EAAO9yC,OAAQF,EAAIsS,IAAQtS,EAC5C6jF,EAAWpjF,KAAKyG,GAAMhQ,KAAM87C,EAAOhzC,KAErC,OAAQ9I,KAAK6/C,OAAO/D,OAAS97C,KAAKmtF,YAAcR,EAAa3sF,KAAK+sC,UAAU4/C,GAE9E5/C,UAAU3Y,GACR,OAAO8L,GAAa9L,EAAO7V,KAAKwtE,MAuBpC,SAAS,GAAY/sD,EAAO/4B,EAAK8U,GAC/B,IAEIg0E,EAAYC,EAAYC,EAAYC,EAFpC9vD,EAAK,EACLD,EAAKH,EAAMh2B,OAAS,EAEpB+R,GACE9U,GAAO+4B,EAAMI,GAAI3iB,KAAOxW,GAAO+4B,EAAMG,GAAI1iB,OACzC2iB,GAAAA,EAAID,GAAAA,GAAME,GAAaL,EAAO,MAAO/4B,MAEvCwW,IAAKsyE,EAAYrC,KAAMuC,GAAcjwD,EAAMI,MAC3C3iB,IAAKuyE,EAAYtC,KAAMwC,GAAclwD,EAAMG,MAEzCl5B,GAAO+4B,EAAMI,GAAIstD,MAAQzmF,GAAO+4B,EAAMG,GAAIutD,QAC1CttD,GAAAA,EAAID,GAAAA,GAAME,GAAaL,EAAO,OAAQ/4B,MAExCymF,KAAMqC,EAAYtyE,IAAKwyE,GAAcjwD,EAAMI,MAC3CstD,KAAMsC,EAAYvyE,IAAKyyE,GAAclwD,EAAMG,KAE/C,MAAMgwD,EAAOH,EAAaD,EAC1B,OAAOI,EAAOF,GAAcC,EAAaD,IAAehpF,EAAM8oF,GAAcI,EAAOF,EAtCrFlC,GAAU3/E,GAAK,OACf2/E,GAAU1lF,SAAW,CACnB8lC,OAAQ,OACRkf,SAAU,GACVqgC,KAAM,CACJ98E,QAAQ,EACRm8C,MAAM,EACNhuC,OAAO,EACPkuE,YAAY,EACZG,QAAS,cACTgB,eAAgB,IAElB/sC,MAAO,CACL32C,OAAQ,OACRiuD,MAAO,CACLC,SAAS,KAyBf,MAAMw3B,WAAwBrC,GAC5B/1E,YAAYgB,GACVgrC,MAAMhrC,GACNhY,KAAKqvF,OAAS,GACdrvF,KAAKsvF,aAAUxpF,EACf9F,KAAKuvF,iBAAczpF,EAErB8nF,cACE,MAAMjB,EAAa3sF,KAAKwvF,yBAClBxwD,EAAQh/B,KAAKqvF,OAASrvF,KAAKyvF,iBAAiB9C,GAClD3sF,KAAKsvF,QAAU,GAAYtwD,EAAOh/B,KAAKmf,KACvCnf,KAAKuvF,YAAc,GAAYvwD,EAAOh/B,KAAKof,KAAOpf,KAAKsvF,QACvDtsC,MAAM4qC,YAAYjB,GAEpB8C,iBAAiB9C,GACf,MAAM,IAACxtE,EAAG,IAAEC,GAAOpf,KACbmgC,EAAQ,GACRnB,EAAQ,GACd,IAAIl2B,EAAGsS,EAAM6rB,EAAMgZ,EAAMpb,EACzB,IAAK/7B,EAAI,EAAGsS,EAAOuxE,EAAW3jF,OAAQF,EAAIsS,IAAQtS,EAChDm3C,EAAO0sC,EAAW7jF,GACdm3C,GAAQ9gC,GAAO8gC,GAAQ7gC,GACzB+gB,EAAM52B,KAAK02C,GAGf,GAAI9f,EAAMn3B,OAAS,EACjB,MAAO,CACL,CAAC0jF,KAAMvtE,EAAK1C,IAAK,GACjB,CAACiwE,KAAMttE,EAAK3C,IAAK,IAGrB,IAAK3T,EAAI,EAAGsS,EAAO+kB,EAAMn3B,OAAQF,EAAIsS,IAAQtS,EAC3C+7B,EAAO1E,EAAMr3B,EAAI,GACjBm+B,EAAO9G,EAAMr3B,EAAI,GACjBm3C,EAAO9f,EAAMr3B,GACTmG,KAAK8O,OAAO8mB,EAAOoC,GAAQ,KAAOgZ,GACpCjhB,EAAMz1B,KAAK,CAACmjF,KAAMzsC,EAAMxjC,IAAK3T,GAAKsS,EAAO,KAG7C,OAAO4jB,EAETwwD,yBACE,IAAI7C,EAAa3sF,KAAK6/C,OAAO13C,KAAO,GACpC,GAAIwkF,EAAW3jF,OACb,OAAO2jF,EAET,MAAMtqF,EAAOrC,KAAKguF,oBACZhxC,EAAQh9C,KAAKwtF,qBAOnB,OALEb,EADEtqF,EAAK2G,QAAUg0C,EAAMh0C,OACVhJ,KAAK+sC,UAAU1qC,EAAKpB,OAAO+7C,IAE3B36C,EAAK2G,OAAS3G,EAAO26C,EAEpC2vC,EAAa3sF,KAAK6/C,OAAO13C,IAAMwkF,EACxBA,EAETmB,mBAAmB1pF,GACjB,OAAQ,GAAYpE,KAAKqvF,OAAQjrF,GAASpE,KAAKsvF,SAAWtvF,KAAKuvF,YAEjE3uB,iBAAiBloC,GACf,MAAM41D,EAAUtuF,KAAKktF,SACfrsB,EAAU7gE,KAAK8gE,mBAAmBpoC,GAAS41D,EAAQv8C,OAASu8C,EAAQ50E,IAC1E,OAAO,GAAY1Z,KAAKqvF,OAAQxuB,EAAU7gE,KAAKuvF,YAAcvvF,KAAKsvF,SAAS,IAG/EF,GAAgBhiF,GAAK,aACrBgiF,GAAgB/nF,SAAW0lF,GAAU1lF,U,qBCn7UrC,IAAIqoF,EAAS,EAAQ,MACjBC,EAAa,EAAQ,KACrBC,EAAc,EAAQ,MAEtBpnF,EAAYknF,EAAOlnF,UAGvBrH,EAAOD,QAAU,SAAU2uF,GACzB,GAAIF,EAAWE,GAAW,OAAOA,EACjC,MAAMrnF,EAAUonF,EAAYC,GAAY,wB,qBCT1C,IAAIH,EAAS,EAAQ,MACjBC,EAAa,EAAQ,KAErBn3E,EAASk3E,EAAOl3E,OAChBhQ,EAAYknF,EAAOlnF,UAEvBrH,EAAOD,QAAU,SAAU2uF,GACzB,GAAuB,iBAAZA,GAAwBF,EAAWE,GAAW,OAAOA,EAChE,MAAMrnF,EAAU,aAAegQ,EAAOq3E,GAAY,qB,qBCRpD,IAAIH,EAAS,EAAQ,MACjB5+E,EAAW,EAAQ,KAEnB0H,EAASk3E,EAAOl3E,OAChBhQ,EAAYknF,EAAOlnF,UAGvBrH,EAAOD,QAAU,SAAU2uF,GACzB,GAAI/+E,EAAS++E,GAAW,OAAOA,EAC/B,MAAMrnF,EAAUgQ,EAAOq3E,GAAY,uB,qBCTrC,IAAIC,EAAkB,EAAQ,MAC1BC,EAAkB,EAAQ,MAC1BC,EAAoB,EAAQ,MAG5BC,EAAe,SAAUC,GAC3B,OAAO,SAAUC,EAAOz6E,EAAI06E,GAC1B,IAGIhsF,EAHA6iB,EAAI6oE,EAAgBK,GACpBnnF,EAASgnF,EAAkB/oE,GAC3Bzd,EAAQumF,EAAgBK,EAAWpnF,GAIvC,GAAIknF,GAAex6E,GAAMA,GAAI,MAAO1M,EAASQ,EAG3C,GAFApF,EAAQ6iB,EAAEzd,KAENpF,GAASA,EAAO,OAAO,OAEtB,KAAM4E,EAASQ,EAAOA,IAC3B,IAAK0mF,GAAe1mF,KAASyd,IAAMA,EAAEzd,KAAWkM,EAAI,OAAOw6E,GAAe1mF,GAAS,EACnF,OAAQ0mF,IAAgB,IAI9B/uF,EAAOD,QAAU,CAGfsgC,SAAUyuD,GAAa,GAGvBlrF,QAASkrF,GAAa,K,qBC9BxB,IAAII,EAAc,EAAQ,MAEtB5gF,EAAW4gF,EAAY,GAAG5gF,UAC1B6gF,EAAcD,EAAY,GAAG/hF,OAEjCnN,EAAOD,QAAU,SAAUqvF,GACzB,OAAOD,EAAY7gF,EAAS8gF,GAAK,GAAI,K,oBCNvC,IAAIb,EAAS,EAAQ,MACjBc,EAAwB,EAAQ,MAChCb,EAAa,EAAQ,KACrBc,EAAa,EAAQ,MACrBC,EAAkB,EAAQ,MAE1BC,EAAgBD,EAAgB,eAChClkF,EAASkjF,EAAOljF,OAGhBokF,EAAuE,aAAnDH,EAAW,WAAc,OAAOj/E,UAArB,IAG/Bq/E,EAAS,SAAUN,EAAIrqF,GACzB,IACE,OAAOqqF,EAAGrqF,GACV,MAAOwF,MAIXvK,EAAOD,QAAUsvF,EAAwBC,EAAa,SAAUF,GAC9D,IAAItpE,EAAG6pE,EAAK36E,EACZ,YAAcrQ,IAAPyqF,EAAmB,YAAqB,OAAPA,EAAc,OAEM,iBAAhDO,EAAMD,EAAO5pE,EAAIza,EAAO+jF,GAAKI,IAA8BG,EAEnEF,EAAoBH,EAAWxpE,GAEH,WAA3B9Q,EAASs6E,EAAWxpE,KAAmB0oE,EAAW1oE,EAAE8pE,QAAU,YAAc56E,I,qBC5BnF,IAAIk6E,EAAc,EAAQ,MAEtB3+E,EAAU2+E,EAAY,GAAG3+E,SAEzBs/E,EAAO,SAAW7qB,GAAO,OAAO3tD,OAAOzM,MAAMo6D,GAAK75D,OAA3C,CAAsD,UAC7D2kF,EAA2B,uBAC3BC,EAAwBD,EAAyB/9E,KAAK89E,GAE1D7vF,EAAOD,QAAU,SAAUoL,EAAO6kF,GAChC,GAAID,GAAyC,iBAAT5kF,EAClC,MAAO6kF,IAAe7kF,EAAQoF,EAAQpF,EAAO2kF,EAA0B,IACvE,OAAO3kF,I,qBCXX,IAAI8kF,EAAS,EAAQ,MACjB3vD,EAAU,EAAQ,MAClB4vD,EAAiC,EAAQ,MACzCC,EAAuB,EAAQ,MAEnCnwF,EAAOD,QAAU,SAAUiN,EAAQzE,EAAQ6nF,GAIzC,IAHA,IAAI1iF,EAAO4yB,EAAQ/3B,GACfgD,EAAiB4kF,EAAqB/sE,EACtC8c,EAA2BgwD,EAA+B9sE,EACrDzb,EAAI,EAAGA,EAAI+F,EAAK7F,OAAQF,IAAK,CACpC,IAAI5C,EAAM2I,EAAK/F,GACVsoF,EAAOjjF,EAAQjI,IAAUqrF,GAAcH,EAAOG,EAAYrrF,IAC7DwG,EAAeyB,EAAQjI,EAAKm7B,EAAyB33B,EAAQxD,O,qBCZnE,IAAIsrF,EAAc,EAAQ,MACtBF,EAAuB,EAAQ,MAC/BG,EAA2B,EAAQ,MAEvCtwF,EAAOD,QAAUswF,EAAc,SAAUzxD,EAAQ75B,EAAK9B,GACpD,OAAOktF,EAAqB/sE,EAAEwb,EAAQ75B,EAAKurF,EAAyB,EAAGrtF,KACrE,SAAU27B,EAAQ75B,EAAK9B,GAEzB,OADA27B,EAAO75B,GAAO9B,EACP27B,I,iBCRT5+B,EAAOD,QAAU,SAAUwwF,EAAQttF,GACjC,MAAO,CACL+yB,aAAuB,EAATu6D,GACd9xD,eAAyB,EAAT8xD,GAChBx6D,WAAqB,EAATw6D,GACZttF,MAAOA,K,qBCLX,IAAIutF,EAAQ,EAAQ,MAGpBxwF,EAAOD,SAAWywF,GAAM,WAEtB,OAA8E,GAAvEnlF,OAAOE,eAAe,GAAI,EAAG,CAAEgqB,IAAK,WAAc,OAAO,KAAQ,O,oBCL1E,IAAIg5D,EAAS,EAAQ,MACjB5+E,EAAW,EAAQ,KAEnB8B,EAAW88E,EAAO98E,SAElBg/E,EAAS9gF,EAAS8B,IAAa9B,EAAS8B,EAASa,eAErDtS,EAAOD,QAAU,SAAUqvF,GACzB,OAAOqB,EAASh/E,EAASa,cAAc88E,GAAM,K,qBCR/C,IAAIsB,EAAa,EAAQ,MAEzB1wF,EAAOD,QAAU2wF,EAAW,YAAa,cAAgB,I,qBCFzD,IAOIh/E,EAAOwD,EAPPq5E,EAAS,EAAQ,MACjBn8E,EAAY,EAAQ,MAEpB/D,EAAUkgF,EAAOlgF,QACjBsiF,EAAOpC,EAAOoC,KACdC,EAAWviF,GAAWA,EAAQuiF,UAAYD,GAAQA,EAAKz7E,QACvD27E,EAAKD,GAAYA,EAASC,GAG1BA,IACFn/E,EAAQm/E,EAAGt9E,MAAM,KAGjB2B,EAAUxD,EAAM,GAAK,GAAKA,EAAM,GAAK,EAAI,IAAMA,EAAM,GAAKA,EAAM,MAK7DwD,GAAW9C,IACdV,EAAQU,EAAUV,MAAM,iBACnBA,GAASA,EAAM,IAAM,MACxBA,EAAQU,EAAUV,MAAM,iBACpBA,IAAOwD,GAAWxD,EAAM,MAIhC1R,EAAOD,QAAUmV,G,gBCzBjBlV,EAAOD,QAAU,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,Y,qBCRF,IAAIywF,EAAQ,EAAQ,MAChBF,EAA2B,EAAQ,MAEvCtwF,EAAOD,SAAWywF,GAAM,WACtB,IAAIjmF,EAAQK,MAAM,KAClB,QAAM,UAAWL,KAEjBc,OAAOE,eAAehB,EAAO,QAAS+lF,EAAyB,EAAG,IAC3C,IAAhB/lF,EAAMY,W,qBCRf,IAAIojF,EAAS,EAAQ,MACjBruD,EAA2B,UAC3B4wD,EAA8B,EAAQ,MACtCC,EAAW,EAAQ,MACnBC,EAAY,EAAQ,MACpBC,EAA4B,EAAQ,MACpCC,EAAW,EAAQ,MAiBvBlxF,EAAOD,QAAU,SAAUvB,EAAS+J,GAClC,IAGI4oF,EAAQnkF,EAAQjI,EAAKqsF,EAAgBC,EAAgBzrB,EAHrD0rB,EAAS9yF,EAAQwO,OACjBukF,EAAS/yF,EAAQ+vF,OACjBiD,EAAShzF,EAAQizF,KASrB,GANEzkF,EADEukF,EACOhD,EACAiD,EACAjD,EAAO+C,IAAWN,EAAUM,EAAQ,KAEnC/C,EAAO+C,IAAW,IAAIhrF,UAE9B0G,EAAQ,IAAKjI,KAAOwD,EAAQ,CAQ9B,GAPA8oF,EAAiB9oF,EAAOxD,GACpBvG,EAAQkzF,aACV9rB,EAAa1lC,EAAyBlzB,EAAQjI,GAC9CqsF,EAAiBxrB,GAAcA,EAAW3iE,OACrCmuF,EAAiBpkF,EAAOjI,GAC/BosF,EAASD,EAASK,EAASxsF,EAAMusF,GAAUE,EAAS,IAAM,KAAOzsF,EAAKvG,EAAQmzF,SAEzER,QAA6BxsF,IAAnBysF,EAA8B,CAC3C,UAAWC,UAAyBD,EAAgB,SACpDH,EAA0BI,EAAgBD,IAGxC5yF,EAAQozF,MAASR,GAAkBA,EAAeQ,OACpDd,EAA4BO,EAAgB,QAAQ,GAGtDN,EAAS/jF,EAAQjI,EAAKssF,EAAgB7yF,M,iBCpD1CwB,EAAOD,QAAU,SAAU2T,GACzB,IACE,QAASA,IACT,MAAOnJ,GACP,OAAO,K,qBCJX,IAAIsnF,EAAc,EAAQ,MAEtBC,EAAoBC,SAASzrF,UAC7B4D,EAAQ4nF,EAAkB5nF,MAC1BhL,EAAO4yF,EAAkB5yF,KAG7Bc,EAAOD,QAA4B,iBAAXogC,SAAuBA,QAAQj2B,QAAU2nF,EAAc3yF,EAAK6G,KAAKmE,GAAS,WAChG,OAAOhL,EAAKgL,MAAMA,EAAOmG,c,qBCR3B,IAAImgF,EAAQ,EAAQ,MAEpBxwF,EAAOD,SAAWywF,GAAM,WACtB,IAAIz+E,EAAO,aAA8BhM,OAEzC,MAAsB,mBAARgM,GAAsBA,EAAKsE,eAAe,iB,qBCL1D,IAAIw7E,EAAc,EAAQ,MAEtB3yF,EAAO6yF,SAASzrF,UAAUpH,KAE9Bc,EAAOD,QAAU8xF,EAAc3yF,EAAK6G,KAAK7G,GAAQ,WAC/C,OAAOA,EAAKgL,MAAMhL,EAAMmR,a,qBCL1B,IAAIggF,EAAc,EAAQ,MACtBJ,EAAS,EAAQ,MAEjB6B,EAAoBC,SAASzrF,UAE7B0rF,EAAgB3B,GAAehlF,OAAO60B,yBAEtCuwD,EAASR,EAAO6B,EAAmB,QAEnCG,EAASxB,GAA0D,cAAhD,aAAuC/nF,KAC1DwpF,EAAezB,KAAYJ,GAAgBA,GAAe2B,EAAcF,EAAmB,QAAQrzD,cAEvGz+B,EAAOD,QAAU,CACf0wF,OAAQA,EACRwB,OAAQA,EACRC,aAAcA,I,qBCfhB,IAAIL,EAAc,EAAQ,MAEtBC,EAAoBC,SAASzrF,UAC7BP,EAAO+rF,EAAkB/rF,KACzB7G,EAAO4yF,EAAkB5yF,KACzBgwF,EAAc2C,GAAe9rF,EAAKA,KAAK7G,EAAMA,GAEjDc,EAAOD,QAAU8xF,EAAc,SAAU3lF,GACvC,OAAOA,GAAMgjF,EAAYhjF,IACvB,SAAUA,GACZ,OAAOA,GAAM,WACX,OAAOhN,EAAKgL,MAAMgC,EAAImE,c,qBCX1B,IAAIk+E,EAAS,EAAQ,MACjBC,EAAa,EAAQ,KAErB2D,EAAY,SAAUzD,GACxB,OAAOF,EAAWE,GAAYA,OAAW/pF,GAG3C3E,EAAOD,QAAU,SAAUqyF,EAAWhvF,GACpC,OAAOiN,UAAUxI,OAAS,EAAIsqF,EAAU5D,EAAO6D,IAAc7D,EAAO6D,IAAc7D,EAAO6D,GAAWhvF,K,qBCRtG,IAAIivF,EAAY,EAAQ,MAIxBryF,EAAOD,QAAU,SAAUwlB,EAAGM,GAC5B,IAAIysE,EAAO/sE,EAAEM,GACb,OAAe,MAARysE,OAAe3tF,EAAY0tF,EAAUC,K,qBCN9C,IAAI15E,EAAQ,SAAUw2E,GACpB,OAAOA,GAAMA,EAAGthF,MAAQA,MAAQshF,GAIlCpvF,EAAOD,QAEL6Y,EAA2B,iBAAd25E,YAA0BA,aACvC35E,EAAuB,iBAAV3F,QAAsBA,SAEnC2F,EAAqB,iBAAR45E,MAAoBA,OACjC55E,EAAuB,iBAAV,EAAA+K,GAAsB,EAAAA,IAEnC,WAAe,OAAO9kB,KAAtB,IAAoCkzF,SAAS,cAATA,I,qBCbtC,IAAI7C,EAAc,EAAQ,MACtBuD,EAAW,EAAQ,MAEnBp8E,EAAiB64E,EAAY,GAAG74E,gBAIpCrW,EAAOD,QAAUsL,OAAO4kF,QAAU,SAAgBb,EAAIrqF,GACpD,OAAOsR,EAAeo8E,EAASrD,GAAKrqF,K,iBCRtC/E,EAAOD,QAAU,I,qBCAjB,IAAIswF,EAAc,EAAQ,MACtBG,EAAQ,EAAQ,MAChBl+E,EAAgB,EAAQ,KAG5BtS,EAAOD,SAAWswF,IAAgBG,GAAM,WAEtC,OAEQ,GAFDnlF,OAAOE,eAAe+G,EAAc,OAAQ,IAAK,CACtDijB,IAAK,WAAc,OAAO,KACzBhf,M,qBCTL,IAAIg4E,EAAS,EAAQ,MACjBW,EAAc,EAAQ,MACtBsB,EAAQ,EAAQ,MAChBkC,EAAU,EAAQ,MAElBrnF,EAASkjF,EAAOljF,OAChBkI,EAAQ27E,EAAY,GAAG37E,OAG3BvT,EAAOD,QAAUywF,GAAM,WAGrB,OAAQnlF,EAAO,KAAKsnF,qBAAqB,MACtC,SAAUvD,GACb,MAAsB,UAAfsD,EAAQtD,GAAkB77E,EAAM67E,EAAI,IAAM/jF,EAAO+jF,IACtD/jF,G,qBCfJ,IAAImjF,EAAa,EAAQ,KACrB7+E,EAAW,EAAQ,KACnBijF,EAAiB,EAAQ,MAG7B5yF,EAAOD,QAAU,SAAUivF,EAAO6D,EAAOC,GACvC,IAAIC,EAAWC,EAUf,OAPEJ,GAEApE,EAAWuE,EAAYF,EAAMh9E,cAC7Bk9E,IAAcD,GACdnjF,EAASqjF,EAAqBD,EAAUzsF,YACxC0sF,IAAuBF,EAAQxsF,WAC/BssF,EAAe5D,EAAOgE,GACjBhE,I,qBChBT,IAAIE,EAAc,EAAQ,MACtBV,EAAa,EAAQ,KACrByE,EAAQ,EAAQ,MAEhBC,EAAmBhE,EAAY6C,SAASzjF,UAGvCkgF,EAAWyE,EAAME,iBACpBF,EAAME,cAAgB,SAAU/D,GAC9B,OAAO8D,EAAiB9D,KAI5BpvF,EAAOD,QAAUkzF,EAAME,e,qBCbvB,IAAIxjF,EAAW,EAAQ,KACnBmhF,EAA8B,EAAQ,MAI1C9wF,EAAOD,QAAU,SAAU+lB,EAAGtnB,GACxBmR,EAASnR,IAAY,UAAWA,GAClCsyF,EAA4BhrE,EAAG,QAAStnB,EAAQ40F,S,qBCPpD,IAaItgE,EAAKyC,EAAK3Z,EAbVy3E,EAAkB,EAAQ,MAC1B9E,EAAS,EAAQ,MACjBW,EAAc,EAAQ,MACtBv/E,EAAW,EAAQ,KACnBmhF,EAA8B,EAAQ,MACtCb,EAAS,EAAQ,MACjBl5C,EAAS,EAAQ,MACjBu8C,EAAY,EAAQ,MACpBC,EAAa,EAAQ,MAErBC,EAA6B,6BAC7BnsF,EAAYknF,EAAOlnF,UACnBs0E,EAAU4S,EAAO5S,QAGjB8X,EAAU,SAAUrE,GACtB,OAAOxzE,EAAIwzE,GAAM75D,EAAI65D,GAAMt8D,EAAIs8D,EAAI,KAGjCsE,EAAY,SAAUC,GACxB,OAAO,SAAUvE,GACf,IAAIwE,EACJ,IAAKjkF,EAASy/E,KAAQwE,EAAQr+D,EAAI65D,IAAK5pF,OAASmuF,EAC9C,MAAMtsF,EAAU,0BAA4BssF,EAAO,aACnD,OAAOC,IAIb,GAAIP,GAAmBt8C,EAAO68C,MAAO,CACnC,IAAIX,EAAQl8C,EAAO68C,QAAU78C,EAAO68C,MAAQ,IAAIjY,GAC5CkY,EAAQ3E,EAAY+D,EAAM19D,KAC1Bu+D,EAAQ5E,EAAY+D,EAAMr3E,KAC1Bm4E,EAAQ7E,EAAY+D,EAAMngE,KAC9BA,EAAM,SAAUs8D,EAAI4E,GAClB,GAAIF,EAAMb,EAAO7D,GAAK,MAAM,IAAI/nF,EAAUmsF,GAG1C,OAFAQ,EAASC,OAAS7E,EAClB2E,EAAMd,EAAO7D,EAAI4E,GACVA,GAETz+D,EAAM,SAAU65D,GACd,OAAOyE,EAAMZ,EAAO7D,IAAO,IAE7BxzE,EAAM,SAAUwzE,GACd,OAAO0E,EAAMb,EAAO7D,QAEjB,CACL,IAAI8E,EAAQZ,EAAU,SACtBC,EAAWW,IAAS,EACpBphE,EAAM,SAAUs8D,EAAI4E,GAClB,GAAI/D,EAAOb,EAAI8E,GAAQ,MAAM,IAAI7sF,EAAUmsF,GAG3C,OAFAQ,EAASC,OAAS7E,EAClB0B,EAA4B1B,EAAI8E,EAAOF,GAChCA,GAETz+D,EAAM,SAAU65D,GACd,OAAOa,EAAOb,EAAI8E,GAAS9E,EAAG8E,GAAS,IAEzCt4E,EAAM,SAAUwzE,GACd,OAAOa,EAAOb,EAAI8E,IAItBl0F,EAAOD,QAAU,CACf+yB,IAAKA,EACLyC,IAAKA,EACL3Z,IAAKA,EACL63E,QAASA,EACTC,UAAWA,I,gBCjEb1zF,EAAOD,QAAU,SAAU2uF,GACzB,MAA0B,mBAAZA,I,qBCHhB,IAAI8B,EAAQ,EAAQ,MAChBhC,EAAa,EAAQ,KAErB2F,EAAc,kBAEdjD,EAAW,SAAUkD,EAASC,GAChC,IAAIpxF,EAAQ/B,EAAK0qC,EAAUwoD,IAC3B,OAAOnxF,GAASqxF,GACZrxF,GAASsxF,IACT/F,EAAW6F,GAAa7D,EAAM6D,KAC5BA,IAGJzoD,EAAYslD,EAAStlD,UAAY,SAAUlV,GAC7C,OAAOrf,OAAOqf,GAAQnmB,QAAQ4jF,EAAa,KAAKnvF,eAG9C9D,EAAOgwF,EAAShwF,KAAO,GACvBqzF,EAASrD,EAASqD,OAAS,IAC3BD,EAAWpD,EAASoD,SAAW,IAEnCt0F,EAAOD,QAAUmxF,G,oBCrBjB,IAAI1C,EAAa,EAAQ,KAEzBxuF,EAAOD,QAAU,SAAUqvF,GACzB,MAAoB,iBAANA,EAAwB,OAAPA,EAAcZ,EAAWY,K,iBCH1DpvF,EAAOD,SAAU,G,qBCAjB,IAAIwuF,EAAS,EAAQ,MACjBmC,EAAa,EAAQ,MACrBlC,EAAa,EAAQ,KACrBrrB,EAAgB,EAAQ,MACxBqxB,EAAoB,EAAQ,MAE5BnpF,EAASkjF,EAAOljF,OAEpBrL,EAAOD,QAAUy0F,EAAoB,SAAUpF,GAC7C,MAAoB,iBAANA,GACZ,SAAUA,GACZ,IAAIqF,EAAU/D,EAAW,UACzB,OAAOlC,EAAWiG,IAAYtxB,EAAcsxB,EAAQnuF,UAAW+E,EAAO+jF,M,qBCZxE,IAAIsF,EAAW,EAAQ,MAIvB10F,EAAOD,QAAU,SAAU6L,GACzB,OAAO8oF,EAAS9oF,EAAI/D,U,oBCJtB,IAAI8sF,EAAa,EAAQ,MACrBnE,EAAQ,EAAQ,MAGpBxwF,EAAOD,UAAYsL,OAAOupF,wBAA0BpE,GAAM,WACxD,IAAIqE,EAASt1D,SAGb,OAAQloB,OAAOw9E,MAAaxpF,OAAOwpF,aAAmBt1D,UAEnDA,OAAOqyD,MAAQ+C,GAAcA,EAAa,O,qBCX/C,IAAIpG,EAAS,EAAQ,MACjBC,EAAa,EAAQ,KACrB2E,EAAgB,EAAQ,MAExBxX,EAAU4S,EAAO5S,QAErB37E,EAAOD,QAAUyuF,EAAW7S,IAAY,cAAc5pE,KAAKohF,EAAcxX,K,qBCNzE,IAAIrtE,EAAW,EAAQ,MAEvBtO,EAAOD,QAAU,SAAU2uF,EAAUoG,GACnC,YAAoBnwF,IAAb+pF,EAAyBr+E,UAAUxI,OAAS,EAAI,GAAKitF,EAAWxmF,EAASogF,K,qBCHlF,IAAIH,EAAS,EAAQ,MACjB8B,EAAc,EAAQ,MACtB0E,EAAiB,EAAQ,MACzBC,EAA0B,EAAQ,MAClCC,EAAW,EAAQ,MACnBC,EAAgB,EAAQ,MAExB7tF,EAAYknF,EAAOlnF,UAEnB8tF,EAAkB9pF,OAAOE,eAEzB6pF,EAA4B/pF,OAAO60B,yBACnCm1D,EAAa,aACbnD,EAAe,eACfoD,EAAW,WAIfv1F,EAAQqjB,EAAIitE,EAAc2E,EAA0B,SAAwBlvE,EAAGD,EAAG0vE,GAIhF,GAHAN,EAASnvE,GACTD,EAAIqvE,EAAcrvE,GAClBovE,EAASM,GACQ,oBAANzvE,GAA0B,cAAND,GAAqB,UAAW0vE,GAAcD,KAAYC,IAAeA,EAAWD,GAAW,CAC5H,IAAI7xD,EAAU2xD,EAA0BtvE,EAAGD,GACvC4d,GAAWA,EAAQ6xD,KACrBxvE,EAAED,GAAK0vE,EAAWtyF,MAClBsyF,EAAa,CACX92D,aAAcyzD,KAAgBqD,EAAaA,EAAWrD,GAAgBzuD,EAAQyuD,GAC9El8D,WAAYq/D,KAAcE,EAAaA,EAAWF,GAAc5xD,EAAQ4xD,GACxEt/D,UAAU,IAGd,OAAOo/D,EAAgBrvE,EAAGD,EAAG0vE,IAC7BJ,EAAkB,SAAwBrvE,EAAGD,EAAG0vE,GAIlD,GAHAN,EAASnvE,GACTD,EAAIqvE,EAAcrvE,GAClBovE,EAASM,GACLR,EAAgB,IAClB,OAAOI,EAAgBrvE,EAAGD,EAAG0vE,GAC7B,MAAOhrF,IACT,GAAI,QAASgrF,GAAc,QAASA,EAAY,MAAMluF,EAAU,2BAEhE,MADI,UAAWkuF,IAAYzvE,EAAED,GAAK0vE,EAAWtyF,OACtC6iB,I,qBC1CT,IAAIuqE,EAAc,EAAQ,MACtBnxF,EAAO,EAAQ,MACfs2F,EAA6B,EAAQ,MACrClF,EAA2B,EAAQ,MACnC3B,EAAkB,EAAQ,MAC1BuG,EAAgB,EAAQ,MACxBjF,EAAS,EAAQ,MACjB8E,EAAiB,EAAQ,MAGzBK,EAA4B/pF,OAAO60B,yBAIvCngC,EAAQqjB,EAAIitE,EAAc+E,EAA4B,SAAkCtvE,EAAGD,GAGzF,GAFAC,EAAI6oE,EAAgB7oE,GACpBD,EAAIqvE,EAAcrvE,GACdkvE,EAAgB,IAClB,OAAOK,EAA0BtvE,EAAGD,GACpC,MAAOtb,IACT,GAAI0lF,EAAOnqE,EAAGD,GAAI,OAAOyqE,GAA0BpxF,EAAKs2F,EAA2BpyE,EAAG0C,EAAGD,GAAIC,EAAED,M,qBCpBjG,IAAI4vE,EAAqB,EAAQ,MAC7BC,EAAc,EAAQ,KAEtBnC,EAAamC,EAAY51F,OAAO,SAAU,aAK9CC,EAAQqjB,EAAI/X,OAAO6L,qBAAuB,SAA6B4O,GACrE,OAAO2vE,EAAmB3vE,EAAGytE,K,mBCR/BxzF,EAAQqjB,EAAI/X,OAAOupF,uB,qBCDnB,IAAI1F,EAAc,EAAQ,MAE1BlvF,EAAOD,QAAUmvF,EAAY,GAAG/rB,gB,qBCFhC,IAAI+rB,EAAc,EAAQ,MACtBe,EAAS,EAAQ,MACjBtB,EAAkB,EAAQ,MAC1B/qF,EAAU,gBACV2vF,EAAa,EAAQ,MAErBnrF,EAAO8mF,EAAY,GAAG9mF,MAE1BpI,EAAOD,QAAU,SAAU6+B,EAAQzO,GACjC,IAGIprB,EAHA+gB,EAAI6oE,EAAgB/vD,GACpBj3B,EAAI,EACJqN,EAAS,GAEb,IAAKjQ,KAAO+gB,GAAImqE,EAAOsD,EAAYxuF,IAAQkrF,EAAOnqE,EAAG/gB,IAAQqD,EAAK4M,EAAQjQ,GAE1E,MAAOorB,EAAMtoB,OAASF,EAAOsoF,EAAOnqE,EAAG/gB,EAAMorB,EAAMxoB,SAChD/D,EAAQoR,EAAQjQ,IAAQqD,EAAK4M,EAAQjQ,IAExC,OAAOiQ,I,gCCjBT,IAAI2gF,EAAwB,GAAGhD,qBAE3BzyD,EAA2B70B,OAAO60B,yBAGlC01D,EAAc11D,IAA6By1D,EAAsBz2F,KAAK,CAAE,EAAG,GAAK,GAIpFa,EAAQqjB,EAAIwyE,EAAc,SAA8BrwE,GACtD,IAAIqgD,EAAa1lC,EAAyBrhC,KAAM0mB,GAChD,QAASqgD,GAAcA,EAAW5vC,YAChC2/D,G,qBCZJ,IAAIzG,EAAc,EAAQ,MACtB+F,EAAW,EAAQ,MACnBY,EAAqB,EAAQ,MAMjC71F,EAAOD,QAAUsL,OAAOunF,iBAAmB,aAAe,GAAK,WAC7D,IAEIkD,EAFAC,GAAiB,EACjBhkF,EAAO,GAEX,IAEE+jF,EAAS5G,EAAY7jF,OAAO60B,yBAAyB70B,OAAO/E,UAAW,aAAawsB,KACpFgjE,EAAO/jF,EAAM,IACbgkF,EAAiBhkF,aAAgB9H,MACjC,MAAOM,IACT,OAAO,SAAwBub,EAAGmL,GAKhC,OAJAgkE,EAASnvE,GACT+vE,EAAmB5kE,GACf8kE,EAAgBD,EAAOhwE,EAAGmL,GACzBnL,EAAEkwE,UAAY/kE,EACZnL,GAfoD,QAiBzDnhB,I,qBC1BN,IAAI4pF,EAAS,EAAQ,MACjBrvF,EAAO,EAAQ,MACfsvF,EAAa,EAAQ,KACrB7+E,EAAW,EAAQ,KAEnBtI,EAAYknF,EAAOlnF,UAIvBrH,EAAOD,QAAU,SAAUoxB,EAAO8kE,GAChC,IAAI/pF,EAAIpH,EACR,GAAa,WAATmxF,GAAqBzH,EAAWtiF,EAAKilB,EAAM7iB,YAAcqB,EAAS7K,EAAM5F,EAAKgN,EAAIilB,IAAS,OAAOrsB,EACrG,GAAI0pF,EAAWtiF,EAAKilB,EAAM+kE,WAAavmF,EAAS7K,EAAM5F,EAAKgN,EAAIilB,IAAS,OAAOrsB,EAC/E,GAAa,WAATmxF,GAAqBzH,EAAWtiF,EAAKilB,EAAM7iB,YAAcqB,EAAS7K,EAAM5F,EAAKgN,EAAIilB,IAAS,OAAOrsB,EACrG,MAAMuC,EAAU,6C,qBCdlB,IAAIqpF,EAAa,EAAQ,MACrBxB,EAAc,EAAQ,MACtBiH,EAA4B,EAAQ,MACpCC,EAA8B,EAAQ,MACtCnB,EAAW,EAAQ,MAEnBn1F,EAASovF,EAAY,GAAGpvF,QAG5BE,EAAOD,QAAU2wF,EAAW,UAAW,YAAc,SAAiBtB,GACpE,IAAI1hF,EAAOyoF,EAA0B/yE,EAAE6xE,EAAS7F,IAC5CwF,EAAwBwB,EAA4BhzE,EACxD,OAAOwxE,EAAwB90F,EAAO4N,EAAMknF,EAAsBxF,IAAO1hF,I,qBCZ3E,IAAI6gF,EAAS,EAAQ,MACjBC,EAAa,EAAQ,KACrByB,EAAS,EAAQ,MACjBa,EAA8B,EAAQ,MACtCE,EAAY,EAAQ,MACpBmC,EAAgB,EAAQ,MACxBkD,EAAsB,EAAQ,MAC9BC,EAA6B,qBAE7BC,EAAmBF,EAAoB9gE,IACvCihE,EAAuBH,EAAoB5C,QAC3CgD,EAAWp/E,OAAOA,QAAQ9D,MAAM,WAEnCvT,EAAOD,QAAU,SAAU+lB,EAAG/gB,EAAK9B,EAAOzE,GACzC,IAIIo1F,EAJA8C,IAASl4F,KAAYA,EAAQk4F,OAC7BC,IAASn4F,KAAYA,EAAQw3B,WAC7B07D,IAAclzF,KAAYA,EAAQkzF,YAClChpF,EAAOlK,QAA4BmG,IAAjBnG,EAAQkK,KAAqBlK,EAAQkK,KAAO3D,EAE9DypF,EAAWvrF,KACoB,YAA7BoU,OAAO3O,GAAMyE,MAAM,EAAG,KACxBzE,EAAO,IAAM2O,OAAO3O,GAAM6H,QAAQ,qBAAsB,MAAQ,OAE7D0/E,EAAOhtF,EAAO,SAAYqzF,GAA8BrzF,EAAMyF,OAASA,IAC1EooF,EAA4B7tF,EAAO,OAAQyF,GAE7CkrF,EAAQ4C,EAAqBvzF,GACxB2wF,EAAMrrF,SACTqrF,EAAMrrF,OAASkuF,EAAS5lF,KAAoB,iBAARnI,EAAmBA,EAAO,MAG9Dod,IAAMyoE,GAIEmI,GAEAhF,GAAe5rE,EAAE/gB,KAC3B4xF,GAAS,UAFF7wE,EAAE/gB,GAIP4xF,EAAQ7wE,EAAE/gB,GAAO9B,EAChB6tF,EAA4BhrE,EAAG/gB,EAAK9B,IATnC0zF,EAAQ7wE,EAAE/gB,GAAO9B,EAChB+tF,EAAUjsF,EAAK9B,KAUrB8uF,SAASzrF,UAAW,YAAY,WACjC,OAAOkoF,EAAW3vF,OAAS03F,EAAiB13F,MAAM0J,QAAU4qF,EAAct0F,U,qBC5C5E,IAAI0vF,EAAS,EAAQ,MAEjBlnF,EAAYknF,EAAOlnF,UAIvBrH,EAAOD,QAAU,SAAUqvF,GACzB,QAAUzqF,GAANyqF,EAAiB,MAAM/nF,EAAU,wBAA0B+nF,GAC/D,OAAOA,I,qBCRT,IAAIb,EAAS,EAAQ,MAGjBhjF,EAAiBF,OAAOE,eAE5BvL,EAAOD,QAAU,SAAUgF,EAAK9B,GAC9B,IACEsI,EAAegjF,EAAQxpF,EAAK,CAAE9B,MAAOA,EAAOw7B,cAAc,EAAM1I,UAAU,IAC1E,MAAOxrB,GACPgkF,EAAOxpF,GAAO9B,EACd,OAAOA,I,qBCVX,IAAI8zC,EAAS,EAAQ,MACjBj+B,EAAM,EAAQ,MAEdpL,EAAOqpC,EAAO,QAElB/2C,EAAOD,QAAU,SAAUgF,GACzB,OAAO2I,EAAK3I,KAAS2I,EAAK3I,GAAO+T,EAAI/T,M,qBCNvC,IAAIwpF,EAAS,EAAQ,MACjByC,EAAY,EAAQ,MAEpB4F,EAAS,qBACT3D,EAAQ1E,EAAOqI,IAAW5F,EAAU4F,EAAQ,IAEhD52F,EAAOD,QAAUkzF,G,qBCNjB,IAAI4D,EAAU,EAAQ,MAClB5D,EAAQ,EAAQ,OAEnBjzF,EAAOD,QAAU,SAAUgF,EAAK9B,GAC/B,OAAOgwF,EAAMluF,KAASkuF,EAAMluF,QAAiBJ,IAAV1B,EAAsBA,EAAQ,MAChE,WAAY,IAAImF,KAAK,CACtB8M,QAAS,SACTuf,KAAMoiE,EAAU,OAAS,SACzBC,UAAW,4CACXC,QAAS,2DACTxuF,OAAQ,yC,qBCVV,IAAIyuF,EAAsB,EAAQ,MAE9B/4E,EAAMnQ,KAAKmQ,IACXD,EAAMlQ,KAAKkQ,IAKfhe,EAAOD,QAAU,SAAUsI,EAAOR,GAChC,IAAIovF,EAAUD,EAAoB3uF,GAClC,OAAO4uF,EAAU,EAAIh5E,EAAIg5E,EAAUpvF,EAAQ,GAAKmW,EAAIi5E,EAASpvF,K,qBCT/D,IAAIqvF,EAAgB,EAAQ,MACxBC,EAAyB,EAAQ,MAErCn3F,EAAOD,QAAU,SAAUqvF,GACzB,OAAO8H,EAAcC,EAAuB/H,M,iBCL9C,IAAI33B,EAAO3pD,KAAK2pD,KACZ1pD,EAAQD,KAAKC,MAIjB/N,EAAOD,QAAU,SAAU2uF,GACzB,IAAI3jF,GAAU2jF,EAEd,OAAO3jF,IAAWA,GAAqB,IAAXA,EAAe,GAAKA,EAAS,EAAIgD,EAAQ0pD,GAAM1sD,K,qBCR7E,IAAIisF,EAAsB,EAAQ,MAE9Bh5E,EAAMlQ,KAAKkQ,IAIfhe,EAAOD,QAAU,SAAU2uF,GACzB,OAAOA,EAAW,EAAI1wE,EAAIg5E,EAAoBtI,GAAW,kBAAoB,I,qBCP/E,IAAIH,EAAS,EAAQ,MACjB4I,EAAyB,EAAQ,MAEjC9rF,EAASkjF,EAAOljF,OAIpBrL,EAAOD,QAAU,SAAU2uF,GACzB,OAAOrjF,EAAO8rF,EAAuBzI,M,qBCRvC,IAAIH,EAAS,EAAQ,MACjBrvF,EAAO,EAAQ,MACfyQ,EAAW,EAAQ,KACnBynF,EAAW,EAAQ,MACnBC,EAAY,EAAQ,MACpBC,EAAsB,EAAQ,MAC9B/H,EAAkB,EAAQ,MAE1BloF,EAAYknF,EAAOlnF,UACnBkwF,EAAehI,EAAgB,eAInCvvF,EAAOD,QAAU,SAAUoxB,EAAO8kE,GAChC,IAAKtmF,EAASwhB,IAAUimE,EAASjmE,GAAQ,OAAOA,EAChD,IACInc,EADAwiF,EAAeH,EAAUlmE,EAAOomE,GAEpC,GAAIC,EAAc,CAGhB,QAFa7yF,IAATsxF,IAAoBA,EAAO,WAC/BjhF,EAAS9V,EAAKs4F,EAAcrmE,EAAO8kE,IAC9BtmF,EAASqF,IAAWoiF,EAASpiF,GAAS,OAAOA,EAClD,MAAM3N,EAAU,2CAGlB,YADa1C,IAATsxF,IAAoBA,EAAO,UACxBqB,EAAoBnmE,EAAO8kE,K,qBCxBpC,IAAIwB,EAAc,EAAQ,MACtBL,EAAW,EAAQ,MAIvBp3F,EAAOD,QAAU,SAAU2uF,GACzB,IAAI3pF,EAAM0yF,EAAY/I,EAAU,UAChC,OAAO0I,EAASryF,GAAOA,EAAMA,EAAM,K,qBCPrC,IAAIwqF,EAAkB,EAAQ,MAE1BC,EAAgBD,EAAgB,eAChCx9E,EAAO,GAEXA,EAAKy9E,GAAiB,IAEtBxvF,EAAOD,QAA2B,eAAjBsX,OAAOtF,I,qBCPxB,IAAIw8E,EAAS,EAAQ,MACjBmE,EAAU,EAAQ,KAElBr7E,EAASk3E,EAAOl3E,OAEpBrX,EAAOD,QAAU,SAAU2uF,GACzB,GAA0B,WAAtBgE,EAAQhE,GAAwB,MAAMrnF,UAAU,6CACpD,OAAOgQ,EAAOq3E,K,qBCPhB,IAAIH,EAAS,EAAQ,MAEjBl3E,EAASk3E,EAAOl3E,OAEpBrX,EAAOD,QAAU,SAAU2uF,GACzB,IACE,OAAOr3E,EAAOq3E,GACd,MAAOnkF,GACP,MAAO,Y,qBCRX,IAAI2kF,EAAc,EAAQ,MAEtBjjF,EAAK,EACLyrF,EAAU5pF,KAAK6pF,SACfrpF,EAAW4gF,EAAY,GAAI5gF,UAE/BtO,EAAOD,QAAU,SAAUgF,GACzB,MAAO,gBAAqBJ,IAARI,EAAoB,GAAKA,GAAO,KAAOuJ,IAAWrC,EAAKyrF,EAAS,M,qBCNtF,IAAIE,EAAgB,EAAQ,KAE5B53F,EAAOD,QAAU63F,IACXr4D,OAAOqyD,MACkB,iBAAnBryD,OAAOs4D,U,qBCLnB,IAAIxH,EAAc,EAAQ,MACtBG,EAAQ,EAAQ,MAIpBxwF,EAAOD,QAAUswF,GAAeG,GAAM,WAEpC,OAGgB,IAHTnlF,OAAOE,gBAAe,cAA6B,YAAa,CACrEtI,MAAO,GACP8yB,UAAU,IACTzvB,c,qBCVL,IAAIioF,EAAS,EAAQ,MACjBx3C,EAAS,EAAQ,MACjBk5C,EAAS,EAAQ,MACjBn3E,EAAM,EAAQ,MACd8+E,EAAgB,EAAQ,KACxBpD,EAAoB,EAAQ,MAE5BsD,EAAwB/gD,EAAO,OAC/BxX,EAASgvD,EAAOhvD,OAChBw4D,EAAYx4D,GAAUA,EAAO,OAC7By4D,EAAwBxD,EAAoBj1D,EAASA,GAAUA,EAAO04D,eAAiBn/E,EAE3F9Y,EAAOD,QAAU,SAAU2I,GACzB,IAAKunF,EAAO6H,EAAuBpvF,KAAWkvF,GAAuD,iBAA/BE,EAAsBpvF,GAAoB,CAC9G,IAAIoC,EAAc,UAAYpC,EAC1BkvF,GAAiB3H,EAAO1wD,EAAQ72B,GAClCovF,EAAsBpvF,GAAQ62B,EAAO72B,GAErCovF,EAAsBpvF,GADb8rF,GAAqBuD,EACAA,EAAUjtF,GAEVktF,EAAsBltF,GAEtD,OAAOgtF,EAAsBpvF,K,kCCrBjC,IAAIgoF,EAAa,EAAQ,MACrBT,EAAS,EAAQ,MACjBa,EAA8B,EAAQ,MACtC3tB,EAAgB,EAAQ,MACxByvB,EAAiB,EAAQ,MACzB3B,EAA4B,EAAQ,MACpCiH,EAAoB,EAAQ,MAC5BC,EAA0B,EAAQ,MAClCC,EAAoB,EAAQ,MAC5BC,EAAkB,EAAQ,MAC1BC,EAA0B,EAAQ,MAClCzB,EAAU,EAAQ,MAEtB72F,EAAOD,QAAU,SAAUw4F,EAAWC,EAASrH,EAAQsH,GACrD,IAAIC,EAAmBD,EAAqB,EAAI,EAC5CvnF,EAAOqnF,EAAUhlF,MAAM,KACvBolF,EAAaznF,EAAKA,EAAKrJ,OAAS,GAChC+wF,EAAgBlI,EAAWxmF,MAAM,KAAMgH,GAE3C,GAAK0nF,EAAL,CAEA,IAAIC,EAAyBD,EAActyF,UAK3C,IAFKuwF,GAAW5G,EAAO4I,EAAwB,iBAAiBA,EAAuBzF,OAElFjC,EAAQ,OAAOyH,EAEpB,IAAIE,EAAYpI,EAAW,SAEvBqI,EAAeP,GAAQ,SAAUjiF,EAAGC,GACtC,IAAIxO,EAAUmwF,EAAwBM,EAAqBjiF,EAAID,OAAG5R,GAC9DqQ,EAASyjF,EAAqB,IAAIG,EAAcriF,GAAK,IAAIqiF,EAK7D,YAJgBj0F,IAAZqD,GAAuB8oF,EAA4B97E,EAAQ,UAAWhN,GACtEswF,GAAyBxH,EAA4B97E,EAAQ,QAASqjF,EAAgBrjF,EAAO7J,MAAO,IACpGtM,MAAQskE,EAAc01B,EAAwBh6F,OAAOq5F,EAAkBljF,EAAQnW,KAAMk6F,GACrF1oF,UAAUxI,OAAS6wF,GAAkBN,EAAkBpjF,EAAQ3E,UAAUqoF,IACtE1jF,KAYT,GATA+jF,EAAazyF,UAAYuyF,EAEN,UAAfF,IACE/F,EAAgBA,EAAemG,EAAcD,GAC5C7H,EAA0B8H,EAAcD,EAAW,CAAEpwF,MAAM,KAGlEuoF,EAA0B8H,EAAcH,IAEnC/B,EAAS,IAERgC,EAAuBnwF,OAASiwF,GAClC7H,EAA4B+H,EAAwB,OAAQF,GAE9DE,EAAuBhjF,YAAckjF,EACrC,MAAOxuF,IAET,OAAOwuF,K,qBCzDT,IAAIC,EAAI,EAAQ,MACZzK,EAAS,EAAQ,MACjBrkF,EAAQ,EAAQ,MAChB+uF,EAAgC,EAAQ,MAExCC,EAAe,cACfC,EAAc5K,EAAO2K,GAErB/H,EAA4C,IAAnCvmF,MAAM,IAAK,CAAEwoF,MAAO,IAAKA,MAElCgG,EAAgC,SAAUT,EAAYH,GACxD,IAAI1yE,EAAI,GACRA,EAAE6yE,GAAcM,EAA8BN,EAAYH,EAASrH,GACnE6H,EAAE,CAAEzK,QAAQ,EAAMoD,OAAQR,GAAUrrE,IAGlCuzE,EAAqC,SAAUV,EAAYH,GAC7D,GAAIW,GAAeA,EAAYR,GAAa,CAC1C,IAAI7yE,EAAI,GACRA,EAAE6yE,GAAcM,EAA8BC,EAAe,IAAMP,EAAYH,EAASrH,GACxF6H,EAAE,CAAEhsF,OAAQksF,EAAczH,MAAM,EAAME,OAAQR,GAAUrrE,KAK5DszE,EAA8B,SAAS,SAAUj+B,GAC/C,OAAO,SAAenzD,GAAW,OAAOkC,EAAMixD,EAAMt8D,KAAMwR,eAE5D+oF,EAA8B,aAAa,SAAUj+B,GACnD,OAAO,SAAmBnzD,GAAW,OAAOkC,EAAMixD,EAAMt8D,KAAMwR,eAEhE+oF,EAA8B,cAAc,SAAUj+B,GACpD,OAAO,SAAoBnzD,GAAW,OAAOkC,EAAMixD,EAAMt8D,KAAMwR,eAEjE+oF,EAA8B,kBAAkB,SAAUj+B,GACxD,OAAO,SAAwBnzD,GAAW,OAAOkC,EAAMixD,EAAMt8D,KAAMwR,eAErE+oF,EAA8B,eAAe,SAAUj+B,GACrD,OAAO,SAAqBnzD,GAAW,OAAOkC,EAAMixD,EAAMt8D,KAAMwR,eAElE+oF,EAA8B,aAAa,SAAUj+B,GACnD,OAAO,SAAmBnzD,GAAW,OAAOkC,EAAMixD,EAAMt8D,KAAMwR,eAEhE+oF,EAA8B,YAAY,SAAUj+B,GAClD,OAAO,SAAkBnzD,GAAW,OAAOkC,EAAMixD,EAAMt8D,KAAMwR,eAE/DgpF,EAAmC,gBAAgB,SAAUl+B,GAC3D,OAAO,SAAsBnzD,GAAW,OAAOkC,EAAMixD,EAAMt8D,KAAMwR,eAEnEgpF,EAAmC,aAAa,SAAUl+B,GACxD,OAAO,SAAmBnzD,GAAW,OAAOkC,EAAMixD,EAAMt8D,KAAMwR,eAEhEgpF,EAAmC,gBAAgB,SAAUl+B,GAC3D,OAAO,SAAsBnzD,GAAW,OAAOkC,EAAMixD,EAAMt8D,KAAMwR,gB;;;;;;;CChDnE,SAA2C0iB,EAAMumE,GAE/Ct5F,EAAOD,QAAUu5F,KAFnB,CASmB,qBAAT9G,MAAuBA,MAAa,WAC9C,OAAgB,SAAU+G,GAEhB,IAAIC,EAAmB,GAGvB,SAAS,EAAoBC,GAG5B,GAAGD,EAAiBC,GACnB,OAAOD,EAAiBC,GAAU15F,QAGnC,IAAIC,EAASw5F,EAAiBC,GAAY,CACzC9xF,EAAG8xF,EACH7xF,GAAG,EACH7H,QAAS,IAUV,OANAw5F,EAAQE,GAAUv6F,KAAKc,EAAOD,QAASC,EAAQA,EAAOD,QAAS,GAG/DC,EAAO4H,GAAI,EAGJ5H,EAAOD,QAqCf,OAhCA,EAAoBsiB,EAAIk3E,EAGxB,EAAoB/wF,EAAIgxF,EAGxB,EAAoBl3E,EAAI,SAASviB,EAAS2I,EAAM68C,GAC3C,EAAoBkrB,EAAE1wE,EAAS2I,IAClC2C,OAAOE,eAAexL,EAAS2I,EAAM,CACpC+1B,cAAc,EACdzI,YAAY,EACZT,IAAKgwB,KAMR,EAAoBloC,EAAI,SAASrd,GAChC,IAAIulD,EAASvlD,GAAUA,EAAO05F,WAC7B,WAAwB,OAAO15F,EAAO,YACtC,WAA8B,OAAOA,GAEtC,OADA,EAAoBsiB,EAAEijC,EAAQ,IAAKA,GAC5BA,GAIR,EAAoBkrB,EAAI,SAAS7xC,EAAQ7gB,GAAY,OAAO1S,OAAO/E,UAAU+P,eAAenX,KAAK0/B,EAAQ7gB,IAGzG,EAAoBQ,EAAI,GAGjB,EAAoB,EAAoBiB,EAAI,KA9D7C,CAiEN,CAEJ,SAAUxf,EAAQD,EAAS,GAEjC,aAEAsL,OAAOE,eAAexL,EAAS,aAAc,CAAEkD,OAAO,IACtD,IAAI02F,EAAc,EAAoB,IAClCC,EAAW,EAAoB,IAC/BC,EAAS,EAAoB,IAC7BC,EAAW,EAAoB,IAC/BC,EAAW,EAAoB,IAC/BC,EAAU,EAAoB,IAC9BC,EAAU,EAAoB,IAC9BC,EAAS,EAAoB,IAC7BC,EAAe,EAAoB,IACnCC,EAAU,EAAoB,IAC9BC,EAAU,EAAoB,IAC9BC,EAAU,EAAoB,IAC9Bv2B,EAAW,EAAoB,GAC/Bw2B,EAAY,CACZC,MAAOz2B,EAASy2B,MAChBh0F,OAAQu9D,EAASv9D,OACjBi0F,KAAM12B,EAAS02B,KACfC,MAAO32B,EAAS22B,MAChBt3B,SAAUW,EAASX,SACnBu3B,UAAWhB,EAAYiB,QACvBC,OAAQjB,EAASgB,QACjBE,KAAMjB,EAAOe,QACbG,MAAOd,EAAQW,QACfI,OAAQlB,EAASc,QACjBK,MAAOjB,EAAQY,QACfM,OAAQnB,EAASa,QACjBO,KAAMjB,EAAOU,QACbQ,WAAY,CACRC,UAAWlB,EAAaS,QACxBU,MAAOlB,EAAQQ,QACfW,MAAOlB,EAAQO,QACfY,MAAOlB,EAAQM,UAGvB76F,EAAQ66F,QAAUL,GAKZ,SAAUv6F,EAAQD,EAAS07F,GAEjC,aAEA,IAAIC,EAAa78F,MAAQA,KAAK68F,WAAc,WACxC,IAAIC,EAAgBtwF,OAAOunF,gBACtB,CAAEoD,UAAW,cAAgB/rF,OAAS,SAAUqY,EAAG9L,GAAK8L,EAAE0zE,UAAYx/E,IACvE,SAAU8L,EAAG9L,GAAK,IAAK,IAAI+H,KAAK/H,EAAOA,EAAEH,eAAekI,KAAI+D,EAAE/D,GAAK/H,EAAE+H,KACzE,OAAO,SAAU+D,EAAG9L,GAEhB,SAASolF,IAAO/8F,KAAKgX,YAAcyM,EADnCq5E,EAAcr5E,EAAG9L,GAEjB8L,EAAEhc,UAAkB,OAANkQ,EAAanL,OAAO7E,OAAOgQ,IAAMolF,EAAGt1F,UAAYkQ,EAAElQ,UAAW,IAAIs1F,IAP3C,GAU5CvwF,OAAOE,eAAexL,EAAS,aAAc,CAAEkD,OAAO,IACtD,IAAI44F,EAAgC,SAAUC,GAE1C,SAASD,EAAe7zF,GACpB,IAAI+zF,EAAQl9F,KAKZ,OAJAmJ,EAAU,eAAiBA,EAC3B+zF,EAAQD,EAAO58F,KAAKL,KAAMmJ,IAAYnJ,KACtCk9F,EAAM/zF,QAAUA,EAChB+zF,EAAMrzF,KAAOqzF,EAAMlmF,YAAYnN,KACxBqzF,EAEX,OATAL,EAAUG,EAAgBC,GASnBD,EAVwB,CAWjCjxF,OACF7K,EAAQ87F,eAAiBA,EACzB,IAKIrB,EALAwB,EAAa,GACbC,EAAU,GACVC,EAAO,GACPC,EAAQ,GAgBZ,SAAS31F,EAAO2qB,EAAOluB,GACnB,IAAIyO,EAAQgpF,EAAMvpE,GAClB,GAAa,MAATzf,EACA,MAAM,IAAImqF,EAAe,oBAAsB1qE,EAAQ,SAE3D,IAAIirE,EAAY1qF,EACZmhB,EAEJ1B,aAAiBkrE,MAAQlrE,EAAM,cAAgBkrE,KAAKC,UAAYnrE,EAAQirE,EAAU51F,OAAOvD,GACzF,OAAO,IAAIm5F,EAAUvpE,EAAM5vB,GAG/B,SAASw3F,EAAK5nE,EAAM0pE,GAEhB,YADe,IAAXA,IAAqBA,GAAS,GACtB,MAAR1pE,EACO,KAEmB,MAA1BA,EAAK9yB,EAAQy8F,UACN3pE,EAAK9yB,EAAQy8F,UAAUC,KAC9BF,EACO9B,EAAK5nE,EAAKsT,WAAYo2D,GAC1B,KAGX,SAAS7B,EAAMA,EAAO1nE,GAElB,IAAIthB,EACJ,QAFc,IAAVshB,IAAoBA,EAAQwnE,EAAMkC,KAEjB,kBAAVhC,EACPhpF,EAAQyqF,EAAMzB,IAAUsB,EAAWtB,QAGlC,GAAIA,aAAiBS,MAAQT,EAAM,cAAgB2B,KAAKC,UACzD5qF,EAAQyqF,EAAM,aAEb,GAAqB,kBAAVzB,EACRA,EAAQF,EAAMmC,MAAQnC,EAAMoC,MAC5BlrF,EAAQyqF,EAAM,SAETzB,EAAQF,EAAMmC,MAAQnC,EAAMqC,SACjCnrF,EAAQyqF,EAAM,gBAGjB,GAAIzB,aAAiBoC,YAAa,CACnC,IAAI3sE,GAASuqE,EAAMroC,aAAa,UAAY,IAAI9+C,MAAM,OACtD,IAAK,IAAI5L,KAAKwoB,EAEV,GADAze,EAAQuqF,EAAQ9rE,EAAMxoB,IAClB+J,EACA,MAERA,EAAQA,GAASwqF,EAAKxB,EAAMqC,SAEhC,OAAa,MAATrrF,EACO,KAEPshB,EAAQwnE,EAAMmC,MAAQjrF,EAAMshB,OAASA,EAAQwnE,EAAM7G,KAAOjiF,EAAMshB,MACzDthB,EACJ,KAGX,SAAS0xD,IAEL,IADA,IAAI45B,EAAc,GACTC,EAAK,EAAGA,EAAK5sF,UAAUxI,OAAQo1F,IACpCD,EAAYC,GAAM5sF,UAAU4sF,GAEhC,GAAID,EAAYn1F,OAAS,EACrB,OAAOm1F,EAAY1iF,KAAI,SAAUgI,GAC7B,OAAO8gD,EAAS9gD,MAGxB,IAAI46E,EAAaF,EAAY,GAC7B,GAAmC,kBAAxBE,EAAWC,UAAwD,kBAAxBD,EAAWE,SAC7D,MAAM,IAAIvB,EAAe,sBAExB,GAA4B,aAAxBqB,EAAWC,SAChB,MAAM,IAAItB,EAAe,kCAG7B,GADAM,EAAMe,EAAWC,UAAYD,EAAWE,UAAYF,EAClB,kBAAvBA,EAAWG,QAClBrB,EAAWkB,EAAWG,SAAWH,OAMjC,GAH4B,MAAxBA,EAAWI,YACXrB,EAAQiB,EAAWI,WAAaJ,GAEV,MAAtBA,EAAWH,QAAiB,CACxB9yF,MAAMiD,QAAQgwF,EAAWH,SACzBG,EAAWH,QAAUG,EAAWH,QAAQziF,KAAI,SAAUyiF,GAClD,OAAOA,EAAQ15F,iBAInB65F,EAAWH,QAAUG,EAAWH,QAAQ15F,cAE5C,IAAIk6F,EAAWtzF,MAAMiD,QAAQgwF,EAAWH,SAAWG,EAAWH,QAAU,CAACG,EAAWH,SACpFQ,EAAS14F,SAAQ,SAAU8qF,GACN,MAAbuM,EAAKvM,IAAwC,MAAxBuN,EAAWI,YAChCpB,EAAKvM,GAAOuN,MAK5B,OAAOA,EApHXn9F,EAAQy8F,SAAW,SAEnB,SAAWhC,GACPA,EAAMA,EAAM,QAAU,GAAK,OAC3BA,EAAMA,EAAM,SAAW,IAAM,QAC7BA,EAAMA,EAAM,aAAe,IAAM,YACjCA,EAAMA,EAAM,QAAU,IAAM,OAC5BA,EAAMA,EAAM,UAAY,GAAK,SAC7BA,EAAMA,EAAM,SAAW,IAAM,QAC7BA,EAAMA,EAAM,cAAgB,IAAM,aAClCA,EAAMA,EAAM,eAAiB,GAAK,cAClCA,EAAMA,EAAM,mBAAqB,GAAK,kBACtCA,EAAMA,EAAM,oBAAsB,GAAK,mBACvCA,EAAMA,EAAM,OAAS,IAAM,MAX/B,CAYGA,EAAQz6F,EAAQy6F,QAAUz6F,EAAQy6F,MAAQ,KAY7Cz6F,EAAQyG,OAASA,EAYjBzG,EAAQ06F,KAAOA,EAmCf16F,EAAQ26F,MAAQA,EA6ChB36F,EAAQqjE,SAAWA,GAKb,SAAUpjE,EAAQD,EAAS,GAEjC,IAAI8qD,EAAO,EAAoB,IAC3B2yC,EAAQ,EAAoB,IAC5Bj3F,EAAS,EAAoB,GAC7Bk3F,EAAK,EAAoB,IAGzBC,EAAiBrmF,OAAOsmF,aAAa,GAGrCC,EAAQ,SAAUC,GAEhB5zF,MAAMiD,QAAQ2wF,GAChBh/F,KAAKg/F,IAAMA,EACK,MAAPA,GAAe5zF,MAAMiD,QAAQ2wF,EAAIA,KAC1Ch/F,KAAKg/F,IAAMA,EAAIA,IAEfh/F,KAAKg/F,IAAM,IAKfD,EAAMt3F,UAAUw3F,OAAS,SAAUtjE,EAAMwhE,GACvC,IAAI+B,EAAQ,GACZ,OAAoB,IAAhBvjE,EAAK3yB,OAAqBhJ,MAC9Bk/F,EAAMD,OAAStjE,EACG,MAAdwhE,GAA4C,kBAAfA,GAA2B3wF,OAAOqC,KAAKsuF,GAAYn0F,OAAS,IAC3Fk2F,EAAM/B,WAAaA,GAEdn9F,KAAKuJ,KAAK21F,KAGnBH,EAAMt3F,UAAU,UAAY,SAAUuB,GACpC,OAAIA,GAAU,EAAUhJ,KACjBA,KAAKuJ,KAAK,CAAE,OAAUP,KAG/B+1F,EAAMt3F,UAAU03F,OAAS,SAAUn2F,EAAQm0F,GACzC,GAAIn0F,GAAU,EAAG,OAAOhJ,KACxB,IAAIk/F,EAAQ,CAAEC,OAAQn2F,GAItB,OAHkB,MAAdm0F,GAA4C,kBAAfA,GAA2B3wF,OAAOqC,KAAKsuF,GAAYn0F,OAAS,IAC3Fk2F,EAAM/B,WAAaA,GAEdn9F,KAAKuJ,KAAK21F,IAGnBH,EAAMt3F,UAAU8B,KAAO,SAAU21F,GAC/B,IAAI11F,EAAQxJ,KAAKg/F,IAAIh2F,OACjBo2F,EAASp/F,KAAKg/F,IAAIx1F,EAAQ,GAE9B,GADA01F,EAAQx3F,GAAO,EAAM,GAAIw3F,GACH,kBAAXE,EAAqB,CAC9B,GAA+B,kBAApBF,EAAM,WAAsD,kBAArBE,EAAO,UAEvD,OADAp/F,KAAKg/F,IAAIx1F,EAAQ,GAAK,CAAE,OAAU41F,EAAO,UAAYF,EAAM,WACpDl/F,KAIT,GAAgC,kBAArBo/F,EAAO,WAA0C,MAAhBF,EAAMD,SAChDz1F,GAAS,EACT41F,EAASp/F,KAAKg/F,IAAIx1F,EAAQ,GACJ,kBAAX41F,GAET,OADAp/F,KAAKg/F,IAAIj0F,QAAQm0F,GACVl/F,KAGX,GAAI2+F,EAAMO,EAAM/B,WAAYiC,EAAOjC,YAAa,CAC9C,GAA4B,kBAAjB+B,EAAMD,QAAgD,kBAAlBG,EAAOH,OAGpD,OAFAj/F,KAAKg/F,IAAIx1F,EAAQ,GAAK,CAAEy1F,OAAQG,EAAOH,OAASC,EAAMD,QACtB,kBAArBC,EAAM/B,aAAyBn9F,KAAKg/F,IAAIx1F,EAAQ,GAAG2zF,WAAa+B,EAAM/B,YAC1En9F,KACF,GAA4B,kBAAjBk/F,EAAMC,QAAgD,kBAAlBC,EAAOD,OAG3D,OAFAn/F,KAAKg/F,IAAIx1F,EAAQ,GAAK,CAAE21F,OAAQC,EAAOD,OAASD,EAAMC,QACtB,kBAArBD,EAAM/B,aAAyBn9F,KAAKg/F,IAAIx1F,EAAQ,GAAG2zF,WAAa+B,EAAM/B,YAC1En9F,MASb,OALIwJ,IAAUxJ,KAAKg/F,IAAIh2F,OACrBhJ,KAAKg/F,IAAIz1F,KAAK21F,GAEdl/F,KAAKg/F,IAAIv1F,OAAOD,EAAO,EAAG01F,GAErBl/F,MAGT++F,EAAMt3F,UAAU43F,KAAO,WACrB,IAAID,EAASp/F,KAAKg/F,IAAIh/F,KAAKg/F,IAAIh2F,OAAS,GAIxC,OAHIo2F,GAAUA,EAAOD,SAAWC,EAAOjC,YACrCn9F,KAAKg/F,IAAIppF,MAEJ5V,MAGT++F,EAAMt3F,UAAU0Q,OAAS,SAAUmnF,GACjC,OAAOt/F,KAAKg/F,IAAI7mF,OAAOmnF,IAGzBP,EAAMt3F,UAAUzB,QAAU,SAAUs5F,GAClCt/F,KAAKg/F,IAAIh5F,QAAQs5F,IAGnBP,EAAMt3F,UAAUgU,IAAM,SAAU6jF,GAC9B,OAAOt/F,KAAKg/F,IAAIvjF,IAAI6jF,IAGtBP,EAAMt3F,UAAU83F,UAAY,SAAUD,GACpC,IAAIE,EAAS,GAAIC,EAAS,GAK1B,OAJAz/F,KAAKgG,SAAQ,SAAS44F,GACpB,IAAIzwF,EAASmxF,EAAUV,GAAMY,EAASC,EACtCtxF,EAAO5E,KAAKq1F,MAEP,CAACY,EAAQC,IAGlBV,EAAMt3F,UAAUiqC,OAAS,SAAU4tD,EAAW7uD,GAC5C,OAAOzwC,KAAKg/F,IAAIttD,OAAO4tD,EAAW7uD,IAGpCsuD,EAAMt3F,UAAUi4F,aAAe,WAC7B,OAAO1/F,KAAK0xC,QAAO,SAAU1oC,EAAQ22F,GACnC,OAAIA,EAAKV,OACAj2F,EAAS41F,EAAG51F,OAAO22F,GACjBA,EAAKz8D,OACPl6B,EAAS22F,EAAKz8D,OAEhBl6B,IACN,IAGL+1F,EAAMt3F,UAAUuB,OAAS,WACvB,OAAOhJ,KAAK0xC,QAAO,SAAU1oC,EAAQ22F,GACnC,OAAO32F,EAAS41F,EAAG51F,OAAO22F,KACzB,IAGLZ,EAAMt3F,UAAU6G,MAAQ,SAAUmL,EAAOC,GACvCD,EAAQA,GAAS,EACE,kBAARC,IAAkBA,EAAMkrC,EAAAA,GACnC,IAAIo6C,EAAM,GACNY,EAAOhB,EAAG5F,SAASh5F,KAAKg/F,KACxBx1F,EAAQ,EACZ,MAAOA,EAAQkQ,GAAOkmF,EAAKC,UAAW,CACpC,IAAIC,EACAt2F,EAAQiQ,EACVqmF,EAASF,EAAK/6D,KAAKprB,EAAQjQ,IAE3Bs2F,EAASF,EAAK/6D,KAAKnrB,EAAMlQ,GACzBw1F,EAAIz1F,KAAKu2F,IAEXt2F,GAASo1F,EAAG51F,OAAO82F,GAErB,OAAO,IAAIf,EAAMC,IAInBD,EAAMt3F,UAAUs4F,QAAU,SAAUlvC,GAClC,IAAImvC,EAAWpB,EAAG5F,SAASh5F,KAAKg/F,KAC5BiB,EAAYrB,EAAG5F,SAASnoC,EAAMmuC,KAC9BA,EAAM,GACNkB,EAAaD,EAAUE,OAC3B,GAAkB,MAAdD,GAAmD,kBAAtBA,EAAWf,QAAgD,MAAzBe,EAAW/C,WAAoB,CAChG,IAAIiD,EAAYF,EAAWf,OAC3B,MAA+B,WAAxBa,EAASK,YAA2BL,EAASM,cAAgBF,EAClEA,GAAaJ,EAASM,aACtBtB,EAAIz1F,KAAKy2F,EAASn7D,QAEhBq7D,EAAWf,OAASiB,EAAY,GAClCH,EAAUp7D,KAAKq7D,EAAWf,OAASiB,GAGvC,IAAIp6D,EAAQ,IAAI+4D,EAAMC,GACtB,MAAOgB,EAASH,WAAaI,EAAUJ,UACrC,GAA6B,WAAzBI,EAAUI,WACZr6D,EAAMz8B,KAAK02F,EAAUp7D,aAChB,GAA4B,WAAxBm7D,EAASK,WAClBr6D,EAAMz8B,KAAKy2F,EAASn7D,YACf,CACL,IAAI77B,EAASiG,KAAKkQ,IAAI6gF,EAASM,aAAcL,EAAUK,cACnDC,EAASP,EAASn7D,KAAK77B,GACvBw3F,EAAUP,EAAUp7D,KAAK77B,GAC7B,GAA8B,kBAAnBw3F,EAAQrB,OAAqB,CACtC,IAAID,EAAQ,GACiB,kBAAlBqB,EAAOpB,OAChBD,EAAMC,OAASn2F,EAEfk2F,EAAMD,OAASsB,EAAOtB,OAGxB,IAAI9B,EAAayB,EAAGzB,WAAW4C,QAAQQ,EAAOpD,WAAYqD,EAAQrD,WAAqC,kBAAlBoD,EAAOpB,QAK5F,GAJIhC,IAAY+B,EAAM/B,WAAaA,GACnCn3D,EAAMz8B,KAAK21F,IAGNe,EAAUJ,WAAalB,EAAM34D,EAAMg5D,IAAIh5D,EAAMg5D,IAAIh2F,OAAS,GAAIk2F,GAAQ,CACzE,IAAIhmF,EAAO,IAAI6lF,EAAMiB,EAAS9mF,QAC9B,OAAO8sB,EAAM/kC,OAAOiY,GAAMmmF,YAKU,kBAAtBmB,EAAQ,WAAmD,kBAAlBD,EAAOpB,QAChEn5D,EAAMz8B,KAAKi3F,GAIjB,OAAOx6D,EAAMq5D,QAGfN,EAAMt3F,UAAUxG,OAAS,SAAU4vD,GACjC,IAAI7qB,EAAQ,IAAI+4D,EAAM/+F,KAAKg/F,IAAI1wF,SAK/B,OAJIuiD,EAAMmuC,IAAIh2F,OAAS,IACrBg9B,EAAMz8B,KAAKsnD,EAAMmuC,IAAI,IACrBh5D,EAAMg5D,IAAMh5D,EAAMg5D,IAAI/9F,OAAO4vD,EAAMmuC,IAAI1wF,MAAM,KAExC03B,GAGT+4D,EAAMt3F,UAAUukD,KAAO,SAAU6E,EAAOrnD,GACtC,GAAIxJ,KAAKg/F,MAAQnuC,EAAMmuC,IACrB,OAAO,IAAID,EAEb,IAAI0B,EAAU,CAACzgG,KAAM6wD,GAAOp1C,KAAI,SAAUuqB,GACxC,OAAOA,EAAMvqB,KAAI,SAAUmjF,GACzB,GAAiB,MAAbA,EAAGK,OACL,MAA4B,kBAAdL,EAAGK,OAAsBL,EAAGK,OAASJ,EAErD,IAAI6B,EAAQ16D,IAAU6qB,EAAS,KAAO,OACtC,MAAM,IAAI9kD,MAAM,iBAAmB20F,EAAO,oBACzC1uF,KAAK,OAENg0B,EAAQ,IAAI+4D,EACZ4B,EAAa30C,EAAKy0C,EAAQ,GAAIA,EAAQ,GAAIj3F,GAC1Cw2F,EAAWpB,EAAG5F,SAASh5F,KAAKg/F,KAC5BiB,EAAYrB,EAAG5F,SAASnoC,EAAMmuC,KA6BlC,OA5BA2B,EAAW36F,SAAQ,SAAUygE,GAC3B,IAAIz9D,EAASy9D,EAAU,GAAGz9D,OAC1B,MAAOA,EAAS,EAAG,CACjB,IAAI43F,EAAW,EACf,OAAQn6B,EAAU,IAChB,KAAKza,EAAK60C,OACRD,EAAW3xF,KAAKkQ,IAAI8gF,EAAUK,aAAct3F,GAC5Cg9B,EAAMz8B,KAAK02F,EAAUp7D,KAAK+7D,IAC1B,MACF,KAAK50C,EAAK80C,OACRF,EAAW3xF,KAAKkQ,IAAInW,EAAQg3F,EAASM,cACrCN,EAASn7D,KAAK+7D,GACd56D,EAAM,UAAU46D,GAChB,MACF,KAAK50C,EAAK+0C,MACRH,EAAW3xF,KAAKkQ,IAAI6gF,EAASM,aAAcL,EAAUK,aAAct3F,GACnE,IAAIu3F,EAASP,EAASn7D,KAAK+7D,GACvBJ,EAAUP,EAAUp7D,KAAK+7D,GACzBjC,EAAM4B,EAAOtB,OAAQuB,EAAQvB,QAC/Bj5D,EAAMm5D,OAAOyB,EAAUhC,EAAGzB,WAAWnxC,KAAKu0C,EAAOpD,WAAYqD,EAAQrD,aAErEn3D,EAAMz8B,KAAKi3F,GAAS,UAAUI,GAEhC,MAEJ53F,GAAU43F,MAGP56D,EAAMq5D,QAGfN,EAAMt3F,UAAUu5F,SAAW,SAAU1B,EAAW2B,GAC9CA,EAAUA,GAAW,KACrB,IAAIrB,EAAOhB,EAAG5F,SAASh5F,KAAKg/F,KACxBrqF,EAAO,IAAIoqF,EACXj2F,EAAI,EACR,MAAO82F,EAAKC,UAAW,CACrB,GAAwB,WAApBD,EAAKS,WAAyB,OAClC,IAAIE,EAASX,EAAKO,OACd1mF,EAAQmlF,EAAG51F,OAAOu3F,GAAUX,EAAKU,aACjC92F,EAAiC,kBAAlB+2F,EAAOtB,OACxBsB,EAAOtB,OAAOl6F,QAAQk8F,EAASxnF,GAASA,GAAS,EACnD,GAAIjQ,EAAQ,EACVmL,EAAKpL,KAAKq2F,EAAK/6D,aACV,GAAIr7B,EAAQ,EACjBmL,EAAKpL,KAAKq2F,EAAK/6D,KAAKr7B,QACf,CACL,IAA0D,IAAtD81F,EAAU3qF,EAAMirF,EAAK/6D,KAAK,GAAGs4D,YAAc,GAAIr0F,GACjD,OAEFA,GAAK,EACL6L,EAAO,IAAIoqF,GAGXpqF,EAAK3L,SAAW,GAClBs2F,EAAU3qF,EAAM,GAAI7L,IAIxBi2F,EAAMt3F,UAAUy5F,UAAY,SAAUrwC,EAAOswC,GAE3C,GADAA,IAAaA,EACQ,kBAAVtwC,EACT,OAAO7wD,KAAKohG,kBAAkBvwC,EAAOswC,GAEvC,IAAInB,EAAWpB,EAAG5F,SAASh5F,KAAKg/F,KAC5BiB,EAAYrB,EAAG5F,SAASnoC,EAAMmuC,KAC9Bh5D,EAAQ,IAAI+4D,EAChB,MAAOiB,EAASH,WAAaI,EAAUJ,UACrC,GAA4B,WAAxBG,EAASK,aAA4Bc,GAAqC,WAAzBlB,EAAUI,WAExD,GAA6B,WAAzBJ,EAAUI,WACnBr6D,EAAMz8B,KAAK02F,EAAUp7D,YAChB,CACL,IAAI77B,EAASiG,KAAKkQ,IAAI6gF,EAASM,aAAcL,EAAUK,cACnDC,EAASP,EAASn7D,KAAK77B,GACvBw3F,EAAUP,EAAUp7D,KAAK77B,GAC7B,GAAIu3F,EAAO,UAET,SACSC,EAAQ,UACjBx6D,EAAMz8B,KAAKi3F,GAGXx6D,EAAMm5D,OAAOn2F,EAAQ41F,EAAGzB,WAAW+D,UAAUX,EAAOpD,WAAYqD,EAAQrD,WAAYgE,SAdtFn7D,EAAMm5D,OAAOP,EAAG51F,OAAOg3F,EAASn7D,SAkBpC,OAAOmB,EAAMq5D,QAGfN,EAAMt3F,UAAU25F,kBAAoB,SAAU53F,EAAO23F,GACnDA,IAAaA,EACb,IAAInB,EAAWpB,EAAG5F,SAASh5F,KAAKg/F,KAC5Bh6C,EAAS,EACb,MAAOg7C,EAASH,WAAa76C,GAAUx7C,EAAO,CAC5C,IAAIR,EAASg3F,EAASM,aAClBe,EAAWrB,EAASK,WACxBL,EAASn7D,OACQ,WAAbw8D,GAGoB,WAAbA,IAA0Br8C,EAASx7C,IAAU23F,KACtD33F,GAASR,GAEXg8C,GAAUh8C,GALRQ,GAASyF,KAAKkQ,IAAInW,EAAQQ,EAAQw7C,GAOtC,OAAOx7C,GAITrI,EAAOD,QAAU69F,GAKX,SAAU59F,EAAQD,GAExB,aAEA,IAAIkwF,EAAS5kF,OAAO/E,UAAU+P,eAC1B8pF,EAAQ90F,OAAO/E,UAAUgI,SACzB/C,EAAiBF,OAAOE,eACxB60F,EAAO/0F,OAAO60B,yBAEdhzB,EAAU,SAAiB0G,GAC9B,MAA6B,oBAAlB3J,MAAMiD,QACTjD,MAAMiD,QAAQ0G,GAGK,mBAApBusF,EAAMjhG,KAAK0U,IAGf3G,EAAgB,SAAuBrB,GAC1C,IAAKA,GAA2B,oBAApBu0F,EAAMjhG,KAAK0M,GACtB,OAAO,EAGR,IASI7G,EATAs7F,EAAoBpQ,EAAO/wF,KAAK0M,EAAK,eACrC00F,EAAmB10F,EAAIiK,aAAejK,EAAIiK,YAAYvP,WAAa2pF,EAAO/wF,KAAK0M,EAAIiK,YAAYvP,UAAW,iBAE9G,GAAIsF,EAAIiK,cAAgBwqF,IAAsBC,EAC7C,OAAO,EAMR,IAAKv7F,KAAO6G,GAEZ,MAAsB,qBAAR7G,GAAuBkrF,EAAO/wF,KAAK0M,EAAK7G,IAInDumC,EAAc,SAAqBt+B,EAAQxO,GAC1C+M,GAAmC,cAAjB/M,EAAQkK,KAC7B6C,EAAeyB,EAAQxO,EAAQkK,KAAM,CACpCstB,YAAY,EACZyI,cAAc,EACdx7B,MAAOzE,EAAQ+hG,SACfxqE,UAAU,IAGX/oB,EAAOxO,EAAQkK,MAAQlK,EAAQ+hG,UAK7BC,EAAc,SAAqB50F,EAAKlD,GAC3C,GAAa,cAATA,EAAsB,CACzB,IAAKunF,EAAO/wF,KAAK0M,EAAKlD,GACrB,OACM,GAAI03F,EAGV,OAAOA,EAAKx0F,EAAKlD,GAAMzF,MAIzB,OAAO2I,EAAIlD,IAGZ1I,EAAOD,QAAU,SAASwG,IACzB,IAAI/H,EAASkK,EAAM+3F,EAAKC,EAAMC,EAAa3vE,EACvChkB,EAASqD,UAAU,GACnB1I,EAAI,EACJE,EAASwI,UAAUxI,OACnB+4F,GAAO,EAaX,IAVsB,mBAAX5zF,IACV4zF,EAAO5zF,EACPA,EAASqD,UAAU,IAAM,GAEzB1I,EAAI,IAES,MAAVqF,GAAqC,kBAAXA,GAAyC,oBAAXA,KAC3DA,EAAS,IAGHrF,EAAIE,IAAUF,EAGpB,GAFAnJ,EAAU6R,UAAU1I,GAEL,MAAXnJ,EAEH,IAAKkK,KAAQlK,EACZiiG,EAAMD,EAAYxzF,EAAQtE,GAC1Bg4F,EAAOF,EAAYhiG,EAASkK,GAGxBsE,IAAW0zF,IAEVE,GAAQF,IAASzzF,EAAcyzF,KAAUC,EAAczzF,EAAQwzF,MAC9DC,GACHA,GAAc,EACd3vE,EAAQyvE,GAAOvzF,EAAQuzF,GAAOA,EAAM,IAEpCzvE,EAAQyvE,GAAOxzF,EAAcwzF,GAAOA,EAAM,GAI3Cn1D,EAAYt+B,EAAQ,CAAEtE,KAAMA,EAAM63F,SAAUh6F,EAAOq6F,EAAM5vE,EAAO0vE,MAGtC,qBAATA,GACjBp1D,EAAYt+B,EAAQ,CAAEtE,KAAMA,EAAM63F,SAAUG,KAQjD,OAAO1zF,IAMF,SAAUhN,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQ66F,QAAU76F,EAAQ8gG,WAAa9gG,EAAQ+gG,mBAAgBn8F,EAE/D,IAAIo8F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZigE,EAAU,EAAoB,GAE9BC,EAAWC,EAAuBF,GAElCG,EAAc,EAAoB,GAElCC,EAAeF,EAAuBC,GAEtCE,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErCE,EAAS,EAAoB,IAE7BC,EAAUN,EAAuBK,GAEjCE,EAAU,EAAoB,GAE9BC,EAAWR,EAAuBO,GAElCE,EAAQ,EAAoB,GAE5BC,EAASV,EAAuBS,GAEpC,SAAST,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAIC,EAAiB,EAEjBzB,EAAa,SAAU0B,GAGzB,SAAS1B,IAGP,OAFAmB,EAAgBnjG,KAAMgiG,GAEfoB,EAA2BpjG,MAAOgiG,EAAW7K,WAAa3qF,OAAO2K,eAAe6qF,IAAa32F,MAAMrL,KAAMwR,YAwClH,OA7CA8xF,EAAUtB,EAAY0B,GAQtBxB,EAAaF,EAAY,CAAC,CACxB97F,IAAK,SACL9B,MAAO,WACLshE,EAAKs8B,EAAWv6F,UAAU0vF,WAAa3qF,OAAO2K,eAAe6qF,EAAWv6F,WAAY,SAAUzH,MAAMK,KAAKL,MACzGA,KAAKm9F,WAAa,IAAIyF,EAAY7G,QAAQQ,WAAWI,MAAM38F,KAAKqnC,WAEjE,CACDnhC,IAAK,QACL9B,MAAO,WACL,OAAO,IAAIs+F,EAAa3G,SAAUkD,OAAOj/F,KAAKoE,SAAS,EAAIm+F,EAASxG,SAAS/7F,KAAK4rD,UAAW5rD,KAAKm9F,WAAW/oE,aAE9G,CACDluB,IAAK,SACL9B,MAAO,SAAgByF,EAAMzF,GAC3B,IAAIu/F,EAAYf,EAAY7G,QAAQF,MAAMhyF,EAAM+4F,EAAY7G,QAAQJ,MAAMiI,iBACzD,MAAbD,GACF3jG,KAAKm9F,WAAWwG,UAAUA,EAAWv/F,KAGxC,CACD8B,IAAK,WACL9B,MAAO,SAAkBoF,EAAOR,EAAQa,EAAMzF,GAC5CpE,KAAK2rC,OAAO9hC,EAAMzF,KAEnB,CACD8B,IAAK,WACL9B,MAAO,SAAkBoF,EAAOpF,EAAOy/F,GACrC,GAAqB,kBAAVz/F,GAAsBA,EAAMoR,SAAS,MAAO,CACrD,IAAIsuF,EAAQlB,EAAY7G,QAAQp0F,OAAOy0F,EAAMkC,UAC7Ct+F,KAAKG,OAAO4jG,aAAaD,EAAiB,IAAVt6F,EAAcxJ,KAAOA,KAAK6kC,MAC1Di/D,EAAME,SAAS,EAAG5/F,EAAMkK,MAAM,GAAI,SAElCo3D,EAAKs8B,EAAWv6F,UAAU0vF,WAAa3qF,OAAO2K,eAAe6qF,EAAWv6F,WAAY,WAAYzH,MAAMK,KAAKL,KAAMwJ,EAAOpF,EAAOy/F,OAK9H7B,EA9CQ,CA+CfY,EAAY7G,QAAQG,OAEtB8F,EAAW7tE,MAAQyuE,EAAY7G,QAAQJ,MAAMsI,WAI7C,IAAI7H,EAAQ,SAAU8H,GAGpB,SAAS9H,EAAM/0D,GACb87D,EAAgBnjG,KAAMo8F,GAEtB,IAAI+H,EAASf,EAA2BpjG,MAAOo8F,EAAMjF,WAAa3qF,OAAO2K,eAAeilF,IAAQ/7F,KAAKL,KAAMqnC,IAG3G,OADA88D,EAAOttF,MAAQ,GACRstF,EAyHT,OAjIAb,EAAUlH,EAAO8H,GAWjBhC,EAAa9F,EAAO,CAAC,CACnBl2F,IAAK,QACL9B,MAAO,WAUL,OATwB,MAApBpE,KAAK6W,MAAMmvB,QACbhmC,KAAK6W,MAAMmvB,MAAQhmC,KAAKokG,YAAYxB,EAAY7G,QAAQE,MAAMvqD,QAAO,SAAU1L,EAAOq+D,GACpF,OAAsB,IAAlBA,EAAKr7F,SACAg9B,EAEAA,EAAMi5D,OAAOoF,EAAKjgG,QAAS69F,EAAcoC,MAEjD,IAAI3B,EAAa3G,SAAWkD,OAAO,KAAMgD,EAAcjiG,QAErDA,KAAK6W,MAAMmvB,QAEnB,CACD9/B,IAAK,WACL9B,MAAO,SAAkBoF,EAAOR,GAC9B08D,EAAK02B,EAAM30F,UAAU0vF,WAAa3qF,OAAO2K,eAAeilF,EAAM30F,WAAY,WAAYzH,MAAMK,KAAKL,KAAMwJ,EAAOR,GAC9GhJ,KAAK6W,MAAQ,KAEd,CACD3Q,IAAK,WACL9B,MAAO,SAAkBoF,EAAOR,EAAQa,EAAMzF,GACxC4E,GAAU,IACV45F,EAAY7G,QAAQF,MAAMhyF,EAAM+4F,EAAY7G,QAAQJ,MAAMoC,OACxDv0F,EAAQR,IAAWhJ,KAAKgJ,UAC1BhJ,KAAK2rC,OAAO9hC,EAAMzF,GAGpBshE,EAAK02B,EAAM30F,UAAU0vF,WAAa3qF,OAAO2K,eAAeilF,EAAM30F,WAAY,WAAYzH,MAAMK,KAAKL,KAAMwJ,EAAOyF,KAAKkQ,IAAInW,EAAQhJ,KAAKgJ,SAAWQ,EAAQ,GAAIK,EAAMzF,GAEnKpE,KAAK6W,MAAQ,MAEd,CACD3Q,IAAK,WACL9B,MAAO,SAAkBoF,EAAOpF,EAAOy/F,GACrC,GAAW,MAAPA,EAAa,OAAOn+B,EAAK02B,EAAM30F,UAAU0vF,WAAa3qF,OAAO2K,eAAeilF,EAAM30F,WAAY,WAAYzH,MAAMK,KAAKL,KAAMwJ,EAAOpF,EAAOy/F,GAC7I,GAAqB,IAAjBz/F,EAAM4E,OAAV,CACA,IAAI4yB,EAAQx3B,EAAMsQ,MAAM,MACpBinB,EAAOC,EAAMtwB,QACbqwB,EAAK3yB,OAAS,IACZQ,EAAQxJ,KAAKgJ,SAAW,GAA2B,MAAtBhJ,KAAKskG,SAASC,KAC7C7+B,EAAK02B,EAAM30F,UAAU0vF,WAAa3qF,OAAO2K,eAAeilF,EAAM30F,WAAY,WAAYzH,MAAMK,KAAKL,KAAMiP,KAAKkQ,IAAI3V,EAAOxJ,KAAKgJ,SAAW,GAAI2yB,GAE3I37B,KAAKskG,SAASC,KAAKP,SAAShkG,KAAKskG,SAASC,KAAKv7F,SAAU2yB,GAE3D37B,KAAK6W,MAAQ,IAEf,IAAIitF,EAAQ9jG,KACZ47B,EAAM8V,QAAO,SAAUloC,EAAOmL,GAG5B,OAFAmvF,EAAQA,EAAMpvF,MAAMlL,GAAO,GAC3Bs6F,EAAME,SAAS,EAAGrvF,GACXA,EAAK3L,SACXQ,EAAQmyB,EAAK3yB,WAEjB,CACD9C,IAAK,eACL9B,MAAO,SAAsBw5F,EAAM4G,GACjC,IAAIlhD,EAAOtjD,KAAKskG,SAAShhD,KACzBoiB,EAAK02B,EAAM30F,UAAU0vF,WAAa3qF,OAAO2K,eAAeilF,EAAM30F,WAAY,eAAgBzH,MAAMK,KAAKL,KAAM49F,EAAM4G,GAC7GlhD,aAAgBw/C,EAAQ/G,SAC1Bz4C,EAAKtwC,SAEPhT,KAAK6W,MAAQ,KAEd,CACD3Q,IAAK,SACL9B,MAAO,WAIL,OAHyB,MAArBpE,KAAK6W,MAAM7N,SACbhJ,KAAK6W,MAAM7N,OAAS08D,EAAK02B,EAAM30F,UAAU0vF,WAAa3qF,OAAO2K,eAAeilF,EAAM30F,WAAY,SAAUzH,MAAMK,KAAKL,MAAQyjG,GAEtHzjG,KAAK6W,MAAM7N,SAEnB,CACD9C,IAAK,eACL9B,MAAO,SAAsB+J,EAAQq2F,GACnC9+B,EAAK02B,EAAM30F,UAAU0vF,WAAa3qF,OAAO2K,eAAeilF,EAAM30F,WAAY,eAAgBzH,MAAMK,KAAKL,KAAMmO,EAAQq2F,GACnHxkG,KAAK6W,MAAQ,KAEd,CACD3Q,IAAK,WACL9B,MAAO,SAAkBrE,GACvB2lE,EAAK02B,EAAM30F,UAAU0vF,WAAa3qF,OAAO2K,eAAeilF,EAAM30F,WAAY,WAAYzH,MAAMK,KAAKL,KAAMD,GACvGC,KAAK6W,MAAQ,KAEd,CACD3Q,IAAK,OACL9B,MAAO,SAAcoF,GACnB,OAAOk8D,EAAK02B,EAAM30F,UAAU0vF,WAAa3qF,OAAO2K,eAAeilF,EAAM30F,WAAY,OAAQzH,MAAMK,KAAKL,KAAMwJ,GAAO,KAElH,CACDtD,IAAK,cACL9B,MAAO,SAAqBqgG,GAC1B/+B,EAAK02B,EAAM30F,UAAU0vF,WAAa3qF,OAAO2K,eAAeilF,EAAM30F,WAAY,cAAezH,MAAMK,KAAKL,KAAMykG,GAC1GzkG,KAAK6W,MAAQ,KAEd,CACD3Q,IAAK,QACL9B,MAAO,SAAeoF,GACpB,IAAIk7F,EAAQlzF,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,IAAmBA,UAAU,GAE3E,GAAIkzF,IAAoB,IAAVl7F,GAAeA,GAASxJ,KAAKgJ,SAAWy6F,GAAiB,CACrE,IAAItxE,EAAQnyB,KAAKmyB,QACjB,OAAc,IAAV3oB,GACFxJ,KAAKG,OAAO4jG,aAAa5xE,EAAOnyB,MACzBA,OAEPA,KAAKG,OAAO4jG,aAAa5xE,EAAOnyB,KAAK6kC,MAC9B1S,GAGT,IAAI0S,EAAO6gC,EAAK02B,EAAM30F,UAAU0vF,WAAa3qF,OAAO2K,eAAeilF,EAAM30F,WAAY,QAASzH,MAAMK,KAAKL,KAAMwJ,EAAOk7F,GAEtH,OADA1kG,KAAK6W,MAAQ,GACNguB,MAKNu3D,EAlIG,CAmIVwG,EAAY7G,QAAQK,OAOtB,SAAS6F,EAAcrE,GACrB,IAAIhyC,EAAUp6C,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,GAElF,OAAY,MAARosF,EAAqBhyC,GACG,oBAAjBgyC,EAAKhyC,UACdA,GAAU,EAAI22C,EAASxG,SAASnwC,EAASgyC,EAAKhyC,YAE7B,MAAfgyC,EAAKz9F,QAA0C,UAAxBy9F,EAAKz9F,OAAOm+F,UAAwBV,EAAKz9F,OAAOwkG,QAAQxwE,QAAUypE,EAAK+G,QAAQxwE,MACjGy3B,EAEFq2C,EAAcrE,EAAKz9F,OAAQyrD,IAfpCwwC,EAAMkC,SAAW,QACjBlC,EAAM8B,QAAU,IAChB9B,EAAMwI,aAAe,QACrBxI,EAAMyI,gBAAkB,CAAC7B,EAASjH,QAAS6G,EAAY7G,QAAQG,MAAOgH,EAAOnH,SAe7E76F,EAAQ+gG,cAAgBA,EACxB/gG,EAAQ8gG,WAAaA,EACrB9gG,EAAQ66F,QAAUK,GAIZ,SAAUj7F,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQ66F,QAAU76F,EAAQ4jG,SAAW5jG,EAAQ6jG,kBAAej/F,EAE5D,IAAIk/F,EAA4B,oBAAXtkE,QAAoD,kBAApBA,OAAOs4D,SAAwB,SAAUjsF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,oBAAX2zB,QAAyB3zB,EAAIiK,cAAgB0pB,QAAU3zB,IAAQ2zB,OAAOj5B,UAAY,gBAAkBsF,GAElQk4F,EAAiB,WAAc,SAASC,EAAcnwF,EAAKjM,GAAK,IAAIq8F,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKx/F,EAAW,IAAM,IAAK,IAAiCy/F,EAA7BnH,EAAKrpF,EAAI2rB,OAAOs4D,cAAmBoM,GAAMG,EAAKnH,EAAGv5D,QAAQpiC,MAAO2iG,GAAK,EAA6B,GAArBD,EAAK57F,KAAKg8F,EAAGnhG,OAAY0E,GAAKq8F,EAAKn8F,SAAWF,EAAG,MAAW,MAAOzE,GAAOghG,GAAK,EAAMC,EAAKjhG,EAAO,QAAU,KAAW+gG,GAAMhH,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIiH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUpwF,EAAKjM,GAAK,GAAIsC,MAAMiD,QAAQ0G,GAAQ,OAAOA,EAAY,GAAI2rB,OAAOs4D,YAAYxsF,OAAOuI,GAAQ,OAAOmwF,EAAcnwF,EAAKjM,GAAa,MAAM,IAAIN,UAAU,yDAAjkB,GAEjB05F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEnB,EAAoB,IAEpB,IAAIM,EAAc,EAAoB,GAElCC,EAAeF,EAAuBC,GAEtC+C,EAAU,EAAoB,IAE9BC,EAAWjD,EAAuBgD,GAElCE,EAAY,EAAoB,GAEhCC,EAAYnD,EAAuBkD,GAEnCE,EAAU,EAAoB,GAE9BC,EAAWrD,EAAuBoD,GAElCjD,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErCmD,EAAa,EAAoB,IAEjCC,EAAcvD,EAAuBsD,GAErCxD,EAAU,EAAoB,GAE9BC,EAAWC,EAAuBF,GAElC0D,EAAU,EAAoB,IAE9BC,EAAWzD,EAAuBwD,GAElCE,EAAS,EAAoB,IAE7BC,EAAU3D,EAAuB0D,GAErC,SAAS1D,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASq5F,EAAgBr5F,EAAK7G,EAAK9B,GAAiK,OAApJ8B,KAAO6G,EAAOP,OAAOE,eAAeK,EAAK7G,EAAK,CAAE9B,MAAOA,EAAO+yB,YAAY,EAAMyI,cAAc,EAAM1I,UAAU,IAAkBnqB,EAAI7G,GAAO9B,EAAgB2I,EAE3M,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,IAAI69F,GAAQ,EAAIJ,EAASlK,SAAS,SAE9BuK,EAAQ,WAqDV,SAASA,EAAMl9D,GACb,IAAI+6D,EAASnkG,KAETL,EAAU6R,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,GAMlF,GAJA2xF,EAAgBnjG,KAAMsmG,GAEtBtmG,KAAKL,QAAUolG,EAAa37D,EAAWzpC,GACvCK,KAAKopC,UAAYppC,KAAKL,QAAQypC,UACR,MAAlBppC,KAAKopC,UACP,OAAOi9D,EAAM36F,MAAM,0BAA2B09B,GAE5CppC,KAAKL,QAAQ0mG,OACfC,EAAMD,MAAMrmG,KAAKL,QAAQ0mG,OAE3B,IAAIE,EAAOvmG,KAAKopC,UAAUo9D,UAAUv2F,OACpCjQ,KAAKopC,UAAUq9D,UAAUlmG,IAAI,gBAC7BP,KAAKopC,UAAUo9D,UAAY,GAC3BxmG,KAAKopC,UAAUs9D,QAAU1mG,KACzBA,KAAKk0B,KAAOl0B,KAAK2mG,aAAa,aAC9B3mG,KAAKk0B,KAAKuyE,UAAUlmG,IAAI,YACxBP,KAAKk0B,KAAKtgB,aAAa,cAAc,GACrC5T,KAAK4mG,mBAAqB5mG,KAAKL,QAAQinG,oBAAsB5mG,KAAKk0B,KAClEl0B,KAAK6mG,QAAU,IAAIlB,EAAU5J,QAC7B/7F,KAAK8mG,OAASlE,EAAY7G,QAAQp0F,OAAO3H,KAAKk0B,KAAM,CAClD2yE,QAAS7mG,KAAK6mG,QACdE,UAAW/mG,KAAKL,QAAQisD,UAE1B5rD,KAAKgnG,OAAS,IAAIvB,EAAS1J,QAAQ/7F,KAAK8mG,QACxC9mG,KAAKinG,UAAY,IAAIlB,EAAYhK,QAAQ/7F,KAAK8mG,OAAQ9mG,KAAK6mG,SAC3D7mG,KAAKknG,MAAQ,IAAIlnG,KAAKL,QAAQunG,MAAMlnG,KAAMA,KAAKL,SAC/CK,KAAKmnG,SAAWnnG,KAAKknG,MAAME,UAAU,YACrCpnG,KAAKqnG,UAAYrnG,KAAKknG,MAAME,UAAU,aACtCpnG,KAAKsnG,QAAUtnG,KAAKknG,MAAME,UAAU,WACpCpnG,KAAKknG,MAAM5qC,OACXt8D,KAAK6mG,QAAQU,GAAG5B,EAAU5J,QAAQ/mE,OAAOwyE,eAAe,SAAU7gG,GAC5DA,IAASg/F,EAAU5J,QAAQ/mE,OAAOyyE,aACpCtD,EAAOjwE,KAAKuyE,UAAUiB,OAAO,WAAYvD,EAAO6C,OAAOW,cAG3D3nG,KAAK6mG,QAAQU,GAAG5B,EAAU5J,QAAQ/mE,OAAO4yE,eAAe,SAAUl+F,EAAQm+F,GACxE,IAAIhqF,EAAQsmF,EAAO8C,UAAUa,UACzBt+F,EAAQqU,GAA0B,IAAjBA,EAAM7U,OAAe6U,EAAMrU,WAAQ1D,EACxDiiG,EAAO1nG,KAAK8jG,GAAQ,WAClB,OAAOA,EAAO6C,OAAOl0D,OAAO,KAAM+0D,EAAWr+F,KAC5CE,MAEL,IAAIs+F,EAAWhoG,KAAKqnG,UAAUY,QAAQ,yDAA2D1B,EAAO,qBACxGvmG,KAAKkoG,YAAYF,GACjBhoG,KAAKsnG,QAAQ59B,QACT1pE,KAAKL,QAAQwoG,aACfnoG,KAAKk0B,KAAKtgB,aAAa,mBAAoB5T,KAAKL,QAAQwoG,aAEtDnoG,KAAKL,QAAQyoG,UACfpoG,KAAKqoG,UAmYT,OA7eAnG,EAAaoE,EAAO,KAAM,CAAC,CACzBpgG,IAAK,QACL9B,MAAO,SAAe+9D,IACN,IAAVA,IACFA,EAAQ,OAEV8jC,EAASlK,QAAQuM,MAAMnmC,KAExB,CACDj8D,IAAK,OACL9B,MAAO,SAAc4vB,GACnB,OAAOA,EAAK0yE,SAAW9D,EAAY7G,QAAQH,KAAK5nE,KAEjD,CACD9tB,IAAK,SACL9B,MAAO,SAAiByF,GAItB,OAH0B,MAAtB7J,KAAKuoG,QAAQ1+F,IACfw8F,EAAM36F,MAAM,iBAAmB7B,EAAO,qCAEjC7J,KAAKuoG,QAAQ1+F,KAErB,CACD3D,IAAK,WACL9B,MAAO,SAAkBiO,EAAMlE,GAC7B,IAAI+uF,EAAQl9F,KAERwoG,EAAYh3F,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,IAAmBA,UAAU,GAE/E,GAAoB,kBAATa,EAAmB,CAC5B,IAAIxI,EAAOwI,EAAKksF,UAAYlsF,EAAKisF,SACb,kBAATz0F,EAET7J,KAAKukE,SAAS,WAAa16D,EAAMwI,EAAMlE,GAEvC3B,OAAOqC,KAAKwD,GAAMrM,SAAQ,SAAUE,GAClCg3F,EAAM34B,SAASr+D,EAAKmM,EAAKnM,GAAMiI,WAIT,MAAtBnO,KAAKuoG,QAAQl2F,IAAkBm2F,GACjCnC,EAAM1vF,KAAK,eAAiBtE,EAAO,QAASlE,GAE9CnO,KAAKuoG,QAAQl2F,GAAQlE,GAChBkE,EAAKilB,WAAW,WAAajlB,EAAKilB,WAAW,cAAoC,aAApBnpB,EAAOmwF,SACvEsE,EAAY7G,QAAQx3B,SAASp2D,GACpBkE,EAAKilB,WAAW,YAAyC,oBAApBnpB,EAAOo2D,UACrDp2D,EAAOo2D,eAgEf29B,EAAaoE,EAAO,CAAC,CACnBpgG,IAAK,eACL9B,MAAO,SAAsBglC,GAC3B,IAAIq/D,EAAUj3F,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,KAElF,GAAyB,kBAAd43B,EAAwB,CACjC,IAAIq1D,EAAYr1D,EAChBA,EAAYx2B,SAASa,cAAc,OACnC21B,EAAUq9D,UAAUlmG,IAAIk+F,GAG1B,OADAz+F,KAAKopC,UAAU26D,aAAa36D,EAAWq/D,GAChCr/D,IAER,CACDljC,IAAK,OACL9B,MAAO,WACLpE,KAAKinG,UAAUyB,SAAS,QAEzB,CACDxiG,IAAK,aACL9B,MAAO,SAAoBoF,EAAOR,EAAQU,GACxC,IAAIi/F,EAAS3oG,KAET4oG,EAAY9D,EAASt7F,EAAOR,EAAQU,GAEpCm/F,EAAa5D,EAAe2D,EAAW,GAM3C,OAJAp/F,EAAQq/F,EAAW,GACnB7/F,EAAS6/F,EAAW,GACpBn/F,EAASm/F,EAAW,GAEbd,EAAO1nG,KAAKL,MAAM,WACvB,OAAO2oG,EAAO3B,OAAO8B,WAAWt/F,EAAOR,KACtCU,EAAQF,GAAQ,EAAIR,KAExB,CACD9C,IAAK,UACL9B,MAAO,WACLpE,KAAK+oG,QAAO,KAEb,CACD7iG,IAAK,SACL9B,MAAO,WACL,IAAIwzD,IAAUpmD,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,KAAmBA,UAAU,GAE7ExR,KAAK8mG,OAAOiC,OAAOnxC,GACnB53D,KAAKopC,UAAUq9D,UAAUiB,OAAO,eAAgB9vC,KAEjD,CACD1xD,IAAK,QACL9B,MAAO,WACL,IAAI4kG,EAAYhpG,KAAK4mG,mBAAmBoC,UACxChpG,KAAKinG,UAAUgC,QACfjpG,KAAK4mG,mBAAmBoC,UAAYA,EACpChpG,KAAKkpG,mBAEN,CACDhjG,IAAK,SACL9B,MAAO,SAAgByF,EAAMzF,GAC3B,IAAI+kG,EAASnpG,KAET0J,EAAS8H,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAKm0F,EAAU5J,QAAQ//E,QAAQotF,IAE3G,OAAOrB,EAAO1nG,KAAKL,MAAM,WACvB,IAAI6d,EAAQsrF,EAAOE,cAAa,GAC5B1qE,EAAS,IAAI+jE,EAAa3G,QAC9B,GAAa,MAATl+E,EACF,OAAO8gB,EACF,GAAIikE,EAAY7G,QAAQF,MAAMhyF,EAAM+4F,EAAY7G,QAAQJ,MAAMoC,OACnEp/D,EAASwqE,EAAOnC,OAAOsC,WAAWzrF,EAAMrU,MAAOqU,EAAM7U,OAAQo9F,EAAgB,GAAIv8F,EAAMzF,QAClF,IAAqB,IAAjByZ,EAAM7U,OAEf,OADAmgG,EAAOlC,UAAUt7D,OAAO9hC,EAAMzF,GACvBu6B,EAEPA,EAASwqE,EAAOnC,OAAOuC,WAAW1rF,EAAMrU,MAAOqU,EAAM7U,OAAQo9F,EAAgB,GAAIv8F,EAAMzF,IAGzF,OADA+kG,EAAOK,aAAa3rF,EAAO8nF,EAAU5J,QAAQ//E,QAAQytF,QAC9C9qE,IACNj1B,KAEJ,CACDxD,IAAK,aACL9B,MAAO,SAAoBoF,EAAOR,EAAQa,EAAMzF,EAAOsF,GACrD,IAAIggG,EAAS1pG,KAET4rD,OAAU,EAEV+9C,EAAa7E,EAASt7F,EAAOR,EAAQa,EAAMzF,EAAOsF,GAElDkgG,EAAa3E,EAAe0E,EAAY,GAO5C,OALAngG,EAAQogG,EAAW,GACnB5gG,EAAS4gG,EAAW,GACpBh+C,EAAUg+C,EAAW,GACrBlgG,EAASkgG,EAAW,GAEb7B,EAAO1nG,KAAKL,MAAM,WACvB,OAAO0pG,EAAO1C,OAAOsC,WAAW9/F,EAAOR,EAAQ4iD,KAC9CliD,EAAQF,EAAO,KAEnB,CACDtD,IAAK,aACL9B,MAAO,SAAoBoF,EAAOR,EAAQa,EAAMzF,EAAOsF,GACrD,IAAImgG,EAAS7pG,KAET4rD,OAAU,EAEVk+C,EAAahF,EAASt7F,EAAOR,EAAQa,EAAMzF,EAAOsF,GAElDqgG,EAAa9E,EAAe6E,EAAY,GAO5C,OALAtgG,EAAQugG,EAAW,GACnB/gG,EAAS+gG,EAAW,GACpBn+C,EAAUm+C,EAAW,GACrBrgG,EAASqgG,EAAW,GAEbhC,EAAO1nG,KAAKL,MAAM,WACvB,OAAO6pG,EAAO7C,OAAOuC,WAAW//F,EAAOR,EAAQ4iD,KAC9CliD,EAAQF,EAAO,KAEnB,CACDtD,IAAK,YACL9B,MAAO,SAAmBoF,GACxB,IAAIR,EAASwI,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,EAE7E27B,OAAS,EAEXA,EADmB,kBAAV3jC,EACAxJ,KAAKinG,UAAU+C,UAAUxgG,EAAOR,GAEhChJ,KAAKinG,UAAU+C,UAAUxgG,EAAMA,MAAOA,EAAMR,QAEvD,IAAIihG,EAAkBjqG,KAAKopC,UAAUX,wBACrC,MAAO,CACL7N,OAAQuS,EAAOvS,OAASqvE,EAAgBtvE,IACxCzB,OAAQiU,EAAOjU,OACftf,KAAMuzB,EAAOvzB,KAAOqwF,EAAgBrwF,KACpCC,MAAOszB,EAAOtzB,MAAQowF,EAAgBrwF,KACtC+gB,IAAKwS,EAAOxS,IAAMsvE,EAAgBtvE,IAClC3C,MAAOmV,EAAOnV,SAGjB,CACD9xB,IAAK,cACL9B,MAAO,WACL,IAAIoF,EAAQgI,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,EAC5ExI,EAASwI,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAKxR,KAAKkqG,YAAc1gG,EAEhG2gG,EAAarF,EAASt7F,EAAOR,GAE7BohG,EAAanF,EAAekF,EAAY,GAK5C,OAHA3gG,EAAQ4gG,EAAW,GACnBphG,EAASohG,EAAW,GAEbpqG,KAAKgnG,OAAOqD,YAAY7gG,EAAOR,KAEvC,CACD9C,IAAK,YACL9B,MAAO,WACL,IAAIoF,EAAQgI,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAKxR,KAAKqpG,cAAa,GAC9FrgG,EAASwI,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,EAEjF,MAAqB,kBAAVhI,EACFxJ,KAAKgnG,OAAOsD,UAAU9gG,EAAOR,GAE7BhJ,KAAKgnG,OAAOsD,UAAU9gG,EAAMA,MAAOA,EAAMR,UAGnD,CACD9C,IAAK,WACL9B,MAAO,SAAkBw5F,GACvB,OAAOA,EAAK54C,OAAOhlD,KAAK8mG,UAEzB,CACD5gG,IAAK,YACL9B,MAAO,WACL,OAAOpE,KAAK8mG,OAAO99F,WAEpB,CACD9C,IAAK,UACL9B,MAAO,SAAiBoF,GACtB,OAAOxJ,KAAK8mG,OAAOzC,KAAK76F,KAEzB,CACDtD,IAAK,UACL9B,MAAO,SAAiBoF,GACtB,OAAOxJ,KAAK8mG,OAAOnyF,KAAKnL,KAEzB,CACDtD,IAAK,WACL9B,MAAO,WACL,IAAIoF,EAAQgI,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,EAC5ExI,EAASwI,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK4I,OAAOmwF,UAExF,MAAqB,kBAAV/gG,EACFxJ,KAAK8mG,OAAOlrE,MAAMpyB,EAAMA,MAAOA,EAAMR,QAErChJ,KAAK8mG,OAAOlrE,MAAMpyB,EAAOR,KAGnC,CACD9C,IAAK,YACL9B,MAAO,SAAmByF,GACxB,OAAO7J,KAAKknG,MAAMxM,QAAQ7wF,KAE3B,CACD3D,IAAK,eACL9B,MAAO,WACL,IAAI6kG,EAAQz3F,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,IAAmBA,UAAU,GAI3E,OAFIy3F,GAAOjpG,KAAKipG,QAChBjpG,KAAK8yC,SACE9yC,KAAKinG,UAAUt6C,WAAW,KAElC,CACDzmD,IAAK,UACL9B,MAAO,WACL,IAAIoF,EAAQgI,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,EAC5ExI,EAASwI,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAKxR,KAAKkqG,YAAc1gG,EAEhGghG,EAAa1F,EAASt7F,EAAOR,GAE7ByhG,EAAcxF,EAAeuF,EAAY,GAK7C,OAHAhhG,EAAQihG,EAAY,GACpBzhG,EAASyhG,EAAY,GAEdzqG,KAAKgnG,OAAO0D,QAAQlhG,EAAOR,KAEnC,CACD9C,IAAK,WACL9B,MAAO,WACL,OAAOpE,KAAKinG,UAAU0D,aAEvB,CACDzkG,IAAK,cACL9B,MAAO,SAAqBoF,EAAOohG,EAAOxmG,GACxC,IAAIymG,EAAS7qG,KAET0J,EAAS8H,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK80F,EAAMtqF,QAAQotF,IAE/F,OAAOrB,EAAO1nG,KAAKL,MAAM,WACvB,OAAO6qG,EAAO7D,OAAO8D,YAAYthG,EAAOohG,EAAOxmG,KAC9CsF,EAAQF,KAEZ,CACDtD,IAAK,aACL9B,MAAO,SAAoBoF,EAAOmyB,EAAM9xB,EAAMzF,EAAOsF,GACnD,IAAIqhG,EAAS/qG,KAET4rD,OAAU,EAEVo/C,EAAclG,EAASt7F,EAAO,EAAGK,EAAMzF,EAAOsF,GAE9CuhG,EAAchG,EAAe+F,EAAa,GAM9C,OAJAxhG,EAAQyhG,EAAY,GACpBr/C,EAAUq/C,EAAY,GACtBvhG,EAASuhG,EAAY,GAEdlD,EAAO1nG,KAAKL,MAAM,WACvB,OAAO+qG,EAAO/D,OAAOkE,WAAW1hG,EAAOmyB,EAAMiwB,KAC5CliD,EAAQF,EAAOmyB,EAAK3yB,UAExB,CACD9C,IAAK,YACL9B,MAAO,WACL,OAAQpE,KAAKopC,UAAUq9D,UAAUtyC,SAAS,iBAE3C,CACDjuD,IAAK,MACL9B,MAAO,WACL,OAAOpE,KAAK6mG,QAAQsE,IAAI9/F,MAAMrL,KAAK6mG,QAASr1F,aAE7C,CACDtL,IAAK,KACL9B,MAAO,WACL,OAAOpE,KAAK6mG,QAAQU,GAAGl8F,MAAMrL,KAAK6mG,QAASr1F,aAE5C,CACDtL,IAAK,OACL9B,MAAO,WACL,OAAOpE,KAAK6mG,QAAQuE,KAAK//F,MAAMrL,KAAK6mG,QAASr1F,aAE9C,CACDtL,IAAK,YACL9B,MAAO,SAAmBoF,EAAO+8F,EAAM78F,GACrC1J,KAAKqnG,UAAUgE,qBAAqB7hG,EAAO+8F,EAAM78F,KAElD,CACDxD,IAAK,eACL9B,MAAO,SAAsBoF,EAAOR,EAAQU,GAC1C,IAAI4hG,EAAStrG,KAETurG,EAAczG,EAASt7F,EAAOR,EAAQU,GAEtC8hG,EAAcvG,EAAesG,EAAa,GAM9C,OAJA/hG,EAAQgiG,EAAY,GACpBxiG,EAASwiG,EAAY,GACrB9hG,EAAS8hG,EAAY,GAEdzD,EAAO1nG,KAAKL,MAAM,WACvB,OAAOsrG,EAAOtE,OAAOyE,aAAajiG,EAAOR,KACxCU,EAAQF,KAEZ,CACDtD,IAAK,iBACL9B,MAAO,WACLpE,KAAKinG,UAAUiC,eAAelpG,KAAK4mG,sBAEpC,CACD1gG,IAAK,cACL9B,MAAO,SAAqB4hC,GAC1B,IAAI0lE,EAAU1rG,KAEV0J,EAAS8H,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAKm0F,EAAU5J,QAAQ//E,QAAQotF,IAE3G,OAAOrB,EAAO1nG,KAAKL,MAAM,WACvBgmC,EAAQ,IAAI08D,EAAa3G,QAAQ/1D,GACjC,IAAIh9B,EAAS0iG,EAAQxB,YACjByB,EAAUD,EAAQ1E,OAAO8B,WAAW,EAAG9/F,GACvC4iG,EAAUF,EAAQ1E,OAAO6E,WAAW7lE,GACpCo5D,EAASwM,EAAQ5M,IAAI4M,EAAQ5M,IAAIh2F,OAAS,GAChC,MAAVo2F,GAA2C,kBAAlBA,EAAOH,QAAmE,OAA5CG,EAAOH,OAAOG,EAAOH,OAAOj2F,OAAS,KAC9F0iG,EAAQ1E,OAAO8B,WAAW4C,EAAQxB,YAAc,EAAG,GACnD0B,EAAQ1oE,OAAO,IAEjB,IAAIle,EAAM2mF,EAAQ5L,QAAQ6L,GAC1B,OAAO5mF,IACNtb,KAEJ,CACDxD,IAAK,eACL9B,MAAO,SAAsBoF,EAAOR,EAAQU,GAC1C,GAAa,MAATF,EACFxJ,KAAKinG,UAAUyB,SAAS,KAAM1/F,GAAUs9F,EAAMtqF,QAAQotF,SACjD,CACL,IAAI0C,EAAchH,EAASt7F,EAAOR,EAAQU,GAEtCqiG,EAAc9G,EAAe6G,EAAa,GAE9CtiG,EAAQuiG,EAAY,GACpB/iG,EAAS+iG,EAAY,GACrBriG,EAASqiG,EAAY,GAErB/rG,KAAKinG,UAAUyB,SAAS,IAAI5C,EAAWkG,MAAMxiG,EAAOR,GAASU,GACzDA,IAAWi8F,EAAU5J,QAAQ//E,QAAQytF,QACvCzpG,KAAKinG,UAAUiC,eAAelpG,KAAK4mG,uBAIxC,CACD1gG,IAAK,UACL9B,MAAO,SAAiBu3B,GACtB,IAAIjyB,EAAS8H,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAKm0F,EAAU5J,QAAQ//E,QAAQotF,IAEvGpjE,GAAQ,IAAI08D,EAAa3G,SAAUkD,OAAOtjE,GAC9C,OAAO37B,KAAKkoG,YAAYliE,EAAOt8B,KAEhC,CACDxD,IAAK,SACL9B,MAAO,WACL,IAAIsF,EAAS8H,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAKm0F,EAAU5J,QAAQ//E,QAAQiwF,KAEvGttE,EAAS3+B,KAAK8mG,OAAOh0D,OAAOppC,GAEhC,OADA1J,KAAKinG,UAAUn0D,OAAOppC,GACfi1B,IAER,CACDz4B,IAAK,iBACL9B,MAAO,SAAwB4hC,GAC7B,IAAIkmE,EAAUlsG,KAEV0J,EAAS8H,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAKm0F,EAAU5J,QAAQ//E,QAAQotF,IAE3G,OAAOrB,EAAO1nG,KAAKL,MAAM,WAEvB,OADAgmC,EAAQ,IAAI08D,EAAa3G,QAAQ/1D,GAC1BkmE,EAAQlF,OAAO6E,WAAW7lE,EAAOt8B,KACvCA,GAAQ,OAIR48F,EA9eG,GAugBZ,SAASvB,EAAa37D,EAAWwiC,GAS/B,GARAA,GAAa,EAAI22B,EAASxG,UAAS,EAAM,CACvC3yD,UAAWA,EACXsxD,QAAS,CACP2M,WAAW,EACXF,UAAU,EACVG,SAAS,IAEV17B,GACEA,EAAWs7B,OAASt7B,EAAWs7B,QAAUZ,EAAM6F,SAASjF,OAI3D,GADAt7B,EAAWs7B,MAAQZ,EAAM8F,OAAO,UAAYxgC,EAAWs7B,OAC/B,MAApBt7B,EAAWs7B,MACb,MAAM,IAAIn7F,MAAM,iBAAmB6/D,EAAWs7B,MAAQ,+BAJxDt7B,EAAWs7B,MAAQf,EAAQpK,QAO7B,IAAIsQ,GAAc,EAAI9J,EAASxG,UAAS,EAAM,GAAInwB,EAAWs7B,MAAMiF,UACnE,CAACE,EAAazgC,GAAY5lE,SAAQ,SAAUjE,GAC1CA,EAAO24F,QAAU34F,EAAO24F,SAAW,GACnCluF,OAAOqC,KAAK9M,EAAO24F,SAAS10F,SAAQ,SAAU7E,IACb,IAA3BY,EAAO24F,QAAQv5F,KACjBY,EAAO24F,QAAQv5F,GAAU,UAI/B,IAAImrG,EAAc9/F,OAAOqC,KAAKw9F,EAAY3R,SAASz5F,OAAOuL,OAAOqC,KAAK+8D,EAAW8uB,UAC7E6R,EAAeD,EAAY56D,QAAO,SAAU3vC,EAAQ8H,GACtD,IAAI2iG,EAAclG,EAAM8F,OAAO,WAAaviG,GAM5C,OALmB,MAAf2iG,EACFnG,EAAM36F,MAAM,eAAiB7B,EAAO,4CAEpC9H,EAAO8H,GAAQ2iG,EAAYL,UAAY,GAElCpqG,IACN,IAmBH,OAjB0B,MAAtB6pE,EAAW8uB,SAAmB9uB,EAAW8uB,QAAQ+R,SAAW7gC,EAAW8uB,QAAQ+R,QAAQz1F,cAAgBxK,SACzGo/D,EAAW8uB,QAAQ+R,QAAU,CAC3BrjE,UAAWwiC,EAAW8uB,QAAQ+R,UAGlC7gC,GAAa,EAAI22B,EAASxG,UAAS,EAAM,GAAIuK,EAAM6F,SAAU,CAAEzR,QAAS6R,GAAgBF,EAAazgC,GACrG,CAAC,SAAU,YAAa,sBAAsB5lE,SAAQ,SAAUE,GAC/B,kBAApB0lE,EAAW1lE,KACpB0lE,EAAW1lE,GAAO0M,SAAS85F,cAAc9gC,EAAW1lE,QAGxD0lE,EAAW8uB,QAAUluF,OAAOqC,KAAK+8D,EAAW8uB,SAAShpD,QAAO,SAAU3vC,EAAQ8H,GAI5E,OAHI+hE,EAAW8uB,QAAQ7wF,KACrB9H,EAAO8H,GAAQ+hE,EAAW8uB,QAAQ7wF,IAE7B9H,IACN,IACI6pE,EAKT,SAASm8B,EAAO4E,EAAUjjG,EAAQF,EAAO8B,GACvC,GAAItL,KAAKL,QAAQitG,SAAW5sG,KAAK6sG,aAAenjG,IAAWi8F,EAAU5J,QAAQ//E,QAAQiwF,KACnF,OAAO,IAAIvJ,EAAa3G,QAE1B,IAAIl+E,EAAiB,MAATrU,EAAgB,KAAOxJ,KAAKqpG,eACpCyD,EAAW9sG,KAAKgnG,OAAOhhE,MACvBrH,EAASguE,IAUb,GATa,MAAT9uF,KACY,IAAVrU,IAAgBA,EAAQqU,EAAMrU,OACrB,MAAT8B,EACFuS,EAAQkvF,EAAWlvF,EAAO8gB,EAAQj1B,GACf,IAAV4B,IACTuS,EAAQkvF,EAAWlvF,EAAOrU,EAAO8B,EAAO5B,IAE1C1J,KAAKwpG,aAAa3rF,EAAO8nF,EAAU5J,QAAQ//E,QAAQytF,SAEjD9qE,EAAO31B,SAAW,EAAG,CACvB,IAAIgkG,EAKEC,EAHF17F,EAAO,CAACo0F,EAAU5J,QAAQ/mE,OAAOyyE,YAAa9oE,EAAQmuE,EAAUpjG,GAEpE,IADCsjG,EAAWhtG,KAAK6mG,SAASqG,KAAK7hG,MAAM2hG,EAAU,CAACrH,EAAU5J,QAAQ/mE,OAAOwyE,eAAevmG,OAAOsQ,IAC3F7H,IAAWi8F,EAAU5J,QAAQ//E,QAAQytF,QAGtCwD,EAAYjtG,KAAK6mG,SAASqG,KAAK7hG,MAAM4hG,EAAW17F,GAGrD,OAAOotB,EAGT,SAASmmE,EAASt7F,EAAOR,EAAQa,EAAMzF,EAAOsF,GAC5C,IAAIkiD,EAAU,GAwBd,MAvB2B,kBAAhBpiD,EAAMA,OAA8C,kBAAjBA,EAAMR,OAE5B,kBAAXA,GACTU,EAAStF,EAAOA,EAAQyF,EAAMA,EAAOb,EAAQA,EAASQ,EAAMR,OAAQQ,EAAQA,EAAMA,QAElFR,EAASQ,EAAMR,OAAQQ,EAAQA,EAAMA,OAEZ,kBAAXR,IAChBU,EAAStF,EAAOA,EAAQyF,EAAMA,EAAOb,EAAQA,EAAS,GAGY,YAA/C,qBAATa,EAAuB,YAAcm7F,EAAQn7F,KACvD+hD,EAAU/hD,EACVH,EAAStF,GACgB,kBAATyF,IACH,MAATzF,EACFwnD,EAAQ/hD,GAAQzF,EAEhBsF,EAASG,GAIbH,EAASA,GAAUi8F,EAAU5J,QAAQ//E,QAAQotF,IACtC,CAAC5/F,EAAOR,EAAQ4iD,EAASliD,GAGlC,SAASqjG,EAAWlvF,EAAOrU,EAAOR,EAAQU,GACxC,GAAa,MAATmU,EAAe,OAAO,KAC1B,IAAIpE,OAAQ,EACRC,OAAM,EACV,GAAIlQ,aAAiBk5F,EAAa3G,QAAS,CACzC,IAAIoR,EAAO,CAACtvF,EAAMrU,MAAOqU,EAAMrU,MAAQqU,EAAM7U,QAAQyS,KAAI,SAAUgB,GACjE,OAAOjT,EAAM43F,kBAAkB3kF,EAAK/S,IAAWi8F,EAAU5J,QAAQ//E,QAAQiwF,SAGvEmB,EAAQnI,EAAekI,EAAM,GAEjC1zF,EAAQ2zF,EAAM,GACd1zF,EAAM0zF,EAAM,OACP,CACL,IAAIC,EAAQ,CAACxvF,EAAMrU,MAAOqU,EAAMrU,MAAQqU,EAAM7U,QAAQyS,KAAI,SAAUgB,GAClE,OAAIA,EAAMjT,GAASiT,IAAQjT,GAASE,IAAWi8F,EAAU5J,QAAQ//E,QAAQiwF,KAAaxvF,EAClFzT,GAAU,EACLyT,EAAMzT,EAENiG,KAAKmQ,IAAI5V,EAAOiT,EAAMzT,MAI7BskG,EAAQrI,EAAeoI,EAAO,GAElC5zF,EAAQ6zF,EAAM,GACd5zF,EAAM4zF,EAAM,GAEd,OAAO,IAAIxH,EAAWkG,MAAMvyF,EAAOC,EAAMD,GAvK3C6sF,EAAM6F,SAAW,CACfh/D,OAAQ,KACRye,QAAS,KACT8uC,QAAS,GACTyN,YAAa,GACbC,UAAU,EACVxB,mBAAoB,KACpBgG,QAAQ,EACR1F,MAAO,WAETZ,EAAMtxE,OAAS2wE,EAAU5J,QAAQ/mE,OACjCsxE,EAAMtqF,QAAU2pF,EAAU5J,QAAQ//E,QAElCsqF,EAAMjwF,QAA2B,QAEjCiwF,EAAMiC,QAAU,CACd,MAAS7F,EAAa3G,QACtB,UAAa6G,EAAY7G,QACzB,cAAe8J,EAAS9J,QACxB,aAAcoK,EAAQpK,SAuJxB76F,EAAQ6jG,aAAeA,EACvB7jG,EAAQ4jG,SAAWA,EACnB5jG,EAAQ66F,QAAUuK,GAIZ,SAAUnlG,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI89F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZ4gE,EAAQ,EAAoB,GAE5BC,EAASV,EAAuBS,GAEhCN,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAInH,EAAS,SAAUkR,GAGrB,SAASlR,IAGP,OAFA8G,EAAgBnjG,KAAMq8F,GAEf+G,EAA2BpjG,MAAOq8F,EAAOlF,WAAa3qF,OAAO2K,eAAeklF,IAAShxF,MAAMrL,KAAMwR,YA0C1G,OA/CA8xF,EAAUjH,EAAQkR,GAQlBrL,EAAa7F,EAAQ,CAAC,CACpBn2F,IAAK,WACL9B,MAAO,SAAkBoF,EAAOR,EAAQa,EAAMzF,GAC5C,GAAIi4F,EAAOvvD,QAAQ9sC,KAAK2kG,QAAQrG,SAAUz0F,GAAQ,GAAK+4F,EAAY7G,QAAQF,MAAMhyF,EAAM+4F,EAAY7G,QAAQJ,MAAM6R,MAAO,CACtH,IAAI5P,EAAO59F,KAAKytG,QAAQjkG,EAAOR,GAC3B5E,GACFw5F,EAAK3uC,KAAKplD,EAAMzF,QAGlBshE,EAAK22B,EAAO50F,UAAU0vF,WAAa3qF,OAAO2K,eAAeklF,EAAO50F,WAAY,WAAYzH,MAAMK,KAAKL,KAAMwJ,EAAOR,EAAQa,EAAMzF,KAGjI,CACD8B,IAAK,WACL9B,MAAO,SAAkBrE,GAEvB,GADA2lE,EAAK22B,EAAO50F,UAAU0vF,WAAa3qF,OAAO2K,eAAeklF,EAAO50F,WAAY,WAAYzH,MAAMK,KAAKL,KAAMD,GACrGC,KAAKG,kBAAkBk8F,GAAUA,EAAOvvD,QAAQ9sC,KAAK2kG,QAAQrG,SAAUt+F,KAAKG,OAAOwkG,QAAQrG,UAAY,EAAG,CAC5G,IAAIn+F,EAASH,KAAKG,OAAOstG,QAAQztG,KAAKglD,SAAUhlD,KAAKgJ,UACrDhJ,KAAK0tG,aAAavtG,GAClBA,EAAO8uD,KAAKjvD,UAGd,CAAC,CACHkG,IAAK,UACL9B,MAAO,SAAiBuvF,EAAM9iC,GAC5B,IAAI88C,EAAYtR,EAAOnuB,MAAMnpE,QAAQ4uF,GACjCia,EAAavR,EAAOnuB,MAAMnpE,QAAQ8rD,GACtC,OAAI88C,GAAa,GAAKC,GAAc,EAC3BD,EAAYC,EACVja,IAAS9iC,EACX,EACE8iC,EAAO9iC,GACR,EAED,MAKNwrC,EAhDI,CAiDXuG,EAAY7G,QAAQM,QAEtBA,EAAOwI,gBAAkB,CAACxI,EAAQuG,EAAY7G,QAAQG,MAAOgH,EAAOnH,SAEpEM,EAAOnuB,MAAQ,CAAC,SAAU,SAC1B,YAAa,SAAU,SAAU,OAAQ,SAAU,OAAQ,QAG3DhtE,EAAQ66F,QAAUM,GAIZ,SAAUl7F,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAIu+F,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAIqK,EAAW,SAAUC,GAGvB,SAASD,IAGP,OAFA1K,EAAgBnjG,KAAM6tG,GAEfzK,EAA2BpjG,MAAO6tG,EAAS1W,WAAa3qF,OAAO2K,eAAe02F,IAAWxiG,MAAMrL,KAAMwR,YAG9G,OARA8xF,EAAUuK,EAAUC,GAQbD,EATM,CAUbjL,EAAY7G,QAAQO,MAEtBp7F,EAAQ66F,QAAU8R,GAIZ,SAAU1sG,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI89F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZ0rE,EAAgB,EAAoB,IAEpCC,EAAiBxL,EAAuBuL,GAExC/H,EAAU,EAAoB,IAE9BC,EAAWzD,EAAuBwD,GAEtC,SAASxD,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI6C,GAAQ,EAAIJ,EAASlK,SAAS,gBAE9BkS,EAAS,CAAC,kBAAmB,YAAa,UAAW,SAEzDA,EAAOjoG,SAAQ,SAAUkoG,GACvBt7F,SAASrM,iBAAiB2nG,GAAW,WACnC,IAAK,IAAIC,EAAO38F,UAAUxI,OAAQuI,EAAOnG,MAAM+iG,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3E78F,EAAK68F,GAAQ58F,UAAU48F,GAGzB,GAAG9/F,MAAMjO,KAAKuS,SAASy7F,iBAAiB,kBAAkBroG,SAAQ,SAAUguB,GAGxE,IAAIs6E,EADFt6E,EAAK0yE,SAAW1yE,EAAK0yE,QAAQG,UAG9ByH,EAAwBt6E,EAAK0yE,QAAQG,SAAS0H,UAAUljG,MAAMijG,EAAuB/8F,YAM9F,IAAIi9F,EAAU,SAAUC,GAGtB,SAASD,IACPrL,EAAgBnjG,KAAMwuG,GAEtB,IAAItR,EAAQkG,EAA2BpjG,MAAOwuG,EAAQrX,WAAa3qF,OAAO2K,eAAeq3F,IAAUnuG,KAAKL,OAIxG,OAFAk9F,EAAMv9D,UAAY,GAClBu9D,EAAMqK,GAAG,QAASlB,EAAM36F,OACjBwxF,EAmCT,OA5CAoG,EAAUkL,EAASC,GAYnBvM,EAAasM,EAAS,CAAC,CACrBtoG,IAAK,OACL9B,MAAO,WACLiiG,EAAMqI,IAAIrjG,MAAMg7F,EAAO70F,WACvBk0D,EAAK8oC,EAAQ/mG,UAAU0vF,WAAa3qF,OAAO2K,eAAeq3F,EAAQ/mG,WAAY,OAAQzH,MAAMqL,MAAMrL,KAAMwR,aAEzG,CACDtL,IAAK,YACL9B,MAAO,SAAmBotC,GACxB,IAAK,IAAIm9D,EAAQn9F,UAAUxI,OAAQuI,EAAOnG,MAAMujG,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACpGr9F,EAAKq9F,EAAQ,GAAKp9F,UAAUo9F,IAG7B5uG,KAAK2/B,UAAU6R,EAAM7qC,OAAS,IAAIX,SAAQ,SAAU6oG,GACnD,IAAI76E,EAAO66E,EAAK76E,KACZ64B,EAAUgiD,EAAKhiD,SAEfrb,EAAMrjC,SAAW6lB,GAAQA,EAAKmgC,SAAS3iB,EAAMrjC,UAC/C0+C,EAAQxhD,WAAMvF,EAAW,CAAC0rC,GAAOvwC,OAAOsQ,SAI7C,CACDrL,IAAK,YACL9B,MAAO,SAAmB8pG,EAAWl6E,EAAM64B,GACpC7sD,KAAK2/B,UAAUuuE,KAClBluG,KAAK2/B,UAAUuuE,GAAa,IAE9BluG,KAAK2/B,UAAUuuE,GAAW3kG,KAAK,CAAEyqB,KAAMA,EAAM64B,QAASA,QAInD2hD,EA7CK,CA8CZR,EAAejS,SAEjByS,EAAQx5E,OAAS,CACfwyE,cAAe,gBACfsH,qBAAsB,uBACtBC,gBAAiB,kBACjBnH,cAAe,gBACfoH,iBAAkB,mBAClBvH,YAAa,eAEf+G,EAAQxyF,QAAU,CAChBotF,IAAK,MACLK,OAAQ,SACRwC,KAAM,QAGR/qG,EAAQ66F,QAAUyS,GAIZ,SAAUrtG,EAAQD,EAAS07F,GAEjC,aAOA,SAASuG,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAJhHgE,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAKT,IAAI6qG,EAAS,SAASA,EAAOC,GAC3B,IAAIvvG,EAAU6R,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,GAElF2xF,EAAgBnjG,KAAMivG,GAEtBjvG,KAAKkvG,MAAQA,EACblvG,KAAKL,QAAUA,GAGjBsvG,EAAO9C,SAAW,GAElBjrG,EAAQ66F,QAAUkT,GAIZ,SAAU9tG,EAAQD,EAAS07F,GAEjC,aAGApwF,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAET,IAAI+qG,EAAS,CAAC,QAAS,OAAQ,MAAO,QAClC7G,EAAQ,OAEZ,SAASjC,EAAM9hG,GACb,GAAI4qG,EAAOpqG,QAAQR,IAAW4qG,EAAOpqG,QAAQujG,GAAQ,CAGnD,IAFA,IAAI8G,EAEKjB,EAAO38F,UAAUxI,OAAQuI,EAAOnG,MAAM+iG,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAC9F78F,EAAK68F,EAAO,GAAK58F,UAAU48F,IAG5BgB,EAAW14F,SAASnS,GAAQ8G,MAAM+jG,EAAU79F,IAIjD,SAASgiF,EAAU8b,GACjB,OAAOF,EAAOz9D,QAAO,SAAU49D,EAAQ/qG,GAErC,OADA+qG,EAAO/qG,GAAU8hG,EAAMn/F,KAAKwP,QAASnS,EAAQ8qG,GACtCC,IACN,IAGLjJ,EAAMiC,MAAQ/U,EAAU+U,MAAQ,SAAUiH,GACxCjH,EAAQiH,GAGVruG,EAAQ66F,QAAUxI,GAIZ,SAAUpyF,EAAQD,EAAS,GAEjC,IAAIsuG,EAASpkG,MAAM3D,UAAU6G,MACzBmhG,EAAa,EAAoB,IACjCC,EAAc,EAAoB,IAElCC,EAAYxuG,EAAOD,QAAU,SAAU0uG,EAAQC,EAAUr5F,GAG3D,OAFKA,IAAMA,EAAO,IAEdo5F,IAAWC,IAGJD,aAAkBl9F,MAAQm9F,aAAoBn9F,KAChDk9F,EAAOE,YAAcD,EAASC,WAI3BF,IAAWC,GAA6B,iBAAVD,GAAyC,iBAAZC,EAC9Dr5F,EAAKo2F,OAASgD,IAAWC,EAAWD,GAAUC,EAS9CE,EAASH,EAAQC,EAAUr5F,KAItC,SAASw5F,EAAkB5rG,GACzB,OAAiB,OAAVA,QAA4B0B,IAAV1B,EAG3B,SAASiM,EAAUqO,GACjB,SAAKA,GAAkB,kBAANA,GAAsC,kBAAbA,EAAE1V,UACtB,oBAAX0V,EAAEmjF,MAA0C,oBAAZnjF,EAAEpQ,SAGzCoQ,EAAE1V,OAAS,GAAqB,kBAAT0V,EAAE,KAI/B,SAASqxF,EAASr4F,EAAGC,EAAGnB,GACtB,IAAI1N,EAAG5C,EACP,GAAI8pG,EAAkBt4F,IAAMs4F,EAAkBr4F,GAC5C,OAAO,EAET,GAAID,EAAEjQ,YAAckQ,EAAElQ,UAAW,OAAO,EAGxC,GAAIioG,EAAYh4F,GACd,QAAKg4F,EAAY/3F,KAGjBD,EAAI83F,EAAOnvG,KAAKqX,GAChBC,EAAI63F,EAAOnvG,KAAKsX,GACTg4F,EAAUj4F,EAAGC,EAAGnB,IAEzB,GAAInG,EAASqH,GAAI,CACf,IAAKrH,EAASsH,GACZ,OAAO,EAET,GAAID,EAAE1O,SAAW2O,EAAE3O,OAAQ,OAAO,EAClC,IAAKF,EAAI,EAAGA,EAAI4O,EAAE1O,OAAQF,IACxB,GAAI4O,EAAE5O,KAAO6O,EAAE7O,GAAI,OAAO,EAE5B,OAAO,EAET,IACE,IAAImnG,EAAKR,EAAW/3F,GAChBw4F,EAAKT,EAAW93F,GACpB,MAAOzH,GACP,OAAO,EAIT,GAAI+/F,EAAGjnG,QAAUknG,EAAGlnG,OAClB,OAAO,EAKT,IAHAinG,EAAG1xF,OACH2xF,EAAG3xF,OAEEzV,EAAImnG,EAAGjnG,OAAS,EAAGF,GAAK,EAAGA,IAC9B,GAAImnG,EAAGnnG,IAAMonG,EAAGpnG,GACd,OAAO,EAIX,IAAKA,EAAImnG,EAAGjnG,OAAS,EAAGF,GAAK,EAAGA,IAE9B,GADA5C,EAAM+pG,EAAGnnG,IACJ6mG,EAAUj4F,EAAExR,GAAMyR,EAAEzR,GAAMsQ,GAAO,OAAO,EAE/C,cAAckB,WAAaC,IAMvB,SAAUxW,EAAQD,EAAS,GAEjC,aAEAsL,OAAOE,eAAexL,EAAS,aAAc,CAAEkD,OAAO,IACtD,IAAI8gE,EAAW,EAAoB,GAC/Bq3B,EAA4B,WAC5B,SAASA,EAAWgC,EAAUC,EAAS7+F,QACnB,IAAZA,IAAsBA,EAAU,IACpCK,KAAKu+F,SAAWA,EAChBv+F,KAAKw+F,QAAUA,EACf,IAAI2R,EAAejrC,EAASy2B,MAAM7G,KAAO5vB,EAASy2B,MAAMyU,UACnC,MAAjBzwG,EAAQw0B,MAERn0B,KAAKm0B,MAASx0B,EAAQw0B,MAAQ+wC,EAASy2B,MAAMmC,MAASqS,EAGtDnwG,KAAKm0B,MAAQ+wC,EAASy2B,MAAMyU,UAEP,MAArBzwG,EAAQonG,YACR/mG,KAAK+mG,UAAYpnG,EAAQonG,WAoCjC,OAlCAxK,EAAW1tF,KAAO,SAAUmlB,GACxB,MAAO,GAAGvY,IAAIpb,KAAK2zB,EAAKmpE,YAAY,SAAUrgF,GAC1C,OAAOA,EAAKjT,SAGpB0yF,EAAW90F,UAAUlH,IAAM,SAAUyzB,EAAM5vB,GACvC,QAAKpE,KAAKqwG,OAAOr8E,EAAM5vB,KAEvB4vB,EAAKpgB,aAAa5T,KAAKw+F,QAASp6F,IACzB,IAEXm4F,EAAW90F,UAAU4oG,OAAS,SAAUr8E,EAAM5vB,GAC1C,IAAIyO,EAAQqyD,EAAS22B,MAAM7nE,EAAMkxC,EAASy2B,MAAM6R,MAAQxtG,KAAKm0B,MAAQ+wC,EAASy2B,MAAM7G,OACpF,OAAa,MAATjiF,IAEkB,MAAlB7S,KAAK+mG,YAEY,kBAAV3iG,EACApE,KAAK+mG,UAAUhiG,QAAQX,EAAMsN,QAAQ,QAAS,MAAQ,EAGtD1R,KAAK+mG,UAAUhiG,QAAQX,IAAU,KAGhDm4F,EAAW90F,UAAUuL,OAAS,SAAUghB,GACpCA,EAAK4hC,gBAAgB51D,KAAKw+F,UAE9BjC,EAAW90F,UAAUrD,MAAQ,SAAU4vB,GACnC,IAAI5vB,EAAQ4vB,EAAKw/B,aAAaxzD,KAAKw+F,SACnC,OAAIx+F,KAAKqwG,OAAOr8E,EAAM5vB,IAAUA,EACrBA,EAEJ,IAEJm4F,EAlDoB,GAoD/Br7F,EAAQ66F,QAAUQ,GAKZ,SAAUp7F,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQ66F,QAAU76F,EAAQovG,UAAOxqG,EAEjC,IAAIm/F,EAAiB,WAAc,SAASC,EAAcnwF,EAAKjM,GAAK,IAAIq8F,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKx/F,EAAW,IAAM,IAAK,IAAiCy/F,EAA7BnH,EAAKrpF,EAAI2rB,OAAOs4D,cAAmBoM,GAAMG,EAAKnH,EAAGv5D,QAAQpiC,MAAO2iG,GAAK,EAA6B,GAArBD,EAAK57F,KAAKg8F,EAAGnhG,OAAY0E,GAAKq8F,EAAKn8F,SAAWF,EAAG,MAAW,MAAOzE,GAAOghG,GAAK,EAAMC,EAAKjhG,EAAO,QAAU,KAAW+gG,GAAMhH,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIiH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUpwF,EAAKjM,GAAK,GAAIsC,MAAMiD,QAAQ0G,GAAQ,OAAOA,EAAY,GAAI2rB,OAAOs4D,YAAYxsF,OAAOuI,GAAQ,OAAOmwF,EAAcnwF,EAAKjM,GAAa,MAAM,IAAIN,UAAU,yDAAjkB,GAEjB05F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZogE,EAAc,EAAoB,GAElCC,EAAeF,EAAuBC,GAEtCE,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErC4N,EAAS,EAAoB,GAE7BC,EAAUhO,EAAuB+N,GAEjCxN,EAAU,EAAoB,GAE9BC,EAAWR,EAAuBO,GAElCE,EAAQ,EAAoB,GAE5BC,EAASV,EAAuBS,GAEpC,SAAST,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI8M,EAAO,SAAUG,GAGnB,SAASH,IAGP,OAFAnN,EAAgBnjG,KAAMswG,GAEflN,EAA2BpjG,MAAOswG,EAAKnZ,WAAa3qF,OAAO2K,eAAem5F,IAAOjlG,MAAMrL,KAAMwR,YAGtG,OARA8xF,EAAUgN,EAAMG,GAQTH,EATE,CAUTtN,EAASjH,SAEXuU,EAAKhS,SAAW,OAChBgS,EAAKpS,QAAU,OAEf,IAAIwS,EAAY,SAAUC,GAGxB,SAASD,IAGP,OAFAvN,EAAgBnjG,KAAM0wG,GAEftN,EAA2BpjG,MAAO0wG,EAAUvZ,WAAa3qF,OAAO2K,eAAeu5F,IAAYrlG,MAAMrL,KAAMwR,YA6HhH,OAlIA8xF,EAAUoN,EAAWC,GAQrBzO,EAAawO,EAAW,CAAC,CACvBxqG,IAAK,QACL9B,MAAO,WACL,IAAIukG,EAAS3oG,KAET27B,EAAO37B,KAAKqnC,QAAQupE,YAKxB,OAJIj1E,EAAKnmB,SAAS,QAEhBmmB,EAAOA,EAAKrtB,MAAM,GAAI,IAEjBqtB,EAAKjnB,MAAM,MAAMg9B,QAAO,SAAU1L,EAAO6qE,GAC9C,OAAO7qE,EAAMi5D,OAAO4R,GAAM5R,OAAO,KAAM0J,EAAO/8C,aAC7C,IAAI82C,EAAa3G,WAErB,CACD71F,IAAK,SACL9B,MAAO,SAAgByF,EAAMzF,GAC3B,GAAIyF,IAAS7J,KAAK2kG,QAAQrG,WAAYl6F,EAAtC,CAEA,IAAI0sG,EAAc9wG,KAAK+wG,WAAW7N,EAAOnH,QAAS/7F,KAAKgJ,SAAW,GAC9DgoG,EAAe/L,EAAe6L,EAAa,GAC3Cn1E,EAAOq1E,EAAa,GAEZ,MAARr1E,GACFA,EAAKs1E,SAASt1E,EAAK3yB,SAAW,EAAG,GAEnC08D,EAAKgrC,EAAUjpG,UAAU0vF,WAAa3qF,OAAO2K,eAAeu5F,EAAUjpG,WAAY,SAAUzH,MAAMK,KAAKL,KAAM6J,EAAMzF,MAEpH,CACD8B,IAAK,WACL9B,MAAO,SAAkBoF,EAAOR,EAAQa,EAAMzF,GAC5C,GAAe,IAAX4E,GACoE,MAApE45F,EAAY7G,QAAQF,MAAMhyF,EAAM+4F,EAAY7G,QAAQJ,MAAMoC,SAAkBl0F,IAAS7J,KAAK2kG,QAAQrG,UAAYl6F,IAAUpE,KAAK2kG,QAAQ/4C,QAAQ5rD,KAAKqnC,UAAtJ,CAGA,IAAI6pE,EAAclxG,KAAKmxG,aAAa3nG,GACpC,KAAI0nG,EAAc,GAAKA,GAAe1nG,EAAQR,GAA9C,CACA,IAAIooG,EAAcpxG,KAAKmxG,aAAa3nG,GAAO,GAAQ,EAC/C6nG,EAAgBH,EAAcE,EAAc,EAC5CxT,EAAO59F,KAAKytG,QAAQ2D,EAAaC,GACjCxsE,EAAO+4D,EAAK/4D,KAChB+4D,EAAKjyD,OAAO9hC,EAAMzF,GACdygC,aAAgB6rE,GAClB7rE,EAAKysE,SAAS,EAAG9nG,EAAQ4nG,EAAcpoG,EAASqoG,EAAexnG,EAAMzF,OAGxE,CACD8B,IAAK,WACL9B,MAAO,SAAkBoF,EAAOpF,EAAOy/F,GACrC,GAAW,MAAPA,EAAJ,CAEA,IAAI0N,EAAevxG,KAAK+wG,WAAW7N,EAAOnH,QAASvyF,GAC/CgoG,EAAevM,EAAesM,EAAc,GAC5C51E,EAAO61E,EAAa,GACpBxsD,EAASwsD,EAAa,GAE1B71E,EAAKqoE,SAASh/C,EAAQ5gD,MAEvB,CACD8B,IAAK,SACL9B,MAAO,WACL,IAAI4E,EAAShJ,KAAKqnC,QAAQupE,YAAY5nG,OACtC,OAAKhJ,KAAKqnC,QAAQupE,YAAYp7F,SAAS,MAGhCxM,EAFEA,EAAS,IAInB,CACD9C,IAAK,eACL9B,MAAO,SAAsBqtG,GAC3B,IAAI12F,EAAUvJ,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,IAAmBA,UAAU,GAE7E,GAAKuJ,EAIH,OAAO/a,KAAKqnC,QAAQupE,YAAYtiG,MAAM,EAAGmjG,GAAavsB,YAAY,MAHlE,IAAIlgC,EAAShlD,KAAKqnC,QAAQupE,YAAYtiG,MAAMmjG,GAAa1sG,QAAQ,MACjE,OAAOigD,GAAU,EAAIysD,EAAczsD,GAAU,IAKhD,CACD9+C,IAAK,WACL9B,MAAO,SAAkBrE,GAClBC,KAAKqnC,QAAQupE,YAAYp7F,SAAS,OACrCxV,KAAK0xG,YAAY9O,EAAY7G,QAAQp0F,OAAO,OAAQ,OAEtD+9D,EAAKgrC,EAAUjpG,UAAU0vF,WAAa3qF,OAAO2K,eAAeu5F,EAAUjpG,WAAY,WAAYzH,MAAMK,KAAKL,KAAMD,GAC/G,IAAI8kC,EAAO7kC,KAAK6kC,KACJ,MAARA,GAAgBA,EAAKoC,OAASjnC,MAAQ6kC,EAAK8/D,QAAQrG,WAAat+F,KAAK2kG,QAAQrG,UAAYt+F,KAAK2kG,QAAQ/4C,QAAQ5rD,KAAKqnC,WAAaxC,EAAK8/D,QAAQ/4C,QAAQ/mB,EAAKwC,WAC5JxC,EAAK8sE,SAAS5xG,GACd8kC,EAAK6oE,aAAa1tG,MAClB6kC,EAAK7xB,YAGR,CACD9M,IAAK,UACL9B,MAAO,SAAiB+J,GACtBu3D,EAAKgrC,EAAUjpG,UAAU0vF,WAAa3qF,OAAO2K,eAAeu5F,EAAUjpG,WAAY,UAAWzH,MAAMK,KAAKL,KAAMmO,GAC9G,GAAGG,MAAMjO,KAAKL,KAAKqnC,QAAQgnE,iBAAiB,MAAMroG,SAAQ,SAAUguB,GAClE,IAAI4pE,EAAOgF,EAAY7G,QAAQH,KAAK5nE,GACxB,MAAR4pE,EACF5pE,EAAKsT,WAAWsqE,YAAY59E,GACnB4pE,aAAgBgF,EAAY7G,QAAQG,MAC7C0B,EAAK5qF,SAEL4qF,EAAKiU,eAIT,CAAC,CACH3rG,IAAK,SACL9B,MAAO,SAAgBA,GACrB,IAAIijC,EAAUq+B,EAAKgrC,EAAUvZ,WAAa3qF,OAAO2K,eAAeu5F,GAAY,SAAU1wG,MAAMK,KAAKL,KAAMoE,GAEvG,OADAijC,EAAQzzB,aAAa,cAAc,GAC5ByzB,IAER,CACDnhC,IAAK,UACL9B,MAAO,WACL,OAAO,MAIJssG,EAnIO,CAoIdF,EAAQzU,SAEV2U,EAAUpS,SAAW,aACrBoS,EAAUxS,QAAU,MACpBwS,EAAUoB,IAAM,KAEhB5wG,EAAQovG,KAAOA,EACfpvG,EAAQ66F,QAAU2U,GAIZ,SAAUvvG,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI4gG,EAA4B,oBAAXtkE,QAAoD,kBAApBA,OAAOs4D,SAAwB,SAAUjsF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,oBAAX2zB,QAAyB3zB,EAAIiK,cAAgB0pB,QAAU3zB,IAAQ2zB,OAAOj5B,UAAY,gBAAkBsF,GAElQk4F,EAAiB,WAAc,SAASC,EAAcnwF,EAAKjM,GAAK,IAAIq8F,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKx/F,EAAW,IAAM,IAAK,IAAiCy/F,EAA7BnH,EAAKrpF,EAAI2rB,OAAOs4D,cAAmBoM,GAAMG,EAAKnH,EAAGv5D,QAAQpiC,MAAO2iG,GAAK,EAA6B,GAArBD,EAAK57F,KAAKg8F,EAAGnhG,OAAY0E,GAAKq8F,EAAKn8F,SAAWF,EAAG,MAAW,MAAOzE,GAAOghG,GAAK,EAAMC,EAAKjhG,EAAO,QAAU,KAAW+gG,GAAMhH,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIiH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUpwF,EAAKjM,GAAK,GAAIsC,MAAMiD,QAAQ0G,GAAQ,OAAOA,EAAY,GAAI2rB,OAAOs4D,YAAYxsF,OAAOuI,GAAQ,OAAOmwF,EAAcnwF,EAAKjM,GAAa,MAAM,IAAIN,UAAU,yDAAjkB,GAEjB05F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfM,EAAc,EAAoB,GAElCC,EAAeF,EAAuBC,GAEtCsP,EAAM,EAAoB,IAE1BC,EAAOxP,EAAuBuP,GAE9BpP,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErCsP,EAAQ,EAAoB,IAE5BC,EAAS1P,EAAuByP,GAEhCE,EAAU,EAAoB,IAE9BC,EAAW5P,EAAuB2P,GAElC5B,EAAS,EAAoB,GAE7BC,EAAUhO,EAAuB+N,GAEjC1N,EAAS,EAAoB,IAE7BC,EAAUN,EAAuBK,GAEjCwP,EAAS,EAAoB,IAE7BC,EAAU9P,EAAuB6P,GAEjCE,EAAa,EAAoB,IAEjCC,EAAchQ,EAAuB+P,GAErCjQ,EAAU,EAAoB,GAE9BC,EAAWC,EAAuBF,GAEtC,SAASE,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASq5F,EAAgBr5F,EAAK7G,EAAK9B,GAAiK,OAApJ8B,KAAO6G,EAAOP,OAAOE,eAAeK,EAAK7G,EAAK,CAAE9B,MAAOA,EAAO+yB,YAAY,EAAMyI,cAAc,EAAM1I,UAAU,IAAkBnqB,EAAI7G,GAAO9B,EAAgB2I,EAE3M,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,IAAIiqG,EAAQ,WAERC,EAAS,WACX,SAASA,EAAO5L,GACd3D,EAAgBnjG,KAAM0yG,GAEtB1yG,KAAK8mG,OAASA,EACd9mG,KAAKgmC,MAAQhmC,KAAK2yG,WA6PpB,OA1PAzQ,EAAawQ,EAAQ,CAAC,CACpBxsG,IAAK,aACL9B,MAAO,SAAoB4hC,GACzB,IAAIk3D,EAAQl9F,KAER4yG,GAAqB,EACzB5yG,KAAK8mG,OAAOh0D,SACZ,IAAI+/D,EAAe7yG,KAAK8mG,OAAO99F,SAoD/B,OAnDAhJ,KAAK8mG,OAAOgM,aACZ9sE,EAAQ+sE,EAAe/sE,GACvBA,EAAM0L,QAAO,SAAUloC,EAAOo1F,GAC5B,IAAI51F,EAAS41F,EAAGO,QAAUP,EAAG17D,QAAU07D,EAAGK,OAAOj2F,QAAU,EACvDm0F,EAAayB,EAAGzB,YAAc,GAClC,GAAiB,MAAbyB,EAAGK,OAAgB,CACrB,GAAyB,kBAAdL,EAAGK,OAAqB,CACjC,IAAItjE,EAAOijE,EAAGK,OACVtjE,EAAKnmB,SAAS,OAASo9F,IACzBA,GAAqB,EACrBj3E,EAAOA,EAAKrtB,MAAM,GAAI,IAEpB9E,GAASqpG,IAAiBl3E,EAAKnmB,SAAS,QAC1Co9F,GAAqB,GAEvB1V,EAAM4J,OAAO9C,SAASx6F,EAAOmyB,GAE7B,IAAIq3E,EAAe9V,EAAM4J,OAAOnyF,KAAKnL,GACjCypG,EAAgBhO,EAAe+N,EAAc,GAC7Cr+F,EAAOs+F,EAAc,GACrBjuD,EAASiuD,EAAc,GAEvBrnD,GAAU,EAAI22C,EAASxG,SAAS,IAAI,EAAIwU,EAAOtO,eAAettF,IAClE,GAAIA,aAAgB67F,EAAQzU,QAAS,CACnC,IAAImX,EAAmBv+F,EAAKo8F,WAAWnO,EAAY7G,QAAQE,KAAMj3C,GAC7DmuD,EAAoBlO,EAAeiO,EAAkB,GACrD7O,EAAO8O,EAAkB,GAE7BvnD,GAAU,EAAI22C,EAASxG,SAASnwC,GAAS,EAAI2kD,EAAOtO,eAAeoC,IAErElH,EAAa6U,EAAKjW,QAAQoB,WAAWnxC,KAAKJ,EAASuxC,IAAe,QAC7D,GAA2B,WAAvB6H,EAAQpG,EAAGK,QAAsB,CAC1C,IAAI/4F,EAAMsG,OAAOqC,KAAK+vF,EAAGK,QAAQ,GACjC,GAAW,MAAP/4F,EAAa,OAAOsD,EACxB0zF,EAAM4J,OAAO9C,SAASx6F,EAAOtD,EAAK04F,EAAGK,OAAO/4F,IAE9C2sG,GAAgB7pG,EAKlB,OAHAwD,OAAOqC,KAAKsuF,GAAYn3F,SAAQ,SAAU6D,GACxCqzF,EAAM4J,OAAOwK,SAAS9nG,EAAOR,EAAQa,EAAMszF,EAAWtzF,OAEjDL,EAAQR,IACd,GACHg9B,EAAM0L,QAAO,SAAUloC,EAAOo1F,GAC5B,MAAyB,kBAAdA,EAAG17D,QACZg6D,EAAM4J,OAAOmK,SAASznG,EAAOo1F,EAAG17D,QACzB15B,GAEFA,GAASo1F,EAAGO,QAAUP,EAAGK,OAAOj2F,QAAU,KAChD,GACHhJ,KAAK8mG,OAAOsM,WACLpzG,KAAK8yC,OAAO9M,KAEpB,CACD9/B,IAAK,aACL9B,MAAO,SAAoBoF,EAAOR,GAEhC,OADAhJ,KAAK8mG,OAAOmK,SAASznG,EAAOR,GACrBhJ,KAAK8yC,QAAO,IAAI4vD,EAAa3G,SAAUoD,OAAO31F,GAAO05B,OAAOl6B,MAEpE,CACD9C,IAAK,aACL9B,MAAO,SAAoBoF,EAAOR,GAChC,IAAIm7F,EAASnkG,KAET4rD,EAAUp6C,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,GAoBlF,OAlBAxR,KAAK8mG,OAAOh0D,SACZtmC,OAAOqC,KAAK+8C,GAAS5lD,SAAQ,SAAU2lC,GACrC,GAA+B,MAA3Bw4D,EAAO2C,OAAOC,WAAsB5C,EAAO2C,OAAOC,UAAUp7D,GAAhE,CACA,IAAI/P,EAAQuoE,EAAO2C,OAAOlrE,MAAMpyB,EAAOyF,KAAKmQ,IAAIpW,EAAQ,IACpDqqG,EAAkBrqG,EACtB4yB,EAAM51B,SAAQ,SAAU2O,GACtB,IAAI2+F,EAAa3+F,EAAK3L,SACtB,GAAM2L,aAAgBu9F,EAAOnW,QAEtB,CACL,IAAIwX,EAAY/pG,EAAQmL,EAAKqwC,OAAOm/C,EAAO2C,QACvC0M,EAAa7+F,EAAKw8F,aAAaoC,EAAYF,GAAmBE,EAAY,EAC9E5+F,EAAK28F,SAASiC,EAAWC,EAAY7nE,EAAQigB,EAAQjgB,SAJrDh3B,EAAKg3B,OAAOA,EAAQigB,EAAQjgB,IAM9B0nE,GAAmBC,SAGvBtzG,KAAK8mG,OAAO6K,WACL3xG,KAAK8yC,QAAO,IAAI4vD,EAAa3G,SAAUoD,OAAO31F,GAAO21F,OAAOn2F,GAAQ,EAAIspG,EAAQvW,SAASnwC,OAEjG,CACD1lD,IAAK,aACL9B,MAAO,SAAoBoF,EAAOR,GAChC,IAAI2/F,EAAS3oG,KAET4rD,EAAUp6C,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,GAKlF,OAHAhF,OAAOqC,KAAK+8C,GAAS5lD,SAAQ,SAAU2lC,GACrCg9D,EAAO7B,OAAOwK,SAAS9nG,EAAOR,EAAQ2iC,EAAQigB,EAAQjgB,OAEjD3rC,KAAK8yC,QAAO,IAAI4vD,EAAa3G,SAAUoD,OAAO31F,GAAO21F,OAAOn2F,GAAQ,EAAIspG,EAAQvW,SAASnwC,OAEjG,CACD1lD,IAAK,cACL9B,MAAO,SAAqBoF,EAAOR,GACjC,OAAOhJ,KAAKgmC,MAAM13B,MAAM9E,EAAOA,EAAQR,KAExC,CACD9C,IAAK,WACL9B,MAAO,WACL,OAAOpE,KAAK8mG,OAAOlrE,QAAQ8V,QAAO,SAAU1L,EAAOrxB,GACjD,OAAOqxB,EAAM/kC,OAAO0T,EAAKqxB,WACxB,IAAI08D,EAAa3G,WAErB,CACD71F,IAAK,YACL9B,MAAO,SAAmBoF,GACxB,IAAIR,EAASwI,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,EAE7EoqB,EAAQ,GACR63E,EAAS,GACE,IAAXzqG,EACFhJ,KAAK8mG,OAAOz0F,KAAK7I,GAAOxD,SAAQ,SAAUqM,GACxC,IAAI6jE,EAAQ+uB,EAAe5yF,EAAM,GAC7BurF,EAAO1nB,EAAM,GAEb0nB,aAAgB4S,EAAQzU,QAC1BngE,EAAMryB,KAAKq0F,GACFA,aAAgBgF,EAAY7G,QAAQE,MAC7CwX,EAAOlqG,KAAKq0F,OAIhBhiE,EAAQ57B,KAAK8mG,OAAOlrE,MAAMpyB,EAAOR,GACjCyqG,EAASzzG,KAAK8mG,OAAO1C,YAAYxB,EAAY7G,QAAQE,KAAMzyF,EAAOR,IAEpE,IAAI0qG,EAAa,CAAC93E,EAAO63E,GAAQh4F,KAAI,SAAUk4F,GAC7C,GAAqB,IAAjBA,EAAM3qG,OAAc,MAAO,GAC/B,IAAI4iD,GAAU,EAAI2kD,EAAOtO,eAAe0R,EAAMroG,SAC9C,MAAOkB,OAAOqC,KAAK+8C,GAAS5iD,OAAS,EAAG,CACtC,IAAI40F,EAAO+V,EAAMroG,QACjB,GAAY,MAARsyF,EAAc,OAAOhyC,EACzBA,EAAUgoD,GAAe,EAAIrD,EAAOtO,eAAerE,GAAOhyC,GAE5D,OAAOA,KAET,OAAO22C,EAASxG,QAAQ1wF,MAAMk3F,EAASxG,QAAS2X,KAEjD,CACDxtG,IAAK,UACL9B,MAAO,SAAiBoF,EAAOR,GAC7B,OAAOhJ,KAAKqqG,YAAY7gG,EAAOR,GAAQmP,QAAO,SAAUymF,GACtD,MAA4B,kBAAdA,EAAGK,UAChBxjF,KAAI,SAAUmjF,GACf,OAAOA,EAAGK,UACTjtF,KAAK,MAET,CACD9L,IAAK,cACL9B,MAAO,SAAqBoF,EAAOohG,EAAOxmG,GAExC,OADApE,KAAK8mG,OAAO9C,SAASx6F,EAAOohG,EAAOxmG,GAC5BpE,KAAK8yC,QAAO,IAAI4vD,EAAa3G,SAAUoD,OAAO31F,GAAOy1F,OAAOmH,EAAgB,GAAIwE,EAAOxmG,OAE/F,CACD8B,IAAK,aACL9B,MAAO,SAAoBoF,EAAOmyB,GAChC,IAAIwtE,EAASnpG,KAET4rD,EAAUp6C,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,GAOlF,OALAmqB,EAAOA,EAAKjqB,QAAQ,QAAS,MAAMA,QAAQ,MAAO,MAClD1R,KAAK8mG,OAAO9C,SAASx6F,EAAOmyB,GAC5BnvB,OAAOqC,KAAK+8C,GAAS5lD,SAAQ,SAAU2lC,GACrCw9D,EAAOrC,OAAOwK,SAAS9nG,EAAOmyB,EAAK3yB,OAAQ2iC,EAAQigB,EAAQjgB,OAEtD3rC,KAAK8yC,QAAO,IAAI4vD,EAAa3G,SAAUoD,OAAO31F,GAAOy1F,OAAOtjE,GAAM,EAAI22E,EAAQvW,SAASnwC,OAE/F,CACD1lD,IAAK,UACL9B,MAAO,WACL,GAAmC,GAA/BpE,KAAK8mG,OAAOxC,SAASt7F,OAAa,OAAO,EAC7C,GAAIhJ,KAAK8mG,OAAOxC,SAASt7F,OAAS,EAAG,OAAO,EAC5C,IAAI86F,EAAQ9jG,KAAK8mG,OAAOxC,SAAShhD,KACjC,OAAIwgD,EAAMa,QAAQrG,WAAakS,EAAQzU,QAAQuC,aAC3CwF,EAAMQ,SAASt7F,OAAS,IACrB86F,EAAMQ,SAAShhD,gBAAgBw/C,EAAQ/G,WAE/C,CACD71F,IAAK,eACL9B,MAAO,SAAsBoF,EAAOR,GAClC,IAAI2yB,EAAO37B,KAAK0qG,QAAQlhG,EAAOR,GAE3B6qG,EAAgB7zG,KAAK8mG,OAAOnyF,KAAKnL,EAAQR,GACzC8qG,EAAgB7O,EAAe4O,EAAe,GAC9Cl/F,EAAOm/F,EAAc,GACrB9uD,EAAS8uD,EAAc,GAEvBC,EAAe,EACf7rE,EAAS,IAAIw6D,EAAa3G,QAClB,MAARpnF,IAIAo/F,EAHIp/F,aAAgBu9F,EAAOnW,QAGZpnF,EAAKw8F,aAAansD,GAAUA,EAAS,EAFrCrwC,EAAK3L,SAAWg8C,EAIjC9c,EAASvzB,EAAKqxB,QAAQ13B,MAAM02C,EAAQA,EAAS+uD,EAAe,GAAG9U,OAAO,OAExE,IAAI+I,EAAWhoG,KAAKqqG,YAAY7gG,EAAOR,EAAS+qG,GAC5C/nD,EAAOg8C,EAASh8C,MAAK,IAAI02C,EAAa3G,SAAUkD,OAAOtjE,GAAM16B,OAAOinC,IACpElC,GAAQ,IAAI08D,EAAa3G,SAAUoD,OAAO31F,GAAOvI,OAAO+qD,GAC5D,OAAOhsD,KAAK6rG,WAAW7lE,KAExB,CACD9/B,IAAK,SACL9B,MAAO,SAAgBu6B,GACrB,IAAIkpE,EAAYr2F,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,GAChFwiG,EAAcxiG,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,QAAK1L,EAElFgnG,EAAW9sG,KAAKgmC,MACpB,GAAyB,IAArB6hE,EAAU7+F,QAAsC,kBAAtB6+F,EAAU,GAAGlhG,MAA4BkhG,EAAU,GAAG15F,OAAO9L,KAAKwQ,MAAM4/F,IAAU7P,EAAY7G,QAAQH,KAAKiM,EAAU,GAAG15F,QAAS,CAE7J,IAAI8lG,EAAWrR,EAAY7G,QAAQH,KAAKiM,EAAU,GAAG15F,QACjDy9C,GAAU,EAAI2kD,EAAOtO,eAAegS,GACpCzqG,EAAQyqG,EAASjvD,OAAOhlD,KAAK8mG,QAC7BoN,EAAWrM,EAAU,GAAGqM,SAASxiG,QAAQ0gG,EAASrW,QAAQoY,SAAU,IACpEC,GAAU,IAAI1R,EAAa3G,SAAUkD,OAAOiV,GAC5CG,GAAU,IAAI3R,EAAa3G,SAAUkD,OAAOgV,EAAS7vG,SACrDkwG,GAAY,IAAI5R,EAAa3G,SAAUoD,OAAO31F,GAAOvI,OAAOmzG,EAAQpoD,KAAKqoD,EAASL,IACtFr1E,EAAS21E,EAAU5iE,QAAO,SAAU1L,EAAO44D,GACzC,OAAIA,EAAGK,OACEj5D,EAAMi5D,OAAOL,EAAGK,OAAQrzC,GAExB5lB,EAAMz8B,KAAKq1F,KAEnB,IAAI8D,EAAa3G,SACpB/7F,KAAKgmC,MAAQ8mE,EAAS/M,QAAQphE,QAE9B3+B,KAAKgmC,MAAQhmC,KAAK2yG,WACbh0E,IAAW,EAAI6zE,EAAYzW,SAAS+Q,EAAS/M,QAAQphE,GAAS3+B,KAAKgmC,SACtErH,EAASmuE,EAAS9gD,KAAKhsD,KAAKgmC,MAAOguE,IAGvC,OAAOr1E,MAIJ+zE,EAlQI,GAqQb,SAASkB,EAAehoD,EAAS2oD,GAC/B,OAAO/nG,OAAOqC,KAAK0lG,GAAU7iE,QAAO,SAAUt5B,EAAQvO,GACpD,OAAqB,MAAjB+hD,EAAQ/hD,KACR0qG,EAAS1qG,KAAU+hD,EAAQ/hD,GAC7BuO,EAAOvO,GAAQ0qG,EAAS1qG,GACfuB,MAAMiD,QAAQkmG,EAAS1qG,IAC5B0qG,EAAS1qG,GAAM9E,QAAQ6mD,EAAQ/hD,IAAS,IAC1CuO,EAAOvO,GAAQ0qG,EAAS1qG,GAAM5I,OAAO,CAAC2qD,EAAQ/hD,MAGhDuO,EAAOvO,GAAQ,CAAC0qG,EAAS1qG,GAAO+hD,EAAQ/hD,KARRuO,IAWjC,IAGL,SAAS26F,EAAe/sE,GACtB,OAAOA,EAAM0L,QAAO,SAAU1L,EAAO44D,GACnC,GAAkB,IAAdA,EAAGK,OAAc,CACnB,IAAI9B,GAAa,EAAImV,EAAQvW,SAAS6C,EAAGzB,YAEzC,cADOA,EAAW,SACXn3D,EAAMi5D,OAAO,CAAEuV,MAAO5V,EAAGzB,WAAWqX,OAASrX,GAWtD,GATqB,MAAjByB,EAAGzB,aAA8C,IAAvByB,EAAGzB,WAAWsX,OAA0C,IAAzB7V,EAAGzB,WAAWuX,SACzE9V,GAAK,EAAI0T,EAAQvW,SAAS6C,GACtBA,EAAGzB,WAAWsX,KAChB7V,EAAGzB,WAAWsX,KAAO,WAErB7V,EAAGzB,WAAWsX,KAAO,gBACd7V,EAAGzB,WAAWuX,SAGA,kBAAd9V,EAAGK,OAAqB,CACjC,IAAItjE,EAAOijE,EAAGK,OAAOvtF,QAAQ,QAAS,MAAMA,QAAQ,MAAO,MAC3D,OAAOs0B,EAAMi5D,OAAOtjE,EAAMijE,EAAGzB,YAE/B,OAAOn3D,EAAMz8B,KAAKq1F,KACjB,IAAI8D,EAAa3G,SAGtB76F,EAAQ66F,QAAU2W,GAIZ,SAAUvxG,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQ66F,QAAU76F,EAAQ8qG,WAAQlmG,EAElC,IAAIm/F,EAAiB,WAAc,SAASC,EAAcnwF,EAAKjM,GAAK,IAAIq8F,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKx/F,EAAW,IAAM,IAAK,IAAiCy/F,EAA7BnH,EAAKrpF,EAAI2rB,OAAOs4D,cAAmBoM,GAAMG,EAAKnH,EAAGv5D,QAAQpiC,MAAO2iG,GAAK,EAA6B,GAArBD,EAAK57F,KAAKg8F,EAAGnhG,OAAY0E,GAAKq8F,EAAKn8F,SAAWF,EAAG,MAAW,MAAOzE,GAAOghG,GAAK,EAAMC,EAAKjhG,EAAO,QAAU,KAAW+gG,GAAMhH,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIiH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUpwF,EAAKjM,GAAK,GAAIsC,MAAMiD,QAAQ0G,GAAQ,OAAOA,EAAY,GAAI2rB,OAAOs4D,YAAYxsF,OAAOuI,GAAQ,OAAOmwF,EAAcnwF,EAAKjM,GAAa,MAAM,IAAIN,UAAU,yDAAjkB,GAEjB05F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfQ,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErC0P,EAAS,EAAoB,IAE7BC,EAAU9P,EAAuB6P,GAEjCE,EAAa,EAAoB,IAEjCC,EAAchQ,EAAuB+P,GAErC7M,EAAY,EAAoB,GAEhCC,EAAYnD,EAAuBkD,GAEnCM,EAAU,EAAoB,IAE9BC,EAAWzD,EAAuBwD,GAEtC,SAASxD,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAAS4nG,EAAmB5/F,GAAO,GAAI3J,MAAMiD,QAAQ0G,GAAM,CAAE,IAAK,IAAIjM,EAAI,EAAG8rG,EAAOxpG,MAAM2J,EAAI/L,QAASF,EAAIiM,EAAI/L,OAAQF,IAAO8rG,EAAK9rG,GAAKiM,EAAIjM,GAAM,OAAO8rG,EAAe,OAAOxpG,MAAMuB,KAAKoI,GAE1L,SAASouF,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,IAAI69F,GAAQ,EAAIJ,EAASlK,SAAS,mBAE9BiQ,EAAQ,SAASA,EAAMxiG,GACzB,IAAIR,EAASwI,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,EAEjF2xF,EAAgBnjG,KAAMgsG,GAEtBhsG,KAAKwJ,MAAQA,EACbxJ,KAAKgJ,OAASA,GAGZ6rG,EAAY,WACd,SAASA,EAAU/N,EAAQD,GACzB,IAAI3J,EAAQl9F,KAEZmjG,EAAgBnjG,KAAM60G,GAEtB70G,KAAK6mG,QAAUA,EACf7mG,KAAK8mG,OAASA,EACd9mG,KAAK80G,WAAY,EACjB90G,KAAK+0G,WAAY,EACjB/0G,KAAKk0B,KAAOl0B,KAAK8mG,OAAOz/D,QACxBrnC,KAAK66E,OAAS+nB,EAAY7G,QAAQp0F,OAAO,SAAU3H,MAEnDA,KAAK8nG,UAAY9nG,KAAKg1G,WAAa,IAAIhJ,EAAM,EAAG,GAChDhsG,KAAKi1G,oBACLj1G,KAAKk1G,iBACLl1G,KAAK6mG,QAAQsO,UAAU,kBAAmBviG,UAAU,WAC7CsqF,EAAM6X,WACT/vG,WAAWk4F,EAAMpqD,OAAO5rC,KAAKg2F,EAAOyI,EAAU5J,QAAQ//E,QAAQiwF,MAAO,MAGzEjsG,KAAK6mG,QAAQU,GAAG5B,EAAU5J,QAAQ/mE,OAAOwyE,eAAe,SAAU7gG,EAAMq/B,GAClEr/B,IAASg/F,EAAU5J,QAAQ/mE,OAAOyyE,aAAezhE,EAAMh9B,SAAW,GACpEk0F,EAAMpqD,OAAO6yD,EAAU5J,QAAQ//E,QAAQytF,WAG3CzpG,KAAK6mG,QAAQU,GAAG5B,EAAU5J,QAAQ/mE,OAAO85E,sBAAsB,WAC7D,GAAK5R,EAAMyN,WAAX,CACA,IAAI32C,EAASkpC,EAAMkY,iBACL,MAAVphD,GACAA,EAAOv6C,MAAMua,OAASkpE,EAAMriB,OAAOw6B,UAEvCnY,EAAM2J,QAAQuE,KAAKzF,EAAU5J,QAAQ/mE,OAAO4yE,eAAe,WACzD,IACE1K,EAAMoY,eAAethD,EAAOv6C,MAAMua,KAAMggC,EAAOv6C,MAAMurC,OAAQgP,EAAOt6C,IAAIsa,KAAMggC,EAAOt6C,IAAIsrC,QACzF,MAAOuwD,YAGbv1G,KAAK6mG,QAAQU,GAAG5B,EAAU5J,QAAQ/mE,OAAO+5E,iBAAiB,SAAUlH,EAAW9nG,GAC7E,GAAIA,EAAQ8d,MAAO,CACjB,IAAI23F,EAAiBz1G,EAAQ8d,MACzB43F,EAAYD,EAAeC,UAC3BC,EAAcF,EAAeE,YAC7BC,EAAUH,EAAeG,QACzBC,EAAYJ,EAAeI,UAE/B1Y,EAAMoY,eAAeG,EAAWC,EAAaC,EAASC,OAG1D51G,KAAK8yC,OAAO6yD,EAAU5J,QAAQ//E,QAAQytF,QA8WxC,OA3WAvH,EAAa2S,EAAW,CAAC,CACvB3uG,IAAK,oBACL9B,MAAO,WACL,IAAI+/F,EAASnkG,KAEbA,KAAKk0B,KAAK3tB,iBAAiB,oBAAoB,WAC7C49F,EAAO2Q,WAAY,KAErB90G,KAAKk0B,KAAK3tB,iBAAiB,kBAAkB,WAE3C,GADA49F,EAAO2Q,WAAY,EACf3Q,EAAOtpB,OAAO16E,OAAQ,CACxB,IAAI0d,EAAQsmF,EAAOtpB,OAAOtiD,UAC1B,IAAK1a,EAAO,OACZ7Y,YAAW,WACTm/F,EAAOmR,eAAez3F,EAAM43F,UAAW53F,EAAM63F,YAAa73F,EAAM83F,QAAS93F,EAAM+3F,aAC9E,SAIR,CACD1vG,IAAK,iBACL9B,MAAO,WACL,IAAIukG,EAAS3oG,KAEbA,KAAK6mG,QAAQsO,UAAU,YAAaviG,SAAS6qE,MAAM,WACjDkrB,EAAOoM,WAAY,KAErB/0G,KAAK6mG,QAAQsO,UAAU,UAAWviG,SAAS6qE,MAAM,WAC/CkrB,EAAOoM,WAAY,EACnBpM,EAAO71D,OAAO6yD,EAAU5J,QAAQ//E,QAAQiwF,WAG3C,CACD/lG,IAAK,QACL9B,MAAO,WACDpE,KAAK2qG,aACT3qG,KAAKk0B,KAAK+0E,QACVjpG,KAAK0oG,SAAS1oG,KAAKg1G,eAEpB,CACD9uG,IAAK,SACL9B,MAAO,SAAgByxG,EAASzxG,GAC9B,GAA6B,MAAzBpE,KAAK8mG,OAAOC,WAAsB/mG,KAAK8mG,OAAOC,UAAU8O,GAA5D,CACA71G,KAAK8mG,OAAOh0D,SACZ,IAAIgjE,EAAc91G,KAAKo1G,iBACvB,GAAmB,MAAfU,GAAwBA,EAAY9hD,OAAO+hD,YAAanT,EAAY7G,QAAQF,MAAMga,EAASjT,EAAY7G,QAAQJ,MAAMoC,OAAzH,CACA,GAAI+X,EAAYr8F,MAAMua,OAASh0B,KAAK66E,OAAOw6B,SAAU,CACnD,IAAIzX,EAAOgF,EAAY7G,QAAQH,KAAKka,EAAYr8F,MAAMua,MAAM,GAC5D,GAAY,MAAR4pE,EAAc,OAElB,GAAIA,aAAgBgF,EAAY7G,QAAQE,KAAM,CAC5C,IAAI9d,EAAQyf,EAAKlpF,MAAMohG,EAAYr8F,MAAMurC,QACzC44C,EAAKz9F,OAAO4jG,aAAa/jG,KAAK66E,OAAQsD,QAEtCyf,EAAKmG,aAAa/jG,KAAK66E,OAAQi7B,EAAYr8F,MAAMua,MAEnDh0B,KAAK66E,OAAO9kB,SAEd/1D,KAAK66E,OAAOlvC,OAAOkqE,EAASzxG,GAC5BpE,KAAK8mG,OAAO6K,WACZ3xG,KAAKs1G,eAAet1G,KAAK66E,OAAOw6B,SAAUr1G,KAAK66E,OAAOw6B,SAAShzG,KAAK2G,QACpEhJ,KAAK8yC,aAEN,CACD5sC,IAAK,YACL9B,MAAO,SAAmBoF,GACxB,IAAIR,EAASwI,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,EAE7EqhG,EAAe7yG,KAAK8mG,OAAO99F,SAC/BQ,EAAQyF,KAAKkQ,IAAI3V,EAAOqpG,EAAe,GACvC7pG,EAASiG,KAAKkQ,IAAI3V,EAAQR,EAAQ6pG,EAAe,GAAKrpG,EACtD,IAAIwqB,OAAO,EACPgiF,EAAeh2G,KAAK8mG,OAAOzC,KAAK76F,GAChCysG,EAAgBhR,EAAe+Q,EAAc,GAC7C3R,EAAO4R,EAAc,GACrBjxD,EAASixD,EAAc,GAC3B,GAAY,MAAR5R,EAAc,OAAO,KAEzB,IAAI6R,EAAiB7R,EAAK9rF,SAASysC,GAAQ,GAEvCmxD,EAAkBlR,EAAeiR,EAAgB,GAErDliF,EAAOmiF,EAAgB,GACvBnxD,EAASmxD,EAAgB,GAEzB,IAAIt4F,EAAQjL,SAASwjG,cACrB,GAAIptG,EAAS,EAAG,CACd6U,EAAMw4F,SAASriF,EAAMgxB,GAErB,IAAIsxD,EAAgBt2G,KAAK8mG,OAAOzC,KAAK76F,EAAQR,GAEzCutG,EAAgBtR,EAAeqR,EAAe,GAKlD,GAHAjS,EAAOkS,EAAc,GACrBvxD,EAASuxD,EAAc,GAEX,MAARlS,EAAc,OAAO,KAEzB,IAAImS,EAAkBnS,EAAK9rF,SAASysC,GAAQ,GAExCyxD,EAAkBxR,EAAeuR,EAAiB,GAMtD,OAJAxiF,EAAOyiF,EAAgB,GACvBzxD,EAASyxD,EAAgB,GAEzB54F,EAAM64F,OAAO1iF,EAAMgxB,GACZnnC,EAAM4qB,wBAEb,IAAIkuE,EAAO,OACPx8E,OAAO,EAeX,OAdInG,aAAgBsoE,MACdt3C,EAAShxB,EAAK3xB,KAAK2G,QACrB6U,EAAMw4F,SAASriF,EAAMgxB,GACrBnnC,EAAM64F,OAAO1iF,EAAMgxB,EAAS,KAE5BnnC,EAAMw4F,SAASriF,EAAMgxB,EAAS,GAC9BnnC,EAAM64F,OAAO1iF,EAAMgxB,GACnB2xD,EAAO,SAETx8E,EAAOtc,EAAM4qB,0BAEbtO,EAAOkqE,EAAKh9D,QAAQoB,wBAChBuc,EAAS,IAAG2xD,EAAO,UAElB,CACL/7E,OAAQT,EAAKQ,IAAMR,EAAKjB,OACxBA,OAAQiB,EAAKjB,OACbtf,KAAMugB,EAAKw8E,GACX98F,MAAOsgB,EAAKw8E,GACZh8E,IAAKR,EAAKQ,IACV3C,MAAO,KAIZ,CACD9xB,IAAK,iBACL9B,MAAO,WACL,IAAI6iG,EAAYr0F,SAASy2F,eACzB,GAAiB,MAAbpC,GAAqBA,EAAU2P,YAAc,EAAG,OAAO,KAC3D,IAAId,EAAc7O,EAAU4P,WAAW,GACvC,GAAmB,MAAff,EAAqB,OAAO,KAChC,IAAIj4F,EAAQ7d,KAAK82G,gBAAgBhB,GAEjC,OADAzP,EAAMhoE,KAAK,iBAAkBxgB,GACtBA,IAER,CACD3X,IAAK,WACL9B,MAAO,WACL,IAAIipF,EAAartF,KAAKo1G,iBACtB,GAAkB,MAAd/nB,EAAoB,MAAO,CAAC,KAAM,MACtC,IAAIxvE,EAAQ7d,KAAK+2G,kBAAkB1pB,GACnC,MAAO,CAACxvE,EAAOwvE,KAEhB,CACDnnF,IAAK,WACL9B,MAAO,WACL,OAAOwO,SAASokG,gBAAkBh3G,KAAKk0B,OAExC,CACDhuB,IAAK,oBACL9B,MAAO,SAA2ByZ,GAChC,IAAIsrF,EAASnpG,KAET+nC,EAAY,CAAC,CAAClqB,EAAMpE,MAAMua,KAAMnW,EAAMpE,MAAMurC,SAC3CnnC,EAAMm2C,OAAO+hD,WAChBhuE,EAAUx+B,KAAK,CAACsU,EAAMnE,IAAIsa,KAAMnW,EAAMnE,IAAIsrC,SAE5C,IAAIiyD,EAAUlvE,EAAUtsB,KAAI,SAAUlD,GACpC,IAAI2+F,EAAYjS,EAAe1sF,EAAU,GACrCyb,EAAOkjF,EAAU,GACjBlyD,EAASkyD,EAAU,GAEnBtZ,EAAOgF,EAAY7G,QAAQH,KAAK5nE,GAAM,GACtCxqB,EAAQo0F,EAAK54C,OAAOmkD,EAAOrC,QAC/B,OAAe,IAAX9hD,EACKx7C,EACEo0F,aAAgBgF,EAAY7G,QAAQD,UACtCtyF,EAAQo0F,EAAK50F,SAEbQ,EAAQo0F,EAAKp0F,MAAMwqB,EAAMgxB,MAGhCtrC,EAAMzK,KAAKkQ,IAAIlQ,KAAKmQ,IAAI/T,MAAM4D,KAAM0lG,EAAmBsC,IAAWj3G,KAAK8mG,OAAO99F,SAAW,GACzFyQ,EAAQxK,KAAKkQ,IAAI9T,MAAM4D,KAAM,CAACyK,GAAKzY,OAAO0zG,EAAmBsC,KACjE,OAAO,IAAIjL,EAAMvyF,EAAOC,EAAMD,KAE/B,CACDvT,IAAK,kBACL9B,MAAO,SAAyB0xG,GAC9B,IAAK3hD,EAASn0D,KAAKk0B,KAAM4hF,EAAYqB,kBAAoBrB,EAAYC,YAAc5hD,EAASn0D,KAAKk0B,KAAM4hF,EAAYsB,cACjH,OAAO,KAET,IAAIv5F,EAAQ,CACVpE,MAAO,CAAEua,KAAM8hF,EAAYqB,eAAgBnyD,OAAQ8wD,EAAYJ,aAC/Dh8F,IAAK,CAAEsa,KAAM8hF,EAAYsB,aAAcpyD,OAAQ8wD,EAAYF,WAC3D5hD,OAAQ8hD,GAkBV,MAhBA,CAACj4F,EAAMpE,MAAOoE,EAAMnE,KAAK1T,SAAQ,SAAUuS,GACzC,IAAIyb,EAAOzb,EAASyb,KAChBgxB,EAASzsC,EAASysC,OACtB,QAAShxB,aAAgBsoE,OAAStoE,EAAKqjF,WAAWruG,OAAS,EACzD,GAAIgrB,EAAKqjF,WAAWruG,OAASg8C,EAC3BhxB,EAAOA,EAAKqjF,WAAWryD,GACvBA,EAAS,MACJ,IAAIhxB,EAAKqjF,WAAWruG,SAAWg8C,EAIpC,MAHAhxB,EAAOA,EAAKsjF,UACZtyD,EAAShxB,aAAgBsoE,KAAOtoE,EAAK3xB,KAAK2G,OAASgrB,EAAKqjF,WAAWruG,OAAS,EAKhFuP,EAASyb,KAAOA,EAAMzb,EAASysC,OAASA,KAEnCnnC,IAER,CACD3X,IAAK,gBACL9B,MAAO,SAAuByZ,GAC5B,IAAI6rF,EAAS1pG,KAETi3G,EAAUp5F,EAAMk4F,UAAY,CAACl4F,EAAMrU,OAAS,CAACqU,EAAMrU,MAAOqU,EAAMrU,MAAQqU,EAAM7U,QAC9EuI,EAAO,GACPshG,EAAe7yG,KAAK8mG,OAAO99F,SAoB/B,OAnBAiuG,EAAQjxG,SAAQ,SAAUwD,EAAOV,GAC/BU,EAAQyF,KAAKkQ,IAAI0zF,EAAe,EAAGrpG,GACnC,IAAIwqB,OAAO,EACPujF,EAAgB7N,EAAO5C,OAAOzC,KAAK76F,GACnCguG,EAAgBvS,EAAesS,EAAe,GAC9ClT,EAAOmT,EAAc,GACrBxyD,EAASwyD,EAAc,GACvBC,EAAkBpT,EAAK9rF,SAASysC,EAAc,IAANl8C,GAExC4uG,EAAkBzS,EAAewS,EAAiB,GAEtDzjF,EAAO0jF,EAAgB,GACvB1yD,EAAS0yD,EAAgB,GAEzBnmG,EAAKhI,KAAKyqB,EAAMgxB,MAEdzzC,EAAKvI,OAAS,IAChBuI,EAAOA,EAAKtQ,OAAOsQ,IAEdA,IAER,CACDrL,IAAK,iBACL9B,MAAO,SAAwBwiG,GAC7B,IAAI/oF,EAAQ7d,KAAK8nG,UACjB,GAAa,MAATjqF,EAAJ,CACA,IAAIsvB,EAASntC,KAAKgqG,UAAUnsF,EAAMrU,MAAOqU,EAAM7U,QAC/C,GAAc,MAAVmkC,EAAJ,CACA,IAAIg1B,EAAQniE,KAAK8mG,OAAO99F,SAAW,EAE/BgqG,EAAehzG,KAAK8mG,OAAOnyF,KAAK1F,KAAKkQ,IAAItB,EAAMrU,MAAO24D,IACtD8wC,EAAgBhO,EAAe+N,EAAc,GAC7Cj7C,EAAQk7C,EAAc,GAEtB9kE,EAAO4pB,EACX,GAAIl6C,EAAM7U,OAAS,EAAG,CACpB,IAAI6qG,EAAgB7zG,KAAK8mG,OAAOnyF,KAAK1F,KAAKkQ,IAAItB,EAAMrU,MAAQqU,EAAM7U,OAAQm5D,IAEtE2xC,EAAgB7O,EAAe4O,EAAe,GAElD1lE,EAAO2lE,EAAc,GAEvB,GAAa,MAAT/7C,GAAyB,MAAR5pB,EAArB,CACA,IAAIwpE,EAAe/Q,EAAmBn+D,wBAClC0E,EAAOxS,IAAMg9E,EAAah9E,IAC5BisE,EAAmBoC,WAAa2O,EAAah9E,IAAMwS,EAAOxS,IACjDwS,EAAOvS,OAAS+8E,EAAa/8E,SACtCgsE,EAAmBoC,WAAa77D,EAAOvS,OAAS+8E,EAAa/8E,aAGhE,CACD10B,IAAK,iBACL9B,MAAO,SAAwBqxG,EAAWC,GACxC,IAAIC,EAAUnkG,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAKikG,EAC9EG,EAAYpkG,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAKkkG,EAChFhR,EAAQlzF,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,IAAmBA,UAAU,GAG3E,GADA60F,EAAMhoE,KAAK,iBAAkBo3E,EAAWC,EAAaC,EAASC,GAC7C,MAAbH,GAA8C,MAAxBz1G,KAAKk0B,KAAKoT,YAA8C,MAAxBmuE,EAAUnuE,YAA4C,MAAtBquE,EAAQruE,WAAlG,CAGA,IAAI2/D,EAAYr0F,SAASy2F,eACzB,GAAiB,MAAbpC,EACJ,GAAiB,MAAbwO,EAAmB,CAChBz1G,KAAK2qG,YAAY3qG,KAAKk0B,KAAK+0E,QAChC,IAAIj1C,GAAUh0D,KAAKo1G,kBAAoB,IAAIphD,OAC3C,GAAc,MAAVA,GAAkB0wC,GAAS+Q,IAAczhD,EAAOmjD,gBAAkBzB,IAAgB1hD,EAAO0hD,aAAeC,IAAY3hD,EAAOojD,cAAgBxB,IAAc5hD,EAAO4hD,UAAW,CAEpJ,MAArBH,EAAUvX,UACZwX,EAAc,GAAG3wG,QAAQ1E,KAAKo1G,EAAUnuE,WAAW+vE,WAAY5B,GAC/DA,EAAYA,EAAUnuE,YAED,MAAnBquE,EAAQzX,UACV0X,EAAY,GAAG7wG,QAAQ1E,KAAKs1G,EAAQruE,WAAW+vE,WAAY1B,GAC3DA,EAAUA,EAAQruE,YAEpB,IAAIzpB,EAAQjL,SAASwjG,cACrBv4F,EAAMw4F,SAASZ,EAAWC,GAC1B73F,EAAM64F,OAAOf,EAASC,GACtB3O,EAAU2Q,kBACV3Q,EAAU4Q,SAASh6F,SAGrBopF,EAAU2Q,kBACV53G,KAAKk0B,KAAK4jF,OACVllG,SAAS6qE,KAAKwrB,WAGjB,CACD/iG,IAAK,WACL9B,MAAO,SAAkByZ,GACvB,IAAI6mF,EAAQlzF,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,IAAmBA,UAAU,GACvE9H,EAAS8H,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAKm0F,EAAU5J,QAAQ//E,QAAQotF,IAO3G,GALqB,kBAAV1E,IACTh7F,EAASg7F,EACTA,GAAQ,GAEV2B,EAAMhoE,KAAK,WAAYxgB,GACV,MAATA,EAAe,CACjB,IAAItM,EAAOvR,KAAK+3G,cAAcl6F,GAC9B7d,KAAKs1G,eAAejqG,MAAMrL,KAAM20G,EAAmBpjG,GAAMtQ,OAAO,CAACyjG,UAEjE1kG,KAAKs1G,eAAe,MAEtBt1G,KAAK8yC,OAAOppC,KAEb,CACDxD,IAAK,SACL9B,MAAO,WACL,IAAIsF,EAAS8H,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAKm0F,EAAU5J,QAAQ//E,QAAQiwF,KAEvG+L,EAAWh4G,KAAK8nG,UAEhBmQ,EAAYj4G,KAAK2sD,WACjBurD,EAAajT,EAAegT,EAAW,GACvCnQ,EAAYoQ,EAAW,GACvBpC,EAAcoC,EAAW,GAM7B,GAJAl4G,KAAK8nG,UAAYA,EACK,MAAlB9nG,KAAK8nG,YACP9nG,KAAKg1G,WAAah1G,KAAK8nG,aAEpB,EAAI0K,EAAYzW,SAASic,EAAUh4G,KAAK8nG,WAAY,CACvD,IAAIkF,GAEChtG,KAAK80G,WAA4B,MAAfgB,GAAuBA,EAAY9hD,OAAO+hD,WAAaD,EAAYr8F,MAAMua,OAASh0B,KAAK66E,OAAOw6B,UACnHr1G,KAAK66E,OAAOtiD,UAEd,IAGM00E,EAHF17F,EAAO,CAACo0F,EAAU5J,QAAQ/mE,OAAOg6E,kBAAkB,EAAIsD,EAAQvW,SAAS/7F,KAAK8nG,YAAY,EAAIwK,EAAQvW,SAASic,GAAWtuG,GAE7H,IADCsjG,EAAWhtG,KAAK6mG,SAASqG,KAAK7hG,MAAM2hG,EAAU,CAACrH,EAAU5J,QAAQ/mE,OAAOwyE,eAAevmG,OAAOsQ,IAC3F7H,IAAWi8F,EAAU5J,QAAQ//E,QAAQytF,QAGtCwD,EAAYjtG,KAAK6mG,SAASqG,KAAK7hG,MAAM4hG,EAAW17F,QAMlDsjG,EA/ZO,GAkahB,SAAS1gD,EAASh0D,EAAQ4wG,GACxB,IAEEA,EAAWzpE,WACX,MAAOp3B,GACP,OAAO,EAOT,OAHI6gG,aAAsBzU,OACxByU,EAAaA,EAAWzpE,YAEnBnnC,EAAOg0D,SAAS48C,GAGzB7vG,EAAQ8qG,MAAQA,EAChB9qG,EAAQ66F,QAAU8Y,GAIZ,SAAU1zG,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI89F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZsgE,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI2U,EAAQ,SAAUzU,GAGpB,SAASyU,IAGP,OAFAhV,EAAgBnjG,KAAMm4G,GAEf/U,EAA2BpjG,MAAOm4G,EAAMhhB,WAAa3qF,OAAO2K,eAAeghG,IAAQ9sG,MAAMrL,KAAMwR,YA6BxG,OAlCA8xF,EAAU6U,EAAOzU,GAQjBxB,EAAaiW,EAAO,CAAC,CACnBjyG,IAAK,aACL9B,MAAO,SAAoBjE,EAAQqkG,GACF,IAA3BrkG,EAAOmkG,SAASt7F,OAClB08D,EAAKyyC,EAAM1wG,UAAU0vF,WAAa3qF,OAAO2K,eAAeghG,EAAM1wG,WAAY,aAAczH,MAAMK,KAAKL,KAAMG,EAAQqkG,GAEjHxkG,KAAKgT,WAGR,CACD9M,IAAK,SACL9B,MAAO,WACL,OAAO,IAER,CACD8B,IAAK,QACL9B,MAAO,WACL,MAAO,MAEP,CAAC,CACH8B,IAAK,QACL9B,MAAO,gBAKF+zG,EAnCG,CAoCVvV,EAAY7G,QAAQG,OAEtBic,EAAM7Z,SAAW,QACjB6Z,EAAMja,QAAU,KAEhBh9F,EAAQ66F,QAAUoc,GAIZ,SAAUh3G,EAAQD,EAAS,GAEjC,aAEA,IAAI27F,EAAa78F,MAAQA,KAAK68F,WAAc,WACxC,IAAIC,EAAgBtwF,OAAOunF,gBACtB,CAAEoD,UAAW,cAAgB/rF,OAAS,SAAUqY,EAAG9L,GAAK8L,EAAE0zE,UAAYx/E,IACvE,SAAU8L,EAAG9L,GAAK,IAAK,IAAI+H,KAAK/H,EAAOA,EAAEH,eAAekI,KAAI+D,EAAE/D,GAAK/H,EAAE+H,KACzE,OAAO,SAAU+D,EAAG9L,GAEhB,SAASolF,IAAO/8F,KAAKgX,YAAcyM,EADnCq5E,EAAcr5E,EAAG9L,GAEjB8L,EAAEhc,UAAkB,OAANkQ,EAAanL,OAAO7E,OAAOgQ,IAAMolF,EAAGt1F,UAAYkQ,EAAElQ,UAAW,IAAIs1F,IAP3C,GAU5CvwF,OAAOE,eAAexL,EAAS,aAAc,CAAEkD,OAAO,IACtD,IAAIg0G,EAAgB,EAAoB,IACpCC,EAAW,EAAoB,IAC/BnzC,EAAW,EAAoB,GAC/BozC,EAA+B,SAAUrb,GAEzC,SAASqb,EAAcjxE,GACnB,IAAI61D,EAAQD,EAAO58F,KAAKL,KAAMqnC,IAAYrnC,KAE1C,OADAk9F,EAAM7nF,QACC6nF,EAwNX,OA5NAL,EAAUyb,EAAerb,GAMzBqb,EAAc7wG,UAAUiqG,YAAc,SAAU7gD,GAC5C7wD,KAAK+jG,aAAalzC,IAEtBynD,EAAc7wG,UAAUsuD,OAAS,WAC7BknC,EAAOx1F,UAAUsuD,OAAO11D,KAAKL,MAC7BA,KAAKskG,SAASt+F,SAAQ,SAAUy+F,GAC5BA,EAAM1uC,aAGduiD,EAAc7wG,UAAU4N,MAAQ,WAC5B,IAAI6nF,EAAQl9F,KACZA,KAAKskG,SAAW,IAAI8T,EAAcrc,QAElC,GAAGztF,MACEjO,KAAKL,KAAKqnC,QAAQgwE,YAClBt8F,UACA/U,SAAQ,SAAUguB,GACnB,IACI,IAAIywE,EAAQ8T,EAASvkF,GACrBkpE,EAAM6G,aAAaU,EAAOvH,EAAMoH,SAAShhD,WAAQx9C,GAErD,MAAOzB,GACH,GAAIA,aAAe6gE,EAAS83B,eACxB,OAEA,MAAM34F,OAItBi0G,EAAc7wG,UAAUwpG,SAAW,SAAUznG,EAAOR,GAChD,GAAc,IAAVQ,GAAeR,IAAWhJ,KAAKgJ,SAC/B,OAAOhJ,KAAKgT,SAEhBhT,KAAKskG,SAASkU,UAAUhvG,EAAOR,GAAQ,SAAUy7F,EAAOz/C,EAAQh8C,GAC5Dy7F,EAAMwM,SAASjsD,EAAQh8C,OAG/BsvG,EAAc7wG,UAAUspG,WAAa,SAAU0H,EAAUjvG,GACrD,IAAIkvG,EAAK14G,KAAKskG,SAAS1I,KAAKpyF,GAAQi7F,EAAQiU,EAAG,GAAI1zD,EAAS0zD,EAAG,GAC/D,OAA0B,MAArBD,EAASna,UAAoBma,EAAShU,IACjB,MAArBgU,EAASna,UAAoBmG,aAAiBgU,EACxC,CAAChU,EAAOz/C,GAEVy/C,aAAiB6T,EACf7T,EAAMsM,WAAW0H,EAAUzzD,GAG3B,CAAC,MAAO,IAGvBszD,EAAc7wG,UAAU28F,YAAc,SAAUqU,EAAUjvG,EAAOR,QAC/C,IAAVQ,IAAoBA,EAAQ,QACjB,IAAXR,IAAqBA,EAASoR,OAAOmwF,WACzC,IAAInG,EAAc,GACduU,EAAa3vG,EAWjB,OAVAhJ,KAAKskG,SAASkU,UAAUhvG,EAAOR,GAAQ,SAAUy7F,EAAOj7F,EAAOR,IACjC,MAArByvG,EAASna,UAAoBma,EAAShU,IACjB,MAArBgU,EAASna,UAAoBmG,aAAiBgU,IAC/CrU,EAAY76F,KAAKk7F,GAEjBA,aAAiB6T,IACjBlU,EAAcA,EAAYnjG,OAAOwjG,EAAML,YAAYqU,EAAUjvG,EAAOmvG,KAExEA,GAAc3vG,KAEXo7F,GAEXkU,EAAc7wG,UAAUuuD,OAAS,WAC7Bh2D,KAAKskG,SAASt+F,SAAQ,SAAUy+F,GAC5BA,EAAMzuC,YAEVinC,EAAOx1F,UAAUuuD,OAAO31D,KAAKL,OAEjCs4G,EAAc7wG,UAAU6pG,SAAW,SAAU9nG,EAAOR,EAAQa,EAAMzF,GAC9DpE,KAAKskG,SAASkU,UAAUhvG,EAAOR,GAAQ,SAAUy7F,EAAOz/C,EAAQh8C,GAC5Dy7F,EAAM6M,SAAStsD,EAAQh8C,EAAQa,EAAMzF,OAG7Ck0G,EAAc7wG,UAAUu8F,SAAW,SAAUx6F,EAAOpF,EAAOy/F,GACvD,IAAI6U,EAAK14G,KAAKskG,SAAS1I,KAAKpyF,GAAQi7F,EAAQiU,EAAG,GAAI1zD,EAAS0zD,EAAG,GAC/D,GAAIjU,EACAA,EAAMT,SAASh/C,EAAQ5gD,EAAOy/F,OAE7B,CACD,IAAIjG,EAAc,MAAPiG,EAAc3+B,EAASv9D,OAAO,OAAQvD,GAAS8gE,EAASv9D,OAAOvD,EAAOy/F,GACjF7jG,KAAK0xG,YAAY9T,KAGzB0a,EAAc7wG,UAAUs8F,aAAe,SAAU6U,EAAWC,GACxD,GAAoC,MAAhC74G,KAAK2kG,QAAQE,kBACZ7kG,KAAK2kG,QAAQE,gBAAgBr9B,MAAK,SAAUi9B,GACzC,OAAOmU,aAAqBnU,KAEhC,MAAM,IAAIv/B,EAAS83B,eAAe,iBAAmB4b,EAAUjU,QAAQrG,SAAW,SAAWt+F,KAAK2kG,QAAQrG,UAE9Gsa,EAAUE,WAAW94G,KAAM64G,IAE/BP,EAAc7wG,UAAUuB,OAAS,WAC7B,OAAOhJ,KAAKskG,SAAS5yD,QAAO,SAAUqnE,EAAMtU,GACxC,OAAOsU,EAAOtU,EAAMz7F,WACrB,IAEPsvG,EAAc7wG,UAAUimG,aAAe,SAAUsL,EAAcvQ,GAC3DzoG,KAAKskG,SAASt+F,SAAQ,SAAUy+F,GAC5BuU,EAAajV,aAAaU,EAAOgE,OAGzC6P,EAAc7wG,UAAUkqG,SAAW,SAAU5xG,GAEzC,GADAk9F,EAAOx1F,UAAUkqG,SAAStxG,KAAKL,KAAMD,GACR,IAAzBC,KAAKskG,SAASt7F,OACd,GAAiC,MAA7BhJ,KAAK2kG,QAAQC,aAAsB,CACnC,IAAIH,EAAQv/B,EAASv9D,OAAO3H,KAAK2kG,QAAQC,cACzC5kG,KAAK0xG,YAAYjN,GACjBA,EAAMkN,SAAS5xG,QAGfC,KAAKgT,UAIjBslG,EAAc7wG,UAAU4K,KAAO,SAAU7I,EAAOyvG,QAC1B,IAAdA,IAAwBA,GAAY,GACxC,IAAIP,EAAK14G,KAAKskG,SAAS1I,KAAKpyF,EAAOyvG,GAAYxU,EAAQiU,EAAG,GAAI1zD,EAAS0zD,EAAG,GACtEngG,EAAW,CAAC,CAACvY,KAAMwJ,IACvB,OAAIi7F,aAAiB6T,EACV//F,EAAStX,OAAOwjG,EAAMpyF,KAAK2yC,EAAQi0D,KAE5B,MAATxU,GACLlsF,EAAShP,KAAK,CAACk7F,EAAOz/C,IAEnBzsC,IAEX+/F,EAAc7wG,UAAUmqG,YAAc,SAAUnN,GAC5CzkG,KAAKskG,SAAStxF,OAAOyxF,IAEzB6T,EAAc7wG,UAAUiK,QAAU,SAAUvD,GACpCA,aAAkBmqG,GAClBnqG,EAAOu/F,aAAa1tG,MAExBi9F,EAAOx1F,UAAUiK,QAAQrR,KAAKL,KAAMmO,IAExCmqG,EAAc7wG,UAAUiN,MAAQ,SAAUlL,EAAOk7F,GAE7C,QADc,IAAVA,IAAoBA,GAAQ,IAC3BA,EAAO,CACR,GAAc,IAAVl7F,EACA,OAAOxJ,KACX,GAAIwJ,IAAUxJ,KAAKgJ,SACf,OAAOhJ,KAAK6kC,KAEpB,IAAIs5C,EAAQn+E,KAAKmyB,QAMjB,OALAnyB,KAAKG,OAAO4jG,aAAa5lB,EAAOn+E,KAAK6kC,MACrC7kC,KAAKskG,SAASkU,UAAUhvG,EAAOxJ,KAAKgJ,UAAU,SAAUy7F,EAAOz/C,EAAQh8C,GACnEy7F,EAAQA,EAAM/vF,MAAMswC,EAAQ0/C,GAC5BvmB,EAAMuzB,YAAYjN,MAEftmB,GAEXm6B,EAAc7wG,UAAUoqG,OAAS,WAC7B7xG,KAAK0tG,aAAa1tG,KAAKG,OAAQH,KAAK6kC,MACpC7kC,KAAKgT,UAETslG,EAAc7wG,UAAUqrC,OAAS,SAAU+0D,EAAW9nG,GAClD,IAAIm9F,EAAQl9F,KACRy0D,EAAa,GACbC,EAAe,GACnBmzC,EAAU7hG,SAAQ,SAAUkzG,GACpBA,EAAS/qG,SAAW+uF,EAAM71D,SAA6B,cAAlB6xE,EAASvyG,OAC9C8tD,EAAWlrD,KAAK8B,MAAMopD,EAAYykD,EAASzkD,YAC3CC,EAAanrD,KAAK8B,MAAMqpD,EAAcwkD,EAASxkD,kBAGvDA,EAAa1uD,SAAQ,SAAUguB,GAI3B,KAAuB,MAAnBA,EAAKsT,YAEY,WAAjBtT,EAAKkqE,SACLtrF,SAAS6qE,KAAK07B,wBAAwBnlF,GAAQwpE,KAAK4b,gCAHvD,CAMA,IAAIxb,EAAO14B,EAAS02B,KAAK5nE,GACb,MAAR4pE,IAE2B,MAA3BA,EAAKv2D,QAAQC,YAAsBs2D,EAAKv2D,QAAQC,aAAe41D,EAAM71D,SACrEu2D,EAAK5nC,cAGbvB,EACKt8C,QAAO,SAAU6b,GAClB,OAAOA,EAAKsT,YAAc41D,EAAM71D,WAE/B9oB,MAAK,SAAU7G,EAAGC,GACnB,OAAID,IAAMC,EACC,EACPD,EAAEyhG,wBAAwBxhG,GAAK6lF,KAAK6b,4BAC7B,GAEH,KAEPrzG,SAAQ,SAAUguB,GACnB,IAAI6kF,EAAU,KACU,MAApB7kF,EAAKslF,cACLT,EAAU3zC,EAAS02B,KAAK5nE,EAAKslF,cAEjC,IAAI1b,EAAO2a,EAASvkF,GAChB4pE,EAAK/4D,MAAQg0E,GAAwB,MAAbjb,EAAK/4D,OACV,MAAf+4D,EAAKz9F,QACLy9F,EAAKz9F,OAAOyxG,YAAY1U,GAE5BA,EAAM6G,aAAanG,EAAMib,QAAW/yG,QAIzCwyG,EA7NuB,CA8NhCD,EAAStc,SACX,SAASwc,EAASvkF,GACd,IAAI4pE,EAAO14B,EAAS02B,KAAK5nE,GACzB,GAAY,MAAR4pE,EACA,IACIA,EAAO14B,EAASv9D,OAAOqsB,GAE3B,MAAO9jB,GACH0tF,EAAO14B,EAASv9D,OAAOu9D,EAASy2B,MAAMqC,QACtC,GAAG1vF,MAAMjO,KAAK2zB,EAAKqjF,YAAYrxG,SAAQ,SAAUy+F,GAE7C7G,EAAKv2D,QAAQqqE,YAAYjN,MAEzBzwE,EAAKsT,YACLtT,EAAKsT,WAAWiyE,aAAa3b,EAAKv2D,QAASrT,GAE/C4pE,EAAK7nC,SAGb,OAAO6nC,EAEX18F,EAAQ66F,QAAUuc,GAKZ,SAAUn3G,EAAQD,EAAS,GAEjC,aAEA,IAAI27F,EAAa78F,MAAQA,KAAK68F,WAAc,WACxC,IAAIC,EAAgBtwF,OAAOunF,gBACtB,CAAEoD,UAAW,cAAgB/rF,OAAS,SAAUqY,EAAG9L,GAAK8L,EAAE0zE,UAAYx/E,IACvE,SAAU8L,EAAG9L,GAAK,IAAK,IAAI+H,KAAK/H,EAAOA,EAAEH,eAAekI,KAAI+D,EAAE/D,GAAK/H,EAAE+H,KACzE,OAAO,SAAU+D,EAAG9L,GAEhB,SAASolF,IAAO/8F,KAAKgX,YAAcyM,EADnCq5E,EAAcr5E,EAAG9L,GAEjB8L,EAAEhc,UAAkB,OAANkQ,EAAanL,OAAO7E,OAAOgQ,IAAMolF,EAAGt1F,UAAYkQ,EAAElQ,UAAW,IAAIs1F,IAP3C,GAU5CvwF,OAAOE,eAAexL,EAAS,aAAc,CAAEkD,OAAO,IACtD,IAAIk3F,EAAe,EAAoB,IACnCG,EAAU,EAAoB,IAC9BX,EAAc,EAAoB,IAClC51B,EAAW,EAAoB,GAC/Bs0C,EAA4B,SAAUvc,GAEtC,SAASuc,EAAWnyE,GAChB,IAAI61D,EAAQD,EAAO58F,KAAKL,KAAMqnC,IAAYrnC,KAE1C,OADAk9F,EAAMC,WAAa,IAAI1B,EAAQM,QAAQmB,EAAM71D,SACtC61D,EAmDX,OAvDAL,EAAU2c,EAAYvc,GAMtBuc,EAAW5tD,QAAU,SAAUvkB,GAC3B,MAA4B,kBAAjBrnC,KAAKk+F,UAGP9yF,MAAMiD,QAAQrO,KAAKk+F,SACjB72D,EAAQ62D,QAAQ/3F,mBADtB,IAKTqzG,EAAW/xG,UAAUkkC,OAAS,SAAU9hC,EAAMzF,GAC1C,IAAIunC,EAASu5B,EAAS22B,MAAMhyF,GACxB8hC,aAAkB2vD,EAAaS,QAC/B/7F,KAAKm9F,WAAWwG,UAAUh4D,EAAQvnC,GAE7BA,IACS,MAAVunC,GAAmB9hC,IAAS7J,KAAK2kG,QAAQrG,UAAYt+F,KAAK4rD,UAAU/hD,KAAUzF,GAC9EpE,KAAKy5G,YAAY5vG,EAAMzF,KAInCo1G,EAAW/xG,UAAUmkD,QAAU,WAC3B,IAAIA,EAAU5rD,KAAKm9F,WAAW/oE,SAC1BuX,EAAS3rC,KAAK2kG,QAAQ/4C,QAAQ5rD,KAAKqnC,SAIvC,OAHc,MAAVsE,IACAigB,EAAQ5rD,KAAK2kG,QAAQrG,UAAY3yD,GAE9BigB,GAEX4tD,EAAW/xG,UAAUgyG,YAAc,SAAU5vG,EAAMzF,GAC/C,IAAIkxF,EAAc2H,EAAOx1F,UAAUgyG,YAAYp5G,KAAKL,KAAM6J,EAAMzF,GAEhE,OADApE,KAAKm9F,WAAW0E,KAAKvM,GACdA,GAEXkkB,EAAW/xG,UAAUqrC,OAAS,SAAU+0D,EAAW9nG,GAC/C,IAAIm9F,EAAQl9F,KACZi9F,EAAOx1F,UAAUqrC,OAAOzyC,KAAKL,KAAM6nG,EAAW9nG,GAC1C8nG,EAAUrgC,MAAK,SAAU0xC,GACzB,OAAOA,EAAS/qG,SAAW+uF,EAAM71D,SAA6B,eAAlB6xE,EAASvyG,SAErD3G,KAAKm9F,WAAW9nF,SAGxBmkG,EAAW/xG,UAAUwnD,KAAO,SAAUplD,EAAMzF,GACxC,IAAIu1F,EAAUsD,EAAOx1F,UAAUwnD,KAAK5uD,KAAKL,KAAM6J,EAAMzF,GAIrD,OAHIu1F,aAAmB6f,GAAc7f,EAAQgL,QAAQxwE,QAAUn0B,KAAK2kG,QAAQxwE,OACxEn0B,KAAKm9F,WAAWl+C,KAAK06C,GAElBA,GAEJ6f,EAxDoB,CAyD7B1e,EAAYiB,SACd76F,EAAQ66F,QAAUyd,GAKZ,SAAUr4G,EAAQD,EAAS,GAEjC,aAEA,IAAI27F,EAAa78F,MAAQA,KAAK68F,WAAc,WACxC,IAAIC,EAAgBtwF,OAAOunF,gBACtB,CAAEoD,UAAW,cAAgB/rF,OAAS,SAAUqY,EAAG9L,GAAK8L,EAAE0zE,UAAYx/E,IACvE,SAAU8L,EAAG9L,GAAK,IAAK,IAAI+H,KAAK/H,EAAOA,EAAEH,eAAekI,KAAI+D,EAAE/D,GAAK/H,EAAE+H,KACzE,OAAO,SAAU+D,EAAG9L,GAEhB,SAASolF,IAAO/8F,KAAKgX,YAAcyM,EADnCq5E,EAAcr5E,EAAG9L,GAEjB8L,EAAEhc,UAAkB,OAANkQ,EAAanL,OAAO7E,OAAOgQ,IAAMolF,EAAGt1F,UAAYkQ,EAAElQ,UAAW,IAAIs1F,IAP3C,GAU5CvwF,OAAOE,eAAexL,EAAS,aAAc,CAAEkD,OAAO,IACtD,IAAIi0G,EAAW,EAAoB,IAC/BnzC,EAAW,EAAoB,GAC/Bw0C,EAA0B,SAAUzc,GAEpC,SAASyc,IACL,OAAkB,OAAXzc,GAAmBA,EAAO5xF,MAAMrL,KAAMwR,YAAcxR,KAuB/D,OAzBA68F,EAAU6c,EAAUzc,GAIpByc,EAASt1G,MAAQ,SAAUijC,GACvB,OAAO,GAEXqyE,EAASjyG,UAAU+B,MAAQ,SAAUwqB,EAAMgxB,GACvC,OAAIhlD,KAAKqnC,UAAYrT,GACjBh0B,KAAKqnC,QAAQ8xE,wBAAwBnlF,GAAQwpE,KAAK4b,+BAC3CnqG,KAAKkQ,IAAI6lC,EAAQ,IAEpB,GAEZ00D,EAASjyG,UAAU8Q,SAAW,SAAU/O,EAAOyvG,GAC3C,IAAIj0D,EAAS,GAAGjgD,QAAQ1E,KAAKL,KAAKG,OAAOknC,QAAQgwE,WAAYr3G,KAAKqnC,SAGlE,OAFI79B,EAAQ,IACRw7C,GAAU,GACP,CAAChlD,KAAKG,OAAOknC,QAAS2d,IAEjC00D,EAASjyG,UAAUrD,MAAQ,WACvB,IAAIs0G,EACJ,OAAOA,EAAK,GAAIA,EAAG14G,KAAK2kG,QAAQrG,UAAYt+F,KAAK2kG,QAAQvgG,MAAMpE,KAAKqnC,WAAY,EAAMqxE,GAE1FgB,EAASvlF,MAAQ+wC,EAASy2B,MAAMge,YACzBD,EA1BkB,CA2B3BrB,EAAStc,SACX76F,EAAQ66F,QAAU2d,GAKZ,SAAUv4G,EAAQD,EAAS,GAEjC,IAAIy9F,EAAQ,EAAoB,IAC5Bj3F,EAAS,EAAoB,GAG7BkyG,EAAM,CACRzc,WAAY,CACV4C,QAAS,SAAUroF,EAAGC,EAAGkiG,GACN,kBAANniG,IAAgBA,EAAI,IACd,kBAANC,IAAgBA,EAAI,IAC/B,IAAIwlF,EAAaz1F,GAAO,EAAM,GAAIiQ,GASlC,IAAK,IAAIzR,KARJ2zG,IACH1c,EAAa3wF,OAAOqC,KAAKsuF,GAAYzrD,QAAO,SAAUmwD,EAAM37F,GAI1D,OAHuB,MAAnBi3F,EAAWj3F,KACb27F,EAAK37F,GAAOi3F,EAAWj3F,IAElB27F,IACN,KAEWnqF,OACC5R,IAAX4R,EAAExR,SAAiCJ,IAAX6R,EAAEzR,KAC5Bi3F,EAAWj3F,GAAOwR,EAAExR,IAGxB,OAAOsG,OAAOqC,KAAKsuF,GAAYn0F,OAAS,EAAIm0F,OAAar3F,GAG3DkmD,KAAM,SAASt0C,EAAGC,GACC,kBAAND,IAAgBA,EAAI,IACd,kBAANC,IAAgBA,EAAI,IAC/B,IAAIwlF,EAAa3wF,OAAOqC,KAAK6I,GAAGzW,OAAOuL,OAAOqC,KAAK8I,IAAI+5B,QAAO,SAAUyrD,EAAYj3F,GAIlF,OAHKy4F,EAAMjnF,EAAExR,GAAMyR,EAAEzR,MACnBi3F,EAAWj3F,QAAkBJ,IAAX6R,EAAEzR,GAAqB,KAAOyR,EAAEzR,IAE7Ci3F,IACN,IACH,OAAO3wF,OAAOqC,KAAKsuF,GAAYn0F,OAAS,EAAIm0F,OAAar3F,GAG3Do7F,UAAW,SAAUxpF,EAAGC,EAAGwpF,GACzB,GAAiB,kBAANzpF,EAAgB,OAAOC,EAClC,GAAiB,kBAANA,EAAX,CACA,IAAKwpF,EAAU,OAAOxpF,EACtB,IAAIwlF,EAAa3wF,OAAOqC,KAAK8I,GAAG+5B,QAAO,SAAUyrD,EAAYj3F,GAE3D,YADeJ,IAAX4R,EAAExR,KAAoBi3F,EAAWj3F,GAAOyR,EAAEzR,IACvCi3F,IACN,IACH,OAAO3wF,OAAOqC,KAAKsuF,GAAYn0F,OAAS,EAAIm0F,OAAar3F,KAI7DkzF,SAAU,SAAUgG,GAClB,OAAO,IAAI8a,EAAS9a,IAGtBh2F,OAAQ,SAAU41F,GAChB,MAA4B,kBAAjBA,EAAG,UACLA,EAAG,UACoB,kBAAdA,EAAGO,OACZP,EAAGO,OAEkB,kBAAdP,EAAGK,OAAsBL,EAAGK,OAAOj2F,OAAS,IAMhE,SAAS8wG,EAAS9a,GAChBh/F,KAAKg/F,IAAMA,EACXh/F,KAAKwJ,MAAQ,EACbxJ,KAAKglD,OAAS,EAGhB80D,EAASryG,UAAUo4F,QAAU,WAC3B,OAAO7/F,KAAKsgG,aAAe17C,EAAAA,GAG7Bk1D,EAASryG,UAAUo9B,KAAO,SAAU77B,GAC7BA,IAAQA,EAAS47C,EAAAA,GACtB,IAAIk7C,EAAS9/F,KAAKg/F,IAAIh/F,KAAKwJ,OAC3B,GAAIs2F,EAAQ,CACV,IAAI96C,EAAShlD,KAAKglD,OACd47C,EAAWgZ,EAAI5wG,OAAO82F,GAQ1B,GAPI92F,GAAU43F,EAAW57C,GACvBh8C,EAAS43F,EAAW57C,EACpBhlD,KAAKwJ,OAAS,EACdxJ,KAAKglD,OAAS,GAEdhlD,KAAKglD,QAAUh8C,EAEe,kBAArB82F,EAAO,UAChB,MAAO,CAAE,OAAU92F,GAEnB,IAAI+wG,EAAQ,GAYZ,OAXIja,EAAO3C,aACT4c,EAAM5c,WAAa2C,EAAO3C,YAEC,kBAAlB2C,EAAOX,OAChB4a,EAAM5a,OAASn2F,EACmB,kBAAlB82F,EAAOb,OACvB8a,EAAM9a,OAASa,EAAOb,OAAOrqF,OAAOowC,EAAQh8C,GAG5C+wG,EAAM9a,OAASa,EAAOb,OAEjB8a,EAGT,MAAO,CAAE5a,OAAQv6C,EAAAA,IAIrBk1D,EAASryG,UAAU04F,KAAO,WACxB,OAAOngG,KAAKg/F,IAAIh/F,KAAKwJ,QAGvBswG,EAASryG,UAAU64F,WAAa,WAC9B,OAAItgG,KAAKg/F,IAAIh/F,KAAKwJ,OAETowG,EAAI5wG,OAAOhJ,KAAKg/F,IAAIh/F,KAAKwJ,QAAUxJ,KAAKglD,OAExCJ,EAAAA,GAIXk1D,EAASryG,UAAU44F,SAAW,WAC5B,OAAIrgG,KAAKg/F,IAAIh/F,KAAKwJ,OAC8B,kBAAnCxJ,KAAKg/F,IAAIh/F,KAAKwJ,OAAO,UACvB,SACyC,kBAAhCxJ,KAAKg/F,IAAIh/F,KAAKwJ,OAAO21F,OAC9B,SAEA,SAGJ,UAGT2a,EAASryG,UAAUyR,KAAO,WACxB,GAAKlZ,KAAK6/F,UAEH,IAAoB,IAAhB7/F,KAAKglD,OACd,OAAOhlD,KAAKg/F,IAAI1wF,MAAMtO,KAAKwJ,OAE3B,IAAIw7C,EAAShlD,KAAKglD,OACdx7C,EAAQxJ,KAAKwJ,MACbq7B,EAAO7kC,KAAK6kC,OACZ3rB,EAAOlZ,KAAKg/F,IAAI1wF,MAAMtO,KAAKwJ,OAG/B,OAFAxJ,KAAKglD,OAASA,EACdhlD,KAAKwJ,MAAQA,EACN,CAACq7B,GAAM5jC,OAAOiY,GAVrB,MAAO,IAeX/X,EAAOD,QAAU04G,GAKX,SAAUz4G,EAAQD,GAExB,IAAIixB,EAAQ,WACZ,aAEA,SAAS6nF,EAAYjtG,EAAKpG,GACxB,OAAe,MAARA,GAAgBoG,aAAepG,EAGxC,IAAIszG,EASAC,EAOAC,EAfJ,IACEF,EAAY/uE,IACZ,MAAMkvE,GAGNH,EAAY,aAId,IACEC,EAAY95E,IACZ,MAAMg6E,GACNF,EAAY,aAId,IACEC,EAAgBn4G,QAChB,MAAMo4G,GACND,EAAgB,aAwBlB,SAAShoF,EAAMhyB,EAAQirD,EAAUivD,EAAO5yG,EAAW6yG,GACzB,kBAAblvD,IACTivD,EAAQjvD,EAASivD,MACjB5yG,EAAY2jD,EAAS3jD,UACrB6yG,EAAuBlvD,EAASkvD,qBAChClvD,EAAWA,EAASA,UAItB,IAAImvD,EAAa,GACbC,EAAc,GAEdC,EAA6B,oBAAVrlG,OASvB,SAASi9F,EAAOlyG,EAAQk6G,GAEtB,GAAe,OAAXl6G,EACF,OAAO,KAET,GAAc,IAAVk6G,EACF,OAAOl6G,EAET,IAAIskG,EACAryE,EACJ,GAAqB,iBAAVjyB,EACT,OAAOA,EAGT,GAAI65G,EAAY75G,EAAQ85G,GACtBxV,EAAQ,IAAIwV,OACP,GAAID,EAAY75G,EAAQ+5G,GAC7BzV,EAAQ,IAAIyV,OACP,GAAIF,EAAY75G,EAAQg6G,GAC7B1V,EAAQ,IAAI0V,GAAc,SAAUl4G,EAASC,GAC3C/B,EAAOyI,MAAK,SAASxE,GACnBnC,EAAQowG,EAAOjuG,EAAOi2G,EAAQ,OAC7B,SAASh2G,GACVnC,EAAOmwG,EAAOhuG,EAAKg2G,EAAQ,eAG1B,GAAIloF,EAAMuoF,UAAUv6G,GACzBskG,EAAQ,QACH,GAAItyE,EAAMwoF,WAAWx6G,GAC1BskG,EAAQ,IAAI3xF,OAAO3S,EAAOuJ,OAAQkxG,EAAiBz6G,IAC/CA,EAAOsY,YAAWgsF,EAAMhsF,UAAYtY,EAAOsY,gBAC1C,GAAI0Z,EAAM0oF,SAAS16G,GACxBskG,EAAQ,IAAI/xF,KAAKvS,EAAO2vG,eACnB,IAAI2K,GAAarlG,OAAO/E,SAASlQ,GAStC,OANEskG,EAFErvF,OAAO0lG,YAED1lG,OAAO0lG,YAAY36G,EAAO6I,QAG1B,IAAIoM,OAAOjV,EAAO6I,QAE5B7I,EAAO0hG,KAAK4C,GACLA,EACEuV,EAAY75G,EAAQ4L,OAC7B04F,EAAQj4F,OAAO7E,OAAOxH,GAEE,oBAAbsH,GACT2qB,EAAQ5lB,OAAO2K,eAAehX,GAC9BskG,EAAQj4F,OAAO7E,OAAOyqB,KAGtBqyE,EAAQj4F,OAAO7E,OAAOF,GACtB2qB,EAAQ3qB,GAIZ,GAAI2jD,EAAU,CACZ,IAAI5hD,EAAQ+wG,EAAWx1G,QAAQ5E,GAE/B,IAAc,GAAVqJ,EACF,OAAOgxG,EAAYhxG,GAErB+wG,EAAWhxG,KAAKpJ,GAChBq6G,EAAYjxG,KAAKk7F,GAiBnB,IAAK,IAAI37F,KAdLkxG,EAAY75G,EAAQ85G,IACtB95G,EAAO6F,SAAQ,SAAS5B,EAAO8B,GAC7B,IAAI60G,EAAW1I,EAAOnsG,EAAKm0G,EAAQ,GAC/BW,EAAa3I,EAAOjuG,EAAOi2G,EAAQ,GACvC5V,EAAMxwE,IAAI8mF,EAAUC,MAGpBhB,EAAY75G,EAAQ+5G,IACtB/5G,EAAO6F,SAAQ,SAAS5B,GACtB,IAAI62G,EAAa5I,EAAOjuG,EAAOi2G,EAAQ,GACvC5V,EAAMlkG,IAAI06G,MAIA96G,EAAQ,CACpB,IAAI+6G,EACA9oF,IACF8oF,EAAQ1uG,OAAO60B,yBAAyBjP,EAAOtpB,IAG7CoyG,GAAsB,MAAbA,EAAMjnF,MAGnBwwE,EAAM37F,GAAKupG,EAAOlyG,EAAO2I,GAAIuxG,EAAQ,IAGvC,GAAI7tG,OAAOupF,sBACT,KAAIolB,EAAU3uG,OAAOupF,sBAAsB51F,GAC3C,IAAS2I,EAAI,EAAGA,EAAIqyG,EAAQnyG,OAAQF,IAAK,CAGvC,IAAIktF,EAASmlB,EAAQryG,GACjBi+D,EAAav6D,OAAO60B,yBAAyBlhC,EAAQ61F,KACrDjvB,GAAeA,EAAW5vC,YAAemjF,KAG7C7V,EAAMzO,GAAUqc,EAAOlyG,EAAO61F,GAASqkB,EAAQ,GAC1CtzC,EAAW5vC,YACd3qB,OAAOE,eAAe+3F,EAAOzO,EAAQ,CACnC7+D,YAAY,MAMpB,GAAImjF,EACF,KAAIc,EAAmB5uG,OAAO6L,oBAAoBlY,GAClD,IAAS2I,EAAI,EAAGA,EAAIsyG,EAAiBpyG,OAAQF,IAAK,CAChD,IAAIuyG,EAAeD,EAAiBtyG,GAChCi+D,EAAav6D,OAAO60B,yBAAyBlhC,EAAQk7G,GACrDt0C,GAAcA,EAAW5vC,aAG7BstE,EAAM4W,GAAgBhJ,EAAOlyG,EAAOk7G,GAAehB,EAAQ,GAC3D7tG,OAAOE,eAAe+3F,EAAO4W,EAAc,CACzClkF,YAAY,MAKlB,OAAOstE,EAGT,MAxIuB,oBAAZr5C,IACTA,GAAW,GAEO,oBAATivD,IACTA,EAAQz1D,EAAAA,GAoIHytD,EAAOlyG,EAAQk6G,GAqBxB,SAASiB,EAAW1pC,GAClB,OAAOplE,OAAO/E,UAAUgI,SAASpP,KAAKuxE,GAIxC,SAASipC,EAASjpC,GAChB,MAAoB,kBAANA,GAAoC,kBAAlB0pC,EAAW1pC,GAI7C,SAAS8oC,EAAU9oC,GACjB,MAAoB,kBAANA,GAAoC,mBAAlB0pC,EAAW1pC,GAI7C,SAAS+oC,EAAW/oC,GAClB,MAAoB,kBAANA,GAAoC,oBAAlB0pC,EAAW1pC,GAI7C,SAASgpC,EAAiBW,GACxB,IAAIC,EAAQ,GAIZ,OAHID,EAAG7rB,SAAQ8rB,GAAS,KACpBD,EAAGE,aAAYD,GAAS,KACxBD,EAAGG,YAAWF,GAAS,KACpBA,EAIT,OAxCArpF,EAAMwpF,eAAiB,SAAwBx7G,GAC7C,GAAe,OAAXA,EACF,OAAO,KAET,IAAIwJ,EAAI,aAER,OADAA,EAAElC,UAAYtH,EACP,IAAIwJ,GAQbwoB,EAAMmpF,WAAaA,EAKnBnpF,EAAM0oF,SAAWA,EAKjB1oF,EAAMuoF,UAAYA,EAKlBvoF,EAAMwoF,WAAaA,EASnBxoF,EAAMyoF,iBAAmBA,EAElBzoF,EA3PK,GA8PU,kBAAXhxB,GAAuBA,EAAOD,UACvCC,EAAOD,QAAUixB,IAMb,SAAUhxB,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI6gG,EAAiB,WAAc,SAASC,EAAcnwF,EAAKjM,GAAK,IAAIq8F,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKx/F,EAAW,IAAM,IAAK,IAAiCy/F,EAA7BnH,EAAKrpF,EAAI2rB,OAAOs4D,cAAmBoM,GAAMG,EAAKnH,EAAGv5D,QAAQpiC,MAAO2iG,GAAK,EAA6B,GAArBD,EAAK57F,KAAKg8F,EAAGnhG,OAAY0E,GAAKq8F,EAAKn8F,SAAWF,EAAG,MAAW,MAAOzE,GAAOghG,GAAK,EAAMC,EAAKjhG,EAAO,QAAU,KAAW+gG,GAAMhH,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIiH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUpwF,EAAKjM,GAAK,GAAIsC,MAAMiD,QAAQ0G,GAAQ,OAAOA,EAAY,GAAI2rB,OAAOs4D,YAAYxsF,OAAOuI,GAAQ,OAAOmwF,EAAcnwF,EAAKjM,GAAa,MAAM,IAAIN,UAAU,yDAAjkB,GAEjB05F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZsgE,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErCqK,EAAW,EAAoB,GAE/BC,EAAYzK,EAAuBwK,GAEnCuD,EAAS,EAAoB,GAE7BC,EAAUhO,EAAuB+N,GAEjC1N,EAAS,EAAoB,IAE7BC,EAAUN,EAAuBK,GAEjCoP,EAAQ,EAAoB,IAE5BC,EAAS1P,EAAuByP,GAEhC2J,EAAa,EAAoB,IAEjCC,EAAcrZ,EAAuBoZ,GAEzC,SAASpZ,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,SAASsY,EAAOle,GACd,OAAOA,aAAgB4S,EAAQzU,SAAW6B,aAAgB2S,EAAOvO,WAGnE,IAAI7F,EAAS,SAAU4f,GAGrB,SAAS5f,EAAO90D,EAAStlC,GACvBohG,EAAgBnjG,KAAMm8F,GAEtB,IAAIe,EAAQkG,EAA2BpjG,MAAOm8F,EAAOhF,WAAa3qF,OAAO2K,eAAeglF,IAAS97F,KAAKL,KAAMqnC,IAa5G,OAXA61D,EAAM2J,QAAU9kG,EAAO8kG,QACnBz7F,MAAMiD,QAAQtM,EAAOglG,aACvB7J,EAAM6J,UAAYhlG,EAAOglG,UAAUr1D,QAAO,SAAUq1D,EAAWp7D,GAE7D,OADAo7D,EAAUp7D,IAAU,EACbo7D,IACN,KAGL7J,EAAM71D,QAAQ9gC,iBAAiB,mBAAmB,eAClD22F,EAAMyU,WACNzU,EAAM6L,SACC7L,EA0KT,OA5LAoG,EAAUnH,EAAQ4f,GAqBlB7Z,EAAa/F,EAAQ,CAAC,CACpBj2F,IAAK,aACL9B,MAAO,WACLpE,KAAKg8G,OAAQ,IAEd,CACD91G,IAAK,WACL9B,MAAO,WACLpE,KAAKg8G,OAAQ,EACbh8G,KAAK2xG,aAEN,CACDzrG,IAAK,WACL9B,MAAO,SAAkBoF,EAAOR,GAC9B,IAAIizG,EAAQj8G,KAAK2U,KAAKnL,GAClB0yG,EAASjX,EAAegX,EAAO,GAC/BlkD,EAAQmkD,EAAO,GACfl3D,EAASk3D,EAAO,GAEhBC,EAASn8G,KAAK2U,KAAKnL,EAAQR,GAC3BozG,EAASnX,EAAekX,EAAQ,GAChChuE,EAAOiuE,EAAO,GAGlB,GADA12C,EAAKy2B,EAAO10F,UAAU0vF,WAAa3qF,OAAO2K,eAAeglF,EAAO10F,WAAY,WAAYzH,MAAMK,KAAKL,KAAMwJ,EAAOR,GACpG,MAARmlC,GAAgB4pB,IAAU5pB,GAAQ6W,EAAS,EAAG,CAChD,GAAI+S,aAAiBw4C,EAAOvO,YAAc7zD,aAAgBoiE,EAAOvO,WAE/D,YADAhiG,KAAK2xG,WAGP,GAAI55C,aAAiBm6C,EAAOnW,QAAS,CACnC,IAAIoV,EAAep5C,EAAMo5C,aAAap5C,EAAM/uD,UAAU,GACtD,GAAImoG,GAAgB,IAClBp5C,EAAQA,EAAMrjD,MAAMy8F,EAAe,GAC/Bp5C,IAAU5pB,GAEZ,YADAnuC,KAAK2xG,gBAIJ,GAAIxjE,aAAgB+jE,EAAOnW,QAAS,CACzC,IAAIsgB,EAAgBluE,EAAKgjE,aAAa,GAClCkL,GAAiB,GACnBluE,EAAKz5B,MAAM2nG,EAAgB,GAG/B,IAAI7X,EAAMr2D,EAAKm2D,SAAShhD,gBAAgBw/C,EAAQ/G,QAAU,KAAO5tD,EAAKm2D,SAAShhD,KAC/EyU,EAAM21C,aAAav/D,EAAMq2D,GACzBzsC,EAAM/kD,SAERhT,KAAK2xG,aAEN,CACDzrG,IAAK,SACL9B,MAAO,WACL,IAAIwzD,IAAUpmD,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,KAAmBA,UAAU,GAE7ExR,KAAKqnC,QAAQzzB,aAAa,kBAAmBgkD,KAE9C,CACD1xD,IAAK,WACL9B,MAAO,SAAkBoF,EAAOR,EAAQ2iC,EAAQvnC,IACxB,MAAlBpE,KAAK+mG,WAAsB/mG,KAAK+mG,UAAUp7D,MAC9C+5B,EAAKy2B,EAAO10F,UAAU0vF,WAAa3qF,OAAO2K,eAAeglF,EAAO10F,WAAY,WAAYzH,MAAMK,KAAKL,KAAMwJ,EAAOR,EAAQ2iC,EAAQvnC,GAChIpE,KAAK2xG,cAEN,CACDzrG,IAAK,WACL9B,MAAO,SAAkBoF,EAAOpF,EAAOy/F,GACrC,GAAW,MAAPA,GAAiC,MAAlB7jG,KAAK+mG,WAAsB/mG,KAAK+mG,UAAU3iG,GAA7D,CACA,GAAIoF,GAASxJ,KAAKgJ,SAChB,GAAW,MAAP66F,GAAoF,MAArEjB,EAAY7G,QAAQF,MAAMz3F,EAAOw+F,EAAY7G,QAAQJ,MAAMoC,OAAgB,CAC5F,IAAIH,EAAOgF,EAAY7G,QAAQp0F,OAAO3H,KAAK2kG,QAAQC,cACnD5kG,KAAK0xG,YAAY9T,GACN,MAAPiG,GAAez/F,EAAMoR,SAAS,QAChCpR,EAAQA,EAAMkK,MAAM,GAAI,IAE1BsvF,EAAKoG,SAAS,EAAG5/F,EAAOy/F,OACnB,CACL,IAAI+G,EAAQhI,EAAY7G,QAAQp0F,OAAOvD,EAAOy/F,GAC9C7jG,KAAK0xG,YAAY9G,QAGnBllC,EAAKy2B,EAAO10F,UAAU0vF,WAAa3qF,OAAO2K,eAAeglF,EAAO10F,WAAY,WAAYzH,MAAMK,KAAKL,KAAMwJ,EAAOpF,EAAOy/F,GAEzH7jG,KAAK2xG,cAEN,CACDzrG,IAAK,eACL9B,MAAO,SAAsBw5F,EAAM4G,GACjC,GAAI5G,EAAK+G,QAAQxwE,QAAUyuE,EAAY7G,QAAQJ,MAAMge,YAAa,CAChE,IAAIhgB,EAAUiJ,EAAY7G,QAAQp0F,OAAO3H,KAAK2kG,QAAQC,cACtDjL,EAAQ+X,YAAY9T,GACpBA,EAAOjE,EAETj0B,EAAKy2B,EAAO10F,UAAU0vF,WAAa3qF,OAAO2K,eAAeglF,EAAO10F,WAAY,eAAgBzH,MAAMK,KAAKL,KAAM49F,EAAM4G,KAEpH,CACDt+F,IAAK,OACL9B,MAAO,SAAcoF,GACnB,OAAOxJ,KAAKqS,KAAK7I,GAAOoM,OAAS,CAAC,MAAO,KAE1C,CACD1P,IAAK,OACL9B,MAAO,SAAcoF,GACnB,OAAIA,IAAUxJ,KAAKgJ,SACVhJ,KAAK2U,KAAKnL,EAAQ,GAEpBxJ,KAAK+wG,WAAW+K,EAAQtyG,KAEhC,CACDtD,IAAK,QACL9B,MAAO,WACL,IAAIoF,EAAQgI,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,EAC5ExI,EAASwI,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK4I,OAAOmwF,UAEpF+R,EAAW,SAASA,EAAS1e,EAAMp0F,EAAOR,GAC5C,IAAI4yB,EAAQ,GACR+8E,EAAa3vG,EASjB,OARA40F,EAAK0G,SAASkU,UAAUhvG,EAAOR,GAAQ,SAAUy7F,EAAOj7F,EAAOR,GACzD8yG,EAAOrX,GACT7oE,EAAMryB,KAAKk7F,GACFA,aAAiB7B,EAAY7G,QAAQD,YAC9ClgE,EAAQA,EAAM36B,OAAOq7G,EAAS7X,EAAOj7F,EAAOmvG,KAE9CA,GAAc3vG,KAET4yB,GAET,OAAO0gF,EAASt8G,KAAMwJ,EAAOR,KAE9B,CACD9C,IAAK,WACL9B,MAAO,WACL,IAAIyjG,EAAYr2F,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,GAChFzR,EAAUyR,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,IAE/D,IAAfxR,KAAKg8G,QACTt2C,EAAKy2B,EAAO10F,UAAU0vF,WAAa3qF,OAAO2K,eAAeglF,EAAO10F,WAAY,WAAYzH,MAAMK,KAAKL,KAAM6nG,EAAW9nG,GAChH8nG,EAAU7+F,OAAS,GACrBhJ,KAAK6mG,QAAQqG,KAAKD,EAAUlR,QAAQ/mE,OAAO+5E,gBAAiBlH,EAAW9nG,MAG1E,CACDmG,IAAK,OACL9B,MAAO,SAAcoF,GACnB,OAAOk8D,EAAKy2B,EAAO10F,UAAU0vF,WAAa3qF,OAAO2K,eAAeglF,EAAO10F,WAAY,OAAQzH,MAAMK,KAAKL,KAAMwJ,GAAO8E,MAAM,KAE1H,CACDpI,IAAK,SACL9B,MAAO,SAAgByjG,GACrB,IAAmB,IAAf7nG,KAAKg8G,MAAT,CACA,IAAItyG,EAASujG,EAAUlR,QAAQ//E,QAAQiwF,KACd,kBAAdpE,IACTn+F,EAASm+F,GAENz8F,MAAMiD,QAAQw5F,KACjBA,EAAY7nG,KAAKq0D,SAASkoD,eAExB1U,EAAU7+F,OAAS,GACrBhJ,KAAK6mG,QAAQqG,KAAKD,EAAUlR,QAAQ/mE,OAAO85E,qBAAsBplG,EAAQm+F,GAE3EniC,EAAKy2B,EAAO10F,UAAU0vF,WAAa3qF,OAAO2K,eAAeglF,EAAO10F,WAAY,SAAUzH,MAAMK,KAAKL,KAAM6nG,EAAU5mG,OAAO,KACpH4mG,EAAU7+F,OAAS,GACrBhJ,KAAK6mG,QAAQqG,KAAKD,EAAUlR,QAAQ/mE,OAAO4yE,cAAel+F,EAAQm+F,QAKjE1L,EA7LI,CA8LXyG,EAAY7G,QAAQI,QAEtBA,EAAOmC,SAAW,SAClBnC,EAAOsC,UAAY,YACnBtC,EAAO+B,QAAU,MACjB/B,EAAOyI,aAAe,QACtBzI,EAAO0I,gBAAkB,CAAC2L,EAAQzU,QAASwU,EAAOvO,WAAY6Z,EAAY9f,SAE1E76F,EAAQ66F,QAAUI,GAIZ,SAAUh7F,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQs7G,SAAWt7G,EAAQ66F,aAAUj2F,EAErC,IAAIk/F,EAA4B,oBAAXtkE,QAAoD,kBAApBA,OAAOs4D,SAAwB,SAAUjsF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,oBAAX2zB,QAAyB3zB,EAAIiK,cAAgB0pB,QAAU3zB,IAAQ2zB,OAAOj5B,UAAY,gBAAkBsF,GAElQk4F,EAAiB,WAAc,SAASC,EAAcnwF,EAAKjM,GAAK,IAAIq8F,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKx/F,EAAW,IAAM,IAAK,IAAiCy/F,EAA7BnH,EAAKrpF,EAAI2rB,OAAOs4D,cAAmBoM,GAAMG,EAAKnH,EAAGv5D,QAAQpiC,MAAO2iG,GAAK,EAA6B,GAArBD,EAAK57F,KAAKg8F,EAAGnhG,OAAY0E,GAAKq8F,EAAKn8F,SAAWF,EAAG,MAAW,MAAOzE,GAAOghG,GAAK,EAAMC,EAAKjhG,EAAO,QAAU,KAAW+gG,GAAMhH,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIiH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUpwF,EAAKjM,GAAK,GAAIsC,MAAMiD,QAAQ0G,GAAQ,OAAOA,EAAY,GAAI2rB,OAAOs4D,YAAYxsF,OAAOuI,GAAQ,OAAOmwF,EAAcnwF,EAAKjM,GAAa,MAAM,IAAIN,UAAU,yDAAjkB,GAEjB05F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfkQ,EAAS,EAAoB,IAE7BC,EAAU9P,EAAuB6P,GAEjCE,EAAa,EAAoB,IAEjCC,EAAchQ,EAAuB+P,GAErCjQ,EAAU,EAAoB,GAE9BC,EAAWC,EAAuBF,GAElCG,EAAc,EAAoB,GAElCC,EAAeF,EAAuBC,GAEtCsP,EAAM,EAAoB,IAE1BC,EAAOxP,EAAuBuP,GAE9BpP,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErC8Z,EAAS,EAAoB,GAE7BC,EAAUla,EAAuBia,GAEjCzW,EAAU,EAAoB,IAE9BC,EAAWzD,EAAuBwD,GAElCJ,EAAU,EAAoB,GAE9BC,EAAWrD,EAAuBoD,GAEtC,SAASpD,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASq5F,EAAgBr5F,EAAK7G,EAAK9B,GAAiK,OAApJ8B,KAAO6G,EAAOP,OAAOE,eAAeK,EAAK7G,EAAK,CAAE9B,MAAOA,EAAO+yB,YAAY,EAAMyI,cAAc,EAAM1I,UAAU,IAAkBnqB,EAAI7G,GAAO9B,EAAgB2I,EAE3M,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI6C,GAAQ,EAAIJ,EAASlK,SAAS,kBAE9BygB,EAAW,OAAOtpG,KAAKI,UAAUuhB,UAAY,UAAY,UAEzD8nF,EAAW,SAAUC,GAgBvB,SAASD,EAASzN,EAAOvvG,GACvBwjG,EAAgBnjG,KAAM28G,GAEtB,IAAIzf,EAAQkG,EAA2BpjG,MAAO28G,EAASxlB,WAAa3qF,OAAO2K,eAAewlG,IAAWt8G,KAAKL,KAAMkvG,EAAOvvG,IAyBvH,OAvBAu9F,EAAM2f,SAAW,GACjBrwG,OAAOqC,KAAKquF,EAAMv9F,QAAQk9G,UAAU72G,SAAQ,SAAU6D,IACvC,kBAATA,GAAsD,MAA1BqlG,EAAMpI,OAAOC,WAAsBmI,EAAMpI,OAAOC,UAAU,UAGtF7J,EAAMv9F,QAAQk9G,SAAShzG,IACzBqzF,EAAM4f,WAAW5f,EAAMv9F,QAAQk9G,SAAShzG,OAG5CqzF,EAAM4f,WAAW,CAAE52G,IAAKy2G,EAAS9tG,KAAKkuG,MAAOC,SAAU,MAAQC,GAC/D/f,EAAM4f,WAAW,CAAE52G,IAAKy2G,EAAS9tG,KAAKkuG,MAAOG,QAAS,KAAMC,QAAS,KAAMC,OAAQ,OAAQ,eACvF,WAAWlqG,KAAKI,UAAUC,YAE5B2pF,EAAM4f,WAAW,CAAE52G,IAAKy2G,EAAS9tG,KAAKwuG,WAAa,CAAEtH,WAAW,GAAQuH,GACxEpgB,EAAM4f,WAAW,CAAE52G,IAAKy2G,EAAS9tG,KAAKiyF,QAAU,CAAEiV,WAAW,GAAQwH,KAErErgB,EAAM4f,WAAW,CAAE52G,IAAKy2G,EAAS9tG,KAAKwuG,WAAa,CAAEtH,WAAW,EAAMjzE,OAAQ,QAAUw6E,GACxFpgB,EAAM4f,WAAW,CAAE52G,IAAKy2G,EAAS9tG,KAAKiyF,QAAU,CAAEiV,WAAW,EAAM7tE,OAAQ,QAAUq1E,IAEvFrgB,EAAM4f,WAAW,CAAE52G,IAAKy2G,EAAS9tG,KAAKwuG,WAAa,CAAEtH,WAAW,GAASyH,GACzEtgB,EAAM4f,WAAW,CAAE52G,IAAKy2G,EAAS9tG,KAAKiyF,QAAU,CAAEiV,WAAW,GAASyH,GACtEtgB,EAAM4f,WAAW,CAAE52G,IAAKy2G,EAAS9tG,KAAKwuG,UAAWD,OAAQ,KAAMD,QAAS,KAAMD,QAAS,KAAMF,SAAU,MAAQ,CAAEjH,WAAW,EAAM/wD,OAAQ,GAAKs4D,GAC/IpgB,EAAM3rD,SACC2rD,EA+FT,OA1IAoG,EAAUqZ,EAAUC,GAEpB1a,EAAaya,EAAU,KAAM,CAAC,CAC5Bz2G,IAAK,QACL9B,MAAO,SAAeykC,EAAK40E,GAEzB,OADAA,EAAU1wE,EAAU0wE,IAChB,CAAC,SAAU,UAAW,UAAW,YAAYj2C,MAAK,SAAUthE,GAC9D,QAASu3G,EAAQv3G,KAAS2iC,EAAI3iC,IAAyB,OAAjBu3G,EAAQv3G,OAIzCu3G,EAAQv3G,OAAS2iC,EAAI60E,OAAS70E,EAAI80E,aAmC7Czb,EAAaya,EAAU,CAAC,CACtBz2G,IAAK,aACL9B,MAAO,SAAoB8B,GACzB,IAAInG,EAAUyR,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,GAC9Eq7C,EAAUr7C,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,GAE9EisG,EAAU1wE,EAAU7mC,GACxB,GAAe,MAAXu3G,GAAkC,MAAfA,EAAQv3G,IAC7B,OAAOmgG,EAAM1vF,KAAK,4CAA6C8mG,GAE1C,oBAAZ19G,IACTA,EAAU,CAAE8sD,QAAS9sD,IAEA,oBAAZ8sD,IACTA,EAAU,CAAEA,QAASA,IAEvB4wD,GAAU,EAAIlb,EAASxG,SAAS0hB,EAAS19G,EAAS8sD,GAClD7sD,KAAK68G,SAASY,EAAQv3G,KAAOlG,KAAK68G,SAASY,EAAQv3G,MAAQ,GAC3DlG,KAAK68G,SAASY,EAAQv3G,KAAKqD,KAAKk0G,KAEjC,CACDv3G,IAAK,SACL9B,MAAO,WACL,IAAI+/F,EAASnkG,KAEbA,KAAKkvG,MAAMh7E,KAAK3tB,iBAAiB,WAAW,SAAUsiC,GACpD,IAAIA,EAAI+0E,iBAAR,CACA,IAAIF,EAAQ70E,EAAI60E,OAAS70E,EAAI80E,QACzBd,GAAY1Y,EAAO0Y,SAASa,IAAU,IAAIvlG,QAAO,SAAUslG,GAC7D,OAAOd,EAAS9pG,MAAMg2B,EAAK40E,MAE7B,GAAwB,IAApBZ,EAAS7zG,OAAb,CACA,IAAI6U,EAAQsmF,EAAO+K,MAAM7F,eACzB,GAAa,MAATxrF,GAAkBsmF,EAAO+K,MAAMvE,WAAnC,CAEA,IAAIkT,EAAiB1Z,EAAO+K,MAAM4O,QAAQjgG,EAAMrU,OAC5Cu0G,EAAkB9Y,EAAe4Y,EAAgB,GACjDlpG,EAAOopG,EAAgB,GACvB/4D,EAAS+4D,EAAgB,GAEzBC,EAAiB7Z,EAAO+K,MAAM+O,QAAQpgG,EAAMrU,OAC5C00G,EAAkBjZ,EAAe+Y,EAAgB,GACjDG,EAAYD,EAAgB,GAC5BE,EAAcF,EAAgB,GAE9BrP,EAAwB,IAAjBhxF,EAAM7U,OAAe,CAACm1G,EAAWC,GAAeja,EAAO+K,MAAM+O,QAAQpgG,EAAMrU,MAAQqU,EAAM7U,QAChGq1G,EAAQpZ,EAAe4J,EAAM,GAC7ByP,EAAUD,EAAM,GAChBE,EAAYF,EAAM,GAElBG,EAAaL,aAAqBvb,EAAY7G,QAAQO,KAAO6hB,EAAU/5G,QAAQkK,MAAM,EAAG8vG,GAAe,GACvGK,EAAaH,aAAmB1b,EAAY7G,QAAQO,KAAOgiB,EAAQl6G,QAAQkK,MAAMiwG,GAAa,GAC9FG,EAAa,CACf3I,UAA4B,IAAjBl4F,EAAM7U,OACjB21G,MAAwB,IAAjB9gG,EAAM7U,QAAgB2L,EAAK3L,UAAY,EAC9C2iC,OAAQw4D,EAAO+K,MAAM5E,UAAUzsF,GAC/BmnC,OAAQA,EACRliB,OAAQ07E,EACRt2E,OAAQu2E,GAENG,EAAY/B,EAASr1C,MAAK,SAAUi2C,GACtC,GAAyB,MAArBA,EAAQ1H,WAAqB0H,EAAQ1H,YAAc2I,EAAW3I,UAAW,OAAO,EACpF,GAAqB,MAAjB0H,EAAQkB,OAAiBlB,EAAQkB,QAAUD,EAAWC,MAAO,OAAO,EACxE,GAAsB,MAAlBlB,EAAQz4D,QAAkBy4D,EAAQz4D,SAAW05D,EAAW15D,OAAQ,OAAO,EAC3E,GAAI55C,MAAMiD,QAAQovG,EAAQ9xE,SAExB,GAAI8xE,EAAQ9xE,OAAOkzE,OAAM,SAAUh1G,GACjC,OAAkC,MAA3B60G,EAAW/yE,OAAO9hC,MAEzB,OAAO,OAEJ,GAAgC,WAA5Bm7F,EAAQyY,EAAQ9xE,UAEpBn/B,OAAOqC,KAAK4uG,EAAQ9xE,QAAQkzE,OAAM,SAAUh1G,GAC/C,OAA6B,IAAzB4zG,EAAQ9xE,OAAO9hC,GAAkD,MAA3B60G,EAAW/yE,OAAO9hC,IAC/B,IAAzB4zG,EAAQ9xE,OAAO9hC,GAAmD,MAA3B60G,EAAW/yE,OAAO9hC,IACtD,EAAI2oG,EAAYzW,SAAS0hB,EAAQ9xE,OAAO9hC,GAAO60G,EAAW/yE,OAAO9hC,OAExE,OAAO,EAGX,QAAsB,MAAlB4zG,EAAQ36E,SAAmB26E,EAAQ36E,OAAO5vB,KAAKwrG,EAAW57E,aACxC,MAAlB26E,EAAQv1E,SAAmBu1E,EAAQv1E,OAAOh1B,KAAKwrG,EAAWx2E,WACH,IAApDu1E,EAAQ5wD,QAAQxsD,KAAK8jG,EAAQtmF,EAAO6gG,OAEzCE,GACF/1E,EAAIi2E,2BAMLnC,EA3IM,CA4Ib9W,EAAS9J,SAqLX,SAASgjB,EAAsB74G,EAAK82G,GAClC,IAAIgC,EAEAC,EAAQ/4G,IAAQy2G,EAAS9tG,KAAKqwG,KAAO,SAAW,SACpD,OAAOF,EAAQ,CACb94G,IAAKA,EACL82G,SAAUA,EACVI,OAAQ,MACPhX,EAAgB4Y,EAAOC,EAAO,MAAO7Y,EAAgB4Y,EAAO,WAAW,SAAiBnhG,GACzF,IAAIrU,EAAQqU,EAAMrU,MACdtD,IAAQy2G,EAAS9tG,KAAKswG,QACxB31G,GAASqU,EAAM7U,OAAS,GAG1B,IAAIo2G,EAAkBp/G,KAAKkvG,MAAM+O,QAAQz0G,GACrC61G,EAAkBpa,EAAema,EAAiB,GAClD/a,EAAOgb,EAAgB,GAE3B,QAAMhb,aAAgBzB,EAAY7G,QAAQG,SACtCh2F,IAAQy2G,EAAS9tG,KAAKqwG,KACpBlC,EACFh9G,KAAKkvG,MAAM1F,aAAa3rF,EAAMrU,MAAQ,EAAGqU,EAAM7U,OAAS,EAAG0zG,EAAQ3gB,QAAQ//E,QAAQiwF,MAEnFjsG,KAAKkvG,MAAM1F,aAAa3rF,EAAMrU,MAAQ,EAAGkzG,EAAQ3gB,QAAQ//E,QAAQiwF,MAG/D+Q,EACFh9G,KAAKkvG,MAAM1F,aAAa3rF,EAAMrU,MAAOqU,EAAM7U,OAAS,EAAG0zG,EAAQ3gB,QAAQ//E,QAAQiwF,MAE/EjsG,KAAKkvG,MAAM1F,aAAa3rF,EAAMrU,MAAQqU,EAAM7U,OAAS,EAAG0zG,EAAQ3gB,QAAQ//E,QAAQiwF,OAG7E,MACL+S,EAGN,SAAS1B,EAAgBz/F,EAAO9d,GAC9B,KAAoB,IAAhB8d,EAAMrU,OAAexJ,KAAKkvG,MAAMhF,aAAe,GAAnD,CAEA,IAAIoV,EAAmBt/G,KAAKkvG,MAAM4O,QAAQjgG,EAAMrU,OAC5C+1G,EAAmBta,EAAeqa,EAAkB,GACpD3qG,EAAO4qG,EAAiB,GAExB3zD,EAAU,GACd,GAAuB,IAAnB7rD,EAAQilD,OAAc,CACxB,IAAIw6D,EAAmBx/G,KAAKkvG,MAAM4O,QAAQjgG,EAAMrU,MAAQ,GACpDi2G,EAAmBxa,EAAeua,EAAkB,GACpDv4E,EAAOw4E,EAAiB,GAE5B,GAAY,MAARx4E,GAAgBA,EAAKj+B,SAAW,EAAG,CACrC,IAAI02G,EAAa/qG,EAAKi3C,UAClB+zD,EAAc3/G,KAAKkvG,MAAM5E,UAAUzsF,EAAMrU,MAAQ,EAAG,GACxDoiD,EAAUomD,EAAKjW,QAAQoB,WAAWnxC,KAAK0zD,EAAYC,IAAgB,IAIvE,IAAI32G,EAAS,kCAAkCkK,KAAKnT,EAAQ+iC,QAAU,EAAI,EAC1E9iC,KAAKkvG,MAAMpG,WAAWjrF,EAAMrU,MAAQR,EAAQA,EAAQ0zG,EAAQ3gB,QAAQ//E,QAAQiwF,MACxEz/F,OAAOqC,KAAK+8C,GAAS5iD,OAAS,GAChChJ,KAAKkvG,MAAM5F,WAAWzrF,EAAMrU,MAAQR,EAAQA,EAAQ4iD,EAAS8wD,EAAQ3gB,QAAQ//E,QAAQiwF,MAEvFjsG,KAAKkvG,MAAMjG,SAGb,SAASsU,EAAa1/F,EAAO9d,GAE3B,IAAIiJ,EAAS,kCAAkCkK,KAAKnT,EAAQmoC,QAAU,EAAI,EAC1E,KAAIrqB,EAAMrU,OAASxJ,KAAKkvG,MAAMhF,YAAclhG,GAA5C,CACA,IAAI4iD,EAAU,GACVg0D,EAAa,EAEbC,EAAmB7/G,KAAKkvG,MAAM4O,QAAQjgG,EAAMrU,OAC5Cs2G,EAAmB7a,EAAe4a,EAAkB,GACpDlrG,EAAOmrG,EAAiB,GAE5B,GAAI//G,EAAQilD,QAAUrwC,EAAK3L,SAAW,EAAG,CACvC,IAAI+2G,EAAmB//G,KAAKkvG,MAAM4O,QAAQjgG,EAAMrU,MAAQ,GACpDw2G,EAAmB/a,EAAe8a,EAAkB,GACpDl7E,EAAOm7E,EAAiB,GAE5B,GAAIn7E,EAAM,CACR,IAAI66E,EAAa/qG,EAAKi3C,UAClBq0D,EAAcjgH,KAAKkvG,MAAM5E,UAAUzsF,EAAMrU,MAAO,GACpDoiD,EAAUomD,EAAKjW,QAAQoB,WAAWnxC,KAAK0zD,EAAYO,IAAgB,GACnEL,EAAa/6E,EAAK77B,UAGtBhJ,KAAKkvG,MAAMpG,WAAWjrF,EAAMrU,MAAOR,EAAQ0zG,EAAQ3gB,QAAQ//E,QAAQiwF,MAC/Dz/F,OAAOqC,KAAK+8C,GAAS5iD,OAAS,GAChChJ,KAAKkvG,MAAM5F,WAAWzrF,EAAMrU,MAAQo2G,EAAa,EAAG52G,EAAQ4iD,EAAS8wD,EAAQ3gB,QAAQ//E,QAAQiwF,OAIjG,SAASuR,EAAkB3/F,GACzB,IAAI+d,EAAQ57B,KAAKkvG,MAAMoN,SAASz+F,GAC5B+tC,EAAU,GACd,GAAIhwB,EAAM5yB,OAAS,EAAG,CACpB,IAAIk3G,EAAetkF,EAAM,GAAGgwB,UACxBu0D,EAAcvkF,EAAMA,EAAM5yB,OAAS,GAAG4iD,UAC1CA,EAAUomD,EAAKjW,QAAQoB,WAAWnxC,KAAKm0D,EAAaD,IAAiB,GAEvElgH,KAAKkvG,MAAMpG,WAAWjrF,EAAO6+F,EAAQ3gB,QAAQ//E,QAAQiwF,MACjDz/F,OAAOqC,KAAK+8C,GAAS5iD,OAAS,GAChChJ,KAAKkvG,MAAM5F,WAAWzrF,EAAMrU,MAAO,EAAGoiD,EAAS8wD,EAAQ3gB,QAAQ//E,QAAQiwF,MAEzEjsG,KAAKkvG,MAAM1F,aAAa3rF,EAAMrU,MAAOkzG,EAAQ3gB,QAAQ//E,QAAQytF,QAC7DzpG,KAAKkvG,MAAMjG,QAGb,SAASgU,EAAYp/F,EAAO9d,GAC1B,IAAI4oG,EAAS3oG,KAET6d,EAAM7U,OAAS,GACjBhJ,KAAKkvG,MAAMpI,OAAOmK,SAASpzF,EAAMrU,MAAOqU,EAAM7U,QAEhD,IAAIo3G,EAAc5zG,OAAOqC,KAAK9O,EAAQ4rC,QAAQ+F,QAAO,SAAU0uE,EAAaz0E,GAI1E,OAHIi3D,EAAY7G,QAAQF,MAAMlwD,EAAQi3D,EAAY7G,QAAQJ,MAAMoC,SAAW3yF,MAAMiD,QAAQtO,EAAQ4rC,OAAOA,MACtGy0E,EAAYz0E,GAAU5rC,EAAQ4rC,OAAOA,IAEhCy0E,IACN,IACHpgH,KAAKkvG,MAAMhE,WAAWrtF,EAAMrU,MAAO,KAAM42G,EAAa1D,EAAQ3gB,QAAQ//E,QAAQiwF,MAG9EjsG,KAAKkvG,MAAM1F,aAAa3rF,EAAMrU,MAAQ,EAAGkzG,EAAQ3gB,QAAQ//E,QAAQytF,QACjEzpG,KAAKkvG,MAAMjG,QACXz8F,OAAOqC,KAAK9O,EAAQ4rC,QAAQ3lC,SAAQ,SAAU6D,GACnB,MAArBu2G,EAAYv2G,KACZuB,MAAMiD,QAAQtO,EAAQ4rC,OAAO9hC,KACpB,SAATA,GACJ8+F,EAAOuG,MAAMvjE,OAAO9hC,EAAM9J,EAAQ4rC,OAAO9hC,GAAO6yG,EAAQ3gB,QAAQ//E,QAAQiwF,UAI5E,SAASoU,EAAqBC,GAC5B,MAAO,CACLp6G,IAAKy2G,EAAS9tG,KAAKijG,IACnBkL,UAAWsD,EACX30E,OAAQ,CAAE,cAAc,GACxBkhB,QAAS,SAAiBhvC,GACxB,IAAI6yF,EAAY9N,EAAY7G,QAAQF,MAAM,cACtCryF,EAAQqU,EAAMrU,MACdR,EAAS6U,EAAM7U,OAEfu3G,EAAwBvgH,KAAKkvG,MAAMpI,OAAOiK,WAAWL,EAAWlnG,GAChEg3G,EAAyBvb,EAAesb,EAAuB,GAC/Dzc,EAAQ0c,EAAuB,GAC/Bx7D,EAASw7D,EAAuB,GAEpC,GAAa,MAAT1c,EAAJ,CACA,IAAI2c,EAAczgH,KAAKkvG,MAAMwR,SAAS5c,GAClCrqF,EAAQqqF,EAAMqN,aAAansD,GAAQ,GAAQ,EAC3CtrC,EAAMoqF,EAAMqN,aAAasP,EAAcz7D,EAASh8C,GAChD4yB,EAAQkoE,EAAMz8D,QAAQupE,YAAYtiG,MAAMmL,EAAOC,GAAKhF,MAAM,MAC9DswC,EAAS,EACTppB,EAAM51B,SAAQ,SAAU2O,EAAM7L,GACxBw3G,GACFxc,EAAME,SAASvqF,EAAQurC,EAAQ0rD,EAAUoB,KACzC9sD,GAAU0rD,EAAUoB,IAAI9oG,OACd,IAANF,EACFU,GAASknG,EAAUoB,IAAI9oG,OAEvBA,GAAU0nG,EAAUoB,IAAI9oG,QAEjB2L,EAAK2iB,WAAWo5E,EAAUoB,OACnChO,EAAMmN,SAASx3F,EAAQurC,EAAQ0rD,EAAUoB,IAAI9oG,QAC7Cg8C,GAAU0rD,EAAUoB,IAAI9oG,OACd,IAANF,EACFU,GAASknG,EAAUoB,IAAI9oG,OAEvBA,GAAU0nG,EAAUoB,IAAI9oG,QAG5Bg8C,GAAUrwC,EAAK3L,OAAS,KAE1BhJ,KAAKkvG,MAAMp8D,OAAO4pE,EAAQ3gB,QAAQ//E,QAAQiwF,MAC1CjsG,KAAKkvG,MAAM1F,aAAahgG,EAAOR,EAAQ0zG,EAAQ3gB,QAAQ//E,QAAQytF,WAKrE,SAASkX,EAAkBh1E,GACzB,MAAO,CACLzlC,IAAKylC,EAAO,GAAGnnC,cACfo8G,UAAU,EACV/zD,QAAS,SAAiBhvC,EAAO9d,GAC/BC,KAAKkvG,MAAMvjE,OAAOA,GAAS5rC,EAAQ4rC,OAAOA,GAAS+wE,EAAQ3gB,QAAQ//E,QAAQiwF,QAKjF,SAASl/D,EAAU0wE,GACjB,GAAuB,kBAAZA,GAA2C,kBAAZA,EACxC,OAAO1wE,EAAU,CAAE7mC,IAAKu3G,IAK1B,GAH0E,YAAlD,qBAAZA,EAA0B,YAAczY,EAAQyY,MAC1DA,GAAU,EAAInL,EAAQvW,SAAS0hB,GAAS,IAEf,kBAAhBA,EAAQv3G,IACjB,GAAgD,MAA5Cy2G,EAAS9tG,KAAK4uG,EAAQv3G,IAAI1B,eAC5Bi5G,EAAQv3G,IAAMy2G,EAAS9tG,KAAK4uG,EAAQv3G,IAAI1B,mBACnC,IAA2B,IAAvBi5G,EAAQv3G,IAAI8C,OAGrB,OAAO,KAFPy0G,EAAQv3G,IAAMu3G,EAAQv3G,IAAI1B,cAAcsT,WAAW,GASvD,OAJI2lG,EAAQmD,WACVnD,EAAQjB,GAAYiB,EAAQmD,gBACrBnD,EAAQmD,UAEVnD,EAtYTd,EAAS9tG,KAAO,CACdwuG,UAAW,EACXvL,IAAK,EACLiL,MAAO,GACP8D,OAAQ,GACR3B,KAAM,GACN4B,GAAI,GACJ3B,MAAO,GACP4B,KAAM,GACNjgB,OAAQ,IAGV6b,EAASxQ,SAAW,CAClB0Q,SAAU,CACR,KAAQ8D,EAAkB,QAC1B,OAAUA,EAAkB,UAC5B,UAAaA,EAAkB,aAC/B,OAAU,CAERz6G,IAAKy2G,EAAS9tG,KAAKijG,IACnBnmE,OAAQ,CAAC,aAAc,SAAU,QACjCkhB,QAAS,SAAiBhvC,EAAO9d,GAC/B,GAAIA,EAAQg2G,WAAgC,IAAnBh2G,EAAQilD,OAAc,OAAO,EACtDhlD,KAAKkvG,MAAMvjE,OAAO,SAAU,KAAM+wE,EAAQ3gB,QAAQ//E,QAAQiwF,QAG9D,QAAW,CACT/lG,IAAKy2G,EAAS9tG,KAAKijG,IACnBkL,UAAU,EACVrxE,OAAQ,CAAC,aAAc,SAAU,QAEjCkhB,QAAS,SAAiBhvC,EAAO9d,GAC/B,GAAIA,EAAQg2G,WAAgC,IAAnBh2G,EAAQilD,OAAc,OAAO,EACtDhlD,KAAKkvG,MAAMvjE,OAAO,SAAU,KAAM+wE,EAAQ3gB,QAAQ//E,QAAQiwF,QAG9D,oBAAqB,CACnB/lG,IAAKy2G,EAAS9tG,KAAKwuG,UACnBtH,WAAW,EACXiH,SAAU,KACVE,QAAS,KACTC,QAAS,KACTC,OAAQ,KACRzxE,OAAQ,CAAC,SAAU,QACnBqZ,OAAQ,EACR6H,QAAS,SAAiBhvC,EAAO9d,GACF,MAAzBA,EAAQ4rC,OAAO20E,OACjBtgH,KAAKkvG,MAAMvjE,OAAO,SAAU,KAAM+wE,EAAQ3gB,QAAQ//E,QAAQiwF,MAC1B,MAAvBlsG,EAAQ4rC,OAAO8oE,MACxBz0G,KAAKkvG,MAAMvjE,OAAO,QAAQ,EAAO+wE,EAAQ3gB,QAAQ//E,QAAQiwF,QAI/D,oBAAqBoU,GAAqB,GAC1C,qBAAsBA,GAAqB,GAC3C,aAAc,CACZn6G,IAAKy2G,EAAS9tG,KAAKijG,IACnBkL,UAAU,EACVjH,WAAW,EACXjzE,OAAQ,MACR+pB,QAAS,SAAiBhvC,GACxB7d,KAAKkvG,MAAMpG,WAAWjrF,EAAMrU,MAAQ,EAAG,EAAGkzG,EAAQ3gB,QAAQ//E,QAAQiwF,QAGtE,IAAO,CACL/lG,IAAKy2G,EAAS9tG,KAAKijG,IACnBjlD,QAAS,SAAiBhvC,GACxB7d,KAAKkvG,MAAM5H,QAAQ0Z,SACnB,IAAIh7E,GAAQ,IAAI08D,EAAa3G,SAAUoD,OAAOthF,EAAMrU,OAAO05B,OAAOrlB,EAAM7U,QAAQi2F,OAAO,MACvFj/F,KAAKkvG,MAAM+R,eAAej7E,EAAO02E,EAAQ3gB,QAAQ//E,QAAQiwF,MACzDjsG,KAAKkvG,MAAM5H,QAAQ0Z,SACnBhhH,KAAKkvG,MAAM1F,aAAa3rF,EAAMrU,MAAQ,EAAGkzG,EAAQ3gB,QAAQ//E,QAAQytF,UAGrE,mBAAoB,CAClBvjG,IAAKy2G,EAAS9tG,KAAKkuG,MACnBhH,WAAW,EACXpqE,OAAQ,CAAC,QACTgzE,OAAO,EACP9xD,QAAS,SAAiBhvC,EAAO9d,GAC/BC,KAAKkvG,MAAMvjE,OAAO,QAAQ,EAAO+wE,EAAQ3gB,QAAQ//E,QAAQiwF,MACrDlsG,EAAQ4rC,OAAO20E,QACjBtgH,KAAKkvG,MAAMvjE,OAAO,UAAU,EAAO+wE,EAAQ3gB,QAAQ//E,QAAQiwF,QAIjE,kBAAmB,CACjB/lG,IAAKy2G,EAAS9tG,KAAKkuG,MACnBhH,WAAW,EACXpqE,OAAQ,CAAE8oE,KAAM,WAChB5nD,QAAS,SAAiBhvC,GACxB,IAAIqjG,EAAkBlhH,KAAKkvG,MAAM4O,QAAQjgG,EAAMrU,OAC3C23G,EAAkBlc,EAAeic,EAAiB,GAClDvsG,EAAOwsG,EAAgB,GACvBn8D,EAASm8D,EAAgB,GAEzBv1D,GAAU,EAAI22C,EAASxG,SAAS,GAAIpnF,EAAKi3C,UAAW,CAAE6oD,KAAM,YAC5DzuE,GAAQ,IAAI08D,EAAa3G,SAAUoD,OAAOthF,EAAMrU,OAAOy1F,OAAO,KAAMrzC,GAASuzC,OAAOxqF,EAAK3L,SAAWg8C,EAAS,GAAGm6C,OAAO,EAAG,CAAEsV,KAAM,cACtIz0G,KAAKkvG,MAAM+R,eAAej7E,EAAO02E,EAAQ3gB,QAAQ//E,QAAQiwF,MACzDjsG,KAAKkvG,MAAM1F,aAAa3rF,EAAMrU,MAAQ,EAAGkzG,EAAQ3gB,QAAQ//E,QAAQytF,QACjEzpG,KAAKkvG,MAAMhG,mBAGf,eAAgB,CACdhjG,IAAKy2G,EAAS9tG,KAAKkuG,MACnBhH,WAAW,EACXpqE,OAAQ,CAAC,UACTzD,OAAQ,KACR2kB,QAAS,SAAiBhvC,EAAO9d,GAC/B,IAAIqhH,EAAkBphH,KAAKkvG,MAAM4O,QAAQjgG,EAAMrU,OAC3C63G,EAAkBpc,EAAemc,EAAiB,GAClDzsG,EAAO0sG,EAAgB,GACvBr8D,EAASq8D,EAAgB,GAEzBr7E,GAAQ,IAAI08D,EAAa3G,SAAUoD,OAAOthF,EAAMrU,OAAOy1F,OAAO,KAAMl/F,EAAQ4rC,QAAQwzD,OAAOxqF,EAAK3L,SAAWg8C,EAAS,GAAGm6C,OAAO,EAAG,CAAEmiB,OAAQ,OAC/IthH,KAAKkvG,MAAM+R,eAAej7E,EAAO02E,EAAQ3gB,QAAQ//E,QAAQiwF,MACzDjsG,KAAKkvG,MAAM1F,aAAa3rF,EAAMrU,MAAQ,EAAGkzG,EAAQ3gB,QAAQ//E,QAAQytF,QACjEzpG,KAAKkvG,MAAMhG,mBAGf,gBAAiB,CACfhjG,IAAK,IACL6vG,WAAW,EACXpqE,OAAQ,CAAE8oE,MAAM,GAChB3xE,OAAQ,kCACR+pB,QAAS,SAAiBhvC,EAAO9d,GAC/B,IAAIiJ,EAASjJ,EAAQ+iC,OAAO95B,OAExBu4G,EAAkBvhH,KAAKkvG,MAAM4O,QAAQjgG,EAAMrU,OAC3Cg4G,EAAkBvc,EAAesc,EAAiB,GAClD5sG,EAAO6sG,EAAgB,GACvBx8D,EAASw8D,EAAgB,GAE7B,GAAIx8D,EAASh8C,EAAQ,OAAO,EAC5B,IAAI5E,OAAQ,EACZ,OAAQrE,EAAQ+iC,OAAO7yB,QACrB,IAAK,KAAK,IAAK,MACb7L,EAAQ,YACR,MACF,IAAK,MACHA,EAAQ,UACR,MACF,IAAK,IAAI,IAAK,IACZA,EAAQ,SACR,MACF,QACEA,EAAQ,UAEZpE,KAAKkvG,MAAMhE,WAAWrtF,EAAMrU,MAAO,IAAKkzG,EAAQ3gB,QAAQ//E,QAAQiwF,MAChEjsG,KAAKkvG,MAAM5H,QAAQ0Z,SACnB,IAAIh7E,GAAQ,IAAI08D,EAAa3G,SAAUoD,OAAOthF,EAAMrU,MAAQw7C,GAAQ9hB,OAAOl6B,EAAS,GAAGm2F,OAAOxqF,EAAK3L,SAAW,EAAIg8C,GAAQm6C,OAAO,EAAG,CAAEsV,KAAMrwG,IAC5IpE,KAAKkvG,MAAM+R,eAAej7E,EAAO02E,EAAQ3gB,QAAQ//E,QAAQiwF,MACzDjsG,KAAKkvG,MAAM5H,QAAQ0Z,SACnBhhH,KAAKkvG,MAAM1F,aAAa3rF,EAAMrU,MAAQR,EAAQ0zG,EAAQ3gB,QAAQ//E,QAAQytF,UAG1E,YAAa,CACXvjG,IAAKy2G,EAAS9tG,KAAKkuG,MACnBhH,WAAW,EACXpqE,OAAQ,CAAC,cACT7I,OAAQ,QACRoF,OAAQ,QACR2kB,QAAS,SAAiBhvC,GACxB,IAAI4jG,EAAkBzhH,KAAKkvG,MAAM4O,QAAQjgG,EAAMrU,OAC3Ck4G,EAAmBzc,EAAewc,EAAiB,GACnD9sG,EAAO+sG,EAAiB,GACxB18D,EAAS08D,EAAiB,GAE1B17E,GAAQ,IAAI08D,EAAa3G,SAAUoD,OAAOthF,EAAMrU,MAAQmL,EAAK3L,SAAWg8C,EAAS,GAAGm6C,OAAO,EAAG,CAAE,aAAc,OAAQj8D,OAAO,GACjIljC,KAAKkvG,MAAM+R,eAAej7E,EAAO02E,EAAQ3gB,QAAQ//E,QAAQiwF,QAG7D,aAAc8S,EAAsBpC,EAAS9tG,KAAKqwG,MAAM,GACxD,mBAAoBH,EAAsBpC,EAAS9tG,KAAKqwG,MAAM,GAC9D,cAAeH,EAAsBpC,EAAS9tG,KAAKswG,OAAO,GAC1D,oBAAqBJ,EAAsBpC,EAAS9tG,KAAKswG,OAAO,KA0NpEj+G,EAAQ66F,QAAU4gB,EAClBz7G,EAAQs7G,SAAWA,GAIb,SAAUr7G,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI6gG,EAAiB,WAAc,SAASC,EAAcnwF,EAAKjM,GAAK,IAAIq8F,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKx/F,EAAW,IAAM,IAAK,IAAiCy/F,EAA7BnH,EAAKrpF,EAAI2rB,OAAOs4D,cAAmBoM,GAAMG,EAAKnH,EAAGv5D,QAAQpiC,MAAO2iG,GAAK,EAA6B,GAArBD,EAAK57F,KAAKg8F,EAAGnhG,OAAY0E,GAAKq8F,EAAKn8F,SAAWF,EAAG,MAAW,MAAOzE,GAAOghG,GAAK,EAAMC,EAAKjhG,EAAO,QAAU,KAAW+gG,GAAMhH,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIiH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUpwF,EAAKjM,GAAK,GAAIsC,MAAMiD,QAAQ0G,GAAQ,OAAOA,EAAY,GAAI2rB,OAAOs4D,YAAYxsF,OAAOuI,GAAQ,OAAOmwF,EAAcnwF,EAAKjM,GAAa,MAAM,IAAIN,UAAU,yDAAjkB,GAEjBk9D,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZ6/D,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfQ,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErCM,EAAQ,EAAoB,GAE5BC,EAASV,EAAuBS,GAEpC,SAAST,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAIme,EAAS,SAAUje,GAUrB,SAASie,EAAOt6E,EAAS4/D,GACvB9D,EAAgBnjG,KAAM2hH,GAEtB,IAAIzkB,EAAQkG,EAA2BpjG,MAAO2hH,EAAOxqB,WAAa3qF,OAAO2K,eAAewqG,IAASthH,KAAKL,KAAMqnC,IAM5G,OAJA61D,EAAM+J,UAAYA,EAClB/J,EAAMmY,SAAWziG,SAASgvG,eAAeD,EAAOxN,UAChDjX,EAAM71D,QAAQqqE,YAAYxU,EAAMmY,UAChCnY,EAAMh9C,QAAU,EACTg9C,EAwHT,OA1IAoG,EAAUqe,EAAQje,GAElBxB,EAAayf,EAAQ,KAAM,CAAC,CAC1Bz7G,IAAK,QACL9B,MAAO,gBAiBT89F,EAAayf,EAAQ,CAAC,CACpBz7G,IAAK,SACL9B,MAAO,WAEc,MAAfpE,KAAKG,QAAgBH,KAAKG,OAAOyxG,YAAY5xG,QAElD,CACDkG,IAAK,SACL9B,MAAO,SAAgByF,EAAMzF,GAC3B,GAAqB,IAAjBpE,KAAKkgD,QACP,OAAOwlB,EAAKi8C,EAAOl6G,UAAU0vF,WAAa3qF,OAAO2K,eAAewqG,EAAOl6G,WAAY,SAAUzH,MAAMK,KAAKL,KAAM6J,EAAMzF,GAEtH,IAAI+J,EAASnO,KACTwJ,EAAQ,EACZ,MAAiB,MAAV2E,GAAkBA,EAAOw2F,QAAQxwE,QAAUyuE,EAAY7G,QAAQJ,MAAMsI,WAC1Ez6F,GAAS2E,EAAO62C,OAAO72C,EAAOhO,QAC9BgO,EAASA,EAAOhO,OAEJ,MAAVgO,IACFnO,KAAKkgD,QAAUyhE,EAAOxN,SAASnrG,OAC/BmF,EAAOwjG,WACPxjG,EAAOmjG,SAAS9nG,EAAOm4G,EAAOxN,SAASnrG,OAAQa,EAAMzF,GACrDpE,KAAKkgD,QAAU,KAGlB,CACDh6C,IAAK,QACL9B,MAAO,SAAe4vB,EAAMgxB,GAC1B,OAAIhxB,IAASh0B,KAAKq1G,SAAiB,EAC5B3vC,EAAKi8C,EAAOl6G,UAAU0vF,WAAa3qF,OAAO2K,eAAewqG,EAAOl6G,WAAY,QAASzH,MAAMK,KAAKL,KAAMg0B,EAAMgxB,KAEpH,CACD9+C,IAAK,SACL9B,MAAO,WACL,OAAOpE,KAAKkgD,UAEb,CACDh6C,IAAK,WACL9B,MAAO,WACL,MAAO,CAACpE,KAAKq1G,SAAUr1G,KAAKq1G,SAAShzG,KAAK2G,UAE3C,CACD9C,IAAK,SACL9B,MAAO,WACLshE,EAAKi8C,EAAOl6G,UAAU0vF,WAAa3qF,OAAO2K,eAAewqG,EAAOl6G,WAAY,SAAUzH,MAAMK,KAAKL,MACjGA,KAAKG,OAAS,OAEf,CACD+F,IAAK,UACL9B,MAAO,WACL,IAAIpE,KAAKinG,UAAU6N,WAA4B,MAAf90G,KAAKG,OAArC,CACA,IAAIk1G,EAAWr1G,KAAKq1G,SAChBx3F,EAAQ7d,KAAKinG,UAAUmO,iBACvByM,OAAc,EACdpoG,OAAQ,EACRC,OAAM,EACV,GAAa,MAATmE,GAAiBA,EAAMpE,MAAMua,OAASqhF,GAAYx3F,EAAMnE,IAAIsa,OAASqhF,EAAU,CACjF,IAAIxG,EAAO,CAACwG,EAAUx3F,EAAMpE,MAAMurC,OAAQnnC,EAAMnE,IAAIsrC,QACpD68D,EAAchT,EAAK,GACnBp1F,EAAQo1F,EAAK,GACbn1F,EAAMm1F,EAAK,GAGb,MAAiC,MAA1B7uG,KAAKqnC,QAAQiwE,WAAqBt3G,KAAKqnC,QAAQiwE,YAAct3G,KAAKq1G,SACvEr1G,KAAKqnC,QAAQC,WAAWy8D,aAAa/jG,KAAKqnC,QAAQiwE,UAAWt3G,KAAKqnC,SAEpE,GAAIrnC,KAAKq1G,SAAShzG,OAASs/G,EAAOxN,SAAU,CAC1C,IAAIx4E,EAAO37B,KAAKq1G,SAAShzG,KAAKqS,MAAMitG,EAAOxN,UAAUniG,KAAK,IACtDhS,KAAK6kC,gBAAgBq+D,EAAOnH,SAC9B8lB,EAAc7hH,KAAK6kC,KAAKwC,QACxBrnC,KAAK6kC,KAAKm/D,SAAS,EAAGroE,GACtB37B,KAAKq1G,SAAShzG,KAAOs/G,EAAOxN,WAE5Bn0G,KAAKq1G,SAAShzG,KAAOs5B,EACrB37B,KAAKG,OAAO4jG,aAAanB,EAAY7G,QAAQp0F,OAAO3H,KAAKq1G,UAAWr1G,MACpEA,KAAKq1G,SAAWziG,SAASgvG,eAAeD,EAAOxN,UAC/Cn0G,KAAKqnC,QAAQqqE,YAAY1xG,KAAKq1G,WAIlC,GADAr1G,KAAKgT,SACQ,MAATyG,EAAe,CACjB,IAAI0zF,EAAO,CAAC1zF,EAAOC,GAAK+B,KAAI,SAAUupC,GACpC,OAAO/1C,KAAKmQ,IAAI,EAAGnQ,KAAKkQ,IAAI0iG,EAAYx/G,KAAK2G,OAAQg8C,EAAS,OAG5DooD,EAAQnI,EAAekI,EAAM,GAKjC,OAHA1zF,EAAQ2zF,EAAM,GACd1zF,EAAM0zF,EAAM,GAEL,CACLqI,UAAWoM,EACXnM,YAAaj8F,EACbk8F,QAASkM,EACTjM,UAAWl8F,OAIhB,CACDxT,IAAK,SACL9B,MAAO,SAAgByjG,EAAW9nG,GAChC,IAAIokG,EAASnkG,KAEb,GAAI6nG,EAAUrgC,MAAK,SAAU0xC,GAC3B,MAAyB,kBAAlBA,EAASvyG,MAA4BuyG,EAAS/qG,SAAWg2F,EAAOkR,YACrE,CACF,IAAIx3F,EAAQ7d,KAAKu4B,UACb1a,IAAO9d,EAAQ8d,MAAQA,MAG9B,CACD3X,IAAK,QACL9B,MAAO,WACL,MAAO,OAIJu9G,EA3II,CA4IX/e,EAAY7G,QAAQG,OAEtBylB,EAAOrjB,SAAW,SAClBqjB,EAAOljB,UAAY,YACnBkjB,EAAOzjB,QAAU,OACjByjB,EAAOxN,SAAW,SAGlBjzG,EAAQ66F,QAAU4lB,GAIZ,SAAUxgH,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAIu+F,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErC4N,EAAS,EAAoB,GAE7BC,EAAUhO,EAAuB+N,GAErC,SAAS/N,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI1H,EAAY,SAAUgmB,GAGxB,SAAShmB,IAGP,OAFAqH,EAAgBnjG,KAAM87F,GAEfsH,EAA2BpjG,MAAO87F,EAAU3E,WAAa3qF,OAAO2K,eAAe2kF,IAAYzwF,MAAMrL,KAAMwR,YAGhH,OARA8xF,EAAUxH,EAAWgmB,GAQdhmB,EATO,CAUd8G,EAAY7G,QAAQD,WAEtBA,EAAU+I,gBAAkB,CAAC2L,EAAQzU,QAASwU,EAAOvO,WAAYlG,GAEjE56F,EAAQ66F,QAAUD,GAIZ,SAAU36F,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQ6gH,WAAa7gH,EAAQ8gH,WAAa9gH,EAAQ+gH,qBAAkBn8G,EAEpE,IAAIo8F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZsgE,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAIye,EAAkB,SAAUC,GAG9B,SAASD,IAGP,OAFA9e,EAAgBnjG,KAAMiiH,GAEf7e,EAA2BpjG,MAAOiiH,EAAgB9qB,WAAa3qF,OAAO2K,eAAe8qG,IAAkB52G,MAAMrL,KAAMwR,YAe5H,OApBA8xF,EAAU2e,EAAiBC,GAQ3BhgB,EAAa+f,EAAiB,CAAC,CAC7B/7G,IAAK,QACL9B,MAAO,SAAeijC,GACpB,IAAIjjC,EAAQshE,EAAKu8C,EAAgBx6G,UAAU0vF,WAAa3qF,OAAO2K,eAAe8qG,EAAgBx6G,WAAY,QAASzH,MAAMK,KAAKL,KAAMqnC,GACpI,OAAKjjC,EAAMkzB,WAAW,SACtBlzB,EAAQA,EAAMsN,QAAQ,UAAW,IAAIA,QAAQ,UAAW,IACjD,IAAMtN,EAAMsQ,MAAM,KAAK+G,KAAI,SAAUgrD,GAC1C,OAAQ,KAAOp1C,SAASo1C,GAAWh3D,SAAS,KAAKnB,OAAO,MACvD0D,KAAK,KAJ8B5N,MAQnC69G,EArBa,CAsBpBrf,EAAY7G,QAAQQ,WAAWG,OAE7BslB,EAAa,IAAIpf,EAAY7G,QAAQQ,WAAWE,MAAM,QAAS,WAAY,CAC7EtoE,MAAOyuE,EAAY7G,QAAQJ,MAAMqC,SAE/B+jB,EAAa,IAAIE,EAAgB,QAAS,QAAS,CACrD9tF,MAAOyuE,EAAY7G,QAAQJ,MAAMqC,SAGnC98F,EAAQ+gH,gBAAkBA,EAC1B/gH,EAAQ8gH,WAAaA,EACrB9gH,EAAQ6gH,WAAaA,GAIf,SAAU5gH,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQihH,SAAWjhH,EAAQ66F,aAAUj2F,EAErC,IAAIo8F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZ0gE,EAAU,EAAoB,GAE9BC,EAAWR,EAAuBO,GAEtC,SAASP,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI4e,EAAO,SAAU3R,GAGnB,SAAS2R,IAGP,OAFAjf,EAAgBnjG,KAAMoiH,GAEfhf,EAA2BpjG,MAAOoiH,EAAKjrB,WAAa3qF,OAAO2K,eAAeirG,IAAO/2G,MAAMrL,KAAMwR,YAgCtG,OArCA8xF,EAAU8e,EAAM3R,GAQhBvO,EAAakgB,EAAM,CAAC,CAClBl8G,IAAK,SACL9B,MAAO,SAAgByF,EAAMzF,GAC3B,GAAIyF,IAAS7J,KAAK2kG,QAAQrG,WAAal6F,EAAO,OAAOshE,EAAK08C,EAAK36G,UAAU0vF,WAAa3qF,OAAO2K,eAAeirG,EAAK36G,WAAY,SAAUzH,MAAMK,KAAKL,KAAM6J,EAAMzF,GAC9JA,EAAQpE,KAAKgX,YAAYmrG,SAAS/9G,GAClCpE,KAAKqnC,QAAQzzB,aAAa,OAAQxP,MAElC,CAAC,CACH8B,IAAK,SACL9B,MAAO,SAAgBA,GACrB,IAAI4vB,EAAO0xC,EAAK08C,EAAKjrB,WAAa3qF,OAAO2K,eAAeirG,GAAO,SAAUpiH,MAAMK,KAAKL,KAAMoE,GAK1F,OAJAA,EAAQpE,KAAKmiH,SAAS/9G,GACtB4vB,EAAKpgB,aAAa,OAAQxP,GAC1B4vB,EAAKpgB,aAAa,MAAO,uBACzBogB,EAAKpgB,aAAa,SAAU,UACrBogB,IAER,CACD9tB,IAAK,UACL9B,MAAO,SAAiBijC,GACtB,OAAOA,EAAQmsB,aAAa,UAE7B,CACDttD,IAAK,WACL9B,MAAO,SAAkBT,GACvB,OAAO0+G,EAAU1+G,EAAK3D,KAAKsiH,oBAAsB3+G,EAAM3D,KAAKuiH,kBAIzDH,EAtCE,CAuCTpf,EAASjH,SAOX,SAASsmB,EAAU1+G,EAAK6+G,GACtB,IAAIC,EAAS7vG,SAASa,cAAc,KACpCgvG,EAAO9uG,KAAOhQ,EACd,IAAIoD,EAAW07G,EAAO9uG,KAAKrF,MAAM,EAAGm0G,EAAO9uG,KAAK5O,QAAQ,MACxD,OAAOy9G,EAAUz9G,QAAQgC,IAAa,EATxCq7G,EAAK9jB,SAAW,OAChB8jB,EAAKlkB,QAAU,IACfkkB,EAAKG,cAAgB,cACrBH,EAAKE,mBAAqB,CAAC,OAAQ,QAAS,SAAU,OAStDphH,EAAQ66F,QAAUqmB,EAClBlhH,EAAQihH,SAAWE,GAIb,SAAUlhH,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI4gG,EAA4B,oBAAXtkE,QAAoD,kBAApBA,OAAOs4D,SAAwB,SAAUjsF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,oBAAX2zB,QAAyB3zB,EAAIiK,cAAgB0pB,QAAU3zB,IAAQ2zB,OAAOj5B,UAAY,gBAAkBsF,GAElQm1F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfugB,EAAY,EAAoB,IAEhCC,EAAangB,EAAuBkgB,GAEpCE,EAAY,EAAoB,KAEhCC,EAAargB,EAAuBogB,GAExC,SAASpgB,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,IAAIs6G,EAAiB,EAErB,SAASC,EAAoBn7E,EAAS+7D,GACpC/7D,EAAQh0B,aAAa+vF,IAAiD,SAApC/7D,EAAQ4rB,aAAamwC,KAGzD,IAAIqf,EAAS,WACX,SAASA,EAAOC,GACd,IAAI/lB,EAAQl9F,KAEZmjG,EAAgBnjG,KAAMgjH,GAEtBhjH,KAAKijH,OAASA,EACdjjH,KAAKopC,UAAYx2B,SAASa,cAAc,QACxCzT,KAAKkjH,cACLljH,KAAKijH,OAAO9tF,MAAMg2B,QAAU,OAC5BnrD,KAAKijH,OAAO37E,WAAWy8D,aAAa/jG,KAAKopC,UAAWppC,KAAKijH,QAEzDjjH,KAAKg9C,MAAMz2C,iBAAiB,aAAa,WACvC22F,EAAMimB,kBAERnjH,KAAKg9C,MAAMz2C,iBAAiB,WAAW,SAAUirC,GAC/C,OAAQA,EAAMmsE,SAEZ,KAAKgF,EAAW5mB,QAAQltF,KAAKkuG,MAC3B7f,EAAMimB,eACN,MAGF,KAAKR,EAAW5mB,QAAQltF,KAAKgyG,OAC3B3jB,EAAMkmB,SACN5xE,EAAMstE,iBACN,MACF,aAGJ9+G,KAAKijH,OAAO18G,iBAAiB,SAAUvG,KAAK8yC,OAAO5rC,KAAKlH,OA4K1D,OAzKAkiG,EAAa8gB,EAAQ,CAAC,CACpB98G,IAAK,eACL9B,MAAO,WACLpE,KAAKopC,UAAUq9D,UAAUiB,OAAO,eAEhCqb,EAAoB/iH,KAAKg9C,MAAO,iBAChC+lE,EAAoB/iH,KAAKL,QAAS,iBAEnC,CACDuG,IAAK,YACL9B,MAAO,SAAmB6vC,GACxB,IAAIkwD,EAASnkG,KAET8c,EAAOlK,SAASa,cAAc,QA+BlC,OA9BAqJ,EAAKumG,SAAW,IAChBvmG,EAAKlJ,aAAa,OAAQ,UAE1BkJ,EAAK2pF,UAAUlmG,IAAI,kBACf0zC,EAAOqvE,aAAa,UACtBxmG,EAAKlJ,aAAa,aAAcqgC,EAAOuf,aAAa,UAElDvf,EAAO28D,aACT9zF,EAAKlJ,aAAa,aAAcqgC,EAAO28D,aAEzC9zF,EAAKvW,iBAAiB,SAAS,WAC7B49F,EAAOof,WAAWzmG,GAAM,MAE1BA,EAAKvW,iBAAiB,WAAW,SAAUirC,GACzC,OAAQA,EAAMmsE,SAEZ,KAAKgF,EAAW5mB,QAAQltF,KAAKkuG,MAC3B5Y,EAAOof,WAAWzmG,GAAM,GACxB00B,EAAMstE,iBACN,MAGF,KAAK6D,EAAW5mB,QAAQltF,KAAKgyG,OAC3B1c,EAAOif,SACP5xE,EAAMstE,iBACN,MACF,aAIGhiG,IAER,CACD5W,IAAK,aACL9B,MAAO,WACL,IAAI44C,EAAQpqC,SAASa,cAAc,QAOnC,OANAupC,EAAMypD,UAAUlmG,IAAI,mBACpBy8C,EAAMwpD,UAAYqc,EAAW9mB,QAC7B/+C,EAAMqmE,SAAW,IACjBrmE,EAAMppC,aAAa,OAAQ,UAC3BopC,EAAMppC,aAAa,gBAAiB,SACpC5T,KAAKopC,UAAUsoE,YAAY10D,GACpBA,IAER,CACD92C,IAAK,eACL9B,MAAO,WACL,IAAIukG,EAAS3oG,KAETL,EAAUiT,SAASa,cAAc,QACrC9T,EAAQ8mG,UAAUlmG,IAAI,qBAGtBZ,EAAQiU,aAAa,cAAe,QACpCjU,EAAQ0jH,SAAW,KAGnB1jH,EAAQyN,GAAK,qBAAuB01G,EACpCA,GAAkB,EAClB9iH,KAAKg9C,MAAMppC,aAAa,gBAAiBjU,EAAQyN,IAEjDpN,KAAKL,QAAUA,EAEf,GAAG2O,MAAMjO,KAAKL,KAAKijH,OAAOtjH,SAASqG,SAAQ,SAAUiuC,GACnD,IAAIn3B,EAAO6rF,EAAO6a,UAAUvvE,GAC5Bt0C,EAAQ+xG,YAAY50F,IACI,IAApBm3B,EAAOwvE,UACT9a,EAAO4a,WAAWzmG,MAGtB9c,KAAKopC,UAAUsoE,YAAY/xG,KAE5B,CACDuG,IAAK,cACL9B,MAAO,WACL,IAAI+kG,EAASnpG,KAEb,GAAGsO,MAAMjO,KAAKL,KAAKijH,OAAO9lB,YAAYn3F,SAAQ,SAAU8W,GACtDqsF,EAAO//D,UAAUx1B,aAAakJ,EAAKjT,KAAMiT,EAAK1Y,UAEhDpE,KAAKopC,UAAUq9D,UAAUlmG,IAAI,aAC7BP,KAAKg9C,MAAQh9C,KAAK0jH,aAClB1jH,KAAK2jH,iBAEN,CACDz9G,IAAK,SACL9B,MAAO,WACL,IAAIslG,EAAS1pG,KAGbA,KAAK4jH,QAGL5+G,YAAW,WACT,OAAO0kG,EAAO1sD,MAAMisD,UACnB,KAEJ,CACD/iG,IAAK,QACL9B,MAAO,WACLpE,KAAKopC,UAAUq9D,UAAUzzF,OAAO,eAChChT,KAAKg9C,MAAMppC,aAAa,gBAAiB,SACzC5T,KAAKL,QAAQiU,aAAa,cAAe,UAE1C,CACD1N,IAAK,aACL9B,MAAO,SAAoB0Y,GACzB,IAAI03C,EAAUhjD,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,IAAmBA,UAAU,GAEzEiyG,EAAWzjH,KAAKopC,UAAUsjE,cAAc,gBAC5C,GAAI5vF,IAAS2mG,IACG,MAAZA,GACFA,EAAShd,UAAUzzF,OAAO,eAEhB,MAAR8J,IACJA,EAAK2pF,UAAUlmG,IAAI,eACnBP,KAAKijH,OAAOY,cAAgB,GAAG9+G,QAAQ1E,KAAKyc,EAAKwqB,WAAWg9D,SAAUxnF,GAClEA,EAAKwmG,aAAa,cACpBtjH,KAAKg9C,MAAMppC,aAAa,aAAckJ,EAAK02C,aAAa,eAExDxzD,KAAKg9C,MAAM4Y,gBAAgB,cAEzB94C,EAAKwmG,aAAa,cACpBtjH,KAAKg9C,MAAMppC,aAAa,aAAckJ,EAAK02C,aAAa,eAExDxzD,KAAKg9C,MAAM4Y,gBAAgB,cAEzBpB,IAAS,CACX,GAAqB,oBAAVsvD,MACT9jH,KAAKijH,OAAOc,cAAc,IAAID,MAAM,gBAC/B,GAAsE,YAAhD,qBAAVA,MAAwB,YAAc9e,EAAQ8e,QAAsB,CAErF,IAAItyE,EAAQ5+B,SAASoxG,YAAY,SACjCxyE,EAAMyyE,UAAU,UAAU,GAAM,GAChCjkH,KAAKijH,OAAOc,cAAcvyE,GAE5BxxC,KAAK4jH,WAGR,CACD19G,IAAK,SACL9B,MAAO,WACL,IAAI6vC,OAAS,EACb,GAAIj0C,KAAKijH,OAAOY,eAAiB,EAAG,CAClC,IAAI/mG,EAAO9c,KAAKopC,UAAUsjE,cAAc,sBAAsBpI,SAAStkG,KAAKijH,OAAOY,eACnF5vE,EAASj0C,KAAKijH,OAAOtjH,QAAQK,KAAKijH,OAAOY,eACzC7jH,KAAKujH,WAAWzmG,QAEhB9c,KAAKujH,WAAW,MAElB,IAAIW,EAAqB,MAAVjwE,GAAkBA,IAAWj0C,KAAKijH,OAAOvW,cAAc,oBACtE1sG,KAAKg9C,MAAMypD,UAAUiB,OAAO,YAAawc,OAItClB,EA1MI,GA6Mb9hH,EAAQ66F,QAAUinB,GAIZ,SAAU7hH,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAIu+F,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErC8Z,EAAS,EAAoB,GAE7BC,EAAUla,EAAuBia,GAEjClM,EAAS,EAAoB,GAE7BC,EAAUhO,EAAuB+N,GAEjC1N,EAAS,EAAoB,IAE7BC,EAAUN,EAAuBK,GAEjC+Y,EAAa,EAAoB,IAEjCC,EAAcrZ,EAAuBoZ,GAErCzJ,EAAU,EAAoB,IAE9BC,EAAW5P,EAAuB2P,GAElCgS,EAAS,EAAoB,IAE7BC,EAAU5hB,EAAuB2hB,GAEjCphB,EAAU,EAAoB,GAE9BC,EAAWR,EAAuBO,GAElCshB,EAAU,EAAoB,IAE9BC,EAAW9hB,EAAuB6hB,GAElCphB,EAAQ,EAAoB,GAE5BC,EAASV,EAAuBS,GAEhCshB,EAAa,EAAoB,IAEjCC,EAAchiB,EAAuB+hB,GAErCE,EAAW,EAAoB,IAE/BC,EAAYliB,EAAuBiiB,GAEnC/B,EAAY,EAAoB,IAEhCC,EAAangB,EAAuBkgB,GAExC,SAASlgB,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF2vG,EAAQ3gB,QAAQx3B,SAAS,CACvB,cAAeisC,EAAQzU,QACvB,oBAAqBwU,EAAOvO,WAC5B,cAAec,EAAQ/G,QACvB,kBAAmB8f,EAAY9f,QAC/B,eAAgBqW,EAASrW,QACzB,cAAeqoB,EAAQroB,QACvB,eAAgBiH,EAASjH,QACzB,eAAgBuoB,EAASvoB,QACzB,aAAcmH,EAAOnH,QAErB,oBAAqByoB,EAAYzoB,QACjC,kBAAmB2oB,EAAU3oB,QAC7B,mBAAoB4mB,EAAW5mB,UAGjC6G,EAAY7G,QAAQx3B,SAASisC,EAAQzU,QAAS+G,EAAQ/G,QAASqW,EAASrW,QAASiH,EAASjH,QAASuoB,EAASvoB,QAASmH,EAAOnH,SAE5H76F,EAAQ66F,QAAU2gB,EAAQ3gB,SAIpB,SAAU56F,EAAQD,EAAS,GAEjC,aAEAsL,OAAOE,eAAexL,EAAS,aAAc,CAAEkD,OAAO,IACtD,IAAI8gE,EAAW,EAAoB,GAC/By/C,EAA4B,WAC5B,SAASA,EAAWt9E,GAChBrnC,KAAKqnC,QAAUA,EAEfrnC,KAAKqnC,QAAQ69B,EAASy4B,UAAY,CAAEC,KAAM59F,MAkJ9C,OAhJAwM,OAAOE,eAAei4G,EAAWl9G,UAAW,UAAW,CAEnDivB,IAAK,WACD,OAAO12B,KAAKgX,aAEhBmgB,YAAY,EACZyI,cAAc,IAElB+kF,EAAWh9G,OAAS,SAAUvD,GAC1B,GAAoB,MAAhBpE,KAAKk+F,QACL,MAAM,IAAIh5B,EAAS83B,eAAe,mCAEtC,IAAIhpE,EAwBJ,OAvBI5oB,MAAMiD,QAAQrO,KAAKk+F,UACE,kBAAV95F,IACPA,EAAQA,EAAMI,cACV6sB,SAASjtB,GAAOqL,aAAerL,IAC/BA,EAAQitB,SAASjtB,KAIrB4vB,EADiB,kBAAV5vB,EACAwO,SAASa,cAAczT,KAAKk+F,QAAQ95F,EAAQ,IAE9CpE,KAAKk+F,QAAQn5F,QAAQX,IAAU,EAC7BwO,SAASa,cAAcrP,GAGvBwO,SAASa,cAAczT,KAAKk+F,QAAQ,KAI/ClqE,EAAOphB,SAASa,cAAczT,KAAKk+F,SAEnCl+F,KAAKy+F,WACLzqE,EAAKyyE,UAAUlmG,IAAIP,KAAKy+F,WAErBzqE,GAEX2wF,EAAWl9G,UAAUsuD,OAAS,WACP,MAAf/1D,KAAKG,SACLH,KAAK8mG,OAAS9mG,KAAKG,OAAO2mG,SAGlC6d,EAAWl9G,UAAU0qB,MAAQ,WACzB,IAAIkV,EAAUrnC,KAAKqnC,QAAQu9E,WAAU,GACrC,OAAO1/C,EAASv9D,OAAO0/B,IAE3Bs9E,EAAWl9G,UAAUuuD,OAAS,WACP,MAAfh2D,KAAKG,QACLH,KAAKG,OAAOyxG,YAAY5xG,aAErBA,KAAKqnC,QAAQ69B,EAASy4B,WAEjCgnB,EAAWl9G,UAAUwpG,SAAW,SAAUznG,EAAOR,GAC7C,IAAI40F,EAAO59F,KAAKytG,QAAQjkG,EAAOR,GAC/B40F,EAAK5qF,UAET2xG,EAAWl9G,UAAU6pG,SAAW,SAAU9nG,EAAOR,EAAQa,EAAMzF,GAC3D,IAAIw5F,EAAO59F,KAAKytG,QAAQjkG,EAAOR,GAC/B,GAAiD,MAA7Ck8D,EAAS22B,MAAMhyF,EAAMq7D,EAASy2B,MAAM6R,OAAiBppG,EACrDw5F,EAAK3uC,KAAKplD,EAAMzF,QAEf,GAAsD,MAAlD8gE,EAAS22B,MAAMhyF,EAAMq7D,EAASy2B,MAAMyU,WAAoB,CAC7D,IAAIjwG,EAAS+kE,EAASv9D,OAAO3H,KAAK2kG,QAAQxwE,OAC1CypE,EAAK3uC,KAAK9uD,GACVA,EAAOwrC,OAAO9hC,EAAMzF,KAG5BugH,EAAWl9G,UAAUu8F,SAAW,SAAUx6F,EAAOpF,EAAOy/F,GACpD,IAAIjG,EAAc,MAAPiG,EAAc3+B,EAASv9D,OAAO,OAAQvD,GAAS8gE,EAASv9D,OAAOvD,EAAOy/F,GAC7EW,EAAMxkG,KAAK0U,MAAMlL,GACrBxJ,KAAKG,OAAO4jG,aAAanG,EAAM4G,IAEnCmgB,EAAWl9G,UAAUqxG,WAAa,SAAU+L,EAAYhM,QACpC,IAAZA,IAAsBA,EAAU,MACjB,MAAf74G,KAAKG,QACLH,KAAKG,OAAOmkG,SAAStxF,OAAOhT,MAEhC,IAAI8kH,EAAa,KACjBD,EAAWvgB,SAASP,aAAa/jG,KAAM64G,GACxB,MAAXA,IACAiM,EAAajM,EAAQxxE,SAErBrnC,KAAKqnC,QAAQC,YAAcu9E,EAAWx9E,SACtCrnC,KAAKqnC,QAAQiyE,aAAewL,GAC5BD,EAAWx9E,QAAQ08D,aAAa/jG,KAAKqnC,QAASy9E,GAElD9kH,KAAKG,OAAS0kH,EACd7kH,KAAK+1D,UAET4uD,EAAWl9G,UAAUgmG,QAAU,SAAUjkG,EAAOR,GAC5C,IAAImF,EAASnO,KAAK0U,MAAMlL,GAExB,OADA2E,EAAOuG,MAAM1L,GACNmF,GAEXw2G,EAAWl9G,UAAUuB,OAAS,WAC1B,OAAO,GAEX27G,EAAWl9G,UAAUu9C,OAAS,SAAU9wB,GAEpC,YADa,IAATA,IAAmBA,EAAOl0B,KAAKG,QAChB,MAAfH,KAAKG,QAAkBH,MAAQk0B,EACxB,EACJl0B,KAAKG,OAAOmkG,SAASt/C,OAAOhlD,MAAQA,KAAKG,OAAO6kD,OAAO9wB,IAElEywF,EAAWl9G,UAAUkqG,SAAW,SAAU5xG,GAGC,MAAnCC,KAAKqnC,QAAQ69B,EAASy4B,kBAEf39F,KAAKqnC,QAAQ69B,EAASy4B,UAAUkK,WAG/C8c,EAAWl9G,UAAUuL,OAAS,WACK,MAA3BhT,KAAKqnC,QAAQC,YACbtnC,KAAKqnC,QAAQC,WAAWsqE,YAAY5xG,KAAKqnC,SAE7CrnC,KAAKg2D,UAET2uD,EAAWl9G,UAAUiK,QAAU,SAAUvD,GAChB,MAAjBA,EAAOhO,SAEXgO,EAAOhO,OAAO4jG,aAAa/jG,KAAMmO,EAAO02B,MACxC12B,EAAO6E,WAEX2xG,EAAWl9G,UAAUgyG,YAAc,SAAU5vG,EAAMzF,GAC/C,IAAIkxF,EAA8B,kBAATzrF,EAAoBq7D,EAASv9D,OAAOkC,EAAMzF,GAASyF,EAE5E,OADAyrF,EAAY5jF,QAAQ1R,MACbs1F,GAEXqvB,EAAWl9G,UAAUiN,MAAQ,SAAUlL,EAAOk7F,GAC1C,OAAiB,IAAVl7F,EAAcxJ,KAAOA,KAAK6kC,MAErC8/E,EAAWl9G,UAAUqrC,OAAS,SAAU+0D,EAAW9nG,KAGnD4kH,EAAWl9G,UAAUwnD,KAAO,SAAUplD,EAAMzF,GACxC,IAAIu1F,EAA0B,kBAAT9vF,EAAoBq7D,EAASv9D,OAAOkC,EAAMzF,GAASyF,EAKxE,OAJmB,MAAf7J,KAAKG,QACLH,KAAKG,OAAO4jG,aAAapK,EAAS35F,KAAK6kC,MAE3C80D,EAAQ+X,YAAY1xG,MACb25F,GAEXgrB,EAAWrmB,SAAW,WACfqmB,EAtJoB,GAwJ/BzjH,EAAQ66F,QAAU4oB,GAKZ,SAAUxjH,EAAQD,EAAS,GAEjC,aAEAsL,OAAOE,eAAexL,EAAS,aAAc,CAAEkD,OAAO,IACtD,IAAIk3F,EAAe,EAAoB,IACnCC,EAAU,EAAoB,IAC9BC,EAAU,EAAoB,IAC9Bt2B,EAAW,EAAoB,GAC/B6/C,EAAiC,WACjC,SAASA,EAAgB19E,GACrBrnC,KAAKm9F,WAAa,GAClBn9F,KAAKqnC,QAAUA,EACfrnC,KAAKqV,QAyDT,OAvDA0vG,EAAgBt9G,UAAUk8F,UAAY,SAAUA,EAAWv/F,GAEnDA,EACIu/F,EAAUpjG,IAAIP,KAAKqnC,QAASjjC,KACS,MAAjCu/F,EAAUv/F,MAAMpE,KAAKqnC,SACrBrnC,KAAKm9F,WAAWwG,EAAUpF,UAAYoF,SAG/B3jG,KAAKm9F,WAAWwG,EAAUpF,YAKzCoF,EAAU3wF,OAAOhT,KAAKqnC,gBACfrnC,KAAKm9F,WAAWwG,EAAUpF,YAGzCwmB,EAAgBt9G,UAAU4N,MAAQ,WAC9B,IAAI6nF,EAAQl9F,KACZA,KAAKm9F,WAAa,GAClB,IAAIA,EAAa7B,EAAaS,QAAQltF,KAAK7O,KAAKqnC,SAC5C+1D,EAAU7B,EAAQQ,QAAQltF,KAAK7O,KAAKqnC,SACpCY,EAASuzD,EAAQO,QAAQltF,KAAK7O,KAAKqnC,SACvC81D,EACKl8F,OAAOm8F,GACPn8F,OAAOgnC,GACPjiC,SAAQ,SAAU6D,GACnB,IAAIm7G,EAAO9/C,EAAS22B,MAAMhyF,EAAMq7D,EAASy2B,MAAMyU,WAC3C4U,aAAgB1pB,EAAaS,UAC7BmB,EAAMC,WAAW6nB,EAAKzmB,UAAYymB,OAI9CD,EAAgBt9G,UAAUo6F,KAAO,SAAU1zF,GACvC,IAAI+uF,EAAQl9F,KACZwM,OAAOqC,KAAK7O,KAAKm9F,YAAYn3F,SAAQ,SAAUE,GAC3C,IAAI9B,EAAQ84F,EAAMC,WAAWj3F,GAAK9B,MAAM84F,EAAM71D,SAC9Cl5B,EAAOw9B,OAAOzlC,EAAK9B,OAG3B2gH,EAAgBt9G,UAAUw3C,KAAO,SAAU9wC,GACvC,IAAI+uF,EAAQl9F,KACZA,KAAK6hG,KAAK1zF,GACV3B,OAAOqC,KAAK7O,KAAKm9F,YAAYn3F,SAAQ,SAAUE,GAC3Cg3F,EAAMC,WAAWj3F,GAAK8M,OAAOkqF,EAAM71D,YAEvCrnC,KAAKm9F,WAAa,IAEtB4nB,EAAgBt9G,UAAU2sB,OAAS,WAC/B,IAAI8oE,EAAQl9F,KACZ,OAAOwM,OAAOqC,KAAK7O,KAAKm9F,YAAYzrD,QAAO,SAAUyrD,EAAYtzF,GAE7D,OADAszF,EAAWtzF,GAAQqzF,EAAMC,WAAWtzF,GAAMzF,MAAM84F,EAAM71D,SAC/C81D,IACR,KAEA4nB,EA7DyB,GA+DpC7jH,EAAQ66F,QAAUgpB,GAKZ,SAAU5jH,EAAQD,EAAS,GAEjC,aAEA,IAAI27F,EAAa78F,MAAQA,KAAK68F,WAAc,WACxC,IAAIC,EAAgBtwF,OAAOunF,gBACtB,CAAEoD,UAAW,cAAgB/rF,OAAS,SAAUqY,EAAG9L,GAAK8L,EAAE0zE,UAAYx/E,IACvE,SAAU8L,EAAG9L,GAAK,IAAK,IAAI+H,KAAK/H,EAAOA,EAAEH,eAAekI,KAAI+D,EAAE/D,GAAK/H,EAAE+H,KACzE,OAAO,SAAU+D,EAAG9L,GAEhB,SAASolF,IAAO/8F,KAAKgX,YAAcyM,EADnCq5E,EAAcr5E,EAAG9L,GAEjB8L,EAAEhc,UAAkB,OAANkQ,EAAanL,OAAO7E,OAAOgQ,IAAMolF,EAAGt1F,UAAYkQ,EAAElQ,UAAW,IAAIs1F,IAP3C,GAU5CvwF,OAAOE,eAAexL,EAAS,aAAc,CAAEkD,OAAO,IACtD,IAAIk3F,EAAe,EAAoB,IACvC,SAASzoF,EAAMmhB,EAAM8O,GACjB,IAAI27D,EAAYzqE,EAAKw/B,aAAa,UAAY,GAC9C,OAAOirC,EAAU/pF,MAAM,OAAOyD,QAAO,SAAUtO,GAC3C,OAAsC,IAA/BA,EAAK9E,QAAQ+9B,EAAS,QAGrC,IAAImiF,EAAiC,SAAUhoB,GAE3C,SAASgoB,IACL,OAAkB,OAAXhoB,GAAmBA,EAAO5xF,MAAMrL,KAAMwR,YAAcxR,KA+B/D,OAjCA68F,EAAUooB,EAAiBhoB,GAI3BgoB,EAAgBp2G,KAAO,SAAUmlB,GAC7B,OAAQA,EAAKw/B,aAAa,UAAY,IAAI9+C,MAAM,OAAO+G,KAAI,SAAU5R,GACjE,OAAOA,EACF6K,MAAM,KACNpG,MAAM,GAAI,GACV0D,KAAK,SAGlBizG,EAAgBx9G,UAAUlH,IAAM,SAAUyzB,EAAM5vB,GAC5C,QAAKpE,KAAKqwG,OAAOr8E,EAAM5vB,KAEvBpE,KAAKgT,OAAOghB,GACZA,EAAKyyE,UAAUlmG,IAAIP,KAAKw+F,QAAU,IAAMp6F,IACjC,IAEX6gH,EAAgBx9G,UAAUuL,OAAS,SAAUghB,GACzC,IAAI2J,EAAU9qB,EAAMmhB,EAAMh0B,KAAKw+F,SAC/B7gE,EAAQ33B,SAAQ,SAAU6D,GACtBmqB,EAAKyyE,UAAUzzF,OAAOnJ,MAEI,IAA1BmqB,EAAKyyE,UAAUz9F,QACfgrB,EAAK4hC,gBAAgB,UAG7BqvD,EAAgBx9G,UAAUrD,MAAQ,SAAU4vB,GACxC,IAAI7d,EAAStD,EAAMmhB,EAAMh0B,KAAKw+F,SAAS,IAAM,GACzCp6F,EAAQ+R,EAAO7H,MAAMtO,KAAKw+F,QAAQx1F,OAAS,GAC/C,OAAOhJ,KAAKqwG,OAAOr8E,EAAM5vB,GAASA,EAAQ,IAEvC6gH,EAlCyB,CAmClC3pB,EAAaS,SACf76F,EAAQ66F,QAAUkpB,GAKZ,SAAU9jH,EAAQD,EAAS,GAEjC,aAEA,IAAI27F,EAAa78F,MAAQA,KAAK68F,WAAc,WACxC,IAAIC,EAAgBtwF,OAAOunF,gBACtB,CAAEoD,UAAW,cAAgB/rF,OAAS,SAAUqY,EAAG9L,GAAK8L,EAAE0zE,UAAYx/E,IACvE,SAAU8L,EAAG9L,GAAK,IAAK,IAAI+H,KAAK/H,EAAOA,EAAEH,eAAekI,KAAI+D,EAAE/D,GAAK/H,EAAE+H,KACzE,OAAO,SAAU+D,EAAG9L,GAEhB,SAASolF,IAAO/8F,KAAKgX,YAAcyM,EADnCq5E,EAAcr5E,EAAG9L,GAEjB8L,EAAEhc,UAAkB,OAANkQ,EAAanL,OAAO7E,OAAOgQ,IAAMolF,EAAGt1F,UAAYkQ,EAAElQ,UAAW,IAAIs1F,IAP3C,GAU5CvwF,OAAOE,eAAexL,EAAS,aAAc,CAAEkD,OAAO,IACtD,IAAIk3F,EAAe,EAAoB,IACvC,SAAS4pB,EAASr7G,GACd,IAAI+H,EAAQ/H,EAAK6K,MAAM,KACnBwE,EAAOtH,EACNtD,MAAM,GACNmN,KAAI,SAAU0pG,GACf,OAAOA,EAAK,GAAG3gH,cAAgB2gH,EAAK72G,MAAM,MAEzC0D,KAAK,IACV,OAAOJ,EAAM,GAAKsH,EAEtB,IAAIksG,EAAiC,SAAUnoB,GAE3C,SAASmoB,IACL,OAAkB,OAAXnoB,GAAmBA,EAAO5xF,MAAMrL,KAAMwR,YAAcxR,KA2B/D,OA7BA68F,EAAUuoB,EAAiBnoB,GAI3BmoB,EAAgBv2G,KAAO,SAAUmlB,GAC7B,OAAQA,EAAKw/B,aAAa,UAAY,IAAI9+C,MAAM,KAAK+G,KAAI,SAAUrX,GAC/D,IAAI2Q,EAAM3Q,EAAMsQ,MAAM,KACtB,OAAOK,EAAI,GAAG9E,WAGtBm1G,EAAgB39G,UAAUlH,IAAM,SAAUyzB,EAAM5vB,GAC5C,QAAKpE,KAAKqwG,OAAOr8E,EAAM5vB,KAGvB4vB,EAAKmB,MAAM+vF,EAASllH,KAAKw+F,UAAYp6F,GAC9B,IAEXghH,EAAgB39G,UAAUuL,OAAS,SAAUghB,GAEzCA,EAAKmB,MAAM+vF,EAASllH,KAAKw+F,UAAY,GAChCxqE,EAAKw/B,aAAa,UACnBx/B,EAAK4hC,gBAAgB,UAG7BwvD,EAAgB39G,UAAUrD,MAAQ,SAAU4vB,GAExC,IAAI5vB,EAAQ4vB,EAAKmB,MAAM+vF,EAASllH,KAAKw+F,UACrC,OAAOx+F,KAAKqwG,OAAOr8E,EAAM5vB,GAASA,EAAQ,IAEvCghH,EA9ByB,CA+BlC9pB,EAAaS,SACf76F,EAAQ66F,QAAUqpB,GAKZ,SAAUjkH,EAAQD,EAAS07F,GAEjC,aAGApwF,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI89F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEnB,SAASgB,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,IAAI68G,EAAQ,WACV,SAASA,EAAMnW,EAAOvvG,GACpBwjG,EAAgBnjG,KAAMqlH,GAEtBrlH,KAAKkvG,MAAQA,EACblvG,KAAKL,QAAUA,EACfK,KAAK06F,QAAU,GAuBjB,OApBAwH,EAAamjB,EAAO,CAAC,CACnBn/G,IAAK,OACL9B,MAAO,WACL,IAAI84F,EAAQl9F,KAEZwM,OAAOqC,KAAK7O,KAAKL,QAAQ+6F,SAAS10F,SAAQ,SAAU6D,GACvB,MAAvBqzF,EAAMxC,QAAQ7wF,IAChBqzF,EAAMkK,UAAUv9F,QAIrB,CACD3D,IAAK,YACL9B,MAAO,SAAmByF,GACxB,IAAI2iG,EAAcxsG,KAAKkvG,MAAMl4F,YAAYo1F,OAAO,WAAaviG,GAE7D,OADA7J,KAAK06F,QAAQ7wF,GAAQ,IAAI2iG,EAAYxsG,KAAKkvG,MAAOlvG,KAAKL,QAAQ+6F,QAAQ7wF,IAAS,IACxE7J,KAAK06F,QAAQ7wF,OAIjBw7G,EA7BG,GAgCZA,EAAMlZ,SAAW,CACfzR,QAAS,IAEX2qB,EAAMC,OAAS,CACb,QAAWD,GAGbnkH,EAAQ66F,QAAUspB,GAIZ,SAAUlkH,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI89F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZsgE,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErCM,EAAQ,EAAoB,GAE5BC,EAASV,EAAuBS,GAEpC,SAAST,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI+hB,EAAa,SAEbrpB,EAAQ,SAAUwH,GAGpB,SAASxH,EAAMloE,GACbmvE,EAAgBnjG,KAAMk8F,GAEtB,IAAIgB,EAAQkG,EAA2BpjG,MAAOk8F,EAAM/E,WAAa3qF,OAAO2K,eAAe+kF,IAAQ77F,KAAKL,KAAMg0B,IAY1G,OAVAkpE,EAAMsoB,YAAc5yG,SAASa,cAAc,QAC3CypF,EAAMsoB,YAAY5xG,aAAa,mBAAmB,GAClD,GAAGtF,MAAMjO,KAAK68F,EAAM71D,QAAQgwE,YAAYrxG,SAAQ,SAAUy/G,GACxDvoB,EAAMsoB,YAAY9T,YAAY+T,MAEhCvoB,EAAMwoB,UAAY9yG,SAASgvG,eAAe2D,GAC1CroB,EAAMyoB,WAAa/yG,SAASgvG,eAAe2D,GAC3CroB,EAAM71D,QAAQqqE,YAAYxU,EAAMwoB,WAChCxoB,EAAM71D,QAAQqqE,YAAYxU,EAAMsoB,aAChCtoB,EAAM71D,QAAQqqE,YAAYxU,EAAMyoB,YACzBzoB,EAiET,OAlFAoG,EAAUpH,EAAOwH,GAoBjBxB,EAAahG,EAAO,CAAC,CACnBh2F,IAAK,QACL9B,MAAO,SAAe4vB,EAAMgxB,GAC1B,OAAIhxB,IAASh0B,KAAK0lH,UAAkB,EAChC1xF,IAASh0B,KAAK2lH,WAAmB,EAC9BjgD,EAAKw2B,EAAMz0F,UAAU0vF,WAAa3qF,OAAO2K,eAAe+kF,EAAMz0F,WAAY,QAASzH,MAAMK,KAAKL,KAAMg0B,EAAMgxB,KAElH,CACD9+C,IAAK,UACL9B,MAAO,SAAiB4vB,GACtB,IAAInW,OAAQ,EACRw3F,OAAW,EACX15E,EAAO3H,EAAK3xB,KAAKqS,MAAM6wG,GAAYvzG,KAAK,IAC5C,GAAIgiB,IAASh0B,KAAK0lH,UAChB,GAAI1lH,KAAKinC,gBAAgBi8D,EAAOnH,QAAS,CACvC,IAAI6pB,EAAa5lH,KAAKinC,KAAKj+B,SAC3BhJ,KAAKinC,KAAK+8D,SAAS4hB,EAAYjqF,GAC/B9d,EAAQ,CACN43F,UAAWz1G,KAAKinC,KAAKI,QACrBquE,YAAakQ,EAAajqF,EAAK3yB,aAGjCqsG,EAAWziG,SAASgvG,eAAejmF,GACnC37B,KAAKG,OAAO4jG,aAAanB,EAAY7G,QAAQp0F,OAAO0tG,GAAWr1G,MAC/D6d,EAAQ,CACN43F,UAAWJ,EACXK,YAAa/5E,EAAK3yB,aAGbgrB,IAASh0B,KAAK2lH,aACnB3lH,KAAK6kC,gBAAgBq+D,EAAOnH,SAC9B/7F,KAAK6kC,KAAKm/D,SAAS,EAAGroE,GACtB9d,EAAQ,CACN43F,UAAWz1G,KAAK6kC,KAAKwC,QACrBquE,YAAa/5E,EAAK3yB,UAGpBqsG,EAAWziG,SAASgvG,eAAejmF,GACnC37B,KAAKG,OAAO4jG,aAAanB,EAAY7G,QAAQp0F,OAAO0tG,GAAWr1G,KAAK6kC,MACpEhnB,EAAQ,CACN43F,UAAWJ,EACXK,YAAa/5E,EAAK3yB,UAKxB,OADAgrB,EAAK3xB,KAAOkjH,EACL1nG,IAER,CACD3X,IAAK,SACL9B,MAAO,SAAgByjG,EAAW9nG,GAChC,IAAIokG,EAASnkG,KAEb6nG,EAAU7hG,SAAQ,SAAUkzG,GAC1B,GAAsB,kBAAlBA,EAASvyG,OAA6BuyG,EAAS/qG,SAAWg2F,EAAOuhB,WAAaxM,EAAS/qG,SAAWg2F,EAAOwhB,YAAa,CACxH,IAAI9nG,EAAQsmF,EAAO5rE,QAAQ2gF,EAAS/qG,QAChC0P,IAAO9d,EAAQ8d,MAAQA,WAM5Bq+E,EAnFG,CAoFV0G,EAAY7G,QAAQG,OAEtBh7F,EAAQ66F,QAAUG,GAIZ,SAAU/6F,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQ2kH,WAAa3kH,EAAQ4kH,WAAa5kH,EAAQ6kH,oBAAiBjgH,EAEnE,IAAI68F,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,IAAIhL,EAAS,CACXoyB,MAAOyuE,EAAY7G,QAAQJ,MAAMoC,MACjCgJ,UAAW,CAAC,QAAS,SAAU,YAG7Bgf,EAAiB,IAAInjB,EAAY7G,QAAQQ,WAAWC,UAAU,QAAS,QAASz6F,GAChF+jH,EAAa,IAAIljB,EAAY7G,QAAQQ,WAAWE,MAAM,QAAS,WAAY16F,GAC3E8jH,EAAa,IAAIjjB,EAAY7G,QAAQQ,WAAWG,MAAM,QAAS,aAAc36F,GAEjFb,EAAQ6kH,eAAiBA,EACzB7kH,EAAQ4kH,WAAaA,EACrB5kH,EAAQ2kH,WAAaA,GAIf,SAAU1kH,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQ8kH,gBAAkB9kH,EAAQ+kH,qBAAkBngH,EAEpD,IAAI68F,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErCujB,EAAS,EAAoB,IAEjC,SAAS1jB,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,IAAIk5G,EAAkB,IAAIrjB,EAAY7G,QAAQQ,WAAWE,MAAM,aAAc,QAAS,CACpFtoE,MAAOyuE,EAAY7G,QAAQJ,MAAMqC,SAE/BgoB,EAAkB,IAAIE,EAAOjE,gBAAgB,aAAc,mBAAoB,CACjF9tF,MAAOyuE,EAAY7G,QAAQJ,MAAMqC,SAGnC98F,EAAQ+kH,gBAAkBA,EAC1B/kH,EAAQ8kH,gBAAkBA,GAIpB,SAAU7kH,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQilH,eAAiBjlH,EAAQklH,eAAiBllH,EAAQmlH,wBAAqBvgH,EAE/E,IAAI68F,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,IAAIhL,EAAS,CACXoyB,MAAOyuE,EAAY7G,QAAQJ,MAAMoC,MACjCgJ,UAAW,CAAC,QAGVsf,EAAqB,IAAIzjB,EAAY7G,QAAQQ,WAAWC,UAAU,YAAa,MAAOz6F,GACtFqkH,EAAiB,IAAIxjB,EAAY7G,QAAQQ,WAAWE,MAAM,YAAa,eAAgB16F,GACvFokH,EAAiB,IAAIvjB,EAAY7G,QAAQQ,WAAWG,MAAM,YAAa,YAAa36F,GAExFb,EAAQmlH,mBAAqBA,EAC7BnlH,EAAQklH,eAAiBA,EACzBllH,EAAQilH,eAAiBA,GAInB,SAAUhlH,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQolH,UAAYplH,EAAQqlH,eAAYzgH,EAExC,IAAIo8F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZsgE,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAIzhG,EAAS,CACXoyB,MAAOyuE,EAAY7G,QAAQJ,MAAMqC,OACjC+I,UAAW,CAAC,QAAS,cAGnBuf,EAAY,IAAI1jB,EAAY7G,QAAQQ,WAAWE,MAAM,OAAQ,UAAW16F,GAExEykH,EAAsB,SAAUtE,GAGlC,SAASsE,IAGP,OAFArjB,EAAgBnjG,KAAMwmH,GAEfpjB,EAA2BpjG,MAAOwmH,EAAoBrvB,WAAa3qF,OAAO2K,eAAeqvG,IAAsBn7G,MAAMrL,KAAMwR,YAUpI,OAfA8xF,EAAUkjB,EAAqBtE,GAQ/BhgB,EAAaskB,EAAqB,CAAC,CACjCtgH,IAAK,QACL9B,MAAO,SAAe4vB,GACpB,OAAO0xC,EAAK8gD,EAAoB/+G,UAAU0vF,WAAa3qF,OAAO2K,eAAeqvG,EAAoB/+G,WAAY,QAASzH,MAAMK,KAAKL,KAAMg0B,GAAMtiB,QAAQ,QAAS,QAI3J80G,EAhBiB,CAiBxB5jB,EAAY7G,QAAQQ,WAAWG,OAE7B6pB,EAAY,IAAIC,EAAoB,OAAQ,cAAezkH,GAE/Db,EAAQqlH,UAAYA,EACpBrlH,EAAQolH,UAAYA,GAId,SAAUnlH,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQulH,UAAYvlH,EAAQwlH,eAAY5gH,EAExC,IAAI68F,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,IAAI25G,EAAY,IAAI9jB,EAAY7G,QAAQQ,WAAWE,MAAM,OAAQ,UAAW,CAC1EtoE,MAAOyuE,EAAY7G,QAAQJ,MAAMqC,OACjC+I,UAAW,CAAC,QAAS,QAAS,UAE5B0f,EAAY,IAAI7jB,EAAY7G,QAAQQ,WAAWG,MAAM,OAAQ,YAAa,CAC5EvoE,MAAOyuE,EAAY7G,QAAQJ,MAAMqC,OACjC+I,UAAW,CAAC,OAAQ,OAAQ,UAG9B7lG,EAAQwlH,UAAYA,EACpBxlH,EAAQulH,UAAYA,GAId,SAAUtlH,EAAQD,EAAS,GAEjC,aAGAC,EAAOD,QAAU,CACf,MAAS,CACP,GAAI,EAAoB,IACxB,OAAU,EAAoB,IAC9B,MAAS,EAAoB,IAC7B,QAAW,EAAoB,KAEjC,WAAc,EAAoB,IAClC,WAAc,EAAoB,IAClC,KAAQ,EAAoB,IAC5B,MAAS,EAAoB,IAC7B,KAAQ,EAAoB,IAC5B,aAAc,EAAoB,IAClC,MAAS,EAAoB,IAC7B,UAAa,CACX,GAAI,EAAoB,IACxB,IAAO,EAAoB,KAE7B,MAAS,CACP,OAAU,EAAoB,IAC9B,KAAQ,EAAoB,IAC5B,KAAQ,EAAoB,IAC5B,MAAS,EAAoB,KAE/B,QAAW,EAAoB,IAC/B,OAAU,CACR,EAAK,EAAoB,IACzB,EAAK,EAAoB,KAE3B,OAAU,EAAoB,IAC9B,MAAS,EAAoB,IAC7B,OAAU,CACR,KAAM,EAAoB,IAC1B,KAAM,EAAoB,KAE5B,KAAQ,EAAoB,IAC5B,KAAQ,CACN,QAAW,EAAoB,IAC/B,OAAU,EAAoB,KAC9B,MAAS,EAAoB,MAE/B,OAAU,CACR,IAAO,EAAoB,KAC3B,MAAS,EAAoB,MAE/B,OAAU,EAAoB,KAC9B,UAAa,EAAoB,KACjC,MAAS,EAAoB,OAKzB,SAAUC,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQylH,mBAAqBzlH,EAAQ66F,aAAUj2F,EAE/C,IAAIo8F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfQ,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErC8Z,EAAS,EAAoB,GAE7BC,EAAUla,EAAuBia,GAEjC7W,EAAU,EAAoB,GAE9BC,EAAWrD,EAAuBoD,GAEtC,SAASpD,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAIojB,EAAU,SAAUhK,GAGtB,SAASgK,EAAQ1X,EAAOvvG,GACtBwjG,EAAgBnjG,KAAM4mH,GAEtB,IAAI1pB,EAAQkG,EAA2BpjG,MAAO4mH,EAAQzvB,WAAa3qF,OAAO2K,eAAeyvG,IAAUvmH,KAAKL,KAAMkvG,EAAOvvG,IAkBrH,OAhBAu9F,EAAM2pB,aAAe,EACrB3pB,EAAM4pB,cAAe,EACrB5pB,EAAMxzB,QACNwzB,EAAMgS,MAAM3H,GAAGmV,EAAQ3gB,QAAQ/mE,OAAOwyE,eAAe,SAAU0G,EAAWloE,EAAO8mE,EAAUpjG,GACrFwkG,IAAcwO,EAAQ3gB,QAAQ/mE,OAAOyyE,aAAevK,EAAM4pB,eACzD5pB,EAAMv9F,QAAQonH,UAAYr9G,IAAWgzG,EAAQ3gB,QAAQ//E,QAAQiwF,KAGhE/O,EAAMgE,UAAUl7D,GAFhBk3D,EAAM8pB,OAAOhhF,EAAO8mE,OAKxB5P,EAAMgS,MAAM/H,SAAS2V,WAAW,CAAE52G,IAAK,IAAK06G,UAAU,GAAQ1jB,EAAM+pB,KAAK//G,KAAKg2F,IAC9EA,EAAMgS,MAAM/H,SAAS2V,WAAW,CAAE52G,IAAK,IAAK06G,UAAU,EAAM5D,UAAU,GAAQ9f,EAAMgqB,KAAKhgH,KAAKg2F,IAC1F,OAAOhqF,KAAKI,UAAUuhB,WACxBqoE,EAAMgS,MAAM/H,SAAS2V,WAAW,CAAE52G,IAAK,IAAK06G,UAAU,GAAQ1jB,EAAMgqB,KAAKhgH,KAAKg2F,IAEzEA,EAwET,OA/FAoG,EAAUsjB,EAAShK,GA0BnB1a,EAAa0kB,EAAS,CAAC,CACrB1gH,IAAK,SACL9B,MAAO,SAAgBsF,EAAQy9G,GAC7B,GAAkC,IAA9BnnH,KAAKsM,MAAM5C,GAAQV,OAAvB,CACA,IAAIg9B,EAAQhmC,KAAKsM,MAAM5C,GAAQkM,MAC/B5V,KAAKsM,MAAM66G,GAAM59G,KAAKy8B,GACtBhmC,KAAK6mH,aAAe,EACpB7mH,KAAK8mH,cAAe,EACpB9mH,KAAKkvG,MAAM+R,eAAej7E,EAAMt8B,GAASgzG,EAAQ3gB,QAAQ//E,QAAQiwF,MACjEjsG,KAAK8mH,cAAe,EACpB,IAAIt9G,EAAQm9G,EAAmB3gF,EAAMt8B,IACrC1J,KAAKkvG,MAAM1F,aAAahgG,MAEzB,CACDtD,IAAK,QACL9B,MAAO,WACLpE,KAAKsM,MAAQ,CAAE26G,KAAM,GAAIC,KAAM,MAEhC,CACDhhH,IAAK,SACL9B,MAAO,WACLpE,KAAK6mH,aAAe,IAErB,CACD3gH,IAAK,SACL9B,MAAO,SAAgBgjH,EAAata,GAClC,GAA+B,IAA3Bsa,EAAYpoB,IAAIh2F,OAApB,CACAhJ,KAAKsM,MAAM46G,KAAO,GAClB,IAAIG,EAAYrnH,KAAKkvG,MAAM7E,cAAcr+C,KAAK8gD,GAC1CjhD,EAAYn5C,KAAKO,MACrB,GAAIjT,KAAK6mH,aAAe7mH,KAAKL,QAAQyZ,MAAQyyC,GAAa7rD,KAAKsM,MAAM26G,KAAKj+G,OAAS,EAAG,CACpF,IAAIg9B,EAAQhmC,KAAKsM,MAAM26G,KAAKrxG,MAC5ByxG,EAAYA,EAAUtnB,QAAQ/5D,EAAMihF,MACpCG,EAAcphF,EAAMkhF,KAAKnnB,QAAQqnB,QAEjCpnH,KAAK6mH,aAAeh7D,EAEtB7rD,KAAKsM,MAAM26G,KAAK19G,KAAK,CACnB29G,KAAME,EACNH,KAAMI,IAEJrnH,KAAKsM,MAAM26G,KAAKj+G,OAAShJ,KAAKL,QAAQ2nH,UACxCtnH,KAAKsM,MAAM26G,KAAK37G,WAGnB,CACDpF,IAAK,OACL9B,MAAO,WACLpE,KAAK2+B,OAAO,OAAQ,UAErB,CACDz4B,IAAK,YACL9B,MAAO,SAAmB4hC,GACxBhmC,KAAKsM,MAAM26G,KAAKjhH,SAAQ,SAAU24B,GAChCA,EAAOsoF,KAAOjhF,EAAMk7D,UAAUviE,EAAOsoF,MAAM,GAC3CtoF,EAAOuoF,KAAOlhF,EAAMk7D,UAAUviE,EAAOuoF,MAAM,MAE7ClnH,KAAKsM,MAAM46G,KAAKlhH,SAAQ,SAAU24B,GAChCA,EAAOsoF,KAAOjhF,EAAMk7D,UAAUviE,EAAOsoF,MAAM,GAC3CtoF,EAAOuoF,KAAOlhF,EAAMk7D,UAAUviE,EAAOuoF,MAAM,QAG9C,CACDhhH,IAAK,OACL9B,MAAO,WACLpE,KAAK2+B,OAAO,OAAQ,YAIjBioF,EAhGK,CAiGZ/gB,EAAS9J,SAQX,SAASwrB,EAAsBvhF,GAC7B,IAAIo5D,EAASp5D,EAAMg5D,IAAIh5D,EAAMg5D,IAAIh2F,OAAS,GAC1C,OAAc,MAAVo2F,IACiB,MAAjBA,EAAOH,OACuB,kBAAlBG,EAAOH,QAAuBG,EAAOH,OAAOzpF,SAAS,MAE5C,MAArB4pF,EAAOjC,YACF3wF,OAAOqC,KAAKuwF,EAAOjC,YAAY31B,MAAK,SAAUw9C,GACnD,OAA2E,MAApEpiB,EAAY7G,QAAQF,MAAMmpB,EAAMpiB,EAAY7G,QAAQJ,MAAMoC,WAMvE,SAAS4oB,EAAmB3gF,GAC1B,IAAIwhF,EAAexhF,EAAM0L,QAAO,SAAU1oC,EAAQ41F,GAEhD,OADA51F,GAAU41F,EAAG17D,QAAU,EAChBl6B,IACN,GACCy+G,EAAczhF,EAAMh9B,SAAWw+G,EAInC,OAHID,EAAsBvhF,KACxByhF,GAAe,GAEVA,EA7BTb,EAAQza,SAAW,CACjB/yF,MAAO,IACPkuG,SAAU,IACVP,UAAU,GA6BZ7lH,EAAQ66F,QAAU6qB,EAClB1lH,EAAQylH,mBAAqBA,GAIvB,SAAUxlH,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQ66F,QAAU76F,EAAQwmH,iBAAc5hH,EAExC,IAAIo8F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZigE,EAAU,EAAoB,GAE9BC,EAAWC,EAAuBF,GAElCG,EAAc,EAAoB,GAElCC,EAAeF,EAAuBC,GAEtCuK,EAAW,EAAoB,GAE/BC,EAAYzK,EAAuBwK,GAEnC0V,EAAY,EAAoB,IAEhCC,EAAangB,EAAuBkgB,GAEpCxc,EAAS,EAAoB,IAE7BC,EAAU3D,EAAuB0D,GAEjCyhB,EAAe,EAAoB,IAEnCC,EAAgBplB,EAAuBmlB,GAEvCE,EAAc,EAAoB,IAElCC,EAAetlB,EAAuBqlB,GAEtCE,EAAU,EAAoB,IAE9BC,EAAWxlB,EAAuBulB,GAElCE,EAAW,EAAoB,IAE/BC,EAAY1lB,EAAuBylB,GAEvC,SAASzlB,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI2kB,EAAS,EAAC,EAAO,SAAU,QAAS,WAEpCC,EAAS,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WAEhYC,EAAQ,EAAC,EAAO,QAAS,aAEzBC,EAAU,CAAC,IAAK,IAAK,KAAK,GAE1BC,EAAQ,CAAC,SAAS,EAAO,QAAS,QAElCC,EAAY,SAAUC,GAGxB,SAASD,EAAUtZ,EAAOvvG,GACxBwjG,EAAgBnjG,KAAMwoH,GAEtB,IAAItrB,EAAQkG,EAA2BpjG,MAAOwoH,EAAUrxB,WAAa3qF,OAAO2K,eAAeqxG,IAAYnoH,KAAKL,KAAMkvG,EAAOvvG,IAErH2J,EAAW,SAASA,EAAS4G,GAC/B,IAAK0C,SAAS6qE,KAAKtpB,SAAS+6C,EAAMh7E,MAChC,OAAOthB,SAAS6qE,KAAK56E,oBAAoB,QAASyG,GAE/B,MAAjB4zF,EAAM72C,SAAoB62C,EAAM72C,QAAQnyB,KAAKigC,SAASjkD,EAAE/B,SAAWyE,SAASokG,gBAAkB9Z,EAAM72C,QAAQqiE,SAAYxrB,EAAMgS,MAAMvE,YACtIzN,EAAM72C,QAAQzS,OAEK,MAAjBspD,EAAMyrB,SACRzrB,EAAMyrB,QAAQ3iH,SAAQ,SAAU4iH,GACzBA,EAAOx/E,UAAU+qB,SAASjkD,EAAE/B,SAC/By6G,EAAOhF,YAMf,OADA1U,EAAMrI,QAAQsO,UAAU,QAASviG,SAAS6qE,KAAMn0E,GACzC4zF,EAyET,OAhGAoG,EAAUklB,EAAWC,GA0BrBvmB,EAAasmB,EAAW,CAAC,CACvBtiH,IAAK,YACL9B,MAAO,SAAmByF,GACxB,IAAI1I,EAASukE,EAAK8iD,EAAU/gH,UAAU0vF,WAAa3qF,OAAO2K,eAAeqxG,EAAU/gH,WAAY,YAAazH,MAAMK,KAAKL,KAAM6J,GAI7H,MAHa,YAATA,GACF7J,KAAK6oH,cAAc1nH,GAEdA,IAER,CACD+E,IAAK,eACL9B,MAAO,SAAsB0kH,EAASC,GACpCD,EAAQ9iH,SAAQ,SAAUgjH,GACxB,IAAIvqB,EAAYuqB,EAAOx1D,aAAa,UAAY,GAChDirC,EAAU/pF,MAAM,OAAO1O,SAAQ,SAAU6D,GACvC,GAAKA,EAAKytB,WAAW,SACrBztB,EAAOA,EAAKyE,MAAM,MAAMtF,QACL,MAAf+/G,EAAMl/G,IACV,GAAa,cAATA,EACFm/G,EAAOxiB,UAAYuiB,EAAMl/G,GAAM,IAAMk/G,EAAMl/G,GAAM,YAC5C,GAA2B,kBAAhBk/G,EAAMl/G,GACtBm/G,EAAOxiB,UAAYuiB,EAAMl/G,OACpB,CACL,IAAIzF,EAAQ4kH,EAAO5kH,OAAS,GACf,MAATA,GAAiB2kH,EAAMl/G,GAAMzF,KAC/B4kH,EAAOxiB,UAAYuiB,EAAMl/G,GAAMzF,aAMxC,CACD8B,IAAK,eACL9B,MAAO,SAAsB6kH,EAASF,GACpC,IAAI5kB,EAASnkG,KAEbA,KAAK2oH,QAAUM,EAAQxtG,KAAI,SAAUwnG,GACnC,GAAIA,EAAOxc,UAAUtyC,SAAS,YAI5B,OAHsC,MAAlC8uD,EAAOvW,cAAc,WACvBwc,EAAWjG,EAAQkF,GAEd,IAAIL,EAAa/rB,QAAQknB,EAAQ8F,EAAMxvG,OACzC,GAAI0pG,EAAOxc,UAAUtyC,SAAS,kBAAoB8uD,EAAOxc,UAAUtyC,SAAS,YAAa,CAC9F,IAAIxoB,EAASs3E,EAAOxc,UAAUtyC,SAAS,iBAAmB,aAAe,QAIzE,OAHsC,MAAlC8uD,EAAOvW,cAAc,WACvBwc,EAAWjG,EAAQmF,EAAmB,eAAXz8E,EAA0B,UAAY,WAE5D,IAAIi8E,EAAc7rB,QAAQknB,EAAQ8F,EAAMp9E,IAW/C,OATsC,MAAlCs3E,EAAOvW,cAAc,YACnBuW,EAAOxc,UAAUtyC,SAAS,WAC5B+0D,EAAWjG,EAAQoF,GACVpF,EAAOxc,UAAUtyC,SAAS,aACnC+0D,EAAWjG,EAAQqF,GACVrF,EAAOxc,UAAUtyC,SAAS,YACnC+0D,EAAWjG,EAAQsF,IAGhB,IAAIP,EAASjsB,QAAQknB,MAGhC,IAAInwE,EAAS,WACXqxD,EAAOwkB,QAAQ3iH,SAAQ,SAAU4iH,GAC/BA,EAAO91E,aAGX9yC,KAAKkvG,MAAM3H,GAAG0F,EAAUlR,QAAQ/mE,OAAOwyE,cAAe10D,OAInD01E,EAjGO,CAkGdriB,EAAQpK,SAEVysB,EAAUrc,UAAW,EAAI5J,EAASxG,UAAS,EAAM,GAAIoK,EAAQpK,QAAQoQ,SAAU,CAC7EzR,QAAS,CACP+R,QAAS,CACPx/F,SAAU,CACRk8G,QAAS,WACPnpH,KAAKkvG,MAAMhI,MAAM7gD,QAAQ+iE,KAAK,YAEhC5U,MAAO,WACL,IAAI7L,EAAS3oG,KAETqpH,EAAYrpH,KAAKopC,UAAUsjE,cAAc,6BAC5B,MAAb2c,IACFA,EAAYz2G,SAASa,cAAc,SACnC41G,EAAUz1G,aAAa,OAAQ,QAC/By1G,EAAUz1G,aAAa,SAAU,6DACjCy1G,EAAU5iB,UAAUlmG,IAAI,YACxB8oH,EAAU9iH,iBAAiB,UAAU,WACnC,GAAuB,MAAnB8iH,EAAUC,OAAuC,MAAtBD,EAAUC,MAAM,GAAY,CACzD,IAAIC,EAAS,IAAIC,WACjBD,EAAOE,OAAS,SAAUv5G,GACxB,IAAI2N,EAAQ8qF,EAAOuG,MAAM7F,cAAa,GACtCV,EAAOuG,MAAM+R,gBAAe,IAAIve,EAAa3G,SAAUoD,OAAOthF,EAAMrU,OAAO05B,OAAOrlB,EAAM7U,QAAQi2F,OAAO,CAAEuV,MAAOtkG,EAAE/B,OAAOgI,SAAW82F,EAAUlR,QAAQ//E,QAAQiwF,MAC9JtD,EAAOuG,MAAM1F,aAAa3rF,EAAMrU,MAAQ,EAAGyjG,EAAUlR,QAAQ//E,QAAQytF,QACrE4f,EAAUjlH,MAAQ,IAEpBmlH,EAAOG,cAAcL,EAAUC,MAAM,QAGzCtpH,KAAKopC,UAAUsoE,YAAY2X,IAE7BA,EAAUM,SAEZC,MAAO,WACL5pH,KAAKkvG,MAAMhI,MAAM7gD,QAAQ+iE,KAAK,eAOxC,IAAI1B,EAAc,SAAUmC,GAG1B,SAASnC,EAAYxY,EAAO4a,GAC1B3mB,EAAgBnjG,KAAM0nH,GAEtB,IAAIve,EAAS/F,EAA2BpjG,MAAO0nH,EAAYvwB,WAAa3qF,OAAO2K,eAAeuwG,IAAcrnH,KAAKL,KAAMkvG,EAAO4a,IAI9H,OAFA3gB,EAAOuf,QAAUvf,EAAOj1E,KAAKw4E,cAAc,sBAC3CvD,EAAO53D,SACA43D,EA2FT,OApGA7F,EAAUokB,EAAamC,GAYvB3nB,EAAawlB,EAAa,CAAC,CACzBxhH,IAAK,SACL9B,MAAO,WACL,IAAIslG,EAAS1pG,KAEbA,KAAK0oH,QAAQniH,iBAAiB,WAAW,SAAUirC,GAC7CmxE,EAAW5mB,QAAQlpF,MAAM2+B,EAAO,UAClCk4D,EAAOtxE,OACPoZ,EAAMstE,kBACG6D,EAAW5mB,QAAQlpF,MAAM2+B,EAAO,YACzCk4D,EAAOhjG,SACP8qC,EAAMstE,uBAIX,CACD54G,IAAK,SACL9B,MAAO,WACLpE,KAAK4zC,SAEN,CACD1tC,IAAK,OACL9B,MAAO,WACL,IAAIwxB,EAAOpkB,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,OAC3Eu4G,EAAUv4G,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAK,KAElFxR,KAAKk0B,KAAKuyE,UAAUzzF,OAAO,aAC3BhT,KAAKk0B,KAAKuyE,UAAUlmG,IAAI,cACT,MAAXwpH,EACF/pH,KAAK0oH,QAAQtkH,MAAQ2lH,EACZn0F,IAAS51B,KAAKk0B,KAAKs/B,aAAa,eACzCxzD,KAAK0oH,QAAQtkH,MAAQ,IAEvBpE,KAAKuY,SAASvY,KAAKkvG,MAAMlF,UAAUhqG,KAAKkvG,MAAMjI,UAAU+N,aACxDh1G,KAAK0oH,QAAQzF,SACbjjH,KAAK0oH,QAAQ90G,aAAa,cAAe5T,KAAK0oH,QAAQl1D,aAAa,QAAU59B,IAAS,IACtF51B,KAAKk0B,KAAKtgB,aAAa,YAAagiB,KAErC,CACD1vB,IAAK,eACL9B,MAAO,WACL,IAAI4kG,EAAYhpG,KAAKkvG,MAAMtI,mBAAmBoC,UAC9ChpG,KAAKkvG,MAAMjG,QACXjpG,KAAKkvG,MAAMtI,mBAAmBoC,UAAYA,IAE3C,CACD9iG,IAAK,OACL9B,MAAO,WACL,IAAIA,EAAQpE,KAAK0oH,QAAQtkH,MACzB,OAAQpE,KAAKk0B,KAAKs/B,aAAa,cAC7B,IAAK,OAED,IAAIw1C,EAAYhpG,KAAKkvG,MAAMh7E,KAAK80E,UAC5BhpG,KAAKgqH,WACPhqH,KAAKkvG,MAAM3F,WAAWvpG,KAAKgqH,UAAW,OAAQ5lH,EAAO6oG,EAAUlR,QAAQ//E,QAAQiwF,aACxEjsG,KAAKgqH,YAEZhqH,KAAKiqH,eACLjqH,KAAKkvG,MAAMvjE,OAAO,OAAQvnC,EAAO6oG,EAAUlR,QAAQ//E,QAAQiwF,OAE7DjsG,KAAKkvG,MAAMh7E,KAAK80E,UAAYA,EAC5B,MAEJ,IAAK,QAED5kG,EAAQ8lH,EAAgB9lH,GAE5B,IAAK,UAED,IAAKA,EAAO,MACZ,IAAIyZ,EAAQ7d,KAAKkvG,MAAM7F,cAAa,GACpC,GAAa,MAATxrF,EAAe,CACjB,IAAIrU,EAAQqU,EAAMrU,MAAQqU,EAAM7U,OAChChJ,KAAKkvG,MAAMpE,YAAYthG,EAAOxJ,KAAKk0B,KAAKs/B,aAAa,aAAcpvD,EAAO6oG,EAAUlR,QAAQ//E,QAAQiwF,MACxD,YAAxCjsG,KAAKk0B,KAAKs/B,aAAa,cACzBxzD,KAAKkvG,MAAMhE,WAAW1hG,EAAQ,EAAG,IAAKyjG,EAAUlR,QAAQ//E,QAAQiwF,MAElEjsG,KAAKkvG,MAAM1F,aAAahgG,EAAQ,EAAGyjG,EAAUlR,QAAQ//E,QAAQiwF,MAE/D,MAEJ,SAEFjsG,KAAK0oH,QAAQtkH,MAAQ,GACrBpE,KAAK4zC,WAIF8zE,EArGS,CAsGhBQ,EAAUnsB,SAEZ,SAASmuB,EAAgBvmH,GACvB,IAAIkP,EAAQlP,EAAIkP,MAAM,+EAAiFlP,EAAIkP,MAAM,kEACjH,OAAIA,GACMA,EAAM,IAAM,SAAW,4BAA8BA,EAAM,GAAK,eAEtEA,EAAQlP,EAAIkP,MAAM,oDAEZA,EAAM,IAAM,SAAW,6BAA+BA,EAAM,GAAK,IAEpElP,EAGT,SAASulH,EAAWjG,EAAQ7uF,GAC1B,IAAI7Z,EAAe/I,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,IAAmBA,UAAU,GAElF4iB,EAAOpuB,SAAQ,SAAU5B,GACvB,IAAI6vC,EAASrhC,SAASa,cAAc,UAChCrP,IAAUmW,EACZ05B,EAAOrgC,aAAa,WAAY,YAEhCqgC,EAAOrgC,aAAa,QAASxP,GAE/B6+G,EAAOvR,YAAYz9D,MAIvB/yC,EAAQwmH,YAAcA,EACtBxmH,EAAQ66F,QAAUysB,GAIZ,SAAUrnH,EAAQD,EAAS07F,GAEjC,aAEApwF,OAAOE,eAAexL,EAAS,aAAc,CAAEkD,OAAO,IACtD,IAAI+lH,EAA4B,WAC5B,SAASA,IACLnqH,KAAKsjD,KAAOtjD,KAAKukG,KAAO,KACxBvkG,KAAKgJ,OAAS,EA8HlB,OA5HAmhH,EAAW1iH,UAAUkO,OAAS,WAE1B,IADA,IAAIy0G,EAAQ,GACHhsB,EAAK,EAAGA,EAAK5sF,UAAUxI,OAAQo1F,IACpCgsB,EAAMhsB,GAAM5sF,UAAU4sF,GAE1Bp+F,KAAK+jG,aAAaqmB,EAAM,GAAI,MACxBA,EAAMphH,OAAS,GACfhJ,KAAK2V,OAAOtK,MAAMrL,KAAMoqH,EAAM97G,MAAM,KAG5C67G,EAAW1iH,UAAU0sD,SAAW,SAAUngC,GACtC,IAAIoa,EAAKvJ,EAAO7kC,KAAKg5F,WACrB,MAAQ5qD,EAAMvJ,IACV,GAAIuJ,IAAQpa,EACR,OAAO,EAEf,OAAO,GAEXm2F,EAAW1iH,UAAUs8F,aAAe,SAAU/vE,EAAMy0E,GAC3Cz0E,IAELA,EAAK6Q,KAAO4jE,EACG,MAAXA,GACAz0E,EAAKiT,KAAOwhE,EAAQxhE,KACA,MAAhBwhE,EAAQxhE,OACRwhE,EAAQxhE,KAAKpC,KAAO7Q,GAExBy0E,EAAQxhE,KAAOjT,EACXy0E,IAAYzoG,KAAKsjD,OACjBtjD,KAAKsjD,KAAOtvB,IAGE,MAAbh0B,KAAKukG,MACVvkG,KAAKukG,KAAK1/D,KAAO7Q,EACjBA,EAAKiT,KAAOjnC,KAAKukG,KACjBvkG,KAAKukG,KAAOvwE,IAGZA,EAAKiT,KAAO,KACZjnC,KAAKsjD,KAAOtjD,KAAKukG,KAAOvwE,GAE5Bh0B,KAAKgJ,QAAU,IAEnBmhH,EAAW1iH,UAAUu9C,OAAS,SAAU72C,GACpC,IAAI3E,EAAQ,EAAG4kC,EAAMpuC,KAAKsjD,KAC1B,MAAc,MAAPlV,EAAa,CAChB,GAAIA,IAAQjgC,EACR,OAAO3E,EACXA,GAAS4kC,EAAIplC,SACbolC,EAAMA,EAAIvJ,KAEd,OAAQ,GAEZslF,EAAW1iH,UAAUuL,OAAS,SAAUghB,GAC/Bh0B,KAAKm0D,SAASngC,KAEF,MAAbA,EAAKiT,OACLjT,EAAKiT,KAAKpC,KAAO7Q,EAAK6Q,MACT,MAAb7Q,EAAK6Q,OACL7Q,EAAK6Q,KAAKoC,KAAOjT,EAAKiT,MACtBjT,IAASh0B,KAAKsjD,OACdtjD,KAAKsjD,KAAOtvB,EAAK6Q,MACjB7Q,IAASh0B,KAAKukG,OACdvkG,KAAKukG,KAAOvwE,EAAKiT,MACrBjnC,KAAKgJ,QAAU,IAEnBmhH,EAAW1iH,UAAUuxF,SAAW,SAAUqxB,GAGtC,YAFgB,IAAZA,IAAsBA,EAAUrqH,KAAKsjD,MAElC,WACH,IAAIt+B,EAAMqlG,EAGV,OAFe,MAAXA,IACAA,EAAUA,EAAQxlF,MACf7f,IAGfmlG,EAAW1iH,UAAUm0F,KAAO,SAAUpyF,EAAOyvG,QACvB,IAAdA,IAAwBA,GAAY,GACxC,IAAI7qE,EAAKvJ,EAAO7kC,KAAKg5F,WACrB,MAAQ5qD,EAAMvJ,IAAS,CACnB,IAAI77B,EAASolC,EAAIplC,SACjB,GAAIQ,EAAQR,GACPiwG,GAAazvG,IAAUR,IAAuB,MAAZolC,EAAIvJ,MAAsC,IAAtBuJ,EAAIvJ,KAAK77B,UAChE,MAAO,CAAColC,EAAK5kC,GAEjBA,GAASR,EAEb,MAAO,CAAC,KAAM,IAElBmhH,EAAW1iH,UAAUzB,QAAU,SAAU8O,GACrC,IAAIs5B,EAAKvJ,EAAO7kC,KAAKg5F,WACrB,MAAQ5qD,EAAMvJ,IACV/vB,EAASs5B,IAGjB+7E,EAAW1iH,UAAU+wG,UAAY,SAAUhvG,EAAOR,EAAQ8L,GACtD,KAAI9L,GAAU,GAAd,CAEA,IACIolC,EADAsqE,EAAK14G,KAAK47F,KAAKpyF,GAAQisG,EAAYiD,EAAG,GAAI1zD,EAAS0zD,EAAG,GACjD4R,EAAW9gH,EAAQw7C,EAAQngB,EAAO7kC,KAAKg5F,SAASyc,GACzD,OAAQrnE,EAAMvJ,MAAWylF,EAAW9gH,EAAQR,EAAQ,CAChD,IAAIuhH,EAAYn8E,EAAIplC,SAChBQ,EAAQ8gH,EACRx1G,EAASs5B,EAAK5kC,EAAQ8gH,EAAUr7G,KAAKkQ,IAAInW,EAAQshH,EAAWC,EAAY/gH,IAGxEsL,EAASs5B,EAAK,EAAGn/B,KAAKkQ,IAAIorG,EAAW/gH,EAAQR,EAASshH,IAE1DA,GAAYC,KAGpBJ,EAAW1iH,UAAUgU,IAAM,SAAU3G,GACjC,OAAO9U,KAAK0xC,QAAO,SAAUqnE,EAAM3qE,GAE/B,OADA2qE,EAAKxvG,KAAKuL,EAASs5B,IACZ2qE,IACR,KAEPoR,EAAW1iH,UAAUiqC,OAAS,SAAU58B,EAAUikG,GAC9C,IAAI3qE,EAAKvJ,EAAO7kC,KAAKg5F,WACrB,MAAQ5qD,EAAMvJ,IACVk0E,EAAOjkG,EAASikG,EAAM3qE,GAE1B,OAAO2qE,GAEJoR,EAjIoB,GAmI/BjpH,EAAQ66F,QAAUouB,GAKZ,SAAUhpH,EAAQD,EAAS,GAEjC,aAEA,IAAI27F,EAAa78F,MAAQA,KAAK68F,WAAc,WACxC,IAAIC,EAAgBtwF,OAAOunF,gBACtB,CAAEoD,UAAW,cAAgB/rF,OAAS,SAAUqY,EAAG9L,GAAK8L,EAAE0zE,UAAYx/E,IACvE,SAAU8L,EAAG9L,GAAK,IAAK,IAAI+H,KAAK/H,EAAOA,EAAEH,eAAekI,KAAI+D,EAAE/D,GAAK/H,EAAE+H,KACzE,OAAO,SAAU+D,EAAG9L,GAEhB,SAASolF,IAAO/8F,KAAKgX,YAAcyM,EADnCq5E,EAAcr5E,EAAG9L,GAEjB8L,EAAEhc,UAAkB,OAANkQ,EAAanL,OAAO7E,OAAOgQ,IAAMolF,EAAGt1F,UAAYkQ,EAAElQ,UAAW,IAAIs1F,IAP3C,GAU5CvwF,OAAOE,eAAexL,EAAS,aAAc,CAAEkD,OAAO,IACtD,IAAI02F,EAAc,EAAoB,IAClC51B,EAAW,EAAoB,GAC/BslD,EAAkB,CAClBrtB,YAAY,EACZstB,eAAe,EACfC,uBAAuB,EACvB91D,WAAW,EACXC,SAAS,GAET81D,EAA0B,IAC1BC,EAA4B,SAAU3tB,GAEtC,SAAS2tB,EAAW52F,GAChB,IAAIkpE,EAAQD,EAAO58F,KAAKL,KAAMg0B,IAASh0B,KAOvC,OANAk9F,EAAM4J,OAAS5J,EACfA,EAAM7oC,SAAW,IAAIC,kBAAiB,SAAUuzC,GAC5C3K,EAAMpqD,OAAO+0D,MAEjB3K,EAAM7oC,SAASM,QAAQuoC,EAAM71D,QAASmjF,GACtCttB,EAAMnnC,SACCmnC,EA8IX,OAvJAL,EAAU+tB,EAAY3tB,GAWtB2tB,EAAWnjH,UAAUuuD,OAAS,WAC1BinC,EAAOx1F,UAAUuuD,OAAO31D,KAAKL,MAC7BA,KAAKq0D,SAASoB,cAElBm1D,EAAWnjH,UAAUwpG,SAAW,SAAUznG,EAAOR,GAC7ChJ,KAAK8yC,SACS,IAAVtpC,GAAeR,IAAWhJ,KAAKgJ,SAC/BhJ,KAAKskG,SAASt+F,SAAQ,SAAUy+F,GAC5BA,EAAMzxF,YAIViqF,EAAOx1F,UAAUwpG,SAAS5wG,KAAKL,KAAMwJ,EAAOR,IAGpD4hH,EAAWnjH,UAAU6pG,SAAW,SAAU9nG,EAAOR,EAAQa,EAAMzF,GAC3DpE,KAAK8yC,SACLmqD,EAAOx1F,UAAU6pG,SAASjxG,KAAKL,KAAMwJ,EAAOR,EAAQa,EAAMzF,IAE9DwmH,EAAWnjH,UAAUu8F,SAAW,SAAUx6F,EAAOpF,EAAOy/F,GACpD7jG,KAAK8yC,SACLmqD,EAAOx1F,UAAUu8F,SAAS3jG,KAAKL,KAAMwJ,EAAOpF,EAAOy/F,IAEvD+mB,EAAWnjH,UAAUkqG,SAAW,SAAU9J,EAAW9nG,GACjD,IAAIm9F,EAAQl9F,UACM,IAAd6nG,IAAwBA,EAAY,SACxB,IAAZ9nG,IAAsBA,EAAU,IACpCk9F,EAAOx1F,UAAUkqG,SAAStxG,KAAKL,KAAMD,GAErC,IAAI8qH,EAAU,GAAGv8G,MAAMjO,KAAKL,KAAKq0D,SAASkoD,eAG1C,MAAOsO,EAAQ7hH,OAAS,EACpB6+F,EAAUt+F,KAAKshH,EAAQj1G,OA+B3B,IA7BA,IAAIk1G,EAAO,SAAUltB,EAAMmtB,QACJ,IAAfA,IAAyBA,GAAa,GAC9B,MAARntB,GAAgBA,IAASV,GAEE,MAA3BU,EAAKv2D,QAAQC,aAGgC,MAA7Cs2D,EAAKv2D,QAAQ69B,EAASy4B,UAAUkK,YAEhCjK,EAAKv2D,QAAQ69B,EAASy4B,UAAUkK,UAAY,IAE5CkjB,GACAD,EAAKltB,EAAKz9F,UAEdwxG,EAAW,SAAU/T,GAIc,MAAnCA,EAAKv2D,QAAQ69B,EAASy4B,WAE2B,MAA7CC,EAAKv2D,QAAQ69B,EAASy4B,UAAUkK,YAGhCjK,aAAgB9C,EAAYiB,SAC5B6B,EAAK0G,SAASt+F,QAAQ2rG,GAE1B/T,EAAK+T,SAAS5xG,KAEd8wC,EAAYg3D,EACP/+F,EAAI,EAAG+nC,EAAU7nC,OAAS,EAAGF,GAAK,EAAG,CAC1C,GAAIA,GAAK6hH,EACL,MAAM,IAAI5+G,MAAM,mDAEpB8kC,EAAU7qC,SAAQ,SAAUkzG,GACxB,IAAItb,EAAO14B,EAAS02B,KAAKsd,EAAS/qG,QAAQ,GAC9B,MAARyvF,IAEAA,EAAKv2D,UAAY6xE,EAAS/qG,SACJ,cAAlB+qG,EAASvyG,MACTmkH,EAAK5lD,EAAS02B,KAAKsd,EAAS8R,iBAAiB,IAC7C,GAAGhlH,QAAQ3F,KAAK64G,EAASzkD,YAAY,SAAUzgC,GAC3C,IAAIywE,EAAQv/B,EAAS02B,KAAK5nE,GAAM,GAChC82F,EAAKrmB,GAAO,GACRA,aAAiB3J,EAAYiB,SAC7B0I,EAAMH,SAASt+F,SAAQ,SAAUilH,GAC7BH,EAAKG,GAAY,UAKN,eAAlB/R,EAASvyG,MACdmkH,EAAKltB,EAAK32D,OAGlB6jF,EAAKltB,OAET59F,KAAKskG,SAASt+F,QAAQ2rG,GACtB9gE,EAAY,GAAGviC,MAAMjO,KAAKL,KAAKq0D,SAASkoD,eACxCsO,EAAUh6E,EAAUviC,QACpB,MAAOu8G,EAAQ7hH,OAAS,EACpB6+F,EAAUt+F,KAAKshH,EAAQj1G,SAGnCg1G,EAAWnjH,UAAUqrC,OAAS,SAAU+0D,EAAW9nG,GAC/C,IAAIm9F,EAAQl9F,UACI,IAAZD,IAAsBA,EAAU,IACpC8nG,EAAYA,GAAa7nG,KAAKq0D,SAASkoD,cAEvC1U,EACKpsF,KAAI,SAAUy9F,GACf,IAAItb,EAAO14B,EAAS02B,KAAKsd,EAAS/qG,QAAQ,GAC1C,OAAY,MAARyvF,EACO,KAEsC,MAA7CA,EAAKv2D,QAAQ69B,EAASy4B,UAAUkK,WAEhCjK,EAAKv2D,QAAQ69B,EAASy4B,UAAUkK,UAAY,CAACqR,GACtCtb,IAIPA,EAAKv2D,QAAQ69B,EAASy4B,UAAUkK,UAAUt+F,KAAK2vG,GACxC,SAGVlzG,SAAQ,SAAU43F,GACP,MAARA,GACAA,IAASV,GAE0B,MAAnCU,EAAKv2D,QAAQ69B,EAASy4B,WAG1BC,EAAK9qD,OAAO8qD,EAAKv2D,QAAQ69B,EAASy4B,UAAUkK,WAAa,GAAI9nG,MAGhB,MAA7CC,KAAKqnC,QAAQ69B,EAASy4B,UAAUkK,WAEhC5K,EAAOx1F,UAAUqrC,OAAOzyC,KAAKL,KAAMA,KAAKqnC,QAAQ69B,EAASy4B,UAAUkK,UAAW9nG,GAElFC,KAAK2xG,SAAS9J,EAAW9nG,IAE7B6qH,EAAWtsB,SAAW,SACtBssB,EAAWhmB,aAAe,QAC1BgmB,EAAWz2F,MAAQ+wC,EAASy2B,MAAMsI,WAClC2mB,EAAW1sB,QAAU,MACd0sB,EAxJoB,CAyJ7B9vB,EAAYiB,SACd76F,EAAQ66F,QAAU6uB,GAKZ,SAAUzpH,EAAQD,EAAS,GAEjC,aAEA,IAAI27F,EAAa78F,MAAQA,KAAK68F,WAAc,WACxC,IAAIC,EAAgBtwF,OAAOunF,gBACtB,CAAEoD,UAAW,cAAgB/rF,OAAS,SAAUqY,EAAG9L,GAAK8L,EAAE0zE,UAAYx/E,IACvE,SAAU8L,EAAG9L,GAAK,IAAK,IAAI+H,KAAK/H,EAAOA,EAAEH,eAAekI,KAAI+D,EAAE/D,GAAK/H,EAAE+H,KACzE,OAAO,SAAU+D,EAAG9L,GAEhB,SAASolF,IAAO/8F,KAAKgX,YAAcyM,EADnCq5E,EAAcr5E,EAAG9L,GAEjB8L,EAAEhc,UAAkB,OAANkQ,EAAanL,OAAO7E,OAAOgQ,IAAMolF,EAAGt1F,UAAYkQ,EAAElQ,UAAW,IAAIs1F,IAP3C,GAU5CvwF,OAAOE,eAAexL,EAAS,aAAc,CAAEkD,OAAO,IACtD,IAAI22F,EAAW,EAAoB,IAC/B71B,EAAW,EAAoB,GAEnC,SAASgmD,EAAQC,EAAMC,GACnB,GAAI5+G,OAAOqC,KAAKs8G,GAAMniH,SAAWwD,OAAOqC,KAAKu8G,GAAMpiH,OAC/C,OAAO,EAEX,IAAK,IAAIwF,KAAQ28G,EAEb,GAAIA,EAAK38G,KAAU48G,EAAK58G,GACpB,OAAO,EAEf,OAAO,EAEX,IAAI68G,EAA4B,SAAUpuB,GAEtC,SAASouB,IACL,OAAkB,OAAXpuB,GAAmBA,EAAO5xF,MAAMrL,KAAMwR,YAAcxR,KA8C/D,OAhDA68F,EAAUwuB,EAAYpuB,GAItBouB,EAAWz/D,QAAU,SAAUvkB,GAC3B,GAAIA,EAAQ62D,UAAYmtB,EAAWntB,QAEnC,OAAOjB,EAAOrxC,QAAQvrD,KAAKL,KAAMqnC,IAErCgkF,EAAW5jH,UAAUkkC,OAAS,SAAU9hC,EAAMzF,GAC1C,IAAI84F,EAAQl9F,KACR6J,IAAS7J,KAAK2kG,QAAQrG,UAAal6F,EAUnC64F,EAAOx1F,UAAUkkC,OAAOtrC,KAAKL,KAAM6J,EAAMzF,IATzCpE,KAAKskG,SAASt+F,SAAQ,SAAUy+F,GACtBA,aAAiB1J,EAASgB,UAC5B0I,EAAQA,EAAMx1C,KAAKo8D,EAAW/sB,UAAU,IAE5CpB,EAAMC,WAAW0E,KAAK4C,MAE1BzkG,KAAK6xG,WAMbwZ,EAAW5jH,UAAU6pG,SAAW,SAAU9nG,EAAOR,EAAQa,EAAMzF,GAC3D,GAA4B,MAAxBpE,KAAK4rD,UAAU/hD,IAAiBq7D,EAAS22B,MAAMhyF,EAAMq7D,EAASy2B,MAAMyU,WAAY,CAChF,IAAIxS,EAAO59F,KAAKytG,QAAQjkG,EAAOR,GAC/B40F,EAAKjyD,OAAO9hC,EAAMzF,QAGlB64F,EAAOx1F,UAAU6pG,SAASjxG,KAAKL,KAAMwJ,EAAOR,EAAQa,EAAMzF,IAGlEinH,EAAW5jH,UAAUkqG,SAAW,SAAU5xG,GACtCk9F,EAAOx1F,UAAUkqG,SAAStxG,KAAKL,KAAMD,GACrC,IAAI6rD,EAAU5rD,KAAK4rD,UACnB,GAAoC,IAAhCp/C,OAAOqC,KAAK+8C,GAAS5iD,OACrB,OAAOhJ,KAAK6xG,SAEhB,IAAIhtE,EAAO7kC,KAAK6kC,KACZA,aAAgBwmF,GAAcxmF,EAAKoC,OAASjnC,MAAQkrH,EAAQt/D,EAAS/mB,EAAK+mB,aAC1E/mB,EAAK6oE,aAAa1tG,MAClB6kC,EAAK7xB,WAGbq4G,EAAW/sB,SAAW,SACtB+sB,EAAWl3F,MAAQ+wC,EAASy2B,MAAMge,YAClC0R,EAAWntB,QAAU,OACdmtB,EAjDoB,CAkD7BtwB,EAASgB,SACX76F,EAAQ66F,QAAUsvB,GAKZ,SAAUlqH,EAAQD,EAAS,GAEjC,aAEA,IAAI27F,EAAa78F,MAAQA,KAAK68F,WAAc,WACxC,IAAIC,EAAgBtwF,OAAOunF,gBACtB,CAAEoD,UAAW,cAAgB/rF,OAAS,SAAUqY,EAAG9L,GAAK8L,EAAE0zE,UAAYx/E,IACvE,SAAU8L,EAAG9L,GAAK,IAAK,IAAI+H,KAAK/H,EAAOA,EAAEH,eAAekI,KAAI+D,EAAE/D,GAAK/H,EAAE+H,KACzE,OAAO,SAAU+D,EAAG9L,GAEhB,SAASolF,IAAO/8F,KAAKgX,YAAcyM,EADnCq5E,EAAcr5E,EAAG9L,GAEjB8L,EAAEhc,UAAkB,OAANkQ,EAAanL,OAAO7E,OAAOgQ,IAAMolF,EAAGt1F,UAAYkQ,EAAElQ,UAAW,IAAIs1F,IAP3C,GAU5CvwF,OAAOE,eAAexL,EAAS,aAAc,CAAEkD,OAAO,IACtD,IAAI22F,EAAW,EAAoB,IAC/B71B,EAAW,EAAoB,GAC/BomD,EAA2B,SAAUruB,GAErC,SAASquB,IACL,OAAkB,OAAXruB,GAAmBA,EAAO5xF,MAAMrL,KAAMwR,YAAcxR,KAiD/D,OAnDA68F,EAAUyuB,EAAWruB,GAIrBquB,EAAU1/D,QAAU,SAAUvkB,GAC1B,IAAI62D,EAAUh5B,EAAS22B,MAAMyvB,EAAUhtB,UAAUJ,QACjD,GAAI72D,EAAQ62D,UAAYA,EAExB,OAAOjB,EAAOrxC,QAAQvrD,KAAKL,KAAMqnC,IAErCikF,EAAU7jH,UAAUkkC,OAAS,SAAU9hC,EAAMzF,GACS,MAA9C8gE,EAAS22B,MAAMhyF,EAAMq7D,EAASy2B,MAAMoC,SAG/Bl0F,IAAS7J,KAAK2kG,QAAQrG,UAAal6F,EAIxC64F,EAAOx1F,UAAUkkC,OAAOtrC,KAAKL,KAAM6J,EAAMzF,GAHzCpE,KAAKy5G,YAAY6R,EAAUhtB,YAMnCgtB,EAAU7jH,UAAU6pG,SAAW,SAAU9nG,EAAOR,EAAQa,EAAMzF,GACR,MAA9C8gE,EAAS22B,MAAMhyF,EAAMq7D,EAASy2B,MAAMoC,OACpC/9F,KAAK2rC,OAAO9hC,EAAMzF,GAGlB64F,EAAOx1F,UAAU6pG,SAASjxG,KAAKL,KAAMwJ,EAAOR,EAAQa,EAAMzF,IAGlEknH,EAAU7jH,UAAUu8F,SAAW,SAAUx6F,EAAOpF,EAAOy/F,GACnD,GAAW,MAAPA,GAA+D,MAAhD3+B,EAAS22B,MAAMz3F,EAAO8gE,EAASy2B,MAAMqC,QAEpDf,EAAOx1F,UAAUu8F,SAAS3jG,KAAKL,KAAMwJ,EAAOpF,EAAOy/F,OAElD,CACD,IAAI1lB,EAAQn+E,KAAK0U,MAAMlL,GACnBo0F,EAAO14B,EAASv9D,OAAOvD,EAAOy/F,GAClC1lB,EAAMh+E,OAAO4jG,aAAanG,EAAMzf,KAGxCmtC,EAAU7jH,UAAUqrC,OAAS,SAAU+0D,EAAW9nG,GAC1CuT,UAAUC,UAAUV,MAAM,WAC1B7S,KAAKqV,QAGL4nF,EAAOx1F,UAAUqrC,OAAOzyC,KAAKL,KAAM6nG,EAAW9nG,IAGtDurH,EAAUhtB,SAAW,QACrBgtB,EAAUn3F,MAAQ+wC,EAASy2B,MAAMsI,WACjCqnB,EAAUptB,QAAU,IACbotB,EApDmB,CAqD5BvwB,EAASgB,SACX76F,EAAQ66F,QAAUuvB,GAKZ,SAAUnqH,EAAQD,EAAS,GAEjC,aAEA,IAAI27F,EAAa78F,MAAQA,KAAK68F,WAAc,WACxC,IAAIC,EAAgBtwF,OAAOunF,gBACtB,CAAEoD,UAAW,cAAgB/rF,OAAS,SAAUqY,EAAG9L,GAAK8L,EAAE0zE,UAAYx/E,IACvE,SAAU8L,EAAG9L,GAAK,IAAK,IAAI+H,KAAK/H,EAAOA,EAAEH,eAAekI,KAAI+D,EAAE/D,GAAK/H,EAAE+H,KACzE,OAAO,SAAU+D,EAAG9L,GAEhB,SAASolF,IAAO/8F,KAAKgX,YAAcyM,EADnCq5E,EAAcr5E,EAAG9L,GAEjB8L,EAAEhc,UAAkB,OAANkQ,EAAanL,OAAO7E,OAAOgQ,IAAMolF,EAAGt1F,UAAYkQ,EAAElQ,UAAW,IAAIs1F,IAP3C,GAU5CvwF,OAAOE,eAAexL,EAAS,aAAc,CAAEkD,OAAO,IACtD,IAAI42F,EAAS,EAAoB,IAC7BuwB,EAA2B,SAAUtuB,GAErC,SAASsuB,IACL,OAAkB,OAAXtuB,GAAmBA,EAAO5xF,MAAMrL,KAAMwR,YAAcxR,KAsB/D,OAxBA68F,EAAU0uB,EAAWtuB,GAIrBsuB,EAAU3/D,QAAU,SAAUvkB,KAG9BkkF,EAAU9jH,UAAUkkC,OAAS,SAAU9hC,EAAMzF,GAIzC64F,EAAOx1F,UAAU6pG,SAASjxG,KAAKL,KAAM,EAAGA,KAAKgJ,SAAUa,EAAMzF,IAEjEmnH,EAAU9jH,UAAU6pG,SAAW,SAAU9nG,EAAOR,EAAQa,EAAMzF,GAC5C,IAAVoF,GAAeR,IAAWhJ,KAAKgJ,SAC/BhJ,KAAK2rC,OAAO9hC,EAAMzF,GAGlB64F,EAAOx1F,UAAU6pG,SAASjxG,KAAKL,KAAMwJ,EAAOR,EAAQa,EAAMzF,IAGlEmnH,EAAU9jH,UAAUmkD,QAAU,WAC1B,OAAO5rD,KAAK2kG,QAAQ/4C,QAAQ5rD,KAAKqnC,UAE9BkkF,EAzBmB,CA0B5BvwB,EAAOe,SACT76F,EAAQ66F,QAAUwvB,GAKZ,SAAUpqH,EAAQD,EAAS,GAEjC,aAEA,IAAI27F,EAAa78F,MAAQA,KAAK68F,WAAc,WACxC,IAAIC,EAAgBtwF,OAAOunF,gBACtB,CAAEoD,UAAW,cAAgB/rF,OAAS,SAAUqY,EAAG9L,GAAK8L,EAAE0zE,UAAYx/E,IACvE,SAAU8L,EAAG9L,GAAK,IAAK,IAAI+H,KAAK/H,EAAOA,EAAEH,eAAekI,KAAI+D,EAAE/D,GAAK/H,EAAE+H,KACzE,OAAO,SAAU+D,EAAG9L,GAEhB,SAASolF,IAAO/8F,KAAKgX,YAAcyM,EADnCq5E,EAAcr5E,EAAG9L,GAEjB8L,EAAEhc,UAAkB,OAANkQ,EAAanL,OAAO7E,OAAOgQ,IAAMolF,EAAGt1F,UAAYkQ,EAAElQ,UAAW,IAAIs1F,IAP3C,GAU5CvwF,OAAOE,eAAexL,EAAS,aAAc,CAAEkD,OAAO,IACtD,IAAI42F,EAAS,EAAoB,IAC7B91B,EAAW,EAAoB,GAC/B2oC,EAA0B,SAAU5Q,GAEpC,SAAS4Q,EAAS75E,GACd,IAAIkpE,EAAQD,EAAO58F,KAAKL,KAAMg0B,IAASh0B,KAEvC,OADAk9F,EAAMvhE,KAAOuhE,EAAMyH,QAAQvgG,MAAM84F,EAAM71D,SAChC61D,EA0EX,OA9EAL,EAAUgR,EAAU5Q,GAMpB4Q,EAASlmG,OAAS,SAAUvD,GACxB,OAAOwO,SAASgvG,eAAex9G,IAEnCypG,EAASzpG,MAAQ,SAAUijC,GACvB,IAAI1L,EAAO0L,EAAQhlC,KAInB,OAFIs5B,EAAK,eACLA,EAAOA,EAAK,gBACTA,GAEXkyE,EAASpmG,UAAUwpG,SAAW,SAAUznG,EAAOR,GAC3ChJ,KAAKqnC,QAAQhlC,KAAOrC,KAAK27B,KAAO37B,KAAK27B,KAAKrtB,MAAM,EAAG9E,GAASxJ,KAAK27B,KAAKrtB,MAAM9E,EAAQR,IAExF6kG,EAASpmG,UAAU+B,MAAQ,SAAUwqB,EAAMgxB,GACvC,OAAIhlD,KAAKqnC,UAAYrT,EACVgxB,GAEH,GAEZ6oD,EAASpmG,UAAUu8F,SAAW,SAAUx6F,EAAOpF,EAAOy/F,GACvC,MAAPA,GACA7jG,KAAK27B,KAAO37B,KAAK27B,KAAKrtB,MAAM,EAAG9E,GAASpF,EAAQpE,KAAK27B,KAAKrtB,MAAM9E,GAChExJ,KAAKqnC,QAAQhlC,KAAOrC,KAAK27B,MAGzBshE,EAAOx1F,UAAUu8F,SAAS3jG,KAAKL,KAAMwJ,EAAOpF,EAAOy/F,IAG3DgK,EAASpmG,UAAUuB,OAAS,WACxB,OAAOhJ,KAAK27B,KAAK3yB,QAErB6kG,EAASpmG,UAAUkqG,SAAW,SAAU5xG,GACpCk9F,EAAOx1F,UAAUkqG,SAAStxG,KAAKL,KAAMD,GACrCC,KAAK27B,KAAO37B,KAAK2kG,QAAQvgG,MAAMpE,KAAKqnC,SACX,IAArBrnC,KAAK27B,KAAK3yB,OACVhJ,KAAKgT,SAEAhT,KAAK6kC,gBAAgBgpE,GAAY7tG,KAAK6kC,KAAKoC,OAASjnC,OACzDA,KAAKgkG,SAAShkG,KAAKgJ,SAAUhJ,KAAK6kC,KAAKzgC,SACvCpE,KAAK6kC,KAAK7xB,WAGlB66F,EAASpmG,UAAU8Q,SAAW,SAAU/O,EAAOyvG,GAE3C,YADkB,IAAdA,IAAwBA,GAAY,GACjC,CAACj5G,KAAKqnC,QAAS79B,IAE1BqkG,EAASpmG,UAAUiN,MAAQ,SAAUlL,EAAOk7F,GAExC,QADc,IAAVA,IAAoBA,GAAQ,IAC3BA,EAAO,CACR,GAAc,IAAVl7F,EACA,OAAOxJ,KACX,GAAIwJ,IAAUxJ,KAAKgJ,SACf,OAAOhJ,KAAK6kC,KAEpB,IAAIs5C,EAAQjZ,EAASv9D,OAAO3H,KAAKqnC,QAAQmkF,UAAUhiH,IAGnD,OAFAxJ,KAAKG,OAAO4jG,aAAa5lB,EAAOn+E,KAAK6kC,MACrC7kC,KAAK27B,KAAO37B,KAAK2kG,QAAQvgG,MAAMpE,KAAKqnC,SAC7B82C,GAEX0vB,EAASpmG,UAAUqrC,OAAS,SAAU+0D,EAAW9nG,GAC7C,IAAIm9F,EAAQl9F,KACR6nG,EAAUrgC,MAAK,SAAU0xC,GACzB,MAAyB,kBAAlBA,EAASvyG,MAA4BuyG,EAAS/qG,SAAW+uF,EAAM71D,aAEtErnC,KAAK27B,KAAO37B,KAAK2kG,QAAQvgG,MAAMpE,KAAKqnC,WAG5CwmE,EAASpmG,UAAUrD,MAAQ,WACvB,OAAOpE,KAAK27B,MAEhBkyE,EAASvP,SAAW,OACpBuP,EAAS15E,MAAQ+wC,EAASy2B,MAAMge,YACzB9L,EA/EkB,CAgF3B7S,EAAOe,SACT76F,EAAQ66F,QAAU8R,GAKZ,SAAU1sG,EAAQD,EAAS07F,GAEjC,aAGA,IAAI+C,EAAO/sF,SAASa,cAAc,OAElC,GADAksF,EAAK8G,UAAUiB,OAAO,cAAc,GAChC/H,EAAK8G,UAAUtyC,SAAS,cAAe,CACzC,IAAIs3D,EAAUC,aAAajkH,UAAUigG,OACrCgkB,aAAajkH,UAAUigG,OAAS,SAAU/+F,EAAO+7F,GAC/C,OAAIlzF,UAAUxI,OAAS,IAAMhJ,KAAKm0D,SAASxrD,MAAY+7F,EAC9CA,EAEA+mB,EAAQprH,KAAKL,KAAM2I,IAK3B6P,OAAO/Q,UAAU6vB,aACpB9e,OAAO/Q,UAAU6vB,WAAa,SAAUhf,EAAcC,GAEpD,OADAA,EAAWA,GAAY,EAChBvY,KAAK4U,OAAO2D,EAAUD,EAAatP,UAAYsP,IAIrDE,OAAO/Q,UAAU+N,WACpBgD,OAAO/Q,UAAU+N,SAAW,SAAU8C,EAAcC,GAClD,IAAIozG,EAAgB3rH,KAAKyP,YACD,kBAAb8I,IAA0B8B,SAAS9B,IAAatJ,KAAKC,MAAMqJ,KAAcA,GAAYA,EAAWozG,EAAc3iH,UACvHuP,EAAWozG,EAAc3iH,QAE3BuP,GAAYD,EAAatP,OACzB,IAAIyP,EAAYkzG,EAAc5mH,QAAQuT,EAAcC,GACpD,OAAsB,IAAfE,GAAoBA,IAAcF,IAIxCnN,MAAM3D,UAAUm0F,MACnBpvF,OAAOE,eAAetB,MAAM3D,UAAW,OAAQ,CAC7CrD,MAAO,SAAek7F,GACpB,GAAa,OAATt/F,KACF,MAAM,IAAIwI,UAAU,oDAEtB,GAAyB,oBAAd82F,EACT,MAAM,IAAI92F,UAAU,gCAOtB,IALA,IAGIpE,EAHAqwG,EAAOjoG,OAAOxM,MACdgJ,EAASyrG,EAAKzrG,SAAW,EACzBsI,EAAUE,UAAU,GAGf1I,EAAI,EAAGA,EAAIE,EAAQF,IAE1B,GADA1E,EAAQqwG,EAAK3rG,GACTw2F,EAAUj/F,KAAKiR,EAASlN,EAAO0E,EAAG2rG,GACpC,OAAOrwG,KAQjBwO,SAASrM,iBAAiB,oBAAoB,WAE5CqM,SAASg5G,YAAY,wBAAwB,GAAO,GAEpDh5G,SAASg5G,YAAY,iBAAiB,GAAO,OAKzC,SAAUzqH,EAAQD,GAiCxB,IAAI2qH,GAAe,EACfC,EAAc,EACdC,EAAa,EAWjB,SAASC,EAAUC,EAAOC,EAAOC,GAE/B,GAAIF,GAASC,EACX,OAAID,EACK,CAAC,CAACF,EAAYE,IAEhB,IAILE,EAAa,GAAKF,EAAMjjH,OAASmjH,KACnCA,EAAa,MAIf,IAAIC,EAAeC,EAAkBJ,EAAOC,GACxCI,EAAeL,EAAMM,UAAU,EAAGH,GACtCH,EAAQA,EAAMM,UAAUH,GACxBF,EAAQA,EAAMK,UAAUH,GAGxBA,EAAeI,EAAkBP,EAAOC,GACxC,IAAIO,EAAeR,EAAMM,UAAUN,EAAMjjH,OAASojH,GAClDH,EAAQA,EAAMM,UAAU,EAAGN,EAAMjjH,OAASojH,GAC1CF,EAAQA,EAAMK,UAAU,EAAGL,EAAMljH,OAASojH,GAG1C,IAAIM,EAAQC,EAAcV,EAAOC,GAcjC,OAXII,GACFI,EAAM3hH,QAAQ,CAACghH,EAAYO,IAEzBG,GACFC,EAAMnjH,KAAK,CAACwiH,EAAYU,IAE1BG,EAAkBF,GACA,MAAdP,IACFO,EAAQG,EAAWH,EAAOP,IAE5BO,EAAQI,EAAUJ,GACXA,EAWT,SAASC,EAAcV,EAAOC,GAC5B,IAAIQ,EAEJ,IAAKT,EAEH,MAAO,CAAC,CAACH,EAAaI,IAGxB,IAAKA,EAEH,MAAO,CAAC,CAACL,EAAaI,IAGxB,IAAIc,EAAWd,EAAMjjH,OAASkjH,EAAMljH,OAASijH,EAAQC,EACjDc,EAAYf,EAAMjjH,OAASkjH,EAAMljH,OAASkjH,EAAQD,EAClDnjH,EAAIikH,EAAShoH,QAAQioH,GACzB,IAAU,GAANlkH,EASF,OAPA4jH,EAAQ,CAAC,CAACZ,EAAaiB,EAASR,UAAU,EAAGzjH,IACpC,CAACijH,EAAYiB,GACb,CAAClB,EAAaiB,EAASR,UAAUzjH,EAAIkkH,EAAUhkH,UAEpDijH,EAAMjjH,OAASkjH,EAAMljH,SACvB0jH,EAAM,GAAG,GAAKA,EAAM,GAAG,GAAKb,GAEvBa,EAGT,GAAwB,GAApBM,EAAUhkH,OAGZ,MAAO,CAAC,CAAC6iH,EAAaI,GAAQ,CAACH,EAAaI,IAI9C,IAAIe,EAAKC,EAAgBjB,EAAOC,GAChC,GAAIe,EAAI,CAEN,IAAIE,EAAUF,EAAG,GACbG,EAAUH,EAAG,GACbI,EAAUJ,EAAG,GACbK,EAAUL,EAAG,GACbM,EAAaN,EAAG,GAEhBO,EAAUxB,EAAUmB,EAASE,GAC7BI,EAAUzB,EAAUoB,EAASE,GAEjC,OAAOE,EAAQvsH,OAAO,CAAC,CAAC8qH,EAAYwB,IAAcE,GAGpD,OAAOC,EAAazB,EAAOC,GAa7B,SAASwB,EAAazB,EAAOC,GAW3B,IATA,IAAIyB,EAAe1B,EAAMjjH,OACrB4kH,EAAe1B,EAAMljH,OACrB6kH,EAAQ5+G,KAAK2pD,MAAM+0D,EAAeC,GAAgB,GAClDE,EAAWD,EACXE,EAAW,EAAIF,EACfvyG,EAAK,IAAIlQ,MAAM2iH,GACfrrE,EAAK,IAAIt3C,MAAM2iH,GAGVrvG,EAAI,EAAGA,EAAIqvG,EAAUrvG,IAC5BpD,EAAGoD,IAAM,EACTgkC,EAAGhkC,IAAM,EAEXpD,EAAGwyG,EAAW,GAAK,EACnBprE,EAAGorE,EAAW,GAAK,EAWnB,IAVA,IAAI9nF,EAAQ2nF,EAAeC,EAGvBI,EAAShoF,EAAQ,GAAK,EAGtBioF,EAAU,EACVC,EAAQ,EACRC,EAAU,EACVC,EAAQ,EACH3qG,EAAI,EAAGA,EAAIoqG,EAAOpqG,IAAK,CAE9B,IAAK,IAAI4qG,GAAM5qG,EAAIwqG,EAASI,GAAM5qG,EAAIyqG,EAAOG,GAAM,EAAG,CACpD,IAAIC,EAAYR,EAAWO,EAGzBtsD,EADEssD,IAAO5qG,GAAM4qG,GAAM5qG,GAAKnI,EAAGgzG,EAAY,GAAKhzG,EAAGgzG,EAAY,GACxDhzG,EAAGgzG,EAAY,GAEfhzG,EAAGgzG,EAAY,GAAK,EAE3B,IAAItsD,EAAKD,EAAKssD,EACd,MAAOtsD,EAAK4rD,GAAgB3rD,EAAK4rD,GAC1B3B,EAAM93G,OAAO4tD,IAAOmqD,EAAM/3G,OAAO6tD,GACtCD,IACAC,IAGF,GADA1mD,EAAGgzG,GAAavsD,EACZA,EAAK4rD,EAEPO,GAAS,OACJ,GAAIlsD,EAAK4rD,EAEdK,GAAW,OACN,GAAID,EAAO,CAChB,IAAIO,EAAYT,EAAW9nF,EAAQqoF,EACnC,GAAIE,GAAa,GAAKA,EAAYR,IAA8B,GAAlBrrE,EAAG6rE,GAAkB,CAEjE,IAAItsD,EAAK0rD,EAAejrE,EAAG6rE,GAC3B,GAAIxsD,GAAME,EAER,OAAOusD,EAAkBvC,EAAOC,EAAOnqD,EAAIC,KAOnD,IAAK,IAAIysD,GAAMhrG,EAAI0qG,EAASM,GAAMhrG,EAAI2qG,EAAOK,GAAM,EAAG,CAChDF,EAAYT,EAAWW,EAGzBxsD,EADEwsD,IAAOhrG,GAAMgrG,GAAMhrG,GAAKi/B,EAAG6rE,EAAY,GAAK7rE,EAAG6rE,EAAY,GACxD7rE,EAAG6rE,EAAY,GAEf7rE,EAAG6rE,EAAY,GAAK,EAE3B,IAAIrsD,EAAKD,EAAKwsD,EACd,MAAOxsD,EAAK0rD,GAAgBzrD,EAAK0rD,GAC1B3B,EAAM93G,OAAOw5G,EAAe1rD,EAAK,IACjCiqD,EAAM/3G,OAAOy5G,EAAe1rD,EAAK,GACtCD,IACAC,IAGF,GADAxf,EAAG6rE,GAAatsD,EACZA,EAAK0rD,EAEPS,GAAS,OACJ,GAAIlsD,EAAK0rD,EAEdO,GAAW,OACN,IAAKH,EAAO,CACbM,EAAYR,EAAW9nF,EAAQyoF,EACnC,GAAIH,GAAa,GAAKA,EAAYP,IAA8B,GAAlBzyG,EAAGgzG,GAAkB,CACjE,IAAIvsD,EAAKzmD,EAAGgzG,GACRtsD,EAAK8rD,EAAW/rD,EAAKusD,EAGzB,GADArsD,EAAK0rD,EAAe1rD,EAChBF,GAAME,EAER,OAAOusD,EAAkBvC,EAAOC,EAAOnqD,EAAIC,MAQrD,MAAO,CAAC,CAAC6pD,EAAaI,GAAQ,CAACH,EAAaI,IAa9C,SAASsC,EAAkBvC,EAAOC,EAAOxtG,EAAGC,GAC1C,IAAI+vG,EAASzC,EAAMM,UAAU,EAAG7tG,GAC5BiwG,EAASzC,EAAMK,UAAU,EAAG5tG,GAC5BiwG,EAAS3C,EAAMM,UAAU7tG,GACzBmwG,EAAS3C,EAAMK,UAAU5tG,GAGzB+tG,EAAQV,EAAU0C,EAAQC,GAC1BG,EAAS9C,EAAU4C,EAAQC,GAE/B,OAAOnC,EAAMzrH,OAAO6tH,GAWtB,SAASzC,EAAkBJ,EAAOC,GAEhC,IAAKD,IAAUC,GAASD,EAAM93G,OAAO,IAAM+3G,EAAM/3G,OAAO,GACtD,OAAO,EAIT,IAAI46G,EAAa,EACbC,EAAa//G,KAAKkQ,IAAI8sG,EAAMjjH,OAAQkjH,EAAMljH,QAC1CimH,EAAaD,EACbE,EAAe,EACnB,MAAOH,EAAaE,EACdhD,EAAMM,UAAU2C,EAAcD,IAC9B/C,EAAMK,UAAU2C,EAAcD,IAChCF,EAAaE,EACbC,EAAeH,GAEfC,EAAaC,EAEfA,EAAahgH,KAAKC,OAAO8/G,EAAaD,GAAc,EAAIA,GAE1D,OAAOE,EAUT,SAASzC,EAAkBP,EAAOC,GAEhC,IAAKD,IAAUC,GACXD,EAAM93G,OAAO83G,EAAMjjH,OAAS,IAAMkjH,EAAM/3G,OAAO+3G,EAAMljH,OAAS,GAChE,OAAO,EAIT,IAAI+lH,EAAa,EACbC,EAAa//G,KAAKkQ,IAAI8sG,EAAMjjH,OAAQkjH,EAAMljH,QAC1CimH,EAAaD,EACbG,EAAa,EACjB,MAAOJ,EAAaE,EACdhD,EAAMM,UAAUN,EAAMjjH,OAASimH,EAAYhD,EAAMjjH,OAASmmH,IAC1DjD,EAAMK,UAAUL,EAAMljH,OAASimH,EAAY/C,EAAMljH,OAASmmH,IAC5DJ,EAAaE,EACbE,EAAaJ,GAEbC,EAAaC,EAEfA,EAAahgH,KAAKC,OAAO8/G,EAAaD,GAAc,EAAIA,GAE1D,OAAOE,EAcT,SAAS/B,EAAgBjB,EAAOC,GAC9B,IAAIa,EAAWd,EAAMjjH,OAASkjH,EAAMljH,OAASijH,EAAQC,EACjDc,EAAYf,EAAMjjH,OAASkjH,EAAMljH,OAASkjH,EAAQD,EACtD,GAAIc,EAAS/jH,OAAS,GAAwB,EAAnBgkH,EAAUhkH,OAAa+jH,EAAS/jH,OACzD,OAAO,KAeT,SAASomH,EAAiBrC,EAAUC,EAAWlkH,GAE7C,IAGIumH,EAAiBC,EAAiBC,EAAkBC,EAHpDC,EAAO1C,EAASR,UAAUzjH,EAAGA,EAAImG,KAAKC,MAAM69G,EAAS/jH,OAAS,IAC9DkoB,GAAK,EACLw+F,EAAc,GAElB,OAAgD,IAAxCx+F,EAAI87F,EAAUjoH,QAAQ0qH,EAAMv+F,EAAI,IAAW,CACjD,IAAIy+F,EAAetD,EAAkBU,EAASR,UAAUzjH,GACnBkkH,EAAUT,UAAUr7F,IACrD6iF,EAAeyY,EAAkBO,EAASR,UAAU,EAAGzjH,GACtBkkH,EAAUT,UAAU,EAAGr7F,IACxDw+F,EAAY1mH,OAAS+qG,EAAe4b,IACtCD,EAAc1C,EAAUT,UAAUr7F,EAAI6iF,EAAc7iF,GAChD87F,EAAUT,UAAUr7F,EAAGA,EAAIy+F,GAC/BN,EAAkBtC,EAASR,UAAU,EAAGzjH,EAAIirG,GAC5Cub,EAAkBvC,EAASR,UAAUzjH,EAAI6mH,GACzCJ,EAAmBvC,EAAUT,UAAU,EAAGr7F,EAAI6iF,GAC9Cyb,EAAmBxC,EAAUT,UAAUr7F,EAAIy+F,IAG/C,OAAyB,EAArBD,EAAY1mH,QAAc+jH,EAAS/jH,OAC9B,CAACqmH,EAAiBC,EACjBC,EAAkBC,EAAkBE,GAErC,KAKX,IAKIzC,EAaAE,EAASC,EAASC,EAASC,EAlB3BsC,EAAMR,EAAiBrC,EAAUC,EACV/9G,KAAK2pD,KAAKm0D,EAAS/jH,OAAS,IAEnD6mH,EAAMT,EAAiBrC,EAAUC,EACV/9G,KAAK2pD,KAAKm0D,EAAS/jH,OAAS,IAEvD,IAAK4mH,IAAQC,EACX,OAAO,KAOP5C,EANU4C,EAEAD,GAILA,EAAI,GAAG5mH,OAAS6mH,EAAI,GAAG7mH,OAAS4mH,EAHhCC,EAFAD,EAUH3D,EAAMjjH,OAASkjH,EAAMljH,QACvBmkH,EAAUF,EAAG,GACbG,EAAUH,EAAG,GACbI,EAAUJ,EAAG,GACbK,EAAUL,EAAG,KAEbI,EAAUJ,EAAG,GACbK,EAAUL,EAAG,GACbE,EAAUF,EAAG,GACbG,EAAUH,EAAG,IAEf,IAAIM,EAAaN,EAAG,GACpB,MAAO,CAACE,EAASC,EAASC,EAASC,EAASC,GAS9C,SAASX,EAAkBF,GACzBA,EAAMnjH,KAAK,CAACwiH,EAAY,KACxB,IAKIK,EALA0D,EAAU,EACVC,EAAe,EACfC,EAAe,EACfC,EAAc,GACdC,EAAc,GAElB,MAAOJ,EAAUpD,EAAM1jH,OACrB,OAAQ0jH,EAAMoD,GAAS,IACrB,KAAKhE,EACHkE,IACAE,GAAexD,EAAMoD,GAAS,GAC9BA,IACA,MACF,KAAKjE,EACHkE,IACAE,GAAevD,EAAMoD,GAAS,GAC9BA,IACA,MACF,KAAK/D,EAECgE,EAAeC,EAAe,GACX,IAAjBD,GAAuC,IAAjBC,IAExB5D,EAAeC,EAAkB6D,EAAaD,GACzB,IAAjB7D,IACG0D,EAAUC,EAAeC,EAAgB,GAC1CtD,EAAMoD,EAAUC,EAAeC,EAAe,GAAG,IACjDjE,EACFW,EAAMoD,EAAUC,EAAeC,EAAe,GAAG,IAC7CE,EAAY3D,UAAU,EAAGH,IAE7BM,EAAMjjH,OAAO,EAAG,EAAG,CAACsiH,EACAmE,EAAY3D,UAAU,EAAGH,KAC7C0D,KAEFI,EAAcA,EAAY3D,UAAUH,GACpC6D,EAAcA,EAAY1D,UAAUH,IAGtCA,EAAeI,EAAkB0D,EAAaD,GACzB,IAAjB7D,IACFM,EAAMoD,GAAS,GAAKI,EAAY3D,UAAU2D,EAAYlnH,OAClDojH,GAAgBM,EAAMoD,GAAS,GACnCI,EAAcA,EAAY3D,UAAU,EAAG2D,EAAYlnH,OAC/CojH,GACJ6D,EAAcA,EAAY1D,UAAU,EAAG0D,EAAYjnH,OAC/CojH,KAIa,IAAjB2D,EACFrD,EAAMjjH,OAAOqmH,EAAUE,EACnBD,EAAeC,EAAc,CAAClE,EAAaoE,IACrB,IAAjBF,EACTtD,EAAMjjH,OAAOqmH,EAAUC,EACnBA,EAAeC,EAAc,CAACnE,EAAaoE,IAE/CvD,EAAMjjH,OAAOqmH,EAAUC,EAAeC,EAClCD,EAAeC,EAAc,CAACnE,EAAaoE,GAC3C,CAACnE,EAAaoE,IAEpBJ,EAAUA,EAAUC,EAAeC,GACxBD,EAAe,EAAI,IAAMC,EAAe,EAAI,GAAK,GACvC,IAAZF,GAAiBpD,EAAMoD,EAAU,GAAG,IAAM/D,GAEnDW,EAAMoD,EAAU,GAAG,IAAMpD,EAAMoD,GAAS,GACxCpD,EAAMjjH,OAAOqmH,EAAS,IAEtBA,IAEFE,EAAe,EACfD,EAAe,EACfE,EAAc,GACdC,EAAc,GACd,MAG6B,KAA/BxD,EAAMA,EAAM1jH,OAAS,GAAG,IAC1B0jH,EAAM92G,MAMR,IAAIq5D,GAAU,EACd6gD,EAAU,EAEV,MAAOA,EAAUpD,EAAM1jH,OAAS,EAC1B0jH,EAAMoD,EAAU,GAAG,IAAM/D,GACzBW,EAAMoD,EAAU,GAAG,IAAM/D,IAEvBW,EAAMoD,GAAS,GAAGvD,UAAUG,EAAMoD,GAAS,GAAG9mH,OAC9C0jH,EAAMoD,EAAU,GAAG,GAAG9mH,SAAW0jH,EAAMoD,EAAU,GAAG,IAEtDpD,EAAMoD,GAAS,GAAKpD,EAAMoD,EAAU,GAAG,GACnCpD,EAAMoD,GAAS,GAAGvD,UAAU,EAAGG,EAAMoD,GAAS,GAAG9mH,OACrB0jH,EAAMoD,EAAU,GAAG,GAAG9mH,QACtD0jH,EAAMoD,EAAU,GAAG,GAAKpD,EAAMoD,EAAU,GAAG,GAAKpD,EAAMoD,EAAU,GAAG,GACnEpD,EAAMjjH,OAAOqmH,EAAU,EAAG,GAC1B7gD,GAAU,GACDy9C,EAAMoD,GAAS,GAAGvD,UAAU,EAAGG,EAAMoD,EAAU,GAAG,GAAG9mH,SAC5D0jH,EAAMoD,EAAU,GAAG,KAErBpD,EAAMoD,EAAU,GAAG,IAAMpD,EAAMoD,EAAU,GAAG,GAC5CpD,EAAMoD,GAAS,GACXpD,EAAMoD,GAAS,GAAGvD,UAAUG,EAAMoD,EAAU,GAAG,GAAG9mH,QAClD0jH,EAAMoD,EAAU,GAAG,GACvBpD,EAAMjjH,OAAOqmH,EAAU,EAAG,GAC1B7gD,GAAU,IAGd6gD,IAGE7gD,GACF29C,EAAkBF,GAKtB,IAAI1gE,EAAOggE,EAmBX,SAASmE,EAAuBzD,EAAOP,GACrC,GAAmB,IAAfA,EACF,MAAO,CAACJ,EAAYW,GAEtB,IAAK,IAAI0D,EAAc,EAAGtnH,EAAI,EAAGA,EAAI4jH,EAAM1jH,OAAQF,IAAK,CACtD,IAAI2a,EAAIipG,EAAM5jH,GACd,GAAI2a,EAAE,KAAOooG,GAAepoG,EAAE,KAAOsoG,EAAY,CAC/C,IAAIsE,EAAWD,EAAc3sG,EAAE,GAAGza,OAClC,GAAImjH,IAAekE,EACjB,MAAO,CAACvnH,EAAI,EAAG4jH,GACV,GAAIP,EAAakE,EAAU,CAEhC3D,EAAQA,EAAMp+G,QAEd,IAAIgiH,EAAYnE,EAAaiE,EACzBG,EAAS,CAAC9sG,EAAE,GAAIA,EAAE,GAAGnV,MAAM,EAAGgiH,IAC9BE,EAAU,CAAC/sG,EAAE,GAAIA,EAAE,GAAGnV,MAAMgiH,IAEhC,OADA5D,EAAMjjH,OAAOX,EAAG,EAAGynH,EAAQC,GACpB,CAAC1nH,EAAI,EAAG4jH,GAEf0D,EAAcC,GAIpB,MAAM,IAAItkH,MAAM,gCAqBlB,SAAS8gH,EAAYH,EAAOP,GAC1B,IAAIsE,EAAON,EAAsBzD,EAAOP,GACpCuE,EAASD,EAAK,GACdE,EAAiBF,EAAK,GACtBhtG,EAAIitG,EAAOC,GACXC,EAASF,EAAOC,EAAiB,GAErC,GAAS,MAALltG,EAGF,OAAOipG,EACF,GAAIjpG,EAAE,KAAOsoG,EAGlB,OAAOW,EAEP,GAAc,MAAVkE,GAAkBntG,EAAE,GAAKmtG,EAAO,KAAOA,EAAO,GAAKntG,EAAE,GAIvD,OADAitG,EAAOjnH,OAAOknH,EAAgB,EAAGC,EAAQntG,GAClCotG,EAAaH,EAAQC,EAAgB,GACvC,GAAc,MAAVC,GAA8C,IAA5BA,EAAO,GAAG7rH,QAAQ0e,EAAE,IAAW,CAK1DitG,EAAOjnH,OAAOknH,EAAgB,EAAG,CAACC,EAAO,GAAIntG,EAAE,IAAK,CAAC,EAAGA,EAAE,KAC1D,IAAIykB,EAAS0oF,EAAO,GAAGtiH,MAAMmV,EAAE,GAAGza,QAIlC,OAHIk/B,EAAOl/B,OAAS,GAClB0nH,EAAOjnH,OAAOknH,EAAiB,EAAG,EAAG,CAACC,EAAO,GAAI1oF,IAE5C2oF,EAAaH,EAAQC,EAAgB,GAG5C,OAAOjE,EAab,SAASI,EAAWJ,GAQlB,IAPA,IAAIoE,GAAU,EACVC,EAAuB,SAASj6G,GAClC,OAAOA,EAAIgB,WAAW,IAAM,OAAUhB,EAAIgB,WAAW,IAAM,OAEzDk5G,EAAuB,SAASl6G,GAClC,OAAOA,EAAIgB,WAAWhB,EAAI9N,OAAO,IAAM,OAAU8N,EAAIgB,WAAWhB,EAAI9N,OAAO,IAAM,OAE1EF,EAAI,EAAGA,EAAI4jH,EAAM1jH,OAAQF,GAAK,EACjC4jH,EAAM5jH,EAAE,GAAG,KAAOijH,GAAciF,EAAqBtE,EAAM5jH,EAAE,GAAG,KAChE4jH,EAAM5jH,EAAE,GAAG,KAAO+iH,GAAekF,EAAqBrE,EAAM5jH,EAAE,GAAG,KACjE4jH,EAAM5jH,GAAG,KAAOgjH,GAAeiF,EAAqBrE,EAAM5jH,GAAG,MAC/DgoH,GAAU,EAEVpE,EAAM5jH,EAAE,GAAG,GAAK4jH,EAAM5jH,EAAE,GAAG,GAAGwF,OAAO,GAAKo+G,EAAM5jH,EAAE,GAAG,GACrD4jH,EAAM5jH,GAAG,GAAK4jH,EAAM5jH,EAAE,GAAG,GAAGwF,OAAO,GAAKo+G,EAAM5jH,GAAG,GAEjD4jH,EAAM5jH,EAAE,GAAG,GAAK4jH,EAAM5jH,EAAE,GAAG,GAAGwF,MAAM,GAAI,IAG5C,IAAKwiH,EACH,OAAOpE,EAET,IAAIuE,EAAc,GAClB,IAASnoH,EAAI,EAAGA,EAAI4jH,EAAM1jH,OAAQF,GAAK,EACjC4jH,EAAM5jH,GAAG,GAAGE,OAAS,GACvBioH,EAAY1nH,KAAKmjH,EAAM5jH,IAG3B,OAAOmoH,EAYT,SAASJ,EAAcnE,EAAOjzG,EAAOzQ,GAEnC,IAAK,IAAIF,EAAI2Q,EAAQzQ,EAAS,EAAGF,GAAK,GAAKA,GAAK2Q,EAAQ,EAAG3Q,IACzD,GAAIA,EAAI,EAAI4jH,EAAM1jH,OAAQ,CACxB,IAAIkoH,EAASxE,EAAM5jH,GACfqoH,EAAUzE,EAAM5jH,EAAE,GAClBooH,EAAO,KAAOC,EAAQ,IACxBzE,EAAMjjH,OAAOX,EAAG,EAAG,CAACooH,EAAO,GAAIA,EAAO,GAAKC,EAAQ,KAIzD,OAAOzE,EAlKT1gE,EAAK60C,OAASirB,EACd9/D,EAAK80C,OAAS+qB,EACd7/D,EAAK+0C,MAAQgrB,EAEb5qH,EAAOD,QAAU8qD,GAoKX,SAAU7qD,EAAQD,GAMxB,SAASkwH,EAAMrkH,GACb,IAAI8B,EAAO,GACX,IAAK,IAAI3I,KAAO6G,EAAK8B,EAAKtF,KAAKrD,GAC/B,OAAO2I,EAPT3N,EAAUC,EAAOD,QAAiC,oBAAhBsL,OAAOqC,KACrCrC,OAAOqC,KAAOuiH,EAElBlwH,EAAQkwH,KAAOA,GAUT,SAAUjwH,EAAQD,GAExB,IAAImwH,EAEI,sBAFqB,WAC3B,OAAO7kH,OAAO/E,UAAUgI,SAASpP,KAAKmR,WADX,GAO7B,SAAS8/G,EAAUvxF,GACjB,MAAiD,sBAA1CvzB,OAAO/E,UAAUgI,SAASpP,KAAK0/B,GAIxC,SAASwxF,EAAYxxF,GACnB,OAAOA,GACY,iBAAVA,GACiB,iBAAjBA,EAAO/2B,QACdwD,OAAO/E,UAAU+P,eAAenX,KAAK0/B,EAAQ,YAC5CvzB,OAAO/E,UAAUqsF,qBAAqBzzF,KAAK0/B,EAAQ,YACpD,EAdJ7+B,EAAUC,EAAOD,QAAUmwH,EAAyBC,EAAYC,EAEhErwH,EAAQowH,UAAYA,EAKpBpwH,EAAQqwH,YAAcA,GAahB,SAAUpwH,EAAQD,GAExB,aAEA,IAAI6b,EAAMvQ,OAAO/E,UAAU+P,eACvBsrB,EAAS,IASb,SAAS0uF,KA4BT,SAASC,EAAGpkH,EAAItN,EAASqrG,GACvBprG,KAAKqN,GAAKA,EACVrN,KAAKD,QAAUA,EACfC,KAAKorG,KAAOA,IAAQ,EAUtB,SAASsmB,IACP1xH,KAAK2xH,QAAU,IAAIH,EACnBxxH,KAAK4xH,aAAe,EAlClBplH,OAAO7E,SACT6pH,EAAO/pH,UAAY+E,OAAO7E,OAAO,OAM5B,IAAI6pH,GAASr6B,YAAWr0D,GAAS,IAqCxC4uF,EAAajqH,UAAUoqH,WAAa,WAClC,IACI78F,EACAnrB,EAFAynB,EAAQ,GAIZ,GAA0B,IAAtBtxB,KAAK4xH,aAAoB,OAAOtgG,EAEpC,IAAKznB,KAASmrB,EAASh1B,KAAK2xH,QACtB50G,EAAI1c,KAAK20B,EAAQnrB,IAAOynB,EAAM/nB,KAAKu5B,EAASj5B,EAAKyE,MAAM,GAAKzE,GAGlE,OAAI2C,OAAOupF,sBACFzkE,EAAMrwB,OAAOuL,OAAOupF,sBAAsB/gE,IAG5C1D,GAWTogG,EAAajqH,UAAUk4B,UAAY,SAAmB6R,EAAOsgF,GAC3D,IAAIjpF,EAAM/F,EAASA,EAAS0O,EAAQA,EAChCugF,EAAY/xH,KAAK2xH,QAAQ9oF,GAE7B,GAAIipF,EAAQ,QAASC,EACrB,IAAKA,EAAW,MAAO,GACvB,GAAIA,EAAU1kH,GAAI,MAAO,CAAC0kH,EAAU1kH,IAEpC,IAAK,IAAIvE,EAAI,EAAGC,EAAIgpH,EAAU/oH,OAAQgpH,EAAK,IAAI5mH,MAAMrC,GAAID,EAAIC,EAAGD,IAC9DkpH,EAAGlpH,GAAKipH,EAAUjpH,GAAGuE,GAGvB,OAAO2kH,GAUTN,EAAajqH,UAAUylG,KAAO,SAAc17D,EAAOr2B,EAAI82G,EAAIC,EAAIC,EAAIC,GACjE,IAAIvpF,EAAM/F,EAASA,EAAS0O,EAAQA,EAEpC,IAAKxxC,KAAK2xH,QAAQ9oF,GAAM,OAAO,EAE/B,IAEIt3B,EACAzI,EAHA62B,EAAY3/B,KAAK2xH,QAAQ9oF,GACzB7tB,EAAMxJ,UAAUxI,OAIpB,GAAI22B,EAAUtyB,GAAI,CAGhB,OAFIsyB,EAAUyrE,MAAMprG,KAAK8zD,eAAetiB,EAAO7R,EAAUtyB,QAAIvH,GAAW,GAEhEkV,GACN,KAAK,EAAG,OAAO2kB,EAAUtyB,GAAGhN,KAAKs/B,EAAU5/B,UAAU,EACrD,KAAK,EAAG,OAAO4/B,EAAUtyB,GAAGhN,KAAKs/B,EAAU5/B,QAASob,IAAK,EACzD,KAAK,EAAG,OAAOwkB,EAAUtyB,GAAGhN,KAAKs/B,EAAU5/B,QAASob,EAAI82G,IAAK,EAC7D,KAAK,EAAG,OAAOtyF,EAAUtyB,GAAGhN,KAAKs/B,EAAU5/B,QAASob,EAAI82G,EAAIC,IAAK,EACjE,KAAK,EAAG,OAAOvyF,EAAUtyB,GAAGhN,KAAKs/B,EAAU5/B,QAASob,EAAI82G,EAAIC,EAAIC,IAAK,EACrE,KAAK,EAAG,OAAOxyF,EAAUtyB,GAAGhN,KAAKs/B,EAAU5/B,QAASob,EAAI82G,EAAIC,EAAIC,EAAIC,IAAK,EAG3E,IAAKtpH,EAAI,EAAGyI,EAAO,IAAInG,MAAM4P,EAAK,GAAIlS,EAAIkS,EAAKlS,IAC7CyI,EAAKzI,EAAI,GAAK0I,UAAU1I,GAG1B62B,EAAUtyB,GAAGhC,MAAMs0B,EAAU5/B,QAASwR,OACjC,CACL,IACI2f,EADAloB,EAAS22B,EAAU32B,OAGvB,IAAKF,EAAI,EAAGA,EAAIE,EAAQF,IAGtB,OAFI62B,EAAU72B,GAAGsiG,MAAMprG,KAAK8zD,eAAetiB,EAAO7R,EAAU72B,GAAGuE,QAAIvH,GAAW,GAEtEkV,GACN,KAAK,EAAG2kB,EAAU72B,GAAGuE,GAAGhN,KAAKs/B,EAAU72B,GAAG/I,SAAU,MACpD,KAAK,EAAG4/B,EAAU72B,GAAGuE,GAAGhN,KAAKs/B,EAAU72B,GAAG/I,QAASob,GAAK,MACxD,KAAK,EAAGwkB,EAAU72B,GAAGuE,GAAGhN,KAAKs/B,EAAU72B,GAAG/I,QAASob,EAAI82G,GAAK,MAC5D,KAAK,EAAGtyF,EAAU72B,GAAGuE,GAAGhN,KAAKs/B,EAAU72B,GAAG/I,QAASob,EAAI82G,EAAIC,GAAK,MAChE,QACE,IAAK3gH,EAAM,IAAK2f,EAAI,EAAG3f,EAAO,IAAInG,MAAM4P,EAAK,GAAIkW,EAAIlW,EAAKkW,IACxD3f,EAAK2f,EAAI,GAAK1f,UAAU0f,GAG1ByO,EAAU72B,GAAGuE,GAAGhC,MAAMs0B,EAAU72B,GAAG/I,QAASwR,IAKpD,OAAO,GAYTmgH,EAAajqH,UAAU8/F,GAAK,SAAY/1D,EAAOnkC,EAAItN,GACjD,IAAIuJ,EAAW,IAAImoH,EAAGpkH,EAAItN,GAAWC,MACjC6oC,EAAM/F,EAASA,EAAS0O,EAAQA,EAMpC,OAJKxxC,KAAK2xH,QAAQ9oF,GACR7oC,KAAK2xH,QAAQ9oF,GAAKx7B,GACvBrN,KAAK2xH,QAAQ9oF,GAAO,CAAC7oC,KAAK2xH,QAAQ9oF,GAAMv/B,GADbtJ,KAAK2xH,QAAQ9oF,GAAKt/B,KAAKD,IAD/BtJ,KAAK2xH,QAAQ9oF,GAAOv/B,EAAUtJ,KAAK4xH,gBAIpD5xH,MAYT0xH,EAAajqH,UAAU2jG,KAAO,SAAc55D,EAAOnkC,EAAItN,GACrD,IAAIuJ,EAAW,IAAImoH,EAAGpkH,EAAItN,GAAWC,MAAM,GACvC6oC,EAAM/F,EAASA,EAAS0O,EAAQA,EAMpC,OAJKxxC,KAAK2xH,QAAQ9oF,GACR7oC,KAAK2xH,QAAQ9oF,GAAKx7B,GACvBrN,KAAK2xH,QAAQ9oF,GAAO,CAAC7oC,KAAK2xH,QAAQ9oF,GAAMv/B,GADbtJ,KAAK2xH,QAAQ9oF,GAAKt/B,KAAKD,IAD/BtJ,KAAK2xH,QAAQ9oF,GAAOv/B,EAAUtJ,KAAK4xH,gBAIpD5xH,MAaT0xH,EAAajqH,UAAUqsD,eAAiB,SAAwBtiB,EAAOnkC,EAAItN,EAASqrG,GAClF,IAAIviE,EAAM/F,EAASA,EAAS0O,EAAQA,EAEpC,IAAKxxC,KAAK2xH,QAAQ9oF,GAAM,OAAO7oC,KAC/B,IAAKqN,EAGH,OAF4B,MAAtBrN,KAAK4xH,aAAoB5xH,KAAK2xH,QAAU,IAAIH,SACtCxxH,KAAK2xH,QAAQ9oF,GAClB7oC,KAGT,IAAI2/B,EAAY3/B,KAAK2xH,QAAQ9oF,GAE7B,GAAIlJ,EAAUtyB,GAEPsyB,EAAUtyB,KAAOA,GACf+9F,IAAQzrE,EAAUyrE,MAClBrrG,GAAW4/B,EAAU5/B,UAAYA,IAEV,MAAtBC,KAAK4xH,aAAoB5xH,KAAK2xH,QAAU,IAAIH,SACtCxxH,KAAK2xH,QAAQ9oF,QAEtB,CACL,IAAK,IAAI//B,EAAI,EAAGksB,EAAS,GAAIhsB,EAAS22B,EAAU32B,OAAQF,EAAIE,EAAQF,KAE7D62B,EAAU72B,GAAGuE,KAAOA,GACnB+9F,IAASzrE,EAAU72B,GAAGsiG,MACtBrrG,GAAW4/B,EAAU72B,GAAG/I,UAAYA,IAExCi1B,EAAOzrB,KAAKo2B,EAAU72B,IAOtBksB,EAAOhsB,OAAQhJ,KAAK2xH,QAAQ9oF,GAAyB,IAAlB7T,EAAOhsB,OAAegsB,EAAO,GAAKA,EACxC,MAAtBh1B,KAAK4xH,aAAoB5xH,KAAK2xH,QAAU,IAAIH,SAC3CxxH,KAAK2xH,QAAQ9oF,GAG3B,OAAO7oC,MAUT0xH,EAAajqH,UAAU4qH,mBAAqB,SAA4B7gF,GACtE,IAAI3I,EAaJ,OAXI2I,GACF3I,EAAM/F,EAASA,EAAS0O,EAAQA,EAC5BxxC,KAAK2xH,QAAQ9oF,KACa,MAAtB7oC,KAAK4xH,aAAoB5xH,KAAK2xH,QAAU,IAAIH,SACtCxxH,KAAK2xH,QAAQ9oF,MAG3B7oC,KAAK2xH,QAAU,IAAIH,EACnBxxH,KAAK4xH,aAAe,GAGf5xH,MAMT0xH,EAAajqH,UAAU0jG,IAAMumB,EAAajqH,UAAUqsD,eACpD49D,EAAajqH,UAAUosD,YAAc69D,EAAajqH,UAAU8/F,GAK5DmqB,EAAajqH,UAAU6qH,gBAAkB,WACvC,OAAOtyH,MAMT0xH,EAAaa,SAAWzvF,EAKxB4uF,EAAaA,aAAeA,EAKxB,qBAAuBvwH,IACzBA,EAAOD,QAAUwwH,IAMb,SAAUvwH,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQsxH,UAAYtxH,EAAQuxH,aAAevxH,EAAQwxH,aAAexxH,EAAQyxH,UAAYzxH,EAAQ0xH,gBAAkB1xH,EAAQ66F,aAAUj2F,EAElI,IAAIk/F,EAA4B,oBAAXtkE,QAAoD,kBAApBA,OAAOs4D,SAAwB,SAAUjsF,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,oBAAX2zB,QAAyB3zB,EAAIiK,cAAgB0pB,QAAU3zB,IAAQ2zB,OAAOj5B,UAAY,gBAAkBsF,GAElQk4F,EAAiB,WAAc,SAASC,EAAcnwF,EAAKjM,GAAK,IAAIq8F,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKx/F,EAAW,IAAM,IAAK,IAAiCy/F,EAA7BnH,EAAKrpF,EAAI2rB,OAAOs4D,cAAmBoM,GAAMG,EAAKnH,EAAGv5D,QAAQpiC,MAAO2iG,GAAK,EAA6B,GAArBD,EAAK57F,KAAKg8F,EAAGnhG,OAAY0E,GAAKq8F,EAAKn8F,SAAWF,EAAG,MAAW,MAAOzE,GAAOghG,GAAK,EAAMC,EAAKjhG,EAAO,QAAU,KAAW+gG,GAAMhH,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIiH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUpwF,EAAKjM,GAAK,GAAIsC,MAAMiD,QAAQ0G,GAAQ,OAAOA,EAAY,GAAI2rB,OAAOs4D,YAAYxsF,OAAOuI,GAAQ,OAAOmwF,EAAcnwF,EAAKjM,GAAa,MAAM,IAAIN,UAAU,yDAAjkB,GAEjB05F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfI,EAAW,EAAoB,GAE/BswB,EAAWrwB,EAAuBD,GAElCE,EAAc,EAAoB,GAElCC,EAAeF,EAAuBC,GAEtCE,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErC8Z,EAAS,EAAoB,GAE7BC,EAAUla,EAAuBia,GAEjCzW,EAAU,EAAoB,IAE9BC,EAAWzD,EAAuBwD,GAElCJ,EAAU,EAAoB,GAE9BC,EAAWrD,EAAuBoD,GAElCktB,EAAS,EAAoB,IAE7BC,EAAc,EAAoB,IAElC9gB,EAAQ,EAAoB,IAE5BC,EAAS1P,EAAuByP,GAEhCiU,EAAS,EAAoB,IAE7B8M,EAAa,EAAoB,IAEjCC,EAAQ,EAAoB,IAE5B3yC,EAAQ,EAAoB,IAEhC,SAASkiB,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASq5F,EAAgBr5F,EAAK7G,EAAK9B,GAAiK,OAApJ8B,KAAO6G,EAAOP,OAAOE,eAAeK,EAAK7G,EAAK,CAAE9B,MAAOA,EAAO+yB,YAAY,EAAMyI,cAAc,EAAM1I,UAAU,IAAkBnqB,EAAI7G,GAAO9B,EAAgB2I,EAE3M,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI6C,GAAQ,EAAIJ,EAASlK,SAAS,mBAE9Bm3B,EAAU,eAEVC,EAAmB,CAAC,CAAC31B,KAAKC,UAAW+0B,GAAY,CAACh1B,KAAKC,UAAWi1B,GAAe,CAAC,KAAMU,GAAa,CAAC51B,KAAK61B,aAAcX,GAAe,CAACl1B,KAAK61B,aAAcV,GAAY,CAACn1B,KAAK61B,aAAcZ,GAAe,CAACj1B,KAAK61B,aAAcT,GAAkB,CAACp1B,KAAK61B,aAAcC,GAAc,CAAC,KAAMC,GAAc,CAAC,IAAKC,EAAWtsH,KAAKssH,EAAY,SAAU,CAAC,IAAKA,EAAWtsH,KAAKssH,EAAY,WAAY,CAAC,QAASC,IAE5YC,EAAwB,CAACZ,EAAO/M,eAAgBiN,EAAW3M,oBAAoB30E,QAAO,SAAUqnE,EAAMiM,GAExG,OADAjM,EAAKiM,EAAKxmB,SAAWwmB,EACdjM,IACN,IAEC4a,EAAoB,CAACb,EAAOjN,WAAYkN,EAAY/M,gBAAiBE,EAAOnE,WAAYiR,EAAW7M,eAAgB8M,EAAM1M,UAAWjmC,EAAMmmC,WAAW/0E,QAAO,SAAUqnE,EAAMiM,GAE9K,OADAjM,EAAKiM,EAAKxmB,SAAWwmB,EACdjM,IACN,IAEC6a,EAAY,SAAUhX,GAGxB,SAASgX,EAAU1kB,EAAOvvG,GACxBwjG,EAAgBnjG,KAAM4zH,GAEtB,IAAI12B,EAAQkG,EAA2BpjG,MAAO4zH,EAAUz8B,WAAa3qF,OAAO2K,eAAey8G,IAAYvzH,KAAKL,KAAMkvG,EAAOvvG,IAezH,OAbAu9F,EAAMgS,MAAMh7E,KAAK3tB,iBAAiB,QAAS22F,EAAM22B,QAAQ3sH,KAAKg2F,IAC9DA,EAAM9zD,UAAY8zD,EAAMgS,MAAMvI,aAAa,gBAC3CzJ,EAAM9zD,UAAUx1B,aAAa,mBAAmB,GAChDspF,EAAM9zD,UAAUx1B,aAAa,YAAa,GAC1CspF,EAAM42B,SAAW,GACjBX,EAAiBlyH,OAAOi8F,EAAMv9F,QAAQm0H,UAAU9tH,SAAQ,SAAU6oG,GAChE,IAAIwP,EAAQpZ,EAAe4J,EAAM,GAC7BklB,EAAW1V,EAAM,GACjB2V,EAAU3V,EAAM,IAEf1+G,EAAQs0H,aAAeD,IAAYvB,IACxCv1B,EAAMg3B,WAAWH,EAAUC,MAEtB92B,EAsGT,OA1HAoG,EAAUswB,EAAWhX,GAuBrB1a,EAAa0xB,EAAW,CAAC,CACvB1tH,IAAK,aACL9B,MAAO,SAAoB2vH,EAAUC,GACnCh0H,KAAK8zH,SAASvqH,KAAK,CAACwqH,EAAUC,MAE/B,CACD9tH,IAAK,UACL9B,MAAO,SAAiBmiG,GACtB,GAAoB,kBAATA,EAET,OADAvmG,KAAKopC,UAAUo9D,UAAYD,EAAK70F,QAAQ,eAAgB,MACjD1R,KAAKioG,UAEd,IAAIr8C,EAAU5rD,KAAKkvG,MAAM5E,UAAUtqG,KAAKkvG,MAAMjI,UAAU+N,WAAWxrG,OACnE,GAAIoiD,EAAQsmD,EAAOnW,QAAQuC,UAAW,CACpC,IAAI3iE,EAAO37B,KAAKopC,UAAU+qF,UAE1B,OADAn0H,KAAKopC,UAAUo9D,UAAY,IACpB,IAAI9D,EAAa3G,SAAUkD,OAAOtjE,EAAMyqE,EAAgB,GAAI8L,EAAOnW,QAAQuC,SAAU1yC,EAAQsmD,EAAOnW,QAAQuC,YAGrH,IAAI81B,EAAmBp0H,KAAKq0H,kBACxBC,EAAoBrvB,EAAemvB,EAAkB,GACrDG,EAAkBD,EAAkB,GACpCE,EAAeF,EAAkB,GAEjCtuF,EAAQyuF,EAASz0H,KAAKopC,UAAWmrF,EAAiBC,GAOtD,OALIE,EAAc1uF,EAAO,OAAuD,MAA9CA,EAAMg5D,IAAIh5D,EAAMg5D,IAAIh2F,OAAS,GAAGm0F,aAChEn3D,EAAQA,EAAM+5D,SAAQ,IAAI2C,EAAa3G,SAAUoD,OAAOn5D,EAAMh9B,SAAW,GAAGk6B,OAAO,KAErFmjE,EAAMqI,IAAI,UAAW1uG,KAAKopC,UAAUo9D,UAAWxgE,GAC/ChmC,KAAKopC,UAAUo9D,UAAY,GACpBxgE,IAER,CACD9/B,IAAK,uBACL9B,MAAO,SAA8BoF,EAAO+8F,GAC1C,IAAI78F,EAAS8H,UAAUxI,OAAS,QAAsBlD,IAAjB0L,UAAU,GAAmBA,UAAU,GAAKkrG,EAAQ3gB,QAAQ//E,QAAQotF,IAEzG,GAAqB,kBAAV5/F,EACTxJ,KAAKkvG,MAAMhH,YAAYloG,KAAKioG,QAAQz+F,GAAQ+8F,GAC5CvmG,KAAKkvG,MAAM1F,aAAa,EAAGkT,EAAQ3gB,QAAQ//E,QAAQytF,YAC9C,CACL,IAAIkrB,EAAQ30H,KAAKioG,QAAQ1B,GACzBvmG,KAAKkvG,MAAM+R,gBAAe,IAAIve,EAAa3G,SAAUoD,OAAO31F,GAAOvI,OAAO0zH,GAAQjrH,GAClF1J,KAAKkvG,MAAM1F,aAAahgG,EAAQmrH,EAAM3rH,SAAU0zG,EAAQ3gB,QAAQ//E,QAAQytF,WAG3E,CACDvjG,IAAK,UACL9B,MAAO,SAAiB8L,GACtB,IAAIi0F,EAASnkG,KAEb,IAAIkQ,EAAE0tG,kBAAqB59G,KAAKkvG,MAAMrC,YAAtC,CACA,IAAIhvF,EAAQ7d,KAAKkvG,MAAM7F,eACnBrjE,GAAQ,IAAI08D,EAAa3G,SAAUoD,OAAOthF,EAAMrU,OAChDw/F,EAAYhpG,KAAKkvG,MAAMtI,mBAAmBoC,UAC9ChpG,KAAKopC,UAAU6/D,QACfjpG,KAAKkvG,MAAMjI,UAAUn0D,OAAO4pE,EAAQ3gB,QAAQ//E,QAAQytF,QACpDzkG,YAAW,WACTghC,EAAQA,EAAM/kC,OAAOkjG,EAAO8D,WAAW/kE,OAAOrlB,EAAM7U,QACpDm7F,EAAO+K,MAAM+R,eAAej7E,EAAO02E,EAAQ3gB,QAAQ//E,QAAQiwF,MAE3D9H,EAAO+K,MAAM1F,aAAaxjE,EAAMh9B,SAAW6U,EAAM7U,OAAQ0zG,EAAQ3gB,QAAQ//E,QAAQytF,QACjFtF,EAAO+K,MAAMtI,mBAAmBoC,UAAYA,EAC5C7E,EAAO+K,MAAMjG,UACZ,MAEJ,CACD/iG,IAAK,kBACL9B,MAAO,WACL,IAAIukG,EAAS3oG,KAETu0H,EAAkB,GAClBC,EAAe,GAsBnB,OArBAx0H,KAAK8zH,SAAS9tH,SAAQ,SAAU4uH,GAC9B,IAAIC,EAAQ5vB,EAAe2vB,EAAM,GAC7Bb,EAAWc,EAAM,GACjBb,EAAUa,EAAM,GAEpB,OAAQd,GACN,KAAKv2B,KAAKC,UACR+2B,EAAajrH,KAAKyqH,GAClB,MACF,KAAKx2B,KAAK61B,aACRkB,EAAgBhrH,KAAKyqH,GACrB,MACF,QACE,GAAGhuH,QAAQ3F,KAAKsoG,EAAOv/D,UAAUilE,iBAAiB0lB,IAAW,SAAU//F,GAErEA,EAAKk/F,GAAWl/F,EAAKk/F,IAAY,GACjCl/F,EAAKk/F,GAAS3pH,KAAKyqH,MAErB,UAGC,CAACO,EAAiBC,OAItBZ,EA3HO,CA4Hd/tB,EAAS9J,SAOX,SAAS+4B,EAAY9uF,EAAO2F,EAAQvnC,GAClC,MAAwE,YAAjD,qBAAXunC,EAAyB,YAAcq5D,EAAQr5D,IAClDn/B,OAAOqC,KAAK88B,GAAQ+F,QAAO,SAAU1L,EAAO9/B,GACjD,OAAO4uH,EAAY9uF,EAAO9/B,EAAKylC,EAAOzlC,MACrC8/B,GAEIA,EAAM0L,QAAO,SAAU1L,EAAO44D,GACnC,OAAIA,EAAGzB,YAAcyB,EAAGzB,WAAWxxD,GAC1B3F,EAAMz8B,KAAKq1F,GAEX54D,EAAMi5D,OAAOL,EAAGK,QAAQ,EAAI4zB,EAAS92B,SAAS,GAAIqK,EAAgB,GAAIz6D,EAAQvnC,GAAQw6F,EAAGzB,eAEjG,IAAIuF,EAAa3G,SAIxB,SAASg5B,EAAa/gG,GACpB,GAAIA,EAAKghG,WAAax3B,KAAK61B,aAAc,MAAO,GAChD,IAAIH,EAAU,sBACd,OAAOl/F,EAAKk/F,KAAal/F,EAAKk/F,GAAW9+G,OAAOuzB,iBAAiB3T,IAGnE,SAAS0gG,EAAc1uF,EAAOrK,GAE5B,IADA,IAAIs5F,EAAU,GACLnsH,EAAIk9B,EAAMg5D,IAAIh2F,OAAS,EAAGF,GAAK,GAAKmsH,EAAQjsH,OAAS2yB,EAAK3yB,SAAUF,EAAG,CAC9E,IAAI81F,EAAK54D,EAAMg5D,IAAIl2F,GACnB,GAAyB,kBAAd81F,EAAGK,OAAqB,MACnCg2B,EAAUr2B,EAAGK,OAASg2B,EAExB,OAAOA,EAAQ3mH,OAAO,EAAIqtB,EAAK3yB,UAAY2yB,EAG7C,SAASmgF,EAAO9nF,GACd,GAA+B,IAA3BA,EAAKqjF,WAAWruG,OAAc,OAAO,EACzC,IAAImsB,EAAQ4/F,EAAa/gG,GACzB,MAAO,CAAC,QAAS,aAAajvB,QAAQowB,EAAMg2B,UAAY,EAG1D,SAASspE,EAASzgG,EAAMugG,EAAiBC,GAEvC,OAAIxgG,EAAKghG,WAAahhG,EAAKypE,UAClB+2B,EAAa9iF,QAAO,SAAU1L,EAAOguF,GAC1C,OAAOA,EAAQhgG,EAAMgS,KACpB,IAAI08D,EAAa3G,SACX/nE,EAAKghG,WAAahhG,EAAKq/F,aACzB,GAAG3hF,OAAOrxC,KAAK2zB,EAAKqjF,YAAc,IAAI,SAAUrxE,EAAOy/E,GAC5D,IAAIyP,EAAgBT,EAAShP,EAAW8O,EAAiBC,GASzD,OARI/O,EAAUuP,WAAahhG,EAAKq/F,eAC9B6B,EAAgBX,EAAgB7iF,QAAO,SAAUwjF,EAAelB,GAC9D,OAAOA,EAAQvO,EAAWyP,KACzBA,GACHA,GAAiBzP,EAAUyN,IAAY,IAAIxhF,QAAO,SAAUwjF,EAAelB,GACzE,OAAOA,EAAQvO,EAAWyP,KACzBA,IAEElvF,EAAM/kC,OAAOi0H,KACnB,IAAIxyB,EAAa3G,SAEb,IAAI2G,EAAa3G,QAI5B,SAASy3B,EAAW7nF,EAAQ3X,EAAMgS,GAChC,OAAO8uF,EAAY9uF,EAAO2F,GAAQ,GAGpC,SAASinF,EAAgB5+F,EAAMgS,GAC7B,IAAIm3D,EAAayF,EAAY7G,QAAQQ,WAAWC,UAAU3tF,KAAKmlB,GAC3DopE,EAAUwF,EAAY7G,QAAQQ,WAAWE,MAAM5tF,KAAKmlB,GACpDiU,EAAS26D,EAAY7G,QAAQQ,WAAWG,MAAM7tF,KAAKmlB,GACnD43B,EAAU,GAoBd,OAnBAuxC,EAAWl8F,OAAOm8F,GAASn8F,OAAOgnC,GAAQjiC,SAAQ,SAAU6D,GAC1D,IAAIm7G,EAAOpiB,EAAY7G,QAAQF,MAAMhyF,EAAM+4F,EAAY7G,QAAQJ,MAAMyU,WACzD,MAAR4U,IACFp5D,EAAQo5D,EAAKzmB,UAAYymB,EAAK5gH,MAAM4vB,GAChC43B,EAAQo5D,EAAKzmB,aAEnBymB,EAAO0O,EAAsB7pH,GACjB,MAARm7G,GAAiBA,EAAKzmB,WAAa10F,GAAQm7G,EAAKxmB,UAAY30F,IAC9D+hD,EAAQo5D,EAAKzmB,UAAYymB,EAAK5gH,MAAM4vB,SAASluB,GAE/Ck/G,EAAO2O,EAAkB9pH,GACb,MAARm7G,GAAiBA,EAAKzmB,WAAa10F,GAAQm7G,EAAKxmB,UAAY30F,IAC9Dm7G,EAAO2O,EAAkB9pH,GACzB+hD,EAAQo5D,EAAKzmB,UAAYymB,EAAK5gH,MAAM4vB,SAASluB,OAG7C0G,OAAOqC,KAAK+8C,GAAS5iD,OAAS,IAChCg9B,EAAQ8uF,EAAY9uF,EAAO4lB,IAEtB5lB,EAGT,SAAS2sF,EAAU3+F,EAAMgS,GACvB,IAAInzB,EAAQ+vF,EAAY7G,QAAQF,MAAM7nE,GACtC,GAAa,MAATnhB,EAAe,OAAOmzB,EAC1B,GAAInzB,EAAMpL,qBAAqBm7F,EAAY7G,QAAQG,MAAO,CACxD,IAAI0O,EAAQ,GACRxmG,EAAQyO,EAAMzO,MAAM4vB,GACX,MAAT5vB,IACFwmG,EAAM/3F,EAAMyrF,UAAYl6F,EACxB4hC,GAAQ,IAAI08D,EAAa3G,SAAUkD,OAAO2L,EAAO/3F,EAAM+4C,QAAQ53B,SAE/B,oBAAlBnhB,EAAM+4C,UACtB5lB,EAAQ8uF,EAAY9uF,EAAOnzB,EAAMyrF,SAAUzrF,EAAM+4C,QAAQ53B,KAE3D,OAAOgS,EAGT,SAASotF,EAAWp/F,EAAMgS,GAIxB,OAHK0uF,EAAc1uF,EAAO,OACxBA,EAAMi5D,OAAO,MAERj5D,EAGT,SAASytF,IACP,OAAO,IAAI/wB,EAAa3G,QAG1B,SAASw3B,EAAYv/F,EAAMgS,GACzB,IAAInzB,EAAQ+vF,EAAY7G,QAAQF,MAAM7nE,GACtC,GAAa,MAATnhB,GAAoC,cAAnBA,EAAMyrF,WAA6Bo2B,EAAc1uF,EAAO,MAC3E,OAAOA,EAET,IAAIs6E,GAAU,EACVngH,EAAS6zB,EAAKsT,WAClB,OAAQnnC,EAAOsmG,UAAUtyC,SAAS,gBAC2B,UAAtDyuC,EAAY7G,QAAQF,MAAM17F,IAAW,IAAIm+F,WAC5CgiB,GAAU,GAEZngH,EAASA,EAAOmnC,WAElB,OAAIg5E,GAAU,EAAUt6E,EACjBA,EAAM+5D,SAAQ,IAAI2C,EAAa3G,SAAUoD,OAAOn5D,EAAMh9B,SAAW,GAAGm2F,OAAO,EAAG,CAAEmhB,OAAQA,KAGjG,SAASoS,EAAa1+F,EAAMgS,GAM1B,OALK0uF,EAAc1uF,EAAO,QACpB81E,EAAO9nF,IAASgS,EAAMh9B,SAAW,GAAKgrB,EAAKslF,aAAewC,EAAO9nF,EAAKslF,eACxEtzE,EAAMi5D,OAAO,MAGVj5D,EAGT,SAASysF,EAAaz+F,EAAMgS,GAC1B,GAAI81E,EAAO9nF,IAAoC,MAA3BA,EAAKmhG,qBAA+BT,EAAc1uF,EAAO,QAAS,CACpF,IAAIovF,EAAaphG,EAAKqhG,aAAe16G,WAAWo6G,EAAa/gG,GAAMshG,WAAa36G,WAAWo6G,EAAa/gG,GAAMuhG,cAC1GvhG,EAAKmhG,mBAAmBK,UAAYxhG,EAAKwhG,UAAyB,IAAbJ,GACvDpvF,EAAMi5D,OAAO,MAGjB,OAAOj5D,EAGT,SAASstF,EAAYt/F,EAAMgS,GACzB,IAAI4lB,EAAU,GACVz2B,EAAQnB,EAAKmB,OAAS,GAc1B,OAbIA,EAAMsgG,WAA8C,WAAjCV,EAAa/gG,GAAMyhG,YACxC7pE,EAAQ8pE,QAAS,GAEfvgG,EAAMwgG,aAAeZ,EAAa/gG,GAAM2hG,WAAWr+F,WAAW,SAAWjG,SAAS0jG,EAAa/gG,GAAM2hG,aAAe,OACtH/pE,EAAQgqE,MAAO,GAEbppH,OAAOqC,KAAK+8C,GAAS5iD,OAAS,IAChCg9B,EAAQ8uF,EAAY9uF,EAAO4lB,IAEzBjxC,WAAWwa,EAAM0gG,YAAc,GAAK,IAEtC7vF,GAAQ,IAAI08D,EAAa3G,SAAUkD,OAAO,MAAMh+F,OAAO+kC,IAElDA,EAGT,SAASwsF,EAAUx+F,EAAMgS,GACvB,IAAIrK,EAAO3H,EAAK3xB,KAEhB,GAAgC,QAA5B2xB,EAAKsT,WAAW42D,QAClB,OAAOl4D,EAAMi5D,OAAOtjE,EAAK1rB,QAE3B,GAA2B,IAAvB0rB,EAAK1rB,OAAOjH,QAAgBgrB,EAAKsT,WAAWm/D,UAAUtyC,SAAS,gBACjE,OAAOnuB,EAET,IAAK+uF,EAAa/gG,EAAKsT,YAAYwuF,WAAWx+F,WAAW,OAAQ,CAE/D,IAAIy+F,EAAW,SAAkBC,EAAUnjH,GAEzC,OADAA,EAAQA,EAAMnB,QAAQ,aAAc,IAC7BmB,EAAM7J,OAAS,GAAKgtH,EAAW,IAAMnjH,GAE9C8oB,EAAOA,EAAKjqB,QAAQ,QAAS,KAAKA,QAAQ,MAAO,KACjDiqB,EAAOA,EAAKjqB,QAAQ,SAAUqkH,EAAS7uH,KAAK6uH,GAAU,KAC1B,MAAxB/hG,EAAKg3F,iBAA2BlP,EAAO9nF,EAAKsT,aAAuC,MAAxBtT,EAAKg3F,iBAA2BlP,EAAO9nF,EAAKg3F,oBACzGrvF,EAAOA,EAAKjqB,QAAQ,OAAQqkH,EAAS7uH,KAAK6uH,GAAU,MAE9B,MAApB/hG,EAAKslF,aAAuBwC,EAAO9nF,EAAKsT,aAAmC,MAApBtT,EAAKslF,aAAuBwC,EAAO9nF,EAAKslF,gBACjG39E,EAAOA,EAAKjqB,QAAQ,OAAQqkH,EAAS7uH,KAAK6uH,GAAU,KAGxD,OAAO/vF,EAAMi5D,OAAOtjE,GA5MtBi4F,EAAUznB,SAAW,CACnB2nB,SAAU,GACVG,aAAa,GA6Mf/yH,EAAQ66F,QAAU63B,EAClB1yH,EAAQ0xH,gBAAkBA,EAC1B1xH,EAAQyxH,UAAYA,EACpBzxH,EAAQwxH,aAAeA,EACvBxxH,EAAQuxH,aAAeA,EACvBvxH,EAAQsxH,UAAYA,GAId,SAAUrxH,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI89F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZ0gE,EAAU,EAAoB,GAE9BC,EAAWR,EAAuBO,GAEtC,SAASP,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAIyyB,EAAO,SAAUxlB,GAGnB,SAASwlB,IAGP,OAFA9yB,EAAgBnjG,KAAMi2H,GAEf7yB,EAA2BpjG,MAAOi2H,EAAK9+B,WAAa3qF,OAAO2K,eAAe8+G,IAAO5qH,MAAMrL,KAAMwR,YAuBtG,OA5BA8xF,EAAU2yB,EAAMxlB,GAQhBvO,EAAa+zB,EAAM,CAAC,CAClB/vH,IAAK,WACL9B,MAAO,SAAkBrE,GACvB2lE,EAAKuwD,EAAKxuH,UAAU0vF,WAAa3qF,OAAO2K,eAAe8+G,EAAKxuH,WAAY,WAAYzH,MAAMK,KAAKL,KAAMD,GACjGC,KAAKqnC,QAAQ62D,UAAYl+F,KAAK2kG,QAAQzG,QAAQ,IAChDl+F,KAAKy5G,YAAYz5G,KAAK2kG,QAAQrG,aAGhC,CAAC,CACHp4F,IAAK,SACL9B,MAAO,WACL,OAAOshE,EAAKuwD,EAAK9+B,WAAa3qF,OAAO2K,eAAe8+G,GAAO,SAAUj2H,MAAMK,KAAKL,QAEjF,CACDkG,IAAK,UACL9B,MAAO,WACL,OAAO,MAIJ6xH,EA7BE,CA8BTjzB,EAASjH,SAEXk6B,EAAK33B,SAAW,OAChB23B,EAAK/3B,QAAU,CAAC,SAAU,KAE1Bh9F,EAAQ66F,QAAUk6B,GAIZ,SAAU90H,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQg1H,YAAch1H,EAAQ66F,aAAUj2F,EAExC,IAAIm/F,EAAiB,WAAc,SAASC,EAAcnwF,EAAKjM,GAAK,IAAIq8F,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKx/F,EAAW,IAAM,IAAK,IAAiCy/F,EAA7BnH,EAAKrpF,EAAI2rB,OAAOs4D,cAAmBoM,GAAMG,EAAKnH,EAAGv5D,QAAQpiC,MAAO2iG,GAAK,EAA6B,GAArBD,EAAK57F,KAAKg8F,EAAGnhG,OAAY0E,GAAKq8F,EAAKn8F,SAAWF,EAAG,MAAW,MAAOzE,GAAOghG,GAAK,EAAMC,EAAKjhG,EAAO,QAAU,KAAW+gG,GAAMhH,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIiH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUpwF,EAAKjM,GAAK,GAAIsC,MAAMiD,QAAQ0G,GAAQ,OAAOA,EAAY,GAAI2rB,OAAOs4D,YAAYxsF,OAAOuI,GAAQ,OAAOmwF,EAAcnwF,EAAKjM,GAAa,MAAM,IAAIN,UAAU,yDAAjkB,GAEjB05F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfM,EAAc,EAAoB,GAElCC,EAAeF,EAAuBC,GAEtCE,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErC8Z,EAAS,EAAoB,GAE7BC,EAAUla,EAAuBia,GAEjCzW,EAAU,EAAoB,IAE9BC,EAAWzD,EAAuBwD,GAElCJ,EAAU,EAAoB,GAE9BC,EAAWrD,EAAuBoD,GAEtC,SAASpD,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASq5F,EAAgBr5F,EAAK7G,EAAK9B,GAAiK,OAApJ8B,KAAO6G,EAAOP,OAAOE,eAAeK,EAAK7G,EAAK,CAAE9B,MAAOA,EAAO+yB,YAAY,EAAMyI,cAAc,EAAM1I,UAAU,IAAkBnqB,EAAI7G,GAAO9B,EAAgB2I,EAE3M,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI6C,GAAQ,EAAIJ,EAASlK,SAAS,iBAE9Bo6B,EAAU,SAAUvZ,GAGtB,SAASuZ,EAAQjnB,EAAOvvG,GACtBwjG,EAAgBnjG,KAAMm2H,GAEtB,IAaMC,EAbFl5B,EAAQkG,EAA2BpjG,MAAOm2H,EAAQh/B,WAAa3qF,OAAO2K,eAAeg/G,IAAU91H,KAAKL,KAAMkvG,EAAOvvG,IAErH,GAAIyL,MAAMiD,QAAQ6uF,EAAMv9F,QAAQypC,WAAY,CAC1C,IAAIA,EAAYx2B,SAASa,cAAc,OACvCyiH,EAAY9sF,EAAW8zD,EAAMv9F,QAAQypC,WACrC8lE,EAAM9lE,UAAU9B,WAAWy8D,aAAa36D,EAAW8lE,EAAM9lE,WACzD8zD,EAAM9zD,UAAYA,MAC0B,kBAA5B8zD,EAAMv9F,QAAQypC,UAC9B8zD,EAAM9zD,UAAYx2B,SAAS85F,cAAcxP,EAAMv9F,QAAQypC,WAEvD8zD,EAAM9zD,UAAY8zD,EAAMv9F,QAAQypC,UAElC,OAAM8zD,EAAM9zD,qBAAqB60D,aAKjCf,EAAM9zD,UAAUq9D,UAAUlmG,IAAI,cAC9B28F,EAAMm5B,SAAW,GACjBn5B,EAAMjwF,SAAW,GACjBT,OAAOqC,KAAKquF,EAAMv9F,QAAQsN,UAAUjH,SAAQ,SAAU2lC,GACpDuxD,EAAMo5B,WAAW3qF,EAAQuxD,EAAMv9F,QAAQsN,SAAS0+B,OAElD,GAAG3lC,QAAQ3F,KAAK68F,EAAM9zD,UAAUilE,iBAAiB,mBAAmB,SAAU/7E,GAC5E4qE,EAAMnnC,OAAOzjC,MAEf4qE,EAAMgS,MAAM3H,GAAGmV,EAAQ3gB,QAAQ/mE,OAAOwyE,eAAe,SAAU7gG,EAAMkX,GAC/DlX,IAAS+1G,EAAQ3gB,QAAQ/mE,OAAOg6E,kBAClC9R,EAAMpqD,OAAOj1B,MAGjBq/E,EAAMgS,MAAM3H,GAAGmV,EAAQ3gB,QAAQ/mE,OAAO+5E,iBAAiB,WACrD,IAAIwnB,EAAwBr5B,EAAMgS,MAAMjI,UAAUt6C,WAC9C6pE,EAAyBvxB,EAAesxB,EAAuB,GAC/D14G,EAAQ24G,EAAuB,GAGnCt5B,EAAMpqD,OAAOj1B,MAERq/E,IAxBEk5B,EAAO/vB,EAAM36F,MAAM,iCAAkCwxF,EAAMv9F,SAAUyjG,EAA2BlG,EAAOk5B,IA0IlH,OA9JA9yB,EAAU6yB,EAASvZ,GA+CnB1a,EAAai0B,EAAS,CAAC,CACrBjwH,IAAK,aACL9B,MAAO,SAAoBunC,EAAQkhB,GACjC7sD,KAAKiN,SAAS0+B,GAAUkhB,IAEzB,CACD3mD,IAAK,SACL9B,MAAO,SAAgBkuB,GACrB,IAAI6xE,EAASnkG,KAET2rC,EAAS,GAAGiwD,KAAKv7F,KAAKiyB,EAAMm0E,WAAW,SAAUhI,GACnD,OAAoC,IAA7BA,EAAU15F,QAAQ,UAE3B,GAAK4mC,EAAL,CAKA,GAJAA,EAASA,EAAOr9B,MAAM,MAAMtF,QACN,WAAlBspB,EAAM4rE,SACR5rE,EAAM1e,aAAa,OAAQ,UAEA,MAAzB5T,KAAKiN,SAAS0+B,GAAiB,CACjC,GAAmC,MAA/B3rC,KAAKkvG,MAAMpI,OAAOC,WAA4D,MAAvC/mG,KAAKkvG,MAAMpI,OAAOC,UAAUp7D,GAErE,YADA06D,EAAM1vF,KAAK,wCAAyCg1B,EAAQrZ,GAG9D,GAAyC,MAArCswE,EAAY7G,QAAQF,MAAMlwD,GAE5B,YADA06D,EAAM1vF,KAAK,2CAA4Cg1B,EAAQrZ,GAInE,IAAI47E,EAA8B,WAAlB57E,EAAM4rE,QAAuB,SAAW,QACxD5rE,EAAM/rB,iBAAiB2nG,GAAW,SAAUh+F,GAC1C,IAAI9L,OAAQ,EACZ,GAAsB,WAAlBkuB,EAAM4rE,QAAsB,CAC9B,GAAI5rE,EAAMuxF,cAAgB,EAAG,OAC7B,IAAIJ,EAAWnxF,EAAM3yB,QAAQ2yB,EAAMuxF,eAEjCz/G,GADEq/G,EAASH,aAAa,cAGhBG,EAASr/G,QAAS,QAI1BA,GADEkuB,EAAMm0E,UAAUtyC,SAAS,eAGnB7hC,EAAMluB,QAAUkuB,EAAMgxF,aAAa,UAE7CpzG,EAAE4uG,iBAEJ3a,EAAO+K,MAAMjG,QAEb,IAAIwtB,EAAwBtyB,EAAO+K,MAAMjI,UAAUt6C,WAC/C+pE,EAAyBzxB,EAAewxB,EAAuB,GAC/D54G,EAAQ64G,EAAuB,GAEnC,GAA+B,MAA3BvyB,EAAOl3F,SAAS0+B,GAClBw4D,EAAOl3F,SAAS0+B,GAAQtrC,KAAK8jG,EAAQ//F,QAChC,GAAIw+F,EAAY7G,QAAQF,MAAMlwD,GAAQlkC,qBAAqBm7F,EAAY7G,QAAQG,MAAO,CAE3F,GADA93F,EAAQuyH,OAAO,SAAWhrF,IACrBvnC,EAAO,OACZ+/F,EAAO+K,MAAM+R,gBAAe,IAAIve,EAAa3G,SAAUoD,OAAOthF,EAAMrU,OAAO05B,OAAOrlB,EAAM7U,QAAQi2F,OAAOmH,EAAgB,GAAIz6D,EAAQvnC,IAASs4G,EAAQ3gB,QAAQ//E,QAAQiwF,WAEpK9H,EAAO+K,MAAMvjE,OAAOA,EAAQvnC,EAAOs4G,EAAQ3gB,QAAQ//E,QAAQiwF,MAE7D9H,EAAOrxD,OAAOj1B,MAGhB7d,KAAKq2H,SAAS9sH,KAAK,CAACoiC,EAAQrZ,OAE7B,CACDpsB,IAAK,SACL9B,MAAO,SAAgByZ,GACrB,IAAI+tC,EAAmB,MAAT/tC,EAAgB,GAAK7d,KAAKkvG,MAAM5E,UAAUzsF,GACxD7d,KAAKq2H,SAASrwH,SAAQ,SAAU4uH,GAC9B,IAAIC,EAAQ5vB,EAAe2vB,EAAM,GAC7BjpF,EAASkpF,EAAM,GACfviG,EAAQuiG,EAAM,GAElB,GAAsB,WAAlBviG,EAAM4rE,QAAsB,CAC9B,IAAIjqD,OAAS,EACb,GAAa,MAATp2B,EACFo2B,EAAS,UACJ,GAAuB,MAAnB2X,EAAQjgB,GACjBsI,EAAS3hB,EAAMo6E,cAAc,yBACxB,IAAKthG,MAAMiD,QAAQu9C,EAAQjgB,IAAU,CAC1C,IAAIvnC,EAAQwnD,EAAQjgB,GACC,kBAAVvnC,IACTA,EAAQA,EAAMsN,QAAQ,MAAO,QAE/BuiC,EAAS3hB,EAAMo6E,cAAc,iBAAmBtoG,EAAQ,MAE5C,MAAV6vC,GACF3hB,EAAMluB,MAAQ,GACdkuB,EAAMuxF,eAAiB,GAEvB5vE,EAAOwvE,UAAW,OAGpB,GAAa,MAAT5lG,EACFyU,EAAMm0E,UAAUzzF,OAAO,kBAClB,GAAIsf,EAAMgxF,aAAa,SAAU,CAGtC,IAAIY,EAAWt4D,EAAQjgB,KAAYrZ,EAAMkhC,aAAa,UAA+B,MAAnB5H,EAAQjgB,IAAmBigB,EAAQjgB,GAAQl8B,aAAe6iB,EAAMkhC,aAAa,UAA+B,MAAnB5H,EAAQjgB,KAAoBrZ,EAAMkhC,aAAa,SAC1MlhC,EAAMm0E,UAAUiB,OAAO,YAAawc,QAEpC5xF,EAAMm0E,UAAUiB,OAAO,YAAgC,MAAnB97C,EAAQjgB,WAO/CwqF,EA/JK,CAgKZtwB,EAAS9J,SAIX,SAAS66B,EAAUxtF,EAAWuC,EAAQvnC,GACpC,IAAIkuB,EAAQ1f,SAASa,cAAc,UACnC6e,EAAM1e,aAAa,OAAQ,UAC3B0e,EAAMm0E,UAAUlmG,IAAI,MAAQorC,GACf,MAATvnC,IACFkuB,EAAMluB,MAAQA,GAEhBglC,EAAUsoE,YAAYp/E,GAGxB,SAAS4jG,EAAY9sF,EAAWytF,GACzBzrH,MAAMiD,QAAQwoH,EAAO,MACxBA,EAAS,CAACA,IAEZA,EAAO7wH,SAAQ,SAAUqwH,GACvB,IAAIS,EAAQlkH,SAASa,cAAc,QACnCqjH,EAAMrwB,UAAUlmG,IAAI,cACpB81H,EAASrwH,SAAQ,SAAU+wH,GACzB,GAAuB,kBAAZA,EACTH,EAAUE,EAAOC,OACZ,CACL,IAAIprF,EAASn/B,OAAOqC,KAAKkoH,GAAS,GAC9B3yH,EAAQ2yH,EAAQprF,GAChBvgC,MAAMiD,QAAQjK,GAChB4yH,EAAUF,EAAOnrF,EAAQvnC,GAEzBwyH,EAAUE,EAAOnrF,EAAQvnC,OAI/BglC,EAAUsoE,YAAYolB,MAI1B,SAASE,EAAU5tF,EAAWuC,EAAQvX,GACpC,IAAI9B,EAAQ1f,SAASa,cAAc,UACnC6e,EAAMm0E,UAAUlmG,IAAI,MAAQorC,GAC5BvX,EAAOpuB,SAAQ,SAAU5B,GACvB,IAAI6vC,EAASrhC,SAASa,cAAc,WACtB,IAAVrP,EACF6vC,EAAOrgC,aAAa,QAASxP,GAE7B6vC,EAAOrgC,aAAa,WAAY,YAElC0e,EAAMo/E,YAAYz9D,MAEpB7K,EAAUsoE,YAAYp/E,GAhDxB6jG,EAAQhqB,SAAW,GAmDnBgqB,EAAQhqB,SAAW,CACjB/iE,UAAW,KACXn8B,SAAU,CACRgqH,MAAO,WACL,IAAItuB,EAAS3oG,KAET6d,EAAQ7d,KAAKkvG,MAAM7F,eACvB,GAAa,MAATxrF,EACJ,GAAoB,GAAhBA,EAAM7U,OAAa,CACrB,IAAI4iD,EAAU5rD,KAAKkvG,MAAM5E,YACzB99F,OAAOqC,KAAK+8C,GAAS5lD,SAAQ,SAAU6D,GAEoC,MAArE+4F,EAAY7G,QAAQF,MAAMhyF,EAAM+4F,EAAY7G,QAAQJ,MAAMqC,SAC5D2K,EAAOuG,MAAMvjE,OAAO9hC,GAAM,WAI9B7J,KAAKkvG,MAAMzD,aAAa5tF,EAAO6+F,EAAQ3gB,QAAQ//E,QAAQiwF,OAG3D3/D,UAAW,SAAmBloC,GAC5B,IAAImV,EAAQvZ,KAAKkvG,MAAM5E,YAAY,SACrB,QAAVlmG,GAA4B,MAATmV,EACrBvZ,KAAKkvG,MAAMvjE,OAAO,QAAS,QAAS+wE,EAAQ3gB,QAAQ//E,QAAQiwF,MAClD7nG,GAAmB,UAAVmV,GACnBvZ,KAAKkvG,MAAMvjE,OAAO,SAAS,EAAO+wE,EAAQ3gB,QAAQ//E,QAAQiwF,MAE5DjsG,KAAKkvG,MAAMvjE,OAAO,YAAavnC,EAAOs4G,EAAQ3gB,QAAQ//E,QAAQiwF,OAEhEqU,OAAQ,SAAgBl8G,GACtB,IAAIyZ,EAAQ7d,KAAKkvG,MAAM7F,eACnBz9C,EAAU5rD,KAAKkvG,MAAM5E,UAAUzsF,GAC/ByiG,EAASjvF,SAASu6B,EAAQ00D,QAAU,GACxC,GAAc,OAAVl8G,GAA4B,OAAVA,EAAgB,CACpC,IAAIuoG,EAAqB,OAAVvoG,EAAiB,GAAK,EACX,QAAtBwnD,EAAQtf,YAAqBqgE,IAAa,GAC9C3sG,KAAKkvG,MAAMvjE,OAAO,SAAU20E,EAAS3T,EAAU+P,EAAQ3gB,QAAQ//E,QAAQiwF,QAG3EirB,KAAM,SAAc9yH,IACJ,IAAVA,IACFA,EAAQuyH,OAAO,oBAEjB32H,KAAKkvG,MAAMvjE,OAAO,OAAQvnC,EAAOs4G,EAAQ3gB,QAAQ//E,QAAQiwF,OAE3DwI,KAAM,SAAcrwG,GAClB,IAAIyZ,EAAQ7d,KAAKkvG,MAAM7F,eACnBz9C,EAAU5rD,KAAKkvG,MAAM5E,UAAUzsF,GACrB,UAAVzZ,EACsB,YAApBwnD,EAAQ,SAA6C,cAApBA,EAAQ,QAC3C5rD,KAAKkvG,MAAMvjE,OAAO,QAAQ,EAAO+wE,EAAQ3gB,QAAQ//E,QAAQiwF,MAEzDjsG,KAAKkvG,MAAMvjE,OAAO,OAAQ,YAAa+wE,EAAQ3gB,QAAQ//E,QAAQiwF,MAGjEjsG,KAAKkvG,MAAMvjE,OAAO,OAAQvnC,EAAOs4G,EAAQ3gB,QAAQ//E,QAAQiwF,SAMjE/qG,EAAQ66F,QAAUo6B,EAClBj1H,EAAQg1H,YAAcA,GAIhB,SAAU/0H,EAAQD,GAExBC,EAAOD,QAAU,uOAIX,SAAUC,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI89F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZ0lF,EAAU,EAAoB,IAE9BC,EAAWxlB,EAAuBulB,GAEtC,SAASvlB,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI2zB,EAAc,SAAUC,GAG1B,SAASD,EAAYlU,EAAQjmE,GAC3BmmD,EAAgBnjG,KAAMm3H,GAEtB,IAAIj6B,EAAQkG,EAA2BpjG,MAAOm3H,EAAYhgC,WAAa3qF,OAAO2K,eAAeggH,IAAc92H,KAAKL,KAAMijH,IAOtH,OALA/lB,EAAMlgD,MAAMwpD,UAAYxpD,EACxBkgD,EAAM9zD,UAAUq9D,UAAUlmG,IAAI,mBAC9B,GAAG+N,MAAMjO,KAAK68F,EAAM9zD,UAAUilE,iBAAiB,mBAAoB,EAAG,GAAGroG,SAAQ,SAAU8W,GACzFA,EAAK2pF,UAAUlmG,IAAI,iBAEd28F,EA0BT,OAtCAoG,EAAU6zB,EAAaC,GAevBl1B,EAAai1B,EAAa,CAAC,CACzBjxH,IAAK,YACL9B,MAAO,SAAmB6vC,GACxB,IAAIn3B,EAAO4oD,EAAKyxD,EAAY1vH,UAAU0vF,WAAa3qF,OAAO2K,eAAeggH,EAAY1vH,WAAY,YAAazH,MAAMK,KAAKL,KAAMi0C,GAE/H,OADAn3B,EAAKqY,MAAMX,gBAAkByf,EAAOuf,aAAa,UAAY,GACtD12C,IAER,CACD5W,IAAK,aACL9B,MAAO,SAAoB0Y,EAAM03C,GAC/BkR,EAAKyxD,EAAY1vH,UAAU0vF,WAAa3qF,OAAO2K,eAAeggH,EAAY1vH,WAAY,aAAczH,MAAMK,KAAKL,KAAM8c,EAAM03C,GAC3H,IAAI6iE,EAAar3H,KAAKg9C,MAAM0vD,cAAc,mBACtCtoG,EAAQ0Y,GAAOA,EAAK02C,aAAa,eAAsB,GACvD6jE,IACyB,SAAvBA,EAAWn5B,QACbm5B,EAAWliG,MAAMmF,OAASl2B,EAE1BizH,EAAWliG,MAAMiF,KAAOh2B,OAMzB+yH,EAvCS,CAwChBnP,EAASjsB,SAEX76F,EAAQ66F,QAAUo7B,GAIZ,SAAUh2H,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI89F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZ0lF,EAAU,EAAoB,IAE9BC,EAAWxlB,EAAuBulB,GAEtC,SAASvlB,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI8zB,EAAa,SAAUF,GAGzB,SAASE,EAAWrU,EAAQ8F,GAC1B5lB,EAAgBnjG,KAAMs3H,GAEtB,IAAIp6B,EAAQkG,EAA2BpjG,MAAOs3H,EAAWngC,WAAa3qF,OAAO2K,eAAemgH,IAAaj3H,KAAKL,KAAMijH,IAQpH,OANA/lB,EAAM9zD,UAAUq9D,UAAUlmG,IAAI,kBAC9B,GAAGyF,QAAQ3F,KAAK68F,EAAM9zD,UAAUilE,iBAAiB,oBAAoB,SAAUvxF,GAC7EA,EAAK0pF,UAAYuiB,EAAMjsG,EAAK02C,aAAa,eAAiB,OAE5D0pC,EAAMq6B,YAAcr6B,EAAM9zD,UAAUsjE,cAAc,gBAClDxP,EAAMqmB,WAAWrmB,EAAMq6B,aAChBr6B,EAYT,OAzBAoG,EAAUg0B,EAAYF,GAgBtBl1B,EAAao1B,EAAY,CAAC,CACxBpxH,IAAK,aACL9B,MAAO,SAAoB0Y,EAAM03C,GAC/BkR,EAAK4xD,EAAW7vH,UAAU0vF,WAAa3qF,OAAO2K,eAAemgH,EAAW7vH,WAAY,aAAczH,MAAMK,KAAKL,KAAM8c,EAAM03C,GACzH13C,EAAOA,GAAQ9c,KAAKu3H,YACpBv3H,KAAKg9C,MAAMwpD,UAAY1pF,EAAK0pF,cAIzB8wB,EA1BQ,CA2BftP,EAASjsB,SAEX76F,EAAQ66F,QAAUu7B,GAIZ,SAAUn2H,EAAQD,EAAS07F,GAEjC,aAGApwF,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI89F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEnB,SAASgB,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,IAAI23E,EAAU,WACZ,SAASA,EAAQ+uB,EAAO4a,GACtB,IAAI5sB,EAAQl9F,KAEZmjG,EAAgBnjG,KAAMmgF,GAEtBngF,KAAKkvG,MAAQA,EACblvG,KAAK8pH,gBAAkBA,GAAmBl3G,SAAS6qE,KACnDz9E,KAAKk0B,KAAOg7E,EAAMvI,aAAa,cAC/B3mG,KAAKk0B,KAAKsyE,UAAYxmG,KAAKgX,YAAY4gF,SACnC53F,KAAKkvG,MAAMh7E,OAASl0B,KAAKkvG,MAAMtI,oBACjC5mG,KAAKkvG,MAAMh7E,KAAK3tB,iBAAiB,UAAU,WACzC22F,EAAMhpE,KAAKiB,MAAMmgG,WAAa,EAAIp4B,EAAMgS,MAAMh7E,KAAK80E,UAAY,QAGnEhpG,KAAK4zC,OA4CP,OAzCAsuD,EAAa/hB,EAAS,CAAC,CACrBj6E,IAAK,OACL9B,MAAO,WACLpE,KAAKk0B,KAAKuyE,UAAUlmG,IAAI,eAEzB,CACD2F,IAAK,WACL9B,MAAO,SAAkBozH,GACvB,IAAI59G,EAAO49G,EAAU59G,KAAO49G,EAAUx/F,MAAQ,EAAIh4B,KAAKk0B,KAAKujG,YAAc,EAEtE98F,EAAM68F,EAAU58F,OAAS56B,KAAKkvG,MAAMh7E,KAAK80E,UAC7ChpG,KAAKk0B,KAAKiB,MAAMvb,KAAOA,EAAO,KAC9B5Z,KAAKk0B,KAAKiB,MAAMwF,IAAMA,EAAM,KAC5B36B,KAAKk0B,KAAKuyE,UAAUzzF,OAAO,WAC3B,IAAIi3F,EAAkBjqG,KAAK8pH,gBAAgBrhF,wBACvCivF,EAAa13H,KAAKk0B,KAAKuU,wBACvBn9B,EAAQ,EASZ,GARIosH,EAAW79G,MAAQowF,EAAgBpwF,QACrCvO,EAAQ2+F,EAAgBpwF,MAAQ69G,EAAW79G,MAC3C7Z,KAAKk0B,KAAKiB,MAAMvb,KAAOA,EAAOtO,EAAQ,MAEpCosH,EAAW99G,KAAOqwF,EAAgBrwF,OACpCtO,EAAQ2+F,EAAgBrwF,KAAO89G,EAAW99G,KAC1C5Z,KAAKk0B,KAAKiB,MAAMvb,KAAOA,EAAOtO,EAAQ,MAEpCosH,EAAW98F,OAASqvE,EAAgBrvE,OAAQ,CAC9C,IAAI1B,EAASw+F,EAAW98F,OAAS88F,EAAW/8F,IACxCg9F,EAAgBH,EAAU58F,OAAS48F,EAAU78F,IAAMzB,EACvDl5B,KAAKk0B,KAAKiB,MAAMwF,IAAMA,EAAMg9F,EAAgB,KAC5C33H,KAAKk0B,KAAKuyE,UAAUlmG,IAAI,WAE1B,OAAO+K,IAER,CACDpF,IAAK,OACL9B,MAAO,WACLpE,KAAKk0B,KAAKuyE,UAAUzzF,OAAO,cAC3BhT,KAAKk0B,KAAKuyE,UAAUzzF,OAAO,iBAIxBmtE,EA3DK,GA8Ddj/E,EAAQ66F,QAAU5b,GAIZ,SAAUh/E,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI6gG,EAAiB,WAAc,SAASC,EAAcnwF,EAAKjM,GAAK,IAAIq8F,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAKx/F,EAAW,IAAM,IAAK,IAAiCy/F,EAA7BnH,EAAKrpF,EAAI2rB,OAAOs4D,cAAmBoM,GAAMG,EAAKnH,EAAGv5D,QAAQpiC,MAAO2iG,GAAK,EAA6B,GAArBD,EAAK57F,KAAKg8F,EAAGnhG,OAAY0E,GAAKq8F,EAAKn8F,SAAWF,EAAG,MAAW,MAAOzE,GAAOghG,GAAK,EAAMC,EAAKjhG,EAAO,QAAU,KAAW+gG,GAAMhH,EAAG,WAAWA,EAAG,YAAe,QAAU,GAAIiH,EAAI,MAAMC,GAAQ,OAAOH,EAAQ,OAAO,SAAUpwF,EAAKjM,GAAK,GAAIsC,MAAMiD,QAAQ0G,GAAQ,OAAOA,EAAY,GAAI2rB,OAAOs4D,YAAYxsF,OAAOuI,GAAQ,OAAOmwF,EAAcnwF,EAAKjM,GAAa,MAAM,IAAIN,UAAU,yDAAjkB,GAEjBk9D,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZ6/D,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfG,EAAU,EAAoB,GAE9BC,EAAWC,EAAuBF,GAElC0K,EAAW,EAAoB,GAE/BC,EAAYzK,EAAuBwK,GAEnC4qB,EAAQ,EAAoB,IAE5BC,EAASr1B,EAAuBo1B,GAEhCE,EAAQ,EAAoB,IAE5BC,EAASv1B,EAAuBs1B,GAEhChyB,EAAa,EAAoB,IAEjCkyB,EAAS,EAAoB,IAE7BC,EAAUz1B,EAAuBw1B,GAErC,SAASx1B,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI00B,EAAiB,CAAC,CAAC,CAAE5W,OAAQ,CAAC,IAAK,IAAK,KAAK,KAAW,CAAC,OAAQ,SAAU,YAAa,QAAS,CAAC,CAAE7M,KAAM,WAAa,CAAEA,KAAM,WAAa,CAAC,UAE7I0jB,EAAY,SAAUC,GAGxB,SAASD,EAAUjpB,EAAOvvG,GACxBwjG,EAAgBnjG,KAAMm4H,GAES,MAA3Bx4H,EAAQ+6F,QAAQ+R,SAAwD,MAArC9sG,EAAQ+6F,QAAQ+R,QAAQrjE,YAC7DzpC,EAAQ+6F,QAAQ+R,QAAQrjE,UAAY8uF,GAGtC,IAAIh7B,EAAQkG,EAA2BpjG,MAAOm4H,EAAUhhC,WAAa3qF,OAAO2K,eAAeghH,IAAY93H,KAAKL,KAAMkvG,EAAOvvG,IAGzH,OADAu9F,EAAMgS,MAAM9lE,UAAUq9D,UAAUlmG,IAAI,WAC7B28F,EAkBT,OA9BAoG,EAAU60B,EAAWC,GAerBl2B,EAAai2B,EAAW,CAAC,CACvBjyH,IAAK,gBACL9B,MAAO,SAAuBqoG,GAC5BA,EAAQrjE,UAAUq9D,UAAUlmG,IAAI,WAChCP,KAAKq4H,aAAa,GAAG/pH,MAAMjO,KAAKosG,EAAQrjE,UAAUilE,iBAAiB,WAAY4pB,EAAQl8B,SACvF/7F,KAAKs4H,aAAa,GAAGhqH,MAAMjO,KAAKosG,EAAQrjE,UAAUilE,iBAAiB,WAAY4pB,EAAQl8B,SACvF/7F,KAAKqmD,QAAU,IAAIkyE,EAAYv4H,KAAKkvG,MAAOlvG,KAAKL,QAAQwtC,QACpDs/D,EAAQrjE,UAAUsjE,cAAc,aAClC1sG,KAAKkvG,MAAM/H,SAAS2V,WAAW,CAAE52G,IAAK,IAAK06G,UAAU,IAAQ,SAAU/iG,EAAO9d,GAC5E0sG,EAAQx/F,SAAS,QAAQ5M,KAAKosG,GAAU1sG,EAAQ4rC,OAAOurF,aAMxDiB,EA/BO,CAgCdN,EAAO97B,SAETo8B,EAAUhsB,UAAW,EAAI5J,EAASxG,UAAS,EAAM,GAAI87B,EAAO97B,QAAQoQ,SAAU,CAC5EzR,QAAS,CACP+R,QAAS,CACPx/F,SAAU,CACRiqH,KAAM,SAAc9yH,GAClB,GAAIA,EAAO,CACT,IAAIyZ,EAAQ7d,KAAKkvG,MAAM7F,eACvB,GAAa,MAATxrF,GAAiC,GAAhBA,EAAM7U,OAAa,OACxC,IAAI+gH,EAAU/pH,KAAKkvG,MAAMxE,QAAQ7sF,GAC7B,iBAAiB3K,KAAK62G,IAA2C,IAA/BA,EAAQhlH,QAAQ,aACpDglH,EAAU,UAAYA,GAExB,IAAI1jE,EAAUrmD,KAAKkvG,MAAMhI,MAAM7gD,QAC/BA,EAAQ+iE,KAAK,OAAQW,QAErB/pH,KAAKkvG,MAAMvjE,OAAO,QAAQ,SAQtC,IAAI4sF,EAAc,SAAUC,GAG1B,SAASD,EAAYrpB,EAAO/hE,GAC1Bg2D,EAAgBnjG,KAAMu4H,GAEtB,IAAIp0B,EAASf,EAA2BpjG,MAAOu4H,EAAYphC,WAAa3qF,OAAO2K,eAAeohH,IAAcl4H,KAAKL,KAAMkvG,EAAO/hE,IAG9H,OADAg3D,EAAO4lB,QAAU5lB,EAAOjwE,KAAKw4E,cAAc,gBACpCvI,EA0DT,OAlEAb,EAAUi1B,EAAaC,GAWvBt2B,EAAaq2B,EAAa,CAAC,CACzBryH,IAAK,SACL9B,MAAO,WACL,IAAIukG,EAAS3oG,KAEb0lE,EAAK6yD,EAAY9wH,UAAU0vF,WAAa3qF,OAAO2K,eAAeohH,EAAY9wH,WAAY,SAAUzH,MAAMK,KAAKL,MAC3GA,KAAKk0B,KAAKw4E,cAAc,eAAenmG,iBAAiB,SAAS,SAAUirC,GACrEm3D,EAAOz0E,KAAKuyE,UAAUtyC,SAAS,cACjCw0C,EAAOvwE,OAEPuwE,EAAOygB,KAAK,OAAQzgB,EAAOohB,QAAQnZ,aAErCp/D,EAAMstE,oBAER9+G,KAAKk0B,KAAKw4E,cAAc,eAAenmG,iBAAiB,SAAS,SAAUirC,GACzE,GAAwB,MAApBm3D,EAAOqhB,UAAmB,CAC5B,IAAInsG,EAAQ8qF,EAAOqhB,UACnBrhB,EAAOshB,eACPthB,EAAOuG,MAAM3F,WAAW1rF,EAAO,QAAQ,EAAOovF,EAAUlR,QAAQ//E,QAAQiwF,aACjEtD,EAAOqhB,UAEhBx4E,EAAMstE,iBACNnW,EAAO/0D,UAET5zC,KAAKkvG,MAAM3H,GAAG0F,EAAUlR,QAAQ/mE,OAAOg6E,kBAAkB,SAAUnxF,EAAOm6F,EAAUtuG,GAClF,GAAa,MAATmU,EAAJ,CACA,GAAqB,IAAjBA,EAAM7U,QAAgBU,IAAWujG,EAAUlR,QAAQ//E,QAAQiwF,KAAM,CACnE,IAAIsU,EAAwB5X,EAAOuG,MAAMpI,OAAOiK,WAAWgnB,EAAOh8B,QAASl+E,EAAMrU,OAC7Eg3G,EAAyBvb,EAAesb,EAAuB,GAC/D2W,EAAO1W,EAAuB,GAC9Bx7D,EAASw7D,EAAuB,GAEpC,GAAY,MAAR0W,EAAc,CAChBvuB,EAAOqhB,UAAY,IAAIlkB,EAAWkG,MAAMnuF,EAAMrU,MAAQw7C,EAAQkyE,EAAKluH,UACnE,IAAI+gH,EAAUgO,EAAOh8B,QAAQnwC,QAAQsrE,EAAK7vF,SAK1C,OAJAshE,EAAOohB,QAAQnZ,YAAcmZ,EAC7BphB,EAAOohB,QAAQn2G,aAAa,OAAQm2G,GACpCphB,EAAOl1D,YACPk1D,EAAOpwF,SAASowF,EAAOuG,MAAMlF,UAAUrB,EAAOqhB,yBAIzCrhB,EAAOqhB,UAEhBrhB,EAAO/0D,aAGV,CACD1tC,IAAK,OACL9B,MAAO,WACLshE,EAAK6yD,EAAY9wH,UAAU0vF,WAAa3qF,OAAO2K,eAAeohH,EAAY9wH,WAAY,OAAQzH,MAAMK,KAAKL,MACzGA,KAAKk0B,KAAK0hC,gBAAgB,iBAIvB2iE,EAnES,CAoEhBX,EAAMlQ,aAER6Q,EAAY3gC,SAAW,CAAC,0FAA2F,mGAAoG,4BAA6B,6BAA6B5lF,KAAK,IAEtR9Q,EAAQ66F,QAAUo8B,GAIZ,SAAUh3H,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAIq0H,EAAQ,EAAoB,IAE5BC,EAASl2B,GAAuBi2B,GAEhC3F,EAAS,EAAoB,IAE7BE,EAAa,EAAoB,IAEjC2F,EAAU,EAAoB,IAE9BC,EAAc,EAAoB,IAElCC,EAAer2B,GAAuBo2B,GAEtCE,EAAU,EAAoB,IAE9BC,EAAWv2B,GAAuBs2B,GAElCE,EAAQ,EAAoB,IAE5BC,EAASz2B,GAAuBw2B,GAEhCjG,EAAc,EAAoB,IAElC7M,EAAS,EAAoB,IAE7B+M,EAAQ,EAAoB,IAE5B3yC,EAAQ,EAAoB,IAE5B44C,EAAQ,EAAoB,IAE5BC,EAAS32B,GAAuB02B,GAEhCE,EAAU,EAAoB,IAE9BC,EAAW72B,GAAuB42B,GAElCtB,EAAQ,EAAoB,IAE5BC,EAASv1B,GAAuBs1B,GAEhCwB,EAAU,EAAoB,IAE9BC,EAAW/2B,GAAuB82B,GAElCE,EAAU,EAAoB,IAE9BC,EAAWj3B,GAAuBg3B,GAElCE,EAAa,EAAoB,IAEjCC,EAAcn3B,GAAuBk3B,GAErCE,EAAS,EAAoB,IAE7BC,EAAUr3B,GAAuBo3B,GAEjCE,EAAS,EAAoB,IAE7BC,EAAUv3B,GAAuBs3B,GAEjC7nB,EAAQ,EAAoB,IAE5BC,EAAS1P,GAAuByP,GAEhC+nB,EAAW,EAAoB,IAE/BC,EAAYz3B,GAAuBw3B,GAEnCE,EAAU,EAAoB,IAE9BC,EAAW33B,GAAuB03B,GAElCE,EAAW,EAAoB,IAE/BC,EAAY73B,GAAuB43B,GAEnCpC,EAAS,EAAoB,IAE7BC,EAAUz1B,GAAuBw1B,GAEjCjQ,EAAU,EAAoB,IAE9BC,EAAWxlB,GAAuBulB,GAElCJ,EAAe,EAAoB,IAEnCC,EAAgBplB,GAAuBmlB,GAEvCE,EAAc,EAAoB,IAElCC,EAAetlB,GAAuBqlB,GAEtCI,EAAW,EAAoB,IAE/BC,EAAY1lB,GAAuBylB,GAEnCqS,EAAU,EAAoB,KAE9BC,EAAW/3B,GAAuB83B,GAElCE,GAAQ,EAAoB,IAE5BC,GAASj4B,GAAuBg4B,IAEpC,SAASh4B,GAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF2rH,EAAO38B,QAAQx3B,SAAS,CACtB,kCAAmCyuD,EAAW3M,mBAE9C,0BAA2ByM,EAAOhN,WAClC,+BAAgCiN,EAAY9M,gBAC5C,0BAA2BC,EAAOlE,WAClC,8BAA+BgR,EAAW5M,eAC1C,yBAA0B6M,EAAM3M,UAChC,yBAA0BhmC,EAAMomC,UAEhC,0BAA2BoM,EAAOjN,WAClC,+BAAgCkN,EAAY/M,gBAC5C,0BAA2BE,EAAOnE,WAClC,8BAA+BiR,EAAW7M,eAC1C,yBAA0B8M,EAAM1M,UAChC,yBAA0BjmC,EAAMmmC,YAC/B,GAEHiS,EAAO38B,QAAQx3B,SAAS,CACtB,gBAAiBuuD,EAAOhN,WACxB,oBAAqBkN,EAAW5M,eAChC,iBAAkBuS,EAAQ+B,YAE1B,qBAAsB3H,EAAY/M,gBAClC,gBAAiBE,EAAOnE,WACxB,eAAgBkR,EAAM3M,UACtB,eAAgBhmC,EAAMomC,UAEtB,qBAAsBmS,EAAa98B,QACnC,qBAAsBmW,EAAOnW,QAC7B,iBAAkBg9B,EAASh9B,QAC3B,eAAgBk9B,EAAOl9B,QAEvB,eAAgBo9B,EAAOp9B,QACvB,eAAgBkW,EAAM3B,KACtB,iBAAkB+oB,EAASt9B,QAC3B,eAAgBg8B,EAAOh8B,QACvB,iBAAkBw9B,EAASx9B,QAC3B,iBAAkB09B,EAAS19B,QAC3B,oBAAqB49B,EAAY59B,QAEjC,gBAAiB89B,EAAQ99B,QACzB,gBAAiBg+B,EAAQh+B,QAEzB,oBAAqBi9B,EAAM2B,SAE3B,kBAAmBV,EAAUl+B,QAC7B,iBAAkBo+B,EAASp+B,QAC3B,kBAAmBs+B,EAAUt+B,QAE7B,gBAAiBw+B,EAASx+B,QAC1B,cAAe0+B,GAAO1+B,QAEtB,WAAYk8B,EAAQl8B,QACpB,YAAaisB,EAASjsB,QACtB,iBAAkB+rB,EAAa/rB,QAC/B,kBAAmB6rB,EAAc7rB,QACjC,aAAcmsB,EAAUnsB,UACvB,GAEH76F,EAAQ66F,QAAU28B,EAAO38B,SAInB,SAAU56F,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQw5H,iBAAc50H,EAEtB,IAAIo8F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZsgE,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAEzC,SAASH,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAIo3B,EAAkB,SAAU1Y,GAG9B,SAAS0Y,IAGP,OAFAz3B,EAAgBnjG,KAAM46H,GAEfx3B,EAA2BpjG,MAAO46H,EAAgBzjC,WAAa3qF,OAAO2K,eAAeyjH,IAAkBvvH,MAAMrL,KAAMwR,YA6B5H,OAlCA8xF,EAAUs3B,EAAiB1Y,GAQ3BhgB,EAAa04B,EAAiB,CAAC,CAC7B10H,IAAK,MACL9B,MAAO,SAAa4vB,EAAM5vB,GACxB,GAAc,OAAVA,GAA4B,OAAVA,EAAgB,CACpC,IAAIk8G,EAAStgH,KAAKoE,MAAM4vB,IAAS,EACjC5vB,EAAkB,OAAVA,EAAiBk8G,EAAS,EAAIA,EAAS,EAEjD,OAAc,IAAVl8G,GACFpE,KAAKgT,OAAOghB,IACL,GAEA0xC,EAAKk1D,EAAgBnzH,UAAU0vF,WAAa3qF,OAAO2K,eAAeyjH,EAAgBnzH,WAAY,MAAOzH,MAAMK,KAAKL,KAAMg0B,EAAM5vB,KAGtI,CACD8B,IAAK,SACL9B,MAAO,SAAgB4vB,EAAM5vB,GAC3B,OAAOshE,EAAKk1D,EAAgBnzH,UAAU0vF,WAAa3qF,OAAO2K,eAAeyjH,EAAgBnzH,WAAY,SAAUzH,MAAMK,KAAKL,KAAMg0B,EAAM5vB,IAAUshE,EAAKk1D,EAAgBnzH,UAAU0vF,WAAa3qF,OAAO2K,eAAeyjH,EAAgBnzH,WAAY,SAAUzH,MAAMK,KAAKL,KAAMg0B,EAAM3C,SAASjtB,MAEzR,CACD8B,IAAK,QACL9B,MAAO,SAAe4vB,GACpB,OAAO3C,SAASq0C,EAAKk1D,EAAgBnzH,UAAU0vF,WAAa3qF,OAAO2K,eAAeyjH,EAAgBnzH,WAAY,QAASzH,MAAMK,KAAKL,KAAMg0B,UAAUluB,MAI/I80H,EAnCa,CAoCpBh4B,EAAY7G,QAAQQ,WAAWE,OAE7Bi+B,EAAc,IAAIE,EAAgB,SAAU,YAAa,CAC3DzmG,MAAOyuE,EAAY7G,QAAQJ,MAAMoC,MACjCgJ,UAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KAGnC7lG,EAAQw5H,YAAcA,GAIhB,SAAUv5H,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAImsG,EAAS,EAAoB,GAE7BC,EAAUhO,EAAuB+N,GAErC,SAAS/N,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAIq3B,EAAa,SAAUlqB,GAGzB,SAASkqB,IAGP,OAFA13B,EAAgBnjG,KAAM66H,GAEfz3B,EAA2BpjG,MAAO66H,EAAW1jC,WAAa3qF,OAAO2K,eAAe0jH,IAAaxvH,MAAMrL,KAAMwR,YAGlH,OARA8xF,EAAUu3B,EAAYlqB,GAQfkqB,EATQ,CAUfrqB,EAAQzU,SAEV8+B,EAAWv8B,SAAW,aACtBu8B,EAAW38B,QAAU,aAErBh9F,EAAQ66F,QAAU8+B,GAIZ,SAAU15H,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI89F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfoO,EAAS,EAAoB,GAE7BC,EAAUhO,EAAuB+N,GAErC,SAAS/N,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAIs3B,EAAS,SAAUnqB,GAGrB,SAASmqB,IAGP,OAFA33B,EAAgBnjG,KAAM86H,GAEf13B,EAA2BpjG,MAAO86H,EAAO3jC,WAAa3qF,OAAO2K,eAAe2jH,IAASzvH,MAAMrL,KAAMwR,YAU1G,OAfA8xF,EAAUw3B,EAAQnqB,GAQlBzO,EAAa44B,EAAQ,KAAM,CAAC,CAC1B50H,IAAK,UACL9B,MAAO,SAAiBijC,GACtB,OAAOrnC,KAAKk+F,QAAQn5F,QAAQsiC,EAAQ62D,SAAW,MAI5C48B,EAhBI,CAiBXtqB,EAAQzU,SAEV++B,EAAOx8B,SAAW,SAClBw8B,EAAO58B,QAAU,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,MAEhDh9F,EAAQ66F,QAAU++B,GAIZ,SAAU35H,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQ66F,QAAU76F,EAAQy5H,cAAW70H,EAErC,IAAIo8F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZsgE,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErC4N,EAAS,EAAoB,GAE7BC,EAAUhO,EAAuB+N,GAEjCqL,EAAa,EAAoB,IAEjCC,EAAcrZ,EAAuBoZ,GAEzC,SAASpZ,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASq5F,EAAgBr5F,EAAK7G,EAAK9B,GAAiK,OAApJ8B,KAAO6G,EAAOP,OAAOE,eAAeK,EAAK7G,EAAK,CAAE9B,MAAOA,EAAO+yB,YAAY,EAAMyI,cAAc,EAAM1I,UAAU,IAAkBnqB,EAAI7G,GAAO9B,EAAgB2I,EAE3M,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAIm3B,EAAW,SAAUhqB,GAGvB,SAASgqB,IAGP,OAFAx3B,EAAgBnjG,KAAM26H,GAEfv3B,EAA2BpjG,MAAO26H,EAASxjC,WAAa3qF,OAAO2K,eAAewjH,IAAWtvH,MAAMrL,KAAMwR,YAwC9G,OA7CA8xF,EAAUq3B,EAAUhqB,GAQpBzO,EAAay4B,EAAU,CAAC,CACtBz0H,IAAK,SACL9B,MAAO,SAAgByF,EAAMzF,GACvByF,IAASkxH,EAAKz8B,UAAal6F,EAG7BshE,EAAKi1D,EAASlzH,UAAU0vF,WAAa3qF,OAAO2K,eAAewjH,EAASlzH,WAAY,SAAUzH,MAAMK,KAAKL,KAAM6J,EAAMzF,GAFjHpE,KAAKy5G,YAAY7W,EAAY7G,QAAQp0F,OAAO3H,KAAK2kG,QAAQxwE,UAK5D,CACDjuB,IAAK,SACL9B,MAAO,WACY,MAAbpE,KAAKinC,MAA6B,MAAbjnC,KAAK6kC,KAC5B7kC,KAAKG,OAAO6S,SAEZ0yD,EAAKi1D,EAASlzH,UAAU0vF,WAAa3qF,OAAO2K,eAAewjH,EAASlzH,WAAY,SAAUzH,MAAMK,KAAKL,QAGxG,CACDkG,IAAK,cACL9B,MAAO,SAAqByF,EAAMzF,GAEhC,OADApE,KAAKG,OAAOstG,QAAQztG,KAAKglD,OAAOhlD,KAAKG,QAASH,KAAKgJ,UAC/Ca,IAAS7J,KAAKG,OAAOwkG,QAAQrG,UAC/Bt+F,KAAKG,OAAOs5G,YAAY5vG,EAAMzF,GACvBpE,OAEPA,KAAKG,OAAO0xG,SACLnsC,EAAKi1D,EAASlzH,UAAU0vF,WAAa3qF,OAAO2K,eAAewjH,EAASlzH,WAAY,cAAezH,MAAMK,KAAKL,KAAM6J,EAAMzF,OAG/H,CAAC,CACH8B,IAAK,UACL9B,MAAO,SAAiBijC,GACtB,OAAOA,EAAQ62D,UAAYl+F,KAAKk+F,aAAUp4F,EAAY4/D,EAAKi1D,EAASxjC,WAAa3qF,OAAO2K,eAAewjH,GAAW,UAAW36H,MAAMK,KAAKL,KAAMqnC,OAI3IszF,EA9CM,CA+CbnqB,EAAQzU,SAEV4+B,EAASr8B,SAAW,YACpBq8B,EAASz8B,QAAU,KAEnB,IAAI68B,EAAO,SAAUC,GA4BnB,SAASD,EAAK1zF,GACZ87D,EAAgBnjG,KAAM+6H,GAEtB,IAAI52B,EAASf,EAA2BpjG,MAAO+6H,EAAK5jC,WAAa3qF,OAAO2K,eAAe4jH,IAAO16H,KAAKL,KAAMqnC,IAErG4zF,EAAmB,SAA0B/qH,GAC/C,GAAIA,EAAE/B,OAAOm5B,aAAeD,EAA5B,CACA,IAAIsE,EAASw4D,EAAOQ,QAAQ/4C,QAAQvkB,GAChCu2D,EAAOgF,EAAY7G,QAAQH,KAAK1rF,EAAE/B,QACvB,YAAXw9B,EACFiyD,EAAKjyD,OAAO,OAAQ,aACA,cAAXA,GACTiyD,EAAKjyD,OAAO,OAAQ,aAMxB,OAFAtE,EAAQ9gC,iBAAiB,aAAc00H,GACvC5zF,EAAQ9gC,iBAAiB,YAAa00H,GAC/B92B,EAiDT,OA9FAb,EAAUy3B,EAAMC,GAEhB94B,EAAa64B,EAAM,KAAM,CAAC,CACxB70H,IAAK,SACL9B,MAAO,SAAgBA,GACrB,IAAI85F,EAAoB,YAAV95F,EAAsB,KAAO,KACvC4vB,EAAO0xC,EAAKq1D,EAAK5jC,WAAa3qF,OAAO2K,eAAe4jH,GAAO,SAAU/6H,MAAMK,KAAKL,KAAMk+F,GAI1F,MAHc,YAAV95F,GAAiC,cAAVA,GACzB4vB,EAAKpgB,aAAa,eAA0B,YAAVxP,GAE7B4vB,IAER,CACD9tB,IAAK,UACL9B,MAAO,SAAiBijC,GACtB,MAAwB,OAApBA,EAAQ62D,QAAyB,UACb,OAApB72D,EAAQ62D,QACN72D,EAAQi8E,aAAa,gBACyB,SAAzCj8E,EAAQmsB,aAAa,gBAA6B,UAAY,YAE9D,cAJX,MAgCJ0uC,EAAa64B,EAAM,CAAC,CAClB70H,IAAK,SACL9B,MAAO,SAAgByF,EAAMzF,GACvBpE,KAAKskG,SAASt7F,OAAS,GACzBhJ,KAAKskG,SAASC,KAAK54D,OAAO9hC,EAAMzF,KAGnC,CACD8B,IAAK,UACL9B,MAAO,WAEL,OAAOgiG,EAAgB,GAAIpmG,KAAK2kG,QAAQrG,SAAUt+F,KAAK2kG,QAAQ/4C,QAAQ5rD,KAAKqnC,YAE7E,CACDnhC,IAAK,eACL9B,MAAO,SAAsBw5F,EAAM4G,GACjC,GAAI5G,aAAgB+8B,EAClBj1D,EAAKq1D,EAAKtzH,UAAU0vF,WAAa3qF,OAAO2K,eAAe4jH,EAAKtzH,WAAY,eAAgBzH,MAAMK,KAAKL,KAAM49F,EAAM4G,OAC1G,CACL,IAAIh7F,EAAe,MAAPg7F,EAAcxkG,KAAKgJ,SAAWw7F,EAAIx/C,OAAOhlD,MACjDm+E,EAAQn+E,KAAK0U,MAAMlL,GACvB20E,EAAMh+E,OAAO4jG,aAAanG,EAAMzf,MAGnC,CACDj4E,IAAK,WACL9B,MAAO,SAAkBrE,GACvB2lE,EAAKq1D,EAAKtzH,UAAU0vF,WAAa3qF,OAAO2K,eAAe4jH,EAAKtzH,WAAY,WAAYzH,MAAMK,KAAKL,KAAMD,GACrG,IAAI8kC,EAAO7kC,KAAK6kC,KACJ,MAARA,GAAgBA,EAAKoC,OAASjnC,MAAQ6kC,EAAK8/D,QAAQrG,WAAat+F,KAAK2kG,QAAQrG,UAAYz5D,EAAKwC,QAAQ62D,UAAYl+F,KAAKqnC,QAAQ62D,SAAWr5D,EAAKwC,QAAQmsB,aAAa,kBAAoBxzD,KAAKqnC,QAAQmsB,aAAa,kBACpN3uB,EAAK6oE,aAAa1tG,MAClB6kC,EAAK7xB,YAGR,CACD9M,IAAK,UACL9B,MAAO,SAAiB+J,GACtB,GAAIA,EAAOw2F,QAAQrG,WAAat+F,KAAK2kG,QAAQrG,SAAU,CACrD,IAAIxhF,EAAO8lF,EAAY7G,QAAQp0F,OAAO3H,KAAK2kG,QAAQC,cACnDz2F,EAAOu/F,aAAa5wF,GACpB9c,KAAK0xG,YAAY50F,GAEnB4oD,EAAKq1D,EAAKtzH,UAAU0vF,WAAa3qF,OAAO2K,eAAe4jH,EAAKtzH,WAAY,UAAWzH,MAAMK,KAAKL,KAAMmO,OAIjG4sH,EA/FE,CAgGTlf,EAAY9f,SAEdg/B,EAAKz8B,SAAW,OAChBy8B,EAAK5mG,MAAQyuE,EAAY7G,QAAQJ,MAAMsI,WACvC82B,EAAK78B,QAAU,CAAC,KAAM,MACtB68B,EAAKn2B,aAAe,YACpBm2B,EAAKl2B,gBAAkB,CAAC81B,GAExBz5H,EAAQy5H,SAAWA,EACnBz5H,EAAQ66F,QAAUg/B,GAIZ,SAAU55H,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI80H,EAAQ,EAAoB,IAE5BC,EAAS32B,EAAuB02B,GAEpC,SAAS12B,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI03B,EAAS,SAAUC,GAGrB,SAASD,IAGP,OAFA/3B,EAAgBnjG,KAAMk7H,GAEf93B,EAA2BpjG,MAAOk7H,EAAO/jC,WAAa3qF,OAAO2K,eAAe+jH,IAAS7vH,MAAMrL,KAAMwR,YAG1G,OARA8xF,EAAU43B,EAAQC,GAQXD,EATI,CAUX/B,EAAOp9B,SAETm/B,EAAO58B,SAAW,SAClB48B,EAAOh9B,QAAU,CAAC,KAAM,KAExBh9F,EAAQ66F,QAAUm/B,GAIZ,SAAU/5H,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI89F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZ0gE,EAAU,EAAoB,GAE9BC,EAAWR,EAAuBO,GAEtC,SAASP,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI43B,EAAS,SAAU3qB,GAGrB,SAAS2qB,IAGP,OAFAj4B,EAAgBnjG,KAAMo7H,GAEfh4B,EAA2BpjG,MAAOo7H,EAAOjkC,WAAa3qF,OAAO2K,eAAeikH,IAAS/vH,MAAMrL,KAAMwR,YAuB1G,OA5BA8xF,EAAU83B,EAAQ3qB,GAQlBvO,EAAak5B,EAAQ,KAAM,CAAC,CAC1Bl1H,IAAK,SACL9B,MAAO,SAAgBA,GACrB,MAAc,UAAVA,EACKwO,SAASa,cAAc,OACX,QAAVrP,EACFwO,SAASa,cAAc,OAEvBiyD,EAAK01D,EAAOjkC,WAAa3qF,OAAO2K,eAAeikH,GAAS,SAAUp7H,MAAMK,KAAKL,KAAMoE,KAG7F,CACD8B,IAAK,UACL9B,MAAO,SAAiBijC,GACtB,MAAwB,QAApBA,EAAQ62D,QAA0B,MACd,QAApB72D,EAAQ62D,QAA0B,aAAtC,MAKGk9B,EA7BI,CA8BXp4B,EAASjH,SAEXq/B,EAAO98B,SAAW,SAClB88B,EAAOl9B,QAAU,CAAC,MAAO,OAEzBh9F,EAAQ66F,QAAUq/B,GAIZ,SAAUj6H,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI2+F,EAAU,EAAoB,GAE9BC,EAAWR,EAAuBO,GAEtC,SAASP,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI63B,EAAS,SAAU5qB,GAGrB,SAAS4qB,IAGP,OAFAl4B,EAAgBnjG,KAAMq7H,GAEfj4B,EAA2BpjG,MAAOq7H,EAAOlkC,WAAa3qF,OAAO2K,eAAekkH,IAAShwH,MAAMrL,KAAMwR,YAG1G,OARA8xF,EAAU+3B,EAAQ5qB,GAQX4qB,EATI,CAUXr4B,EAASjH,SAEXs/B,EAAO/8B,SAAW,SAClB+8B,EAAOn9B,QAAU,IAEjBh9F,EAAQ66F,QAAUs/B,GAIZ,SAAUl6H,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI2+F,EAAU,EAAoB,GAE9BC,EAAWR,EAAuBO,GAEtC,SAASP,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI83B,EAAY,SAAU7qB,GAGxB,SAAS6qB,IAGP,OAFAn4B,EAAgBnjG,KAAMs7H,GAEfl4B,EAA2BpjG,MAAOs7H,EAAUnkC,WAAa3qF,OAAO2K,eAAemkH,IAAYjwH,MAAMrL,KAAMwR,YAGhH,OARA8xF,EAAUg4B,EAAW7qB,GAQd6qB,EATO,CAUdt4B,EAASjH,SAEXu/B,EAAUh9B,SAAW,YACrBg9B,EAAUp9B,QAAU,IAEpBh9F,EAAQ66F,QAAUu/B,GAIZ,SAAUn6H,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI89F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZsgE,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErCm1B,EAAQ,EAAoB,IAEhC,SAASt1B,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI+3B,EAAa,CAAC,MAAO,SAAU,SAE/BC,EAAQ,SAAU93B,GAGpB,SAAS83B,IAGP,OAFAr4B,EAAgBnjG,KAAMw7H,GAEfp4B,EAA2BpjG,MAAOw7H,EAAMrkC,WAAa3qF,OAAO2K,eAAeqkH,IAAQnwH,MAAMrL,KAAMwR,YAqDxG,OA1DA8xF,EAAUk4B,EAAO93B,GAQjBxB,EAAas5B,EAAO,CAAC,CACnBt1H,IAAK,SACL9B,MAAO,SAAgByF,EAAMzF,GACvBm3H,EAAWx2H,QAAQ8E,IAAS,EAC1BzF,EACFpE,KAAKqnC,QAAQzzB,aAAa/J,EAAMzF,GAEhCpE,KAAKqnC,QAAQuuB,gBAAgB/rD,GAG/B67D,EAAK81D,EAAM/zH,UAAU0vF,WAAa3qF,OAAO2K,eAAeqkH,EAAM/zH,WAAY,SAAUzH,MAAMK,KAAKL,KAAM6J,EAAMzF,MAG7G,CAAC,CACH8B,IAAK,SACL9B,MAAO,SAAgBA,GACrB,IAAI4vB,EAAO0xC,EAAK81D,EAAMrkC,WAAa3qF,OAAO2K,eAAeqkH,GAAQ,SAAUx7H,MAAMK,KAAKL,KAAMoE,GAI5F,MAHqB,kBAAVA,GACT4vB,EAAKpgB,aAAa,MAAO5T,KAAKmiH,SAAS/9G,IAElC4vB,IAER,CACD9tB,IAAK,UACL9B,MAAO,SAAiBijC,GACtB,OAAOk0F,EAAW7pF,QAAO,SAAUka,EAAS+3C,GAI1C,OAHIt8D,EAAQi8E,aAAa3f,KACvB/3C,EAAQ+3C,GAAat8D,EAAQmsB,aAAamwC,IAErC/3C,IACN,MAEJ,CACD1lD,IAAK,QACL9B,MAAO,SAAeT,GACpB,MAAQ,qBAAqBuP,KAAKvP,IAAQ,yBAAyBuP,KAAKvP,KAGzE,CACDuC,IAAK,WACL9B,MAAO,SAAkBT,GACvB,OAAO,EAAIm0H,EAAM3V,UAAUx+G,EAAK,CAAC,OAAQ,QAAS,SAAWA,EAAM,SAEpE,CACDuC,IAAK,QACL9B,MAAO,SAAeijC,GACpB,OAAOA,EAAQmsB,aAAa,WAIzBgoE,EA3DG,CA4DV54B,EAAY7G,QAAQG,OAEtBs/B,EAAMl9B,SAAW,QACjBk9B,EAAMt9B,QAAU,MAEhBh9F,EAAQ66F,QAAUy/B,GAIZ,SAAUr6H,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAGT,IAAI89F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZkuE,EAAS,EAAoB,GAE7BunB,EAAQ,EAAoB,IAE5BC,EAASv1B,EAAuBs1B,GAEpC,SAASt1B,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI+3B,EAAa,CAAC,SAAU,SAExBE,EAAQ,SAAUC,GAGpB,SAASD,IAGP,OAFAt4B,EAAgBnjG,KAAMy7H,GAEfr4B,EAA2BpjG,MAAOy7H,EAAMtkC,WAAa3qF,OAAO2K,eAAeskH,IAAQpwH,MAAMrL,KAAMwR,YA+CxG,OApDA8xF,EAAUm4B,EAAOC,GAQjBx5B,EAAau5B,EAAO,CAAC,CACnBv1H,IAAK,SACL9B,MAAO,SAAgByF,EAAMzF,GACvBm3H,EAAWx2H,QAAQ8E,IAAS,EAC1BzF,EACFpE,KAAKqnC,QAAQzzB,aAAa/J,EAAMzF,GAEhCpE,KAAKqnC,QAAQuuB,gBAAgB/rD,GAG/B67D,EAAK+1D,EAAMh0H,UAAU0vF,WAAa3qF,OAAO2K,eAAeskH,EAAMh0H,WAAY,SAAUzH,MAAMK,KAAKL,KAAM6J,EAAMzF,MAG7G,CAAC,CACH8B,IAAK,SACL9B,MAAO,SAAgBA,GACrB,IAAI4vB,EAAO0xC,EAAK+1D,EAAMtkC,WAAa3qF,OAAO2K,eAAeskH,GAAQ,SAAUz7H,MAAMK,KAAKL,KAAMoE,GAI5F,OAHA4vB,EAAKpgB,aAAa,cAAe,KACjCogB,EAAKpgB,aAAa,mBAAmB,GACrCogB,EAAKpgB,aAAa,MAAO5T,KAAKmiH,SAAS/9G,IAChC4vB,IAER,CACD9tB,IAAK,UACL9B,MAAO,SAAiBijC,GACtB,OAAOk0F,EAAW7pF,QAAO,SAAUka,EAAS+3C,GAI1C,OAHIt8D,EAAQi8E,aAAa3f,KACvB/3C,EAAQ+3C,GAAat8D,EAAQmsB,aAAamwC,IAErC/3C,IACN,MAEJ,CACD1lD,IAAK,WACL9B,MAAO,SAAkBT,GACvB,OAAOo0H,EAAOh8B,QAAQomB,SAASx+G,KAEhC,CACDuC,IAAK,QACL9B,MAAO,SAAeijC,GACpB,OAAOA,EAAQmsB,aAAa,WAIzBioE,EArDG,CAsDVlrB,EAAOvO,YAETy5B,EAAMn9B,SAAW,QACjBm9B,EAAMh9B,UAAY,WAClBg9B,EAAMv9B,QAAU,SAEhBh9F,EAAQ66F,QAAU0/B,GAIZ,SAAUt6H,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQ66F,QAAU76F,EAAQy6H,iBAAc71H,EAExC,IAAIo8F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZ8hF,EAAS,EAAoB,IAE7BC,EAAU5hB,EAAuB2hB,GAEjC1H,EAAS,EAAoB,GAE7BC,EAAUla,EAAuBia,GAEjC7W,EAAU,EAAoB,GAE9BC,EAAWrD,EAAuBoD,GAEtC,SAASpD,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAIm4B,EAAc,SAAUC,GAG1B,SAASD,IAGP,OAFAx4B,EAAgBnjG,KAAM27H,GAEfv4B,EAA2BpjG,MAAO27H,EAAYxkC,WAAa3qF,OAAO2K,eAAewkH,IAActwH,MAAMrL,KAAMwR,YAuBpH,OA5BA8xF,EAAUq4B,EAAaC,GAQvB15B,EAAay5B,EAAa,KAAM,CAAC,CAC/Bz1H,IAAK,SACL9B,MAAO,SAAgBA,GACrB,IAAI4vB,EAAO0xC,EAAKi2D,EAAYxkC,WAAa3qF,OAAO2K,eAAewkH,GAAc,SAAU37H,MAAMK,KAAKL,KAAMoE,GAQxG,MAPqB,kBAAVA,IACTgQ,OAAOynH,MAAM18H,OAAOiF,EAAO4vB,EAAM,CAC/B8nG,cAAc,EACdC,WAAY,SAEd/nG,EAAKpgB,aAAa,aAAcxP,IAE3B4vB,IAER,CACD9tB,IAAK,QACL9B,MAAO,SAAeijC,GACpB,OAAOA,EAAQmsB,aAAa,kBAIzBmoE,EA7BS,CA8BhBvX,EAAQroB,SAEV4/B,EAAYr9B,SAAW,UACvBq9B,EAAYl9B,UAAY,aACxBk9B,EAAYz9B,QAAU,OAEtB,IAAI89B,EAAU,SAAUpf,GAUtB,SAASof,IACP74B,EAAgBnjG,KAAMg8H,GAEtB,IAAI73B,EAASf,EAA2BpjG,MAAOg8H,EAAQ7kC,WAAa3qF,OAAO2K,eAAe6kH,IAAU37H,KAAKL,OAEzG,GAAoB,MAAhBoU,OAAOynH,MACT,MAAM,IAAI9vH,MAAM,kCAElB,OAAOo4F,EAGT,OApBAb,EAAU04B,EAASpf,GAEnB1a,EAAa85B,EAAS,KAAM,CAAC,CAC3B91H,IAAK,WACL9B,MAAO,WACLs4G,EAAQ3gB,QAAQx3B,SAASo3D,GAAa,OAenCK,EArBK,CAsBZn2B,EAAS9J,SAEX76F,EAAQy6H,YAAcA,EACtBz6H,EAAQ66F,QAAUigC,GAIZ,SAAU76H,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQ66F,QAAU76F,EAAQ+6H,UAAY/6H,EAAQwvG,eAAY5qG,EAE1D,IAAIo8F,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfz8B,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZsgE,EAAa,EAAoB,GAEjCC,EAAcJ,EAAuBG,GAErC8Z,EAAS,EAAoB,GAE7BC,EAAUla,EAAuBia,GAEjC7W,EAAU,EAAoB,GAE9BC,EAAWrD,EAAuBoD,GAElCqM,EAAQ,EAAoB,IAE5BC,EAAS1P,EAAuByP,GAEpC,SAASzP,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI04B,EAAkB,SAAUC,GAG9B,SAASD,IAGP,OAFA/4B,EAAgBnjG,KAAMk8H,GAEf94B,EAA2BpjG,MAAOk8H,EAAgB/kC,WAAa3qF,OAAO2K,eAAe+kH,IAAkB7wH,MAAMrL,KAAMwR,YAyB5H,OA9BA8xF,EAAU44B,EAAiBC,GAQ3Bj6B,EAAag6B,EAAiB,CAAC,CAC7Bh2H,IAAK,cACL9B,MAAO,SAAqB0/F,GAC1B9jG,KAAKqnC,QAAQupE,YAAc5wG,KAAKqnC,QAAQupE,YACxC5wG,KAAK+1D,SACL2P,EAAKw2D,EAAgBz0H,UAAU0vF,WAAa3qF,OAAO2K,eAAe+kH,EAAgBz0H,WAAY,cAAezH,MAAMK,KAAKL,KAAM8jG,KAE/H,CACD59F,IAAK,YACL9B,MAAO,SAAmBg4H,GACxB,IAAIzgG,EAAO37B,KAAKqnC,QAAQupE,YACpB5wG,KAAKq8H,aAAe1gG,KAClBA,EAAK1rB,OAAOjH,OAAS,GAAwB,MAAnBhJ,KAAKq8H,cACjCr8H,KAAKqnC,QAAQm/D,UAAY41B,EAAWzgG,GACpC37B,KAAKqnC,QAAQ0F,YACb/sC,KAAK+1D,UAEP/1D,KAAKq8H,WAAa1gG,OAKjBugG,EA/Ba,CAgCpBhqB,EAAOnW,SAETmgC,EAAgBz9B,UAAY,YAE5B,IAAIw9B,EAAY,IAAIr5B,EAAY7G,QAAQQ,WAAWE,MAAM,QAAS,OAAQ,CACxEtoE,MAAOyuE,EAAY7G,QAAQJ,MAAMqC,SAG/Bs+B,EAAS,SAAU1f,GAWrB,SAAS0f,EAAOptB,EAAOvvG,GACrBwjG,EAAgBnjG,KAAMs8H,GAEtB,IAAIn4B,EAASf,EAA2BpjG,MAAOs8H,EAAOnlC,WAAa3qF,OAAO2K,eAAemlH,IAASj8H,KAAKL,KAAMkvG,EAAOvvG,IAEpH,GAAwC,oBAA7BwkG,EAAOxkG,QAAQ48H,UACxB,MAAM,IAAIxwH,MAAM,6FAElB,IAAIywH,EAAQ,KASZ,OARAr4B,EAAO+K,MAAM3H,GAAGmV,EAAQ3gB,QAAQ/mE,OAAO+5E,iBAAiB,WACtD11F,aAAamjH,GACbA,EAAQx3H,YAAW,WACjBm/F,EAAOo4B,YACPC,EAAQ,OACPr4B,EAAOxkG,QAAQ2sF,aAEpB6X,EAAOo4B,YACAp4B,EAqBT,OAhDAb,EAAUg5B,EAAQ1f,GAElB1a,EAAao6B,EAAQ,KAAM,CAAC,CAC1Bp2H,IAAK,WACL9B,MAAO,WACLs4G,EAAQ3gB,QAAQx3B,SAAS03D,GAAW,GACpCvf,EAAQ3gB,QAAQx3B,SAAS23D,GAAiB,OAwB9Ch6B,EAAao6B,EAAQ,CAAC,CACpBp2H,IAAK,YACL9B,MAAO,WACL,IAAIukG,EAAS3oG,KAEb,IAAIA,KAAKkvG,MAAMjI,UAAU6N,UAAzB,CACA90G,KAAKkvG,MAAMp8D,OAAO4pE,EAAQ3gB,QAAQ//E,QAAQiwF,MAC1C,IAAIpuF,EAAQ7d,KAAKkvG,MAAM7F,eACvBrpG,KAAKkvG,MAAMpI,OAAO1C,YAAY83B,GAAiBl2H,SAAQ,SAAU8F,GAC/DA,EAAKywH,UAAU5zB,EAAOhpG,QAAQ48H,cAEhCv8H,KAAKkvG,MAAMp8D,OAAO4pE,EAAQ3gB,QAAQ//E,QAAQytF,QAC7B,MAAT5rF,GACF7d,KAAKkvG,MAAM1F,aAAa3rF,EAAO6+F,EAAQ3gB,QAAQ//E,QAAQytF,aAKtD6yB,EAjDI,CAkDXz2B,EAAS9J,SAEXugC,EAAOnwB,SAAW,CAChBowB,UAAW,WACT,OAAmB,MAAfnoH,OAAOqoH,KAAqB,KACzB,SAAU9gG,GACf,IAAIxlB,EAAS/B,OAAOqoH,KAAKC,cAAc/gG,GACvC,OAAOxlB,EAAO/R,OAJP,GAOXkoF,SAAU,KAGZprF,EAAQwvG,UAAYwrB,EACpBh7H,EAAQ+6H,UAAYA,EACpB/6H,EAAQ66F,QAAUugC,GAIZ,SAAUn7H,EAAQD,GAExBC,EAAOD,QAAU,8LAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,+LAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,+LAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,+LAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,g7EAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,sTAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,iRAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,sUAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,oPAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,mVAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,kVAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,qOAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,mOAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,0WAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,6YAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,03CAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,gkBAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,goBAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,gMAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,0OAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,yQAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,+PAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,+ZAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,osBAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,uVAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,6XAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,wqBAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,ijBAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,6gBAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,gMAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,+qBAIX,SAAUC,EAAQD,GAExBC,EAAOD,QAAU,oKAIX,SAAUC,EAAQD,EAAS,GAEjC,aAGAsL,OAAOE,eAAexL,EAAS,aAAc,CAC3CkD,OAAO,IAETlD,EAAQ66F,QAAU76F,EAAQy7H,mBAAgB72H,EAE1C,IAAI4/D,EAAO,SAAShvC,EAAIqJ,EAAQ7gB,EAAUmjB,GAA2B,OAAXtC,IAAiBA,EAASmzD,SAASzrF,WAAW,IAAI8O,EAAO/J,OAAO60B,yBAAyBtB,EAAQ7gB,GAAW,QAAapZ,IAATyQ,EAAoB,CAAE,IAAIpW,EAASqM,OAAO2K,eAAe4oB,GAAS,OAAe,OAAX5/B,OAAmB,EAAkCu2B,EAAIv2B,EAAQ+e,EAAUmjB,GAAoB,GAAI,UAAW9rB,EAAQ,OAAOA,EAAKnS,MAAgB,IAAIsiD,EAASnwC,EAAKmgB,IAAK,YAAe5wB,IAAX4gD,EAAmDA,EAAOrmD,KAAKgiC,QAAnE,GAErZ6/D,EAAe,WAAc,SAASz1F,EAAiB0B,EAAQ6J,GAAS,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CAAE,IAAIi+D,EAAa/uD,EAAMlP,GAAIi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EAAO4vC,EAAWnnC,cAAe,EAAU,UAAWmnC,IAAYA,EAAW7vC,UAAW,GAAM1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAAiB,OAAO,SAAUo7B,EAAaC,EAAYC,GAAiJ,OAA9HD,GAAY31F,EAAiB01F,EAAY16F,UAAW26F,GAAiBC,GAAa51F,EAAiB01F,EAAaE,GAAqBF,GAA7gB,GAEfG,EAAU,EAAoB,GAE9BC,EAAWC,EAAuBF,GAElC0K,EAAW,EAAoB,GAE/BC,EAAYzK,EAAuBwK,GAEnC4qB,EAAQ,EAAoB,IAE5BC,EAASr1B,EAAuBo1B,GAEhC9xB,EAAa,EAAoB,IAEjCkyB,EAAS,EAAoB,IAE7BC,EAAUz1B,EAAuBw1B,GAErC,SAASx1B,EAAuBz1F,GAAO,OAAOA,GAAOA,EAAI8tF,WAAa9tF,EAAM,CAAEgvF,QAAShvF,GAEvF,SAASo2F,EAAgB37F,EAAU26F,GAAe,KAAM36F,aAAoB26F,GAAgB,MAAM,IAAI35F,UAAU,qCAEhH,SAAS46F,EAA2BzP,EAAMtzF,GAAQ,IAAKszF,EAAQ,MAAM,IAAI0P,eAAe,6DAAgE,OAAOhjG,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BszF,EAAPtzF,EAElO,SAASijG,EAAUC,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIh7F,UAAU,kEAAoEg7F,GAAeD,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CAAEuP,YAAa,CAAE5S,MAAOm/F,EAAUpsE,YAAY,EAAOD,UAAU,EAAM0I,cAAc,KAAe4jE,IAAYh3F,OAAOunF,eAAiBvnF,OAAOunF,eAAewP,EAAUC,GAAcD,EAASpM,UAAYqM,GAEje,IAAI00B,EAAiB,CAAC,CAAC,OAAQ,SAAU,QAAS,CAAC,CAAE5W,OAAQ,GAAK,CAAEA,OAAQ,GAAK,eAE7Esb,EAAc,SAAUxE,GAG1B,SAASwE,EAAY1tB,EAAOvvG,GAC1BwjG,EAAgBnjG,KAAM48H,GAES,MAA3Bj9H,EAAQ+6F,QAAQ+R,SAAwD,MAArC9sG,EAAQ+6F,QAAQ+R,QAAQrjE,YAC7DzpC,EAAQ+6F,QAAQ+R,QAAQrjE,UAAY8uF,GAGtC,IAAIh7B,EAAQkG,EAA2BpjG,MAAO48H,EAAYzlC,WAAa3qF,OAAO2K,eAAeylH,IAAcv8H,KAAKL,KAAMkvG,EAAOvvG,IAG7H,OADAu9F,EAAMgS,MAAM9lE,UAAUq9D,UAAUlmG,IAAI,aAC7B28F,EAaT,OAzBAoG,EAAUs5B,EAAaxE,GAevBl2B,EAAa06B,EAAa,CAAC,CACzB12H,IAAK,gBACL9B,MAAO,SAAuBqoG,GAC5BzsG,KAAKqmD,QAAU,IAAIs2E,EAAc38H,KAAKkvG,MAAOlvG,KAAKL,QAAQwtC,QAC1DntC,KAAKqmD,QAAQnyB,KAAKw9E,YAAYjF,EAAQrjE,WACtCppC,KAAKq4H,aAAa,GAAG/pH,MAAMjO,KAAKosG,EAAQrjE,UAAUilE,iBAAiB,WAAY4pB,EAAQl8B,SACvF/7F,KAAKs4H,aAAa,GAAGhqH,MAAMjO,KAAKosG,EAAQrjE,UAAUilE,iBAAiB,WAAY4pB,EAAQl8B,aAIpF6gC,EA1BS,CA2BhB/E,EAAO97B,SAET6gC,EAAYzwB,UAAW,EAAI5J,EAASxG,UAAS,EAAM,GAAI87B,EAAO97B,QAAQoQ,SAAU,CAC9EzR,QAAS,CACP+R,QAAS,CACPx/F,SAAU,CACRiqH,KAAM,SAAc9yH,GACbA,EAGHpE,KAAKkvG,MAAMhI,MAAM7gD,QAAQ+iE,OAFzBppH,KAAKkvG,MAAMvjE,OAAO,QAAQ,SAUtC,IAAIgxF,EAAgB,SAAUnE,GAG5B,SAASmE,EAAcztB,EAAO/hE,GAC5Bg2D,EAAgBnjG,KAAM28H,GAEtB,IAAIx4B,EAASf,EAA2BpjG,MAAO28H,EAAcxlC,WAAa3qF,OAAO2K,eAAewlH,IAAgBt8H,KAAKL,KAAMkvG,EAAO/hE,IAwBlI,OAtBAg3D,EAAO+K,MAAM3H,GAAG0F,EAAUlR,QAAQ/mE,OAAOwyE,eAAe,SAAU7gG,EAAMkX,EAAOm6F,EAAUtuG,GACvF,GAAI/C,IAASsmG,EAAUlR,QAAQ/mE,OAAOg6E,iBACtC,GAAa,MAATnxF,GAAiBA,EAAM7U,OAAS,GAAKU,IAAWujG,EAAUlR,QAAQ//E,QAAQiwF,KAAM,CAClF9H,EAAO1wD,OAEP0wD,EAAOjwE,KAAKiB,MAAMvb,KAAO,MACzBuqF,EAAOjwE,KAAKiB,MAAM6C,MAAQ,GAC1BmsE,EAAOjwE,KAAKiB,MAAM6C,MAAQmsE,EAAOjwE,KAAKujG,YAAc,KACpD,IAAI77F,EAAQuoE,EAAO+K,MAAMoN,SAASz+F,EAAMrU,MAAOqU,EAAM7U,QACrD,GAAqB,IAAjB4yB,EAAM5yB,OACRm7F,EAAO5rF,SAAS4rF,EAAO+K,MAAMlF,UAAUnsF,QAClC,CACL,IAAIg/G,EAAWjhG,EAAMA,EAAM5yB,OAAS,GAChCQ,EAAQ26F,EAAO+K,MAAMwR,SAASmc,GAC9B7zH,EAASiG,KAAKkQ,IAAI09G,EAAS7zH,SAAW,EAAG6U,EAAMrU,MAAQqU,EAAM7U,OAASQ,GACtEszH,EAAU34B,EAAO+K,MAAMlF,UAAU,IAAIlE,EAAWkG,MAAMxiG,EAAOR,IACjEm7F,EAAO5rF,SAASukH,SAETlqH,SAASokG,gBAAkB7S,EAAOukB,SAAWvkB,EAAO+K,MAAMvE,YACnExG,EAAOvwD,UAGJuwD,EAuCT,OApEAb,EAAUq5B,EAAenE,GAgCzBt2B,EAAay6B,EAAe,CAAC,CAC3Bz2H,IAAK,SACL9B,MAAO,WACL,IAAIukG,EAAS3oG,KAEb0lE,EAAKi3D,EAAcl1H,UAAU0vF,WAAa3qF,OAAO2K,eAAewlH,EAAcl1H,WAAY,SAAUzH,MAAMK,KAAKL,MAC/GA,KAAKk0B,KAAKw4E,cAAc,aAAanmG,iBAAiB,SAAS,WAC7DoiG,EAAOz0E,KAAKuyE,UAAUzzF,OAAO,iBAE/BhT,KAAKkvG,MAAM3H,GAAG0F,EAAUlR,QAAQ/mE,OAAO+5E,iBAAiB,WAEtD/pG,YAAW,WACT,IAAI2jG,EAAOz0E,KAAKuyE,UAAUtyC,SAAS,aAAnC,CACA,IAAIt2C,EAAQ8qF,EAAOuG,MAAM7F,eACZ,MAATxrF,GACF8qF,EAAOpwF,SAASowF,EAAOuG,MAAMlF,UAAUnsF,OAExC,QAGN,CACD3X,IAAK,SACL9B,MAAO,WACLpE,KAAKyzC,SAEN,CACDvtC,IAAK,WACL9B,MAAO,SAAkBozH,GACvB,IAAIlsH,EAAQo6D,EAAKi3D,EAAcl1H,UAAU0vF,WAAa3qF,OAAO2K,eAAewlH,EAAcl1H,WAAY,WAAYzH,MAAMK,KAAKL,KAAMw3H,GAC/HuF,EAAQ/8H,KAAKk0B,KAAKw4E,cAAc,qBAEpC,GADAqwB,EAAM5nG,MAAM6nG,WAAa,GACX,IAAV1xH,EAAa,OAAOA,EACxByxH,EAAM5nG,MAAM6nG,YAAc,EAAI1xH,EAAQyxH,EAAMtF,YAAc,EAAI,SAI3DkF,EArEW,CAsElB/E,EAAMlQ,aAERiV,EAAc/kC,SAAW,CAAC,yCAA0C,kCAAmC,mGAAoG,2BAA4B,UAAU5lF,KAAK,IAEtP9Q,EAAQy7H,cAAgBA,EACxBz7H,EAAQ66F,QAAU6gC,GAIZ,SAAUz7H,EAAQD,EAAS,GAEjCC,EAAOD,QAAU,EAAoB,OAIzB,e,qJChxWZ,GAAe+7H,EAAAA,EAAAA,GACbC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,GACA11H,OAAO,CACPmC,KAAM,UAENmO,MAAO,CACL0xC,OAAQ,CACN/iD,KAAM6R,OACNtO,UAAWjE,GACT,MAAO,CACL,MACA,QACA,SACA,QACAu7B,SAASv7B,KAGfo3H,WAAY,CACV12H,KAAM6R,OACNujF,QAAS,kBAEXuhC,cAAeC,QACfC,MAAOD,QACPE,YAAaF,QACbG,UAAW,CACT/2H,KAAM6R,OACNujF,QAAS,WAEX4hC,KAAM,CACJ5hC,QAAS,GACTp1F,KAAM,CAAC42H,QAAS/kH,QAChBtO,UAAWjE,GACT,MAAsB,kBAARA,IAA4B,IAARA,IAGtC23H,SAAUL,QACVM,UAAWN,QACX5hG,KAAM4hG,QACN52H,KAAM,CACJA,KAAM6R,OACNtO,UAAWjE,GACT,MAAO,CACL,OACA,QACA,UACA,WACAu7B,SAASv7B,KAGf7B,MAAO,CACLuC,KAAM42H,QACNxhC,SAAS,IAIb+hC,SAAU,CACRC,iBACE,IAAK/9H,KAAK0pD,OAAQ,OAAO,KAEzB,IAAIrnD,EAAkB,CACpB27H,YAAa,kBACbC,MAAO,CACL,CAAC,oBAAoBj+H,KAAK0pD,WAAW,IASzC,OALI1pD,KAAKs9H,gBACPj7H,EAAOrC,KAAKk+H,mBAAmBl+H,KAAKm+H,cAAe97H,GACnDA,EAAK47H,MAAM,+BAAgC,GAGtCj+H,KAAKo+H,eAAe,MAAO/7H,IAEpCg8H,sBACE,IAAKr+H,KAAKy9H,YAAa,OAAO,KAE9B,MAAM5qG,EAAQ7yB,KAAKs+H,UAEnB,OAAOt+H,KAAKo+H,eAAeG,EAAAA,EAAM,CAC/BP,YAAa,uBACbhmH,MAAO,CACL6a,MAAAA,EACA8qG,MAAM,EACNa,OAAO,GAETtjB,MAAO,CACL,aAAcl7G,KAAKy+H,SAASC,KAAKt9G,EAAEphB,KAAKq9H,aAE1C91B,GAAI,CACFoiB,MAAO,IAAO3pH,KAAKkkH,UAAW,IAE/B,CACDlkH,KAAKo+H,eAAeO,EAAAA,EAAO,CACzB3mH,MAAO,CAAE6a,MAAAA,IACR7yB,KAAK09H,cAGZkB,eACE,OAAK5+H,KAAK6+H,aAEH7+H,KAAKo+H,eAAeO,EAAAA,EAAO,CAChCX,YAAa,gBACbhmH,MAAO,CAAE6a,MAAO7yB,KAAKs+H,YACpBt+H,KAAK6+H,cALuB,MAOjCzhC,UACE,MAAMA,EAAmC,IACpC8/B,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAqCl9H,MACxC,kBAAmBu9H,QAAQv9H,KAAK0pD,QAChC,iBAAkB1pD,KAAKw9H,MACvB,oBAAqBx9H,KAAK49H,SAC1B,qBAAsB59H,KAAK69H,UAC3B,gBAAiB79H,KAAK27B,MAOxB,OAJI37B,KAAK0pD,SACP0zC,EAAQ,mBAAmBp9F,KAAK0pD,WAAY,GAGvC0zC,GAET+gC,gBACE,OAAOn+H,KAAK6yB,OAAS7yB,KAAK2G,MAE5Bk4H,eACE,OAAkB,IAAd7+H,KAAK29H,OACgB,kBAAd39H,KAAK29H,MAAqB39H,KAAK29H,KAAa39H,KAAK29H,OACvD,CAAC,QAAS,OAAQ,UAAW,WAAWn8F,SAASxhC,KAAK2G,OAEpD,IAAI3G,KAAK2G,SAElBm4H,iBACE,OACE9+H,KAAK++H,SACJxB,QAAQv9H,KAAK0pD,SAAW1pD,KAAKs9H,eAGlCyB,UACE,OAAO/+H,KAAK27B,MAAQ37B,KAAK49H,UAE3BU,YACE,OAAOt+H,KAAK8+H,eAAiB9+H,KAAKm+H,mBAAgBr4H,GAEpDk5H,SACE,SACEh/H,KAAK2G,MACJ3G,KAAKs9H,eACLt9H,KAAK49H,WAGDqB,EAAAA,EAAAA,QAAAA,SAAAA,OAAAA,KAAuCj/H,QAIlDk/H,UAEMl/H,KAAKm/H,OAAO3nH,eAAe,aAC7B4nH,EAAAA,EAAAA,IAAS,UAAW,WAAYp/H,OAIpCq/H,QAAS,CACPC,aACE,MAAMh7B,EAAW,CACftkG,KAAKu/H,OAAOC,SAAWx/H,KAAK4+H,aAC5B5+H,KAAKy/H,aACLz/H,KAAK+9H,eACL/9H,KAAKu/H,OAAO5pH,OACZ3V,KAAK0/H,aAAa9b,MACd5jH,KAAK0/H,aAAa9b,MAAM,CAAElc,OAAQ1nG,KAAK0nG,SACvC1nG,KAAKq+H,qBAGLh8H,EAAkB,CACtB27H,YAAa,oBAGf,OAAOh+H,KAAKo+H,eAAe,MAAO/7H,EAAMiiG,IAE1Cm7B,aACE,OAAOz/H,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,oBACZh+H,KAAKu/H,OAAOxjC,UAEjB4jC,WACE,IAAIt9H,EAAkB,CACpB27H,YAAa,UACb9iB,MAAO,CACL0kB,KAAM,SAERr4B,GAAIvnG,KAAK6/H,WACT5B,MAAOj+H,KAAKo9F,QACZjoE,MAAOn1B,KAAKioC,OACZ63F,WAAY,CAAC,CACXj2H,KAAM,OACNzF,MAAOpE,KAAKkkH,YAIhB,IAAKlkH,KAAKs9H,cAAe,CACvB,MAAMyC,EAAW//H,KAAK++H,QAAU/+H,KAAKggI,aAAehgI,KAAKk+H,mBACzD77H,EAAO09H,EAAS//H,KAAKm+H,cAAe97H,GAGtC,OAAOrC,KAAKo+H,eAAe,MAAO/7H,EAAM,CAACrC,KAAKs/H,gBAGhD53B,SACE1nG,KAAKkkH,UAAYlkH,KAAKkkH,WAI1B/kH,OAAQ2B,GACN,MAAM3B,EAASa,KAAK2/H,WAEpB,OAAK3/H,KAAK89C,WAEHh9C,EAAE,aAAc,CACrBkX,MAAO,CACLnO,KAAM7J,KAAK89C,WACXmiF,OAAQjgI,KAAKigI,OACbrqG,KAAM51B,KAAK41B,OAEZ,CAACz2B,IARyBA,M,gFCpOjC,SAAS+gI,EAAUxqH,EAAiB+nG,EAA+B0iB,GACjE,MAAM,KAAExsC,GAAO,GAAU8pB,EAAQ2iB,WAAa,GACxCh8H,EAAQq5G,EAAQr5G,MAChBzE,EAA4B,kBAAVyE,GAAsBA,EAAMzE,SAAY,CAAE+qC,SAAS,GACrEmiB,EAA2B,oBAAVzoD,GAAwB,gBAAiBA,EAAQA,EAAQA,EAAMyoD,QAEhF1+C,EAASwlF,EACXj+E,EACA+nG,EAAQt3C,IACNvzD,SAAS85F,cAAc+Q,EAAQt3C,KAC/B/xD,OAEDjG,IAELA,EAAO5H,iBAAiB,SAAUsmD,EAASltD,GAE3C+V,EAAG2qH,UAAY7zH,OAAOkJ,EAAG2qH,WACzB3qH,EAAG2qH,UAAWF,EAAMpgI,QAASugI,MAAQ,CACnCzzE,QAAAA,EACAltD,QAAAA,EAEAwO,OAAQwlF,OAAO7tF,EAAYqI,IAI/B,SAASoyH,EAAQ7qH,EAAiB+nG,EAA+B0iB,GAAY,MAC3E,GAAI,SAACzqH,EAAG2qH,aAAHG,EAAeL,EAAMpgI,QAASugI,MAAO,OAE1C,MAAM,QAAEzzE,EAAF,QAAWltD,EAAX,OAAoBwO,EAASuH,GAAOA,EAAG2qH,UAAUF,EAAMpgI,QAASugI,MAEtEnyH,EAAOtL,oBAAoB,SAAUgqD,EAASltD,UACvC+V,EAAG2qH,UAAUF,EAAMpgI,QAASugI,MAG9B,MAAMnkC,EAAS,CACpB+jC,SAAAA,EACAK,OAAAA,GAGF,Q,6BClCA,EAAeE,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,aAENi2H,WAAY,CAAE3jC,OAAAA,GAEdnkF,MAAO,CACL0oH,aAAcloH,OACdmoH,gBAAiB,CAACnoH,OAAQ4B,SAG5B/X,KAAM,KAAM,CACVu+H,cAAe,EACfC,iBAAkB,EAClB3c,UAAU,EACV4c,eAAe,EACfC,eAAgB,EAChBC,YAAa,EACb7yH,OAAQ,OAGV2vH,SAAU,CAMRmD,YACE,MAAyB,qBAAX7sH,QAMhB8sH,0BACE,OAAOlhI,KAAK2gI,gBACRvmH,OAAOpa,KAAK2gI,iBACZ,MAIRQ,MAAO,CACLL,gBACE9gI,KAAKghI,YAAchhI,KAAKghI,aAAehhI,KAAK4gI,eAE9C1c,WACElkH,KAAKghI,YAAc,IAIvBI,UACMphI,KAAK0gI,eACP1gI,KAAKmO,OAASyE,SAAS85F,cAAc1sG,KAAK0gI,cAErC1gI,KAAKmO,SACRkzH,EAAAA,EAAAA,IAAY,4CAA4CrhI,KAAK0gI,eAAgB1gI,QAKnFq/H,QAAS,CACPiC,WACOthI,KAAKihI,YAEVjhI,KAAK+gI,eAAiB/gI,KAAK4gI,cAC3B5gI,KAAK4gI,cAAgB5gI,KAAKmO,OACtBnO,KAAKmO,OAAO66F,UACZ50F,OAAOmtH,YAEXvhI,KAAK8gI,cAAgB9gI,KAAK4gI,cAAgB5gI,KAAK+gI,eAC/C/gI,KAAK6gI,iBAAmB5xH,KAAK4P,IAAI7e,KAAK4gI,cAAgB5gI,KAAKkhI,yBAE3DlhI,KAAKwhI,WAAU,KAEXvyH,KAAK4P,IAAI7e,KAAK4gI,cAAgB5gI,KAAKghI,aACnChhI,KAAKkhI,yBACLlhI,KAAKyhI,oBAQXA,oB,wCC/EJ,MAAMC,GAAazE,EAAAA,EAAAA,GACjB0E,EAAAA,EACAC,EACAC,EAAAA,EACA1E,EAAAA,GACA2E,EAAAA,EAAAA,GAAgB,MAAO,CACrB,cACA,eACA,iBACA,iBACA,aACA,cACA,WAKJ,MAAeJ,EAAWh6H,OAAO,CAC/BmC,KAAM,YAENi2H,WAAY,CAAE3jC,OAAAA,GAEd4lC,UACE,MAAO,CAAEC,QAAShiI,OAGpBgY,MAAO,CACLiqH,YAAa1E,QACb2E,aAAc3E,QACd4E,iBAAkB5E,QAClB6E,gBAAiB7E,QACjB8E,gBAAiB9E,QACjB+E,aAAc/E,QACdgF,eAAgBhF,QAChBiF,gBAAiBjF,QACjBkF,eAAgBlF,QAChBn5H,MAAO,CACLuC,KAAM42H,QACNxhC,SAAS,IAIb15F,OACE,MAAO,CACL6hH,SAAUlkH,KAAKoE,QAInB05H,SAAU,CACR4E,sBACE,OAAQ1iI,KAAK46B,OAAiB,SAAR,OAExBqmG,YACE,OACEW,EAAAA,QAAAA,SAAAA,UAAAA,KAA2C5hI,QAEzCA,KAAKuiI,gBACLviI,KAAKoiI,iBACLpiI,KAAKsiI,cACLtiI,KAAKmiI,kBACLniI,KAAK2iI,WAIJ3iI,KAAKoE,QAIZg5F,UACE,MAAO,IACFukC,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAuC3hI,MAC1C,sBAAuBA,KAAKg2H,UAAYh2H,KAAKmiI,iBAC7C,aAAa,EACb,qBAAsBniI,KAAKiiI,aAAejiI,KAAKkiI,aAC/C,gCAAiCliI,KAAKqiI,gBACtC,+BAAgCriI,KAAKoiI,gBACrC,oBAAqBpiI,KAAK4iI,WAAa5iI,KAAK6iI,KAAO7iI,KAAK8iI,OACxD,yBAA0B9iI,KAAK+iI,WAC/B,yBAA0B/iI,KAAK4gI,cAAgB,EAC/C,8BAA+B5gI,KAAKyiI,iBAGxCO,cACE,MAAMC,EAAYjjI,KAAKkhI,wBACvB,OAAOjyH,KAAKmQ,KAAK6jH,EAAYjjI,KAAK4gI,eAAiBqC,EAAW,IAEhEC,wBACE,IAAKljI,KAAKyiI,eAAgB,OAAOd,EAAAA,EAAAA,QAAAA,SAAAA,sBAAAA,KAAqD3hI,MAEtF,MAAMmf,EAAMnf,KAAKw9H,MAAQ,GAAK,GACxBp+G,EAAMpf,KAAKmjI,uBAEjB,OAAOhkH,GAAOC,EAAMD,GAAOnf,KAAKgjI,aAElCI,mBACE,IAAKpjI,KAAKqjI,YAAa,OAEvB,MAAMlkH,EAAM,KACNC,EAAM,IAEZ,OAAOD,GAAOC,EAAMD,GAAOnf,KAAKgjI,aAElCM,eACE,OAAKtjI,KAAK6iI,KAAO7iI,KAAKiiI,YAAoB,EAEnCjiI,KAAKy+H,SAAS8E,YAAY3pH,MAEnC4pH,oBACE,OAAKxjI,KAAK6iI,IAEH7iI,KAAKy+H,SAAS8E,YAAYjsD,IAFX,GAIxBmsD,kBACE,GAAKzjI,KAAKqiI,gBAEV,OAAOriI,KAAKgjI,aAEdG,yBACE,IAAIjqG,EAASyoG,EAAAA,EAAAA,QAAAA,SAAAA,sBAAAA,KAAqD3hI,MAElE,OADIA,KAAK0jI,aAAYxqG,GAAU7H,SAASrxB,KAAK2jI,kBACtCzqG,GAET0qG,gBACE,OAAK5jI,KAAK6iI,KAAO7iI,KAAKkiI,aAAqB,EAEpCliI,KAAKy+H,SAAS8E,YAAY1pH,OAEnCqnH,0BACE,OAAIlhI,KAAK2gI,gBAAwBvmH,OAAOpa,KAAK2gI,iBAEtC3gI,KAAKmjI,wBAA0BnjI,KAAKw9H,MAAQ,GAAK,KAE1DqG,oBACE,IACG7jI,KAAKihI,WACLjhI,KAAKoiI,iBAA0C,IAAvBpiI,KAAK4gI,eAAuB5gI,KAAKkkH,SAC1D,OAAO,EAET,GAAIlkH,KAAKkkH,SAAU,OAAO,EAE1B,MAAMse,EAAkBxiI,KAAKwiI,gBACzBxiI,KAAK8jI,eACL9jI,KAAKkjI,sBAET,OAAOljI,KAAK46B,OAAS4nG,GAAmBA,GAE1CO,aACE,OAAI/iI,KAAKoiI,iBAAmBpiI,KAAK0jI,WACxB1jI,KAAK4gI,cAAgB5gI,KAAKkhI,wBAG/BlhI,KAAKoiI,gBACuB,IAAvBpiI,KAAK4gI,eACV5gI,KAAK6jI,kBAAoB,IAI1B7jI,KAAK0jI,YACN1jI,KAAKwiI,kBACyB,IAA3BxiI,KAAK6jI,mBAEZE,cACE,OAAK/jI,KAAKmiI,iBAIHniI,KAAK4gI,cAAgB,EAHnBe,EAAAA,EAAAA,QAAAA,SAAAA,YAAAA,KAA2C3hI,OAKtDqjI,cACE,OACE1B,EAAAA,EAAAA,QAAAA,SAAAA,YAAAA,KAA2C3hI,OAC3CA,KAAKyiI,gBAGTx6F,SACE,MAAO,IACF05F,EAAAA,EAAAA,QAAAA,SAAAA,OAAAA,KAAsC3hI,MACzCmkE,UAAU6/D,EAAAA,EAAAA,IAAchkI,KAAKojI,iBAAkB,OAC/C9N,WAAW0O,EAAAA,EAAAA,IAAchkI,KAAKwjI,mBAC9BtiC,UAAW,eAAc8iC,EAAAA,EAAAA,IAAchkI,KAAK6jI,sBAC5CjqH,MAAMoqH,EAAAA,EAAAA,IAAchkI,KAAKsjI,cACzBzpH,OAAOmqH,EAAAA,EAAAA,IAAchkI,KAAK4jI,kBAKhCzC,MAAO,CACLF,UAAW,WACX4C,oBAQK7jI,KAAKihI,YACJjhI,KAAKiiI,aAAgBjiI,KAAKkiI,eAG9BliI,KAAKikI,cAEP1B,eAAgBt8H,GACdjG,KAAKkkH,UAAYj+G,GAA8B,IAAvBjG,KAAK4gI,eAE/B0B,aAAcr8H,GACZjG,KAAKkkH,UAAYj+G,GAAOjG,KAAK4gI,cAAgB5gI,KAAKkhI,0BAItDhC,UACMl/H,KAAKuiI,iBAAgBviI,KAAKkkH,UAAW,IAG3Cmb,QAAS,CACP6E,gBACE,MAAM/kI,EAASwiI,EAAAA,EAAAA,QAAAA,QAAAA,cAAAA,KAA4C3hI,MAM3D,OAJAb,EAAOkD,KAAOrC,KAAKmkI,GAAGhlI,EAAOkD,MAAQ,GAAIlD,EAAO2xF,IAAM,CACpD37D,MAAO,CAAEirD,QAASpgF,KAAKyjI,mBAGlBtkI,GAETilI,oBACE,OAAOpkI,KAAKuiI,eACR,EACAviI,KAAK8jI,eAAiB9jI,KAAK6jI,mBAEjCpC,eACMzhI,KAAKuiI,eACPviI,KAAKkkH,SAAWlkH,KAAK4gI,cAAgB5gI,KAAKkhI,yBAIxClhI,KAAKsiI,eACPtiI,KAAKkkH,SAAWlkH,KAAK8gI,eACnB9gI,KAAK4gI,cAAgB5gI,KAAKkhI,yBAG1BlhI,KAAK6gI,iBAAmB7gI,KAAKkhI,0BAEjClhI,KAAKghI,YAAchhI,KAAK4gI,kBAI5BzhI,OAAQ2B,GACN,MAAM3B,EAASwiI,EAAAA,EAAAA,QAAAA,OAAAA,KAA6B3hI,KAAMc,GAalD,OAXA3B,EAAOkD,KAAOlD,EAAOkD,MAAQ,GAEzBrC,KAAKihI,YACP9hI,EAAOkD,KAAKy9H,WAAa3gI,EAAOkD,KAAKy9H,YAAc,GACnD3gI,EAAOkD,KAAKy9H,WAAWv2H,KAAK,CAC1B48D,IAAKnmE,KAAK0gI,aACV72H,KAAM,SACNzF,MAAOpE,KAAKshI,YAITniI,M,iEClRX,OAAeshI,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,qBAENhK,YAAY,EAEZV,OAAQ2B,GAAG,MAAEujI,EAAF,UAAS1kG,EAAT,MAAoB3nB,EAApB,KAA2B3V,IACpC,MAAMohB,EAAIjX,OAAOQ,OAAO3K,EAAM,CAC5B27H,YAAc,uBAAuB37H,EAAK27H,aAAe,KAAM/tH,OAC/D+H,MAAO,IACFA,EACH2lH,MAAM,GAERp2B,GAAI5nE,IAGA2kG,EAAcD,IAAQtoC,QAE5B,OAAOj7F,EAAEy9H,EAAAA,EAAM96G,EAAG6gH,GAAe,CAACxjI,EAAE69H,EAAAA,EAAO,e,kGCf/C,GAAe1B,EAAAA,EAAAA,GACbgC,EAAAA,GACAv3H,OAAO,CACPmC,KAAM,QAENmO,MAAO,CACLusH,KAAM,CACJ59H,KAAM42H,QACNxhC,aAASj2F,GAEXsH,GAAI,CACFzG,KAAM6R,OACNujF,QAAS,OAEXyoC,MAAO,CACL79H,KAAM42H,QACNxhC,aAASj2F,IAIbg4H,SAAU,CACRkB,SACE,OAAOh/H,KAAKy+H,SAASv3B,MAAMq9B,OAI/BvjI,eACE,IAAKhB,KAAKy+H,UAAaz+H,KAAKy+H,WAAaz+H,KAAKS,MAC5C,MAAM,IAAIsL,MAAM,gIAIpB5M,OAAQ2B,GACN,MAAM64F,EAAU74F,EAAE,MAAO,CAAEk9H,YAAa,uBAAyBh+H,KAAKu/H,OAAOxjC,SAE7E,OAAOj7F,EAAE,MAAO,CACdk9H,YAAa,gBACbC,MAAO,CACL,wBAAyBj+H,KAAKy+H,SAAS3kH,IACvC,yBAA0B9Z,KAAKy+H,SAAS3kH,OACrC9Z,KAAKykI,cAEVvpB,MAAO,CAAE,YAAY,GACrBwpB,SAAU,CAAEt3H,GAAIpN,KAAKoN,KACpB,CAACusF,Q,sFCnCR,MAAMgrC,EAAmB,IACpBC,EAAAA,EACHr8F,SAAS,EACTs8F,gBAAgB,EAChB/mF,YAAY,GAId,OAAegnF,EAAAA,EAAAA,OAAe,CAC5Bj7H,KAAM,iBAENmO,MAAO,CACL+sH,cAAe,CACbp+H,KAAM42H,QACNxhC,SAAS,GAEXipC,gBAAiB,CACfr+H,KAAM42H,QACNxhC,SAAS,GAEX5jF,OAAQ,CACNxR,KAAMusF,SACN6I,QAAS,CAACj/E,EAAWmoH,EAAmBC,IAC/BA,EAASC,oBAAoBpgI,QAAQkgI,EAAUE,sBAAwB,GAGlFC,WAAY7H,QACZ8H,UAAW,CACT1+H,KAAMm+H,EAAAA,EAAAA,QAAAA,MAAAA,UAAAA,KACN/oC,QAAS,IAAM4oC,GAEjBW,SAAU/H,QACVgI,YAAa,CACX5+H,KAAM6R,SAIVnW,OACE,MAAO,CACLmjI,WAAYxlI,KAAKulI,cAIrBzH,SAAU,CACR1gC,UACE,MAAO,IACF0nC,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAsC9kI,MACzC,kBAAkB,EAClB,qCAAsCA,KAAK6jH,eAAiB,IAGhE4hB,gBACE,OAAOzlI,KAAK0lI,eAEdC,iBACE,OAAO3lI,KAAK4lI,cAAcnqH,KAAIqB,GAAQ9c,KAAK6lI,SAAS/oH,MAEtDgpH,oBACE,OAAO9lI,KAAK+lI,aACR/lI,KAAK0lI,cAAcl+D,MAAK1qD,IAAS9c,KAAKgmI,QAAQlpH,KAC9C9c,KAAK0lI,cAAc18H,OAAS,GAElCi9H,eACE,OAAyB,MAArBjmI,KAAKkmI,aAA6B,EAE/B1tH,OAAOxY,KAAK0qG,QAAQ1qG,KAAKkmI,eAAel9H,QAEjD08H,gBACE,OAAK1lI,KAAKmmI,aAAenmI,KAAKslI,UAAmC,MAAvBtlI,KAAKomI,eAA+BpmI,KAAKqmI,SAE5ErmI,KAAKqmI,SAASluH,QAAO2E,IAC1B,MAAM1Y,GAAQkiI,EAAAA,EAAAA,IAAoBxpH,EAAM9c,KAAKklI,UACvCvpG,EAAgB,MAATv3B,EAAgBoU,OAAOpU,GAAS,GAE7C,OAAOpE,KAAKmY,OAAO2E,EAAMtE,OAAOxY,KAAKomI,gBAAiBzqG,OAG1DyqG,eAAgB,CACd1vG,MACE,OAAO12B,KAAKwlI,YAEdvxG,IAAKhuB,GAGCjG,KAAKwlI,aAAev/H,IACtBjG,KAAKwlI,WAAav/H,EAClBjG,KAAKumI,MAAM,sBAAuBtgI,MAIxCugI,oBACE,OAAO,GAETC,UACE,OAAOzmI,KAAK0mI,eAAiB1mI,KAAK4lI,cAAc58H,OAAS,GAE3Dm9H,cACE,OACEnmI,KAAK2mI,UACL3mI,KAAK0mI,eAEL1mI,KAAK0mI,eACL1mI,KAAKomI,iBAAmBpmI,KAAK0qG,QAAQ1qG,KAAKkmI,eAG9CU,cACE,QAAK5mI,KAAK6mI,YAEH7mI,KAAK8lI,oBAAsB9lI,KAAKolI,aAEzC0B,cACE,MAAM9uH,EAAQ8sH,EAAAA,EAAAA,QAAAA,SAAAA,YAAAA,KAA0C9kI,MAExD,OADCgY,EAAc+uH,aAAe,2BAA4B/uH,EAAc+uH,cAAgB,KAAK92H,OACtF,IACF00H,KACA3sH,IAGP0uH,gBACE,OAA8B,MAAvB1mI,KAAKomI,gBACc,KAAxBpmI,KAAKomI,gBAETF,eACE,OAAIlmI,KAAK2mI,SAAiB,KAEnB3mI,KAAK4lI,cAAchqC,MAAK9yF,GACtB9I,KAAKgnI,gBAAgBhnI,KAAK6lI,SAAS/8H,GAAI9I,KAAK6lI,SAAS7lI,KAAKinI,mBAGrEC,WACE,MAAM7kI,EAAOyiI,EAAAA,EAAAA,QAAAA,SAAAA,SAAAA,KAAuC9kI,MAapD,OAXAqC,EAAK2V,MAAQ,IACR3V,EAAK2V,MACRmoB,MAAOngC,KAAKmnI,iBACZ7B,SACEtlI,KAAKslI,WACJtlI,KAAKmmI,cACLnmI,KAAK0lI,cAAc18H,OAEtBu8H,YAAavlI,KAAKomI,gBAGb/jI,IAIX8+H,MAAO,CACLuE,cAAe,yBACfuB,cAAe,YACfJ,UAAW5gI,GACLA,GACF2M,SAASrM,iBAAiB,OAAQvG,KAAKonI,QACvCpnI,KAAKqnI,MAAM/0G,OAAStyB,KAAKqnI,MAAM/0G,MAAM2wF,WAErCrwG,SAAS/P,oBAAoB,OAAQ7C,KAAKonI,QAC1CpnI,KAAK83G,OACL93G,KAAKsnI,eAGTC,aAActhI,IACRA,GAAQjG,KAAKwnI,UAEjBxnI,KAAKwlI,WAAa,OAEpBrlG,MAAOl6B,EAAKwhI,GAONA,GAAUA,EAAOz+H,SACnBhJ,KAAKolI,aACLplI,KAAK6mI,WACJ7mI,KAAKunI,eACNthI,EAAI+C,QACJhJ,KAAK0nI,gBAETnC,YAAat/H,GACXjG,KAAKwlI,WAAav/H,GAEpBmgI,eAAgB,0BAChBlB,SAAU,cAGZhG,UACEl/H,KAAK2nI,aAGPC,YACEh1H,SAAS/P,oBAAoB,OAAQ7C,KAAKonI,SAG5C/H,QAAS,CACPwI,uBAAwB5hI,EAAcwhI,GAGpC,GAAIxhI,IAAQwhI,EAAZ,CAEA,IAAKznI,KAAKglI,gBAAiB,CACzB,MAAM8C,EAAkBL,EAAOznI,KAAKqnI,MAAMU,KAAKC,WAE3CF,EACF9nI,KAAKioI,aAAahiI,EAAIs9D,WAAUz6D,GAAKA,IAAMg/H,KAE3C9nI,KAAKioI,cAAc,GAErBjoI,KAAKumI,MAAM,oBAAqBvmI,KAAKqnI,MAAMU,KAAKC,WAGlDhoI,KAAKwhI,WAAU,KAEVxhI,KAAKomI,iBACU,IAAfngI,EAAI+C,QACFhJ,KAAKglI,mBAGVhlI,KAAKqnI,MAAMU,KAAKG,WAEZloI,KAAKglI,iBAAmB/+H,EAAI+C,SAC9BhJ,KAAKioI,aAAa,GAClBjoI,KAAKumI,MAAM,oBAAqBvmI,KAAKqnI,MAAMU,KAAKC,kBAItDG,0BACEnoI,KAAKooI,wBAEPA,uBAEEpoI,KAAKunI,cAAgBvnI,KAAKqnI,MAAMU,MAAQ/nI,KAAKqnI,MAAMU,KAAKM,oBAE1DC,oBAAqB3qB,GAGf39G,KAAK0mI,gBAEL1mI,KAAK2mI,UAAYhpB,IAAY4qB,EAAAA,GAAAA,MACH,IAAxBvoI,KAAK6jH,cACP7jH,KAAK6jH,cAAgB7jH,KAAK4lI,cAAc58H,OAAS,EAEjDhJ,KAAK6jH,gBAEE7jH,KAAK2mI,UAAYhpB,IAAY4qB,EAAAA,GAAAA,MAClCvoI,KAAK6jH,eAAiB7jH,KAAK4lI,cAAc58H,OAAS,EACpDhJ,KAAK6jH,eAAiB,EAEtB7jH,KAAK6jH,gBAEElG,IAAY4qB,EAAAA,GAAAA,WAAsB5qB,IAAY4qB,EAAAA,GAAAA,WACvDvoI,KAAKwoI,sBAGTA,oBACE,MAAMle,EAAWtqH,KAAK6jH,cAChB4kB,EAAUzoI,KAAK4lI,cAActb,GAGnC,IACGtqH,KAAK0oI,eACN1oI,KAAK2oI,YAAYF,GACjB,OAEF,MAAMhwH,EAAYzY,KAAK4lI,cAAc58H,OAAS,EAI9C,IAC0B,IAAxBhJ,KAAK6jH,eACS,IAAdprG,EAIA,YAFAzY,KAAK6jH,cAAgBprG,GAKvB,MAAMzP,EAAShJ,KAAK4lI,cAAc58H,OAC5B4/H,EAAYte,IAAathH,EAAS,EACpCshH,EACAA,EAAW,EACTue,EAAW7oI,KAAK4lI,cAAcgD,GAE/BC,EAGH7oI,KAAKujH,WAAWklB,GAFhBzoI,KAAK8oI,SAAS9oI,KAAK2mI,SAAW,GAAK,MAKrC3mI,KAAK6jH,cAAgB+kB,GAEvBG,oBACE/oI,KAAKomI,eAAiB,KAEtBtB,EAAAA,EAAAA,QAAAA,QAAAA,kBAAAA,KAA+C9kI,OAEjDgpI,WACE,MAAM12G,EAAQ22G,EAAAA,EAAAA,QAAAA,QAAAA,SAAAA,KAAyCjpI,MAUvD,OARAsyB,EAAMjwB,MAAO6mI,EAAAA,EAAAA,IAAU52G,EAAMjwB,KAAO,CAClC64G,MAAO,CACL,yBAAyBiuB,EAAAA,EAAAA,IAAqBnpI,KAAKqnI,MAAMU,KAAM,iBAC/DqB,cAAcD,EAAAA,EAAAA,IAAqB72G,EAAMjwB,KAAO,qBAAsB,QAExEqiI,SAAU,CAAEtgI,MAAOpE,KAAKomI,kBAGnB9zG,GAET+2G,eACE,MAAMC,EAAOxE,EAAAA,EAAAA,QAAAA,QAAAA,aAAAA,KAA0C9kI,MAIvD,OAFAspI,EAAKjnI,KAAM64G,MAAO0kB,KAAO,WAElB0J,GAETC,gBACE,OAAOvpI,KAAKwnI,SAAWxnI,KAAK2mI,SACxB7B,EAAAA,EAAAA,QAAAA,QAAAA,cAAAA,KAA2C9kI,MAC3C,IAENi2B,QAAS/lB,GACFlQ,KAAK0oI,gBAEV1oI,KAAK6jH,eAAiB,EACjB7jH,KAAK6jH,eAAiB,EACvB7jH,KAAKwpI,UAEJxpI,KAAKypI,cAAcv5H,EAAE/B,SAASnO,KAAK0nI,iBAE1CgC,QAASx5H,GACP,GACElQ,KAAK6jH,eAAiB,IACrB3zG,EAAE/B,OACH,OAEF,MAAMA,EAAS+B,EAAE/B,OACX/J,EAAQ+J,EAAO/J,MAGjB+J,EAAO/J,OAAOpE,KAAK0nI,eAElB1nI,KAAK2mI,UAAsB,KAAVviI,GAAcpE,KAAKwoI,oBAEzCxoI,KAAKomI,eAAiBhiI,EACtBpE,KAAK2pI,SAAWx7H,EAAOy7H,UAAYz7H,EAAOy7H,SAASD,UAErDE,UAAW35H,GACT,MAAMytG,EAAUztG,EAAEytG,SAGhBztG,EAAEitG,SACD,CAACorB,EAAAA,GAAAA,KAAeA,EAAAA,GAAAA,KAAc/mG,SAASm8E,IAExCmnB,EAAAA,EAAAA,QAAAA,QAAAA,UAAAA,KAAuC9kI,KAAMkQ,GAO/ClQ,KAAKsoI,oBAAoB3qB,IAE3BmsB,YAAa55H,KACb65H,UAAW75H,GACT40H,EAAAA,EAAAA,QAAAA,QAAAA,UAAAA,KAAuC9kI,KAAMkQ,GAC7ClQ,KAAKsnI,cAEP0C,SAAU95H,GAERA,EAAE4uG,iBAKF9+G,KAAK0nI,gBAEPnkB,WAAYzmG,GACVgoH,EAAAA,EAAAA,QAAAA,QAAAA,WAAAA,KAAwC9kI,KAAM8c,GAC9C9c,KAAK2nI,aAEPsC,mBACEnF,EAAAA,EAAAA,QAAAA,QAAAA,iBAAAA,KAA8C9kI,MAIzCA,KAAK6mI,WAAW7mI,KAAK2nI,aAE5BA,YAGE3nI,KAAKwhI,WAAU,KAEVxhI,KAAK2mI,UACL3mI,KAAKomI,gBACLpmI,KAAKunI,eAENvnI,KAAKomI,gBACFpmI,KAAK4lI,cAAc58H,QACpBhJ,KAAK2mI,UACL3mI,KAAKwnI,QAEH,KACAxnI,KAAK0qG,QAAQ1qG,KAAKkmI,mBAI5BoB,cAEKtnI,KAAK0mI,eACL1mI,KAAKinI,iBAILjnI,KAAK2mI,UACL3mI,KAAKgnI,gBACJhnI,KAAKomI,eACLpmI,KAAK6lI,SAAS7lI,KAAKinI,iBAGrBjnI,KAAK2nI,cAGT3B,QAASlpH,GACP,OAAO9c,KAAK2lI,eAAe5gI,QAAQ/E,KAAK6lI,SAAS/oH,KAAU,GAE7DsqH,OAAQ51F,GAAqB,QAC3B,IAA4B,IAAxBxxC,KAAK6jH,cAAsB,OAE/B,MAAMqmB,EAAclqI,KAAK4lI,cAAc5lI,KAAK6jH,eACtCsmB,EAAkBnqI,KAAK0qG,QAAQw/B,GACrC,SAAA14F,EAAM44F,gBAAN,EAAqBC,QAAQ,aAAcF,GAC3C,SAAA34F,EAAM44F,gBAAN,EAAqBC,QAAQ,2CAA4CF,GACzE34F,EAAMstE,sB,wHCtbZ,GAAeme,EAAAA,EAAAA,GACbqN,EAAAA,EACAC,EAAAA,EACAC,EAAAA,GAEA9iI,OAAO,CACPmC,KAAM,WAENmO,MAAO,CACL4B,KAAM2jH,QACN1jH,MAAO0jH,QACP1gH,KAAM,CACJlW,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,KAIb+hC,SAAU,CACR1gC,UACE,MAAO,CACL,iBAAkBp9F,KAAK4Z,KACvB,kBAAmB5Z,KAAK6Z,SACrB7Z,KAAKyqI,iBAGZxiG,SACE,MAAO,CACL/O,QAAQ8qG,EAAAA,EAAAA,IAAchkI,KAAK6c,MAC3B6tH,UAAU1G,EAAAA,EAAAA,IAAchkI,KAAK6c,MAC7Bmb,OAAOgsG,EAAAA,EAAAA,IAAchkI,KAAK6c,SACvB7c,KAAK2qI,oBAKdxrI,OAAQ2B,GACN,MAAMuB,EAAO,CACX27H,YAAa,WACbC,MAAOj+H,KAAKo9F,QACZjoE,MAAOn1B,KAAKioC,OACZs/D,GAAIvnG,KAAK4qI,YAGX,OAAO9pI,EAAE,MAAOd,KAAKk+H,mBAAmBl+H,KAAK6yB,MAAOxwB,GAAOrC,KAAKu/H,OAAOxjC,a,sJClC3E,GAAekhC,EAAAA,EAAAA,GACbqN,EAAAA,GACAO,EAAAA,EAAAA,GAAoB,CAAC,OAAQ,WAC7B5L,EAAAA,EACA9B,EAAAA,EACAC,EAAAA,GAEA11H,OAAO,CACPmC,KAAM,UAENmO,MAAO,CACL8yH,OAAQvN,QACRwN,SAAUxN,QACV1qG,MAAO,CACLlsB,KAAM6R,OACNujF,QAAS,WAEXlkF,QAAS,CAAEmzH,UAAU,GACrB3uH,IAAKkhH,QACLvgF,MAAO,CACLr2C,KAAM6R,OACNujF,QAAS,kBAEX4hC,KAAMnlH,OACNyyH,OAAQ1N,QACRj1F,QAAS,CAACluB,OAAQ5B,QAClB+vB,QAAS,CAACnuB,OAAQ5B,QAClB0yH,QAAS3N,QACT4N,KAAM5N,QACNz/E,WAAY,CACVn3C,KAAM6R,OACNujF,QAAS,2BAEX33F,MAAO,CAAE23F,SAAS,IAGpB+hC,SAAU,CACR1gC,UACE,MAAO,CACL,kBAAmBp9F,KAAK8qI,OACxB,oBAAqB9qI,KAAK+qI,SAC1B,kBAAmB/qI,KAAK46B,OACxB,eAAgB56B,KAAKqc,IACrB,gBAA8B,MAAbrc,KAAK29H,KACtB,kBAAmB39H,KAAKirI,OACxB,gBAAiBjrI,KAAK4Z,KACtB,mBAAoB5Z,KAAKkrI,QACzB,gBAAiBlrI,KAAKmrI,QACnBnrI,KAAKykI,eAGZ2G,iBACE,OAAOprI,KAAK46B,OAAS,OAAS56B,KAAKqrI,iBAErC/H,eACE,OAAItjI,KAAKsrI,MACAtrI,KAAK4Z,KAAO5Z,KAAKurI,gBAAkB,OAGrCvrI,KAAK4Z,KAAO,OAAS5Z,KAAKurI,iBAEnC3H,gBACE,OAAI5jI,KAAKsrI,MACAtrI,KAAK4Z,KAAO,OAAS5Z,KAAKurI,gBAG3BvrI,KAAK4Z,KAAgB5Z,KAAKurI,gBAAd,QAEtBC,cACE,OAAOxrI,KAAK46B,OAAS56B,KAAKqrI,gBAAkB,QAE9CE,kBACE,OAAOvrI,KAAKyrI,aAAazrI,KAAKsoC,UAEhC+iG,kBACE,OAAOrrI,KAAKyrI,aAAazrI,KAAKuoC,UAEhC+iG,QACE,OAAOtrI,KAAKy+H,SAAS3kH,KAIvBkrC,SACE,OAAIhlD,KAAKkrI,QAAgBlrI,KAAKqc,IAAM,EAAI,GACjCrc,KAAKqc,IAAM,EAAI,GAExB4rB,SACE,OAAIjoC,KAAKirI,OAAe,GAEjB,CACLrwG,OAAQ56B,KAAKorI,eACbxxH,KAAM5Z,KAAKsjI,aACXzpH,MAAO7Z,KAAK4jI,cACZjpG,IAAK36B,KAAKwrI,eAKhBnM,QAAS,CACPoM,aAAczmF,GACZ,MAAO,gBAAeg/E,EAAAA,EAAAA,IAAch/E,GAAUhlD,KAAKglD,YAErD0mF,WACE,MAAMhN,EAAO1+H,KAAKy+H,SAASC,KACrB1hF,EAAQh9C,KAAKm/H,OAAO,eAAiBT,EAAKt9G,EAAEphB,KAAKg9C,OAEjD36C,EAAOrC,KAAKk+H,mBAAmBl+H,KAAK6yB,MAAO,CAC/CmrG,YAAa,iBACb7oG,MAAOn1B,KAAKioC,OACZizE,MAAO,CACL,cAAel7G,KAAKm/H,OAAO,gBAAkB,OAC7C,aAAcniF,EACd,YAAah9C,KAAKm/H,OAAO,cAAgB,SACzC74E,MAAOtmD,KAAKm/H,OAAO74E,MACnBs5E,KAAM5/H,KAAKm/H,OAAOS,MAAQ,UAE5BE,WAAY,CAAC,CACXj2H,KAAM,OACNzF,MAAOpE,KAAKkkH,aAIVynB,EAAQ3rI,KAAKo+H,eAAe,OAAQ/7H,EAAM,CAACrC,KAAK4rI,oBAEtD,OAAK5rI,KAAK89C,WAEH99C,KAAKo+H,eAAe,aAAc,CACvCpmH,MAAO,CACLnO,KAAM7J,KAAK89C,WACXmiF,OAAQjgI,KAAKigI,OACbrqG,KAAM51B,KAAK41B,OAEZ,CAAC+1G,IARyBA,GAU/BC,kBAEE,GAAI5rI,KAAKqc,IAAK,OAEd,MAAMitH,GAAOuC,EAAAA,EAAAA,IAAQ7rI,KAAM,SAE3B,OAAIspI,IACAtpI,KAAK6X,QAAgBW,OAAOxY,KAAK6X,SACjC7X,KAAK29H,KAAa39H,KAAKo+H,eAAeO,EAAAA,EAAO3+H,KAAK29H,WAAtD,IAIFmO,kBACE,OAAO9rI,KAAKo+H,eAAe,OAAQ,CACjCJ,YAAa,oBACZ,CAACh+H,KAAK0rI,eAIbvsI,OAAQ2B,GACN,MAAM6qI,EAAQ,CAAC3rI,KAAK8rI,mBACdxnC,EAAW,EAACunC,EAAAA,EAAAA,IAAQ7rI,QAExB,cAAe+rI,EACf,aAAcC,EACd,YAAaC,EAHT,KAIJrM,EAJI,MAKJt5E,KACG40D,GACDl7G,KAAKm/H,OAKT,OAHIn/H,KAAKirI,QAAUjrI,KAAK4Z,KAAM0qF,EAASv5F,QAAQ4gI,GAC1CrnC,EAAS/6F,KAAKoiI,GAEZ7qI,EAAE,OAAQ,CACfk9H,YAAa,UACb9iB,MAAAA,EACA+iB,MAAOj+H,KAAKo9F,SACXkH,O,6GCnLP,EAAegmC,EAAAA,EAAAA,OAAiB,CAC9BzgI,KAAM,sBAENi2H,WAAY,CAAEjqG,UAAAA,EAAAA,GAEd7d,MAAO,CACLgxG,OAAQuU,QACR2O,cAAe3O,QACfp3G,OAAQ,CACNxf,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GAEXl/E,KAAM,CACJlW,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,IAEX/jE,MAAO,CACLrxB,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GAEX33F,MAAO,CACLuC,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,IAIb15F,KAAM,KAAM,CACVo3B,OAAQ,GACR0yG,WAAW,IAGbrO,SAAU,CACRsO,iBACE,OAAOhyH,OAAOpa,KAAK6c,OAAS7c,KAAKgpH,OAAS,EAAI,IAGhD3jE,gBACE,OAAO,EAAIp2C,KAAKgO,GAAKjd,KAAKy5B,QAG5B2jE,UACE,MAAO,CACL,+BAAgCp9F,KAAKmsI,UACrC,qCAAsCnsI,KAAKksI,cAC3C,8BAA+BlsI,KAAKgpH,SAIxCqjB,kBACE,OAAIrsI,KAAKoE,MAAQ,EACR,EAGLpE,KAAKoE,MAAQ,IACR,IAGFuW,WAAW3a,KAAKoE,QAGzBkoI,kBACE,OAAOr9H,KAAK8O,MAA2B,IAArB/d,KAAKqlD,eAAwB,KAGjDknF,mBACE,OAAS,IAAMvsI,KAAKqsI,iBAAmB,IAAOrsI,KAAKqlD,cAAgB,MAGrExpB,cACE,OAAOzhB,OAAOpa,KAAKg4B,QAAUh4B,KAAK6c,KAAO7c,KAAKwsI,YAAc,GAG9DvkG,SACE,MAAO,CACL/O,QAAQ8qG,EAAAA,EAAAA,IAAchkI,KAAKosI,gBAC3Bp0G,OAAOgsG,EAAAA,EAAAA,IAAchkI,KAAKosI,kBAI9BK,YACE,MAAO,CACLvrC,UAAW,UAAU9mF,OAAOpa,KAAKmmB,gBAIrCqmH,cACE,OAAOxsI,KAAKy5B,QAAU,EAAIrf,OAAOpa,KAAKg4B,QAAUh4B,KAAK6c,QAIzDwiH,QAAS,CACPqN,UAAW7iI,EAAcm7C,GACvB,OAAOhlD,KAAKo+H,eAAe,SAAU,CACnCH,MAAO,wBAAwBp0H,IAC/BqxG,MAAO,CACL9gF,KAAM,cACNuyG,GAAI,EAAI3sI,KAAKwsI,YACbI,GAAI,EAAI5sI,KAAKwsI,YACb3nH,EAAG7kB,KAAKy5B,OACR,eAAgBz5B,KAAK67B,YACrB,mBAAoB77B,KAAKssI,gBACzB,oBAAqBtnF,MAI3B6nF,SACE,MAAMvoC,EAAW,CACftkG,KAAKksI,eAAiBlsI,KAAK0sI,UAAU,WAAY,GACjD1sI,KAAK0sI,UAAU,UAAW1sI,KAAKusI,mBAGjC,OAAOvsI,KAAKo+H,eAAe,MAAO,CAChCjpG,MAAOn1B,KAAKysI,UACZvxB,MAAO,CACL4xB,MAAO,6BACPC,QAAS,GAAG/sI,KAAKwsI,eAAexsI,KAAKwsI,eAAe,EAAIxsI,KAAKwsI,eAAe,EAAIxsI,KAAKwsI,gBAEtFloC,IAEL0oC,UACE,OAAOhtI,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,6BACZh+H,KAAKu/H,OAAOxjC,UAEjBkxC,UAAW14E,EAAsCF,EAAgC64E,GAC/EltI,KAAKmsI,UAAYe,IAIrB/tI,OAAQ2B,GACN,OAAOA,EAAE,MAAOd,KAAKggI,aAAahgI,KAAK6yB,MAAO,CAC5CmrG,YAAa,sBACb9iB,MAAO,CACL0kB,KAAM,cACN,gBAAiB,EACjB,gBAAiB,IACjB,gBAAiB5/H,KAAKksI,mBAAgBpmI,EAAY9F,KAAKqsI,iBAEzDpO,MAAOj+H,KAAKo9F,QACZ0iC,WAAY,CAAC,CACXj2H,KAAM,YACNzF,MAAOpE,KAAKitI,YAEd93G,MAAOn1B,KAAKioC,OACZs/D,GAAIvnG,KAAK4qI,aACP,CACF5qI,KAAK6sI,SACL7sI,KAAKgtI,eChKX,I,gFCuBA,MAAMtL,GAAazE,EAAAA,EAAAA,GACjBC,EAAAA,EACAiQ,EAAAA,EACAC,EAAAA,EACAC,EAAAA,GACAC,EAAAA,EAAAA,GAAiB,cACjBC,EAAAA,EAAAA,GAAkB,eAOpB,MAAe7L,EAAWh6H,SAAkBA,OAAO,CACjDmC,KAAM,QAENmO,MAAO,CACLw1H,YAAa,CACX7mI,KAAM6R,OACNujF,UACE,OAAK/7F,KAAKytI,UAEHztI,KAAKytI,UAAUD,YAFM,KAKhC1pC,MAAOy5B,QACPmQ,UAAWnQ,QACXoQ,IAAKpQ,QACLI,KAAMJ,QACNqQ,QAASrQ,QACTK,SAAUL,QACVsQ,MAAOtQ,QACPuQ,mBAAoBvQ,QACpBx+G,QAASw+G,QACTzsC,IAAK,CACHnqF,KAAM6R,OACNujF,QAAS,UAEXpgE,KAAM4hG,QACN4N,KAAM5N,QACN52H,KAAM,CACJA,KAAM6R,OACNujF,QAAS,UAEX33F,MAAO,MAGT/B,KAAM,KAAM,CACV0rI,WAAY,kBAGdjQ,SAAU,CACR1gC,UACE,MAAO,CACL,SAAS,KACN+vC,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAuCntI,MAC1C,kBAAmBA,KAAK4iI,SACxB,eAAgB5iI,KAAK8jG,MACrB,gBAAiB9jG,KAAK46B,OACtB,kBAAmB56B,KAAKg1C,SACxB,qBAAsBh1C,KAAKguI,WAC3B,aAAchuI,KAAK2tI,IACnB,eAAgB3tI,KAAK8iI,MACrB,gBAAiB9iI,KAAKiuI,MACtB,cAAejuI,KAAK29H,KACpB,cAAe39H,KAAK4Z,KACpB,iBAAkB5Z,KAAK4tI,QACvB,kBAAmB5tI,KAAK49H,SACxB,eAAgB59H,KAAK6tI,MACrB,eAAgB7tI,KAAK6Z,MACrB,eAAgB7Z,KAAKkuI,QACrB,iBAAkBluI,KAAK+e,QACvB,gBAAiB/e,KAAK4xB,GACtB,cAAe5xB,KAAK27B,KACpB,cAAe37B,KAAKmrI,KACpB,aAAcnrI,KAAK26B,OAChB36B,KAAKykI,gBACLzkI,KAAKmuI,gBACLnuI,KAAKouI,oBACLpuI,KAAKquI,kBAGZC,oBACE,IAAItuI,KAAKg1C,SAET,OAAOu5F,EAAAA,EAAAA,QAAAA,SAAAA,kBAAAA,KAAmDvuI,OAE5DwuI,iBAAc,MACZ,MAAMC,GAAgBzuI,KAAK29H,OAAQ39H,KAAK2tI,KAAM,CAAEe,QAAQ,GACxD,OAAI1uI,KAAKg1C,WACJ,SAAOh1C,KAAK2uI,QAAZ,EAAsBF,IAE7BR,QACE,OAAQjuI,KAAK27B,OAAS37B,KAAK6tI,QAAU7tI,KAAK49H,WAAa59H,KAAK29H,MAE9DqQ,aACE,OAAOzQ,SACJv9H,KAAK29H,OACL39H,KAAK27B,OACL37B,KAAK49H,WACL59H,KAAK0tI,YACL1tI,KAAKg1C,WACLh1C,KAAK6tI,QACa,MAAlB7tI,KAAK4uI,WAAqBx0H,OAAOpa,KAAK4uI,WAAa,KAGxDV,UACE,OAAO3Q,QACLv9H,KAAK29H,MACL39H,KAAK2tI,MAGT1lG,SACE,MAAO,IACFjoC,KAAK2qI,oBAKdzL,UACE,MAAM2P,EAAgB,CACpB,CAAC,OAAQ,QACT,CAAC,UAAW,YACZ,CAAC,QAAS,YAIZA,EAAc7oI,SAAQ,EAAEumC,EAAU+oD,MAC5Bt1F,KAAKm/H,OAAO3nH,eAAe+0B,KAAW6yF,EAAAA,EAAAA,IAAS7yF,EAAU+oD,EAAat1F,UAI9Eq/H,QAAS,CACP1V,MAAOz5G,IAEJlQ,KAAK8tI,qBAAuB9tI,KAAK2tI,KAAOz9H,EAAE4+H,QAAU9uI,KAAK+uI,IAAIj3B,OAC9D93G,KAAKumI,MAAM,QAASr2H,GAEpBlQ,KAAKytI,WAAaztI,KAAK0nG,UAEzB+3B,aACE,OAAOz/H,KAAKo+H,eAAe,OAAQ,CACjCJ,YAAa,kBACZh+H,KAAKu/H,OAAOxjC,UAEjBizC,YACE,OAAOhvI,KAAKo+H,eAAe,OAAQ,CACjCH,MAAO,iBACNj+H,KAAKu/H,OAAO0P,QAAU,CAACjvI,KAAKo+H,eAAe8Q,EAAmB,CAC/Dl3H,MAAO,CACLk0H,eAAe,EACfrvH,KAAM,GACNmb,MAAO,SAMf74B,OAAQ2B,GACN,MAAMwjG,EAAW,CACftkG,KAAKy/H,aACLz/H,KAAK4tI,SAAW5tI,KAAKgvI,cAEjB,IAAEl+C,EAAF,KAAOzuF,GAASrC,KAAKmvI,oBACrBpP,EAAW//H,KAAKiuI,MAClBjuI,KAAKk+H,mBACLl+H,KAAKggI,aAUT,MARY,WAARlvC,IACFzuF,EAAK64G,MAAOv0G,KAAO3G,KAAK2G,KACxBtE,EAAK64G,MAAOlmE,SAAWh1C,KAAKg1C,UAE9B3yC,EAAK64G,MAAO92G,MAAQ,CAAC,SAAU,UAAUo9B,gBAAgBxhC,KAAKoE,OAC1DpE,KAAKoE,MACL2L,KAAKI,UAAUnQ,KAAKoE,OAEjBtD,EAAEgwF,EAAK9wF,KAAKg1C,SAAW3yC,EAAO09H,EAAS//H,KAAK6yB,MAAOxwB,GAAOiiG,O,+CCvMrE,OAAei6B,EAAf,G,sHCDA,EAAekC,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,YAENmO,MAAO,CACLozB,OAAQ5yB,QAGVslH,SAAU,CACRsR,gBACE,OAAOpvI,KAAKorC,QAAUprC,KAAKy+H,SAASC,KAAK95F,YCU/C,EAAe67F,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,QAENw1H,QAAS,CACPgQ,6BAA8BnnG,EAAgBonG,GAC5C,OAAOtvI,KAAKuvI,sBAAsB,CAChC,CAAC,QAAUrnG,GAAS,CAAEsJ,MAAO,SAC7B,CAAC,cAAgBtJ,GAAS,CAAEsJ,MAAO,cAAeg+F,SAAS,EAAMr5H,QAAQ,GACzE,CAAC,YAAc+xB,GAAS,CAAEsJ,MAAO,aACjC,CAAC,YAActJ,GAAS,CAAEsJ,MAAO,aACjC,CAAC,UAAYtJ,GAAS,CAAEsJ,MAAO,WAC/B,CAAC,aAAetJ,GAAS,CAAEsJ,MAAO,cAClC,CAAC,aAAetJ,GAAS,CAAEsJ,MAAO,cAClC,CAAC,aAAetJ,GAAS,CAAEsJ,MAAO,cAClC,CAAC,YAActJ,GAAS,CAAEsJ,MAAO,aACjC,CAAC,WAAatJ,GAAS,CAAEsJ,MAAO,aAC/B89F,IAELC,sBAAuBv6G,EAAqBs6G,GAC1C,MAAM/nC,EAAqB,GAE3B,IAAK,MAAM/1D,KAASxc,EAAQ,CAC1B,MAAMy6G,EAAez6G,EAAOwc,GAE5B,IAAKxxC,KAAK4qI,WAAWp5F,GAAQ,SAI7B,MAAM1O,EAAS2sG,EAAa/kG,QAAU,KAAQ+kG,EAAarkC,KAAO,IAAM,KAAOqkC,EAAaC,QAAU,IAAM,IACtGxpI,EAAM48B,EAAS2sG,EAAaj+F,MAE5Bqb,EAAwB38C,IAC5B,MAAMy/H,EAAyBz/H,EAC/B,QAA4BpK,IAAxB2pI,EAAazmB,QAAyB2mB,EAAW7mB,QAAU,GAAK6mB,EAAW3mB,SAAWymB,EAAazmB,OAAS,CAY9G,GAXIymB,EAAaD,SACft/H,EAAE4uG,iBAEA2wB,EAAaphG,MACfn+B,EAAE0/H,kBAOA1/H,GAAK,YAAaA,EAAG,SACvB,MAAM2/H,EAAiB,IAEjBC,EAAkB,OAAI,EAAA5/H,EAAE6/H,oBAAN,EAAIC,EAAiCvxC,UAAU/pF,MAAMm7H,GACvEI,EAAiBr9H,SAASs9H,kBAAkBhgI,EAAEigI,eAAe,GAAGznG,QAASx4B,EAAEigI,eAAe,GAAGxnG,SAI7FonG,EAAgBE,EAAer0C,MAAKx6E,GAAKA,EAAEq9E,UAAU/pF,MAAMm7H,GAAgBroE,MAAK79D,GAAKmmI,EAAmBtuG,SAAS73B,OAEvH,GAAIomI,IACF,SAAE7/H,EAAE/B,UAAFiiI,EAA0BC,WAAWN,IAOvC,YALAA,EAAchsB,cAAc,IAAIusB,WAAWpgI,EAAEvJ,KAAM,CACjDwpI,eAAgBjgI,EAAEigI,eAClBI,cAAergI,EAAEqgI,cACjBloG,QAASn4B,EAAEm4B,WAMjBroC,KAAKumI,MAAM/0F,EAAO89F,EAASp/H,GAAIA,GAGjC,OAAOu/H,EAAat5H,QAGlBjQ,KAAOqhG,EAELn8F,MAAMiD,QAAQk5F,EAAGrhG,IAClBqhG,EAAGrhG,GAAwBqD,KAAKsjD,GAEjC06C,EAAGrhG,GAAO,CAACqhG,EAAGrhG,GAAM2mD,GAGtB06C,EAAGrhG,GAAO2mD,EAId,OAAO06C,M,UC1Gb,SAASipC,EAAe3kD,EAAcF,EAAQ,EAAGF,EAAM,GACrD,IAAIp7C,EAUJ,OATIw7C,EAAO,KAAOA,GAAQ,GACxBx7C,EAAO,IAAI39B,KAAKA,KAAK+9H,IAAI5kD,EAAMF,EAAOF,IAClCpxE,SAASg2B,EAAKqgG,mBAChBrgG,EAAKsgG,eAAe9kD,IAGtBx7C,EAAO,IAAI39B,KAAKA,KAAK+9H,IAAI5kD,EAAMF,EAAOF,IAGjCp7C,EAGT,SAASugG,EAAiB/kD,EAAcglD,EAAwBC,GAC9D,MAAMC,EAA0B,EAAIF,EAAiBC,EAC/CE,GAAsB,EAAIR,EAAc3kD,EAAM,EAAGklD,GAAyBE,YAAcJ,GAAkB,EAEhH,OAAQG,EAAqBD,EAA0B,EAGzD,SAASG,EAAWrlD,EAAcF,EAAeF,EAAaolD,GAC5D,IAAIK,EAAY,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAKvlD,GAKxE,OAJIA,EAAQ,GAAKwlD,EAAWtlD,IAC1BqlD,IAGKA,EAAYzlD,EAGrB,SAAS2lD,EAAavlD,EAAcglD,EAAwBC,GAC1D,MAAMO,EAAaT,EAAgB/kD,EAAMglD,EAAgBC,GACnDQ,EAAiBV,EAAgB/kD,EAAO,EAAGglD,EAAgBC,GAC3DS,EAAaJ,EAAWtlD,GAAQ,IAAM,IAE5C,OAAQ0lD,EAAaF,EAAaC,GAAkB,EAGhD,SAAUE,EAAY3lD,EAAcF,EAAeF,EAAaolD,EAAwBY,GAC5F,MAAMJ,EAAaT,EAAgB/kD,EAAMglD,EAAgBY,GACnD/lD,EAAOz8E,KAAK2pD,MAAMs4E,EAAUrlD,EAAMF,EAAOF,EAAKolD,GAAkBQ,GAAc,GAEpF,OAAI3lD,EAAO,EACFA,EAAO0lD,EAAYvlD,EAAO,EAAGglD,EAAgBY,GAC3C/lD,EAAO0lD,EAAYvlD,EAAMglD,EAAgBY,GAC3C/lD,EAAO0lD,EAAYvlD,EAAMglD,EAAgBY,GAEzC/lD,EAIL,SAAUylD,EAAYtlD,GAC1B,OAASA,EAAO,IAAM,GAAOA,EAAO,MAAQ,GAAQA,EAAO,MAAQ,ECjD9D,MAAM6lD,EAAc,+EACdC,EAAa,gCAEbC,EAA0B,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAC1EC,EAA+B,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAC/EC,EAAoB,GACpBC,EAAoB,GACpBC,EAAY,GACZC,EAAY,EACZC,EAAU,EACVC,EAAe,EACfC,EAAkB,GAClBC,EAAa,GACbC,EAAiB,KAEjBC,EAAW,GAEXC,EAAc,IACdC,EAAe,IACfC,EAAc,IACdC,EAAc,IAWrB,SAAUC,EAAgB/mF,EAA8BgnF,EAAoBC,GAChF,MAAMr5H,EAAQs5H,GAAclnF,GAO5B,OANAmnF,GAAYv5H,EAAOo5H,EAAS,GAAII,IAChCC,EAAgBz5H,GACZq5H,GACFK,EAAe15H,EAAOq5H,EAAOr5H,EAAM25H,SAG9B35H,EAGH,SAAU45H,EAAcxnF,EAA8BgnF,EAAoBC,GAC9E,MAAMp5H,EAAMq5H,GAAclnF,GAO1B,OANAmnF,GAAYt5H,EAAKm5H,EAASA,EAAS7pI,OAAS,IAC5CkqI,EAAgBx5H,GACZo5H,GACFK,EAAez5H,EAAKo5H,EAAOp5H,EAAI05H,SAG1B15H,EAGH,SAAU45H,EAAiBznF,GAC/B,MAAMpyC,EAAQs5H,GAAclnF,GAK5B,OAJApyC,EAAMgyE,IAAMymD,EACZqB,EAAc95H,GACdy5H,EAAgBz5H,GAETA,EAGH,SAAU+5H,EAAe3nF,GAC7B,MAAMnyC,EAAMq5H,GAAclnF,GAK1B,OAJAnyC,EAAI+xE,IAAMgoD,EAAY/5H,EAAImyE,KAAMnyE,EAAIiyE,OACpC4nD,EAAc75H,GACdw5H,EAAgBx5H,GAETA,EAGH,SAAUg6H,EAAcphH,GAC5B,MAAyB,kBAAVA,GAAsBjY,SAASiY,MACzCq/G,EAAW98H,KAAKyd,IACD,kBAAVA,GAAsBjY,SAASiY,EAAMk5D,OAASnxE,SAASiY,EAAMi5D,QAGnE,SAAUooD,EAAWrhH,GACzB,GAAqB,kBAAVA,EAET,OAAOA,EACF,GAAqB,kBAAVA,EAAoB,CAEpC,MAAM1gB,EAAQ+/H,EAAW98H,KAAKyd,GAC9B,QAAK1gB,GAIuB,GAArByf,SAASzf,EAAM,IAAWyf,SAASzf,EAAM,IAAM,GACjD,MAAqB,kBAAV0gB,IAEU,kBAAfA,EAAMk5D,MAA6C,kBAAjBl5D,EAAMi5D,QAI/B,GAAbj5D,EAAMk5D,KAAYl5D,EAAMi5D,QAO7B,SAAUqoD,EAAmBthH,GACjC,MAAyB,kBAAVA,GAAsBjY,SAASiY,IAC1B,kBAAVA,KAAwBo/G,EAAY78H,KAAKyd,IAChDA,aAAiB5f,KAKhB,SAAUmhI,EAAgBvhH,EAAwB04G,GAAW,EAAO/3H,GAKxE,GAJqB,kBAAVqf,GAAsBjY,SAASiY,KACxCA,EAAQ,IAAI5f,KAAK4f,IAGfA,aAAiB5f,KAAM,CACzB,MAAM29B,EAA0ByjG,EAAUxhH,GAM1C,OAJIrf,GACFkgI,EAAe9iG,EAAMp9B,EAAKo9B,EAAK+iG,SAG1B/iG,EAGT,GAAqB,kBAAV/d,EAAoB,CAC7B,GAAI04G,EACF,MAAM,IAAIj/H,MAAM,GAAGumB,qMAErB,OAAO,KAIT,MAAM1gB,EAAQ8/H,EAAY78H,KAAKyd,GAE/B,IAAK1gB,EAAO,CACV,GAAIo5H,EACF,MAAM,IAAIj/H,MAAM,GAAGumB,qMAGrB,OAAO,KAGT,MAAMu5B,EAA+B,CACnCxb,KAAM/d,EACNo6D,KAAM,GACNb,KAAMx6D,SAASzf,EAAM,IACrB+5E,MAAOt6D,SAASzf,EAAM,IACtB65E,IAAKp6D,SAASzf,EAAM,KAAO,EAC3B45E,KAAMn6D,SAASzf,EAAM,KAAO,EAC5B25E,OAAQl6D,SAASzf,EAAM,KAAO,EAC9Bs6C,QAAS,EACT6nF,SAAUniI,EAAM,GAChBwhI,WAAYxhI,EAAM,KAAMA,EAAM,IAC9BoiI,MAAM,EACNC,SAAS,EACTC,QAAQ,GAUV,OAPAX,EAAc1nF,GACdqnF,EAAgBrnF,GAEZ54C,GACFkgI,EAAetnF,EAAW54C,EAAK44C,EAAUunF,SAGpCvnF,EAGH,SAAUioF,EAAWzjG,GACzB,OAAO6iG,EAAgB,CACrB7iG,KAAM,GACNq8C,KAAM,GACNb,KAAMx7C,EAAK8jG,cACXxoD,MAAOt7C,EAAK+jG,WAAa,EACzB3oD,IAAKp7C,EAAKgkG,UACVnoF,QAAS7b,EAAKikG,SACd9oD,KAAMn7C,EAAKkkG,WACXhpD,OAAQl7C,EAAKmkG,aACbT,QAAQ,EACRX,SAAS,EACTY,MAAM,EACNC,SAAS,EACTC,QAAQ,IAIN,SAAUO,EAAkB5oF,GAChC,OAAOA,EAAUggC,KAAO2mD,EAAc3mF,EAAU8/B,MAAQ8mD,EAAe5mF,EAAU4/B,IAG7E,SAAUipD,EAAmB7oF,GACjC,OAAOA,EAAU2/B,KAAOknD,EAAc7mF,EAAU0/B,OAG5C,SAAUopD,EAAwB9oF,GACtC,OAAO4oF,EAAiB5oF,GAAa8mF,EAAc+B,EAAkB7oF,GAGjE,SAAUsnF,EAAgBtnF,EAA8B54C,EAAwBy5E,GAAO,GAC3F,IAAIh1E,EAAI+8H,EAAiBxhI,GACrB0E,EAAI88H,EAAiB5oF,GACrBooF,EAAUv8H,IAAMC,EAYpB,OAVIk0C,EAAUunF,SAAW1mD,GAAQunD,IAC/Bv8H,EAAIg9H,EAAkBzhI,GACtB0E,EAAI+8H,EAAkB7oF,GACtBooF,EAAUv8H,IAAMC,GAGlBk0C,EAAUmoF,KAAOr8H,EAAID,EACrBm0C,EAAUooF,QAAUA,EACpBpoF,EAAUqoF,OAASv8H,EAAID,EAEhBm0C,EAGH,SAAU+oF,EAAatiH,GAC3B,OAAQA,aAAiB5f,MAA2B,kBAAV4f,GAAsBjY,SAASiY,GAGrE,SAAUuiH,EAAehpF,EAA8BunF,EAAkBngI,GAa7E,OAZI44C,EAAUunF,UAAYA,IACxBvnF,EAAUunF,QAAUA,EACfA,IACHvnF,EAAU2/B,KAAO+mD,EACjB1mF,EAAU0/B,OAAS8mD,EACnBxmF,EAAU6gC,KAAOojB,GAAQjkD,IAEvB54C,GACFkgI,EAAetnF,EAAW54C,EAAK44C,EAAUunF,UAItCvnF,EAGH,SAAUipF,EAAejpF,EAA8BkpF,EAAiB9hI,GAS5E,OARA44C,EAAUunF,SAAU,EACpBvnF,EAAU2/B,KAAOv8E,KAAKC,MAAM6lI,EAAU3C,GACtCvmF,EAAU0/B,OAASwpD,EAAU3C,EAC7BvmF,EAAU6gC,KAAOojB,GAAQjkD,GACrB54C,GACFkgI,EAAetnF,EAAW54C,GAAK,GAG1B44C,EAGH,SAAU0nF,EAAe1nF,GAG7B,OAFAA,EAAUK,QAAU8oF,EAAWnpF,GAExBA,EAGH,SAAUqnF,EAAiBrnF,GAI/B,OAHAA,EAAU6gC,KAAOojB,GAAQjkD,GACzBA,EAAUxb,KAAOgkG,GAAQxoF,GAElBA,EAGH,SAAUmpF,EAAYnpF,GAC1B,GAAIA,EAAUkoF,OAAQ,CACpB,MAAM35B,EAAInrG,KAAKC,MACTyM,EAAIkwC,EAAU4/B,IACdjoE,GAAMqoC,EAAU8/B,MAAQ,GAAKqmD,EAAa,EAC1C7tH,EAAIi2F,EAAEvuD,EAAUggC,KAAO,KACvBtlE,EAAKslC,EAAUggC,KAAO,KAAQhgC,EAAU8/B,OAAS,EAAI,EAAI,GAE/D,QAAUhwE,EAAIy+F,EAAE,IAAM52F,EAAI,IAAO,EAAIW,EAAIoC,EAAI6zF,EAAE7zF,EAAI,GAAK6zF,EAAEj2F,EAAI,IAAM,EAAK,GAAK,EAGhF,OAAO0nC,EAAUK,QAGb,SAAUunF,EAAa5nD,EAAcF,GACzC,OAAOwlD,EAAWtlD,GAAQgmD,EAAmBlmD,GAASimD,EAAcjmD,GAGhE,SAAUonD,GAAelnF,GAC7B,MAAM,KAAExb,EAAF,KAAQq8C,EAAR,KAAcb,EAAd,MAAoBF,EAApB,IAA2BF,EAA3B,QAAgCv/B,EAAhC,KAAyCs/B,EAAzC,OAA+CD,EAA/C,OAAuDwoD,EAAvD,QAA+DX,EAA/D,KAAwEY,EAAxE,QAA8EC,EAA9E,OAAuFC,GAAWroF,EAExG,MAAO,CAAExb,KAAAA,EAAMq8C,KAAAA,EAAMb,KAAAA,EAAMF,MAAAA,EAAOF,IAAAA,EAAKv/B,QAAAA,EAASs/B,KAAAA,EAAMD,OAAAA,EAAQwoD,OAAAA,EAAQX,QAAAA,EAASY,KAAAA,EAAMC,QAAAA,EAASC,OAAAA,GAG1F,SAAUe,GAAWv2H,EAAW1V,GACpC,IAAIksI,EAAS18H,OAAOkG,GACpB,MAAOw2H,EAAOlsI,OAASA,EACrBksI,EAAS,IAAMA,EAGjB,OAAOA,EAGH,SAAUb,GAASxoF,GACvB,IAAI/0C,EAAM,GAAGm+H,GAAUppF,EAAUggC,KAAM,MAAMopD,GAAUppF,EAAU8/B,MAAO,KAIxE,OAFI9/B,EAAUkoF,SAAQj9H,GAAO,IAAIm+H,GAAUppF,EAAU4/B,IAAK,MAEnD30E,EAGH,SAAUg5F,GAASjkD,GACvB,OAAKA,EAAUunF,QAIR,GAAG6B,GAAUppF,EAAU2/B,KAAM,MAAMypD,GAAUppF,EAAU0/B,OAAQ,KAH7D,GAoBL,SAAU4pD,GAAStpF,GAYvB,OAXAA,EAAU4/B,MACV5/B,EAAUK,SAAWL,EAAUK,QAAU,GAAKimF,EAC1CtmF,EAAU4/B,IAAMqmD,GAAqBjmF,EAAU4/B,IAAMgoD,EAAY5nF,EAAUggC,KAAMhgC,EAAU8/B,SAC7F9/B,EAAU4/B,IAAMymD,EAChBrmF,EAAU8/B,QACN9/B,EAAU8/B,MAAQqmD,IACpBnmF,EAAU8/B,MAAQsmD,EAClBpmF,EAAUggC,SAIPhgC,EAGH,SAAUonF,GAASpnF,GAYvB,OAXAA,EAAU4/B,MACV5/B,EAAUK,SAAWL,EAAUK,QAAU,GAAKimF,EAC1CtmF,EAAU4/B,IAAMymD,IAClBrmF,EAAU8/B,QACN9/B,EAAU8/B,MAAQsmD,IACpBpmF,EAAUggC,OACVhgC,EAAU8/B,MAAQqmD,GAEpBnmF,EAAU4/B,IAAMgoD,EAAY5nF,EAAUggC,KAAMhgC,EAAU8/B,QAGjD9/B,EAGH,SAAUupF,GACdvpF,EACAwpF,EAAoCF,GACpCG,EAAO,GAEP,QAASA,GAAQ,EAAGD,EAAMxpF,GAE1B,OAAOA,EAGH,SAAU0pF,GAAap2H,EAAwBC,GACnD,MAAMmH,EAA4B,QAAvBnH,EAAIysE,KAAO1sE,EAAI0sE,MACpB1kE,EAA8B,OAAzB/H,EAAIusE,MAAQxsE,EAAIwsE,OACrBvnE,EAA0B,MAArBhF,EAAIqsE,IAAMtsE,EAAIssE,KACnB3qF,EAA4B,IAAvBse,EAAIosE,KAAOrsE,EAAIqsE,MACpBhoE,EAAKpE,EAAImsE,OAASpsE,EAAIosE,OAE5B,OAAOhlE,EAAIY,EAAI/C,EAAItjB,EAAI0iB,EAGnB,SAAUwvH,GAAannF,EAA8BK,EACzDmpF,EAAoCF,GAASK,EAAU,GACvD,MAAO3pF,EAAUK,UAAYA,KAAaspF,GAAW,EAAGH,EAAMxpF,GAE9D,OAAOA,EAGH,SAAU4pF,GAAiB5C,GAC/B,MAAM6C,EAAkB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACrCC,EAAmB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC5C,IAAK,IAAI7sI,EAAI,EAAGA,EAAI+pI,EAAS7pI,OAAQF,IACnC6sI,EAAO9C,EAAS/pI,IAAM,EAExB,IAAK,IAAI6S,EAAI,EAAGA,EAAIw2H,EAAcx2H,IAAK,CACrC,IAAI2oB,EAAO,EACX,IAAK,IAAIpT,EAAI,EAAGA,EAAIihH,EAAcjhH,IAAK,CACrC,MAAM2T,GAAQlpB,EAAIuV,GAAKihH,EACvB,GAAIwD,EAAO9wG,GACT,MAEFP,IAEFoxG,EAAM/5H,GAAKg6H,EAAOh6H,GAAK2oB,EAGzB,OAAOoxG,EAGH,SAAUE,GAAiB/pF,GAC/B,MAAM6gC,EAAO,GAAGuoD,GAAUppF,EAAU2/B,KAAM,MAAMypD,GAAUppF,EAAU0/B,OAAQ,KACtEl7C,EAAOwb,EAAUxb,KAEvB,OAAO,IAAI39B,KAAK,GAAG29B,KAAQq8C,cAGvB,SAAUmpD,GACdp8H,EACAC,EACAzG,EACA6iI,EACA12H,EAAM,GACND,EAAM,GAEN,MAAMkvB,EAAOomG,EAAiB/6H,GACxB47H,EAA4B,GAClC,IAAI1wG,EAAUmuG,GAAct5H,GACxBs8H,EAAoB,EACpBC,EAAUD,IAAsB1nG,EAEpC,GAAIA,EAAOomG,EAAiBh7H,GAC1B,MAAM,IAAI1N,MAAM,wCAGlB,QAASiqI,GAAWV,EAAKtsI,OAASmW,IAAQm2H,EAAKtsI,OAASoW,EAAK,CAG3D,GAFA22H,EAAoBtB,EAAiB7vG,GACrCoxG,EAAUA,GAAWD,IAAsB1nG,EACL,IAAlCynG,EAAalxG,EAAQsnB,SAAgB,CACvCtnB,EAAUuwG,GAAQvwG,GAClB,SAEF,MAAM6mD,EAAMsnD,GAAcnuG,GAC1BsuG,EAAgBznD,GAChB0nD,EAAe1nD,EAAKx4E,GACpBqiI,EAAK/rI,KAAKkiF,GACV7mD,EAAUwwG,GAAaxwG,EAASuwG,GAASW,EAAalxG,EAAQsnB,UAGhE,IAAKopF,EAAKtsI,OAAQ,MAAM,IAAI+C,MAAM,sEAElC,OAAOupI,EAGH,SAAUW,GAAoBpqF,EAA8BkM,EAChEg9E,EAAiB/wG,EAAe/wB,GAChC,MAAMijI,EAAiC,GAEvC,IAAK,IAAIptI,EAAI,EAAGA,EAAIk7B,EAAOl7B,IAAK,CAC9B,MAAMqtI,EAAOp+E,EAASjvD,EAAIisI,EACpBqB,EAAMrD,GAAclnF,GAC1BqqF,EAAU3sI,KAAKurI,EAAcsB,EAAKD,EAAMljI,IAG1C,OAAOijI,EAGH,SAAUG,GAA6BjrG,EAAgBkrG,GAC3D,MAAMC,EAAoC,CAACC,EAAIjxC,IAAO,GAEtD,MAAoB,qBAATh6D,MAAuD,qBAAxBA,KAAKkrG,eACtCF,EAGF,CAAC1qF,EAAW6qF,KACjB,IACE,MAAMC,EAAgB,IAAIprG,KAAKkrG,eAAerrG,QAAUtlC,EAAWwwI,EAAWzqF,EAAW6qF,IAEzF,OAAOC,EAAchrG,OAAOiqG,GAAgB/pF,IAC5C,MAAO37C,GACP,MAAO,KCndb,OAAeuwH,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,QAENmO,MAAO,CACL/E,IAAK,CACHtM,KAAM6R,OACNtO,UAAW0pI,IAIfvxI,KAAM,KAAM,CACVu0I,MAAO,CACL3jI,IAAK4gI,EAAe,oBAAoB,GACxCf,MAAOe,EAAe,cAAc,MAIxC/V,SAAU,CACR+Y,YACE,OAAO72I,KAAKiT,IAAM4gI,EAAe7zI,KAAKiT,KAAK,GAAQ,OAIvDkuH,MAAO,CACL0V,UAAW,eAGb3X,UACEl/H,KAAK82I,cACL92I,KAAK+2I,cAGP1X,QAAS,CACP0X,aACE/2I,KAAK42I,MAAM3jI,IAAIghI,QAAUj0I,KAAK42I,MAAM9D,MAAMmB,SAAU,EACpDj0I,KAAK42I,MAAM3jI,IAAI+gI,KAAOh0I,KAAK42I,MAAM9D,MAAMkB,MAAO,EAC9Ch0I,KAAK42I,MAAM3jI,IAAIihI,OAASl0I,KAAK42I,MAAM9D,MAAMoB,QAAS,GAEpD4C,cACE,MAAM7jI,EAAyBjT,KAAK62I,WAAa72I,KAAKg3I,SACtDh3I,KAAKi3I,UAAUhkI,EAAKjT,KAAK42I,MAAM3jI,KAC/BjT,KAAKk3I,WAAWjkI,EAAKjT,KAAK42I,MAAM3jI,KAChCjT,KAAKi3I,UAAUhkI,EAAKjT,KAAK42I,MAAM9D,QAEjCkE,SACE,OAAOlD,EAAU,IAAIphI,OAEvBukI,UAAWhkI,EAAwB9E,GAC7B8E,EAAIo9B,OAASliC,EAAOkiC,OACtBliC,EAAO09E,KAAO54E,EAAI44E,KAClB19E,EAAOw9E,MAAQ14E,EAAI04E,MACnBx9E,EAAOs9E,IAAMx4E,EAAIw4E,IACjBt9E,EAAO+9C,QAAUj5C,EAAIi5C,QACrB/9C,EAAOkiC,KAAOp9B,EAAIo9B,OAGtB6mG,WAAYjkI,EAAwB9E,GAC9B8E,EAAIy5E,OAASv+E,EAAOu+E,OACtBv+E,EAAOq9E,KAAOv4E,EAAIu4E,KAClBr9E,EAAOo9E,OAASt4E,EAAIs4E,OACpBp9E,EAAOu+E,KAAOz5E,EAAIy5E,U,UClE1B,MAAMyqD,GAAgB,MAIhB,SAAUC,GAAYpiH,EAA+BqiH,EAAW,GACpE,MAAMC,EAAUtiH,EAAOvZ,KAAI+1B,IAAS,CAClCA,MAAAA,EACA+lG,YAAa,EACbC,OAAQ,EACR59H,KAAM,EACNoe,MAAO,QAQT,OALAs/G,EAAQ/4H,MAAK,CAAC7G,EAAGC,IACP1I,KAAKmQ,IAAIi4H,EAAU3/H,EAAE85B,MAAMimG,0BAA4BxoI,KAAKmQ,IAAIi4H,EAAU1/H,EAAE65B,MAAMimG,2BAClF9/H,EAAE65B,MAAMkmG,uBAAyBhgI,EAAE85B,MAAMkmG,yBAG5CJ,EASH,SAAUK,GAAYC,EAAYC,EAAYC,EAAYC,EAAYC,GAAU,GACpF,OAAOA,IAAYJ,GAAMG,GAAMF,GAAMC,KAAQF,EAAKG,GAAMF,EAAKC,GAGzD,SAAUG,GAAgBphB,GAC9BA,EAAO7wH,SAAQ8wH,IACbA,EAAMwgB,QAAQtxI,SAAQkyI,IACpBA,EAAYX,YAAc1gB,EAAO7tH,aAKjC,SAAU2jD,GAAUnb,GACxB,MAAO,CAACA,EAAMimG,yBAA0BjmG,EAAMkmG,wBAG1C,SAAUS,GAAa3mG,GAC3B,MAAO,CAACA,EAAM4mG,gBAAiB5mG,EAAM6mG,eAGjC,SAAUC,GAAoB9mG,EAA4B+mG,GAC9D,MAAO,CAACtpI,KAAKmQ,IAAIm5H,EAAU/mG,EAAMimG,0BAA2BxoI,KAAKkQ,IAAIo5H,EAAWpB,GAAe3lG,EAAMkmG,yBAGjG,SAAUc,GAAc3hB,EAAuBp9G,EAAeC,EAAa++H,GAC/E,IAAK,IAAI3vI,EAAI,EAAGA,EAAI+tH,EAAO7tH,OAAQF,IAAK,CACtC,MAAMguH,EAAQD,EAAO/tH,GACrB,IAAI4vI,GAAc,EAElB,GAAIf,GAAWl+H,EAAOC,EAAKo9G,EAAMr9G,MAAOq9G,EAAMp9G,IAAK++H,GACjD,IAAK,IAAI98H,EAAI,EAAGA,EAAIm7G,EAAMwgB,QAAQtuI,OAAQ2S,IAAK,CAC7C,MAAMu8H,EAAcphB,EAAMwgB,QAAQ37H,IAC3Bg9H,EAAYC,GAAYH,EAAQ9rF,GAASurF,EAAY1mG,OAAS2mG,GAAYD,EAAY1mG,OAE7F,GAAImmG,GAAWl+H,EAAOC,EAAKi/H,EAAYC,EAAUH,GAAQ,CACvDC,GAAc,EACd,OAKN,IAAKA,EACH,OAAO5vI,EAIX,OAAQ,EAGJ,SAAU+vI,GAAwBC,GACtC,MAAMjsF,EAAU,CACdgqE,OAAQ,GACR13G,KAAM,EACNC,KAAM,EACNs7B,MAAO,KACLmS,EAAQgqE,OAAS,GACjBhqE,EAAQ1tC,IAAM0tC,EAAQztC,KAAO,GAE/Bg4H,WAAY,CAAC3rD,EAAwBstD,EAAkCN,EAAgB/9F,GAAQ,MACzF+wC,EAAIv/B,UAAY4sF,GAAgBp+F,IAClCmS,EAAQnS,QAGV,MAAM69F,EAAW5D,EAAuBlpD,GAClC6rD,EAAUF,GAAW2B,EAAWR,GAwCtC,OAtCAjB,EAAQtxI,SAAQgzI,IACd,MAAOv/H,EAAOC,GAAO++H,EAAQ9rF,GAASqsF,EAAOxnG,OAAS2mG,GAAYa,EAAOxnG,OAErEqb,EAAQgqE,OAAO7tH,OAAS,IAAM2uI,GAAWl+H,EAAOC,EAAKmzC,EAAQ1tC,IAAK0tC,EAAQztC,IAAKq5H,KACjFR,GAAeprF,EAAQgqE,QACvBhqE,EAAQnS,SAGV,IAAIu+F,EAAcT,GAAa3rF,EAAQgqE,OAAQp9G,EAAOC,EAAK++H,IAEtC,IAAjBQ,IACFA,EAAcpsF,EAAQgqE,OAAO7tH,OAE7B6jD,EAAQgqE,OAAOttH,KAAK,CAAEkQ,MAAAA,EAAOC,IAAAA,EAAK49H,QAAS,MAG7C,MAAMnpI,EAAS0+C,EAAQgqE,OAAOoiB,GAC9B9qI,EAAOmpI,QAAQ/tI,KAAKyvI,GACpB7qI,EAAOsL,MAAQxK,KAAKkQ,IAAIhR,EAAOsL,MAAOA,GACtCtL,EAAOuL,IAAMzK,KAAKmQ,IAAIjR,EAAOuL,IAAKA,GAElCs/H,EAAOxB,OAASyB,GAEK,IAAjBpsF,EAAQ1tC,KACV0tC,EAAQ1tC,IAAM1F,EACdozC,EAAQztC,IAAM1F,IAEdmzC,EAAQ1tC,IAAMlQ,KAAKkQ,IAAI0tC,EAAQ1tC,IAAK1F,GACpCozC,EAAQztC,IAAMnQ,KAAKmQ,IAAIytC,EAAQztC,IAAK1F,OAIxCu+H,GAAeprF,EAAQgqE,QAEnB4hB,GACF5rF,EAAQnS,QAGH48F,IAIX,OAAOzqF,ECtHT,MAAMqsF,GAAa,IAEbC,GAAiB,EAEjBC,GAAmB,IAgBZ9sI,GAAkC,CAAC0oB,EAAQ8jH,EAAcO,KACpE,MAAMxsF,EAAUgsF,GAAuBC,GAGvC,MAAO,CAACrtD,EAAKstD,EAAWN,EAAO/9F,KAC7B,IAAK+9F,EACH,OAAO5rF,EAAQuqF,WAAW3rD,EAAKstD,EAAWN,EAAO/9F,GAGnD,MAAM69F,EAAW5D,EAAuBlpD,GAClC6rD,EAAUF,GAAW2B,EAAWR,GAChC1hB,EAASyiB,GAAUhC,EAASiB,GAElC,IAAK,MAAMzhB,KAASD,EAAQ,CAC1B,MAAMzM,EAAgB,GAEtB,IAAK,MAAM4uB,KAAUliB,EAAMwgB,QAAS,CAClC,MAAM7yC,EAAQ80C,GAAQP,EAAQT,GACxB/uI,EAAQgwI,GAAa/0C,EAAO2lB,GAElC,IAAc,IAAV5gH,EAAiB,CACnB,MAAMrJ,EAASs5I,GAAUh1C,EAAO2lB,GAC5BjqH,IACFskG,EAAMtkG,OAASA,EACfskG,EAAMi1C,QAAU/B,GAAWlzC,EAAMhrF,MAAOgrF,EAAM/qF,IAAKvZ,EAAOsZ,MAAOkgI,GAAQx5I,EAAOsZ,MAAO4/H,IACvF50C,EAAMj7F,MAAQrJ,EAAOqJ,MAAQ,EAC7BrJ,EAAOmkG,SAAS/6F,KAAKk7F,QAElB,CACL,MAAOtkG,GAAUy5I,GAAoBn1C,EAAO2lB,EAAO5gH,EAAQ,EAAGA,EAAQ,GAChE86F,EAAWs1C,GAAoBn1C,EAAO2lB,EAAO5gH,EAAQ,EAAGA,EAAQ4gH,EAAMphH,QAAQ,GAEpFy7F,EAAMH,SAAWA,EACjBG,EAAMj7F,MAAQA,EAEVrJ,IACFskG,EAAMtkG,OAASA,EACfskG,EAAMi1C,QAAU/B,GAAWlzC,EAAMhrF,MAAOgrF,EAAM/qF,IAAKvZ,EAAOsZ,MAAOkgI,GAAQx5I,EAAOsZ,MAAO4/H,IACvFl5I,EAAOmkG,SAAS/6F,KAAKk7F,IAGvB,IAAK,MAAMo1C,KAASv1C,EAAU,CACxBu1C,EAAM15I,SAAWA,IACnB05I,EAAM15I,OAASskG,GAGjB,MAAMq1C,EAAYD,EAAMrwI,MAAQi7F,EAAMj7F,OAAS,EAC3CswI,GAAar1C,EAAMi1C,SACrB/B,GAAWlzC,EAAMhrF,MAAOkgI,GAAQl1C,EAAMhrF,MAAO4/H,GAAmBQ,EAAMpgI,MAAOogI,EAAMngI,OACnFmgI,EAAMH,SAAU,IAKtBtvB,EAAM7gH,KAAKk7F,GAGbs1C,GAAgB3vB,EAAOivB,GAKzB,OAFA/B,EAAQ/4H,MAAK,CAAC7G,EAAGC,IAAOD,EAAEkC,KAAOjC,EAAEiC,MAAUlC,EAAE85B,MAAMimG,yBAA2B9/H,EAAE65B,MAAMimG,2BAEjFH,IAIX,SAASyC,GAAiB3vB,EAAeivB,GACvC,IAAK,MAAMrlH,KAAQo2F,EAAO,CACxB,MAAM,OAAE4uB,EAAF,OAAU74I,GAAW6zB,EACrBgmH,EAAUC,GAAiBjmH,GAAQ,EACnCkmH,EAAY/5I,EAASA,EAAO64I,OAAOp/H,KAAO,EAC1CugI,EAAajB,GAAagB,EAC1Bl1F,EAAS/1C,KAAKkQ,IAAIg6H,GAAgBD,GAAac,GAC/CI,EAAwBC,GAAyBrmH,EAAMo2F,GACvDkwB,EAAeH,GAAcH,EAAUhmH,EAAKxqB,MAAQ,GACpD+wI,EAAcJ,GAAcH,EAAUhmH,EAAKxqB,OAASwqB,EAAK0lH,QAAU,EAAI,IAAMU,EAE/Ej6I,IACF64I,EAAOp/H,KAAOoa,EAAK0lH,QACfQ,EAAYI,EACZJ,EAAYl1F,GAGlBg0F,EAAOhhH,MAAQwiH,GAAaxmH,EAAMo2F,EAAOivB,GACrCH,GAAaF,EAAOp/H,KACpB3K,KAAKkQ,IAAI+5H,GAAaF,EAAOp/H,KAAM2gI,EAAcnB,KAIzD,SAASiB,GAA0BrmH,EAAYo2F,GAC7C,IAAKp2F,EAAKswE,SAASt7F,OACjB,OAAO,EAGT,MAAMyxI,EAAYzmH,EAAKxqB,MAAQ4gH,EAAMphH,OAC/B0xI,EAAY1mH,EAAKswE,SAAS5yD,QAAO,CAACvyB,EAAKxV,IAAMsF,KAAKkQ,IAAIA,EAAKxV,EAAEH,QAAQixI,GAE3E,OAAOC,EAAY1mH,EAAKxqB,MAG1B,SAASmxI,GAAuB3mH,EAAYo2F,GAC1C,MAAMwwB,EAAoB,GAC1B,IAAK,MAAM/pF,KAASu5D,EACdutB,GAAW3jH,EAAKva,MAAOua,EAAKta,IAAKm3C,EAAMp3C,MAAOo3C,EAAMn3C,MACtDkhI,EAAQrxI,KAAKsnD,EAAMrnD,OAGvB,OAAOoxI,EAGT,SAASpB,GAAcxlH,EAAYo2F,GACjC,MAAMwwB,EAAUD,GAAsB3mH,EAAMo2F,GAC5CwwB,EAAQr8H,OAER,IAAK,IAAIzV,EAAI,EAAGA,EAAI8xI,EAAQ5xI,OAAQF,IAClC,GAAIA,EAAI8xI,EAAQ9xI,GACd,OAAOA,EAGX,OAAO,EAGT,SAAS8wI,GAAqB5lH,EAAYo2F,EAAeywB,EAAkBC,EAAkBC,GAAoB,GAC/G,MAAMC,EAAsB,GAC5B,IAAK,MAAMnqF,KAASu5D,EACdv5D,EAAMrnD,OAASqxI,GAAYhqF,EAAMrnD,OAASsxI,GAAYnD,GAAW3jH,EAAKva,MAAOua,EAAKta,IAAKm3C,EAAMp3C,MAAOo3C,EAAMn3C,MAC5GshI,EAAYzxI,KAAKsnD,GAGrB,GAAIkqF,GAAqBC,EAAYhyI,OAAS,EAAG,CAC/C,MAAM+uD,EAAQijF,EAAYtpG,QAAO,CAACvyB,EAAKX,IAAMvP,KAAKkQ,IAAIA,EAAKX,EAAEhV,QAAQwxI,EAAY,GAAGxxI,OACpF,OAAOwxI,EAAY7iI,QAAOqG,GAAKA,EAAEhV,QAAUuuD,IAE7C,OAAOijF,EAGT,SAASvB,GAAWzlH,EAAYo2F,GAC9B,IAAIjqH,EAAsB,KAC1B,IAAK,MAAM0wD,KAASu5D,EACdutB,GAAW3jH,EAAKva,MAAOua,EAAKta,IAAKm3C,EAAMp3C,MAAOo3C,EAAMn3C,OAAoB,OAAXvZ,GAAmB0wD,EAAMrnD,MAAQrJ,EAAOqJ,SACvGrJ,EAAS0wD,GAGb,OAAO1wD,EAGT,SAASq6I,GAAcxmH,EAAYo2F,EAAeivB,GAChD,IAAK,MAAMxoF,KAASu5D,EAClB,GAAIv5D,IAAU78B,GACZ68B,EAAMrnD,MAAQwqB,EAAKxqB,OACnBmuI,GAAW3jH,EAAKva,MAAOkgI,GAAQ3lH,EAAKva,MAAO4/H,GAAmBxoF,EAAMp3C,MAAOo3C,EAAMn3C,KACjF,OAAO,EAIX,OAAO,EAGT,SAAS4/H,GAAWhC,EAAgCiB,GAClD,MAAM1hB,EAAkB,GAExB,IAAK,MAAMmiB,KAAU1B,EAAS,CAC5B,MAAO79H,EAAOC,GAAO4+H,GAAmBU,EAAOxnG,MAAO+mG,GACtD,IAAIhzD,GAAQ,EAEZ,IAAK,MAAMuxC,KAASD,EAClB,GAAI8gB,GAAWl+H,EAAOC,EAAKo9G,EAAMr9G,MAAOq9G,EAAMp9G,KAAM,CAClDo9G,EAAMwgB,QAAQ/tI,KAAKyvI,GACnBliB,EAAMp9G,IAAMzK,KAAKmQ,IAAI03G,EAAMp9G,IAAKA,GAChC6rE,GAAQ,EACR,MAICA,GACHsxC,EAAOttH,KAAK,CAAEkQ,MAAAA,EAAOC,IAAAA,EAAK49H,QAAS,CAAC0B,KAIxC,OAAOniB,EAGT,SAAS0iB,GAASP,EAA6BT,GAC7C,MAAO9+H,EAAOC,GAAO4+H,GAAmBU,EAAOxnG,MAAO+mG,GAEtD,MAAO,CACLp4I,OAAQ,KACRu5I,SAAS,EACTlwI,MAAO,EACPwvI,OAAAA,EACAv/H,MAAAA,EACAC,IAAAA,EACA4qF,SAAU,IAId,SAAS21C,GAAkBjmH,GACzB,IAAI5U,EAAM4U,EAAKxqB,MACf,IAAK,MAAMi7F,KAASzwE,EAAKswE,SAAU,CACjC,MAAM22C,EAAWhB,GAAiBx1C,GAC9Bw2C,EAAW77H,IACbA,EAAM67H,GAGV,OAAO77H,EAGT,SAASu6H,GAASuB,EAAoBnG,GACpC,MAAMoG,EAAgBD,EAAa,IAC7BE,EAAeD,EAAgBpG,EAC/BsG,EAAWpsI,KAAKC,MAAMksI,EAAe,IACrCE,EAAaF,EAAe,GAElC,OAAOF,EAAaC,EAA2B,IAAXE,EAAiBC,EC1PvD,MAAMpC,GAAa,IAEN1B,GAAmC,CAACxiH,EAAQ8jH,EAAcO,KACrE,MAAMxsF,EAAUgsF,GAAuBC,GAEvC,MAAO,CAACrtD,EAAKstD,EAAWN,EAAO/9F,KAC7B,MAAM48F,EAAUzqF,EAAQuqF,WAAW3rD,EAAKstD,EAAWN,EAAO/9F,GAS1D,OAPI+9F,GACFnB,EAAQtxI,SAAQgzI,IACdA,EAAOp/H,KAAOo/H,EAAOxB,OAAS0B,GAAaF,EAAOzB,YAClDyB,EAAOhhH,MAAQkhH,GAAaF,EAAOzB,eAIhCD,ICdEiE,GAAsE,CACjFjvI,MADiF,GAEjFkrI,OAAAA,ICCF,QACE33G,KAAM,CACJpmB,MAAO,CACL9S,KAAM,CAAC6R,OAAQ4B,OAAQ1H,MACvB8oI,SAAU5H,EACV73C,QAAS,IAAM+3C,EAAU,IAAIphI,MAAQ29B,MAEvC32B,IAAK,CACH/S,KAAM,CAAC6R,OAAQ4B,OAAQ1H,MACvB8oI,SAAU5H,GAEZf,SAAU,CACRlsI,KAAM,CAACyE,MAAOoN,QACdujF,QAAS,IAAM,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAClCy/C,SAAUC,IAEZC,WAAY,CACV/0I,KAAM42H,SAERoe,cAAe,CACbh1I,KAAM42H,QACNxhC,SAAS,GAEX6/C,cAAe,CACbj1I,KAAMusF,SACN6I,QAAS,MAEX8/C,UAAW,CACTl1I,KAAMusF,SACN6I,QAAS,OAGbm6C,UAAW,CACTV,QAAS,CACP7uI,KAAMyT,OACN2hF,QAAS,GAEX+/C,eAAgB,CACdn1I,KAAM42H,QACNxhC,SAAS,GAEXggD,eAAgB,CACdp1I,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GACTy/C,SAAUQ,IAEZC,cAAe,CACbt1I,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GACTy/C,SAAUQ,IAEZE,gBAAiB,CACfv1I,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GACTy/C,SAAUQ,IAEZG,cAAe,CACbx1I,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,EACTy/C,SAAUQ,IAEZI,UAAW,CACTz1I,KAAM,CAACyT,OAAQ5B,OAAQhM,QACvBgvI,SAAU9H,GAEZ2I,cAAe,CACb11I,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GACTy/C,SAAUQ,IAEZM,eAAgB,CACd31I,KAAMusF,SACN6I,QAAS,MAEXwgD,cAAe,CACb51I,KAAMusF,SACN6I,QAAS,MAEXygD,kBAAmB,CACjB71I,KAAMusF,SACN6I,QAAS,OAGb0gD,MAAO,CACLhL,qBAAsB,CACpB9qI,KAAM,CAAC6R,OAAQ4B,QACf2hF,QAAS,GAEX2gD,SAAU,CACRlB,SAAUQ,GACVjgD,QAAS,GAEX4gD,YAAa,CACXh2I,KAAM42H,QACNxhC,SAAS,GAEX6gD,iBAAkB,CAChBj2I,KAAM42H,QACNxhC,SAAS,GAEX8gD,SAAUtf,QACVuf,YAAa,CACXn2I,KAAMusF,SACN6I,QAAS,OAGbghD,SAAU,CACRp2I,KAAM,CACJA,KAAM6R,OACNujF,QAAS,SAEX33F,MAAO,CACLuC,KAAM,CAAC6R,OAAQ4B,OAAQ1H,MACvB8oI,SAAU5H,IAGdoJ,SAAU,CACRC,WAAY,CACVt2I,KAAM,CAACyE,MAAOoN,QACdujF,QAAS,IAEXmhD,aAAc,CACZv2I,KAAM,CAAC6R,OAAQ06E,WAEjBiqD,oBAAqB,CACnBx2I,KAAM42H,SAER6f,gBAAiB,CACfz2I,KAAM42H,SAER8f,mBAAoB,CAClB12I,KAAM6R,OACNujF,QAAS,IAEXuhD,aAAc,CACZ32I,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,EACTy/C,SAAW98H,GAAWrE,SAASgX,SAAS3S,KAAO2S,SAAS3S,GAAK,IAGjEsW,OAAQ,CACNA,OAAQ,CACNruB,KAAMyE,MACN2wF,QAAS,IAAM,IAEjBwhD,WAAY,CACV52I,KAAM6R,OACNujF,QAAS,SAEXyhD,SAAU,CACR72I,KAAM6R,OACNujF,QAAS,OAEX0hD,WAAY,CACV92I,KAAM,CAAC6R,OAAQ06E,UACf6I,QAAS,SAEX2hD,cAAe,CACb/2I,KAAM,CAAC6R,OAAQ06E,UACf6I,QAAS,YAEX4hD,YAAa,CACXh3I,KAAMyT,OACN2hF,QAAS,IAEX6hD,WAAY,CACVj3I,KAAM,CAAC6R,OAAQ06E,UACf6I,QAAS,WAEX8hD,eAAgB,CACdl3I,KAAM,CAAC6R,OAAQ06E,UACf6I,QAAS,SAEXmS,UAAW,CACTvnG,KAAM,CAAC6R,OAAQ06E,UACf6I,QAAS,QAEX+hD,sBAAuB,CACrBn3I,KAAM,CAAC6R,OAAQ4B,QACf2hF,QAAS,IAEXgiD,iBAAkB,CAChBp3I,KAAM,CAAC6R,OAAQ06E,UACf6I,QAAS,QACTy/C,SAAW5lH,GAAcA,KAAQ2lH,IAA6C,oBAAT3lH,GAEvEooH,UAAW,CACTr3I,KAAM42H,QACNxhC,SAAS,GAEXkiD,cAAe,CACbt3I,KAAM6R,OACNujF,QAAS,gCAEXmiD,YAAa,CACXv3I,KAAM,CAAC42H,QAAS/wH,QAChBuvF,QAAS,MAEXoiD,kBAAmB,CACjBx3I,KAAMyT,OACN2hF,QAAS,KAKT,SAAUigD,GAAgB1pH,GAC9B,OAAOjY,SAASgX,SAASiB,IAGrB,SAAUmpH,GAAkBnpH,GAKhC,GAJqB,kBAAVA,IACTA,EAAQA,EAAM5d,MAAM,MAGlBtJ,MAAMiD,QAAQikB,GAAQ,CACxB,MAAM8rH,EAAO9rH,EAAM7W,KAAIiD,GAAK2S,SAAS3S,KAErC,GAAI0/H,EAAKp1I,OAASmpI,GAAgC,IAAhBiM,EAAKp1I,OACrC,OAAO,EAGT,MAAMq1I,EAAmC,GACzC,IAAIC,GAAU,EAEd,IAAK,IAAIx1I,EAAI,EAAGA,EAAIs1I,EAAKp1I,OAAQF,IAAK,CACpC,MAAM4V,EAAI0/H,EAAKt1I,GAEf,IAAKuR,SAASqE,IAAMA,EAAI,GAAKA,GAAKyzH,EAChC,OAAO,EAGT,GAAIrpI,EAAI,EAAG,CACT,MAAM2a,EAAI/E,EAAI0/H,EAAKt1I,EAAI,GACvB,GAAI2a,EAAI,EAAG,CACT,GAAI66H,EACF,OAAO,EAETA,GAAU,OACL,GAAU,IAAN76H,EACT,OAAO,EAIX,GAAI46H,EAAQ3/H,GACV,OAAO,EAET2/H,EAAQ3/H,IAAK,EAGf,OAAO,EAGT,OAAO,EC1OT,QAAeu+G,EAAAA,EAAAA,GACbqN,EAAAA,EACAiU,EACAC,EACAvf,EAAAA,EACAwf,IAEA/2I,OAAO,CACPmC,KAAM,gBAENi2H,WAAY,CACV4e,OAAAA,GAAAA,GAGF1mI,MAAOA,GAAM6nB,KAEbi+F,SAAU,CACR6gB,iBACE,OAAOvzI,MAAMiD,QAAQrO,KAAK6yI,UACtB7yI,KAAK6yI,UACJ7yI,KAAK6yI,UAAY,IAAIn+H,MAAM,KAAK+G,KAAIiD,GAAK2S,SAAS3S,EAAG,OAE5Do3H,eACE,OAAOL,GAAgBz1I,KAAK2+I,iBAE9BC,sBACE,MAAMC,EAAW7+I,KAAK81I,aAAaxnI,QAEnC,OADAuwI,EAAS9jI,UACF8jI,GAETC,cACE,OAAOjL,EAAe7zI,KAAKyZ,OAAO,IAEpCslI,YACE,MAAMtlI,EAAQzZ,KAAK8+I,YACbplI,EAAyB1Z,KAAK0Z,KAAMm6H,EAAe7zI,KAAK0Z,MAAgBD,EAE9E,OAAOk7H,EAAuBj7H,GAAOi7H,EAAuBl7H,GAASA,EAAQC,GAE/E47H,OACE,OAAOO,GACL71I,KAAK8+I,YACL9+I,KAAK++I,UACL/+I,KAAK42I,MAAM9D,MACX9yI,KAAK81I,eAGTkJ,eACE,GAAIh/I,KAAK67I,UACP,OAAO77I,KAAK67I,UAGd,MAAMl8I,EAAU,CAAEs/I,SAAU,MAAOxzD,IAAK,WAExC,OAAO4qD,GACLr2I,KAAKovI,eACL,CAAC8P,EAAMC,IAAWx/I,KAGtBy/I,mBACE,GAAIp/I,KAAK47I,cACP,OAAO57I,KAAK47I,cAGd,MAAMyD,EAAc,CAAEJ,SAAU,MAAO/yF,QAAS,QAC1CozF,EAAe,CAAEL,SAAU,MAAO/yF,QAAS,SAEjD,OAAOmqF,GACLr2I,KAAKovI,eACL,CAAC8P,EAAMxI,IAAUA,EAAQ4I,EAAeD,MAK9ChgB,QAAS,CACPkgB,mBAAoB1zF,EAA8BspB,GAAU,GAC1D,MAAO,CACL,YAAatpB,EAAUooF,QACvB,SAAUpoF,EAAUmoF,KACpB,WAAYnoF,EAAUqoF,OACtB,YAAa/+D,IAGjBy9D,eAAgB/mF,GACd,OAAO+mF,EAAe/mF,EAAW7rD,KAAK2+I,eAAgB3+I,KAAK42I,MAAM9D,QAEnEO,aAAcxnF,GACZ,OAAOwnF,EAAaxnF,EAAW7rD,KAAK2+I,eAAgB3+I,KAAK42I,MAAM9D,QAEjE0M,aAAc7/I,GACZ,OAAO02I,GACLr2I,KAAKorC,QACL,CAAC8zG,EAAMC,IAAWx/I,Q,WC5GpB,SAAU8/I,GACdntH,EACA9oB,EACAk2I,EACAC,EACAlH,GAAQ,EACRuE,GAA2B,GAE3B,MAAM4C,EAAattH,EAAMotH,GACnBG,EAAWvtH,EAAMqtH,GACjBG,EAAiCjM,EAAe+L,GAAY,GAC5DG,EAAgCF,EAAWhM,EAAegM,GAAU,GAAQC,EAC5ErmI,EAA2Bm7H,EAAYgL,GACzC/K,EAAciL,EAAarH,GAC3BqH,EACEpmI,EAAyBk7H,EAAYiL,GACvChL,EAAckL,EAAWtH,GACzBsH,EACE3H,EAA0B3D,EAAiBh7H,GAC3Cg+H,EAAmC9C,EAAuBl7H,GAC1D4+H,EAAwB5D,EAAiB/6H,GACzCk8F,EAAoBn8F,EAAM25H,QAAU,EAAI,KACxCsE,EAAiC/C,EAAuBj7H,GAAOk8F,EAC/DoqC,GAAUvmI,EAAM25H,QAEtB,MAAO,CAAE9gH,MAAAA,EAAO7Y,MAAAA,EAAO2+H,gBAAAA,EAAiBX,yBAAAA,EAA0B/9H,IAAAA,EAAK2+H,cAAAA,EAAeX,uBAAAA,EAAwBsI,OAAAA,EAAQx2I,MAAAA,EAAOwzI,SAAAA,GAGzH,SAAUiD,GAAWzuG,EAA4B0uG,GACrD,OAAOA,GAAiB1uG,EAAM4mG,iBAAmB8H,GAAiB1uG,EAAM6mG,cAGpE,SAAU8H,GAAiB3uG,EAA4Bi6C,GAC3D,MAA0B,UAAnBj6C,EAAM93B,IAAIgzE,MAAoBl7C,EAAM93B,IAAI22B,OAASo7C,EAAIp7C,MAAQmB,EAAM/3B,MAAM42B,OAASo7C,EAAIp7C,KAGzF,SAAU+vG,GAAc5uG,EAA4Bi6C,EAAwBy0D,EAAuBpH,GACvG,OAAOoH,IAAkB1uG,EAAM4mG,iBAAoBU,IAAiBrtD,EAAIv/B,SAAW+zF,GAAUzuG,EAAO0uG,GAGhG,SAAUG,GAAoB7uG,EAA4B4mG,EAAyBC,GACvF,OAAOD,GAAmB5mG,EAAM6mG,eAAiBA,GAAiB7mG,EAAM4mG,gBCsB1E,MAAMkI,GAAa,IACbC,GAAc,GACdjO,GAAiB,KAGvB,OAAekO,GAAAA,OAAoB,CACjC32I,KAAM,uBAENi2H,WAAY,CACV6O,OAAAA,EAAAA,GAGF32H,MAAO,IACFA,GAAMgd,UACNhd,GAAM+kI,YACN/kI,GAAMglI,UAGXlf,SAAU,CACR2iB,WACE,OAA8B,IAAvBzgJ,KAAKg1B,OAAOhsB,QAErB03I,eACE,OAAO1gJ,KAAKg1B,OAAOvZ,IAAIzb,KAAKy/I,aAE9BkB,8BACE,OAAOtvH,SAASrxB,KAAK89I,wBAEvB8C,qBACE,MAAkC,oBAApB5gJ,KAAKy9I,WACfz9I,KAAKy9I,WACLjsG,KAAWA,EAAMxxC,KAAKy9I,aAE5BoD,wBACE,MAAqC,oBAAvB7gJ,KAAK09I,cACf19I,KAAK09I,cACLlsG,GAASA,EAAMxxC,KAAK09I,gBAE1BoD,yBACE,MAAsC,oBAAxB9gJ,KAAK69I,eACf79I,KAAK69I,eACL,IAAM79I,KAAK69I,gBAEjBkD,oBACE,MAAiC,oBAAnB/gJ,KAAKkuG,UACfluG,KAAKkuG,UACL,CAAC18D,EAAOwvG,KAAeC,EAAAA,GAAAA,GAAWzvG,EAAMlf,MAAMtyB,KAAKkuG,YAAkC,KAE3FgzC,oBACE,MAAwC,oBAA1BlhJ,KAAK+9I,iBACf/9I,KAAK+9I,iBACLxC,GAA0Bv7I,KAAK+9I,mBAErCoD,gBACE,OAAOnhJ,KAAK2+I,gBAEdyC,eACE,MAAqB,aAAdphJ,KAAK2G,OAIhB04H,QAAS,CACPgiB,mBAAoBnxI,GAClB,MAAkC,oBAApBlQ,KAAK49I,WACf59I,KAAK49I,WAAW1tI,GAChBA,EAAE2iB,OAAS7yB,KAAK49I,YAEtB6B,WAAYntH,EAAsB9oB,EAAQ,GACxC,OAAOi2I,GACLntH,EACA9oB,EACAxJ,KAAKu9I,WACLv9I,KAAKw9I,SACLx9I,KAAK4gJ,mBAAmBtuH,KACxBtyB,KAAKohJ,cAAephJ,KAAK6gJ,sBAAsBvuH,KAGnDgvH,WAAYC,EAA6BC,GACvC,MAAMl2G,EAAYtrC,KAAKw/I,aAAa,CAClCP,SAAU,MACVzzD,KAAM,UACND,OAAQg2D,EAASh2D,OAAS,EAAI,eAAYzlF,IAG5C,OAAOwlC,EAAUi2G,GAAU,IAE7BE,wBACE,GAAIzhJ,KAAKygJ,WAAazgJ,KAAKg+I,UACzB,OAGF,MAAML,EAAc39I,KAAK29I,YACnB+D,EAAY1hJ,KAAK2hJ,eAEvB,IAAK,MAAMtxG,KAAQqxG,EAAW,CAC5B,MAAM,OAAEvhJ,EAAF,OAAU60B,EAAV,KAAkB4sH,GAASF,EAAUrxG,GAC3C,IAAKuxG,EACH,MAGF,MAAMC,EAAe1hJ,EAAOsoC,wBACtB0F,EAAOnZ,EAAOhsB,OAAS,EACvB84I,EAAe9sH,EAAOvZ,KAAI+1B,IAAS,CACvCA,MAAAA,EACA5W,OAAQ4W,EAAM/I,wBAAwB7N,WACpCrc,MAAK,CAAC7G,EAAGC,IAAMD,EAAEkjB,OAASjjB,EAAEijB,SAChC,IAAIyd,EAAS,EAEb,IAAK,IAAIvvC,EAAI,EAAGA,GAAKqlC,EAAMrlC,IAAK,CAC9B,MAAM8xB,EAASknH,EAAah5I,GAAG8xB,OACzBgZ,EAAO9qC,IAAMqlC,EACdvT,EAASinH,EAAajnH,OACtBA,EAAS+iH,EAAckE,EAAajnH,OAErCgZ,IACFkuG,EAAah5I,GAAG0oC,MAAMrc,MAAMg2B,QAAU,OACtC9S,KAIAA,GACFupG,EAAKzsH,MAAMg2B,QAAU,GACrBy2F,EAAKp7C,UAAYxmG,KAAKy+H,SAASC,KAAKt9G,EAAEphB,KAAKi+I,cAAe5lG,IAE1DupG,EAAKzsH,MAAMg2B,QAAU,SAI3Bw2F,eACE,MAAMD,EAA6B,GAC7B3sH,EAAW/0B,KAAKqnI,MAAMryG,OAE5B,OAAKD,GAAaA,EAAS/uB,SAI3B+uB,EAAS/uB,SAAQ0P,IACf,MAAM26B,EAAO36B,EAAG89C,aAAa,aACzB99C,EAAGqsI,eAAiB1xG,IAChBA,KAAQqxG,IACZA,EAAUrxG,GAAQ,CAChBlwC,OAAQuV,EAAGqsI,cACXH,KAAM,KACN5sH,OAAQ,KAGRtf,EAAG89C,aAAa,aAClBkuF,EAAUrxG,GAAMuxG,KAAOlsI,GAEvBgsI,EAAUrxG,GAAMrb,OAAOzrB,KAAKmM,GAC5BA,EAAGyf,MAAMg2B,QAAU,QAKlBu2F,GAtBEA,GAwBXM,aAAa,MAAExwG,GAA8Bi6C,GAC3C,MAAMkyD,EAAc39I,KAAK29I,YACnBQ,EAAoBn+I,KAAKm+I,kBACzB+B,EAAgBzL,EAAiBhpD,GACjCC,EAAOD,EAAIC,KACXjyE,EAAQymI,IAAkB1uG,EAAM4mG,gBACtC,IAAI1+H,EAAMwmI,IAAkB1uG,EAAM6mG,cAC9BrgH,EAAQuoH,GAEZ,IAAKvgJ,KAAKohJ,aACR,IAAK,IAAIt4I,EAAI2iF,EAAIjiF,MAAQ,EAAGV,EAAI4iF,EAAK1iF,OAAQF,IAAK,CAChD,MAAMm5I,EAAoBxN,EAAiB/oD,EAAK5iF,IAChD,KAAI0oC,EAAM6mG,eAAiB4J,GAGpB,CACLvoI,GAAM,EACN,MAJAse,GAASsoH,GACT5mI,EAAMA,GAAOuoI,IAAsBzwG,EAAM6mG,cAO/C,MAAMlkH,EAAQ,CAAE+tH,YAAa1wG,EAAOi6C,IAAAA,EAAKhyE,MAAAA,EAAOC,IAAAA,EAAK++H,OAAO,GAE5D,OAAOz4I,KAAKmiJ,SAAS3wG,EAAOrd,GAAO,EAAO,CACxC6pG,YAAa,UACbC,MAAO,CACL,gBAAiBxkH,EACjB,cAAeC,GAEjByb,MAAO,CACL+D,OAAQ,GAAGykH,MACX3lH,MAAO,GAAGA,KACV,gBAAiB,GAAGmmH,OAEtBjjC,MAAO,CACL,YAAazvB,EAAIp7C,MAEnBnqC,IAAKsrC,EAAMhoC,MACXg7F,IAAK,SACL49C,UAAU,KAGdC,eAAe,MAAE7wG,EAAF,KAAS53B,EAAT,MAAeoe,GAA8ByzD,GAC1D,GAAIA,EAAI62D,UAAU9wG,EAAM93B,KAAO,GAAK+xE,EAAI62D,UAAU9wG,EAAM/3B,QAAU,GAAK0mI,GAAgB3uG,EAAOi6C,GAC5F,OAAO,EAGT,MAAMy0D,EAAgBzL,EAAiBhpD,GACjChyE,EAAQ+3B,EAAM4mG,iBAAmB8H,EACjCxmI,EAAM83B,EAAM6mG,cAAgB6H,EAC5BvlH,EAAMlhB,EAAQgyE,EAAI82D,QAAQ/wG,EAAM/3B,OAAS,EACzCmhB,EAASlhB,EAAM+xE,EAAI82D,QAAQjQ,IAAkB7mD,EAAI82D,QAAQ/wG,EAAM93B,KAC/Dwf,EAASjqB,KAAKmQ,IAAIpf,KAAK29I,YAAa/iH,EAASD,GAC7CxG,EAAQ,CAAE+tH,YAAa1wG,EAAOi6C,IAAAA,EAAKhyE,MAAAA,EAAOC,IAAAA,EAAK++H,OAAO,GAE5D,OAAOz4I,KAAKmiJ,SAAS3wG,EAAOrd,GAAO,EAAM,CACvC6pG,YAAa,gBACb7oG,MAAO,CACLwF,IAAK,GAAGA,MACRzB,OAAQ,GAAGA,MACXtf,KAAM,GAAGA,KACToe,MAAO,GAAGA,SAIhBmqH,SAAU3wG,EAA4BgxG,EAA8BxB,EAAqB3+I,GAAe,MACtG,MAAMinI,EAAOtpI,KAAK0/H,aAAaluF,MACzB7V,EAAO37B,KAAK8gJ,uBAAuBtvG,EAAMlf,OACzCmwH,EAAaziJ,KAAKqhJ,mBAAmB7vG,EAAMlf,OAC3CowH,EAAelxG,EAAM/3B,MAAM+xE,KAAO,IAAMh6C,EAAM93B,IAAI8xE,MAAQ,GAC1Dm3D,EAAWpN,GAAY/jG,EAAM/3B,MAAO+3B,EAAM93B,MAAQ1Z,KAAK2gJ,4BACvDW,EAAathJ,KAAKshJ,WAClBsB,EAAc,IAAMtB,EAAW9vG,EAAM/3B,MAAOipI,GAAgB,MAAQpB,EAAW9vG,EAAM93B,KAAK,GAC1FmpI,EAAe,KACnB,MAAMh5I,EAAO7J,KAAK+gJ,kBAAkBvvG,EAAOwvG,GAC3C,GAAIxvG,EAAM/3B,MAAM25H,QAAS,CACvB,MAAM0P,EAAoB,kBAC1B,GAAI9B,EAAY,CACd,MAAMt0D,EAAOk2D,IACPG,EAAYJ,EAAW,KAAO,OAEpC,MAAO,gBAAgBG,cAA8Bj5I,aAAgBk5I,IAAYr2D,WAC5E,CACL,MAAMA,EAAO40D,EAAW9vG,EAAM/3B,OAAO,GAErC,MAAO,gBAAgBqpI,cAA8Bp2D,cAAiB7iF,YAI1E,OAAOA,GAGHsqB,EAAQ,IACTquH,EACHhxG,MAAOA,EAAMlf,MACb6iD,QAASqtE,EAAW/2D,IAAItW,QACxBwtE,SAAAA,EACAD,aAAAA,EACApB,WAAAA,EACAsB,YAAAA,EACAC,aAAAA,GAGF,OAAO7iJ,KAAKo+H,eAAe,MACzBp+H,KAAKggI,aAAarkG,EAChB37B,KAAKk+H,mBAAmBukB,EAAY,CAClCl7C,GAAIvnG,KAAKqvI,6BAA6B,UAAU2T,IAAe,IAAM7uH,EAAO6uH,YAAAA,MAC5EljB,WAAY,CAAC,CACXj2H,KAAM,SACNzF,MAAK,SAAEpE,KAAKk+I,cAAP,OAEJ77I,KAEJinI,EACCA,EAAKn1G,GACL,CAACn0B,KAAKijJ,QAAQJ,MAGtBI,QAASJ,GACP,OAAO7iJ,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,OACb0G,SAAU,CACRl+B,UAAWq8C,QAIjBK,eAAgBz3D,GACd,MAAMvyD,EAASl5B,KAAK29I,YAAc39I,KAAKm+I,kBAEvC,OAAOn+I,KAAKo+H,eAAe,MAAO,CAChCjpG,MAAO,CACL+D,OAAQ,GAAGA,OAEbgiF,MAAO,CACL,YAAazvB,EAAIp7C,MAEnBm0D,IAAK,SACL49C,UAAU,KAGde,QAAS13D,GAAyB,MAChC,MAAMkyD,EAAc39I,KAAK29I,YACnBQ,EAAoBn+I,KAAKm+I,kBAE/B,OAAOn+I,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,oBACbC,MAAO,CACL,YAAaxyC,EAAItW,SAEnB+lC,MAAO,CACL,YAAazvB,EAAIp7C,KACjB,YAAa,GAEfyvF,WAAY,CAAC,CACXj2H,KAAM,SACNzF,MAAK,SAAEpE,KAAKk+I,cAAP,IAEP32C,GAAIvnG,KAAKqvI,6BAA6B,SAAS2T,IACtC,CAAEA,YAAAA,KAAgBv3D,MAG3Bt2D,MAAO,CACLg2B,QAAS,OACTjyB,OAAQ,GAAGykH,MACX,gBAAiB,GAAGQ,OAEtB35C,IAAK,SACL49C,UAAU,KAGdgB,mBACE,MAAM3pI,EAAQg7H,EAAiBz0I,KAAKs1I,KAAK,IACnC57H,EAAM+6H,EAAiBz0I,KAAKs1I,KAAKt1I,KAAKs1I,KAAKtsI,OAAS,IAE1D,OAAOhJ,KAAK0gJ,aAAavoI,QACvBq5B,GAAS6uG,GAAmB7uG,EAAO/3B,EAAOC,MAG9C2pI,mBAAoB7xG,EAA4BwrG,GAC9C,OAAQh9I,KAAKohJ,cACU,kBAAbpE,GAAyBA,EAASsG,cAC1CtG,EAASsG,eAAiB9xG,EAAMwrG,UACL,kBAAnBxrG,EAAMwrG,UAAyBA,IAAaxrG,EAAMwrG,UAC/B,kBAAnBxrG,EAAMwrG,UAAsC,OAAbA,GAE3CuG,gBAAiB93D,GACf,MAAMyvD,EAAazG,EAAiBhpD,GAC9BqtD,EAAe94I,KAAKmhJ,cAAc,GAExC,OAAOnhJ,KAAK0gJ,aAAavoI,QACvBq5B,GAAS4uG,GAAa5uG,EAAOi6C,EAAKyvD,EAAYpC,MAGlD0K,mBAAoB/3D,GAClB,MAAMyvD,EAAazG,EAAiBhpD,GAC9BqtD,EAAe94I,KAAKmhJ,cAAc,GAExC,OAAOnhJ,KAAK0gJ,aAAavoI,QACvBq5B,GAASA,EAAMwuG,SACZhgJ,KAAKohJ,aAAenB,GAAUzuG,EAAO0pG,GAAckF,GAAa5uG,EAAOi6C,EAAKyvD,EAAYpC,KACzF94I,KAAKqjJ,mBAAmB7xG,EAAOi6C,EAAIuxD,aAGzCyG,qBAAsBh4D,GACpB,MAAMyvD,EAAazG,EAAiBhpD,GACpC,OAAOzrF,KAAK0gJ,aAAavoI,QACvBq5B,IAAUA,EAAMwuG,QACdC,GAAUzuG,EAAO0pG,IACjBl7I,KAAKqjJ,mBAAmB7xG,EAAOi6C,EAAIuxD,aAGzC0G,iBACE,GAAI1jJ,KAAKygJ,SACP,MAAO,IAAKzgJ,KAAK0/H,cAGnB,MAAM9pG,EAAO51B,KAAKkhJ,kBAChBlhJ,KAAK0gJ,aACL1gJ,KAAKmhJ,cAAc,GACnBnhJ,KAAK2gJ,6BAGDgD,EAAUrxH,KAA2CA,EACrDsxH,EAAkC,CAACn4D,EAAK/kC,EAAQm9F,EAAQpL,KAC5D,MAAMzjH,EAAS0xB,EAAO+kC,GAChB6rD,EAAU1hH,EAAK61D,EAAKz2D,EAAQyjH,EAAOz4I,KAAKohJ,cAE9C,GAAI3I,EACF,OAAOnB,EAAQ77H,KAAIu9H,GAAU6K,EAAO7K,EAAQvtD,KAAMtzE,OAAOwrI,GAG3D,MAAMr/C,EAAoB,GAa1B,OAXAgzC,EAAQtxI,SAAQ,CAACgzI,EAAQxvI,KACvB,MAAO86F,EAASt7F,OAASgwI,EAAOxB,OAC9BlzC,EAAS/6F,KAAKvJ,KAAKkjJ,eAAez3D,IAGpC,MAAMq4D,EAASD,EAAO7K,EAAQvtD,GAC1Bq4D,GACFx/C,EAAS/6F,KAAKu6I,MAIXx/C,GAGH+/B,EAAQrkI,KAAK0/H,aACbqkB,EAAU1f,EAAM54C,IAChBu4D,EAAgB3f,EAAM,cACtB4f,EAAc5f,EAAM,YAE1B,MAAO,IACFA,EACH54C,IAAMA,IACJ,IAAI6Y,EAAWs/C,EAAgBn4D,EAAKzrF,KAAKujJ,gBAAiBvjJ,KAAKgiJ,aAAa,GAI5E,GAHI19C,GAAYA,EAASt7F,OAAS,GAAKhJ,KAAKg+I,WAC1C15C,EAAS/6F,KAAKvJ,KAAKmjJ,QAAQ13D,IAEzBs4D,EAAS,CACX,MAAMza,EAAOya,EAAQt4D,GACjB69C,IACFhlC,EAAWA,EAAWA,EAASrjG,OAAOqoI,GAAQA,GAGlD,OAAOhlC,GAET,aAAe7Y,IACb,IAAI6Y,EAAWs/C,EAAgBn4D,EAAKzrF,KAAKwjJ,mBAAoBxjJ,KAAKgiJ,aAAa,GAE/E,GAAIgC,EAAe,CACjB,MAAM1a,EAAO0a,EAAcv4D,GACvB69C,IACFhlC,EAAWA,EAAWA,EAASrjG,OAAOqoI,GAAQA,GAGlD,OAAOhlC,GAET,WAAa7Y,IACX,MAAMz2D,EAAS4uH,EAAgBn4D,EAAKzrF,KAAKyjJ,qBAAsBzjJ,KAAKqiJ,eAAe,GACnF,IAAI/9C,EAAoB,CACtBtkG,KAAKo+H,eAAe,MAAO,CACzBJ,YAAa,2BACZhpG,IAGL,GAAIivH,EAAa,CACf,MAAM3a,EAAO2a,EAAYx4D,GACrB69C,IACFhlC,EAAWA,EAASrjG,OAAOqoI,IAG/B,OAAOhlC,Q,WCjfjB,GAAek8C,GAAAA,OAAoB,CACjC32I,KAAM,oBAENmO,MAAOA,GAAMykI,MAEb3e,SAAU,CACRE,cACE,MAAO,qBAET5gC,UACE,OAAOp9F,KAAKykI,cAEdyf,iBACE,OAAO7yH,SAASrxB,KAAK08I,WAEvBpH,OACE,MAAM6O,EAAUnkJ,KAAKkkJ,eAAiBlkJ,KAAK2+I,eAAe31I,OACpDyQ,EAAQzZ,KAAK4yI,eAAe5yI,KAAK8+I,aACjCplI,EAAM1Z,KAAKqzI,aAAarzI,KAAK++I,WAEnC,OAAOlJ,GACLp8H,EACAC,EACA1Z,KAAK42I,MAAM9D,MACX9yI,KAAK81I,aACL17H,OAAO6sE,iBACPk9D,IAGJC,YACE,MAAMtR,EAAQ9yI,KAAK42I,MAAM9D,MACnBr5H,EAAQzZ,KAAK4yI,eAAeE,GAC5Bp5H,EAAM1Z,KAAKqzI,aAAaP,GAE9B,OAAO+C,GACLp8H,EACAC,EACAo5H,EACA9yI,KAAK81I,aACL91I,KAAK2+I,eAAe31I,OACpBhJ,KAAK2+I,eAAe31I,SAGxBq7I,iBACE,GAAIrkJ,KAAK88I,YACP,OAAO98I,KAAK88I,YAGd,MAAMuC,EAAc,CAAEJ,SAAU,MAAOtzD,MAAO,QACxC2zD,EAAe,CAAEL,SAAU,MAAOtzD,MAAO,SAE/C,OAAO0qD,GACLr2I,KAAKovI,eACL,CAAC8P,EAAMxI,IAAUA,EAAQ4I,EAAeD,MAK9ChgB,QAAS,CACPilB,UAAW74D,GACT,MAAMy0D,EAAgBzL,EAAiBhpD,GAEvC,OAAOy0D,EAAgBzL,EAAiBz0I,KAAK8+I,cACtCoB,EAAgBzL,EAAiBz0I,KAAK++I,YAE/CwF,UACE,OAAOvkJ,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,2BACZh+H,KAAKwkJ,gBAEVA,cACE,MAAMljC,EAASthH,KAAKokJ,UAAU3oI,IAAIzb,KAAKykJ,YAQvC,OANIzkJ,KAAK68I,UACPv7B,EAAOv2G,QAAQ/K,KAAKo+H,eAAe,MAAO,CACxCJ,YAAa,wCAIV1c,GAETmjC,WAAYh5D,EAAwBjiF,GAClC,MAAM2rE,EAAUn1E,KAAKskJ,UAAUtkJ,KAAKs1I,KAAK9rI,IACnCqpB,EAAQ44D,EAAIwoD,QAAUj0I,KAAK6yB,WAAQ/sB,EAEzC,OAAO9F,KAAKo+H,eAAe,MAAOp+H,KAAKggI,aAAantG,EAAO,CACzD3sB,IAAKulF,EAAIp7C,KACT2tF,YAAa,kCACbC,MAAOj+H,KAAKu/I,mBAAmB9zD,EAAKtW,KAClCn1E,KAAKo/I,iBAAiB3zD,EAAKzrF,KAAK27I,iBAEtC+I,WACE,MAAMpP,EAAOt1I,KAAKs1I,KACZqP,EAAW3kJ,KAAK2+I,eAAe31I,OAC/ByzI,EAAiB,GAEvB,IAAK,IAAI3zI,EAAI,EAAGA,EAAIwsI,EAAKtsI,OAAQF,GAAK67I,EACpClI,EAAMlzI,KAAKvJ,KAAK4kJ,QAAQtP,EAAKhnI,MAAMxF,EAAGA,EAAI67I,GAAW3kJ,KAAK6kJ,cAAcvP,EAAKxsI,MAG/E,OAAO2zI,GAETmI,QAASl5D,EAA2B8lD,GAClC,MAAMsT,EAAYp5D,EAAKjwE,KAAI,CAACgwE,EAAKjiF,IAAUxJ,KAAK+kJ,OAAOt5D,EAAKjiF,EAAOkiF,KAMnE,OAJI1rF,KAAK68I,UACPiI,EAAU/5I,QAAQ/K,KAAKglJ,cAAcxT,IAGhCxxI,KAAKo+H,eAAe,MAAO,CAChCl4H,IAAKwlF,EAAK,GAAGr7C,KACb2tF,YAAa,2BACZ8mB,IAELD,cAAeI,GACb,OAAOzT,EACLyT,EAAap5D,KACbo5D,EAAat5D,MAAQ,EACrBs5D,EAAax5D,IACbzrF,KAAK2+I,eAAe,GACpBttH,SAASrxB,KAAKyxI,wBAGlBuT,cAAexT,GACb,OAAOxxI,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,iCACZ,CACDh+H,KAAKo+H,eAAe,QAAS5lH,OAAOg5H,OAGxCuT,OAAQt5D,EAAwBjiF,EAAekiF,GAC7C,MAAMvW,EAAUn1E,KAAKskJ,UAAU74D,GAE/B,OAAOzrF,KAAKo+H,eAAe,MAAO,CAChCl4H,IAAKulF,EAAIp7C,KACT2tF,YAAa,yBACbC,MAAOj+H,KAAKu/I,mBAAmB9zD,EAAKtW,GACpCoyB,GAAIvnG,KAAKqvI,6BAA6B,QAAQ2T,IACrC,CAAEA,YAAAA,KAAgBv3D,OAE1B,CACDzrF,KAAKklJ,YAAYz5D,OACbogD,EAAAA,GAAAA,IAAQ7rI,KAAM,OAAO,KAAM,CAAGm1E,QAAAA,EAAS3rE,MAAAA,EAAOkiF,KAAAA,KAASD,OAAW,MAG1Ey5D,YAAaz5D,GACX,OAAOzrF,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,iCACZ6N,EAAAA,GAAAA,IAAQ7rI,KAAM,YAAayrF,IAAQ,CAACzrF,KAAKmlJ,kBAAkB15D,MAEhE05D,kBAAmB15D,GACjB,MAAM54D,EAAQ44D,EAAIwoD,QAAUj0I,KAAK6yB,MAAQ,cACnCuyH,EAAuB,IAAZ35D,EAAIA,KAAazrF,KAAK48I,iBAEvC,OAAO58I,KAAKo+H,eAAeG,GAAAA,EAAM,CAC/BvmH,MAAO,CACL6a,MAAAA,EACA86G,KAAK,EACLD,WAAW,EACXlP,OAAO,GAETj3B,GAAIvnG,KAAKuvI,sBAAsB,CAC7B,aAAc,CAAE/9F,MAAO,QAASnD,MAAM,GACtC,mBAAoB,CAAEmD,MAAO,cAAenD,MAAM,EAAMmhG,SAAS,EAAMr5H,QAAQ,KAC9E6sI,IAAe,CAAGA,YAAAA,KAAgBv3D,OACpC25D,EACCplJ,KAAKqkJ,eAAe54D,EAAKzrF,KAAK28I,aAAe,IAAM38I,KAAKg/I,aAAavzD,GAAK,GAC1EzrF,KAAKg/I,aAAavzD,GAAK,KAG7B45D,YAAa55D,GACX,MAAM54D,EAAQ44D,EAAIwoD,QAAUj0I,KAAK6yB,WAAQ/sB,EAEzC,OAAO9F,KAAKo+H,eAAe,MAAOp+H,KAAKggI,aAAantG,EAAO,CACzDmrG,YAAa,kCACX6N,EAAAA,GAAAA,IAAQ7rI,KAAM,YAAayrF,IAAQzrF,KAAKqkJ,eAAe54D,EAAKzrF,KAAK28I,gBAIzEx9I,OAAQ2B,GACN,OAAOA,EAAE,MAAO,CACdk9H,YAAah+H,KAAKg+H,YAClBC,MAAOj+H,KAAKo9F,QACZmK,GAAI,CACF+9C,UAAYp1I,IACVA,EAAE4uG,oBAGL,CACA9+G,KAAK07I,WAA8B,GAAjB17I,KAAKukJ,aACrBvkJ,KAAK0kJ,gBC3Md,GAAea,GAAgB79I,OAAO,CACpCmC,KAAM,qBAENi0H,SAAU,CACRE,cACE,MAAO,wCAET8gB,cACE,OAAOxL,EAAgBO,EAAe7zI,KAAKyZ,OAAO,KAEpDslI,YACE,OAAOvL,EAAcK,EAAe7zI,KAAK0Z,KAAK,QCHpD,GAAe8mI,GAAAA,OAAoB,CACjC32I,KAAM,0BAENmO,MAAOA,GAAMk+H,UAEbpY,SAAU,CACR0nB,sBACE,OAAOn0H,SAASrxB,KAAKm8I,gBAEvBsJ,wBACE,OAAOp0H,SAASrxB,KAAKk8I,kBAEvBwJ,sBACE,OAAOr0H,SAASrxB,KAAKq8I,gBAEvBsJ,uBACE,OAAOhrI,WAAW3a,KAAK+7I,iBAEzB6J,kBACE,OAAOjS,EAAU3zI,KAAKo8I,YAExByJ,cACE,MAAMn5D,EAAO1sF,KAAK4lJ,gBAElB,OAAgB,IAATl5D,GAAkBA,GAAQ,GAAKA,GAAQ4lD,EAC1C5lD,EACA1sF,KAAKwlJ,oBAAsBxlJ,KAAKylJ,uBAEtCK,aACE,OAAO9lJ,KAAK0lJ,oBAAsB1lJ,KAAK2lJ,sBAEzCrQ,OACE,OAAOO,GACL71I,KAAK8+I,YACL9+I,KAAK++I,UACL/+I,KAAK42I,MAAM9D,MACX9yI,KAAK81I,aACL91I,KAAKw1I,UAGTU,YACE,MAAMZ,EAA4Bt1I,KAAKs1I,KACjCv9E,EAAgB/3D,KAAK6lJ,YACrB9Q,EAAkB/0I,KAAKylJ,sBACvBzhH,EAAgBhkC,KAAK0lJ,oBACrBzyI,EAAyBjT,KAAK42I,MAAM3jI,IAE1C,OAAOqiI,EAAK75H,KAAIgI,GAAKwyH,GAAmBxyH,EAAGs0C,EAAOg9E,EAAS/wG,EAAO/wB,MAEpE8yI,oBACE,GAAI/lJ,KAAKs8I,eACP,OAAOt8I,KAAKs8I,eAGd,MAAM+C,EAAc,CAAEJ,SAAU,MAAOzzD,KAAM,UAAWD,OAAQ,WAC1D+zD,EAAe,CAAEL,SAAU,MAAOzzD,KAAM,UAAWD,OAAQ,WAC3Dy6D,EAAmB,CAAE/G,SAAU,MAAOzzD,KAAM,WAElD,OAAO6qD,GACLr2I,KAAKovI,eACL,CAAC6W,EAAKvP,IAAUA,EAAwB,IAAfuP,EAAI16D,OAAey6D,EAAmB1G,EAAgBD,MAKrFhgB,QAAS,CACP6mB,yBAA0B55D,GACxB,MAAMv0B,EAA2B/3D,KAAKk2I,UAAU,GAAG,GAC7CiQ,EAAmBpuF,EAAMyzB,OAASc,EAASd,MAAQzzB,EAAMwzB,SAAWe,EAASf,OACnF,OAAQ46D,GAEVC,qBAAsBC,KAGtBC,oBAAqBp2I,EAA4Bu7E,GAC/C,MAAM5/B,EAA+BknF,GAActnD,GAC7Ct+C,EAAUj9B,EAAE6/H,cAA8BtnG,wBAC1C89G,EAAsBvmJ,KAAK6lJ,YAC3BW,EAAyBt2I,EACzBy/H,EAAyBz/H,EACzBm4B,EAAqBm+G,EAAWrW,gBAAkBqW,EAAWn+G,QAC7DM,EAAkBN,GAAWA,EAAQ,GAAKA,EAAQ,GAAGM,QAAUgnG,EAAWhnG,QAC1E89G,GAAwB99G,EAAUwE,EAAOxS,KAAO36B,KAAK2lJ,qBACrDrK,EAAqBrsI,KAAKC,MAAMu3I,EAAezmJ,KAAKylJ,uBACpD1Q,EAAkBwR,EAAcjL,EAEtC,OAAOxG,EAAcjpF,EAAWkpF,EAAS/0I,KAAK42I,MAAM3jI,MAEtDyzI,aAAc76F,GACZ,MAAM13B,EAAQ4+G,GAAclnF,GAK5B,OAJA13B,EAAMouH,QAAUviJ,KAAKuiJ,QACrBpuH,EAAMmuH,UAAYtiJ,KAAKsiJ,UACvBnuH,EAAMwyH,gBAAkB3mJ,KAAK2mJ,gBAC7BxyH,EAAMu3D,KAAO1rF,KAAKs1I,KACXnhH,GAETyyH,aAAcl6D,GACZ,MAAM/tE,EAAI3e,KAAKuiJ,QAAQ71D,GACjBm6D,EAAO7mJ,KAAKqnI,MAAMyf,WAExB,SAAU,IAANnoI,IAAgBkoI,KAIpBA,EAAK79C,UAAYrqF,GAEV,IAETgoI,gBAAiB5R,GACf,OAAOA,EAAU/0I,KAAKylJ,sBAAwBzlJ,KAAK2lJ,sBAErDpD,QAAS71D,EAAaq6D,GAAQ,GAC5B,IAAIpoI,EAAI3e,KAAKsiJ,UAAU51D,GAevB,OAbU,IAAN/tE,IACFA,GAAK3e,KAAK8lJ,WAENiB,IACEpoI,EAAI,IACNA,EAAI,GAEFA,EAAI3e,KAAK8lJ,aACXnnI,EAAI3e,KAAK8lJ,cAKRnnI,GAET2jI,UAAW51D,GACT,MAAMqoD,EAAUpB,EAAUjnD,GAE1B,IAAgB,IAAZqoD,EACF,OAAO,EAGT,MAAM51H,EAAcnf,KAAK6lJ,YACnBmB,EAAchnJ,KAAK0lJ,oBAAsB1lJ,KAAKylJ,sBAEpD,OAAQ1Q,EAAU51H,GAAO6nI,MC1I/B,GAAeC,GAAAA,OAA6B,CAC1Cp9I,KAAM,mBAENi2H,WAAY,CAAE4e,OAAAA,GAAAA,GAEdr8I,KAAM,KAAM,CACV6kJ,WAAY,IAGdppB,SAAU,CACR1gC,UACE,MAAO,CACL,oBAAoB,KACjBp9F,KAAKykI,gBAKdrD,UACEphI,KAAKs8D,QAGP+iE,QAAS,CACP/iE,OACEt8D,KAAKwhI,UAAUxhI,KAAKgtE,WAEtBA,WACEhtE,KAAKknJ,WAAalnJ,KAAKmnJ,iBAEzBA,gBACE,MAAM1sH,EAAOz6B,KAAKqnI,MAAMyf,WAClBD,EAAO7mJ,KAAKqnI,MAAMwf,KAExB,OAAOpsH,GAAQosH,EAAQpsH,EAAKg9F,YAAcovB,EAAKpvB,YAAe,GAEhE8sB,UACE,OAAOvkJ,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,yBACb7oG,MAAO,CACLiyH,YAAapnJ,KAAKknJ,WAAa,OAEhC,CACDlnJ,KAAKqnJ,sBACFrnJ,KAAKwkJ,iBAGZ6C,mBACE,MAAMrvH,GAA4BgsG,EAAAA,GAAAA,IAAchkI,KAAKi8I,eAErD,OAAOj8I,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,mCACb7oG,MAAO,CACL6C,MAAAA,KAED6zG,EAAAA,GAAAA,IAAQ7rI,KAAM,qBAEnBwkJ,cACE,OAAOxkJ,KAAKs1I,KAAK75H,IAAIzb,KAAKykJ,aAE5BA,WAAYh5D,EAAwBjiF,GAClC,OAAOxJ,KAAKo+H,eAAe,MAAO,CAChCl4H,IAAKulF,EAAIp7C,KACT2tF,YAAa,4BACbC,MAAOj+H,KAAKu/I,mBAAmB9zD,GAC/B8b,GAAIvnG,KAAKqvI,6BAA6B,QAAQ2T,IACrC,CAAEA,YAAAA,KAAgBhjJ,KAAK0mJ,aAAaj7D,QAE5C,CACDzrF,KAAKsnJ,eAAe77D,GACpBzrF,KAAKunJ,gBAAgB97D,MAClBzrF,KAAKwnJ,aAAa/7D,EAAKjiF,MAG9Bg+I,aAAc/7D,EAAwBjiF,GACpC,OAAOqiI,EAAAA,GAAAA,IAAQ7rI,KAAM,cAAc,KAAM,CACvC0rF,KAAM1rF,KAAKs1I,QAAS7pD,EAAKjiF,MAAAA,OACpB,IAET89I,eAAgB77D,GACd,MAAM54D,EAAQ44D,EAAIwoD,QAAUj0I,KAAK6yB,WAAQ/sB,EAEzC,OAAO9F,KAAKo+H,eAAe,MAAOp+H,KAAKggI,aAAantG,EAAO,CACzDmrG,YAAa,kCACXh+H,KAAKo/I,iBAAiB3zD,EAAKzrF,KAAK27I,iBAEtC4L,gBAAiB97D,GACf,OAAOzrF,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,oCACZ6N,EAAAA,GAAAA,IAAQ7rI,KAAM,mBAAoByrF,IAAQ,CAACzrF,KAAKynJ,iBAAiBh8D,MAEtEg8D,iBAAkBh8D,GAChB,MAAM54D,EAAQ44D,EAAIwoD,QAAUj0I,KAAK6yB,MAAQ,cAEzC,OAAO7yB,KAAKo+H,eAAeG,GAAAA,EAAM,CAC/BvmH,MAAO,CACL6a,MAAAA,EACA86G,KAAK,EACLD,WAAW,GAEbnmC,GAAIvnG,KAAKuvI,sBAAsB,CAC7B,aAAc,CAAE/9F,MAAO,QAASnD,MAAM,GACtC,mBAAoB,CAAEmD,MAAO,cAAenD,MAAM,EAAMmhG,SAAS,EAAMr5H,QAAQ,KAC9E6sI,IACM,CAAEA,YAAAA,KAAgBv3D,OAE1BzrF,KAAKg/I,aAAavzD,GAAK,KAE5Bi8D,UACE,OAAO1nJ,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,0BACZ,CACDh+H,KAAK2nJ,mBAGTA,gBACE,OAAO3nJ,KAAKo+H,eAAe,MAAO,CAChC55B,IAAK,aACLw5B,YAAa,iCACZ,CACDh+H,KAAK4nJ,aAGTA,UACE,OAAO5nJ,KAAKo+H,eAAe,MAAO,CAChC55B,IAAK,OACLw5B,YAAa,yBACb7oG,MAAO,CACL+D,QAAQ8qG,EAAAA,GAAAA,IAAchkI,KAAK8lJ,cAE5B,CACD9lJ,KAAK6nJ,qBAGTA,kBACE,OAAO7nJ,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,mCACZ,CACDh+H,KAAK8nJ,sBACF9nJ,KAAK+nJ,aAGZA,UACE,OAAO/nJ,KAAKs1I,KAAK75H,IAAIzb,KAAK+kJ,SAE5BA,OAAQt5D,EAAwBjiF,GAC9B,OAAOxJ,KAAKo+H,eAAe,MAAO,CAChCl4H,IAAKulF,EAAIp7C,KACT2tF,YAAa,wBACbC,MAAOj+H,KAAKu/I,mBAAmB9zD,GAC/B8b,GAAIvnG,KAAKqvI,6BAA6B,SAAS2T,IACtC,CAAEA,YAAAA,KAAgBhjJ,KAAK0mJ,aAAa1mJ,KAAKsmJ,oBAAoBtD,EAAav3D,SAElF,IACEzrF,KAAKgoJ,gBAAgBx+I,MACrBxJ,KAAKioJ,WAAWx8D,MAGvBw8D,WAAYx8D,GACV,OAAOogD,EAAAA,GAAAA,IAAQ7rI,KAAM,YAAY,IAAMA,KAAK0mJ,aAAaj7D,MAAS,IAEpEu8D,gBAAiBx+I,GACf,OAAOxJ,KAAKk2I,UAAU1sI,GAAOiS,IAAIzb,KAAKkoJ,iBAExCA,eAAgB57D,GACd,MAAMpzD,GAA6B8qG,EAAAA,GAAAA,IAAchkI,KAAK+7I,gBAChDoM,EAASnoJ,KAAKu8I,eAAiBv8I,KAAKomJ,qBAEpC/jJ,EAAO,CACX6D,IAAKomF,EAASI,KACdsxC,YAAa,iCACb7oG,MAAO,CACL+D,OAAAA,KACGivH,EAAO77D,KAKRgY,GAAWunC,EAAAA,GAAAA,IAAQ7rI,KAAM,YAAY,IAAMA,KAAK0mJ,aAAap6D,KAEnE,OAAOtsF,KAAKo+H,eAAe,MAAO/7H,EAAMiiG,IAE1CwjD,mBACE,MAAM9vH,GAA4BgsG,EAAAA,GAAAA,IAAchkI,KAAKi8I,eAC/C55I,EAAO,CACX27H,YAAa,mCACb7oG,MAAO,CACL6C,MAAAA,GAEFuvE,GAAIvnG,KAAKqvI,6BAA6B,aAAa2T,IAC1C,CAAEA,YAAAA,KAAgBhjJ,KAAKsmJ,oBAAoBtD,EAAahjJ,KAAK8+I,kBAIxE,OAAO9+I,KAAKo+H,eAAe,MAAO/7H,EAAMrC,KAAKooJ,sBAE/CA,oBACE,OAAKpoJ,KAAKk2I,UAAUltI,OAEbhJ,KAAKk2I,UAAU,GAAGz6H,IAAIzb,KAAKqoJ,kBAFC,MAIrCA,iBAAkB/7D,GAChB,MAAMpzD,GAA6B8qG,EAAAA,GAAAA,IAAchkI,KAAK+7I,gBAChDrF,EAAiB12I,KAAK87I,eACtBwM,EAAStoJ,KAAKw8I,mBAAqBx8I,KAAKkmJ,yBACxCzyG,EAAO60G,EAAOh8D,GACdtvC,EAAQvJ,EAAOzzC,KAAK+lJ,kBAAkBz5D,EAAUoqD,QAAS5wI,EAE/D,OAAO9F,KAAKo+H,eAAe,MAAO,CAChCl4H,IAAKomF,EAASI,KACdsxC,YAAa,6BACb7oG,MAAO,CACL+D,OAAAA,IAED,CACDl5B,KAAKo+H,eAAe,MAAO,CACzBJ,YAAa,mCACZhhF,OAKT79C,OAAQ2B,GACN,OAAOA,EAAE,MAAO,CACdm9H,MAAOj+H,KAAKo9F,QACZmK,GAAI,CACF+9C,UAAYp1I,IACVA,EAAE4uG,mBAGNghB,WAAY,CAAC,CACXM,UAAW,CAAEmoB,OAAO,GACpB1+I,KAAM,SACNzF,MAAOpE,KAAKgtE,YAEb,CACAhtE,KAAK07I,WAA8B,GAAjB17I,KAAKukJ,UACxBvkJ,KAAK0nJ,eC9PL,SAAUc,GACdxL,EACAE,GAEA,MAA+B,kBAAjBA,GAAiD,kBAAbF,GAAyBA,EACvEA,EAASE,GACe,oBAAjBA,EACLA,EAAaF,GACbA,EAGF,SAAUyL,GACdxL,EACAC,GAEA,MAA0B,kBAAfD,EAAgCA,EAAWvoI,MAAM,UACxDtJ,MAAMiD,QAAQ4uI,GACTA,EAAWxhI,KAAKuhI,IACrB,GAAwB,kBAAbA,EAAuB,OAAOA,EAEzC,MAAMsG,EAAgD,kBAA1BtG,EAASsG,aACjCtG,EAASsG,aACTkF,GAAmBxL,EAAUE,GACjC,MAAO,IAAKF,EAAUsG,aAAAA,MAGnB,GCZT,OAAeoF,GAAehhJ,OAAO,CACnCmC,KAAM,sBAENmO,MAAOA,GAAMglI,SAEblf,SAAU,CACR1gC,UACE,MAAO,CACL,oBAAoB,EACpB,uBAAuB,KACpBp9F,KAAKykI,eAGZkkB,mBACE,OAAOF,GAAoBzoJ,KAAKi9I,WAAYj9I,KAAKk9I,gBAGrD7d,QAAS,CACPmoB,aAAc/7D,EAAwBjiF,GACpC,MAAMnH,EAAO,CACX27H,YAAa,gCAET7pG,EAAQ,CACZu3D,KAAM1rF,KAAKs1I,QAAS7pD,EAAKjiF,MAAAA,GAGrB86F,EAAWtkG,KAAK2oJ,iBAAiBltI,KAAIuhI,GAClCh9I,KAAK4oJ,qBAAqBn9D,EAAKzrF,KAAK6oJ,iBAAiB10H,EAAO6oH,MAGrE,MAAO,CAACh9I,KAAKo+H,eAAe,MAAO/7H,EAAMiiG,KAE3CukD,iBAAkB10H,EAAY6oH,GAC5B,MAAM8L,EAA0B,kBAAb9L,GAAyBA,GACxCA,EAASsG,eAAiBtjJ,KAAKq9I,mBAAqB,KAAOL,EAC/D,MAAO,IACF7oH,EACH6oH,SAAU8L,IAGdF,qBAAsBn9D,EAAwBt3D,GAC5C,MAAM40H,EAAwC,kBAAnB50H,EAAM6oH,SAAwB7oH,EAAM6oH,SAASsG,aAAenvH,EAAM6oH,SAC7F,OAAOh9I,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,qCACbz2B,GAAIvnG,KAAKqvI,6BAA6B,iBAAiBn/H,GAC9ClQ,KAAK6oJ,iBAAiB7oJ,KAAK0mJ,aAAaj7D,GAAMt3D,EAAM6oH,aAE5D,EACDnR,EAAAA,GAAAA,IAAQ7rI,KAAM,WAAYm0B,IAAUn0B,KAAKgpJ,0BAA0BD,IACnEld,EAAAA,GAAAA,IAAQ7rI,KAAM,aAAcm0B,MAGhC60H,0BAA2B1F,GACzB,OAAOtjJ,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,iCACK,OAAjBslB,EAAwBtjJ,KAAKq9I,mBAAqBiG,IAEvDyE,UACE,MAAMzS,EAAgB,GAMtB,OALAt1I,KAAKs1I,KAAKtvI,SAAQ,CAACyd,EAAGyN,KACpB,MAAMu6D,EAAM,IAAIrgF,MAAMpL,KAAK2oJ,iBAAiB3/I,QAAU,GACtDyiF,EAAIrxD,KAAK3W,GACT6xH,EAAK/rI,QAAQkiF,EAAIhwE,KAAI,CAAC5J,EAAG/I,IAAM9I,KAAK+kJ,OAAOlzI,EAAGqf,EAAGpoB,SAE5CwsI,GAETyP,OAAQt5D,EAAwBjiF,EAAey/I,GAC7C,MAAMjM,EAAWh9I,KAAK2oJ,iBAAiBM,GACvC,OAAOjpJ,KAAKo+H,eAAe,MAAO,CAChCl4H,IAAKulF,EAAIp7C,KAAO,IAAM44G,EACtBjrB,YAAa,wBACbC,MAAOj+H,KAAKu/I,mBAAmB9zD,GAC/B8b,GAAIvnG,KAAKqvI,6BAA6B,SAASn/H,GACtClQ,KAAK0mJ,aAAa1mJ,KAAKsmJ,oBAAoBp2I,EAAGu7E,OAEtD,IACEzrF,KAAKgoJ,gBAAgBx+I,EAAOwzI,MAC5Bh9I,KAAKioJ,WAAWx8D,EAAKuxD,MAG5BgL,gBAAiBx+I,EAAewzI,GAC9B,OAAOh9I,KAAKk2I,UAAU1sI,GAAOiS,KAAI5J,GAAK7R,KAAKkoJ,eAAer2I,EAAGmrI,MAE/DkL,eAAgB57D,EAA6B0wD,GAC3C,MAAM9jH,GAA6B8qG,EAAAA,GAAAA,IAAchkI,KAAK+7I,gBAChDoM,EAASnoJ,KAAKu8I,eAAiBv8I,KAAKomJ,qBAEpC/jJ,EAAO,CACX6D,IAAKomF,EAASI,KACdsxC,YAAa,iCACb7oG,MAAO,CACL+D,OAAAA,KACGivH,EAAO,IAAK77D,EAAU0wD,SAAAA,MAIvB14C,GAAWunC,EAAAA,GAAAA,IAAQ7rI,KAAM,YAAY,IACzCA,KAAK6oJ,iBAAiB7oJ,KAAK0mJ,aAAap6D,GAAW0wD,KAGrD,OAAOh9I,KAAKo+H,eAAe,MAAO/7H,EAAMiiG,IAE1C2jD,WAAYx8D,EAAwBuxD,GAClC,MAAM36I,EAAO,CACX27H,YAAa,gCAGT15B,EAAW,CAACtkG,KAAKkpJ,mBAAmBz9D,EAAKuxD,IAE/C,MAAO,CAACh9I,KAAKo+H,eAAe,MAAO/7H,EAAMiiG,KAE3C4kD,mBAAoBz9D,EAAwBuxD,GAC1C,MAAM36I,EAAO,CACX27H,YAAa,8BACbz2B,GAAIvnG,KAAKqvI,6BAA6B,kBAAkBn/H,GAC/ClQ,KAAK6oJ,iBAAiB7oJ,KAAK0mJ,aAAa1mJ,KAAKsmJ,oBAAoBp2I,EAAGu7E,IAAOuxD,MAIhF14C,GAAWunC,EAAAA,GAAAA,IAAQ7rI,KAAM,YAAY,IAAMA,KAAK6oJ,iBAAiB7oJ,KAAK0mJ,aAAaj7D,GAAMuxD,KAE/F,OAAOh9I,KAAKo+H,eAAe,MAAO/7H,EAAMiiG,OCvF9C,GAAe6kD,GAAAA,OAA0B,CACvCt/I,KAAM,aAENmO,MAAO,IACFA,GAAM+kI,YACN/kI,GAAMykI,SACNzkI,GAAMk+H,aACNl+H,GAAMglI,UAGX36I,KAAM,KAAM,CACV+mJ,UAAW,KACXC,QAAS,OAGXvrB,SAAU,CACRxhF,cACE,OAAQs3F,EAAkB5zI,KAAKoE,OAC3ByvI,EAAe7zI,KAAKoE,OAAO,GAC1BpE,KAAK8+I,aAAe9+I,KAAK42I,MAAM9D,OAEtCwW,qBACE,OAAOj4H,SAASrxB,KAAKs9I,eAAiB,GAExCiM,cACE,MAAMC,EAASxpJ,KAAKs8C,YACpB,IAAImqB,EAAiB,KACjB+uE,EAAUx1I,KAAKw1I,QACf3C,EAAW7yI,KAAK2+I,eAChB1B,EAAaj9I,KAAK2oJ,iBAClBlvI,EAAQ+vI,EACR9vI,EAAM8vI,EACV,OAAQxpJ,KAAK2G,MACX,IAAK,QACH8/D,EAAYgjF,GACZhwI,EAAQ65H,EAAgBkW,GACxB9vI,EAAM85H,EAAcgW,GACpB,MACF,IAAK,OACH/iF,EAAYiiF,GACZjvI,EAAQzZ,KAAK4yI,eAAe4W,GAC5B9vI,EAAM1Z,KAAKqzI,aAAamW,GACxBhU,EAAU,EACV,MACF,IAAK,MACH/uE,EAAYiiF,GACZlT,EAAU,EACV3C,EAAW,CAACp5H,EAAMyyC,SAClB,MACF,IAAK,OACHua,EAAYiiF,GACZhvI,EAAM07H,GAAarC,GAAcr5H,GAAMy7H,GAAS,GAChDjC,EAAgBx5H,GAChB87H,EAAU,EACV3C,EAAW,CACTp5H,EAAMyyC,SACLzyC,EAAMyyC,QAAU,GAAK,GACrBzyC,EAAMyyC,QAAU,GAAK,GACrBzyC,EAAMyyC,QAAU,GAAK,GAExB,MACF,IAAK,gBACHua,EAAY8+E,GACZ9rI,EAAQzZ,KAAK8+I,aAAe0K,EAC5B9vI,EAAM1Z,KAAK++I,UACX,MACF,IAAK,eACHt4E,EAAYiiF,GACZjvI,EAAQzZ,KAAK8+I,aAAe0K,EAC5B9vI,EAAM1Z,KAAK++I,UACX,MACF,IAAK,WACH,MAAMzJ,EAAOt1I,KAAKspJ,mBAElB7iF,EAAYijF,GACZhwI,EAAM07H,GAAarC,GAAcr5H,GAAMy7H,GAASG,GAChDpC,EAAgBx5H,GAChB87H,EAAUF,EACVzC,EAAW,GAEX,IAAK,IAAI/pI,EAAI,EAAGA,EAAIwsI,EAAMxsI,IACxB+pI,EAAStpI,MAAMkQ,EAAMyyC,QAAUpjD,GAAK,GAGtCm0I,EAAaj9I,KAAK2pJ,gBAAgB1M,GAClC,MACF,QACE,MAAM,IAAIlxI,MAAM/L,KAAK2G,KAAO,iCAGhC,MAAO,CAAE8/D,UAAAA,EAAWhtD,MAAAA,EAAOC,IAAAA,EAAK87H,QAAAA,EAAS3C,SAAAA,EAAUoK,WAAAA,IAErDkE,gBACE,OAAOnhJ,KAAKupJ,YAAY1W,UAE1BuO,eACE,MAAqB,aAAdphJ,KAAK2G,MAEd2/C,QACE,MAAM,MAAE7sC,EAAF,IAASC,GAAQ1Z,KAAKupJ,YACtBK,EAAYnwI,EAAMoyE,OAASnyE,EAAImyE,KAC/Bg+D,EAAaD,GAAanwI,EAAMkyE,QAAUjyE,EAAIiyE,MAEpD,OAAIi+D,EACK5pJ,KAAK8pJ,oBAAoBrwI,GAAO,GAAQ,IAAMA,EAAMoyE,KAAO,MAAQ7rF,KAAK8pJ,oBAAoBpwI,GAAK,GAAQ,IAAMA,EAAImyE,KAGxHg+D,EACK7pJ,KAAK8pJ,oBAAoBrwI,GAAO,GAAQ,MAAQzZ,KAAK8pJ,oBAAoBpwI,GAAK,GAAQ,IAAMA,EAAImyE,KAEhG7rF,KAAK+pJ,mBAAmBtwI,GAAO,GAAS,IAAMA,EAAMoyE,MAG/Dk+D,qBACE,OAAO/pJ,KAAKw/I,aAAa,CACvBP,SAAU,MAAOtzD,MAAO,UAG5Bm+D,sBACE,OAAO9pJ,KAAKw/I,aAAa,CACvBP,SAAU,MAAOtzD,MAAO,WAG5Bg9D,mBACE,OAAOF,GAAoBzoJ,KAAKi9I,WAAYj9I,KAAKk9I,gBAIrD/b,MAAO,CACLooB,YAAa,eAGfnoB,UACEphI,KAAKyhJ,wBACLzhJ,KAAKgqJ,eAGP18E,UACEl5D,OAAOyE,sBAAsB7Y,KAAKyhJ,wBAGpCpiB,QAAS,CACP2qB,cACE,MAAM,UAAEZ,EAAF,QAAaC,GAAYrpJ,MACzB,MAAEyZ,EAAF,IAASC,GAAQ1Z,KAAKupJ,YACvBH,GAAcC,GACjB5vI,EAAM42B,OAAS+4G,EAAU/4G,MACzB32B,EAAI22B,OAASg5G,EAAQh5G,OACrBrwC,KAAKopJ,UAAY3vI,EACjBzZ,KAAKqpJ,QAAU3vI,EACf1Z,KAAKumI,MAAM,SAAU,CAAE9sH,MAAAA,EAAOC,IAAAA,MAGlCulC,KAAM6M,EAAS,GACb,MAAMm+F,EAAQlX,GAAc/yI,KAAKs8C,aAC3B4tG,EAAUp+F,EAAS,EACnBupF,EAAQ6U,EAAU/U,GAAUlC,GAC5B9wE,EAAQ+nF,EAAUnY,EAAoBG,EAC5C,IAAI0E,EAAQsT,EAAUp+F,GAAUA,EAEhC,QAAS8qF,GAAS,EAChB,OAAQ52I,KAAK2G,MACX,IAAK,QACHsjJ,EAAMx+D,IAAMtpB,EACZkzE,EAAM4U,GACN,MACF,IAAK,OACH7U,GAAa6U,EAAO5U,EAAOlD,GAC3B,MACF,IAAK,MACHiD,GAAa6U,EAAO5U,EAAO,GAC3B,MACF,IAAK,OACHD,GAAa6U,EAAO5U,EAAO,GAC3B,MACF,IAAK,WACHD,GAAa6U,EAAO5U,EAAOr1I,KAAKspJ,oBAChC,MAIN/V,EAAc0W,GACd/W,EAAgB+W,GAChB9W,EAAe8W,EAAOjqJ,KAAK42I,MAAM3jI,KAE7BjT,KAAKoE,iBAAiBsO,KACxB1S,KAAKumI,MAAM,QAASqP,GAAgBqU,IACL,kBAAfjqJ,KAAKoE,MACrBpE,KAAKumI,MAAM,QAASqP,GAAgBqU,GAAOn6C,WAE3C9vG,KAAKumI,MAAM,QAAS0jB,EAAM55G,MAG5BrwC,KAAKumI,MAAM,QAAS0jB,IAEtBplH,KAAMinB,EAAS,GACb9rD,KAAKi/C,KAAK6M,IAEZ7kB,KAAM6kB,EAAS,GACb9rD,KAAKi/C,MAAM6M,IAEby2F,QAAS71D,EAAaq6D,GAAQ,GAC5B,MAAMp9I,EAAI3J,KAAKmqJ,UAAU,GAEzB,SAAIxgJ,IAAKA,EAAE44I,UACF54I,EAAE44I,QAAQ71D,EAAMq6D,IAK3BzE,UAAW51D,GACT,MAAM/iF,EAAI3J,KAAKmqJ,UAAU,GAEzB,SAAIxgJ,IAAKA,EAAE24I,YACF34I,EAAE24I,UAAU51D,IAKvBi6D,gBAAiB5R,GACf,MAAMprI,EAAI3J,KAAKmqJ,UAAU,GAEzB,OAAIxgJ,GAAKA,EAAEg9I,gBACFh9I,EAAEg9I,gBAAgB5R,IAEjB,GAGZ6R,aAAcl6D,GACZ,MAAM/iF,EAAI3J,KAAKmqJ,UAAU,GAEzB,SAAIxgJ,IAAKA,EAAEi9I,eACFj9I,EAAEi9I,aAAal6D,IAK1BmnD,eAAgBvhH,EAAwB04G,GACtC,OAAO6I,EAAevhH,EAAO04G,EAAUhrI,KAAK42I,MAAM3jI,MAEpD2iI,gBAAiB/pF,GACf,OAAO+pF,GAAgB/pF,IAEzB89F,gBAAiB1M,GACf,IAAKj9I,KAAKygJ,SAAU,CAClB,MAAM2J,EAAmBnN,EAAWvrG,QAAO,CAACj2B,EAAUuhI,EAAUxzI,KACtC,kBAAbwzI,GAAyBA,EAASsG,aAAc7nI,EAAIuhI,EAASsG,cAAgB,CAAE95I,MAAAA,EAAOw6B,MAAO,GAC3E,kBAAbg5G,IAAuBvhI,EAAIuhI,GAAY,CAAExzI,MAAAA,EAAOw6B,MAAO,IAChEvoB,IACN,IAEH,IAAKzb,KAAKm9I,sBAAwBn9I,KAAKo9I,gBAAiB,CACtD,IAAIiN,EAAiBpN,EAAWj0I,OAEhChJ,KAAK0gJ,aAAa16I,SAAQskJ,IACxB,IAAItN,EAAWsN,EAAGtN,SAEM,kBAAbA,IACTA,EAAWh9I,KAAKq9I,oBAGbL,IAIDA,KAAYoN,EACdA,EAAYpN,GAAUh5G,QACZhkC,KAAKm9I,sBACfiN,EAAYpN,GAAY,CACtBxzI,MAAO6gJ,IACPrmH,MAAO,QAMf,IAAKhkC,KAAKo9I,gBACR,IAAK,MAAMJ,KAAYoN,EACe,IAAhCA,EAAYpN,GAAUh5G,cACjBomH,EAAYpN,GAKzBC,EAAaA,EAAW9kI,QAAQ6kI,GACN,kBAAbA,GAAyBA,EAASsG,aACpC8G,EAAY5yI,eAAewlI,EAASsG,cACd,kBAAbtG,GACToN,EAAY5yI,eAAewlI,KAKxC,OAAOC,IAIX99I,OAAQ2B,GACN,MAAM,MAAE2Y,EAAF,IAASC,EAAT,QAAc87H,EAAd,UAAuB/uE,EAAvB,SAAkCosE,EAAlC,WAA4CoK,GAAej9I,KAAKupJ,YAEtE,OAAOzoJ,EAAE2lE,EAAW,CAClBu3D,YAAa,aACbC,MAAO,CACL,qBAAsBj+H,KAAKygJ,UAE7BzoI,MAAO,IACFhY,KAAKuqJ,OACR9wI,MAAOA,EAAM42B,KACb32B,IAAKA,EAAI22B,KACTmlG,QAAAA,EACA3C,SAAAA,EACAoK,WAAAA,GAEFnd,WAAY,CAAC,CACXM,UAAW,CAAEmoB,OAAO,GACpB1+I,KAAM,SACNzF,MAAOpE,KAAKyhJ,wBAEdl6C,GAAI,IACCvnG,KAAK4qI,WAER,aAAc,CAACn/C,EAAwBv7E,KACjClQ,KAAK4qI,WAAWt4G,OAClBtyB,KAAKumI,MAAM,QAAS96C,EAAIp7C,MAEtBrwC,KAAK4qI,WAAW,eAClB5qI,KAAKumI,MAAM,aAAc96C,EAAKv7E,KAIpCs6I,YAAaxqJ,KAAK0jJ,uB,8GC3WxB,GAAezmB,EAAAA,EAAAA,GACbwtB,EAAAA,EACAtd,EAAAA,EACAjQ,EAAAA,GACAx1H,OAAO,CACPmC,KAAM,SAENmO,MAAO,CACL0yI,KAAMntB,QACNloG,MAAOkoG,QACPotB,IAAKnyI,OACL0+G,KAAMqG,QACNqtB,aAAc,CACZjkJ,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GAEX8uD,OAAQttB,SAGVO,SAAU,CACR1gC,UACE,MAAO,CACL,UAAU,KACP+vC,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAuCntI,MAC1C,eAAgBA,KAAK0qJ,KACrB,gBAAiB1qJ,KAAKq1B,MACtB,eAAgBr1B,KAAK8qJ,YACrB,kBAAmB9qJ,KAAK4tI,QACxB,mBAAoB5tI,KAAKg1C,SACzB,iBAAkBh1C,KAAK6qJ,UACpB3tB,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAqCl9H,QAG5CioC,SACE,MAAM9S,EAA4B,IAC7B+nG,EAAAA,EAAAA,QAAAA,SAAAA,OAAAA,KAAoCl9H,OAOzC,OAJIA,KAAK2qJ,MACPx1H,EAAMstH,WAAa,QAAQziJ,KAAK2qJ,yCAG3Bx1H,IAIXkqG,QAAS,CACP0rB,cACE,MAAM5rJ,EAASsrJ,EAAAA,EAAAA,QAAAA,QAAAA,YAAAA,KAA0CzqJ,MAEzD,OAAKb,EAEEa,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,mBACb93H,IAAK,YACJ,CAAC/G,IALgB,OASxBA,OAAQ2B,GACN,MAAM,IAAEgwF,EAAF,KAAOzuF,GAASrC,KAAKmvI,oBAS3B,OAPA9sI,EAAK8yB,MAAQn1B,KAAKioC,OAEdjoC,KAAK8qJ,cACPzoJ,EAAK64G,MAAQ74G,EAAK64G,OAAS,GAC3B74G,EAAK64G,MAAM8vC,SAAW,GAGjBlqJ,EAAEgwF,EAAK9wF,KAAKk+H,mBAAmBl+H,KAAK6yB,MAAOxwB,GAAO,CACvDrC,KAAK+qJ,cACL/qJ,KAAKu/H,OAAOxjC,c,2ICrFlB,MAAMkvD,GAAeC,EAAAA,EAAAA,IAAuB,mBACtCC,GAAgBD,EAAAA,EAAAA,IAAuB,oBACvCE,GAAYF,EAAAA,EAAAA,IAAuB,gBACnCG,GAAaH,EAAAA,EAAAA,IAAuB,iBAWf,K,4GCX3B,EAAezqB,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,aAENi2H,WAAY,CAAE6O,OAAAA,EAAAA,GAEd32H,MAAO,CACL22H,OAAQ,CACNhoI,KAAM,CAAC42H,QAAS/wH,QAChBuvF,SAAS,IAIbsjC,QAAS,CACPisB,UAAWjpJ,EAAkB,IAC3B,OAAKrC,KAAK2uI,QAEVtsI,EAAK27H,YAAc,sCAEnB37H,EAAKy9H,WAAaz9H,EAAKy9H,YAAc,GACrCz9H,EAAKy9H,WAAWv2H,KAAK,CACnBM,KAAM,SACNzF,MAAO,CAAEs/C,QAAQ,KAGZ1jD,KAAKo+H,eAAe,MAAO/7H,IAVT,S,oBCVzB,SAAUmtI,EAASt/H,GACvBA,EAAE4uG,iBAIJ,OAAeme,EAAAA,EAAAA,GACbsuB,EAAAA,EACAC,EACAC,EAAAA,GACA/jJ,OAAO,CACPmC,KAAM,aAEN6hJ,MAAO,CACLl9I,KAAM,aACNgjC,MAAO,UAGTx5B,MAAO,CACL5K,GAAIoL,OACJmzI,WAAY,KACZC,WAAY,KACZC,UAAW,KACXllB,SAAU,CACRhgI,KAAM42H,QACNxhC,QAAS,MAEX/+C,MAAOxkC,QAGTnW,OACE,MAAO,CACLypJ,SAAU9rJ,KAAK2rJ,WACfI,UAAW/rJ,KAAK2rJ,aAIpB7tB,SAAU,CACRK,gBACE,GAAKn+H,KAAKkkH,SACV,OAAIlkH,KAAK6yB,MAAc7yB,KAAK6yB,MACxB7yB,KAAKg/H,SAAWh/H,KAAKgsJ,UAAkB,QACpC,WAETC,aACE,OAAyB,IAAlBjsJ,KAAK2mI,UAAwC,OAAlB3mI,KAAK2mI,UAAqBv7H,MAAMiD,QAAQrO,KAAKinI,gBAEjF/iB,WACE,MAAM9/G,EAAQpE,KAAKoE,MACbkuB,EAAQtyB,KAAKinI,cAEnB,OAAIjnI,KAAKisJ,aACF7gJ,MAAMiD,QAAQikB,IAEZA,EAAMk1C,MAAK1qD,GAAQ9c,KAAKgnI,gBAAgBlqH,EAAM1Y,UAGhC0B,IAAnB9F,KAAK6rJ,gBAA+C/lJ,IAApB9F,KAAK4rJ,WAChCxnJ,EACHpE,KAAKgnI,gBAAgB5iI,EAAOkuB,GAC5BirG,QAAQjrG,GAGPtyB,KAAKgnI,gBAAgB10G,EAAOtyB,KAAK6rJ,YAE1CplB,UACE,OAAOzmI,KAAKkkH,UAEdgoC,cACE,OAAQlsJ,KAAKmsJ,YAAensJ,KAAKosJ,gBAE7BpsJ,KAAKosJ,qBADLtmJ,IAKRq7H,MAAO,CACLwqB,WAAY1lJ,GACVjG,KAAK+rJ,UAAY9lJ,EACjBjG,KAAK8rJ,SAAW7lJ,IAIpBo5H,QAAS,CACPgtB,WACE,MAAMrvG,EAAQuuG,EAAAA,EAAAA,QAAAA,QAAAA,SAAAA,KAAqCvrJ,MAEnD,OAAKg9C,GAELA,EAAO36C,KAAMklG,GAAK,CAEhBoiB,MAAO6lB,GAGFxyF,GAPYA,GASrBgsF,SAAUriI,EAAcu0G,GACtB,OAAOl7G,KAAKo+H,eAAe,QAAS,CAClCljB,MAAO1uG,OAAOQ,OAAO,CACnB,eAAgBhN,KAAKkkH,SAASz0G,WAC9BulC,SAAUh1C,KAAKmsJ,WACf/+I,GAAIpN,KAAKssJ,WACT1sB,KAAMj5H,EACNA,KAAAA,GACCu0G,GACHwpB,SAAU,CACRtgI,MAAOpE,KAAKoE,MACZmoJ,QAASvsJ,KAAKkkH,UAEhB3c,GAAI,CACFuQ,KAAM93G,KAAKwsJ,OACX7tH,OAAQ3+B,KAAKysJ,SACbxjD,MAAOjpG,KAAKwpI,QACZkjB,QAAS1sJ,KAAK2sJ,UACdhjC,MAAO6lB,GAEThrC,IAAK,WAGTgoD,SACExsJ,KAAK6mI,WAAY,GAEnB5wG,QAAS/lB,GACPlQ,KAAKysJ,WACLzsJ,KAAKumI,MAAM,QAASr2H,IAEtBu8I,WACE,IAAKzsJ,KAAK0oI,cAAe,OAEzB,MAAMtkI,EAAQpE,KAAKoE,MACnB,IAAIkuB,EAAQtyB,KAAKinI,cAEjB,GAAIjnI,KAAKisJ,WAAY,CACd7gJ,MAAMiD,QAAQikB,KACjBA,EAAQ,IAGV,MAAMtpB,EAASspB,EAAMtpB,OAErBspB,EAAQA,EAAMna,QAAQ2E,IAAe9c,KAAKgnI,gBAAgBlqH,EAAM1Y,KAE5DkuB,EAAMtpB,SAAWA,GACnBspB,EAAM/oB,KAAKnF,QAGbkuB,OAD4BxsB,IAAnB9F,KAAK6rJ,gBAA+C/lJ,IAApB9F,KAAK4rJ,WACtC5rJ,KAAKgnI,gBAAgB10G,EAAOtyB,KAAK6rJ,WAAa7rJ,KAAK4rJ,WAAa5rJ,KAAK6rJ,UACpEznJ,EACDpE,KAAKgnI,gBAAgB10G,EAAOluB,GAAS,KAAOA,GAE3CkuB,EAGXtyB,KAAKw7I,UAAS,EAAMlpH,GACpBtyB,KAAKinI,cAAgB30G,EACrBtyB,KAAK8rJ,SAAWx5H,GAElBk3G,UACExpI,KAAK6mI,WAAY,GAGnB8lB,UAAWz8I,QC5Jf,EAAe08I,EAAAA,OAAkB,CAC/B/iJ,KAAM,aAENmO,MAAO,CACLk0H,cAAe3O,QACfsvB,kBAAmB,CACjBlmJ,KAAM6R,OACNujF,QAAS,0BAEX+wD,QAAS,CACPnmJ,KAAM6R,OACNujF,QAAS,gBAEXgxD,OAAQ,CACNpmJ,KAAM6R,OACNujF,QAAS,gBAIb15F,OACE,MAAO,CACL2qJ,mBAAoBhtJ,KAAKksI,gBAI7BpO,SAAU,CACR1gC,UACE,MAAO,IACFmuD,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAqCvrJ,MACxC,+BAA+B,EAC/B,qBAAqB,EACrB,yBAA0BA,KAAKgtJ,qBAGnCnuB,eACE,OAAI7+H,KAAKgtJ,mBACAhtJ,KAAK6sJ,kBACH7sJ,KAAKkkH,SACPlkH,KAAK+sJ,OAEL/sJ,KAAK8sJ,SAMhBV,kBACE,IAAIpsJ,KAAKmsJ,YAAensJ,KAAKgtJ,mBAC7B,OAAIhtJ,KAAKitJ,UAAYjtJ,KAAKktJ,eAAuB,QAC7CltJ,KAAKmtJ,WAAmB,UACN,OAAlBntJ,KAAK8rJ,SAA0B9rJ,KAAKm+H,mBAAxC,IAKJgD,MAAO,CACL+K,cAAejmI,GAEbjG,KAAKwhI,WAAU,IAAOxhI,KAAKgtJ,mBAAqB/mJ,KAElD+mJ,mBAAoB/mJ,GAClBjG,KAAKumI,MAAM,uBAAwBtgI,IAErCi+G,WACOlkH,KAAKksI,gBACVlsI,KAAKgtJ,oBAAqB,KAI9B3tB,QAAS,CACP+tB,cACE,MAAM,MAAE9mG,KAAU+mG,GAAkBrtJ,KAAKstJ,OACzC,OAAOttJ,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,sCACZ,CACDh+H,KAAKo+H,eAAeO,EAAAA,EAAO3+H,KAAKggI,aAAahgI,KAAKosJ,gBAAiB,CACjEp0I,MAAO,CACLwlH,MAAOx9H,KAAKw9H,MACZ+G,KAAMvkI,KAAKukI,KACXC,MAAOxkI,KAAKwkI,SAEZxkI,KAAK6+H,cACT7+H,KAAKgpI,SAAS,WAAY,IACrBqkB,EACH,eAAgBrtJ,KAAKgtJ,mBACjB,QACAhtJ,KAAKkkH,SAASz0G,aAEpBzP,KAAKsrJ,UAAUtrJ,KAAKggI,aAAahgI,KAAKksJ,iBAG1CqB,iBACE,MAAO,CACLvtJ,KAAKotJ,cACLptJ,KAAKqsJ,iB,0IC3Fb,EAAe5rB,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,oBAENhK,YAAY,EAEZigI,WAAY,CACV6O,OAAAA,EAAAA,GAGF32H,MAAO,IACFsyH,EAAAA,EAAAA,QAAAA,SACArL,EAAAA,EAAAA,QAAAA,MACHjqF,SAAUuoF,QACVoR,OAAQ,CACNhoI,KAAM42H,QACNxhC,SAAS,GAEX33F,MAAOm5H,QACP2O,cAAe3O,QACfsvB,kBAAmB,CACjBlmJ,KAAM6R,OACNujF,QAAS,0BAEXgxD,OAAQ,CACNpmJ,KAAM6R,OACNujF,QAAS,eAEX+wD,QAAS,CACPnmJ,KAAM6R,OACNujF,QAAS,iBAIb58F,OAAQ2B,GAAG,MAAEkX,EAAF,KAAS3V,EAAT,UAAes9B,IACxB,MAAM2kE,EAAW,GACjB,IAAIq5B,EAAO3lH,EAAM80I,QAYjB,GAXI90I,EAAMk0H,cAAevO,EAAO3lH,EAAM60I,kBAC7B70I,EAAM5T,QAAOu5H,EAAO3lH,EAAM+0I,QAEnCzoD,EAAS/6F,KAAKzI,EAAE69H,EAAAA,EAAO2L,EAAAA,EAAAA,QAAAA,QAAAA,aAAuCtyH,EAAM5T,OAAS4T,EAAM6a,MAAO,CACxF7a,MAAO,CACLg9B,SAAUh9B,EAAMg9B,SAChBuvF,KAAMvsH,EAAMusH,KACZC,MAAOxsH,EAAMwsH,SAEb7G,IAEA3lH,EAAM22H,SAAW32H,EAAMg9B,SAAU,CACnC,MAAM25F,EAAS7tI,EAAE,MAAOwpI,EAAAA,EAAAA,QAAAA,QAAAA,aAAuCtyH,EAAM6a,MAAO,CAC1EmrG,YAAa,sCACb8B,WAAY,CAAC,CACXj2H,KAAM,SACNzF,MAAO,CAAEs/C,QAAQ,QAIrB4gD,EAAS/6F,KAAKolI,GAGhB,OAAO7tI,EAAE,OACPooI,EAAAA,EAAAA,IAAU7mI,EAAM,CACd47H,MAAO,CACL,qBAAqB,EACrB,8BAA+BjmH,EAAMg9B,UAEvCuyD,GAAI,CACFoiB,MAAQz5G,IACNA,EAAE0/H,kBAEEvtI,EAAKklG,IAAMllG,EAAKklG,GAAGj1E,QAAUta,EAAMg9B,WACrCw4G,EAAAA,EAAAA,IAAYnrJ,EAAKklG,GAAGj1E,OAAOtsB,SAAQue,GAAKA,GAAGvM,EAAM5T,aAIrD,CACFtD,EAAE,MAAO,CAAEk9H,YAAa,sCAAwC15B,S,yKChExE,GAAe24B,EAAAA,EAAAA,GACbqN,EAAAA,EACA+C,EAAAA,EACAF,EAAAA,EACAlO,EAAAA,GACAqO,EAAAA,EAAAA,GAAiB,cACjBC,EAAAA,EAAAA,GAAkB,eAClB7lI,OAAO,CACPmC,KAAM,SAENmO,MAAO,CACL66B,OAAQ,CACNlsC,KAAM42H,QACNxhC,SAAS,GAEXyxC,YAAa,CACX7mI,KAAM6R,OACNujF,UACE,OAAK/7F,KAAKytJ,UAEHztJ,KAAKytJ,UAAUjgB,YAFM,KAKhC5pB,MAAO2Z,QACPG,UAAW,CACT/2H,KAAM6R,OACNujF,QAAS,WAEXshC,WAAY,CACV12H,KAAM6R,OACNujF,QAAS,kBAEX/mD,SAAUuoF,QACVmwB,UAAWnwB,QACXplH,OAAQolH,QACRowB,WAAY,CACVhnJ,KAAM6R,OACNujF,QAAS,aAEX/+C,MAAOugF,QACPrG,KAAMqG,QACNK,SAAUL,QACVqwB,KAAMrwB,QACNzsC,IAAK,CACHnqF,KAAM6R,OACNujF,QAAS,QAEXpY,UAAWnrE,OACXpU,MAAO,MAGT/B,KAAM,KAAM,CACV0rI,WAAY,mBAGdjQ,SAAU,CACR1gC,UACE,MAAO,CACL,UAAU,KACP+vC,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAuCntI,MAC1C,oBAAqBA,KAAK8qJ,YAC1B,mBAAoB9qJ,KAAKg1C,SACzB,oBAAqBh1C,KAAK0tJ,UAC1B,gBAAiB1tJ,KAAKg9C,MACtB,eAAgBh9C,KAAK6tJ,OACrB,oBAAqB7tJ,KAAK6yB,MAC1B,mBAAoB7yB,KAAK49H,SACzB,eAAgB59H,KAAK4tJ,KACrB,oBAAqB5tJ,KAAK8tJ,YACvB9tJ,KAAKykI,gBACLzkI,KAAKquI,mBACLruI,KAAKmuI,eAGZ2f,WACE,OAAOvwB,QAAQv9H,KAAK4jH,QAEtBknC,cACE,OAAOvtB,QACL4P,EAAAA,EAAAA,QAAAA,SAAAA,YAAAA,KAA2CntI,OAC3CA,KAAKytJ,aAKXvuB,UACE,MAAM2P,EAAgB,CACpB,CAAC,UAAW,YACZ,CAAC,WAAY,eACb,CAAC,QAAS,UACV,CAAC,SAAU,iBAIbA,EAAc7oI,SAAQ,EAAEumC,EAAU+oD,MAC5Bt1F,KAAKm/H,OAAO3nH,eAAe+0B,KAAW6yF,EAAAA,EAAAA,IAAS7yF,EAAU+oD,EAAat1F,UAI9Eq/H,QAAS,CACP1V,MAAOz5G,GACLlQ,KAAKumI,MAAM,QAASr2H,GAEpBlQ,KAAKytJ,WAAaztJ,KAAK0nG,UAEzBqmD,YACE,MAAMzpD,EAAW,GAWjB,OATItkG,KAAKkkH,UACP5f,EAAS/6F,KACPvJ,KAAKo+H,eAAeO,EAAAA,EAAO,CACzBX,YAAa,iBACbhmH,MAAO,CAAE4B,MAAM,IACd5Z,KAAK2tJ,aAIL3tJ,KAAKo+H,eAAe4vB,EAAAA,GAAoB1pD,IAEjD2pD,WACE,OAAOjuJ,KAAKo+H,eAAeO,EAAAA,EAAO,CAChCX,YAAa,gBACbhmH,MAAO,CACL6B,OAAO,EACPgD,KAAM,IAERq+F,MAAO,CACL,aAAcl7G,KAAKy+H,SAASC,KAAKt9G,EAAEphB,KAAKq9H,aAE1C91B,GAAI,CACFoiB,MAAQz5G,IACNA,EAAE0/H,kBACF1/H,EAAE4uG,iBAEF9+G,KAAKumI,MAAM,eACXvmI,KAAKumI,MAAM,iBAAiB,MAG/BvmI,KAAK09H,YAEV+B,aACE,OAAOz/H,KAAKo+H,eAAe,OAAQ,CACjCJ,YAAa,mBACZ,CACDh+H,KAAKmY,QAAUnY,KAAK+tJ,YACpB/tJ,KAAKu/H,OAAOxjC,QACZ/7F,KAAK8tJ,UAAY9tJ,KAAKiuJ,eAK5B9uJ,OAAQ2B,GACN,MAAMwjG,EAAW,CAACtkG,KAAKy/H,cACvB,IAAI,IAAE3uC,EAAF,KAAOzuF,GAASrC,KAAKmvI,oBAEzB9sI,EAAK64G,MAAQ,IACR74G,EAAK64G,MACRwyC,UAAW1tJ,KAAK0tJ,UAAY,YAAS5nJ,EACrCklJ,SAAUhrJ,KAAKytJ,YAAcztJ,KAAKg1C,SAAW,EAAI3yC,EAAK64G,MAAO8vC,UAE/D3oJ,EAAKy9H,WAAYv2H,KAAK,CACpBM,KAAM,OACNzF,MAAOpE,KAAK6yC,SAEdxwC,EAAOrC,KAAKk+H,mBAAmBl+H,KAAK6yB,MAAOxwB,GAE3C,MAAMwwB,EAAQ7yB,KAAK2jF,WAAc3jF,KAAK49H,UAAY59H,KAAK6yB,MAEvD,OAAO/xB,EAAEgwF,EAAK9wF,KAAKggI,aAAantG,EAAOxwB,GAAOiiG,O,gDC/LlD,OAAe4pD,EAAf,G,4ECWA,OAAeC,EAAAA,EAAAA,OAAqB,CAClCtkJ,KAAM,aAENmO,MAAO,CACLo2I,WAAY,CACVznJ,KAAMyE,MACN2wF,QAAS,IAAO,IAElBsyD,aAAc,CACZ1nJ,KAAM42H,QACNxhC,SAAS,IAIb15F,KAAM,KAAM,CACVisJ,cAAe,IAGjBxwB,SAAU,CACRywB,uBACE,OAAOvuJ,KAAK2mI,SACR3mI,KAAK4lI,cAAc58H,QAClBhJ,KAAKomI,gBAAkB,IAAI32H,WAAWzG,QAE7Cw+H,UACE,OAAO1C,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAsC9kI,OAASA,KAAK2mI,UAE7DH,oBACE,OAAO,GAETI,cACE,QAAK5mI,KAAK6mI,YAEH7mI,KAAK8lI,qBACP9lI,KAAKu/H,OAAO,aAAev/H,KAAKolI,aAEvCsB,gBACE,OAA8B,MAAvB1mI,KAAKomI,iBAIhB/G,QAAS,CACP8I,wBAAyBliI,GACvB,GACEA,GACAjG,KAAK2mI,UACL3mI,KAAKouJ,WAAWplJ,OAChB,CACA,MAAM+5I,EAAY/iJ,KAAKouJ,WAAWxyD,MAAKn4E,GAAKxd,EAAIuP,SAASiO,KACxC,MAAbs/H,IACF/iJ,KAAKomI,eAAiBngI,EAAIqI,MAAM,EAAGrI,EAAI+C,OAAS+5I,EAAU/5I,QAC1DhJ,KAAKwuJ,cAITxuJ,KAAKooI,wBAEPY,WACE,MAAM12G,EAAQ67H,EAAAA,EAAAA,QAAAA,QAAAA,SAAAA,KAA4CnuJ,MAK1D,cAHOsyB,EAAMjwB,KAAM64G,MAAOrxG,KAC1ByoB,EAAMjwB,KAAMklG,GAAIotB,MAAQ30H,KAAK6zH,QAEtBvhG,GAETm8H,iBAAkB3xI,EAActT,GAC9B,MAAMklJ,EAAO5pB,EAAAA,EAAAA,QAAAA,QAAAA,iBAAAA,KAA8C9kI,KAAM8c,EAAMtT,GAcvE,OAXIxJ,KAAK2mI,WACP+nB,EAAKC,iBAAkBhvH,UAAa,IAC/B+uH,EAAKC,iBAAkBhvH,UAC1BivH,SAAU,KACR5uJ,KAAKsuJ,aAAe9kJ,EACpBxJ,KAAKomI,eAAiBpmI,KAAK0qG,QAAQ5tF,GACnC9c,KAAK6jH,eAAiB,KAKrB6qC,GAETG,YAAa/xI,GACXgoH,EAAAA,EAAAA,QAAAA,QAAAA,YAAAA,KAAyC9kI,KAAM8c,GAE/C9c,KAAKsuJ,cAAgB,GAIvBQ,YAAa5+I,GACXA,EAAE4uG,iBAEE9+G,KAAK+uJ,gBAAkB,GAE3B/uJ,KAAKwhI,UAAUxhI,KAAKsnI,aAEtBuC,UAAW35H,GACT,MAAMytG,EAAUztG,EAAEytG,SAGhBztG,EAAEitG,SACD,CAACorB,EAAAA,GAAAA,KAAeA,EAAAA,GAAAA,KAAc/mG,SAASm8E,IAExCmnB,EAAAA,EAAAA,QAAAA,QAAAA,UAAAA,KAAuC9kI,KAAMkQ,GAK3ClQ,KAAK2mI,UACPhpB,IAAY4qB,EAAAA,GAAAA,MACwB,IAApCvoI,KAAKqnI,MAAM/0G,MAAM08H,eAEjBhvJ,KAAKsnI,aACI3pB,IAAY4qB,EAAAA,GAAAA,OACrBvoI,KAAK8uJ,YAAY5+I,GAOnBlQ,KAAKsoI,oBAAoB3qB,IAE3BosB,UAAW75H,GAIT,GAAIlQ,KAAK2mI,UACP3mI,KAAKomI,iBACoB,IAAzBpmI,KAAK+uJ,eAKL,OAHA7+I,EAAE4uG,iBACF5uG,EAAE0/H,kBAEK5vI,KAAKwuJ,aAGdL,EAAAA,EAAAA,QAAAA,QAAAA,UAAAA,KAA6CnuJ,KAAMkQ,IAErDqzG,WAAYzmG,GAEN9c,KAAKsuJ,cAAgB,EACvBtuJ,KAAKivJ,iBAELd,EAAAA,EAAAA,QAAAA,QAAAA,WAAAA,KAA8CnuJ,KAAM8c,GAKlD9c,KAAKomI,gBACLpmI,KAAK2mI,UACL3mI,KAAK0qG,QAAQ5tF,GAAMqoH,oBAAoB3jG,SAASxhC,KAAKomI,eAAejB,uBAEpEnlI,KAAKomI,eAAiB,QAI5B6D,mBAC4B,MAAtBjqI,KAAKinI,eACgB,KAAvBjnI,KAAKinI,cAELjnI,KAAK4lI,cAAgB,GAErB5lI,KAAK4lI,cAAgB5lI,KAAK2mI,SAAW3mI,KAAKinI,cAAgB,CAACjnI,KAAKinI,gBAGpE6B,SAAU1kI,GACR0gI,EAAAA,EAAAA,QAAAA,QAAAA,SAAAA,KAAsC9kI,UAAgB8F,IAAV1B,EAAsBpE,KAAKomI,eAAiBhiI,IAE1F6qJ,gBACE,MAAM7qJ,EAAQpE,KAAKinI,cAAc34H,QAC3B9E,EAAQxJ,KAAK4lI,cAAcriE,WAAUzmD,GACzC9c,KAAK0qG,QAAQ5tF,KAAU9c,KAAKomI,iBAI9B,GAAI58H,GAAS,EAAG,CACd,MAAMsT,EAA+B,kBAAjB1Y,EAAMoF,GACtBgD,OAAOQ,OAAO,GAAI5I,EAAMoF,IACxBpF,EAAMoF,GAEVpF,EAAMqF,OAAOD,EAAO,GACpBpF,EAAMmF,KAAKuT,QAEX1Y,EAAMpE,KAAKsuJ,cAAgBtuJ,KAAKomI,eAGlCpmI,KAAK8oI,SAAS1kI,GACdpE,KAAKsuJ,cAAgB,EACrBtuJ,KAAKomI,eAAiB,MAExB8oB,iBAEE,IAAKlvJ,KAAK0mI,cAAe,OAIrB1mI,KAAKomI,iBAAmBpmI,KAAK0qG,QAAQ1qG,KAAKinI,gBAAgBjnI,KAAK8oI,WAGnE,MAAMqmB,EAAc5xB,QAAQv9H,KAAK0/H,aAAaz4B,YAAcjnG,KAAKovJ,SAC7DD,IAAanvJ,KAAKomI,eAAiB,OAEzCkB,aACEtnI,KAAK2mI,SAAW3mI,KAAKwuJ,aAAexuJ,KAAKkvJ,kBAE3CV,aACE,MAAMa,EAAYrvJ,KAAK+uJ,eAMvB,GAAKM,EAAY,IAAMrvJ,KAAK0mI,gBACvB1mI,KAAKomI,eAAgB,OAE1B,GAAIpmI,KAAKsuJ,cAAgB,EACvB,OAAOtuJ,KAAKivJ,gBAGd,MAAMzlJ,EAAQxJ,KAAK4lI,cAAcriE,WAAUzmD,GACzC9c,KAAKomI,iBAAmBpmI,KAAK0qG,QAAQ5tF,KAIjCwyI,EAAe9lJ,GAAS,GAA0C,kBAA9BxJ,KAAK4lI,cAAcp8H,GACzDgD,OAAOQ,OAAO,GAAIhN,KAAK4lI,cAAcp8H,IACrCxJ,KAAKomI,eAKT,GAAI58H,GAAS,EAAG,CACd,MAAMy9H,EAAgBjnI,KAAKinI,cAAc34H,QACzC24H,EAAcx9H,OAAOD,EAAO,GAE5BxJ,KAAK8oI,SAAS7B,GAMhB,GAAIooB,GAAa,EAAG,OAAQrvJ,KAAKomI,eAAiB,KAElDpmI,KAAKujH,WAAW+rC,GAEhBtvJ,KAAKomI,eAAiB,MAExBvS,QAASriF,GAAqB,MAC5B,IAAKxxC,KAAK2mI,UAAY3mI,KAAK0mI,cAAe,OAE1C,MAAM6oB,EAAc,SAAG/9G,EAAM44F,oBAAT,EAAGolB,EAAqBC,QAAQ,4CAChDF,IAAqE,IAAnDvvJ,KAAK0vJ,kBAAkBH,KAC3C/9G,EAAMstE,iBACNgmB,EAAAA,EAAAA,QAAAA,QAAAA,WAAAA,KAAwC9kI,KAAMuvJ,KAGlDxmB,oBACE/oI,KAAKsuJ,cAAgB,EAErBH,EAAAA,EAAAA,QAAAA,QAAAA,kBAAAA,KAAqDnuJ,W,sHCrQ3D,EAAeygI,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,gBAENmO,MAAO,CACLrY,QAAS,CACPgH,KAAM6F,OACNw+H,UAAU,GAEZ2kB,WAAY,CACVhpJ,KAAM6F,OACNw+H,UAAU,GAEZ4kB,oBAAqB,CACnBjpJ,KAAMyE,MACN2wF,QAAS,IAAO,CAAC,EAAG,GAAI,IAAK,IAE/B8zD,SAAU,CACRlpJ,KAAM6R,OACNujF,QAAS,SAEX+zD,SAAU,CACRnpJ,KAAM6R,OACNujF,QAAS,SAEXg0D,UAAW,CACTppJ,KAAM6R,OACNujF,QAAS,UAEXi0D,SAAU,CACRrpJ,KAAM6R,OACNujF,QAAS,SAEXk0D,iBAAkB,CAChBtpJ,KAAM6R,OACNujF,QAAS,wCAEXm0D,oBAAqB,CACnBvpJ,KAAM6R,OACNujF,QAAS,uCAEXo0D,kBAAmB5yB,QACnB6yB,gBAAiB7yB,QACjB8yB,kBAAmB9yB,QACnB+yB,oBAAqB/yB,QACrBgzB,SAAU,CACR5pJ,KAAM6R,OACNujF,QAAS,iCAIb+hC,SAAU,CACR0yB,sBACE,OAAOxwJ,KAAKL,QAAQ8wJ,cAAgB,GAClCzwJ,KAAKL,QAAQ+wJ,KAAO1wJ,KAAKL,QAAQ8wJ,cAAgBzwJ,KAAK2vJ,WAAWgB,aACjE3wJ,KAAK2vJ,WAAWiB,SAAW,GAE/BC,kCACE,OAAO7wJ,KAAK4vJ,oBAAoBn0I,KAAIw4B,GACZ,kBAAXA,EAA4BA,EAC3Bj0C,KAAK8wJ,0BAA0B78G,OAKjDorF,QAAS,CACP0xB,cAAehkJ,GACb/M,KAAKumI,MAAM,iBAAkB/5H,OAAOQ,OAAO,GAAIhN,KAAKL,QAASoN,KAE/DikJ,cACEhxJ,KAAK+wJ,cAAc,CAAEL,KAAM,KAE7BO,iBACEjxJ,KAAK+wJ,cAAc,CAAEL,KAAM1wJ,KAAKL,QAAQ+wJ,KAAO,KAEjDQ,aACElxJ,KAAK+wJ,cAAc,CAAEL,KAAM1wJ,KAAKL,QAAQ+wJ,KAAO,KAEjDS,aACEnxJ,KAAK+wJ,cAAc,CAAEL,KAAM1wJ,KAAK2vJ,WAAWyB,aAE7CC,qBAAsBZ,GACpBzwJ,KAAK+wJ,cAAc,CAAEN,aAAAA,EAAcC,KAAM,KAE3CI,0BAA2B78G,GACzB,MAAO,CACLtY,MAAkB,IAAZsY,EAAgBj0C,KAAKy+H,SAASC,KAAKt9G,EAAEphB,KAAKkwJ,qBAAuB13I,OAAOy7B,GAC9E7vC,MAAO6vC,IAGXq9G,wBACE,IAAIltJ,EAAQpE,KAAKL,QAAQ8wJ,aACzB,MAAMc,EAAevxJ,KAAK6wJ,gCAE1B,OAAIU,EAAavoJ,QAAU,EAAU,MAEhCuoJ,EAAa31D,MAAK41D,GAAQA,EAAKptJ,QAAUA,MAAQA,EAAQmtJ,EAAa,IAEpEvxJ,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,yBACZ,CACDh+H,KAAKy+H,SAASC,KAAKt9G,EAAEphB,KAAKiwJ,kBAC1BjwJ,KAAKo+H,eAAe0G,EAAAA,EAAS,CAC3B5pB,MAAO,CACL,aAAcl7G,KAAKy+H,SAASC,KAAKt9G,EAAEphB,KAAKiwJ,mBAE1Cj4I,MAAO,CACLg9B,SAAUh1C,KAAKswJ,oBACfnwH,MAAOoxH,EACPntJ,MAAAA,EACAqtJ,aAAa,EACbC,MAAM,EACNhnB,SAAU,QAEZnjC,GAAI,CACFj1E,MAAOtyB,KAAKqxJ,4BAKpBM,oBACE,IAAIrtD,EAAuC,CAAC,KAC5C,MAAMqsD,EAAsB3wJ,KAAK2vJ,WAAWgB,YAC5C,IAAIiB,EAAoB5xJ,KAAK2vJ,WAAWiC,UACpChB,EAAmB5wJ,KAAK2vJ,WAAWiB,SAevC,OAbI5wJ,KAAK2vJ,WAAWgB,aAAe3wJ,KAAK2vJ,WAAWc,cACjDmB,EAAY5xJ,KAAK2vJ,WAAWiC,UAAY,EACxChB,EAAWD,EAAc3wJ,KAAK2vJ,WAAWiB,UAAY5wJ,KAAK2vJ,WAAWiB,SAAW,EAC5ED,EACA3wJ,KAAK2vJ,WAAWiB,SAEpBtsD,EAAWtkG,KAAK0/H,aAAa,aACzB,CAAC1/H,KAAK0/H,aAAa,aAAc,CAAEkyB,UAAAA,EAAWhB,SAAAA,EAAUD,YAAAA,KACxD,CAAC3wJ,KAAKy+H,SAASC,KAAKt9G,EAAEphB,KAAKuwJ,SAAUqB,EAAWhB,EAAUD,KACrD3wJ,KAAK0/H,aAAa,eAC3Bp7B,EAAW,CAACtkG,KAAK0/H,aAAa,aAAc,CAAEkyB,UAAAA,EAAWhB,SAAAA,EAAUD,YAAAA,MAG9D3wJ,KAAKo+H,eAAe,MAAO,CAChCH,MAAO,6BACN35B,IAELutD,QAASloC,EAAiB30E,EAAmBgI,EAAe2gF,GAC1D,OAAO39H,KAAKo+H,eAAeG,EAAAA,EAAM,CAC/BvmH,MAAO,CACLg9B,SAAUA,GAAYh1C,KAAKqwJ,kBAC3B1yB,MAAM,EACNhiG,MAAM,GAIR4rE,GAAI,CACFoiB,MAAAA,GAEFzO,MAAO,CACL,aAAcl+D,IAEf,CAACh9C,KAAKo+H,eAAeO,EAAAA,EAAOhB,MAEjCm0B,WACE,MAAM5zE,EAAqC,GACrCC,EAAoC,GAgC1C,OA9BAD,EAAO30E,KAAKvJ,KAAK6xJ,QACf7xJ,KAAKixJ,eACiB,IAAtBjxJ,KAAKL,QAAQ+wJ,KACb1wJ,KAAKy+H,SAASC,KAAKt9G,EAAE,gCACrBphB,KAAKy+H,SAAS3kH,IAAM9Z,KAAK8vJ,SAAW9vJ,KAAK6vJ,WAG3C1xE,EAAM50E,KAAKvJ,KAAK6xJ,QACd7xJ,KAAKkxJ,WACLlxJ,KAAKwwJ,oBACLxwJ,KAAKy+H,SAASC,KAAKt9G,EAAE,gCACrBphB,KAAKy+H,SAAS3kH,IAAM9Z,KAAK6vJ,SAAW7vJ,KAAK8vJ,WAGvC9vJ,KAAKmwJ,oBACPjyE,EAAOnzE,QAAQ/K,KAAK6xJ,QAClB7xJ,KAAKgxJ,YACiB,IAAtBhxJ,KAAKL,QAAQ+wJ,KACb1wJ,KAAKy+H,SAASC,KAAKt9G,EAAE,iCACrBphB,KAAKy+H,SAAS3kH,IAAM9Z,KAAKgwJ,SAAWhwJ,KAAK+vJ,YAG3C5xE,EAAM50E,KAAKvJ,KAAK6xJ,QACd7xJ,KAAKmxJ,WACLnxJ,KAAKL,QAAQ+wJ,MAAQ1wJ,KAAK2vJ,WAAWyB,YAA4C,IAA/BpxJ,KAAKL,QAAQ8wJ,aAC/DzwJ,KAAKy+H,SAASC,KAAKt9G,EAAE,gCACrBphB,KAAKy+H,SAAS3kH,IAAM9Z,KAAK+vJ,UAAY/vJ,KAAKgwJ,YAIvC,CACLhwJ,KAAKo+H,eAAe,MAAO,CACzBJ,YAAa,+BACZ9/C,GACHl+E,KAAKowJ,iBAAmBpwJ,KAAKo+H,eAAe,OAAQ,CAACp+H,KAAKL,QAAQ+wJ,KAAKjhJ,aACvEzP,KAAKo+H,eAAe,MAAO,CACzBJ,YAAa,8BACZ7/C,MAKTh/E,SACE,OAAOa,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,iBACZ,EACD6N,EAAAA,EAAAA,IAAQ7rI,KAAM,WACdA,KAAKsxJ,wBACLtxJ,KAAK2xJ,oBACL3xJ,KAAK8xJ,iB,4GC9MX,QAAe70B,EAAAA,EAAAA,GACb80B,EAAAA,EACA9yB,EAAAA,GACAv3H,OAAO,CACPmC,KAAM,kBAENmO,MAAO,IACFg6I,EAAAA,EAAAA,QAAAA,MACHC,QAAS,CACPtrJ,KAAM6R,OACNujF,QAAS,MAEX33F,MAAO,CACLuC,KAAMyE,MACN2wF,QAAS,IAAM,IAEjBm2D,aAAc30B,QACd40B,SAAU,CACRxrJ,KAAMyE,MACN2wF,QAAS,IAAM,IAEjBq2D,iBAAkB,IACbL,EAAAA,EAAAA,QAAAA,MAAAA,iBACHh2D,QAAS,KAEXs2D,aAAc90B,QACdqQ,QAAS,CAACrQ,QAAS/kH,QACnB85I,cAAe,CACb3rJ,KAAM6R,OACNujF,QAAS,uCAEXw2D,WAAY,CACV5rJ,KAAM6R,OACNujF,QAAS,uBAEXy2D,YAAa,CACX7rJ,KAAM6R,OACNujF,QAAS,qCAEX02D,kBAAmBl1B,QACnBm1B,YAAalmJ,OACbmmJ,cAAe,CACbhsJ,KAAM6R,OACNujF,QAAS,iBAIb15F,KAAM,KAAM,CACV4kG,UAAW,GACX2rD,UAAW,GACXC,qBAAsB,GACtBC,cAAc,EACdC,WAAY,IAGdj1B,SAAU,CACRk1B,YACE,QAAShzJ,KAAKizJ,gBAAgBjqJ,QAAUhJ,KAAKizJ,gBAAgBp0C,OAAO/1G,GAAW9I,KAAKkzJ,WAAWpqJ,MAEjGqqJ,YACE,OAAOnzJ,KAAKizJ,gBAAgBzrF,MAAM1+D,GAAW9I,KAAKkzJ,WAAWpqJ,MAE/DsqJ,uBACE,OAAOC,EAAAA,EAAAA,IAAmBrzJ,KAAK0yJ,cAEjCO,kBACE,OAAOjzJ,KAAK6yJ,qBAAqB16I,QAAO2E,GAAQ9c,KAAKszJ,aAAax2I,OAItEqkH,MAAO,CACL/8H,MAAO,CACLyoD,QAASzoD,GACPpE,KAAKinG,UAAY7iG,EAAMstC,QAAO,CAACu1D,EAAWnqF,KACxCmqF,GAAUkiC,EAAAA,EAAAA,IAAqBrsH,EAAM9c,KAAKiyJ,UAAYn1I,EAC/CmqF,IACN,KAELssD,WAAW,GAEbtsD,UAAW7iG,EAAgCovJ,IACrC7jD,EAAAA,EAAAA,IAAUnjG,OAAOqC,KAAKzK,GAAQoI,OAAOqC,KAAK2kJ,KAE9CxzJ,KAAKumI,MAAM,QAAS/5H,OAAO4nB,OAAOhwB,KAEpC+tJ,SAAU,CACRtlG,QAASzoD,GACPpE,KAAK4yJ,UAAYxuJ,EAAMstC,QAAO,CAACkhH,EAAW91I,KACxC81I,GAAUzpB,EAAAA,EAAAA,IAAqBrsH,EAAM9c,KAAKiyJ,WAAY,EAC/CW,IACN,KAELW,WAAW,GAEbX,UAAWxuJ,EAAgCovJ,GACzC,IAAI7jD,EAAAA,EAAAA,IAAUvrG,EAAOovJ,GAAM,OAC3B,MAAM3kJ,EAAOrC,OAAOqC,KAAKzK,GAAO+T,QAAOwD,GAAKvX,EAAMuX,KAC5Cw2I,EAAYtjJ,EAAK7F,OAAchJ,KAAKmgC,MAAMhoB,QAAOrP,GAAK+F,EAAK2yB,SAAShpB,QAAO2wH,EAAAA,EAAAA,IAAqBrgI,EAAG9I,KAAKiyJ,aAA9E,GAChCjyJ,KAAKumI,MAAM,kBAAmB4rB,KAIlCjzB,UACE,MAAM2P,EAAgB,CACpB,CAAC,uBAAwB,WACzB,CAAC,SAAU,iBACX,CAAC,aAAc,WACf,CAAC,cAAe,uBAChB,CAAC,eAAgB,uBACjB,CAAC,sBAAuB,uCACxB,CAAC,qBAAsB,oCACvB,CAAC,YAAa,0BACd,CAAC,YAAa,2BAIhBA,EAAc7oI,SAAQ,EAAEumC,EAAU+oD,MAC5Bt1F,KAAKm/H,OAAO3nH,eAAe+0B,KAAW6yF,EAAAA,EAAAA,IAAS7yF,EAAU+oD,EAAat1F,SAG5E,MAAMyzJ,EAAe,CACnB,SACA,gBACA,gBACA,eAIFA,EAAaztJ,SAAQwI,IACfxO,KAAKm/H,OAAO3nH,eAAehJ,KAAO2wC,EAAAA,EAAAA,IAAQ3wC,OAIlD4yH,UACEhtH,OAAO7N,iBAAiB,UAAWvG,KAAK6pI,WACxCz1H,OAAO7N,iBAAiB,QAASvG,KAAK0zJ,UAExCC,gBACEv/I,OAAOvR,oBAAoB,UAAW7C,KAAK6pI,WAC3Cz1H,OAAOvR,oBAAoB,QAAS7C,KAAK0zJ,UAG3Cr0B,QAAS,CACPwK,UAAW35H,GACLA,EAAEytG,UAAY4qB,EAAAA,GAAAA,QAClBvoI,KAAK8yJ,cAAe,IAEtBY,QAASxjJ,GACHA,EAAEytG,UAAY4qB,EAAAA,GAAAA,QAClBvoI,KAAK8yJ,cAAe,IAEtBc,gBAAiBxvJ,GACf,MAAM6iG,EAAYz6F,OAAOQ,OAAO,GAAIhN,KAAKinG,WAEzC,IAAK,IAAIn+F,EAAI,EAAGA,EAAI9I,KAAKizJ,gBAAgBjqJ,OAAQF,IAAK,CACpD,MAAMgU,EAAO9c,KAAKizJ,gBAAgBnqJ,GAElC,IAAK9I,KAAKszJ,aAAax2I,GAAO,SAE9B,MAAM5W,GAAMijI,EAAAA,EAAAA,IAAqBrsH,EAAM9c,KAAKiyJ,SACxC7tJ,EAAO6iG,EAAU/gG,GAAO4W,SAChBmqF,EAAU/gG,GAGxBlG,KAAKinG,UAAYA,EACjBjnG,KAAKumI,MAAM,oBAAqB,CAAEpmG,MAAOngC,KAAK6yJ,qBAAsBzuJ,MAAAA,KAEtEkvJ,aAAcx2I,GACZ,OAA0D,KAAnDqsH,EAAAA,EAAAA,IAAqBrsH,EAAM9c,KAAK2yJ,gBAEzCO,WAAYp2I,GACV,QAAS9c,KAAKinG,WAAUkiC,EAAAA,EAAAA,IAAqBrsH,EAAM9c,KAAKiyJ,YAAa,GAEvEhvC,OAAQnmG,EAAW1Y,GAAQ,EAAM8oG,GAAO,GACtC,IAAKltG,KAAKszJ,aAAax2I,GAAO,OAE9B,MAAMmqF,EAAYjnG,KAAKkyJ,aAAe,GAAK1lJ,OAAOQ,OAAO,GAAIhN,KAAKinG,WAC5D/gG,GAAMijI,EAAAA,EAAAA,IAAqBrsH,EAAM9c,KAAKiyJ,SAExC7tJ,EAAO6iG,EAAU/gG,GAAO4W,SAChBmqF,EAAU/gG,GAEtB,MAAMsD,EAAQxJ,KAAKizJ,gBAAgB1vF,WAAU7kD,IAAKyqH,EAAAA,EAAAA,IAAqBzqH,EAAG1e,KAAKiyJ,WAAa/rJ,IAC5F,IAAwB,IAApBlG,KAAK+yJ,UAAkB/yJ,KAAK+yJ,UAAYvpJ,OACvC,GAAIxJ,KAAK8yJ,eAAiB9yJ,KAAKkyJ,cAAgBhlD,EAAM,CACxD,MAAM2mD,GAAe1qB,EAAAA,EAAAA,IAAqBnpI,KAAKizJ,gBAAgBjzJ,KAAK+yJ,WAAY/yJ,KAAKiyJ,SAC/E6B,EAAuBtnJ,OAAOqC,KAAK7O,KAAKinG,WAAWzlE,SAAShpB,OAAOq7I,IACzE7zJ,KAAK+zJ,eAAeD,EAAsB5mD,EAAMjG,EAAWz9F,GAI7D,GAFAxJ,KAAK+yJ,UAAYvpJ,EAEbxJ,KAAKkyJ,cAAgBhlD,EAAM,CAC7B,MAAMr+F,EAAOrC,OAAOqC,KAAK7O,KAAKinG,WACxBusD,EAAM3kJ,EAAK7F,SAAUmgI,EAAAA,EAAAA,IAAqBnpI,KAAKinG,UAAUp4F,EAAK,IAAK7O,KAAKiyJ,SAC9EuB,GAAOA,IAAQttJ,GAAOlG,KAAKumI,MAAM,gBAAiB,CAAEzpH,KAAM9c,KAAKinG,UAAUusD,GAAMpvJ,OAAO,IAExFpE,KAAKinG,UAAYA,EACjBiG,GAAQltG,KAAKumI,MAAM,gBAAiB,CAAEzpH,KAAAA,EAAM1Y,MAAAA,KAE9C2vJ,eAAgB3vJ,GAAQ,EAAM8oG,GAAO,EAAMjG,EAAgBz9F,GACzD,MAAMiQ,EAAQjQ,EAAQxJ,KAAK+yJ,UAAYvpJ,EAAQxJ,KAAK+yJ,UAC9Cr5I,EAAMlQ,EAAQxJ,KAAK+yJ,UAAY/yJ,KAAK+yJ,UAAYvpJ,EACtD,IAAK,IAAIV,EAAI2Q,EAAO3Q,GAAK4Q,EAAK5Q,IAAK,CACjC,MAAMohI,EAAclqI,KAAKizJ,gBAAgBnqJ,GACnC5C,GAAMijI,EAAAA,EAAAA,IAAqBe,EAAalqI,KAAKiyJ,SAC/C7tJ,EAAO6iG,EAAU/gG,GAAOgkI,SAChBjjC,EAAU/gG,GACtBgnG,GAAQltG,KAAKumI,MAAM,gBAAiB,CAAE2D,YAAAA,EAAa9lI,MAAAA,MAGvD4vJ,WAAYl3I,GACV,OAAO9c,KAAK4yJ,WAAUzpB,EAAAA,EAAAA,IAAqBrsH,EAAM9c,KAAKiyJ,YAAa,GAErEgC,OAAQn3I,EAAW1Y,GAAQ,GACzB,MAAMwuJ,EAAY5yJ,KAAKqyJ,aAAe,GAAK7lJ,OAAOQ,OAAO,GAAIhN,KAAK4yJ,WAC5D1sJ,GAAMijI,EAAAA,EAAAA,IAAqBrsH,EAAM9c,KAAKiyJ,SAExC7tJ,EAAOwuJ,EAAU1sJ,IAAO,SAChB0sJ,EAAU1sJ,GAEtBlG,KAAK4yJ,UAAYA,EACjB5yJ,KAAKumI,MAAM,gBAAiB,CAAEzpH,KAAAA,EAAM1Y,MAAAA,KAEtC8vJ,gBAAiBp3I,EAAWtT,GAC1B,MAAO,CACLsT,KAAAA,EACAtT,MAAAA,EACAy5G,OAASpxG,GAAe7R,KAAKijH,OAAOnmG,EAAMjL,GAC1CqhJ,WAAYlzJ,KAAKkzJ,WAAWp2I,GAC5Bm3I,OAASpiJ,GAAe7R,KAAKi0J,OAAOn3I,EAAMjL,GAC1CmiJ,WAAYh0J,KAAKg0J,WAAWl3I,GAC5Bq3I,SAAUn0J,KAAKm0J,WAGnBC,gBAAiBv8I,GACf,OAAO7X,KAAKo+H,eAAe,MAAOvmH,IAEpCw8I,SAAUC,EAA6BC,GACrC,GAA4B,IAAxBD,GAA6Bt0J,KAAK4tI,QAAS,CAC7C,MAAMA,EAAU5tI,KAAKu/H,OAAOqO,SAAW5tI,KAAKy+H,SAASC,KAAKt9G,EAAEphB,KAAKwyJ,aACjE,OAAOxyJ,KAAKo0J,gBAAgBxmB,GACvB,GAA4B,IAAxB0mB,EAA2B,CACpC,MAAME,EAASx0J,KAAKu/H,OAAO,YAAcv/H,KAAKy+H,SAASC,KAAKt9G,EAAEphB,KAAKuyJ,YACnE,OAAOvyJ,KAAKo0J,gBAAgBI,GACvB,GAA4B,IAAxBD,EAA2B,CACpC,MAAME,EAAYz0J,KAAKu/H,OAAO,eAAiBv/H,KAAKy+H,SAASC,KAAKt9G,EAAEphB,KAAKsyJ,eACzE,OAAOtyJ,KAAKo0J,gBAAgBK,GAG9B,OAAO,MAETC,SAAU18I,GACR,MAAM2mG,EAAQ3+G,KAAKq0J,SAASr8I,EAAMs8I,oBAAqBt8I,EAAM23I,WAAWgB,aACxE,OAAIhyC,EAAc,CAACA,GAEf3+G,KAAK0/H,aAAa3jC,QACb/7F,KAAK0/H,aAAa3jC,QAAQ,IAC5B/jF,EACHk7I,WAAYlzJ,KAAKkzJ,WACjBjwC,OAAQjjH,KAAKijH,OACb+wC,WAAYh0J,KAAKg0J,WACjBG,SAAUn0J,KAAKm0J,SACfF,OAAQj0J,KAAKi0J,SAIbj0J,KAAK0/H,aAAa5iH,KACb9E,EAAMmoB,MAAM1kB,KAAI,CAACqB,EAAWtT,IAAUxJ,KAAK0/H,aAAa5iH,KAAM9c,KAAKk0J,gBACxEp3I,EACAtT,MAIG,IAETmrJ,UAAW38I,GACT,GAAIhY,KAAKyyJ,kBAAmB,OAAO,KAEnC,MAAMpwJ,EAAO,CACX2V,MAAO,IACFhY,KAAKozJ,qBACRzzJ,QAASqY,EAAMrY,QACfgwJ,WAAY33I,EAAM23I,YAEpBpoD,GAAI,CACF,iBAAmBnjG,GAAe4T,EAAM+4I,cAAc3sJ,KAIpDomJ,GAAcoK,EAAAA,EAAAA,IAAuB,UAAW50J,KAAK0/H,cAE3D,OAAO1/H,KAAKo+H,eAAey2B,EAAAA,EAAa,CACtCrK,YAAAA,KACGnoJ,KAGPyyJ,qBAAsB98I,GACpB,MAAM+8I,EAAa,IACd/8I,EACHm7I,UAAWnzJ,KAAKmzJ,UAChBH,UAAWhzJ,KAAKgzJ,UAChBY,gBAAiB5zJ,KAAK4zJ,iBAGxB,OAAO5zJ,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,mBACZ,EACD6N,EAAAA,EAAAA,IAAQ7rI,KAAM,SAAU+0J,GAAY,GACpC/0J,KAAK00J,SAAS18I,GACdhY,KAAK20J,UAAU38I,IACf6zH,EAAAA,EAAAA,IAAQ7rI,KAAM,SAAU+0J,GAAY,OAK1C51J,SACE,OAAOa,KAAKo+H,eAAe4zB,EAAAA,EAAO,CAChCh6I,MAAOhY,KAAKuqJ,OACZhjD,GAAI,CACF,iBAAkB,CAAC11F,EAAQ2hJ,MAAc7jD,EAAAA,EAAAA,IAAU99F,EAAG2hJ,IAAQxzJ,KAAKumI,MAAM,iBAAkB10H,GAC3F,cAAgBA,GAAW7R,KAAKumI,MAAM,cAAe10H,GACrD,wBAA0BA,GAAW7R,KAAKumI,MAAM,wBAAyB10H,GACzE,iBAAmBA,GAAW7R,KAAKumI,MAAM,iBAAkB10H,GAC3D,mBAAqBA,GAAW7R,KAAKumI,MAAM,mBAAoB10H,GAC/D,kBAAoBA,GAAW7R,KAAKumI,MAAM,kBAAmB10H,GAC7D,oBAAsBA,GAAW7R,KAAKumI,MAAM,oBAAqB10H,GACjE89I,WAAY,CAAC99I,EAAQ2hJ,MAAc7jD,EAAAA,EAAAA,IAAU99F,EAAG2hJ,IAAQxzJ,KAAKumI,MAAM,aAAc10H,GACjF,gBAAkBA,IAChB7R,KAAK6yJ,qBAAuBhhJ,EAC5B7R,KAAKumI,MAAM,gBAAiB10H,IAE9B,aAAeA,GAAc7R,KAAKumI,MAAM,aAAc10H,IAExD24I,YAAa,CACXzuD,QAAS/7F,KAAK80J,4B,wKCjVtB,GAAe73B,EAAAA,EAAAA,KAAkBv1H,OAAO,CAEtCo4H,WAAY,CACV6O,OAAAA,EAAAA,GAGF32H,MAAO,CACLzV,QAAS,CACPoE,KAAMyE,MACN2wF,QAAS,IAAO,IAElBp8F,QAAS,CACPgH,KAAM6F,OACNuvF,QAAS,KAAM,CACb20D,KAAM,EACND,aAAc,GACduE,OAAQ,GACRC,SAAU,GACVC,QAAS,GACTC,UAAW,GACXC,WAAW,EACXC,UAAU,KAGdC,cAAe98I,OACf+8I,SAAU,CACR5uJ,KAAM6R,OACNujF,QAAS,SAEXi3D,UAAWz1B,QACX41B,UAAW51B,QACXi4B,YAAaj4B,QACb20B,aAAc30B,QACdk4B,YAAal4B,SAGf8B,QAAS,CACPq2B,eAAY,MACV,MAAMrzJ,EAAO,CACX2V,MAAO,CACL5T,MAAOpE,KAAKgzJ,UACZ9mB,eAAgBlsI,KAAKgzJ,WAAahzJ,KAAKmzJ,UACvCtgI,MAAK,SAAE7yB,KAAKs1J,eAAP,EAAwB,IAE/B/tD,GAAI,CACFj1E,MAAQzgB,GAAe7R,KAAKumI,MAAM,oBAAqB10H,KAI3D,OAAI7R,KAAK0/H,aAAa,qBACb1/H,KAAK0/H,aAAa,qBAAsBr9H,GAG1CrC,KAAKo+H,eAAeu3B,EAAAA,EAAiB,CAC1C33B,YAAa,4BACV37H,KAGPuzJ,cACE,OAAO51J,KAAKo+H,eAAeO,EAAAA,EAAO,CAChCX,YAAa,4BACbhmH,MAAO,CACL6E,KAAM,KAEP,CAAC7c,KAAKu1J,e,UCzEf,GAAet4B,EAAAA,EAAAA,GAAO3b,GAAQ55G,OAAO,CACnCmC,KAAM,6BAENmO,MAAO,CACL69I,WAAY,CACVlvJ,KAAM6R,OACNujF,QAAS,8BAIbsjC,QAAS,CACPy2B,YAAa99I,GACX,MAAMssF,EAAuC,CAACtsF,EAAM8E,KAAK6e,MAEnDo6H,EAAY/1J,KAAKL,QAAQq1J,OAAOzxF,WAAU5nD,GAAKA,IAAM3D,EAAM8E,KAAK1Y,QAChE4xJ,EAAcD,GAAa,EAC3BE,EAASj2J,KAAKL,QAAQs1J,SAASc,GAYrC,OAVAzxD,EAAS/6F,KAAKvJ,KAAKo+H,eAAe,MAAO,CACvCJ,YAAa,gBACbC,MAAO,CACLi4B,UAAU,EACVrjH,OAAQmjH,EACRG,IAAKH,IAAgBC,EACrB1/I,KAAMy/I,GAAeC,IAEtB,CAACj2J,KAAK41J,iBAEF51J,KAAKo+H,eAAe8vB,EAAAA,EAAO,CAChClwB,YAAa,WACbz2B,GAAI,CACFoiB,MAAQz5G,IACNA,EAAE0/H,kBACF5vI,KAAKumI,MAAM,OAAQvuH,EAAM8E,KAAK1Y,UAGjCkgG,IAEL8xD,cAAej2H,GACb,OAAOngC,KAAKo+H,eAAe0G,EAAAA,EAAS,CAClC9sH,MAAO,CACLglC,MAAOh9C,KAAKy+H,SAASC,KAAKt9G,EAAEphB,KAAK61J,YACjC11H,MAAAA,EACAsxH,aAAa,EACb9qB,SAAU3mI,KAAKL,QAAQy1J,UACvBhxJ,MAAOpE,KAAKL,QAAQy1J,UAAYp1J,KAAKL,QAAQq1J,OAASh1J,KAAKL,QAAQq1J,OAAO,GAC1E3vB,UAAW,CAAEgxB,qBAAqB,IAEpC9uD,GAAI,CACF5oE,OAAS9sB,GAAyB7R,KAAKumI,MAAM,OAAQ10H,IAEvD24I,YAAa,CACXvjD,UAAWjvF,GAAShY,KAAK81J,YAAY99I,QAM7C7Y,OAAQ2B,GACN,MAAMwjG,EAAuC,GAEvCgd,EAASthH,KAAKuC,QAAQq5F,MAAK96F,GAAiB,sBAAZA,EAAEsD,QACpCk9G,IAAWthH,KAAKkyJ,cAClB5tD,EAAS/6F,KAAKvJ,KAAKo+H,eAAe,MAAO,CACvCH,MAAO,CACL,yCACGuvB,EAAAA,EAAAA,IAAYlsC,EAAO2c,QAExB/iB,MAAO,CACLljF,MAAOspF,EAAOtpF,QAEf,CAACh4B,KAAK01J,kBAGX,MAAMY,EAAct2J,KAAKuC,QACtB4V,QAAOrX,IAAoB,IAAfA,EAAEo1J,UAAkC,sBAAZp1J,EAAEsD,QACtCqX,KAAI3a,IAAK,CACR66B,KAAM76B,EAAE66B,KACRv3B,MAAOtD,EAAEsD,WAGRpE,KAAKy1J,aAAea,EAAYttJ,QACnCs7F,EAAS/6F,KAAKvJ,KAAKo2J,cAAcE,IAGnC,MAAMC,EAAKjyD,EAASt7F,OAChBlI,EAAE,KAAM,CAACA,EAAE,MAAO,CAAEk9H,YAAa,uCAAyC15B,UAC1Ex+F,EAEE0wJ,EAAK11J,EAAE,KAAM,CAACy1J,IAEpB,OAAOz1J,EAAE,QAAS,CAChBk9H,YAAa,kDACZ,CAACw4B,OC7FR,GAAev5B,EAAAA,EAAAA,GAAO3b,GAAQ55G,OAAO,CACnCmC,KAAM,8BAENw1H,QAAS,CACPo3B,iBAAkBn1C,GAChB,OAAOthH,KAAKo+H,eAAe,OAAQ,CACjC72B,GAAI,CACFoiB,MAAQz5G,IACNA,EAAE0/H,kBACF5vI,KAAKumI,MAAM,QAASjlB,EAAOl9G,UAG9B,CAAC,WAENsyJ,QAASV,EAAsBC,GAC7B,MAAMU,EAAMzwJ,GAAgBlG,KAAKy+H,SAASC,KAAKt9G,EAAE,gCAAgClb,KAEjF,IAAI0wJ,EAAW,OACXC,EAAY,CACdF,EAAG,YACHA,EAAG,sBAGL,OAAKX,GAIDC,GACFW,EAAW,aACXC,EAAY,CACVF,EAAG,kBACHA,EAAG32J,KAAKL,QAAQ01J,SAAW,oBAAsB,mBAGnDuB,EAAW,YACXC,EAAY,CACVF,EAAG,iBACHA,EAAG,wBAIA,CAAEC,SAAAA,EAAUC,UAAWA,EAAU7kJ,KAAK,OAjBpC,CAAE4kJ,SAAAA,EAAUC,UAAWA,EAAU7kJ,KAAK,OAmBjD8kJ,UAAWx1C,GACT,MAAMj/G,EAAsE,CAC1E64G,MAAO,CACL0kB,KAAM,eACNzrG,MAAO,MACP,aAAcmtF,EAAO3lF,MAAQ,IAE/BxG,MAAO,CACL6C,OAAOgsG,EAAAA,EAAAA,IAAc1iB,EAAOtpF,OAC5B0yG,UAAU1G,EAAAA,EAAAA,IAAc1iB,EAAOtpF,QAEjCimG,MAAO,CACL,QAAQ3c,EAAO/nG,OAAS,cACrBi0I,EAAAA,EAAAA,IAAYlsC,EAAO2c,OACtB3c,EAAOy1C,SAAW,yBAEpBxvD,GAAI,IAEAjD,EAAW,GAEjB,GAAqB,sBAAjBgd,EAAOl9G,QAAkCpE,KAAKkyJ,aAChD,OAAOlyJ,KAAKo+H,eAAe,KAAM/7H,EAAM,CAACrC,KAAK01J,iBAS/C,GANApxD,EAAS/6F,KACPvJ,KAAK0/H,aAAaloH,eAAe8pG,EAAOl9G,OACpCpE,KAAK0/H,aAAape,EAAOl9G,OAAQ,CAAEk9G,OAAAA,IACnCthH,KAAKo+H,eAAe,OAAQ,CAAC9c,EAAO3lF,SAGrC37B,KAAKy1J,cAAgBn0C,EAAO40C,WAAa50C,EAAO9pG,eAAe,aAAc,CAChFnV,EAAKklG,GAAGoiB,MAAQ,IAAM3pH,KAAKumI,MAAM,OAAQjlB,EAAOl9G,OAEhD,MAAM2xJ,EAAY/1J,KAAKL,QAAQq1J,OAAOzxF,WAAU5nD,GAAKA,IAAM2lG,EAAOl9G,QAC5D4xJ,EAAcD,GAAa,EAC3BE,EAASj2J,KAAKL,QAAQs1J,SAASc,GAErC1zJ,EAAK47H,MAAM10H,KAAK,YAEhB,MAAM,UAAEstJ,EAAF,SAAaD,GAAa52J,KAAK02J,QAAQV,EAAaC,GAE1D5zJ,EAAK64G,MAAM,eAAiB,GAAGoG,EAAO3lF,KAAO,KAAO,KAAKk7H,IACzDx0J,EAAK64G,MAAM,aAAe07C,EAEtBZ,IACF3zJ,EAAK47H,MAAM10H,KAAK,UAChBlH,EAAK47H,MAAM10H,KAAK0sJ,EAAS,OAAS,QAGf,QAAjB30C,EAAO/nG,MAAiB+qF,EAASv5F,QAAQ/K,KAAK41J,eAC7CtxD,EAAS/6F,KAAKvJ,KAAK41J,eAEpB51J,KAAKL,QAAQy1J,WAAaY,GAC5B1xD,EAAS/6F,KAAKvJ,KAAKo+H,eAAe,OAAQ,CAAEH,MAAO,mCAAqC,CAACzlH,OAAOu9I,EAAY,MAMhH,OAFI/1J,KAAKw1J,cAAoC,IAArBl0C,EAAO01C,WAAqB1yD,EAAS/6F,KAAKvJ,KAAKy2J,iBAAiBn1C,IAEjFthH,KAAKo+H,eAAe,KAAM/7H,EAAMiiG,KAI3CnlG,SACE,OAAOa,KAAKo+H,eAAe,QAAS,CAClCJ,YAAa,uBACZ,CACDh+H,KAAKo+H,eAAe,KAAMp+H,KAAKuC,QAAQkZ,KAAI6lG,GAAUthH,KAAK82J,UAAUx1C,WC7G5D,SAAU21C,EAAsB50J,GAC5C,GAAIA,EAAKqpJ,OAASrpJ,EAAKklG,IAAMllG,EAAKklG,GAAGj1E,MACnC,GAAIlnB,MAAMiD,QAAQhM,EAAKklG,GAAGj1E,OAAQ,CAChC,MAAMxpB,EAAIzG,EAAKklG,GAAGj1E,MAAMvtB,QAAQ1C,EAAKqpJ,MAAM52I,UACvChM,GAAK,GAAGzG,EAAKklG,GAAGj1E,MAAM7oB,OAAOX,EAAG,eAE7BzG,EAAKklG,GAAGj1E,M,cCZP,SAAU4kI,EAAwB7yB,EAA+CvjI,GAC7F,MAAMwjG,EAAoB,GAE1B,IAAK,MAAMglC,KAAQjF,EACbA,EAAM7sH,eAAe8xH,IACvBhlC,EAAS/6F,KAAKzI,EAAE,WAAY,CAAEwoI,KAAAA,GAAQjF,EAAMiF,KAIhD,OAAOhlC,E,aCQT,EAAem8B,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,sBAENhK,YAAY,EAEZmY,MAAO,IACFspG,EAAO3hH,QAAQqY,MAClBm/I,OAAQ55B,SAGVp+H,OAAQ2B,GAAG,MAAEkX,EAAF,KAAS3V,EAAT,MAAegiI,IACxB4yB,EAAqB50J,GACrB,MAAMiiG,EAAW8yD,EAAa/yB,IAASvjI,GAIvC,OAFAuB,GAAO6mI,EAAAA,EAAAA,IAAU7mI,EAAM,CAAE2V,MAAAA,IAErBA,EAAMm/I,OACDr2J,EAAEu2J,EAAwBh1J,EAAMiiG,GAEhCxjG,EAAEw2J,EAAyBj1J,EAAMiiG,MC/B9C,SAASizD,EAASjuB,GAAyB,MACzC,OAAwB,IAAjBA,EAAMtgI,SACV,CAAC,KAAM,MAAMw4B,SAAb,SAAsB8nG,EAAM,SAA5B,EAAsBkuB,EAAU1mE,KAGrC,MAAe2vC,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,MAENhK,YAAY,EAEZmY,MAAO,CACLzV,QAAS6I,MACT5B,MAAO4Q,OACP0C,KAAMtQ,OACNsN,IAAKyjH,SAGPp+H,OAAQ2B,GAAG,MAAEkX,EAAF,MAASqsH,EAAT,KAAgBhiI,IACzB,MAAMo1J,EAAgBpzB,IAEhB2V,EAAUhiI,EAAMzV,QAAQkZ,KAAK6lG,IACjC,MAAMhd,EAAW,GACXlgG,GAAQ+kI,EAAAA,EAAAA,IAAqBnxH,EAAM8E,KAAMwkG,EAAOl9G,OAEhDszJ,EAAWp2C,EAAOl9G,MAClBuzJ,EAAat1J,EAAKmoJ,aAAenoJ,EAAKmoJ,YAAYhzI,eAAekgJ,IAAar1J,EAAKmoJ,YAAYkN,GAC/FE,EAAcH,EAAcjgJ,eAAekgJ,IAAaD,EAAcC,GAExEC,EACFrzD,EAAS/6F,SAAQikJ,EAAAA,EAAAA,IAAYmK,EAAW,CACtC76I,KAAM9E,EAAM8E,KACZq3I,UAAU,EACV7yC,OAAAA,EACA93G,MAAOwO,EAAMxO,MACbpF,MAAAA,MAEOwzJ,EACTtzD,EAAS/6F,SAAQikJ,EAAAA,EAAAA,IAAYoK,IAE7BtzD,EAAS/6F,KAAc,MAATnF,EAAgBA,EAAQoU,OAAOpU,IAG/C,MAAMo4B,EAAY,QAAQ8kF,EAAO/nG,OAAS,UAE1C,OAAOg+I,EAAQjzD,GACXxjG,EAAE,KAAM,CACRm9H,MAAO,CACLzhG,EACA8kF,EAAOu2C,UACP,CACE,wBAAyBv2C,EAAOy1C,WAGnCzyD,GACDA,KAGN,OAAOxjG,EAAE,KAAMuB,EAAM23I,MC9DzB,EAAevZ,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,YAENhK,YAAY,EAEZmY,MAAO,CACL5T,MAAO,CACLuC,KAAM42H,QACNxhC,SAAS,GAEX+7D,YAAa,CACXnxJ,KAAM6R,OACNujF,QAAS,uBAEXgrC,aAAcvuH,OACdu/I,aAAc,CACZpxJ,KAAM6R,OACNujF,QAAS,yBAIb58F,OAAQ2B,GAAG,MAAEujI,EAAF,MAASrsH,IAClB,MAAMy/I,EAAgBpzB,IAChB//B,EAAW,GAoBjB,OAlBImzD,EAAc,iBAChBnzD,EAAS/6F,KAAKzI,EAAE,KAAM,CACpBk9H,YAAahmH,EAAM8/I,aAClBL,EAAc,mBACRA,EAAc,eACvBnzD,EAAS/6F,QAAQkuJ,EAAc,eAG7BA,EAAc,gBAAkBz/I,EAAM5T,OAAOkgG,EAAS/6F,QAAQkuJ,EAAc,gBAE5EA,EAAc,kBAChBnzD,EAAS/6F,KAAKzI,EAAE,KAAM,CACpBk9H,YAAahmH,EAAM+/I,cAClBN,EAAc,oBACRA,EAAc,gBACvBnzD,EAAS/6F,QAAQkuJ,EAAc,gBAG1BnzD,K,UCtCX,GAAe24B,EAAAA,EAAAA,GAAOgC,EAAAA,GAAWv3H,OAAO,CACtCmC,KAAM,iBAENmO,MAAO,CACLwlH,MAAOD,QACPy6B,YAAaz6B,QACbrkG,OAAQ,CAAC9e,OAAQ5B,SAGnBslH,SAAU,CACR1gC,UACE,MAAO,CACL,sBAAuBp9F,KAAKw9H,MAC5B,+BAAgCx9H,KAAKk5B,SAAWl5B,KAAKg4J,YACrD,6BAA8Bh4J,KAAKg4J,YACnC,0BAA2Bh4J,KAAKu/H,OAAO5kG,IACvC,6BAA8B36B,KAAKu/H,OAAO3kG,UACvC56B,KAAKykI,gBAKdpF,QAAS,CACPC,aACE,OAAOt/H,KAAKu/H,OAAO5lC,SAAW35F,KAAKo+H,eAAe,MAAO,CACvDJ,YAAa,wBACb7oG,MAAO,CACL+D,QAAQ8qG,EAAAA,EAAAA,IAAchkI,KAAKk5B,UAE5B,CACDl5B,KAAKo+H,eAAe,QAASp+H,KAAKu/H,OAAOxjC,aAK/C58F,OAAQ2B,GACN,OAAOA,EAAE,MAAO,CACdk9H,YAAa,eACbC,MAAOj+H,KAAKo9F,SACX,CACDp9F,KAAKu/H,OAAO5kG,IACZ36B,KAAKs/H,aACLt/H,KAAKu/H,OAAO3kG,YC7ClB,EAAe6lG,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,MAENhK,YAAY,EAEZmY,MAAO,CACLzV,QAAS6I,MACT6sJ,kBAAmB16B,QACnB/zH,MAAO4Q,OACP0C,KAAMtQ,OACNsN,IAAKyjH,SAGPp+H,OAAQ2B,GAAG,MAAEkX,EAAF,MAASqsH,EAAT,KAAgBhiI,IACzB,MAAMo1J,EAAgBpzB,IAEhB2V,EAAmBhiI,EAAMzV,QAAQkZ,KAAK6lG,IAC1C,MAAMlkB,EAAU,CACd,4BAA4B,GAGxBkH,EAAW,GACXlgG,GAAQ+kI,EAAAA,EAAAA,IAAqBnxH,EAAM8E,KAAMwkG,EAAOl9G,OAEhDszJ,EAAWp2C,EAAOl9G,MAClBuzJ,EAAat1J,EAAKmoJ,aAAenoJ,EAAKmoJ,YAAYhzI,eAAekgJ,IAAar1J,EAAKmoJ,YAAYkN,GAC/FE,EAAcH,EAAcjgJ,eAAekgJ,IAAaD,EAAcC,GAExEC,EACFrzD,EAAS/6F,KAAKouJ,EAAW,CACvB76I,KAAM9E,EAAM8E,KACZq3I,UAAU,EACV7yC,OAAAA,EACA93G,MAAOwO,EAAMxO,MACbpF,MAAAA,KAEOwzJ,EACTtzD,EAAS/6F,KAAKquJ,GAEdtzD,EAAS/6F,KAAc,MAATnF,EAAgBA,EAAQoU,OAAOpU,IAG/C,MAAM8zJ,EAAoB,CACxBp3J,EAAE,MAAO,CACPk9H,YAAa,kCACZ15B,IAWL,MARqB,oBAAjBgd,EAAOl9G,OAAgC4T,EAAMigJ,mBAC/CC,EAAkBntJ,QAChBjK,EAAE,MAAO,CACPk9H,YAAa,oCACZ,CAAC1c,EAAO3lF,QAIR76B,EAAE,KAAM,CAAEm9H,MAAO7gC,GAAW86D,MAGrC,OAAOp3J,EAAE,KAAM,IAAKuB,EAAM27H,YAAa,kCAAoCgc,M,oBCpB/E,SAASme,EAAUr7I,EAAWhJ,EAAuBqE,GACnD,OAAQmpG,IACN,MAAMl9G,GAAQ+kI,EAAAA,EAAAA,IAAqBrsH,EAAMwkG,EAAOl9G,OAChD,OAAOk9G,EAAOnpG,OAASmpG,EAAOnpG,OAAO/T,EAAO0P,EAAQgJ,GAAQ3E,EAAO/T,EAAO0P,EAAQgJ,IAItF,SAASs7I,EACPj4H,EACArsB,EACAukJ,EACAC,EACAC,GAIA,OAFAzkJ,EAA2B,kBAAXA,EAAsBA,EAAO7D,OAAS,KAE/CkwB,EAAMhoB,QAAO2E,IAGlB,MAAM07I,EAAuBH,EAAyBx5C,MAAMs5C,EAASr7I,EAAMhJ,EAAQ2kJ,EAAAA,KAI7EC,GAAqB5kJ,GAAUwkJ,EAA4B9wF,KAAK2wF,EAASr7I,EAAMhJ,EAAQykJ,IAE7F,OAAOC,GAAwBE,KAKnC,OAAez7B,EAAAA,EAAAA,GACb07B,EAAAA,EACAlO,EAAAA,GACA/iJ,OAAO,CACPmC,KAAM,eAGNi2H,WAAY,CACV6O,OAAAA,EAAAA,GAGF32H,MAAO,CACLzV,QAAS,CACPoE,KAAMyE,MACN2wF,QAAS,IAAM,IAEjB68D,WAAYr7B,QACZ+3B,cAAe98I,OACfqgJ,WAAYt7B,QACZi4B,YAAaj4B,QAGbrkG,OAAQ,CAAC9e,OAAQ5B,QACjBy/I,kBAAmB16B,QACnBu7B,QAAStgJ,OACTglH,MAAOD,QACPw7B,YAAavsJ,OACbwsJ,gBAAiBz7B,QACjBy6B,YAAaz6B,QACb07B,cAAe7+I,OACf8+I,WAAY,CACVvyJ,KAAM6R,OACNujF,QAAS,WAEXw8D,aAAc,CACZ5xJ,KAAMusF,SACN6I,QAAS08D,EAAAA,IAEXU,UAAW,CACTxyJ,KAAM,CAAC6R,OAAQ06E,UACf6I,QAAS,IAAM,IAEjB6uD,aAAc,CACZjkJ,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,IAIb15F,OACE,MAAO,CACL+2J,gBAAiB,GACjBC,UAAW,GACXl5F,OAAQ,KAIZ29D,SAAU,CACRw7B,kBACE,IAAKt5J,KAAKuC,QAAS,MAAO,GAC1B,MAAMA,EAAUvC,KAAKuC,QAAQ4V,QAAOrX,QAAiBgF,IAAZhF,EAAEsD,QAAwBpE,KAAKo5J,gBAAgBx9D,MAAK/pF,GAAKA,IAAM/Q,EAAEsD,UACpGm1J,EAAgB,CAAE59H,KAAM,GAAIu6H,UAAU,EAAOl+H,MAAO,OAE1D,GAAIh4B,KAAK44J,WAAY,CACnB,MAAMpvJ,EAAQjH,EAAQghE,WAAUziE,GAAiB,sBAAZA,EAAEsD,QACnCoF,EAAQ,EAAGjH,EAAQwI,QAAQ,IAAKwuJ,EAAen1J,MAAO,sBACrD7B,EAAQkH,OAAOD,EAAO,EAAG,IAAK+vJ,KAAkBh3J,EAAQiH,KAG/D,GAAIxJ,KAAK64J,WAAY,CACnB,MAAMrvJ,EAAQjH,EAAQghE,WAAUziE,GAAiB,sBAAZA,EAAEsD,QACnCoF,EAAQ,EAAGjH,EAAQwI,QAAQ,IAAKwuJ,EAAen1J,MAAO,sBACrD7B,EAAQkH,OAAOD,EAAO,EAAG,IAAK+vJ,KAAkBh3J,EAAQiH,KAG/D,OAAOjH,GAETi3J,eACE,OAAOx5J,KAAKm0J,cAAWruJ,EAAY,CACjC2zJ,QAASz5J,KAAKi5J,eAAiBj5J,KAAKs5J,gBAAgBtwJ,SAGxD0wJ,gBACE,OAAO15J,KAAKs5J,gBAAgB5nH,QAAiD,CAACC,EAAK2vE,KAC7EA,EAAO/iG,OAAMozB,EAAI2vE,EAAOl9G,OAASk9G,EAAO/iG,MACrCozB,IACN,KAEL0mH,2BACE,OAAOr4J,KAAKuC,QAAQ4V,QAAOmpG,GAAUA,EAAOnpG,UAAYmpG,EAAO9pG,eAAe,gBAAuC,IAAtB8pG,EAAOq4C,eAExGrB,8BACE,OAAOt4J,KAAKuC,QAAQ4V,QAAOmpG,IAAWA,EAAOnpG,UAAYmpG,EAAO9pG,eAAe,gBAAuC,IAAtB8pG,EAAOq4C,eAEzGC,uBACE,OAAOvG,EAAAA,EAAAA,IAAmBrzJ,KAAK+4J,cAEjCc,uBACE,MAAMpJ,EAAezwJ,KAAKL,SAAWK,KAAKL,QAAQ8wJ,aAAezwJ,KAAKL,QAAQ8wJ,aAAezwJ,KAAKywJ,aAC5Fb,EAA4D5vJ,KAAKozJ,qBAAqBxD,oBAE5F,GACEA,IACCA,EAAoBh0D,MAAK9+E,GAAwB,kBAATA,EAAoBA,IAAS2zI,EAAe3zI,EAAK1Y,QAAUqsJ,IACpG,CACA,MAAMqJ,EAAclK,EAAoB,GACxC,MAA8B,kBAAhBkK,EAA2BA,EAAY11J,MAAQ01J,EAG/D,OAAOrJ,IAIXvxB,UACE,MAAM2P,EAAgB,CACpB,CAAC,YAAa,0BACd,CAAC,eAAgB,uBACjB,CAAC,aAAc,gBAIjBA,EAAc7oI,SAAQ,EAAEumC,EAAU+oD,MAC5Bt1F,KAAKm/H,OAAO3nH,eAAe+0B,KAAW6yF,EAAAA,EAAAA,IAAS7yF,EAAU+oD,EAAat1F,UAI9EohI,UAMMphI,KAAKg5J,kBACP5kJ,OAAO7N,iBAAiB,SAAUvG,KAAK+5J,YACvC/5J,KAAK+5J,eAITpG,gBACM3zJ,KAAKg5J,iBACP5kJ,OAAOvR,oBAAoB,SAAU7C,KAAK+5J,aAI9C16B,QAAS,CACP06B,aACE/5J,KAAKmgE,OAAS/0D,MAAMuB,KAAK3M,KAAK+uI,IAAI1gC,iBAAiB,OAAO5yF,KAAIvL,GAAKA,EAAEs5B,eAEvEwwH,wBAAyB75H,EAAcrsB,GACrC,OAAOskJ,EAAiBj4H,EAAOrsB,EAAQ9T,KAAKq4J,yBAA0Br4J,KAAKs4J,4BAA6Bt4J,KAAKu4J,eAE/G0B,sBAAuB95H,EAAc60H,EAAkBC,EAAqB7pH,GAC1E,OAAOprC,KAAKk6J,WAAW/5H,EAAO60H,EAAQC,EAAU7pH,EAAQprC,KAAK05J,gBAE/DxF,gBAAiBp3I,EAAWtT,GAC1B,MAAMwO,EAAQ2gJ,EAAAA,EAAAA,QAAAA,QAAAA,gBAAAA,KAAmD34J,KAAM8c,EAAMtT,GAE7E,OAAOgD,OAAOQ,OAAOgL,EAAO,CAAEzV,QAASvC,KAAKs5J,mBAE9Ca,WAAYniJ,GACV,OAAIhY,KAAK84J,QAAgB,CAAC94J,KAAKo+H,eAAe,UAAW,CAACp+H,KAAK84J,YAExDjtB,EAAAA,EAAAA,IAAQ7rI,KAAM,UAAWgY,GAAO,IAEzCoiJ,YAAapiJ,GACX,OAAOhY,KAAKo+H,eAAe,WAAYp+H,KAAKs5J,gBAAgB79I,KAAI6lG,GACvDthH,KAAKo+H,eAAe,MAAO,CAChCH,MAAO,CACL84B,QAASz1C,EAAOy1C,eAKxBsD,aACE,MAAM9D,EAAKv2J,KAAKo+H,eAAe,KAAM,CACnCJ,YAAa,SACb9iB,MAAOl7G,KAAKw5J,cACX,CAACx5J,KAAK+qJ,gBAEHyL,EAAKx2J,KAAKo+H,eAAe,KAAM,CACnCJ,YAAa,0BACZ,CAACu4B,IAEJ,OAAOv2J,KAAKo+H,eAAe,QAAS,CAACo4B,KAEvC8D,WAAYtiJ,GACV,MAAM3V,EAAO,CACX2V,MAAO,IACFhY,KAAK45J,qBACRr3J,QAASvC,KAAKs5J,gBACd35J,QAASqY,EAAMrY,QACfw3J,OAAQn3J,KAAKm0J,SACbqB,YAAax1J,KAAKw1J,YAClBF,cAAet1J,KAAKs1J,cACpBnC,UAAWnzJ,KAAKmzJ,UAChBH,UAAWhzJ,KAAKgzJ,UAChBd,aAAclyJ,KAAKkyJ,aACnBuD,YAAaz1J,KAAKy1J,aAEpBluD,GAAI,CACFhpF,KAAMvG,EAAMuG,KACZu4G,MAAO9+G,EAAM8+G,MACb,oBAAqB92H,KAAK4zJ,kBAKxBtvD,EAAuC,EAACunC,EAAAA,EAAAA,IAAQ7rI,KAAM,SAAU,IACjEqC,EACH8xJ,SAAUn0J,KAAKm0J,YAGjB,IAAKn0J,KAAKi4J,kBAAmB,CAC3B,MAAMzN,GAAcoK,EAAAA,EAAAA,IAAuB,UAAW50J,KAAK0/H,cAC3Dp7B,EAAS/6F,KAAKvJ,KAAKo+H,eAAem8B,EAAkB,IAC/Cl4J,EACHmoJ,YAAAA,KAMJ,OAFIxqJ,KAAK4tI,SAAStpC,EAAS/6F,KAAKvJ,KAAKq6J,cAE9B/1D,GAET8vD,gBAAiBv8I,GACf,OAAO7X,KAAKo+H,eAAe,KAAM,CAC/BJ,YAAa,+BACZ,CACDh+H,KAAKo+H,eAAe,KAAM,CACxBljB,MAAOl7G,KAAKw5J,cACX3hJ,MAGP68I,SAAUv0H,EAAcnoB,GACtB,MAAM2mG,EAAQ3+G,KAAKq0J,SAASr8I,EAAMs8I,oBAAqBt8I,EAAM23I,WAAWgB,aACxE,OAAIhyC,EAAc,CAACA,GAEZ3mG,EAAMwiJ,aACTx6J,KAAKy6J,eAAeziJ,EAAMwiJ,aAAcxiJ,GACxChY,KAAK06J,QAAQv6H,EAAOnoB,IAE1ByiJ,eAAgBD,EAAgCxiJ,GAC9C,OAAOwiJ,EAAa/+I,KAAIq7G,IACjB92H,KAAKq5J,UAAU7hJ,eAAes/G,EAAMjtH,OAAO7J,KAAK26J,KAAK36J,KAAKq5J,UAAWviC,EAAMjtH,MAAM,GAElF7J,KAAK0/H,aAAa5I,MACb92H,KAAK0/H,aAAa5I,MAAM,CAC7BA,MAAOA,EAAMjtH,KACblK,QAASqY,EAAMrY,QACfw0J,SAAUn0J,KAAKm0J,SACfh0H,MAAO22F,EAAM32F,MACb59B,QAASvC,KAAKs5J,kBAGTt5J,KAAK46J,qBAAqB9jC,EAAMjtH,KAAMitH,EAAM32F,MAAOnoB,OAIhE4iJ,qBAAsB9jC,EAAe32F,EAAcnoB,GACjD,MAAM6iJ,IAAW76J,KAAKq5J,UAAUviC,GAC1BxyB,EAA0B,CAC9BtkG,KAAKo+H,eAAe,WAAY,CAAEkL,KAAM,eAAiBtpI,KAAK06J,QAAQv6H,EAAOnoB,KAEzE8iJ,EAAW,IAAM96J,KAAK26J,KAAK36J,KAAKq5J,UAAWviC,GAAQ92H,KAAKq5J,UAAUviC,IAClEikC,EAAW,IAAM/iJ,EAAM+4I,cAAc,CAAEmE,QAAS,GAAIC,UAAW,KAErE,GAAIn1J,KAAK0/H,aAAa,gBACpBp7B,EAASv5F,QAAQ/K,KAAKo+H,eAAe,WAAY,CAAEkL,KAAM,iBAAmB,CAC1EtpI,KAAK0/H,aAAa,gBAAiB,CACjC5I,MAAAA,EACAo+B,QAASl9I,EAAMrY,QAAQu1J,QACvBf,SAAUn0J,KAAKm0J,SACfh0H,MAAAA,EACA59B,QAASvC,KAAKs5J,gBACduB,OAAAA,EACAnzD,OAAQozD,EACR9nJ,OAAQ+nJ,WAGP,CACL,MAAMrzD,EAAS1nG,KAAKo+H,eAAeG,EAAAA,EAAM,CACvCP,YAAa,OACbhmH,MAAO,CACL2lH,MAAM,EACNa,OAAO,GAETj3B,GAAI,CACFoiB,MAAOmxC,IAER,CAAC96J,KAAKo+H,eAAeO,EAAAA,EAAO,CAACk8B,EAAS,SAAW,YAE9C7nJ,EAAShT,KAAKo+H,eAAeG,EAAAA,EAAM,CACvCP,YAAa,OACbhmH,MAAO,CACL2lH,MAAM,EACNa,OAAO,GAETj3B,GAAI,CACFoiB,MAAOoxC,IAER,CAAC/6J,KAAKo+H,eAAeO,EAAAA,EAAO,CAAC,aAE1B6Y,EAASx3I,KAAKo+H,eAAe,KAAM,CACvCJ,YAAa,aACb9iB,MAAOl7G,KAAKw5J,cACX,CAAC9xD,EAAQ,GAAG1vF,EAAMrY,QAAQu1J,QAAQ,OAAOp+B,IAAS9jH,IAErDsxF,EAASv5F,QAAQ/K,KAAKo+H,eAAe,WAAY,CAAEkL,KAAM,iBAAmB,CAACkO,KAiB/E,OAdIx3I,KAAK0/H,aAAa,kBACpBp7B,EAAS/6F,KAAKvJ,KAAKo+H,eAAe,WAAY,CAAEkL,KAAM,kBAAoB,CACxEtpI,KAAK0/H,aAAa,iBAAkB,CAClC5I,MAAAA,EACAo+B,QAASl9I,EAAMrY,QAAQu1J,QACvBf,SAAUn0J,KAAKm0J,SACfh0H,MAAAA,EACA59B,QAASvC,KAAKs5J,gBACduB,OAAAA,EACAnzD,OAAQozD,OAKP96J,KAAKo+H,eAAe48B,EAAU,CACnC90J,IAAK4wH,EACL9+G,MAAO,CACL5T,MAAOy2J,IAERv2D,IAELo2D,QAASv6H,EAAcnoB,GACrB,OAAOhY,KAAK0/H,aAAa5iH,KAAO9c,KAAKi7J,cAAc96H,EAAOnoB,GAAShY,KAAKk7J,eAAe/6H,EAAOnoB,IAEhGijJ,cAAe96H,EAAcnoB,GAC3B,MAAMmjJ,EAAO,GAEb,IAAK,IAAIryJ,EAAI,EAAGA,EAAIq3B,EAAMn3B,OAAQF,IAAK,CACrC,MAAMgU,EAAOqjB,EAAMr3B,GACnBqyJ,EAAK5xJ,KAAKvJ,KAAK0/H,aAAa5iH,KAAM,IAC7B9c,KAAKk0J,gBAAgBp3I,EAAMhU,GAC9BqrJ,SAAUn0J,KAAKm0J,YAGbn0J,KAAKg0J,WAAWl3I,IAClBq+I,EAAK5xJ,KAAKvJ,KAAK0/H,aAAa,iBAAkB,CAC5Cn9H,QAASvC,KAAKs5J,gBACdnF,SAAUn0J,KAAKm0J,SACf3qJ,MAAOV,EACPgU,KAAAA,KAKN,OAAOq+I,GAETD,eAAgB/6H,EAAcnoB,GAC5B,OAAOhY,KAAK0/H,aAAa,iBACrBv/F,EAAM1kB,KAAI,CAACqB,EAAMtT,IAAUxJ,KAAKo7J,sBAAsBt+I,EAAMtT,KAC5D22B,EAAM1kB,KAAI,CAACqB,EAAMtT,IAAUxJ,KAAKq7J,oBAAoBv+I,EAAMtT,MAEhE4xJ,sBAAuBt+I,EAAWtT,GAChC,MAAMwqJ,EAAah0J,KAAKg0J,WAAWl3I,GAC7BsgF,EAAU,CACd,qDAAsD42D,GAElDsH,EAAYt7J,KAAKq7J,oBAAoBv+I,EAAMtT,EAAO4zF,GAClDm+D,EAAcv7J,KAAKo+H,eAAe,KAAM,CAC5CJ,YAAa,0DACZ,CAACh+H,KAAK0/H,aAAa,iBAAkB,CACtCn9H,QAASvC,KAAKs5J,gBACdnF,SAAUn0J,KAAKm0J,SACfr3I,KAAAA,MAGF,OAAO9c,KAAKo+H,eAAe48B,EAAU,CACnChjJ,MAAO,CACL5T,MAAO4vJ,IAER,CACDh0J,KAAKo+H,eAAe,WAAY,CAAEkL,KAAM,cAAgB,CAACgyB,IACzDt7J,KAAKo+H,eAAe,WAAY,CAAEkL,KAAM,eAAiB,CAACiyB,OAG9DF,oBAAqBv+I,EAAWtT,EAAe4zF,EAAmC,IAChF,MAAMotD,GAAcoK,EAAAA,EAAAA,IAAuB,QAAS50J,KAAK0/H,cAEnDr9H,EAAOrC,KAAKk0J,gBAAgBp3I,EAAMtT,GAExC,GAAIxJ,KAAK44J,WAAY,CACnB,MAAMtvB,EAAOkhB,EAAY,qBACzBA,EAAY,qBAAuBlhB,EAAO,IAAMA,EAAK,IAChDjnI,EACH8xJ,SAAUn0J,KAAKm0J,WACZ,kBAAMn0J,KAAKo+H,eAAeu3B,EAAAA,EAAiB,CAC9C33B,YAAa,yBACbhmH,MAAO,CACL5T,MAAO/B,EAAK6wJ,WACZl+G,UAAWh1C,KAAKszJ,aAAax2I,GAC7B+V,MAAK,SAAE7yB,KAAKs1J,eAAP,EAAwB,IAE/B/tD,GAAI,CACFj1E,MAAQrsB,GAAiB5D,EAAK4gH,OAAOh9G,OAK3C,GAAIjG,KAAK64J,WAAY,CACnB,MAAMvvB,EAAOkhB,EAAY,qBACzBA,EAAY,qBAAuBlhB,EAAO,IAAMA,EAAKjnI,GAAQ,IAAMrC,KAAKo+H,eAAeO,EAAAA,EAAO,CAC5FX,YAAa,4BACbC,MAAO,CACL,oCAAqC57H,EAAK2xJ,YAE5CzsD,GAAI,CACFoiB,MAAQz5G,IACNA,EAAE0/H,kBACFvtI,EAAK4xJ,QAAQ5xJ,EAAK2xJ,eAGrB,CAACh0J,KAAKk5J,aAGX,OAAOl5J,KAAKo+H,eAAep+H,KAAKm0J,SAAWqH,EAAYC,EAAK,CAC1Dv1J,KAAKijI,EAAAA,EAAAA,IAAqBrsH,EAAM9c,KAAKiyJ,SACrCh0B,OAAOy9B,EAAAA,EAAAA,IACL,IAAKt+D,EAAS,yBAA0B/6F,EAAK6wJ,aAC7C5sB,EAAAA,EAAAA,IAAoBxpH,EAAM9c,KAAKm5J,YAEjCnhJ,MAAO,CACLzV,QAASvC,KAAKs5J,gBACdrB,kBAAmBj4J,KAAKi4J,kBACxBzuJ,MAAAA,EACAsT,KAAAA,EACAhD,IAAK9Z,KAAKy+H,SAAS3kH,KAErB0wI,YAAAA,EACAjjD,GAAI,CAGFoiB,MAAO,IAAM3pH,KAAKumI,MAAM,YAAazpH,EAAMza,GAC3Cs5J,YAAcnqH,GAAsBxxC,KAAKumI,MAAM,kBAAmB/0F,EAAOnvC,GACzEusJ,SAAWp9G,GAAsBxxC,KAAKumI,MAAM,eAAgB/0F,EAAOnvC,OAIzEqlJ,QAAS1vI,GACP,MAAM3V,EAAO,IACR2V,EACHi8I,OAAQj0J,KAAKi0J,OACb1xJ,QAASvC,KAAKs5J,gBACdtF,WAAYh0J,KAAKg0J,WACjBG,SAAUn0J,KAAKm0J,SACfjB,WAAYlzJ,KAAKkzJ,WACjBjwC,OAAQjjH,KAAKijH,QAGf,OAAIjjH,KAAK0/H,aAAajiD,KACbz9E,KAAK0/H,aAAajiD,KAAMp7E,GAG1BrC,KAAKo+H,eAAe,QAAS,EAClCyN,EAAAA,EAAAA,IAAQ7rI,KAAM,eAAgBqC,GAAM,GACpCrC,KAAK00J,SAAS18I,EAAMmoB,MAAOnoB,IAC3B6zH,EAAAA,EAAAA,IAAQ7rI,KAAM,cAAeqC,GAAM,MAGvCu5J,QAAS5jJ,GAAqB,QAC5B,iBAAO,EAAAhY,KAAK0/H,cAAam8B,WAAzB,EAAOC,EAAAA,KAAAA,EAAyB9jJ,IAElC+jJ,WAAY/jJ,GACV,MAAM3V,EAAO,CACX2V,MAAO,CACLrY,QAASqY,EAAMrY,QACfgwJ,WAAY33I,EAAM23I,WAClBM,iBAAkB,yCACfjwJ,KAAKozJ,sBAEV7rD,GAAI,CACF,iBAAmBnjG,GAAe4T,EAAM+4I,cAAc3sJ,IAExD+7D,OAAQngE,KAAKmgE,OACb59D,QAASvC,KAAKs5J,iBAGVh1D,EAA0B,EAC9BunC,EAAAA,EAAAA,IAAQ7rI,KAAM,SAAUqC,GAAM,IAUhC,OAPKrC,KAAKyyJ,mBACRnuD,EAAS/6F,KAAKvJ,KAAKo+H,eAAey2B,EAAAA,EAAa,IAC1CxyJ,EACHmoJ,aAAaoK,EAAAA,EAAAA,IAAuB,UAAW50J,KAAK0/H,iBAIjDp7B,GAETwwD,qBAAsB98I,GACpB,MAAMgkJ,EAAc,CAClB9iI,OAAQl5B,KAAKk5B,OACb8+H,YAAah4J,KAAKg4J,YAClBx6B,MAAOx9H,KAAKw9H,OAqBd,OAAOx9H,KAAKo+H,eAAe69B,EAAc,CACvCjkJ,MAAOgkJ,EACP/9B,MAAO,CACL,uBAAwBj+H,KAAKm0J,WAE9B,CACDn0J,KAAKk8J,UAAU,OAAOrwB,EAAAA,EAAAA,IAAQ7rI,KAAM,MAAO,IACtCgY,EACHm8I,SAAUn0J,KAAKm0J,WACd,IACHn0J,KAAKm6J,WAAWniJ,GAChBhY,KAAKo6J,YAAYpiJ,GACjBhY,KAAKs6J,WAAWtiJ,GAChBhY,KAAK0nJ,QAAQ1vI,GACbhY,KAAK47J,QAAQ5jJ,GACbhY,KAAKk8J,UAAU,SAAUl8J,KAAK+7J,WAAW/jJ,OAG7CkkJ,UAAW5yB,EAAczxH,GACvB,OAAO7X,KAAKo+H,eAAe,WAAY,CAAEkL,KAAAA,GAAQzxH,KAIrD1Y,SACE,OAAOa,KAAKo+H,eAAe4zB,EAAAA,EAAO,CAChCh6I,MAAO,IACFhY,KAAKuqJ,OACRgO,aAAcv4J,KAAKg6J,wBACnBE,WAAYl6J,KAAKi6J,sBACjBxJ,aAAczwJ,KAAK65J,sBAErBtyD,GAAI,CACF,iBAAkB,CAAC11F,EAAgB2hJ,KACjCxzJ,KAAKo5J,gBAAkBvnJ,EAAEqjJ,SAAW,KACnCvlD,EAAAA,EAAAA,IAAU99F,EAAG2hJ,IAAQxzJ,KAAKumI,MAAM,iBAAkB10H,IAErD,cAAgBA,GAAc7R,KAAKumI,MAAM,cAAe10H,GACxD,wBAA0BA,GAAc7R,KAAKumI,MAAM,wBAAyB10H,GAC5E,iBAAmBA,GAAyB7R,KAAKumI,MAAM,iBAAkB10H,GACzE,mBAAqBA,GAA2B7R,KAAKumI,MAAM,mBAAoB10H,GAC/E,kBAAoBA,GAAyB7R,KAAKumI,MAAM,kBAAmB10H,GAC3E,oBAAsBA,GAA2B7R,KAAKumI,MAAM,oBAAqB10H,GACjF89I,WAAY,CAAC99I,EAAmB2hJ,MAAyB7jD,EAAAA,EAAAA,IAAU99F,EAAG2hJ,IAAQxzJ,KAAKumI,MAAM,aAAc10H,GACvG,gBAAkBA,IAChB7R,KAAK6yJ,qBAAuBhhJ,EAC5B7R,KAAKumI,MAAM,gBAAiB10H,IAE9B,aAAeA,GAAc7R,KAAKumI,MAAM,aAAc10H,IAExD24I,YAAa,CACXzuD,QAAS/7F,KAAK80J,4B,yDCrnBtB,OAAer0B,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,SAENsyJ,cAAc,EAEdnkJ,MAAO,CACLmoB,MAAO,CACLx5B,KAAMyE,MACN2wF,QAAS,IAAM,IAEjBp8F,QAAS,CACPgH,KAAM6F,OACNuvF,QAAS,KAAM,KAEjBi5D,OAAQ,CACNruJ,KAAM,CAAC6R,OAAQpN,QAEjB6pJ,SAAU,CACRtuJ,KAAM,CAAC42H,QAASnyH,QAElB8uJ,WAAY,CACVvzJ,KAAMusF,SACN6I,QAASqgE,EAAAA,IAEX/G,SAAU93B,QACV63B,UAAW73B,QACXmzB,KAAM,CACJ/pJ,KAAMyT,OACN2hF,QAAS,GAEX00D,aAAc,CACZ9pJ,KAAMyT,OACN2hF,QAAS,IAEXm5D,QAAS,CACPvuJ,KAAM,CAAC6R,OAAQpN,OACf2wF,QAAS,IAAM,IAEjBo5D,UAAW,CACTxuJ,KAAM,CAAC42H,QAASnyH,OAChB2wF,QAAS,IAAM,IAEjBsgE,YAAa,CACX11J,KAAMusF,SACN6I,QAASugE,EAAAA,IAEXlxH,OAAQ,CACNzkC,KAAM6R,OACNujF,QAAS,SAEX05D,YAAal4B,QACb8yB,kBAAmB9yB,QACnBg/B,iBAAkBh/B,QAClBzpH,OAAQ0E,OACR+/I,aAAc,CACZ5xJ,KAAMusF,SACN6I,QAASygE,EAAAA,IAEXC,kBAAmB,CACjB91J,KAAMyT,OACN2hF,SAAU,IAId15F,OACE,IAAIq6J,EAA+B,CACjChM,KAAM1wJ,KAAK0wJ,KACXD,aAAczwJ,KAAKywJ,aACnBuE,QAAQxH,EAAAA,EAAAA,IAAYxtJ,KAAKg1J,QACzBC,UAAUzH,EAAAA,EAAAA,IAAYxtJ,KAAKi1J,UAC3BC,SAAS1H,EAAAA,EAAAA,IAAYxtJ,KAAKk1J,SAC1BC,WAAW3H,EAAAA,EAAAA,IAAYxtJ,KAAKm1J,WAC5BE,SAAUr1J,KAAKq1J,SACfD,UAAWp1J,KAAKo1J,WAGdp1J,KAAKL,UACP+8J,EAAkBlwJ,OAAOQ,OAAO0vJ,EAAiB18J,KAAKL,UAGxD,MAAM,OAAEq1J,EAAF,SAAUC,EAAV,QAAoBC,EAApB,UAA6BC,GAAcuH,EAC3CC,EAAW3H,EAAOhsJ,OAASisJ,EAASjsJ,OACpC4zJ,EAAY1H,EAAQlsJ,OAASmsJ,EAAUnsJ,OAU7C,OARI2zJ,EAAW,GACbD,EAAgBzH,SAAS1rJ,SAAQszJ,EAAAA,EAAAA,IAAUF,GAAU,IAGnDC,EAAY,GACdF,EAAgBvH,UAAU5rJ,SAAQszJ,EAAAA,EAAAA,IAAUD,GAAW,IAGlD,CACLF,gBAAAA,IAIJ5+B,SAAU,CACR6yB,cACE,OAAO3wJ,KAAKy8J,mBAAqB,EAAIz8J,KAAKy8J,kBAAoBz8J,KAAK0lI,cAAc18H,QAEnFooJ,YACE,OAAOpxJ,KAAK08J,gBAAgBjM,cAAgB,EACxC,EACAxhJ,KAAK2pD,KAAK54D,KAAK2wJ,YAAc3wJ,KAAK08J,gBAAgBjM,eAExDmB,YACE,OAA2C,IAAvC5xJ,KAAK08J,gBAAgBjM,cAAwBzwJ,KAAKmgC,MAAMn3B,QAEpDhJ,KAAK08J,gBAAgBhM,KAAO,GAAK1wJ,KAAK08J,gBAAgBjM,aAFa,GAI7EG,WACE,OAA2C,IAAvC5wJ,KAAK08J,gBAAgBjM,aAA4BzwJ,KAAK2wJ,YACrD3wJ,KAAKmgC,MAAMn3B,OAETiG,KAAKkQ,IAAInf,KAAK2wJ,YAAa3wJ,KAAK08J,gBAAgBhM,KAAO1wJ,KAAK08J,gBAAgBjM,cAFpD,GAIjCqM,YACE,QAAS98J,KAAK08J,gBAAgBxH,QAAQlsJ,QAExC2mJ,aACE,MAAO,CACLe,KAAM1wJ,KAAK08J,gBAAgBhM,KAC3BD,aAAczwJ,KAAK08J,gBAAgBjM,aACnCmB,UAAW5xJ,KAAK4xJ,UAChBhB,SAAU5wJ,KAAK4wJ,SACfQ,UAAWpxJ,KAAKoxJ,UAChBT,YAAa3wJ,KAAK2wJ,cAGtBjrB,gBACE,IAAIvlG,EAAQngC,KAAKmgC,MAAM7xB,QAMvB,OAJKtO,KAAKu8J,kBAAoBv8J,KAAKy8J,mBAAqB,IACtDt8H,EAAQngC,KAAKu4J,aAAap4H,EAAOngC,KAAK8T,SAGjCqsB,GAETslG,gBACE,IAAItlG,EAAQngC,KAAK0lI,cAAcp3H,QAU/B,QARMtO,KAAKy1J,aAAez1J,KAAK08J,gBAAgBxH,QAAQlsJ,SAAWhJ,KAAKy8J,mBAAqB,IAC1Ft8H,EAAQngC,KAAKo8J,UAAUj8H,KAGpBngC,KAAKqwJ,mBAAqBrwJ,KAAKy8J,mBAAqB,IACvDt8H,EAAQngC,KAAK+8J,cAAc58H,IAGtBA,GAETq6H,eACE,OAAOx6J,KAAK88J,UAAY98J,KAAKs8J,WAAWt8J,KAAKylI,eAAiB,MAEhEu3B,cACE,MAAO,CACLz+I,KAAMve,KAAKue,KACX0+I,UAAWj9J,KAAKi9J,UAChBnmC,MAAO92H,KAAK82H,MACZ32F,MAAOngC,KAAKylI,cACZ9lI,QAASK,KAAK08J,gBACd3L,cAAe/wJ,KAAK+wJ,cACpBpB,WAAY3vJ,KAAK2vJ,WACjB6K,aAAcx6J,KAAKw6J,aACnBlG,oBAAqBt0J,KAAKmgC,MAAMn3B,SAGpCk0J,kBACE,MAAO,IAAKl9J,KAAKL,WAIrBwhI,MAAO,CACL+7B,gBAAiB,CACfrwG,QAASltD,EAAsB6zJ,IACzB7jD,EAAAA,EAAAA,IAAUhwG,EAAS6zJ,IAEvBxzJ,KAAK+wJ,cAAcpxJ,IAErBoiG,MAAM,EACNwxD,WAAW,GAEbmJ,gBAAiB,CACf7vG,QAASltD,EAAsB6zJ,IACzB7jD,EAAAA,EAAAA,IAAUhwG,EAAS6zJ,IACvBxzJ,KAAKumI,MAAM,iBAAkB5mI,IAE/BoiG,MAAM,EACNwxD,WAAW,GAEb7C,KAAMA,GACJ1wJ,KAAK+wJ,cAAc,CAAEL,KAAAA,KAEvB,uBAAwBA,GACtB1wJ,KAAKumI,MAAM,cAAemqB,IAE5BD,aAAcA,GACZzwJ,KAAK+wJ,cAAc,CAAEN,aAAAA,KAEvB,+BAAgCA,GAC9BzwJ,KAAKumI,MAAM,wBAAyBkqB,IAEtCuE,OAAQA,GACNh1J,KAAK+wJ,cAAc,CAAEiE,QAAQxH,EAAAA,EAAAA,IAAYwH,MAE3C,yBAA0BA,EAAkBxB,KACzC7jD,EAAAA,EAAAA,IAAUqlD,EAAQxB,IAAQxzJ,KAAKumI,MAAM,iBAAkBn7H,MAAMiD,QAAQrO,KAAKg1J,QAAUA,EAASA,EAAO,KAEvGC,SAAUA,GACRj1J,KAAK+wJ,cAAc,CAAEkE,UAAUzH,EAAAA,EAAAA,IAAYyH,MAE7C,2BAA4BA,EAAqBzB,KAC9C7jD,EAAAA,EAAAA,IAAUslD,EAAUzB,IAAQxzJ,KAAKumI,MAAM,mBAAoBn7H,MAAMiD,QAAQrO,KAAKi1J,UAAYA,EAAWA,EAAS,KAEjHC,QAASA,GACPl1J,KAAK+wJ,cAAc,CAAEmE,SAAS1H,EAAAA,EAAAA,IAAY0H,MAE5C,0BAA2BA,EAAmB1B,KAC3C7jD,EAAAA,EAAAA,IAAUulD,EAAS1B,IAAQxzJ,KAAKumI,MAAM,kBAAmBn7H,MAAMiD,QAAQrO,KAAKk1J,SAAWA,EAAUA,EAAQ,KAE5GC,UAAWA,GACTn1J,KAAK+wJ,cAAc,CAAEoE,WAAW3H,EAAAA,EAAAA,IAAY2H,MAE9C,4BAA6BA,EAAsB3B,KAChD7jD,EAAAA,EAAAA,IAAUwlD,EAAW3B,IAAQxzJ,KAAKumI,MAAM,oBAAqBn7H,MAAMiD,QAAQrO,KAAKm1J,WAAaA,EAAYA,EAAU,KAEtHC,UAAWA,GACTp1J,KAAK+wJ,cAAc,CAAEqE,UAAAA,KAEvB,4BAA6BA,GAC3Bp1J,KAAKumI,MAAM,oBAAqB6uB,IAElCC,SAAUA,GACRr1J,KAAK+wJ,cAAc,CAAEsE,SAAAA,KAEvB,2BAA4BA,GAC1Br1J,KAAKumI,MAAM,mBAAoB8uB,IAEjCjE,UAAW,CACTvkG,QAASukG,GACPpxJ,KAAKumI,MAAM,aAAc6qB,IAE3BmC,WAAW,GAEb9tB,cAAe,CACb54E,QAAS44E,GACPzlI,KAAKumI,MAAM,gBAAiBd,IAE9B8tB,WAAW,GAEb5D,WAAY,CACV9iG,QAAS8iG,EAA4B6D,IAC/B7jD,EAAAA,EAAAA,IAAUggD,EAAY6D,IAC1BxzJ,KAAKumI,MAAM,aAAcvmI,KAAK2vJ,aAEhC4D,WAAW,IAIfl0B,QAAS,CACP33B,OAAQxhG,EAAai3J,EAAiBC,EAAoB1M,EAAc2E,EAAmBD,GACzF,IAAIiI,EAAKF,EAAM7uJ,QACXiI,EAAO6mJ,EAAQ9uJ,QACnB,MAAMgvJ,EAAUD,EAAG95F,WAAW5nD,GAAcA,IAAMzV,IAwBlD,OAtBIo3J,EAAU,GACPlI,IACHiI,EAAK,GACL9mJ,EAAO,IAGT8mJ,EAAG9zJ,KAAKrD,GACRqQ,EAAKhN,MAAK,IACD+zJ,GAAW,IAAM/mJ,EAAK+mJ,GAC/B/mJ,EAAK+mJ,IAAW,EACNjI,EAIV9+I,EAAK+mJ,IAAW,GAHhBD,EAAG5zJ,OAAO6zJ,EAAS,GACnB/mJ,EAAK9M,OAAO6zJ,EAAS,KAMlB3tD,EAAAA,EAAAA,IAAU0tD,EAAIF,KAAWxtD,EAAAA,EAAAA,IAAUp5F,EAAM6mJ,KAC5C1M,EAAO,GAGF,CAAE2M,GAAAA,EAAI9mJ,KAAAA,EAAMm6I,KAAAA,IAErB55B,MAAO5wH,GACL,MAAQm3J,GAAInI,EAAS3+I,KAAM4+I,EAArB,KAAgCzE,GAAS1wJ,KAAK0nG,OAClDxhG,EACAlG,KAAK08J,gBAAgBxH,QACrBl1J,KAAK08J,gBAAgBvH,UACrBn1J,KAAK08J,gBAAgBhM,MACrB,GACA,GAEF1wJ,KAAK+wJ,cAAc,CAAEmE,QAAAA,EAASC,UAAAA,EAAWzE,KAAAA,KAE3CnyI,KAAMrY,GACJ,GAAIkF,MAAMiD,QAAQnI,GAAM,OAAOlG,KAAKi9J,UAAU/2J,GAE9C,MAAQm3J,GAAIrI,EAAQz+I,KAAM0+I,EAApB,KAA8BvE,GAAS1wJ,KAAK0nG,OAChDxhG,EACAlG,KAAK08J,gBAAgB1H,OACrBh1J,KAAK08J,gBAAgBzH,SACrBj1J,KAAK08J,gBAAgBhM,KACrB1wJ,KAAK08J,gBAAgBrH,SACrBr1J,KAAK08J,gBAAgBtH,WAEvBp1J,KAAK+wJ,cAAc,CAAEiE,OAAAA,EAAQC,SAAAA,EAAUvE,KAAAA,KAEzCuM,UAAWjI,GACT,MAAMC,EAAWD,EAAOv5I,KAAIkF,IAC1B,MAAM7X,EAAI9I,KAAK08J,gBAAgB1H,OAAOzxF,WAAW5nD,GAAcA,IAAMgF,IACrE,OAAO7X,GAAK,GAAI9I,KAAK08J,gBAAgBzH,SAASnsJ,MAGhD9I,KAAK+wJ,cAAc,CAAEiE,OAAAA,EAAQC,SAAAA,KAE/BlE,cAAepxJ,GACbK,KAAK08J,gBAAkB,IAClB18J,KAAK08J,mBACL/8J,EACH+wJ,KAAM1wJ,KAAKy8J,kBAAoB,EAC3BxtJ,KAAKmQ,IAAI,EAAGnQ,KAAKkQ,IAAIxf,EAAQ+wJ,MAAQ1wJ,KAAK08J,gBAAgBhM,KAAM1wJ,KAAKoxJ,YACrEzxJ,EAAQ+wJ,MAAQ1wJ,KAAK08J,gBAAgBhM,OAG7C0L,UAAWj8H,GACT,IAAI60H,EAAmB,GACnBC,EAAsB,GAY1B,OAVKj1J,KAAKy1J,cACRT,EAASh1J,KAAK08J,gBAAgB1H,OAC9BC,EAAWj1J,KAAK08J,gBAAgBzH,UAG9Bj1J,KAAK08J,gBAAgBxH,QAAQlsJ,SAC/BgsJ,EAAS,IAAIh1J,KAAK08J,gBAAgBxH,WAAYF,GAC9CC,EAAW,IAAIj1J,KAAK08J,gBAAgBvH,aAAcF,IAG7Cj1J,KAAKk6J,WAAW/5H,EAAO60H,EAAQC,EAAUj1J,KAAKorC,SAEvDkxH,WAAYn8H,GACV,OAAOngC,KAAKq8J,YAAYl8H,EAAOngC,KAAK08J,gBAAgBxH,QAASl1J,KAAK08J,gBAAgBvH,YAEpF4H,cAAe58H,GAOb,OAJgC,IAA5BngC,KAAKy8J,mBAA4Bt8H,EAAMn3B,QAAUhJ,KAAK4xJ,YACxD5xJ,KAAK08J,gBAAgBhM,KAAOzhJ,KAAKmQ,IAAI,EAAGnQ,KAAK2pD,KAAKz4B,EAAMn3B,OAAShJ,KAAK08J,gBAAgBjM,gBAAkB,GAGnGtwH,EAAM7xB,MAAMtO,KAAK4xJ,UAAW5xJ,KAAK4wJ,YAI5CzxJ,SACE,OAAOa,KAAK0/H,aAAa3jC,SAAW/7F,KAAK0/H,aAAa3jC,QAAQ/7F,KAAKg9J,iB,kLC9VvE,MAAMt7B,GAAazE,EAAAA,EAAAA,GACjBsgC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,EACAC,EAAAA,GAIF,MAAel8B,EAAWh6H,OAAO,CAC/BmC,KAAM,WAENi2H,WAAY,CAAE+9B,aAAAA,EAAAA,GAEd7lJ,MAAO,CACLusH,KAAMhH,QACNvoF,SAAUuoF,QACVugC,WAAYvgC,QACZiH,MAAOjH,QACPphG,SAAU,CAAC3jB,OAAQ4B,QACnB2jJ,iBAAkBxgC,QAClB0C,OAAQ,CACNt5H,KAAM6R,OACNujF,QAAS,iBAEXiiE,WAAYzgC,QACZ0gC,YAAa,CACXt3J,KAAM42H,QACNxhC,SAAS,GAEXmiE,WAAY3gC,QACZz/E,WAAY,CACVn3C,KAAM,CAAC6R,OAAQ+kH,SACfxhC,QAAS,qBAEX/jE,MAAO,CAACxf,OAAQ4B,SAGlB/X,OACE,MAAO,CACL87J,YAAa,KACbjzE,SAAS,EACTkzE,gBAAiB,EACjBC,eAAgB,IAChBC,sBAAuB,OAI3BxgC,SAAU,CACR1gC,UACE,MAAO,CACL,CAAE,YAAYp9F,KAAK+mI,eAAgB92H,SAAS,EAC5C,mBAAoBjQ,KAAKkkH,SACzB,uBAAwBlkH,KAAKg+J,WAC7B,uBAAwBh+J,KAAK89J,WAC7B,uBAAwB99J,KAAKk+J,WAC7B,qBAAsBl+J,KAAKkrF,UAG/BqzE,iBACE,MAAO,CACL,qBAAqB,EACrB,4BAA6Bv+J,KAAKkkH,WAGtCs6C,eACE,OAAOjhC,UACHv9H,KAAKu/H,OAAOk/B,aACZz+J,KAAK0/H,aAAa++B,aAK1Bt9B,MAAO,CACLjd,SAAUj+G,GAID,MAHHA,GACFjG,KAAKyzC,OACLzzC,KAAK0+J,eAEL1+J,KAAK2+J,gBACL3+J,KAAKugI,SACL,SAAAvgI,KAAKs+J,wBAAL,EAA4Br1D,UAGhC60D,WAAY73J,GACLjG,KAAKkkH,WAENj+G,GACFjG,KAAK0+J,aACL1+J,KAAK2+J,eAAc,KAEnB3+J,KAAK4+J,aACL5+J,KAAK6+J,iBAKX3/B,UAEMl/H,KAAKm/H,OAAO3nH,eAAe,gBAC7B2nC,EAAAA,EAAAA,IAAQ,aAAcn/C,OAI1B8+J,cACE9+J,KAAKwhI,WAAU,KACbxhI,KAAK2iI,SAAW3iI,KAAKkkH,SACrBlkH,KAAKkkH,UAAYlkH,KAAKyzC,WAI1BkgH,gBACwB,qBAAXv/I,QAAwBpU,KAAKugI,UAG1ClB,QAAS,CACP0/B,eACE/+J,KAAKkrF,SAAU,EAGflrF,KAAKwhI,WAAU,KACbxhI,KAAKkrF,SAAU,EACf92E,OAAOiF,aAAarZ,KAAKo+J,gBACzBp+J,KAAKo+J,eAAiBhqJ,OAAOpP,YAAW,IAAOhF,KAAKkrF,SAAU,GAAQ,SAG1E8zE,iBAAkB9uJ,GAChB,MAAM/B,EAAS+B,EAAE/B,OAKjB,QACEnO,KAAKi/J,eACJj/J,KAAKkkH,UACNlkH,KAAKqnI,MAAMxvH,QAAQs8C,SAAShmD,IAC3BnO,KAAKk/J,SAAW/wJ,IAAWnO,KAAKk/J,QAAQnwB,IAAI56E,SAAShmD,KACnDnO,KAAKm/J,cAAgBn/J,KAAKo/J,gBAEjCV,aACM1+J,KAAK89J,WACPlrJ,SAASysJ,gBAAgB54D,UAAUlmG,IAAI,qBAEvCk9J,EAAAA,EAAAA,QAAAA,QAAAA,WAAAA,KAA4Cz9J,OAGhDyzC,QACGzzC,KAAK89J,aAAe99J,KAAKs/J,aAAet/J,KAAK6+J,aAE9C7+J,KAAKwhI,WAAU,KACbxhI,KAAKwhI,WAAU,KACRxhI,KAAKqnI,MAAMxvH,QAAQs8C,SAASvhD,SAASokG,iBACxCh3G,KAAKs+J,sBAAwB1rJ,SAASokG,cACtCh3G,KAAKqnI,MAAMxvH,QAAQoxF,SAErBjpG,KAAKkH,cAIXA,OACEkN,OAAO7N,iBAAiB,UAAWvG,KAAKu/J,YAE1Ch/B,SACEnsH,OAAOvR,oBAAoB,UAAW7C,KAAKu/J,YAE7CC,eAAgBtvJ,GACdlQ,KAAKumI,MAAM,gBAAiBr2H,GAExBlQ,KAAKg+J,WACPh+J,KAAK+9J,kBAAoB/9J,KAAK++J,eAE9B/+J,KAAKkkH,UAAW,GAGpByoC,UAAWz8I,GACT,GAAIA,EAAEytG,UAAY4qB,EAAAA,GAAAA,MAAiBvoI,KAAKy/J,oBAAoBz2J,OAC1D,GAAKhJ,KAAKg+J,WAIEh+J,KAAK+9J,kBACf/9J,KAAK++J,mBALe,CACpB/+J,KAAKkkH,UAAW,EAChB,MAAMu6C,EAAYz+J,KAAK0/J,eACvB1/J,KAAKwhI,WAAU,IAAMi9B,GAAcA,EAA0Bx1D,UAKjEjpG,KAAKumI,MAAM,UAAWr2H,IAIxBqvJ,UAAWrvJ,GACT,IAAKA,IAAMlQ,KAAKi+J,YAAa,OAE7B,MAAM9vJ,EAAS+B,EAAE/B,OAEjB,GACIA,IAED,CAACyE,SAAU5S,KAAKqnI,MAAMxvH,SAAS2pB,SAASrzB,KAExCnO,KAAKqnI,MAAMxvH,QAAQs8C,SAAShmD,IAE7BnO,KAAKm/J,cAAgBn/J,KAAKo/J,iBAEzBp/J,KAAK2/J,2BAA2Bn4F,MAAK9xD,GAAMA,EAAGy+C,SAAShmD,KAExD,CAEA,MAAMyxJ,EAAY5/J,KAAKqnI,MAAMxvH,QAAQw2F,iBAAiB,4EAChD34F,EAAK,IAAIkqJ,GAAWhkE,MAAKlmF,IAAOA,EAAG4tG,aAAa,cACtD5tG,GAAMA,EAAGuzF,UAGbw2B,aACE,OAAOz/H,KAAK6/J,iBAAgB,IAAM,CAChC7/J,KAAKo+H,eAAe0hC,EAAAA,EAAgB,CAClC9nJ,MAAO,CACLkc,MAAM,EACNswG,MAAOxkI,KAAKwkI,MACZD,KAAMvkI,KAAKukI,OAEZ,CACDvkI,KAAKo+H,eAAe,MAAO,CACzBH,MAAOj+H,KAAKu+J,eACZrjD,MAAO,CACL0kB,KAAM,SACNorB,SAAUhrJ,KAAKkkH,SAAW,OAAIp+G,EAC9B,aAAc9F,KAAKs/J,iBAAcx5J,EAAY,UAC1C9F,KAAK+/J,mBAEVx4D,GAAI,CAAEmlD,QAAS1sJ,KAAK2sJ,WACpBx3H,MAAO,CAAE6qI,OAAQhgK,KAAKm/J,cACtB36D,IAAK,WACJ,CAACxkG,KAAKigK,wBAIfA,gBACE,MAAMpoJ,EAAU7X,KAAKkgK,kBAErB,OAAKlgK,KAAK89C,WAEH99C,KAAKo+H,eAAe,aAAc,CACvCpmH,MAAO,CACLnO,KAAM7J,KAAK89C,WACXmiF,OAAQjgI,KAAKigI,OACbkgC,QAAQ,IAET,CAACtoJ,IARyBA,GAU/BqoJ,kBACE,MAAM79J,EAAkB,CACtB47H,MAAOj+H,KAAKo9F,QACZoH,IAAK,SACLs7B,WAAY,CACV,CACEj2H,KAAM,gBACNzF,MAAO,CACLyoD,QAAS7sD,KAAKw/J,eACdR,iBAAkBh/J,KAAKg/J,iBACvBoB,QAASpgK,KAAK2/J,2BAGlB,CAAE91J,KAAM,OAAQzF,MAAOpE,KAAKkkH,WAE9B/uF,MAAO,CACLkrI,gBAAiBrgK,KAAKigI,SAY1B,OARKjgI,KAAK89J,aACRz7J,EAAK8yB,MAAQ,IACR9yB,EAAK8yB,MACRgH,UAAU6nG,EAAAA,EAAAA,IAAchkI,KAAKm8B,UAC7BnE,OAAOgsG,EAAAA,EAAAA,IAAchkI,KAAKg4B,SAIvBh4B,KAAKo+H,eAAe,MAAO/7H,EAAMrC,KAAKsgK,oBAIjDnhK,OAAQ2B,GACN,OAAOA,EAAE,MAAO,CACdk9H,YAAa,sBACbC,MAAO,CACL,gCACkB,KAAhBj+H,KAAK+1D,SACW,IAAhB/1D,KAAK+1D,QACW,WAAhB/1D,KAAK+1D,SAER,CACD/1D,KAAKugK,eACLvgK,KAAKy/H,mB,gFCvTX,EAAeR,EAAAA,EAAAA,OAAiB,CAC9Bp1H,KAAM,YAENmO,MAAO,CACLwoJ,MAAOjjC,QACPxtE,SAAUwtE,SAGZp+H,OAAQ2B,GAEN,IAAI2/J,EAIJ,OAHKzgK,KAAKm/H,OAAOS,MAA6B,cAArB5/H,KAAKm/H,OAAOS,OACnC6gC,EAAczgK,KAAK+vD,SAAW,WAAa,cAEtCjvD,EAAE,KAAM,CACbm9H,MAAO,CACL,aAAa,EACb,mBAAoBj+H,KAAKwgK,MACzB,sBAAuBxgK,KAAK+vD,YACzB/vD,KAAKykI,cAEVvpB,MAAO,CACL0kB,KAAM,YACN,mBAAoB6gC,KACjBzgK,KAAKm/H,QAEV53B,GAAIvnG,KAAK4qI,iB,8EChBf,QAAe3N,EAAAA,EAAAA,IACbqQ,EAAAA,EAAAA,GAA6D,kBAAmB,oBAAqB,uBACrGozB,EAAAA,EAAAA,GAAmB,kBAAkB,IAErCh5J,OAAO,CACPmC,KAAM,oBAENmO,MAAO,CACLg9B,SAAUuoF,QACVojC,SAAUpjC,SAGZl7H,OACE,MAAO,CACLwV,QAAS,KACTypG,OAAQ,KACRs/C,cAAc,IAIlB9iC,SAAU,CACR1gC,UACE,MAAO,CACL,4BAA6Bp9F,KAAKkkH,SAClC,iCAAkClkH,KAAK4gK,aACvC,8BAA+B5gK,KAAKmsJ,cACjCnsJ,KAAKmuI,eAGZge,aACE,OAAOnsJ,KAAK6gK,gBAAgB7rH,UAAYh1C,KAAKg1C,UAE/C8rH,aACE,OAAO9gK,KAAK6gK,gBAAgBF,UAAY3gK,KAAK2gK,WAIjDthC,QAAS,CACP0hC,gBAAiBC,GACfhhK,KAAK6X,QAAUmpJ,GAEjBC,oBACEjhK,KAAK6X,QAAU,MAEjBqpJ,eAAgBF,GACdhhK,KAAKshH,OAAS0/C,EACdA,EAAGG,IAAI,QAASnhK,KAAKi2B,UAEvBmrI,mBACEphK,KAAKshH,OAAS,MAEhBrrF,QAAS/lB,GACHA,EAAE4+H,QAAQ9uI,KAAKshH,OAAQytB,IAAIj3B,OAE/B93G,KAAKumI,MAAM,QAASr2H,GAEpBlQ,KAAK8gK,YAAc9gK,KAAKmsJ,YAAcnsJ,KAAK0nG,UAE7CA,SACE1nG,KAAKwhI,WAAU,IAAMxhI,KAAKumI,MAAM,cAIpCpnI,OAAQ2B,GACN,OAAOA,EAAE,MAAO,CACdk9H,YAAa,oBACbC,MAAOj+H,KAAKo9F,QACZ8d,MAAO,CACL,gBAAiB1iG,OAAOxY,KAAKkkH,aAE9B2nB,EAAAA,EAAAA,IAAQ7rI,W,kGCzEf,MAAM0hI,GAAazE,EAAAA,EAAAA,GACjBokC,EAAAA,EACA/2B,EAAAA,GACAg3B,EAAAA,EAAAA,GAAyD,iBAAkB,4BAA6B,sBAQ1G,OAAe5/B,EAAWh6H,SAAkBA,OAAO,CACjDmC,KAAM,4BAENxH,KAAM,KAAM,CACV6hH,UAAU,IAGZ4Z,SAAU,CACRyjC,iBACE,OAAOvhK,KAAKwhK,eAAet9C,WAI/Bid,MAAO,CACLogC,eAAgB,CACdhO,WAAW,EACX1mG,QAAS5mD,EAAKwhI,GACRxhI,IAAKjG,KAAK2iI,UAAW,GAEX,MAAV8E,EAAgBznI,KAAKkkH,SAAWj+G,EAC/BjG,KAAKwhI,WAAU,IAAMxhI,KAAKkkH,SAAWj+G,OAKhDi5H,UACEl/H,KAAKwhK,eAAeT,gBAAgB/gK,OAGtC2zJ,gBACE3zJ,KAAKwhK,eAAeP,qBAGtB9hK,OAAQ2B,GACN,OAAOA,EAAE2gK,EAAAA,GAAmBzhK,KAAK6/J,iBAAgB,IAAM,CACrD/+J,EAAE,MAAOd,KAAKk+H,mBAAmBl+H,KAAK6yB,MAAO,CAC3CmrG,YAAa,4BACb8B,WAAY,CAAC,CACXj2H,KAAM,OACNzF,MAAOpE,KAAKkkH,aAEZ,CACFpjH,EAAE,MAAO,CAAEm9H,MAAO,oCAAqC4N,EAAAA,EAAAA,IAAQ7rI,iB,2GClDvE,MAAM0hI,GAAazE,EAAAA,EAAAA,GACjBqN,EAAAA,GACAg3B,EAAAA,EAAAA,GAAyD,iBAAkB,2BAA4B,sBAQzG,OAAe5/B,EAAWh6H,SAAkBA,OAAO,CACjDmC,KAAM,2BAENi2H,WAAY,CAAE6O,OAAAA,EAAAA,GAEd32H,MAAO,CACL0pJ,kBAAmBnkC,QACnB27B,WAAY,CACVvyJ,KAAM6R,OACNujF,QAAS,WAEX4lE,YAAapkC,QACboR,OAAQ,CACNhoI,KAAM,CAAC42H,QAAS/wH,QAChBuvF,SAAS,IAIb15F,KAAM,KAAM,CACVu/J,cAAc,IAGhB9jC,SAAU,CACR1gC,UACE,MAAO,CACL,mCAAoCp9F,KAAKkkH,SACzC,sCAAuClkH,KAAK4hK,eAGhD19C,WACE,OAAOlkH,KAAKwhK,eAAet9C,UAE7BioC,aACE,OAAOnsJ,KAAKwhK,eAAerV,YAE7B2U,aACE,OAAO9gK,KAAKwhK,eAAeV,aAI/B5hC,UACEl/H,KAAKwhK,eAAeN,eAAelhK,OAGrC2zJ,gBACE3zJ,KAAKwhK,eAAeJ,oBAGtB/hC,QAAS,CACPppG,QAAS/lB,GACPlQ,KAAKumI,MAAM,QAASr2H,IAEtB2hJ,UACE,MAAMl0B,GAAOkO,EAAAA,EAAAA,IAAQ7rI,KAAM,YACzB,CAACA,KAAKo+H,eAAeO,EAAAA,EAAO3+H,KAAKk5J,aAEnC,OAAOl5J,KAAKo+H,eAAeyjC,EAAAA,GAAiB,CAC1C7hK,KAAKo+H,eAAe,MAAO,CACzBJ,YAAa,iCACbC,MAAO,CACL,iDAAkDj+H,KAAK0hK,mBAEzD5hC,WAAY,CAAC,CACXj2H,KAAM,OACNzF,OAAQpE,KAAKmsJ,cAEdxuB,OAKTx+H,OAAQ2B,GACN,OAAOA,EAAE,SAAUd,KAAKk+H,mBAAmBl+H,KAAK6yB,MAAO,CACrDmrG,YAAa,2BACbC,MAAOj+H,KAAKo9F,QACZ8d,MAAO,CACL8vC,SAAUhrJ,KAAKmsJ,YAAc,EAAI,KACjCxlJ,KAAM,SACN,gBAAiB3G,KAAKkkH,UAExB4b,WAAY,CAAC,CACXj2H,KAAM,SACNzF,MAAOpE,KAAK2uI,SAEdpnC,GAAI,IACCvnG,KAAK4qI,WACRjhB,MAAO3pH,KAAKi2B,QACZ6rI,UAAW,IAAO9hK,KAAK4hK,cAAe,EACtCG,QAAS,IAAO/hK,KAAK4hK,cAAe,KAEpC,EACF/1B,EAAAA,EAAAA,IAAQ7rI,KAAM,UAAW,CAAEsE,KAAMtE,KAAKkkH,WAAY,GAClDlkH,KAAK2hK,aAAe3hK,KAAK6xJ,gB,0FC3G/B,EAAemQ,EAAAA,EAAAA,OAAqB,CAClCn4J,KAAM,qBAENk4H,UACE,MAAO,CACL8+B,gBAAiB7gK,OAIrBgY,MAAO,CACLiqJ,UAAW1kC,QACXvoF,SAAUuoF,QACVmtB,KAAMntB,QACNloG,MAAOkoG,QACPqiC,UAAWriC,QACXijC,MAAOjjC,QACP2kC,OAAQ3kC,QACRojC,SAAUpjC,QACV4N,KAAM5N,SAGRO,SAAU,CACR1gC,UACE,MAAO,IACF4kE,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAA4ChiK,MAC/C,sBAAsB,EACtB,gCAAiCA,KAAKiiK,UACtC,2BAA4BjiK,KAAK0qJ,KACjC,4BAA6B1qJ,KAAKq1B,MAClC,gCAAiCr1B,KAAK4/J,UACtC,4BAA6B5/J,KAAKwgK,MAClC,6BAA8BxgK,KAAKkiK,OACnC,2BAA4BliK,KAAKmrI,QAKvCjM,UAEMl/H,KAAKm/H,OAAO3nH,eAAe,YAC7B4nH,EAAAA,EAAAA,IAAS,SAAU,WAAYp/H,MAK/BoL,MAAMiD,QAAQrO,KAAKoE,QACnBpE,KAAKoE,MAAM4E,OAAS,GACK,mBAAlBhJ,KAAKoE,MAAM,KAElBg7H,EAAAA,EAAAA,IAAS,+BAAgC,kBAAmBp/H,OAIhEq/H,QAAS,CACP8iC,WAAYrlJ,EAAmDtT,GAC7D,MAAMpF,EAAQpE,KAAK6lI,SAAS/oH,EAAMtT,GAC5B44J,EAAYpiK,KAAK6lI,SAAS/oH,EAAMtT,EAAQ,GAE9CsT,EAAKonG,SAAWlkH,KAAKqiK,aAAaj+J,GAClC0Y,EAAK8jJ,aAAe5gK,KAAKqiK,aAAaD,Q,gFCtE5C,EAAen5B,EAAf,E,wCCcA,EAAeA,EAAAA,OAAkB,CAC/Bp/H,KAAM,eAEN6hJ,MAAO,CACLl9I,KAAM,QACNgjC,MAAO,UAGTx5B,MAAO,CACLsqJ,MAAO/kC,QACPglC,UAAW,CACT57J,KAAM42H,QACNxhC,SAAS,GAEXymE,kBAAmB,CACjB77J,KAAM6R,OACNujF,QAAS,kCAEX0mE,cAAe,CACb97J,KAAM6R,OACNujF,QAAS,8BAEX2mE,UAAWnlC,QACXoJ,SAAUpJ,QACVp1B,YAAa3vF,OACbmqJ,YAAa,CACXh8J,KAAM6R,OACNujF,QAAS,SAEX4kE,SAAU,CACRh6J,KAAM42H,QACNxhC,SAAS,GAEX6mE,SAAU,CACRj8J,KAAM,CAAC42H,QAASnjH,QAChB2hF,SAAS,EACT7xF,UAAY2H,GAEK,mBAANA,GACP,CAAC,IAAM,MAAM2vB,SAAS3vB,IAI5BgxJ,WAAYtlC,QACZulC,eAAgB,CACdn8J,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,IAEXp1F,KAAM,CACJA,KAAM6R,OACNujF,QAAS,QAEX33F,MAAO,CACL23F,aAASj2F,EACToE,UAAWjE,IACFunJ,EAAAA,EAAAA,IAAYvnJ,GAAK44G,OAAMhtG,GAAU,MAALA,GAA0B,kBAANA,MAK7DisH,SAAU,CACR1gC,UACE,MAAO,IACF6rC,EAAAA,QAAAA,SAAAA,QAAAA,KAAyCjpI,MAC5C,gBAAgB,IAGpBuuJ,uBACE,MAAMwU,EAAa/iK,KAAK2mI,UAAY3mI,KAAK+rJ,UACrC/rJ,KAAK+rJ,UAAU/iJ,OACdhJ,KAAK+rJ,qBAAqBiX,KAAQ,EAAI,EAE3C,IAAKhjK,KAAK4iK,SAAU,OAAO5iK,KAAKy+H,SAASC,KAAKt9G,EAAEphB,KAAKyiK,cAAeM,GAEpE,MAAME,EAAQjjK,KAAKkjK,mBAAmBxxH,QAAO,CAACuxH,GAAiBpmJ,KAAAA,EAAO,KAC7DomJ,EAAQpmJ,GACd,GAEH,OAAO7c,KAAKy+H,SAASC,KAAKt9G,EACxBphB,KAAKwiK,kBACLO,GACAI,EAAAA,EAAAA,IAAsBF,EAAqB,OAAdjjK,KAAK6/B,QAGtCqjI,qBACE,OAAO1V,EAAAA,EAAAA,IAAYxtJ,KAAKinI,gBAE1BA,cAAe,CACbvwG,MACE,OAAO12B,KAAK+rJ,WAEd93H,IAAKhuB,GACHjG,KAAK+rJ,UAAY9lJ,EACjBjG,KAAKumI,MAAM,SAAUvmI,KAAK+rJ,aAG9BtlB,UACE,OAAOzmI,KAAKkjK,mBAAmBl6J,OAAS,GAE1Co6J,gBACE,OAAOpjK,KAAKymI,SAEd9qG,OACE,OAAK37B,KAAKymI,UAAYzmI,KAAKqjK,wBAAyBrjK,KAAK6mI,WAAc7mI,KAAKsjK,SAErEtjK,KAAKkjK,mBAAmBznJ,KAAK8nJ,IAClC,MAAM,KACJ15J,EAAO,GADH,KAEJgT,EAAO,GACL0mJ,EAEEC,EAAgBxjK,KAAKyjK,aAAa55J,GAExC,OAAQ7J,KAAK4iK,SAET,GAAGY,OAAkBL,EAAAA,EAAAA,IAAsBtmJ,EAAoB,OAAd7c,KAAK6/B,SADtD2jI,KAXwF,CAACxjK,KAAKmoG,cAetGtoE,OACE,MAAgC,mBAAlB7/B,KAAK4iK,SAAyB5iK,KAAK4iK,cAAW98J,GAE9DspJ,WACE,OAAOpvJ,KAAKsiK,OAAStiK,KAAK6iK,aAI9B1hC,MAAO,CACLw/B,SAAU,CACR9zG,QAASh7C,IACG,IAANA,IAAY6xJ,EAAAA,EAAAA,IAAa,8CAA+C1jK,OAE9EuzJ,WAAW,GAEbnvJ,MAAOyN,GACL,MAAMzN,EAAQpE,KAAK2mI,SAAW90H,EAAIA,EAAI,CAACA,GAAK,IACvC89F,EAAAA,EAAAA,IAAUvrG,EAAOpE,KAAKqnI,MAAM/0G,MAAMg3F,SAMrCtpH,KAAKqnI,MAAM/0G,MAAMluB,MAAQ,MAK/Bi7H,QAAS,CACP0J,oBACE/oI,KAAKinI,cAAgBjnI,KAAK2mI,SAAW,GAAK,KAC1C3mI,KAAKqnI,MAAM/0G,MAAMluB,MAAQ,IAE3Bu/J,WACE,OAAK3jK,KAAKymI,QAEHzmI,KAAK27B,KAAKlgB,KAAI,CAACkgB,EAAMnyB,IAAUxJ,KAAKo+H,eAAe8vB,EAAAA,EAAO,CAC/Dl2I,MAAO,CAAEwmH,MAAOx+H,KAAK6iK,YACrBt7D,GAAI,CACF,cAAe,KACb,MAAM0/B,EAAgBjnI,KAAKinI,cAC3BA,EAAcx9H,OAAOD,EAAO,GAC5BxJ,KAAKinI,cAAgBA,KAGxB,CAACtrG,MAXsB,IAa5BioI,aACE,MAAMzkK,EAAS8pI,EAAAA,QAAAA,QAAAA,WAAAA,KAA2CjpI,MAS1D,OAPIA,KAAK0iK,YACPvjK,EAAOkD,KAAM8yB,OAAQ0uI,EAAAA,EAAAA,IACnB1kK,EAAOkD,KAAM8yB,MACb,CAAEg2B,QAAS,UAIRhsD,GAET6pI,WACE,MAAM12G,EAAQ22G,EAAAA,QAAAA,QAAAA,SAAAA,KAAyCjpI,MAgBvD,OAdAsyB,EAAMjwB,KAAM64G,MAAOyrB,SAAW3mI,KAAK2mI,gBAK5Br0G,EAAMjwB,KAAMqiI,SAAUtgI,aAMtBkuB,EAAMjwB,KAAMklG,GAAIj1E,MACvBA,EAAMjwB,KAAMklG,GAAI5oE,OAAS3+B,KAAK0pI,QAEvB,CAAC1pI,KAAKupI,gBAAiBj3G,IAEhCwxI,iBACE,IAAK9jK,KAAK2iK,YAAa,OAAO,KAE9B,MAAMhlC,EAAO39H,KAAK6xJ,QAAQ,WAAW,KACnC7xJ,KAAKqnI,MAAM/0G,MAAMq3F,WAGnB,OAAO3pH,KAAK+jK,QAAQ,UAAW,QAAS,CAACpmC,KAE3CqmC,mBACE,MAAMh7J,EAAShJ,KAAK27B,KAAK3yB,OAEzB,OAAIA,EAAS,EAAUhJ,KAAK27B,KACxB37B,KAAK4iK,WAAa5iK,KAAKikK,QAAgB,CAACjkK,KAAKuuJ,sBAC1C,CAACvuJ,KAAKy+H,SAASC,KAAKt9G,EAAEphB,KAAKyiK,cAAez5J,KAEnDugI,gBACE,MAAMjlC,EAAW,GAkBjB,OAhBItkG,KAAKymI,SAAWzmI,KAAK0/H,aAAaz4B,UACpCjnG,KAAKkjK,mBAAmBl9J,SAAQ,CAACu9J,EAAY/5J,KACtCxJ,KAAK0/H,aAAaz4B,WAEvB3C,EAAS/6F,KACPvJ,KAAK0/H,aAAaz4B,UAAU,CAC1BtrE,KAAM37B,KAAK27B,KAAKnyB,GAChB+5J,KAAAA,EACA/5J,MAAAA,QAKN86F,EAAS/6F,KAAKvJ,KAAKovJ,UAAYpvJ,KAAKymI,QAAUzmI,KAAK2jK,WAAa3jK,KAAKgkK,oBAGhEhkK,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,qBACbC,MAAO,CACL,kCAAmCj+H,KAAKmoG,cAAgBnoG,KAAKymI,QAC7D,4BAA6BzmI,KAAKovJ,WAAapvJ,KAAK0/H,aAAaz4B,YAElE3C,IAEL4/D,mBACE,MAAMlwI,EAAOi1G,EAAAA,QAAAA,QAAAA,iBAAAA,KAAiDjpI,MAO9D,OALAg0B,EAAK3xB,KAAMklG,GAAK,IACVvzE,EAAK3xB,KAAMklG,IAAM,GACrBoiB,MAAO,IAAM3pH,KAAKqnI,MAAM/0G,MAAMq3F,SAGzB31F,GAET01G,QAASx5H,GACP,MAAMo5G,EAAQ,IAAKp5G,EAAE/B,OAA4Bm7G,OAAS,IAE1DtpH,KAAKinI,cAAgBjnI,KAAK2mI,SAAWrd,EAAQA,EAAM,GAKnDtpH,KAAKmkK,aAAenkK,KAAKinI,eAE3B4C,UAAW35H,GACTlQ,KAAKumI,MAAM,UAAWr2H,IAExBuzJ,aAAc3sJ,GACZ,GAAIA,EAAI9N,OAASoR,OAAOpa,KAAK8iK,gBAAiB,OAAOhsJ,EACrD,MAAMstJ,EAAmBn1J,KAAKC,OAAOkL,OAAOpa,KAAK8iK,gBAAkB,GAAK,GACxE,MAAO,GAAGhsJ,EAAIxI,MAAM,EAAG81J,MAAqBttJ,EAAIxI,MAAMwI,EAAI9N,OAASo7J,U,2ECnRzE,MAAMC,EAAc,CAAC,KAAM,KAAM,KAAM,MAEjCC,EAAkB,KACfD,EAAY3yH,QAAO,CAAC15B,EAAO/R,KAChC+R,EAAM/R,GAAO,CACXU,KAAM,CAAC42H,QAAS/kH,OAAQ4B,QACxB2hF,SAAS,GAEJ/jF,IACN,IAPmB,GAUlBusJ,EAAc,KACXF,EAAY3yH,QAAO,CAAC15B,EAAO/R,KAChC+R,EAAM,UAAWwsJ,EAAAA,EAAAA,IAAWv+J,IAAQ,CAClCU,KAAM,CAAC6R,OAAQ4B,QACf2hF,QAAS,MAEJ/jF,IACN,IAPe,GAUdysJ,EAAa,KACVJ,EAAY3yH,QAAO,CAAC15B,EAAO/R,KAChC+R,EAAM,SAAUwsJ,EAAAA,EAAAA,IAAWv+J,IAAQ,CACjCU,KAAM,CAAC6R,OAAQ4B,QACf2hF,QAAS,MAEJ/jF,IACN,IAPc,GAUb0sJ,EAAU,CACdrqF,IAAK7tE,OAAOqC,KAAKy1J,GACjBt/G,OAAQx4C,OAAOqC,KAAK01J,GACpBr2F,MAAO1hE,OAAOqC,KAAK41J,IAGrB,SAASE,EAAiBh+J,EAA4B6H,EAAcvI,GAClE,IAAIw4F,EAAY93F,EAChB,GAAW,MAAPV,IAAuB,IAARA,EAAnB,CAGA,GAAIuI,EAAM,CACR,MAAMo2J,EAAap2J,EAAKkD,QAAQ/K,EAAM,IACtC83F,GAAa,IAAImmE,IAKnB,MAAa,QAATj+J,GAA2B,KAARV,IAAsB,IAARA,GAKrCw4F,GAAa,IAAIx4F,IACVw4F,EAAUt4F,eAJRs4F,EAAUt4F,eAOrB,MAAM0Q,EAAQ,IAAIq0B,IAElB,OAAeu1F,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,QACNhK,YAAY,EACZmY,MAAO,CACL6sJ,KAAM,CACJl+J,KAAM,CAAC42H,QAAS/kH,OAAQ4B,QACxB2hF,SAAS,MAERuoE,EACHt/G,OAAQ,CACNr+C,KAAM,CAAC6R,OAAQ4B,QACf2hF,QAAS,SAERwoE,EACHr2F,MAAO,CACLvnE,KAAM,CAAC6R,OAAQ4B,QACf2hF,QAAS,SAER0oE,EACHK,UAAW,CACTn+J,KAAM6R,OACNujF,QAAS,KACT7xF,UAAY4M,GAAa,CAAC,OAAQ,QAAS,MAAO,SAAU,WAAY,WAAW0qB,SAAS1qB,IAE9Fg6E,IAAK,CACHnqF,KAAM6R,OACNujF,QAAS,QAGb58F,OAAQ2B,GAAG,MAAEkX,EAAF,KAAS3V,EAAT,SAAeiiG,EAAf,OAAyBnkG,IAElC,IAAIkrC,EAAW,GACf,IAAK,MAAM78B,KAAQwJ,EACjBqzB,GAAY7yB,OAAQR,EAAcxJ,IAEpC,IAAIi4F,EAAY5vF,EAAM6f,IAAI2U,GAE1B,IAAKo7D,EAAW,CAGd,IAAI9/F,EACJ,IAAKA,KAHL8/F,EAAY,GAGCi+D,EACXA,EAAQ/9J,GAAMX,SAAQwI,IACpB,MAAMpK,EAAoC4T,EAAcxJ,GAClDiwF,EAAYkmE,EAAgBh+J,EAAM6H,EAAMpK,GAC1Cq6F,GAAWgI,EAAWl9F,KAAKk1F,MAInC,MAAMsmE,EAAgBt+D,EAAUj/B,MAAKi3B,GAAaA,EAAUnnE,WAAW,UAEvEmvE,EAAUl9F,KAAK,CAEb8wE,KAAM0qF,IAAkB/sJ,EAAM6sJ,KAC9B,CAAC,OAAO7sJ,EAAM6sJ,QAAS7sJ,EAAM6sJ,KAC7B,CAAC,UAAU7sJ,EAAMgtC,UAAWhtC,EAAMgtC,OAClC,CAAC,SAAShtC,EAAMk2D,SAAUl2D,EAAMk2D,MAChC,CAAC,cAAcl2D,EAAM8sJ,aAAc9sJ,EAAM8sJ,YAG3CjuJ,EAAMod,IAAIoX,EAAUo7D,GAGtB,OAAO3lG,EAAEkX,EAAM84E,KAAKo4C,EAAAA,EAAAA,IAAU7mI,EAAM,CAAE47H,MAAOx3B,IAAcnC,O,+FChIjD,SAAU0gE,EAAOn7J,GAE7B,OAAO42H,EAAAA,EAAAA,OAAW,CAChB52H,KAAM,KAAKA,IAEXhK,YAAY,EAEZmY,MAAO,CACL5K,GAAIoL,OACJs4E,IAAK,CACHnqF,KAAM6R,OACNujF,QAAS,QAIb58F,OAAQ2B,GAAG,MAAEkX,EAAF,KAAS3V,EAAT,SAAeiiG,IACxBjiG,EAAK27H,YAAe,GAAGn0H,KAAQxH,EAAK27H,aAAe,KAAM/tH,OAEzD,MAAM,MAAEirG,GAAU74G,EAClB,GAAI64G,EAAO,CAET74G,EAAK64G,MAAQ,GACb,MAAM9d,EAAU5wF,OAAOqC,KAAKqsG,GAAO/iG,QAAOjS,IAGxC,GAAY,SAARA,EAAgB,OAAO,EAE3B,MAAM9B,EAAQ82G,EAAMh1G,GAIpB,OAAIA,EAAIoxB,WAAW,UACjBj1B,EAAK64G,MAAOh1G,GAAO9B,GACZ,GAGFA,GAA0B,kBAAVA,KAGrBg5F,EAAQp0F,SAAQ3G,EAAK27H,aAAe,IAAI5gC,EAAQprF,KAAK,QAQ3D,OALIgG,EAAM5K,KACR/K,EAAKqiI,SAAWriI,EAAKqiI,UAAY,GACjCriI,EAAKqiI,SAASt3H,GAAK4K,EAAM5K,IAGpBtM,EAAEkX,EAAM84E,IAAKzuF,EAAMiiG,M,cC1ChC,EAAe2gE,EAAK,aAAav9J,OAAO,CACtCmC,KAAM,cACNhK,YAAY,EACZmY,MAAO,CACL5K,GAAIoL,OACJs4E,IAAK,CACHnqF,KAAM6R,OACNujF,QAAS,OAEXmpE,MAAO,CACLv+J,KAAM42H,QACNxhC,SAAS,IAGb58F,OAAQ2B,GAAG,MAAEkX,EAAF,KAAS3V,EAAT,SAAeiiG,IACxB,IAAIlH,EACJ,MAAM,MAAE8d,GAAU74G,EA2BlB,OA1BI64G,IAEF74G,EAAK64G,MAAQ,GACb9d,EAAU5wF,OAAOqC,KAAKqsG,GAAO/iG,QAAOjS,IAGlC,GAAY,SAARA,EAAgB,OAAO,EAE3B,MAAM9B,EAAQ82G,EAAMh1G,GAIpB,OAAIA,EAAIoxB,WAAW,UACjBj1B,EAAK64G,MAAOh1G,GAAO9B,GACZ,GAGFA,GAA0B,kBAAVA,MAIvB4T,EAAM5K,KACR/K,EAAKqiI,SAAWriI,EAAKqiI,UAAY,GACjCriI,EAAKqiI,SAASt3H,GAAK4K,EAAM5K,IAGpBtM,EACLkX,EAAM84E,KACNo4C,EAAAA,EAAAA,IAAU7mI,EAAM,CACd27H,YAAa,YACbC,MAAO7yH,MAAW,CAChB,mBAAoB4M,EAAMktJ,QACzBjkK,OAAOm8F,GAAW,MAEvBkH,O,2ECpDN,MAAM+/D,EAAc,CAAC,KAAM,KAAM,KAAM,MAEjCc,EAAY,CAAC,QAAS,MAAO,UAEnC,SAASC,EAAWtiI,EAAgB+gE,GAClC,OAAOwgE,EAAY3yH,QAAO,CAAC15B,EAAO/R,KAChC+R,EAAM8qB,GAAS0hI,EAAAA,EAAAA,IAAWv+J,IAAQ49F,IAC3B7rF,IACN,IAGL,MAAMqtJ,EAAkBvuJ,GAAa,IAAIquJ,EAAW,WAAY,WAAW3jI,SAAS1qB,GAC9EwuJ,EAAaF,EAAU,SAAS,KAAM,CAC1Cz+J,KAAM6R,OACNujF,QAAS,KACT7xF,UAAWm7J,MAGPE,EAAoBzuJ,GAAa,IAAIquJ,EAAW,gBAAiB,gBAAgB3jI,SAAS1qB,GAC1F0uJ,EAAeJ,EAAU,WAAW,KAAM,CAC9Cz+J,KAAM6R,OACNujF,QAAS,KACT7xF,UAAWq7J,MAGPE,EAAyB3uJ,GAAa,IAAIquJ,EAAW,gBAAiB,eAAgB,WAAW3jI,SAAS1qB,GAC1G4uJ,EAAoBN,EAAU,gBAAgB,KAAM,CACxDz+J,KAAM6R,OACNujF,QAAS,KACT7xF,UAAWu7J,MAGPf,EAAU,CACdnrJ,MAAO/M,OAAOqC,KAAKy2J,GACnBK,QAASn5J,OAAOqC,KAAK22J,GACrBI,aAAcp5J,OAAOqC,KAAK62J,IAGtBG,EAAW,CACftsJ,MAAO,QACPosJ,QAAS,UACTC,aAAc,iBAGhB,SAASjB,EAAiBh+J,EAA4B6H,EAAcvI,GAClE,IAAIw4F,EAAYonE,EAASl/J,GACzB,GAAW,MAAPV,EAAJ,CAGA,GAAIuI,EAAM,CAER,MAAMo2J,EAAap2J,EAAKkD,QAAQ/K,EAAM,IACtC83F,GAAa,IAAImmE,IAInB,OADAnmE,GAAa,IAAIx4F,IACVw4F,EAAUt4F,eAGnB,MAAM0Q,EAAQ,IAAIq0B,IAElB,OAAeu1F,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,QACNhK,YAAY,EACZmY,MAAO,CACL84E,IAAK,CACHnqF,KAAM6R,OACNujF,QAAS,OAEXyhC,MAAOD,QACPuoC,UAAWvoC,QACXhkH,MAAO,CACL5S,KAAM6R,OACNujF,QAAS,KACT7xF,UAAWm7J,MAEVC,EACHK,QAAS,CACPh/J,KAAM6R,OACNujF,QAAS,KACT7xF,UAAWq7J,MAEVC,EACHI,aAAc,CACZj/J,KAAM6R,OACNujF,QAAS,KACT7xF,UAAWu7J,MAEVC,GAELvmK,OAAQ2B,GAAG,MAAEkX,EAAF,KAAS3V,EAAT,SAAeiiG,IAExB,IAAIj5D,EAAW,GACf,IAAK,MAAM78B,KAAQwJ,EACjBqzB,GAAY7yB,OAAQR,EAAcxJ,IAEpC,IAAIi4F,EAAY5vF,EAAM6f,IAAI2U,GAE1B,IAAKo7D,EAAW,CAGd,IAAI9/F,EACJ,IAAKA,KAHL8/F,EAAY,GAGCi+D,EACXA,EAAQ/9J,GAAMX,SAAQwI,IACpB,MAAMpK,EAAiB4T,EAAcxJ,GAC/BiwF,EAAYkmE,EAAgBh+J,EAAM6H,EAAMpK,GAC1Cq6F,GAAWgI,EAAWl9F,KAAKk1F,MAInCgI,EAAUl9F,KAAK,CACb,aAAcyO,EAAM8tJ,UACpB,aAAc9tJ,EAAMwlH,MACpB,CAAC,SAASxlH,EAAMuB,SAAUvB,EAAMuB,MAChC,CAAC,WAAWvB,EAAM2tJ,WAAY3tJ,EAAM2tJ,QACpC,CAAC,iBAAiB3tJ,EAAM4tJ,gBAAiB5tJ,EAAM4tJ,eAGjD/uJ,EAAMod,IAAIoX,EAAUo7D,GAGtB,OAAO3lG,EACLkX,EAAM84E,KACNo4C,EAAAA,EAAAA,IAAU7mI,EAAM,CACd27H,YAAa,MACbC,MAAOx3B,IAETnC,O,wDCnIN,QAAe4mD,EAAAA,EAAAA,IAAuB,SAAU,MAAO,a,sECalD6a,E,qEASL,SAASC,EAAgBC,GACvB,MAAO,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,OAAOz+F,MAAKvhE,GAAOggK,EAASzkI,SAASv7B,KAGlF,SAASigK,EAAWvoC,GAClB,MAAQ,0CAA0CzqH,KAAKyqH,IAAS,UAAUzqH,KAAKyqH,IAASA,EAAK30H,OAAS,GAdxG,SAAK+8J,GACHA,EAAAA,UAAAA,OACAA,EAAAA,SAAAA,OACAA,EAAAA,WAAAA,OACAA,EAAAA,UAAAA,OACAA,EAAAA,SAAAA,OACAA,EAAAA,UAAAA,QANF,CAAKA,IAAAA,EAAQ,KAiBb,MAAMpnC,GAAQ1B,EAAAA,EAAAA,GACZkpC,EAAAA,EACA77B,EAAAA,EACA+C,EAAAA,EACApO,EAAAA,GAEAv3H,OAAO,CACPmC,KAAM,SAENmO,MAAO,CACLwlH,MAAOD,QACPvoF,SAAUuoF,QACV3jH,KAAM2jH,QACN1jH,MAAO0jH,QACP1gH,KAAM,CAACzC,OAAQ5B,QACfs4E,IAAK,CACHnqF,KAAM6R,OACNwyH,UAAU,EACVjvC,QAAS,MAIb+hC,SAAU,CACRsoC,SACE,OAAO,GAETC,mBACE,OAAO9oC,QACLv9H,KAAK6/H,WAAWlW,OAAS3pH,KAAK6/H,WAAW,aAK/CR,QAAS,CACPinC,UACE,IAAIC,EAAW,GAGf,OAFIvmK,KAAKu/H,OAAOxjC,UAASwqE,EAAWvmK,KAAKu/H,OAAOxjC,QAAQ,GAAGpgE,KAAM1rB,SAE1Du2J,EAAAA,EAAAA,IAAkBxmK,KAAMumK,IAEjCE,UACE,MAAMC,EAAQ,CACZC,OAAQ3mK,KAAK2mK,OACbnoC,MAAOx+H,KAAKw+H,MACZ4nC,OAAQpmK,KAAKomK,OACbQ,MAAO5mK,KAAK4mK,MACZC,OAAQ7mK,KAAK6mK,QAGTC,GAAej4J,EAAAA,EAAAA,IAAK63J,GAAO9qE,MAAK11F,GAAOwgK,EAAMxgK,KAEnD,OACG4gK,GAAgBf,EAASe,KAAkB9iC,EAAAA,EAAAA,IAAchkI,KAAK6c,OAInEkqJ,iBACE,MAAO,CACL/oC,YAAa,qBACbC,MAAO,CACL,mBAAoBj+H,KAAKg1C,SACzB,eAAgBh1C,KAAK4Z,KACrB,eAAgB5Z,KAAKqmK,iBACrB,gBAAiBrmK,KAAK6Z,MACtB,gBAAiB7Z,KAAKw9H,OAExBtiB,MAAO,CACL,eAAgBl7G,KAAKqmK,iBACrBrxH,SAAUh1C,KAAKqmK,kBAAoBrmK,KAAKg1C,SACxCruC,KAAM3G,KAAKqmK,iBAAmB,cAAWvgK,KACtC9F,KAAKstJ,QAEV/lD,GAAIvnG,KAAK6/H,aAGbmnC,oBACE,MAAM7iG,EAAWnkE,KAAKymK,UAChBQ,EAAc,IACfjnK,KAAK+mK,iBACR5xI,MAAOgvC,EAAW,CAChBA,SAAAA,EACAjrC,OAAQirC,EACRnsC,MAAOmsC,QACLr+D,GAIN,OAFA9F,KAAKknK,YAAYD,GAEVA,GAETC,YAAa7kK,GACXA,EAAK47H,MAAQ,IAAK57H,EAAK47H,SAAUj+H,KAAKykI,cACtCzkI,KAAKggI,aAAahgI,KAAK6yB,MAAOxwB,IAEhC8kK,eAAgBxpC,EAAc78H,GAC5B,MAAMsmK,EAA6B,GAC7B/kK,EAAOrC,KAAK+mK,iBAElB,IAAId,EAAW,iBAGf,MAAMoB,EAAiB1pC,EAAK54H,QAAQ,KAC9BuiK,EAAiBD,IAAmB,EAEtCC,EAEFF,EAAY79J,KAAKo0H,IAEjBsoC,EAAWtoC,EAAKrvH,MAAM,EAAG+4J,GACrBrB,EAAeC,KAAWA,EAAW,KAG3C5jK,EAAK47H,MAAMgoC,IAAY,EACvB5jK,EAAK47H,MAAMN,IAAS2pC,EAEpB,MAAMnjG,EAAWnkE,KAAKymK,UAKtB,OAJItiG,IAAU9hE,EAAK8yB,MAAQ,CAAEgvC,SAAAA,IAE7BnkE,KAAKknK,YAAY7kK,GAEVvB,EAAEd,KAAKqmK,iBAAmB,SAAWrmK,KAAK8wF,IAAKzuF,EAAM+kK,IAE9DG,cAAe5pC,EAAc78H,GAC3B,MAAM0mK,EAAqB,CACzBvpC,MAAO,cACP/iB,MAAO,CACL4xB,MAAO,6BACPC,QAAS,YACTnN,KAAM,MACN,eAAe,IAIb/iH,EAAO7c,KAAKymK,UASlB,OARI5pJ,IACF2qJ,EAAQryI,MAAQ,CACdgvC,SAAUtnD,EACVqc,OAAQrc,EACRmb,MAAOnb,IAIJ/b,EAAEd,KAAKqmK,iBAAmB,SAAW,OAAQrmK,KAAKgnK,oBAAqB,CAC5ElmK,EAAE,MAAO0mK,EAAS,CAChB1mK,EAAE,OAAQ,CACRo6G,MAAO,CACLz3F,EAAGk6G,UAMb8pC,uBACE9pC,EACA78H,GAEA,MAAMuB,EAAkB,CACtB47H,MAAO,CACL,qBAAqB,IAInBphH,EAAO7c,KAAKymK,UACd5pJ,IACFxa,EAAK8yB,MAAQ,CACXgvC,SAAUtnD,EACVqc,OAAQrc,EACRmb,MAAOnb,IAIX7c,KAAKknK,YAAY7kK,GAEjB,MAAMokE,EAAYk3D,EAAKl3D,UAIvB,OAHApkE,EAAK2V,MAAQ2lH,EAAK3lH,MAClB3V,EAAKqlK,SAAWrlK,EAAKklG,GAEdzmG,EAAEd,KAAKqmK,iBAAmB,SAAW,OAAQrmK,KAAKgnK,oBAAqB,CAC5ElmK,EAAE2lE,EAAWpkE,OAKnBlD,OAAQ2B,GACN,MAAM68H,EAAO39H,KAAKsmK,UAElB,MAAoB,kBAAT3oC,EACLuoC,EAAUvoC,GACL39H,KAAKunK,cAAc5pC,EAAM78H,GAE3Bd,KAAKmnK,eAAexpC,EAAM78H,GAG5Bd,KAAKynK,uBAAuB9pC,EAAM78H,MAI7C,MAAe2/H,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,SAEN89J,aAAchpC,EAEd9+H,YAAY,EAEZV,OAAQ2B,GAAG,KAAEuB,EAAF,SAAQiiG,IACjB,IAAIiiE,EAAW,GAcf,OAXIlkK,EAAKqiI,WACP6hC,EAAWlkK,EAAKqiI,SAAS9zB,aACvBvuG,EAAKqiI,SAASl+B,WACd+/D,SAIKlkK,EAAKqiI,SAAS9zB,mBACdvuG,EAAKqiI,SAASl+B,WAGhB1lG,EAAE69H,EAAOt8H,EAAMkkK,EAAW,CAACA,GAAYjiE,O,+CCxPlD,OAAeq6B,EAAf,G,oGCSA,GAAe1B,EAAAA,EAAAA,GAAOsN,EAAAA,GAAY7iI,OAAO,CACvCmC,KAAM,eAENmO,MAAO,CACL8xB,YAAa,CAACtxB,OAAQ4B,QACtB2sH,aAAcvuH,QAGhBslH,SAAU,CACR8pC,sBACE,OAAOxtJ,OAAOpa,KAAK8pC,cAErB+9H,cACE,OAAO7nK,KAAK4nK,oBACR,CAAEtsG,cAAgB,EAAIt7D,KAAK4nK,oBAAuB,IAAM,UACxD9hK,GAENgiK,gBACE,OAAK9nK,KAAK6nK,YAEH7nK,KAAKo+H,eAAe,MAAO,CAChCjpG,MAAOn1B,KAAK6nK,YACZ7pC,YAAa,wBAJe,KASlCqB,QAAS,CACPI,aACE,OAAOz/H,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,wBACbC,MAAOj+H,KAAK+mI,cACX/mI,KAAKu/H,OAAOxjC,WAInB58F,OAAQ2B,GACN,OAAOA,EAAE,MAAO,CACdk9H,YAAa,eACb7oG,MAAOn1B,KAAK2qI,iBACZpjC,GAAIvnG,KAAK4qI,YACR,CACD5qI,KAAK8nK,cACL9nK,KAAKy/H,kBCpDX,I,8BC0BA,MAAMsoC,EAAiC,qBAAX3zJ,QAA0B,yBAA0BA,OAGhF,OAAe6oH,EAAAA,EAAAA,GACb+qC,EACA/oC,EAAAA,GACAv3H,OAAO,CACPmC,KAAM,QAENi2H,WAAY,CAAEjqG,UAAAA,EAAAA,GAEd7d,MAAO,CACLiwJ,IAAKzvJ,OACL0vJ,QAAS3qC,QACT4qC,MAAO5qC,QACP6qC,SAAU5vJ,OACV6vJ,QAAS7vJ,OACT7Y,QAAS,CACPgH,KAAM6F,OAGNuvF,QAAS,KAAM,CACb7nE,UAAMpuB,EACNwiK,gBAAYxiK,EACZm9H,eAAWn9H,KAGfyS,SAAU,CACR5R,KAAM6R,OACNujF,QAAS,iBAEX2qE,MAAOluJ,OACPopF,IAAK,CACHj7F,KAAM,CAAC6R,OAAQhM,QACfuvF,QAAS,IAEXwsE,OAAQ/vJ,OACRslC,WAAY,CACVn3C,KAAM,CAAC42H,QAAS/kH,QAChBujF,QAAS,oBAIb15F,OACE,MAAO,CACLmmK,WAAY,GACZh0D,MAAO,KACPi0D,WAAW,EACXC,2BAAuB5iK,EACvB6iK,kBAAc7iK,EACdmnJ,UAAU,IAIdnvB,SAAU,CACR8pC,sBACE,OAAOxtJ,OAAOpa,KAAK4oK,cAAcC,QAAU7oK,KAAK0oK,wBAElDE,gBACE,OAAO5oK,KAAK4hG,KAA2B,kBAAb5hG,KAAK4hG,IAC3B,CACAA,IAAK5hG,KAAK4hG,IAAIA,IACd2mE,OAAQvoK,KAAKuoK,QAAUvoK,KAAK4hG,IAAI2mE,OAChCF,QAASroK,KAAKqoK,SAAWroK,KAAK4hG,IAAIymE,QAClCQ,OAAQzuJ,OAAOpa,KAAK8pC,aAAe9pC,KAAK4hG,IAAIinE,SAC1C,CACFjnE,IAAK5hG,KAAK4hG,IACV2mE,OAAQvoK,KAAKuoK,OACbF,QAASroK,KAAKqoK,QACdQ,OAAQzuJ,OAAOpa,KAAK8pC,aAAe,KAGzCg/H,gBACE,KAAM9oK,KAAK4oK,cAAchnE,KAAO5hG,KAAK4oK,cAAcP,SAAWroK,KAAKooK,UAAW,MAAO,GAErF,MAAMW,EAA4B,GAC5BnnE,EAAM5hG,KAAKyoK,UAAYzoK,KAAK4oK,cAAcP,QAAUroK,KAAKwoK,WAE3DxoK,KAAKooK,UAAUW,EAAgBx/J,KAAK,mBAAmBvJ,KAAKooK,aAC5DxmE,GAAKmnE,EAAgBx/J,KAAK,QAAQq4F,OAEtC,MAAM4S,EAAQx0G,KAAKo+H,eAAe,MAAO,CACvCJ,YAAa,iBACbC,MAAO,CACL,0BAA2Bj+H,KAAKyoK,UAChC,0BAA2BzoK,KAAKkoK,QAChC,yBAA0BloK,KAAKkoK,SAEjC/yI,MAAO,CACL4zI,gBAAiBA,EAAgB/2J,KAAK,MACtCg3J,mBAAoBhpK,KAAKuY,UAE3BrS,KAAMlG,KAAKyoK,YAIb,OAAKzoK,KAAK89C,WAEH99C,KAAKo+H,eAAe,aAAc,CACvCljB,MAAO,CACLrxG,KAAM7J,KAAK89C,WACXloB,KAAM,WAEP,CAAC4+E,IAPyBA,IAWjC2sB,MAAO,CACLv/B,MAEO5hG,KAAKyoK,UACLzoK,KAAKipK,YADWjpK,KAAKs8D,UAAKx2D,OAAWA,GAAW,IAGvD,4BAA6B,UAG/Bs7H,UACEphI,KAAKs8D,QAGP+iE,QAAS,CACP/iE,KACE/H,EACAF,EACA64E,GAKA,IACE66B,GACC76B,GACAltI,KAAKmoK,MAHR,CAMA,GAAInoK,KAAK4oK,cAAcP,QAAS,CAC9B,MAAMa,EAAU,IAAI1tC,MACpB0tC,EAAQtnE,IAAM5hG,KAAK4oK,cAAcP,QACjCroK,KAAKmpK,YAAYD,EAAS,MAGxBlpK,KAAK4oK,cAAchnE,KAAK5hG,KAAKipK,cAEnCG,SACEppK,KAAKqpK,SACLrpK,KAAKyoK,WAAY,EACjBzoK,KAAKumI,MAAM,OAAQvmI,KAAK4hG,KAGtB5hG,KAAKw0G,QACJx0G,KAAK4oK,cAAchnE,IAAIpsF,SAAS,SAAWxV,KAAK4oK,cAAchnE,IAAItqE,WAAW,yBAE1Et3B,KAAKw0G,MAAM80D,eAAiBtpK,KAAKw0G,MAAMm0D,cACzC3oK,KAAK2oK,aAAe3oK,KAAKw0G,MAAMm0D,aAC/B3oK,KAAK0oK,sBAAwB1oK,KAAKw0G,MAAMm0D,aAAe3oK,KAAKw0G,MAAM80D,eAElEtpK,KAAK0oK,sBAAwB,IAInCa,UACEvpK,KAAKitJ,UAAW,EAChBjtJ,KAAKumI,MAAM,QAASvmI,KAAK4hG,MAE3BynE,SAEMrpK,KAAKw0G,QAAOx0G,KAAKwoK,WAAaxoK,KAAKw0G,MAAMg0D,YAAcxoK,KAAKw0G,MAAM5S,MAExEqnE,YACE,MAAMz0D,EAAQ,IAAIgnB,MAClBx7H,KAAKw0G,MAAQA,EAEbA,EAAMiV,OAAS,KAETjV,EAAMg1D,OACRh1D,EAAMg1D,SAASC,OAAOplK,KACpBg9H,EAAAA,EAAAA,IAEE,2DAAQrhI,KAAK4oK,cAAchnE,OAC1Bv9F,EAAI8E,QAAU,qBAAqB9E,EAAI8E,UAAY,IACpDnJ,SAED4I,KAAK5I,KAAKopK,QAEbppK,KAAKopK,UAGT50D,EAAMrvG,QAAUnF,KAAKupK,QAErBvpK,KAAKitJ,UAAW,EAChBjtJ,KAAK0mK,QAAUlyD,EAAMkyD,MAAQ1mK,KAAK0mK,OAClC1mK,KAAK4oK,cAAcL,SAAW/zD,EAAM+zD,OAASvoK,KAAK4oK,cAAcL,QAChE/zD,EAAM5S,IAAM5hG,KAAK4oK,cAAchnE,IAC/B5hG,KAAKumI,MAAM,YAAavmI,KAAK4oK,cAAchnE,KAE3C5hG,KAAK8pC,aAAe9pC,KAAKmpK,YAAY30D,GACrCx0G,KAAKqpK,UAEPF,YAAaxe,EAAuBhmJ,EAAyB,KAC3D,MAAM+kK,EAAO,KACX,MAAM,cAAEJ,EAAF,aAAiBX,GAAiBhe,EAEpC2e,GAAiBX,GACnB3oK,KAAK2oK,aAAeA,EACpB3oK,KAAK0oK,sBAAwBC,EAAeW,GAClC3e,EAAIt5G,WAAYrxC,KAAKyoK,WAAczoK,KAAKitJ,UAAuB,MAAXtoJ,GAC9DK,WAAW0kK,EAAM/kK,IAIrB+kK,KAEFjqC,aACE,MAAM5nH,EAAiBmwJ,EAAAA,QAAAA,QAAAA,WAAAA,KAA4ChoK,MAOnE,OANIA,KAAK2oK,cACP3oK,KAAKmkI,GAAGtsH,EAAQxV,KAAO,MAAO,CAC5B8yB,MAAO,CAAE6C,MAAO,GAAGh4B,KAAK2oK,oBAIrB9wJ,GAET8xJ,mBACE,GAAI3pK,KAAKu/H,OAAOp3B,YAAa,CAC3B,MAAMA,EAAcnoG,KAAKyoK,UACrB,CAACzoK,KAAKo+H,eAAe,MAAO,CAC5BJ,YAAa,wBACZh+H,KAAKu/H,OAAOp3B,cACb,GAEJ,OAAKnoG,KAAK89C,WAEH99C,KAAKo+H,eAAe,aAAc,CACvCpmH,MAAO,CACLmoJ,QAAQ,EACRt2J,KAAM7J,KAAK89C,aAEZqqD,GAP0BA,EAAY,MAY/ChpG,OAAQ2B,GACN,MAAMkzB,EAAOg0I,EAAAA,QAAAA,OAAAA,KAAgChoK,KAAMc,GAE7CuB,GAAO6mI,EAAAA,EAAAA,IAAUl1G,EAAK3xB,KAAO,CACjC27H,YAAa,UACb9iB,MAAO,CACL,aAAcl7G,KAAKioK,IACnBroC,KAAM5/H,KAAKioK,IAAM,WAAQniK,GAE3Bm4H,MAAOj+H,KAAKykI,aAGZ3E,WAAYioC,EACR,CAAC,CACDl+J,KAAM,YACNu2H,UAAW,CAAEh1B,MAAM,GACnBhnG,MAAO,CACLyoD,QAAS7sD,KAAKs8D,KACd38D,QAASK,KAAKL,gBAGhBmG,IAUN,OAPAkuB,EAAKswE,SAAW,CACdtkG,KAAK8nK,cACL9nK,KAAK8oK,cACL9oK,KAAK2pK,mBACL3pK,KAAKy/H,cAGA3+H,EAAEkzB,EAAK88D,IAAKzuF,EAAM2xB,EAAKswE,c,iIC9RlC,GAAe24B,EAAAA,EAAAA,GAAOqN,EAAAA,EAAWrL,EAAAA,GAAWv3H,OAAO,CACjDmC,KAAM,aAENmO,MAAO,CACL5T,MAAO,CACLuC,KAAMyE,MACN2wF,QAAS,IAAO,KAIpBsjC,QAAS,CACPuqC,cACE,OAAO5pK,KAAKo+H,eAAe,mBAAoB,CAC7CJ,YAAa,sBACb9iB,MAAO,CACLrxG,KAAM,qBACNinF,IAAK,QAEN9wF,KAAKoE,MAAMqX,IAAIzb,KAAK6pK,cAEzBA,WAAY1gK,EAAiBjD,GAC3B,OAAOlG,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,sBACb93H,IAAAA,IACC2lI,EAAAA,EAAAA,IAAQ7rI,KAAM,UAAW,CAAEmJ,QAAAA,EAASjD,IAAAA,KAAU,CAACiD,MAItDhK,OAAQ2B,GACN,OAAOA,EAAE,MAAOd,KAAKggI,aAAahgI,KAAK6yB,MAAO,CAC5CmrG,YAAa,aACbC,MAAOj+H,KAAKykI,eACV,CAACzkI,KAAK4pK,mBC7Cd,I,8BCsBA,MAAMloC,GAAazE,EAAAA,EAAAA,GACjBkpC,EAAAA,EACA2D,EAAAA,GASF,MAAepoC,EAAWh6H,SAAkBA,OAAO,CACjDmC,KAAM,UAENsyJ,cAAc,EAEdnkJ,MAAO,CACL+xJ,WAAYvxJ,OACZgc,gBAAiB,CACf7tB,KAAM6R,OACNujF,QAAS,IAEXyhC,MAAOD,QACPrkG,OAAQ,CAAC9e,OAAQ5B,QACjBi5I,YAAa,CAACl0B,QAAS/kH,QACvBwxJ,gBAAiBzsC,QACjB0sC,KAAMzxJ,OACNpL,GAAIoL,OACJwkC,MAAOxkC,OACPo1H,QAASrQ,QACT2sC,eAAgB3sC,QAChBolC,YAAanqJ,OACbpU,MAAO,MAGT/B,OACE,MAAO,CACL0pJ,UAAW/rJ,KAAKoE,MAChB+lK,cAAc,IAIlBrsC,SAAU,CACR1gC,UACE,MAAO,CACL,qBAAsBp9F,KAAKoqK,SAC3B,yBAA0BpqK,KAAKqqK,YAC/B,2BAA4BrqK,KAAKojK,cACjC,oBAAqBpjK,KAAKymI,QAC1B,uBAAwBzmI,KAAKmsJ,WAC7B,sBAAuBnsJ,KAAK6mI,UAE5B,uBAAwC,IAAjB7mI,KAAK4tI,SAAqC,MAAhB5tI,KAAK4tI,QACtD,uBAAwB5tI,KAAK8gK,WAC7B,iBAAkB9gK,KAAKw9H,MACvB,6BAA8Bx9H,KAAKgqK,mBAChChqK,KAAKykI,eAGZ6nB,aACE,OAAOtsJ,KAAKoN,IAAM,SAASpN,KAAKsgI,QAElCgqC,aACE,OAAOtqK,KAAKuqK,kBAAkBvhK,OAAS,GAEzCwhK,UACE,OAAQxqK,KAAKyqK,eACTzqK,KAAKiqK,OACNjqK,KAAKkqK,gBAAkBlqK,KAAK6mI,YAEjCy8B,WACE,SAAUtjK,KAAKu/H,OAAOviF,QAASh9C,KAAKg9C,QAMtCiqF,cAAe,CACbvwG,MACE,OAAO12B,KAAK+rJ,WAEd93H,IAAKhuB,GACHjG,KAAK+rJ,UAAY9lJ,EACjBjG,KAAKumI,MAAMvmI,KAAK0qK,aAAczkK,KAGlCwgI,UACE,QAASzmI,KAAK+rJ,WAEhBqX,gBACE,OAAOpjK,KAAKymI,SAEd8jC,oBACE,OAAIvqK,KAAKwqK,QAAgB,CAACxqK,KAAKiqK,MAE1BjqK,KAAKyqK,YAEHzqK,KAAK2qK,YAAYlvJ,KAAKmvJ,IAC3B,GAA0B,kBAAfA,EAAyB,OAAOA,EAE3C,MAAMC,EAAmBD,EAAW5qK,KAAKinI,eAEzC,MAAmC,kBAArB4jC,EAAgCA,EAAmB,MAChE1yJ,QAAOhP,GAAuB,KAAZA,IARS,IAUhCkhK,cACE,OAA4B,IAArBrqK,KAAKyxJ,aAA+C,SAArBzxJ,KAAKyxJ,aAA0BzxJ,KAAKsqK,aAI9EnpC,MAAO,CACL/8H,MAAO6B,GACLjG,KAAK+rJ,UAAY9lJ,IAIrBjF,eAGEhB,KAAK0qK,aAAgB1qK,KAAKU,SAASgrJ,OAAS1rJ,KAAKU,SAASgrJ,MAAMl6G,OAAU,SAG5E6tF,QAAS,CACPI,aACE,MAAO,CACLz/H,KAAK8jK,iBACL9jK,KAAK4jK,aACL5jK,KAAK8qK,kBAGTlH,aACE,OAAO5jK,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,mBACb9iB,MAAO,CAAE50D,MAAOtmD,KAAKstJ,OAAOhnG,QAC3B,CACDtmD,KAAKqpI,eACLrpI,KAAK+qK,iBAGTxd,iBACE,MAAO,CACLvtJ,KAAKqsJ,WACLrsJ,KAAKu/H,OAAOxjC,UAGhB81D,QACElrJ,EACA8qC,EACAu5H,EAAuB,IAEvB,MAAMrtC,EAAQ39H,KAAa,GAAG2G,SACxBunG,EAAY,UAAS+8D,EAAAA,EAAAA,IAAUtkK,KAC/BukK,KAAiBlrK,KAAK6/H,WAAW3xB,KAAcz8D,GAE/CpvC,GAAO6mI,EAAAA,EAAAA,IAAU,CACrBhuB,MAAO,CACL,aAAcgwD,GAAcD,EAAAA,EAAAA,IAAUtkK,GAAM+N,MAAM,KAAK,GAAK,aAAU5O,EACtE+sB,MAAO7yB,KAAKosJ,gBACZ7nB,KAAMvkI,KAAKukI,KACXvvF,SAAUh1C,KAAKmsJ,WACf3nB,MAAOxkI,KAAKwkI,OAEdj9B,GAAK2jE,EAED,CACAvhD,MAAQz5G,IACNA,EAAE4uG,iBACF5uG,EAAE0/H,kBAEF5vI,KAAKumI,MAAMr4B,EAAWh+F,GACtBuhC,GAAMA,EAAGvhC,IAIX6xJ,QAAU7xJ,IACRA,EAAE4uG,iBACF5uG,EAAE0/H,yBAbJ9pI,GAgBHklK,GAEH,OAAOhrK,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,gBACbC,MAAOt3H,EAAO,mBAAkBskK,EAAAA,EAAAA,IAAUtkK,UAAUb,GACnD,CACD9F,KAAKo+H,eACHO,EAAAA,EACAt8H,EACAs7H,MAIN0L,eACE,OAAOrpI,KAAKo+H,eAAe,MAAOp+H,KAAKk+H,mBAAmBl+H,KAAKw0B,gBAAiB,CAC9EwpG,YAAa,gBACb7oG,MAAO,CAAE+D,QAAQ8qG,EAAAA,EAAAA,IAAchkI,KAAKk5B,SACpCquE,GAAI,CACFoiB,MAAO3pH,KAAKi2B,QACZ6rI,UAAW9hK,KAAKmrK,YAChBpJ,QAAS/hK,KAAKorK,WAEhB5mE,IAAK,eACH,CAACxkG,KAAKutJ,oBAEZlB,WACE,OAAKrsJ,KAAKsjK,SAEHtjK,KAAKo+H,eAAeitC,EAAAA,EAAQ,CACjCrzJ,MAAO,CACL6a,MAAO7yB,KAAKosJ,gBACZ7nB,KAAMvkI,KAAKukI,KACXvvF,SAAUh1C,KAAKmsJ,WACfmf,QAAStrK,KAAKoqK,SACdmB,IAAKvrK,KAAKssJ,WACV9nB,MAAOxkI,KAAKwkI,QAEbxkI,KAAKu/H,OAAOviF,OAASh9C,KAAKg9C,OAXF,MAa7B+tH,cACE,OAAK/qK,KAAKqqK,YAEHrqK,KAAKo+H,eAAeotC,EAAW,CACpCxzJ,MAAO,CACL6a,MAAO7yB,KAAKwqK,QAAU,GAAKxqK,KAAKosJ,gBAChC7nB,KAAMvkI,KAAKukI,KACXC,MAAOxkI,KAAKwkI,MACZpgI,MAAOpE,KAAKuqK,mBAEdrvD,MAAO,CACL0kB,KAAM5/H,KAAKyqK,YAAc,QAAU,MAErCjgB,YAAa,CACXzuD,QAAS/jF,IAAS6zH,EAAAA,EAAAA,IAAQ7rI,KAAM,UAAWgY,MAbjB,MAiBhC+rJ,QACEp9J,EACA0N,EACAi1H,GAEA,IAAKA,EAAKtgI,OAAQ,OAAO,KAEzB,MAAMw7F,EAAM,GAAG79F,KAAQ0N,IAEvB,OAAOrU,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,YAAYx5B,IACzBA,IAAAA,GACC8kC,IAELw6B,iBACE,MAAMx6B,EAAO,GAQb,OANItpI,KAAKu/H,OAAOC,QACd8J,EAAK//H,KAAKvJ,KAAKu/H,OAAOC,SACbx/H,KAAK2iK,aACdr5B,EAAK//H,KAAKvJ,KAAK6xJ,QAAQ,YAGlB7xJ,KAAK+jK,QAAQ,UAAW,QAASz6B,IAE1CwhC,gBACE,MAAMxhC,EAAO,GAYb,OANItpI,KAAKu/H,OAAO5pH,OACd2zH,EAAK//H,KAAKvJ,KAAKu/H,OAAO5pH,QACb3V,KAAK+pK,YACdzgC,EAAK//H,KAAKvJ,KAAK6xJ,QAAQ,WAGlB7xJ,KAAK+jK,QAAQ,SAAU,QAASz6B,IAEzCrzG,QAAS/lB,GACPlQ,KAAKumI,MAAM,QAASr2H,IAEtBi7J,YAAaj7J,GACXlQ,KAAKmqK,cAAe,EACpBnqK,KAAKumI,MAAM,YAAar2H,IAE1Bk7J,UAAWl7J,GACTlQ,KAAKmqK,cAAe,EACpBnqK,KAAKumI,MAAM,UAAWr2H,KAI1B/Q,OAAQ2B,GACN,OAAOA,EAAE,MAAOd,KAAKggI,aAAahgI,KAAKosJ,gBAAiB,CACtDpuB,YAAa,UACbC,MAAOj+H,KAAKo9F,UACVp9F,KAAKy/H,iBC3Tb,K,wHCmBO,MAAMuiC,GAAgB/kC,EAAAA,EAAAA,GAC3BwuB,EAAAA,EACAggB,EAAAA,EACAxsC,EAAAA,GACAv3H,OAAO,CACPmC,KAAM,kBAENmO,MAAO,CACLw1H,YAAa,CACX7mI,KAAM6R,OACNujF,QAAS,kBAEX2vE,UAAWnuC,QACXn+G,IAAK,CACHzY,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,MAEX4qC,SAAUpJ,QACVzsC,IAAK,CACHnqF,KAAM6R,OACNujF,QAAS,QAIb15F,OACE,MAAO,CAILspK,uBAAkC7lK,IAAf9F,KAAKoE,MACpBpE,KAAKoE,MACLpE,KAAK2mI,SAAW,QAAK7gI,EACzBq6B,MAAO,KAIX29F,SAAU,CACR1gC,UACE,MAAO,CACL,gBAAgB,KACbp9F,KAAKykI,eAGZ5gB,gBACE,OAAQ7jH,KAAKkmI,cAAgBlmI,KAAKmgC,MAAMp7B,QAAQ/E,KAAKkmI,gBAAmB,GAE1EA,eACE,IAAIlmI,KAAK2mI,SAET,OAAO3mI,KAAK4lI,cAAc,IAE5BA,gBACE,OAAO5lI,KAAKmgC,MAAMhoB,QAAO,CAAC2E,EAAMtT,IACvBxJ,KAAKqiK,aAAariK,KAAK6lI,SAAS/oH,EAAMtT,OAGjDm8H,iBACE,OAA0B,MAAtB3lI,KAAKinI,cAA8B,GAEhC77H,MAAMiD,QAAQrO,KAAKinI,eACtBjnI,KAAKinI,cACL,CAACjnI,KAAKinI,gBAEZo7B,eACE,IAAKriK,KAAK2mI,SACR,OAAQ90H,GAAW7R,KAAKgnI,gBAAgBhnI,KAAKinI,cAAep1H,GAG9D,MAAMo1H,EAAgBjnI,KAAKinI,cAC3B,OAAI77H,MAAMiD,QAAQ44H,GACRp1H,GAAWo1H,EAAcz/D,MAAKokG,GAAU5rK,KAAKgnI,gBAAgB4kC,EAAQ/5J,KAGxE,KAAM,IAIjBsvH,MAAO,CACL8F,cAAe,mBACf9mG,MAAO,oBAGT++F,UACMl/H,KAAK2mI,WAAav7H,MAAMiD,QAAQrO,KAAKinI,iBACvC5F,EAAAA,EAAAA,IAAY,oEAAqErhI,OAIrFq/H,QAAS,CAEPwsC,UACE,MAAO,CACL5tC,MAAOj+H,KAAKo9F,UAGhByoC,SAAU/oH,EAAyBhU,GACjC,YAAsBhD,IAAfgX,EAAK1Y,MACR0E,EACAgU,EAAK1Y,OAEX6xB,QAASnZ,GACP9c,KAAK8rK,oBACH9rK,KAAK6lI,SAAS/oH,EAAM9c,KAAKmgC,MAAMp7B,QAAQ+X,MAG3CynD,SAAUznD,GACR,MAAMtT,EAAQxJ,KAAKmgC,MAAM52B,KAAKuT,GAAQ,EAEtCA,EAAKqkJ,IAAI,UAAU,IAAMnhK,KAAKi2B,QAAQnZ,KAIlC9c,KAAK0rK,YAAc1rK,KAAK2lI,eAAe38H,QACzChJ,KAAK+rK,kBAGP/rK,KAAKmiK,WAAWrlJ,EAAMtT,IAExBm7D,WAAY7nD,GACV,GAAI9c,KAAKi/J,aAAc,OAEvB,MAAMz1J,EAAQxJ,KAAKmgC,MAAMp7B,QAAQ+X,GAC3B1Y,EAAQpE,KAAK6lI,SAAS/oH,EAAMtT,GAElCxJ,KAAKmgC,MAAM12B,OAAOD,EAAO,GAEzB,MAAMwiK,EAAahsK,KAAK2lI,eAAe5gI,QAAQX,GAG/C,KAAI4nK,EAAa,GAAjB,CAGA,IAAKhsK,KAAK0rK,UACR,OAAO1rK,KAAK8rK,oBAAoB1nK,GAI9BpE,KAAK2mI,UAAYv7H,MAAMiD,QAAQrO,KAAKinI,eACtCjnI,KAAKinI,cAAgBjnI,KAAKinI,cAAc9uH,QAAOtG,GAAKA,IAAMzN,IAE1DpE,KAAKinI,mBAAgBnhI,EAMlB9F,KAAK4lI,cAAc58H,QACtBhJ,KAAK+rK,iBAAgB,KAGzB5J,WAAYrlJ,EAAyBtT,GACnC,MAAMpF,EAAQpE,KAAK6lI,SAAS/oH,EAAMtT,GAElCsT,EAAKonG,SAAWlkH,KAAKqiK,aAAaj+J,IAGpC6nK,mBACEjsK,KAAKwhI,WAAU,KACb,GAAIxhI,KAAK0rK,YACN1rK,KAAK4lI,cAAc58H,OAEpB,OAAOhJ,KAAK+rK,kBAMd/rK,KAAKmgC,MAAMn6B,QAAQhG,KAAKmiK,gBAG5B2J,oBAAqB1nK,GACnBpE,KAAK2mI,SACD3mI,KAAKksK,eAAe9nK,GACpBpE,KAAKmsK,aAAa/nK,IAExB2nK,gBAAiB59H,GACf,IAAKnuC,KAAKmgC,MAAMn3B,OAAQ,OAExB,MAAMm3B,EAAQngC,KAAKmgC,MAAM7xB,QAErB6/B,GAAMhO,EAAMplB,UAEhB,MAAM+B,EAAOqjB,EAAMy7D,MAAK9+E,IAASA,EAAKk4B,WAItC,IAAKl4B,EAAM,OAEX,MAAMtT,EAAQxJ,KAAKmgC,MAAMp7B,QAAQ+X,GAEjC9c,KAAK8rK,oBACH9rK,KAAK6lI,SAAS/oH,EAAMtT,KAGxB0iK,eAAgB9nK,GACd,MAAMmW,EAAenP,MAAMiD,QAAQrO,KAAKinI,eACpCjnI,KAAKinI,cACL,GACEA,EAAgB1sH,EAAajM,QAC7B9E,EAAQy9H,EAAc1jE,WAAUt9D,GAAOA,IAAQ7B,IAGnDpE,KAAK0rK,WAELliK,GAAS,GAETy9H,EAAcj+H,OAAS,EAAI,GAKf,MAAZhJ,KAAKof,KAEL5V,EAAQ,GAERy9H,EAAcj+H,OAAS,EAAIhJ,KAAKof,MAGlC5V,GAAS,EACLy9H,EAAcx9H,OAAOD,EAAO,GAC5By9H,EAAc19H,KAAKnF,GAEvBpE,KAAKinI,cAAgBA,IAEvBklC,aAAc/nK,GACZ,MAAMgoK,EAAShoK,IAAUpE,KAAKinI,cAE1BjnI,KAAK0rK,WAAaU,IAEtBpsK,KAAKinI,cAAgBmlC,OAAStmK,EAAY1B,KAI9CjF,OAAQ2B,GACN,OAAOA,EAAEd,KAAK8wF,IAAK9wF,KAAK6rK,UAAW7rK,KAAKu/H,OAAOxjC,YAIpCimE,EAAct6J,OAAO,CAClCmC,KAAM,eAENk4H,UACE,MAAO,CACLsqC,UAAWrsK,U,8GC1PjB,GAAei9H,EAAAA,EAAAA,GAAOgC,EAAAA,GAAWv3H,OAAO,CACtCmC,KAAM,UAENhK,YAAY,EAEZmY,MAAO,CACL4qH,SAAUrF,QACV1qG,MAAO,CACLlsB,KAAM6R,OACNujF,QAAS,WAEX/mD,SAAUuoF,QACV+tC,QAAS/tC,QACTguC,IAAK/yJ,OACLoB,KAAM,CACJjT,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GAEXliF,MAAO,CACLlT,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,QAEX33F,MAAOm5H,SAGTp+H,OAAQ2B,EAAGy0B,GACT,MAAM,SAAE+uE,EAAF,UAAY3kE,EAAZ,MAAuB3nB,GAAUud,EACjClzB,EAAO,CACX27H,YAAa,UACbC,MAAO,CACL,kBAAmBjmH,EAAM5T,MACzB,uBAAwB4T,EAAMg9B,aAC3Bs3H,EAAAA,EAAAA,GAAuB/2I,IAE5B2lF,MAAO,CACLqwD,IAAKvzJ,EAAMuzJ,IACX,eAAgBvzJ,EAAMuzJ,KAExBhkE,GAAI5nE,EACJxK,MAAO,CACLvb,MAAMoqH,EAAAA,EAAAA,IAAchsH,EAAM4B,MAC1BC,OAAOmqH,EAAAA,EAAAA,IAAchsH,EAAM6B,OAC3BtB,SAAUP,EAAM4qH,SAAW,WAAa,YAE1Cp+B,IAAK,SAGP,OAAO1jG,EAAE,QAASwpI,EAAAA,EAAAA,QAAAA,QAAAA,aAAuCtyH,EAAMszJ,SAAWtzJ,EAAM6a,MAAOxwB,GAAOiiG,MC3DlG,K,gFCeA,EAAe44B,EAAAA,EAAAA,SAAyBx1H,OAAO,CAC7CmC,KAAM,SAENk4H,UACE,MAAO,CACLwqC,UAAU,EACV93D,KAAMz0G,OAIVwsK,OAAQ,CACNC,SAAU,CACR1wE,SAAS,GAEX2wE,QAAS,CACP3wE,SAAS,IAIb/jF,MAAO,CACLwlH,MAAOD,QACPvoF,SAAUuoF,QACV02B,OAAQ12B,QACRmtB,KAAMntB,QACNovC,IAAKpvC,QACLx+G,QAASw+G,QACTqvC,UAAWrvC,QACXsvC,UAAWtvC,QACXuvC,QAASvvC,SAGXl7H,KAAM,KAAM,CACVw0H,OAAQ,KAGViH,SAAU,CACR1gC,UACE,MAAO,IACF8/B,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAqCl9H,MACxC,gBAAiBA,KAAKw9H,MACtB,mBAAoBx9H,KAAKg1C,SACzB,eAAgBh1C,KAAK0qJ,KACrB,cAAe1qJ,KAAK2sK,IACpB,kBAAmB3sK,KAAK+e,QACxB,oBAAqB/e,KAAK4sK,UAC1B,mBAAoB5sK,KAAK8sK,QACzB,qBAAsB9sK,KAAK6sK,aAKjCxtC,QAAS,CACP96D,SAAU1sD,GACR7X,KAAK62H,OAAOttH,KAAKsO,IAEnB8sD,WAAY9sD,GACV,MAAMrO,EAAQxJ,KAAK62H,OAAOtzD,WAAUz+C,GAAKA,EAAEw7G,OAASzoH,EAAQyoH,OAExD92H,GAAS,GAAGxJ,KAAK62H,OAAOptH,OAAOD,EAAO,IAE5CujK,UAAW9yJ,GACT,IAAIja,KAAKi0J,OAET,IAAK,MAAMn9B,KAAS92H,KAAK62H,OACvBC,EAAMpvB,OAAOztF,KAKnB9a,OAAQ2B,GACN,MAAMuB,EAAO,CACX27H,YAAa,SACbC,MAAOj+H,KAAKo9F,QACZjoE,MAAOn1B,KAAKioC,OACZizE,MAAO,CACL0kB,KAAM5/H,KAAK0sK,SAAW1sK,KAAKysK,cAAW3mK,EAAY,UAC/C9F,KAAKstJ,SAIZ,OAAOxsJ,EAAEd,KAAK8wF,IAAK9wF,KAAKk+H,mBAAmBl+H,KAAK6yB,MAAOxwB,GAAO,CAACrC,KAAKu/H,OAAOxjC,c,gKC3E/E,MAAM2lC,GAAazE,EAAAA,EAAAA,GACjBqN,EAAAA,EACA6C,EAAAA,EACAlO,EAAAA,GACAqO,EAAAA,EAAAA,GAAiB,kBACjBC,EAAAA,EAAAA,GAAkB,eAYpB,MAAe7L,EAAWh6H,SAAkBA,OAAO,CACjDmC,KAAM,cAENi2H,WAAY,CACVktC,OAAAA,EAAAA,GAGFR,OAAQ,CACNS,UAAW,CACTlxE,SAAS,GAEXwwE,SAAU,CACRxwE,SAAS,GAEX0wE,SAAU,CACR1wE,SAAS,GAEX2wE,QAAS,CACP3wE,SAAS,IAIbogE,cAAc,EAEdnkJ,MAAO,CACLw1H,YAAa,CACX7mI,KAAM6R,OACNujF,UACE,OAAK/7F,KAAKktK,cAEHltK,KAAKktK,cAAc1/B,YAFM,KAKpChQ,MAAOD,QACP4vC,SAAU5vC,QACVrG,KAAMqG,QACN6vC,WAAY,CACVzmK,KAAM42H,SAERzsC,IAAK,CACHnqF,KAAM6R,OACNujF,QAAS,OAEX8wE,UAAWtvC,QACXuvC,QAASvvC,QACTn5H,MAAO,MAGT/B,KAAM,KAAM,CACV0rI,WAAY,wBAGdjQ,SAAU,CACR1gC,UACE,MAAO,CACL,eAAe,KACZ+vC,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAuCntI,MAC1C,qBAAsBA,KAAKw9H,MAC3B,wBAAyBx9H,KAAKg1C,SAC9B,oBAAqBh1C,KAAK8qJ,cAAgB9qJ,KAAKmtK,SAC/C,0BAA2BntK,KAAKotK,WAChC,0BAA2BptK,KAAK6sK,UAChC,wBAAyB7sK,KAAK8sK,WAC3B9sK,KAAKykI,eAGZqmB,cACE,OAAOvtB,QACL4P,EAAAA,EAAAA,QAAAA,SAAAA,YAAAA,KAA2CntI,OAC3CA,KAAKktK,iBAKXhuC,UAEMl/H,KAAKm/H,OAAO3nH,eAAe,YAC7B2nC,EAAAA,EAAAA,IAAQ,SAAUn/C,OAItBq/H,QAAS,CACP1V,MAAOz5G,GACDA,EAAE4+H,QAAQ9uI,KAAK+uI,IAAIj3B,OAEvB93G,KAAKumI,MAAM,QAASr2H,GAEpBlQ,KAAK4xB,IAAM5xB,KAAK0nG,UAElB2lE,WACE,MAAMnyD,EAA6B,CACjC,kBAAiBl7G,KAAKg1C,eAAkBlvC,EACxCklJ,SAAUhrJ,KAAK8qJ,cAAgB9qJ,KAAKg1C,SAAW,GAAK,KACjDh1C,KAAKm/H,QAiBV,OAdIn/H,KAAKm/H,OAAO3nH,eAAe,SAEpBxX,KAAK0sK,UAEL1sK,KAAKitK,WACd/xD,EAAM0kB,KAAO,SACb1kB,EAAM,iBAAmB1iG,OAAOxY,KAAKkkH,WAC5BlkH,KAAKysK,UACdvxD,EAAM0kB,KAAO5/H,KAAK8qJ,YAAc,gBAAahlJ,EAC7Co1G,EAAM9tG,GAAK8tG,EAAM9tG,IAAM,aAAapN,KAAKsgI,QAChCtgI,KAAKusK,WACdrxD,EAAM0kB,KAAO,aAGR1kB,GAETxT,SACM1nG,KAAK4xB,SAA0B9rB,IAApB9F,KAAK2rJ,aAClB3rJ,KAAKkkH,UAAYlkH,KAAKkkH,UAExBlkH,KAAKumI,MAAM,YAIfpnI,OAAQ2B,GACN,IAAI,IAAEgwF,EAAF,KAAOzuF,GAASrC,KAAKmvI,oBAEzB9sI,EAAK64G,MAAQ,IACR74G,EAAK64G,SACLl7G,KAAKqtK,YAEVhrK,EAAKrC,KAAK4xB,GAAK,WAAa,MAAQ,IAC/BvvB,EAAKrC,KAAK4xB,GAAK,WAAa,MAC/B86H,QAAUx8I,IAEJA,EAAEytG,UAAY4qB,EAAAA,GAAAA,OAAgBvoI,KAAK2pH,MAAMz5G,GAE7ClQ,KAAKumI,MAAM,UAAWr2H,KAItBlQ,KAAKmtK,WAAUr8E,EAAM,OACrB9wF,KAAKmtK,UAAYntK,KAAK4xB,KACxBvvB,EAAKklG,GAAKllG,EAAKqlK,gBACRrlK,EAAKqlK,UAGd,MAAMpjE,EAAWtkG,KAAK0/H,aAAa3jC,QAC/B/7F,KAAK0/H,aAAa3jC,QAAQ,CAC1BlpD,OAAQ7yC,KAAKkkH,SACbxc,OAAQ1nG,KAAK0nG,SAEb1nG,KAAKu/H,OAAOxjC,QAEhB,OAAOj7F,EAAEgwF,EAAK9wF,KAAKkkH,SAAWlkH,KAAKggI,aAAahgI,KAAK6yB,MAAOxwB,GAAQA,EAAMiiG,O,+CC1L9E,OAAem8B,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,qBAENhK,YAAY,EAEZV,OAAQ2B,GAAG,KAAEuB,EAAF,SAAQiiG,EAAW,KAC5BjiG,EAAK27H,YAAc37H,EAAK27H,YAAc,uBAAuB37H,EAAK27H,cAAgB,sBAClF,MAAMsvC,EAAgBhpE,EAASnsF,QAAOo1J,IACT,IAApBA,EAAMC,WAAsC,MAAfD,EAAM5xI,OAI5C,OAFI2xI,EAActkK,OAAS,IAAG3G,EAAK27H,aAAe,+BAE3Cl9H,EAAE,MAAOuB,EAAMiiG,O,oGCJ1B,GAAe24B,EAAAA,EAAAA,GACb+kC,EAAAA,EACA13B,EAAAA,GACA5iI,OAAO,CACPmC,KAAM,oBAENk4H,UACE,MAAO,CACLkrC,WAAW,EACXC,cAAeltK,OAInB89H,SAAU,CACR1gC,UACE,MAAO,IACF4kE,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAA4ChiK,MAC/C,qBAAqB,KAK3Bq/H,QAAS,CACPwsC,UACE,OAAO7rK,KAAKggI,aAAahgI,KAAK6yB,MAAO,IAChCmvI,EAAAA,EAAAA,QAAAA,QAAAA,QAAAA,KAA2ChiK,MAC9Ck7G,MAAO,CACL0kB,KAAM,kB,8CCnChB,OAAea,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,mBAENhK,YAAY,EAEZV,OAAQ2B,GAAG,KAAEuB,EAAF,SAAQiiG,IAGjB,OAFAjiG,EAAK27H,YAAe,qBAAqB37H,EAAK27H,aAAe,KAAM/tH,OAE5DnP,EAAE,MAAOuB,EAAMiiG,O,+NCkB1B,MAAMo9B,GAAazE,EAAAA,EAAAA,GACjBkpC,EAAAA,EACA9E,EAAAA,EACA/2B,EAAAA,GACAg3B,EAAAA,EAAAA,GAAkB,QAClBnkC,EAAAA,GAaF,MAAeuE,EAAWh6H,SAAkBA,OAAO,CACjDmC,KAAM,eAENi2H,WAAY,CAAE6O,OAAAA,EAAAA,GAEd32H,MAAO,CACLw1H,YAAa,CACX7mI,KAAM6R,OACNujF,QAAS,IAEXguE,WAAY,CACVpjK,KAAM6R,OACNujF,QAAS,WAEXlpE,MAAO,CACLlsB,KAAM6R,OACNujF,QAAS,WAEX/mD,SAAUuoF,QACVzG,MAAO,CAACt+G,OAAQ1F,QAChB26J,SAAUlwC,QACVolC,YAAanqJ,OACbm2H,OAAQ,CACNhoI,KAAM,CAAC42H,QAAS/wH,QAChBuvF,SAAS,GAEX2xE,SAAUnwC,SAGZO,SAAU,CACR1gC,UACE,MAAO,CACL,uBAAwBp9F,KAAKkkH,SAC7B,yBAA0BlkH,KAAKg1C,SAC/B,0BAA2Bh1C,KAAKytK,SAChC,0BAA2BztK,KAAK0tK,YAKtCvsC,MAAO,CACLjd,SAAUj+G,IAEHjG,KAAK0tK,UAAYznK,GACpBjG,KAAKy0G,MAAQz0G,KAAKy0G,KAAKs4D,UAAU/sK,KAAKsgI,OAG1CqtC,OAAQ,iBAGVzuC,UACEl/H,KAAKy0G,MAAQz0G,KAAKy0G,KAAKlwC,SAASvkE,MAE5BA,KAAK82H,OACP92H,KAAK2tK,QACS,MAAd3tK,KAAKoE,QAELpE,KAAKkkH,SAAWlkH,KAAK4tK,WAAW5tK,KAAK2tK,OAAOt7J,QAIhDshJ,gBACE3zJ,KAAKy0G,MAAQz0G,KAAKy0G,KAAK9vC,WAAW3kE,OAGpCq/H,QAAS,CACP1V,MAAOz5G,GACDlQ,KAAKg1C,WAETh1C,KAAK2iI,UAAW,EAEhB3iI,KAAKumI,MAAM,QAASr2H,GACpBlQ,KAAKwhI,WAAU,IAAOxhI,KAAKkkH,UAAYlkH,KAAKkkH,aAE9C2tC,QAASl0B,GACP,OAAO39H,KAAKo+H,eAAeO,EAAAA,EAAOhB,IAEpCkwC,gBACE,MAAMlwC,GAAQ39H,KAAK0tK,UAAW1tK,KAAK+pK,WAEnC,OAAKpsC,GAAS39H,KAAKu/H,OAAOwqC,WAEnB/pK,KAAKo+H,eAAe0vC,EAAAA,EAAe,CACxC9vC,YAAa,qCACZ,CACDh+H,KAAKu/H,OAAOwqC,YAAc/pK,KAAK6xJ,QAAQl0B,KALI,MAQ/Cm5B,YACE,OAAO92J,KAAKo+H,eAAe2vC,EAAAA,EAAW,CACpC/vC,YAAa,uBACb9iB,MAAO,CACL,gBAAiB1iG,OAAOxY,KAAKkkH,UAC7B0b,KAAM,UAER3B,MAAO,CACL,CAACj+H,KAAKwtI,aAAcxtI,KAAKkkH,UAE3BlsG,MAAO,CACL2zI,WAAY3rJ,KAAKkkH,UAEnB4b,WAAY,CAAC,CACXj2H,KAAM,SACNzF,MAAOpE,KAAK2uI,SAEdpnC,GAAI,IACCvnG,KAAK6/H,WACRlW,MAAO3pH,KAAK2pH,QAEb,CACD3pH,KAAKguK,iBACLhuK,KAAKu/H,OAAOk/B,UACZz+J,KAAK6tK,mBAGTnZ,WACE,OAAO10J,KAAK6/J,iBAAgB,IAAM,CAChC7/J,KAAKo+H,eAAe,MAAO,CACzBJ,YAAa,sBACb8B,WAAY,CAAC,CACXj2H,KAAM,OACNzF,MAAOpE,KAAKkkH,aAEb2nB,EAAAA,EAAAA,IAAQ7rI,WAGfguK,iBACE,MAAMrwC,EAAO39H,KAAK0tK,UAAgC,MAApB1tK,KAAK2iK,YAC/B,YACA3iK,KAAK2iK,YAET,OAAKhlC,GAAS39H,KAAKu/H,OAAOojC,YAEnB3iK,KAAKo+H,eAAe0vC,EAAAA,EAAe,CACxC9vC,YAAa,sCACZ,CACDh+H,KAAKu/H,OAAOojC,aAAe3iK,KAAK6xJ,QAAQl0B,KALI,MAQhDswC,cAAer8I,GAEb,IAAK5xB,KAAK82H,MAAO,OAEjB,MAAM5S,EAAWlkH,KAAK4tK,WAAWh8I,EAAGvf,MAGhC6xG,GAAYlkH,KAAKkkH,WAAaA,GAChClkH,KAAKy0G,MAAQz0G,KAAKy0G,KAAKs4D,UAAU/sK,KAAKsgI,MAGxCtgI,KAAKkkH,SAAWA,GAElBxc,OAAQztF,GACN,MAAMiqG,EAAWlkH,KAAKsgI,OAASrmH,EAE3BiqG,IAAUlkH,KAAK2iI,UAAW,GAC9B3iI,KAAKwhI,WAAU,IAAOxhI,KAAKkkH,SAAWA,KAExC0pD,WAAYh8I,GACV,OAAgC,OAAzBA,EAAG/e,MAAM7S,KAAK82H,SAIzB33H,OAAQ2B,GACN,OAAOA,EAAE,MAAOd,KAAKggI,aAAahgI,KAAKkkH,UAAYlkH,KAAK6yB,MAAO,CAC7DmrG,YAAa,eACbC,MAAOj+H,KAAKo9F,UACV,CACFp9F,KAAK82J,YACLh2J,EAAE2gK,EAAAA,GAAmBzhK,KAAK00J,iB,8BCtNhC,EAAewZ,EAAf,ECIA,EAAeA,EAAAA,OAAe,CAC5BrkK,KAAM,qBAENmO,MAAO,CACLiqC,WAAYs7E,QACZ1gH,KAAM,CACJlW,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,KAIb+hC,SAAU,CACR1gC,UACE,MAAO,CACL,kCAAmCp9F,KAAKiiD,cACrCisH,EAAAA,QAAAA,SAAAA,QAAAA,KAAsCluK,MACzC,iBAAkBA,KAAKmrI,MAAQnrI,KAAKiiD,cAK1C9iD,OAAQ2B,GACN,MAAM3B,EAAS+uK,EAAAA,QAAAA,OAAAA,KAA4BluK,KAAMc,GAKjD,OAHA3B,EAAOkD,KAAOlD,EAAOkD,MAAQ,GAC7BlD,EAAOkD,KAAK27H,aAAe,uBAEpB7+H,KCxBJ,MAAMgvK,GAAsBjjB,EAAAA,EAAAA,IAAuB,2BAA4B,QACzEkjB,GAAmBljB,EAAAA,EAAAA,IAAuB,uBAAwB,OAClEmjB,GAAiBnjB,EAAAA,EAAAA,IAAuB,qBAAsB,OAC9DojB,GAAoBpjB,EAAAA,EAAAA,IAAuB,wBAAyB,OAatD,qB,gFChB3B,EAAerpB,EAAAA,EAAAA,OAAmB,CAChCh4H,KAAM,SAENmO,MAAO,CACL84E,IAAK,CACHnqF,KAAM6R,OACNujF,QAAS,SAIb+hC,SAAU,CACR71F,SACE,MAAM,IACJqvC,EADI,IACC38C,EADD,MACM9gB,EADN,OACa6jE,EADb,YACqB6wF,EADrB,OACkC3zI,EADlC,KAC0ChhB,GAC5C5Z,KAAKy+H,SAAS8E,YAElB,MAAO,CACLloE,WAAY,GAAG1gC,EAAM28C,MACrB9b,aAAc,GAAG3hD,MACjByhD,cAAe,GAAGoiB,EAAS6wF,EAAc3zI,MACzC2gC,YAAa,GAAG3hD,SAKtBza,OAAQ2B,GACN,MAAMuB,EAAO,CACX27H,YAAa,SACb7oG,MAAOn1B,KAAKioC,OACZu8D,IAAK,QAGP,OAAO1jG,EAAEd,KAAK8wF,IAAKzuF,EAAM,CACvBvB,EACE,MACA,CAAEk9H,YAAa,gBACfh+H,KAAKu/H,OAAOxjC,e,gNCfpB,MAAM2lC,GAAazE,EAAAA,EAAAA,GACjBsgC,EAAAA,EACAiR,EAAAA,EACA9Q,EAAAA,EACAlzB,EAAAA,EACAvL,EAAAA,EACAwvC,EAAAA,GAIF,MAAe/sC,EAAWh6H,OAAO,CAC/BmC,KAAM,SAENi2H,WAAY,CACV+9B,aADU,IAEVnf,OAAAA,EAAAA,GAGF3c,UACE,MAAO,CACL0qC,UAAU,EAEVvlE,MAAOlnG,KAAKknG,QAIhBlvF,MAAO,CACL05I,KAAMn0B,QACNmxC,aAAc,CACZ/nK,KAAM42H,QACNxhC,SAAS,GAEXs6D,oBAAqB,CACnB1vJ,KAAM42H,QACNxhC,SAAS,GAEX/mD,SAAUuoF,QACVoxC,YAAapxC,QACbp0F,UAAW,CACTxiC,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,QAEXzzD,QAASi1F,QACTh1F,QAASg1F,QACTqxC,YAAarxC,QACb0C,OAAQ,CACNt5H,KAAM6R,OACNujF,QAAS,YAEXj+C,WAAY,CACVn3C,KAAM,CAAC42H,QAAS/kH,QAChBujF,QAAS,sBAIb15F,OACE,MAAO,CACLwsK,kBAAmB,EACnBC,cAAe,EACfC,gBAAgB,EAChB/mC,WAAY,EACZgnC,cAAe,EACfnrD,cAAe,KACforD,MAAO,KAIXnxC,SAAU,CACRoxC,aACE,OAAOlvK,KAAKivK,MAAMjvK,KAAKgoI,YAEzBmnC,iBACE,MAAMC,EAAYngK,KAAKmQ,IAAIpf,KAAKqvK,WAAWx3J,QAAQmgB,MAAOrd,WAAW3a,KAAKsvK,qBAE1E,OAAKtvK,KAAK0xJ,MAEH1tB,EAAAA,EAAAA,IAAchkI,KAAKuvK,cAAcvvK,KAAKwvK,eAAgBJ,KAAe,IAFrDpvK,KAAKyvK,SAASL,IAAc,KAIrDM,sBACE,MAAMx2I,EAASl5B,KAAK0xJ,KAChB,SACA1tB,EAAAA,EAAAA,IAAchkI,KAAKmpC,WAEvB,OAAOjQ,GAAU,KAEnBy2I,qBACE,OAAO3rC,EAAAA,EAAAA,IAAchkI,KAAKm8B,WAAa,KAEzCmzI,qBACE,GAAItvK,KAAK0qI,SACP,OAAO1G,EAAAA,EAAAA,IAAchkI,KAAK0qI,WAAa,IAGzC,MAAMA,EAAWz7H,KAAKkQ,IACpBnf,KAAKqvK,WAAW5Q,UAAUzmI,MAC1B5d,OAAOpa,KAAK4vK,aACX5vK,KAAK0xJ,KAAO,GAAK,GAClBziJ,KAAKmQ,IAAIpf,KAAK6vK,UAAY,GAAI,IAG1BF,EAAqBlxJ,MAAM4S,SAASrxB,KAAK2vK,qBAC3CjlC,EACAr5G,SAASrxB,KAAK2vK,oBAElB,OAAO3rC,EAAAA,EAAAA,IAAc/0H,KAAKkQ,IACxBwwJ,EACAjlC,KACI,KAERolC,gBACE,MAAMn1I,EAAO36B,KAAK0xJ,MAEd1tB,EAAAA,EAAAA,IAAchkI,KAAK+vK,cAAc/vK,KAAK6uK,oBADtC7uK,KAAKgwK,UAGT,OAAOr1I,GAAO,KAEhBs1I,oBACE,OAAO1yC,QAAQv9H,KAAKivK,MAAMrzE,MAAKuvC,GAAQA,EAAK9nB,UAAY,MAE1Dp7E,SACE,MAAO,CACLkB,UAAWnpC,KAAK0vK,oBAChBhlC,SAAU1qI,KAAKsvK,mBACfnzI,SAAUn8B,KAAK2vK,mBACfh1I,IAAK36B,KAAK8vK,cACVl2J,KAAM5Z,KAAKmvK,eACX9O,gBAAiBrgK,KAAKigI,OACtB+/B,OAAQhgK,KAAKggK,QAAUhgK,KAAKm/J,gBAKlCh+B,MAAO,CACLjd,SAAUj+G,GACHA,IAAKjG,KAAKgoI,WAAa,IAE9BkoC,gBAAiBjqK,GACfjG,KAAK+uK,eAAiB9oK,GAExB+hI,UAAWnjG,EAAMoC,GACf,GAAIpC,KAAQ7kC,KAAKivK,MAAO,CACtB,MAAM9jC,EAAOnrI,KAAKivK,MAAMpqI,GACxBsmG,EAAK1kC,UAAUlmG,IAAI,4BACnB,MAAMyoG,EAAYhpG,KAAKqnI,MAAMxvH,QAAQmxF,UAC/BmnE,EAAgBnwK,KAAKqnI,MAAMxvH,QAAQ4xB,aAErCu/D,EAAYmiC,EAAK3V,UAAY,GAC/B46C,EAAAA,EAAAA,GAAKjlC,EAAK3V,UAAY2V,EAAK1hG,aAAc,CACvC4mI,WAAW,EACX7/H,SAAU,IACVpH,UAAWppC,KAAKqnI,MAAMxvH,UAEfmxF,EAAYmnE,EAAgBhlC,EAAK3V,UAAY2V,EAAK1hG,aAAe,IAC1E2mI,EAAAA,EAAAA,GAAKjlC,EAAK3V,UAAY26C,EAAoC,EAApBhlC,EAAK1hG,aAAkB,CAC3D4mI,WAAW,EACX7/H,SAAU,IACVpH,UAAWppC,KAAKqnI,MAAMxvH,UAK5BovB,KAAQjnC,KAAKivK,OACXjvK,KAAKivK,MAAMhoI,GAAMw/D,UAAUzzF,OAAO,8BAIxCksH,UAEMl/H,KAAKm/H,OAAO3nH,eAAe,gBAC7B2nC,EAAAA,EAAAA,IAAQ,aAAcn/C,OAI1BohI,UACEphI,KAAKkkH,UAAYlkH,KAAKswK,gBAGxBjxC,QAAS,CACPkxC,WAGEvwK,KAAKqoI,mBAELxvH,uBAAsB,KAEpB7Y,KAAKwwK,kBAAkB5nK,MAAK,KACtB5I,KAAKqnI,MAAMxvH,UACb7X,KAAK6uK,kBAAoB7uK,KAAKywK,cAC9BzwK,KAAK0xJ,OAAS1xJ,KAAKqnI,MAAMxvH,QAAQmxF,UAAYhpG,KAAK0wK,8BAK1DA,qBACE,MAAM3hC,EAAM/uI,KAAKqnI,MAAMxvH,QACjBq3J,EAAangC,EAAIriC,cAAc,wBAC/BikE,EAAe5hC,EAAI6hC,aAAe7hC,EAAI1Z,aAE5C,OAAO65C,EACHjgK,KAAKkQ,IAAIwxJ,EAAc1hK,KAAKmQ,IAAI,EAAG8vJ,EAAW15C,UAAYuZ,EAAI1Z,aAAe,EAAI65C,EAAW75C,aAAe,IAC3G0Z,EAAI/lC,WAEVwmE,eACE,OAAOn+I,SAASrxB,KAAKqvK,WAAW5Q,UAAU7kJ,KAA4B,EAArB5Z,KAAK8uK,gBAExD2B,cACE,MAAM1hC,EAAM/uI,KAAKqnI,MAAMxvH,QACjBq3J,EAAangC,EAAIriC,cAAc,wBAMrC,GAJKwiE,IACHlvK,KAAK6jH,cAAgB,MAGnB7jH,KAAKuoC,UAAY2mI,EACnB,OAAOlvK,KAAKwrI,YAGdxrI,KAAK6jH,cAAgBz4G,MAAMuB,KAAK3M,KAAKivK,OAAOlqK,QAAQmqK,GAEpD,MAAM2B,EAA0B3B,EAAW15C,UAAYx1H,KAAK0wK,qBACtDI,EAAsB/hC,EAAIriC,cAAc,gBAAgC8oB,UAE9E,OAAOx1H,KAAKwrI,YAAcqlC,EAA0BC,EAAqB,GAE3EC,gBAAiB7gK,GAIf,GAFAlQ,KAAKkoI,WAEAloI,KAAKkkH,UAAalkH,KAAKiwK,kBAErB,GAAI//J,EAAEytG,UAAY4qB,EAAAA,GAAAA,IAAlB,CAGA,GAAIr4H,EAAEytG,UAAY4qB,EAAAA,GAAAA,KACvBvoI,KAAKgxK,gBACA,GAAI9gK,EAAEytG,UAAY4qB,EAAAA,GAAAA,GACvBvoI,KAAKixK,gBACA,GAAI/gK,EAAEytG,UAAY4qB,EAAAA,GAAAA,IACvBvoI,KAAKkxK,gBACA,GAAIhhK,EAAEytG,UAAY4qB,EAAAA,GAAAA,KACvBvoI,KAAKmxK,gBACA,IAAIjhK,EAAEytG,UAAY4qB,EAAAA,GAAAA,QAAsC,IAApBvoI,KAAKgoI,UAEvC,OADPhoI,KAAKivK,MAAMjvK,KAAKgoI,WAAWre,QAG7Bz5G,EAAE4uG,sBAdA9+G,KAAKkkH,UAAW,GAgBpB86C,iBAAkB9uJ,GAChB,MAAM/B,EAAS+B,EAAE/B,OAEjB,OAAOnO,KAAKkkH,WACTlkH,KAAKi/J,cACNj/J,KAAK0uK,eACJ1uK,KAAKqnI,MAAMxvH,QAAQs8C,SAAShmD,IAEjCijK,yBACE,MAAMj0E,EAAaygE,EAAAA,EAAAA,QAAAA,QAAAA,uBAAAA,KAAwD59J,MAE3E,OAAIA,KAAKkvK,YAAclvK,KAAKkvK,WAAW9hK,GAC9B,IACF+vF,EACH,wBAAyBn9F,KAAKkvK,WAAW9hK,IAItC+vF,GAETk0E,wBACE,MAAM1xI,EAAY8uI,EAAAA,EAAAA,QAAAA,QAAAA,sBAAAA,KAAoDzuK,MAMtE,OAJKA,KAAK2uK,cACRhvI,EAAU+sH,QAAU1sJ,KAAK6pI,WAGpBlqG,GAETsgI,gBACE,MAAMpoJ,EAAU7X,KAAKy/H,aAErB,OAAKz/H,KAAK89C,WAEH99C,KAAKo+H,eAAe,aAAc,CACvCpmH,MAAO,CACLnO,KAAM7J,KAAK89C,aAEZ,CAACjmC,IANyBA,GAQ/By5J,gBACE,MAAMxxC,EAA+B,CAAC,CACpCj2H,KAAM,OACNzF,MAAOpE,KAAKkwK,kBAed,OAXKlwK,KAAK4uK,aAAe5uK,KAAK0uK,cAC5B5uC,EAAWv2H,KAAK,CACdM,KAAM,gBACNzF,MAAO,CACLyoD,QAAS,KAAQ7sD,KAAKkkH,UAAW,GACjC86C,iBAAkBh/J,KAAKg/J,iBACvBoB,QAAS,IAAM,CAACpgK,KAAK+uI,OAAQ/uI,KAAK2/J,+BAKjC7/B,GAETL,aACE,MAAM9/H,EAAU,CACdu7G,MAAO,IACFl7G,KAAK+/J,kBACRngC,KAAM,SAAU5/H,KAAKm/H,OAASn/H,KAAKm/H,OAAOS,KAAO,QAEnD5B,YAAa,kBACbC,MAAO,IACFj+H,KAAKuxK,oBACLvxK,KAAKyqI,eACR,wBAAyBzqI,KAAK0xJ,KAC9B,yBAA0B1xJ,KAAKwxK,eAC/BC,0BAA2BzxK,KAAKkkH,SAChC,CAAClkH,KAAK+mI,aAAa92H,SAAS,GAE9BklB,MAAOn1B,KAAKioC,OACZ63F,WAAY9/H,KAAKsxK,gBACjB9sE,IAAK,UACL+C,GAAI,CACFoiB,MAAQz5G,IACN,MAAM/B,EAAS+B,EAAE/B,OAEbA,EAAOqlD,aAAa,aACpBxzD,KAAKq2J,sBAAqBr2J,KAAKkkH,UAAW,IAEhDwoC,QAAS1sJ,KAAK6pI,YAmBlB,OAfI7pI,KAAK4qI,WAAW9jC,SAClBnnG,EAAQ4nG,GAAK5nG,EAAQ4nG,IAAM,GAC3B5nG,EAAQ4nG,GAAGT,OAAS9mG,KAAK4qI,WAAW9jC,SAGjC9mG,KAAKg1C,UAAYh1C,KAAK4uK,cACzBjvK,EAAQ4nG,GAAK5nG,EAAQ4nG,IAAM,GAC3B5nG,EAAQ4nG,GAAGmqE,WAAa1xK,KAAK2xK,mBAG3B3xK,KAAK4uK,cACPjvK,EAAQ4nG,GAAK5nG,EAAQ4nG,IAAM,GAC3B5nG,EAAQ4nG,GAAGqqE,WAAa5xK,KAAK6xK,mBAGxB7xK,KAAKo+H,eAAe,MAAOz+H,EAASK,KAAKsgK,mBAElDp4B,WACOloI,KAAKqnI,MAAMxvH,UAEhB7X,KAAKivK,MAAQ7jK,MAAMuB,KAAK3M,KAAKqnI,MAAMxvH,QAAQw2F,iBAAiB,6CAE9DsjE,oBACE3xK,KAAK8xK,SAAS,QAAQ,KAChB9xK,KAAK+uK,iBAET/uK,KAAK+uK,gBAAiB,OAG1B8C,kBAAmB3hK,GAEjBlQ,KAAK8xK,SAAS,SAAS,KAAK,MAC1B,SAAI9xK,KAAKqnI,MAAMxvH,UAAXk6J,EAAoB59G,SAASjkD,EAAE8hK,gBAEnCn5J,uBAAsB,KACpB7Y,KAAKkkH,UAAW,EAChBlkH,KAAKiyK,wBAIXjB,WACE,MAAM7lC,EAAOnrI,KAAKivK,MAAMjvK,KAAKgoI,UAAY,GAEzC,IAAKmD,EAAM,CACT,IAAKnrI,KAAKivK,MAAMjmK,OAAQ,OAKxB,OAHAhJ,KAAKgoI,WAAa,OAClBhoI,KAAKgxK,WAKPhxK,KAAKgoI,aACkB,IAAnBmD,EAAK9nB,UAAiBrjH,KAAKgxK,YAEjCC,WACE,MAAM9lC,EAAOnrI,KAAKivK,MAAMjvK,KAAKgoI,UAAY,GAEzC,IAAKmD,EAAM,CACT,IAAKnrI,KAAKivK,MAAMjmK,OAAQ,OAKxB,OAHAhJ,KAAKgoI,UAAYhoI,KAAKivK,MAAMjmK,YAC5BhJ,KAAKixK,WAKPjxK,KAAKgoI,aACkB,IAAnBmD,EAAK9nB,UAAiBrjH,KAAKixK,YAEjCC,WACE,MAAM/lC,EAAOnrI,KAAKivK,MAAMjvK,KAAKivK,MAAMjmK,OAAS,GAEvCmiI,IAELnrI,KAAKgoI,UAAYhoI,KAAKivK,MAAMjmK,OAAS,GAEd,IAAnBmiI,EAAK9nB,UAAiBrjH,KAAKixK,aAEjCE,YACE,MAAMhmC,EAAOnrI,KAAKivK,MAAM,GAEnB9jC,IAELnrI,KAAKgoI,UAAY,GAEM,IAAnBmD,EAAK9nB,UAAiBrjH,KAAKgxK,aAEjCnnC,UAAW35H,GACT,GAAIA,EAAEytG,UAAY4qB,EAAAA,GAAAA,IAAc,CAE9BvjI,YAAW,KAAQhF,KAAKkkH,UAAW,KACnC,MAAMu6C,EAAYz+J,KAAK0/J,eACvB1/J,KAAKwhI,WAAU,IAAMi9B,GAAaA,EAAUx1D,eAE3CjpG,KAAKkkH,UACN,CAACqkB,EAAAA,GAAAA,GAAaA,EAAAA,GAAAA,MAAe/mG,SAAStxB,EAAEytG,WAExC39G,KAAKkkH,UAAW,GAIlBlkH,KAAKwhI,WAAU,IAAMxhI,KAAK+wK,gBAAgB7gK,MAE5C88D,WACOhtE,KAAKkkH,WAKVlkH,KAAKqnI,MAAMxvH,QAAQ4/G,YACnBz3H,KAAKqoI,mBAOLhvH,aAAarZ,KAAKgvK,eAClBhvK,KAAKgvK,cAAgB56J,OAAOpP,WAAWhF,KAAKqoI,iBAAkB,QAIlElpI,OAAQ2B,GACN,MAAMuB,EAAO,CACX27H,YAAa,SACbC,MAAO,CACL,mBACkB,KAAhBj+H,KAAK+1D,SACW,IAAhB/1D,KAAK+1D,QACW,WAAhB/1D,KAAK+1D,QAET+pE,WAAY,CAAC,CACX35D,IAAK,MACLt8D,KAAM,SACNzF,MAAOpE,KAAKgtE,YAIhB,OAAOlsE,EAAE,MAAOuB,EAAM,EACnBrC,KAAKy+J,WAAaz+J,KAAKugK,eACxBvgK,KAAK6/J,iBAAgB,IAAM,CACzB7/J,KAAKo+H,eAAe0hC,EAAAA,EAAgB,CAClC9nJ,MAAO,CACLkc,MAAM,EACNswG,MAAOxkI,KAAKwkI,MACZD,KAAMvkI,KAAKukI,OAEZ,CAACvkI,KAAKigK,2B,sMCvejB,MAAMv+B,GAAazE,EAAAA,EAAAA,IACjB6E,EAAAA,EAAAA,GAAgB,OAAQ,CACtB,WACA,WACA,cACA,gBACA,YACA,QACA,YACA,UAEFwI,EAAAA,EACAizB,EAAAA,EACAxL,EAAAA,EACA0L,EAAAA,EACA57B,EAAAA,EACA5C,EAAAA,GAIF,MAAeyC,EAAWh6H,OAAO,CAC/BmC,KAAM,sBAENi2H,WAAY,CACV+9B,aADU,IAEVnf,OAFU,IAGVwzB,MAAAA,EAAAA,GAGFnwC,UACE,MAAO,CACL2qC,QAAsB,QAAb1sK,KAAK8wF,MAIlB94E,MAAO,CACL4iB,OAAQ2iG,QACR40C,QAAS50C,QACT60C,qBAAsB70C,QACtB80C,oBAAqB90C,QACrB+0C,cAAe/0C,QACfp5E,SAAUo5E,QACVrkG,OAAQ,CACNvyB,KAAM,CAACyT,OAAQ5B,QACfujF,UACE,OAAO/7F,KAAK6iI,IAAM,QAAU,SAGhC0vC,YAAah1C,QACbi1C,iBAAkB,CAChB7rK,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,IAEX02E,UAAWl1C,QACX1jH,MAAO0jH,QACP37B,IAAK,CACHj7F,KAAM,CAAC6R,OAAQhM,QACfuvF,QAAS,IAEX22E,UAAWn1C,QACXzsC,IAAK,CACHnqF,KAAM6R,OACNujF,UACE,OAAO/7F,KAAK6iI,IAAM,MAAQ,UAG9B8vC,UAAWp1C,QACXq1C,UAAWr1C,QACXvlG,MAAO,CACLrxB,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,KAEX33F,MAAO,MAGT/B,KAAM,KAAM,CACVwwK,aAAa,EACbC,UAAW,CACTl5J,KAAM,EACNC,MAAO,GAETwkJ,eAAgB,IAGlBvgC,SAAU,CAKR4E,sBACE,OAAO1iI,KAAK6Z,MAAQ,QAAU,QAEhCujF,UACE,MAAO,CACL,uBAAuB,EACvB,gCAAiCp9F,KAAK4iI,SACtC,8BAA+B5iI,KAAK46B,OACpC,+BAAgC56B,KAAKmyK,QACrC,8BAA+BnyK,KAAKkkH,SACpC,8BAA+BlkH,KAAK4iI,WAAa5iI,KAAK6iI,KAAO7iI,KAAK8iI,OAClE,gCAAiC9iI,KAAKmkD,SACtC,iCAAkCnkD,KAAKm0J,SACvC,oCAAqCn0J,KAAK6yK,YAC1C,oCAAqC7yK,KAAK+yK,cAC1C,2CAA8E,KAAlC34J,OAAOpa,KAAKwyK,kBACxD,4BAA6BxyK,KAAKkkH,SAClC,qCAAsClkH,KAAKsyK,cAC3C,6BAA8BtyK,KAAK6Z,MACnC,iCAAkC7Z,KAAK2yK,aACpC3yK,KAAKykI,eAGZuuC,oBACE,IAAKhzK,KAAKizK,OAAQ,OAAO,KAEzB,MAAMD,EACJhzK,KAAKy+H,SAAS8E,YAAY3oG,OAC1B56B,KAAKy+H,SAAS8E,YAAY7lD,OAC1B19E,KAAKy+H,SAAS8E,YAAYjsD,IAG5B,OAAKt3E,KAAKmyK,QAEHa,EAAoBhzK,KAAKy+H,SAAS8E,YAAY5oG,IAF3Bq4I,GAI5BxnC,cACE,IAAKxrI,KAAKizK,OAAQ,OAAO,EAEzB,IAAIznC,EAAcxrI,KAAKy+H,SAAS8E,YAAYjsD,IAM5C,OAJAk0D,GAAexrI,KAAKmyK,QAChBnyK,KAAKy+H,SAAS8E,YAAY5oG,IAC1B,EAEG6wG,GAET3H,oBACE,OAAI7jI,KAAKkkH,SAAiB,EACtBlkH,KAAKkzK,UACFlzK,KAAK6Z,MADc,KACC,KAE7Bs5J,gBACE,OAAOnzK,KAAK+yK,cAAgB/yK,KAAKwyK,iBAAmBxyK,KAAKg4B,OAE3Di7I,SACE,OACEjzK,KAAK6iI,MACH7iI,KAAKm0J,WAAan0J,KAAK2yK,WAG7BO,WACE,OAAOlzK,KAAK46B,QAAU56B,KAAKm0J,UAE7B4e,gBACE,OACG/yK,KAAKsyK,eACNtyK,KAAKuyK,aAELvyK,KAAKsyK,gBACJtyK,KAAK6yK,aAGV1e,WACE,OACGn0J,KAAK0yK,YACL1yK,KAAKyyK,WACN1gB,EAAAA,EAAAA,QAAAA,SAAAA,SAAAA,KAAsC/xJ,OAG1CozK,gBACE,OACGpzK,KAAK0yK,YACL1yK,KAAKyyK,YACLzyK,KAAKm0J,UAAYn0J,KAAK2yK,YAG3BU,iBACE,OACErzK,KAAK6iI,MACJ7iI,KAAKoyK,uBACLpyK,KAAKyyK,YACLzyK,KAAK0yK,YACL1yK,KAAK2yK,WAGVW,iBACE,OAAQtzK,KAAKoyK,uBAAyBpyK,KAAK0yK,WAE7Ca,gBACE,OACGvzK,KAAKqyK,sBACLryK,KAAK0yK,YACL1yK,KAAK2yK,WAAa3yK,KAAKm0J,WAG5Bqf,cACE,OACGxzK,KAAKs/J,aACNt/J,KAAKkkH,WACJlkH,KAAKm0J,UAAYn0J,KAAK2yK,YAG3B1qI,SACE,MAAMtO,EAAY35B,KAAKkzK,SAAW,aAAe,aACjD,MAAO,CACLh6I,QAAQ8qG,EAAAA,EAAAA,IAAchkI,KAAKk5B,QAC3ByB,IAAM36B,KAAKkzK,SAA6C,QAAlClvC,EAAAA,EAAAA,IAAchkI,KAAKwrI,aACzCriG,UAAqC,MAA1BnpC,KAAKgzK,kBACZ,gBAAehvC,EAAAA,EAAAA,IAAchkI,KAAKgzK,2BAClCltK,EACJo7F,UAAW,GAAGvnE,MAAaqqG,EAAAA,EAAAA,IAAchkI,KAAK6jI,kBAAmB,QACjE7rG,OAAOgsG,EAAAA,EAAAA,IAAchkI,KAAKmzK,kBAKhChyC,MAAO,CACLwsC,OAAQ,gBACRzpD,SAAUj+G,GACRjG,KAAKumI,MAAM,QAAStgI,IAMtBkuJ,SAAUluJ,EAAKghC,IACZhhC,GACCjG,KAAKkkH,WACJlkH,KAAK2yK,WACN3yK,KAAK2+J,gBAEK,MAAR13H,GACDjnC,KAAKszK,gBACLtzK,KAAKqzK,iBAGRrzK,KAAKkkH,UAAYj+G,IAEnBwsK,UAAWxsK,GAELA,IAAKjG,KAAKkkH,UAAW,IAE3BsvD,YAAavtK,GACPA,EAAKjG,KAAK6+J,aACT7+J,KAAK2+J,iBAEZv6J,MAAO6B,GACDjG,KAAKyyK,YAEE,MAAPxsK,EAKAA,IAAQjG,KAAKkkH,WAAUlkH,KAAKkkH,SAAWj+G,GAJzCjG,KAAKs8D,SAMTg2G,cAAe,oBACfO,YAAa5sK,GACXjG,KAAKyzK,mBAAmBxtK,KAI5B64J,cACE9+J,KAAKs8D,QAGP+iE,QAAS,CACPq0C,qBACE,MAAMvzK,EAASH,KAAK+uI,IAAIznG,WAExB,IAAKnnC,EAAQ,OAEb,MAAMwzK,EAAaxzK,EAAOsoC,wBAE1BzoC,KAAK8yK,UAAY,CACfl5J,KAAM+5J,EAAW/5J,KAAO,GACxBC,MAAO85J,EAAW95J,MAAQ,KAG9BmlJ,mBACE,OAAOh/J,KAAKkkH,WAAalkH,KAAKi/J,cAAgBj/J,KAAKozK,eAErDQ,YACE,OAAO5zK,KAAK6zK,YAAY,WAE1B3vC,gBACE,MAAMlsH,EAAQ,CACZkhB,OAAQ,OACRlB,MAAO,OACP4pE,IAAK5hG,KAAK4hG,KAGN4S,EAAQx0G,KAAK0/H,aAAairB,IAC5B3qJ,KAAK0/H,aAAairB,IAAI3yI,GACtBhY,KAAKo+H,eAAe01C,EAAAA,EAAM,CAAE97J,MAAAA,IAEhC,OAAOhY,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,8BACZ,CAACxpB,KAEN88D,gBACE,MAAMxxC,EAAa,CAAC,CAClBj2H,KAAM,gBACNzF,MAAO,CACLyoD,QAAS,KAAQ7sD,KAAKkkH,UAAW,GACjC86C,iBAAkBh/J,KAAKg/J,iBACvBoB,QAASpgK,KAAK2/J,4BAelB,OAXK3/J,KAAK4yK,WAAc5yK,KAAK0yK,WAC3B5yC,EAAWv2H,KAAK,CACdM,KAAM,QACNzF,MAAO,CACLjE,QAAQ,EACRyZ,KAAM5Z,KAAK+zK,UACXl6J,MAAO7Z,KAAKg0K,cAKXl0C,GAETm0C,eACE,MAAM1sE,EAAyC,CAC7CmqE,WAAY,IAAO1xK,KAAK6yK,aAAc,EACtCjB,WAAY,IAAO5xK,KAAK6yK,aAAc,EACtCqB,cAAgBhkK,IACd,GAAIA,EAAE/B,SAAW+B,EAAE6/H,cAAe,OAClC/vI,KAAKumI,MAAM,gBAAiBr2H,GAG5B,MAAMikK,EAAcvhK,SAASoxG,YAAY,YACzCmwD,EAAYC,YAAY,UAAU,GAAM,EAAOhgK,OAAQ,GACvDA,OAAO2vG,cAAcowD,KAQzB,OAJIn0K,KAAKuyK,cACPhrE,EAAGoiB,MAAQ,IAAM3pH,KAAKumI,MAAM,uBAAuB,IAG9Ch/B,GAETssE,YAAahqK,GACX,MAAMy/H,GAAOuC,EAAAA,EAAAA,IAAQ7rI,KAAM6J,GAE3B,OAAKy/H,EAEEtpI,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,wBAAwBn0H,KACpCy/H,GAJeA,GAMpB+qC,aACE,OAAOr0K,KAAK6zK,YAAY,YAE1Bp0C,aACE,OAAOz/H,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,gCACZh+H,KAAKu/H,OAAOxjC,UAEjBu4E,YACE,OAAOt0K,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,iCAGjB1hE,OACMt8D,KAAKyyK,UACPzyK,KAAKkkH,UAAW,EACPlkH,KAAK0yK,WACA,MAAd1yK,KAAKoE,MAELpE,KAAKkkH,SAAWlkH,KAAKoE,MACXpE,KAAK2yK,YACf3yK,KAAKkkH,UAAYlkH,KAAKm0J,WAG1B8Z,gBACMjuK,KAAKuzK,eAAiBvzK,KAAKg/J,qBAC7Bh/J,KAAKkkH,UAAW,IAGpB6vD,UAAW7jK,GACLlQ,KAAKkkH,UAAYlkH,KAAK6Z,QAC1B7Z,KAAK0zK,qBAEDzkK,KAAK4P,IAAI3O,EAAEqkK,UAAYrkK,EAAEskK,aAAe,MACxCx0K,KAAK6Z,OACP3J,EAAEskK,aAAex0K,KAAK8yK,UAAUj5J,MAChC7Z,KAAKkkH,UAAW,GACRlkH,KAAK6Z,OAAS7Z,KAAKkkH,WAAUlkH,KAAKkkH,UAAW,MAEzD8vD,WAAY9jK,GACNlQ,KAAKkkH,WAAalkH,KAAK6Z,QAC3B7Z,KAAK0zK,qBAEDzkK,KAAK4P,IAAI3O,EAAEqkK,UAAYrkK,EAAEskK,aAAe,OACvCx0K,KAAK6Z,OACR3J,EAAEskK,aAAex0K,KAAK8yK,UAAUl5J,KAChC5Z,KAAKkkH,UAAW,EACTlkH,KAAK6Z,OAAS7Z,KAAKkkH,WAAUlkH,KAAKkkH,UAAW,MAKxDkgB,oBACE,IACGpkI,KAAKkkH,UACNlkH,KAAKm0J,UACLn0J,KAAK2yK,YACJ3yK,KAAK+uI,IACN,OAAO,EAET,MAAM/2G,EAAQ5d,OAAOpa,KAAKuyK,YAAcvyK,KAAKwyK,iBAAmBxyK,KAAKg4B,OAErE,OAAOvZ,MAAMuZ,GAASh4B,KAAK+uI,IAAIvlG,YAAcxR,GAE/Cy7I,kBAAmBxtK,GACbjG,KAAKsyK,eAAiBtyK,KAAKuyK,cAAgBtsK,GAAKjG,KAAKumI,MAAM,sBAAuBtgI,KAI1F9G,OAAQ2B,GACN,MAAMwjG,EAAW,CACftkG,KAAKq0K,aACLr0K,KAAKy/H,aACLz/H,KAAK4zK,YACL5zK,KAAKs0K,aAKP,OAFIt0K,KAAK4hG,MAAOiqC,EAAAA,EAAAA,IAAQ7rI,KAAM,SAAQskG,EAASv5F,QAAQ/K,KAAKkkI,iBAErDpjI,EAAEd,KAAK8wF,IAAK9wF,KAAKk+H,mBAAmBl+H,KAAK6yB,MAAO,CACrDorG,MAAOj+H,KAAKo9F,QACZjoE,MAAOn1B,KAAKioC,OACZ63F,WAAY9/H,KAAKsxK,gBACjB/pE,GAAIvnG,KAAKi0K,iBACP3vE,O,yHC9cR,EAAemwE,EAAf,E,mBCAA,EAAeC,EAAf,E,oBCOA,GAAez3C,EAAAA,EAAAA,GACbgC,EAAAA,GAEAv3H,OAAO,CACPmC,KAAM,cAENmO,MAAO,CACLwoJ,MAAOjjC,SAGTp+H,OAAQ2B,GACN,OAAOA,EAAE,MAAO,CACdk9H,YAAa,cACbC,MAAO,CACL,qBAAsBj+H,KAAKwgK,SACxBxgK,KAAKykI,cAEVvpB,MAAOl7G,KAAKm/H,OACZ53B,GAAIvnG,KAAK4qI,YACR5qI,KAAKu/H,OAAOxjC,YC1BnB,I,sEC+BA,GAAekhC,EAAAA,EAAAA,GAAOqN,EAAAA,EAAWrL,EAAAA,GAAWv3H,OAAO,CACjDmC,KAAM,gBAGNi2H,WAAY,CACV6O,OAAAA,EAAAA,GAGF32H,MAAO,CACL28J,OAAQp3C,QACRC,MAAOD,QACPwI,aAAcxI,QACdp9F,MAAO,CACLx5B,KAAMyE,MACN2wF,QAAS,IAAM,IAEjB64E,aAAc,CACZjuK,KAAM,CAAC6R,OAAQpN,MAAO8nF,UACtB6I,QAAS,YAEXmpC,SAAU,CACRv+H,KAAM,CAAC6R,OAAQpN,MAAO8nF,UACtB6I,QAAS,QAEX84E,UAAW,CACTluK,KAAM,CAAC6R,OAAQpN,MAAO8nF,UACtB6I,QAAS,SAEXw2D,WAAY/5I,OACZ8sH,SAAU/H,QACVgI,YAAa,KACbK,cAAe,CACbj/H,KAAMyE,MACN2wF,QAAS,IAAM,KAInB+hC,SAAU,CACRg3C,cACE,OAAO90K,KAAK4lI,cAAcnqH,KAAIqB,GAAQ9c,KAAK6lI,SAAS/oH,MAEtDi4J,kBACE,OAAOvoK,OAAOqC,KAAK7O,KAAKggI,aAAahgI,KAAK6yB,OAAOorG,OAAS,IAAIjsH,KAAK,MAErEgjK,mBACE,MAAM7pC,EAAO,CACXjwB,MAAO,CACL0kB,UAAM95H,GAERyhG,GAAI,CACFu6D,UAAY5xJ,GAAaA,EAAE4uG,mBAI/B,OAAO9+G,KAAKo+H,eAAe2vC,EAAAA,EAAW5iC,EAAM,CAC1CnrI,KAAKi1K,eAAej1K,KAAKuyJ,gBAK/BlzB,QAAS,CACP61C,UAAWp4J,EAAc6uI,GACvB,OAAO3rJ,KAAKo+H,eAAe+2C,EAAAA,EAAiB,CAC1Cn1K,KAAKo+H,eAAeu3B,EAAAA,EAAiB,CACnC39I,MAAO,CACL6a,MAAO7yB,KAAK6yB,MACZzuB,MAAOunJ,EACPhd,QAAQ,GAEVpnC,GAAI,CACFj1E,MAAO,IAAMtyB,KAAKumI,MAAM,SAAUzpH,SAK1Cs4J,WAAYp9J,GACV,OAAOhY,KAAKo+H,eAAes2C,EAAU,CAAE18J,MAAAA,KAEzCq9J,gBAAiB15I,GAGf,GAFAA,EAAOA,GAAQ,IAEV37B,KAAKulI,aAAevlI,KAAKslI,SAAU,OAAO2b,EAAAA,EAAAA,GAAWtlH,GAE1D,MAAM,MAAEliB,EAAF,OAAS67J,EAAT,IAAiB57J,GAAQ1Z,KAAKu1K,oBAAoB55I,GAExD,MAAO,IAAGslH,EAAAA,EAAAA,GAAWxnI,KAASzZ,KAAKw1K,aAAaF,MAAUr0B,EAAAA,EAAAA,GAAWvnI,MAEvEo9I,UAAW9+I,GACT,OAAOhY,KAAKo+H,eAAeq3C,EAAY,CAAEz9J,MAAAA,GAASA,EAAMspG,SAE1Dk0D,aAAc75I,GACZ,MAAO,oCAAmCslH,EAAAA,EAAAA,GAAWtlH,aAEvD45I,oBAAqB55I,GAKnB,MAAM4pG,GAAevlI,KAAKulI,aAAe,IAAI91H,WAAW01H,oBAClD37H,EAAQmyB,EAAKwpG,oBAAoBpgI,QAAQwgI,GAE/C,GAAI/7H,EAAQ,EAAG,MAAO,CAAEiQ,MAAOkiB,EAAM25I,OAAQ,GAAI57J,IAAK,IAEtD,MAAMD,EAAQkiB,EAAKrtB,MAAM,EAAG9E,GACtB8rK,EAAS35I,EAAKrtB,MAAM9E,EAAOA,EAAQ+7H,EAAYv8H,QAC/C0Q,EAAMiiB,EAAKrtB,MAAM9E,EAAQ+7H,EAAYv8H,QAC3C,MAAO,CAAEyQ,MAAAA,EAAO67J,OAAAA,EAAQ57J,IAAAA,IAE1Bg8J,SAAS,KACP54J,EADO,MAEPtT,EAFO,SAGPwrC,EAAW,KAHJ,MAIP5wC,GAAQ,IAEHA,IAAOA,EAAQpE,KAAKgmI,QAAQlpH,IAE7BA,IAAStQ,OAAOsQ,KAClBk4B,EAAwB,OAAbA,EACPA,EACAh1C,KAAK2oI,YAAY7rH,IAGvB,MAAMquH,EAAO,CACXjwB,MAAO,CAGL,gBAAiB1iG,OAAOpU,GACxBgJ,GAAI,aAAapN,KAAKsgI,QAAQ92H,IAC9Bo2H,KAAM,UAERr4B,GAAI,CACFu6D,UAAY5xJ,IAEVA,EAAE4uG,kBAEJ6K,MAAO,IAAM30E,GAAYh1C,KAAKumI,MAAM,SAAUzpH,IAEhD9E,MAAO,CACLw1H,YAAaxtI,KAAK+0K,gBAClB//H,SAAAA,EACA25F,QAAQ,EACRgd,WAAYvnJ,IAIhB,IAAKpE,KAAK0/H,aAAa5iH,KACrB,OAAO9c,KAAKo+H,eAAe2vC,EAAAA,EAAW5iC,EAAM,CAC1CnrI,KAAK20K,SAAW30K,KAAK+lI,cAAgB/lI,KAAKmgC,MAAMn3B,OAAS,EACrDhJ,KAAKk1K,UAAUp4J,EAAM1Y,GACrB,KACJpE,KAAKi1K,eAAen4J,EAAMtT,KAI9B,MAAMrJ,EAASH,KACT23J,EAAa33J,KAAK0/H,aAAa5iH,KAAK,CACxC3c,OAAAA,EACA2c,KAAAA,EACAo+F,MAAO,IACFiwB,EAAKjwB,SACLiwB,EAAKnzH,OAEVuvF,GAAI4jC,EAAK5jC,KAGX,OAAOvnG,KAAK21K,UAAUhe,GAClB33J,KAAKo+H,eAAe2vC,EAAAA,EAAW5iC,EAAMwsB,GACrCA,GAENsd,eAAgBn4J,EAAWtT,EAAQ,GACjC,MAAMg9F,EAAYxmG,KAAKq1K,gBAAgBr1K,KAAK0qG,QAAQ5tF,IAEpD,OAAO9c,KAAKo+H,eAAegwC,EAAAA,GACzB,CAACpuK,KAAKo+H,eAAeiwC,EAAAA,GAAgB,CACnC3pC,SAAU,CAAEl+B,UAAAA,QAIlBw/B,QAASlpH,GACP,OAAO9c,KAAK80K,YAAY/vK,QAAQ/E,KAAK6lI,SAAS/oH,KAAU,GAE1D64J,UAAWrsC,GACT,OAAwB,IAAjBA,EAAMtgI,QACkB,MAA7BsgI,EAAM,GAAGqlB,kBACuC,gBAAhDrlB,EAAM,GAAGqlB,iBAAiBinB,KAAKj2K,QAAQkK,MAE3C8+H,YAAa7rH,GACX,OAAOygH,SAAQ+I,EAAAA,EAAAA,IAAoBxpH,EAAM9c,KAAK40K,cAAc,KAE9DlqE,QAAS5tF,GACP,OAAOtE,QAAO8tH,EAAAA,EAAAA,IAAoBxpH,EAAM9c,KAAKklI,SAAUpoH,KAEzD+oH,SAAU/oH,GACR,OAAOwpH,EAAAA,EAAAA,IAAoBxpH,EAAM9c,KAAK60K,UAAW70K,KAAK0qG,QAAQ5tF,MAIlE3d,SACE,MAAMmlG,EAA0B,GAC1BqsD,EAAc3wJ,KAAKmgC,MAAMn3B,OAC/B,IAAK,IAAIQ,EAAQ,EAAGA,EAAQmnJ,EAAannJ,IAAS,CAChD,MAAMsT,EAAO9c,KAAKmgC,MAAM32B,GAEpBxJ,KAAK+lI,cACP/lI,KAAKgmI,QAAQlpH,KAGH,MAARA,EAAcwnF,EAAS/6F,KAAKvJ,KAAK01K,QAAQ,CAAE54J,KAAAA,EAAMtT,MAAAA,KAC5CsT,EAAKwkG,OAAQhd,EAAS/6F,KAAKvJ,KAAK82J,UAAUh6I,IAC1CA,EAAKi6I,QAASzyD,EAAS/6F,KAAKvJ,KAAKo1K,WAAWt4J,IAChDwnF,EAAS/6F,KAAKvJ,KAAK01K,QAAQ,CAAE54J,KAAAA,EAAMtT,MAAAA,MAS1C,OANA86F,EAASt7F,QAAUs7F,EAAS/6F,KAAKvJ,KAAKu/H,OAAO,YAAcv/H,KAAKg1K,kBAEhEh1K,KAAKu/H,OAAO,iBAAmBj7B,EAASv5F,QAAQ/K,KAAKu/H,OAAO,iBAE5Dv/H,KAAKu/H,OAAO,gBAAkBj7B,EAAS/6F,KAAKvJ,KAAKu/H,OAAO,gBAEjDv/H,KAAKo+H,eAAey3C,EAAAA,EAAO,CAChC73C,YAAa,gBACbC,MAAOj+H,KAAKykI,aACZvpB,MAAO,CACL0kB,KAAM,UACNorB,UAAW,GAEbhzI,MAAO,CAAEwlH,MAAOx9H,KAAKw9H,QACpBl5B,M,iDClQP,EAAem8B,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,aAENmO,MAAO,CACLu6I,WAAY,CACV5rJ,KAAM6R,OACNujF,QAAS,0B,8BCuBR,MAAM4oC,EAAmB,CAC9B+pC,cAAc,EACdrY,qBAAqB,EACrBsY,aAAa,EACbmH,aAAa,EACb3sI,UAAW,KAIPu4F,GAAazE,EAAAA,EAAAA,GACjBgM,EAAAA,EACAwiB,EAAAA,EACA8R,EAAAA,EACAwY,GAiBF,MAAer0C,EAAWh6H,SAAkBA,OAAO,CACjDmC,KAAM,WAENi2H,WAAY,CACV+9B,aAAAA,EAAAA,GAGF7lJ,MAAO,CACL+xJ,WAAY,CACVpjK,KAAM6R,OACNujF,QAAS,aAEXhmC,OAAQ,CACNpvD,KAAM,KACNo1F,SAAS,GAEXi6E,WAAYz4C,QACZ+kC,MAAO/kC,QACPglC,UAAWhlC,QACX04C,eAAgB14C,QAChB24C,cAAe34C,QACf4qC,MAAO5qC,QACPwI,aAAcxI,QACdp9F,MAAO,CACLx5B,KAAMyE,MACN2wF,QAAS,IAAM,IAEjBo6E,UAAW,CACTxvK,KAAM6R,OACNujF,QAAS,WAEX64E,aAAc,CACZjuK,KAAM,CAAC6R,OAAQpN,MAAO8nF,UACtB6I,QAAS,YAEXmpC,SAAU,CACRv+H,KAAM,CAAC6R,OAAQpN,MAAO8nF,UACtB6I,QAAS,QAEX84E,UAAW,CACTluK,KAAM,CAAC6R,OAAQpN,MAAO8nF,UACtB6I,QAAS,SAEXspC,UAAW,CACT1+H,KAAM,CAAC6R,OAAQpN,MAAOoB,QACtBuvF,QAAS,IAAM4oC,GAEjBgC,SAAUpJ,QACV64C,YAAa74C,QACb8wB,aAAc9wB,QACdslC,WAAYtlC,SAGdl7H,OACE,MAAO,CACLg0K,YAAar2K,KAAKg2K,WAAah2K,KAAKmgC,MAAQ,GAC5Cm2I,cAAc,EACd/uC,cAAc,EACdgvC,SAAU,GAIVxqB,eAA0BjmJ,IAAf9F,KAAKoE,MACZpE,KAAKoE,MACLpE,KAAK2mI,SAAW,QAAK7gI,EACzB+9G,eAAgB,EAChB+hB,cAAe,GACf4wC,qBAAsB,GACtBC,uBAAwB,IAI5B34C,SAAU,CAERuI,WACE,OAAOrmI,KAAK02K,iBAAiB12K,KAAKq2K,YAAYp1K,OAAOjB,KAAKmgC,SAE5Di9D,UACE,MAAO,IACF6rC,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAyCjpI,MAC5C,YAAY,EACZ,kBAAmBA,KAAKovJ,SACxB,yBAA0BpvJ,KAAK6iK,WAC/B,2BAA4B7iK,KAAKunI,aACjC,qBAAsBvnI,KAAK2mI,WAI/BlB,gBACE,OAAOzlI,KAAKqmI,UAEdswC,eACE,MAAO,QAAQ32K,KAAKsgI,QAEtBiuB,uBACE,MAAMnqJ,EAAQpE,KAAK2mI,SACf3mI,KAAK4lI,eACJ5lI,KAAK0qG,QAAQ1qG,KAAK4lI,cAAc,KAAO,IAAIn2H,WAEhD,MAAiC,oBAAtBzP,KAAK42K,aACP52K,KAAK42K,aAAaxyK,GAGpBA,EAAM4E,QAEf82H,aACE,OAAO9/H,KAAK6mI,UAAY,CAAC,CACvBh9H,KAAM,gBACNzF,MAAO,CACLyoD,QAAS7sD,KAAK83G,KACdknD,iBAAkBh/J,KAAKg/J,iBACvBoB,QAAS,IAAMpgK,KAAK2/J,mCAEnB75J,GAEP+wK,gBACE,MAAO,QAETznB,WACE,OAAOpvJ,KAAKsiK,OAAStiK,KAAK6iK,YAE5Br7B,UACE,OAAOjK,QAAQv9H,KAAKovJ,UAAYpvJ,KAAK0/H,aAAaz4B,YAEpDw/B,UACE,OAAOzmI,KAAK4lI,cAAc58H,OAAS,GAErCk+H,WACE,MAAM3nI,EAAUS,KAAKC,QAAWD,KAAKC,OAAOF,QAASW,SAAoCZ,SACnFo7G,EAAQ37G,EAAU,CACtB,CAACA,IAAU,GACT,GAEJ,MAAO,CACL27G,MAAO,IACFA,EACH9tG,GAAIpN,KAAK22K,cAEX3+J,MAAO,CACL28J,OAAQ30K,KAAK2mI,SACb9zG,MAAO7yB,KAAKm2K,UACZ34C,MAAOx9H,KAAKw9H,MACZuI,aAAc/lI,KAAK+lI,aACnB5lG,MAAOngC,KAAKmnI,iBACZytC,aAAc50K,KAAK40K,aACnB1vC,SAAUllI,KAAKklI,SACf2vC,UAAW70K,KAAK60K,UAChBtiB,WAAYvyJ,KAAKy+H,SAASC,KAAKt9G,EAAEphB,KAAKuyJ,YACtC3sB,cAAe5lI,KAAK4lI,eAEtBr+B,GAAI,CACF0b,OAAQjjH,KAAKujH,YAEfinC,YAAa,CACX1tI,KAAM9c,KAAK0/H,aAAa5iH,QAI9Bg6J,aAKE,OAJI92K,KAAKu/H,OAAO,YAAcv/H,KAAKu/H,OAAO,iBAAmBv/H,KAAKu/H,OAAO,kBACvEmkC,EAAAA,EAAAA,IAAa,6DAGR1jK,KAAKo+H,eAAe24C,EAAa/2K,KAAKknI,WAE/CC,mBACE,OAAQnnI,KAAK8mI,YAAoB4qB,KAC7B1xJ,KAAKylI,cACLzlI,KAAKylI,cAAcn3H,MAAM,EAAGtO,KAAKu2K,WAEvC3vC,YAAa,KAAM,EACnBE,cACE,IAAIkwC,EAA4C,kBAAnBh3K,KAAKqlI,UAC9BrlI,KAAKqlI,UAAU3wH,MAAM,KACrB1U,KAAKqlI,UAST,OAPIj6H,MAAMiD,QAAQ2oK,KAChBA,EAAkBA,EAAgBtlI,QAAO,CAACC,EAAKjyB,KAC7CiyB,EAAIjyB,EAAEzP,SAAU,EACT0hC,IACN,KAGE,IACFgzF,EACHwjC,MAAOnoK,KAAKmoK,MACZ/jK,MAAOpE,KAAK4mI,aAAe5mI,KAAKunI,aAChC0vC,YAAaD,EAAgBzuI,QAAU,EAAI,KACxCyuI,KAKT71C,MAAO,CACL8F,cAAehhI,GACbjG,KAAKmkK,aAAel+J,EACpBjG,KAAKiqI,mBAEDjqI,KAAK2mI,UACP3mI,KAAKwhI,WAAU,KAAK,MAClB,SAAAxhI,KAAKqnI,MAAMU,OAAX,EAAiBM,uBAIvBd,aAActhI,GACZmO,OAAOpP,YAAW,IAAMhF,KAAKk3K,mBAAmBjxK,MAElDk6B,MAAO,CACLozH,WAAW,EACX1mG,QAAS5mD,GACHjG,KAAKg2K,YAIPh2K,KAAKwhI,WAAU,KACbxhI,KAAKq2K,YAAcr2K,KAAK02K,iBAAiB12K,KAAKq2K,YAAYp1K,OAAOgF,OAIrEjG,KAAKiqI,sBAKX5K,QAAS,CAEPvnB,KAAM5nG,GACJ+4H,EAAAA,EAAAA,QAAAA,QAAAA,KAAAA,KAAqCjpI,KAAMkQ,GAC3ClQ,KAAKunI,cAAe,EACpBvnI,KAAK6mI,WAAY,EACjB7mI,KAAK6jH,eAAiB,EACtB7jH,KAAKioI,cAAc,IAGrBP,eAEK1nI,KAAK0oI,gBACN1oI,KAAKunI,eAGPvnI,KAAKunI,cAAe,IAEtBwB,oBACE/oI,KAAK8oI,SAAS9oI,KAAK2mI,SAAW,GAAK,MACnC3mI,KAAKioI,cAAc,GACnBjoI,KAAKwhI,WAAU,IAAMxhI,KAAKqnI,MAAM/0G,OAAStyB,KAAKqnI,MAAM/0G,MAAM22E,UAEtDjpG,KAAKo2K,cAAap2K,KAAKunI,cAAe,IAE5Cy3B,iBAAkB9uJ,GAChB,OAAKlQ,KAAKunI,eAGPvnI,KAAKi/J,gBAIJj/J,KAAKm3K,eACNn3K,KAAKm3K,aAAahjH,SAASjkD,EAAE/B,UAG9BnO,KAAK+uI,MACJ/uI,KAAK+uI,IAAI56E,SAASjkD,EAAE/B,SACrB+B,EAAE/B,SAAWnO,KAAK+uI,KAGtB2nC,iBAAkB3hK,GAChB,MAAMqiK,EAAe,IAAIlsI,IACzB,IAAK,IAAI1hC,EAAQ,EAAGA,EAAQuL,EAAI/L,SAAUQ,EAAO,CAC/C,MAAMsT,EAAO/H,EAAIvL,GAGjB,GAAY,MAARsT,EACF,SAGF,GAAIA,EAAKwkG,QAAUxkG,EAAKi6I,QAAS,CAC/BqgB,EAAanjJ,IAAInX,EAAMA,GACvB,SAGF,MAAM7W,EAAMjG,KAAK6lI,SAAS/oH,IAGzBs6J,EAAar6J,IAAI9W,IAAQmxK,EAAanjJ,IAAIhuB,EAAK6W,GAElD,OAAO1R,MAAMuB,KAAKyqK,EAAahjJ,WAEjCs7H,kBAAmB5yI,GACjB,MAAM+3J,EAAY70K,KAAK6lI,SAAS/oH,GAEhC,OAAQ9c,KAAKinI,eAAiB,IAAI1jE,WAAWz6D,GAAc9I,KAAKgnI,gBAAgBhnI,KAAK6lI,SAAS/8H,GAAI+rK,MAEpGsC,aACE,OAAOn3K,KAAKqnI,MAAMU,MAAQ/nI,KAAKqnI,MAAMU,KAAKV,MAAMxvH,SAElD42I,iBAAkB3xI,EAActT,GAC9B,MAAM2iJ,EACJnsJ,KAAKmsJ,YACLnsJ,KAAK2oI,YAAY7rH,GAEb4rH,GAAiByjB,GAAcnsJ,KAAK0oI,cAE1C,OAAO1oI,KAAKo+H,eAAe8vB,EAAAA,EAAO,CAChClwB,YAAa,iBACb9iB,MAAO,CAAE8vC,UAAW,GACpBhzI,MAAO,CACL4rG,MAAO5jH,KAAKi2K,gBAAkBvtC,EAC9B1zF,SAAUm3G,EACVR,WAAYniJ,IAAUxJ,KAAK6jH,cAC3B2a,MAAOx+H,KAAK6iK,YAEdt7D,GAAI,CACFoiB,MAAQz5G,IACDw4H,IAELx4H,EAAE0/H,kBAEF5vI,KAAK6jH,cAAgBr6G,IAEvB,cAAe,IAAMxJ,KAAK6uJ,YAAY/xI,IAExC5W,IAAK6J,KAAKI,UAAUnQ,KAAK6lI,SAAS/oH,KACjC9c,KAAK0qG,QAAQ5tF,KAElBu6J,kBAAmBv6J,EAActT,EAAe2kC,GAC9C,MAAMtb,EAAQrpB,IAAUxJ,KAAK6jH,eAAiB7jH,KAAKm+H,cAC7CguB,EACJnsJ,KAAKmsJ,YACLnsJ,KAAK2oI,YAAY7rH,GAGnB,OAAO9c,KAAKo+H,eAAe,MAAOp+H,KAAKggI,aAAantG,EAAO,CACzDmrG,YAAa,iDACbC,MAAO,CACL,gCAAiCkuB,GAEnCjmJ,IAAK6J,KAAKI,UAAUnQ,KAAK6lI,SAAS/oH,MAChC,GAAG9c,KAAK0qG,QAAQ5tF,KAAQqxB,EAAO,GAAK,SAE1Co/G,iBACE,MAAM+pB,EAAat3K,KAAKupI,gBAClBj3G,EAAQtyB,KAAKgpI,WAYnB,OARI59H,MAAMiD,QAAQipK,GAChBA,EAAW/tK,KAAK+oB,IAGhBglJ,EAAWhzE,SAAWgzE,EAAWhzE,UAAY,GAC7CgzE,EAAWhzE,SAAS/6F,KAAK+oB,IAGpB,CACLtyB,KAAKu3K,cACLv3K,KAAKo+H,eAAe,MAAO,CACzBJ,YAAa,iBACb8B,WAAY9/H,KAAK8/H,YAChB,CACD9/H,KAAKqsJ,WACLrsJ,KAAK8iC,OAAS9iC,KAAKw3K,SAAS,UAAY,KACxCF,EACAt3K,KAAKkoC,OAASloC,KAAKw3K,SAAS,UAAY,KACxCx3K,KAAKy3K,eACLz3K,KAAK03K,cACL13K,KAAK23K,mBAEP33K,KAAK43K,UACL53K,KAAK+qJ,gBAGT8G,QACElrJ,EACA8qC,EACAu5H,GAEA,MAAMrtC,EAAO4tB,EAAAA,EAAAA,QAAAA,QAAAA,QAAAA,KAAoCvrJ,KAAM2G,EAAM8qC,EAAIu5H,GAajE,MAXa,WAATrkK,IAEFg3H,EAAKr5B,SAAU,GAAGjiG,MAAO6mI,EAAAA,EAAAA,IAAUvL,EAAKr5B,SAAU,GAAGjiG,KAAO,CAC1D64G,MAAO,CACL8vC,SAAUrtB,EAAKr5B,SAAU,GAAGqqD,iBAAkBhvH,WAAa,KAC3D,cAAe,OACf,kBAAc75B,MAKb63H,GAETqL,WACE,MAAM12G,EAAQ22G,EAAAA,EAAAA,QAAAA,QAAAA,SAAAA,KAAyCjpI,MAiBvD,cAfOsyB,EAAMjwB,KAAM64G,MAAOrxG,KAE1ByoB,EAAMjwB,MAAO6mI,EAAAA,EAAAA,IAAU52G,EAAMjwB,KAAO,CAClCqiI,SAAU,CAAEtgI,MAAO,MACnB82G,MAAO,CACLylD,UAAU,EACVh6J,KAAM,OACN,gBAAiB6R,OAAOxY,KAAK8gK,YAC7B,yBAAyB33B,EAAAA,EAAAA,IAAqBnpI,KAAKqnI,MAAMU,KAAM,iBAC/DqB,cAAcD,EAAAA,EAAAA,IAAqB72G,EAAMjwB,KAAO,qBAAsB,OACtE8lG,YAAenoG,KAAKymI,UAAYzmI,KAAKqjK,wBAAyBrjK,KAAK6mI,WAAc7mI,KAAKsjK,cAAgCx9J,EAAnB9F,KAAKmoG,aAE1GZ,GAAI,CAAEswE,SAAU73K,KAAK83K,cAGhBxlJ,GAETqlJ,iBACE,OAAO33K,KAAKo+H,eAAe,QAAS,CAClCsG,SAAU,CAAEtgI,MAAOpE,KAAK+rJ,WACxB7wC,MAAO,CACLv0G,KAAM,SACNkD,KAAM7J,KAAKstJ,OAAOzjJ,SAIxBw/H,eACE,MAAMlqI,EAAS8pI,EAAAA,EAAAA,QAAAA,QAAAA,aAAAA,KAA6CjpI,MAU5D,OARAb,EAAOkD,KAAM64G,MAAQ,IAChB/7G,EAAOkD,KAAM64G,MAChB0kB,KAAM,SACN,gBAAiB,UACjB,gBAAiBpnH,OAAOxY,KAAKunI,cAC7B,YAAavnI,KAAK22K,cAGbx3K,GAET44K,UAEE,OAAI/3K,KAAKu/H,OAAO,YAAcv/H,KAAKu/H,OAAO,iBAAmBv/H,KAAKu/H,OAAO,eAChEv/H,KAAKg4K,kBAELh4K,KAAK82K,YAGhBkB,kBACE,MAAM3zC,EAAQ,CAAC,eAAgB,UAAW,eACvClsH,QAAOu/I,GAAY13J,KAAKu/H,OAAOm4B,KAC/Bj8I,KAAIi8I,GAAY13J,KAAKo+H,eAAe,WAAY,CAC/CkL,KAAMouB,GACL13J,KAAKu/H,OAAOm4B,MAIjB,OAAO13J,KAAKo+H,eAAe24C,EAAa,IACnC/2K,KAAKknI,UACP7C,IAELuzC,UACE,MAAM5/J,EAAQhY,KAAK8mI,YAgBnB,OAfA9uH,EAAMymJ,UAAYz+J,KAAKqnI,MAAM,cAMX,KAAhBrnI,KAAK+1D,SACW,IAAhB/1D,KAAK+1D,QACW,WAAhB/1D,KAAK+1D,OAEL/9C,EAAM+9C,OAAS/1D,KAAK+uI,IAEpB/2H,EAAM+9C,OAAS/1D,KAAK+1D,OAGf/1D,KAAKo+H,eAAeq2C,EAAO,CAChCv5D,MAAO,CAAE0kB,UAAM95H,GACfkS,MAAAA,EACAuvF,GAAI,CACFj1E,MAAQrsB,IACNjG,KAAKunI,aAAethI,EACpBjG,KAAK6mI,UAAY5gI,GAEnB6gG,OAAQ9mG,KAAKshI,UAEf98B,IAAK,QACJ,CAACxkG,KAAK+3K,aAEXxuC,gBACE,IAAIvgI,EAAShJ,KAAK4lI,cAAc58H,OAChC,MAAMs7F,EAAW,IAAIl5F,MAAMpC,GAE3B,IAAIivK,EAEFA,EADEj4K,KAAK0/H,aAAaz4B,UACLjnG,KAAKk4K,iBACXl4K,KAAKovJ,SACCpvJ,KAAKyuJ,iBAELzuJ,KAAKq3K,kBAGtB,MAAOruK,IACLs7F,EAASt7F,GAAUivK,EACjBj4K,KAAK4lI,cAAc58H,GACnBA,EACAA,IAAWs7F,EAASt7F,OAAS,GAIjC,OAAOhJ,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,wBACZ15B,IAEL4zE,iBAAkBp7J,EAActT,GAC9B,OAAOxJ,KAAK0/H,aAAaz4B,UAAW,CAClCiU,MAAO,CACL+iB,MAAO,kBAET99H,OAAQH,KACR8c,KAAAA,EACAtT,MAAAA,EACAy5G,OAAS/yG,IACPA,EAAE0/H,kBACF5vI,KAAK6jH,cAAgBr6G,GAEvBi6G,SAAUj6G,IAAUxJ,KAAK6jH,cACzB7uE,UAAWh1C,KAAK0oI,iBAGpBqmB,eACE,OAAO/uJ,KAAKqnI,MAAMU,KAAQ/nI,KAAKqnI,MAAMU,KAAgCC,WAAa,GAEpFW,YAAa7rH,GACX,OAAOwpH,EAAAA,EAAAA,IAAoBxpH,EAAM9c,KAAK40K,cAAc,IAEtDlqE,QAAS5tF,GACP,OAAOwpH,EAAAA,EAAAA,IAAoBxpH,EAAM9c,KAAKklI,SAAUpoH,IAElD+oH,SAAU/oH,GACR,OAAOwpH,EAAAA,EAAAA,IAAoBxpH,EAAM9c,KAAK60K,UAAW70K,KAAK0qG,QAAQ5tF,KAEhE0vI,OAAQt8I,GACNA,GAAKlQ,KAAKumI,MAAM,OAAQr2H,IAE1B2+I,YAAa/xI,GACP9c,KAAK2mI,SAAU3mI,KAAKujH,WAAWzmG,GAC9B9c,KAAK8oI,SAAS,MAGe,IAA9B9oI,KAAK4lI,cAAc58H,OACrBhJ,KAAKunI,cAAe,EAEpBvnI,KAAKunI,cAAe,EAEtBvnI,KAAK6jH,eAAiB,GAExB5tF,QAAS/lB,GACFlQ,KAAK0oI,gBAEL1oI,KAAKypI,cAAcv5H,EAAE/B,UACxBnO,KAAKunI,cAAe,GAGjBvnI,KAAK6mI,YACR7mI,KAAK6mI,WAAY,EACjB7mI,KAAKumI,MAAM,UAGbvmI,KAAKumI,MAAM,QAASr2H,KAEtBioK,UAAWjoK,GACTA,EAAE4uG,iBACE9+G,KAAKunI,eACPr3H,EAAE0/H,kBACF5vI,KAAKunI,cAAe,IAGxBuwC,WAAY5nK,GACV,GACElQ,KAAK2mI,WACJ3mI,KAAK0oI,eACN1oI,KAAKk2K,cACL,OAEF,MAAMkC,EAA4B,IAC5BnlK,EAAMolK,YAAYplK,MACpBA,EAAMjT,KAAKy2K,uBAAyB2B,IACtCp4K,KAAKw2K,qBAAuB,IAE9Bx2K,KAAKw2K,sBAAwBtmK,EAAEhK,IAAIC,cACnCnG,KAAKy2K,uBAAyBxjK,EAE9B,MAAMzJ,EAAQxJ,KAAKqmI,SAAS9iE,WAAUzmD,IACpC,MAAM6e,GAAQ37B,KAAK0qG,QAAQ5tF,IAAS,IAAIrN,WAExC,OAAOksB,EAAKx1B,cAAcmxB,WAAWt3B,KAAKw2K,yBAEtC15J,EAAO9c,KAAKqmI,SAAS78H,IACZ,IAAXA,IACFxJ,KAAKu2K,SAAWtnK,KAAKmQ,IAAIpf,KAAKu2K,SAAU/sK,EAAQ,GAChDxJ,KAAK8oI,SAAS9oI,KAAKquJ,aAAevxI,EAAO9c,KAAK6lI,SAAS/oH,IACvD9c,KAAKwhI,WAAU,IAAMxhI,KAAKqnI,MAAMU,KAAKG,aACrCljI,YAAW,IAAMhF,KAAKioI,aAAaz+H,OAGvCqgI,UAAW35H,GACT,GAAIlQ,KAAK8gK,YAAc5wJ,EAAEytG,UAAY4qB,EAAAA,GAAAA,IAAc,OAEnD,MAAM5qB,EAAUztG,EAAEytG,QACZoqB,EAAO/nI,KAAKqnI,MAAMU,KAIxB,OAFA/nI,KAAKumI,MAAM,UAAWr2H,GAEjB63H,GAID/nI,KAAKunI,cAAgB,CAACgB,EAAAA,GAAAA,GAAaA,EAAAA,GAAAA,KAAeA,EAAAA,GAAAA,KAAeA,EAAAA,GAAAA,IAAcA,EAAAA,GAAAA,OAAgB/mG,SAASm8E,IAC1G39G,KAAKwhI,WAAU,KACbuG,EAAKgpC,gBAAgB7gK,GACrBlQ,KAAKumI,MAAM,oBAAqBwB,EAAKC,cAKrC,CACFO,EAAAA,GAAAA,MACAA,EAAAA,GAAAA,OACA/mG,SAASm8E,IAAU39G,KAAK0nI,gBAOvB1nI,KAAKunI,cACN,CAACgB,EAAAA,GAAAA,GAAaA,EAAAA,GAAAA,KAAeA,EAAAA,GAAAA,KAAeA,EAAAA,GAAAA,KAAc/mG,SAASm8E,GAC5D39G,KAAKgqI,SAAS95H,GAGnBytG,IAAY4qB,EAAAA,GAAAA,IAAqBvoI,KAAKm4K,UAAUjoK,GAGhDytG,IAAY4qB,EAAAA,GAAAA,IAAqBvoI,KAAK+pI,UAAU75H,GAGhDytG,IAAY4qB,EAAAA,GAAAA,MAAuBvoI,KAAK8pI,YAAY55H,QAAxD,QAjCA,GAmCFgnK,mBAAoBjxK,GAIlB,GACGjG,KAAK2mI,WAAa1gI,GACnBjG,KAAK+uJ,gBAAkB,EACvB,OAEF,MAAMhnB,EAAO/nI,KAAKqnI,MAAMU,KAExB,GAAKA,GAAS/nI,KAAKymI,QAAnB,CAGAzmI,KAAKqnI,MAAMU,KAAKG,WAChB,IAAK,IAAIp/H,EAAI,EAAGA,EAAIi/H,EAAKknC,MAAMjmK,OAAQF,IACrC,GAAoD,SAAhDi/H,EAAKknC,MAAMnmK,GAAG0qD,aAAa,iBAA6B,CAC1DxzD,KAAKioI,aAAan/H,GAClB,SAINsiK,UAAWl7J,GAGPlQ,KAAKmqK,cACO,IAAZj6J,EAAEwtG,OACF19G,KAAK0oI,eAKD1oI,KAAKypI,cAAcv5H,EAAE/B,SACvBnO,KAAKwhI,WAAU,IAAOxhI,KAAKunI,cAAgBvnI,KAAKunI,eAIpD0B,EAAAA,EAAAA,QAAAA,QAAAA,UAAAA,KAA0CjpI,KAAMkQ,IAElDoxH,WACE,GAAKthI,KAAKunI,aAEH,CACL,GAAIvnI,KAAKu2K,SAAWv2K,KAAKylI,cAAcz8H,OAAQ,OAE/C,MAAMsvK,EACJt4K,KAAKm3K,aAAavG,cACjB5wK,KAAKm3K,aAAanuE,UACnBhpG,KAAKm3K,aAAa1tI,cAChB,IAEA6uI,IACFt4K,KAAKu2K,UAAY,SAXnB19J,uBAAsB,IAAO7Y,KAAKm3K,aAAanuE,UAAY,KAe/D8gC,YAAa55H,GACXA,EAAE4uG,kBAEJirB,UAAW75H,GACT,MAAM63H,EAAO/nI,KAAKqnI,MAAMU,KAExB,IAAKA,EAAM,OAEX,MAAMmnC,EAAannC,EAAKmnC,YAKrBlvK,KAAK2mI,UACNuoC,GACAlvK,KAAKunI,cAELr3H,EAAE4uG,iBACF5uG,EAAE0/H,kBAEFs/B,EAAWvlD,SAKX3pH,KAAK83G,KAAK5nG,IAGd85H,SAAU95H,GACR,MAAM63H,EAAO/nI,KAAKqnI,MAAMU,KAExB,IAAKA,EAAM,OAOX,GALA73H,EAAE4uG,iBAKE9+G,KAAK2mI,SAAU,OAAO3mI,KAAK0nI,eAE/B,MAAM/pB,EAAUztG,EAAEytG,QAIlBoqB,EAAKpF,UAAW,EAEhBvuH,OAAOyE,uBAAsB,KAG3B,GAFAkvH,EAAKG,YAEAH,EAAKkoC,kBAAmB,OAAOjwK,KAAK0nI,eAEzC,OAAQ/pB,GACN,KAAK4qB,EAAAA,GAAAA,GACHR,EAAKkpC,WACL,MACF,KAAK1oC,EAAAA,GAAAA,KACHR,EAAKipC,WACL,MACF,KAAKzoC,EAAAA,GAAAA,KACHR,EAAKopC,YACL,MACF,KAAK5oC,EAAAA,GAAAA,IACHR,EAAKmpC,WACL,MAEJlxK,KAAKujH,WAAWvjH,KAAKqmI,SAASrmI,KAAK+uJ,qBAGvCxrC,WAAYzmG,GACV,GAAK9c,KAAK2mI,SAGH,CACL,MAAMM,GAAiBjnI,KAAKinI,eAAiB,IAAI34H,QAC3CxF,EAAI9I,KAAK0vJ,kBAAkB5yI,GASjC,IAPO,IAAPhU,EAAWm+H,EAAcx9H,OAAOX,EAAG,GAAKm+H,EAAc19H,KAAKuT,GAC3D9c,KAAK8oI,SAAS7B,EAAcxrH,KAAK3S,GACxB9I,KAAKquJ,aAAevlJ,EAAI9I,KAAK6lI,SAAS/8H,MAK3C9I,KAAK+lI,aACP/lI,KAAKioI,cAAc,OACd,CACL,MAAMz+H,EAAQxJ,KAAKqmI,SAASthI,QAAQ+X,IAC/BtT,IACHxJ,KAAKwhI,WAAU,IAAMxhI,KAAKqnI,MAAMU,KAAKG,aACrCljI,YAAW,IAAMhF,KAAKioI,aAAaz+H,YAnBvCxJ,KAAK8oI,SAAS9oI,KAAKquJ,aAAevxI,EAAO9c,KAAK6lI,SAAS/oH,IACvD9c,KAAKunI,cAAe,GAuBxBU,aAAcz+H,GACZxJ,KAAKqnI,MAAMU,OAAU/nI,KAAKqnI,MAAMU,KAAgCC,UAAYx+H,IAE9EygI,mBACE,MAAMrE,EAAgB,GAChBxxG,EAAUp0B,KAAK2mI,UAAav7H,MAAMiD,QAAQrO,KAAKinI,eAEjDjnI,KAAKinI,cADL,CAACjnI,KAAKinI,eAGV,IAAK,MAAM7iI,KAASgwB,EAAQ,CAC1B,MAAM5qB,EAAQxJ,KAAKqmI,SAAS9iE,WAAU1xD,GAAK7R,KAAKgnI,gBAC9ChnI,KAAK6lI,SAASh0H,GACd7R,KAAK6lI,SAASzhI,MAGZoF,GAAS,GACXo8H,EAAcr8H,KAAKvJ,KAAKqmI,SAAS78H,IAIrCxJ,KAAK4lI,cAAgBA,GAEvBkD,SAAU1kI,GACHpE,KAAKgnI,gBAAgB5iI,EAAOpE,KAAKinI,iBACpCjnI,KAAKinI,cAAgB7iI,EACrBpE,KAAKumI,MAAM,SAAUniI,KAGzBqlI,cAAet7H,GAGb,MAAMoqK,EAAcv4K,KAAKqnI,MAAM,gBAE/B,OAAOkxC,IAAgBA,IAAgBpqK,GAAUoqK,EAAYpkH,SAAShmD,S,4ICx2B5E,GAAe8uH,EAAAA,EAAAA,GACbkpC,EAAAA,EACA77B,EAAAA,EACAiE,EAAAA,EACAhE,EAAAA,EACAC,EAAAA,EACAvL,EAAAA,GACAv3H,OAAO,CACPmC,KAAM,UAENmO,MAAO,CACL4lH,SAAUL,QACVi7C,OAAQj7C,QACRzsC,IAAK,CACHnqF,KAAM6R,OACNujF,QAAS,QAIb+hC,SAAU,CACR1gC,UACE,MAAO,CACL,WAAW,EACX,oBAAqBp9F,KAAK49H,SAC1B,kBAAmB59H,KAAKw4K,UACrBx4K,KAAKykI,gBACLzkI,KAAKouI,oBACLpuI,KAAKyqI,iBAGZxiG,SACE,OAAOjoC,KAAK2qI,mBAIhBxrI,OAAQ2B,GACN,MAAMuB,EAAO,CACX47H,MAAOj+H,KAAKo9F,QACZjoE,MAAOn1B,KAAKioC,OACZs/D,GAAIvnG,KAAK6/H,YAGX,OAAO/+H,EACLd,KAAK8wF,IACL9wF,KAAKk+H,mBAAmBl+H,KAAK6yB,MAAOxwB,GACpCrC,KAAKu/H,OAAOxjC,a,gDC5DlB,OAAemhC,EAAf,G,wHCkBA,MAAMwE,GAAazE,EAAAA,EAAAA,GACjBC,EAAAA,GACAwjC,EAAAA,EAAAA,GAAmB,WACnB+K,EAAAA,GAOF,MAAe/pC,EAAWh6H,OAAO,CAC/BmC,KAAM,YAENk4H,UACE,MAAO,CACL02C,UAAWz4K,KAAKy4K,UAChBC,WAAY14K,KAAK+vD,WAIrB/3C,MAAO,CACL2gK,UAAWp7C,QACXq7C,UAAWr7C,QACXmtB,KAAMntB,QACNxtE,SAAUwtE,SAGZl7H,OACE,MAAMA,EAAwB,CAC5BsgI,UAAU,EACVt3C,MAAO,GACPxzE,QAAS,GACTghK,WAAW,GAOb,OAJAx2K,EAAKspK,kBAAkC,MAAd3rK,KAAKoE,MAC1BpE,KAAKoE,OACJ/B,EAAK,IAAM,IAAI+/D,MAAQ,EAErB//D,GAGTy7H,SAAU,CACR1gC,UACE,MAAO,CACL,kBAAmBp9F,KAAK0qJ,KACxB,uBAAwB1qJ,KAAK2iI,SAC7B,sBAAuB3iI,KAAK+vD,SAC5B,wBAAyB/vD,KAAK24K,UAC9B,wBAAyB34K,KAAK44K,aAC3B17C,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAqCl9H,QAG5CioC,SACE,MAAO,IACFi1F,EAAAA,EAAAA,QAAAA,SAAAA,OAAAA,KAAoCl9H,SAK7CmhI,MAAO,CACL8F,cAAehhI,EAAKwhI,GAClBznI,KAAK64K,UAAYz+J,OAAOnU,GAAOmU,OAAOqtH,GAEtCA,IAAWznI,KAAK2iI,UAAW,GAE3B3iI,KAAK84K,eAIT55C,UAEMl/H,KAAK4qI,WAAWt4G,QAClB8sG,EAAAA,EAAAA,IAAS,SAAU,UAAWp/H,OAIlCohI,UACEphI,KAAK84K,cAGPz5C,QAAS,CACP96D,SAAUznD,GACmB,mBAAvBA,EAAKpc,SAASmJ,KAChB7J,KAAKqrF,MAAM9hF,KAAKuT,GACgB,sBAAvBA,EAAKpc,SAASmJ,OACtBiT,EAAiC47J,WAAa14K,KAAK+vD,SACpD/vD,KAAK6X,QAAQtO,KAAKuT,KAGtB6nD,WAAY7nD,GACiB,mBAAvBA,EAAKpc,SAASmJ,KAChB7J,KAAKqrF,MAAQrrF,KAAKqrF,MAAMlzE,QAAQrP,GAA4BA,IAAMgU,IAClC,sBAAvBA,EAAKpc,SAASmJ,OACtBiT,EAAiC47J,WAAa14K,KAAK+vD,SACpD/vD,KAAK6X,QAAU7X,KAAK6X,QAAQM,QAAQrP,GAA+BA,IAAMgU,MAG7E27J,UAAWr2G,GACTpiE,KAAKwhI,WAAU,IAAOxhI,KAAKinI,cAAgB7kE,KAE7C02G,aACE,IAAK,IAAItvK,EAAQxJ,KAAKqrF,MAAMriF,SAAUQ,GAAS,GAC7CxJ,KAAKqrF,MAAM7hF,GAAOk+F,OAAO1nG,KAAKinI,eAEhC,IAAK,IAAIz9H,EAAQxJ,KAAK6X,QAAQ7O,SAAUQ,GAAS,GAC/CxJ,KAAK6X,QAAQrO,GAAOk+F,OAAO1nG,KAAKinI,cAAsBjnI,KAAK64K,aAKjE15K,OAAQ2B,GACN,OAAOA,EAAEd,KAAK8wF,IAAK,CACjBktC,YAAa,YACbC,MAAOj+H,KAAKo9F,QACZjoE,MAAOn1B,KAAKioC,QACXjoC,KAAKu/H,OAAOxjC,a,iGCrHnB,MAAM2lC,GAAazE,EAAAA,EAAAA,GACjBqN,EAAAA,GACAg3B,EAAAA,EAAAA,GAAkB,UAAW,iBAAkB,cAOjD,OAAe5/B,EAAWh6H,SAAkBA,OAAO,CACjDmC,KAAM,iBAENi2H,WAAY,CAAE6O,OAAAA,EAAAA,GAEd69B,OAAQ,CAAC,aAETx0J,MAAO,CACL6a,MAAO,CACLlsB,KAAM6R,OACNujF,QAAS,WAEX1qD,SAAUksF,QACVw7C,aAAc,CACZpyK,KAAM6R,OACNujF,QAAS,aAEXi9E,SAAUz7C,QACV07C,SAAU,CACRtyK,KAAM6R,OACNujF,QAAS,SAEXm9E,UAAW,CACTvyK,KAAM6R,OACNujF,QAAS,UAEXo9E,MAAO,CACLxyK,KAAMyE,MACN2wF,QAAS,IAAM,IAEjB35B,KAAM,CAAChoD,OAAQ5B,SAGjBnW,OACE,MAAO,CACL6hH,UAAU,EACVk1D,YAAY,IAIhBt7C,SAAU,CACR1gC,UACE,MAAO,CACL,0BAA2Bp9F,KAAKkkH,SAChC,4BAA6BlkH,KAAKg5K,SAClC,4BAA6Bh5K,KAAKo5K,WAClC,qCAAsCp5K,KAAKitJ,SAC3C,4BAA6BjtJ,KAAKqxC,WAGtC47G,WACE,OAAOjtJ,KAAKm5K,MAAM3xG,MAAKg0E,IAA2B,IAAfA,QAIvCpa,UACEphI,KAAKq5K,SAAWr5K,KAAKq5K,QAAQ90G,SAASvkE,OAGxC2zJ,gBACE3zJ,KAAKq5K,SAAWr5K,KAAKq5K,QAAQ10G,WAAW3kE,OAG1Cq/H,QAAS,CACP1V,MAAOz5G,GACLA,EAAE0/H,kBAEF5vI,KAAKumI,MAAM,QAASr2H,GAEhBlQ,KAAKg5K,UACPh5K,KAAKy4K,UAAUz4K,KAAKoiE,OAGxByvF,QAASl0B,GACP,OAAO39H,KAAKo+H,eAAeO,EAAAA,EAAOhB,IAEpC0uB,WACE,OAAOrsJ,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,oBACZh+H,KAAKu/H,OAAOxjC,UAEjBu9E,UACE,MAAMzmJ,IAAU7yB,KAAKitJ,WAAajtJ,KAAKqxC,WAAYrxC,KAAKkkH,WAAalkH,KAAK6yB,MAE1E,OAAO7yB,KAAKo+H,eAAe,OAAQp+H,KAAKk+H,mBAAmBrrG,EAAO,CAChEmrG,YAAa,0BACXh+H,KAAKu5K,mBAEXA,iBACE,MAAMj1E,EAAW,GAcjB,OAZItkG,KAAKitJ,SACP3oD,EAAS/6F,KAAKvJ,KAAK6xJ,QAAQ7xJ,KAAKk5K,YACvBl5K,KAAKqxC,SACVrxC,KAAKg5K,SACP10E,EAAS/6F,KAAKvJ,KAAK6xJ,QAAQ7xJ,KAAKi5K,WAEhC30E,EAAS/6F,KAAKvJ,KAAK6xJ,QAAQ7xJ,KAAK+4K,eAGlCz0E,EAAS/6F,KAAKiP,OAAOxY,KAAKoiE,OAGrBkiC,GAETk1E,cAAetpK,GACTA,EAAEytG,UAAY4qB,EAAAA,GAAAA,OAChBvoI,KAAK2pH,MAAMz5G,IAGfw3F,OAAQtlC,GACNpiE,KAAKkkH,SAAW9hD,EAAK3yD,aAAezP,KAAKoiE,KAAK3yD,WAC9CzP,KAAKo5K,WAAah/J,OAAOgoD,GAAQhoD,OAAOpa,KAAKoiE,QAIjDjjE,OAAQ2B,GACN,OAAOA,EAAE,MAAO,CACdo6G,MAAO,CACL8vC,SAAUhrJ,KAAKg5K,SAAW,GAAK,GAEjCh7C,YAAa,kBACbC,MAAOj+H,KAAKo9F,QACZ0iC,WAAY,CAAC,CACXj2H,KAAM,SACNzF,MAAOpE,KAAKg5K,WAEdzxE,GAAI,CACFoiB,MAAO3pH,KAAK2pH,MACZ+iC,QAAS1sJ,KAAKw5K,gBAEf,CACDx5K,KAAKs5K,UACLt5K,KAAKqsJ,iB,mIChJX,MAAM3qB,GAAazE,EAAAA,EAAAA,IACjBqkC,EAAAA,EAAAA,GAAkB,UAAW,oBAAqB,cAWpD,MAAe5/B,EAAWh6H,SAAkBA,OAAO,CACjDmC,KAAM,oBAEN2iK,OAAQ,CACNiN,mBAAoB,CAClB9sK,KAAM,eAIVqL,MAAO,CACLoqD,KAAM,CACJz7D,KAAM,CAACyT,OAAQ5B,QACfwyH,UAAU,IAId3oI,OACE,MAAO,CACL62B,OAAQ,EAGRgrF,SAAU,KACV20D,WAAW,EACXH,WAAY14K,KAAKy5K,qBAIrB37C,SAAU,CACR47C,qBAEE,MAAM3+J,EAAU/a,KAAKy+H,SAAS3kH,KAAO9Z,KAAK64K,UAAY74K,KAAK64K,UAE3D,OAAO99J,EACH4+J,EAAAA,GACAC,EAAAA,IAEN3xI,SACE,OAAKjoC,KAAK04K,WAEH,CACLx/I,QAAQ8qG,EAAAA,EAAAA,IAAchkI,KAAKk5B,SAHA,KAQjCioG,MAAO,CACLjd,SAAUt/E,EAAS3J,GAGb2J,GAAuB,MAAZ3J,EACbj7B,KAAKk5B,OAAS,OAIXl5B,KAAK04K,aAEN14K,KAAKkkH,SAAUlkH,KAAK65K,QACnB75K,KAAK85K,WAId14C,UACEphI,KAAKqnI,MAAM1tC,QAAQpzF,iBACjB,gBACAvG,KAAK+5K,cACL,GAEF/5K,KAAKq5K,SAAWr5K,KAAKq5K,QAAQ90G,SAASvkE,OAGxC2zJ,gBACE3zJ,KAAKqnI,MAAM1tC,QAAQ92F,oBACjB,gBACA7C,KAAK+5K,cACL,GAEF/5K,KAAKq5K,SAAWr5K,KAAKq5K,QAAQ10G,WAAW3kE,OAG1Cq/H,QAAS,CACP06C,aAAc7pK,GACPlQ,KAAKkkH,UACW,WAAnBh0G,EAAEmrG,eAGJr7G,KAAKk5B,OAAS,SAEhB2gJ,QACE,IAAIjJ,EAAe,EAGnB/3J,uBAAsB,KACpB+3J,EAAe5wK,KAAKqnI,MAAM1tC,QAAQi3E,gBAGpC5wK,KAAKk5B,OAAS,EAGdl0B,YAAW,IAAMhF,KAAKkkH,WAAalkH,KAAKk5B,OAAU03I,GAAgB,SAAU,MAE9EkJ,QACE95K,KAAKk5B,OAASl5B,KAAKqnI,MAAM1tC,QAAQlwD,aACjCzkC,YAAW,IAAOhF,KAAKk5B,OAAS,GAAI,KAEtCwuE,OAAQtlC,EAAuBrnD,GAC7B/a,KAAKkkH,SAAW9hD,EAAK3yD,aAAezP,KAAKoiE,KAAK3yD,WAC9CzP,KAAK64K,UAAY99J,IAIrB5b,OAAQ2B,GACN,MAAMk5K,EAAc,CAClBh8C,YAAa,sBAETipC,EAAc,CAClBjpC,YAAa,qBACb7oG,MAAOn1B,KAAKioC,OACZu8D,IAAK,WAGFxkG,KAAK04K,aACRsB,EAAYl6C,WAAa,CAAC,CACxBj2H,KAAM,OACNzF,MAAOpE,KAAKkkH,YAIhB,MAAMvqB,EAAU74F,EAAE,MAAOmmK,EAAa,CAACjnK,KAAKu/H,OAAOxjC,UAC7ClkF,EAAU/W,EAAE,MAAOk5K,EAAa,CAACrgF,IAEvC,OAAO74F,EAAEd,KAAK05K,mBAAoB,CAChCnyE,GAAIvnG,KAAK4qI,YACR,CAAC/yH,OC7JR,MAAMoiK,GAAiB/uB,EAAAA,EAAAA,IAAuB,qBACxCgvB,GAAgBhvB,EAAAA,EAAAA,IAAuB,oBAWlB,S,wFCD3B,MAAMxpB,GAAazE,EAAAA,EAAAA,GACjBkQ,EAAAA,GAGAG,EAAAA,EAAAA,GAAiB,WACjBrO,EAAAA,GAUF,OAAeyC,EAAWh6H,SAAkBA,SAE1CA,OAAO,CACPmC,KAAM,QAENmO,MAAO,CACL22H,OAAQ,CACNhoI,KAAM,CAAC42H,QAAS/wH,QAChBuvF,SAAS,IAIb15F,KAAM,KAAM,CACV0rI,WAAY,kBAGdjQ,SAAU,CACR1gC,UACE,MAAO,CACL,SAAS,KACN+vC,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAuCntI,MAC1C,kBAAmBA,KAAKg1C,YACrBh1C,KAAKmuI,eAGZ/pI,QACE,IAAIwtB,EAAK5xB,KAAK4xB,IAAM5xB,KAAK2T,KAEzB,GAAU,MAANie,EAAY,OAAOA,EAEvB,GAAI5xB,KAAKm6K,SACPn6K,KAAK4xB,KAAOplB,OAAOxM,KAAK4xB,IACxB,CACA,MAAM3vB,EAAUjC,KAAKm6K,QAAQl4K,QAC3BjC,KAAK4xB,GACL5xB,KAAK2tK,OACL3tK,KAAK2V,QAGPic,EAAK3vB,EAAQ0R,KAGf,OAAOie,EAAGlgB,QAAQ,IAAK,MAI3B2tH,QAAS,CACP1V,MAAOz5G,GAIDlQ,KAAKg1C,SACP9kC,EAAE4uG,kBAOA9+G,KAAK2T,MACP3T,KAAK2T,KAAK5O,QAAQ,MAAQ,GAC1BmL,EAAE4uG,iBAEA5uG,EAAE4+H,QAAQ9uI,KAAK+uI,IAAIj3B,OAEvB93G,KAAKumI,MAAM,QAASr2H,GAEpBlQ,KAAK4xB,IAAM5xB,KAAK0nG,WAElBA,SAEO1nG,KAAKkkH,WAAclkH,KAAKo6K,QAAQ1O,WAAc1rK,KAAK4xB,KACtD5xB,KAAKumI,MAAM,YAKjBpnI,OAAQ2B,GACN,MAAM,IAAEgwF,EAAF,KAAOzuF,GAASrC,KAAKmvI,oBAiB3B,OAfA9sI,EAAK64G,MAAQ,IACR74G,EAAK64G,MACR,gBAAiB1iG,OAAOxY,KAAKkkH,UAC7B0b,KAAM,MACNorB,SAAUhrJ,KAAKg1C,UAAY,EAAI,GAEjC3yC,EAAKklG,GAAK,IACLllG,EAAKklG,GACRmlD,QAAUx8I,IACJA,EAAEytG,UAAY4qB,EAAAA,GAAAA,OAAgBvoI,KAAK2pH,MAAMz5G,GAE7ClQ,KAAKumI,MAAM,UAAWr2H,KAInBpP,EAAEgwF,EAAKzuF,EAAMrC,KAAKu/H,OAAOxjC,a,oJClFpC,SAASs+E,EAAMp0K,GACb,MAAM0D,EAAI,KACJ+U,EAAIzP,KAAK4P,IAAI5Y,GACnB,OAAOgJ,KAAK0O,KAAK1X,IAAQyY,IAAM,EAAI/U,EAAI,IAAM,EAAI+U,GAAK,IAGlD,SAAU47J,EACdC,EACAp6G,EACArmD,EACA0gK,GAEA,MAAMhxI,EAAc+wI,EAAgB/wI,YAC9Bu2B,EAAajmD,EACdqmD,EAAOtoD,QAAU0iK,EAAgBx6G,WAAav2B,EAC/C+wI,EAAgBx6G,WAEhBjmD,IACF0gK,GAAuBA,GAGzB,MAAMtgG,EAAa/Z,EAAOw5B,QAAU6gF,EAC9BC,EAAajxI,EAAcu2B,EAC3B26G,EAAiC,GAAdlxI,EAQzB,OANIu2B,GAAcy6G,EAChBA,EAAsBvrK,KAAKmQ,IAAI2gD,EAAa26G,EAAkB,GACrDxgG,GAAcugG,IACvBD,EAAsBvrK,KAAKkQ,IAAIq7J,GAAuBtgG,EAAaugG,EAAaC,GAAmBv6G,EAAOtoD,QAAUsoD,EAAOw5B,UAGtH7/E,GAAO0gK,EAAsBA,EAGhC,SAAUG,EACdJ,EACAp6G,EACArmD,GAEA,MAAM,WAAEimD,EAAF,YAAcv2B,GAAgB+wI,EAEpC,GAAIzgK,EAAK,CACP,MAAM8gK,EAAiBz6G,EAAOtoD,QAAUkoD,EAAav2B,EAAc,EAAI22B,EAAOw5B,QAAU,EACxF,OAAQ1qF,KAAKkQ,IAAIghD,EAAOtoD,QAAUsoD,EAAOw5B,QAAS1qF,KAAKmQ,IAAI,EAAGw7J,IACzD,CACL,MAAMA,EAAiB76G,EAAav2B,EAAc,EAAI22B,EAAOw5B,QAAU,EACvE,OAAO1qF,KAAKkQ,IAAIghD,EAAOtoD,QAAUsoD,EAAOw5B,QAAS1qF,KAAKmQ,IAAI,EAAGw7J,KAI1D,MAAMC,GAAiB59C,EAAAA,EAAAA,GAQ5B+kC,EAAAA,EACAjQ,EAAAA,GAEArqJ,OAAO,CACPmC,KAAM,mBAENi2H,WAAY,CACV4e,OADU,IAEVwzB,MAAAA,EAAAA,GAGFl6J,MAAO,CACLw1H,YAAa,CACX7mI,KAAM6R,OACNujF,QAAS,wBAEX++E,aAAcv9C,QACduyB,SAAU,CACRnpJ,KAAM6R,OACNujF,QAAS,SAEX8zD,SAAU,CACRlpJ,KAAM6R,OACNujF,QAAS,SAEXg/E,WAAY,CACVp0K,KAAM,CAAC42H,QAAS/kH,QAChBtO,UAAW2H,GACI,mBAANA,GAAmB,CACxB,SACA,UACA,UACA2vB,SAAS3vB,KAKjBxP,KAAM,KAAM,CACV24K,oBAAqB,EACrBC,eAAe,EACfjM,cAAe,EACfrpH,OAAQ,EACRu1H,qBAAqB,EACrBC,WAAW,EACXC,aAAc,EACdj7G,OAAQ,CACNtoD,QAAS,EACT8hF,QAAS,KAIbmkC,SAAU,CACRu9C,WACE,MAAyB,qBAAXjnK,QAEhBknK,eACE,OAAOt7K,KAAKigK,cAAc,SAE5Bsb,eACE,OAAOv7K,KAAKigK,cAAc,SAE5B7iE,UACE,MAAO,IACF4kE,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAA4ChiK,MAC/C,iBAAiB,EACjB,6BAA8BA,KAAKw7K,WACnC,gCAAiCx7K,KAAKi7K,gBAG1CO,aACE,OAAQx7K,KAAK+6K,YAEX,IAAK,SAAU,OAAO,EAGtB,IAAK,UAAW,OAAQ/6K,KAAKm0J,SAI7B,KAAK,EAAM,OAAOn0J,KAAKi7K,eAAiBhsK,KAAK4P,IAAI7e,KAAKo7K,cAAgB,EAGtE,IAAK,SAAU,OACbp7K,KAAKm0J,UACJn0J,KAAKi7K,eAAiBhsK,KAAK4P,IAAI7e,KAAKo7K,cAAgB,EAMvD,QAAS,OACNp7K,KAAKm0J,WACLn0J,KAAKi7K,eAAiBhsK,KAAK4P,IAAI7e,KAAKo7K,cAAgB,KAI3Dv7E,UACE,IAAK7/F,KAAKw7K,WAAY,OAAO,EAE7B,MAAM,QAAE3jK,EAAF,QAAW8hF,GAAY35F,KAAKmgE,OAGlC,OAAOtoD,EAAU5I,KAAK4P,IAAI7e,KAAKo7K,cAAgBzhF,GAEjD8hF,UACE,OAAOz7K,KAAKw7K,YAAoC,IAAtBx7K,KAAKo7K,eAInCj6C,MAAO,CACL8F,cAAe,YAIfg0C,cAAe,YACfG,aAAcn1K,GACRjG,KAAKy+H,SAAS3kH,MAAK7T,GAAOA,GAE9B,IAAI6gG,EACF7gG,GAAO,EACHo0K,GAAMp0K,GACNA,EAAMjG,KAAKmgE,OAAOtoD,QAAU7X,KAAKmgE,OAAOw5B,UACpC35F,KAAKmgE,OAAOtoD,QAAU7X,KAAKmgE,OAAOw5B,SAAW0gF,EAAKr6K,KAAKmgE,OAAOtoD,QAAU7X,KAAKmgE,OAAOw5B,QAAU1zF,IAC/FA,EAELjG,KAAKy+H,SAAS3kH,MAAKgtF,GAAUA,GAEjC9mG,KAAKqnI,MAAMxvH,QAAQsd,MAAM+rE,UAAY,cAAc4F,SAIvDjqC,eACE78D,KAAKg7K,qBAAuBh7K,KAAKmqJ,WAAa,IAAInhJ,QAGpDskE,UACMttE,KAAKg7K,uBAAyBh7K,KAAKmqJ,WAAa,IAAInhJ,QACxDhJ,KAAK07K,aAGPr8C,QAAS,CACPiC,WACEthI,KAAKqnI,MAAM1tC,QAAQgiF,WAAa,GAElCpc,UAAWrvJ,GACT,GAAKlQ,KAAKi7K,cAIV,IAAK,MAAMvlK,KAAMkmK,EAAAA,EAAAA,IAAa1rK,GAC5B,IAAK,MAAM8wJ,KAAMhhK,KAAKmgC,MACpB,GAAI6gI,EAAGjyB,MAAQr5H,EAOb,YANA1V,KAAKo7K,aAAed,EAClBtZ,EAAGjyB,IACH/uI,KAAKmgE,OACLngE,KAAKy+H,SAAS3kH,IACd9Z,KAAKo7K,gBAQfS,UACE,MAAMvyC,EAAOtpI,KAAK0/H,aAAa76F,KAC3B7kC,KAAK0/H,aAAa76F,KAAK,IACvB7kC,KAAKu/H,OAAO16F,MAAQ7kC,KAAKs7K,aAE7B,OAAOt7K,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,sBACbC,MAAO,CACL,iCAAkCj+H,KAAK6/F,SAEzC0H,GAAI,CACFoiB,MAAO,IAAM3pH,KAAK87K,aAAa,SAEjC51K,IAAK,QACJ,CAACojI,KAEN7J,aACE,OAAOz/H,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,yBACbx5B,IAAK,UACL+C,GAAI,CACFw0E,QAAS/7K,KAAKu/J,YAEfv/J,KAAKu/H,OAAOxjC,UAEjB8vE,UACE,MAAO,CACL5tC,MAAOj+H,KAAKo9F,QACZ0iC,WAAY,CAAC,CACXj2H,KAAM,SACNzF,MAAOpE,KAAKgtE,aAIlB6kF,QAASx9I,GACP,IAAIspH,EAAOtpH,EAEPrU,KAAKy+H,SAAS3kH,KAAoB,SAAbzF,EACvBspH,EAAO,OACE39H,KAAKy+H,SAAS3kH,KAAoB,SAAbzF,IAC9BspH,EAAO,QAGT,MAAMq+C,EAAgB,GAAG3nK,EAAS,GAAG7P,gBAAgB6P,EAAS/F,MAAM,KAC9D2tK,EAAYj8K,KAAa,MAAMg8K,KAErC,OACGh8K,KAAK+6K,YACLkB,EAGIj8K,KAAKo+H,eAAeO,EAAAA,EAAO,CAChC3mH,MAAO,CACLg9B,UAAWinI,IAEXj8K,KAAa,GAAG29H,UANX,MASXu+C,UACE,MAAM5yC,EAAOtpI,KAAK0/H,aAAaz4F,KAC3BjnC,KAAK0/H,aAAaz4F,KAAK,IACvBjnC,KAAKu/H,OAAOt4F,MAAQjnC,KAAKu7K,aAE7B,OAAOv7K,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,sBACbC,MAAO,CACL,iCAAkCj+H,KAAKy7K,SAEzCl0E,GAAI,CACFoiB,MAAO,IAAM3pH,KAAK87K,aAAa,SAEjC51K,IAAK,QACJ,CAACojI,KAEN22B,cAAe5rJ,GACb,OAAOrU,KAAKo+H,eAAeyjC,EAAAA,GAAiB,CAAC7hK,KAAK6xJ,QAAQx9I,MAE5DirH,aACE,OAAOt/H,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,yBACb8B,WAAY,CAAC,CACXj2H,KAAM,QACNzF,MAAO,CACLqV,MAAQvJ,GAAkBlQ,KAAKm8K,cAAcjsK,EAAGlQ,KAAKo8K,cACrDn9H,KAAO/uC,GAAkBlQ,KAAKm8K,cAAcjsK,EAAGlQ,KAAKq8K,aACpD3iK,IAAMxJ,GAAkBlQ,KAAKm8K,cAAcjsK,EAAGlQ,KAAKs8K,eAGvD93E,IAAK,UACL+C,GAAI,CACFT,OAAQ9mG,KAAKshI,WAEd,CAACthI,KAAKy/H,gBAEX88C,mBAAoBjwI,EAA4B6zB,EAAgBrmD,EAAc0gK,GAC5E,MAAM78J,EAAO7D,GAAO,EAAI,EAClB0iK,EAAoB7+J,EAAO68J,GAChB,SAAdluI,GAAwB,EAAI,GAAK6zB,EAAOw5B,QAE3C,OAAOh8E,EAAO1O,KAAKmQ,IAAInQ,KAAKkQ,IAAIq9J,EAAmBr8G,EAAOtoD,QAAUsoD,EAAOw5B,SAAU,IAEvFmiF,aAAcznK,GACZrU,KAAKumI,MAAM,SAASlyH,KACpBrU,KAAKy8K,SAASpoK,IAEhB24D,WAEMhtE,KAAKi/J,cAETj/J,KAAK07K,aAEPU,aAAclsK,GACZ,MAAM,QAAE2H,GAAY7X,KAAKqnI,MAEzBrnI,KAAK2lD,OAAS3lD,KAAKo7K,aAAelrK,EAAEskK,YAEpC38J,EAAQsd,MAAMsX,YAAY,aAAc,QACxC50B,EAAQsd,MAAMsX,YAAY,aAAc,cAE1C4vI,YAAansK,GACX,GAAKlQ,KAAKq7K,SAAV,CAEA,IAAKr7K,KAAKm7K,UAAW,CAGnB,MAAMuB,EAAQxsK,EAAEysK,WAAazsK,EAAEskK,YACzBoI,EAAQ1sK,EAAE2sK,WAAa3sK,EAAE4sK,YAC/B98K,KAAKk7K,oBAAsBjsK,KAAK4P,IAAI69J,GAASztK,KAAK4P,IAAI+9J,GACtD58K,KAAKm7K,WAAY,EAGfn7K,KAAKk7K,sBAEPl7K,KAAKo7K,aAAep7K,KAAK2lD,OAASz1C,EAAEysK,WAEpC/pK,SAASysJ,gBAAgBlqI,MAAM4nJ,UAAY,YAG/CT,aACE,IAAKt8K,KAAKq7K,SAAU,OAEpB,MAAM,QAAExjK,EAAF,QAAW8hF,GAAY35F,KAAKqnI,MAC5B21C,EAAkBnlK,EAAQ2xB,YAAcmwD,EAAQnwD,YAEtD3xB,EAAQsd,MAAMsX,YAAY,aAAc,MACxC50B,EAAQsd,MAAMsX,YAAY,aAAc,MAEpCzsC,KAAKy+H,SAAS3kH,IAEZ9Z,KAAKo7K,aAAe,IAAMp7K,KAAKi7K,cACjCj7K,KAAKo7K,aAAe,EACXp7K,KAAKo7K,eAAiB4B,IAC/Bh9K,KAAKo7K,cAAgB4B,GAInBh9K,KAAKo7K,aAAe,IAAMp7K,KAAKi7K,cACjCj7K,KAAKo7K,aAAe,EACXp7K,KAAKo7K,cAAgB4B,IAC9Bh9K,KAAKo7K,aAAe4B,GAIxBh9K,KAAKm7K,WAAY,EAEjBvoK,SAASysJ,gBAAgBlqI,MAAM8nJ,eAAe,eAEhDd,cAAejsK,EAAe7C,GAC5B6C,EAAE0/H,kBACF5vI,KAAKi7K,eAAiB5tK,EAAG6C,IAE3Bg5F,iBACE,IAAKlpG,KAAKkmI,cAAgBlmI,KAAKmgC,MAAMn3B,OAAQ,CAC3C,MAAMk0K,EAAmBl9K,KAAKmgC,MAAMngC,KAAKmgC,MAAMn3B,OAAS,GAAG+lI,IAAItmG,wBACzD00I,EAAkBn9K,KAAKqnI,MAAM1tC,QAAQlxD,yBAGxCzoC,KAAKy+H,SAAS3kH,KAAOqjK,EAAgBtjK,MAAQqjK,EAAiBrjK,QAC7D7Z,KAAKy+H,SAAS3kH,KAAOqjK,EAAgBvjK,KAAOsjK,EAAiBtjK,OAE/D5Z,KAAKy8K,SAAS,QAIbz8K,KAAKkmI,eAKe,IAAvBlmI,KAAK6jH,gBACH7jH,KAAK86K,eAAiB96K,KAAKi7K,cAE7Bj7K,KAAKo7K,aAAe,EACXp7K,KAAK86K,aACd96K,KAAKo7K,aAAeT,EAClB36K,KAAKkmI,aAAa6I,IAClB/uI,KAAKmgE,OACLngE,KAAKy+H,SAAS3kH,KAEP9Z,KAAKi7K,gBACdj7K,KAAKo7K,aAAed,EAClBt6K,KAAKkmI,aAAa6I,IAClB/uI,KAAKmgE,OACLngE,KAAKy+H,SAAS3kH,IACd9Z,KAAKo7K,iBAIXqB,SAAqCpoK,GACnCrU,KAAKo7K,aAAep7K,KAAKu8K,mBAAmBloK,EAAU,CAEpDwD,QAAS7X,KAAKqnI,MAAMxvH,QAAU7X,KAAKqnI,MAAMxvH,QAAQ2xB,YAAc,EAC/DmwD,QAAS35F,KAAKqnI,MAAM1tC,QAAU35F,KAAKqnI,MAAM1tC,QAAQnwD,YAAc,GAC9DxpC,KAAKy+H,SAAS3kH,IAAK9Z,KAAKo7K,eAE7BM,YACEtnK,OAAOyE,uBAAsB,KAC3B,GAAI7Y,KAAKi/J,aAAc,OAEvB,MAAM,QAAEpnJ,EAAF,QAAW8hF,GAAY35F,KAAKqnI,MAElCrnI,KAAKmgE,OAAS,CACZtoD,QAASA,EAAUA,EAAQ2xB,YAAc,EACzCmwD,QAASA,EAAUA,EAAQnwD,YAAc,GAM3CxpC,KAAKi7K,cAAgBj7K,KAAKmgE,OAAOw5B,QAAU,EAAI35F,KAAKmgE,OAAOtoD,QAE3D7X,KAAKkpG,sBAKX/pG,OAAQ2B,GACN,OAAOA,EAAE,MAAOd,KAAK6rK,UAAW,CAC9B7rK,KAAKk8K,UACLl8K,KAAKs/H,aACLt/H,KAAK67K,eAKIhB,EAAenzK,OAAO,CACnCmC,KAAM,gBAENk4H,UACE,MAAO,CACLq7C,WAAYp9K,SALlB,I,oBC5eA,GAAei9H,EAAAA,EAAAA,GACb49C,EACAh5C,EAAAA,EACA5C,EAAAA,GAEAv3H,OAAO,CACPmC,KAAM,aAENk4H,UACE,MAAO,CACLq4C,QAASp6K,OAIb89H,SAAU,CACR1gC,UACE,MAAO,IACFy9E,EAAel7K,QAAQm+H,SAAS1gC,QAAQ/8F,KAAKL,MAChD,cAAc,EACd,wBAAyBA,KAAKm0J,SAE9B,0BAA2Bn0J,KAAK+6K,cAC7B/6K,KAAKykI,gBAKdtD,MAAO,CACLhhG,MAAO,aACP8mG,cAAe,aACf0mC,OAAQ,iBAGVtuC,QAAS,CACPg+C,aACOr9K,KAAK2iI,UAEV3iI,KAAKumI,MAAM,gBAEb9G,aACE,MAAMtgI,EAAS07K,EAAel7K,QAAQ0/H,QAAQI,WAAWp/H,KAAKL,MAK9D,OAHAb,EAAOkD,KAAOlD,EAAOkD,MAAQ,GAC7BlD,EAAOkD,KAAK27H,aAAe,uBAEpB7+H,GAET8uK,cAAehoK,EAAYwhI,GAEzB,GAAIznI,KAAK0rK,UAAW,OAEpB,MAAMvrI,EAAQngC,KAAKmgC,MACbm9I,EAAUr3K,EAAIoM,KACdkrK,EAAU91C,EAAOp1H,KAEvB,IAAImrK,GAAS,EACTC,GAAS,EAEb,IAAK,MAAM3gK,KAAQqjB,EAIjB,GAHIrjB,EAAK8U,KAAO2rJ,EAASE,GAAS,EACzB3gK,EAAK8U,KAAO0rJ,IAASE,GAAS,GAEnCA,GAAUC,EAAQ,OAMnBD,GAAUC,IAAQz9K,KAAKinI,mBAAgBnhI,KAIhD3G,OAAQ2B,GACN,MAAM3B,EAAS07K,EAAel7K,QAAQR,OAAOkB,KAAKL,KAAMc,GAMxD,OAJA3B,EAAOkD,KAAM64G,MAAQ,CACnB0kB,KAAM,WAGDzgI,K,UCjFX,EAAe6iK,EAAAA,EAAAA,OAAqB,CAClCn4J,KAAM,WAENi2H,WAAY,CAAEoyC,MAAAA,EAAAA,GAEdnwC,UACE,MAAO,CACL27C,YAAa19K,OAIjBgY,MAAO,CACLw1H,YAAa,CACX7mI,KAAM6R,OACNujF,QAAS,yBAEX4hF,WAAYpgD,QACZmuC,UAAW,CACT/kK,KAAM42H,QACNxhC,SAAS,GAEX+zD,SAAU,CACRnpJ,KAAM,CAAC42H,QAAS/kH,QAChBujF,QAAS,SAEX8zD,SAAU,CACRlpJ,KAAM,CAAC42H,QAAS/kH,QAChBujF,QAAS,SAEXhhF,QAASwiH,QACTw9C,WAAYx9C,QACZqgD,kBAAmBrgD,QACnBsgD,MAAOrxK,OACPomK,UAAWr1C,QACXn5H,MAAO,CACL4mI,UAAU,GAEZj7E,SAAUwtE,SAGZl7H,OACE,MAAO,CACLy7K,qBAAqB,EACrBC,oBAAgBj4K,EAChBk4K,sBAAkBl4K,EAClBm4K,gBAAiB,EACjBt7C,UAAU,EACVk2C,WAAW,IAIf/6C,SAAU,CACR5Z,WACE,OAAOlkH,KAAKi+K,gBAAkB,GAEhC7gF,UACE,MAAO,IACF4kE,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAA4ChiK,MAC/C,iCAAkCA,KAAK49K,oBAG3ClE,qBACE,IAAK15K,KAAK2iI,SAAU,MAAO,GAE3B,MAAMzrF,EAAOl3C,KAAK+vD,SAAW,IAAM,IAC7Bh1C,EAAU/a,KAAKk+K,iBAAmBl+K,KAAK64K,UAAY74K,KAAK64K,UACxDvsI,EAAYvxB,EAAU,WAAa,GAEzC,MAAO,YAAYm8B,IAAO5K,gBAE5B6xI,iBACE,OAAO5gD,QACLv9H,KAAKmgC,MAAMy7D,MAAK9+E,IAASA,EAAKk4B,aAGlC6qD,UACE,OAAO7/F,KAAK29K,YAAc39K,KAAKo+K,cAAgBp+K,KAAKmgC,MAAMn3B,OAAS,GAErEyyK,UACE,OAAOz7K,KAAK29K,YAAc39K,KAAKo+K,cAAgB,GAEjDA,gBACE,OAAOp+K,KAAKmgC,MAAMojC,WAAU,CAACzmD,EAAMhU,IAC1B9I,KAAKinI,gBAAkBjnI,KAAK6lI,SAAS/oH,EAAMhU,MAGtDo1K,kBACE,OAAOl+K,KAAKy+H,SAAS3kH,KAAO9Z,KAAK+a,QAAU/a,KAAK+a,UAIpDomH,MAAO,CACLi9C,cAAen4K,EAAKwhI,GAClBznI,KAAK64K,UAAY74K,KAAKq+K,cAAcp4K,EAAKwhI,KAI7CrG,UACEhtH,OAAOyE,uBAAsB,IAAO7Y,KAAK2iI,UAAW,KAGtDtD,QAAS,CACPkuB,iBACE,OAAOvtJ,KAAKu/H,OAAOxjC,SAErBuiF,eACE,MAAMh6E,EAAW,CAACtkG,KAAKutJ,kBAMvB,OAJIvtJ,KAAK+6K,YACPz2E,EAAS/6F,KAAKvJ,KAAKu+K,mBAGdv+K,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,sBACbC,MAAO,CACL,iCAAkCj+H,KAAKkkH,UAEzC/uF,MAAO,CACL+D,OAAQl5B,KAAK+9K,gBAAkB/9K,KAAKg+K,mBAErC15E,IAELutD,QACEvlH,EACAqxF,EACAhU,GAAiB,UAEjB,MAAMpiB,EAAK,CACToiB,MAAQz5G,IACNA,EAAE0/H,kBACF5vI,KAAK89K,qBAAsB,EAC3Bn0D,MAGEzO,EAAQ,CACZ,aAAcl7G,KAAKy+H,SAASC,KAAKt9G,EAAE,qBAAqBkrB,MAEpDg4D,EAAQ,mBAAG,EAAAtkG,KAAK0/H,cAAapzF,SAArB,EAAGkyI,EAAAA,KAAAA,EAA+B,CAC9Cj3E,GAAAA,EACA2T,MAAAA,KAFY,EAGR,CAACl7G,KAAKo+H,eAAeG,EAAAA,EAAM,CAC/BvmH,MAAO,CAAE2lH,MAAM,GACfziB,MAAAA,EACA3T,GAAAA,GACC,CACDvnG,KAAKo+H,eAAeO,EAAAA,EAAO,CACzB3mH,MAAO,CAAE4uJ,OAAO,IACfjpC,MAGL,OAAO39H,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,aAAa1xF,KACzBg4D,IAELi6E,kBACE,MAAMx1D,EAAQ,GAER8mC,EAAW7vJ,KAAKy+H,SAAS3kH,IAC3B9Z,KAAK8vJ,SACL9vJ,KAAK6vJ,SAGT,GACE7vJ,KAAKy7K,SACL5rB,GACoB,kBAAbA,EACP,CACA,MAAMlyB,EAAO39H,KAAK6xJ,QAAQ,OAAQhC,EAAU7vJ,KAAKinC,MACjD02F,GAAQ5U,EAAMx/G,KAAKo0H,GAGrB,MAAMmyB,EAAW9vJ,KAAKy+H,SAAS3kH,IAC3B9Z,KAAK6vJ,SACL7vJ,KAAK8vJ,SAGT,GACE9vJ,KAAK6/F,SACLiwD,GACoB,kBAAbA,EACP,CACA,MAAMnyB,EAAO39H,KAAK6xJ,QAAQ,OAAQ/B,EAAU9vJ,KAAK6kC,MACjD84F,GAAQ5U,EAAMx/G,KAAKo0H,GAGrB,OAAO5U,GAETywB,aAAchwI,GACZ,MAAMo/H,GAAap/H,EAAQ,GAAKxJ,KAAKmgC,MAAMn3B,OACrC8T,EAAO9c,KAAKmgC,MAAMyoG,GAExB,OAAI9rH,EAAKk4B,SAAiBh1C,KAAKw5I,aAAa5Q,GAErCA,GAET61C,aAAcj1K,GACZ,MAAMk1K,GAAal1K,EAAQxJ,KAAKmgC,MAAMn3B,OAAS,GAAKhJ,KAAKmgC,MAAMn3B,OACzD8T,EAAO9c,KAAKmgC,MAAMu+I,GAExB,OAAI5hK,EAAKk4B,SAAiBh1C,KAAKy+K,aAAaC,GAErCA,GAET75I,OAEE,IAAK7kC,KAAKm+K,iBAAmBn+K,KAAK6/F,QAAS,OAE3C,MAAM+oC,EAAY5oI,KAAKw5I,aAAax5I,KAAKo+K,eACnCthK,EAAO9c,KAAKmgC,MAAMyoG,GAExB5oI,KAAKinI,cAAgBjnI,KAAK6lI,SAAS/oH,EAAM8rH,IAE3C3hG,OAEE,IAAKjnC,KAAKm+K,iBAAmBn+K,KAAKy7K,QAAS,OAE3C,MAAMhjK,EAAYzY,KAAKy+K,aAAaz+K,KAAKo+K,eACnCthK,EAAO9c,KAAKmgC,MAAM1nB,GAExBzY,KAAKinI,cAAgBjnI,KAAK6lI,SAAS/oH,EAAMrE,IAE3C4lK,cAAep4K,EAAawhI,GAC1B,MAAMkpB,EAAc3wJ,KAAKmgC,MAAMn3B,OACzByP,EAAYk4I,EAAc,EAEhC,OAAIA,GAAe,EAAU1qJ,EAAMwhI,EAE/BxhI,IAAQwS,GAAwB,IAAXgvH,IAEN,IAARxhI,GAAawhI,IAAWhvH,IAG1BxS,EAAMwhI,IAKnBtoI,OAAQ2B,GACN,MAAMuB,EAAO,CACX27H,YAAa,WACbC,MAAOj+H,KAAKo9F,QACZ0iC,WAAY,IAGd,IAAK9/H,KAAK4yK,UAAW,CACnB,MAAMxuK,EAAQpE,KAAK69K,OAAS,CAC1BjkK,KAAM,KACJ5Z,KAAKy+H,SAAS3kH,IAAM9Z,KAAKinC,OAASjnC,KAAK6kC,QAEzChrB,MAAO,KACL7Z,KAAKy+H,SAAS3kH,IAAM9Z,KAAK6kC,OAAS7kC,KAAKinC,QAEzCvtB,IAAMxJ,IACJA,EAAE0/H,mBAEJn2H,MAAQvJ,IACNA,EAAE0/H,oBAINvtI,EAAKy9H,WAAWv2H,KAAK,CACnBM,KAAM,QACNzF,MAAAA,IAIJ,OAAOtD,EAAE,MAAOuB,EAAM,CAACrC,KAAKs+K,oBCpRhC,EAAeK,EAAQj3K,OAAO,CAC5BmC,KAAM,eAENmO,MAAO,CACL0zJ,UAAW,CACT/kK,KAAM42H,QACNxhC,SAAS,IAIb+hC,SAAU,CACR1gC,UACE,MAAO,IACFuhF,EAAQh/K,QAAQm+H,SAAS1gC,QAAQ/8F,KAAKL,MACzC,gBAAgB,IAGpBg/H,SACE,OAAOh/H,KAAK4+K,aAIhBv/C,QAAS,CACPwG,SAAU/oH,EAAyBhU,GACjC,OAAOgU,EAAK1P,IAAM40J,EAAAA,EAAAA,QAAAA,QAAAA,SAAAA,KAA4ChiK,KAAM8c,EAAMhU,O,UCrBhF,GAAem0H,EAAAA,EAAAA,GAAOqN,EAAAA,GAAW5iI,OAAO,CACtCmC,KAAM,gBAEN1K,OAAQ2B,GACN,OAAOA,EAAE,MAAOd,KAAKk+H,mBAAmBl+H,KAAK6yB,MAAO,CAClDmrG,YAAa,sB,UCSnB,MAAM0D,GAAazE,EAAAA,EAAAA,GACjBqN,EAAAA,EACAmhC,EAAAA,EACAxsC,EAAAA,GASF,MAAeyC,EAAWh6H,SAAkBA,OAAO,CACjDmC,KAAM,SAENi2H,WAAY,CACV4e,OAAAA,EAAAA,GAGF1mI,MAAO,CACLw1H,YAAa,CACX7mI,KAAM6R,OACNujF,QAAS,IAEX8iF,eAAgBthD,QAChB/oG,gBAAiBhc,OACjBsiK,aAAcv9C,QACduhD,SAAUvhD,QACVwhD,UAAWxhD,QACXyhD,KAAMzhD,QACNrkG,OAAQ,CACNvyB,KAAM,CAACyT,OAAQ5B,QACfujF,aAASj2F,GAEXm5K,WAAY1hD,QACZ2hD,aAAc3hD,QACd60B,iBAAkB,CAAC55I,OAAQ4B,QAC3B01I,SAAU,CACRnpJ,KAAM6R,OACNujF,QAAS,SAEXojF,SAAU5hD,QACVsyB,SAAU,CACRlpJ,KAAM6R,OACNujF,QAAS,SAEXliF,MAAO0jH,QACPw9C,WAAY,CAACx9C,QAAS/kH,QACtB4mK,YAAa5mK,OACb6mK,WAAY,CACV14K,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GAEXhsC,SAAUwtE,SAGZl7H,OACE,MAAO,CACL2sK,cAAe,EACfsQ,OAAQ,CACNpmJ,OAAQ,KACRtf,KAAM,KACNC,MAAO,KACP8gB,IAAK,KACL3C,MAAO,MAETunJ,eAAgB,MAIpBzhD,SAAU,CACR1gC,UACE,MAAO,CACL,2BAA4Bp9F,KAAK6+K,eACjC,mBAAoB7+K,KAAK8+K,SACzB,qBAAsB9+K,KAAK++K,UAC3B,eAAgB/+K,KAAKg/K,KACrB,yBAA0Bh/K,KAAKk/K,aAC/B,gBAAiBl/K,KAAK6Z,MACtB,mBAAoB7Z,KAAK+vD,YACtB/vD,KAAKykI,eAGZ+6C,aACE,OAAOx/K,KAAKy+H,SAAS3kH,KAAO9Z,KAAK+vD,UAEnC0vH,eACE,MAAO,CACLvmJ,QAAQ8qG,EAAAA,EAAAA,IAAchkI,KAAKs/K,OAAOpmJ,QAClCtf,KAAM5Z,KAAKw/K,gBAAa15K,GAAYk+H,EAAAA,EAAAA,IAAchkI,KAAKs/K,OAAO1lK,MAC9DC,MAAO7Z,KAAKw/K,YAAax7C,EAAAA,EAAAA,IAAchkI,KAAKs/K,OAAOzlK,YAAS/T,EAC5D60B,IAAK36B,KAAK+vD,UAAWi0E,EAAAA,EAAAA,IAAchkI,KAAKs/K,OAAO3kJ,UAAO70B,EACtDg4C,WAAgC,MAApB99C,KAAKs/K,OAAO1lK,KAAe,KAAO,OAC9Coe,OAAOgsG,EAAAA,EAAAA,IAAchkI,KAAKs/K,OAAOtnJ,SAGrCmmG,gBACE,OAAIn+H,KAAK6yB,MAAc7yB,KAAK6yB,MACnB7yB,KAAKg/H,SAAWh/H,KAAKgsJ,UAAkB,QACpC,YAIhB7qB,MAAO,CACL09C,eAAgB,aAChBC,SAAU,aACVhE,aAAc,aACdiE,UAAW,aACXC,KAAM,aACNE,aAAc,aACdrlK,MAAO,aACPkhK,WAAY,aACZhrH,SAAU,aACV,4BAA6B,WAC7B,6BAA8B,WAC9B,eAAgB,YAGlBqxE,UACEphI,KAAKwhI,WAAU,KACbptH,OAAOpP,WAAWhF,KAAKq9K,WAAY,QAIvCh+C,QAAS,CACPg+C,aACE,OACEr9K,KAAKi/K,YACJj/K,KAAKqnI,MAAMlnG,OACXngC,KAAKqnI,MAAMlnG,MAAMylG,cAAc58H,QAMlChJ,KAAKwhI,WAAU,KAEb,MAAMk+C,EAAY1/K,KAAKqnI,MAAMlnG,MAAMylG,cAAc,GAEjD,IAAK85C,IAAcA,EAAU3wC,IAG3B,OAFA/uI,KAAKs/K,OAAOtnJ,MAAQ,OACpBh4B,KAAKs/K,OAAO1lK,KAAO,GAGrB,MAAMlE,EAAKgqK,EAAU3wC,IAErB/uI,KAAKs/K,OAAS,CACZpmJ,OAASl5B,KAAK+vD,SAAqCr6C,EAAGk7J,aAA7Bx2J,OAAOpa,KAAKq/K,YACrCzlK,KAAM5Z,KAAK+vD,SAAW,EAAIr6C,EAAGqqD,WAC7BlmD,MAAO7Z,KAAK+vD,SAAW,EAAIr6C,EAAGqqD,WAAarqD,EAAG+hH,YAC9C98F,IAAKjlB,EAAG8/G,UACRx9F,MAAOh4B,KAAK+vD,SAAW31C,OAAOpa,KAAKq/K,YAAc3pK,EAAGiqK,iBAIjD,IAxBL3/K,KAAKs/K,OAAOtnJ,MAAQ,GACb,IAyBX4nJ,OAAQz/I,EAAgBm/I,GACtB,MAAMj9K,EAAO,CACX8yB,MAAO,CACL+D,QAAQ8qG,EAAAA,EAAAA,IAAchkI,KAAKk5B,SAE7BlhB,MAAO,CACLw1H,YAAaxtI,KAAKwtI,YAClBstC,aAAc96K,KAAK86K,aACnBv2C,KAAMvkI,KAAKukI,KACXC,MAAOxkI,KAAKwkI,MACZknC,WAAY1rK,KAAKm/K,SACjB/sB,iBAAkBpyJ,KAAKoyJ,iBACvBtC,SAAU9vJ,KAAK8vJ,SACfD,SAAU7vJ,KAAK6vJ,SACfkrB,WAAY/6K,KAAK+6K,WACjB32K,MAAOpE,KAAKinI,eAEd1/B,GAAI,CACF,cAAevnG,KAAKq9K,WACpB1+I,OAAS14B,IACPjG,KAAKinI,cAAgBhhI,IAGzBu+F,IAAK,SAMP,OAHAxkG,KAAKggI,aAAahgI,KAAKm+H,cAAe97H,GACtCrC,KAAKk+H,mBAAmBl+H,KAAKw0B,gBAAiBnyB,GAEvCrC,KAAKo+H,eAAeyhD,EAAUx9K,EAAM,CACzCrC,KAAK8/K,UAAUR,GACfn/I,KAGJu0H,SAAUv0H,EAAqBrjB,GAG7B,OAAIqjB,IAICrjB,EAAK9T,OAEHhJ,KAAKo+H,eAAe2hD,EAAY,CACrC/nK,MAAO,CACL5T,MAAOpE,KAAKinI,eAEd1/B,GAAI,CACF5oE,OAAS14B,IACPjG,KAAKinI,cAAgBhhI,KAGxB6W,GAXsB,OAa3BgjK,UAAWR,GACT,OAAIt/K,KAAKi/K,WAAmB,MAEvBK,IACHA,EAASt/K,KAAKo+H,eAAe4hD,EAAa,CACxChoK,MAAO,CAAE6a,MAAO7yB,KAAKo/K,gBAIlBp/K,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,wBACb7oG,MAAOn1B,KAAKy/K,cACX,CAACH,MAENtyG,WACMhtE,KAAKi/J,eAET5lJ,aAAarZ,KAAKgvK,eAClBhvK,KAAKgvK,cAAgB56J,OAAOpP,WAAWhF,KAAKq9K,WAAY,KAE1D4C,aACE,IAAI9/I,EAAQ,KACRm/I,EAAS,KACb,MAAMxiK,EAAO,GACPojK,EAAM,GACN52C,EAAOtpI,KAAKu/H,OAAOxjC,SAAW,GAC9B/yF,EAASsgI,EAAKtgI,OAEpB,IAAK,IAAIF,EAAI,EAAGA,EAAIE,EAAQF,IAAK,CAC/B,MAAMq3H,EAAQmJ,EAAKxgI,GAEnB,GAAIq3H,EAAMwuB,iBACR,OAAQxuB,EAAMwuB,iBAAiBinB,KAAKj2K,QAAQkK,MAC1C,IAAK,gBAAiBy1K,EAASn/C,EAC7B,MACF,IAAK,eAAgBhgG,EAAQggG,EAC3B,MACF,IAAK,aAAcrjH,EAAKvT,KAAK42H,GAC3B,MAEF,QAAS+/C,EAAI32K,KAAK42H,QAGpB+/C,EAAI32K,KAAK42H,GAUb,MAAO,CAAE+/C,IAAAA,EAAKZ,OAAAA,EAAQn/I,MAAAA,EAAOrjB,KAAAA,KAIjC3d,OAAQ2B,GACN,MAAM,IAAEo/K,EAAF,OAAOZ,EAAP,MAAen/I,EAAf,KAAsBrjB,GAAS9c,KAAKigL,aAE1C,OAAOn/K,EAAE,MAAO,CACdk9H,YAAa,SACbC,MAAOj+H,KAAKo9F,QACZ0iC,WAAY,CAAC,CACXj2H,KAAM,SACNu2H,UAAW,CAAEmoB,OAAO,GACpBnkJ,MAAOpE,KAAKgtE,YAEb,CACDhtE,KAAK4/K,OAAOM,EAAKZ,GACjBt/K,KAAK00J,SAASv0H,EAAOrjB,S,4GCtS3B,GAAemgH,EAAAA,EAAAA,GAAOgC,EAAAA,GAAWv3H,OAAO,CACtCmC,KAAM,YAENhK,YAAY,EAEZmY,MAAO,CACL5T,MAAO,CACLuC,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,IAEX38E,IAAK,CAAChF,OAAQ5B,SAGhBrZ,OAAQ2B,EAAGy0B,GACT,MAAM,MAAEvd,GAAUud,EACZnW,EAAMiS,SAASrZ,EAAMoH,IAAK,IAC1Bhb,EAAQitB,SAASrZ,EAAM5T,MAAO,IAC9ByT,EAAUuH,EAAM,GAAGhb,OAAWgb,IAAQ5G,OAAOR,EAAM5T,OACnD+7K,EAAY/gK,GAAQhb,EAAQgb,EAElC,OAAOte,EAAE,MAAO,CACdk9H,YAAa,YACbC,MAAO,CACL,cAAekiD,MACZ7T,EAAAA,EAAAA,GAAuB/2I,KAE3B1d,MClCP,I,uCCMc,SAAUuoK,EAAezgL,GACrC,OAAO8gI,EAAAA,EAAAA,OAAW,CAChB52H,KAAM,gBAENxH,KAAM,KAAM,CACV6qI,gBAAgB,IAGlB9L,UACEi/C,EAAAA,EAAAA,SAAmBrgL,KAAK+uI,IAAoB,CAC1CllI,KAAM,YACNzF,MAAOpE,KAAKitI,WACXjtI,KAAKC,SAGV2nI,YACEy4C,EAAAA,EAAAA,OAAiBrgL,KAAK+uI,IAAoB,CACxCllI,KAAM,YACNzF,MAAOpE,KAAKitI,WACXjtI,KAAKC,SAGVo/H,QAAS,CACP4N,UAAW14E,EAAsCF,EAAgC64E,GAG/E,GAFAltI,KAAKktI,eAAiBA,EAEjBA,EAEL,IAAK,IAAIpkI,EAAI,EAAGE,EAASrJ,EAAQ2gL,UAAUt3K,OAAQF,EAAIE,EAAQF,IAAK,CAClE,MAAMgM,EAAY9U,KAAaL,EAAQ2gL,UAAUx3K,IAEzB,oBAAbgM,GAKXusH,EAAAA,EAAAA,IAAY1hI,EAAQ2gL,UAAUx3K,GAAK,0FAJjCgM,S,+DCbZ,MAAM4sH,GAAazE,EAAAA,EAAAA,GACjBsuB,EAAAA,EACAg1B,EAAc,CACZD,UAAW,CACT,WACA,kBAGJ71B,EAAAA,GAYI+1B,EAAa,CAAC,QAAS,OAAQ,OAAQ,OAAQ,iBAAkB,OAAQ,SAG/E,MAAe9+C,EAAWh6H,SAAkBA,OAAO,CACjDmC,KAAM,eAENi2H,WAAY,CACVtsF,OADU,IAEVm7F,OAAAA,EAAAA,GAGFwtB,cAAc,EAEdnkJ,MAAO,CACLyoK,gBAAiBjoK,OACjBkoK,UAAWnjD,QACXglC,UAAWhlC,QACXojD,UAAW,CACTh6K,KAAM6R,OACNujF,QAAS,UAEXkoE,QAAS,CAAC1mC,QAASnjH,OAAQ5B,QAC3Bo+J,aAAc1jF,SACdyiD,OAAQpY,QACRmtB,KAAMntB,QACNqjD,UAAWrjD,QACXvgF,MAAOxkC,OACPolH,SAAUL,QACVp1B,YAAa3vF,OACbsqB,OAAQtqB,OACRqoK,iBAAkBroK,OAClB6qJ,sBAAuB9lC,QACvBxiH,QAASwiH,QACTx+G,QAASw+G,QACTi7C,OAAQj7C,QACRujD,WAAYvjD,QACZwjD,KAAMxjD,QACNyjD,aAAczjD,QACdr1F,OAAQ1vB,OACR7R,KAAM,CACJA,KAAM6R,OACNujF,QAAS,SAIb15F,KAAM,KAAM,CACVsnI,UAAU,EACVjqE,WAAY,EACZuhH,YAAa,EACbC,aAAc,EACd/c,aAAc,KACdxhC,UAAU,EACVw+C,YAAY,IAGdrjD,SAAU,CACR1gC,UACE,MAAO,IACFmuD,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAqCvrJ,MACxC,gBAAgB,EAChB,2BAA4BA,KAAK4gL,UACjC,uBAAwB5gL,KAAK8iC,OAC7B,4BAA6B9iC,KAAKohL,SAClC,qBAAsBphL,KAAKqhL,OAC3B,8BAA+BrhL,KAAKghL,aACpC,0BAA2BhhL,KAAK0qJ,KAChC,uBAAwB1qJ,KAAK21I,OAC7B,0BAA2B31I,KAAK2iI,SAChC,yBAA0B3iI,KAAKshL,WAC/B,wBAAyBthL,KAAK+a,QAC9B,yBAA0B/a,KAAK49H,SAC/B,4BAA6B59H,KAAKmoG,YAClC,wBAAyBnoG,KAAK+e,QAC9B,uBAAwB/e,KAAKw4K,SAGjCr6C,gBACE,MAAMA,EAAgB2rC,EAAAA,EAAAA,QAAAA,SAAAA,cAAAA,KAAgD9pK,MAEtE,OAAKA,KAAKghL,cAAiBhhL,KAAK6mI,UAEzB7mI,KAAK6yB,OAAS,UAF6BsrG,GAIpDowB,uBACE,MAAiC,oBAAtBvuJ,KAAK42K,aACP52K,KAAK42K,aAAa52K,KAAKinI,eAEzB,KAAKjnI,KAAKinI,eAAiB,IAAIx3H,YAAYzG,QAEpDu4K,aACE,OAAwB,IAAjBvhL,KAAKikK,SAAqC,MAAhBjkK,KAAKikK,SAExCqG,aACE,OAAO/e,EAAAA,EAAAA,QAAAA,SAAAA,WAAAA,KAAwCvrJ,OAASA,KAAKuhL,YAE/Dt6C,cAAe,CACbvwG,MACE,OAAO12B,KAAK+rJ,WAEd93H,IAAKhuB,GACHjG,KAAK+rJ,UAAY9lJ,EACjBjG,KAAKumI,MAAM,QAASvmI,KAAK+rJ,aAG7BtlB,UAAO,MACL,OAAO,SAAAzmI,KAAK+rJ,gBAAL,IAAgBt8I,WAAWzG,QAAS,GAAKhJ,KAAK2pI,UAEvD23C,aACE,OACEthL,KAAK21I,QACL31I,KAAKqhL,QACLrhL,KAAK49H,UAGTwlC,gBACE,OAAOpjK,KAAKymI,SAAW+5C,EAAWh/I,SAASxhC,KAAK2G,OAElDy6K,WACE,OACEphL,KAAKqhL,QACLrhL,KAAK8gL,YACL9gL,KAAK4gL,WAEJ5gL,KAAK21I,SAAW31I,KAAKsjK,UAG1B+d,SACE,OAAOrhL,KAAK+gL,MAAQ/gL,KAAKghL,cAE3BQ,gBACE,IAAIx8H,EAAUhlD,KAAK8iC,SAAW9iC,KAAKyhL,WAAczhL,KAAKihL,YAAc,EAIpE,OAFIjhL,KAAKyhL,YAAczhL,KAAKkhL,eAAcl8H,GAAUhlD,KAAKkhL,cAEjDlhL,KAAKy+H,SAAS3kH,MAAQ9Z,KAAK+a,QAAW,CAC5CnB,KAAMorC,EACNnrC,MAAO,QACL,CACFD,KAAM,OACNC,MAAOmrC,IAGX08H,YACE,OAAO1hL,KAAKsjK,YAActjK,KAAKohL,UAAYphL,KAAKyhL,aAElDA,aACE,OAAOzhL,KAAK6mI,WAAa7mI,KAAKojK,eAAiBpjK,KAAKqjK,wBAIxDliC,MAAO,CAELvD,SAAU,gBACV5gF,QACEh9C,KAAKwhI,UAAUxhI,KAAK2hL,gBAEtB7+I,SACE9iC,KAAKwhI,UAAUxhI,KAAK4hL,iBAEtB/6C,UAAW,cACXziI,MAAO6B,GACLjG,KAAK+rJ,UAAY9lJ,IAIrBi5H,UAEMl/H,KAAKm/H,OAAO3nH,eAAe,SAC7B4nH,EAAAA,EAAAA,IAAS,MAAO,SAAUp/H,MAIxBA,KAAKm/H,OAAO3nH,eAAe,0BAC7B4nH,EAAAA,EAAAA,IAAS,uBAAwB,eAAgBp/H,MAI/CA,KAAKw4K,UAAYx4K,KAAK21I,QAAU31I,KAAK49H,UAAY59H,KAAKqhL,UACxDhgD,EAAAA,EAAAA,IAAY,uDAAwDrhI,OAIxEohI,UAEEphI,KAAK6hL,QAAO,IAAM7hL,KAAKyhL,YAAYzhL,KAAK2hL,eACxC3hL,KAAK0gL,WAAa1gL,KAAK8hL,eACvBjpK,uBAAsB,KACpB7Y,KAAK2iI,UAAW,EAChB9pH,uBAAsB,KACf7Y,KAAKktI,gBACRltI,KAAKgtE,kBAMbqyD,QAAS,CAEPp2B,QACEjpG,KAAKwpI,WAGP1xB,KAAM5nG,GAGJkE,OAAOyE,uBAAsB,KAC3B7Y,KAAKqnI,MAAM/0G,OAAStyB,KAAKqnI,MAAM/0G,MAAMwlF,WAGzCixB,oBACE/oI,KAAKqnI,MAAM/0G,OAAStyB,KAAKqnI,MAAM/0G,MAAM22E,QACrCjpG,KAAKwhI,WAAU,IAAMxhI,KAAKinI,cAAgB,QAE5C6jC,gBACE,MAAMxhC,EAAO,GAQb,OANItpI,KAAKu/H,OAAO,gBACd+J,EAAK//H,KAAKvJ,KAAKu/H,OAAO,iBACbv/H,KAAKygL,iBACdn3C,EAAK//H,KAAKvJ,KAAK6xJ,QAAQ,gBAGlB7xJ,KAAK+jK,QAAQ,SAAU,QAASz6B,IAEzCy4C,sBACE,MAAMz4C,EAAO,GAQb,OANItpI,KAAKu/H,OAAO,iBACd+J,EAAK//H,KAAKvJ,KAAKu/H,OAAO,kBACbv/H,KAAK6gL,kBACdv3C,EAAK//H,KAAKvJ,KAAK6xJ,QAAQ,iBAGlB7xJ,KAAK+jK,QAAQ,UAAW,QAASz6B,IAE1CouC,cACE,MAAMpuC,EAAO,GAQb,OANItpI,KAAKu/H,OAAO5pH,OACd2zH,EAAK//H,KAAKvJ,KAAKu/H,OAAO5pH,QACb3V,KAAK+pK,YACdzgC,EAAK//H,KAAKvJ,KAAK6xJ,QAAQ,WAGlB7xJ,KAAK+jK,QAAQ,SAAU,QAASz6B,IAEzCD,eACE,MAAM/2G,EAAQi5H,EAAAA,EAAAA,QAAAA,QAAAA,aAAAA,KAAyCvrJ,MAEjDw/H,EAAUx/H,KAAK+hL,sBAOrB,OALIviD,IACFltG,EAAMgyE,SAAWhyE,EAAMgyE,UAAY,GACnChyE,EAAMgyE,SAASv5F,QAAQy0H,IAGlBltG,GAETmlJ,eACE,OAAKz3K,KAAKuiK,UAILviK,KAAKymI,QAMHzmI,KAAK+jK,QAAQ,SAAU,QAAS,CACrC/jK,KAAK6xJ,QAAQ,QAAS7xJ,KAAK+oI,qBANpB/oI,KAAK+jK,QAAQ,SAAU,QAAS,CACrC/jK,KAAKo+H,eAAe,SANI,MAc9B4jD,aAAU,UACR,IAAKhiL,KAAKuhL,WAAY,OAAO,KAE7B,MAAMniK,GAAuB,IAAjBpf,KAAKikK,QAAmBjkK,KAAKstJ,OAAO20B,UAAYjiL,KAAKikK,QAE3DjsJ,EAAQ,CACZusH,KAAMvkI,KAAKukI,KACXC,MAAOxkI,KAAKwkI,MACZplH,IAAAA,EACAhb,MAAOpE,KAAKuuJ,sBAGd,0BAAO,EAAAvuJ,KAAK0/H,cAAaukC,cAAzB,EAAOie,EAAAA,KAAAA,EAA4B,CAAElqK,MAAAA,KAArC,EAAiDhY,KAAKo+H,eAAe+jD,EAAU,CAAEnqK,MAAAA,KAEnF4rJ,aACE,OAAOrY,EAAAA,EAAAA,QAAAA,QAAAA,WAAAA,KAAuCvrJ,OAEhDutJ,iBACE,MAAO,CACLvtJ,KAAKu3K,cACLv3K,KAAKkkK,mBACLlkK,KAAKy3K,eACLz3K,KAAK03K,cACL13K,KAAK+qJ,gBAGTwsB,cACE,OAAKv3K,KAAK49H,SAEH59H,KAAKo+H,eAAe,WAAY,CACrCljB,MAAO,CACL,eAAe,IAEhB,CAACl7G,KAAKoiL,cANkB,MAQ7B/1B,WACE,IAAKrsJ,KAAK0hL,UAAW,OAAO,KAE5B,MAAMr/K,EAAO,CACX2V,MAAO,CACL4qH,UAAU,EACV/vG,MAAO7yB,KAAKosJ,gBACZ7nB,KAAMvkI,KAAKukI,KACXvvF,SAAUh1C,KAAKmsJ,WACfmf,SAAUtrK,KAAKohL,WAAaphL,KAAK6mI,aAAe7mI,KAAKosJ,iBACrDmf,IAAKvrK,KAAKssJ,WACV1yI,KAAM5Z,KAAKwhL,cAAc5nK,KACzB4qH,MAAOxkI,KAAKwkI,MACZ3qH,MAAO7Z,KAAKwhL,cAAc3nK,MAC1BzV,MAAOpE,KAAKyhL,aAIhB,OAAOzhL,KAAKo+H,eAAeitC,EAAAA,EAAQhpK,EAAMrC,KAAKu/H,OAAOviF,OAASh9C,KAAKg9C,QAErEolI,YACE,MAAMpqJ,EAASh4B,KAAK8gL,aAAe9gL,KAAKyhL,aAAczhL,KAAKymI,QAA6B,EAAlBzmI,KAAK0/D,WACrEyvB,EAAOnvF,KAAKo+H,eAAe,OAAQ,CACvCsG,SAAU,CAAEl+B,UAAW,WACvBw3B,YAAa,gBAGf,OAAOh+H,KAAKo+H,eAAe,SAAU,CACnCjpG,MAAO,CACL6C,MAAQh4B,KAAKohL,cAAkCt7K,GAAvBk+H,EAAAA,EAAAA,IAAchsG,KAEvC,CAACm3D,KAEN65C,WACE,MAAMrpG,EAAYnzB,OAAOQ,OAAO,GAAIhN,KAAK6/H,mBAClClgG,EAAUhB,OACjB,MAAM,MAAE2nB,KAAU+7H,GAAeriL,KAAKstJ,OAEtC,OAAOttJ,KAAKo+H,eAAe,QAAS,CAClCjpG,MAAO,GACPuvG,SAAU,CACRtgI,MAAsB,WAAdpE,KAAK2G,MAAqB6F,OAAO81K,GAAGtiL,KAAK+rJ,WAAY,GAAM,KAAO/rJ,KAAK+rJ,WAEjF7wC,MAAO,IACFmnE,EACH3B,UAAW1gL,KAAK0gL,UAChB1rI,SAAUh1C,KAAKmsJ,WACf/+I,GAAIpN,KAAKssJ,WACTnkD,YAAanoG,KAAKqjK,uBAAyBrjK,KAAK6mI,YAAc7mI,KAAKsjK,SAAWtjK,KAAKmoG,iBAAcriG,EACjG66J,SAAU3gK,KAAK8gK,WACfn6J,KAAM3G,KAAK2G,MAEb4gG,GAAI/6F,OAAOQ,OAAO2yB,EAAW,CAC3Bm4E,KAAM93G,KAAKwsJ,OACXl6H,MAAOtyB,KAAK0pI,QACZzgC,MAAOjpG,KAAKwpI,QACZkjB,QAAS1sJ,KAAK6pI,YAEhBrlC,IAAK,QACLs7B,WAAY,CAAC,CACXj2H,KAAM,SACNu2H,UAAW,CAAEmoB,OAAO,GACpBnkJ,MAAOpE,KAAKgtE,cAIlB+9F,cACE,IAAK/qK,KAAKqqK,YAAa,OAAO,KAE9B,MAAMkY,EAAeh3B,EAAAA,EAAAA,QAAAA,QAAAA,YAAAA,KAAwCvrJ,MACvDwiL,EAAcxiL,KAAKgiL,aAEzB,OAAOhiL,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,yBACZ,CACDukD,EACAC,KAGJte,mBACE,OAAOlkK,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,sBACZ,CACDh+H,KAAKqsJ,WACLrsJ,KAAK8iC,OAAS9iC,KAAKw3K,SAAS,UAAY,KACxCx3K,KAAKgpI,WACLhpI,KAAKkoC,OAASloC,KAAKw3K,SAAS,UAAY,QAG5CA,SAAU7wK,GACR,OAAO3G,KAAKo+H,eAAe,MAAO,CAChCH,MAAO,iBAAiBt3H,IACxB69F,IAAK79F,GACJ3G,KAAK2G,KAEV6lJ,OAAQt8I,GACNlQ,KAAK6mI,WAAY,EACjB32H,GAAKlQ,KAAKwhI,WAAU,IAAMxhI,KAAKumI,MAAM,OAAQr2H,MAE/C+lB,UACMj2B,KAAK6mI,WAAa7mI,KAAKmsJ,aAAensJ,KAAKqnI,MAAM/0G,OAErDtyB,KAAKqnI,MAAM/0G,MAAM22E,SAEnBugC,QAASt5H,GACP,IAAKlQ,KAAKqnI,MAAM/0G,MAAO,OAEvB,MAAM4B,GAAOuuJ,EAAAA,EAAAA,GAAaziL,KAAK+uI,KAC/B,OAAK76G,EAEDA,EAAK8iF,gBAAkBh3G,KAAKqnI,MAAM/0G,MAC7BtyB,KAAKqnI,MAAM/0G,MAAM22E,aAGrBjpG,KAAK6mI,YACR7mI,KAAK6mI,WAAY,EACjB32H,GAAKlQ,KAAKumI,MAAM,QAASr2H,UAR3B,GAWFw5H,QAASx5H,GACP,MAAM/B,EAAS+B,EAAE/B,OACjBnO,KAAKinI,cAAgB94H,EAAO/J,MAC5BpE,KAAK2pI,SAAWx7H,EAAOy7H,UAAYz7H,EAAOy7H,SAASD,UAErDE,UAAW35H,GAEPA,EAAEytG,UAAY4qB,EAAAA,GAAAA,OACdvoI,KAAK+rJ,YAAc/rJ,KAAKmkK,eAExBnkK,KAAKmkK,aAAenkK,KAAK+rJ,UACzB/rJ,KAAKumI,MAAM,SAAUvmI,KAAKmkK,eAG5BnkK,KAAKumI,MAAM,UAAWr2H,IAExBi7J,YAAaj7J,GAEPA,EAAE/B,SAAWnO,KAAKqnI,MAAM/0G,QAC1BpiB,EAAE4uG,iBACF5uG,EAAE0/H,mBAGJ2b,EAAAA,EAAAA,QAAAA,QAAAA,YAAAA,KAAwCvrJ,KAAMkQ,IAEhDk7J,UAAWl7J,GACLlQ,KAAKmqK,cAAcnqK,KAAKipG,QAE5BsiD,EAAAA,EAAAA,QAAAA,QAAAA,UAAAA,KAAsCvrJ,KAAMkQ,IAE9CyxK,gBACO3hL,KAAK49H,WAEV59H,KAAK0/D,WAAa1/D,KAAKqnI,MAAMrqF,MACzB/tC,KAAKkQ,IAAmC,IAA/Bnf,KAAKqnI,MAAMrqF,MAAM2iI,YAAqB,EAAI3/K,KAAK+uI,IAAoBtX,YAAc,IAC1F,IAENmqD,iBACO5hL,KAAKqnI,MAAMvkG,SAEhB9iC,KAAKihL,YAAcjhL,KAAKqnI,MAAMvkG,OAAO20F,cAEvCirD,kBACO1iL,KAAK49H,UAAa59H,KAAKqnI,MAAM,mBAElCrnI,KAAKkhL,aAAelhL,KAAKqnI,MAAM,iBAAiB5P,cAElDqqD,eACE,IACG9hL,KAAK0gL,WACc,qBAAb9tK,WACN5S,KAAKqnI,MAAM/0G,MAAO,OAAO,EAE5B,MAAM4B,GAAOuuJ,EAAAA,EAAAA,GAAaziL,KAAK+uI,KAC/B,SAAK76G,GAAQA,EAAK8iF,gBAAkBh3G,KAAKqnI,MAAM/0G,SAE/CtyB,KAAKqnI,MAAM/0G,MAAM22E,SAEV,IAET05E,YAAa18K,GAEXjG,KAAK8rJ,SAAW7lJ,EAEZA,EACFjG,KAAKmkK,aAAenkK,KAAK+rJ,UAChB/rJ,KAAKmkK,eAAiBnkK,KAAK+rJ,WACpC/rJ,KAAKumI,MAAM,SAAUvmI,KAAK+rJ,YAG9B/+E,WACEhtE,KAAK2hL,gBACL3hL,KAAK4hL,iBACL5hL,KAAK0iL,uB,gDC7hBX,OAAezjD,EAAAA,EAAAA,OAAiB,CAC9Bp1H,KAAM,mBAENmO,MAAO,CAAEkc,KAAMqpG,SAEfO,SAAU,CACRkB,SACE,OAAOh/H,KAAKk0B,KACRl0B,KAAK4+K,WACL3/C,EAAAA,EAAAA,QAAAA,SAAAA,OAAAA,KAAuCj/H,QAI/Cb,SAEE,OACEa,KAAKu/H,OAAOxjC,SACZ/7F,KAAKu/H,OAAOxjC,QAASH,MAAK5nE,IAASA,EAAKw5I,WAA2B,MAAdx5I,EAAK2H,W,8GCPhE,EAAeuhG,EAAAA,EAAAA,OAAc,CAC3BrzH,KAAM,YAENmO,MAAO,CACL4qH,SAAUrF,QACV3iG,OAAQ2iG,QACRvH,SAAUuH,QACVC,MAAOD,QACPqlD,SAAUrlD,QACVoG,gBAAiB,CACf5nC,QAAS,GACTp1F,KAAM,CAACyT,OAAQ5B,SAEjBkyI,KAAMntB,QACNp5E,SAAUo5E,QACVM,UAAWN,QACXmZ,MAAOnZ,QACP37B,IAAK,CACHj7F,KAAM,CAAC6R,OAAQhM,QACfuvF,QAAS,IAEXjL,IAAK,CACHnqF,KAAM6R,OACNujF,QAAS,WAIb15F,KAAM,KAAM,CACVqhI,YAAY,IAGd5F,SAAU,CACRgG,iBACE,MAAM5qG,EAASl5B,KAAKkjI,sBAEpB,IAAKljI,KAAK0jI,WAAY,OAAOxqG,EAE7B,MAAMyqG,EAAkBtyG,SAASrxB,KAAK2jI,iBAEtC,OAAO3jI,KAAK+jI,YACR7qG,EACAA,GAAWza,MAAMklH,GAAqC,EAAlBA,IAE1CT,wBACE,OAAIljI,KAAKk5B,OAAe7H,SAASrxB,KAAKk5B,QAClCl5B,KAAKqjI,aAAerjI,KAAKw9H,MAAc,GACvCx9H,KAAKqjI,aAAerjI,KAAK02I,MAAc,IACvC12I,KAAKqjI,YAAoB,IACzBrjI,KAAKw9H,MAAc,GACnBx9H,KAAK02I,OAAS12I,KAAKy+H,SAASmmC,WAAWie,UAAkB,GACtD,IAETzlF,UACE,MAAO,IACF8/B,EAAAA,EAAAA,QAAAA,SAAAA,QAAAA,KAAqCl9H,MACxC,aAAa,EACb,sBAAuBA,KAAK4iI,SAC5B,oBAAqB5iI,KAAK46B,OAC1B,sBAAuB56B,KAAKg2H,SAC5B,uBAAwBh2H,KAAK+jI,YAC7B,mBAAoB/jI,KAAKw9H,MACzB,sBAAuBx9H,KAAK0jI,WAC5B,kBAAmB1jI,KAAK0qJ,KACxB,sBAAuB1qJ,KAAKmkD,SAC5B,uBAAwBnkD,KAAKqjI,cAGjCU,cACE,OAAO/jI,KAAKg2H,UAEdqN,cACE,OAAOrjI,KAAK69H,WAEd51F,SACE,MAAO,IACFjoC,KAAK2qI,iBACRzxG,QAAQ8qG,EAAAA,EAAAA,IAAchkI,KAAK8jI,mBAKjC5E,UACE,MAAM2P,EAAgB,CACpB,CAAC,MAAO,mBACR,CAAC,gBAAiB,8BAClB,CAAC,eAAgB,4BACjB,CAAC,gBAAiB,6BAClB,CAAC,kBAAmB,+BACpB,CAAC,oBAAqB,iCACtB,CAAC,gBAAiB,6BAClB,CAAC,mBAAoB,gCACrB,CAAC,OAAQ,qBAIXA,EAAc7oI,SAAQ,EAAEumC,EAAU+oD,MAC5Bt1F,KAAKm/H,OAAO3nH,eAAe+0B,KAAW6yF,EAAAA,EAAAA,IAAS7yF,EAAU+oD,EAAat1F,UAI9Eq/H,QAAS,CACP6E,gBACE,MAAMlsH,EAAQ,CACZkhB,QAAQ8qG,EAAAA,EAAAA,IAAchkI,KAAK8jI,gBAC3BliC,IAAK5hG,KAAK4hG,KAGN4S,EAAQx0G,KAAK0/H,aAAairB,IAC5B3qJ,KAAK0/H,aAAairB,IAAI,CAAE3yI,MAAAA,IACxBhY,KAAKo+H,eAAe01C,EAAAA,EAAM,CAAE97J,MAAAA,IAEhC,OAAOhY,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,oBACZ,CAACxpB,KAENirB,aACE,OAAOz/H,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,qBACb7oG,MAAO,CACL+D,QAAQ8qG,EAAAA,EAAAA,IAAchkI,KAAKkjI,0BAE5B2I,EAAAA,EAAAA,IAAQ7rI,QAEb8iL,eACE,OAAO9iL,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,uBACb7oG,MAAO,CACL+D,QAAQ8qG,EAAAA,EAAAA,IAAchkI,KAAK2jI,oBAE5BkI,EAAAA,EAAAA,IAAQ7rI,KAAM,gBAIrBb,OAAQ2B,GACNd,KAAK0jI,WAAa1jI,KAAK4iL,YAAc5iL,KAAK0/H,aAAaqjD,UAEvD,MAAMz+E,EAAW,CAACtkG,KAAKy/H,cACjBp9H,EAAOrC,KAAKk+H,mBAAmBl+H,KAAK6yB,MAAO,CAC/CorG,MAAOj+H,KAAKo9F,QACZjoE,MAAOn1B,KAAKioC,OACZs/D,GAAIvnG,KAAK4qI,aAMX,OAHI5qI,KAAK0jI,YAAYp/B,EAAS/6F,KAAKvJ,KAAK8iL,iBACpC9iL,KAAK4hG,KAAO5hG,KAAK0/H,aAAairB,MAAKrmD,EAASv5F,QAAQ/K,KAAKkkI,iBAEtDpjI,EAAEd,KAAK8wF,IAAKzuF,EAAMiiG,O,2FC7J7B,MAAM0+E,GAAgB93B,EAAAA,EAAAA,IAAuB,oBACvC+3B,GAAgB/3B,EAAAA,EAAAA,IAAuB,oBASlB,K,sJCE3B,GAAejuB,EAAAA,EAAAA,GAAOqN,EAAAA,EAAWkkC,EAAAA,EAAWjR,EAAAA,EAAWkR,EAAAA,GAAU/mK,OAAO,CACtEmC,KAAM,YAENmO,MAAO,CACLkrK,WAAY,CACVv8K,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GAEX/mD,SAAUuoF,QACV4lD,UAAW,CACTx8K,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GAEX6yE,YAAa,CACXjoK,KAAM42H,QACNxhC,SAAS,GAEXqnF,YAAa,CACXz8K,KAAM42H,QACNxhC,SAAS,GAEXjL,IAAK,CACHnqF,KAAM6R,OACNujF,QAAS,QAEXj+C,WAAYtlC,QAGdnW,KAAM,KAAM,CACVitK,mBAAoB,EACpB+T,iBAAiB,IAGnBvlD,SAAU,CACRqxC,iBACE,MAAM,UAAE1Q,EAAF,QAAa5mJ,GAAY7X,KAAKqvK,WAC9BiU,GAAWtjL,KAAK46B,SAAW56B,KAAK4Z,OAAS5Z,KAAK26B,MAAQ36B,KAAK6Z,MAC3D0pK,GAAgC,IAAhBvjL,KAAK+1D,OAAmB0oG,EAAU1+F,WAAa0+F,EAAU7kJ,KAC/E,IAAIA,EAAO,EAmBX,OAjBI5Z,KAAK26B,KAAO36B,KAAK46B,QAAU0oJ,EAC7B1pK,EACE2pK,EACC9kB,EAAUzmI,MAAQ,EAClBngB,EAAQmgB,MAAQ,GAEVh4B,KAAK4Z,MAAQ5Z,KAAK6Z,SAC3BD,EACE2pK,GACCvjL,KAAK6Z,MAAQ4kJ,EAAUzmI,OAASngB,EAAQmgB,QACxCh4B,KAAK6Z,MAAQ,IAAM,KAIpB7Z,KAAKwjL,YAAW5pK,GAAQyX,SAASrxB,KAAKwjL,YACtCxjL,KAAKyjL,aAAY7pK,GAAQyX,SAASrxB,KAAKyjL,aAEpC,GAAGzjL,KAAKuvK,cAAc31J,EAAM5Z,KAAKqvK,WAAWx3J,QAAQmgB,YAE7D83I,gBACE,MAAM,UAAErR,EAAF,QAAa5mJ,GAAY7X,KAAKqvK,WAC9BqU,GAA+B,IAAhB1jL,KAAK+1D,OAAmB0oG,EAAUjpC,UAAYipC,EAAU9jI,IAC7E,IAAIA,EAAM,EAoBV,OAlBI36B,KAAK26B,KAAO36B,KAAK46B,OACnBD,EACE+oJ,GACC1jL,KAAK46B,OAAS6jI,EAAUvlI,QAAUrhB,EAAQqhB,SAC1Cl5B,KAAK46B,OAAS,IAAM,KAEd56B,KAAK4Z,MAAQ5Z,KAAK6Z,SAC3B8gB,EACE+oJ,EACCjlB,EAAUvlI,OAAS,EACnBrhB,EAAQqhB,OAAS,GAIlBl5B,KAAK2jL,WAAUhpJ,GAAOtJ,SAASrxB,KAAK2jL,WACpC3jL,KAAKi3K,cAAat8I,GAAOtJ,SAASrxB,KAAKi3K,eACvB,IAAhBj3K,KAAK+1D,SAAkBp7B,GAAO36B,KAAKuhI,aAEhC,GAAGvhI,KAAK+vK,cAAcp1I,QAE/ByiE,UACE,MAAO,CACL,iBAAkBp9F,KAAK26B,IACvB,mBAAoB36B,KAAK6Z,MACzB,oBAAqB7Z,KAAK46B,OAC1B,kBAAmB56B,KAAK4Z,KACxB,sBACkB,KAAhB5Z,KAAK+1D,SACW,IAAhB/1D,KAAK+1D,QACW,WAAhB/1D,KAAK+1D,SAGX2jH,qBACE,OAAI15K,KAAK89C,WAAmB99C,KAAK89C,WAE1B99C,KAAKkkH,SAAW,mBAAqB,mBAE9C37E,UACE,OAAOvoC,KAAK26B,KAAO36B,KAAK46B,QAE1B0N,UACE,OAAOtoC,KAAK4Z,MAAQ5Z,KAAK6Z,OAE3BouB,SACE,MAAO,CACLruB,KAAM5Z,KAAKmvK,eACXhzI,UAAU6nG,EAAAA,EAAAA,IAAchkI,KAAKm8B,UAC7BuuG,UAAU1G,EAAAA,EAAAA,IAAchkI,KAAK0qI,UAC7B/vG,IAAK36B,KAAK8vK,cACV9P,OAAQhgK,KAAKggK,QAAUhgK,KAAKm/J,gBAKlCL,cACE9+J,KAAKwhI,WAAU,KACbxhI,KAAKoE,OAASpE,KAAKswK,mBAIvBlvC,UAC+C,YAAzCwiD,EAAAA,EAAAA,IAAY5jL,KAAM,aAAa,KACjC0jK,EAAAA,EAAAA,IAAa,uGAAqG1jK,OAItHq/H,QAAS,CACPkxC,WAGEvwK,KAAKqoI,mBAELxvH,sBAAsB7Y,KAAKwwK,kBAE7BqT,aACE7jL,KAAK8xK,SAAS,UAEhBT,wBACE,MAAM1xI,EAAYi+H,EAAAA,EAAAA,QAAAA,QAAAA,sBAAAA,KAAuD59J,MAoBzE,OAlBIA,KAAKojL,cACPzjJ,EAAUspE,MAAS/4F,IACjBlQ,KAAK0/J,aAAaxvJ,GAClBlQ,KAAK8xK,SAAS,SAEhBnyI,EAAUm4E,KAAQ5nG,IAChBlQ,KAAK0/J,aAAaxvJ,GAClBlQ,KAAK8xK,SAAS,WAIlBnyI,EAAU+sH,QAAWx8I,IACfA,EAAEytG,UAAY4qB,EAAAA,GAAAA,MAChBvoI,KAAK0/J,aAAaxvJ,GAClBlQ,KAAK8xK,SAAS,WAIXnyI,GAETyxI,yBACE,MAAO,CACL,iBAAiB,EACjB,gBAAiB54J,OAAOxY,KAAKkkH,YAGjC+7C,gBACE,MAAMpoJ,EAAU7X,KAAKy/H,aAErB,OAAKz/H,KAAK05K,mBAEH15K,KAAKo+H,eAAe,aAAc,CACvCpmH,MAAO,CACLnO,KAAM7J,KAAK05K,qBAEZ,CAAC7hK,IANiCA,GAQvC4nH,aACE,OAAOz/H,KAAKo+H,eACV,MACAp+H,KAAKk+H,mBAAmBl+H,KAAK6yB,MAAO,CAClCmrG,YAAa,qBACbC,MAAO,CACL,CAACj+H,KAAK+mI,eAAe,EACrB0qC,0BAA2BzxK,KAAKkkH,SAChC,4BAA6BlkH,KAAKwxK,gBAEpCr8I,MAAOn1B,KAAKioC,OACZizE,MAAOl7G,KAAK+/J,kBACZjgC,WAAY,CAAC,CACXj2H,KAAM,OACNzF,MAAOpE,KAAKkwK,kBAEd1rE,IAAK,YAEPxkG,KAAKsgK,oBAKXnhK,OAAQ2B,GACN,OAAOA,EAAEd,KAAK8wF,IAAK,CACjBktC,YAAa,YACbC,MAAOj+H,KAAKo9F,SACX,CACDp9F,KAAK6/J,iBAAgB,IAAM,CAAC7/J,KAAKigK,mBACjCjgK,KAAKugK,qB,kICjNX,MAAM7+B,GAAazE,EAAAA,EAAAA,GACjBqN,EAAAA,GACAg3B,EAAAA,EAAAA,GAAkB,aAOPwiB,EAAqB,CAChCC,YAAaxmD,QACbiQ,YAAa,CACX7mI,KAAM6R,OACNujF,QAAS,2BAEXlpE,MAAO,CACLlsB,KAAM6R,OACNujF,QAAS,WAEXioF,eAAgBzmD,QAChB27B,WAAY,CACVvyJ,KAAM6R,OACNujF,QAAS,aAEX8wD,kBAAmB,CACjBlmJ,KAAM6R,OACNujF,QAAS,0BAEXkoF,aAAc,CACZt9K,KAAM6R,OACNujF,QAAS,YAEX64E,aAAc,CACZjuK,KAAM6R,OACNujF,QAAS,YAEXk2D,QAAS,CACPtrJ,KAAM6R,OACNujF,QAAS,MAEXmpC,SAAU,CACRv+H,KAAM6R,OACNujF,QAAS,QAEXmoF,aAAchxF,SACdixF,YAAa,CACXx9K,KAAM6R,OACNujF,QAAS,YAEX+wD,QAAS,CACPnmJ,KAAM6R,OACNujF,QAAS,gBAEXgxD,OAAQ,CACNpmJ,KAAM6R,OACNujF,QAAS,eAEX+5E,YAAav4C,QACbx+G,QAASw+G,QACT6vC,WAAY7vC,QACZ6mD,cAAe,CACbz9K,KAAM6R,OACNujF,QAAS,UAEXy8E,OAAQj7C,QACRz/E,WAAYy/E,QACZ8mD,cAAe,CACb19K,KAAM6R,OACNujF,QAAS,OACT7xF,UAAY2H,GAAc,CAAC,OAAQ,eAAe2vB,SAAS3vB,KAKzDyyK,EAAgB5iD,EAAWh6H,SAAkBA,OAAO,CACxDmC,KAAM,kBAEN2iK,OAAQ,CACN+X,SAAU,CACRxoF,QAAS,OAIb/jF,MAAO,CACLswF,MAAOluF,OACP0C,KAAM,CACJnW,KAAM6F,OACNuvF,QAAS,IAAM,MAEjByoF,iBAAkBjnD,WACfumD,GAGLzhL,KAAM,KAAM,CACVoiL,WAAW,EACXvgE,UAAU,EACVwgE,iBAAiB,EACjBjc,WAAW,EACX5N,QAAQ,EACR3H,YAAY,IAGdp1B,SAAU,CACR9oF,WACE,OACEm0F,EAAAA,EAAAA,IAAqBnpI,KAAK8c,KAAM9c,KAAK40K,gBACnC50K,KAAKgkL,gBAAmBhkL,KAAKwkL,kBAA2C,SAAvBxkL,KAAKqkL,eAG5Dn+K,MACE,OAAOijI,EAAAA,EAAAA,IAAqBnpI,KAAK8c,KAAM9c,KAAKiyJ,UAE9C3tD,WACE,MAAMA,GAAW6kC,EAAAA,EAAAA,IAAqBnpI,KAAK8c,KAAM9c,KAAKikL,cACtD,OAAO3/E,GAAYA,EAASnsF,QAAQssF,IAAgBzkG,KAAKukL,SAASI,YAAWx7C,EAAAA,EAAAA,IAAqB1kC,EAAOzkG,KAAKiyJ,aAEhHt2H,OACE,OAAOwtG,EAAAA,EAAAA,IAAqBnpI,KAAK8c,KAAM9c,KAAKklI,WAE9C83B,cACE,MAAO,CACLlgJ,KAAM9c,KAAK8c,KACXunF,MAAOrkG,KAAKskG,SACZmf,SAAUzjH,KAAKkzJ,WACfhnB,cAAelsI,KAAK0kL,gBACpB7xI,OAAQ7yC,KAAKkkH,SACb5/G,KAAMtE,KAAK66J,SAGfh8B,eACE,OAAI7+H,KAAK0kL,gBAAwB1kL,KAAK6sJ,kBAC7B7sJ,KAAKkzJ,WAAmBlzJ,KAAK+sJ,OAC1B/sJ,KAAK8sJ,SAEnB83B,cACE,QAAS5kL,KAAKskG,aAAetkG,KAAKskG,SAASt7F,UAAYhJ,KAAKkkL,gBAIhEhlD,UACEl/H,KAAKukL,SAAShgH,SAASvkE,OAGzB2zJ,gBACE3zJ,KAAKukL,SAAS5/G,WAAW3kE,OAG3Bq/H,QAAS,CACPwlD,gBACE,OAAO,IAAI7iL,SAAcC,IAGvB,IAAKjC,KAAKskG,UAAYtkG,KAAKskG,SAASt7F,SAAWhJ,KAAKkkL,cAAgBlkL,KAAKykL,UAAW,OAAOxiL,IAE3FjC,KAAKyoK,WAAY,EACjBxmK,EAAQjC,KAAKkkL,aAAalkL,KAAK8c,UAC9BlU,MAAK,KACN5I,KAAKyoK,WAAY,EACjBzoK,KAAKykL,WAAY,MAGrBngL,OACEtE,KAAK66J,QAAU76J,KAAK66J,OACpB76J,KAAKukL,SAASO,WAAW9kL,KAAKkG,IAAKlG,KAAK66J,QACxC76J,KAAKukL,SAASQ,YAEhB14B,WACE,MAAM/nD,EAAW,GAKjB,OAHItkG,KAAK0/H,aAAa1iF,MAAOsnD,EAAS/6F,KAAKvJ,KAAK0/H,aAAa1iF,MAAMh9C,KAAKg9J,cACnE14D,EAAS/6F,KAAKvJ,KAAK27B,MAEjB37B,KAAKo+H,eAAe,MAAO,CAChCkL,KAAM,QACNtL,YAAa,0BACZ15B,IAELw/D,iBACE,OAAK9jK,KAAK0/H,aAAaF,QAEhBx/H,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,4BACZh+H,KAAK0/H,aAAaF,QAAQx/H,KAAKg9J,cAJK,MAMzC8N,gBACE,OAAK9qK,KAAK0/H,aAAa/pH,OAEhB3V,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,2BACZh+H,KAAK0/H,aAAa/pH,OAAO3V,KAAKg9J,cAJK,MAMxCv9B,aACE,MAAMn7B,EAAW,CACftkG,KAAK8jK,iBACL9jK,KAAKqsJ,WACLrsJ,KAAK8qK,iBAGP,OAAO9qK,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,4BACZ15B,IAEL0gF,YACE,OAAOhlL,KAAKo+H,eAAeO,EAAAA,EAAO,CAChCX,YAAa,0BACbC,MAAO,CACL,gCAAiCj+H,KAAK66J,OACtC,mCAAoC76J,KAAKyoK,WAE3Cn/B,KAAM,UACN/hC,GAAI,CACFoiB,MAAQz5G,IACNA,EAAE0/H,kBAEE5vI,KAAKyoK,WAETzoK,KAAK6kL,gBAAgBj8K,MAAK,IAAM5I,KAAKsE,YAGxC,CAACtE,KAAKyoK,UAAYzoK,KAAKmkL,YAAcnkL,KAAKk5J,cAE/C9L,cACE,OAAOptJ,KAAKo+H,eAAeO,EAAAA,EAAO,CAChCX,YAAa,4BACbhmH,MAAO,CACL6a,MAAO7yB,KAAKkzJ,YAAclzJ,KAAK0kL,gBAAkB1kL,KAAKokL,mBAAgBt+K,EACtEkvC,SAAUh1C,KAAKg1C,UAEjBuyD,GAAI,CACFoiB,MAAQz5G,IACNA,EAAE0/H,kBAEE5vI,KAAKyoK,WAETzoK,KAAK6kL,gBAAgBj8K,MAAK,KAExB5I,KAAKwhI,WAAU,KACbxhI,KAAKkzJ,YAAclzJ,KAAKkzJ,WACxBlzJ,KAAK0kL,iBAAkB,EAEvB1kL,KAAKukL,SAASU,eAAejlL,KAAKkG,IAAKlG,KAAKkzJ,YAC5ClzJ,KAAKukL,SAASW,wBAKrB,CAACllL,KAAK6+H,gBAEXsmD,SAAU78E,GACR,OAAO8N,EAAAA,EAAAA,IAAY9N,GAAO7sF,KAAI,IAAMzb,KAAKo+H,eAAe,MAAO,CAC7DJ,YAAa,8BAGjBonD,UACE,MAAM9gF,EAAW,CAACtkG,KAAKy/H,cAYvB,OAVIz/H,KAAKotK,YAAY9oE,EAASv5F,QAAQ/K,KAAKotJ,eAEvCptJ,KAAK4kL,YACPtgF,EAASv5F,QAAQ/K,KAAKglL,aAEtB1gF,EAASv5F,WAAW/K,KAAKmlL,SAAS,IAGpC7gF,EAASv5F,WAAW/K,KAAKmlL,SAASnlL,KAAKsoG,QAEhCtoG,KAAKo+H,eAAe,MAAOp+H,KAAKggI,aAAahgI,KAAKkkH,UAAYlkH,KAAK6yB,MAAO,CAC/EmrG,YAAa,wBACbC,MAAO,CACL,CAACj+H,KAAKwtI,aAAcxtI,KAAKkkH,UAE3B3c,GAAI,CACFoiB,MAAO,KACD3pH,KAAK81K,aAAe91K,KAAK4kL,YAC3B5kL,KAAK6kL,gBAAgBj8K,KAAK5I,KAAKsE,MACtBtE,KAAK+jL,cAAgB/jL,KAAKg1C,WACnCh1C,KAAKkkH,UAAYlkH,KAAKkkH,SACtBlkH,KAAKukL,SAASc,aAAarlL,KAAKkG,IAAKlG,KAAKkkH,UAC1ClkH,KAAKukL,SAASe,kBAIlBhhF,IAENihF,SAAUzoK,EAAW0nK,GACnB,OAAOxkL,KAAKo+H,eAAekmD,EAAe,CACxCp+K,KAAKijI,EAAAA,EAAAA,IAAqBrsH,EAAM9c,KAAKiyJ,SACrCj6I,MAAO,CACL+rK,YAAa/jL,KAAK+jL,YAClBv2C,YAAaxtI,KAAKwtI,YAClB1wH,KAAAA,EACAswJ,WAAYptK,KAAKotK,WACjBgX,cAAepkL,KAAKokL,cACpBvxJ,MAAO7yB,KAAK6yB,MACZmxJ,eAAgBhkL,KAAKgkL,eACrB9qB,WAAYl5J,KAAKk5J,WACjBrM,kBAAmB7sJ,KAAK6sJ,kBACxBC,QAAS9sJ,KAAK8sJ,QACdC,OAAQ/sJ,KAAK+sJ,OACbo3B,YAAankL,KAAKmkL,YAClBlyB,QAASjyJ,KAAKiyJ,QACd/sB,SAAUllI,KAAKklI,SACf0vC,aAAc50K,KAAK40K,aACnBqP,aAAcjkL,KAAKikL,aACnBC,aAAclkL,KAAKkkL,aACnBpmI,WAAY99C,KAAK89C,WACjBg4H,YAAa91K,KAAK81K,YAClB/2J,QAAS/e,KAAK+e,QACdy5J,OAAQx4K,KAAKw4K,OACblwE,MAAOtoG,KAAKsoG,MAAQ,EACpB+7E,cAAerkL,KAAKqkL,cACpBG,iBAAAA,GAEFh6B,YAAaxqJ,KAAK0/H,gBAGtB8lD,qBACE,IAAKxlL,KAAK66J,SAAW76J,KAAKskG,SAAU,OAAO,KAE3C,MAAMA,EAAW,CAACtkG,KAAKskG,SAAS7oF,KAAI9R,GAAK3J,KAAKulL,SAAS57K,EAAG3J,KAAKg1C,aAE/D,OAAOh1C,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,6BACZ15B,IAEL27D,gBACE,OAAOjgK,KAAKo+H,eAAeqjC,EAAAA,GAAmB,CAACzhK,KAAKwlL,yBAIxDrmL,OAAQ2B,GACN,MAAMwjG,EAA0B,CAACtkG,KAAKolL,WAKtC,OAHIplL,KAAK89C,WAAYwmD,EAAS/6F,KAAKvJ,KAAKigK,iBACnC37D,EAAS/6F,KAAKvJ,KAAKwlL,sBAEjB1kL,EAAE,MAAO,CACdk9H,YAAa,kBACbC,MAAO,CACL,yBAA0Bj+H,KAAK4kL,YAC/B,yBAA0B5kL,KAAK81K,YAC/B,4BAA6B91K,KAAKg1C,SAClC,2BAA4Bh1C,KAAK+e,QACjC,0BAA2B/e,KAAKw4K,OAChC,4BAA6Bx4K,KAAKkzJ,YAEpCh4C,MAAO,CACL,gBAAiB1iG,OAAOxY,KAAK66J,UAE9Bv2D,MAIP,Q,oBCjXM,SAAUmhF,EAAgB3oK,EAAchJ,EAAgB4xK,GAC5D,MAAM/pJ,GAAOwtG,EAAAA,EAAAA,IAAqBrsH,EAAM4oK,GAExC,OAAO/pJ,EAAKwpG,oBAAoBpgI,QAAQ+O,EAAOqxH,sBAAwB,EAGnE,SAAUwgD,EACdxtK,EACA2E,EACAhJ,EACA8xK,EACAF,EACAG,EACAC,GAEA,GAAI3tK,EAAO2E,EAAMhJ,EAAQ4xK,GACvB,OAAO,EAGT,MAAMphF,GAAW6kC,EAAAA,EAAAA,IAAqBrsH,EAAM+oK,GAE5C,GAAIvhF,EAAU,CACZ,IAAIzxF,GAAQ,EACZ,IAAK,IAAI/J,EAAI,EAAGA,EAAIw7F,EAASt7F,OAAQF,IAC/B68K,EAAgBxtK,EAAQmsF,EAASx7F,GAAIgL,EAAQ8xK,EAAOF,EAASG,EAAaC,KAC5EjzK,GAAQ,GAIZ,GAAIA,EAAO,OAAO,EAKpB,OAFAizK,EAASvlL,KAAI4oI,EAAAA,EAAAA,IAAqBrsH,EAAM8oK,KAEjC,ECOT,OAAe3oD,EAAAA,EAAAA,IACbyjC,EAAAA,EAAAA,GAAmB,YACnBzhC,EAAAA,GAEAv3H,OAAO,CACPmC,KAAM,aAENk4H,UACE,MAAO,CAAEwiD,SAAUvkL,OAGrBgY,MAAO,CACL66B,OAAQ,CACNlsC,KAAMyE,MACN2wF,QAAS,IAAO,IAElByhC,MAAOD,QACPvoF,SAAUuoF,QACVplH,OAAQ+6E,SACR6yF,UAAWxoD,QACXp9F,MAAO,CACLx5B,KAAMyE,MACN2wF,QAAS,IAAO,IAElBiqF,eAAgBzoD,QAChBj5H,KAAM,CACJqC,KAAMyE,MACN2wF,QAAS,IAAO,IAElBkqF,QAAS1oD,QACT8wB,aAAc,CACZ1nJ,KAAM42H,QACNxhC,SAAS,GAEXjoF,OAAQ0E,OACRpU,MAAO,CACLuC,KAAMyE,MACN2wF,QAAS,IAAO,OAEf+nF,GAGLzhL,KAAM,KAAM,CACVimG,OAAQ,EACR49E,YAAa,IAAI9lJ,IACjBgqF,MAAO,GACPivC,UAAW,IAAIj5H,IACf+lJ,cAAe,IAAI/lJ,MAGrB09F,SAAU,CACRsoD,gBACE,MAAMN,EAAW,IAAI1lJ,IAErB,IAAKpgC,KAAK8T,OAAQ,OAAOgyK,EAEzB,IAAK,IAAIh9K,EAAI,EAAGA,EAAI9I,KAAKmgC,MAAMn3B,OAAQF,IACrC68K,EACE3lL,KAAKmY,QAAUstK,EACfzlL,KAAKmgC,MAAMr3B,GACX9I,KAAK8T,OACL9T,KAAKiyJ,QACLjyJ,KAAKklI,SACLllI,KAAKikL,aACL6B,GAIJ,OAAOA,IAIX3kD,MAAO,CACLhhG,MAAO,CACL0sB,UACE,MAAMw5H,EAAU75K,OAAOqC,KAAK7O,KAAKoqH,OAAO3uG,KAAIE,IAAKwtH,EAAAA,EAAAA,IAAqBnpI,KAAKoqH,MAAMzuG,GAAGmB,KAAM9c,KAAKiyJ,WACzFq0B,EAAUtmL,KAAKumL,QAAQvmL,KAAKmgC,OAC5B6rB,GAAOw6H,EAAAA,EAAAA,IAAUF,EAASD,GAGhC,IAAKr6H,EAAKhjD,QAAUs9K,EAAQt9K,OAASq9K,EAAQr9K,OAAQ,OAGrDgjD,EAAKhmD,SAAQ2V,UAAY3b,KAAKoqH,MAAMzuG,KAEpC,MAAM8qK,EAAmB,IAAIzmL,KAAKmmL,eAClCnmL,KAAKmmL,cAAgB,IAAI/lJ,IACzBpgC,KAAKkmL,YAAc,IAAI9lJ,IACvBpgC,KAAKq5J,UAAY,IAAIj5H,IACrBpgC,KAAK0mL,UAAU1mL,KAAKmgC,QAMfwvE,EAAAA,EAAAA,IAAU82E,EAAkB,IAAIzmL,KAAKmmL,iBAAiBnmL,KAAKklL,gBAElEnjF,MAAM,GAERlvD,OAAQzuC,GACNpE,KAAK2mL,uBAAuBviL,EAAOpE,KAAKkmL,YAAalmL,KAAKqlL,aAAcrlL,KAAKslL,aAE/ElhL,MAAOA,GACLpE,KAAK2mL,uBAAuBviL,EAAOpE,KAAKmmL,cAAenmL,KAAKilL,eAAgBjlL,KAAKklL,eAEnF5gL,KAAMF,GACJpE,KAAK2mL,uBAAuBviL,EAAOpE,KAAKq5J,UAAWr5J,KAAK8kL,WAAY9kL,KAAK+kL,YAI7E7lD,UACE,MAAM2G,EAAY3/H,GAAyBlG,KAAKquJ,cAAellB,EAAAA,EAAAA,IAAqBjjI,EAAKlG,KAAKiyJ,SAAW/rJ,EAEzGlG,KAAK0mL,UAAU1mL,KAAKmgC,OAEpB,IAAK,MAAM/7B,KAASpE,KAAKoE,MAAMqX,IAAIoqH,GACjC7lI,KAAKilL,eAAe7gL,GAAO,GAAM,GAGnC,IAAK,MAAMyuC,KAAU7yC,KAAK6yC,OAAOp3B,IAAIoqH,GACnC7lI,KAAKqlL,aAAaxyI,GAAQ,IAI9BuuF,WAEMphI,KAAKu/H,OAAOC,SAAWx/H,KAAKu/H,OAAO5pH,UACrC0rH,EAAAA,EAAAA,IAAY,8DAA+DrhI,MAGzEA,KAAKimL,QACPjmL,KAAK4mL,WAAU,IAEf5mL,KAAKsE,KAAK0B,SAAQE,GAAOlG,KAAK8kL,WAAW9kL,KAAKquJ,cAAellB,EAAAA,EAAAA,IAAqBjjI,EAAKlG,KAAKiyJ,SAAW/rJ,GAAK,KAC5GlG,KAAK+kL,aAIT1lD,QAAS,CAEPunD,UAAWxiL,GACToI,OAAOqC,KAAK7O,KAAKoqH,OAAOpkH,SAAQE,GAAOlG,KAAK8kL,YAAW37C,EAAAA,EAAAA,IAAqBnpI,KAAKoqH,MAAMlkH,GAAK4W,KAAM9c,KAAKiyJ,SAAU7tJ,KACjHpE,KAAK+kL,YAEPwB,QAASpmJ,EAActxB,EAAc,IACnC,IAAK,IAAI/F,EAAI,EAAGA,EAAIq3B,EAAMn3B,OAAQF,IAAK,CACrC,MAAM5C,GAAMijI,EAAAA,EAAAA,IAAqBhpG,EAAMr3B,GAAI9I,KAAKiyJ,SAChDpjJ,EAAKtF,KAAKrD,GACV,MAAMo+F,GAAW6kC,EAAAA,EAAAA,IAAqBhpG,EAAMr3B,GAAI9I,KAAKikL,cACjD3/E,GACFz1F,EAAKtF,QAAQvJ,KAAKumL,QAAQjiF,IAI9B,OAAOz1F,GAET63K,UAAWvmJ,EAAchgC,EAAmC,MAC1D,IAAK,IAAI2I,EAAI,EAAGA,EAAIq3B,EAAMn3B,OAAQF,IAAK,OACrC,MAAMgU,EAAOqjB,EAAMr3B,GACb5C,GAAMijI,EAAAA,EAAAA,IAAqBrsH,EAAM9c,KAAKiyJ,SACtC3tD,EAAQ,UAAG6kC,EAAAA,EAAAA,IAAqBrsH,EAAM9c,KAAKikL,eAAnC,EAAoD,GAC5D4C,EAAU7mL,KAAKoqH,MAAM5yG,eAAetR,GAAOlG,KAAKoqH,MAAMlkH,GAAO,CACjEgtJ,YAAY,EAAOwxB,iBAAiB,EAAOxgE,UAAU,EAAO22C,QAAQ,EAAO16B,MAAO,MAG9EnsG,EAAY,CAChBmsG,MAAO0mD,EAAQ1mD,MACfhgI,OAAAA,EACAmkG,SAAUA,EAAS7oF,KAAK9R,IAAWw/H,EAAAA,EAAAA,IAAqBx/H,EAAG3J,KAAKiyJ,WAChEn1I,KAAAA,GAkBF,GAfA9c,KAAK0mL,UAAUpiF,EAAUp+F,IAGpBlG,KAAKoqH,MAAM5yG,eAAetR,IAAmB,OAAX/F,GAAmBH,KAAKoqH,MAAM5yG,eAAerX,GAClF6zB,EAAKk/H,WAAalzJ,KAAKoqH,MAAMjqH,GAAQ+yJ,YAErCl/H,EAAKk/H,WAAa2zB,EAAQ3zB,WAC1Bl/H,EAAK0wJ,gBAAkBmC,EAAQnC,iBAGjC1wJ,EAAKkwF,SAAW2iE,EAAQ3iE,SACxBlwF,EAAK6mI,OAASgsB,EAAQhsB,OAEtB76J,KAAKoqH,MAAMlkH,GAAO8tB,EAEdswE,EAASt7F,QAAiC,gBAAvBhJ,KAAKqkL,cAAiC,CAC3D,MAAM,WAAEnxB,EAAF,gBAAcwxB,GAAoB1kL,KAAK8mL,eAAe5gL,EAAKlG,KAAKoqH,OAEtEp2F,EAAKk/H,WAAaA,EAClBl/H,EAAK0wJ,gBAAkBA,GAIrB1kL,KAAKoqH,MAAMlkH,GAAKgtJ,YAAsC,gBAAvBlzJ,KAAKqkL,eAA4D,IAAzBrwJ,EAAKswE,SAASt7F,QAAehJ,KAAKmmL,cAAc5lL,IAAI2F,GAC3HlG,KAAKoqH,MAAMlkH,GAAKg+G,UAAUlkH,KAAKkmL,YAAY3lL,IAAI2F,GAC/ClG,KAAKoqH,MAAMlkH,GAAK20J,QAAQ76J,KAAKq5J,UAAU94J,IAAI2F,GAE/ClG,KAAK+mL,iBAAiB7gL,KAG1B4gL,eAAgB9yJ,EAAuB+gE,GACrC,MAAMuP,EAAWvP,EAAM/gE,GAAMswE,SACvB0iF,EAAS1iF,EAAS5yD,QAAO,CAACs1I,EAAkBviF,KAChDuiF,EAAO,KAAOzpD,QAAQxoC,EAAM0P,GAAOyuD,YACnC8zB,EAAO,KAAOzpD,QAAQxoC,EAAM0P,GAAOigF,iBAE5BsC,IACN,CAAC,EAAG,IAED9zB,IAAe5uD,EAASt7F,QAAUg+K,EAAO,KAAO1iF,EAASt7F,OACzD07K,GAAmBxxB,IAAe8zB,EAAO,GAAK,GAAKA,EAAO,GAAK,GAErE,MAAO,CACL9zB,WAAAA,EACAwxB,gBAAAA,IAGJK,WACE/kL,KAAKinL,cAAc,cAAejnL,KAAKq5J,YAEzC6rB,eACEllL,KAAKinL,cAAc,QAASjnL,KAAKmmL,gBAEnCb,aACEtlL,KAAKinL,cAAc,gBAAiBjnL,KAAKkmL,cAE3Ce,cAAez1I,EAAe36B,GAC5B7W,KAAKumI,MAAM/0F,EAAOxxC,KAAKquJ,aAAe,IAAIx3I,GAAO4E,KAAIvV,GAAOlG,KAAKoqH,MAAMlkH,GAAK4W,OAAQ,IAAIjG,KAE1F8vK,uBAAwBviL,EAAcyS,EAAkBkC,EAAoBmuK,GAC1E9iL,EAAQpE,KAAKquJ,aAAejqJ,EAAMqX,KAAI5J,IAAKs3H,EAAAA,EAAAA,IAAqBt3H,EAAG7R,KAAKiyJ,WAAY7tJ,EACpF,MAAMovJ,EAAM,IAAI38I,IACZ84F,EAAAA,EAAAA,IAAU6jD,EAAKpvJ,KAEnBovJ,EAAIxtJ,SAAQE,GAAO6S,EAAS7S,GAAK,KACjC9B,EAAM4B,SAAQE,GAAO6S,EAAS7S,GAAK,KAEnCghL,MAEFC,eAAgBjhL,EAAsBk+F,EAAyB,IAC7D,MAAME,EAAWtkG,KAAKoqH,MAAMlkH,GAAKo+F,SAEjCF,EAAY76F,QAAQ+6F,GAEpB,IAAK,IAAIx7F,EAAI,EAAGA,EAAIw7F,EAASt7F,OAAQF,IACnCs7F,EAAcpkG,KAAKmnL,eAAe7iF,EAASx7F,GAAIs7F,GAGjD,OAAOA,GAETgjF,WAAYlhL,GACV,IAAI/F,EAASH,KAAKoqH,MAAMlkH,GAAK/F,OAE7B,MAAMknL,EAAU,GAChB,MAAkB,OAAXlnL,EACLknL,EAAQ99K,KAAKpJ,GACbA,EAASH,KAAKoqH,MAAMjqH,GAAQA,OAG9B,OAAOknL,GAET9iH,SAAUvwC,GACR,MAAM9tB,GAAMijI,EAAAA,EAAAA,IAAqBn1G,EAAKlX,KAAM9c,KAAKiyJ,SACjDjyJ,KAAKoqH,MAAMlkH,GAAKi6H,MAAQnsG,EAExBh0B,KAAK+mL,iBAAiB7gL,IAExBy+D,WAAY3wC,GACV,MAAM9tB,GAAMijI,EAAAA,EAAAA,IAAqBn1G,EAAKlX,KAAM9c,KAAKiyJ,SAC7CjyJ,KAAKoqH,MAAMlkH,KAAMlG,KAAKoqH,MAAMlkH,GAAKi6H,MAAQ,OAE/CmnD,SAAUphL,GACR,OAAOlG,KAAKoqH,MAAMlkH,GAAKo+F,UAAYtkG,KAAKoqH,MAAMlkH,GAAKo+F,SAASt7F,QAE9Dq8K,aAAcn/K,EAAsBg+G,GAClC,IAAKlkH,KAAKoqH,MAAM5yG,eAAetR,GAAM,OAEhClG,KAAKgmL,gBACRhmL,KAAKkmL,YAAYlgL,SAAQ6sC,IACvB7yC,KAAKoqH,MAAMv3E,GAAQqxE,UAAW,EAC9BlkH,KAAK+mL,iBAAiBl0I,GACtB7yC,KAAKkmL,YAAYhjJ,OAAO2P,MAI5B,MAAM7e,EAAOh0B,KAAKoqH,MAAMlkH,GACnB8tB,IAEDkwF,EAAUlkH,KAAKkmL,YAAY3lL,IAAI2F,GAC9BlG,KAAKkmL,YAAYhjJ,OAAOh9B,GAE7B8tB,EAAKkwF,SAAWA,EAEhBlkH,KAAK+mL,iBAAiB7gL,KAExB++K,eAAgB/+K,EAAsBgtJ,EAAqB7gE,GAAW,GACpE,IAAKryF,KAAKoqH,MAAM5yG,eAAetR,GAAM,OAErC,MAAMkkD,EAAU,IAAIlf,IAEpB,GAA2B,gBAAvBlrC,KAAKqkL,cAAiC,CACxC,IAAK,MAAMtzE,KAAc/wG,KAAKmnL,eAAejhL,IACtCijI,EAAAA,EAAAA,IAAqBnpI,KAAKoqH,MAAMrZ,GAAYj0F,KAAM9c,KAAK40K,gBAAiBviF,IAC3EryF,KAAKoqH,MAAMrZ,GAAYmiD,WAAaA,EACpClzJ,KAAKoqH,MAAMrZ,GAAY2zE,iBAAkB,EACzCt6H,EAAQn2B,IAAI88E,EAAYmiD,IAI5B,MAAMq0B,EAAavnL,KAAK8mL,eAAe5gL,EAAKlG,KAAKoqH,OACjDpqH,KAAKoqH,MAAMlkH,GAAKgtJ,WAAaA,EAC7BlzJ,KAAKoqH,MAAMlkH,GAAKw+K,gBAAkB6C,EAAW7C,gBAC7Ct6H,EAAQn2B,IAAI/tB,EAAKgtJ,GAEjB,IAAK,MAAM/yJ,KAAUH,KAAKonL,WAAWlhL,GAAM,CACzC,MAAMqhL,EAAavnL,KAAK8mL,eAAe3mL,EAAQH,KAAKoqH,OACpDpqH,KAAKoqH,MAAMjqH,GAAQ+yJ,WAAaq0B,EAAWr0B,WAC3ClzJ,KAAKoqH,MAAMjqH,GAAQukL,gBAAkB6C,EAAW7C,gBAChDt6H,EAAQn2B,IAAI9zB,EAAQonL,EAAWr0B,kBAGjClzJ,KAAKoqH,MAAMlkH,GAAKgtJ,WAAaA,EAC7BlzJ,KAAKoqH,MAAMlkH,GAAKw+K,iBAAkB,EAClCt6H,EAAQn2B,IAAI/tB,EAAKgtJ,GAGnB,IAAK,MAAOhtJ,EAAK9B,KAAUgmD,EAAQmK,UACjCv0D,KAAK+mL,iBAAiB7gL,GAEK,SAAvBlG,KAAKqkL,eAA4BrkL,KAAKsnL,SAASphL,MAEzC,IAAV9B,EAAiBpE,KAAKmmL,cAAc5lL,IAAI2F,GAAOlG,KAAKmmL,cAAcjjJ,OAAOh9B,KAG7E4+K,WAAY5+K,EAAsB20J,GAChC,IAAK76J,KAAKoqH,MAAM5yG,eAAetR,GAAM,OAErC,MAAM8tB,EAAOh0B,KAAKoqH,MAAMlkH,GAClBo+F,GAAW6kC,EAAAA,EAAAA,IAAqBn1G,EAAKlX,KAAM9c,KAAKikL,cAElD3/E,IAAaA,EAASt7F,QAAUgrB,EAAKmsG,QAAUnsG,EAAKmsG,MAAMskD,UAC5DzwJ,EAAKmsG,MAAM0kD,gBAAgBj8K,MAAK,IAAM5I,KAAK8kL,WAAW5+K,EAAK20J,KAClDv2D,GAAYA,EAASt7F,SAC9BgrB,EAAK6mI,OAASA,EAEd7mI,EAAK6mI,OAAS76J,KAAKq5J,UAAU94J,IAAI2F,GAAOlG,KAAKq5J,UAAUn2H,OAAOh9B,GAE9DlG,KAAK+mL,iBAAiB7gL,KAG1B6gL,iBAAkB7gL,GAChB,MAAM8tB,EAAOh0B,KAAKoqH,MAAMlkH,GAEpB8tB,GAAQA,EAAKmsG,QACfnsG,EAAKmsG,MAAM+yB,WAAal/H,EAAKk/H,WAC7Bl/H,EAAKmsG,MAAMukD,gBAAkB1wJ,EAAK0wJ,gBAClC1wJ,EAAKmsG,MAAMjc,SAAWlwF,EAAKkwF,SAC3BlwF,EAAKmsG,MAAM06B,OAAS7mI,EAAK6mI,SAG7B8pB,WAAYz+K,GACV,QAASlG,KAAK8T,QAAU9T,KAAKomL,cAAcrpK,IAAI7W,KAInD/G,OAAQ2B,GACN,MAAMwjG,EAAuCtkG,KAAKmgC,MAAMn3B,OACpDhJ,KAAKmgC,MAAMhoB,QAAO2E,IACV9c,KAAK2kL,YAAWx7C,EAAAA,EAAAA,IAAqBrsH,EAAM9c,KAAKiyJ,YACvDx2I,KAAIqB,IACL,MAAMyoK,EAAWjB,EAAAA,QAAAA,QAAAA,SAAAA,KAA4CtkL,MAE7D,OAAOulL,EAASzoK,EAAM9c,KAAKg1C,WAAYm0F,EAAAA,EAAAA,IAAqBrsH,EAAM9c,KAAK40K,kBAGvE50K,KAAKu/H,OAAOxjC,QAEhB,OAAOj7F,EAAE,MAAO,CACdk9H,YAAa,aACbC,MAAO,CACL,wBAAyBj+H,KAAK+lL,UAC9B,oBAAqB/lL,KAAKw9H,SACvBx9H,KAAKykI,eAETngC,O,yMC3aP,SAASkjF,EACPrgE,EAA8B,MAC3BsgE,GAGH,OAAOr8K,QAAkBnK,OAAOkmH,KAASsgE,GAGrC,SAAUC,EACd79K,EACAo2H,EAAS,eACTrqG,GAEA,MAAO,CACL/rB,KAAAA,EAEAhK,YAAY,EAEZmY,MAAO,CACL8+G,MAAO,CACLnwH,KAAM42H,QACNxhC,SAAS,GAEX4rF,YAAa,CACXhhL,KAAM42H,QACNxhC,SAAS,GAEX6rF,cAAe,CACbjhL,KAAM42H,QACNxhC,SAAS,GAEXnmE,KAAM,CACJjvB,KAAM6R,OACNujF,QAASnmE,GAEXqqG,OAAQ,CACNt5H,KAAM6R,OACNujF,QAASkkC,IAIb9gI,OAAQ2B,EAAGf,GACT,MAAM+wF,EAAM,cAAa/wF,EAAQiY,MAAM8+G,MAAQ,SAAW,IACpDz0H,EAAkB,CACtB2V,MAAO,CACLnO,KAAAA,EACA+rB,KAAM71B,EAAQiY,MAAM4d,MAEtB2xE,GAAI,CACFsgF,YAAanyK,GACXA,EAAGyf,MAAMkrI,gBAAkBtgK,EAAQiY,MAAMioH,OACzCvqH,EAAGyf,MAAM2yJ,sBAAwB/nL,EAAQiY,MAAMioH,UAuCrD,OAlCIlgI,EAAQiY,MAAM4vK,gBAChBvlL,EAAKklG,GAAIuyE,MAAQ0N,EAAiBnlL,EAAKklG,GAAIuyE,OAAQpkK,IACjD,MAAM,UAAE8/G,EAAF,WAAaz1D,EAAb,YAAyB03D,EAAzB,aAAsCpC,GAAiB3/G,EAC7DA,EAAGqyK,yBAA2B,CAC5BxvK,SAAU7C,EAAGyf,MAAM5c,SACnBoiB,IAAKjlB,EAAGyf,MAAMwF,IACd/gB,KAAMlE,EAAGyf,MAAMvb,KACfoe,MAAOtiB,EAAGyf,MAAM6C,MAChBkB,OAAQxjB,EAAGyf,MAAM+D,QAEnBxjB,EAAGyf,MAAM5c,SAAW,WACpB7C,EAAGyf,MAAMwF,IAAM66F,EAAY,KAC3B9/G,EAAGyf,MAAMvb,KAAOmmD,EAAa,KAC7BrqD,EAAGyf,MAAM6C,MAAQy/F,EAAc,KAC/B/hH,EAAGyf,MAAM+D,OAASm8F,EAAe,QAEnChzH,EAAKklG,GAAIygF,WAAaR,EAAiBnlL,EAAKklG,GAAIygF,YAAatyK,IAC3D,GAAIA,GAAMA,EAAGqyK,yBAA0B,CACrC,MAAM,SAAExvK,EAAF,IAAYoiB,EAAZ,KAAiB/gB,EAAjB,MAAuBoe,EAAvB,OAA8BkB,GAAWxjB,EAAGqyK,gCAC3CryK,EAAGqyK,yBACVryK,EAAGyf,MAAM5c,SAAWA,GAAY,GAChC7C,EAAGyf,MAAMwF,IAAMA,GAAO,GACtBjlB,EAAGyf,MAAMvb,KAAOA,GAAQ,GACxBlE,EAAGyf,MAAM6C,MAAQA,GAAS,GAC1BtiB,EAAGyf,MAAM+D,OAASA,GAAU,QAI9Bn5B,EAAQiY,MAAM2vK,cAChBtlL,EAAKklG,GAAIuyE,MAAQ0N,EAAiBnlL,EAAKklG,GAAIuyE,OAAQpkK,IACjDA,EAAGyf,MAAMsX,YAAY,UAAW,OAAQ,iBAIrC3rC,EAAEgwF,GAAKo4C,EAAAA,EAAAA,IAAUnpI,EAAQsC,KAAMA,GAAOtC,EAAQukG,YAKrD,SAAU2jF,EACdp+K,EACAq+K,EACAtyJ,EAAO,UAEP,MAAO,CACL/rB,KAAAA,EAEAhK,YAAY,EAEZmY,MAAO,CACL4d,KAAM,CACJjvB,KAAM6R,OACNujF,QAASnmE,IAIbz2B,OAAQ2B,EAAGf,GACT,OAAOe,EACL,cACAooI,EAAAA,EAAAA,IAAUnpI,EAAQsC,KAAM,CACtB2V,MAAO,CAAEnO,KAAAA,GACT09F,GAAI2gF,IAENnoL,EAAQukG,Y,cC9GF,WAAW6jF,EAAsB,GAAIzpK,GAAI,GACrD,MAAM0pK,EAAe1pK,EAAI,QAAU,SAC7B2pK,EAAiB,UAAS7jB,EAAAA,EAAAA,IAAW4jB,KAE3C,MAAO,CACLP,YAAanyK,GACXA,EAAG4yK,QAAU5yK,EAAG4xB,WAChB5xB,EAAG6yK,cAAgB,CACjBzqI,WAAYpoC,EAAGyf,MAAM2oB,WACrB0qI,SAAU9yK,EAAGyf,MAAMqzJ,SACnB,CAACJ,GAAe1yK,EAAGyf,MAAMizJ,KAI7BvO,MAAOnkK,GACL,MAAM+yK,EAAe/yK,EAAG6yK,cAExB7yK,EAAGyf,MAAMsX,YAAY,aAAc,OAAQ,aAE3C/2B,EAAGyf,MAAMqzJ,SAAW,SACpB,MAAMxjI,EAAS,GAAGtvC,EAAG2yK,OAErB3yK,EAAGyf,MAAMizJ,GAAgB,IAEpB1yK,EAAG2/G,aAER3/G,EAAGyf,MAAM2oB,WAAa2qI,EAAa3qI,WAE/BqqI,GAAuBzyK,EAAG4yK,SAC5B5yK,EAAG4yK,QAAQ7hF,UAAUlmG,IAAI4nL,GAG3BtvK,uBAAsB,KACpBnD,EAAGyf,MAAMizJ,GAAgBpjI,MAI7B0jI,WAAYC,EACZC,eAAgBD,EAEhB7O,MAAOpkK,GACLA,EAAG6yK,cAAgB,CACjBzqI,WAAY,GACZ0qI,SAAU9yK,EAAGyf,MAAMqzJ,SACnB,CAACJ,GAAe1yK,EAAGyf,MAAMizJ,IAG3B1yK,EAAGyf,MAAMqzJ,SAAW,SACpB9yK,EAAGyf,MAAMizJ,GAAgB,GAAG1yK,EAAG2yK,OAC1B3yK,EAAG2/G,aAERx8G,uBAAsB,IAAOnD,EAAGyf,MAAMizJ,GAAgB,OAGxDJ,WAAAA,EACAa,eAAgBb,GAGlB,SAASA,EAAYtyK,GACfyyK,GAAuBzyK,EAAG4yK,SAC5B5yK,EAAG4yK,QAAQ7hF,UAAUzzF,OAAOm1K,GAE9BQ,EAAYjzK,GAGd,SAASizK,EAAajzK,GACpB,MAAMmH,EAAOnH,EAAG6yK,cAAeH,GAC/B1yK,EAAGyf,MAAMqzJ,SAAW9yK,EAAG6yK,cAAeC,SAC1B,MAAR3rK,IAAcnH,EAAGyf,MAAMizJ,GAAgBvrK,UACpCnH,EAAG6yK,eCzEqBb,EAAuB,uBAChBA,EAAuB,+BAD1D,MAEM9N,EAAiB8N,EAAuB,kBACxC/N,EAAwB+N,EAAuB,0BAQ/C7lB,GAPkB6lB,EAAuB,mBACxBA,EAAuB,iBAAkB,gBAAiB,UAGvDA,EAAuB,qBACjBA,EAAuB,4BAC1BA,EAAuB,yBAC5BA,EAAuB,oBAMzCoB,GALmBpB,EAAuB,oBACrBA,EAAuB,uBAChBA,EAAuB,+BAC9BA,EAAuB,uBAChBA,EAAuB,+BAC/BA,EAAuB,uBAM3CjmB,GAL2BimB,EAAuB,8BAC9BA,EAAuB,sBAChBA,EAAuB,8BAG9BO,EAA2B,oBAAqBc,MACpE/6B,EAAqBi6B,EAA2B,sBAAuBc,EAA0B,IAAI,K,gDClBlH,SAASC,IACP,OAAO,EAGT,SAASC,EAAY/4K,EAAiBwF,EAAiB+nG,GAKrD,IAAKvtG,IAAmC,IAA9Bg5K,EAAch5K,EAAGutG,GAAoB,OAAO,EAKtD,MAAMvpF,GAAOuuJ,EAAAA,EAAAA,GAAa/sK,GAC1B,GACwB,qBAAfyzK,YACPj1J,aAAgBi1J,YAChBj1J,EAAKrgB,OAAS3D,EAAE/B,OAChB,OAAO,EAIT,MAAM4mB,GAAsC,kBAAlB0oF,EAAQr5G,OAAsBq5G,EAAQr5G,MAAMg8J,SAAnD,KAAsE,OASzF,OAPArrI,EAASxrB,KAAKmM,IAONqf,EAASyyC,MAAK9xD,GAAMA,EAAGy+C,SAASjkD,EAAE/B,UAG5C,SAAS+6K,EAAeh5K,EAAiButG,GACvC,MAAMyG,EAAqC,kBAAlBzG,EAAQr5G,OAAsBq5G,EAAQr5G,MAAM46J,kBAAqBgqB,EAE1F,OAAO9kE,EAASh0G,GAGlB,SAASk5K,EAAWl5K,EAAiBwF,EAAiB+nG,EAAgC0iB,GACpF,MAAMtzE,EAAmC,oBAAlB4wD,EAAQr5G,MAAuBq5G,EAAQr5G,MAAQq5G,EAAQr5G,MAAOyoD,QAErFn3C,EAAG2zK,cAAeC,yBAA2BL,EAAW/4K,EAAGwF,EAAI+nG,IAAYz4G,YAAW,KACpFkkL,EAAch5K,EAAGutG,IAAY5wD,GAAWA,EAAQ38C,KAC/C,GAGL,SAASq5K,EAAc7zK,EAAiBZ,GACtC,MAAMof,GAAOuuJ,EAAAA,EAAAA,GAAa/sK,GAE1BZ,EAASlC,UAEiB,qBAAfu2K,YAA8Bj1J,aAAgBi1J,YACvDr0K,EAASof,GAIN,MAAM2pI,EAAe,CAM1B39B,SAAUxqH,EAAiB+nG,EAAgC0iB,GACzD,MAAMlqG,EAAW/lB,GAAak5K,EAAUl5K,EAAmBwF,EAAI+nG,EAAS0iB,GAClEqpD,EAAet5K,IACnBwF,EAAG2zK,cAAeC,wBAA0BL,EAAW/4K,EAAmBwF,EAAI+nG,IAGhF8rE,EAAa7zK,GAAKmtH,IAChBA,EAAIt8H,iBAAiB,QAAS0vB,GAAS,GACvC4sG,EAAIt8H,iBAAiB,YAAaijL,GAAa,MAG5C9zK,EAAG2zK,gBACN3zK,EAAG2zK,cAAgB,CACjBC,yBAAyB,IAI7B5zK,EAAG2zK,cAAclpD,EAAMpgI,QAASugI,MAAQ,CACtCrqG,QAAAA,EACAuzJ,YAAAA,IAIJjpD,OAAQ7qH,EAAiB+nG,EAAgC0iB,GAClDzqH,EAAG2zK,gBAERE,EAAa7zK,GAAKmtH,IAAoB,MACpC,IAAKA,GAAO,SAACntH,EAAG2zK,iBAAHI,EAAmBtpD,EAAMpgI,QAASugI,MAAO,OAEtD,MAAM,QAAErqG,EAAF,YAAWuzJ,GAAgB9zK,EAAG2zK,cAAclpD,EAAMpgI,QAASugI,MAEjEuC,EAAIhgI,oBAAoB,QAASozB,GAAS,GAC1C4sG,EAAIhgI,oBAAoB,YAAa2mL,GAAa,aAG7C9zK,EAAG2zK,cAAclpD,EAAMpgI,QAASugI,SAI3C,U,kCCrGA,SAASJ,EAAUxqH,EAAiB+nG,EAAgC0iB,GAClE,GAAsB,qBAAX/rH,UAA4B,yBAA0BA,QAAS,OAE1E,MAAMgsH,EAAY3iB,EAAQ2iB,WAAa,GACjCh8H,EAAQq5G,EAAQr5G,OAChB,QAAEyoD,EAAF,QAAWltD,GAA6B,kBAAVyE,EAChCA,EACA,CAAEyoD,QAASzoD,EAAOzE,QAAS,IACzB00D,EAAW,IAAIq1H,sBAAqB,CACxCn1H,EAAuC,GACvCF,KACE,MACF,MAAMs1H,EAAQ,SAAGj0K,EAAGi0K,eAAN,EAAGC,EAAczpD,EAAMpgI,QAASugI,MAC9C,IAAKqpD,EAAU,OAEf,MAAMz8C,EAAiB34E,EAAQiT,MAAKrmB,GAASA,EAAM+rF,kBAKjDrgF,GACGuzE,EAAUmoB,QACXohC,EAASrtH,MAER8jE,EAAUh1B,OACX8hC,IACAy8C,EAASrtH,MAGXzP,EAAQ0H,EAASF,EAAU64E,GAGzBA,GAAkB9M,EAAUh1B,KAAMm1B,EAAO7qH,EAAI+nG,EAAS0iB,GACrDwpD,EAASrtH,MAAO,IACpB38D,GAEH+V,EAAGi0K,SAAWn9K,OAAOkJ,EAAGi0K,UACxBj0K,EAAGi0K,SAAUxpD,EAAMpgI,QAASugI,MAAQ,CAAEhkE,MAAM,EAAOjI,SAAAA,GAEnDA,EAASM,QAAQj/C,GAGnB,SAAS6qH,EAAQ7qH,EAAiB+nG,EAAgC0iB,GAAY,MAC5E,MAAMxrE,EAAO,SAAGj/C,EAAGi0K,eAAN,EAAGE,EAAc1pD,EAAMpgI,QAASugI,MACxC3rE,IAELA,EAAQN,SAASy1H,UAAUp0K,UACpBA,EAAGi0K,SAAUxpD,EAAMpgI,QAASugI,OAG9B,MAAM+/C,EAAY,CACvBngD,SAAAA,EACAK,OAAAA,GAGF,U,iCChEA,SAASL,EAAUxqH,EAAiB+nG,EAA+B0iB,GACjE,MAAMrrH,EAAW2oG,EAAQr5G,MACnBzE,EAAU89G,EAAQ99G,SAAW,CAAE+qC,SAAS,GAE9Ct2B,OAAO7N,iBAAiB,SAAUuO,EAAUnV,GAE5C+V,EAAGq0K,UAAYv9K,OAAOkJ,EAAGq0K,WACzBr0K,EAAGq0K,UAAW5pD,EAAMpgI,QAASugI,MAAQ,CACnCxrH,SAAAA,EACAnV,QAAAA,GAGG89G,EAAQ2iB,WAAc3iB,EAAQ2iB,UAAUmoB,OAC3CzzI,IAIJ,SAASyrH,EAAQ7qH,EAAiB+nG,EAA+B0iB,GAAY,MAC3E,GAAI,SAACzqH,EAAGq0K,aAAHC,EAAe7pD,EAAMpgI,QAASugI,MAAO,OAE1C,MAAM,SAAExrH,EAAF,QAAYnV,GAAY+V,EAAGq0K,UAAU5pD,EAAMpgI,QAASugI,MAE1DlsH,OAAOvR,oBAAoB,SAAUiS,EAAUnV,UAExC+V,EAAGq0K,UAAU5pD,EAAMpgI,QAASugI,MAG9B,MAAMoe,EAAS,CACpBxe,SAAAA,EACAK,OAAAA,GAGF,U,gFC5BA,MAAM0pD,EAAe,GAErB,SAAS/oF,EAAWxrF,EAAiBtR,GACnCsR,EAAGyf,MAAM+rE,UAAY98F,EACrBsR,EAAGyf,MAAM+0J,gBAAkB9lL,EAS7B,SAAS+lL,EAAcj6K,GACrB,MAA8B,eAAvBA,EAAE8G,YAAYnN,KAGvB,SAASugL,EAAiBl6K,GACxB,MAA8B,kBAAvBA,EAAE8G,YAAYnN,KAGvB,MAAMwgL,EAAY,CAChBn6K,EACAwF,EACAtR,EAAuB,MAEvB,IAAIkmL,EAAS,EACTC,EAAS,EAEb,IAAKH,EAAgBl6K,GAAI,CACvB,MAAM80C,EAAStvC,EAAG+yB,wBACZt6B,EAASg8K,EAAaj6K,GAAKA,EAAEm4B,QAAQn4B,EAAEm4B,QAAQr/B,OAAS,GAAKkH,EAEnEo6K,EAASn8K,EAAOu6B,QAAUsc,EAAOprC,KACjC2wK,EAASp8K,EAAOw6B,QAAUqc,EAAOrqB,IAGnC,IAAIlB,EAAS,EACTpD,EAAQ,GACR3gB,EAAG80K,SAAW90K,EAAG80K,QAAQ97C,QAC3Br4G,EAAQ,IACRoD,EAAS/jB,EAAG8zB,YAAc,EAC1B/P,EAASr1B,EAAMs/C,OAASjqB,EAASA,EAASxqB,KAAKqP,MAAMgsK,EAAS7wJ,IAAW,GAAK8wJ,EAAS9wJ,IAAW,GAAK,GAEvGA,EAASxqB,KAAKqP,KAAK5I,EAAG8zB,aAAe,EAAI9zB,EAAG+zB,cAAgB,GAAK,EAGnE,MAAMue,GAActyC,EAAG8zB,YAAwB,EAAT/P,GAAe,EAArC,KACVwuB,GAAcvyC,EAAG+zB,aAAyB,EAAThQ,GAAe,EAAtC,KAEV/a,EAAIta,EAAMs/C,OAASsE,EAAasiI,EAAS7wJ,EAAZ,KAC7B9a,EAAIva,EAAMs/C,OAASuE,EAAasiI,EAAS9wJ,EAAZ,KAEnC,MAAO,CAAEA,OAAAA,EAAQpD,MAAAA,EAAO3X,EAAAA,EAAGC,EAAAA,EAAGqpC,QAAAA,EAASC,QAAAA,IAGnCwiI,EAAU,CAEdh3I,KACEvjC,EACAwF,EACAtR,EAAuB,IAEvB,IAAKsR,EAAG80K,UAAY90K,EAAG80K,QAAQ5yH,QAC7B,OAGF,MAAMxuB,EAAYx2B,SAASa,cAAc,QACnC8gB,EAAY3hB,SAASa,cAAc,QAEzC21B,EAAUsoE,YAAYn9E,GACtB6U,EAAUq1D,UAAY,sBAElBr6F,EAAM65H,QACR70F,EAAUq1D,WAAa,IAAIr6F,EAAM65H,SAGnC,MAAM,OAAExkG,EAAF,MAAUpD,EAAV,EAAiB3X,EAAjB,EAAoBC,EAApB,QAAuBqpC,EAAvB,QAAgCC,GAAYoiI,EAAUn6K,EAAGwF,EAAItR,GAE7DyY,EAAmB,EAAT4c,EAAH,KACblF,EAAUkqE,UAAY,sBACtBlqE,EAAUY,MAAM6C,MAAQnb,EACxB0X,EAAUY,MAAM+D,OAASrc,EAEzBnH,EAAGg8F,YAAYtoE,GAEf,MAAM00F,EAAW1pH,OAAOuzB,iBAAiBjyB,GACrCooH,GAAkC,WAAtBA,EAASvlH,WACvB7C,EAAGyf,MAAM5c,SAAW,WACpB7C,EAAG+hC,QAAQizI,iBAAmB,UAGhCn2J,EAAUkyE,UAAUlmG,IAAI,8BACxBg0B,EAAUkyE,UAAUlmG,IAAI,gCACxB2gG,EAAU3sE,EAAW,aAAa7V,MAAMC,cAAc0X,KAASA,KAASA,MACxE9B,EAAUkjB,QAAQw5B,UAAYz4D,OAAO6/J,YAAYplK,OAEjDjO,YAAW,KACTuvB,EAAUkyE,UAAUzzF,OAAO,8BAC3BuhB,EAAUkyE,UAAUlmG,IAAI,2BACxB2gG,EAAU3sE,EAAW,aAAayzB,MAAYC,uBAC7C,IAGLrU,KAAMl+B,GACJ,IAAKA,IAAOA,EAAG80K,UAAY90K,EAAG80K,QAAQ5yH,QAAS,OAE/C,MAAM6yH,EAAU/0K,EAAGi1K,uBAAuB,uBAE1C,GAAuB,IAAnBF,EAAQzhL,OAAc,OAC1B,MAAMurB,EAAYk2J,EAAQA,EAAQzhL,OAAS,GAE3C,GAAIurB,EAAUkjB,QAAQmzI,SAAU,OAC3Br2J,EAAUkjB,QAAQmzI,SAAW,OAElC,MAAM5+H,EAAOqsH,YAAYplK,MAAQmH,OAAOma,EAAUkjB,QAAQw5B,WACpD73D,EAAQnK,KAAKmQ,IAAI,IAAM4sC,EAAM,GAEnChnD,YAAW,KACTuvB,EAAUkyE,UAAUzzF,OAAO,2BAC3BuhB,EAAUkyE,UAAUlmG,IAAI,4BAExByE,YAAW,KACT,MAAMylL,EAAU/0K,EAAGi1K,uBAAuB,uBACnB,IAAnBF,EAAQzhL,QAAgB0M,EAAG+hC,QAAQizI,mBACrCh1K,EAAGyf,MAAM5c,SAAW7C,EAAG+hC,QAAQizI,wBACxBh1K,EAAG+hC,QAAQizI,kBAGpBn2J,EAAU+S,YAAc5xB,EAAGk8F,YAAYr9E,EAAU+S,cAChD,OACFluB,KAIP,SAASyxK,EAAiBzmL,GACxB,MAAwB,qBAAVA,KAA2BA,EAG3C,SAAS0mL,EAAY56K,GACnB,MAAM9L,EAAuB,GACvBwjC,EAAU13B,EAAE6/H,cAElB,GAAKnoG,GAAYA,EAAQ4iJ,UAAW5iJ,EAAQ4iJ,QAAQO,UAAW76K,EAAE86K,WAAjE,CAKA,GAFA96K,EAAE86K,YAAa,EAEXb,EAAaj6K,GACf03B,EAAQ4iJ,QAAQO,SAAU,EAC1BnjJ,EAAQ4iJ,QAAQS,SAAU,OAM1B,GAAIrjJ,EAAQ4iJ,QAAQS,QAAS,OAO/B,GALA7mL,EAAMs/C,OAAS9b,EAAQ4iJ,QAAQ1L,UAAYsL,EAAgBl6K,GACvD03B,EAAQ4iJ,QAAQvsD,QAClB75H,EAAM65H,MAAQr2F,EAAQ4iJ,QAAQvsD,OAG5BksD,EAAaj6K,GAAI,CAEnB,GAAI03B,EAAQ4iJ,QAAQU,gBAAiB,OAErCtjJ,EAAQ4iJ,QAAQU,gBAAkB,KAChCT,EAAQh3I,KAAKvjC,EAAG03B,EAASxjC,IAE3BwjC,EAAQ4iJ,QAAQW,UAAY/2K,OAAOpP,YAAW,KACxC4iC,GAAWA,EAAQ4iJ,SAAW5iJ,EAAQ4iJ,QAAQU,kBAChDtjJ,EAAQ4iJ,QAAQU,kBAChBtjJ,EAAQ4iJ,QAAQU,gBAAkB,QAEnCjB,QAEHQ,EAAQh3I,KAAKvjC,EAAG03B,EAASxjC,IAI7B,SAASgnL,EAAYl7K,GACnB,MAAM03B,EAAU13B,EAAE6/H,cAClB,GAAKnoG,GAAYA,EAAQ4iJ,QAAzB,CAMA,GAJAp2K,OAAOiF,aAAauuB,EAAQ4iJ,QAAQW,WAIrB,aAAXj7K,EAAEvJ,MAAuBihC,EAAQ4iJ,QAAQU,gBAQ3C,OAPAtjJ,EAAQ4iJ,QAAQU,kBAChBtjJ,EAAQ4iJ,QAAQU,gBAAkB,UAGlCtjJ,EAAQ4iJ,QAAQW,UAAYnmL,YAAW,KACrComL,EAAWl7K,OAKfkE,OAAOpP,YAAW,KACZ4iC,EAAQ4iJ,UACV5iJ,EAAQ4iJ,QAAQO,SAAU,MAG9BN,EAAQ72I,KAAKhM,IAGf,SAASyjJ,EAAkBn7K,GACzB,MAAM03B,EAAU13B,EAAE6/H,cAEbnoG,GAAYA,EAAQ4iJ,UAErB5iJ,EAAQ4iJ,QAAQU,kBAClBtjJ,EAAQ4iJ,QAAQU,gBAAkB,MAGpC92K,OAAOiF,aAAauuB,EAAQ4iJ,QAAQW,YAGtC,IAAIG,GAAiB,EAErB,SAASC,EAAoBr7K,GACtBo7K,GAAmBp7K,EAAEytG,UAAY4qB,EAAAA,GAAAA,OAAkBr4H,EAAEytG,UAAY4qB,EAAAA,GAAAA,QACpE+iD,GAAiB,EACjBR,EAAW56K,IAIf,SAASs7K,EAAoBt7K,GAC3Bo7K,GAAiB,EACjBF,EAAWl7K,GAGb,SAASu7K,EAAiBv7K,IACD,IAAnBo7K,IACFA,GAAiB,EACjBF,EAAWl7K,IAIf,SAASw7K,EAAch2K,EAAiB+nG,EAAyBkuE,GAC/D,MAAM/zH,EAAUizH,EAAgBptE,EAAQr5G,OACnCwzD,GACH6yH,EAAQ72I,KAAKl+B,GAEfA,EAAG80K,QAAU90K,EAAG80K,SAAW,GAC3B90K,EAAG80K,QAAQ5yH,QAAUA,EACrB,MAAMxzD,EAAQq5G,EAAQr5G,OAAS,GAC3BA,EAAMs/C,SACRhuC,EAAG80K,QAAQ1L,UAAW,GAEpB16K,EAAM65H,QACRvoH,EAAG80K,QAAQvsD,MAAQxgB,EAAQr5G,MAAM65H,OAE/B75H,EAAMsqI,SACRh5H,EAAG80K,QAAQ97C,OAAStqI,EAAMsqI,QAExB92E,IAAY+zH,GACdj2K,EAAGnP,iBAAiB,aAAcukL,EAAY,CAAEpgJ,SAAS,IACzDh1B,EAAGnP,iBAAiB,WAAY6kL,EAAY,CAAE1gJ,SAAS,IACvDh1B,EAAGnP,iBAAiB,YAAa8kL,EAAkB,CAAE3gJ,SAAS,IAC9Dh1B,EAAGnP,iBAAiB,cAAe6kL,GAEnC11K,EAAGnP,iBAAiB,YAAaukL,GACjCp1K,EAAGnP,iBAAiB,UAAW6kL,GAC/B11K,EAAGnP,iBAAiB,aAAc6kL,GAElC11K,EAAGnP,iBAAiB,UAAWglL,GAC/B71K,EAAGnP,iBAAiB,QAASilL,GAE7B91K,EAAGnP,iBAAiB,OAAQklL,GAG5B/1K,EAAGnP,iBAAiB,YAAa6kL,EAAY,CAAE1gJ,SAAS,MAC9CktB,GAAW+zH,GACrBC,EAAgBl2K,GAIpB,SAASk2K,EAAiBl2K,GACxBA,EAAG7S,oBAAoB,YAAaioL,GACpCp1K,EAAG7S,oBAAoB,aAAcioL,GACrCp1K,EAAG7S,oBAAoB,WAAYuoL,GACnC11K,EAAG7S,oBAAoB,YAAawoL,GACpC31K,EAAG7S,oBAAoB,cAAeuoL,GACtC11K,EAAG7S,oBAAoB,UAAWuoL,GAClC11K,EAAG7S,oBAAoB,aAAcuoL,GACrC11K,EAAG7S,oBAAoB,UAAW0oL,GAClC71K,EAAG7S,oBAAoB,QAAS2oL,GAChC91K,EAAG7S,oBAAoB,YAAauoL,GACpC11K,EAAG7S,oBAAoB,OAAQ4oL,GAGjC,SAASrC,EAAW1zK,EAAiB+nG,EAAyBzpF,GAC5D03J,EAAah2K,EAAI+nG,GAAS,GAc5B,SAAS8iB,EAAQ7qH,UACRA,EAAG80K,QACVoB,EAAgBl2K,GAGlB,SAASo9B,EAAQp9B,EAAiB+nG,GAChC,GAAIA,EAAQr5G,QAAUq5G,EAAQvJ,SAC5B,OAGF,MAAMy3E,EAAad,EAAgBptE,EAAQvJ,UAC3Cw3E,EAAah2K,EAAI+nG,EAASkuE,GAGrB,MAAM3e,EAAS,CACpB9lK,KAAMkiL,EACN7oD,OAAAA,EACAztF,OAAAA,GAGF,S,gDCvUA,MAAM+4I,EAAiBlyF,IACrB,MAAM,YAAE66E,EAAF,UAAeD,EAAf,YAA0BuI,EAA1B,UAAuCgP,GAAcnyF,EACrDoyF,EAAW,GACXl+H,EAAc,GACpB8rC,EAAQrxD,QAAUisI,EAAYC,EAC9B76E,EAAQpxD,QAAUujJ,EAAYhP,EAE1B7tK,KAAK4P,IAAI86E,EAAQpxD,SAAWwjJ,EAAW98K,KAAK4P,IAAI86E,EAAQrxD,WAC1DqxD,EAAQ//E,MAAS26J,EAAYC,EAAc3mH,GAAgB8rC,EAAQ//E,KAAK+/E,GACxEA,EAAQ9/E,OAAU06J,EAAYC,EAAc3mH,GAAgB8rC,EAAQ9/E,MAAM8/E,IAGxE1qF,KAAK4P,IAAI86E,EAAQrxD,SAAWyjJ,EAAW98K,KAAK4P,IAAI86E,EAAQpxD,WAC1DoxD,EAAQqyF,IAAOF,EAAYhP,EAAcjvH,GAAgB8rC,EAAQqyF,GAAGryF,GACpEA,EAAQsyF,MAASH,EAAYhP,EAAcjvH,GAAgB8rC,EAAQsyF,KAAKtyF,KAI5E,SAAS/mC,EAAYphB,EAAmBmoD,GACtC,MAAMkkF,EAAQrsI,EAAM2+F,eAAe,GACnCx2C,EAAQ66E,YAAcqJ,EAAMn1I,QAC5BixD,EAAQmjF,YAAce,EAAMl1I,QAE5BgxD,EAAQlgF,OACNkgF,EAAQlgF,MAAMjN,OAAOQ,OAAOwkC,EAAOmoD,IAGvC,SAAS7mC,EAAUthB,EAAmBmoD,GACpC,MAAMkkF,EAAQrsI,EAAM2+F,eAAe,GACnCx2C,EAAQ46E,UAAYsJ,EAAMn1I,QAC1BixD,EAAQmyF,UAAYjO,EAAMl1I,QAE1BgxD,EAAQjgF,KACNigF,EAAQjgF,IAAIlN,OAAOQ,OAAOwkC,EAAOmoD,IAEnCkyF,EAAclyF,GAGhB,SAAS9mC,EAAWrhB,EAAmBmoD,GACrC,MAAMkkF,EAAQrsI,EAAM2+F,eAAe,GACnCx2C,EAAQgjF,WAAakB,EAAMn1I,QAC3BixD,EAAQkjF,WAAagB,EAAMl1I,QAE3BgxD,EAAQ16C,MAAQ06C,EAAQ16C,KAAKzyC,OAAOQ,OAAOwkC,EAAOmoD,IAGpD,SAASuyF,EAAgB9nL,GACvB,MAAMu1F,EAAU,CACd66E,YAAa,EACbsI,YAAa,EACbvI,UAAW,EACXuX,UAAW,EACXnP,WAAY,EACZE,WAAY,EACZv0I,QAAS,EACTC,QAAS,EACT3uB,KAAMxV,EAAMwV,KACZC,MAAOzV,EAAMyV,MACbmyK,GAAI5nL,EAAM4nL,GACVC,KAAM7nL,EAAM6nL,KACZxyK,MAAOrV,EAAMqV,MACbwlC,KAAM76C,EAAM66C,KACZvlC,IAAKtV,EAAMsV,KAGb,MAAO,CACLk5C,WAAa1iD,GAAkB0iD,EAAW1iD,EAAGypF,GAC7C7mC,SAAW5iD,GAAkB4iD,EAAS5iD,EAAGypF,GACzC9mC,UAAY3iD,GAAkB2iD,EAAU3iD,EAAGypF,IAI/C,SAASumC,EAAUxqH,EAAiB+nG,EAA8B0iB,GAChE,MAAM/7H,EAAQq5G,EAAQr5G,MAChB+J,EAAS/J,EAAMjE,OAASuV,EAAGqsI,cAAgBrsI,EAC3C/V,EAAUyE,EAAMzE,SAAW,CAAE+qC,SAAS,GAG5C,IAAKv8B,EAAQ,OAEb,MAAMlB,EAAWi/K,EAAezuE,EAAQr5G,OACxC+J,EAAOg+K,eAAiB3/K,OAAO2B,EAAOg+K,gBACtCh+K,EAAOg+K,eAAgBhsD,EAAMpgI,QAASugI,MAAQrzH,GAE9C4B,EAAAA,EAAAA,IAAK5B,GAAUjH,SAAQkoG,IACrB//F,EAAO5H,iBAAiB2nG,EAAWjhG,EAASihG,GAA6BvuG,MAI7E,SAAS4gI,EAAQ7qH,EAAiB+nG,EAA8B0iB,GAC9D,MAAMhyH,EAASsvG,EAAQr5G,MAAOjE,OAASuV,EAAGqsI,cAAgBrsI,EAC1D,IAAKvH,IAAWA,EAAOg+K,eAAgB,OAEvC,MAAMl/K,EAAWkB,EAAOg+K,eAAehsD,EAAMpgI,QAASugI,OACtDzxH,EAAAA,EAAAA,IAAK5B,GAAUjH,SAAQkoG,IACrB//F,EAAOtL,oBAAoBqrG,EAAWjhG,EAASihG,cAE1C//F,EAAOg+K,eAAehsD,EAAMpgI,QAASugI,MAGvC,MAAM4xC,EAAQ,CACnBhyC,SAAAA,EACAK,OAAAA,GAGF,U,0FCnHM,SAAU6rD,EAAS3rD,EAAqBlvH,EAA0B,IACtE,GAAK66K,EAAgBC,UAAW,OAC/BD,EAAgBC,WAAY,EAEzBC,EAAAA,IAAW7rD,IACbijC,EAAAA,EAAAA,IAAa,4JAMf,MAAM6oB,EAAah7K,EAAKg7K,YAAc,GAChCzsD,EAAavuH,EAAKuuH,YAAc,GAEtC,IAAK,MAAMj2H,KAAQi2H,EAAY,CAC7B,MAAMspD,EAAYtpD,EAAWj2H,GAE7B42H,EAAI2oD,UAAUv/K,EAAMu/K,IAGtB,SAAUoD,EAAoBD,GAC5B,GAAIA,EAAY,CACd,IAAK,MAAMrmL,KAAOqmL,EAAY,CAC5B,MAAM9lH,EAAY8lH,EAAWrmL,GACzBugE,IAAc+lH,EAAmB/lH,EAAUgmH,0BAC7ChsD,EAAIh6D,UAAUvgE,EAAKugE,GAGvB,OAAO,EAET,OAAO,GAVT,CAWG8lH,GAKC9rD,EAAIisD,sBACRjsD,EAAIisD,qBAAsB,EAE1BjsD,EAAIksD,MAAM,CACR3rL,eACE,MAAMrB,EAAUK,KAAKU,SAEjBf,EAAQitL,SACVjtL,EAAQitL,QAAQtwH,KAAKt8D,KAAMA,KAAK6sL,aAChC7sL,KAAKy+H,SAAWgC,EAAIqsD,WAAWntL,EAAQitL,QAAQG,YAE/C/sL,KAAKy+H,SAAY9+H,EAAQQ,QAAUR,EAAQQ,OAAOs+H,UAAaz+H,MAGnE8+J,cAEM9+J,KAAKU,SAASksL,SAAW5sL,KAAK+uI,KAAO/uI,KAAK+uI,IAAIzrB,aAAa,0BAE7DtjH,KAAKy+H,SAASuuD,aAAc,EAE5BhtL,KAAKy+H,SAASmmC,WAAW9xH,QAAO,KAGpCsuF,UAEMphI,KAAKU,SAASksL,SAAW5sL,KAAKy+H,SAASuuD,cAEzChtL,KAAKy+H,SAASuuD,aAAc,EAE5BhtL,KAAKy+H,SAASmmC,WAAW9xH,cCrEjC,OACE64F,MAAO,QACP/nB,MAAO,QACPqpE,aAAc,CACZ36B,cAAe,4BACfE,YAAa,oBAEf06B,UAAW,CACTj9B,iBAAkB,iBAClB4G,UAAW,CACTs2B,eAAgB,qBAChBC,cAAe,oBACfC,SAAU,cACVC,aAAc,8BACdC,mBAAoB,+BACpBC,kBAAmB,+BAErBx4B,OAAQ,WAEVy4B,WAAY,CACVx9B,iBAAkB,kBAClBy9B,gBAAiB,MACjBC,SAAU,YACVC,SAAU,gBACVC,UAAW,aACXC,SAAU,YACVv9B,SAAU,kBAEZw9B,WAAY,CACVC,cAAe,eACfC,mBAAoB,aACpBC,kBAAmB,YACnBC,mBAAoB,iBACpBC,kBAAmB,iBAErB77B,WAAY,oBACZ87B,SAAU,CACRpnJ,KAAM,kBACNpC,KAAM,cACNgyH,UAAW,CACT9T,UAAW,8BAGfhG,SAAU,CACRuxC,WAAY,YAEdjlE,UAAW,CACT46C,QAAS,YACTsqB,YAAa,4BAEfC,WAAY,CACVC,GAAI,KACJC,GAAI,MAEN/+B,WAAY,CACVkH,UAAW,CACTl9D,QAAS,wBACT90D,KAAM,YACN5J,SAAU,gBACVy1H,KAAM,gBACNi+B,YAAa,2BAGjBC,OAAQ,CACN/3B,UAAW,CACTl5B,KAAM,uBCpDL,MAAMkxD,EAAwB,CACnCjqB,WAAY,CAEVxS,iBAAkB,KAClB08B,eAAgB,GAChBC,WAAY,CACVC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,OAGRpmE,MAAO,CAELqmE,SAAU,MACVh7J,OAAQ,IAEVsqG,KAAM,CACJ95F,QAAS,KACTyqJ,QAAS,CAAEC,GAAAA,GAEXluK,OAAGtb,GAELgU,KAAK,EACLotF,MAAO,CACLq9B,MAAM,EACNxoC,QAAS,QACTsM,SAAS,EACT1oG,QAAS,CACP4vL,cAAUzpL,EACV0pL,sBAAkB1pL,EAClB2pL,iBAAa3pL,EACb4pL,gBAAY5pL,EACZ6pL,YAAY,GAEdrqE,OAAQ,CACNkf,MAAO,CACLorD,QAAS,UACTC,UAAW,UACXC,OAAQ,UACRpkL,MAAO,UACP2yB,KAAM,UACN0xJ,QAAS,UACTC,QAAS,WAEXzrD,KAAM,CACJqrD,QAAS,UACTC,UAAW,UACXC,OAAQ,UACRpkL,MAAO,UACP2yB,KAAM,UACN0xJ,QAAS,UACTC,QAAS,c,wBClDX,MAAOC,UAAgBC,EAAAA,EAG3Bl5K,YACEm5K,EACAhwL,GAEA6iD,QAGA,MAAMotI,GAAgBC,EAAAA,EAAAA,IAAU,GAAIC,IAE9B,WAAEC,GAAepwL,GAGrB0uL,OAAQ2B,EAAe,MACpB3B,GACD0B,EAEuB,MAAvBC,EAAa3B,SACfxtD,EAAAA,EAAAA,IAAY,iFAGdlhI,EAAO0uL,QAASwB,EAAAA,EAAAA,KACdA,EAAAA,EAAAA,IAAUD,EAAeI,GACzB3B,IAxBGoB,EAAAA,SAAsB,UCVzB,MAAOQ,UAAoBP,EAAAA,EAAjCl5K,c,oBAGE,KAAAsgE,IAAM,EAEN,KAAA38C,IAAM,EAEN,KAAA/gB,KAAO,EAEP,KAAA20J,YAAc,EAEd,KAAA10J,MAAQ,EAER,KAAA+gB,OAAS,EAET,KAAA8iD,OAAS,EAET,KAAA6lD,YAA4C,CAC1CjsD,IAAK,GACL38C,IAAK,GACL/gB,KAAM,GACN20J,YAAa,GACb10J,MAAO,GACP+gB,OAAQ,GACR8iD,OAAQ,IAGVnZ,SACEtqD,EACA5F,EACAwI,GAEA7c,KAAKujI,YAAYlvH,GAAU4F,GAAO4C,EAElC7c,KAAK8yC,OAAOz+B,GAGdswD,WAAY1qD,EAAa5F,GACgB,MAAnCrU,KAAKujI,YAAYlvH,GAAU4F,YAExBja,KAAKujI,YAAYlvH,GAAU4F,GAClCja,KAAK8yC,OAAOz+B,IAGdy+B,OAAQz+B,GACNrU,KAAKqU,GAAY7H,OAAO4nB,OAAOp0B,KAAKujI,YAAYlvH,IAC7Cq9B,QAAO,CAACC,EAAavD,IAAyBuD,EAAMvD,GAAM,IA7CxDqiJ,EAAAA,SAA0B,cCA7B,MAAOC,UAAmBR,EAAAA,EAuD9Bl5K,YAAa63K,GACX7rI,QApDK,KAAAgsI,IAAK,EAEL,KAAAC,IAAK,EAEL,KAAAC,IAAK,EAEL,KAAAC,IAAK,EAEL,KAAAwB,IAAK,EAEL,KAAAC,QAAS,EAET,KAAAC,QAAS,EAET,KAAAhO,WAAY,EAEZ,KAAAiO,SAAU,EAEV,KAAAC,QAAS,EAET,KAAAC,WAAY,EAEZ,KAAAC,SAAU,EAEV,KAAAC,QAAS,EAET,KAAAC,WAAY,EAEZ,KAAAC,SAAU,EAEV,KAAAC,QAAS,EAGT,KAAAxnL,KAA4B,KAE5B,KAAAqvB,OAAS,EAET,KAAAlB,MAAQ,EAIR,KAAAm/H,QAAS,EAQR,KAAA6X,cAAgB,EAKtB,MAAM,iBACJ5c,EADI,eAEJ08B,EAFI,WAGJC,GACEF,EAAO6B,EAAWxxK,UAEtBlf,KAAKoyJ,iBAAmBA,EACxBpyJ,KAAK8uL,eAAiBA,EACtB9uL,KAAK+uL,WAAaA,EAGbzyH,OACLt8D,KAAK8yC,SAGiB,qBAAX1+B,QAEXA,OAAO7N,iBACL,SACAvG,KAAKgtE,SAAS9lE,KAAKlH,MACnB,CAAE0qC,SAAS,IAKRoI,OAAQw+I,GAAM,GACnB,MAAMp4J,EAASo4J,EAAM,EAAItxL,KAAKuxL,kBACxBv5J,EAAQs5J,EAAM,EAAItxL,KAAKwxL,iBAEvBxC,EAAKh3J,EAAQh4B,KAAK+uL,WAAWC,GAC7BC,EAAKj3J,EAAQh4B,KAAK+uL,WAAWE,KAAOD,EACpCE,EAAKl3J,EAASh4B,KAAK+uL,WAAWG,GAAKlvL,KAAK8uL,kBAAqBG,GAAMD,GACnEG,EAAKn3J,EAASh4B,KAAK+uL,WAAWI,GAAKnvL,KAAK8uL,kBAAqBI,GAAMD,GAAMD,GACzE2B,EAAK34J,GAAUh4B,KAAK+uL,WAAWI,GAAKnvL,KAAK8uL,eAuB/C,OArBA9uL,KAAKk5B,OAASA,EACdl5B,KAAKg4B,MAAQA,EAEbh4B,KAAKgvL,GAAKA,EACVhvL,KAAKivL,GAAKA,EACVjvL,KAAKkvL,GAAKA,EACVlvL,KAAKmvL,GAAKA,EACVnvL,KAAK2wL,GAAKA,EAEV3wL,KAAK4wL,OAAS5B,EACdhvL,KAAK6wL,OAAS5B,EACdjvL,KAAK6iL,WAAamM,GAAMC,MAASC,GAAMC,GAAMwB,GAC7C3wL,KAAK8wL,SAAW9B,IAAOC,GAAMC,GAAMC,GAAMwB,GACzC3wL,KAAK+wL,OAAS7B,EACdlvL,KAAKgxL,WAAahC,GAAMC,GAAMC,MAASC,GAAMwB,GAC7C3wL,KAAKixL,UAAYjC,GAAMC,KAAQC,GAAMC,GAAMwB,GAC3C3wL,KAAKkxL,OAAS/B,EACdnvL,KAAKmxL,WAAanC,GAAMC,GAAMC,GAAMC,KAAQwB,EAC5C3wL,KAAKoxL,UAAYpC,GAAMC,GAAMC,KAAQC,GAAMwB,GAC3C3wL,KAAKqxL,OAASV,GAEN,GACN,KAAM3B,EACJhvL,KAAK6J,KAAO,KACZ,MACF,KAAMolL,EACJjvL,KAAK6J,KAAO,KACZ,MACF,KAAMqlL,EACJlvL,KAAK6J,KAAO,KACZ,MACF,KAAMslL,EACJnvL,KAAK6J,KAAO,KACZ,MACF,QACE7J,KAAK6J,KAAO,KACZ,MAGJ,GAAqC,kBAA1B7J,KAAKoyJ,iBAGd,YAFApyJ,KAAKm3J,OAASn/H,EAAQ3G,SAASrxB,KAAKoyJ,iBAAkB,KAKxD,MAAMiS,EAAc,CAClB2qB,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJwB,GAAI,GAGA/rJ,EAAUy/H,EAAYrkK,KAAK6J,MAC3BuV,EAAMilJ,EAAYrkK,KAAKoyJ,kBAE7BpyJ,KAAKm3J,OAASvyH,GAAWxlB,EAGnB4tD,WACN3zD,aAAarZ,KAAKgvK,eAMlBhvK,KAAKgvK,cAAgB56J,OAAOpP,WAAWhF,KAAK8yC,OAAO5rC,KAAKlH,MAAO,KAKzDwxL,iBAEN,MAAwB,qBAAb5+K,SAAiC,EACrC3D,KAAKmQ,IACVxM,SAASysJ,gBAAiB71H,YAC1Bp1B,OAAOq9K,YAAc,GAIjBF,kBAEN,MAAwB,qBAAb3+K,SAAiC,EACrC3D,KAAKmQ,IACVxM,SAASysJ,gBAAiB51H,aAC1Br1B,OAAOs9K,aAAe,IAjLZhB,EAAAA,SAAyB,aCNzC,MAAM3nE,EAAsB,CAC1B13E,SAAU,0DACV3qC,OAAQ,2MACRk9G,MAAO,gHACP1gF,OAAQ,2MACRwmC,MAAO,gHACPqmH,QAAS,4JACT1xJ,KAAM,2HACN2xJ,QAAS,kDACTtkL,MAAO,oDACPu7B,KAAM,gEACNpC,KAAM,8DACN8sJ,WAAY,iJACZC,YAAa,iHACbC,sBAAuB,gHACvB9uC,UAAW,+FACXxkI,KAAM,yEACN01I,OAAQ,6DACRlsB,KAAM,iDACN+pD,SAAU,uBACVC,SAAU,uBACVC,QAAS,sRACTC,SAAU,2LACV7oE,KAAM,sJACN8oE,YAAa,kNACbC,WAAY,uGACZC,WAAY,iKACZxkD,QAAS,uPACT71E,MAAO,8EACP5pB,KAAM,2EACNkkJ,OAAQ,oHACR9uB,KAAM,8WACN+uB,KAAM,4CACNC,MAAO,sBAGT,QCpCA,MAAMxpE,EAAsB,CAC1B13E,SAAU,QACV3qC,OAAQ,SACRk9G,MAAO,QACP1gF,OAAQ,SACRwmC,MAAO,QACPqmH,QAAS,eACT1xJ,KAAM,OACN2xJ,QAAS,gBACTtkL,MAAO,UACPu7B,KAAM,eACNpC,KAAM,gBACN8sJ,WAAY,YACZC,YAAa,0BACbC,sBAAuB,0BACvB9uC,UAAW,sBACXxkI,KAAM,eACN01I,OAAQ,sBACRlsB,KAAM,OACN+pD,SAAU,kBACVC,SAAU,kBACVC,QAAS,uBACTC,SAAU,yBACV7oE,KAAM,OACN8oE,YAAa,cACbC,WAAY,OACZC,WAAY,YACZxkD,QAAS,SACT71E,MAAO,aACP5pB,KAAM,YACNkkJ,OAAQ,cACR9uB,KAAM,cACN+uB,KAAM,MACNC,MAAO,UAGT,QCpCA,MAAMxpE,EAAsB,CAC1B13E,SAAU,YACV3qC,OAAQ,mBACRk9G,MAAO,YACP1gF,OAAQ,mBACRwmC,MAAO,YACPqmH,QAAS,mBACT1xJ,KAAM,kBACN2xJ,QAAS,kBACTtkL,MAAO,YACPu7B,KAAM,mBACNpC,KAAM,oBACN8sJ,WAAY,sBACZC,YAAa,6BACbC,sBAAuB,gBACvB9uC,UAAW,aACXxkI,KAAM,eACN01I,OAAQ,mBACRlsB,KAAM,WACN+pD,SAAU,gBACVC,SAAU,gBACVC,QAAS,sBACTC,SAAU,qBACV7oE,KAAM,aACN8oE,YAAa,mBACbC,WAAY,WACZC,WAAY,qBACZxkD,QAAS,aACT71E,MAAO,iBACP5pB,KAAM,gBACNkkJ,OAAQ,6BACR9uB,KAAM,gBACN+uB,KAAM,WACNC,MAAO,aAGT,QCpCA,MAAMxpE,EAAsB,CAC1B13E,SAAU,eACV3qC,OAAQ,sBACRk9G,MAAO,eACP1gF,OAAQ,sBACRwmC,MAAO,sBACPqmH,QAAS,sBACT1xJ,KAAM,qBACN2xJ,QAAS,qBACTtkL,MAAO,8BACPu7B,KAAM,sBACNpC,KAAM,uBACN8sJ,WAAY,sBACZC,YAAa,gBACbC,sBAAuB,sBACvB9uC,UAAW,gBACXxkI,KAAM,iBACN01I,OAAQ,sBACRlsB,KAAM,cACN+pD,SAAU,oBACVC,SAAU,oBACVC,QAAS,oBACTC,SAAU,gBACV7oE,KAAM,cACN8oE,YAAa,cACbC,WAAY,cACZC,WAAY,mBACZxkD,QAAS,cACT71E,MAAO,uBACP5pB,KAAM,sBACNkkJ,OAAQ,sBACR9uB,KAAM,mBACN+uB,KAAM,cACNC,MAAO,gBAGT,QCpCA,MAAMxpE,EAAsB,CAC1B13E,SAAU,cACV3qC,OAAQ,qBACRk9G,MAAO,cACP1gF,OAAQ,qBACRwmC,MAAO,qBACPqmH,QAAS,qBACT1xJ,KAAM,oBACN2xJ,QAAS,oBACTtkL,MAAO,6BACPu7B,KAAM,qBACNpC,KAAM,sBACN8sJ,WAAY,qBACZC,YAAa,iBACbC,sBAAuB,qBACvB9uC,UAAW,eACXxkI,KAAM,gBACN01I,OAAQ,qBACRlsB,KAAM,aACN+pD,SAAU,mBACVC,SAAU,mBACVC,QAAS,qBACTC,SAAU,iBACV7oE,KAAM,eACN8oE,YAAa,eACbC,WAAY,aACZC,WAAY,oBACZxkD,QAAS,gBACT71E,MAAO,sBACP5pB,KAAM,qBACNkkJ,OAAQ,0BACR9uB,KAAM,kBACN+uB,KAAM,aACNC,MAAO,eAGT,QClCM,SAAUC,EACd/rH,EACAgsH,GAEA,MAAMt8K,EAAgC,GAEtC,IAAK,MAAMjQ,KAAOusL,EAChBt8K,EAAOjQ,GAAO,CACZugE,UAAAA,EACAzuD,MAAO,CACL2lH,KAAO80D,EAAQvsL,GAAgBwO,MAAM,UAK3C,OAAOyB,EAGT,MAAeq8K,EAA+B,oBAAqBzpE,GCfnE,EAAev8G,OAAOoxC,OAAO,CAC3B80I,OAD2B,EAE3BxD,GAF2B,EAG3ByD,IAH2B,EAI3BztJ,GAJ2B,EAK3B0tJ,IAL2B,EAM3BC,MAAAA,ICAI,MAAOC,UAAc5C,EAAAA,EASzBl5K,YAAa63K,GACX7rI,QAEA,MAAM,SACJosI,EADI,OAEJh7J,EAFI,UAGJqyC,GACEooH,EAAOiE,EAAM5zK,UAEjBlf,KAAKymE,UAAYA,EACjBzmE,KAAKovL,SAAWA,EAChBpvL,KAAKo0B,QAASi8J,EAAAA,EAAAA,IACZ0C,EAAQ3D,GACRh7J,IArBG0+J,EAAAA,SAAoB,QCA7B,MAAME,EAAc,YACd70J,EAAWuC,OAAO,iBAExB,SAASuyJ,EACP7nJ,EACAllC,EACAgtL,GAAe,EACfC,GAEA,MAAMvyE,EAAW16G,EAAIwL,QAAQshL,EAAa,IAC1C,IAAI12J,GAAc6sG,EAAAA,EAAAA,IAAqB/9F,EAAQw1E,EAAUziF,GAYzD,OAVI7B,IAAgB6B,IACd+0J,IACFxvB,EAAAA,EAAAA,IAAa,oBAAoB9iD,4BACjCtkF,EAAcp2B,KAEdm7H,EAAAA,EAAAA,IAAY,oBAAoBzgB,yCAChCtkF,EAAc22J,EAAeE,EAAejtL,GAAK,EAAMitL,KAIpD72J,EAGH,MAAO82J,UAAalD,EAAAA,EAWxBl5K,YAAa63K,GACX7rI,QAPK,KAAAmwI,cAAgB,KASrB,MAAM,QACJvuJ,EADI,QAEJyqJ,EAFI,EAGJjuK,GACEytK,EAAOuE,EAAKl0K,UAEhBlf,KAAK4kC,QAAUA,EACf5kC,KAAKqvL,QAAUA,EACfrvL,KAAKqzL,WAAajyK,GAAKphB,KAAKszL,kBAGvBlkD,cAAelpI,GACpB,MAAMo2B,EAAct8B,KAAKqvL,QAAQrvL,KAAK4kC,SAChCuuJ,EAAgBnzL,KAAKqvL,QAAQrvL,KAAKmzL,eAExC,OAAOF,EAAe32J,EAAap2B,GAAK,EAAOitL,GAG1C/xK,EAAGlb,KAAgBzB,GACxB,OAAKyB,EAAIoxB,WAAW07J,GAEbhzL,KAAKqzL,WAAWntL,KAAQzB,GAFUzE,KAAK0R,QAAQxL,EAAKzB,GAKrD6uL,kBAAmBptL,KAAgBzB,GACzC,OAAOzE,KAAK0R,QAAQ1R,KAAKovI,cAAclpI,GAAMzB,GAGvCiN,QAASoF,EAAarS,GAC5B,OAAOqS,EAAIpF,QAAQ,cAAc,CAACmB,EAAerJ,IAExCgP,OAAO/T,GAAQ+E,OA5CnB4pL,EAAAA,SAAmB,O,cCpC5B,MAAMG,EAAoB,CACxB,CAAC,QAAS,QAAS,OACnB,EAAE,MAAQ,OAAQ,OAClB,CAAC,OAAS,KAAQ,QAIdC,EAAwBrvK,GAC5BA,GAAK,SACG,MAAJA,EACA,MAAQA,IAAM,EAAI,KAAO,KAIzBsvK,EAAoB,CACxB,CAAC,MAAQ,MAAQ,OACjB,CAAC,MAAQ,MAAQ,OACjB,CAAC,MAAQ,MAAQ,QAIbC,EAAwBvvK,GAC5BA,GAAK,OACDA,EAAI,QACFA,EAAI,MAAS,QAAU,IAGzB,SAAUwvK,EAASC,GACvB,MAAMpuK,EAAMpa,MAAM,GACZ81F,EAAYsyF,EACZK,EAASN,EAGf,IAAK,IAAIzqL,EAAI,EAAGA,EAAI,IAAKA,EACvB0c,EAAI1c,GAAKmG,KAAK8O,MAIT,KAJegpI,EAAAA,EAAAA,IAAM7lD,EACxB2yF,EAAO/qL,GAAG,GAAK8qL,EAAI,GACnBC,EAAO/qL,GAAG,GAAK8qL,EAAI,GACnBC,EAAO/qL,GAAG,GAAK8qL,EAAI,MAKvB,OAAQpuK,EAAI,IAAM,KAAOA,EAAI,IAAM,IAAMA,EAAI,IAAM,GAG/C,SAAUsuK,EAAOtuK,GACrB,MAAMouK,EAAW,CAAC,EAAG,EAAG,GAClB1yF,EAAYwyF,EACZG,EAASJ,EAGT5uK,EAAIq8E,GAAW17E,GAAO,GAAK,KAAQ,KACnCV,EAAIo8E,GAAW17E,GAAO,EAAI,KAAQ,KAClC7N,EAAIupF,GAAW17E,GAAO,EAAI,KAAQ,KAGxC,IAAK,IAAI1c,EAAI,EAAGA,EAAI,IAAKA,EACvB8qL,EAAI9qL,GAAK+qL,EAAO/qL,GAAG,GAAK+b,EAAIgvK,EAAO/qL,GAAG,GAAKgc,EAAI+uK,EAAO/qL,GAAG,GAAK6O,EAGhE,OAAOi8K,EC9DT,MAAM5tJ,EAAQ,mBAER+tJ,EAA0B3yK,GAC9BA,EAAI4kB,GAAS,EACT/2B,KAAK+kL,KAAK5yK,GACTA,GAAK,EAAI4kB,GAAS,GAAM,EAAI,GAG7BiuJ,EAA0B7yK,GAC9BA,EAAI4kB,EACA5kB,GAAK,EACJ,EAAI4kB,GAAS,GAAM5kB,EAAI,EAAI,IAG5B,SAAUuyK,EAASC,GACvB,MAAM1yF,EAAY6yF,EACZG,EAAehzF,EAAU0yF,EAAI,IAEnC,MAAO,CACL,IAAMM,EAAe,GACrB,KAAOhzF,EAAU0yF,EAAI,GAAK,QAAWM,GACrC,KAAOA,EAAehzF,EAAU0yF,EAAI,GAAK,WAIvC,SAAUE,EAAOK,GACrB,MAAMjzF,EAAY+yF,EACZG,GAAMD,EAAI,GAAK,IAAM,IAC3B,MAAO,CAC0B,OAA/BjzF,EAAUkzF,EAAKD,EAAI,GAAK,KACxBjzF,EAAUkzF,GACqB,QAA/BlzF,EAAUkzF,EAAKD,EAAI,GAAK,MCxBtB,SAAUnkL,EACdk3F,EACAmtF,GAAS,EACT1E,GAAa,GAEb,MAAM,OAAEltE,KAAW6xE,GAAYptF,EACzB7zD,EAAS7mC,OAAOqC,KAAKylL,GACrBC,EAAmB,GAEzB,IAAK,IAAIzrL,EAAI,EAAGA,EAAIuqC,EAAOrqC,SAAUF,EAAG,CACtC,MAAMe,EAAOwpC,EAAOvqC,GACd1E,EAAQ8iG,EAAMr9F,GAEP,MAATzF,IAECurL,EAEM0E,GAEI,SAATxqL,GAAmBA,EAAKytB,WAAW,YAAcztB,EAAKytB,WAAW,aACnEi9J,EAAY1qL,IAAQ2qL,EAAAA,EAAAA,IAAWpwL,IAGjCmwL,EAAY1qL,GADc,kBAAVzF,EACI4L,EAAM5L,GAAO,EAAMurL,GAEnB8E,EAAc5qL,GAAM6qL,EAAAA,EAAAA,IAAWtwL,IATnDmwL,EAAY1qL,GAAQ,CAAEg2B,MAAM80J,EAAAA,EAAAA,KAASD,EAAAA,EAAAA,IAAWtwL,MAiBpD,OAJKiwL,IACHE,EAAY9xE,OAASA,GAAU8xE,EAAY10J,MAAQ00J,EAAY3E,QAAQ/vJ,MAGlE00J,EAMT,MAAMK,EAAe,CAAC/qL,EAAczF,IAC3B,qBACSyF,4BACIzF,kCACJA,qCAEAyF,uBACPzF,iCACMA,mBAOXywL,EAAkB,CAAChrL,EAAcyqL,EAAiBlwL,KACtD,MAAOuC,EAAM6X,GAAK81K,EAAQ5/K,MAAM,OAAQ,GACxC,MAAO,qBACS7K,KAAQlD,KAAQ6X,4BACZpa,kCACJA,qCAEAyF,iBAAoBlD,KAAQ6X,iBACnCpa,iCACMA,oBAIX0wL,EAAuB,CAACjrL,EAAcyqL,EAAU,SAAmB,OAAOzqL,KAAQyqL,IAElFS,EAAmB,CAAClrL,EAAcyqL,EAAU,SAAmB,OAAOQ,EAAqBjrL,EAAMyqL,MAEjG,SAAUU,EAAW9tF,EAA2B+tF,GAAS,GAC7D,MAAM,OAAExyE,KAAW6xE,GAAYptF,EACzB7zD,EAAS7mC,OAAOqC,KAAKylL,GAE3B,IAAKjhJ,EAAOrqC,OAAQ,MAAO,GAE3B,IAAIksL,EAAe,GACfC,EAAM,GAEV,MAAMC,EAASH,EAASF,EAAiB,UAAYtyE,EACrD0yE,GAAO,6BAA6BC,OACpCH,IAAWC,GAAgB,KAAKJ,EAAqB,cAAcryE,QAEnE,IAAK,IAAI35G,EAAI,EAAGA,EAAIuqC,EAAOrqC,SAAUF,EAAG,CACtC,MAAMe,EAAOwpC,EAAOvqC,GACd1E,EAAQ8iG,EAAMr9F,GAEpBsrL,GAAOP,EAAa/qL,EAAMorL,EAASF,EAAiBlrL,GAAQzF,EAAMy7B,MAClEo1J,IAAWC,GAAgB,KAAKJ,EAAqBjrL,OAAUzF,EAAMy7B,WAErE,MAAMw1J,GAAWxmL,EAAAA,EAAAA,IAAKzK,GACtB,IAAK,IAAI0E,EAAI,EAAGA,EAAIusL,EAASrsL,SAAUF,EAAG,CACxC,MAAMwrL,EAAUe,EAASvsL,GACnBwsL,EAAelxL,EAAMkwL,GACX,SAAZA,IAEJa,GAAON,EAAgBhrL,EAAMyqL,EAASW,EAASF,EAAiBlrL,EAAMyqL,GAAWgB,GACjFL,IAAWC,GAAgB,KAAKJ,EAAqBjrL,EAAMyqL,OAAagB,UAQ5E,OAJIL,IACFC,EAAe,YAAYA,UAGtBA,EAAeC,EAGlB,SAAUV,EAAe5qL,EAAczF,GAC3C,MAAMgwB,EAAiC,CACrCyL,MAAM80J,EAAAA,EAAAA,IAASvwL,IAGjB,IAAK,IAAI0E,EAAI,EAAGA,EAAI,IAAKA,EACvBsrB,EAAO,UAAUtrB,MAAO6rL,EAAAA,EAAAA,IAASphK,EAAQnvB,EAAO0E,IAGlD,IAAK,IAAIA,EAAI,EAAGA,GAAK,IAAKA,EACxBsrB,EAAO,SAAStrB,MAAO6rL,EAAAA,EAAAA,IAASnhK,EAAOpvB,EAAO0E,IAGhD,OAAOsrB,EAGH,SAAUb,EAASnvB,EAAiB0nD,GACxC,MAAMqoI,EAAMoB,EAAYC,EAAWpxL,IAEnC,OADA+vL,EAAI,GAAKA,EAAI,GAAc,GAATroI,EACX0pI,EAAaD,EAAUpB,IAG1B,SAAU3gK,EAAQpvB,EAAiB0nD,GACvC,MAAMqoI,EAAMoB,EAAYC,EAAWpxL,IAEnC,OADA+vL,EAAI,GAAKA,EAAI,GAAc,GAATroI,EACX0pI,EAAaD,EAAUpB,IC7H1B,MAAO9uE,UAAc6qE,EAAAA,EAmBzBl5K,YAAa63K,GACX7rI,QAjBK,KAAAhO,UAAW,EAUV,KAAAgqF,OAAS,KAET,KAAAy2D,QAAU,KAEV,KAAAC,QAAU,KAKhB,MAAM,KACJnxD,EADI,QAEJl8B,EAFI,QAGJ1oG,EAHI,OAIJ2lH,GACEupE,EAAOxpE,EAAMnmG,UAEjBlf,KAAKukI,KAAOhH,QAAQgH,GACpBvkI,KAAKqH,SAAWrH,KAAKslH,OAASA,EAC9BtlH,KAAKL,QAAUA,EAEX0oG,EACFroG,KAAKg1C,UAAW,EAKlBh1C,KAAKslH,OAAS,CACZif,KAAMvkI,KAAK21L,YAAYrwE,EAAOif,MAAM,GACpCC,MAAOxkI,KAAK21L,YAAYrwE,EAAOkf,OAAO,IAMtC2wD,QAAKlvL,GACHjG,KAAK01L,QACH11L,KAAK41L,aACP51L,KAAK61L,iBAIT71L,KAAK81L,8BAAgC91L,KAAK+1L,QAASvvF,UAAYvgG,GAG7Ds+H,SAAMt+H,GACR,MAAM+vL,EAAUh2L,KAAKg/H,OAErBh/H,KAAKg/H,OAAS/4H,EAGH,MAAX+vL,GAAmBh2L,KAAKi2L,aAGtB1xD,WACF,OAAOhH,QAAQv9H,KAAKg/H,QAKfi3D,aACL,GAAIj2L,KAAKg1C,SAAU,OAAOh1C,KAAKk2L,WAE/Bl2L,KAAKm1L,IAAMn1L,KAAKm2L,gBAGXD,WACLl2L,KAAKm1L,IAAM,GAMN74H,KAAMpoC,EAAWh0B,GAClBF,KAAKg1C,WAGJ9gB,EAAakiK,MAChBp2L,KAAKq2L,YAAYniK,GACRh0B,GACTF,KAAKs2L,QAAQp2L,GAGfF,KAAKu2L,UAAUriK,IAIVsiK,SAAUtvF,EAAyB9iG,GACxCpE,KAAKslH,OAAOpe,GAAS16F,OAAOQ,OAAOhN,KAAKslH,OAAOpe,GAAQ9iG,GACvDpE,KAAKi2L,aAIAQ,cACLz2L,KAAKslH,OAAOkf,MAAQh4H,OAAOQ,OAAO,GAAIhN,KAAKqH,SAASm9H,OACpDxkI,KAAKslH,OAAOif,KAAO/3H,OAAOQ,OAAO,GAAIhN,KAAKqH,SAASk9H,MACnDvkI,KAAKi2L,aAICH,4BAIN,OAHA91L,KAAK+1L,QAAUnjL,SAASs4D,eAAe,8BAGnClrE,KAAK+1L,UAET/1L,KAAK02L,kBAEEn5D,QAAQv9H,KAAK+1L,UAGdJ,YACNzuF,EAAsC,GACtCq9B,GAEA,MAAMoyD,EAAe32L,KAAKslH,OAAOif,EAAO,OAAS,SAEjD,OAAO/3H,OAAOQ,OAAO,GACnB2pL,EACAzvF,GAMIwvF,kBAEkB,qBAAb9jL,WAGX5S,KAAK+1L,QAAUnjL,SAASa,cAAc,SACtCzT,KAAK+1L,QAAQpvL,KAAO,WACpB3G,KAAK+1L,QAAQ3oL,GAAK,2BAEdpN,KAAKL,QAAQ4vL,UACfvvL,KAAK+1L,QAAQniL,aAAa,QAAS5T,KAAKL,QAAQ4vL,UAGlD38K,SAAS0wC,KAAKouD,YAAY1xG,KAAK+1L,UAGzBM,YAAaniK,GAEnB,GADAl0B,KAAK01L,QAAUxhK,EAAKkiK,QAChBp2L,KAAK41L,YAKP,YAHA1hK,EAAKstG,WAAU,KACbxhI,KAAK61L,oBAKT,MAAMe,EAAiD,oBAA5B52L,KAAK01L,QAAQp/C,WAA4Bt2I,KAAK01L,QAAQp/C,aAAa93C,QAAU,WAClGq4F,EAAW3iK,EAAKxzB,SAASk2L,IAAgB,GAE/C1iK,EAAKxzB,SAASk2L,GAAe,KAC3BC,EAAS1hK,MAAQ0hK,EAAS1hK,OAAS,GAEnC,MAAM2hK,EAAoBD,EAAS1hK,MAAMymE,MAAMj7E,GAAoB,6BAATA,EAAEvT,KAa5D,OAXK0pL,EAQHA,EAAkBC,QAAU/2L,KAAKm2L,gBAPjCU,EAAS1hK,MAAM5rB,KAAK,CAClBwtL,QAAS/2L,KAAKm2L,gBACdxvL,KAAM,WACNyG,GAAI,2BACJ4pL,OAAQh3L,KAAKL,SAAW,IAAI4vL,WAMzBsH,GAIHhB,iBACN,MAAM,IAAE5hK,GAAQj0B,KAAK01L,QAAQuB,OAAO,WAEpChjK,EAAI,CACFkB,MAAO,CAAC,CACN4hK,QAAS/2L,KAAKm2L,gBACdxvL,KAAM,WACNyG,GAAI,2BACJ4pL,MAAOh3L,KAAKL,QAAQ4vL,aAKlB+G,QAASp2L,GAEf,MAAM82L,EAAQh3L,KAAKL,QAAQ4vL,SAAW,WAAWvvL,KAAKL,QAAQ4vL,YAAc,GAC5ErvL,EAAWojD,KAAOpjD,EAAWojD,MAAQ,GACrCpjD,EAAWojD,MAAQ,uDAAuD0zI,KAASh3L,KAAKm2L,0BAGlFI,UAAWriK,GAEO,qBAAbthB,WAIP5S,KAAKy1L,UACPz1L,KAAKy1L,UACLz1L,KAAKy1L,QAAU,MAKjBvhK,EAAKgjK,MAAM,gBAAgB,KACzB,MAAMC,EAAM12D,EAAAA,EAAAA,WAAe,CAAEnb,OAAQtlH,KAAKslH,SAC1CtlH,KAAKy1L,QAAUvhK,EAAK2tJ,QAAO,IAAMsV,EAAI7xE,SAAQ,IAAMtlH,KAAKi2L,cAAc,CAAEl0F,MAAM,OAEhF/hG,KAAKi2L,cAGHmB,mBACF,MAAMjpL,EAASnO,KAAKukI,KAAO,OAAS,QAEpC,OAAOvkI,KAAKslH,OAAOn3G,GAGjBgoL,sBACF,MAAMjvF,EAAQlnG,KAAKu0L,YAEb50L,EAAUK,KAAKL,SAAW,GAChC,IAAIw1L,EAEJ,OAA0B,MAAtBx1L,EAAQ+vL,aACVyF,EAAMx1L,EAAQ+vL,WAAWh5J,IAAIwwE,GAElB,MAAPiuF,KAGNA,EAAMkC,EAAqBnwF,EAAOvnG,EAAQ6vL,kBAEf,MAAvB7vL,EAAQ8vL,cACV0F,EAAMx1L,EAAQ8vL,YAAY0F,IAGF,MAAtBx1L,EAAQ+vL,YACV/vL,EAAQ+vL,WAAWz7J,IAAIizE,EAAOiuF,IAVNA,EAgBxBZ,kBACF,OAAO8C,EACLr3L,KAAKo3L,cAAgB,QACrBtxL,GACAwxL,EAAAA,EAAAA,IAAet3L,KAAKL,QAAS,CAAC,eAAe,IAMrCi2L,kBACV,MAAsC,oBAAxB51L,KAAK01L,QAAQuB,QA3QtB5xE,EAAAA,SAAoB,Q,cCHf,MAAOkyE,GAqBnBvgL,YAAau5K,EAAgC,IAVtC,KAAAxD,UAAgD,CACrDC,aAAa,GAGR,KAAAX,UAAsB,GAEtB,KAAAwC,OAAS,GAET,KAAA0B,WAAgC,GAGrCvwL,KAAKuwL,WAAaA,EAElBvwL,KAAKkN,IAAIsqL,GACTx3L,KAAKkN,IAAIsqL,GACTx3L,KAAKkN,IAAIsqL,GACTx3L,KAAKkN,IAAIsqL,EAAAA,GACTx3L,KAAKkN,IAAIsqL,GACTx3L,KAAKkN,IAAIsqL,GACTx3L,KAAKkN,IAAIsqL,GAMXl7H,KAAMpoC,EAAWh0B,GACfF,KAAKqsL,UAAUrmL,SAAQkZ,IACrB,MAAMu4K,EAAUz3L,KAAK+sL,UAAU7tK,GAE/Bu4K,EAAQ1K,UAAY/sL,KAAK+sL,UAEzB0K,EAAQn7H,KAAKpoC,EAAMh0B,MAMrBF,KAAK+sL,UAAUjzK,IAAMyjH,QAAQv9H,KAAK6uL,OAAO/0K,KAI3C5M,IAAKgjL,GACH,MAAMhxK,EAAWgxK,EAAQhxK,SAErBlf,KAAKqsL,UAAU7qJ,SAAStiB,KAG5Blf,KAAK+sL,UAAU7tK,GAAY,IAAIgxK,EAAQlwL,KAAK6uL,OAAQ7uL,MACpDA,KAAKqsL,UAAU9iL,KAAK2V,KA1Dfq4K,GAAAA,QAAUnL,EAEVmL,GAAAA,WAAY,EAEZA,GAAAA,QAAAA,QAEAA,GAAAA,OAAS,CACdG,QAAQ,I,wFCVZ,MAAMh2D,GAAazE,EAAAA,EAAAA,GACjBuxC,EAAAA,EACArxC,EAAAA,GAIF,OAAeuE,EAAWh6H,OAAO,CAC/BmC,KAAM,cAENmO,MAAO,CACLymJ,UAAW,CACT1iE,QAAS,KACT7xF,UAAYjE,GACH,CAAC,SAAU,UAAUu7B,gBAAgBv7B,IAGhD+uC,SAAUuoF,QACVo6D,kBAAmBp6D,QACnBu4C,YAAa,CACXnvK,KAAM42H,QACNxhC,SAAS,GAEX6yE,YAAarxC,QACb6lD,YAAa7lD,SAGfl7H,KAAM,KAAM,CAEVu1L,iBAAkB,KAClBC,cAAe,GACf7iK,OAAQ,CAAC,QAAS,aAAc,aAAc,SAC9C2K,UAAW,KAGbwhG,MAAO,CACLs9B,UAAW,iBACX2kB,YAAa,iBACbxU,YAAa,kBAGfxtC,UACE,MAAM02D,GAAWlU,EAAAA,EAAAA,IAAY5jL,KAAM,aAAa,GAE5C83L,GAAY,CAAC,SAAU,UAAUt2J,SAASs2J,KAC5Cp0B,EAAAA,EAAAA,IAAa,kGAAiG1jK,MAGhHA,KAAK+3L,sBAGPpkC,gBACE3zJ,KAAKg4L,yBAGP34D,QAAS,CACP04D,qBACE,IACG/3L,KAAKy+J,WACNz+J,KAAKg1C,WACJh1C,KAAK0/J,eACN,OAEF1/J,KAAK2/B,UAAY3/B,KAAKqxK,wBACtB,MAAMxiK,EAAOrC,OAAOqC,KAAK7O,KAAK2/B,WAE9B,IAAK,MAAMz5B,KAAO2I,EAChB7O,KAAK0/J,eAAgBn5J,iBAAiBL,EAAKlG,KAAK2/B,UAAUz5B,KAG9Dq6J,eACE,MAAMvsI,GAAO63G,EAAAA,EAAAA,IAAQ7rI,KAAM,YAAawM,OAAOQ,OAAOhN,KAAKi4L,gBAAiB,CAC1E1wF,GAAIvnG,KAAKqxK,wBACTn2D,MAAOl7G,KAAKoxK,6BACP,GAIP,OAFApxK,KAAK63L,cAAgB7jK,EAEdA,GAETo9I,yBACE,MAAO,CACLxxC,KAAO5/H,KAAK81K,cAAgB91K,KAAK4uK,YAAe,cAAW9oK,EAC3D,iBAAiB,EACjB,gBAAiB0S,OAAOxY,KAAKkkH,YAGjCmtD,wBACE,GAAIrxK,KAAKg1C,SAAU,MAAO,GAE1B,MAAMrV,EAAuB,GAgC7B,OA9BI3/B,KAAK4uK,aACPjvI,EAAU+xI,WAAcxhK,IACtBlQ,KAAK0/J,aAAaxvJ,GAClBlQ,KAAK8xK,SAAS,SAEhBnyI,EAAUiyI,WAAc1hK,IACtBlQ,KAAK0/J,aAAaxvJ,GAClBlQ,KAAK8xK,SAAS,WAEP9xK,KAAK81K,cACdn2I,EAAUgqF,MAASz5G,IACjB,MAAMuuJ,EAAYz+J,KAAK0/J,aAAaxvJ,GAChCuuJ,GAAWA,EAAUx1D,QAEzB/4F,EAAE0/H,kBAEF5vI,KAAKkkH,UAAYlkH,KAAKkkH,WAItBlkH,KAAKojL,cACPzjJ,EAAUspE,MAAS/4F,IACjBlQ,KAAK0/J,aAAaxvJ,GAElBA,EAAE0/H,kBAEF5vI,KAAKkkH,UAAYlkH,KAAKkkH,WAInBvkF,GAET+/H,aAAcxvJ,GAAS,MAErB,GAAIlQ,KAAK43L,iBAAkB,OAAO53L,KAAK43L,iBAEvC,IAAIn5B,EAAY,KAEhB,GAAIz+J,KAAKy+J,UAAW,CAClB,MAAMtwJ,EAASnO,KAAK23L,kBAAoB33L,KAAK+uI,IAAMn8H,SAIjD6rJ,EAF4B,kBAAnBz+J,KAAKy+J,UAEFtwJ,EAAOu+F,cAAc1sG,KAAKy+J,WAC5Bz+J,KAAKy+J,UAAkB1vB,IAEpB/uI,KAAKy+J,UAAkB1vB,IAGxB/uI,KAAKy+J,eAEd,GAAkC,IAA9Bz+J,KAAK63L,cAAc7uL,QAAiBhJ,KAAK63L,cAAc7uL,SAAWkH,EAAI,CAI/E,MAAM8wJ,EAAKhhK,KAAK63L,cAAc,GAAGK,kBAO/Bz5B,EALAuC,GACAA,EAAGtgK,SAASu8H,QACZ+jC,EAAGtgK,SAASu8H,OAAOz1D,MAAMhkD,GAAWA,EAAE7jB,SAAW,CAAC,cAAe,YAAY6hC,SAAShe,EAAE7jB,QAAQkK,QAGnFm3J,EAAWtB,eAEZ1/J,KAAK63L,cAAc,GAAGM,SAE3BjoL,IAETuuJ,EAAavuJ,EAAE6/H,eAAiB7/H,EAAE/B,QAMpC,OAFAnO,KAAK43L,kBAA4B,OAAT,EAAAn5B,QAAA,IAAWzpC,YAAax3B,KAAK61B,aAAeorC,EAAY,KAEzEz+J,KAAK43L,kBAEdt3B,iBACE,OAAOz0B,EAAAA,EAAAA,IAAQ7rI,KAAM,UAAWA,KAAKi4L,iBAAiB,IAExDA,gBACE,MAAMtkG,EAAO3zF,KACb,MAAO,CACDoE,YACF,OAAOuvF,EAAKuwB,UAEV9/G,UAAO8/G,GACTvwB,EAAKuwB,SAAWA,KAItB8zE,wBACE,IACGh4L,KAAKy+J,YACLz+J,KAAK43L,iBACN,OAEF,MAAM/oL,EAAOrC,OAAOqC,KAAK7O,KAAK2/B,WAE9B,IAAK,MAAMz5B,KAAO2I,EACf7O,KAAK43L,iBAAyB/0L,oBAAoBqD,EAAKlG,KAAK2/B,UAAUz5B,IAGzElG,KAAK2/B,UAAY,IAEnBy4J,iBACEp4L,KAAKg4L,wBACLh4L,KAAK43L,iBAAmB,KACxB53L,KAAK0/J,eACL1/J,KAAK+3L,0B,0FC/MG,SAAUM,EAAiBj0L,EAAmB4wB,EAAmB,IAE7E,OAAOioG,EAAAA,EAAAA,IAAO4N,EAAAA,EAAAA,GAAoB,CAAC,WAAY,WAAWnjI,OAAO,CAC/DmC,KAAM,kBAENmO,MAAO,CACL6qH,IAAKtF,SAGPO,SAAU,CACR4E,sBACE,OAAOt+H,IAIX+8H,MAAO,CAGL0B,IAAKnkH,EAAYuoB,GACfA,EACIjnC,KAAKs4L,mBAAkB,GACvBt4L,KAAKikI,cAEXvB,oBAAqB61D,EAAQ9wD,GAC3BznI,KAAKy+H,SAAS8E,YAAY5+D,WAAW3kE,KAAKsgI,KAAMmH,KAIpDx2D,YACEjxE,KAAKikI,cAGP/E,UACE,IAAK,IAAIp2H,EAAI,EAAGE,EAASgsB,EAAOhsB,OAAQF,EAAIE,EAAQF,IAClD9I,KAAK6hL,OAAO7sJ,EAAOlsB,GAAI9I,KAAKikI,YAE9BjkI,KAAKikI,cAGP7C,UACEphI,KAAKikI,cAGPjzD,cACEhxE,KAAKs4L,qBAGP1wD,YACE5nI,KAAKs4L,qBAGPj5D,QAAS,CACP4E,aACOjkI,KAAK6iI,KAEV7iI,KAAKy+H,SAAS8E,YAAYh/D,SACxBvkE,KAAKsgI,KACLtgI,KAAK0iI,oBACL1iI,KAAKokI,sBAGTk0D,kBAAmB5zF,GAAQ,IACpBA,GAAU1kG,KAAK6iI,MAEpB7iI,KAAKy+H,SAAS8E,YAAY5+D,WACxB3kE,KAAKsgI,KACLtgI,KAAK0iI,sBAGT0B,kBAAmB,IAAM,O,+CCpE/B,SAASo0D,EAAat5K,GACpB,OAAO,SAAqBjZ,EAAKwhI,GAC/B,IAAK,MAAMziB,KAAQyiB,EACZj7H,OAAO/E,UAAU+P,eAAenX,KAAK4F,EAAK++G,IAC7ChlH,KAAKy4L,QAAQz4L,KAAK04L,MAAMx5K,GAAW8lG,GAGvC,IAAK,MAAMA,KAAQ/+G,EACjBjG,KAAK26J,KAAK36J,KAAK04L,MAAMx5K,GAAW8lG,EAAM/+G,EAAI++G,KAKhD,OAAeyb,EAAAA,EAAAA,OAAW,CACxBp+H,KAAM,KAAM,CACVirJ,OAAQ,GACRztB,WAAY,KAGdX,UAGEl/H,KAAK6hL,OAAO,SAAU2W,EAAY,UAAW,CAAEjlC,WAAW,IAC1DvzJ,KAAK6hL,OAAO,aAAc2W,EAAY,cAAe,CAAEjlC,WAAW,Q,yDCZtE,OAAe9yB,EAAAA,EAAAA,SAA+B/4H,OAAO,CACnDmC,KAAM,WAENmO,MAAO,CACLmwJ,MAAO5qC,SAGTl7H,KAAM,KAAM,CACVsgI,UAAU,IAGZ7E,SAAU,CACR66D,aACE,OAAO34L,KAAK2iI,UAAY3iI,KAAKmoK,OAASnoK,KAAKkkH,WAI/Cid,MAAO,CACLjd,WACElkH,KAAK2iI,UAAW,IAIpBzD,UAEM,SAAUl/H,KAAKm/H,SACjBhgF,EAAAA,EAAAA,IAAQ,OAAQn/C,OAIpBq/H,QAAS,CACPwgC,gBAAiBhoJ,GACf,OAAQ7X,KAAK24L,YAAc9gL,EAAWA,IAAY,CAAC7X,KAAKo+H,uB,mEC7C9D,OAAeqC,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,YAENmO,MAAO,CACL6a,MAAOra,QAGT6mH,QAAS,CACPnB,mBAAoBrrG,EAAwBxwB,EAAkB,IAC5D,MAA0B,kBAAfA,EAAK8yB,QAEduuI,EAAAA,EAAAA,IAAa,0BAA2B1jK,MAEjCqC,GAEiB,kBAAfA,EAAK47H,QAEdylC,EAAAA,EAAAA,IAAa,0BAA2B1jK,MAEjCqC,KAELu2L,EAAAA,EAAAA,IAAW/lK,GACbxwB,EAAK8yB,MAAQ,IACR9yB,EAAK8yB,MACR,mBAAoB,GAAGtC,IACvB,eAAgB,GAAGA,KAEZA,IACTxwB,EAAK47H,MAAQ,IACR57H,EAAK47H,MACR,CAACprG,IAAQ,IAINxwB,IAGT29H,aAAcntG,EAAwBxwB,EAAkB,IACtD,GAA0B,kBAAfA,EAAK8yB,MAId,OAFAuuI,EAAAA,EAAAA,IAAa,0BAA2B1jK,MAEjCqC,EAET,GAA0B,kBAAfA,EAAK47H,MAId,OAFAylC,EAAAA,EAAAA,IAAa,0BAA2B1jK,MAEjCqC,EAET,IAAIu2L,EAAAA,EAAAA,IAAW/lK,GACbxwB,EAAK8yB,MAAQ,IACR9yB,EAAK8yB,MACRtC,MAAO,GAAGA,IACV,cAAe,GAAGA,UAEf,GAAIA,EAAO,CAChB,MAAOgmK,EAAWC,GAAiBjmK,EAAMpjB,WAAWQ,OAAOyE,MAAM,IAAK,GACtErS,EAAK47H,MAAQ,IACR57H,EAAK47H,MACR,CAAC46D,EAAY,WAAW,GAEtBC,IACFz2L,EAAK47H,MAAM,SAAW66D,IAAiB,GAG3C,OAAOz2L,O,yDCnEb,OAAeo+H,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,aACNmO,MAAO,CACLgvH,gBAAiB,CACfrgI,KAAMusF,SACN6I,QAAS4T,EAAAA,Q,+CCAf,OAAe8wB,EAAAA,EAAAA,SAA2C/4H,OAAO,CAC/DmC,KAAM,YAENmO,MAAO,CACLmrK,UAAW,CACTx8K,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GAEXmnF,WAAY,CACVv8K,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,IAIb15F,KAAM,KAAM,CACV02L,iBAAajzL,EACbkzL,kBAAclzL,IAGhBu5H,QAAS,CAIP45D,aACE5/K,aAAarZ,KAAK+4L,aAClB1/K,aAAarZ,KAAKg5L,eAKpBlnB,SAAUnrK,EAAwB8qC,GAChCzxC,KAAKi5L,aAEL,MAAM7/K,EAAQiY,SAAUrxB,KAAa,GAAG2G,UAAc,IAEpD3G,KAAa,GAAG2G,YAAiB3B,WAAWysC,GAAM,MAClDzxC,KAAKkkH,SAAW,CAAE5/G,MAAM,EAAMs/G,OAAO,GAAQj9G,KAC3CyS,Q,gDC5BV,SAAS8/K,EAAgB50F,GACvB,MAAM60F,EAAU,GAChB,IAAK,IAAI3vL,EAAQ,EAAGA,EAAQ86F,EAASt7F,OAAQQ,IAAS,CACpD,MAAMi7F,EAAQH,EAAS96F,GACnBi7F,EAAMyf,UAAYzf,EAAM20F,YAC1BD,EAAQ5vL,KAAKk7F,GAEb00F,EAAQ5vL,QAAQ2vL,EAAez0F,EAAM0lD,YAIzC,OAAOgvC,EAIT,QAAel8D,EAAAA,EAAAA,KAAkBv1H,OAAO,CACtCmC,KAAM,YAENxH,OACE,MAAO,CACLghL,iBAAiB,EACjBn/D,UAAU,EACVk1E,aAAa,IAIjBj4D,MAAO,CACLjd,SAAUj+G,GACR,GAAIA,EAAK,OAET,MAAMozL,EAAiBr5L,KAAKy/J,oBAC5B,IAAK,IAAIj2J,EAAQ,EAAGA,EAAQ6vL,EAAerwL,OAAQQ,IACjD6vL,EAAe7vL,GAAO06G,UAAW,IAKvCmb,QAAS,CACPogC,oBACE,OAAIz/J,KAAKqjL,gBAAwB6V,EAAel5L,KAAKmqJ,WAE9C,IAETwV,2BACE,MAAMxpJ,EAAS,GACTkjL,EAAiBr5L,KAAKy/J,oBAE5B,IAAK,IAAIj2J,EAAQ,EAAGA,EAAQ6vL,EAAerwL,OAAQQ,IACjD2M,EAAO5M,QAAQ8vL,EAAe7vL,GAAO8vL,iCAGvC,OAAOnjL,GAETmjL,gCACE,MAAMnjL,EAAS,CAACnW,KAAK+uI,KAKrB,OAJI/uI,KAAKqnI,MAAMxvH,SAAS1B,EAAO5M,KAAKvJ,KAAKqnI,MAAMxvH,SAC3C7X,KAAKk/J,SAAS/oJ,EAAO5M,KAAKvJ,KAAKk/J,QAAQnwB,KAC3C54H,EAAO5M,QAAQvJ,KAAK2/J,4BAEbxpJ,O,8EC1Db,SAASojL,EAAsBtzL,GAC7B,MAAMU,SAAcV,EAEpB,MAAa,YAATU,GAA+B,WAATA,GAEnBV,EAAI+uH,WAAax3B,KAAK61B,aAG/B,SAASmmE,EAAiB/6B,GACxBA,EAAUz4J,SAAQguB,IAChBA,EAAKmkK,KACLnkK,EAAKmkK,IAAI7wJ,YACTtT,EAAKmkK,IAAI7wJ,WAAWsqE,YAAY59E,EAAKmkK,QAKzC,QAAel7D,EAAAA,EAAAA,GAIbokC,EAAAA,GAAU35J,OAAO,CACjBmC,KAAM,aAENmO,MAAO,CACL+9C,OAAQ,CACNgmC,SAAS,EACT7xF,UAAWqvL,GAEbxyD,aAAc,CACZpgI,KAAM6R,OACNujF,QAAS,KAIb15F,KAAM,KAAM,CACVw1L,cAAe,KACf4B,aAAa,IAGft4D,MAAO,CACLprE,SACE/1D,KAAKy5L,aAAc,EACnBz5L,KAAK05L,cAEPf,aACE34L,KAAKwhI,UAAUxhI,KAAK05L,cAIxB56B,cACE9+J,KAAKwhI,WAAU,KACb,GAAIxhI,KAAK63L,cAAe,CACtB,MAAMp5B,EAAYrzJ,MAAMiD,QAAQrO,KAAK63L,eAAiB73L,KAAK63L,cAAgB,CAAC73L,KAAK63L,eAEjFp5B,EAAUz4J,SAAQguB,IAChB,IAAKA,EAAKmkK,IAAK,OACf,IAAKn4L,KAAK+uI,IAAIznG,WAAY,OAE1B,MAAMn5B,EAASnO,KAAK+uI,MAAQ/uI,KAAK+uI,IAAIznG,WAAWqyJ,WAC5C35L,KAAK+uI,IACL/uI,KAAK+uI,IAAIz1B,YAEbt5G,KAAK+uI,IAAIznG,WAAWy8D,aAAa/vE,EAAKmkK,IAAKhqL,WAMnDizH,UACEphI,KAAK24L,YAAc34L,KAAK05L,cAG1B1oH,cACEhxE,KAAKkkH,UAAW,GAGlByvC,gBAEI3zJ,KAAKqnI,MAAMxvH,SACX7X,KAAKqnI,MAAMxvH,QAAQyvB,YAEnBtnC,KAAKqnI,MAAMxvH,QAAQyvB,WAAWsqE,YAAY5xG,KAAKqnI,MAAMxvH,UAIzD+vH,YACE,GAAI5nI,KAAK63L,cAAe,CACtB,MAAMp5B,EAAYrzJ,MAAMiD,QAAQrO,KAAK63L,eAAiB73L,KAAK63L,cAAgB,CAAC73L,KAAK63L,eACjF,GAAI73L,KAAK+uI,IAAI94E,YAAa,CAGxB,MAAM5B,EAAW,IAAIC,kBAAiBmgD,IAElCA,EAAKjtC,MAAKw/C,GAAU57G,MAAMuB,KAAKq6G,EAAOtyD,cAAclzB,SAASxhC,KAAK+uI,SAElE16E,EAASoB,aACT+jI,EAAgB/6B,OAGpBpqG,EAASM,QAAQ30D,KAAK+uI,IAAIznG,WAAa,CAAEutB,SAAS,EAAOD,WAAW,SAEpE4kI,EAAgB/6B,KAKtBp/B,QAAS,CACP0gC,kBACE,MAAMxgK,GAAU4pI,EAAAA,EAAAA,IAAqBnpI,KAAKC,OAAQ,6BAElD,OAAOV,GAAW,CAChB,CAACA,GAAU,KAGfm6L,aACE,GAAI15L,KAAKi/J,eACNj/J,KAAKqnI,MAAMxvH,SACZ7X,KAAKy5L,aAGW,KAAhBz5L,KAAK+1D,SACW,IAAhB/1D,KAAK+1D,QACW,WAAhB/1D,KAAK+1D,OACL,OAEF,IAAI5nD,EAGFA,GAFkB,IAAhBnO,KAAK+1D,OAEEnjD,SAAS85F,cAAc,cACA,kBAAhB1sG,KAAK+1D,OAEZnjD,SAAS85F,cAAc1sG,KAAK+1D,QAG5B/1D,KAAK+1D,OAGX5nD,GAKLA,EAAOujG,YAAY1xG,KAAKqnI,MAAMxvH,SAE9B7X,KAAKy5L,aAAc,IANjBp4D,EAAAA,EAAAA,IAAY,2BAA2BrhI,KAAK+1D,QAAU,eAAgB/1D,W,+CC5J9E,OAAeygI,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,aAENmO,MAAO,CACL42H,UAAW,CAACx0H,OAAQ5B,SAGtBslH,SAAU,CACRwQ,oBACE,OAAOtuI,KAAK4uI,WAEdR,mBACE,MAAMQ,EAAY5uI,KAAKsuI,kBAEvB,OAAiB,MAAbM,GACAnwH,MAAM4S,SAASu9G,IADW,GAEvB,CAAE,CAAC,aAAa5uI,KAAK4uI,cAAc,Q,gFCF1C,SAAUn0C,EACdlH,EACAkR,EACAtkG,GAEA,OAAOmhK,EAAAA,EAAAA,GAAwB/tE,EAAWkR,EAAOtkG,GAAQuH,OAAO,CAC9DmC,KAAM,YAENmO,MAAO,CACLw1H,YAAa,CACX7mI,KAAM6R,OACNujF,UACE,GAAK/7F,KAAKuzF,GAEV,OAAOvzF,KAAKuzF,GAAWi6C,cAG3Bx4F,SAAUuoF,SAGZl7H,OACE,MAAO,CACL6hH,UAAU,IAId4Z,SAAU,CACRqQ,eACE,OAAKnuI,KAAKwtI,YAEH,CACL,CAACxtI,KAAKwtI,aAAcxtI,KAAKkkH,UAHG,KAQlCgb,UACEl/H,KAAKuzF,IAAevzF,KAAKuzF,GAAmBhvB,SAASvkE,OAGvD2zJ,gBACE3zJ,KAAKuzF,IAAevzF,KAAKuzF,GAAmB5uB,WAAW3kE,OAGzDq/H,QAAS,CACP33B,SACE1nG,KAAKumI,MAAM,cAOD9rC,EAAQ,c,+JC5C1B,MAAMinC,GAAazE,EAAAA,EAAAA,GACjBqN,EAAAA,GACAO,EAAAA,EAAAA,GAAoB,CAAC,WAAY,QAAS,MAAO,WACjD4gC,EAAAA,EACAxsC,EAAAA,GAIF,MAAeyC,EAAWh6H,OAAO,CAC/BmC,KAAM,oBAENi2H,WAAY,CAAEjqG,UAAAA,EAAAA,GAEd7d,MAAO,CACL66B,OAAQ,CACNlsC,KAAM42H,QACNxhC,SAAS,GAEXvnE,gBAAiB,CACf7tB,KAAM6R,OACNujF,QAAS,MAEX69F,kBAAmB,CACjBjzL,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,MAEX89F,YAAa,CACXlzL,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,KAEXlpE,MAAO,CACLlsB,KAAM6R,OACNujF,QAAS,WAEX7iE,OAAQ,CACNvyB,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GAEXmwC,cAAe3O,QACf1hC,MAAO0hC,QACPxiH,QAASwiH,QACTx+G,QAASw+G,QACTu8D,OAAQv8D,QACRw8D,QAASx8D,QACTn5H,MAAO,CACLuC,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,IAIb15F,OACE,MAAO,CACLspK,kBAAmB3rK,KAAKoE,OAAS,EACjC+nI,WAAW,IAIfrO,SAAU,CACRk8D,qBACE,OAAOh6L,KAAKo+H,eAAe,MAAOp+H,KAAKk+H,mBAAmBl+H,KAAKw0B,iBAAmBx0B,KAAK6yB,MAAO,CAC5FmrG,YAAa,gCACb7oG,MAAOn1B,KAAKi6L,oBAGhBC,cACE,OAAOl6L,KAAKo+H,eAAep+H,KAAK05K,mBAAoB,CAAC15K,KAAKm6L,mBAE5DA,kBACE,OAAOn6L,KAAKksI,cAAgBlsI,KAAKo6L,sBAAwBp6L,KAAKq6L,qBAEhEC,iBACE,OAAOt6L,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,4BACb7oG,MAAOn1B,KAAKioC,UAGhBoyJ,sBACE,OAAOr6L,KAAKo+H,eAAe,MAAOp+H,KAAKk+H,mBAAmBl+H,KAAK6yB,MAAO,CACpEmrG,YAAa,iCACb7oG,MAAO,CACL6C,OAAOgsG,EAAAA,EAAAA,IAAchkI,KAAKqsI,gBAAiB,UAIjD+tD,wBACE,OAAOp6L,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,mCACbC,MAAO,CACL,2CAA4Cj+H,KAAK6yC,SAElD,CACD7yC,KAAKu6L,eAAe,QACpBv6L,KAAKu6L,eAAe,YAGxBC,iBACE,OAAKx6L,KAAK85L,OAEH95L,KAAKo+H,eAAe,MAAOp+H,KAAKggI,aAAahgI,KAAK6yB,MAAO,CAC9DmrG,YAAa,4BACb7oG,MAAO,CACL6C,OAAOgsG,EAAAA,EAAAA,IAAc,IAAMhkI,KAAKy6L,iBAAkB,SAL7B,MAS3BR,kBACE,MAAML,EAA8C,MAA1B55L,KAAK45L,kBAC1B55L,KAAKw0B,gBAAkB,EAAI,GAC5B7Z,WAAW3a,KAAK45L,mBAEpB,MAAO,CACLx5G,QAASw5G,EACT,CAAC55L,KAAKw/K,WAAa,QAAU,SAASx7C,EAAAA,EAAAA,IAAchkI,KAAKqsI,gBAAiB,KAC1Er0G,OAAOgsG,EAAAA,EAAAA,IAAc/0H,KAAKmQ,IAAI,EAAGpf,KAAKy6L,iBAAmBz6L,KAAKqsI,iBAAkB,OAGpFjvC,UACE,MAAO,CACL,8BAA+Bp9F,KAAK4iI,SACpC,2BAA4B5iI,KAAK8iI,MACjC,2BAA4B9iI,KAAK67F,MACjC,8BAA+B77F,KAAK06L,SACpC,6BAA8B16L,KAAKw/K,WACnC,6BAA8Bx/K,KAAK+e,QACnC,6BAA8B/e,KAAK+5L,QACnC,6BAA8B/5L,KAAKmsI,aAChCnsI,KAAKykI,eAGZi1C,qBACE,OAAO15K,KAAKksI,cAAgB21B,EAAAA,GAAkBinB,EAAAA,IAEhDtJ,aACE,OAAOx/K,KAAKy+H,SAAS3kH,MAAQ9Z,KAAK+a,SAEpC0/K,mBACE,OAAOz6L,KAAK+sC,UAAU/sC,KAAK65L,cAE7BxtD,kBACE,OAAOrsI,KAAK+sC,UAAU/sC,KAAK2rK,oBAE7B+uB,WACE,OAAOn9D,QAAQv9H,KAAK4qI,WAAWjsG,SAEjCsJ,SACE,MAAMA,EAA8B,GAUpC,OARKjoC,KAAK6yC,SACR5K,EAAO/O,OAAS,GAGbl5B,KAAKksI,eAAuD,MAAtCvxH,WAAW3a,KAAKy6L,oBACzCxyJ,EAAOjQ,OAAQgsG,EAAAA,EAAAA,IAAchkI,KAAKy6L,iBAAkB,MAG/CxyJ,IAIXo3F,QAAS,CACPI,aACE,MAAM6J,GAAOuC,EAAAA,EAAAA,IAAQ7rI,KAAM,UAAW,CAAEoE,MAAOpE,KAAK2rK,oBAEpD,OAAKriC,EAEEtpI,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,8BACZsL,GAJe,MAMpB2qC,eACE,MAAMt0I,EAAY3/B,KAAK4qI,WAMvB,OAJI5qI,KAAK06L,WACP/6J,EAAUgqF,MAAQ3pH,KAAKi2B,SAGlB0J,GAET46J,eAAgB1wL,GACd,OAAO7J,KAAKo+H,eAAe,MAAOp+H,KAAKk+H,mBAAmBl+H,KAAK6yB,MAAO,CACpEmrG,YAAa,mCACbC,MAAO,CACL,CAACp0H,IAAO,OAIdosB,QAAS/lB,GACP,IAAKlQ,KAAK06L,SAAU,OAEpB,MAAM,MAAE1iK,GAAUh4B,KAAK+uI,IAAItmG,wBAE3BzoC,KAAKinI,cAAgB/2H,EAAEo4B,QAAUtQ,EAAQ,KAE3Ci1G,UAAW14E,EAAsCF,EAAgC64E,GAC/EltI,KAAKmsI,UAAYe,GAEnBngG,UAAW3oC,GACT,OAAIA,EAAQ,EAAU,EAClBA,EAAQ,IAAY,IACjBuW,WAAWvW,KAItBjF,OAAQ2B,GACN,MAAMuB,EAAO,CACX27H,YAAa,oBACb9iB,MAAO,CACL0kB,KAAM,cACN,gBAAiB,EACjB,gBAAiB5/H,KAAKy6L,iBACtB,gBAAiBz6L,KAAKksI,mBAAgBpmI,EAAY9F,KAAKqsI,iBAEzDpO,MAAOj+H,KAAKo9F,QACZ0iC,WAAY,CAAC,CACXj2H,KAAM,YACNzF,MAAOpE,KAAKitI,YAEd93G,MAAO,CACLyF,OAAQ56B,KAAK46B,OAAS,OAAI90B,EAC1BozB,OAAQl5B,KAAK6yC,QAASmxF,EAAAA,EAAAA,IAAchkI,KAAKk5B,QAAU,EACnDyB,IAAK36B,KAAK26B,IAAM,OAAI70B,GAEtByhG,GAAIvnG,KAAKi0K,gBAGX,OAAOnzK,EAAE,MAAOuB,EAAM,CACpBrC,KAAKw6L,eACLx6L,KAAKg6L,mBACLh6L,KAAKs6L,eACLt6L,KAAKk6L,YACLl6L,KAAKy/H,kBC5PX,ICcA,EAAegB,EAAAA,EAAAA,SAAwB/4H,OAAO,CAC5CmC,KAAM,WAENmO,MAAO,CACL41H,QAAS,CACPjnI,KAAM,CAAC42H,QAAS/kH,QAChBujF,SAAS,GAEX6uD,aAAc,CACZjkJ,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,IAIbsjC,QAAS,CACP0rB,cACE,OAAqB,IAAjB/qJ,KAAK4tI,QAA0B,KAE5B5tI,KAAKu/H,OAAOjuF,UAAYtxC,KAAKo+H,eAAeu8D,EAAiB,CAClE3iL,MAAO,CACL4qH,UAAU,EACV/vG,OAAyB,IAAjB7yB,KAAK4tI,SAAqC,KAAjB5tI,KAAK4tI,QACjC5tI,KAAK6yB,OAAS,UACf7yB,KAAK4tI,QACT10G,OAAQl5B,KAAK4qJ,aACb1e,eAAe,U,yDClCzB,OAAezL,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,aAENmO,MAAO,CACLkhB,OAAQ,CAAC9e,OAAQ5B,QACjB2wB,UAAW,CAAC/uB,OAAQ5B,QACpB2jB,SAAU,CAAC/hB,OAAQ5B,QACnBoiL,UAAW,CAACxgL,OAAQ5B,QACpBkyH,SAAU,CAACtwH,OAAQ5B,QACnBwf,MAAO,CAAC5d,OAAQ5B,SAGlBslH,SAAU,CACR6M,mBACE,MAAM1iG,EAAiC,GAEjC/O,GAAS8qG,EAAAA,EAAAA,IAAchkI,KAAKk5B,QAC5B0hK,GAAY52D,EAAAA,EAAAA,IAAchkI,KAAK46L,WAC/BlwD,GAAW1G,EAAAA,EAAAA,IAAchkI,KAAK0qI,UAC9BvhG,GAAY66F,EAAAA,EAAAA,IAAchkI,KAAKmpC,WAC/BhN,GAAW6nG,EAAAA,EAAAA,IAAchkI,KAAKm8B,UAC9BnE,GAAQgsG,EAAAA,EAAAA,IAAchkI,KAAKg4B,OASjC,OAPIkB,IAAQ+O,EAAO/O,OAASA,GACxB0hK,IAAW3yJ,EAAO2yJ,UAAYA,GAC9BlwD,IAAUziG,EAAOyiG,SAAWA,GAC5BvhG,IAAWlB,EAAOkB,UAAYA,GAC9BhN,IAAU8L,EAAO9L,SAAWA,GAC5BnE,IAAOiQ,EAAOjQ,MAAQA,GAEnBiQ,O,kGCzBb,MAAMy5F,GAAazE,EAAAA,EAAAA,GACjB0gC,EAAAA,GACAk9B,EAAAA,EAAAA,GAAoB,CAAC,MAAO,QAAS,SAAU,OAAQ,aACvDj9B,EAAAA,EACAJ,EAAAA,GA8BF,OAAe97B,EAAWh6H,SAAkBA,OAAO,CACjDmC,KAAM,WAENmO,MAAO,CACL+sH,cAAexH,QACfiH,MAAOjH,QACPgH,KAAMhH,QACNphG,SAAU,CACRx1B,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,QAEX2uC,SAAU,CAACtwH,OAAQ5B,QACnBy+J,YAAa,CACXtwK,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GAEXynF,UAAW,CACT78K,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GAEX0nF,WAAY,CACV98K,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GAEX4nF,SAAU,CACRh9K,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GAEX6zE,WAAY,CACVjpK,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GAEX8oC,eAAgBtH,QAChBu9D,UAAW,CACTn0L,KAAMyT,OACN2hF,QAAS,MAEXg/F,UAAW,CACTp0L,KAAMyT,OACN2hF,QAAS,MAEXikE,OAAQ,CACNr5J,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,OAIb15F,KAAM,KAAM,CACVw1L,cAAe,GACfmD,UAAW,EACXC,UAAW,EACX98B,YAAa,KACbqT,gBAAgB,EAChBnC,WAAY,CACV5Q,UAAW,CACT9jI,IAAK,EACL/gB,KAAM,EACNghB,OAAQ,EACR/gB,MAAO,EACPme,MAAO,EACPkB,OAAQ,EACRs8F,UAAW,EACXo7C,aAAc,EACd7wG,WAAY,GAEdloD,QAAS,CACP8iB,IAAK,EACL/gB,KAAM,EACNghB,OAAQ,EACR/gB,MAAO,EACPme,MAAO,EACPkB,OAAQ,EACRs8F,UAAW,EACXo7C,aAAc,IAGlBsqB,gBAAiB,EACjBnsB,gBAAgB,EAChBosB,WAAW,EACXC,gBAAgB,EAChBlrB,iBAAiB,EACjBL,UAAW,EACXtuC,YAAa,EACb85D,WAAY,0BACZh9B,eAAgB,IAGlBvgC,SAAU,CACRwF,eACE,MAAM5rH,EAAI1X,KAAKqvK,WAAW5Q,UACpB90J,EAAI3J,KAAKqvK,WAAWx3J,QACpB0rK,IAAiC,IAAhBvjL,KAAK+1D,OAAmBr+C,EAAEqoD,WAAaroD,EAAEkC,OAAS,EACnE8wH,EAAWz7H,KAAKmQ,IAAI1H,EAAEsgB,MAAOruB,EAAEquB,OACrC,IAAIpe,EAAO,EAGX,GAFAA,GAAQ2pK,GACJvjL,KAAK4Z,MAAS5Z,KAAKy+H,SAAS3kH,MAAQ9Z,KAAK6Z,SAAQD,GAAS8wH,EAAWhzH,EAAEsgB,OACvEh4B,KAAKsoC,QAAS,CAChB,MAAMnM,EAAW1d,MAAMrE,OAAOpa,KAAKm8B,WAC/BzkB,EAAEsgB,MACF/oB,KAAKkQ,IAAIzH,EAAEsgB,MAAO5d,OAAOpa,KAAKm8B,WAElCviB,GAAQ5Z,KAAK4Z,MAAQuiB,EAAWzkB,EAAEsgB,MAKpC,OAHIh4B,KAAKwjL,YAAW5pK,GAAQyX,SAASrxB,KAAKwjL,YACtCxjL,KAAKyjL,aAAY7pK,GAAQyX,SAASrxB,KAAKyjL,aAEpC7pK,GAET4xH,cACE,MAAM9zH,EAAI1X,KAAKqvK,WAAW5Q,UACpB90J,EAAI3J,KAAKqvK,WAAWx3J,QAC1B,IAAI8iB,EAAM,EASV,OAPI36B,KAAK26B,MAAKA,GAAOjjB,EAAEwhB,OAASvvB,EAAEuvB,SACd,IAAhBl5B,KAAK+1D,OAAkBp7B,GAAOjjB,EAAE89G,UAC/B76F,GAAOjjB,EAAEijB,IAAM36B,KAAKuhI,YACrBvhI,KAAKuoC,UAAS5N,GAAO36B,KAAK26B,KAAOjjB,EAAEwhB,OAASxhB,EAAEwhB,QAC9Cl5B,KAAK2jL,WAAUhpJ,GAAOtJ,SAASrxB,KAAK2jL,WACpC3jL,KAAKi3K,cAAat8I,GAAOtJ,SAASrxB,KAAKi3K,cAEpCt8I,GAET6jI,eACE,QAASx+J,KAAKu/H,OAAOk/B,aAAez+J,KAAK0/H,aAAa++B,aAAez+J,KAAKy+J,aAAez+J,KAAKo7L,gBAEhGE,kBACE,OAAOt7L,KAAKuhI,YAAcvhI,KAAKk7L,kBAInC/5D,MAAO,CACLnsF,SAAU/uC,GACRA,GAAOjG,KAAKiyK,kBAEd/tD,SAAUj+G,GACJjG,KAAKg1C,WAET/uC,EAAMjG,KAAKswK,eAAiBtwK,KAAKiyK,mBAEnC6oB,UAAW,mBACXC,UAAW,oBAGbj8B,cACE9+J,KAAKm7L,UAA8B,qBAAX/mL,OAEpBpU,KAAKm7L,WACP/mL,OAAO7N,iBAAiB,SAAUvG,KAAKqoI,kBAAkB,IAI7DsrB,gBACM3zJ,KAAKm7L,WACP/mL,OAAOvR,oBAAoB,SAAU7C,KAAKqoI,kBAAkB,IAIhEhJ,QAAS,CACPk8D,mBACE,MAAO,CACL/lE,UAAWx1H,KAAK+6L,WAAa/6L,KAAKi7L,UAClCl7H,WAAY//D,KAAK86L,WAAa96L,KAAKg7L,UACnCpqB,aAAc,EACdj2I,IAAK36B,KAAK+6L,WAAa/6L,KAAKi7L,UAC5BrgK,OAAQ56B,KAAK+6L,WAAa/6L,KAAKi7L,UAC/BrhL,KAAM5Z,KAAK86L,WAAa96L,KAAKg7L,UAC7BnhL,MAAO7Z,KAAK86L,WAAa96L,KAAKg7L,UAC9B9hK,OAAQ,EACRlB,MAAO,IAGXu4I,aACAd,SAAUL,GACR,OAAOprC,EAAAA,EAAAA,KAA8B,IAAhBhkI,KAAK+1D,OACtB/1D,KAAKsjI,aACLtjI,KAAKuvK,cAAcvvK,KAAKsjI,aAAc8rC,KAE5CY,UACE,OAAOhsC,EAAAA,EAAAA,KAA8B,IAAhBhkI,KAAK+1D,OACtB/1D,KAAKwrI,YACLxrI,KAAK+vK,cAAc/vK,KAAKwrI,eAE9B+jC,cAAe31J,EAAcw1J,GAC3B,MAAMosB,EAAY5hL,EAAOw1J,EAAYpvK,KAAK6vK,UAAY,GAQtD,OALEj2J,IADI5Z,KAAK4Z,MAAQ5Z,KAAK6Z,QAAU2hL,EAAY,EACrCvsL,KAAKmQ,IAAIxF,EAAO4hL,EAAW,GAE3BvsL,KAAKmQ,IAAIxF,EAAM,IAGjBA,EAAO5Z,KAAKy7L,iBAErB1rB,cAAep1I,GACb,MAAM+gK,EAAiB17L,KAAK27L,iBACtBC,EAAQ57L,KAAKs7L,gBAAkBI,EAC/Bj9B,EAAYz+J,KAAKqvK,WAAW5Q,UAC5B0R,EAAgBnwK,KAAKqvK,WAAWx3J,QAAQqhB,OACxC6gD,EAAcp/C,EAAMw1I,EACpB8K,EAAgB2gB,EAAQ7hH,EAmB9B,OAfIkhG,GACFj7K,KAAK6kI,gBAGL45B,EAAU9jI,IAAMw1I,EAEhBx1I,EAAM36B,KAAKuhI,aAAek9B,EAAU9jI,IAAMw1I,GAEjC8K,IAAkBj7K,KAAK+kI,cAChCpqG,EAAMihK,EAAQzrB,EAAgB,GAErBx1I,EAAM36B,KAAKs7L,kBAAoBt7L,KAAK+kI,gBAC7CpqG,EAAM36B,KAAKs7L,gBAAkB,IAGxB3gK,EAAM,GAAK,GAAKA,GAEzB21I,eACOtwK,KAAKm7L,WAEVn7L,KAAKuwK,YAEP0B,iBACEjyK,KAAKkwK,iBAAkB,EAEvBlwK,KAAK6jL,cAEPgY,sBACM77L,KAAKm7L,YACPn7L,KAAKuhI,YAAcvhI,KAAKwxK,eAAiB,EAAIxxK,KAAK87L,iBAGtDC,sBACE,IAAoB,IAAhB/7L,KAAK+1D,OAAkB,OAC3B,IAAIrgD,EAAK1V,KAAK0/J,eACd,MAAOhqJ,EAAI,CACT,GAA6C,UAAzCtB,OAAOuzB,iBAAiBjyB,GAAI6C,SAE9B,YADAvY,KAAKwxK,gBAAiB,GAGxB97J,EAAKA,EAAGsmL,aAEVh8L,KAAKwxK,gBAAiB,GAExBqS,eACAxS,wBACE,MAAM1xI,EAAYi+H,EAAAA,EAAAA,QAAAA,QAAAA,sBAAAA,KAAuD59J,MAEnEi2B,EAAU0J,EAAUgqF,MAa1B,OAXI1zF,IACF0J,EAAUgqF,MAASz5G,IACblQ,KAAK81K,aACP7/I,GAAWA,EAAQ/lB,GAGrBlQ,KAAKg7L,UAAY9qL,EAAEw4B,QACnB1oC,KAAKi7L,UAAY/qL,EAAEy4B,UAIhBhJ,GAETg8J,iBACE,OAAK37L,KAAKm7L,UAEH/mL,OAAOs9K,aACZ9+K,SAASysJ,gBAAgB51H,aAHC,GAK9BgyJ,gBACE,OAAKz7L,KAAKm7L,UAEH/mL,OAAO6nL,aACZrpL,SAASysJ,gBAAgBsc,WAHC,GAK9BmgB,eACE,OAAK97L,KAAKm7L,UAEH/mL,OAAOmtH,aACZ3uH,SAASysJ,gBAAgBr2D,UAHC,GAK9BkzF,4BAA6BxmL,GAC3B,MAAMykB,EAAOzkB,EAAG+yB,wBAChB,MAAO,CACL9N,IAAK1rB,KAAK8O,MAAMoc,EAAKQ,KACrB/gB,KAAM3K,KAAK8O,MAAMoc,EAAKvgB,MACtBghB,OAAQ3rB,KAAK8O,MAAMoc,EAAKS,QACxB/gB,MAAO5K,KAAK8O,MAAMoc,EAAKtgB,OACvBme,MAAO/oB,KAAK8O,MAAMoc,EAAKnC,OACvBkB,OAAQjqB,KAAK8O,MAAMoc,EAAKjB,UAG5BijK,QAASzmL,GACP,IAAKA,IAAO1V,KAAKm7L,UAAW,OAAO,KAEnC,MAAMhhK,EAAOn6B,KAAKk8L,4BAA4BxmL,GAG9C,IAAoB,IAAhB1V,KAAK+1D,OAAkB,CACzB,MAAM5gC,EAAQ/gB,OAAOuzB,iBAAiBjyB,GAEtCykB,EAAKvgB,KAAOyX,SAAS8D,EAAM6nG,YAC3B7iG,EAAKQ,IAAMtJ,SAAS8D,EAAMmgG,WAG5B,OAAOn7F,GAETiiK,UAAW3qJ,GACT54B,uBAAsB,KACpB,MAAMnD,EAAK1V,KAAKqnI,MAAMxvH,QAEjBnC,GAA2B,SAArBA,EAAGyf,MAAMg2B,SAKpBz1C,EAAGyf,MAAMg2B,QAAU,eACnB1Z,IACA/7B,EAAGyf,MAAMg2B,QAAU,QANjB1Z,QASN++H,kBACE,OAAO,IAAIxuK,SAAcC,GAAW4W,uBAAsB,KACxD7Y,KAAKkwK,gBAAkBlwK,KAAK+uK,eAAiB/uK,KAAKkkH,SAClDjiH,UAGJomI,mBACEroI,KAAKm7L,UAA8B,qBAAX/mL,OACxBpU,KAAK+7L,sBACL/7L,KAAK67L,sBACL77L,KAAK6vK,UAAYj9J,SAASysJ,gBAAgB71H,YAE1C,MAAM6lI,EAAkB,CACtB5Q,UAAW,IAAKz+J,KAAKqvK,WAAW5Q,WAChC5mJ,QAAS,IAAK7X,KAAKqvK,WAAWx3J,UAIhC,IAAK7X,KAAKw+J,cAAgBx+J,KAAK4iI,SAC7BysC,EAAW5Q,UAAYz+J,KAAKu7L,uBACvB,CACL,MAAM98B,EAAYz+J,KAAK0/J,eACvB,IAAKjB,EAAW,OAEhB4Q,EAAW5Q,UAAYz+J,KAAKm8L,QAAQ19B,GACpC4Q,EAAW5Q,UAAU1+F,WAAa0+F,EAAU1+F,YACxB,IAAhB//D,KAAK+1D,OAGPs5G,EAAW5Q,UAAUjpC,UAAYipC,EAAUjpC,UAE3C65C,EAAW5Q,UAAUjpC,UAAY,EAKrCx1H,KAAKo8L,WAAU,KACb,GAAIp8L,KAAKqnI,MAAMxvH,QAAS,CACtB,GAAI7X,KAAKqnI,MAAMxvH,QAAQmkL,aAAc,CACnC,MAAMK,EAAar8L,KAAKk8L,4BAA4Bl8L,KAAKqnI,MAAMxvH,QAAQmkL,cAEvEh8L,KAAKk7L,gBAAkB9mL,OAAOmtH,YAAc86D,EAAW1hK,IACvD00I,EAAW5Q,UAAU9jI,KAAO36B,KAAKk7L,gBACjC7rB,EAAW5Q,UAAU7kJ,MAAQxF,OAAO6nL,YAAcI,EAAWziL,KAG/Dy1J,EAAWx3J,QAAU7X,KAAKm8L,QAAQn8L,KAAKqnI,MAAMxvH,SAG/C7X,KAAKqvK,WAAaA,U,yDC9Z1B,OAAe5uC,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,SAENmO,MAAO,CACLo6I,iBAAkB,CAChBzrJ,KAAM,CAACyT,OAAQ5B,QACfujF,UAGE,OAAO/7F,KAAKy+H,SACRz+H,KAAKy+H,SAASmmC,WAAWxS,sBACzBtsJ,GAENoE,UAAW2H,IACR4M,MAAMrE,OAAOvI,KACd,CAAC,KAAM,KAAM,KAAM,KAAM,MAAM2vB,SAAShpB,OAAO3G,MAKrDisH,SAAU,CACRq2B,WACE,MAAM,OACJgD,EADI,MAEJn/H,EAFI,KAGJnuB,EAHI,iBAIJuoJ,GACEpyJ,KAAKy+H,SAASmmC,WAIlB,GAAIxS,IAAqBpyJ,KAAKoyJ,iBAAkB,OAAO+E,EAEvD,MAAMmlC,EAAcjrK,SAASrxB,KAAKoyJ,iBAAkB,IAC9C3/I,GAAYgM,MAAM69K,GAExB,OAAO7pL,EACHulB,EAAQskK,EACRzyL,IAAS7J,KAAKoyJ,mBAItBlzB,UAEMl/H,KAAKm/H,OAAO3nH,eAAe,wBAC7B+kL,EAAAA,EAAAA,IAAU,qBAAsB,oBAAqBv8L,U,6GCpC3D,GAAei9H,EAAAA,EAAAA,GACbqN,EAAAA,EACArL,EAAAA,EACA9B,EAAAA,GACAz1H,OAAO,CACPmC,KAAM,YAENmO,MAAO,CACL4qH,SAAUrF,QACV1qG,MAAO,CACLlsB,KAAM6R,OACNujF,QAAS,WAEXwoC,KAAM,CACJ59H,KAAM42H,QACNxhC,SAAS,GAEX3b,QAAS,CACPz5E,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,KAEX33F,MAAO,CACL23F,SAAS,GAEXikE,OAAQ,CACNr5J,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,IAIb+hC,SAAU,CACR0+D,UACE,MAAMn6L,EAAOrC,KAAKk+H,mBAAmBl+H,KAAK6yB,MAAO,CAC/CmrG,YAAa,mBACb7oG,MAAO,CACLirD,QAASpgF,KAAKyjI,mBAIlB,OAAOzjI,KAAKo+H,eAAe,MAAO/7H,IAEpC+6F,UACE,MAAO,CACL,sBAAuBp9F,KAAK4iI,SAC5B,oBAAqB5iI,KAAKkkH,YACvBlkH,KAAKykI,eAGZhB,kBACE,OAAOrpH,OAAOpa,KAAKkkH,SAAWlkH,KAAKogF,QAAU,IAE/Cn4C,SACE,MAAO,CACL+3H,OAAQhgK,KAAKggK,UAKnB3gC,QAAS,CACPI,aACE,OAAOz/H,KAAKo+H,eAAe,MAAO,CAChCJ,YAAa,sBACZh+H,KAAKu/H,OAAOxjC,WAInB58F,OAAQ2B,GACN,MAAMwjG,EAAW,CAACtkG,KAAKw8L,SAIvB,OAFIx8L,KAAKkkH,UAAU5f,EAAS/6F,KAAKvJ,KAAKy/H,cAE/B3+H,EAAE,MAAO,CACdk9H,YAAa,YACbz2B,GAAIvnG,KAAK4qI,WACT3M,MAAOj+H,KAAKo9F,QACZjoE,MAAOn1B,KAAKioC,QACXq8D,MCvFP,I,mBC4BA,EAAem8B,EAAAA,EAAAA,SAAqD/4H,OAAO,CACzEmC,KAAM,cAENmO,MAAO,CACLsnJ,YAAa/hC,QACbk/D,aAAcjkL,OACdkkL,eAAgB,CAACtiL,OAAQ5B,SAG3BnW,OACE,MAAO,CACLs6L,eAAgB,EAChBz9B,QAAS,OAIb/9B,MAAO,CACLm+B,YAAal7J,GACNpE,KAAKkkH,WAEN9/G,EAAOpE,KAAK2+J,gBACX3+J,KAAK6+J,gBAIdlL,gBACE3zJ,KAAK2+J,iBAGPt/B,QAAS,CACPu9D,gBACE,MAAM19B,EAAU,IAAI29B,EAAS,CAC3BC,UAAW,CACTl6D,SAAU5iI,KAAK4iI,SACfx+H,OAAO,EACPyuB,MAAO7yB,KAAKy8L,aACZr8G,QAASpgF,KAAK08L,kBAIlBx9B,EAAQ69B,SAER,MAAM58L,EAASH,KAAK4iI,SAChB5iI,KAAK+uI,IAAIznG,WACT10B,SAAS85F,cAAc,cAE3BvsG,GAAUA,EAAO4jG,aAAam7D,EAAQnwB,IAAK5uI,EAAOw5L,YAElD35L,KAAKk/J,QAAUA,GAEjBL,aAGE,GAFA7+J,KAAK0+J,cAED1+J,KAAKs/J,YAgBT,OAdKt/J,KAAKk/J,SAASl/J,KAAK48L,gBAExB58L,KAAK28L,eAAiB9jL,uBAAsB,KACrC7Y,KAAKk/J,eAEgBp5J,IAAtB9F,KAAKm/J,aACPn/J,KAAKk/J,QAAQc,OAASxnJ,OAAOxY,KAAKm/J,aAAe,GACxCn/J,KAAK+uI,MACd/uI,KAAKk/J,QAAQc,QAASg9B,EAAAA,EAAAA,IAAUh9L,KAAK+uI,MAGvC/uI,KAAKk/J,QAAQ96J,OAAQ,OAGhB,GAGTu6J,cAAeC,GAAa,GACtB5+J,KAAKk/J,WACP+9B,EAAAA,EAAAA,IAAqBj9L,KAAKk/J,QAAQnwB,IAAK,iBAAiB,KAEnD/uI,KAAKk/J,SACLl/J,KAAKk/J,QAAQnwB,KACb/uI,KAAKk/J,QAAQnwB,IAAIznG,aAClBtnC,KAAKk/J,QAAQ96J,QACbpE,KAAKkkH,WAGPlkH,KAAKk/J,QAAQnwB,IAAIznG,WAAWsqE,YAAY5xG,KAAKk/J,QAAQnwB,KACrD/uI,KAAKk/J,QAAQg+B,WACbl9L,KAAKk/J,QAAU,SAMjBi+B,qBAAqBn9L,KAAK28L,gBAE1B38L,KAAKk/J,QAAQ96J,OAAQ,GAGvBw6J,GAAc5+J,KAAK4+J,cAErBw+B,eAAgBltL,GACd,GAAe,YAAXA,EAAEvJ,KAAoB,CACxB,GACE,CAAC,QAAS,WAAY,UAAU66B,SAAUtxB,EAAE/B,OAAmB+vF,UAE9DhuF,EAAE/B,OAAuBkvL,kBAC1B,OAEF,MAAMrR,EAAK,CAACzjD,EAAAA,GAAAA,GAAaA,EAAAA,GAAAA,QACnB0jD,EAAO,CAAC1jD,EAAAA,GAAAA,KAAeA,EAAAA,GAAAA,UAE7B,GAAIyjD,EAAGxqJ,SAAStxB,EAAEytG,SACfztG,EAAUi9C,QAAU,MAChB,KAAI8+H,EAAKzqJ,SAAStxB,EAAEytG,SAGzB,OAFCztG,EAAUi9C,OAAS,IAMpBj9C,EAAE/B,SAAWnO,KAAKk/J,SACR,YAAXhvJ,EAAEvJ,MAAsBuJ,EAAE/B,SAAWyE,SAAS6qE,MAC/Cz9E,KAAKs9L,UAAUptL,KAAIA,EAAE4uG,kBAEzBy+E,aAAc7nL,GACZ,IAAKA,GAAMA,EAAGs/G,WAAax3B,KAAK61B,aAAc,OAAO,EAErD,MAAMl+F,EAAQ/gB,OAAOuzB,iBAAiBjyB,GACtC,OAAS,CAAC,OAAQ,UAAU8rB,SAASrM,EAAM4nJ,YAA8B,WAAfrnK,EAAGwoF,UAAyBxoF,EAAGk7J,aAAel7J,EAAG+zB,cACzG,CAAC,OAAQ,UAAUjI,SAASrM,EAAMqoK,YAAgB9nL,EAAGiqK,YAAcjqK,EAAG8zB,aAE1Ei0J,aAAc/nL,EAAaxF,GACzB,GAAIwF,EAAG4tG,aAAa,YAAa,OAAO,EAExC,MAAMj0E,EAAMn/B,EAAE8sG,UAAY9sG,EAAEg9C,OAAS,IAAM,IACrClnB,EAAgB,MAARqJ,EAAcn/B,EAAEi9C,OAASj9C,EAAEg9C,QAAUh9C,EAAEi9C,OAErD,IAAIuwI,EACAC,EACQ,MAARtuJ,GACFquJ,EAAkC,IAAjBhoL,EAAGszF,UACpB20F,EAAejoL,EAAGszF,UAAYtzF,EAAG+zB,eAAiB/zB,EAAGk7J,eAErD8sB,EAAmC,IAAlBhoL,EAAGimK,WACpBgiB,EAAejoL,EAAGimK,WAAajmK,EAAG8zB,cAAgB9zB,EAAGiqK,aAGvD,MAAMie,EAAc53J,EAAQ,EACtB63J,EAAgB73J,EAAQ,EAE9B,QAAK03J,IAAkBE,OAClBD,IAAgBE,OAChBH,IAAkBC,IACd39L,KAAKy9L,aAAa/nL,EAAG4xB,WAAuBp3B,KAKvD4tL,SAAUpoL,EAAavV,GACrB,OAAIuV,IAAOvV,GAEO,OAAPuV,GAAeA,IAAO9C,SAAS6qE,MAGjCz9E,KAAK89L,SAASpoL,EAAG4xB,WAAuBnnC,IAGnDm9L,UAAWptL,GACT,MAAMmC,GAAOupK,EAAAA,EAAAA,IAAa1rK,GAE1B,GAAe,YAAXA,EAAEvJ,MAAsB0L,EAAK,KAAOO,SAAS6qE,KAAM,CACrD,MAAMsgH,EAAS/9L,KAAKqnI,MAAM02D,OAEpBt6E,EAAWrvG,OAAOi1F,eAAgB20F,WACxC,QAAID,GAAU/9L,KAAKu9L,aAAaQ,IAAW/9L,KAAK89L,SAASr6E,EAAUs6E,MACzD/9L,KAAKy9L,aAAaM,EAAQ7tL,GAKtC,IAAK,IAAI1G,EAAQ,EAAGA,EAAQ6I,EAAKrJ,OAAQQ,IAAS,CAChD,MAAMkM,EAAKrD,EAAK7I,GAEhB,GAAIkM,IAAO9C,SAAU,OAAO,EAC5B,GAAI8C,IAAO9C,SAASysJ,gBAAiB,OAAO,EAC5C,GAAI3pJ,IAAO1V,KAAKqnI,MAAMxvH,QAAS,OAAO,EAEtC,GAAI7X,KAAKu9L,aAAa7nL,GAAgB,OAAQ1V,KAAKy9L,aAAa/nL,EAAexF,GAGjF,OAAO,GAETwuJ,aACM1+J,KAAKy+H,SAASmmC,WAAWie,UAC3BjwK,SAASysJ,gBAAiB54D,UAAUlmG,IAAI,uBAExC09L,EAAAA,EAAAA,IAAwB7pL,OAAQ,QAASpU,KAAKo9L,eAAuC,CAAE1yJ,SAAS,IAChGt2B,OAAO7N,iBAAiB,UAAWvG,KAAKo9L,kBAG5Cx+B,aACEhsJ,SAASysJ,gBAAiB54D,UAAUzzF,OAAO,qBAC3CoB,OAAOvR,oBAAoB,QAAS7C,KAAKo9L,gBACzChpL,OAAOvR,oBAAoB,UAAW7C,KAAKo9L,qB,yFCrOjD,MAAMc,EAAiB,CACrBt7D,SAAUrF,QACV3iG,OAAQ2iG,QACRuF,MAAOvF,QACP3jH,KAAM2jH,QACN1jH,MAAO0jH,QACP5iG,IAAK4iG,SAQD,SAAU9iC,EAASgpB,EAAkB,IACzC,OAAOgd,EAAAA,EAAAA,OAAW,CAChB52H,KAAM,eACNmO,MAAOyrG,EAASz6G,QAASm1L,EAAAA,EAAAA,IAAmBD,EAAgBz6E,GAAYy6E,IAI5E,OAAezjG,K,+CCjBT,SAAUA,EACdjsF,EAAO,QACPgjC,EAAQ,UAER,OAAOivF,EAAAA,EAAAA,OAAW,CAChB52H,KAAM,YAEN6hJ,MAAO,CACLl9I,KAAAA,EACAgjC,MAAAA,GAGFx5B,MAAO,CACL,CAACxJ,GAAO,CACNw8H,UAAU,IAId3oI,OACE,MAAO,CACLspK,kBAAmB3rK,KAAKwO,KAI5BsvH,SAAU,CACRmJ,cAAe,CACbvwG,MACE,OAAO12B,KAAK2rK,mBAEd13I,IAAKhuB,GACCA,IAAQjG,KAAK2rK,oBAEjB3rK,KAAK2rK,kBAAoB1lK,EAEzBjG,KAAKumI,MAAM/0F,EAAOvrC,OAKxBk7H,MAAO,CACL,CAAC3yH,GAAOvI,GACNjG,KAAK2rK,kBAAoB1lK,MAOjC,MAAMwlK,EAAYhxE,IAElB,U,gHCtDA,SAAS2jG,EAAiB35F,EAAetkG,GACvC,MAAO,KAAMkhI,EAAAA,EAAAA,IAAY,OAAO58B,qCAAyCtkG,KAUrE,SAAUqsK,EAEbj5E,EAAckR,EAAgBtkG,GAC/B,MAAMk+L,EAAc55F,GAAStkG,EAAS,CACpCokE,SAAU65H,EAAgB35F,EAAOtkG,GACjCwkE,WAAYy5H,EAAgB35F,EAAOtkG,IACjC,KAEJ,OAAOsgI,EAAAA,EAAAA,OAAW,CAChB52H,KAAM,qBAEN2iK,OAAQ,CACN,CAACj5E,GAAY,CACXwI,QAASsiG,MAMX,SAAUt8D,EAASxuC,EAAmBI,GAAO,GACjD,OAAO8sC,EAAAA,EAAAA,OAAW,CAChB52H,KAAM,sBAENk4H,UACE,MAAO,CACL,CAACxuC,GAAYI,EAAO3zF,KAAO,CACzBukE,SAAWvkE,KAAaukE,SACxBI,WAAa3kE,KAAa2kE,kB,8CCvCpC,OAAe87D,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,aAENmO,MAAO,CACLsmL,YAAa,MAGfj8L,KAAM,KAAM,CACV6hH,UAAU,EACVq6E,cAAe,OAGjBp9D,MAAO,CACLjd,SAAUj+G,GACJA,EACFjG,KAAKu+L,cAAgBv+L,KAAKs+L,YAE1Bt+L,KAAKumI,MAAM,sBAAuBvmI,KAAKu+L,iBAK7Cl/D,QAAS,CACPjnG,KAAMh0B,GACJpE,KAAKu+L,cAAgBn6L,EACrBY,YAAW,KACThF,KAAKkkH,UAAW,U,+CC1BxB,OAAeuc,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,YAENmO,MAAO,CACL+G,QAAS,CAACw+G,QAAS/kH,QACnB2yH,KAAM5N,SAGRO,SAAU,CACR2M,iBACE,MAAM+zD,EAAY,GACZz/K,EAAkC,kBAAjB/e,KAAK+e,QACxBvG,OAAOxY,KAAK+e,UACK,IAAjB/e,KAAK+e,QAET,GAAI/e,KAAKmrI,KACPqzD,EAAUj1L,KAAK,kBACV,GAAuB,kBAAZwV,EAAsB,CACtC,MAAMqV,EAASrV,EAAQrK,MAAM,KAE7B,IAAK,MAAMtQ,KAASgwB,EAClBoqK,EAAUj1L,KAAK,WAAWnF,UAEnB2a,GACTy/K,EAAUj1L,KAAK,WAGjB,OAAOi1L,EAAUx1L,OAAS,EAAI,CAC5B,CAACw1L,EAAUxsL,KAAK,OAAO,GACrB,Q,mECxBV,OAAeyuH,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,WAENi2H,WAAY,CACVktC,OAAAA,EAAAA,GAGFh1J,MAAO,CACLw1H,YAAah1H,OACb7C,OAAQ4nH,QACRvoF,SAAUuoF,QACVkhE,MAAO,CACL93L,KAAM42H,QACNxhC,aAASj2F,GAEX44L,UAAWnhE,QACXohE,iBAAkBnmL,OAClB0+G,KAAMqG,QACN5pH,KAAM,CAAC6E,OAAQhM,QACfolB,GAAI,CAACpZ,OAAQhM,QACboyL,KAAMrhE,QACN7rH,QAAS6rH,QACToR,OAAQ,CACNhoI,KAAM,CAAC42H,QAAS/wH,QAChBuvF,QAAS,MAEXjL,IAAKt4E,OACLrK,OAAQqK,QAGVnW,KAAM,KAAM,CACV6hH,UAAU,EACV6pB,WAAY,KAGdjQ,SAAU,CACR1gC,UACE,MAAMA,EAAmC,GAEzC,OAAIp9F,KAAK4xB,KAEL5xB,KAAKwtI,cAAapwC,EAAQp9F,KAAKwtI,aAAextI,KAAKkkH,UACnDlkH,KAAK+tI,aAAY3wC,EAAQp9F,KAAK+tI,YAAc/tI,KAAKkkH,WAHjC9mB,GAOtBoxC,iBAAc,MACZ,gBAAOxuI,KAAK2uI,QAAZ,GAAwB3uI,KAAKg1C,UAAYh1C,KAAK8qJ,aAEhDA,cACE,OAAI9qJ,KAAKg1C,UAEFuoF,QACLv9H,KAAK6tJ,QACL7tJ,KAAK4qI,WAAWjhB,OAChB3pH,KAAK4qI,WAAW,WAChB5qI,KAAKm/H,OAAO6rB,WAGhB6C,SACE,OAAO7tJ,KAAK4xB,IAAM5xB,KAAK2T,MAAQ3T,KAAKk3H,MAEtCjvF,OAAQ,KAAM,KAGhBk5F,MAAO,CACLwsC,OAAQ,iBAGVvsC,UACEphI,KAAKiuK,iBAGP5uC,QAAS,CACP8P,oBACE,IACIr+C,EADA2tG,EAAQz+L,KAAKy+L,MAGjB,MAAMp8L,EAAkB,CACtB64G,MAAO,CACL8vC,SAAU,aAAchrJ,KAAKm/H,OAASn/H,KAAKm/H,OAAO6rB,cAAWllJ,GAE/Dm4H,MAAOj+H,KAAKo9F,QACZjoE,MAAOn1B,KAAKioC,OACZjwB,MAAO,GACP8nH,WAAY,CAAC,CACXj2H,KAAM,SACNzF,MAAOpE,KAAKwuI,iBAEd,CAACxuI,KAAK4xB,GAAK,WAAa,MAAO,IAC1B5xB,KAAK4qI,cACJ,UAAW5qI,KAAO,CAAE2pH,MAAQ3pH,KAAa2pH,YAAU7jH,GAEzD0+F,IAAK,QAQP,GAL0B,qBAAfxkG,KAAKy+L,QACdA,EAAoB,MAAZz+L,KAAK4xB,IACV5xB,KAAK4xB,KAAOplB,OAAOxM,KAAK4xB,KAAwB,MAAjB5xB,KAAK4xB,GAAGvf,MAGxCrS,KAAK4xB,GAAI,CAGX,IAAI47G,EAAcxtI,KAAKwtI,YACnBmxD,EAAmB3+L,KAAK2+L,kBAAoBnxD,EAE5CxtI,KAAK+tI,aACPP,EAAc,GAAGA,KAAextI,KAAK+tI,aAAa99H,OAClD0uL,EAAmB,GAAGA,KAAoB3+L,KAAK+tI,aAAa99H,QAG9D6gF,EAAM9wF,KAAK4+L,KAAO,YAAc,cAChCpyL,OAAOQ,OAAO3K,EAAK2V,MAAO,CACxB4Z,GAAI5xB,KAAK4xB,GACT6sK,MAAAA,EACAC,UAAW1+L,KAAK0+L,UAChBlxD,YAAAA,EACAmxD,iBAAAA,EACAhpL,OAAQ3V,KAAK2V,OACbjE,QAAS1R,KAAK0R,eAGhBo/E,GAAO9wF,KAAK2T,KAAQ,IAAQ3T,KAAK8wF,MAAO,MAE5B,MAARA,GAAe9wF,KAAK2T,OAAMtR,EAAK64G,MAAOvnG,KAAO3T,KAAK2T,MAKxD,OAFI3T,KAAKmO,SAAQ9L,EAAK64G,MAAO/sG,OAASnO,KAAKmO,QAEpC,CAAE2iF,IAAAA,EAAKzuF,KAAAA,IAEhB4rK,gBACE,IAAKjuK,KAAK4xB,KAAO5xB,KAAKqnI,MAAMnQ,OAASl3H,KAAK2tK,OAAQ,OAClD,MAAMngC,EAAc,GAAGxtI,KAAKwtI,aAAe,MAAMxtI,KAAK+tI,YAAc,KAAK99H,OACnE0uL,EAAmB,GAAG3+L,KAAK2+L,kBAAoB,MAAM3+L,KAAK+tI,YAAc,KAAK99H,QAAUu9H,EAEvFn7H,EAAO,sBAAwBrS,KAAKy+L,MAAQE,EAAmBnxD,GAErExtI,KAAKwhI,WAAU,OAER2H,EAAAA,EAAAA,IAAqBnpI,KAAKqnI,MAAMnQ,KAAM7kH,KAAUrS,KAAKkkH,UACxDlkH,KAAK0nG,aAIXA,SACE1nG,KAAKkkH,UAAYlkH,KAAKkkH,c,+CCzJ5B,OAAeuc,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,WAENmO,MAAO,CACL4uJ,MAAOrpC,QACPiB,MAAOjB,QACPspC,OAAQtpC,QACRopC,OAAQppC,SAGVO,SAAU,CACRsoC,SACE,OAAO7oC,SACJv9H,KAAK2mK,SACL3mK,KAAKw+H,QACLx+H,KAAK4mK,QACL5mK,KAAK6mK,SAGVx4B,kBACE,MAAO,CACL,kBAAmBruI,KAAK2mK,OACxB,gBAAiB3mK,KAAKw+H,MACtB,kBAAmBx+H,KAAKomK,OACxB,gBAAiBpmK,KAAK4mK,MACtB,kBAAmB5mK,KAAK6mK,a,+CCjBhC,OAAepmC,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,eAENxH,KAAM,KAAM,CACVsgI,UAAU,IAGZvB,UAIEhtH,OAAOyE,uBAAsB,KAC3B7Y,KAAK+uI,IAAIn7H,aAAa,cAAe,QACrC5T,KAAK2iI,UAAW,S,yDCZtB,OAAelC,EAAAA,EAAAA,SAAsB/4H,OAAO,CAC1CmC,KAAM,YAENxH,OACE,MAAO,CACLw8L,aAAc,KACdC,aAAc,KACdzgC,eAAgB,EAChBn6C,UAAU,IAGd4Z,SAAU,CACRqhC,eACE,GAAsB,qBAAX/qJ,OAAwB,OAAO,EAE1C,MAAMyD,EAAU7X,KAAK6+L,cAAgB7+L,KAAKqnI,MAAMxvH,QAG1CrO,EAASxJ,KAAKkkH,SAEhBlkH,KAAKo/J,aAAap/J,KAAK8+L,cAAgB,CAACjnL,IAAY,GADpDmlL,EAAAA,EAAAA,IAAUnlL,GAGd,OAAa,MAATrO,EAAsBA,EAInB6nB,SAAS7nB,KAGpB61H,QAAS,CACP+/B,aAAcpnB,EAAqB,IACjC,MAAMn4G,EAAO7/B,KAAK+uI,IAGZgwD,EAAM,CAAC/+L,KAAKq+J,gBAAgB2+B,EAAAA,EAAAA,IAAUn9J,IAItC+wC,EAAiB,IAClBh+D,SAAS+3K,uBAAuB,8BAChC/3K,SAAS+3K,uBAAuB,8BAIrC,IAAK,IAAInhL,EAAQ,EAAGA,EAAQonE,EAAe5nE,OAAQQ,IAC5CwuI,EAAQx2G,SAASovC,EAAepnE,KACnCu1L,EAAIx1L,MAAKyzL,EAAAA,EAAAA,IAAUpsH,EAAepnE,KAItC,OAAOyF,KAAKmQ,OAAO2/K,Q,+ECnDzB,MAAM9/D,EAAYwB,EAAAA,EAAAA,SAAsB/4H,OAAO,CAC7CmC,KAAM,YAENk4H,UACE,MAAO,CACL76B,MAAOlnG,KAAKg/L,mBAIhBxyB,OAAQ,CACNtlE,MAAO,CACLnL,QAAS,CACPijC,QAAQ,KAKdhnH,MAAO,CACLusH,KAAM,CACJ59H,KAAM42H,QACNxhC,QAAS,MAEXyoC,MAAO,CACL79H,KAAM42H,QACNxhC,QAAS,OAIb15F,OACE,MAAO,CACL28L,iBAAkB,CAChBhgE,QAAQ,KAKdlB,SAAU,CACRkuB,YACE,OAAOhsJ,KAAKy+H,SAASv3B,MAAMq9B,OAAQ,GAErCvF,SACE,OAAkB,IAAdh/H,KAAKukI,OAGiB,IAAfvkI,KAAKwkI,OAKPxkI,KAAKknG,MAAM83B,QAGtByF,eACE,MAAO,CACL,cAAezkI,KAAKg/H,OACpB,gBAAiBh/H,KAAKg/H,SAI1B4/C,aACE,OAAkB,IAAd5+K,KAAKukI,OAGiB,IAAfvkI,KAAKwkI,OAKPxkI,KAAKgsJ,WAGhBulB,mBACE,MAAO,CACL,cAAevxK,KAAK4+K,WACpB,gBAAiB5+K,KAAK4+K,cAK5Bz9C,MAAO,CACLnC,OAAQ,CACNnyE,QAAS0rI,EAAQ9wD,GACX8wD,IAAW9wD,IACbznI,KAAKg/L,iBAAiBhgE,OAASh/H,KAAKg/H,SAGxCu0B,WAAW,MAOX,SAAU+Y,EAAwBvsK,GACtC,MAAMihK,EAAK,IACNjhK,EAAQiY,SACRjY,EAAQk/L,YAEPjgE,EAASC,EAAUt/H,QAAQm+H,SAASkB,OAAO3+H,KAAK2gK,GACtD,OAAO/hC,EAAUt/H,QAAQm+H,SAAS2G,aAAapkI,KAAK,CAAE2+H,OAAAA,IARxD,U,+EChGM,SAAUvkC,EAASjsF,EAAO,QAASgjC,EAAQ,SAC/C,OAAOivF,EAAAA,EAAAA,OAAW,CAChB52H,KAAM,aAEN6hJ,MAAO,CAAEl9I,KAAAA,EAAMgjC,MAAAA,GAEfx5B,MAAO,CACL,CAACxJ,GAAO,CAAEw8H,UAAU,IAGtB3oI,OACE,MAAO,CACL6hH,WAAYlkH,KAAKwO,KAIrB2yH,MAAO,CACL,CAAC3yH,GAAOvI,GACNjG,KAAKkkH,WAAaj+G,GAEpBi+G,SAAUj+G,KACNA,IAAQjG,KAAKwO,IAASxO,KAAKumI,MAAM/0F,EAAOvrC,OAOlD,MAAMk3H,EAAa1iC,IAEnB,U,+CCjCA,OAAegmC,EAAAA,EAAAA,OAAW,CACxB52H,KAAM,iBAENmO,MAAO,CACL4d,KAAMpd,OACNynH,OAAQznH,OACRslC,WAAYtlC,W,kGCMhB,MAAMkpH,GAAazE,EAAAA,EAAAA,GACjBqN,EAAAA,GACAg3B,EAAAA,EAAAA,GAA+B,QAC/BriC,EAAAA,GAIF,OAAeyC,EAAWh6H,OAAO,CAC/BmC,KAAM,cAENmO,MAAO,CACLg9B,SAAUuoF,QACV7xH,MAAO6xH,QACP2hE,WAAY,CACVv4L,KAAM,CAACyT,OAAQ5B,QACfujF,QAAS,GAEXojG,cAAe,CACbx4L,KAAM,CAAC6R,OAAQpN,OACf2wF,QAAS,IAAM,IAEjBqjG,SAAU,CACRz4L,KAAM,CAAC6R,OAAQpN,OACf2wF,QAAS,IAAM,IAEjB4kE,SAAUpjC,QACV47C,MAAO,CACLxyK,KAAMyE,MACN2wF,QAAS,IAAM,IAEjBg0F,QAASxyD,QACT8hE,gBAAiB,CACf14L,KAAM,CAAC6R,OAAQpN,OACf2wF,QAAS,IAAM,IAEjBujG,eAAgB/hE,QAChBn5H,MAAO,CAAE4mI,UAAU,IAGrB3oI,OACE,MAAO,CACLk9L,YAAa,GACbzzC,UAAU,EACV0zC,YAAY,EACZC,UAAU,EACV54D,WAAW,EACX64D,aAAa,EACb3zC,UAAW/rJ,KAAKoE,MAChBuuB,OAAO,IAIXmrG,SAAU,CACRK,gBACE,IAAIn+H,KAAKmsJ,WACT,OAAInsJ,KAAK6yB,MAAc7yB,KAAK6yB,MAMxB7yB,KAAKg/H,SAAWh/H,KAAKgsJ,UAAkB,QAC/B,WAEdiB,WACE,OACEjtJ,KAAK2/L,sBAAsB32L,OAAS,GACpChJ,KAAKu/L,YAAYv2L,OAAS,GAC1BhJ,KAAK0L,OAKTyhJ,aACE,OACEntJ,KAAK4/L,wBAAwB52L,OAAS,GACtChJ,KAAK+vL,SAGT8P,gBACE,OAAO7/L,KAAK2/L,sBAAsB32L,OAAS,GAAKhJ,KAAK0L,OAEvD++J,cACE,OAAOzqK,KAAK8/L,iBAAiB92L,OAAS,GAExCohK,WACE,OAAIpqK,KAAKmsJ,aAGPnsJ,KAAKmtJ,YACJntJ,KAAKktJ,gBAAkBltJ,KAAKitJ,WAGjC0yC,wBACE,OAAO3/L,KAAK+/L,oBAAoB//L,KAAKm/L,gBAEvCa,mBACE,OAAOhgM,KAAK+/L,oBAAoB//L,KAAKo/L,WAEvCQ,0BACE,OAAO5/L,KAAK+/L,oBAAoB//L,KAAKq/L,kBAEvCp4D,cAAe,CACbvwG,MACE,OAAO12B,KAAK+rJ,WAEd93H,IAAKhuB,GACHjG,KAAK+rJ,UAAY9lJ,EAEjBjG,KAAKumI,MAAM,QAAStgI,KAGxBkmJ,aACE,OAAOnsJ,KAAKg1C,YACRh1C,KAAKigM,MACPjgM,KAAKigM,KAAKjrJ,UAGd0zF,gBACE,OAAQ1oI,KAAKmsJ,aAAensJ,KAAK8gK,YAEnCA,aACE,OAAO9gK,KAAK2gK,YACR3gK,KAAKigM,MACPjgM,KAAKigM,KAAKt/B,UAGdzT,iBACE,QAAIltJ,KAAK6/L,gBACL7/L,KAAK0/L,cAEF1/L,KAAKs/L,eACRt/L,KAAKw/L,aAAex/L,KAAK6mI,UACxB7mI,KAAKy/L,UAAYz/L,KAAKw/L,aAE7B70B,cACE,OAAO3qK,KAAK8/L,iBAAiBxxL,MAAM,EAAG8L,OAAOpa,KAAKk/L,cAEpD9yC,kBACE,IAAIpsJ,KAAKmsJ,WACT,OAAInsJ,KAAKitJ,UAAYjtJ,KAAKktJ,eAAuB,QAC7CltJ,KAAKmtJ,WAAmB,UACxBntJ,KAAK8rJ,SAAiB9rJ,KAAKm+H,mBAA/B,GAGF2hE,mBACE,OAAI9/L,KAAK2/L,sBAAsB32L,OAAS,EAC/BhJ,KAAK2/L,sBACH3/L,KAAKq/L,iBAAmBr/L,KAAKq/L,gBAAgBr2L,OAAS,EACxDhJ,KAAK4/L,wBACH5/L,KAAKo/L,UAAYp/L,KAAKo/L,SAASp2L,OAAS,EAC1ChJ,KAAKggM,iBACHhgM,KAAKktJ,eACPltJ,KAAKu/L,YACA,KAIlBp+D,MAAO,CACLg4C,MAAO,CACLtsH,QAAS0rI,EAAQ9wD,IACX93B,EAAAA,EAAAA,IAAU4oF,EAAQ9wD,IACtBznI,KAAKw7I,YAEPz5C,MAAM,GAERklC,gBAGEjnI,KAAKy/L,UAAW,EAChBz/L,KAAKs/L,gBAAkBt/L,KAAKwhI,UAAUxhI,KAAKw7I,WAE7C3U,UAAW5gI,GAINA,GACAjG,KAAKmsJ,aAENnsJ,KAAKw/L,YAAa,EAClBx/L,KAAKs/L,gBAAkBt/L,KAAKwhI,UAAUxhI,KAAKw7I,YAG/CkkD,cACE16L,YAAW,KACThF,KAAKy/L,UAAW,EAChBz/L,KAAKw/L,YAAa,EAClBx/L,KAAK0/L,aAAc,EACnB1/L,KAAKw7I,aACJ,IAELyR,SAAUhnJ,GACJjG,KAAKktJ,gBACPltJ,KAAKumI,MAAM,eAAgBtgI,IAG/B7B,MAAO6B,GACLjG,KAAK+rJ,UAAY9lJ,IAIrB64J,cACE9+J,KAAKw7I,YAGPtc,UACEl/H,KAAKigM,MAAQjgM,KAAKigM,KAAK17H,SAASvkE,OAGlC2zJ,gBACE3zJ,KAAKigM,MAAQjgM,KAAKigM,KAAKt7H,WAAW3kE,OAGpCq/H,QAAS,CACP0gE,oBAAqBX,GACnB,OAAKA,EACIh0L,MAAMiD,QAAQ+wL,GAAkBA,EAC7B,CAACA,GAFS,IAKxB1kJ,QACE16C,KAAK0/L,aAAc,EACnB1/L,KAAKinI,cAAgB77H,MAAMiD,QAAQrO,KAAKinI,eACpC,GACA,MAGNi5D,kBACElgM,KAAK0/L,aAAc,GAGrBlkD,SAAU92C,GAAQ,EAAOtgG,GACvB,MAAMm7L,EAAc,GACpBn7L,EAAQA,GAASpE,KAAKinI,cAElBviC,IAAO1kG,KAAKy/L,SAAWz/L,KAAKw/L,YAAa,GAE7C,IAAK,IAAIh2L,EAAQ,EAAGA,EAAQxJ,KAAKm5K,MAAMnwK,OAAQQ,IAAS,CACtD,MAAM22L,EAAOngM,KAAKm5K,MAAM3vK,GAClBmpB,EAAwB,oBAATwtK,EAAsBA,EAAK/7L,GAAS+7L,GAE3C,IAAVxtK,GAAoC,kBAAVA,EAC5B4sK,EAAYh2L,KAAKopB,GAAS,IACA,mBAAVA,IAChB+wI,EAAAA,EAAAA,IAAa,6DAA6D/wI,aAAkB3yB,MAOhG,OAHAA,KAAKu/L,YAAcA,EACnBv/L,KAAK2yB,MAA+B,IAAvB4sK,EAAYv2L,OAElBhJ,KAAK2yB,W,6jBCtQX,MAAMlR,EAAUL,GAAcA,EAExBM,EAAcN,GAAcA,GAAK,EAEjCO,EAAeP,GAAcA,GAAK,EAAIA,GAEtCQ,EAAiBR,GAAeA,EAAI,GAAM,EAAIA,GAAK,GAAU,EAAI,EAAIA,GAAKA,EAAlB,EAExDS,EAAeT,GAAcA,GAAK,EAElCU,EAAgBV,KAAgBA,GAAK,EAAI,EAEzCW,EAAkBX,GAAcA,EAAI,GAAM,EAAIA,GAAK,GAAKA,EAAI,IAAM,EAAIA,EAAI,IAAM,EAAIA,EAAI,GAAK,EAE7FY,EAAeZ,GAAcA,GAAK,EAElCa,EAAgBb,GAAc,KAAMA,GAAK,EAEzCc,EAAkBd,GAAeA,EAAI,GAAM,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,EAAI,IAAMA,EAAIA,EAAIA,EAAIA,EAErFe,EAAef,GAAcA,GAAK,EAElCgB,EAAgBhB,GAAc,IAAMA,GAAK,EAEzCiB,EAAkBjB,GAAcA,EAAI,GAAM,GAAKA,GAAK,EAAI,EAAI,KAAOA,GAAK,ECxB/E,SAAUg/K,EAAWjyL,GACzB,GAAsB,kBAAXA,EACT,OAAOA,EAGT,IAAIuH,EAAKykF,EAAEhsF,GACX,IAAKuH,EACH,KAAwB,kBAAXvH,EACT,IAAIpC,MAAM,mBAAmBoC,iBAC7B,IAAI3F,UAAU,uEAAuE7B,EAAKwH,eAGhG,IAAIkyL,EAAc,EAClB,MAAO3qL,EACL2qL,GAAe3qL,EAAG8/G,UAClB9/G,EAAKA,EAAGsmL,aAGV,OAAOqE,EAGH,SAAUC,EAAcl3J,GAC5B,MAAM1zB,EAAKykF,EAAE/wD,GAEb,GAAI1zB,EAAI,OAAOA,EAEf,KAA2B,kBAAd0zB,EACT,IAAIr9B,MAAM,sBAAsBq9B,iBAChC,IAAI5gC,UAAU,mEAAmE7B,EAAKyiC,eAG5F,SAASziC,EAAM+O,GACb,OAAa,MAANA,EAAaA,EAAKA,EAAGsB,YAAYnN,KAG1C,SAASswF,EAAGzkF,GACV,MAAkB,kBAAPA,EACF9C,SAAS85F,cAA2Bh3F,GAClCA,GAAMA,EAAG6qL,OACV7qL,EAAWq5H,IACVr5H,aAAcuoF,YAChBvoF,EAEA,KC/BG,SAAU06J,EACtB59H,EACAguJ,EAAyB,IAEzB,MAAMC,EAAwB,CAC5Br3J,UAAYx2B,SAAS8tL,kBAA2C9tL,SAAS6qE,MAAQ7qE,SAASysJ,gBAC1F7uH,SAAU,IACVwU,OAAQ,EACR1S,OAAQ,iBACR+9H,WAAW,KACRmwB,GAECp3J,EAAYk3J,EAAaG,EAASr3J,WAGxC,GAAIq3J,EAASpwB,WAAaD,EAAK2c,UAAUxpD,YAAa,CACpD,MAAMo9D,EAAWv3J,EAAUq9D,UAAUtyC,SAAS,uBACxCysI,EAAYx3J,EAAUq9D,UAAUtyC,SAAS,iCACzC,IAAEmjB,EAAF,IAAO38C,GAAQy1I,EAAK2c,UAAUxpD,YAEpCk9D,EAASz7I,QAAUsyB,EAEdqpH,IAAYC,IAAWH,EAASz7I,QAAUrqB,GAGjD,MAAMkmK,EAAYxoB,YAAYplK,MAE9B,IAAI6tL,EAEFA,EADqB,kBAAZtuJ,EACQ4tJ,EAAU5tJ,GAAWiuJ,EAASz7I,OAE9Bo7I,EAAU5tJ,GAAW4tJ,EAAUh3J,GAAaq3J,EAASz7I,OAGxE,MAAM+7I,EAAgB33J,EAAU4/D,UAChC,GAAI83F,IAAmBC,EAAe,OAAO/+L,QAAQC,QAAQ6+L,GAE7D,MAAME,EAAkC,oBAApBP,EAASnuJ,OACzBmuJ,EAASnuJ,OACT2uJ,EAAeR,EAASnuJ,QAE5B,IAAK0uJ,EAAM,MAAM,IAAIx4L,UAAU,oBAAoBi4L,EAASnuJ,sBAI5D,OAAO,IAAItwC,SAAQC,GAAW4W,uBAAsB,SAASupD,EAAM8+H,GACjE,MAAMC,EAAcD,EAAcL,EAC5BvvJ,EAAWriC,KAAK4P,IAAI4hL,EAASjwJ,SAAWvhC,KAAKkQ,IAAIgiL,EAAcV,EAASjwJ,SAAU,GAAK,GAE7FpH,EAAU4/D,UAAY/5F,KAAKC,MAAM6xL,GAAiBD,EAAiBC,GAAiBC,EAAK1vJ,IAEzF,MAAM7H,EAAeL,IAAcx2B,SAAS6qE,KAAO7qE,SAASysJ,gBAAgB51H,aAAeL,EAAUK,aAC/F23J,EAAc33J,EAAeL,EAAU4/D,WAAa5/D,EAAUwnI,aACpE,GACe,IAAbt/H,GAECwvJ,EAAiB13J,EAAU4/D,WAAao4F,EAEzC,OAAOn/L,EAAQ6+L,GAGjBjoL,sBAAsBupD,QAI1BguG,EAAK2c,UAAY,GACjB3c,EAAK9zG,KAAO,OAEN,MAAO+kI,UAAanR,EAAAA,EAGxBl5K,cAGE,OAFAgsC,QAEOotH,GALKixB,EAAAA,SAAmB,Q,kEC9E7B,MAAOnR,EAAbl5K,cACE,KAAA+1K,UAAY,GAEZzwH,KAAMpoC,EAAWh0B,O,iKCYb,SAAU04L,EAAY/lK,GAC1B,QAASA,KAAWA,EAAMhgB,MAAM,8BAG5B,SAAU6hL,EAAY7hK,GAC1B,IAAIrN,EAEJ,GAAqB,kBAAVqN,EACTrN,EAAMqN,MACD,IAAqB,kBAAVA,EAUhB,MAAM,IAAIrqB,UAAU,mDAA4D,MAATqqB,EAAgBA,EAAQA,EAAM7b,YAAYnN,gBAV7E,CACpC,IAAIF,EAAiB,MAAbkpB,EAAM,GAAaA,EAAM05F,UAAU,GAAK15F,EAC/B,IAAblpB,EAAEX,SACJW,EAAIA,EAAE+K,MAAM,IAAI+G,KAAI6lL,GAAQA,EAAOA,IAAMtvL,KAAK,KAE/B,IAAbrI,EAAEX,SACJq4H,EAAAA,EAAAA,IAAY,IAAIxuG,+BAElBrN,EAAM6L,SAAS1nB,EAAG,KAapB,OARI6b,EAAM,IACR67G,EAAAA,EAAAA,IAAY,+BAA+BxuG,MAC3CrN,EAAM,IACGA,EAAM,UAAY/G,MAAM+G,OACjC67G,EAAAA,EAAAA,IAAY,IAAIxuG,+BAChBrN,EAAM,UAGDA,EAyBH,SAAUmvK,EAAU9hK,GACxB,IAAI0uK,EAAmB1uK,EAAMpjB,SAAS,IAItC,OAFI8xL,EAASv4L,OAAS,IAAGu4L,EAAW,IAAIC,OAAO,EAAID,EAASv4L,QAAUu4L,GAE/D,IAAMA,EAGT,SAAU/M,EAAY3hK,GAC1B,OAAO8hK,EAASD,EAAW7hK,M,gCCrF7B,MAAM4uK,EAAMj1L,OAAOoxC,OAAO,CACxB/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLC,EAAO/1L,OAAOoxC,OAAO,CACzB/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLE,EAASh2L,OAAOoxC,OAAO,CAC3B/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLG,EAAaj2L,OAAOoxC,OAAO,CAC/B/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLI,EAASl2L,OAAOoxC,OAAO,CAC3B/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLK,EAAOn2L,OAAOoxC,OAAO,CACzB/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLM,EAAYp2L,OAAOoxC,OAAO,CAC9B/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLv5K,EAAOvc,OAAOoxC,OAAO,CACzB/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLO,EAAOr2L,OAAOoxC,OAAO,CACzB/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLQ,EAAQt2L,OAAOoxC,OAAO,CAC1B/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLS,EAAav2L,OAAOoxC,OAAO,CAC/B/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLz1K,EAAOrgB,OAAOoxC,OAAO,CACzB/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLU,EAASx2L,OAAOoxC,OAAO,CAC3B/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLW,EAAQz2L,OAAOoxC,OAAO,CAC1B/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLY,EAAS12L,OAAOoxC,OAAO,CAC3B/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLa,EAAa32L,OAAOoxC,OAAO,CAC/B/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLc,EAAQ52L,OAAOoxC,OAAO,CAC1B/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLmB,EAAW72L,OAAOoxC,OAAO,CAC7B/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLoB,EAAO92L,OAAOoxC,OAAO,CACzB/d,KAAM,UACN6hK,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,YAGLqB,EAAS/2L,OAAOoxC,OAAO,CAC3B11B,MAAO,UACPs7K,MAAO,UACPhyK,YAAa,gBAGf,OAAehlB,OAAOoxC,OAAO,CAC3B6jJ,IAAAA,EACAc,KAAAA,EACAC,OAAAA,EACAC,WAAAA,EACAC,OAAAA,EACAC,KAAAA,EACAC,UAAAA,EACA75K,KAAAA,EACA85K,KAAAA,EACAC,MAAAA,EACAC,WAAAA,EACAl2K,KAAAA,EACAm2K,OAAAA,EACAC,MAAAA,EACAC,OAAAA,EACAC,WAAAA,EACAC,MAAAA,EACAC,SAAAA,EACAC,KAAAA,EACAC,OAAAA,K,iLC9UF,SAASE,EAAet6L,EAAiB63J,EAAU7gK,GACjD,IAAIo3L,EAAAA,EAAAA,OAAAA,OAAJ,CAUA,GARIp3L,IACF6gK,EAAK,CACHu/B,QAAQ,EACRmD,QAASvjM,EACTO,SAAUsgK,IAIVA,EAAI,CAGN,GADAA,EAAG2iC,gBAAkB3iC,EAAG2iC,iBAAmB,GACvC3iC,EAAG2iC,gBAAgBniK,SAASr4B,GAAU,OAC1C63J,EAAG2iC,gBAAgBp6L,KAAKJ,GAG1B,MAAO,aAAaA,KAClB63J,EAAK4iC,EAAuB5iC,GAAM,KAShC,SAAU3/B,EAAal4H,EAAiB63J,EAAU7gK,GACtD,MAAM0jM,EAAaJ,EAAct6L,EAAS63J,EAAI7gK,GAChC,MAAd0jM,GAAsBntL,QAAQC,KAAKktL,GAG/B,SAAUngC,EAAcv6J,EAAiB63J,EAAU7gK,GACvD,MAAM0jM,EAAaJ,EAAct6L,EAAS63J,EAAI7gK,GAChC,MAAd0jM,GAAsBntL,QAAQhL,MAAMm4L,GAGhC,SAAUtH,EAAWhwJ,EAAkB+oD,EAAqB0rE,EAAU7gK,GAC1EkhI,EAAY,cAAc90F,0BAAiC+oD,cAAyB0rE,EAAI7gK,GAEpF,SAAUi/H,EAAU7yF,EAAkB+oD,EAAqB0rE,EAAU7gK,GACzEujK,EAAa,eAAen3H,6BAAoC+oD,8IAAyJ0rE,EAAI7gK,GAEzN,SAAUg/C,EAAS5S,EAAkBy0H,EAAU7gK,GACnDkhI,EAAY,cAAc90F,+CAAuDy0H,EAAI7gK,GAOvF,MAAM2jM,EAAa,kBACbC,EAAYjtL,GAAgBA,EAC/BpF,QAAQoyL,GAAYn6L,GAAKA,EAAEnF,gBAC3BkN,QAAQ,QAAS,IAEpB,SAASsyL,EAAqBhjC,EAASijC,GACrC,GAAIjjC,EAAGvgK,QAAUugK,EACf,MAAO,SAET,MAAMrhK,EAAwB,oBAAPqhK,GAA+B,MAAVA,EAAGkjC,IAC3CljC,EAAGrhK,QACHqhK,EAAGu/B,OACDv/B,EAAGtgK,UAAYsgK,EAAGhqJ,YAAYrX,QAC9BqhK,GAAM,GACZ,IAAIn3J,EAAOlK,EAAQkK,MAAQlK,EAAQwkM,cACnC,MAAM5gC,EAAO5jK,EAAQykM,OACrB,IAAKv6L,GAAQ05J,EAAM,CACjB,MAAM1wJ,EAAQ0wJ,EAAK1wJ,MAAM,mBACzBhJ,EAAOgJ,GAASA,EAAM,GAGxB,OACGhJ,EAAO,IAAIk6L,EAASl6L,MAAW,gBAC/B05J,IAAwB,IAAhB0gC,EAAwB,OAAO1gC,IAAS,IAIrD,SAASqgC,EAAwB5iC,GAC/B,GAAIA,EAAGu/B,QAAUv/B,EAAG0iC,QAAS,CAC3B,MAAMW,EAAc,GACpB,IAAIC,EAA2B,EAC/B,MAAOtjC,EAAI,CACT,GAAIqjC,EAAKr7L,OAAS,EAAG,CACnB,MAAMmlC,EAAYk2J,EAAKA,EAAKr7L,OAAS,GACrC,GAAImlC,EAAKn3B,cAAgBgqJ,EAAGhqJ,YAAa,CACvCstL,IACAtjC,EAAKA,EAAG0iC,QACR,SACSY,EAA2B,IACpCD,EAAKA,EAAKr7L,OAAS,GAAK,CAACmlC,EAAMm2J,GAC/BA,EAA2B,GAG/BD,EAAK96L,KAAKy3J,GACVA,EAAKA,EAAG0iC,QAEV,MAAO,mBAAqBW,EACzB5oL,KAAI,CAACulJ,EAAIl4J,IAAM,GACR,IAANA,EAAU,WAAU,IAAI04L,OAAO,EAAQ,EAAJ14L,KAEnCsC,MAAMiD,QAAQ2yJ,GACV,GAAGgjC,EAAoBhjC,EAAG,WAAWA,EAAG,sBACxCgjC,EAAoBhjC,OAEzBhvJ,KAAK,MAER,MAAO,iBAAiBgyL,EAAoBhjC,Q,kCC1G1C,SAAUyhB,EAAczuJ,GAE5B,GAAgC,oBAArBA,EAAKuwK,YAA4B,CAE1C,MAAOvwK,EAAKsT,WAAYtT,EAAOA,EAAKsT,WAGpC,OAAItT,IAASphB,SAAiB,KAEvBA,SAGT,MAAMshB,EAAOF,EAAKuwK,cAGlB,OAAIrwK,IAASthB,UAAYshB,EAAKqwK,YAAY,CAAEC,UAAU,MAAY5xL,SAAiB,KAE5EshB,E,g3BCjBH,SAAUg3H,EACdvhJ,EACA+L,EAAK,MACL7L,GAEA,OAAO42H,EAAAA,EAAAA,OAAW,CAChB52H,KAAMA,GAAQF,EAAE+H,QAAQ,MAAO,KAE/B7R,YAAY,EAEZmY,MAAO,CACL84E,IAAK,CACHnqF,KAAM6R,OACNujF,QAASrmF,IAIbvW,OAAQ2B,GAAG,KAAEuB,EAAF,MAAQ2V,EAAR,SAAessF,IAGxB,OAFAjiG,EAAK27H,YAAe,GAAGr0H,KAAKtH,EAAK27H,aAAe,KAAM/tH,OAE/CnP,EAAEkX,EAAM84E,IAAKzuF,EAAMiiG,MAe1B,SAAU24F,EACdvnL,EACAw4F,EACAz8D,EACA9xC,GAA6C,GAE7C,MAAMyrG,EAAQ55D,IACZC,EAAGD,GACH97B,EAAG7S,oBAAoBqrG,EAAW9C,EAAMzrG,IAG1C+V,EAAGnP,iBAAiB2nG,EAAW9C,EAAMzrG,GAGvC,IAAI8qC,GAAmB,EACvB,IACE,GAAsB,qBAAXr2B,OAAwB,CACjC,MAAMqwL,EAAmBj4L,OAAOE,eAAe,GAAI,UAAW,CAC5DgqB,IAAK,KACH+T,GAAmB,KAIvBr2B,OAAO7N,iBAAiB,eAAgBk+L,EAAkBA,GAC1DrwL,OAAOvR,oBAAoB,eAAgB4hM,EAAkBA,IAE/D,MAAOv0L,GAAKwG,QAAQC,KAAKzG,GAGrB,SAAU+tL,EACdvoL,EACA87B,EACAC,EACA9xC,GAEA+V,EAAGnP,iBAAiBirC,EAAOC,IAAIhH,GAAmB9qC,GAG9C,SAAU23L,EAAgBvqL,EAAUsF,EAA2B8rB,GACnE,MAAMgQ,EAAO97B,EAAKrJ,OAAS,EAE3B,GAAImlC,EAAO,EAAG,YAAeroC,IAARiH,EAAoBoxB,EAAWpxB,EAEpD,IAAK,IAAIjE,EAAI,EAAGA,EAAIqlC,EAAMrlC,IAAK,CAC7B,GAAW,MAAPiE,EACF,OAAOoxB,EAETpxB,EAAMA,EAAIsF,EAAKvJ,IAGjB,OAAW,MAAPiE,QAEuBjH,IAApBiH,EAAIsF,EAAK87B,IAFQhQ,EAE0BpxB,EAAIsF,EAAK87B,IAGvD,SAAUwhE,EAAWj4F,EAAQC,GACjC,GAAID,IAAMC,EAAG,OAAO,EAEpB,GACED,aAAahF,MACbiF,aAAajF,MACbgF,EAAEo4F,YAAcn4F,EAAEm4F,UAGlB,OAAO,EAGT,GAAIp4F,IAAMlL,OAAOkL,IAAMC,IAAMnL,OAAOmL,GAElC,OAAO,EAGT,MAAMK,EAAQxL,OAAOqC,KAAK6I,GAE1B,OAAIM,EAAMhP,SAAWwD,OAAOqC,KAAK8I,GAAG3O,QAK7BgP,EAAM6mG,OAAMn/F,GAAKiwF,EAAUj4F,EAAEgI,GAAI/H,EAAE+H,MAGtC,SAAUypH,EAAsBp8H,EAAUsF,EAAc8rB,GAE5D,OAAW,MAAPpxB,GAAgBsF,GAAwB,kBAATA,OACjBvM,IAAdiH,EAAIsF,GAA4BtF,EAAIsF,IACxCA,EAAOA,EAAKX,QAAQ,aAAc,OAClCW,EAAOA,EAAKX,QAAQ,MAAO,IACpB4lL,EAAevqL,EAAKsF,EAAKqC,MAAM,KAAMypB,IAJiBA,EAOzD,SAAUmoG,EACdxpH,EACAoC,EACAif,GAEA,GAAgB,MAAZjf,EAAkB,YAAgBpZ,IAATgX,EAAqBqhB,EAAWrhB,EAE7D,GAAIA,IAAStQ,OAAOsQ,GAAO,YAAoBhX,IAAbq4B,EAAyBrhB,EAAOqhB,EAElE,GAAwB,kBAAbjf,EAAuB,OAAOiqH,EAAqBrsH,EAAMoC,EAAUif,GAE9E,GAAI/yB,MAAMiD,QAAQ6Q,GAAW,OAAOo4K,EAAex6K,EAAMoC,EAAUif,GAEnE,GAAwB,oBAAbjf,EAAyB,OAAOif,EAE3C,MAAM/5B,EAAQ8a,EAASpC,EAAMqhB,GAE7B,MAAwB,qBAAV/5B,EAAwB+5B,EAAW/5B,EAG7C,SAAUgyG,EAAaptG,GAC3B,OAAOoC,MAAMuB,KAAK,CAAE3D,OAAAA,IAAU,CAAC6I,EAAG8J,IAAMA,IAGpC,SAAUqhL,EAAWtnL,GACzB,IAAKA,GAAMA,EAAGs/G,WAAax3B,KAAK61B,aAAc,OAAO,EAErD,MAAM7pH,GAAS4K,OAAOuzB,iBAAiBjyB,GAAIoyB,iBAAiB,WAE5D,OAAKt+B,GAAcwzL,EAAUtnL,EAAG4xB,YAIlC,MAAMo9J,EAAgB,CACpB,IAAK,QACL,IAAK,OACL,IAAK,QAGD,SAAUzjD,EAAYnqI,GAC1B,OAAOA,EAAIpF,QAAQ,UAAUo/E,GAAO4zG,EAAc5zG,IAAQA,IAGtD,SAAUqtG,EAA0CpxL,EAAQ8B,GAChE,MAAM81L,EAAW,GAEjB,IAAK,IAAI77L,EAAI,EAAGA,EAAI+F,EAAK7F,OAAQF,IAAK,CACpC,MAAM5C,EAAM2I,EAAK/F,GACO,qBAAbiE,EAAI7G,KACby+L,EAASz+L,GAAO6G,EAAI7G,IAIxB,OAAOy+L,EAGH,SAAU3gE,EAAeltH,EAAyCi1C,EAAO,MAC7E,OAAW,MAAPj1C,GAAuB,KAARA,OACjB,EACS2H,OAAO3H,GACT0B,OAAO1B,GAEP,GAAGsD,OAAOtD,KAAOi1C,IAItB,SAAUk/G,EAAWn0J,GACzB,OAAQA,GAAO,IAAIpF,QAAQ,kBAAmB,SAASvL,cAGnD,SAAU2K,EAAU/D,GACxB,OAAe,OAARA,GAA+B,kBAARA,EAIzB,MAAMw7H,EAAW/7H,OAAOoxC,OAAO,CACpCi8H,MAAO,GACPqG,IAAK,EACLh9I,OAAQ,GACR0hK,IAAK,GACLC,MAAO,GACP7Y,GAAI,GACJC,KAAM,GACNryK,KAAM,GACNC,MAAO,GACPH,IAAK,GACLorL,KAAM,GACNC,IAAK,GACLC,UAAW,EACX/lG,OAAQ,GACRgmG,OAAQ,GACRC,SAAU,GACV55L,MAAO,KAOH,SAAUk7J,EAAmBxF,EAASuF,GAE1C,MAAM9/F,EAAYu6F,EAAGviC,SAAS1V,MAAMtiD,UAGpC,GAAI8/F,EAASjvI,WAAW,KAAM,CAE5B,MAAM6tK,EAAW,yBAAyB5+B,EAAS7xJ,MAAM,KAAKkB,MAAOlB,MAAM,KAAKkB,QAI1E+gB,EAAWwyG,EAAqB63B,EAAImkC,EAAU5+B,GAEpD,GAAwB,kBAAb5vI,EACN,OAAOA,EADsB4vI,EAAW5vI,EAI/C,OAAiB,MAAb8vC,EACK8/F,EAGF,CACL9/F,UAAAA,EACAzuD,MAAO,CACL2lH,KAAM4oC,IAKN,SAAU13J,EAAS+iE,GACvB,OAAOplE,OAAOqC,KAAK+iE,GAMrB,MAAMwzH,EAAa,SACNlgF,EAAYpuG,GAChBA,EAAIpF,QAAQ0zL,GAAY,CAAChrF,EAAGzwG,IAAMA,EAAIA,EAAEnF,cAAgB,KAM3D,SAAUgiL,EAAW9uK,EAAUC,GACnC,MAAMq0C,EAAc,GACpB,IAAK,IAAIljD,EAAI,EAAGA,EAAI6O,EAAE3O,OAAQF,IACxB4O,EAAE3S,QAAQ4S,EAAE7O,IAAM,GAAGkjD,EAAKziD,KAAKoO,EAAE7O,IAEvC,OAAOkjD,EAMH,SAAUw4G,EAAY1tJ,GAC1B,OAAOA,EAAI3C,OAAO,GAAG3P,cAAgBsS,EAAIxI,MAAM,GAG3C,SAAUguJ,EACdn8H,EACA+0H,EACAC,GAEA,MAAMjvJ,EAAMgvJ,EAAQ,GACdr+B,EAAyB,GAC/B,IAAIjyF,EACJ,IAAK,IAAI97B,EAAI,EAAGA,EAAIq3B,EAAMn3B,OAAQF,IAAK,CACrC,MAAMgU,EAAOqjB,EAAMr3B,GACb7C,EAAMkjI,EAAqBrsH,EAAM5W,EAAK,MACxC0+B,IAAY3+B,IACd2+B,EAAU3+B,EACV4wH,EAAOttH,KAAK,CACVM,KAAI,MAAE5D,EAAAA,EAAO,GACbk6B,MAAO,MAGX02F,EAAOA,EAAO7tH,OAAS,GAAGm3B,MAAM52B,KAAKuT,GAEvC,OAAO+5G,EAGH,SAAU22B,EAAgB37I,GAAsC,OAAY,MAALA,EAAYzG,MAAMiD,QAAQwD,GAAKA,EAAI,CAACA,GAAK,GAEhH,SAAUuqJ,EACdj8H,EACA60H,EACAC,EACA7pH,EACAi6J,GAEA,GAAe,OAAXrwC,IAAoBA,EAAOhsJ,OAAQ,OAAOm3B,EAC9C,MAAMmlK,EAAiB,IAAI/5J,KAAKg6J,SAASn6J,EAAQ,CAAEo6J,YAAa,SAAUC,MAAO,SAEjF,OAAOtlK,EAAM5hB,MAAK,CAAC7G,EAAGC,KACpB,IAAK,IAAI7O,EAAI,EAAGA,EAAIksJ,EAAOhsJ,OAAQF,IAAK,CACtC,MAAM48L,EAAU1wC,EAAOlsJ,GAEvB,IAAI68L,EAAQx8D,EAAqBzxH,EAAGguL,GAChCE,EAAQz8D,EAAqBxxH,EAAG+tL,GAMpC,GAJIzwC,EAASnsJ,MACV68L,EAAOC,GAAS,CAACA,EAAOD,IAGvBN,GAAiBA,EAAcK,GAAU,CAC3C,MAAMG,EAAeR,EAAcK,GAASC,EAAOC,GAEnD,IAAKC,EAAc,SAEnB,OAAOA,EAIT,GAAc,OAAVF,GAA4B,OAAVC,EAAtB,CAKA,GAAID,aAAiBjzL,MAAQkzL,aAAiBlzL,KAC5C,OAAOizL,EAAM71F,UAAY81F,EAAM91F,UAKjC,IAFC61F,EAAOC,GAAS,CAACD,EAAOC,GAAOnqL,KAAIkF,IAAMA,GAAK,IAAIlR,WAAW01H,sBAE1DwgE,IAAUC,EACZ,OAAKnnL,MAAMknL,IAAWlnL,MAAMmnL,GACrBN,EAAex4J,QAAQ64J,EAAOC,GADMxrL,OAAOurL,GAASvrL,OAAOwrL,IAKtE,OAAO,KAIL,SAAUntC,EAAer0J,EAAY0P,EAAuBgJ,GAChE,OAAgB,MAAT1Y,GACK,MAAV0P,GACiB,mBAAV1P,IACuE,IAA9EA,EAAMqL,WAAW01H,oBAAoBpgI,QAAQ+O,EAAOqxH,qBAGlD,SAAUq3B,EAAkCr8H,EAAYrsB,GAC5D,OAAKA,GACLA,EAASA,EAAOrE,WAAWtJ,cACL,KAAlB2N,EAAO7D,OAAsBkwB,EAE1BA,EAAMhoB,QAAQ2E,GAActQ,OAAOqC,KAAKiO,GAAM0qD,MAAKthE,GAAOuyJ,EAActvB,EAAqBrsH,EAAM5W,GAAM4N,EAAQgJ,QAJpGqjB,EAahB,SAAUyjJ,EAAwC5iB,EAASn3J,EAAc6K,GAC7E,OAAIssJ,EAAGzhC,OAAO/nH,eAAe3N,IAASm3J,EAAGthC,aAAaloH,eAAe3N,IAAUm3J,EAAGthC,aAAa71H,GAAcA,KACpG6K,EAAQ,SAAkB,SAE/BssJ,EAAGzhC,OAAO/nH,eAAe3N,GAAc,SACvCm3J,EAAGthC,aAAaloH,eAAe3N,GAAc,cAAjD,EAsBI,SAAU+qJ,EAAwB9xH,EAAgB0nH,GACtD,OAAOh+I,OAAOqC,KAAK27I,GAAaryI,QAAOwD,GAAKA,EAAE2b,WAAWwL,KAAS4O,QAAO,CAAC3kC,EAAU4O,KAClF5O,EAAI4O,EAAEjK,QAAQoxB,EAAQ,KAAO0nH,EAAY7uI,GAClC5O,IACN,IAGC,SAAU8+H,EAASm1B,EAASn3J,EAAO,UAAWxH,EAAgC88K,GAAW,GAC7F,OAAIne,EAAGthC,aAAaloH,eAAe3N,GAC1Bm3J,EAAGthC,aAAa71H,GAAOxH,aAAgB6wF,SAAW7wF,IAASA,IACzD2+J,EAAGzhC,OAAO/nH,eAAe3N,IAAWxH,IAAQ88K,OAAhD,EACEne,EAAGzhC,OAAO11H,GAKf,SAAUk9I,EAAO3iJ,EAAe+a,EAAM,EAAGC,EAAM,GACnD,OAAOnQ,KAAKmQ,IAAID,EAAKlQ,KAAKkQ,IAAIC,EAAKhb,IAiB/B,SAAU++J,EAAuBF,EAAe6iC,GAAS,GAC7D,MAAMjmK,EAAOimK,EAAS,KAAO,IAC7B,GAAI7iC,EAAQpjI,EACV,MAAO,GAAGojI,MAGZ,MAAMngI,EAASgjK,EAAS,CAAC,KAAM,KAAM,MAAQ,CAAC,IAAK,IAAK,KACxD,IAAI/5I,GAAQ,EACZ,MAAO98C,KAAK4P,IAAIokJ,IAAUpjI,GAAQksB,EAAOjpB,EAAO95B,OAAS,EACvDi6J,GAASpjI,IACPksB,EAEJ,MAAO,GAAGk3G,EAAM8iC,QAAQ,MAAMjjK,EAAOipB,MAGjC,SAAUsnG,EAAoBtmJ,GAClC,OAAKA,EAEEP,OAAOqC,KAAK9B,GAAK2kC,QAAO,CAACkgC,EAAQ1rE,KACtC0rE,EAAEszC,EAASh/G,IAAQ6G,EAAI7G,GAChB0rE,IACN,IALc,GAQb,SAAUy+G,EACd3mL,EAA0B,GAC1ByE,EAA0B,IAE1B,IAAK,MAAMjI,KAAOiI,EAAQ,CACxB,MAAMqkF,EAAiB9oF,EAAOxD,GACxBqsF,EAAiBpkF,EAAOjI,GAK5B4K,EAAS0hF,IACT1hF,EAASyhF,GAET7oF,EAAOxD,GAAOmqL,EAAU79F,EAAgBD,GAK1C7oF,EAAOxD,GAAOqsF,EAGhB,OAAO7oF,EAGH,SAAUmzJ,EAAc7zJ,EAAgB+D,GAC5C,OAAO3B,MAAMpC,GAAQoxB,KAAKrtB,GAItB,SAAU6uK,EAAc1rK,GAC5B,GAAIA,EAAE0rK,aAAc,OAAO1rK,EAAE0rK,eAE7B,MAAMvpK,EAAO,GACb,IAAIqD,EAAKxF,EAAE/B,OAEX,MAAOuH,EAAI,CAGT,GAFArD,EAAK9I,KAAKmM,GAES,SAAfA,EAAGwoF,QAIL,OAHA7rF,EAAK9I,KAAKqJ,UACVP,EAAK9I,KAAK6K,QAEH/B,EAGTqD,EAAKA,EAAGqsI,cAEV,OAAO1vI,I,iIC9fT,MAAMiF,EAAU,CACd0uL,UAAW,gBACXC,UAAW,SAGb,SAASC,EAAY/wK,GACnB,MAAMgxK,EAA4B,GAElC,IAAK,MAAMxlL,KAAKwU,EAAMzgB,MAAM4C,EAAQ0uL,WAAY,CAC9C,IAAK9/L,EAAKD,GAAO0a,EAAEjM,MAAM4C,EAAQ2uL,WACjC//L,EAAMA,EAAI+J,OACL/J,IAIc,kBAARD,IACTA,EAAMA,EAAIgK,QAEZk2L,GAASjhF,EAAAA,EAAAA,IAASh/G,IAAQD,GAG5B,OAAOkgM,EASK,SAAUj9D,IACtB,MAAMk9D,EAA2C,GACjD,IACI53L,EADA1F,EAAY0I,UAAUxI,OAI1B,MAAOF,IAGL,IAAK0F,KAAQhC,OAAOqC,KAAK2C,UAAU1I,IACjC,OAAQ0F,GAEN,IAAK,QACL,IAAK,aACCgD,UAAU1I,GAAG0F,KACf43L,EAAY53L,GAAQktJ,EAAa0qC,EAAY53L,GAAOgD,UAAU1I,GAAG0F,KAEnE,MACF,IAAK,QACCgD,UAAU1I,GAAG0F,KACf43L,EAAY53L,GAAQq1J,EAAYuiC,EAAY53L,GAAOgD,UAAU1I,GAAG0F,KAElE,MAEF,IAAK,cACH,IAAKgD,UAAU1I,GAAG0F,GAChB,WAEwB1I,IAAtBsgM,EAAY53L,KACd43L,EAAY53L,GAAQ,IAElB43L,EAAY53L,KAEd43L,EAAY53L,IAAS,KAEvB43L,EAAY53L,IAASgD,UAAU1I,GAAG0F,GAAMyB,OACxC,MAMF,IAAK,KACL,IAAK,WACCuB,UAAU1I,GAAG0F,KACf43L,EAAY53L,GAAQ63L,EAAeD,EAAY53L,GAAOgD,UAAU1I,GAAG0F,KAErE,MAEF,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,cACL,IAAK,cACL,IAAK,OACL,IAAK,aACH,IAAKgD,UAAU1I,GAAG0F,GAChB,MAEG43L,EAAY53L,KACf43L,EAAY53L,GAAQ,IAEtB43L,EAAY53L,GAAQ,IAAKgD,UAAU1I,GAAG0F,MAAU43L,EAAY53L,IAC5D,MAEF,QACO43L,EAAY53L,KACf43L,EAAY53L,GAAQgD,UAAU1I,GAAG0F,IAM3C,OAAO43L,EAGH,SAAUviC,EACd11J,EACAzE,GAEA,OAAKyE,EACAzE,GAELyE,GAASq/I,EAAAA,EAAAA,IAA8B,kBAAXr/I,EAAsB+3L,EAAW/3L,GAAUA,GAE/DA,EAAoBlN,OAAyB,kBAAXyI,EAAsBw8L,EAAWx8L,GAAUA,IAJjEyE,EADAzE,EAQhB,SAAUgyJ,EAAcvtJ,EAAazE,GACzC,OAAKA,EACAyE,GAEEA,GAASq/I,EAAAA,EAAAA,IAAYr/I,GAAQlN,OAAOyI,GAFvBA,EADAyE,EAMhB,SAAUk4L,KAAmB90L,GAIjC,IAAKA,EAAK,GAAI,OAAOA,EAAK,GAC1B,IAAKA,EAAK,GAAI,OAAOA,EAAK,GAE1B,MAAM41G,EAAiD,GAEvD,IAAK,IAAIr+G,EAAI,EAAGA,KAAM,CACpB,MAAMq9D,EAAM50D,EAAKzI,GACjB,IAAK,MAAM0oC,KAAS20B,EACbA,EAAI30B,KAEL21E,EAAK31E,GAGP21E,EAAK31E,GAAU,GAAkBvwC,OAAOklE,EAAI30B,GAAQ21E,EAAK31E,IAGzD21E,EAAK31E,GAAS20B,EAAI30B,IAKxB,OAAO21E,I,+EC1JK,SAAU8V,KAAW1rH,GACjC,OAAOkvH,EAAAA,EAAAA,OAAW,CAAExD,OAAQ1rH,M,+FCJ1B+0L,E,UAOJ,SAASC,EAAYC,EAAqBC,EAAWC,EAAc3mM,GAC/DymM,EAAoBC,EAAWC,QACf5gM,IAAZ/F,GACAA,EAAQmtG,KAAKo5F,EAAWK,eAGhC,SAASC,EAAYhyK,EAAO70B,GACxB60B,EAAMke,cACUhtC,IAAZ/F,GACAA,EAAQmtG,KAAKo5F,EAAWO,cAGhC,SAASC,EAAalyK,EAAO70B,GACzB60B,EAAMq7C,eACUnqE,IAAZ/F,GACAA,EAAQmtG,KAAKo5F,EAAWS,gBAGhC,SAASC,EAAa3kM,EAAM4kM,GACxB,MAAMC,EAAW,CACbprJ,OAA+B,qBAAhBz5C,EAAKy5C,OAAyB,GAAK,IAC3Cz5C,EAAKy5C,QAEZpnB,SAAU,IAKd,OAHAyyK,EAAiBD,EAAU,IACpB7kM,GACJ4kM,GACIC,EAEX,SAASC,EAAiBC,EAASC,EAASJ,GACxC,MAAMK,EAAgB,GACtBF,EAAQ1yK,SAAW2yK,EAAQ3yK,SAASjZ,KAAK8rL,IAErC,MAAMC,EAAiBJ,EAAQ1yK,SAASknE,MAAMnkD,GAAUA,EAAQwvJ,KAAkBM,EAAYN,KAG9F,OAAKO,GAAmBD,EAAYllM,OAAQilM,EAAc9lK,SAASgmK,IAKnEF,EAAc/9L,KAAKi+L,GACnBh7L,OAAOQ,OAAOw6L,EAAgBD,GACvBC,GANI,IACAD,MAQnB,SAASE,EAAe7yK,EAAOknB,EAAQ/7C,GACnC60B,EAAMvyB,KAAKy5C,OAASA,OACJh2C,IAAZ/F,GACAA,EAAQmtG,KAAKo5F,EAAWoB,eAGhC,SAASC,EAAgB/yK,EAAOj1B,GAC5Bi1B,EAAMj1B,QAAU,IACTA,GAGX,SAASioM,EAAYP,EAASD,GAE1B,MAAMS,EAAmBR,EAAQ3yK,SAASjZ,KAAKg8B,GACpCA,EAAQuF,QAEb8qJ,EAAmBV,EAAQ1yK,SAASjZ,KAAKg8B,GACpCA,EAAQuF,QAGnB,OAAOoqJ,EAAQ1yK,SAAS1rB,SAAWq+L,EAAQ3yK,SAAS1rB,QAAU6+L,EAAiBhpF,OAAM,CAACz6G,EAAOoF,IAAQpF,IAAU0jM,EAAiBt+L,MAzEpI,SAAU88L,GACNA,EAAW,iBAAmB,iBAC9BA,EAAW,gBAAkB,gBAC7BA,EAAW,kBAAoB,kBAC/BA,EAAW,iBAAmB,kBAJlC,CAKGA,IAAeA,EAAa,KAuE/B,MAAMyB,EAAgB,wIAEhBC,EAAwB,aAC9B,SAASC,EAAcC,EAASC,EAAWC,GACvC,IAAIC,EAAY,KAChB,MAAO,CACHrwL,MAAO,CACHyuL,UAAW,CACP9/L,KAAM6F,OACNw+H,UAAU,GAEd07D,aAAc,CACV//L,KAAM6F,OACNuvF,QAAS,QAEbkrG,aAAc,CACVtgM,KAAM6R,OACNujF,QAAS,SAEbmsG,QAAS,CACLvhM,KAAM6R,OACNujF,QAASmsG,GAEblwK,MAAO,CACHrxB,KAAMyT,OACN2hF,QAAS,KAEb7iE,OAAQ,CACJvyB,KAAMyT,OACN2hF,QAAS,KAEbusG,WAAY,CACR3hM,KAAM6R,OACNujF,QAAS,IAEb9zD,OAAQ,CACJthC,KAAM6F,OACNuvF,QAAS,QAEb5lE,QAAS,CACLxvB,KAAMyE,MACN2wF,QAAS,IAAI,KAGrB15F,OACI,MAAO,CACHysC,OAAQ,OAGhBgvF,SAAU,CACNyqE,sBACI,IAAI/jG,EAAKgkG,EACT,MAAMC,EAA+C,QAA7BjkG,EAAMxkG,KAAK0mM,oBAAkC,IAARliG,GAAmD,QAAxBgkG,EAAOhkG,EAAIruE,eAA8B,IAATqyK,OAA1C,EAAqEA,EAAKR,GACxJ,MAAiC,qBAAnBS,IAGtBvpE,UACI,cAAekpE,IAEnBhnE,UACIinE,EAAY,CACRzjK,QAAS,MAET,aAAc5kC,KAAKymM,WAAazmM,KAAKymM,UAAU/xK,SAAS1rB,OAAS,IACjEu9L,EAAYvmM,KAAK0oM,YAAa1oM,KAAKymM,UAAWzmM,KAAK0mM,cACnD1mM,KAAKumI,MAAM+/D,EAAWK,iBAG9BxlE,MAAO,CACHslE,UAAW,CACP55I,QAAS,SAAS60C,EAAUwS,GACxBl0G,KAAK2oM,iBAAiBjnG,EAAUwS,IAEpCnS,MAAM,GAEV2kG,aAAc,CACV75I,QAAS,SAAS60C,GACd1hG,KAAK4oM,oBAAoBlnG,IAE7BK,MAAM,IAGds9B,QAAS,CACLqpE,YAAarmM,EAAM1C,GACf,MAAMkpM,EAAe7oM,KAAK8oM,kBAK1B,GAJqB,OAAjBD,IACA/B,EAAa+B,GACb7oM,KAAKumI,MAAM+/D,EAAWS,kBAErB/mM,KAAKqnI,MAAMvuG,OACZ,MAAM,IAAI/sB,MAAMg8L,GACb,CACH,MAAMtB,EAAYO,EAAa3kM,EAAMrC,KAAKinM,cACpC8B,EAAoB/oM,KAAKqnI,MAAMvuG,OAAOC,WAAW,MAC7B,OAAtBgwK,GACA/oM,KAAKgpM,gBAAgB,IAAI,KAAMD,EAAmB,CAC9CpiM,KAAMwhM,EACN9lM,KAAMokM,EACN9mM,QAAAA,EACAw2B,QAASn2B,KAAKm2B,aAK9BwyK,iBAAkBjnG,EAAUwS,GACxB,MAAMmzF,EAAU,IACT3lG,GAED0lG,EAAU,IACTlzF,GAED20F,EAAe7oM,KAAK8oM,kBAC1B,GAAIt8L,OAAOqC,KAAKu4L,GAASp+L,OAAS,EAAG,CACjC,MAAMigM,EAAiCrB,EAAYP,EAASD,GACxD6B,GAAmD,OAAjBJ,GAClC1B,EAAiB0B,EAAaxmM,KAAMglM,EAASrnM,KAAKinM,mBAC3BnhM,IAAnBuhM,EAAQvrJ,SACR2rJ,EAAeoB,EAAcxB,EAAQvrJ,QACrC97C,KAAKumI,MAAM+/D,EAAWoB,gBAE1B1nM,KAAKkpM,cACLlpM,KAAKumI,MAAM+/D,EAAWO,gBAED,OAAjBgC,IACA/B,EAAa+B,GACb7oM,KAAKumI,MAAM+/D,EAAWS,iBAE1BR,EAAYvmM,KAAK0oM,YAAa1oM,KAAKymM,UAAWzmM,KAAK0mM,cACnD1mM,KAAKumI,MAAM+/D,EAAWK,qBAGL,OAAjBkC,IACA/B,EAAa+B,GACb7oM,KAAKumI,MAAM+/D,EAAWS,iBAE1BR,EAAYvmM,KAAK0oM,YAAa1oM,KAAKymM,UAAWzmM,KAAK0mM,cACnD1mM,KAAKumI,MAAM+/D,EAAWK,gBAG9BiC,oBAAqBjpM,GACjB,MAAMkpM,EAAe7oM,KAAK8oM,kBACL,OAAjBD,GACAlB,EAAgBkB,EAAclpM,GAC9BK,KAAKkpM,eAEL3C,EAAYvmM,KAAK0oM,YAAa1oM,KAAKymM,UAAWzmM,KAAK0mM,eAG3DwC,cACI,MAAML,EAAe7oM,KAAK8oM,kBAC1BlC,EAAYiC,IAEhBC,kBACI,OAAO9oM,KAAKuoM,oBAAsBF,EAAUzjK,QAAU5kC,KAAK04L,MAAM5pJ,QAErEk6J,gBAAiBp0K,GACb50B,KAAKuoM,oBAAsBF,EAAUzjK,QAAUhQ,EAAQ50B,KAAK04L,MAAM5pJ,OAASla,IAGnF++H,gBACI,MAAMk1C,EAAe7oM,KAAK8oM,kBACL,OAAjBD,IACA/B,EAAa+B,GACb7oM,KAAKumI,MAAM+/D,EAAWS,kBAG9B5nM,OAAQ,SAASsU,GACb,OAAOA,EAAc,MAAO,CACxB0hB,MAAOn1B,KAAKioC,OACZg2F,MAAOj+H,KAAKsoM,YACb,CACC70L,EAAc,SAAU,CACpBynG,MAAO,CACH9tG,GAAIpN,KAAKkoM,QACTlwK,MAAOh4B,KAAKg4B,MACZkB,OAAQl5B,KAAKk5B,QAEjBsrE,IAAK,eAML,MAEM2kG,EAAuBlB,EAAc,aAAc,OAAQ,MAC3DmB,EAAsBnB,EAAc,YAAa,MAAO,O,kBCzQlF,SAAU7mL,EAAElR,GAAuD/O,EAAOD,QAAQgP,KAAlF,CAA0M,qBAAqByjF,MAAKA,MAAU,WAAY,OAAO,SAASvyE,GAAG,IAAIlR,EAAE,GAAG,SAASsO,EAAEqG,GAAG,GAAG3U,EAAE2U,GAAG,OAAO3U,EAAE2U,GAAG3jB,QAAQ,IAAI0wE,EAAE1hE,EAAE2U,GAAG,CAAC/b,EAAE+b,EAAE9b,GAAE,EAAG7H,QAAQ,IAAI,OAAOkgB,EAAEyD,GAAGxkB,KAAKuxE,EAAE1wE,QAAQ0wE,EAAEA,EAAE1wE,QAAQsd,GAAGozD,EAAE7oE,GAAE,EAAG6oE,EAAE1wE,QAAQ,OAAOsd,EAAEgF,EAAEpC,EAAE5C,EAAE7U,EAAEuG,EAAEsO,EAAEiF,EAAE,SAASrC,EAAElR,EAAE2U,GAAGrG,EAAEozD,EAAExwD,EAAElR,IAAI1D,OAAOE,eAAe0U,EAAElR,EAAE,CAACinB,YAAW,EAAGT,IAAI7R,KAAKrG,EAAEqG,EAAE,SAASzD,GAAG,qBAAqBsf,QAAQA,OAAOC,aAAan0B,OAAOE,eAAe0U,EAAEsf,OAAOC,YAAY,CAACv8B,MAAM,WAAWoI,OAAOE,eAAe0U,EAAE,aAAa,CAAChd,OAAM,KAAMoa,EAAE4C,EAAE,SAASA,EAAElR,GAAG,GAAG,EAAEA,IAAIkR,EAAE5C,EAAE4C,IAAI,EAAElR,EAAE,OAAOkR,EAAE,GAAG,EAAElR,GAAG,kBAAkBkR,GAAGA,GAAGA,EAAEy5E,WAAW,OAAOz5E,EAAE,IAAIyD,EAAErY,OAAO7E,OAAO,MAAM,GAAG6W,EAAEqG,EAAEA,GAAGrY,OAAOE,eAAemY,EAAE,UAAU,CAACsS,YAAW,EAAG/yB,MAAMgd,IAAI,EAAElR,GAAG,iBAAiBkR,EAAE,IAAI,IAAIwwD,KAAKxwD,EAAE5C,EAAEiF,EAAEoB,EAAE+sD,EAAE,SAAS1hE,GAAG,OAAOkR,EAAElR,IAAIhJ,KAAK,KAAK0qE,IAAI,OAAO/sD,GAAGrG,EAAEA,EAAE,SAAS4C,GAAG,IAAIlR,EAAEkR,GAAGA,EAAEy5E,WAAW,WAAW,OAAOz5E,EAAE,YAAY,WAAW,OAAOA,GAAG,OAAO5C,EAAEiF,EAAEvT,EAAE,IAAIA,GAAGA,GAAGsO,EAAEozD,EAAE,SAASxwD,EAAElR,GAAG,OAAO1D,OAAO/E,UAAU+P,eAAenX,KAAK+gB,EAAElR,IAAIsO,EAAEkB,EAAE,GAAGlB,EAAEA,EAAEmC,EAAE,QAAt5B,CAA+5B,CAAC,OAAO,SAASS,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAE/sD,EAAE,eAAe/b,EAAE,GAAGA,EAAE8oE,GAAG,IAAIxwD,EAAElgB,QAAQ,eAAesX,OAAO1P,IAAI,OAAO,SAASsY,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQ4C,EAAElgB,QAAQ,SAASkgB,EAAElR,EAAEsO,GAAG,GAAGqG,EAAEzD,QAAG,IAASlR,EAAE,OAAOkR,EAAE,OAAO5C,GAAG,KAAK,EAAE,OAAO,WAAW,OAAO4C,EAAE/gB,KAAK6P,IAAI,KAAK,EAAE,OAAO,SAASsO,GAAG,OAAO4C,EAAE/gB,KAAK6P,EAAEsO,IAAI,KAAK,EAAE,OAAO,SAASA,EAAEqG,GAAG,OAAOzD,EAAE/gB,KAAK6P,EAAEsO,EAAEqG,IAAI,KAAK,EAAE,OAAO,SAASrG,EAAEqG,EAAE+sD,GAAG,OAAOxwD,EAAE/gB,KAAK6P,EAAEsO,EAAEqG,EAAE+sD,IAAI,OAAO,WAAW,OAAOxwD,EAAE/V,MAAM6E,EAAEsB,cAAc,OAAO,SAAS4P,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ+F,EAAEzb,EAAE,GAAG2G,SAAS9F,EAAE,iBAAiByK,QAAQA,QAAQ5H,OAAO6L,oBAAoB7L,OAAO6L,oBAAoBjE,QAAQ,GAAGsD,EAAE,SAAS0J,GAAG,IAAI,OAAOwwD,EAAExwD,GAAG,MAAMlR,GAAG,OAAOvG,EAAE2E,UAAU8S,EAAElgB,QAAQqjB,EAAE,SAASnD,GAAG,OAAOzX,GAAG,mBAAmBb,EAAEzI,KAAK+gB,GAAG1J,EAAE0J,GAAGwwD,EAAE/sD,EAAEzD,MAAM,OAAO,SAASA,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ6qL,EAAE7qL,EAAE,QAAQmC,EAAEnC,EAAE,QAAQ+F,EAAE/X,OAAO60B,yBAAyBnxB,EAAEqU,EAAEM,EAAEN,EAAE,SAASnD,EAAElR,GAAG,GAAGkR,EAAEzX,EAAEyX,GAAGlR,EAAEwH,EAAExH,GAAE,GAAIyQ,EAAE,IAAI,OAAO4D,EAAEnD,EAAElR,GAAG,MAAMsO,IAAI,GAAG6qL,EAAEjoL,EAAElR,GAAG,OAAOpH,GAAG8oE,EAAErtD,EAAElkB,KAAK+gB,EAAElR,GAAGkR,EAAElR,MAAM,OAAO,SAASkR,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAE3iE,KAAKC,MAAMpG,EAAE,GAAG4I,QAAQ/H,EAAE,4BAA4B+N,EAAE,oBAAoB0J,EAAElgB,QAAQ,SAASkgB,EAAElR,EAAEsO,EAAE6qL,EAAE1oL,EAAE4D,GAAG,IAAIxb,EAAEyV,EAAE4C,EAAEpY,OAAOya,EAAE4lL,EAAErgM,OAAO0W,EAAEhI,EAAE,YAAO,IAASiJ,IAAIA,EAAEkE,EAAElE,GAAGjB,EAAE/V,GAAGb,EAAEzI,KAAKkkB,EAAE7E,GAAE,SAAUmF,EAAE/b,GAAG,IAAIa,EAAE,OAAOb,EAAEqL,OAAO,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,OAAOiN,EAAE,IAAI,IAAI,OAAOlR,EAAE5B,MAAM,EAAEkQ,GAAG,IAAI,IAAI,OAAOtO,EAAE5B,MAAMvF,GAAG,IAAI,IAAIY,EAAEgX,EAAE7X,EAAEwF,MAAM,GAAG,IAAI,MAAM,QAAQ,IAAIoJ,GAAG5O,EAAE,GAAG,IAAI4O,EAAE,OAAOmN,EAAE,GAAGnN,EAAE+L,EAAE,CAAC,IAAIc,EAAEqtD,EAAEl6D,EAAE,IAAI,OAAO,IAAI6M,EAAEM,EAAEN,GAAGd,OAAE,IAAS4lL,EAAE9kL,EAAE,GAAGzb,EAAEqL,OAAO,GAAGk1L,EAAE9kL,EAAE,GAAGzb,EAAEqL,OAAO,GAAG0Q,EAAElb,EAAE0/L,EAAE3xL,EAAE,GAAG,YAAO,IAAS/N,EAAE,GAAGA,OAAO,OAAO,SAASyX,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ4C,EAAElgB,SAAS2jB,IAAI+sD,GAAE,WAAY,OAAO,GAAGplE,OAAOE,eAAe5D,EAAE,OAAO,IAAI,CAAC4tB,IAAI,WAAW,OAAO,KAAKhf,MAAM,OAAO,SAAS0J,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ4C,EAAElgB,QAAQ,SAASkgB,EAAElR,GAAG,IAAIsO,EAAE4C,EAAEvM,KAAK,GAAG,oBAAoB2J,EAAE,CAAC,IAAI1V,EAAE0V,EAAEne,KAAK+gB,EAAElR,GAAG,GAAG,kBAAkBpH,EAAE,MAAMN,UAAU,sEAAsE,OAAOM,EAAE,GAAG,WAAW+b,EAAEzD,GAAG,MAAM5Y,UAAU,+CAA+C,OAAOopE,EAAEvxE,KAAK+gB,EAAElR,KAAK,OAAO,SAASkR,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQ4C,EAAElgB,QAAQ2jB,EAAE,WAAW,oBAAoB,OAAO,SAASzD,EAAElR,GAAGkR,EAAElgB,QAAQ,SAASkgB,GAAG,GAAG,mBAAmBA,EAAE,MAAM5Y,UAAUgQ,OAAO4I,GAAG,sBAAsB,OAAOA,IAAI,OAAO,SAASA,EAAElR,GAAGkR,EAAElgB,QAAQ,SAASkgB,GAAG,QAAG,GAAQA,EAAE,MAAM5Y,UAAU,wBAAwB4Y,GAAG,OAAOA,IAAI,OAAO,SAASA,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAEioE,EAAE,WAAWxwD,EAAElgB,QAAQ,SAASkgB,GAAG,OAAOtY,GAAG,KAAK+b,GAAE,WAAY,IAAI3U,EAAE,GAAGsO,EAAEtO,EAAE8G,YAAY,GAAG,OAAOwH,EAAE7U,GAAG,WAAW,MAAM,CAAC2/L,IAAI,IAAI,IAAIp5L,EAAEkR,GAAGm8G,SAAS+rE,SAAS,OAAO,SAASloL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAE3iE,KAAKmQ,IAAItW,EAAEmG,KAAKkQ,IAAIiC,EAAElgB,QAAQ,SAASkgB,EAAElR,GAAG,IAAIsO,EAAEqG,EAAEzD,GAAG,OAAO5C,EAAE,EAAEozD,EAAEpzD,EAAEtO,EAAE,GAAGpH,EAAE0V,EAAEtO,KAAK,OAAO,SAASkR,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ+F,EAAEzb,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ6qL,EAAE7qL,EAAE,QAAQmC,EAAEnC,EAAE,QAAQ4C,EAAElgB,QAAQ,SAASkgB,EAAElR,GAAG,IAAIsO,EAAE+F,EAAExb,EAAE0a,EAAE/D,EAAE7N,EAAE8F,EAAEyJ,EAAEjT,OAAOwQ,EAAEyC,EAAEsuE,OAAO5uF,EAAEsgB,EAAEwxE,KAAK,GAAGruE,EAAE5F,EAAEkG,EAAE/jB,EAAE+jB,EAAElN,IAAID,EAAEC,EAAE,KAAKkN,EAAElN,IAAI,IAAIlQ,UAAU8c,EAAE,IAAIxb,KAAKmH,EAAE,CAAC,GAAGwP,EAAExP,EAAEnH,GAAGqY,EAAEyxE,aAAahhF,EAAE+/D,EAAErtD,EAAExb,GAAG0a,EAAE5R,GAAGA,EAAEzN,OAAOqf,EAAEc,EAAExb,GAAGyV,EAAEmC,EAAEhC,EAAE5V,EAAE4O,GAAG7W,EAAE,IAAI,KAAKiI,EAAEqY,EAAE0xE,SAASt0E,QAAG,IAASiF,EAAE,CAAC,UAAU/D,WAAW+D,EAAE,SAAS4lL,EAAE3pL,EAAE+D,IAAIrC,EAAE2xE,MAAMtvE,GAAGA,EAAEsvE,OAAOjqF,EAAE4W,EAAE,QAAO,GAAI/V,EAAE4a,EAAExb,EAAE2W,EAAE0B,MAAM,OAAO,SAASA,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE8oE,EAAE3wE,OAAO,SAAS,aAAaiP,EAAEqU,EAAE/X,OAAO6L,qBAAqB,SAAS+I,GAAG,OAAOyD,EAAEzD,EAAEtY,KAAK,OAAO,SAASsY,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE,WAAW2xL,EAAEv2L,OAAOrL,UAAUkZ,EAAE0oL,EAAE3xL,GAAG6M,EAAEzb,GAAE,WAAY,MAAM,QAAQ6X,EAAEtgB,KAAK,CAACqJ,OAAO,IAAI8xG,MAAM,SAASzyG,EAAE4X,EAAE9W,MAAM6N,GAAG6M,GAAGxb,IAAI8b,EAAE/R,OAAOrL,UAAUiQ,GAAE,WAAY,IAAI0J,EAAEwwD,EAAE5xE,MAAMkQ,EAAEsI,OAAO4I,EAAE1X,QAAQ8U,EAAE4C,EAAEo6F,MAAM32F,EAAErM,YAAO,IAASgG,GAAG4C,aAAatO,UAAU,UAAUu2L,GAAG1/L,EAAEtJ,KAAK+gB,GAAG5C,GAAG,MAAM,IAAItO,EAAE,IAAI2U,IAAI,CAACgzE,QAAO,KAAM,KAAK,SAASz2E,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE5O,EAAE,WAAWsY,EAAElgB,QAAQ,SAASkgB,GAAG,IAAIlR,EAAE2U,EAAEzD,GAAG5C,EAAEozD,EAAErtD,EAAE5a,GAAGuG,IAAIA,EAAEwH,IAAI8G,EAAEtO,EAAEwH,EAAE,CAACkoB,cAAa,EAAGlJ,IAAI,WAAW,OAAO12B,UAAU,OAAO,SAASohB,EAAElR,EAAEsO,GAAG,IAAIqG,EAAE+sD,EAAE9oE,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE5O,EAAE0G,QAAQ65L,EAAE3xL,GAAGA,EAAEq6E,SAASpxE,EAAE0oL,GAAGA,EAAEr3G,GAAGrxE,GAAGkE,EAAElE,EAAEjM,MAAM,KAAKk9D,EAAE/sD,EAAE,GAAGA,EAAE,IAAIlb,IAAIkb,EAAElb,EAAEkJ,MAAM,iBAAiBgS,GAAGA,EAAE,IAAI,MAAMA,EAAElb,EAAEkJ,MAAM,iBAAiBgS,IAAI+sD,EAAE/sD,EAAE,MAAMzD,EAAElgB,QAAQ0wE,IAAIA,GAAG,OAAO,SAASxwD,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQ4C,EAAElgB,QAAQ2jB,EAAE,YAAY,cAAc,IAAI,OAAO,SAASzD,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ4C,EAAElgB,QAAQ2jB,EAAErY,OAAOC,iBAAiB,SAAS2U,EAAElR,GAAGpH,EAAEsY,GAAG,IAAI5C,EAAEqG,EAAElb,EAAEuG,GAAGwH,EAAEmN,EAAE7b,OAAOqgM,EAAE,EAAE,MAAM3xL,EAAE2xL,EAAEz3H,EAAErtD,EAAEnD,EAAE5C,EAAEqG,EAAEwkL,KAAKn5L,EAAEsO,IAAI,OAAO4C,IAAI,OAAO,SAASA,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQ4C,EAAElgB,QAAQ,SAASkgB,GAAG,IAAIyD,EAAEzD,IAAI,OAAOA,EAAE,MAAM5Y,UAAU,aAAagQ,OAAO4I,GAAG,mBAAmB,OAAOA,IAAI,OAAO,SAASA,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,QAAQrK,OAAOy9D,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE,kBAAkB+N,EAAEk6D,EAAE39C,IAAIo1K,EAAEz3H,EAAEijB,UAAUlrF,GAAGb,EAAE0P,OAAO,UAAS,SAAU4I,GAAG1J,EAAE1X,KAAK,CAAC2G,KAAKgD,EAAEkuB,OAAOrf,OAAO4I,GAAG5X,MAAM,OAAM,WAAY,IAAI4X,EAAElR,EAAEm5L,EAAErpM,MAAMwe,EAAEtO,EAAE2nB,OAAO+5C,EAAE1hE,EAAE1G,MAAM,OAAOooE,GAAGpzD,EAAExV,OAAO,CAAC5E,WAAM,EAAO3B,MAAK,IAAK2e,EAAEyD,EAAErG,EAAEozD,GAAG1hE,EAAE1G,OAAO4X,EAAEpY,OAAO,CAAC5E,MAAMgd,EAAE3e,MAAK,QAAS,OAAO,SAAS2e,EAAElR,GAAGkR,EAAElgB,QAAQ,IAAI,OAAO,SAASkgB,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQ4C,EAAElgB,QAAQ2jB,GAAG,OAAO,SAASzD,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE,GAAG4L,MAAM0M,EAAElgB,QAAQ2jB,GAAE,WAAY,OAAOrY,OAAO,KAAKsnF,qBAAqB,MAAM,SAAS1yE,GAAG,MAAM,UAAUwwD,EAAExwD,GAAGtY,EAAEzI,KAAK+gB,EAAE,IAAI5U,OAAO4U,IAAI5U,QAAQ,OAAO,SAAS4U,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAEkb,EAAE,eAAenN,EAAEtM,MAAM3D,eAAU,GAAQiQ,EAAE/N,IAAIb,EAAEyb,EAAE7M,EAAE/N,EAAE,CAACi2B,cAAa,EAAGx7B,MAAMwtE,EAAE,QAAQxwD,EAAElgB,QAAQ,SAASkgB,GAAG1J,EAAE/N,GAAGyX,IAAG,IAAK,OAAO,SAASA,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAEb,EAAE,SAASsY,EAAElgB,QAAQ,SAASkgB,GAAG,IAAIlR,EAAE,OAAO2U,EAAEzD,UAAK,KAAUlR,EAAEkR,EAAEzX,MAAMuG,EAAE,UAAU0hE,EAAExwD,MAAM,KAAK,SAASA,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQ4C,EAAElgB,UAAUsL,OAAOupF,wBAAwBlxE,GAAE,WAAY,OAAOrM,OAAOkoB,cAAc,OAAO,SAAStf,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ+F,EAAE8kL,EAAE7qL,EAAE,QAAQ+F,EAAE5D,EAAEnC,EAAE,QAAQ+F,EAAE/F,EAAE,QAAQzV,EAAEyV,EAAE,QAAQiF,EAAEjF,EAAE,QAAQkB,EAAElB,EAAE,QAAQ3M,EAAE2M,EAAE,QAAQyV,IAAItc,EAAE6G,EAAE,QAAQG,EAAEH,EAAE,QAAQ1d,EAAE6d,EAAE,SAASmG,EAAE8sD,EAAE9+D,OAAO0Q,EAAEsB,EAAErd,UAAUiX,EAAE,KAAK6G,EAAE,KAAKsB,EAAE,IAAI/B,EAAEpG,KAAKA,EAAE2F,EAAEtb,EAAEwgM,cAActiL,EAAEpC,GAAG/b,EAAE,UAAU+d,GAAGxC,GAAG3E,GAAE,WAAY,OAAO6F,EAAEzkB,IAAG,EAAGgkB,EAAEpG,IAAIA,GAAGoG,EAAES,IAAIA,GAAG,QAAQT,EAAEpG,EAAE,SAAS,GAAGuI,EAAE,CAAC,IAAIhD,EAAE,SAAS7C,EAAElR,GAAG,IAAIsO,EAAEqG,EAAE7kB,gBAAgBikB,EAAE2tD,EAAEjxD,EAAES,GAAGtY,OAAE,IAASoH,EAAE,IAAI2U,GAAG+sD,GAAGxwD,EAAEpK,cAAciN,GAAGnb,EAAE,OAAOsY,EAAEyF,EAAE+qD,IAAI9oE,IAAIsY,EAAEA,EAAE1X,QAAQ0X,aAAa6C,IAAInb,IAAIoH,EAAEqU,EAAElkB,KAAK+gB,IAAIA,EAAEA,EAAE1X,QAAQ2a,IAAI7F,IAAItO,GAAGA,EAAEnL,QAAQ,MAAM,EAAEyZ,IAAItO,EAAEA,EAAEwB,QAAQ,KAAK,MAAM,IAAIgG,EAAE/N,EAAEkd,EAAE,IAAI/B,EAAE1D,EAAElR,GAAG4U,EAAE1D,EAAElR,GAAG2U,EAAE7kB,KAAKwjB,EAAES,GAAG,OAAOI,GAAG7F,GAAG3M,EAAE6F,EAAE,CAAC8xL,OAAOhrL,IAAI9G,GAAGiE,EAAE,SAASyF,GAAGA,KAAK6C,GAAGvM,EAAEuM,EAAE7C,EAAE,CAACwe,cAAa,EAAGlJ,IAAI,WAAW,OAAO5R,EAAE1D,IAAI6S,IAAI,SAAS/jB,GAAG4U,EAAE1D,GAAGlR,MAAM0W,EAAEyiL,EAAEvkL,GAAGX,EAAE,EAAE,MAAMyC,EAAE5d,OAAOmb,EAAExI,EAAEiL,EAAEzC,MAAMX,EAAExM,YAAYiN,EAAEA,EAAExc,UAAU+b,EAAEC,EAAEmuD,EAAE,SAAS3tD,GAAGtM,EAAE,WAAW,OAAO,SAASyJ,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE,SAASyX,GAAG,OAAO,SAASlR,EAAEsO,EAAE7U,GAAG,IAAI+N,EAAE2xL,EAAExkL,EAAE3U,GAAGyQ,EAAEixD,EAAEy3H,EAAErgM,QAAQub,EAAEzb,EAAEa,EAAEgX,GAAG,GAAGS,GAAG5C,GAAGA,GAAG,MAAMmC,EAAE4D,KAAK7M,EAAE2xL,EAAE9kL,KAAK7M,GAAGA,EAAE,OAAM,OAAQ,KAAKiJ,EAAE4D,EAAEA,IAAI,IAAInD,GAAGmD,KAAK8kL,IAAIA,EAAE9kL,KAAK/F,EAAE,OAAO4C,GAAGmD,GAAG,EAAE,OAAOnD,IAAI,IAAIA,EAAElgB,QAAQ,CAACsgC,SAAS73B,GAAE,GAAI5E,QAAQ4E,GAAE,KAAM,OAAO,SAASyX,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAE3iE,KAAKkQ,IAAIiC,EAAElgB,QAAQ,SAASkgB,GAAG,OAAOA,EAAE,EAAEwwD,EAAE/sD,EAAEzD,GAAG,kBAAkB,IAAI,KAAK,SAASA,EAAElR,GAAG,IAAIsO,EAAE,GAAGhH,eAAe4J,EAAElgB,QAAQ,SAASkgB,EAAElR,GAAG,OAAOsO,EAAEne,KAAK+gB,EAAElR,KAAK,KAAK,SAASkR,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ6qL,EAAE7qL,EAAE,QAAQmC,EAAEnC,EAAE,QAAQ+F,EAAE/F,EAAE,QAAQzV,EAAEkG,KAAKmQ,IAAIqE,EAAExU,KAAKkQ,IAAIO,EAAE,SAAS0B,GAAG,YAAO,IAASA,EAAEA,EAAE5I,OAAO4I,IAAIyD,EAAE,UAAU,GAAE,SAAUzD,EAAElR,EAAEsO,EAAEqG,GAAG,IAAIhT,EAAEgT,EAAE4kL,6CAA6C9xL,EAAEkN,EAAE6kL,iBAAiB/qL,EAAE9M,EAAE,IAAI,KAAK,MAAM,CAAC,SAAS2M,EAAEqG,GAAG,IAAI+sD,EAAEl6D,EAAE1X,MAAM8I,OAAE,GAAQ0V,OAAE,EAAOA,EAAE4C,GAAG,YAAO,IAAStY,EAAEA,EAAEzI,KAAKme,EAAEozD,EAAE/sD,GAAG3U,EAAE7P,KAAKmY,OAAOo5D,GAAGpzD,EAAEqG,IAAI,SAASzD,EAAEyD,GAAG,IAAIhT,GAAG8F,GAAG,kBAAkBkN,IAAI,IAAIA,EAAE9f,QAAQ4Z,GAAG,CAAC,IAAIjH,EAAE8G,EAAEtO,EAAEkR,EAAEphB,KAAK6kB,GAAG,GAAGnN,EAAEjV,KAAK,OAAOiV,EAAEtT,MAAM,IAAItD,EAAE8wE,EAAExwD,GAAG0D,EAAEtM,OAAOxY,MAAMwjB,EAAE,oBAAoBqB,EAAErB,IAAIqB,EAAErM,OAAOqM,IAAI,IAAInG,EAAE5d,EAAE4uF,OAAO,GAAGhxE,EAAE,CAAC,IAAI6G,EAAEzkB,EAAE6oM,QAAQ7oM,EAAE2X,UAAU,EAAE,IAAIoO,EAAE,GAAG,MAAM,EAAE,CAAC,IAAIxC,EAAEE,EAAEzjB,EAAEgkB,GAAG,GAAG,OAAOT,EAAE,MAAM,GAAGwC,EAAEtd,KAAK8a,IAAI3F,EAAE,MAAM,IAAIuI,EAAEzO,OAAO6L,EAAE,IAAI,KAAK4C,IAAInmB,EAAE2X,UAAU4wL,EAAEvkL,EAAEhc,EAAEhI,EAAE2X,WAAW8M,IAAI,IAAI,IAAItB,EAAE,GAAGtI,EAAE,EAAEiL,EAAE,EAAEA,EAAEC,EAAE7d,OAAO4d,IAAI,CAACvC,EAAEwC,EAAED,GAAG,IAAI,IAAIzC,EAAE3L,OAAO6L,EAAE,IAAI2C,EAAEje,EAAE0a,EAAE9Z,EAAE0a,EAAE7a,OAAOsb,EAAE9b,QAAQ,GAAGkoB,EAAE,GAAG1J,EAAE,EAAEA,EAAEnD,EAAErb,OAAOwe,IAAI0J,EAAE3nB,KAAKmW,EAAE2E,EAAEmD,KAAK,IAAItD,EAAEG,EAAEwyG,OAAO,GAAGrzG,EAAE,CAAC,IAAI4D,EAAE,CAACjD,GAAGljB,OAAOiwB,EAAElK,EAAElC,QAAG,IAASZ,GAAGkD,EAAE7d,KAAK2a,GAAG,IAAI4C,EAAEtO,OAAOqM,EAAExZ,WAAM,EAAO+b,SAASN,EAAEnG,EAAEwD,EAAEW,EAAEkC,EAAEkK,EAAEhN,EAAEW,GAAGmC,GAAGrL,IAAIsI,GAAGa,EAAExW,MAAMqN,EAAEqL,GAAGF,EAAEnL,EAAEqL,EAAE7C,EAAEnb,QAAQ,OAAOib,EAAEa,EAAExW,MAAMqN,SAAS,KAAK,SAASyF,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,SAAS4C,EAAElgB,QAAQ,SAASkgB,EAAElR,GAAG,OAAO0hE,EAAExwD,KAAKwwD,EAAExwD,QAAG,IAASlR,EAAEA,EAAE,MAAM,WAAW,IAAI3G,KAAK,CAAC8M,QAAQ,QAAQuf,KAAK/Q,EAAE,OAAO,SAASozE,UAAU,0CAA0C,OAAO,SAAS72E,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ4C,EAAElgB,QAAQ2jB,EAAE,UAAU,YAAY,SAASzD,GAAG,IAAIlR,EAAE0hE,EAAErtD,EAAE5a,EAAEyX,IAAI5C,EAAE1V,EAAEyb,EAAE,OAAO/F,EAAEtO,EAAEjP,OAAOud,EAAE4C,IAAIlR,IAAI,OAAO,SAASkR,EAAElR,GAAGkR,EAAElgB,QAAQ,SAASkgB,EAAElR,GAAG,MAAM,CAACinB,aAAa,EAAE/V,GAAGwe,eAAe,EAAExe,GAAG8V,WAAW,EAAE9V,GAAGhd,MAAM8L,KAAK,KAAK,SAASkR,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE,SAASsY,GAAG,OAAO,SAASlR,EAAEsO,GAAG,IAAI1V,EAAEa,EAAE+N,EAAEc,OAAOo5D,EAAE1hE,IAAIm5L,EAAExkL,EAAErG,GAAGmC,EAAEjJ,EAAE1O,OAAO,OAAOqgM,EAAE,GAAGA,GAAG1oL,EAAES,EAAE,QAAG,GAAQtY,EAAE4O,EAAEI,WAAWuxL,GAAGvgM,EAAE,OAAOA,EAAE,OAAOugM,EAAE,IAAI1oL,IAAIhX,EAAE+N,EAAEI,WAAWuxL,EAAE,IAAI,OAAO1/L,EAAE,MAAMyX,EAAE1J,EAAEvD,OAAOk1L,GAAGvgM,EAAEsY,EAAE1J,EAAEpJ,MAAM+6L,EAAEA,EAAE,GAAG1/L,EAAE,OAAOb,EAAE,OAAO,IAAI,SAASsY,EAAElgB,QAAQ,CAAC0oM,OAAO9gM,GAAE,GAAIqL,OAAOrL,GAAE,KAAM,OAAO,SAASsY,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAEb,EAAE,WAAWsY,EAAElgB,QAAQ,SAASkgB,EAAElR,GAAG,IAAIsO,EAAE,OAAOozD,EAAExwD,KAAK5C,EAAE4C,EAAEpK,YAAY,mBAAmBwH,GAAGA,IAAIpT,QAAQwmE,EAAEpzD,EAAE/W,WAAWod,EAAErG,KAAKA,EAAEA,EAAE7U,GAAG,OAAO6U,IAAIA,OAAE,IAASA,OAAE,GAAQ,SAAI,IAASA,EAAEpT,MAAMoT,GAAG,IAAItO,EAAE,EAAEA,KAAK,OAAO,SAASkR,EAAElR,EAAEsO,GAAG,IAAIqG,EAAE+sD,EAAE9oE,EAAEa,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ6qL,EAAE7qL,EAAE,QAAQmC,EAAEnC,EAAE,QAAQ+F,EAAE/F,EAAE,QAAQzV,EAAEyV,EAAE,QAAQiF,EAAEjF,EAAE,QAAQkB,EAAElB,EAAE,QAAQ3M,EAAE6F,EAAEolE,QAAQnlE,EAAE,SAASyJ,GAAG,OAAOtY,EAAEsY,GAAGwwD,EAAExwD,GAAGyD,EAAEzD,EAAE,KAAKzC,EAAE,SAASyC,GAAG,OAAO,SAASlR,GAAG,IAAIsO,EAAE,IAAI6qL,EAAEn5L,KAAKsO,EAAEozD,EAAE1hE,IAAIvJ,OAAOya,EAAE,MAAM5Y,UAAU,0BAA0B4Y,EAAE,aAAa,OAAO5C,IAAI,GAAG7U,EAAE,CAAC,IAAI7I,EAAEiI,EAAEgsF,QAAQhsF,EAAEgsF,MAAM,IAAIljF,GAAGiT,EAAEhkB,EAAE41B,IAAIlT,EAAE1iB,EAAEic,IAAI2B,EAAE5d,EAAEmzB,IAAIpP,EAAE,SAASzD,EAAElR,GAAG,OAAOA,EAAEklF,OAAOh0E,EAAE1C,EAAEre,KAAKS,EAAEsgB,EAAElR,GAAGA,GAAG0hE,EAAE,SAASxwD,GAAG,OAAO0D,EAAEzkB,KAAKS,EAAEsgB,IAAI,IAAItY,EAAE,SAASsY,GAAG,OAAOoC,EAAEnjB,KAAKS,EAAEsgB,QAAQ,CAAC,IAAImE,EAAE9B,EAAE,SAAS/D,EAAE6F,IAAG,EAAGV,EAAE,SAASzD,EAAElR,GAAG,OAAOA,EAAEklF,OAAOh0E,EAAET,EAAES,EAAEmE,EAAErV,GAAGA,GAAG0hE,EAAE,SAASxwD,GAAG,OAAOmD,EAAEnD,EAAEmE,GAAGnE,EAAEmE,GAAG,IAAIzc,EAAE,SAASsY,GAAG,OAAOmD,EAAEnD,EAAEmE,IAAInE,EAAElgB,QAAQ,CAAC+yB,IAAIpP,EAAE6R,IAAIk7C,EAAE70D,IAAIjU,EAAE8rF,QAAQj9E,EAAEk9E,UAAUl2E,IAAI,OAAO,SAASyC,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ6qL,EAAE7qL,EAAE,QAAQmC,EAAE0oL,EAAE3yK,IAAInS,EAAE8kL,EAAEz0G,QAAQ7rF,EAAEyP,OAAOA,QAAQ9D,MAAM,WAAW0M,EAAElgB,QAAQ,SAASkgB,EAAElR,EAAEsO,EAAE9G,GAAG,IAAI2xL,EAAE1oL,IAAIjJ,KAAKA,EAAEmgF,OAAOp0E,IAAI/L,KAAKA,EAAEyf,WAAWzX,IAAIhI,KAAKA,EAAEm7E,YAAY,mBAAmBr0E,IAAI,iBAAiBtO,GAAGpH,EAAE0V,EAAE,SAASozD,EAAEpzD,EAAE,OAAOtO,GAAGm5L,EAAE9kL,EAAE/F,GAAG6qL,EAAE3/L,SAAS2/L,EAAE3/L,OAAOX,EAAEiJ,KAAK,iBAAiB9B,EAAEA,EAAE,MAAMkR,IAAIyD,GAAGlE,GAAGjB,GAAG0B,EAAElR,KAAKuT,GAAE,UAAWrC,EAAElR,GAAGuT,EAAErC,EAAElR,GAAGsO,EAAEozD,EAAExwD,EAAElR,EAAEsO,IAAIiF,EAAErC,EAAElR,GAAGsO,EAAE7U,EAAEuG,EAAEsO,KAAK00E,SAASzrF,UAAU,YAAW,WAAY,MAAM,mBAAmBzH,MAAM2gB,EAAE3gB,MAAM0J,QAAQgO,EAAE1X,UAAU,KAAK,SAASohB,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ4C,EAAElgB,QAAQ,SAASkgB,EAAElR,EAAEsO,GAAG,IAAI1V,EAAEa,EAAE,OAAOioE,GAAG,mBAAmB9oE,EAAEoH,EAAE8G,cAAclO,IAAI0V,GAAGqG,EAAElb,EAAEb,EAAErB,YAAYkC,IAAI6U,EAAE/W,WAAWmqE,EAAExwD,EAAEzX,GAAGyX,IAAI,KAAK,SAASA,EAAElR,GAAGA,EAAEqU,EAAE/X,OAAOupF,uBAAuB,OAAO,SAAS30E,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ+F,EAAEnD,EAAElgB,QAAQ,SAASkgB,GAAG,IAAIlR,EAAE2U,EAAE6b,SAAS7b,EAAE6b,OAAO,IAAIkxC,EAAE1hE,EAAEkR,IAAIzX,EAAEuG,EAAEkR,EAAE,CAAChd,MAAM0E,EAAEyb,EAAEnD,OAAO,KAAK,SAASA,EAAElR,GAAGkR,EAAElgB,QAAQ,CAAC,cAAc,iBAAiB,gBAAgB,uBAAuB,iBAAiB,WAAW,YAAY,OAAO,SAASkgB,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQ4C,EAAElgB,QAAQ,SAASkgB,GAAG,OAAO5U,OAAOqY,EAAEzD,MAAM,OAAO,SAASA,EAAElR,EAAEsO,GAAG,IAAIqG,EAAE+sD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ6qL,EAAE7qL,EAAE,QAAQmC,EAAEnC,EAAE,QAAQ+F,EAAE/F,EAAE,QAAQzV,EAAE,IAAI0a,EAAE,IAAI/D,EAAE,YAAY7N,EAAE,SAAS8F,EAAE4M,EAAE,YAAY5F,EAAE,aAAa7d,EAAE,SAASsgB,GAAG,OAAOqC,EAAE5R,EAAE9I,EAAEqY,EAAEqC,EAAE,IAAI5R,EAAE9I,GAAG+b,EAAE,SAAS1D,GAAGA,EAAEjP,MAAMrR,EAAE,KAAKsgB,EAAEwiG,QAAQ,IAAI1zG,EAAEkR,EAAEyoL,aAAar9L,OAAO,OAAO4U,EAAE,KAAKlR,GAAGsT,EAAE,WAAW,IAAIpC,EAAElR,EAAEyQ,EAAE,UAAUnC,EAAE,OAAO3M,EAAE,IAAI,OAAO3B,EAAEilB,MAAMg2B,QAAQ,OAAOk+I,EAAE33F,YAAYxhG,GAAGA,EAAE0xF,IAAIppF,OAAOgG,GAAG4C,EAAElR,EAAE45L,cAAcl3L,SAASwO,EAAE9c,OAAO8c,EAAEjP,MAAMrR,EAAE,sBAAsBsgB,EAAEwiG,QAAQxiG,EAAEkD,GAAG5F,EAAE,WAAW,IAAImG,EAAEjS,SAASN,QAAQ,IAAIy3L,cAAc,YAAY,MAAM75L,IAAIwO,EAAEmG,EAAEC,EAAED,GAAGrB,IAAI,IAAIpC,EAAEzX,EAAEX,OAAO,MAAMoY,WAAW1C,EAAEgB,GAAG/V,EAAEyX,IAAI,OAAO1C,KAAKhH,EAAEC,IAAG,EAAGyJ,EAAElgB,QAAQsL,OAAO7E,QAAQ,SAASyZ,EAAElR,GAAG,IAAIsO,EAAE,OAAO,OAAO4C,GAAGzC,EAAEe,GAAGkyD,EAAExwD,GAAG5C,EAAE,IAAIG,EAAEA,EAAEe,GAAG,KAAKlB,EAAE7G,GAAGyJ,GAAG5C,EAAEE,SAAI,IAASxO,EAAEsO,EAAE1V,EAAE0V,EAAEtO,KAAK,OAAO,SAASkR,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ6qL,EAAE7qL,EAAE,QAAQmC,EAAEnC,EAAE,QAAQ+F,EAAE/F,EAAE,QAAQzV,EAAEyV,EAAE,QAAQiF,EAAEjF,EAAE,QAAQkB,EAAElB,EAAE,QAAQ3M,EAAE6N,EAAEsqL,kBAAkBryL,EAAE+H,EAAEuqL,uBAAuBtrL,EAAE4F,EAAE,YAAYzjB,EAAE,OAAOgkB,EAAE,SAAStB,EAAE,UAAU9E,EAAE,WAAW,OAAO1e,MAAMohB,EAAElgB,QAAQ,SAASkgB,EAAElR,EAAEsO,EAAE+F,EAAE7E,EAAE6F,EAAEsB,GAAG+qD,EAAEpzD,EAAEtO,EAAEqU,GAAG,IAAIF,EAAE4C,EAAEhD,EAAEtI,EAAE,SAASyF,GAAG,GAAGA,IAAI1B,GAAG8H,EAAE,OAAOA,EAAE,IAAI7P,GAAGyJ,KAAK4F,EAAE,OAAOA,EAAE5F,GAAG,OAAOA,GAAG,KAAKtgB,EAAE,OAAO,WAAW,OAAO,IAAI0d,EAAExe,KAAKohB,IAAI,KAAK0D,EAAE,OAAO,WAAW,OAAO,IAAItG,EAAExe,KAAKohB,IAAI,KAAKoC,EAAE,OAAO,WAAW,OAAO,IAAIhF,EAAExe,KAAKohB,IAAI,OAAO,WAAW,OAAO,IAAI5C,EAAExe,QAAQ4mB,EAAE1W,EAAE,YAAYiU,GAAE,EAAG6C,EAAE5F,EAAE3Z,UAAUypB,EAAElK,EAAErI,IAAIqI,EAAE,eAAetH,GAAGsH,EAAEtH,GAAG8H,GAAG7P,GAAGuZ,GAAGvV,EAAE+D,GAAGwE,EAAE,SAAShU,GAAG8W,EAAEutC,SAASrjC,EAAE,GAAGhN,IAAIG,EAAEvb,EAAEob,EAAE7jB,KAAK,IAAI+gB,IAAIvP,IAAIrF,OAAO/E,WAAW4c,EAAEwgB,OAAO97B,GAAGD,EAAEub,KAAKxS,IAAIlI,EAAEA,EAAE0a,EAAExS,GAAG,mBAAmBwS,EAAE1F,IAAI0qL,EAAEhlL,EAAE1F,EAAED,IAAIhH,EAAE2M,EAAEuC,GAAE,GAAG,GAAI7d,IAAI0a,EAAEmD,GAAGlI,KAAKgB,GAAGoF,GAAGoM,GAAGA,EAAErnB,OAAOib,IAAIX,GAAE,EAAGqD,EAAE,WAAW,OAAO0J,EAAE7wB,KAAKL,QAAQ+I,IAAI8d,GAAGG,EAAErI,KAAK6I,GAAG6hL,EAAEriL,EAAErI,EAAE6I,GAAG/D,EAAEvT,GAAGsX,EAAE9H,EAAE,GAAGuH,EAAE,CAACmN,OAAOzY,EAAEmJ,GAAGjW,KAAK0W,EAAEiC,EAAE7L,EAAE7a,GAAGyzD,QAAQ54C,EAAE6H,IAAIqD,EAAE,IAAI5C,KAAKgD,GAAGtP,GAAGwM,KAAKF,KAAK+C,KAAKrG,EAAEqG,EAAE/C,EAAEgD,EAAEhD,SAASY,EAAE,CAAC1W,OAAO+B,EAAEkiB,OAAM,EAAG0gE,OAAOn7E,GAAGwM,GAAG8C,GAAG,OAAOA,IAAI,OAAO,SAAS7F,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE+b,EAAEi4D,QAAQ17D,EAAElgB,QAAQ,oBAAoB4H,GAAG,cAAcoK,KAAK0+D,EAAE9oE,KAAK,OAAO,SAASsY,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQ4C,EAAElgB,QAAQ,SAASkgB,GAAG,IAAIyD,EAAEzD,GAAG,MAAM5Y,UAAUgQ,OAAO4I,GAAG,qBAAqB,OAAOA,IAAI,OAAO,SAASA,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQ4C,EAAElgB,SAAS2jB,GAAE,WAAY,OAAO,GAAGrY,OAAOE,eAAe,GAAG,EAAE,CAACgqB,IAAI,WAAW,OAAO,KAAK,OAAO,KAAK,SAAStV,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ4C,EAAElgB,QAAQ,SAASkgB,EAAElR,EAAEsO,GAAG,IAAI7U,EAAEkb,EAAE3U,GAAGvG,KAAKyX,EAAEwwD,EAAErtD,EAAEnD,EAAEzX,EAAEb,EAAE,EAAE0V,IAAI4C,EAAEzX,GAAG6U,IAAI,OAAO,SAAS4C,EAAElR,GAAGkR,EAAElgB,QAAQ,SAASkgB,GAAG,MAAM,kBAAkBA,EAAE,OAAOA,EAAE,oBAAoBA,IAAI,KAAK,SAASA,EAAElR,EAAEsO,GAAG,IAAIqG,EAAE+sD,EAAE9oE,GAAE,SAAU0V,EAAE7U,GAAGioE,EAAE,GAAG/sD,EAAElb,EAAEb,EAAE,oBAAoB+b,EAAEA,EAAExZ,MAAM6E,EAAE0hE,GAAG/sD,OAAE,IAAS/b,IAAIsY,EAAElgB,QAAQ4H,IAAtF,CAA2F,qBAAqB6qF,MAAMA,MAAK,WAAY,SAASvyE,IAAI,IAAIlR,EAAE1D,OAAO60B,yBAAyBzuB,SAAS,iBAAiB,IAAI1C,GAAG,kBAAkB0C,UAAUA,SAASs3L,cAAc,OAAOt3L,SAASs3L,cAAc,GAAGh6L,GAAGA,EAAEwmB,MAAMtV,GAAGxO,SAASs3L,cAAc,OAAOt3L,SAASs3L,cAAc,IAAI,MAAM,IAAIn+L,MAAM,MAAM2T,GAAG,IAAIlB,EAAEqG,EAAE+sD,EAAE9oE,EAAE,kCAAkCa,EAAE,6BAA6B+N,EAAE5O,EAAE+L,KAAK6K,EAAEpT,QAAQ3C,EAAEkL,KAAK6K,EAAEpT,OAAO+8L,EAAE3xL,GAAGA,EAAE,KAAI,EAAGiJ,EAAEjJ,GAAGA,EAAE,KAAI,EAAG6M,EAAE3R,SAASyB,SAASV,KAAKjC,QAAQkB,SAASyB,SAASN,KAAK,IAAIhL,EAAE6J,SAASu3L,qBAAqB,UAAUd,IAAI9kL,IAAI/F,EAAE5L,SAASysJ,gBAAgB+qC,UAAUvlL,EAAE,IAAI/R,OAAO,sBAAsB6N,EAAE,GAAG,iDAAiD,KAAKixD,EAAEpzD,EAAE9M,QAAQmT,EAAE,MAAM5U,QAAQ,IAAI,IAAIwT,EAAE,EAAEA,EAAE1a,EAAEC,OAAOya,IAAI,CAAC,GAAG,gBAAgB1a,EAAE0a,GAAG5e,WAAW,OAAOkE,EAAE0a,GAAG,GAAG1a,EAAE0a,GAAGm+E,MAAMynG,EAAE,OAAOtgM,EAAE0a,GAAG,GAAG4lL,IAAI9kL,GAAGxb,EAAE0a,GAAG+iF,WAAWz9F,EAAE0a,GAAG+iF,UAAUv2F,SAAS2hE,EAAE,OAAO7oE,EAAE0a,GAAG,OAAO,MAAM,OAAOrC,MAAM,KAAK,SAASA,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEshB,SAASzjF,SAAS,mBAAmBoV,EAAEyvE,gBAAgBzvE,EAAEyvE,cAAc,SAASlzE,GAAG,OAAOwwD,EAAEvxE,KAAK+gB,KAAKA,EAAElgB,QAAQ2jB,EAAEyvE,eAAe,OAAO,SAASlzE,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,QAAQrK,OAAOiN,EAAElgB,QAAQ,SAASkgB,EAAElR,EAAEsO,GAAG,OAAOtO,GAAGsO,EAAEqG,EAAEzD,EAAElR,GAAGlH,OAAO,KAAK,OAAO,SAASoY,EAAElR,GAAG,IAAIsO,EAAE,EAAEqG,EAAE5V,KAAK6pF,SAAS13E,EAAElgB,QAAQ,SAASkgB,GAAG,MAAM,UAAU5I,YAAO,IAAS4I,EAAE,GAAGA,GAAG,QAAQ5C,EAAEqG,GAAGpV,SAAS,MAAM,KAAK,SAAS2R,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ4C,EAAElgB,QAAQ2jB,EAAE,SAASzD,EAAElR,EAAEsO,GAAG,OAAOozD,EAAErtD,EAAEnD,EAAElR,EAAEpH,EAAE,EAAE0V,KAAK,SAAS4C,EAAElR,EAAEsO,GAAG,OAAO4C,EAAElR,GAAGsO,EAAE4C,IAAI,KAAK,SAASA,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAEgK,OAAOrL,UAAUoN,KAAKlL,EAAE6O,OAAO/Q,UAAUiK,QAAQgG,EAAE5O,EAAEugM,EAAE,WAAW,IAAIjoL,EAAE,IAAIlR,EAAE,MAAM,OAAOpH,EAAEzI,KAAK+gB,EAAE,KAAKtY,EAAEzI,KAAK6P,EAAE,KAAK,IAAIkR,EAAE3I,WAAW,IAAIvI,EAAEuI,UAAvF,GAAoGkI,EAAEixD,EAAE23H,eAAe33H,EAAEy4H,aAAa9lL,OAAE,IAAS,OAAO1P,KAAK,IAAI,GAAG9L,EAAEsgM,GAAG9kL,GAAG5D,EAAE5X,IAAI2O,EAAE,SAAS0J,GAAG,IAAIlR,EAAEsO,EAAEozD,EAAEl6D,EAAE3O,EAAE/I,KAAKyjB,EAAE9C,GAAG5X,EAAEygM,OAAO9pL,EAAEmF,EAAExkB,KAAK0I,GAAG8I,EAAE9I,EAAEW,OAAOiO,EAAE,EAAEgH,EAAEyC,EAAE,OAAOqC,IAAI/D,EAAEA,EAAEhO,QAAQ,IAAI,KAAK,IAAIgO,EAAE3a,QAAQ,OAAO2a,GAAG,KAAKf,EAAEnG,OAAO4I,GAAG9S,MAAMvF,EAAE0P,WAAW1P,EAAE0P,UAAU,KAAK1P,EAAE2yG,WAAW3yG,EAAE2yG,WAAW,OAAOt6F,EAAErY,EAAE0P,UAAU,MAAM5G,EAAE,OAAOA,EAAE,IAAI8M,EAAE,IAAIA,EAAEhH,KAAK6G,EAAE,IAAI1L,OAAO,OAAOjB,EAAE,IAAI6N,IAAI6E,IAAI/F,EAAE,IAAI1L,OAAO,IAAIjB,EAAE,WAAW6N,IAAI2pL,IAAIn5L,EAAEnH,EAAE0P,WAAWm5D,EAAE9oE,EAAEzI,KAAKojB,EAAEjF,EAAEzV,EAAE4V,GAAG8E,EAAEmuD,GAAGA,EAAEt/C,MAAMs/C,EAAEt/C,MAAMhkB,MAAMqJ,GAAGi6D,EAAE,GAAGA,EAAE,GAAGtjE,MAAMqJ,GAAGi6D,EAAEpoE,MAAMT,EAAE0P,UAAU1P,EAAE0P,WAAWm5D,EAAE,GAAG5oE,QAAQD,EAAE0P,UAAU,EAAE4wL,GAAGz3H,IAAI7oE,EAAE0P,UAAU1P,EAAE2mF,OAAO9d,EAAEpoE,MAAMooE,EAAE,GAAG5oE,OAAOkH,GAAGqU,GAAGqtD,GAAGA,EAAE5oE,OAAO,GAAGW,EAAEtJ,KAAKuxE,EAAE,GAAGpzD,GAAE,WAAY,IAAI9G,EAAE,EAAEA,EAAElG,UAAUxI,OAAO,EAAE0O,SAAI,IAASlG,UAAUkG,KAAKk6D,EAAEl6D,QAAG,MAAWk6D,IAAIxwD,EAAElgB,QAAQwW,GAAG,OAAO,SAAS0J,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAE,kBAAkB9oE,EAAE,SAASsY,EAAElR,GAAG,IAAIsO,EAAE9G,EAAE/N,EAAEyX,IAAI,OAAO5C,GAAGmC,GAAGnC,GAAG6qL,IAAI,mBAAmBn5L,EAAE2U,EAAE3U,KAAKA,IAAIvG,EAAEb,EAAEikC,UAAU,SAAS3rB,GAAG,OAAO5I,OAAO4I,GAAG1P,QAAQkgE,EAAE,KAAKzrE,eAAeuR,EAAE5O,EAAEzG,KAAK,GAAGgnM,EAAEvgM,EAAE4sF,OAAO,IAAI/0E,EAAE7X,EAAE2sF,SAAS,IAAIr0E,EAAElgB,QAAQ4H,GAAG,OAAO,SAASsY,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ6qL,EAAE7qL,EAAE,QAAQmC,EAAEnC,EAAE,QAAQ+F,EAAE/F,EAAE,QAAQzV,EAAEyV,EAAE,QAAQiF,EAAEjF,EAAE,QAAQkB,EAAElB,EAAE,QAAQ3M,EAAE4R,EAAE,sBAAsB9L,EAAE,iBAAiBgH,EAAE,iCAAiC7d,EAAE4e,GAAG,KAAKkyD,GAAE,WAAY,IAAIxwD,EAAE,GAAG,OAAOA,EAAEvP,IAAG,EAAGuP,EAAEngB,SAAS,KAAKmgB,KAAK0D,EAAE/b,EAAE,UAAUya,EAAE,SAASpC,GAAG,IAAIzX,EAAEyX,GAAG,OAAM,EAAG,IAAIlR,EAAEkR,EAAEvP,GAAG,YAAO,IAAS3B,IAAIA,EAAEpH,EAAEsY,IAAI1C,GAAG5d,IAAIgkB,EAAED,EAAE,CAAC1W,OAAO,QAAQikB,OAAM,EAAG0gE,OAAOp0E,GAAG,CAACzd,OAAO,SAASmgB,GAAG,IAAIlR,EAAEsO,EAAEqG,EAAE+sD,EAAE9oE,EAAEa,EAAE+N,EAAE1X,MAAM+I,EAAEwb,EAAE5a,EAAE,GAAG8Z,EAAE,EAAE,IAAIvT,GAAG,EAAE2U,EAAErT,UAAUxI,OAAOkH,EAAE2U,EAAE3U,IAAI,GAAGpH,GAAG,IAAIoH,EAAEvG,EAAE6H,UAAUtB,GAAGsT,EAAE1a,GAAG,CAAC,GAAG8oE,EAAEy3H,EAAEvgM,EAAEE,QAAQya,EAAEmuD,EAAEj6D,EAAE,MAAMnP,UAAUmW,GAAG,IAAIH,EAAE,EAAEA,EAAEozD,EAAEpzD,IAAIiF,IAAIjF,KAAK1V,GAAG6X,EAAE5X,EAAE0a,EAAE3a,EAAE0V,QAAQ,CAAC,GAAGiF,GAAG9L,EAAE,MAAMnP,UAAUmW,GAAGgC,EAAE5X,EAAE0a,IAAI3a,GAAG,OAAOC,EAAEC,OAAOya,EAAE1a,MAAM,OAAO,SAASqY,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAElL,OAAOE,eAAewD,EAAEqU,EAAEM,EAAEnN,EAAE,SAAS0J,EAAElR,EAAEsO,GAAG,GAAG1V,EAAEsY,GAAGlR,EAAEvG,EAAEuG,GAAE,GAAIpH,EAAE0V,GAAGozD,EAAE,IAAI,OAAOl6D,EAAE0J,EAAElR,EAAEsO,GAAG,MAAMqG,IAAI,GAAG,QAAQrG,GAAG,QAAQA,EAAE,MAAMhW,UAAU,2BAA2B,MAAM,UAAUgW,IAAI4C,EAAElR,GAAGsO,EAAEpa,OAAOgd,IAAI,OAAO,SAASA,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,QAAQwrL,kBAAkBp4H,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ6qL,EAAE,WAAW,OAAOrpM,MAAMohB,EAAElgB,QAAQ,SAASkgB,EAAElR,EAAEsO,GAAG,IAAImC,EAAEzQ,EAAE,YAAY,OAAOkR,EAAE3Z,UAAUmqE,EAAE/sD,EAAE,CAACggB,KAAK/7B,EAAE,EAAE0V,KAAK7U,EAAEyX,EAAET,GAAE,GAAG,GAAIjJ,EAAEiJ,GAAG0oL,EAAEjoL,IAAI,OAAO,SAASA,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,QAAQ,SAASozD,EAAExwD,EAAElR,GAAG,OAAO4C,OAAOsO,EAAElR,GAAGA,EAAEq5L,cAAc1kL,GAAE,WAAY,IAAIzD,EAAEwwD,EAAE,IAAI,KAAK,OAAOxwD,EAAE3I,UAAU,EAAE,MAAM2I,EAAEvM,KAAK,WAAW3E,EAAEm6L,aAAaxlL,GAAE,WAAY,IAAIzD,EAAEwwD,EAAE,KAAK,MAAM,OAAOxwD,EAAE3I,UAAU,EAAE,MAAM2I,EAAEvM,KAAK,WAAWy1L,KAAK,SAASlpL,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ6qL,EAAE7qL,EAAE,QAAQmC,EAAEnC,EAAE,QAAQ+F,EAAE/F,EAAE,QAAQzV,EAAEyV,EAAE,QAAQiF,EAAEjF,EAAE,QAAQkB,EAAElB,EAAE,QAAQ3M,EAAE2M,EAAE,QAAQ7G,EAAE6G,EAAE,QAAQG,EAAEH,EAAE,QAAQ1d,EAAE0d,EAAE,QAAQsG,EAAEtG,EAAE,QAAQgF,EAAEhF,EAAE,QAAQE,EAAEF,EAAE,QAAQ+G,EAAE/G,EAAE,QAAQqI,EAAErI,EAAE,QAAQ6F,EAAE7F,EAAE,QAAQyI,EAAEzI,EAAE,QAAQyF,EAAEzF,EAAE,QAAQ7C,EAAE6C,EAAE,QAAQoI,EAAEpI,EAAE,QAAQ2F,EAAE3F,EAAE,QAAQwI,EAAExI,EAAE,QAAQ0S,EAAE1S,EAAE,QAAQgJ,EAAEhJ,EAAE,QAAQ0F,EAAE1F,EAAE,QAAQ4I,EAAE5I,EAAE,QAAQsI,EAAEtI,EAAE,QAAQ47F,EAAE57F,EAAE,QAAQ2I,EAAE3I,EAAE,QAAQ0I,EAAE1I,EAAE,QAAQmI,EAAEnI,EAAE,QAAQxY,QAAQoe,EAAE8M,EAAE,UAAU3J,EAAE,SAAS4yE,EAAE,YAAYowG,EAAEnjL,EAAE,eAAe9C,EAAE4C,EAAE+M,IAAIxN,EAAES,EAAE2tE,UAAUttE,GAAGD,EAAE9a,OAAO2tF,GAAGvoC,EAAEggB,EAAElxC,OAAOha,EAAE5d,EAAE,OAAO,aAAayd,EAAEU,EAAE1C,EAAEiC,EAAEvC,EAAEM,EAAE8C,EAAER,EAAEtC,EAAEkD,EAAE9L,EAAE4I,EAAEwC,EAAEC,EAAE,WAAWV,EAAEU,EAAE,cAAcwjL,GAAGxjL,EAAE,6BAA6ByjL,GAAGzjL,EAAE,6BAA6B0jL,GAAG1jL,EAAE,OAAO2jL,GAAG/4H,EAAEg5H,QAAQC,IAAIF,KAAKA,GAAGxwG,KAAKwwG,GAAGxwG,GAAG2wG,UAAUv6G,GAAG74E,GAAG6M,GAAE,WAAY,OAAO,GAAGf,EAAEgD,EAAE,GAAG,IAAI,CAACkQ,IAAI,WAAW,OAAOlQ,EAAExmB,KAAK,IAAI,CAACoE,MAAM,IAAIsT,MAAMA,KAAK,SAAS0J,EAAElR,EAAEsO,GAAG,IAAIqG,EAAE0B,EAAEe,EAAEpX,GAAG2U,UAAUyC,EAAEpX,GAAGsW,EAAEpF,EAAElR,EAAEsO,GAAGqG,GAAGzD,IAAIkG,GAAGd,EAAEc,EAAEpX,EAAE2U,IAAI2B,EAAEukL,GAAG,SAAS3pL,EAAElR,GAAG,IAAIsO,EAAEuI,EAAE3F,GAAGoC,EAAEouC,EAAEuoC,IAAI,OAAO71E,EAAE9F,EAAE,CAAC7X,KAAK4gB,EAAEupE,IAAI1vE,EAAEnV,YAAYiE,IAAIwH,IAAI8G,EAAEvS,YAAYiE,GAAGsO,GAAGwsL,GAAGrqL,EAAE,SAASS,GAAG,MAAM,iBAAiBA,GAAG,SAASA,GAAG,OAAO5U,OAAO4U,aAAawwC,GAAGq5I,GAAG,SAAS7pL,EAAElR,EAAEsO,GAAG4C,IAAIkG,GAAG2jL,GAAG3kL,EAAEpW,EAAEsO,GAAG3M,EAAEuP,GAAG,IAAIyD,EAAE/jB,EAAEoP,GAAE,GAAI,OAAO2B,EAAE2M,GAAGzV,EAAEge,EAAElC,IAAIrG,EAAE2Y,YAAYpuB,EAAEqY,EAAEgD,IAAIhD,EAAEgD,GAAGS,KAAKzD,EAAEgD,GAAGS,IAAG,GAAIrG,EAAEgF,EAAEhF,EAAE,CAAC2Y,WAAWrS,EAAE,GAAE,OAAQ/b,EAAEqY,EAAEgD,IAAIoC,EAAEpF,EAAEgD,EAAEU,EAAE,EAAE,KAAK1D,EAAEgD,GAAGS,IAAG,GAAI0rE,GAAGnvE,EAAEyD,EAAErG,IAAIgI,EAAEpF,EAAEyD,EAAErG,IAAI4wB,GAAG,SAAShuB,EAAElR,GAAG2B,EAAEuP,GAAG,IAAI5C,EAAEG,EAAEzO,GAAG2U,EAAEnG,EAAEF,GAAGvd,OAAOiqM,GAAG1sL,IAAI,OAAOmI,EAAE9B,GAAE,SAAU3U,GAAGwH,IAAIyzL,GAAG9qM,KAAKme,EAAEtO,IAAI+6L,GAAG7pL,EAAElR,EAAEsO,EAAEtO,OAAOkR,GAAGgqL,GAAG,SAAShqL,EAAElR,GAAG,YAAO,IAASA,EAAEsT,EAAEpC,GAAGguB,GAAG5rB,EAAEpC,GAAGlR,IAAIi7L,GAAG,SAAS/pL,GAAG,IAAIlR,EAAEpP,EAAEsgB,GAAE,GAAI5C,EAAEiJ,EAAEpnB,KAAKL,KAAKkQ,GAAG,QAAQlQ,OAAOsnB,GAAGve,EAAEge,EAAE7W,KAAKnH,EAAEud,EAAEpW,QAAQsO,IAAIzV,EAAE/I,KAAKkQ,KAAKnH,EAAEge,EAAE7W,IAAInH,EAAE/I,KAAKokB,IAAIpkB,KAAKokB,GAAGlU,KAAKsO,IAAI6sL,GAAG,SAASjqL,EAAElR,GAAG,IAAIsO,EAAEG,EAAEyC,GAAGyD,EAAE/jB,EAAEoP,GAAE,GAAI,GAAGsO,IAAI8I,IAAIve,EAAEge,EAAElC,IAAI9b,EAAEud,EAAEzB,GAAG,CAAC,IAAI+sD,EAAErrD,EAAE/H,EAAEqG,GAAG,OAAO+sD,IAAI7oE,EAAEge,EAAElC,IAAI9b,EAAEyV,EAAE4F,IAAI5F,EAAE4F,GAAGS,KAAK+sD,EAAEz6C,YAAW,GAAIy6C,IAAIrrC,GAAG,SAASnlB,GAAG,IAAIlR,EAAEmX,EAAE1I,EAAEyC,IAAI5C,EAAE,GAAG,OAAOmI,EAAEzW,GAAE,SAAUkR,GAAGrY,EAAEge,EAAE3F,IAAIrY,EAAEye,EAAEpG,IAAI5C,EAAEjV,KAAK6X,MAAM5C,GAAG0sL,GAAG,SAAS9pL,GAAG,IAAIlR,EAAEkR,IAAIkG,EAAE9I,EAAE6I,EAAEnX,EAAEoW,EAAE3H,EAAEyC,IAAIyD,EAAE,GAAG,OAAO8B,EAAEnI,GAAE,SAAU4C,IAAIrY,EAAEge,EAAE3F,IAAIlR,IAAInH,EAAEue,EAAElG,IAAIyD,EAAEtb,KAAKwd,EAAE3F,OAAOyD,GAAG,GAAGwkL,IAAIz3I,EAAE,WAAW,GAAG5xD,gBAAgB4xD,EAAE,MAAMppD,UAAU,+BAA+B,IAAI4Y,EAAE5P,UAAUxI,aAAQ,IAASwI,UAAU,GAAGgH,OAAOhH,UAAU,SAAI,EAAOtB,EAAEgU,EAAE9C,GAAG5C,EAAE,SAAS4C,GAAGphB,OAAOsnB,GAAG9I,EAAEne,KAAKimB,EAAElF,GAAGrY,EAAE/I,KAAKokB,IAAIrb,EAAE/I,KAAKokB,GAAGlU,KAAKlQ,KAAKokB,GAAGlU,IAAG,GAAIqgF,GAAGvwF,KAAKkQ,EAAE4U,EAAE,EAAE1D,KAAK,OAAO1J,GAAGmzL,IAAIt6G,GAAGjpE,EAAEpX,EAAE,CAAC0vB,cAAa,EAAG3L,IAAIzV,IAAIusL,GAAG76L,EAAEkR,IAAI+C,EAAEytC,EAAEuoC,GAAG,YAAW,WAAY,OAAO1zE,EAAEzmB,MAAM8wF,OAAO3sE,EAAEytC,EAAE,iBAAgB,SAAUxwC,GAAG,OAAO2pL,GAAG7mL,EAAE9C,GAAGA,MAAMzF,EAAE4I,EAAE4mL,GAAGlnL,EAAEM,EAAE0mL,GAAGhkL,EAAE1C,EAAE8mL,GAAG9lL,EAAEhB,EAAEsC,EAAEtC,EAAEgiB,GAAGliB,EAAEE,EAAE2mL,GAAGpkL,EAAEvC,EAAE,SAASnD,GAAG,OAAO2pL,GAAG3jL,EAAEhG,GAAGA,IAAI1J,IAAI8O,EAAEorC,EAAEuoC,GAAG,cAAc,CAACv6D,cAAa,EAAGlJ,IAAI,WAAW,OAAOjQ,EAAEzmB,MAAMiM,eAAetC,GAAGwa,EAAEmD,EAAE,uBAAuB6jL,GAAG,CAACtzG,QAAO,MAAOhzE,EAAE,CAAC6qE,QAAO,EAAGzgC,MAAK,EAAG6jC,QAAQu2G,EAAEt2G,MAAMs2G,GAAG,CAAC3oK,OAAOkxB,IAAIjrC,EAAEjI,EAAEgsL,KAAI,SAAUtpL,GAAGg5F,EAAEh5F,MAAMyD,EAAE,CAAC1W,OAAOoZ,EAAEqrE,MAAK,EAAGE,QAAQu2G,GAAG,CAAC99B,IAAI,SAASnqJ,GAAG,IAAIlR,EAAEsI,OAAO4I,GAAG,GAAGrY,EAAEyhM,GAAGt6L,GAAG,OAAOs6L,GAAGt6L,GAAG,IAAIsO,EAAEozC,EAAE1hD,GAAG,OAAOs6L,GAAGt6L,GAAGsO,EAAEisL,GAAGjsL,GAAGtO,EAAEsO,GAAG8sL,OAAO,SAASlqL,GAAG,IAAI4pL,GAAG5pL,GAAG,MAAM5Y,UAAU4Y,EAAE,oBAAoB,GAAGrY,EAAE0hM,GAAGrpL,GAAG,OAAOqpL,GAAGrpL,IAAImqL,UAAU,WAAWV,IAAG,GAAIW,UAAU,WAAWX,IAAG,KAAMhmL,EAAE,CAAC1W,OAAO,SAASykF,MAAK,EAAGE,QAAQu2G,EAAEt2G,MAAMr7E,GAAG,CAAC/P,OAAOyjM,GAAG1+L,eAAeu+L,GAAGx+L,iBAAiB2iC,GAAG/N,yBAAyBgqK,KAAKxmL,EAAE,CAAC1W,OAAO,SAASykF,MAAK,EAAGE,QAAQu2G,GAAG,CAAChxL,oBAAoBkuB,GAAGwvD,sBAAsBm1G,KAAKrmL,EAAE,CAAC1W,OAAO,SAASykF,MAAK,EAAGE,OAAOvuE,GAAE,WAAYF,EAAEE,EAAE,OAAO,CAACwxE,sBAAsB,SAAS30E,GAAG,OAAOiD,EAAEE,EAAE5M,EAAEyJ,OAAOsF,EAAE,CAAC,IAAI+kL,IAAIpC,GAAG9kL,GAAE,WAAY,IAAInD,EAAEwwC,IAAI,MAAM,UAAUlrC,EAAE,CAACtF,KAAK,MAAMsF,EAAE,CAAChP,EAAE0J,KAAK,MAAMsF,EAAEla,OAAO4U,OAAOyD,EAAE,CAAC1W,OAAO,OAAOykF,MAAK,EAAGE,OAAO24G,IAAI,CAACt7L,UAAU,SAASiR,EAAElR,EAAEsO,GAAG,IAAIqG,EAAE+sD,EAAE,CAACxwD,GAAGtY,EAAE,EAAE,MAAM0I,UAAUxI,OAAOF,EAAE8oE,EAAEroE,KAAKiI,UAAU1I,MAAM,GAAG+b,EAAE3U,GAAGwP,EAAExP,SAAI,IAASkR,KAAK4pL,GAAG5pL,GAAG,OAAOqC,EAAEvT,KAAKA,EAAE,SAASkR,EAAElR,GAAG,GAAG,mBAAmB2U,IAAI3U,EAAE2U,EAAExkB,KAAKL,KAAKohB,EAAElR,KAAK86L,GAAG96L,GAAG,OAAOA,IAAI0hE,EAAE,GAAG1hE,EAAEwW,EAAErb,MAAM,KAAKumE,MAAMhgB,EAAEuoC,GAAGowG,IAAI3jL,EAAEgrC,EAAEuoC,GAAGowG,EAAE34I,EAAEuoC,GAAG9C,SAASlwE,EAAEyqC,EAAErqC,GAAGC,EAAEpD,IAAG,GAAIsnL,KAAK,SAAStqL,EAAElR,GAAG,IAAIsO,EAAEvP,KAAK2pD,KAAK/zC,EAAE5V,KAAKC,MAAMkS,EAAElgB,QAAQ,SAASkgB,GAAG,OAAO3C,MAAM2C,GAAGA,GAAG,GAAGA,EAAE,EAAEyD,EAAErG,GAAG4C,KAAKuqL,KAAK,SAASvqL,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQqG,EAAE,CAAC1W,OAAO,SAASikB,OAAM,EAAG0gE,OAAO,IAAIj+E,OAAO+8D,GAAG,CAAC/8D,KAAK+8D,KAAKg6H,KAAK,SAASxqL,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,QAAQ4C,EAAElgB,QAAQ,WAAW,IAAIkgB,EAAEyD,EAAE7kB,MAAMkQ,EAAE,GAAG,OAAOkR,EAAEsuE,SAASx/E,GAAG,KAAKkR,EAAEq6F,aAAavrG,GAAG,KAAKkR,EAAEs6F,YAAYxrG,GAAG,KAAKkR,EAAEyqL,SAAS37L,GAAG,KAAKkR,EAAEuoL,UAAUz5L,GAAG,KAAKkR,EAAEooL,SAASt5L,GAAG,KAAKA,IAAI47L,KAAK,SAAS1qL,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAE+sD,EAAE9oE,EAAEa,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ6qL,EAAE7qL,EAAE,QAAQmC,EAAEnC,EAAE,QAAQ+F,EAAE/F,EAAE,QAAQzV,EAAEyV,EAAE,QAAQiF,EAAEc,EAAE,YAAY7E,GAAE,EAAG7N,EAAE,WAAW,OAAO7R,MAAM,GAAG6O,OAAO/F,EAAE,GAAG+F,OAAO,SAAS/F,GAAG8oE,EAAEl6D,EAAEA,EAAE5O,IAAI8oE,IAAIplE,OAAO/E,YAAYod,EAAE+sD,IAAIlyD,GAAE,GAAI,IAAI/H,OAAE,GAAQkN,GAAGlb,GAAE,WAAY,IAAIyX,EAAE,GAAG,OAAOyD,EAAEpB,GAAGpjB,KAAK+gB,KAAKA,KAAKzJ,IAAIkN,EAAE,IAAI9b,IAAI4O,GAAGgJ,EAAEkE,EAAEpB,IAAI4lL,EAAExkL,EAAEpB,EAAE5R,GAAGuP,EAAElgB,QAAQ,CAAC8oM,kBAAkBnlL,EAAEolL,uBAAuBvqL,IAAIqsL,KAAK,SAAS3qL,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ4C,EAAElgB,QAAQ2jB,EAAE,GAAGpV,SAAS,WAAW,MAAM,WAAWmiE,EAAE5xE,MAAM,MAAMgsM,KAAK,SAAS5qL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ6qL,EAAE7qL,EAAE,QAAQmC,EAAEixD,EAAE,OAAOrtD,EAAEM,EAAE6b,OAAO33B,EAAEsgM,EAAE9kL,EAAEA,GAAGA,EAAE60E,eAAezvF,EAAEyX,EAAElgB,QAAQ,SAASkgB,GAAG,OAAOtY,EAAE6X,EAAES,KAAK1J,GAAG5O,EAAEyb,EAAEnD,GAAGT,EAAES,GAAGmD,EAAEnD,GAAGT,EAAES,GAAGrY,EAAE,UAAUqY,IAAIT,EAAES,KAAK6qL,KAAK,SAAS7qL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ6qL,EAAE,GAAG9/L,KAAKoX,EAAE,SAASS,GAAG,IAAIlR,EAAE,GAAGkR,EAAE5C,EAAE,GAAG4C,EAAET,EAAE,GAAGS,EAAEmD,EAAE,GAAGnD,EAAErY,EAAE,GAAGqY,EAAEqC,EAAE,GAAGrC,EAAE1B,EAAE,GAAG0B,GAAGrY,EAAE,OAAO,SAAS8I,EAAE8F,EAAEgH,EAAE7d,GAAG,IAAI,IAAIgkB,EAAEtB,EAAE9E,EAAE5V,EAAE+I,GAAG0T,EAAEqsD,EAAElzD,GAAGmI,EAAEhC,EAAElN,EAAEgH,EAAE,GAAG0F,EAAE1a,EAAE4b,EAAEvc,QAAQie,EAAE,EAAEhD,EAAEnjB,GAAG4W,EAAEiE,EAAEzL,EAAE+T,EAAEpS,EAAEwS,GAAG7F,GAAGiF,EAAEQ,EAAEpS,EAAE,QAAG,EAAOwS,EAAE4C,EAAEA,IAAI,IAAIvH,GAAGuH,KAAK1B,KAAKT,EAAES,EAAE0B,GAAGzD,EAAEqD,EAAE/B,EAAEmC,EAAEvI,GAAG0C,GAAG,GAAGlR,EAAEyL,EAAEsL,GAAGzD,OAAO,GAAGA,EAAE,OAAOpC,GAAG,KAAK,EAAE,OAAM,EAAG,KAAK,EAAE,OAAO0D,EAAE,KAAK,EAAE,OAAOmC,EAAE,KAAK,EAAEoiL,EAAEhpM,KAAKsb,EAAEmJ,QAAQ,OAAO1D,GAAG,KAAK,EAAE,OAAM,EAAG,KAAK,EAAEioL,EAAEhpM,KAAKsb,EAAEmJ,GAAG,OAAO/b,GAAG,EAAE4X,GAAG4D,EAAEA,EAAE5I,IAAIyF,EAAElgB,QAAQ,CAAC8E,QAAQ2a,EAAE,GAAGlF,IAAIkF,EAAE,GAAGxI,OAAOwI,EAAE,GAAG6mD,KAAK7mD,EAAE,GAAGk+F,MAAMl+F,EAAE,GAAGi7E,KAAKj7E,EAAE,GAAG4iD,UAAU5iD,EAAE,GAAGurL,UAAUvrL,EAAE,KAAKwrL,KAAK,SAAS/qL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQ4C,EAAElgB,QAAQ,SAASkgB,EAAElR,GAAG,IAAI2U,EAAEzD,GAAG,OAAOA,EAAE,IAAI5C,EAAEozD,EAAE,GAAG1hE,GAAG,mBAAmBsO,EAAE4C,EAAE3R,YAAYoV,EAAE+sD,EAAEpzD,EAAEne,KAAK+gB,IAAI,OAAOwwD,EAAE,GAAG,mBAAmBpzD,EAAE4C,EAAEi2E,WAAWxyE,EAAE+sD,EAAEpzD,EAAEne,KAAK+gB,IAAI,OAAOwwD,EAAE,IAAI1hE,GAAG,mBAAmBsO,EAAE4C,EAAE3R,YAAYoV,EAAE+sD,EAAEpzD,EAAEne,KAAK+gB,IAAI,OAAOwwD,EAAE,MAAMppE,UAAU,6CAA6C4jM,KAAK,SAAShrL,EAAElR,GAAGkR,EAAElgB,SAAQ,GAAImrM,KAAK,SAASjrL,EAAElR,GAAG,IAAIsO,EAAE,GAAG/O,SAAS2R,EAAElgB,QAAQ,SAASkgB,GAAG,OAAO5C,EAAEne,KAAK+gB,GAAG9S,MAAM,GAAG,KAAKg+L,KAAK,SAASlrL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE,qBAAqBa,EAAEkb,EAAE/b,IAAI8oE,EAAE9oE,EAAE,IAAIsY,EAAElgB,QAAQyI,GAAG4iM,KAAK,SAASnrL,EAAElR,GAAG,IAAIsO,EAAEA,EAAE,WAAW,OAAOxe,KAAlB,GAA0B,IAAIwe,EAAEA,GAAG,IAAI00E,SAAS,cAAb,GAA8B,MAAMruE,GAAG,kBAAkBzQ,SAASoK,EAAEpK,QAAQgN,EAAElgB,QAAQsd,GAAGguL,KAAK,SAASprL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQzZ,QAAQ4E,EAAE6U,EAAE,QAAQ4C,EAAElgB,QAAQ,SAASkgB,EAAElR,GAAG,IAAIsO,EAAE9G,EAAEk6D,EAAExwD,GAAGioL,EAAE,EAAE1oL,EAAE,GAAG,IAAInC,KAAK9G,GAAGmN,EAAElb,EAAE6U,IAAIqG,EAAEnN,EAAE8G,IAAImC,EAAEpX,KAAKiV,GAAG,MAAMtO,EAAElH,OAAOqgM,EAAExkL,EAAEnN,EAAE8G,EAAEtO,EAAEm5L,SAASvgM,EAAE6X,EAAEnC,IAAImC,EAAEpX,KAAKiV,IAAI,OAAOmC,IAAI8rL,KAAK,SAASrrL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE+b,EAAEjS,SAASjJ,EAAEioE,EAAE9oE,IAAI8oE,EAAE9oE,EAAE2K,eAAe2N,EAAElgB,QAAQ,SAASkgB,GAAG,OAAOzX,EAAEb,EAAE2K,cAAc2N,GAAG,KAAKsrL,KAAK,SAAStrL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ4C,EAAElgB,QAAQ,SAASkgB,EAAElR,GAAG,IAAI0hE,EAAE/sD,EAAEzD,EAAElR,GAAG,MAAMsO,GAAGqG,EAAEzD,GAAGlR,EAAE,OAAOA,IAAIy8L,KAAK,SAASvrL,EAAElR,GAAGkR,EAAElgB,QAAQ,IAAI0rM,KAAK,SAASxrL,EAAElR,GAAGkR,EAAElgB,QAAQ,SAASkgB,GAAG,IAAI,QAAQA,IAAI,MAAMlR,GAAG,OAAM,KAAM28L,KAAK,SAASzrL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE,SAASsY,GAAG,MAAM,mBAAmBA,EAAEA,OAAE,GAAQA,EAAElgB,QAAQ,SAASkgB,EAAElR,GAAG,OAAOsB,UAAUxI,OAAO,EAAEF,EAAE+b,EAAEzD,KAAKtY,EAAE8oE,EAAExwD,IAAIyD,EAAEzD,IAAIyD,EAAEzD,GAAGlR,IAAI0hE,EAAExwD,IAAIwwD,EAAExwD,GAAGlR,KAAK48L,KAAK,SAAS1rL,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAE,GAAGivE,qBAAqBliB,EAAEplE,OAAO60B,yBAAyBv4B,EAAE8oE,IAAI/sD,EAAExkB,KAAK,CAAC,EAAE,GAAG,GAAG6P,EAAEqU,EAAEzb,EAAE,SAASsY,GAAG,IAAIlR,EAAE0hE,EAAE5xE,KAAKohB,GAAG,QAAQlR,GAAGA,EAAEinB,YAAYtS,GAAGkoL,KAAK,SAAS3rL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQqG,EAAE,aAAamoL,KAAK,SAAS5rL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ4C,EAAElgB,QAAQsL,OAAOunF,iBAAiB,aAAa,GAAG,WAAW,IAAI3yE,EAAElR,GAAE,EAAGsO,EAAE,GAAG,IAAI4C,EAAE5U,OAAO60B,yBAAyB70B,OAAO/E,UAAU,aAAawsB,IAAI7S,EAAE/gB,KAAKme,EAAE,IAAItO,EAAEsO,aAAapT,MAAM,MAAMtC,IAAI,OAAO,SAAS0V,EAAE1V,GAAG,OAAO+b,EAAErG,GAAGozD,EAAE9oE,GAAGoH,EAAEkR,EAAE/gB,KAAKme,EAAE1V,GAAG0V,EAAE24E,UAAUruF,EAAE0V,GAAjN,QAAuN,IAASyuL,KAAK,SAAS7rL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQqG,GAAG+sD,EAAEplE,OAAO/E,UAAU,WAAWqB,EAAE,CAAC+uF,QAAO,KAAMq1G,KAAK,SAAS9rL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQ+F,EAAEqtD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAEb,EAAE,eAAesY,EAAElgB,QAAQ,SAASkgB,EAAElR,EAAEsO,GAAG4C,IAAIwwD,EAAExwD,EAAE5C,EAAE4C,EAAEA,EAAE3Z,UAAUkC,IAAIkb,EAAEzD,EAAEzX,EAAE,CAACi2B,cAAa,EAAGx7B,MAAM8L,MAAMi9L,KAAK,SAAS/rL,EAAElR,EAAEsO,GAAG,aAAaA,EAAE,QAAQ,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ6qL,EAAEvgM,EAAE,WAAW6X,GAAGixD,GAAE,WAAY,IAAIxwD,EAAE,IAAI,OAAOA,EAAEvM,KAAK,WAAW,IAAIuM,EAAE,GAAG,OAAOA,EAAEy1G,OAAO,CAACn/G,EAAE,KAAK0J,GAAG,MAAM,GAAG1P,QAAQ0P,EAAE,WAAWmD,EAAE,WAAW,MAAM,OAAO,IAAI7S,QAAQ,IAAI,MAAxC,GAAiD3I,EAAED,EAAE,WAAW2a,EAAE,WAAW,QAAQ,IAAI1a,IAAI,KAAK,IAAIA,GAAG,IAAI,MAA3C,GAAoD2W,GAAGkyD,GAAE,WAAY,IAAIxwD,EAAE,OAAOlR,EAAEkR,EAAEvM,KAAKuM,EAAEvM,KAAK,WAAW,OAAO3E,EAAE7E,MAAMrL,KAAKwR,YAAY,IAAIgN,EAAE,KAAK9J,MAAM0M,GAAG,OAAO,IAAI5C,EAAExV,QAAQ,MAAMwV,EAAE,IAAI,MAAMA,EAAE,MAAM4C,EAAElgB,QAAQ,SAASkgB,EAAElR,EAAEsO,EAAEzV,GAAG,IAAI8I,EAAE/I,EAAEsY,GAAGzJ,GAAGi6D,GAAE,WAAY,IAAI1hE,EAAE,GAAG,OAAOA,EAAE2B,GAAG,WAAW,OAAO,GAAG,GAAG,GAAGuP,GAAGlR,MAAMyO,EAAEhH,IAAIi6D,GAAE,WAAY,IAAI1hE,GAAE,EAAGsO,EAAE,IAAI,MAAM,UAAU4C,IAAI5C,EAAE,GAAGA,EAAExH,YAAY,GAAGwH,EAAExH,YAAYqyL,GAAG,WAAW,OAAO7qL,GAAGA,EAAEg9F,MAAM,GAAGh9F,EAAE3M,GAAG,IAAIA,IAAI2M,EAAE3J,KAAK,WAAW,OAAO3E,GAAE,EAAG,MAAMsO,EAAE3M,GAAG,KAAK3B,KAAK,IAAIyH,IAAIgH,GAAG,YAAYyC,KAAKT,IAAI4D,GAAGd,IAAI,UAAUrC,IAAI1B,EAAE,CAAC,IAAI5e,EAAE,IAAI+Q,GAAGiT,EAAEtG,EAAE3M,EAAE,GAAGuP,IAAG,SAAUA,EAAElR,EAAEsO,EAAEqG,EAAE+sD,GAAG,OAAO1hE,EAAE2E,OAAOlL,EAAEgO,IAAIi6D,EAAE,CAACnvE,MAAK,EAAG2B,MAAMtD,EAAET,KAAK6P,EAAEsO,EAAEqG,IAAI,CAACpiB,MAAK,EAAG2B,MAAMgd,EAAE/gB,KAAKme,EAAEtO,EAAE2U,IAAI,CAACpiB,MAAK,KAAM,CAACinM,iBAAiBnlL,EAAEklL,6CAA6ChmL,IAAID,EAAEsB,EAAE,GAAGpG,EAAEoG,EAAE,GAAGD,EAAErM,OAAO/Q,UAAU2Z,EAAEoC,GAAGqB,EAAE/R,OAAOrL,UAAUoK,EAAE,GAAG3B,EAAE,SAASkR,EAAElR,GAAG,OAAOwO,EAAEre,KAAK+gB,EAAEphB,KAAKkQ,IAAI,SAASkR,GAAG,OAAO1C,EAAEre,KAAK+gB,EAAEphB,QAAQ+I,GAAG2O,EAAE5E,OAAOrL,UAAUoK,GAAG,QAAO,KAAMu7L,KAAK,SAAShsL,EAAElR,EAAEsO,IAAG,SAAUtO,GAAG,IAAIsO,EAAE,SAAS4C,GAAG,OAAOA,GAAGA,EAAEnS,MAAMA,MAAMmS,GAAGA,EAAElgB,QAAQsd,EAAE,iBAAiBk1E,YAAYA,aAAal1E,EAAE,iBAAiBpK,QAAQA,SAASoK,EAAE,iBAAiBm1E,MAAMA,OAAOn1E,EAAE,iBAAiBtO,GAAGA,IAAI,WAAW,OAAOlQ,KAAlB,IAA2BkzF,SAAS,cAATA,KAA4B7yF,KAAKL,KAAKwe,EAAE,UAAU6uL,KAAK,SAASjsL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ6qL,EAAE3xL,EAAE,YAAYiJ,EAAEjJ,EAAE,eAAe6M,EAAEzb,EAAEsrB,OAAO,IAAI,IAAIrrB,KAAK6oE,EAAE,CAAC,IAAInuD,EAAEoB,EAAE9b,GAAG2W,EAAE+D,GAAGA,EAAEhc,UAAU,GAAGiY,EAAE,CAAC,GAAGA,EAAE2pL,KAAK9kL,EAAE,IAAI5a,EAAE+V,EAAE2pL,EAAE9kL,GAAG,MAAM5M,GAAG+H,EAAE2pL,GAAG9kL,EAAE,GAAG7E,EAAEiB,IAAIhX,EAAE+V,EAAEiB,EAAE5X,GAAG6oE,EAAE7oE,GAAG,IAAI,IAAI8I,KAAK/I,EAAE,GAAG4W,EAAE7N,KAAK/I,EAAE+I,GAAG,IAAIlI,EAAE+V,EAAE7N,EAAE/I,EAAE+I,IAAI,MAAM8F,GAAG+H,EAAE7N,GAAG/I,EAAE+I,OAAOy7L,KAAK,SAASlsL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ4C,EAAElgB,QAAQsL,OAAOqC,MAAM,SAASuS,GAAG,OAAOyD,EAAEzD,EAAEwwD,KAAK27H,KAAK,SAASnsL,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ6qL,EAAE7qL,EAAE,QAAQ+F,EAAE5D,EAAEnC,EAAE,QAAQ+F,EAAEzb,EAAE43B,OAAO,GAAGkxC,GAAG,mBAAmBrtD,MAAM,gBAAgBA,EAAE9c,iBAAY,IAAS8c,IAAItY,aAAa,CAAC,IAAIlD,EAAE,GAAG0a,EAAE,WAAW,IAAIrC,EAAE5P,UAAUxI,OAAO,QAAG,IAASwI,UAAU,QAAG,EAAOgH,OAAOhH,UAAU,IAAItB,EAAElQ,gBAAgByjB,EAAE,IAAIc,EAAEnD,QAAG,IAASA,EAAEmD,IAAIA,EAAEnD,GAAG,MAAM,KAAKA,IAAIrY,EAAEmH,IAAG,GAAIA,GAAGyQ,EAAE8C,EAAEc,GAAG,IAAI7E,EAAE+D,EAAEhc,UAAU8c,EAAE9c,UAAUiY,EAAE1I,YAAYyM,EAAE,IAAI5R,EAAE6N,EAAEjQ,SAASkI,EAAE,gBAAgBa,OAAO+L,EAAE,SAAS5F,EAAE,wBAAwB0qL,EAAE3pL,EAAE,cAAc,CAACkgB,cAAa,EAAGlJ,IAAI,WAAW,IAAItV,EAAE1J,EAAE1X,MAAMA,KAAKq3F,UAAUr3F,KAAKkQ,EAAE2B,EAAExR,KAAK+gB,GAAG,GAAGzX,EAAEZ,EAAEqY,GAAG,MAAM,GAAG,IAAI5C,EAAE7G,EAAEzH,EAAE5B,MAAM,GAAG,GAAG4B,EAAEwB,QAAQiN,EAAE,MAAM,MAAM,KAAKH,OAAE,EAAOA,KAAKqG,EAAE,CAAC6qE,QAAO,EAAGoD,QAAO,GAAI,CAACpyD,OAAOjd,MAAM+pL,KAAK,SAASpsL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE5O,EAAE,YAAYugM,EAAE78L,OAAO/E,UAAU2Z,EAAElgB,QAAQyI,EAAE6C,OAAO2K,eAAe,SAASiK,GAAG,OAAOA,EAAEwwD,EAAExwD,GAAGyD,EAAEzD,EAAE1J,GAAG0J,EAAE1J,GAAG,mBAAmB0J,EAAEpK,aAAaoK,aAAaA,EAAEpK,YAAYoK,EAAEpK,YAAYvP,UAAU2Z,aAAa5U,OAAO68L,EAAE,OAAOoE,KAAK,SAASrsL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQ4C,EAAElgB,SAAS2jB,GAAE,WAAY,SAASzD,KAAK,OAAOA,EAAE3Z,UAAUuP,YAAY,KAAKxK,OAAO2K,eAAe,IAAIiK,KAAKA,EAAE3Z,cAAcimM,KAAK,SAAStsL,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ9G,EAAE8G,EAAE,QAAQ6qL,EAAE,iBAAiB1oL,EAAEhX,EAAEsqB,IAAI1P,EAAE5a,EAAEkrF,UAAUw0G,GAAGjoL,EAAElgB,QAAQwW,EAAEtM,MAAM,SAAQ,SAAUgW,EAAElR,GAAGyQ,EAAE3gB,KAAK,CAAC2G,KAAK0iM,EAAEl7L,OAAO0W,EAAEzD,GAAG5X,MAAM,EAAEmkM,KAAKz9L,OAAM,WAAY,IAAIkR,EAAEmD,EAAEvkB,MAAMkQ,EAAEkR,EAAEjT,OAAOqQ,EAAE4C,EAAEusL,KAAK9oL,EAAEzD,EAAE5X,QAAQ,OAAO0G,GAAG2U,GAAG3U,EAAElH,QAAQoY,EAAEjT,YAAO,EAAO,CAAC/J,WAAM,EAAO3B,MAAK,IAAK,QAAQ+b,EAAE,CAACpa,MAAMygB,EAAEpiB,MAAK,GAAI,UAAU+b,EAAE,CAACpa,MAAM8L,EAAE2U,GAAGpiB,MAAK,GAAI,CAAC2B,MAAM,CAACygB,EAAE3U,EAAE2U,IAAIpiB,MAAK,KAAM,UAAUqG,EAAE8kM,UAAU9kM,EAAEsC,MAAMwmE,EAAE,QAAQA,EAAE,UAAUA,EAAE,YAAYi8H,KAAK,SAASzsL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQtO,EAAEqU,EAAEM,GAAGipL,KAAK,SAAS1sL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAE6U,EAAE,QAAQ4C,EAAElgB,QAAQ,SAASkgB,EAAElR,GAAG,IAAI,IAAIsO,EAAEozD,EAAE1hE,GAAGwH,EAAE/N,EAAE4a,EAAE8kL,EAAEvgM,EAAEyb,EAAE5D,EAAE,EAAEA,EAAEnC,EAAExV,OAAO2X,IAAI,CAAC,IAAI4D,EAAE/F,EAAEmC,GAAGkE,EAAEzD,EAAEmD,IAAI7M,EAAE0J,EAAEmD,EAAE8kL,EAAEn5L,EAAEqU,OAAOwpL,KAAK,SAAS3sL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQ4C,EAAElgB,QAAQkK,MAAMiD,SAAS,SAAS+S,GAAG,MAAM,SAASyD,EAAEzD,KAAK4sL,KAAK,SAAS5sL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE0V,EAAE,QAAQ7U,EAAEb,EAAE,eAAe4O,EAAE,aAAak6D,EAAE,WAAW,OAAOpgE,UAAlB,IAAgC63L,EAAE,SAASjoL,EAAElR,GAAG,IAAI,OAAOkR,EAAElR,GAAG,MAAMsO,MAAM4C,EAAElgB,QAAQ2jB,EAAE+sD,EAAE,SAASxwD,GAAG,IAAIlR,EAAEsO,EAAEqG,EAAE,YAAO,IAASzD,EAAE,YAAY,OAAOA,EAAE,OAAO,iBAAiB5C,EAAE6qL,EAAEn5L,EAAE1D,OAAO4U,GAAGzX,IAAI6U,EAAE9G,EAAEk6D,EAAE1hE,GAAG,WAAW2U,EAAE+sD,EAAE1hE,KAAK,mBAAmBA,EAAE6gF,OAAO,YAAYlsE,IAAIopL,KAAK,SAAS7sL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ1V,EAAE+b,EAAE,QAAQzD,EAAElgB,QAAQ,SAASkgB,GAAG,OAAOtY,EAAEsY,KAAKtY,EAAEsY,GAAGwwD,EAAExwD,MAAM8sL,KAAK,SAAS9sL,EAAElR,EAAEsO,GAAG,aAAa,GAAGA,EAAEqG,EAAE3U,GAAG,qBAAqBkE,OAAO,CAAC,IAAIyQ,EAAEzQ,OAAOxB,SAASs3L,cAAct4H,EAAEpzD,EAAE,QAAQqG,EAAE+sD,IAAI,kBAAkBh/D,UAAUpG,OAAOE,eAAekG,SAAS,gBAAgB,CAAC8jB,IAAIk7C,IAAI,IAAI9oE,EAAE+b,GAAGA,EAAE+8E,IAAI/uF,MAAM,2BAA2B/J,IAAI0V,EAAEkB,EAAE5W,EAAE,IAAgE,SAASa,EAAEyX,GAAG,OAAOzX,EAAE,oBAAoB+2B,QAAQ,kBAAkBA,OAAOs4D,SAAS,SAAS53E,GAAG,cAAcA,GAAG,SAASA,GAAG,OAAOA,GAAG,oBAAoBsf,QAAQtf,EAAEpK,cAAc0pB,QAAQtf,IAAIsf,OAAOj5B,UAAU,gBAAgB2Z,GAAGzX,EAAEyX,GAA2C,SAAS1J,EAAE0J,EAAElR,GAAG,KAAKkR,aAAalR,GAAG,MAAM,IAAI1H,UAAU,qCAAqC,SAAS6gM,EAAEjoL,EAAElR,GAAG,IAAI,IAAIsO,EAAE,EAAEA,EAAEtO,EAAElH,OAAOwV,IAAI,CAAC,IAAIqG,EAAE3U,EAAEsO,GAAGqG,EAAEsS,WAAWtS,EAAEsS,aAAY,EAAGtS,EAAE+a,cAAa,EAAG,UAAU/a,IAAIA,EAAEqS,UAAS,GAAI1qB,OAAOE,eAAe0U,EAAEyD,EAAE3e,IAAI2e,IAAI,SAASlE,EAAES,EAAElR,EAAEsO,GAAG,OAAOtO,GAAGm5L,EAAEjoL,EAAE3Z,UAAUyI,GAAGsO,GAAG6qL,EAAEjoL,EAAE5C,GAAG4C,EAAxoB5C,EAAE,QAAQA,EAAE,QAAQA,EAAE,QAAQA,EAAE,QAAQA,EAAE,QAAQA,EAAE,QAAiPA,EAAE,QAAQA,EAAE,QAAQA,EAAE,QAAQA,EAAE,QAAqUA,EAAE,QAAQ,IAAI+F,EAAE,WAAW,SAASnQ,OAAO+5L,iBAAiB,kBAAkB/5L,UAAUrL,EAAE,WAAW,QAAQ,eAAemK,KAAKI,UAAUC,YAAYkQ,EAAE,SAASrC,GAAG,OAAOmD,KAAKxb,IAAIqY,EAAEgtL,YAAW,GAAIhtL,EAAEpO,SAASoO,GAAG1B,EAAE,WAAW,SAAS0B,EAAElR,GAAGwH,EAAE1X,KAAKohB,GAAGphB,KAAKquM,UAAU,CAACzhG,OAAO,SAAS0hG,MAAM,QAAQC,MAAM,SAASvuM,KAAKwuM,YAAY,KAAKxuM,KAAK4jH,MAAM,KAAK5jH,KAAKyuM,wBAAwB,KAAKzuM,KAAK0uM,YAAY,GAAG1uM,KAAKikK,QAAQ,EAAEjkK,KAAKygM,SAAS,CAACkO,SAAS3uM,KAAKquM,UAAUE,OAAO/hM,OAAOQ,OAAOhN,KAAKygM,SAASvwL,GAAGlQ,KAAKs8D,OAAO,OAAO37C,EAAES,EAAE,CAAC,CAAClb,IAAI,OAAO9B,MAAM,WAAWpE,KAAKikK,UAAUjkK,KAAKygM,SAASrzL,GAAG,aAAanM,OAAOjB,KAAKikK,SAAS,IAAI7iJ,EAAE,GAAGphB,KAAKygM,SAAS98L,MAAM3D,KAAKygM,SAASmO,WAAWxtL,EAAEphB,KAAKygM,SAAS98L,KAAK,IAAIuM,EAAElQ,KAAK,GAAGA,KAAKygM,SAASmO,SAAS1+L,EAAEuwL,SAASmO,UAAS,SAAUxtL,GAAG,IAAI5C,EAAEtO,EAAE2+L,eAAeztL,GAAGlR,EAAEuwL,SAAS12E,QAAQ75G,EAAE4+L,oBAAoB5+L,EAAE6+L,MAAMvwL,KAAKtO,EAAEuwL,SAASuO,SAAS,CAAC,IAAIxwL,EAAExe,KAAK6uM,eAAeztL,GAAGphB,KAAKygM,SAAS98L,KAAK3D,KAAKmS,MAAMqM,EAAEywL,KAAKjvM,KAAKygM,SAAS12E,QAAQ/pH,KAAK8uM,oBAAoB9uM,KAAK+uM,MAAMvwL,MAAM,CAACtY,IAAI,WAAW9B,MAAM,SAASgd,EAAElR,EAAEsO,GAAG4C,EAAE7a,iBAAiB6a,EAAE7a,iBAAiB2J,EAAEsO,GAAE,GAAI4C,EAAE8tL,YAAY9tL,EAAE8tL,YAAY,KAAKh/L,EAAEsO,GAAG4C,EAAE,KAAKlR,GAAGsO,IAAI,CAACtY,IAAI,oBAAoB9B,MAAM,WAAW,IAAIgd,EAAExO,SAASs4D,eAAe,2BAA2B,GAAG9pD,EAAE,CAAC,IAAIlR,EAAElQ,KAAKwe,EAAE4C,EAAEsrF,cAAc,UAAU1sG,KAAKygM,SAAS0O,4BAA4BnvM,KAAKovM,SAAS5wL,EAAE,QAAO,WAAYtO,EAAEm/L,iBAAiBn/L,EAAEo/L,kBAAkBp/L,EAAEuwL,SAAS8O,yBAAyBvvM,KAAKovM,SAAShuL,EAAEsrF,cAAc,4BAA4B,SAAQ,WAAYx8F,EAAEuwL,SAAS+O,qBAAqBt/L,EAAEuwL,SAASgP,eAAejxL,EAAEsrL,cAAciF,QAAQ7+L,EAAEuwL,SAASiP,sBAAsB,CAACxpM,IAAI,kBAAkB9B,MAAM,WAAW,IAAIgd,EAAEphB,KAAK,IAAI,GAAGohB,EAAEuuL,OAAO,IAAI,IAAIz/L,EAAEkR,EAAEuuL,OAAOthG,iBAAiB,cAAc7vF,EAAE,EAAEA,EAAEtO,EAAElH,OAAOwV,IAAIiF,EAAEvT,EAAEsO,IAAI,MAAMqG,GAAGnO,QAAQg4F,IAAI7pF,MAAM,CAAC3e,IAAI,QAAQ9B,MAAM,SAASgd,GAAG,IAAIlR,EAAElQ,KAAKwe,EAAE5L,SAASs4D,eAAelrE,KAAKygM,SAASrzL,KAAKgU,EAAEmD,EAAEM,EAAEjS,SAASs4D,eAAelrE,KAAKygM,SAASrzL,IAAI08L,eAAe1oL,EAAEmD,EAAEulL,cAAcl4H,EAAE,WAAW/sD,EAAEokF,QAAQ/4F,EAAEuwL,SAASgP,eAAe5qL,EAAEkqL,QAAQtrL,EAAEjF,GAAGtO,EAAEuwL,SAASiP,gBAAgBx/L,EAAEo/L,mBAAmBp/L,EAAEuwL,SAAS+O,qBAAqBt/L,EAAEk/L,SAAS5wL,EAAE,QAAO,WAAYozD,SAAS,CAAC1rE,IAAI,QAAQ9B,MAAM,SAASgd,GAAGA,EAAE9c,OAAO8c,EAAEjP,MAAM,GAAGlR,OAAOjB,KAAK4vM,UAAU,UAAU3uM,OAAOjB,KAAK6vM,WAAW5uM,OAAOjB,KAAKmhF,UAAU,YAAY//D,EAAEwiG,UAAU,CAAC19G,IAAI,UAAU9B,MAAM,WAAW,GAAGpE,KAAKygM,SAASkO,WAAW3uM,KAAKquM,UAAUE,MAAM,MAAM,kBAAkB,IAAIntL,EAAEphB,KAAKygM,SAASkO,WAAW3uM,KAAKquM,UAAUC,MAAM,gBAAgB,GAAGp+L,EAAElQ,KAAKygM,SAASkO,WAAW3uM,KAAKquM,UAAUC,MAAM,QAAQ,SAAS,MAAM,+CAA+CrtM,OAAOmgB,EAAE,sCAAsCngB,OAAOiP,EAAE,YAAY,CAAChK,IAAI,UAAU9B,MAAM,WAAW,IAAIgd,EAAE,GAAGlR,EAAE,GAAGsO,EAAE,GAAGxe,KAAKygM,SAASqP,WAAW9vM,KAAKygM,SAASqP,UAAUp+L,QAAQ,YAAW,SAAUxB,GAAGkR,GAAGlR,KAAK,GAAGlK,QAAQ3F,KAAKuS,SAASy7F,iBAAiB,SAAQ,SAAUjtF,GAAGA,EAAEzN,KAAK5O,QAAQ,SAAS,IAAImL,GAAG,gDAAgDjP,OAAOmgB,EAAEzN,KAAK,WAAW,IAAIkR,EAAEjS,SAASm9L,YAAY,GAAGlrL,GAAGA,EAAE7b,OAAO,EAAE,IAAI,IAAI4oE,EAAE,EAAEA,EAAE/sD,EAAE7b,OAAO4oE,IAAI,IAAI,GAAG/sD,EAAE+sD,GAAGo+H,UAAUnrL,EAAE+sD,GAAGunG,MAAM,IAAI,IAAIrwK,EAAE+b,EAAE+sD,GAAGo+H,UAAUnrL,EAAE+sD,GAAGunG,MAAMxvK,EAAE,EAAEA,EAAEb,EAAEE,OAAOW,IAAI6U,GAAG1V,EAAEa,GAAGotL,QAAQ,MAAMr/K,GAAGhB,QAAQg4F,IAAI7pF,EAAE+sD,GAAGj+D,KAAK+D,GAAG,OAAO1X,KAAKygM,SAASwP,UAAUjwM,KAAKygM,SAASwP,SAASv+L,QAAQ,cAAa,SAAU0P,GAAGlR,GAAG,gDAAgDjP,OAAOmgB,EAAE,SAAS,gBAAgBngB,OAAOjB,KAAKygM,SAASyP,SAAS,YAAYjvM,OAAOmgB,GAAGngB,OAAOiP,EAAE,2BAA2BjP,OAAOud,EAAE,qBAAqB,CAACtY,IAAI,UAAU9B,MAAM,WAAW,IAAIgd,EAAEphB,KAAKygM,SAAS0P,IAAI/uL,EAAEA,EAAE1P,QAAQ,IAAIoB,OAAO,IAAI,KAAK,IAAI9S,KAAK2vM,OAAO3vM,KAAKowM,aAAax9L,SAASs4D,eAAe9pD,IAAI,IAAIlR,EAAElQ,KAAKqwM,YAAYrwM,KAAK2vM,QAAQnxL,EAAEtO,EAAEk6L,UAAU,MAAM,SAAS5rL,EAAE,YAAY,CAACtY,IAAI,eAAe9B,MAAM,SAASgd,GAAG,IAAI,IAAIlR,EAAEkR,EAAEitF,iBAAiB,UAAU7vF,EAAE,EAAEA,EAAEtO,EAAElH,OAAOwV,IAAI,IAAItO,EAAEsO,GAAG2W,MAAMg2B,QAAQ,CAAC,IAAItmC,EAAE3U,EAAEsO,GAAG8oB,WAAWsqC,EAAE1hE,EAAEsO,GAAG2xD,UAAU,aAAarnE,EAAE,IAAI0yH,MAAM1yH,EAAE21F,UAAU,YAAY31F,EAAEqsB,MAAMg2B,QAAQ,OAAOriD,EAAE84F,IAAIhwB,EAAE/sD,EAAE6sF,YAAY5oG,GAAG,OAAOsY,IAAI,CAAClb,IAAI,cAAc9B,MAAM,SAASgd,GAAG,IAAI,IAAIlR,EAAEkR,EAAEwjG,WAAU,GAAIpmG,EAAEtO,EAAEm+F,iBAAiB,yBAAyBxpF,EAAE3U,EAAEm+F,iBAAiB,qBAAqBz8B,GAAG,EAAE9oE,EAAE,EAAEA,EAAE+b,EAAE7b,OAAOF,IAAI,CAAC,IAAIa,EAAEkb,EAAE/b,GAAGw+B,WAAW5vB,EAAEmN,EAAE/b,GAAG,WAAW4O,EAAEwmF,QAAQ/3F,cAAcwD,EAAEioG,YAAYl6F,GAAGA,EAAEyd,MAAMg2B,QAAQ,QAAQ,IAAI,IAAIk+I,EAAE,EAAEA,EAAE7qL,EAAExV,OAAOqgM,IAAI,CAAC,IAAI1oL,EAAEnC,EAAE6qL,GAAG9kL,EAAE5D,EAAE6yC,aAAa,QAAQzqD,EAAEyV,EAAE6qL,GAAG,GAAG9kL,IAAIA,EAAE,WAAW5D,EAAEu9E,QAAQ,SAAS,aAAav9E,EAAEu9E,QAAQ,WAAW,IAAI,UAAUv9E,EAAEu9E,QAAQ,UAAU35E,GAAG,aAAaA,EAAE5D,EAAE4rI,SAASxjJ,EAAE6K,aAAa,UAAU+M,EAAE4rI,UAAUxjJ,EAAE3E,MAAMuc,EAAEvc,MAAM2E,EAAE6K,aAAa,QAAQ+M,EAAEvc,aAAa,GAAG,WAAWmgB,EAAE,CAACqtD,IAAI,IAAI,IAAInuD,EAAE,EAAEA,EAAErC,EAAEitF,iBAAiB,UAAUrlG,OAAOya,IAAI,CAAC,IAAI/D,EAAE0B,EAAEitF,iBAAiB,UAAU5qF,GAAG,IAAI/D,EAAE8zC,aAAa,UAAU9zC,EAAE9L,aAAa,QAAQ6P,GAAG/D,EAAE8zC,aAAa,UAAUoe,EAAE,CAAC,IAAI//D,EAAEuP,EAAEitF,iBAAiB,UAAUz8B,GAAGiyC,cAAcljG,EAAEhhB,QAAQkS,GAAG+B,aAAa,YAAW,UAAW7K,EAAEy9F,UAAU7lF,EAAEvc,MAAM2E,EAAE6K,aAAa,OAAO+M,EAAEvc,OAAO,OAAO8L,IAAI,CAAChK,IAAI,iBAAiB9B,MAAM,SAASgd,GAAG,IAAIlR,EAAElQ,KAAKswM,OAAOlvL,GAAG,MAAM,CAACmD,EAAErU,EAAEqgM,IAAIrgM,EAAE45L,eAAe55L,EAAE++L,IAAI/+L,EAAE++L,OAAO,CAAC/oM,IAAI,iBAAiB9B,MAAM,WAAW,IAAIgd,EAAExO,SAASs4D,eAAe,2BAA2B9pD,IAAIxO,SAAS85F,cAAc,QAAQ94F,aAAa,QAAQ,oBAAoBwN,EAAE+T,MAAMg2B,QAAQ,WAAW,CAACjlD,IAAI,iBAAiB9B,MAAM,WAAW,IAAIgd,EAAExO,SAASs4D,eAAe,2BAA2B9pD,IAAIxO,SAAS85F,cAAc,QAAQ94F,aAAa,QAAQ,sBAAsBwN,EAAEsrF,cAAc,WAAWjpF,EAAErC,EAAEsrF,cAAc,WAAWtrF,EAAE+T,MAAMg2B,QAAQ,UAAU,CAACjlD,IAAI,aAAa9B,MAAM,WAAW,IAAIgd,EAAExO,SAASs4D,eAAe,2BAA2Bh7D,EAAE,cAAc,GAAGkR,EAAE,OAAOA,EAAEsrF,cAAc,WAAWjpF,EAAErC,EAAEsrF,cAAc,WAAW,CAACkX,MAAMxiG,EAAEsrF,cAAc,iBAAiB8hG,YAAYptL,EAAEsrF,cAAc,IAAIzrG,OAAOiP,KAAK,IAAIsO,EAAE5L,SAASa,cAAc,OAAO+K,EAAE5K,aAAa,KAAK,2BAA2B4K,EAAE5K,aAAa,QAAQ,8FAA8F4K,EAAE2W,MAAM6qI,OAAOhgK,KAAKygM,SAASzgC,OAAO,IAAIn7I,EAAEjS,SAASa,cAAc,OAAOoR,EAAEjR,aAAa,QAAQ,iBAAiBiR,EAAEjR,aAAa,QAAQ,sBAAsBiR,EAAE2hF,UAAUxmG,KAAKygM,SAAS+P,aAAahyL,EAAEkzF,YAAY7sF,GAAG7kB,KAAK4jH,MAAMhxG,SAASa,cAAc,OAAO,IAAIm+D,EAAE5xE,KAAK4jH,MAAMhyC,EAAEh+D,aAAa,QAAQ,gBAAgBg+D,EAAEh+D,aAAa,QAAQ,qFAAqF,IAAI9K,EAAE8J,SAASa,cAAc,OAAO9J,EAAEiJ,SAASa,cAAc,OAAO3K,EAAE8K,aAAa,QAAQ,eAAe9K,EAAE8K,aAAa,QAAQ,gHAAgHjK,EAAEiK,aAAa,QAAQ,cAAcjK,EAAEiK,aAAa,QAAQ,iHAAiHg+D,EAAE8/B,YAAY5oG,GAAG8oE,EAAE8/B,YAAY/nG,GAAGkb,EAAE6sF,YAAY9/B,GAAG5xE,KAAKwuM,YAAY57L,SAASa,cAAc,OAAO,IAAIiE,EAAE1X,KAAKwuM,YAAY92L,EAAE9D,aAAa,QAAQ1D,GAAGwH,EAAE9D,aAAa,QAAQ,uDAAuD4K,EAAEkzF,YAAYh6F,GAAG,IAAI2xL,EAAEz2L,SAASa,cAAc,OAAO41L,EAAEz1L,aAAa,QAAQ,mBAAmBy1L,EAAEz1L,aAAa,QAAQ,wDAAwD8D,EAAEg6F,YAAY23F,GAAGrpM,KAAKyuM,wBAAwB77L,SAASa,cAAc,OAAO,IAAIkN,EAAE3gB,KAAKyuM,wBAAwB,OAAO9tL,EAAE/M,aAAa,QAAQ,2BAA2B+M,EAAE6lF,UAAUxmG,KAAKygM,SAASgQ,qBAAqB9vL,EAAE/M,aAAa,QAAQ,ucAAucy1L,EAAE33F,YAAY/wF,GAAG/N,SAAS6qE,KAAKi0B,YAAYlzF,GAAG,CAAColG,MAAM5jH,KAAK4jH,MAAM4qF,YAAYxuM,KAAKwuM,eAAe,CAACtoM,IAAI,YAAY9B,MAAM,SAASgd,EAAElR,GAAG,IAAIsO,EAAE5L,SAASa,cAAc,UAAU,OAAO+K,EAAE2W,MAAMu0B,OAAO,MAAMlrC,EAAE2W,MAAM5c,SAAS,WAAWiG,EAAE2W,MAAM6C,MAAM,MAAMxZ,EAAE2W,MAAM+D,OAAO,MAAM1a,EAAE2W,MAAMtb,MAAM,MAAM2E,EAAE2W,MAAMwF,IAAI,MAAMnc,EAAE5K,aAAa,KAAKwN,GAAG5C,EAAE5K,aAAa,MAAM1D,GAAGsO,IAAI,CAACtY,IAAI,SAAS9B,MAAM,SAASgd,GAAG,IAAIlR,EAAElQ,KAAKygM,SAASrzL,GAAGgU,EAAEA,IAAG,IAAK1O,MAAMo9F,UAAU,IAAItxF,EAAExe,KAAK6kB,EAAE7kB,KAAK0wM,UAAUxgM,EAAEkR,GAAG,IAAI,GAAGphB,KAAKygM,SAAS12E,QAAQ,CAACllG,EAAEjR,aAAa,QAAQ,wBAAwB,IAAIg+D,EAAE5xE,KAAK2wM,aAAa7nM,EAAE8oE,EAAE48H,YAAY7kM,EAAEioE,EAAEgyC,MAAM96G,EAAE4oG,YAAY7sF,GAAG7kB,KAAKovM,SAASzlM,EAAE,SAAQ,WAAY6U,EAAEoyL,yBAAyBh+L,SAAS6qE,KAAKi0B,YAAY7sF,GAAGA,EAAEoqL,IAAI,KAAKpqL,EAAEoqL,IAAIpqL,EAAEgsL,gBAAgBhsL,EAAEgsL,gBAAgBhsL,EAAEilL,cAAcjlL,EAAEilL,cAAcl3L,SAASiS,EAAEjS,SAAS,MAAM8E,GAAG,MAAM,IAAI3L,MAAM2L,EAAE,mDAAmD,GAAG,MAAMmN,EAAEoqL,IAAI,MAAM,IAAIljM,MAAM,yBAAyB,OAAO8Y,MAAMzD,EAA14Q,GAA+4QvP,EAAE,SAASuP,EAAElR,EAAEsO,GAAG4C,EAAE7a,iBAAiB6a,EAAE7a,iBAAiB2J,EAAEsO,GAAE,GAAI4C,EAAE8tL,YAAY9tL,EAAE8tL,YAAY,KAAKh/L,EAAEsO,GAAG4C,EAAE,KAAKlR,GAAGsO,GAAG7G,EAAE,CAACm5L,cAAc,QAAQ5pM,KAAK,SAASka,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAEze,QAAQ6xE,EAAE,GAAG//D,EAAEuP,EAAE,SAAQ,WAAYyD,EAAE28G,WAAU,WAAY,IAAIpgH,EAAE5C,EAAE,GAAG,OAAOtO,QAAG,IAASA,GAAG,QAAQkR,EAAElR,EAAE9L,aAAQ,IAASgd,GAAGA,EAAE2vL,cAAc7gM,EAAE9L,MAAM2sM,aAAalsL,GAAG,kBAAkB3U,EAAE9L,MAAMwtE,EAAE1hE,EAAE9L,MAAM0E,SAAS,GAAG,WAAWa,EAAEuG,EAAE9L,QAAQ8L,EAAE9L,MAAMgJ,GAAG,CAACwkE,EAAE1hE,EAAE9L,MAAMgJ,GAAG,IAAIsK,EAAEk6D,EAAElgE,QAAQ,IAAIoB,OAAO,IAAI,KAAK,IAAIu2L,EAAEz2L,SAASs4D,eAAexzD,GAAG2xL,IAAI3yL,QAAQg4F,IAAI,eAAe98B,EAAE,IAAI9oE,QAAQ,CAAC,GAAG,OAAOoH,QAAG,IAASA,GAAG,QAAQsO,EAAEtO,EAAE9L,aAAQ,IAASoa,IAAIA,EAAEurG,QAAQ,YAAY31G,OAAO26L,QAAQjmM,WAAW,IAAIA,EAAE,WAAW,IAAI4W,EAAE,CAACywL,IAAIv+H,EAAEo9H,IAAInqL,EAAElhB,IAAIuM,EAAE9L,MAAMT,IAAIgrM,SAAS,GAAGmB,UAAU5/L,EAAE9L,MAAM0rM,UAAUG,SAAS//L,EAAE9L,MAAM6rM,SAASO,aAAatgM,EAAE9L,MAAMosM,cAAc,OAAOxwC,OAAO9vJ,EAAE9L,MAAM47J,QAAQ,MAAMywC,qBAAqBvgM,EAAE9L,MAAMqsM,sBAAsB,KAAKP,SAAShgM,EAAE9L,MAAM8rM,SAASnmF,QAAQ75G,EAAE9L,MAAM2lH,UAAS,EAAG6kF,SAAS1+L,EAAE9L,MAAMwqM,SAASO,0BAA0B,WAAWj/L,EAAE9L,MAAM+qM,2BAA2Bj/L,EAAE9L,MAAM+qM,0BAA0BtqL,IAAI0qL,oBAAoB,WAAWr/L,EAAE9L,MAAMmrM,qBAAqBr/L,EAAE9L,MAAMmrM,oBAAoB1qL,IAAI4qL,aAAa,WAAWv/L,EAAE9L,MAAMqrM,cAAcv/L,EAAE9L,MAAMqrM,aAAa5qL,IAAI6qL,cAAc,WAAWx/L,EAAE9L,MAAMsrM,eAAex/L,EAAE9L,MAAMsrM,cAAc7qL,IAAI2qL,mBAAmB,WAAWt/L,EAAE9L,MAAMorM,oBAAoBt/L,EAAE9L,MAAMorM,mBAAmB3qL,QAAQunK,QAAQ,SAAShrK,GAAGA,EAAEgoK,UAAU,QAAQzxK,KAAKgH,EAAEhH,EAAEzH,EAAE,WAAWyO,GAAGqyL,KAAK,SAAS5vL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQozD,EAAEpzD,EAAE,QAAQ4C,EAAElgB,QAAQ,SAASkgB,GAAG,OAAOyD,EAAE+sD,EAAExwD,MAAM6vL,KAAK,SAAS7vL,EAAElR,GAAGkR,EAAElgB,QAAQ,CAACgwM,YAAY,EAAEC,oBAAoB,EAAEC,aAAa,EAAEC,eAAe,EAAEC,YAAY,EAAEC,cAAc,EAAE7lF,aAAa,EAAE8lF,qBAAqB,EAAEC,SAAS,EAAEC,kBAAkB,EAAEC,eAAe,EAAEC,gBAAgB,EAAEC,kBAAkB,EAAEC,UAAU,EAAEC,cAAc,EAAEC,aAAa,EAAEC,SAAS,EAAEC,iBAAiB,EAAEC,OAAO,EAAEC,YAAY,EAAEC,cAAc,EAAEC,cAAc,EAAEC,eAAe,EAAEC,aAAa,EAAEC,cAAc,EAAEC,iBAAiB,EAAEC,iBAAiB,EAAEC,eAAe,EAAEC,iBAAiB,EAAEC,cAAc,EAAEC,UAAU,IAAIC,KAAK,SAAS5xL,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,QAAQ4C,EAAElgB,QAAQ2jB,IAAI6b,OAAOqyD,MAAM,iBAAiBryD,OAAOs4D,gB;;;;;ICmB5h1C,SAAStxF,EAAQgQ,EAAGC,GAClB,IAAK,IAAIzR,KAAOyR,EACdD,EAAExR,GAAOyR,EAAEzR,GAEb,OAAOwR,EAKT,IAAIu7L,EAAkB,WAClBC,EAAwB,SAAUvpM,GAAK,MAAO,IAAMA,EAAEmO,WAAW,GAAGrI,SAAS,KAC7E0jM,EAAU,OAKV1hM,EAAS,SAAUqF,GAAO,OAAOxT,mBAAmBwT,GACnDpF,QAAQuhM,EAAiBC,GACzBxhM,QAAQyhM,EAAS,MAEtB,SAAS3pC,EAAQ1yJ,GACf,IACE,OAAO/D,mBAAmB+D,GAC1B,MAAOzS,GACH,EAIN,OAAOyS,EAGT,SAASs8L,EACPv3G,EACAw3G,EACAC,QAEoB,IAAfD,IAAwBA,EAAa,IAE1C,IACIE,EADAvjM,EAAQsjM,GAAeE,EAE3B,IACED,EAAcvjM,EAAM6rF,GAAS,IAC7B,MAAO3rF,GAEPqjM,EAAc,GAEhB,IAAK,IAAIrtM,KAAOmtM,EAAY,CAC1B,IAAIjvM,EAAQivM,EAAWntM,GACvBqtM,EAAYrtM,GAAOkF,MAAMiD,QAAQjK,GAC7BA,EAAMqX,IAAIg4L,GACVA,EAAoBrvM,GAE1B,OAAOmvM,EAGT,IAAIE,EAAsB,SAAUrvM,GAAS,OAAiB,MAATA,GAAkC,kBAAVA,EAAqBA,EAAQoU,OAAOpU,IAEjH,SAASovM,EAAY33G,GACnB,IAAI/7D,EAAM,GAIV,OAFA+7D,EAAQA,EAAM5rF,OAAOyB,QAAQ,YAAa,IAErCmqF,GAILA,EAAMnnF,MAAM,KAAK1O,SAAQ,SAAU0tM,GACjC,IAAI9hM,EAAQ8hM,EAAMhiM,QAAQ,MAAO,KAAKgD,MAAM,KACxCxO,EAAMsjK,EAAO53J,EAAMtG,SACnBrF,EAAM2L,EAAM5I,OAAS,EAAIwgK,EAAO53J,EAAMI,KAAK,MAAQ,UAEtClM,IAAbg6B,EAAI55B,GACN45B,EAAI55B,GAAOD,EACFmF,MAAMiD,QAAQyxB,EAAI55B,IAC3B45B,EAAI55B,GAAKqD,KAAKtD,GAEd65B,EAAI55B,GAAO,CAAC45B,EAAI55B,GAAMD,MAInB65B,GAjBEA,EAoBX,SAAS6zK,EAAgB5mM,GACvB,IAAI+yB,EAAM/yB,EACNP,OAAOqC,KAAK9B,GACX0O,KAAI,SAAUvV,GACb,IAAID,EAAM8G,EAAI7G,GAEd,QAAYJ,IAARG,EACF,MAAO,GAGT,GAAY,OAARA,EACF,OAAOwL,EAAOvL,GAGhB,GAAIkF,MAAMiD,QAAQpI,GAAM,CACtB,IAAIkQ,EAAS,GAWb,OAVAlQ,EAAID,SAAQ,SAAU4tM,QACP9tM,IAAT8tM,IAGS,OAATA,EACFz9L,EAAO5M,KAAKkI,EAAOvL,IAEnBiQ,EAAO5M,KAAKkI,EAAOvL,GAAO,IAAMuL,EAAOmiM,QAGpCz9L,EAAOnE,KAAK,KAGrB,OAAOP,EAAOvL,GAAO,IAAMuL,EAAOxL,MAEnCkS,QAAO,SAAUuG,GAAK,OAAOA,EAAE1V,OAAS,KACxCgJ,KAAK,KACN,KACJ,OAAO8tB,EAAO,IAAMA,EAAO,GAK7B,IAAI+zK,EAAkB,OAEtB,SAASC,EACP9sF,EACA3yG,EACA0/L,EACAC,GAEA,IAAIL,EAAiBK,GAAUA,EAAOr0M,QAAQg0M,eAE1C93G,EAAQxnF,EAASwnF,OAAS,GAC9B,IACEA,EAAQ1pE,EAAM0pE,GACd,MAAO3rF,IAET,IAAI0mB,EAAQ,CACV/sB,KAAMwK,EAASxK,MAASm9G,GAAUA,EAAOn9G,KACzCk6B,KAAOijF,GAAUA,EAAOjjF,MAAS,GACjC1xB,KAAMgC,EAAShC,MAAQ,IACvB0B,KAAMM,EAASN,MAAQ,GACvB8nF,MAAOA,EACPp3F,OAAQ4P,EAAS5P,QAAU,GAC3BhB,SAAUwwM,EAAY5/L,EAAUs/L,GAChCO,QAASltF,EAASmtF,EAAYntF,GAAU,IAK1C,OAHI+sF,IACFn9K,EAAMm9K,eAAiBE,EAAYF,EAAgBJ,IAE9CnnM,OAAOoxC,OAAOhnB,GAGvB,SAASzE,EAAO/tB,GACd,GAAIgH,MAAMiD,QAAQjK,GAChB,OAAOA,EAAMqX,IAAI0W,GACZ,GAAI/tB,GAA0B,kBAAVA,EAAoB,CAC7C,IAAI07B,EAAM,GACV,IAAK,IAAI55B,KAAO9B,EACd07B,EAAI55B,GAAOisB,EAAM/tB,EAAM8B,IAEzB,OAAO45B,EAEP,OAAO17B,EAKX,IAAIgwM,EAAQN,EAAY,KAAM,CAC5BzhM,KAAM,MAGR,SAAS8hM,EAAantF,GACpB,IAAIlnF,EAAM,GACV,MAAOknF,EACLlnF,EAAI/0B,QAAQi8G,GACZA,EAASA,EAAO7mH,OAElB,OAAO2/B,EAGT,SAASm0K,EACPzvG,EACA6vG,GAEA,IAAIhiM,EAAOmyF,EAAInyF,KACXwpF,EAAQ2I,EAAI3I,WAAsB,IAAVA,IAAmBA,EAAQ,IACvD,IAAI9nF,EAAOywF,EAAIzwF,UAAoB,IAATA,IAAkBA,EAAO,IAEnD,IAAI5D,EAAYkkM,GAAmBV,EACnC,OAAQthM,GAAQ,KAAOlC,EAAU0rF,GAAS9nF,EAG5C,SAASugM,EAAa58L,EAAGC,EAAG48L,GAC1B,OAAI58L,IAAMy8L,EACD18L,IAAMC,IACHA,IAEDD,EAAErF,MAAQsF,EAAEtF,KACdqF,EAAErF,KAAKX,QAAQmiM,EAAiB,MAAQl8L,EAAEtF,KAAKX,QAAQmiM,EAAiB,MAAQU,GACrF78L,EAAE3D,OAAS4D,EAAE5D,MACbygM,EAAc98L,EAAEmkF,MAAOlkF,EAAEkkF,WAClBnkF,EAAE7N,OAAQ8N,EAAE9N,QAEnB6N,EAAE7N,OAAS8N,EAAE9N,OACZ0qM,GACC78L,EAAE3D,OAAS4D,EAAE5D,MACfygM,EAAc98L,EAAEmkF,MAAOlkF,EAAEkkF,QACzB24G,EAAc98L,EAAEjT,OAAQkT,EAAElT,WAQhC,SAAS+vM,EAAe98L,EAAGC,GAKzB,QAJW,IAAND,IAAeA,EAAI,SACb,IAANC,IAAeA,EAAI,KAGnBD,IAAMC,EAAK,OAAOD,IAAMC,EAC7B,IAAI88L,EAAQjoM,OAAOqC,KAAK6I,GAAG6G,OACvBm2L,EAAQloM,OAAOqC,KAAK8I,GAAG4G,OAC3B,OAAIk2L,EAAMzrM,SAAW0rM,EAAM1rM,QAGpByrM,EAAM51F,OAAM,SAAU34G,EAAK4C,GAChC,IAAI6rM,EAAOj9L,EAAExR,GACT0uM,EAAOF,EAAM5rM,GACjB,GAAI8rM,IAAS1uM,EAAO,OAAO,EAC3B,IAAI2uM,EAAOl9L,EAAEzR,GAEb,OAAY,MAARyuM,GAAwB,MAARE,EAAuBF,IAASE,EAEhC,kBAATF,GAAqC,kBAATE,EAC9BL,EAAcG,EAAME,GAEtBr8L,OAAOm8L,KAAUn8L,OAAOq8L,MAInC,SAASC,EAAiBlwK,EAASz2B,GACjC,OAGQ,IAFNy2B,EAAQvyB,KAAKX,QAAQmiM,EAAiB,KAAK9uM,QACzCoJ,EAAOkE,KAAKX,QAAQmiM,EAAiB,SAErC1lM,EAAO4F,MAAQ6wB,EAAQ7wB,OAAS5F,EAAO4F,OACzCghM,EAAcnwK,EAAQi3D,MAAO1tF,EAAO0tF,OAIxC,SAASk5G,EAAenwK,EAASz2B,GAC/B,IAAK,IAAIjI,KAAOiI,EACd,KAAMjI,KAAO0+B,GACX,OAAO,EAGX,OAAO,EAGT,SAASowK,EAAoBp+K,GAC3B,IAAK,IAAI9tB,EAAI,EAAGA,EAAI8tB,EAAMs9K,QAAQlrM,OAAQF,IAAK,CAC7C,IAAIk+G,EAASpwF,EAAMs9K,QAAQprM,GAC3B,IAAK,IAAIe,KAAQm9G,EAAO77C,UAAW,CACjC,IAAI3jE,EAAWw/G,EAAO77C,UAAUthE,GAC5BorM,EAAMjuF,EAAOkuF,WAAWrrM,GAC5B,GAAKrC,GAAaytM,EAAlB,QACOjuF,EAAOkuF,WAAWrrM,GACzB,IAAK,IAAIsrM,EAAM,EAAGA,EAAMF,EAAIjsM,OAAQmsM,IAC7B3tM,EAAS4tM,mBAAqBH,EAAIE,GAAK3tM,MAMpD,IAAI6tM,EAAO,CACTxrM,KAAM,aACNhK,YAAY,EACZmY,MAAO,CACLnO,KAAM,CACJlD,KAAM6R,OACNujF,QAAS,YAGb58F,OAAQ,SAAiBi7G,EAAG5V,GAC1B,IAAIxsF,EAAQwsF,EAAIxsF,MACZssF,EAAWE,EAAIF,SACfnkG,EAASqkG,EAAIrkG,OACbkC,EAAOmiG,EAAIniG,KAGfA,EAAKizM,YAAa,EAIlB,IAAIx0M,EAAIX,EAAOi+H,eACXv0H,EAAOmO,EAAMnO,KACb+sB,EAAQz2B,EAAOwtK,OACf92J,EAAQ1W,EAAOo1M,mBAAqBp1M,EAAOo1M,iBAAmB,IAI9Dl7F,EAAQ,EACR8yD,GAAW,EACf,MAAOhtK,GAAUA,EAAOq1M,cAAgBr1M,EAAQ,CAC9C,IAAIs1M,EAAYt1M,EAAOF,OAASE,EAAOF,OAAOoC,KAAO,GACjDozM,EAAUH,YACZj7F,IAEEo7F,EAAUC,WAAav1M,EAAOw1M,iBAAmBx1M,EAAOy1M,YAC1DzoC,GAAW,GAEbhtK,EAASA,EAAOujM,QAKlB,GAHArhM,EAAKwzM,gBAAkBx7F,EAGnB8yD,EAAU,CACZ,IAAI2oC,EAAaj/L,EAAMhN,GACnBksM,EAAkBD,GAAcA,EAAWrvI,UAC/C,OAAIsvI,GAGED,EAAWE,aACbC,EAAgBF,EAAiB1zM,EAAMyzM,EAAWl/K,MAAOk/K,EAAWE,aAE/Dl1M,EAAEi1M,EAAiB1zM,EAAMiiG,IAGzBxjG,IAIX,IAAIozM,EAAUt9K,EAAMs9K,QAAQ75F,GACxB5zC,EAAYytI,GAAWA,EAAQ3nB,WAAW1iL,GAG9C,IAAKqqM,IAAYztI,EAEf,OADA5vD,EAAMhN,GAAQ,KACP/I,IAIT+V,EAAMhN,GAAQ,CAAE48D,UAAWA,GAI3BpkE,EAAK6zM,sBAAwB,SAAUl1C,EAAI/6J,GAEzC,IAAI2+B,EAAUsvK,EAAQ/oI,UAAUthE,IAE7B5D,GAAO2+B,IAAYo8H,IAClB/6J,GAAO2+B,IAAYo8H,KAErBkzC,EAAQ/oI,UAAUthE,GAAQ5D,KAM5B5D,EAAK3C,OAAS2C,EAAK3C,KAAO,KAAKy2M,SAAW,SAAU/7F,EAAG+lB,GACvD+zE,EAAQ/oI,UAAUthE,GAAQs2H,EAAM+3D,mBAKlC71L,EAAK3C,KAAK48D,KAAO,SAAU6jE,GACrBA,EAAM99H,KAAKqzM,WACbv1E,EAAM+3D,mBACN/3D,EAAM+3D,oBAAsBgc,EAAQ/oI,UAAUthE,KAE9CqqM,EAAQ/oI,UAAUthE,GAAQs2H,EAAM+3D,mBAMlC8c,EAAmBp+K,IAGrB,IAAIo/K,EAAc9B,EAAQl8L,OAASk8L,EAAQl8L,MAAMnO,GAUjD,OARImsM,IACFtuM,EAAOmP,EAAMhN,GAAO,CAClB+sB,MAAOA,EACPo/K,YAAaA,IAEfC,EAAgBxvI,EAAWpkE,EAAMu0B,EAAOo/K,IAGnCl1M,EAAE2lE,EAAWpkE,EAAMiiG,KAI9B,SAAS2xG,EAAiBxvI,EAAWpkE,EAAMu0B,EAAOo/K,GAEhD,IAAII,EAAc/zM,EAAK2V,MAAQq+L,EAAaz/K,EAAOo/K,GACnD,GAAII,EAAa,CAEfA,EAAc/zM,EAAK2V,MAAQtQ,EAAO,GAAI0uM,GAEtC,IAAIl7F,EAAQ74G,EAAK64G,MAAQ74G,EAAK64G,OAAS,GACvC,IAAK,IAAIh1G,KAAOkwM,EACT3vI,EAAUzuD,OAAW9R,KAAOugE,EAAUzuD,QACzCkjG,EAAMh1G,GAAOkwM,EAAYlwM,UAClBkwM,EAAYlwM,KAM3B,SAASmwM,EAAcz/K,EAAO70B,GAC5B,cAAeA,GACb,IAAK,YACH,OACF,IAAK,SACH,OAAOA,EACT,IAAK,WACH,OAAOA,EAAO60B,GAChB,IAAK,UACH,OAAO70B,EAAS60B,EAAMnyB,YAASqB,EACjC,QACM,GAYV,SAASwwM,EACPC,EACA12K,EACAlqB,GAEA,IAAI6gM,EAAYD,EAASpiM,OAAO,GAChC,GAAkB,MAAdqiM,EACF,OAAOD,EAGT,GAAkB,MAAdC,GAAmC,MAAdA,EACvB,OAAO32K,EAAO02K,EAGhB,IAAIjqM,EAAQuzB,EAAKnrB,MAAM,KAKlBiB,GAAWrJ,EAAMA,EAAMtD,OAAS,IACnCsD,EAAMsJ,MAKR,IADA,IAAIm4B,EAAWwoK,EAAS7kM,QAAQ,MAAO,IAAIgD,MAAM,KACxC5L,EAAI,EAAGA,EAAIilC,EAAS/kC,OAAQF,IAAK,CACxC,IAAIokC,EAAUa,EAASjlC,GACP,OAAZokC,EACF5gC,EAAMsJ,MACe,MAAZs3B,GACT5gC,EAAM/C,KAAK2jC,GASf,MAJiB,KAAb5gC,EAAM,IACRA,EAAMvB,QAAQ,IAGTuB,EAAM0F,KAAK,KAGpB,SAASykM,EAAWpkM,GAClB,IAAI0B,EAAO,GACP8nF,EAAQ,GAER66G,EAAYrkM,EAAKtN,QAAQ,KACzB2xM,GAAa,IACf3iM,EAAO1B,EAAK/D,MAAMooM,GAClBrkM,EAAOA,EAAK/D,MAAM,EAAGooM,IAGvB,IAAIC,EAAatkM,EAAKtN,QAAQ,KAM9B,OALI4xM,GAAc,IAChB96G,EAAQxpF,EAAK/D,MAAMqoM,EAAa,GAChCtkM,EAAOA,EAAK/D,MAAM,EAAGqoM,IAGhB,CACLtkM,KAAMA,EACNwpF,MAAOA,EACP9nF,KAAMA,GAIV,SAAS6iM,EAAWvkM,GAClB,OAAOA,EAAKX,QAAQ,OAAQ,KAG9B,IAAImlM,EAAUzrM,MAAMiD,SAAW,SAAU0G,GACvC,MAA8C,kBAAvCvI,OAAO/E,UAAUgI,SAASpP,KAAK0U,IAMpC+hM,EAAiBC,EACjBC,EAAUhnM,EACVinM,EAAYC,EACZC,EAAqBC,EACrBC,EAAmBC,EAOnBC,EAAc,IAAIzkM,OAAO,CAG3B,UAOA,0GACAd,KAAK,KAAM,KASb,SAAShC,EAAO8G,EAAKnX,GACnB,IAKImgC,EALA03K,EAAS,GACTtxM,EAAM,EACNsD,EAAQ,EACR6I,EAAO,GACPolM,EAAmB93M,GAAWA,EAAQojJ,WAAa,IAGvD,MAAwC,OAAhCjjH,EAAMy3K,EAAY1iM,KAAKiC,IAAe,CAC5C,IAAI0M,EAAIsc,EAAI,GACR43K,EAAU53K,EAAI,GACdklB,EAASllB,EAAIt2B,MAKjB,GAJA6I,GAAQyE,EAAIxI,MAAM9E,EAAOw7C,GACzBx7C,EAAQw7C,EAASxhC,EAAExa,OAGf0uM,EACFrlM,GAAQqlM,EAAQ,OADlB,CAKA,IAAI7yK,EAAO/tB,EAAItN,GACXs5B,EAAShD,EAAI,GACbj2B,EAAOi2B,EAAI,GACX4vG,EAAU5vG,EAAI,GACdg3F,EAAQh3F,EAAI,GACZ6sE,EAAW7sE,EAAI,GACf63K,EAAW73K,EAAI,GAGfztB,IACFmlM,EAAOjuM,KAAK8I,GACZA,EAAO,IAGT,IAAIulM,EAAoB,MAAV90K,GAA0B,MAAR+B,GAAgBA,IAAS/B,EACrD0+J,EAAsB,MAAb70F,GAAiC,MAAbA,EAC7BwyE,EAAwB,MAAbxyE,GAAiC,MAAbA,EAC/Bo2C,EAAYjjH,EAAI,IAAM23K,EACtBngM,EAAUo4H,GAAW5Y,EAEzB0gF,EAAOjuM,KAAK,CACVM,KAAMA,GAAQ3D,IACd48B,OAAQA,GAAU,GAClBigH,UAAWA,EACXo8B,SAAUA,EACVqiB,OAAQA,EACRoW,QAASA,EACTD,WAAYA,EACZrgM,QAASA,EAAUugM,EAAYvgM,GAAYqgM,EAAW,KAAO,KAAOG,EAAa/0D,GAAa,SAclG,OATIv5I,EAAQsN,EAAI9N,SACdqJ,GAAQyE,EAAIlC,OAAOpL,IAIjB6I,GACFmlM,EAAOjuM,KAAK8I,GAGPmlM,EAUT,SAASN,EAASpgM,EAAKnX,GACrB,OAAOy3M,EAAiBpnM,EAAM8G,EAAKnX,GAAUA,GAS/C,SAASo4M,EAA0BjhM,GACjC,OAAOkhM,UAAUlhM,GAAKpF,QAAQ,WAAW,SAAU/H,GACjD,MAAO,IAAMA,EAAEmO,WAAW,GAAGrI,SAAS,IAAIjL,iBAU9C,SAASyzM,EAAgBnhM,GACvB,OAAOkhM,UAAUlhM,GAAKpF,QAAQ,SAAS,SAAU/H,GAC/C,MAAO,IAAMA,EAAEmO,WAAW,GAAGrI,SAAS,IAAIjL,iBAO9C,SAAS4yM,EAAkBI,EAAQ73M,GAKjC,IAHA,IAAIg+B,EAAU,IAAIvyB,MAAMosM,EAAOxuM,QAGtBF,EAAI,EAAGA,EAAI0uM,EAAOxuM,OAAQF,IACR,kBAAd0uM,EAAO1uM,KAChB60B,EAAQ70B,GAAK,IAAIgK,OAAO,OAAS0kM,EAAO1uM,GAAGwO,QAAU,KAAMkkG,EAAM77G,KAIrE,OAAO,SAAUoN,EAAKyJ,GAMpB,IALA,IAAInE,EAAO,GACPhQ,EAAO0K,GAAO,GACdpN,EAAU6W,GAAQ,GAClB/E,EAAS9R,EAAQu4M,OAASH,EAA2Bz0M,mBAEhDwF,EAAI,EAAGA,EAAI0uM,EAAOxuM,OAAQF,IAAK,CACtC,IAAIH,EAAQ6uM,EAAO1uM,GAEnB,GAAqB,kBAAVH,EAAX,CAMA,IACIukC,EADA9oC,EAAQ/B,EAAKsG,EAAMkB,MAGvB,GAAa,MAATzF,EAAe,CACjB,GAAIuE,EAAMw2K,SAAU,CAEdx2K,EAAMivM,UACRvlM,GAAQ1J,EAAMm6B,QAGhB,SAEA,MAAM,IAAIt6B,UAAU,aAAeG,EAAMkB,KAAO,mBAIpD,GAAIgtM,EAAQzyM,GAAZ,CACE,IAAKuE,EAAM64L,OACT,MAAM,IAAIh5L,UAAU,aAAeG,EAAMkB,KAAO,kCAAoCkG,KAAKI,UAAU/L,GAAS,KAG9G,GAAqB,IAAjBA,EAAM4E,OAAc,CACtB,GAAIL,EAAMw2K,SACR,SAEA,MAAM,IAAI32K,UAAU,aAAeG,EAAMkB,KAAO,qBAIpD,IAAK,IAAIqnB,EAAI,EAAGA,EAAI9sB,EAAM4E,OAAQkoB,IAAK,CAGrC,GAFAgc,EAAUz7B,EAAOrN,EAAM8sB,KAElByM,EAAQ70B,GAAGoK,KAAKg6B,GACnB,MAAM,IAAI1kC,UAAU,iBAAmBG,EAAMkB,KAAO,eAAiBlB,EAAM2O,QAAU,oBAAsBvH,KAAKI,UAAU+8B,GAAW,KAGvI76B,IAAe,IAAN6e,EAAUvoB,EAAMm6B,OAASn6B,EAAMo6I,WAAa71G,OApBzD,CA4BA,GAFAA,EAAUvkC,EAAMgvM,SAAWM,EAAe7zM,GAASqN,EAAOrN,IAErDu5B,EAAQ70B,GAAGoK,KAAKg6B,GACnB,MAAM,IAAI1kC,UAAU,aAAeG,EAAMkB,KAAO,eAAiBlB,EAAM2O,QAAU,oBAAsB41B,EAAU,KAGnH76B,GAAQ1J,EAAMm6B,OAASoK,QArDrB76B,GAAQ1J,EAwDZ,OAAO0J,GAUX,SAASylM,EAAchhM,GACrB,OAAOA,EAAIpF,QAAQ,6BAA8B,QASnD,SAASmmM,EAAa/gF,GACpB,OAAOA,EAAMplH,QAAQ,gBAAiB,QAUxC,SAASymM,EAAY58F,EAAI1sG,GAEvB,OADA0sG,EAAG1sG,KAAOA,EACH0sG,EAST,SAASC,EAAO77G,GACd,OAAOA,GAAWA,EAAQy4M,UAAY,GAAK,IAU7C,SAASC,EAAgBhmM,EAAMxD,GAE7B,IAAIgoH,EAASxkH,EAAK3I,OAAOmJ,MAAM,aAE/B,GAAIgkH,EACF,IAAK,IAAI/tH,EAAI,EAAGA,EAAI+tH,EAAO7tH,OAAQF,IACjC+F,EAAKtF,KAAK,CACRM,KAAMf,EACNg6B,OAAQ,KACRigH,UAAW,KACXo8B,UAAU,EACVqiB,QAAQ,EACRoW,SAAS,EACTD,UAAU,EACVrgM,QAAS,OAKf,OAAO6gM,EAAW9lM,EAAMxD,GAW1B,SAASypM,EAAejmM,EAAMxD,EAAMlP,GAGlC,IAFA,IAAIiS,EAAQ,GAEH9I,EAAI,EAAGA,EAAIuJ,EAAKrJ,OAAQF,IAC/B8I,EAAMrI,KAAKwtM,EAAa1kM,EAAKvJ,GAAI+F,EAAMlP,GAAS+J,QAGlD,IAAI6uM,EAAS,IAAIzlM,OAAO,MAAQlB,EAAMI,KAAK,KAAO,IAAKwpG,EAAM77G,IAE7D,OAAOw4M,EAAWI,EAAQ1pM,GAW5B,SAAS2pM,EAAgBnmM,EAAMxD,EAAMlP,GACnC,OAAO23M,EAAetnM,EAAMqC,EAAM1S,GAAUkP,EAAMlP,GAWpD,SAAS23M,EAAgBE,EAAQ3oM,EAAMlP,GAChCk3M,EAAQhoM,KACXlP,EAAkCkP,GAAQlP,EAC1CkP,EAAO,IAGTlP,EAAUA,GAAW,GAOrB,IALA,IAAIitG,EAASjtG,EAAQitG,OACjBlzF,GAAsB,IAAhB/Z,EAAQ+Z,IACdkd,EAAQ,GAGH9tB,EAAI,EAAGA,EAAI0uM,EAAOxuM,OAAQF,IAAK,CACtC,IAAIH,EAAQ6uM,EAAO1uM,GAEnB,GAAqB,kBAAVH,EACTiuB,GAASkhL,EAAanvM,OACjB,CACL,IAAIm6B,EAASg1K,EAAanvM,EAAMm6B,QAC5B4sG,EAAU,MAAQ/mI,EAAM2O,QAAU,IAEtCzI,EAAKtF,KAAKZ,GAENA,EAAM64L,SACR9xD,GAAW,MAAQ5sG,EAAS4sG,EAAU,MAOpCA,EAJA/mI,EAAMw2K,SACHx2K,EAAMivM,QAGC90K,EAAS,IAAM4sG,EAAU,KAFzB,MAAQ5sG,EAAS,IAAM4sG,EAAU,MAKnC5sG,EAAS,IAAM4sG,EAAU,IAGrC94G,GAAS84G,GAIb,IAAIqT,EAAY+0D,EAAan4M,EAAQojJ,WAAa,KAC9C01D,EAAoB7hL,EAAMtoB,OAAOy0I,EAAU/5I,UAAY+5I,EAkB3D,OAZKn2C,IACHh2E,GAAS6hL,EAAoB7hL,EAAMtoB,MAAM,GAAIy0I,EAAU/5I,QAAU4tB,GAAS,MAAQmsH,EAAY,WAI9FnsH,GADEld,EACO,IAIAkzF,GAAU6rG,EAAoB,GAAK,MAAQ11D,EAAY,MAG3Do1D,EAAW,IAAIrlM,OAAO,IAAM8jB,EAAO4kF,EAAM77G,IAAWkP,GAe7D,SAASkoM,EAAc1kM,EAAMxD,EAAMlP,GAQjC,OAPKk3M,EAAQhoM,KACXlP,EAAkCkP,GAAQlP,EAC1CkP,EAAO,IAGTlP,EAAUA,GAAW,GAEjB0S,aAAgBS,OACXulM,EAAehmM,EAA4B,GAGhDwkM,EAAQxkM,GACHimM,EAAoC,EAA8B,EAAQ34M,GAG5E64M,EAAqC,EAA8B,EAAQ74M,GAEpFm3M,EAAe9mM,MAAQgnM,EACvBF,EAAeI,QAAUD,EACzBH,EAAeM,iBAAmBD,EAClCL,EAAeQ,eAAiBD,EAKhC,IAAIqB,EAAqBlsM,OAAO7E,OAAO,MAEvC,SAASgxM,EACPtmM,EACA5N,EACAm0M,GAEAn0M,EAASA,GAAU,GACnB,IACE,IAAIo0M,EACFH,EAAmBrmM,KAClBqmM,EAAmBrmM,GAAQykM,EAAeI,QAAQ7kM,IAMrD,MAFgC,kBAArB5N,EAAOq0M,YAA0Br0M,EAAO,GAAKA,EAAOq0M,WAExDD,EAAOp0M,EAAQ,CAAEyzM,QAAQ,IAChC,MAAOhoM,GAKP,MAAO,GACP,eAEOzL,EAAO,IAMlB,SAASs0M,EACPnhK,EACAhT,EACAjvB,EACAq+L,GAEA,IAAInvK,EAAsB,kBAAR+S,EAAmB,CAAEvlC,KAAMulC,GAAQA,EAErD,GAAI/S,EAAKsoD,YACP,OAAOtoD,EACF,GAAIA,EAAKh7B,KAAM,CACpBg7B,EAAOn9B,EAAO,GAAIkwC,GAClB,IAAInzC,EAASogC,EAAKpgC,OAIlB,OAHIA,GAA4B,kBAAXA,IACnBogC,EAAKpgC,OAASiD,EAAO,GAAIjD,IAEpBogC,EAIT,IAAKA,EAAKxyB,MAAQwyB,EAAKpgC,QAAUmgC,EAAS,CACxCC,EAAOn9B,EAAO,GAAIm9B,GAClBA,EAAKsoD,aAAc,EACnB,IAAI6rH,EAAWtxM,EAAOA,EAAO,GAAIk9B,EAAQngC,QAASogC,EAAKpgC,QACvD,GAAImgC,EAAQ/6B,KACVg7B,EAAKh7B,KAAO+6B,EAAQ/6B,KACpBg7B,EAAKpgC,OAASu0M,OACT,GAAIp0K,EAAQsvK,QAAQlrM,OAAQ,CACjC,IAAIiwM,EAAUr0K,EAAQsvK,QAAQtvK,EAAQsvK,QAAQlrM,OAAS,GAAGqJ,KAC1DwyB,EAAKxyB,KAAOsmM,EAAWM,EAASD,EAAW,QAAWp0K,EAAY,WACzD,EAGX,OAAOC,EAGT,IAAIq0K,EAAazC,EAAU5xK,EAAKxyB,MAAQ,IACpC8mM,EAAYv0K,GAAWA,EAAQvyB,MAAS,IACxCA,EAAO6mM,EAAW7mM,KAClBikM,EAAY4C,EAAW7mM,KAAM8mM,EAAUxjM,GAAUkvB,EAAKlvB,QACtDwjM,EAEAt9G,EAAQu3G,EACV8F,EAAWr9G,MACXh3D,EAAKg3D,MACLm4G,GAAUA,EAAOr0M,QAAQ6zM,YAGvBz/L,EAAO8wB,EAAK9wB,MAAQmlM,EAAWnlM,KAKnC,OAJIA,GAA2B,MAAnBA,EAAKI,OAAO,KACtBJ,EAAO,IAAMA,GAGR,CACLo5E,aAAa,EACb96E,KAAMA,EACNwpF,MAAOA,EACP9nF,KAAMA,GAOV,IA4NIqlM,EA5NAC,GAAU,CAAC7gM,OAAQhM,QACnB8sM,GAAa,CAAC9gM,OAAQpN,OAEtB4O,GAAO,aAMPooG,GAAO,CACTv4G,KAAM,aACNmO,MAAO,CACL4Z,GAAI,CACFjrB,KAAM0yM,GACNruE,UAAU,GAEZl6C,IAAK,CACHnqF,KAAM6R,OACNujF,QAAS,KAEXn6C,OAAQ27E,QACRkhE,MAAOlhE,QACPmhE,UAAWnhE,QACX5nH,OAAQ4nH,QACR7rH,QAAS6rH,QACTiQ,YAAah1H,OACbmmL,iBAAkBnmL,OAClB+gM,iBAAkB,CAChB5yM,KAAM6R,OACNujF,QAAS,QAEXvqD,MAAO,CACL7qC,KAAM2yM,GACNv9G,QAAS,UAGb58F,OAAQ,SAAiB2B,GACvB,IAAI04M,EAASx5M,KAETg0M,EAASh0M,KAAKm6K,QACdv1I,EAAU5kC,KAAK2tK,OACfnpE,EAAMwvG,EAAO/xM,QACfjC,KAAK4xB,GACLgT,EACA5kC,KAAK2V,QAEHtB,EAAWmwF,EAAInwF,SACfuiB,EAAQ4tE,EAAI5tE,MACZjjB,EAAO6wF,EAAI7wF,KAEXypF,EAAU,GACVq8G,EAAoBzF,EAAOr0M,QAAQ+5M,gBACnCC,EAAyB3F,EAAOr0M,QAAQi6M,qBAExCC,EACmB,MAArBJ,EAA4B,qBAAuBA,EACjDK,EACwB,MAA1BH,EACI,2BACAA,EACFnsE,EACkB,MAApBxtI,KAAKwtI,YAAsBqsE,EAAsB75M,KAAKwtI,YACpDmxD,EACuB,MAAzB3+L,KAAK2+L,iBACDmb,EACA95M,KAAK2+L,iBAEPob,EAAgBnjL,EAAMm9K,eACtBD,EAAY,KAAMiF,EAAkBniL,EAAMm9K,gBAAiB,KAAMC,GACjEp9K,EAEJwmE,EAAQuhG,GAAoB2V,EAAY1vK,EAASm1K,EAAe/5M,KAAK0+L,WACrEthG,EAAQowC,GAAextI,KAAKy+L,OAASz+L,KAAK0+L,UACtCthG,EAAQuhG,GACRmW,EAAgBlwK,EAASm1K,GAE7B,IAAIR,EAAmBn8G,EAAQuhG,GAAoB3+L,KAAKu5M,iBAAmB,KAEvE1sJ,EAAU,SAAU38C,GAClB8pM,GAAW9pM,KACTspM,EAAO9nM,QACTsiM,EAAOtiM,QAAQ2C,EAAU2F,IAEzBg6L,EAAOzqM,KAAK8K,EAAU2F,MAKxButF,EAAK,CAAEoiB,MAAOqwF,IACd5uM,MAAMiD,QAAQrO,KAAKwxC,OACrBxxC,KAAKwxC,MAAMxrC,SAAQ,SAAUkK,GAC3Bq3F,EAAGr3F,GAAK28C,KAGV06C,EAAGvnG,KAAKwxC,OAASqb,EAGnB,IAAIxqD,EAAO,CAAE47H,MAAO7gC,GAEhBu6D,GACD33J,KAAK0/H,aAAau6E,YACnBj6M,KAAK0/H,aAAa3jC,SAClB/7F,KAAK0/H,aAAa3jC,QAAQ,CACxBpoF,KAAMA,EACNijB,MAAOA,EACPsjL,SAAUrtJ,EACVq3D,SAAU9mB,EAAQowC,GAClB2sE,cAAe/8G,EAAQuhG,KAG3B,GAAIhnC,EAAY,CAKd,GAA0B,IAAtBA,EAAW3uJ,OACb,OAAO2uJ,EAAW,GACb,GAAIA,EAAW3uJ,OAAS,IAAM2uJ,EAAW3uJ,OAO9C,OAA6B,IAAtB2uJ,EAAW3uJ,OAAelI,IAAMA,EAAE,OAAQ,GAAI62J,GAqBzD,GAAiB,MAAb33J,KAAK8wF,IACPzuF,EAAKklG,GAAKA,EACVllG,EAAK64G,MAAQ,CAAEvnG,KAAMA,EAAM,eAAgB4lM,OACtC,CAEL,IAAI7hM,EAAI0iM,GAAWp6M,KAAKu/H,OAAOxjC,SAC/B,GAAIrkF,EAAG,CAELA,EAAE2iM,UAAW,EACb,IAAIC,EAAS5iM,EAAErV,KAAOqF,EAAO,GAAIgQ,EAAErV,MAGnC,IAAK,IAAImvC,KAFT8oK,EAAM/yG,GAAK+yG,EAAM/yG,IAAM,GAEL+yG,EAAM/yG,GAAI,CAC1B,IAAIgzG,EAAYD,EAAM/yG,GAAG/1D,GACrBA,KAAS+1D,IACX+yG,EAAM/yG,GAAG/1D,GAASpmC,MAAMiD,QAAQksM,GAAaA,EAAY,CAACA,IAI9D,IAAK,IAAIC,KAAWjzG,EACdizG,KAAWF,EAAM/yG,GAEnB+yG,EAAM/yG,GAAGizG,GAASjxM,KAAKg+F,EAAGizG,IAE1BF,EAAM/yG,GAAGizG,GAAW3tJ,EAIxB,IAAI4tJ,EAAU/iM,EAAErV,KAAK64G,MAAQxzG,EAAO,GAAIgQ,EAAErV,KAAK64G,OAC/Cu/F,EAAO9mM,KAAOA,EACd8mM,EAAO,gBAAkBlB,OAGzBl3M,EAAKklG,GAAKA,EAId,OAAOzmG,EAAEd,KAAK8wF,IAAKzuF,EAAMrC,KAAKu/H,OAAOxjC,WAIzC,SAASi+G,GAAY9pM,GAEnB,KAAIA,EAAEgtG,SAAWhtG,EAAEktG,QAAUltG,EAAEitG,SAAWjtG,EAAE8sG,YAExC9sG,EAAE0tG,wBAEW93G,IAAboK,EAAE84G,QAAqC,IAAb94G,EAAE84G,QAAhC,CAEA,GAAI94G,EAAE6/H,eAAiB7/H,EAAE6/H,cAAcv8E,aAAc,CACnD,IAAIrlD,EAAS+B,EAAE6/H,cAAcv8E,aAAa,UAC1C,GAAI,cAActgD,KAAK/E,GAAW,OAMpC,OAHI+B,EAAE4uG,gBACJ5uG,EAAE4uG,kBAEG,GAGT,SAASs7F,GAAY91G,GACnB,GAAIA,EAEF,IADA,IAAIG,EACK37F,EAAI,EAAGA,EAAIw7F,EAASt7F,OAAQF,IAAK,CAExC,GADA27F,EAAQH,EAASx7F,GACC,MAAd27F,EAAM3T,IACR,OAAO2T,EAET,GAAIA,EAAMH,WAAaG,EAAQ21G,GAAW31G,EAAMH,WAC9C,OAAOG,GAQf,SAAS2nF,GAAS3rD,GAChB,IAAI2rD,GAAQC,WAAa+sB,IAAS34E,EAAlC,CACA2rD,GAAQC,WAAY,EAEpB+sB,EAAO34E,EAEP,IAAIi6E,EAAQ,SAAU7oM,GAAK,YAAa/L,IAAN+L,GAE9B8oM,EAAmB,SAAU35C,EAAI45C,GACnC,IAAI9xM,EAAIk4J,EAAGtgK,SAASm6M,aAChBH,EAAM5xM,IAAM4xM,EAAM5xM,EAAIA,EAAEzG,OAASq4M,EAAM5xM,EAAIA,EAAEotM,wBAC/CptM,EAAEk4J,EAAI45C,IAIVn6E,EAAIksD,MAAM,CACR3rL,aAAc,WACR05M,EAAM16M,KAAKU,SAASszM,SACtBh0M,KAAKw1M,YAAcx1M,KACnBA,KAAK86M,QAAU96M,KAAKU,SAASszM,OAC7Bh0M,KAAK86M,QAAQx+I,KAAKt8D,MAClBygI,EAAIs6E,KAAKC,eAAeh7M,KAAM,SAAUA,KAAK86M,QAAQxzG,QAAQ1iE,UAE7D5kC,KAAKw1M,YAAex1M,KAAK0jM,SAAW1jM,KAAK0jM,QAAQ8R,aAAgBx1M,KAEnE26M,EAAiB36M,KAAMA,OAEzB4nI,UAAW,WACT+yE,EAAiB36M,SAIrBwM,OAAOE,eAAe+zH,EAAIh5H,UAAW,UAAW,CAC9CivB,IAAK,WAAkB,OAAO12B,KAAKw1M,YAAYsF,WAGjDtuM,OAAOE,eAAe+zH,EAAIh5H,UAAW,SAAU,CAC7CivB,IAAK,WAAkB,OAAO12B,KAAKw1M,YAAYyF,UAGjDx6E,EAAIh6D,UAAU,aAAc4uI,GAC5B50E,EAAIh6D,UAAU,aAAc27C,IAE5B,IAAI84F,EAASz6E,EAAI1+H,OAAOo5M,sBAExBD,EAAOE,iBAAmBF,EAAOG,iBAAmBH,EAAOI,kBAAoBJ,EAAOh8E,SAKxF,IAAIq8E,GAA8B,qBAAXnnM,OAIvB,SAASonM,GACP12I,EACA22I,EACAC,EACAC,EACAC,GAGA,IAAIC,EAAWJ,GAAe,GAE1BK,EAAUJ,GAAclvM,OAAO7E,OAAO,MAEtCo0M,EAAUJ,GAAcnvM,OAAO7E,OAAO,MAE1Cm9D,EAAO9+D,SAAQ,SAAU4wB,GACvBolL,GAAeH,EAAUC,EAASC,EAASnlL,EAAOglL,MAIpD,IAAK,IAAI9yM,EAAI,EAAGC,EAAI8yM,EAAS7yM,OAAQF,EAAIC,EAAGD,IACtB,MAAhB+yM,EAAS/yM,KACX+yM,EAAStyM,KAAKsyM,EAASpyM,OAAOX,EAAG,GAAG,IACpCC,IACAD,KAgBJ,MAAO,CACL+yM,SAAUA,EACVC,QAASA,EACTC,QAASA,GAIb,SAASC,GACPH,EACAC,EACAC,EACAnlL,EACAz2B,EACA87M,GAEA,IAAI5pM,EAAOukB,EAAMvkB,KACbxI,EAAO+sB,EAAM/sB,KAmBjB,IAAIqyM,EACFtlL,EAAMslL,qBAAuB,GAC3BC,EAAiBC,GAAc/pM,EAAMlS,EAAQ+7M,EAAoBtvG,QAElC,mBAAxBh2E,EAAMylL,gBACfH,EAAoB9D,UAAYxhL,EAAMylL,eAGxC,IAAIr1F,EAAS,CACX30G,KAAM8pM,EACNG,MAAOC,GAAkBJ,EAAgBD,GACzC3vB,WAAY31J,EAAM21J,YAAc,CAAExwF,QAASnlE,EAAM6vC,WACjD+1I,MAAO5lL,EAAM4lL,MACc,kBAAhB5lL,EAAM4lL,MACX,CAAC5lL,EAAM4lL,OACP5lL,EAAM4lL,MACR,GACJrxI,UAAW,GACX+pI,WAAY,GACZrrM,KAAMA,EACN1J,OAAQA,EACR87M,QAASA,EACTQ,SAAU7lL,EAAM6lL,SAChB50B,YAAajxJ,EAAMixJ,YACnB9jJ,KAAMnN,EAAMmN,MAAQ,GACpB/rB,MACiB,MAAf4e,EAAM5e,MACF,GACA4e,EAAM21J,WACJ31J,EAAM5e,MACN,CAAE+jF,QAASnlE,EAAM5e,QAoC3B,GAjCI4e,EAAM0tE,UAoBR1tE,EAAM0tE,SAASt+F,SAAQ,SAAUy+F,GAC/B,IAAIi4G,EAAeT,EACfrF,EAAWqF,EAAU,IAAOx3G,EAAU,WACtC3+F,EACJk2M,GAAeH,EAAUC,EAASC,EAASt3G,EAAOuiB,EAAQ01F,MAIzDZ,EAAQ90F,EAAO30G,QAClBwpM,EAAStyM,KAAKy9G,EAAO30G,MACrBypM,EAAQ90F,EAAO30G,MAAQ20G,QAGLlhH,IAAhB8wB,EAAM4lL,MAER,IADA,IAAIG,EAAUvxM,MAAMiD,QAAQuoB,EAAM4lL,OAAS5lL,EAAM4lL,MAAQ,CAAC5lL,EAAM4lL,OACvD1zM,EAAI,EAAGA,EAAI6zM,EAAQ3zM,SAAUF,EAAG,CACvC,IAAI0zM,EAAQG,EAAQ7zM,GAChB,EASJ,IAAI8zM,EAAa,CACfvqM,KAAMmqM,EACNl4G,SAAU1tE,EAAM0tE,UAElB03G,GACEH,EACAC,EACAC,EACAa,EACAz8M,EACA6mH,EAAO30G,MAAQ,KAKjBxI,IACGkyM,EAAQlyM,KACXkyM,EAAQlyM,GAAQm9G,IAWtB,SAASu1F,GACPlqM,EACA6pM,GAEA,IAAII,EAAQxF,EAAezkM,EAAM,GAAI6pM,GAWrC,OAAOI,EAGT,SAASF,GACP/pM,EACAlS,EACAysG,GAGA,OADKA,IAAUv6F,EAAOA,EAAKX,QAAQ,MAAO,KAC1B,MAAZW,EAAK,IACK,MAAVlS,EAD0BkS,EAEvBukM,EAAYz2M,EAAW,KAAI,IAAMkS,GAO1C,SAASwqM,GACP/3I,EACAkvI,GAEA,IAAIxvG,EAAMg3G,GAAe12I,GACrB+2I,EAAWr3G,EAAIq3G,SACfC,EAAUt3G,EAAIs3G,QACdC,EAAUv3G,EAAIu3G,QAElB,SAASe,EAAWh4I,GAClB02I,GAAe12I,EAAQ+2I,EAAUC,EAASC,GAG5C,SAASgB,EAAUC,EAAepmL,GAChC,IAAIz2B,EAAmC,kBAAlB68M,EAA8BjB,EAAQiB,QAAiBl3M,EAE5E01M,GAAe,CAAC5kL,GAASomL,GAAgBnB,EAAUC,EAASC,EAAS57M,GAGjEA,GAAUA,EAAOq8M,MAAMxzM,QACzBwyM,GAEEr7M,EAAOq8M,MAAM/gM,KAAI,SAAU+gM,GAAS,MAAO,CAAGnqM,KAAMmqM,EAAOl4G,SAAU,CAAC1tE,OACtEilL,EACAC,EACAC,EACA57M,GAKN,SAAS88M,IACP,OAAOpB,EAASpgM,KAAI,SAAUpJ,GAAQ,OAAOypM,EAAQzpM,MAGvD,SAASQ,EACP+kC,EACAslK,EACAnJ,GAEA,IAAI1/L,EAAW0kM,EAAkBnhK,EAAKslK,GAAc,EAAOlJ,GACvDnqM,EAAOwK,EAASxK,KAEpB,GAAIA,EAAM,CACR,IAAIm9G,EAAS+0F,EAAQlyM,GAIrB,IAAKm9G,EAAU,OAAOm2F,EAAa,KAAM9oM,GACzC,IAAI+oM,EAAap2F,EAAOs1F,MAAMztM,KAC3BsJ,QAAO,SAAUjS,GAAO,OAAQA,EAAIi5K,YACpC1jK,KAAI,SAAUvV,GAAO,OAAOA,EAAI2D,QAMnC,GAJ+B,kBAApBwK,EAAS5P,SAClB4P,EAAS5P,OAAS,IAGhBy4M,GAA+C,kBAAxBA,EAAaz4M,OACtC,IAAK,IAAIyB,KAAOg3M,EAAaz4M,SACrByB,KAAOmO,EAAS5P,SAAW24M,EAAWr4M,QAAQmB,IAAQ,IAC1DmO,EAAS5P,OAAOyB,GAAOg3M,EAAaz4M,OAAOyB,IAMjD,OADAmO,EAAShC,KAAOsmM,EAAW3xF,EAAO30G,KAAMgC,EAAS5P,OAAS,gBAAmBoF,EAAO,KAC7EszM,EAAan2F,EAAQ3yG,EAAU0/L,GACjC,GAAI1/L,EAAShC,KAAM,CACxBgC,EAAS5P,OAAS,GAClB,IAAK,IAAIqE,EAAI,EAAGA,EAAI+yM,EAAS7yM,OAAQF,IAAK,CACxC,IAAIuJ,EAAOwpM,EAAS/yM,GAChBu0M,EAAWvB,EAAQzpM,GACvB,GAAIu7J,GAAWyvC,EAASf,MAAOjoM,EAAShC,KAAMgC,EAAS5P,QACrD,OAAO04M,EAAaE,EAAUhpM,EAAU0/L,IAK9C,OAAOoJ,EAAa,KAAM9oM,GAG5B,SAASooM,EACPz1F,EACA3yG,GAEA,IAAIipM,EAAmBt2F,EAAOy1F,SAC1BA,EAAuC,oBAArBa,EAClBA,EAAiBxJ,EAAY9sF,EAAQ3yG,EAAU,KAAM2/L,IACrDsJ,EAMJ,GAJwB,kBAAbb,IACTA,EAAW,CAAEpqM,KAAMoqM,KAGhBA,GAAgC,kBAAbA,EAMtB,OAAOU,EAAa,KAAM9oM,GAG5B,IAAIknG,EAAKkhG,EACL5yM,EAAO0xG,EAAG1xG,KACVwI,EAAOkpG,EAAGlpG,KACVwpF,EAAQxnF,EAASwnF,MACjB9nF,EAAOM,EAASN,KAChBtP,EAAS4P,EAAS5P,OAKtB,GAJAo3F,EAAQ0f,EAAG/jG,eAAe,SAAW+jG,EAAG1f,MAAQA,EAChD9nF,EAAOwnG,EAAG/jG,eAAe,QAAU+jG,EAAGxnG,KAAOA,EAC7CtP,EAAS82G,EAAG/jG,eAAe,UAAY+jG,EAAG92G,OAASA,EAE/CoF,EAAM,CAEWkyM,EAAQlyM,GAI3B,OAAOgJ,EAAM,CACXs6E,aAAa,EACbtjF,KAAMA,EACNgyF,MAAOA,EACP9nF,KAAMA,EACNtP,OAAQA,QACPqB,EAAWuO,GACT,GAAIhC,EAAM,CAEf,IAAI4mM,EAAUsE,GAAkBlrM,EAAM20G,GAElCw2F,EAAe7E,EAAWM,EAASx0M,EAAS,6BAAgCw0M,EAAU,KAE1F,OAAOpmM,EAAM,CACXs6E,aAAa,EACb96E,KAAMmrM,EACN3hH,MAAOA,EACP9nF,KAAMA,QACLjO,EAAWuO,GAKd,OAAO8oM,EAAa,KAAM9oM,GAI9B,SAASmoM,EACPx1F,EACA3yG,EACA4nM,GAEA,IAAIwB,EAAc9E,EAAWsD,EAAS5nM,EAAS5P,OAAS,4BAA+Bw3M,EAAU,KAC7FyB,EAAe7qM,EAAM,CACvBs6E,aAAa,EACb96E,KAAMorM,IAER,GAAIC,EAAc,CAChB,IAAIxJ,EAAUwJ,EAAaxJ,QACvByJ,EAAgBzJ,EAAQA,EAAQlrM,OAAS,GAE7C,OADAqL,EAAS5P,OAASi5M,EAAaj5M,OACxB04M,EAAaQ,EAAetpM,GAErC,OAAO8oM,EAAa,KAAM9oM,GAG5B,SAAS8oM,EACPn2F,EACA3yG,EACA0/L,GAEA,OAAI/sF,GAAUA,EAAOy1F,SACZA,EAASz1F,EAAQ+sF,GAAkB1/L,GAExC2yG,GAAUA,EAAOi1F,QACZO,EAAMx1F,EAAQ3yG,EAAU2yG,EAAOi1F,SAEjCnI,EAAY9sF,EAAQ3yG,EAAU0/L,EAAgBC,GAGvD,MAAO,CACLnhM,MAAOA,EACPkqM,SAAUA,EACVE,UAAWA,EACXH,UAAWA,GAIf,SAASlvC,GACP0uC,EACAjqM,EACA5N,GAEA,IAAI+e,EAAInR,EAAKQ,MAAMypM,GAEnB,IAAK94L,EACH,OAAO,EACF,IAAK/e,EACV,OAAO,EAGT,IAAK,IAAIqE,EAAI,EAAGkS,EAAMwI,EAAExa,OAAQF,EAAIkS,IAAOlS,EAAG,CAC5C,IAAI5C,EAAMo2M,EAAMztM,KAAK/F,EAAI,GACrB5C,IAEFzB,EAAOyB,EAAI2D,MAAQ,aAA+B,kBAAT2Z,EAAE1a,GAAkB0gK,EAAOhmJ,EAAE1a,IAAM0a,EAAE1a,IAIlF,OAAO,EAGT,SAASy0M,GAAmBlrM,EAAM20G,GAChC,OAAOsvF,EAAYjkM,EAAM20G,EAAO7mH,OAAS6mH,EAAO7mH,OAAOkS,KAAO,KAAK,GAMrE,IAAIurM,GACFrC,IAAannM,OAAOikK,aAAejkK,OAAOikK,YAAYplK,IAClDmB,OAAOikK,YACP3lK,KAEN,SAASmrM,KACP,OAAOD,GAAK3qM,MAAM8yL,QAAQ,GAG5B,IAAI33F,GAAOyvG,KAEX,SAASC,KACP,OAAO1vG,GAGT,SAAS2vG,GAAa73M,GACpB,OAAQkoG,GAAOloG,EAKjB,IAAI83M,GAAgBxxM,OAAO7E,OAAO,MAElC,SAASs2M,KAEH,sBAAuB7pM,OAAOkzF,UAChClzF,OAAOkzF,QAAQ42G,kBAAoB,UAOrC,IAAIC,EAAkB/pM,OAAOC,SAAStN,SAAW,KAAOqN,OAAOC,SAASR,KACpEuqM,EAAehqM,OAAOC,SAASV,KAAKjC,QAAQysM,EAAiB,IAE7DE,EAAY32M,EAAO,GAAI0M,OAAOkzF,QAAQvS,OAI1C,OAHAspH,EAAUn4M,IAAM43M,KAChB1pM,OAAOkzF,QAAQg3G,aAAaD,EAAW,GAAID,GAC3ChqM,OAAO7N,iBAAiB,WAAYg4M,IAC7B,WACLnqM,OAAOvR,oBAAoB,WAAY07M,KAI3C,SAASC,GACPxK,EACApiL,EACAjlB,EACA8xM,GAEA,GAAKzK,EAAOnxE,IAAZ,CAIA,IAAI67E,EAAW1K,EAAOr0M,QAAQg/M,eACzBD,GASL1K,EAAOnxE,IAAIrB,WAAU,WACnB,IAAIjpH,EAAWqmM,KACXnhB,EAAeihB,EAASr+M,KAC1B2zM,EACApiL,EACAjlB,EACA8xM,EAAQlmM,EAAW,MAGhBklL,IAI4B,oBAAtBA,EAAa70L,KACtB60L,EACG70L,MAAK,SAAU60L,GACdohB,GAAiB,EAAgBtmM,MAElCkxJ,OAAM,SAAUplK,GACX,KAKRw6M,GAAiBphB,EAAcllL,QAKrC,SAASumM,KACP,IAAI54M,EAAM43M,KACN53M,IACF83M,GAAc93M,GAAO,CACnBwY,EAAGtK,OAAO6nL,YACVt9K,EAAGvK,OAAOmtH,cAKhB,SAASg9E,GAAgBruM,GACvB4uM,KACI5uM,EAAE6kF,OAAS7kF,EAAE6kF,MAAM7uF,KACrB63M,GAAY7tM,EAAE6kF,MAAM7uF,KAIxB,SAAS04M,KACP,IAAI14M,EAAM43M,KACV,GAAI53M,EACF,OAAO83M,GAAc93M,GAIzB,SAAS64M,GAAoBrpM,EAAIsvC,GAC/B,IAAIg6J,EAAQpsM,SAASysJ,gBACjB4/C,EAAUD,EAAMv2K,wBAChBy2K,EAASxpM,EAAG+yB,wBAChB,MAAO,CACL/pB,EAAGwgM,EAAOtlM,KAAOqlM,EAAQrlM,KAAOorC,EAAOtmC,EACvCC,EAAGugM,EAAOvkL,IAAMskL,EAAQtkL,IAAMqqB,EAAOrmC,GAIzC,SAASwgM,GAAiBpyM,GACxB,OAAO0F,GAAS1F,EAAI2R,IAAMjM,GAAS1F,EAAI4R,GAGzC,SAASygM,GAAmBryM,GAC1B,MAAO,CACL2R,EAAGjM,GAAS1F,EAAI2R,GAAK3R,EAAI2R,EAAItK,OAAO6nL,YACpCt9K,EAAGlM,GAAS1F,EAAI4R,GAAK5R,EAAI4R,EAAIvK,OAAOmtH,aAIxC,SAAS89E,GAAiBtyM,GACxB,MAAO,CACL2R,EAAGjM,GAAS1F,EAAI2R,GAAK3R,EAAI2R,EAAI,EAC7BC,EAAGlM,GAAS1F,EAAI4R,GAAK5R,EAAI4R,EAAI,GAIjC,SAASlM,GAAUZ,GACjB,MAAoB,kBAANA,EAGhB,IAAIytM,GAAyB,OAE7B,SAAST,GAAkBphB,EAAcllL,GACvC,IAAIzH,EAAmC,kBAAjB2sL,EACtB,GAAI3sL,GAA6C,kBAA1B2sL,EAAa1pE,SAAuB,CAGzD,IAAIr+G,EAAK4pM,GAAuBpsM,KAAKuqL,EAAa1pE,UAC9CnhH,SAASs4D,eAAeuyH,EAAa1pE,SAASzlH,MAAM,IACpDsE,SAAS85F,cAAc+wF,EAAa1pE,UAExC,GAAIr+G,EAAI,CACN,IAAIsvC,EACFy4I,EAAaz4I,QAAyC,kBAAxBy4I,EAAaz4I,OACvCy4I,EAAaz4I,OACb,GACNA,EAASq6J,GAAgBr6J,GACzBzsC,EAAWwmM,GAAmBrpM,EAAIsvC,QACzBm6J,GAAgB1hB,KACzBllL,EAAW6mM,GAAkB3hB,SAEtB3sL,GAAYquM,GAAgB1hB,KACrCllL,EAAW6mM,GAAkB3hB,IAG3BllL,IAEE,mBAAoB3F,SAASysJ,gBAAgBlqI,MAC/C/gB,OAAOqoK,SAAS,CACd7iK,KAAMrB,EAASmG,EACfic,IAAKpiB,EAASoG,EAEd+/L,SAAUjhB,EAAaihB,WAGzBtqM,OAAOqoK,SAASlkK,EAASmG,EAAGnG,EAASoG,IAO3C,IAAI4gM,GACFhE,IACA,WACE,IAAIiE,EAAKprM,OAAOd,UAAUC,UAE1B,QACiC,IAA9BisM,EAAGz6M,QAAQ,gBAAuD,IAA/By6M,EAAGz6M,QAAQ,iBACd,IAAjCy6M,EAAGz6M,QAAQ,mBACe,IAA1By6M,EAAGz6M,QAAQ,YACsB,IAAjCy6M,EAAGz6M,QAAQ,oBAKNqP,OAAOkzF,SAA+C,oBAA7BlzF,OAAOkzF,QAAQm4G,WAZjD,GAeF,SAASA,GAAW97M,EAAK+N,GACvBotM,KAGA,IAAIx3G,EAAUlzF,OAAOkzF,QACrB,IACE,GAAI51F,EAAS,CAEX,IAAI2sM,EAAY32M,EAAO,GAAI4/F,EAAQvS,OACnCspH,EAAUn4M,IAAM43M,KAChBx2G,EAAQg3G,aAAaD,EAAW,GAAI16M,QAEpC2jG,EAAQm4G,UAAU,CAAEv5M,IAAK63M,GAAYF,OAAkB,GAAIl6M,GAE7D,MAAOuM,GACPkE,OAAOC,SAAS3C,EAAU,UAAY,UAAU/N,IAIpD,SAAS26M,GAAc36M,GACrB87M,GAAU97M,GAAK,GAKjB,SAAS+7M,GAAUC,EAAOtyM,EAAIokC,GAC5B,IAAI2wB,EAAO,SAAU54D,GACfA,GAASm2M,EAAM32M,OACjByoC,IAEIkuK,EAAMn2M,GACR6D,EAAGsyM,EAAMn2M,IAAQ,WACf44D,EAAK54D,EAAQ,MAGf44D,EAAK54D,EAAQ,IAInB44D,EAAK,GAIP,IAAIw9I,GAAwB,CAC1BC,WAAY,EACZ/4M,QAAS,EACTg5M,UAAW,EACXC,WAAY,IAGd,SAASC,GAAiCrzM,EAAMilB,GAC9C,OAAOquL,GACLtzM,EACAilB,EACAguL,GAAsBC,WACrB,+BAAmClzM,EAAa,SAAI,SAAcuzM,GACjEtuL,GACG,6BAIT,SAASuuL,GAAiCxzM,EAAMilB,GAC9C,IAAIlmB,EAAQu0M,GACVtzM,EACAilB,EACAguL,GAAsBG,WACrB,sDAA0DpzM,EAAa,SAAI,MAI9E,OADAjB,EAAM7B,KAAO,uBACN6B,EAGT,SAAS00M,GAAgCzzM,EAAMilB,GAC7C,OAAOquL,GACLtzM,EACAilB,EACAguL,GAAsBE,UACrB,8BAAkCnzM,EAAa,SAAI,SAAcilB,EAAW,SAAI,4BAIrF,SAASyuL,GAA8B1zM,EAAMilB,GAC3C,OAAOquL,GACLtzM,EACAilB,EACAguL,GAAsB94M,QACrB,4BAAgC6F,EAAa,SAAI,SAAcilB,EAAW,SAAI,6BAInF,SAASquL,GAAmBtzM,EAAMilB,EAAIjrB,EAAMwC,GAC1C,IAAIuC,EAAQ,IAAIK,MAAM5C,GAMtB,OALAuC,EAAM40M,WAAY,EAClB50M,EAAMiB,KAAOA,EACbjB,EAAMkmB,GAAKA,EACXlmB,EAAM/E,KAAOA,EAEN+E,EAGT,IAAI60M,GAAkB,CAAC,SAAU,QAAS,QAE1C,SAASL,GAAgBtuL,GACvB,GAAkB,kBAAPA,EAAmB,OAAOA,EACrC,GAAI,SAAUA,EAAM,OAAOA,EAAGvf,KAC9B,IAAIgC,EAAW,GAIf,OAHAksM,GAAgBv6M,SAAQ,SAAUE,GAC5BA,KAAO0rB,IAAMvd,EAASnO,GAAO0rB,EAAG1rB,OAE/B6J,KAAKI,UAAUkE,EAAU,KAAM,GAGxC,SAASmsM,GAASn8M,GAChB,OAAOmI,OAAO/E,UAAUgI,SAASpP,KAAKgE,GAAKU,QAAQ,UAAY,EAGjE,SAAS07M,GAAqBp8M,EAAKq8M,GACjC,OACEF,GAAQn8M,IACRA,EAAIi8M,YACU,MAAbI,GAAqBr8M,EAAIsC,OAAS+5M,GAMvC,SAASC,GAAwBzM,GAC/B,OAAO,SAAUtiL,EAAIjlB,EAAMk4B,GACzB,IAAI+7K,GAAW,EACXC,EAAU,EACVn1M,EAAQ,KAEZo1M,GAAkB5M,GAAS,SAAUrwG,EAAKuW,EAAGvnG,EAAO3M,GAMlD,GAAmB,oBAAR29F,QAAkC/9F,IAAZ+9F,EAAIqgG,IAAmB,CACtD0c,GAAW,EACXC,IAEA,IA0BI/gL,EA1BA79B,EAAUmpG,IAAK,SAAU21G,GACvBC,GAAWD,KACbA,EAAcA,EAAYhlH,SAG5B8H,EAAI1wD,SAAkC,oBAAhB4tK,EAClBA,EACA3H,EAAK1xM,OAAOq5M,GAChBluM,EAAM05K,WAAWrmL,GAAO66M,EACxBF,IACIA,GAAW,GACbh8K,OAIA3iC,EAASkpG,IAAK,SAAUhiG,GAC1B,IAAI63M,EAAM,qCAAuC/6M,EAAM,KAAOkD,EAEzDsC,IACHA,EAAQ80M,GAAQp3M,GACZA,EACA,IAAI2C,MAAMk1M,GACdp8K,EAAKn5B,OAKT,IACEo0B,EAAM+jE,EAAI5hG,EAASC,GACnB,MAAOgO,GACPhO,EAAOgO,GAET,GAAI4vB,EACF,GAAwB,oBAAbA,EAAIl3B,KACbk3B,EAAIl3B,KAAK3G,EAASC,OACb,CAEL,IAAIg/M,EAAOphL,EAAI2mC,UACXy6I,GAA6B,oBAAdA,EAAKt4M,MACtBs4M,EAAKt4M,KAAK3G,EAASC,QAOxB0+M,GAAY/7K,KAIrB,SAASi8K,GACP5M,EACA7mM,GAEA,OAAO8zM,GAAQjN,EAAQz4L,KAAI,SAAU+H,GACnC,OAAOhX,OAAOqC,KAAK2U,EAAE+oK,YAAY9wK,KAAI,SAAUvV,GAAO,OAAOmH,EAC3DmW,EAAE+oK,WAAWrmL,GACbsd,EAAE2nD,UAAUjlE,GACZsd,EAAGtd,UAKT,SAASi7M,GAASpsM,GAChB,OAAO3J,MAAM3D,UAAUxG,OAAOoK,MAAM,GAAI0J,GAG1C,IAAIqsM,GACgB,oBAAX1gL,QACuB,kBAAvBA,OAAOC,YAEhB,SAASqgL,GAAYj0M,GACnB,OAAOA,EAAI8tF,YAAeumH,IAAyC,WAA5Br0M,EAAI2zB,OAAOC,aAOpD,SAASyqE,GAAM/9F,GACb,IAAIg0M,GAAS,EACb,OAAO,WACL,IAAI9vM,EAAO,GAAIyJ,EAAMxJ,UAAUxI,OAC/B,MAAQgS,IAAQzJ,EAAMyJ,GAAQxJ,UAAWwJ,GAEzC,IAAIqmM,EAEJ,OADAA,GAAS,EACFh0M,EAAGhC,MAAMrL,KAAMuR,IAM1B,IAAIq1G,GAAU,SAAkBotF,EAAQn0K,GACtC7/B,KAAKg0M,OAASA,EACdh0M,KAAK6/B,KAAOyhL,GAAczhL,GAE1B7/B,KAAK4kC,QAAUwvK,EACfp0M,KAAK6gN,QAAU,KACf7gN,KAAKuhN,OAAQ,EACbvhN,KAAKwhN,SAAW,GAChBxhN,KAAKyhN,cAAgB,GACrBzhN,KAAK0hN,SAAW,GAChB1hN,KAAK2/B,UAAY,IAwNnB,SAAS2hL,GAAezhL,GACtB,IAAKA,EACH,GAAI07K,GAAW,CAEb,IAAIoG,EAAS/uM,SAAS85F,cAAc,QACpC7sE,EAAQ8hL,GAAUA,EAAOnuJ,aAAa,SAAY,IAElD3zB,EAAOA,EAAKnuB,QAAQ,qBAAsB,SAE1CmuB,EAAO,IAQX,MAJuB,MAAnBA,EAAK1rB,OAAO,KACd0rB,EAAO,IAAMA,GAGRA,EAAKnuB,QAAQ,MAAO,IAG7B,SAASkwM,GACPh9K,EACAC,GAEA,IAAI/7B,EACAsW,EAAMnQ,KAAKmQ,IAAIwlB,EAAQ57B,OAAQ67B,EAAK77B,QACxC,IAAKF,EAAI,EAAGA,EAAIsW,EAAKtW,IACnB,GAAI87B,EAAQ97B,KAAO+7B,EAAK/7B,GACtB,MAGJ,MAAO,CACLwkE,QAASzoC,EAAKv2B,MAAM,EAAGxF,GACvBmoE,UAAWpsC,EAAKv2B,MAAMxF,GACtBkoE,YAAapsC,EAAQt2B,MAAMxF,IAI/B,SAAS+4M,GACPh3F,EACAhhH,EACA3C,EACA6T,GAEA,IAAI+mM,EAAShB,GAAkBj2F,GAAS,SAAUhnB,EAAKr8F,EAAUqL,EAAO3M,GACtE,IAAI67M,EAAQC,GAAan+G,EAAKh6F,GAC9B,GAAIk4M,EACF,OAAO32M,MAAMiD,QAAQ0zM,GACjBA,EAAMtmM,KAAI,SAAUsmM,GAAS,OAAO76M,EAAK66M,EAAOv6M,EAAUqL,EAAO3M,MACjEgB,EAAK66M,EAAOv6M,EAAUqL,EAAO3M,MAGrC,OAAOi7M,GAAQpmM,EAAU+mM,EAAO/mM,UAAY+mM,GAG9C,SAASE,GACPn+G,EACA39F,GAMA,MAJmB,oBAAR29F,IAETA,EAAMu1G,EAAK1xM,OAAOm8F,IAEbA,EAAIlkG,QAAQuG,GAGrB,SAAS+7M,GAAoBjxI,GAC3B,OAAO6wI,GAAc7wI,EAAa,mBAAoBkxI,IAAW,GAGnE,SAASC,GAAoB70I,GAC3B,OAAOu0I,GAAcv0I,EAAS,oBAAqB40I,IAGrD,SAASA,GAAWH,EAAOv6M,GACzB,GAAIA,EACF,OAAO,WACL,OAAOu6M,EAAM12M,MAAM7D,EAAUgK,YAKnC,SAAS4wM,GACPnxI,GAEA,OAAO4wI,GACL5wI,EACA,oBACA,SAAU8wI,EAAO3nG,EAAGvnG,EAAO3M,GACzB,OAAOm8M,GAAeN,EAAOlvM,EAAO3M,MAK1C,SAASm8M,GACPN,EACAlvM,EACA3M,GAEA,OAAO,SAA0B0rB,EAAIjlB,EAAMk4B,GACzC,OAAOk9K,EAAMnwL,EAAIjlB,GAAM,SAAU8kC,GACb,oBAAPA,IACJ5+B,EAAMqiM,WAAWhvM,KACpB2M,EAAMqiM,WAAWhvM,GAAO,IAE1B2M,EAAMqiM,WAAWhvM,GAAKqD,KAAKkoC,IAE7B5M,EAAK4M,OAhUXm1E,GAAQn/G,UAAU8pC,OAAS,SAAiBE,GAC1CzxC,KAAKyxC,GAAKA,GAGZm1E,GAAQn/G,UAAU66M,QAAU,SAAkB7wK,EAAI8wK,GAC5CviN,KAAKuhN,MACP9vK,KAEAzxC,KAAKwhN,SAASj4M,KAAKkoC,GACf8wK,GACFviN,KAAKyhN,cAAcl4M,KAAKg5M,KAK9B37F,GAAQn/G,UAAU8hK,QAAU,SAAkBg5C,GAC5CviN,KAAK0hN,SAASn4M,KAAKg5M,IAGrB37F,GAAQn/G,UAAU+6M,aAAe,SAC/BnuM,EACAy2D,EACA23I,GAEE,IAEE7rL,EAFE4iL,EAASx5M,KAIf,IACE42B,EAAQ52B,KAAKg0M,OAAOnhM,MAAMwB,EAAUrU,KAAK4kC,SACzC,MAAO10B,GAKP,MAJAlQ,KAAK0hN,SAAS17M,SAAQ,SAAUyrC,GAC9BA,EAAGvhC,MAGCA,EAER,IAAI+2B,EAAOjnC,KAAK4kC,QAChB5kC,KAAK0iN,kBACH9rL,GACA,WACE4iL,EAAOmJ,YAAY/rL,GACnBk0C,GAAcA,EAAWl0C,GACzB4iL,EAAOoJ,YACPpJ,EAAOxF,OAAO6O,WAAW78M,SAAQ,SAAUtG,GACzCA,GAAQA,EAAKk3B,EAAOqQ,MAIjBuyK,EAAO+H,QACV/H,EAAO+H,OAAQ,EACf/H,EAAOgI,SAASx7M,SAAQ,SAAUyrC,GAChCA,EAAG7a,UAIT,SAAUvyB,GACJo+M,GACFA,EAAQp+M,GAENA,IAAQm1M,EAAO+H,QAKZd,GAAoBp8M,EAAKu7M,GAAsBC,aAAe54K,IAASmtK,IAC1EoF,EAAO+H,OAAQ,EACf/H,EAAOiI,cAAcz7M,SAAQ,SAAUyrC,GACrCA,EAAGptC,YAQfuiH,GAAQn/G,UAAUi7M,kBAAoB,SAA4B9rL,EAAOk0C,EAAY23I,GACjF,IAAIjJ,EAASx5M,KAEX4kC,EAAU5kC,KAAK4kC,QACnB5kC,KAAK6gN,QAAUjqL,EACf,IAAIhwB,EAAQ,SAAUvC,IAIfo8M,GAAoBp8M,IAAQm8M,GAAQn8M,KACnCm1M,EAAOkI,SAAS14M,OAClBwwM,EAAOkI,SAAS17M,SAAQ,SAAUyrC,GAChCA,EAAGptC,MAMLqS,QAAQhL,MAAMrH,IAGlBo+M,GAAWA,EAAQp+M,IAEjBy+M,EAAiBlsL,EAAMs9K,QAAQlrM,OAAS,EACxC+5M,EAAmBn+K,EAAQsvK,QAAQlrM,OAAS,EAChD,GACEsrM,EAAY19K,EAAOgO,IAEnBk+K,IAAmBC,GACnBnsL,EAAMs9K,QAAQ4O,KAAoBl+K,EAAQsvK,QAAQ6O,GAMlD,OAJA/iN,KAAK4iN,YACDhsL,EAAM7iB,MACRyqM,GAAax+M,KAAKg0M,OAAQpvK,EAAShO,GAAO,GAErChwB,EAAMu5M,GAAgCv7K,EAAShO,IAGxD,IAAI4tE,EAAMo9G,GACR5hN,KAAK4kC,QAAQsvK,QACbt9K,EAAMs9K,SAEF5mI,EAAUk3B,EAAIl3B,QACd0D,EAAcwzB,EAAIxzB,YAClBC,EAAYuzB,EAAIvzB,UAElB0uI,EAAQ,GAAG1+M,OAEbghN,GAAmBjxI,GAEnBhxE,KAAKg0M,OAAOgP,YAEZb,GAAmB70I,GAEnB2D,EAAUx1D,KAAI,SAAU+H,GAAK,OAAOA,EAAEqkK,eAEtC84B,GAAuB1vI,IAGrB+nB,EAAW,SAAUt5F,EAAMmlC,GAC7B,GAAI20K,EAAOqH,UAAYjqL,EACrB,OAAOhwB,EAAMw5M,GAA+Bx7K,EAAShO,IAEvD,IACEl3B,EAAKk3B,EAAOgO,GAAS,SAAUhT,IAClB,IAAPA,GAEF4nL,EAAOoJ,WAAU,GACjBh8M,EAAMy5M,GAA6Bz7K,EAAShO,KACnC4pL,GAAQ5uL,IACjB4nL,EAAOoJ,WAAU,GACjBh8M,EAAMgrB,IAEQ,kBAAPA,GACQ,kBAAPA,IACc,kBAAZA,EAAGvf,MAAwC,kBAAZuf,EAAG/nB,OAG5CjD,EAAMo5M,GAAgCp7K,EAAShO,IAC7B,kBAAPhF,GAAmBA,EAAGlgB,QAC/B8nM,EAAO9nM,QAAQkgB,GAEf4nL,EAAOjwM,KAAKqoB,IAIdiT,EAAKjT,MAGT,MAAO1hB,GACPtJ,EAAMsJ,KAIVwvM,GAASC,EAAO3mH,GAAU,WAGxB,IAAIiqH,EAAcb,GAAmBnxI,GACjC0uI,EAAQsD,EAAYhiN,OAAOu4M,EAAOxF,OAAOkP,cAC7CxD,GAASC,EAAO3mH,GAAU,WACxB,GAAIwgH,EAAOqH,UAAYjqL,EACrB,OAAOhwB,EAAMw5M,GAA+Bx7K,EAAShO,IAEvD4iL,EAAOqH,QAAU,KACjB/1I,EAAWl0C,GACP4iL,EAAOxF,OAAOnxE,KAChB22E,EAAOxF,OAAOnxE,IAAIrB,WAAU,WAC1BwzE,EAAmBp+K,aAO7BgwF,GAAQn/G,UAAUk7M,YAAc,SAAsB/rL,GACpD52B,KAAK4kC,QAAUhO,EACf52B,KAAKyxC,IAAMzxC,KAAKyxC,GAAG7a,IAGrBgwF,GAAQn/G,UAAU07M,eAAiB,aAInCv8F,GAAQn/G,UAAU27M,SAAW,WAG3BpjN,KAAK2/B,UAAU35B,SAAQ,SAAUq9M,GAC/BA,OAEFrjN,KAAK2/B,UAAY,GAIjB3/B,KAAK4kC,QAAUwvK,EACfp0M,KAAK6gN,QAAU,MAqHjB,IAAIyC,GAA6B,SAAU18F,GACzC,SAAS08F,EAActP,EAAQn0K,GAC7B+mF,EAAQvmH,KAAKL,KAAMg0M,EAAQn0K,GAE3B7/B,KAAKujN,eAAiBC,GAAYxjN,KAAK6/B,MAmFzC,OAhFK+mF,IAAU08F,EAAansH,UAAYyvB,GACxC08F,EAAa77M,UAAY+E,OAAO7E,OAAQi/G,GAAWA,EAAQn/G,WAC3D67M,EAAa77M,UAAUuP,YAAcssM,EAErCA,EAAa77M,UAAU07M,eAAiB,WACtC,IAAI3J,EAASx5M,KAEb,KAAIA,KAAK2/B,UAAU32B,OAAS,GAA5B,CAIA,IAAIgrM,EAASh0M,KAAKg0M,OACdyP,EAAezP,EAAOr0M,QAAQg/M,eAC9B+E,EAAiBnE,IAAqBkE,EAEtCC,GACF1jN,KAAK2/B,UAAUp2B,KAAK00M,MAGtB,IAAI0F,EAAqB,WACvB,IAAI/+K,EAAU40K,EAAO50K,QAIjBvwB,EAAWmvM,GAAYhK,EAAO35K,MAC9B25K,EAAO50K,UAAYwvK,GAAS//L,IAAamlM,EAAO+J,gBAIpD/J,EAAOgJ,aAAanuM,GAAU,SAAUuiB,GAClC8sL,GACFlF,GAAaxK,EAAQp9K,EAAOgO,GAAS,OAI3CxwB,OAAO7N,iBAAiB,WAAYo9M,GACpC3jN,KAAK2/B,UAAUp2B,MAAK,WAClB6K,OAAOvR,oBAAoB,WAAY8gN,QAI3CL,EAAa77M,UAAUm8M,GAAK,SAAaplM,GACvCpK,OAAOkzF,QAAQs8G,GAAGplM,IAGpB8kM,EAAa77M,UAAU8B,KAAO,SAAe8K,EAAUy2D,EAAY23I,GACjE,IAAIjJ,EAASx5M,KAETwkG,EAAMxkG,KACN6jN,EAAYr/G,EAAI5/D,QACpB5kC,KAAKwiN,aAAanuM,GAAU,SAAUuiB,GACpC6oL,GAAU7I,EAAU4C,EAAO35K,KAAOjJ,EAAMnzB,WACxC+6M,GAAahF,EAAOxF,OAAQp9K,EAAOitL,GAAW,GAC9C/4I,GAAcA,EAAWl0C,KACxB6rL,IAGLa,EAAa77M,UAAUiK,QAAU,SAAkB2C,EAAUy2D,EAAY23I,GACvE,IAAIjJ,EAASx5M,KAETwkG,EAAMxkG,KACN6jN,EAAYr/G,EAAI5/D,QACpB5kC,KAAKwiN,aAAanuM,GAAU,SAAUuiB,GACpC0nL,GAAa1H,EAAU4C,EAAO35K,KAAOjJ,EAAMnzB,WAC3C+6M,GAAahF,EAAOxF,OAAQp9K,EAAOitL,GAAW,GAC9C/4I,GAAcA,EAAWl0C,KACxB6rL,IAGLa,EAAa77M,UAAUm7M,UAAY,SAAoBr5M,GACrD,GAAIi6M,GAAYxjN,KAAK6/B,QAAU7/B,KAAK4kC,QAAQnhC,SAAU,CACpD,IAAImhC,EAAUgyK,EAAU52M,KAAK6/B,KAAO7/B,KAAK4kC,QAAQnhC,UACjD8F,EAAOk2M,GAAU76K,GAAW05K,GAAa15K,KAI7C0+K,EAAa77M,UAAUq8M,mBAAqB,WAC1C,OAAON,GAAYxjN,KAAK6/B,OAGnByjL,EAvFuB,CAwF9B18F,IAEF,SAAS48F,GAAa3jL,GACpB,IAAIxtB,EAAO+B,OAAOC,SAASH,SACvB6vM,EAAgB1xM,EAAKlM,cACrB69M,EAAgBnkL,EAAK15B,cAQzB,OAJI05B,GAAUkkL,IAAkBC,GAC6B,IAA1DD,EAAch/M,QAAQ6xM,EAAUoN,EAAgB,QACjD3xM,EAAOA,EAAK/D,MAAMuxB,EAAK72B,UAEjBqJ,GAAQ,KAAO+B,OAAOC,SAASP,OAASM,OAAOC,SAASN,KAKlE,IAAIkwM,GAA4B,SAAUr9F,GACxC,SAASq9F,EAAajQ,EAAQn0K,EAAM1B,GAClCyoF,EAAQvmH,KAAKL,KAAMg0M,EAAQn0K,GAEvB1B,GAAY+lL,GAAclkN,KAAK6/B,OAGnCskL,KA+FF,OA5FKv9F,IAAUq9F,EAAY9sH,UAAYyvB,GACvCq9F,EAAYx8M,UAAY+E,OAAO7E,OAAQi/G,GAAWA,EAAQn/G,WAC1Dw8M,EAAYx8M,UAAUuP,YAAcitM,EAIpCA,EAAYx8M,UAAU07M,eAAiB,WACrC,IAAI3J,EAASx5M,KAEb,KAAIA,KAAK2/B,UAAU32B,OAAS,GAA5B,CAIA,IAAIgrM,EAASh0M,KAAKg0M,OACdyP,EAAezP,EAAOr0M,QAAQg/M,eAC9B+E,EAAiBnE,IAAqBkE,EAEtCC,GACF1jN,KAAK2/B,UAAUp2B,KAAK00M,MAGtB,IAAI0F,EAAqB,WACvB,IAAI/+K,EAAU40K,EAAO50K,QAChBu/K,MAGL3K,EAAOgJ,aAAa4B,MAAW,SAAUxtL,GACnC8sL,GACFlF,GAAahF,EAAOxF,OAAQp9K,EAAOgO,GAAS,GAEzC26K,IACH8E,GAAYztL,EAAMnzB,cAIpB6gN,EAAY/E,GAAoB,WAAa,aACjDnrM,OAAO7N,iBACL+9M,EACAX,GAEF3jN,KAAK2/B,UAAUp2B,MAAK,WAClB6K,OAAOvR,oBAAoByhN,EAAWX,QAI1CM,EAAYx8M,UAAU8B,KAAO,SAAe8K,EAAUy2D,EAAY23I,GAChE,IAAIjJ,EAASx5M,KAETwkG,EAAMxkG,KACN6jN,EAAYr/G,EAAI5/D,QACpB5kC,KAAKwiN,aACHnuM,GACA,SAAUuiB,GACR2tL,GAAS3tL,EAAMnzB,UACf+6M,GAAahF,EAAOxF,OAAQp9K,EAAOitL,GAAW,GAC9C/4I,GAAcA,EAAWl0C,KAE3B6rL,IAIJwB,EAAYx8M,UAAUiK,QAAU,SAAkB2C,EAAUy2D,EAAY23I,GACtE,IAAIjJ,EAASx5M,KAETwkG,EAAMxkG,KACN6jN,EAAYr/G,EAAI5/D,QACpB5kC,KAAKwiN,aACHnuM,GACA,SAAUuiB,GACRytL,GAAYztL,EAAMnzB,UAClB+6M,GAAahF,EAAOxF,OAAQp9K,EAAOitL,GAAW,GAC9C/4I,GAAcA,EAAWl0C,KAE3B6rL,IAIJwB,EAAYx8M,UAAUm8M,GAAK,SAAaplM,GACtCpK,OAAOkzF,QAAQs8G,GAAGplM,IAGpBylM,EAAYx8M,UAAUm7M,UAAY,SAAoBr5M,GACpD,IAAIq7B,EAAU5kC,KAAK4kC,QAAQnhC,SACvB2gN,OAAcx/K,IAChBr7B,EAAOg7M,GAAS3/K,GAAWy/K,GAAYz/K,KAI3Cq/K,EAAYx8M,UAAUq8M,mBAAqB,WACzC,OAAOM,MAGFH,EAtGsB,CAuG7Br9F,IAEF,SAASs9F,GAAerkL,GACtB,IAAIxrB,EAAWmvM,GAAY3jL,GAC3B,IAAK,OAAO3sB,KAAKmB,GAEf,OADAD,OAAOC,SAAS3C,QAAQklM,EAAU/2K,EAAO,KAAOxrB,KACzC,EAIX,SAAS8vM,KACP,IAAI9xM,EAAO+xM,KACX,MAAuB,MAAnB/xM,EAAK8B,OAAO,KAGhBkwM,GAAY,IAAMhyM,IACX,GAGT,SAAS+xM,KAGP,IAAIzwM,EAAOS,OAAOC,SAASV,KACvBnK,EAAQmK,EAAK5O,QAAQ,KAEzB,OAAIyE,EAAQ,EAAY,IAExBmK,EAAOA,EAAKrF,MAAM9E,EAAQ,GAEnBmK,GAGT,SAAS6wM,GAAQnyM,GACf,IAAIsB,EAAOS,OAAOC,SAASV,KACvB7K,EAAI6K,EAAK5O,QAAQ,KACjB86B,EAAO/2B,GAAK,EAAI6K,EAAKrF,MAAM,EAAGxF,GAAK6K,EACvC,OAAQksB,EAAO,IAAMxtB,EAGvB,SAASkyM,GAAUlyM,GACbktM,GACFE,GAAU+E,GAAOnyM,IAEjB+B,OAAOC,SAASN,KAAO1B,EAI3B,SAASgyM,GAAahyM,GAChBktM,GACFjB,GAAakG,GAAOnyM,IAEpB+B,OAAOC,SAAS3C,QAAQ8yM,GAAOnyM,IAMnC,IAAIoyM,GAAgC,SAAU79F,GAC5C,SAAS69F,EAAiBzQ,EAAQn0K,GAChC+mF,EAAQvmH,KAAKL,KAAMg0M,EAAQn0K,GAC3B7/B,KAAKsM,MAAQ,GACbtM,KAAKwJ,OAAS,EAqEhB,OAlEKo9G,IAAU69F,EAAgBttH,UAAYyvB,GAC3C69F,EAAgBh9M,UAAY+E,OAAO7E,OAAQi/G,GAAWA,EAAQn/G,WAC9Dg9M,EAAgBh9M,UAAUuP,YAAcytM,EAExCA,EAAgBh9M,UAAU8B,KAAO,SAAe8K,EAAUy2D,EAAY23I,GACpE,IAAIjJ,EAASx5M,KAEbA,KAAKwiN,aACHnuM,GACA,SAAUuiB,GACR4iL,EAAOltM,MAAQktM,EAAOltM,MAAMgC,MAAM,EAAGkrM,EAAOhwM,MAAQ,GAAGvI,OAAO21B,GAC9D4iL,EAAOhwM,QACPshE,GAAcA,EAAWl0C,KAE3B6rL,IAIJgC,EAAgBh9M,UAAUiK,QAAU,SAAkB2C,EAAUy2D,EAAY23I,GAC1E,IAAIjJ,EAASx5M,KAEbA,KAAKwiN,aACHnuM,GACA,SAAUuiB,GACR4iL,EAAOltM,MAAQktM,EAAOltM,MAAMgC,MAAM,EAAGkrM,EAAOhwM,OAAOvI,OAAO21B,GAC1Dk0C,GAAcA,EAAWl0C,KAE3B6rL,IAIJgC,EAAgBh9M,UAAUm8M,GAAK,SAAaplM,GAC1C,IAAIg7L,EAASx5M,KAET0kN,EAAc1kN,KAAKwJ,MAAQgV,EAC/B,KAAIkmM,EAAc,GAAKA,GAAe1kN,KAAKsM,MAAMtD,QAAjD,CAGA,IAAI4tB,EAAQ52B,KAAKsM,MAAMo4M,GACvB1kN,KAAK0iN,kBACH9rL,GACA,WACE,IAAIqQ,EAAOuyK,EAAO50K,QAClB40K,EAAOhwM,MAAQk7M,EACflL,EAAOmJ,YAAY/rL,GACnB4iL,EAAOxF,OAAO6O,WAAW78M,SAAQ,SAAUtG,GACzCA,GAAQA,EAAKk3B,EAAOqQ,SAGxB,SAAU5iC,GACJo8M,GAAoBp8M,EAAKu7M,GAAsBG,cACjDvG,EAAOhwM,MAAQk7M,QAMvBD,EAAgBh9M,UAAUq8M,mBAAqB,WAC7C,IAAIl/K,EAAU5kC,KAAKsM,MAAMtM,KAAKsM,MAAMtD,OAAS,GAC7C,OAAO47B,EAAUA,EAAQnhC,SAAW,KAGtCghN,EAAgBh9M,UAAUm7M,UAAY,aAI/B6B,EAzE0B,CA0EjC79F,IAIE+9F,GAAY,SAAoBhlN,QACjB,IAAZA,IAAqBA,EAAU,IAKpCK,KAAK6iI,IAAM,KACX7iI,KAAK4kN,KAAO,GACZ5kN,KAAKL,QAAUA,EACfK,KAAKgjN,YAAc,GACnBhjN,KAAKkjN,aAAe,GACpBljN,KAAK6iN,WAAa,GAClB7iN,KAAKg0H,QAAU6oF,GAAcl9M,EAAQmlE,QAAU,GAAI9kE,MAEnD,IAAI41B,EAAOj2B,EAAQi2B,MAAQ,OAW3B,OAVA51B,KAAKm+B,SACM,YAATvI,IAAuB2pL,KAA0C,IAArB5/M,EAAQw+B,SAClDn+B,KAAKm+B,WACPvI,EAAO,QAEJ2lL,KACH3lL,EAAO,YAET51B,KAAK41B,KAAOA,EAEJA,GACN,IAAK,UACH51B,KAAKsnG,QAAU,IAAIg8G,GAAatjN,KAAML,EAAQkgC,MAC9C,MACF,IAAK,OACH7/B,KAAKsnG,QAAU,IAAI28G,GAAYjkN,KAAML,EAAQkgC,KAAM7/B,KAAKm+B,UACxD,MACF,IAAK,WACHn+B,KAAKsnG,QAAU,IAAIm9G,GAAgBzkN,KAAML,EAAQkgC,MACjD,MACF,QACM,IAMNglL,GAAqB,CAAE3H,aAAc,CAAEt9K,cAAc,IAkMzD,SAASklL,GAAcrwG,EAAMpnG,GAE3B,OADAonG,EAAKlrG,KAAK8D,GACH,WACL,IAAIvE,EAAI2rG,EAAK1vG,QAAQsI,GACjBvE,GAAK,GAAK2rG,EAAKhrG,OAAOX,EAAG,IAIjC,SAASi8M,GAAYllL,EAAMp8B,EAAUmyB,GACnC,IAAIvjB,EAAgB,SAATujB,EAAkB,IAAMnyB,EAAWA,EAC9C,OAAOo8B,EAAO+2K,EAAU/2K,EAAO,IAAMxtB,GAAQA,EA1M/CsyM,GAAUl9M,UAAUoL,MAAQ,SAAgB+kC,EAAKhT,EAASmvK,GACxD,OAAO/zM,KAAKg0H,QAAQnhH,MAAM+kC,EAAKhT,EAASmvK,IAG1C8Q,GAAmB3H,aAAaxmL,IAAM,WACpC,OAAO12B,KAAKsnG,SAAWtnG,KAAKsnG,QAAQ1iE,SAGtC+/K,GAAUl9M,UAAU60D,KAAO,SAAeumE,GACtC,IAAI22E,EAASx5M,KA0Bf,GAjBAA,KAAK4kN,KAAKr7M,KAAKs5H,GAIfA,EAAIq0D,MAAM,kBAAkB,WAE1B,IAAI1tL,EAAQgwM,EAAOoL,KAAK7/M,QAAQ89H,GAC5Br5H,GAAS,GAAKgwM,EAAOoL,KAAKn7M,OAAOD,EAAO,GAGxCgwM,EAAO32E,MAAQA,IAAO22E,EAAO32E,IAAM22E,EAAOoL,KAAK,IAAM,MAEpDpL,EAAO32E,KAAO22E,EAAOlyG,QAAQ87G,eAKhCpjN,KAAK6iI,IAAT,CAIA7iI,KAAK6iI,IAAMA,EAEX,IAAIv7B,EAAUtnG,KAAKsnG,QAEnB,GAAIA,aAAmBg8G,IAAgBh8G,aAAmB28G,GAAa,CACrE,IAAIe,EAAsB,SAAUC,GAClC,IAAIt4M,EAAO26F,EAAQ1iE,QACf6+K,EAAejK,EAAO75M,QAAQg/M,eAC9B+E,EAAiBnE,IAAqBkE,EAEtCC,GAAkB,aAAcuB,GAClCzG,GAAahF,EAAQyL,EAAct4M,GAAM,IAGzCw2M,EAAiB,SAAU8B,GAC7B39G,EAAQ67G,iBACR6B,EAAoBC,IAEtB39G,EAAQk7G,aACNl7G,EAAQw8G,qBACRX,EACAA,GAIJ77G,EAAQ/1D,QAAO,SAAU3a,GACvB4iL,EAAOoL,KAAK5+M,SAAQ,SAAU68H,GAC5BA,EAAIo4E,OAASrkL,UAKnB+tL,GAAUl9M,UAAUy9M,WAAa,SAAqB73M,GACpD,OAAOy3M,GAAa9kN,KAAKgjN,YAAa31M,IAGxCs3M,GAAUl9M,UAAU09M,cAAgB,SAAwB93M,GAC1D,OAAOy3M,GAAa9kN,KAAKkjN,aAAc71M,IAGzCs3M,GAAUl9M,UAAU29M,UAAY,SAAoB/3M,GAClD,OAAOy3M,GAAa9kN,KAAK6iN,WAAYx1M,IAGvCs3M,GAAUl9M,UAAU66M,QAAU,SAAkB7wK,EAAI8wK,GAClDviN,KAAKsnG,QAAQg7G,QAAQ7wK,EAAI8wK,IAG3BoC,GAAUl9M,UAAU8hK,QAAU,SAAkBg5C,GAC9CviN,KAAKsnG,QAAQiiE,QAAQg5C,IAGvBoC,GAAUl9M,UAAU8B,KAAO,SAAe8K,EAAUy2D,EAAY23I,GAC5D,IAAIjJ,EAASx5M,KAGf,IAAK8qE,IAAe23I,GAA8B,qBAAZzgN,QACpC,OAAO,IAAIA,SAAQ,SAAUC,EAASC,GACpCs3M,EAAOlyG,QAAQ/9F,KAAK8K,EAAUpS,EAASC,MAGzClC,KAAKsnG,QAAQ/9F,KAAK8K,EAAUy2D,EAAY23I,IAI5CkC,GAAUl9M,UAAUiK,QAAU,SAAkB2C,EAAUy2D,EAAY23I,GAClE,IAAIjJ,EAASx5M,KAGf,IAAK8qE,IAAe23I,GAA8B,qBAAZzgN,QACpC,OAAO,IAAIA,SAAQ,SAAUC,EAASC,GACpCs3M,EAAOlyG,QAAQ51F,QAAQ2C,EAAUpS,EAASC,MAG5ClC,KAAKsnG,QAAQ51F,QAAQ2C,EAAUy2D,EAAY23I,IAI/CkC,GAAUl9M,UAAUm8M,GAAK,SAAaplM,GACpCxe,KAAKsnG,QAAQs8G,GAAGplM,IAGlBmmM,GAAUl9M,UAAU49M,KAAO,WACzBrlN,KAAK4jN,IAAI,IAGXe,GAAUl9M,UAAUyiJ,QAAU,WAC5BlqJ,KAAK4jN,GAAG,IAGVe,GAAUl9M,UAAU69M,qBAAuB,SAA+B1zL,GACxE,IAAIgF,EAAQhF,EACRA,EAAGsiL,QACDtiL,EACA5xB,KAAKiC,QAAQ2vB,GAAIgF,MACnB52B,KAAKk9M,aACT,OAAKtmL,EAGE,GAAG31B,OAAOoK,MACf,GACAurB,EAAMs9K,QAAQz4L,KAAI,SAAU+H,GAC1B,OAAOhX,OAAOqC,KAAK2U,EAAE+oK,YAAY9wK,KAAI,SAAUvV,GAC7C,OAAOsd,EAAE+oK,WAAWrmL,UANjB,IAYXy+M,GAAUl9M,UAAUxF,QAAU,SAC5B2vB,EACAgT,EACAjvB,GAEAivB,EAAUA,GAAW5kC,KAAKsnG,QAAQ1iE,QAClC,IAAIvwB,EAAW0kM,EAAkBnnL,EAAIgT,EAASjvB,EAAQ3V,MAClD42B,EAAQ52B,KAAK6S,MAAMwB,EAAUuwB,GAC7BnhC,EAAWmzB,EAAMm9K,gBAAkBn9K,EAAMnzB,SACzCo8B,EAAO7/B,KAAKsnG,QAAQznE,KACpBlsB,EAAOoxM,GAAWllL,EAAMp8B,EAAUzD,KAAK41B,MAC3C,MAAO,CACLvhB,SAAUA,EACVuiB,MAAOA,EACPjjB,KAAMA,EAEN4xM,aAAclxM,EACd8+B,SAAUvc,IAId+tL,GAAUl9M,UAAUw1M,UAAY,WAC9B,OAAOj9M,KAAKg0H,QAAQipF,aAGtB0H,GAAUl9M,UAAUs1M,SAAW,SAAmBC,EAAepmL,GAC/D52B,KAAKg0H,QAAQ+oF,SAASC,EAAepmL,GACjC52B,KAAKsnG,QAAQ1iE,UAAYwvK,GAC3Bp0M,KAAKsnG,QAAQk7G,aAAaxiN,KAAKsnG,QAAQw8G,uBAI3Ca,GAAUl9M,UAAUq1M,UAAY,SAAoBh4I,GAIlD9kE,KAAKg0H,QAAQ8oF,UAAUh4I,GACnB9kE,KAAKsnG,QAAQ1iE,UAAYwvK,GAC3Bp0M,KAAKsnG,QAAQk7G,aAAaxiN,KAAKsnG,QAAQw8G,uBAI3Ct3M,OAAOC,iBAAkBk4M,GAAUl9M,UAAWo9M,IAe9CF,GAAUv4B,QAAUA,GACpBu4B,GAAUtuM,QAAU,QACpBsuM,GAAUlE,oBAAsBA,GAChCkE,GAAU/E,sBAAwBA,GAClC+E,GAAUa,eAAiBpR,EAEvBmH,IAAannM,OAAOqsH,KACtBrsH,OAAOqsH,IAAIvzH,IAAIy3M,IAGjB,W,kBC/kGC,SAASvjM,EAAElR,GAAwD/O,EAAOD,QAAQgP,IAAlF,CAA8NlQ,GAAK,WAAW,OAAO,SAASohB,GAAG,SAASlR,EAAE2U,GAAG,GAAGrG,EAAEqG,GAAG,OAAOrG,EAAEqG,GAAG3jB,QAAQ,IAAI4H,EAAE0V,EAAEqG,GAAG,CAAC/b,EAAE+b,EAAE9b,GAAE,EAAG7H,QAAQ,IAAI,OAAOkgB,EAAEyD,GAAGxkB,KAAKyI,EAAE5H,QAAQ4H,EAAEA,EAAE5H,QAAQgP,GAAGpH,EAAEC,GAAE,EAAGD,EAAE5H,QAAQ,IAAIsd,EAAE,GAAG,OAAOtO,EAAEsT,EAAEpC,EAAElR,EAAEvG,EAAE6U,EAAEtO,EAAEpH,EAAE,SAASsY,GAAG,OAAOA,GAAGlR,EAAEuT,EAAE,SAASrC,EAAE5C,EAAEqG,GAAG3U,EAAE0hE,EAAExwD,EAAE5C,IAAIhS,OAAOE,eAAe0U,EAAE5C,EAAE,CAACohB,cAAa,EAAGzI,YAAW,EAAGT,IAAI7R,KAAK3U,EAAEsO,EAAE,SAAS4C,GAAG,IAAI5C,EAAE4C,GAAGA,EAAEy5E,WAAW,WAAW,OAAOz5E,EAAE26E,SAAS,WAAW,OAAO36E,GAAG,OAAOlR,EAAEuT,EAAEjF,EAAE,IAAIA,GAAGA,GAAGtO,EAAE0hE,EAAE,SAASxwD,EAAElR,GAAG,OAAO1D,OAAO/E,UAAU+P,eAAenX,KAAK+gB,EAAElR,IAAIA,EAAEwP,EAAE,SAASxP,EAAEA,EAAEyQ,EAAE,GAA9e,CAAkf,CAAC,SAASS,EAAElR,EAAEsO,GAAG,aAAa,SAASqG,IAAIpB,GAAE,EAAG,SAAS3a,EAAEsY,GAAG,GAAIA,GAAgC,GAAGA,IAAImD,EAAE,CAAC,GAAGnD,EAAEpY,SAASwa,EAAExa,OAAO,MAAM,IAAI+C,MAAM,uCAAuCyX,EAAExa,OAAO,qCAAqCoY,EAAEpY,OAAO,gBAAgBoY,GAAG,IAAIlR,EAAEkR,EAAE1M,MAAM,IAAIyD,QAAO,SAASiJ,EAAElR,EAAEsO,GAAG,OAAOtO,IAAIsO,EAAE0mE,YAAY9jE,MAAK,GAAGlR,EAAElH,OAAO,MAAM,IAAI+C,MAAM,uCAAuCyX,EAAExa,OAAO,yDAAyDkH,EAAE8B,KAAK,OAAOuS,EAAEnD,EAAEyD,UAAlZN,IAAIf,IAAIe,EAAEf,EAAEqB,KAA2Y,SAAS+sD,EAAExwD,GAAG,OAAOtY,EAAEsY,GAAGmD,EAAE,SAAS7M,EAAE0J,GAAGtgB,EAAE2uH,KAAKruG,GAAG1B,IAAI0B,IAAIyD,IAAInF,EAAE0B,GAAG,SAAST,IAAI4D,GAAGzb,EAAE0a,GAAG,IAAI,IAAIpC,EAAElR,EAAEqU,EAAE7P,MAAM,IAAI8J,EAAE,GAAGqG,EAAE/jB,EAAEshK,YAAYlyJ,EAAElH,OAAO,GAAG6b,EAAE/jB,EAAEshK,YAAYhhJ,EAAEnS,KAAKC,MAAM2V,EAAE3U,EAAElH,QAAQwV,EAAEjV,KAAK2G,EAAEzG,OAAO2X,EAAE,GAAG,IAAI,OAAO5C,EAAExM,KAAK,IAAI,SAASrI,IAAI,OAAO8Z,IAAIA,EAAE9C,KAAK,SAAS0oL,EAAEjoL,GAAG,OAAOzX,IAAIyX,GAAG,SAASrY,IAAI,OAAOwb,GAAGf,EAAE,IAAIe,EAAE7E,EAAE+D,EAAE3iB,EAAE0d,EAAE,IAAIgF,EAAE,mEAAmEpC,EAAElgB,QAAQ,CAACw1B,IAAI3tB,EAAE08M,WAAW7zI,EAAE69C,KAAK/3G,EAAEguM,OAAOrc,EAAEsc,SAASh8M,IAAI,SAASyX,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,GAAG1V,EAAE0V,EAAEA,EAAEqG,GAAG3U,EAAEwH,EAAE,CAACkuM,UAAU,SAASxkM,GAAGtY,GAAAA,CAAI,CAAC+8M,QAAQzkM,EAAE0kM,WAAW,QAAQ1lI,QAAQ,EAAE5vC,SAAS,IAAI8B,OAAO,kBAAkByzK,WAAW,SAAS3kM,EAAElR,GAAGpH,GAAAA,CAAI,CAAC+8M,QAAQzkM,EAAEg/D,QAAQ,EAAEk1C,UAAU,QAAQ9kF,SAAS,IAAI8B,OAAO,cAAcjB,SAASnhC,KAAK81M,iBAAiB,SAAS5kM,EAAElR,GAAGpH,GAAAA,CAAI,CAAC+8M,QAAQzkM,EAAEg/D,QAAQ,EAAEm1C,aAAa,QAAQ/kF,SAAS,IAAI8B,OAAO,cAAcjB,SAASnhC,KAAK+1M,aAAa,SAAS7kM,GAAGtY,GAAAA,CAAI,CAAC+8M,QAAQzkM,EAAExH,KAAK,EAAEwmE,QAAQ,EAAE5vC,SAAS,IAAI8B,OAAO,iBAAiB4zK,eAAe,SAAS9kM,EAAElR,EAAEsO,GAAG1V,GAAAA,CAAI,CAAC+8M,QAAQzkM,EAAEovB,SAAS,GAAG8B,OAAO,cAAc14B,KAAK1J,EAAEkwE,QAAQ5hE,KAAK2nM,cAAc,SAAS/kM,EAAElR,GAAGpH,GAAAA,CAAI,CAAC+8M,QAAQzkM,EAAEg/D,QAAQ,EAAE5vC,SAAS,IAAI8B,OAAO,cAAcjB,SAASnhC,KAAKk2M,eAAe,SAAShlM,GAAG,IAAIlR,EAAEpH,EAAE4O,EAAE2uM,WAAWjlM,EAAEpb,SAAQ,SAASob,GAAGlR,EAAE3P,IAAI,CAACslN,QAAQzkM,EAAE1L,GAAG0qE,QAAQ,EAAEvmE,MAAM,QAAQ22B,SAAS,IAAIwU,OAAO,QAAQ1S,OAAO,cAAcjB,SAAS,WAAWjwB,EAAEpO,kBAAiB,SAASoO,EAAElR,EAAEsO,GAAG,aAAa4C,EAAElgB,QAAQsd,EAAE,KAAK,SAAS4C,EAAElR,EAAEsO,GAAG,aAAaA,EAAEiF,EAAEvT,EAAE,KAAI,WAAW,OAAOyQ,KAAI,IAAIkE,EAAErG,EAAE,GAAG1V,EAAE0V,EAAE,GAAGozD,EAAE,mBAAmBlxC,QAAQ,iBAAiBA,OAAOs4D,SAAS,SAAS53E,GAAG,cAAcA,GAAG,SAASA,GAAG,OAAOA,GAAG,mBAAmBsf,QAAQtf,EAAEpK,cAAc0pB,QAAQtf,IAAIsf,OAAOj5B,UAAU,gBAAgB2Z,GAAG1J,EAAE8G,EAAE,GAAGA,EAAE,IAAI8nM,WAAW,IAAI3lM,EAAE,SAASS,EAAElR,GAAG,IAAIsO,EAAExe,KAAK,OAAOA,KAAKoN,GAAGsK,EAAEyxD,WAAWnpE,KAAKL,QAAQuQ,EAAElQ,KAAKumN,eAAe,GAAGvmN,KAAK0vF,OAAO,GAAG1vF,KAAK62H,OAAO,GAAG72H,KAAKwmN,OAAO,GAAGxmN,KAAKopC,UAAU,KAAKrgC,EAAE/I,MAAMqpM,EAAErpM,MAAMA,KAAK82H,MAAM,SAAS5mH,GAAGA,IAAIA,EAAE,IAAIA,EAAEu2M,eAAev2M,EAAEu2M,aAAa,IAAIj6M,OAAOQ,OAAOkD,EAAEu2M,aAAajoM,EAAEkxE,QAAQ,IAAI7qE,EAAE,IAAIzD,EAAElR,GAAG,OAAOsO,EAAEq4G,OAAOttH,KAAKsb,GAAGA,GAAG7kB,KAAKukE,SAAS,SAASnjD,EAAElR,EAAE2U,GAAG,OAAOA,EAAEA,GAAG,GAAGN,EAAE/F,EAAE4C,EAAElR,EAAE2U,IAAI7kB,KAAKyzC,KAAK,SAASryB,EAAElR,GAAG,OAAOvG,EAAE6U,EAAE4C,EAAElR,IAAIlQ,KAAK+vL,QAAQ,SAAS3uK,EAAElR,GAAG,OAAOA,EAAEA,GAAG,GAAGA,EAAEvJ,KAAK,UAAUgD,EAAE6U,EAAE4C,EAAElR,IAAIlQ,KAAKq+B,KAAK,SAASjd,EAAElR,GAAG,OAAOA,EAAEA,GAAG,GAAGA,EAAEvJ,KAAK,OAAOgD,EAAE6U,EAAE4C,EAAElR,IAAIlQ,KAAK0L,MAAM,SAAS0V,EAAElR,GAAG,OAAOA,EAAEA,GAAG,GAAGA,EAAEvJ,KAAK,QAAQgD,EAAE6U,EAAE4C,EAAElR,IAAIlQ,KAAKgT,OAAO,SAASoO,GAAG5C,EAAEgoM,OAAOhoM,EAAEgoM,OAAOruM,QAAO,SAASjI,GAAG,OAAOA,EAAEwF,GAAG3B,OAAOqN,EAAErN,QAAOqN,EAAEkmB,YAAYlmB,EAAEkmB,WAAWsqE,YAAYxwF,IAAIphB,KAAK0pE,MAAM,SAAStoD,GAAG,OAAOtY,EAAE4O,EAAE0uM,eAAe5nM,EAAEgoM,QAAO,WAAWplM,GAAGA,OAAM5C,EAAEgoM,OAAO,IAAG,GAAIxmN,MAAM2J,EAAE,SAASyX,EAAElR,EAAEpH,GAAGA,EAAEA,GAAG,GAAG,IAAI4O,EAAE,KAAK,GAAG,iBAAY,IAAS5O,EAAE,YAAY8oE,EAAE9oE,IAAI,OAAO4N,QAAQhL,MAAM,+CAA+C5C,GAAG,KAAKsY,EAAEzhB,QAAQ+mN,WAAWtlM,EAAEolM,OAAOx9M,OAAO,IAAIoY,EAAEmlM,eAAez9M,EAAEsY,EAAEolM,OAAOplM,EAAEolM,OAAOx9M,OAAO,GAAG29M,OAAO,IAAI,IAAIhmM,EAAEnU,OAAOQ,OAAO,GAAGoU,EAAEzhB,SAAS,OAAO6M,OAAOQ,OAAO2T,EAAE7X,GAAG4O,EAAE8G,EAAE1V,EAAE+b,EAAEnN,EAAN8G,CAAS4C,EAAElR,EAAEyQ,GAAGS,EAAEolM,OAAOj9M,KAAKmO,GAAGA,GAAG2xL,EAAE,SAASjoL,GAAG,IAAIlR,EAAEkR,EAAEzhB,QAAQ8mN,aAAajoM,EAAE,SAAStO,EAAEsO,GAAG,MAAM,iBAAiBA,GAAG4C,EAAE5C,GAAG4C,EAAE5C,GAAGnT,MAAM+V,EAAE,CAAClR,EAAE,KAAKvG,EAAEyX,EAAElR,EAAEsO,IAAItO,IAAIkR,EAAEsuE,OAAO,GAAGljF,OAAOqC,KAAKqB,GAAGlK,SAAQ,SAAS6e,GAAGzD,EAAEsuE,OAAO7qE,GAAG,WAAW,IAAIzD,EAAE5P,UAAUxI,OAAO,QAAG,IAASwI,UAAU,GAAGA,UAAU,GAAG,GAAG,OAAOtB,EAAE2U,GAAGxZ,MAAM,KAAK,CAAC+V,EAAE5C,UAASzV,EAAE,SAASqY,GAAG,IAAIlR,EAAE0C,SAASa,cAAc,OAAOvD,EAAE9C,GAAGgU,EAAEhU,GAAG8C,EAAE0D,aAAa,OAAO,UAAU1D,EAAE0D,aAAa,YAAY,UAAU1D,EAAE0D,aAAa,cAAc,SAAShB,SAAS6qE,KAAKi0B,YAAYxhG,GAAGkR,EAAEgoB,UAAUl5B,GAAGqU,EAAE,SAASnD,EAAElR,EAAEsO,EAAEqG,GAAGzD,EAAEzhB,QAAQ8mN,eAAerlM,EAAEzhB,QAAQ8mN,aAAa,IAAIrlM,EAAEzhB,QAAQ8mN,aAAav2M,GAAG,SAASkR,EAAElR,GAAG,IAAIpH,EAAE,KAAK,MAAM,iBAAiB0V,IAAI1V,EAAE0V,GAAG,mBAAmBA,IAAI1V,EAAE0V,EAAE4C,IAAIlR,EAAEpH,EAAE+b,IAAIwkL,EAAEjoL,KAAK,SAASA,EAAElR,EAAEsO,GAAGA,EAAE,IAAI,IAAIqG,EAAErG,EAAE,GAAFA,CAAM,KAAK,KAAK,KAAK,MAAM4C,EAAElgB,QAAQ2jB,EAAE3jB,SAAS,SAASkgB,EAAElR,EAAEsO,IAAG,SAAUA,GAAG,IAAIqG,EAAE/b,EAAE8oE,EAAEl6D,EAAE,CAACyc,MAAM,IAAIzc,EAAEhL,eAAe,mBAAmBF,OAAOC,iBAAiBD,OAAOE,eAAe,SAAS0U,EAAElR,EAAEsO,GAAG,GAAGA,EAAEkY,KAAKlY,EAAEyV,IAAI,MAAM,IAAIzrB,UAAU,6CAA6C4Y,GAAGhW,MAAM3D,WAAW2Z,GAAG5U,OAAO/E,YAAY2Z,EAAElR,GAAGsO,EAAEpa,QAAQsT,EAAEkvM,UAAU,SAASxlM,GAAG,MAAM,oBAAoBhN,QAAQA,SAASgN,EAAEA,OAAE,IAAS5C,GAAG,MAAMA,EAAEA,EAAE4C,GAAG1J,EAAEg4E,OAAOh4E,EAAEkvM,UAAU5mN,MAAM0X,EAAEmvM,cAAc,iBAAiBnvM,EAAEovM,WAAW,WAAWpvM,EAAEovM,WAAW,aAAapvM,EAAEg4E,OAAOhvD,SAAShpB,EAAEg4E,OAAOhvD,OAAOhpB,EAAEgpB,SAAShpB,EAAEqvM,eAAe,EAAErvM,EAAEgpB,OAAO,SAAStf,GAAG,OAAO1J,EAAEmvM,eAAezlM,GAAG,IAAI1J,EAAEqvM,kBAAkBrvM,EAAEsvM,mBAAmB,WAAWtvM,EAAEovM,aAAa,IAAI1lM,EAAE1J,EAAEg4E,OAAOhvD,OAAOs4D,SAAS53E,IAAIA,EAAE1J,EAAEg4E,OAAOhvD,OAAOs4D,SAASthF,EAAEg4E,OAAOhvD,OAAO,aAAa,mBAAmBt1B,MAAM3D,UAAU2Z,IAAI1J,EAAEhL,eAAetB,MAAM3D,UAAU2Z,EAAE,CAACwe,cAAa,EAAG1I,UAAS,EAAG9yB,MAAM,WAAW,OAAOsT,EAAEuvM,cAAcjnN,SAAS0X,EAAEsvM,mBAAmB,cAActvM,EAAEuvM,cAAc,SAAS7lM,GAAG,IAAIlR,EAAE,EAAE,OAAOwH,EAAEwvM,mBAAkB,WAAW,OAAOh3M,EAAEkR,EAAEpY,OAAO,CAACvG,MAAK,EAAG2B,MAAMgd,EAAElR,MAAM,CAACzN,MAAK,OAAOiV,EAAEwvM,kBAAkB,SAAS9lM,GAAG,OAAO1J,EAAEsvM,qBAAqB5lM,EAAE,CAACyjB,KAAKzjB,GAAGA,EAAE1J,EAAEg4E,OAAOhvD,OAAOs4D,UAAU,WAAW,OAAOh5F,MAAMohB,GAAG1J,EAAEuH,MAAMvH,EAAEuH,OAAO,GAAGvH,EAAEyvM,kBAAkB,SAAS/lM,EAAElR,GAAGwH,EAAEsvM,qBAAqB5lM,aAAa5I,SAAS4I,GAAG,IAAI,IAAI5C,EAAE,EAAEqG,EAAE,CAACggB,KAAK,WAAW,GAAGrmB,EAAE4C,EAAEpY,OAAO,CAAC,IAAIF,EAAE0V,IAAI,MAAM,CAACpa,MAAM8L,EAAEpH,EAAEsY,EAAEtY,IAAIrG,MAAK,GAAI,OAAOoiB,EAAEggB,KAAK,WAAW,MAAM,CAACpiC,MAAK,EAAG2B,WAAM,IAASygB,EAAEggB,SAAS,OAAOhgB,EAAE6b,OAAOs4D,UAAU,WAAW,OAAOn0E,GAAGA,GAAGnN,EAAE4uM,SAAS,SAASllM,EAAElR,EAAEsO,EAAEqG,GAAG,GAAG3U,EAAE,CAAC,IAAIsO,EAAE9G,EAAEg4E,OAAOtuE,EAAEA,EAAE1M,MAAM,KAAKmQ,EAAE,EAAEA,EAAEzD,EAAEpY,OAAO,EAAE6b,IAAI,CAAC,IAAI/b,EAAEsY,EAAEyD,GAAG/b,KAAK0V,IAAIA,EAAE1V,GAAG,IAAI0V,EAAEA,EAAE1V,GAAGsY,EAAEA,EAAEA,EAAEpY,OAAO,GAAG6b,EAAErG,EAAE4C,GAAGlR,EAAEA,EAAE2U,GAAG3U,GAAG2U,GAAG,MAAM3U,GAAGwH,EAAEhL,eAAe8R,EAAE4C,EAAE,CAACwe,cAAa,EAAG1I,UAAS,EAAG9yB,MAAM8L,MAAMwH,EAAE4uM,SAAS,wBAAuB,SAASllM,GAAG,OAAOA,GAAG,WAAW,OAAO1J,EAAEyvM,kBAAkBnnN,MAAK,SAASohB,GAAG,OAAOA,QAAM,WAAW,OAAO,IAAIT,EAAE3gB,MAAM,SAASwe,EAAE9G,GAAG5O,EAAE,GAAG+b,EAAEnN,OAAE,KAAUk6D,EAAE,mBAAmB/sD,EAAEA,EAAExZ,MAAM6E,EAAEpH,GAAG+b,KAAKzD,EAAElgB,QAAQ0wE,GAApF,CAAwF,GAAE,WAAW,SAASxwD,EAAEA,GAAG,IAAI0F,EAAEuzD,IAAIj5D,GAAG,IAAI,OAAOxO,SAASy7F,iBAAiBjtF,GAAG,MAAMA,KAAK,SAASlR,EAAEkR,EAAElR,GAAG,IAAI,IAAIsO,EAAE4C,EAAEpY,OAAO6b,EAAE,GAAGrT,UAAUxI,OAAOwI,UAAU,QAAG,EAAO1I,EAAE,GAAG8oE,EAAE,EAAEA,EAAEpzD,EAAEozD,IAAI,GAAGA,KAAKxwD,EAAE,CAAC,IAAI1J,EAAE0J,EAAEwwD,GAAG1hE,EAAE7P,KAAKwkB,EAAEnN,EAAEk6D,EAAExwD,IAAItY,EAAES,KAAKmO,GAAG,OAAO5O,EAAE,SAAS0V,EAAE4C,GAAG,OAAOA,EAAEswB,QAAO,SAAStwB,EAAElR,GAAG,OAAOkR,EAAEngB,OAAO6lB,EAAE/R,IAAI7E,GAAGsO,EAAEtO,GAAGA,KAAI,IAAI,SAAS2U,EAAE3U,GAAG,OAAO4W,EAAE/R,IAAI7E,GAAGA,GAAG4W,EAAEhQ,IAAI5G,KAAKA,EAAEkR,EAAElR,IAAIA,GAAGA,aAAa+hM,UAAU/hM,aAAayhM,eAAe,GAAGrjM,MAAMjO,KAAK6P,GAAG,CAACA,IAAI,SAASpH,EAAEsY,EAAElR,GAAG,OAAOkR,EAAEomD,MAAK,SAASpmD,GAAG,OAAOA,IAAIlR,KAAI,SAAS0hE,EAAExwD,GAAG,IAAIlR,EAAEsO,EAAE,GAAG,IAAItO,KAAKkR,EAAE5C,EAAEtO,GAAGkR,EAAElR,GAAG,OAAOsO,EAAE,SAAS9G,EAAE0J,EAAElR,GAAG,IAAIsO,EAAEqG,EAAE+sD,EAAExwD,GAAG,IAAI5C,KAAK4C,EAAEyD,EAAErG,GAAGtO,EAAEsH,eAAegH,GAAGtO,EAAEsO,GAAG4C,EAAE5C,GAAG,OAAOqG,EAAE,SAASlb,EAAEyX,EAAElR,GAAG,IAAIsO,EAAEqG,EAAE+sD,EAAExwD,GAAG,IAAI5C,KAAKtO,EAAE2U,EAAErG,GAAGsI,EAAEsgM,IAAIhmM,EAAE5C,IAAItO,EAAEsO,GAAG4C,EAAE5C,GAAG,OAAOqG,EAAE,SAASwkL,EAAEjoL,GAAGA,EAAEA,EAAE1P,QAAQ,oCAAmC,SAAS0P,EAAElR,EAAEsO,EAAEqG,GAAG,OAAO3U,EAAEA,EAAEsO,EAAEA,EAAEqG,EAAEA,KAAI,IAAI3U,EAAE,4CAA4C2E,KAAKuM,GAAGA,EAAEiQ,SAASnhB,EAAE,GAAG,IAAI,IAAIsO,EAAE6S,SAASnhB,EAAE,GAAG,IAAIA,EAAEmhB,SAASnhB,EAAE,GAAG,IAAI,MAAM,QAAQkR,EAAE,IAAI5C,EAAE,IAAItO,EAAE,MAAM,SAASnH,EAAEqY,GAAG,SAASlR,EAAEkR,EAAElR,EAAEsO,GAAG,OAAO,EAAEA,IAAIA,GAAG,GAAG,EAAEA,KAAKA,EAAEA,EAAE,EAAE,EAAE4C,EAAE,GAAGlR,EAAEkR,GAAG5C,EAAE,GAAGA,EAAEtO,EAAEsO,EAAE,EAAE,EAAE4C,GAAGlR,EAAEkR,IAAI,EAAE,EAAE5C,GAAG,EAAE4C,EAAE,IAAI5C,EAAE,0CAA0C3J,KAAKuM,IAAI,uDAAuDvM,KAAKuM,GAAGA,EAAEiQ,SAAS7S,EAAE,IAAI,IAAI,IAAIqG,EAAEwM,SAAS7S,EAAE,IAAI,IAAI1V,EAAEuoB,SAAS7S,EAAE,IAAI,IAAIA,EAAEA,EAAE,IAAI,EAAE,GAAG,GAAGqG,EAAE/b,EAAE+b,EAAEzD,EAAEtY,MAAM,CAAC,IAAI8oE,EAAE,GAAG9oE,EAAEA,GAAG,EAAE+b,GAAG/b,EAAE+b,EAAE/b,EAAE+b,EAAEnN,EAAE,EAAE5O,EAAE8oE,EAAE9oE,EAAEoH,EAAEwH,EAAEk6D,EAAExwD,EAAE,EAAE,GAAGyD,EAAE3U,EAAEwH,EAAEk6D,EAAExwD,GAAGA,EAAElR,EAAEwH,EAAEk6D,EAAExwD,EAAE,EAAE,GAAG,MAAM,QAAQ,IAAItY,EAAE,IAAI,IAAI+b,EAAE,IAAI,IAAIzD,EAAE,IAAI5C,EAAE,IAAI,SAAS+F,EAAEnD,GAAG,GAAGA,EAAE,sFAAsFvM,KAAKuM,GAAG,OAAOA,EAAE,GAAG,SAAS1B,EAAE0B,GAAG,OAAO,EAAEA,EAAErc,QAAQ,cAAc,gBAAgBqc,EAAE,MAAM,EAAEA,EAAErc,QAAQ,YAAY,EAAEqc,EAAErc,QAAQ,QAAQ,WAAM,EAAO,SAAS0e,EAAErC,EAAElR,GAAG,OAAO4W,EAAEugM,IAAIjmM,GAAGA,EAAElR,EAAE/B,OAAO+B,EAAE9C,GAAG8C,EAAEu3C,OAAOrmC,EAAE,SAAStgB,EAAEsgB,EAAElR,GAAG,GAAGA,KAAKkR,EAAE+T,MAAM,OAAOwS,iBAAiBvmB,GAAG0mB,iBAAiB53B,EAAEwB,QAAQ,kBAAkB,SAASvL,gBAAgB,IAAI,SAASqd,EAAEpC,EAAElR,GAAG,OAAO4W,EAAEwgM,IAAIlmM,IAAItY,EAAEsb,EAAElU,GAAG,YAAY4W,EAAEwgM,IAAIlmM,KAAKA,EAAEoyC,aAAatjD,IAAI4W,EAAEygM,IAAInmM,IAAIA,EAAElR,IAAI,YAAY4W,EAAEwgM,IAAIlmM,IAAI,cAAclR,GAAGpP,EAAEsgB,EAAElR,GAAG,MAAM,MAAMkR,EAAElR,GAAG,cAAS,EAAO,SAAS2B,EAAEuP,EAAE5C,GAAG,IAAIqG,EAAEnF,EAAElB,GAAGqG,GAAG,EAAErG,EAAEzZ,QAAQ,SAAS,EAAE,EAAE8f,EAAE,KAAKzD,EAAEA,EAAE+T,MAAM+rE,WAAW,OAAOr8E,EAAE,IAAI,IAAI/b,EAAE,GAAG8oE,EAAE,GAAGl6D,EAAE,GAAGiJ,EAAE,kBAAkB7X,EAAE6X,EAAE9L,KAAKuM,IAAIwwD,EAAEroE,KAAKT,EAAE,IAAI4O,EAAEnO,KAAKT,EAAE,IAAI,OAAOsY,EAAElR,EAAEwH,GAAE,SAAS0J,EAAElR,GAAG,OAAO0hE,EAAE1hE,KAAKsO,KAAI4C,EAAEpY,OAAOoY,EAAE,GAAGyD,EAAE,SAASC,EAAE1D,EAAElR,GAAG,OAAOsT,EAAEpC,EAAElR,IAAI,IAAI,YAAY,OAAO2B,EAAEuP,EAAElR,GAAG,IAAI,MAAM,OAAOpP,EAAEsgB,EAAElR,GAAG,IAAI,YAAY,OAAOkR,EAAEoyC,aAAatjD,GAAG,OAAOkR,EAAElR,IAAI,EAAE,SAASyO,EAAEyC,EAAElR,GAAG,IAAIsO,EAAE,gBAAgB3J,KAAKuM,GAAG,IAAI5C,EAAE,OAAO4C,EAAE,IAAIyD,EAAEN,EAAEnD,IAAI,EAAE,OAAOlR,EAAEyK,WAAWzK,GAAGkR,EAAEzG,WAAWyG,EAAE1P,QAAQ8M,EAAE,GAAG,KAAKA,EAAE,GAAG,IAAI,IAAI,IAAI,OAAOtO,EAAEkR,EAAEyD,EAAE,IAAI,IAAI,OAAO3U,EAAEkR,EAAEyD,EAAE,IAAI,IAAI,OAAO3U,EAAEkR,EAAEyD,GAAG,SAASlN,EAAEyJ,EAAElR,GAAG,OAAOjB,KAAKqP,KAAKrP,KAAKiP,IAAIhO,EAAEwO,EAAE0C,EAAE1C,EAAE,GAAGzP,KAAKiP,IAAIhO,EAAEyO,EAAEyC,EAAEzC,EAAE,IAAI,SAASD,EAAE0C,GAAGA,EAAEA,EAAEijB,OAAO,IAAI,IAAIn0B,EAAEsO,EAAE,EAAEqG,EAAE,EAAEA,EAAEzD,EAAEomM,cAAc3iM,IAAI,CAAC,IAAI/b,EAAEsY,EAAEqmM,QAAQ5iM,GAAG,EAAEA,IAAIrG,GAAG7G,EAAEzH,EAAEpH,IAAIoH,EAAEpH,EAAE,OAAO0V,EAAE,SAASoI,EAAExF,GAAG,GAAGA,EAAEsmM,eAAe,OAAOtmM,EAAEsmM,iBAAiB,OAAOtmM,EAAE88E,QAAQ/3F,eAAe,IAAI,SAAS,OAAO,EAAE8I,KAAKgO,GAAGmE,EAAEoyC,aAAa,KAAK,IAAI,OAAO,OAAO,EAAEpyC,EAAEoyC,aAAa,SAAS,EAAEpyC,EAAEoyC,aAAa,UAAU,IAAI,OAAO,OAAO77C,EAAE,CAAC+G,EAAE0C,EAAEoyC,aAAa,MAAM70C,EAAEyC,EAAEoyC,aAAa,OAAO,CAAC90C,EAAE0C,EAAEoyC,aAAa,MAAM70C,EAAEyC,EAAEoyC,aAAa,QAAQ,IAAI,WAAW,OAAO90C,EAAE0C,GAAG,IAAI,UAAU,IAAIlR,EAAEkR,EAAEijB,OAAO,OAAO3lB,EAAE0C,GAAGzJ,EAAEzH,EAAEu3M,QAAQv3M,EAAEs3M,cAAc,GAAGt3M,EAAEu3M,QAAQ,KAAK,SAASliM,EAAEnE,EAAElR,GAAG,SAASsO,EAAEA,GAAG,OAAOA,OAAE,IAASA,EAAE,EAAEA,EAAE4C,EAAE1L,GAAGiyM,iBAAiB,GAAGz3M,EAAEsO,EAAEtO,EAAEsO,EAAE,GAAG,IAAIqG,EAAErG,IAAI1V,EAAE0V,GAAG,GAAGozD,EAAEpzD,EAAE,GAAG,OAAO4C,EAAElC,UAAU,IAAI,IAAI,OAAO2F,EAAEnG,EAAE,IAAI,IAAI,OAAOmG,EAAElG,EAAE,IAAI,QAAQ,OAAO,IAAI1P,KAAKiR,MAAM0xD,EAAEjzD,EAAE7V,EAAE6V,EAAEizD,EAAElzD,EAAE5V,EAAE4V,GAAGzP,KAAKgO,IAAI,SAASoH,EAAEjD,EAAElR,GAAG,IAAIsO,EAAEqG,EAAE,eAAe,GAAGrG,EAAEsI,EAAE8gM,IAAIxmM,GAAGA,EAAEymM,YAAYzmM,EAAE0F,EAAEuzD,IAAI77D,GAAG,GAAGsI,EAAEtB,IAAIhH,GAAG,CAAC,IAAI1V,EAAE,kCAAkC+L,KAAK2J,GAAGA,EAAE1V,EAAE,QAAQA,EAAE,GAAG,MAAM0V,OAAOA,EAAEsI,EAAEtC,IAAIhG,GAAG6qL,EAAE7qL,GAAGsI,EAAEghM,IAAItpM,GAAGzV,EAAEyV,QAAG,OAAY1V,GAAGA,EAAEyb,EAAE/F,IAAIA,EAAE5J,OAAO,EAAE4J,EAAExV,OAAOF,EAAEE,QAAQwV,EAAEA,EAAEtO,IAAI,MAAMgD,KAAKsL,GAAG1V,EAAEoH,EAAEpH,EAAE,OAAO0V,GAAG,GAAG,CAAC+tB,SAAS/tB,EAAE40B,QAAQ50B,EAAE3L,MAAMgS,GAAGrG,EAAE3L,MAAMgS,GAAGpJ,IAAIrB,QAAQ,CAAC,GAAGqmF,QAAQ35E,EAAEhQ,IAAIsK,IAAIlR,EAAEsO,EAAE9J,MAAMmQ,GAAG,IAAI,SAASV,EAAE/C,GAAG,OAAOA,EAAEA,EAAE5C,EAAEsI,EAAE/R,IAAIqM,GAAGA,EAAE3F,IAAIoJ,GAAGA,EAAEzD,IAAI,GAAGlR,EAAEkR,GAAE,SAASA,EAAElR,EAAEsO,GAAG,OAAOA,EAAEzZ,QAAQqc,KAAKlR,KAAI,SAAS2W,EAAEzF,GAAG,IAAIlR,EAAEiU,EAAE/C,GAAG,OAAOlR,EAAEuL,KAAI,SAAS2F,EAAE5C,GAAG,MAAM,CAACrQ,OAAOiT,EAAEhU,GAAGoR,EAAEipC,MAAMv3C,EAAElH,WAAU,SAASie,EAAE7F,EAAElR,GAAG,IAAIsO,EAAEozD,EAAE1hE,GAAG,GAAG4W,EAAE/R,IAAIqM,GAAG,CAAC,IAAItY,EAAEsY,EAAEpY,OAAO,IAAIF,GAAGge,EAAE/Z,IAAIqU,EAAE,IAAI0F,EAAEugM,IAAIn3M,EAAEsgC,YAAYhyB,EAAEgyB,SAAStgC,EAAEsgC,SAAS1nC,GAAGsY,EAAE,CAAChd,MAAMgd,GAAG,OAAOyD,EAAEzD,GAAG3F,KAAI,SAAS2F,EAAE5C,GAAG,OAAOA,EAAEA,EAAE,EAAEtO,EAAEkJ,MAAMgI,EAAE0F,EAAE/Z,IAAIqU,KAAK0F,EAAE8gM,IAAIxmM,GAAGA,EAAE,CAAChd,MAAMgd,GAAG0F,EAAEsgM,IAAIhmM,EAAEhI,SAASgI,EAAEhI,MAAMoF,GAAG4C,KAAI3F,KAAI,SAAS2F,GAAG,OAAOzX,EAAEyX,EAAE5C,MAAK,SAASyF,EAAE7C,EAAElR,GAAG,IAAIsO,EAAEqG,EAAE,GAAG,IAAIrG,KAAK4C,EAAE,CAAC,IAAItY,EAAE2a,EAAErC,EAAE5C,GAAGtO,GAAG4W,EAAE/R,IAAIjM,KAAKA,EAAEA,EAAE2S,KAAI,SAAS2F,GAAG,OAAOqC,EAAErC,EAAElR,MAAK,IAAIpH,EAAEE,SAASF,EAAEA,EAAE,KAAK+b,EAAErG,GAAG1V,EAAE,OAAO+b,EAAE2rB,SAAS71B,WAAWkK,EAAE2rB,UAAU3rB,EAAEzL,MAAMuB,WAAWkK,EAAEzL,OAAOyL,EAAE,SAAS2C,EAAEpG,GAAG,OAAO0F,EAAE/R,IAAIqM,GAAGkD,EAAEjZ,MAAMrL,KAAKohB,GAAGwwC,EAAExwC,GAAG,SAAS+F,EAAE/F,EAAElR,GAAG,IAAIsO,EAAE,OAAO4C,EAAE2mM,OAAOtsM,KAAI,SAASoJ,GAAGA,EAAEZ,EAAEY,EAAE3U,GAAG,IAAIpH,EAAE+b,EAAEzgB,MAAMwtE,EAAE9sD,EAAE5U,EAAE/B,OAAOiT,EAAEvX,MAAM6N,EAAE8G,EAAEA,EAAEoT,GAAG2a,SAASqlC,EAAoBjxD,GAAlBjJ,EAAEoP,EAAE/R,IAAIjM,GAAGA,EAAE,GAAG4O,EAAIiH,EAAEmI,EAAE/R,IAAIjM,GAAGA,EAAE,GAAGA,EAAE4O,IAAGk6D,EAAErtD,EAAE5D,IAAI4D,EAAE7M,IAAI6M,EAAEqtD,GAAG,OAAO/sD,EAAElY,KAAK0X,EAAE3M,EAAEk6D,GAAG/sD,EAAE+M,GAAGvN,EAAE1D,EAAEixD,GAAG/sD,EAAEpL,MAAM+E,EAAEA,EAAE9E,IAAI0H,EAAE4jC,OAAOngC,EAAEnL,IAAImL,EAAEpL,MAAMoL,EAAEzL,MAAMyL,EAAE2rB,SAAS3rB,EAAEytB,OAAO9qB,EAAE3C,EAAEytB,QAAQztB,EAAEmjM,YAAY,IAAI/4M,KAAKkQ,IAAIlQ,KAAKmQ,IAAIyF,EAAEmjM,WAAW,GAAG,MAAM,IAAInjM,EAAEojM,OAAOnhM,EAAE8gM,IAAI9+M,GAAG+b,EAAEqjM,QAAQphM,EAAEuzD,IAAIx1D,EAAElY,KAAK4/B,UAAU1nB,EAAEqjM,UAAUrjM,EAAE9G,MAAM,GAAGS,EAAEqG,KAAI,SAASlJ,EAAEyF,EAAEyD,GAAG,OAAO3U,EAAEsO,EAAE4C,EAAE3F,KAAI,SAAS2F,GAAG,OAAOyD,EAAEpJ,KAAI,SAASvL,GAAG,IAAIsO,EAAEgF,EAAEpC,EAAEjT,OAAO+B,EAAErG,MAAM,GAAG2U,EAAE,CAAC,IAAIqG,EAAEsC,EAAEjX,EAAEkR,GAAGlR,EAAE,CAACvJ,KAAK6X,EAAEU,SAAShP,EAAErG,KAAKs+M,WAAW/mM,EAAE2mM,OAAOljM,EAAE2rB,SAAS3rB,EAAEA,EAAE7b,OAAO,GAAG0Q,IAAIN,MAAMyL,EAAE,GAAGzL,YAAYlJ,OAAE,EAAO,OAAOA,UAAO,SAASkR,GAAG,OAAO0F,EAAEsgM,IAAIhmM,MAAK,SAAS4F,EAAE5F,EAAElR,EAAEsO,EAAEqG,GAAG,IAAI/b,EAAE,UAAUsY,EAAE,OAAOlR,EAAElH,QAAQF,EAAEmG,KAAKkQ,IAAIlQ,KAAKmQ,KAAK/T,MAAM4D,KAAKiB,EAAEuL,KAAI,SAASvL,GAAG,OAAOA,EAAEkR,OAAMtY,EAAE+b,EAAEzL,MAAMoF,EAAEwmC,OAAOngC,EAAEzL,MAAMyL,EAAE2rB,SAAS,SAASppB,EAAEhG,GAAG,IAAIlR,EAAEsO,EAAE9G,EAAE0iG,EAAEh5F,GAAGyD,EAAEnN,EAAE8O,EAAEpF,GAAGtY,EAAE+d,EAAEzF,EAAEykM,SAASj0I,EAAE,GAAGjxD,EAAEhX,EAAE6U,EAAEqG,GAAG,IAAI3U,KAAKkR,EAAET,EAAEnJ,eAAetH,IAAI,YAAYA,GAAG0hE,EAAEroE,KAAK,CAACM,KAAKqG,EAAE80C,OAAOrkC,EAAEqkC,OAAO+iK,OAAO9gM,EAAE7F,EAAElR,GAAG2U,KAAK,OAAOzD,EAAEzF,EAAE7S,EAAE8oE,GAAGjoE,EAAE6U,EAAE,CAAC8lF,SAAS,GAAG8jH,YAAYt/M,EAAE4qC,WAAWtyB,EAAEovB,SAASxpB,EAAE,WAAW5F,EAAE5C,EAAEqG,GAAGzL,MAAM4N,EAAE,QAAQ5F,EAAE5C,EAAEqG,KAAK,SAASqM,EAAE9P,GAAG,SAAS5C,IAAI,OAAOpK,OAAOpS,SAAS,IAAIA,SAAQ,SAASof,GAAG,OAAOmD,EAAEnD,KAAI,SAASyD,EAAEzD,GAAG,OAAOqC,EAAEo7H,SAASp7H,EAAE+sB,SAASpvB,EAAEA,EAAE,SAAStY,EAAEsY,GAAG,IAAI,IAAI5C,EAAE,EAAEqG,EAAE,GAAG/b,EAAE2a,EAAEiwB,WAAWk+B,EAAE9oE,EAAEE,OAAOwV,EAAEozD,GAAG,CAAC,IAAIl6D,EAAE5O,EAAE0V,GAAGmC,EAAEjJ,EAAEywM,WAAWx+M,EAAE+N,EAAEqwM,OAAO1e,EAAE1/L,EAAEX,OAAO,EAAED,EAAEY,EAAE0/L,GAAGA,IAAItgM,EAAEmH,EAAEvG,GAAE,SAASuG,GAAG,OAAOkR,EAAElR,EAAEwJ,OAAM,IAAI3Q,GAAWY,EAAEsF,KAAKkQ,IAAIlQ,KAAKmQ,IAAIgC,EAAErY,EAAE0Q,MAAM1Q,EAAEqQ,MAAM,GAAGrQ,EAAEynC,UAAUznC,EAAEynC,SAA/D,IAAI,IAAoEjsB,EAAE9F,MAAM9U,GAAG,EAAEZ,EAAEupC,OAAO3oC,EAAEZ,EAAEi/M,YAA2BtoM,GAAf/V,EAAEZ,EAAE6oB,GAAG6uE,QAAU13F,EAAEgV,OAAWyF,GAAL6lL,EAAE,QAAK,GAA6Bx3L,GAAtB2R,EAAEza,EAAE6oB,GAAGwhB,QAAQpqC,OAAS,GAAE6I,EAAE2R,EAAE3R,IAAI,CAAC,IAAIiT,OAAE,EAAyBnG,GAAlBmG,EAAE/b,EAAE6oB,GAAGwhB,QAAQvhC,GAAK9I,EAAE4D,KAAKymC,QAAQvhC,IAAGiT,EAAE/b,EAAEk/M,OAAO1iM,EAAExc,EAAE3E,MAAMmgB,EAAEO,GAAGnG,EAAE4F,GAAGO,EAAEnG,GAAGe,IAAI3W,EAAEm/M,SAAS,EAAEr2M,IAAIiT,EAAE7V,KAAK8O,MAAM+G,EAAEpF,GAAGA,IAAI2pL,EAAE9/L,KAAKub,GAAG,GAAG/b,EAAEY,EAAEX,OAAO,IAAIwa,EAAE7Z,EAAE,GAAG4a,EAAE,EAAEA,EAAExb,EAAEwb,IAAI7E,EAAE/V,EAAE4a,EAAE,GAAG1S,EAAEw3L,EAAE9kL,GAAG9F,MAAM5M,KAAK2R,EAAE9D,EAAE8D,GAAG3R,EAAE6N,GAAG8D,GAAG3R,EAAE,WAAW2R,EAAE6lL,EAAE,GAAG9iL,EAAE7O,EAAE/Q,MAAMga,EAAExS,OAAOuJ,EAAEwH,SAASsE,EAAEqB,EAAElE,EAAEvT,IAAIsK,EAAEy6B,aAAa3uB,EAAEhF,IAAI,GAAGA,EAAEhS,OAAOqC,KAAKgW,GAAG7b,OAAO,IAAIF,EAAE,EAAEA,EAAE0V,EAAE1V,IAAIoe,IAAIA,EAAEpmB,EAAE8R,SAAS6qE,KAAK,aAAa,YAAY,qBAAqBh6D,EAAE2kM,YAAYt/M,GAAGqF,OAAOgnB,MAAMjO,GAAGrC,EAAE/b,GAAGkJ,KAAK,KAAKyR,EAAEy9K,YAAY9/K,EAAEqC,EAAE6tB,SAASlwB,EAAEqC,EAAE+sB,SAAS,IAAI,SAASohC,EAAExwD,GAAGqC,EAAErC,IAAIqC,EAAErC,GAAGqC,GAAG,SAAS/L,IAAI+L,EAAEotB,YAAW,IAAKptB,EAAEotB,WAAWptB,EAAEotB,YAAY,SAASlwB,EAAES,GAAG,IAAIlR,EAAEuT,EAAE+sB,SAAS7vB,EAAE8C,EAAEuhC,OAAOlkD,EAAE6f,EAAE8C,EAAErK,MAAMoK,EAAEC,EAAEy9K,YAAYrvL,EAAE4R,EAAEo7H,SAAS/5H,EAAED,EAAEzD,GAAG,GAAGqC,EAAE6gF,SAASt7F,OAAO,CAAC,IAAI2V,EAAE8E,EAAE6gF,SAAS3sF,EAAEgH,EAAE3V,OAAO,GAAG8b,GAAGrB,EAAEy9K,YAAY,IAAI,IAAIxiL,EAAE,EAAEA,EAAE/G,EAAE+G,IAAIC,EAAED,GAAG2pM,KAAKvjM,QAAQ,KAAKnN,KAAKgH,EAAEhH,GAAG0wM,KAAKvjM,IAAIA,GAAGhkB,IAAIoP,KAAKuT,EAAE6kM,QAAQ7kM,EAAE6kM,OAAM,EAAG12I,EAAE,UAAUA,EAAE,QAAQ9sD,EAAEnE,GAAGmE,EAAE5U,EAAEpH,EAAEgc,IAAIA,GAAGnE,GAAG,IAAI6C,IAAI1a,EAAE,GAAG+I,GAAG6F,MAAMoN,GAAG5U,GAAGsT,IAAItT,IAAIA,KAAKpH,EAAEoH,GAAG2B,GAAG6F,MAAMk6D,EAAE,UAAUxwD,GAAGlR,IAAIuT,EAAEotB,WAAWw4J,EAAE1/L,EAAE,cAAc8Z,EAAE6oB,YAAY7oB,EAAEo7H,UAAUp7H,EAAEo7H,YAAYp7H,EAAE8kM,QAAQ9kM,EAAE+kM,YAAY/kM,EAAE+kM,WAAU,EAAG52I,EAAE,YAAY,YAAYx9D,SAASmQ,IAAI7E,EAAElB,OAAOzV,EAAE,GAAGqY,OAAE,IAASA,EAAE,GAAGA,EAAE,IAAIzX,EAAE0/L,EAAEtgM,EAAE,EAAEwb,EAAE,KAAK7E,EAAElB,IAAIiF,EAAE2D,EAAEhG,GAAG,OAAOqC,EAAEi3B,MAAM,WAAW,IAAIt5B,EAAEqC,EAAE6oB,UAAUp8B,EAAEuT,EAAEojB,KAAK,IAAIpjB,EAAEy9K,YAAY,EAAEz9K,EAAE6tB,SAAS,EAAE7tB,EAAEglM,QAAO,EAAGhlM,EAAE6kM,OAAM,EAAG7kM,EAAE+kM,WAAU,EAAG/kM,EAAEo7H,SAAS,YAAYz9H,EAAEqC,EAAEotB,UAAU,cAAczvB,GAAG,IAAIlR,EAAE,EAAEA,EAAEpH,EAAE,GAAGsY,EAAEqC,EAAE6gF,SAASt7F,OAAOoY,KAAKqC,EAAE6gF,SAASljF,GAAGs5B,SAASj3B,EAAEytB,KAAK,SAAS9vB,GAAGzX,EAAEyX,EAAEioL,IAAIA,EAAE1/L,GAAGgX,GAAG5X,EAAEY,EAAE0/L,GAAGn4K,EAAEw3L,QAAQjlM,EAAE4kM,KAAK,SAASjnM,GAAGT,EAAEkE,EAAEzD,KAAKqC,EAAE8kM,MAAM,WAAW,IAAInnM,EAAEmG,EAAExiB,QAAQ0e,IAAI,EAAErC,GAAGmG,EAAE9d,OAAO2X,EAAE,GAAGqC,EAAEglM,QAAO,GAAIhlM,EAAEklM,KAAK,WAAWllM,EAAEglM,SAAShlM,EAAEglM,QAAO,EAAGpf,EAAE,EAAEtgM,EAAE8b,EAAEpB,EAAEy9K,aAAa35K,EAAEhe,KAAKka,GAAG8mL,GAAG7jL,MAAMjD,EAAE1I,QAAQ,WAAW0I,EAAEo7H,UAAUp7H,EAAEo7H,SAASwqD,EAAE,EAAEtgM,EAAE8b,EAAEpB,EAAEy9K,cAAcz9K,EAAEmlM,QAAQ,WAAWnlM,EAAE8kM,QAAQ9kM,EAAEi3B,QAAQj3B,EAAEklM,QAAQllM,EAAEolM,SAASnpM,EAAE+D,EAAEi3B,QAAQj3B,EAAEqlM,UAAUrlM,EAAEklM,OAAOllM,EAAE,IAAIyD,EAAEkzF,EAAE,CAACtnE,YAAO,EAAOi2K,WAAM,EAAOC,SAAI,EAAO33K,cAAS,EAAOxK,KAAK,EAAEyF,UAAU,SAASw8K,UAAS,EAAG9jK,OAAO,GAAGx+B,EAAE,CAACgqB,SAAS,IAAIp3B,MAAM,EAAEk5B,OAAO,iBAAiB01K,WAAW,IAAIjqM,MAAM,GAAGqG,EAAE,qHAAqH1P,MAAM,KAAKoS,EAAE,CAAC/R,IAAI,SAASqM,GAAG,OAAOhW,MAAMiD,QAAQ+S,IAAIrU,IAAI,SAASqU,GAAG,OAAO,EAAE5U,OAAO/E,UAAUgI,SAASpP,KAAK+gB,GAAGrc,QAAQ,WAAW6iN,IAAI,SAASxmM,GAAG,OAAO0F,EAAE/Z,IAAIqU,IAAIA,EAAE5J,eAAe,gBAAgB+vM,IAAI,SAASnmM,GAAG,OAAOA,aAAa6nM,YAAY3B,IAAI,SAASlmM,GAAG,OAAOA,EAAE4zG,UAAUluG,EAAEygM,IAAInmM,IAAItK,IAAI,SAASsK,GAAG,MAAM,iBAAiBA,GAAGimM,IAAI,SAASjmM,GAAG,MAAM,mBAAmBA,GAAGgmM,IAAI,SAAShmM,GAAG,YAAO,IAASA,GAAGoD,IAAI,SAASpD,GAAG,MAAM,qCAAqClO,KAAKkO,IAAIoE,IAAI,SAASpE,GAAG,MAAM,OAAOlO,KAAKkO,IAAI0mM,IAAI,SAAS1mM,GAAG,MAAM,OAAOlO,KAAKkO,IAAIi5D,IAAI,SAASj5D,GAAG,OAAO0F,EAAEtC,IAAIpD,IAAI0F,EAAEtB,IAAIpE,IAAI0F,EAAEghM,IAAI1mM,KAAKkD,EAAE,WAAW,SAASlD,EAAEA,EAAElR,EAAEsO,GAAG,SAAS,EAAE,EAAEA,EAAE,EAAEtO,GAAGkR,GAAG,EAAE5C,EAAE,EAAEtO,IAAIkR,EAAE,EAAElR,GAAGkR,EAAE,OAAO,SAASlR,EAAEsO,EAAEqG,EAAE/b,GAAG,GAAG,GAAGoH,GAAG,GAAGA,GAAG,GAAG2U,GAAG,GAAGA,EAAE,CAAC,IAAI+sD,EAAE,IAAIs3I,aAAa,IAAI,GAAGh5M,IAAIsO,GAAGqG,IAAI/b,EAAE,IAAI,IAAI4O,EAAE,EAAE,GAAGA,IAAIA,EAAEk6D,EAAEl6D,GAAG0J,EAAE,GAAG1J,EAAExH,EAAE2U,GAAG,OAAO,SAASnN,GAAG,GAAGxH,IAAIsO,GAAGqG,IAAI/b,EAAE,OAAO4O,EAAE,GAAG,IAAIA,EAAE,OAAO,EAAE,GAAG,IAAIA,EAAE,OAAO,EAAE,IAAI,IAAIiJ,EAAE,EAAEhX,EAAE,EAAE,KAAKA,GAAGioE,EAAEjoE,IAAI+N,IAAI/N,EAAEgX,GAAG,KAAKhX,EAAMA,EAAEgX,GAAGjJ,EAAEk6D,EAAEjoE,KAAKioE,EAAEjoE,EAAE,GAAGioE,EAAEjoE,IAAI,GAA/B,IAAkC0/L,EAAE,GAAG,EAAE,EAAExkL,EAAE,EAAE3U,GAAGvG,EAAEA,EAAE,GAAG,EAAEkb,EAAE,EAAE3U,GAAGvG,EAAE,EAAEuG,EAAE,GAAG,MAAMm5L,EAAE,CAAC,IAAI1oL,EAAE,EAAE,EAAEA,GAAG,KAAK0oL,EAAE,GAAG,EAAE,EAAExkL,EAAE,EAAE3U,GAAGvG,EAAEA,EAAE,GAAG,EAAEkb,EAAE,EAAE3U,GAAGvG,EAAE,EAAEuG,KAAKyQ,EAAE,KAAI5X,EAAEqY,EAAEzX,EAAEuG,EAAE2U,GAAGnN,EAAE/N,EAAEA,EAAEZ,EAAEsgM,EAAE3xL,EAAE/N,OAAO,GAAG,IAAI0/L,EAAE3xL,EAAE/N,MAAM,CAAKA,EAAEgX,EAAEA,EAAEA,EAAE,GAAZ,IAAe4D,EAAE,EAAE,GAAGxb,EAAEY,GAAGgX,EAAEhX,GAAG,EAAE0/L,EAAEjoL,EAAErY,EAAEmH,EAAE2U,GAAGnN,EAAE,EAAE2xL,EAAE1oL,EAAE5X,EAAEY,EAAEZ,QAAQ,KAAKkG,KAAK4P,IAAIwqL,IAAI,KAAK9kL,GAAG7M,EAAE3O,EAAE,OAAOqY,EAAE1J,EAAE8G,EAAE1V,MAA3nB,GAAooB8oD,EAAE,WAAW,SAASxwC,EAAEA,EAAElR,GAAG,OAAO,IAAIkR,GAAG,IAAIA,EAAEA,GAAGnS,KAAKiP,IAAI,EAAE,IAAIkD,EAAE,IAAInS,KAAKqS,IAAI,GAAGF,EAAE,EAAElR,GAAG,EAAEjB,KAAKgO,IAAIhO,KAAKkwD,KAAK,IAAIlwD,KAAKgO,GAAG/M,GAAG,IAAIA,EAAEsO,EAAE,qDAAqD9J,MAAM,KAAKmQ,EAAE,CAACskM,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,IAAI,IAAI,KAAK,MAAM,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,KAAK,MAAM/nM,GAAGgoM,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,KAAK,KAAK,IAAI,OAAO,SAASl5M,EAAEsO,GAAG,OAAO,EAAE4C,EAAE,EAAElR,EAAEsO,KAAK6qM,MAAM,CAAC,CAAC,KAAK,IAAI,KAAK,MAAM,CAAC,KAAK,KAAK,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,MAAM,SAASn5M,EAAEsO,GAAG,MAAM,GAAGtO,EAAEkR,EAAE,EAAElR,EAAEsO,GAAG,EAAE,EAAE4C,GAAG,EAAElR,EAAE,EAAEsO,GAAG,KAAK1V,EAAE,CAAC2Y,OAAO6C,EAAE,IAAI,IAAI,IAAI,MAAMstD,EAAE,GAAG,IAAI1hE,KAAK2U,EAAE+sD,EAAEjrE,KAAKuJ,EAAE2U,EAAE+sD,EAAEjrE,MAAMX,QAAQ,SAASob,GAAG,OAAO,SAASlR,EAAE2U,GAAG/b,EAAE,OAAOsY,EAAEza,KAAK6X,EAAEqG,IAAIiC,EAAEugM,IAAIn3M,GAAGA,EAAEoU,EAAEjZ,MAAMsV,EAAEzQ,IAA5E,CAAiF0hE,IAAIA,EAAE,CAACjrE,KAAKirE,EAAEjrE,MAAM,OAAOmC,EAA35B,GAAg6Byd,EAAE,CAAC4uK,IAAI,SAAS/zK,EAAElR,EAAEsO,GAAG,OAAO4C,EAAE+T,MAAMjlB,GAAGsO,GAAGmlF,UAAU,SAASviF,EAAElR,EAAEsO,GAAG,OAAO4C,EAAExN,aAAa1D,EAAEsO,IAAIuhB,OAAO,SAAS3e,EAAElR,EAAEsO,GAAG,OAAO4C,EAAElR,GAAGsO,GAAG0iF,UAAU,SAAS9/E,EAAElR,EAAEsO,EAAEqG,EAAE/b,GAAG+b,EAAE/b,KAAK+b,EAAE/b,GAAG,IAAI+b,EAAE/b,GAAGS,KAAK2G,EAAE,IAAIsO,EAAE,OAAO+I,EAAE,GAAGgjL,EAAE,EAAE7jL,EAAE,WAAW,SAAStF,IAAImpL,EAAE1xL,sBAAsB3I,GAAG,SAASA,EAAEA,GAAG,IAAIsO,EAAE+I,EAAEve,OAAO,GAAGwV,EAAE,CAAC,IAAI,IAAIqG,EAAE,EAAEA,EAAErG,GAAG+I,EAAE1C,IAAI0C,EAAE1C,GAAGqsB,KAAKhhC,GAAG2U,IAAIzD,SAAS+7K,qBAAqBoN,GAAGA,EAAE,EAAE,OAAOnpL,EAA1K,GAA+K,OAAO8P,EAAE7a,QAAQ,QAAQ6a,EAAEw3L,MAAM,EAAEx3L,EAAE4f,QAAQvpB,EAAE2J,EAAEle,OAAO,SAASoO,GAAGA,EAAE+C,EAAE/C,GAAG,IAAI,IAAIlR,EAAEqX,EAAEve,OAAOkH,KAAK,IAAI,IAAIsO,EAAE+I,EAAErX,GAAG2U,EAAErG,EAAEk1B,WAAWk+B,EAAE/sD,EAAE7b,OAAO4oE,KAAK9oE,EAAEsY,EAAEyD,EAAE+sD,GAAGu2I,WAAWh6M,UAAU0W,EAAEpb,OAAOmoE,EAAE,GAAG/sD,EAAE7b,QAAQwV,EAAE+pM,UAAUr3L,EAAE20G,SAAS/gH,EAAEoM,EAAE7e,KAAK,SAASnC,EAAEsO,GAAG,IAAIqG,EAAEiC,EAAEhQ,IAAI5G,GAAGkR,EAAElR,GAAG,GAAGA,EAAEpH,EAAE0V,GAAG,IAAI,OAAO,SAAS4C,GAAG,MAAM,CAAC1L,GAAGmP,EAAE3F,SAASkC,EAAEymM,YAAYjhM,EAAE/B,IAAI/b,EAAE,QAAQooB,EAAEo4L,cAAc,SAASloM,GAAG,IAAIlR,EAAE0W,EAAExF,GAAG,OAAOA,EAAExN,aAAa,mBAAmB1D,GAAGA,GAAGghB,EAAEq4L,OAAOjlM,EAAE4M,EAAEs4L,QAAQ53J,EAAE1gC,EAAEm1L,SAAS,SAASjlM,GAAG,IAAIlR,EAAEghB,EAAE9P,GAAG,OAAOlR,EAAEq4M,QAAQr4M,EAAEsgC,SAAS,EAAEtgC,EAAE3P,IAAI,SAASie,GAAG,OAAOtO,EAAEo0F,SAASt+F,SAAQ,SAASob,GAAGA,EAAEknM,OAAM,EAAGlnM,EAAEonM,WAAU,KAAK3jM,EAAErG,GAAGxY,SAAQ,SAASwY,GAAG,IAAIqG,EAAElb,EAAE6U,EAAE9G,EAAE8O,EAAEpF,GAAG,KAAKyD,EAAEghM,QAAQhhM,EAAEghM,SAASzkM,EAAEykM,QAAQrnM,EAAEtO,EAAEsgC,SAAS,IAAI1nC,EAAE+b,EAAEmgC,OAAOngC,EAAEikM,UAAS,EAAGjkM,EAAEynB,UAAUp8B,EAAEo8B,UAAUznB,EAAEmgC,OAAOl+B,EAAEsgM,IAAIt+M,GAAG0V,EAAEG,EAAE7V,EAAE0V,GAAGtO,EAAEo4M,OAAM,EAAGp4M,EAAEs4M,WAAU,EAAGt4M,EAAEm4M,KAAKxjM,EAAEmgC,QAAQngC,EAAEqM,EAAErM,GAAGA,EAAEyjM,OAAM,EAAGzjM,EAAE2jM,WAAU,EAAG3jM,EAAE2rB,SAAShyB,IAAItO,EAAEsgC,SAAS3rB,EAAE2rB,UAAUtgC,EAAEo0F,SAAS/6F,KAAKsb,MAAK3U,EAAEm4M,KAAK,GAAGn4M,EAAEwqC,QAAQxqC,EAAE44M,UAAU54M,EAAE04M,UAAU14M,GAAGA,GAAGghB,EAAE4nE,OAAO,SAAS13E,EAAElR,GAAG,OAAOjB,KAAKC,MAAMD,KAAK6pF,UAAU5oF,EAAEkR,EAAE,IAAIA,GAAG8P,OAAM7wB,KAAK6P,EAAEsO,EAAE,MAAM,SAAS4C,EAAElR,EAAEsO,GAAG,aAAahS,OAAOE,eAAewD,EAAE,aAAa,CAAC9L,OAAM,IAAK,IAAIygB,EAAErG,EAAE,GAAG1V,EAAE0V,EAAE,GAAGozD,EAAEpzD,EAAEA,EAAE1V,GAAG4O,EAAE,CAAC00K,QAAQ,SAAShrK,EAAElR,GAAGA,IAAIA,EAAE,IAAI,IAAIsO,EAAE,IAAIqG,EAAEnN,EAAExH,GAAGkR,EAAEqlD,UAAU,UAAUmL,EAAEl6D,GAAG0J,EAAEqoM,QAAQroM,EAAE3Z,UAAUiiN,SAASlrM,IAAI,oBAAoBpK,QAAQA,OAAOqsH,MAAMrsH,OAAOu1M,QAAQjyM,GAAGxH,EAAE6rF,QAAQrkF,GAAG,SAAS0J,EAAElR,EAAEsO,GAAG,aAAaA,EAAEiF,EAAEvT,EAAE,KAAI,WAAW,OAAOvG,KAAI,IAAIkb,EAAErG,EAAE,GAAG1V,EAAE9I,KAAK4xE,EAAE,mBAAmBlxC,QAAQ,iBAAiBA,OAAOs4D,SAAS,SAAS53E,GAAG,cAAcA,GAAG,SAASA,GAAG,OAAOA,GAAG,mBAAmBsf,QAAQtf,EAAEpK,cAAc0pB,QAAQtf,IAAIsf,OAAOj5B,UAAU,gBAAgB2Z,GAAG1J,EAAE,SAAS0J,EAAElR,EAAEsO,GAAG,OAAOxZ,YAAW,WAAcwZ,EAAE+nM,eAAehuM,UAAUiG,EAAE+nM,eAAehuM,SAASipB,SAAS,UAAsB3c,EAAEnN,EAAEsuM,iBAAiB5kM,GAAE,WAAW5C,EAAExL,OAAOoO,MAAKyD,EAAEnN,EAAEquM,WAAW3kM,GAAE,WAAW5C,EAAExL,OAAOoO,QAAMlR,IAAG,GAAIyQ,EAAE,SAASS,EAAElR,GAAG,OAAO,YAAY,oBAAoB+tF,YAAY,YAAYrsB,EAAEqsB,cAAc/tF,aAAa+tF,YAAY/tF,GAAG,iBAAY,IAASA,EAAE,YAAY0hE,EAAE1hE,KAAK,OAAOA,GAAG,IAAIA,EAAE8kH,UAAU,iBAAiB9kH,EAAE05M,UAAUxoM,EAAEswF,YAAYxhG,GAAGkR,EAAEolF,UAAUt2F,EAAEpH,GAAGa,EAAE,SAASyX,EAAElR,GAAG,IAAIsO,GAAE,EAAG,MAAM,CAAC9I,GAAG0L,EAAEua,KAAK,SAASzrB,GAAG,OAAOyQ,EAAES,EAAElR,GAAGlQ,MAAM2mN,OAAO,WAAW,IAAI9hM,EAAErT,UAAUxI,OAAO,QAAG,IAASwI,UAAU,GAAGA,UAAU,GAAG,IAAI,OAAOgN,GAAE,EAAG9G,EAAE0J,EAAEyD,EAAE3U,IAAI8C,OAAO,WAAW9C,EAAE8C,OAAOoO,IAAIyoM,SAAS,WAAW,OAAOrrM,MAAM,SAAS4C,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAErG,EAAE,IAAI1V,EAAE0V,EAAEA,EAAEqG,GAAG+sD,EAAEpzD,EAAE,GAAG9G,EAAE8G,EAAE,GAAGmC,EAAE,mBAAmB+f,QAAQ,iBAAiBA,OAAOs4D,SAAS,SAAS53E,GAAG,cAAcA,GAAG,SAASA,GAAG,OAAOA,GAAG,mBAAmBsf,QAAQtf,EAAEpK,cAAc0pB,QAAQtf,IAAIsf,OAAOj5B,UAAU,gBAAgB2Z,GAAGzX,EAAE6U,EAAE,GAAGhG,OAAO/Q,UAAU+5B,UAAUh1B,OAAOE,eAAe8L,OAAO/Q,UAAU,WAAW,CAACrD,MAAM,SAASgd,EAAElR,GAAG,MAAM,iBAAiBA,IAAIA,EAAE,KAAKA,EAAEkR,EAAEpY,OAAOhJ,KAAKgJ,UAAU,IAAIhJ,KAAK+E,QAAQqc,EAAElR,MAAM,IAAIm5L,EAAE,GAAGtgM,EAAE,KAAKwb,EAAE,SAASnD,GAAG,OAAOA,EAAEq9E,UAAUr9E,EAAEq9E,WAAW,KAAKr9E,EAAE0pD,WAAW1pD,EAAE0pD,YAAY,KAAK1pD,EAAE7I,SAAS6I,EAAE7I,UAAU,YAAY6I,EAAEovB,SAASpvB,EAAEovB,UAAU,KAAKpvB,EAAE0oM,YAAY1oM,EAAE0oM,cAAa,EAAG1oM,EAAE8lF,MAAM9lF,EAAE8lF,OAAO,kBAAkB9lF,EAAEza,KAAKya,EAAEza,MAAM,UAAUya,EAAE2oM,eAAe3oM,EAAE2oM,gBAAgB,KAAK3oM,EAAEw/J,UAAUx/J,EAAEw/J,YAAW,EAAGx/J,EAAEu8G,KAAKv8G,EAAEu8G,MAAM,KAAKv8G,EAAEuzJ,OAAOvzJ,EAAEuzJ,QAAQ,KAAKvzJ,EAAE4oM,YAAY5oM,EAAE4oM,aAAa,KAAK5oM,EAAE6oM,kBAAa,IAAS7oM,EAAE6oM,cAAc7oM,EAAE6oM,aAAa7oM,EAAE8oM,SAAS9oM,EAAE8oM,UAAU,WAAW9oM,EAAEq9E,WAAW,iBAAiBr9E,EAAEq9E,YAAYr9E,EAAEq9E,UAAUr9E,EAAEq9E,UAAU/pF,MAAM,MAAM0M,EAAEq9E,YAAYr9E,EAAEq9E,UAAU,IAAIr9E,EAAE8lF,OAAO9lF,EAAEq9E,UAAUl1F,KAAK6X,EAAE8lF,MAAMj3F,QAAQmR,EAAEza,MAAMya,EAAEq9E,UAAUl1F,KAAK6X,EAAEza,MAAMya,EAAE2oM,gBAAgB,iBAAiB3oM,EAAE2oM,iBAAiB3oM,EAAE2oM,eAAe3oM,EAAE2oM,eAAer1M,MAAM,MAAM0M,EAAE2oM,iBAAiB3oM,EAAE2oM,eAAe,IAAI3oM,EAAE7I,UAAU6I,EAAE2oM,eAAexgN,KAAK6X,EAAE7I,SAAStI,QAAQmR,EAAEw/J,WAAWx/J,EAAE2oM,eAAexgN,KAAK,cAAc6X,EAAE4oM,aAAa5oM,EAAE2oM,eAAexgN,KAAK,iBAAiB8/L,EAAEjoL,EAAEA,GAAG1B,EAAE,SAAS0B,EAAElR,GAAG,IAAI2U,EAAEjS,SAASa,cAAc,OAAO,GAAGoR,EAAE4hF,UAAUlmG,IAAI,WAAWskB,EAAE9Q,KAAKpK,EAAEw/D,WAAWj5D,EAAEuuF,WAAWvuF,EAAEuuF,UAAUz4F,SAAQ,SAASob,GAAGyD,EAAE4hF,UAAUlmG,IAAI6gB,OAAM,YAAY,oBAAoB68E,YAAY,YAAYt9E,EAAEs9E,cAAc78E,aAAa68E,YAAY78E,GAAG,iBAAY,IAASA,EAAE,YAAYT,EAAES,KAAK,OAAOA,GAAG,IAAIA,EAAE4zG,UAAU,iBAAiB5zG,EAAEwoM,UAAU/kM,EAAE6sF,YAAYtwF,GAAGyD,EAAE2hF,UAAUplF,EAAEqC,EAAEvT,EAAE2U,GAAG3U,EAAE+5M,aAAa,CAAC,IAAI5gB,EAAE,IAAIvgM,EAAE4O,EAAEmN,EAAE,CAACslM,iBAAgB,IAAK9gB,EAAE9hG,GAAG,OAAM,SAASnmF,GAAG,IAAIlR,EAAEkR,EAAE8rC,OAAOroC,EAAE4hF,UAAUtyC,SAAS,YAAYtvC,EAAE4hF,UAAUlmG,IAAI,WAAW,IAAIie,EAAE,EAAEvP,KAAK4P,IAAI3O,EAAE,IAAIsO,EAAE,IAAIA,EAAE,GAAGozD,EAAEl6D,EAAEwuM,eAAerhM,EAAE3U,EAAEsO,MAAK6qL,EAAE9hG,GAAG,UAAS,SAASnmF,GAAG,IAAI5C,EAAE4C,EAAE8rC,OAAOj+C,KAAK4P,IAAIL,GAAG,GAAGozD,EAAEl6D,EAAEyuM,cAActhM,GAAE,WAAW,mBAAmB3U,EAAE46D,YAAY56D,EAAE46D,aAAajmD,EAAEyiB,YAAYv+B,EAAEiK,OAAO6R,OAAMA,EAAE4hF,UAAUzzF,OAAO,WAAW4+D,EAAEl6D,EAAEuuM,aAAaphM,OAAM,GAAGzZ,MAAMiD,QAAQ6B,EAAEykK,QAAQzkK,EAAEykK,OAAO3uK,SAAQ,SAASob,GAAG,IAAIlR,EAAEsT,EAAEpC,EAAE5C,EAAE1V,EAAE4O,EAAEA,EAAN8G,CAASqG,EAAE9b,IAAImH,GAAG2U,EAAE6sF,YAAYxhG,WAAU,GAAG,WAAWyQ,EAAEzQ,EAAEykK,QAAQ,CAAC,IAAIpwJ,EAAEf,EAAEtT,EAAEykK,OAAOn2J,EAAE1V,EAAE4O,EAAEA,EAAN8G,CAASqG,EAAE9b,IAAIwb,GAAGM,EAAE6sF,YAAYntF,GAAG,OAAOM,GAAGpB,EAAE,SAASrC,EAAElR,GAAG,GAAGkR,EAAEu8G,KAAK,CAAC,IAAIn/G,EAAE5L,SAASa,cAAc,KAAK,OAAO+K,EAAE5K,aAAa,cAAc,QAAQwN,EAAE8oM,UAAU,IAAI,cAAc1rM,EAAEioF,UAAUlmG,IAAI,MAAM,IAAIskB,EAAEzD,EAAEu8G,KAAK9zH,KAAKuX,EAAEu8G,KAAK9zH,KAAKuX,EAAEu8G,KAAK94G,EAAE2c,SAAS,OAAOhjB,EAAEioF,UAAUlmG,IAAIskB,EAAE5U,QAAQuO,EAAEioF,UAAUlmG,IAAI,MAAMskB,EAAE5U,QAAQ,MAAM,IAAI,MAAMuO,EAAEioF,UAAUlmG,IAAI,OAAO,IAAIuI,EAAEsY,EAAEu8G,KAAK9zH,KAAKuX,EAAEu8G,KAAK9zH,KAAKuX,EAAEu8G,KAAK70H,EAAE04B,SAAS,QAAQhjB,EAAEioF,UAAUlmG,IAAIuI,EAAEmH,QAAQuO,EAAEioF,UAAUlmG,IAAI,OAAOuI,EAAEmH,QAAQ,MAAM,IAAI,eAAe,IAAI2hE,EAAExwD,EAAEu8G,KAAK9zH,KAAKuX,EAAEu8G,KAAK9zH,KAAKuX,EAAEu8G,KAAK,iBAAiB/rD,EAAEA,EAAEl9D,MAAM,KAAK1O,SAAQ,SAASob,GAAG5C,EAAEioF,UAAUlmG,IAAI6gB,MAAKhW,MAAMiD,QAAQujE,IAAIA,EAAE5rE,SAAQ,SAASob,GAAG5C,EAAEioF,UAAUlmG,IAAI6gB,EAAEnR,WAAU,MAAM,IAAI,WAAW,IAAIyH,EAAE0J,EAAEu8G,MAAMv8G,EAAEu8G,gBAAgBzqC,SAAS9xE,EAAEu8G,KAAK,KAAKjmH,IAAI8G,EAAE9G,EAAE8G,IAAI,MAAM,QAAQA,EAAEioF,UAAUlmG,IAAI,kBAAkBie,EAAEoyF,YAAYxvF,EAAEu8G,KAAK9zH,KAAKuX,EAAEu8G,KAAK9zH,KAAKuX,EAAEu8G,KAAKv8G,EAAEu8G,KAAKx/C,OAAO3/D,EAAEioF,UAAUlmG,IAAI,SAASO,EAAEsgB,EAAE5C,EAAEtO,KAAKpP,EAAE,SAASsgB,EAAElR,EAAEsO,GAAG4C,EAAEu8G,OAAOv8G,EAAEu8G,KAAKx/C,OAAO/8D,EAAEu8G,KAAK9zH,KAAK2U,EAAEkzF,YAAYxhG,IAAIkR,EAAEu8G,KAAK9zH,KAAK2U,EAAEulF,aAAa7zF,EAAEsO,EAAEm7K,eAAen2K,EAAE,SAASpC,EAAElR,GAAG,IAAIkR,EAAE,OAAO,KAAK,IAAI5C,EAAE5L,SAASa,cAAc,KAAK,GAAG+K,EAAEioF,UAAUlmG,IAAI,UAAUie,EAAEioF,UAAUlmG,IAAI,UAAU6gB,EAAEua,OAAOnd,EAAEmd,KAAKva,EAAEua,MAAMva,EAAEzN,OAAO6K,EAAE7K,KAAKyN,EAAEzN,MAAMyN,EAAEjT,SAASqQ,EAAErQ,OAAOiT,EAAEjT,QAAQiT,EAAEu8G,KAAK,CAACn/G,EAAEioF,UAAUlmG,IAAI,QAAQ,IAAIskB,EAAEjS,SAASa,cAAc,KAAK,OAAO41L,EAAE6gB,UAAU,IAAI,cAAcrlM,EAAE4hF,UAAUlmG,IAAI,MAAM6gB,EAAEu8G,KAAKn8F,SAAS,OAAO3c,EAAE4hF,UAAUlmG,IAAI6gB,EAAEu8G,KAAK1tH,QAAQ4U,EAAE4hF,UAAUlmG,IAAI,MAAM6gB,EAAEu8G,KAAK1tH,QAAQ,MAAM,IAAI,MAAM4U,EAAE4hF,UAAUlmG,IAAI,OAAO6gB,EAAEu8G,KAAKn8F,SAAS,QAAQ3c,EAAE4hF,UAAUlmG,IAAI6gB,EAAEu8G,KAAK1tH,QAAQ4U,EAAE4hF,UAAUlmG,IAAI,OAAO6gB,EAAEu8G,KAAK1tH,QAAQ,MAAM,IAAI,eAAe,iBAAiBmR,EAAEu8G,KAAKv8G,EAAEu8G,KAAKjpH,MAAM,KAAK1O,SAAQ,SAASob,GAAG5C,EAAEioF,UAAUlmG,IAAI6gB,MAAKhW,MAAMiD,QAAQ+S,EAAEu8G,OAAOv8G,EAAEu8G,KAAK33H,SAAQ,SAASob,GAAG5C,EAAEioF,UAAUlmG,IAAI6gB,EAAEnR,WAAU,MAAM,QAAQ4U,EAAE4hF,UAAUlmG,IAAI,kBAAkBskB,EAAE+rF,YAAYxvF,EAAEu8G,KAAKn/G,EAAEkzF,YAAY7sF,GAAG,OAAOzD,EAAE68G,QAAQ,iBAAiB78G,EAAE68G,MAAM78G,EAAE68G,MAAMvpH,MAAM,KAAK1O,SAAQ,SAASob,GAAG5C,EAAEioF,UAAUlmG,IAAI6gB,MAAKhW,MAAMiD,QAAQ+S,EAAE68G,QAAQ78G,EAAE68G,MAAMj4H,SAAQ,SAASob,GAAG5C,EAAEioF,UAAUlmG,IAAI6gB,EAAEnR,YAAWmR,EAAE7X,MAAMiV,EAAEjY,iBAAiB,SAAQ,SAASiY,GAAMA,EAAEsgG,iBAAkBuqF,EAAE2K,QAA8G3K,EAAE2K,OAAOzqM,KAAK6X,EAAE7X,MAAM6X,EAAE7X,KAAK6gN,WAAWl6M,EAAEy2M,OAAO,IAA5IjwM,QAAQC,KAAK,iFAAoIyK,EAAE6U,SAAS,mBAAmB7U,EAAE6U,SAASzX,EAAEjY,iBAAiB,SAAQ,SAASiY,GAAG4C,EAAE6U,UAAUzX,EAAEsgG,iBAAiB19F,EAAE6U,QAAQzX,EAAEtO,OAAMsO,GAAGtO,EAAEwH,EAAE,SAAS0J,EAAElR,EAAE2U,GAAG9b,EAAEqY,EAAEyD,EAAEN,EAAEM,GAAG,IAAI/b,EAAEC,EAAEqgC,UAAUvkB,EAAEklM,eAAeh/M,QAAQ,qBAAqBjC,EAAE21F,YAAY55E,EAAEklM,eAAe/3M,KAAK,OAAOlJ,EAAE21F,UAAU,GAAG55E,EAAEklM,eAAe/jN,SAAQ,SAASob,GAAGtY,EAAE29F,UAAUlmG,IAAI6gB,OAAM,IAAIT,EAAEjB,EAAExP,EAAE2U,GAAG3U,GAAGpH,EAAE4oG,YAAY/wF,GAAGA,EAAEwU,MAAMirD,QAAQ,EAAExO,EAAEl6D,EAAEkuM,UAAUjlM,GAAG,IAAIhX,EAAEkb,EAAE2rB,SAAS64J,OAAE,EAAO,GAAG,OAAO1/L,EAAE,CAAC,IAAI8Z,EAAE,WAAW,OAAO4mM,aAAY,WAAW,OAAO1pM,EAAE2mB,YAAYlzB,OAAOk2M,cAAcjhB,GAAG1oL,EAAE8lF,UAAUtyC,SAAS,aAAaxqD,GAAG,IAAIA,GAAG,IAAIioE,EAAEl6D,EAAEquM,WAAWplM,GAAE,WAAW,mBAAmBkE,EAAEimD,YAAYjmD,EAAEimD,aAAanqD,EAAE2mB,YAAYv+B,EAAEiK,OAAO2N,MAAKvM,OAAOk2M,cAAcjhB,MAAK,KAAKA,EAAE5lL,IAAIoB,EAAEilM,cAAcnpM,EAAEpa,iBAAiB,aAAY,WAAW6N,OAAOk2M,cAAcjhB,MAAK1oL,EAAEpa,iBAAiB,YAAW,WAAW8iM,EAAE5lL,QAAO,OAAOjF,EAAE1V,EAAE4O,EAAEA,EAAN8G,CAASmC,EAAE5X,KAAK,SAASqY,EAAElR,EAAEsO,GAAGtO,EAAEkR,EAAElgB,QAAQsd,EAAE,GAAFA,GAAQtO,EAAE3G,KAAK,CAAC6X,EAAEtY,EAAE,+pKAA+pK,MAAM,SAASsY,EAAElR,GAAGkR,EAAElgB,QAAQ,WAAW,IAAIkgB,EAAE,GAAG,OAAOA,EAAE3R,SAAS,WAAW,IAAI,IAAI2R,EAAE,GAAGlR,EAAE,EAAEA,EAAElQ,KAAKgJ,OAAOkH,IAAI,CAAC,IAAIsO,EAAExe,KAAKkQ,GAAGsO,EAAE,GAAG4C,EAAE7X,KAAK,UAAUiV,EAAE,GAAG,IAAIA,EAAE,GAAG,KAAK4C,EAAE7X,KAAKiV,EAAE,IAAI,OAAO4C,EAAEpP,KAAK,KAAKoP,EAAEtY,EAAE,SAASoH,EAAEsO,GAAG,iBAAiBtO,IAAIA,EAAE,CAAC,CAAC,KAAKA,EAAE,MAAM,IAAI,IAAI2U,EAAE,GAAG/b,EAAE,EAAEA,EAAE9I,KAAKgJ,OAAOF,IAAI,CAAC,IAAI8oE,EAAE5xE,KAAK8I,GAAG,GAAG,iBAAiB8oE,IAAI/sD,EAAE+sD,IAAG,GAAI,IAAI9oE,EAAE,EAAEA,EAAEoH,EAAElH,OAAOF,IAAI,CAAC,IAAI4O,EAAExH,EAAEpH,GAAG,iBAAiB4O,EAAE,IAAImN,EAAEnN,EAAE,MAAM8G,IAAI9G,EAAE,GAAGA,EAAE,GAAG8G,EAAEA,IAAI9G,EAAE,GAAG,IAAIA,EAAE,GAAG,UAAU8G,EAAE,KAAK4C,EAAE7X,KAAKmO,MAAM0J,IAAI,SAASA,EAAElR,EAAEsO,GAAG,aAAa,SAASqG,EAAEzD,EAAElR,GAAG,QAAG,IAASkR,GAAG,OAAOA,EAAE,MAAM,IAAI5Y,UAAU,2CAA2C,IAAI,IAAIgW,EAAEhS,OAAO4U,GAAGyD,EAAE,EAAEA,EAAErT,UAAUxI,OAAO6b,IAAI,CAAC,IAAI/b,EAAE0I,UAAUqT,GAAG,QAAG,IAAS/b,GAAG,OAAOA,EAAE,IAAI,IAAI8oE,EAAEplE,OAAOqC,KAAKrC,OAAO1D,IAAI4O,EAAE,EAAEiJ,EAAEixD,EAAE5oE,OAAO0O,EAAEiJ,EAAEjJ,IAAI,CAAC,IAAI/N,EAAEioE,EAAEl6D,GAAG2xL,EAAE78L,OAAO60B,yBAAyBv4B,EAAEa,QAAG,IAAS0/L,GAAGA,EAAElyK,aAAa3Y,EAAE7U,GAAGb,EAAEa,KAAK,OAAO6U,EAAE,SAAS1V,IAAI0D,OAAOQ,QAAQR,OAAOE,eAAeF,OAAO,SAAS,CAAC2qB,YAAW,EAAGyI,cAAa,EAAG1I,UAAS,EAAG9yB,MAAMygB,IAAIzD,EAAElgB,QAAQ,CAAC8L,OAAO6X,EAAEyhM,SAASx9M,IAAI,SAASsY,EAAElR,EAAEsO,GAAG,IAAIqG,GAAG,SAAS/b,EAAE8oE,EAAEl6D,EAAEiJ,GAAG,aAAa,SAAShX,EAAEyX,EAAElR,EAAEsO,GAAG,OAAOxZ,WAAWye,EAAErC,EAAE5C,GAAGtO,GAAG,SAASm5L,EAAEjoL,EAAElR,EAAEsO,GAAG,QAAQpT,MAAMiD,QAAQ+S,KAAKrY,EAAEqY,EAAE5C,EAAEtO,GAAGsO,IAAG,GAAI,SAASzV,EAAEqY,EAAElR,EAAEsO,GAAG,IAAIqG,EAAE,GAAGzD,EAAE,GAAGA,EAAEpb,QAAQob,EAAEpb,QAAQkK,EAAEsO,QAAQ,GAAG4C,EAAEpY,SAAS2X,EAAE,IAAIkE,EAAE,EAAEA,EAAEzD,EAAEpY,QAAQkH,EAAE7P,KAAKme,EAAE4C,EAAEyD,GAAGA,EAAEzD,GAAGyD,SAAS,IAAIA,KAAKzD,EAAEA,EAAE5J,eAAeqN,IAAI3U,EAAE7P,KAAKme,EAAE4C,EAAEyD,GAAGA,EAAEzD,GAAG,SAASmD,EAAEnD,EAAElR,EAAEsO,GAAG,IAAIqG,EAAE,sBAAsB3U,EAAE,KAAKsO,EAAE,SAAS,OAAO,WAAW,IAAItO,EAAE,IAAInE,MAAM,mBAAmByS,EAAEtO,GAAGA,EAAE5D,MAAM4D,EAAE5D,MAAMoF,QAAQ,kBAAkB,IAAIA,QAAQ,cAAc,IAAIA,QAAQ,6BAA6B,kBAAkB,sBAAsBkgE,EAAE9oE,EAAE4N,UAAU5N,EAAE4N,QAAQC,MAAM7N,EAAE4N,QAAQg4F,KAAK,OAAO98B,GAAGA,EAAEvxE,KAAKyI,EAAE4N,QAAQmO,EAAErG,GAAG4C,EAAE/V,MAAMrL,KAAKwR,YAAY,SAASkO,EAAE0B,EAAElR,EAAEsO,GAAG,IAAIqG,EAAE/b,EAAEoH,EAAEzI,UAAUod,EAAEzD,EAAE3Z,UAAU+E,OAAO7E,OAAOmB,GAAG+b,EAAE7N,YAAYoK,EAAEyD,EAAEo4E,OAAOn0F,EAAE0V,GAAG+rM,GAAG1lM,EAAErG,GAAG,SAASiF,EAAErC,EAAElR,GAAG,OAAO,WAAW,OAAOkR,EAAE/V,MAAM6E,EAAEsB,YAAY,SAAS1Q,EAAEsgB,EAAElR,GAAG,cAAckR,GAAGopM,GAAGppM,EAAE/V,MAAM6E,GAAEA,EAAE,IAAMyQ,EAAEzQ,GAAGkR,EAAE,SAASoC,EAAEpC,EAAElR,GAAG,OAAOkR,IAAIT,EAAEzQ,EAAEkR,EAAE,SAASvP,EAAEuP,EAAElR,EAAEsO,GAAGzV,EAAE2V,EAAExO,IAAG,SAASA,GAAGkR,EAAE7a,iBAAiB2J,EAAEsO,GAAE,MAAM,SAASsG,EAAE1D,EAAElR,EAAEsO,GAAGzV,EAAE2V,EAAExO,IAAG,SAASA,GAAGkR,EAAEve,oBAAoBqN,EAAEsO,GAAE,MAAM,SAASG,EAAEyC,EAAElR,GAAG,KAAKkR,GAAG,CAAC,GAAGA,GAAGlR,EAAE,OAAM,EAAGkR,EAAEA,EAAEkmB,WAAW,OAAM,EAAG,SAAS3vB,EAAEyJ,EAAElR,GAAG,OAAOkR,EAAErc,QAAQmL,IAAI,EAAE,SAASwO,EAAE0C,GAAG,OAAOA,EAAEnR,OAAOyE,MAAM,QAAQ,SAASkS,EAAExF,EAAElR,EAAEsO,GAAG,GAAG4C,EAAErc,UAAUyZ,EAAE,OAAO4C,EAAErc,QAAQmL,GAAG,IAAI,IAAI2U,EAAE,EAAEA,EAAEzD,EAAEpY,QAAQ,CAAC,GAAGwV,GAAG4C,EAAEyD,GAAGrG,IAAItO,IAAIsO,GAAG4C,EAAEyD,KAAK3U,EAAE,OAAO2U,EAAEA,IAAI,OAAO,EAAE,SAASU,EAAEnE,GAAG,OAAOhW,MAAM3D,UAAU6G,MAAMjO,KAAK+gB,EAAE,GAAG,SAASiD,EAAEjD,EAAElR,EAAEsO,GAAG,IAAI,IAAIqG,EAAE,GAAG/b,EAAE,GAAG8oE,EAAE,EAAEA,EAAExwD,EAAEpY,QAAQ,CAAC,IAAI0O,EAAExH,EAAEkR,EAAEwwD,GAAG1hE,GAAGkR,EAAEwwD,GAAGhrD,EAAE9d,EAAE4O,GAAG,GAAGmN,EAAEtb,KAAK6X,EAAEwwD,IAAI9oE,EAAE8oE,GAAGl6D,EAAEk6D,IAAI,OAAOpzD,IAAIqG,EAAE3U,EAAE2U,EAAEtG,MAAK,SAAS6C,EAAE5C,GAAG,OAAO4C,EAAElR,GAAGsO,EAAEtO,MAAK2U,EAAEtG,QAAQsG,EAAE,SAASV,EAAE/C,EAAElR,GAAG,IAAI,IAAIsO,EAAEqG,EAAE/b,EAAEoH,EAAE,GAAG1L,cAAc0L,EAAE5B,MAAM,GAAGsjE,EAAE,EAAEA,EAAE64I,GAAGzhN,QAAQ,CAAC,GAAGwV,EAAEisM,GAAG74I,IAAI/sD,EAAErG,EAAEA,EAAE1V,EAAEoH,KAAKkR,EAAE,OAAOyD,EAAE+sD,IAAI,OAAOjxD,EAAE,SAASkG,IAAI,OAAO6jM,KAAK,SAASzjM,EAAE7F,GAAG,IAAIlR,EAAEkR,EAAEupM,eAAevpM,EAAE,OAAOlR,EAAE06M,aAAa16M,EAAE25L,cAAc/gM,EAAE,SAASmb,EAAE7C,EAAElR,GAAG,IAAIsO,EAAExe,KAAKA,KAAK6qN,QAAQzpM,EAAEphB,KAAK8U,SAAS5E,EAAElQ,KAAK4nC,QAAQxmB,EAAEwmB,QAAQ5nC,KAAKmO,OAAOiT,EAAEzhB,QAAQmrN,YAAY9qN,KAAK+qN,WAAW,SAAS76M,GAAGpP,EAAEsgB,EAAEzhB,QAAQopG,OAAO,CAAC3nF,KAAK5C,EAAEquC,QAAQ38C,IAAIlQ,KAAKs8D,OAAO,SAAS90C,EAAEpG,GAAG,IAAIlR,EAAEkR,EAAEzhB,QAAQqrN,WAAW,OAAO,IAAI96M,IAAI+6M,GAAG1jM,EAAE2jM,GAAGzkM,EAAE0kM,GAAGjnM,EAAEqC,IAAInF,EAAE+F,GAAG,SAASA,EAAE/F,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE4sM,SAASpiN,OAAOF,EAAE0V,EAAE6sM,gBAAgBriN,OAAO4oE,EAAE1hE,EAAEo7M,IAAIzmM,EAAE/b,GAAG,EAAE4O,EAAExH,GAAGq7M,GAAGC,KAAK3mM,EAAE/b,GAAG,EAAE0V,EAAE2nI,UAAUv0E,EAAEpzD,EAAEitM,UAAU/zM,EAAEk6D,IAAIxwD,EAAEsqM,QAAQ,IAAIltM,EAAE8lM,UAAUp0M,EAAEyL,EAAEyF,EAAE5C,GAAG4C,EAAE8rF,KAAK,eAAe1uF,GAAG4C,EAAEuqM,UAAUntM,GAAG4C,EAAEsqM,QAAQE,UAAUptM,EAAE,SAAS7C,EAAEyF,EAAElR,GAAG,IAAIsO,EAAE4C,EAAEsqM,QAAQ7mM,EAAE3U,EAAEk7M,SAAStiN,EAAE+b,EAAE7b,OAAOwV,EAAEqtM,aAAartM,EAAEqtM,WAAW36L,EAAEhhB,IAAIpH,EAAE,IAAI0V,EAAEstM,cAActtM,EAAEstM,cAAc56L,EAAEhhB,GAAG,IAAIpH,IAAI0V,EAAEstM,eAAc,GAAI,IAAIl6I,EAAEpzD,EAAEqtM,WAAWn0M,EAAE8G,EAAEstM,cAAcnrM,EAAEjJ,EAAEA,EAAEgsC,OAAOkuB,EAAEluB,OAAO/5C,EAAEuG,EAAEwzC,OAAOx8B,EAAErC,GAAG3U,EAAE67M,UAAUC,KAAK97M,EAAE+7M,UAAU/7M,EAAE67M,UAAUn6I,EAAEm6I,UAAU77M,EAAE+P,MAAM6G,EAAEnG,EAAEhX,GAAGuG,EAAEiQ,SAASiE,EAAEzD,EAAEhX,GAAGqd,EAAExI,EAAEtO,GAAGA,EAAEg8M,gBAAgB1lM,EAAEtW,EAAEg9C,OAAOh9C,EAAEi9C,QAAQ,IAAIk8I,EAAEjvF,EAAElqG,EAAE+7M,UAAU/7M,EAAEg9C,OAAOh9C,EAAEi9C,QAAQj9C,EAAEi8M,iBAAiB9iB,EAAE3qL,EAAExO,EAAEk8M,iBAAiB/iB,EAAE1qL,EAAEzO,EAAEm8M,gBAAgB5gB,GAAGpC,EAAE3qL,GAAG+sL,GAAGpC,EAAE1qL,GAAG0qL,EAAE3qL,EAAE2qL,EAAE1qL,EAAEzO,EAAEmmB,MAAM3e,EAAEk6C,EAAEl6C,EAAE0zM,SAASvmM,GAAG,EAAE3U,EAAEspB,SAAS9hB,EAAE4M,EAAE5M,EAAE0zM,SAASvmM,GAAG,EAAE3U,EAAEo8M,YAAY9tM,EAAEotM,UAAU17M,EAAEk7M,SAASpiN,OAAOwV,EAAEotM,UAAUU,YAAYp8M,EAAEk7M,SAASpiN,OAAOwV,EAAEotM,UAAUU,YAAYp8M,EAAEk7M,SAASpiN,OAAOoe,EAAE5I,EAAEtO,GAAG,IAAInH,EAAEqY,EAAEwmB,QAAQjpB,EAAEzO,EAAEq8M,SAASp+M,OAAOpF,KAAKA,EAAEmH,EAAEq8M,SAASp+M,QAAQ+B,EAAE/B,OAAOpF,EAAE,SAASie,EAAE5F,EAAElR,GAAG,IAAIsO,EAAEtO,EAAEwzC,OAAO7+B,EAAEzD,EAAEorM,aAAa,GAAG1jN,EAAEsY,EAAEqrM,WAAW,GAAG76I,EAAExwD,EAAEwqM,WAAW,GAAG17M,EAAEo0M,YAAYgH,IAAI15I,EAAE0yI,YAAYiH,KAAKziN,EAAEsY,EAAEqrM,UAAU,CAAC/tM,EAAEkzD,EAAE1kB,QAAQ,EAAEvuC,EAAEizD,EAAEzkB,QAAQ,GAAGtoC,EAAEzD,EAAEorM,YAAY,CAAC9tM,EAAEF,EAAEE,EAAEC,EAAEH,EAAEG,IAAIzO,EAAEg9C,OAAOpkD,EAAE4V,GAAGF,EAAEE,EAAEmG,EAAEnG,GAAGxO,EAAEi9C,OAAOrkD,EAAE6V,GAAGH,EAAEG,EAAEkG,EAAElG,GAAG,SAASyI,EAAEhG,EAAElR,GAAG,IAAIsO,EAAEqG,EAAE/b,EAAE8oE,EAAEl6D,EAAE0J,EAAEsrM,cAAcx8M,EAAEvG,EAAEuG,EAAE67M,UAAUr0M,EAAEq0M,UAAU,GAAG77M,EAAEo0M,WAAWkH,KAAK7hN,EAAEgjN,IAAIj1M,EAAEk1M,WAAWjsM,GAAG,CAAC,IAAI0oL,EAAEn5L,EAAEg9C,OAAOx1C,EAAEw1C,OAAOnkD,EAAEmH,EAAEi9C,OAAOz1C,EAAEy1C,OAAO5oC,EAAE61F,EAAEzwG,EAAE0/L,EAAEtgM,GAAG8b,EAAEN,EAAE7F,EAAE5V,EAAEyb,EAAE5F,EAAEH,EAAEitL,GAAGlnL,EAAE7F,GAAG+sL,GAAGlnL,EAAE5F,GAAG4F,EAAE7F,EAAE6F,EAAE5F,EAAEizD,EAAEprD,EAAE6iL,EAAEtgM,GAAGqY,EAAEsrM,aAAax8M,OAAOsO,EAAE9G,EAAEk1M,SAAS/nM,EAAEnN,EAAEm1M,UAAU/jN,EAAE4O,EAAEo1M,UAAUl7I,EAAEl6D,EAAE40B,UAAUp8B,EAAE08M,SAASpuM,EAAEtO,EAAE28M,UAAUhoM,EAAE3U,EAAE48M,UAAUhkN,EAAEoH,EAAEo8B,UAAUslC,EAAE,SAAS1gD,EAAE9P,GAAG,IAAI,IAAIlR,EAAE,GAAGsO,EAAE,EAAEA,EAAE4C,EAAEgqM,SAASpiN,QAAQkH,EAAEsO,GAAG,CAACkqB,QAAQqkL,GAAG3rM,EAAEgqM,SAAS5sM,GAAGkqB,SAASC,QAAQokL,GAAG3rM,EAAEgqM,SAAS5sM,GAAGmqB,UAAUnqB,IAAI,MAAM,CAACutM,UAAUC,KAAKZ,SAASl7M,EAAEwzC,OAAOx8B,EAAEhX,GAAGg9C,OAAO9rC,EAAE8rC,OAAOC,OAAO/rC,EAAE+rC,QAAQ,SAASjmC,EAAE9F,GAAG,IAAIlR,EAAEkR,EAAEpY,OAAO,GAAG,IAAIkH,EAAE,MAAM,CAACwO,EAAEquM,GAAG3rM,EAAE,GAAGsnB,SAAS/pB,EAAEouM,GAAG3rM,EAAE,GAAGunB,UAAU,IAAI,IAAInqB,EAAE,EAAEqG,EAAE,EAAE/b,EAAE,EAAEA,EAAEoH,GAAGsO,GAAG4C,EAAEtY,GAAG4/B,QAAQ7jB,GAAGzD,EAAEtY,GAAG6/B,QAAQ7/B,IAAI,MAAM,CAAC4V,EAAEquM,GAAGvuM,EAAEtO,GAAGyO,EAAEouM,GAAGloM,EAAE3U,IAAI,SAASkqG,EAAEh5F,EAAElR,EAAEsO,GAAG,MAAM,CAACE,EAAExO,EAAEkR,GAAG,EAAEzC,EAAEH,EAAE4C,GAAG,GAAG,SAASoF,EAAEpF,EAAElR,GAAG,OAAOkR,IAAIlR,EAAE88M,GAAGvhB,GAAGrqL,IAAIqqL,GAAGv7L,GAAGkR,EAAE,EAAE6rM,GAAGz2E,GAAGtmI,EAAE,EAAEg9M,GAAGC,GAAG,SAAS/oM,EAAEhD,EAAElR,EAAEsO,GAAGA,IAAIA,EAAE4uM,IAAI,IAAIvoM,EAAE3U,EAAEsO,EAAE,IAAI4C,EAAE5C,EAAE,IAAI1V,EAAEoH,EAAEsO,EAAE,IAAI4C,EAAE5C,EAAE,IAAI,OAAOvP,KAAKqP,KAAKuG,EAAEA,EAAE/b,EAAEA,GAAG,SAASge,EAAE1F,EAAElR,EAAEsO,GAAGA,IAAIA,EAAE4uM,IAAI,IAAIvoM,EAAE3U,EAAEsO,EAAE,IAAI4C,EAAE5C,EAAE,IAAI1V,EAAEoH,EAAEsO,EAAE,IAAI4C,EAAE5C,EAAE,IAAI,OAAO,IAAIvP,KAAKiR,MAAMpX,EAAE+b,GAAG5V,KAAKgO,GAAG,SAASqH,EAAElD,EAAElR,GAAG,OAAO4W,EAAE5W,EAAE,GAAGA,EAAE,GAAGm9M,IAAIvmM,EAAE1F,EAAE,GAAGA,EAAE,GAAGisM,IAAI,SAASz7J,EAAExwC,EAAElR,GAAG,OAAOkU,EAAElU,EAAE,GAAGA,EAAE,GAAGm9M,IAAIjpM,EAAEhD,EAAE,GAAGA,EAAE,GAAGisM,IAAI,SAAS9mM,IAAIvmB,KAAKstN,KAAKC,GAAGvtN,KAAKwtN,MAAMC,GAAGztN,KAAK0tN,SAAQ,EAAGzpM,EAAE5Y,MAAMrL,KAAKwR,WAAW,SAAS+V,IAAIvnB,KAAKstN,KAAK32D,GAAG32J,KAAKwtN,MAAMG,GAAG1pM,EAAE5Y,MAAMrL,KAAKwR,WAAWxR,KAAKo0F,MAAMp0F,KAAK6qN,QAAQa,QAAQkC,cAAc,GAAG,SAASrjB,IAAIvqM,KAAK6tN,SAASC,GAAG9tN,KAAKwtN,MAAMO,GAAG/tN,KAAKguN,SAAQ,EAAG/pM,EAAE5Y,MAAMrL,KAAKwR,WAAW,SAASkV,EAAEtF,EAAElR,GAAG,IAAIsO,EAAE+G,EAAEnE,EAAEinB,SAASxjB,EAAEU,EAAEnE,EAAE+uH,gBAAgB,OAAOjgI,GAAGq7M,GAAGC,MAAMhtM,EAAE6F,EAAE7F,EAAEvd,OAAO4jB,GAAG,cAAa,IAAK,CAACrG,EAAEqG,GAAG,SAAS4B,IAAIzmB,KAAK6tN,SAASI,GAAGjuN,KAAKkuN,UAAU,GAAGjqM,EAAE5Y,MAAMrL,KAAKwR,WAAW,SAASmV,EAAEvF,EAAElR,GAAG,IAAIsO,EAAE+G,EAAEnE,EAAEinB,SAASxjB,EAAE7kB,KAAKkuN,UAAU,GAAGh+M,GAAGo7M,GAAG6C,KAAK,IAAI3vM,EAAExV,OAAO,OAAO6b,EAAErG,EAAE,GAAG08H,aAAY,EAAG,CAAC18H,EAAEA,GAAG,IAAI1V,EAAE8oE,EAAEl6D,EAAE6N,EAAEnE,EAAE+uH,gBAAgBxvH,EAAE,GAAGhX,EAAE3J,KAAKmO,OAAO,GAAGyjE,EAAEpzD,EAAErG,QAAO,SAASiJ,GAAG,OAAOzC,EAAEyC,EAAEjT,OAAOxE,MAAKuG,IAAIo7M,GAAG,IAAIxiN,EAAE,EAAEA,EAAE8oE,EAAE5oE,QAAQ6b,EAAE+sD,EAAE9oE,GAAGoyI,aAAY,EAAGpyI,IAAI,IAAIA,EAAE,EAAEA,EAAE4O,EAAE1O,QAAQ6b,EAAEnN,EAAE5O,GAAGoyI,aAAav6H,EAAEpX,KAAKmO,EAAE5O,IAAIoH,GAAGq7M,GAAGC,YAAY3mM,EAAEnN,EAAE5O,GAAGoyI,YAAYpyI,IAAI,OAAO6X,EAAE3X,OAAO,CAACqb,EAAEutD,EAAE3wE,OAAO0f,GAAG,cAAa,GAAIA,QAAG,EAAO,SAASuD,IAAID,EAAE5Y,MAAMrL,KAAKwR,WAAW,IAAI4P,EAAEqC,EAAEzjB,KAAK6sD,QAAQ7sD,MAAMA,KAAK69K,MAAM,IAAIp3J,EAAEzmB,KAAK6qN,QAAQzpM,GAAGphB,KAAKouN,MAAM,IAAI7nM,EAAEvmB,KAAK6qN,QAAQzpM,GAAGphB,KAAKquN,aAAa,KAAKruN,KAAKsuN,YAAY,GAAG,SAASn0H,EAAE/4E,EAAElR,GAAGkR,EAAEkqM,IAAItrN,KAAKquN,aAAan+M,EAAEm7M,gBAAgB,GAAGnwE,WAAW5zH,EAAEjnB,KAAKL,KAAKkQ,IAAIkR,GAAGmqM,GAAGC,KAAKlkM,EAAEjnB,KAAKL,KAAKkQ,GAAG,SAASoX,EAAElG,GAAG,IAAIlR,EAAEkR,EAAEiqM,gBAAgB,GAAG,GAAGn7M,EAAEgrI,aAAal7I,KAAKquN,aAAa,CAAC,IAAI7vM,EAAE,CAACE,EAAExO,EAAEw4B,QAAQ/pB,EAAEzO,EAAEy4B,SAAS3oC,KAAKsuN,YAAY/kN,KAAKiV,GAAG,IAAIqG,EAAE7kB,KAAKsuN,YAAYxlN,EAAE,WAAW,IAAIsY,EAAEyD,EAAE9f,QAAQyZ,GAAG4C,GAAG,GAAGyD,EAAEpb,OAAO2X,EAAE,IAAIpc,WAAW8D,EAAEkpH,KAAK,SAAS1rG,EAAElF,GAAG,IAAI,IAAIlR,EAAEkR,EAAEmrM,SAAS7jL,QAAQlqB,EAAE4C,EAAEmrM,SAAS5jL,QAAQ9jB,EAAE,EAAEA,EAAE7kB,KAAKsuN,YAAYtlN,OAAO6b,IAAI,CAAC,IAAI/b,EAAE9I,KAAKsuN,YAAYzpM,GAAG+sD,EAAE3iE,KAAK4P,IAAI3O,EAAEpH,EAAE4V,GAAGhH,EAAEzI,KAAK4P,IAAIL,EAAE1V,EAAE6V,GAAG,GAAGizD,GAAG28I,IAAI72M,GAAG62M,GAAG,OAAM,EAAG,OAAM,EAAG,SAASxnM,EAAE3F,EAAElR,GAAGlQ,KAAK6qN,QAAQzpM,EAAEphB,KAAKi0B,IAAI/jB,GAAG,SAASuX,EAAErG,GAAG,GAAGzJ,EAAEyJ,EAAEotM,IAAI,OAAOA,GAAG,IAAIt+M,EAAEyH,EAAEyJ,EAAEqtM,IAAIjwM,EAAE7G,EAAEyJ,EAAEstM,IAAI,OAAOx+M,GAAGsO,EAAEgwM,GAAGt+M,GAAGsO,EAAEtO,EAAEu+M,GAAGC,GAAG/2M,EAAEyJ,EAAEutM,IAAIA,GAAGC,GAAG,SAASvnM,EAAEjG,GAAGphB,KAAKL,QAAQ4qN,GAAG,GAAGvqN,KAAKqH,SAAS+Z,GAAG,IAAIphB,KAAKoN,GAAGyZ,IAAI7mB,KAAK6qN,QAAQ,KAAK7qN,KAAKL,QAAQopG,OAAOvlF,EAAExjB,KAAKL,QAAQopG,QAAO,GAAI/oG,KAAK+0F,MAAM85H,GAAG7uN,KAAK8uN,aAAa,GAAG9uN,KAAK+uN,YAAY,GAAG,SAASvkB,GAAGppL,GAAG,OAAOA,EAAE4tM,GAAG,SAAS5tM,EAAE6tM,GAAG,MAAM7tM,EAAE8tM,GAAG,OAAO9tM,EAAE+tM,GAAG,QAAQ,GAAG,SAAS1kB,GAAGrpL,GAAG,OAAOA,GAAG+rM,GAAG,OAAO/rM,GAAG8rM,GAAG,KAAK9rM,GAAG6rM,GAAG,OAAO7rM,GAAGo1H,GAAG,QAAQ,GAAG,SAASk0D,GAAGtpL,EAAElR,GAAG,IAAIsO,EAAEtO,EAAE26M,QAAQ,OAAOrsM,EAAEA,EAAEkY,IAAItV,GAAGA,EAAE,SAASupL,KAAKtjL,EAAEhc,MAAMrL,KAAKwR,WAAW,SAAS++E,KAAKo6G,GAAGt/L,MAAMrL,KAAKwR,WAAWxR,KAAKovN,GAAG,KAAKpvN,KAAKqvN,GAAG,KAAK,SAASxkB,KAAKF,GAAGt/L,MAAMrL,KAAKwR,WAAW,SAASw5L,KAAK3jL,EAAEhc,MAAMrL,KAAKwR,WAAWxR,KAAKsvN,OAAO,KAAKtvN,KAAKuvN,OAAO,KAAK,SAASngL,KAAKu7J,GAAGt/L,MAAMrL,KAAKwR,WAAW,SAASu5L,KAAKJ,GAAGt/L,MAAMrL,KAAKwR,WAAW,SAASy5L,KAAK5jL,EAAEhc,MAAMrL,KAAKwR,WAAWxR,KAAKwvN,OAAM,EAAGxvN,KAAKyzE,SAAQ,EAAGzzE,KAAKsvN,OAAO,KAAKtvN,KAAKuvN,OAAO,KAAKvvN,KAAKgkC,MAAM,EAAE,SAASmnK,GAAG/pL,EAAElR,GAAG,OAAOA,EAAEA,GAAG,GAAGA,EAAEu/M,YAAYjsM,EAAEtT,EAAEu/M,YAAYtkB,GAAG9jM,SAASwnL,QAAQ,IAAIuc,GAAGhqL,EAAElR,GAAG,SAASk7L,GAAGhqL,EAAElR,GAAGlQ,KAAKL,QAAQ4qN,GAAG,GAAGpf,GAAG9jM,SAAS6I,GAAG,IAAIlQ,KAAKL,QAAQmrN,YAAY9qN,KAAKL,QAAQmrN,aAAa1pM,EAAEphB,KAAKiN,SAAS,GAAGjN,KAAK0rN,QAAQ,GAAG1rN,KAAKyvN,YAAY,GAAGzvN,KAAK0vN,YAAY,GAAG1vN,KAAK4nC,QAAQxmB,EAAEphB,KAAKsyB,MAAM9K,EAAExnB,MAAMA,KAAK2vN,YAAY,IAAI5oM,EAAE/mB,KAAKA,KAAKL,QAAQgwN,aAAappL,GAAGvmC,MAAK,GAAI+I,EAAE/I,KAAKL,QAAQ8vN,aAAY,SAASruM,GAAG,IAAIlR,EAAElQ,KAAKO,IAAI,IAAI6gB,EAAE,GAAGA,EAAE,KAAKA,EAAE,IAAIlR,EAAE0/M,cAAcxuM,EAAE,IAAIA,EAAE,IAAIlR,EAAE2/M,eAAezuM,EAAE,MAAKphB,MAAM,SAASumC,GAAGnlB,EAAElR,GAAG,IAAgC2U,EAA5BrG,EAAE4C,EAAEwmB,QAAWppB,EAAE2W,QAAapsB,EAAEqY,EAAEzhB,QAAQmwN,UAAS,SAAShnN,EAAE8oE,GAAG/sD,EAAEV,EAAE3F,EAAE2W,MAAMy8C,GAAG1hE,GAAGkR,EAAEsuM,YAAY7qM,GAAGrG,EAAE2W,MAAMtQ,GAAGrG,EAAE2W,MAAMtQ,GAAG/b,GAAG0V,EAAE2W,MAAMtQ,GAAGzD,EAAEsuM,YAAY7qM,IAAI,MAAK3U,IAAIkR,EAAEsuM,YAAY,KAAK,SAASrkB,GAAGjqL,EAAElR,GAAG,IAAIsO,EAAEozD,EAAEoyC,YAAY,SAASxlG,EAAEylG,UAAU7iG,GAAE,GAAG,GAAI5C,EAAEuxM,QAAQ7/M,EAAEA,EAAE/B,OAAO41G,cAAcvlG,GAAG,IAAI+rM,GAAGE,GAAG,CAAC,GAAG,SAAS,MAAM,KAAK,KAAK,KAAKvf,GAAGt5H,EAAEn+D,cAAc,OAAO+2M,GAAG,WAAWuC,GAAG99M,KAAK8O,MAAM0tL,GAAGx8L,KAAK4P,IAAImtM,GAAGt5M,KAAKO,IAAIs3M,GAAG,mBAAmB/9M,OAAOQ,OAAO,SAASoU,GAAG,GAAGA,IAAIT,GAAG,OAAOS,EAAE,MAAM,IAAI5Y,UAAU,8CAA8C,IAAI,IAAI0H,EAAE1D,OAAO4U,GAAG5C,EAAE,EAAEA,EAAEhN,UAAUxI,OAAOwV,IAAI,CAAC,IAAIqG,EAAErT,UAAUgN,GAAG,GAAGqG,IAAIlE,GAAG,OAAOkE,EAAE,IAAI,IAAI/b,KAAK+b,EAAEA,EAAErN,eAAe1O,KAAKoH,EAAEpH,GAAG+b,EAAE/b,IAAI,OAAOoH,GAAG1D,OAAOQ,OAAO,IAAIgjN,GAAGzrM,GAAE,SAASnD,EAAElR,EAAEsO,GAAG,IAAI,IAAIqG,EAAErY,OAAOqC,KAAKqB,GAAGpH,EAAE,EAAEA,EAAE+b,EAAE7b,UAAUwV,GAAGA,GAAG4C,EAAEyD,EAAE/b,MAAM6X,KAAKS,EAAEyD,EAAE/b,IAAIoH,EAAE2U,EAAE/b,KAAKA,IAAI,OAAOsY,IAAG,SAAS,iBAAiB6uM,GAAG1rM,GAAE,SAASnD,EAAElR,GAAG,OAAO8/M,GAAG5uM,EAAElR,GAAE,KAAK,QAAQ,iBAAiBw6M,GAAG,EAAEwF,GAAG,wCAAwC/E,GAAG,iBAAiBriN,EAAEmiN,GAAG9mM,EAAErb,EAAE,kBAAkB6X,EAAEuqM,GAAGC,IAAI+E,GAAGh9M,KAAKI,UAAUC,WAAWo5M,GAAG,GAAGrB,GAAG,EAAE6C,GAAG,EAAE5C,GAAG,EAAEC,GAAG,EAAEwB,GAAG,EAAEC,GAAG,EAAEz2E,GAAG,EAAE02E,GAAG,EAAEC,GAAG,GAAGgD,GAAGlD,GAAGz2E,GAAG45E,GAAGlD,GAAGC,GAAGkD,GAAGF,GAAGC,GAAGhD,GAAG,CAAC,IAAI,KAAKC,GAAG,CAAC,UAAU,WAAWppM,EAAExc,UAAU,CAAColD,QAAQ,aAAayP,KAAK,WAAWt8D,KAAKstN,MAAMz7M,EAAE7R,KAAK4nC,QAAQ5nC,KAAKstN,KAAKttN,KAAK+qN,YAAY/qN,KAAK6tN,UAAUh8M,EAAE7R,KAAKmO,OAAOnO,KAAK6tN,SAAS7tN,KAAK+qN,YAAY/qN,KAAKwtN,OAAO37M,EAAEoV,EAAEjnB,KAAK4nC,SAAS5nC,KAAKwtN,MAAMxtN,KAAK+qN,aAAa96I,QAAQ,WAAWjwE,KAAKstN,MAAMxoM,EAAE9kB,KAAK4nC,QAAQ5nC,KAAKstN,KAAKttN,KAAK+qN,YAAY/qN,KAAK6tN,UAAU/oM,EAAE9kB,KAAKmO,OAAOnO,KAAK6tN,SAAS7tN,KAAK+qN,YAAY/qN,KAAKwtN,OAAO1oM,EAAEmC,EAAEjnB,KAAK4nC,SAAS5nC,KAAKwtN,MAAMxtN,KAAK+qN,cAAc,IAAIuF,GAAG,CAACxuD,UAAUwpD,GAAGiF,UAAUpC,GAAGpsD,QAAQwpD,IAAIgC,GAAG,YAAYE,GAAG,oBAAoB/tM,EAAE6G,EAAEtC,EAAE,CAAC4oC,QAAQ,SAASzrC,GAAG,IAAIlR,EAAEogN,GAAGlvM,EAAEza,MAAMuJ,EAAEo7M,IAAI,IAAIlqM,EAAE4nG,SAAShpH,KAAK0tN,SAAQ,GAAIx9M,EAAEi+M,IAAI,IAAI/sM,EAAEs8F,QAAQxtG,EAAEq7M,IAAIvrN,KAAK0tN,UAAUx9M,EAAEq7M,KAAKvrN,KAAK0tN,SAAQ,GAAI1tN,KAAK8U,SAAS9U,KAAK6qN,QAAQ36M,EAAE,CAACk7M,SAAS,CAAChqM,GAAGiqM,gBAAgB,CAACjqM,GAAGovM,YAAY,QAAQjE,SAASnrM,QAAQ,IAAIqvM,GAAG,CAACz9J,YAAYs4J,GAAGr4J,YAAYk7J,GAAGj7J,UAAUq4J,GAAGmF,cAAclF,GAAGp4J,WAAWo4J,IAAImF,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAUh6D,GAAG,cAAcg3D,GAAG,sCAAsC7kN,EAAE8nN,iBAAiB9nN,EAAE+nN,eAAel6D,GAAG,gBAAgBg3D,GAAG,6CAA6CjuM,EAAE6H,EAAEtD,EAAE,CAAC4oC,QAAQ,SAASzrC,GAAG,IAAIlR,EAAElQ,KAAKo0F,MAAM51E,GAAE,EAAGqG,EAAEzD,EAAEza,KAAKR,cAAcuL,QAAQ,KAAK,IAAI5I,EAAE2nN,GAAG5rM,GAAG+sD,EAAE++I,GAAGvvM,EAAEovM,cAAcpvM,EAAEovM,YAAY94M,EAAE,SAASk6D,EAAEjxD,EAAEiG,EAAE1W,EAAEkR,EAAE0vM,UAAU,aAAahoN,EAAEwiN,KAAK,IAAIlqM,EAAE4nG,QAAQtxG,GAAGiJ,EAAE,IAAIzQ,EAAE3G,KAAK6X,GAAGT,EAAEzQ,EAAElH,OAAO,GAAGF,GAAGyiN,GAAGC,MAAMhtM,GAAE,GAAImC,EAAE,IAAIzQ,EAAEyQ,GAAGS,EAAEphB,KAAK8U,SAAS9U,KAAK6qN,QAAQ/hN,EAAE,CAACsiN,SAASl7M,EAAEm7M,gBAAgB,CAACjqM,GAAGovM,YAAY5+I,EAAE26I,SAASnrM,IAAI5C,GAAGtO,EAAEzG,OAAOkX,EAAE,OAAO,IAAIowM,GAAG,CAACn+J,WAAW04J,GAAGz4J,UAAUs7J,GAAGr7J,SAASy4J,GAAGyF,YAAYxF,IAAIsC,GAAG,aAAaC,GAAG,4CAA4CruM,EAAE6qL,EAAEtmL,EAAE,CAAC4oC,QAAQ,SAASzrC,GAAG,IAAIlR,EAAE6gN,GAAG3vM,EAAEza,MAAM,GAAGuJ,IAAIo7M,KAAKtrN,KAAKguN,SAAQ,GAAIhuN,KAAKguN,QAAQ,CAAC,IAAIxvM,EAAEkI,EAAErmB,KAAKL,KAAKohB,EAAElR,GAAGA,GAAGq7M,GAAGC,KAAKhtM,EAAE,GAAGxV,OAAOwV,EAAE,GAAGxV,QAAQ,IAAIhJ,KAAKguN,SAAQ,GAAIhuN,KAAK8U,SAAS9U,KAAK6qN,QAAQ36M,EAAE,CAACk7M,SAAS5sM,EAAE,GAAG6sM,gBAAgB7sM,EAAE,GAAGgyM,YAAY,QAAQjE,SAASnrM,QAAQ,IAAI6vM,GAAG,CAACr+J,WAAW04J,GAAGz4J,UAAUs7J,GAAGr7J,SAASy4J,GAAGyF,YAAYxF,IAAIyC,GAAG,4CAA4CvuM,EAAE+G,EAAExC,EAAE,CAAC4oC,QAAQ,SAASzrC,GAAG,IAAIlR,EAAE+gN,GAAG7vM,EAAEza,MAAM6X,EAAEmI,EAAEtmB,KAAKL,KAAKohB,EAAElR,GAAGsO,GAAGxe,KAAK8U,SAAS9U,KAAK6qN,QAAQ36M,EAAE,CAACk7M,SAAS5sM,EAAE,GAAG6sM,gBAAgB7sM,EAAE,GAAGgyM,YAAY,QAAQjE,SAASnrM,OAAO,IAAI4wG,GAAG,KAAKu8F,GAAG,GAAG7uM,EAAEwE,EAAED,EAAE,CAAC4oC,QAAQ,SAASzrC,EAAElR,EAAEsO,GAAG,IAAIqG,EAAE,SAASrG,EAAEgyM,YAAY1nN,EAAE,SAAS0V,EAAEgyM,YAAY,KAAK1nN,GAAG0V,EAAE0yM,oBAAoB1yM,EAAE0yM,mBAAmBC,kBAAkB,CAAC,GAAGtsM,EAAEs1E,EAAE95F,KAAKL,KAAKkQ,EAAEsO,QAAQ,GAAG1V,GAAGwd,EAAEjmB,KAAKL,KAAKwe,GAAG,OAAOxe,KAAK8U,SAASsM,EAAElR,EAAEsO,KAAKyxD,QAAQ,WAAWjwE,KAAK69K,MAAM5tG,UAAUjwE,KAAKouN,MAAMn+I,aAAa,IAAIsrC,GAAGp3F,EAAE+mL,GAAG/1K,MAAM,eAAei8L,GAAG71G,KAAK56F,EAAEiuM,GAAG,OAAOD,GAAG,eAAeH,GAAG,OAAOC,GAAG,QAAQC,GAAG,QAAQ2C,GAAG,WAAW,IAAID,GAAG,OAAM,EAAG,IAAIhwM,EAAE,GAAGlR,EAAEpH,EAAEwoN,KAAKxoN,EAAEwoN,IAAIC,SAAS,MAAM,CAAC,OAAO,eAAe,QAAQ,QAAQ,cAAc,QAAQvrN,SAAQ,SAASwY,GAAG4C,EAAE5C,IAAItO,GAAGpH,EAAEwoN,IAAIC,SAAS,eAAe/yM,MAAK4C,EAA/L,GAAoM2F,EAAEtf,UAAU,CAACwsB,IAAI,SAAS7S,GAAG,WAAWA,IAAIA,EAAEphB,KAAKwxN,WAAWJ,IAAIpxN,KAAK6qN,QAAQjjL,QAAQzS,OAAOk8L,GAAGjwM,KAAKphB,KAAK6qN,QAAQjjL,QAAQzS,MAAMomF,IAAIn6F,GAAGphB,KAAKyxN,QAAQrwM,EAAEjb,cAAc8J,QAAQ6iC,OAAO,WAAW9yC,KAAKi0B,IAAIj0B,KAAK6qN,QAAQlrN,QAAQgwN,cAAc6B,QAAQ,WAAW,IAAIpwM,EAAE,GAAG,OAAOrY,EAAE/I,KAAK6qN,QAAQ4E,aAAY,SAASv/M,GAAGpP,EAAEoP,EAAEvQ,QAAQopG,OAAO,CAAC74F,MAAMkR,EAAEA,EAAEngB,OAAOiP,EAAEwhN,sBAAqBjqM,EAAErG,EAAEpP,KAAK,OAAO2/M,gBAAgB,SAASvwM,GAAG,IAAIlR,EAAEkR,EAAEmrM,SAAS/tM,EAAE4C,EAAE8qM,gBAAgB,IAAGlsN,KAAK6qN,QAAQa,QAAQ9sG,UAAxB,CAAiE,IAAI/5F,EAAE7kB,KAAKyxN,QAAQ3oN,EAAE6O,EAAEkN,EAAE2pM,MAAM6C,GAAG7C,IAAI58I,EAAEj6D,EAAEkN,EAAE6pM,MAAM2C,GAAG3C,IAAIh3M,EAAEC,EAAEkN,EAAE4pM,MAAM4C,GAAG5C,IAAI,GAAG3lN,EAAE,CAAC,IAAI6X,EAAE,IAAIS,EAAEgqM,SAASpiN,OAAOW,EAAEyX,EAAEjB,SAAS,EAAEkpL,EAAEjoL,EAAE6qM,UAAU,IAAI,GAAGtrM,GAAGhX,GAAG0/L,EAAE,OAAO,OAAO3xL,GAAGk6D,OAAE,EAAO9oE,GAAG8oE,GAAGpzD,EAAE2xM,IAAIz4M,GAAG8G,EAAE4xM,GAAGpwN,KAAK4xN,WAAW1hN,QAAG,EAA9OA,EAAE4uG,kBAAoP8yG,WAAW,SAASxwM,GAAGphB,KAAK6qN,QAAQa,QAAQ9sG,WAAU,EAAGx9F,EAAE09F,mBAAmB,IAAI+vG,GAAG,EAAEM,GAAG,EAAED,GAAG,EAAED,GAAG,EAAE4C,GAAG5C,GAAGD,GAAG,GAAG3nM,EAAE5f,UAAU,CAACJ,SAAS,GAAG4sB,IAAI,SAAS7S,GAAG,OAAOmpM,GAAGvqN,KAAKL,QAAQyhB,GAAGphB,KAAK6qN,SAAS7qN,KAAK6qN,QAAQ8E,YAAY78K,SAAS9yC,MAAM4vN,cAAc,SAASxuM,GAAG,GAAGioL,EAAEjoL,EAAE,gBAAgBphB,MAAM,OAAOA,KAAK,IAAIkQ,EAAElQ,KAAK8uN,aAAa,OAAO1tM,EAAEspL,GAAGtpL,EAAEphB,MAAMkQ,EAAEkR,EAAEhU,MAAM8C,EAAEkR,EAAEhU,IAAIgU,EAAEA,EAAEwuM,cAAc5vN,OAAOA,MAAM8xN,kBAAkB,SAAS1wM,GAAG,OAAOioL,EAAEjoL,EAAE,oBAAoBphB,QAAYohB,EAAEspL,GAAGtpL,EAAEphB,aAAaA,KAAK8uN,aAAa1tM,EAAEhU,KAA9CpN,MAAyD6vN,eAAe,SAASzuM,GAAG,GAAGioL,EAAEjoL,EAAE,iBAAiBphB,MAAM,OAAOA,KAAK,IAAIkQ,EAAElQ,KAAK+uN,YAAY,OAAO3tM,EAAEspL,GAAGtpL,EAAEphB,OAAO,IAAI4mB,EAAE1W,EAAEkR,KAAKlR,EAAE3G,KAAK6X,GAAGA,EAAEyuM,eAAe7vN,OAAOA,MAAM+xN,mBAAmB,SAAS3wM,GAAG,GAAGioL,EAAEjoL,EAAE,qBAAqBphB,MAAM,OAAOA,KAAKohB,EAAEspL,GAAGtpL,EAAEphB,MAAM,IAAIkQ,EAAE0W,EAAE5mB,KAAK+uN,YAAY3tM,GAAG,OAAOlR,GAAG,GAAGlQ,KAAK+uN,YAAYtlN,OAAOyG,EAAE,GAAGlQ,MAAMgyN,mBAAmB,WAAW,OAAOhyN,KAAK+uN,YAAY/lN,OAAO,GAAGipN,iBAAiB,SAAS7wM,GAAG,QAAQphB,KAAK8uN,aAAa1tM,EAAEhU,KAAK8/F,KAAK,SAAS9rF,GAAG,SAASlR,EAAEA,GAAGsO,EAAEqsM,QAAQ39G,KAAKh9F,EAAEkR,GAAG,IAAI5C,EAAExe,KAAK6kB,EAAE7kB,KAAK+0F,MAAMlwE,EAAEoqM,IAAI/+M,EAAEsO,EAAE7e,QAAQ6xC,MAAMg5J,GAAG3lL,IAAI3U,EAAEsO,EAAE7e,QAAQ6xC,OAAOpwB,EAAE8wM,iBAAiBhiN,EAAEkR,EAAE8wM,iBAAiBrtM,GAAGoqM,IAAI/+M,EAAEsO,EAAE7e,QAAQ6xC,MAAMg5J,GAAG3lL,KAAKstM,QAAQ,SAAS/wM,GAAG,GAAGphB,KAAKoyN,UAAU,OAAOpyN,KAAKktG,KAAK9rF,GAAGphB,KAAK+0F,MAAM,IAAIq9H,QAAQ,WAAW,IAAI,IAAIhxM,EAAE,EAAEA,EAAEphB,KAAK+uN,YAAY/lN,QAAQ,CAAC,KAAKhJ,KAAK+uN,YAAY3tM,GAAG2zE,OAAO,GAAG85H,KAAK,OAAM,EAAGztM,IAAI,OAAM,GAAIuqM,UAAU,SAASvqM,GAAG,IAAIlR,EAAEq6M,GAAG,GAAGnpM,GAAG,IAAItgB,EAAEd,KAAKL,QAAQopG,OAAO,CAAC/oG,KAAKkQ,IAAI,OAAOlQ,KAAK06C,aAAa16C,KAAK+0F,MAAM,IAAI/0F,KAAK+0F,OAAO88H,GAAG7C,GAAG,MAAMhvN,KAAK+0F,MAAM85H,IAAI7uN,KAAK+0F,MAAM/0F,KAAKwP,QAAQU,GAAGlQ,KAAK+0F,OAAOo6H,GAAGD,GAAGD,GAAGD,KAAKhvN,KAAKmyN,QAAQjiN,IAAIV,QAAQ,SAAS4R,KAAKswM,eAAe,aAAah3K,MAAM,cAAch7B,EAAEirL,GAAGtjL,EAAE,CAAChgB,SAAS,CAAC+jN,SAAS,GAAGiH,SAAS,SAASjxM,GAAG,IAAIlR,EAAElQ,KAAKL,QAAQyrN,SAAS,OAAO,IAAIl7M,GAAGkR,EAAEgqM,SAASpiN,SAASkH,GAAGV,QAAQ,SAAS4R,GAAG,IAAIlR,EAAElQ,KAAK+0F,MAAMv2E,EAAE4C,EAAEkjM,UAAUz/L,EAAE3U,GAAGi/M,GAAGD,IAAIpmN,EAAE9I,KAAKqyN,SAASjxM,GAAG,OAAOyD,IAAIrG,EAAEgtM,KAAK1iN,GAAGoH,EAAE8+M,GAAGnqM,GAAG/b,EAAE0V,EAAE+sM,GAAGr7M,EAAE++M,GAAG/+M,EAAEi/M,GAAGj/M,EAAEg/M,GAAGC,GAAG,MAAMzvM,EAAE6wE,GAAGo6G,GAAG,CAACtjM,SAAS,CAACmqC,MAAM,MAAMyxF,UAAU,GAAGmoF,SAAS,EAAE9+K,UAAU+jL,IAAIqB,eAAe,WAAW,IAAItwM,EAAEphB,KAAKL,QAAQ2sC,UAAUp8B,EAAE,GAAG,OAAOkR,EAAE+uM,IAAIjgN,EAAE3G,KAAKmlN,IAAIttM,EAAEgvM,IAAIlgN,EAAE3G,KAAKklN,IAAIv+M,GAAGoiN,cAAc,SAASlxM,GAAG,IAAIlR,EAAElQ,KAAKL,QAAQ6e,GAAE,EAAGqG,EAAEzD,EAAEjB,SAASrX,EAAEsY,EAAEkrB,UAAUslC,EAAExwD,EAAE8rC,OAAOx1C,EAAE0J,EAAE+rC,OAAO,OAAOrkD,EAAEoH,EAAEo8B,YAAYp8B,EAAEo8B,UAAU6jL,IAAIrnN,EAAE,IAAI8oE,EAAEo7I,GAAGp7I,EAAE,EAAEq7I,GAAGz2E,GAAGh4H,EAAEozD,GAAG5xE,KAAKovN,GAAGvqM,EAAE5V,KAAK4P,IAAIuC,EAAE8rC,UAAUpkD,EAAE,IAAI4O,EAAEs1M,GAAGt1M,EAAE,EAAEw1M,GAAGC,GAAG3uM,EAAE9G,GAAG1X,KAAKqvN,GAAGxqM,EAAE5V,KAAK4P,IAAIuC,EAAE+rC,UAAU/rC,EAAEkrB,UAAUxjC,EAAE0V,GAAGqG,EAAE3U,EAAE+yH,WAAWn6H,EAAEoH,EAAEo8B,WAAW+lL,SAAS,SAASjxM,GAAG,OAAOupL,GAAGljM,UAAU4qN,SAAShyN,KAAKL,KAAKohB,KAAKphB,KAAK+0F,MAAMo6H,MAAMnvN,KAAK+0F,MAAMo6H,KAAKnvN,KAAKsyN,cAAclxM,KAAK8rF,KAAK,SAAS9rF,GAAGphB,KAAKovN,GAAGhuM,EAAE8rC,OAAOltD,KAAKqvN,GAAGjuM,EAAE+rC,OAAO,IAAIj9C,EAAEu6L,GAAGrpL,EAAEkrB,WAAWp8B,IAAIkR,EAAE8wM,gBAAgBlyN,KAAKL,QAAQ6xC,MAAMthC,GAAGlQ,KAAKi9F,OAAOiQ,KAAK7sG,KAAKL,KAAKohB,MAAM1B,EAAEmrL,GAAGF,GAAG,CAACtjM,SAAS,CAACmqC,MAAM,QAAQyxF,UAAU,EAAEmoF,SAAS,GAAGsG,eAAe,WAAW,MAAM,CAAClD,KAAK6D,SAAS,SAASjxM,GAAG,OAAOphB,KAAKi9F,OAAOo1H,SAAShyN,KAAKL,KAAKohB,KAAKnS,KAAK4P,IAAIuC,EAAEiV,MAAM,GAAGr2B,KAAKL,QAAQsjI,WAAWjjI,KAAK+0F,MAAMo6H,KAAKjiH,KAAK,SAAS9rF,GAAG,GAAG,IAAIA,EAAEiV,MAAM,CAAC,IAAInmB,EAAEkR,EAAEiV,MAAM,EAAE,KAAK,MAAMjV,EAAE8wM,gBAAgBlyN,KAAKL,QAAQ6xC,MAAMthC,EAAElQ,KAAKi9F,OAAOiQ,KAAK7sG,KAAKL,KAAKohB,MAAM1B,EAAEsrL,GAAG3jL,EAAE,CAAChgB,SAAS,CAACmqC,MAAM,QAAQ45K,SAAS,EAAE1+H,KAAK,IAAIu2C,UAAU,GAAGyuF,eAAe,WAAW,MAAM,CAAC9C,KAAKp/M,QAAQ,SAAS4R,GAAG,IAAIlR,EAAElQ,KAAKL,QAAQ6e,EAAE4C,EAAEgqM,SAASpiN,SAASkH,EAAEk7M,SAASvmM,EAAEzD,EAAEjB,SAASjQ,EAAE+yH,UAAUn6H,EAAEsY,EAAE6qM,UAAU/7M,EAAEw8E,KAAK,GAAG1sF,KAAKuvN,OAAOnuM,GAAGyD,IAAIrG,GAAG4C,EAAEkjM,WAAWiH,GAAGC,MAAM1iN,EAAE9I,KAAK06C,aAAa,GAAGt5B,EAAEkjM,UAAUgH,GAAGtrN,KAAK06C,QAAQ16C,KAAKsvN,OAAO3lN,GAAE,WAAW3J,KAAK+0F,MAAM88H,GAAG7xN,KAAKmyN,YAAWjiN,EAAEw8E,KAAK1sF,WAAW,GAAGohB,EAAEkjM,UAAUiH,GAAG,OAAOsG,GAAG,OAAO,IAAIn3K,MAAM,WAAWrhC,aAAarZ,KAAKsvN,SAASpiH,KAAK,SAAS9rF,GAAGphB,KAAK+0F,QAAQ88H,KAAKzwM,GAAGA,EAAEkjM,UAAUiH,GAAGvrN,KAAK6qN,QAAQ39G,KAAKltG,KAAKL,QAAQ6xC,MAAM,KAAKpwB,IAAIphB,KAAKuvN,OAAOxD,UAAUC,KAAKhsN,KAAK6qN,QAAQ39G,KAAKltG,KAAKL,QAAQ6xC,MAAMxxC,KAAKuvN,aAAa7vM,EAAE0vB,GAAGu7J,GAAG,CAACtjM,SAAS,CAACmqC,MAAM,SAASyxF,UAAU,EAAEmoF,SAAS,GAAGsG,eAAe,WAAW,MAAM,CAAClD,KAAK6D,SAAS,SAASjxM,GAAG,OAAOphB,KAAKi9F,OAAOo1H,SAAShyN,KAAKL,KAAKohB,KAAKnS,KAAK4P,IAAIuC,EAAEoY,UAAUx5B,KAAKL,QAAQsjI,WAAWjjI,KAAK+0F,MAAMo6H,OAAOzvM,EAAEqrL,GAAGJ,GAAG,CAACtjM,SAAS,CAACmqC,MAAM,QAAQyxF,UAAU,GAAG2pF,SAAS,GAAGtgL,UAAU6jL,GAAGC,GAAGhF,SAAS,GAAGsG,eAAe,WAAW,OAAOnhI,GAAG9oF,UAAUiqN,eAAerxN,KAAKL,OAAOqyN,SAAS,SAASjxM,GAAG,IAAIlR,EAAEsO,EAAExe,KAAKL,QAAQ2sC,UAAU,OAAO9tB,GAAG2xM,GAAGC,IAAIlgN,EAAEkR,EAAEirM,gBAAgB7tM,EAAE2xM,GAAGjgN,EAAEkR,EAAE+qM,iBAAiB3tM,EAAE4xM,KAAKlgN,EAAEkR,EAAEgrM,kBAAkBpsN,KAAKi9F,OAAOo1H,SAAShyN,KAAKL,KAAKohB,IAAI5C,EAAE4C,EAAE8qM,iBAAiB9qM,EAAEjB,SAASngB,KAAKL,QAAQsjI,WAAW7hH,EAAEkrM,aAAatsN,KAAKL,QAAQyrN,UAAU3f,GAAGv7L,GAAGlQ,KAAKL,QAAQitN,UAAUxrM,EAAEkjM,UAAUiH,IAAIr+G,KAAK,SAAS9rF,GAAG,IAAIlR,EAAEu6L,GAAGrpL,EAAE8qM,iBAAiBh8M,GAAGlQ,KAAK6qN,QAAQ39G,KAAKltG,KAAKL,QAAQ6xC,MAAMthC,EAAEkR,GAAGphB,KAAK6qN,QAAQ39G,KAAKltG,KAAKL,QAAQ6xC,MAAMpwB,MAAM1B,EAAEurL,GAAG5jL,EAAE,CAAChgB,SAAS,CAACmqC,MAAM,MAAM45K,SAAS,EAAEmH,KAAK,EAAEjmI,SAAS,IAAII,KAAK,IAAIu2C,UAAU,EAAEuvF,aAAa,IAAId,eAAe,WAAW,MAAM,CAAC/C,KAAKn/M,QAAQ,SAAS4R,GAAG,IAAIlR,EAAElQ,KAAKL,QAAQ6e,EAAE4C,EAAEgqM,SAASpiN,SAASkH,EAAEk7M,SAASvmM,EAAEzD,EAAEjB,SAASjQ,EAAE+yH,UAAUn6H,EAAEsY,EAAE6qM,UAAU/7M,EAAEw8E,KAAK,GAAG1sF,KAAK06C,QAAQt5B,EAAEkjM,UAAUgH,IAAI,IAAItrN,KAAKgkC,MAAM,OAAOhkC,KAAKyyN,cAAc,GAAG5tM,GAAG/b,GAAG0V,EAAE,CAAC,GAAG4C,EAAEkjM,WAAWiH,GAAG,OAAOvrN,KAAKyyN,cAAc,IAAI7gJ,GAAG5xE,KAAKwvN,OAAOpuM,EAAE2qM,UAAU/rN,KAAKwvN,MAAMt/M,EAAEo8E,SAAS50E,GAAG1X,KAAKyzE,SAASrvD,EAAEpkB,KAAKyzE,QAAQryD,EAAEsiC,QAAQxzC,EAAEsiN,aAAwG,GAA3FxyN,KAAKwvN,MAAMpuM,EAAE2qM,UAAU/rN,KAAKyzE,QAAQryD,EAAEsiC,OAAOhsC,GAAGk6D,EAAE5xE,KAAKgkC,OAAO,EAAEhkC,KAAKgkC,MAAM,EAAEhkC,KAAKuvN,OAAOnuM,EAAK,IAAIphB,KAAKgkC,MAAM9zB,EAAEqiN,KAAK,OAAOvyN,KAAKgyN,sBAAsBhyN,KAAKsvN,OAAO3lN,GAAE,WAAW3J,KAAK+0F,MAAM88H,GAAG7xN,KAAKmyN,YAAWjiN,EAAEo8E,SAAStsF,MAAMmvN,IAAI0C,GAAG,OAAO,IAAIY,YAAY,WAAW,OAAOzyN,KAAKsvN,OAAO3lN,GAAE,WAAW3J,KAAK+0F,MAAM,KAAI/0F,KAAKL,QAAQ2sF,SAAStsF,MAAM,IAAI06C,MAAM,WAAWrhC,aAAarZ,KAAKsvN,SAASpiH,KAAK,WAAWltG,KAAK+0F,OAAO88H,KAAK7xN,KAAKuvN,OAAOmD,SAAS1yN,KAAKgkC,MAAMhkC,KAAK6qN,QAAQ39G,KAAKltG,KAAKL,QAAQ6xC,MAAMxxC,KAAKuvN,YAAYpkB,GAAGnjM,QAAQ,QAAQmjM,GAAG9jM,SAAS,CAACsrN,WAAU,EAAGhD,YAAY,UAAU5mH,QAAO,EAAG+hH,YAAY,KAAKE,WAAW,KAAKn8B,OAAO,CAAC,CAACz/I,GAAG,CAAC25D,QAAO,IAAK,CAAC8hG,GAAG,CAAC9hG,QAAO,GAAI,CAAC,WAAW,CAACgiG,GAAG,CAACz+J,UAAU6jL,KAAK,CAAC5/H,GAAG,CAACjkD,UAAU6jL,IAAI,CAAC,UAAU,CAACllB,IAAI,CAACA,GAAG,CAACz5J,MAAM,YAAY+gL,KAAK,GAAG,CAAC,QAAQ,CAACvnB,KAAK8kB,SAAS,CAAC8C,WAAW,OAAOC,YAAY,OAAOC,aAAa,OAAOC,eAAe,OAAOC,SAAS,OAAOC,kBAAkB,kBAAkB7nB,GAAG3jM,UAAU,CAACwsB,IAAI,SAAS7S,GAAG,OAAOmpM,GAAGvqN,KAAKL,QAAQyhB,GAAGA,EAAEuuM,aAAa3vN,KAAK2vN,YAAY78K,SAAS1xB,EAAE0pM,cAAc9qN,KAAKsyB,MAAM29C,UAAUjwE,KAAKsyB,MAAMnkB,OAAOiT,EAAE0pM,YAAY9qN,KAAKsyB,MAAMgqC,QAAQt8D,MAAMquC,KAAK,SAASjtB,GAAGphB,KAAK0rN,QAAQ11E,QAAQ50H,EAAE,EAAE,GAAGuqM,UAAU,SAASvqM,GAAG,IAAIlR,EAAElQ,KAAK0rN,QAAQ,IAAIx7M,EAAE8lI,QAAQ,CAACh2I,KAAK2vN,YAAYgC,gBAAgBvwM,GAAG,IAAI5C,EAAEqG,EAAE7kB,KAAKyvN,YAAY3mN,EAAEoH,EAAEgjN,gBAAgBpqN,GAAGA,GAAGA,EAAEisF,MAAM88H,MAAM/oN,EAAEoH,EAAEgjN,cAAc,MAAM,IAAI,IAAIthJ,EAAE,EAAEA,EAAE/sD,EAAE7b,QAAQwV,EAAEqG,EAAE+sD,GAAG,IAAI1hE,EAAE8lI,SAASltI,GAAG0V,GAAG1V,IAAI0V,EAAEyzM,iBAAiBnpN,GAAG0V,EAAEk8B,QAAQl8B,EAAEmtM,UAAUvqM,IAAItY,GAAG0V,EAAEu2E,OAAOo6H,GAAGD,GAAGD,MAAMnmN,EAAEoH,EAAEgjN,cAAc10M,GAAGozD,MAAMl7C,IAAI,SAAStV,GAAG,GAAGA,aAAaiG,EAAE,OAAOjG,EAAE,IAAI,IAAIlR,EAAElQ,KAAKyvN,YAAYjxM,EAAE,EAAEA,EAAEtO,EAAElH,OAAOwV,IAAI,GAAGtO,EAAEsO,GAAG7e,QAAQ6xC,OAAOpwB,EAAE,OAAOlR,EAAEsO,GAAG,OAAO,MAAMje,IAAI,SAAS6gB,GAAG,GAAGioL,EAAEjoL,EAAE,MAAMphB,MAAM,OAAOA,KAAK,IAAIkQ,EAAElQ,KAAK02B,IAAItV,EAAEzhB,QAAQ6xC,OAAO,OAAOthC,GAAGlQ,KAAKgT,OAAO9C,GAAGlQ,KAAKyvN,YAAYlmN,KAAK6X,GAAGA,EAAEypM,QAAQ7qN,KAAKA,KAAK2vN,YAAY78K,SAAS1xB,GAAGpO,OAAO,SAASoO,GAAG,GAAGioL,EAAEjoL,EAAE,SAASphB,MAAM,OAAOA,KAAK,GAAGohB,EAAEphB,KAAK02B,IAAItV,GAAG,CAAC,IAAIlR,EAAElQ,KAAKyvN,YAAYjxM,EAAEoI,EAAE1W,EAAEkR,IAAI,IAAI5C,IAAItO,EAAEzG,OAAO+U,EAAE,GAAGxe,KAAK2vN,YAAY78K,UAAU,OAAO9yC,MAAMunG,GAAG,SAASnmF,EAAElR,GAAG,GAAGkR,IAAIT,GAAGzQ,IAAIyQ,EAAE,CAAC,IAAInC,EAAExe,KAAKiN,SAAS,OAAOlE,EAAE2V,EAAE0C,IAAG,SAASA,GAAG5C,EAAE4C,GAAG5C,EAAE4C,IAAI,GAAG5C,EAAE4C,GAAG7X,KAAK2G,MAAKlQ,OAAOmrG,IAAI,SAAS/pF,EAAElR,GAAG,GAAGkR,IAAIT,EAAE,CAAC,IAAInC,EAAExe,KAAKiN,SAAS,OAAOlE,EAAE2V,EAAE0C,IAAG,SAASA,GAAGlR,EAAEsO,EAAE4C,IAAI5C,EAAE4C,GAAG3X,OAAOmd,EAAEpI,EAAE4C,GAAGlR,GAAG,UAAUsO,EAAE4C,MAAKphB,OAAOktG,KAAK,SAAS9rF,EAAElR,GAAGlQ,KAAKL,QAAQgzN,WAAWtnB,GAAGjqL,EAAElR,GAAG,IAAIsO,EAAExe,KAAKiN,SAASmU,IAAIphB,KAAKiN,SAASmU,GAAG9S,QAAQ,GAAGkQ,GAAGA,EAAExV,OAAO,CAACkH,EAAEvJ,KAAKya,EAAElR,EAAE4uG,eAAe,WAAW5uG,EAAEq8M,SAASztG,kBAAkB,IAAI,IAAIj6F,EAAE,EAAEA,EAAErG,EAAExV,QAAQwV,EAAEqG,GAAG3U,GAAG2U,MAAMorD,QAAQ,WAAWjwE,KAAK4nC,SAASrB,GAAGvmC,MAAK,GAAIA,KAAKiN,SAAS,GAAGjN,KAAK0rN,QAAQ,GAAG1rN,KAAKsyB,MAAM29C,UAAUjwE,KAAK4nC,QAAQ,OAAO2iL,GAAGpf,GAAG,CAACgoB,YAAY7H,GAAG8H,WAAWjF,GAAGkF,UAAU9H,GAAG+H,aAAa9H,GAAG+H,eAAe1E,GAAG2E,YAAYrE,GAAGsE,cAAcvE,GAAGwE,YAAYzE,GAAG0E,iBAAiB9B,GAAG+B,gBAAgB5E,GAAG6E,aAAa,GAAGC,eAAe9G,GAAG+G,eAAe9G,GAAG+G,gBAAgBx9E,GAAGy9E,aAAa/G,GAAGgH,eAAe/G,GAAGgH,qBAAqBhE,GAAGiE,mBAAmBhE,GAAGiE,cAAchE,GAAGiE,QAAQlpB,GAAGmpB,MAAMtwM,EAAEuwM,YAAYztM,EAAE0tM,WAAWhuM,EAAEiuM,WAAWnuM,EAAEouM,kBAAkBptM,EAAEqtM,gBAAgB1wM,EAAE2wM,iBAAiBtqB,EAAEuqB,WAAWztM,EAAE0tM,eAAepqB,GAAGqqB,IAAI/pB,GAAGgqB,IAAI1kI,GAAG2kI,MAAMnqB,GAAGoqB,MAAMtqB,GAAGuqB,OAAOhmL,GAAGimL,MAAMrqB,GAAGzjG,GAAG11F,EAAEs5F,IAAIrmF,EAAEjK,KAAK9R,EAAE6E,MAAMqiN,GAAGvoN,OAAOsoN,GAAGhjN,OAAOu9M,GAAG+K,QAAQ51M,EAAE61M,OAAO9xM,EAAE8uG,SAASpuG,UAAK,IAASrb,EAAEA,EAAE,oBAAoB6qF,KAAKA,KAAK,IAAI6hI,OAAOrqB,IAAItmL,EAAE,WAAW,OAAOsmL,IAAI9qM,KAAK6P,EAAEsO,EAAEtO,EAAEkR,MAAMT,IAAIS,EAAElgB,QAAQ2jB,GAAl8nB,CAAs8nBzQ,OAAOxB,WAAW,SAASwO,EAAElR,GAAGkR,EAAElgB,QAAQ,SAASkgB,EAAElR,EAAEsO,GAAG,IAAI,IAAIqG,GAAG,GAAG5V,KAAKy/F,IAAIx+F,EAAElH,OAAO,GAAGiG,KAAKwmN,KAAK,EAAE3sN,KAAK,IAAI+b,EAAErG,EAAEtO,EAAElH,QAAQ4oE,EAAE,KAAK,IAAI,IAAIl6D,EAAE0J,EAAEtY,GAAG6X,EAAE7X,EAAE6X,KAAK,GAAGixD,GAAG1hE,EAAEwH,EAAEiJ,GAAGkE,IAAI,GAAG+sD,EAAE5oE,UAAUwV,EAAE,OAAOozD,IAAI,SAASxwD,EAAElR,EAAEsO,GAAG,aAAa,SAASqG,EAAEzD,GAAG,IAAIlR,EAAE,GAAGsO,EAAEvP,KAAKC,MAAM,MAAMwD,KAAKO,MAAM0N,IAAI,OAAOnC,IAAIozD,EAAE9oE,KAAKA,EAAE,EAAE8oE,EAAEpzD,GAAGtO,GAAGwH,EAAE/N,GAAGuG,GAAGwH,EAAE0J,GAAGtY,EAAE,IAAIoH,GAAGwH,EAAE5O,IAAIoH,EAAGwH,EAAE8G,GAAG,IAAI1V,EAAE8oE,EAAEl6D,EAAE8G,EAAE,IAAImC,GAAGnC,EAAE,GAAG,eAAe7U,EAAE,EAAEyX,EAAElgB,QAAQ2jB,GAAG,SAASzD,EAAElR,EAAEsO,GAAG,aAAa,SAASqG,EAAEzD,GAAG,IAAI,IAAIlR,EAAEsO,EAAE,EAAEqG,EAAE,IAAI3U,GAAG2U,GAAGnN,EAAEk6D,EAAE9oE,EAAE4tB,MAAM,GAAGxmB,EAAEkR,EAAEnS,KAAKiP,IAAI,GAAGM,EAAE,GAAGA,IAAI,OAAOqG,EAAE,IAAI/b,EAAE0V,EAAE,GAAGozD,EAAEpzD,EAAE,IAAI9G,EAAE8G,EAAE,IAAI4C,EAAElgB,QAAQ2jB,GAAG,SAASzD,EAAElR,EAAEsO,GAAG,aAAa,SAASqG,EAAE3U,GAAG,OAAOyQ,EAAE8uG,KAAKv/G,GAAGkR,EAAElgB,QAAQ,SAAS4H,EAAEoH,GAAG,OAAOnH,EAAEmH,EAAEkR,EAAElgB,QAAQ,SAAS0wE,EAAExwD,GAAG,YAAO,IAASA,GAAGT,EAAE8kM,WAAWrkM,GAAGT,EAAEglM,WAAW,SAASjuM,IAAI,OAAO/N,EAAEZ,GAAG,IAAI4X,EAAEnC,EAAE,GAAG7U,EAAE6U,EAAE,IAAI6qL,EAAE7qL,EAAE,IAAIzV,EAAEyV,EAAE,KAAK,EAAE4C,EAAElgB,QAAQwW,EAAE0J,EAAElgB,QAAQioE,SAASzxD,EAAE0J,EAAElgB,QAAQuuH,KAAK5qG,EAAEzD,EAAElgB,QAAQw0N,OAAO5sN,EAAEsY,EAAElgB,QAAQukN,WAAW7zI,EAAExwD,EAAElgB,QAAQy0N,QAAQtsB,GAAG,SAASjoL,EAAElR,EAAEsO,GAAG,aAAa,SAASqG,EAAEzD,GAAG,SAASA,GAAG,iBAAiBA,GAAGA,EAAEpY,OAAO,KAAK,IAAI8J,OAAO,KAAKhK,EAAE4tB,MAAMhlB,QAAQ,uBAAuB,QAAQ,KAAKwB,KAAKkO,GAAG,IAAItY,EAAE0V,EAAE,GAAG4C,EAAElgB,QAAQ2jB,GAAG,SAASzD,EAAElR,EAAEsO,GAAG,aAAa,IAAIqG,EAAE/b,EAAE,iBAAiBsL,SAASA,OAAOwhN,QAAQxhN,OAAOyhN,UAAUhxM,EAAE/b,GAAGA,EAAEgtN,gBAAgB,SAAS10M,GAAG,OAAOtY,EAAEgtN,gBAAgB,IAAIn9M,WAAWyI,KAAK,SAASA,GAAG,IAAI,IAAIlR,EAAE,GAAGsO,EAAE,EAAEA,EAAE4C,EAAE5C,IAAItO,EAAE3G,KAAK0F,KAAKC,MAAM,IAAID,KAAK6pF,WAAW,OAAO5oF,GAAGkR,EAAElgB,QAAQ2jB,GAAG,SAASzD,EAAElR,EAAEsO,GAAG,aAAa,SAASqG,IAAI,OAAO+sD,GAAG,KAAKA,EAAE,OAAO,QAAQ,OAAO,SAAS9oE,EAAEsY,GAAGwwD,EAAExwD,EAAE,IAAIwwD,EAAE,EAAExwD,EAAElgB,QAAQ,CAACkhK,UAAUv9I,EAAE4qG,KAAK3mH,IAAI,SAASsY,EAAElR,EAAEsO,GAAG,aAAa4C,EAAElgB,QAAQ,GAAG,SAASkgB,EAAElR,GAAGkR,EAAElgB,QAAQ,SAASkgB,EAAElR,EAAEsO,EAAEqG,GAAG,IAAI/b,EAAE8oE,EAAExwD,EAAEA,GAAG,GAAG1J,SAAS0J,EAAE26E,QAAQ,WAAWrkF,GAAG,aAAaA,IAAI5O,EAAEsY,EAAEwwD,EAAExwD,EAAE26E,SAAS,IAAIp7E,EAAE,mBAAmBixD,EAAEA,EAAEjyE,QAAQiyE,EAAE,GAAG1hE,IAAIyQ,EAAExhB,OAAO+Q,EAAE/Q,OAAOwhB,EAAEvhB,gBAAgB8Q,EAAE9Q,iBAAiBof,IAAImC,EAAE7gB,SAAS0e,GAAGqG,EAAE,CAAC,IAAIlb,EAAE6C,OAAO7E,OAAOgZ,EAAEm9G,UAAU,MAAMtxH,OAAOqC,KAAKgW,GAAG7e,SAAQ,SAASob,GAAG,IAAIlR,EAAE2U,EAAEzD,GAAGzX,EAAEyX,GAAG,WAAW,OAAOlR,MAAKyQ,EAAEm9G,SAASn0H,EAAE,MAAM,CAACosN,SAASjtN,EAAE5H,QAAQ0wE,EAAEjyE,QAAQghB,KAAK,SAASS,EAAElR,EAAEsO,GAAG,IAAIqG,EAAErG,EAAE,GAAG,iBAAiBqG,IAAIA,EAAE,CAAC,CAACzD,EAAEtY,EAAE+b,EAAE,MAAMA,EAAEmxM,SAAS50M,EAAElgB,QAAQ2jB,EAAEmxM,QAAQx3M,EAAE,GAAFA,CAAM,WAAWqG,GAAE,EAAG,KAAK,SAASzD,EAAElR,EAAEsO,GAAG,SAASqG,EAAEzD,GAAG,IAAI,IAAIlR,EAAE,EAAEA,EAAEkR,EAAEpY,OAAOkH,IAAI,CAAC,IAAIsO,EAAE4C,EAAElR,GAAG2U,EAAE9b,EAAEyV,EAAEpR,IAAI,GAAGyX,EAAE,CAACA,EAAEoxM,OAAO,IAAI,IAAIntN,EAAE,EAAEA,EAAE+b,EAAEjT,MAAM5I,OAAOF,IAAI+b,EAAEjT,MAAM9I,GAAG0V,EAAE5M,MAAM9I,IAAI,KAAKA,EAAE0V,EAAE5M,MAAM5I,OAAOF,IAAI+b,EAAEjT,MAAMrI,KAAKqoE,EAAEpzD,EAAE5M,MAAM9I,KAAK+b,EAAEjT,MAAM5I,OAAOwV,EAAE5M,MAAM5I,SAAS6b,EAAEjT,MAAM5I,OAAOwV,EAAE5M,MAAM5I,YAAY,CAAK,IAAI0O,EAAE,GAAV,IAAa5O,EAAE,EAAEA,EAAE0V,EAAE5M,MAAM5I,OAAOF,IAAI4O,EAAEnO,KAAKqoE,EAAEpzD,EAAE5M,MAAM9I,KAAKC,EAAEyV,EAAEpR,IAAI,CAACA,GAAGoR,EAAEpR,GAAG6oN,KAAK,EAAErkN,MAAM8F,KAAK,SAAS5O,IAAI,IAAIsY,EAAExO,SAASa,cAAc,SAAS,OAAO2N,EAAEza,KAAK,WAAW4d,EAAEmtF,YAAYtwF,GAAGA,EAAE,SAASwwD,EAAExwD,GAAG,IAAIlR,EAAEsO,EAAEqG,EAAEjS,SAAS85F,cAAc,SAAS5nF,EAAE,MAAM1D,EAAEhU,GAAG,MAAM,GAAGyX,EAAE,CAAC,GAAG/jB,EAAE,OAAO0iB,EAAEqB,EAAEyiB,WAAWsqE,YAAY/sF,GAAG,GAAGlG,EAAE,CAAC,IAAIizD,EAAEnuD,IAAIoB,EAAEnF,IAAIA,EAAE5W,KAAKoH,EAAEwH,EAAExQ,KAAK,KAAK2d,EAAE+sD,GAAE,GAAIpzD,EAAE9G,EAAExQ,KAAK,KAAK2d,EAAE+sD,GAAE,QAAS/sD,EAAE/b,IAAIoH,EAAEyQ,EAAEzZ,KAAK,KAAK2d,GAAGrG,EAAE,WAAWqG,EAAEyiB,WAAWsqE,YAAY/sF,IAAI,OAAO3U,EAAEkR,GAAG,SAASyD,GAAG,GAAGA,EAAE,CAAC,GAAGA,EAAEswK,MAAM/zK,EAAE+zK,KAAKtwK,EAAEqxM,QAAQ90M,EAAE80M,OAAOrxM,EAAEsxM,YAAY/0M,EAAE+0M,UAAU,OAAOjmN,EAAEkR,EAAEyD,QAAQrG,KAAK,SAAS9G,EAAE0J,EAAElR,EAAEsO,EAAEqG,GAAG,IAAI/b,EAAE0V,EAAE,GAAGqG,EAAEswK,IAAI,GAAG/zK,EAAEg1M,WAAWh1M,EAAEg1M,WAAWr/B,QAAQp/K,EAAEzH,EAAEpH,OAAO,CAAC,IAAI8oE,EAAEh/D,SAASgvG,eAAe94G,GAAG4O,EAAE0J,EAAEi2F,WAAW3/F,EAAExH,IAAIkR,EAAEwwF,YAAYl6F,EAAExH,IAAIwH,EAAE1O,OAAOoY,EAAE2iF,aAAanyB,EAAEl6D,EAAExH,IAAIkR,EAAEswF,YAAY9/B,IAAI,SAASjxD,EAAES,EAAElR,GAAG,IAAIsO,EAAEtO,EAAEilL,IAAItwK,EAAE3U,EAAEgmN,MAAMptN,EAAEoH,EAAEimN,UAAU,GAAGtxM,GAAGzD,EAAExN,aAAa,QAAQiR,GAAGhT,EAAEwkN,OAAOj1M,EAAExN,aAAakR,EAAE5U,EAAE9C,IAAItE,IAAI0V,GAAG,mBAAmB1V,EAAEkT,QAAQ,GAAG,MAAMwC,GAAG,uDAAuDhb,KAAKH,SAASC,mBAAmByM,KAAKI,UAAUrH,MAAM,OAAOsY,EAAEg1M,WAAWh1M,EAAEg1M,WAAWr/B,QAAQv4K,MAAM,CAAC,KAAK4C,EAAEu4K,YAAYv4K,EAAEwwF,YAAYxwF,EAAEu4K,YAAYv4K,EAAEswF,YAAY9+F,SAASgvG,eAAepjG,KAAK,IAAI7U,EAAE,oBAAoBiJ,SAAS,GAAG,oBAAoB0jN,OAAOA,QAAQ3sN,EAAE,MAAM,IAAIoC,MAAM,2JAA2J,IAAIs9L,EAAE7qL,EAAE,IAAIzV,EAAE,GAAGwb,EAAE5a,IAAIiJ,SAAS0wC,MAAM1wC,SAASu3L,qBAAqB,QAAQ,IAAIzqL,EAAE,KAAK+D,EAAE,EAAE3iB,GAAE,EAAG0iB,EAAE,aAAa3R,EAAE,KAAKiT,EAAE,kBAAkBnG,EAAE,oBAAoBrL,WAAW,eAAeJ,KAAKI,UAAUC,UAAUpN,eAAeib,EAAElgB,QAAQ,SAASkgB,EAAElR,EAAEsO,EAAE1V,GAAGhI,EAAE0d,EAAE3M,EAAE/I,GAAG,GAAG,IAAI8oE,EAAEy3H,EAAEjoL,EAAElR,GAAG,OAAO2U,EAAE+sD,GAAG,SAAS1hE,GAAG,IAAI,IAAIsO,EAAE,GAAG1V,EAAE,EAAEA,EAAE8oE,EAAE5oE,OAAOF,IAAI,CAAC,IAAI4O,EAAEk6D,EAAE9oE,GAAG6X,EAAE5X,EAAE2O,EAAEtK,IAAIuT,EAAEs1M,OAAOz3M,EAAEjV,KAAKoX,GAAGzQ,GAAG0hE,EAAEy3H,EAAEjoL,EAAElR,GAAG2U,EAAE+sD,IAAIA,EAAE,GAAG,IAAQ9oE,EAAE,EAAEA,EAAE0V,EAAExV,OAAOF,IAAI,CAAK6X,EAAEnC,EAAE1V,GAAG,GAAG,IAAI6X,EAAEs1M,KAAK,CAAC,IAAI,IAAItsN,EAAE,EAAEA,EAAEgX,EAAE/O,MAAM5I,OAAOW,IAAIgX,EAAE/O,MAAMjI,YAAYZ,EAAE4X,EAAEvT,QAAQ,IAAIuK,EAAE,WAAW,IAAIyJ,EAAE,GAAG,OAAO,SAASlR,EAAEsO,GAAG,OAAO4C,EAAElR,GAAGsO,EAAE4C,EAAEjJ,OAAOolH,SAASvrH,KAAK,OAA9E,IAAyF,SAASoP,EAAElR,GAAGkR,EAAElgB,QAAQ,SAASkgB,EAAElR,GAAG,IAAI,IAAIsO,EAAE,GAAGqG,EAAE,GAAG/b,EAAE,EAAEA,EAAEoH,EAAElH,OAAOF,IAAI,CAAC,IAAI8oE,EAAE1hE,EAAEpH,GAAG4O,EAAEk6D,EAAE,GAAGjxD,EAAEixD,EAAE,GAAGjoE,EAAEioE,EAAE,GAAGy3H,EAAEz3H,EAAE,GAAG7oE,EAAE,CAACqE,GAAGgU,EAAE,IAAItY,EAAEqsL,IAAIx0K,EAAEu1M,MAAMvsN,EAAEwsN,UAAU9sB,GAAGxkL,EAAEnN,GAAGmN,EAAEnN,GAAG9F,MAAMrI,KAAKR,GAAGyV,EAAEjV,KAAKsb,EAAEnN,GAAG,CAACtK,GAAGsK,EAAE9F,MAAM,CAAC7I,KAAK,OAAOyV,IAAI,SAAS4C,EAAElR,GAAG,IAAIsO,EAAEA,EAAE,WAAW,OAAOxe,KAAlB,GAA0B,IAAIwe,EAAEA,GAAG00E,SAAS,cAATA,KAA2B,EAAGqjI,MAAM,QAAQ,MAAMn1M,GAAG,iBAAiBhN,SAASoK,EAAEpK,QAAQgN,EAAElgB,QAAQsd,S,0FCQ1/vDg4M,EAAiB,CAAC,CAAC,CACrBl1G,OAAQ,EAAC,EAAO,EAAG,EAAG,EAAG,EAAG,EAAG,KAC7B,CAAC,OAAQ,SAAU,YAAa,UACpC,CAAC,CACC/nG,MAAO,IACN,CACDA,MAAO,UACN,CACDA,MAAO,SACN,CACDA,MAAO,YACL,CAAC,aAAc,cAAe,CAAC,CACjCk7F,KAAM,WACL,CACDA,KAAM,UACL,CACDA,KAAM,UACJ,CAAC,CACH6L,OAAQ,MACP,CACDA,OAAQ,OAEV,CAAC,CACCztF,MAAO,IACN,CACD4vH,WAAY,KAEd,CAAC,OAAQ,QAAS,SAAU,CAAC,UAGzBg0E,EAAS,CACXz+M,MAAO,CACL0+M,cAAetrN,OAEjBi0H,QAAS,CACPs3F,sBAAuB,SAA+BrwH,QACzBxgG,IAAvB9F,KAAK02N,eACP12N,KAAK02N,cAAc1wN,SAAQ,SAAU4wN,GACnCtwH,EAAM/hC,SAAS,WAAaqyJ,EAAapa,MAAOoa,EAAaz1N,cAOvE,SAAS6jG,EAAQj4F,GAWf,OATEi4F,EADoB,oBAAXtkE,QAAoD,kBAApBA,OAAOs4D,SACtC,SAAUjsF,GAClB,cAAcA,GAGN,SAAUA,GAClB,OAAOA,GAAyB,oBAAX2zB,QAAyB3zB,EAAIiK,cAAgB0pB,QAAU3zB,IAAQ2zB,OAAOj5B,UAAY,gBAAkBsF,GAItHi4F,EAAQj4F,GAGjB,SAASo2F,EAAgB37F,EAAU26F,GACjC,KAAM36F,aAAoB26F,GACxB,MAAM,IAAI35F,UAAU,qCAIxB,SAASquN,EAAkB1oN,EAAQ6J,GACjC,IAAK,IAAIlP,EAAI,EAAGA,EAAIkP,EAAMhP,OAAQF,IAAK,CACrC,IAAIi+D,EAAa/uD,EAAMlP,GACvBi+D,EAAW5vC,WAAa4vC,EAAW5vC,aAAc,EACjD4vC,EAAWnnC,cAAe,EACtB,UAAWmnC,IAAYA,EAAW7vC,UAAW,GACjD1qB,OAAOE,eAAeyB,EAAQ44D,EAAW7gE,IAAK6gE,IAIlD,SAASm7B,EAAaC,EAAaC,EAAYC,GAG7C,OAFID,GAAYy0H,EAAkB10H,EAAY16F,UAAW26F,GACrDC,GAAaw0H,EAAkB10H,EAAaE,GACzCF,EAGT,SAASmB,EAAUC,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIh7F,UAAU,sDAGtB+6F,EAAS97F,UAAY+E,OAAO7E,OAAO67F,GAAcA,EAAW/7F,UAAW,CACrEuP,YAAa,CACX5S,MAAOm/F,EACPrsE,UAAU,EACV0I,cAAc,KAGd4jE,GAAYszH,EAAgBvzH,EAAUC,GAG5C,SAASuzH,EAAgBnlJ,GAIvB,OAHAmlJ,EAAkBvqN,OAAOunF,eAAiBvnF,OAAO2K,eAAiB,SAAyBy6D,GACzF,OAAOA,EAAEulB,WAAa3qF,OAAO2K,eAAey6D,IAEvCmlJ,EAAgBnlJ,GAGzB,SAASklJ,EAAgBllJ,EAAGlyD,GAM1B,OALAo3M,EAAkBtqN,OAAOunF,gBAAkB,SAAyBniB,EAAGlyD,GAErE,OADAkyD,EAAEulB,UAAYz3E,EACPkyD,GAGFklJ,EAAgBllJ,EAAGlyD,GAG5B,SAASs3M,EAAuBrjI,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI0P,eAAe,6DAG3B,OAAO1P,EAGT,SAASyP,EAA2BzP,EAAMtzF,GACxC,OAAIA,GAAyB,kBAATA,GAAqC,oBAATA,EAIzC22N,EAAuBrjI,GAHrBtzF,EAMX,SAAS4kG,EAAelwF,EAAKjM,GAC3B,OAAOmuN,EAAgBliN,IAAQmiN,EAAsBniN,EAAKjM,IAAMquN,IAGlE,SAASF,EAAgBliN,GACvB,GAAI3J,MAAMiD,QAAQ0G,GAAM,OAAOA,EAGjC,SAASmiN,EAAsBniN,EAAKjM,GAClC,IAAIq8F,EAAO,GACPC,GAAK,EACLC,GAAK,EACLC,OAAKx/F,EAET,IACE,IAAK,IAAiCy/F,EAA7BnH,EAAKrpF,EAAI2rB,OAAOs4D,cAAmBoM,GAAMG,EAAKnH,EAAGv5D,QAAQpiC,MAAO2iG,GAAK,EAG5E,GAFAD,EAAK57F,KAAKg8F,EAAGnhG,OAET0E,GAAKq8F,EAAKn8F,SAAWF,EAAG,MAE9B,MAAOzE,GACPghG,GAAK,EACLC,EAAKjhG,EACL,QACA,IACO+gG,GAAsB,MAAhBhH,EAAG,WAAmBA,EAAG,YACpC,QACA,GAAIiH,EAAI,MAAMC,GAIlB,OAAOH,EAGT,SAASgyH,IACP,MAAM,IAAI3uN,UAAU,wDAQtB,SAAS6nL,EAAUliL,EAAQzE,GACzB,IAAIoH,EAAW,SAAkB/D,GAC/B,OAAOA,GAAwB,WAAjBi4F,EAAQj4F,IAGxB,OAAK+D,EAAS3C,IAAY2C,EAASpH,IAInC8C,OAAOqC,KAAKnF,GAAQ1D,SAAQ,SAAUE,GACpC,IAAIkxN,EAAcjpN,EAAOjI,GACrBmxN,EAAc3tN,EAAOxD,GAErBkF,MAAMiD,QAAQ+oN,IAAgBhsN,MAAMiD,QAAQgpN,GAC9ClpN,EAAOjI,GAAOkxN,EAAYn2N,OAAOo2N,GACxBvmN,EAASsmN,IAAgBtmN,EAASumN,GAC3ClpN,EAAOjI,GAAOmqL,EAAU7jL,OAAOQ,OAAO,GAAIoqN,GAAcC,GAExDlpN,EAAOjI,GAAOmxN,KAGXlpN,GAfEzE,EAkBX,IAAIs4F,EAAa,cAAa,qBAE1Bs1H,EAEJ,SAAU57F,GAGR,SAAS47F,IAGP,OAFAn0H,EAAgBnjG,KAAMs3N,GAEfl0H,EAA2BpjG,KAAM+2N,EAAgBO,GAAgBjsN,MAAMrL,KAAMwR,YAGtF,OARA8xF,EAAUg0H,EAAgB57F,GAQnB47F,EATT,CAUEt1H,GAEFs1H,EAAeh5H,SAAW,KAC1Bg5H,EAAep5H,QAAU,KACzB,aAAe,qBAAsBo5H,GAErC,IAAIC,EAEJ,WACE,SAASA,EAAkBroH,EAAOvvG,GAChC,IAAIu9F,EAAQl9F,KAEZmjG,EAAgBnjG,KAAMu3N,GAEtBv3N,KAAKkvG,MAAQA,EACblvG,KAAKL,QAAUA,EACfK,KAAKw3N,WAAa,CAAC,OACnBx3N,KAAK29B,QAAU,CAAC,CACd9zB,KAAM,SACNyN,QAAS,eACTq9J,OAAQ,SAAgBh5I,EAAMsrE,EAAW3vF,GACvC,IAAIzE,EAAQyE,EAAQzC,KAAK8mB,GACzB,GAAK9oB,EAAL,CACA,IAAIgK,EAAOhK,EAAM,GAAG7J,OAEpBhE,YAAW,WACTk4F,EAAMgS,MAAM5F,WAAWrC,EAAUz9F,MAAO,EAAG,SAAUqT,EAAO,GAE5DqgF,EAAMgS,MAAMpG,WAAW7B,EAAUz9F,MAAQqT,EAAMA,KAC9C,MAEJ,CACDhT,KAAM,aACNyN,QAAS,UACTq9J,OAAQ,SAAgB1xE,EAAOgE,GAE7BjiG,YAAW,WACTk4F,EAAMgS,MAAM5F,WAAWrC,EAAUz9F,MAAO,EAAG,cAAc,GAEzD0zF,EAAMgS,MAAMpG,WAAW7B,EAAUz9F,MAAQ,EAAG,KAC3C,KAEJ,CACDK,KAAM,aACNyN,QAAS,kBACTq9J,OAAQ,SAAgB1xE,EAAOgE,GAE7BjiG,YAAW,WACTk4F,EAAMgS,MAAM5F,WAAWrC,EAAUz9F,MAAO,EAAG,cAAc,GAEzD0zF,EAAMgS,MAAMpG,WAAW7B,EAAUz9F,MAAQ,EAAG,KAC3C,KAEJ,CACDK,KAAM,aACNyN,QAAS,+BACTq9J,OAAQ,SAAgBh5I,EAAMmqE,EAAYxuF,EAASmgN,GACjD,IAAI5kN,EAAQyE,EAAQzC,KAAK8mB,GACrB+7L,EAAgB7kN,EAAM,GACtB8kN,EAAc9kN,EAAM,GACpB+kN,EAAaH,EAAY5kN,EAAMrJ,MAC/BmyB,EAAK9oB,MAAM,kBACf7N,YAAW,WACTk4F,EAAMgS,MAAMpG,WAAW8uH,EAAYF,EAAc1uN,QAEjDk0F,EAAMgS,MAAMhE,WAAW0sH,EAAYD,EAAa,CAC9C/hG,MAAM,EACNF,QAAQ,IAGVx4B,EAAMgS,MAAMvjE,OAAO,QAAQ,KAC1B,KAEJ,CACD9hC,KAAM,OACNyN,QAAS,+BACTq9J,OAAQ,SAAgBh5I,EAAMmqE,EAAYxuF,EAASmgN,GACjD,IAAI5kN,EAAQyE,EAAQzC,KAAK8mB,GACrB+7L,EAAgB7kN,EAAM,GACtB8kN,EAAc9kN,EAAM,GACpB+kN,EAAaH,EAAY5kN,EAAMrJ,MAC/BmyB,EAAK9oB,MAAM,kBACf7N,YAAW,WACTk4F,EAAMgS,MAAMpG,WAAW8uH,EAAYF,EAAc1uN,QAEjDk0F,EAAMgS,MAAMhE,WAAW0sH,EAAYD,EAAa,CAC9C/hG,MAAM,IAGR14B,EAAMgS,MAAMvjE,OAAO,QAAQ,KAC1B,KAEJ,CACD9hC,KAAM,SACNyN,QAAS,+BACTq9J,OAAQ,SAAgBh5I,EAAMmqE,EAAYxuF,EAASmgN,GACjD,IAAI5kN,EAAQyE,EAAQzC,KAAK8mB,GACrB+7L,EAAgB7kN,EAAM,GACtB8kN,EAAc9kN,EAAM,GACpB+kN,EAAaH,EAAY5kN,EAAMrJ,MAC/BmyB,EAAK9oB,MAAM,kBACf7N,YAAW,WACTk4F,EAAMgS,MAAMpG,WAAW8uH,EAAYF,EAAc1uN,QAEjDk0F,EAAMgS,MAAMhE,WAAW0sH,EAAYD,EAAa,CAC9CjiG,QAAQ,IAGVx4B,EAAMgS,MAAMvjE,OAAO,UAAU,KAC5B,KAEJ,CACD9hC,KAAM,gBACNyN,QAAS,qBACTq9J,OAAQ,SAAgBh5I,EAAMmqE,EAAYxuF,EAASmgN,GACjD,IAAI5kN,EAAQyE,EAAQzC,KAAK8mB,GACrB+7L,EAAgB7kN,EAAM,GACtB8kN,EAAc9kN,EAAM,GACpB+kN,EAAaH,EAAY5kN,EAAMrJ,MAC/BmyB,EAAK9oB,MAAM,kBACf7N,YAAW,WACTk4F,EAAMgS,MAAMpG,WAAW8uH,EAAYF,EAAc1uN,QAEjDk0F,EAAMgS,MAAMhE,WAAW0sH,EAAYD,EAAa,CAC9CE,QAAQ,IAGV36H,EAAMgS,MAAMvjE,OAAO,UAAU,KAC5B,KAEJ,CACD9hC,KAAM,OACNyN,QAAS,mBACTq9J,OAAQ,SAAgBh5I,EAAMmqE,EAAYxuF,EAASmgN,GACjD,IAAI5kN,EAAQyE,EAAQzC,KAAK8mB,GACrB+7L,EAAgB7kN,EAAM,GACtB8kN,EAAc9kN,EAAM,GACpB+kN,EAAaH,EAAY5kN,EAAMrJ,MAC/BmyB,EAAK9oB,MAAM,kBACf7N,YAAW,WACTk4F,EAAMgS,MAAMpG,WAAW8uH,EAAYF,EAAc1uN,QAEjDk0F,EAAMgS,MAAMhE,WAAW0sH,EAAYD,EAAa,CAC9C7rN,MAAM,IAGRoxF,EAAMgS,MAAMvjE,OAAO,QAAQ,GAE3BuxD,EAAMgS,MAAMhE,WAAWhO,EAAMgS,MAAM7F,eAAgB,OAClD,KAEJ,CACDx/F,KAAM,KACNyN,QAAS,iBACTq9J,OAAQ,SAAgBh5I,EAAMsrE,GAC5B,IAAI2wH,EAAa3wH,EAAUz9F,MAAQmyB,EAAK3yB,OACxChE,YAAW,WACTk4F,EAAMgS,MAAMpG,WAAW8uH,EAAYj8L,EAAK3yB,QAExCk0F,EAAMgS,MAAMpE,YAAY8sH,EAAa,EAAG,MAAM,EAAM,kBAEpD16H,EAAMgS,MAAMhE,WAAW0sH,EAAa,EAAG,KAAM,oBAE7C16H,EAAMgS,MAAM1F,aAAaouH,EAAa,EAAG,sBACxC,KAEJ,CACD/tN,KAAM,cACNyN,QAAS,eAETq9J,OAAQ,SAAgB1xE,EAAOgE,EAAW6wH,GACxC9yN,YAAW,WACTk4F,EAAMgS,MAAM5F,WAAWrC,EAAUz9F,MAAO,EAAG,OAAQ,aAEnD0zF,EAAMgS,MAAMpG,WAAW7B,EAAUz9F,MAAQ,EAAG,KAC3C,KAEJ,CACDK,KAAM,QACNyN,QAAS,+BACTq9J,OAAQ,SAAgBh5I,EAAMsrE,EAAW3vF,GACvC,IAAIsgN,EAAaj8L,EAAK7nB,OAAOwD,GACzBqgN,EAAch8L,EAAK9oB,MAAMyE,GAAS,GAElCygN,EAAWp8L,EAAK9oB,MAAM,kBAAkB,GACxC4G,EAAQwtF,EAAUz9F,MAAQmuN,EAAY3uN,OAAS,GAE/B,IAAhB4uN,GACF5yN,YAAW,WACTk4F,EAAMgS,MAAMpG,WAAWrvF,EAAOk+M,EAAY3uN,QAE1Ck0F,EAAMgS,MAAMpE,YAAYrxF,EAAO,QAASs+M,EAASzpN,MAAM,EAAGypN,EAAS/uN,OAAS,MAC3E,KAGN,CACDa,KAAM,OACNyN,QAAS,8BACTq9J,OAAQ,SAAgBh5I,EAAMsrE,EAAW3vF,GACvC,IAAIsgN,EAAaj8L,EAAK7nB,OAAOwD,GACzBqgN,EAAch8L,EAAK9oB,MAAMyE,GAAS,GAClC0gN,EAAWr8L,EAAK9oB,MAAM,kBAAkB,GACxCklN,EAAWp8L,EAAK9oB,MAAM,kBAAkB,GACxC4G,EAAQwtF,EAAUz9F,MAAQmuN,EAAY3uN,OAAS,GAE/B,IAAhB4uN,GACF5yN,YAAW,WACTk4F,EAAMgS,MAAMpG,WAAWrvF,EAAOk+M,EAAY3uN,QAE1Ck0F,EAAMgS,MAAMhE,WAAWzxF,EAAOu+M,EAAS1pN,MAAM,EAAG0pN,EAAShvN,OAAS,GAAI,OAAQ+uN,EAASzpN,MAAM,EAAGypN,EAAS/uN,OAAS,MACjH,MAMThJ,KAAKkvG,MAAM3H,GAAG,eAAe,SAAUvhE,EAAOiyL,EAAcC,GAC1D,IAAK,IAAIpvN,EAAI,EAAGA,EAAIk9B,EAAMg5D,IAAIh2F,OAAQF,IAChCk9B,EAAMg5D,IAAIl2F,GAAG0O,eAAe,YACF,MAAxBwuB,EAAMg5D,IAAIl2F,GAAGm2F,OACf/B,EAAMi7H,UAC2B,OAAxBnyL,EAAMg5D,IAAIl2F,GAAGm2F,QACtB/B,EAAMk7H,cA4GhB,OArGAl2H,EAAaq1H,EAAmB,CAAC,CAC/BrxN,IAAK,UACL9B,MAAO,SAAiBu3B,EAAMuiE,GAC5B,MAAuB,qBAATviE,GAAwBA,IAA8C,IAAtC37B,KAAKw3N,WAAWzyN,QAAQm5F,KAEvE,CACDh4F,IAAK,UACL9B,MAAO,WACL,IAAI6iG,EAAYjnG,KAAKkvG,MAAM7F,eAC3B,GAAKpC,EAAL,CAEA,IAAIoxH,EAAsBr4N,KAAKkvG,MAAM4O,QAAQ7W,EAAUz9F,OACnD8uN,EAAuBrzH,EAAeozH,EAAqB,GAC3D1jN,EAAO2jN,EAAqB,GAC5BtzK,EAASszK,EAAqB,GAE9B38L,EAAOhnB,EAAK0yB,QAAQupE,YACpB6mH,EAAYxwH,EAAUz9F,MAAQw7C,EAElC,GAAIhlD,KAAK21N,QAAQh6L,EAAMhnB,EAAK0yB,QAAQ62D,SAAU,CAC5C,IAAIq6H,GAA4B,EAC5BC,GAAoB,EACpBC,OAAiB3yN,EAErB,IACE,IAAK,IAAiD4yN,EAA7CC,EAAY34N,KAAK29B,QAAQ+C,OAAOs4D,cAAsBu/H,GAA6BG,EAAQC,EAAU9zL,QAAQpiC,MAAO81N,GAA4B,EAAM,CAC7J,IAAI1lN,EAAQ6lN,EAAMt0N,MACduzN,EAAch8L,EAAK9oB,MAAMA,EAAMyE,SAEnC,GAAIqgN,EAIF,OAFAjhN,QAAQg4F,IAAI,WAAY77F,EAAMhJ,KAAM8xB,QACpC9oB,EAAM8hK,OAAOh5I,EAAMsrE,EAAWp0F,EAAMyE,QAASmgN,IAIjD,MAAOpzN,GACPm0N,GAAoB,EACpBC,EAAiBp0N,EACjB,QACA,IACOk0N,GAAiD,MAApBI,EAAUC,QAC1CD,EAAUC,SAEZ,QACA,GAAIJ,EACF,MAAMC,QAMf,CACDvyN,IAAK,UACL9B,MAAO,WACL,IAAI6iG,EAAYjnG,KAAKkvG,MAAM7F,eAC3B,GAAKpC,EAAL,CAEA,IAAI4xH,EAAuB74N,KAAKkvG,MAAM4O,QAAQ7W,EAAUz9F,OACpDsvN,EAAuB7zH,EAAe4zH,EAAsB,GAC5DlkN,EAAOmkN,EAAqB,GAC5B9zK,EAAS8zK,EAAqB,GAE9Bn9L,EAAOhnB,EAAK0yB,QAAQupE,YAAc,IAClC6mH,EAAYxwH,EAAUz9F,MAAQw7C,EAGlC,GAFAiiD,EAAUj+F,OAASi+F,EAAUz9F,QAEzBxJ,KAAK21N,QAAQh6L,EAAMhnB,EAAK0yB,QAAQ62D,SAAU,CAC5C,IAAI66H,GAA6B,EAC7BC,GAAqB,EACrBC,OAAkBnzN,EAEtB,IACE,IAAK,IAAkDozN,EAA9CC,EAAan5N,KAAK29B,QAAQ+C,OAAOs4D,cAAuB+/H,GAA8BG,EAASC,EAAWt0L,QAAQpiC,MAAOs2N,GAA6B,EAAM,CACnK,IAAIlmN,EAAQqmN,EAAO90N,MACfuzN,EAAch8L,EAAK9oB,MAAMA,EAAMyE,SAEnC,GAAIqgN,EAGF,OAFAjhN,QAAQg4F,IAAI,UAAW77F,EAAMhJ,KAAM8xB,QACnC9oB,EAAM8hK,OAAOh5I,EAAMsrE,EAAWp0F,EAAMyE,QAASmgN,IAIjD,MAAOpzN,GACP20N,GAAqB,EACrBC,EAAkB50N,EAClB,QACA,IACO00N,GAAmD,MAArBI,EAAWP,QAC5CO,EAAWP,SAEb,QACA,GAAII,EACF,MAAMC,UAQX1B,EAlUT,GAsUI6B,EAAS,CACXvvN,KAAM,YACNozH,OAAQ,CAACw5F,GACTz+M,MAAO,CACL5K,GAAI,CACFzG,KAAM6R,OACNujF,QAAS,mBAEXoM,YAAa,CACXxhG,KAAM6R,OACNujF,QAAS,IAEX33F,MAAO,CACLuC,KAAM6R,OACNujF,QAAS,IAEX/mD,SAAU,CACRruC,KAAM42H,SAER87F,cAAe,CACb1yN,KAAMyE,MACN2wF,QAAS,WACP,MAAO,KAGXu9H,cAAe,CACb3yN,KAAM6F,OACNw+H,UAAU,EACVjvC,QAAS,WACP,MAAO,KAGXw9H,sBAAuB,CACrB5yN,KAAM42H,QACNxhC,SAAS,GAEXy9H,qBAAsB,CACpB7yN,KAAM42H,QACNxhC,SAAS,IAGb15F,KAAM,WACJ,MAAO,CACL6sG,MAAO,OAGXiyB,MAAO,CACL/8H,MAAO,SAAe6B,GAChBA,GAAOjG,KAAKkvG,MAAMh7E,KAAKsyE,WAAcxmG,KAAKkvG,MAAMvE,aAClD3qG,KAAKkvG,MAAMh7E,KAAKsyE,UAAYvgG,IAGhC+uC,SAAU,SAAkB9wC,GAC1BlE,KAAKkvG,MAAMnG,QAAQ7kG,KAGvBk9H,QAAS,WACPphI,KAAK22N,sBAAsB,KAC3B32N,KAAKy5N,qBACLz5N,KAAK05N,oBAEP/lE,cAAe,WACb3zJ,KAAKkvG,MAAQ,YACNlvG,KAAKkvG,OAEdmwB,QAAS,CACPq6F,iBAAkB,WAChB15N,KAAK25N,mBACL35N,KAAK45N,6BACL55N,KAAK65N,uBACL75N,KAAK85N,+BACL95N,KAAKumI,MAAM,QAASvmI,KAAKkvG,QAE3ByqH,iBAAkB,WAChB,IAAII,EAAe,CACjB1zH,OAAO,EACP3L,QAAS16F,KAAKg6N,aACd9yH,MAAO,OACPiB,YAAanoG,KAAKmoG,YAAcnoG,KAAKmoG,YAAc,GACnDC,WAAUpoG,KAAKg1C,UAAWh1C,KAAKg1C,UAEjCh1C,KAAKi6N,oBAAoBF,GACzB/5N,KAAKkvG,MAAQ,IAAI,IAAJ,CAAUlvG,KAAKqnI,MAAM6yF,eAAgBH,IAEpDC,WAAY,WACV,IAAIt/H,EAAU,CACZ+R,QAASzsG,KAAKq5N,cAAcrwN,OAAShJ,KAAKq5N,cAAgB7C,GAQ5D,OALIx2N,KAAKw5N,uBACP,aAAe,4BAA6BjC,GAAmB,GAC/D78H,EAAQ,qBAAuB,IAG1BA,GAETu/H,oBAAqB,SAA6BF,GAC5CvtN,OAAOqC,KAAK7O,KAAKs5N,eAAetwN,OAAS,GAAKhJ,KAAKs5N,cAActiN,cAAgBxK,SAC/ExM,KAAKs5N,cAAc5+H,SAAyD,qBAAvC16F,KAAKs5N,cAAc5+H,QAAQ+R,gBAE3DstH,EAAar/H,QAAQ+R,QAG9B4jF,EAAU0pC,EAAc/5N,KAAKs5N,iBAGjCG,mBAAoB,WAClB,sBAA0B,WACxB,OAAOz5N,KAAKopC,UAAUsjE,cAAc,cAAclG,WAGpD,2BAA+B,WAC7B,OAAOxmG,KAAKopC,UAAUsjE,cAAc,cAAcynB,UAAUnrH,SAGhE8wN,6BAA8B,WAC5B95N,KAAKkvG,MAAM3H,GAAG,cAAevnG,KAAKm6N,kBAClCn6N,KAAKkvG,MAAM3H,GAAG,mBAAoBvnG,KAAKo6N,uBACvCp6N,KAAKq6N,qBAAqB,eAC1Br6N,KAAKq6N,qBAAqB,oBAC1Br6N,KAAKq6N,qBAAqB,kBAE5BA,qBAAsB,SAA8B1zN,GAClD,IAAIu2F,EAAQl9F,KAEZA,KAAKkvG,MAAM3H,GAAG5gG,GAAM,WAClB,IAAK,IAAIwnG,EAAO38F,UAAUxI,OAAQuI,EAAO,IAAInG,MAAM+iG,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E78F,EAAK68F,GAAQ58F,UAAU48F,GAGzBlR,EAAMqpC,MAAMl7H,MAAM6xF,EAAO,CAACv2F,GAAM1F,OAAOsQ,QAG3CsoN,qBAAsB,WAChB75N,KAAKoE,QAAOpE,KAAKkvG,MAAMh7E,KAAKsyE,UAAYxmG,KAAKoE,QAEnDg2N,sBAAuB,SAA+Bv8M,EAAOm6F,IACtDn6F,GAASm6F,EAAUh4G,KAAKumI,MAAM,OAAQvmI,KAAKkvG,OAAgBrxF,IAAUm6F,GAAUh4G,KAAKumI,MAAM,QAASvmI,KAAKkvG,QAE/GirH,iBAAkB,SAA0Bn0L,EAAOs0L,GACjD,IAAIC,EAAyC,gBAAzBv6N,KAAKkvG,MAAMsrH,UAA8B,GAAKx6N,KAAKkvG,MAAMsrH,UAC7Ex6N,KAAKumI,MAAM,QAASg0F,GAChBv6N,KAAKu5N,uBAAuBv5N,KAAKy6N,mBAAmBz0L,EAAOs0L,IAEjEG,mBAAoB,SAA4Bz0L,EAAOs0L,GACrD,IAAIn2H,EAASnkG,KAET06N,EAAmB16N,KAAKkvG,MAAM7E,cAC9BswH,EAAkBD,EAAiB1uK,KAAKsuK,GACxCM,EAAaD,EAAgB37H,IACjC47H,EAAWn/M,KAAI,SAAUo/M,GACvB,GAAIA,EAAU57H,QAAU47H,EAAU57H,OAAOznF,eAAe,SAAU,CAChE,IAAIg9F,EAAQqmH,EAAU57H,OAAOuV,MAE7BrQ,EAAOoiC,MAAM,gBAAiB/xB,QAIpColH,2BAA4B,YACK,IAA/B55N,KAAKu5N,uBAAiCv5N,KAAK86N,2BAE7CA,wBAAyB,WACvB,IAAIruH,EAAUzsG,KAAKkvG,MAAM6rH,UAAU,WACnCtuH,EAAQ6pB,WAAW,QAASt2H,KAAKg7N,qBAEnCA,mBAAoB,WAClBh7N,KAAKqnI,MAAMhe,UAAUM,SAEvBsxG,cAAe,SAAuBC,GACpC,IAAIC,EAAgB,WAClB,IAAIC,EAAWxoN,SAASs4D,eAAe,eACvCkwJ,EAASh3N,MAAQ,IAGfm/J,EAAO23D,EAAO/sN,OAAOm7G,MAAM,GAC3B5W,EAAS1yG,KAAKkvG,MACdrxF,EAAQ60F,EAAOrJ,eACfgyH,EAAiBx9M,EAAMrU,MAC3BxJ,KAAKumI,MAAM,cAAeg9B,EAAM7wD,EAAQ2oH,EAAgBF,MAK9D,SAASl8N,EAAmBq8N,EAAUnmM,EAAOikM,EAAQ75N,EAASg8N,EAAsB/7N,EAElFC,EAAY+7N,EAAgBC,EAAmBC,GACrB,mBAAfj8N,IACTg8N,EAAoBD,EACpBA,EAAiB/7N,EACjBA,GAAa,GAIf,IAiBIC,EAjBAC,EAA4B,oBAAXy5N,EAAwBA,EAAOz5N,QAAUy5N,EAsD9D,GApDIkC,GAAYA,EAASn8N,SACvBQ,EAAQR,OAASm8N,EAASn8N,OAC1BQ,EAAQP,gBAAkBk8N,EAASl8N,gBACnCO,EAAQC,WAAY,EAEhB27N,IACF57N,EAAQE,YAAa,IAKrBN,IACFI,EAAQG,SAAWP,GAKjBC,GAEFE,EAAO,SAAcK,GAEnBA,EAAUA,GACVC,KAAKC,QAAUD,KAAKC,OAAOC,YAC3BF,KAAKG,QAAUH,KAAKG,OAAOF,QAAUD,KAAKG,OAAOF,OAAOC,WAGnDH,GAA0C,qBAAxBK,sBACrBL,EAAUK,qBAIR+0B,GACFA,EAAM90B,KAAKL,KAAMy7N,EAAkB17N,IAIjCA,GAAWA,EAAQO,uBACrBP,EAAQO,sBAAsBC,IAAIf,IAMtCG,EAAQa,aAAed,GACdy1B,IACTz1B,EAAOD,EAAa,WAClB01B,EAAM90B,KAAKL,KAAM07N,EAAqB17N,KAAKS,MAAMC,SAASC,cACxD,SAAUZ,GACZo1B,EAAM90B,KAAKL,KAAMw7N,EAAez7N,MAIhCL,EACF,GAAIC,EAAQE,WAAY,CAEtB,IAAIgB,EAAiBlB,EAAQR,OAE7BQ,EAAQR,OAAS,SAAkC2B,EAAGf,GAEpD,OADAL,EAAKW,KAAKN,GACHc,EAAeC,EAAGf,QAEtB,CAEL,IAAIgB,EAAWpB,EAAQqB,aACvBrB,EAAQqB,aAAeD,EAAW,GAAGE,OAAOF,EAAUrB,GAAQ,CAACA,GAInE,OAAO05N,EAGT,IAUIuC,EAVAC,EAAuB38N,EAEvB48N,EAA+B,qBAAdvoN,WAA6B,gBAAgBJ,KAAKI,UAAUC,UAAUpN,eAE3F,SAASq1N,EAAez7N,GACtB,OAAO,SAAUqN,EAAI+nB,GACnB,OAAOga,EAAS/hC,EAAI+nB,IAKxB,IAAI8S,EAAS,GAEb,SAASkH,EAAS/hC,EAAI+nL,GACpB,IAAIr+D,EAAQ+kG,EAAU1mC,EAAI+gC,OAAS,UAAY9oN,EAC3C+nB,EAAQ8S,EAAO6uF,KAAW7uF,EAAO6uF,GAAS,CAC5Cq5E,IAAK,IAAI/vK,IACT6H,OAAQ,KAGV,IAAK9S,EAAMg7K,IAAIpzL,IAAI3P,GAAK,CACtB+nB,EAAMg7K,IAAI5vM,IAAI6M,GACd,IAAItB,EAAOqpL,EAAIzrL,OAsBf,GApBIyrL,EAAI15K,MAGN3P,GAAQ,mBAAqBqpL,EAAI15K,IAAIO,QAAQ,GAAK,MAElDlQ,GAAQ,uDAAyDtI,KAAKH,SAASC,mBAAmByM,KAAKI,UAAUglL,EAAI15K,QAAU,OAG5H0Z,EAAMyS,UACTzS,EAAMyS,QAAUh1B,SAASa,cAAc,SACvC0hB,EAAMyS,QAAQjhC,KAAO,WACjBwuL,EAAI+gC,OAAO/gM,EAAMyS,QAAQh0B,aAAa,QAASuhL,EAAI+gC,YAE1CpwN,IAAT61N,IACFA,EAAO/oN,SAAS0wC,MAAQ1wC,SAASu3L,qBAAqB,QAAQ,IAGhEwxB,EAAKjqH,YAAYv8E,EAAMyS,UAGrB,eAAgBzS,EAAMyS,QACxBzS,EAAM8S,OAAO1+B,KAAKuC,GAClBqpB,EAAMyS,QAAQwuL,WAAWr/B,QAAU5hK,EAAM8S,OAAO9vB,OAAOolH,SAASvrH,KAAK,UAChE,CACL,IAAIxI,EAAQ2rB,EAAMg7K,IAAItzL,KAAO,EACzBw4F,EAAWziG,SAASgvG,eAAe91G,GACnCs+G,EAAQj1F,EAAMyS,QAAQyvE,WACtB+S,EAAM5gH,IAAQ2rB,EAAMyS,QAAQgqE,YAAYwY,EAAM5gH,IAC9C4gH,EAAMphH,OAAQmsB,EAAMyS,QAAQm8D,aAAasR,EAAU+U,EAAM5gH,IAAa2rB,EAAMyS,QAAQ8pE,YAAY2D,KAK1G,IAAIymH,EAAUN,EAGd,MAAMO,EAAiB3C,EAGvB,IAAI4C,EAAiB,WAAa,IAAIC,EAAIj8N,KAASk8N,EAAGD,EAAI79F,eAAmB+9F,EAAGF,EAAIG,MAAMD,IAAID,EAAG,OAAOC,EAAG,MAAM,CAACn+F,YAAY,gBAAgB,CAACi+F,EAAIzlF,GAAG,WAAWylF,EAAII,GAAG,KAAKF,EAAG,MAAM,CAAC33H,IAAI,iBAAiB0W,MAAM,CAAC,GAAK+gH,EAAI7uN,MAAM6uN,EAAII,GAAG,KAAMJ,EAAyB,sBAAEE,EAAG,QAAQ,CAAC33H,IAAI,YAAY83H,YAAY,CAAC,QAAU,QAAQphH,MAAM,CAAC,GAAK,cAAc,KAAO,OAAO,OAAS,WAAW3T,GAAG,CAAC,OAAS,SAAS2zH,GAAQ,OAAOe,EAAIhB,cAAcC,OAAYe,EAAI32H,MAAM,IAC1ci3H,EAA0B,GAG5B,MAAMC,EAAwB,SAAUhwD,GACjCA,IACLA,EAAO,oBAAqB,CAAE9iK,OAAQ,2rrBAA4rrB+R,SAAK3V,EAAWowN,WAAOpwN,IAC5vrB0mK,EAAO,oBAAqB,CAAE9iK,OAAQ,mlCAAolC+R,SAAK3V,EAAWowN,WAAOpwN,MAI1oC22N,OAAmB32N,EAEnB42N,OAA4B52N,EAE5B62N,GAAiC,EAKvC,IAAIC,EAAYhB,EACd,CAAEz8N,OAAQ68N,EAAgB58N,gBAAiBm9N,GAC3CC,EACAT,EACAU,EACAE,EACAD,EACAZ,OACAh2N,GAGAuQ,EAAU,SAEd,SAAS+1K,EAAQ3rD,GACX2rD,EAAQC,YACZD,EAAQC,WAAY,EACpB5rD,EAAIh6D,UAAU,YAAam2J,IAE7B,IAAIC,EAAU,CACZzwC,QAASA,EACT/1K,QAASA,EACTiwF,MAAO,IACPs2H,UAAWA,GAGTE,EAAY,KAEM,qBAAX1oN,OACT0oN,EAAY1oN,OAAOqsH,IACQ,qBAAX,EAAA37G,IAChBg4M,EAAY,EAAAh4M,EAAO27G,KAGjBq8F,GACFA,EAAU5vN,IAAI2vN,I;;;;;GC/5BhB,IAAIE,EAAcvwN,OAAOoxC,OAAO,IAIhC,SAASo/K,EAASnrN,GAChB,YAAa/L,IAAN+L,GAAyB,OAANA,EAG5B,SAAS6oM,EAAO7oM,GACd,YAAa/L,IAAN+L,GAAyB,OAANA,EAG5B,SAASorN,EAAQprN,GACf,OAAa,IAANA,EAGT,SAASqrN,EAASrrN,GAChB,OAAa,IAANA,EAMT,SAASsrN,EAAa/4N,GACpB,MACmB,kBAAVA,GACU,kBAAVA,GAEU,kBAAVA,GACU,mBAAVA,EASX,SAAS0M,EAAU/D,GACjB,OAAe,OAARA,GAA+B,kBAARA,EAMhC,IAAIqwN,EAAY5wN,OAAO/E,UAAUgI,SAUjC,SAASrB,EAAerB,GACtB,MAA+B,oBAAxBqwN,EAAU/8N,KAAK0M,GAGxB,SAASswN,EAAUxrN,GACjB,MAA6B,oBAAtBurN,EAAU/8N,KAAKwR,GAMxB,SAASyrN,EAAmBr3N,GAC1B,IAAIuY,EAAI7D,WAAWnC,OAAOvS,IAC1B,OAAOuY,GAAK,GAAKvP,KAAKC,MAAMsP,KAAOA,GAAKnE,SAASpU,GAGnD,SAASs3N,EAAWt3N,GAClB,OACEy0M,EAAMz0M,IACc,oBAAbA,EAAI2C,MACU,oBAAd3C,EAAIwjK,MAOf,SAASh6J,EAAUxJ,GACjB,OAAc,MAAPA,EACH,GACAmF,MAAMiD,QAAQpI,IAASmI,EAAcnI,IAAQA,EAAIwJ,WAAa2tN,EAC5DrtN,KAAKI,UAAUlK,EAAK,KAAM,GAC1BuS,OAAOvS,GAOf,SAASu3N,EAAUv3N,GACjB,IAAIuY,EAAI7D,WAAW1U,GACnB,OAAOwY,MAAMD,GAAKvY,EAAMuY,EAO1B,SAASi/M,EACP3mN,EACA4mN,GAIA,IAFA,IAAIjiN,EAAMjP,OAAO7E,OAAO,MACpB8sG,EAAO39F,EAAIpC,MAAM,KACZ5L,EAAI,EAAGA,EAAI2rG,EAAKzrG,OAAQF,IAC/B2S,EAAIg5F,EAAK3rG,KAAM,EAEjB,OAAO40N,EACH,SAAUz3N,GAAO,OAAOwV,EAAIxV,EAAIE,gBAChC,SAAUF,GAAO,OAAOwV,EAAIxV,IAMfw3N,EAAQ,kBAAkB,GAA7C,IAKIE,EAAsBF,EAAQ,8BAKlC,SAASzqN,EAAQ+B,EAAK+H,GACpB,GAAI/H,EAAI/L,OAAQ,CACd,IAAIQ,EAAQuL,EAAIhQ,QAAQ+X,GACxB,GAAItT,GAAS,EACX,OAAOuL,EAAItL,OAAOD,EAAO,IAQ/B,IAAIgO,EAAiBhL,OAAO/E,UAAU+P,eACtC,SAAS45E,EAAQrkF,EAAK7G,GACpB,OAAOsR,EAAenX,KAAK0M,EAAK7G,GAMlC,SAAS+xC,EAAQ5qC,GACf,IAAIwJ,EAAQrK,OAAO7E,OAAO,MAC1B,OAAO,SAAoBmP,GACzB,IAAI8mN,EAAM/mN,EAAMC,GAChB,OAAO8mN,IAAQ/mN,EAAMC,GAAOzJ,EAAGyJ,KAOnC,IAAIsuL,EAAa,SACblgF,EAAWjtE,GAAO,SAAUnhC,GAC9B,OAAOA,EAAIpF,QAAQ0zL,GAAY,SAAUhrF,EAAGzwG,GAAK,OAAOA,EAAIA,EAAEnF,cAAgB,SAM5Eq5N,EAAa5lL,GAAO,SAAUnhC,GAChC,OAAOA,EAAI3C,OAAO,GAAG3P,cAAgBsS,EAAIxI,MAAM,MAM7CwvN,EAAc,aACdC,EAAY9lL,GAAO,SAAUnhC,GAC/B,OAAOA,EAAIpF,QAAQosN,EAAa,OAAO33N,iBAYzC,SAAS63N,EAAc3wN,EAAIkoB,GACzB,SAAS0oM,EAASvmN,GAChB,IAAI3O,EAAIyI,UAAUxI,OAClB,OAAOD,EACHA,EAAI,EACFsE,EAAGhC,MAAMkqB,EAAK/jB,WACdnE,EAAGhN,KAAKk1B,EAAK7d,GACfrK,EAAGhN,KAAKk1B,GAId,OADA0oM,EAAQ/9K,QAAU7yC,EAAGrE,OACdi1N,EAGT,SAASC,EAAY7wN,EAAIkoB,GACvB,OAAOloB,EAAGnG,KAAKquB,GAGjB,IAAIruB,EAAOgsF,SAASzrF,UAAUP,KAC1Bg3N,EACAF,EAKJ,SAASvoN,EAASg/F,EAAMh7F,GACtBA,EAAQA,GAAS,EACjB,IAAI3Q,EAAI2rG,EAAKzrG,OAASyQ,EAClBuL,EAAM,IAAI5Z,MAAMtC,GACpB,MAAOA,IACLkc,EAAIlc,GAAK2rG,EAAK3rG,EAAI2Q,GAEpB,OAAOuL,EAMT,SAAStd,EAAQkqB,EAAI8gB,GACnB,IAAK,IAAIxsC,KAAOwsC,EACd9gB,EAAG1rB,GAAOwsC,EAAMxsC,GAElB,OAAO0rB,EAMT,SAASgiE,EAAU7+E,GAEjB,IADA,IAAI+qB,EAAM,GACDh3B,EAAI,EAAGA,EAAIiM,EAAI/L,OAAQF,IAC1BiM,EAAIjM,IACNpB,EAAOo4B,EAAK/qB,EAAIjM,IAGpB,OAAOg3B,EAUT,SAAS9lB,EAAMtC,EAAGC,EAAGhO,IAKrB,IAAIw0N,EAAK,SAAUzmN,EAAGC,EAAGhO,GAAK,OAAO,GAOjCy0N,EAAW,SAAUhkH,GAAK,OAAOA,GAMrC,SAASikH,EAAY3mN,EAAGC,GACtB,GAAID,IAAMC,EAAK,OAAO,EACtB,IAAI2mN,EAAYxtN,EAAS4G,GACrB6mN,EAAYztN,EAAS6G,GACzB,IAAI2mN,IAAaC,EAwBV,OAAKD,IAAcC,GACjB/lN,OAAOd,KAAOc,OAAOb,GAxB5B,IACE,IAAI6mN,EAAWpzN,MAAMiD,QAAQqJ,GACzB+mN,EAAWrzN,MAAMiD,QAAQsJ,GAC7B,GAAI6mN,GAAYC,EACd,OAAO/mN,EAAE1O,SAAW2O,EAAE3O,QAAU0O,EAAEmnG,OAAM,SAAU3uG,EAAGpH,GACnD,OAAOu1N,EAAWnuN,EAAGyH,EAAE7O,OAEpB,GAAI4O,aAAahF,MAAQiF,aAAajF,KAC3C,OAAOgF,EAAEo4F,YAAcn4F,EAAEm4F,UACpB,GAAK0uH,GAAaC,EAQvB,OAAO,EAPP,IAAIC,EAAQlyN,OAAOqC,KAAK6I,GACpBinN,EAAQnyN,OAAOqC,KAAK8I,GACxB,OAAO+mN,EAAM11N,SAAW21N,EAAM31N,QAAU01N,EAAM7/G,OAAM,SAAU34G,GAC5D,OAAOm4N,EAAW3mN,EAAExR,GAAMyR,EAAEzR,OAMhC,MAAOgK,GAEP,OAAO,GAcb,SAAS0uN,EAAc7pN,EAAK9O,GAC1B,IAAK,IAAI6C,EAAI,EAAGA,EAAIiM,EAAI/L,OAAQF,IAC9B,GAAIu1N,EAAWtpN,EAAIjM,GAAI7C,GAAQ,OAAO6C,EAExC,OAAQ,EAMV,SAASsiG,EAAM/9F,GACb,IAAIg0M,GAAS,EACb,OAAO,WACAA,IACHA,GAAS,EACTh0M,EAAGhC,MAAMrL,KAAMwR,aAKrB,IAAIqtN,EAAW,uBAEXC,EAAc,CAChB,YACA,YACA,UAGEC,EAAkB,CACpB,eACA,UACA,cACA,UACA,eACA,UACA,gBACA,YACA,YACA,cACA,gBACA,kBAOEh9N,EAAS,CAKXo5M,sBAAuB3uM,OAAO7E,OAAO,MAKrC+vL,QAAQ,EAKRsnC,eAAe,EAKfC,UAAU,EAKV5mD,aAAa,EAKb6mD,aAAc,KAKdC,YAAa,KAKbC,gBAAiB,GAMjB72F,SAAU/7H,OAAO7E,OAAO,MAMxB03N,cAAelB,EAMfmB,eAAgBnB,EAMhBoB,iBAAkBpB,EAKlBqB,gBAAiBxlN,EAKjBylN,qBAAsBrB,EAMtBsB,YAAavB,EAMbwB,OAAO,EAKPC,gBAAiBb,GAUfc,EAAgB,8JAKpB,SAASC,EAAYhpN,GACnB,IAAInN,GAAKmN,EAAM,IAAIgB,WAAW,GAC9B,OAAa,KAANnO,GAAoB,KAANA,EAMvB,SAASk6F,EAAK92F,EAAK7G,EAAKD,EAAKkxB,GAC3B3qB,OAAOE,eAAeK,EAAK7G,EAAK,CAC9B9B,MAAO6B,EACPkxB,aAAcA,EACdD,UAAU,EACV0I,cAAc,IAOlB,IAAImgM,EAAS,IAAIjtN,OAAQ,KAAQ+sN,EAAoB,OAAI,WACzD,SAASppB,EAAWpkM,GAClB,IAAI0tN,EAAO7sN,KAAKb,GAAhB,CAGA,IAAI07B,EAAW17B,EAAKqC,MAAM,KAC1B,OAAO,SAAU3H,GACf,IAAK,IAAIjE,EAAI,EAAGA,EAAIilC,EAAS/kC,OAAQF,IAAK,CACxC,IAAKiE,EAAO,OACZA,EAAMA,EAAIghC,EAASjlC,IAErB,OAAOiE,IAOX,IAmCIizN,EAnCAC,EAAW,aAAe,GAG1B1kB,EAA8B,qBAAXnnM,OACnB8rN,EAAkC,qBAAlBC,iBAAmCA,cAActrM,SACjEurM,EAAeF,GAAUC,cAActrM,SAAS1uB,cAChDk6N,GAAK9kB,GAAannM,OAAOd,UAAUC,UAAUpN,cAC7Cm6N,GAAOD,IAAM,eAAentN,KAAKmtN,IACjCE,GAAQF,IAAMA,GAAGt7N,QAAQ,YAAc,EACvCy7N,GAASH,IAAMA,GAAGt7N,QAAQ,SAAW,EAErC07N,IADaJ,IAAMA,GAAGt7N,QAAQ,WACrBs7N,IAAM,uBAAuBntN,KAAKmtN,KAA0B,QAAjBD,GAGpDM,IAFWL,IAAM,cAAcntN,KAAKmtN,IACtBA,IAAM,YAAYntN,KAAKmtN,IAC9BA,IAAMA,GAAGxtN,MAAM,mBAGtB8tN,GAAc,GAAKx/F,MAEnBy/F,IAAkB,EACtB,GAAIrlB,EACF,IACE,IAAI/kM,GAAO,GACXhK,OAAOE,eAAe8J,GAAM,UAAW,CACrCkgB,IAAK,WAEHkqM,IAAkB,KAGtBxsN,OAAO7N,iBAAiB,eAAgB,KAAMiQ,IAC9C,MAAOtG,KAMX,IAAI2wN,GAAoB,WAWtB,YAVkB/6N,IAAdk6N,IAOAA,GALGzkB,IAAc2kB,GAA4B,qBAAX,EAAAp7M,IAGtB,EAAAA,EAAO,YAAgD,WAAlC,EAAAA,EAAO,WAAW7T,IAAI6vN,UAKpDd,GAILf,GAAW1jB,GAAannM,OAAO2sN,6BAGnC,SAASC,GAAUprD,GACjB,MAAuB,oBAATA,GAAuB,cAAc1iK,KAAK0iK,EAAKnmK,YAG/D,IAIIwxN,GAJA7f,GACgB,qBAAX1gL,QAA0BsgM,GAAStgM,SACvB,qBAAZY,SAA2B0/L,GAAS1/L,QAAQG,SAMnDw/L,GAFiB,qBAAR7gM,KAAuB4gM,GAAS5gM,KAElCA,IAGc,WACnB,SAASA,IACPpgC,KAAKi0B,IAAMznB,OAAO7E,OAAO,MAY3B,OAVAy4B,EAAI34B,UAAUsV,IAAM,SAAc7W,GAChC,OAAyB,IAAlBlG,KAAKi0B,IAAI/tB,IAElBk6B,EAAI34B,UAAUlH,IAAM,SAAc2F,GAChClG,KAAKi0B,IAAI/tB,IAAO,GAElBk6B,EAAI34B,UAAUiiE,MAAQ,WACpB1pE,KAAKi0B,IAAMznB,OAAO7E,OAAO,OAGpBy4B,EAdW,GAoBtB,IAAIzpB,GAAOqD,EA8FPC,GAAM,EAMNinN,GAAM,WACRlhO,KAAKoN,GAAK6M,KACVja,KAAKmhO,KAAO,IAGdD,GAAIz5N,UAAU25N,OAAS,SAAiBpzL,GACtChuC,KAAKmhO,KAAK53N,KAAKykC,IAGjBkzL,GAAIz5N,UAAU45N,UAAY,SAAoBrzL,GAC5Ch7B,EAAOhT,KAAKmhO,KAAMnzL,IAGpBkzL,GAAIz5N,UAAU65N,OAAS,WACjBJ,GAAI/yN,QACN+yN,GAAI/yN,OAAOozN,OAAOvhO,OAItBkhO,GAAIz5N,UAAUo/D,OAAS,WAErB,IAAIs6J,EAAOnhO,KAAKmhO,KAAK7yN,QAOrB,IAAK,IAAIxF,EAAI,EAAGC,EAAIo4N,EAAKn4N,OAAQF,EAAIC,EAAGD,IACtCq4N,EAAKr4N,GAAGgqC,UAOZouL,GAAI/yN,OAAS,KACb,IAAIqzN,GAAc,GAElB,SAASC,GAAYtzN,GACnBqzN,GAAYj4N,KAAK4E,GACjB+yN,GAAI/yN,OAASA,EAGf,SAASuzN,KACPF,GAAY5rN,MACZsrN,GAAI/yN,OAASqzN,GAAYA,GAAYx4N,OAAS,GAKhD,IAAIukK,GAAQ,SACVz8E,EACAzuF,EACAiiG,EACA3oE,EACAw8J,EACAp4L,EACA4uJ,EACAgzE,GAEA3hO,KAAK8wF,IAAMA,EACX9wF,KAAKqC,KAAOA,EACZrC,KAAKskG,SAAWA,EAChBtkG,KAAK27B,KAAOA,EACZ37B,KAAKm4L,IAAMA,EACXn4L,KAAKqvG,QAAKvpG,EACV9F,KAAKD,QAAUA,EACfC,KAAK4hO,eAAY97N,EACjB9F,KAAK6hO,eAAY/7N,EACjB9F,KAAK8hO,eAAYh8N,EACjB9F,KAAKkG,IAAM7D,GAAQA,EAAK6D,IACxBlG,KAAK2uJ,iBAAmBA,EACxB3uJ,KAAKk4L,uBAAoBpyL,EACzB9F,KAAKG,YAAS2F,EACd9F,KAAK43C,KAAM,EACX53C,KAAKq6M,UAAW,EAChBr6M,KAAK+hO,cAAe,EACpB/hO,KAAKwtK,WAAY,EACjBxtK,KAAKgiO,UAAW,EAChBhiO,KAAKiiO,QAAS,EACdjiO,KAAK2hO,aAAeA,EACpB3hO,KAAKkiO,eAAYp8N,EACjB9F,KAAKmiO,oBAAqB,GAGxBtd,GAAqB,CAAEpgH,MAAO,CAAE7kE,cAAc,IAIlDilL,GAAmBpgH,MAAM/tE,IAAM,WAC7B,OAAO12B,KAAKk4L,mBAGd1rL,OAAOC,iBAAkB8gK,GAAM9lK,UAAWo9M,IAE1C,IAAIud,GAAmB,SAAUzmM,QACjB,IAATA,IAAkBA,EAAO,IAE9B,IAAI3H,EAAO,IAAIu5I,GAGf,OAFAv5I,EAAK2H,KAAOA,EACZ3H,EAAKw5I,WAAY,EACVx5I,GAGT,SAASquM,GAAiBp8N,GACxB,OAAO,IAAIsnK,QAAMznK,OAAWA,OAAWA,EAAW0S,OAAOvS,IAO3D,SAASq8N,GAAYniG,GACnB,IAAIoiG,EAAS,IAAIh1D,GACfptC,EAAMrvC,IACNqvC,EAAM99H,KAIN89H,EAAM77B,UAAY67B,EAAM77B,SAASh2F,QACjC6xH,EAAMxkG,KACNwkG,EAAMg4D,IACNh4D,EAAMpgI,QACNogI,EAAMwuB,iBACNxuB,EAAMwhG,cAWR,OATAY,EAAOlzH,GAAK8wB,EAAM9wB,GAClBkzH,EAAOloB,SAAWl6E,EAAMk6E,SACxBkoB,EAAOr8N,IAAMi6H,EAAMj6H,IACnBq8N,EAAO/0D,UAAYrtC,EAAMqtC,UACzB+0D,EAAOX,UAAYzhG,EAAMyhG,UACzBW,EAAOV,UAAY1hG,EAAM0hG,UACzBU,EAAOT,UAAY3hG,EAAM2hG,UACzBS,EAAOL,UAAY/hG,EAAM+hG,UACzBK,EAAOP,UAAW,EACXO,EAQT,IAAIC,GAAap3N,MAAM3D,UACnBg7N,GAAej2N,OAAO7E,OAAO66N,IAE7BE,GAAiB,CACnB,OACA,MACA,QACA,UACA,SACA,OACA,WAMFA,GAAe18N,SAAQ,SAAUzB,GAE/B,IAAIgoC,EAAWi2L,GAAWj+N,GAC1Bs/F,EAAI4+H,GAAcl+N,GAAQ,WACxB,IAAIgN,EAAO,GAAIyJ,EAAMxJ,UAAUxI,OAC/B,MAAQgS,IAAQzJ,EAAMyJ,GAAQxJ,UAAWwJ,GAEzC,IAEIklH,EAFA/pH,EAASo2B,EAASlhC,MAAMrL,KAAMuR,GAC9BoxN,EAAK3iO,KAAK4iO,OAEd,OAAQr+N,GACN,IAAK,OACL,IAAK,UACH27H,EAAW3uH,EACX,MACF,IAAK,SACH2uH,EAAW3uH,EAAKjD,MAAM,GACtB,MAKJ,OAHI4xH,GAAYyiG,EAAGE,aAAa3iG,GAEhCyiG,EAAGG,IAAIj8J,SACA1wD,QAMX,IAAI4sN,GAAYv2N,OAAO6L,oBAAoBoqN,IAMvCO,IAAgB,EAEpB,SAASC,GAAiB7+N,GACxB4+N,GAAgB5+N,EASlB,IAAI8+N,GAAW,SAAmB9+N,GAChCpE,KAAKoE,MAAQA,EACbpE,KAAK8iO,IAAM,IAAI5B,GACflhO,KAAKmjO,QAAU,EACft/H,EAAIz/F,EAAO,SAAUpE,MACjBoL,MAAMiD,QAAQjK,IACZ67N,EACFmD,GAAah/N,EAAOq+N,IAEpBY,GAAYj/N,EAAOq+N,GAAcM,IAEnC/iO,KAAK6iO,aAAaz+N,IAElBpE,KAAKsjO,KAAKl/N,IA+Bd,SAASg/N,GAAcj1N,EAAQyzF,GAE7BzzF,EAAOgpF,UAAYyK,EASrB,SAASyhI,GAAal1N,EAAQyzF,EAAK/yF,GACjC,IAAK,IAAI/F,EAAI,EAAGC,EAAI8F,EAAK7F,OAAQF,EAAIC,EAAGD,IAAK,CAC3C,IAAI5C,EAAM2I,EAAK/F,GACf+6F,EAAI11F,EAAQjI,EAAK07F,EAAI17F,KASzB,SAASyuD,GAASvwD,EAAOm/N,GAIvB,IAAIZ,EAHJ,GAAK7xN,EAAS1M,MAAUA,aAAiBmpK,IAkBzC,OAdIn8E,EAAOhtF,EAAO,WAAaA,EAAMw+N,kBAAkBM,GACrDP,EAAKv+N,EAAMw+N,OAEXI,KACCnC,OACAz1N,MAAMiD,QAAQjK,IAAUgK,EAAchK,KACvCoI,OAAOquC,aAAaz2C,KACnBA,EAAMm8L,SAEPoiC,EAAK,IAAIO,GAAS9+N,IAEhBm/N,GAAcZ,GAChBA,EAAGQ,UAEER,EAMT,SAASa,GACPz2N,EACA7G,EACAD,EACAw9N,EACAC,GAEA,IAAIZ,EAAM,IAAI5B,GAEVhiN,EAAW1S,OAAO60B,yBAAyBt0B,EAAK7G,GACpD,IAAIgZ,IAAsC,IAA1BA,EAAS0gB,aAAzB,CAKA,IAAI8mB,EAASxnC,GAAYA,EAASwX,IAC9BugE,EAAS/3E,GAAYA,EAAS+U,IAC5ByyB,IAAUuwC,GAAgC,IAArBzlF,UAAUxI,SACnC/C,EAAM8G,EAAI7G,IAGZ,IAAIy9N,GAAWD,GAAW/uK,GAAQ1uD,GAClCuG,OAAOE,eAAeK,EAAK7G,EAAK,CAC9BixB,YAAY,EACZyI,cAAc,EACdlJ,IAAK,WACH,IAAItyB,EAAQsiD,EAASA,EAAOrmD,KAAK0M,GAAO9G,EAUxC,OATIi7N,GAAI/yN,SACN20N,EAAIxB,SACAqC,IACFA,EAAQb,IAAIxB,SACRl2N,MAAMiD,QAAQjK,IAChBw/N,GAAYx/N,KAIXA,GAET6vB,IAAK,SAAyBskK,GAC5B,IAAIn0L,EAAQsiD,EAASA,EAAOrmD,KAAK0M,GAAO9G,EAEpCsyL,IAAWn0L,GAAUm0L,IAAWA,GAAUn0L,IAAUA,GAQpDsiD,IAAWuwC,IACXA,EACFA,EAAO52F,KAAK0M,EAAKwrL,GAEjBtyL,EAAMsyL,EAERorC,GAAWD,GAAW/uK,GAAQ4jI,GAC9BuqC,EAAIj8J,cAUV,SAAS5yC,GAAK9lB,EAAQjI,EAAKD,GAMzB,GAAImF,MAAMiD,QAAQF,IAAWmvN,EAAkBp3N,GAG7C,OAFAiI,EAAOnF,OAASiG,KAAKmQ,IAAIjR,EAAOnF,OAAQ9C,GACxCiI,EAAO1E,OAAOvD,EAAK,EAAGD,GACfA,EAET,GAAIC,KAAOiI,KAAYjI,KAAOsG,OAAO/E,WAEnC,OADA0G,EAAOjI,GAAOD,EACPA,EAET,IAAI08N,EAAK,EAASC,OAClB,OAAIz0N,EAAOoyL,QAAWoiC,GAAMA,EAAGQ,QAKtBl9N,EAEJ08N,GAILa,GAAkBb,EAAGv+N,MAAO8B,EAAKD,GACjC08N,EAAGG,IAAIj8J,SACA5gE,IALLkI,EAAOjI,GAAOD,EACPA,GAUX,SAAS8+L,GAAK52L,EAAQjI,GAMpB,GAAIkF,MAAMiD,QAAQF,IAAWmvN,EAAkBp3N,GAC7CiI,EAAO1E,OAAOvD,EAAK,OADrB,CAIA,IAAIy8N,EAAK,EAASC,OACdz0N,EAAOoyL,QAAWoiC,GAAMA,EAAGQ,SAO1B/xI,EAAOjjF,EAAQjI,YAGbiI,EAAOjI,GACTy8N,GAGLA,EAAGG,IAAIj8J,WAOT,SAAS+8J,GAAax/N,GACpB,IAAK,IAAI8L,OAAI,EAAUpH,EAAI,EAAGC,EAAI3E,EAAM4E,OAAQF,EAAIC,EAAGD,IACrDoH,EAAI9L,EAAM0E,GACVoH,GAAKA,EAAE0yN,QAAU1yN,EAAE0yN,OAAOE,IAAIxB,SAC1Bl2N,MAAMiD,QAAQ6B,IAChB0zN,GAAY1zN,GAhNlBgzN,GAASz7N,UAAU67N,KAAO,SAAev2N,GAEvC,IADA,IAAI8B,EAAOrC,OAAOqC,KAAK9B,GACdjE,EAAI,EAAGA,EAAI+F,EAAK7F,OAAQF,IAC/B06N,GAAkBz2N,EAAK8B,EAAK/F,KAOhCo6N,GAASz7N,UAAUo7N,aAAe,SAAuB1iM,GACvD,IAAK,IAAIr3B,EAAI,EAAGC,EAAIo3B,EAAMn3B,OAAQF,EAAIC,EAAGD,IACvC6rD,GAAQx0B,EAAMr3B,KAgNlB,IAAIoyM,GAASn5M,EAAOo5M,sBAoBpB,SAASjyE,GAAWt3G,EAAIjlB,GACtB,IAAKA,EAAQ,OAAOilB,EAOpB,IANA,IAAI1rB,EAAK29N,EAAOC,EAEZj1N,EAAOuyM,GACP9/K,QAAQG,QAAQ90B,GAChBH,OAAOqC,KAAKlC,GAEP7D,EAAI,EAAGA,EAAI+F,EAAK7F,OAAQF,IAC/B5C,EAAM2I,EAAK/F,GAEC,WAAR5C,IACJ29N,EAAQjyM,EAAG1rB,GACX49N,EAAUn3N,EAAKzG,GACVkrF,EAAOx/D,EAAI1rB,GAGd29N,IAAUC,GACV11N,EAAcy1N,IACdz1N,EAAc01N,IAEd56F,GAAU26F,EAAOC,GANjB7vM,GAAIrC,EAAI1rB,EAAK49N,IASjB,OAAOlyM,EAMT,SAASmyM,GACPC,EACAC,EACAjjE,GAEA,OAAKA,EAoBI,WAEL,IAAIkjE,EAAmC,oBAAbD,EACtBA,EAAS5jO,KAAK2gK,EAAIA,GAClBijE,EACAE,EAAmC,oBAAdH,EACrBA,EAAU3jO,KAAK2gK,EAAIA,GACnBgjE,EACJ,OAAIE,EACKh7F,GAAUg7F,EAAcC,GAExBA,GA7BNF,EAGAD,EAQE,WACL,OAAO96F,GACe,oBAAb+6F,EAA0BA,EAAS5jO,KAAKL,KAAMA,MAAQikO,EACxC,oBAAdD,EAA2BA,EAAU3jO,KAAKL,KAAMA,MAAQgkO,IAV1DC,EAHAD,EA2Db,SAASI,GACPJ,EACAC,GAEA,IAAInkM,EAAMmkM,EACND,EACEA,EAAU/iO,OAAOgjO,GACjB74N,MAAMiD,QAAQ41N,GACZA,EACA,CAACA,GACLD,EACJ,OAAOlkM,EACHukM,GAAYvkM,GACZA,EAGN,SAASukM,GAAaC,GAEpB,IADA,IAAIxkM,EAAM,GACDh3B,EAAI,EAAGA,EAAIw7N,EAAMt7N,OAAQF,KACD,IAA3Bg3B,EAAI/6B,QAAQu/N,EAAMx7N,KACpBg3B,EAAIv2B,KAAK+6N,EAAMx7N,IAGnB,OAAOg3B,EAcT,SAASykM,GACPP,EACAC,EACAjjE,EACA96J,GAEA,IAAI45B,EAAMtzB,OAAO7E,OAAOq8N,GAAa,MACrC,OAAIC,EAEKv8N,EAAOo4B,EAAKmkM,GAEZnkM,EAzEXo7K,GAAO74M,KAAO,SACZ2hO,EACAC,EACAjjE,GAEA,OAAKA,EAcE+iE,GAAcC,EAAWC,EAAUjjE,GAbpCijE,GAAgC,oBAAbA,EAQdD,EAEFD,GAAcC,EAAWC,IAmCpClF,EAAgB/4N,SAAQ,SAAUtG,GAChCw7M,GAAOx7M,GAAQ0kO,MAyBjBtF,EAAY94N,SAAQ,SAAUW,GAC5Bu0M,GAAOv0M,EAAO,KAAO49N,MASvBrpB,GAAO/5E,MAAQ,SACb6iG,EACAC,EACAjjE,EACA96J,GAMA,GAHI89N,IAAcrD,KAAeqD,OAAYl+N,GACzCm+N,IAAatD,KAAesD,OAAWn+N,IAEtCm+N,EAAY,OAAOz3N,OAAO7E,OAAOq8N,GAAa,MAInD,IAAKA,EAAa,OAAOC,EACzB,IAAIj/M,EAAM,GAEV,IAAK,IAAIw/M,KADT98N,EAAOsd,EAAKg/M,GACMC,EAAU,CAC1B,IAAI9jO,EAAS6kB,EAAIw/M,GACb//H,EAAQw/H,EAASO,GACjBrkO,IAAWiL,MAAMiD,QAAQlO,KAC3BA,EAAS,CAACA,IAEZ6kB,EAAIw/M,GAASrkO,EACTA,EAAOc,OAAOwjG,GACdr5F,MAAMiD,QAAQo2F,GAASA,EAAQ,CAACA,GAEtC,OAAOz/E,GAMTk2L,GAAOljM,MACPkjM,GAAO77E,QACP67E,GAAO1uC,OACP0uC,GAAOp9E,SAAW,SAChBkmG,EACAC,EACAjjE,EACA96J,GAKA,IAAK89N,EAAa,OAAOC,EACzB,IAAIj/M,EAAMxY,OAAO7E,OAAO,MAGxB,OAFAD,EAAOsd,EAAKg/M,GACRC,GAAYv8N,EAAOsd,EAAKi/M,GACrBj/M,GAETk2L,GAAOn5E,QAAUgiG,GAKjB,IAAIU,GAAe,SAAUT,EAAWC,GACtC,YAAoBn+N,IAAbm+N,EACHD,EACAC,GA+BN,SAASS,GAAgB/kO,EAASqhK,GAChC,IAAIhpJ,EAAQrY,EAAQqY,MACpB,GAAKA,EAAL,CACA,IACIlP,EAAG7C,EAAK4D,EADRi2B,EAAM,GAEV,GAAI10B,MAAMiD,QAAQ2J,GAAQ,CACxBlP,EAAIkP,EAAMhP,OACV,MAAOF,IACL7C,EAAM+R,EAAMlP,GACO,kBAAR7C,IACT4D,EAAOq7G,EAASj/G,GAChB65B,EAAIj2B,GAAQ,CAAElD,KAAM,YAKnB,GAAIyH,EAAc4J,GACvB,IAAK,IAAI9R,KAAO8R,EACd/R,EAAM+R,EAAM9R,GACZ2D,EAAOq7G,EAASh/G,GAChB45B,EAAIj2B,GAAQuE,EAAcnI,GACtBA,EACA,CAAEU,KAAMV,QAEL,EAOXtG,EAAQqY,MAAQ8nB,GAMlB,SAAS6kM,GAAiBhlO,EAASqhK,GACjC,IAAIwL,EAAS7sK,EAAQ6sK,OACrB,GAAKA,EAAL,CACA,IAAIn/E,EAAa1tF,EAAQ6sK,OAAS,GAClC,GAAIphK,MAAMiD,QAAQm+J,GAChB,IAAK,IAAI1jK,EAAI,EAAGA,EAAI0jK,EAAOxjK,OAAQF,IACjCukF,EAAWm/E,EAAO1jK,IAAM,CAAE6D,KAAM6/J,EAAO1jK,SAEpC,GAAIsF,EAAco+J,GACvB,IAAK,IAAItmK,KAAOsmK,EAAQ,CACtB,IAAIvmK,EAAMumK,EAAOtmK,GACjBmnF,EAAWnnF,GAAOkI,EAAcnI,GAC5ByB,EAAO,CAAEiF,KAAMzG,GAAOD,GACtB,CAAE0G,KAAM1G,QAEL,GAYb,SAAS2+N,GAAqBjlO,GAC5B,IAAIklO,EAAOllO,EAAQmgI,WACnB,GAAI+kG,EACF,IAAK,IAAI3+N,KAAO2+N,EAAM,CACpB,IAAIC,EAASD,EAAK3+N,GACI,oBAAX4+N,IACTD,EAAK3+N,GAAO,CAAEgB,KAAM49N,EAAQhyL,OAAQgyL,KAoB5C,SAASC,GACP5kO,EACAskG,EACAu8D,GAkBA,GAZqB,oBAAVv8D,IACTA,EAAQA,EAAM9kG,SAGhB+kO,GAAejgI,EAAOu8D,GACtB2jE,GAAgBlgI,EAAOu8D,GACvB4jE,GAAoBngI,IAMfA,EAAMmzB,QACLnzB,EAAMugI,UACR7kO,EAAS4kO,GAAa5kO,EAAQskG,EAAMugI,QAAShkE,IAE3Cv8D,EAAMw4B,QACR,IAAK,IAAIn0H,EAAI,EAAGC,EAAI07F,EAAMw4B,OAAOj0H,OAAQF,EAAIC,EAAGD,IAC9C3I,EAAS4kO,GAAa5kO,EAAQskG,EAAMw4B,OAAOn0H,GAAIk4J,GAKrD,IACI96J,EADAvG,EAAU,GAEd,IAAKuG,KAAO/F,EACV8kO,EAAW/+N,GAEb,IAAKA,KAAOu+F,EACLrT,EAAOjxF,EAAQ+F,IAClB++N,EAAW/+N,GAGf,SAAS++N,EAAY/+N,GACnB,IAAIg/N,EAAQhqB,GAAOh1M,IAAQu+N,GAC3B9kO,EAAQuG,GAAOg/N,EAAM/kO,EAAO+F,GAAMu+F,EAAMv+F,GAAM86J,EAAI96J,GAEpD,OAAOvG,EAQT,SAASwlO,GACPxlO,EACAgH,EACAyG,EACAg4N,GAGA,GAAkB,kBAAPh4N,EAAX,CAGA,IAAIi4N,EAAS1lO,EAAQgH,GAErB,GAAIyqF,EAAOi0I,EAAQj4N,GAAO,OAAOi4N,EAAOj4N,GACxC,IAAIk4N,EAAcpgH,EAAS93G,GAC3B,GAAIgkF,EAAOi0I,EAAQC,GAAgB,OAAOD,EAAOC,GACjD,IAAIC,EAAe1H,EAAWyH,GAC9B,GAAIl0I,EAAOi0I,EAAQE,GAAiB,OAAOF,EAAOE,GAElD,IAAIzlM,EAAMulM,EAAOj4N,IAAOi4N,EAAOC,IAAgBD,EAAOE,GAOtD,OAAOzlM,GAOT,SAAS0lM,GACPt/N,EACAu/N,EACA3oC,EACA97B,GAEA,IAAIxyJ,EAAOi3N,EAAYv/N,GACnBw/N,GAAUt0I,EAAO0rG,EAAW52L,GAC5B9B,EAAQ04L,EAAU52L,GAElBy/N,EAAeC,GAAaroG,QAAS/uH,EAAK7H,MAC9C,GAAIg/N,GAAgB,EAClB,GAAID,IAAWt0I,EAAO5iF,EAAM,WAC1BpK,GAAQ,OACH,GAAc,KAAVA,GAAgBA,IAAU25N,EAAU73N,GAAM,CAGnD,IAAI2/N,EAAcD,GAAaptN,OAAQhK,EAAK7H,OACxCk/N,EAAc,GAAKF,EAAeE,KACpCzhO,GAAQ,GAKd,QAAc0B,IAAV1B,EAAqB,CACvBA,EAAQ0hO,GAAoB9kE,EAAIxyJ,EAAMtI,GAGtC,IAAI6/N,EAAoB/C,GACxBC,IAAgB,GAChBtuK,GAAQvwD,GACR6+N,GAAgB8C,GASlB,OAAO3hO,EAMT,SAAS0hO,GAAqB9kE,EAAIxyJ,EAAMtI,GAEtC,GAAKkrF,EAAO5iF,EAAM,WAAlB,CAGA,IAAIq1F,EAAMr1F,EAAKutF,QAYf,OAAIilE,GAAMA,EAAGtgK,SAASo8L,gBACWh3L,IAA/Bk7J,EAAGtgK,SAASo8L,UAAU52L,SACHJ,IAAnBk7J,EAAGglE,OAAO9/N,GAEH86J,EAAGglE,OAAO9/N,GAIG,oBAAR29F,GAA6C,aAAvBoiI,GAAQz3N,EAAK7H,MAC7Ck9F,EAAIxjG,KAAK2gK,GACTn9D,GAsFN,IAAIqiI,GAAsB,qBAO1B,SAASD,GAAS54N,GAChB,IAAIwF,EAAQxF,GAAMA,EAAGoC,WAAWoD,MAAMqzN,IACtC,OAAOrzN,EAAQA,EAAM,GAAK,GAG5B,SAASszN,GAAYzuN,EAAGC,GACtB,OAAOsuN,GAAQvuN,KAAOuuN,GAAQtuN,GAGhC,SAASiuN,GAAcj/N,EAAMy/N,GAC3B,IAAKh7N,MAAMiD,QAAQ+3N,GACjB,OAAOD,GAAWC,EAAez/N,GAAQ,GAAK,EAEhD,IAAK,IAAImC,EAAI,EAAGkS,EAAMorN,EAAcp9N,OAAQF,EAAIkS,EAAKlS,IACnD,GAAIq9N,GAAWC,EAAct9N,GAAInC,GAC/B,OAAOmC,EAGX,OAAQ,EAiDV,SAASu9N,GAAahiO,EAAK28J,EAAI3iI,GAG7BojM,KACA,IACE,GAAIzgE,EAAI,CACN,IAAI5yH,EAAM4yH,EACV,MAAQ5yH,EAAMA,EAAIs1J,QAAU,CAC1B,IAAI4gC,EAAQl2L,EAAI1tC,SAAS4lO,cACzB,GAAIhC,EACF,IAAK,IAAIx7N,EAAI,EAAGA,EAAIw7N,EAAMt7N,OAAQF,IAChC,IACE,IAAI4mI,GAAgD,IAAtC40F,EAAMx7N,GAAGzI,KAAK+tC,EAAK/pC,EAAK28J,EAAI3iI,GAC1C,GAAIqxG,EAAW,OACf,MAAOx/H,IACPq2N,GAAkBr2N,GAAGk+B,EAAK,wBAMpCm4L,GAAkBliO,EAAK28J,EAAI3iI,GAC3B,QACAqjM,MAIJ,SAAS8E,GACP35K,EACA9sD,EACAwR,EACAyvJ,EACA3iI,GAEA,IAAIyB,EACJ,IACEA,EAAMvuB,EAAOs7C,EAAQxhD,MAAMtL,EAASwR,GAAQs7C,EAAQxsD,KAAKN,GACrD+/B,IAAQA,EAAIygK,QAAUg9B,EAAUz9L,KAASA,EAAI2mM,WAC/C3mM,EAAI2pI,OAAM,SAAUv5J,GAAK,OAAOm2N,GAAYn2N,EAAG8wJ,EAAI3iI,EAAO,uBAG1DyB,EAAI2mM,UAAW,GAEjB,MAAOv2N,IACPm2N,GAAYn2N,GAAG8wJ,EAAI3iI,GAErB,OAAOyB,EAGT,SAASymM,GAAmBliO,EAAK28J,EAAI3iI,GACnC,GAAIt8B,EAAOm9N,aACT,IACE,OAAOn9N,EAAOm9N,aAAa7+N,KAAK,KAAMgE,EAAK28J,EAAI3iI,GAC/C,MAAOnuB,IAGHA,KAAM7L,GACRqiO,GAASx2N,GAAG,KAAM,uBAIxBw2N,GAASriO,EAAK28J,EAAI3iI,GAGpB,SAASqoM,GAAUriO,EAAK28J,EAAI3iI,GAK1B,IAAKk9K,IAAa2kB,GAA8B,qBAAZxpN,QAGlC,MAAMrS,EAFNqS,QAAQhL,MAAMrH,GAQlB,IAyBIsiO,GAzBAC,IAAmB,EAEnBt2L,GAAY,GACZuwK,IAAU,EAEd,SAASgmB,KACPhmB,IAAU,EACV,IAAIimB,EAASx2L,GAAUhiC,MAAM,GAC7BgiC,GAAUtnC,OAAS,EACnB,IAAK,IAAIF,EAAI,EAAGA,EAAIg+N,EAAO99N,OAAQF,IACjCg+N,EAAOh+N,KAwBX,GAAuB,qBAAZ9G,SAA2Bg/N,GAASh/N,SAAU,CACvD,IAAI0d,GAAI1d,QAAQC,UAChB0kO,GAAY,WACVjnN,GAAE9W,KAAKi+N,IAMHpG,IAASz7N,WAAWgV,IAE1B4sN,IAAmB,OACd,GAAKtG,IAAoC,qBAArBhsK,mBACzB0sK,GAAS1sK,mBAEuB,yCAAhCA,iBAAiB7kD,WAoBjBk3N,GAJiC,qBAAjBI,cAAgC/F,GAAS+F,cAI7C,WACVA,aAAaF,KAIH,WACV7hO,WAAW6hO,GAAgB,QAzB5B,CAID,IAAI5iE,GAAU,EACV5vG,GAAW,IAAIC,iBAAiBuyK,IAChCxxH,GAAWziG,SAASgvG,eAAeppG,OAAOyrJ,KAC9C5vG,GAASM,QAAQ0gD,GAAU,CACzBoV,eAAe,IAEjBk8G,GAAY,WACV1iE,IAAWA,GAAU,GAAK,EAC1B5uD,GAAShzG,KAAOmW,OAAOyrJ,KAEzB2iE,IAAmB,EAerB,SAASI,GAAUv1L,EAAIlc,GACrB,IAAIrsB,EAiBJ,GAhBAonC,GAAU/mC,MAAK,WACb,GAAIkoC,EACF,IACEA,EAAGpxC,KAAKk1B,GACR,MAAOrlB,IACPm2N,GAAYn2N,GAAGqlB,EAAK,iBAEbrsB,GACTA,EAASqsB,MAGRsrL,KACHA,IAAU,EACV8lB,OAGGl1L,GAAyB,qBAAZzvC,QAChB,OAAO,IAAIA,SAAQ,SAAUC,GAC3BiH,EAAWjH,KAiGjB,IAAIglO,GAAc,IAAIhG,GAOtB,SAASxsG,GAAUxuH,GACjBihO,GAAUjhO,EAAKghO,IACfA,GAAYv9J,QAGd,SAASw9J,GAAWjhO,EAAKkhO,GACvB,IAAIr+N,EAAG+F,EACHu4N,EAAMh8N,MAAMiD,QAAQpI,GACxB,MAAMmhO,IAAQt2N,EAAS7K,IAASuG,OAAO66N,SAASphO,IAAQA,aAAesnK,IAAvE,CAGA,GAAItnK,EAAI28N,OAAQ,CACd,IAAI0E,EAAQrhO,EAAI28N,OAAOE,IAAI11N,GAC3B,GAAI+5N,EAAKpqN,IAAIuqN,GACX,OAEFH,EAAK5mO,IAAI+mO,GAEX,GAAIF,EAAK,CACPt+N,EAAI7C,EAAI+C,OACR,MAAOF,IAAOo+N,GAAUjhO,EAAI6C,GAAIq+N,OAC3B,CACLt4N,EAAOrC,OAAOqC,KAAK5I,GACnB6C,EAAI+F,EAAK7F,OACT,MAAOF,IAAOo+N,GAAUjhO,EAAI4I,EAAK/F,IAAKq+N,KA6B1C,IAAII,GAAiBtvL,GAAO,SAAUpuC,GACpC,IAAI6gC,EAA6B,MAAnB7gC,EAAKsK,OAAO,GAC1BtK,EAAO6gC,EAAU7gC,EAAKyE,MAAM,GAAKzE,EACjC,IAAI29N,EAA6B,MAAnB39N,EAAKsK,OAAO,GAC1BtK,EAAO29N,EAAU39N,EAAKyE,MAAM,GAAKzE,EACjC,IAAI6lI,EAA6B,MAAnB7lI,EAAKsK,OAAO,GAE1B,OADAtK,EAAO6lI,EAAU7lI,EAAKyE,MAAM,GAAKzE,EAC1B,CACLA,KAAMA,EACNuhG,KAAMo8H,EACN93F,QAASA,EACThlG,QAASA,MAIb,SAAS+8L,GAAiBt4N,EAAK6xJ,GAC7B,SAAS0mE,IACP,IAAIC,EAAcn2N,UAEdrC,EAAMu4N,EAAQv4N,IAClB,IAAI/D,MAAMiD,QAAQc,GAOhB,OAAOq3N,GAAwBr3N,EAAK,KAAMqC,UAAWwvJ,EAAI,gBALzD,IADA,IAAIuhE,EAASpzN,EAAIb,QACRxF,EAAI,EAAGA,EAAIy5N,EAAOv5N,OAAQF,IACjC09N,GAAwBjE,EAAOz5N,GAAI,KAAM6+N,EAAa3mE,EAAI,gBAQhE,OADA0mE,EAAQv4N,IAAMA,EACPu4N,EAGT,SAASE,GACPrgI,EACAsgI,EACAtnO,EACAunO,EACAC,EACA/mE,GAEA,IAAIn3J,EAAcukC,EAAKolH,EAAKhiH,EAC5B,IAAK3nC,KAAQ09F,EACFn5D,EAAMm5D,EAAG19F,GAClB2pJ,EAAMq0E,EAAMh+N,GACZ2nC,EAAQ+1L,GAAe19N,GACnBmzN,EAAQ5uL,KAKD4uL,EAAQxpE,IACbwpE,EAAQ5uL,EAAIj/B,OACdi/B,EAAMm5D,EAAG19F,GAAQ49N,GAAgBr5L,EAAK4yH,IAEpCi8D,EAAOzrL,EAAM45D,QACfh9D,EAAMm5D,EAAG19F,GAAQk+N,EAAkBv2L,EAAM3nC,KAAMukC,EAAKoD,EAAMk+F,UAE5DnvI,EAAIixC,EAAM3nC,KAAMukC,EAAKoD,EAAMk+F,QAASl+F,EAAM9G,QAAS8G,EAAM/sC,SAChD2pC,IAAQolH,IACjBA,EAAIrkJ,IAAMi/B,EACVm5D,EAAG19F,GAAQ2pJ,IAGf,IAAK3pJ,KAAQg+N,EACP7K,EAAQz1H,EAAG19F,MACb2nC,EAAQ+1L,GAAe19N,GACvBi+N,EAAUt2L,EAAM3nC,KAAMg+N,EAAMh+N,GAAO2nC,EAAMk+F,UAO/C,SAASs4F,GAAgBnkI,EAAKokI,EAASvoO,GAIrC,IAAIgoO,EAHA7jI,aAAe0pE,KACjB1pE,EAAMA,EAAIxhG,KAAK3C,OAASmkG,EAAIxhG,KAAK3C,KAAO,KAG1C,IAAIwoO,EAAUrkI,EAAIokI,GAElB,SAASE,IACPzoO,EAAK2L,MAAMrL,KAAMwR,WAGjBwB,EAAO00N,EAAQv4N,IAAKg5N,GAGlBnL,EAAQkL,GAEVR,EAAUD,GAAgB,CAACU,IAGvBztB,EAAMwtB,EAAQ/4N,MAAQ8tN,EAAOiL,EAAQ9vN,SAEvCsvN,EAAUQ,EACVR,EAAQv4N,IAAI5F,KAAK4+N,IAGjBT,EAAUD,GAAgB,CAACS,EAASC,IAIxCT,EAAQtvN,QAAS,EACjByrF,EAAIokI,GAAWP,EAKjB,SAASU,GACP/lO,EACAuzK,EACA9kF,GAKA,IAAI20I,EAAc7vD,EAAKj2K,QAAQqY,MAC/B,IAAIglN,EAAQyI,GAAZ,CAGA,IAAI3lM,EAAM,GACNo7E,EAAQ74G,EAAK64G,MACbljG,EAAQ3V,EAAK2V,MACjB,GAAI0iM,EAAMx/F,IAAUw/F,EAAM1iM,GACxB,IAAK,IAAI9R,KAAOu/N,EAAa,CAC3B,IAAIroH,EAAS2gH,EAAU73N,GAiBvBmiO,GAAUvoM,EAAK9nB,EAAO9R,EAAKk3G,GAAQ,IACnCirH,GAAUvoM,EAAKo7E,EAAOh1G,EAAKk3G,GAAQ,GAGvC,OAAOt9E,GAGT,SAASuoM,GACPvoM,EACA/rB,EACA7N,EACAk3G,EACAkrH,GAEA,GAAI5tB,EAAM3mM,GAAO,CACf,GAAIq9E,EAAOr9E,EAAM7N,GAKf,OAJA45B,EAAI55B,GAAO6N,EAAK7N,GACXoiO,UACIv0N,EAAK7N,IAEP,EACF,GAAIkrF,EAAOr9E,EAAMqpG,GAKtB,OAJAt9E,EAAI55B,GAAO6N,EAAKqpG,GACXkrH,UACIv0N,EAAKqpG,IAEP,EAGX,OAAO,EAiBT,SAASmrH,GAAyBjkI,GAChC,IAAK,IAAIx7F,EAAI,EAAGA,EAAIw7F,EAASt7F,OAAQF,IACnC,GAAIsC,MAAMiD,QAAQi2F,EAASx7F,IACzB,OAAOsC,MAAM3D,UAAUxG,OAAOoK,MAAM,GAAIi5F,GAG5C,OAAOA,EAOT,SAASkkI,GAAmBlkI,GAC1B,OAAO64H,EAAY74H,GACf,CAAC+9H,GAAgB/9H,IACjBl5F,MAAMiD,QAAQi2F,GACZmkI,GAAuBnkI,QACvBx+F,EAGR,SAAS4iO,GAAY10M,GACnB,OAAO0mL,EAAM1mL,IAAS0mL,EAAM1mL,EAAK2H,OAASuhM,EAAQlpM,EAAKw5I,WAGzD,SAASi7D,GAAwBnkI,EAAUqkI,GACzC,IACI7/N,EAAGa,EAAG8O,EAAW01B,EADjBrO,EAAM,GAEV,IAAKh3B,EAAI,EAAGA,EAAIw7F,EAASt7F,OAAQF,IAC/Ba,EAAI26F,EAASx7F,GACTk0N,EAAQrzN,IAAmB,mBAANA,IACzB8O,EAAYqnB,EAAI92B,OAAS,EACzBmlC,EAAOrO,EAAIrnB,GAEPrN,MAAMiD,QAAQ1E,GACZA,EAAEX,OAAS,IACbW,EAAI8+N,GAAuB9+N,GAAKg/N,GAAe,IAAM,IAAM7/N,GAEvD4/N,GAAW/+N,EAAE,KAAO++N,GAAWv6L,KACjCrO,EAAIrnB,GAAa4pN,GAAgBl0L,EAAKxS,KAAQhyB,EAAE,GAAIgyB,MACpDhyB,EAAE2B,SAEJw0B,EAAIv2B,KAAK8B,MAAMy0B,EAAKn2B,IAEbwzN,EAAYxzN,GACjB++N,GAAWv6L,GAIbrO,EAAIrnB,GAAa4pN,GAAgBl0L,EAAKxS,KAAOhyB,GAC9B,KAANA,GAETm2B,EAAIv2B,KAAK84N,GAAgB14N,IAGvB++N,GAAW/+N,IAAM++N,GAAWv6L,GAE9BrO,EAAIrnB,GAAa4pN,GAAgBl0L,EAAKxS,KAAOhyB,EAAEgyB,OAG3CshM,EAAO34H,EAASskI,WAClBluB,EAAM/wM,EAAEmnF,MACRksI,EAAQrzN,EAAEzD,MACVw0M,EAAMiuB,KACNh/N,EAAEzD,IAAM,UAAYyiO,EAAc,IAAM7/N,EAAI,MAE9Cg3B,EAAIv2B,KAAKI,KAIf,OAAOm2B,EAKT,SAAS+oM,GAAa7nE,GACpB,IAAIj/B,EAAUi/B,EAAGtgK,SAASqhI,QACtBA,IACFi/B,EAAG8nE,UAA+B,oBAAZ/mG,EAClBA,EAAQ1hI,KAAK2gK,GACbj/B,GAIR,SAASgnG,GAAgB/nE,GACvB,IAAI7qJ,EAAS6yN,GAAchoE,EAAGtgK,SAAS8rK,OAAQxL,GAC3C7qJ,IACF8sN,IAAgB,GAChBz2N,OAAOqC,KAAKsH,GAAQnQ,SAAQ,SAAUE,GAYlCs9N,GAAkBxiE,EAAI96J,EAAKiQ,EAAOjQ,OAGtC+8N,IAAgB,IAIpB,SAAS+F,GAAex8D,EAAQxL,GAC9B,GAAIwL,EAAQ,CAOV,IALA,IAAIr2J,EAAS3J,OAAO7E,OAAO,MACvBkH,EAAOuyM,GACP9/K,QAAQG,QAAQ+qI,GAChBhgK,OAAOqC,KAAK29J,GAEP1jK,EAAI,EAAGA,EAAI+F,EAAK7F,OAAQF,IAAK,CACpC,IAAI5C,EAAM2I,EAAK/F,GAEf,GAAY,WAAR5C,EAAJ,CACA,IAAI+iO,EAAaz8D,EAAOtmK,GAAKyG,KACzBjD,EAASs3J,EACb,MAAOt3J,EAAQ,CACb,GAAIA,EAAOo/N,WAAa13I,EAAO1nF,EAAOo/N,UAAWG,GAAa,CAC5D9yN,EAAOjQ,GAAOwD,EAAOo/N,UAAUG,GAC/B,MAEFv/N,EAASA,EAAOg6L,QAElB,IAAKh6L,EACH,GAAI,YAAa8iK,EAAOtmK,GAAM,CAC5B,IAAIgjO,EAAiB18D,EAAOtmK,GAAK61F,QACjC5lF,EAAOjQ,GAAiC,oBAAnBgjO,EACjBA,EAAe7oO,KAAK2gK,GACpBkoE,OACK,GAKf,OAAO/yN,GAWX,SAASgzN,GACP7kI,EACAvkG,GAEA,IAAKukG,IAAaA,EAASt7F,OACzB,MAAO,GAGT,IADA,IAAIq7H,EAAQ,GACHv7H,EAAI,EAAGC,EAAIu7F,EAASt7F,OAAQF,EAAIC,EAAGD,IAAK,CAC/C,IAAI27F,EAAQH,EAASx7F,GACjBzG,EAAOoiG,EAAMpiG,KAOjB,GALIA,GAAQA,EAAK64G,OAAS74G,EAAK64G,MAAMouB,aAC5BjnI,EAAK64G,MAAMouB,KAIf7kC,EAAM1kG,UAAYA,GAAW0kG,EAAMm9H,YAAc7hO,IACpDsC,GAAqB,MAAbA,EAAKinI,MAUZjF,EAAMtoC,UAAYsoC,EAAMtoC,QAAU,KAAKxyF,KAAKk7F,OAT7C,CACA,IAAI56F,EAAOxH,EAAKinI,KACZA,EAAQjF,EAAMx6H,KAAUw6H,EAAMx6H,GAAQ,IACxB,aAAd46F,EAAM3T,IACRw4C,EAAK//H,KAAK8B,MAAMi+H,EAAM7kC,EAAMH,UAAY,IAExCglC,EAAK//H,KAAKk7F,IAOhB,IAAK,IAAI2kI,KAAU/kG,EACbA,EAAM+kG,GAAQvqH,MAAMwqH,YACfhlG,EAAM+kG,GAGjB,OAAO/kG,EAGT,SAASglG,GAAcr1M,GACrB,OAAQA,EAAKw5I,YAAcx5I,EAAK2tM,cAA+B,MAAd3tM,EAAK2H,KAKxD,SAASwmM,GAAoBnuM,GAC3B,OAAOA,EAAKw5I,WAAax5I,EAAK2tM,aAKhC,SAAS2H,GACPjlG,EACAklG,EACAC,GAEA,IAAI1pM,EACA2pM,EAAiBj9N,OAAOqC,KAAK06N,GAAavgO,OAAS,EACnD0gO,EAAWrlG,IAAUA,EAAMslG,SAAWF,EACtCvjO,EAAMm+H,GAASA,EAAMulG,KACzB,GAAKvlG,EAEE,IAAIA,EAAMl3C,YAEf,OAAOk3C,EAAMl3C,YACR,GACLu8I,GACAF,GACAA,IAAczM,GACd72N,IAAQsjO,EAAUI,OACjBH,IACAD,EAAUvvB,WAIX,OAAOuvB,EAGP,IAAK,IAAIhF,KADT1kM,EAAM,GACYukG,EACZA,EAAMmgG,IAAuB,MAAbA,EAAM,KACxB1kM,EAAI0kM,GAASqF,GAAoBN,EAAa/E,EAAOngG,EAAMmgG,UAnB/D1kM,EAAM,GAwBR,IAAK,IAAIgqM,KAASP,EACVO,KAAShqM,IACbA,EAAIgqM,GAASC,GAAgBR,EAAaO,IAW9C,OANIzlG,GAAS73H,OAAOquC,aAAawpF,KAC/B,EAAQl3C,YAAcrtD,GAExB+jE,EAAI/jE,EAAK,UAAW4pM,GACpB7lI,EAAI/jE,EAAK,OAAQ55B,GACjB29F,EAAI/jE,EAAK,aAAc2pM,GAChB3pM,EAGT,SAAS+pM,GAAoBN,EAAarjO,EAAKmH,GAC7C,IAAIggF,EAAa,WACf,IAAIvtD,EAAMtuB,UAAUxI,OAASqE,EAAGhC,MAAM,KAAMmG,WAAanE,EAAG,IAC5DyyB,EAAMA,GAAsB,kBAARA,IAAqB10B,MAAMiD,QAAQyxB,GACnD,CAACA,GACD0oM,GAAkB1oM,GACtB,IAAIqgG,EAAQrgG,GAAOA,EAAI,GACvB,OAAOA,KACJqgG,GACe,IAAfrgG,EAAI92B,QAAgBm3H,EAAMqtC,YAAc20D,GAAmBhiG,SAC1Dr6H,EACAg6B,GAYN,OAPIzyB,EAAGw0B,OACLr1B,OAAOE,eAAe68N,EAAarjO,EAAK,CACtCwwB,IAAK22D,EACLl2D,YAAY,EACZyI,cAAc,IAGXytD,EAGT,SAAS08I,GAAgB1lG,EAAOn+H,GAC9B,OAAO,WAAc,OAAOm+H,EAAMn+H,IAQpC,SAAS8jO,GACP/jO,EACA9G,GAEA,IAAI6lB,EAAKlc,EAAGC,EAAG8F,EAAM3I,EACrB,GAAIkF,MAAMiD,QAAQpI,IAAuB,kBAARA,EAE/B,IADA+e,EAAM,IAAI5Z,MAAMnF,EAAI+C,QACfF,EAAI,EAAGC,EAAI9C,EAAI+C,OAAQF,EAAIC,EAAGD,IACjCkc,EAAIlc,GAAK3J,EAAO8G,EAAI6C,GAAIA,QAErB,GAAmB,kBAAR7C,EAEhB,IADA+e,EAAM,IAAI5Z,MAAMnF,GACX6C,EAAI,EAAGA,EAAI7C,EAAK6C,IACnBkc,EAAIlc,GAAK3J,EAAO2J,EAAI,EAAGA,QAEpB,GAAIgI,EAAS7K,GAClB,GAAIm7M,IAAan7M,EAAIy6B,OAAOs4D,UAAW,CACrCh0E,EAAM,GACN,IAAIg0E,EAAW/yF,EAAIy6B,OAAOs4D,YACtB7iF,EAAS6iF,EAASn0D,OACtB,OAAQ1uB,EAAO1T,KACbuiB,EAAIzb,KAAKpK,EAAOgX,EAAO/R,MAAO4gB,EAAIhc,SAClCmN,EAAS6iF,EAASn0D,YAKpB,IAFAh2B,EAAOrC,OAAOqC,KAAK5I,GACnB+e,EAAM,IAAI5Z,MAAMyD,EAAK7F,QAChBF,EAAI,EAAGC,EAAI8F,EAAK7F,OAAQF,EAAIC,EAAGD,IAClC5C,EAAM2I,EAAK/F,GACXkc,EAAIlc,GAAK3J,EAAO8G,EAAIC,GAAMA,EAAK4C,GAQrC,OAJK4xM,EAAM11L,KACTA,EAAM,IAER,EAAM4jN,UAAW,EACV5jN,EAQT,SAASilN,GACPpgO,EACAqgO,EACAlyN,EACAmyN,GAEA,IACI//G,EADAggH,EAAepqO,KAAK0/H,aAAa71H,GAEjCugO,GAEFpyN,EAAQA,GAAS,GACbmyN,IAIFnyN,EAAQtQ,EAAOA,EAAO,GAAIyiO,GAAanyN,IAEzCoyG,EACEggH,EAAapyN,KACc,oBAAnBkyN,EAAgCA,IAAmBA,IAE7D9/G,EACEpqH,KAAKu/H,OAAO11H,KACe,oBAAnBqgO,EAAgCA,IAAmBA,GAG/D,IAAI/7N,EAAS6J,GAASA,EAAMsxH,KAC5B,OAAIn7H,EACKnO,KAAKo+H,eAAe,WAAY,CAAEkL,KAAMn7H,GAAUi8G,GAElDA,EASX,SAASigH,GAAej9N,GACtB,OAAO+3N,GAAanlO,KAAKU,SAAU,UAAW0M,GAAI,IAASgxN,EAK7D,SAASkM,GAAeC,EAAQ36H,GAC9B,OAAIxkG,MAAMiD,QAAQk8N,IACmB,IAA5BA,EAAOxlO,QAAQ6qG,GAEf26H,IAAW36H,EAStB,SAAS46H,GACPC,EACAvkO,EACAwkO,EACAC,EACAC,GAEA,IAAIC,EAAgB9oO,EAAOwmI,SAASriI,IAAQwkO,EAC5C,OAAIE,GAAkBD,IAAiB5oO,EAAOwmI,SAASriI,GAC9CokO,GAAcM,EAAgBD,GAC5BE,EACFP,GAAcO,EAAeJ,GAC3BE,EACF5M,EAAU4M,KAAkBzkO,OAEbJ,IAAjB2kO,EAQT,SAASK,GACPzoO,EACAyuF,EACA1sF,EACA2mO,EACAC,GAEA,GAAI5mO,EACF,GAAK0M,EAAS1M,GAKP,CAIL,IAAI2P,EAHA3I,MAAMiD,QAAQjK,KAChBA,EAAQwvF,EAASxvF,IAGnB,IAAIyiC,EAAO,SAAW3gC,GACpB,GACU,UAARA,GACQ,UAARA,GACAy3N,EAAoBz3N,GAEpB6N,EAAO1R,MACF,CACL,IAAIsE,EAAOtE,EAAK64G,OAAS74G,EAAK64G,MAAMv0G,KACpCoN,EAAOg3N,GAAUhpO,EAAO29N,YAAY5uI,EAAKnqF,EAAMT,GAC3C7D,EAAKqiI,WAAariI,EAAKqiI,SAAW,IAClCriI,EAAK64G,QAAU74G,EAAK64G,MAAQ,IAElC,IAAI+vH,EAAe/lH,EAASh/G,GACxBglO,EAAgBnN,EAAU73N,GAC9B,KAAM+kO,KAAgBl3N,MAAWm3N,KAAiBn3N,KAChDA,EAAK7N,GAAO9B,EAAM8B,GAEd8kO,GAAQ,CACV,IAAIzjI,EAAKllG,EAAKklG,KAAOllG,EAAKklG,GAAK,IAC/BA,EAAI,UAAYrhG,GAAQ,SAAUg1N,GAChC92N,EAAM8B,GAAOg1N,KAMrB,IAAK,IAAIh1N,KAAO9B,EAAOyiC,EAAM3gC,QAGjC,OAAO7D,EAQT,SAAS8oO,GACP3hO,EACA4hO,GAEA,IAAInzL,EAASj4C,KAAKqrO,eAAiBrrO,KAAKqrO,aAAe,IACnDhnC,EAAOpsJ,EAAOzuC,GAGlB,OAAI66L,IAAS+mC,IAIb/mC,EAAOpsJ,EAAOzuC,GAASxJ,KAAKU,SAAStB,gBAAgBoK,GAAOnJ,KAC1DL,KAAKsrO,aACL,KACAtrO,MAEFurO,GAAWlnC,EAAO,aAAe76L,GAAQ,IARhC66L,EAgBX,SAASmnC,GACPnnC,EACA76L,EACAtD,GAGA,OADAqlO,GAAWlnC,EAAO,WAAa76L,GAAStD,EAAO,IAAMA,EAAO,KAAM,GAC3Dm+L,EAGT,SAASknC,GACPlnC,EACAn+L,EACA+7N,GAEA,GAAI72N,MAAMiD,QAAQg2L,GAChB,IAAK,IAAIv7L,EAAI,EAAGA,EAAIu7L,EAAKr7L,OAAQF,IAC3Bu7L,EAAKv7L,IAAyB,kBAAZu7L,EAAKv7L,IACzB2iO,GAAepnC,EAAKv7L,GAAK5C,EAAM,IAAM4C,EAAIm5N,QAI7CwJ,GAAepnC,EAAMn+L,EAAK+7N,GAI9B,SAASwJ,GAAgBz3M,EAAM9tB,EAAK+7N,GAClCjuM,EAAKqmL,UAAW,EAChBrmL,EAAK9tB,IAAMA,EACX8tB,EAAKiuM,OAASA,EAKhB,SAASyJ,GAAqBrpO,EAAM+B,GAClC,GAAIA,EACF,GAAKgK,EAAchK,GAKZ,CACL,IAAImjG,EAAKllG,EAAKklG,GAAKllG,EAAKklG,GAAK7/F,EAAO,GAAIrF,EAAKklG,IAAM,GACnD,IAAK,IAAIrhG,KAAO9B,EAAO,CACrB,IAAIrD,EAAWwmG,EAAGrhG,GACdylO,EAAOvnO,EAAM8B,GACjBqhG,EAAGrhG,GAAOnF,EAAW,GAAGE,OAAOF,EAAU4qO,GAAQA,QAIvD,OAAOtpO,EAKT,SAASupO,GACPz8N,EACA2wB,EAEA+rM,EACAC,GAEAhsM,EAAMA,GAAO,CAAE6pM,SAAUkC,GACzB,IAAK,IAAI/iO,EAAI,EAAGA,EAAIqG,EAAInG,OAAQF,IAAK,CACnC,IAAIwgI,EAAOn6H,EAAIrG,GACXsC,MAAMiD,QAAQi7H,GAChBsiG,GAAmBtiG,EAAMxpG,EAAK+rM,GACrBviG,IAELA,EAAKznG,QACPynG,EAAKj8H,GAAGw0B,OAAQ,GAElB/B,EAAIwpG,EAAKpjI,KAAOojI,EAAKj8H,IAMzB,OAHIy+N,IACF,EAAMlC,KAAOkC,GAERhsM,EAKT,SAASisM,GAAiBC,EAAS53M,GACjC,IAAK,IAAItrB,EAAI,EAAGA,EAAIsrB,EAAOprB,OAAQF,GAAK,EAAG,CACzC,IAAI5C,EAAMkuB,EAAOtrB,GACE,kBAAR5C,GAAoBA,IAC7B8lO,EAAQ53M,EAAOtrB,IAAMsrB,EAAOtrB,EAAI,IASpC,OAAOkjO,EAMT,SAASC,GAAiB7nO,EAAO4xF,GAC/B,MAAwB,kBAAV5xF,EAAqB4xF,EAAS5xF,EAAQA,EAKtD,SAAS8nO,GAAsB/9N,GAC7BA,EAAOg+N,GAAKX,GACZr9N,EAAOi3F,GAAKo4H,EACZrvN,EAAOo3F,GAAK91F,EACZtB,EAAOi+N,GAAKpC,GACZ77N,EAAOqoI,GAAKyzF,GACZ97N,EAAOk+N,GAAKhO,EACZlwN,EAAOiwF,GAAKwgI,EACZzwN,EAAOm+N,GAAKnB,GACZh9N,EAAOo+N,GAAKlC,GACZl8N,EAAOq+N,GAAKhC,GACZr8N,EAAOg2H,GAAK2mG,GACZ38N,EAAOkuN,GAAKgG,GACZl0N,EAAOm3F,GAAK88H,GACZj0N,EAAOs+N,GAAKb,GACZz9N,EAAOu+N,GAAKhB,GACZv9N,EAAOk3F,GAAK0mI,GACZ59N,EAAOw+N,GAAKV,GAKd,SAASW,GACPvqO,EACA2V,EACAssF,EACAnkG,EACAy1K,GAEA,IAKIi3D,EALArzB,EAASx5M,KAETL,EAAUi2K,EAAKj2K,QAIfyxF,EAAOjxF,EAAQ,SACjB0sO,EAAYrgO,OAAO7E,OAAOxH,GAE1B0sO,EAAUC,UAAY3sO,IAKtB0sO,EAAY1sO,EAEZA,EAASA,EAAO2sO,WAElB,IAAIC,EAAa9P,EAAOt9N,EAAQC,WAC5BotO,GAAqBD,EAEzB/sO,KAAKqC,KAAOA,EACZrC,KAAKgY,MAAQA,EACbhY,KAAKskG,SAAWA,EAChBtkG,KAAKG,OAASA,EACdH,KAAK2/B,UAAYt9B,EAAKklG,IAAMw1H,EAC5B/8N,KAAKi/L,WAAa+pC,GAAcrpO,EAAQ6sK,OAAQrsK,GAChDH,KAAKqkI,MAAQ,WAOX,OANKm1E,EAAOj6E,QACV+pG,GACEjnO,EAAKmoJ,YACLgvD,EAAOj6E,OAAS4pG,GAAa7kI,EAAUnkG,IAGpCq5M,EAAOj6E,QAGhB/yH,OAAOE,eAAe1M,KAAM,cAAe,CACzCm3B,YAAY,EACZT,IAAK,WACH,OAAO4yM,GAAqBjnO,EAAKmoJ,YAAaxqJ,KAAKqkI,YAKnD0oG,IAEF/sO,KAAKU,SAAWf,EAEhBK,KAAKu/H,OAASv/H,KAAKqkI,QACnBrkI,KAAK0/H,aAAe4pG,GAAqBjnO,EAAKmoJ,YAAaxqJ,KAAKu/H,SAG9D5/H,EAAQG,SACVE,KAAKm8N,GAAK,SAAUzkN,EAAGC,EAAGhO,EAAG8Z,GAC3B,IAAI08G,EAAQ1sH,GAAco5N,EAAWn1N,EAAGC,EAAGhO,EAAG8Z,EAAGupN,GAKjD,OAJI7sG,IAAU/0H,MAAMiD,QAAQ8xH,KAC1BA,EAAM2hG,UAAYniO,EAAQG,SAC1BqgI,EAAMyhG,UAAYzhO,GAEbggI,GAGTngI,KAAKm8N,GAAK,SAAUzkN,EAAGC,EAAGhO,EAAG8Z,GAAK,OAAOhQ,GAAco5N,EAAWn1N,EAAGC,EAAGhO,EAAG8Z,EAAGupN,IAMlF,SAASC,GACPr3D,EACAknB,EACAz6L,EACAwqO,EACAvoI,GAEA,IAAI3kG,EAAUi2K,EAAKj2K,QACfqY,EAAQ,GACRytN,EAAc9lO,EAAQqY,MAC1B,GAAI0iM,EAAM+qB,GACR,IAAK,IAAIv/N,KAAOu/N,EACdztN,EAAM9R,GAAOs/N,GAAat/N,EAAKu/N,EAAa3oC,GAAaigC,QAGvDriB,EAAMr4M,EAAK64G,QAAUgyH,GAAWl1N,EAAO3V,EAAK64G,OAC5Cw/F,EAAMr4M,EAAK2V,QAAUk1N,GAAWl1N,EAAO3V,EAAK2V,OAGlD,IAAIm1N,EAAgB,IAAIP,GACtBvqO,EACA2V,EACAssF,EACAuoI,EACAj3D,GAGEz1C,EAAQxgI,EAAQR,OAAOkB,KAAK,KAAM8sO,EAAchR,GAAIgR,GAExD,GAAIhtG,aAAiBotC,GACnB,OAAO6/D,GAA6BjtG,EAAO99H,EAAM8qO,EAAchtO,OAAQR,EAASwtO,GAC3E,GAAI/hO,MAAMiD,QAAQ8xH,GAAQ,CAG/B,IAFA,IAAIktG,EAAS7E,GAAkBroG,IAAU,GACrCrgG,EAAM,IAAI10B,MAAMiiO,EAAOrkO,QAClBF,EAAI,EAAGA,EAAIukO,EAAOrkO,OAAQF,IACjCg3B,EAAIh3B,GAAKskO,GAA6BC,EAAOvkO,GAAIzG,EAAM8qO,EAAchtO,OAAQR,EAASwtO,GAExF,OAAOrtM,GAIX,SAASstM,GAA8BjtG,EAAO99H,EAAMwqO,EAAWltO,EAASwtO,GAItE,IAAIh7M,EAAQmwM,GAAWniG,GASvB,OARAhuG,EAAMyvM,UAAYiL,EAClB16M,EAAM0vM,UAAYliO,EAId0C,EAAKinI,QACNn3G,EAAM9vB,OAAS8vB,EAAM9vB,KAAO,KAAKinI,KAAOjnI,EAAKinI,MAEzCn3G,EAGT,SAAS+6M,GAAYt7M,EAAIjlB,GACvB,IAAK,IAAIzG,KAAOyG,EACdilB,EAAGszF,EAASh/G,IAAQyG,EAAKzG,GA7D7BgmO,GAAqBU,GAAwBnlO,WA0E7C,IAAI6lO,GAAsB,CACxBhxK,KAAM,SAAe6jE,EAAOotG,GAC1B,GACEptG,EAAM+3D,oBACL/3D,EAAM+3D,kBAAkBj5B,cACzB9+B,EAAM99H,KAAKqzM,UACX,CAEA,IAAI83B,EAAcrtG,EAClBmtG,GAAoBn3B,SAASq3B,EAAaA,OACrC,CACL,IAAI/oI,EAAQ07B,EAAM+3D,kBAAoBu1C,GACpCttG,EACAutG,IAEFjpI,EAAMs4F,OAAOwwC,EAAYptG,EAAMg4D,SAAMryL,EAAWynO,KAIpDp3B,SAAU,SAAmBw3B,EAAUxtG,GACrC,IAAIxgI,EAAUwgI,EAAMwuB,iBAChBlqD,EAAQ07B,EAAM+3D,kBAAoBy1C,EAASz1C,kBAC/C01C,GACEnpI,EACA9kG,EAAQm9L,UACRn9L,EAAQggC,UACRwgG,EACAxgI,EAAQ2kG,WAIZrF,OAAQ,SAAiBkhC,GACvB,IAAIpgI,EAAUogI,EAAMpgI,QAChBm4L,EAAoB/3D,EAAM+3D,kBACzBA,EAAkB21C,aACrB31C,EAAkB21C,YAAa,EAC/BC,GAAS51C,EAAmB,YAE1B/3D,EAAM99H,KAAKqzM,YACT31M,EAAQ8tO,WAMVE,GAAwB71C,GAExB81C,GAAuB91C,GAAmB,KAKhDjoH,QAAS,SAAkBkwD,GACzB,IAAI+3D,EAAoB/3D,EAAM+3D,kBACzBA,EAAkBj5B,eAChB9+B,EAAM99H,KAAKqzM,UAGdu4B,GAAyB/1C,GAAmB,GAF5CA,EAAkBgF,cAQtBgxC,GAAe1hO,OAAOqC,KAAKy+N,IAE/B,SAASa,GACPv4D,EACAvzK,EACAtC,EACAukG,EACAxT,GAEA,IAAIksI,EAAQpnD,GAAZ,CAIA,IAAIw4D,EAAWruO,EAAQW,SAASk3H,MAShC,GANI9mH,EAAS8kK,KACXA,EAAOw4D,EAAS1mO,OAAOkuK,IAKL,oBAATA,EAAX,CAQA,IAAI+rD,EACJ,GAAI3E,EAAQpnD,EAAKsuB,OACfy9B,EAAe/rD,EACfA,EAAOy4D,GAAsB1M,EAAcyM,QAC9BtoO,IAAT8vK,GAIF,OAAO04D,GACL3M,EACAt/N,EACAtC,EACAukG,EACAxT,GAKNzuF,EAAOA,GAAQ,GAIfksO,GAA0B34D,GAGtB8kC,EAAMr4M,EAAKqpJ,QACb8iF,GAAe54D,EAAKj2K,QAAS0C,GAI/B,IAAIy6L,EAAYsrC,GAA0B/lO,EAAMuzK,EAAM9kF,GAGtD,GAAImsI,EAAOrnD,EAAKj2K,QAAQE,YACtB,OAAOotO,GAA0Br3D,EAAMknB,EAAWz6L,EAAMtC,EAASukG,GAKnE,IAAI3kE,EAAYt9B,EAAKklG,GAKrB,GAFAllG,EAAKklG,GAAKllG,EAAKqlK,SAEXu1D,EAAOrnD,EAAKj2K,QAAQ8uO,UAAW,CAKjC,IAAInlG,EAAOjnI,EAAKinI,KAChBjnI,EAAO,GACHinI,IACFjnI,EAAKinI,KAAOA,GAKhBolG,GAAsBrsO,GAGtB,IAAIwH,EAAO+rK,EAAKj2K,QAAQkK,MAAQinF,EAC5BqvC,EAAQ,IAAIotC,GACb,iBAAoBqI,EAAQ,KAAK/rK,EAAQ,IAAMA,EAAQ,IACxDxH,OAAMyD,OAAWA,OAAWA,EAAW/F,EACvC,CAAE61K,KAAMA,EAAMknB,UAAWA,EAAWn9J,UAAWA,EAAWmxD,IAAKA,EAAKwT,SAAUA,GAC9Eq9H,GAGF,OAAOxhG,IAGT,SAASstG,GAEPttG,EAEAhgI,GAEA,IAAIR,EAAU,CACZgvO,cAAc,EACd9zB,aAAc16E,EACdhgI,OAAQA,GAGNyuO,EAAiBzuG,EAAM99H,KAAKusO,eAKhC,OAJIl0B,EAAMk0B,KACRjvO,EAAQR,OAASyvO,EAAezvO,OAChCQ,EAAQP,gBAAkBwvO,EAAexvO,iBAEpC,IAAI+gI,EAAMwuB,iBAAiBinB,KAAKj2K,GAGzC,SAAS+uO,GAAuBrsO,GAE9B,IADA,IAAIiiO,EAAQjiO,EAAK3C,OAAS2C,EAAK3C,KAAO,IAC7BoJ,EAAI,EAAGA,EAAIolO,GAAallO,OAAQF,IAAK,CAC5C,IAAI5C,EAAMgoO,GAAaplO,GACnB/H,EAAWujO,EAAMp+N,GACjB2oO,EAAUvB,GAAoBpnO,GAC9BnF,IAAa8tO,GAAa9tO,GAAYA,EAAS+tO,UACjDxK,EAAMp+N,GAAOnF,EAAWguO,GAAYF,EAAS9tO,GAAY8tO,IAK/D,SAASE,GAAaC,EAAIC,GACxB,IAAI72N,EAAS,SAAUV,EAAGC,GAExBq3N,EAAGt3N,EAAGC,GACNs3N,EAAGv3N,EAAGC,IAGR,OADAS,EAAO02N,SAAU,EACV12N,EAKT,SAASo2N,GAAgB7uO,EAAS0C,GAChC,IAAImM,EAAQ7O,EAAQ+rJ,OAAS/rJ,EAAQ+rJ,MAAMl9I,MAAS,QAChDgjC,EAAS7xC,EAAQ+rJ,OAAS/rJ,EAAQ+rJ,MAAMl6G,OAAU,SACpDnvC,EAAK64G,QAAU74G,EAAK64G,MAAQ,KAAK1sG,GAAQnM,EAAKqpJ,MAAMtnJ,MACtD,IAAImjG,EAAKllG,EAAKklG,KAAOllG,EAAKklG,GAAK,IAC3BxmG,EAAWwmG,EAAG/1D,GACd18B,EAAWzS,EAAKqpJ,MAAM52I,SACtB4lM,EAAM35M,IAENqK,MAAMiD,QAAQtN,IACsB,IAAhCA,EAASgE,QAAQ+P,GACjB/T,IAAa+T,KAEjByyF,EAAG/1D,GAAS,CAAC18B,GAAU7T,OAAOF,IAGhCwmG,EAAG/1D,GAAS18B,EAMhB,IAAIo6N,GAAmB,EACnBC,GAAmB,EAIvB,SAAS17N,GACP1T,EACA+wF,EACAzuF,EACAiiG,EACA8qI,EACAC,GAUA,OARIjkO,MAAMiD,QAAQhM,IAAS86N,EAAY96N,MACrC+sO,EAAoB9qI,EACpBA,EAAWjiG,EACXA,OAAOyD,GAELm3N,EAAOoS,KACTD,EAAoBD,IAEfG,GAAevvO,EAAS+wF,EAAKzuF,EAAMiiG,EAAU8qI,GAGtD,SAASE,GACPvvO,EACA+wF,EACAzuF,EACAiiG,EACA8qI,GAEA,GAAI10B,EAAMr4M,IAASq4M,EAAM,EAAOkoB,QAM9B,OAAOR,KAMT,GAHI1nB,EAAMr4M,IAASq4M,EAAMr4M,EAAKigL,MAC5BxxF,EAAMzuF,EAAKigL,KAERxxF,EAEH,OAAOsxI,KA2BT,IAAIjiG,EAAO9wB,EAELumE,GAdFxqK,MAAMiD,QAAQi2F,IACO,oBAAhBA,EAAS,KAEhBjiG,EAAOA,GAAQ,GACfA,EAAKmoJ,YAAc,CAAEzuD,QAASuI,EAAS,IACvCA,EAASt7F,OAAS,GAEhBomO,IAAsBD,GACxB7qI,EAAWkkI,GAAkBlkI,GACpB8qI,IAAsBF,KAC/B5qI,EAAWikI,GAAwBjkI,IAGlB,kBAARxT,IAETue,EAAMtvG,EAAQE,QAAUF,EAAQE,OAAOovG,IAAOttG,EAAOy9N,gBAAgB1uI,GASnEqvC,EAREp+H,EAAOs9N,cAAcvuI,GAQf,IAAIy8E,GACVxrK,EAAO09N,qBAAqB3uI,GAAMzuF,EAAMiiG,OACxCx+F,OAAWA,EAAW/F,GAEbsC,GAASA,EAAKktO,MAAQ70B,EAAM9kC,EAAOuvD,GAAaplO,EAAQW,SAAU,aAAcowF,IAOnF,IAAIy8E,GACVz8E,EAAKzuF,EAAMiiG,OACXx+F,OAAWA,EAAW/F,GAPhBouO,GAAgBv4D,EAAMvzK,EAAMtC,EAASukG,EAAUxT,IAYzDqvC,EAAQguG,GAAgBr9I,EAAKzuF,EAAMtC,EAASukG,GAE9C,OAAIl5F,MAAMiD,QAAQ8xH,GACTA,EACEu6E,EAAMv6E,IACXu6E,EAAMrrG,IAAOmgI,GAAQrvG,EAAO9wB,GAC5BqrG,EAAMr4M,IAASotO,GAAqBptO,GACjC89H,GAEAiiG,KAIX,SAASoN,GAASrvG,EAAO9wB,EAAI3K,GAO3B,GANAy7B,EAAM9wB,GAAKA,EACO,kBAAd8wB,EAAMrvC,MAERue,OAAKvpG,EACL4+F,GAAQ,GAENg2G,EAAMv6E,EAAM77B,UACd,IAAK,IAAIx7F,EAAI,EAAGC,EAAIo3H,EAAM77B,SAASt7F,OAAQF,EAAIC,EAAGD,IAAK,CACrD,IAAI27F,EAAQ07B,EAAM77B,SAASx7F,GACvB4xM,EAAMj2G,EAAM3T,OACdksI,EAAQv4H,EAAM4K,KAAQ4tH,EAAOv4H,IAAwB,QAAdD,EAAM3T,MAC7C0+I,GAAQ/qI,EAAO4K,EAAI3K,IAS3B,SAAS+qI,GAAsBptO,GACzByO,EAASzO,EAAK8yB,QAChBs/F,GAASpyH,EAAK8yB,OAEZrkB,EAASzO,EAAK47H,QAChBxJ,GAASpyH,EAAK47H,OAMlB,SAASyxG,GAAY1uE,GACnBA,EAAG2uE,OAAS,KACZ3uE,EAAGqqE,aAAe,KAClB,IAAI1rO,EAAUqhK,EAAGtgK,SACbkvO,EAAc5uE,EAAG/gK,OAASN,EAAQk7M,aAClCsyB,EAAgByC,GAAeA,EAAY7vO,QAC/CihK,EAAGzhC,OAAS4pG,GAAaxpO,EAAQkwO,gBAAiB1C,GAClDnsE,EAAGthC,aAAeq9F,EAKlB/7D,EAAGm7D,GAAK,SAAUzkN,EAAGC,EAAGhO,EAAG8Z,GAAK,OAAOhQ,GAAcutJ,EAAItpJ,EAAGC,EAAGhO,EAAG8Z,GAAG,IAGrEu9I,EAAG5iC,eAAiB,SAAU1mH,EAAGC,EAAGhO,EAAG8Z,GAAK,OAAOhQ,GAAcutJ,EAAItpJ,EAAGC,EAAGhO,EAAG8Z,GAAG,IAIjF,IAAIqsN,EAAaF,GAAeA,EAAYvtO,KAW1CmhO,GAAkBxiE,EAAI,SAAU8uE,GAAcA,EAAW50H,OAAS6hH,EAAa,MAAM,GACrFyG,GAAkBxiE,EAAI,aAAcrhK,EAAQowO,kBAAoBhT,EAAa,MAAM,GAIvF,IA4PI5uN,GA5PA6hO,GAA2B,KAE/B,SAASC,GAAaxvG,GAEpByrG,GAAqBzrG,EAAIh5H,WAEzBg5H,EAAIh5H,UAAU+5H,UAAY,SAAUn0H,GAClC,OAAO25N,GAAS35N,EAAIrN,OAGtBygI,EAAIh5H,UAAUyoO,QAAU,WACtB,IAiBI/vG,EAjBA6gC,EAAKhhK,KACLwkG,EAAMw8D,EAAGtgK,SACTvB,EAASqlG,EAAIrlG,OACb07M,EAAer2G,EAAIq2G,aAEnBA,IACF75C,EAAGthC,aAAe4pG,GAChBzuB,EAAax4M,KAAKmoJ,YAClBwW,EAAGzhC,OACHyhC,EAAGthC,eAMPshC,EAAG/gK,OAAS46M,EAGZ,IAIEm1B,GAA2BhvE,EAC3B7gC,EAAQhhI,EAAOkB,KAAK2gK,EAAGsqE,aAActqE,EAAG5iC,gBACxC,MAAOluH,IACPm2N,GAAYn2N,GAAG8wJ,EAAI,UAYjB7gC,EAAQ6gC,EAAG2uE,OAEb,QACAK,GAA2B,KAmB7B,OAhBI5kO,MAAMiD,QAAQ8xH,IAA2B,IAAjBA,EAAMn3H,SAChCm3H,EAAQA,EAAM,IAGVA,aAAiBotC,KAQrBptC,EAAQiiG,MAGVjiG,EAAMhgI,OAAS06M,EACR16E,GAMX,SAASgwG,GAAYjvB,EAAMrhL,GAOzB,OALEqhL,EAAKrmH,YACJumH,IAA0C,WAA7BF,EAAKxgL,OAAOC,gBAE1BugL,EAAOA,EAAKnlH,SAEPjrF,EAASowM,GACZrhL,EAAKn4B,OAAOw5M,GACZA,EAGN,SAASotB,GACP7zI,EACAp4F,EACAtC,EACAukG,EACAxT,GAEA,IAAI98D,EAAOouM,KAGX,OAFApuM,EAAK2tM,aAAelnI,EACpBzmE,EAAKkuM,UAAY,CAAE7/N,KAAMA,EAAMtC,QAASA,EAASukG,SAAUA,EAAUxT,IAAKA,GACnE98D,EAGT,SAASq6M,GACP5zI,EACA2zI,GAEA,GAAInR,EAAOxiI,EAAQ/uF,QAAUgvM,EAAMjgH,EAAQ21I,WACzC,OAAO31I,EAAQ21I,UAGjB,GAAI11B,EAAMjgH,EAAQtnD,UAChB,OAAOsnD,EAAQtnD,SAGjB,IAAIk9L,EAAQL,GAMZ,GALIK,GAAS31B,EAAMjgH,EAAQ61I,UAA8C,IAAnC71I,EAAQ61I,OAAOvrO,QAAQsrO,IAE3D51I,EAAQ61I,OAAO/mO,KAAK8mO,GAGlBpT,EAAOxiI,EAAQmzC,UAAY8sE,EAAMjgH,EAAQ81I,aAC3C,OAAO91I,EAAQ81I,YAGjB,GAAIF,IAAU31B,EAAMjgH,EAAQ61I,QAAS,CACnC,IAAIA,EAAS71I,EAAQ61I,OAAS,CAACD,GAC3BG,GAAO,EACPC,EAAe,KACfC,EAAe,KAElB,EAAQvvE,IAAI,kBAAkB,WAAc,OAAOnuJ,EAAOs9N,EAAQD,MAEnE,IAAIM,EAAc,SAAUC,GAC1B,IAAK,IAAI9nO,EAAI,EAAGC,EAAIunO,EAAOtnO,OAAQF,EAAIC,EAAGD,IACvCwnO,EAAOxnO,GAAI+nO,eAGVD,IACFN,EAAOtnO,OAAS,EACK,OAAjBynO,IACFp3N,aAAao3N,GACbA,EAAe,MAEI,OAAjBC,IACFr3N,aAAaq3N,GACbA,EAAe,QAKjBzuO,EAAUmpG,GAAK,SAAUtrE,GAE3B26D,EAAQtnD,SAAWg9L,GAAWrwM,EAAKsuM,GAG9BoC,EAGHF,EAAOtnO,OAAS,EAFhB2nO,GAAY,MAMZzuO,EAASkpG,GAAK,SAAUhiG,GAKtBsxM,EAAMjgH,EAAQ21I,aAChB31I,EAAQ/uF,OAAQ,EAChBilO,GAAY,OAIZ7wM,EAAM26D,EAAQx4F,EAASC,GA+C3B,OA7CI4O,EAASgvB,KACPy9L,EAAUz9L,GAERk9L,EAAQviI,EAAQtnD,WAClBrT,EAAIl3B,KAAK3G,EAASC,GAEXq7N,EAAUz9L,EAAI2mC,aACvB3mC,EAAI2mC,UAAU79D,KAAK3G,EAASC,GAExBw4M,EAAM56K,EAAIp0B,SACZ+uF,EAAQ21I,UAAYD,GAAWrwM,EAAIp0B,MAAO0iO,IAGxC1zB,EAAM56K,EAAI8tG,WACZnzC,EAAQ81I,YAAcJ,GAAWrwM,EAAI8tG,QAASwgG,GAC5B,IAAdtuM,EAAI1mB,MACNqhF,EAAQmzC,SAAU,EAElB6iG,EAAezrO,YAAW,WACxByrO,EAAe,KACXzT,EAAQviI,EAAQtnD,WAAa6pL,EAAQviI,EAAQ/uF,SAC/C+uF,EAAQmzC,SAAU,EAClB+iG,GAAY,MAEb7wM,EAAI1mB,OAAS,MAIhBshM,EAAM56K,EAAIn7B,WACZ+rO,EAAe1rO,YAAW,WACxB0rO,EAAe,KACX1T,EAAQviI,EAAQtnD,WAClBjxC,EAGM,QAGP49B,EAAIn7B,YAKb6rO,GAAO,EAEA/1I,EAAQmzC,QACXnzC,EAAQ81I,YACR91I,EAAQtnD,UAMhB,SAAS29L,GAAwBxsI,GAC/B,GAAIl5F,MAAMiD,QAAQi2F,GAChB,IAAK,IAAIx7F,EAAI,EAAGA,EAAIw7F,EAASt7F,OAAQF,IAAK,CACxC,IAAIa,EAAI26F,EAASx7F,GACjB,GAAI4xM,EAAM/wM,KAAO+wM,EAAM/wM,EAAEglJ,mBAAqBwzE,GAAmBx4N,IAC/D,OAAOA,GAUf,SAASonO,GAAY/vE,GACnBA,EAAGrvC,QAAUnlH,OAAO7E,OAAO,MAC3Bq5J,EAAGgwE,eAAgB,EAEnB,IAAIrxM,EAAYqhI,EAAGtgK,SAASqvO,iBACxBpwM,GACFsxM,GAAyBjwE,EAAIrhI,GAMjC,SAASp/B,GAAKixC,EAAOnkC,GACnBc,GAAOgzJ,IAAI3vH,EAAOnkC,GAGpB,SAAS6jO,GAAU1/L,EAAOnkC,GACxBc,GAAOgjO,KAAK3/L,EAAOnkC,GAGrB,SAAS06N,GAAmBv2L,EAAOnkC,GACjC,IAAImlC,EAAUrkC,GACd,OAAO,SAASijO,IACd,IAAItxM,EAAMzyB,EAAGhC,MAAM,KAAMmG,WACb,OAARsuB,GACF0S,EAAQ2+L,KAAK3/L,EAAO4/L,IAK1B,SAASH,GACPjwE,EACArhI,EACA0xM,GAEAljO,GAAS6yJ,EACT4mE,GAAgBjoM,EAAW0xM,GAAgB,GAAI9wO,GAAK2wO,GAAUnJ,GAAmB/mE,GACjF7yJ,QAASrI,EAGX,SAASwrO,GAAa7wG,GACpB,IAAI8wG,EAAS,SACb9wG,EAAIh5H,UAAU05J,IAAM,SAAU3vH,EAAOnkC,GACnC,IAAI2zJ,EAAKhhK,KACT,GAAIoL,MAAMiD,QAAQmjC,GAChB,IAAK,IAAI1oC,EAAI,EAAGC,EAAIyoC,EAAMxoC,OAAQF,EAAIC,EAAGD,IACvCk4J,EAAGG,IAAI3vH,EAAM1oC,GAAIuE,QAGlB2zJ,EAAGrvC,QAAQngF,KAAWwvH,EAAGrvC,QAAQngF,GAAS,KAAKjoC,KAAK8D,GAGjDkkO,EAAOr+N,KAAKs+B,KACdwvH,EAAGgwE,eAAgB,GAGvB,OAAOhwE,GAGTvgC,EAAIh5H,UAAUyvL,MAAQ,SAAU1lJ,EAAOnkC,GACrC,IAAI2zJ,EAAKhhK,KACT,SAASunG,IACPy5D,EAAGmwE,KAAK3/L,EAAO+1D,GACfl6F,EAAGhC,MAAM21J,EAAIxvJ,WAIf,OAFA+1F,EAAGl6F,GAAKA,EACR2zJ,EAAGG,IAAI3vH,EAAO+1D,GACPy5D,GAGTvgC,EAAIh5H,UAAU0pO,KAAO,SAAU3/L,EAAOnkC,GACpC,IAAI2zJ,EAAKhhK,KAET,IAAKwR,UAAUxI,OAEb,OADAg4J,EAAGrvC,QAAUnlH,OAAO7E,OAAO,MACpBq5J,EAGT,GAAI51J,MAAMiD,QAAQmjC,GAAQ,CACxB,IAAK,IAAI2jK,EAAM,EAAGpsM,EAAIyoC,EAAMxoC,OAAQmsM,EAAMpsM,EAAGosM,IAC3Cn0C,EAAGmwE,KAAK3/L,EAAM2jK,GAAM9nM,GAEtB,OAAO2zJ,EAGT,IASIvvH,EATAwjK,EAAMj0C,EAAGrvC,QAAQngF,GACrB,IAAKyjK,EACH,OAAOj0C,EAET,IAAK3zJ,EAEH,OADA2zJ,EAAGrvC,QAAQngF,GAAS,KACbwvH,EAIT,IAAIl4J,EAAImsM,EAAIjsM,OACZ,MAAOF,IAEL,GADA2oC,EAAKwjK,EAAInsM,GACL2oC,IAAOpkC,GAAMokC,EAAGpkC,KAAOA,EAAI,CAC7B4nM,EAAIxrM,OAAOX,EAAG,GACd,MAGJ,OAAOk4J,GAGTvgC,EAAIh5H,UAAU8+H,MAAQ,SAAU/0F,GAC9B,IAAIwvH,EAAKhhK,KAaLi1M,EAAMj0C,EAAGrvC,QAAQngF,GACrB,GAAIyjK,EAAK,CACPA,EAAMA,EAAIjsM,OAAS,EAAIyM,EAAQw/L,GAAOA,EAGtC,IAFA,IAAI1jM,EAAOkE,EAAQjE,UAAW,GAC1B6sB,EAAO,sBAAyBmT,EAAQ,IACnC1oC,EAAI,EAAGC,EAAIksM,EAAIjsM,OAAQF,EAAIC,EAAGD,IACrC09N,GAAwBvxB,EAAInsM,GAAIk4J,EAAIzvJ,EAAMyvJ,EAAI3iI,GAGlD,OAAO2iI,GAMX,IAAI0sE,GAAiB,KAGrB,SAAS8D,GAAkBxwE,GACzB,IAAIywE,EAAqB/D,GAEzB,OADAA,GAAiB1sE,EACV,WACL0sE,GAAiB+D,GAIrB,SAASC,GAAe1wE,GACtB,IAAIrhK,EAAUqhK,EAAGtgK,SAGbP,EAASR,EAAQQ,OACrB,GAAIA,IAAWR,EAAQ8uO,SAAU,CAC/B,MAAOtuO,EAAOO,SAAS+tO,UAAYtuO,EAAOujM,QACxCvjM,EAASA,EAAOujM,QAElBvjM,EAAOgqJ,UAAU5gJ,KAAKy3J,GAGxBA,EAAG0iC,QAAUvjM,EACb6gK,EAAGvgK,MAAQN,EAASA,EAAOM,MAAQugK,EAEnCA,EAAG7W,UAAY,GACf6W,EAAG35B,MAAQ,GAEX25B,EAAG2wE,SAAW,KACd3wE,EAAG40C,UAAY,KACf50C,EAAG20C,iBAAkB,EACrB30C,EAAG6sE,YAAa,EAChB7sE,EAAG/B,cAAe,EAClB+B,EAAGo0C,mBAAoB,EAGzB,SAASw8B,GAAgBnxG,GACvBA,EAAIh5H,UAAUmpC,QAAU,SAAUuvF,EAAOotG,GACvC,IAAIvsE,EAAKhhK,KACL6xO,EAAS7wE,EAAGjyB,IACZ+iG,EAAY9wE,EAAG2uE,OACfoC,EAAwBP,GAAkBxwE,GAC9CA,EAAG2uE,OAASxvG,EAQV6gC,EAAGjyB,IALA+iG,EAKM9wE,EAAGgxE,UAAUF,EAAW3xG,GAHxB6gC,EAAGgxE,UAAUhxE,EAAGjyB,IAAK5O,EAAOotG,GAAW,GAKlDwE,IAEIF,IACFA,EAAOI,QAAU,MAEfjxE,EAAGjyB,MACLiyB,EAAGjyB,IAAIkjG,QAAUjxE,GAGfA,EAAG/gK,QAAU+gK,EAAG0iC,SAAW1iC,EAAG/gK,SAAW+gK,EAAG0iC,QAAQisC,SACtD3uE,EAAG0iC,QAAQ30D,IAAMiyB,EAAGjyB,MAMxBtO,EAAIh5H,UAAUopO,aAAe,WAC3B,IAAI7vE,EAAKhhK,KACLghK,EAAG2wE,UACL3wE,EAAG2wE,SAAS7+L,UAIhB2tF,EAAIh5H,UAAUy1L,SAAW,WACvB,IAAIl8B,EAAKhhK,KACT,IAAIghK,EAAGo0C,kBAAP,CAGA04B,GAAS9sE,EAAI,iBACbA,EAAGo0C,mBAAoB,EAEvB,IAAIj1M,EAAS6gK,EAAG0iC,SACZvjM,GAAWA,EAAOi1M,mBAAsBp0C,EAAGtgK,SAAS+tO,UACtDz7N,EAAO7S,EAAOgqJ,UAAW6W,GAGvBA,EAAG2wE,UACL3wE,EAAG2wE,SAASvuB,WAEd,IAAIt6M,EAAIk4J,EAAGkxE,UAAUlpO,OACrB,MAAOF,IACLk4J,EAAGkxE,UAAUppO,GAAGs6M,WAIdpiD,EAAGpoH,MAAMgqL,QACX5hE,EAAGpoH,MAAMgqL,OAAOO,UAGlBniE,EAAG/B,cAAe,EAElB+B,EAAGgxE,UAAUhxE,EAAG2uE,OAAQ,MAExB7B,GAAS9sE,EAAI,aAEbA,EAAGmwE,OAECnwE,EAAGjyB,MACLiyB,EAAGjyB,IAAIkjG,QAAU,MAGfjxE,EAAG/gK,SACL+gK,EAAG/gK,OAAOE,OAAS,QAKzB,SAASgyO,GACPnxE,EACAtrJ,EACA63N,GAyBA,IAAI6E,EA2CJ,OAlEApxE,EAAGjyB,IAAMr5H,EACJsrJ,EAAGtgK,SAASvB,SACf6hK,EAAGtgK,SAASvB,OAASijO,IAmBvB0L,GAAS9sE,EAAI,eAsBXoxE,EAAkB,WAChBpxE,EAAGpwH,QAAQowH,EAAGkvE,UAAW3C,IAO7B,IAAI8E,GAAQrxE,EAAIoxE,EAAiBp4N,EAAM,CACrCkkE,OAAQ,WACF8iF,EAAG6sE,aAAe7sE,EAAG/B,cACvB6uE,GAAS9sE,EAAI,mBAGhB,GACHusE,GAAY,EAIK,MAAbvsE,EAAG/gK,SACL+gK,EAAG6sE,YAAa,EAChBC,GAAS9sE,EAAI,YAERA,EAGT,SAAS4sE,GACP5sE,EACA87B,EACAn9J,EACAiwM,EACA0C,GAYA,IAAIC,EAAiB3C,EAAYvtO,KAAKmoJ,YAClCgoF,EAAiBxxE,EAAGthC,aACpB+yG,KACDF,IAAmBA,EAAe5I,SAClC6I,IAAmBzV,IAAgByV,EAAe7I,SAClD4I,GAAkBvxE,EAAGthC,aAAakqG,OAAS2I,EAAe3I,OACzD2I,GAAkBvxE,EAAGthC,aAAakqG,MAMlC8I,KACFJ,GACAtxE,EAAGtgK,SAASmvO,iBACZ4C,GAkBF,GAfAzxE,EAAGtgK,SAASm6M,aAAe+0B,EAC3B5uE,EAAG/gK,OAAS2vO,EAER5uE,EAAG2uE,SACL3uE,EAAG2uE,OAAOxvO,OAASyvO,GAErB5uE,EAAGtgK,SAASmvO,gBAAkByC,EAK9BtxE,EAAG7hC,OAASywG,EAAYvtO,KAAK64G,OAAS6hH,EACtC/7D,EAAGp2B,WAAajrG,GAAao9L,EAGzBjgC,GAAa97B,EAAGtgK,SAASsX,MAAO,CAClCirN,IAAgB,GAGhB,IAFA,IAAIjrN,EAAQgpJ,EAAGglE,OACX2M,EAAW3xE,EAAGtgK,SAASkyO,WAAa,GAC/B9pO,EAAI,EAAGA,EAAI6pO,EAAS3pO,OAAQF,IAAK,CACxC,IAAI5C,EAAMysO,EAAS7pO,GACf28N,EAAczkE,EAAGtgK,SAASsX,MAC9BA,EAAM9R,GAAOs/N,GAAat/N,EAAKu/N,EAAa3oC,EAAW97B,GAEzDiiE,IAAgB,GAEhBjiE,EAAGtgK,SAASo8L,UAAYA,EAI1Bn9J,EAAYA,GAAao9L,EACzB,IAAIsU,EAAerwE,EAAGtgK,SAASqvO,iBAC/B/uE,EAAGtgK,SAASqvO,iBAAmBpwM,EAC/BsxM,GAAyBjwE,EAAIrhI,EAAW0xM,GAGpCqB,IACF1xE,EAAGzhC,OAAS4pG,GAAamJ,EAAgB1C,EAAY7vO,SACrDihK,EAAG6vE,gBAQP,SAASgC,GAAkB7xE,GACzB,MAAOA,IAAOA,EAAKA,EAAG0iC,SACpB,GAAI1iC,EAAG40C,UAAa,OAAO,EAE7B,OAAO,EAGT,SAASo4B,GAAwBhtE,EAAI8xE,GACnC,GAAIA,GAEF,GADA9xE,EAAG20C,iBAAkB,EACjBk9B,GAAiB7xE,GACnB,YAEG,GAAIA,EAAG20C,gBACZ,OAEF,GAAI30C,EAAG40C,WAA8B,OAAjB50C,EAAG40C,UAAoB,CACzC50C,EAAG40C,WAAY,EACf,IAAK,IAAI9sM,EAAI,EAAGA,EAAIk4J,EAAG7W,UAAUnhJ,OAAQF,IACvCklO,GAAuBhtE,EAAG7W,UAAUrhJ,IAEtCglO,GAAS9sE,EAAI,cAIjB,SAASitE,GAA0BjtE,EAAI8xE,GACrC,KAAIA,IACF9xE,EAAG20C,iBAAkB,GACjBk9B,GAAiB7xE,OAIlBA,EAAG40C,UAAW,CACjB50C,EAAG40C,WAAY,EACf,IAAK,IAAI9sM,EAAI,EAAGA,EAAIk4J,EAAG7W,UAAUnhJ,OAAQF,IACvCmlO,GAAyBjtE,EAAG7W,UAAUrhJ,IAExCglO,GAAS9sE,EAAI,gBAIjB,SAAS8sE,GAAU9sE,EAAIthK,GAErB+hO,KACA,IAAIx0N,EAAW+zJ,EAAGtgK,SAAShB,GACvB2+B,EAAO3+B,EAAO,QAClB,GAAIuN,EACF,IAAK,IAAInE,EAAI,EAAGooB,EAAIjkB,EAASjE,OAAQF,EAAIooB,EAAGpoB,IAC1C09N,GAAwBv5N,EAASnE,GAAIk4J,EAAI,KAAMA,EAAI3iI,GAGnD2iI,EAAGgwE,eACLhwE,EAAGz6B,MAAM,QAAU7mI,GAErBgiO,KAKF,IAEI/hB,GAAQ,GACRozB,GAAoB,GACpBh2N,GAAM,GAENi2N,IAAU,EACVC,IAAW,EACXzpO,GAAQ,EAKZ,SAAS0pO,KACP1pO,GAAQm2M,GAAM32M,OAAS+pO,GAAkB/pO,OAAS,EAClD+T,GAAM,GAINi2N,GAAUC,IAAW,EAQvB,IAAIE,GAAwB,EAGxBn8F,GAAStkI,KAAKO,IAQlB,GAAIsoM,IAAc+kB,GAAM,CACtB,IAAIjoD,GAAcjkK,OAAOikK,YAEvBA,IAC2B,oBAApBA,GAAYplK,KACnB+jI,KAAWpkI,SAASoxG,YAAY,SAAS+nG,YAMzC/0E,GAAS,WAAc,OAAOqhC,GAAYplK,QAO9C,SAASmgO,KAGP,IAAIC,EAASjmO,EAcb,IAhBA+lO,GAAwBn8F,KACxBi8F,IAAW,EAWXtzB,GAAMphM,MAAK,SAAU7G,EAAGC,GAAK,OAAOD,EAAEtK,GAAKuK,EAAEvK,MAIxC5D,GAAQ,EAAGA,GAAQm2M,GAAM32M,OAAQQ,KACpC6pO,EAAU1zB,GAAMn2M,IACZ6pO,EAAQn1J,QACVm1J,EAAQn1J,SAEV9wE,EAAKimO,EAAQjmO,GACb2P,GAAI3P,GAAM,KACVimO,EAAQrqB,MAmBV,IAAIsqB,EAAiBP,GAAkBzkO,QACnCilO,EAAe5zB,GAAMrxM,QAEzB4kO,KAGAM,GAAmBF,GACnBG,GAAiBF,GAIbtU,IAAYl9N,EAAOk9N,UACrBA,GAAS/xH,KAAK,SAIlB,SAASumI,GAAkB9zB,GACzB,IAAI72M,EAAI62M,EAAM32M,OACd,MAAOF,IAAK,CACV,IAAIuqO,EAAU1zB,EAAM72M,GAChBk4J,EAAKqyE,EAAQryE,GACbA,EAAG2wE,WAAa0B,GAAWryE,EAAG6sE,aAAe7sE,EAAG/B,cAClD6uE,GAAS9sE,EAAI,YASnB,SAAS+sE,GAAyB/sE,GAGhCA,EAAG40C,WAAY,EACfm9B,GAAkBxpO,KAAKy3J,GAGzB,SAASwyE,GAAoB7zB,GAC3B,IAAK,IAAI72M,EAAI,EAAGA,EAAI62M,EAAM32M,OAAQF,IAChC62M,EAAM72M,GAAG8sM,WAAY,EACrBo4B,GAAuBruB,EAAM72M,IAAI,GASrC,SAAS4qO,GAAcL,GACrB,IAAIjmO,EAAKimO,EAAQjmO,GACjB,GAAe,MAAX2P,GAAI3P,GAAa,CAEnB,GADA2P,GAAI3P,IAAM,EACL6lO,GAEE,CAGL,IAAInqO,EAAI62M,GAAM32M,OAAS,EACvB,MAAOF,EAAIU,IAASm2M,GAAM72M,GAAGsE,GAAKimO,EAAQjmO,GACxCtE,IAEF62M,GAAMl2M,OAAOX,EAAI,EAAG,EAAGuqO,QARvB1zB,GAAMp2M,KAAK8pO,GAWRL,KACHA,IAAU,EAMVhM,GAASoM,MASf,IAAIO,GAAQ,EAORtB,GAAU,SACZrxE,EACA4yE,EACAniM,EACA9xC,EACAk0O,GAEA7zO,KAAKghK,GAAKA,EACN6yE,IACF7yE,EAAG2wE,SAAW3xO,MAEhBghK,EAAGkxE,UAAU3oO,KAAKvJ,MAEdL,GACFK,KAAK+hG,OAASpiG,EAAQoiG,KACtB/hG,KAAK8zO,OAASn0O,EAAQm0O,KACtB9zO,KAAK+zO,OAASp0O,EAAQo0O,KACtB/zO,KAAKwwO,OAAS7wO,EAAQ6wO,KACtBxwO,KAAKk+E,OAASv+E,EAAQu+E,QAEtBl+E,KAAK+hG,KAAO/hG,KAAK8zO,KAAO9zO,KAAK+zO,KAAO/zO,KAAKwwO,MAAO,EAElDxwO,KAAKyxC,GAAKA,EACVzxC,KAAKoN,KAAOumO,GACZ3zO,KAAK6yC,QAAS,EACd7yC,KAAKg0O,MAAQh0O,KAAK+zO,KAClB/zO,KAAKi0O,KAAO,GACZj0O,KAAKk0O,QAAU,GACfl0O,KAAKm0O,OAAS,IAAIlT,GAClBjhO,KAAKo0O,UAAY,IAAInT,GACrBjhO,KAAKq0O,WAED,GAEmB,oBAAZT,EACT5zO,KAAK0mD,OAASktL,GAEd5zO,KAAK0mD,OAAS+vJ,EAAUm9B,GACnB5zO,KAAK0mD,SACR1mD,KAAK0mD,OAAS1sC,IASlBha,KAAKoE,MAAQpE,KAAK+zO,UACdjuO,EACA9F,KAAK02B,OAMX27M,GAAQ5qO,UAAUivB,IAAM,WAEtB,IAAItyB,EADJq9N,GAAWzhO,MAEX,IAAIghK,EAAKhhK,KAAKghK,GACd,IACE58J,EAAQpE,KAAK0mD,OAAOrmD,KAAK2gK,EAAIA,GAC7B,MAAO9wJ,IACP,IAAIlQ,KAAK8zO,KAGP,MAAM5jO,GAFNm2N,GAAYn2N,GAAG8wJ,EAAK,uBAA2BhhK,KAAe,WAAI,KAIpE,QAGIA,KAAK+hG,MACP0yB,GAASrwH,GAEXs9N,KACA1hO,KAAKs0O,cAEP,OAAOlwO,GAMTiuO,GAAQ5qO,UAAU85N,OAAS,SAAiBuB,GAC1C,IAAI11N,EAAK01N,EAAI11N,GACRpN,KAAKo0O,UAAUr3N,IAAI3P,KACtBpN,KAAKo0O,UAAU7zO,IAAI6M,GACnBpN,KAAKk0O,QAAQ3qO,KAAKu5N,GACb9iO,KAAKm0O,OAAOp3N,IAAI3P,IACnB01N,EAAI1B,OAAOphO,QAQjBqyO,GAAQ5qO,UAAU6sO,YAAc,WAC9B,IAAIxrO,EAAI9I,KAAKi0O,KAAKjrO,OAClB,MAAOF,IAAK,CACV,IAAIg6N,EAAM9iO,KAAKi0O,KAAKnrO,GACf9I,KAAKo0O,UAAUr3N,IAAI+lN,EAAI11N,KAC1B01N,EAAIzB,UAAUrhO,MAGlB,IAAIkyB,EAAMlyB,KAAKm0O,OACfn0O,KAAKm0O,OAASn0O,KAAKo0O,UACnBp0O,KAAKo0O,UAAYliN,EACjBlyB,KAAKo0O,UAAU1qK,QACfx3C,EAAMlyB,KAAKi0O,KACXj0O,KAAKi0O,KAAOj0O,KAAKk0O,QACjBl0O,KAAKk0O,QAAUhiN,EACflyB,KAAKk0O,QAAQlrO,OAAS,GAOxBqpO,GAAQ5qO,UAAUqrC,OAAS,WAErB9yC,KAAK+zO,KACP/zO,KAAKg0O,OAAQ,EACJh0O,KAAKwwO,KACdxwO,KAAKgpN,MAEL0qB,GAAa1zO,OAQjBqyO,GAAQ5qO,UAAUuhN,IAAM,WACtB,GAAIhpN,KAAK6yC,OAAQ,CACf,IAAIzuC,EAAQpE,KAAK02B,MACjB,GACEtyB,IAAUpE,KAAKoE,OAIf0M,EAAS1M,IACTpE,KAAK+hG,KACL,CAEA,IAAImS,EAAWl0G,KAAKoE,MAEpB,GADApE,KAAKoE,MAAQA,EACTpE,KAAK8zO,KAAM,CACb,IAAIz1M,EAAO,yBAA6Br+B,KAAe,WAAI,IAC3DwmO,GAAwBxmO,KAAKyxC,GAAIzxC,KAAKghK,GAAI,CAAC58J,EAAO8vG,GAAWl0G,KAAKghK,GAAI3iI,QAEtEr+B,KAAKyxC,GAAGpxC,KAAKL,KAAKghK,GAAI58J,EAAO8vG,MAUrCm+H,GAAQ5qO,UAAU8sO,SAAW,WAC3Bv0O,KAAKoE,MAAQpE,KAAK02B,MAClB12B,KAAKg0O,OAAQ,GAMf3B,GAAQ5qO,UAAU65N,OAAS,WACzB,IAAIx4N,EAAI9I,KAAKi0O,KAAKjrO,OAClB,MAAOF,IACL9I,KAAKi0O,KAAKnrO,GAAGw4N,UAOjB+Q,GAAQ5qO,UAAU27M,SAAW,WAC3B,GAAIpjN,KAAK6yC,OAAQ,CAIV7yC,KAAKghK,GAAGo0C,mBACXpiM,EAAOhT,KAAKghK,GAAGkxE,UAAWlyO,MAE5B,IAAI8I,EAAI9I,KAAKi0O,KAAKjrO,OAClB,MAAOF,IACL9I,KAAKi0O,KAAKnrO,GAAGu4N,UAAUrhO,MAEzBA,KAAK6yC,QAAS,IAMlB,IAAI2hM,GAA2B,CAC7Br9M,YAAY,EACZyI,cAAc,EACdlJ,IAAK1c,EACLia,IAAKja,GAGP,SAAS6nB,GAAO1zB,EAAQsmO,EAAWvuO,GACjCsuO,GAAyB99M,IAAM,WAC7B,OAAO12B,KAAKy0O,GAAWvuO,IAEzBsuO,GAAyBvgN,IAAM,SAAsBhuB,GACnDjG,KAAKy0O,GAAWvuO,GAAOD,GAEzBuG,OAAOE,eAAeyB,EAAQjI,EAAKsuO,IAGrC,SAASE,GAAW1zE,GAClBA,EAAGkxE,UAAY,GACf,IAAI17N,EAAOwqJ,EAAGtgK,SACV8V,EAAKwB,OAAS28N,GAAU3zE,EAAIxqJ,EAAKwB,OACjCxB,EAAK6oH,SAAWu1G,GAAY5zE,EAAIxqJ,EAAK6oH,SACrC7oH,EAAKnU,KACPymE,GAASk4F,GAETrsG,GAAQqsG,EAAGpoH,MAAQ,IAAI,GAErBpiC,EAAKsnH,UAAY+2G,GAAa7zE,EAAIxqJ,EAAKsnH,UACvCtnH,EAAK2qH,OAAS3qH,EAAK2qH,QAAUw/F,IAC/BmU,GAAU9zE,EAAIxqJ,EAAK2qH,OAIvB,SAASwzG,GAAW3zE,EAAI+zE,GACtB,IAAIj4C,EAAY97B,EAAGtgK,SAASo8L,WAAa,GACrC9kL,EAAQgpJ,EAAGglE,OAAS,GAGpBn3N,EAAOmyJ,EAAGtgK,SAASkyO,UAAY,GAC/BoC,GAAUh0E,EAAG0iC,QAEZsxC,GACH/R,IAAgB,GAElB,IAAIp8L,EAAO,SAAW3gC,GACpB2I,EAAKtF,KAAKrD,GACV,IAAI9B,EAAQohO,GAAat/N,EAAK6uO,EAAcj4C,EAAW97B,GAuBrDwiE,GAAkBxrN,EAAO9R,EAAK9B,GAK1B8B,KAAO86J,GACXn/H,GAAMm/H,EAAI,SAAU96J,IAIxB,IAAK,IAAIA,KAAO6uO,EAAcluM,EAAM3gC,GACpC+8N,IAAgB,GAGlB,SAASn6J,GAAUk4F,GACjB,IAAI3+J,EAAO2+J,EAAGtgK,SAAS2B,KACvBA,EAAO2+J,EAAGpoH,MAAwB,oBAATv2C,EACrBotJ,GAAQptJ,EAAM2+J,GACd3+J,GAAQ,GACP+L,EAAc/L,KACjBA,EAAO,IAQT,IAAIwM,EAAOrC,OAAOqC,KAAKxM,GACnB2V,EAAQgpJ,EAAGtgK,SAASsX,MAEpBlP,GADUk4J,EAAGtgK,SAAS2+H,QAClBxwH,EAAK7F,QACb,MAAOF,IAAK,CACV,IAAI5C,EAAM2I,EAAK/F,GACX,EAQAkP,GAASo5E,EAAOp5E,EAAO9R,IAMf45N,EAAW55N,IACrB27B,GAAMm/H,EAAI,QAAS96J,GAIvByuD,GAAQtyD,GAAM,GAGhB,SAASotJ,GAASptJ,EAAM2+J,GAEtBygE,KACA,IACE,OAAOp/N,EAAKhC,KAAK2gK,EAAIA,GACrB,MAAO9wJ,IAEP,OADAm2N,GAAYn2N,GAAG8wJ,EAAI,UACZ,GACP,QACA0gE,MAIJ,IAAIuT,GAAyB,CAAElB,MAAM,GAErC,SAASc,GAAc7zE,EAAIljC,GAEzB,IAAIo3G,EAAWl0E,EAAGm0E,kBAAoB3oO,OAAO7E,OAAO,MAEhDytO,EAAQvU,KAEZ,IAAK,IAAI36N,KAAO43H,EAAU,CACxB,IAAIu3G,EAAUv3G,EAAS53H,GACnBwgD,EAA4B,oBAAZ2uL,EAAyBA,EAAUA,EAAQ3+M,IAC3D,EAOC0+M,IAEHF,EAAShvO,GAAO,IAAImsO,GAClBrxE,EACAt6G,GAAU1sC,EACVA,EACAi7N,KAOE/uO,KAAO86J,GACXs0E,GAAet0E,EAAI96J,EAAKmvO,IAa9B,SAASC,GACPnnO,EACAjI,EACAmvO,GAEA,IAAIE,GAAe1U,KACI,oBAAZwU,GACTb,GAAyB99M,IAAM6+M,EAC3BC,GAAqBtvO,GACrBuvO,GAAoBJ,GACxBb,GAAyBvgN,IAAMja,IAE/Bw6N,GAAyB99M,IAAM2+M,EAAQ3+M,IACnC6+M,IAAiC,IAAlBF,EAAQx+N,MACrB2+N,GAAqBtvO,GACrBuvO,GAAoBJ,EAAQ3+M,KAC9B1c,EACJw6N,GAAyBvgN,IAAMohN,EAAQphN,KAAOja,GAWhDxN,OAAOE,eAAeyB,EAAQjI,EAAKsuO,IAGrC,SAASgB,GAAsBtvO,GAC7B,OAAO,WACL,IAAImtO,EAAUrzO,KAAKm1O,mBAAqBn1O,KAAKm1O,kBAAkBjvO,GAC/D,GAAImtO,EAOF,OANIA,EAAQW,OACVX,EAAQkB,WAENrT,GAAI/yN,QACNklO,EAAQ/R,SAEH+R,EAAQjvO,OAKrB,SAASqxO,GAAoBpoO,GAC3B,OAAO,WACL,OAAOA,EAAGhN,KAAKL,KAAMA,OAIzB,SAAS40O,GAAa5zE,EAAI3hC,GACZ2hC,EAAGtgK,SAASsX,MACxB,IAAK,IAAI9R,KAAOm5H,EAsBd2hC,EAAG96J,GAA+B,oBAAjBm5H,EAAQn5H,GAAsB8T,EAAO9S,EAAKm4H,EAAQn5H,GAAM86J,GAI7E,SAAS8zE,GAAW9zE,EAAI7/B,GACtB,IAAK,IAAIj7H,KAAOi7H,EAAO,CACrB,IAAIt0E,EAAUs0E,EAAMj7H,GACpB,GAAIkF,MAAMiD,QAAQw+C,GAChB,IAAK,IAAI/jD,EAAI,EAAGA,EAAI+jD,EAAQ7jD,OAAQF,IAClC4sO,GAAc10E,EAAI96J,EAAK2mD,EAAQ/jD,SAGjC4sO,GAAc10E,EAAI96J,EAAK2mD,IAK7B,SAAS6oL,GACP10E,EACA4yE,EACA/mL,EACAltD,GASA,OAPIyO,EAAcy+C,KAChBltD,EAAUktD,EACVA,EAAUA,EAAQA,SAEG,kBAAZA,IACTA,EAAUm0G,EAAGn0G,IAERm0G,EAAG6gB,OAAO+xD,EAAS/mL,EAASltD,GAGrC,SAASg2O,GAAYl1G,GAInB,IAAIm1G,EAAU,CACdA,IAAc,WAAc,OAAO51O,KAAK44C,QACpCi9L,EAAW,CACfA,IAAe,WAAc,OAAO71O,KAAKgmO,SAazCx5N,OAAOE,eAAe+zH,EAAIh5H,UAAW,QAASmuO,GAC9CppO,OAAOE,eAAe+zH,EAAIh5H,UAAW,SAAUouO,GAE/Cp1G,EAAIh5H,UAAUkzJ,KAAO1mI,GACrBwsG,EAAIh5H,UAAUgxL,QAAUsM,GAExBtkE,EAAIh5H,UAAUo6K,OAAS,SACrB+xD,EACAniM,EACA9xC,GAEA,IAAIqhK,EAAKhhK,KACT,GAAIoO,EAAcqjC,GAChB,OAAOikM,GAAc10E,EAAI4yE,EAASniM,EAAI9xC,GAExCA,EAAUA,GAAW,GACrBA,EAAQm0O,MAAO,EACf,IAAIT,EAAU,IAAIhB,GAAQrxE,EAAI4yE,EAASniM,EAAI9xC,GAC3C,GAAIA,EAAQ4zJ,UAAW,CACrB,IAAIl1H,EAAO,mCAAuCg1M,EAAkB,WAAI,IACxE5R,KACA+E,GAAwB/0L,EAAIuvH,EAAI,CAACqyE,EAAQjvO,OAAQ48J,EAAI3iI,GACrDqjM,KAEF,OAAO,WACL2R,EAAQjwB,aAOd,IAAI0yB,GAAQ,EAEZ,SAASC,GAAWt1G,GAClBA,EAAIh5H,UAAUm/D,MAAQ,SAAUjnE,GAC9B,IAAIqhK,EAAKhhK,KAETghK,EAAG1gC,KAAOw1G,KAWV90E,EAAGu/B,QAAS,EAER5gM,GAAWA,EAAQgvO,aAIrBqH,GAAsBh1E,EAAIrhK,GAE1BqhK,EAAGtgK,SAAWqkO,GACZwJ,GAA0BvtE,EAAGhqJ,aAC7BrX,GAAW,GACXqhK,GAOFA,EAAGsqE,aAAetqE,EAGpBA,EAAGo7D,MAAQp7D,EACX0wE,GAAc1wE,GACd+vE,GAAW/vE,GACX0uE,GAAW1uE,GACX8sE,GAAS9sE,EAAI,gBACb+nE,GAAe/nE,GACf0zE,GAAU1zE,GACV6nE,GAAY7nE,GACZ8sE,GAAS9sE,EAAI,WASTA,EAAGtgK,SAASgV,IACdsrJ,EAAG+7B,OAAO/7B,EAAGtgK,SAASgV,KAK5B,SAASsgO,GAAuBh1E,EAAIrhK,GAClC,IAAI6W,EAAOwqJ,EAAGtgK,SAAW8L,OAAO7E,OAAOq5J,EAAGhqJ,YAAYrX,SAElDiwO,EAAcjwO,EAAQk7M,aAC1BrkM,EAAKrW,OAASR,EAAQQ,OACtBqW,EAAKqkM,aAAe+0B,EAEpB,IAAIqG,EAAwBrG,EAAYjhF,iBACxCn4I,EAAKsmL,UAAYm5C,EAAsBn5C,UACvCtmL,EAAKu5N,iBAAmBkG,EAAsBt2M,UAC9CnpB,EAAKq5N,gBAAkBoG,EAAsB3xI,SAC7C9tF,EAAK2tL,cAAgB8xC,EAAsBnlJ,IAEvCnxF,EAAQR,SACVqX,EAAKrX,OAASQ,EAAQR,OACtBqX,EAAKpX,gBAAkBO,EAAQP,iBAInC,SAASmvO,GAA2B34D,GAClC,IAAIj2K,EAAUi2K,EAAKj2K,QACnB,GAAIi2K,EAAK5yH,MAAO,CACd,IAAIkzL,EAAe3H,GAA0B34D,EAAK5yH,OAC9CmzL,EAAqBvgE,EAAKsgE,aAC9B,GAAIA,IAAiBC,EAAoB,CAGvCvgE,EAAKsgE,aAAeA,EAEpB,IAAIE,EAAkBC,GAAuBzgE,GAEzCwgE,GACF1uO,EAAOkuK,EAAK0gE,cAAeF,GAE7Bz2O,EAAUi2K,EAAKj2K,QAAUolO,GAAamR,EAActgE,EAAK0gE,eACrD32O,EAAQkK,OACVlK,EAAQ4sL,WAAW5sL,EAAQkK,MAAQ+rK,IAIzC,OAAOj2K,EAGT,SAAS02O,GAAwBzgE,GAC/B,IAAI2gE,EACAC,EAAS5gE,EAAKj2K,QACd82O,EAAS7gE,EAAK8gE,cAClB,IAAK,IAAIxwO,KAAOswO,EACVA,EAAOtwO,KAASuwO,EAAOvwO,KACpBqwO,IAAYA,EAAW,IAC5BA,EAASrwO,GAAOswO,EAAOtwO,IAG3B,OAAOqwO,EAGT,SAAS91G,GAAK9gI,GAMZK,KAAK4mE,MAAMjnE,GAWb,SAASg3O,GAASl2G,GAChBA,EAAIvzH,IAAM,SAAU85D,GAClB,IAAI4vK,EAAoB52O,KAAK62O,oBAAsB72O,KAAK62O,kBAAoB,IAC5E,GAAID,EAAiB7xO,QAAQiiE,IAAW,EACtC,OAAOhnE,KAIT,IAAIuR,EAAOkE,EAAQjE,UAAW,GAQ9B,OAPAD,EAAKxG,QAAQ/K,MACiB,oBAAnBgnE,EAAOolH,QAChBplH,EAAOolH,QAAQ/gL,MAAM27D,EAAQz1D,GACF,oBAAXy1D,GAChBA,EAAO37D,MAAM,KAAMkG,GAErBqlO,EAAiBrtO,KAAKy9D,GACfhnE,MAMX,SAAS82O,GAAar2G,GACpBA,EAAIksD,MAAQ,SAAUA,GAEpB,OADA3sL,KAAKL,QAAUolO,GAAa/kO,KAAKL,QAASgtL,GACnC3sL,MAMX,SAAS+2O,GAAYt2G,GAMnBA,EAAIyjE,IAAM,EACV,IAAIA,EAAM,EAKVzjE,EAAI/4H,OAAS,SAAU4uO,GACrBA,EAAgBA,GAAiB,GACjC,IAAIU,EAAQh3O,KACRi3O,EAAUD,EAAM9yC,IAChBgzC,EAAcZ,EAAca,QAAUb,EAAca,MAAQ,IAChE,GAAID,EAAYD,GACd,OAAOC,EAAYD,GAGrB,IAAIptO,EAAOysO,EAAczsO,MAAQmtO,EAAMr3O,QAAQkK,KAK/C,IAAIutO,EAAM,SAAuBz3O,GAC/BK,KAAK4mE,MAAMjnE,IA6Cb,OA3CAy3O,EAAI3vO,UAAY+E,OAAO7E,OAAOqvO,EAAMvvO,WACpC2vO,EAAI3vO,UAAUuP,YAAcogO,EAC5BA,EAAIlzC,IAAMA,IACVkzC,EAAIz3O,QAAUolO,GACZiS,EAAMr3O,QACN22O,GAEFc,EAAI,SAAWJ,EAKXI,EAAIz3O,QAAQqY,OACdq/N,GAAYD,GAEVA,EAAIz3O,QAAQm+H,UACdw5G,GAAeF,GAIjBA,EAAI1vO,OAASsvO,EAAMtvO,OACnB0vO,EAAIzqD,MAAQqqD,EAAMrqD,MAClByqD,EAAIlqO,IAAM8pO,EAAM9pO,IAIhB4xN,EAAY94N,SAAQ,SAAUW,GAC5BywO,EAAIzwO,GAAQqwO,EAAMrwO,MAGhBkD,IACFutO,EAAIz3O,QAAQ4sL,WAAW1iL,GAAQutO,GAMjCA,EAAIlB,aAAec,EAAMr3O,QACzBy3O,EAAId,cAAgBA,EACpBc,EAAIV,cAAgBhvO,EAAO,GAAI0vO,EAAIz3O,SAGnCu3O,EAAYD,GAAWG,EAChBA,GAIX,SAASC,GAAaE,GACpB,IAAIv/N,EAAQu/N,EAAK53O,QAAQqY,MACzB,IAAK,IAAI9R,KAAO8R,EACd6pB,GAAM01M,EAAK9vO,UAAW,SAAUvB,GAIpC,SAASoxO,GAAgBC,GACvB,IAAIz5G,EAAWy5G,EAAK53O,QAAQm+H,SAC5B,IAAK,IAAI53H,KAAO43H,EACdw3G,GAAeiC,EAAK9vO,UAAWvB,EAAK43H,EAAS53H,IAMjD,SAASsxO,GAAoB/2G,GAI3Bq+F,EAAY94N,SAAQ,SAAUW,GAC5B85H,EAAI95H,GAAQ,SACVyG,EACAqqO,GAEA,OAAKA,GAOU,cAAT9wO,GAAwByH,EAAcqpO,KACxCA,EAAW5tO,KAAO4tO,EAAW5tO,MAAQuD,EACrCqqO,EAAaz3O,KAAKL,QAAQi4H,MAAMlwH,OAAO+vO,IAE5B,cAAT9wO,GAA8C,oBAAf8wO,IACjCA,EAAa,CAAEvwO,KAAMuwO,EAAY3kM,OAAQ2kM,IAE3Cz3O,KAAKL,QAAQgH,EAAO,KAAKyG,GAAMqqO,EACxBA,GAdAz3O,KAAKL,QAAQgH,EAAO,KAAKyG,OA0BxC,SAASsqO,GAAkBlhO,GACzB,OAAOA,IAASA,EAAKo/J,KAAKj2K,QAAQkK,MAAQ2M,EAAKs6E,KAGjD,SAASnzD,GAASrmB,EAASzN,GACzB,OAAIuB,MAAMiD,QAAQiJ,GACTA,EAAQvS,QAAQ8E,IAAS,EACJ,kBAAZyN,EACTA,EAAQ5C,MAAM,KAAK3P,QAAQ8E,IAAS,IAClCwzN,EAAS/lN,IACXA,EAAQpE,KAAKrJ,GAMxB,SAAS8tO,GAAYC,EAAmBz/N,GACtC,IAAItB,EAAQ+gO,EAAkB/gO,MAC1BhI,EAAO+oO,EAAkB/oO,KACzB8gO,EAASiI,EAAkBjI,OAC/B,IAAK,IAAIzpO,KAAO2Q,EAAO,CACrB,IAAIsqC,EAAQtqC,EAAM3Q,GAClB,GAAIi7C,EAAO,CACT,IAAIt3C,EAAOs3C,EAAMt3C,KACbA,IAASsO,EAAOtO,IAClBguO,GAAgBhhO,EAAO3Q,EAAK2I,EAAM8gO,KAM1C,SAASkI,GACPhhO,EACA3Q,EACA2I,EACA+1B,GAEA,IAAIuc,EAAQtqC,EAAM3Q,IACdi7C,GAAWvc,GAAWuc,EAAM2vC,MAAQlsD,EAAQksD,KAC9C3vC,EAAM+2I,kBAAkBgF,WAE1BrmL,EAAM3Q,GAAO,KACb8M,EAAOnE,EAAM3I,GAjNf6vO,GAAUt1G,IACVk1G,GAAWl1G,IACX6wG,GAAY7wG,IACZmxG,GAAenxG,IACfwvG,GAAYxvG,IAgNZ,IAAIq3G,GAAe,CAACt/N,OAAQ1F,OAAQ1H,OAEhC2sO,GAAY,CACdluO,KAAM,aACN4kO,UAAU,EAEVz2N,MAAO,CACLooJ,QAAS03E,GACT9/F,QAAS8/F,GACT14N,IAAK,CAAC5G,OAAQ4B,SAGhBilH,QAAS,CACP24G,WAAY,WACV,IAAIxzI,EAAMxkG,KACN6W,EAAQ2tF,EAAI3tF,MACZhI,EAAO21F,EAAI31F,KACXopO,EAAezzI,EAAIyzI,aACnBC,EAAa1zI,EAAI0zI,WACrB,GAAID,EAAc,CAChB,IAAInnJ,EAAMmnJ,EAAannJ,IACnBonG,EAAoB+/C,EAAa//C,kBACjCvpC,EAAmBspF,EAAatpF,iBACpC93I,EAAMqhO,GAAc,CAClBruO,KAAM6tO,GAAiB/oF,GACvB79D,IAAKA,EACLonG,kBAAmBA,GAErBrpL,EAAKtF,KAAK2uO,GAENl4O,KAAKof,KAAOvQ,EAAK7F,OAASqoB,SAASrxB,KAAKof,MAC1Cy4N,GAAgBhhO,EAAOhI,EAAK,GAAIA,EAAM7O,KAAK2vO,QAE7C3vO,KAAKi4O,aAAe,QAK1B/4G,QAAS,WACPl/H,KAAK6W,MAAQrK,OAAO7E,OAAO,MAC3B3H,KAAK6O,KAAO,IAGd+4H,UAAW,WACT,IAAK,IAAI1hI,KAAOlG,KAAK6W,MACnBghO,GAAgB73O,KAAK6W,MAAO3Q,EAAKlG,KAAK6O,OAI1CuyH,QAAS,WACP,IAAIo4E,EAASx5M,KAEbA,KAAKg4O,aACLh4O,KAAK6hL,OAAO,WAAW,SAAU57K,GAC/B0xO,GAAWn+B,GAAQ,SAAU3vM,GAAQ,OAAO8zB,GAAQ13B,EAAK4D,SAE3D7J,KAAK6hL,OAAO,WAAW,SAAU57K,GAC/B0xO,GAAWn+B,GAAQ,SAAU3vM,GAAQ,OAAQ8zB,GAAQ13B,EAAK4D,UAI9DyjE,QAAS,WACPttE,KAAKg4O,cAGP74O,OAAQ,WACN,IAAImqI,EAAOtpI,KAAKu/H,OAAOxjC,QACnBokC,EAAQ2wG,GAAuBxnG,GAC/BqlB,EAAmBxuB,GAASA,EAAMwuB,iBACtC,GAAIA,EAAkB,CAEpB,IAAI9kJ,EAAO6tO,GAAiB/oF,GACxBnqD,EAAMxkG,KACNogK,EAAU57D,EAAI47D,QACdpoB,EAAUxzC,EAAIwzC,QAClB,GAEGooB,KAAav2J,IAAS8zB,GAAQyiI,EAASv2J,KAEvCmuI,GAAWnuI,GAAQ8zB,GAAQq6G,EAASnuI,GAErC,OAAOs2H,EAGT,IAAIg4G,EAAQn4O,KACR6W,EAAQshO,EAAMthO,MACdhI,EAAOspO,EAAMtpO,KACb3I,EAAmB,MAAbi6H,EAAMj6H,IAGZyoJ,EAAiBinB,KAAKsuB,KAAOv1C,EAAiB79D,IAAO,KAAQ69D,EAAoB,IAAK,IACtFxuB,EAAMj6H,IACN2Q,EAAM3Q,IACRi6H,EAAM+3D,kBAAoBrhL,EAAM3Q,GAAKgyL,kBAErCllL,EAAOnE,EAAM3I,GACb2I,EAAKtF,KAAKrD,KAGVlG,KAAKi4O,aAAe93G,EACpBngI,KAAKk4O,WAAahyO,GAGpBi6H,EAAM99H,KAAKqzM,WAAY,EAEzB,OAAOv1E,GAAUmJ,GAAQA,EAAK,KAI9B8uG,GAAoB,CACtBL,UAAWA,IAKb,SAASM,GAAe53G,GAEtB,IAAI63G,EAAY,CAChBA,IAAgB,WAAc,OAAOv2O,IAQrCyK,OAAOE,eAAe+zH,EAAK,SAAU63G,GAKrC73G,EAAIs6E,KAAO,CACTpkM,KAAMA,GACNjP,OAAQA,EACRq9N,aAAcA,GACd/pB,eAAgBwoB,IAGlB/iG,EAAIxsG,IAAMA,GACVwsG,EAAIv9F,OAAS6hK,GACbtkE,EAAIumG,SAAWA,GAGfvmG,EAAIqsD,WAAa,SAAU//K,GAEzB,OADA4nD,GAAQ5nD,GACDA,GAGT0zH,EAAI9gI,QAAU6M,OAAO7E,OAAO,MAC5Bm3N,EAAY94N,SAAQ,SAAUW,GAC5B85H,EAAI9gI,QAAQgH,EAAO,KAAO6F,OAAO7E,OAAO,SAK1C84H,EAAI9gI,QAAQi4H,MAAQ6I,EAEpB/4H,EAAO+4H,EAAI9gI,QAAQ4sL,WAAY6rD,IAE/BzB,GAAQl2G,GACRq2G,GAAYr2G,GACZs2G,GAAWt2G,GACX+2G,GAAmB/2G,GAGrB43G,GAAc53G,IAEdj0H,OAAOE,eAAe+zH,GAAIh5H,UAAW,YAAa,CAChDivB,IAAKmqM,KAGPr0N,OAAOE,eAAe+zH,GAAIh5H,UAAW,cAAe,CAClDivB,IAAK,WAEH,OAAO12B,KAAKC,QAAUD,KAAKC,OAAOC,cAKtCsM,OAAOE,eAAe+zH,GAAK,0BAA2B,CACpDr8H,MAAOwoO,KAGTnsG,GAAIpqH,QAAU,SAMd,IAAIipN,GAAiB7B,EAAQ,eAGzB8a,GAAc9a,EAAQ,yCACtBiC,GAAc,SAAU5uI,EAAKnqF,EAAMq+G,GACrC,MACY,UAATA,GAAoBuzH,GAAYznJ,IAAkB,WAATnqF,GAChC,aAATq+G,GAA+B,WAARl0B,GACd,YAATk0B,GAA8B,UAARl0B,GACb,UAATk0B,GAA4B,UAARl0B,GAIrB0nJ,GAAmB/a,EAAQ,wCAE3Bgb,GAA8Bhb,EAAQ,sCAEtCib,GAAyB,SAAUxyO,EAAK9B,GAC1C,OAAOu0O,GAAiBv0O,IAAoB,UAAVA,EAC9B,QAEQ,oBAAR8B,GAA6BuyO,GAA4Br0O,GACvDA,EACA,QAGJw0O,GAAgBnb,EAClB,8XAQEob,GAAU,+BAEVC,GAAU,SAAUjvO,GACtB,MAA0B,MAAnBA,EAAKsK,OAAO,IAAmC,UAArBtK,EAAKyE,MAAM,EAAG,IAG7CyqO,GAAe,SAAUlvO,GAC3B,OAAOivO,GAAQjvO,GAAQA,EAAKyE,MAAM,EAAGzE,EAAKb,QAAU,IAGlD2vO,GAAmB,SAAU1yO,GAC/B,OAAc,MAAPA,IAAuB,IAARA,GAKxB,SAAS+yO,GAAkB74G,GACzB,IAAI99H,EAAO89H,EAAM99H,KACbilC,EAAa64F,EACb1a,EAAY0a,EAChB,MAAOu6E,EAAMj1F,EAAUyyE,mBACrBzyE,EAAYA,EAAUyyE,kBAAkBy3C,OACpClqH,GAAaA,EAAUpjH,OACzBA,EAAO42O,GAAexzH,EAAUpjH,KAAMA,IAG1C,MAAOq4M,EAAMpzK,EAAaA,EAAWnnC,QAC/BmnC,GAAcA,EAAWjlC,OAC3BA,EAAO42O,GAAe52O,EAAMilC,EAAWjlC,OAG3C,OAAO62O,GAAY72O,EAAK27H,YAAa37H,EAAK47H,OAG5C,SAASg7G,GAAgBx0I,EAAOtkG,GAC9B,MAAO,CACL69H,YAAa/8H,GAAOwjG,EAAMu5B,YAAa79H,EAAO69H,aAC9CC,MAAOy8E,EAAMj2G,EAAMw5B,OACf,CAACx5B,EAAMw5B,MAAO99H,EAAO89H,OACrB99H,EAAO89H,OAIf,SAASi7G,GACPl7G,EACAm7G,GAEA,OAAIz+B,EAAM18E,IAAgB08E,EAAMy+B,GACvBl4O,GAAO+8H,EAAao7G,GAAeD,IAGrC,GAGT,SAASl4O,GAAQyW,EAAGC,GAClB,OAAOD,EAAIC,EAAKD,EAAI,IAAMC,EAAKD,EAAKC,GAAK,GAG3C,SAASyhO,GAAgBh1O,GACvB,OAAIgH,MAAMiD,QAAQjK,GACTi1O,GAAej1O,GAEpB0M,EAAS1M,GACJk1O,GAAgBl1O,GAEJ,kBAAVA,EACFA,EAGF,GAGT,SAASi1O,GAAgBj1O,GAGvB,IAFA,IACIm1O,EADAz5M,EAAM,GAEDh3B,EAAI,EAAGC,EAAI3E,EAAM4E,OAAQF,EAAIC,EAAGD,IACnC4xM,EAAM6+B,EAAcH,GAAeh1O,EAAM0E,MAAwB,KAAhBywO,IAC/Cz5M,IAAOA,GAAO,KAClBA,GAAOy5M,GAGX,OAAOz5M,EAGT,SAASw5M,GAAiBl1O,GACxB,IAAI07B,EAAM,GACV,IAAK,IAAI55B,KAAO9B,EACVA,EAAM8B,KACJ45B,IAAOA,GAAO,KAClBA,GAAO55B,GAGX,OAAO45B,EAKT,IAAI05M,GAAe,CACjBjyB,IAAK,6BACLkyB,KAAM,sCAGJC,GAAYjc,EACd,snBAeEkc,GAAQlc,EACV,kNAGA,GAGE4B,GAAgB,SAAUvuI,GAC5B,OAAO4oJ,GAAU5oJ,IAAQ6oJ,GAAM7oJ,IAGjC,SAAS0uI,GAAiB1uI,GACxB,OAAI6oJ,GAAM7oJ,GACD,MAIG,SAARA,EACK,YADT,EAKF,IAAI8oJ,GAAsBptO,OAAO7E,OAAO,MACxC,SAAS43N,GAAkBzuI,GAEzB,IAAKyqH,EACH,OAAO,EAET,GAAI8jB,GAAcvuI,GAChB,OAAO,EAIT,GAFAA,EAAMA,EAAI3qF,cAEsB,MAA5ByzO,GAAoB9oJ,GACtB,OAAO8oJ,GAAoB9oJ,GAE7B,IAAIp7E,EAAK9C,SAASa,cAAcq9E,GAChC,OAAIA,EAAI/rF,QAAQ,MAAQ,EAEd60O,GAAoB9oJ,GAC1Bp7E,EAAGsB,cAAgB5C,OAAOylO,oBAC1BnkO,EAAGsB,cAAgB5C,OAAO6pF,YAGpB27I,GAAoB9oJ,GAAO,qBAAqB59E,KAAKwC,EAAGjG,YAIpE,IAAIqqO,GAAkBrc,EAAQ,6CAO9B,SAAS5hI,GAAOnmF,GACd,GAAkB,kBAAPA,EAAiB,CAC1B,IAAI+tG,EAAW7wG,SAAS85F,cAAch3F,GACtC,OAAK+tG,GAII7wG,SAASa,cAAc,OAIhC,OAAOiC,EAMX,SAASqkO,GAAiB77I,EAASiiC,GACjC,IAAIg4D,EAAMvlL,SAASa,cAAcyqF,GACjC,MAAgB,WAAZA,GAIAiiC,EAAM99H,MAAQ89H,EAAM99H,KAAK64G,YAAuCp1G,IAA9Bq6H,EAAM99H,KAAK64G,MAAMyrB,UACrDwxD,EAAIvkL,aAAa,WAAY,YAJtBukL,EASX,SAAS6hD,GAAiBzmJ,EAAW2K,GACnC,OAAOtrF,SAASonO,gBAAgBR,GAAajmJ,GAAY2K,GAG3D,SAAS0jB,GAAgBjmF,GACvB,OAAO/oB,SAASgvG,eAAejmF,GAGjC,SAASs+M,GAAet+M,GACtB,OAAO/oB,SAASqnO,cAAct+M,GAGhC,SAASooE,GAAcz8D,EAAY4yM,EAASC,GAC1C7yM,EAAWy8D,aAAam2I,EAASC,GAGnC,SAASvoI,GAAa59E,EAAMywE,GAC1BzwE,EAAK49E,YAAYnN,GAGnB,SAASiN,GAAa19E,EAAMywE,GAC1BzwE,EAAK09E,YAAYjN,GAGnB,SAASn9D,GAAYtT,GACnB,OAAOA,EAAKsT,WAGd,SAASgyE,GAAatlF,GACpB,OAAOA,EAAKslF,YAGd,SAASpb,GAASlqE,GAChB,OAAOA,EAAKkqE,QAGd,SAASk8I,GAAgBpmN,EAAM2H,GAC7B3H,EAAK48E,YAAcj1E,EAGrB,SAAS0+M,GAAermN,EAAMz0B,GAC5By0B,EAAKpgB,aAAarU,EAAS,IAG7B,IAAI+6O,GAAuB9tO,OAAOoxC,OAAO,CACvCnqC,cAAesmO,GACfC,gBAAiBA,GACjBp4H,eAAgBA,GAChBq4H,cAAeA,GACfl2I,aAAcA,GACd6N,YAAaA,GACbF,YAAaA,GACbpqE,WAAYA,GACZgyE,YAAaA,GACbpb,QAASA,GACTk8I,eAAgBA,GAChBC,cAAeA,KAKb71I,GAAM,CACR78F,OAAQ,SAAiByyG,EAAG+lB,GAC1Bo6G,GAAYp6G,IAEdrtF,OAAQ,SAAiB66L,EAAUxtG,GAC7BwtG,EAAStrO,KAAKmiG,MAAQ27B,EAAM99H,KAAKmiG,MACnC+1I,GAAY5M,GAAU,GACtB4M,GAAYp6G,KAGhBlwD,QAAS,SAAkBkwD,GACzBo6G,GAAYp6G,GAAO,KAIvB,SAASo6G,GAAap6G,EAAOq6G,GAC3B,IAAIt0O,EAAMi6H,EAAM99H,KAAKmiG,IACrB,GAAKk2G,EAAMx0M,GAAX,CAEA,IAAI86J,EAAK7gC,EAAMpgI,QACXykG,EAAM27B,EAAM+3D,mBAAqB/3D,EAAMg4D,IACvC89B,EAAOj1D,EAAG35B,MACVmzG,EACEpvO,MAAMiD,QAAQ4nN,EAAK/vN,IACrB8M,EAAOijN,EAAK/vN,GAAMs+F,GACTyxH,EAAK/vN,KAASs+F,IACvByxH,EAAK/vN,QAAOJ,GAGVq6H,EAAM99H,KAAK+/I,SACRh3I,MAAMiD,QAAQ4nN,EAAK/vN,IAEb+vN,EAAK/vN,GAAKnB,QAAQy/F,GAAO,GAElCyxH,EAAK/vN,GAAKqD,KAAKi7F,GAHfyxH,EAAK/vN,GAAO,CAACs+F,GAMfyxH,EAAK/vN,GAAOs+F,GAiBlB,IAAIi2I,GAAY,IAAIltE,GAAM,GAAI,GAAI,IAE9B+2D,GAAQ,CAAC,SAAU,WAAY,SAAU,SAAU,WAEvD,SAASoW,GAAWhjO,EAAGC,GACrB,OACED,EAAExR,MAAQyR,EAAEzR,KACZwR,EAAEiqN,eAAiBhqN,EAAEgqN,eAEjBjqN,EAAEo5E,MAAQn5E,EAAEm5E,KACZp5E,EAAE81J,YAAc71J,EAAE61J,WAClBktC,EAAMhjM,EAAErV,QAAUq4M,EAAM/iM,EAAEtV,OAC1Bs4O,GAAcjjO,EAAGC,IAEjBslN,EAAOvlN,EAAEyqN,qBACTnF,EAAQrlN,EAAEgqN,aAAaj2N,QAM/B,SAASivO,GAAejjO,EAAGC,GACzB,GAAc,UAAVD,EAAEo5E,IAAmB,OAAO,EAChC,IAAIhoF,EACA8xO,EAAQlgC,EAAM5xM,EAAI4O,EAAErV,OAASq4M,EAAM5xM,EAAIA,EAAEoyG,QAAUpyG,EAAEnC,KACrDk0O,EAAQngC,EAAM5xM,EAAI6O,EAAEtV,OAASq4M,EAAM5xM,EAAIA,EAAEoyG,QAAUpyG,EAAEnC,KACzD,OAAOi0O,IAAUC,GAASf,GAAgBc,IAAUd,GAAgBe,GAGtE,SAASC,GAAmBx2I,EAAUy2I,EAAUC,GAC9C,IAAIlyO,EAAG5C,EACHuV,EAAM,GACV,IAAK3S,EAAIiyO,EAAUjyO,GAAKkyO,IAAUlyO,EAChC5C,EAAMo+F,EAASx7F,GAAG5C,IACdw0M,EAAMx0M,KAAQuV,EAAIvV,GAAO4C,GAE/B,OAAO2S,EAGT,SAASw/N,GAAqBC,GAC5B,IAAIpyO,EAAGooB,EACH+jL,EAAM,GAENv6G,EAAUwgJ,EAAQxgJ,QAClB4/I,EAAUY,EAAQZ,QAEtB,IAAKxxO,EAAI,EAAGA,EAAIw7N,GAAMt7N,SAAUF,EAE9B,IADAmsM,EAAIqvB,GAAMx7N,IAAM,GACXooB,EAAI,EAAGA,EAAIwpE,EAAQ1xF,SAAUkoB,EAC5BwpL,EAAMhgH,EAAQxpE,GAAGozM,GAAMx7N,MACzBmsM,EAAIqvB,GAAMx7N,IAAIS,KAAKmxF,EAAQxpE,GAAGozM,GAAMx7N,KAK1C,SAASqyO,EAAahjD,GACpB,OAAO,IAAI5qB,GAAM+sE,EAAQp8I,QAAQi6F,GAAKhyL,cAAe,GAAI,QAAIL,EAAWqyL,GAG1E,SAASijD,EAAYC,EAAU17M,GAC7B,SAASmoM,IACuB,MAAxBA,EAAUnoM,WACdyuK,EAAWitC,GAIf,OADAvT,EAAUnoM,UAAYA,EACfmoM,EAGT,SAAS15B,EAAY14L,GACnB,IAAIvV,EAASm6O,EAAQhzM,WAAW5xB,GAE5BglM,EAAMv6M,IACRm6O,EAAQ1oI,YAAYzxG,EAAQuV,GAsBhC,SAAS4lO,EACPn7G,EACAo7G,EACAC,EACAC,EACAC,EACAC,EACAnyO,GAYA,GAVIkxM,EAAMv6E,EAAMg4D,MAAQuiB,EAAMihC,KAM5Bx7G,EAAQw7G,EAAWnyO,GAAS84N,GAAWniG,IAGzCA,EAAM4hG,cAAgB2Z,GAClBvN,EAAgBhuG,EAAOo7G,EAAoBC,EAAWC,GAA1D,CAIA,IAAIp5O,EAAO89H,EAAM99H,KACbiiG,EAAW67B,EAAM77B,SACjBxT,EAAMqvC,EAAMrvC,IACZ4pH,EAAM5pH,IAeRqvC,EAAMg4D,IAAMh4D,EAAM9wB,GACdirI,EAAQN,gBAAgB75G,EAAM9wB,GAAIve,GAClCwpJ,EAAQ7mO,cAAcq9E,EAAKqvC,GAC/By7G,EAASz7G,GAIP07G,EAAe17G,EAAO77B,EAAUi3I,GAC5B7gC,EAAMr4M,IACRy5O,EAAkB37G,EAAOo7G,GAE3Bt8I,EAAOu8I,EAAWr7G,EAAMg4D,IAAKsjD,IAMtBxe,EAAO98F,EAAMqtC,YACtBrtC,EAAMg4D,IAAMmiD,EAAQL,cAAc95G,EAAMxkG,MACxCsjE,EAAOu8I,EAAWr7G,EAAMg4D,IAAKsjD,KAE7Bt7G,EAAMg4D,IAAMmiD,EAAQ14H,eAAeue,EAAMxkG,MACzCsjE,EAAOu8I,EAAWr7G,EAAMg4D,IAAKsjD,KAIjC,SAAStN,EAAiBhuG,EAAOo7G,EAAoBC,EAAWC,GAC9D,IAAI3yO,EAAIq3H,EAAM99H,KACd,GAAIq4M,EAAM5xM,GAAI,CACZ,IAAIizO,EAAgBrhC,EAAMv6E,EAAM+3D,oBAAsBpvL,EAAE4sM,UAQxD,GAPIgF,EAAM5xM,EAAIA,EAAEpJ,OAASg7M,EAAM5xM,EAAIA,EAAEwzD,OACnCxzD,EAAEq3H,GAAO,GAMPu6E,EAAMv6E,EAAM+3D,mBAMd,OALA8jD,EAAc77G,EAAOo7G,GACrBt8I,EAAOu8I,EAAWr7G,EAAMg4D,IAAKsjD,GACzBxe,EAAO8e,IACTE,EAAoB97G,EAAOo7G,EAAoBC,EAAWC,IAErD,GAKb,SAASO,EAAe77G,EAAOo7G,GACzB7gC,EAAMv6E,EAAM99H,KAAK65O,iBACnBX,EAAmBhyO,KAAK8B,MAAMkwO,EAAoBp7G,EAAM99H,KAAK65O,eAC7D/7G,EAAM99H,KAAK65O,cAAgB,MAE7B/7G,EAAMg4D,IAAMh4D,EAAM+3D,kBAAkBnpD,IAChCotG,EAAYh8G,IACd27G,EAAkB37G,EAAOo7G,GACzBK,EAASz7G,KAITo6G,GAAYp6G,GAEZo7G,EAAmBhyO,KAAK42H,IAI5B,SAAS87G,EAAqB97G,EAAOo7G,EAAoBC,EAAWC,GAClE,IAAI3yO,EAKAszO,EAAYj8G,EAChB,MAAOi8G,EAAUlkD,kBAEf,GADAkkD,EAAYA,EAAUlkD,kBAAkBy3C,OACpCj1B,EAAM5xM,EAAIszO,EAAU/5O,OAASq4M,EAAM5xM,EAAIA,EAAEg1C,YAAa,CACxD,IAAKh1C,EAAI,EAAGA,EAAImsM,EAAI1kC,SAASvnK,SAAUF,EACrCmsM,EAAI1kC,SAASznK,GAAG2xO,GAAW2B,GAE7Bb,EAAmBhyO,KAAK6yO,GACxB,MAKJn9I,EAAOu8I,EAAWr7G,EAAMg4D,IAAKsjD,GAG/B,SAASx8I,EAAQ9+F,EAAQg4L,EAAKkkD,GACxB3hC,EAAMv6M,KACJu6M,EAAM2hC,GACJ/B,EAAQhzM,WAAW+0M,KAAYl8O,GACjCm6O,EAAQv2I,aAAa5jG,EAAQg4L,EAAKkkD,GAGpC/B,EAAQ5oI,YAAYvxG,EAAQg4L,IAKlC,SAAS0jD,EAAgB17G,EAAO77B,EAAUi3I,GACxC,GAAInwO,MAAMiD,QAAQi2F,GAAW,CACvB,EAGJ,IAAK,IAAIx7F,EAAI,EAAGA,EAAIw7F,EAASt7F,SAAUF,EACrCwyO,EAAUh3I,EAASx7F,GAAIyyO,EAAoBp7G,EAAMg4D,IAAK,MAAM,EAAM7zF,EAAUx7F,QAErEq0N,EAAYh9F,EAAMxkG,OAC3B2+M,EAAQ5oI,YAAYyuB,EAAMg4D,IAAKmiD,EAAQ14H,eAAeppG,OAAO2nH,EAAMxkG,QAIvE,SAASwgN,EAAah8G,GACpB,MAAOA,EAAM+3D,kBACX/3D,EAAQA,EAAM+3D,kBAAkBy3C,OAElC,OAAOj1B,EAAMv6E,EAAMrvC,KAGrB,SAASgrJ,EAAmB37G,EAAOo7G,GACjC,IAAK,IAAIpmC,EAAM,EAAGA,EAAMF,EAAIttM,OAAOqB,SAAUmsM,EAC3CF,EAAIttM,OAAOwtM,GAAKslC,GAAWt6G,GAE7Br3H,EAAIq3H,EAAM99H,KAAK3C,KACXg7M,EAAM5xM,KACJ4xM,EAAM5xM,EAAEnB,SAAWmB,EAAEnB,OAAO8yO,GAAWt6G,GACvCu6E,EAAM5xM,EAAEm2F,SAAWs8I,EAAmBhyO,KAAK42H,IAOnD,SAASy7G,EAAUz7G,GACjB,IAAIr3H,EACJ,GAAI4xM,EAAM5xM,EAAIq3H,EAAM2hG,WAClBwY,EAAQD,cAAcl6G,EAAMg4D,IAAKrvL,OAC5B,CACL,IAAIwzO,EAAWn8G,EACf,MAAOm8G,EACD5hC,EAAM5xM,EAAIwzO,EAASv8O,UAAY26M,EAAM5xM,EAAIA,EAAEpI,SAASZ,WACtDw6O,EAAQD,cAAcl6G,EAAMg4D,IAAKrvL,GAEnCwzO,EAAWA,EAASn8O,OAIpBu6M,EAAM5xM,EAAI4kO,KACZ5kO,IAAMq3H,EAAMpgI,SACZ+I,IAAMq3H,EAAMyhG,WACZlnB,EAAM5xM,EAAIA,EAAEpI,SAASZ,WAErBw6O,EAAQD,cAAcl6G,EAAMg4D,IAAKrvL,GAIrC,SAASyzO,EAAWf,EAAWC,EAAQpO,EAAQmP,EAAUxB,EAAQO,GAC/D,KAAOiB,GAAYxB,IAAUwB,EAC3BlB,EAAUjO,EAAOmP,GAAWjB,EAAoBC,EAAWC,GAAQ,EAAOpO,EAAQmP,GAItF,SAASC,EAAmBt8G,GAC1B,IAAIr3H,EAAGooB,EACH7uB,EAAO89H,EAAM99H,KACjB,GAAIq4M,EAAMr4M,GAER,IADIq4M,EAAM5xM,EAAIzG,EAAK3C,OAASg7M,EAAM5xM,EAAIA,EAAEmnE,UAAYnnE,EAAEq3H,GACjDr3H,EAAI,EAAGA,EAAImsM,EAAIhlI,QAAQjnE,SAAUF,EAAKmsM,EAAIhlI,QAAQnnE,GAAGq3H,GAE5D,GAAIu6E,EAAM5xM,EAAIq3H,EAAM77B,UAClB,IAAKpzE,EAAI,EAAGA,EAAIivG,EAAM77B,SAASt7F,SAAUkoB,EACvCurN,EAAkBt8G,EAAM77B,SAASpzE,IAKvC,SAASwrN,EAAcrP,EAAQmP,EAAUxB,GACvC,KAAOwB,GAAYxB,IAAUwB,EAAU,CACrC,IAAIG,EAAKtP,EAAOmP,GACZ9hC,EAAMiiC,KACJjiC,EAAMiiC,EAAG7rJ,MACX8rJ,EAA0BD,GAC1BF,EAAkBE,IAElBvuC,EAAWuuC,EAAGxkD,OAMtB,SAASykD,EAA2Bz8G,EAAO08G,GACzC,GAAIniC,EAAMmiC,IAAOniC,EAAMv6E,EAAM99H,MAAO,CAClC,IAAIyG,EACA62B,EAAYs1K,EAAIjiM,OAAOhK,OAAS,EAapC,IAZI0xM,EAAMmiC,GAGRA,EAAGl9M,WAAaA,EAGhBk9M,EAAKzB,EAAWj7G,EAAMg4D,IAAKx4J,GAGzB+6K,EAAM5xM,EAAIq3H,EAAM+3D,oBAAsBwiB,EAAM5xM,EAAIA,EAAE6mO,SAAWj1B,EAAM5xM,EAAEzG,OACvEu6O,EAA0B9zO,EAAG+zO,GAE1B/zO,EAAI,EAAGA,EAAImsM,EAAIjiM,OAAOhK,SAAUF,EACnCmsM,EAAIjiM,OAAOlK,GAAGq3H,EAAO08G,GAEnBniC,EAAM5xM,EAAIq3H,EAAM99H,KAAK3C,OAASg7M,EAAM5xM,EAAIA,EAAEkK,QAC5ClK,EAAEq3H,EAAO08G,GAETA,SAGFzuC,EAAWjuE,EAAMg4D,KAIrB,SAAS2kD,EAAgBtB,EAAWuB,EAAOC,EAAOzB,EAAoB0B,GACpE,IAQIC,EAAaC,EAAUC,EAAa3B,EARpC4B,EAAc,EACdC,EAAc,EACdC,EAAYR,EAAM/zO,OAAS,EAC3Bw0O,EAAgBT,EAAM,GACtBU,EAAcV,EAAMQ,GACpBG,EAAYV,EAAMh0O,OAAS,EAC3B20O,EAAgBX,EAAM,GACtBY,EAAcZ,EAAMU,GAMpBG,GAAWZ,EAMf,MAAOI,GAAeE,GAAaD,GAAeI,EAC5C1gB,EAAQwgB,GACVA,EAAgBT,IAAQM,GACfrgB,EAAQygB,GACjBA,EAAcV,IAAQQ,GACb7C,GAAU8C,EAAeG,IAClCG,EAAWN,EAAeG,EAAepC,EAAoByB,EAAOM,GACpEE,EAAgBT,IAAQM,GACxBM,EAAgBX,IAAQM,IACf5C,GAAU+C,EAAaG,IAChCE,EAAWL,EAAaG,EAAarC,EAAoByB,EAAOU,GAChED,EAAcV,IAAQQ,GACtBK,EAAcZ,IAAQU,IACbhD,GAAU8C,EAAeI,IAClCE,EAAWN,EAAeI,EAAarC,EAAoByB,EAAOU,GAClEG,GAAWvD,EAAQv2I,aAAay3I,EAAWgC,EAAcrlD,IAAKmiD,EAAQhhI,YAAYmkI,EAAYtlD,MAC9FqlD,EAAgBT,IAAQM,GACxBO,EAAcZ,IAAQU,IACbhD,GAAU+C,EAAaE,IAChCG,EAAWL,EAAaE,EAAepC,EAAoByB,EAAOM,GAClEO,GAAWvD,EAAQv2I,aAAay3I,EAAWiC,EAAYtlD,IAAKqlD,EAAcrlD,KAC1EslD,EAAcV,IAAQQ,GACtBI,EAAgBX,IAAQM,KAEpBtgB,EAAQkgB,KAAgBA,EAAcpC,GAAkBiC,EAAOM,EAAaE,IAChFJ,EAAWziC,EAAMijC,EAAcz3O,KAC3Bg3O,EAAYS,EAAcz3O,KAC1B63O,EAAaJ,EAAeZ,EAAOM,EAAaE,GAChDvgB,EAAQmgB,GACV7B,EAAUqC,EAAepC,EAAoBC,EAAWgC,EAAcrlD,KAAK,EAAO6kD,EAAOM,IAEzFF,EAAcL,EAAMI,GAChBzC,GAAU0C,EAAaO,IACzBG,EAAWV,EAAaO,EAAepC,EAAoByB,EAAOM,GAClEP,EAAMI,QAAYr3O,EAClB+3O,GAAWvD,EAAQv2I,aAAay3I,EAAW4B,EAAYjlD,IAAKqlD,EAAcrlD,MAG1EmjD,EAAUqC,EAAepC,EAAoBC,EAAWgC,EAAcrlD,KAAK,EAAO6kD,EAAOM,IAG7FK,EAAgBX,IAAQM,IAGxBD,EAAcE,GAChB9B,EAASze,EAAQggB,EAAMU,EAAY,IAAM,KAAOV,EAAMU,EAAY,GAAGvlD,IACrEokD,EAAUf,EAAWC,EAAQuB,EAAOM,EAAaI,EAAWnC,IACnD+B,EAAcI,GACvBhB,EAAaK,EAAOM,EAAaE,GAsBrC,SAASQ,EAAc/pN,EAAM+oN,EAAOtjO,EAAOC,GACzC,IAAK,IAAI5Q,EAAI2Q,EAAO3Q,EAAI4Q,EAAK5Q,IAAK,CAChC,IAAIa,EAAIozO,EAAMj0O,GACd,GAAI4xM,EAAM/wM,IAAM+wO,GAAU1mN,EAAMrqB,GAAM,OAAOb,GAIjD,SAASg1O,EACPnQ,EACAxtG,EACAo7G,EACAI,EACAnyO,EACAyzO,GAEA,GAAItP,IAAaxtG,EAAjB,CAIIu6E,EAAMv6E,EAAMg4D,MAAQuiB,EAAMihC,KAE5Bx7G,EAAQw7G,EAAWnyO,GAAS84N,GAAWniG,IAGzC,IAAIg4D,EAAMh4D,EAAMg4D,IAAMw1C,EAASx1C,IAE/B,GAAI8kC,EAAO0Q,EAASxL,oBACdznB,EAAMv6E,EAAMwhG,aAAaxuL,UAC3B6qM,EAAQrQ,EAASx1C,IAAKh4D,EAAOo7G,GAE7Bp7G,EAAMgiG,oBAAqB,OAS/B,GAAIlF,EAAO98F,EAAMk6E,WACf4iB,EAAO0Q,EAAStzB,WAChBl6E,EAAMj6H,MAAQynO,EAASznO,MACtB+2N,EAAO98F,EAAM6hG,WAAa/E,EAAO98F,EAAM8hG,SAExC9hG,EAAM+3D,kBAAoBy1C,EAASz1C,sBALrC,CASA,IAAIpvL,EACAzG,EAAO89H,EAAM99H,KACbq4M,EAAMr4M,IAASq4M,EAAM5xM,EAAIzG,EAAK3C,OAASg7M,EAAM5xM,EAAIA,EAAEqtM,WACrDrtM,EAAE6kO,EAAUxtG,GAGd,IAAI48G,EAAQpP,EAASrpI,SACjBq4I,EAAKx8G,EAAM77B,SACf,GAAIo2G,EAAMr4M,IAAS85O,EAAYh8G,GAAQ,CACrC,IAAKr3H,EAAI,EAAGA,EAAImsM,EAAIniK,OAAO9pC,SAAUF,EAAKmsM,EAAIniK,OAAOhqC,GAAG6kO,EAAUxtG,GAC9Du6E,EAAM5xM,EAAIzG,EAAK3C,OAASg7M,EAAM5xM,EAAIA,EAAEgqC,SAAWhqC,EAAE6kO,EAAUxtG,GAE7D68F,EAAQ78F,EAAMxkG,MACZ++K,EAAMqiC,IAAUriC,EAAMiiC,GACpBI,IAAUJ,GAAMG,EAAe3kD,EAAK4kD,EAAOJ,EAAIpB,EAAoB0B,GAC9DviC,EAAMiiC,IAIXjiC,EAAMizB,EAAShyM,OAAS2+M,EAAQF,eAAejiD,EAAK,IACxDokD,EAAUpkD,EAAK,KAAMwkD,EAAI,EAAGA,EAAG3zO,OAAS,EAAGuyO,IAClC7gC,EAAMqiC,GACfL,EAAaK,EAAO,EAAGA,EAAM/zO,OAAS,GAC7B0xM,EAAMizB,EAAShyM,OACxB2+M,EAAQF,eAAejiD,EAAK,IAErBw1C,EAAShyM,OAASwkG,EAAMxkG,MACjC2+M,EAAQF,eAAejiD,EAAKh4D,EAAMxkG,MAEhC++K,EAAMr4M,IACJq4M,EAAM5xM,EAAIzG,EAAK3C,OAASg7M,EAAM5xM,EAAIA,EAAEm1O,YAAcn1O,EAAE6kO,EAAUxtG,KAItE,SAAS+9G,EAAkB/9G,EAAOw/E,EAAOlvK,GAGvC,GAAIwsL,EAAOxsL,IAAYiqK,EAAMv6E,EAAMhgI,QACjCggI,EAAMhgI,OAAOkC,KAAK65O,cAAgBv8B,OAElC,IAAK,IAAI72M,EAAI,EAAGA,EAAI62M,EAAM32M,SAAUF,EAClC62M,EAAM72M,GAAGzG,KAAK3C,KAAKu/F,OAAO0gH,EAAM72M,IAKtC,IAKIq1O,EAAmB1gB,EAAQ,2CAG/B,SAASugB,EAAS7lD,EAAKh4D,EAAOo7G,EAAoB6C,GAChD,IAAIt1O,EACAgoF,EAAMqvC,EAAMrvC,IACZzuF,EAAO89H,EAAM99H,KACbiiG,EAAW67B,EAAM77B,SAIrB,GAHA85I,EAASA,GAAW/7O,GAAQA,EAAKktO,IACjCpvG,EAAMg4D,IAAMA,EAER8kC,EAAO98F,EAAMqtC,YAAcktC,EAAMv6E,EAAMwhG,cAEzC,OADAxhG,EAAMgiG,oBAAqB,GACpB,EAQT,GAAIznB,EAAMr4M,KACJq4M,EAAM5xM,EAAIzG,EAAK3C,OAASg7M,EAAM5xM,EAAIA,EAAEwzD,OAASxzD,EAAEq3H,GAAO,GACtDu6E,EAAM5xM,EAAIq3H,EAAM+3D,oBAGlB,OADA8jD,EAAc77G,EAAOo7G,IACd,EAGX,GAAI7gC,EAAM5pH,GAAM,CACd,GAAI4pH,EAAMp2G,GAER,GAAK6zF,EAAIkmD,gBAIP,GAAI3jC,EAAM5xM,EAAIzG,IAASq4M,EAAM5xM,EAAIA,EAAE47H,WAAag2E,EAAM5xM,EAAIA,EAAE09F,YAC1D,GAAI19F,IAAMqvL,EAAI3xF,UAWZ,OAAO,MAEJ,CAIL,IAFA,IAAI83I,GAAgB,EAChB74H,EAAY0yE,EAAIwB,WACXwb,EAAM,EAAGA,EAAM7wG,EAASt7F,OAAQmsM,IAAO,CAC9C,IAAK1vF,IAAcu4H,EAAQv4H,EAAWnhB,EAAS6wG,GAAMomC,EAAoB6C,GAAS,CAChFE,GAAgB,EAChB,MAEF74H,EAAYA,EAAUnM,YAIxB,IAAKglI,GAAiB74H,EAUpB,OAAO,OAxCXo2H,EAAe17G,EAAO77B,EAAUi3I,GA6CpC,GAAI7gC,EAAMr4M,GAAO,CACf,IAAIk8O,GAAa,EACjB,IAAK,IAAIr4O,KAAO7D,EACd,IAAK87O,EAAiBj4O,GAAM,CAC1Bq4O,GAAa,EACbzC,EAAkB37G,EAAOo7G,GACzB,OAGCgD,GAAcl8O,EAAK,UAEtBoyH,GAASpyH,EAAK,gBAGT81L,EAAI91L,OAAS89H,EAAMxkG,OAC5Bw8J,EAAI91L,KAAO89H,EAAMxkG,MAEnB,OAAO,EAcT,OAAO,SAAgBgyM,EAAUxtG,EAAOotG,EAAW0P,GACjD,IAAIjgB,EAAQ78F,GAAZ,CAKA,IAAIq+G,GAAiB,EACjBjD,EAAqB,GAEzB,GAAIve,EAAQ2Q,GAEV6Q,GAAiB,EACjBlD,EAAUn7G,EAAOo7G,OACZ,CACL,IAAIkD,EAAgB/jC,EAAMizB,EAAS34G,UACnC,IAAKypH,GAAiB/D,GAAU/M,EAAUxtG,GAExC29G,EAAWnQ,EAAUxtG,EAAOo7G,EAAoB,KAAM,KAAM0B,OACvD,CACL,GAAIwB,EAAe,CAQjB,GAJ0B,IAAtB9Q,EAAS34G,UAAkB24G,EAASrqH,aAAau7G,KACnD8O,EAAS/3K,gBAAgBipK,GACzB0O,GAAY,GAEVtQ,EAAOsQ,IACLyQ,EAAQrQ,EAAUxtG,EAAOo7G,GAE3B,OADA2C,EAAiB/9G,EAAOo7G,GAAoB,GACrC5N,EAaXA,EAAWwN,EAAYxN,GAIzB,IAAI+Q,EAAS/Q,EAASx1C,IAClBqjD,EAAYlB,EAAQhzM,WAAWo3M,GAcnC,GAXApD,EACEn7G,EACAo7G,EAIAmD,EAAOC,SAAW,KAAOnD,EACzBlB,EAAQhhI,YAAYolI,IAIlBhkC,EAAMv6E,EAAMhgI,QAAS,CACvB,IAAIm8O,EAAWn8G,EAAMhgI,OACjBy+O,EAAYzC,EAAYh8G,GAC5B,MAAOm8G,EAAU,CACf,IAAK,IAAIxzO,EAAI,EAAGA,EAAImsM,EAAIhlI,QAAQjnE,SAAUF,EACxCmsM,EAAIhlI,QAAQnnE,GAAGwzO,GAGjB,GADAA,EAASnkD,IAAMh4D,EAAMg4D,IACjBymD,EAAW,CACb,IAAK,IAAIzpC,EAAM,EAAGA,EAAMF,EAAIttM,OAAOqB,SAAUmsM,EAC3CF,EAAIttM,OAAOwtM,GAAKslC,GAAW6B,GAK7B,IAAIr9I,EAASq9I,EAASj6O,KAAK3C,KAAKu/F,OAChC,GAAIA,EAAO7mF,OAET,IAAK,IAAIymO,EAAM,EAAGA,EAAM5/I,EAAO9vF,IAAInG,OAAQ61O,IACzC5/I,EAAO9vF,IAAI0vO,UAIftE,GAAY+B,GAEdA,EAAWA,EAASn8O,QAKpBu6M,EAAM8gC,GACRkB,EAAa,CAAC/O,GAAW,EAAG,GACnBjzB,EAAMizB,EAAS78I,MACxB2rJ,EAAkB9O,IAMxB,OADAuQ,EAAiB/9G,EAAOo7G,EAAoBiD,GACrCr+G,EAAMg4D,IAnGPuiB,EAAMizB,IAAa8O,EAAkB9O,IAyG/C,IAAI7tG,GAAa,CACfn4H,OAAQm3O,GACRhsM,OAAQgsM,GACR7uK,QAAS,SAA2BkwD,GAClC2+G,GAAiB3+G,EAAOs6G,MAI5B,SAASqE,GAAkBnR,EAAUxtG,IAC/BwtG,EAAStrO,KAAKy9H,YAAcK,EAAM99H,KAAKy9H,aACzClvF,GAAQ+8L,EAAUxtG,GAItB,SAASvvF,GAAS+8L,EAAUxtG,GAC1B,IAQIj6H,EAAK64O,EAAQ1vM,EARb2vM,EAAWrR,IAAa8M,GACxBwE,EAAY9+G,IAAUs6G,GACtByE,EAAUC,GAAsBxR,EAAStrO,KAAKy9H,WAAY6tG,EAAS5tO,SACnEq/O,EAAUD,GAAsBh/G,EAAM99H,KAAKy9H,WAAYK,EAAMpgI,SAE7Ds/O,EAAiB,GACjBC,EAAoB,GAGxB,IAAKp5O,KAAOk5O,EACVL,EAASG,EAAQh5O,GACjBmpC,EAAM+vM,EAAQl5O,GACT64O,GAQH1vM,EAAI6kE,SAAW6qI,EAAO36O,MACtBirC,EAAIkwM,OAASR,EAAO54K,IACpBq5K,GAAWnwM,EAAK,SAAU8wF,EAAOwtG,GAC7Bt+L,EAAIw0D,KAAOx0D,EAAIw0D,IAAI47I,kBACrBH,EAAkB/1O,KAAK8lC,KAVzBmwM,GAAWnwM,EAAK,OAAQ8wF,EAAOwtG,GAC3Bt+L,EAAIw0D,KAAOx0D,EAAIw0D,IAAIq8B,UACrBm/G,EAAe91O,KAAK8lC,IAa1B,GAAIgwM,EAAer2O,OAAQ,CACzB,IAAI02O,EAAa,WACf,IAAK,IAAI52O,EAAI,EAAGA,EAAIu2O,EAAer2O,OAAQF,IACzC02O,GAAWH,EAAev2O,GAAI,WAAYq3H,EAAOwtG,IAGjDqR,EACFhX,GAAe7nG,EAAO,SAAUu/G,GAEhCA,IAYJ,GARIJ,EAAkBt2O,QACpBg/N,GAAe7nG,EAAO,aAAa,WACjC,IAAK,IAAIr3H,EAAI,EAAGA,EAAIw2O,EAAkBt2O,OAAQF,IAC5C02O,GAAWF,EAAkBx2O,GAAI,mBAAoBq3H,EAAOwtG,OAK7DqR,EACH,IAAK94O,KAAOg5O,EACLE,EAAQl5O,IAEXs5O,GAAWN,EAAQh5O,GAAM,SAAUynO,EAAUA,EAAUsR,GAM/D,IAAIU,GAAiBnzO,OAAO7E,OAAO,MAEnC,SAASw3O,GACPta,EACA7jE,GAEA,IAKIl4J,EAAGumC,EALHvP,EAAMtzB,OAAO7E,OAAO,MACxB,IAAKk9N,EAEH,OAAO/kM,EAGT,IAAKh3B,EAAI,EAAGA,EAAI+7N,EAAK77N,OAAQF,IAC3BumC,EAAMw1L,EAAK/7N,GACNumC,EAAI+wF,YAEP/wF,EAAI+wF,UAAYu/G,IAElB7/M,EAAI8/M,GAAcvwM,IAAQA,EAC1BA,EAAIw0D,IAAMshI,GAAankE,EAAGtgK,SAAU,aAAc2uC,EAAIxlC,MAAM,GAG9D,OAAOi2B,EAGT,SAAS8/M,GAAevwM,GACtB,OAAOA,EAAIwwM,SAAaxwM,EAAQ,KAAI,IAAO7iC,OAAOqC,KAAKwgC,EAAI+wF,WAAa,IAAIpuH,KAAK,KAGnF,SAASwtO,GAAYnwM,EAAK3vC,EAAMygI,EAAOwtG,EAAUsR,GAC/C,IAAI5xO,EAAKgiC,EAAIw0D,KAAOx0D,EAAIw0D,IAAInkG,GAC5B,GAAI2N,EACF,IACEA,EAAG8yH,EAAMg4D,IAAK9oJ,EAAK8wF,EAAOwtG,EAAUsR,GACpC,MAAO/uO,IACPm2N,GAAYn2N,GAAGiwH,EAAMpgI,QAAU,aAAgBsvC,EAAQ,KAAI,IAAM3vC,EAAO,UAK9E,IAAIogP,GAAc,CAChBt7I,GACAs7B,IAKF,SAASigH,GAAapS,EAAUxtG,GAC9B,IAAI3pH,EAAO2pH,EAAMwuB,iBACjB,KAAI+rD,EAAMlkM,KAA4C,IAAnCA,EAAKo/J,KAAKj2K,QAAQw8J,iBAGjC6gE,EAAQ2Q,EAAStrO,KAAK64G,SAAU8hH,EAAQ78F,EAAM99H,KAAK64G,QAAvD,CAGA,IAAIh1G,EAAKkoC,EAAKolH,EACV2kC,EAAMh4D,EAAMg4D,IACZ6nD,EAAWrS,EAAStrO,KAAK64G,OAAS,GAClCA,EAAQilB,EAAM99H,KAAK64G,OAAS,GAMhC,IAAKh1G,KAJDw0M,EAAMx/F,EAAM0nH,UACd1nH,EAAQilB,EAAM99H,KAAK64G,MAAQxzG,EAAO,GAAIwzG,IAG5BA,EACV9sE,EAAM8sE,EAAMh1G,GACZstJ,EAAMwsF,EAAS95O,GACXstJ,IAAQplH,GACV6xM,GAAQ9nD,EAAKjyL,EAAKkoC,EAAK+xF,EAAM99H,KAAKktO,KAStC,IAAKrpO,KAHAo6N,IAAQE,KAAWtlH,EAAM92G,QAAU47O,EAAS57O,OAC/C67O,GAAQ9nD,EAAK,QAASj9E,EAAM92G,OAElB47O,EACNhjB,EAAQ9hH,EAAMh1G,MACZ4yO,GAAQ5yO,GACViyL,EAAI+nD,kBAAkBrH,GAASE,GAAa7yO,IAClCsyO,GAAiBtyO,IAC3BiyL,EAAIviI,gBAAgB1vD,KAM5B,SAAS+5O,GAASvqO,EAAIxP,EAAK9B,EAAO+7O,GAC5BA,GAAWzqO,EAAGwoF,QAAQn5F,QAAQ,MAAQ,EACxCq7O,GAAY1qO,EAAIxP,EAAK9B,GACZw0O,GAAc1yO,GAGnByyO,GAAiBv0O,GACnBsR,EAAGkgD,gBAAgB1vD,IAInB9B,EAAgB,oBAAR8B,GAA4C,UAAfwP,EAAGwoF,QACpC,OACAh4F,EACJwP,EAAG9B,aAAa1N,EAAK9B,IAEdo0O,GAAiBtyO,GAC1BwP,EAAG9B,aAAa1N,EAAKwyO,GAAuBxyO,EAAK9B,IACxC00O,GAAQ5yO,GACbyyO,GAAiBv0O,GACnBsR,EAAGwqO,kBAAkBrH,GAASE,GAAa7yO,IAE3CwP,EAAG2qO,eAAexH,GAAS3yO,EAAK9B,GAGlCg8O,GAAY1qO,EAAIxP,EAAK9B,GAIzB,SAASg8O,GAAa1qO,EAAIxP,EAAK9B,GAC7B,GAAIu0O,GAAiBv0O,GACnBsR,EAAGkgD,gBAAgB1vD,OACd,CAKL,GACEo6N,KAASC,IACM,aAAf7qN,EAAGwoF,SACK,gBAARh4F,GAAmC,KAAV9B,IAAiBsR,EAAG4qO,OAC7C,CACA,IAAIC,EAAU,SAAUrwO,GACtBA,EAAEswO,2BACF9qO,EAAG7S,oBAAoB,QAAS09O,IAElC7qO,EAAGnP,iBAAiB,QAASg6O,GAE7B7qO,EAAG4qO,QAAS,EAEd5qO,EAAG9B,aAAa1N,EAAK9B,IAIzB,IAAI82G,GAAQ,CACVvzG,OAAQo4O,GACRjtM,OAAQitM,IAKV,SAASU,GAAa9S,EAAUxtG,GAC9B,IAAIzqH,EAAKyqH,EAAMg4D,IACX91L,EAAO89H,EAAM99H,KACb+kM,EAAUumC,EAAStrO,KACvB,KACE26N,EAAQ36N,EAAK27H,cACbg/F,EAAQ36N,EAAK47H,SACX++F,EAAQ51B,IACN41B,EAAQ51B,EAAQppE,cAChBg/F,EAAQ51B,EAAQnpE,SALtB,CAYA,IAAIyiH,EAAM1H,GAAiB74G,GAGvBwgH,EAAkBjrO,EAAGkrO,mBACrBlmC,EAAMimC,KACRD,EAAMz/O,GAAOy/O,EAAKtH,GAAeuH,KAI/BD,IAAQhrO,EAAGmrO,aACbnrO,EAAG9B,aAAa,QAAS8sO,GACzBhrO,EAAGmrO,WAAaH,IAIpB,IAyCII,GAzCAC,GAAQ,CACVp5O,OAAQ84O,GACR3tM,OAAQ2tM,IAaNO,GAAc,MACdC,GAAuB,MAQ3B,SAASC,GAAiB35I,GAExB,GAAImzG,EAAMnzG,EAAGy5I,KAAe,CAE1B,IAAIxvM,EAAQ8uL,GAAO,SAAW,QAC9B/4H,EAAG/1D,GAAS,GAAGvwC,OAAOsmG,EAAGy5I,IAAcz5I,EAAG/1D,IAAU,WAC7C+1D,EAAGy5I,IAKRtmC,EAAMnzG,EAAG05I,OACX15I,EAAG5oE,OAAS,GAAG19B,OAAOsmG,EAAG05I,IAAuB15I,EAAG5oE,QAAU,WACtD4oE,EAAG05I,KAMd,SAASE,GAAqB3vM,EAAOqb,EAAS6iF,GAC5C,IAAIl9F,EAAUsuM,GACd,OAAO,SAAS1P,IACd,IAAItxM,EAAM+sB,EAAQxhD,MAAM,KAAMmG,WAClB,OAARsuB,GACFshN,GAAS5vM,EAAO4/L,EAAa1hG,EAASl9F,IAQ5C,IAAI6uM,GAAkBza,MAAsBlG,IAAQtmN,OAAOsmN,GAAK,KAAO,IAEvE,SAAS4gB,GACPz3O,EACAgjD,EACA6iF,EACAhlG,GAQA,GAAI22M,GAAiB,CACnB,IAAIE,EAAoBpO,GACpB5mM,EAAWsgB,EACfA,EAAUtgB,EAASi1M,SAAW,SAAUtxO,GACtC,GAIEA,EAAE/B,SAAW+B,EAAE6/H,eAEf7/H,EAAE67M,WAAaw1B,GAIfrxO,EAAE67M,WAAa,GAIf77M,EAAE/B,OAAOw8M,gBAAkB/3M,SAE3B,OAAO25B,EAASlhC,MAAMrL,KAAMwR,YAIlCsvO,GAASv6O,iBACPsD,EACAgjD,EACA+zK,GACI,CAAElxF,QAASA,EAAShlG,QAASA,GAC7BglG,GAIR,SAAS0xG,GACPv3O,EACAgjD,EACA6iF,EACAl9F,IAECA,GAAWsuM,IAAUj+O,oBACpBgH,EACAgjD,EAAQ20L,UAAY30L,EACpB6iF,GAIJ,SAAS+xG,GAAoB9T,EAAUxtG,GACrC,IAAI68F,EAAQ2Q,EAAStrO,KAAKklG,MAAOy1H,EAAQ78F,EAAM99H,KAAKklG,IAApD,CAGA,IAAIA,EAAK44B,EAAM99H,KAAKklG,IAAM,GACtBsgI,EAAQ8F,EAAStrO,KAAKklG,IAAM,GAChCu5I,GAAW3gH,EAAMg4D,IACjB+oD,GAAgB35I,GAChBqgI,GAAgBrgI,EAAIsgI,EAAOyZ,GAAOF,GAAUD,GAAqBhhH,EAAMpgI,SACvE+gP,QAAWh7O,GAGb,IAOI47O,GAPA1sN,GAAS,CACXrtB,OAAQ85O,GACR3uM,OAAQ2uM,IAOV,SAASE,GAAgBhU,EAAUxtG,GACjC,IAAI68F,EAAQ2Q,EAAStrO,KAAKqiI,YAAas4F,EAAQ78F,EAAM99H,KAAKqiI,UAA1D,CAGA,IAAIx+H,EAAKkoC,EACL+pJ,EAAMh4D,EAAMg4D,IACZypD,EAAWjU,EAAStrO,KAAKqiI,UAAY,GACrC1sH,EAAQmoH,EAAM99H,KAAKqiI,UAAY,GAMnC,IAAKx+H,KAJDw0M,EAAM1iM,EAAM4qN,UACd5qN,EAAQmoH,EAAM99H,KAAKqiI,SAAWh9H,EAAO,GAAIsQ,IAG/B4pO,EACJ17O,KAAO8R,IACXmgL,EAAIjyL,GAAO,IAIf,IAAKA,KAAO8R,EAAO,CAKjB,GAJAo2B,EAAMp2B,EAAM9R,GAIA,gBAARA,GAAiC,cAARA,EAAqB,CAEhD,GADIi6H,EAAM77B,WAAY67B,EAAM77B,SAASt7F,OAAS,GAC1ColC,IAAQwzM,EAAS17O,GAAQ,SAGC,IAA1BiyL,EAAI9gF,WAAWruG,QACjBmvL,EAAIvmF,YAAYumF,EAAI9gF,WAAW,IAInC,GAAY,UAARnxG,GAAmC,aAAhBiyL,EAAIj6F,QAAwB,CAGjDi6F,EAAI0pD,OAASzzM,EAEb,IAAI0zM,EAAS9kB,EAAQ5uL,GAAO,GAAK51B,OAAO41B,GACpC2zM,GAAkB5pD,EAAK2pD,KACzB3pD,EAAI/zL,MAAQ09O,QAET,GAAY,cAAR57O,GAAuByzO,GAAMxhD,EAAIj6F,UAAY8+H,EAAQ7kC,EAAI3xF,WAAY,CAE9Ek7I,GAAeA,IAAgB9uO,SAASa,cAAc,OACtDiuO,GAAal7I,UAAY,QAAUp4D,EAAM,SACzC,IAAIm5K,EAAMm6B,GAAa/nD,WACvB,MAAOxB,EAAIwB,WACTxB,EAAIvmF,YAAYumF,EAAIwB,YAEtB,MAAO4tB,EAAI5tB,WACTxB,EAAIzmF,YAAY61G,EAAI5tB,iBAEjB,GAKLvrJ,IAAQwzM,EAAS17O,GAIjB,IACEiyL,EAAIjyL,GAAOkoC,EACX,MAAOl+B,QAQf,SAAS6xO,GAAmB5pD,EAAK6pD,GAC/B,OAAS7pD,EAAIrjF,YACK,WAAhBqjF,EAAIj6F,SACJ+jJ,GAAqB9pD,EAAK6pD,IAC1BE,GAAqB/pD,EAAK6pD,IAI9B,SAASC,GAAsB9pD,EAAK6pD,GAGlC,IAAIG,GAAa,EAGjB,IAAMA,EAAavvO,SAASokG,gBAAkBmhF,EAAO,MAAOjoL,KAC5D,OAAOiyO,GAAchqD,EAAI/zL,QAAU49O,EAGrC,SAASE,GAAsB/pD,EAAKI,GAClC,IAAIn0L,EAAQ+zL,EAAI/zL,MACZg8H,EAAY+3D,EAAIiqD,YACpB,GAAI1nC,EAAMt6E,GAAY,CACpB,GAAIA,EAAUl0H,OACZ,OAAOsxN,EAASp5N,KAAWo5N,EAASjlC,GAEtC,GAAIn4D,EAAUnwH,KACZ,OAAO7L,EAAM6L,SAAWsoL,EAAOtoL,OAGnC,OAAO7L,IAAUm0L,EAGnB,IAAI7zD,GAAW,CACb/8H,OAAQg6O,GACR7uM,OAAQ6uM,IAKNU,GAAiBpqM,GAAO,SAAU8+I,GACpC,IAAIj3J,EAAM,GACNwiN,EAAgB,gBAChBC,EAAoB,QAOxB,OANAxrD,EAAQriL,MAAM4tO,GAAet8O,SAAQ,SAAU8W,GAC7C,GAAIA,EAAM,CACR,IAAIoV,EAAMpV,EAAKpI,MAAM6tO,GACrBrwN,EAAIlpB,OAAS,IAAM82B,EAAI5N,EAAI,GAAGjiB,QAAUiiB,EAAI,GAAGjiB,YAG5C6vB,KAIT,SAAS0iN,GAAoBngP,GAC3B,IAAI8yB,EAAQstN,GAAsBpgP,EAAK8yB,OAGvC,OAAO9yB,EAAKi6N,YACR50N,EAAOrF,EAAKi6N,YAAannM,GACzBA,EAIN,SAASstN,GAAuBC,GAC9B,OAAIt3O,MAAMiD,QAAQq0O,GACT9uJ,EAAS8uJ,GAEU,kBAAjBA,EACFL,GAAeK,GAEjBA,EAOT,SAAS76M,GAAUs4F,EAAOwiH,GACxB,IACIC,EADA9iN,EAAM,GAGV,GAAI6iN,EAAY,CACd,IAAIl9H,EAAY0a,EAChB,MAAO1a,EAAUyyE,kBACfzyE,EAAYA,EAAUyyE,kBAAkBy3C,OAEtClqH,GAAaA,EAAUpjH,OACtBugP,EAAYJ,GAAmB/8H,EAAUpjH,QAE1CqF,EAAOo4B,EAAK8iN,IAKbA,EAAYJ,GAAmBriH,EAAM99H,QACxCqF,EAAOo4B,EAAK8iN,GAGd,IAAIt7M,EAAa64F,EACjB,MAAQ74F,EAAaA,EAAWnnC,OAC1BmnC,EAAWjlC,OAASugP,EAAYJ,GAAmBl7M,EAAWjlC,QAChEqF,EAAOo4B,EAAK8iN,GAGhB,OAAO9iN,EAKT,IAyBI+iN,GAzBAC,GAAW,MACXC,GAAc,iBACdC,GAAU,SAAUttO,EAAI7L,EAAM5D,GAEhC,GAAI68O,GAAS5vO,KAAKrJ,GAChB6L,EAAGyf,MAAMsX,YAAY5iC,EAAM5D,QACtB,GAAI88O,GAAY7vO,KAAKjN,GAC1ByP,EAAGyf,MAAMsX,YAAYsxL,EAAUl0N,GAAO5D,EAAIyL,QAAQqxO,GAAa,IAAK,iBAC/D,CACL,IAAIvuO,EAAiBu4B,GAAUljC,GAC/B,GAAIuB,MAAMiD,QAAQpI,GAIhB,IAAK,IAAI6C,EAAI,EAAGkS,EAAM/U,EAAI+C,OAAQF,EAAIkS,EAAKlS,IACzC4M,EAAGyf,MAAM3gB,GAAkBvO,EAAI6C,QAGjC4M,EAAGyf,MAAM3gB,GAAkBvO,IAK7Bg9O,GAAc,CAAC,SAAU,MAAO,MAGhCl2M,GAAYkL,GAAO,SAAUzpC,GAG/B,GAFAq0O,GAAaA,IAAcjwO,SAASa,cAAc,OAAO0hB,MACzD3mB,EAAO02G,EAAS12G,GACH,WAATA,GAAsBA,KAAQq0O,GAChC,OAAOr0O,EAGT,IADA,IAAI00O,EAAU10O,EAAK2F,OAAO,GAAG3P,cAAgBgK,EAAKF,MAAM,GAC/CxF,EAAI,EAAGA,EAAIm6O,GAAYj6O,OAAQF,IAAK,CAC3C,IAAIe,EAAOo5O,GAAYn6O,GAAKo6O,EAC5B,GAAIr5O,KAAQg5O,GACV,OAAOh5O,MAKb,SAASs5O,GAAaxV,EAAUxtG,GAC9B,IAAI99H,EAAO89H,EAAM99H,KACb+kM,EAAUumC,EAAStrO,KAEvB,KAAI26N,EAAQ36N,EAAKi6N,cAAgBU,EAAQ36N,EAAK8yB,QAC5C6nM,EAAQ51B,EAAQk1B,cAAgBU,EAAQ51B,EAAQjyK,QADlD,CAMA,IAAIiZ,EAAKvkC,EACL6L,EAAKyqH,EAAMg4D,IACXirD,EAAiBh8C,EAAQk1B,YACzB+mB,EAAkBj8C,EAAQk8C,iBAAmBl8C,EAAQjyK,OAAS,GAG9DouN,EAAWH,GAAkBC,EAE7BluN,EAAQstN,GAAsBtiH,EAAM99H,KAAK8yB,QAAU,GAKvDgrG,EAAM99H,KAAKihP,gBAAkB5oC,EAAMvlL,EAAMytM,QACrCl7N,EAAO,GAAIytB,GACXA,EAEJ,IAAIquN,EAAW37M,GAASs4F,GAAO,GAE/B,IAAKt2H,KAAQ05O,EACPvmB,EAAQwmB,EAAS35O,KACnBm5O,GAAQttO,EAAI7L,EAAM,IAGtB,IAAKA,KAAQ25O,EACXp1M,EAAMo1M,EAAS35O,GACXukC,IAAQm1M,EAAS15O,IAEnBm5O,GAAQttO,EAAI7L,EAAa,MAAPukC,EAAc,GAAKA,IAK3C,IAAIjZ,GAAQ,CACVxtB,OAAQw7O,GACRrwM,OAAQqwM,IAKNM,GAAe,MAMnB,SAASC,GAAUhuO,EAAIgrO,GAErB,GAAKA,IAASA,EAAMA,EAAIzwO,QAKxB,GAAIyF,EAAG+wF,UACDi6I,EAAI37O,QAAQ,MAAQ,EACtB27O,EAAIhsO,MAAM+uO,IAAcz9O,SAAQ,SAAU2D,GAAK,OAAO+L,EAAG+wF,UAAUlmG,IAAIoJ,MAEvE+L,EAAG+wF,UAAUlmG,IAAImgP,OAEd,CACL,IAAItyM,EAAM,KAAO14B,EAAG89C,aAAa,UAAY,IAAM,IAC/CplB,EAAIrpC,QAAQ,IAAM27O,EAAM,KAAO,GACjChrO,EAAG9B,aAAa,SAAUw6B,EAAMsyM,GAAKzwO,SAS3C,SAAS0zO,GAAajuO,EAAIgrO,GAExB,GAAKA,IAASA,EAAMA,EAAIzwO,QAKxB,GAAIyF,EAAG+wF,UACDi6I,EAAI37O,QAAQ,MAAQ,EACtB27O,EAAIhsO,MAAM+uO,IAAcz9O,SAAQ,SAAU2D,GAAK,OAAO+L,EAAG+wF,UAAUzzF,OAAOrJ,MAE1E+L,EAAG+wF,UAAUzzF,OAAO0tO,GAEjBhrO,EAAG+wF,UAAUz9F,QAChB0M,EAAGkgD,gBAAgB,aAEhB,CACL,IAAIxnB,EAAM,KAAO14B,EAAG89C,aAAa,UAAY,IAAM,IAC/CowL,EAAM,IAAMlD,EAAM,IACtB,MAAOtyM,EAAIrpC,QAAQ6+O,IAAQ,EACzBx1M,EAAMA,EAAI18B,QAAQkyO,EAAK,KAEzBx1M,EAAMA,EAAIn+B,OACNm+B,EACF14B,EAAG9B,aAAa,QAASw6B,GAEzB14B,EAAGkgD,gBAAgB,UAOzB,SAASiuL,GAAmB/e,GAC1B,GAAKA,EAAL,CAIA,GAAsB,kBAAXA,EAAqB,CAC9B,IAAIhlM,EAAM,GAKV,OAJmB,IAAfglM,EAAO3vC,KACTztL,EAAOo4B,EAAKgkN,GAAkBhf,EAAOj7N,MAAQ,MAE/CnC,EAAOo4B,EAAKglM,GACLhlM,EACF,MAAsB,kBAAXglM,EACTgf,GAAkBhf,QADpB,GAKT,IAAIgf,GAAoB7rM,GAAO,SAAUpuC,GACvC,MAAO,CACLk6O,WAAal6O,EAAO,SACpBm6O,aAAen6O,EAAO,YACtBo6O,iBAAmBp6O,EAAO,gBAC1Bq6O,WAAar6O,EAAO,SACpBs6O,aAAet6O,EAAO,YACtBu6O,iBAAmBv6O,EAAO,oBAI1Bw6O,GAAgB9oC,IAAcglB,GAC9B+jB,GAAa,aACbC,GAAY,YAGZC,GAAiB,aACjBC,GAAqB,gBACrBC,GAAgB,YAChBC,GAAoB,eACpBN,UAE6Bv+O,IAA3BsO,OAAOwwO,sBACwB9+O,IAAjCsO,OAAOywO,wBAEPL,GAAiB,mBACjBC,GAAqB,4BAEO3+O,IAA1BsO,OAAO0wO,qBACuBh/O,IAAhCsO,OAAO2wO,uBAEPL,GAAgB,kBAChBC,GAAoB,uBAKxB,IAAIK,GAAMzpC,EACNnnM,OAAOyE,sBACLzE,OAAOyE,sBAAsB3R,KAAKkN,QAClCpP,WACyB,SAAUqI,GAAM,OAAOA,KAEtD,SAAS43O,GAAW53O,GAClB23O,IAAI,WACFA,GAAI33O,MAIR,SAAS63O,GAAoBxvO,EAAIgrO,GAC/B,IAAIyE,EAAoBzvO,EAAGkrO,qBAAuBlrO,EAAGkrO,mBAAqB,IACtEuE,EAAkBpgP,QAAQ27O,GAAO,IACnCyE,EAAkB57O,KAAKm3O,GACvBgD,GAAShuO,EAAIgrO,IAIjB,SAAS0E,GAAuB1vO,EAAIgrO,GAC9BhrO,EAAGkrO,oBACL5tO,EAAO0C,EAAGkrO,mBAAoBF,GAEhCiD,GAAYjuO,EAAIgrO,GAGlB,SAAS2E,GACP3vO,EACA4vO,EACA7zM,GAEA,IAAI+yD,EAAM+gJ,GAAkB7vO,EAAI4vO,GAC5B3+O,EAAO69F,EAAI79F,KACXhC,EAAU6/F,EAAI7/F,QACd6gP,EAAYhhJ,EAAIghJ,UACpB,IAAK7+O,EAAQ,OAAO8qC,IACpB,IAAID,EAAQ7qC,IAAS29O,GAAaG,GAAqBE,GACnDc,EAAQ,EACR/rO,EAAM,WACRhE,EAAG7S,oBAAoB2uC,EAAOk0M,GAC9Bj0M,KAEEi0M,EAAQ,SAAUx1O,GAChBA,EAAE/B,SAAWuH,KACT+vO,GAASD,GACb9rO,KAIN1U,YAAW,WACLygP,EAAQD,GACV9rO,MAED/U,EAAU,GACb+Q,EAAGnP,iBAAiBirC,EAAOk0M,GAG7B,IAAIC,GAAc,yBAElB,SAASJ,GAAmB7vO,EAAI4vO,GAC9B,IASI3+O,EATAshC,EAAS7zB,OAAOuzB,iBAAiBjyB,GAEjCkwO,GAAoB39M,EAAOu8M,GAAiB,UAAY,IAAI9vO,MAAM,MAClEmxO,GAAuB59M,EAAOu8M,GAAiB,aAAe,IAAI9vO,MAAM,MACxEoxO,EAAoBC,GAAWH,EAAkBC,GACjDG,GAAmB/9M,EAAOy8M,GAAgB,UAAY,IAAIhwO,MAAM,MAChEuxO,GAAsBh+M,EAAOy8M,GAAgB,aAAe,IAAIhwO,MAAM,MACtEwxO,EAAmBH,GAAWC,EAAiBC,GAG/CthP,EAAU,EACV6gP,EAAY,EAEZF,IAAiBhB,GACfwB,EAAoB,IACtBn/O,EAAO29O,GACP3/O,EAAUmhP,EACVN,EAAYK,EAAoB78O,QAEzBs8O,IAAiBf,GACtB2B,EAAmB,IACrBv/O,EAAO49O,GACP5/O,EAAUuhP,EACVV,EAAYS,EAAmBj9O,SAGjCrE,EAAUsK,KAAKmQ,IAAI0mO,EAAmBI,GACtCv/O,EAAOhC,EAAU,EACbmhP,EAAoBI,EAClB5B,GACAC,GACF,KACJiB,EAAY7+O,EACRA,IAAS29O,GACPuB,EAAoB78O,OACpBi9O,EAAmBj9O,OACrB,GAEN,IAAIm9O,EACFx/O,IAAS29O,IACTqB,GAAYzyO,KAAK+0B,EAAOu8M,GAAiB,aAC3C,MAAO,CACL79O,KAAMA,EACNhC,QAASA,EACT6gP,UAAWA,EACXW,aAAcA,GAIlB,SAASJ,GAAYK,EAAQC,GAE3B,MAAOD,EAAOp9O,OAASq9O,EAAUr9O,OAC/Bo9O,EAASA,EAAOnlP,OAAOmlP,GAGzB,OAAOn3O,KAAKmQ,IAAI/T,MAAM,KAAMg7O,EAAU5qO,KAAI,SAAUgI,EAAG3a,GACrD,OAAOw9O,GAAK7iO,GAAK6iO,GAAKF,EAAOt9O,QAQjC,SAASw9O,GAAM3lO,GACb,OAAkD,IAA3CvG,OAAOuG,EAAErS,MAAM,GAAI,GAAGoD,QAAQ,IAAK,MAK5C,SAASmoK,GAAO15C,EAAOomH,GACrB,IAAI7wO,EAAKyqH,EAAMg4D,IAGXuiB,EAAMhlM,EAAGipO,YACXjpO,EAAGipO,SAAS7+B,WAAY,EACxBpqM,EAAGipO,YAGL,IAAIt8O,EAAOwhP,GAAkB1jH,EAAM99H,KAAKy7C,YACxC,IAAIk/K,EAAQ36N,KAKRq4M,EAAMhlM,EAAG8wO,WAA6B,IAAhB9wO,EAAGs/G,SAA7B,CAIA,IAAImgE,EAAM9yL,EAAK8yL,IACXxuL,EAAOtE,EAAKsE,KACZo9O,EAAa1hP,EAAK0hP,WAClBC,EAAe3hP,EAAK2hP,aACpBC,EAAmB5hP,EAAK4hP,iBACxBwC,EAAcpkP,EAAKokP,YACnBC,EAAgBrkP,EAAKqkP,cACrBC,EAAoBtkP,EAAKskP,kBACzB9+D,EAAcxlL,EAAKwlL,YACnBhO,EAAQx3K,EAAKw3K,MACb6O,EAAarmL,EAAKqmL,WAClBE,EAAiBvmL,EAAKumL,eACtBg+D,EAAevkP,EAAKukP,aACpBzmF,EAAS99J,EAAK89J,OACd0mF,EAAcxkP,EAAKwkP,YACnBC,EAAkBzkP,EAAKykP,gBACvBt2M,EAAWnuC,EAAKmuC,SAMhBzwC,EAAU2tO,GACVqZ,EAAiBrZ,GAAeztO,OACpC,MAAO8mP,GAAkBA,EAAe5mP,OACtCJ,EAAUgnP,EAAehnP,QACzBgnP,EAAiBA,EAAe5mP,OAGlC,IAAI6mP,GAAYjnP,EAAQ8tO,aAAe1tG,EAAM4hG,aAE7C,IAAIilB,GAAa7mF,GAAqB,KAAXA,EAA3B,CAIA,IAAI8mF,EAAaD,GAAYP,EACzBA,EACA1C,EACAv2G,EAAcw5G,GAAYL,EAC1BA,EACA1C,EACAiD,EAAUF,GAAYN,EACtBA,EACA1C,EAEAmD,EAAkBH,GACjBJ,GACD/+D,EACAu/D,EAAYJ,GACO,oBAAX7mF,EAAwBA,EAChC0Z,EACAwtE,EAAiBL,GAChBH,GACDn+D,EACA4+D,EAAqBN,GACpBF,GACDl+D,EAEA2+D,EAAwB/pB,EAC1B1sN,EAAS0/B,GACLA,EAASqpI,MACTrpI,GAGF,EAIJ,IAAIg3M,GAAqB,IAARryD,IAAkBorC,GAC/BknB,EAAmBC,GAAuBN,GAE1C31M,EAAK/7B,EAAG8wO,SAAWp7I,GAAK,WACtBo8I,IACFpC,GAAsB1vO,EAAIwxO,GAC1B9B,GAAsB1vO,EAAI83H,IAExB/7F,EAAGquK,WACD0nC,GACFpC,GAAsB1vO,EAAIuxO,GAE5BK,GAAsBA,EAAmB5xO,IAEzC2xO,GAAkBA,EAAe3xO,GAEnCA,EAAG8wO,SAAW,QAGXrmH,EAAM99H,KAAKoxC,MAEdu0L,GAAe7nG,EAAO,UAAU,WAC9B,IAAIhgI,EAASuV,EAAG4xB,WACZqgN,EAAcxnP,GAAUA,EAAOynP,UAAYznP,EAAOynP,SAASznH,EAAMj6H,KACjEyhP,GACFA,EAAY72J,MAAQqvC,EAAMrvC,KAC1B62J,EAAYxvD,IAAIwmD,UAEhBgJ,EAAYxvD,IAAIwmD,WAElByI,GAAaA,EAAU1xO,EAAI+7B,MAK/B01M,GAAmBA,EAAgBzxO,GAC/B8xO,IACFtC,GAAmBxvO,EAAIuxO,GACvB/B,GAAmBxvO,EAAI83H,GACvBy3G,IAAU,WACRG,GAAsB1vO,EAAIuxO,GACrBx1M,EAAGquK,YACNolC,GAAmBxvO,EAAIwxO,GAClBO,IACCI,GAAgBN,GAClBviP,WAAWysC,EAAI81M,GAEflC,GAAmB3vO,EAAI/O,EAAM8qC,SAOnC0uF,EAAM99H,KAAKoxC,OACb8yM,GAAiBA,IACjBa,GAAaA,EAAU1xO,EAAI+7B,IAGxB+1M,GAAeC,GAClBh2M,MAIJ,SAASqoI,GAAO35C,EAAO08G,GACrB,IAAInnO,EAAKyqH,EAAMg4D,IAGXuiB,EAAMhlM,EAAG8wO,YACX9wO,EAAG8wO,SAAS1mC,WAAY,EACxBpqM,EAAG8wO,YAGL,IAAInkP,EAAOwhP,GAAkB1jH,EAAM99H,KAAKy7C,YACxC,GAAIk/K,EAAQ36N,IAAyB,IAAhBqT,EAAGs/G,SACtB,OAAO6nH,IAIT,IAAIniC,EAAMhlM,EAAGipO,UAAb,CAIA,IAAIxpD,EAAM9yL,EAAK8yL,IACXxuL,EAAOtE,EAAKsE,KACZu9O,EAAa7hP,EAAK6hP,WAClBC,EAAe9hP,EAAK8hP,aACpBC,EAAmB/hP,EAAK+hP,iBACxB0D,EAAczlP,EAAKylP,YACnBhuE,EAAQz3K,EAAKy3K,MACbkO,EAAa3lL,EAAK2lL,WAClBa,EAAiBxmL,EAAKwmL,eACtBk/D,EAAa1lP,EAAK0lP,WAClBv3M,EAAWnuC,EAAKmuC,SAEhBg3M,GAAqB,IAARryD,IAAkBorC,GAC/BknB,EAAmBC,GAAuB5tE,GAE1CkuE,EAAwBxqB,EAC1B1sN,EAAS0/B,GACLA,EAASspI,MACTtpI,GAGF,EAIJ,IAAIiB,EAAK/7B,EAAGipO,SAAWvzI,GAAK,WACtB11F,EAAG4xB,YAAc5xB,EAAG4xB,WAAWsgN,WACjClyO,EAAG4xB,WAAWsgN,SAASznH,EAAMj6H,KAAO,MAElCshP,IACFpC,GAAsB1vO,EAAIyuO,GAC1BiB,GAAsB1vO,EAAI0uO,IAExB3yM,EAAGquK,WACD0nC,GACFpC,GAAsB1vO,EAAIwuO,GAE5Br7D,GAAkBA,EAAenzK,KAEjCmnO,IACA70D,GAAcA,EAAWtyK,IAE3BA,EAAGipO,SAAW,QAGZoJ,EACFA,EAAWE,GAEXA,IAGF,SAASA,IAEHx2M,EAAGquK,aAIF3/E,EAAM99H,KAAKoxC,MAAQ/9B,EAAG4xB,cACxB5xB,EAAG4xB,WAAWsgN,WAAalyO,EAAG4xB,WAAWsgN,SAAW,KAAMznH,EAAS,KAAKA,GAE3E2nH,GAAeA,EAAYpyO,GACvB8xO,IACFtC,GAAmBxvO,EAAIwuO,GACvBgB,GAAmBxvO,EAAI0uO,GACvBa,IAAU,WACRG,GAAsB1vO,EAAIwuO,GACrBzyM,EAAGquK,YACNolC,GAAmBxvO,EAAIyuO,GAClBsD,IACCI,GAAgBG,GAClBhjP,WAAWysC,EAAIu2M,GAEf3C,GAAmB3vO,EAAI/O,EAAM8qC,SAMvCqoI,GAASA,EAAMpkK,EAAI+7B,GACd+1M,GAAeC,GAClBh2M,MAsBN,SAASo2M,GAAiB5hP,GACxB,MAAsB,kBAARA,IAAqBwY,MAAMxY,GAS3C,SAASyhP,GAAwBr6O,GAC/B,GAAI2vN,EAAQ3vN,GACV,OAAO,EAET,IAAI66O,EAAa76O,EAAG8B,IACpB,OAAIurM,EAAMwtC,GAEDR,GACLt8O,MAAMiD,QAAQ65O,GACVA,EAAW,GACXA,IAGE76O,EAAG6yC,SAAW7yC,EAAGrE,QAAU,EAIvC,SAASm/O,GAAQ/tI,EAAG+lB,IACM,IAApBA,EAAM99H,KAAKoxC,MACbomI,GAAM15C,GAIV,IAAIriF,GAAay9J,EAAY,CAC3B5zM,OAAQwgP,GACR53E,SAAU43E,GACVn1O,OAAQ,SAAoBmtH,EAAO08G,IAET,IAApB18G,EAAM99H,KAAKoxC,KACbqmI,GAAM35C,EAAO08G,GAEbA,MAGF,GAEAuL,GAAkB,CACpBltI,GACA6lI,GACA/rN,GACA0vG,GACAvvG,GACA2oB,IAOE48C,GAAU0tJ,GAAgBnnP,OAAO6+O,IAEjCuI,GAAQpN,GAAoB,CAAEX,QAASA,GAAS5/I,QAASA,KAQzD6lI,IAEF3tN,SAASrM,iBAAiB,mBAAmB,WAC3C,IAAImP,EAAK9C,SAASokG,cACdthG,GAAMA,EAAG4yO,QACX9zL,GAAQ9+C,EAAI,YAKlB,IAAI0zK,GAAY,CACdlpD,SAAU,SAAmBxqH,EAAI+nG,EAAS0iB,EAAOwtG,GAC7B,WAAdxtG,EAAMrvC,KAEJ68I,EAASx1C,MAAQw1C,EAASx1C,IAAIowD,UAChCvgB,GAAe7nG,EAAO,aAAa,WACjCipD,GAAUq2D,iBAAiB/pO,EAAI+nG,EAAS0iB,MAG1CqoH,GAAY9yO,EAAI+nG,EAAS0iB,EAAMpgI,SAEjC2V,EAAG6yO,UAAY,GAAG9sO,IAAIpb,KAAKqV,EAAG/V,QAASkmI,MAChB,aAAd1F,EAAMrvC,KAAsBgpJ,GAAgBpkO,EAAG/O,SACxD+O,EAAG0sO,YAAc3kI,EAAQ2iB,UACpB3iB,EAAQ2iB,UAAU2zG,OACrBr+N,EAAGnP,iBAAiB,mBAAoBkiP,IACxC/yO,EAAGnP,iBAAiB,iBAAkBmiP,IAKtChzO,EAAGnP,iBAAiB,SAAUmiP,IAE1BnoB,KACF7qN,EAAG4yO,QAAS,MAMpB7I,iBAAkB,SAA2B/pO,EAAI+nG,EAAS0iB,GACxD,GAAkB,WAAdA,EAAMrvC,IAAkB,CAC1B03J,GAAY9yO,EAAI+nG,EAAS0iB,EAAMpgI,SAK/B,IAAI4oP,EAAcjzO,EAAG6yO,UACjBK,EAAalzO,EAAG6yO,UAAY,GAAG9sO,IAAIpb,KAAKqV,EAAG/V,QAASkmI,IACxD,GAAI+iH,EAAWphL,MAAK,SAAUoK,EAAG9oE,GAAK,OAAQu1N,EAAWzsJ,EAAG+2K,EAAY7/O,OAAS,CAG/E,IAAI+/O,EAAYnzO,EAAGixH,SACflpB,EAAQr5G,MAAMojE,MAAK,SAAU31D,GAAK,OAAOi3O,GAAoBj3O,EAAG+2O,MAChEnrI,EAAQr5G,QAAUq5G,EAAQvJ,UAAY40I,GAAoBrrI,EAAQr5G,MAAOwkP,GACzEC,GACFr0L,GAAQ9+C,EAAI,cAOtB,SAAS8yO,GAAa9yO,EAAI+nG,EAASujD,GACjC+nF,GAAoBrzO,EAAI+nG,EAASujD,IAE7Bs/D,IAAQE,KACVx7N,YAAW,WACT+jP,GAAoBrzO,EAAI+nG,EAASujD,KAChC,GAIP,SAAS+nF,GAAqBrzO,EAAI+nG,EAASujD,GACzC,IAAI58J,EAAQq5G,EAAQr5G,MAChB6nJ,EAAav2I,EAAGixH,SACpB,IAAIslB,GAAe7gJ,MAAMiD,QAAQjK,GAAjC,CASA,IADA,IAAIq/G,EAAUxvE,EACLnrC,EAAI,EAAGC,EAAI2M,EAAG/V,QAAQqJ,OAAQF,EAAIC,EAAGD,IAE5C,GADAmrC,EAASv+B,EAAG/V,QAAQmJ,GAChBmjJ,EACFxoC,EAAWm7G,EAAax6N,EAAOyhI,GAAS5xF,KAAY,EAChDA,EAAOwvE,WAAaA,IACtBxvE,EAAOwvE,SAAWA,QAGpB,GAAI46G,EAAWx4F,GAAS5xF,GAAS7vC,GAI/B,YAHIsR,EAAGmuG,gBAAkB/6G,IACvB4M,EAAGmuG,cAAgB/6G,IAMtBmjJ,IACHv2I,EAAGmuG,eAAiB,IAIxB,SAASilI,GAAqB1kP,EAAOzE,GACnC,OAAOA,EAAQk/G,OAAM,SAAUjtC,GAAK,OAAQysJ,EAAWzsJ,EAAGxtE,MAG5D,SAASyhI,GAAU5xF,GACjB,MAAO,WAAYA,EACfA,EAAO4tM,OACP5tM,EAAO7vC,MAGb,SAASqkP,GAAoBv4O,GAC3BA,EAAE/B,OAAO2mG,WAAY,EAGvB,SAAS4zI,GAAkBx4O,GAEpBA,EAAE/B,OAAO2mG,YACd5kG,EAAE/B,OAAO2mG,WAAY,EACrBtgD,GAAQtkD,EAAE/B,OAAQ,UAGpB,SAASqmD,GAAS9+C,EAAI/O,GACpB,IAAIuJ,EAAI0C,SAASoxG,YAAY,cAC7B9zG,EAAE+zG,UAAUt9G,GAAM,GAAM,GACxB+O,EAAGquG,cAAc7zG,GAMnB,SAAS84O,GAAY7oH,GACnB,OAAOA,EAAM+3D,mBAAuB/3D,EAAM99H,MAAS89H,EAAM99H,KAAKy7C,WAE1DqiF,EADA6oH,GAAW7oH,EAAM+3D,kBAAkBy3C,QAIzC,IAAIl8L,GAAO,CACTvsC,KAAM,SAAewO,EAAI8uF,EAAK27B,GAC5B,IAAI/7H,EAAQogG,EAAIpgG,MAEhB+7H,EAAQ6oH,GAAW7oH,GACnB,IAAI8oH,EAAgB9oH,EAAM99H,MAAQ89H,EAAM99H,KAAKy7C,WACzCorM,EAAkBxzO,EAAGyzO,mBACF,SAArBzzO,EAAGyf,MAAMg2B,QAAqB,GAAKz1C,EAAGyf,MAAMg2B,QAC1C/mD,GAAS6kP,GACX9oH,EAAM99H,KAAKoxC,MAAO,EAClBomI,GAAM15C,GAAO,WACXzqH,EAAGyf,MAAMg2B,QAAU+9L,MAGrBxzO,EAAGyf,MAAMg2B,QAAU/mD,EAAQ8kP,EAAkB,QAIjDp2M,OAAQ,SAAiBp9B,EAAI8uF,EAAK27B,GAChC,IAAI/7H,EAAQogG,EAAIpgG,MACZ8vG,EAAW1P,EAAI0P,SAGnB,IAAK9vG,KAAW8vG,EAAhB,CACAisB,EAAQ6oH,GAAW7oH,GACnB,IAAI8oH,EAAgB9oH,EAAM99H,MAAQ89H,EAAM99H,KAAKy7C,WACzCmrM,GACF9oH,EAAM99H,KAAKoxC,MAAO,EACdrvC,EACFy1K,GAAM15C,GAAO,WACXzqH,EAAGyf,MAAMg2B,QAAUz1C,EAAGyzO,sBAGxBrvE,GAAM35C,GAAO,WACXzqH,EAAGyf,MAAMg2B,QAAU,WAIvBz1C,EAAGyf,MAAMg2B,QAAU/mD,EAAQsR,EAAGyzO,mBAAqB,SAIvD5oH,OAAQ,SACN7qH,EACA+nG,EACA0iB,EACAwtG,EACAsR,GAEKA,IACHvpO,EAAGyf,MAAMg2B,QAAUz1C,EAAGyzO,sBAKxBC,GAAqB,CACvB19F,MAAO09B,GACP31I,KAAMA,IAKJ41M,GAAkB,CACpBx/O,KAAM2O,OACN2nJ,OAAQ5iC,QACR43D,IAAK53D,QACL3nG,KAAMpd,OACN7R,KAAM6R,OACNurO,WAAYvrO,OACZ0rO,WAAY1rO,OACZwrO,aAAcxrO,OACd2rO,aAAc3rO,OACdyrO,iBAAkBzrO,OAClB4rO,iBAAkB5rO,OAClBiuO,YAAajuO,OACbmuO,kBAAmBnuO,OACnBkuO,cAAeluO,OACfg4B,SAAU,CAACp2B,OAAQ5B,OAAQhM,SAK7B,SAAS88O,GAAcnpH,GACrB,IAAIopH,EAAcppH,GAASA,EAAMwuB,iBACjC,OAAI46F,GAAeA,EAAY3zE,KAAKj2K,QAAQ8uO,SACnC6a,GAAaxY,GAAuByY,EAAYjlJ,WAEhD67B,EAIX,SAASqpH,GAAuBtoC,GAC9B,IAAI7+M,EAAO,GACP1C,EAAUuhN,EAAKxgN,SAEnB,IAAK,IAAIwF,KAAOvG,EAAQm9L,UACtBz6L,EAAK6D,GAAOg7M,EAAKh7M,GAInB,IAAIy5B,EAAYhgC,EAAQowO,iBACxB,IAAK,IAAIvL,KAAS7kM,EAChBt9B,EAAK6iH,EAASs/G,IAAU7kM,EAAU6kM,GAEpC,OAAOniO,EAGT,SAAS8lG,GAAarnG,EAAG2oP,GACvB,GAAI,iBAAiBv2O,KAAKu2O,EAAS34J,KACjC,OAAOhwF,EAAE,aAAc,CACrBkX,MAAOyxO,EAAS96F,iBAAiBmuC,YAKvC,SAAS4sD,GAAqBvpH,GAC5B,MAAQA,EAAQA,EAAMhgI,OACpB,GAAIggI,EAAM99H,KAAKy7C,WACb,OAAO,EAKb,SAAS6rM,GAAallJ,EAAOmlJ,GAC3B,OAAOA,EAAS1jP,MAAQu+F,EAAMv+F,KAAO0jP,EAAS94J,MAAQ2T,EAAM3T,IAG9D,IAAI+4J,GAAgB,SAAUlgP,GAAK,OAAOA,EAAEmnF,KAAOqxI,GAAmBx4N,IAElEmgP,GAAmB,SAAUrmO,GAAK,MAAkB,SAAXA,EAAE5Z,MAE3CkgP,GAAa,CACflgP,KAAM,aACNmO,MAAOqxO,GACP5a,UAAU,EAEVtvO,OAAQ,SAAiB2B,GACvB,IAAI04M,EAASx5M,KAETskG,EAAWtkG,KAAKu/H,OAAOxjC,QAC3B,GAAKuI,IAKLA,EAAWA,EAASnsF,OAAO0xO,IAEtBvlJ,EAASt7F,QAAd,CAKI,EAQJ,IAAI4sB,EAAO51B,KAAK41B,KAGZ,EASJ,IAAI6zN,EAAWnlJ,EAAS,GAIxB,GAAIolJ,GAAoB1pP,KAAKC,QAC3B,OAAOwpP,EAKT,IAAIhlJ,EAAQ6kJ,GAAaG,GAEzB,IAAKhlJ,EACH,OAAOglJ,EAGT,GAAIzpP,KAAKgqP,SACP,OAAO7hJ,GAAYrnG,EAAG2oP,GAMxB,IAAIr8O,EAAK,gBAAmBpN,KAAS,KAAI,IACzCykG,EAAMv+F,IAAmB,MAAbu+F,EAAMv+F,IACdu+F,EAAM+oE,UACJpgK,EAAK,UACLA,EAAKq3F,EAAM3T,IACbqsI,EAAY14H,EAAMv+F,KACmB,IAAlCsS,OAAOisF,EAAMv+F,KAAKnB,QAAQqI,GAAYq3F,EAAMv+F,IAAMkH,EAAKq3F,EAAMv+F,IAC9Du+F,EAAMv+F,IAEZ,IAAI7D,GAAQoiG,EAAMpiG,OAASoiG,EAAMpiG,KAAO,KAAKy7C,WAAa0rM,GAAsBxpP,MAC5EiqP,EAAcjqP,KAAK2vO,OACnBia,EAAWN,GAAaW,GAQ5B,GAJIxlJ,EAAMpiG,KAAKy9H,YAAcr7B,EAAMpiG,KAAKy9H,WAAWt4D,KAAKsiL,MACtDrlJ,EAAMpiG,KAAKoxC,MAAO,GAIlBm2M,GACAA,EAASvnP,OACRsnP,GAAYllJ,EAAOmlJ,KACnBznB,GAAmBynB,MAElBA,EAAS1xD,oBAAqB0xD,EAAS1xD,kBAAkBy3C,OAAOniE,WAClE,CAGA,IAAI45B,EAAUwiD,EAASvnP,KAAKy7C,WAAap2C,EAAO,GAAIrF,GAEpD,GAAa,WAATuzB,EAOF,OALA51B,KAAKgqP,UAAW,EAChBhiB,GAAe5gC,EAAS,cAAc,WACpCoS,EAAOwwC,UAAW,EAClBxwC,EAAOq3B,kBAEF1oI,GAAYrnG,EAAG2oP,GACjB,GAAa,WAAT7zN,EAAmB,CAC5B,GAAIusM,GAAmB19H,GACrB,OAAOwlJ,EAET,IAAIC,EACAjC,EAAe,WAAciC,KACjCliB,GAAe3lO,EAAM,aAAc4lP,GACnCjgB,GAAe3lO,EAAM,iBAAkB4lP,GACvCjgB,GAAe5gC,EAAS,cAAc,SAAUttB,GAASowE,EAAepwE,MAI5E,OAAO2vE,KAMPzxO,GAAQtQ,EAAO,CACjBopF,IAAKt4E,OACL2xO,UAAW3xO,QACV6wO,WAEIrxO,GAAM4d,KAEb,IAAIw0N,GAAkB,CACpBpyO,MAAOA,GAEP8mJ,YAAa,WACX,IAAI06C,EAASx5M,KAET8yC,EAAS9yC,KAAK4wC,QAClB5wC,KAAK4wC,QAAU,SAAUuvF,EAAOotG,GAC9B,IAAIwE,EAAwBP,GAAkBh4B,GAE9CA,EAAOw4B,UACLx4B,EAAOm2B,OACPn2B,EAAO6wC,MACP,GACA,GAEF7wC,EAAOm2B,OAASn2B,EAAO6wC,KACvBtY,IACAj/L,EAAOzyC,KAAKm5M,EAAQr5E,EAAOotG,KAI/BpuO,OAAQ,SAAiB2B,GAQvB,IAPA,IAAIgwF,EAAM9wF,KAAK8wF,KAAO9wF,KAAKC,OAAOoC,KAAKyuF,KAAO,OAC1Cr1E,EAAMjP,OAAO7E,OAAO,MACpB2iP,EAAetqP,KAAKsqP,aAAetqP,KAAKskG,SACxCimJ,EAAcvqP,KAAKu/H,OAAOxjC,SAAW,GACrCuI,EAAWtkG,KAAKskG,SAAW,GAC3BkmJ,EAAiBhB,GAAsBxpP,MAElC8I,EAAI,EAAGA,EAAIyhP,EAAYvhP,OAAQF,IAAK,CAC3C,IAAIa,EAAI4gP,EAAYzhP,GACpB,GAAIa,EAAEmnF,IACJ,GAAa,MAATnnF,EAAEzD,KAAoD,IAArCsS,OAAO7O,EAAEzD,KAAKnB,QAAQ,WACzCu/F,EAAS/6F,KAAKI,GACd8R,EAAI9R,EAAEzD,KAAOyD,GACXA,EAAEtH,OAASsH,EAAEtH,KAAO,KAAKy7C,WAAa0sM,QAS9C,GAAIF,EAAc,CAGhB,IAFA,IAAID,EAAO,GACPlrM,EAAU,GACLg2J,EAAM,EAAGA,EAAMm1C,EAAathP,OAAQmsM,IAAO,CAClD,IAAIs1C,EAAMH,EAAan1C,GACvBs1C,EAAIpoP,KAAKy7C,WAAa0sM,EACtBC,EAAIpoP,KAAKoa,IAAMguO,EAAItyD,IAAI1vJ,wBACnBhtB,EAAIgvO,EAAIvkP,KACVmkP,EAAK9gP,KAAKkhP,GAEVtrM,EAAQ51C,KAAKkhP,GAGjBzqP,KAAKqqP,KAAOvpP,EAAEgwF,EAAK,KAAMu5J,GACzBrqP,KAAKm/C,QAAUA,EAGjB,OAAOr+C,EAAEgwF,EAAK,KAAMwT,IAGtBh3B,QAAS,WACP,IAAIg3B,EAAWtkG,KAAKsqP,aAChBH,EAAYnqP,KAAKmqP,YAAenqP,KAAK6J,MAAQ,KAAO,QACnDy6F,EAASt7F,QAAWhJ,KAAK0qP,QAAQpmJ,EAAS,GAAG6zF,IAAKgyD,KAMvD7lJ,EAASt+F,QAAQ2kP,IACjBrmJ,EAASt+F,QAAQ4kP,IACjBtmJ,EAASt+F,QAAQ6kP,IAKjB7qP,KAAK8qP,QAAUl4O,SAAS6qE,KAAK43C,aAE7B/wB,EAASt+F,SAAQ,SAAU2D,GACzB,GAAIA,EAAEtH,KAAK4nJ,MAAO,CAChB,IAAIv0I,EAAK/L,EAAEwuL,IACPx3K,EAAIjL,EAAGyf,MACX+vN,GAAmBxvO,EAAIy0O,GACvBxpO,EAAEugF,UAAYvgF,EAAEoqO,gBAAkBpqO,EAAEqqO,mBAAqB,GACzDt1O,EAAGnP,iBAAiBk+O,GAAoB/uO,EAAGu1O,QAAU,SAASx5M,EAAIvhC,GAC5DA,GAAKA,EAAE/B,SAAWuH,GAGjBxF,IAAK,aAAagD,KAAKhD,EAAEmrG,gBAC5B3lG,EAAG7S,oBAAoB4hP,GAAoBhzM,GAC3C/7B,EAAGu1O,QAAU,KACb7F,GAAsB1vO,EAAIy0O,YAOpC9qH,QAAS,CACPqrH,QAAS,SAAkBh1O,EAAIy0O,GAE7B,IAAK9F,GACH,OAAO,EAGT,GAAIrkP,KAAKkrP,SACP,OAAOlrP,KAAKkrP,SAOd,IAAI/4N,EAAQzc,EAAGkvG,YACXlvG,EAAGkrO,oBACLlrO,EAAGkrO,mBAAmB56O,SAAQ,SAAU06O,GAAOiD,GAAYxxN,EAAOuuN,MAEpEgD,GAASvxN,EAAOg4N,GAChBh4N,EAAMgD,MAAMg2B,QAAU,OACtBnrD,KAAK+uI,IAAIr9B,YAAYv/E,GACrB,IAAIkM,EAAOknN,GAAkBpzN,GAE7B,OADAnyB,KAAK+uI,IAAIn9B,YAAYz/E,GACbnyB,KAAKkrP,SAAW7sN,EAAK8nN,gBAKnC,SAASwE,GAAgBhhP,GAEnBA,EAAEwuL,IAAI8yD,SACRthP,EAAEwuL,IAAI8yD,UAGJthP,EAAEwuL,IAAIquD,UACR78O,EAAEwuL,IAAIquD,WAIV,SAASoE,GAAgBjhP,GACvBA,EAAEtH,KAAK8oP,OAASxhP,EAAEwuL,IAAI1vJ,wBAGxB,SAASoiN,GAAkBlhP,GACzB,IAAIyhP,EAASzhP,EAAEtH,KAAKoa,IAChB0uO,EAASxhP,EAAEtH,KAAK8oP,OAChBE,EAAKD,EAAOxxO,KAAOuxO,EAAOvxO,KAC1B0xO,EAAKF,EAAOzwN,IAAMwwN,EAAOxwN,IAC7B,GAAI0wN,GAAMC,EAAI,CACZ3hP,EAAEtH,KAAK4nJ,OAAQ,EACf,IAAItpI,EAAIhX,EAAEwuL,IAAIhjK,MACdxU,EAAEugF,UAAYvgF,EAAEoqO,gBAAkB,aAAeM,EAAK,MAAQC,EAAK,MACnE3qO,EAAEqqO,mBAAqB,MAI3B,IAAIO,GAAqB,CACvBxB,WAAYA,GACZK,gBAAiBA,IAMnB3pH,GAAI1+H,OAAO29N,YAAcA,GACzBj/F,GAAI1+H,OAAOs9N,cAAgBA,GAC3B5+F,GAAI1+H,OAAOu9N,eAAiBA,GAC5B7+F,GAAI1+H,OAAOy9N,gBAAkBA,GAC7B/+F,GAAI1+H,OAAOw9N,iBAAmBA,GAG9B73N,EAAO+4H,GAAI9gI,QAAQmgI,WAAYspH,IAC/B1hP,EAAO+4H,GAAI9gI,QAAQ4sL,WAAYg/D,IAG/B9qH,GAAIh5H,UAAUuqO,UAAYz2B,EAAY8sC,GAAQruO,EAG9CymH,GAAIh5H,UAAUs1L,OAAS,SACrBrnL,EACA63N,GAGA,OADA73N,EAAKA,GAAM6lM,EAAY1/G,GAAMnmF,QAAM5P,EAC5BqsO,GAAenyO,KAAM0V,EAAI63N,IAK9BhyB,GACFv2M,YAAW,WACLjD,EAAOk9N,UACLA,IACFA,GAAS/xH,KAAK,OAAQuzB,MAsBzB,GAKL,W,iBC1yQAt/H,EAAOD,QAAU,SAA4BulE,EAAW8lH,GACtD,IAAI5sL,EAAuC,oBAAtB8mE,EAAUvlE,QAC3BulE,EAAUvlE,QAAQo1O,cAClB7vK,EAAU9mE,QAQd,IAAK,IAAImJ,IANwB,oBAAtB29D,EAAUvlE,UACnBvB,EAAQ4sL,WAAa9lH,EAAUvlE,QAAQvB,QAAQ4sL,YAGjD5sL,EAAQ4sL,WAAa5sL,EAAQ4sL,YAAc,GAE7BA,EACZ5sL,EAAQ4sL,WAAWzjL,GAAKnJ,EAAQ4sL,WAAWzjL,IAAMyjL,EAAWzjL,K;;;;;;ACXhE,SAAS0iP,EAAY/qH,GACnB,IAAIpqH,EAAU+D,OAAOqmH,EAAIpqH,QAAQ3B,MAAM,KAAK,IAE5C,GAAI2B,GAAW,EACboqH,EAAIksD,MAAM,CAAE3rL,aAAcyqP,QACrB,CAGL,IAAI7kL,EAAQ65D,EAAIh5H,UAAUm/D,MAC1B65D,EAAIh5H,UAAUm/D,MAAQ,SAAUjnE,QACb,IAAZA,IAAqBA,EAAU,IAEpCA,EAAQ28D,KAAO38D,EAAQ28D,KACnB,CAACmvL,GAAUxqP,OAAOtB,EAAQ28D,MAC1BmvL,EACJ7kL,EAAMvmE,KAAKL,KAAML,IAQrB,SAAS8rP,IACP,IAAI9rP,EAAUK,KAAKU,SAEff,EAAQy0F,MACVp0F,KAAK0rP,OAAkC,oBAAlB/rP,EAAQy0F,MACzBz0F,EAAQy0F,QACRz0F,EAAQy0F,MACHz0F,EAAQQ,QAAUR,EAAQQ,OAAOurP,SAC1C1rP,KAAK0rP,OAAS/rP,EAAQQ,OAAOurP,S,iFAKnC,IAAIv9O,EAA2B,qBAAXiG,OAChBA,OACkB,qBAAX,EAAA0Q,EACL,EAAAA,EACA,GACF6mO,EAAcx9O,EAAO4yN,6BAEzB,SAAS6qB,EAAex3J,GACjBu3J,IAELv3J,EAAMy3J,aAAeF,EAErBA,EAAYz+I,KAAK,YAAa9Y,GAE9Bu3J,EAAYpkJ,GAAG,wBAAwB,SAAUukJ,GAC/C13J,EAAMkqH,aAAawtC,MAGrB13J,EAAMvtF,WAAU,SAAUqyG,EAAUnkB,GAClC42J,EAAYz+I,KAAK,gBAAiBgM,EAAUnkB,KAC3C,CAAEyqC,SAAS,IAEdprC,EAAM23J,iBAAgB,SAAUp3E,EAAQ5/E,GACtC42J,EAAYz+I,KAAK,cAAeynE,EAAQ5/E,KACvC,CAAEyqC,SAAS,KAWhB,SAAS5jC,EAAM6Y,EAAMlwF,GACnB,OAAOkwF,EAAKt8F,OAAOoM,GAAG,GAYxB,SAASynO,EAAUj/O,EAAK8J,GAItB,QAHe,IAAVA,IAAmBA,EAAQ,IAGpB,OAAR9J,GAA+B,kBAARA,EACzB,OAAOA,EAIT,IAAI6wN,EAAMhiI,EAAK/kF,GAAO,SAAUlN,GAAK,OAAOA,EAAE4iC,WAAax/B,KAC3D,GAAI6wN,EACF,OAAOA,EAAI/7H,KAGb,IAAIA,EAAOz2F,MAAMiD,QAAQtB,GAAO,GAAK,GAYrC,OATA8J,EAAMtN,KAAK,CACTgjC,SAAUx/B,EACV80F,KAAMA,IAGRr1F,OAAOqC,KAAK9B,GAAK/G,SAAQ,SAAUE,GACjC27F,EAAK37F,GAAO8lP,EAASj/O,EAAI7G,GAAM2Q,MAG1BgrF,EAMT,SAASoqJ,EAAcl/O,EAAKM,GAC1Bb,OAAOqC,KAAK9B,GAAK/G,SAAQ,SAAUE,GAAO,OAAOmH,EAAGN,EAAI7G,GAAMA,MAGhE,SAAS4K,EAAU/D,GACjB,OAAe,OAARA,GAA+B,kBAARA,EAGhC,SAASwwN,EAAWt3N,GAClB,OAAOA,GAA2B,oBAAbA,EAAI2C,KAO3B,SAASgvM,EAASvqM,EAAI84D,GACpB,OAAO,WACL,OAAO94D,EAAG84D,IAKd,IAAI8oC,EAAS,SAAiBi9I,EAAWC,GACvCnsP,KAAKmsP,QAAUA,EAEfnsP,KAAKosP,UAAY5/O,OAAO7E,OAAO,MAE/B3H,KAAKqsP,WAAaH,EAClB,IAAII,EAAWJ,EAAUn3J,MAGzB/0F,KAAK+0F,OAA6B,oBAAbu3J,EAA0BA,IAAaA,IAAa,IAGvEznC,EAAqB,CAAE0nC,WAAY,CAAE3sN,cAAc,IAEvDilL,EAAmB0nC,WAAW71N,IAAM,WAClC,QAAS12B,KAAKqsP,WAAWE,YAG3Bt9I,EAAOxnG,UAAU+kP,SAAW,SAAmBtmP,EAAK/E,GAClDnB,KAAKosP,UAAUlmP,GAAO/E,GAGxB8tG,EAAOxnG,UAAUmqG,YAAc,SAAsB1rG,UAC5ClG,KAAKosP,UAAUlmP,IAGxB+oG,EAAOxnG,UAAUglP,SAAW,SAAmBvmP,GAC7C,OAAOlG,KAAKosP,UAAUlmP,IAGxB+oG,EAAOxnG,UAAUilP,SAAW,SAAmBxmP,GAC7C,OAAOA,KAAOlG,KAAKosP,WAGrBn9I,EAAOxnG,UAAUqrC,OAAS,SAAiBo5M,GACzClsP,KAAKqsP,WAAWE,WAAaL,EAAUK,WACnCL,EAAUz6B,UACZzxN,KAAKqsP,WAAW56B,QAAUy6B,EAAUz6B,SAElCy6B,EAAUrkJ,YACZ7nG,KAAKqsP,WAAWxkJ,UAAYqkJ,EAAUrkJ,WAEpCqkJ,EAAUS,UACZ3sP,KAAKqsP,WAAWM,QAAUT,EAAUS,UAIxC19I,EAAOxnG,UAAUmlP,aAAe,SAAuBv/O,GACrD4+O,EAAajsP,KAAKosP,UAAW/+O,IAG/B4hG,EAAOxnG,UAAUolP,cAAgB,SAAwBx/O,GACnDrN,KAAKqsP,WAAWM,SAClBV,EAAajsP,KAAKqsP,WAAWM,QAASt/O,IAI1C4hG,EAAOxnG,UAAUqlP,cAAgB,SAAwBz/O,GACnDrN,KAAKqsP,WAAW56B,SAClBw6B,EAAajsP,KAAKqsP,WAAW56B,QAASpkN,IAI1C4hG,EAAOxnG,UAAUslP,gBAAkB,SAA0B1/O,GACvDrN,KAAKqsP,WAAWxkJ,WAClBokJ,EAAajsP,KAAKqsP,WAAWxkJ,UAAWx6F,IAI5Cb,OAAOC,iBAAkBwiG,EAAOxnG,UAAWo9M,GAE3C,IAAImoC,EAAmB,SAA2BC,GAEhDjtP,KAAKukE,SAAS,GAAI0oL,GAAe,IA8EnC,SAASn6M,EAAQzgC,EAAM66O,EAAcC,GASnC,GAHAD,EAAap6M,OAAOq6M,GAGhBA,EAAUzyJ,QACZ,IAAK,IAAIx0F,KAAOinP,EAAUzyJ,QAAS,CACjC,IAAKwyJ,EAAaT,SAASvmP,GAOzB,cAEF4sC,EACEzgC,EAAKpR,OAAOiF,GACZgnP,EAAaT,SAASvmP,GACtBinP,EAAUzyJ,QAAQx0F,KAlG1B8mP,EAAiBvlP,UAAUivB,IAAM,SAAcrkB,GAC7C,OAAOA,EAAKq/B,QAAO,SAAUvwC,EAAQ+E,GACnC,OAAO/E,EAAOsrP,SAASvmP,KACtBlG,KAAKk0B,OAGV84N,EAAiBvlP,UAAU2lP,aAAe,SAAuB/6O,GAC/D,IAAIlR,EAASnB,KAAKk0B,KAClB,OAAO7hB,EAAKq/B,QAAO,SAAU6hD,EAAWrtF,GAEtC,OADA/E,EAASA,EAAOsrP,SAASvmP,GAClBqtF,GAAapyF,EAAOorP,WAAarmP,EAAM,IAAM,MACnD,KAGL8mP,EAAiBvlP,UAAUqrC,OAAS,SAAmBm6M,GACrDn6M,EAAO,GAAI9yC,KAAKk0B,KAAM+4N,IAGxBD,EAAiBvlP,UAAU88D,SAAW,SAAmBlyD,EAAM65O,EAAWC,GACtE,IAAI3yC,EAASx5M,UACI,IAAZmsP,IAAqBA,GAAU,GAMtC,IAAIgB,EAAY,IAAIl+I,EAAOi9I,EAAWC,GACtC,GAAoB,IAAhB95O,EAAKrJ,OACPhJ,KAAKk0B,KAAOi5N,MACP,CACL,IAAIhtP,EAASH,KAAK02B,IAAIrkB,EAAK/D,MAAM,GAAI,IACrCnO,EAAOqsP,SAASn6O,EAAKA,EAAKrJ,OAAS,GAAImkP,GAIrCjB,EAAUxxJ,SACZuxJ,EAAaC,EAAUxxJ,SAAS,SAAU2yJ,EAAgBnnP,GACxDszM,EAAOj1I,SAASlyD,EAAKpR,OAAOiF,GAAMmnP,EAAgBlB,OAKxDa,EAAiBvlP,UAAUk9D,WAAa,SAAqBtyD,GAC3D,IAAIlS,EAASH,KAAK02B,IAAIrkB,EAAK/D,MAAM,GAAI,IACjCpI,EAAMmM,EAAKA,EAAKrJ,OAAS,GACzBy7F,EAAQtkG,EAAOssP,SAASvmP,GAEvBu+F,GAUAA,EAAM0nJ,SAIXhsP,EAAOyxG,YAAY1rG,IAGrB8mP,EAAiBvlP,UAAU6lP,aAAe,SAAuBj7O,GAC/D,IAAIlS,EAASH,KAAK02B,IAAIrkB,EAAK/D,MAAM,GAAI,IACjCpI,EAAMmM,EAAKA,EAAKrJ,OAAS,GAE7B,QAAI7I,GACKA,EAAOusP,SAASxmP,IAmC3B,IAyCIu6H,EAEJ,IAAI9jC,EAAQ,SAAgBh9F,GAC1B,IAAI65M,EAASx5M,UACI,IAAZL,IAAqBA,EAAU,KAK/B8gI,GAAyB,qBAAXrsH,QAA0BA,OAAOqsH,KAClD2rD,EAAQh4K,OAAOqsH,KASjB,IAAItqG,EAAUx2B,EAAQw2B,aAA0B,IAAZA,IAAqBA,EAAU,IACnE,IAAIy2E,EAASjtG,EAAQitG,YAAwB,IAAXA,IAAoBA,GAAS,GAG/D5sG,KAAKutP,aAAc,EACnBvtP,KAAKwtP,SAAWhhP,OAAO7E,OAAO,MAC9B3H,KAAKytP,mBAAqB,GAC1BztP,KAAK0tP,WAAalhP,OAAO7E,OAAO,MAChC3H,KAAK2tP,gBAAkBnhP,OAAO7E,OAAO,MACrC3H,KAAK4tP,SAAW,IAAIZ,EAAiBrtP,GACrCK,KAAK6tP,qBAAuBrhP,OAAO7E,OAAO,MAC1C3H,KAAK8tP,aAAe,GACpB9tP,KAAK+tP,WAAa,IAAIttH,EACtBzgI,KAAKguP,uBAAyBxhP,OAAO7E,OAAO,MAG5C,IAAIysF,EAAQp0F,KACRwkG,EAAMxkG,KACNiuP,EAAWzpJ,EAAIypJ,SACfC,EAAS1pJ,EAAI0pJ,OACjBluP,KAAKiuP,SAAW,SAAwBtnP,EAAMwM,GAC5C,OAAO86O,EAAS5tP,KAAK+zF,EAAOztF,EAAMwM,IAEpCnT,KAAKkuP,OAAS,SAAsBvnP,EAAMwM,EAASxT,GACjD,OAAOuuP,EAAO7tP,KAAK+zF,EAAOztF,EAAMwM,EAASxT,IAI3CK,KAAK4sG,OAASA,EAEd,IAAI7X,EAAQ/0F,KAAK4tP,SAAS15N,KAAK6gE,MAK/Bo5J,EAAcnuP,KAAM+0F,EAAO,GAAI/0F,KAAK4tP,SAAS15N,MAI7Ck6N,EAAapuP,KAAM+0F,GAGnB5+D,EAAQnwB,SAAQ,SAAUghE,GAAU,OAAOA,EAAOwyI,MAElD,IAAI60C,OAAmCvoP,IAArBnG,EAAQs/N,SAAyBt/N,EAAQs/N,SAAWx+F,EAAI1+H,OAAOk9N,SAC7EovB,GACFzC,EAAc5rP,OAIdsuP,EAAuB,CAAEv5J,MAAO,CAAEn1D,cAAc,IAmMpD,SAAS2uN,EAAkBlhP,EAAI8zN,EAAMxhO,GAMnC,OALIwhO,EAAKp8N,QAAQsI,GAAM,IACrB1N,GAAWA,EAAQ6/H,QACf2hG,EAAKp2N,QAAQsC,GACb8zN,EAAK53N,KAAK8D,IAET,WACL,IAAIvE,EAAIq4N,EAAKp8N,QAAQsI,GACjBvE,GAAK,GACPq4N,EAAK13N,OAAOX,EAAG,IAKrB,SAAS0lP,EAAYp6J,EAAOq6J,GAC1Br6J,EAAMo5J,SAAWhhP,OAAO7E,OAAO,MAC/BysF,EAAMs5J,WAAalhP,OAAO7E,OAAO,MACjCysF,EAAMu5J,gBAAkBnhP,OAAO7E,OAAO,MACtCysF,EAAMy5J,qBAAuBrhP,OAAO7E,OAAO,MAC3C,IAAIotF,EAAQX,EAAMW,MAElBo5J,EAAc/5J,EAAOW,EAAO,GAAIX,EAAMw5J,SAAS15N,MAAM,GAErDk6N,EAAah6J,EAAOW,EAAO05J,GAG7B,SAASL,EAAch6J,EAAOW,EAAO05J,GACnC,IAAIC,EAAQt6J,EAAM6nI,IAGlB7nI,EAAMu4J,QAAU,GAEhBv4J,EAAM45J,uBAAyBxhP,OAAO7E,OAAO,MAC7C,IAAIgnP,EAAiBv6J,EAAMu5J,gBACvB7vH,EAAW,GACfmuH,EAAa0C,GAAgB,SAAUthP,EAAInH,GAIzC43H,EAAS53H,GAAO0xM,EAAQvqM,EAAI+mF,GAC5B5nF,OAAOE,eAAe0nF,EAAMu4J,QAASzmP,EAAK,CACxCwwB,IAAK,WAAc,OAAO09D,EAAM6nI,IAAI/1N,IACpCixB,YAAY,OAOhB,IAAIugK,EAASj3D,EAAI1+H,OAAO21L,OACxBj3D,EAAI1+H,OAAO21L,QAAS,EACpBtjG,EAAM6nI,IAAM,IAAIx7F,EAAI,CAClBp+H,KAAM,CACJusP,QAAS75J,GAEX+oC,SAAUA,IAEZ2C,EAAI1+H,OAAO21L,OAASA,EAGhBtjG,EAAMwY,QACRiiJ,EAAiBz6J,GAGfs6J,IACED,GAGFr6J,EAAM06J,aAAY,WAChBJ,EAAM91M,MAAMg2M,QAAU,QAG1BnuH,EAAIumG,UAAS,WAAc,OAAO0nB,EAAMxxD,eAI5C,SAASixD,EAAe/5J,EAAO26J,EAAW18O,EAAMlR,EAAQstP,GACtD,IAAIzZ,GAAU3iO,EAAKrJ,OACfuqF,EAAYa,EAAMw5J,SAASR,aAAa/6O,GAW5C,GARIlR,EAAOorP,aACLn4J,EAAMy5J,qBAAqBt6J,GAG/Ba,EAAMy5J,qBAAqBt6J,GAAapyF,IAIrC6zO,IAAWyZ,EAAK,CACnB,IAAIO,EAAcC,EAAeF,EAAW18O,EAAK/D,MAAM,GAAI,IACvD4gP,EAAa78O,EAAKA,EAAKrJ,OAAS,GACpCorF,EAAM06J,aAAY,WAQhBruH,EAAIxsG,IAAI+6N,EAAaE,EAAY/tP,EAAO4zF,UAI5C,IAAI39D,EAAQj2B,EAAOpB,QAAUovP,EAAiB/6J,EAAOb,EAAWlhF,GAEhElR,EAAO4rP,iBAAgB,SAAU7zI,EAAUhzG,GACzC,IAAIkpP,EAAiB77J,EAAYrtF,EACjCmpP,EAAiBj7J,EAAOg7J,EAAgBl2I,EAAU9hF,MAGpDj2B,EAAO2rP,eAAc,SAAUn4E,EAAQzuK,GACrC,IAAIS,EAAOguK,EAAOzgJ,KAAOhuB,EAAMqtF,EAAYrtF,EACvC2mD,EAAU8nH,EAAO9nH,SAAW8nH,EAChC26E,EAAel7J,EAAOztF,EAAMkmD,EAASz1B,MAGvCj2B,EAAO0rP,eAAc,SAAUnmM,EAAQxgD,GACrC,IAAIkpP,EAAiB77J,EAAYrtF,EACjCqpP,EAAen7J,EAAOg7J,EAAgB1oM,EAAQtvB,MAGhDj2B,EAAOyrP,cAAa,SAAUnoJ,EAAOv+F,GACnCioP,EAAc/5J,EAAO26J,EAAW18O,EAAKpR,OAAOiF,GAAMu+F,EAAOgqJ,MAQ7D,SAASU,EAAkB/6J,EAAOb,EAAWlhF,GAC3C,IAAIm9O,EAA4B,KAAdj8J,EAEdn8D,EAAQ,CACV62N,SAAUuB,EAAcp7J,EAAM65J,SAAW,SAAUt1M,EAAO82M,EAAU1jL,GAClE,IAAIx6D,EAAOm+O,EAAiB/2M,EAAO82M,EAAU1jL,GACzC54D,EAAU5B,EAAK4B,QACfxT,EAAU4R,EAAK5R,QACfgH,EAAO4K,EAAK5K,KAUhB,OARKhH,GAAYA,EAAQu0B,OACvBvtB,EAAO4sF,EAAY5sF,GAOdytF,EAAM65J,SAAStnP,EAAMwM,IAG9B+6O,OAAQsB,EAAcp7J,EAAM85J,OAAS,SAAUv1M,EAAO82M,EAAU1jL,GAC9D,IAAIx6D,EAAOm+O,EAAiB/2M,EAAO82M,EAAU1jL,GACzC54D,EAAU5B,EAAK4B,QACfxT,EAAU4R,EAAK5R,QACfgH,EAAO4K,EAAK5K,KAEXhH,GAAYA,EAAQu0B,OACvBvtB,EAAO4sF,EAAY5sF,GAOrBytF,EAAM85J,OAAOvnP,EAAMwM,EAASxT,KAiBhC,OAXA6M,OAAOC,iBAAiB2qB,EAAO,CAC7Bu1N,QAAS,CACPj2N,IAAK84N,EACD,WAAc,OAAOp7J,EAAMu4J,SAC3B,WAAc,OAAOgD,EAAiBv7J,EAAOb,KAEnDwB,MAAO,CACLr+D,IAAK,WAAc,OAAOu4N,EAAe76J,EAAMW,MAAO1iF,OAInD+kB,EAGT,SAASu4N,EAAkBv7J,EAAOb,GAChC,IAAKa,EAAM45J,uBAAuBz6J,GAAY,CAC5C,IAAIq8J,EAAe,GACfC,EAAWt8J,EAAUvqF,OACzBwD,OAAOqC,KAAKulF,EAAMu4J,SAAS3mP,SAAQ,SAAUW,GAE3C,GAAIA,EAAK2H,MAAM,EAAGuhP,KAAct8J,EAAhC,CAGA,IAAIu8J,EAAYnpP,EAAK2H,MAAMuhP,GAK3BrjP,OAAOE,eAAekjP,EAAcE,EAAW,CAC7Cp5N,IAAK,WAAc,OAAO09D,EAAMu4J,QAAQhmP,IACxCwwB,YAAY,QAGhBi9D,EAAM45J,uBAAuBz6J,GAAaq8J,EAG5C,OAAOx7J,EAAM45J,uBAAuBz6J,GAGtC,SAAS87J,EAAkBj7J,EAAOztF,EAAMkmD,EAASz1B,GAC/C,IAAI+pB,EAAQizC,EAAMs5J,WAAW/mP,KAAUytF,EAAMs5J,WAAW/mP,GAAQ,IAChEw6C,EAAM53C,MAAK,SAAiC4J,GAC1C05C,EAAQxsD,KAAK+zF,EAAOh9D,EAAM29D,MAAO5hF,MAIrC,SAASm8O,EAAgBl7J,EAAOztF,EAAMkmD,EAASz1B,GAC7C,IAAI+pB,EAAQizC,EAAMo5J,SAAS7mP,KAAUytF,EAAMo5J,SAAS7mP,GAAQ,IAC5Dw6C,EAAM53C,MAAK,SAA+B4J,GACxC,IAAI2sB,EAAM+sB,EAAQxsD,KAAK+zF,EAAO,CAC5B65J,SAAU72N,EAAM62N,SAChBC,OAAQ92N,EAAM82N,OACdvB,QAASv1N,EAAMu1N,QACf53J,MAAO39D,EAAM29D,MACbg7J,YAAa37J,EAAMu4J,QACnBoC,UAAW36J,EAAMW,OAChB5hF,GAIH,OAHKoqN,EAAUz9L,KACbA,EAAM99B,QAAQC,QAAQ69B,IAEpBs0D,EAAMy3J,aACD/rN,EAAI2pI,OAAM,SAAUplK,GAEzB,MADA+vF,EAAMy3J,aAAa3+I,KAAK,aAAc7oG,GAChCA,KAGDy7B,KAKb,SAASyvN,EAAgBn7J,EAAOztF,EAAMqpP,EAAW54N,GAC3Cg9D,EAAMu5J,gBAAgBhnP,KAM1BytF,EAAMu5J,gBAAgBhnP,GAAQ,SAAwBytF,GACpD,OAAO47J,EACL54N,EAAM29D,MACN39D,EAAMu1N,QACNv4J,EAAMW,MACNX,EAAMu4J,WAKZ,SAASkC,EAAkBz6J,GACzBA,EAAM6nI,IAAIp6C,QAAO,WAAc,OAAO7hL,KAAK44C,MAAMg2M,WAAW,WACtD,IAGH,CAAE7sJ,MAAM,EAAMyuI,MAAM,IAGzB,SAASye,EAAgBl6J,EAAO1iF,GAC9B,OAAOA,EAAKq/B,QAAO,SAAUqjD,EAAO7uF,GAAO,OAAO6uF,EAAM7uF,KAAS6uF,GAGnE,SAAS26J,EAAkB/oP,EAAMwM,EAASxT,GAWxC,OAVImR,EAASnK,IAASA,EAAKA,OACzBhH,EAAUwT,EACVA,EAAUxM,EACVA,EAAOA,EAAKA,MAOP,CAAEA,KAAMA,EAAMwM,QAASA,EAASxT,QAASA,GAGlD,SAASysL,EAASgtB,GACZ34E,GAAO24E,IAAS34E,IAQpBA,EAAM24E,EACNoyC,EAAW/qH,IAzeb6tH,EAAqBv5J,MAAMr+D,IAAM,WAC/B,OAAO12B,KAAKi8N,IAAIrjL,MAAMg2M,SAGxBN,EAAqBv5J,MAAM9gE,IAAM,SAAUpiB,GACrC,GAKN8qF,EAAMl1F,UAAUymP,OAAS,SAAiBv1M,EAAO82M,EAAU1jL,GACvD,IAAIytI,EAASx5M,KAGXwkG,EAAMkrJ,EAAiB/2M,EAAO82M,EAAU1jL,GACtCplE,EAAO69F,EAAI79F,KACXwM,EAAUqxF,EAAIrxF,QAGhB+lG,GAFY1U,EAAI7kG,QAEL,CAAEgH,KAAMA,EAAMwM,QAASA,IAClCguC,EAAQnhD,KAAK0tP,WAAW/mP,GACvBw6C,IAMLnhD,KAAK8uP,aAAY,WACf3tM,EAAMn7C,SAAQ,SAAyB6mD,GACrCA,EAAQ15C,SAIZnT,KAAK8tP,aACFx/O,QACAtI,SAAQ,SAAUgoC,GAAO,OAAOA,EAAIkrE,EAAUsgG,EAAOzkH,YAa1D4H,EAAMl1F,UAAUwmP,SAAW,SAAmBt1M,EAAO82M,GACjD,IAAIj2C,EAASx5M,KAGXwkG,EAAMkrJ,EAAiB/2M,EAAO82M,GAC5B9oP,EAAO69F,EAAI79F,KACXwM,EAAUqxF,EAAIrxF,QAEhBwhK,EAAS,CAAEhuK,KAAMA,EAAMwM,QAASA,GAChCguC,EAAQnhD,KAAKwtP,SAAS7mP,GAC1B,GAAKw6C,EAAL,CAOA,IACEnhD,KAAKytP,mBACFn/O,QACA6J,QAAO,SAAU61B,GAAO,OAAOA,EAAIkwC,UACnCl4E,SAAQ,SAAUgoC,GAAO,OAAOA,EAAIkwC,OAAOy2F,EAAQ6kC,EAAOzkH,UAC7D,MAAO7kF,GACH,EAMN,IAAIiG,EAASgrC,EAAMn4C,OAAS,EACxBhH,QAAQmG,IAAIg5C,EAAM1lC,KAAI,SAAUoxC,GAAW,OAAOA,EAAQ15C,OAC1DguC,EAAM,GAAGhuC,GAEb,OAAO,IAAInR,SAAQ,SAAUC,EAASC,GACpCiU,EAAOvN,MAAK,SAAUk3B,GACpB,IACE05K,EAAOi0C,mBACJt1O,QAAO,SAAU61B,GAAO,OAAOA,EAAImwC,SACnCn4E,SAAQ,SAAUgoC,GAAO,OAAOA,EAAImwC,MAAMw2F,EAAQ6kC,EAAOzkH,UAC5D,MAAO7kF,GACH,EAKNjO,EAAQ69B,MACP,SAAUp0B,GACX,IACE8tM,EAAOi0C,mBACJt1O,QAAO,SAAU61B,GAAO,OAAOA,EAAItiC,SACnC1F,SAAQ,SAAUgoC,GAAO,OAAOA,EAAItiC,MAAMipK,EAAQ6kC,EAAOzkH,MAAOrpF,MACnE,MAAOwE,GACH,EAKNhO,EAAOwJ,WAKbixF,EAAMl1F,UAAUZ,UAAY,SAAoBwG,EAAI1N,GAClD,OAAO4uP,EAAiBlhP,EAAIrN,KAAK8tP,aAAcnuP,IAGjDg9F,EAAMl1F,UAAUskP,gBAAkB,SAA0B1+O,EAAI1N,GAC9D,IAAIwhO,EAAqB,oBAAP9zN,EAAoB,CAAE6wE,OAAQ7wE,GAAOA,EACvD,OAAOkhP,EAAiBptB,EAAMnhO,KAAKytP,mBAAoB9tP,IAGzDg9F,EAAMl1F,UAAU05H,MAAQ,SAAgBz6E,EAAQjV,EAAI9xC,GAChD,IAAI65M,EAASx5M,KAKf,OAAOA,KAAK+tP,WAAWlsE,QAAO,WAAc,OAAOn7H,EAAO8yJ,EAAOzkH,MAAOykH,EAAOmzC,WAAal7M,EAAI9xC,IAGlGg9F,EAAMl1F,UAAU62M,aAAe,SAAuBvpH,GAClD,IAAIykH,EAASx5M,KAEfA,KAAK8uP,aAAY,WACft1C,EAAOyiB,IAAIrjL,MAAMg2M,QAAU75J,MAI/B4H,EAAMl1F,UAAUwoP,eAAiB,SAAyB59O,EAAM65O,EAAWvsP,QACtD,IAAZA,IAAqBA,EAAU,IAElB,kBAAT0S,IAAqBA,EAAO,CAACA,IAOxCrS,KAAK4tP,SAASrpL,SAASlyD,EAAM65O,GAC7BiC,EAAcnuP,KAAMA,KAAK+0F,MAAO1iF,EAAMrS,KAAK4tP,SAASl3N,IAAIrkB,GAAO1S,EAAQuwP,eAEvE9B,EAAapuP,KAAMA,KAAK+0F,QAG1B4H,EAAMl1F,UAAU0oP,iBAAmB,SAA2B99O,GAC1D,IAAImnM,EAASx5M,KAEK,kBAATqS,IAAqBA,EAAO,CAACA,IAMxCrS,KAAK4tP,SAASjpL,WAAWtyD,GACzBrS,KAAK8uP,aAAY,WACf,IAAIE,EAAcC,EAAez1C,EAAOzkH,MAAO1iF,EAAK/D,MAAM,GAAI,IAC9DmyH,EAAIv9F,OAAO8rN,EAAa38O,EAAKA,EAAKrJ,OAAS,OAE7CwlP,EAAWxuP,OAGb28F,EAAMl1F,UAAU2oP,UAAY,SAAoB/9O,GAO9C,MANoB,kBAATA,IAAqBA,EAAO,CAACA,IAMjCrS,KAAK4tP,SAASN,aAAaj7O,IAGpCsqF,EAAMl1F,UAAU4oP,UAAY,SAAoBl8M,GAC9Cn0C,KAAK4tP,SAAS96M,OAAOqB,GACrBq6M,EAAWxuP,MAAM,IAGnB28F,EAAMl1F,UAAUqnP,YAAc,SAAsBzhP,GAClD,IAAIijP,EAAatwP,KAAKutP,YACtBvtP,KAAKutP,aAAc,EACnBlgP,IACArN,KAAKutP,YAAc+C,GAGrB9jP,OAAOC,iBAAkBkwF,EAAMl1F,UAAW6mP,GAmT1C,IAAIiC,EAAWC,GAAmB,SAAUj9J,EAAWk9J,GACrD,IAAI3wN,EAAM,GA0BV,OAtBA4wN,EAAaD,GAAQzqP,SAAQ,SAAUw+F,GACrC,IAAIt+F,EAAMs+F,EAAIt+F,IACVD,EAAMu+F,EAAIv+F,IAEd65B,EAAI55B,GAAO,WACT,IAAI6uF,EAAQ/0F,KAAK0rP,OAAO32J,MACpB43J,EAAU3sP,KAAK0rP,OAAOiB,QAC1B,GAAIp5J,EAAW,CACb,IAAIpyF,EAASwvP,EAAqB3wP,KAAK0rP,OAAQ,WAAYn4J,GAC3D,IAAKpyF,EACH,OAEF4zF,EAAQ5zF,EAAOpB,QAAQg1F,MACvB43J,EAAUxrP,EAAOpB,QAAQ4sP,QAE3B,MAAsB,oBAAR1mP,EACVA,EAAI5F,KAAKL,KAAM+0F,EAAO43J,GACtB53J,EAAM9uF,IAGZ65B,EAAI55B,GAAK0qP,MAAO,KAEX9wN,KASL+wN,EAAeL,GAAmB,SAAUj9J,EAAWsU,GACzD,IAAI/nE,EAAM,GA0BV,OAtBA4wN,EAAa7oJ,GAAW7hG,SAAQ,SAAUw+F,GACxC,IAAIt+F,EAAMs+F,EAAIt+F,IACVD,EAAMu+F,EAAIv+F,IAEd65B,EAAI55B,GAAO,WACT,IAAIqL,EAAO,GAAIyJ,EAAMxJ,UAAUxI,OAC/B,MAAQgS,IAAQzJ,EAAMyJ,GAAQxJ,UAAWwJ,GAGzC,IAAIkzO,EAASluP,KAAK0rP,OAAOwC,OACzB,GAAI36J,EAAW,CACb,IAAIpyF,EAASwvP,EAAqB3wP,KAAK0rP,OAAQ,eAAgBn4J,GAC/D,IAAKpyF,EACH,OAEF+sP,EAAS/sP,EAAOpB,QAAQmuP,OAE1B,MAAsB,oBAARjoP,EACVA,EAAIoF,MAAMrL,KAAM,CAACkuP,GAAQjtP,OAAOsQ,IAChC28O,EAAO7iP,MAAMrL,KAAK0rP,OAAQ,CAACzlP,GAAKhF,OAAOsQ,QAGxCuuB,KASLgxN,EAAaN,GAAmB,SAAUj9J,EAAWo5J,GACvD,IAAI7sN,EAAM,GAuBV,OAnBA4wN,EAAa/D,GAAS3mP,SAAQ,SAAUw+F,GACtC,IAAIt+F,EAAMs+F,EAAIt+F,IACVD,EAAMu+F,EAAIv+F,IAGdA,EAAMstF,EAAYttF,EAClB65B,EAAI55B,GAAO,WACT,IAAIqtF,GAAco9J,EAAqB3wP,KAAK0rP,OAAQ,aAAcn4J,GAOlE,OAAOvzF,KAAK0rP,OAAOiB,QAAQ1mP,IAG7B65B,EAAI55B,GAAK0qP,MAAO,KAEX9wN,KASLixN,EAAaP,GAAmB,SAAUj9J,EAAWk+H,GACvD,IAAI3xL,EAAM,GA0BV,OAtBA4wN,EAAaj/B,GAASzrN,SAAQ,SAAUw+F,GACtC,IAAIt+F,EAAMs+F,EAAIt+F,IACVD,EAAMu+F,EAAIv+F,IAEd65B,EAAI55B,GAAO,WACT,IAAIqL,EAAO,GAAIyJ,EAAMxJ,UAAUxI,OAC/B,MAAQgS,IAAQzJ,EAAMyJ,GAAQxJ,UAAWwJ,GAGzC,IAAIizO,EAAWjuP,KAAK0rP,OAAOuC,SAC3B,GAAI16J,EAAW,CACb,IAAIpyF,EAASwvP,EAAqB3wP,KAAK0rP,OAAQ,aAAcn4J,GAC7D,IAAKpyF,EACH,OAEF8sP,EAAW9sP,EAAOpB,QAAQkuP,SAE5B,MAAsB,oBAARhoP,EACVA,EAAIoF,MAAMrL,KAAM,CAACiuP,GAAUhtP,OAAOsQ,IAClC08O,EAAS5iP,MAAMrL,KAAK0rP,OAAQ,CAACzlP,GAAKhF,OAAOsQ,QAG1CuuB,KAQLkxN,EAA0B,SAAUz9J,GAAa,MAAO,CAC1Dg9J,SAAUA,EAASrpP,KAAK,KAAMqsF,GAC9Bu9J,WAAYA,EAAW5pP,KAAK,KAAMqsF,GAClCs9J,aAAcA,EAAa3pP,KAAK,KAAMqsF,GACtCw9J,WAAYA,EAAW7pP,KAAK,KAAMqsF,KAUpC,SAASm9J,EAAcj1O,GACrB,OAAKw1O,EAAWx1O,GAGTrQ,MAAMiD,QAAQoN,GACjBA,EAAIA,KAAI,SAAUvV,GAAO,MAAO,CAAGA,IAAKA,EAAKD,IAAKC,MAClDsG,OAAOqC,KAAK4M,GAAKA,KAAI,SAAUvV,GAAO,MAAO,CAAGA,IAAKA,EAAKD,IAAKwV,EAAIvV,OAJ9D,GAYX,SAAS+qP,EAAYx1O,GACnB,OAAOrQ,MAAMiD,QAAQoN,IAAQ3K,EAAS2K,GAQxC,SAAS+0O,EAAoBnjP,GAC3B,OAAO,SAAUkmF,EAAW93E,GAO1B,MANyB,kBAAd83E,GACT93E,EAAM83E,EACNA,EAAY,IACwC,MAA3CA,EAAUp/E,OAAOo/E,EAAUvqF,OAAS,KAC7CuqF,GAAa,KAERlmF,EAAGkmF,EAAW93E,IAWzB,SAASk1O,EAAsBv8J,EAAO88J,EAAQ39J,GAC5C,IAAIpyF,EAASizF,EAAMy5J,qBAAqBt6J,GAIxC,OAAOpyF,EAKT,SAASgwP,EAAc3sJ,QACR,IAARA,IAAiBA,EAAM,IAC5B,IAAIuR,EAAYvR,EAAIuR,eAA8B,IAAdA,IAAuBA,GAAY,GACvE,IAAI59F,EAASqsF,EAAIrsF,YAAwB,IAAXA,IAAoBA,EAAS,SAAU+gG,EAAUk4I,EAAaC,GAAc,OAAO,IACjH,IAAIC,EAAc9sJ,EAAI8sJ,iBAAkC,IAAhBA,IAAyBA,EAAc,SAAUv8J,GAAS,OAAOA,IACzG,IAAIw8J,EAAsB/sJ,EAAI+sJ,yBAAkD,IAAxBA,IAAiCA,EAAsB,SAAUC,GAAO,OAAOA,IACvI,IAAIC,EAAejtJ,EAAIitJ,kBAAoC,IAAjBA,IAA0BA,EAAe,SAAU98E,EAAQ5/E,GAAS,OAAO,IACrH,IAAI28J,EAAoBltJ,EAAIktJ,uBAA8C,IAAtBA,IAA+BA,EAAoB,SAAUC,GAAO,OAAOA,IAC/H,IAAIC,EAAeptJ,EAAIotJ,kBAAoC,IAAjBA,IAA0BA,GAAe,GACnF,IAAIC,EAAartJ,EAAIqtJ,gBAAgC,IAAfA,IAAwBA,GAAa,GAC3E,IAAIviJ,EAAS9K,EAAI8K,OAEjB,YAFyC,IAAXA,IAAoBA,EAAS54F,SAEpD,SAAU09E,GACf,IAAI09J,EAAY9F,EAAS53J,EAAMW,OAET,qBAAXua,IAIPsiJ,GACFx9J,EAAMvtF,WAAU,SAAUqyG,EAAUnkB,GAClC,IAAIg9J,EAAY/F,EAASj3J,GAEzB,GAAI58E,EAAO+gG,EAAU44I,EAAWC,GAAY,CAC1C,IAAIC,EAAgBC,IAChBC,EAAoBX,EAAoBr4I,GACxC/vG,EAAU,YAAe+vG,EAAa,KAAI84I,EAE9CG,EAAa7iJ,EAAQnmG,EAAS4sG,GAC9BzG,EAAOZ,IAAI,gBAAiB,oCAAqC4iJ,EAAYQ,IAC7ExiJ,EAAOZ,IAAI,cAAe,oCAAqCwjJ,GAC/D5iJ,EAAOZ,IAAI,gBAAiB,oCAAqC4iJ,EAAYS,IAC7EK,EAAW9iJ,GAGbwiJ,EAAYC,KAIZF,GACFz9J,EAAM23J,iBAAgB,SAAUp3E,EAAQ5/E,GACtC,GAAI08J,EAAa98E,EAAQ5/E,GAAQ,CAC/B,IAAIi9J,EAAgBC,IAChBI,EAAkBX,EAAkB/8E,GACpCxrK,EAAU,UAAawrK,EAAW,KAAIq9E,EAE1CG,EAAa7iJ,EAAQnmG,EAAS4sG,GAC9BzG,EAAOZ,IAAI,YAAa,oCAAqC2jJ,GAC7DD,EAAW9iJ,SAOrB,SAAS6iJ,EAAc7iJ,EAAQnmG,EAAS4sG,GACtC,IAAIo8I,EAAep8I,EACfzG,EAAOgjJ,eACPhjJ,EAAOwnB,MAGX,IACEq7H,EAAa9xP,KAAKivG,EAAQnmG,GAC1B,MAAO+G,GACPo/F,EAAOZ,IAAIvlG,IAIf,SAASipP,EAAY9iJ,GACnB,IACEA,EAAOspC,WACP,MAAO1oI,GACPo/F,EAAOZ,IAAI,kBAIf,SAASujJ,IACP,IAAIvlK,EAAO,IAAIh6E,KACf,MAAQ,MAAS6/O,EAAI7lK,EAAK6nD,WAAY,GAAM,IAAOg+G,EAAI7lK,EAAK8nD,aAAc,GAAM,IAAO+9G,EAAI7lK,EAAK8lK,aAAc,GAAM,IAAOD,EAAI7lK,EAAK+lK,kBAAmB,GAGzJ,SAASjxD,EAAQ1qL,EAAK8/H,GACpB,OAAO,IAAKxrI,MAAMwrI,EAAQ,GAAI5kI,KAAK8E,GAGrC,SAASy7O,EAAK7mN,EAAKgnN,GACjB,OAAOlxD,EAAO,IAAKkxD,EAAYhnN,EAAIj8B,WAAWzG,QAAU0iC,EAG1D,IAAIliC,EAAQ,CACVmzF,MAAOA,EACPyvF,QAASA,EACT/1K,QAAS,QACTk6O,SAAUA,EACVM,aAAcA,EACdC,WAAYA,EACZC,WAAYA,EACZC,wBAAyBA,EACzBG,aAAcA,GAGhB","sources":["webpack://ccms/./node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js","webpack://ccms/./node_modules/axios/index.js","webpack://ccms/./node_modules/axios/lib/adapters/xhr.js","webpack://ccms/./node_modules/axios/lib/axios.js","webpack://ccms/./node_modules/axios/lib/cancel/CancelToken.js","webpack://ccms/./node_modules/axios/lib/cancel/CanceledError.js","webpack://ccms/./node_modules/axios/lib/cancel/isCancel.js","webpack://ccms/./node_modules/axios/lib/core/Axios.js","webpack://ccms/./node_modules/axios/lib/core/AxiosError.js","webpack://ccms/./node_modules/axios/lib/core/InterceptorManager.js","webpack://ccms/./node_modules/axios/lib/core/buildFullPath.js","webpack://ccms/./node_modules/axios/lib/core/dispatchRequest.js","webpack://ccms/./node_modules/axios/lib/core/mergeConfig.js","webpack://ccms/./node_modules/axios/lib/core/settle.js","webpack://ccms/./node_modules/axios/lib/core/transformData.js","webpack://ccms/./node_modules/axios/lib/defaults/index.js","webpack://ccms/./node_modules/axios/lib/defaults/transitional.js","webpack://ccms/./node_modules/axios/lib/env/data.js","webpack://ccms/./node_modules/axios/lib/helpers/bind.js","webpack://ccms/./node_modules/axios/lib/helpers/buildURL.js","webpack://ccms/./node_modules/axios/lib/helpers/combineURLs.js","webpack://ccms/./node_modules/axios/lib/helpers/cookies.js","webpack://ccms/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://ccms/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://ccms/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://ccms/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://ccms/./node_modules/axios/lib/helpers/null.js","webpack://ccms/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://ccms/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://ccms/./node_modules/axios/lib/helpers/spread.js","webpack://ccms/./node_modules/axios/lib/helpers/toFormData.js","webpack://ccms/./node_modules/axios/lib/helpers/validator.js","webpack://ccms/./node_modules/axios/lib/utils.js","webpack://ccms/./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack://ccms/./node_modules/chart.js/dist/chart.esm.js","webpack://ccms/./node_modules/core-js/internals/a-callable.js","webpack://ccms/./node_modules/core-js/internals/a-possible-prototype.js","webpack://ccms/./node_modules/core-js/internals/an-object.js","webpack://ccms/./node_modules/core-js/internals/array-includes.js","webpack://ccms/./node_modules/core-js/internals/classof-raw.js","webpack://ccms/./node_modules/core-js/internals/classof.js","webpack://ccms/./node_modules/core-js/internals/clear-error-stack.js","webpack://ccms/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://ccms/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://ccms/./node_modules/core-js/internals/create-property-descriptor.js","webpack://ccms/./node_modules/core-js/internals/descriptors.js","webpack://ccms/./node_modules/core-js/internals/document-create-element.js","webpack://ccms/./node_modules/core-js/internals/engine-user-agent.js","webpack://ccms/./node_modules/core-js/internals/engine-v8-version.js","webpack://ccms/./node_modules/core-js/internals/enum-bug-keys.js","webpack://ccms/./node_modules/core-js/internals/error-stack-installable.js","webpack://ccms/./node_modules/core-js/internals/export.js","webpack://ccms/./node_modules/core-js/internals/fails.js","webpack://ccms/./node_modules/core-js/internals/function-apply.js","webpack://ccms/./node_modules/core-js/internals/function-bind-native.js","webpack://ccms/./node_modules/core-js/internals/function-call.js","webpack://ccms/./node_modules/core-js/internals/function-name.js","webpack://ccms/./node_modules/core-js/internals/function-uncurry-this.js","webpack://ccms/./node_modules/core-js/internals/get-built-in.js","webpack://ccms/./node_modules/core-js/internals/get-method.js","webpack://ccms/./node_modules/core-js/internals/global.js","webpack://ccms/./node_modules/core-js/internals/has-own-property.js","webpack://ccms/./node_modules/core-js/internals/hidden-keys.js","webpack://ccms/./node_modules/core-js/internals/ie8-dom-define.js","webpack://ccms/./node_modules/core-js/internals/indexed-object.js","webpack://ccms/./node_modules/core-js/internals/inherit-if-required.js","webpack://ccms/./node_modules/core-js/internals/inspect-source.js","webpack://ccms/./node_modules/core-js/internals/install-error-cause.js","webpack://ccms/./node_modules/core-js/internals/internal-state.js","webpack://ccms/./node_modules/core-js/internals/is-callable.js","webpack://ccms/./node_modules/core-js/internals/is-forced.js","webpack://ccms/./node_modules/core-js/internals/is-object.js","webpack://ccms/./node_modules/core-js/internals/is-pure.js","webpack://ccms/./node_modules/core-js/internals/is-symbol.js","webpack://ccms/./node_modules/core-js/internals/length-of-array-like.js","webpack://ccms/./node_modules/core-js/internals/native-symbol.js","webpack://ccms/./node_modules/core-js/internals/native-weak-map.js","webpack://ccms/./node_modules/core-js/internals/normalize-string-argument.js","webpack://ccms/./node_modules/core-js/internals/object-define-property.js","webpack://ccms/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://ccms/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://ccms/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://ccms/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://ccms/./node_modules/core-js/internals/object-keys-internal.js","webpack://ccms/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://ccms/./node_modules/core-js/internals/object-set-prototype-of.js","webpack://ccms/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://ccms/./node_modules/core-js/internals/own-keys.js","webpack://ccms/./node_modules/core-js/internals/redefine.js","webpack://ccms/./node_modules/core-js/internals/require-object-coercible.js","webpack://ccms/./node_modules/core-js/internals/set-global.js","webpack://ccms/./node_modules/core-js/internals/shared-key.js","webpack://ccms/./node_modules/core-js/internals/shared-store.js","webpack://ccms/./node_modules/core-js/internals/shared.js","webpack://ccms/./node_modules/core-js/internals/to-absolute-index.js","webpack://ccms/./node_modules/core-js/internals/to-indexed-object.js","webpack://ccms/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://ccms/./node_modules/core-js/internals/to-length.js","webpack://ccms/./node_modules/core-js/internals/to-object.js","webpack://ccms/./node_modules/core-js/internals/to-primitive.js","webpack://ccms/./node_modules/core-js/internals/to-property-key.js","webpack://ccms/./node_modules/core-js/internals/to-string-tag-support.js","webpack://ccms/./node_modules/core-js/internals/to-string.js","webpack://ccms/./node_modules/core-js/internals/try-to-string.js","webpack://ccms/./node_modules/core-js/internals/uid.js","webpack://ccms/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://ccms/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://ccms/./node_modules/core-js/internals/well-known-symbol.js","webpack://ccms/./node_modules/core-js/internals/wrap-error-constructor-with-cause.js","webpack://ccms/./node_modules/core-js/modules/es.error.cause.js","webpack://ccms/./node_modules/quill/dist/quill.js","webpack://ccms/../../../src/components/VAlert/VAlert.ts","webpack://ccms/../../../src/directives/scroll/index.ts","webpack://ccms/../../../src/mixins/scrollable/index.ts","webpack://ccms/../../../src/components/VAppBar/VAppBar.ts","webpack://ccms/../../../src/components/VAppBar/VAppBarNavIcon.ts","webpack://ccms/../../../src/components/VApp/VApp.ts","webpack://ccms/../../../src/components/VAutocomplete/VAutocomplete.ts","webpack://ccms/../../../src/components/VAvatar/VAvatar.ts","webpack://ccms/../../../src/components/VBadge/VBadge.ts","webpack://ccms/../../../src/components/VProgressCircular/VProgressCircular.ts","webpack://ccms/../../../src/components/VProgressCircular/index.ts","webpack://ccms/../../../src/components/VBtn/VBtn.ts","webpack://ccms/../../../src/components/VBtn/index.ts","webpack://ccms/../../../src/mixins/localable/index.ts","webpack://ccms/../../../../src/components/VCalendar/mixins/mouse.ts","webpack://ccms/../../src/util/dateTimeUtils.ts","webpack://ccms/../../../../src/components/VCalendar/util/timestamp.ts","webpack://ccms/../../../../src/components/VCalendar/mixins/times.ts","webpack://ccms/../../../../src/components/VCalendar/modes/common.ts","webpack://ccms/../../../../src/components/VCalendar/modes/stack.ts","webpack://ccms/../../../../src/components/VCalendar/modes/column.ts","webpack://ccms/../../../../src/components/VCalendar/modes/index.ts","webpack://ccms/../../../../src/components/VCalendar/util/props.ts","webpack://ccms/../../../../src/components/VCalendar/mixins/calendar-base.ts","webpack://ccms/../../../../src/components/VCalendar/util/events.ts","webpack://ccms/../../../../src/components/VCalendar/mixins/calendar-with-events.ts","webpack://ccms/../../../src/components/VCalendar/VCalendarWeekly.ts","webpack://ccms/../../../src/components/VCalendar/VCalendarMonthly.ts","webpack://ccms/../../../../src/components/VCalendar/mixins/calendar-with-intervals.ts","webpack://ccms/../../../src/components/VCalendar/VCalendarDaily.ts","webpack://ccms/../../../../src/components/VCalendar/util/parser.ts","webpack://ccms/../../../src/components/VCalendar/VCalendarCategory.ts","webpack://ccms/../../../src/components/VCalendar/VCalendar.ts","webpack://ccms/../../../src/components/VCard/VCard.ts","webpack://ccms/../../../src/components/VCard/index.ts","webpack://ccms/../../../src/mixins/rippleable/index.ts","webpack://ccms/../../../src/mixins/selectable/index.ts","webpack://ccms/../../../src/components/VCheckbox/VCheckbox.ts","webpack://ccms/../../../src/components/VCheckbox/VSimpleCheckbox.ts","webpack://ccms/../../../src/components/VChip/VChip.ts","webpack://ccms/../../../src/components/VChip/index.ts","webpack://ccms/../../../src/components/VCombobox/VCombobox.ts","webpack://ccms/../../../src/components/VDataIterator/VDataFooter.ts","webpack://ccms/../../../src/components/VDataIterator/VDataIterator.ts","webpack://ccms/../../../../src/components/VDataTable/mixins/header.ts","webpack://ccms/../../../src/components/VDataTable/VDataTableHeaderMobile.ts","webpack://ccms/../../../src/components/VDataTable/VDataTableHeaderDesktop.ts","webpack://ccms/../../src/util/dedupeModelListeners.ts","webpack://ccms/../../src/util/rebuildFunctionalSlots.ts","webpack://ccms/../../../src/components/VDataTable/VDataTableHeader.ts","webpack://ccms/../../../src/components/VDataTable/Row.ts","webpack://ccms/../../../src/components/VDataTable/RowGroup.ts","webpack://ccms/../../../src/components/VDataTable/VSimpleTable.ts","webpack://ccms/../../../src/components/VDataTable/MobileRow.ts","webpack://ccms/../../../src/components/VDataTable/VDataTable.ts","webpack://ccms/../../../src/components/VData/VData.ts","webpack://ccms/../../../src/components/VDialog/VDialog.ts","webpack://ccms/../../../src/components/VDivider/VDivider.ts","webpack://ccms/../../../src/components/VExpansionPanel/VExpansionPanel.ts","webpack://ccms/../../../src/components/VExpansionPanel/VExpansionPanelContent.ts","webpack://ccms/../../../src/components/VExpansionPanel/VExpansionPanelHeader.ts","webpack://ccms/../../../src/components/VExpansionPanel/VExpansionPanels.ts","webpack://ccms/../../../src/components/VTextField/index.ts","webpack://ccms/../../../src/components/VFileInput/VFileInput.ts","webpack://ccms/../../../src/components/VGrid/VCol.ts","webpack://ccms/../../../src/components/VGrid/grid.ts","webpack://ccms/../../../src/components/VGrid/VContainer.ts","webpack://ccms/../../../src/components/VGrid/VRow.ts","webpack://ccms/../../../src/components/VGrid/VSpacer.ts","webpack://ccms/../../../src/components/VIcon/VIcon.ts","webpack://ccms/../../../src/components/VIcon/index.ts","webpack://ccms/../../../src/components/VResponsive/VResponsive.ts","webpack://ccms/../../../src/components/VResponsive/index.ts","webpack://ccms/../../../src/components/VImg/VImg.ts","webpack://ccms/../../../src/components/VMessages/VMessages.ts","webpack://ccms/../../../src/components/VMessages/index.ts","webpack://ccms/../../../src/components/VInput/VInput.ts","webpack://ccms/../../../src/components/VInput/index.ts","webpack://ccms/../../../src/components/VItemGroup/VItemGroup.ts","webpack://ccms/../../../src/components/VLabel/VLabel.ts","webpack://ccms/../../../src/components/VLabel/index.ts","webpack://ccms/../../../src/components/VList/VList.ts","webpack://ccms/../../../src/components/VList/VListItem.ts","webpack://ccms/../../../src/components/VList/VListItemAction.ts","webpack://ccms/../../../src/components/VList/VListItemGroup.ts","webpack://ccms/../../../src/components/VList/VListItemIcon.ts","webpack://ccms/../../../src/components/VList/VListGroup.ts","webpack://ccms/../../../src/components/VAvatar/index.ts","webpack://ccms/../../../src/components/VList/VListItemAvatar.ts","webpack://ccms/../../../src/components/VList/index.ts","webpack://ccms/../../../src/components/VMain/VMain.ts","webpack://ccms/../../../src/components/VMenu/VMenu.ts","webpack://ccms/../../../src/components/VNavigationDrawer/VNavigationDrawer.ts","webpack://ccms/../../../src/components/VMenu/index.ts","webpack://ccms/../../../src/components/VDivider/index.ts","webpack://ccms/../../../src/components/VSubheader/VSubheader.ts","webpack://ccms/../../../src/components/VSubheader/index.ts","webpack://ccms/../../../src/components/VSelect/VSelectList.ts","webpack://ccms/../../../src/mixins/filterable/index.ts","webpack://ccms/../../../src/components/VSelect/VSelect.ts","webpack://ccms/../../../src/components/VSheet/VSheet.ts","webpack://ccms/../../../src/components/VSheet/index.ts","webpack://ccms/../../../src/components/VStepper/VStepper.ts","webpack://ccms/../../../src/components/VStepper/VStepperStep.ts","webpack://ccms/../../../src/components/VStepper/VStepperContent.ts","webpack://ccms/../../../src/components/VStepper/index.ts","webpack://ccms/../../../src/components/VTabs/VTab.ts","webpack://ccms/../../../src/components/VSlideGroup/VSlideGroup.ts","webpack://ccms/../../../src/components/VTabs/VTabsBar.ts","webpack://ccms/../../../src/components/VWindow/VWindow.ts","webpack://ccms/../../../src/components/VTabs/VTabsItems.ts","webpack://ccms/../../../src/components/VTabs/VTabsSlider.ts","webpack://ccms/../../../src/components/VTabs/VTabs.ts","webpack://ccms/../../../src/components/VCounter/VCounter.ts","webpack://ccms/../../../src/components/VCounter/index.ts","webpack://ccms/../../../src/mixins/intersectable/index.ts","webpack://ccms/../../../src/components/VTextField/VTextField.ts","webpack://ccms/../../../src/components/VThemeProvider/VThemeProvider.ts","webpack://ccms/../../../src/components/VToolbar/VToolbar.ts","webpack://ccms/../../../src/components/VToolbar/index.ts","webpack://ccms/../../../src/components/VTooltip/VTooltip.ts","webpack://ccms/../../../src/components/VTreeview/VTreeviewNode.ts","webpack://ccms/../../../../src/components/VTreeview/util/filterTreeItems.ts","webpack://ccms/../../../src/components/VTreeview/VTreeview.ts","webpack://ccms/../../../src/components/transitions/createTransition.ts","webpack://ccms/../../../src/components/transitions/expand-transition.ts","webpack://ccms/../../../src/components/transitions/index.ts","webpack://ccms/../../../src/directives/click-outside/index.ts","webpack://ccms/../../../src/directives/intersect/index.ts","webpack://ccms/../../../src/directives/resize/index.ts","webpack://ccms/../../../src/directives/ripple/index.ts","webpack://ccms/../../../src/directives/touch/index.ts","webpack://ccms/../src/install.ts","webpack://ccms/../../src/locale/en.ts","webpack://ccms/../../../src/presets/default/index.ts","webpack://ccms/../../../src/services/presets/index.ts","webpack://ccms/../../../src/services/application/index.ts","webpack://ccms/../../../src/services/breakpoint/index.ts","webpack://ccms/../../../../src/services/icons/presets/mdi-svg.ts","webpack://ccms/../../../../src/services/icons/presets/md.ts","webpack://ccms/../../../../src/services/icons/presets/mdi.ts","webpack://ccms/../../../../src/services/icons/presets/fa.ts","webpack://ccms/../../../../src/services/icons/presets/fa4.ts","webpack://ccms/../../../../src/services/icons/presets/fa-svg.ts","webpack://ccms/../../../../src/services/icons/presets/index.ts","webpack://ccms/../../../src/services/icons/index.ts","webpack://ccms/../../../src/services/lang/index.ts","webpack://ccms/../../../src/util/color/transformSRGB.ts","webpack://ccms/../../../src/util/color/transformCIELAB.ts","webpack://ccms/../../../src/services/theme/utils.ts","webpack://ccms/../../../src/services/theme/index.ts","webpack://ccms/../src/framework.ts","webpack://ccms/../../../src/mixins/activatable/index.ts","webpack://ccms/../../../src/mixins/applicationable/index.ts","webpack://ccms/../../../src/mixins/binds-attrs/index.ts","webpack://ccms/../../../src/mixins/bootable/index.ts","webpack://ccms/../../../src/mixins/colorable/index.ts","webpack://ccms/../../../src/mixins/comparable/index.ts","webpack://ccms/../../../src/mixins/delayable/index.ts","webpack://ccms/../../../src/mixins/dependent/index.ts","webpack://ccms/../../../src/mixins/detachable/index.ts","webpack://ccms/../../../src/mixins/elevatable/index.ts","webpack://ccms/../../../src/mixins/groupable/index.ts","webpack://ccms/../../../src/components/VProgressLinear/VProgressLinear.ts","webpack://ccms/../../../src/components/VProgressLinear/index.ts","webpack://ccms/../../../src/mixins/loadable/index.ts","webpack://ccms/../../../src/mixins/measurable/index.ts","webpack://ccms/../../../src/mixins/menuable/index.ts","webpack://ccms/../../../src/mixins/mobile/index.ts","webpack://ccms/../../../src/components/VOverlay/VOverlay.ts","webpack://ccms/../../../src/components/VOverlay/index.ts","webpack://ccms/../../../src/mixins/overlayable/index.ts","webpack://ccms/../../../src/mixins/positionable/index.ts","webpack://ccms/../../../src/mixins/proxyable/index.ts","webpack://ccms/../../../src/mixins/registrable/index.ts","webpack://ccms/../../../src/mixins/returnable/index.ts","webpack://ccms/../../../src/mixins/roundable/index.ts","webpack://ccms/../../../src/mixins/routable/index.ts","webpack://ccms/../../../src/mixins/sizeable/index.ts","webpack://ccms/../../../src/mixins/ssr-bootable/index.ts","webpack://ccms/../../../src/mixins/stackable/index.ts","webpack://ccms/../../../src/mixins/themeable/index.ts","webpack://ccms/../../../src/mixins/toggleable/index.ts","webpack://ccms/../../../src/mixins/transitionable/index.ts","webpack://ccms/../../../src/mixins/validatable/index.ts","webpack://ccms/../../../src/services/goto/easing-patterns.ts","webpack://ccms/../../../src/services/goto/util.ts","webpack://ccms/../../../src/services/goto/index.ts","webpack://ccms/../../../src/services/service/index.ts","webpack://ccms/../../src/util/colorUtils.ts","webpack://ccms/../../src/util/colors.ts","webpack://ccms/../../src/util/console.ts","webpack://ccms/../../src/util/dom.ts","webpack://ccms/../../src/util/helpers.ts","webpack://ccms/../../src/util/mergeData.ts","webpack://ccms/../../src/util/mixins.ts","webpack://ccms/./node_modules/vue-chartjs/legacy/index.js","webpack://ccms/./node_modules/vue-print-nb/lib/print.umd.min.js","webpack://ccms/./node_modules/vue-router/dist/vue-router.esm.js","webpack://ccms/./node_modules/vue-toasted/dist/vue-toasted.min.js","webpack://ccms/./node_modules/vue2-editor/dist/vue2-editor.esm.js","webpack://ccms/./node_modules/vue/dist/vue.runtime.esm.js","webpack://ccms/./node_modules/vuetify-loader/lib/runtime/installComponents.js","webpack://ccms/./node_modules/vuex/dist/vuex.esm.js"],"sourcesContent":["/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","/*!\n * Chart.js v3.8.0\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.slice(0, 7) === '[object' && type.slice(-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.slice(pos, idx)];\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.2.1\n * https://github.com/kurkle/color#readme\n * (c) 2022 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {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);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\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 const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return ((g - b) / d) + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\n\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\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 includeInvisible: false\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}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const {iScale} = meta;\n const {key = 'r'} = 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 r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\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(e, canvas) {\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 if ('native' in evt) {\n return evt;\n }\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 { toFont as $, _rlookupByKey as A, _isPointInArea as B, getAngleFromPoint as C, toPadding as D, each as E, getMaximumSize as F, _getParentNode as G, HALF_PI as H, readUsedSize as I, throttled as J, supportsEventListenerOptions as K, _isDomSupported as L, log10 as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, toDegrees as S, TAU as T, _measureText as U, _int16Range as V, _alignPixel as W, clipArea as X, renderText as Y, unclipArea as Z, _arrayUnique as _, resolve as a, QUARTER_PI as a$, _toLeftRightCenter as a0, _alignStartEnd as a1, overrides as a2, merge as a3, _capitalize as a4, descriptors as a5, isFunction as a6, _attachContext as a7, _createResolver as a8, _descriptors as a9, _textX as aA, restoreTextDirection as aB, noop as aC, distanceBetweenPoints as aD, _setMinAndMaxByKey as aE, niceNum as aF, almostWhole as aG, almostEquals as aH, _decimalPlaces as aI, _longestText as aJ, _filterBetween as aK, _lookup as aL, isPatternOrGradient as aM, getHoverColor as aN, clone$1 as aO, _merger as aP, _mergerIf as aQ, _deprecated as aR, toFontString as aS, splineCurve as aT, splineCurveMonotone as aU, getStyle as aV, fontString as aW, toLineHeight as aX, PITAU as aY, INFINITY as aZ, RAD_PER_DEG as a_, mergeIf as aa, uid as ab, debounce as ac, retinaScale as ad, clearCanvas as ae, setsEqual as af, _elementsEqual as ag, _isClickEvent as ah, _isBetween as ai, _readValueToProps as aj, _updateBezierControlPoints as ak, _computeSegments as al, _boundSegments as am, _steppedInterpolation as an, _bezierInterpolation as ao, _pointInLine as ap, _steppedLineTo as aq, _bezierCurveTo as ar, drawPoint as as, addRoundedRectPath as at, toTRBL as au, toTRBLCorners as av, _boundSegment as aw, _normalizeAngle as ax, getRtlAdapter as ay, overrideTextDirection as az, isArray as b, TWO_THIRDS_PI as b0, _angleDiff as b1, 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, _parseObjectDataRadialScale as y, getRelativePosition as z };\n","/*!\n * Chart.js v3.8.0\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 _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _isPointInArea, C as getAngleFromPoint, D as toPadding, E as each, F as getMaximumSize, G as _getParentNode, I as readUsedSize, J as throttled, K as supportsEventListenerOptions, L as _isDomSupported, M as log10, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as toDegrees, U as _measureText, V as _int16Range, W as _alignPixel, X as clipArea, Y as renderText, Z as unclipArea, $ as toFont, a0 as _toLeftRightCenter, a1 as _alignStartEnd, a2 as overrides, a3 as merge, a4 as _capitalize, a5 as descriptors, a6 as isFunction, a7 as _attachContext, a8 as _createResolver, a9 as _descriptors, aa as mergeIf, ab as uid, ac as debounce, ad as retinaScale, ae as clearCanvas, af as setsEqual, ag as _elementsEqual, ah as _isClickEvent, ai as _isBetween, aj as _readValueToProps, ak as _updateBezierControlPoints, al as _computeSegments, am as _boundSegments, an as _steppedInterpolation, ao as _bezierInterpolation, ap as _pointInLine, aq as _steppedLineTo, ar as _bezierCurveTo, as as drawPoint, at as addRoundedRectPath, au as toTRBL, av as toTRBLCorners, aw as _boundSegment, ax as _normalizeAngle, ay as getRtlAdapter, az as overrideTextDirection, aA as _textX, aB as restoreTextDirection, aC as noop, aD as distanceBetweenPoints, aE as _setMinAndMaxByKey, aF as niceNum, aG as almostWhole, aH as almostEquals, aI as _decimalPlaces, aJ as _longestText, aK as _filterBetween, aL 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.supportsDecimation = 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 const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\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 this.supportsDecimation = 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 && (Math.abs(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 parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\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 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(this.getParsed(i).r) : 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 meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && 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 parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\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 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, this.getParsed(i).r);\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 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 evaluateInteractionItems(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, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n evaluateInteractionItems(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 evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\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 = !!includeInvisible || chart.isPointInArea(center);\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 evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible)\n : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\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 const includeInvisible = options.includeInvisible || false;\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) :\n getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\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 const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', 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(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 this.afterAutoSkip();\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 afterAutoSkip() {}\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 if (align !== 'inner') {\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 let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\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: tickTextAlign,\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 } else if (ticks.align === 'inner') {\n align = 'inner';\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.8.0\";\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 isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\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: this.isPointInArea(e)\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.controller.supportsDecimation) {\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 _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 _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 _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 _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 _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}\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}\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 _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 return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\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}\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}\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}\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 getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const 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 (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\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}\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 clipVertical(ctx, target, area.top);\n fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction clipVertical(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 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 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}\n\nvar index = {\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' || e.type === 'mouseout') {\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' || type === 'mouseout') && (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 _willRender() {\n return !!this.opacity;\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 if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\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: index,\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 borderRadius = toTRBLCorners(optsAtIndex.borderRadius);\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\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 afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\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, index 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","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw TypeError(\"Can't set \" + String(argument) + ' as a prototype');\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(Error(arg).stack); })('zxcasd');\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string') {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n var NewTarget, NewTargetPrototype;\n if (\n // it can work only with native `setPrototypeOf`\n setPrototypeOf &&\n // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n isCallable(NewTarget = dummy.constructor) &&\n NewTarget !== Wrapper &&\n isObject(NewTargetPrototype = NewTarget.prototype) &&\n NewTargetPrototype !== Wrapper.prototype\n ) setPrototypeOf($this, NewTargetPrototype);\n return $this;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = false;\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var name = options && options.name !== undefined ? options.name : key;\n var state;\n if (isCallable(value)) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n createNonEnumerableProperty(value, 'name', name);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.21.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.21.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar installErrorCause = require('../internals/install-error-cause');\nvar clearErrorStack = require('../internals/clear-error-stack');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\nvar IS_PURE = require('../internals/is-pure');\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n var path = FULL_NAME.split('.');\n var ERROR_NAME = path[path.length - 1];\n var OriginalError = getBuiltIn.apply(null, path);\n\n if (!OriginalError) return;\n\n var OriginalErrorPrototype = OriginalError.prototype;\n\n // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n if (!FORCED) return OriginalError;\n\n var BaseError = getBuiltIn('Error');\n\n var WrappedError = wrapper(function (a, b) {\n var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n if (ERROR_STACK_INSTALLABLE) createNonEnumerableProperty(result, 'stack', clearErrorStack(result.stack, 2));\n if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n return result;\n });\n\n WrappedError.prototype = OriginalErrorPrototype;\n\n if (ERROR_NAME !== 'Error') {\n if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n else copyConstructorProperties(WrappedError, BaseError, { name: true });\n }\n\n copyConstructorProperties(WrappedError, OriginalError);\n\n if (!IS_PURE) try {\n // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n if (OriginalErrorPrototype.name !== ERROR_NAME) {\n createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n }\n OriginalErrorPrototype.constructor = WrappedError;\n } catch (error) { /* empty */ }\n\n return WrappedError;\n};\n","/* eslint-disable no-unused-vars -- required for functions `.length` */\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');\n\nvar WEB_ASSEMBLY = 'WebAssembly';\nvar WebAssembly = global[WEB_ASSEMBLY];\n\nvar FORCED = Error('e', { cause: 7 }).cause !== 7;\n\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\n $({ global: true, forced: FORCED }, O);\n};\n\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n if (WebAssembly && WebAssembly[ERROR_NAME]) {\n var O = {};\n O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\n $({ target: WEB_ASSEMBLY, stat: true, forced: FORCED }, O);\n }\n};\n\n// https://github.com/tc39/proposal-error-cause\nexportGlobalErrorCauseWrapper('Error', function (init) {\n return function Error(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\n return function EvalError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\n return function RangeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\n return function ReferenceError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\n return function SyntaxError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\n return function TypeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('URIError', function (init) {\n return function URIError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\n return function CompileError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\n return function LinkError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\n return function RuntimeError(message) { return apply(init, this, arguments); };\n});\n","/*!\n * Quill Editor v1.3.7\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\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([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(typeof self !== 'undefined' ? self : 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// 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 = 109);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar format_1 = __webpack_require__(18);\nvar leaf_1 = __webpack_require__(19);\nvar scroll_1 = __webpack_require__(45);\nvar inline_1 = __webpack_require__(46);\nvar block_1 = __webpack_require__(47);\nvar embed_1 = __webpack_require__(48);\nvar text_1 = __webpack_require__(49);\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar store_1 = __webpack_require__(31);\nvar Registry = __webpack_require__(1);\nvar Parchment = {\n Scope: Registry.Scope,\n create: Registry.create,\n find: Registry.find,\n query: Registry.query,\n register: Registry.register,\n Container: container_1.default,\n Format: format_1.default,\n Leaf: leaf_1.default,\n Embed: embed_1.default,\n Scroll: scroll_1.default,\n Block: block_1.default,\n Inline: inline_1.default,\n Text: text_1.default,\n Attributor: {\n Attribute: attributor_1.default,\n Class: class_1.default,\n Style: style_1.default,\n Store: store_1.default,\n },\n};\nexports.default = Parchment;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = /** @class */ (function (_super) {\n __extends(ParchmentError, _super);\n function ParchmentError(message) {\n var _this = this;\n message = '[Parchment] ' + message;\n _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _this.constructor.name;\n return _this;\n }\n return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\n(function (Scope) {\n Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nfunction create(input, value) {\n var match = query(input);\n if (match == null) {\n throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n }\n var BlotClass = match;\n var node = \n // @ts-ignore\n input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n if (bubble === void 0) { bubble = false; }\n if (node == null)\n return null;\n // @ts-ignore\n if (node[exports.DATA_KEY] != null)\n return node[exports.DATA_KEY].blot;\n if (bubble)\n return find(node.parentNode, bubble);\n return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n if (scope === void 0) { scope = Scope.ANY; }\n var match;\n if (typeof query === 'string') {\n match = types[query] || attributes[query];\n // @ts-ignore\n }\n else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n match = types['text'];\n }\n else if (typeof query === 'number') {\n if (query & Scope.LEVEL & Scope.BLOCK) {\n match = types['block'];\n }\n else if (query & Scope.LEVEL & Scope.INLINE) {\n match = types['inline'];\n }\n }\n else if (query instanceof HTMLElement) {\n var names = (query.getAttribute('class') || '').split(/\\s+/);\n for (var i in names) {\n match = classes[names[i]];\n if (match)\n break;\n }\n match = match || tags[query.tagName];\n }\n if (match == null)\n return null;\n // @ts-ignore\n if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope)\n return match;\n return null;\n}\nexports.query = query;\nfunction register() {\n var Definitions = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n Definitions[_i] = arguments[_i];\n }\n if (Definitions.length > 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n var Definition = Definitions[0];\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n }\n else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n types[Definition.blotName || Definition.attrName] = Definition;\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n }\n else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\n }\n if (Definition.tagName != null) {\n if (Array.isArray(Definition.tagName)) {\n Definition.tagName = Definition.tagName.map(function (tagName) {\n return tagName.toUpperCase();\n });\n }\n else {\n Definition.tagName = Definition.tagName.toUpperCase();\n }\n var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n tagNames.forEach(function (tag) {\n if (tags[tag] == null || Definition.className == null) {\n tags[tag] = Definition;\n }\n });\n }\n }\n return Definition;\n}\nexports.register = register;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar diff = __webpack_require__(51);\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\nvar op = __webpack_require__(20);\n\n\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n\nvar Delta = function (ops) {\n // Assume we are given a well formed ops\n if (Array.isArray(ops)) {\n this.ops = ops;\n } else if (ops != null && Array.isArray(ops.ops)) {\n this.ops = ops.ops;\n } else {\n this.ops = [];\n }\n};\n\n\nDelta.prototype.insert = function (text, attributes) {\n var newOp = {};\n if (text.length === 0) return this;\n newOp.insert = text;\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n if (length <= 0) return this;\n return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n if (length <= 0) return this;\n var newOp = { retain: length };\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = extend(true, {}, newOp);\n if (typeof lastOp === 'object') {\n if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n return this;\n }\n // Since it does not matter if we insert before or after deleting at the same index,\n // always prefer to insert first\n if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n index -= 1;\n lastOp = this.ops[index - 1];\n if (typeof lastOp !== 'object') {\n this.ops.unshift(newOp);\n return this;\n }\n }\n if (equal(newOp.attributes, lastOp.attributes)) {\n if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\n }\n }\n }\n if (index === this.ops.length) {\n this.ops.push(newOp);\n } else {\n this.ops.splice(index, 0, newOp);\n }\n return this;\n};\n\nDelta.prototype.chop = function () {\n var lastOp = this.ops[this.ops.length - 1];\n if (lastOp && lastOp.retain && !lastOp.attributes) {\n this.ops.pop();\n }\n return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n var passed = [], failed = [];\n this.forEach(function(op) {\n var target = predicate(op) ? passed : failed;\n target.push(op);\n });\n return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.changeLength = function () {\n return this.reduce(function (length, elem) {\n if (elem.insert) {\n return length + op.length(elem);\n } else if (elem.delete) {\n return length - elem.delete;\n }\n return length;\n }, 0);\n};\n\nDelta.prototype.length = function () {\n return this.reduce(function (length, elem) {\n return length + op.length(elem);\n }, 0);\n};\n\nDelta.prototype.slice = function (start, end) {\n start = start || 0;\n if (typeof end !== 'number') end = Infinity;\n var ops = [];\n var iter = op.iterator(this.ops);\n var index = 0;\n while (index < end && iter.hasNext()) {\n var nextOp;\n if (index < start) {\n nextOp = iter.next(start - index);\n } else {\n nextOp = iter.next(end - index);\n ops.push(nextOp);\n }\n index += op.length(nextOp);\n }\n return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var ops = [];\n var firstOther = otherIter.peek();\n if (firstOther != null && typeof firstOther.retain === 'number' && firstOther.attributes == null) {\n var firstLeft = firstOther.retain;\n while (thisIter.peekType() === 'insert' && thisIter.peekLength() <= firstLeft) {\n firstLeft -= thisIter.peekLength();\n ops.push(thisIter.next());\n }\n if (firstOther.retain - firstLeft > 0) {\n otherIter.next(firstOther.retain - firstLeft);\n }\n }\n var delta = new Delta(ops);\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else if (thisIter.peekType() === 'delete') {\n delta.push(thisIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (typeof otherOp.retain === 'number') {\n var newOp = {};\n if (typeof thisOp.retain === 'number') {\n newOp.retain = length;\n } else {\n newOp.insert = thisOp.insert;\n }\n // Preserve null when composing with a retain, otherwise remove it for inserts\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n if (attributes) newOp.attributes = attributes;\n delta.push(newOp);\n\n // Optimization if rest of other is just retain\n if (!otherIter.hasNext() && equal(delta.ops[delta.ops.length - 1], newOp)) {\n var rest = new Delta(thisIter.rest());\n return delta.concat(rest).chop();\n }\n\n // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n delta.push(otherOp);\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n var delta = new Delta(this.ops.slice());\n if (other.ops.length > 0) {\n delta.push(other.ops[0]);\n delta.ops = delta.ops.concat(other.ops.slice(1));\n }\n return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n if (this.ops === other.ops) {\n return new Delta();\n }\n var strings = [this, other].map(function (delta) {\n return delta.map(function (op) {\n if (op.insert != null) {\n return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n }\n var prep = (delta === other) ? 'on' : 'with';\n throw new Error('diff() called ' + prep + ' non-document');\n }).join('');\n });\n var delta = new Delta();\n var diffResult = diff(strings[0], strings[1], index);\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n diffResult.forEach(function (component) {\n var length = component[1].length;\n while (length > 0) {\n var opLength = 0;\n switch (component[0]) {\n case diff.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n delta.push(otherIter.next(opLength));\n break;\n case diff.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n delta['delete'](opLength);\n break;\n case diff.EQUAL:\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n var thisOp = thisIter.next(opLength);\n var otherOp = otherIter.next(opLength);\n if (equal(thisOp.insert, otherOp.insert)) {\n delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n } else {\n delta.push(otherOp)['delete'](opLength);\n }\n break;\n }\n length -= opLength;\n }\n });\n return delta.chop();\n};\n\nDelta.prototype.eachLine = function (predicate, newline) {\n newline = newline || '\\n';\n var iter = op.iterator(this.ops);\n var line = new Delta();\n var i = 0;\n while (iter.hasNext()) {\n if (iter.peekType() !== 'insert') return;\n var thisOp = iter.peek();\n var start = op.length(thisOp) - iter.peekLength();\n var index = typeof thisOp.insert === 'string' ?\n thisOp.insert.indexOf(newline, start) - start : -1;\n if (index < 0) {\n line.push(iter.next());\n } else if (index > 0) {\n line.push(iter.next(index));\n } else {\n if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n return;\n }\n i += 1;\n line = new Delta();\n }\n }\n if (line.length() > 0) {\n predicate(line, {}, i);\n }\n};\n\nDelta.prototype.transform = function (other, priority) {\n priority = !!priority;\n if (typeof other === 'number') {\n return this.transformPosition(other, priority);\n }\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n delta.retain(op.length(thisIter.next()));\n } else if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n if (thisOp['delete']) {\n // Our delete either makes their delete redundant or removes their retain\n continue;\n } else if (otherOp['delete']) {\n delta.push(otherOp);\n } else {\n // We retain either their retain or insert\n delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n priority = !!priority;\n var thisIter = op.iterator(this.ops);\n var offset = 0;\n while (thisIter.hasNext() && offset <= index) {\n var length = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\n if (nextType === 'delete') {\n index -= Math.min(length, index - offset);\n continue;\n } else if (nextType === 'insert' && (offset < index || !priority)) {\n index += length;\n }\n offset += length;\n }\n return index;\n};\n\n\nmodule.exports = Delta;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar NEWLINE_LENGTH = 1;\n\nvar BlockEmbed = function (_Parchment$Embed) {\n _inherits(BlockEmbed, _Parchment$Embed);\n\n function BlockEmbed() {\n _classCallCheck(this, BlockEmbed);\n\n return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n }\n\n _createClass(BlockEmbed, [{\n key: 'attach',\n value: function attach() {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n }\n }, {\n key: 'delta',\n value: function delta() {\n return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n if (attribute != null) {\n this.attributes.attribute(attribute, value);\n }\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n this.format(name, value);\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (typeof value === 'string' && value.endsWith('\\n')) {\n var block = _parchment2.default.create(Block.blotName);\n this.parent.insertBefore(block, index === 0 ? this : this.next);\n block.insertAt(0, value.slice(0, -1));\n } else {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n }\n }\n }]);\n\n return BlockEmbed;\n}(_parchment2.default.Embed);\n\nBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nvar Block = function (_Parchment$Block) {\n _inherits(Block, _Parchment$Block);\n\n function Block(domNode) {\n _classCallCheck(this, Block);\n\n var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n _this2.cache = {};\n return _this2;\n }\n\n _createClass(Block, [{\n key: 'delta',\n value: function delta() {\n if (this.cache.delta == null) {\n this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n if (leaf.length() === 0) {\n return delta;\n } else {\n return delta.insert(leaf.value(), bubbleFormats(leaf));\n }\n }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n }\n return this.cache.delta;\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n this.cache = {};\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length <= 0) return;\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n }\n this.cache = {};\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n if (value.length === 0) return;\n var lines = value.split('\\n');\n var text = lines.shift();\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n } else {\n this.children.tail.insertAt(this.children.tail.length(), text);\n }\n this.cache = {};\n }\n var block = this;\n lines.reduce(function (index, line) {\n block = block.split(index, true);\n block.insertAt(0, line);\n return line.length;\n }, index + text.length);\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n var head = this.children.head;\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n if (head instanceof _break2.default) {\n head.remove();\n }\n this.cache = {};\n }\n }, {\n key: 'length',\n value: function length() {\n if (this.cache.length == null) {\n this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n }\n return this.cache.length;\n }\n }, {\n key: 'moveChildren',\n value: function moveChildren(target, ref) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n this.cache = {};\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context);\n this.cache = {};\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n }\n }, {\n key: 'removeChild',\n value: function removeChild(child) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n this.cache = {};\n }\n }, {\n key: 'split',\n value: function split(index) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n var clone = this.clone();\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n } else {\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n } else {\n var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n this.cache = {};\n return next;\n }\n }\n }]);\n\n return Block;\n}(_parchment2.default.Block);\n\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [_inline2.default, _parchment2.default.Embed, _text2.default];\n\nfunction bubbleFormats(blot) {\n var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (blot == null) return formats;\n if (typeof blot.formats === 'function') {\n formats = (0, _extend2.default)(formats, blot.formats());\n }\n if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n return bubbleFormats(blot.parent, formats);\n}\n\nexports.bubbleFormats = bubbleFormats;\nexports.BlockEmbed = BlockEmbed;\nexports.default = Block;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.overload = exports.expandConfig = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n__webpack_require__(50);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _editor = __webpack_require__(14);\n\nvar _editor2 = _interopRequireDefault(_editor);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _selection = __webpack_require__(15);\n\nvar _selection2 = _interopRequireDefault(_selection);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill');\n\nvar Quill = function () {\n _createClass(Quill, null, [{\n key: 'debug',\n value: function debug(limit) {\n if (limit === true) {\n limit = 'log';\n }\n _logger2.default.level(limit);\n }\n }, {\n key: 'find',\n value: function find(node) {\n return node.__quill || _parchment2.default.find(node);\n }\n }, {\n key: 'import',\n value: function _import(name) {\n if (this.imports[name] == null) {\n debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n }\n return this.imports[name];\n }\n }, {\n key: 'register',\n value: function register(path, target) {\n var _this = this;\n\n var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (typeof path !== 'string') {\n var name = path.attrName || path.blotName;\n if (typeof name === 'string') {\n // register(Blot | Attributor, overwrite)\n this.register('formats/' + name, path, target);\n } else {\n Object.keys(path).forEach(function (key) {\n _this.register(key, path[key], target);\n });\n }\n } else {\n if (this.imports[path] != null && !overwrite) {\n debug.warn('Overwriting ' + path + ' with', target);\n }\n this.imports[path] = target;\n if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n _parchment2.default.register(target);\n } else if (path.startsWith('modules') && typeof target.register === 'function') {\n target.register();\n }\n }\n }\n }]);\n\n function Quill(container) {\n var _this2 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Quill);\n\n this.options = expandConfig(container, options);\n this.container = this.options.container;\n if (this.container == null) {\n return debug.error('Invalid Quill container', container);\n }\n if (this.options.debug) {\n Quill.debug(this.options.debug);\n }\n var html = this.container.innerHTML.trim();\n this.container.classList.add('ql-container');\n this.container.innerHTML = '';\n this.container.__quill = this;\n this.root = this.addContainer('ql-editor');\n this.root.classList.add('ql-blank');\n this.root.setAttribute('data-gramm', false);\n this.scrollingContainer = this.options.scrollingContainer || this.root;\n this.emitter = new _emitter4.default();\n this.scroll = _parchment2.default.create(this.root, {\n emitter: this.emitter,\n whitelist: this.options.formats\n });\n this.editor = new _editor2.default(this.scroll);\n this.selection = new _selection2.default(this.scroll, this.emitter);\n this.theme = new this.options.theme(this, this.options);\n this.keyboard = this.theme.addModule('keyboard');\n this.clipboard = this.theme.addModule('clipboard');\n this.history = this.theme.addModule('history');\n this.theme.init();\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n if (type === _emitter4.default.events.TEXT_CHANGE) {\n _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n var range = _this2.selection.lastRange;\n var index = range && range.length === 0 ? range.index : undefined;\n modify.call(_this2, function () {\n return _this2.editor.update(null, mutations, index);\n }, source);\n });\n var contents = this.clipboard.convert('
' + html + '


');\n this.setContents(contents);\n this.history.clear();\n if (this.options.placeholder) {\n this.root.setAttribute('data-placeholder', this.options.placeholder);\n }\n if (this.options.readOnly) {\n this.disable();\n }\n }\n\n _createClass(Quill, [{\n key: 'addContainer',\n value: function addContainer(container) {\n var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (typeof container === 'string') {\n var className = container;\n container = document.createElement('div');\n container.classList.add(className);\n }\n this.container.insertBefore(container, refNode);\n return container;\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.selection.setRange(null);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length, source) {\n var _this3 = this;\n\n var _overload = overload(index, length, source);\n\n var _overload2 = _slicedToArray(_overload, 4);\n\n index = _overload2[0];\n length = _overload2[1];\n source = _overload2[3];\n\n return modify.call(this, function () {\n return _this3.editor.deleteText(index, length);\n }, source, index, -1 * length);\n }\n }, {\n key: 'disable',\n value: function disable() {\n this.enable(false);\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.scroll.enable(enabled);\n this.container.classList.toggle('ql-disabled', !enabled);\n }\n }, {\n key: 'focus',\n value: function focus() {\n var scrollTop = this.scrollingContainer.scrollTop;\n this.selection.focus();\n this.scrollingContainer.scrollTop = scrollTop;\n this.scrollIntoView();\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var _this4 = this;\n\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n var range = _this4.getSelection(true);\n var change = new _quillDelta2.default();\n if (range == null) {\n return change;\n } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n } else if (range.length === 0) {\n _this4.selection.format(name, value);\n return change;\n } else {\n change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n }\n _this4.setSelection(range, _emitter4.default.sources.SILENT);\n return change;\n }, source);\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length, name, value, source) {\n var _this5 = this;\n\n var formats = void 0;\n\n var _overload3 = overload(index, length, name, value, source);\n\n var _overload4 = _slicedToArray(_overload3, 4);\n\n index = _overload4[0];\n length = _overload4[1];\n formats = _overload4[2];\n source = _overload4[3];\n\n return modify.call(this, function () {\n return _this5.editor.formatLine(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length, name, value, source) {\n var _this6 = this;\n\n var formats = void 0;\n\n var _overload5 = overload(index, length, name, value, source);\n\n var _overload6 = _slicedToArray(_overload5, 4);\n\n index = _overload6[0];\n length = _overload6[1];\n formats = _overload6[2];\n source = _overload6[3];\n\n return modify.call(this, function () {\n return _this6.editor.formatText(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var bounds = void 0;\n if (typeof index === 'number') {\n bounds = this.selection.getBounds(index, length);\n } else {\n bounds = this.selection.getBounds(index.index, index.length);\n }\n var containerBounds = this.container.getBoundingClientRect();\n return {\n bottom: bounds.bottom - containerBounds.top,\n height: bounds.height,\n left: bounds.left - containerBounds.left,\n right: bounds.right - containerBounds.left,\n top: bounds.top - containerBounds.top,\n width: bounds.width\n };\n }\n }, {\n key: 'getContents',\n value: function getContents() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload7 = overload(index, length);\n\n var _overload8 = _slicedToArray(_overload7, 2);\n\n index = _overload8[0];\n length = _overload8[1];\n\n return this.editor.getContents(index, length);\n }\n }, {\n key: 'getFormat',\n value: function getFormat() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (typeof index === 'number') {\n return this.editor.getFormat(index, length);\n } else {\n return this.editor.getFormat(index.index, index.length);\n }\n }\n }, {\n key: 'getIndex',\n value: function getIndex(blot) {\n return blot.offset(this.scroll);\n }\n }, {\n key: 'getLength',\n value: function getLength() {\n return this.scroll.length();\n }\n }, {\n key: 'getLeaf',\n value: function getLeaf(index) {\n return this.scroll.leaf(index);\n }\n }, {\n key: 'getLine',\n value: function getLine(index) {\n return this.scroll.line(index);\n }\n }, {\n key: 'getLines',\n value: function getLines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n if (typeof index !== 'number') {\n return this.scroll.lines(index.index, index.length);\n } else {\n return this.scroll.lines(index, length);\n }\n }\n }, {\n key: 'getModule',\n value: function getModule(name) {\n return this.theme.modules[name];\n }\n }, {\n key: 'getSelection',\n value: function getSelection() {\n var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (focus) this.focus();\n this.update(); // Make sure we access getRange with editor in consistent state\n return this.selection.getRange()[0];\n }\n }, {\n key: 'getText',\n value: function getText() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload9 = overload(index, length);\n\n var _overload10 = _slicedToArray(_overload9, 2);\n\n index = _overload10[0];\n length = _overload10[1];\n\n return this.editor.getText(index, length);\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return this.selection.hasFocus();\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n var _this7 = this;\n\n var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\n return modify.call(this, function () {\n return _this7.editor.insertEmbed(index, embed, value);\n }, source, index);\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text, name, value, source) {\n var _this8 = this;\n\n var formats = void 0;\n\n var _overload11 = overload(index, 0, name, value, source);\n\n var _overload12 = _slicedToArray(_overload11, 4);\n\n index = _overload12[0];\n formats = _overload12[2];\n source = _overload12[3];\n\n return modify.call(this, function () {\n return _this8.editor.insertText(index, text, formats);\n }, source, index, text.length);\n }\n }, {\n key: 'isEnabled',\n value: function isEnabled() {\n return !this.container.classList.contains('ql-disabled');\n }\n }, {\n key: 'off',\n value: function off() {\n return this.emitter.off.apply(this.emitter, arguments);\n }\n }, {\n key: 'on',\n value: function on() {\n return this.emitter.on.apply(this.emitter, arguments);\n }\n }, {\n key: 'once',\n value: function once() {\n return this.emitter.once.apply(this.emitter, arguments);\n }\n }, {\n key: 'pasteHTML',\n value: function pasteHTML(index, html, source) {\n this.clipboard.dangerouslyPasteHTML(index, html, source);\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length, source) {\n var _this9 = this;\n\n var _overload13 = overload(index, length, source);\n\n var _overload14 = _slicedToArray(_overload13, 4);\n\n index = _overload14[0];\n length = _overload14[1];\n source = _overload14[3];\n\n return modify.call(this, function () {\n return _this9.editor.removeFormat(index, length);\n }, source, index);\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView() {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }, {\n key: 'setContents',\n value: function setContents(delta) {\n var _this10 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n var length = _this10.getLength();\n var deleted = _this10.editor.deleteText(0, length);\n var applied = _this10.editor.applyDelta(delta);\n var lastOp = applied.ops[applied.ops.length - 1];\n if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n _this10.editor.deleteText(_this10.getLength() - 1, 1);\n applied.delete(1);\n }\n var ret = deleted.compose(applied);\n return ret;\n }, source);\n }\n }, {\n key: 'setSelection',\n value: function setSelection(index, length, source) {\n if (index == null) {\n this.selection.setRange(null, length || Quill.sources.API);\n } else {\n var _overload15 = overload(index, length, source);\n\n var _overload16 = _slicedToArray(_overload15, 4);\n\n index = _overload16[0];\n length = _overload16[1];\n source = _overload16[3];\n\n this.selection.setRange(new _selection.Range(index, length), source);\n if (source !== _emitter4.default.sources.SILENT) {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }\n }\n }, {\n key: 'setText',\n value: function setText(text) {\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n var delta = new _quillDelta2.default().insert(text);\n return this.setContents(delta, source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n this.selection.update(source);\n return change;\n }\n }, {\n key: 'updateContents',\n value: function updateContents(delta) {\n var _this11 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n return _this11.editor.applyDelta(delta, source);\n }, source, true);\n }\n }]);\n\n return Quill;\n}();\n\nQuill.DEFAULTS = {\n bounds: null,\n formats: null,\n modules: {},\n placeholder: '',\n readOnly: false,\n scrollingContainer: null,\n strict: true,\n theme: 'default'\n};\nQuill.events = _emitter4.default.events;\nQuill.sources = _emitter4.default.sources;\n// eslint-disable-next-line no-undef\nQuill.version = false ? 'dev' : \"1.3.7\";\n\nQuill.imports = {\n 'delta': _quillDelta2.default,\n 'parchment': _parchment2.default,\n 'core/module': _module2.default,\n 'core/theme': _theme2.default\n};\n\nfunction expandConfig(container, userConfig) {\n userConfig = (0, _extend2.default)(true, {\n container: container,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true\n }\n }, userConfig);\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = _theme2.default;\n } else {\n userConfig.theme = Quill.import('themes/' + userConfig.theme);\n if (userConfig.theme == null) {\n throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n }\n }\n var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n [themeConfig, userConfig].forEach(function (config) {\n config.modules = config.modules || {};\n Object.keys(config.modules).forEach(function (module) {\n if (config.modules[module] === true) {\n config.modules[module] = {};\n }\n });\n });\n var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n var moduleConfig = moduleNames.reduce(function (config, name) {\n var moduleClass = Quill.import('modules/' + name);\n if (moduleClass == null) {\n debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n } else {\n config[name] = moduleClass.DEFAULTS || {};\n }\n return config;\n }, {});\n // Special case toolbar shorthand\n if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n userConfig.modules.toolbar = {\n container: userConfig.modules.toolbar\n };\n }\n userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n if (typeof userConfig[key] === 'string') {\n userConfig[key] = document.querySelector(userConfig[key]);\n }\n });\n userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n if (userConfig.modules[name]) {\n config[name] = userConfig.modules[name];\n }\n return config;\n }, {});\n return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n return new _quillDelta2.default();\n }\n var range = index == null ? null : this.getSelection();\n var oldDelta = this.editor.delta;\n var change = modifier();\n if (range != null) {\n if (index === true) index = range.index;\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n range = shiftRange(range, index, shift, source);\n }\n this.setSelection(range, _emitter4.default.sources.SILENT);\n }\n if (change.length() > 0) {\n var _emitter;\n\n var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n return change;\n}\n\nfunction overload(index, length, name, value, source) {\n var formats = {};\n if (typeof index.index === 'number' && typeof index.length === 'number') {\n // Allow for throwaway end (used by insertText/insertEmbed)\n if (typeof length !== 'number') {\n source = value, value = name, name = length, length = index.length, index = index.index;\n } else {\n length = index.length, index = index.index;\n }\n } else if (typeof length !== 'number') {\n source = value, value = name, name = length, length = 0;\n }\n // Handle format being object, two format name/value strings or excluded\n if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n formats = name;\n source = value;\n } else if (typeof name === 'string') {\n if (value != null) {\n formats[name] = value;\n } else {\n source = name;\n }\n }\n // Handle optional source\n source = source || _emitter4.default.sources.API;\n return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n if (range == null) return null;\n var start = void 0,\n end = void 0;\n if (index instanceof _quillDelta2.default) {\n var _map = [range.index, range.index + range.length].map(function (pos) {\n return index.transformPosition(pos, source !== _emitter4.default.sources.USER);\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n } else {\n var _map3 = [range.index, range.index + range.length].map(function (pos) {\n if (pos < index || pos === index && source === _emitter4.default.sources.USER) return pos;\n if (length >= 0) {\n return pos + length;\n } else {\n return Math.max(index, pos + length);\n }\n });\n\n var _map4 = _slicedToArray(_map3, 2);\n\n start = _map4[0];\n end = _map4[1];\n }\n return new _selection.Range(start, end - start);\n}\n\nexports.expandConfig = expandConfig;\nexports.overload = overload;\nexports.default = Quill;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Inline = function (_Parchment$Inline) {\n _inherits(Inline, _Parchment$Inline);\n\n function Inline() {\n _classCallCheck(this, Inline);\n\n return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n }\n\n _createClass(Inline, [{\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n var blot = this.isolate(index, length);\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context);\n if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n var parent = this.parent.isolate(this.offset(), this.length());\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n }], [{\n key: 'compare',\n value: function compare(self, other) {\n var selfIndex = Inline.order.indexOf(self);\n var otherIndex = Inline.order.indexOf(other);\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n } else if (self === other) {\n return 0;\n } else if (self < other) {\n return -1;\n } else {\n return 1;\n }\n }\n }]);\n\n return Inline;\n}(_parchment2.default.Inline);\n\nInline.allowedChildren = [Inline, _parchment2.default.Embed, _text2.default];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = ['cursor', 'inline', // Must be lower\n'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher\n];\n\nexports.default = Inline;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TextBlot = function (_Parchment$Text) {\n _inherits(TextBlot, _Parchment$Text);\n\n function TextBlot() {\n _classCallCheck(this, TextBlot);\n\n return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n }\n\n return TextBlot;\n}(_parchment2.default.Text);\n\nexports.default = TextBlot;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _eventemitter = __webpack_require__(54);\n\nvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:events');\n\nvar EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n\nEVENTS.forEach(function (eventName) {\n document.addEventListener(eventName, function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) {\n // TODO use WeakMap\n if (node.__quill && node.__quill.emitter) {\n var _node$__quill$emitter;\n\n (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args);\n }\n });\n });\n});\n\nvar Emitter = function (_EventEmitter) {\n _inherits(Emitter, _EventEmitter);\n\n function Emitter() {\n _classCallCheck(this, Emitter);\n\n var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n _this.listeners = {};\n _this.on('error', debug.error);\n return _this;\n }\n\n _createClass(Emitter, [{\n key: 'emit',\n value: function emit() {\n debug.log.apply(debug, arguments);\n _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n }\n }, {\n key: 'handleDOM',\n value: function handleDOM(event) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (this.listeners[event.type] || []).forEach(function (_ref) {\n var node = _ref.node,\n handler = _ref.handler;\n\n if (event.target === node || node.contains(event.target)) {\n handler.apply(undefined, [event].concat(args));\n }\n });\n }\n }, {\n key: 'listenDOM',\n value: function listenDOM(eventName, node, handler) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push({ node: node, handler: handler });\n }\n }]);\n\n return Emitter;\n}(_eventemitter2.default);\n\nEmitter.events = {\n EDITOR_CHANGE: 'editor-change',\n SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n SCROLL_OPTIMIZE: 'scroll-optimize',\n SCROLL_UPDATE: 'scroll-update',\n SELECTION_CHANGE: 'selection-change',\n TEXT_CHANGE: 'text-change'\n};\nEmitter.sources = {\n API: 'api',\n SILENT: 'silent',\n USER: 'user'\n};\n\nexports.default = Emitter;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Module = function Module(quill) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Module);\n\n this.quill = quill;\n this.options = options;\n};\n\nModule.DEFAULTS = {};\n\nexports.default = Module;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar levels = ['error', 'warn', 'log', 'info'];\nvar level = 'warn';\n\nfunction debug(method) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\n var _console;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_console = console)[method].apply(_console, args); // eslint-disable-line no-console\n }\n}\n\nfunction namespace(ns) {\n return levels.reduce(function (logger, method) {\n logger[method] = debug.bind(console, method, ns);\n return logger;\n }, {});\n}\n\ndebug.level = namespace.level = function (newLevel) {\n level = newLevel;\n};\n\nexports.default = namespace;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(52);\nvar isArguments = __webpack_require__(53);\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected;\n\n // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n return typeof a === typeof b;\n}\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar Attributor = /** @class */ (function () {\n function Attributor(attrName, keyName, options) {\n if (options === void 0) { options = {}; }\n this.attrName = attrName;\n this.keyName = keyName;\n var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n if (options.scope != null) {\n // Ignore type bits, force attribute bit\n this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n }\n else {\n this.scope = Registry.Scope.ATTRIBUTE;\n }\n if (options.whitelist != null)\n this.whitelist = options.whitelist;\n }\n Attributor.keys = function (node) {\n return [].map.call(node.attributes, function (item) {\n return item.name;\n });\n };\n Attributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n node.setAttribute(this.keyName, value);\n return true;\n };\n Attributor.prototype.canAdd = function (node, value) {\n var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n if (match == null)\n return false;\n if (this.whitelist == null)\n return true;\n if (typeof value === 'string') {\n return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n }\n else {\n return this.whitelist.indexOf(value) > -1;\n }\n };\n Attributor.prototype.remove = function (node) {\n node.removeAttribute(this.keyName);\n };\n Attributor.prototype.value = function (node) {\n var value = node.getAttribute(this.keyName);\n if (this.canAdd(node, value) && value) {\n return value;\n }\n return '';\n };\n return Attributor;\n}());\nexports.default = Attributor;\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Code = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Code = function (_Inline) {\n _inherits(Code, _Inline);\n\n function Code() {\n _classCallCheck(this, Code);\n\n return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n }\n\n return Code;\n}(_inline2.default);\n\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\nvar CodeBlock = function (_Block) {\n _inherits(CodeBlock, _Block);\n\n function CodeBlock() {\n _classCallCheck(this, CodeBlock);\n\n return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n }\n\n _createClass(CodeBlock, [{\n key: 'delta',\n value: function delta() {\n var _this3 = this;\n\n var text = this.domNode.textContent;\n if (text.endsWith('\\n')) {\n // Should always be true\n text = text.slice(0, -1);\n }\n return text.split('\\n').reduce(function (delta, frag) {\n return delta.insert(frag).insert('\\n', _this3.formats());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (name === this.statics.blotName && value) return;\n\n var _descendant = this.descendant(_text2.default, this.length() - 1),\n _descendant2 = _slicedToArray(_descendant, 1),\n text = _descendant2[0];\n\n if (text != null) {\n text.deleteAt(text.length() - 1, 1);\n }\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length === 0) return;\n if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n return;\n }\n var nextNewline = this.newlineIndex(index);\n if (nextNewline < 0 || nextNewline >= index + length) return;\n var prevNewline = this.newlineIndex(index, true) + 1;\n var isolateLength = nextNewline - prevNewline + 1;\n var blot = this.isolate(prevNewline, isolateLength);\n var next = blot.next;\n blot.format(name, value);\n if (next instanceof CodeBlock) {\n next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n }\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return;\n\n var _descendant3 = this.descendant(_text2.default, index),\n _descendant4 = _slicedToArray(_descendant3, 2),\n text = _descendant4[0],\n offset = _descendant4[1];\n\n text.insertAt(offset, value);\n }\n }, {\n key: 'length',\n value: function length() {\n var length = this.domNode.textContent.length;\n if (!this.domNode.textContent.endsWith('\\n')) {\n return length + 1;\n }\n return length;\n }\n }, {\n key: 'newlineIndex',\n value: function newlineIndex(searchIndex) {\n var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!reverse) {\n var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n return offset > -1 ? searchIndex + offset : -1;\n } else {\n return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n if (!this.domNode.textContent.endsWith('\\n')) {\n this.appendChild(_parchment2.default.create('text', '\\n'));\n }\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context);\n var next = this.next;\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n next.optimize(context);\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n var blot = _parchment2.default.find(node);\n if (blot == null) {\n node.parentNode.removeChild(node);\n } else if (blot instanceof _parchment2.default.Embed) {\n blot.remove();\n } else {\n blot.unwrap();\n }\n });\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n domNode.setAttribute('spellcheck', false);\n return domNode;\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return CodeBlock;\n}(_block2.default);\n\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = ' ';\n\nexports.Code = Code;\nexports.default = CodeBlock;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ASCII = /^[ -~]*$/;\n\nvar Editor = function () {\n function Editor(scroll) {\n _classCallCheck(this, Editor);\n\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n\n _createClass(Editor, [{\n key: 'applyDelta',\n value: function applyDelta(delta) {\n var _this = this;\n\n var consumeNextNewline = false;\n this.scroll.update();\n var scrollLength = this.scroll.length();\n this.scroll.batchStart();\n delta = normalizeDelta(delta);\n delta.reduce(function (index, op) {\n var length = op.retain || op.delete || op.insert.length || 1;\n var attributes = op.attributes || {};\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n var text = op.insert;\n if (text.endsWith('\\n') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n if (index >= scrollLength && !text.endsWith('\\n')) {\n consumeNextNewline = true;\n }\n _this.scroll.insertAt(index, text);\n\n var _scroll$line = _this.scroll.line(index),\n _scroll$line2 = _slicedToArray(_scroll$line, 2),\n line = _scroll$line2[0],\n offset = _scroll$line2[1];\n\n var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n if (line instanceof _block2.default) {\n var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n _line$descendant2 = _slicedToArray(_line$descendant, 1),\n leaf = _line$descendant2[0];\n\n formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n }\n attributes = _op2.default.attributes.diff(formats, attributes) || {};\n } else if (_typeof(op.insert) === 'object') {\n var key = Object.keys(op.insert)[0]; // There should only be one key\n if (key == null) return index;\n _this.scroll.insertAt(index, key, op.insert[key]);\n }\n scrollLength += length;\n }\n Object.keys(attributes).forEach(function (name) {\n _this.scroll.formatAt(index, length, name, attributes[name]);\n });\n return index + length;\n }, 0);\n delta.reduce(function (index, op) {\n if (typeof op.delete === 'number') {\n _this.scroll.deleteAt(index, op.delete);\n return index;\n }\n return index + (op.retain || op.insert.length || 1);\n }, 0);\n this.scroll.batchEnd();\n return this.update(delta);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new _quillDelta2.default().retain(index).delete(length));\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length) {\n var _this2 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n this.scroll.update();\n Object.keys(formats).forEach(function (format) {\n if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n var lines = _this2.scroll.lines(index, Math.max(length, 1));\n var lengthRemaining = length;\n lines.forEach(function (line) {\n var lineLength = line.length();\n if (!(line instanceof _code2.default)) {\n line.format(format, formats[format]);\n } else {\n var codeIndex = index - line.offset(_this2.scroll);\n var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n line.formatAt(codeIndex, codeLength, format, formats[format]);\n }\n lengthRemaining -= lineLength;\n });\n });\n this.scroll.optimize();\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length) {\n var _this3 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n Object.keys(formats).forEach(function (format) {\n _this3.scroll.formatAt(index, length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'getContents',\n value: function getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n }, {\n key: 'getDelta',\n value: function getDelta() {\n return this.scroll.lines().reduce(function (delta, line) {\n return delta.concat(line.delta());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'getFormat',\n value: function getFormat(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var lines = [],\n leaves = [];\n if (length === 0) {\n this.scroll.path(index).forEach(function (path) {\n var _path = _slicedToArray(path, 1),\n blot = _path[0];\n\n if (blot instanceof _block2.default) {\n lines.push(blot);\n } else if (blot instanceof _parchment2.default.Leaf) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n }\n var formatsArr = [lines, leaves].map(function (blots) {\n if (blots.length === 0) return {};\n var formats = (0, _block.bubbleFormats)(blots.shift());\n while (Object.keys(formats).length > 0) {\n var blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n }\n return formats;\n });\n return _extend2.default.apply(_extend2.default, formatsArr);\n }\n }, {\n key: 'getText',\n value: function getText(index, length) {\n return this.getContents(index, length).filter(function (op) {\n return typeof op.insert === 'string';\n }).map(function (op) {\n return op.insert;\n }).join('');\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text) {\n var _this4 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach(function (format) {\n _this4.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'isBlank',\n value: function isBlank() {\n if (this.scroll.children.length == 0) return true;\n if (this.scroll.children.length > 1) return false;\n var block = this.scroll.children.head;\n if (block.statics.blotName !== _block2.default.blotName) return false;\n if (block.children.length > 1) return false;\n return block.children.head instanceof _break2.default;\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length) {\n var text = this.getText(index, length);\n\n var _scroll$line3 = this.scroll.line(index + length),\n _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n line = _scroll$line4[0],\n offset = _scroll$line4[1];\n\n var suffixLength = 0,\n suffix = new _quillDelta2.default();\n if (line != null) {\n if (!(line instanceof _code2.default)) {\n suffixLength = line.length() - offset;\n } else {\n suffixLength = line.newlineIndex(offset) - offset + 1;\n }\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n }\n var contents = this.getContents(index, length + suffixLength);\n var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n var delta = new _quillDelta2.default().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n }, {\n key: 'update',\n value: function update(change) {\n var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n var oldDelta = this.delta;\n if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2.default.find(mutations[0].target)) {\n // Optimization for character changes\n var textBlot = _parchment2.default.find(mutations[0].target);\n var formats = (0, _block.bubbleFormats)(textBlot);\n var index = textBlot.offset(this.scroll);\n var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n var oldText = new _quillDelta2.default().insert(oldValue);\n var newText = new _quillDelta2.default().insert(textBlot.value());\n var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n change = diffDelta.reduce(function (delta, op) {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n } else {\n return delta.push(op);\n }\n }, new _quillDelta2.default());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n return change;\n }\n }]);\n\n return Editor;\n}();\n\nfunction combineFormats(formats, combined) {\n return Object.keys(combined).reduce(function (merged, name) {\n if (formats[name] == null) return merged;\n if (combined[name] === formats[name]) {\n merged[name] = combined[name];\n } else if (Array.isArray(combined[name])) {\n if (combined[name].indexOf(formats[name]) < 0) {\n merged[name] = combined[name].concat([formats[name]]);\n }\n } else {\n merged[name] = [combined[name], formats[name]];\n }\n return merged;\n }, {});\n}\n\nfunction normalizeDelta(delta) {\n return delta.reduce(function (delta, op) {\n if (op.insert === 1) {\n var attributes = (0, _clone2.default)(op.attributes);\n delete attributes['image'];\n return delta.insert({ image: op.attributes.image }, attributes);\n }\n if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n op = (0, _clone2.default)(op);\n if (op.attributes.list) {\n op.attributes.list = 'ordered';\n } else {\n op.attributes.list = 'bullet';\n delete op.attributes.bullet;\n }\n }\n if (typeof op.insert === 'string') {\n var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n return delta.insert(text, op.attributes);\n }\n return delta.push(op);\n }, new _quillDelta2.default());\n}\n\nexports.default = Editor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Range = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _emitter3 = __webpack_require__(8);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill:selection');\n\nvar Range = function Range(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n _classCallCheck(this, Range);\n\n this.index = index;\n this.length = length;\n};\n\nvar Selection = function () {\n function Selection(scroll, emitter) {\n var _this = this;\n\n _classCallCheck(this, Selection);\n\n this.emitter = emitter;\n this.scroll = scroll;\n this.composing = false;\n this.mouseDown = false;\n this.root = this.scroll.domNode;\n this.cursor = _parchment2.default.create('cursor', this);\n // savedRange is last non-null range\n this.lastRange = this.savedRange = new Range(0, 0);\n this.handleComposition();\n this.handleDragging();\n this.emitter.listenDOM('selectionchange', document, function () {\n if (!_this.mouseDown) {\n setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 1);\n }\n });\n this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n _this.update(_emitter4.default.sources.SILENT);\n }\n });\n this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n if (!_this.hasFocus()) return;\n var native = _this.getNativeRange();\n if (native == null) return;\n if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n // TODO unclear if this has negative side effects\n _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n try {\n _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n } catch (ignored) {}\n });\n });\n this.emitter.on(_emitter4.default.events.SCROLL_OPTIMIZE, function (mutations, context) {\n if (context.range) {\n var _context$range = context.range,\n startNode = _context$range.startNode,\n startOffset = _context$range.startOffset,\n endNode = _context$range.endNode,\n endOffset = _context$range.endOffset;\n\n _this.setNativeRange(startNode, startOffset, endNode, endOffset);\n }\n });\n this.update(_emitter4.default.sources.SILENT);\n }\n\n _createClass(Selection, [{\n key: 'handleComposition',\n value: function handleComposition() {\n var _this2 = this;\n\n this.root.addEventListener('compositionstart', function () {\n _this2.composing = true;\n });\n this.root.addEventListener('compositionend', function () {\n _this2.composing = false;\n if (_this2.cursor.parent) {\n var range = _this2.cursor.restore();\n if (!range) return;\n setTimeout(function () {\n _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }, 1);\n }\n });\n }\n }, {\n key: 'handleDragging',\n value: function handleDragging() {\n var _this3 = this;\n\n this.emitter.listenDOM('mousedown', document.body, function () {\n _this3.mouseDown = true;\n });\n this.emitter.listenDOM('mouseup', document.body, function () {\n _this3.mouseDown = false;\n _this3.update(_emitter4.default.sources.USER);\n });\n }\n }, {\n key: 'focus',\n value: function focus() {\n if (this.hasFocus()) return;\n this.root.focus();\n this.setRange(this.savedRange);\n }\n }, {\n key: 'format',\n value: function format(_format, value) {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n this.scroll.update();\n var nativeRange = this.getNativeRange();\n if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n if (nativeRange.start.node !== this.cursor.textNode) {\n var blot = _parchment2.default.find(nativeRange.start.node, false);\n if (blot == null) return;\n // TODO Give blot ability to not split\n if (blot instanceof _parchment2.default.Leaf) {\n var after = blot.split(nativeRange.start.offset);\n blot.parent.insertBefore(this.cursor, after);\n } else {\n blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n }\n this.cursor.attach();\n }\n this.cursor.format(_format, value);\n this.scroll.optimize();\n this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n this.update();\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\n var node = void 0,\n _scroll$leaf = this.scroll.leaf(index),\n _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n leaf = _scroll$leaf2[0],\n offset = _scroll$leaf2[1];\n if (leaf == null) return null;\n\n var _leaf$position = leaf.position(offset, true);\n\n var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n node = _leaf$position2[0];\n offset = _leaf$position2[1];\n\n var range = document.createRange();\n if (length > 0) {\n range.setStart(node, offset);\n\n var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n leaf = _scroll$leaf4[0];\n offset = _scroll$leaf4[1];\n\n if (leaf == null) return null;\n\n var _leaf$position3 = leaf.position(offset, true);\n\n var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n node = _leaf$position4[0];\n offset = _leaf$position4[1];\n\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n } else {\n var side = 'left';\n var rect = void 0;\n if (node instanceof Text) {\n if (offset < node.data.length) {\n range.setStart(node, offset);\n range.setEnd(node, offset + 1);\n } else {\n range.setStart(node, offset - 1);\n range.setEnd(node, offset);\n side = 'right';\n }\n rect = range.getBoundingClientRect();\n } else {\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = 'right';\n }\n return {\n bottom: rect.top + rect.height,\n height: rect.height,\n left: rect[side],\n right: rect[side],\n top: rect.top,\n width: 0\n };\n }\n }\n }, {\n key: 'getNativeRange',\n value: function getNativeRange() {\n var selection = document.getSelection();\n if (selection == null || selection.rangeCount <= 0) return null;\n var nativeRange = selection.getRangeAt(0);\n if (nativeRange == null) return null;\n var range = this.normalizeNative(nativeRange);\n debug.info('getNativeRange', range);\n return range;\n }\n }, {\n key: 'getRange',\n value: function getRange() {\n var normalized = this.getNativeRange();\n if (normalized == null) return [null, null];\n var range = this.normalizedToRange(normalized);\n return [range, normalized];\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return document.activeElement === this.root;\n }\n }, {\n key: 'normalizedToRange',\n value: function normalizedToRange(range) {\n var _this4 = this;\n\n var positions = [[range.start.node, range.start.offset]];\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n var indexes = positions.map(function (position) {\n var _position = _slicedToArray(position, 2),\n node = _position[0],\n offset = _position[1];\n\n var blot = _parchment2.default.find(node, true);\n var index = blot.offset(_this4.scroll);\n if (offset === 0) {\n return index;\n } else if (blot instanceof _parchment2.default.Container) {\n return index + blot.length();\n } else {\n return index + blot.index(node, offset);\n }\n });\n var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);\n var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));\n return new Range(start, end - start);\n }\n }, {\n key: 'normalizeNative',\n value: function normalizeNative(nativeRange) {\n if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n return null;\n }\n var range = {\n start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n native: nativeRange\n };\n [range.start, range.end].forEach(function (position) {\n var node = position.node,\n offset = position.offset;\n while (!(node instanceof Text) && node.childNodes.length > 0) {\n if (node.childNodes.length > offset) {\n node = node.childNodes[offset];\n offset = 0;\n } else if (node.childNodes.length === offset) {\n node = node.lastChild;\n offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n } else {\n break;\n }\n }\n position.node = node, position.offset = offset;\n });\n return range;\n }\n }, {\n key: 'rangeToNative',\n value: function rangeToNative(range) {\n var _this5 = this;\n\n var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n var args = [];\n var scrollLength = this.scroll.length();\n indexes.forEach(function (index, i) {\n index = Math.min(scrollLength - 1, index);\n var node = void 0,\n _scroll$leaf5 = _this5.scroll.leaf(index),\n _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n leaf = _scroll$leaf6[0],\n offset = _scroll$leaf6[1];\n var _leaf$position5 = leaf.position(offset, i !== 0);\n\n var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n node = _leaf$position6[0];\n offset = _leaf$position6[1];\n\n args.push(node, offset);\n });\n if (args.length < 2) {\n args = args.concat(args);\n }\n return args;\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView(scrollingContainer) {\n var range = this.lastRange;\n if (range == null) return;\n var bounds = this.getBounds(range.index, range.length);\n if (bounds == null) return;\n var limit = this.scroll.length() - 1;\n\n var _scroll$line = this.scroll.line(Math.min(range.index, limit)),\n _scroll$line2 = _slicedToArray(_scroll$line, 1),\n first = _scroll$line2[0];\n\n var last = first;\n if (range.length > 0) {\n var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\n\n var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\n\n last = _scroll$line4[0];\n }\n if (first == null || last == null) return;\n var scrollBounds = scrollingContainer.getBoundingClientRect();\n if (bounds.top < scrollBounds.top) {\n scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\n } else if (bounds.bottom > scrollBounds.bottom) {\n scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\n }\n }\n }, {\n key: 'setNativeRange',\n value: function setNativeRange(startNode, startOffset) {\n var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n return;\n }\n var selection = document.getSelection();\n if (selection == null) return;\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n var native = (this.getNativeRange() || {}).native;\n if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\n if (startNode.tagName == \"BR\") {\n startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n startNode = startNode.parentNode;\n }\n if (endNode.tagName == \"BR\") {\n endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n endNode = endNode.parentNode;\n }\n var range = document.createRange();\n range.setStart(startNode, startOffset);\n range.setEnd(endNode, endOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n } else {\n selection.removeAllRanges();\n this.root.blur();\n document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n }\n }\n }, {\n key: 'setRange',\n value: function setRange(range) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\n if (typeof force === 'string') {\n source = force;\n force = false;\n }\n debug.info('setRange', range);\n if (range != null) {\n var args = this.rangeToNative(range);\n this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n } else {\n this.setNativeRange(null);\n }\n this.update(source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\n var oldRange = this.lastRange;\n\n var _getRange = this.getRange(),\n _getRange2 = _slicedToArray(_getRange, 2),\n lastRange = _getRange2[0],\n nativeRange = _getRange2[1];\n\n this.lastRange = lastRange;\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n var _emitter;\n\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n this.cursor.restore();\n }\n var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n }\n }]);\n\n return Selection;\n}();\n\nfunction contains(parent, descendant) {\n try {\n // Firefox inserts inaccessible nodes around video elements\n descendant.parentNode;\n } catch (e) {\n return false;\n }\n // IE11 has bug with Text nodes\n // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n if (descendant instanceof Text) {\n descendant = descendant.parentNode;\n }\n return parent.contains(descendant);\n}\n\nexports.Range = Range;\nexports.default = Selection;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Break = function (_Parchment$Embed) {\n _inherits(Break, _Parchment$Embed);\n\n function Break() {\n _classCallCheck(this, Break);\n\n return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n }\n\n _createClass(Break, [{\n key: 'insertInto',\n value: function insertInto(parent, ref) {\n if (parent.children.length === 0) {\n _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n } else {\n this.remove();\n }\n }\n }, {\n key: 'length',\n value: function length() {\n return 0;\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }], [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n return Break;\n}(_parchment2.default.Embed);\n\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\nexports.default = Break;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = __webpack_require__(44);\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar ContainerBlot = /** @class */ (function (_super) {\n __extends(ContainerBlot, _super);\n function ContainerBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.build();\n return _this;\n }\n ContainerBlot.prototype.appendChild = function (other) {\n this.insertBefore(other);\n };\n ContainerBlot.prototype.attach = function () {\n _super.prototype.attach.call(this);\n this.children.forEach(function (child) {\n child.attach();\n });\n };\n ContainerBlot.prototype.build = function () {\n var _this = this;\n this.children = new linked_list_1.default();\n // Need to be reversed for if DOM nodes already in order\n [].slice\n .call(this.domNode.childNodes)\n .reverse()\n .forEach(function (node) {\n try {\n var child = makeBlot(node);\n _this.insertBefore(child, _this.children.head || undefined);\n }\n catch (err) {\n if (err instanceof Registry.ParchmentError)\n return;\n else\n throw err;\n }\n });\n };\n ContainerBlot.prototype.deleteAt = function (index, length) {\n if (index === 0 && length === this.length()) {\n return this.remove();\n }\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.deleteAt(offset, length);\n });\n };\n ContainerBlot.prototype.descendant = function (criteria, index) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n return [child, offset];\n }\n else if (child instanceof ContainerBlot) {\n return child.descendant(criteria, offset);\n }\n else {\n return [null, -1];\n }\n };\n ContainerBlot.prototype.descendants = function (criteria, index, length) {\n if (index === void 0) { index = 0; }\n if (length === void 0) { length = Number.MAX_VALUE; }\n var descendants = [];\n var lengthLeft = length;\n this.children.forEachAt(index, length, function (child, index, length) {\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n descendants.push(child);\n }\n if (child instanceof ContainerBlot) {\n descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return descendants;\n };\n ContainerBlot.prototype.detach = function () {\n this.children.forEach(function (child) {\n child.detach();\n });\n _super.prototype.detach.call(this);\n };\n ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.formatAt(offset, length, name, value);\n });\n };\n ContainerBlot.prototype.insertAt = function (index, value, def) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if (child) {\n child.insertAt(offset, value, def);\n }\n else {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n this.appendChild(blot);\n }\n };\n ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n if (this.statics.allowedChildren != null &&\n !this.statics.allowedChildren.some(function (child) {\n return childBlot instanceof child;\n })) {\n throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n }\n childBlot.insertInto(this, refBlot);\n };\n ContainerBlot.prototype.length = function () {\n return this.children.reduce(function (memo, child) {\n return memo + child.length();\n }, 0);\n };\n ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n this.children.forEach(function (child) {\n targetParent.insertBefore(child, refNode);\n });\n };\n ContainerBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n if (this.children.length === 0) {\n if (this.statics.defaultChild != null) {\n var child = Registry.create(this.statics.defaultChild);\n this.appendChild(child);\n child.optimize(context);\n }\n else {\n this.remove();\n }\n }\n };\n ContainerBlot.prototype.path = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n var position = [[this, index]];\n if (child instanceof ContainerBlot) {\n return position.concat(child.path(offset, inclusive));\n }\n else if (child != null) {\n position.push([child, offset]);\n }\n return position;\n };\n ContainerBlot.prototype.removeChild = function (child) {\n this.children.remove(child);\n };\n ContainerBlot.prototype.replace = function (target) {\n if (target instanceof ContainerBlot) {\n target.moveChildren(this);\n }\n _super.prototype.replace.call(this, target);\n };\n ContainerBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = this.clone();\n this.parent.insertBefore(after, this.next);\n this.children.forEachAt(index, this.length(), function (child, offset, length) {\n child = child.split(offset, force);\n after.appendChild(child);\n });\n return after;\n };\n ContainerBlot.prototype.unwrap = function () {\n this.moveChildren(this.parent, this.next);\n this.remove();\n };\n ContainerBlot.prototype.update = function (mutations, context) {\n var _this = this;\n var addedNodes = [];\n var removedNodes = [];\n mutations.forEach(function (mutation) {\n if (mutation.target === _this.domNode && mutation.type === 'childList') {\n addedNodes.push.apply(addedNodes, mutation.addedNodes);\n removedNodes.push.apply(removedNodes, mutation.removedNodes);\n }\n });\n removedNodes.forEach(function (node) {\n // Check node has actually been removed\n // One exception is Chrome does not immediately remove IFRAMEs\n // from DOM but MutationRecord is correct in its reported removal\n if (node.parentNode != null &&\n // @ts-ignore\n node.tagName !== 'IFRAME' &&\n document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return;\n }\n var blot = Registry.find(node);\n if (blot == null)\n return;\n if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n blot.detach();\n }\n });\n addedNodes\n .filter(function (node) {\n return node.parentNode == _this.domNode;\n })\n .sort(function (a, b) {\n if (a === b)\n return 0;\n if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n }\n return -1;\n })\n .forEach(function (node) {\n var refBlot = null;\n if (node.nextSibling != null) {\n refBlot = Registry.find(node.nextSibling);\n }\n var blot = makeBlot(node);\n if (blot.next != refBlot || blot.next == null) {\n if (blot.parent != null) {\n blot.parent.removeChild(_this);\n }\n _this.insertBefore(blot, refBlot || undefined);\n }\n });\n };\n return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n var blot = Registry.find(node);\n if (blot == null) {\n try {\n blot = Registry.create(node);\n }\n catch (e) {\n blot = Registry.create(Registry.Scope.INLINE);\n [].slice.call(node.childNodes).forEach(function (child) {\n // @ts-ignore\n blot.domNode.appendChild(child);\n });\n if (node.parentNode) {\n node.parentNode.replaceChild(blot.domNode, node);\n }\n blot.attach();\n }\n }\n return blot;\n}\nexports.default = ContainerBlot;\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar store_1 = __webpack_require__(31);\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar FormatBlot = /** @class */ (function (_super) {\n __extends(FormatBlot, _super);\n function FormatBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n _this.attributes = new store_1.default(_this.domNode);\n return _this;\n }\n FormatBlot.formats = function (domNode) {\n if (typeof this.tagName === 'string') {\n return true;\n }\n else if (Array.isArray(this.tagName)) {\n return domNode.tagName.toLowerCase();\n }\n return undefined;\n };\n FormatBlot.prototype.format = function (name, value) {\n var format = Registry.query(name);\n if (format instanceof attributor_1.default) {\n this.attributes.attribute(format, value);\n }\n else if (value) {\n if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n this.replaceWith(name, value);\n }\n }\n };\n FormatBlot.prototype.formats = function () {\n var formats = this.attributes.values();\n var format = this.statics.formats(this.domNode);\n if (format != null) {\n formats[this.statics.blotName] = format;\n }\n return formats;\n };\n FormatBlot.prototype.replaceWith = function (name, value) {\n var replacement = _super.prototype.replaceWith.call(this, name, value);\n this.attributes.copy(replacement);\n return replacement;\n };\n FormatBlot.prototype.update = function (mutations, context) {\n var _this = this;\n _super.prototype.update.call(this, mutations, context);\n if (mutations.some(function (mutation) {\n return mutation.target === _this.domNode && mutation.type === 'attributes';\n })) {\n this.attributes.build();\n }\n };\n FormatBlot.prototype.wrap = function (name, value) {\n var wrapper = _super.prototype.wrap.call(this, name, value);\n if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n this.attributes.move(wrapper);\n }\n return wrapper;\n };\n return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = __webpack_require__(30);\nvar Registry = __webpack_require__(1);\nvar LeafBlot = /** @class */ (function (_super) {\n __extends(LeafBlot, _super);\n function LeafBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LeafBlot.value = function (domNode) {\n return true;\n };\n LeafBlot.prototype.index = function (node, offset) {\n if (this.domNode === node ||\n this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return Math.min(offset, 1);\n }\n return -1;\n };\n LeafBlot.prototype.position = function (index, inclusive) {\n var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n if (index > 0)\n offset += 1;\n return [this.parent.domNode, offset];\n };\n LeafBlot.prototype.value = function () {\n var _a;\n return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n };\n LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n return LeafBlot;\n}(shadow_1.default));\nexports.default = LeafBlot;\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\n\n\nvar lib = {\n attributes: {\n compose: function (a, b, keepNull) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = extend(true, {}, b);\n if (!keepNull) {\n attributes = Object.keys(attributes).reduce(function (copy, key) {\n if (attributes[key] != null) {\n copy[key] = attributes[key];\n }\n return copy;\n }, {});\n }\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n diff: function(a, b) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n if (!equal(a[key], b[key])) {\n attributes[key] = b[key] === undefined ? null : b[key];\n }\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n transform: function (a, b, priority) {\n if (typeof a !== 'object') return b;\n if (typeof b !== 'object') return undefined;\n if (!priority) return b; // b simply overwrites us without priority\n var attributes = Object.keys(b).reduce(function (attributes, key) {\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n\n iterator: function (ops) {\n return new Iterator(ops);\n },\n\n length: function (op) {\n if (typeof op['delete'] === 'number') {\n return op['delete'];\n } else if (typeof op.retain === 'number') {\n return op.retain;\n } else {\n return typeof op.insert === 'string' ? op.insert.length : 1;\n }\n }\n};\n\n\nfunction Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp)\n if (length >= opLength - offset) {\n length = opLength - offset;\n this.index += 1;\n this.offset = 0;\n } else {\n this.offset += length;\n }\n if (typeof nextOp['delete'] === 'number') {\n return { 'delete': length };\n } else {\n var retOp = {};\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\n }\n if (typeof nextOp.retain === 'number') {\n retOp.retain = length;\n } else if (typeof nextOp.insert === 'string') {\n retOp.insert = nextOp.insert.substr(offset, length);\n } else {\n // offset should === 0, length should === 1\n retOp.insert = nextOp.insert;\n }\n return retOp;\n }\n } else {\n return { retain: Infinity };\n }\n};\n\nIterator.prototype.peek = function () {\n return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n if (this.ops[this.index]) {\n // Should never return 0 if our index is being managed correctly\n return lib.length(this.ops[this.index]) - this.offset;\n } else {\n return Infinity;\n }\n};\n\nIterator.prototype.peekType = function () {\n if (this.ops[this.index]) {\n if (typeof this.ops[this.index]['delete'] === 'number') {\n return 'delete';\n } else if (typeof this.ops[this.index].retain === 'number') {\n return 'retain';\n } else {\n return 'insert';\n }\n }\n return 'retain';\n};\n\nIterator.prototype.rest = function () {\n if (!this.hasNext()) {\n return [];\n } else if (this.offset === 0) {\n return this.ops.slice(this.index);\n } else {\n var offset = this.offset;\n var index = this.index;\n var next = this.next();\n var rest = this.ops.slice(this.index);\n this.offset = offset;\n this.index = index;\n return [next].concat(rest);\n }\n};\n\n\nmodule.exports = lib;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\nvar clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\n nativeMap = Map;\n} catch(_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\n\n/**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n*/\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function(value) {\n resolve(_clone(value, depth - 1));\n }, function(err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n }\n else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function(value, key) {\n var keyChild = _clone(key, depth - 1);\n var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n}\n\n/**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction isLine(blot) {\n return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n}\n\nvar Scroll = function (_Parchment$Scroll) {\n _inherits(Scroll, _Parchment$Scroll);\n\n function Scroll(domNode, config) {\n _classCallCheck(this, Scroll);\n\n var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n _this.emitter = config.emitter;\n if (Array.isArray(config.whitelist)) {\n _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n whitelist[format] = true;\n return whitelist;\n }, {});\n }\n // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n _this.domNode.addEventListener('DOMNodeInserted', function () {});\n _this.optimize();\n _this.enable();\n return _this;\n }\n\n _createClass(Scroll, [{\n key: 'batchStart',\n value: function batchStart() {\n this.batch = true;\n }\n }, {\n key: 'batchEnd',\n value: function batchEnd() {\n this.batch = false;\n this.optimize();\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n var _line = this.line(index),\n _line2 = _slicedToArray(_line, 2),\n first = _line2[0],\n offset = _line2[1];\n\n var _line3 = this.line(index + length),\n _line4 = _slicedToArray(_line3, 1),\n last = _line4[0];\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n if (last != null && first !== last && offset > 0) {\n if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {\n this.optimize();\n return;\n }\n if (first instanceof _code2.default) {\n var newlineIndex = first.newlineIndex(first.length(), true);\n if (newlineIndex > -1) {\n first = first.split(newlineIndex + 1);\n if (first === last) {\n this.optimize();\n return;\n }\n }\n } else if (last instanceof _code2.default) {\n var _newlineIndex = last.newlineIndex(0);\n if (_newlineIndex > -1) {\n last.split(_newlineIndex + 1);\n }\n }\n var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\n }\n this.optimize();\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.domNode.setAttribute('contenteditable', enabled);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, format, value) {\n if (this.whitelist != null && !this.whitelist[format]) return;\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n this.optimize();\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n if (index >= this.length()) {\n if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n var blot = _parchment2.default.create(this.statics.defaultChild);\n this.appendChild(blot);\n if (def == null && value.endsWith('\\n')) {\n value = value.slice(0, -1);\n }\n blot.insertAt(0, value, def);\n } else {\n var embed = _parchment2.default.create(value, def);\n this.appendChild(embed);\n }\n } else {\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n }\n this.optimize();\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n var wrapper = _parchment2.default.create(this.statics.defaultChild);\n wrapper.appendChild(blot);\n blot = wrapper;\n }\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n }\n }, {\n key: 'leaf',\n value: function leaf(index) {\n return this.path(index).pop() || [null, -1];\n }\n }, {\n key: 'line',\n value: function line(index) {\n if (index === this.length()) {\n return this.line(index - 1);\n }\n return this.descendant(isLine, index);\n }\n }, {\n key: 'lines',\n value: function lines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n var getLines = function getLines(blot, index, length) {\n var lines = [],\n lengthLeft = length;\n blot.children.forEachAt(index, length, function (child, index, length) {\n if (isLine(child)) {\n lines.push(child);\n } else if (child instanceof _parchment2.default.Container) {\n lines = lines.concat(getLines(child, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return lines;\n };\n return getLines(this, index, length);\n }\n }, {\n key: 'optimize',\n value: function optimize() {\n var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.batch === true) return;\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context);\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context);\n }\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n }\n }, {\n key: 'update',\n value: function update(mutations) {\n if (this.batch === true) return;\n var source = _emitter2.default.sources.USER;\n if (typeof mutations === 'string') {\n source = mutations;\n }\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n }\n }\n }]);\n\n return Scroll;\n}(_parchment2.default.Scroll);\n\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\nexports.default = Scroll;\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SHORTKEY = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(21);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:keyboard');\n\nvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nvar Keyboard = function (_Module) {\n _inherits(Keyboard, _Module);\n\n _createClass(Keyboard, null, [{\n key: 'match',\n value: function match(evt, binding) {\n binding = normalize(binding);\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n return !!binding[key] !== evt[key] && binding[key] !== null;\n })) {\n return false;\n }\n return binding.key === (evt.which || evt.keyCode);\n }\n }]);\n\n function Keyboard(quill, options) {\n _classCallCheck(this, Keyboard);\n\n var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n _this.bindings = {};\n Object.keys(_this.options.bindings).forEach(function (name) {\n if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) {\n return;\n }\n if (_this.options.bindings[name]) {\n _this.addBinding(_this.options.bindings[name]);\n }\n });\n _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n } else {\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n }\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, handleBackspace);\n _this.listen();\n return _this;\n }\n\n _createClass(Keyboard, [{\n key: 'addBinding',\n value: function addBinding(key) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var binding = normalize(key);\n if (binding == null || binding.key == null) {\n return debug.warn('Attempted to add invalid keyboard binding', binding);\n }\n if (typeof context === 'function') {\n context = { handler: context };\n }\n if (typeof handler === 'function') {\n handler = { handler: handler };\n }\n binding = (0, _extend2.default)(binding, context, handler);\n this.bindings[binding.key] = this.bindings[binding.key] || [];\n this.bindings[binding.key].push(binding);\n }\n }, {\n key: 'listen',\n value: function listen() {\n var _this2 = this;\n\n this.quill.root.addEventListener('keydown', function (evt) {\n if (evt.defaultPrevented) return;\n var which = evt.which || evt.keyCode;\n var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n return Keyboard.match(evt, binding);\n });\n if (bindings.length === 0) return;\n var range = _this2.quill.getSelection();\n if (range == null || !_this2.quill.hasFocus()) return;\n\n var _quill$getLine = _this2.quill.getLine(range.index),\n _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n line = _quill$getLine2[0],\n offset = _quill$getLine2[1];\n\n var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n leafStart = _quill$getLeaf2[0],\n offsetStart = _quill$getLeaf2[1];\n\n var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n _ref2 = _slicedToArray(_ref, 2),\n leafEnd = _ref2[0],\n offsetEnd = _ref2[1];\n\n var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n var curContext = {\n collapsed: range.length === 0,\n empty: range.length === 0 && line.length() <= 1,\n format: _this2.quill.getFormat(range),\n offset: offset,\n prefix: prefixText,\n suffix: suffixText\n };\n var prevented = bindings.some(function (binding) {\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n if (binding.empty != null && binding.empty !== curContext.empty) return false;\n if (binding.offset != null && binding.offset !== curContext.offset) return false;\n if (Array.isArray(binding.format)) {\n // any format is present\n if (binding.format.every(function (name) {\n return curContext.format[name] == null;\n })) {\n return false;\n }\n } else if (_typeof(binding.format) === 'object') {\n // all formats must match\n if (!Object.keys(binding.format).every(function (name) {\n if (binding.format[name] === true) return curContext.format[name] != null;\n if (binding.format[name] === false) return curContext.format[name] == null;\n return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n return binding.handler.call(_this2, range, curContext) !== true;\n });\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n }]);\n\n return Keyboard;\n}(_module2.default);\n\nKeyboard.keys = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n bindings: {\n 'bold': makeFormatHandler('bold'),\n 'italic': makeFormatHandler('italic'),\n 'underline': makeFormatHandler('underline'),\n 'indent': {\n // highlight tab or tab at beginning of list, indent or blockquote\n key: Keyboard.keys.TAB,\n format: ['blockquote', 'indent', 'list'],\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', _quill2.default.sources.USER);\n }\n },\n 'outdent': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n // highlight tab or tab at beginning of list, indent or blockquote\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n }\n },\n 'outdent backspace': {\n key: Keyboard.keys.BACKSPACE,\n collapsed: true,\n shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\n format: ['indent', 'list'],\n offset: 0,\n handler: function handler(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n }\n }\n },\n 'indent code-block': makeCodeBlockHandler(true),\n 'outdent code-block': makeCodeBlockHandler(false),\n 'remove tab': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n collapsed: true,\n prefix: /\\t$/,\n handler: function handler(range) {\n this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n }\n },\n 'tab': {\n key: Keyboard.keys.TAB,\n handler: function handler(range) {\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\\t');\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n }\n },\n 'list empty enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['list'],\n empty: true,\n handler: function handler(range, context) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n if (context.format.indent) {\n this.quill.format('indent', false, _quill2.default.sources.USER);\n }\n }\n },\n 'checklist enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: { list: 'checked' },\n handler: function handler(range) {\n var _quill$getLine3 = this.quill.getLine(range.index),\n _quill$getLine4 = _slicedToArray(_quill$getLine3, 2),\n line = _quill$getLine4[0],\n offset = _quill$getLine4[1];\n\n var formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' });\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'header enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler: function handler(range, context) {\n var _quill$getLine5 = this.quill.getLine(range.index),\n _quill$getLine6 = _slicedToArray(_quill$getLine5, 2),\n line = _quill$getLine6[0],\n offset = _quill$getLine6[1];\n\n var delta = new _quillDelta2.default().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'list autofill': {\n key: ' ',\n collapsed: true,\n format: { list: false },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler: function handler(range, context) {\n var length = context.prefix.length;\n\n var _quill$getLine7 = this.quill.getLine(range.index),\n _quill$getLine8 = _slicedToArray(_quill$getLine7, 2),\n line = _quill$getLine8[0],\n offset = _quill$getLine8[1];\n\n if (offset > length) return true;\n var value = void 0;\n switch (context.prefix.trim()) {\n case '[]':case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-':case '*':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.insertText(range.index, ' ', _quill2.default.sources.USER);\n this.quill.history.cutoff();\n var delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value });\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n }\n },\n 'code exit': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['code-block'],\n prefix: /\\n\\n$/,\n suffix: /^\\s+$/,\n handler: function handler(range) {\n var _quill$getLine9 = this.quill.getLine(range.index),\n _quill$getLine10 = _slicedToArray(_quill$getLine9, 2),\n line = _quill$getLine10[0],\n offset = _quill$getLine10[1];\n\n var delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1);\n this.quill.updateContents(delta, _quill2.default.sources.USER);\n }\n },\n 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n }\n};\n\nfunction makeEmbedArrowHandler(key, shiftKey) {\n var _ref3;\n\n var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n return _ref3 = {\n key: key,\n shiftKey: shiftKey,\n altKey: null\n }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) {\n var index = range.index;\n if (key === Keyboard.keys.RIGHT) {\n index += range.length + 1;\n }\n\n var _quill$getLeaf3 = this.quill.getLeaf(index),\n _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1),\n leaf = _quill$getLeaf4[0];\n\n if (!(leaf instanceof _parchment2.default.Embed)) return true;\n if (key === Keyboard.keys.LEFT) {\n if (shiftKey) {\n this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index - 1, _quill2.default.sources.USER);\n }\n } else {\n if (shiftKey) {\n this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER);\n } else {\n this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER);\n }\n }\n return false;\n }), _ref3;\n}\n\nfunction handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n var _quill$getLine11 = this.quill.getLine(range.index),\n _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),\n line = _quill$getLine12[0];\n\n var formats = {};\n if (context.offset === 0) {\n var _quill$getLine13 = this.quill.getLine(range.index - 1),\n _quill$getLine14 = _slicedToArray(_quill$getLine13, 1),\n prev = _quill$getLine14[0];\n\n if (prev != null && prev.length() > 1) {\n var curFormats = line.formats();\n var prevFormats = this.quill.getFormat(range.index - 1, 1);\n formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n }\n }\n // Check for astral symbols\n var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n }\n this.quill.focus();\n}\n\nfunction handleDelete(range, context) {\n // Check for astral symbols\n var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n var formats = {},\n nextLength = 0;\n\n var _quill$getLine15 = this.quill.getLine(range.index),\n _quill$getLine16 = _slicedToArray(_quill$getLine15, 1),\n line = _quill$getLine16[0];\n\n if (context.offset >= line.length() - 1) {\n var _quill$getLine17 = this.quill.getLine(range.index + 1),\n _quill$getLine18 = _slicedToArray(_quill$getLine17, 1),\n next = _quill$getLine18[0];\n\n if (next) {\n var curFormats = line.formats();\n var nextFormats = this.quill.getFormat(range.index, 1);\n formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};\n nextLength = next.length();\n }\n }\n this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);\n }\n}\n\nfunction handleDeleteRange(range) {\n var lines = this.quill.getLines(range);\n var formats = {};\n if (lines.length > 1) {\n var firstFormats = lines[0].formats();\n var lastFormats = lines[lines.length - 1].formats();\n formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {};\n }\n this.quill.deleteText(range, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER);\n }\n this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n this.quill.focus();\n}\n\nfunction handleEnter(range, context) {\n var _this3 = this;\n\n if (range.length > 0) {\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n }\n var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n lineFormats[format] = context.format[format];\n }\n return lineFormats;\n }, {});\n this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n // Earlier scroll.deleteAt might have messed up our selection,\n // so insertText's built in selection preservation is not reliable\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.focus();\n Object.keys(context.format).forEach(function (name) {\n if (lineFormats[name] != null) return;\n if (Array.isArray(context.format[name])) return;\n if (name === 'link') return;\n _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n });\n}\n\nfunction makeCodeBlockHandler(indent) {\n return {\n key: Keyboard.keys.TAB,\n shiftKey: !indent,\n format: { 'code-block': true },\n handler: function handler(range) {\n var CodeBlock = _parchment2.default.query('code-block');\n var index = range.index,\n length = range.length;\n\n var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n block = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (block == null) return;\n var scrollIndex = this.quill.getIndex(block);\n var start = block.newlineIndex(offset, true) + 1;\n var end = block.newlineIndex(scrollIndex + offset + length);\n var lines = block.domNode.textContent.slice(start, end).split('\\n');\n offset = 0;\n lines.forEach(function (line, i) {\n if (indent) {\n block.insertAt(start + offset, CodeBlock.TAB);\n offset += CodeBlock.TAB.length;\n if (i === 0) {\n index += CodeBlock.TAB.length;\n } else {\n length += CodeBlock.TAB.length;\n }\n } else if (line.startsWith(CodeBlock.TAB)) {\n block.deleteAt(start + offset, CodeBlock.TAB.length);\n offset -= CodeBlock.TAB.length;\n if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\n }\n }\n offset += line.length + 1;\n });\n this.quill.update(_quill2.default.sources.USER);\n this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n }\n };\n}\n\nfunction makeFormatHandler(format) {\n return {\n key: format[0].toUpperCase(),\n shortKey: true,\n handler: function handler(range, context) {\n this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n }\n };\n}\n\nfunction normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n return normalize({ key: binding });\n }\n if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n binding = (0, _clone2.default)(binding, false);\n }\n if (typeof binding.key === 'string') {\n if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n binding.key = Keyboard.keys[binding.key.toUpperCase()];\n } else if (binding.key.length === 1) {\n binding.key = binding.key.toUpperCase().charCodeAt(0);\n } else {\n return null;\n }\n }\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n return binding;\n}\n\nexports.default = Keyboard;\nexports.SHORTKEY = SHORTKEY;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Cursor = function (_Parchment$Embed) {\n _inherits(Cursor, _Parchment$Embed);\n\n _createClass(Cursor, null, [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n function Cursor(domNode, selection) {\n _classCallCheck(this, Cursor);\n\n var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n _this.selection = selection;\n _this.textNode = document.createTextNode(Cursor.CONTENTS);\n _this.domNode.appendChild(_this.textNode);\n _this._length = 0;\n return _this;\n }\n\n _createClass(Cursor, [{\n key: 'detach',\n value: function detach() {\n // super.detach() will also clear domNode.__blot\n if (this.parent != null) this.parent.removeChild(this);\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (this._length !== 0) {\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n }\n var target = this,\n index = 0;\n while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\n }\n if (target != null) {\n this._length = Cursor.CONTENTS.length;\n target.optimize();\n target.formatAt(index, Cursor.CONTENTS.length, name, value);\n this._length = 0;\n }\n }\n }, {\n key: 'index',\n value: function index(node, offset) {\n if (node === this.textNode) return 0;\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'length',\n value: function length() {\n return this._length;\n }\n }, {\n key: 'position',\n value: function position() {\n return [this.textNode, this.textNode.data.length];\n }\n }, {\n key: 'remove',\n value: function remove() {\n _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n this.parent = null;\n }\n }, {\n key: 'restore',\n value: function restore() {\n if (this.selection.composing || this.parent == null) return;\n var textNode = this.textNode;\n var range = this.selection.getNativeRange();\n var restoreText = void 0,\n start = void 0,\n end = void 0;\n if (range != null && range.start.node === textNode && range.end.node === textNode) {\n var _ref = [textNode, range.start.offset, range.end.offset];\n restoreText = _ref[0];\n start = _ref[1];\n end = _ref[2];\n }\n // Link format will insert text outside of anchor tag\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n if (this.textNode.data !== Cursor.CONTENTS) {\n var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n if (this.next instanceof _text2.default) {\n restoreText = this.next.domNode;\n this.next.insertAt(0, text);\n this.textNode.data = Cursor.CONTENTS;\n } else {\n this.textNode.data = text;\n this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n }\n }\n this.remove();\n if (start != null) {\n var _map = [start, end].map(function (offset) {\n return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n\n return {\n startNode: restoreText,\n startOffset: start,\n endNode: restoreText,\n endOffset: end\n };\n }\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this2.textNode;\n })) {\n var range = this.restore();\n if (range) context.range = range;\n }\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }]);\n\n return Cursor;\n}(_parchment2.default.Embed);\n\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n\nexports.default = Cursor;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Container = function (_Parchment$Container) {\n _inherits(Container, _Parchment$Container);\n\n function Container() {\n _classCallCheck(this, Container);\n\n return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n }\n\n return Container;\n}(_parchment2.default.Container);\n\nContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\nexports.default = Container;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorAttributor = function (_Parchment$Attributor) {\n _inherits(ColorAttributor, _Parchment$Attributor);\n\n function ColorAttributor() {\n _classCallCheck(this, ColorAttributor);\n\n return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n }\n\n _createClass(ColorAttributor, [{\n key: 'value',\n value: function value(domNode) {\n var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n if (!value.startsWith('rgb(')) return value;\n value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n return '#' + value.split(',').map(function (component) {\n return ('00' + parseInt(component).toString(16)).slice(-2);\n }).join('');\n }\n }]);\n\n return ColorAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar ColorStyle = new ColorAttributor('color', 'color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.ColorAttributor = ColorAttributor;\nexports.ColorClass = ColorClass;\nexports.ColorStyle = ColorStyle;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sanitize = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Link = function (_Inline) {\n _inherits(Link, _Inline);\n\n function Link() {\n _classCallCheck(this, Link);\n\n return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n }\n\n _createClass(Link, [{\n key: 'format',\n value: function format(name, value) {\n if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n value = this.constructor.sanitize(value);\n this.domNode.setAttribute('href', value);\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n value = this.sanitize(value);\n node.setAttribute('href', value);\n node.setAttribute('rel', 'noopener noreferrer');\n node.setAttribute('target', '_blank');\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return domNode.getAttribute('href');\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n }\n }]);\n\n return Link;\n}(_inline2.default);\n\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\nfunction _sanitize(url, protocols) {\n var anchor = document.createElement('a');\n anchor.href = url;\n var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n return protocols.indexOf(protocol) > -1;\n}\n\nexports.default = Link;\nexports.sanitize = _sanitize;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _dropdown = __webpack_require__(107);\n\nvar _dropdown2 = _interopRequireDefault(_dropdown);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar optionsCounter = 0;\n\nfunction toggleAriaAttribute(element, attribute) {\n element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\n}\n\nvar Picker = function () {\n function Picker(select) {\n var _this = this;\n\n _classCallCheck(this, Picker);\n\n this.select = select;\n this.container = document.createElement('span');\n this.buildPicker();\n this.select.style.display = 'none';\n this.select.parentNode.insertBefore(this.container, this.select);\n\n this.label.addEventListener('mousedown', function () {\n _this.togglePicker();\n });\n this.label.addEventListener('keydown', function (event) {\n switch (event.keyCode) {\n // Allows the \"Enter\" key to open the picker\n case _keyboard2.default.keys.ENTER:\n _this.togglePicker();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case _keyboard2.default.keys.ESCAPE:\n _this.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n\n _createClass(Picker, [{\n key: 'togglePicker',\n value: function togglePicker() {\n this.container.classList.toggle('ql-expanded');\n // Toggle aria-expanded and aria-hidden to make the picker accessible\n toggleAriaAttribute(this.label, 'aria-expanded');\n toggleAriaAttribute(this.options, 'aria-hidden');\n }\n }, {\n key: 'buildItem',\n value: function buildItem(option) {\n var _this2 = this;\n\n var item = document.createElement('span');\n item.tabIndex = '0';\n item.setAttribute('role', 'button');\n\n item.classList.add('ql-picker-item');\n if (option.hasAttribute('value')) {\n item.setAttribute('data-value', option.getAttribute('value'));\n }\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent);\n }\n item.addEventListener('click', function () {\n _this2.selectItem(item, true);\n });\n item.addEventListener('keydown', function (event) {\n switch (event.keyCode) {\n // Allows the \"Enter\" key to select an item\n case _keyboard2.default.keys.ENTER:\n _this2.selectItem(item, true);\n event.preventDefault();\n break;\n\n // Allows the \"Escape\" key to close the picker\n case _keyboard2.default.keys.ESCAPE:\n _this2.escape();\n event.preventDefault();\n break;\n default:\n }\n });\n\n return item;\n }\n }, {\n key: 'buildLabel',\n value: function buildLabel() {\n var label = document.createElement('span');\n label.classList.add('ql-picker-label');\n label.innerHTML = _dropdown2.default;\n label.tabIndex = '0';\n label.setAttribute('role', 'button');\n label.setAttribute('aria-expanded', 'false');\n this.container.appendChild(label);\n return label;\n }\n }, {\n key: 'buildOptions',\n value: function buildOptions() {\n var _this3 = this;\n\n var options = document.createElement('span');\n options.classList.add('ql-picker-options');\n\n // Don't want screen readers to read this until options are visible\n options.setAttribute('aria-hidden', 'true');\n options.tabIndex = '-1';\n\n // Need a unique id for aria-controls\n options.id = 'ql-picker-options-' + optionsCounter;\n optionsCounter += 1;\n this.label.setAttribute('aria-controls', options.id);\n\n this.options = options;\n\n [].slice.call(this.select.options).forEach(function (option) {\n var item = _this3.buildItem(option);\n options.appendChild(item);\n if (option.selected === true) {\n _this3.selectItem(item);\n }\n });\n this.container.appendChild(options);\n }\n }, {\n key: 'buildPicker',\n value: function buildPicker() {\n var _this4 = this;\n\n [].slice.call(this.select.attributes).forEach(function (item) {\n _this4.container.setAttribute(item.name, item.value);\n });\n this.container.classList.add('ql-picker');\n this.label = this.buildLabel();\n this.buildOptions();\n }\n }, {\n key: 'escape',\n value: function escape() {\n var _this5 = this;\n\n // Close menu and return focus to trigger label\n this.close();\n // Need setTimeout for accessibility to ensure that the browser executes\n // focus on the next process thread and after any DOM content changes\n setTimeout(function () {\n return _this5.label.focus();\n }, 1);\n }\n }, {\n key: 'close',\n value: function close() {\n this.container.classList.remove('ql-expanded');\n this.label.setAttribute('aria-expanded', 'false');\n this.options.setAttribute('aria-hidden', 'true');\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item) {\n var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var selected = this.container.querySelector('.ql-selected');\n if (item === selected) return;\n if (selected != null) {\n selected.classList.remove('ql-selected');\n }\n if (item == null) return;\n item.classList.add('ql-selected');\n this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n if (item.hasAttribute('data-value')) {\n this.label.setAttribute('data-value', item.getAttribute('data-value'));\n } else {\n this.label.removeAttribute('data-value');\n }\n if (item.hasAttribute('data-label')) {\n this.label.setAttribute('data-label', item.getAttribute('data-label'));\n } else {\n this.label.removeAttribute('data-label');\n }\n if (trigger) {\n if (typeof Event === 'function') {\n this.select.dispatchEvent(new Event('change'));\n } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n // IE11\n var event = document.createEvent('Event');\n event.initEvent('change', true, true);\n this.select.dispatchEvent(event);\n }\n this.close();\n }\n }\n }, {\n key: 'update',\n value: function update() {\n var option = void 0;\n if (this.select.selectedIndex > -1) {\n var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n option = this.select.options[this.select.selectedIndex];\n this.selectItem(item);\n } else {\n this.selectItem(null);\n }\n var isActive = option != null && option !== this.select.querySelector('option[selected]');\n this.label.classList.toggle('ql-active', isActive);\n }\n }]);\n\n return Picker;\n}();\n\nexports.default = Picker;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(16);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _cursor = __webpack_require__(24);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _scroll = __webpack_require__(22);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _clipboard = __webpack_require__(55);\n\nvar _clipboard2 = _interopRequireDefault(_clipboard);\n\nvar _history = __webpack_require__(42);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_quill2.default.register({\n 'blots/block': _block2.default,\n 'blots/block/embed': _block.BlockEmbed,\n 'blots/break': _break2.default,\n 'blots/container': _container2.default,\n 'blots/cursor': _cursor2.default,\n 'blots/embed': _embed2.default,\n 'blots/inline': _inline2.default,\n 'blots/scroll': _scroll2.default,\n 'blots/text': _text2.default,\n\n 'modules/clipboard': _clipboard2.default,\n 'modules/history': _history2.default,\n 'modules/keyboard': _keyboard2.default\n});\n\n_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\nexports.default = _quill2.default;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar ShadowBlot = /** @class */ (function () {\n function ShadowBlot(domNode) {\n this.domNode = domNode;\n // @ts-ignore\n this.domNode[Registry.DATA_KEY] = { blot: this };\n }\n Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n // Hack for accessing inherited static methods\n get: function () {\n return this.constructor;\n },\n enumerable: true,\n configurable: true\n });\n ShadowBlot.create = function (value) {\n if (this.tagName == null) {\n throw new Registry.ParchmentError('Blot definition missing tagName');\n }\n var node;\n if (Array.isArray(this.tagName)) {\n if (typeof value === 'string') {\n value = value.toUpperCase();\n if (parseInt(value).toString() === value) {\n value = parseInt(value);\n }\n }\n if (typeof value === 'number') {\n node = document.createElement(this.tagName[value - 1]);\n }\n else if (this.tagName.indexOf(value) > -1) {\n node = document.createElement(value);\n }\n else {\n node = document.createElement(this.tagName[0]);\n }\n }\n else {\n node = document.createElement(this.tagName);\n }\n if (this.className) {\n node.classList.add(this.className);\n }\n return node;\n };\n ShadowBlot.prototype.attach = function () {\n if (this.parent != null) {\n this.scroll = this.parent.scroll;\n }\n };\n ShadowBlot.prototype.clone = function () {\n var domNode = this.domNode.cloneNode(false);\n return Registry.create(domNode);\n };\n ShadowBlot.prototype.detach = function () {\n if (this.parent != null)\n this.parent.removeChild(this);\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY];\n };\n ShadowBlot.prototype.deleteAt = function (index, length) {\n var blot = this.isolate(index, length);\n blot.remove();\n };\n ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n var blot = this.isolate(index, length);\n if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n blot.wrap(name, value);\n }\n else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n var parent = Registry.create(this.statics.scope);\n blot.wrap(parent);\n parent.format(name, value);\n }\n };\n ShadowBlot.prototype.insertAt = function (index, value, def) {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n var ref = this.split(index);\n this.parent.insertBefore(blot, ref);\n };\n ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n if (refBlot === void 0) { refBlot = null; }\n if (this.parent != null) {\n this.parent.children.remove(this);\n }\n var refDomNode = null;\n parentBlot.children.insertBefore(this, refBlot);\n if (refBlot != null) {\n refDomNode = refBlot.domNode;\n }\n if (this.domNode.parentNode != parentBlot.domNode ||\n this.domNode.nextSibling != refDomNode) {\n parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n }\n this.parent = parentBlot;\n this.attach();\n };\n ShadowBlot.prototype.isolate = function (index, length) {\n var target = this.split(index);\n target.split(length);\n return target;\n };\n ShadowBlot.prototype.length = function () {\n return 1;\n };\n ShadowBlot.prototype.offset = function (root) {\n if (root === void 0) { root = this.parent; }\n if (this.parent == null || this == root)\n return 0;\n return this.parent.children.offset(this) + this.parent.offset(root);\n };\n ShadowBlot.prototype.optimize = function (context) {\n // TODO clean up once we use WeakMap\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY] != null) {\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY].mutations;\n }\n };\n ShadowBlot.prototype.remove = function () {\n if (this.domNode.parentNode != null) {\n this.domNode.parentNode.removeChild(this.domNode);\n }\n this.detach();\n };\n ShadowBlot.prototype.replace = function (target) {\n if (target.parent == null)\n return;\n target.parent.insertBefore(this, target.next);\n target.remove();\n };\n ShadowBlot.prototype.replaceWith = function (name, value) {\n var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n replacement.replace(this);\n return replacement;\n };\n ShadowBlot.prototype.split = function (index, force) {\n return index === 0 ? this : this.next;\n };\n ShadowBlot.prototype.update = function (mutations, context) {\n // Nothing to do by default\n };\n ShadowBlot.prototype.wrap = function (name, value) {\n var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n if (this.parent != null) {\n this.parent.insertBefore(wrapper, this.next);\n }\n wrapper.appendChild(this);\n return wrapper;\n };\n ShadowBlot.blotName = 'abstract';\n return ShadowBlot;\n}());\nexports.default = ShadowBlot;\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nvar class_1 = __webpack_require__(32);\nvar style_1 = __webpack_require__(33);\nvar Registry = __webpack_require__(1);\nvar AttributorStore = /** @class */ (function () {\n function AttributorStore(domNode) {\n this.attributes = {};\n this.domNode = domNode;\n this.build();\n }\n AttributorStore.prototype.attribute = function (attribute, value) {\n // verb\n if (value) {\n if (attribute.add(this.domNode, value)) {\n if (attribute.value(this.domNode) != null) {\n this.attributes[attribute.attrName] = attribute;\n }\n else {\n delete this.attributes[attribute.attrName];\n }\n }\n }\n else {\n attribute.remove(this.domNode);\n delete this.attributes[attribute.attrName];\n }\n };\n AttributorStore.prototype.build = function () {\n var _this = this;\n this.attributes = {};\n var attributes = attributor_1.default.keys(this.domNode);\n var classes = class_1.default.keys(this.domNode);\n var styles = style_1.default.keys(this.domNode);\n attributes\n .concat(classes)\n .concat(styles)\n .forEach(function (name) {\n var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n if (attr instanceof attributor_1.default) {\n _this.attributes[attr.attrName] = attr;\n }\n });\n };\n AttributorStore.prototype.copy = function (target) {\n var _this = this;\n Object.keys(this.attributes).forEach(function (key) {\n var value = _this.attributes[key].value(_this.domNode);\n target.format(key, value);\n });\n };\n AttributorStore.prototype.move = function (target) {\n var _this = this;\n this.copy(target);\n Object.keys(this.attributes).forEach(function (key) {\n _this.attributes[key].remove(_this.domNode);\n });\n this.attributes = {};\n };\n AttributorStore.prototype.values = function () {\n var _this = this;\n return Object.keys(this.attributes).reduce(function (attributes, name) {\n attributes[name] = _this.attributes[name].value(_this.domNode);\n return attributes;\n }, {});\n };\n return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction match(node, prefix) {\n var className = node.getAttribute('class') || '';\n return className.split(/\\s+/).filter(function (name) {\n return name.indexOf(prefix + \"-\") === 0;\n });\n}\nvar ClassAttributor = /** @class */ (function (_super) {\n __extends(ClassAttributor, _super);\n function ClassAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ClassAttributor.keys = function (node) {\n return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n return name\n .split('-')\n .slice(0, -1)\n .join('-');\n });\n };\n ClassAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n this.remove(node);\n node.classList.add(this.keyName + \"-\" + value);\n return true;\n };\n ClassAttributor.prototype.remove = function (node) {\n var matches = match(node, this.keyName);\n matches.forEach(function (name) {\n node.classList.remove(name);\n });\n if (node.classList.length === 0) {\n node.removeAttribute('class');\n }\n };\n ClassAttributor.prototype.value = function (node) {\n var result = match(node, this.keyName)[0] || '';\n var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n return this.canAdd(node, value) ? value : '';\n };\n return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(12);\nfunction camelize(name) {\n var parts = name.split('-');\n var rest = parts\n .slice(1)\n .map(function (part) {\n return part[0].toUpperCase() + part.slice(1);\n })\n .join('');\n return parts[0] + rest;\n}\nvar StyleAttributor = /** @class */ (function (_super) {\n __extends(StyleAttributor, _super);\n function StyleAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StyleAttributor.keys = function (node) {\n return (node.getAttribute('style') || '').split(';').map(function (value) {\n var arr = value.split(':');\n return arr[0].trim();\n });\n };\n StyleAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n // @ts-ignore\n node.style[camelize(this.keyName)] = value;\n return true;\n };\n StyleAttributor.prototype.remove = function (node) {\n // @ts-ignore\n node.style[camelize(this.keyName)] = '';\n if (!node.getAttribute('style')) {\n node.removeAttribute('style');\n }\n };\n StyleAttributor.prototype.value = function (node) {\n // @ts-ignore\n var value = node.style[camelize(this.keyName)];\n return this.canAdd(node, value) ? value : '';\n };\n return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Theme = function () {\n function Theme(quill, options) {\n _classCallCheck(this, Theme);\n\n this.quill = quill;\n this.options = options;\n this.modules = {};\n }\n\n _createClass(Theme, [{\n key: 'init',\n value: function init() {\n var _this = this;\n\n Object.keys(this.options.modules).forEach(function (name) {\n if (_this.modules[name] == null) {\n _this.addModule(name);\n }\n });\n }\n }, {\n key: 'addModule',\n value: function addModule(name) {\n var moduleClass = this.quill.constructor.import('modules/' + name);\n this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n return this.modules[name];\n }\n }]);\n\n return Theme;\n}();\n\nTheme.DEFAULTS = {\n modules: {}\n};\nTheme.themes = {\n 'default': Theme\n};\n\nexports.default = Theme;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _text = __webpack_require__(7);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GUARD_TEXT = '\\uFEFF';\n\nvar Embed = function (_Parchment$Embed) {\n _inherits(Embed, _Parchment$Embed);\n\n function Embed(node) {\n _classCallCheck(this, Embed);\n\n var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node));\n\n _this.contentNode = document.createElement('span');\n _this.contentNode.setAttribute('contenteditable', false);\n [].slice.call(_this.domNode.childNodes).forEach(function (childNode) {\n _this.contentNode.appendChild(childNode);\n });\n _this.leftGuard = document.createTextNode(GUARD_TEXT);\n _this.rightGuard = document.createTextNode(GUARD_TEXT);\n _this.domNode.appendChild(_this.leftGuard);\n _this.domNode.appendChild(_this.contentNode);\n _this.domNode.appendChild(_this.rightGuard);\n return _this;\n }\n\n _createClass(Embed, [{\n key: 'index',\n value: function index(node, offset) {\n if (node === this.leftGuard) return 0;\n if (node === this.rightGuard) return 1;\n return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'restore',\n value: function restore(node) {\n var range = void 0,\n textNode = void 0;\n var text = node.data.split(GUARD_TEXT).join('');\n if (node === this.leftGuard) {\n if (this.prev instanceof _text2.default) {\n var prevLength = this.prev.length();\n this.prev.insertAt(prevLength, text);\n range = {\n startNode: this.prev.domNode,\n startOffset: prevLength + text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n } else if (node === this.rightGuard) {\n if (this.next instanceof _text2.default) {\n this.next.insertAt(0, text);\n range = {\n startNode: this.next.domNode,\n startOffset: text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2.default.create(textNode), this.next);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n }\n node.data = GUARD_TEXT;\n return range;\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n mutations.forEach(function (mutation) {\n if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {\n var range = _this2.restore(mutation.target);\n if (range) context.range = range;\n }\n });\n }\n }]);\n\n return Embed;\n}(_parchment2.default.Embed);\n\nexports.default = Embed;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\n\nvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\nvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\nvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\nexports.AlignAttribute = AlignAttribute;\nexports.AlignClass = AlignClass;\nexports.AlignStyle = AlignStyle;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BackgroundStyle = exports.BackgroundClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _color = __webpack_require__(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.BackgroundClass = BackgroundClass;\nexports.BackgroundStyle = BackgroundStyle;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['rtl']\n};\n\nvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\nvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\nvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\nexports.DirectionAttribute = DirectionAttribute;\nexports.DirectionClass = DirectionClass;\nexports.DirectionStyle = DirectionStyle;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FontClass = exports.FontStyle = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar config = {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['serif', 'monospace']\n};\n\nvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\nvar FontStyleAttributor = function (_Parchment$Attributor) {\n _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n function FontStyleAttributor() {\n _classCallCheck(this, FontStyleAttributor);\n\n return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n }\n\n _createClass(FontStyleAttributor, [{\n key: 'value',\n value: function value(node) {\n return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n }\n }]);\n\n return FontStyleAttributor;\n}(_parchment2.default.Attributor.Style);\n\nvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexports.FontStyle = FontStyle;\nexports.FontClass = FontClass;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SizeStyle = exports.SizeClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n});\nvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n});\n\nexports.SizeClass = SizeClass;\nexports.SizeStyle = SizeStyle;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n 'align': {\n '': __webpack_require__(76),\n 'center': __webpack_require__(77),\n 'right': __webpack_require__(78),\n 'justify': __webpack_require__(79)\n },\n 'background': __webpack_require__(80),\n 'blockquote': __webpack_require__(81),\n 'bold': __webpack_require__(82),\n 'clean': __webpack_require__(83),\n 'code': __webpack_require__(58),\n 'code-block': __webpack_require__(58),\n 'color': __webpack_require__(84),\n 'direction': {\n '': __webpack_require__(85),\n 'rtl': __webpack_require__(86)\n },\n 'float': {\n 'center': __webpack_require__(87),\n 'full': __webpack_require__(88),\n 'left': __webpack_require__(89),\n 'right': __webpack_require__(90)\n },\n 'formula': __webpack_require__(91),\n 'header': {\n '1': __webpack_require__(92),\n '2': __webpack_require__(93)\n },\n 'italic': __webpack_require__(94),\n 'image': __webpack_require__(95),\n 'indent': {\n '+1': __webpack_require__(96),\n '-1': __webpack_require__(97)\n },\n 'link': __webpack_require__(98),\n 'list': {\n 'ordered': __webpack_require__(99),\n 'bullet': __webpack_require__(100),\n 'check': __webpack_require__(101)\n },\n 'script': {\n 'sub': __webpack_require__(102),\n 'super': __webpack_require__(103)\n },\n 'strike': __webpack_require__(104),\n 'underline': __webpack_require__(105),\n 'video': __webpack_require__(106)\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLastChangeIndex = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar History = function (_Module) {\n _inherits(History, _Module);\n\n function History(quill, options) {\n _classCallCheck(this, History);\n\n var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n _this.lastRecorded = 0;\n _this.ignoreChange = false;\n _this.clear();\n _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n _this.record(delta, oldDelta);\n } else {\n _this.transform(delta);\n }\n });\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n if (/Win/i.test(navigator.platform)) {\n _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n }\n return _this;\n }\n\n _createClass(History, [{\n key: 'change',\n value: function change(source, dest) {\n if (this.stack[source].length === 0) return;\n var delta = this.stack[source].pop();\n this.stack[dest].push(delta);\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n this.ignoreChange = false;\n var index = getLastChangeIndex(delta[source]);\n this.quill.setSelection(index);\n }\n }, {\n key: 'clear',\n value: function clear() {\n this.stack = { undo: [], redo: [] };\n }\n }, {\n key: 'cutoff',\n value: function cutoff() {\n this.lastRecorded = 0;\n }\n }, {\n key: 'record',\n value: function record(changeDelta, oldDelta) {\n if (changeDelta.ops.length === 0) return;\n this.stack.redo = [];\n var undoDelta = this.quill.getContents().diff(oldDelta);\n var timestamp = Date.now();\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n var delta = this.stack.undo.pop();\n undoDelta = undoDelta.compose(delta.undo);\n changeDelta = delta.redo.compose(changeDelta);\n } else {\n this.lastRecorded = timestamp;\n }\n this.stack.undo.push({\n redo: changeDelta,\n undo: undoDelta\n });\n if (this.stack.undo.length > this.options.maxStack) {\n this.stack.undo.shift();\n }\n }\n }, {\n key: 'redo',\n value: function redo() {\n this.change('redo', 'undo');\n }\n }, {\n key: 'transform',\n value: function transform(delta) {\n this.stack.undo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n this.stack.redo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n }\n }, {\n key: 'undo',\n value: function undo() {\n this.change('undo', 'redo');\n }\n }]);\n\n return History;\n}(_module2.default);\n\nHistory.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n var lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n if (lastOp.insert != null) {\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n }\n if (lastOp.attributes != null) {\n return Object.keys(lastOp.attributes).some(function (attr) {\n return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n });\n }\n return false;\n}\n\nfunction getLastChangeIndex(delta) {\n var deleteLength = delta.reduce(function (length, op) {\n length += op.delete || 0;\n return length;\n }, 0);\n var changeIndex = delta.length() - deleteLength;\n if (endsWithNewlineChange(delta)) {\n changeIndex -= 1;\n }\n return changeIndex;\n}\n\nexports.default = History;\nexports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BaseTooltip = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _keyboard = __webpack_require__(23);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _theme = __webpack_require__(34);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ALIGNS = [false, 'center', 'right', 'justify'];\n\nvar COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\n\nvar FONTS = [false, 'serif', 'monospace'];\n\nvar HEADERS = ['1', '2', '3', false];\n\nvar SIZES = ['small', false, 'large', 'huge'];\n\nvar BaseTheme = function (_Theme) {\n _inherits(BaseTheme, _Theme);\n\n function BaseTheme(quill, options) {\n _classCallCheck(this, BaseTheme);\n\n var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\n var listener = function listener(e) {\n if (!document.body.contains(quill.root)) {\n return document.body.removeEventListener('click', listener);\n }\n if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n _this.tooltip.hide();\n }\n if (_this.pickers != null) {\n _this.pickers.forEach(function (picker) {\n if (!picker.container.contains(e.target)) {\n picker.close();\n }\n });\n }\n };\n quill.emitter.listenDOM('click', document.body, listener);\n return _this;\n }\n\n _createClass(BaseTheme, [{\n key: 'addModule',\n value: function addModule(name) {\n var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n if (name === 'toolbar') {\n this.extendToolbar(module);\n }\n return module;\n }\n }, {\n key: 'buildButtons',\n value: function buildButtons(buttons, icons) {\n buttons.forEach(function (button) {\n var className = button.getAttribute('class') || '';\n className.split(/\\s+/).forEach(function (name) {\n if (!name.startsWith('ql-')) return;\n name = name.slice('ql-'.length);\n if (icons[name] == null) return;\n if (name === 'direction') {\n button.innerHTML = icons[name][''] + icons[name]['rtl'];\n } else if (typeof icons[name] === 'string') {\n button.innerHTML = icons[name];\n } else {\n var value = button.value || '';\n if (value != null && icons[name][value]) {\n button.innerHTML = icons[name][value];\n }\n }\n });\n });\n }\n }, {\n key: 'buildPickers',\n value: function buildPickers(selects, icons) {\n var _this2 = this;\n\n this.pickers = selects.map(function (select) {\n if (select.classList.contains('ql-align')) {\n if (select.querySelector('option') == null) {\n fillSelect(select, ALIGNS);\n }\n return new _iconPicker2.default(select, icons.align);\n } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n var format = select.classList.contains('ql-background') ? 'background' : 'color';\n if (select.querySelector('option') == null) {\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n }\n return new _colorPicker2.default(select, icons[format]);\n } else {\n if (select.querySelector('option') == null) {\n if (select.classList.contains('ql-font')) {\n fillSelect(select, FONTS);\n } else if (select.classList.contains('ql-header')) {\n fillSelect(select, HEADERS);\n } else if (select.classList.contains('ql-size')) {\n fillSelect(select, SIZES);\n }\n }\n return new _picker2.default(select);\n }\n });\n var update = function update() {\n _this2.pickers.forEach(function (picker) {\n picker.update();\n });\n };\n this.quill.on(_emitter2.default.events.EDITOR_CHANGE, update);\n }\n }]);\n\n return BaseTheme;\n}(_theme2.default);\n\nBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n formula: function formula() {\n this.quill.theme.tooltip.edit('formula');\n },\n image: function image() {\n var _this3 = this;\n\n var fileInput = this.container.querySelector('input.ql-image[type=file]');\n if (fileInput == null) {\n fileInput = document.createElement('input');\n fileInput.setAttribute('type', 'file');\n fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n fileInput.classList.add('ql-image');\n fileInput.addEventListener('change', function () {\n if (fileInput.files != null && fileInput.files[0] != null) {\n var reader = new FileReader();\n reader.onload = function (e) {\n var range = _this3.quill.getSelection(true);\n _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n _this3.quill.setSelection(range.index + 1, _emitter2.default.sources.SILENT);\n fileInput.value = \"\";\n };\n reader.readAsDataURL(fileInput.files[0]);\n }\n });\n this.container.appendChild(fileInput);\n }\n fileInput.click();\n },\n video: function video() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n});\n\nvar BaseTooltip = function (_Tooltip) {\n _inherits(BaseTooltip, _Tooltip);\n\n function BaseTooltip(quill, boundsContainer) {\n _classCallCheck(this, BaseTooltip);\n\n var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\n _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n _this4.listen();\n return _this4;\n }\n\n _createClass(BaseTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this5 = this;\n\n this.textbox.addEventListener('keydown', function (event) {\n if (_keyboard2.default.match(event, 'enter')) {\n _this5.save();\n event.preventDefault();\n } else if (_keyboard2.default.match(event, 'escape')) {\n _this5.cancel();\n event.preventDefault();\n }\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.hide();\n }\n }, {\n key: 'edit',\n value: function edit() {\n var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n this.root.classList.remove('ql-hidden');\n this.root.classList.add('ql-editing');\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\n }\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\n this.textbox.select();\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n this.root.setAttribute('data-mode', mode);\n }\n }, {\n key: 'restoreFocus',\n value: function restoreFocus() {\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.quill.focus();\n this.quill.scrollingContainer.scrollTop = scrollTop;\n }\n }, {\n key: 'save',\n value: function save() {\n var value = this.textbox.value;\n switch (this.root.getAttribute('data-mode')) {\n case 'link':\n {\n var scrollTop = this.quill.root.scrollTop;\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, _emitter2.default.sources.USER);\n }\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n case 'video':\n {\n value = extractVideoUrl(value);\n } // eslint-disable-next-line no-fallthrough\n case 'formula':\n {\n if (!value) break;\n var range = this.quill.getSelection(true);\n if (range != null) {\n var index = range.index + range.length;\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n }\n this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n }\n break;\n }\n default:\n }\n this.textbox.value = '';\n this.hide();\n }\n }]);\n\n return BaseTooltip;\n}(_tooltip2.default);\n\nfunction extractVideoUrl(url) {\n var match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n if (match) {\n return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n }\n if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) {\n // eslint-disable-line no-cond-assign\n return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n }\n return url;\n}\n\nfunction fillSelect(select, values) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n values.forEach(function (value) {\n var option = document.createElement('option');\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', value);\n }\n select.appendChild(option);\n });\n}\n\nexports.BaseTooltip = BaseTooltip;\nexports.default = BaseTheme;\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = /** @class */ (function () {\n function LinkedList() {\n this.head = this.tail = null;\n this.length = 0;\n }\n LinkedList.prototype.append = function () {\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n this.insertBefore(nodes[0], null);\n if (nodes.length > 1) {\n this.append.apply(this, nodes.slice(1));\n }\n };\n LinkedList.prototype.contains = function (node) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n if (cur === node)\n return true;\n }\n return false;\n };\n LinkedList.prototype.insertBefore = function (node, refNode) {\n if (!node)\n return;\n node.next = refNode;\n if (refNode != null) {\n node.prev = refNode.prev;\n if (refNode.prev != null) {\n refNode.prev.next = node;\n }\n refNode.prev = node;\n if (refNode === this.head) {\n this.head = node;\n }\n }\n else if (this.tail != null) {\n this.tail.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n else {\n node.prev = null;\n this.head = this.tail = node;\n }\n this.length += 1;\n };\n LinkedList.prototype.offset = function (target) {\n var index = 0, cur = this.head;\n while (cur != null) {\n if (cur === target)\n return index;\n index += cur.length();\n cur = cur.next;\n }\n return -1;\n };\n LinkedList.prototype.remove = function (node) {\n if (!this.contains(node))\n return;\n if (node.prev != null)\n node.prev.next = node.next;\n if (node.next != null)\n node.next.prev = node.prev;\n if (node === this.head)\n this.head = node.next;\n if (node === this.tail)\n this.tail = node.prev;\n this.length -= 1;\n };\n LinkedList.prototype.iterator = function (curNode) {\n if (curNode === void 0) { curNode = this.head; }\n // TODO use yield when we can\n return function () {\n var ret = curNode;\n if (curNode != null)\n curNode = curNode.next;\n return ret;\n };\n };\n LinkedList.prototype.find = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var cur, next = this.iterator();\n while ((cur = next())) {\n var length = cur.length();\n if (index < length ||\n (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {\n return [cur, index];\n }\n index -= length;\n }\n return [null, 0];\n };\n LinkedList.prototype.forEach = function (callback) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n callback(cur);\n }\n };\n LinkedList.prototype.forEachAt = function (index, length, callback) {\n if (length <= 0)\n return;\n var _a = this.find(index), startNode = _a[0], offset = _a[1];\n var cur, curIndex = index - offset, next = this.iterator(startNode);\n while ((cur = next()) && curIndex < index + length) {\n var curLength = cur.length();\n if (index > curIndex) {\n callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n }\n else {\n callback(cur, 0, Math.min(curLength, index + length - curIndex));\n }\n curIndex += curLength;\n }\n };\n LinkedList.prototype.map = function (callback) {\n return this.reduce(function (memo, cur) {\n memo.push(callback(cur));\n return memo;\n }, []);\n };\n LinkedList.prototype.reduce = function (callback, memo) {\n var cur, next = this.iterator();\n while ((cur = next())) {\n memo = callback(memo, cur);\n }\n return memo;\n };\n return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(17);\nvar Registry = __webpack_require__(1);\nvar OBSERVER_CONFIG = {\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = /** @class */ (function (_super) {\n __extends(ScrollBlot, _super);\n function ScrollBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.scroll = _this;\n _this.observer = new MutationObserver(function (mutations) {\n _this.update(mutations);\n });\n _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n _this.attach();\n return _this;\n }\n ScrollBlot.prototype.detach = function () {\n _super.prototype.detach.call(this);\n this.observer.disconnect();\n };\n ScrollBlot.prototype.deleteAt = function (index, length) {\n this.update();\n if (index === 0 && length === this.length()) {\n this.children.forEach(function (child) {\n child.remove();\n });\n }\n else {\n _super.prototype.deleteAt.call(this, index, length);\n }\n };\n ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n this.update();\n _super.prototype.formatAt.call(this, index, length, name, value);\n };\n ScrollBlot.prototype.insertAt = function (index, value, def) {\n this.update();\n _super.prototype.insertAt.call(this, index, value, def);\n };\n ScrollBlot.prototype.optimize = function (mutations, context) {\n var _this = this;\n if (mutations === void 0) { mutations = []; }\n if (context === void 0) { context = {}; }\n _super.prototype.optimize.call(this, context);\n // We must modify mutations directly, cannot make copy and then modify\n var records = [].slice.call(this.observer.takeRecords());\n // Array.push currently seems to be implemented by a non-tail recursive function\n // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n while (records.length > 0)\n mutations.push(records.pop());\n // TODO use WeakMap\n var mark = function (blot, markParent) {\n if (markParent === void 0) { markParent = true; }\n if (blot == null || blot === _this)\n return;\n if (blot.domNode.parentNode == null)\n return;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [];\n }\n if (markParent)\n mark(blot.parent);\n };\n var optimize = function (blot) {\n // Post-order traversal\n if (\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY] == null ||\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations == null) {\n return;\n }\n if (blot instanceof container_1.default) {\n blot.children.forEach(optimize);\n }\n blot.optimize(context);\n };\n var remaining = mutations;\n for (var i = 0; remaining.length > 0; i += 1) {\n if (i >= MAX_OPTIMIZE_ITERATIONS) {\n throw new Error('[Parchment] Maximum optimize iterations reached');\n }\n remaining.forEach(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return;\n if (blot.domNode === mutation.target) {\n if (mutation.type === 'childList') {\n mark(Registry.find(mutation.previousSibling, false));\n [].forEach.call(mutation.addedNodes, function (node) {\n var child = Registry.find(node, false);\n mark(child, false);\n if (child instanceof container_1.default) {\n child.children.forEach(function (grandChild) {\n mark(grandChild, false);\n });\n }\n });\n }\n else if (mutation.type === 'attributes') {\n mark(blot.prev);\n }\n }\n mark(blot);\n });\n this.children.forEach(optimize);\n remaining = [].slice.call(this.observer.takeRecords());\n records = remaining.slice();\n while (records.length > 0)\n mutations.push(records.pop());\n }\n };\n ScrollBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (context === void 0) { context = {}; }\n mutations = mutations || this.observer.takeRecords();\n // TODO use WeakMap\n mutations\n .map(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return null;\n // @ts-ignore\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n return blot;\n }\n else {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n return null;\n }\n })\n .forEach(function (blot) {\n if (blot == null ||\n blot === _this ||\n //@ts-ignore\n blot.domNode[Registry.DATA_KEY] == null)\n return;\n // @ts-ignore\n blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n });\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY].mutations != null) {\n // @ts-ignore\n _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n }\n this.optimize(mutations, context);\n };\n ScrollBlot.blotName = 'scroll';\n ScrollBlot.defaultChild = 'block';\n ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n ScrollBlot.tagName = 'DIV';\n return ScrollBlot;\n}(container_1.default));\nexports.default = ScrollBlot;\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length)\n return false;\n // @ts-ignore\n for (var prop in obj1) {\n // @ts-ignore\n if (obj1[prop] !== obj2[prop])\n return false;\n }\n return true;\n}\nvar InlineBlot = /** @class */ (function (_super) {\n __extends(InlineBlot, _super);\n function InlineBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InlineBlot.formats = function (domNode) {\n if (domNode.tagName === InlineBlot.tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n InlineBlot.prototype.format = function (name, value) {\n var _this = this;\n if (name === this.statics.blotName && !value) {\n this.children.forEach(function (child) {\n if (!(child instanceof format_1.default)) {\n child = child.wrap(InlineBlot.blotName, true);\n }\n _this.attributes.copy(child);\n });\n this.unwrap();\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n InlineBlot.prototype.formatAt = function (index, length, name, value) {\n if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n var blot = this.isolate(index, length);\n blot.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n InlineBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n var formats = this.formats();\n if (Object.keys(formats).length === 0) {\n return this.unwrap(); // unformatted span\n }\n var next = this.next;\n if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n next.moveChildren(this);\n next.remove();\n }\n };\n InlineBlot.blotName = 'inline';\n InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n InlineBlot.tagName = 'SPAN';\n return InlineBlot;\n}(format_1.default));\nexports.default = InlineBlot;\n\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(18);\nvar Registry = __webpack_require__(1);\nvar BlockBlot = /** @class */ (function (_super) {\n __extends(BlockBlot, _super);\n function BlockBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BlockBlot.formats = function (domNode) {\n var tagName = Registry.query(BlockBlot.blotName).tagName;\n if (domNode.tagName === tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n BlockBlot.prototype.format = function (name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n return;\n }\n else if (name === this.statics.blotName && !value) {\n this.replaceWith(BlockBlot.blotName);\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n BlockBlot.prototype.formatAt = function (index, length, name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n BlockBlot.prototype.insertAt = function (index, value, def) {\n if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n // Insert text or inline\n _super.prototype.insertAt.call(this, index, value, def);\n }\n else {\n var after = this.split(index);\n var blot = Registry.create(value, def);\n after.parent.insertBefore(blot, after);\n }\n };\n BlockBlot.prototype.update = function (mutations, context) {\n if (navigator.userAgent.match(/Trident/)) {\n this.build();\n }\n else {\n _super.prototype.update.call(this, mutations, context);\n }\n };\n BlockBlot.blotName = 'block';\n BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n BlockBlot.tagName = 'P';\n return BlockBlot;\n}(format_1.default));\nexports.default = BlockBlot;\n\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar EmbedBlot = /** @class */ (function (_super) {\n __extends(EmbedBlot, _super);\n function EmbedBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EmbedBlot.formats = function (domNode) {\n return undefined;\n };\n EmbedBlot.prototype.format = function (name, value) {\n // super.formatAt wraps, which is what we want in general,\n // but this allows subclasses to overwrite for formats\n // that just apply to particular embeds\n _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n };\n EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n if (index === 0 && length === this.length()) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n EmbedBlot.prototype.formats = function () {\n return this.statics.formats(this.domNode);\n };\n return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(19);\nvar Registry = __webpack_require__(1);\nvar TextBlot = /** @class */ (function (_super) {\n __extends(TextBlot, _super);\n function TextBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.text = _this.statics.value(_this.domNode);\n return _this;\n }\n TextBlot.create = function (value) {\n return document.createTextNode(value);\n };\n TextBlot.value = function (domNode) {\n var text = domNode.data;\n // @ts-ignore\n if (text['normalize'])\n text = text['normalize']();\n return text;\n };\n TextBlot.prototype.deleteAt = function (index, length) {\n this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n };\n TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n return -1;\n };\n TextBlot.prototype.insertAt = function (index, value, def) {\n if (def == null) {\n this.text = this.text.slice(0, index) + value + this.text.slice(index);\n this.domNode.data = this.text;\n }\n else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n TextBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n this.text = this.statics.value(this.domNode);\n if (this.text.length === 0) {\n this.remove();\n }\n else if (this.next instanceof TextBlot && this.next.prev === this) {\n this.insertAt(this.length(), this.next.value());\n this.next.remove();\n }\n };\n TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return [this.domNode, index];\n };\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = Registry.create(this.domNode.splitText(index));\n this.parent.insertBefore(after, this.next);\n this.text = this.statics.value(this.domNode);\n return after;\n };\n TextBlot.prototype.update = function (mutations, context) {\n var _this = this;\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this.domNode;\n })) {\n this.text = this.statics.value(this.domNode);\n }\n };\n TextBlot.prototype.value = function () {\n return this.text;\n };\n TextBlot.blotName = 'text';\n TextBlot.scope = Registry.Scope.INLINE_BLOT;\n return TextBlot;\n}(leaf_1.default));\nexports.default = TextBlot;\n\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n var _toggle = DOMTokenList.prototype.toggle;\n DOMTokenList.prototype.toggle = function (token, force) {\n if (arguments.length > 1 && !this.contains(token) === !force) {\n return force;\n } else {\n return _toggle.call(this, token);\n }\n };\n}\n\nif (!String.prototype.startsWith) {\n String.prototype.startsWith = function (searchString, position) {\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n}\n\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function (searchString, position) {\n var subjectString = this.toString();\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n}\n\nif (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, \"find\", {\n value: function value(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n return undefined;\n }\n });\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Disable resizing in Firefox\n document.execCommand(\"enableObjectResizing\", false, false);\n // Disable automatic linkifying in IE11\n document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\n/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\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 * http://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/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2, cursor_pos) {\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\n }\n\n // Check cursor_pos within bounds\n if (cursor_pos < 0 || text1.length < cursor_pos) {\n cursor_pos = null;\n }\n\n // Trim off common prefix (speedup).\n var commonlength = diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs);\n if (cursor_pos != null) {\n diffs = fix_cursor(diffs, cursor_pos);\n }\n diffs = fix_emoji(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL,\n text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert,\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete,\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert, [DIFF_DELETE, text_delete],\n [DIFF_INSERT, text_insert]);\n }\n pointer = pointer - count_delete - count_insert +\n (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABAC -> ABAC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\n/*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n if (cursor_pos === 0) {\n return [DIFF_EQUAL, diffs];\n }\n for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n var d = diffs[i];\n if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n var next_pos = current_pos + d[1].length;\n if (cursor_pos === next_pos) {\n return [i + 1, diffs];\n } else if (cursor_pos < next_pos) {\n // copy to prevent side effects\n diffs = diffs.slice();\n // split d into two diff changes\n var split_pos = cursor_pos - current_pos;\n var d_left = [d[0], d[1].slice(0, split_pos)];\n var d_right = [d[0], d[1].slice(split_pos)];\n diffs.splice(i, 1, d_left, d_right);\n return [i + 1, diffs];\n } else {\n current_pos = next_pos;\n }\n }\n }\n throw new Error('cursor_pos is out of bounds!')\n}\n\n/*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n * Check if a naive shift is possible:\n * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n * Case 2)\n * Check if the following shifts are possible:\n * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n * ^ ^\n * d d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\nfunction fix_cursor (diffs, cursor_pos) {\n var norm = cursor_normalize_diff(diffs, cursor_pos);\n var ndiffs = norm[1];\n var cursor_pointer = norm[0];\n var d = ndiffs[cursor_pointer];\n var d_next = ndiffs[cursor_pointer + 1];\n\n if (d == null) {\n // Text was deleted from end of original string,\n // cursor is now out of bounds in new string\n return diffs;\n } else if (d[0] !== DIFF_EQUAL) {\n // A modification happened at the cursor location.\n // This is the expected outcome, so we can return the original diff.\n return diffs;\n } else {\n if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n // Case 1)\n // It is possible to perform a naive shift\n ndiffs.splice(cursor_pointer, 2, d_next, d)\n return merge_tuples(ndiffs, cursor_pointer, 2)\n } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n // Case 2)\n // d[1] is a prefix of d_next[1]\n // We can assume that d_next[0] !== 0, since d[0] === 0\n // Shift edit locations..\n ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n var suffix = d_next[1].slice(d[1].length);\n if (suffix.length > 0) {\n ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n }\n return merge_tuples(ndiffs, cursor_pointer, 3)\n } else {\n // Not possible to perform any modification\n return diffs;\n }\n }\n}\n\n/*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n * '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\nfunction fix_emoji (diffs) {\n var compact = false;\n var starts_with_pair_end = function(str) {\n return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n }\n var ends_with_pair_start = function(str) {\n return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\n }\n for (var i = 2; i < diffs.length; i += 1) {\n if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\n diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\n diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n compact = true;\n\n diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\n diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\n\n diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\n }\n }\n if (!compact) {\n return diffs;\n }\n var fixed_diffs = [];\n for (var i = 0; i < diffs.length; i += 1) {\n if (diffs[i][1].length > 0) {\n fixed_diffs.push(diffs[i]);\n }\n }\n return fixed_diffs;\n}\n\n/*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\nfunction merge_tuples (diffs, start, length) {\n // Check from (start-1) to (start+length).\n for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n if (i + 1 < diffs.length) {\n var left_d = diffs[i];\n var right_d = diffs[i+1];\n if (left_d[0] === right_d[1]) {\n diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n }\n }\n }\n return diffs;\n}\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\nexports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\nvar supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend2 = __webpack_require__(3);\n\nvar _extend3 = _interopRequireDefault(_extend2);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _align = __webpack_require__(36);\n\nvar _background = __webpack_require__(37);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _color = __webpack_require__(26);\n\nvar _direction = __webpack_require__(38);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:clipboard');\n\nvar DOM_KEY = '__ql-matcher';\n\nvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\nvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar Clipboard = function (_Module) {\n _inherits(Clipboard, _Module);\n\n function Clipboard(quill, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n _this.container = _this.quill.addContainer('ql-clipboard');\n _this.container.setAttribute('contenteditable', true);\n _this.container.setAttribute('tabindex', -1);\n _this.matchers = [];\n CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n selector = _ref2[0],\n matcher = _ref2[1];\n\n if (!options.matchVisual && matcher === matchSpacing) return;\n _this.addMatcher(selector, matcher);\n });\n return _this;\n }\n\n _createClass(Clipboard, [{\n key: 'addMatcher',\n value: function addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n }, {\n key: 'convert',\n value: function convert(html) {\n if (typeof html === 'string') {\n this.container.innerHTML = html.replace(/\\>\\r?\\n +\\<'); // Remove spaces between tags\n return this.convert();\n }\n var formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n if (formats[_code2.default.blotName]) {\n var text = this.container.innerText;\n this.container.innerHTML = '';\n return new _quillDelta2.default().insert(text, _defineProperty({}, _code2.default.blotName, formats[_code2.default.blotName]));\n }\n\n var _prepareMatching = this.prepareMatching(),\n _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n elementMatchers = _prepareMatching2[0],\n textMatchers = _prepareMatching2[1];\n\n var delta = traverse(this.container, elementMatchers, textMatchers);\n // Remove trailing newline\n if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n }\n debug.log('convert', this.container.innerHTML, delta);\n this.container.innerHTML = '';\n return delta;\n }\n }, {\n key: 'dangerouslyPasteHTML',\n value: function dangerouslyPasteHTML(index, html) {\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n if (typeof index === 'string') {\n this.quill.setContents(this.convert(index), html);\n this.quill.setSelection(0, _quill2.default.sources.SILENT);\n } else {\n var paste = this.convert(html);\n this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT);\n }\n }\n }, {\n key: 'onPaste',\n value: function onPaste(e) {\n var _this2 = this;\n\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n var range = this.quill.getSelection();\n var delta = new _quillDelta2.default().retain(range.index);\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.container.focus();\n this.quill.selection.update(_quill2.default.sources.SILENT);\n setTimeout(function () {\n delta = delta.concat(_this2.convert()).delete(range.length);\n _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n // range.length contributes to delta.length()\n _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n _this2.quill.scrollingContainer.scrollTop = scrollTop;\n _this2.quill.focus();\n }, 1);\n }\n }, {\n key: 'prepareMatching',\n value: function prepareMatching() {\n var _this3 = this;\n\n var elementMatchers = [],\n textMatchers = [];\n this.matchers.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n selector = _pair[0],\n matcher = _pair[1];\n\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n default:\n [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n // TODO use weakmap\n node[DOM_KEY] = node[DOM_KEY] || [];\n node[DOM_KEY].push(matcher);\n });\n break;\n }\n });\n return [elementMatchers, textMatchers];\n }\n }]);\n\n return Clipboard;\n}(_module2.default);\n\nClipboard.DEFAULTS = {\n matchers: [],\n matchVisual: true\n};\n\nfunction applyFormat(delta, format, value) {\n if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {\n return Object.keys(format).reduce(function (delta, key) {\n return applyFormat(delta, key, format[key]);\n }, delta);\n } else {\n return delta.reduce(function (delta, op) {\n if (op.attributes && op.attributes[format]) {\n return delta.push(op);\n } else {\n return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes));\n }\n }, new _quillDelta2.default());\n }\n}\n\nfunction computeStyle(node) {\n if (node.nodeType !== Node.ELEMENT_NODE) return {};\n var DOM_KEY = '__ql-computed-style';\n return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n var endText = \"\";\n for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n var op = delta.ops[i];\n if (typeof op.insert !== 'string') break;\n endText = op.insert + endText;\n }\n return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node) {\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\n var style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) {\n // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce(function (delta, matcher) {\n return matcher(node, delta);\n }, new _quillDelta2.default());\n } else if (node.nodeType === node.ELEMENT_NODE) {\n return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n if (childNode.nodeType === node.ELEMENT_NODE) {\n childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n }\n return delta.concat(childrenDelta);\n }, new _quillDelta2.default());\n } else {\n return new _quillDelta2.default();\n }\n}\n\nfunction matchAlias(format, node, delta) {\n return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n var classes = _parchment2.default.Attributor.Class.keys(node);\n var styles = _parchment2.default.Attributor.Style.keys(node);\n var formats = {};\n attributes.concat(classes).concat(styles).forEach(function (name) {\n var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n attr = STYLE_ATTRIBUTORS[name];\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n return delta;\n}\n\nfunction matchBlot(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null) return delta;\n if (match.prototype instanceof _parchment2.default.Embed) {\n var embed = {};\n var value = match.value(node);\n if (value != null) {\n embed[match.blotName] = value;\n delta = new _quillDelta2.default().insert(embed, match.formats(node));\n }\n } else if (typeof match.formats === 'function') {\n delta = applyFormat(delta, match.blotName, match.formats(node));\n }\n return delta;\n}\n\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchIgnore() {\n return new _quillDelta2.default();\n}\n\nfunction matchIndent(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n var indent = -1,\n parent = node.parentNode;\n while (!parent.classList.contains('ql-clipboard')) {\n if ((_parchment2.default.query(parent) || {}).blotName === 'list') {\n indent += 1;\n }\n parent = parent.parentNode;\n }\n if (indent <= 0) return delta;\n return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent }));\n}\n\nfunction matchNewline(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchStyles(node, delta) {\n var formats = {};\n var style = node.style || {};\n if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n formats.italic = true;\n }\n if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) {\n formats.bold = true;\n }\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n if (parseFloat(style.textIndent || 0) > 0) {\n // Could be 0.5in\n delta = new _quillDelta2.default().insert('\\t').concat(delta);\n }\n return delta;\n}\n\nfunction matchText(node, delta) {\n var text = node.data;\n // Word represents empty line with  \n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n return delta;\n }\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n // eslint-disable-next-line func-style\n var replacer = function replacer(collapse, match) {\n match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n return match.length < 1 && collapse ? ' ' : match;\n };\n text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n return delta.insert(text);\n}\n\nexports.default = Clipboard;\nexports.matchAttributor = matchAttributor;\nexports.matchBlot = matchBlot;\nexports.matchNewline = matchNewline;\nexports.matchSpacing = matchSpacing;\nexports.matchText = matchText;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Bold = function (_Inline) {\n _inherits(Bold, _Inline);\n\n function Bold() {\n _classCallCheck(this, Bold);\n\n return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n }\n\n _createClass(Bold, [{\n key: 'optimize',\n value: function optimize(context) {\n _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this, context);\n if (this.domNode.tagName !== this.statics.tagName[0]) {\n this.replaceWith(this.statics.blotName);\n }\n }\n }], [{\n key: 'create',\n value: function create() {\n return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return Bold;\n}(_inline2.default);\n\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexports.default = Bold;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addControls = exports.default = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:toolbar');\n\nvar Toolbar = function (_Module) {\n _inherits(Toolbar, _Module);\n\n function Toolbar(quill, options) {\n _classCallCheck(this, Toolbar);\n\n var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\n if (Array.isArray(_this.options.container)) {\n var container = document.createElement('div');\n addControls(container, _this.options.container);\n quill.container.parentNode.insertBefore(container, quill.container);\n _this.container = container;\n } else if (typeof _this.options.container === 'string') {\n _this.container = document.querySelector(_this.options.container);\n } else {\n _this.container = _this.options.container;\n }\n if (!(_this.container instanceof HTMLElement)) {\n var _ret;\n\n return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n }\n _this.container.classList.add('ql-toolbar');\n _this.controls = [];\n _this.handlers = {};\n Object.keys(_this.options.handlers).forEach(function (format) {\n _this.addHandler(format, _this.options.handlers[format]);\n });\n [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n _this.attach(input);\n });\n _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n if (type === _quill2.default.events.SELECTION_CHANGE) {\n _this.update(range);\n }\n });\n _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n var _this$quill$selection = _this.quill.selection.getRange(),\n _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\n\n _this.update(range);\n });\n return _this;\n }\n\n _createClass(Toolbar, [{\n key: 'addHandler',\n value: function addHandler(format, handler) {\n this.handlers[format] = handler;\n }\n }, {\n key: 'attach',\n value: function attach(input) {\n var _this2 = this;\n\n var format = [].find.call(input.classList, function (className) {\n return className.indexOf('ql-') === 0;\n });\n if (!format) return;\n format = format.slice('ql-'.length);\n if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button');\n }\n if (this.handlers[format] == null) {\n if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n debug.warn('ignoring attaching to disabled format', format, input);\n return;\n }\n if (_parchment2.default.query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input);\n return;\n }\n }\n var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, function (e) {\n var value = void 0;\n if (input.tagName === 'SELECT') {\n if (input.selectedIndex < 0) return;\n var selected = input.options[input.selectedIndex];\n if (selected.hasAttribute('selected')) {\n value = false;\n } else {\n value = selected.value || false;\n }\n } else {\n if (input.classList.contains('ql-active')) {\n value = false;\n } else {\n value = input.value || !input.hasAttribute('value');\n }\n e.preventDefault();\n }\n _this2.quill.focus();\n\n var _quill$selection$getR = _this2.quill.selection.getRange(),\n _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n range = _quill$selection$getR2[0];\n\n if (_this2.handlers[format] != null) {\n _this2.handlers[format].call(_this2, value);\n } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n value = prompt('Enter ' + format);\n if (!value) return;\n _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n } else {\n _this2.quill.format(format, value, _quill2.default.sources.USER);\n }\n _this2.update(range);\n });\n // TODO use weakmap\n this.controls.push([format, input]);\n }\n }, {\n key: 'update',\n value: function update(range) {\n var formats = range == null ? {} : this.quill.getFormat(range);\n this.controls.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n format = _pair[0],\n input = _pair[1];\n\n if (input.tagName === 'SELECT') {\n var option = void 0;\n if (range == null) {\n option = null;\n } else if (formats[format] == null) {\n option = input.querySelector('option[selected]');\n } else if (!Array.isArray(formats[format])) {\n var value = formats[format];\n if (typeof value === 'string') {\n value = value.replace(/\\\"/g, '\\\\\"');\n }\n option = input.querySelector('option[value=\"' + value + '\"]');\n }\n if (option == null) {\n input.value = ''; // TODO make configurable?\n input.selectedIndex = -1;\n } else {\n option.selected = true;\n }\n } else {\n if (range == null) {\n input.classList.remove('ql-active');\n } else if (input.hasAttribute('value')) {\n // both being null should match (default values)\n // '1' should match with 1 (headers)\n var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n input.classList.toggle('ql-active', isActive);\n } else {\n input.classList.toggle('ql-active', formats[format] != null);\n }\n }\n });\n }\n }]);\n\n return Toolbar;\n}(_module2.default);\n\nToolbar.DEFAULTS = {};\n\nfunction addButton(container, format, value) {\n var input = document.createElement('button');\n input.setAttribute('type', 'button');\n input.classList.add('ql-' + format);\n if (value != null) {\n input.value = value;\n }\n container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n if (!Array.isArray(groups[0])) {\n groups = [groups];\n }\n groups.forEach(function (controls) {\n var group = document.createElement('span');\n group.classList.add('ql-formats');\n controls.forEach(function (control) {\n if (typeof control === 'string') {\n addButton(group, control);\n } else {\n var format = Object.keys(control)[0];\n var value = control[format];\n if (Array.isArray(value)) {\n addSelect(group, format, value);\n } else {\n addButton(group, format, value);\n }\n }\n });\n container.appendChild(group);\n });\n}\n\nfunction addSelect(container, format, values) {\n var input = document.createElement('select');\n input.classList.add('ql-' + format);\n values.forEach(function (value) {\n var option = document.createElement('option');\n if (value !== false) {\n option.setAttribute('value', value);\n } else {\n option.setAttribute('selected', 'selected');\n }\n input.appendChild(option);\n });\n container.appendChild(input);\n}\n\nToolbar.DEFAULTS = {\n container: null,\n handlers: {\n clean: function clean() {\n var _this3 = this;\n\n var range = this.quill.getSelection();\n if (range == null) return;\n if (range.length == 0) {\n var formats = this.quill.getFormat();\n Object.keys(formats).forEach(function (name) {\n // Clean functionality in existing apps only clean inline formats\n if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n _this3.quill.format(name, false);\n }\n });\n } else {\n this.quill.removeFormat(range, _quill2.default.sources.USER);\n }\n },\n direction: function direction(value) {\n var align = this.quill.getFormat()['align'];\n if (value === 'rtl' && align == null) {\n this.quill.format('align', 'right', _quill2.default.sources.USER);\n } else if (!value && align === 'right') {\n this.quill.format('align', false, _quill2.default.sources.USER);\n }\n this.quill.format('direction', value, _quill2.default.sources.USER);\n },\n indent: function indent(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n var indent = parseInt(formats.indent || 0);\n if (value === '+1' || value === '-1') {\n var modifier = value === '+1' ? 1 : -1;\n if (formats.direction === 'rtl') modifier *= -1;\n this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n }\n },\n link: function link(value) {\n if (value === true) {\n value = prompt('Enter link URL:');\n }\n this.quill.format('link', value, _quill2.default.sources.USER);\n },\n list: function list(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n if (value === 'check') {\n if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n this.quill.format('list', false, _quill2.default.sources.USER);\n } else {\n this.quill.format('list', 'unchecked', _quill2.default.sources.USER);\n }\n } else {\n this.quill.format('list', value, _quill2.default.sources.USER);\n }\n }\n }\n};\n\nexports.default = Toolbar;\nexports.addControls = addControls;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ColorPicker = function (_Picker) {\n _inherits(ColorPicker, _Picker);\n\n function ColorPicker(select, label) {\n _classCallCheck(this, ColorPicker);\n\n var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\n _this.label.innerHTML = label;\n _this.container.classList.add('ql-color-picker');\n [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n item.classList.add('ql-primary');\n });\n return _this;\n }\n\n _createClass(ColorPicker, [{\n key: 'buildItem',\n value: function buildItem(option) {\n var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n item.style.backgroundColor = option.getAttribute('value') || '';\n return item;\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n var colorLabel = this.label.querySelector('.ql-color-label');\n var value = item ? item.getAttribute('data-value') || '' : '';\n if (colorLabel) {\n if (colorLabel.tagName === 'line') {\n colorLabel.style.stroke = value;\n } else {\n colorLabel.style.fill = value;\n }\n }\n }\n }]);\n\n return ColorPicker;\n}(_picker2.default);\n\nexports.default = ColorPicker;\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IconPicker = function (_Picker) {\n _inherits(IconPicker, _Picker);\n\n function IconPicker(select, icons) {\n _classCallCheck(this, IconPicker);\n\n var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\n _this.container.classList.add('ql-icon-picker');\n [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n item.innerHTML = icons[item.getAttribute('data-value') || ''];\n });\n _this.defaultItem = _this.container.querySelector('.ql-selected');\n _this.selectItem(_this.defaultItem);\n return _this;\n }\n\n _createClass(IconPicker, [{\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n item = item || this.defaultItem;\n this.label.innerHTML = item.innerHTML;\n }\n }]);\n\n return IconPicker;\n}(_picker2.default);\n\nexports.default = IconPicker;\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Tooltip = function () {\n function Tooltip(quill, boundsContainer) {\n var _this = this;\n\n _classCallCheck(this, Tooltip);\n\n this.quill = quill;\n this.boundsContainer = boundsContainer || document.body;\n this.root = quill.addContainer('ql-tooltip');\n this.root.innerHTML = this.constructor.TEMPLATE;\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener('scroll', function () {\n _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';\n });\n }\n this.hide();\n }\n\n _createClass(Tooltip, [{\n key: 'hide',\n value: function hide() {\n this.root.classList.add('ql-hidden');\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n // root.scrollTop should be 0 if scrollContainer !== root\n var top = reference.bottom + this.quill.root.scrollTop;\n this.root.style.left = left + 'px';\n this.root.style.top = top + 'px';\n this.root.classList.remove('ql-flip');\n var containerBounds = this.boundsContainer.getBoundingClientRect();\n var rootBounds = this.root.getBoundingClientRect();\n var shift = 0;\n if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right;\n this.root.style.left = left + shift + 'px';\n }\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left;\n this.root.style.left = left + shift + 'px';\n }\n if (rootBounds.bottom > containerBounds.bottom) {\n var height = rootBounds.bottom - rootBounds.top;\n var verticalShift = reference.bottom - reference.top + height;\n this.root.style.top = top - verticalShift + 'px';\n this.root.classList.add('ql-flip');\n }\n return shift;\n }\n }, {\n key: 'show',\n value: function show() {\n this.root.classList.remove('ql-editing');\n this.root.classList.remove('ql-hidden');\n }\n }]);\n\n return Tooltip;\n}();\n\nexports.default = Tooltip;\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\nvar SnowTheme = function (_BaseTheme) {\n _inherits(SnowTheme, _BaseTheme);\n\n function SnowTheme(quill, options) {\n _classCallCheck(this, SnowTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-snow');\n return _this;\n }\n\n _createClass(SnowTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n toolbar.container.classList.add('ql-snow');\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n if (toolbar.container.querySelector('.ql-link')) {\n this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n toolbar.handlers['link'].call(toolbar, !context.format.link);\n });\n }\n }\n }]);\n\n return SnowTheme;\n}(_base2.default);\n\nSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (value) {\n var range = this.quill.getSelection();\n if (range == null || range.length == 0) return;\n var preview = this.quill.getText(range);\n if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = 'mailto:' + preview;\n }\n var tooltip = this.quill.theme.tooltip;\n tooltip.edit('link', preview);\n } else {\n this.quill.format('link', false);\n }\n }\n }\n }\n }\n});\n\nvar SnowTooltip = function (_BaseTooltip) {\n _inherits(SnowTooltip, _BaseTooltip);\n\n function SnowTooltip(quill, bounds) {\n _classCallCheck(this, SnowTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\n _this2.preview = _this2.root.querySelector('a.ql-preview');\n return _this2;\n }\n\n _createClass(SnowTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n if (_this3.root.classList.contains('ql-editing')) {\n _this3.save();\n } else {\n _this3.edit('link', _this3.preview.textContent);\n }\n event.preventDefault();\n });\n this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n if (_this3.linkRange != null) {\n var range = _this3.linkRange;\n _this3.restoreFocus();\n _this3.quill.formatText(range, 'link', false, _emitter2.default.sources.USER);\n delete _this3.linkRange;\n }\n event.preventDefault();\n _this3.hide();\n });\n this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {\n if (range == null) return;\n if (range.length === 0 && source === _emitter2.default.sources.USER) {\n var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n link = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (link != null) {\n _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n var preview = _link2.default.formats(link.domNode);\n _this3.preview.textContent = preview;\n _this3.preview.setAttribute('href', preview);\n _this3.show();\n _this3.position(_this3.quill.getBounds(_this3.linkRange));\n return;\n }\n } else {\n delete _this3.linkRange;\n }\n _this3.hide();\n });\n }\n }, {\n key: 'show',\n value: function show() {\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n this.root.removeAttribute('data-mode');\n }\n }]);\n\n return SnowTooltip;\n}(_base.BaseTooltip);\n\nSnowTooltip.TEMPLATE = ['', '', '', ''].join('');\n\nexports.default = SnowTheme;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _core = __webpack_require__(29);\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _align = __webpack_require__(36);\n\nvar _direction = __webpack_require__(38);\n\nvar _indent = __webpack_require__(64);\n\nvar _blockquote = __webpack_require__(65);\n\nvar _blockquote2 = _interopRequireDefault(_blockquote);\n\nvar _header = __webpack_require__(66);\n\nvar _header2 = _interopRequireDefault(_header);\n\nvar _list = __webpack_require__(67);\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _background = __webpack_require__(37);\n\nvar _color = __webpack_require__(26);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nvar _italic = __webpack_require__(68);\n\nvar _italic2 = _interopRequireDefault(_italic);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _script = __webpack_require__(69);\n\nvar _script2 = _interopRequireDefault(_script);\n\nvar _strike = __webpack_require__(70);\n\nvar _strike2 = _interopRequireDefault(_strike);\n\nvar _underline = __webpack_require__(71);\n\nvar _underline2 = _interopRequireDefault(_underline);\n\nvar _image = __webpack_require__(72);\n\nvar _image2 = _interopRequireDefault(_image);\n\nvar _video = __webpack_require__(73);\n\nvar _video2 = _interopRequireDefault(_video);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _formula = __webpack_require__(74);\n\nvar _formula2 = _interopRequireDefault(_formula);\n\nvar _syntax = __webpack_require__(75);\n\nvar _syntax2 = _interopRequireDefault(_syntax);\n\nvar _toolbar = __webpack_require__(57);\n\nvar _toolbar2 = _interopRequireDefault(_toolbar);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _colorPicker = __webpack_require__(59);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(60);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _tooltip = __webpack_require__(61);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nvar _bubble = __webpack_require__(108);\n\nvar _bubble2 = _interopRequireDefault(_bubble);\n\nvar _snow = __webpack_require__(62);\n\nvar _snow2 = _interopRequireDefault(_snow);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_core2.default.register({\n 'attributors/attribute/direction': _direction.DirectionAttribute,\n\n 'attributors/class/align': _align.AlignClass,\n 'attributors/class/background': _background.BackgroundClass,\n 'attributors/class/color': _color.ColorClass,\n 'attributors/class/direction': _direction.DirectionClass,\n 'attributors/class/font': _font.FontClass,\n 'attributors/class/size': _size.SizeClass,\n\n 'attributors/style/align': _align.AlignStyle,\n 'attributors/style/background': _background.BackgroundStyle,\n 'attributors/style/color': _color.ColorStyle,\n 'attributors/style/direction': _direction.DirectionStyle,\n 'attributors/style/font': _font.FontStyle,\n 'attributors/style/size': _size.SizeStyle\n}, true);\n\n_core2.default.register({\n 'formats/align': _align.AlignClass,\n 'formats/direction': _direction.DirectionClass,\n 'formats/indent': _indent.IndentClass,\n\n 'formats/background': _background.BackgroundStyle,\n 'formats/color': _color.ColorStyle,\n 'formats/font': _font.FontClass,\n 'formats/size': _size.SizeClass,\n\n 'formats/blockquote': _blockquote2.default,\n 'formats/code-block': _code2.default,\n 'formats/header': _header2.default,\n 'formats/list': _list2.default,\n\n 'formats/bold': _bold2.default,\n 'formats/code': _code.Code,\n 'formats/italic': _italic2.default,\n 'formats/link': _link2.default,\n 'formats/script': _script2.default,\n 'formats/strike': _strike2.default,\n 'formats/underline': _underline2.default,\n\n 'formats/image': _image2.default,\n 'formats/video': _video2.default,\n\n 'formats/list/item': _list.ListItem,\n\n 'modules/formula': _formula2.default,\n 'modules/syntax': _syntax2.default,\n 'modules/toolbar': _toolbar2.default,\n\n 'themes/bubble': _bubble2.default,\n 'themes/snow': _snow2.default,\n\n 'ui/icons': _icons2.default,\n 'ui/picker': _picker2.default,\n 'ui/icon-picker': _iconPicker2.default,\n 'ui/color-picker': _colorPicker2.default,\n 'ui/tooltip': _tooltip2.default\n}, true);\n\nexports.default = _core2.default;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.IndentClass = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IdentAttributor = function (_Parchment$Attributor) {\n _inherits(IdentAttributor, _Parchment$Attributor);\n\n function IdentAttributor() {\n _classCallCheck(this, IdentAttributor);\n\n return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n }\n\n _createClass(IdentAttributor, [{\n key: 'add',\n value: function add(node, value) {\n if (value === '+1' || value === '-1') {\n var indent = this.value(node) || 0;\n value = value === '+1' ? indent + 1 : indent - 1;\n }\n if (value === 0) {\n this.remove(node);\n return true;\n } else {\n return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n }\n }\n }, {\n key: 'canAdd',\n value: function canAdd(node, value) {\n return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));\n }\n }, {\n key: 'value',\n value: function value(node) {\n return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n }\n }]);\n\n return IdentAttributor;\n}(_parchment2.default.Attributor.Class);\n\nvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexports.IndentClass = IndentClass;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Blockquote = function (_Block) {\n _inherits(Blockquote, _Block);\n\n function Blockquote() {\n _classCallCheck(this, Blockquote);\n\n return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n }\n\n return Blockquote;\n}(_block2.default);\n\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\nexports.default = Blockquote;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Header = function (_Block) {\n _inherits(Header, _Block);\n\n function Header() {\n _classCallCheck(this, Header);\n\n return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n }\n\n _createClass(Header, null, [{\n key: 'formats',\n value: function formats(domNode) {\n return this.tagName.indexOf(domNode.tagName) + 1;\n }\n }]);\n\n return Header;\n}(_block2.default);\n\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\nexports.default = Header;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.ListItem = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _container = __webpack_require__(25);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ListItem = function (_Block) {\n _inherits(ListItem, _Block);\n\n function ListItem() {\n _classCallCheck(this, ListItem);\n\n return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n }\n\n _createClass(ListItem, [{\n key: 'format',\n value: function format(name, value) {\n if (name === List.blotName && !value) {\n this.replaceWith(_parchment2.default.create(this.statics.scope));\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n }\n }\n }, {\n key: 'remove',\n value: function remove() {\n if (this.prev == null && this.next == null) {\n this.parent.remove();\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n }\n }\n }, {\n key: 'replaceWith',\n value: function replaceWith(name, value) {\n this.parent.isolate(this.offset(this.parent), this.length());\n if (name === this.parent.statics.blotName) {\n this.parent.replaceWith(name, value);\n return this;\n } else {\n this.parent.unwrap();\n return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n }\n }\n }], [{\n key: 'formats',\n value: function formats(domNode) {\n return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n }\n }]);\n\n return ListItem;\n}(_block2.default);\n\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\nvar List = function (_Container) {\n _inherits(List, _Container);\n\n _createClass(List, null, [{\n key: 'create',\n value: function create(value) {\n var tagName = value === 'ordered' ? 'OL' : 'UL';\n var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n if (value === 'checked' || value === 'unchecked') {\n node.setAttribute('data-checked', value === 'checked');\n }\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'OL') return 'ordered';\n if (domNode.tagName === 'UL') {\n if (domNode.hasAttribute('data-checked')) {\n return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n } else {\n return 'bullet';\n }\n }\n return undefined;\n }\n }]);\n\n function List(domNode) {\n _classCallCheck(this, List);\n\n var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));\n\n var listEventHandler = function listEventHandler(e) {\n if (e.target.parentNode !== domNode) return;\n var format = _this2.statics.formats(domNode);\n var blot = _parchment2.default.find(e.target);\n if (format === 'checked') {\n blot.format('list', 'unchecked');\n } else if (format === 'unchecked') {\n blot.format('list', 'checked');\n }\n };\n\n domNode.addEventListener('touchstart', listEventHandler);\n domNode.addEventListener('mousedown', listEventHandler);\n return _this2;\n }\n\n _createClass(List, [{\n key: 'format',\n value: function format(name, value) {\n if (this.children.length > 0) {\n this.children.tail.format(name, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats() {\n // We don't inherit from FormatBlot\n return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot instanceof ListItem) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n } else {\n var index = ref == null ? this.length() : ref.offset(this);\n var after = this.split(index);\n after.parent.insertBefore(blot, after);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this, context);\n var next = this.next;\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n if (target.statics.blotName !== this.statics.blotName) {\n var item = _parchment2.default.create(this.statics.defaultChild);\n target.moveChildren(item);\n this.appendChild(item);\n }\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n }\n }]);\n\n return List;\n}(_container2.default);\n\nList.blotName = 'list';\nList.scope = _parchment2.default.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\nexports.ListItem = ListItem;\nexports.default = List;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bold = __webpack_require__(56);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Italic = function (_Bold) {\n _inherits(Italic, _Bold);\n\n function Italic() {\n _classCallCheck(this, Italic);\n\n return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n }\n\n return Italic;\n}(_bold2.default);\n\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexports.default = Italic;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Script = function (_Inline) {\n _inherits(Script, _Inline);\n\n function Script() {\n _classCallCheck(this, Script);\n\n return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n }\n\n _createClass(Script, null, [{\n key: 'create',\n value: function create(value) {\n if (value === 'super') {\n return document.createElement('sup');\n } else if (value === 'sub') {\n return document.createElement('sub');\n } else {\n return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'SUB') return 'sub';\n if (domNode.tagName === 'SUP') return 'super';\n return undefined;\n }\n }]);\n\n return Script;\n}(_inline2.default);\n\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexports.default = Script;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Strike = function (_Inline) {\n _inherits(Strike, _Inline);\n\n function Strike() {\n _classCallCheck(this, Strike);\n\n return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n }\n\n return Strike;\n}(_inline2.default);\n\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexports.default = Strike;\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inline = __webpack_require__(6);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Underline = function (_Inline) {\n _inherits(Underline, _Inline);\n\n function Underline() {\n _classCallCheck(this, Underline);\n\n return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n }\n\n return Underline;\n}(_inline2.default);\n\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexports.default = Underline;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _link = __webpack_require__(27);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['alt', 'height', 'width'];\n\nvar Image = function (_Parchment$Embed) {\n _inherits(Image, _Parchment$Embed);\n\n function Image() {\n _classCallCheck(this, Image);\n\n return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n }\n\n _createClass(Image, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n if (typeof value === 'string') {\n node.setAttribute('src', this.sanitize(value));\n }\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n }, {\n key: 'match',\n value: function match(url) {\n return (/\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n );\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Image;\n}(_parchment2.default.Embed);\n\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\nexports.default = Image;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _block = __webpack_require__(4);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['height', 'width'];\n\nvar Video = function (_BlockEmbed) {\n _inherits(Video, _BlockEmbed);\n\n function Video() {\n _classCallCheck(this, Video);\n\n return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n }\n\n _createClass(Video, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n node.setAttribute('frameborder', '0');\n node.setAttribute('allowfullscreen', true);\n node.setAttribute('src', this.sanitize(value));\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n return formats;\n }, {});\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _link2.default.sanitize(url);\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Video;\n}(_block.BlockEmbed);\n\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\nexports.default = Video;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.FormulaBlot = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _embed = __webpack_require__(35);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar FormulaBlot = function (_Embed) {\n _inherits(FormulaBlot, _Embed);\n\n function FormulaBlot() {\n _classCallCheck(this, FormulaBlot);\n\n return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n }\n\n _createClass(FormulaBlot, null, [{\n key: 'create',\n value: function create(value) {\n var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n if (typeof value === 'string') {\n window.katex.render(value, node, {\n throwOnError: false,\n errorColor: '#f00'\n });\n node.setAttribute('data-value', value);\n }\n return node;\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('data-value');\n }\n }]);\n\n return FormulaBlot;\n}(_embed2.default);\n\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\nvar Formula = function (_Module) {\n _inherits(Formula, _Module);\n\n _createClass(Formula, null, [{\n key: 'register',\n value: function register() {\n _quill2.default.register(FormulaBlot, true);\n }\n }]);\n\n function Formula() {\n _classCallCheck(this, Formula);\n\n var _this2 = _possibleConstructorReturn(this, (Formula.__proto__ || Object.getPrototypeOf(Formula)).call(this));\n\n if (window.katex == null) {\n throw new Error('Formula module requires KaTeX.');\n }\n return _this2;\n }\n\n return Formula;\n}(_module2.default);\n\nexports.FormulaBlot = FormulaBlot;\nexports.default = Formula;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(5);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _code = __webpack_require__(13);\n\nvar _code2 = _interopRequireDefault(_code);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SyntaxCodeBlock = function (_CodeBlock) {\n _inherits(SyntaxCodeBlock, _CodeBlock);\n\n function SyntaxCodeBlock() {\n _classCallCheck(this, SyntaxCodeBlock);\n\n return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n }\n\n _createClass(SyntaxCodeBlock, [{\n key: 'replaceWith',\n value: function replaceWith(block) {\n this.domNode.textContent = this.domNode.textContent;\n this.attach();\n _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n }\n }, {\n key: 'highlight',\n value: function highlight(_highlight) {\n var text = this.domNode.textContent;\n if (this.cachedText !== text) {\n if (text.trim().length > 0 || this.cachedText == null) {\n this.domNode.innerHTML = _highlight(text);\n this.domNode.normalize();\n this.attach();\n }\n this.cachedText = text;\n }\n }\n }]);\n\n return SyntaxCodeBlock;\n}(_code2.default);\n\nSyntaxCodeBlock.className = 'ql-syntax';\n\nvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nvar Syntax = function (_Module) {\n _inherits(Syntax, _Module);\n\n _createClass(Syntax, null, [{\n key: 'register',\n value: function register() {\n _quill2.default.register(CodeToken, true);\n _quill2.default.register(SyntaxCodeBlock, true);\n }\n }]);\n\n function Syntax(quill, options) {\n _classCallCheck(this, Syntax);\n\n var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\n if (typeof _this2.options.highlight !== 'function') {\n throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n }\n var timer = null;\n _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n clearTimeout(timer);\n timer = setTimeout(function () {\n _this2.highlight();\n timer = null;\n }, _this2.options.interval);\n });\n _this2.highlight();\n return _this2;\n }\n\n _createClass(Syntax, [{\n key: 'highlight',\n value: function highlight() {\n var _this3 = this;\n\n if (this.quill.selection.composing) return;\n this.quill.update(_quill2.default.sources.USER);\n var range = this.quill.getSelection();\n this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n code.highlight(_this3.options.highlight);\n });\n this.quill.update(_quill2.default.sources.SILENT);\n if (range != null) {\n this.quill.setSelection(range, _quill2.default.sources.SILENT);\n }\n }\n }]);\n\n return Syntax;\n}(_module2.default);\n\nSyntax.DEFAULTS = {\n highlight: function () {\n if (window.hljs == null) return null;\n return function (text) {\n var result = window.hljs.highlightAuto(text);\n return result.value;\n };\n }(),\n interval: 1000\n};\n\nexports.CodeBlock = SyntaxCodeBlock;\nexports.CodeToken = CodeToken;\nexports.default = Syntax;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BubbleTooltip = undefined;\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(8);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(43);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\nvar BubbleTheme = function (_BaseTheme) {\n _inherits(BubbleTheme, _BaseTheme);\n\n function BubbleTheme(quill, options) {\n _classCallCheck(this, BubbleTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-bubble');\n return _this;\n }\n\n _createClass(BubbleTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n this.tooltip.root.appendChild(toolbar.container);\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n }\n }]);\n\n return BubbleTheme;\n}(_base2.default);\n\nBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (!value) {\n this.quill.format('link', false);\n } else {\n this.quill.theme.tooltip.edit();\n }\n }\n }\n }\n }\n});\n\nvar BubbleTooltip = function (_BaseTooltip) {\n _inherits(BubbleTooltip, _BaseTooltip);\n\n function BubbleTooltip(quill, bounds) {\n _classCallCheck(this, BubbleTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\n _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range, oldRange, source) {\n if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\n _this2.show();\n // Lock our width so we will expand beyond our offsetParent boundaries\n _this2.root.style.left = '0px';\n _this2.root.style.width = '';\n _this2.root.style.width = _this2.root.offsetWidth + 'px';\n var lines = _this2.quill.getLines(range.index, range.length);\n if (lines.length === 1) {\n _this2.position(_this2.quill.getBounds(range));\n } else {\n var lastLine = lines[lines.length - 1];\n var index = _this2.quill.getIndex(lastLine);\n var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n _this2.position(_bounds);\n }\n } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n _this2.hide();\n }\n });\n return _this2;\n }\n\n _createClass(BubbleTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n this.root.querySelector('.ql-close').addEventListener('click', function () {\n _this3.root.classList.remove('ql-editing');\n });\n this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n // Let selection be restored by toolbar handlers before repositioning\n setTimeout(function () {\n if (_this3.root.classList.contains('ql-hidden')) return;\n var range = _this3.quill.getSelection();\n if (range != null) {\n _this3.position(_this3.quill.getBounds(range));\n }\n }, 1);\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.show();\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n var arrow = this.root.querySelector('.ql-tooltip-arrow');\n arrow.style.marginLeft = '';\n if (shift === 0) return shift;\n arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n }\n }]);\n\n return BubbleTooltip;\n}(_base.BaseTooltip);\n\nBubbleTooltip.TEMPLATE = ['', '
', '', '', '
'].join('');\n\nexports.BubbleTooltip = BubbleTooltip;\nexports.default = BubbleTheme;\n\n/***/ }),\n/* 109 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(63);\n\n\n/***/ })\n/******/ ])[\"default\"];\n});","// Styles\nimport './VAlert.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Toggleable from '../../mixins/toggleable'\nimport Themeable from '../../mixins/themeable'\nimport Transitionable from '../../mixins/transitionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNodeData } from 'vue'\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(\n VSheet,\n Toggleable,\n Transitionable\n).extend({\n name: 'v-alert',\n\n props: {\n border: {\n type: String,\n validator (val: string) {\n return [\n 'top',\n 'right',\n 'bottom',\n 'left',\n ].includes(val)\n },\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n coloredBorder: Boolean,\n dense: Boolean,\n dismissible: Boolean,\n closeIcon: {\n type: String,\n default: '$cancel',\n },\n icon: {\n default: '',\n type: [Boolean, String],\n validator (val: boolean | string) {\n return typeof val === 'string' || val === false\n },\n },\n outlined: Boolean,\n prominent: Boolean,\n text: Boolean,\n type: {\n type: String,\n validator (val: string) {\n return [\n 'info',\n 'error',\n 'success',\n 'warning',\n ].includes(val)\n },\n },\n value: {\n type: Boolean,\n default: true,\n },\n },\n\n computed: {\n __cachedBorder (): VNode | null {\n if (!this.border) return null\n\n let data: VNodeData = {\n staticClass: 'v-alert__border',\n class: {\n [`v-alert__border--${this.border}`]: true,\n },\n }\n\n if (this.coloredBorder) {\n data = this.setBackgroundColor(this.computedColor, data)\n data.class['v-alert__border--has-color'] = true\n }\n\n return this.$createElement('div', data)\n },\n __cachedDismissible (): VNode | null {\n if (!this.dismissible) return null\n\n const color = this.iconColor\n\n return this.$createElement(VBtn, {\n staticClass: 'v-alert__dismissible',\n props: {\n color,\n icon: true,\n small: true,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: () => (this.isActive = false),\n },\n }, [\n this.$createElement(VIcon, {\n props: { color },\n }, this.closeIcon),\n ])\n },\n __cachedIcon (): VNode | null {\n if (!this.computedIcon) return null\n\n return this.$createElement(VIcon, {\n staticClass: 'v-alert__icon',\n props: { color: this.iconColor },\n }, this.computedIcon)\n },\n classes (): object {\n const classes: Record = {\n ...VSheet.options.computed.classes.call(this),\n 'v-alert--border': Boolean(this.border),\n 'v-alert--dense': this.dense,\n 'v-alert--outlined': this.outlined,\n 'v-alert--prominent': this.prominent,\n 'v-alert--text': this.text,\n }\n\n if (this.border) {\n classes[`v-alert--border-${this.border}`] = true\n }\n\n return classes\n },\n computedColor (): string {\n return this.color || this.type\n },\n computedIcon (): string | boolean {\n if (this.icon === false) return false\n if (typeof this.icon === 'string' && this.icon) return this.icon\n if (!['error', 'info', 'success', 'warning'].includes(this.type)) return false\n\n return `$${this.type}`\n },\n hasColoredIcon (): boolean {\n return (\n this.hasText ||\n (Boolean(this.border) && this.coloredBorder)\n )\n },\n hasText (): boolean {\n return this.text || this.outlined\n },\n iconColor (): string | undefined {\n return this.hasColoredIcon ? this.computedColor : undefined\n },\n isDark (): boolean {\n if (\n this.type &&\n !this.coloredBorder &&\n !this.outlined\n ) return true\n\n return Themeable.options.computed.isDark.call(this)\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('outline')) {\n breaking('outline', 'outlined', this)\n }\n },\n\n methods: {\n genWrapper (): VNode {\n const children = [\n this.$slots.prepend || this.__cachedIcon,\n this.genContent(),\n this.__cachedBorder,\n this.$slots.append,\n this.$scopedSlots.close\n ? this.$scopedSlots.close({ toggle: this.toggle })\n : this.__cachedDismissible,\n ]\n\n const data: VNodeData = {\n staticClass: 'v-alert__wrapper',\n }\n\n return this.$createElement('div', data, children)\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-alert__content',\n }, this.$slots.default)\n },\n genAlert (): VNode {\n let data: VNodeData = {\n staticClass: 'v-alert',\n attrs: {\n role: 'alert',\n },\n on: this.listeners$,\n class: this.classes,\n style: this.styles,\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }\n\n if (!this.coloredBorder) {\n const setColor = this.hasText ? this.setTextColor : this.setBackgroundColor\n data = setColor(this.computedColor, data)\n }\n\n return this.$createElement('div', data, [this.genWrapper()])\n },\n /** @public */\n toggle () {\n this.isActive = !this.isActive\n },\n },\n\n render (h): VNode {\n const render = this.genAlert()\n\n if (!this.transition) return render\n\n return h('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n mode: this.mode,\n },\n }, [render])\n },\n})\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { DirectiveOptions, VNode } from 'vue'\n\ninterface ScrollVNodeDirective extends Omit {\n value: EventListener | {\n handler: EventListener\n options?: boolean | AddEventListenerOptions\n } | EventListenerObject & { options?: boolean | AddEventListenerOptions }\n modifiers?: {\n self?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: ScrollVNodeDirective, vnode: VNode) {\n const { self = false } = binding.modifiers || {}\n const value = binding.value\n const options = (typeof value === 'object' && value.options) || { passive: true }\n const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler\n\n const target = self\n ? el\n : binding.arg\n ? document.querySelector(binding.arg)\n : window\n\n if (!target) return\n\n target.addEventListener('scroll', handler, options)\n\n el._onScroll = Object(el._onScroll)\n el._onScroll![vnode.context!._uid] = {\n handler,\n options,\n // Don't reference self\n target: self ? undefined : target,\n }\n}\n\nfunction unbind (el: HTMLElement, binding: ScrollVNodeDirective, vnode: VNode) {\n if (!el._onScroll?.[vnode.context!._uid]) return\n\n const { handler, options, target = el } = el._onScroll[vnode.context!._uid]!\n\n target.removeEventListener('scroll', handler, options)\n delete el._onScroll[vnode.context!._uid]\n}\n\nexport const Scroll = {\n inserted,\n unbind,\n} as DirectiveOptions\n\nexport default Scroll\n","// Directives\nimport { Scroll } from '../../directives'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\n/**\n * Scrollable\n *\n * Used for monitoring scrolling and\n * invoking functions based upon\n * scrolling thresholds being\n * met.\n */\n/* @vue/component */\nexport default Vue.extend({\n name: 'scrollable',\n\n directives: { Scroll },\n\n props: {\n scrollTarget: String,\n scrollThreshold: [String, Number],\n },\n\n data: () => ({\n currentScroll: 0,\n currentThreshold: 0,\n isActive: false,\n isScrollingUp: false,\n previousScroll: 0,\n savedScroll: 0,\n target: null as Element | null,\n }),\n\n computed: {\n /**\n * A computed property that returns\n * whether scrolling features are\n * enabled or disabled\n */\n canScroll (): boolean {\n return typeof window !== 'undefined'\n },\n /**\n * The threshold that must be met before\n * thresholdMet function is invoked\n */\n computedScrollThreshold (): number {\n return this.scrollThreshold\n ? Number(this.scrollThreshold)\n : 300\n },\n },\n\n watch: {\n isScrollingUp () {\n this.savedScroll = this.savedScroll || this.currentScroll\n },\n isActive () {\n this.savedScroll = 0\n },\n },\n\n mounted () {\n if (this.scrollTarget) {\n this.target = document.querySelector(this.scrollTarget)\n\n if (!this.target) {\n consoleWarn(`Unable to locate element with identifier ${this.scrollTarget}`, this)\n }\n }\n },\n\n methods: {\n onScroll () {\n if (!this.canScroll) return\n\n this.previousScroll = this.currentScroll\n this.currentScroll = this.target\n ? this.target.scrollTop\n : window.pageYOffset\n\n this.isScrollingUp = this.currentScroll < this.previousScroll\n this.currentThreshold = Math.abs(this.currentScroll - this.computedScrollThreshold)\n\n this.$nextTick(() => {\n if (\n Math.abs(this.currentScroll - this.savedScroll) >\n this.computedScrollThreshold\n ) this.thresholdMet()\n })\n },\n /**\n * The method invoked when\n * scrolling in any direction\n * has exceeded the threshold\n */\n thresholdMet () { /* noop */ },\n },\n})\n","// Styles\nimport './VAppBar.sass'\n\n// Extensions\nimport VToolbar from '../VToolbar/VToolbar'\n\n// Directives\nimport Scroll from '../../directives/scroll'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport Scrollable from '../../mixins/scrollable'\nimport SSRBootable from '../../mixins/ssr-bootable'\nimport Toggleable from '../../mixins/toggleable'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n VToolbar,\n Scrollable,\n SSRBootable,\n Toggleable,\n Applicationable('top', [\n 'clippedLeft',\n 'clippedRight',\n 'computedHeight',\n 'invertedScroll',\n 'isExtended',\n 'isProminent',\n 'value',\n ])\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-app-bar',\n\n directives: { Scroll },\n\n provide (): object {\n return { VAppBar: this }\n },\n\n props: {\n clippedLeft: Boolean,\n clippedRight: Boolean,\n collapseOnScroll: Boolean,\n elevateOnScroll: Boolean,\n fadeImgOnScroll: Boolean,\n hideOnScroll: Boolean,\n invertedScroll: Boolean,\n scrollOffScreen: Boolean,\n shrinkOnScroll: Boolean,\n value: {\n type: Boolean,\n default: true,\n },\n },\n\n data () {\n return {\n isActive: this.value,\n }\n },\n\n computed: {\n applicationProperty (): string {\n return !this.bottom ? 'top' : 'bottom'\n },\n canScroll (): boolean {\n return (\n Scrollable.options.computed.canScroll.call(this) &&\n (\n this.invertedScroll ||\n this.elevateOnScroll ||\n this.hideOnScroll ||\n this.collapseOnScroll ||\n this.isBooted ||\n // If falsy, user has provided an\n // explicit value which should\n // overwrite anything we do\n !this.value\n )\n )\n },\n classes (): object {\n return {\n ...VToolbar.options.computed.classes.call(this),\n 'v-toolbar--collapse': this.collapse || this.collapseOnScroll,\n 'v-app-bar': true,\n 'v-app-bar--clipped': this.clippedLeft || this.clippedRight,\n 'v-app-bar--fade-img-on-scroll': this.fadeImgOnScroll,\n 'v-app-bar--elevate-on-scroll': this.elevateOnScroll,\n 'v-app-bar--fixed': !this.absolute && (this.app || this.fixed),\n 'v-app-bar--hide-shadow': this.hideShadow,\n 'v-app-bar--is-scrolled': this.currentScroll > 0,\n 'v-app-bar--shrink-on-scroll': this.shrinkOnScroll,\n }\n },\n scrollRatio (): number {\n const threshold = this.computedScrollThreshold\n return Math.max((threshold - this.currentScroll) / threshold, 0)\n },\n computedContentHeight (): number {\n if (!this.shrinkOnScroll) return VToolbar.options.computed.computedContentHeight.call(this)\n\n const min = this.dense ? 48 : 56\n const max = this.computedOriginalHeight\n\n return min + (max - min) * this.scrollRatio\n },\n computedFontSize (): number | undefined {\n if (!this.isProminent) return undefined\n\n const min = 1.25\n const max = 1.5\n\n return min + (max - min) * this.scrollRatio\n },\n computedLeft (): number {\n if (!this.app || this.clippedLeft) return 0\n\n return this.$vuetify.application.left\n },\n computedMarginTop (): number {\n if (!this.app) return 0\n\n return this.$vuetify.application.bar\n },\n computedOpacity (): number | undefined {\n if (!this.fadeImgOnScroll) return undefined\n\n return this.scrollRatio\n },\n computedOriginalHeight (): number {\n let height = VToolbar.options.computed.computedContentHeight.call(this)\n if (this.isExtended) height += parseInt(this.extensionHeight)\n return height\n },\n computedRight (): number {\n if (!this.app || this.clippedRight) return 0\n\n return this.$vuetify.application.right\n },\n computedScrollThreshold (): number {\n if (this.scrollThreshold) return Number(this.scrollThreshold)\n\n return this.computedOriginalHeight - (this.dense ? 48 : 56)\n },\n computedTransform (): number {\n if (\n !this.canScroll ||\n (this.elevateOnScroll && this.currentScroll === 0 && this.isActive)\n ) return 0\n\n if (this.isActive) return 0\n\n const scrollOffScreen = this.scrollOffScreen\n ? this.computedHeight\n : this.computedContentHeight\n\n return this.bottom ? scrollOffScreen : -scrollOffScreen\n },\n hideShadow (): boolean {\n if (this.elevateOnScroll && this.isExtended) {\n return this.currentScroll < this.computedScrollThreshold\n }\n\n if (this.elevateOnScroll) {\n return this.currentScroll === 0 ||\n this.computedTransform < 0\n }\n\n return (\n !this.isExtended ||\n this.scrollOffScreen\n ) && this.computedTransform !== 0\n },\n isCollapsed (): boolean {\n if (!this.collapseOnScroll) {\n return VToolbar.options.computed.isCollapsed.call(this)\n }\n\n return this.currentScroll > 0\n },\n isProminent (): boolean {\n return (\n VToolbar.options.computed.isProminent.call(this) ||\n this.shrinkOnScroll\n )\n },\n styles (): object {\n return {\n ...VToolbar.options.computed.styles.call(this),\n fontSize: convertToUnit(this.computedFontSize, 'rem'),\n marginTop: convertToUnit(this.computedMarginTop),\n transform: `translateY(${convertToUnit(this.computedTransform)})`,\n left: convertToUnit(this.computedLeft),\n right: convertToUnit(this.computedRight),\n }\n },\n },\n\n watch: {\n canScroll: 'onScroll',\n computedTransform () {\n // Normally we do not want the v-app-bar\n // to update the application top value\n // to avoid screen jump. However, in\n // this situation, we must so that\n // the clipped drawer can update\n // its top value when scrolled\n if (\n !this.canScroll ||\n (!this.clippedLeft && !this.clippedRight)\n ) return\n\n this.callUpdate()\n },\n invertedScroll (val: boolean) {\n this.isActive = !val || this.currentScroll !== 0\n },\n hideOnScroll (val: boolean) {\n this.isActive = !val || this.currentScroll < this.computedScrollThreshold\n },\n },\n\n created () {\n if (this.invertedScroll) this.isActive = false\n },\n\n methods: {\n genBackground () {\n const render = VToolbar.options.methods.genBackground.call(this)\n\n render.data = this._b(render.data || {}, render.tag!, {\n style: { opacity: this.computedOpacity },\n })\n\n return render\n },\n updateApplication (): number {\n return this.invertedScroll\n ? 0\n : this.computedHeight + this.computedTransform\n },\n thresholdMet () {\n if (this.invertedScroll) {\n this.isActive = this.currentScroll > this.computedScrollThreshold\n return\n }\n\n if (this.hideOnScroll) {\n this.isActive = this.isScrollingUp ||\n this.currentScroll < this.computedScrollThreshold\n }\n\n if (this.currentThreshold < this.computedScrollThreshold) return\n\n this.savedScroll = this.currentScroll\n },\n },\n\n render (h): VNode {\n const render = VToolbar.options.render.call(this, h)\n\n render.data = render.data || {}\n\n if (this.canScroll) {\n render.data.directives = render.data.directives || []\n render.data.directives.push({\n arg: this.scrollTarget,\n name: 'scroll',\n value: this.onScroll,\n })\n }\n\n return render\n },\n})\n","// Components\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn/VBtn'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-app-bar-nav-icon',\n\n functional: true,\n\n render (h, { slots, listeners, props, data }) {\n const d = Object.assign(data, {\n staticClass: (`v-app-bar__nav-icon ${data.staticClass || ''}`).trim(),\n props: {\n ...props,\n icon: true,\n },\n on: listeners,\n })\n\n const defaultSlot = slots().default\n\n return h(VBtn, d, defaultSlot || [h(VIcon, '$menu')])\n },\n})\n","// Styles\nimport './VApp.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(\n Themeable\n).extend({\n name: 'v-app',\n\n props: {\n dark: {\n type: Boolean,\n default: undefined,\n },\n id: {\n type: String,\n default: 'app',\n },\n light: {\n type: Boolean,\n default: undefined,\n },\n },\n\n computed: {\n isDark (): boolean {\n return this.$vuetify.theme.dark\n },\n },\n\n beforeCreate () {\n if (!this.$vuetify || (this.$vuetify === this.$root as any)) {\n throw new Error('Vuetify is not properly initialized, see https://vuetifyjs.com/getting-started/quick-start#bootstrapping-the-vuetify-object')\n }\n },\n\n render (h) {\n const wrapper = h('div', { staticClass: 'v-application--wrap' }, this.$slots.default)\n\n return h('div', {\n staticClass: 'v-application',\n class: {\n 'v-application--is-rtl': this.$vuetify.rtl,\n 'v-application--is-ltr': !this.$vuetify.rtl,\n ...this.themeClasses,\n },\n attrs: { 'data-app': true },\n domProps: { id: this.id },\n }, [wrapper])\n },\n})\n","// Styles\nimport './VAutocomplete.sass'\n\n// Extensions\nimport VSelect, { defaultMenuProps as VSelectMenuProps } from '../VSelect/VSelect'\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport {\n getObjectValueByPath,\n getPropertyFromItem,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { PropType, VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\nconst defaultMenuProps = {\n ...VSelectMenuProps,\n offsetY: true,\n offsetOverflow: true,\n transition: false,\n}\n\n/* @vue/component */\nexport default VSelect.extend({\n name: 'v-autocomplete',\n\n props: {\n allowOverflow: {\n type: Boolean,\n default: true,\n },\n autoSelectFirst: {\n type: Boolean,\n default: false,\n },\n filter: {\n type: Function,\n default: (item: any, queryText: string, itemText: string) => {\n return itemText.toLocaleLowerCase().indexOf(queryText.toLocaleLowerCase()) > -1\n },\n } as PropValidator<(item: any, queryText: string, itemText: string) => boolean>,\n hideNoData: Boolean,\n menuProps: {\n type: VSelect.options.props.menuProps.type,\n default: () => defaultMenuProps,\n },\n noFilter: Boolean,\n searchInput: {\n type: String as PropType,\n },\n },\n\n data () {\n return {\n lazySearch: this.searchInput,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VSelect.options.computed.classes.call(this),\n 'v-autocomplete': true,\n 'v-autocomplete--is-selecting-index': this.selectedIndex > -1,\n }\n },\n computedItems (): object[] {\n return this.filteredItems\n },\n selectedValues (): object[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n hasDisplayedItems (): boolean {\n return this.hideSelected\n ? this.filteredItems.some(item => !this.hasItem(item))\n : this.filteredItems.length > 0\n },\n currentRange (): number {\n if (this.selectedItem == null) return 0\n\n return String(this.getText(this.selectedItem)).length\n },\n filteredItems (): object[] {\n if (!this.isSearching || this.noFilter || this.internalSearch == null) return this.allItems\n\n return this.allItems.filter(item => {\n const value = getPropertyFromItem(item, this.itemText)\n const text = value != null ? String(value) : ''\n\n return this.filter(item, String(this.internalSearch), text)\n })\n },\n internalSearch: {\n get (): string | null {\n return this.lazySearch\n },\n set (val: any) { // TODO: this should be `string | null` but it breaks lots of other types\n // emit update event only when the new\n // search value is different from previous\n if (this.lazySearch !== val) {\n this.lazySearch = val\n this.$emit('update:search-input', val)\n }\n },\n },\n isAnyValueAllowed (): boolean {\n return false\n },\n isDirty (): boolean {\n return this.searchIsDirty || this.selectedItems.length > 0\n },\n isSearching (): boolean {\n return (\n this.multiple &&\n this.searchIsDirty\n ) || (\n this.searchIsDirty &&\n this.internalSearch !== this.getText(this.selectedItem)\n )\n },\n menuCanShow (): boolean {\n if (!this.isFocused) return false\n\n return this.hasDisplayedItems || !this.hideNoData\n },\n $_menuProps (): object {\n const props = VSelect.options.computed.$_menuProps.call(this);\n (props as any).contentClass = `v-autocomplete__content ${(props as any).contentClass || ''}`.trim()\n return {\n ...defaultMenuProps,\n ...props,\n }\n },\n searchIsDirty (): boolean {\n return this.internalSearch != null &&\n this.internalSearch !== ''\n },\n selectedItem (): any {\n if (this.multiple) return null\n\n return this.selectedItems.find(i => {\n return this.valueComparator(this.getValue(i), this.getValue(this.internalValue))\n })\n },\n listData () {\n const data = VSelect.options.computed.listData.call(this) as any\n\n data.props = {\n ...data.props,\n items: this.virtualizedItems,\n noFilter: (\n this.noFilter ||\n !this.isSearching ||\n !this.filteredItems.length\n ),\n searchInput: this.internalSearch,\n }\n\n return data\n },\n },\n\n watch: {\n filteredItems: 'onFilteredItemsChanged',\n internalValue: 'setSearch',\n isFocused (val) {\n if (val) {\n document.addEventListener('copy', this.onCopy)\n this.$refs.input && this.$refs.input.select()\n } else {\n document.removeEventListener('copy', this.onCopy)\n this.blur()\n this.updateSelf()\n }\n },\n isMenuActive (val) {\n if (val || !this.hasSlot) return\n\n this.lazySearch = null\n },\n items (val, oldVal) {\n // If we are focused, the menu\n // is not active, hide no data is enabled,\n // and items change\n // User is probably async loading\n // items, try to activate the menu\n if (\n !(oldVal && oldVal.length) &&\n this.hideNoData &&\n this.isFocused &&\n !this.isMenuActive &&\n val.length\n ) this.activateMenu()\n },\n searchInput (val: string) {\n this.lazySearch = val\n },\n internalSearch: 'onInternalSearchChanged',\n itemText: 'updateSelf',\n },\n\n created () {\n this.setSearch()\n },\n\n destroyed () {\n document.removeEventListener('copy', this.onCopy)\n },\n\n methods: {\n onFilteredItemsChanged (val: never[], oldVal: never[]) {\n // TODO: How is the watcher triggered\n // for duplicate items? no idea\n if (val === oldVal) return\n\n if (!this.autoSelectFirst) {\n const preSelectedItem = oldVal[this.$refs.menu.listIndex]\n\n if (preSelectedItem) {\n this.setMenuIndex(val.findIndex(i => i === preSelectedItem))\n } else {\n this.setMenuIndex(-1)\n }\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n\n this.$nextTick(() => {\n if (\n !this.internalSearch ||\n (val.length !== 1 &&\n !this.autoSelectFirst)\n ) return\n\n this.$refs.menu.getTiles()\n\n if (this.autoSelectFirst && val.length) {\n this.setMenuIndex(0)\n this.$emit('update:list-index', this.$refs.menu.listIndex)\n }\n })\n },\n onInternalSearchChanged () {\n this.updateMenuDimensions()\n },\n updateMenuDimensions () {\n // Type from menuable is not making it through\n this.isMenuActive && this.$refs.menu && this.$refs.menu.updateDimensions()\n },\n changeSelectedIndex (keyCode: number) {\n // Do not allow changing of selectedIndex\n // when search is dirty\n if (this.searchIsDirty) return\n\n if (this.multiple && keyCode === keyCodes.left) {\n if (this.selectedIndex === -1) {\n this.selectedIndex = this.selectedItems.length - 1\n } else {\n this.selectedIndex--\n }\n } else if (this.multiple && keyCode === keyCodes.right) {\n if (this.selectedIndex >= this.selectedItems.length - 1) {\n this.selectedIndex = -1\n } else {\n this.selectedIndex++\n }\n } else if (keyCode === keyCodes.backspace || keyCode === keyCodes.delete) {\n this.deleteCurrentItem()\n }\n },\n deleteCurrentItem () {\n const curIndex = this.selectedIndex\n const curItem = this.selectedItems[curIndex]\n\n // Do nothing if input or item is disabled\n if (\n !this.isInteractive ||\n this.getDisabled(curItem)\n ) return\n\n const lastIndex = this.selectedItems.length - 1\n\n // Select the last item if\n // there is no selection\n if (\n this.selectedIndex === -1 &&\n lastIndex !== 0\n ) {\n this.selectedIndex = lastIndex\n\n return\n }\n\n const length = this.selectedItems.length\n const nextIndex = curIndex !== length - 1\n ? curIndex\n : curIndex - 1\n const nextItem = this.selectedItems[nextIndex]\n\n if (!nextItem) {\n this.setValue(this.multiple ? [] : null)\n } else {\n this.selectItem(curItem)\n }\n\n this.selectedIndex = nextIndex\n },\n clearableCallback () {\n this.internalSearch = null\n\n VSelect.options.methods.clearableCallback.call(this)\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.data = mergeData(input.data!, {\n attrs: {\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n },\n domProps: { value: this.internalSearch },\n })\n\n return input\n },\n genInputSlot () {\n const slot = VSelect.options.methods.genInputSlot.call(this)\n\n slot.data!.attrs!.role = 'combobox'\n\n return slot\n },\n genSelections (): VNode | never[] {\n return this.hasSlot || this.multiple\n ? VSelect.options.methods.genSelections.call(this)\n : []\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n this.selectedIndex > -1\n ? (this.selectedIndex = -1)\n : this.onFocus()\n\n if (!this.isAppendInner(e.target)) this.activateMenu()\n },\n onInput (e: Event) {\n if (\n this.selectedIndex > -1 ||\n !e.target\n ) return\n\n const target = e.target as HTMLInputElement\n const value = target.value\n\n // If typing and menu is not currently active\n if (target.value) this.activateMenu()\n\n if (!this.multiple && value === '') this.deleteCurrentItem()\n\n this.internalSearch = value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n const keyCode = e.keyCode\n\n if (\n e.ctrlKey ||\n ![keyCodes.home, keyCodes.end].includes(keyCode)\n ) {\n VSelect.options.methods.onKeyDown.call(this, e)\n }\n\n // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n this.changeSelectedIndex(keyCode)\n },\n onSpaceDown (e: KeyboardEvent) { /* noop */ },\n onTabDown (e: KeyboardEvent) {\n VSelect.options.methods.onTabDown.call(this, e)\n this.updateSelf()\n },\n onUpDown (e: Event) {\n // Prevent screen from scrolling\n e.preventDefault()\n\n // For autocomplete / combobox, cycling\n // interfers with native up/down behavior\n // instead activate the menu\n this.activateMenu()\n },\n selectItem (item: object) {\n VSelect.options.methods.selectItem.call(this, item)\n this.setSearch()\n },\n setSelectedItems () {\n VSelect.options.methods.setSelectedItems.call(this)\n\n // #4273 Don't replace if searching\n // #4403 Don't replace if focused\n if (!this.isFocused) this.setSearch()\n },\n setSearch () {\n // Wait for nextTick so selectedItem\n // has had time to update\n this.$nextTick(() => {\n if (\n !this.multiple ||\n !this.internalSearch ||\n !this.isMenuActive\n ) {\n this.internalSearch = (\n !this.selectedItems.length ||\n this.multiple ||\n this.hasSlot\n )\n ? null\n : this.getText(this.selectedItem)\n }\n })\n },\n updateSelf () {\n if (\n !this.searchIsDirty &&\n !this.internalValue\n ) return\n\n if (\n !this.multiple &&\n !this.valueComparator(\n this.internalSearch,\n this.getValue(this.internalValue)\n )\n ) {\n this.setSearch()\n }\n },\n hasItem (item: any): boolean {\n return this.selectedValues.indexOf(this.getValue(item)) > -1\n },\n onCopy (event: ClipboardEvent) {\n if (this.selectedIndex === -1) return\n\n const currentItem = this.selectedItems[this.selectedIndex]\n const currentItemText = this.getText(currentItem)\n event.clipboardData?.setData('text/plain', currentItemText)\n event.clipboardData?.setData('text/vnd.vuetify.autocomplete.item+plain', currentItemText)\n event.preventDefault()\n },\n },\n})\n","import './VAvatar.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n Colorable,\n Measurable,\n Roundable,\n /* @vue/component */\n).extend({\n name: 'v-avatar',\n\n props: {\n left: Boolean,\n right: Boolean,\n size: {\n type: [Number, String],\n default: 48,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-avatar--left': this.left,\n 'v-avatar--right': this.right,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return {\n height: convertToUnit(this.size),\n minWidth: convertToUnit(this.size),\n width: convertToUnit(this.size),\n ...this.measurableStyles,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-avatar',\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n }\n\n return h('div', this.setBackgroundColor(this.color, data), this.$slots.default)\n },\n})\n","// Styles\nimport './VBadge.sass'\n\n// Components\nimport VIcon from '../VIcon/VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from '../../mixins/toggleable'\nimport Transitionable from '../../mixins/transitionable'\nimport { factory as PositionableFactory } from '../../mixins/positionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport {\n convertToUnit,\n getSlot,\n} from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Colorable,\n PositionableFactory(['left', 'bottom']),\n Themeable,\n Toggleable,\n Transitionable,\n/* @vue/component */\n).extend({\n name: 'v-badge',\n\n props: {\n avatar: Boolean,\n bordered: Boolean,\n color: {\n type: String,\n default: 'primary',\n },\n content: { required: false },\n dot: Boolean,\n label: {\n type: String,\n default: '$vuetify.badge',\n },\n icon: String,\n inline: Boolean,\n offsetX: [Number, String],\n offsetY: [Number, String],\n overlap: Boolean,\n tile: Boolean,\n transition: {\n type: String,\n default: 'scale-rotate-transition',\n },\n value: { default: true },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-badge--avatar': this.avatar,\n 'v-badge--bordered': this.bordered,\n 'v-badge--bottom': this.bottom,\n 'v-badge--dot': this.dot,\n 'v-badge--icon': this.icon != null,\n 'v-badge--inline': this.inline,\n 'v-badge--left': this.left,\n 'v-badge--overlap': this.overlap,\n 'v-badge--tile': this.tile,\n ...this.themeClasses,\n }\n },\n computedBottom (): string {\n return this.bottom ? 'auto' : this.computedYOffset\n },\n computedLeft (): string {\n if (this.isRtl) {\n return this.left ? this.computedXOffset : 'auto'\n }\n\n return this.left ? 'auto' : this.computedXOffset\n },\n computedRight (): string {\n if (this.isRtl) {\n return this.left ? 'auto' : this.computedXOffset\n }\n\n return !this.left ? 'auto' : this.computedXOffset\n },\n computedTop (): string {\n return this.bottom ? this.computedYOffset : 'auto'\n },\n computedXOffset (): string {\n return this.calcPosition(this.offsetX)\n },\n computedYOffset (): string {\n return this.calcPosition(this.offsetY)\n },\n isRtl (): boolean {\n return this.$vuetify.rtl\n },\n // Default fallback if offsetX\n // or offsetY are undefined.\n offset (): number {\n if (this.overlap) return this.dot ? 8 : 12\n return this.dot ? 2 : 4\n },\n styles (): object {\n if (this.inline) return {}\n\n return {\n bottom: this.computedBottom,\n left: this.computedLeft,\n right: this.computedRight,\n top: this.computedTop,\n }\n },\n },\n\n methods: {\n calcPosition (offset: string | number): string {\n return `calc(100% - ${convertToUnit(offset || this.offset)})`\n },\n genBadge () {\n const lang = this.$vuetify.lang\n const label = this.$attrs['aria-label'] || lang.t(this.label)\n\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-badge__badge',\n style: this.styles,\n attrs: {\n 'aria-atomic': this.$attrs['aria-atomic'] || 'true',\n 'aria-label': label,\n 'aria-live': this.$attrs['aria-live'] || 'polite',\n title: this.$attrs.title,\n role: this.$attrs.role || 'status',\n },\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n })\n\n const badge = this.$createElement('span', data, [this.genBadgeContent()])\n\n if (!this.transition) return badge\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n mode: this.mode,\n },\n }, [badge])\n },\n genBadgeContent () {\n // Dot prop shows no content\n if (this.dot) return undefined\n\n const slot = getSlot(this, 'badge')\n\n if (slot) return slot\n if (this.content) return String(this.content)\n if (this.icon) return this.$createElement(VIcon, this.icon)\n\n return undefined\n },\n genBadgeWrapper () {\n return this.$createElement('span', {\n staticClass: 'v-badge__wrapper',\n }, [this.genBadge()])\n },\n },\n\n render (h): VNode {\n const badge = [this.genBadgeWrapper()]\n const children = [getSlot(this)]\n const {\n 'aria-atomic': _x,\n 'aria-label': _y,\n 'aria-live': _z,\n role,\n title,\n ...attrs\n } = this.$attrs\n\n if (this.inline && this.left) children.unshift(badge)\n else children.push(badge)\n\n return h('span', {\n staticClass: 'v-badge',\n attrs,\n class: this.classes,\n }, children)\n },\n})\n","// Styles\nimport './VProgressCircular.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utils\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\n\n/* @vue/component */\nexport default Colorable.extend({\n name: 'v-progress-circular',\n\n directives: { intersect },\n\n props: {\n button: Boolean,\n indeterminate: Boolean,\n rotate: {\n type: [Number, String],\n default: 0,\n },\n size: {\n type: [Number, String],\n default: 32,\n },\n width: {\n type: [Number, String],\n default: 4,\n },\n value: {\n type: [Number, String],\n default: 0,\n },\n },\n\n data: () => ({\n radius: 20,\n isVisible: true,\n }),\n\n computed: {\n calculatedSize (): number {\n return Number(this.size) + (this.button ? 8 : 0)\n },\n\n circumference (): number {\n return 2 * Math.PI * this.radius\n },\n\n classes (): object {\n return {\n 'v-progress-circular--visible': this.isVisible,\n 'v-progress-circular--indeterminate': this.indeterminate,\n 'v-progress-circular--button': this.button,\n }\n },\n\n normalizedValue (): number {\n if (this.value < 0) {\n return 0\n }\n\n if (this.value > 100) {\n return 100\n }\n\n return parseFloat(this.value)\n },\n\n strokeDashArray (): number {\n return Math.round(this.circumference * 1000) / 1000\n },\n\n strokeDashOffset (): string {\n return ((100 - this.normalizedValue) / 100) * this.circumference + 'px'\n },\n\n strokeWidth (): number {\n return Number(this.width) / +this.size * this.viewBoxSize * 2\n },\n\n styles (): object {\n return {\n height: convertToUnit(this.calculatedSize),\n width: convertToUnit(this.calculatedSize),\n }\n },\n\n svgStyles (): object {\n return {\n transform: `rotate(${Number(this.rotate)}deg)`,\n }\n },\n\n viewBoxSize (): number {\n return this.radius / (1 - Number(this.width) / +this.size)\n },\n },\n\n methods: {\n genCircle (name: string, offset: string | number): VNode {\n return this.$createElement('circle', {\n class: `v-progress-circular__${name}`,\n attrs: {\n fill: 'transparent',\n cx: 2 * this.viewBoxSize,\n cy: 2 * this.viewBoxSize,\n r: this.radius,\n 'stroke-width': this.strokeWidth,\n 'stroke-dasharray': this.strokeDashArray,\n 'stroke-dashoffset': offset,\n },\n })\n },\n genSvg (): VNode {\n const children = [\n this.indeterminate || this.genCircle('underlay', 0),\n this.genCircle('overlay', this.strokeDashOffset),\n ] as VNodeChildren\n\n return this.$createElement('svg', {\n style: this.svgStyles,\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: `${this.viewBoxSize} ${this.viewBoxSize} ${2 * this.viewBoxSize} ${2 * this.viewBoxSize}`,\n },\n }, children)\n },\n genInfo (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-progress-circular__info',\n }, this.$slots.default)\n },\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isVisible = isIntersecting\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-progress-circular',\n attrs: {\n role: 'progressbar',\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': this.indeterminate ? undefined : this.normalizedValue,\n },\n class: this.classes,\n directives: [{\n name: 'intersect',\n value: this.onObserve,\n }],\n style: this.styles,\n on: this.$listeners,\n }), [\n this.genSvg(),\n this.genInfo(),\n ])\n },\n})\n","import VProgressCircular from './VProgressCircular'\n\nexport { VProgressCircular }\nexport default VProgressCircular\n","// Styles\nimport './VBtn.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VProgressCircular from '../VProgressCircular'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Elevatable from '../../mixins/elevatable'\nimport Positionable from '../../mixins/positionable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator, PropType } from 'vue/types/options'\nimport { RippleOptions } from '../../directives/ripple'\n\nconst baseMixins = mixins(\n VSheet,\n Routable,\n Positionable,\n Sizeable,\n GroupableFactory('btnToggle'),\n ToggleableFactory('inputValue')\n /* @vue/component */\n)\ninterface options extends ExtractVue {\n $el: HTMLElement\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-btn',\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.btnToggle) return ''\n\n return this.btnToggle.activeClass\n },\n } as any as PropValidator,\n block: Boolean,\n depressed: Boolean,\n fab: Boolean,\n icon: Boolean,\n loading: Boolean,\n outlined: Boolean,\n plain: Boolean,\n retainFocusOnClick: Boolean,\n rounded: Boolean,\n tag: {\n type: String,\n default: 'button',\n },\n text: Boolean,\n tile: Boolean,\n type: {\n type: String,\n default: 'button',\n },\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-btn--active',\n }),\n\n computed: {\n classes (): any {\n return {\n 'v-btn': true,\n ...Routable.options.computed.classes.call(this),\n 'v-btn--absolute': this.absolute,\n 'v-btn--block': this.block,\n 'v-btn--bottom': this.bottom,\n 'v-btn--disabled': this.disabled,\n 'v-btn--is-elevated': this.isElevated,\n 'v-btn--fab': this.fab,\n 'v-btn--fixed': this.fixed,\n 'v-btn--has-bg': this.hasBg,\n 'v-btn--icon': this.icon,\n 'v-btn--left': this.left,\n 'v-btn--loading': this.loading,\n 'v-btn--outlined': this.outlined,\n 'v-btn--plain': this.plain,\n 'v-btn--right': this.right,\n 'v-btn--round': this.isRound,\n 'v-btn--rounded': this.rounded,\n 'v-btn--router': this.to,\n 'v-btn--text': this.text,\n 'v-btn--tile': this.tile,\n 'v-btn--top': this.top,\n ...this.themeClasses,\n ...this.groupClasses,\n ...this.elevationClasses,\n ...this.sizeableClasses,\n }\n },\n computedElevation (): string | number | undefined {\n if (this.disabled) return undefined\n\n return Elevatable.options.computed.computedElevation.call(this)\n },\n computedRipple (): RippleOptions | boolean {\n const defaultRipple = this.icon || this.fab ? { circle: true } : true\n if (this.disabled) return false\n else return this.ripple ?? defaultRipple\n },\n hasBg (): boolean {\n return !this.text && !this.plain && !this.outlined && !this.icon\n },\n isElevated (): boolean {\n return Boolean(\n !this.icon &&\n !this.text &&\n !this.outlined &&\n !this.depressed &&\n !this.disabled &&\n !this.plain &&\n (this.elevation == null || Number(this.elevation) > 0)\n )\n },\n isRound (): boolean {\n return Boolean(\n this.icon ||\n this.fab\n )\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['flat', 'text'],\n ['outline', 'outlined'],\n ['round', 'rounded'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n // TODO: Remove this in v3\n !this.retainFocusOnClick && !this.fab && e.detail && this.$el.blur()\n this.$emit('click', e)\n\n this.btnToggle && this.toggle()\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-btn__content',\n }, this.$slots.default)\n },\n genLoader (): VNode {\n return this.$createElement('span', {\n class: 'v-btn__loader',\n }, this.$slots.loader || [this.$createElement(VProgressCircular, {\n props: {\n indeterminate: true,\n size: 23,\n width: 2,\n },\n })])\n },\n },\n\n render (h): VNode {\n const children = [\n this.genContent(),\n this.loading && this.genLoader(),\n ]\n const { tag, data } = this.generateRouteLink()\n const setColor = this.hasBg\n ? this.setBackgroundColor\n : this.setTextColor\n\n if (tag === 'button') {\n data.attrs!.type = this.type\n data.attrs!.disabled = this.disabled\n }\n data.attrs!.value = ['string', 'number'].includes(typeof this.value)\n ? this.value\n : JSON.stringify(this.value)\n\n return h(tag, this.disabled ? data : setColor(this.color, data), children)\n },\n})\n","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'localable',\n\n props: {\n locale: String,\n },\n\n computed: {\n currentLocale (): string {\n return this.locale || this.$vuetify.lang.current\n },\n },\n})\n","import Vue from 'vue'\n\nexport type MouseHandler = (e: MouseEvent | TouchEvent) => any\n\nexport type MouseEvents = {\n [event: string]: {\n event: string\n passive?: boolean\n capture?: boolean\n once?: boolean\n stop?: boolean\n prevent?: boolean\n button?: number\n result?: any\n }\n}\n\nexport type MouseEventsMap = {\n [event: string]: MouseHandler | MouseHandler[]\n}\n\nexport default Vue.extend({\n name: 'mouse',\n\n methods: {\n getDefaultMouseEventHandlers (suffix: string, getEvent: MouseHandler): MouseEventsMap {\n return this.getMouseEventHandlers({\n ['click' + suffix]: { event: 'click' },\n ['contextmenu' + suffix]: { event: 'contextmenu', prevent: true, result: false },\n ['mousedown' + suffix]: { event: 'mousedown' },\n ['mousemove' + suffix]: { event: 'mousemove' },\n ['mouseup' + suffix]: { event: 'mouseup' },\n ['mouseenter' + suffix]: { event: 'mouseenter' },\n ['mouseleave' + suffix]: { event: 'mouseleave' },\n ['touchstart' + suffix]: { event: 'touchstart' },\n ['touchmove' + suffix]: { event: 'touchmove' },\n ['touchend' + suffix]: { event: 'touchend' },\n }, getEvent)\n },\n getMouseEventHandlers (events: MouseEvents, getEvent: MouseHandler): MouseEventsMap {\n const on: MouseEventsMap = {}\n\n for (const event in events) {\n const eventOptions = events[event]\n\n if (!this.$listeners[event]) continue\n\n // TODO somehow pull in modifiers\n\n const prefix = eventOptions.passive ? '&' : ((eventOptions.once ? '~' : '') + (eventOptions.capture ? '!' : ''))\n const key = prefix + eventOptions.event\n\n const handler: MouseHandler = e => {\n const mouseEvent: MouseEvent = e as MouseEvent\n if (eventOptions.button === undefined || (mouseEvent.buttons > 0 && mouseEvent.button === eventOptions.button)) {\n if (eventOptions.prevent) {\n e.preventDefault()\n }\n if (eventOptions.stop) {\n e.stopPropagation()\n }\n\n // Due to TouchEvent target always returns the element that is first placed\n // Even if touch point has since moved outside the interactive area of that element\n // Ref: https://developer.mozilla.org/en-US/docs/Web/API/Touch/target\n // This block of code aims to make sure touchEvent is always dispatched from the element that is being pointed at\n if (e && 'touches' in e) {\n const classSeparator = ' '\n\n const eventTargetClasses = (e.currentTarget as HTMLElement)?.className.split(classSeparator)\n const currentTargets = document.elementsFromPoint(e.changedTouches[0].clientX, e.changedTouches[0].clientY)\n\n // Get \"the same kind\" current hovering target by checking\n // If element has the same class of initial touch start element (which has touch event listener registered)\n const currentTarget = currentTargets.find(t => t.className.split(classSeparator).some(c => eventTargetClasses.includes(c)))\n\n if (currentTarget &&\n !(e.target as HTMLElement)?.isSameNode(currentTarget)\n ) {\n currentTarget.dispatchEvent(new TouchEvent(e.type, {\n changedTouches: e.changedTouches as unknown as Touch[],\n targetTouches: e.targetTouches as unknown as Touch[],\n touches: e.touches as unknown as Touch[],\n }))\n return\n }\n }\n\n this.$emit(event, getEvent(e), e)\n }\n\n return eventOptions.result\n }\n\n if (key in on) {\n /* istanbul ignore next */\n if (Array.isArray(on[key])) {\n (on[key] as MouseHandler[]).push(handler)\n } else {\n on[key] = [on[key], handler] as MouseHandler[]\n }\n } else {\n on[key] = handler\n }\n }\n\n return on\n },\n },\n})\n","function createUTCDate (year: number, month = 0, day = 1) {\n let date\n if (year < 100 && year >= 0) {\n date = new Date(Date.UTC(year, month, day))\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(year)\n }\n } else {\n date = new Date(Date.UTC(year, month, day))\n }\n\n return date\n}\n\nfunction firstWeekOffset (year: number, firstDayOfWeek: number, firstDayOfYear: number) {\n const firstWeekDayInFirstWeek = 7 + firstDayOfWeek - firstDayOfYear\n const firstWeekDayOfYear = (7 + createUTCDate(year, 0, firstWeekDayInFirstWeek).getUTCDay() - firstDayOfWeek) % 7\n\n return -firstWeekDayOfYear + firstWeekDayInFirstWeek - 1\n}\n\nfunction dayOfYear (year: number, month: number, day: number, firstDayOfWeek: number) {\n let dayOfYear = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334][month]\n if (month > 1 && isLeapYear(year)) {\n dayOfYear++\n }\n\n return dayOfYear + day\n}\n\nfunction weeksInYear (year: number, firstDayOfWeek: number, firstDayOfYear: number) {\n const weekOffset = firstWeekOffset(year, firstDayOfWeek, firstDayOfYear)\n const weekOffsetNext = firstWeekOffset(year + 1, firstDayOfWeek, firstDayOfYear)\n const daysInYear = isLeapYear(year) ? 366 : 365\n\n return (daysInYear - weekOffset + weekOffsetNext) / 7\n}\n\nexport function weekNumber (year: number, month: number, day: number, firstDayOfWeek: number, localeFirstDayOfYear: number): number {\n const weekOffset = firstWeekOffset(year, firstDayOfWeek, localeFirstDayOfYear)\n const week = Math.ceil((dayOfYear(year, month, day, firstDayOfWeek) - weekOffset) / 7)\n\n if (week < 1) {\n return week + weeksInYear(year - 1, firstDayOfWeek, localeFirstDayOfYear)\n } else if (week > weeksInYear(year, firstDayOfWeek, localeFirstDayOfYear)) {\n return week - weeksInYear(year, firstDayOfWeek, localeFirstDayOfYear)\n } else {\n return week\n }\n}\n\nexport function isLeapYear (year: number): boolean {\n return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)\n}\n","import { CalendarTimestamp, CalendarFormatter } from 'vuetify/types'\nimport { isLeapYear } from '../../../util/dateTimeUtils'\n\nexport const PARSE_REGEX = /^(\\d{4})-(\\d{1,2})(-(\\d{1,2}))?([^\\d]+(\\d{1,2}))?(:(\\d{1,2}))?(:(\\d{1,2}))?$/\nexport const PARSE_TIME = /(\\d\\d?)(:(\\d\\d?)|)(:(\\d\\d?)|)/\n\nexport const DAYS_IN_MONTH: number[] = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nexport const DAYS_IN_MONTH_LEAP: number[] = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nexport const DAYS_IN_MONTH_MIN = 28\nexport const DAYS_IN_MONTH_MAX = 31\nexport const MONTH_MAX = 12\nexport const MONTH_MIN = 1\nexport const DAY_MIN = 1\nexport const DAYS_IN_WEEK = 7\nexport const MINUTES_IN_HOUR = 60\nexport const MINUTE_MAX = 59\nexport const MINUTES_IN_DAY = 24 * 60\nexport const HOURS_IN_DAY = 24\nexport const HOUR_MAX = 23\nexport const FIRST_HOUR = 0\nexport const OFFSET_YEAR = 10000\nexport const OFFSET_MONTH = 100\nexport const OFFSET_HOUR = 100\nexport const OFFSET_TIME = 10000\n\ntype CalendarTimestampFormatOptions = (timestamp: CalendarTimestamp, short: boolean) => object\ntype CalendarTimestampOperation = (timestamp: CalendarTimestamp) => CalendarTimestamp\nexport type VTime = number | string | {\n hour: number\n minute: number\n}\n\nexport type VTimestampInput = number | string | Date;\n\nexport function getStartOfWeek (timestamp: CalendarTimestamp, weekdays: number[], today?: CalendarTimestamp): CalendarTimestamp {\n const start = copyTimestamp(timestamp)\n findWeekday(start, weekdays[0], prevDay)\n updateFormatted(start)\n if (today) {\n updateRelative(start, today, start.hasTime)\n }\n\n return start\n}\n\nexport function getEndOfWeek (timestamp: CalendarTimestamp, weekdays: number[], today?: CalendarTimestamp): CalendarTimestamp {\n const end = copyTimestamp(timestamp)\n findWeekday(end, weekdays[weekdays.length - 1])\n updateFormatted(end)\n if (today) {\n updateRelative(end, today, end.hasTime)\n }\n\n return end\n}\n\nexport function getStartOfMonth (timestamp: CalendarTimestamp): CalendarTimestamp {\n const start = copyTimestamp(timestamp)\n start.day = DAY_MIN\n updateWeekday(start)\n updateFormatted(start)\n\n return start\n}\n\nexport function getEndOfMonth (timestamp: CalendarTimestamp): CalendarTimestamp {\n const end = copyTimestamp(timestamp)\n end.day = daysInMonth(end.year, end.month)\n updateWeekday(end)\n updateFormatted(end)\n\n return end\n}\n\nexport function validateTime (input: any): input is VTime {\n return (typeof input === 'number' && isFinite(input)) ||\n (!!PARSE_TIME.exec(input)) ||\n (typeof input === 'object' && isFinite(input.hour) && isFinite(input.minute))\n}\n\nexport function parseTime (input: any): number | false {\n if (typeof input === 'number') {\n // when a number is given, it's minutes since 12:00am\n return input\n } else if (typeof input === 'string') {\n // when a string is given, it's a hh:mm:ss format where seconds are optional\n const parts = PARSE_TIME.exec(input)\n if (!parts) {\n return false\n }\n\n return parseInt(parts[1]) * 60 + parseInt(parts[3] || 0)\n } else if (typeof input === 'object') {\n // when an object is given, it must have hour and minute\n if (typeof input.hour !== 'number' || typeof input.minute !== 'number') {\n return false\n }\n\n return input.hour * 60 + input.minute\n } else {\n // unsupported type\n return false\n }\n}\n\nexport function validateTimestamp (input: any): input is VTimestampInput {\n return (typeof input === 'number' && isFinite(input)) ||\n (typeof input === 'string' && !!PARSE_REGEX.exec(input)) ||\n (input instanceof Date)\n}\n\nexport function parseTimestamp (input: VTimestampInput, required?: false, now?: CalendarTimestamp): CalendarTimestamp | null\nexport function parseTimestamp (input: VTimestampInput, required: true, now?: CalendarTimestamp): CalendarTimestamp\nexport function parseTimestamp (input: VTimestampInput, required = false, now?: CalendarTimestamp): CalendarTimestamp | null {\n if (typeof input === 'number' && isFinite(input)) {\n input = new Date(input)\n }\n\n if (input instanceof Date) {\n const date: CalendarTimestamp = parseDate(input)\n\n if (now) {\n updateRelative(date, now, date.hasTime)\n }\n\n return date\n }\n\n if (typeof input !== 'string') {\n if (required) {\n throw new Error(`${input} is not a valid timestamp. It must be a Date, number of milliseconds since Epoch, or a string in the format of YYYY-MM-DD or YYYY-MM-DD hh:mm. Zero-padding is optional and seconds are ignored.`)\n }\n return null\n }\n\n // YYYY-MM-DD hh:mm:ss\n const parts = PARSE_REGEX.exec(input)\n\n if (!parts) {\n if (required) {\n throw new Error(`${input} is not a valid timestamp. It must be a Date, number of milliseconds since Epoch, or a string in the format of YYYY-MM-DD or YYYY-MM-DD hh:mm. Zero-padding is optional and seconds are ignored.`)\n }\n\n return null\n }\n\n const timestamp: CalendarTimestamp = {\n date: input,\n time: '',\n year: parseInt(parts[1]),\n month: parseInt(parts[2]),\n day: parseInt(parts[4]) || 1,\n hour: parseInt(parts[6]) || 0,\n minute: parseInt(parts[8]) || 0,\n weekday: 0,\n hasDay: !!parts[4],\n hasTime: !!(parts[6] && parts[8]),\n past: false,\n present: false,\n future: false,\n }\n\n updateWeekday(timestamp)\n updateFormatted(timestamp)\n\n if (now) {\n updateRelative(timestamp, now, timestamp.hasTime)\n }\n\n return timestamp\n}\n\nexport function parseDate (date: Date): CalendarTimestamp {\n return updateFormatted({\n date: '',\n time: '',\n year: date.getFullYear(),\n month: date.getMonth() + 1,\n day: date.getDate(),\n weekday: date.getDay(),\n hour: date.getHours(),\n minute: date.getMinutes(),\n hasDay: true,\n hasTime: true,\n past: false,\n present: true,\n future: false,\n })\n}\n\nexport function getDayIdentifier (timestamp: { year: number, month: number, day: number }): number {\n return timestamp.year * OFFSET_YEAR + timestamp.month * OFFSET_MONTH + timestamp.day\n}\n\nexport function getTimeIdentifier (timestamp: { hour: number, minute: number }): number {\n return timestamp.hour * OFFSET_HOUR + timestamp.minute\n}\n\nexport function getTimestampIdentifier (timestamp: CalendarTimestamp): number {\n return getDayIdentifier(timestamp) * OFFSET_TIME + getTimeIdentifier(timestamp)\n}\n\nexport function updateRelative (timestamp: CalendarTimestamp, now: CalendarTimestamp, time = false): CalendarTimestamp {\n let a = getDayIdentifier(now)\n let b = getDayIdentifier(timestamp)\n let present = a === b\n\n if (timestamp.hasTime && time && present) {\n a = getTimeIdentifier(now)\n b = getTimeIdentifier(timestamp)\n present = a === b\n }\n\n timestamp.past = b < a\n timestamp.present = present\n timestamp.future = b > a\n\n return timestamp\n}\n\nexport function isTimedless (input: VTimestampInput): input is (Date | number) {\n return (input instanceof Date) || (typeof input === 'number' && isFinite(input))\n}\n\nexport function updateHasTime (timestamp: CalendarTimestamp, hasTime: boolean, now?: CalendarTimestamp): CalendarTimestamp {\n if (timestamp.hasTime !== hasTime) {\n timestamp.hasTime = hasTime\n if (!hasTime) {\n timestamp.hour = HOUR_MAX\n timestamp.minute = MINUTE_MAX\n timestamp.time = getTime(timestamp)\n }\n if (now) {\n updateRelative(timestamp, now, timestamp.hasTime)\n }\n }\n\n return timestamp\n}\n\nexport function updateMinutes (timestamp: CalendarTimestamp, minutes: number, now?: CalendarTimestamp): CalendarTimestamp {\n timestamp.hasTime = true\n timestamp.hour = Math.floor(minutes / MINUTES_IN_HOUR)\n timestamp.minute = minutes % MINUTES_IN_HOUR\n timestamp.time = getTime(timestamp)\n if (now) {\n updateRelative(timestamp, now, true)\n }\n\n return timestamp\n}\n\nexport function updateWeekday (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.weekday = getWeekday(timestamp)\n\n return timestamp\n}\n\nexport function updateFormatted (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.time = getTime(timestamp)\n timestamp.date = getDate(timestamp)\n\n return timestamp\n}\n\nexport function getWeekday (timestamp: CalendarTimestamp): number {\n if (timestamp.hasDay) {\n const _ = Math.floor\n const k = timestamp.day\n const m = ((timestamp.month + 9) % MONTH_MAX) + 1\n const C = _(timestamp.year / 100)\n const Y = (timestamp.year % 100) - (timestamp.month <= 2 ? 1 : 0)\n\n return (((k + _(2.6 * m - 0.2) - 2 * C + Y + _(Y / 4) + _(C / 4)) % 7) + 7) % 7\n }\n\n return timestamp.weekday\n}\n\nexport function daysInMonth (year: number, month: number) {\n return isLeapYear(year) ? DAYS_IN_MONTH_LEAP[month] : DAYS_IN_MONTH[month]\n}\n\nexport function copyTimestamp (timestamp: CalendarTimestamp): CalendarTimestamp {\n const { date, time, year, month, day, weekday, hour, minute, hasDay, hasTime, past, present, future } = timestamp\n\n return { date, time, year, month, day, weekday, hour, minute, hasDay, hasTime, past, present, future }\n}\n\nexport function padNumber (x: number, length: number): string {\n let padded = String(x)\n while (padded.length < length) {\n padded = '0' + padded\n }\n\n return padded\n}\n\nexport function getDate (timestamp: CalendarTimestamp): string {\n let str = `${padNumber(timestamp.year, 4)}-${padNumber(timestamp.month, 2)}`\n\n if (timestamp.hasDay) str += `-${padNumber(timestamp.day, 2)}`\n\n return str\n}\n\nexport function getTime (timestamp: CalendarTimestamp): string {\n if (!timestamp.hasTime) {\n return ''\n }\n\n return `${padNumber(timestamp.hour, 2)}:${padNumber(timestamp.minute, 2)}`\n}\n\nexport function nextMinutes (timestamp: CalendarTimestamp, minutes: number): CalendarTimestamp {\n timestamp.minute += minutes\n while (timestamp.minute > MINUTES_IN_HOUR) {\n timestamp.minute -= MINUTES_IN_HOUR\n timestamp.hour++\n if (timestamp.hour >= HOURS_IN_DAY) {\n nextDay(timestamp)\n timestamp.hour = FIRST_HOUR\n }\n }\n\n return timestamp\n}\n\nexport function nextDay (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.day++\n timestamp.weekday = (timestamp.weekday + 1) % DAYS_IN_WEEK\n if (timestamp.day > DAYS_IN_MONTH_MIN && timestamp.day > daysInMonth(timestamp.year, timestamp.month)) {\n timestamp.day = DAY_MIN\n timestamp.month++\n if (timestamp.month > MONTH_MAX) {\n timestamp.month = MONTH_MIN\n timestamp.year++\n }\n }\n\n return timestamp\n}\n\nexport function prevDay (timestamp: CalendarTimestamp): CalendarTimestamp {\n timestamp.day--\n timestamp.weekday = (timestamp.weekday + 6) % DAYS_IN_WEEK\n if (timestamp.day < DAY_MIN) {\n timestamp.month--\n if (timestamp.month < MONTH_MIN) {\n timestamp.year--\n timestamp.month = MONTH_MAX\n }\n timestamp.day = daysInMonth(timestamp.year, timestamp.month)\n }\n\n return timestamp\n}\n\nexport function relativeDays (\n timestamp: CalendarTimestamp,\n mover: CalendarTimestampOperation = nextDay,\n days = 1\n): CalendarTimestamp {\n while (--days >= 0) mover(timestamp)\n\n return timestamp\n}\n\nexport function diffMinutes (min: CalendarTimestamp, max: CalendarTimestamp) {\n const Y = (max.year - min.year) * 525600\n const M = (max.month - min.month) * 43800\n const D = (max.day - min.day) * 1440\n const h = (max.hour - min.hour) * 60\n const m = (max.minute - min.minute)\n\n return Y + M + D + h + m\n}\n\nexport function findWeekday (timestamp: CalendarTimestamp, weekday: number,\n mover: CalendarTimestampOperation = nextDay, maxDays = 6): CalendarTimestamp {\n while (timestamp.weekday !== weekday && --maxDays >= 0) mover(timestamp)\n\n return timestamp\n}\n\nexport function getWeekdaySkips (weekdays: number[]): number[] {\n const skips: number[] = [1, 1, 1, 1, 1, 1, 1]\n const filled: number[] = [0, 0, 0, 0, 0, 0, 0]\n for (let i = 0; i < weekdays.length; i++) {\n filled[weekdays[i]] = 1\n }\n for (let k = 0; k < DAYS_IN_WEEK; k++) {\n let skip = 1\n for (let j = 1; j < DAYS_IN_WEEK; j++) {\n const next = (k + j) % DAYS_IN_WEEK\n if (filled[next]) {\n break\n }\n skip++\n }\n skips[k] = filled[k] * skip\n }\n\n return skips\n}\n\nexport function timestampToDate (timestamp: CalendarTimestamp): Date {\n const time = `${padNumber(timestamp.hour, 2)}:${padNumber(timestamp.minute, 2)}`\n const date = timestamp.date\n\n return new Date(`${date}T${time}:00+00:00`)\n}\n\nexport function createDayList (\n start: CalendarTimestamp,\n end: CalendarTimestamp,\n now: CalendarTimestamp,\n weekdaySkips: number[],\n max = 42,\n min = 0\n): CalendarTimestamp[] {\n const stop = getDayIdentifier(end)\n const days: CalendarTimestamp[] = []\n let current = copyTimestamp(start)\n let currentIdentifier = 0\n let stopped = currentIdentifier === stop\n\n if (stop < getDayIdentifier(start)) {\n throw new Error('End date is earlier than start date.')\n }\n\n while ((!stopped || days.length < min) && days.length < max) {\n currentIdentifier = getDayIdentifier(current)\n stopped = stopped || currentIdentifier === stop\n if (weekdaySkips[current.weekday] === 0) {\n current = nextDay(current)\n continue\n }\n const day = copyTimestamp(current)\n updateFormatted(day)\n updateRelative(day, now)\n days.push(day)\n current = relativeDays(current, nextDay, weekdaySkips[current.weekday])\n }\n\n if (!days.length) throw new Error('No dates found using specified start date, end date, and weekdays.')\n\n return days\n}\n\nexport function createIntervalList (timestamp: CalendarTimestamp, first: number,\n minutes: number, count: number, now?: CalendarTimestamp): CalendarTimestamp[] {\n const intervals: CalendarTimestamp[] = []\n\n for (let i = 0; i < count; i++) {\n const mins = first + (i * minutes)\n const int = copyTimestamp(timestamp)\n intervals.push(updateMinutes(int, mins, now))\n }\n\n return intervals\n}\n\nexport function createNativeLocaleFormatter (locale: string, getOptions: CalendarTimestampFormatOptions): CalendarFormatter {\n const emptyFormatter: CalendarFormatter = (_t, _s) => ''\n\n if (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined') {\n return emptyFormatter\n }\n\n return (timestamp, short) => {\n try {\n const intlFormatter = new Intl.DateTimeFormat(locale || undefined, getOptions(timestamp, short))\n\n return intlFormatter.format(timestampToDate(timestamp))\n } catch (e) {\n return ''\n }\n }\n}\n","import Vue from 'vue'\n\nimport {\n validateTimestamp,\n parseTimestamp,\n parseDate,\n} from '../util/timestamp'\nimport { CalendarTimestamp } from 'vuetify/types'\n\nexport default Vue.extend({\n name: 'times',\n\n props: {\n now: {\n type: String,\n validator: validateTimestamp,\n },\n },\n\n data: () => ({\n times: {\n now: parseTimestamp('0000-00-00 00:00', true),\n today: parseTimestamp('0000-00-00', true),\n },\n }),\n\n computed: {\n parsedNow (): CalendarTimestamp | null {\n return this.now ? parseTimestamp(this.now, true) : null\n },\n },\n\n watch: {\n parsedNow: 'updateTimes',\n },\n\n created () {\n this.updateTimes()\n this.setPresent()\n },\n\n methods: {\n setPresent (): void {\n this.times.now.present = this.times.today.present = true\n this.times.now.past = this.times.today.past = false\n this.times.now.future = this.times.today.future = false\n },\n updateTimes (): void {\n const now: CalendarTimestamp = this.parsedNow || this.getNow()\n this.updateDay(now, this.times.now)\n this.updateTime(now, this.times.now)\n this.updateDay(now, this.times.today)\n },\n getNow (): CalendarTimestamp {\n return parseDate(new Date())\n },\n updateDay (now: CalendarTimestamp, target: CalendarTimestamp): void {\n if (now.date !== target.date) {\n target.year = now.year\n target.month = now.month\n target.day = now.day\n target.weekday = now.weekday\n target.date = now.date\n }\n },\n updateTime (now: CalendarTimestamp, target: CalendarTimestamp): void {\n if (now.time !== target.time) {\n target.hour = now.hour\n target.minute = now.minute\n target.time = now.time\n }\n },\n },\n})\n","import { CalendarEventParsed, CalendarEventVisual, CalendarTimestamp } from 'vuetify/types'\nimport { getTimestampIdentifier } from '../util/timestamp'\n\nconst MILLIS_IN_DAY = 86400000\n\nexport type GetRange = (event: CalendarEventParsed) => [number, number]\n\nexport function getVisuals (events: CalendarEventParsed[], minStart = 0): CalendarEventVisual[] {\n const visuals = events.map(event => ({\n event,\n columnCount: 0,\n column: 0,\n left: 0,\n width: 100,\n }))\n\n visuals.sort((a, b) => {\n return (Math.max(minStart, a.event.startTimestampIdentifier) - Math.max(minStart, b.event.startTimestampIdentifier)) ||\n (b.event.endTimestampIdentifier - a.event.endTimestampIdentifier)\n })\n\n return visuals\n}\n\nexport interface ColumnGroup {\n start: number\n end: number\n visuals: CalendarEventVisual[]\n}\n\nexport function hasOverlap (s0: number, e0: number, s1: number, e1: number, exclude = true): boolean {\n return exclude ? !(s0 >= e1 || e0 <= s1) : !(s0 > e1 || e0 < s1)\n}\n\nexport function setColumnCount (groups: ColumnGroup[]) {\n groups.forEach(group => {\n group.visuals.forEach(groupVisual => {\n groupVisual.columnCount = groups.length\n })\n })\n}\n\nexport function getRange (event: CalendarEventParsed): [number, number] {\n return [event.startTimestampIdentifier, event.endTimestampIdentifier]\n}\n\nexport function getDayRange (event: CalendarEventParsed): [number, number] {\n return [event.startIdentifier, event.endIdentifier]\n}\n\nexport function getNormalizedRange (event: CalendarEventParsed, dayStart: number): [number, number] {\n return [Math.max(dayStart, event.startTimestampIdentifier), Math.min(dayStart + MILLIS_IN_DAY, event.endTimestampIdentifier)]\n}\n\nexport function getOpenGroup (groups: ColumnGroup[], start: number, end: number, timed: boolean) {\n for (let i = 0; i < groups.length; i++) {\n const group = groups[i]\n let intersected = false\n\n if (hasOverlap(start, end, group.start, group.end, timed)) {\n for (let k = 0; k < group.visuals.length; k++) {\n const groupVisual = group.visuals[k]\n const [groupStart, groupEnd] = timed ? getRange(groupVisual.event) : getDayRange(groupVisual.event)\n\n if (hasOverlap(start, end, groupStart, groupEnd, timed)) {\n intersected = true\n break\n }\n }\n }\n\n if (!intersected) {\n return i\n }\n }\n\n return -1\n}\n\nexport function getOverlapGroupHandler (firstWeekday: number) {\n const handler = {\n groups: [] as ColumnGroup[],\n min: -1,\n max: -1,\n reset: () => {\n handler.groups = []\n handler.min = handler.max = -1\n },\n getVisuals: (day: CalendarTimestamp, dayEvents: CalendarEventParsed[], timed: boolean, reset = false) => {\n if (day.weekday === firstWeekday || reset) {\n handler.reset()\n }\n\n const dayStart = getTimestampIdentifier(day)\n const visuals = getVisuals(dayEvents, dayStart)\n\n visuals.forEach(visual => {\n const [start, end] = timed ? getRange(visual.event) : getDayRange(visual.event)\n\n if (handler.groups.length > 0 && !hasOverlap(start, end, handler.min, handler.max, timed)) {\n setColumnCount(handler.groups)\n handler.reset()\n }\n\n let targetGroup = getOpenGroup(handler.groups, start, end, timed)\n\n if (targetGroup === -1) {\n targetGroup = handler.groups.length\n\n handler.groups.push({ start, end, visuals: [] })\n }\n\n const target = handler.groups[targetGroup]\n target.visuals.push(visual)\n target.start = Math.min(target.start, start)\n target.end = Math.max(target.end, end)\n\n visual.column = targetGroup\n\n if (handler.min === -1) {\n handler.min = start\n handler.max = end\n } else {\n handler.min = Math.min(handler.min, start)\n handler.max = Math.max(handler.max, end)\n }\n })\n\n setColumnCount(handler.groups)\n\n if (timed) {\n handler.reset()\n }\n\n return visuals\n },\n }\n\n return handler\n}\n","import { CalendarEventOverlapMode, CalendarEventVisual } from 'vuetify/types'\nimport { getOverlapGroupHandler, getVisuals, hasOverlap, getNormalizedRange } from './common'\nimport { getTimestampIdentifier } from '../util/timestamp'\n\ninterface Group {\n start: number\n end: number\n visuals: CalendarEventVisual[]\n}\n\ninterface Node {\n parent: Node | null\n sibling: boolean\n index: number\n visual: CalendarEventVisual\n start: number\n end: number\n children: Node[]\n}\n\nconst FULL_WIDTH = 100\n\nconst DEFAULT_OFFSET = 5\n\nconst WIDTH_MULTIPLIER = 1.7\n\n/**\n * Variation of column mode where events can be stacked. The priority of this\n * mode is to stack events together taking up the least amount of space while\n * trying to ensure the content of the event is always visible as well as its\n * start and end. A sibling column has intersecting event content and must be\n * placed beside each other. Non-sibling columns are offset by 5% from the\n * previous column. The width is scaled by 1.7 so the events overlap and\n * whitespace is reduced. If there is a hole in columns the event width is\n * scaled up so it intersects with the next column. The columns have equal\n * width in the space they are given. If the event doesn't have any to the\n * right of it that intersect with it's content it's right side is extended\n * to the right side.\n */\n\nexport const stack: CalendarEventOverlapMode = (events, firstWeekday, overlapThreshold) => {\n const handler = getOverlapGroupHandler(firstWeekday)\n\n // eslint-disable-next-line max-statements\n return (day, dayEvents, timed, reset) => {\n if (!timed) {\n return handler.getVisuals(day, dayEvents, timed, reset)\n }\n\n const dayStart = getTimestampIdentifier(day)\n const visuals = getVisuals(dayEvents, dayStart)\n const groups = getGroups(visuals, dayStart)\n\n for (const group of groups) {\n const nodes: Node[] = []\n\n for (const visual of group.visuals) {\n const child = getNode(visual, dayStart)\n const index = getNextIndex(child, nodes)\n\n if (index === false) {\n const parent = getParent(child, nodes)\n if (parent) {\n child.parent = parent\n child.sibling = hasOverlap(child.start, child.end, parent.start, addTime(parent.start, overlapThreshold))\n child.index = parent.index + 1\n parent.children.push(child)\n }\n } else {\n const [parent] = getOverlappingRange(child, nodes, index - 1, index - 1)\n const children = getOverlappingRange(child, nodes, index + 1, index + nodes.length, true)\n\n child.children = children\n child.index = index\n\n if (parent) {\n child.parent = parent\n child.sibling = hasOverlap(child.start, child.end, parent.start, addTime(parent.start, overlapThreshold))\n parent.children.push(child)\n }\n\n for (const grand of children) {\n if (grand.parent === parent) {\n grand.parent = child\n }\n\n const grandNext = grand.index - child.index <= 1\n if (grandNext && child.sibling &&\n hasOverlap(child.start, addTime(child.start, overlapThreshold), grand.start, grand.end)) {\n grand.sibling = true\n }\n }\n }\n\n nodes.push(child)\n }\n\n calculateBounds(nodes, overlapThreshold)\n }\n\n visuals.sort((a, b) => (a.left - b.left) || (a.event.startTimestampIdentifier - b.event.startTimestampIdentifier))\n\n return visuals\n }\n}\n\nfunction calculateBounds (nodes: Node[], overlapThreshold: number) {\n for (const node of nodes) {\n const { visual, parent } = node\n const columns = getMaxChildIndex(node) + 1\n const spaceLeft = parent ? parent.visual.left : 0\n const spaceWidth = FULL_WIDTH - spaceLeft\n const offset = Math.min(DEFAULT_OFFSET, FULL_WIDTH / columns)\n const columnWidthMultiplier = getColumnWidthMultiplier(node, nodes)\n const columnOffset = spaceWidth / (columns - node.index + 1)\n const columnWidth = spaceWidth / (columns - node.index + (node.sibling ? 1 : 0)) * columnWidthMultiplier\n\n if (parent) {\n visual.left = node.sibling\n ? spaceLeft + columnOffset\n : spaceLeft + offset\n }\n\n visual.width = hasFullWidth(node, nodes, overlapThreshold)\n ? FULL_WIDTH - visual.left\n : Math.min(FULL_WIDTH - visual.left, columnWidth * WIDTH_MULTIPLIER)\n }\n}\n\nfunction getColumnWidthMultiplier (node: Node, nodes: Node[]): number {\n if (!node.children.length) {\n return 1\n }\n\n const maxColumn = node.index + nodes.length\n const minColumn = node.children.reduce((min, c) => Math.min(min, c.index), maxColumn)\n\n return minColumn - node.index\n}\n\nfunction getOverlappingIndices (node: Node, nodes: Node[]): number[] {\n const indices: number[] = []\n for (const other of nodes) {\n if (hasOverlap(node.start, node.end, other.start, other.end)) {\n indices.push(other.index)\n }\n }\n return indices\n}\n\nfunction getNextIndex (node: Node, nodes: Node[]): number | false {\n const indices = getOverlappingIndices(node, nodes)\n indices.sort()\n\n for (let i = 0; i < indices.length; i++) {\n if (i < indices[i]) {\n return i\n }\n }\n return false\n}\n\nfunction getOverlappingRange (node: Node, nodes: Node[], indexMin: number, indexMax: number, returnFirstColumn = false): Node[] {\n const overlapping: Node[] = []\n for (const other of nodes) {\n if (other.index >= indexMin && other.index <= indexMax && hasOverlap(node.start, node.end, other.start, other.end)) {\n overlapping.push(other)\n }\n }\n if (returnFirstColumn && overlapping.length > 0) {\n const first = overlapping.reduce((min, n) => Math.min(min, n.index), overlapping[0].index)\n return overlapping.filter(n => n.index === first)\n }\n return overlapping\n}\n\nfunction getParent (node: Node, nodes: Node[]): Node | null {\n let parent: Node | null = null\n for (const other of nodes) {\n if (hasOverlap(node.start, node.end, other.start, other.end) && (parent === null || other.index > parent.index)) {\n parent = other\n }\n }\n return parent\n}\n\nfunction hasFullWidth (node: Node, nodes: Node[], overlapThreshold: number): boolean {\n for (const other of nodes) {\n if (other !== node &&\n other.index > node.index &&\n hasOverlap(node.start, addTime(node.start, overlapThreshold), other.start, other.end)) {\n return false\n }\n }\n\n return true\n}\n\nfunction getGroups (visuals: CalendarEventVisual[], dayStart: number): Group[] {\n const groups: Group[] = []\n\n for (const visual of visuals) {\n const [start, end] = getNormalizedRange(visual.event, dayStart)\n let added = false\n\n for (const group of groups) {\n if (hasOverlap(start, end, group.start, group.end)) {\n group.visuals.push(visual)\n group.end = Math.max(group.end, end)\n added = true\n break\n }\n }\n\n if (!added) {\n groups.push({ start, end, visuals: [visual] })\n }\n }\n\n return groups\n}\n\nfunction getNode (visual: CalendarEventVisual, dayStart: number): Node {\n const [start, end] = getNormalizedRange(visual.event, dayStart)\n\n return {\n parent: null,\n sibling: true,\n index: 0,\n visual,\n start,\n end,\n children: [],\n }\n}\n\nfunction getMaxChildIndex (node: Node): number {\n let max = node.index\n for (const child of node.children) {\n const childMax = getMaxChildIndex(child)\n if (childMax > max) {\n max = childMax\n }\n }\n return max\n}\n\nfunction addTime (identifier: number, minutes: number): number {\n const removeMinutes = identifier % 100\n const totalMinutes = removeMinutes + minutes\n const addHours = Math.floor(totalMinutes / 60)\n const addMinutes = totalMinutes % 60\n\n return identifier - removeMinutes + addHours * 100 + addMinutes\n}\n","import { CalendarEventOverlapMode } from 'vuetify/types'\nimport { getOverlapGroupHandler } from './common'\n\nconst FULL_WIDTH = 100\n\nexport const column: CalendarEventOverlapMode = (events, firstWeekday, overlapThreshold) => {\n const handler = getOverlapGroupHandler(firstWeekday)\n\n return (day, dayEvents, timed, reset) => {\n const visuals = handler.getVisuals(day, dayEvents, timed, reset)\n\n if (timed) {\n visuals.forEach(visual => {\n visual.left = visual.column * FULL_WIDTH / visual.columnCount\n visual.width = FULL_WIDTH / visual.columnCount\n })\n }\n\n return visuals\n }\n}\n","import { CalendarEventOverlapMode } from 'vuetify/types'\nimport { stack } from './stack'\nimport { column } from './column'\n\nexport const CalendarEventOverlapModes: Record = {\n stack,\n column,\n}\n","\nimport { validateTimestamp, parseDate, DAYS_IN_WEEK, validateTime } from './timestamp'\nimport { PropType } from 'vue'\nimport { CalendarEvent, CalendarFormatter, CalendarTimestamp, CalendarEventOverlapMode, CalendarEventNameFunction, CalendarEventColorFunction, CalendarEventCategoryFunction, CalendarEventTimedFunction, CalendarCategoryTextFunction, CalendarCategory } from 'vuetify/types'\nimport { CalendarEventOverlapModes } from '../modes'\nimport { PropValidator } from 'vue/types/options'\n\nexport default {\n base: {\n start: {\n type: [String, Number, Date],\n validate: validateTimestamp,\n default: () => parseDate(new Date()).date,\n },\n end: {\n type: [String, Number, Date],\n validate: validateTimestamp,\n },\n weekdays: {\n type: [Array, String] as PropType,\n default: () => [0, 1, 2, 3, 4, 5, 6],\n validate: validateWeekdays,\n },\n hideHeader: {\n type: Boolean,\n },\n shortWeekdays: {\n type: Boolean,\n default: true,\n },\n weekdayFormat: {\n type: Function as PropType,\n default: null,\n },\n dayFormat: {\n type: Function as PropType,\n default: null,\n },\n },\n intervals: {\n maxDays: {\n type: Number,\n default: 7,\n },\n shortIntervals: {\n type: Boolean,\n default: true,\n },\n intervalHeight: {\n type: [Number, String],\n default: 48,\n validate: validateNumber,\n },\n intervalWidth: {\n type: [Number, String],\n default: 60,\n validate: validateNumber,\n },\n intervalMinutes: {\n type: [Number, String],\n default: 60,\n validate: validateNumber,\n },\n firstInterval: {\n type: [Number, String],\n default: 0,\n validate: validateNumber,\n },\n firstTime: {\n type: [Number, String, Object],\n validate: validateTime,\n },\n intervalCount: {\n type: [Number, String],\n default: 24,\n validate: validateNumber,\n },\n intervalFormat: {\n type: Function as PropType,\n default: null,\n },\n intervalStyle: {\n type: Function as PropType<(interval: CalendarTimestamp) => object>,\n default: null,\n },\n showIntervalLabel: {\n type: Function as PropType<(interval: CalendarTimestamp) => boolean>,\n default: null,\n },\n },\n weeks: {\n localeFirstDayOfYear: {\n type: [String, Number],\n default: 0,\n },\n minWeeks: {\n validate: validateNumber,\n default: 1,\n },\n shortMonths: {\n type: Boolean,\n default: true,\n },\n showMonthOnFirst: {\n type: Boolean,\n default: true,\n },\n showWeek: Boolean,\n monthFormat: {\n type: Function as PropType,\n default: null,\n },\n },\n calendar: {\n type: {\n type: String,\n default: 'month',\n },\n value: {\n type: [String, Number, Date] as PropType,\n validate: validateTimestamp,\n },\n },\n category: {\n categories: {\n type: [Array, String] as PropType,\n default: '',\n },\n categoryText: {\n type: [String, Function] as PropType,\n },\n categoryHideDynamic: {\n type: Boolean,\n },\n categoryShowAll: {\n type: Boolean,\n },\n categoryForInvalid: {\n type: String,\n default: '',\n },\n categoryDays: {\n type: [Number, String],\n default: 1,\n validate: (x: any) => isFinite(parseInt(x)) && parseInt(x) > 0,\n },\n },\n events: {\n events: {\n type: Array,\n default: () => [],\n } as PropValidator,\n eventStart: {\n type: String,\n default: 'start',\n },\n eventEnd: {\n type: String,\n default: 'end',\n },\n eventTimed: {\n type: [String, Function] as PropType,\n default: 'timed',\n },\n eventCategory: {\n type: [String, Function] as PropType,\n default: 'category',\n },\n eventHeight: {\n type: Number,\n default: 20,\n },\n eventColor: {\n type: [String, Function] as PropType,\n default: 'primary',\n },\n eventTextColor: {\n type: [String, Function] as PropType,\n default: 'white',\n },\n eventName: {\n type: [String, Function] as PropType,\n default: 'name',\n },\n eventOverlapThreshold: {\n type: [String, Number],\n default: 60,\n },\n eventOverlapMode: {\n type: [String, Function],\n default: 'stack',\n validate: (mode: any) => mode in CalendarEventOverlapModes || typeof mode === 'function',\n } as PropValidator<'stack' | 'column' | CalendarEventOverlapMode>,\n eventMore: {\n type: Boolean,\n default: true,\n },\n eventMoreText: {\n type: String,\n default: '$vuetify.calendar.moreEvents',\n },\n eventRipple: {\n type: [Boolean, Object],\n default: null,\n },\n eventMarginBottom: {\n type: Number,\n default: 1,\n },\n },\n}\n\nexport function validateNumber (input: any): boolean {\n return isFinite(parseInt(input))\n}\n\nexport function validateWeekdays (input: string | (number | string)[]): boolean {\n if (typeof input === 'string') {\n input = input.split(',')\n }\n\n if (Array.isArray(input)) {\n const ints = input.map(x => parseInt(x))\n\n if (ints.length > DAYS_IN_WEEK || ints.length === 0) {\n return false\n }\n\n const visited: Record = {}\n let wrapped = false\n\n for (let i = 0; i < ints.length; i++) {\n const x = ints[i]\n\n if (!isFinite(x) || x < 0 || x >= DAYS_IN_WEEK) {\n return false\n }\n\n if (i > 0) {\n const d = x - ints[i - 1]\n if (d < 0) {\n if (wrapped) {\n return false\n }\n wrapped = true\n } else if (d === 0) {\n return false\n }\n }\n\n if (visited[x]) {\n return false\n }\n visited[x] = true\n }\n\n return true\n }\n\n return false\n}\n","\n// Mixins\nimport mixins from '../../../util/mixins'\nimport Colorable from '../../../mixins/colorable'\nimport Localable from '../../../mixins/localable'\nimport Mouse from './mouse'\nimport Themeable from '../../../mixins/themeable'\nimport Times from './times'\n\n// Directives\nimport Resize from '../../../directives/resize'\n\n// Util\nimport props from '../util/props'\nimport {\n parseTimestamp,\n getWeekdaySkips,\n createDayList,\n createNativeLocaleFormatter,\n getStartOfWeek,\n getEndOfWeek,\n getTimestampIdentifier,\n} from '../util/timestamp'\nimport { CalendarTimestamp, CalendarFormatter } from 'vuetify/types'\n\nexport default mixins(\n Colorable,\n Localable,\n Mouse,\n Themeable,\n Times\n/* @vue/component */\n).extend({\n name: 'calendar-base',\n\n directives: {\n Resize,\n },\n\n props: props.base,\n\n computed: {\n parsedWeekdays (): number[] {\n return Array.isArray(this.weekdays)\n ? this.weekdays\n : (this.weekdays || '').split(',').map(x => parseInt(x, 10))\n },\n weekdaySkips (): number[] {\n return getWeekdaySkips(this.parsedWeekdays)\n },\n weekdaySkipsReverse (): number [] {\n const reversed = this.weekdaySkips.slice()\n reversed.reverse()\n return reversed\n },\n parsedStart (): CalendarTimestamp {\n return parseTimestamp(this.start, true)\n },\n parsedEnd (): CalendarTimestamp {\n const start = this.parsedStart\n const end: CalendarTimestamp = this.end ? parseTimestamp(this.end) || start : start\n\n return getTimestampIdentifier(end) < getTimestampIdentifier(start) ? start : end\n },\n days (): CalendarTimestamp[] {\n return createDayList(\n this.parsedStart,\n this.parsedEnd,\n this.times.today,\n this.weekdaySkips\n )\n },\n dayFormatter (): CalendarFormatter {\n if (this.dayFormat) {\n return this.dayFormat as CalendarFormatter\n }\n\n const options = { timeZone: 'UTC', day: 'numeric' }\n\n return createNativeLocaleFormatter(\n this.currentLocale,\n (_tms, _short) => options\n )\n },\n weekdayFormatter (): CalendarFormatter {\n if (this.weekdayFormat) {\n return this.weekdayFormat as CalendarFormatter\n }\n\n const longOptions = { timeZone: 'UTC', weekday: 'long' }\n const shortOptions = { timeZone: 'UTC', weekday: 'short' }\n\n return createNativeLocaleFormatter(\n this.currentLocale,\n (_tms, short) => short ? shortOptions : longOptions\n )\n },\n },\n\n methods: {\n getRelativeClasses (timestamp: CalendarTimestamp, outside = false): object {\n return {\n 'v-present': timestamp.present,\n 'v-past': timestamp.past,\n 'v-future': timestamp.future,\n 'v-outside': outside,\n }\n },\n getStartOfWeek (timestamp: CalendarTimestamp): CalendarTimestamp {\n return getStartOfWeek(timestamp, this.parsedWeekdays, this.times.today)\n },\n getEndOfWeek (timestamp: CalendarTimestamp): CalendarTimestamp {\n return getEndOfWeek(timestamp, this.parsedWeekdays, this.times.today)\n },\n getFormatter (options: object): CalendarFormatter {\n return createNativeLocaleFormatter(\n this.locale,\n (_tms, _short) => options\n )\n },\n },\n})\n","import {\n parseTimestamp,\n getDayIdentifier,\n getTimestampIdentifier,\n isTimedless,\n updateHasTime,\n} from './timestamp'\nimport { CalendarTimestamp, CalendarEvent, CalendarEventParsed } from 'vuetify/types'\n\nexport function parseEvent (\n input: CalendarEvent,\n index: number,\n startProperty: string,\n endProperty: string,\n timed = false,\n category: string | false = false,\n): CalendarEventParsed {\n const startInput = input[startProperty]\n const endInput = input[endProperty]\n const startParsed: CalendarTimestamp = parseTimestamp(startInput, true)\n const endParsed: CalendarTimestamp = (endInput ? parseTimestamp(endInput, true) : startParsed)\n const start: CalendarTimestamp = isTimedless(startInput)\n ? updateHasTime(startParsed, timed)\n : startParsed\n const end: CalendarTimestamp = isTimedless(endInput)\n ? updateHasTime(endParsed, timed)\n : endParsed\n const startIdentifier: number = getDayIdentifier(start)\n const startTimestampIdentifier: number = getTimestampIdentifier(start)\n const endIdentifier: number = getDayIdentifier(end)\n const endOffset: number = start.hasTime ? 0 : 2359\n const endTimestampIdentifier: number = getTimestampIdentifier(end) + endOffset\n const allDay = !start.hasTime\n\n return { input, start, startIdentifier, startTimestampIdentifier, end, endIdentifier, endTimestampIdentifier, allDay, index, category }\n}\n\nexport function isEventOn (event: CalendarEventParsed, dayIdentifier: number): boolean {\n return dayIdentifier >= event.startIdentifier && dayIdentifier <= event.endIdentifier\n}\n\nexport function isEventHiddenOn (event: CalendarEventParsed, day: CalendarTimestamp): boolean {\n return event.end.time === '00:00' && event.end.date === day.date && event.start.date !== day.date\n}\n\nexport function isEventStart (event: CalendarEventParsed, day: CalendarTimestamp, dayIdentifier: number, firstWeekday: number): boolean {\n return dayIdentifier === event.startIdentifier || (firstWeekday === day.weekday && isEventOn(event, dayIdentifier))\n}\n\nexport function isEventOverlapping (event: CalendarEventParsed, startIdentifier: number, endIdentifier: number): boolean {\n return startIdentifier <= event.endIdentifier && endIdentifier >= event.startIdentifier\n}\n","// Styles\nimport './calendar-with-events.sass'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\n// Directives\nimport ripple from '../../../directives/ripple'\n\n// Mixins\nimport CalendarBase from './calendar-base'\n\n// Helpers\nimport { escapeHTML } from '../../../util/helpers'\n\n// Util\nimport props from '../util/props'\nimport {\n CalendarEventOverlapModes,\n} from '../modes'\nimport {\n getDayIdentifier, diffMinutes,\n} from '../util/timestamp'\nimport {\n parseEvent,\n isEventStart,\n isEventOn,\n isEventOverlapping,\n isEventHiddenOn,\n} from '../util/events'\nimport {\n CalendarTimestamp,\n CalendarEventParsed,\n CalendarEventVisual,\n CalendarEventColorFunction,\n CalendarEventNameFunction,\n CalendarEventTimedFunction,\n CalendarDaySlotScope,\n CalendarDayBodySlotScope,\n CalendarEventOverlapMode,\n CalendarEvent,\n CalendarEventCategoryFunction,\n CalendarCategory,\n} from 'vuetify/types'\n\n// Types\ntype VEventGetter = (day: D) => CalendarEventParsed[]\n\ntype VEventVisualToNode = (visual: CalendarEventVisual, day: D) => VNode | false\n\ntype VEventsToNodes = (\n day: D,\n getter: VEventGetter,\n mapper: VEventVisualToNode,\n timed: boolean) => VNode[] | undefined\n\ntype VDailyEventsMap = {\n [date: string]: {\n parent: HTMLElement\n more: HTMLElement | null\n events: HTMLElement[]\n }\n}\n\ninterface VEventScopeInput {\n eventParsed: CalendarEventParsed\n day: CalendarDaySlotScope\n start: boolean\n end: boolean\n timed: boolean\n}\n\nconst WIDTH_FULL = 100\nconst WIDTH_START = 95\nconst MINUTES_IN_DAY = 1440\n\n/* @vue/component */\nexport default CalendarBase.extend({\n name: 'calendar-with-events',\n\n directives: {\n ripple,\n },\n\n props: {\n ...props.events,\n ...props.calendar,\n ...props.category,\n },\n\n computed: {\n noEvents (): boolean {\n return this.events.length === 0\n },\n parsedEvents (): CalendarEventParsed[] {\n return this.events.map(this.parseEvent)\n },\n parsedEventOverlapThreshold (): number {\n return parseInt(this.eventOverlapThreshold)\n },\n eventTimedFunction (): CalendarEventTimedFunction {\n return typeof this.eventTimed === 'function'\n ? this.eventTimed\n : event => !!event[this.eventTimed as string]\n },\n eventCategoryFunction (): CalendarEventCategoryFunction {\n return typeof this.eventCategory === 'function'\n ? this.eventCategory\n : event => event[this.eventCategory as string]\n },\n eventTextColorFunction (): CalendarEventColorFunction {\n return typeof this.eventTextColor === 'function'\n ? this.eventTextColor\n : () => this.eventTextColor as string\n },\n eventNameFunction (): CalendarEventNameFunction {\n return typeof this.eventName === 'function'\n ? this.eventName\n : (event, timedEvent) => escapeHTML(event.input[this.eventName as string] as string || '')\n },\n eventModeFunction (): CalendarEventOverlapMode {\n return typeof this.eventOverlapMode === 'function'\n ? this.eventOverlapMode\n : CalendarEventOverlapModes[this.eventOverlapMode]\n },\n eventWeekdays (): number[] {\n return this.parsedWeekdays\n },\n categoryMode (): boolean {\n return this.type === 'category'\n },\n },\n\n methods: {\n eventColorFunction (e: CalendarEvent): string {\n return typeof this.eventColor === 'function'\n ? this.eventColor(e)\n : e.color || this.eventColor\n },\n parseEvent (input: CalendarEvent, index = 0): CalendarEventParsed {\n return parseEvent(\n input,\n index,\n this.eventStart,\n this.eventEnd,\n this.eventTimedFunction(input),\n this.categoryMode ? this.eventCategoryFunction(input) : false,\n )\n },\n formatTime (withTime: CalendarTimestamp, ampm: boolean): string {\n const formatter = this.getFormatter({\n timeZone: 'UTC',\n hour: 'numeric',\n minute: withTime.minute > 0 ? 'numeric' : undefined,\n })\n\n return formatter(withTime, true)\n },\n updateEventVisibility () {\n if (this.noEvents || !this.eventMore) {\n return\n }\n\n const eventHeight = this.eventHeight\n const eventsMap = this.getEventsMap()\n\n for (const date in eventsMap) {\n const { parent, events, more } = eventsMap[date]\n if (!more) {\n break\n }\n\n const parentBounds = parent.getBoundingClientRect()\n const last = events.length - 1\n const eventsSorted = events.map(event => ({\n event,\n bottom: event.getBoundingClientRect().bottom,\n })).sort((a, b) => a.bottom - b.bottom)\n let hidden = 0\n\n for (let i = 0; i <= last; i++) {\n const bottom = eventsSorted[i].bottom\n const hide = i === last\n ? (bottom > parentBounds.bottom)\n : (bottom + eventHeight > parentBounds.bottom)\n\n if (hide) {\n eventsSorted[i].event.style.display = 'none'\n hidden++\n }\n }\n\n if (hidden) {\n more.style.display = ''\n more.innerHTML = this.$vuetify.lang.t(this.eventMoreText, hidden)\n } else {\n more.style.display = 'none'\n }\n }\n },\n getEventsMap (): VDailyEventsMap {\n const eventsMap: VDailyEventsMap = {}\n const elements = this.$refs.events as HTMLElement[]\n\n if (!elements || !elements.forEach) {\n return eventsMap\n }\n\n elements.forEach(el => {\n const date = el.getAttribute('data-date')\n if (el.parentElement && date) {\n if (!(date in eventsMap)) {\n eventsMap[date] = {\n parent: el.parentElement,\n more: null,\n events: [],\n }\n }\n if (el.getAttribute('data-more')) {\n eventsMap[date].more = el\n } else {\n eventsMap[date].events.push(el)\n el.style.display = ''\n }\n }\n })\n\n return eventsMap\n },\n genDayEvent ({ event }: CalendarEventVisual, day: CalendarDaySlotScope): VNode {\n const eventHeight = this.eventHeight\n const eventMarginBottom = this.eventMarginBottom\n const dayIdentifier = getDayIdentifier(day)\n const week = day.week\n const start = dayIdentifier === event.startIdentifier\n let end = dayIdentifier === event.endIdentifier\n let width = WIDTH_START\n\n if (!this.categoryMode) {\n for (let i = day.index + 1; i < week.length; i++) {\n const weekdayIdentifier = getDayIdentifier(week[i])\n if (event.endIdentifier >= weekdayIdentifier) {\n width += WIDTH_FULL\n end = end || weekdayIdentifier === event.endIdentifier\n } else {\n end = true\n break\n }\n }\n }\n const scope = { eventParsed: event, day, start, end, timed: false }\n\n return this.genEvent(event, scope, false, {\n staticClass: 'v-event',\n class: {\n 'v-event-start': start,\n 'v-event-end': end,\n },\n style: {\n height: `${eventHeight}px`,\n width: `${width}%`,\n 'margin-bottom': `${eventMarginBottom}px`,\n },\n attrs: {\n 'data-date': day.date,\n },\n key: event.index,\n ref: 'events',\n refInFor: true,\n })\n },\n genTimedEvent ({ event, left, width }: CalendarEventVisual, day: CalendarDayBodySlotScope): VNode | false {\n if (day.timeDelta(event.end) < 0 || day.timeDelta(event.start) >= 1 || isEventHiddenOn(event, day)) {\n return false\n }\n\n const dayIdentifier = getDayIdentifier(day)\n const start = event.startIdentifier >= dayIdentifier\n const end = event.endIdentifier > dayIdentifier\n const top = start ? day.timeToY(event.start) : 0\n const bottom = end ? day.timeToY(MINUTES_IN_DAY) : day.timeToY(event.end)\n const height = Math.max(this.eventHeight, bottom - top)\n const scope = { eventParsed: event, day, start, end, timed: true }\n\n return this.genEvent(event, scope, true, {\n staticClass: 'v-event-timed',\n style: {\n top: `${top}px`,\n height: `${height}px`,\n left: `${left}%`,\n width: `${width}%`,\n },\n })\n },\n genEvent (event: CalendarEventParsed, scopeInput: VEventScopeInput, timedEvent: boolean, data: VNodeData): VNode {\n const slot = this.$scopedSlots.event\n const text = this.eventTextColorFunction(event.input)\n const background = this.eventColorFunction(event.input)\n const overlapsNoon = event.start.hour < 12 && event.end.hour >= 12\n const singline = diffMinutes(event.start, event.end) <= this.parsedEventOverlapThreshold\n const formatTime = this.formatTime\n const timeSummary = () => formatTime(event.start, overlapsNoon) + ' - ' + formatTime(event.end, true)\n const eventSummary = () => {\n const name = this.eventNameFunction(event, timedEvent)\n if (event.start.hasTime) {\n const eventSummaryClass = 'v-event-summary'\n if (timedEvent) {\n const time = timeSummary()\n const delimiter = singline ? ', ' : '
'\n\n return `${name}${delimiter}${time}`\n } else {\n const time = formatTime(event.start, true)\n\n return `${time} ${name}`\n }\n }\n\n return name\n }\n\n const scope = {\n ...scopeInput,\n event: event.input,\n outside: scopeInput.day.outside,\n singline,\n overlapsNoon,\n formatTime,\n timeSummary,\n eventSummary,\n }\n\n return this.$createElement('div',\n this.setTextColor(text,\n this.setBackgroundColor(background, {\n on: this.getDefaultMouseEventHandlers(':event', nativeEvent => ({ ...scope, nativeEvent })),\n directives: [{\n name: 'ripple',\n value: this.eventRipple ?? true,\n }],\n ...data,\n })\n ), slot\n ? slot(scope)\n : [this.genName(eventSummary)]\n )\n },\n genName (eventSummary: () => string): VNode {\n return this.$createElement('div', {\n staticClass: 'pl-1',\n domProps: {\n innerHTML: eventSummary(),\n },\n })\n },\n genPlaceholder (day: CalendarTimestamp): VNode {\n const height = this.eventHeight + this.eventMarginBottom\n\n return this.$createElement('div', {\n style: {\n height: `${height}px`,\n },\n attrs: {\n 'data-date': day.date,\n },\n ref: 'events',\n refInFor: true,\n })\n },\n genMore (day: CalendarDaySlotScope): VNode {\n const eventHeight = this.eventHeight\n const eventMarginBottom = this.eventMarginBottom\n\n return this.$createElement('div', {\n staticClass: 'v-event-more pl-1',\n class: {\n 'v-outside': day.outside,\n },\n attrs: {\n 'data-date': day.date,\n 'data-more': 1,\n },\n directives: [{\n name: 'ripple',\n value: this.eventRipple ?? true,\n }],\n on: this.getDefaultMouseEventHandlers(':more', nativeEvent => {\n return { nativeEvent, ...day }\n }),\n\n style: {\n display: 'none',\n height: `${eventHeight}px`,\n 'margin-bottom': `${eventMarginBottom}px`,\n },\n ref: 'events',\n refInFor: true,\n })\n },\n getVisibleEvents (): CalendarEventParsed[] {\n const start = getDayIdentifier(this.days[0])\n const end = getDayIdentifier(this.days[this.days.length - 1])\n\n return this.parsedEvents.filter(\n event => isEventOverlapping(event, start, end)\n )\n },\n isEventForCategory (event: CalendarEventParsed, category: CalendarCategory): boolean {\n return !this.categoryMode ||\n (typeof category === 'object' && category.categoryName &&\n category.categoryName === event.category) ||\n (typeof event.category === 'string' && category === event.category) ||\n (typeof event.category !== 'string' && category === null)\n },\n getEventsForDay (day: CalendarDaySlotScope): CalendarEventParsed[] {\n const identifier = getDayIdentifier(day)\n const firstWeekday = this.eventWeekdays[0]\n\n return this.parsedEvents.filter(\n event => isEventStart(event, day, identifier, firstWeekday)\n )\n },\n getEventsForDayAll (day: CalendarDaySlotScope): CalendarEventParsed[] {\n const identifier = getDayIdentifier(day)\n const firstWeekday = this.eventWeekdays[0]\n\n return this.parsedEvents.filter(\n event => event.allDay &&\n (this.categoryMode ? isEventOn(event, identifier) : isEventStart(event, day, identifier, firstWeekday)) &&\n this.isEventForCategory(event, day.category)\n )\n },\n getEventsForDayTimed (day: CalendarDaySlotScope): CalendarEventParsed[] {\n const identifier = getDayIdentifier(day)\n return this.parsedEvents.filter(\n event => !event.allDay &&\n isEventOn(event, identifier) &&\n this.isEventForCategory(event, day.category)\n )\n },\n getScopedSlots () {\n if (this.noEvents) {\n return { ...this.$scopedSlots }\n }\n\n const mode = this.eventModeFunction(\n this.parsedEvents,\n this.eventWeekdays[0],\n this.parsedEventOverlapThreshold\n )\n\n const isNode = (input: VNode | false): input is VNode => !!input\n const getSlotChildren: VEventsToNodes = (day, getter, mapper, timed) => {\n const events = getter(day)\n const visuals = mode(day, events, timed, this.categoryMode)\n\n if (timed) {\n return visuals.map(visual => mapper(visual, day)).filter(isNode)\n }\n\n const children: VNode[] = []\n\n visuals.forEach((visual, index) => {\n while (children.length < visual.column) {\n children.push(this.genPlaceholder(day))\n }\n\n const mapped = mapper(visual, day)\n if (mapped) {\n children.push(mapped)\n }\n })\n\n return children\n }\n\n const slots = this.$scopedSlots\n const slotDay = slots.day\n const slotDayHeader = slots['day-header']\n const slotDayBody = slots['day-body']\n\n return {\n ...slots,\n day: (day: CalendarDaySlotScope) => {\n let children = getSlotChildren(day, this.getEventsForDay, this.genDayEvent, false)\n if (children && children.length > 0 && this.eventMore) {\n children.push(this.genMore(day))\n }\n if (slotDay) {\n const slot = slotDay(day)\n if (slot) {\n children = children ? children.concat(slot) : slot\n }\n }\n return children\n },\n 'day-header': (day: CalendarDaySlotScope) => {\n let children = getSlotChildren(day, this.getEventsForDayAll, this.genDayEvent, false)\n\n if (slotDayHeader) {\n const slot = slotDayHeader(day)\n if (slot) {\n children = children ? children.concat(slot) : slot\n }\n }\n return children\n },\n 'day-body': (day: CalendarDayBodySlotScope) => {\n const events = getSlotChildren(day, this.getEventsForDayTimed, this.genTimedEvent, true)\n let children: VNode[] = [\n this.$createElement('div', {\n staticClass: 'v-event-timed-container',\n }, events),\n ]\n\n if (slotDayBody) {\n const slot = slotDayBody(day)\n if (slot) {\n children = children.concat(slot)\n }\n }\n return children\n },\n }\n },\n },\n})\n","// Styles\nimport './VCalendarWeekly.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Components\nimport VBtn from '../VBtn'\n\n// Mixins\nimport CalendarBase from './mixins/calendar-base'\n\n// Util\nimport { getSlot } from '../../util/helpers'\nimport { weekNumber } from '../../util/dateTimeUtils'\nimport props from './util/props'\nimport {\n createDayList,\n getDayIdentifier,\n createNativeLocaleFormatter,\n} from './util/timestamp'\nimport { CalendarTimestamp, CalendarFormatter } from 'vuetify/types'\n\n/* @vue/component */\nexport default CalendarBase.extend({\n name: 'v-calendar-weekly',\n\n props: props.weeks,\n\n computed: {\n staticClass (): string {\n return 'v-calendar-weekly'\n },\n classes (): object {\n return this.themeClasses\n },\n parsedMinWeeks (): number {\n return parseInt(this.minWeeks)\n },\n days (): CalendarTimestamp[] {\n const minDays = this.parsedMinWeeks * this.parsedWeekdays.length\n const start = this.getStartOfWeek(this.parsedStart)\n const end = this.getEndOfWeek(this.parsedEnd)\n\n return createDayList(\n start,\n end,\n this.times.today,\n this.weekdaySkips,\n Number.MAX_SAFE_INTEGER,\n minDays\n )\n },\n todayWeek (): CalendarTimestamp[] {\n const today = this.times.today\n const start = this.getStartOfWeek(today)\n const end = this.getEndOfWeek(today)\n\n return createDayList(\n start,\n end,\n today,\n this.weekdaySkips,\n this.parsedWeekdays.length,\n this.parsedWeekdays.length\n )\n },\n monthFormatter (): CalendarFormatter {\n if (this.monthFormat) {\n return this.monthFormat as CalendarFormatter\n }\n\n const longOptions = { timeZone: 'UTC', month: 'long' }\n const shortOptions = { timeZone: 'UTC', month: 'short' }\n\n return createNativeLocaleFormatter(\n this.currentLocale,\n (_tms, short) => short ? shortOptions : longOptions\n )\n },\n },\n\n methods: {\n isOutside (day: CalendarTimestamp): boolean {\n const dayIdentifier = getDayIdentifier(day)\n\n return dayIdentifier < getDayIdentifier(this.parsedStart) ||\n dayIdentifier > getDayIdentifier(this.parsedEnd)\n },\n genHead (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-weekly__head',\n }, this.genHeadDays())\n },\n genHeadDays (): VNode[] {\n const header = this.todayWeek.map(this.genHeadDay)\n\n if (this.showWeek) {\n header.unshift(this.$createElement('div', {\n staticClass: 'v-calendar-weekly__head-weeknumber',\n }))\n }\n\n return header\n },\n genHeadDay (day: CalendarTimestamp, index: number): VNode {\n const outside = this.isOutside(this.days[index])\n const color = day.present ? this.color : undefined\n\n return this.$createElement('div', this.setTextColor(color, {\n key: day.date,\n staticClass: 'v-calendar-weekly__head-weekday',\n class: this.getRelativeClasses(day, outside),\n }), this.weekdayFormatter(day, this.shortWeekdays))\n },\n genWeeks (): VNode[] {\n const days = this.days\n const weekDays = this.parsedWeekdays.length\n const weeks: VNode[] = []\n\n for (let i = 0; i < days.length; i += weekDays) {\n weeks.push(this.genWeek(days.slice(i, i + weekDays), this.getWeekNumber(days[i])))\n }\n\n return weeks\n },\n genWeek (week: CalendarTimestamp[], weekNumber: number): VNode {\n const weekNodes = week.map((day, index) => this.genDay(day, index, week))\n\n if (this.showWeek) {\n weekNodes.unshift(this.genWeekNumber(weekNumber))\n }\n\n return this.$createElement('div', {\n key: week[0].date,\n staticClass: 'v-calendar-weekly__week',\n }, weekNodes)\n },\n getWeekNumber (determineDay: CalendarTimestamp) {\n return weekNumber(\n determineDay.year,\n determineDay.month - 1,\n determineDay.day,\n this.parsedWeekdays[0],\n parseInt(this.localeFirstDayOfYear)\n )\n },\n genWeekNumber (weekNumber: number) {\n return this.$createElement('div', {\n staticClass: 'v-calendar-weekly__weeknumber',\n }, [\n this.$createElement('small', String(weekNumber)),\n ])\n },\n genDay (day: CalendarTimestamp, index: number, week: CalendarTimestamp[]): VNode {\n const outside = this.isOutside(day)\n\n return this.$createElement('div', {\n key: day.date,\n staticClass: 'v-calendar-weekly__day',\n class: this.getRelativeClasses(day, outside),\n on: this.getDefaultMouseEventHandlers(':day', nativeEvent => {\n return { nativeEvent, ...day }\n }),\n }, [\n this.genDayLabel(day),\n ...(getSlot(this, 'day', () => ({ outside, index, week, ...day })) || []),\n ])\n },\n genDayLabel (day: CalendarTimestamp): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-weekly__day-label',\n }, getSlot(this, 'day-label', day) || [this.genDayLabelButton(day)])\n },\n genDayLabelButton (day: CalendarTimestamp): VNode {\n const color = day.present ? this.color : 'transparent'\n const hasMonth = day.day === 1 && this.showMonthOnFirst\n\n return this.$createElement(VBtn, {\n props: {\n color,\n fab: true,\n depressed: true,\n small: true,\n },\n on: this.getMouseEventHandlers({\n 'click:date': { event: 'click', stop: true },\n 'contextmenu:date': { event: 'contextmenu', stop: true, prevent: true, result: false },\n }, nativeEvent => ({ nativeEvent, ...day })),\n }, hasMonth\n ? this.monthFormatter(day, this.shortMonths) + ' ' + this.dayFormatter(day, false)\n : this.dayFormatter(day, false)\n )\n },\n genDayMonth (day: CalendarTimestamp): VNode | string {\n const color = day.present ? this.color : undefined\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-calendar-weekly__day-month',\n }), getSlot(this, 'day-month', day) || this.monthFormatter(day, this.shortMonths))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: this.staticClass,\n class: this.classes,\n on: {\n dragstart: (e: MouseEvent) => {\n e.preventDefault()\n },\n },\n }, [\n !this.hideHeader ? this.genHead() : '',\n ...this.genWeeks(),\n ])\n },\n})\n","// Styles\nimport './VCalendarWeekly.sass'\n\n// Mixins\nimport VCalendarWeekly from './VCalendarWeekly'\n\n// Util\nimport { parseTimestamp, getStartOfMonth, getEndOfMonth } from './util/timestamp'\nimport { CalendarTimestamp } from 'vuetify/types'\n\n/* @vue/component */\nexport default VCalendarWeekly.extend({\n name: 'v-calendar-monthly',\n\n computed: {\n staticClass (): string {\n return 'v-calendar-monthly v-calendar-weekly'\n },\n parsedStart (): CalendarTimestamp {\n return getStartOfMonth(parseTimestamp(this.start, true))\n },\n parsedEnd (): CalendarTimestamp {\n return getEndOfMonth(parseTimestamp(this.end, true))\n },\n },\n\n})\n","\n// Mixins\nimport CalendarBase from './calendar-base'\n\n// Util\nimport props from '../util/props'\nimport {\n parseTime,\n copyTimestamp,\n updateMinutes,\n createDayList,\n createIntervalList,\n createNativeLocaleFormatter,\n VTime,\n MINUTES_IN_DAY,\n} from '../util/timestamp'\nimport { CalendarTimestamp, CalendarFormatter, CalendarDayBodySlotScope } from 'vuetify/types'\n\n/* @vue/component */\nexport default CalendarBase.extend({\n name: 'calendar-with-intervals',\n\n props: props.intervals,\n\n computed: {\n parsedFirstInterval (): number {\n return parseInt(this.firstInterval)\n },\n parsedIntervalMinutes (): number {\n return parseInt(this.intervalMinutes)\n },\n parsedIntervalCount (): number {\n return parseInt(this.intervalCount)\n },\n parsedIntervalHeight (): number {\n return parseFloat(this.intervalHeight)\n },\n parsedFirstTime (): number | false {\n return parseTime(this.firstTime)\n },\n firstMinute (): number {\n const time = this.parsedFirstTime\n\n return time !== false && time >= 0 && time <= MINUTES_IN_DAY\n ? time\n : this.parsedFirstInterval * this.parsedIntervalMinutes\n },\n bodyHeight (): number {\n return this.parsedIntervalCount * this.parsedIntervalHeight\n },\n days (): CalendarTimestamp[] {\n return createDayList(\n this.parsedStart,\n this.parsedEnd,\n this.times.today,\n this.weekdaySkips,\n this.maxDays\n )\n },\n intervals (): CalendarTimestamp[][] {\n const days: CalendarTimestamp[] = this.days\n const first: number = this.firstMinute\n const minutes: number = this.parsedIntervalMinutes\n const count: number = this.parsedIntervalCount\n const now: CalendarTimestamp = this.times.now\n\n return days.map(d => createIntervalList(d, first, minutes, count, now))\n },\n intervalFormatter (): CalendarFormatter {\n if (this.intervalFormat) {\n return this.intervalFormat as CalendarFormatter\n }\n\n const longOptions = { timeZone: 'UTC', hour: '2-digit', minute: '2-digit' }\n const shortOptions = { timeZone: 'UTC', hour: 'numeric', minute: '2-digit' }\n const shortHourOptions = { timeZone: 'UTC', hour: 'numeric' }\n\n return createNativeLocaleFormatter(\n this.currentLocale,\n (tms, short) => short ? (tms.minute === 0 ? shortHourOptions : shortOptions) : longOptions\n )\n },\n },\n\n methods: {\n showIntervalLabelDefault (interval: CalendarTimestamp): boolean {\n const first: CalendarTimestamp = this.intervals[0][0]\n const isFirst: boolean = first.hour === interval.hour && first.minute === interval.minute\n return !isFirst\n },\n intervalStyleDefault (_interval: CalendarTimestamp): object | undefined {\n return undefined\n },\n getTimestampAtEvent (e: MouseEvent | TouchEvent, day: CalendarTimestamp): CalendarTimestamp {\n const timestamp: CalendarTimestamp = copyTimestamp(day)\n const bounds = (e.currentTarget as HTMLElement).getBoundingClientRect()\n const baseMinutes: number = this.firstMinute\n const touchEvent: TouchEvent = e as TouchEvent\n const mouseEvent: MouseEvent = e as MouseEvent\n const touches: TouchList = touchEvent.changedTouches || touchEvent.touches\n const clientY: number = touches && touches[0] ? touches[0].clientY : mouseEvent.clientY\n const addIntervals: number = (clientY - bounds.top) / this.parsedIntervalHeight\n const addMinutes: number = Math.floor(addIntervals * this.parsedIntervalMinutes)\n const minutes: number = baseMinutes + addMinutes\n\n return updateMinutes(timestamp, minutes, this.times.now)\n },\n getSlotScope (timestamp: CalendarTimestamp): CalendarDayBodySlotScope {\n const scope = copyTimestamp(timestamp) as any\n scope.timeToY = this.timeToY\n scope.timeDelta = this.timeDelta\n scope.minutesToPixels = this.minutesToPixels\n scope.week = this.days\n return scope\n },\n scrollToTime (time: VTime): boolean {\n const y = this.timeToY(time)\n const pane = this.$refs.scrollArea as HTMLElement\n\n if (y === false || !pane) {\n return false\n }\n\n pane.scrollTop = y\n\n return true\n },\n minutesToPixels (minutes: number): number {\n return minutes / this.parsedIntervalMinutes * this.parsedIntervalHeight\n },\n timeToY (time: VTime, clamp = true): number | false {\n let y = this.timeDelta(time)\n\n if (y !== false) {\n y *= this.bodyHeight\n\n if (clamp) {\n if (y < 0) {\n y = 0\n }\n if (y > this.bodyHeight) {\n y = this.bodyHeight\n }\n }\n }\n\n return y\n },\n timeDelta (time: VTime): number | false {\n const minutes = parseTime(time)\n\n if (minutes === false) {\n return false\n }\n\n const min: number = this.firstMinute\n const gap: number = this.parsedIntervalCount * this.parsedIntervalMinutes\n\n return (minutes - min) / gap\n },\n },\n})\n","// Styles\nimport './VCalendarDaily.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Directives\nimport Resize from '../../directives/resize'\n\n// Components\nimport VBtn from '../VBtn'\n\n// Mixins\nimport CalendarWithIntervals from './mixins/calendar-with-intervals'\n\n// Util\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { CalendarTimestamp } from 'vuetify/types'\n\n/* @vue/component */\nexport default CalendarWithIntervals.extend({\n name: 'v-calendar-daily',\n\n directives: { Resize },\n\n data: () => ({\n scrollPush: 0,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-calendar-daily': true,\n ...this.themeClasses,\n }\n },\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init () {\n this.$nextTick(this.onResize)\n },\n onResize () {\n this.scrollPush = this.getScrollPush()\n },\n getScrollPush (): number {\n const area = this.$refs.scrollArea as HTMLElement\n const pane = this.$refs.pane as HTMLElement\n\n return area && pane ? (area.offsetWidth - pane.offsetWidth) : 0\n },\n genHead (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily__head',\n style: {\n marginRight: this.scrollPush + 'px',\n },\n }, [\n this.genHeadIntervals(),\n ...this.genHeadDays(),\n ])\n },\n genHeadIntervals (): VNode {\n const width: string | undefined = convertToUnit(this.intervalWidth)\n\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily__intervals-head',\n style: {\n width,\n },\n }, getSlot(this, 'interval-header'))\n },\n genHeadDays (): VNode[] {\n return this.days.map(this.genHeadDay)\n },\n genHeadDay (day: CalendarTimestamp, index: number): VNode {\n return this.$createElement('div', {\n key: day.date,\n staticClass: 'v-calendar-daily_head-day',\n class: this.getRelativeClasses(day),\n on: this.getDefaultMouseEventHandlers(':day', nativeEvent => {\n return { nativeEvent, ...this.getSlotScope(day) }\n }),\n }, [\n this.genHeadWeekday(day),\n this.genHeadDayLabel(day),\n ...this.genDayHeader(day, index),\n ])\n },\n genDayHeader (day: CalendarTimestamp, index: number): VNode[] {\n return getSlot(this, 'day-header', () => ({\n week: this.days, ...day, index,\n })) || []\n },\n genHeadWeekday (day: CalendarTimestamp): VNode {\n const color = day.present ? this.color : undefined\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-calendar-daily_head-weekday',\n }), this.weekdayFormatter(day, this.shortWeekdays))\n },\n genHeadDayLabel (day: CalendarTimestamp): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily_head-day-label',\n }, getSlot(this, 'day-label-header', day) || [this.genHeadDayButton(day)])\n },\n genHeadDayButton (day: CalendarTimestamp): VNode {\n const color = day.present ? this.color : 'transparent'\n\n return this.$createElement(VBtn, {\n props: {\n color,\n fab: true,\n depressed: true,\n },\n on: this.getMouseEventHandlers({\n 'click:date': { event: 'click', stop: true },\n 'contextmenu:date': { event: 'contextmenu', stop: true, prevent: true, result: false },\n }, nativeEvent => {\n return { nativeEvent, ...day }\n }),\n }, this.dayFormatter(day, false))\n },\n genBody (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily__body',\n }, [\n this.genScrollArea(),\n ])\n },\n genScrollArea (): VNode {\n return this.$createElement('div', {\n ref: 'scrollArea',\n staticClass: 'v-calendar-daily__scroll-area',\n }, [\n this.genPane(),\n ])\n },\n genPane (): VNode {\n return this.$createElement('div', {\n ref: 'pane',\n staticClass: 'v-calendar-daily__pane',\n style: {\n height: convertToUnit(this.bodyHeight),\n },\n }, [\n this.genDayContainer(),\n ])\n },\n genDayContainer (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-calendar-daily__day-container',\n }, [\n this.genBodyIntervals(),\n ...this.genDays(),\n ])\n },\n genDays (): VNode[] {\n return this.days.map(this.genDay)\n },\n genDay (day: CalendarTimestamp, index: number): VNode {\n return this.$createElement('div', {\n key: day.date,\n staticClass: 'v-calendar-daily__day',\n class: this.getRelativeClasses(day),\n on: this.getDefaultMouseEventHandlers(':time', nativeEvent => {\n return { nativeEvent, ...this.getSlotScope(this.getTimestampAtEvent(nativeEvent, day)) }\n }),\n }, [\n ...this.genDayIntervals(index),\n ...this.genDayBody(day),\n ])\n },\n genDayBody (day: CalendarTimestamp): VNode[] {\n return getSlot(this, 'day-body', () => this.getSlotScope(day)) || []\n },\n genDayIntervals (index: number): VNode[] {\n return this.intervals[index].map(this.genDayInterval)\n },\n genDayInterval (interval: CalendarTimestamp): VNode {\n const height: string | undefined = convertToUnit(this.intervalHeight)\n const styler = this.intervalStyle || this.intervalStyleDefault\n\n const data = {\n key: interval.time,\n staticClass: 'v-calendar-daily__day-interval',\n style: {\n height,\n ...styler(interval),\n },\n\n }\n\n const children = getSlot(this, 'interval', () => this.getSlotScope(interval))\n\n return this.$createElement('div', data, children)\n },\n genBodyIntervals (): VNode {\n const width: string | undefined = convertToUnit(this.intervalWidth)\n const data = {\n staticClass: 'v-calendar-daily__intervals-body',\n style: {\n width,\n },\n on: this.getDefaultMouseEventHandlers(':interval', nativeEvent => {\n return { nativeEvent, ...this.getTimestampAtEvent(nativeEvent, this.parsedStart) }\n }),\n }\n\n return this.$createElement('div', data, this.genIntervalLabels())\n },\n genIntervalLabels (): VNode[] | null {\n if (!this.intervals.length) return null\n\n return this.intervals[0].map(this.genIntervalLabel)\n },\n genIntervalLabel (interval: CalendarTimestamp): VNode {\n const height: string | undefined = convertToUnit(this.intervalHeight)\n const short: boolean = this.shortIntervals\n const shower = this.showIntervalLabel || this.showIntervalLabelDefault\n const show = shower(interval)\n const label = show ? this.intervalFormatter(interval, short) : undefined\n\n return this.$createElement('div', {\n key: interval.time,\n staticClass: 'v-calendar-daily__interval',\n style: {\n height,\n },\n }, [\n this.$createElement('div', {\n staticClass: 'v-calendar-daily__interval-text',\n }, label),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n class: this.classes,\n on: {\n dragstart: (e: MouseEvent) => {\n e.preventDefault()\n },\n },\n directives: [{\n modifiers: { quiet: true },\n name: 'resize',\n value: this.onResize,\n }],\n }, [\n !this.hideHeader ? this.genHead() : '',\n this.genBody(),\n ])\n },\n})\n","import { CalendarCategory, CalendarCategoryTextFunction } from 'types'\n\nexport function parsedCategoryText (\n category: CalendarCategory,\n categoryText: string | CalendarCategoryTextFunction\n): string {\n return typeof categoryText === 'string' && typeof category === 'object' && category\n ? category[categoryText]\n : typeof categoryText === 'function'\n ? categoryText(category)\n : category\n}\n\nexport function getParsedCategories (\n categories: CalendarCategory | CalendarCategory[],\n categoryText: string | CalendarCategoryTextFunction\n): CalendarCategory[] {\n if (typeof categories === 'string') return categories.split(/\\s*,\\s/)\n if (Array.isArray(categories)) {\n return categories.map((category: CalendarCategory) => {\n if (typeof category === 'string') return category\n\n const categoryName = typeof category.categoryName === 'string'\n ? category.categoryName\n : parsedCategoryText(category, categoryText)\n return { ...category, categoryName }\n })\n }\n return []\n}\n","// Styles\nimport './VCalendarCategory.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Mixins\nimport VCalendarDaily from './VCalendarDaily'\n\n// Util\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { CalendarCategory, CalendarTimestamp } from 'types'\nimport props from './util/props'\nimport { getParsedCategories } from './util/parser'\n\n/* @vue/component */\nexport default VCalendarDaily.extend({\n name: 'v-calendar-category',\n\n props: props.category,\n\n computed: {\n classes (): object {\n return {\n 'v-calendar-daily': true,\n 'v-calendar-category': true,\n ...this.themeClasses,\n }\n },\n parsedCategories (): CalendarCategory[] {\n return getParsedCategories(this.categories, this.categoryText)\n },\n },\n methods: {\n genDayHeader (day: CalendarTimestamp, index: number): VNode[] {\n const data = {\n staticClass: 'v-calendar-category__columns',\n }\n const scope = {\n week: this.days, ...day, index,\n }\n\n const children = this.parsedCategories.map(category => {\n return this.genDayHeaderCategory(day, this.getCategoryScope(scope, category))\n })\n\n return [this.$createElement('div', data, children)]\n },\n getCategoryScope (scope: any, category: CalendarCategory) {\n const cat = typeof category === 'object' && category &&\n category.categoryName === this.categoryForInvalid ? null : category\n return {\n ...scope,\n category: cat,\n }\n },\n genDayHeaderCategory (day: CalendarTimestamp, scope: any): VNode {\n const headerTitle = typeof scope.category === 'object' ? scope.category.categoryName : scope.category\n return this.$createElement('div', {\n staticClass: 'v-calendar-category__column-header',\n on: this.getDefaultMouseEventHandlers(':day-category', e => {\n return this.getCategoryScope(this.getSlotScope(day), scope.category)\n }),\n }, [\n getSlot(this, 'category', scope) || this.genDayHeaderCategoryTitle(headerTitle),\n getSlot(this, 'day-header', scope),\n ])\n },\n genDayHeaderCategoryTitle (categoryName: string | null) {\n return this.$createElement('div', {\n staticClass: 'v-calendar-category__category',\n }, categoryName === null ? this.categoryForInvalid : categoryName)\n },\n genDays (): VNode[] {\n const days: VNode[] = []\n this.days.forEach((d, j) => {\n const day = new Array(this.parsedCategories.length || 1)\n day.fill(d)\n days.push(...day.map((v, i) => this.genDay(v, j, i)))\n })\n return days\n },\n genDay (day: CalendarTimestamp, index: number, categoryIndex: number): VNode {\n const category = this.parsedCategories[categoryIndex]\n return this.$createElement('div', {\n key: day.date + '-' + categoryIndex,\n staticClass: 'v-calendar-daily__day',\n class: this.getRelativeClasses(day),\n on: this.getDefaultMouseEventHandlers(':time', e => {\n return this.getSlotScope(this.getTimestampAtEvent(e, day))\n }),\n }, [\n ...this.genDayIntervals(index, category),\n ...this.genDayBody(day, category),\n ])\n },\n genDayIntervals (index: number, category: CalendarCategory): VNode[] {\n return this.intervals[index].map(v => this.genDayInterval(v, category))\n },\n genDayInterval (interval: CalendarTimestamp, category: CalendarCategory): VNode {\n const height: string | undefined = convertToUnit(this.intervalHeight)\n const styler = this.intervalStyle || this.intervalStyleDefault\n\n const data = {\n key: interval.time,\n staticClass: 'v-calendar-daily__day-interval',\n style: {\n height,\n ...styler({ ...interval, category }),\n },\n }\n\n const children = getSlot(this, 'interval', () =>\n this.getCategoryScope(this.getSlotScope(interval), category)\n )\n\n return this.$createElement('div', data, children)\n },\n genDayBody (day: CalendarTimestamp, category: CalendarCategory): VNode[] {\n const data = {\n staticClass: 'v-calendar-category__columns',\n }\n\n const children = [this.genDayBodyCategory(day, category)]\n\n return [this.$createElement('div', data, children)]\n },\n genDayBodyCategory (day: CalendarTimestamp, category: CalendarCategory): VNode {\n const data = {\n staticClass: 'v-calendar-category__column',\n on: this.getDefaultMouseEventHandlers(':time-category', e => {\n return this.getCategoryScope(this.getSlotScope(this.getTimestampAtEvent(e, day)), category)\n }),\n }\n\n const children = getSlot(this, 'day-body', () => this.getCategoryScope(this.getSlotScope(day), category))\n\n return this.$createElement('div', data, children)\n },\n },\n})\n","// Styles\n// import '../../stylus/components/_calendar-daily.styl'\n\n// Types\nimport { VNode, Component } from 'vue'\n\n// Mixins\nimport CalendarWithEvents from './mixins/calendar-with-events'\n\n// Util\nimport props from './util/props'\nimport {\n DAYS_IN_MONTH_MAX,\n DAY_MIN,\n DAYS_IN_WEEK,\n parseTimestamp,\n validateTimestamp,\n relativeDays,\n nextDay,\n prevDay,\n copyTimestamp,\n updateFormatted,\n updateWeekday,\n updateRelative,\n getStartOfMonth,\n getEndOfMonth,\n VTime,\n VTimestampInput,\n timestampToDate,\n} from './util/timestamp'\n\n// Calendars\nimport VCalendarMonthly from './VCalendarMonthly'\nimport VCalendarDaily from './VCalendarDaily'\nimport VCalendarWeekly from './VCalendarWeekly'\nimport VCalendarCategory from './VCalendarCategory'\nimport { CalendarTimestamp, CalendarFormatter, CalendarCategory } from 'vuetify/types'\nimport { getParsedCategories } from './util/parser'\n\n// Types\ninterface VCalendarRenderProps {\n start: CalendarTimestamp\n end: CalendarTimestamp\n component: string | Component\n maxDays: number\n weekdays: number[]\n categories: CalendarCategory[]\n}\n\n/* @vue/component */\nexport default CalendarWithEvents.extend({\n name: 'v-calendar',\n\n props: {\n ...props.calendar,\n ...props.weeks,\n ...props.intervals,\n ...props.category,\n },\n\n data: () => ({\n lastStart: null as CalendarTimestamp | null,\n lastEnd: null as CalendarTimestamp | null,\n }),\n\n computed: {\n parsedValue (): CalendarTimestamp {\n return (validateTimestamp(this.value)\n ? parseTimestamp(this.value, true)\n : (this.parsedStart || this.times.today))\n },\n parsedCategoryDays (): number {\n return parseInt(this.categoryDays) || 1\n },\n renderProps (): VCalendarRenderProps {\n const around = this.parsedValue\n let component: any = null\n let maxDays = this.maxDays\n let weekdays = this.parsedWeekdays\n let categories = this.parsedCategories\n let start = around\n let end = around\n switch (this.type) {\n case 'month':\n component = VCalendarMonthly\n start = getStartOfMonth(around)\n end = getEndOfMonth(around)\n break\n case 'week':\n component = VCalendarDaily\n start = this.getStartOfWeek(around)\n end = this.getEndOfWeek(around)\n maxDays = 7\n break\n case 'day':\n component = VCalendarDaily\n maxDays = 1\n weekdays = [start.weekday]\n break\n case '4day':\n component = VCalendarDaily\n end = relativeDays(copyTimestamp(end), nextDay, 3)\n updateFormatted(end)\n maxDays = 4\n weekdays = [\n start.weekday,\n (start.weekday + 1) % 7,\n (start.weekday + 2) % 7,\n (start.weekday + 3) % 7,\n ]\n break\n case 'custom-weekly':\n component = VCalendarWeekly\n start = this.parsedStart || around\n end = this.parsedEnd\n break\n case 'custom-daily':\n component = VCalendarDaily\n start = this.parsedStart || around\n end = this.parsedEnd\n break\n case 'category':\n const days = this.parsedCategoryDays\n\n component = VCalendarCategory\n end = relativeDays(copyTimestamp(end), nextDay, days)\n updateFormatted(end)\n maxDays = days\n weekdays = []\n\n for (let i = 0; i < days; i++) {\n weekdays.push((start.weekday + i) % 7)\n }\n\n categories = this.getCategoryList(categories)\n break\n default:\n throw new Error(this.type + ' is not a valid Calendar type')\n }\n\n return { component, start, end, maxDays, weekdays, categories }\n },\n eventWeekdays (): number[] {\n return this.renderProps.weekdays\n },\n categoryMode (): boolean {\n return this.type === 'category'\n },\n title (): string {\n const { start, end } = this.renderProps\n const spanYears = start.year !== end.year\n const spanMonths = spanYears || start.month !== end.month\n\n if (spanYears) {\n return this.monthShortFormatter(start, true) + ' ' + start.year + ' - ' + this.monthShortFormatter(end, true) + ' ' + end.year\n }\n\n if (spanMonths) {\n return this.monthShortFormatter(start, true) + ' - ' + this.monthShortFormatter(end, true) + ' ' + end.year\n } else {\n return this.monthLongFormatter(start, false) + ' ' + start.year\n }\n },\n monthLongFormatter (): CalendarFormatter {\n return this.getFormatter({\n timeZone: 'UTC', month: 'long',\n })\n },\n monthShortFormatter (): CalendarFormatter {\n return this.getFormatter({\n timeZone: 'UTC', month: 'short',\n })\n },\n parsedCategories (): CalendarCategory[] {\n return getParsedCategories(this.categories, this.categoryText)\n },\n },\n\n watch: {\n renderProps: 'checkChange',\n },\n\n mounted () {\n this.updateEventVisibility()\n this.checkChange()\n },\n\n updated () {\n window.requestAnimationFrame(this.updateEventVisibility)\n },\n\n methods: {\n checkChange (): void {\n const { lastStart, lastEnd } = this\n const { start, end } = this.renderProps\n if (!lastStart || !lastEnd ||\n start.date !== lastStart.date ||\n end.date !== lastEnd.date) {\n this.lastStart = start\n this.lastEnd = end\n this.$emit('change', { start, end })\n }\n },\n move (amount = 1): void {\n const moved = copyTimestamp(this.parsedValue)\n const forward = amount > 0\n const mover = forward ? nextDay : prevDay\n const limit = forward ? DAYS_IN_MONTH_MAX : DAY_MIN\n let times = forward ? amount : -amount\n\n while (--times >= 0) {\n switch (this.type) {\n case 'month':\n moved.day = limit\n mover(moved)\n break\n case 'week':\n relativeDays(moved, mover, DAYS_IN_WEEK)\n break\n case 'day':\n relativeDays(moved, mover, 1)\n break\n case '4day':\n relativeDays(moved, mover, 4)\n break\n case 'category':\n relativeDays(moved, mover, this.parsedCategoryDays)\n break\n }\n }\n\n updateWeekday(moved)\n updateFormatted(moved)\n updateRelative(moved, this.times.now)\n\n if (this.value instanceof Date) {\n this.$emit('input', timestampToDate(moved))\n } else if (typeof this.value === 'number') {\n this.$emit('input', timestampToDate(moved).getTime())\n } else {\n this.$emit('input', moved.date)\n }\n\n this.$emit('moved', moved)\n },\n next (amount = 1): void {\n this.move(amount)\n },\n prev (amount = 1): void {\n this.move(-amount)\n },\n timeToY (time: VTime, clamp = true): number | false {\n const c = this.$children[0] as any\n\n if (c && c.timeToY) {\n return c.timeToY(time, clamp)\n } else {\n return false\n }\n },\n timeDelta (time: VTime): number | false {\n const c = this.$children[0] as any\n\n if (c && c.timeDelta) {\n return c.timeDelta(time)\n } else {\n return false\n }\n },\n minutesToPixels (minutes: number): number {\n const c = this.$children[0] as any\n\n if (c && c.minutesToPixels) {\n return c.minutesToPixels(minutes)\n } else {\n return -1\n }\n },\n scrollToTime (time: VTime): boolean {\n const c = this.$children[0] as any\n\n if (c && c.scrollToTime) {\n return c.scrollToTime(time)\n } else {\n return false\n }\n },\n parseTimestamp (input: VTimestampInput, required?: false): CalendarTimestamp | null {\n return parseTimestamp(input, required, this.times.now)\n },\n timestampToDate (timestamp: CalendarTimestamp): Date {\n return timestampToDate(timestamp)\n },\n getCategoryList (categories: CalendarCategory[]): CalendarCategory[] {\n if (!this.noEvents) {\n const categoryMap: any = categories.reduce((map: any, category, index) => {\n if (typeof category === 'object' && category.categoryName) map[category.categoryName] = { index, count: 0 }\n else if (typeof category === 'string') map[category] = { index, count: 0 }\n return map\n }, {})\n\n if (!this.categoryHideDynamic || !this.categoryShowAll) {\n let categoryLength = categories.length\n\n this.parsedEvents.forEach(ev => {\n let category = ev.category\n\n if (typeof category !== 'string') {\n category = this.categoryForInvalid\n }\n\n if (!category) {\n return\n }\n\n if (category in categoryMap) {\n categoryMap[category].count++\n } else if (!this.categoryHideDynamic) {\n categoryMap[category] = {\n index: categoryLength++,\n count: 1,\n }\n }\n })\n }\n\n if (!this.categoryShowAll) {\n for (const category in categoryMap) {\n if (categoryMap[category].count === 0) {\n delete categoryMap[category]\n }\n }\n }\n\n categories = categories.filter((category: CalendarCategory) => {\n if (typeof category === 'object' && category.categoryName) {\n return categoryMap.hasOwnProperty(category.categoryName)\n } else if (typeof category === 'string') {\n return categoryMap.hasOwnProperty(category)\n }\n return false\n })\n }\n return categories\n },\n },\n\n render (h): VNode {\n const { start, end, maxDays, component, weekdays, categories } = this.renderProps\n\n return h(component, {\n staticClass: 'v-calendar',\n class: {\n 'v-calendar-events': !this.noEvents,\n },\n props: {\n ...this.$props,\n start: start.date,\n end: end.date,\n maxDays,\n weekdays,\n categories,\n },\n directives: [{\n modifiers: { quiet: true },\n name: 'resize',\n value: this.updateEventVisibility,\n }],\n on: {\n ...this.$listeners,\n\n 'click:date': (day: CalendarTimestamp, e?: MouseEvent) => {\n if (this.$listeners.input) {\n this.$emit('input', day.date)\n }\n if (this.$listeners['click:date']) {\n this.$emit('click:date', day, e)\n }\n },\n },\n scopedSlots: this.getScopedSlots(),\n })\n },\n})\n","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n raised: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--raised': this.raised,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n this.$slots.default,\n ])\n },\n})\n","import VCard from './VCard'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VCardActions = createSimpleFunctional('v-card__actions')\nconst VCardSubtitle = createSimpleFunctional('v-card__subtitle')\nconst VCardText = createSimpleFunctional('v-card__text')\nconst VCardTitle = createSimpleFunctional('v-card__title')\n\nexport {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n },\n}\n","// Directives\nimport ripple from '../../directives/ripple'\n\n// Types\nimport Vue, { VNode, VNodeData, VNodeDirective } from 'vue'\n\nexport default Vue.extend({\n name: 'rippleable',\n\n directives: { ripple },\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n methods: {\n genRipple (data: VNodeData = {}): VNode | null {\n if (!this.ripple) return null\n\n data.staticClass = 'v-input--selection-controls__ripple'\n\n data.directives = data.directives || []\n data.directives.push({\n name: 'ripple',\n value: { center: true },\n } as VNodeDirective)\n\n return this.$createElement('div', data)\n },\n },\n})\n","// Components\nimport VInput from '../../components/VInput'\n\n// Mixins\nimport Rippleable from '../rippleable'\nimport Comparable from '../comparable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport function prevent (e: Event) {\n e.preventDefault()\n}\n\n/* @vue/component */\nexport default mixins(\n VInput,\n Rippleable,\n Comparable\n).extend({\n name: 'selectable',\n\n model: {\n prop: 'inputValue',\n event: 'change',\n },\n\n props: {\n id: String,\n inputValue: null as any,\n falseValue: null as any,\n trueValue: null as any,\n multiple: {\n type: Boolean,\n default: null,\n },\n label: String,\n },\n\n data () {\n return {\n hasColor: this.inputValue,\n lazyValue: this.inputValue,\n }\n },\n\n computed: {\n computedColor (): string | undefined {\n if (!this.isActive) return undefined\n if (this.color) return this.color\n if (this.isDark && !this.appIsDark) return 'white'\n return 'primary'\n },\n isMultiple (): boolean {\n return this.multiple === true || (this.multiple === null && Array.isArray(this.internalValue))\n },\n isActive (): boolean {\n const value = this.value\n const input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) return false\n\n return input.some(item => this.valueComparator(item, value))\n }\n\n if (this.trueValue === undefined || this.falseValue === undefined) {\n return value\n ? this.valueComparator(value, input)\n : Boolean(input)\n }\n\n return this.valueComparator(input, this.trueValue)\n },\n isDirty (): boolean {\n return this.isActive\n },\n rippleState (): string | undefined {\n return !this.isDisabled && !this.validationState\n ? undefined\n : this.validationState\n },\n },\n\n watch: {\n inputValue (val) {\n this.lazyValue = val\n this.hasColor = val\n },\n },\n\n methods: {\n genLabel () {\n const label = VInput.options.methods.genLabel.call(this)\n\n if (!label) return label\n\n label!.data!.on = {\n // Label shouldn't cause the input to focus\n click: prevent,\n }\n\n return label\n },\n genInput (type: string, attrs: object) {\n return this.$createElement('input', {\n attrs: Object.assign({\n 'aria-checked': this.isActive.toString(),\n disabled: this.isDisabled,\n id: this.computedId,\n role: type,\n type,\n }, attrs),\n domProps: {\n value: this.value,\n checked: this.isActive,\n },\n on: {\n blur: this.onBlur,\n change: this.onChange,\n focus: this.onFocus,\n keydown: this.onKeydown,\n click: prevent,\n },\n ref: 'input',\n })\n },\n onBlur () {\n this.isFocused = false\n },\n onClick (e: Event) {\n this.onChange()\n this.$emit('click', e)\n },\n onChange () {\n if (!this.isInteractive) return\n\n const value = this.value\n let input = this.internalValue\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) {\n input = []\n }\n\n const length = input.length\n\n input = input.filter((item: any) => !this.valueComparator(item, value))\n\n if (input.length === length) {\n input.push(value)\n }\n } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue\n } else if (value) {\n input = this.valueComparator(input, value) ? null : value\n } else {\n input = !input\n }\n\n this.validate(true, input)\n this.internalValue = input\n this.hasColor = input\n },\n onFocus () {\n this.isFocused = true\n },\n /** @abstract */\n onKeydown (e: Event) {},\n },\n})\n","// Styles\nimport './VCheckbox.sass'\nimport '../../styles/components/_selection-controls.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VInput from '../VInput'\n\n// Mixins\nimport Selectable from '../../mixins/selectable'\n\n/* @vue/component */\nexport default Selectable.extend({\n name: 'v-checkbox',\n\n props: {\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n },\n\n data () {\n return {\n inputIndeterminate: this.indeterminate,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls': true,\n 'v-input--checkbox': true,\n 'v-input--indeterminate': this.inputIndeterminate,\n }\n },\n computedIcon (): string {\n if (this.inputIndeterminate) {\n return this.indeterminateIcon\n } else if (this.isActive) {\n return this.onIcon\n } else {\n return this.offIcon\n }\n },\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState (): string | undefined {\n if (this.isDisabled && !this.inputIndeterminate) return undefined\n if (this.hasError && this.shouldValidate) return 'error'\n if (this.hasSuccess) return 'success'\n if (this.hasColor !== null) return this.computedColor\n return undefined\n },\n },\n\n watch: {\n indeterminate (val) {\n // https://github.com/vuetifyjs/vuetify/issues/8270\n this.$nextTick(() => (this.inputIndeterminate = val))\n },\n inputIndeterminate (val) {\n this.$emit('update:indeterminate', val)\n },\n isActive () {\n if (!this.indeterminate) return\n this.inputIndeterminate = false\n },\n },\n\n methods: {\n genCheckbox () {\n const { title, ...checkboxAttrs } = this.attrs$\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input',\n }, [\n this.$createElement(VIcon, this.setTextColor(this.validationState, {\n props: {\n dense: this.dense,\n dark: this.dark,\n light: this.light,\n },\n }), this.computedIcon),\n this.genInput('checkbox', {\n ...checkboxAttrs,\n 'aria-checked': this.inputIndeterminate\n ? 'mixed'\n : this.isActive.toString(),\n }),\n this.genRipple(this.setTextColor(this.rippleState)),\n ])\n },\n genDefaultSlot () {\n return [\n this.genCheckbox(),\n this.genLabel(),\n ]\n },\n },\n})\n","import './VSimpleCheckbox.sass'\n\nimport ripple from '../../directives/ripple'\n\nimport Vue, { VNode, VNodeDirective } from 'vue'\nimport { VIcon } from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-simple-checkbox',\n\n functional: true,\n\n directives: {\n ripple,\n },\n\n props: {\n ...Colorable.options.props,\n ...Themeable.options.props,\n disabled: Boolean,\n ripple: {\n type: Boolean,\n default: true,\n },\n value: Boolean,\n indeterminate: Boolean,\n indeterminateIcon: {\n type: String,\n default: '$checkboxIndeterminate',\n },\n onIcon: {\n type: String,\n default: '$checkboxOn',\n },\n offIcon: {\n type: String,\n default: '$checkboxOff',\n },\n },\n\n render (h, { props, data, listeners }): VNode {\n const children = []\n let icon = props.offIcon\n if (props.indeterminate) icon = props.indeterminateIcon\n else if (props.value) icon = props.onIcon\n\n children.push(h(VIcon, Colorable.options.methods.setTextColor(props.value && props.color, {\n props: {\n disabled: props.disabled,\n dark: props.dark,\n light: props.light,\n },\n }), icon))\n\n if (props.ripple && !props.disabled) {\n const ripple = h('div', Colorable.options.methods.setTextColor(props.color, {\n staticClass: 'v-input--selection-controls__ripple',\n directives: [{\n name: 'ripple',\n value: { center: true },\n }] as VNodeDirective[],\n }))\n\n children.push(ripple)\n }\n\n return h('div',\n mergeData(data, {\n class: {\n 'v-simple-checkbox': true,\n 'v-simple-checkbox--disabled': props.disabled,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n\n if (data.on && data.on.input && !props.disabled) {\n wrapInArray(data.on.input).forEach(f => f(!props.value))\n }\n },\n },\n }), [\n h('div', { staticClass: 'v-input--selection-controls__input' }, children),\n ])\n },\n})\n","// Styles\nimport './VChip.sass'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Components\nimport { VExpandXTransition } from '../transitions'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\nimport Routable from '../../mixins/routable'\nimport Sizeable from '../../mixins/sizeable'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\nimport { PropValidator, PropType } from 'vue/types/options'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Sizeable,\n Routable,\n Themeable,\n GroupableFactory('chipGroup'),\n ToggleableFactory('inputValue')\n).extend({\n name: 'v-chip',\n\n props: {\n active: {\n type: Boolean,\n default: true,\n },\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.chipGroup) return ''\n\n return this.chipGroup.activeClass\n },\n } as any as PropValidator,\n close: Boolean,\n closeIcon: {\n type: String,\n default: '$delete',\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n disabled: Boolean,\n draggable: Boolean,\n filter: Boolean,\n filterIcon: {\n type: String,\n default: '$complete',\n },\n label: Boolean,\n link: Boolean,\n outlined: Boolean,\n pill: Boolean,\n tag: {\n type: String,\n default: 'span',\n },\n textColor: String,\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-chip--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-chip': true,\n ...Routable.options.computed.classes.call(this),\n 'v-chip--clickable': this.isClickable,\n 'v-chip--disabled': this.disabled,\n 'v-chip--draggable': this.draggable,\n 'v-chip--label': this.label,\n 'v-chip--link': this.isLink,\n 'v-chip--no-color': !this.color,\n 'v-chip--outlined': this.outlined,\n 'v-chip--pill': this.pill,\n 'v-chip--removable': this.hasClose,\n ...this.themeClasses,\n ...this.sizeableClasses,\n ...this.groupClasses,\n }\n },\n hasClose (): boolean {\n return Boolean(this.close)\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.chipGroup\n )\n },\n },\n\n created () {\n const breakingProps = [\n ['outline', 'outlined'],\n ['selected', 'input-value'],\n ['value', 'active'],\n ['@input', '@active.sync'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n click (e: MouseEvent): void {\n this.$emit('click', e)\n\n this.chipGroup && this.toggle()\n },\n genFilter (): VNode {\n const children = []\n\n if (this.isActive) {\n children.push(\n this.$createElement(VIcon, {\n staticClass: 'v-chip__filter',\n props: { left: true },\n }, this.filterIcon)\n )\n }\n\n return this.$createElement(VExpandXTransition, children)\n },\n genClose (): VNode {\n return this.$createElement(VIcon, {\n staticClass: 'v-chip__close',\n props: {\n right: true,\n size: 18,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: (e: Event) => {\n e.stopPropagation()\n e.preventDefault()\n\n this.$emit('click:close')\n this.$emit('update:active', false)\n },\n },\n }, this.closeIcon)\n },\n genContent (): VNode {\n return this.$createElement('span', {\n staticClass: 'v-chip__content',\n }, [\n this.filter && this.genFilter(),\n this.$slots.default,\n this.hasClose && this.genClose(),\n ])\n },\n },\n\n render (h): VNode {\n const children = [this.genContent()]\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n draggable: this.draggable ? 'true' : undefined,\n tabindex: this.chipGroup && !this.disabled ? 0 : data.attrs!.tabindex,\n }\n data.directives!.push({\n name: 'show',\n value: this.active,\n })\n data = this.setBackgroundColor(this.color, data)\n\n const color = this.textColor || (this.outlined && this.color)\n\n return h(tag, this.setTextColor(color, data), children)\n },\n})\n","import VChip from './VChip'\n\nexport { VChip }\nexport default VChip\n","// Styles\nimport '../VAutocomplete/VAutocomplete.sass'\n\n// Extensions\nimport VSelect from '../VSelect/VSelect'\nimport VAutocomplete from '../VAutocomplete/VAutocomplete'\n\n// Utils\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n/* @vue/component */\nexport default VAutocomplete.extend({\n name: 'v-combobox',\n\n props: {\n delimiters: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n returnObject: {\n type: Boolean,\n default: true,\n },\n },\n\n data: () => ({\n editingIndex: -1,\n }),\n\n computed: {\n computedCounterValue (): number {\n return this.multiple\n ? this.selectedItems.length\n : (this.internalSearch || '').toString().length\n },\n hasSlot (): boolean {\n return VSelect.options.computed.hasSlot.call(this) || this.multiple\n },\n isAnyValueAllowed (): boolean {\n return true\n },\n menuCanShow (): boolean {\n if (!this.isFocused) return false\n\n return this.hasDisplayedItems ||\n (!!this.$slots['no-data'] && !this.hideNoData)\n },\n searchIsDirty (): boolean {\n return this.internalSearch != null\n },\n },\n\n methods: {\n onInternalSearchChanged (val: any) {\n if (\n val &&\n this.multiple &&\n this.delimiters.length\n ) {\n const delimiter = this.delimiters.find(d => val.endsWith(d))\n if (delimiter != null) {\n this.internalSearch = val.slice(0, val.length - delimiter.length)\n this.updateTags()\n }\n }\n\n this.updateMenuDimensions()\n },\n genInput () {\n const input = VAutocomplete.options.methods.genInput.call(this)\n\n delete input.data!.attrs!.name\n input.data!.on!.paste = this.onPaste\n\n return input\n },\n genChipSelection (item: object, index: number) {\n const chip = VSelect.options.methods.genChipSelection.call(this, item, index)\n\n // Allow user to update an existing value\n if (this.multiple) {\n chip.componentOptions!.listeners! = {\n ...chip.componentOptions!.listeners!,\n dblclick: () => {\n this.editingIndex = index\n this.internalSearch = this.getText(item)\n this.selectedIndex = -1\n },\n }\n }\n\n return chip\n },\n onChipInput (item: object) {\n VSelect.options.methods.onChipInput.call(this, item)\n\n this.editingIndex = -1\n },\n // Requires a manual definition\n // to overwrite removal in v-autocomplete\n onEnterDown (e: Event) {\n e.preventDefault()\n // If has menu index, let v-select-list handle\n if (this.getMenuIndex() > -1) return\n\n this.$nextTick(this.updateSelf)\n },\n onKeyDown (e: KeyboardEvent) {\n const keyCode = e.keyCode\n\n if (\n e.ctrlKey ||\n ![keyCodes.home, keyCodes.end].includes(keyCode)\n ) {\n VSelect.options.methods.onKeyDown.call(this, e)\n }\n\n // If user is at selection index of 0\n // create a new tag\n if (this.multiple &&\n keyCode === keyCodes.left &&\n this.$refs.input.selectionStart === 0\n ) {\n this.updateSelf()\n } else if (keyCode === keyCodes.enter) {\n this.onEnterDown(e)\n }\n\n // The ordering is important here\n // allows new value to be updated\n // and then moves the index to the\n // proper location\n this.changeSelectedIndex(keyCode)\n },\n onTabDown (e: KeyboardEvent) {\n // When adding tags, if searching and\n // there is not a filtered options,\n // add the value to the tags list\n if (this.multiple &&\n this.internalSearch &&\n this.getMenuIndex() === -1\n ) {\n e.preventDefault()\n e.stopPropagation()\n\n return this.updateTags()\n }\n\n VAutocomplete.options.methods.onTabDown.call(this, e)\n },\n selectItem (item: object) {\n // Currently only supports items:\n if (this.editingIndex > -1) {\n this.updateEditing()\n } else {\n VAutocomplete.options.methods.selectItem.call(this, item)\n\n // if selected item contains search value,\n // remove the search string\n if (\n this.internalSearch &&\n this.multiple &&\n this.getText(item).toLocaleLowerCase().includes(this.internalSearch.toLocaleLowerCase())\n ) {\n this.internalSearch = null\n }\n }\n },\n setSelectedItems () {\n if (this.internalValue == null ||\n this.internalValue === ''\n ) {\n this.selectedItems = []\n } else {\n this.selectedItems = this.multiple ? this.internalValue : [this.internalValue]\n }\n },\n setValue (value?: any) {\n VSelect.options.methods.setValue.call(this, value === undefined ? this.internalSearch : value)\n },\n updateEditing () {\n const value = this.internalValue.slice()\n const index = this.selectedItems.findIndex(item =>\n this.getText(item) === this.internalSearch)\n\n // If user enters a duplicate text on chip edit,\n // don't add it, move it to the end of the list\n if (index > -1) {\n const item = typeof value[index] === 'object'\n ? Object.assign({}, value[index])\n : value[index]\n\n value.splice(index, 1)\n value.push(item)\n } else {\n value[this.editingIndex] = this.internalSearch\n }\n\n this.setValue(value)\n this.editingIndex = -1\n this.internalSearch = null\n },\n updateCombobox () {\n // If search is not dirty, do nothing\n if (!this.searchIsDirty) return\n\n // The internal search is not matching\n // the internal value, update the input\n if (this.internalSearch !== this.getText(this.internalValue)) this.setValue()\n\n // Reset search if using slot to avoid a double input\n const isUsingSlot = Boolean(this.$scopedSlots.selection) || this.hasChips\n if (isUsingSlot) this.internalSearch = null\n },\n updateSelf () {\n this.multiple ? this.updateTags() : this.updateCombobox()\n },\n updateTags () {\n const menuIndex = this.getMenuIndex()\n\n // If the user is not searching\n // and no menu item is selected\n // or if the search is empty\n // do nothing\n if ((menuIndex < 0 && !this.searchIsDirty) ||\n !this.internalSearch) return\n\n if (this.editingIndex > -1) {\n return this.updateEditing()\n }\n\n const index = this.selectedItems.findIndex(item =>\n this.internalSearch === this.getText(item))\n\n // If the duplicate item is an object,\n // copy it, so that it can be added again later\n const itemToSelect = index > -1 && typeof this.selectedItems[index] === 'object'\n ? Object.assign({}, this.selectedItems[index])\n : this.internalSearch\n\n // If it already exists, do nothing\n // this might need to change to bring\n // the duplicated item to the last entered\n if (index > -1) {\n const internalValue = this.internalValue.slice()\n internalValue.splice(index, 1)\n\n this.setValue(internalValue)\n }\n\n // If menu index is greater than 1\n // the selection is handled elsewhere\n // TODO: find out where\n if (menuIndex > -1) return (this.internalSearch = null)\n\n this.selectItem(itemToSelect)\n\n this.internalSearch = null\n },\n onPaste (event: ClipboardEvent) {\n if (!this.multiple || this.searchIsDirty) return\n\n const pastedItemText = event.clipboardData?.getData('text/vnd.vuetify.autocomplete.item+plain')\n if (pastedItemText && this.findExistingIndex(pastedItemText as any) === -1) {\n event.preventDefault()\n VSelect.options.methods.selectItem.call(this, pastedItemText as any)\n }\n },\n clearableCallback () {\n this.editingIndex = -1\n\n VAutocomplete.options.methods.clearableCallback.call(this)\n },\n },\n})\n","import './VDataFooter.sass'\n\n// Components\nimport VSelect from '../VSelect/VSelect'\nimport VIcon from '../VIcon'\nimport VBtn from '../VBtn'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { DataPagination, DataOptions, DataItemsPerPageOption } from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\nimport { getSlot } from '../../util/helpers'\n\nexport default Vue.extend({\n name: 'v-data-footer',\n\n props: {\n options: {\n type: Object as PropType,\n required: true,\n },\n pagination: {\n type: Object as PropType,\n required: true,\n },\n itemsPerPageOptions: {\n type: Array,\n default: () => ([5, 10, 15, -1]),\n } as PropValidator,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n nextIcon: {\n type: String,\n default: '$next',\n },\n firstIcon: {\n type: String,\n default: '$first',\n },\n lastIcon: {\n type: String,\n default: '$last',\n },\n itemsPerPageText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageText',\n },\n itemsPerPageAllText: {\n type: String,\n default: '$vuetify.dataFooter.itemsPerPageAll',\n },\n showFirstLastPage: Boolean,\n showCurrentPage: Boolean,\n disablePagination: Boolean,\n disableItemsPerPage: Boolean,\n pageText: {\n type: String,\n default: '$vuetify.dataFooter.pageText',\n },\n },\n\n computed: {\n disableNextPageIcon (): boolean {\n return this.options.itemsPerPage <= 0 ||\n this.options.page * this.options.itemsPerPage >= this.pagination.itemsLength ||\n this.pagination.pageStop < 0\n },\n computedDataItemsPerPageOptions (): any[] {\n return this.itemsPerPageOptions.map(option => {\n if (typeof option === 'object') return option\n else return this.genDataItemsPerPageOption(option)\n })\n },\n },\n\n methods: {\n updateOptions (obj: object) {\n this.$emit('update:options', Object.assign({}, this.options, obj))\n },\n onFirstPage () {\n this.updateOptions({ page: 1 })\n },\n onPreviousPage () {\n this.updateOptions({ page: this.options.page - 1 })\n },\n onNextPage () {\n this.updateOptions({ page: this.options.page + 1 })\n },\n onLastPage () {\n this.updateOptions({ page: this.pagination.pageCount })\n },\n onChangeItemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage, page: 1 })\n },\n genDataItemsPerPageOption (option: number) {\n return {\n text: option === -1 ? this.$vuetify.lang.t(this.itemsPerPageAllText) : String(option),\n value: option,\n }\n },\n genItemsPerPageSelect () {\n let value = this.options.itemsPerPage\n const computedIPPO = this.computedDataItemsPerPageOptions\n\n if (computedIPPO.length <= 1) return null\n\n if (!computedIPPO.find(ippo => ippo.value === value)) value = computedIPPO[0]\n\n return this.$createElement('div', {\n staticClass: 'v-data-footer__select',\n }, [\n this.$vuetify.lang.t(this.itemsPerPageText),\n this.$createElement(VSelect, {\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.itemsPerPageText),\n },\n props: {\n disabled: this.disableItemsPerPage,\n items: computedIPPO,\n value,\n hideDetails: true,\n auto: true,\n minWidth: '75px',\n },\n on: {\n input: this.onChangeItemsPerPage,\n },\n }),\n ])\n },\n genPaginationInfo () {\n let children: VNodeChildrenArrayContents = ['–']\n const itemsLength: number = this.pagination.itemsLength\n let pageStart: number = this.pagination.pageStart\n let pageStop: number = this.pagination.pageStop\n\n if (this.pagination.itemsLength && this.pagination.itemsPerPage) {\n pageStart = this.pagination.pageStart + 1\n pageStop = itemsLength < this.pagination.pageStop || this.pagination.pageStop < 0\n ? itemsLength\n : this.pagination.pageStop\n\n children = this.$scopedSlots['page-text']\n ? [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n : [this.$vuetify.lang.t(this.pageText, pageStart, pageStop, itemsLength)]\n } else if (this.$scopedSlots['page-text']) {\n children = [this.$scopedSlots['page-text']!({ pageStart, pageStop, itemsLength })]\n }\n\n return this.$createElement('div', {\n class: 'v-data-footer__pagination',\n }, children)\n },\n genIcon (click: Function, disabled: boolean, label: string, icon: string): VNode {\n return this.$createElement(VBtn, {\n props: {\n disabled: disabled || this.disablePagination,\n icon: true,\n text: true,\n // dark: this.dark, // TODO: add mixin\n // light: this.light // TODO: add mixin\n },\n on: {\n click,\n },\n attrs: {\n 'aria-label': label, // TODO: Localization\n },\n }, [this.$createElement(VIcon, icon)])\n },\n genIcons () {\n const before: VNodeChildrenArrayContents = []\n const after: VNodeChildrenArrayContents = []\n\n before.push(this.genIcon(\n this.onPreviousPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.prevPage'),\n this.$vuetify.rtl ? this.nextIcon : this.prevIcon\n ))\n\n after.push(this.genIcon(\n this.onNextPage,\n this.disableNextPageIcon,\n this.$vuetify.lang.t('$vuetify.dataFooter.nextPage'),\n this.$vuetify.rtl ? this.prevIcon : this.nextIcon\n ))\n\n if (this.showFirstLastPage) {\n before.unshift(this.genIcon(\n this.onFirstPage,\n this.options.page === 1,\n this.$vuetify.lang.t('$vuetify.dataFooter.firstPage'),\n this.$vuetify.rtl ? this.lastIcon : this.firstIcon\n ))\n\n after.push(this.genIcon(\n this.onLastPage,\n this.options.page >= this.pagination.pageCount || this.options.itemsPerPage === -1,\n this.$vuetify.lang.t('$vuetify.dataFooter.lastPage'),\n this.$vuetify.rtl ? this.firstIcon : this.lastIcon\n ))\n }\n\n return [\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-before',\n }, before),\n this.showCurrentPage && this.$createElement('span', [this.options.page.toString()]),\n this.$createElement('div', {\n staticClass: 'v-data-footer__icons-after',\n }, after),\n ]\n },\n },\n\n render (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-data-footer',\n }, [\n getSlot(this, 'prepend'),\n this.genItemsPerPageSelect(),\n this.genPaginationInfo(),\n this.genIcons(),\n ])\n },\n})\n","// Components\nimport { VData } from '../VData'\nimport VDataFooter from './VDataFooter'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, camelizeObjectKeys, keyCodes } from '../../util/helpers'\nimport { breaking, removed } from '../../util/console'\n\n// Types\nimport { VNode, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { DataItemProps, DataScopeProps } from 'vuetify/types'\n\n/* @vue/component */\nexport default mixins(\n Mobile,\n Themeable\n).extend({\n name: 'v-data-iterator',\n\n props: {\n ...VData.options.props, // TODO: filter out props not used\n itemKey: {\n type: String,\n default: 'id',\n },\n value: {\n type: Array,\n default: () => [],\n } as PropValidator,\n singleSelect: Boolean,\n expanded: {\n type: Array,\n default: () => [],\n } as PropValidator,\n mobileBreakpoint: {\n ...Mobile.options.props.mobileBreakpoint,\n default: 600,\n },\n singleExpand: Boolean,\n loading: [Boolean, String],\n noResultsText: {\n type: String,\n default: '$vuetify.dataIterator.noResultsText',\n },\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n loadingText: {\n type: String,\n default: '$vuetify.dataIterator.loadingText',\n },\n hideDefaultFooter: Boolean,\n footerProps: Object,\n selectableKey: {\n type: String,\n default: 'isSelectable',\n },\n },\n\n data: () => ({\n selection: {} as Record,\n expansion: {} as Record,\n internalCurrentItems: [] as any[],\n shiftKeyDown: false,\n lastEntry: -1,\n }),\n\n computed: {\n everyItem (): boolean {\n return !!this.selectableItems.length && this.selectableItems.every((i: any) => this.isSelected(i))\n },\n someItems (): boolean {\n return this.selectableItems.some((i: any) => this.isSelected(i))\n },\n sanitizedFooterProps (): Record {\n return camelizeObjectKeys(this.footerProps)\n },\n selectableItems (): any[] {\n return this.internalCurrentItems.filter(item => this.isSelectable(item))\n },\n },\n\n watch: {\n value: {\n handler (value: any[]) {\n this.selection = value.reduce((selection, item) => {\n selection[getObjectValueByPath(item, this.itemKey)] = item\n return selection\n }, {})\n },\n immediate: true,\n },\n selection (value: Record, old: Record) {\n if (deepEqual(Object.keys(value), Object.keys(old))) return\n\n this.$emit('input', Object.values(value))\n },\n expanded: {\n handler (value: any[]) {\n this.expansion = value.reduce((expansion, item) => {\n expansion[getObjectValueByPath(item, this.itemKey)] = true\n return expansion\n }, {})\n },\n immediate: true,\n },\n expansion (value: Record, old: Record) {\n if (deepEqual(value, old)) return\n const keys = Object.keys(value).filter(k => value[k])\n const expanded = !keys.length ? [] : this.items.filter(i => keys.includes(String(getObjectValueByPath(i, this.itemKey))))\n this.$emit('update:expanded', expanded)\n },\n },\n\n created () {\n const breakingProps = [\n ['disable-initial-sort', 'sort-by'],\n ['filter', 'custom-filter'],\n ['pagination', 'options'],\n ['total-items', 'server-items-length'],\n ['hide-actions', 'hide-default-footer'],\n ['rows-per-page-items', 'footer-props.items-per-page-options'],\n ['rows-per-page-text', 'footer-props.items-per-page-text'],\n ['prev-icon', 'footer-props.prev-icon'],\n ['next-icon', 'footer-props.next-icon'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n\n const removedProps = [\n 'expand',\n 'content-class',\n 'content-props',\n 'content-tag',\n ]\n\n /* istanbul ignore next */\n removedProps.forEach(prop => {\n if (this.$attrs.hasOwnProperty(prop)) removed(prop)\n })\n },\n\n mounted () {\n window.addEventListener('keydown', this.onKeyDown)\n window.addEventListener('keyup', this.onKeyUp)\n },\n beforeDestroy () {\n window.removeEventListener('keydown', this.onKeyDown)\n window.removeEventListener('keyup', this.onKeyUp)\n },\n\n methods: {\n onKeyDown (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = true\n },\n onKeyUp (e: KeyboardEvent): void {\n if (e.keyCode !== keyCodes.shift) return\n this.shiftKeyDown = false\n },\n toggleSelectAll (value: boolean): void {\n const selection = Object.assign({}, this.selection)\n\n for (let i = 0; i < this.selectableItems.length; i++) {\n const item = this.selectableItems[i]\n\n if (!this.isSelectable(item)) continue\n\n const key = getObjectValueByPath(item, this.itemKey)\n if (value) selection[key] = item\n else delete selection[key]\n }\n\n this.selection = selection\n this.$emit('toggle-select-all', { items: this.internalCurrentItems, value })\n },\n isSelectable (item: any): boolean {\n return getObjectValueByPath(item, this.selectableKey) !== false\n },\n isSelected (item: any): boolean {\n return !!this.selection[getObjectValueByPath(item, this.itemKey)] || false\n },\n select (item: any, value = true, emit = true): void {\n if (!this.isSelectable(item)) return\n\n const selection = this.singleSelect ? {} : Object.assign({}, this.selection)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) selection[key] = item\n else delete selection[key]\n\n const index = this.selectableItems.findIndex(x => getObjectValueByPath(x, this.itemKey) === key)\n if (this.lastEntry === -1) this.lastEntry = index\n else if (this.shiftKeyDown && !this.singleSelect && emit) {\n const lastEntryKey = getObjectValueByPath(this.selectableItems[this.lastEntry], this.itemKey)\n const lastEntryKeySelected = Object.keys(this.selection).includes(String(lastEntryKey))\n this.multipleSelect(lastEntryKeySelected, emit, selection, index)\n }\n this.lastEntry = index\n\n if (this.singleSelect && emit) {\n const keys = Object.keys(this.selection)\n const old = keys.length && getObjectValueByPath(this.selection[keys[0]], this.itemKey)\n old && old !== key && this.$emit('item-selected', { item: this.selection[old], value: false })\n }\n this.selection = selection\n emit && this.$emit('item-selected', { item, value })\n },\n multipleSelect (value = true, emit = true, selection: any, index: number): void {\n const start = index < this.lastEntry ? index : this.lastEntry\n const end = index < this.lastEntry ? this.lastEntry : index\n for (let i = start; i <= end; i++) {\n const currentItem = this.selectableItems[i]\n const key = getObjectValueByPath(currentItem, this.itemKey)\n if (value) selection[key] = currentItem\n else delete selection[key]\n emit && this.$emit('item-selected', { currentItem, value })\n }\n },\n isExpanded (item: any): boolean {\n return this.expansion[getObjectValueByPath(item, this.itemKey)] || false\n },\n expand (item: any, value = true): void {\n const expansion = this.singleExpand ? {} : Object.assign({}, this.expansion)\n const key = getObjectValueByPath(item, this.itemKey)\n\n if (value) expansion[key] = true\n else delete expansion[key]\n\n this.expansion = expansion\n this.$emit('item-expanded', { item, value })\n },\n createItemProps (item: any, index: number): DataItemProps {\n return {\n item,\n index,\n select: (v: boolean) => this.select(item, v),\n isSelected: this.isSelected(item),\n expand: (v: boolean) => this.expand(item, v),\n isExpanded: this.isExpanded(item),\n isMobile: this.isMobile,\n }\n },\n genEmptyWrapper (content: VNodeChildren) {\n return this.$createElement('div', content)\n },\n genEmpty (originalItemsLength: number, filteredItemsLength: number) {\n if (originalItemsLength === 0 && this.loading) {\n const loading = this.$slots.loading || this.$vuetify.lang.t(this.loadingText)\n return this.genEmptyWrapper(loading)\n } else if (originalItemsLength === 0) {\n const noData = this.$slots['no-data'] || this.$vuetify.lang.t(this.noDataText)\n return this.genEmptyWrapper(noData)\n } else if (filteredItemsLength === 0) {\n const noResults = this.$slots['no-results'] || this.$vuetify.lang.t(this.noResultsText)\n return this.genEmptyWrapper(noResults)\n }\n\n return null\n },\n genItems (props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n if (this.$scopedSlots.default) {\n return this.$scopedSlots.default({\n ...props,\n isSelected: this.isSelected,\n select: this.select,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n expand: this.expand,\n })\n }\n\n if (this.$scopedSlots.item) {\n return props.items.map((item: any, index) => this.$scopedSlots.item!(this.createItemProps(\n item,\n index\n )))\n }\n\n return []\n },\n genFooter (props: DataScopeProps) {\n if (this.hideDefaultFooter) return null\n\n const data = {\n props: {\n ...this.sanitizedFooterProps,\n options: props.options,\n pagination: props.pagination,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n }\n\n const scopedSlots = getPrefixedScopedSlots('footer.', this.$scopedSlots)\n\n return this.$createElement(VDataFooter, {\n scopedSlots,\n ...data,\n })\n },\n genDefaultScopedSlot (props: any) {\n const outerProps = {\n ...props,\n someItems: this.someItems,\n everyItem: this.everyItem,\n toggleSelectAll: this.toggleSelectAll,\n }\n\n return this.$createElement('div', {\n staticClass: 'v-data-iterator',\n }, [\n getSlot(this, 'header', outerProps, true),\n this.genItems(props),\n this.genFooter(props),\n getSlot(this, 'footer', outerProps, true),\n ])\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: this.$props,\n on: {\n 'update:options': (v: any, old: any) => !deepEqual(v, old) && this.$emit('update:options', v),\n 'update:page': (v: any) => this.$emit('update:page', v),\n 'update:items-per-page': (v: any) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: any) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: any) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: any) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: any) => this.$emit('update:group-desc', v),\n pagination: (v: any, old: any) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","import { VDataTable } from '../'\nimport VIcon from '../../VIcon'\nimport VSimpleCheckbox from '../../VCheckbox/VSimpleCheckbox'\nimport ripple from '../../../directives/ripple'\n\nimport Vue from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../../util/mixins'\nimport { DataOptions, DataTableHeader } from 'vuetify/types'\n\ntype VDataTableInstance = InstanceType\n\ninterface options extends Vue {\n dataTable: VDataTableInstance\n}\n\nexport default mixins().extend({\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({\n page: 1,\n itemsPerPage: 10,\n sortBy: [],\n sortDesc: [],\n groupBy: [],\n groupDesc: [],\n multiSort: false,\n mustSort: false,\n }),\n } as PropValidator,\n checkboxColor: String,\n sortIcon: {\n type: String,\n default: '$sort',\n },\n everyItem: Boolean,\n someItems: Boolean,\n showGroupBy: Boolean,\n singleSelect: Boolean,\n disableSort: Boolean,\n },\n\n methods: {\n genSelectAll () {\n const data = {\n props: {\n value: this.everyItem,\n indeterminate: !this.everyItem && this.someItems,\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (v: boolean) => this.$emit('toggle-select-all', v),\n },\n }\n\n if (this.$scopedSlots['data-table-select']) {\n return this.$scopedSlots['data-table-select']!(data)\n }\n\n return this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n ...data,\n })\n },\n genSortIcon () {\n return this.$createElement(VIcon, {\n staticClass: 'v-data-table-header__icon',\n props: {\n size: 18,\n },\n }, [this.sortIcon])\n },\n },\n})\n","import { VNode, VNodeChildrenArrayContents } from 'vue'\nimport mixins from '../../util/mixins'\nimport VSelect from '../VSelect/VSelect'\nimport VChip from '../VChip'\nimport header from './mixins/header'\nimport { wrapInArray } from '../../util/helpers'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-mobile',\n\n props: {\n sortByText: {\n type: String,\n default: '$vuetify.dataTable.sortBy',\n },\n },\n\n methods: {\n genSortChip (props: any) {\n const children: VNodeChildrenArrayContents = [props.item.text]\n\n const sortIndex = this.options.sortBy.findIndex(k => k === props.item.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n children.push(this.$createElement('div', {\n staticClass: 'v-chip__close',\n class: {\n sortable: true,\n active: beingSorted,\n asc: beingSorted && !isDesc,\n desc: beingSorted && isDesc,\n },\n }, [this.genSortIcon()]))\n\n return this.$createElement(VChip, {\n staticClass: 'sortable',\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('sort', props.item.value)\n },\n },\n }, children)\n },\n genSortSelect (items: any[]) {\n return this.$createElement(VSelect, {\n props: {\n label: this.$vuetify.lang.t(this.sortByText),\n items,\n hideDetails: true,\n multiple: this.options.multiSort,\n value: this.options.multiSort ? this.options.sortBy : this.options.sortBy[0],\n menuProps: { closeOnContentClick: true },\n },\n on: {\n change: (v: string | string[]) => this.$emit('sort', v),\n },\n scopedSlots: {\n selection: props => this.genSortChip(props),\n },\n })\n },\n },\n\n render (h): VNode {\n const children: VNodeChildrenArrayContents = []\n\n const header = this.headers.find(h => h.value === 'data-table-select')\n if (header && !this.singleSelect) {\n children.push(this.$createElement('div', {\n class: [\n 'v-data-table-header-mobile__select',\n ...wrapInArray(header.class),\n ],\n attrs: {\n width: header.width,\n },\n }, [this.genSelectAll()]))\n }\n\n const sortHeaders = this.headers\n .filter(h => h.sortable !== false && h.value !== 'data-table-select')\n .map(h => ({\n text: h.text,\n value: h.value,\n }))\n\n if (!this.disableSort && sortHeaders.length) {\n children.push(this.genSortSelect(sortHeaders))\n }\n\n const th = children.length\n ? h('th', [h('div', { staticClass: 'v-data-table-header-mobile__wrapper' }, children)])\n : undefined\n\n const tr = h('tr', [th])\n\n return h('thead', {\n staticClass: 'v-data-table-header v-data-table-header-mobile',\n }, [tr])\n },\n})\n","// Helpers\nimport { VNode, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport header from './mixins/header'\nimport { wrapInArray, convertToUnit } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default mixins(header).extend({\n name: 'v-data-table-header-desktop',\n\n methods: {\n genGroupByToggle (header: DataTableHeader) {\n return this.$createElement('span', {\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n this.$emit('group', header.value)\n },\n },\n }, ['group'])\n },\n getAria (beingSorted: boolean, isDesc: boolean) {\n const $t = (key: string) => this.$vuetify.lang.t(`$vuetify.dataTable.ariaLabel.${key}`)\n\n let ariaSort = 'none'\n let ariaLabel = [\n $t('sortNone'),\n $t('activateAscending'),\n ]\n\n if (!beingSorted) {\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n }\n\n if (isDesc) {\n ariaSort = 'descending'\n ariaLabel = [\n $t('sortDescending'),\n $t(this.options.mustSort ? 'activateAscending' : 'activateNone'),\n ]\n } else {\n ariaSort = 'ascending'\n ariaLabel = [\n $t('sortAscending'),\n $t('activateDescending'),\n ]\n }\n\n return { ariaSort, ariaLabel: ariaLabel.join(' ') }\n },\n genHeader (header: DataTableHeader) {\n const data: Required> = {\n attrs: {\n role: 'columnheader',\n scope: 'col',\n 'aria-label': header.text || '',\n },\n style: {\n width: convertToUnit(header.width),\n minWidth: convertToUnit(header.width),\n },\n class: [\n `text-${header.align || 'start'}`,\n ...wrapInArray(header.class),\n header.divider && 'v-data-table__divider',\n ],\n on: {},\n }\n const children = []\n\n if (header.value === 'data-table-select' && !this.singleSelect) {\n return this.$createElement('th', data, [this.genSelectAll()])\n }\n\n children.push(\n this.$scopedSlots.hasOwnProperty(header.value)\n ? this.$scopedSlots[header.value]!({ header })\n : this.$createElement('span', [header.text])\n )\n\n if (!this.disableSort && (header.sortable || !header.hasOwnProperty('sortable'))) {\n data.on.click = () => this.$emit('sort', header.value)\n\n const sortIndex = this.options.sortBy.findIndex(k => k === header.value)\n const beingSorted = sortIndex >= 0\n const isDesc = this.options.sortDesc[sortIndex]\n\n data.class.push('sortable')\n\n const { ariaLabel, ariaSort } = this.getAria(beingSorted, isDesc)\n\n data.attrs['aria-label'] += `${header.text ? ': ' : ''}${ariaLabel}`\n data.attrs['aria-sort'] = ariaSort\n\n if (beingSorted) {\n data.class.push('active')\n data.class.push(isDesc ? 'desc' : 'asc')\n }\n\n if (header.align === 'end') children.unshift(this.genSortIcon())\n else children.push(this.genSortIcon())\n\n if (this.options.multiSort && beingSorted) {\n children.push(this.$createElement('span', { class: 'v-data-table-header__sort-badge' }, [String(sortIndex + 1)]))\n }\n }\n\n if (this.showGroupBy && header.groupable !== false) children.push(this.genGroupByToggle(header))\n\n return this.$createElement('th', data, children)\n },\n },\n\n render (): VNode {\n return this.$createElement('thead', {\n staticClass: 'v-data-table-header',\n }, [\n this.$createElement('tr', this.headers.map(header => this.genHeader(header))),\n ])\n },\n})\n","import { VNodeData } from 'vue'\n\n/**\n * Removes duplicate `@input` listeners when\n * using v-model with functional components\n *\n * @see https://github.com/vuetifyjs/vuetify/issues/4460\n */\nexport default function dedupeModelListeners (data: VNodeData): void {\n if (data.model && data.on && data.on.input) {\n if (Array.isArray(data.on.input)) {\n const i = data.on.input.indexOf(data.model.callback)\n if (i > -1) data.on.input.splice(i, 1)\n } else {\n delete data.on.input\n }\n }\n}\n","import { CreateElement, VNode } from 'vue'\n\nexport default function rebuildFunctionalSlots (slots: { [key: string]: VNode[] | undefined }, h: CreateElement) {\n const children: VNode[] = []\n\n for (const slot in slots) {\n if (slots.hasOwnProperty(slot)) {\n children.push(h('template', { slot }, slots[slot]))\n }\n }\n\n return children\n}\n","// Styles\nimport './VDataTableHeader.sass'\n\n// Components\nimport VDataTableHeaderMobile from './VDataTableHeaderMobile'\nimport VDataTableHeaderDesktop from './VDataTableHeaderDesktop'\n\n// Mixins\nimport header from './mixins/header'\n\n// Utilities\nimport dedupeModelListeners from '../../util/dedupeModelListeners'\nimport mergeData from '../../util/mergeData'\nimport rebuildSlots from '../../util/rebuildFunctionalSlots'\n\n// Types\nimport Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-data-table-header',\n\n functional: true,\n\n props: {\n ...header.options.props,\n mobile: Boolean,\n },\n\n render (h, { props, data, slots }) {\n dedupeModelListeners(data)\n const children = rebuildSlots(slots(), h)\n\n data = mergeData(data, { props })\n\n if (props.mobile) {\n return h(VDataTableHeaderMobile, data, children)\n } else {\n return h(VDataTableHeaderDesktop, data, children)\n }\n },\n})\n","// Types\nimport Vue, { VNode, PropType } from 'vue'\nimport { DataTableHeader } from 'vuetify/types'\n\n// Utils\nimport { getObjectValueByPath, wrapInArray } from '../../util/helpers'\n\nfunction needsTd (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n !['td', 'th'].includes(slot![0]?.tag!)\n}\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns = props.headers.map((header: DataTableHeader) => {\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(...wrapInArray(scopedSlot({\n item: props.item,\n isMobile: false,\n header,\n index: props.index,\n value,\n })))\n } else if (regularSlot) {\n children.push(...wrapInArray(regularSlot))\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const textAlign = `text-${header.align || 'start'}`\n\n return needsTd(children)\n ? h('td', {\n class: [\n textAlign,\n header.cellClass,\n {\n 'v-data-table__divider': header.divider,\n },\n ],\n }, children)\n : children\n })\n\n return h('tr', data, columns)\n },\n})\n","import Vue, { VNode } from 'vue'\n\nexport default Vue.extend({\n name: 'row-group',\n\n functional: true,\n\n props: {\n value: {\n type: Boolean,\n default: true,\n },\n headerClass: {\n type: String,\n default: 'v-row-group__header',\n },\n contentClass: String,\n summaryClass: {\n type: String,\n default: 'v-row-group__summary',\n },\n },\n\n render (h, { slots, props }): VNode {\n const computedSlots = slots()\n const children = []\n\n if (computedSlots['column.header']) {\n children.push(h('tr', {\n staticClass: props.headerClass,\n }, computedSlots['column.header']))\n } else if (computedSlots['row.header']) {\n children.push(...computedSlots['row.header'])\n }\n\n if (computedSlots['row.content'] && props.value) children.push(...computedSlots['row.content'])\n\n if (computedSlots['column.summary']) {\n children.push(h('tr', {\n staticClass: props.summaryClass,\n }, computedSlots['column.summary']))\n } else if (computedSlots['row.summary']) {\n children.push(...computedSlots['row.summary'])\n }\n\n return children as any\n },\n})\n","import './VSimpleTable.sass'\n\nimport { convertToUnit } from '../../util/helpers'\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nexport default mixins(Themeable).extend({\n name: 'v-simple-table',\n\n props: {\n dense: Boolean,\n fixedHeader: Boolean,\n height: [Number, String],\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-data-table--dense': this.dense,\n 'v-data-table--fixed-height': !!this.height && !this.fixedHeader,\n 'v-data-table--fixed-header': this.fixedHeader,\n 'v-data-table--has-top': !!this.$slots.top,\n 'v-data-table--has-bottom': !!this.$slots.bottom,\n ...this.themeClasses,\n }\n },\n },\n\n methods: {\n genWrapper () {\n return this.$slots.wrapper || this.$createElement('div', {\n staticClass: 'v-data-table__wrapper',\n style: {\n height: convertToUnit(this.height),\n },\n }, [\n this.$createElement('table', this.$slots.default),\n ])\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-data-table',\n class: this.classes,\n }, [\n this.$slots.top,\n this.genWrapper(),\n this.$slots.bottom,\n ])\n },\n})\n","import Vue, { VNode, PropType } from 'vue'\nimport { getObjectValueByPath } from '../../util/helpers'\nimport { DataTableHeader } from 'vuetify/types'\n\nexport default Vue.extend({\n name: 'row',\n\n functional: true,\n\n props: {\n headers: Array as PropType,\n hideDefaultHeader: Boolean,\n index: Number,\n item: Object,\n rtl: Boolean,\n },\n\n render (h, { props, slots, data }): VNode {\n const computedSlots = slots()\n\n const columns: VNode[] = props.headers.map((header: DataTableHeader) => {\n const classes = {\n 'v-data-table__mobile-row': true,\n }\n\n const children = []\n const value = getObjectValueByPath(props.item, header.value)\n\n const slotName = header.value\n const scopedSlot = data.scopedSlots && data.scopedSlots.hasOwnProperty(slotName) && data.scopedSlots[slotName]\n const regularSlot = computedSlots.hasOwnProperty(slotName) && computedSlots[slotName]\n\n if (scopedSlot) {\n children.push(scopedSlot({\n item: props.item,\n isMobile: true,\n header,\n index: props.index,\n value,\n }))\n } else if (regularSlot) {\n children.push(regularSlot)\n } else {\n children.push(value == null ? value : String(value))\n }\n\n const mobileRowChildren = [\n h('div', {\n staticClass: 'v-data-table__mobile-row__cell',\n }, children),\n ]\n\n if (header.value !== 'dataTableSelect' && !props.hideDefaultHeader) {\n mobileRowChildren.unshift(\n h('div', {\n staticClass: 'v-data-table__mobile-row__header',\n }, [header.text])\n )\n }\n\n return h('td', { class: classes }, mobileRowChildren)\n })\n\n return h('tr', { ...data, staticClass: 'v-data-table__mobile-table-row' }, columns)\n },\n})\n","import './VDataTable.sass'\n\n// Types\nimport { VNode, VNodeChildrenArrayContents, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport {\n DataTableHeader,\n DataTableFilterFunction,\n DataScopeProps,\n DataOptions,\n DataPagination,\n DataTableCompareFunction,\n DataItemsPerPageOption,\n ItemGroup,\n RowClassFunction,\n DataTableItemProps,\n} from 'vuetify/types'\n\n// Components\nimport { VData } from '../VData'\nimport { VDataFooter, VDataIterator } from '../VDataIterator'\nimport VBtn from '../VBtn'\nimport VDataTableHeader from './VDataTableHeader'\n// import VVirtualTable from './VVirtualTable'\nimport VIcon from '../VIcon'\nimport Row from './Row'\nimport RowGroup from './RowGroup'\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VSimpleTable from './VSimpleTable'\nimport MobileRow from './MobileRow'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { deepEqual, getObjectValueByPath, getPrefixedScopedSlots, getSlot, defaultFilter, camelizeObjectKeys, getPropertyFromItem } from '../../util/helpers'\nimport { breaking } from '../../util/console'\nimport { mergeClasses } from '../../util/mergeData'\n\nfunction filterFn (item: any, search: string | null, filter: DataTableFilterFunction) {\n return (header: DataTableHeader) => {\n const value = getObjectValueByPath(item, header.value)\n return header.filter ? header.filter(value, search, item) : filter(value, search, item)\n }\n}\n\nfunction searchTableItems (\n items: any[],\n search: string | null,\n headersWithCustomFilters: DataTableHeader[],\n headersWithoutCustomFilters: DataTableHeader[],\n customFilter: DataTableFilterFunction\n) {\n search = typeof search === 'string' ? search.trim() : null\n\n return items.filter(item => {\n // Headers with custom filters are evaluated whether or not a search term has been provided.\n // We need to match every filter to be included in the results.\n const matchesColumnFilters = headersWithCustomFilters.every(filterFn(item, search, defaultFilter))\n\n // Headers without custom filters are only filtered by the `search` property if it is defined.\n // We only need a single column to match the search term to be included in the results.\n const matchesSearchTerm = !search || headersWithoutCustomFilters.some(filterFn(item, search, customFilter))\n\n return matchesColumnFilters && matchesSearchTerm\n })\n}\n\n/* @vue/component */\nexport default mixins(\n VDataIterator,\n Loadable,\n).extend({\n name: 'v-data-table',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n headers: {\n type: Array,\n default: () => [],\n } as PropValidator,\n showSelect: Boolean,\n checkboxColor: String,\n showExpand: Boolean,\n showGroupBy: Boolean,\n // TODO: Fix\n // virtualRows: Boolean,\n height: [Number, String],\n hideDefaultHeader: Boolean,\n caption: String,\n dense: Boolean,\n headerProps: Object,\n calculateWidths: Boolean,\n fixedHeader: Boolean,\n headersLength: Number,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n customFilter: {\n type: Function,\n default: defaultFilter,\n } as PropValidator,\n itemClass: {\n type: [String, Function],\n default: () => '',\n } as PropValidator,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n },\n\n data () {\n return {\n internalGroupBy: [] as string[],\n openCache: {} as { [key: string]: boolean },\n widths: [] as number[],\n }\n },\n\n computed: {\n computedHeaders (): DataTableHeader[] {\n if (!this.headers) return []\n const headers = this.headers.filter(h => h.value === undefined || !this.internalGroupBy.find(v => v === h.value))\n const defaultHeader = { text: '', sortable: false, width: '1px' }\n\n if (this.showSelect) {\n const index = headers.findIndex(h => h.value === 'data-table-select')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-select' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n if (this.showExpand) {\n const index = headers.findIndex(h => h.value === 'data-table-expand')\n if (index < 0) headers.unshift({ ...defaultHeader, value: 'data-table-expand' })\n else headers.splice(index, 1, { ...defaultHeader, ...headers[index] })\n }\n\n return headers\n },\n colspanAttrs (): object | undefined {\n return this.isMobile ? undefined : {\n colspan: this.headersLength || this.computedHeaders.length,\n }\n },\n columnSorters (): Record {\n return this.computedHeaders.reduce>((acc, header) => {\n if (header.sort) acc[header.value] = header.sort\n return acc\n }, {})\n },\n headersWithCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n headersWithoutCustomFilters (): DataTableHeader[] {\n return this.headers.filter(header => !header.filter && (!header.hasOwnProperty('filterable') || header.filterable === true))\n },\n sanitizedHeaderProps (): Record {\n return camelizeObjectKeys(this.headerProps)\n },\n computedItemsPerPage (): number {\n const itemsPerPage = this.options && this.options.itemsPerPage ? this.options.itemsPerPage : this.itemsPerPage\n const itemsPerPageOptions: DataItemsPerPageOption[] | undefined = this.sanitizedFooterProps.itemsPerPageOptions\n\n if (\n itemsPerPageOptions &&\n !itemsPerPageOptions.find(item => typeof item === 'number' ? item === itemsPerPage : item.value === itemsPerPage)\n ) {\n const firstOption = itemsPerPageOptions[0]\n return typeof firstOption === 'object' ? firstOption.value : firstOption\n }\n\n return itemsPerPage\n },\n },\n\n created () {\n const breakingProps = [\n ['sort-icon', 'header-props.sort-icon'],\n ['hide-headers', 'hide-default-header'],\n ['select-all', 'show-select'],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n mounted () {\n // if ((!this.sortBy || !this.sortBy.length) && (!this.options.sortBy || !this.options.sortBy.length)) {\n // const firstSortable = this.headers.find(h => !('sortable' in h) || !!h.sortable)\n // if (firstSortable) this.updateOptions({ sortBy: [firstSortable.value], sortDesc: [false] })\n // }\n\n if (this.calculateWidths) {\n window.addEventListener('resize', this.calcWidths)\n this.calcWidths()\n }\n },\n\n beforeDestroy () {\n if (this.calculateWidths) {\n window.removeEventListener('resize', this.calcWidths)\n }\n },\n\n methods: {\n calcWidths () {\n this.widths = Array.from(this.$el.querySelectorAll('th')).map(e => e.clientWidth)\n },\n customFilterWithColumns (items: any[], search: string) {\n return searchTableItems(items, search, this.headersWithCustomFilters, this.headersWithoutCustomFilters, this.customFilter)\n },\n customSortWithHeaders (items: any[], sortBy: string[], sortDesc: boolean[], locale: string) {\n return this.customSort(items, sortBy, sortDesc, locale, this.columnSorters)\n },\n createItemProps (item: any, index: number): DataTableItemProps {\n const props = VDataIterator.options.methods.createItemProps.call(this, item, index)\n\n return Object.assign(props, { headers: this.computedHeaders })\n },\n genCaption (props: DataScopeProps) {\n if (this.caption) return [this.$createElement('caption', [this.caption])]\n\n return getSlot(this, 'caption', props, true)\n },\n genColgroup (props: DataScopeProps) {\n return this.$createElement('colgroup', this.computedHeaders.map(header => {\n return this.$createElement('col', {\n class: {\n divider: header.divider,\n },\n })\n }))\n },\n genLoading () {\n const th = this.$createElement('th', {\n staticClass: 'column',\n attrs: this.colspanAttrs,\n }, [this.genProgress()])\n\n const tr = this.$createElement('tr', {\n staticClass: 'v-data-table__progress',\n }, [th])\n\n return this.$createElement('thead', [tr])\n },\n genHeaders (props: DataScopeProps) {\n const data = {\n props: {\n ...this.sanitizedHeaderProps,\n headers: this.computedHeaders,\n options: props.options,\n mobile: this.isMobile,\n showGroupBy: this.showGroupBy,\n checkboxColor: this.checkboxColor,\n someItems: this.someItems,\n everyItem: this.everyItem,\n singleSelect: this.singleSelect,\n disableSort: this.disableSort,\n },\n on: {\n sort: props.sort,\n group: props.group,\n 'toggle-select-all': this.toggleSelectAll,\n },\n }\n\n // TODO: rename to 'head'? (thead, tbody, tfoot)\n const children: VNodeChildrenArrayContents = [getSlot(this, 'header', {\n ...data,\n isMobile: this.isMobile,\n })]\n\n if (!this.hideDefaultHeader) {\n const scopedSlots = getPrefixedScopedSlots('header.', this.$scopedSlots)\n children.push(this.$createElement(VDataTableHeader, {\n ...data,\n scopedSlots,\n }))\n }\n\n if (this.loading) children.push(this.genLoading())\n\n return children\n },\n genEmptyWrapper (content: VNodeChildrenArrayContents) {\n return this.$createElement('tr', {\n staticClass: 'v-data-table__empty-wrapper',\n }, [\n this.$createElement('td', {\n attrs: this.colspanAttrs,\n }, content),\n ])\n },\n genItems (items: any[], props: DataScopeProps) {\n const empty = this.genEmpty(props.originalItemsLength, props.pagination.itemsLength)\n if (empty) return [empty]\n\n return props.groupedItems\n ? this.genGroupedRows(props.groupedItems, props)\n : this.genRows(items, props)\n },\n genGroupedRows (groupedItems: ItemGroup[], props: DataScopeProps) {\n return groupedItems.map(group => {\n if (!this.openCache.hasOwnProperty(group.name)) this.$set(this.openCache, group.name, true)\n\n if (this.$scopedSlots.group) {\n return this.$scopedSlots.group({\n group: group.name,\n options: props.options,\n isMobile: this.isMobile,\n items: group.items,\n headers: this.computedHeaders,\n })\n } else {\n return this.genDefaultGroupedRow(group.name, group.items, props)\n }\n })\n },\n genDefaultGroupedRow (group: string, items: any[], props: DataScopeProps) {\n const isOpen = !!this.openCache[group]\n const children: VNodeChildren = [\n this.$createElement('template', { slot: 'row.content' }, this.genRows(items, props)),\n ]\n const toggleFn = () => this.$set(this.openCache, group, !this.openCache[group])\n const removeFn = () => props.updateOptions({ groupBy: [], groupDesc: [] })\n\n if (this.$scopedSlots['group.header']) {\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [\n this.$scopedSlots['group.header']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n remove: removeFn,\n }),\n ]))\n } else {\n const toggle = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: toggleFn,\n },\n }, [this.$createElement(VIcon, [isOpen ? '$minus' : '$plus'])])\n\n const remove = this.$createElement(VBtn, {\n staticClass: 'ma-0',\n props: {\n icon: true,\n small: true,\n },\n on: {\n click: removeFn,\n },\n }, [this.$createElement(VIcon, ['$close'])])\n\n const column = this.$createElement('td', {\n staticClass: 'text-start',\n attrs: this.colspanAttrs,\n }, [toggle, `${props.options.groupBy[0]}: ${group}`, remove])\n\n children.unshift(this.$createElement('template', { slot: 'column.header' }, [column]))\n }\n\n if (this.$scopedSlots['group.summary']) {\n children.push(this.$createElement('template', { slot: 'column.summary' }, [\n this.$scopedSlots['group.summary']!({\n group,\n groupBy: props.options.groupBy,\n isMobile: this.isMobile,\n items,\n headers: this.computedHeaders,\n isOpen,\n toggle: toggleFn,\n }),\n ]))\n }\n\n return this.$createElement(RowGroup, {\n key: group,\n props: {\n value: isOpen,\n },\n }, children)\n },\n genRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots.item ? this.genScopedRows(items, props) : this.genDefaultRows(items, props)\n },\n genScopedRows (items: any[], props: DataScopeProps) {\n const rows = []\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i]\n rows.push(this.$scopedSlots.item!({\n ...this.createItemProps(item, i),\n isMobile: this.isMobile,\n }))\n\n if (this.isExpanded(item)) {\n rows.push(this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n index: i,\n item,\n }))\n }\n }\n\n return rows\n },\n genDefaultRows (items: any[], props: DataScopeProps) {\n return this.$scopedSlots['expanded-item']\n ? items.map((item, index) => this.genDefaultExpandedRow(item, index))\n : items.map((item, index) => this.genDefaultSimpleRow(item, index))\n },\n genDefaultExpandedRow (item: any, index: number): VNode {\n const isExpanded = this.isExpanded(item)\n const classes = {\n 'v-data-table__expanded v-data-table__expanded__row': isExpanded,\n }\n const headerRow = this.genDefaultSimpleRow(item, index, classes)\n const expandedRow = this.$createElement('tr', {\n staticClass: 'v-data-table__expanded v-data-table__expanded__content',\n }, [this.$scopedSlots['expanded-item']!({\n headers: this.computedHeaders,\n isMobile: this.isMobile,\n item,\n })])\n\n return this.$createElement(RowGroup, {\n props: {\n value: isExpanded,\n },\n }, [\n this.$createElement('template', { slot: 'row.header' }, [headerRow]),\n this.$createElement('template', { slot: 'row.content' }, [expandedRow]),\n ])\n },\n genDefaultSimpleRow (item: any, index: number, classes: Record = {}): VNode {\n const scopedSlots = getPrefixedScopedSlots('item.', this.$scopedSlots)\n\n const data = this.createItemProps(item, index)\n\n if (this.showSelect) {\n const slot = scopedSlots['data-table-select']\n scopedSlots['data-table-select'] = slot ? () => slot({\n ...data,\n isMobile: this.isMobile,\n }) : () => this.$createElement(VSimpleCheckbox, {\n staticClass: 'v-data-table__checkbox',\n props: {\n value: data.isSelected,\n disabled: !this.isSelectable(item),\n color: this.checkboxColor ?? '',\n },\n on: {\n input: (val: boolean) => data.select(val),\n },\n })\n }\n\n if (this.showExpand) {\n const slot = scopedSlots['data-table-expand']\n scopedSlots['data-table-expand'] = slot ? () => slot(data) : () => this.$createElement(VIcon, {\n staticClass: 'v-data-table__expand-icon',\n class: {\n 'v-data-table__expand-icon--active': data.isExpanded,\n },\n on: {\n click: (e: MouseEvent) => {\n e.stopPropagation()\n data.expand(!data.isExpanded)\n },\n },\n }, [this.expandIcon])\n }\n\n return this.$createElement(this.isMobile ? MobileRow : Row, {\n key: getObjectValueByPath(item, this.itemKey),\n class: mergeClasses(\n { ...classes, 'v-data-table__selected': data.isSelected },\n getPropertyFromItem(item, this.itemClass)\n ),\n props: {\n headers: this.computedHeaders,\n hideDefaultHeader: this.hideDefaultHeader,\n index,\n item,\n rtl: this.$vuetify.rtl,\n },\n scopedSlots,\n on: {\n // TODO: for click, the first argument should be the event, and the second argument should be data,\n // but this is a breaking change so it's for v3\n click: () => this.$emit('click:row', item, data),\n contextmenu: (event: MouseEvent) => this.$emit('contextmenu:row', event, data),\n dblclick: (event: MouseEvent) => this.$emit('dblclick:row', event, data),\n },\n })\n },\n genBody (props: DataScopeProps): VNode | string | VNodeChildren {\n const data = {\n ...props,\n expand: this.expand,\n headers: this.computedHeaders,\n isExpanded: this.isExpanded,\n isMobile: this.isMobile,\n isSelected: this.isSelected,\n select: this.select,\n }\n\n if (this.$scopedSlots.body) {\n return this.$scopedSlots.body!(data)\n }\n\n return this.$createElement('tbody', [\n getSlot(this, 'body.prepend', data, true),\n this.genItems(props.items, props),\n getSlot(this, 'body.append', data, true),\n ])\n },\n genFoot (props: DataScopeProps): VNode[] | undefined {\n return this.$scopedSlots.foot?.(props)\n },\n genFooters (props: DataScopeProps) {\n const data = {\n props: {\n options: props.options,\n pagination: props.pagination,\n itemsPerPageText: '$vuetify.dataTable.itemsPerPageText',\n ...this.sanitizedFooterProps,\n },\n on: {\n 'update:options': (value: any) => props.updateOptions(value),\n },\n widths: this.widths,\n headers: this.computedHeaders,\n }\n\n const children: VNodeChildren = [\n getSlot(this, 'footer', data, true),\n ]\n\n if (!this.hideDefaultFooter) {\n children.push(this.$createElement(VDataFooter, {\n ...data,\n scopedSlots: getPrefixedScopedSlots('footer.', this.$scopedSlots),\n }))\n }\n\n return children\n },\n genDefaultScopedSlot (props: DataScopeProps): VNode {\n const simpleProps = {\n height: this.height,\n fixedHeader: this.fixedHeader,\n dense: this.dense,\n }\n\n // if (this.virtualRows) {\n // return this.$createElement(VVirtualTable, {\n // props: Object.assign(simpleProps, {\n // items: props.items,\n // height: this.height,\n // rowHeight: this.dense ? 24 : 48,\n // headerHeight: this.dense ? 32 : 48,\n // // TODO: expose rest of props from virtual table?\n // }),\n // scopedSlots: {\n // items: ({ items }) => this.genItems(items, props) as any,\n // },\n // }, [\n // this.proxySlot('body.before', [this.genCaption(props), this.genHeaders(props)]),\n // this.proxySlot('bottom', this.genFooters(props)),\n // ])\n // }\n\n return this.$createElement(VSimpleTable, {\n props: simpleProps,\n class: {\n 'v-data-table--mobile': this.isMobile,\n },\n }, [\n this.proxySlot('top', getSlot(this, 'top', {\n ...props,\n isMobile: this.isMobile,\n }, true)),\n this.genCaption(props),\n this.genColgroup(props),\n this.genHeaders(props),\n this.genBody(props),\n this.genFoot(props),\n this.proxySlot('bottom', this.genFooters(props)),\n ])\n },\n proxySlot (slot: string, content: VNodeChildren) {\n return this.$createElement('template', { slot }, content)\n },\n },\n\n render (): VNode {\n return this.$createElement(VData, {\n props: {\n ...this.$props,\n customFilter: this.customFilterWithColumns,\n customSort: this.customSortWithHeaders,\n itemsPerPage: this.computedItemsPerPage,\n },\n on: {\n 'update:options': (v: DataOptions, old: DataOptions) => {\n this.internalGroupBy = v.groupBy || []\n !deepEqual(v, old) && this.$emit('update:options', v)\n },\n 'update:page': (v: number) => this.$emit('update:page', v),\n 'update:items-per-page': (v: number) => this.$emit('update:items-per-page', v),\n 'update:sort-by': (v: string | string[]) => this.$emit('update:sort-by', v),\n 'update:sort-desc': (v: boolean | boolean[]) => this.$emit('update:sort-desc', v),\n 'update:group-by': (v: string | string[]) => this.$emit('update:group-by', v),\n 'update:group-desc': (v: boolean | boolean[]) => this.$emit('update:group-desc', v),\n pagination: (v: DataPagination, old: DataPagination) => !deepEqual(v, old) && this.$emit('pagination', v),\n 'current-items': (v: any[]) => {\n this.internalCurrentItems = v\n this.$emit('current-items', v)\n },\n 'page-count': (v: number) => this.$emit('page-count', v),\n },\n scopedSlots: {\n default: this.genDefaultScopedSlot,\n },\n })\n },\n})\n","// Helpers\nimport { wrapInArray, sortItems, deepEqual, groupItems, searchItems, fillArray } from '../../util/helpers'\nimport Vue, { VNode } from 'vue'\n\n// Types\nimport {\n DataOptions,\n DataPagination,\n DataScopeProps,\n DataSortFunction,\n DataGroupFunction,\n DataSearchFunction,\n ItemGroup,\n} from 'vuetify/types'\nimport { PropValidator } from 'vue/types/options'\n\nexport default Vue.extend({\n name: 'v-data',\n\n inheritAttrs: false,\n\n props: {\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n options: {\n type: Object,\n default: () => ({}),\n } as PropValidator>,\n sortBy: {\n type: [String, Array],\n } as PropValidator,\n sortDesc: {\n type: [Boolean, Array],\n } as PropValidator,\n customSort: {\n type: Function,\n default: sortItems,\n } as PropValidator,\n mustSort: Boolean,\n multiSort: Boolean,\n page: {\n type: Number,\n default: 1,\n },\n itemsPerPage: {\n type: Number,\n default: 10,\n },\n groupBy: {\n type: [String, Array],\n default: () => [],\n } as PropValidator,\n groupDesc: {\n type: [Boolean, Array],\n default: () => [],\n } as PropValidator,\n customGroup: {\n type: Function,\n default: groupItems,\n } as PropValidator,\n locale: {\n type: String,\n default: 'en-US',\n },\n disableSort: Boolean,\n disablePagination: Boolean,\n disableFiltering: Boolean,\n search: String,\n customFilter: {\n type: Function,\n default: searchItems,\n } as PropValidator,\n serverItemsLength: {\n type: Number,\n default: -1,\n },\n },\n\n data () {\n let internalOptions: DataOptions = {\n page: this.page,\n itemsPerPage: this.itemsPerPage,\n sortBy: wrapInArray(this.sortBy),\n sortDesc: wrapInArray(this.sortDesc),\n groupBy: wrapInArray(this.groupBy),\n groupDesc: wrapInArray(this.groupDesc),\n mustSort: this.mustSort,\n multiSort: this.multiSort,\n }\n\n if (this.options) {\n internalOptions = Object.assign(internalOptions, this.options)\n }\n\n const { sortBy, sortDesc, groupBy, groupDesc } = internalOptions\n const sortDiff = sortBy.length - sortDesc.length\n const groupDiff = groupBy.length - groupDesc.length\n\n if (sortDiff > 0) {\n internalOptions.sortDesc.push(...fillArray(sortDiff, false))\n }\n\n if (groupDiff > 0) {\n internalOptions.groupDesc.push(...fillArray(groupDiff, false))\n }\n\n return {\n internalOptions,\n }\n },\n\n computed: {\n itemsLength (): number {\n return this.serverItemsLength >= 0 ? this.serverItemsLength : this.filteredItems.length\n },\n pageCount (): number {\n return this.internalOptions.itemsPerPage <= 0\n ? 1\n : Math.ceil(this.itemsLength / this.internalOptions.itemsPerPage)\n },\n pageStart (): number {\n if (this.internalOptions.itemsPerPage === -1 || !this.items.length) return 0\n\n return (this.internalOptions.page - 1) * this.internalOptions.itemsPerPage\n },\n pageStop (): number {\n if (this.internalOptions.itemsPerPage === -1) return this.itemsLength\n if (!this.items.length) return 0\n\n return Math.min(this.itemsLength, this.internalOptions.page * this.internalOptions.itemsPerPage)\n },\n isGrouped (): boolean {\n return !!this.internalOptions.groupBy.length\n },\n pagination (): DataPagination {\n return {\n page: this.internalOptions.page,\n itemsPerPage: this.internalOptions.itemsPerPage,\n pageStart: this.pageStart,\n pageStop: this.pageStop,\n pageCount: this.pageCount,\n itemsLength: this.itemsLength,\n }\n },\n filteredItems (): any[] {\n let items = this.items.slice()\n\n if (!this.disableFiltering && this.serverItemsLength <= 0) {\n items = this.customFilter(items, this.search)\n }\n\n return items\n },\n computedItems (): any[] {\n let items = this.filteredItems.slice()\n\n if ((!this.disableSort || this.internalOptions.groupBy.length) && this.serverItemsLength <= 0) {\n items = this.sortItems(items)\n }\n\n if (!this.disablePagination && this.serverItemsLength <= 0) {\n items = this.paginateItems(items)\n }\n\n return items\n },\n groupedItems (): ItemGroup[] | null {\n return this.isGrouped ? this.groupItems(this.computedItems) : null\n },\n scopedProps (): DataScopeProps {\n return {\n sort: this.sort,\n sortArray: this.sortArray,\n group: this.group,\n items: this.computedItems,\n options: this.internalOptions,\n updateOptions: this.updateOptions,\n pagination: this.pagination,\n groupedItems: this.groupedItems,\n originalItemsLength: this.items.length,\n }\n },\n computedOptions (): DataOptions {\n return { ...this.options } as DataOptions\n },\n },\n\n watch: {\n computedOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n\n this.updateOptions(options)\n },\n deep: true,\n immediate: true,\n },\n internalOptions: {\n handler (options: DataOptions, old: DataOptions) {\n if (deepEqual(options, old)) return\n this.$emit('update:options', options)\n },\n deep: true,\n immediate: true,\n },\n page (page: number) {\n this.updateOptions({ page })\n },\n 'internalOptions.page' (page: number) {\n this.$emit('update:page', page)\n },\n itemsPerPage (itemsPerPage: number) {\n this.updateOptions({ itemsPerPage })\n },\n 'internalOptions.itemsPerPage' (itemsPerPage: number) {\n this.$emit('update:items-per-page', itemsPerPage)\n },\n sortBy (sortBy: string | string[]) {\n this.updateOptions({ sortBy: wrapInArray(sortBy) })\n },\n 'internalOptions.sortBy' (sortBy: string[], old: string[]) {\n !deepEqual(sortBy, old) && this.$emit('update:sort-by', Array.isArray(this.sortBy) ? sortBy : sortBy[0])\n },\n sortDesc (sortDesc: boolean | boolean[]) {\n this.updateOptions({ sortDesc: wrapInArray(sortDesc) })\n },\n 'internalOptions.sortDesc' (sortDesc: boolean[], old: boolean[]) {\n !deepEqual(sortDesc, old) && this.$emit('update:sort-desc', Array.isArray(this.sortDesc) ? sortDesc : sortDesc[0])\n },\n groupBy (groupBy: string | string[]) {\n this.updateOptions({ groupBy: wrapInArray(groupBy) })\n },\n 'internalOptions.groupBy' (groupBy: string[], old: string[]) {\n !deepEqual(groupBy, old) && this.$emit('update:group-by', Array.isArray(this.groupBy) ? groupBy : groupBy[0])\n },\n groupDesc (groupDesc: boolean | boolean[]) {\n this.updateOptions({ groupDesc: wrapInArray(groupDesc) })\n },\n 'internalOptions.groupDesc' (groupDesc: boolean[], old: boolean[]) {\n !deepEqual(groupDesc, old) && this.$emit('update:group-desc', Array.isArray(this.groupDesc) ? groupDesc : groupDesc[0])\n },\n multiSort (multiSort: boolean) {\n this.updateOptions({ multiSort })\n },\n 'internalOptions.multiSort' (multiSort: boolean) {\n this.$emit('update:multi-sort', multiSort)\n },\n mustSort (mustSort: boolean) {\n this.updateOptions({ mustSort })\n },\n 'internalOptions.mustSort' (mustSort: boolean) {\n this.$emit('update:must-sort', mustSort)\n },\n pageCount: {\n handler (pageCount: number) {\n this.$emit('page-count', pageCount)\n },\n immediate: true,\n },\n computedItems: {\n handler (computedItems: any[]) {\n this.$emit('current-items', computedItems)\n },\n immediate: true,\n },\n pagination: {\n handler (pagination: DataPagination, old: DataPagination) {\n if (deepEqual(pagination, old)) return\n this.$emit('pagination', this.pagination)\n },\n immediate: true,\n },\n },\n\n methods: {\n toggle (key: string, oldBy: string[], oldDesc: boolean[], page: number, mustSort: boolean, multiSort: boolean) {\n let by = oldBy.slice()\n let desc = oldDesc.slice()\n const byIndex = by.findIndex((k: string) => k === key)\n\n if (byIndex < 0) {\n if (!multiSort) {\n by = []\n desc = []\n }\n\n by.push(key)\n desc.push(false)\n } else if (byIndex >= 0 && !desc[byIndex]) {\n desc[byIndex] = true\n } else if (!mustSort) {\n by.splice(byIndex, 1)\n desc.splice(byIndex, 1)\n } else {\n desc[byIndex] = false\n }\n\n // Reset page to 1 if sortBy or sortDesc have changed\n if (!deepEqual(by, oldBy) || !deepEqual(desc, oldDesc)) {\n page = 1\n }\n\n return { by, desc, page }\n },\n group (key: string): void {\n const { by: groupBy, desc: groupDesc, page } = this.toggle(\n key,\n this.internalOptions.groupBy,\n this.internalOptions.groupDesc,\n this.internalOptions.page,\n true,\n false\n )\n this.updateOptions({ groupBy, groupDesc, page })\n },\n sort (key: string | string[]): void {\n if (Array.isArray(key)) return this.sortArray(key)\n\n const { by: sortBy, desc: sortDesc, page } = this.toggle(\n key,\n this.internalOptions.sortBy,\n this.internalOptions.sortDesc,\n this.internalOptions.page,\n this.internalOptions.mustSort,\n this.internalOptions.multiSort\n )\n this.updateOptions({ sortBy, sortDesc, page })\n },\n sortArray (sortBy: string[]) {\n const sortDesc = sortBy.map(s => {\n const i = this.internalOptions.sortBy.findIndex((k: string) => k === s)\n return i > -1 ? this.internalOptions.sortDesc[i] : false\n })\n\n this.updateOptions({ sortBy, sortDesc })\n },\n updateOptions (options: any) {\n this.internalOptions = {\n ...this.internalOptions,\n ...options,\n page: this.serverItemsLength < 0\n ? Math.max(1, Math.min(options.page || this.internalOptions.page, this.pageCount))\n : options.page || this.internalOptions.page,\n }\n },\n sortItems (items: any[]): any[] {\n let sortBy: string[] = []\n let sortDesc: boolean[] = []\n\n if (!this.disableSort) {\n sortBy = this.internalOptions.sortBy\n sortDesc = this.internalOptions.sortDesc\n }\n\n if (this.internalOptions.groupBy.length) {\n sortBy = [...this.internalOptions.groupBy, ...sortBy]\n sortDesc = [...this.internalOptions.groupDesc, ...sortDesc]\n }\n\n return this.customSort(items, sortBy, sortDesc, this.locale)\n },\n groupItems (items: any[]): ItemGroup[] {\n return this.customGroup(items, this.internalOptions.groupBy, this.internalOptions.groupDesc)\n },\n paginateItems (items: any[]): any[] {\n // Make sure we don't try to display non-existant page if items suddenly change\n // TODO: Could possibly move this to pageStart/pageStop?\n if (this.serverItemsLength === -1 && items.length <= this.pageStart) {\n this.internalOptions.page = Math.max(1, Math.ceil(items.length / this.internalOptions.itemsPerPage)) || 1 // Prevent NaN\n }\n\n return items.slice(this.pageStart, this.pageStop)\n },\n },\n\n render (): VNode {\n return this.$scopedSlots.default && this.$scopedSlots.default(this.scopedProps) as any\n },\n})\n","// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Dependent from '../../mixins/dependent'\nimport Detachable from '../../mixins/detachable'\nimport Overlayable from '../../mixins/overlayable'\nimport Returnable from '../../mixins/returnable'\nimport Stackable from '../../mixins/stackable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Detachable,\n Overlayable,\n Returnable,\n Stackable,\n Activatable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-dialog',\n\n directives: { ClickOutside },\n\n props: {\n dark: Boolean,\n disabled: Boolean,\n fullscreen: Boolean,\n light: Boolean,\n maxWidth: [String, Number],\n noClickAnimation: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n persistent: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition',\n },\n width: [String, Number],\n },\n\n data () {\n return {\n activatedBy: null as EventTarget | null,\n animate: false,\n animateTimeout: -1,\n stackMinZIndex: 200,\n previousActiveElement: null as HTMLElement | null,\n }\n },\n\n computed: {\n classes (): object {\n return {\n [(`v-dialog ${this.contentClass}`).trim()]: true,\n 'v-dialog--active': this.isActive,\n 'v-dialog--persistent': this.persistent,\n 'v-dialog--fullscreen': this.fullscreen,\n 'v-dialog--scrollable': this.scrollable,\n 'v-dialog--animated': this.animate,\n }\n },\n contentClasses (): object {\n return {\n 'v-dialog__content': true,\n 'v-dialog__content--active': this.isActive,\n }\n },\n hasActivator (): boolean {\n return Boolean(\n !!this.$slots.activator ||\n !!this.$scopedSlots.activator\n )\n },\n },\n\n watch: {\n isActive (val) {\n if (val) {\n this.show()\n this.hideScroll()\n } else {\n this.removeOverlay()\n this.unbind()\n this.previousActiveElement?.focus()\n }\n },\n fullscreen (val) {\n if (!this.isActive) return\n\n if (val) {\n this.hideScroll()\n this.removeOverlay(false)\n } else {\n this.showScroll()\n this.genOverlay()\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.isBooted = this.isActive\n this.isActive && this.show()\n })\n },\n\n beforeDestroy () {\n if (typeof window !== 'undefined') this.unbind()\n },\n\n methods: {\n animateClick () {\n this.animate = false\n // Needed for when clicking very fast\n // outside of the dialog\n this.$nextTick(() => {\n this.animate = true\n window.clearTimeout(this.animateTimeout)\n this.animateTimeout = window.setTimeout(() => (this.animate = false), 150)\n })\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n // Ignore the click if the dialog is closed or destroyed,\n // if it was on an element inside the content,\n // if it was dragged onto the overlay (#6969),\n // or if this isn't the topmost dialog (#9907)\n return !(\n this._isDestroyed ||\n !this.isActive ||\n this.$refs.content.contains(target) ||\n (this.overlay && target && !this.overlay.$el.contains(target))\n ) && this.activeZIndex >= this.getMaxZIndex()\n },\n hideScroll () {\n if (this.fullscreen) {\n document.documentElement.classList.add('overflow-y-hidden')\n } else {\n Overlayable.options.methods.hideScroll.call(this)\n }\n },\n show () {\n !this.fullscreen && !this.hideOverlay && this.genOverlay()\n // Double nextTick to wait for lazy content to be generated\n this.$nextTick(() => {\n this.$nextTick(() => {\n if (!this.$refs.content.contains(document.activeElement)) {\n this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.content.focus()\n }\n this.bind()\n })\n })\n },\n bind () {\n window.addEventListener('focusin', this.onFocusin)\n },\n unbind () {\n window.removeEventListener('focusin', this.onFocusin)\n },\n onClickOutside (e: Event) {\n this.$emit('click:outside', e)\n\n if (this.persistent) {\n this.noClickAnimation || this.animateClick()\n } else {\n this.isActive = false\n }\n },\n onKeydown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc && !this.getOpenDependents().length) {\n if (!this.persistent) {\n this.isActive = false\n const activator = this.getActivator()\n this.$nextTick(() => activator && (activator as HTMLElement).focus())\n } else if (!this.noClickAnimation) {\n this.animateClick()\n }\n }\n this.$emit('keydown', e)\n },\n // On focus change, wrap focus to stay inside the dialog\n // https://github.com/vuetifyjs/vuetify/issues/6892\n onFocusin (e: Event) {\n if (!e || !this.retainFocus) return\n\n const target = e.target as HTMLElement\n\n if (\n !!target &&\n // It isn't the document or the dialog body\n ![document, this.$refs.content].includes(target) &&\n // It isn't inside the dialog body\n !this.$refs.content.contains(target) &&\n // We're the topmost dialog\n this.activeZIndex >= this.getMaxZIndex() &&\n // It isn't inside a dependent element (like a menu)\n !this.getOpenDependentElements().some(el => el.contains(target))\n // So we must have focused something outside the dialog and its children\n ) {\n // Find and focus the first available element inside the dialog\n const focusable = this.$refs.content.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n const el = [...focusable].find(el => !el.hasAttribute('disabled')) as HTMLElement | undefined\n el && el.focus()\n }\n },\n genContent () {\n return this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [\n this.$createElement('div', {\n class: this.contentClasses,\n attrs: {\n role: 'dialog',\n tabindex: this.isActive ? 0 : undefined,\n 'aria-modal': this.hideOverlay ? undefined : 'true',\n ...this.getScopeIdAttrs(),\n },\n on: { keydown: this.onKeydown },\n style: { zIndex: this.activeZIndex },\n ref: 'content',\n }, [this.genTransition()]),\n ]),\n ])\n },\n genTransition () {\n const content = this.genInnerContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n appear: true,\n },\n }, [content])\n },\n genInnerContent () {\n const data: VNodeData = {\n class: this.classes,\n ref: 'dialog',\n directives: [\n {\n name: 'click-outside',\n value: {\n handler: this.onClickOutside,\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n },\n { name: 'show', value: this.isActive },\n ],\n style: {\n transformOrigin: this.origin,\n },\n }\n\n if (!this.fullscreen) {\n data.style = {\n ...data.style as object,\n maxWidth: convertToUnit(this.maxWidth),\n width: convertToUnit(this.width),\n }\n }\n\n return this.$createElement('div', data, this.getContentSlot())\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-dialog__container',\n class: {\n 'v-dialog__container--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n }, [\n this.genActivator(),\n this.genContent(),\n ])\n },\n})\n","// Styles\nimport './VDivider.sass'\n\n// Types\nimport { VNode } from 'vue'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\nexport default Themeable.extend({\n name: 'v-divider',\n\n props: {\n inset: Boolean,\n vertical: Boolean,\n },\n\n render (h): VNode {\n // WAI-ARIA attributes\n let orientation\n if (!this.$attrs.role || this.$attrs.role === 'separator') {\n orientation = this.vertical ? 'vertical' : 'horizontal'\n }\n return h('hr', {\n class: {\n 'v-divider': true,\n 'v-divider--inset': this.inset,\n 'v-divider--vertical': this.vertical,\n ...this.themeClasses,\n },\n attrs: {\n role: 'separator',\n 'aria-orientation': orientation,\n ...this.$attrs,\n },\n on: this.$listeners,\n })\n },\n})\n","// Components\nimport VExpansionPanels from './VExpansionPanels'\nimport VExpansionPanelHeader from './VExpansionPanelHeader'\nimport VExpansionPanelContent from './VExpansionPanelContent'\n\n// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\ntype VExpansionPanelHeaderInstance = InstanceType\ntype VExpansionPanelContentInstance = InstanceType\n\nexport default mixins(\n GroupableFactory<'expansionPanels', typeof VExpansionPanels>('expansionPanels', 'v-expansion-panel', 'v-expansion-panels'),\n RegistrableProvide('expansionPanel', true)\n /* @vue/component */\n).extend({\n name: 'v-expansion-panel',\n\n props: {\n disabled: Boolean,\n readonly: Boolean,\n },\n\n data () {\n return {\n content: null as VExpansionPanelContentInstance | null,\n header: null as VExpansionPanelHeaderInstance | null,\n nextIsActive: false,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-expansion-panel--active': this.isActive,\n 'v-expansion-panel--next-active': this.nextIsActive,\n 'v-expansion-panel--disabled': this.isDisabled,\n ...this.groupClasses,\n }\n },\n isDisabled (): boolean {\n return this.expansionPanels.disabled || this.disabled\n },\n isReadonly (): boolean {\n return this.expansionPanels.readonly || this.readonly\n },\n },\n\n methods: {\n registerContent (vm: VExpansionPanelContentInstance) {\n this.content = vm\n },\n unregisterContent () {\n this.content = null\n },\n registerHeader (vm: VExpansionPanelHeaderInstance) {\n this.header = vm\n vm.$on('click', this.onClick)\n },\n unregisterHeader () {\n this.header = null\n },\n onClick (e: MouseEvent) {\n if (e.detail) this.header!.$el.blur()\n\n this.$emit('click', e)\n\n this.isReadonly || this.isDisabled || this.toggle()\n },\n toggle () {\n this.$nextTick(() => this.$emit('change'))\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-expansion-panel',\n class: this.classes,\n attrs: {\n 'aria-expanded': String(this.isActive),\n },\n }, getSlot(this))\n },\n})\n","// Components\nimport VExpansionPanel from './VExpansionPanel'\nimport { VExpandTransition } from '../transitions'\n\n// Mixins\nimport Bootable from '../../mixins/bootable'\nimport Colorable from '../../mixins/colorable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode, VueConstructor } from 'vue'\n\nconst baseMixins = mixins(\n Bootable,\n Colorable,\n RegistrableInject<'expansionPanel', VueConstructor>('expansionPanel', 'v-expansion-panel-content', 'v-expansion-panel')\n)\n\ninterface options extends ExtractVue {\n expansionPanel: InstanceType\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-expansion-panel-content',\n\n data: () => ({\n isActive: false,\n }),\n\n computed: {\n parentIsActive (): boolean {\n return this.expansionPanel.isActive\n },\n },\n\n watch: {\n parentIsActive: {\n immediate: true,\n handler (val, oldVal) {\n if (val) this.isBooted = true\n\n if (oldVal == null) this.isActive = val\n else this.$nextTick(() => this.isActive = val)\n },\n },\n },\n\n created () {\n this.expansionPanel.registerContent(this)\n },\n\n beforeDestroy () {\n this.expansionPanel.unregisterContent()\n },\n\n render (h): VNode {\n return h(VExpandTransition, this.showLazyContent(() => [\n h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-expansion-panel-content',\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }), [\n h('div', { class: 'v-expansion-panel-content__wrap' }, getSlot(this)),\n ]),\n ]))\n },\n})\n","// Components\nimport { VFadeTransition } from '../transitions'\nimport VExpansionPanel from './VExpansionPanel'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode, VueConstructor } from 'vue'\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject<'expansionPanel', VueConstructor>('expansionPanel', 'v-expansion-panel-header', 'v-expansion-panel')\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n expansionPanel: InstanceType\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-expansion-panel-header',\n\n directives: { ripple },\n\n props: {\n disableIconRotate: Boolean,\n expandIcon: {\n type: String,\n default: '$expand',\n },\n hideActions: Boolean,\n ripple: {\n type: [Boolean, Object],\n default: false,\n },\n },\n\n data: () => ({\n hasMousedown: false,\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-expansion-panel-header--active': this.isActive,\n 'v-expansion-panel-header--mousedown': this.hasMousedown,\n }\n },\n isActive (): boolean {\n return this.expansionPanel.isActive\n },\n isDisabled (): boolean {\n return this.expansionPanel.isDisabled\n },\n isReadonly (): boolean {\n return this.expansionPanel.isReadonly\n },\n },\n\n created () {\n this.expansionPanel.registerHeader(this)\n },\n\n beforeDestroy () {\n this.expansionPanel.unregisterHeader()\n },\n\n methods: {\n onClick (e: MouseEvent) {\n this.$emit('click', e)\n },\n genIcon () {\n const icon = getSlot(this, 'actions') ||\n [this.$createElement(VIcon, this.expandIcon)]\n\n return this.$createElement(VFadeTransition, [\n this.$createElement('div', {\n staticClass: 'v-expansion-panel-header__icon',\n class: {\n 'v-expansion-panel-header__icon--disable-rotate': this.disableIconRotate,\n },\n directives: [{\n name: 'show',\n value: !this.isDisabled,\n }],\n }, icon),\n ])\n },\n },\n\n render (h): VNode {\n return h('button', this.setBackgroundColor(this.color, {\n staticClass: 'v-expansion-panel-header',\n class: this.classes,\n attrs: {\n tabindex: this.isDisabled ? -1 : null,\n type: 'button',\n 'aria-expanded': this.isActive,\n },\n directives: [{\n name: 'ripple',\n value: this.ripple,\n }],\n on: {\n ...this.$listeners,\n click: this.onClick,\n mousedown: () => (this.hasMousedown = true),\n mouseup: () => (this.hasMousedown = false),\n },\n }), [\n getSlot(this, 'default', { open: this.isActive }, true),\n this.hideActions || this.genIcon(),\n ])\n },\n})\n","// Styles\nimport './VExpansionPanel.sass'\n\n// Components\nimport { BaseItemGroup, GroupableInstance } from '../VItemGroup/VItemGroup'\nimport VExpansionPanel from './VExpansionPanel'\n\n// Utilities\nimport { breaking } from '../../util/console'\n\n// Types\ninterface VExpansionPanelInstance extends InstanceType {}\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'v-expansion-panels',\n\n provide (): object {\n return {\n expansionPanels: this,\n }\n },\n\n props: {\n accordion: Boolean,\n disabled: Boolean,\n flat: Boolean,\n hover: Boolean,\n focusable: Boolean,\n inset: Boolean,\n popout: Boolean,\n readonly: Boolean,\n tile: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-expansion-panels': true,\n 'v-expansion-panels--accordion': this.accordion,\n 'v-expansion-panels--flat': this.flat,\n 'v-expansion-panels--hover': this.hover,\n 'v-expansion-panels--focusable': this.focusable,\n 'v-expansion-panels--inset': this.inset,\n 'v-expansion-panels--popout': this.popout,\n 'v-expansion-panels--tile': this.tile,\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('expand')) {\n breaking('expand', 'multiple', this)\n }\n\n /* istanbul ignore next */\n if (\n Array.isArray(this.value) &&\n this.value.length > 0 &&\n typeof this.value[0] === 'boolean'\n ) {\n breaking(':value=\"[true, false, true]\"', ':value=\"[0, 2]\"', this)\n }\n },\n\n methods: {\n updateItem (item: GroupableInstance & VExpansionPanelInstance, index: number) {\n const value = this.getValue(item, index)\n const nextValue = this.getValue(item, index + 1)\n\n item.isActive = this.toggleMethod(value)\n item.nextIsActive = this.toggleMethod(nextValue)\n },\n },\n})\n","import VTextField from './VTextField'\n\nexport { VTextField }\nexport default VTextField\n","// Styles\nimport './VFileInput.sass'\n\n// Extensions\nimport VTextField from '../VTextField'\n\n// Components\nimport { VChip } from '../VChip'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n// Utilities\nimport { deepEqual, humanReadableFileSize, wrapInArray } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\nimport { mergeStyles } from '../../util/mergeData'\n\nexport default VTextField.extend({\n name: 'v-file-input',\n\n model: {\n prop: 'value',\n event: 'change',\n },\n\n props: {\n chips: Boolean,\n clearable: {\n type: Boolean,\n default: true,\n },\n counterSizeString: {\n type: String,\n default: '$vuetify.fileInput.counterSize',\n },\n counterString: {\n type: String,\n default: '$vuetify.fileInput.counter',\n },\n hideInput: Boolean,\n multiple: Boolean,\n placeholder: String,\n prependIcon: {\n type: String,\n default: '$file',\n },\n readonly: {\n type: Boolean,\n default: false,\n },\n showSize: {\n type: [Boolean, Number],\n default: false,\n validator: (v: boolean | number) => {\n return (\n typeof v === 'boolean' ||\n [1000, 1024].includes(v)\n )\n },\n } as PropValidator,\n smallChips: Boolean,\n truncateLength: {\n type: [Number, String],\n default: 22,\n },\n type: {\n type: String,\n default: 'file',\n },\n value: {\n default: undefined,\n validator: val => {\n return wrapInArray(val).every(v => v != null && typeof v === 'object')\n },\n } as PropValidator,\n },\n\n computed: {\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-file-input': true,\n }\n },\n computedCounterValue (): string {\n const fileCount = (this.multiple && this.lazyValue)\n ? this.lazyValue.length\n : (this.lazyValue instanceof File) ? 1 : 0\n\n if (!this.showSize) return this.$vuetify.lang.t(this.counterString, fileCount)\n\n const bytes = this.internalArrayValue.reduce((bytes: number, { size = 0 }: File) => {\n return bytes + size\n }, 0)\n\n return this.$vuetify.lang.t(\n this.counterSizeString,\n fileCount,\n humanReadableFileSize(bytes, this.base === 1024)\n )\n },\n internalArrayValue (): File[] {\n return wrapInArray(this.internalValue)\n },\n internalValue: {\n get (): File[] {\n return this.lazyValue\n },\n set (val: File | File[]) {\n this.lazyValue = val\n this.$emit('change', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.internalArrayValue.length > 0\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n text (): string[] {\n if (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) return [this.placeholder]\n\n return this.internalArrayValue.map((file: File) => {\n const {\n name = '',\n size = 0,\n } = file\n\n const truncatedText = this.truncateText(name)\n\n return !this.showSize\n ? truncatedText\n : `${truncatedText} (${humanReadableFileSize(size, this.base === 1024)})`\n })\n },\n base (): 1000 | 1024 | undefined {\n return typeof this.showSize !== 'boolean' ? this.showSize : undefined\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n },\n\n watch: {\n readonly: {\n handler (v) {\n if (v === true) consoleError('readonly is not supported on ', this)\n },\n immediate: true,\n },\n value (v) {\n const value = this.multiple ? v : v ? [v] : []\n if (!deepEqual(value, this.$refs.input.files)) {\n // When the input value is changed programatically, clear the\n // internal input's value so that the `onInput` handler\n // can be triggered again if the user re-selects the exact\n // same file(s). Ideally, `input.files` should be\n // manipulated directly but that property is readonly.\n this.$refs.input.value = ''\n }\n },\n },\n\n methods: {\n clearableCallback () {\n this.internalValue = this.multiple ? [] : null\n this.$refs.input.value = ''\n },\n genChips () {\n if (!this.isDirty) return []\n\n return this.text.map((text, index) => this.$createElement(VChip, {\n props: { small: this.smallChips },\n on: {\n 'click:close': () => {\n const internalValue = this.internalValue\n internalValue.splice(index, 1)\n this.internalValue = internalValue // Trigger the watcher\n },\n },\n }, [text]))\n },\n genControl () {\n const render = VTextField.options.methods.genControl.call(this)\n\n if (this.hideInput) {\n render.data!.style = mergeStyles(\n render.data!.style,\n { display: 'none' }\n )\n }\n\n return render\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.data!.attrs!.multiple = this.multiple\n\n // We should not be setting value\n // programmatically on the input\n // when it is using type=\"file\"\n delete input.data!.domProps!.value\n\n // This solves an issue in Safari where\n // nothing happens when adding a file\n // do to the input event not firing\n // https://github.com/vuetifyjs/vuetify/issues/7941\n delete input.data!.on!.input\n input.data!.on!.change = this.onInput\n\n return [this.genSelections(), input]\n },\n genPrependSlot () {\n if (!this.prependIcon) return null\n\n const icon = this.genIcon('prepend', () => {\n this.$refs.input.click()\n })\n\n return this.genSlot('prepend', 'outer', [icon])\n },\n genSelectionText (): string[] {\n const length = this.text.length\n\n if (length < 2) return this.text\n if (this.showSize && !this.counter) return [this.computedCounterValue]\n return [this.$vuetify.lang.t(this.counterString, length)]\n },\n genSelections () {\n const children = []\n\n if (this.isDirty && this.$scopedSlots.selection) {\n this.internalArrayValue.forEach((file: File, index: number) => {\n if (!this.$scopedSlots.selection) return\n\n children.push(\n this.$scopedSlots.selection({\n text: this.text[index],\n file,\n index,\n })\n )\n })\n } else {\n children.push(this.hasChips && this.isDirty ? this.genChips() : this.genSelectionText())\n }\n\n return this.$createElement('div', {\n staticClass: 'v-file-input__text',\n class: {\n 'v-file-input__text--placeholder': this.placeholder && !this.isDirty,\n 'v-file-input__text--chips': this.hasChips && !this.$scopedSlots.selection,\n },\n }, children)\n },\n genTextFieldSlot () {\n const node = VTextField.options.methods.genTextFieldSlot.call(this)\n\n node.data!.on = {\n ...(node.data!.on || {}),\n click: () => this.$refs.input.click(),\n }\n\n return node\n },\n onInput (e: Event) {\n const files = [...(e.target as HTMLInputElement).files || []]\n\n this.internalValue = this.multiple ? files : files[0]\n\n // Set initialValue here otherwise isFocused\n // watcher in VTextField will emit a change\n // event whenever the component is blurred\n this.initialValue = this.internalValue\n },\n onKeyDown (e: KeyboardEvent) {\n this.$emit('keydown', e)\n },\n truncateText (str: string) {\n if (str.length < Number(this.truncateLength)) return str\n const charsKeepOneSide = Math.floor((Number(this.truncateLength) - 1) / 2)\n return `${str.slice(0, charsKeepOneSide)}…${str.slice(str.length - charsKeepOneSide)}`\n },\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","import './_grid.sass'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nexport default createSimpleFunctional('spacer', 'div', 'v-spacer')\n","import './VIcon.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Sizeable from '../../mixins/sizeable'\nimport Themeable from '../../mixins/themeable'\n\n// Util\nimport { convertToUnit, keys, remapInternalIcon } from '../../util/helpers'\n\n// Types\nimport Vue, { CreateElement, VNode, VNodeChildren, VNodeData } from 'vue'\nimport mixins from '../../util/mixins'\nimport { VuetifyIcon, VuetifyIconComponent } from 'vuetify/types/services/icons'\n\nenum SIZE_MAP {\n xSmall = '12px',\n small = '16px',\n default = '24px',\n medium = '28px',\n large = '36px',\n xLarge = '40px'\n}\n\nfunction isFontAwesome5 (iconType: string): boolean {\n return ['fas', 'far', 'fal', 'fab', 'fad', 'fak'].some(val => iconType.includes(val))\n}\n\nfunction isSvgPath (icon: string): boolean {\n return (/^[mzlhvcsqta]\\s*[-+.0-9][^mlhvzcsqta]+/i.test(icon) && /[\\dz]$/i.test(icon) && icon.length > 4)\n}\n\nconst VIcon = mixins(\n BindsAttrs,\n Colorable,\n Sizeable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-icon',\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n left: Boolean,\n right: Boolean,\n size: [Number, String],\n tag: {\n type: String,\n required: false,\n default: 'i',\n },\n },\n\n computed: {\n medium () {\n return false\n },\n hasClickListener (): boolean {\n return Boolean(\n this.listeners$.click || this.listeners$['!click']\n )\n },\n },\n\n methods: {\n getIcon (): VuetifyIcon {\n let iconName = ''\n if (this.$slots.default) iconName = this.$slots.default[0].text!.trim()\n\n return remapInternalIcon(this, iconName)\n },\n getSize (): string | undefined {\n const sizes = {\n xSmall: this.xSmall,\n small: this.small,\n medium: this.medium,\n large: this.large,\n xLarge: this.xLarge,\n }\n\n const explicitSize = keys(sizes).find(key => sizes[key])\n\n return (\n (explicitSize && SIZE_MAP[explicitSize]) || convertToUnit(this.size)\n )\n },\n // Component data for both font icon and SVG wrapper span\n getDefaultData (): VNodeData {\n return {\n staticClass: 'v-icon notranslate',\n class: {\n 'v-icon--disabled': this.disabled,\n 'v-icon--left': this.left,\n 'v-icon--link': this.hasClickListener,\n 'v-icon--right': this.right,\n 'v-icon--dense': this.dense,\n },\n attrs: {\n 'aria-hidden': !this.hasClickListener,\n disabled: this.hasClickListener && this.disabled,\n type: this.hasClickListener ? 'button' : undefined,\n ...this.attrs$,\n },\n on: this.listeners$,\n }\n },\n getSvgWrapperData () {\n const fontSize = this.getSize()\n const wrapperData = {\n ...this.getDefaultData(),\n style: fontSize ? {\n fontSize,\n height: fontSize,\n width: fontSize,\n } : undefined,\n }\n this.applyColors(wrapperData)\n\n return wrapperData\n },\n applyColors (data: VNodeData): void {\n data.class = { ...data.class, ...this.themeClasses }\n this.setTextColor(this.color, data)\n },\n renderFontIcon (icon: string, h: CreateElement): VNode {\n const newChildren: VNodeChildren = []\n const data = this.getDefaultData()\n\n let iconType = 'material-icons'\n // Material Icon delimiter is _\n // https://material.io/icons/\n const delimiterIndex = icon.indexOf('-')\n const isMaterialIcon = delimiterIndex <= -1\n\n if (isMaterialIcon) {\n // Material icon uses ligatures.\n newChildren.push(icon)\n } else {\n iconType = icon.slice(0, delimiterIndex)\n if (isFontAwesome5(iconType)) iconType = ''\n }\n\n data.class[iconType] = true\n data.class[icon] = !isMaterialIcon\n\n const fontSize = this.getSize()\n if (fontSize) data.style = { fontSize }\n\n this.applyColors(data)\n\n return h(this.hasClickListener ? 'button' : this.tag, data, newChildren)\n },\n renderSvgIcon (icon: string, h: CreateElement): VNode {\n const svgData: VNodeData = {\n class: 'v-icon__svg',\n attrs: {\n xmlns: 'http://www.w3.org/2000/svg',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-hidden': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n svgData.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h('svg', svgData, [\n h('path', {\n attrs: {\n d: icon,\n },\n }),\n ]),\n ])\n },\n renderSvgIconComponent (\n icon: VuetifyIconComponent,\n h: CreateElement\n ): VNode {\n const data: VNodeData = {\n class: {\n 'v-icon__component': true,\n },\n }\n\n const size = this.getSize()\n if (size) {\n data.style = {\n fontSize: size,\n height: size,\n width: size,\n }\n }\n\n this.applyColors(data)\n\n const component = icon.component\n data.props = icon.props\n data.nativeOn = data.on\n\n return h(this.hasClickListener ? 'button' : 'span', this.getSvgWrapperData(), [\n h(component, data),\n ])\n },\n },\n\n render (h: CreateElement): VNode {\n const icon = this.getIcon()\n\n if (typeof icon === 'string') {\n if (isSvgPath(icon)) {\n return this.renderSvgIcon(icon, h)\n }\n return this.renderFontIcon(icon, h)\n }\n\n return this.renderSvgIconComponent(icon, h)\n },\n})\n\nexport default Vue.extend({\n name: 'v-icon',\n\n $_wrapperFor: VIcon,\n\n functional: true,\n\n render (h, { data, children }): VNode {\n let iconName = ''\n\n // Support usage of v-text and v-html\n if (data.domProps) {\n iconName = data.domProps.textContent ||\n data.domProps.innerHTML ||\n iconName\n\n // Remove nodes so it doesn't\n // overwrite our changes\n delete data.domProps.textContent\n delete data.domProps.innerHTML\n }\n\n return h(VIcon, data, iconName ? [iconName] : children)\n },\n})\n","import VIcon from './VIcon'\n\nexport { VIcon }\nexport default VIcon\n","import './VResponsive.sass'\n\n// Mixins\nimport Measurable, { NumberOrNumberString } from '../../mixins/measurable'\n\n// Types\nimport { VNode } from 'vue'\n\n// Utils\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Measurable).extend({\n name: 'v-responsive',\n\n props: {\n aspectRatio: [String, Number] as NumberOrNumberString,\n contentClass: String,\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.aspectRatio)\n },\n aspectStyle (): object | undefined {\n return this.computedAspectRatio\n ? { paddingBottom: (1 / this.computedAspectRatio) * 100 + '%' }\n : undefined\n },\n __cachedSizer (): VNode | [] {\n if (!this.aspectStyle) return []\n\n return this.$createElement('div', {\n style: this.aspectStyle,\n staticClass: 'v-responsive__sizer',\n })\n },\n },\n\n methods: {\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-responsive__content',\n class: this.contentClass,\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-responsive',\n style: this.measurableStyles,\n on: this.$listeners,\n }, [\n this.__cachedSizer,\n this.genContent(),\n ])\n },\n})\n","import VResponsive from './VResponsive'\n\nexport { VResponsive }\nexport default VResponsive\n","// Styles\nimport './VImg.sass'\n\n// Directives\nimport intersect from '../../directives/intersect'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\n// Components\nimport VResponsive from '../VResponsive'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Utils\nimport mixins from '../../util/mixins'\nimport mergeData from '../../util/mergeData'\nimport { consoleWarn } from '../../util/console'\n\n// not intended for public use, this is passed in by vuetify-loader\nexport interface srcObject {\n src: string\n srcset?: string\n lazySrc: string\n aspect: number\n}\n\nconst hasIntersect = typeof window !== 'undefined' && 'IntersectionObserver' in window\n\n/* @vue/component */\nexport default mixins(\n VResponsive,\n Themeable,\n).extend({\n name: 'v-img',\n\n directives: { intersect },\n\n props: {\n alt: String,\n contain: Boolean,\n eager: Boolean,\n gradient: String,\n lazySrc: String,\n options: {\n type: Object,\n // For more information on types, navigate to:\n // https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n default: () => ({\n root: undefined,\n rootMargin: undefined,\n threshold: undefined,\n }),\n } as PropValidator,\n position: {\n type: String,\n default: 'center center',\n },\n sizes: String,\n src: {\n type: [String, Object],\n default: '',\n } as PropValidator,\n srcset: String,\n transition: {\n type: [Boolean, String],\n default: 'fade-transition',\n },\n },\n\n data () {\n return {\n currentSrc: '', // Set from srcset\n image: null as HTMLImageElement | null,\n isLoading: true,\n calculatedAspectRatio: undefined as number | undefined,\n naturalWidth: undefined as number | undefined,\n hasError: false,\n }\n },\n\n computed: {\n computedAspectRatio (): number {\n return Number(this.normalisedSrc.aspect || this.calculatedAspectRatio)\n },\n normalisedSrc (): srcObject {\n return this.src && typeof this.src === 'object'\n ? {\n src: this.src.src,\n srcset: this.srcset || this.src.srcset,\n lazySrc: this.lazySrc || this.src.lazySrc,\n aspect: Number(this.aspectRatio || this.src.aspect),\n } : {\n src: this.src,\n srcset: this.srcset,\n lazySrc: this.lazySrc,\n aspect: Number(this.aspectRatio || 0),\n }\n },\n __cachedImage (): VNode | [] {\n if (!(this.normalisedSrc.src || this.normalisedSrc.lazySrc || this.gradient)) return []\n\n const backgroundImage: string[] = []\n const src = this.isLoading ? this.normalisedSrc.lazySrc : this.currentSrc\n\n if (this.gradient) backgroundImage.push(`linear-gradient(${this.gradient})`)\n if (src) backgroundImage.push(`url(\"${src}\")`)\n\n const image = this.$createElement('div', {\n staticClass: 'v-image__image',\n class: {\n 'v-image__image--preload': this.isLoading,\n 'v-image__image--contain': this.contain,\n 'v-image__image--cover': !this.contain,\n },\n style: {\n backgroundImage: backgroundImage.join(', '),\n backgroundPosition: this.position,\n },\n key: +this.isLoading,\n })\n\n /* istanbul ignore if */\n if (!this.transition) return image\n\n return this.$createElement('transition', {\n attrs: {\n name: this.transition,\n mode: 'in-out',\n },\n }, [image])\n },\n },\n\n watch: {\n src () {\n // Force re-init when src changes\n if (!this.isLoading) this.init(undefined, undefined, true)\n else this.loadImage()\n },\n '$vuetify.breakpoint.width': 'getSrc',\n },\n\n mounted () {\n this.init()\n },\n\n methods: {\n init (\n entries?: IntersectionObserverEntry[],\n observer?: IntersectionObserver,\n isIntersecting?: boolean\n ) {\n // If the current browser supports the intersection\n // observer api, the image is not observable, and\n // the eager prop isn't being used, do not load\n if (\n hasIntersect &&\n !isIntersecting &&\n !this.eager\n ) return\n\n if (this.normalisedSrc.lazySrc) {\n const lazyImg = new Image()\n lazyImg.src = this.normalisedSrc.lazySrc\n this.pollForSize(lazyImg, null)\n }\n /* istanbul ignore else */\n if (this.normalisedSrc.src) this.loadImage()\n },\n onLoad () {\n this.getSrc()\n this.isLoading = false\n this.$emit('load', this.src)\n\n if (\n this.image &&\n (this.normalisedSrc.src.endsWith('.svg') || this.normalisedSrc.src.startsWith('data:image/svg+xml'))\n ) {\n if (this.image.naturalHeight && this.image.naturalWidth) {\n this.naturalWidth = this.image.naturalWidth\n this.calculatedAspectRatio = this.image.naturalWidth / this.image.naturalHeight\n } else {\n this.calculatedAspectRatio = 1\n }\n }\n },\n onError () {\n this.hasError = true\n this.$emit('error', this.src)\n },\n getSrc () {\n /* istanbul ignore else */\n if (this.image) this.currentSrc = this.image.currentSrc || this.image.src\n },\n loadImage () {\n const image = new Image()\n this.image = image\n\n image.onload = () => {\n /* istanbul ignore if */\n if (image.decode) {\n image.decode().catch((err: DOMException) => {\n consoleWarn(\n `Failed to decode image, trying to render anyway\\n\\n` +\n `src: ${this.normalisedSrc.src}` +\n (err.message ? `\\nOriginal error: ${err.message}` : ''),\n this\n )\n }).then(this.onLoad)\n } else {\n this.onLoad()\n }\n }\n image.onerror = this.onError\n\n this.hasError = false\n this.sizes && (image.sizes = this.sizes)\n this.normalisedSrc.srcset && (image.srcset = this.normalisedSrc.srcset)\n image.src = this.normalisedSrc.src\n this.$emit('loadstart', this.normalisedSrc.src)\n\n this.aspectRatio || this.pollForSize(image)\n this.getSrc()\n },\n pollForSize (img: HTMLImageElement, timeout: number | null = 100) {\n const poll = () => {\n const { naturalHeight, naturalWidth } = img\n\n if (naturalHeight || naturalWidth) {\n this.naturalWidth = naturalWidth\n this.calculatedAspectRatio = naturalWidth / naturalHeight\n } else if (!img.complete && this.isLoading && !this.hasError && timeout != null) {\n setTimeout(poll, timeout)\n }\n }\n\n poll()\n },\n genContent () {\n const content: VNode = VResponsive.options.methods.genContent.call(this)\n if (this.naturalWidth) {\n this._b(content.data!, 'div', {\n style: { width: `${this.naturalWidth}px` },\n })\n }\n\n return content\n },\n __genPlaceholder (): VNode | void {\n if (this.$slots.placeholder) {\n const placeholder = this.isLoading\n ? [this.$createElement('div', {\n staticClass: 'v-image__placeholder',\n }, this.$slots.placeholder)]\n : []\n\n if (!this.transition) return placeholder[0]\n\n return this.$createElement('transition', {\n props: {\n appear: true,\n name: this.transition,\n },\n }, placeholder)\n }\n },\n },\n\n render (h): VNode {\n const node = VResponsive.options.render.call(this, h)\n\n const data = mergeData(node.data!, {\n staticClass: 'v-image',\n attrs: {\n 'aria-label': this.alt,\n role: this.alt ? 'img' : undefined,\n },\n class: this.themeClasses,\n // Only load intersect directive if it\n // will work in the current browser.\n directives: hasIntersect\n ? [{\n name: 'intersect',\n modifiers: { once: true },\n value: {\n handler: this.init,\n options: this.options,\n },\n }]\n : undefined,\n })\n\n node.children = [\n this.__cachedSizer,\n this.__cachedImage,\n this.__genPlaceholder(),\n this.genContent(),\n ] as VNode[]\n\n return h(node.tag, data, node.children)\n },\n})\n","// Styles\nimport './VMessages.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport mixins from '../../util/mixins'\n\n// Utilities\nimport { getSlot } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-messages',\n\n props: {\n value: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n },\n\n methods: {\n genChildren () {\n return this.$createElement('transition-group', {\n staticClass: 'v-messages__wrapper',\n attrs: {\n name: 'message-transition',\n tag: 'div',\n },\n }, this.value.map(this.genMessage))\n },\n genMessage (message: string, key: number) {\n return this.$createElement('div', {\n staticClass: 'v-messages__message',\n key,\n }, getSlot(this, 'default', { message, key }) || [message])\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.color, {\n staticClass: 'v-messages',\n class: this.themeClasses,\n }), [this.genChildren()])\n },\n})\n","import VMessages from './VMessages'\n\nexport { VMessages }\nexport default VMessages\n","// Styles\nimport './VInput.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VLabel from '../VLabel'\nimport VMessages from '../VMessages'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Validatable from '../../mixins/validatable'\n\n// Utilities\nimport {\n convertToUnit,\n getSlot,\n kebabCase,\n} from '../../util/helpers'\nimport mergeData from '../../util/mergeData'\n\n// Types\nimport { VNode, VNodeData, PropType } from 'vue'\nimport mixins from '../../util/mixins'\nimport { InputValidationRule } from 'vuetify/types'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Validatable,\n)\n\ninterface options extends InstanceType {\n /* eslint-disable-next-line camelcase */\n $_modelEvent: string\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-input',\n\n inheritAttrs: false,\n\n props: {\n appendIcon: String,\n backgroundColor: {\n type: String,\n default: '',\n },\n dense: Boolean,\n height: [Number, String],\n hideDetails: [Boolean, String] as PropType,\n hideSpinButtons: Boolean,\n hint: String,\n id: String,\n label: String,\n loading: Boolean,\n persistentHint: Boolean,\n prependIcon: String,\n value: null as any as PropType,\n },\n\n data () {\n return {\n lazyValue: this.value,\n hasMouseDown: false,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-input--has-state': this.hasState,\n 'v-input--hide-details': !this.showDetails,\n 'v-input--is-label-active': this.isLabelActive,\n 'v-input--is-dirty': this.isDirty,\n 'v-input--is-disabled': this.isDisabled,\n 'v-input--is-focused': this.isFocused,\n // .loading === '' so we can't just cast to boolean\n 'v-input--is-loading': this.loading !== false && this.loading != null,\n 'v-input--is-readonly': this.isReadonly,\n 'v-input--dense': this.dense,\n 'v-input--hide-spin-buttons': this.hideSpinButtons,\n ...this.themeClasses,\n }\n },\n computedId (): string {\n return this.id || `input-${this._uid}`\n },\n hasDetails (): boolean {\n return this.messagesToDisplay.length > 0\n },\n hasHint (): boolean {\n return !this.hasMessages &&\n !!this.hint &&\n (this.persistentHint || this.isFocused)\n },\n hasLabel (): boolean {\n return !!(this.$slots.label || this.label)\n },\n // Proxy for `lazyValue`\n // This allows an input\n // to function without\n // a provided model\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit(this.$_modelEvent, val)\n },\n },\n isDirty (): boolean {\n return !!this.lazyValue\n },\n isLabelActive (): boolean {\n return this.isDirty\n },\n messagesToDisplay (): string[] {\n if (this.hasHint) return [this.hint]\n\n if (!this.hasMessages) return []\n\n return this.validations.map((validation: string | InputValidationRule) => {\n if (typeof validation === 'string') return validation\n\n const validationResult = validation(this.internalValue)\n\n return typeof validationResult === 'string' ? validationResult : ''\n }).filter(message => message !== '')\n },\n showDetails (): boolean {\n return this.hideDetails === false || (this.hideDetails === 'auto' && this.hasDetails)\n },\n },\n\n watch: {\n value (val) {\n this.lazyValue = val\n },\n },\n\n beforeCreate () {\n // v-radio-group needs to emit a different event\n // https://github.com/vuetifyjs/vuetify/issues/4752\n this.$_modelEvent = (this.$options.model && this.$options.model.event) || 'input'\n },\n\n methods: {\n genContent () {\n return [\n this.genPrependSlot(),\n this.genControl(),\n this.genAppendSlot(),\n ]\n },\n genControl () {\n return this.$createElement('div', {\n staticClass: 'v-input__control',\n attrs: { title: this.attrs$.title },\n }, [\n this.genInputSlot(),\n this.genMessages(),\n ])\n },\n genDefaultSlot () {\n return [\n this.genLabel(),\n this.$slots.default,\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData: VNodeData = {}\n ) {\n const icon = (this as any)[`${type}Icon`]\n const eventName = `click:${kebabCase(type)}`\n const hasListener = !!(this.listeners$[eventName] || cb)\n\n const data = mergeData({\n attrs: {\n 'aria-label': hasListener ? kebabCase(type).split('-')[0] + ' icon' : undefined,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n light: this.light,\n },\n on: !hasListener\n ? undefined\n : {\n click: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n\n this.$emit(eventName, e)\n cb && cb(e)\n },\n // Container has g event that will\n // trigger menu open if enclosed\n mouseup: (e: Event) => {\n e.preventDefault()\n e.stopPropagation()\n },\n },\n }, extraData)\n\n return this.$createElement('div', {\n staticClass: `v-input__icon`,\n class: type ? `v-input__icon--${kebabCase(type)}` : undefined,\n }, [\n this.$createElement(\n VIcon,\n data,\n icon\n ),\n ])\n },\n genInputSlot () {\n return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {\n staticClass: 'v-input__slot',\n style: { height: convertToUnit(this.height) },\n on: {\n click: this.onClick,\n mousedown: this.onMouseDown,\n mouseup: this.onMouseUp,\n },\n ref: 'input-slot',\n }), [this.genDefaultSlot()])\n },\n genLabel () {\n if (!this.hasLabel) return null\n\n return this.$createElement(VLabel, {\n props: {\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: this.hasState,\n for: this.computedId,\n light: this.light,\n },\n }, this.$slots.label || this.label)\n },\n genMessages () {\n if (!this.showDetails) return null\n\n return this.$createElement(VMessages, {\n props: {\n color: this.hasHint ? '' : this.validationState,\n dark: this.dark,\n light: this.light,\n value: this.messagesToDisplay,\n },\n attrs: {\n role: this.hasMessages ? 'alert' : null,\n },\n scopedSlots: {\n default: props => getSlot(this, 'message', props),\n },\n })\n },\n genSlot (\n type: string,\n location: string,\n slot: (VNode | VNode[])[]\n ) {\n if (!slot.length) return null\n\n const ref = `${type}-${location}`\n\n return this.$createElement('div', {\n staticClass: `v-input__${ref}`,\n ref,\n }, slot)\n },\n genPrependSlot () {\n const slot = []\n\n if (this.$slots.prepend) {\n slot.push(this.$slots.prepend)\n } else if (this.prependIcon) {\n slot.push(this.genIcon('prepend'))\n }\n\n return this.genSlot('prepend', 'outer', slot)\n },\n genAppendSlot () {\n const slot = []\n\n // Append icon for text field was really\n // an appended inner icon, v-text-field\n // will overwrite this method in order to obtain\n // backwards compat\n if (this.$slots.append) {\n slot.push(this.$slots.append)\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n onClick (e: Event) {\n this.$emit('click', e)\n },\n onMouseDown (e: Event) {\n this.hasMouseDown = true\n this.$emit('mousedown', e)\n },\n onMouseUp (e: Event) {\n this.hasMouseDown = false\n this.$emit('mouseup', e)\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.validationState, {\n staticClass: 'v-input',\n class: this.classes,\n }), this.genContent())\n },\n})\n","import VInput from './VInput'\n\nexport { VInput }\nexport default VInput\n","// Styles\nimport './VItemGroup.sass'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Groupable from '../../mixins/groupable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue/types'\n\nexport type GroupableInstance = InstanceType & {\n id?: string\n to?: any\n value?: any\n }\n\nexport const BaseItemGroup = mixins(\n Comparable,\n Proxyable,\n Themeable\n).extend({\n name: 'base-item-group',\n\n props: {\n activeClass: {\n type: String,\n default: 'v-item--active',\n },\n mandatory: Boolean,\n max: {\n type: [Number, String],\n default: null,\n },\n multiple: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n data () {\n return {\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n internalLazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n items: [] as GroupableInstance[],\n }\n },\n\n computed: {\n classes (): Record {\n return {\n 'v-item-group': true,\n ...this.themeClasses,\n }\n },\n selectedIndex (): number {\n return (this.selectedItem && this.items.indexOf(this.selectedItem)) || -1\n },\n selectedItem (): GroupableInstance | undefined {\n if (this.multiple) return undefined\n\n return this.selectedItems[0]\n },\n selectedItems (): GroupableInstance[] {\n return this.items.filter((item, index) => {\n return this.toggleMethod(this.getValue(item, index))\n })\n },\n selectedValues (): any[] {\n if (this.internalValue == null) return []\n\n return Array.isArray(this.internalValue)\n ? this.internalValue\n : [this.internalValue]\n },\n toggleMethod (): (v: any) => boolean {\n if (!this.multiple) {\n return (v: any) => this.valueComparator(this.internalValue, v)\n }\n\n const internalValue = this.internalValue\n if (Array.isArray(internalValue)) {\n return (v: any) => internalValue.some(intern => this.valueComparator(intern, v))\n }\n\n return () => false\n },\n },\n\n watch: {\n internalValue: 'updateItemsState',\n items: 'updateItemsState',\n },\n\n created () {\n if (this.multiple && !Array.isArray(this.internalValue)) {\n consoleWarn('Model must be bound to an array if the multiple property is true.', this)\n }\n },\n\n methods: {\n\n genData (): object {\n return {\n class: this.classes,\n }\n },\n getValue (item: GroupableInstance, i: number): unknown {\n return item.value === undefined\n ? i\n : item.value\n },\n onClick (item: GroupableInstance) {\n this.updateInternalValue(\n this.getValue(item, this.items.indexOf(item))\n )\n },\n register (item: GroupableInstance) {\n const index = this.items.push(item) - 1\n\n item.$on('change', () => this.onClick(item))\n\n // If no value provided and mandatory,\n // assign first registered item\n if (this.mandatory && !this.selectedValues.length) {\n this.updateMandatory()\n }\n\n this.updateItem(item, index)\n },\n unregister (item: GroupableInstance) {\n if (this._isDestroyed) return\n\n const index = this.items.indexOf(item)\n const value = this.getValue(item, index)\n\n this.items.splice(index, 1)\n\n const valueIndex = this.selectedValues.indexOf(value)\n\n // Items is not selected, do nothing\n if (valueIndex < 0) return\n\n // If not mandatory, use regular update process\n if (!this.mandatory) {\n return this.updateInternalValue(value)\n }\n\n // Remove the value\n if (this.multiple && Array.isArray(this.internalValue)) {\n this.internalValue = this.internalValue.filter(v => v !== value)\n } else {\n this.internalValue = undefined\n }\n\n // If mandatory and we have no selection\n // add the last item as value\n /* istanbul ignore else */\n if (!this.selectedItems.length) {\n this.updateMandatory(true)\n }\n },\n updateItem (item: GroupableInstance, index: number) {\n const value = this.getValue(item, index)\n\n item.isActive = this.toggleMethod(value)\n },\n // https://github.com/vuetifyjs/vuetify/issues/5352\n updateItemsState () {\n this.$nextTick(() => {\n if (this.mandatory &&\n !this.selectedItems.length\n ) {\n return this.updateMandatory()\n }\n\n // TODO: Make this smarter so it\n // doesn't have to iterate every\n // child in an update\n this.items.forEach(this.updateItem)\n })\n },\n updateInternalValue (value: any) {\n this.multiple\n ? this.updateMultiple(value)\n : this.updateSingle(value)\n },\n updateMandatory (last?: boolean) {\n if (!this.items.length) return\n\n const items = this.items.slice()\n\n if (last) items.reverse()\n\n const item = items.find(item => !item.disabled)\n\n // If no tabs are available\n // aborts mandatory value\n if (!item) return\n\n const index = this.items.indexOf(item)\n\n this.updateInternalValue(\n this.getValue(item, index)\n )\n },\n updateMultiple (value: any) {\n const defaultValue = Array.isArray(this.internalValue)\n ? this.internalValue\n : []\n const internalValue = defaultValue.slice()\n const index = internalValue.findIndex(val => val === value)\n\n if (\n this.mandatory &&\n // Item already exists\n index > -1 &&\n // value would be reduced below min\n internalValue.length - 1 < 1\n ) return\n\n if (\n // Max is set\n this.max != null &&\n // Item doesn't exist\n index < 0 &&\n // value would be increased above max\n internalValue.length + 1 > this.max\n ) return\n\n index > -1\n ? internalValue.splice(index, 1)\n : internalValue.push(value)\n\n this.internalValue = internalValue\n },\n updateSingle (value: any) {\n const isSame = value === this.internalValue\n\n if (this.mandatory && isSame) return\n\n this.internalValue = isSame ? undefined : value\n },\n },\n\n render (h): VNode {\n return h(this.tag, this.genData(), this.$slots.default)\n },\n})\n\nexport default BaseItemGroup.extend({\n name: 'v-item-group',\n\n provide (): object {\n return {\n itemGroup: this,\n }\n },\n})\n","// Styles\nimport './VLabel.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-label',\n\n functional: true,\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: 'primary',\n },\n disabled: Boolean,\n focused: Boolean,\n for: String,\n left: {\n type: [Number, String],\n default: 0,\n },\n right: {\n type: [Number, String],\n default: 'auto',\n },\n value: Boolean,\n },\n\n render (h, ctx): VNode {\n const { children, listeners, props } = ctx\n const data = {\n staticClass: 'v-label',\n class: {\n 'v-label--active': props.value,\n 'v-label--is-disabled': props.disabled,\n ...functionalThemeClasses(ctx),\n },\n attrs: {\n for: props.for,\n 'aria-hidden': !props.for,\n },\n on: listeners,\n style: {\n left: convertToUnit(props.left),\n right: convertToUnit(props.right),\n position: props.absolute ? 'absolute' : 'relative',\n },\n ref: 'label',\n }\n\n return h('label', Colorable.options.methods.setTextColor(props.focused && props.color, data), children)\n },\n})\n","import VLabel from './VLabel'\n\nexport { VLabel }\nexport default VLabel\n","// Styles\nimport './VList.sass'\nimport VListGroup from './VListGroup'\n\n// Components\nimport VSheet from '../VSheet/VSheet'\n\n// Types\nimport { VNode } from 'vue'\n\ntype VListGroupInstance = InstanceType\n\ninterface options extends InstanceType {\n isInMenu: boolean\n isInNav: boolean\n}\n\n/* @vue/component */\nexport default VSheet.extend().extend({\n name: 'v-list',\n\n provide (): object {\n return {\n isInList: true,\n list: this,\n }\n },\n\n inject: {\n isInMenu: {\n default: false,\n },\n isInNav: {\n default: false,\n },\n },\n\n props: {\n dense: Boolean,\n disabled: Boolean,\n expand: Boolean,\n flat: Boolean,\n nav: Boolean,\n rounded: Boolean,\n subheader: Boolean,\n threeLine: Boolean,\n twoLine: Boolean,\n },\n\n data: () => ({\n groups: [] as VListGroupInstance[],\n }),\n\n computed: {\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-list--dense': this.dense,\n 'v-list--disabled': this.disabled,\n 'v-list--flat': this.flat,\n 'v-list--nav': this.nav,\n 'v-list--rounded': this.rounded,\n 'v-list--subheader': this.subheader,\n 'v-list--two-line': this.twoLine,\n 'v-list--three-line': this.threeLine,\n }\n },\n },\n\n methods: {\n register (content: VListGroupInstance) {\n this.groups.push(content)\n },\n unregister (content: VListGroupInstance) {\n const index = this.groups.findIndex(g => g._uid === content._uid)\n\n if (index > -1) this.groups.splice(index, 1)\n },\n listClick (uid: number) {\n if (this.expand) return\n\n for (const group of this.groups) {\n group.toggle(uid)\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-list',\n class: this.classes,\n style: this.styles,\n attrs: {\n role: this.isInNav || this.isInMenu ? undefined : 'list',\n ...this.attrs$,\n },\n }\n\n return h(this.tag, this.setBackgroundColor(this.color, data), [this.$slots.default])\n },\n})\n","// Styles\nimport './VListItem.sass'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Routable from '../../mixins/routable'\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Themeable from '../../mixins/themeable'\nimport { factory as ToggleableFactory } from '../../mixins/toggleable'\n\n// Directives\nimport Ripple from '../../directives/ripple'\n\n// Utilities\nimport { keyCodes } from './../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport { removed } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\nimport { PropType, PropValidator } from 'vue/types/options'\n\nconst baseMixins = mixins(\n Colorable,\n Routable,\n Themeable,\n GroupableFactory('listItemGroup'),\n ToggleableFactory('inputValue')\n)\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n isInGroup: boolean\n isInList: boolean\n isInMenu: boolean\n isInNav: boolean\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-list-item',\n\n directives: {\n Ripple,\n },\n\n inject: {\n isInGroup: {\n default: false,\n },\n isInList: {\n default: false,\n },\n isInMenu: {\n default: false,\n },\n isInNav: {\n default: false,\n },\n },\n\n inheritAttrs: false,\n\n props: {\n activeClass: {\n type: String,\n default (): string | undefined {\n if (!this.listItemGroup) return ''\n\n return this.listItemGroup.activeClass\n },\n } as any as PropValidator,\n dense: Boolean,\n inactive: Boolean,\n link: Boolean,\n selectable: {\n type: Boolean,\n },\n tag: {\n type: String,\n default: 'div',\n },\n threeLine: Boolean,\n twoLine: Boolean,\n value: null as any as PropType,\n },\n\n data: () => ({\n proxyClass: 'v-list-item--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-list-item': true,\n ...Routable.options.computed.classes.call(this),\n 'v-list-item--dense': this.dense,\n 'v-list-item--disabled': this.disabled,\n 'v-list-item--link': this.isClickable && !this.inactive,\n 'v-list-item--selectable': this.selectable,\n 'v-list-item--three-line': this.threeLine,\n 'v-list-item--two-line': this.twoLine,\n ...this.themeClasses,\n }\n },\n isClickable (): boolean {\n return Boolean(\n Routable.options.computed.isClickable.call(this) ||\n this.listItemGroup\n )\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('avatar')) {\n removed('avatar', this)\n }\n },\n\n methods: {\n click (e: MouseEvent | KeyboardEvent) {\n if (e.detail) this.$el.blur()\n\n this.$emit('click', e)\n\n this.to || this.toggle()\n },\n genAttrs () {\n const attrs: Record = {\n 'aria-disabled': this.disabled ? true : undefined,\n tabindex: this.isClickable && !this.disabled ? 0 : -1,\n ...this.$attrs,\n }\n\n if (this.$attrs.hasOwnProperty('role')) {\n // do nothing, role already provided\n } else if (this.isInNav) {\n // do nothing, role is inherit\n } else if (this.isInGroup) {\n attrs.role = 'option'\n attrs['aria-selected'] = String(this.isActive)\n } else if (this.isInMenu) {\n attrs.role = this.isClickable ? 'menuitem' : undefined\n attrs.id = attrs.id || `list-item-${this._uid}`\n } else if (this.isInList) {\n attrs.role = 'listitem'\n }\n\n return attrs\n },\n toggle () {\n if (this.to && this.inputValue === undefined) {\n this.isActive = !this.isActive\n }\n this.$emit('change')\n },\n },\n\n render (h): VNode {\n let { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n ...this.genAttrs(),\n }\n data[this.to ? 'nativeOn' : 'on'] = {\n ...data[this.to ? 'nativeOn' : 'on'],\n keydown: (e: KeyboardEvent) => {\n /* istanbul ignore else */\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n },\n }\n\n if (this.inactive) tag = 'div'\n if (this.inactive && this.to) {\n data.on = data.nativeOn\n delete data.nativeOn\n }\n\n const children = this.$scopedSlots.default\n ? this.$scopedSlots.default({\n active: this.isActive,\n toggle: this.toggle,\n })\n : this.$slots.default\n\n return h(tag, this.isActive ? this.setTextColor(this.color, data) : data, children)\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-list-item-action',\n\n functional: true,\n\n render (h, { data, children = [] }): VNode {\n data.staticClass = data.staticClass ? `v-list-item__action ${data.staticClass}` : 'v-list-item__action'\n const filteredChild = children.filter(VNode => {\n return VNode.isComment === false && VNode.text !== ' '\n })\n if (filteredChild.length > 1) data.staticClass += ' v-list-item__action--stack'\n\n return h('div', data, children)\n },\n})\n","// Styles\nimport './VListItemGroup.sass'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\nexport default mixins(\n BaseItemGroup,\n Colorable\n).extend({\n name: 'v-list-item-group',\n\n provide () {\n return {\n isInGroup: true,\n listItemGroup: this,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-list-item-group': true,\n }\n },\n },\n\n methods: {\n genData (): object {\n return this.setTextColor(this.color, {\n ...BaseItemGroup.options.methods.genData.call(this),\n attrs: {\n role: 'listbox',\n },\n })\n },\n },\n})\n","// Types\nimport Vue, { VNode } from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'v-list-item-icon',\n\n functional: true,\n\n render (h, { data, children }): VNode {\n data.staticClass = (`v-list-item__icon ${data.staticClass || ''}`).trim()\n\n return h('div', data, children)\n },\n})\n","// Styles\nimport './VListGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport VList from './VList'\nimport VListItem from './VListItem'\nimport VListItemIcon from './VListItemIcon'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Bootable from '../../mixins/bootable'\nimport Colorable from '../../mixins/colorable'\nimport Toggleable from '../../mixins/toggleable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Transitions\nimport { VExpandTransition } from '../transitions'\n\n// Utils\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { getSlot } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport { Route } from 'vue-router'\n\nconst baseMixins = mixins(\n BindsAttrs,\n Bootable,\n Colorable,\n RegistrableInject('list'),\n Toggleable\n)\n\ntype VListInstance = InstanceType\n\ninterface options extends ExtractVue {\n list: VListInstance\n $refs: {\n group: HTMLElement\n }\n $route: Route\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-list-group',\n\n directives: { ripple },\n\n props: {\n activeClass: {\n type: String,\n default: '',\n },\n appendIcon: {\n type: String,\n default: '$expand',\n },\n color: {\n type: String,\n default: 'primary',\n },\n disabled: Boolean,\n group: [String, RegExp],\n noAction: Boolean,\n prependIcon: String,\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n subGroup: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-list-group--active': this.isActive,\n 'v-list-group--disabled': this.disabled,\n 'v-list-group--no-action': this.noAction,\n 'v-list-group--sub-group': this.subGroup,\n }\n },\n },\n\n watch: {\n isActive (val: boolean) {\n /* istanbul ignore else */\n if (!this.subGroup && val) {\n this.list && this.list.listClick(this._uid)\n }\n },\n $route: 'onRouteChange',\n },\n\n created () {\n this.list && this.list.register(this)\n\n if (this.group &&\n this.$route &&\n this.value == null\n ) {\n this.isActive = this.matchRoute(this.$route.path)\n }\n },\n\n beforeDestroy () {\n this.list && this.list.unregister(this)\n },\n\n methods: {\n click (e: Event) {\n if (this.disabled) return\n\n this.isBooted = true\n\n this.$emit('click', e)\n this.$nextTick(() => (this.isActive = !this.isActive))\n },\n genIcon (icon: string | false): VNode {\n return this.$createElement(VIcon, icon)\n },\n genAppendIcon (): VNode | null {\n const icon = !this.subGroup ? this.appendIcon : false\n\n if (!icon && !this.$slots.appendIcon) return null\n\n return this.$createElement(VListItemIcon, {\n staticClass: 'v-list-group__header__append-icon',\n }, [\n this.$slots.appendIcon || this.genIcon(icon),\n ])\n },\n genHeader (): VNode {\n return this.$createElement(VListItem, {\n staticClass: 'v-list-group__header',\n attrs: {\n 'aria-expanded': String(this.isActive),\n role: 'button',\n },\n class: {\n [this.activeClass]: this.isActive,\n },\n props: {\n inputValue: this.isActive,\n },\n directives: [{\n name: 'ripple',\n value: this.ripple,\n }],\n on: {\n ...this.listeners$,\n click: this.click,\n },\n }, [\n this.genPrependIcon(),\n this.$slots.activator,\n this.genAppendIcon(),\n ])\n },\n genItems (): VNode[] {\n return this.showLazyContent(() => [\n this.$createElement('div', {\n staticClass: 'v-list-group__items',\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }, getSlot(this)),\n ])\n },\n genPrependIcon (): VNode | null {\n const icon = this.subGroup && this.prependIcon == null\n ? '$subgroup'\n : this.prependIcon\n\n if (!icon && !this.$slots.prependIcon) return null\n\n return this.$createElement(VListItemIcon, {\n staticClass: 'v-list-group__header__prepend-icon',\n }, [\n this.$slots.prependIcon || this.genIcon(icon),\n ])\n },\n onRouteChange (to: Route) {\n /* istanbul ignore if */\n if (!this.group) return\n\n const isActive = this.matchRoute(to.path)\n\n /* istanbul ignore else */\n if (isActive && this.isActive !== isActive) {\n this.list && this.list.listClick(this._uid)\n }\n\n this.isActive = isActive\n },\n toggle (uid: number) {\n const isActive = this._uid === uid\n\n if (isActive) this.isBooted = true\n this.$nextTick(() => (this.isActive = isActive))\n },\n matchRoute (to: string) {\n return to.match(this.group) !== null\n },\n },\n\n render (h): VNode {\n return h('div', this.setTextColor(this.isActive && this.color, {\n staticClass: 'v-list-group',\n class: this.classes,\n }), [\n this.genHeader(),\n h(VExpandTransition, this.genItems()),\n ])\n },\n})\n","import VAvatar from './VAvatar'\n\nexport { VAvatar }\nexport default VAvatar\n","// Components\nimport VAvatar from '../VAvatar'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default VAvatar.extend({\n name: 'v-list-item-avatar',\n\n props: {\n horizontal: Boolean,\n size: {\n type: [Number, String],\n default: 40,\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-list-item__avatar--horizontal': this.horizontal,\n ...VAvatar.options.computed.classes.call(this),\n 'v-avatar--tile': this.tile || this.horizontal,\n }\n },\n },\n\n render (h): VNode {\n const render = VAvatar.options.render.call(this, h)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-list-item__avatar'\n\n return render\n },\n})\n","import { createSimpleFunctional } from '../../util/helpers'\n\nimport VList from './VList'\nimport VListGroup from './VListGroup'\nimport VListItem from './VListItem'\nimport VListItemGroup from './VListItemGroup'\nimport VListItemAction from './VListItemAction'\nimport VListItemAvatar from './VListItemAvatar'\nimport VListItemIcon from './VListItemIcon'\n\nexport const VListItemActionText = createSimpleFunctional('v-list-item__action-text', 'span')\nexport const VListItemContent = createSimpleFunctional('v-list-item__content', 'div')\nexport const VListItemTitle = createSimpleFunctional('v-list-item__title', 'div')\nexport const VListItemSubtitle = createSimpleFunctional('v-list-item__subtitle', 'div')\n\nexport {\n VList,\n VListGroup,\n VListItem,\n VListItemAction,\n VListItemAvatar,\n VListItemIcon,\n VListItemGroup,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VList,\n VListGroup,\n VListItem,\n VListItemAction,\n VListItemActionText,\n VListItemAvatar,\n VListItemContent,\n VListItemGroup,\n VListItemIcon,\n VListItemSubtitle,\n VListItemTitle,\n },\n}\n","// Styles\nimport './VMain.sass'\n\n// Mixins\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default SSRBootable.extend({\n name: 'v-main',\n\n props: {\n tag: {\n type: String,\n default: 'main',\n },\n },\n\n computed: {\n styles (): object {\n const {\n bar, top, right, footer, insetFooter, bottom, left,\n } = this.$vuetify.application\n\n return {\n paddingTop: `${top + bar}px`,\n paddingRight: `${right}px`,\n paddingBottom: `${footer + insetFooter + bottom}px`,\n paddingLeft: `${left}px`,\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-main',\n style: this.styles,\n ref: 'main',\n }\n\n return h(this.tag, data, [\n h(\n 'div',\n { staticClass: 'v-main__wrap' },\n this.$slots.default\n ),\n ])\n },\n})\n","// Styles\nimport './VMenu.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Menuable from '../../mixins/menuable'\nimport Returnable from '../../mixins/returnable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\nimport goTo from '../../services/goto'\n\n// Types\nimport { VNode, VNodeDirective, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Delayable,\n Returnable,\n Roundable,\n Themeable,\n Menuable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-menu',\n\n directives: {\n ClickOutside,\n Resize,\n },\n\n provide (): object {\n return {\n isInMenu: true,\n // Pass theme through to default slot\n theme: this.theme,\n }\n },\n\n props: {\n auto: Boolean,\n closeOnClick: {\n type: Boolean,\n default: true,\n },\n closeOnContentClick: {\n type: Boolean,\n default: true,\n },\n disabled: Boolean,\n disableKeys: Boolean,\n maxHeight: {\n type: [Number, String],\n default: 'auto',\n },\n offsetX: Boolean,\n offsetY: Boolean,\n openOnHover: Boolean,\n origin: {\n type: String,\n default: 'top left',\n },\n transition: {\n type: [Boolean, String],\n default: 'v-menu-transition',\n },\n },\n\n data () {\n return {\n calculatedTopAuto: 0,\n defaultOffset: 8,\n hasJustFocused: false,\n listIndex: -1,\n resizeTimeout: 0,\n selectedIndex: null as null | number,\n tiles: [] as HTMLElement[],\n }\n },\n\n computed: {\n activeTile (): HTMLElement | undefined {\n return this.tiles[this.listIndex]\n },\n calculatedLeft (): string {\n const menuWidth = Math.max(this.dimensions.content.width, parseFloat(this.calculatedMinWidth))\n\n if (!this.auto) return this.calcLeft(menuWidth) || '0'\n\n return convertToUnit(this.calcXOverflow(this.calcLeftAuto(), menuWidth)) || '0'\n },\n calculatedMaxHeight (): string {\n const height = this.auto\n ? '200px'\n : convertToUnit(this.maxHeight)\n\n return height || '0'\n },\n calculatedMaxWidth (): string {\n return convertToUnit(this.maxWidth) || '0'\n },\n calculatedMinWidth (): string {\n if (this.minWidth) {\n return convertToUnit(this.minWidth) || '0'\n }\n\n const minWidth = Math.min(\n this.dimensions.activator.width +\n Number(this.nudgeWidth) +\n (this.auto ? 16 : 0),\n Math.max(this.pageWidth - 24, 0)\n )\n\n const calculatedMaxWidth = isNaN(parseInt(this.calculatedMaxWidth))\n ? minWidth\n : parseInt(this.calculatedMaxWidth)\n\n return convertToUnit(Math.min(\n calculatedMaxWidth,\n minWidth\n )) || '0'\n },\n calculatedTop (): string {\n const top = !this.auto\n ? this.calcTop()\n : convertToUnit(this.calcYOverflow(this.calculatedTopAuto))\n\n return top || '0'\n },\n hasClickableTiles (): boolean {\n return Boolean(this.tiles.find(tile => tile.tabIndex > -1))\n },\n styles (): object {\n return {\n maxHeight: this.calculatedMaxHeight,\n minWidth: this.calculatedMinWidth,\n maxWidth: this.calculatedMaxWidth,\n top: this.calculatedTop,\n left: this.calculatedLeft,\n transformOrigin: this.origin,\n zIndex: this.zIndex || this.activeZIndex,\n }\n },\n },\n\n watch: {\n isActive (val) {\n if (!val) this.listIndex = -1\n },\n isContentActive (val) {\n this.hasJustFocused = val\n },\n listIndex (next, prev) {\n if (next in this.tiles) {\n const tile = this.tiles[next]\n tile.classList.add('v-list-item--highlighted')\n const scrollTop = this.$refs.content.scrollTop\n const contentHeight = this.$refs.content.clientHeight\n\n if (scrollTop > tile.offsetTop - 8) {\n goTo(tile.offsetTop - tile.clientHeight, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n } else if (scrollTop + contentHeight < tile.offsetTop + tile.clientHeight + 8) {\n goTo(tile.offsetTop - contentHeight + tile.clientHeight * 2, {\n appOffset: false,\n duration: 300,\n container: this.$refs.content,\n })\n }\n }\n\n prev in this.tiles &&\n this.tiles[prev].classList.remove('v-list-item--highlighted')\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n mounted () {\n this.isActive && this.callActivate()\n },\n\n methods: {\n activate () {\n // Update coordinates and dimensions of menu\n // and its activator\n this.updateDimensions()\n // Start the transition\n requestAnimationFrame(() => {\n // Once transitioning, calculate scroll and top position\n this.startTransition().then(() => {\n if (this.$refs.content) {\n this.calculatedTopAuto = this.calcTopAuto()\n this.auto && (this.$refs.content.scrollTop = this.calcScrollPosition())\n }\n })\n })\n },\n calcScrollPosition () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement\n const maxScrollTop = $el.scrollHeight - $el.offsetHeight\n\n return activeTile\n ? Math.min(maxScrollTop, Math.max(0, activeTile.offsetTop - $el.offsetHeight / 2 + activeTile.offsetHeight / 2))\n : $el.scrollTop\n },\n calcLeftAuto () {\n return parseInt(this.dimensions.activator.left - this.defaultOffset * 2)\n },\n calcTopAuto () {\n const $el = this.$refs.content\n const activeTile = $el.querySelector('.v-list-item--active') as HTMLElement | null\n\n if (!activeTile) {\n this.selectedIndex = null\n }\n\n if (this.offsetY || !activeTile) {\n return this.computedTop\n }\n\n this.selectedIndex = Array.from(this.tiles).indexOf(activeTile)\n\n const tileDistanceFromMenuTop = activeTile.offsetTop - this.calcScrollPosition()\n const firstTileOffsetTop = ($el.querySelector('.v-list-item') as HTMLElement).offsetTop\n\n return this.computedTop - tileDistanceFromMenuTop - firstTileOffsetTop - 1\n },\n changeListIndex (e: KeyboardEvent) {\n // For infinite scroll and autocomplete, re-evaluate children\n this.getTiles()\n\n if (!this.isActive || !this.hasClickableTiles) {\n return\n } else if (e.keyCode === keyCodes.tab) {\n this.isActive = false\n return\n } else if (e.keyCode === keyCodes.down) {\n this.nextTile()\n } else if (e.keyCode === keyCodes.up) {\n this.prevTile()\n } else if (e.keyCode === keyCodes.end) {\n this.lastTile()\n } else if (e.keyCode === keyCodes.home) {\n this.firstTile()\n } else if (e.keyCode === keyCodes.enter && this.listIndex !== -1) {\n this.tiles[this.listIndex].click()\n } else { return }\n // One of the conditions was met, prevent default action (#2988)\n e.preventDefault()\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n\n return this.isActive &&\n !this._isDestroyed &&\n this.closeOnClick &&\n !this.$refs.content.contains(target)\n },\n genActivatorAttributes () {\n const attributes = Activatable.options.methods.genActivatorAttributes.call(this)\n\n if (this.activeTile && this.activeTile.id) {\n return {\n ...attributes,\n 'aria-activedescendant': this.activeTile.id,\n }\n }\n\n return attributes\n },\n genActivatorListeners () {\n const listeners = Menuable.options.methods.genActivatorListeners.call(this)\n\n if (!this.disableKeys) {\n listeners.keydown = this.onKeyDown\n }\n\n return listeners\n },\n genTransition (): VNode {\n const content = this.genContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n },\n }, [content])\n },\n genDirectives (): VNodeDirective[] {\n const directives: VNodeDirective[] = [{\n name: 'show',\n value: this.isContentActive,\n }]\n\n // Do not add click outside for hover menu\n if (!this.openOnHover && this.closeOnClick) {\n directives.push({\n name: 'click-outside',\n value: {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: () => [this.$el, ...this.getOpenDependentElements()],\n },\n })\n }\n\n return directives\n },\n genContent (): VNode {\n const options = {\n attrs: {\n ...this.getScopeIdAttrs(),\n role: 'role' in this.$attrs ? this.$attrs.role : 'menu',\n },\n staticClass: 'v-menu__content',\n class: {\n ...this.rootThemeClasses,\n ...this.roundedClasses,\n 'v-menu__content--auto': this.auto,\n 'v-menu__content--fixed': this.activatorFixed,\n menuable__content__active: this.isActive,\n [this.contentClass.trim()]: true,\n },\n style: this.styles,\n directives: this.genDirectives(),\n ref: 'content',\n on: {\n click: (e: Event) => {\n const target = e.target as HTMLElement\n\n if (target.getAttribute('disabled')) return\n if (this.closeOnContentClick) this.isActive = false\n },\n keydown: this.onKeyDown,\n },\n } as VNodeData\n\n if (this.$listeners.scroll) {\n options.on = options.on || {}\n options.on.scroll = this.$listeners.scroll\n }\n\n if (!this.disabled && this.openOnHover) {\n options.on = options.on || {}\n options.on.mouseenter = this.mouseEnterHandler\n }\n\n if (this.openOnHover) {\n options.on = options.on || {}\n options.on.mouseleave = this.mouseLeaveHandler\n }\n\n return this.$createElement('div', options, this.getContentSlot())\n },\n getTiles () {\n if (!this.$refs.content) return\n\n this.tiles = Array.from(this.$refs.content.querySelectorAll('.v-list-item, .v-divider, .v-subheader'))\n },\n mouseEnterHandler () {\n this.runDelay('open', () => {\n if (this.hasJustFocused) return\n\n this.hasJustFocused = true\n })\n },\n mouseLeaveHandler (e: MouseEvent) {\n // Prevent accidental re-activation\n this.runDelay('close', () => {\n if (this.$refs.content?.contains(e.relatedTarget as HTMLElement)) return\n\n requestAnimationFrame(() => {\n this.isActive = false\n this.callDeactivate()\n })\n })\n },\n nextTile () {\n const tile = this.tiles[this.listIndex + 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = -1\n this.nextTile()\n\n return\n }\n\n this.listIndex++\n if (tile.tabIndex === -1) this.nextTile()\n },\n prevTile () {\n const tile = this.tiles[this.listIndex - 1]\n\n if (!tile) {\n if (!this.tiles.length) return\n\n this.listIndex = this.tiles.length\n this.prevTile()\n\n return\n }\n\n this.listIndex--\n if (tile.tabIndex === -1) this.prevTile()\n },\n lastTile () {\n const tile = this.tiles[this.tiles.length - 1]\n\n if (!tile) return\n\n this.listIndex = this.tiles.length - 1\n\n if (tile.tabIndex === -1) this.prevTile()\n },\n firstTile () {\n const tile = this.tiles[0]\n\n if (!tile) return\n\n this.listIndex = 0\n\n if (tile.tabIndex === -1) this.nextTile()\n },\n onKeyDown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc) {\n // Wait for dependent elements to close first\n setTimeout(() => { this.isActive = false })\n const activator = this.getActivator()\n this.$nextTick(() => activator && activator.focus())\n } else if (\n !this.isActive &&\n [keyCodes.up, keyCodes.down].includes(e.keyCode)\n ) {\n this.isActive = true\n }\n\n // Allow for isActive watcher to generate tile list\n this.$nextTick(() => this.changeListIndex(e))\n },\n onResize () {\n if (!this.isActive) return\n\n // Account for screen resize\n // and orientation change\n // eslint-disable-next-line no-unused-expressions\n this.$refs.content.offsetWidth\n this.updateDimensions()\n\n // When resizing to a smaller width\n // content width is evaluated before\n // the new activator width has been\n // set, causing it to not size properly\n // hacky but will revisit in the future\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.updateDimensions, 100)\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-menu',\n class: {\n 'v-menu--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n directives: [{\n arg: '500',\n name: 'resize',\n value: this.onResize,\n }],\n }\n\n return h('div', data, [\n !this.activator && this.genActivator(),\n this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [this.genTransition()]),\n ]),\n ])\n },\n})\n","// Styles\nimport './VNavigationDrawer.sass'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Mixins\nimport Applicationable from '../../mixins/applicationable'\nimport Colorable from '../../mixins/colorable'\nimport Dependent from '../../mixins/dependent'\nimport Mobile from '../../mixins/mobile'\nimport Overlayable from '../../mixins/overlayable'\nimport SSRBootable from '../../mixins/ssr-bootable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, VNodeDirective, PropType } from 'vue'\nimport { TouchWrapper } from 'vuetify/types'\n\nconst baseMixins = mixins(\n Applicationable('left', [\n 'isActive',\n 'isMobile',\n 'miniVariant',\n 'expandOnHover',\n 'permanent',\n 'right',\n 'temporary',\n 'width',\n ]),\n Colorable,\n Dependent,\n Mobile,\n Overlayable,\n SSRBootable,\n Themeable\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-navigation-drawer',\n\n directives: {\n ClickOutside,\n Resize,\n Touch,\n },\n\n provide (): object {\n return {\n isInNav: this.tag === 'nav',\n }\n },\n\n props: {\n bottom: Boolean,\n clipped: Boolean,\n disableResizeWatcher: Boolean,\n disableRouteWatcher: Boolean,\n expandOnHover: Boolean,\n floating: Boolean,\n height: {\n type: [Number, String],\n default (): string {\n return this.app ? '100vh' : '100%'\n },\n },\n miniVariant: Boolean,\n miniVariantWidth: {\n type: [Number, String],\n default: 56,\n },\n permanent: Boolean,\n right: Boolean,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n stateless: Boolean,\n tag: {\n type: String,\n default (): string {\n return this.app ? 'nav' : 'aside'\n },\n },\n temporary: Boolean,\n touchless: Boolean,\n width: {\n type: [Number, String],\n default: 256,\n },\n value: null as unknown as PropType,\n },\n\n data: () => ({\n isMouseover: false,\n touchArea: {\n left: 0,\n right: 0,\n },\n stackMinZIndex: 6,\n }),\n\n computed: {\n /**\n * Used for setting an app value from a dynamic\n * property. Called from applicationable.js\n */\n applicationProperty (): string {\n return this.right ? 'right' : 'left'\n },\n classes (): object {\n return {\n 'v-navigation-drawer': true,\n 'v-navigation-drawer--absolute': this.absolute,\n 'v-navigation-drawer--bottom': this.bottom,\n 'v-navigation-drawer--clipped': this.clipped,\n 'v-navigation-drawer--close': !this.isActive,\n 'v-navigation-drawer--fixed': !this.absolute && (this.app || this.fixed),\n 'v-navigation-drawer--floating': this.floating,\n 'v-navigation-drawer--is-mobile': this.isMobile,\n 'v-navigation-drawer--is-mouseover': this.isMouseover,\n 'v-navigation-drawer--mini-variant': this.isMiniVariant,\n 'v-navigation-drawer--custom-mini-variant': Number(this.miniVariantWidth) !== 56,\n 'v-navigation-drawer--open': this.isActive,\n 'v-navigation-drawer--open-on-hover': this.expandOnHover,\n 'v-navigation-drawer--right': this.right,\n 'v-navigation-drawer--temporary': this.temporary,\n ...this.themeClasses,\n }\n },\n computedMaxHeight (): number | null {\n if (!this.hasApp) return null\n\n const computedMaxHeight = (\n this.$vuetify.application.bottom +\n this.$vuetify.application.footer +\n this.$vuetify.application.bar\n )\n\n if (!this.clipped) return computedMaxHeight\n\n return computedMaxHeight + this.$vuetify.application.top\n },\n computedTop (): number {\n if (!this.hasApp) return 0\n\n let computedTop = this.$vuetify.application.bar\n\n computedTop += this.clipped\n ? this.$vuetify.application.top\n : 0\n\n return computedTop\n },\n computedTransform (): number {\n if (this.isActive) return 0\n if (this.isBottom) return 100\n return this.right ? 100 : -100\n },\n computedWidth (): string | number {\n return this.isMiniVariant ? this.miniVariantWidth : this.width\n },\n hasApp (): boolean {\n return (\n this.app &&\n (!this.isMobile && !this.temporary)\n )\n },\n isBottom (): boolean {\n return this.bottom && this.isMobile\n },\n isMiniVariant (): boolean {\n return (\n !this.expandOnHover &&\n this.miniVariant\n ) || (\n this.expandOnHover &&\n !this.isMouseover\n )\n },\n isMobile (): boolean {\n return (\n !this.stateless &&\n !this.permanent &&\n Mobile.options.computed.isMobile.call(this)\n )\n },\n reactsToClick (): boolean {\n return (\n !this.stateless &&\n !this.permanent &&\n (this.isMobile || this.temporary)\n )\n },\n reactsToMobile (): boolean {\n return (\n this.app &&\n !this.disableResizeWatcher &&\n !this.permanent &&\n !this.stateless &&\n !this.temporary\n )\n },\n reactsToResize (): boolean {\n return !this.disableResizeWatcher && !this.stateless\n },\n reactsToRoute (): boolean {\n return (\n !this.disableRouteWatcher &&\n !this.stateless &&\n (this.temporary || this.isMobile)\n )\n },\n showOverlay (): boolean {\n return (\n !this.hideOverlay &&\n this.isActive &&\n (this.isMobile || this.temporary)\n )\n },\n styles (): object {\n const translate = this.isBottom ? 'translateY' : 'translateX'\n return {\n height: convertToUnit(this.height),\n top: !this.isBottom ? convertToUnit(this.computedTop) : 'auto',\n maxHeight: this.computedMaxHeight != null\n ? `calc(100% - ${convertToUnit(this.computedMaxHeight)})`\n : undefined,\n transform: `${translate}(${convertToUnit(this.computedTransform, '%')})`,\n width: convertToUnit(this.computedWidth),\n }\n },\n },\n\n watch: {\n $route: 'onRouteChange',\n isActive (val) {\n this.$emit('input', val)\n },\n /**\n * When mobile changes, adjust the active state\n * only when there has been a previous value\n */\n isMobile (val, prev) {\n !val &&\n this.isActive &&\n !this.temporary &&\n this.removeOverlay()\n\n if (prev == null ||\n !this.reactsToResize ||\n !this.reactsToMobile\n ) return\n\n this.isActive = !val\n },\n permanent (val) {\n // If enabling prop enable the drawer\n if (val) this.isActive = true\n },\n showOverlay (val) {\n if (val) this.genOverlay()\n else this.removeOverlay()\n },\n value (val) {\n if (this.permanent) return\n\n if (val == null) {\n this.init()\n return\n }\n\n if (val !== this.isActive) this.isActive = val\n },\n expandOnHover: 'updateMiniVariant',\n isMouseover (val) {\n this.updateMiniVariant(!val)\n },\n },\n\n beforeMount () {\n this.init()\n },\n\n methods: {\n calculateTouchArea () {\n const parent = this.$el.parentNode as Element\n\n if (!parent) return\n\n const parentRect = parent.getBoundingClientRect()\n\n this.touchArea = {\n left: parentRect.left + 50,\n right: parentRect.right - 50,\n }\n },\n closeConditional () {\n return this.isActive && !this._isDestroyed && this.reactsToClick\n },\n genAppend () {\n return this.genPosition('append')\n },\n genBackground () {\n const props = {\n height: '100%',\n width: '100%',\n src: this.src,\n }\n\n const image = this.$scopedSlots.img\n ? this.$scopedSlots.img(props)\n : this.$createElement(VImg, { props })\n\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__image',\n }, [image])\n },\n genDirectives (): VNodeDirective[] {\n const directives = [{\n name: 'click-outside',\n value: {\n handler: () => { this.isActive = false },\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n }]\n\n if (!this.touchless && !this.stateless) {\n directives.push({\n name: 'touch',\n value: {\n parent: true,\n left: this.swipeLeft,\n right: this.swipeRight,\n },\n } as any)\n }\n\n return directives\n },\n genListeners () {\n const on: Record void> = {\n mouseenter: () => (this.isMouseover = true),\n mouseleave: () => (this.isMouseover = false),\n transitionend: (e: Event) => {\n if (e.target !== e.currentTarget) return\n this.$emit('transitionend', e)\n\n // IE11 does not support new Event('resize')\n const resizeEvent = document.createEvent('UIEvents')\n resizeEvent.initUIEvent('resize', true, false, window, 0)\n window.dispatchEvent(resizeEvent)\n },\n }\n\n if (this.miniVariant) {\n on.click = () => this.$emit('update:mini-variant', false)\n }\n\n return on\n },\n genPosition (name: 'prepend' | 'append') {\n const slot = getSlot(this, name)\n\n if (!slot) return slot\n\n return this.$createElement('div', {\n staticClass: `v-navigation-drawer__${name}`,\n }, slot)\n },\n genPrepend () {\n return this.genPosition('prepend')\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__content',\n }, this.$slots.default)\n },\n genBorder () {\n return this.$createElement('div', {\n staticClass: 'v-navigation-drawer__border',\n })\n },\n init () {\n if (this.permanent) {\n this.isActive = true\n } else if (this.stateless ||\n this.value != null\n ) {\n this.isActive = this.value\n } else if (!this.temporary) {\n this.isActive = !this.isMobile\n }\n },\n onRouteChange () {\n if (this.reactsToRoute && this.closeConditional()) {\n this.isActive = false\n }\n },\n swipeLeft (e: TouchWrapper) {\n if (this.isActive && this.right) return\n this.calculateTouchArea()\n\n if (Math.abs(e.touchendX - e.touchstartX) < 100) return\n if (this.right &&\n e.touchstartX >= this.touchArea.right\n ) this.isActive = true\n else if (!this.right && this.isActive) this.isActive = false\n },\n swipeRight (e: TouchWrapper) {\n if (this.isActive && !this.right) return\n this.calculateTouchArea()\n\n if (Math.abs(e.touchendX - e.touchstartX) < 100) return\n if (!this.right &&\n e.touchstartX <= this.touchArea.left\n ) this.isActive = true\n else if (this.right && this.isActive) this.isActive = false\n },\n /**\n * Update the application layout\n */\n updateApplication () {\n if (\n !this.isActive ||\n this.isMobile ||\n this.temporary ||\n !this.$el\n ) return 0\n\n const width = Number(this.miniVariant ? this.miniVariantWidth : this.width)\n\n return isNaN(width) ? this.$el.clientWidth : width\n },\n updateMiniVariant (val: boolean) {\n if (this.expandOnHover && this.miniVariant !== val) this.$emit('update:mini-variant', val)\n },\n },\n\n render (h): VNode {\n const children = [\n this.genPrepend(),\n this.genContent(),\n this.genAppend(),\n this.genBorder(),\n ]\n\n if (this.src || getSlot(this, 'img')) children.unshift(this.genBackground())\n\n return h(this.tag, this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n directives: this.genDirectives(),\n on: this.genListeners(),\n }), children)\n },\n})\n","import VMenu from './VMenu'\n\nexport { VMenu }\nexport default VMenu\n","import VDivider from './VDivider'\n\nexport { VDivider }\nexport default VDivider\n","// Styles\nimport './VSubheader.sass'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\nexport default mixins(\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-subheader',\n\n props: {\n inset: Boolean,\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-subheader',\n class: {\n 'v-subheader--inset': this.inset,\n ...this.themeClasses,\n },\n attrs: this.$attrs,\n on: this.$listeners,\n }, this.$slots.default)\n },\n})\n","import VSubheader from './VSubheader'\n\nexport { VSubheader }\nexport default VSubheader\n","// Components\nimport VSimpleCheckbox from '../VCheckbox/VSimpleCheckbox'\nimport VDivider from '../VDivider'\nimport VSubheader from '../VSubheader'\nimport {\n VList,\n VListItem,\n VListItemAction,\n VListItemContent,\n VListItemTitle,\n} from '../VList'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport {\n escapeHTML,\n getPropertyFromItem,\n} from '../../util/helpers'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType, VNodeChildren } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\ntype ListTile = { item: any, disabled?: null | boolean, value?: boolean, index: number };\n\n/* @vue/component */\nexport default mixins(Colorable, Themeable).extend({\n name: 'v-select-list',\n\n // https://github.com/vuejs/vue/issues/6872\n directives: {\n ripple,\n },\n\n props: {\n action: Boolean,\n dense: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n noDataText: String,\n noFilter: Boolean,\n searchInput: null as unknown as PropType,\n selectedItems: {\n type: Array,\n default: () => [],\n } as PropValidator,\n },\n\n computed: {\n parsedItems (): any[] {\n return this.selectedItems.map(item => this.getValue(item))\n },\n tileActiveClass (): string {\n return Object.keys(this.setTextColor(this.color).class || {}).join(' ')\n },\n staticNoDataTile (): VNode {\n const tile = {\n attrs: {\n role: undefined,\n },\n on: {\n mousedown: (e: Event) => e.preventDefault(), // Prevent onBlur from being called\n },\n }\n\n return this.$createElement(VListItem, tile, [\n this.genTileContent(this.noDataText),\n ])\n },\n },\n\n methods: {\n genAction (item: object, inputValue: any): VNode {\n return this.$createElement(VListItemAction, [\n this.$createElement(VSimpleCheckbox, {\n props: {\n color: this.color,\n value: inputValue,\n ripple: false,\n },\n on: {\n input: () => this.$emit('select', item),\n },\n }),\n ])\n },\n genDivider (props: { [key: string]: any }) {\n return this.$createElement(VDivider, { props })\n },\n genFilteredText (text: string) {\n text = text || ''\n\n if (!this.searchInput || this.noFilter) return escapeHTML(text)\n\n const { start, middle, end } = this.getMaskedCharacters(text)\n\n return `${escapeHTML(start)}${this.genHighlight(middle)}${escapeHTML(end)}`\n },\n genHeader (props: { [key: string]: any }): VNode {\n return this.$createElement(VSubheader, { props }, props.header)\n },\n genHighlight (text: string): string {\n return `${escapeHTML(text)}`\n },\n getMaskedCharacters (text: string): {\n start: string\n middle: string\n end: string\n } {\n const searchInput = (this.searchInput || '').toString().toLocaleLowerCase()\n const index = text.toLocaleLowerCase().indexOf(searchInput)\n\n if (index < 0) return { start: text, middle: '', end: '' }\n\n const start = text.slice(0, index)\n const middle = text.slice(index, index + searchInput.length)\n const end = text.slice(index + searchInput.length)\n return { start, middle, end }\n },\n genTile ({\n item,\n index,\n disabled = null,\n value = false,\n }: ListTile): VNode | VNode[] | undefined {\n if (!value) value = this.hasItem(item)\n\n if (item === Object(item)) {\n disabled = disabled !== null\n ? disabled\n : this.getDisabled(item)\n }\n\n const tile = {\n attrs: {\n // Default behavior in list does not\n // contain aria-selected by default\n 'aria-selected': String(value),\n id: `list-item-${this._uid}-${index}`,\n role: 'option',\n },\n on: {\n mousedown: (e: Event) => {\n // Prevent onBlur from being called\n e.preventDefault()\n },\n click: () => disabled || this.$emit('select', item),\n },\n props: {\n activeClass: this.tileActiveClass,\n disabled,\n ripple: true,\n inputValue: value,\n },\n }\n\n if (!this.$scopedSlots.item) {\n return this.$createElement(VListItem, tile, [\n this.action && !this.hideSelected && this.items.length > 0\n ? this.genAction(item, value)\n : null,\n this.genTileContent(item, index),\n ])\n }\n\n const parent = this\n const scopedSlot = this.$scopedSlots.item({\n parent,\n item,\n attrs: {\n ...tile.attrs,\n ...tile.props,\n },\n on: tile.on,\n })\n\n return this.needsTile(scopedSlot)\n ? this.$createElement(VListItem, tile, scopedSlot)\n : scopedSlot\n },\n genTileContent (item: any, index = 0): VNode {\n const innerHTML = this.genFilteredText(this.getText(item))\n\n return this.$createElement(VListItemContent,\n [this.$createElement(VListItemTitle, {\n domProps: { innerHTML },\n })]\n )\n },\n hasItem (item: object) {\n return this.parsedItems.indexOf(this.getValue(item)) > -1\n },\n needsTile (slot: VNode[] | undefined) {\n return slot!.length !== 1 ||\n slot![0].componentOptions == null ||\n slot![0].componentOptions.Ctor.options.name !== 'v-list-item'\n },\n getDisabled (item: object) {\n return Boolean(getPropertyFromItem(item, this.itemDisabled, false))\n },\n getText (item: object) {\n return String(getPropertyFromItem(item, this.itemText, item))\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n },\n\n render (): VNode {\n const children: VNodeChildren = []\n const itemsLength = this.items.length\n for (let index = 0; index < itemsLength; index++) {\n const item = this.items[index]\n\n if (this.hideSelected &&\n this.hasItem(item)\n ) continue\n\n if (item == null) children.push(this.genTile({ item, index }))\n else if (item.header) children.push(this.genHeader(item))\n else if (item.divider) children.push(this.genDivider(item))\n else children.push(this.genTile({ item, index }))\n }\n\n children.length || children.push(this.$slots['no-data'] || this.staticNoDataTile)\n\n this.$slots['prepend-item'] && children.unshift(this.$slots['prepend-item'])\n\n this.$slots['append-item'] && children.push(this.$slots['append-item'])\n\n return this.$createElement(VList, {\n staticClass: 'v-select-list',\n class: this.themeClasses,\n attrs: {\n role: 'listbox',\n tabindex: -1,\n },\n props: { dense: this.dense },\n }, children)\n },\n})\n","import Vue from 'vue'\n\n/* @vue/component */\nexport default Vue.extend({\n name: 'filterable',\n\n props: {\n noDataText: {\n type: String,\n default: '$vuetify.noDataText',\n },\n },\n})\n","// Styles\nimport '../VTextField/VTextField.sass'\nimport './VSelect.sass'\n\n// Components\nimport VChip from '../VChip'\nimport VMenu from '../VMenu'\nimport VSelectList from './VSelectList'\n\n// Extensions\nimport VInput from '../VInput'\nimport VTextField from '../VTextField/VTextField'\n\n// Mixins\nimport Comparable from '../../mixins/comparable'\nimport Dependent from '../../mixins/dependent'\nimport Filterable from '../../mixins/filterable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Utilities\nimport mergeData from '../../util/mergeData'\nimport { getPropertyFromItem, getObjectValueByPath, keyCodes } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, VNodeDirective, PropType, VNodeData } from 'vue'\nimport { PropValidator } from 'vue/types/options'\nimport { SelectItemKey } from 'vuetify/types'\n\nexport const defaultMenuProps = {\n closeOnClick: false,\n closeOnContentClick: false,\n disableKeys: true,\n openOnClick: false,\n maxHeight: 304,\n}\n\n// Types\nconst baseMixins = mixins(\n VTextField,\n Comparable,\n Dependent,\n Filterable\n)\n\ninterface options extends InstanceType {\n $refs: {\n menu: InstanceType\n content: HTMLElement\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n 'append-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-select',\n\n directives: {\n ClickOutside,\n },\n\n props: {\n appendIcon: {\n type: String,\n default: '$dropdown',\n },\n attach: {\n type: null as unknown as PropType,\n default: false,\n },\n cacheItems: Boolean,\n chips: Boolean,\n clearable: Boolean,\n deletableChips: Boolean,\n disableLookup: Boolean,\n eager: Boolean,\n hideSelected: Boolean,\n items: {\n type: Array,\n default: () => [],\n } as PropValidator,\n itemColor: {\n type: String,\n default: 'primary',\n },\n itemDisabled: {\n type: [String, Array, Function] as PropType,\n default: 'disabled',\n },\n itemText: {\n type: [String, Array, Function] as PropType,\n default: 'text',\n },\n itemValue: {\n type: [String, Array, Function] as PropType,\n default: 'value',\n },\n menuProps: {\n type: [String, Array, Object],\n default: () => defaultMenuProps,\n },\n multiple: Boolean,\n openOnClear: Boolean,\n returnObject: Boolean,\n smallChips: Boolean,\n },\n\n data () {\n return {\n cachedItems: this.cacheItems ? this.items : [],\n menuIsBooted: false,\n isMenuActive: false,\n lastItem: 20,\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n lazyValue: this.value !== undefined\n ? this.value\n : this.multiple ? [] : undefined,\n selectedIndex: -1,\n selectedItems: [] as any[],\n keyboardLookupPrefix: '',\n keyboardLookupLastTime: 0,\n }\n },\n\n computed: {\n /* All items that the select has */\n allItems (): object[] {\n return this.filterDuplicates(this.cachedItems.concat(this.items))\n },\n classes (): object {\n return {\n ...VTextField.options.computed.classes.call(this),\n 'v-select': true,\n 'v-select--chips': this.hasChips,\n 'v-select--chips--small': this.smallChips,\n 'v-select--is-menu-active': this.isMenuActive,\n 'v-select--is-multi': this.multiple,\n }\n },\n /* Used by other components to overwrite */\n computedItems (): object[] {\n return this.allItems\n },\n computedOwns (): string {\n return `list-${this._uid}`\n },\n computedCounterValue (): number {\n const value = this.multiple\n ? this.selectedItems\n : (this.getText(this.selectedItems[0]) || '').toString()\n\n if (typeof this.counterValue === 'function') {\n return this.counterValue(value)\n }\n\n return value.length\n },\n directives (): VNodeDirective[] | undefined {\n return this.isFocused ? [{\n name: 'click-outside',\n value: {\n handler: this.blur,\n closeConditional: this.closeConditional,\n include: () => this.getOpenDependentElements(),\n },\n }] : undefined\n },\n dynamicHeight () {\n return 'auto'\n },\n hasChips (): boolean {\n return this.chips || this.smallChips\n },\n hasSlot (): boolean {\n return Boolean(this.hasChips || this.$scopedSlots.selection)\n },\n isDirty (): boolean {\n return this.selectedItems.length > 0\n },\n listData (): object {\n const scopeId = this.$vnode && (this.$vnode.context!.$options as { [key: string]: any })._scopeId\n const attrs = scopeId ? {\n [scopeId]: true,\n } : {}\n\n return {\n attrs: {\n ...attrs,\n id: this.computedOwns,\n },\n props: {\n action: this.multiple,\n color: this.itemColor,\n dense: this.dense,\n hideSelected: this.hideSelected,\n items: this.virtualizedItems,\n itemDisabled: this.itemDisabled,\n itemText: this.itemText,\n itemValue: this.itemValue,\n noDataText: this.$vuetify.lang.t(this.noDataText),\n selectedItems: this.selectedItems,\n },\n on: {\n select: this.selectItem,\n },\n scopedSlots: {\n item: this.$scopedSlots.item,\n },\n }\n },\n staticList (): VNode {\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n consoleError('assert: staticList should not be called if slots are used')\n }\n\n return this.$createElement(VSelectList, this.listData)\n },\n virtualizedItems (): object[] {\n return (this.$_menuProps as any).auto\n ? this.computedItems\n : this.computedItems.slice(0, this.lastItem)\n },\n menuCanShow: () => true,\n $_menuProps (): object {\n let normalisedProps = typeof this.menuProps === 'string'\n ? this.menuProps.split(',')\n : this.menuProps\n\n if (Array.isArray(normalisedProps)) {\n normalisedProps = normalisedProps.reduce((acc, p) => {\n acc[p.trim()] = true\n return acc\n }, {})\n }\n\n return {\n ...defaultMenuProps,\n eager: this.eager,\n value: this.menuCanShow && this.isMenuActive,\n nudgeBottom: normalisedProps.offsetY ? 1 : 0, // convert to int\n ...normalisedProps,\n }\n },\n },\n\n watch: {\n internalValue (val) {\n this.initialValue = val\n this.setSelectedItems()\n\n if (this.multiple) {\n this.$nextTick(() => {\n this.$refs.menu?.updateDimensions()\n })\n }\n },\n isMenuActive (val) {\n window.setTimeout(() => this.onMenuActiveChange(val))\n },\n items: {\n immediate: true,\n handler (val) {\n if (this.cacheItems) {\n // Breaks vue-test-utils if\n // this isn't calculated\n // on the next tick\n this.$nextTick(() => {\n this.cachedItems = this.filterDuplicates(this.cachedItems.concat(val))\n })\n }\n\n this.setSelectedItems()\n },\n },\n },\n\n methods: {\n /** @public */\n blur (e?: Event) {\n VTextField.options.methods.blur.call(this, e)\n this.isMenuActive = false\n this.isFocused = false\n this.selectedIndex = -1\n this.setMenuIndex(-1)\n },\n /** @public */\n activateMenu () {\n if (\n !this.isInteractive ||\n this.isMenuActive\n ) return\n\n this.isMenuActive = true\n },\n clearableCallback () {\n this.setValue(this.multiple ? [] : null)\n this.setMenuIndex(-1)\n this.$nextTick(() => this.$refs.input && this.$refs.input.focus())\n\n if (this.openOnClear) this.isMenuActive = true\n },\n closeConditional (e: Event) {\n if (!this.isMenuActive) return true\n\n return (\n !this._isDestroyed &&\n\n // Click originates from outside the menu content\n // Multiple selects don't close when an item is clicked\n (!this.getContent() ||\n !this.getContent().contains(e.target as Node)) &&\n\n // Click originates from outside the element\n this.$el &&\n !this.$el.contains(e.target as Node) &&\n e.target !== this.$el\n )\n },\n filterDuplicates (arr: any[]) {\n const uniqueValues = new Map()\n for (let index = 0; index < arr.length; ++index) {\n const item = arr[index]\n\n // Do not return null values if existant (#14421)\n if (item == null) {\n continue\n }\n // Do not deduplicate headers or dividers (#12517)\n if (item.header || item.divider) {\n uniqueValues.set(item, item)\n continue\n }\n\n const val = this.getValue(item)\n\n // TODO: comparator\n !uniqueValues.has(val) && uniqueValues.set(val, item)\n }\n return Array.from(uniqueValues.values())\n },\n findExistingIndex (item: object) {\n const itemValue = this.getValue(item)\n\n return (this.internalValue || []).findIndex((i: object) => this.valueComparator(this.getValue(i), itemValue))\n },\n getContent () {\n return this.$refs.menu && this.$refs.menu.$refs.content\n },\n genChipSelection (item: object, index: number) {\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n const isInteractive = !isDisabled && this.isInteractive\n\n return this.$createElement(VChip, {\n staticClass: 'v-chip--select',\n attrs: { tabindex: -1 },\n props: {\n close: this.deletableChips && isInteractive,\n disabled: isDisabled,\n inputValue: index === this.selectedIndex,\n small: this.smallChips,\n },\n on: {\n click: (e: MouseEvent) => {\n if (!isInteractive) return\n\n e.stopPropagation()\n\n this.selectedIndex = index\n },\n 'click:close': () => this.onChipInput(item),\n },\n key: JSON.stringify(this.getValue(item)),\n }, this.getText(item))\n },\n genCommaSelection (item: object, index: number, last: boolean) {\n const color = index === this.selectedIndex && this.computedColor\n const isDisabled = (\n this.isDisabled ||\n this.getDisabled(item)\n )\n\n return this.$createElement('div', this.setTextColor(color, {\n staticClass: 'v-select__selection v-select__selection--comma',\n class: {\n 'v-select__selection--disabled': isDisabled,\n },\n key: JSON.stringify(this.getValue(item)),\n }), `${this.getText(item)}${last ? '' : ', '}`)\n },\n genDefaultSlot (): (VNode | VNode[] | null)[] {\n const selections = this.genSelections()\n const input = this.genInput()\n\n // If the return is an empty array\n // push the input\n if (Array.isArray(selections)) {\n selections.push(input)\n // Otherwise push it into children\n } else {\n selections.children = selections.children || []\n selections.children.push(input)\n }\n\n return [\n this.genFieldset(),\n this.$createElement('div', {\n staticClass: 'v-select__slot',\n directives: this.directives,\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n selections,\n this.suffix ? this.genAffix('suffix') : null,\n this.genClearIcon(),\n this.genIconSlot(),\n this.genHiddenInput(),\n ]),\n this.genMenu(),\n this.genProgress(),\n ]\n },\n genIcon (\n type: string,\n cb?: (e: Event) => void,\n extraData?: VNodeData\n ) {\n const icon = VInput.options.methods.genIcon.call(this, type, cb, extraData)\n\n if (type === 'append') {\n // Don't allow the dropdown icon to be focused\n icon.children![0].data = mergeData(icon.children![0].data!, {\n attrs: {\n tabindex: icon.children![0].componentOptions!.listeners && '-1',\n 'aria-hidden': 'true',\n 'aria-label': undefined,\n },\n })\n }\n\n return icon\n },\n genInput (): VNode {\n const input = VTextField.options.methods.genInput.call(this)\n\n delete input.data!.attrs!.name\n\n input.data = mergeData(input.data!, {\n domProps: { value: null },\n attrs: {\n readonly: true,\n type: 'text',\n 'aria-readonly': String(this.isReadonly),\n 'aria-activedescendant': getObjectValueByPath(this.$refs.menu, 'activeTile.id'),\n autocomplete: getObjectValueByPath(input.data!, 'attrs.autocomplete', 'off'),\n placeholder: (!this.isDirty && (this.persistentPlaceholder || this.isFocused || !this.hasLabel)) ? this.placeholder : undefined,\n },\n on: { keypress: this.onKeyPress },\n })\n\n return input\n },\n genHiddenInput (): VNode {\n return this.$createElement('input', {\n domProps: { value: this.lazyValue },\n attrs: {\n type: 'hidden',\n name: this.attrs$.name,\n },\n })\n },\n genInputSlot (): VNode {\n const render = VTextField.options.methods.genInputSlot.call(this)\n\n render.data!.attrs = {\n ...render.data!.attrs,\n role: 'button',\n 'aria-haspopup': 'listbox',\n 'aria-expanded': String(this.isMenuActive),\n 'aria-owns': this.computedOwns,\n }\n\n return render\n },\n genList (): VNode {\n // If there's no slots, we can use a cached VNode to improve performance\n if (this.$slots['no-data'] || this.$slots['prepend-item'] || this.$slots['append-item']) {\n return this.genListWithSlot()\n } else {\n return this.staticList\n }\n },\n genListWithSlot (): VNode {\n const slots = ['prepend-item', 'no-data', 'append-item']\n .filter(slotName => this.$slots[slotName])\n .map(slotName => this.$createElement('template', {\n slot: slotName,\n }, this.$slots[slotName]))\n // Requires destructuring due to Vue\n // modifying the `on` property when passed\n // as a referenced object\n return this.$createElement(VSelectList, {\n ...this.listData,\n }, slots)\n },\n genMenu (): VNode {\n const props = this.$_menuProps as any\n props.activator = this.$refs['input-slot']\n\n // Attach to root el so that\n // menu covers prepend/append icons\n if (\n // TODO: make this a computed property or helper or something\n this.attach === '' || // If used as a boolean prop ()\n this.attach === true || // If bound to a boolean ()\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) {\n props.attach = this.$el\n } else {\n props.attach = this.attach\n }\n\n return this.$createElement(VMenu, {\n attrs: { role: undefined },\n props,\n on: {\n input: (val: boolean) => {\n this.isMenuActive = val\n this.isFocused = val\n },\n scroll: this.onScroll,\n },\n ref: 'menu',\n }, [this.genList()])\n },\n genSelections (): VNode {\n let length = this.selectedItems.length\n const children = new Array(length)\n\n let genSelection\n if (this.$scopedSlots.selection) {\n genSelection = this.genSlotSelection\n } else if (this.hasChips) {\n genSelection = this.genChipSelection\n } else {\n genSelection = this.genCommaSelection\n }\n\n while (length--) {\n children[length] = genSelection(\n this.selectedItems[length],\n length,\n length === children.length - 1\n )\n }\n\n return this.$createElement('div', {\n staticClass: 'v-select__selections',\n }, children)\n },\n genSlotSelection (item: object, index: number): VNode[] | undefined {\n return this.$scopedSlots.selection!({\n attrs: {\n class: 'v-chip--select',\n },\n parent: this,\n item,\n index,\n select: (e: Event) => {\n e.stopPropagation()\n this.selectedIndex = index\n },\n selected: index === this.selectedIndex,\n disabled: !this.isInteractive,\n })\n },\n getMenuIndex () {\n return this.$refs.menu ? (this.$refs.menu as { [key: string]: any }).listIndex : -1\n },\n getDisabled (item: object) {\n return getPropertyFromItem(item, this.itemDisabled, false)\n },\n getText (item: object) {\n return getPropertyFromItem(item, this.itemText, item)\n },\n getValue (item: object) {\n return getPropertyFromItem(item, this.itemValue, this.getText(item))\n },\n onBlur (e?: Event) {\n e && this.$emit('blur', e)\n },\n onChipInput (item: object) {\n if (this.multiple) this.selectItem(item)\n else this.setValue(null)\n // If all items have been deleted,\n // open `v-menu`\n if (this.selectedItems.length === 0) {\n this.isMenuActive = true\n } else {\n this.isMenuActive = false\n }\n this.selectedIndex = -1\n },\n onClick (e: MouseEvent) {\n if (!this.isInteractive) return\n\n if (!this.isAppendInner(e.target)) {\n this.isMenuActive = true\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n this.$emit('focus')\n }\n\n this.$emit('click', e)\n },\n onEscDown (e: Event) {\n e.preventDefault()\n if (this.isMenuActive) {\n e.stopPropagation()\n this.isMenuActive = false\n }\n },\n onKeyPress (e: KeyboardEvent) {\n if (\n this.multiple ||\n !this.isInteractive ||\n this.disableLookup\n ) return\n\n const KEYBOARD_LOOKUP_THRESHOLD = 1000 // milliseconds\n const now = performance.now()\n if (now - this.keyboardLookupLastTime > KEYBOARD_LOOKUP_THRESHOLD) {\n this.keyboardLookupPrefix = ''\n }\n this.keyboardLookupPrefix += e.key.toLowerCase()\n this.keyboardLookupLastTime = now\n\n const index = this.allItems.findIndex(item => {\n const text = (this.getText(item) || '').toString()\n\n return text.toLowerCase().startsWith(this.keyboardLookupPrefix)\n })\n const item = this.allItems[index]\n if (index !== -1) {\n this.lastItem = Math.max(this.lastItem, index + 5)\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.isReadonly && e.keyCode !== keyCodes.tab) return\n\n const keyCode = e.keyCode\n const menu = this.$refs.menu\n\n this.$emit('keydown', e)\n\n if (!menu) return\n\n // If menu is active, allow default\n // listIndex change from menu\n if (this.isMenuActive && [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end, keyCodes.enter].includes(keyCode)) {\n this.$nextTick(() => {\n menu.changeListIndex(e)\n this.$emit('update:list-index', menu.listIndex)\n })\n }\n\n // If enter, space, open menu\n if ([\n keyCodes.enter,\n keyCodes.space,\n ].includes(keyCode)) this.activateMenu()\n\n // If menu is not active, up/down/home/end can do\n // one of 2 things. If multiple, opens the\n // menu, if not, will cycle through all\n // available options\n if (\n !this.isMenuActive &&\n [keyCodes.up, keyCodes.down, keyCodes.home, keyCodes.end].includes(keyCode)\n ) return this.onUpDown(e)\n\n // If escape deactivate the menu\n if (keyCode === keyCodes.esc) return this.onEscDown(e)\n\n // If tab - select item or close menu\n if (keyCode === keyCodes.tab) return this.onTabDown(e)\n\n // If space preventDefault\n if (keyCode === keyCodes.space) return this.onSpaceDown(e)\n },\n onMenuActiveChange (val: boolean) {\n // If menu is closing and mulitple\n // or menuIndex is already set\n // skip menu index recalculation\n if (\n (this.multiple && !val) ||\n this.getMenuIndex() > -1\n ) return\n\n const menu = this.$refs.menu\n\n if (!menu || !this.isDirty) return\n\n // When menu opens, set index of first active item\n this.$refs.menu.getTiles()\n for (let i = 0; i < menu.tiles.length; i++) {\n if (menu.tiles[i].getAttribute('aria-selected') === 'true') {\n this.setMenuIndex(i)\n break\n }\n }\n },\n onMouseUp (e: MouseEvent) {\n // eslint-disable-next-line sonarjs/no-collapsible-if\n if (\n this.hasMouseDown &&\n e.which !== 3 &&\n this.isInteractive\n ) {\n // If append inner is present\n // and the target is itself\n // or inside, toggle menu\n if (this.isAppendInner(e.target)) {\n this.$nextTick(() => (this.isMenuActive = !this.isMenuActive))\n }\n }\n\n VTextField.options.methods.onMouseUp.call(this, e)\n },\n onScroll () {\n if (!this.isMenuActive) {\n requestAnimationFrame(() => (this.getContent().scrollTop = 0))\n } else {\n if (this.lastItem > this.computedItems.length) return\n\n const showMoreItems = (\n this.getContent().scrollHeight -\n (this.getContent().scrollTop +\n this.getContent().clientHeight)\n ) < 200\n\n if (showMoreItems) {\n this.lastItem += 20\n }\n }\n },\n onSpaceDown (e: KeyboardEvent) {\n e.preventDefault()\n },\n onTabDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n const activeTile = menu.activeTile\n\n // An item that is selected by\n // menu-index should toggled\n if (\n !this.multiple &&\n activeTile &&\n this.isMenuActive\n ) {\n e.preventDefault()\n e.stopPropagation()\n\n activeTile.click()\n } else {\n // If we make it here,\n // the user has no selected indexes\n // and is probably tabbing out\n this.blur(e)\n }\n },\n onUpDown (e: KeyboardEvent) {\n const menu = this.$refs.menu\n\n if (!menu) return\n\n e.preventDefault()\n\n // Multiple selects do not cycle their value\n // when pressing up or down, instead activate\n // the menu\n if (this.multiple) return this.activateMenu()\n\n const keyCode = e.keyCode\n\n // Cycle through available values to achieve\n // select native behavior\n menu.isBooted = true\n\n window.requestAnimationFrame(() => {\n menu.getTiles()\n\n if (!menu.hasClickableTiles) return this.activateMenu()\n\n switch (keyCode) {\n case keyCodes.up:\n menu.prevTile()\n break\n case keyCodes.down:\n menu.nextTile()\n break\n case keyCodes.home:\n menu.firstTile()\n break\n case keyCodes.end:\n menu.lastTile()\n break\n }\n this.selectItem(this.allItems[this.getMenuIndex()])\n })\n },\n selectItem (item: object) {\n if (!this.multiple) {\n this.setValue(this.returnObject ? item : this.getValue(item))\n this.isMenuActive = false\n } else {\n const internalValue = (this.internalValue || []).slice()\n const i = this.findExistingIndex(item)\n\n i !== -1 ? internalValue.splice(i, 1) : internalValue.push(item)\n this.setValue(internalValue.map((i: object) => {\n return this.returnObject ? i : this.getValue(i)\n }))\n\n // There is no item to re-highlight\n // when selections are hidden\n if (this.hideSelected) {\n this.setMenuIndex(-1)\n } else {\n const index = this.allItems.indexOf(item)\n if (~index) {\n this.$nextTick(() => this.$refs.menu.getTiles())\n setTimeout(() => this.setMenuIndex(index))\n }\n }\n }\n },\n setMenuIndex (index: number) {\n this.$refs.menu && ((this.$refs.menu as { [key: string]: any }).listIndex = index)\n },\n setSelectedItems () {\n const selectedItems = []\n const values = !this.multiple || !Array.isArray(this.internalValue)\n ? [this.internalValue]\n : this.internalValue\n\n for (const value of values) {\n const index = this.allItems.findIndex(v => this.valueComparator(\n this.getValue(v),\n this.getValue(value)\n ))\n\n if (index > -1) {\n selectedItems.push(this.allItems[index])\n }\n }\n\n this.selectedItems = selectedItems\n },\n setValue (value: any) {\n if (!this.valueComparator(value, this.internalValue)) {\n this.internalValue = value\n this.$emit('change', value)\n }\n },\n isAppendInner (target: any) {\n // return true if append inner is present\n // and the target is itself or inside\n const appendInner = this.$refs['append-inner']\n\n return appendInner && (appendInner === target || appendInner.contains(target))\n },\n },\n})\n","// Styles\nimport './VSheet.sass'\n\n// Mixins\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport Colorable from '../../mixins/colorable'\nimport Elevatable from '../../mixins/elevatable'\nimport Measurable from '../../mixins/measurable'\nimport Roundable from '../../mixins/roundable'\nimport Themeable from '../../mixins/themeable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n Colorable,\n Elevatable,\n Measurable,\n Roundable,\n Themeable\n).extend({\n name: 'v-sheet',\n\n props: {\n outlined: Boolean,\n shaped: Boolean,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-sheet': true,\n 'v-sheet--outlined': this.outlined,\n 'v-sheet--shaped': this.shaped,\n ...this.themeClasses,\n ...this.elevationClasses,\n ...this.roundedClasses,\n }\n },\n styles (): object {\n return this.measurableStyles\n },\n },\n\n render (h): VNode {\n const data = {\n class: this.classes,\n style: this.styles,\n on: this.listeners$,\n }\n\n return h(\n this.tag,\n this.setBackgroundColor(this.color, data),\n this.$slots.default\n )\n },\n})\n","import VSheet from './VSheet'\n\nexport { VSheet }\nexport default VSheet\n","// Styles\nimport './VStepper.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VStepperStep from './VStepperStep'\nimport VStepperContent from './VStepperContent'\n\n// Mixins\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\nimport Proxyable from '../../mixins/proxyable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n VSheet,\n RegistrableProvide('stepper'),\n Proxyable,\n)\n\ntype VStepperStepInstance = InstanceType\ntype VStepperContentInstance = InstanceType\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-stepper',\n\n provide (): object {\n return {\n stepClick: this.stepClick,\n isVertical: this.vertical,\n }\n },\n\n props: {\n altLabels: Boolean,\n nonLinear: Boolean,\n flat: Boolean,\n vertical: Boolean,\n },\n\n data () {\n const data: Dictionary = {\n isBooted: false,\n steps: [] as VStepperStepInstance[],\n content: [] as VStepperContentInstance[],\n isReverse: false,\n }\n\n data.internalLazyValue = this.value != null\n ? this.value\n : (data[0] || {}).step || 1\n\n return data\n },\n\n computed: {\n classes (): object {\n return {\n 'v-stepper--flat': this.flat,\n 'v-stepper--is-booted': this.isBooted,\n 'v-stepper--vertical': this.vertical,\n 'v-stepper--alt-labels': this.altLabels,\n 'v-stepper--non-linear': this.nonLinear,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n return {\n ...VSheet.options.computed.styles.call(this),\n }\n },\n },\n\n watch: {\n internalValue (val, oldVal) {\n this.isReverse = Number(val) < Number(oldVal)\n\n oldVal && (this.isBooted = true)\n\n this.updateView()\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$listeners.input) {\n breaking('@input', '@change', this)\n }\n },\n\n mounted () {\n this.updateView()\n },\n\n methods: {\n register (item: VStepperStepInstance | VStepperContentInstance) {\n if (item.$options.name === 'v-stepper-step') {\n this.steps.push(item as VStepperStepInstance)\n } else if (item.$options.name === 'v-stepper-content') {\n (item as VStepperContentInstance).isVertical = this.vertical\n this.content.push(item as VStepperContentInstance)\n }\n },\n unregister (item: VStepperStepInstance | VStepperContentInstance) {\n if (item.$options.name === 'v-stepper-step') {\n this.steps = this.steps.filter((i: VStepperStepInstance) => i !== item)\n } else if (item.$options.name === 'v-stepper-content') {\n (item as VStepperContentInstance).isVertical = this.vertical\n this.content = this.content.filter((i: VStepperContentInstance) => i !== item)\n }\n },\n stepClick (step: string | number) {\n this.$nextTick(() => (this.internalValue = step))\n },\n updateView () {\n for (let index = this.steps.length; --index >= 0;) {\n this.steps[index].toggle(this.internalValue as any)\n }\n for (let index = this.content.length; --index >= 0;) {\n this.content[index].toggle(this.internalValue as any, this.isReverse)\n }\n },\n },\n\n render (h): VNode {\n return h(this.tag, {\n staticClass: 'v-stepper',\n class: this.classes,\n style: this.styles,\n }, this.$slots.default)\n },\n})\n","// Components\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode } from 'vue'\nimport { PropValidator } from 'vue/types/options'\n\ntype VuetifyStepperRuleValidator = () => string | boolean\n\nconst baseMixins = mixins(\n Colorable,\n RegistrableInject('stepper', 'v-stepper-step', 'v-stepper')\n)\n\ninterface options extends InstanceType {\n stepClick: (step: number | string) => void\n}\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-stepper-step',\n\n directives: { ripple },\n\n inject: ['stepClick'],\n\n props: {\n color: {\n type: String,\n default: 'primary',\n },\n complete: Boolean,\n completeIcon: {\n type: String,\n default: '$complete',\n },\n editable: Boolean,\n editIcon: {\n type: String,\n default: '$edit',\n },\n errorIcon: {\n type: String,\n default: '$error',\n },\n rules: {\n type: Array,\n default: () => [],\n } as PropValidator,\n step: [Number, String],\n },\n\n data () {\n return {\n isActive: false,\n isInactive: true,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-stepper__step--active': this.isActive,\n 'v-stepper__step--editable': this.editable,\n 'v-stepper__step--inactive': this.isInactive,\n 'v-stepper__step--error error--text': this.hasError,\n 'v-stepper__step--complete': this.complete,\n }\n },\n hasError (): boolean {\n return this.rules.some(validate => validate() !== true)\n },\n },\n\n mounted () {\n this.stepper && this.stepper.register(this)\n },\n\n beforeDestroy () {\n this.stepper && this.stepper.unregister(this)\n },\n\n methods: {\n click (e: MouseEvent | KeyboardEvent) {\n e.stopPropagation()\n\n this.$emit('click', e)\n\n if (this.editable) {\n this.stepClick(this.step)\n }\n },\n genIcon (icon: string) {\n return this.$createElement(VIcon, icon)\n },\n genLabel () {\n return this.$createElement('div', {\n staticClass: 'v-stepper__label',\n }, this.$slots.default)\n },\n genStep () {\n const color = (!this.hasError && (this.complete || this.isActive)) ? this.color : false\n\n return this.$createElement('span', this.setBackgroundColor(color, {\n staticClass: 'v-stepper__step__step',\n }), this.genStepContent())\n },\n genStepContent () {\n const children = []\n\n if (this.hasError) {\n children.push(this.genIcon(this.errorIcon))\n } else if (this.complete) {\n if (this.editable) {\n children.push(this.genIcon(this.editIcon))\n } else {\n children.push(this.genIcon(this.completeIcon))\n }\n } else {\n children.push(String(this.step))\n }\n\n return children\n },\n keyboardClick (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.space) {\n this.click(e)\n }\n },\n toggle (step: number | string) {\n this.isActive = step.toString() === this.step.toString()\n this.isInactive = Number(step) < Number(this.step)\n },\n },\n\n render (h): VNode {\n return h('div', {\n attrs: {\n tabindex: this.editable ? 0 : -1,\n },\n staticClass: 'v-stepper__step',\n class: this.classes,\n directives: [{\n name: 'ripple',\n value: this.editable,\n }],\n on: {\n click: this.click,\n keydown: this.keyboardClick,\n },\n }, [\n this.genStep(),\n this.genLabel(),\n ])\n },\n})\n","// Components\nimport {\n VTabTransition,\n VTabReverseTransition,\n} from '../transitions'\n\n// Mixins\nimport { inject as RegistrableInject } from '../../mixins/registrable'\n\n// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode, FunctionalComponentOptions, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n RegistrableInject('stepper', 'v-stepper-content', 'v-stepper')\n)\n\ninterface options extends InstanceType {\n $refs: {\n wrapper: HTMLElement\n }\n isVerticalProvided: boolean\n}\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-stepper-content',\n\n inject: {\n isVerticalProvided: {\n from: 'isVertical',\n },\n },\n\n props: {\n step: {\n type: [Number, String],\n required: true,\n },\n },\n\n data () {\n return {\n height: 0 as number | string,\n // Must be null to allow\n // previous comparison\n isActive: null as boolean | null,\n isReverse: false,\n isVertical: this.isVerticalProvided,\n }\n },\n\n computed: {\n computedTransition (): FunctionalComponentOptions {\n // Fix for #8978\n const reverse = this.$vuetify.rtl ? !this.isReverse : this.isReverse\n\n return reverse\n ? VTabReverseTransition\n : VTabTransition\n },\n styles (): object {\n if (!this.isVertical) return {}\n\n return {\n height: convertToUnit(this.height),\n }\n },\n },\n\n watch: {\n isActive (current, previous) {\n // If active and the previous state\n // was null, is just booting up\n if (current && previous == null) {\n this.height = 'auto'\n return\n }\n\n if (!this.isVertical) return\n\n if (this.isActive) this.enter()\n else this.leave()\n },\n },\n\n mounted () {\n this.$refs.wrapper.addEventListener(\n 'transitionend',\n this.onTransition,\n false\n )\n this.stepper && this.stepper.register(this)\n },\n\n beforeDestroy () {\n this.$refs.wrapper.removeEventListener(\n 'transitionend',\n this.onTransition,\n false\n )\n this.stepper && this.stepper.unregister(this)\n },\n\n methods: {\n onTransition (e: TransitionEvent) {\n if (!this.isActive ||\n e.propertyName !== 'height'\n ) return\n\n this.height = 'auto'\n },\n enter () {\n let scrollHeight = 0\n\n // Render bug with height\n requestAnimationFrame(() => {\n scrollHeight = this.$refs.wrapper.scrollHeight\n })\n\n this.height = 0\n\n // Give the collapsing element time to collapse\n setTimeout(() => this.isActive && (this.height = (scrollHeight || 'auto')), 450)\n },\n leave () {\n this.height = this.$refs.wrapper.clientHeight\n setTimeout(() => (this.height = 0), 10)\n },\n toggle (step: string | number, reverse: boolean) {\n this.isActive = step.toString() === this.step.toString()\n this.isReverse = reverse\n },\n },\n\n render (h): VNode {\n const contentData = {\n staticClass: 'v-stepper__content',\n } as VNodeData\n const wrapperData = {\n staticClass: 'v-stepper__wrapper',\n style: this.styles,\n ref: 'wrapper',\n }\n\n if (!this.isVertical) {\n contentData.directives = [{\n name: 'show',\n value: this.isActive,\n }]\n }\n\n const wrapper = h('div', wrapperData, [this.$slots.default])\n const content = h('div', contentData, [wrapper])\n\n return h(this.computedTransition, {\n on: this.$listeners,\n }, [content])\n },\n})\n","import { createSimpleFunctional } from '../../util/helpers'\nimport VStepper from './VStepper'\nimport VStepperStep from './VStepperStep'\nimport VStepperContent from './VStepperContent'\n\nconst VStepperHeader = createSimpleFunctional('v-stepper__header')\nconst VStepperItems = createSimpleFunctional('v-stepper__items')\n\nexport {\n VStepper,\n VStepperContent,\n VStepperStep,\n VStepperHeader,\n VStepperItems,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VStepper,\n VStepperContent,\n VStepperStep,\n VStepperHeader,\n VStepperItems,\n },\n}\n","// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'\nimport Routable from '../../mixins/routable'\nimport Themeable from '../../mixins/themeable'\n\n// Utilities\nimport { keyCodes } from './../../util/helpers'\nimport mixins from '../../util/mixins'\nimport { ExtractVue } from './../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\n// Components\nimport VTabsBar from '../VTabs/VTabsBar'\n\nconst baseMixins = mixins(\n Routable,\n // Must be after routable\n // to overwrite activeClass\n GroupableFactory('tabsBar'),\n Themeable\n)\n\ntype VTabBarInstance = InstanceType\n\ninterface options extends ExtractVue {\n $el: HTMLElement\n tabsBar: VTabBarInstance\n}\n\nexport default baseMixins.extend().extend(\n /* @vue/component */\n).extend({\n name: 'v-tab',\n\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true,\n },\n },\n\n data: () => ({\n proxyClass: 'v-tab--active',\n }),\n\n computed: {\n classes (): object {\n return {\n 'v-tab': true,\n ...Routable.options.computed.classes.call(this),\n 'v-tab--disabled': this.disabled,\n ...this.groupClasses,\n }\n },\n value (): any {\n let to = this.to || this.href\n\n if (to == null) return to\n\n if (this.$router &&\n this.to === Object(this.to)\n ) {\n const resolve = this.$router.resolve(\n this.to,\n this.$route,\n this.append\n )\n\n to = resolve.href\n }\n\n return to.replace('#', '')\n },\n },\n\n methods: {\n click (e: KeyboardEvent | MouseEvent): void {\n // Prevent keyboard actions\n // from children elements\n // within disabled tabs\n if (this.disabled) {\n e.preventDefault()\n return\n }\n\n // If user provides an\n // actual link, do not\n // prevent default\n if (this.href &&\n this.href.indexOf('#') > -1\n ) e.preventDefault()\n\n if (e.detail) this.$el.blur()\n\n this.$emit('click', e)\n\n this.to || this.toggle()\n },\n toggle () {\n // VItemGroup treats a change event as a click\n if (!this.isActive || (!this.tabsBar.mandatory && !this.to)) {\n this.$emit('change')\n }\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.attrs = {\n ...data.attrs,\n 'aria-selected': String(this.isActive),\n role: 'tab',\n tabindex: this.disabled ? -1 : 0,\n }\n data.on = {\n ...data.on,\n keydown: (e: KeyboardEvent) => {\n if (e.keyCode === keyCodes.enter) this.click(e)\n\n this.$emit('keydown', e)\n },\n }\n\n return h(tag, data, this.$slots.default)\n },\n})\n","// Styles\nimport './VSlideGroup.sass'\n\n// Components\nimport VIcon from '../VIcon'\nimport { VFadeTransition } from '../transitions'\n\n// Extensions\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n// Mixins\nimport Mobile from '../../mixins/mobile'\n\n// Directives\nimport Resize from '../../directives/resize'\nimport Touch from '../../directives/touch'\n\n// Utilities\nimport mixins, { ExtractVue } from '../../util/mixins'\n\n// Types\nimport Vue, { VNode } from 'vue'\nimport { composedPath } from '../../util/helpers'\n\ninterface TouchEvent {\n touchstartX: number\n touchstartY: number\n touchmoveX: number\n touchmoveY: number\n stopPropagation: Function\n}\n\ninterface Widths {\n content: number\n wrapper: number\n}\n\ninterface options extends Vue {\n $refs: {\n content: HTMLElement\n wrapper: HTMLElement\n }\n}\n\nfunction bias (val: number) {\n const c = 0.501\n const x = Math.abs(val)\n return Math.sign(val) * (x / ((1 / c - 2) * (1 - x) + 1))\n}\n\nexport function calculateUpdatedOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean,\n currentScrollOffset: number\n): number {\n const clientWidth = selectedElement.clientWidth\n const offsetLeft = rtl\n ? (widths.content - selectedElement.offsetLeft - clientWidth)\n : selectedElement.offsetLeft\n\n if (rtl) {\n currentScrollOffset = -currentScrollOffset\n }\n\n const totalWidth = widths.wrapper + currentScrollOffset\n const itemOffset = clientWidth + offsetLeft\n const additionalOffset = clientWidth * 0.4\n\n if (offsetLeft <= currentScrollOffset) {\n currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0)\n } else if (totalWidth <= itemOffset) {\n currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper)\n }\n\n return rtl ? -currentScrollOffset : currentScrollOffset\n}\n\nexport function calculateCenteredOffset (\n selectedElement: HTMLElement,\n widths: Widths,\n rtl: boolean\n): number {\n const { offsetLeft, clientWidth } = selectedElement\n\n if (rtl) {\n const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2\n return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n } else {\n const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2\n return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered))\n }\n}\n\nexport const BaseSlideGroup = mixins\n/* eslint-enable indent */\n>(\n BaseItemGroup,\n Mobile,\n /* @vue/component */\n).extend({\n name: 'base-slide-group',\n\n directives: {\n Resize,\n Touch,\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-slide-item--active',\n },\n centerActive: Boolean,\n nextIcon: {\n type: String,\n default: '$next',\n },\n prevIcon: {\n type: String,\n default: '$prev',\n },\n showArrows: {\n type: [Boolean, String],\n validator: v => (\n typeof v === 'boolean' || [\n 'always',\n 'desktop',\n 'mobile',\n ].includes(v)\n ),\n },\n },\n\n data: () => ({\n internalItemsLength: 0,\n isOverflowing: false,\n resizeTimeout: 0,\n startX: 0,\n isSwipingHorizontal: false,\n isSwiping: false,\n scrollOffset: 0,\n widths: {\n content: 0,\n wrapper: 0,\n },\n }),\n\n computed: {\n canTouch (): boolean {\n return typeof window !== 'undefined'\n },\n __cachedNext (): VNode {\n return this.genTransition('next')\n },\n __cachedPrev (): VNode {\n return this.genTransition('prev')\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-slide-group': true,\n 'v-slide-group--has-affixes': this.hasAffixes,\n 'v-slide-group--is-overflowing': this.isOverflowing,\n }\n },\n hasAffixes (): Boolean {\n switch (this.showArrows) {\n // Always show arrows on desktop & mobile\n case 'always': return true\n\n // Always show arrows on desktop\n case 'desktop': return !this.isMobile\n\n // Show arrows on mobile when overflowing.\n // This matches the default 2.2 behavior\n case true: return this.isOverflowing || Math.abs(this.scrollOffset) > 0\n\n // Always show on mobile\n case 'mobile': return (\n this.isMobile ||\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n\n // https://material.io/components/tabs#scrollable-tabs\n // Always show arrows when\n // overflowed on desktop\n default: return (\n !this.isMobile &&\n (this.isOverflowing || Math.abs(this.scrollOffset) > 0)\n )\n }\n },\n hasNext (): boolean {\n if (!this.hasAffixes) return false\n\n const { content, wrapper } = this.widths\n\n // Check one scroll ahead to know the width of right-most item\n return content > Math.abs(this.scrollOffset) + wrapper\n },\n hasPrev (): boolean {\n return this.hasAffixes && this.scrollOffset !== 0\n },\n },\n\n watch: {\n internalValue: 'setWidths',\n // When overflow changes, the arrows alter\n // the widths of the content and wrapper\n // and need to be recalculated\n isOverflowing: 'setWidths',\n scrollOffset (val) {\n if (this.$vuetify.rtl) val = -val\n\n let scroll =\n val <= 0\n ? bias(-val)\n : val > this.widths.content - this.widths.wrapper\n ? -(this.widths.content - this.widths.wrapper) + bias(this.widths.content - this.widths.wrapper - val)\n : -val\n\n if (this.$vuetify.rtl) scroll = -scroll\n\n this.$refs.content.style.transform = `translateX(${scroll}px)`\n },\n },\n\n beforeUpdate () {\n this.internalItemsLength = (this.$children || []).length\n },\n\n updated () {\n if (this.internalItemsLength === (this.$children || []).length) return\n this.setWidths()\n },\n\n methods: {\n onScroll () {\n this.$refs.wrapper.scrollLeft = 0\n },\n onFocusin (e: FocusEvent) {\n if (!this.isOverflowing) return\n\n // Focused element is likely to be the root of an item, so a\n // breadth-first search will probably find it in the first iteration\n for (const el of composedPath(e)) {\n for (const vm of this.items) {\n if (vm.$el === el) {\n this.scrollOffset = calculateUpdatedOffset(\n vm.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n return\n }\n }\n }\n },\n // Always generate next for scrollable hint\n genNext (): VNode | null {\n const slot = this.$scopedSlots.next\n ? this.$scopedSlots.next({})\n : this.$slots.next || this.__cachedNext\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__next',\n class: {\n 'v-slide-group__next--disabled': !this.hasNext,\n },\n on: {\n click: () => this.onAffixClick('next'),\n },\n key: 'next',\n }, [slot])\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__content',\n ref: 'content',\n on: {\n focusin: this.onFocusin,\n },\n }, this.$slots.default)\n },\n genData (): object {\n return {\n class: this.classes,\n directives: [{\n name: 'resize',\n value: this.onResize,\n }],\n }\n },\n genIcon (location: 'prev' | 'next'): VNode | null {\n let icon = location\n\n if (this.$vuetify.rtl && location === 'prev') {\n icon = 'next'\n } else if (this.$vuetify.rtl && location === 'next') {\n icon = 'prev'\n }\n\n const upperLocation = `${location[0].toUpperCase()}${location.slice(1)}`\n const hasAffix = (this as any)[`has${upperLocation}`]\n\n if (\n !this.showArrows &&\n !hasAffix\n ) return null\n\n return this.$createElement(VIcon, {\n props: {\n disabled: !hasAffix,\n },\n }, (this as any)[`${icon}Icon`])\n },\n // Always generate prev for scrollable hint\n genPrev (): VNode | null {\n const slot = this.$scopedSlots.prev\n ? this.$scopedSlots.prev({})\n : this.$slots.prev || this.__cachedPrev\n\n return this.$createElement('div', {\n staticClass: 'v-slide-group__prev',\n class: {\n 'v-slide-group__prev--disabled': !this.hasPrev,\n },\n on: {\n click: () => this.onAffixClick('prev'),\n },\n key: 'prev',\n }, [slot])\n },\n genTransition (location: 'prev' | 'next') {\n return this.$createElement(VFadeTransition, [this.genIcon(location)])\n },\n genWrapper (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__wrapper',\n directives: [{\n name: 'touch',\n value: {\n start: (e: TouchEvent) => this.overflowCheck(e, this.onTouchStart),\n move: (e: TouchEvent) => this.overflowCheck(e, this.onTouchMove),\n end: (e: TouchEvent) => this.overflowCheck(e, this.onTouchEnd),\n },\n }],\n ref: 'wrapper',\n on: {\n scroll: this.onScroll,\n },\n }, [this.genContent()])\n },\n calculateNewOffset (direction: 'prev' | 'next', widths: Widths, rtl: boolean, currentScrollOffset: number) {\n const sign = rtl ? -1 : 1\n const newAbosluteOffset = sign * currentScrollOffset +\n (direction === 'prev' ? -1 : 1) * widths.wrapper\n\n return sign * Math.max(Math.min(newAbosluteOffset, widths.content - widths.wrapper), 0)\n },\n onAffixClick (location: 'prev' | 'next') {\n this.$emit(`click:${location}`)\n this.scrollTo(location)\n },\n onResize () {\n /* istanbul ignore next */\n if (this._isDestroyed) return\n\n this.setWidths()\n },\n onTouchStart (e: TouchEvent) {\n const { content } = this.$refs\n\n this.startX = this.scrollOffset + e.touchstartX as number\n\n content.style.setProperty('transition', 'none')\n content.style.setProperty('willChange', 'transform')\n },\n onTouchMove (e: TouchEvent) {\n if (!this.canTouch) return\n\n if (!this.isSwiping) {\n // only calculate disableSwipeHorizontal during the first onTouchMove invoke\n // in order to ensure disableSwipeHorizontal value is consistent between onTouchStart and onTouchEnd\n const diffX = e.touchmoveX - e.touchstartX\n const diffY = e.touchmoveY - e.touchstartY\n this.isSwipingHorizontal = Math.abs(diffX) > Math.abs(diffY)\n this.isSwiping = true\n }\n\n if (this.isSwipingHorizontal) {\n // sliding horizontally\n this.scrollOffset = this.startX - e.touchmoveX\n // temporarily disable window vertical scrolling\n document.documentElement.style.overflowY = 'hidden'\n }\n },\n onTouchEnd () {\n if (!this.canTouch) return\n\n const { content, wrapper } = this.$refs\n const maxScrollOffset = content.clientWidth - wrapper.clientWidth\n\n content.style.setProperty('transition', null)\n content.style.setProperty('willChange', null)\n\n if (this.$vuetify.rtl) {\n /* istanbul ignore else */\n if (this.scrollOffset > 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset <= -maxScrollOffset) {\n this.scrollOffset = -maxScrollOffset\n }\n } else {\n /* istanbul ignore else */\n if (this.scrollOffset < 0 || !this.isOverflowing) {\n this.scrollOffset = 0\n } else if (this.scrollOffset >= maxScrollOffset) {\n this.scrollOffset = maxScrollOffset\n }\n }\n\n this.isSwiping = false\n // rollback whole page scrolling to default\n document.documentElement.style.removeProperty('overflow-y')\n },\n overflowCheck (e: TouchEvent, fn: (e: TouchEvent) => void) {\n e.stopPropagation()\n this.isOverflowing && fn(e)\n },\n scrollIntoView /* istanbul ignore next */ () {\n if (!this.selectedItem && this.items.length) {\n const lastItemPosition = this.items[this.items.length - 1].$el.getBoundingClientRect()\n const wrapperPosition = this.$refs.wrapper.getBoundingClientRect()\n\n if (\n (this.$vuetify.rtl && wrapperPosition.right < lastItemPosition.right) ||\n (!this.$vuetify.rtl && wrapperPosition.left > lastItemPosition.left)\n ) {\n this.scrollTo('prev')\n }\n }\n\n if (!this.selectedItem) {\n return\n }\n\n if (\n this.selectedIndex === 0 ||\n (!this.centerActive && !this.isOverflowing)\n ) {\n this.scrollOffset = 0\n } else if (this.centerActive) {\n this.scrollOffset = calculateCenteredOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl\n )\n } else if (this.isOverflowing) {\n this.scrollOffset = calculateUpdatedOffset(\n this.selectedItem.$el as HTMLElement,\n this.widths,\n this.$vuetify.rtl,\n this.scrollOffset\n )\n }\n },\n scrollTo /* istanbul ignore next */ (location: 'prev' | 'next') {\n this.scrollOffset = this.calculateNewOffset(location, {\n // Force reflow\n content: this.$refs.content ? this.$refs.content.clientWidth : 0,\n wrapper: this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0,\n }, this.$vuetify.rtl, this.scrollOffset)\n },\n setWidths () {\n window.requestAnimationFrame(() => {\n if (this._isDestroyed) return\n\n const { content, wrapper } = this.$refs\n\n this.widths = {\n content: content ? content.clientWidth : 0,\n wrapper: wrapper ? wrapper.clientWidth : 0,\n }\n\n // https://github.com/vuetifyjs/vuetify/issues/13212\n // We add +1 to the wrappers width to prevent an issue where the `clientWidth`\n // gets calculated wrongly by the browser if using a different zoom-level.\n this.isOverflowing = this.widths.wrapper + 1 < this.widths.content\n\n this.scrollIntoView()\n })\n },\n },\n\n render (h): VNode {\n return h('div', this.genData(), [\n this.genPrev(),\n this.genWrapper(),\n this.genNext(),\n ])\n },\n})\n\nexport default BaseSlideGroup.extend({\n name: 'v-slide-group',\n\n provide (): object {\n return {\n slideGroup: this,\n }\n },\n})\n","// Extensions\nimport { BaseSlideGroup } from '../VSlideGroup/VSlideGroup'\n\n// Components\nimport VTab from './VTab'\n\n// Mixins\nimport Themeable from '../../mixins/themeable'\nimport SSRBootable from '../../mixins/ssr-bootable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { Route } from 'vue-router'\nimport { VNode } from 'vue'\n\ntype VTabInstance = InstanceType\n\nexport default mixins(\n BaseSlideGroup,\n SSRBootable,\n Themeable\n /* @vue/component */\n).extend({\n name: 'v-tabs-bar',\n\n provide () {\n return {\n tabsBar: this,\n }\n },\n\n computed: {\n classes () {\n return {\n ...BaseSlideGroup.options.computed.classes.call(this),\n 'v-tabs-bar': true,\n 'v-tabs-bar--is-mobile': this.isMobile,\n // TODO: Remove this and move to v-slide-group\n 'v-tabs-bar--show-arrows': this.showArrows,\n ...this.themeClasses,\n }\n },\n },\n\n watch: {\n items: 'callSlider',\n internalValue: 'callSlider',\n $route: 'onRouteChange',\n },\n\n methods: {\n callSlider () {\n if (!this.isBooted) return\n\n this.$emit('call:slider')\n },\n genContent () {\n const render = BaseSlideGroup.options.methods.genContent.call(this)\n\n render.data = render.data || {}\n render.data.staticClass += ' v-tabs-bar__content'\n\n return render\n },\n onRouteChange (val: Route, oldVal: Route) {\n /* istanbul ignore next */\n if (this.mandatory) return\n\n const items = this.items as unknown as VTabInstance[]\n const newPath = val.path\n const oldPath = oldVal.path\n\n let hasNew = false\n let hasOld = false\n\n for (const item of items) {\n if (item.to === oldPath) hasOld = true\n else if (item.to === newPath) hasNew = true\n\n if (hasNew && hasOld) break\n }\n\n // If we have an old item and not a new one\n // it's assumed that the user navigated to\n // a path that is not present in the items\n if (!hasNew && hasOld) this.internalValue = undefined\n },\n },\n\n render (h): VNode {\n const render = BaseSlideGroup.options.render.call(this, h)\n\n render.data!.attrs = {\n role: 'tablist',\n }\n\n return render\n },\n})\n","// Styles\nimport './VWindow.sass'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue/types/vnode'\nimport { PropType } from 'vue'\nimport { TouchHandlers } from 'vuetify/types'\n\n// Directives\nimport Touch from '../../directives/touch'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default BaseItemGroup.extend({\n name: 'v-window',\n\n directives: { Touch },\n\n provide (): object {\n return {\n windowGroup: this,\n }\n },\n\n props: {\n activeClass: {\n type: String,\n default: 'v-window-item--active',\n },\n continuous: Boolean,\n mandatory: {\n type: Boolean,\n default: true,\n },\n nextIcon: {\n type: [Boolean, String],\n default: '$next',\n },\n prevIcon: {\n type: [Boolean, String],\n default: '$prev',\n },\n reverse: Boolean,\n showArrows: Boolean,\n showArrowsOnHover: Boolean,\n touch: Object as PropType,\n touchless: Boolean,\n value: {\n required: false,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n changedByDelimiters: false,\n internalHeight: undefined as undefined | string, // This can be fixed by child class.\n transitionHeight: undefined as undefined | string, // Intermediate height during transition.\n transitionCount: 0, // Number of windows in transition state.\n isBooted: false,\n isReverse: false,\n }\n },\n\n computed: {\n isActive (): boolean {\n return this.transitionCount > 0\n },\n classes (): object {\n return {\n ...BaseItemGroup.options.computed.classes.call(this),\n 'v-window--show-arrows-on-hover': this.showArrowsOnHover,\n }\n },\n computedTransition (): string {\n if (!this.isBooted) return ''\n\n const axis = this.vertical ? 'y' : 'x'\n const reverse = this.internalReverse ? !this.isReverse : this.isReverse\n const direction = reverse ? '-reverse' : ''\n\n return `v-window-${axis}${direction}-transition`\n },\n hasActiveItems (): boolean {\n return Boolean(\n this.items.find(item => !item.disabled)\n )\n },\n hasNext (): boolean {\n return this.continuous || this.internalIndex < this.items.length - 1\n },\n hasPrev (): boolean {\n return this.continuous || this.internalIndex > 0\n },\n internalIndex (): number {\n return this.items.findIndex((item, i) => {\n return this.internalValue === this.getValue(item, i)\n })\n },\n internalReverse (): boolean {\n return this.$vuetify.rtl ? !this.reverse : this.reverse\n },\n },\n\n watch: {\n internalIndex (val, oldVal) {\n this.isReverse = this.updateReverse(val, oldVal)\n },\n },\n\n mounted () {\n window.requestAnimationFrame(() => (this.isBooted = true))\n },\n\n methods: {\n genDefaultSlot () {\n return this.$slots.default\n },\n genContainer (): VNode {\n const children = [this.genDefaultSlot()]\n\n if (this.showArrows) {\n children.push(this.genControlIcons())\n }\n\n return this.$createElement('div', {\n staticClass: 'v-window__container',\n class: {\n 'v-window__container--is-active': this.isActive,\n },\n style: {\n height: this.internalHeight || this.transitionHeight,\n },\n }, children)\n },\n genIcon (\n direction: 'prev' | 'next',\n icon: string,\n click: () => void\n ) {\n const on = {\n click: (e: Event) => {\n e.stopPropagation()\n this.changedByDelimiters = true\n click()\n },\n }\n const attrs = {\n 'aria-label': this.$vuetify.lang.t(`$vuetify.carousel.${direction}`),\n }\n const children = this.$scopedSlots[direction]?.({\n on,\n attrs,\n }) ?? [this.$createElement(VBtn, {\n props: { icon: true },\n attrs,\n on,\n }, [\n this.$createElement(VIcon, {\n props: { large: true },\n }, icon),\n ])]\n\n return this.$createElement('div', {\n staticClass: `v-window__${direction}`,\n }, children)\n },\n genControlIcons () {\n const icons = []\n\n const prevIcon = this.$vuetify.rtl\n ? this.nextIcon\n : this.prevIcon\n\n /* istanbul ignore else */\n if (\n this.hasPrev &&\n prevIcon &&\n typeof prevIcon === 'string'\n ) {\n const icon = this.genIcon('prev', prevIcon, this.prev)\n icon && icons.push(icon)\n }\n\n const nextIcon = this.$vuetify.rtl\n ? this.prevIcon\n : this.nextIcon\n\n /* istanbul ignore else */\n if (\n this.hasNext &&\n nextIcon &&\n typeof nextIcon === 'string'\n ) {\n const icon = this.genIcon('next', nextIcon, this.next)\n icon && icons.push(icon)\n }\n\n return icons\n },\n getNextIndex (index: number): number {\n const nextIndex = (index + 1) % this.items.length\n const item = this.items[nextIndex]\n\n if (item.disabled) return this.getNextIndex(nextIndex)\n\n return nextIndex\n },\n getPrevIndex (index: number): number {\n const prevIndex = (index + this.items.length - 1) % this.items.length\n const item = this.items[prevIndex]\n\n if (item.disabled) return this.getPrevIndex(prevIndex)\n\n return prevIndex\n },\n next () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasNext) return\n\n const nextIndex = this.getNextIndex(this.internalIndex)\n const item = this.items[nextIndex]\n\n this.internalValue = this.getValue(item, nextIndex)\n },\n prev () {\n /* istanbul ignore if */\n if (!this.hasActiveItems || !this.hasPrev) return\n\n const lastIndex = this.getPrevIndex(this.internalIndex)\n const item = this.items[lastIndex]\n\n this.internalValue = this.getValue(item, lastIndex)\n },\n updateReverse (val: number, oldVal: number) {\n const itemsLength = this.items.length\n const lastIndex = itemsLength - 1\n\n if (itemsLength <= 2) return val < oldVal\n\n if (val === lastIndex && oldVal === 0) {\n return true\n } else if (val === 0 && oldVal === lastIndex) {\n return false\n } else {\n return val < oldVal\n }\n },\n },\n\n render (h): VNode {\n const data = {\n staticClass: 'v-window',\n class: this.classes,\n directives: [] as VNodeDirective[],\n }\n\n if (!this.touchless) {\n const value = this.touch || {\n left: () => {\n this.$vuetify.rtl ? this.prev() : this.next()\n },\n right: () => {\n this.$vuetify.rtl ? this.next() : this.prev()\n },\n end: (e: TouchEvent) => {\n e.stopPropagation()\n },\n start: (e: TouchEvent) => {\n e.stopPropagation()\n },\n }\n\n data.directives.push({\n name: 'touch',\n value,\n })\n }\n\n return h('div', data, [this.genContainer()])\n },\n})\n","// Extensions\nimport VWindow from '../VWindow/VWindow'\n\n// Types & Components\nimport { BaseItemGroup, GroupableInstance } from './../VItemGroup/VItemGroup'\n\n/* @vue/component */\nexport default VWindow.extend({\n name: 'v-tabs-items',\n\n props: {\n mandatory: {\n type: Boolean,\n default: false,\n },\n },\n\n computed: {\n classes (): object {\n return {\n ...VWindow.options.computed.classes.call(this),\n 'v-tabs-items': true,\n }\n },\n isDark (): boolean {\n return this.rootIsDark\n },\n },\n\n methods: {\n getValue (item: GroupableInstance, i: number) {\n return item.id || BaseItemGroup.options.methods.getValue.call(this, item, i)\n },\n },\n})\n","// Mixins\nimport Colorable from '../../mixins/colorable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(Colorable).extend({\n name: 'v-tabs-slider',\n\n render (h): VNode {\n return h('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-tabs-slider',\n }))\n },\n})\n","// Styles\nimport './VTabs.sass'\n\n// Components\nimport VTabsBar from './VTabsBar'\nimport VTabsItems from './VTabsItems'\nimport VTabsSlider from './VTabsSlider'\n\n// Mixins\nimport Colorable from '../../mixins/colorable'\nimport Proxyable from '../../mixins/proxyable'\nimport Themeable from '../../mixins/themeable'\n\n// Directives\nimport Resize from '../../directives/resize'\n\n// Utilities\nimport { convertToUnit } from '../../util/helpers'\nimport { ExtractVue } from './../../util/mixins'\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue/types'\n\nconst baseMixins = mixins(\n Colorable,\n Proxyable,\n Themeable\n)\n\ninterface options extends ExtractVue {\n $refs: {\n items: InstanceType\n }\n}\n\nexport default baseMixins.extend().extend({\n name: 'v-tabs',\n\n directives: {\n Resize,\n },\n\n props: {\n activeClass: {\n type: String,\n default: '',\n },\n alignWithTitle: Boolean,\n backgroundColor: String,\n centerActive: Boolean,\n centered: Boolean,\n fixedTabs: Boolean,\n grow: Boolean,\n height: {\n type: [Number, String],\n default: undefined,\n },\n hideSlider: Boolean,\n iconsAndText: Boolean,\n mobileBreakpoint: [String, Number],\n nextIcon: {\n type: String,\n default: '$next',\n },\n optional: Boolean,\n prevIcon: {\n type: String,\n default: '$prev',\n },\n right: Boolean,\n showArrows: [Boolean, String],\n sliderColor: String,\n sliderSize: {\n type: [Number, String],\n default: 2,\n },\n vertical: Boolean,\n },\n\n data () {\n return {\n resizeTimeout: 0,\n slider: {\n height: null as null | number,\n left: null as null | number,\n right: null as null | number,\n top: null as null | number,\n width: null as null | number,\n },\n transitionTime: 300,\n }\n },\n\n computed: {\n classes (): object {\n return {\n 'v-tabs--align-with-title': this.alignWithTitle,\n 'v-tabs--centered': this.centered,\n 'v-tabs--fixed-tabs': this.fixedTabs,\n 'v-tabs--grow': this.grow,\n 'v-tabs--icons-and-text': this.iconsAndText,\n 'v-tabs--right': this.right,\n 'v-tabs--vertical': this.vertical,\n ...this.themeClasses,\n }\n },\n isReversed (): boolean {\n return this.$vuetify.rtl && this.vertical\n },\n sliderStyles (): object {\n return {\n height: convertToUnit(this.slider.height),\n left: this.isReversed ? undefined : convertToUnit(this.slider.left),\n right: this.isReversed ? convertToUnit(this.slider.right) : undefined,\n top: this.vertical ? convertToUnit(this.slider.top) : undefined,\n transition: this.slider.left != null ? null : 'none',\n width: convertToUnit(this.slider.width),\n }\n },\n computedColor (): string {\n if (this.color) return this.color\n else if (this.isDark && !this.appIsDark) return 'white'\n else return 'primary'\n },\n },\n\n watch: {\n alignWithTitle: 'callSlider',\n centered: 'callSlider',\n centerActive: 'callSlider',\n fixedTabs: 'callSlider',\n grow: 'callSlider',\n iconsAndText: 'callSlider',\n right: 'callSlider',\n showArrows: 'callSlider',\n vertical: 'callSlider',\n '$vuetify.application.left': 'onResize',\n '$vuetify.application.right': 'onResize',\n '$vuetify.rtl': 'onResize',\n },\n\n mounted () {\n this.$nextTick(() => {\n window.setTimeout(this.callSlider, 30)\n })\n },\n\n methods: {\n callSlider () {\n if (\n this.hideSlider ||\n !this.$refs.items ||\n !this.$refs.items.selectedItems.length\n ) {\n this.slider.width = 0\n return false\n }\n\n this.$nextTick(() => {\n // Give screen time to paint\n const activeTab = this.$refs.items.selectedItems[0]\n /* istanbul ignore if */\n if (!activeTab || !activeTab.$el) {\n this.slider.width = 0\n this.slider.left = 0\n return\n }\n const el = activeTab.$el as HTMLElement\n\n this.slider = {\n height: !this.vertical ? Number(this.sliderSize) : el.scrollHeight,\n left: this.vertical ? 0 : el.offsetLeft,\n right: this.vertical ? 0 : el.offsetLeft + el.offsetWidth,\n top: el.offsetTop,\n width: this.vertical ? Number(this.sliderSize) : el.scrollWidth,\n }\n })\n\n return true\n },\n genBar (items: VNode[], slider: VNode | null) {\n const data = {\n style: {\n height: convertToUnit(this.height),\n },\n props: {\n activeClass: this.activeClass,\n centerActive: this.centerActive,\n dark: this.dark,\n light: this.light,\n mandatory: !this.optional,\n mobileBreakpoint: this.mobileBreakpoint,\n nextIcon: this.nextIcon,\n prevIcon: this.prevIcon,\n showArrows: this.showArrows,\n value: this.internalValue,\n },\n on: {\n 'call:slider': this.callSlider,\n change: (val: any) => {\n this.internalValue = val\n },\n },\n ref: 'items',\n }\n\n this.setTextColor(this.computedColor, data)\n this.setBackgroundColor(this.backgroundColor, data)\n\n return this.$createElement(VTabsBar, data, [\n this.genSlider(slider),\n items,\n ])\n },\n genItems (items: VNode | null, item: VNode[]) {\n // If user provides items\n // opt to use theirs\n if (items) return items\n\n // If no tabs are provided\n // render nothing\n if (!item.length) return null\n\n return this.$createElement(VTabsItems, {\n props: {\n value: this.internalValue,\n },\n on: {\n change: (val: any) => {\n this.internalValue = val\n },\n },\n }, item)\n },\n genSlider (slider: VNode | null) {\n if (this.hideSlider) return null\n\n if (!slider) {\n slider = this.$createElement(VTabsSlider, {\n props: { color: this.sliderColor },\n })\n }\n\n return this.$createElement('div', {\n staticClass: 'v-tabs-slider-wrapper',\n style: this.sliderStyles,\n }, [slider])\n },\n onResize () {\n if (this._isDestroyed) return\n\n clearTimeout(this.resizeTimeout)\n this.resizeTimeout = window.setTimeout(this.callSlider, 0)\n },\n parseNodes () {\n let items = null\n let slider = null\n const item = []\n const tab = []\n const slot = this.$slots.default || []\n const length = slot.length\n\n for (let i = 0; i < length; i++) {\n const vnode = slot[i]\n\n if (vnode.componentOptions) {\n switch (vnode.componentOptions.Ctor.options.name) {\n case 'v-tabs-slider': slider = vnode\n break\n case 'v-tabs-items': items = vnode\n break\n case 'v-tab-item': item.push(vnode)\n break\n // case 'v-tab' - intentionally omitted\n default: tab.push(vnode)\n }\n } else {\n tab.push(vnode)\n }\n }\n\n /**\n * tab: array of `v-tab`\n * slider: single `v-tabs-slider`\n * items: single `v-tabs-items`\n * item: array of `v-tab-item`\n */\n return { tab, slider, items, item }\n },\n },\n\n render (h): VNode {\n const { tab, slider, items, item } = this.parseNodes()\n\n return h('div', {\n staticClass: 'v-tabs',\n class: this.classes,\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n }, [\n this.genBar(tab, slider),\n this.genItems(items, item),\n ])\n },\n})\n","// Styles\nimport './VCounter.sass'\n\n// Mixins\nimport Themeable, { functionalThemeClasses } from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Themeable).extend({\n name: 'v-counter',\n\n functional: true,\n\n props: {\n value: {\n type: [Number, String],\n default: '',\n },\n max: [Number, String],\n },\n\n render (h, ctx): VNode {\n const { props } = ctx\n const max = parseInt(props.max, 10)\n const value = parseInt(props.value, 10)\n const content = max ? `${value} / ${max}` : String(props.value)\n const isGreater = max && (value > max)\n\n return h('div', {\n staticClass: 'v-counter',\n class: {\n 'error--text': isGreater,\n ...functionalThemeClasses(ctx),\n },\n }, content)\n },\n})\n","import VCounter from './VCounter'\n\nexport { VCounter }\nexport default VCounter\n","// Directives\nimport Intersect from '../../directives/intersect'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\nexport default function intersectable (options: { onVisible: string[] }) {\n return Vue.extend({\n name: 'intersectable',\n\n data: () => ({\n isIntersecting: false,\n }),\n\n mounted () {\n Intersect.inserted(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n destroyed () {\n Intersect.unbind(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n methods: {\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isIntersecting = isIntersecting\n\n if (!isIntersecting) return\n\n for (let i = 0, length = options.onVisible.length; i < length; i++) {\n const callback = (this as any)[options.onVisible[i]]\n\n if (typeof callback === 'function') {\n callback()\n continue\n }\n\n consoleWarn(options.onVisible[i] + ' method is not available on the instance but referenced in intersectable mixin options')\n }\n },\n },\n })\n}\n","// Styles\nimport './VTextField.sass'\n\n// Extensions\nimport VInput from '../VInput'\n\n// Components\nimport VCounter from '../VCounter'\nimport VLabel from '../VLabel'\n\n// Mixins\nimport Intersectable from '../../mixins/intersectable'\nimport Loadable from '../../mixins/loadable'\nimport Validatable from '../../mixins/validatable'\n\n// Directives\nimport resize from '../../directives/resize'\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { attachedRoot } from '../../util/dom'\nimport { convertToUnit, keyCodes } from '../../util/helpers'\nimport { breaking, consoleWarn } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode, PropType } from 'vue/types'\n\nconst baseMixins = mixins(\n VInput,\n Intersectable({\n onVisible: [\n 'onResize',\n 'tryAutofocus',\n ],\n }),\n Loadable,\n)\ninterface options extends InstanceType {\n $refs: {\n label: HTMLElement\n input: HTMLInputElement\n 'prepend-inner': HTMLElement\n prefix: HTMLElement\n suffix: HTMLElement\n }\n}\n\nconst dirtyTypes = ['color', 'file', 'time', 'date', 'datetime-local', 'week', 'month']\n\n/* @vue/component */\nexport default baseMixins.extend().extend({\n name: 'v-text-field',\n\n directives: {\n resize,\n ripple,\n },\n\n inheritAttrs: false,\n\n props: {\n appendOuterIcon: String,\n autofocus: Boolean,\n clearable: Boolean,\n clearIcon: {\n type: String,\n default: '$clear',\n },\n counter: [Boolean, Number, String],\n counterValue: Function as PropType<(value: any) => number>,\n filled: Boolean,\n flat: Boolean,\n fullWidth: Boolean,\n label: String,\n outlined: Boolean,\n placeholder: String,\n prefix: String,\n prependInnerIcon: String,\n persistentPlaceholder: Boolean,\n reverse: Boolean,\n rounded: Boolean,\n shaped: Boolean,\n singleLine: Boolean,\n solo: Boolean,\n soloInverted: Boolean,\n suffix: String,\n type: {\n type: String,\n default: 'text',\n },\n },\n\n data: () => ({\n badInput: false,\n labelWidth: 0,\n prefixWidth: 0,\n prependWidth: 0,\n initialValue: null,\n isBooted: false,\n isClearing: false,\n }),\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-text-field': true,\n 'v-text-field--full-width': this.fullWidth,\n 'v-text-field--prefix': this.prefix,\n 'v-text-field--single-line': this.isSingle,\n 'v-text-field--solo': this.isSolo,\n 'v-text-field--solo-inverted': this.soloInverted,\n 'v-text-field--solo-flat': this.flat,\n 'v-text-field--filled': this.filled,\n 'v-text-field--is-booted': this.isBooted,\n 'v-text-field--enclosed': this.isEnclosed,\n 'v-text-field--reverse': this.reverse,\n 'v-text-field--outlined': this.outlined,\n 'v-text-field--placeholder': this.placeholder,\n 'v-text-field--rounded': this.rounded,\n 'v-text-field--shaped': this.shaped,\n }\n },\n computedColor (): string | undefined {\n const computedColor = Validatable.options.computed.computedColor.call(this)\n\n if (!this.soloInverted || !this.isFocused) return computedColor\n\n return this.color || 'primary'\n },\n computedCounterValue (): number {\n if (typeof this.counterValue === 'function') {\n return this.counterValue(this.internalValue)\n }\n return [...(this.internalValue || '').toString()].length\n },\n hasCounter (): boolean {\n return this.counter !== false && this.counter != null\n },\n hasDetails (): boolean {\n return VInput.options.computed.hasDetails.call(this) || this.hasCounter\n },\n internalValue: {\n get (): any {\n return this.lazyValue\n },\n set (val: any) {\n this.lazyValue = val\n this.$emit('input', this.lazyValue)\n },\n },\n isDirty (): boolean {\n return this.lazyValue?.toString().length > 0 || this.badInput\n },\n isEnclosed (): boolean {\n return (\n this.filled ||\n this.isSolo ||\n this.outlined\n )\n },\n isLabelActive (): boolean {\n return this.isDirty || dirtyTypes.includes(this.type)\n },\n isSingle (): boolean {\n return (\n this.isSolo ||\n this.singleLine ||\n this.fullWidth ||\n // https://material.io/components/text-fields/#filled-text-field\n (this.filled && !this.hasLabel)\n )\n },\n isSolo (): boolean {\n return this.solo || this.soloInverted\n },\n labelPosition (): Record<'left' | 'right', string | number | undefined> {\n let offset = (this.prefix && !this.labelValue) ? this.prefixWidth : 0\n\n if (this.labelValue && this.prependWidth) offset -= this.prependWidth\n\n return (this.$vuetify.rtl === this.reverse) ? {\n left: offset,\n right: 'auto',\n } : {\n left: 'auto',\n right: offset,\n }\n },\n showLabel (): boolean {\n return this.hasLabel && !(this.isSingle && this.labelValue)\n },\n labelValue (): boolean {\n return this.isFocused || this.isLabelActive || this.persistentPlaceholder\n },\n },\n\n watch: {\n // labelValue: 'setLabelWidth', // moved to mounted, see #11533\n outlined: 'setLabelWidth',\n label () {\n this.$nextTick(this.setLabelWidth)\n },\n prefix () {\n this.$nextTick(this.setPrefixWidth)\n },\n isFocused: 'updateValue',\n value (val) {\n this.lazyValue = val\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('box')) {\n breaking('box', 'filled', this)\n }\n\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('browser-autocomplete')) {\n breaking('browser-autocomplete', 'autocomplete', this)\n }\n\n /* istanbul ignore if */\n if (this.shaped && !(this.filled || this.outlined || this.isSolo)) {\n consoleWarn('shaped should be used with either filled or outlined', this)\n }\n },\n\n mounted () {\n // #11533\n this.$watch(() => this.labelValue, this.setLabelWidth)\n this.autofocus && this.tryAutofocus()\n requestAnimationFrame(() => {\n this.isBooted = true\n requestAnimationFrame(() => {\n if (!this.isIntersecting) {\n this.onResize()\n }\n })\n })\n },\n\n methods: {\n /** @public */\n focus () {\n this.onFocus()\n },\n /** @public */\n blur (e?: Event) {\n // https://github.com/vuetifyjs/vuetify/issues/5913\n // Safari tab order gets broken if called synchronous\n window.requestAnimationFrame(() => {\n this.$refs.input && this.$refs.input.blur()\n })\n },\n clearableCallback () {\n this.$refs.input && this.$refs.input.focus()\n this.$nextTick(() => this.internalValue = null)\n },\n genAppendSlot () {\n const slot = []\n\n if (this.$slots['append-outer']) {\n slot.push(this.$slots['append-outer'] as VNode[])\n } else if (this.appendOuterIcon) {\n slot.push(this.genIcon('appendOuter'))\n }\n\n return this.genSlot('append', 'outer', slot)\n },\n genPrependInnerSlot () {\n const slot = []\n\n if (this.$slots['prepend-inner']) {\n slot.push(this.$slots['prepend-inner'] as VNode[])\n } else if (this.prependInnerIcon) {\n slot.push(this.genIcon('prependInner'))\n }\n\n return this.genSlot('prepend', 'inner', slot)\n },\n genIconSlot () {\n const slot = []\n\n if (this.$slots.append) {\n slot.push(this.$slots.append as VNode[])\n } else if (this.appendIcon) {\n slot.push(this.genIcon('append'))\n }\n\n return this.genSlot('append', 'inner', slot)\n },\n genInputSlot () {\n const input = VInput.options.methods.genInputSlot.call(this)\n\n const prepend = this.genPrependInnerSlot()\n\n if (prepend) {\n input.children = input.children || []\n input.children.unshift(prepend)\n }\n\n return input\n },\n genClearIcon () {\n if (!this.clearable) return null\n\n // if the text field has no content then don't display the clear icon.\n // We add an empty div because other controls depend on a ref to append inner\n if (!this.isDirty) {\n return this.genSlot('append', 'inner', [\n this.$createElement('div'),\n ])\n }\n\n return this.genSlot('append', 'inner', [\n this.genIcon('clear', this.clearableCallback),\n ])\n },\n genCounter () {\n if (!this.hasCounter) return null\n\n const max = this.counter === true ? this.attrs$.maxlength : this.counter\n\n const props = {\n dark: this.dark,\n light: this.light,\n max,\n value: this.computedCounterValue,\n }\n\n return this.$scopedSlots.counter?.({ props }) ?? this.$createElement(VCounter, { props })\n },\n genControl () {\n return VInput.options.methods.genControl.call(this)\n },\n genDefaultSlot () {\n return [\n this.genFieldset(),\n this.genTextFieldSlot(),\n this.genClearIcon(),\n this.genIconSlot(),\n this.genProgress(),\n ]\n },\n genFieldset () {\n if (!this.outlined) return null\n\n return this.$createElement('fieldset', {\n attrs: {\n 'aria-hidden': true,\n },\n }, [this.genLegend()])\n },\n genLabel () {\n if (!this.showLabel) return null\n\n const data = {\n props: {\n absolute: true,\n color: this.validationState,\n dark: this.dark,\n disabled: this.isDisabled,\n focused: !this.isSingle && (this.isFocused || !!this.validationState),\n for: this.computedId,\n left: this.labelPosition.left,\n light: this.light,\n right: this.labelPosition.right,\n value: this.labelValue,\n },\n }\n\n return this.$createElement(VLabel, data, this.$slots.label || this.label)\n },\n genLegend () {\n const width = !this.singleLine && (this.labelValue || this.isDirty) ? this.labelWidth : 0\n const span = this.$createElement('span', {\n domProps: { innerHTML: '​' },\n staticClass: 'notranslate',\n })\n\n return this.$createElement('legend', {\n style: {\n width: !this.isSingle ? convertToUnit(width) : undefined,\n },\n }, [span])\n },\n genInput () {\n const listeners = Object.assign({}, this.listeners$)\n delete listeners.change // Change should not be bound externally\n const { title, ...inputAttrs } = this.attrs$\n\n return this.$createElement('input', {\n style: {},\n domProps: {\n value: (this.type === 'number' && Object.is(this.lazyValue, -0)) ? '-0' : this.lazyValue,\n },\n attrs: {\n ...inputAttrs,\n autofocus: this.autofocus,\n disabled: this.isDisabled,\n id: this.computedId,\n placeholder: this.persistentPlaceholder || this.isFocused || !this.hasLabel ? this.placeholder : undefined,\n readonly: this.isReadonly,\n type: this.type,\n },\n on: Object.assign(listeners, {\n blur: this.onBlur,\n input: this.onInput,\n focus: this.onFocus,\n keydown: this.onKeyDown,\n }),\n ref: 'input',\n directives: [{\n name: 'resize',\n modifiers: { quiet: true },\n value: this.onResize,\n }],\n })\n },\n genMessages () {\n if (!this.showDetails) return null\n\n const messagesNode = VInput.options.methods.genMessages.call(this)\n const counterNode = this.genCounter()\n\n return this.$createElement('div', {\n staticClass: 'v-text-field__details',\n }, [\n messagesNode,\n counterNode,\n ])\n },\n genTextFieldSlot () {\n return this.$createElement('div', {\n staticClass: 'v-text-field__slot',\n }, [\n this.genLabel(),\n this.prefix ? this.genAffix('prefix') : null,\n this.genInput(),\n this.suffix ? this.genAffix('suffix') : null,\n ])\n },\n genAffix (type: 'prefix' | 'suffix') {\n return this.$createElement('div', {\n class: `v-text-field__${type}`,\n ref: type,\n }, this[type])\n },\n onBlur (e?: Event) {\n this.isFocused = false\n e && this.$nextTick(() => this.$emit('blur', e))\n },\n onClick () {\n if (this.isFocused || this.isDisabled || !this.$refs.input) return\n\n this.$refs.input.focus()\n },\n onFocus (e?: Event) {\n if (!this.$refs.input) return\n\n const root = attachedRoot(this.$el)\n if (!root) return\n\n if (root.activeElement !== this.$refs.input) {\n return this.$refs.input.focus()\n }\n\n if (!this.isFocused) {\n this.isFocused = true\n e && this.$emit('focus', e)\n }\n },\n onInput (e: Event) {\n const target = e.target as HTMLInputElement\n this.internalValue = target.value\n this.badInput = target.validity && target.validity.badInput\n },\n onKeyDown (e: KeyboardEvent) {\n if (\n e.keyCode === keyCodes.enter &&\n this.lazyValue !== this.initialValue\n ) {\n this.initialValue = this.lazyValue\n this.$emit('change', this.initialValue)\n }\n\n this.$emit('keydown', e)\n },\n onMouseDown (e: Event) {\n // Prevent input from being blurred\n if (e.target !== this.$refs.input) {\n e.preventDefault()\n e.stopPropagation()\n }\n\n VInput.options.methods.onMouseDown.call(this, e)\n },\n onMouseUp (e: Event) {\n if (this.hasMouseDown) this.focus()\n\n VInput.options.methods.onMouseUp.call(this, e)\n },\n setLabelWidth () {\n if (!this.outlined) return\n\n this.labelWidth = this.$refs.label\n ? Math.min(this.$refs.label.scrollWidth * 0.75 + 6, (this.$el as HTMLElement).offsetWidth - 24)\n : 0\n },\n setPrefixWidth () {\n if (!this.$refs.prefix) return\n\n this.prefixWidth = this.$refs.prefix.offsetWidth\n },\n setPrependWidth () {\n if (!this.outlined || !this.$refs['prepend-inner']) return\n\n this.prependWidth = this.$refs['prepend-inner'].offsetWidth\n },\n tryAutofocus () {\n if (\n !this.autofocus ||\n typeof document === 'undefined' ||\n !this.$refs.input) return false\n\n const root = attachedRoot(this.$el)\n if (!root || root.activeElement === this.$refs.input) return false\n\n this.$refs.input.focus()\n\n return true\n },\n updateValue (val: boolean) {\n // Sets validationState from validatable\n this.hasColor = val\n\n if (val) {\n this.initialValue = this.lazyValue\n } else if (this.initialValue !== this.lazyValue) {\n this.$emit('change', this.lazyValue)\n }\n },\n onResize () {\n this.setLabelWidth()\n this.setPrefixWidth()\n this.setPrependWidth()\n },\n },\n})\n","// Mixins\nimport Themeable from '../../mixins/themeable'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default Themeable.extend({\n name: 'v-theme-provider',\n\n props: { root: Boolean },\n\n computed: {\n isDark (): boolean {\n return this.root\n ? this.rootIsDark\n : Themeable.options.computed.isDark.call(this)\n },\n },\n\n render (): VNode {\n /* istanbul ignore next */\n return (\n this.$slots.default! &&\n this.$slots.default!.find(node => !node.isComment && node.text !== ' ')!\n )\n },\n})\n","// Styles\nimport './VToolbar.sass'\n\n// Extensions\nimport VSheet from '../VSheet/VSheet'\n\n// Components\nimport VImg, { srcObject } from '../VImg/VImg'\n\n// Utilities\nimport { convertToUnit, getSlot } from '../../util/helpers'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNode, PropType } from 'vue'\n\n/* @vue/component */\nexport default VSheet.extend({\n name: 'v-toolbar',\n\n props: {\n absolute: Boolean,\n bottom: Boolean,\n collapse: Boolean,\n dense: Boolean,\n extended: Boolean,\n extensionHeight: {\n default: 48,\n type: [Number, String],\n },\n flat: Boolean,\n floating: Boolean,\n prominent: Boolean,\n short: Boolean,\n src: {\n type: [String, Object] as PropType,\n default: '',\n },\n tag: {\n type: String,\n default: 'header',\n },\n },\n\n data: () => ({\n isExtended: false,\n }),\n\n computed: {\n computedHeight (): number {\n const height = this.computedContentHeight\n\n if (!this.isExtended) return height\n\n const extensionHeight = parseInt(this.extensionHeight)\n\n return this.isCollapsed\n ? height\n : height + (!isNaN(extensionHeight) ? extensionHeight : 0)\n },\n computedContentHeight (): number {\n if (this.height) return parseInt(this.height)\n if (this.isProminent && this.dense) return 96\n if (this.isProminent && this.short) return 112\n if (this.isProminent) return 128\n if (this.dense) return 48\n if (this.short || this.$vuetify.breakpoint.smAndDown) return 56\n return 64\n },\n classes (): object {\n return {\n ...VSheet.options.computed.classes.call(this),\n 'v-toolbar': true,\n 'v-toolbar--absolute': this.absolute,\n 'v-toolbar--bottom': this.bottom,\n 'v-toolbar--collapse': this.collapse,\n 'v-toolbar--collapsed': this.isCollapsed,\n 'v-toolbar--dense': this.dense,\n 'v-toolbar--extended': this.isExtended,\n 'v-toolbar--flat': this.flat,\n 'v-toolbar--floating': this.floating,\n 'v-toolbar--prominent': this.isProminent,\n }\n },\n isCollapsed (): boolean {\n return this.collapse\n },\n isProminent (): boolean {\n return this.prominent\n },\n styles (): object {\n return {\n ...this.measurableStyles,\n height: convertToUnit(this.computedHeight),\n }\n },\n },\n\n created () {\n const breakingProps = [\n ['app', ''],\n ['manual-scroll', ''],\n ['clipped-left', ''],\n ['clipped-right', ''],\n ['inverted-scroll', ''],\n ['scroll-off-screen', ''],\n ['scroll-target', ''],\n ['scroll-threshold', ''],\n ['card', ''],\n ]\n\n /* istanbul ignore next */\n breakingProps.forEach(([original, replacement]) => {\n if (this.$attrs.hasOwnProperty(original)) breaking(original, replacement, this)\n })\n },\n\n methods: {\n genBackground () {\n const props = {\n height: convertToUnit(this.computedHeight),\n src: this.src,\n }\n\n const image = this.$scopedSlots.img\n ? this.$scopedSlots.img({ props })\n : this.$createElement(VImg, { props })\n\n return this.$createElement('div', {\n staticClass: 'v-toolbar__image',\n }, [image])\n },\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__content',\n style: {\n height: convertToUnit(this.computedContentHeight),\n },\n }, getSlot(this))\n },\n genExtension () {\n return this.$createElement('div', {\n staticClass: 'v-toolbar__extension',\n style: {\n height: convertToUnit(this.extensionHeight),\n },\n }, getSlot(this, 'extension'))\n },\n },\n\n render (h): VNode {\n this.isExtended = this.extended || !!this.$scopedSlots.extension\n\n const children = [this.genContent()]\n const data = this.setBackgroundColor(this.color, {\n class: this.classes,\n style: this.styles,\n on: this.$listeners,\n })\n\n if (this.isExtended) children.push(this.genExtension())\n if (this.src || this.$scopedSlots.img) children.unshift(this.genBackground())\n\n return h(this.tag, data, children)\n },\n})\n","// Components\nimport VToolbar from './VToolbar'\n\n// Utilities\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VToolbarTitle = createSimpleFunctional('v-toolbar__title')\nconst VToolbarItems = createSimpleFunctional('v-toolbar__items')\n\nexport {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VToolbar,\n VToolbarItems,\n VToolbarTitle,\n },\n}\n","import './VTooltip.sass'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Colorable from '../../mixins/colorable'\nimport Delayable from '../../mixins/delayable'\nimport Dependent from '../../mixins/dependent'\nimport Menuable from '../../mixins/menuable'\n\n// Helpers\nimport { convertToUnit, keyCodes, getSlotType } from '../../util/helpers'\nimport { consoleError } from '../../util/console'\n\n// Types\nimport { VNode } from 'vue'\nimport mixins from '../../util/mixins'\n\n/* @vue/component */\nexport default mixins(Colorable, Delayable, Dependent, Menuable).extend({\n name: 'v-tooltip',\n\n props: {\n closeDelay: {\n type: [Number, String],\n default: 0,\n },\n disabled: Boolean,\n openDelay: {\n type: [Number, String],\n default: 0,\n },\n openOnHover: {\n type: Boolean,\n default: true,\n },\n openOnFocus: {\n type: Boolean,\n default: true,\n },\n tag: {\n type: String,\n default: 'span',\n },\n transition: String,\n },\n\n data: () => ({\n calculatedMinWidth: 0,\n closeDependents: false,\n }),\n\n computed: {\n calculatedLeft (): string {\n const { activator, content } = this.dimensions\n const unknown = !this.bottom && !this.left && !this.top && !this.right\n const activatorLeft = this.attach !== false ? activator.offsetLeft : activator.left\n let left = 0\n\n if (this.top || this.bottom || unknown) {\n left = (\n activatorLeft +\n (activator.width / 2) -\n (content.width / 2)\n )\n } else if (this.left || this.right) {\n left = (\n activatorLeft +\n (this.right ? activator.width : -content.width) +\n (this.right ? 10 : -10)\n )\n }\n\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft)\n if (this.nudgeRight) left += parseInt(this.nudgeRight)\n\n return `${this.calcXOverflow(left, this.dimensions.content.width)}px`\n },\n calculatedTop (): string {\n const { activator, content } = this.dimensions\n const activatorTop = this.attach !== false ? activator.offsetTop : activator.top\n let top = 0\n\n if (this.top || this.bottom) {\n top = (\n activatorTop +\n (this.bottom ? activator.height : -content.height) +\n (this.bottom ? 10 : -10)\n )\n } else if (this.left || this.right) {\n top = (\n activatorTop +\n (activator.height / 2) -\n (content.height / 2)\n )\n }\n\n if (this.nudgeTop) top -= parseInt(this.nudgeTop)\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom)\n if (this.attach === false) top += this.pageYOffset\n\n return `${this.calcYOverflow(top)}px`\n },\n classes (): object {\n return {\n 'v-tooltip--top': this.top,\n 'v-tooltip--right': this.right,\n 'v-tooltip--bottom': this.bottom,\n 'v-tooltip--left': this.left,\n 'v-tooltip--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n }\n },\n computedTransition (): string {\n if (this.transition) return this.transition\n\n return this.isActive ? 'scale-transition' : 'fade-transition'\n },\n offsetY (): boolean {\n return this.top || this.bottom\n },\n offsetX (): boolean {\n return this.left || this.right\n },\n styles (): object {\n return {\n left: this.calculatedLeft,\n maxWidth: convertToUnit(this.maxWidth),\n minWidth: convertToUnit(this.minWidth),\n top: this.calculatedTop,\n zIndex: this.zIndex || this.activeZIndex,\n }\n },\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.value && this.callActivate()\n })\n },\n\n mounted () {\n if (getSlotType(this, 'activator', true) === 'v-slot') {\n consoleError(`v-tooltip's activator slot must be bound, try '