{"version":3,"file":"9785.d1f6f715006b835f84ce.js","mappings":"sNAEIA,EAAmBC,GAA6B,aAAjBA,EAAQC,KAEvCC,EAAgBC,GAAUA,aAAiBC,KAE3CC,EAAqBF,GAAmB,MAATA,EAEnC,MAAMG,EAAgBH,GAA2B,iBAAVA,EACvC,IAAII,EAAYJ,IAAWE,EAAkBF,KACxCK,MAAMC,QAAQN,IACfG,EAAaH,KACZD,EAAaC,GAEdO,EAAiBC,GAAUJ,EAASI,IAAUA,EAAMC,OAClDb,EAAgBY,EAAMC,QAClBD,EAAMC,OAAOC,QACbF,EAAMC,OAAOT,MACjBQ,EAIFG,EAAqB,CAACC,EAAOC,IAASD,EAAME,IAFxB,CAACD,GAASA,EAAKE,UAAU,EAAGF,EAAKG,OAAO,iBAAmBH,EAE/BI,CAAkBJ,IAElEK,EAAWlB,GAAUK,MAAMC,QAAQN,GAASA,EAAMmB,OAAOC,SAAW,GAEpEC,EAAeC,QAAgBC,IAARD,EAEvBE,EAAM,CAACC,EAAKC,EAAMC,KAClB,IAAKD,IAAStB,EAASqB,GACnB,OAAOE,EAEX,MAAMC,EAASV,EAAQQ,EAAKG,MAAM,cAAcC,QAAO,CAACF,EAAQG,IAAQ7B,EAAkB0B,GAAUA,EAASA,EAAOG,IAAMN,GAC1H,OAAOJ,EAAYO,IAAWA,IAAWH,EACnCJ,EAAYI,EAAIC,IACZC,EACAF,EAAIC,GACRE,CAAM,EAGhB,MAAMI,EAAS,CACXC,KAAM,OACNC,UAAW,WACXC,OAAQ,UAENC,EAAkB,CACpBC,OAAQ,SACRC,SAAU,WACVC,SAAU,WACVC,UAAW,YACXC,IAAK,OAEHC,EAKO,UALPA,EAMQ,WAIRC,EAAkB,gBAAoB,MA+BtCC,EAAiB,IAAM,aAAiBD,GAoC9C,IAAIE,EAAoB,CAACC,EAAWC,EAAiBC,EAAqBC,GAAS,KAC/E,MAAMrB,EAAS,CAAC,EAChB,IAAK,MAAMG,KAAOe,EACdI,OAAOC,eAAevB,EAAQG,EAAK,CAC/BP,IAAK,KACD,MAAM4B,EAAOrB,EAKb,OAJIgB,EAAgBK,KAAUhB,EAAgBK,MAC1CM,EAAgBK,IAASH,GAAUb,EAAgBK,KAEvDO,IAAwBA,EAAoBI,IAAQ,GAC7CN,EAAUM,EAAK,IAIlC,OAAOxB,CAAM,EAGbyB,EAAiBrD,GAAUI,EAASJ,KAAWkD,OAAOI,KAAKtD,GAAOuD,OAElEC,EAAwB,CAACC,EAAeV,EAAiBE,KACzD,MAAM,KAAEpC,KAASiC,GAAcW,EAC/B,OAAQJ,EAAcP,IAClBI,OAAOI,KAAKR,GAAWS,QAAUL,OAAOI,KAAKP,GAAiBQ,QAC9DL,OAAOI,KAAKR,GAAWY,MAAM3B,GAAQgB,EAAgBhB,OAC/CkB,GAAUb,EAAgBK,MAAM,EAG1CkB,EAAyB3D,GAAWK,MAAMC,QAAQN,GAASA,EAAQ,CAACA,GAEpE4D,EAAwB,CAAC/C,EAAMgD,EAAYC,IAAUA,GAASD,EAC5DhD,IAASgD,GACRhD,IACEgD,GACDhD,IAASgD,GACTF,EAAsB9C,GAAMkD,MAAMC,GAAgBA,IAC7CA,EAAYC,WAAWJ,IACpBA,EAAWI,WAAWD,MAEtC,SAASE,EAAaC,GAClB,MAAMC,EAAS,SAAaD,GAC5BC,EAAOC,QAAUF,EACjB,aAAgB,KACZ,MAKMG,GAAgBH,EAAMI,UACxBH,EAAOC,QAAQG,QAAQC,UAAU,CAC7BC,KAAMN,EAAOC,QAAQM,WAE7B,MAAO,IATU,CAACL,IACVA,GACAA,EAAaM,aACjB,EAMSC,CAASP,EAAa,GACpC,CAACH,EAAMI,UACd,CAgCA,SAASO,EAAaX,GAClB,MAAMY,EAAUnC,KACV,QAAEoC,EAAUD,EAAQC,QAAO,SAAET,EAAQ,KAAE1D,EAAI,MAAEiD,GAAUK,GAAS,CAAC,GAChErB,EAAWmC,GAAmB,WAAeD,EAAQE,YACtDC,EAAuB,SAAa,CACtCC,SAAS,EACTC,aAAa,EACbC,eAAe,EACfC,cAAc,EACdC,SAAS,EACTC,QAAQ,IAENC,EAAQ,SAAa7E,GACrB8E,EAAW,UAAa,GAoB9B,OAnBAD,EAAMrB,QAAUxD,EAQhBqD,EAAa,CACTK,WACAI,SATa,eAAmB3E,GAAU2F,EAAStB,SACnDT,EAAsB8B,EAAMrB,QAASrE,EAAMa,KAAMiD,IACjDN,EAAsBxD,EAAOmF,EAAqBd,UAClDY,EAAgB,IACTD,EAAQE,cACRlF,KACH,CAACgF,EAASlB,IAIdU,QAASQ,EAAQY,UAAUC,QAE/B,aAAgB,KACZF,EAAStB,SAAU,EACZ,KACHsB,EAAStB,SAAU,CAAK,IAE7B,IACIxB,EAAkBC,EAAWkC,EAAQjC,gBAAiBoC,EAAqBd,SAAS,EAC/F,CAEA,IAAIyB,EAAY9F,GAA2B,iBAAVA,EAE7B+F,EAAsB,CAACnF,EAAOoF,EAAQC,EAAYC,KAClD,MAAM5F,EAAUD,MAAMC,QAAQM,GAC9B,OAAIkF,EAASlF,IACTsF,GAAYF,EAAOG,MAAMC,IAAIxF,GACtBY,EAAIyE,EAAYrF,IAEvBN,EACOM,EAAMyF,KAAKC,IAAeJ,GAAYF,EAAOG,MAAMC,IAAIE,GAC1D9E,EAAIyE,EAAYK,OAExBJ,IAAaF,EAAOO,UAAW,GACxBN,EAAU,EAGjBO,EAAcxG,GAA2B,mBAAVA,EAE/ByG,EAAqBC,IACrB,IAAK,MAAM3E,KAAO2E,EACd,GAAIF,EAAWE,EAAK3E,IAChB,OAAO,EAGf,OAAO,CAAK,EAmBhB,SAAS4E,EAASxC,GACd,MAAMY,EAAUnC,KACV,QAAEoC,EAAUD,EAAQC,QAAO,KAAEnE,EAAI,aAAEc,EAAY,SAAE4C,EAAQ,MAAET,GAAWK,GAAS,CAAC,EAChFuB,EAAQ,SAAa7E,GAC3B6E,EAAMrB,QAAUxD,EAChB,MAAM8D,EAAW,eAAmB7B,IAChC,GAAIc,EAAsB8B,EAAMrB,QAASvB,EAAUjC,KAAMiD,GAAQ,CAC7D,MAAM8C,EAAcb,EAAoBL,EAAMrB,QAASW,EAAQgB,OAAQlD,EAAU+D,QAAU7B,EAAQ8B,aACnGC,EAAY1F,EAAYqE,EAAMrB,UACzBjE,EAASwG,KAAiBH,EAAkBG,GAC3C,IAAKA,GACLvG,MAAMC,QAAQsG,GACV,IAAIA,GACJvF,EAAYuF,GACRjF,EACAiF,EAClB,IACD,CAAC5B,EAASlB,EAAOnC,IACpBuC,EAAa,CACTK,WACAC,QAASQ,EAAQY,UAAUO,MAC3BxB,aAEJ,MAAO3E,EAAO+G,GAAe,WAAe1F,EAAYM,GAClDqD,EAAQgC,UAAUnG,GAClBc,GAIN,OAHA,aAAgB,KACZqD,EAAQiC,kBAAkB,IAEvBjH,CACX,CA0BA,SAASkH,EAAc/C,GACnB,MAAMY,EAAUnC,KACV,KAAE/B,EAAI,QAAEmE,EAAUD,EAAQC,QAAO,iBAAEmC,GAAqBhD,EACxDiD,EAAezG,EAAmBqE,EAAQgB,OAAOqB,MAAOxG,GACxDb,EAAQ2G,EAAS,CACnB3B,UACAnE,OACAc,aAAcH,EAAIwD,EAAQ8B,YAAajG,EAAMW,EAAIwD,EAAQsC,eAAgBzG,EAAMsD,EAAMxC,eACrFmC,OAAO,IAELhB,EAAYgC,EAAa,CAC3BE,UACAnE,SAEE0G,EAAiB,SAAavC,EAAQwC,SAAS3G,EAAM,IACpDsD,EAAMsD,MACTzH,WAmBJ,OAjBA,aAAgB,KACZ,MAAM0H,EAAgB,CAAC7G,EAAMb,KACzB,MAAM2H,EAAQnG,EAAIwD,EAAQ4C,QAAS/G,GAC/B8G,IACAA,EAAME,GAAGC,MAAQ9H,EACrB,EAGJ,OADA0H,EAAc7G,GAAM,GACb,KACH,MAAMkH,EAAyB/C,EAAQgD,SAASb,kBAAoBA,GACnEC,EACKW,IAA2B/C,EAAQiD,YAAYC,OAC/CH,GACA/C,EAAQmD,WAAWtH,GACnB6G,EAAc7G,GAAM,EAAM,CACnC,GACF,CAACA,EAAMmE,EAASoC,EAAcD,IAC1B,CACHQ,MAAO,CACH9G,OACAb,QACAsC,SAAU,eAAmB9B,IACzB+G,EAAelD,QAAQ/B,SAAS,CAC5B7B,OAAQ,CACJT,MAAOO,EAAcC,GACrBK,KAAMA,GAEVf,KAAMkC,EAAOG,QACf,GACH,CAACtB,IACJwB,OAAQ,eAAkB,KACtBkF,EAAelD,QAAQhC,OAAO,CAC1B5B,OAAQ,CACJT,MAAOwB,EAAIwD,EAAQ8B,YAAajG,GAChCA,KAAMA,GAEVf,KAAMkC,EAAOC,MACf,GACH,CAACpB,EAAMmE,IACVoD,IAAK,eAAmBC,IACpB,MAAMV,EAAQnG,EAAIwD,EAAQ4C,QAAS/G,GAC/BwH,GAAOV,GAASU,EAAIC,QACpBX,EAAME,GAAGO,IAAM,CACXE,MAAO,IAAMD,EAAIC,QACjBC,OAAQ,IAAMF,EAAIE,SAClBC,kBAAoBC,GAAYJ,EAAIG,kBAAkBC,GACtDC,eAAgB,IAAML,EAAIK,kBAElC,GACD,CAAC7H,EAAMmE,EAAQ4C,WAEtB9E,YACA6F,WAAYzF,OAAO0F,iBAAiB,CAAC,EAAG,CACpCC,QAAS,CACLC,YAAY,EACZtH,IAAK,MAAQA,EAAIsB,EAAU2C,OAAQ5E,IAEvCuE,QAAS,CACL0D,YAAY,EACZtH,IAAK,MAAQA,EAAIsB,EAAUuC,YAAaxE,IAE5CkI,UAAW,CACPD,YAAY,EACZtH,IAAK,MAAQA,EAAIsB,EAAUwC,cAAezE,IAE9CmI,MAAO,CACHF,YAAY,EACZtH,IAAK,IAAMA,EAAIsB,EAAU2C,OAAQ5E,MAIjD,CA4CA,MAAMoI,EAAc9E,GAAUA,EAAM+E,OAAOhC,EAAc/C,IAEzD,IAAIgF,EAAe,CAACtI,EAAMuI,EAA0B3D,EAAQ3F,EAAM2I,IAAYW,EACxE,IACK3D,EAAO5E,GACVwI,MAAO,IACC5D,EAAO5E,IAAS4E,EAAO5E,GAAMwI,MAAQ5D,EAAO5E,GAAMwI,MAAQ,CAAC,EAC/D,CAACvJ,GAAO2I,IAAW,IAGzB,CAAC,EAEHa,EAAStJ,GAAU,QAAQuJ,KAAKvJ,GAEhCwJ,EAAgBC,GAAUvI,EAAQuI,EAAMC,QAAQ,YAAa,IAAI7H,MAAM,UAE3E,SAAS8H,EAAIC,EAAQlI,EAAM1B,GACvB,IAAI6J,GAAS,EACb,MAAMC,EAAWR,EAAM5H,GAAQ,CAACA,GAAQ8H,EAAa9H,GAC/C6B,EAASuG,EAASvG,OAClBwG,EAAYxG,EAAS,EAC3B,OAASsG,EAAQtG,GAAQ,CACrB,MAAMxB,EAAM+H,EAASD,GACrB,IAAIG,EAAWhK,EACf,GAAI6J,IAAUE,EAAW,CACrB,MAAME,EAAWL,EAAO7H,GACxBiI,EACI5J,EAAS6J,IAAa5J,MAAMC,QAAQ2J,GAC9BA,EACCC,OAAOJ,EAASD,EAAQ,IAErB,CAAC,EADD,EAElB,CACAD,EAAO7H,GAAOiI,EACdJ,EAASA,EAAO7H,EACpB,CACA,OAAO6H,CACX,CAEA,MAAMO,EAAe,CAACC,EAAQzF,EAAU0F,KACpC,IAAK,MAAMtI,KAAOsI,GAAenH,OAAOI,KAAK8G,GAAS,CAClD,MAAMzC,EAAQnG,EAAI4I,EAAQrI,GAC1B,GAAI4F,EAAO,CACP,MAAM,GAAEE,KAAOyC,GAAiB3C,EAChC,GAAIE,GAAMlD,EAASkD,EAAGhH,MAAO,CACzB,GAAIgH,EAAGO,IAAIE,OAASjH,EAAYwG,EAAGO,IAAIE,SACnC,MAEC,GAAIT,EAAG0C,KAAM,CACd1C,EAAG0C,KAAK,GAAGjC,QACX,KACJ,CACJ,MACSlI,EAASkK,IACdH,EAAaG,EAAc3F,EAEnC,CACJ,GAGJ,IAAI6F,EAAa,KACb,MAAMC,EAA2B,oBAAhBC,YAA8BzK,KAAK0K,MAA4B,IAApBD,YAAYC,MACxE,MAAO,uCAAuCjB,QAAQ,SAAUkB,IAC5D,MAAMC,GAAqB,GAAhBC,KAAKC,SAAgBN,GAAK,GAAK,EAC1C,OAAa,KAALG,EAAWC,EAAS,EAAJA,EAAW,GAAKG,SAAS,GAAG,GACtD,EAGFC,EAAoB,CAACpK,EAAMgJ,EAAOqB,EAAU,CAAC,IAAMA,EAAQC,aAAe9J,EAAY6J,EAAQC,aAC5FD,EAAQE,WACN,GAAGvK,KAAQQ,EAAY6J,EAAQG,YAAcxB,EAAQqB,EAAQG,cAC/D,GAEFC,EAAY,CAACzK,EAAMmF,EAAQuF,KAAiBA,IAC3CvF,EAAOO,UACJP,EAAOG,MAAMrF,IAAID,IACjB,IAAImF,EAAOG,OAAOpC,MAAMyH,GAAc3K,EAAKoD,WAAWuH,IAClD,SAASjC,KAAK1I,EAAK4K,MAAMD,EAAUjI,YAE3CmI,EAA4B,CAACjG,EAAQuD,EAAOnI,KAC5C,MAAM8K,EAAmBzK,EAAQM,EAAIiE,EAAQ5E,IAG7C,OAFA8I,EAAIgC,EAAkB,OAAQ3C,EAAMnI,IACpC8I,EAAIlE,EAAQ5E,EAAM8K,GACXlG,CAAM,EAGbmG,EAAa5L,GAA2B,kBAAVA,EAE9B6L,EAAehM,GAA6B,SAAjBA,EAAQC,KAEnCgM,EAAa9L,GAAU8F,EAAS9F,IAAU,iBAAqBA,GAE/D+L,EAAgBlM,GAA6B,UAAjBA,EAAQC,KAEpCkM,EAAWhM,GAAUA,aAAiBiM,OAE1C,MAAMC,EAAgB,CAClBlM,OAAO,EACPwF,SAAS,GAEP2G,EAAc,CAAEnM,OAAO,EAAMwF,SAAS,GAC5C,IAAI4G,EAAoBlB,IACpB,GAAI7K,MAAMC,QAAQ4K,GAAU,CACxB,GAAIA,EAAQ3H,OAAS,EAAG,CACpB,MAAMsD,EAASqE,EACV/J,QAAQkL,GAAWA,GAAUA,EAAO3L,UAAY2L,EAAO9H,WACvD8B,KAAKgG,GAAWA,EAAOrM,QAC5B,MAAO,CAAEA,MAAO6G,EAAQrB,UAAWqB,EAAOtD,OAC9C,CACA,OAAO2H,EAAQ,GAAGxK,UAAYwK,EAAQ,GAAG3G,SAEjC2G,EAAQ,GAAGoB,aAAejL,EAAY6J,EAAQ,GAAGoB,WAAWtM,OACtDqB,EAAY6J,EAAQ,GAAGlL,QAA+B,KAArBkL,EAAQ,GAAGlL,MACxCmM,EACA,CAAEnM,MAAOkL,EAAQ,GAAGlL,MAAOwF,SAAS,GACxC2G,EACRD,CACV,CACA,OAAOA,CAAa,EAGxB,MAAMK,EAAgB,CAClB/G,SAAS,EACTxF,MAAO,MAEX,IAAIwM,EAAiBtB,GAAY7K,MAAMC,QAAQ4K,GACzCA,EAAQpJ,QAAO,CAAC2K,EAAUJ,IAAWA,GAAUA,EAAO3L,UAAY2L,EAAO9H,SACrE,CACEiB,SAAS,EACTxF,MAAOqM,EAAOrM,OAEhByM,GAAUF,GACdA,EAEN,SAASG,EAAiB9K,EAAQwG,EAAKtI,EAAO,YAC1C,GAAIgM,EAAUlK,IACTvB,MAAMC,QAAQsB,IAAWA,EAAO+K,MAAMb,IACtCF,EAAUhK,KAAYA,EACvB,MAAO,CACH9B,OACA2I,QAASqD,EAAUlK,GAAUA,EAAS,GACtCwG,MAGZ,CAEA,IAAIwE,GAAsBC,GAAmBzM,EAASyM,KAAoBb,EAAQa,GAC5EA,EACA,CACE7M,MAAO6M,EACPpE,QAAS,IAGbqE,GAAgBC,MAAOpF,EAAOqF,EAAY5D,EAA0B6D,EAA2BC,KAC/F,MAAM,IAAE9E,EAAG,KAAEmC,EAAI,SAAE4C,EAAQ,UAAEC,EAAS,UAAEC,EAAS,IAAEC,EAAG,IAAEC,EAAG,QAAEC,EAAO,SAAEC,EAAQ,KAAE5M,EAAI,cAAE6M,EAAa,MAAE5F,EAAK,SAAEvD,GAAcoD,EAAME,GAChI,IAAKC,GAASvD,EACV,MAAO,CAAC,EAEZ,MAAMoJ,EAAWpD,EAAOA,EAAK,GAAKnC,EAC5BI,EAAqBC,IACnBwE,GAA6BU,EAASjF,iBACtCiF,EAASnF,kBAAkBoD,EAAUnD,GAAW,GAAKA,GAAW,KAChEkF,EAASjF,iBACb,EAEEM,EAAQ,CAAC,EACT4E,EAAU7B,EAAa3D,GACvByF,EAAajO,EAAgBwI,GAC7B0F,EAAoBF,GAAWC,EAC/BE,GAAYL,GAAiB7B,EAAYzD,MAAUA,EAAIpI,OAC1C,KAAfgN,GACC3M,MAAMC,QAAQ0M,KAAgBA,EAAWzJ,OACxCyK,EAAoB7E,EAAa8E,KAAK,KAAMpN,EAAMuI,EAA0BJ,GAC5EkF,EAAmB,CAACC,EAAWC,EAAkBC,EAAkBC,EAxlB9D,YAwlB0GC,EAvlB1G,eAwlBP,MAAM9F,EAAU0F,EAAYC,EAAmBC,EAC/CrF,EAAMnI,GAAQ,CACVf,KAAMqO,EAAYG,EAAUC,EAC5B9F,UACAL,SACG4F,EAAkBG,EAAYG,EAAUC,EAAS9F,GACvD,EAEL,GAAIyE,GACG7M,MAAMC,QAAQ0M,KAAgBA,EAAWzJ,OAC1C4J,KACKW,IAAsBC,GAAW7N,EAAkB8M,KACjDpB,EAAUoB,KAAgBA,GAC1Ba,IAAezB,EAAiB7B,GAAM/E,SACtCoI,IAAYpB,EAAcjC,GAAM/E,SAAW,CACpD,MAAM,MAAExF,EAAK,QAAEyI,GAAYqD,EAAUqB,GAC/B,CAAEnN,QAASmN,EAAU1E,QAAS0E,GAC9BP,GAAmBO,GACzB,GAAInN,IACAgJ,EAAMnI,GAAQ,CACVf,KAAM4C,EACN+F,UACAL,IAAKuF,KACFK,EAAkBtL,EAAiC+F,KAErDW,GAED,OADAZ,EAAkBC,GACXO,CAGnB,CACA,KAAK+E,GAAa7N,EAAkBoN,IAASpN,EAAkBqN,IAAO,CAClE,IAAIY,EACAK,EACJ,MAAMC,EAAY7B,GAAmBW,GAC/BmB,EAAY9B,GAAmBU,GACrC,GAAKpN,EAAkB8M,IAAgB9C,MAAM8C,GAUxC,CACD,MAAM2B,EAAYvG,EAAIwG,aAAe,IAAI3O,KAAK+M,GAC1ClH,EAAS2I,EAAUzO,SACnBmO,EAAYQ,EAAY,IAAI1O,KAAKwO,EAAUzO,QAE3C8F,EAAS4I,EAAU1O,SACnBwO,EAAYG,EAAY,IAAI1O,KAAKyO,EAAU1O,OAEnD,KAlB0D,CACtD,MAAM6O,EAAczG,EAAIsF,gBACnBV,GAAcA,EAAaA,GAC3B9M,EAAkBuO,EAAUzO,SAC7BmO,EAAYU,EAAcJ,EAAUzO,OAEnCE,EAAkBwO,EAAU1O,SAC7BwO,EAAYK,EAAcH,EAAU1O,MAE5C,CAUA,IAAImO,GAAaK,KACbN,IAAmBC,EAAWM,EAAUhG,QAASiG,EAAUjG,QAnpB9D,MACA,QAmpBQW,GAED,OADAZ,EAAkBQ,EAAMnI,GAAM4H,SACvBO,CAGnB,CACA,IAAKoE,GAAaC,KACbU,IACAjI,EAASkH,IAAgBE,GAAgB7M,MAAMC,QAAQ0M,IAAe,CACvE,MAAM8B,EAAkBlC,GAAmBQ,GACrC2B,EAAkBnC,GAAmBS,GACrCc,GAAajO,EAAkB4O,EAAgB9O,QACjDgN,EAAWzJ,OAASuL,EAAgB9O,MAClCwO,GAAatO,EAAkB6O,EAAgB/O,QACjDgN,EAAWzJ,OAASwL,EAAgB/O,MACxC,IAAImO,GAAaK,KACbN,EAAiBC,EAAWW,EAAgBrG,QAASsG,EAAgBtG,UAChEW,GAED,OADAZ,EAAkBQ,EAAMnI,GAAM4H,SACvBO,CAGnB,CACA,GAAIwE,IAAYO,GAAWjI,EAASkH,GAAa,CAC7C,MAAQhN,MAAOgP,EAAY,QAAEvG,GAAYmE,GAAmBY,GAC5D,GAAIxB,EAAQgD,KAAkBhC,EAAWiC,MAAMD,KAC3ChG,EAAMnI,GAAQ,CACVf,KAAM4C,EACN+F,UACAL,SACG4F,EAAkBtL,EAAgC+F,KAEpDW,GAED,OADAZ,EAAkBC,GACXO,CAGnB,CACA,GAAIyE,EACA,GAAIjH,EAAWiH,GAAW,CACtB,MACMyB,EAAgBxC,QADDe,EAAST,GACiBW,GAC/C,GAAIuB,IACAlG,EAAMnI,GAAQ,IACPqO,KACAlB,EA3rBT,WA2rB4DkB,EAAczG,WAEnEW,GAED,OADAZ,EAAkB0G,EAAczG,SACzBO,CAGnB,MACK,GAAI5I,EAASqN,GAAW,CACzB,IAAI0B,EAAmB,CAAC,EACxB,IAAK,MAAMpN,KAAO0L,EAAU,CACxB,IAAKpK,EAAc8L,KAAsB/F,EACrC,MAEJ,MAAM8F,EAAgBxC,QAAuBe,EAAS1L,GAAKiL,GAAaW,EAAU5L,GAC9EmN,IACAC,EAAmB,IACZD,KACAlB,EAAkBjM,EAAKmN,EAAczG,UAE5CD,EAAkB0G,EAAczG,SAC5BW,IACAJ,EAAMnI,GAAQsO,GAG1B,CACA,IAAK9L,EAAc8L,KACfnG,EAAMnI,GAAQ,CACVuH,IAAKuF,KACFwB,IAEF/F,GACD,OAAOJ,CAGnB,CAGJ,OADAR,GAAkB,GACXQ,CAAK,EAGhB,SAASoG,GAAO1I,EAAM1G,GAClB,MAAO,IAAI0G,KAAS/C,EAAsB3D,GAC9C,CAEA,IAAIqP,GAA0B,oBAAXC,aACe,IAAvBA,OAAOC,aACM,oBAAbC,SAEX,SAASC,GAAY/I,GACjB,IAAIgJ,EACJ,MAAMpP,EAAUD,MAAMC,QAAQoG,GAC9B,GAAIA,aAAgBzG,KAChByP,EAAO,IAAIzP,KAAKyG,QAEf,GAAIA,aAAgBiJ,IACrBD,EAAO,IAAIC,IAAIjJ,OAEd,IAAM2I,KAAU3I,aAAgBkJ,MAAQlJ,aAAgBmJ,YACxDvP,IAAWF,EAASsG,GAWrB,OAAOA,EAVPgJ,EAAOpP,EAAU,GAAK,CAAC,EACvB,IAAK,MAAMyB,KAAO2E,EAAM,CACpB,GAAIF,EAAWE,EAAK3E,IAAO,CACvB2N,EAAOhJ,EACP,KACJ,CACAgJ,EAAK3N,GAAO0N,GAAY/I,EAAK3E,GACjC,CAIJ,CACA,OAAO2N,CACX,CAEA,IAAII,GAAkB9P,GAAUK,MAAMC,QAAQN,GAASA,EAAMqG,KAAI,KAAe,SAAI9E,EAEhFwO,GAAsBC,IAAS,CAC/BC,YAAaD,GAAQA,IAAS5N,EAAgBG,SAC9C2N,SAAUF,IAAS5N,EAAgBC,OACnC8N,WAAYH,IAAS5N,EAAgBE,SACrC8N,QAASJ,IAAS5N,EAAgBK,IAClC4N,UAAWL,IAAS5N,EAAgBI,YAGxC,SAAS8N,GAAO5J,EAAMmD,EAAO7J,GACzB,MAAO,IACA0G,EAAK+E,MAAM,EAAG5B,MACdlG,EAAsB3D,MACtB0G,EAAK+E,MAAM5B,GAEtB,CAEA,IAAI0G,GAAc,CAAC7J,EAAM8J,EAAMC,IACtBpQ,MAAMC,QAAQoG,IAGfrF,EAAYqF,EAAK+J,MACjB/J,EAAK+J,QAAMlP,GAEfmF,EAAKgK,OAAOD,EAAI,EAAG/J,EAAKgK,OAAOF,EAAM,GAAG,IACjC9J,GANI,GASf,SAASiK,GAAQjK,EAAM1G,GACnB,MAAO,IAAI2D,EAAsB3D,MAAW2D,EAAsB+C,GACtE,CAWA,IAAIkK,GAAgB,CAAClK,EAAMmD,IAAUxI,EAAYwI,GAC3C,GAVN,SAAyBnD,EAAMmK,GAC3B,IAAIC,EAAI,EACR,MAAMC,EAAO,IAAIrK,GACjB,IAAK,MAAMmD,KAASgH,EAChBE,EAAKL,OAAO7G,EAAQiH,EAAG,GACvBA,IAEJ,OAAO5P,EAAQ6P,GAAMxN,OAASwN,EAAO,EACzC,CAGMC,CAAgBtK,EAAM/C,EAAsBkG,GAAOoH,MAAK,CAACC,EAAGC,IAAMD,EAAIC,KAExEC,GAAc,CAAC1K,EAAM2K,EAAQC,KAC7B5K,EAAK2K,GAAU,CAAC3K,EAAK4K,GAAU5K,EAAK4K,GAAU5K,EAAK2K,IAAU,EAAE,EAWnE,SAASE,GAAa9P,GAClB,IAAK,MAAMM,KAAON,EACd,IAAKJ,EAAYI,EAAIM,IACjB,OAAO,EAGf,OAAO,CACX,CACA,SAASyP,GAAM5H,EAAQlI,GACnB,MAAM+P,EAAanI,EAAM5H,GAAQ,CAACA,GAAQ8H,EAAa9H,GACjDgQ,EAAmC,GAArBD,EAAWlO,OAAcqG,EAlBjD,SAAiBA,EAAQ6H,GACrB,MAAMlO,EAASkO,EAAWhG,MAAM,GAAI,GAAGlI,OACvC,IAAIsG,EAAQ,EACZ,KAAOA,EAAQtG,GACXqG,EAASvI,EAAYuI,GAAUC,IAAUD,EAAO6H,EAAW5H,MAE/D,OAAOD,CACX,CAW0D+H,CAAQ/H,EAAQ6H,GAChE1P,EAAM0P,EAAWA,EAAWlO,OAAS,GAC3C,IAAIqO,EACAF,UACOA,EAAY3P,GAEvB,IAAK,IAAI8P,EAAI,EAAGA,EAAIJ,EAAWhG,MAAM,GAAI,GAAGlI,OAAQsO,IAAK,CACrD,IACIC,EADAjI,GAAS,EAEb,MAAMkI,EAAeN,EAAWhG,MAAM,IAAKoG,EAAI,IACzCG,EAAqBD,EAAaxO,OAAS,EAIjD,IAHIsO,EAAI,IACJD,EAAiBhI,KAEZC,EAAQkI,EAAaxO,QAAQ,CAClC,MAAM0O,EAAOF,EAAalI,GAC1BiI,EAAYA,EAAYA,EAAUG,GAAQrI,EAAOqI,GAC7CD,IAAuBnI,IACrBzJ,EAAS0R,IAAczO,EAAcyO,IAClCzR,MAAMC,QAAQwR,IAAcP,GAAaO,MAC9CF,SAAwBA,EAAeK,UAAerI,EAAOqI,IAEjEL,EAAiBE,CACrB,CACJ,CACA,OAAOlI,CACX,CAEA,IAAIsI,GAAW,CAACtL,EAAaiD,EAAO7J,KAChC4G,EAAYiD,GAAS7J,EACd4G,GAwCX,SAASuL,GAAchO,GACnB,MAAMY,EAAUnC,KACV,QAAEoC,EAAUD,EAAQC,QAAO,KAAEnE,EAAI,QAAEuR,EAAU,KAAI,iBAAEjL,GAAsBhD,GACxEiG,EAAQiI,GAAa,WAAerN,EAAQsN,eAAezR,IAC5D0R,EAAM,SAAavN,EAAQsN,eAAezR,GAAMwF,IAAImE,IACpDgI,EAAY,SAAapI,GACzB1E,EAAQ,SAAa7E,GACrB4R,EAAY,UAAa,GAC/B/M,EAAMrB,QAAUxD,EAChB2R,EAAUnO,QAAU+F,EACpBpF,EAAQgB,OAAOqB,MAAMjB,IAAIvF,GACzBsD,EAAMsD,OACFzC,EAAQwC,SAAS3G,EAAMsD,EAAMsD,OAQjCvD,EAAa,CACTS,SARa,eAAkB,EAAGkC,SAAQhG,KAAM6R,MAChD,GAAIA,IAAmBhN,EAAMrB,UAAYqO,EAAgB,CACrD,MAAM9L,EAAcpF,EAAIqF,EAAQnB,EAAMrB,QAAS,IAC/CgO,EAAUzL,GACV2L,EAAIlO,QAAUuC,EAAYP,IAAImE,EAClC,IACD,IAGChG,QAASQ,EAAQY,UAAUyB,QAE/B,MAAMsL,EAAe,eAAmBC,IACpCH,EAAUpO,SAAU,EACpBW,EAAQ6N,kBAAkBhS,EAAM+R,EAAwB,GACzD,CAAC5N,EAASnE,IAoIb,OAhDA,aAAgB,KAGZ,GAFAmE,EAAQiD,YAAYC,QAAS,EAC7BoD,EAAUzK,EAAMmE,EAAQgB,SAAWhB,EAAQY,UAAUC,MAAMnB,KAAK,CAAC,GAC7D+N,EAAUpO,QACV,GAAIW,EAAQgD,SAAS8K,SACjB9N,EAAQ+N,eAAe,CAAClS,IAAOmS,MAAMpR,IACjC,MAAMoH,EAAQxH,EAAII,EAAO6D,OAAQ5E,GAC3BoS,EAAgBzR,EAAIwD,EAAQE,WAAWO,OAAQ5E,IACjDoS,GAAiBjK,GAASiK,EAAcnT,KAAOkJ,GAASA,EAAMlJ,QAC9DkJ,EACMW,EAAI3E,EAAQE,WAAWO,OAAQ5E,EAAMmI,GACrCwI,GAAMxM,EAAQE,WAAWO,OAAQ5E,GACvCmE,EAAQY,UAAUC,MAAMnB,KAAK,CACzBe,OAAQT,EAAQE,WAAWO,SAEnC,QAGH,CACD,MAAMkC,EAAQnG,EAAIwD,EAAQ4C,QAAS/G,KACAkP,GAAmB/K,EAAQgD,SAASgI,MACtCC,YAC7BjL,EAAQE,WAAWgO,cACnBvL,GACAA,EAAME,IACNiF,GAAcnF,EAAOnG,EAAIwD,EAAQ8B,YAAajG,GAAOmE,EAAQgD,SAASmL,eAAiB/Q,EAAgBK,IAAKuC,EAAQgD,SAASiF,2BAA2B,GAAM+F,MAAMhK,IAAW3F,EAAc2F,IACzLhE,EAAQY,UAAUC,MAAMnB,KAAK,CACzBe,OAAQiG,EAA0B1G,EAAQE,WAAWO,OAAQuD,EAAOnI,MAGpF,CAEJmE,EAAQY,UAAUO,MAAMzB,KAAK,CACzB7D,OACAgG,OAAQ7B,EAAQ8B,cAEpB9B,EAAQgB,OAAOsC,OACX6B,EAAanF,EAAQ4C,SAAU7F,GAAQA,EAAIkC,WAAWe,EAAQgB,OAAOsC,SACzEtD,EAAQgB,OAAOsC,MAAQ,GACvBtD,EAAQjC,gBAAgByC,SAAWR,EAAQoO,cAAc,GAC1D,CAAChJ,EAAQvJ,EAAMmE,IAClB,aAAgB,MACXxD,EAAIwD,EAAQ8B,YAAajG,IAASmE,EAAQ6N,kBAAkBhS,GACtD,MACFmE,EAAQgD,SAASb,kBAAoBA,IAClCnC,EAAQmD,WAAWtH,EAAK,IAEjC,CAACA,EAAMmE,EAASoN,EAASjL,IACrB,CACHkM,KAAM,eAzFG,CAAChC,EAAQC,KAClB,MAAMsB,EAA0B5N,EAAQsN,eAAezR,GACvDuQ,GAAYwB,EAAyBvB,EAAQC,GAC7CF,GAAYmB,EAAIlO,QAASgN,EAAQC,GACjCqB,EAAaC,GACbP,EAAUO,GACV5N,EAAQ6N,kBAAkBhS,EAAM+R,EAAyBxB,GAAa,CAClEkC,KAAMjC,EACNkC,KAAMjC,IACP,EAAM,GAgFqB,CAACqB,EAAc9R,EAAMmE,IACnDwO,KAAM,eA/EG,CAAChD,EAAMC,KAChB,MAAMmC,EAA0B5N,EAAQsN,eAAezR,GACvD0P,GAAYqC,EAAyBpC,EAAMC,GAC3CF,GAAYgC,EAAIlO,QAASmM,EAAMC,GAC/BkC,EAAaC,GACbP,EAAUO,GACV5N,EAAQ6N,kBAAkBhS,EAAM+R,EAAyBrC,GAAa,CAClE+C,KAAM9C,EACN+C,KAAM9C,IACP,EAAM,GAsEqB,CAACkC,EAAc9R,EAAMmE,IACnD2L,QAAS,eA3HK,CAAC3Q,EAAOkL,KACtB,MAAMuI,EAAe9P,EAAsB8L,GAAYzP,IACjD4S,EAA0BjC,GAAQ3L,EAAQsN,eAAezR,GAAO4S,GACtEzO,EAAQgB,OAAOsC,MAAQ2C,EAAkBpK,EAAM,EAAGqK,GAClDqH,EAAIlO,QAAUsM,GAAQ4B,EAAIlO,QAASoP,EAAapN,IAAImE,IACpDmI,EAAaC,GACbP,EAAUO,GACV5N,EAAQ6N,kBAAkBhS,EAAM+R,EAAyBjC,GAAS,CAC9D2C,KAAMxD,GAAe9P,IACvB,GAkHoC,CAAC2S,EAAc9R,EAAMmE,IAC3DoK,OAAQ,eAvIK,CAACpP,EAAOkL,KACrB,MAAMwI,EAAc/P,EAAsB8L,GAAYzP,IAChD4S,EAA0BxD,GAAOpK,EAAQsN,eAAezR,GAAO6S,GACrE1O,EAAQgB,OAAOsC,MAAQ2C,EAAkBpK,EAAM+R,EAAwBrP,OAAS,EAAG2H,GACnFqH,EAAIlO,QAAU+K,GAAOmD,EAAIlO,QAASqP,EAAYrN,IAAImE,IAClDmI,EAAaC,GACbP,EAAUO,GACV5N,EAAQ6N,kBAAkBhS,EAAM+R,EAAyBxD,GAAQ,CAC7DkE,KAAMxD,GAAe9P,IACvB,GA8HkC,CAAC2S,EAAc9R,EAAMmE,IACzD2O,OAAQ,eAlHI9J,IACZ,MAAM+I,EAA0BhC,GAAc5L,EAAQsN,eAAezR,GAAOgJ,GAC5E0I,EAAIlO,QAAUuM,GAAc2B,EAAIlO,QAASwF,GACzC8I,EAAaC,GACbP,EAAUO,GACV5N,EAAQ6N,kBAAkBhS,EAAM+R,EAAyBhC,GAAe,CACpE0C,KAAMzJ,GACR,GA2GgC,CAAC8I,EAAc9R,EAAMmE,IACvDsL,OAAQ,eA1GK,CAACzG,EAAO7J,EAAOkL,KAC5B,MAAM0I,EAAcjQ,EAAsB8L,GAAYzP,IAChD4S,EAA0BtC,GAAOtL,EAAQsN,eAAezR,GAAOgJ,EAAO+J,GAC5E5O,EAAQgB,OAAOsC,MAAQ2C,EAAkBpK,EAAMgJ,EAAOqB,GACtDqH,EAAIlO,QAAUiM,GAAOiC,EAAIlO,QAASwF,EAAO+J,EAAYvN,IAAImE,IACzDmI,EAAaC,GACbP,EAAUO,GACV5N,EAAQ6N,kBAAkBhS,EAAM+R,EAAyBtC,GAAQ,CAC7DgD,KAAMzJ,EACN0J,KAAMzD,GAAe9P,IACvB,GAgGkC,CAAC2S,EAAc9R,EAAMmE,IACzD6O,OAAQ,eAzEG,CAAChK,EAAO7J,KACnB,MAAM+G,EAAc0I,GAAYzP,GAC1B4S,EAA0BV,GAASlN,EAAQsN,eAAezR,GAAOgJ,EAAO9C,GAC9EwL,EAAIlO,QAAU,IAAIuO,GAAyBvM,KAAI,CAAC4L,EAAMnB,IAAOmB,GAAQnB,IAAMjH,EAAuB0I,EAAIlO,QAAQyM,GAA3BtG,MACnFmI,EAAaC,GACbP,EAAU,IAAIO,IACd5N,EAAQ6N,kBAAkBhS,EAAM+R,EAAyBV,GAAU,CAC/DoB,KAAMzJ,EACN0J,KAAMxM,IACP,GAAM,EAAM,GAgEmB,CAAC4L,EAAc9R,EAAMmE,IACvD0E,QAAS,eA/DI1J,IACb,MAAM4S,EAA0BjP,EAAsB8L,GAAYzP,IAClEuS,EAAIlO,QAAUuO,EAAwBvM,IAAImE,GAC1CmI,EAAa,IAAIC,IACjBP,EAAU,IAAIO,IACd5N,EAAQ6N,kBAAkBhS,EAAM,IAAI+R,IAA2BlM,GAASA,GAAM,CAAC,GAAG,GAAM,EAAM,GA0D1D,CAACiM,EAAc9R,EAAMmE,IACzDoF,OAAQ,WAAc,IAAMA,EAAO/D,KAAI,CAACsB,EAAOkC,KAAU,IAClDlC,EACH,CAACyK,GAAUG,EAAIlO,QAAQwF,IAAUW,SAChC,CAACJ,EAAQgI,IAEtB,CAEA,SAAS0B,KACL,IAAIC,EAAa,GAiBjB,MAAO,CACH,aAAIC,GACA,OAAOD,CACX,EACArP,KApBU1E,IACV,IAAK,MAAMiU,KAAYF,EACnBE,EAASvP,KAAK1E,EAClB,EAkBAyE,UAhBewP,IACfF,EAAWG,KAAKD,GACT,CACHrP,YAAa,KACTmP,EAAaA,EAAW5S,QAAQgT,GAAMA,IAAMF,GAAS,IAa7DrP,YATgB,KAChBmP,EAAa,EAAE,EAUvB,CAEA,IAAIK,GAAepU,GAAUE,EAAkBF,KAAWG,EAAaH,GAEvE,SAASqU,GAAUC,EAASC,GACxB,GAAIH,GAAYE,IAAYF,GAAYG,GACpC,OAAOD,IAAYC,EAEvB,GAAIxU,EAAauU,IAAYvU,EAAawU,GACtC,OAAOD,EAAQE,YAAcD,EAAQC,UAEzC,MAAMC,EAAQvR,OAAOI,KAAKgR,GACpBI,EAAQxR,OAAOI,KAAKiR,GAC1B,GAAIE,EAAMlR,SAAWmR,EAAMnR,OACvB,OAAO,EAEX,IAAK,MAAMxB,KAAO0S,EAAO,CACrB,MAAME,EAAOL,EAAQvS,GACrB,IAAK2S,EAAME,SAAS7S,GAChB,OAAO,EAEX,GAAY,QAARA,EAAe,CACf,MAAM8S,EAAON,EAAQxS,GACrB,GAAKhC,EAAa4U,IAAS5U,EAAa8U,IACnCzU,EAASuU,IAASvU,EAASyU,IAC3BxU,MAAMC,QAAQqU,IAAStU,MAAMC,QAAQuU,IACnCR,GAAUM,EAAME,GACjBF,IAASE,EACX,OAAO,CAEf,CACJ,CACA,OAAO,CACX,CAEA,IAAIC,GAAiB9U,IACjB,MAAM+U,EAAQ/U,EAAQA,EAAMgV,cAAgB,EAE5C,OAAOhV,aADc+U,GAASA,EAAME,YAAcF,EAAME,YAAY1F,YAAcA,YAC9C,EAGpC2F,GAAoBrV,GAA6B,oBAAjBA,EAAQC,KAExCgO,GAAqB1F,GAAQ2D,EAAa3D,IAAQxI,EAAgBwI,GAElE+M,GAAQ/M,GAAQ0M,GAAc1M,IAAQA,EAAIgN,YAE9C,SAASC,GAAgB3O,EAAM0D,EAAS,CAAC,GACrC,MAAMkL,EAAoBjV,MAAMC,QAAQoG,GACxC,GAAItG,EAASsG,IAAS4O,EAClB,IAAK,MAAMvT,KAAO2E,EACVrG,MAAMC,QAAQoG,EAAK3E,KAClB3B,EAASsG,EAAK3E,MAAU0E,EAAkBC,EAAK3E,KAChDqI,EAAOrI,GAAO1B,MAAMC,QAAQoG,EAAK3E,IAAQ,GAAK,CAAC,EAC/CsT,GAAgB3O,EAAK3E,GAAMqI,EAAOrI,KAE5B7B,EAAkBwG,EAAK3E,MAC7BqI,EAAOrI,IAAO,GAI1B,OAAOqI,CACX,CACA,SAASmL,GAAgC7O,EAAMT,EAAYuP,GACvD,MAAMF,EAAoBjV,MAAMC,QAAQoG,GACxC,GAAItG,EAASsG,IAAS4O,EAClB,IAAK,MAAMvT,KAAO2E,EACVrG,MAAMC,QAAQoG,EAAK3E,KAClB3B,EAASsG,EAAK3E,MAAU0E,EAAkBC,EAAK3E,IAC5CV,EAAY4E,IACZmO,GAAYoB,EAAsBzT,IAClCyT,EAAsBzT,GAAO1B,MAAMC,QAAQoG,EAAK3E,IAC1CsT,GAAgB3O,EAAK3E,GAAM,IAC3B,IAAKsT,GAAgB3O,EAAK3E,KAGhCwT,GAAgC7O,EAAK3E,GAAM7B,EAAkB+F,GAAc,CAAC,EAAIA,EAAWlE,GAAMyT,EAAsBzT,IAI3HyT,EAAsBzT,IAAQsS,GAAU3N,EAAK3E,GAAMkE,EAAWlE,IAI1E,OAAOyT,CACX,CACA,IAAIC,GAAiB,CAACC,EAAezP,IAAesP,GAAgCG,EAAezP,EAAYoP,GAAgBpP,IAE3H0P,GAAkB,CAAC3V,GAAS0N,gBAAekB,cAAagH,gBAAiBvU,EAAYrB,GACnFA,EACA0N,EACc,KAAV1N,EACI6V,IACA7V,GACKA,EACDA,EACR4O,GAAe9I,EAAS9F,GACpB,IAAIC,KAAKD,GACT4V,EACIA,EAAW5V,GACXA,EAElB,SAAS8V,GAAcjO,GACnB,MAAMO,EAAMP,EAAGO,IACf,KAAIP,EAAG0C,KAAO1C,EAAG0C,KAAKoC,OAAOvE,GAAQA,EAAI7D,WAAY6D,EAAI7D,UAGzD,OAAIsH,EAAYzD,GACLA,EAAI2N,MAEXhK,EAAa3D,GACNoE,EAAc3E,EAAG0C,MAAMvK,MAE9BkV,GAAiB9M,GACV,IAAIA,EAAI4N,iBAAiB3P,KAAI,EAAGrG,WAAYA,IAEnDJ,EAAgBwI,GACTgE,EAAiBvE,EAAG0C,MAAMvK,MAE9B2V,GAAgBtU,EAAY+G,EAAIpI,OAAS6H,EAAGO,IAAIpI,MAAQoI,EAAIpI,MAAO6H,EAC9E,CAEA,IAAIoO,GAAqB,CAAC5L,EAAazC,EAASuL,EAAclG,KAC1D,MAAM7C,EAAS,CAAC,EAChB,IAAK,MAAMvJ,KAAQwJ,EAAa,CAC5B,MAAM1C,EAAQnG,EAAIoG,EAAS/G,GAC3B8G,GAASgC,EAAIS,EAAQvJ,EAAM8G,EAAME,GACrC,CACA,MAAO,CACHsL,eACAvS,MAAO,IAAIyJ,GACXD,SACA6C,4BACH,EAGDiJ,GAAgBC,GAAS9U,EAAY8U,QACnC5U,EACAyK,EAAQmK,GACJA,EAAKC,OACLhW,EAAS+V,GACLnK,EAAQmK,EAAKnW,OACTmW,EAAKnW,MAAMoW,OACXD,EAAKnW,MACTmW,EAEVE,GAAiBnL,GAAYA,EAAQpD,QACpCoD,EAAQiC,UACLjC,EAAQoC,KACRpC,EAAQqC,KACRrC,EAAQkC,WACRlC,EAAQmC,WACRnC,EAAQsC,SACRtC,EAAQuC,UAEhB,SAAS6I,GAAkB7Q,EAAQmC,EAAS/G,GACxC,MAAMmI,EAAQxH,EAAIiE,EAAQ5E,GAC1B,GAAImI,GAASM,EAAMzI,GACf,MAAO,CACHmI,QACAnI,QAGR,MAAMD,EAAQC,EAAKgB,MAAM,KACzB,KAAOjB,EAAM2C,QAAQ,CACjB,MAAM+C,EAAY1F,EAAM2V,KAAK,KACvB5O,EAAQnG,EAAIoG,EAAStB,GACrBkQ,EAAahV,EAAIiE,EAAQa,GAC/B,GAAIqB,IAAUtH,MAAMC,QAAQqH,IAAU9G,IAASyF,EAC3C,MAAO,CAAEzF,QAEb,GAAI2V,GAAcA,EAAW1W,KACzB,MAAO,CACHe,KAAMyF,EACN0C,MAAOwN,GAGf5V,EAAM6V,KACV,CACA,MAAO,CACH5V,OAER,CAEA,IAAI6V,GAAiB,CAACnL,EAAaxC,EAAWmK,EAAayD,EAAgB3G,KACnEA,EAAKI,WAGC8C,GAAelD,EAAKK,YACjBtH,GAAawC,IAEjB2H,EAAcyD,EAAezG,SAAWF,EAAKE,WAC1C3E,IAEH2H,EAAcyD,EAAexG,WAAaH,EAAKG,aAC7C5E,GAKXqL,GAAkB,CAACxO,EAAKvH,KAAUK,EAAQM,EAAI4G,EAAKvH,IAAO0C,QAAUiO,GAAMpJ,EAAKvH,GAEnF,MAAMgW,GAAiB,CACnB7G,KAAM5N,EAAgBG,SACtBoU,eAAgBvU,EAAgBE,SAChCwU,kBAAkB,GAEtB,SAASC,GAAkB5S,EAAQ,CAAC,GAChC,IAgCI6S,EAhCAhP,EAAW,IACR6O,MACA1S,GAEHe,EAAa,CACbE,SAAS,EACTG,cAAc,EACdF,YAAa,CAAC,EACd6N,aAAa,EACb+D,YAAa,EACb3R,cAAe,CAAC,EAChB4R,cAAc,EACdC,oBAAoB,EACpB3R,SAAS,EACTC,OAAQ,CAAC,GAETmC,EAAU,CAAC,EACXN,EAAiBmI,GAAYzH,EAAS0N,gBAAkB,CAAC,EACzD5O,EAAckB,EAASb,iBACrB,CAAC,EACDsI,GAAYnI,GACdW,EAAc,CACdC,QAAQ,EACRJ,OAAO,EACP3B,OAAO,GAEPH,EAAS,CACT8B,MAAO,IAAI6H,IACXyH,QAAS,IAAIzH,IACbtI,MAAO,IAAIsI,IACXxJ,MAAO,IAAIwJ,KAGX0H,EAAQ,EACRC,EAAiB,CAAC,EACtB,MAAMvU,EAAkB,CACpBqC,SAAS,EACTC,aAAa,EACbC,eAAe,EACfC,cAAc,EACdC,SAAS,EACTC,QAAQ,GAENG,EAAY,CACdO,MAAO2N,KACPzM,MAAOyM,KACPjO,MAAOiO,MAELyD,EAA6BxH,GAAmB/H,EAASgI,MACzDwH,EAA4BzH,GAAmB/H,EAAS2O,gBACxDc,EAAmCzP,EAASmL,eAAiB/Q,EAAgBK,IAK7E2Q,EAAerG,MAAO2K,IACxB,IAAIlS,GAAU,EAYd,OAXIzC,EAAgByC,UAChBA,EAAUwC,EAAS8K,SACbzP,SAAqB0P,KAAkBtN,cACjCkS,EAAyB/P,GAAS,GACzC8P,GAAoBlS,IAAYN,EAAWM,UAC5CN,EAAWM,QAAUA,EACrBI,EAAUC,MAAMnB,KAAK,CACjBc,cAILA,CAAO,EA0CZoS,EAAsB,CAAC/W,EAAMgX,EAAsB7X,EAAOoI,KAC5D,MAAMT,EAAQnG,EAAIoG,EAAS/G,GAC3B,GAAI8G,EAAO,CACP,MAAMhG,EAAeH,EAAIsF,EAAajG,EAAMQ,EAAYrB,GAASwB,EAAI8F,EAAgBzG,GAAQb,GAC7FqB,EAAYM,IACPyG,GAAOA,EAAI0P,gBACZD,EACElO,EAAI7C,EAAajG,EAAMgX,EAAuBlW,EAAemU,GAAcnO,EAAME,KACjFkQ,EAAclX,EAAMc,GAC1BsG,EAAYH,OAASsL,GACzB,GAEE4E,EAAsB,CAACnX,EAAMoX,EAAY1M,EAAa2M,EAAaC,KACrE,IAAIC,GAAe,EACnB,MAAMC,EAAS,CACXxX,QAEEyX,EAAyB9W,EAAI0D,EAAWI,cAAezE,GAC7D,GAAIkC,EAAgBqC,QAAS,CACzB,MAAMmT,EAAsBrT,EAAWE,QACvCF,EAAWE,QAAUiT,EAAOjT,QAAUoT,IACtCJ,EAAeG,IAAwBF,EAAOjT,OAClD,CACA,GAAIrC,EAAgBsC,eAAiBkG,GAAe2M,GAAc,CAC9D,MAAMO,EAAuBjX,EAAI0D,EAAWG,YAAaxE,GAC1BwT,GAAU7S,EAAI8F,EAAgBzG,GAAOoX,GAE9DzG,GAAMtM,EAAWG,YAAaxE,GAC9B8I,EAAIzE,EAAWG,YAAaxE,GAAM,GACxCwX,EAAOhT,YAAcH,EAAWG,YAChC+S,EACIA,GACIK,IAAyBjX,EAAI0D,EAAWG,YAAaxE,EACjE,CAUA,OATI0K,IAAgB+M,IAChB3O,EAAIzE,EAAWI,cAAezE,EAAM0K,GACpC8M,EAAO/S,cAAgBJ,EAAWI,cAClC8S,EACIA,GACKrV,EAAgBuC,eACbgT,IAA2B/M,GAE3C6M,GAAgBD,GAAgBvS,EAAUC,MAAMnB,KAAK2T,GAC9CD,EAAeC,EAAS,CAAC,CAAC,EAwC/BtF,EAAiBhG,MAAOlM,GAASmH,EAAS8K,eACpC9K,EAAS8K,SAAS,IAAKhM,GAAekB,EAAS0Q,QAASzC,GAAmBpV,GAAQmF,EAAO8B,MAAOF,EAASI,EAASmL,aAAcnL,EAASiF,4BAChJ,CAAC,EAgBD0K,EAA2B5K,MAAO3C,EAAQuO,EAAsBD,EAAU,CAC5EE,OAAO,MAEP,IAAK,MAAM/X,KAAQuJ,EAAQ,CACvB,MAAMzC,EAAQyC,EAAOvJ,GACrB,GAAI8G,EAAO,CACP,MAAM,GAAEE,KAAOoQ,GAAetQ,EAC9B,GAAIE,EAAI,CACJ,MAAMgR,EAAmB7S,EAAOqB,MAAMvG,IAAI+G,EAAGhH,MACvCiY,QAAmBhM,GAAcnF,EAAOnG,EAAIsF,EAAae,EAAGhH,MAAO4W,EAAkCzP,EAASiF,0BAA2B4L,GAC/I,GAAIC,EAAWjR,EAAGhH,QACd6X,EAAQE,OAAQ,EACZD,GACA,OAGPA,IACInX,EAAIsX,EAAYjR,EAAGhH,MACdgY,EACInN,EAA0BxG,EAAWO,OAAQqT,EAAYjR,EAAGhH,MAC5D8I,EAAIzE,EAAWO,OAAQoC,EAAGhH,KAAMiY,EAAWjR,EAAGhH,OAClD2Q,GAAMtM,EAAWO,OAAQoC,EAAGhH,MAC1C,CACAoX,SACWN,EAAyBM,EAAYU,EAAsBD,EAC1E,CACJ,CACA,OAAOA,EAAQE,KAAK,EAalBJ,EAAY,CAAC3X,EAAM6F,KAAU7F,GAAQ6F,GAAQiD,EAAI7C,EAAajG,EAAM6F,IACrE2N,GAAU0E,IAAazR,IACtBN,EAAY,CAACpG,EAAOe,EAAcuE,KACpC,MAAMU,EAAc,IACZqB,EAAYH,MACVhB,EACAzF,EAAYM,GACR2F,EACAxB,EAASlF,GACL,CAAE,CAACA,GAAQe,GACXA,GAElB,OAAOoE,EAAoBnF,EAAOoF,EAAQY,EAAaV,EAAS,EAG9D6R,EAAgB,CAAClX,EAAMb,EAAOkL,EAAU,CAAC,KAC3C,MAAMvD,EAAQnG,EAAIoG,EAAS/G,GAC3B,IAAIoX,EAAajY,EACjB,GAAI2H,EAAO,CACP,MAAMqR,EAAiBrR,EAAME,GACzBmR,KACCA,EAAezU,UACZoF,EAAI7C,EAAajG,EAAM8U,GAAgB3V,EAAOgZ,IAClDf,EACI5I,IAASyF,GAAckE,EAAe5Q,MAAQlI,EAAkBF,GAC1D,GACAA,EACNkV,GAAiB8D,EAAe5Q,KAChC,IAAI4Q,EAAe5Q,IAAI8C,SAAS+N,SAASC,GAAeA,EAAUC,SAAWlB,EAAWrD,SAASsE,EAAUlZ,SAEtGgZ,EAAezO,KAChB3K,EAAgBoZ,EAAe5Q,KAC/B4Q,EAAezO,KAAKhH,OAAS,EACvByV,EAAezO,KAAK0O,SAASG,KAAkBA,EAAYtB,iBAAmBsB,EAAY7U,YACvF6U,EAAY1Y,QAAUL,MAAMC,QAAQ2X,KAC7BA,EAAWvU,MAAMgD,GAASA,IAAS0S,EAAYpZ,QACjDiY,IAAemB,EAAYpZ,SACnCgZ,EAAezO,KAAK,KACjByO,EAAezO,KAAK,GAAG7J,UAAYuX,GAG5Ce,EAAezO,KAAK0O,SAASI,GAAcA,EAAS3Y,QAAU2Y,EAASrZ,QAAUiY,IAGhFpM,EAAYmN,EAAe5Q,KAChC4Q,EAAe5Q,IAAIpI,MAAQ,IAG3BgZ,EAAe5Q,IAAIpI,MAAQiY,EACtBe,EAAe5Q,IAAItI,MACpB8F,EAAUO,MAAMzB,KAAK,CACjB7D,UAKpB,EACCqK,EAAQgN,aAAehN,EAAQoO,cAC5BtB,EAAoBnX,EAAMoX,EAAY/M,EAAQoO,YAAapO,EAAQgN,aAAa,GACpFhN,EAAQqO,gBAAkBC,EAAQ3Y,EAAK,EAErC4Y,EAAY,CAAC5Y,EAAMb,EAAOkL,KAC5B,IAAK,MAAMwO,KAAY1Z,EAAO,CAC1B,MAAMiY,EAAajY,EAAM0Z,GACnBpT,EAAY,GAAGzF,KAAQ6Y,IACvB/R,EAAQnG,EAAIoG,EAAStB,IAC1BN,EAAOqB,MAAMvG,IAAID,IACbuT,GAAY6D,MACZtQ,GAAUA,EAAME,KAChB9H,EAAakY,GAEZF,EAAczR,EAAW2R,EAAY/M,GADrCuO,EAAUnT,EAAW2R,EAAY/M,EAE3C,GAEEyO,EAAW,CAAC9Y,EAAMb,EAAOkL,EAAU,CAAC,KACtC,MAAMvD,EAAQnG,EAAIoG,EAAS/G,GACrBqM,EAAelH,EAAOqB,MAAMvG,IAAID,GAChC+Y,EAAanK,GAAYzP,GAC/B2J,EAAI7C,EAAajG,EAAM+Y,GACnB1M,GACAtH,EAAUyB,MAAM3C,KAAK,CACjB7D,OACAgG,OAAQC,KAEP/D,EAAgBqC,SAAWrC,EAAgBsC,cAC5C6F,EAAQgN,cACRhT,EAAWG,YAAcoQ,GAAenO,EAAgBR,GACxDlB,EAAUC,MAAMnB,KAAK,CACjB7D,OACAwE,YAAaH,EAAWG,YACxBD,QAASoT,EAAU3X,EAAM+Y,QAKjCjS,GAAUA,EAAME,IAAO3H,EAAkB0Z,GAEnC7B,EAAclX,EAAM+Y,EAAY1O,GADhCuO,EAAU5Y,EAAM+Y,EAAY1O,GAGtCI,EAAUzK,EAAMmF,IAAWJ,EAAUC,MAAMnB,KAAK,CAAC,GACjDkB,EAAUO,MAAMzB,KAAK,CACjB7D,QACF,EAEAyB,EAAWyK,MAAOvM,IACpB,MAAMC,EAASD,EAAMC,OACrB,IAAII,EAAOJ,EAAOI,KAClB,MAAM8G,EAAQnG,EAAIoG,EAAS/G,GAC3B,GAAI8G,EAAO,CACP,IAAIqB,EACAxD,EACJ,MAAMyS,EAAaxX,EAAOX,KACpBgW,GAAcnO,EAAME,IACpBtH,EAAcC,GACd+K,EAAc/K,EAAMV,OAASkC,EAAOC,MAAQzB,EAAMV,OAASkC,EAAOE,UAClE2X,GAAyBxD,GAAc1O,EAAME,MAC9CG,EAAS8K,WACTtR,EAAI0D,EAAWO,OAAQ5E,KACvB8G,EAAME,GAAGiS,MACVpD,GAAenL,EAAa/J,EAAI0D,EAAWI,cAAezE,GAAOqE,EAAWgO,YAAasE,EAA2BD,GAClHwC,EAAUzO,EAAUzK,EAAMmF,EAAQuF,GACxC5B,EAAI7C,EAAajG,EAAMoX,GACnB1M,GACA5D,EAAME,GAAGxF,QAAUsF,EAAME,GAAGxF,OAAO7B,GACnCwW,GAAsBA,EAAmB,IAEpCrP,EAAME,GAAGvF,UACdqF,EAAME,GAAGvF,SAAS9B,GAEtB,MAAMmI,EAAaqP,EAAoBnX,EAAMoX,EAAY1M,GAAa,GAChE4M,GAAgB9U,EAAcsF,IAAeoR,EAMnD,IALCxO,GACG3F,EAAUO,MAAMzB,KAAK,CACjB7D,OACAf,KAAMU,EAAMV,OAEhB+Z,EACA,OAAQ1B,GACJvS,EAAUC,MAAMnB,KAAK,CAAE7D,UAAUkZ,EAAU,CAAC,EAAIpR,IAOxD,IALC4C,GAAewO,GAAWnU,EAAUC,MAAMnB,KAAK,CAAC,GACjD4S,EAAezW,IAAQyW,EAAezW,GAAQ,GAC9C+E,EAAUC,MAAMnB,KAAK,CACjBa,cAAc,IAEdyC,EAAS8K,SAAU,CACnB,MAAM,OAAErN,SAAiBsN,EAAe,CAAClS,IACnCmZ,EAA4B1D,GAAkBpR,EAAWO,OAAQmC,EAAS/G,GAC1EoZ,EAAoB3D,GAAkB7Q,EAAQmC,EAASoS,EAA0BnZ,MAAQA,GAC/FmI,EAAQiR,EAAkBjR,MAC1BnI,EAAOoZ,EAAkBpZ,KACzB2E,EAAUnC,EAAcoC,EAC5B,MAEIuD,SAAe8D,GAAcnF,EAAOnG,EAAIsF,EAAajG,GAAO4W,EAAkCzP,EAASiF,4BAA4BpM,GACnI2E,QAAgB4N,GAAa,GAEjCzL,EAAME,GAAGiS,MACLN,EAAQ7R,EAAME,GAAGiS,MA9PD/M,OAAOlM,EAAM2E,EAASwD,EAAOL,KACrD,MAAMuR,EAAqB1Y,EAAI0D,EAAWO,OAAQ5E,GAC5CsZ,EAAoBpX,EAAgByC,SAAWN,EAAWM,UAAYA,EA1G/D,IAACb,EAsHd,GAXIR,EAAMiW,YAAcpR,GA3GVrE,EA4GoB,IAvDjB,EAAC9D,EAAMmI,KACxBW,EAAIzE,EAAWO,OAAQ5E,EAAMmI,GAC7BpD,EAAUC,MAAMnB,KAAK,CACjBe,OAAQP,EAAWO,QACrB,EAmDsC4U,CAAaxZ,EAAMmI,GAAvDgO,EA5GwBsD,IAC5BC,aAAalD,GACbA,EAAQ/H,OAAOkL,WAAW7V,EAAU2V,EAAK,EA2GrCtD,EAAmB7S,EAAMiW,cAGzBG,aAAalD,GACbL,EAAqB,KACrBhO,EACMW,EAAIzE,EAAWO,OAAQ5E,EAAMmI,GAC7BwI,GAAMtM,EAAWO,OAAQ5E,KAE9BmI,GAASqL,GAAU6F,EAAoBlR,GAASkR,KAChD7W,EAAcsF,IACfwR,EAAmB,CACnB,MAAMM,EAAmB,IAClB9R,KACCwR,EAAoB,CAAE3U,WAAY,CAAC,EACvCC,OAAQP,EAAWO,OACnB5E,QAEJqE,EAAa,IACNA,KACAuV,GAEP7U,EAAUC,MAAMnB,KAAK+V,EACzB,CACAnD,EAAezW,KACXkC,EAAgBwC,eACfrC,OAAO2D,OAAOyQ,GAAgBvT,MAAM2W,GAAMA,MAC3C9U,EAAUC,MAAMnB,KAAK,CACjBa,cAAc,IAElB+R,EAAiB,CAAC,EACtB,EA2NIqD,CAAoB9Z,EAAM2E,EAASwD,EAAOL,EAC9C,GAEE6Q,EAAUzM,MAAOlM,EAAMqK,EAAU,CAAC,KACpC,IAAI1F,EACA2J,EACJ,MAAMyL,EAAajX,EAAsB9C,GAIzC,GAHA+E,EAAUC,MAAMnB,KAAK,CACjBa,cAAc,IAEdyC,EAAS8K,SAAU,CACnB,MAAMrN,OAjOsBsH,OAAOnM,IACvC,MAAM,OAAE6E,SAAiBsN,IACzB,GAAInS,EACA,IAAK,MAAMC,KAAQD,EAAO,CACtB,MAAMoI,EAAQxH,EAAIiE,EAAQ5E,GAC1BmI,EACMW,EAAIzE,EAAWO,OAAQ5E,EAAMmI,GAC7BwI,GAAMtM,EAAWO,OAAQ5E,EACnC,MAGAqE,EAAWO,OAASA,EAExB,OAAOA,CAAM,EAoNYoV,CAA4BxZ,EAAYR,GAAQA,EAAO+Z,GAC5EpV,EAAUnC,EAAcoC,GACxB0J,EAAmBtO,GACZ+Z,EAAW7W,MAAMlD,GAASW,EAAIiE,EAAQ5E,KACvC2E,CACV,MACS3E,GACLsO,SAA0B2L,QAAQrY,IAAImY,EAAWvU,KAAI0G,MAAOzG,IACxD,MAAMqB,EAAQnG,EAAIoG,EAAStB,GAC3B,aAAaqR,EAAyBhQ,GAASA,EAAME,GAAK,CAAE,CAACvB,GAAYqB,GAAUA,EAAM,MACxFgF,MAAMvL,UACR+N,GAAqBjK,EAAWM,UAAY4N,KAG/CjE,EAAmB3J,QAAgBmS,EAAyB/P,GAchE,OAZAhC,EAAUC,MAAMnB,KAAK,KACZoB,EAASjF,IACTkC,EAAgByC,SAAWA,IAAYN,EAAWM,QACjD,CAAC,EACD,CAAE3E,WACJmH,EAAS8K,SAAW,CAAEtN,WAAY,CAAC,EACvCC,OAAQP,EAAWO,OACnBF,cAAc,IAElB2F,EAAQC,cACHgE,GACDhF,EAAavC,GAAU7F,GAAQP,EAAI0D,EAAWO,OAAQ1D,IAAMlB,EAAO+Z,EAAa5U,EAAO8B,OACpFqH,CAAgB,EAErB4J,EAAa6B,IACf,MAAM/T,EAAS,IACRS,KACCW,EAAYH,MAAQhB,EAAc,CAAC,GAE3C,OAAOzF,EAAYuZ,GACb/T,EACAf,EAAS8U,GACLpZ,EAAIqF,EAAQ+T,GACZA,EAAWvU,KAAKxF,GAASW,EAAIqF,EAAQhG,IAAM,EAEnDka,EAAgB,CAACla,EAAMiC,KAAc,CACvC+F,UAAWrH,GAAKsB,GAAaoC,GAAYO,OAAQ5E,GACjDuE,UAAW5D,GAAKsB,GAAaoC,GAAYG,YAAaxE,GACtDkI,YAAavH,GAAKsB,GAAaoC,GAAYI,cAAezE,GAC1DmI,MAAOxH,GAAKsB,GAAaoC,GAAYO,OAAQ5E,KA4B3CsH,EAAa,CAACtH,EAAMqK,EAAU,CAAC,KACjC,IAAK,MAAM5E,KAAazF,EAAO8C,EAAsB9C,GAAQmF,EAAO8B,MAChE9B,EAAO8B,MAAMkT,OAAO1U,GACpBN,EAAOqB,MAAM2T,OAAO1U,GAChB9E,EAAIoG,EAAStB,KACR4E,EAAQ+P,YACTzJ,GAAM5J,EAAStB,GACfkL,GAAM1K,EAAaR,KAEtB4E,EAAQgQ,WAAa1J,GAAMtM,EAAWO,OAAQa,IAC9C4E,EAAQiQ,WAAa3J,GAAMtM,EAAWG,YAAaiB,IACnD4E,EAAQkQ,aAAe5J,GAAMtM,EAAWI,cAAegB,IACvD0B,EAASb,mBACL+D,EAAQmQ,kBACT7J,GAAMlK,EAAgBhB,IAGlCV,EAAUO,MAAMzB,KAAK,CAAC,GACtBkB,EAAUC,MAAMnB,KAAK,IACdQ,KACEgG,EAAQiQ,UAAiB,CAAE/V,QAASoT,KAAhB,CAAC,KAE7BtN,EAAQoQ,aAAelI,GAAc,EAEpC5L,EAAW,CAAC3G,EAAMqK,EAAU,CAAC,KAC/B,IAAIvD,EAAQnG,EAAIoG,EAAS/G,GACzB,MAAM0a,EAAoB3P,EAAUV,EAAQ3G,UAiB5C,OAhBAoF,EAAI/B,EAAS/G,EAAM,IACX8G,GAAS,CAAC,EACdE,GAAI,IACIF,GAASA,EAAME,GAAKF,EAAME,GAAK,CAAEO,IAAK,CAAEvH,SAC5CA,OACAiH,OAAO,KACJoD,KAGXlF,EAAO8B,MAAM1B,IAAIvF,GACjB8G,EACM4T,GACE5R,EAAI7C,EAAajG,EAAMqK,EAAQ3G,cACzBhD,EACAC,EAAIsF,EAAajG,EAAMiV,GAAcnO,EAAME,MACnD+P,EAAoB/W,GAAM,EAAMqK,EAAQlL,OACvC,IACCub,EAAoB,CAAEhX,SAAU2G,EAAQ3G,UAAa,CAAC,KACtDyD,EAASiF,0BACP,CACEE,WAAYjC,EAAQiC,SACpBG,IAAK4I,GAAahL,EAAQoC,KAC1BC,IAAK2I,GAAahL,EAAQqC,KAC1BF,UAAW6I,GAAahL,EAAQmC,WAChCD,UAAW8I,GAAahL,EAAQkC,WAChCI,QAAS0I,GAAahL,EAAQsC,UAEhC,CAAC,EACP3M,OACAyB,WACAD,OAAQC,EACR8F,IAAMA,IACF,GAAIA,EAAK,CACLZ,EAAS3G,EAAMqK,GACfvD,EAAQnG,EAAIoG,EAAS/G,GACrB,MAAM2a,EAAWna,EAAY+G,EAAIpI,QAC3BoI,EAAIqT,kBACArT,EAAIqT,iBAAiB,yBAAyB,IAElDrT,EACAsT,EAAkB5N,GAAkB0N,GACpCjR,EAAO5C,EAAME,GAAG0C,MAAQ,GAC9B,GAAImR,EACEnR,EAAK7G,MAAM2I,GAAWA,IAAWmP,IACjCA,IAAa7T,EAAME,GAAGO,IACxB,OAEJuB,EAAI/B,EAAS/G,EAAM,CACfgH,GAAI,IACGF,EAAME,MACL6T,EACE,CACEnR,KAAM,IACCA,EAAKpJ,OAAOgU,IACfqG,KACMnb,MAAMC,QAAQkB,EAAI8F,EAAgBzG,IAClC,CAAC,CAAC,GACF,IAEVuH,IAAK,CAAEtI,KAAM0b,EAAS1b,KAAMe,SAE9B,CAAEuH,IAAKoT,MAGrB5D,EAAoB/W,GAAM,OAAOU,EAAWia,EAChD,MAEI7T,EAAQnG,EAAIoG,EAAS/G,EAAM,CAAC,GACxB8G,EAAME,KACNF,EAAME,GAAGC,OAAQ,IAEpBE,EAASb,kBAAoB+D,EAAQ/D,qBAChCxG,EAAmBqF,EAAOqB,MAAOxG,KAASoH,EAAYC,SACxDlC,EAAOoR,QAAQhR,IAAIvF,EAC3B,EAEP,EAgLL,MAAO,CACHmE,QAAS,CACLwC,WACAW,aACA4S,gBACAhI,iBACA/L,YACAwR,YACApF,eACAnM,iBA9hBiB,KACrB,IAAK,MAAMpG,KAAQmF,EAAOoR,QAAS,CAC/B,MAAMzP,EAAQnG,EAAIoG,EAAS/G,GAC3B8G,IACKA,EAAME,GAAG0C,KACJ5C,EAAME,GAAG0C,KAAKoC,OAAOvE,IAAS+M,GAAK/M,MAClC+M,GAAKxN,EAAME,GAAGO,OACrBD,EAAWtH,EACnB,CACAmF,EAAOoR,QAAU,IAAIzH,GAAK,EAshBtBkD,kBAzsBkB,CAAChS,EAAMgG,EAAS,GAAI8U,EAAQC,EAAMC,GAAkB,EAAMC,GAA6B,KAC7G,GAAIF,GAAQD,EAAQ,CAEhB,GADA1T,EAAYC,QAAS,EACjB4T,GAA8Bzb,MAAMC,QAAQkB,EAAIoG,EAAS/G,IAAQ,CACjE,MAAM+F,EAAc+U,EAAOna,EAAIoG,EAAS/G,GAAO+a,EAAKtI,KAAMsI,EAAKrI,MAC/DsI,GAAmBlS,EAAI/B,EAAS/G,EAAM+F,EAC1C,CACA,GAAI7D,EAAgB0C,QAChBqW,GACAzb,MAAMC,QAAQkB,EAAI0D,EAAWO,OAAQ5E,IAAQ,CAC7C,MAAM4E,EAASkW,EAAOna,EAAI0D,EAAWO,OAAQ5E,GAAO+a,EAAKtI,KAAMsI,EAAKrI,MACpEsI,GAAmBlS,EAAIzE,EAAWO,OAAQ5E,EAAM4E,GAChDmR,GAAgB1R,EAAWO,OAAQ5E,EACvC,CACA,GAAIkC,EAAgBuC,eAChBwW,GACAzb,MAAMC,QAAQkB,EAAI0D,EAAWI,cAAezE,IAAQ,CACpD,MAAMyE,EAAgBqW,EAAOna,EAAI0D,EAAWI,cAAezE,GAAO+a,EAAKtI,KAAMsI,EAAKrI,MAClFsI,GAAmBlS,EAAIzE,EAAWI,cAAezE,EAAMyE,EAC3D,CACIvC,EAAgBsC,cAChBH,EAAWG,YAAcoQ,GAAenO,EAAgBR,IAE5DlB,EAAUC,MAAMnB,KAAK,CACjBU,QAASoT,EAAU3X,EAAMgG,GACzBxB,YAAaH,EAAWG,YACxBI,OAAQP,EAAWO,OACnBD,QAASN,EAAWM,SAE5B,MAEImE,EAAI7C,EAAajG,EAAMgG,EAC3B,EA0qBIyL,eAvgBgBzR,GAASK,EAAQM,EAAIyG,EAAYH,MAAQhB,EAAcQ,EAAgBzG,EAAMsD,EAAMgD,iBAAmB3F,EAAI8F,EAAgBzG,EAAM,IAAM,KAwgBtJ+E,YACA7C,kBACA,WAAI6E,GACA,OAAOA,CACX,EACA,eAAId,GACA,OAAOA,CACX,EACA,eAAImB,GACA,OAAOA,CACX,EACA,eAAIA,CAAYjI,GACZiI,EAAcjI,CAClB,EACA,kBAAIsH,GACA,OAAOA,CACX,EACA,UAAItB,GACA,OAAOA,CACX,EACA,UAAIA,CAAOhG,GACPgG,EAAShG,CACb,EACA,cAAIkF,GACA,OAAOA,CACX,EACA,cAAIA,CAAWlF,GACXkF,EAAalF,CACjB,EACA,YAAIgI,GACA,OAAOA,CACX,EACA,YAAIA,CAAShI,GACTgI,EAAW,IACJA,KACAhI,EAEX,GAEJwZ,UACAhS,WACAuU,aAnOiB,CAACC,EAASC,IAAclP,MAAOmP,IAC5CA,IACAA,EAAEC,gBAAkBD,EAAEC,iBACtBD,EAAEE,SAAWF,EAAEE,WAEnB,IAAIC,GAAoB,EACpBzV,EAAc6I,GAAY3I,GAC9BlB,EAAUC,MAAMnB,KAAK,CACjBwS,cAAc,IAElB,IACI,GAAIlP,EAAS8K,SAAU,CACnB,MAAM,OAAErN,EAAM,OAAEoB,SAAiBkM,IACjC7N,EAAWO,OAASA,EACpBmB,EAAcC,CAClB,YAEU8Q,EAAyB/P,GAE/BvE,EAAc6B,EAAWO,SACzBG,EAAUC,MAAMnB,KAAK,CACjBe,OAAQ,CAAC,EACTyR,cAAc,UAEZ8E,EAAQpV,EAAasV,KAGvBD,SACMA,EAAU,IAAK/W,EAAWO,QAAUyW,GAE9ClU,EAAS8O,kBACL3M,EAAavC,GAAU7F,GAAQP,EAAI0D,EAAWO,OAAQ1D,IAAMiE,EAAO8B,OAE/E,CACA,MAAOwU,GAEH,MADAD,GAAoB,EACdC,CACV,CACA,QACIpX,EAAWgO,aAAc,EACzBtN,EAAUC,MAAMnB,KAAK,CACjBwO,aAAa,EACbgE,cAAc,EACdC,mBAAoB9T,EAAc6B,EAAWO,SAAW4W,EACxDpF,YAAa/R,EAAW+R,YAAc,EACtCxR,OAAQP,EAAWO,QAE3B,GAqLAU,MAlVU,CAACtF,EAAMc,IAAiB6E,EAAW3F,GAC3C+E,EAAUO,MAAM1B,UAAU,CACxBC,KAAO6X,GAAS1b,EAAKmG,OAAUzF,EAAWI,GAAe4a,KAE3DvV,EAAUnG,EAAMc,GAAc,GA+UhCgY,WACAZ,YACAyD,MAvEU,CAACvW,EAAYwW,IAtFZ,EAACxW,EAAYwW,EAAmB,CAAC,KAC5C,MAAMC,EAAgBzW,GAAcqB,EAC9BqV,EAAqBlN,GAAYiN,GACjC7V,EAASZ,IAAe5C,EAAc4C,GACtC0W,EACArV,EAIN,GAHKmV,EAAiBG,oBAClBtV,EAAiBoV,IAEhBD,EAAiBI,WAAY,CAC9B,GAAIJ,EAAiBK,gBACjB,IAAK,MAAMxW,KAAaN,EAAO8B,MAC3BtG,EAAI0D,EAAWG,YAAaiB,GACtBqD,EAAI9C,EAAQP,EAAW9E,EAAIsF,EAAaR,IACxCqT,EAASrT,EAAW9E,EAAIqF,EAAQP,QAGzC,CACD,GAAI+I,IAAShO,EAAY4E,GACrB,IAAK,MAAMpF,KAAQmF,EAAO8B,MAAO,CAC7B,MAAMH,EAAQnG,EAAIoG,EAAS/G,GAC3B,GAAI8G,GAASA,EAAME,GAAI,CACnB,MAAMmR,EAAiB3Y,MAAMC,QAAQqH,EAAME,GAAG0C,MACxC5C,EAAME,GAAG0C,KAAK,GACd5C,EAAME,GAAGO,IACf,IACI,GAAI0M,GAAckE,GAAiB,CAC/BA,EAAe+D,QAAQ,QAAQP,QAC/B,KACJ,CACJ,CACA,MAAOQ,GAAM,CACjB,CACJ,CAEJpV,EAAU,CAAC,CACf,CACAd,EAAc3C,EAAMgD,iBACdsV,EAAiBG,kBACbnN,GAAYnI,GACZ,CAAC,EACLqV,EACN/W,EAAUyB,MAAM3C,KAAK,CACjBmC,WAEJjB,EAAUO,MAAMzB,KAAK,CACjBmC,UAER,CACAb,EAAS,CACL8B,MAAO,IAAI6H,IACXyH,QAAS,IAAIzH,IACbtI,MAAO,IAAIsI,IACXxJ,MAAO,IAAIwJ,IACXpJ,UAAU,EACV+B,MAAO,IAEXL,EAAYH,OACP/E,EAAgByC,WAAaiX,EAAiBnB,YACnDrT,EAAY9B,QAAUhC,EAAMgD,iBAC5BvB,EAAUC,MAAMnB,KAAK,CACjBuS,YAAawF,EAAiBQ,gBACxB/X,EAAW+R,YACX,EACN7R,QAASqX,EAAiBtB,WAAasB,EAAiBK,gBAClD5X,EAAWE,WACRqX,EAAiBG,mBACjBvI,GAAUpO,EAAYqB,IAC/B4L,cAAauJ,EAAiBS,iBACxBhY,EAAWgO,YAEjB7N,YAAaoX,EAAiBtB,WAAasB,EAAiBK,gBACtD5X,EAAWG,YACXoX,EAAiBG,mBAAqB3W,EAClCwP,GAAenO,EAAgBrB,GAC/B,CAAC,EACXX,cAAemX,EAAiBrB,YAC1BlW,EAAWI,cACX,CAAC,EACPG,OAAQgX,EAAiBU,WACnBjY,EAAWO,OACX,CAAC,EACPyR,cAAc,EACdC,oBAAoB,GACtB,EAE0CiG,CAAO5W,EAAWP,GAC5DA,EAAWa,GACXb,EAAYwW,GAsEdY,WAvLe,CAACxc,EAAMqK,EAAU,CAAC,KAC7B1J,EAAIoG,EAAS/G,KACTQ,EAAY6J,EAAQvJ,cACpBgY,EAAS9Y,EAAMW,EAAI8F,EAAgBzG,KAGnC8Y,EAAS9Y,EAAMqK,EAAQvJ,cACvBgI,EAAIrC,EAAgBzG,EAAMqK,EAAQvJ,eAEjCuJ,EAAQkQ,aACT5J,GAAMtM,EAAWI,cAAezE,GAE/BqK,EAAQiQ,YACT3J,GAAMtM,EAAWG,YAAaxE,GAC9BqE,EAAWE,QAAU8F,EAAQvJ,aACvB6W,EAAU3X,EAAMW,EAAI8F,EAAgBzG,IACpC2X,KAELtN,EAAQgQ,YACT1J,GAAMtM,EAAWO,OAAQ5E,GACzBkC,EAAgByC,SAAW4N,KAE/BxN,EAAUC,MAAMnB,KAAK,IAAKQ,IAC9B,EAiKAoY,YA5WiBzc,IACjBA,EACM8C,EAAsB9C,GAAMoY,SAASsE,GAAc/L,GAAMtM,EAAWO,OAAQ8X,KAC3ErY,EAAWO,OAAS,CAAC,EAC5BG,EAAUC,MAAMnB,KAAK,CACjBe,OAAQP,EAAWO,QACrB,EAuWF0C,aACAqV,SAtWa,CAAC3c,EAAMmI,EAAOkC,KAC3B,MAAM9C,GAAO5G,EAAIoG,EAAS/G,EAAM,CAAEgH,GAAI,CAAC,IAAKA,IAAM,CAAC,GAAGO,IACtDuB,EAAIzE,EAAWO,OAAQ5E,EAAM,IACtBmI,EACHZ,QAEJxC,EAAUC,MAAMnB,KAAK,CACjB7D,OACA4E,OAAQP,EAAWO,OACnBD,SAAS,IAEb0F,GAAWA,EAAQC,aAAe/C,GAAOA,EAAIE,OAASF,EAAIE,OAAO,EA4VjEmV,SAzEa,CAAC5c,EAAMqK,EAAU,CAAC,KAC/B,MAAMvD,EAAQnG,EAAIoG,EAAS/G,GACrBmY,EAAiBrR,GAASA,EAAME,GACtC,GAAImR,EAAgB,CAChB,MAAMwC,EAAWxC,EAAezO,KAC1ByO,EAAezO,KAAK,GACpByO,EAAe5Q,IACrBoT,EAASlT,QACT4C,EAAQwS,cAAgBlC,EAASjT,QACrC,GAiEAwS,gBAER,CA+BA,SAAS4C,GAAQxZ,EAAQ,CAAC,GACtB,MAAMyZ,EAAe,YACd9a,EAAWmC,GAAmB,WAAe,CAChDG,SAAS,EACTG,cAAc,EACdF,YAAa,CAAC,EACd6N,aAAa,EACb+D,YAAa,EACb3R,cAAe,CAAC,EAChB4R,cAAc,EACdC,oBAAoB,EACpB3R,SAAS,EACTC,OAAQ,CAAC,IAETmY,EAAavZ,QACbuZ,EAAavZ,QAAQW,QAAQgD,SAAW7D,EAGxCyZ,EAAavZ,QAAU,IAChB0S,GAAkB5S,GACrBrB,aAGR,MAAMkC,EAAU4Y,EAAavZ,QAAQW,QAC/BL,EAAW,eAAmB3E,IAC5BwD,EAAsBxD,EAAOgF,EAAQjC,iBAAiB,KACtDiC,EAAQE,WAAa,IACdF,EAAQE,cACRlF,GAEPiF,EAAgB,IAAKD,EAAQE,aACjC,GACD,CAACF,IAiBJ,OAhBAd,EAAa,CACTM,QAASQ,EAAQY,UAAUC,MAC3BlB,aAEJ,aAAgB,KACPK,EAAQiD,YAAYH,QACrB9C,EAAQjC,gBAAgByC,SAAWR,EAAQoO,eAC3CpO,EAAQiD,YAAYH,OAAQ,GAE5B9C,EAAQiD,YAAY9B,QACpBnB,EAAQiD,YAAY9B,OAAQ,EAC5BnB,EAAQY,UAAUC,MAAMnB,KAAK,CAAC,IAElCM,EAAQiC,kBAAkB,IAE9B2W,EAAavZ,QAAQvB,UAAYD,EAAkBC,EAAWkC,EAAQjC,iBAC/D6a,EAAavZ,OACxB,C","sources":["..\\..\\..\\LSWebUICore.ClientApp\\./node_modules/react-hook-form/dist/index.esm.mjs"],"sourcesContent":["import React from 'react';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isDateObject = (value) => value instanceof Date;\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\r\nvar isObject = (value) => !isNullOrUndefined(value) &&\r\n !Array.isArray(value) &&\r\n isObjectType(value) &&\r\n !isDateObject(value);\n\nvar getEventValue = (event) => isObject(event) && event.target\r\n ? isCheckBoxInput(event.target)\r\n ? event.target.checked\r\n : event.target.value\r\n : event;\n\nvar getNodeParentName = (name) => name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n\nvar isNameInFieldArray = (names, name) => names.has(getNodeParentName(name));\n\nvar compact = (value) => Array.isArray(value) ? value.filter(Boolean) : [];\n\nvar isUndefined = (val) => val === undefined;\n\nvar get = (obj, path, defaultValue) => {\r\n if (!path || !isObject(obj)) {\r\n return defaultValue;\r\n }\r\n const result = compact(path.split(/[,[\\].]+?/)).reduce((result, key) => isNullOrUndefined(result) ? result : result[key], obj);\r\n return isUndefined(result) || result === obj\r\n ? isUndefined(obj[path])\r\n ? defaultValue\r\n : obj[path]\r\n : result;\r\n};\n\nconst EVENTS = {\r\n BLUR: 'blur',\r\n FOCUS_OUT: 'focusout',\r\n CHANGE: 'change',\r\n};\r\nconst VALIDATION_MODE = {\r\n onBlur: 'onBlur',\r\n onChange: 'onChange',\r\n onSubmit: 'onSubmit',\r\n onTouched: 'onTouched',\r\n all: 'all',\r\n};\r\nconst INPUT_VALIDATION_RULES = {\r\n max: 'max',\r\n min: 'min',\r\n maxLength: 'maxLength',\r\n minLength: 'minLength',\r\n pattern: 'pattern',\r\n required: 'required',\r\n validate: 'validate',\r\n};\n\nconst HookFormContext = React.createContext(null);\r\n/**\r\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\r\n *\r\n * @returns return all useForm methods\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const methods = useForm();\r\n * const onSubmit = data => console.log(data);\r\n *\r\n * return (\r\n * \r\n *
\r\n * \r\n * \r\n * \r\n *
\r\n * );\r\n * }\r\n *\r\n * function NestedInput() {\r\n * const { register } = useFormContext(); // retrieve all hook methods\r\n * return ;\r\n * }\r\n * ```\r\n */\r\nconst useFormContext = () => React.useContext(HookFormContext);\r\n/**\r\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://reactjs.org/docs/context.html) API. To be used with {@link useFormContext}.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\r\n *\r\n * @param props - all useFrom methods\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const methods = useForm();\r\n * const onSubmit = data => console.log(data);\r\n *\r\n * return (\r\n * \r\n *
\r\n * \r\n * \r\n * \r\n *
\r\n * );\r\n * }\r\n *\r\n * function NestedInput() {\r\n * const { register } = useFormContext(); // retrieve all hook methods\r\n * return ;\r\n * }\r\n * ```\r\n */\r\nconst FormProvider = (props) => {\r\n const { children, ...data } = props;\r\n return (React.createElement(HookFormContext.Provider, { value: data }, children));\r\n};\n\nvar getProxyFormState = (formState, _proxyFormState, localProxyFormState, isRoot = true) => {\r\n const result = {};\r\n for (const key in formState) {\r\n Object.defineProperty(result, key, {\r\n get: () => {\r\n const _key = key;\r\n if (_proxyFormState[_key] !== VALIDATION_MODE.all) {\r\n _proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\r\n }\r\n localProxyFormState && (localProxyFormState[_key] = true);\r\n return formState[_key];\r\n },\r\n });\r\n }\r\n return result;\r\n};\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar shouldRenderFormState = (formStateData, _proxyFormState, isRoot) => {\r\n const { name, ...formState } = formStateData;\r\n return (isEmptyObject(formState) ||\r\n Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\r\n Object.keys(formState).find((key) => _proxyFormState[key] ===\r\n (!isRoot || VALIDATION_MODE.all)));\r\n};\n\nvar convertToArrayPayload = (value) => (Array.isArray(value) ? value : [value]);\n\nvar shouldSubscribeByName = (name, signalName, exact) => exact && signalName\r\n ? name === signalName\r\n : !name ||\r\n !signalName ||\r\n name === signalName ||\r\n convertToArrayPayload(name).some((currentName) => currentName &&\r\n (currentName.startsWith(signalName) ||\r\n signalName.startsWith(currentName)));\n\nfunction useSubscribe(props) {\r\n const _props = React.useRef(props);\r\n _props.current = props;\r\n React.useEffect(() => {\r\n const tearDown = (subscription) => {\r\n if (subscription) {\r\n subscription.unsubscribe();\r\n }\r\n };\r\n const subscription = !props.disabled &&\r\n _props.current.subject.subscribe({\r\n next: _props.current.callback,\r\n });\r\n return () => tearDown(subscription);\r\n }, [props.disabled]);\r\n}\n\n/**\r\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\r\n *\r\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { register, handleSubmit, control } = useForm({\r\n * defaultValues: {\r\n * firstName: \"firstName\"\r\n * }});\r\n * const { dirtyFields } = useFormState({\r\n * control\r\n * });\r\n * const onSubmit = (data) => console.log(data);\r\n *\r\n * return (\r\n *
\r\n * \r\n * {dirtyFields.firstName &&

Field is dirty.

}\r\n * \r\n *
\r\n * );\r\n * }\r\n * ```\r\n */\r\nfunction useFormState(props) {\r\n const methods = useFormContext();\r\n const { control = methods.control, disabled, name, exact } = props || {};\r\n const [formState, updateFormState] = React.useState(control._formState);\r\n const _localProxyFormState = React.useRef({\r\n isDirty: false,\r\n dirtyFields: false,\r\n touchedFields: false,\r\n isValidating: false,\r\n isValid: false,\r\n errors: false,\r\n });\r\n const _name = React.useRef(name);\r\n const _mounted = React.useRef(true);\r\n _name.current = name;\r\n const callback = React.useCallback((value) => _mounted.current &&\r\n shouldSubscribeByName(_name.current, value.name, exact) &&\r\n shouldRenderFormState(value, _localProxyFormState.current) &&\r\n updateFormState({\r\n ...control._formState,\r\n ...value,\r\n }), [control, exact]);\r\n useSubscribe({\r\n disabled,\r\n callback,\r\n subject: control._subjects.state,\r\n });\r\n React.useEffect(() => {\r\n _mounted.current = true;\r\n return () => {\r\n _mounted.current = false;\r\n };\r\n }, []);\r\n return getProxyFormState(formState, control._proxyFormState, _localProxyFormState.current, false);\r\n}\n\nvar isString = (value) => typeof value === 'string';\n\nvar generateWatchOutput = (names, _names, formValues, isGlobal) => {\r\n const isArray = Array.isArray(names);\r\n if (isString(names)) {\r\n isGlobal && _names.watch.add(names);\r\n return get(formValues, names);\r\n }\r\n if (isArray) {\r\n return names.map((fieldName) => (isGlobal && _names.watch.add(fieldName),\r\n get(formValues, fieldName)));\r\n }\r\n isGlobal && (_names.watchAll = true);\r\n return formValues;\r\n};\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar objectHasFunction = (data) => {\r\n for (const key in data) {\r\n if (isFunction(data[key])) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n};\n\n/**\r\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\r\n *\r\n * @remarks\r\n *\r\n * [API](https://react-hook-form.com/api/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\r\n *\r\n * @example\r\n * ```tsx\r\n * const { watch } = useForm();\r\n * const values = useWatch({\r\n * name: \"fieldName\"\r\n * control,\r\n * })\r\n * ```\r\n */\r\nfunction useWatch(props) {\r\n const methods = useFormContext();\r\n const { control = methods.control, name, defaultValue, disabled, exact, } = props || {};\r\n const _name = React.useRef(name);\r\n _name.current = name;\r\n const callback = React.useCallback((formState) => {\r\n if (shouldSubscribeByName(_name.current, formState.name, exact)) {\r\n const fieldValues = generateWatchOutput(_name.current, control._names, formState.values || control._formValues);\r\n updateValue(isUndefined(_name.current) ||\r\n (isObject(fieldValues) && !objectHasFunction(fieldValues))\r\n ? { ...fieldValues }\r\n : Array.isArray(fieldValues)\r\n ? [...fieldValues]\r\n : isUndefined(fieldValues)\r\n ? defaultValue\r\n : fieldValues);\r\n }\r\n }, [control, exact, defaultValue]);\r\n useSubscribe({\r\n disabled,\r\n subject: control._subjects.watch,\r\n callback,\r\n });\r\n const [value, updateValue] = React.useState(isUndefined(defaultValue)\r\n ? control._getWatch(name)\r\n : defaultValue);\r\n React.useEffect(() => {\r\n control._removeUnmounted();\r\n });\r\n return value;\r\n}\n\n/**\r\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\r\n *\r\n * @param props - the path name to the form field value, and validation rules.\r\n *\r\n * @returns field properties, field and form state. {@link UseControllerReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function Input(props) {\r\n * const { field, fieldState, formState } = useController(props);\r\n * return (\r\n *
\r\n * \r\n *

{fieldState.isTouched && \"Touched\"}

\r\n *

{formState.isSubmitted ? \"submitted\" : \"\"}

\r\n *
\r\n * );\r\n * }\r\n * ```\r\n */\r\nfunction useController(props) {\r\n const methods = useFormContext();\r\n const { name, control = methods.control, shouldUnregister } = props;\r\n const isArrayField = isNameInFieldArray(control._names.array, name);\r\n const value = useWatch({\r\n control,\r\n name,\r\n defaultValue: get(control._formValues, name, get(control._defaultValues, name, props.defaultValue)),\r\n exact: true,\r\n });\r\n const formState = useFormState({\r\n control,\r\n name,\r\n });\r\n const _registerProps = React.useRef(control.register(name, {\r\n ...props.rules,\r\n value,\r\n }));\r\n React.useEffect(() => {\r\n const updateMounted = (name, value) => {\r\n const field = get(control._fields, name);\r\n if (field) {\r\n field._f.mount = value;\r\n }\r\n };\r\n updateMounted(name, true);\r\n return () => {\r\n const _shouldUnregisterField = control._options.shouldUnregister || shouldUnregister;\r\n (isArrayField\r\n ? _shouldUnregisterField && !control._stateFlags.action\r\n : _shouldUnregisterField)\r\n ? control.unregister(name)\r\n : updateMounted(name, false);\r\n };\r\n }, [name, control, isArrayField, shouldUnregister]);\r\n return {\r\n field: {\r\n name,\r\n value,\r\n onChange: React.useCallback((event) => {\r\n _registerProps.current.onChange({\r\n target: {\r\n value: getEventValue(event),\r\n name: name,\r\n },\r\n type: EVENTS.CHANGE,\r\n });\r\n }, [name]),\r\n onBlur: React.useCallback(() => {\r\n _registerProps.current.onBlur({\r\n target: {\r\n value: get(control._formValues, name),\r\n name: name,\r\n },\r\n type: EVENTS.BLUR,\r\n });\r\n }, [name, control]),\r\n ref: React.useCallback((elm) => {\r\n const field = get(control._fields, name);\r\n if (elm && field && elm.focus) {\r\n field._f.ref = {\r\n focus: () => elm.focus(),\r\n select: () => elm.select(),\r\n setCustomValidity: (message) => elm.setCustomValidity(message),\r\n reportValidity: () => elm.reportValidity(),\r\n };\r\n }\r\n }, [name, control._fields]),\r\n },\r\n formState,\r\n fieldState: Object.defineProperties({}, {\r\n invalid: {\r\n enumerable: true,\r\n get: () => !!get(formState.errors, name),\r\n },\r\n isDirty: {\r\n enumerable: true,\r\n get: () => !!get(formState.dirtyFields, name),\r\n },\r\n isTouched: {\r\n enumerable: true,\r\n get: () => !!get(formState.touchedFields, name),\r\n },\r\n error: {\r\n enumerable: true,\r\n get: () => get(formState.errors, name),\r\n },\r\n }),\r\n };\r\n}\n\n/**\r\n * Component based on `useController` hook to work with controlled component.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\r\n *\r\n * @param props - the path name to the form field value, and validation rules.\r\n *\r\n * @returns provide field handler functions, field and form state.\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { control } = useForm({\r\n * defaultValues: {\r\n * test: \"\"\r\n * }\r\n * });\r\n *\r\n * return (\r\n *
\r\n * (\r\n * <>\r\n * \r\n *

{formState.isSubmitted ? \"submitted\" : \"\"}

\r\n *

{fieldState.isTouched ? \"touched\" : \"\"}

\r\n * \r\n * )}\r\n * />\r\n * \r\n * );\r\n * }\r\n * ```\r\n */\r\nconst Controller = (props) => props.render(useController(props));\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\r\n ? {\r\n ...errors[name],\r\n types: {\r\n ...(errors[name] && errors[name].types ? errors[name].types : {}),\r\n [type]: message || true,\r\n },\r\n }\r\n : {};\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar stringToPath = (input) => compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n\nfunction set(object, path, value) {\r\n let index = -1;\r\n const tempPath = isKey(path) ? [path] : stringToPath(path);\r\n const length = tempPath.length;\r\n const lastIndex = length - 1;\r\n while (++index < length) {\r\n const key = tempPath[index];\r\n let newValue = value;\r\n if (index !== lastIndex) {\r\n const objValue = object[key];\r\n newValue =\r\n isObject(objValue) || Array.isArray(objValue)\r\n ? objValue\r\n : !isNaN(+tempPath[index + 1])\r\n ? []\r\n : {};\r\n }\r\n object[key] = newValue;\r\n object = object[key];\r\n }\r\n return object;\r\n}\n\nconst focusFieldBy = (fields, callback, fieldsNames) => {\r\n for (const key of fieldsNames || Object.keys(fields)) {\r\n const field = get(fields, key);\r\n if (field) {\r\n const { _f, ...currentField } = field;\r\n if (_f && callback(_f.name)) {\r\n if (_f.ref.focus && isUndefined(_f.ref.focus())) {\r\n break;\r\n }\r\n else if (_f.refs) {\r\n _f.refs[0].focus();\r\n break;\r\n }\r\n }\r\n else if (isObject(currentField)) {\r\n focusFieldBy(currentField, callback);\r\n }\r\n }\r\n }\r\n};\n\nvar generateId = () => {\r\n const d = typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n const r = (Math.random() * 16 + d) % 16 | 0;\r\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\r\n });\r\n};\n\nvar getFocusFieldName = (name, index, options = {}) => options.shouldFocus || isUndefined(options.shouldFocus)\r\n ? options.focusName ||\r\n `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\r\n : '';\n\nvar isWatched = (name, _names, isBlurEvent) => !isBlurEvent &&\r\n (_names.watchAll ||\r\n _names.watch.has(name) ||\r\n [..._names.watch].some((watchName) => name.startsWith(watchName) &&\r\n /^\\.\\w+/.test(name.slice(watchName.length))));\n\nvar updateFieldArrayRootError = (errors, error, name) => {\r\n const fieldArrayErrors = compact(get(errors, name));\r\n set(fieldArrayErrors, 'root', error[name]);\r\n set(errors, name, fieldArrayErrors);\r\n return errors;\r\n};\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isMessage = (value) => isString(value) || React.isValidElement(value);\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isRegex = (value) => value instanceof RegExp;\n\nconst defaultResult = {\r\n value: false,\r\n isValid: false,\r\n};\r\nconst validResult = { value: true, isValid: true };\r\nvar getCheckboxValue = (options) => {\r\n if (Array.isArray(options)) {\r\n if (options.length > 1) {\r\n const values = options\r\n .filter((option) => option && option.checked && !option.disabled)\r\n .map((option) => option.value);\r\n return { value: values, isValid: !!values.length };\r\n }\r\n return options[0].checked && !options[0].disabled\r\n ? // @ts-expect-error expected to work in the browser\r\n options[0].attributes && !isUndefined(options[0].attributes.value)\r\n ? isUndefined(options[0].value) || options[0].value === ''\r\n ? validResult\r\n : { value: options[0].value, isValid: true }\r\n : validResult\r\n : defaultResult;\r\n }\r\n return defaultResult;\r\n};\n\nconst defaultReturn = {\r\n isValid: false,\r\n value: null,\r\n};\r\nvar getRadioValue = (options) => Array.isArray(options)\r\n ? options.reduce((previous, option) => option && option.checked && !option.disabled\r\n ? {\r\n isValid: true,\r\n value: option.value,\r\n }\r\n : previous, defaultReturn)\r\n : defaultReturn;\n\nfunction getValidateError(result, ref, type = 'validate') {\r\n if (isMessage(result) ||\r\n (Array.isArray(result) && result.every(isMessage)) ||\r\n (isBoolean(result) && !result)) {\r\n return {\r\n type,\r\n message: isMessage(result) ? result : '',\r\n ref,\r\n };\r\n }\r\n}\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\r\n ? validationData\r\n : {\r\n value: validationData,\r\n message: '',\r\n };\n\nvar validateField = async (field, inputValue, validateAllFieldCriteria, shouldUseNativeValidation, isFieldArray) => {\r\n const { ref, refs, required, maxLength, minLength, min, max, pattern, validate, name, valueAsNumber, mount, disabled, } = field._f;\r\n if (!mount || disabled) {\r\n return {};\r\n }\r\n const inputRef = refs ? refs[0] : ref;\r\n const setCustomValidity = (message) => {\r\n if (shouldUseNativeValidation && inputRef.reportValidity) {\r\n inputRef.setCustomValidity(isBoolean(message) ? '' : message || ' ');\r\n inputRef.reportValidity();\r\n }\r\n };\r\n const error = {};\r\n const isRadio = isRadioInput(ref);\r\n const isCheckBox = isCheckBoxInput(ref);\r\n const isRadioOrCheckbox = isRadio || isCheckBox;\r\n const isEmpty = ((valueAsNumber || isFileInput(ref)) && !ref.value) ||\r\n inputValue === '' ||\r\n (Array.isArray(inputValue) && !inputValue.length);\r\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\r\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\r\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\r\n error[name] = {\r\n type: exceedMax ? maxType : minType,\r\n message,\r\n ref,\r\n ...appendErrorsCurry(exceedMax ? maxType : minType, message),\r\n };\r\n };\r\n if (isFieldArray\r\n ? !Array.isArray(inputValue) || !inputValue.length\r\n : required &&\r\n ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\r\n (isBoolean(inputValue) && !inputValue) ||\r\n (isCheckBox && !getCheckboxValue(refs).isValid) ||\r\n (isRadio && !getRadioValue(refs).isValid))) {\r\n const { value, message } = isMessage(required)\r\n ? { value: !!required, message: required }\r\n : getValueAndMessage(required);\r\n if (value) {\r\n error[name] = {\r\n type: INPUT_VALIDATION_RULES.required,\r\n message,\r\n ref: inputRef,\r\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\r\n };\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(message);\r\n return error;\r\n }\r\n }\r\n }\r\n if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\r\n let exceedMax;\r\n let exceedMin;\r\n const maxOutput = getValueAndMessage(max);\r\n const minOutput = getValueAndMessage(min);\r\n if (!isNullOrUndefined(inputValue) && !isNaN(inputValue)) {\r\n const valueNumber = ref.valueAsNumber ||\r\n (inputValue ? +inputValue : inputValue);\r\n if (!isNullOrUndefined(maxOutput.value)) {\r\n exceedMax = valueNumber > maxOutput.value;\r\n }\r\n if (!isNullOrUndefined(minOutput.value)) {\r\n exceedMin = valueNumber < minOutput.value;\r\n }\r\n }\r\n else {\r\n const valueDate = ref.valueAsDate || new Date(inputValue);\r\n if (isString(maxOutput.value)) {\r\n exceedMax = valueDate > new Date(maxOutput.value);\r\n }\r\n if (isString(minOutput.value)) {\r\n exceedMin = valueDate < new Date(minOutput.value);\r\n }\r\n }\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(error[name].message);\r\n return error;\r\n }\r\n }\r\n }\r\n if ((maxLength || minLength) &&\r\n !isEmpty &&\r\n (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))) {\r\n const maxLengthOutput = getValueAndMessage(maxLength);\r\n const minLengthOutput = getValueAndMessage(minLength);\r\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\r\n inputValue.length > maxLengthOutput.value;\r\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\r\n inputValue.length < minLengthOutput.value;\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(error[name].message);\r\n return error;\r\n }\r\n }\r\n }\r\n if (pattern && !isEmpty && isString(inputValue)) {\r\n const { value: patternValue, message } = getValueAndMessage(pattern);\r\n if (isRegex(patternValue) && !inputValue.match(patternValue)) {\r\n error[name] = {\r\n type: INPUT_VALIDATION_RULES.pattern,\r\n message,\r\n ref,\r\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\r\n };\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(message);\r\n return error;\r\n }\r\n }\r\n }\r\n if (validate) {\r\n if (isFunction(validate)) {\r\n const result = await validate(inputValue);\r\n const validateError = getValidateError(result, inputRef);\r\n if (validateError) {\r\n error[name] = {\r\n ...validateError,\r\n ...appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message),\r\n };\r\n if (!validateAllFieldCriteria) {\r\n setCustomValidity(validateError.message);\r\n return error;\r\n }\r\n }\r\n }\r\n else if (isObject(validate)) {\r\n let validationResult = {};\r\n for (const key in validate) {\r\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\r\n break;\r\n }\r\n const validateError = getValidateError(await validate[key](inputValue), inputRef, key);\r\n if (validateError) {\r\n validationResult = {\r\n ...validateError,\r\n ...appendErrorsCurry(key, validateError.message),\r\n };\r\n setCustomValidity(validateError.message);\r\n if (validateAllFieldCriteria) {\r\n error[name] = validationResult;\r\n }\r\n }\r\n }\r\n if (!isEmptyObject(validationResult)) {\r\n error[name] = {\r\n ref: inputRef,\r\n ...validationResult,\r\n };\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n }\r\n setCustomValidity(true);\r\n return error;\r\n};\n\nfunction append(data, value) {\r\n return [...data, ...convertToArrayPayload(value)];\r\n}\n\nvar isWeb = typeof window !== 'undefined' &&\r\n typeof window.HTMLElement !== 'undefined' &&\r\n typeof document !== 'undefined';\n\nfunction cloneObject(data) {\r\n let copy;\r\n const isArray = Array.isArray(data);\r\n if (data instanceof Date) {\r\n copy = new Date(data);\r\n }\r\n else if (data instanceof Set) {\r\n copy = new Set(data);\r\n }\r\n else if (!(isWeb && (data instanceof Blob || data instanceof FileList)) &&\r\n (isArray || isObject(data))) {\r\n copy = isArray ? [] : {};\r\n for (const key in data) {\r\n if (isFunction(data[key])) {\r\n copy = data;\r\n break;\r\n }\r\n copy[key] = cloneObject(data[key]);\r\n }\r\n }\r\n else {\r\n return data;\r\n }\r\n return copy;\r\n}\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? value.map(() => undefined) : undefined;\n\nvar getValidationModes = (mode) => ({\r\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\r\n isOnBlur: mode === VALIDATION_MODE.onBlur,\r\n isOnChange: mode === VALIDATION_MODE.onChange,\r\n isOnAll: mode === VALIDATION_MODE.all,\r\n isOnTouch: mode === VALIDATION_MODE.onTouched,\r\n});\n\nfunction insert(data, index, value) {\r\n return [\r\n ...data.slice(0, index),\r\n ...convertToArrayPayload(value),\r\n ...data.slice(index),\r\n ];\r\n}\n\nvar moveArrayAt = (data, from, to) => {\r\n if (!Array.isArray(data)) {\r\n return [];\r\n }\r\n if (isUndefined(data[to])) {\r\n data[to] = undefined;\r\n }\r\n data.splice(to, 0, data.splice(from, 1)[0]);\r\n return data;\r\n};\n\nfunction prepend(data, value) {\r\n return [...convertToArrayPayload(value), ...convertToArrayPayload(data)];\r\n}\n\nfunction removeAtIndexes(data, indexes) {\r\n let i = 0;\r\n const temp = [...data];\r\n for (const index of indexes) {\r\n temp.splice(index - i, 1);\r\n i++;\r\n }\r\n return compact(temp).length ? temp : [];\r\n}\r\nvar removeArrayAt = (data, index) => isUndefined(index)\r\n ? []\r\n : removeAtIndexes(data, convertToArrayPayload(index).sort((a, b) => a - b));\n\nvar swapArrayAt = (data, indexA, indexB) => {\r\n data[indexA] = [data[indexB], (data[indexB] = data[indexA])][0];\r\n};\n\nfunction baseGet(object, updatePath) {\r\n const length = updatePath.slice(0, -1).length;\r\n let index = 0;\r\n while (index < length) {\r\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\r\n }\r\n return object;\r\n}\r\nfunction isEmptyArray(obj) {\r\n for (const key in obj) {\r\n if (!isUndefined(obj[key])) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction unset(object, path) {\r\n const updatePath = isKey(path) ? [path] : stringToPath(path);\r\n const childObject = updatePath.length == 1 ? object : baseGet(object, updatePath);\r\n const key = updatePath[updatePath.length - 1];\r\n let previousObjRef;\r\n if (childObject) {\r\n delete childObject[key];\r\n }\r\n for (let k = 0; k < updatePath.slice(0, -1).length; k++) {\r\n let index = -1;\r\n let objectRef;\r\n const currentPaths = updatePath.slice(0, -(k + 1));\r\n const currentPathsLength = currentPaths.length - 1;\r\n if (k > 0) {\r\n previousObjRef = object;\r\n }\r\n while (++index < currentPaths.length) {\r\n const item = currentPaths[index];\r\n objectRef = objectRef ? objectRef[item] : object[item];\r\n if (currentPathsLength === index &&\r\n ((isObject(objectRef) && isEmptyObject(objectRef)) ||\r\n (Array.isArray(objectRef) && isEmptyArray(objectRef)))) {\r\n previousObjRef ? delete previousObjRef[item] : delete object[item];\r\n }\r\n previousObjRef = objectRef;\r\n }\r\n }\r\n return object;\r\n}\n\nvar updateAt = (fieldValues, index, value) => {\r\n fieldValues[index] = value;\r\n return fieldValues;\r\n};\n\n/**\r\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\r\n *\r\n * @param props - useFieldArray props\r\n *\r\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { register, control, handleSubmit, reset, trigger, setError } = useForm({\r\n * defaultValues: {\r\n * test: []\r\n * }\r\n * });\r\n * const { fields, append } = useFieldArray({\r\n * control,\r\n * name: \"test\"\r\n * });\r\n *\r\n * return (\r\n *
console.log(data))}>\r\n * {fields.map((item, index) => (\r\n * \r\n * ))}\r\n * \r\n * \r\n *
\r\n * );\r\n * }\r\n * ```\r\n */\r\nfunction useFieldArray(props) {\r\n const methods = useFormContext();\r\n const { control = methods.control, name, keyName = 'id', shouldUnregister, } = props;\r\n const [fields, setFields] = React.useState(control._getFieldArray(name));\r\n const ids = React.useRef(control._getFieldArray(name).map(generateId));\r\n const _fieldIds = React.useRef(fields);\r\n const _name = React.useRef(name);\r\n const _actioned = React.useRef(false);\r\n _name.current = name;\r\n _fieldIds.current = fields;\r\n control._names.array.add(name);\r\n props.rules &&\r\n control.register(name, props.rules);\r\n const callback = React.useCallback(({ values, name: fieldArrayName, }) => {\r\n if (fieldArrayName === _name.current || !fieldArrayName) {\r\n const fieldValues = get(values, _name.current, []);\r\n setFields(fieldValues);\r\n ids.current = fieldValues.map(generateId);\r\n }\r\n }, []);\r\n useSubscribe({\r\n callback,\r\n subject: control._subjects.array,\r\n });\r\n const updateValues = React.useCallback((updatedFieldArrayValues) => {\r\n _actioned.current = true;\r\n control._updateFieldArray(name, updatedFieldArrayValues);\r\n }, [control, name]);\r\n const append$1 = (value, options) => {\r\n const appendValue = convertToArrayPayload(cloneObject(value));\r\n const updatedFieldArrayValues = append(control._getFieldArray(name), appendValue);\r\n control._names.focus = getFocusFieldName(name, updatedFieldArrayValues.length - 1, options);\r\n ids.current = append(ids.current, appendValue.map(generateId));\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, append, {\r\n argA: fillEmptyArray(value),\r\n });\r\n };\r\n const prepend$1 = (value, options) => {\r\n const prependValue = convertToArrayPayload(cloneObject(value));\r\n const updatedFieldArrayValues = prepend(control._getFieldArray(name), prependValue);\r\n control._names.focus = getFocusFieldName(name, 0, options);\r\n ids.current = prepend(ids.current, prependValue.map(generateId));\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, prepend, {\r\n argA: fillEmptyArray(value),\r\n });\r\n };\r\n const remove = (index) => {\r\n const updatedFieldArrayValues = removeArrayAt(control._getFieldArray(name), index);\r\n ids.current = removeArrayAt(ids.current, index);\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\r\n argA: index,\r\n });\r\n };\r\n const insert$1 = (index, value, options) => {\r\n const insertValue = convertToArrayPayload(cloneObject(value));\r\n const updatedFieldArrayValues = insert(control._getFieldArray(name), index, insertValue);\r\n control._names.focus = getFocusFieldName(name, index, options);\r\n ids.current = insert(ids.current, index, insertValue.map(generateId));\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, insert, {\r\n argA: index,\r\n argB: fillEmptyArray(value),\r\n });\r\n };\r\n const swap = (indexA, indexB) => {\r\n const updatedFieldArrayValues = control._getFieldArray(name);\r\n swapArrayAt(updatedFieldArrayValues, indexA, indexB);\r\n swapArrayAt(ids.current, indexA, indexB);\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, swapArrayAt, {\r\n argA: indexA,\r\n argB: indexB,\r\n }, false);\r\n };\r\n const move = (from, to) => {\r\n const updatedFieldArrayValues = control._getFieldArray(name);\r\n moveArrayAt(updatedFieldArrayValues, from, to);\r\n moveArrayAt(ids.current, from, to);\r\n updateValues(updatedFieldArrayValues);\r\n setFields(updatedFieldArrayValues);\r\n control._updateFieldArray(name, updatedFieldArrayValues, moveArrayAt, {\r\n argA: from,\r\n argB: to,\r\n }, false);\r\n };\r\n const update = (index, value) => {\r\n const updateValue = cloneObject(value);\r\n const updatedFieldArrayValues = updateAt(control._getFieldArray(name), index, updateValue);\r\n ids.current = [...updatedFieldArrayValues].map((item, i) => !item || i === index ? generateId() : ids.current[i]);\r\n updateValues(updatedFieldArrayValues);\r\n setFields([...updatedFieldArrayValues]);\r\n control._updateFieldArray(name, updatedFieldArrayValues, updateAt, {\r\n argA: index,\r\n argB: updateValue,\r\n }, true, false);\r\n };\r\n const replace = (value) => {\r\n const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\r\n ids.current = updatedFieldArrayValues.map(generateId);\r\n updateValues([...updatedFieldArrayValues]);\r\n setFields([...updatedFieldArrayValues]);\r\n control._updateFieldArray(name, [...updatedFieldArrayValues], (data) => data, {}, true, false);\r\n };\r\n React.useEffect(() => {\r\n control._stateFlags.action = false;\r\n isWatched(name, control._names) && control._subjects.state.next({});\r\n if (_actioned.current) {\r\n if (control._options.resolver) {\r\n control._executeSchema([name]).then((result) => {\r\n const error = get(result.errors, name);\r\n const existingError = get(control._formState.errors, name);\r\n if (existingError ? !error && existingError.type : error && error.type) {\r\n error\r\n ? set(control._formState.errors, name, error)\r\n : unset(control._formState.errors, name);\r\n control._subjects.state.next({\r\n errors: control._formState.errors,\r\n });\r\n }\r\n });\r\n }\r\n else {\r\n const field = get(control._fields, name);\r\n const validationModeBeforeSubmit = getValidationModes(control._options.mode);\r\n if ((!validationModeBeforeSubmit.isOnSubmit ||\r\n control._formState.isSubmitted) &&\r\n field &&\r\n field._f) {\r\n validateField(field, get(control._formValues, name), control._options.criteriaMode === VALIDATION_MODE.all, control._options.shouldUseNativeValidation, true).then((error) => !isEmptyObject(error) &&\r\n control._subjects.state.next({\r\n errors: updateFieldArrayRootError(control._formState.errors, error, name),\r\n }));\r\n }\r\n }\r\n }\r\n control._subjects.watch.next({\r\n name,\r\n values: control._formValues,\r\n });\r\n control._names.focus &&\r\n focusFieldBy(control._fields, (key) => key.startsWith(control._names.focus));\r\n control._names.focus = '';\r\n control._proxyFormState.isValid && control._updateValid();\r\n }, [fields, name, control]);\r\n React.useEffect(() => {\r\n !get(control._formValues, name) && control._updateFieldArray(name);\r\n return () => {\r\n (control._options.shouldUnregister || shouldUnregister) &&\r\n control.unregister(name);\r\n };\r\n }, [name, control, keyName, shouldUnregister]);\r\n return {\r\n swap: React.useCallback(swap, [updateValues, name, control]),\r\n move: React.useCallback(move, [updateValues, name, control]),\r\n prepend: React.useCallback(prepend$1, [updateValues, name, control]),\r\n append: React.useCallback(append$1, [updateValues, name, control]),\r\n remove: React.useCallback(remove, [updateValues, name, control]),\r\n insert: React.useCallback(insert$1, [updateValues, name, control]),\r\n update: React.useCallback(update, [updateValues, name, control]),\r\n replace: React.useCallback(replace, [updateValues, name, control]),\r\n fields: React.useMemo(() => fields.map((field, index) => ({\r\n ...field,\r\n [keyName]: ids.current[index] || generateId(),\r\n })), [fields, keyName]),\r\n };\r\n}\n\nfunction createSubject() {\r\n let _observers = [];\r\n const next = (value) => {\r\n for (const observer of _observers) {\r\n observer.next(value);\r\n }\r\n };\r\n const subscribe = (observer) => {\r\n _observers.push(observer);\r\n return {\r\n unsubscribe: () => {\r\n _observers = _observers.filter((o) => o !== observer);\r\n },\r\n };\r\n };\r\n const unsubscribe = () => {\r\n _observers = [];\r\n };\r\n return {\r\n get observers() {\r\n return _observers;\r\n },\r\n next,\r\n subscribe,\r\n unsubscribe,\r\n };\r\n}\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepEqual(object1, object2) {\r\n if (isPrimitive(object1) || isPrimitive(object2)) {\r\n return object1 === object2;\r\n }\r\n if (isDateObject(object1) && isDateObject(object2)) {\r\n return object1.getTime() === object2.getTime();\r\n }\r\n const keys1 = Object.keys(object1);\r\n const keys2 = Object.keys(object2);\r\n if (keys1.length !== keys2.length) {\r\n return false;\r\n }\r\n for (const key of keys1) {\r\n const val1 = object1[key];\r\n if (!keys2.includes(key)) {\r\n return false;\r\n }\r\n if (key !== 'ref') {\r\n const val2 = object2[key];\r\n if ((isDateObject(val1) && isDateObject(val2)) ||\r\n (isObject(val1) && isObject(val2)) ||\r\n (Array.isArray(val1) && Array.isArray(val2))\r\n ? !deepEqual(val1, val2)\r\n : val1 !== val2) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n}\n\nvar isHTMLElement = (value) => {\r\n const owner = value ? value.ownerDocument : 0;\r\n const ElementClass = owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement;\r\n return value instanceof ElementClass;\r\n};\n\nvar isMultipleSelect = (element) => element.type === `select-multiple`;\n\nvar isRadioOrCheckbox = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nvar live = (ref) => isHTMLElement(ref) && ref.isConnected;\n\nfunction markFieldsDirty(data, fields = {}) {\r\n const isParentNodeArray = Array.isArray(data);\r\n if (isObject(data) || isParentNodeArray) {\r\n for (const key in data) {\r\n if (Array.isArray(data[key]) ||\r\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\r\n fields[key] = Array.isArray(data[key]) ? [] : {};\r\n markFieldsDirty(data[key], fields[key]);\r\n }\r\n else if (!isNullOrUndefined(data[key])) {\r\n fields[key] = true;\r\n }\r\n }\r\n }\r\n return fields;\r\n}\r\nfunction getDirtyFieldsFromDefaultValues(data, formValues, dirtyFieldsFromValues) {\r\n const isParentNodeArray = Array.isArray(data);\r\n if (isObject(data) || isParentNodeArray) {\r\n for (const key in data) {\r\n if (Array.isArray(data[key]) ||\r\n (isObject(data[key]) && !objectHasFunction(data[key]))) {\r\n if (isUndefined(formValues) ||\r\n isPrimitive(dirtyFieldsFromValues[key])) {\r\n dirtyFieldsFromValues[key] = Array.isArray(data[key])\r\n ? markFieldsDirty(data[key], [])\r\n : { ...markFieldsDirty(data[key]) };\r\n }\r\n else {\r\n getDirtyFieldsFromDefaultValues(data[key], isNullOrUndefined(formValues) ? {} : formValues[key], dirtyFieldsFromValues[key]);\r\n }\r\n }\r\n else {\r\n dirtyFieldsFromValues[key] = !deepEqual(data[key], formValues[key]);\r\n }\r\n }\r\n }\r\n return dirtyFieldsFromValues;\r\n}\r\nvar getDirtyFields = (defaultValues, formValues) => getDirtyFieldsFromDefaultValues(defaultValues, formValues, markFieldsDirty(formValues));\n\nvar getFieldValueAs = (value, { valueAsNumber, valueAsDate, setValueAs }) => isUndefined(value)\r\n ? value\r\n : valueAsNumber\r\n ? value === ''\r\n ? NaN\r\n : value\r\n ? +value\r\n : value\r\n : valueAsDate && isString(value)\r\n ? new Date(value)\r\n : setValueAs\r\n ? setValueAs(value)\r\n : value;\n\nfunction getFieldValue(_f) {\r\n const ref = _f.ref;\r\n if (_f.refs ? _f.refs.every((ref) => ref.disabled) : ref.disabled) {\r\n return;\r\n }\r\n if (isFileInput(ref)) {\r\n return ref.files;\r\n }\r\n if (isRadioInput(ref)) {\r\n return getRadioValue(_f.refs).value;\r\n }\r\n if (isMultipleSelect(ref)) {\r\n return [...ref.selectedOptions].map(({ value }) => value);\r\n }\r\n if (isCheckBoxInput(ref)) {\r\n return getCheckboxValue(_f.refs).value;\r\n }\r\n return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\r\n}\n\nvar getResolverOptions = (fieldsNames, _fields, criteriaMode, shouldUseNativeValidation) => {\r\n const fields = {};\r\n for (const name of fieldsNames) {\r\n const field = get(_fields, name);\r\n field && set(fields, name, field._f);\r\n }\r\n return {\r\n criteriaMode,\r\n names: [...fieldsNames],\r\n fields,\r\n shouldUseNativeValidation,\r\n };\r\n};\n\nvar getRuleValue = (rule) => isUndefined(rule)\r\n ? undefined\r\n : isRegex(rule)\r\n ? rule.source\r\n : isObject(rule)\r\n ? isRegex(rule.value)\r\n ? rule.value.source\r\n : rule.value\r\n : rule;\n\nvar hasValidation = (options) => options.mount &&\r\n (options.required ||\r\n options.min ||\r\n options.max ||\r\n options.maxLength ||\r\n options.minLength ||\r\n options.pattern ||\r\n options.validate);\n\nfunction schemaErrorLookup(errors, _fields, name) {\r\n const error = get(errors, name);\r\n if (error || isKey(name)) {\r\n return {\r\n error,\r\n name,\r\n };\r\n }\r\n const names = name.split('.');\r\n while (names.length) {\r\n const fieldName = names.join('.');\r\n const field = get(_fields, fieldName);\r\n const foundError = get(errors, fieldName);\r\n if (field && !Array.isArray(field) && name !== fieldName) {\r\n return { name };\r\n }\r\n if (foundError && foundError.type) {\r\n return {\r\n name: fieldName,\r\n error: foundError,\r\n };\r\n }\r\n names.pop();\r\n }\r\n return {\r\n name,\r\n };\r\n}\n\nvar skipValidation = (isBlurEvent, isTouched, isSubmitted, reValidateMode, mode) => {\r\n if (mode.isOnAll) {\r\n return false;\r\n }\r\n else if (!isSubmitted && mode.isOnTouch) {\r\n return !(isTouched || isBlurEvent);\r\n }\r\n else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\r\n return !isBlurEvent;\r\n }\r\n else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\r\n return isBlurEvent;\r\n }\r\n return true;\r\n};\n\nvar unsetEmptyArray = (ref, name) => !compact(get(ref, name)).length && unset(ref, name);\n\nconst defaultOptions = {\r\n mode: VALIDATION_MODE.onSubmit,\r\n reValidateMode: VALIDATION_MODE.onChange,\r\n shouldFocusError: true,\r\n};\r\nfunction createFormControl(props = {}) {\r\n let _options = {\r\n ...defaultOptions,\r\n ...props,\r\n };\r\n let _formState = {\r\n isDirty: false,\r\n isValidating: false,\r\n dirtyFields: {},\r\n isSubmitted: false,\r\n submitCount: 0,\r\n touchedFields: {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n isValid: false,\r\n errors: {},\r\n };\r\n let _fields = {};\r\n let _defaultValues = cloneObject(_options.defaultValues) || {};\r\n let _formValues = _options.shouldUnregister\r\n ? {}\r\n : cloneObject(_defaultValues);\r\n let _stateFlags = {\r\n action: false,\r\n mount: false,\r\n watch: false,\r\n };\r\n let _names = {\r\n mount: new Set(),\r\n unMount: new Set(),\r\n array: new Set(),\r\n watch: new Set(),\r\n };\r\n let delayErrorCallback;\r\n let timer = 0;\r\n let validateFields = {};\r\n const _proxyFormState = {\r\n isDirty: false,\r\n dirtyFields: false,\r\n touchedFields: false,\r\n isValidating: false,\r\n isValid: false,\r\n errors: false,\r\n };\r\n const _subjects = {\r\n watch: createSubject(),\r\n array: createSubject(),\r\n state: createSubject(),\r\n };\r\n const validationModeBeforeSubmit = getValidationModes(_options.mode);\r\n const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\r\n const shouldDisplayAllAssociatedErrors = _options.criteriaMode === VALIDATION_MODE.all;\r\n const debounce = (callback) => (wait) => {\r\n clearTimeout(timer);\r\n timer = window.setTimeout(callback, wait);\r\n };\r\n const _updateValid = async (shouldSkipRender) => {\r\n let isValid = false;\r\n if (_proxyFormState.isValid) {\r\n isValid = _options.resolver\r\n ? isEmptyObject((await _executeSchema()).errors)\r\n : await executeBuiltInValidation(_fields, true);\r\n if (!shouldSkipRender && isValid !== _formState.isValid) {\r\n _formState.isValid = isValid;\r\n _subjects.state.next({\r\n isValid,\r\n });\r\n }\r\n }\r\n return isValid;\r\n };\r\n const _updateFieldArray = (name, values = [], method, args, shouldSetValues = true, shouldUpdateFieldsAndState = true) => {\r\n if (args && method) {\r\n _stateFlags.action = true;\r\n if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\r\n const fieldValues = method(get(_fields, name), args.argA, args.argB);\r\n shouldSetValues && set(_fields, name, fieldValues);\r\n }\r\n if (_proxyFormState.errors &&\r\n shouldUpdateFieldsAndState &&\r\n Array.isArray(get(_formState.errors, name))) {\r\n const errors = method(get(_formState.errors, name), args.argA, args.argB);\r\n shouldSetValues && set(_formState.errors, name, errors);\r\n unsetEmptyArray(_formState.errors, name);\r\n }\r\n if (_proxyFormState.touchedFields &&\r\n shouldUpdateFieldsAndState &&\r\n Array.isArray(get(_formState.touchedFields, name))) {\r\n const touchedFields = method(get(_formState.touchedFields, name), args.argA, args.argB);\r\n shouldSetValues && set(_formState.touchedFields, name, touchedFields);\r\n }\r\n if (_proxyFormState.dirtyFields) {\r\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\r\n }\r\n _subjects.state.next({\r\n isDirty: _getDirty(name, values),\r\n dirtyFields: _formState.dirtyFields,\r\n errors: _formState.errors,\r\n isValid: _formState.isValid,\r\n });\r\n }\r\n else {\r\n set(_formValues, name, values);\r\n }\r\n };\r\n const updateErrors = (name, error) => {\r\n set(_formState.errors, name, error);\r\n _subjects.state.next({\r\n errors: _formState.errors,\r\n });\r\n };\r\n const updateValidAndValue = (name, shouldSkipSetValueAs, value, ref) => {\r\n const field = get(_fields, name);\r\n if (field) {\r\n const defaultValue = get(_formValues, name, isUndefined(value) ? get(_defaultValues, name) : value);\r\n isUndefined(defaultValue) ||\r\n (ref && ref.defaultChecked) ||\r\n shouldSkipSetValueAs\r\n ? set(_formValues, name, shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f))\r\n : setFieldValue(name, defaultValue);\r\n _stateFlags.mount && _updateValid();\r\n }\r\n };\r\n const updateTouchAndDirty = (name, fieldValue, isBlurEvent, shouldDirty, shouldRender) => {\r\n let isFieldDirty = false;\r\n const output = {\r\n name,\r\n };\r\n const isPreviousFieldTouched = get(_formState.touchedFields, name);\r\n if (_proxyFormState.isDirty) {\r\n const isPreviousFormDirty = _formState.isDirty;\r\n _formState.isDirty = output.isDirty = _getDirty();\r\n isFieldDirty = isPreviousFormDirty !== output.isDirty;\r\n }\r\n if (_proxyFormState.dirtyFields && (!isBlurEvent || shouldDirty)) {\r\n const isPreviousFieldDirty = get(_formState.dirtyFields, name);\r\n const isCurrentFieldPristine = deepEqual(get(_defaultValues, name), fieldValue);\r\n isCurrentFieldPristine\r\n ? unset(_formState.dirtyFields, name)\r\n : set(_formState.dirtyFields, name, true);\r\n output.dirtyFields = _formState.dirtyFields;\r\n isFieldDirty =\r\n isFieldDirty ||\r\n isPreviousFieldDirty !== get(_formState.dirtyFields, name);\r\n }\r\n if (isBlurEvent && !isPreviousFieldTouched) {\r\n set(_formState.touchedFields, name, isBlurEvent);\r\n output.touchedFields = _formState.touchedFields;\r\n isFieldDirty =\r\n isFieldDirty ||\r\n (_proxyFormState.touchedFields &&\r\n isPreviousFieldTouched !== isBlurEvent);\r\n }\r\n isFieldDirty && shouldRender && _subjects.state.next(output);\r\n return isFieldDirty ? output : {};\r\n };\r\n const shouldRenderByError = async (name, isValid, error, fieldState) => {\r\n const previousFieldError = get(_formState.errors, name);\r\n const shouldUpdateValid = _proxyFormState.isValid && _formState.isValid !== isValid;\r\n if (props.delayError && error) {\r\n delayErrorCallback = debounce(() => updateErrors(name, error));\r\n delayErrorCallback(props.delayError);\r\n }\r\n else {\r\n clearTimeout(timer);\r\n delayErrorCallback = null;\r\n error\r\n ? set(_formState.errors, name, error)\r\n : unset(_formState.errors, name);\r\n }\r\n if ((error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\r\n !isEmptyObject(fieldState) ||\r\n shouldUpdateValid) {\r\n const updatedFormState = {\r\n ...fieldState,\r\n ...(shouldUpdateValid ? { isValid } : {}),\r\n errors: _formState.errors,\r\n name,\r\n };\r\n _formState = {\r\n ..._formState,\r\n ...updatedFormState,\r\n };\r\n _subjects.state.next(updatedFormState);\r\n }\r\n validateFields[name]--;\r\n if (_proxyFormState.isValidating &&\r\n !Object.values(validateFields).some((v) => v)) {\r\n _subjects.state.next({\r\n isValidating: false,\r\n });\r\n validateFields = {};\r\n }\r\n };\r\n const _executeSchema = async (name) => _options.resolver\r\n ? await _options.resolver({ ..._formValues }, _options.context, getResolverOptions(name || _names.mount, _fields, _options.criteriaMode, _options.shouldUseNativeValidation))\r\n : {};\r\n const executeSchemaAndUpdateState = async (names) => {\r\n const { errors } = await _executeSchema();\r\n if (names) {\r\n for (const name of names) {\r\n const error = get(errors, name);\r\n error\r\n ? set(_formState.errors, name, error)\r\n : unset(_formState.errors, name);\r\n }\r\n }\r\n else {\r\n _formState.errors = errors;\r\n }\r\n return errors;\r\n };\r\n const executeBuiltInValidation = async (fields, shouldOnlyCheckValid, context = {\r\n valid: true,\r\n }) => {\r\n for (const name in fields) {\r\n const field = fields[name];\r\n if (field) {\r\n const { _f, ...fieldValue } = field;\r\n if (_f) {\r\n const isFieldArrayRoot = _names.array.has(_f.name);\r\n const fieldError = await validateField(field, get(_formValues, _f.name), shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation, isFieldArrayRoot);\r\n if (fieldError[_f.name]) {\r\n context.valid = false;\r\n if (shouldOnlyCheckValid) {\r\n break;\r\n }\r\n }\r\n !shouldOnlyCheckValid &&\r\n (get(fieldError, _f.name)\r\n ? isFieldArrayRoot\r\n ? updateFieldArrayRootError(_formState.errors, fieldError, _f.name)\r\n : set(_formState.errors, _f.name, fieldError[_f.name])\r\n : unset(_formState.errors, _f.name));\r\n }\r\n fieldValue &&\r\n (await executeBuiltInValidation(fieldValue, shouldOnlyCheckValid, context));\r\n }\r\n }\r\n return context.valid;\r\n };\r\n const _removeUnmounted = () => {\r\n for (const name of _names.unMount) {\r\n const field = get(_fields, name);\r\n field &&\r\n (field._f.refs\r\n ? field._f.refs.every((ref) => !live(ref))\r\n : !live(field._f.ref)) &&\r\n unregister(name);\r\n }\r\n _names.unMount = new Set();\r\n };\r\n const _getDirty = (name, data) => (name && data && set(_formValues, name, data),\r\n !deepEqual(getValues(), _defaultValues));\r\n const _getWatch = (names, defaultValue, isGlobal) => {\r\n const fieldValues = {\r\n ...(_stateFlags.mount\r\n ? _formValues\r\n : isUndefined(defaultValue)\r\n ? _defaultValues\r\n : isString(names)\r\n ? { [names]: defaultValue }\r\n : defaultValue),\r\n };\r\n return generateWatchOutput(names, _names, fieldValues, isGlobal);\r\n };\r\n const _getFieldArray = (name) => compact(get(_stateFlags.mount ? _formValues : _defaultValues, name, props.shouldUnregister ? get(_defaultValues, name, []) : []));\r\n const setFieldValue = (name, value, options = {}) => {\r\n const field = get(_fields, name);\r\n let fieldValue = value;\r\n if (field) {\r\n const fieldReference = field._f;\r\n if (fieldReference) {\r\n !fieldReference.disabled &&\r\n set(_formValues, name, getFieldValueAs(value, fieldReference));\r\n fieldValue =\r\n isWeb && isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\r\n ? ''\r\n : value;\r\n if (isMultipleSelect(fieldReference.ref)) {\r\n [...fieldReference.ref.options].forEach((selectRef) => (selectRef.selected = fieldValue.includes(selectRef.value)));\r\n }\r\n else if (fieldReference.refs) {\r\n if (isCheckBoxInput(fieldReference.ref)) {\r\n fieldReference.refs.length > 1\r\n ? fieldReference.refs.forEach((checkboxRef) => (!checkboxRef.defaultChecked || !checkboxRef.disabled) &&\r\n (checkboxRef.checked = Array.isArray(fieldValue)\r\n ? !!fieldValue.find((data) => data === checkboxRef.value)\r\n : fieldValue === checkboxRef.value))\r\n : fieldReference.refs[0] &&\r\n (fieldReference.refs[0].checked = !!fieldValue);\r\n }\r\n else {\r\n fieldReference.refs.forEach((radioRef) => (radioRef.checked = radioRef.value === fieldValue));\r\n }\r\n }\r\n else if (isFileInput(fieldReference.ref)) {\r\n fieldReference.ref.value = '';\r\n }\r\n else {\r\n fieldReference.ref.value = fieldValue;\r\n if (!fieldReference.ref.type) {\r\n _subjects.watch.next({\r\n name,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n (options.shouldDirty || options.shouldTouch) &&\r\n updateTouchAndDirty(name, fieldValue, options.shouldTouch, options.shouldDirty, true);\r\n options.shouldValidate && trigger(name);\r\n };\r\n const setValues = (name, value, options) => {\r\n for (const fieldKey in value) {\r\n const fieldValue = value[fieldKey];\r\n const fieldName = `${name}.${fieldKey}`;\r\n const field = get(_fields, fieldName);\r\n (_names.array.has(name) ||\r\n !isPrimitive(fieldValue) ||\r\n (field && !field._f)) &&\r\n !isDateObject(fieldValue)\r\n ? setValues(fieldName, fieldValue, options)\r\n : setFieldValue(fieldName, fieldValue, options);\r\n }\r\n };\r\n const setValue = (name, value, options = {}) => {\r\n const field = get(_fields, name);\r\n const isFieldArray = _names.array.has(name);\r\n const cloneValue = cloneObject(value);\r\n set(_formValues, name, cloneValue);\r\n if (isFieldArray) {\r\n _subjects.array.next({\r\n name,\r\n values: _formValues,\r\n });\r\n if ((_proxyFormState.isDirty || _proxyFormState.dirtyFields) &&\r\n options.shouldDirty) {\r\n _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\r\n _subjects.state.next({\r\n name,\r\n dirtyFields: _formState.dirtyFields,\r\n isDirty: _getDirty(name, cloneValue),\r\n });\r\n }\r\n }\r\n else {\r\n field && !field._f && !isNullOrUndefined(cloneValue)\r\n ? setValues(name, cloneValue, options)\r\n : setFieldValue(name, cloneValue, options);\r\n }\r\n isWatched(name, _names) && _subjects.state.next({});\r\n _subjects.watch.next({\r\n name,\r\n });\r\n };\r\n const onChange = async (event) => {\r\n const target = event.target;\r\n let name = target.name;\r\n const field = get(_fields, name);\r\n if (field) {\r\n let error;\r\n let isValid;\r\n const fieldValue = target.type\r\n ? getFieldValue(field._f)\r\n : getEventValue(event);\r\n const isBlurEvent = event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\r\n const shouldSkipValidation = (!hasValidation(field._f) &&\r\n !_options.resolver &&\r\n !get(_formState.errors, name) &&\r\n !field._f.deps) ||\r\n skipValidation(isBlurEvent, get(_formState.touchedFields, name), _formState.isSubmitted, validationModeAfterSubmit, validationModeBeforeSubmit);\r\n const watched = isWatched(name, _names, isBlurEvent);\r\n set(_formValues, name, fieldValue);\r\n if (isBlurEvent) {\r\n field._f.onBlur && field._f.onBlur(event);\r\n delayErrorCallback && delayErrorCallback(0);\r\n }\r\n else if (field._f.onChange) {\r\n field._f.onChange(event);\r\n }\r\n const fieldState = updateTouchAndDirty(name, fieldValue, isBlurEvent, false);\r\n const shouldRender = !isEmptyObject(fieldState) || watched;\r\n !isBlurEvent &&\r\n _subjects.watch.next({\r\n name,\r\n type: event.type,\r\n });\r\n if (shouldSkipValidation) {\r\n return (shouldRender &&\r\n _subjects.state.next({ name, ...(watched ? {} : fieldState) }));\r\n }\r\n !isBlurEvent && watched && _subjects.state.next({});\r\n validateFields[name] = validateFields[name] ? +1 : 1;\r\n _subjects.state.next({\r\n isValidating: true,\r\n });\r\n if (_options.resolver) {\r\n const { errors } = await _executeSchema([name]);\r\n const previousErrorLookupResult = schemaErrorLookup(_formState.errors, _fields, name);\r\n const errorLookupResult = schemaErrorLookup(errors, _fields, previousErrorLookupResult.name || name);\r\n error = errorLookupResult.error;\r\n name = errorLookupResult.name;\r\n isValid = isEmptyObject(errors);\r\n }\r\n else {\r\n error = (await validateField(field, get(_formValues, name), shouldDisplayAllAssociatedErrors, _options.shouldUseNativeValidation))[name];\r\n isValid = await _updateValid(true);\r\n }\r\n field._f.deps &&\r\n trigger(field._f.deps);\r\n shouldRenderByError(name, isValid, error, fieldState);\r\n }\r\n };\r\n const trigger = async (name, options = {}) => {\r\n let isValid;\r\n let validationResult;\r\n const fieldNames = convertToArrayPayload(name);\r\n _subjects.state.next({\r\n isValidating: true,\r\n });\r\n if (_options.resolver) {\r\n const errors = await executeSchemaAndUpdateState(isUndefined(name) ? name : fieldNames);\r\n isValid = isEmptyObject(errors);\r\n validationResult = name\r\n ? !fieldNames.some((name) => get(errors, name))\r\n : isValid;\r\n }\r\n else if (name) {\r\n validationResult = (await Promise.all(fieldNames.map(async (fieldName) => {\r\n const field = get(_fields, fieldName);\r\n return await executeBuiltInValidation(field && field._f ? { [fieldName]: field } : field);\r\n }))).every(Boolean);\r\n !(!validationResult && !_formState.isValid) && _updateValid();\r\n }\r\n else {\r\n validationResult = isValid = await executeBuiltInValidation(_fields);\r\n }\r\n _subjects.state.next({\r\n ...(!isString(name) ||\r\n (_proxyFormState.isValid && isValid !== _formState.isValid)\r\n ? {}\r\n : { name }),\r\n ...(_options.resolver ? { isValid } : {}),\r\n errors: _formState.errors,\r\n isValidating: false,\r\n });\r\n options.shouldFocus &&\r\n !validationResult &&\r\n focusFieldBy(_fields, (key) => get(_formState.errors, key), name ? fieldNames : _names.mount);\r\n return validationResult;\r\n };\r\n const getValues = (fieldNames) => {\r\n const values = {\r\n ..._defaultValues,\r\n ...(_stateFlags.mount ? _formValues : {}),\r\n };\r\n return isUndefined(fieldNames)\r\n ? values\r\n : isString(fieldNames)\r\n ? get(values, fieldNames)\r\n : fieldNames.map((name) => get(values, name));\r\n };\r\n const getFieldState = (name, formState) => ({\r\n invalid: !!get((formState || _formState).errors, name),\r\n isDirty: !!get((formState || _formState).dirtyFields, name),\r\n isTouched: !!get((formState || _formState).touchedFields, name),\r\n error: get((formState || _formState).errors, name),\r\n });\r\n const clearErrors = (name) => {\r\n name\r\n ? convertToArrayPayload(name).forEach((inputName) => unset(_formState.errors, inputName))\r\n : (_formState.errors = {});\r\n _subjects.state.next({\r\n errors: _formState.errors,\r\n });\r\n };\r\n const setError = (name, error, options) => {\r\n const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\r\n set(_formState.errors, name, {\r\n ...error,\r\n ref,\r\n });\r\n _subjects.state.next({\r\n name,\r\n errors: _formState.errors,\r\n isValid: false,\r\n });\r\n options && options.shouldFocus && ref && ref.focus && ref.focus();\r\n };\r\n const watch = (name, defaultValue) => isFunction(name)\r\n ? _subjects.watch.subscribe({\r\n next: (info) => name(_getWatch(undefined, defaultValue), info),\r\n })\r\n : _getWatch(name, defaultValue, true);\r\n const unregister = (name, options = {}) => {\r\n for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\r\n _names.mount.delete(fieldName);\r\n _names.array.delete(fieldName);\r\n if (get(_fields, fieldName)) {\r\n if (!options.keepValue) {\r\n unset(_fields, fieldName);\r\n unset(_formValues, fieldName);\r\n }\r\n !options.keepError && unset(_formState.errors, fieldName);\r\n !options.keepDirty && unset(_formState.dirtyFields, fieldName);\r\n !options.keepTouched && unset(_formState.touchedFields, fieldName);\r\n !_options.shouldUnregister &&\r\n !options.keepDefaultValue &&\r\n unset(_defaultValues, fieldName);\r\n }\r\n }\r\n _subjects.watch.next({});\r\n _subjects.state.next({\r\n ..._formState,\r\n ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\r\n });\r\n !options.keepIsValid && _updateValid();\r\n };\r\n const register = (name, options = {}) => {\r\n let field = get(_fields, name);\r\n const disabledIsDefined = isBoolean(options.disabled);\r\n set(_fields, name, {\r\n ...(field || {}),\r\n _f: {\r\n ...(field && field._f ? field._f : { ref: { name } }),\r\n name,\r\n mount: true,\r\n ...options,\r\n },\r\n });\r\n _names.mount.add(name);\r\n field\r\n ? disabledIsDefined &&\r\n set(_formValues, name, options.disabled\r\n ? undefined\r\n : get(_formValues, name, getFieldValue(field._f)))\r\n : updateValidAndValue(name, true, options.value);\r\n return {\r\n ...(disabledIsDefined ? { disabled: options.disabled } : {}),\r\n ...(_options.shouldUseNativeValidation\r\n ? {\r\n required: !!options.required,\r\n min: getRuleValue(options.min),\r\n max: getRuleValue(options.max),\r\n minLength: getRuleValue(options.minLength),\r\n maxLength: getRuleValue(options.maxLength),\r\n pattern: getRuleValue(options.pattern),\r\n }\r\n : {}),\r\n name,\r\n onChange,\r\n onBlur: onChange,\r\n ref: (ref) => {\r\n if (ref) {\r\n register(name, options);\r\n field = get(_fields, name);\r\n const fieldRef = isUndefined(ref.value)\r\n ? ref.querySelectorAll\r\n ? ref.querySelectorAll('input,select,textarea')[0] || ref\r\n : ref\r\n : ref;\r\n const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\r\n const refs = field._f.refs || [];\r\n if (radioOrCheckbox\r\n ? refs.find((option) => option === fieldRef)\r\n : fieldRef === field._f.ref) {\r\n return;\r\n }\r\n set(_fields, name, {\r\n _f: {\r\n ...field._f,\r\n ...(radioOrCheckbox\r\n ? {\r\n refs: [\r\n ...refs.filter(live),\r\n fieldRef,\r\n ...(!!Array.isArray(get(_defaultValues, name))\r\n ? [{}]\r\n : []),\r\n ],\r\n ref: { type: fieldRef.type, name },\r\n }\r\n : { ref: fieldRef }),\r\n },\r\n });\r\n updateValidAndValue(name, false, undefined, fieldRef);\r\n }\r\n else {\r\n field = get(_fields, name, {});\r\n if (field._f) {\r\n field._f.mount = false;\r\n }\r\n (_options.shouldUnregister || options.shouldUnregister) &&\r\n !(isNameInFieldArray(_names.array, name) && _stateFlags.action) &&\r\n _names.unMount.add(name);\r\n }\r\n },\r\n };\r\n };\r\n const handleSubmit = (onValid, onInvalid) => async (e) => {\r\n if (e) {\r\n e.preventDefault && e.preventDefault();\r\n e.persist && e.persist();\r\n }\r\n let hasNoPromiseError = true;\r\n let fieldValues = cloneObject(_formValues);\r\n _subjects.state.next({\r\n isSubmitting: true,\r\n });\r\n try {\r\n if (_options.resolver) {\r\n const { errors, values } = await _executeSchema();\r\n _formState.errors = errors;\r\n fieldValues = values;\r\n }\r\n else {\r\n await executeBuiltInValidation(_fields);\r\n }\r\n if (isEmptyObject(_formState.errors)) {\r\n _subjects.state.next({\r\n errors: {},\r\n isSubmitting: true,\r\n });\r\n await onValid(fieldValues, e);\r\n }\r\n else {\r\n if (onInvalid) {\r\n await onInvalid({ ..._formState.errors }, e);\r\n }\r\n _options.shouldFocusError &&\r\n focusFieldBy(_fields, (key) => get(_formState.errors, key), _names.mount);\r\n }\r\n }\r\n catch (err) {\r\n hasNoPromiseError = false;\r\n throw err;\r\n }\r\n finally {\r\n _formState.isSubmitted = true;\r\n _subjects.state.next({\r\n isSubmitted: true,\r\n isSubmitting: false,\r\n isSubmitSuccessful: isEmptyObject(_formState.errors) && hasNoPromiseError,\r\n submitCount: _formState.submitCount + 1,\r\n errors: _formState.errors,\r\n });\r\n }\r\n };\r\n const resetField = (name, options = {}) => {\r\n if (get(_fields, name)) {\r\n if (isUndefined(options.defaultValue)) {\r\n setValue(name, get(_defaultValues, name));\r\n }\r\n else {\r\n setValue(name, options.defaultValue);\r\n set(_defaultValues, name, options.defaultValue);\r\n }\r\n if (!options.keepTouched) {\r\n unset(_formState.touchedFields, name);\r\n }\r\n if (!options.keepDirty) {\r\n unset(_formState.dirtyFields, name);\r\n _formState.isDirty = options.defaultValue\r\n ? _getDirty(name, get(_defaultValues, name))\r\n : _getDirty();\r\n }\r\n if (!options.keepError) {\r\n unset(_formState.errors, name);\r\n _proxyFormState.isValid && _updateValid();\r\n }\r\n _subjects.state.next({ ..._formState });\r\n }\r\n };\r\n const _reset = (formValues, keepStateOptions = {}) => {\r\n const updatedValues = formValues || _defaultValues;\r\n const cloneUpdatedValues = cloneObject(updatedValues);\r\n const values = formValues && !isEmptyObject(formValues)\r\n ? cloneUpdatedValues\r\n : _defaultValues;\r\n if (!keepStateOptions.keepDefaultValues) {\r\n _defaultValues = updatedValues;\r\n }\r\n if (!keepStateOptions.keepValues) {\r\n if (keepStateOptions.keepDirtyValues) {\r\n for (const fieldName of _names.mount) {\r\n get(_formState.dirtyFields, fieldName)\r\n ? set(values, fieldName, get(_formValues, fieldName))\r\n : setValue(fieldName, get(values, fieldName));\r\n }\r\n }\r\n else {\r\n if (isWeb && isUndefined(formValues)) {\r\n for (const name of _names.mount) {\r\n const field = get(_fields, name);\r\n if (field && field._f) {\r\n const fieldReference = Array.isArray(field._f.refs)\r\n ? field._f.refs[0]\r\n : field._f.ref;\r\n try {\r\n if (isHTMLElement(fieldReference)) {\r\n fieldReference.closest('form').reset();\r\n break;\r\n }\r\n }\r\n catch (_a) { }\r\n }\r\n }\r\n }\r\n _fields = {};\r\n }\r\n _formValues = props.shouldUnregister\r\n ? keepStateOptions.keepDefaultValues\r\n ? cloneObject(_defaultValues)\r\n : {}\r\n : cloneUpdatedValues;\r\n _subjects.array.next({\r\n values,\r\n });\r\n _subjects.watch.next({\r\n values,\r\n });\r\n }\r\n _names = {\r\n mount: new Set(),\r\n unMount: new Set(),\r\n array: new Set(),\r\n watch: new Set(),\r\n watchAll: false,\r\n focus: '',\r\n };\r\n _stateFlags.mount =\r\n !_proxyFormState.isValid || !!keepStateOptions.keepIsValid;\r\n _stateFlags.watch = !!props.shouldUnregister;\r\n _subjects.state.next({\r\n submitCount: keepStateOptions.keepSubmitCount\r\n ? _formState.submitCount\r\n : 0,\r\n isDirty: keepStateOptions.keepDirty || keepStateOptions.keepDirtyValues\r\n ? _formState.isDirty\r\n : !!(keepStateOptions.keepDefaultValues &&\r\n !deepEqual(formValues, _defaultValues)),\r\n isSubmitted: keepStateOptions.keepIsSubmitted\r\n ? _formState.isSubmitted\r\n : false,\r\n dirtyFields: keepStateOptions.keepDirty || keepStateOptions.keepDirtyValues\r\n ? _formState.dirtyFields\r\n : keepStateOptions.keepDefaultValues && formValues\r\n ? getDirtyFields(_defaultValues, formValues)\r\n : {},\r\n touchedFields: keepStateOptions.keepTouched\r\n ? _formState.touchedFields\r\n : {},\r\n errors: keepStateOptions.keepErrors\r\n ? _formState.errors\r\n : {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n });\r\n };\r\n const reset = (formValues, keepStateOptions) => _reset(isFunction(formValues)\r\n ? formValues(_formValues)\r\n : formValues, keepStateOptions);\r\n const setFocus = (name, options = {}) => {\r\n const field = get(_fields, name);\r\n const fieldReference = field && field._f;\r\n if (fieldReference) {\r\n const fieldRef = fieldReference.refs\r\n ? fieldReference.refs[0]\r\n : fieldReference.ref;\r\n fieldRef.focus();\r\n options.shouldSelect && fieldRef.select();\r\n }\r\n };\r\n return {\r\n control: {\r\n register,\r\n unregister,\r\n getFieldState,\r\n _executeSchema,\r\n _getWatch,\r\n _getDirty,\r\n _updateValid,\r\n _removeUnmounted,\r\n _updateFieldArray,\r\n _getFieldArray,\r\n _subjects,\r\n _proxyFormState,\r\n get _fields() {\r\n return _fields;\r\n },\r\n get _formValues() {\r\n return _formValues;\r\n },\r\n get _stateFlags() {\r\n return _stateFlags;\r\n },\r\n set _stateFlags(value) {\r\n _stateFlags = value;\r\n },\r\n get _defaultValues() {\r\n return _defaultValues;\r\n },\r\n get _names() {\r\n return _names;\r\n },\r\n set _names(value) {\r\n _names = value;\r\n },\r\n get _formState() {\r\n return _formState;\r\n },\r\n set _formState(value) {\r\n _formState = value;\r\n },\r\n get _options() {\r\n return _options;\r\n },\r\n set _options(value) {\r\n _options = {\r\n ..._options,\r\n ...value,\r\n };\r\n },\r\n },\r\n trigger,\r\n register,\r\n handleSubmit,\r\n watch,\r\n setValue,\r\n getValues,\r\n reset,\r\n resetField,\r\n clearErrors,\r\n unregister,\r\n setError,\r\n setFocus,\r\n getFieldState,\r\n };\r\n}\n\n/**\r\n * Custom hook to manage the entire form.\r\n *\r\n * @remarks\r\n * [API](https://react-hook-form.com/api/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\r\n *\r\n * @param props - form configuration and validation parameters.\r\n *\r\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\r\n *\r\n * @example\r\n * ```tsx\r\n * function App() {\r\n * const { register, handleSubmit, watch, formState: { errors } } = useForm();\r\n * const onSubmit = data => console.log(data);\r\n *\r\n * console.log(watch(\"example\"));\r\n *\r\n * return (\r\n *
\r\n * \r\n * \r\n * {errors.exampleRequired && This field is required}\r\n * \r\n *
\r\n * );\r\n * }\r\n * ```\r\n */\r\nfunction useForm(props = {}) {\r\n const _formControl = React.useRef();\r\n const [formState, updateFormState] = React.useState({\r\n isDirty: false,\r\n isValidating: false,\r\n dirtyFields: {},\r\n isSubmitted: false,\r\n submitCount: 0,\r\n touchedFields: {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n isValid: false,\r\n errors: {},\r\n });\r\n if (_formControl.current) {\r\n _formControl.current.control._options = props;\r\n }\r\n else {\r\n _formControl.current = {\r\n ...createFormControl(props),\r\n formState,\r\n };\r\n }\r\n const control = _formControl.current.control;\r\n const callback = React.useCallback((value) => {\r\n if (shouldRenderFormState(value, control._proxyFormState, true)) {\r\n control._formState = {\r\n ...control._formState,\r\n ...value,\r\n };\r\n updateFormState({ ...control._formState });\r\n }\r\n }, [control]);\r\n useSubscribe({\r\n subject: control._subjects.state,\r\n callback,\r\n });\r\n React.useEffect(() => {\r\n if (!control._stateFlags.mount) {\r\n control._proxyFormState.isValid && control._updateValid();\r\n control._stateFlags.mount = true;\r\n }\r\n if (control._stateFlags.watch) {\r\n control._stateFlags.watch = false;\r\n control._subjects.state.next({});\r\n }\r\n control._removeUnmounted();\r\n });\r\n _formControl.current.formState = getProxyFormState(formState, control._proxyFormState);\r\n return _formControl.current;\r\n}\n\nexport { Controller, FormProvider, appendErrors, get, set, useController, useFieldArray, useForm, useFormContext, useFormState, useWatch };\n//# sourceMappingURL=index.esm.mjs.map\n"],"names":["isCheckBoxInput","element","type","isDateObject","value","Date","isNullOrUndefined","isObjectType","isObject","Array","isArray","getEventValue","event","target","checked","isNameInFieldArray","names","name","has","substring","search","getNodeParentName","compact","filter","Boolean","isUndefined","val","undefined","get","obj","path","defaultValue","result","split","reduce","key","EVENTS","BLUR","FOCUS_OUT","CHANGE","VALIDATION_MODE","onBlur","onChange","onSubmit","onTouched","all","INPUT_VALIDATION_RULES","HookFormContext","useFormContext","getProxyFormState","formState","_proxyFormState","localProxyFormState","isRoot","Object","defineProperty","_key","isEmptyObject","keys","length","shouldRenderFormState","formStateData","find","convertToArrayPayload","shouldSubscribeByName","signalName","exact","some","currentName","startsWith","useSubscribe","props","_props","current","subscription","disabled","subject","subscribe","next","callback","unsubscribe","tearDown","useFormState","methods","control","updateFormState","_formState","_localProxyFormState","isDirty","dirtyFields","touchedFields","isValidating","isValid","errors","_name","_mounted","_subjects","state","isString","generateWatchOutput","_names","formValues","isGlobal","watch","add","map","fieldName","watchAll","isFunction","objectHasFunction","data","useWatch","fieldValues","values","_formValues","updateValue","_getWatch","_removeUnmounted","useController","shouldUnregister","isArrayField","array","_defaultValues","_registerProps","register","rules","updateMounted","field","_fields","_f","mount","_shouldUnregisterField","_options","_stateFlags","action","unregister","ref","elm","focus","select","setCustomValidity","message","reportValidity","fieldState","defineProperties","invalid","enumerable","isTouched","error","Controller","render","appendErrors","validateAllFieldCriteria","types","isKey","test","stringToPath","input","replace","set","object","index","tempPath","lastIndex","newValue","objValue","isNaN","focusFieldBy","fields","fieldsNames","currentField","refs","generateId","d","performance","now","c","r","Math","random","toString","getFocusFieldName","options","shouldFocus","focusName","focusIndex","isWatched","isBlurEvent","watchName","slice","updateFieldArrayRootError","fieldArrayErrors","isBoolean","isFileInput","isMessage","isRadioInput","isRegex","RegExp","defaultResult","validResult","getCheckboxValue","option","attributes","defaultReturn","getRadioValue","previous","getValidateError","every","getValueAndMessage","validationData","validateField","async","inputValue","shouldUseNativeValidation","isFieldArray","required","maxLength","minLength","min","max","pattern","validate","valueAsNumber","inputRef","isRadio","isCheckBox","isRadioOrCheckbox","isEmpty","appendErrorsCurry","bind","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","exceedMin","maxOutput","minOutput","valueDate","valueAsDate","valueNumber","maxLengthOutput","minLengthOutput","patternValue","match","validateError","validationResult","append","isWeb","window","HTMLElement","document","cloneObject","copy","Set","Blob","FileList","fillEmptyArray","getValidationModes","mode","isOnSubmit","isOnBlur","isOnChange","isOnAll","isOnTouch","insert","moveArrayAt","from","to","splice","prepend","removeArrayAt","indexes","i","temp","removeAtIndexes","sort","a","b","swapArrayAt","indexA","indexB","isEmptyArray","unset","updatePath","childObject","baseGet","previousObjRef","k","objectRef","currentPaths","currentPathsLength","item","updateAt","useFieldArray","keyName","setFields","_getFieldArray","ids","_fieldIds","_actioned","fieldArrayName","updateValues","updatedFieldArrayValues","_updateFieldArray","resolver","_executeSchema","then","existingError","isSubmitted","criteriaMode","_updateValid","swap","argA","argB","move","prependValue","appendValue","remove","insertValue","update","createSubject","_observers","observers","observer","push","o","isPrimitive","deepEqual","object1","object2","getTime","keys1","keys2","val1","includes","val2","isHTMLElement","owner","ownerDocument","defaultView","isMultipleSelect","live","isConnected","markFieldsDirty","isParentNodeArray","getDirtyFieldsFromDefaultValues","dirtyFieldsFromValues","getDirtyFields","defaultValues","getFieldValueAs","setValueAs","NaN","getFieldValue","files","selectedOptions","getResolverOptions","getRuleValue","rule","source","hasValidation","schemaErrorLookup","join","foundError","pop","skipValidation","reValidateMode","unsetEmptyArray","defaultOptions","shouldFocusError","createFormControl","delayErrorCallback","submitCount","isSubmitting","isSubmitSuccessful","unMount","timer","validateFields","validationModeBeforeSubmit","validationModeAfterSubmit","shouldDisplayAllAssociatedErrors","shouldSkipRender","executeBuiltInValidation","updateValidAndValue","shouldSkipSetValueAs","defaultChecked","setFieldValue","updateTouchAndDirty","fieldValue","shouldDirty","shouldRender","isFieldDirty","output","isPreviousFieldTouched","isPreviousFormDirty","_getDirty","isPreviousFieldDirty","context","shouldOnlyCheckValid","valid","isFieldArrayRoot","fieldError","getValues","fieldReference","forEach","selectRef","selected","checkboxRef","radioRef","shouldTouch","shouldValidate","trigger","setValues","fieldKey","setValue","cloneValue","shouldSkipValidation","deps","watched","previousErrorLookupResult","errorLookupResult","previousFieldError","shouldUpdateValid","delayError","updateErrors","wait","clearTimeout","setTimeout","updatedFormState","v","shouldRenderByError","fieldNames","executeSchemaAndUpdateState","Promise","getFieldState","delete","keepValue","keepError","keepDirty","keepTouched","keepDefaultValue","keepIsValid","disabledIsDefined","fieldRef","querySelectorAll","radioOrCheckbox","method","args","shouldSetValues","shouldUpdateFieldsAndState","handleSubmit","onValid","onInvalid","e","preventDefault","persist","hasNoPromiseError","err","info","reset","keepStateOptions","updatedValues","cloneUpdatedValues","keepDefaultValues","keepValues","keepDirtyValues","closest","_a","keepSubmitCount","keepIsSubmitted","keepErrors","_reset","resetField","clearErrors","inputName","setError","setFocus","shouldSelect","useForm","_formControl"],"sourceRoot":""}