@szkj/utils 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/mask/maskOptions.ts","../src/mask/mask.ts","../src/mask/maskName.ts","../src/mask/maskPhone.ts","../src/mask/maskFixedPhone.ts","../src/mask/maskEmail.ts","../src/mask/maskIdCard.ts","../src/mask/maskBankCard.ts","../src/mask/maskAddress.ts","../src/mask/maskPassport.ts","../src/mask/maskCarPlate.ts","../src/mask/maskIp.ts","../src/mask/maskAccount.ts","../src/mask/maskSecret.ts","../src/regexp/index.ts","../src/cache/index.ts","../src/crypto/index.ts","../src/date/index.ts","../src/number/index.ts","../src/tree/index.ts","../src/storage/index.ts","../src/copy/index.ts","../src/download/index.ts","../src/file/index.ts","../src/object/index.ts","../src/array/index.ts","../src/string/index.ts","../src/function/index.ts","../src/get/index.ts"],"names":["hiddenLength","maskLength","keys","get","downloadBlob"],"mappings":";;;;;;;;;;;AAsBO,SAAS,cAAA,CACZ,KAAA,EACA,QAAA,EACA,OAAA,GAAuB,EAAC,EAClB;AA1BV,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA2BI,EAAA,MAAM,KAAA,GAAQ,cAAA;AAAA,IAAA,CACV,EAAA,GAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,KAAA,KAAR,IAAA,GAAA,EAAA,GAAiB,QAAA,CAAS,UAA1B,IAAA,GAAA,EAAA,GAAmC;AAAA,GACvC;AACA,EAAA,MAAM,GAAA,GAAM,cAAA;AAAA,IAAA,CACR,EAAA,GAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,GAAA,KAAR,IAAA,GAAA,EAAA,GAAe,QAAA,CAAS,QAAxB,IAAA,GAAA,EAAA,GAA+B;AAAA,GACnC;AACA,EAAA,MAAM,QAAA,GACF,OAAA,CAAQ,QAAA,IAAY,QAAA,CAAS,QAAA,IAAY,GAAA;AAE7C,EAAA,IAAI,KAAA,CAAM,MAAA,IAAU,KAAA,GAAQ,GAAA,EAAK;AAC7B,IAAA,MAAMA,gBAAe,IAAA,CAAK,GAAA;AAAA,MACtB,MAAM,MAAA,GAAS,KAAA;AAAA,MACf;AAAA,KACJ;AACA,IAAA,MAAMC,WAAAA,GAAa,cAAA;AAAA,MAAA,CACf,EAAA,GAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,UAAA,KAAR,IAAA,GAAA,EAAA,GACI,QAAA,CAAS,eADb,IAAA,GAAA,EAAA,GAEID;AAAA,KACR;AAEA,IAAA,OACI,MAAM,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA,GACpB,QAAA,CAAS,OAAOC,WAAU,CAAA;AAAA,EAElC;AAEA,EAAA,MAAM,eAAe,IAAA,CAAK,GAAA;AAAA,IACtB,KAAA,CAAM,SAAS,KAAA,GAAQ,GAAA;AAAA,IACvB;AAAA,GACJ;AACA,EAAA,MAAM,UAAA,GAAa,cAAA;AAAA,IAAA,CACf,EAAA,GAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,UAAA,KAAR,IAAA,GAAA,EAAA,GACI,QAAA,CAAS,eADb,IAAA,GAAA,EAAA,GAEI;AAAA,GACR;AAEA,EAAA,OACI,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,KAAK,IACpB,QAAA,CAAS,MAAA,CAAO,UAAU,CAAA,IACzB,MAAM,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,CAAC,GAAG,CAAA,GAAI,EAAA,CAAA;AAEvC;AAEA,SAAS,eAAe,KAAA,EAAuB;AAC3C,EAAA,OAAO,KAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,KAAK,CAAC,CAAA;AACxC;;;AC9CO,SAAS,IAAA,CACZ,KAAA,EACA,OAAA,GAAgC,EAAC,EAC3B;AACN,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAEnB,EAAA,IAAI,QAAQ,OAAA,EAAS;AACjB,IAAA,OAAO,aAAA,CAAc,OAAO,OAAO,CAAA;AAAA,EACvC;AAEA,EAAA,IAAI,QAAQ,KAAA,EAAO;AACf,IAAA,OAAO,WAAA,CAAY,OAAO,OAAO,CAAA;AAAA,EACrC;AAEA,EAAA,OAAO,cAAA,CAAe,KAAA,EAAO,EAAC,EAAG,OAAO,CAAA;AAC5C;AAEA,SAAS,aAAA,CACL,OACA,OAAA,EACM;AACN,EAAA,MAAM;AAAA,IACF,OAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA,GAAW;AAAA,GACf,GAAI,OAAA;AAEJ,EAAA,IAAI,CAAC,SAAS,OAAO,KAAA;AAErB,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,OAAA,EAAS,CAAC,KAAA,KAAU;AACrC,IAAA,IAAI,OAAO,gBAAgB,UAAA,EAAY;AACnC,MAAA,OAAO,YAAY,KAAK,CAAA;AAAA,IAC5B;AAEA,IAAA,IAAI,OAAO,gBAAgB,QAAA,EAAU;AACjC,MAAA,OAAO,WAAA;AAAA,IACX;AAEA,IAAA,OAAO,QAAA,CAAS,MAAA;AAAA,MACZ,aAAA,CAAc,KAAA,CAAM,MAAA,EAAQ,OAAO;AAAA,KACvC;AAAA,EACJ,CAAC,CAAA;AACL;AAEA,SAAS,WAAA,CACL,OACA,OAAA,EACM;AACN,EAAA,MAAM,CAAC,UAAU,MAAM,CAAA,GAAI,QAAQ,KAAA,IAAS,CAAC,GAAG,CAAC,CAAA;AACjD,EAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,QAAA,EAAU,KAAA,CAAM,MAAM,CAAA;AAC/C,EAAA,MAAM,GAAA,GAAM,UAAA,CAAW,MAAA,EAAQ,KAAA,CAAM,MAAM,CAAA;AAC3C,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,GAAG,CAAA;AAChC,EAAA,MAAM,EAAA,GAAK,IAAA,CAAK,GAAA,CAAI,KAAA,EAAO,GAAG,CAAA;AAC9B,EAAA,MAAM,QAAA,GAAW,QAAQ,QAAA,IAAY,GAAA;AAErC,EAAA,OACI,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,IAAI,IACnB,QAAA,CAAS,MAAA;AAAA,IACL,aAAA,CAAc,EAAA,GAAK,IAAA,EAAM,OAAO;AAAA,GACpC,GACA,KAAA,CAAM,KAAA,CAAM,EAAE,CAAA;AAEtB;AAEA,SAAS,aAAA,CACL,cACA,OAAA,EACM;AA7FV,EAAA,IAAA,EAAA;AA8FI,EAAA,OAAO,IAAA,CAAK,GAAA;AAAA,IACR,CAAA;AAAA,IACA,IAAA,CAAK,KAAA;AAAA,MAAA,CACD,EAAA,GAAA,OAAA,CAAQ,eAAR,IAAA,GAAA,EAAA,GAAsB;AAAA;AAC1B,GACJ;AACJ;AAEA,SAAS,UAAA,CACL,OACA,MAAA,EACM;AACN,EAAA,OAAO,IAAA,CAAK,GAAA;AAAA,IACR,KAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,IAC7B;AAAA,GACJ;AACJ;;;ACvGO,SAAS,QAAA,CACZ,MACA,OAAA,EACM;AACN,EAAA,IAAI,CAAC,MAAM,OAAO,EAAA;AAElB,EAAA,OAAO,cAAA;AAAA,IACH,IAAA;AAAA,IACA;AAAA,MACI,KAAA,EAAO,CAAA;AAAA,MACP,GAAA,EAAK,CAAA;AAAA,MACL,QAAA,EAAU;AAAA,KACd;AAAA,IACA;AAAA,GACJ;AACJ;;;ACRO,SAAS,SAAA,CACZ,OACA,OAAA,EACM;AACN,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAEnB,EAAA,IAAI,CAAC,UAAA,CAAW,IAAA,CAAK,KAAK,GAAG,OAAO,KAAA;AAEpC,EAAA,OAAO,cAAA;AAAA,IACH,KAAA;AAAA,IACA;AAAA,MACI,KAAA,EAAO,CAAA;AAAA,MACP,GAAA,EAAK,CAAA;AAAA,MACL,QAAA,EAAU,GAAA;AAAA,MACV,UAAA,EAAY;AAAA,KAChB;AAAA,IACA;AAAA,GACJ;AACJ;;;ACzBO,SAAS,cAAA,CACZ,OACA,OAAA,EACM;AACN,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAEnB,EAAA,MAAM,UAAA,GAAa,KAAA,CAAM,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA;AAE7C,EAAA,IAAI,CAAC,aAAA,CAAc,IAAA,CAAK,UAAU,CAAA,EAAG;AACjC,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,MAAM,cAAA,GAAiB,iBAAA;AAAA,IACnB,KAAA;AAAA,IACA;AAAA,GACJ;AAEA,EAAA,OAAO,cAAA;AAAA,IACH,UAAA;AAAA,IACA;AAAA,MACI,KAAA,EAAO,cAAA;AAAA,MACP,GAAA,EAAK,CAAA;AAAA,MACL,QAAA,EAAU;AAAA,KACd;AAAA,IACA;AAAA,GACJ;AACJ;AAEA,SAAS,iBAAA,CACL,OACA,UAAA,EACM;AACN,EAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,KAAA,CAAM,aAAa,CAAA;AAE/C,EAAA,IAAI,aAAA,EAAe;AACf,IAAA,OAAO,aAAA,CAAc,CAAC,CAAA,CAAE,MAAA;AAAA,EAC5B;AAEA,EAAA,IAAI,UAAA,CAAW,WAAW,EAAA,EAAI;AAC1B,IAAA,OAAO,CAAA;AAAA,EACX;AAEA,EAAA,OAAO,oBAAA,CAAqB,UAAU,CAAA,GAChC,CAAA,GACA,CAAA;AACV;AAEA,SAAS,qBAAqB,KAAA,EAAwB;AAClD,EAAA,OAAO,4CAAA,CAA6C,IAAA;AAAA,IAChD;AAAA,GACJ;AACJ;;;ACzCO,SAAS,SAAA,CACZ,OACA,OAAA,EACM;AACN,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAEnB,EAAA,MAAM,CAAC,IAAA,EAAM,MAAM,CAAA,GAAI,KAAA,CAAM,MAAM,GAAG,CAAA;AAEtC,EAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,MAAA,EAAQ,OAAO,KAAA;AAE7B,EAAA,MAAM,MAAA,GAAS,cAAA;AAAA,IACX,IAAA;AAAA,IACA;AAAA,MACI,KAAA,EAAO,CAAA;AAAA,MACP,GAAA,EAAK,CAAA;AAAA,MACL,QAAA,EAAU,GAAA;AAAA,MACV,UAAA,EAAY;AAAA,KAChB;AAAA,IACA;AAAA,GACJ;AAEA,EAAA,OAAO,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AAC9B;;;ACzBO,SAAS,UAAA,CACZ,QACA,OAAA,EACM;AACN,EAAA,IAAI,CAAC,QAAQ,OAAO,EAAA;AAEpB,EAAA,IAAI,MAAA,CAAO,MAAA,IAAU,CAAA,EAAG,OAAO,MAAA;AAE/B,EAAA,OAAO,cAAA;AAAA,IACH,MAAA;AAAA,IACA;AAAA,MACI,KAAA,EAAO,CAAA;AAAA,MACP,GAAA,EAAK,CAAA;AAAA,MACL,QAAA,EAAU,GAAA;AAAA,MACV,UAAA,EAAY;AAAA,KAChB;AAAA,IACA;AAAA,GACJ;AACJ;;;ACzBO,SAAS,YAAA,CACZ,QACA,OAAA,EACM;AACN,EAAA,IAAI,CAAC,QAAQ,OAAO,EAAA;AAEpB,EAAA,MAAM,UAAA,GAAa,MAAA,CAAO,OAAA,CAAQ,QAAA,EAAU,EAAE,CAAA;AAE9C,EAAA,IAAI,CAAC,aAAA,CAAc,IAAA,CAAK,UAAU,CAAA,EAAG;AACjC,IAAA,OAAO,MAAA;AAAA,EACX;AAEA,EAAA,OAAO,cAAA;AAAA,IACH,UAAA;AAAA,IACA;AAAA,MACI,KAAA,EAAO,CAAA;AAAA,MACP,GAAA,EAAK,CAAA;AAAA,MACL,QAAA,EAAU;AAAA,KACd;AAAA,IACA;AAAA,GACJ;AACJ;;;AClBO,SAAS,WAAA,CACZ,OAAA,EACA,OAAA,GAA8B,EAAC,EACzB;AAbV,EAAA,IAAA,EAAA,EAAA,EAAA;AAcI,EAAA,IAAI,CAAC,SAAS,OAAO,EAAA;AAErB,EAAA,MAAM,UAAA,GAAA,CACF,EAAA,GAAA,OAAA,CAAQ,UAAA,KAAR,IAAA,GAAA,EAAA,GAAsB,kBAAkB,OAAO,CAAA;AACnD,EAAA,MAAM,QAAA,GAAW,QAAQ,QAAA,IAAY,GAAA;AACrC,EAAA,MAAM,aAAa,IAAA,CAAK,GAAA;AAAA,IACpB,CAAA;AAAA,IACA,IAAA,CAAK,KAAA,CAAA,CAAM,EAAA,GAAA,OAAA,CAAQ,UAAA,KAAR,YAAsB,CAAC;AAAA,GACtC;AAEA,EAAA,OACI,QAAQ,KAAA,CAAM,CAAA,EAAG,UAAU,CAAA,GAC3B,QAAA,CAAS,OAAO,UAAU,CAAA;AAElC;AAEA,SAAS,kBAAkB,OAAA,EAAyB;AAChD,EAAA,MAAM,cAAc,OAAA,CAAQ,KAAA;AAAA,IACxB;AAAA,GACJ;AAEA,EAAA,IAAI,WAAA,EAAa;AACb,IAAA,OAAO,WAAA,CAAY,CAAC,CAAA,CAAE,MAAA;AAAA,EAC1B;AAEA,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,OAAA,CAAQ,MAAM,CAAA;AACrC;;;ACjCO,SAAS,YAAA,CACZ,UACA,OAAA,EACM;AACN,EAAA,IAAI,CAAC,UAAU,OAAO,EAAA;AAEtB,EAAA,OAAO,cAAA;AAAA,IACH,QAAA;AAAA,IACA;AAAA,MACI,KAAA,EAAO,CAAA;AAAA,MACP,GAAA,EAAK,CAAA;AAAA,MACL,QAAA,EAAU;AAAA,KACd;AAAA,IACA;AAAA,GACJ;AACJ;;;ACfO,SAAS,YAAA,CACZ,OACA,OAAA,EACM;AACN,EAAA,IAAI,CAAC,OAAO,OAAO,EAAA;AAEnB,EAAA,OAAO,cAAA;AAAA,IACH,KAAA;AAAA,IACA;AAAA,MACI,KAAA,EAAO,CAAA;AAAA,MACP,GAAA,EAAK,CAAA;AAAA,MACL,QAAA,EAAU;AAAA,KACd;AAAA,IACA;AAAA,GACJ;AACJ;;;ACfO,SAAS,MAAA,CACZ,EAAA,EACA,OAAA,GAAyB,EAAC,EACpB;AACN,EAAA,IAAI,CAAC,IAAI,OAAO,EAAA;AAEhB,EAAA,IAAI,EAAA,CAAG,QAAA,CAAS,GAAG,CAAA,EAAG;AAClB,IAAA,OAAO,QAAA,CAAS,IAAI,OAAO,CAAA;AAAA,EAC/B;AAEA,EAAA,OAAO,QAAA,CAAS,IAAI,OAAO,CAAA;AAC/B;AAEA,SAAS,QAAA,CACL,IACA,OAAA,EACM;AAvBV,EAAA,IAAA,EAAA;AAwBI,EAAA,MAAM,QAAA,GAAW,EAAA,CAAG,KAAA,CAAM,GAAG,CAAA;AAE7B,EAAA,IACI,QAAA,CAAS,MAAA,KAAW,CAAA,IACpB,QAAA,CAAS,IAAA,CAAK,CAAC,OAAA,KAAY,CAAC,aAAA,CAAc,OAAO,CAAC,CAAA,EACpD;AACE,IAAA,OAAO,EAAA;AAAA,EACX;AAEA,EAAA,MAAM,SAAS,IAAA,CAAK,GAAA;AAAA,IAChB,KAAK,GAAA,CAAA,CAAI,EAAA,GAAA,OAAA,CAAQ,OAAA,KAAR,IAAA,GAAA,EAAA,GAAmB,GAAG,CAAC,CAAA;AAAA,IAChC;AAAA,GACJ;AAEA,EAAA,QAAA,CAAS,MAAM,CAAA,GAAI,OAAA,CAAQ,QAAA,IAAY,GAAA;AAEvC,EAAA,OAAO,QAAA,CAAS,KAAK,GAAG,CAAA;AAC5B;AAEA,SAAS,QAAA,CACL,IACA,OAAA,EACM;AA9CV,EAAA,IAAA,EAAA;AA+CI,EAAA,MAAM,QAAA,GAAW,EAAA,CAAG,KAAA,CAAM,GAAG,CAAA;AAE7B,EAAA,IAAI,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG,OAAO,EAAA;AAEhC,EAAA,MAAM,SAAS,IAAA,CAAK,GAAA;AAAA,IAChB,IAAA,CAAK,GAAA;AAAA,MAAA,CACD,EAAA,GAAA,OAAA,CAAQ,OAAA,KAAR,IAAA,GAAA,EAAA,GAAmB,QAAA,CAAS,MAAA,GAAS,CAAA;AAAA,MACrC;AAAA,KACJ;AAAA,IACA,SAAS,MAAA,GAAS;AAAA,GACtB;AAEA,EAAA,QAAA,CAAS,MAAM,CAAA,GAAI,OAAA,CAAQ,QAAA,IAAY,GAAA;AAEvC,EAAA,OAAO,QAAA,CAAS,KAAK,GAAG,CAAA;AAC5B;AAEA,SAAS,cAAc,OAAA,EAA0B;AAC7C,EAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,CAAK,OAAO,GAAG,OAAO,KAAA;AAEnC,EAAA,MAAM,KAAA,GAAQ,OAAO,OAAO,CAAA;AAE5B,EAAA,OAAO,KAAA,IAAS,KAAK,KAAA,IAAS,GAAA;AAClC;;;AC/DO,SAAS,WAAA,CACZ,SACA,OAAA,EACM;AACN,EAAA,IAAI,CAAC,SAAS,OAAO,EAAA;AAErB,EAAA,OAAO,cAAA;AAAA,IACH,OAAA;AAAA,IACA;AAAA,MACI,KAAA,EAAO,CAAA;AAAA,MACP,GAAA,EAAK,CAAA;AAAA,MACL,QAAA,EAAU;AAAA,KACd;AAAA,IACA;AAAA,GACJ;AACJ;;;ACfO,SAAS,UAAA,CACZ,QACA,OAAA,EACM;AACN,EAAA,IAAI,CAAC,QAAQ,OAAO,EAAA;AAEpB,EAAA,OAAO,cAAA;AAAA,IACH,MAAA;AAAA,IACA;AAAA,MACI,KAAA,EAAO,CAAA;AAAA,MACP,GAAA,EAAK,CAAA;AAAA,MACL,QAAA,EAAU,GAAA;AAAA,MACV,UAAA,EAAY;AAAA,KAChB;AAAA,IACA;AAAA,GACJ;AACJ;;;ACvBO,IAAM,YAAA,GAAe;AAErB,IAAM,kBAAA,GACT;AAEG,IAAM,YAAA,GACT;AAEG,IAAM,cAAA,GACT;AAEG,IAAM,gBAAA,GAAmB;AAEzB,IAAM,eAAA,GACT;AAEG,IAAM,gBAAA,GACT;AAEG,IAAM,UAAA,GACT;AAEG,IAAM,WAAA,GACT;AAEG,IAAM,WAAA,GACT;AAEG,IAAM,WAAA,GACT;AAEG,IAAM,cAAA,GAAiB;AAEvB,IAAM,kBAAA,GACT;AAEG,IAAM,SAAA,GAAY;AAElB,IAAM,eAAA,GACT;AAEG,IAAM,eAAA,GACT;AAEG,IAAM,sBAAA,GACT;AAEG,IAAM,cAAA,GAAiB;AAEvB,IAAM,uBAAA,GACT;AAEG,IAAM,cAAA,GACT;AAEG,IAAM,aAAA,GACT;AAEG,IAAM,MAAA,GAAS;AAAA,EAClB,KAAA,EAAO,YAAA;AAAA,EACP,UAAA,EAAY,kBAAA;AAAA,EACZ,KAAA,EAAO,YAAA;AAAA,EACP,MAAA,EAAQ,cAAA;AAAA,EACR,QAAA,EAAU,gBAAA;AAAA,EACV,QAAA,EAAU,eAAA;AAAA,EACV,QAAA,EAAU,gBAAA;AAAA,EACV,GAAA,EAAK,UAAA;AAAA,EACL,IAAA,EAAM,WAAA;AAAA,EACN,IAAA,EAAM,WAAA;AAAA,EACN,IAAA,EAAM,WAAA;AAAA,EACN,OAAA,EAAS,cAAA;AAAA,EACT,UAAA,EAAY,kBAAA;AAAA,EACZ,EAAA,EAAI,SAAA;AAAA,EACJ,QAAA,EAAU,eAAA;AAAA,EACV,QAAA,EAAU,eAAA;AAAA,EACV,cAAA,EAAgB,sBAAA;AAAA,EAChB,OAAA,EAAS,cAAA;AAAA,EACT,eAAA,EAAiB,uBAAA;AAAA,EACjB,OAAA,EAAS,cAAA;AAAA,EACT,MAAA,EAAQ;AACZ;AAIO,SAAS,UAAA,CACZ,OACA,OAAA,EACO;AACP,EAAA,OAAA,CAAQ,SAAA,GAAY,CAAA;AAEpB,EAAA,OAAO,OAAA,CAAQ,KAAK,KAAK,CAAA;AAC7B;AAEO,IAAM,OAAA,GAAU,CAAC,KAAA,KACpB,UAAA,CAAW,OAAO,YAAY;AAE3B,IAAM,YAAA,GAAe,CAAC,KAAA,KACzB,UAAA,CAAW,OAAO,kBAAkB;AAEjC,IAAM,OAAA,GAAU,CAAC,KAAA,KACpB,UAAA,CAAW,OAAO,YAAY;AAE3B,IAAM,QAAA,GAAW,CAAC,KAAA,KACrB,UAAA,CAAW,OAAO,cAAc;AAE7B,IAAM,UAAA,GAAa,CAAC,KAAA,KACvB,UAAA,CAAW,OAAO,gBAAgB;AAE/B,IAAM,UAAA,GAAa,CAAC,KAAA,KACvB,UAAA,CAAW,OAAO,eAAe;AAE9B,IAAM,UAAA,GAAa,CAAC,KAAA,KACvB,UAAA,CAAW,OAAO,gBAAgB;AAE/B,IAAM,KAAA,GAAQ,CAAC,KAAA,KAClB,UAAA,CAAW,OAAO,UAAU;AAEzB,IAAM,MAAA,GAAS,CAAC,KAAA,KACnB,UAAA,CAAW,OAAO,WAAW;AAE1B,IAAM,MAAA,GAAS,CAAC,KAAA,KACnB,UAAA,CAAW,OAAO,WAAW;AAE1B,IAAM,MAAA,GAAS,CAAC,KAAA,KACnB,UAAA,CAAW,OAAO,WAAW;AAE1B,IAAM,SAAA,GAAY,CAAC,KAAA,KACtB,UAAA,CAAW,OAAO,cAAc;AAE7B,IAAM,YAAA,GAAe,CAAC,KAAA,KACzB,UAAA,CAAW,OAAO,kBAAkB;AAEjC,IAAM,IAAA,GAAO,CAAC,KAAA,KACjB,UAAA,CAAW,OAAO,SAAS;AAExB,IAAM,UAAA,GAAa,CAAC,KAAA,KACvB,UAAA,CAAW,OAAO,eAAe;AAE9B,IAAM,UAAA,GAAa,CAAC,KAAA,KACvB,UAAA,CAAW,OAAO,eAAe;AAE9B,IAAM,gBAAA,GAAmB,CAC5B,KAAA,KAEA,UAAA,CAAW,OAAO,sBAAsB;AAErC,IAAM,SAAA,GAAY,CAAC,KAAA,KACtB,UAAA,CAAW,OAAO,cAAc;AAE7B,IAAM,iBAAA,GAAoB,CAC7B,KAAA,KAEA,UAAA,CAAW,OAAO,uBAAuB;AAEtC,IAAM,SAAA,GAAY,CAAC,KAAA,KACtB,UAAA,CAAW,OAAO,cAAc;AAE7B,IAAM,QAAA,GAAW,CAAC,KAAA,KACrB,UAAA,CAAW,OAAO,aAAa;;;ACzH5B,SAAS,WAAA,CACZ,OAAA,GAAwB,EAAC,EACpB;AAvCT,EAAA,IAAA,EAAA;AAwCI,EAAA,MAAM,MAAA,GAAA,CAAS,EAAA,GAAA,OAAA,CAAQ,MAAA,KAAR,IAAA,GAAA,EAAA,GAAkB,aAAA;AACjC,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAkC;AAErD,EAAA,MAAM,aAAa,CAAC,GAAA,KAChB,CAAA,EAAG,MAAM,GAAG,GAAG,CAAA,CAAA;AAEnB,EAAA,MAAM,YAAA,GAAe,CAAC,GAAA,KAClB,GAAA,CAAI,UAAA,CAAW,MAAM,CAAA,GACf,GAAA,CAAI,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA,GACvB,GAAA;AAEV,EAAA,MAAM,YAAA,GAAe,CACjB,GAAA,GAAM,OAAA,CAAQ,GAAA,KACE;AAChB,IAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,EAAU,OAAO,IAAA;AAEpC,IAAA,OAAO,KAAK,GAAA,EAAI,GAAI,IAAA,CAAK,GAAA,CAAI,GAAG,GAAG,CAAA;AAAA,EACvC,CAAA;AAEA,EAAA,MAAM,IAAA,GAAO,CACT,WAAA,KACmC;AACnC,IAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AAClB,MAAA,OAAO,MAAA,CAAO,IAAI,WAAW,CAAA;AAAA,IACjC;AAEA,IAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,OAAA,CAAQ,OAAA,CAAQ,WAAW,CAAA;AAE/C,IAAA,IAAI,CAAC,KAAK,OAAO,MAAA;AAEjB,IAAA,IAAI;AACA,MAAA,OAAO,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,IACzB,CAAA,CAAA,MAAQ;AACJ,MAAA,OAAA,CAAQ,OAAA,CAAQ,WAAW,WAAW,CAAA;AACtC,MAAA,OAAO,MAAA;AAAA,IACX;AAAA,EACJ,CAAA;AAEA,EAAA,MAAM,KAAA,GAAQ,CACV,WAAA,EACA,MAAA,KACO;AACP,IAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AAClB,MAAA,MAAA,CAAO,GAAA,CAAI,aAAa,MAAM,CAAA;AAC9B,MAAA;AAAA,IACJ;AAEA,IAAA,OAAA,CAAQ,OAAA,CAAQ,OAAA;AAAA,MACZ,WAAA;AAAA,MACA,IAAA,CAAK,UAAU,MAAM;AAAA,KACzB;AAAA,EACJ,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CACnB,WAAA,KACO;AACP,IAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AAClB,MAAA,MAAA,CAAO,OAAO,WAAW,CAAA;AACzB,MAAA;AAAA,IACJ;AAEA,IAAA,OAAA,CAAQ,OAAA,CAAQ,WAAW,WAAW,CAAA;AAAA,EAC1C,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CACd,MAAA,KAEA,OAAO,MAAA,CAAO,cAAc,QAAA,IAC5B,MAAA,CAAO,SAAA,IAAa,IAAA,CAAK,GAAA,EAAI;AAEjC,EAAA,MAAM,kBAAkB,MAAgB;AACpC,IAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AAClB,MAAA,OAAO,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA,EAAM,CAAA,CAAE,MAAA;AAAA,QAAO,CAAC,GAAA,KACrC,GAAA,CAAI,UAAA,CAAW,MAAM;AAAA,OACzB;AAAA,IACJ;AAEA,IAAA,MAAMC,QAAiB,EAAC;AAExB,IAAA,KAAA,IACQ,QAAQ,CAAA,EACZ,KAAA,GAAQ,QAAQ,OAAA,CAAQ,MAAA,EACxB,SAAS,CAAA,EACX;AACE,MAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAA;AAErC,MAAA,IAAI,GAAA,IAAA,IAAA,GAAA,MAAA,GAAA,GAAA,CAAK,WAAW,MAAA,CAAA,EAAS;AACzB,QAAAA,KAAAA,CAAK,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACJ;AAEA,IAAA,OAAOA,KAAAA;AAAA,EACX,CAAA;AAEA,EAAA,MAAMC,IAAAA,GAAM,CACR,GAAA,KACgB;AAChB,IAAA,MAAM,WAAA,GAAc,WAAW,GAAG,CAAA;AAClC,IAAA,MAAM,MAAA,GAAS,KAAK,WAAW,CAAA;AAE/B,IAAA,IAAI,CAAC,QAAQ,OAAO,MAAA;AAEpB,IAAA,IAAI,SAAA,CAAU,MAAM,CAAA,EAAG;AACnB,MAAA,cAAA,CAAe,WAAW,CAAA;AAC1B,MAAA,OAAO,MAAA;AAAA,IACX;AAEA,IAAA,OAAO,MAAA,CAAO,KAAA;AAAA,EAClB,CAAA;AAEA,EAAA,MAAM,OAAO,MACT,eAAA,GAAkB,MAAA,CAAiB,CAAC,QAAQ,GAAA,KAAQ;AAChD,IAAA,MAAM,MAAA,GAAS,KAAK,GAAG,CAAA;AAEvB,IAAA,IAAI,CAAC,MAAA,IAAU,SAAA,CAAU,MAAM,CAAA,EAAG;AAC9B,MAAA,cAAA,CAAe,GAAG,CAAA;AAClB,MAAA,OAAO,MAAA;AAAA,IACX;AAEA,IAAA,MAAA,CAAO,IAAA,CAAK,YAAA,CAAa,GAAG,CAAC,CAAA;AAC7B,IAAA,OAAO,MAAA;AAAA,EACX,CAAA,EAAG,EAAE,CAAA;AAET,EAAA,OAAO;AAAA,IACH,GAAA,CACI,GAAA,EACA,KAAA,EACA,UAAA,GAA8B,EAAC,EAC3B;AACJ,MAAA,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,EAAG;AAAA,QACnB,KAAA;AAAA,QACA,SAAA,EAAW,YAAA,CAAa,UAAA,CAAW,GAAG;AAAA,OACzC,CAAA;AAAA,IACL,CAAA;AAAA,IAEA,GAAA,EAAAA,IAAAA;AAAA,IAEA,IAAI,GAAA,EAAsB;AACtB,MAAA,OAAOA,IAAAA,CAAI,GAAG,CAAA,KAAM,MAAA;AAAA,IACxB,CAAA;AAAA,IAEA,OAAO,GAAA,EAAmB;AACtB,MAAA,cAAA,CAAe,UAAA,CAAW,GAAG,CAAC,CAAA;AAAA,IAClC,CAAA;AAAA,IAEA,KAAA,GAAc;AACV,MAAA,eAAA,EAAgB,CAAE,QAAQ,cAAc,CAAA;AAAA,IAC5C,CAAA;AAAA,IAEA,IAAA;AAAA,IAEA,IAAA,GAAe;AACX,MAAA,OAAO,MAAK,CAAE,MAAA;AAAA,IAClB;AAAA,GACJ;AACJ;AAEO,IAAM,QAAQ,WAAA;AC9LrB,IAAM,EAAE,GAAA,EAAK,GAAA,EAAI,GAAI,QAAA;AA8Dd,SAAS,YAAA,CACZ,OAAA,GAAyB,EAAC,EACZ;AACd,EAAA,OAAO;AAAA,IACH,OAAA,CAAQ,OAAO,MAAA,EAAQ;AACnB,MAAA,OAAO,OAAA;AAAA,QACH,KAAA;AAAA,QACA,cAAA,CAAe,MAAA,IAAA,IAAA,GAAA,MAAA,GAAU,OAAA,CAAQ,MAAA,EAAQ,SAAS,CAAA;AAAA,QAClD,OAAA,CAAQ;AAAA,OACZ;AAAA,IACJ,CAAA;AAAA,IAEA,OAAA,CAAQ,OAAO,MAAA,EAAQ;AACnB,MAAA,OAAO,OAAA;AAAA,QACH,KAAA;AAAA,QACA,cAAA,CAAe,MAAA,IAAA,IAAA,GAAA,MAAA,GAAU,OAAA,CAAQ,MAAA,EAAQ,SAAS,CAAA;AAAA,QAClD,OAAA,CAAQ;AAAA,OACZ;AAAA,IACJ,CAAA;AAAA,IAEA,UAAA,CAAW,OAAO,MAAA,EAAQ;AACtB,MAAA,OAAO,UAAA;AAAA,QACH,KAAA;AAAA,QACA,cAAA,CAAe,MAAA,IAAA,IAAA,GAAA,MAAA,GAAU,OAAA,CAAQ,MAAA,EAAQ,SAAS,CAAA;AAAA,QAClD,OAAA,CAAQ;AAAA,OACZ;AAAA,IACJ,CAAA;AAAA,IAEA,UAAA,CAAW,OAAO,MAAA,EAAQ;AACtB,MAAA,OAAO,UAAA;AAAA,QACH,KAAA;AAAA,QACA,cAAA,CAAe,MAAA,IAAA,IAAA,GAAA,MAAA,GAAU,OAAA,CAAQ,MAAA,EAAQ,SAAS,CAAA;AAAA,QAClD,OAAA,CAAQ;AAAA,OACZ;AAAA,IACJ,CAAA;AAAA,IAEA,UAAA,CAAW,OAAO,SAAA,EAAW;AACzB,MAAA,OAAO,UAAA;AAAA,QACH,KAAA;AAAA,QACA,cAAA;AAAA,UACI,gCAAa,OAAA,CAAQ,YAAA;AAAA,UACrB;AAAA;AACJ,OACJ;AAAA,IACJ,CAAA;AAAA,IAEA,UAAA,CAAW,OAAO,UAAA,EAAY;AAC1B,MAAA,OAAO,UAAA;AAAA,QACH,KAAA;AAAA,QACA,cAAA;AAAA,UACI,kCAAc,OAAA,CAAQ,aAAA;AAAA,UACtB;AAAA;AACJ,OACJ;AAAA,IACJ,CAAA;AAAA,IAEA,UAAA,CAAW,OAAO,SAAA,EAAW;AACzB,MAAA,OAAO,UAAA;AAAA,QACH,KAAA;AAAA,QACA,cAAA;AAAA,UACI,gCAAa,OAAA,CAAQ,YAAA;AAAA,UACrB;AAAA,SACJ;AAAA,QACA,OAAA,CAAQ;AAAA,OACZ;AAAA,IACJ,CAAA;AAAA,IAEA,UAAA,CAAW,OAAO,UAAA,EAAY;AAC1B,MAAA,OAAO,UAAA;AAAA,QACH,KAAA;AAAA,QACA,cAAA;AAAA,UACI,kCAAc,OAAA,CAAQ,aAAA;AAAA,UACtB;AAAA,SACJ;AAAA,QACA,OAAA,CAAQ;AAAA,OACZ;AAAA,IACJ,CAAA;AAAA,IAEA,UAAA,CAAW,OAAO,GAAA,EAAK;AACnB,MAAA,OAAO,UAAA;AAAA,QACH,KAAA;AAAA,QACA,cAAA,CAAe,GAAA,IAAA,IAAA,GAAA,GAAA,GAAO,OAAA,CAAQ,MAAA,EAAQ,SAAS,CAAA;AAAA,QAC/C,OAAA,CAAQ;AAAA,OACZ;AAAA,IACJ,CAAA;AAAA,IAEA,UAAA,CAAW,OAAO,GAAA,EAAK;AACnB,MAAA,OAAO,UAAA;AAAA,QACH,KAAA;AAAA,QACA,cAAA,CAAe,GAAA,IAAA,IAAA,GAAA,GAAA,GAAO,OAAA,CAAQ,MAAA,EAAQ,SAAS,CAAA;AAAA,QAC/C,OAAA,CAAQ;AAAA,OACZ;AAAA,IACJ;AAAA,GACJ;AACJ;AAEO,SAAS,OAAA,CACZ,KAAA,EACA,MAAA,EACA,OAAA,EACM;AACN,EAAA,OAAO,UAAA,CAAW,KAAA,EAAO,MAAA,EAAQ,OAAO,CAAA;AAC5C;AAEO,SAAS,OAAA,CACZ,KAAA,EACA,MAAA,EACA,OAAA,EACM;AACN,EAAA,OAAO,UAAA,CAAW,KAAA,EAAO,MAAA,EAAQ,OAAO,CAAA;AAC5C;AAEO,SAAS,UAAA,CACZ,KAAA,EACA,MAAA,EACA,OAAA,EACM;AACN,EAAA,OAAO,SAAS,GAAA,CAAI,OAAA;AAAA,IAChB,KAAA;AAAA,IACA,SAAA,CAAU,QAAQ,OAAO,CAAA;AAAA,IACzB,cAAc,OAAO;AAAA,IACvB,QAAA,EAAS;AACf;AAEO,SAAS,UAAA,CACZ,KAAA,EACA,MAAA,EACA,OAAA,EACM;AACN,EAAA,OAAO,SAAS,GAAA,CAAI,OAAA;AAAA,IAChB,KAAA;AAAA,IACA,SAAA,CAAU,QAAQ,OAAO,CAAA;AAAA,IACzB,cAAc,OAAO;AAAA,GACzB,CAAE,QAAA,CAAS,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA;AAChC;AAEO,SAAS,UAAA,CACZ,OACA,SAAA,EACM;AACN,EAAA,MAAM,MAAM,SAAA,CAAU;AAAA,IAClB;AAAA,GACH,CAAA;AACD,EAAA,MAAM,SAAA,GAAY,GAAA,CAAI,WAAA,CAAY,KAAK,CAAA;AAEvC,EAAA,IAAI,CAAC,SAAA,EAAW;AACZ,IAAA,MAAM,IAAI,MAAM,oBAAoB,CAAA;AAAA,EACxC;AAEA,EAAA,OAAO,SAAA;AACX;AAEO,SAAS,UAAA,CACZ,OACA,UAAA,EACM;AACN,EAAA,MAAM,MAAM,SAAA,CAAU;AAAA,IAClB;AAAA,GACH,CAAA;AACD,EAAA,MAAM,SAAA,GAAY,GAAA,CAAI,WAAA,CAAY,KAAK,CAAA;AAEvC,EAAA,IAAI,CAAC,SAAA,EAAW;AACZ,IAAA,MAAM,IAAI,MAAM,oBAAoB,CAAA;AAAA,EACxC;AAEA,EAAA,OAAO,SAAA;AACX;AAEO,SAAS,UAAA,CACZ,KAAA,EACA,SAAA,EACA,OAAA,GAAsB,EAAC,EACjB;AAjPV,EAAA,IAAA,EAAA;AAkPI,EAAA,OAAO,GAAA,CAAI,SAAA;AAAA,IACP,KAAA;AAAA,IACA,SAAA;AAAA,IAAA,CACA,EAAA,GAAA,OAAA,CAAQ,eAAR,IAAA,GAAA,EAAA,GAAsB;AAAA,GAC1B;AACJ;AAEO,SAAS,UAAA,CACZ,KAAA,EACA,UAAA,EACA,OAAA,GAAsB,EAAC,EACjB;AA7PV,EAAA,IAAA,EAAA;AA8PI,EAAA,OAAO,GAAA,CAAI,SAAA;AAAA,IACP,KAAA;AAAA,IACA,UAAA;AAAA,IAAA,CACA,EAAA,GAAA,OAAA,CAAQ,eAAR,IAAA,GAAA,EAAA,GAAsB;AAAA,GAC1B;AACJ;AAEO,SAAS,UAAA,CACZ,KAAA,EACA,GAAA,EACA,OAAA,GAAsB,EAAC,EACN;AACjB,EAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,KAAA,EAAO,GAAA,EAAK,OAAO,CAAA;AAC1C;AAEO,SAAS,UAAA,CACZ,KAAA,EACA,GAAA,EACA,OAAA,GAAsB,EAAC,EACjB;AACN,EAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,KAAA,EAAO,GAAA,EAAK,OAAO,CAAA;AAC1C;AAEO,SAAS,IAAI,KAAA,EAAuB;AACvC,EAAA,OAAO,QAAA,CAAS,GAAA,CAAI,KAAK,CAAA,CAAE,QAAA,EAAS;AACxC;AAEO,SAAS,OAAO,KAAA,EAAuB;AAC1C,EAAA,OAAO,QAAA,CAAS,MAAA,CAAO,KAAK,CAAA,CAAE,QAAA,EAAS;AAC3C;AAEO,SAAS,SAAS,KAAA,EAAuB;AAC5C,EAAA,OAAO,QAAA,CAAS,IAAI,MAAA,CAAO,SAAA;AAAA,IACvB,QAAA,CAAS,GAAA,CAAI,IAAA,CAAK,KAAA,CAAM,KAAK;AAAA,GACjC;AACJ;AAEO,SAAS,WAAW,KAAA,EAAuB;AAC9C,EAAA,OAAO,QAAA,CAAS,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA,CAAE,QAAA;AAAA,IACpC,SAAS,GAAA,CAAI;AAAA,GACjB;AACJ;AAEA,SAAS,SAAA,CACL,QACA,OAAA,EACO;AACP,EAAA,IAAA,CAAI,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,aAAY,YAAA,EAAc;AACnC,IAAA,OAAO,MAAA;AAAA,EACX;AAEA,EAAA,OAAO,QAAA,CAAS,GAAA,CAAI,IAAA,CAAK,KAAA,CAAM,MAAM,CAAA;AACzC;AAEA,SAAS,cACL,OAAA,EACuB;AAtT3B,EAAA,IAAA,EAAA,EAAA,EAAA;AAuTI,EAAA,IAAA,CAAI,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,aAAY,YAAA,EAAc;AACnC,IAAA,OAAO,EAAC;AAAA,EACZ;AAEA,EAAA,MAAM,UAAA,GAAsC;AAAA,IACxC,MAAM,QAAA,CAAS,IAAA,CAAA,CAAK,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,IAAA,KAAT,YAAiB,KAAK,CAAA;AAAA,IAC1C,SAAS,QAAA,CAAS,GAAA,CAAA,CAAI,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,OAAA,KAAT,YAAoB,OAAO;AAAA,GACrD;AAEA,EAAA,IAAI,mCAAS,EAAA,EAAI;AACb,IAAA,UAAA,CAAW,KAAK,QAAA,CAAS,GAAA,CAAI,IAAA,CAAK,KAAA,CAAM,QAAQ,EAAE,CAAA;AAAA,EACtD;AAEA,EAAA,OAAO,UAAA;AACX;AAaA,SAAS,UAAU,OAAA,EAA0C;AACzD,EAAA,MAAM,cAAc,cAAA,EAAe;AACnC,EAAA,MAAM,GAAA,GAAM,IAAI,WAAA,EAAY;AAE5B,EAAA,IAAI,QAAQ,SAAA,EAAW;AACnB,IAAA,GAAA,CAAI,YAAA,CAAa,QAAQ,SAAS,CAAA;AAAA,EACtC;AAEA,EAAA,IAAI,QAAQ,UAAA,EAAY;AACpB,IAAA,GAAA,CAAI,aAAA,CAAc,QAAQ,UAAU,CAAA;AAAA,EACxC;AAEA,EAAA,OAAO,GAAA;AACX;AAEA,SAAS,cAAA,GAAyC;AAC9C,EAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AAC/B,IAAA,MAAM,IAAI,MAAM,+CAA+C,CAAA;AAAA,EACnE;AAEA,EAAA,MAAM,YAAY,UAAA,EAAW;AAE7B,EAAA,IAAI,CAAC,SAAA,EAAW;AACZ,IAAA,MAAM,IAAI,MAAM,2DAA2D,CAAA;AAAA,EAC/E;AAEA,EAAA,MAAM,MAAA,GAAS,UAAU,aAAa,CAAA;AAItC,EAAA,OAAO,SAAA,IAAa,MAAA,GACd,MAAA,CAAO,OAAA,GACP,MAAA;AACV;AAEA,SAAS,UAAA,GAEO;AACZ,EAAA,OAAO,OAAO,SAAA,KAAY,UAAA,GACpB,SAAA,GACA,MAAA;AACV;AAEA,SAAS,cAAA,CACL,KACA,IAAA,EACM;AACN,EAAA,IAAI,CAAC,GAAA,EAAK;AACN,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,EAAG,IAAI,CAAA,YAAA,CAAc,CAAA;AAAA,EACzC;AAEA,EAAA,OAAO,GAAA;AACX;;;ACpYO,SAAS,OAAO,KAAA,EAAwB;AAC3C,EAAA,IAAI,iBAAiB,IAAA,EAAM;AACvB,IAAA,OAAO,IAAI,IAAA,CAAK,KAAA,CAAM,OAAA,EAAS,CAAA;AAAA,EACnC;AAEA,EAAA,OAAO,IAAI,KAAK,KAAK,CAAA;AACzB;AAEO,SAAS,YAAY,KAAA,EAA2B;AACnD,EAAA,OAAO,CAAC,MAAA,CAAO,KAAA,CAAM,OAAO,KAAK,CAAA,CAAE,SAAS,CAAA;AAChD;AAEO,SAAS,UAAA,CACZ,KAAA,EACA,OAAA,GAAU,qBAAA,EACJ;AACN,EAAA,MAAM,IAAA,GAAO,OAAO,KAAK,CAAA;AAEzB,EAAA,IAAI,OAAO,KAAA,CAAM,IAAA,CAAK,OAAA,EAAS,GAAG,OAAO,EAAA;AAEzC,EAAA,MAAM,MAAA,GAAiC;AAAA,IACnC,IAAA,EAAM,MAAA,CAAO,IAAA,CAAK,WAAA,EAAa,CAAA;AAAA,IAC/B,IAAI,MAAA,CAAO,IAAA,CAAK,aAAa,CAAA,CAAE,MAAM,EAAE,CAAA;AAAA,IACvC,EAAA,EAAI,GAAA,CAAI,IAAA,CAAK,QAAA,KAAa,CAAC,CAAA;AAAA,IAC3B,CAAA,EAAG,MAAA,CAAO,IAAA,CAAK,QAAA,KAAa,CAAC,CAAA;AAAA,IAC7B,EAAA,EAAI,GAAA,CAAI,IAAA,CAAK,OAAA,EAAS,CAAA;AAAA,IACtB,CAAA,EAAG,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,CAAA;AAAA,IACxB,EAAA,EAAI,GAAA,CAAI,IAAA,CAAK,QAAA,EAAU,CAAA;AAAA,IACvB,CAAA,EAAG,MAAA,CAAO,IAAA,CAAK,QAAA,EAAU,CAAA;AAAA,IACzB,EAAA,EAAI,GAAA,CAAI,IAAA,CAAK,UAAA,EAAY,CAAA;AAAA,IACzB,CAAA,EAAG,MAAA,CAAO,IAAA,CAAK,UAAA,EAAY,CAAA;AAAA,IAC3B,EAAA,EAAI,GAAA,CAAI,IAAA,CAAK,UAAA,EAAY,CAAA;AAAA,IACzB,CAAA,EAAG,MAAA,CAAO,IAAA,CAAK,UAAA,EAAY,CAAA;AAAA,IAC3B,GAAA,EAAK,GAAA,CAAI,IAAA,CAAK,eAAA,IAAmB,CAAC;AAAA,GACtC;AAEA,EAAA,OAAO,OAAA,CAAQ,OAAA;AAAA,IACX,uCAAA;AAAA,IACA,CAAC,KAAA,KAAU,MAAA,CAAO,KAAK;AAAA,GAC3B;AACJ;AAEO,SAAS,WAAW,KAAA,EAAwB;AAC/C,EAAA,MAAM,IAAA,GAAO,OAAO,KAAK,CAAA;AACzB,EAAA,IAAA,CAAK,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AACxB,EAAA,OAAO,IAAA;AACX;AAEO,SAAS,SAAS,KAAA,EAAwB;AAC7C,EAAA,MAAM,IAAA,GAAO,OAAO,KAAK,CAAA;AACzB,EAAA,IAAA,CAAK,QAAA,CAAS,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,GAAG,CAAA;AAC7B,EAAA,OAAO,IAAA;AACX;AAEO,SAAS,OAAA,CACZ,OACA,MAAA,EACI;AACJ,EAAA,MAAM,IAAA,GAAO,OAAO,KAAK,CAAA;AACzB,EAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,OAAA,EAAQ,GAAI,MAAM,CAAA;AACpC,EAAA,OAAO,IAAA;AACX;AAEO,SAAS,QAAA,CACZ,MACA,KAAA,EACM;AACN,EAAA,OAAO,IAAA,CAAK,KAAA;AAAA,IAAA,CACP,MAAA,CAAO,IAAI,CAAA,CAAE,OAAA,KAAY,MAAA,CAAO,KAAK,CAAA,CAAE,OAAA,EAAQ,IAC5C;AAAA,GACR;AACJ;AAEO,SAAS,SAAA,CACZ,MACA,KAAA,EACM;AACN,EAAA,OAAO,IAAA,CAAK,KAAA;AAAA,IAAA,CACP,MAAA,CAAO,IAAI,CAAA,CAAE,OAAA,KAAY,MAAA,CAAO,KAAK,CAAA,CAAE,OAAA,EAAQ,IAC5C;AAAA,GACR;AACJ;AAEO,SAAS,OAAA,CACZ,KAAA,EACA,GAAA,mBAAiB,IAAI,MAAK,EACpB;AACN,EAAA,MAAM,IAAA,GAAO,OAAO,KAAK,CAAA,CAAE,SAAQ,GAAI,MAAA,CAAO,GAAG,CAAA,CAAE,OAAA,EAAQ;AAC3D,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA;AAC7B,EAAA,MAAM,MAAA,GAAS,IAAA,IAAQ,CAAA,GAAI,QAAA,GAAM,QAAA;AAEjC,EAAA,IAAI,OAAA,GAAU,KAAO,OAAO,cAAA;AAE5B,EAAA,MAAM,KAAA,GAAQ;AAAA,IACV,CAAC,UAAK,OAAW,CAAA;AAAA,IACjB,CAAC,gBAAM,MAAU,CAAA;AAAA,IACjB,CAAC,UAAK,KAAQ,CAAA;AAAA,IACd,CAAC,gBAAM,IAAO,CAAA;AAAA,IACd,CAAC,gBAAM,GAAK;AAAA,GAChB;AAEA,EAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,CAAC,GAAG,IAAI,CAAA,KAAM,OAAA,IAAW,IAAI,CAAA;AAErD,EAAA,IAAI,CAAC,MAAM,OAAO,cAAA;AAElB,EAAA,OAAO,CAAA,EAAG,IAAA,CAAK,KAAA,CAAM,OAAA,GAAU,IAAA,CAAK,CAAC,CAAC,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,GAAG,MAAM,CAAA,CAAA;AAC9D;AAEA,SAAS,GAAA,CAAI,KAAA,EAAe,MAAA,GAAS,CAAA,EAAW;AAC5C,EAAA,OAAO,MAAA,CAAO,KAAK,CAAA,CAAE,QAAA,CAAS,QAAQ,GAAG,CAAA;AAC7C;;;ACpGO,SAAS,WAAA,CACZ,KAAA,EACA,SAAA,GAAY,CAAA,EACN;AACN,EAAA,MAAM,QAAQ,EAAA,IAAM,SAAA;AACpB,EAAA,MAAM,UACF,IAAA,CAAK,KAAA,CAAA,CAAO,QAAQ,MAAA,CAAO,OAAA,IAAW,KAAK,CAAA,GAAI,KAAA;AAEnD,EAAA,OAAO,OAAA,CAAQ,QAAQ,SAAS,CAAA;AACpC;AAEO,SAAS,eAAA,CACZ,KAAA,EACA,SAAA,GAAY,GAAA,EACN;AACN,EAAA,MAAM,CAAC,SAAS,OAAO,CAAA,GAAI,OAAO,KAAK,CAAA,CAAE,MAAM,GAAG,CAAA;AAClD,EAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,UAAA,CAAW,GAAG,IAAI,GAAA,GAAM,EAAA;AAC7C,EAAA,MAAM,UAAA,GAAa,IAAA,GAAO,OAAA,CAAQ,KAAA,CAAM,CAAC,CAAA,GAAI,OAAA;AAC7C,EAAA,MAAM,YAAY,UAAA,CAAW,OAAA;AAAA,IACzB,uBAAA;AAAA,IACA;AAAA,GACJ;AAEA,EAAA,OAAO,CAAA,EAAG,IAAI,CAAA,EAAG,SAAS,GAAG,OAAA,GAAU,CAAA,CAAA,EAAI,OAAO,CAAA,CAAA,GAAK,EAAE,CAAA,CAAA;AAC7D;AAEO,SAAS,WAAA,CACZ,KAAA,EACA,OAAA,GAA8B,EAAC,EACzB;AACN,EAAA,MAAM;AAAA,IACF,SAAA,GAAY,CAAA;AAAA,IACZ,MAAA,GAAS,MAAA;AAAA,IACT,QAAA,GAAW,GAAA;AAAA,IACX,OAAA,GAAU;AAAA,GACd,GAAI,OAAA;AACJ,EAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,KAAA,EAAO,SAAS,CAAA;AAC1C,EAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,KAAA,EAAO,QAAQ,CAAA;AAEjD,EAAA,OAAO,GAAG,MAAM,CAAA,EAAG,UAAU,OAAA,CAAQ,GAAA,EAAK,OAAO,CAAC,CAAA,CAAA;AACtD;AAEO,SAAS,aAAA,CACZ,KAAA,EACA,OAAA,GAAgC,EAAC,EAC3B;AACN,EAAA,MAAM;AAAA,IACF,SAAA,GAAY,CAAA;AAAA,IACZ,UAAA,GAAa;AAAA,GACjB,GAAI,OAAA;AAEJ,EAAA,OAAO,CAAA,EAAG,WAAA,CAAY,KAAA,GAAQ,UAAA,EAAY,SAAS,CAAC,CAAA,CAAA,CAAA;AACxD;AAEO,SAAS,cAAA,CACZ,KAAA,EACA,SAAA,GAAY,CAAA,EACN;AACN,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,KAAK,GAAG,OAAO,EAAA;AACpC,EAAA,IAAI,KAAA,IAAS,GAAG,OAAO,KAAA;AAEvB,EAAA,MAAM,QAAQ,CAAC,GAAA,EAAK,MAAM,IAAA,EAAM,IAAA,EAAM,MAAM,IAAI,CAAA;AAChD,EAAA,MAAM,QAAQ,IAAA,CAAK,GAAA;AAAA,IACf,IAAA,CAAK,MAAM,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,IAAI,CAAC,CAAA;AAAA,IAC3C,MAAM,MAAA,GAAS;AAAA,GACnB;AACA,EAAA,MAAM,KAAA,GAAQ,QAAQ,IAAA,IAAQ,KAAA;AAE9B,EAAA,OAAO,CAAA,EAAG,WAAA,CAAY,KAAA,EAAO,KAAA,KAAU,CAAA,GAAI,CAAA,GAAI,SAAS,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,KAAK,CAAC,CAAA,CAAA;AAC7E;AAEO,SAAS,KAAA,CACZ,KAAA,EACA,GAAA,EACA,GAAA,EACM;AACN,EAAA,OAAO,KAAK,GAAA,CAAI,IAAA,CAAK,IAAI,KAAA,EAAO,GAAG,GAAG,GAAG,CAAA;AAC7C;;;AC/EA,IAAM,kBAAA,GAAqB;AAAA,EACvB,KAAA,EAAO,IAAA;AAAA,EACP,SAAA,EAAW,UAAA;AAAA,EACX,WAAA,EAAa;AACjB,CAAA;AAEO,SAAS,UAAA,CACZ,IAAA,EACA,OAAA,GAAuB,EAAC,EACrB;AACH,EAAA,MAAM,MAAA,GAAS,eAAe,OAAO,CAAA;AACrC,EAAA,MAAM,OAAA,uBAAc,GAAA,EAAgB;AACpC,EAAA,MAAM,QAAa,EAAC;AAEpB,EAAA,IAAA,CAAK,OAAA,CAAQ,CAAC,IAAA,KAAS;AACnB,IAAA,OAAA,CAAQ,GAAA,CAAI,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,EAAG;AAAA,MAC5B,GAAG,IAAA;AAAA,MACH,CAAC,MAAA,CAAO,WAAW,GAAG;AAAC,KACrB,CAAA;AAAA,EACV,CAAC,CAAA;AAED,EAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,IAAA,KAAS;AACtB,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA;AACtC,IAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,GAAA,CAAI,QAAQ,CAAA;AAEnC,IAAA,IAAI,MAAA,EAAQ;AACR,MAAA,WAAA,CAAY,MAAA,EAAQ,MAAA,CAAO,WAAW,CAAA,CAAE,KAAK,IAAI,CAAA;AACjD,MAAA;AAAA,IACJ;AAEA,IAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,EACnB,CAAC,CAAA;AAED,EAAA,OAAO,KAAA;AACX;AAEO,SAAS,UAAA,CACZ,IAAA,EACA,OAAA,GAA4C,EAAC,EAC1C;AACH,EAAA,MAAM,MAAA,GAAS,eAAe,OAAO,CAAA;AACrC,EAAA,MAAM,SAAc,EAAC;AAErB,EAAA,QAAA,CAAS,IAAA,EAAM,CAAC,IAAA,KAAS;AACrB,IAAA,MAAM;AAAA,MACF,CAAC,MAAA,CAAO,WAAW,GAAG,SAAA;AAAA,MACtB,GAAG;AAAA,KACP,GAAI,IAAA;AAEJ,IAAA,MAAA,CAAO,KAAK,IAAS,CAAA;AAAA,EACzB,CAAA,EAAG,OAAO,WAAW,CAAA;AAErB,EAAA,OAAO,MAAA;AACX;AAEO,SAAS,YAAA,CACZ,IAAA,EACA,SAAA,EACA,OAAA,GAA4C,EAAC,EAChC;AACb,EAAA,MAAM,MAAA,GAAS,eAAe,OAAO,CAAA;AAErC,EAAA,KAAA,MAAW,QAAQ,IAAA,EAAM;AACrB,IAAA,IAAI,SAAA,CAAU,IAAI,CAAA,EAAG,OAAO,IAAA;AAE5B,IAAA,MAAM,KAAA,GAAQ,YAAA;AAAA,MACV,WAAA,CAAe,IAAA,EAAM,MAAA,CAAO,WAAW,CAAA;AAAA,MACvC,SAAA;AAAA,MACA;AAAA,KACJ;AAEA,IAAA,IAAI,OAAO,OAAO,KAAA;AAAA,EACtB;AAEA,EAAA,OAAO,MAAA;AACX;AAEO,SAAS,UAAA,CACZ,IAAA,EACA,SAAA,EACA,OAAA,GAA4C,EAAC,EAC1C;AACH,EAAA,MAAM,MAAA,GAAS,eAAe,OAAO,CAAA;AAErC,EAAA,OAAO,IAAA,CAAK,MAAA,CAAY,CAAC,MAAA,EAAQ,IAAA,KAAS;AACtC,IAAA,MAAM,QAAA,GAAW,UAAA;AAAA,MACb,WAAA,CAAe,IAAA,EAAM,MAAA,CAAO,WAAW,CAAA;AAAA,MACvC,SAAA;AAAA,MACA;AAAA,KACJ;AAEA,IAAA,IAAI,SAAA,CAAU,IAAI,CAAA,IAAK,QAAA,CAAS,SAAS,CAAA,EAAG;AACxC,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACR,GAAG,IAAA;AAAA,QACH,CAAC,MAAA,CAAO,WAAW,GAAG;AAAA,OACpB,CAAA;AAAA,IACV;AAEA,IAAA,OAAO,MAAA;AAAA,EACX,CAAA,EAAG,EAAE,CAAA;AACT;AAEO,SAAS,WAAA,CACZ,IAAA,EACA,SAAA,EACA,OAAA,GAA4C,EAAC,EAC1C;AACH,EAAA,MAAM,MAAA,GAAS,eAAe,OAAO,CAAA;AAErC,EAAA,KAAA,MAAW,QAAQ,IAAA,EAAM;AACrB,IAAA,IAAI,SAAA,CAAU,IAAI,CAAA,EAAG,OAAO,CAAC,IAAI,CAAA;AAEjC,IAAA,MAAM,SAAA,GAAY,WAAA;AAAA,MACd,WAAA,CAAe,IAAA,EAAM,MAAA,CAAO,WAAW,CAAA;AAAA,MACvC,SAAA;AAAA,MACA;AAAA,KACJ;AAEA,IAAA,IAAI,SAAA,CAAU,SAAS,CAAA,EAAG;AACtB,MAAA,OAAO,CAAC,IAAA,EAAM,GAAG,SAAS,CAAA;AAAA,IAC9B;AAAA,EACJ;AAEA,EAAA,OAAO,EAAC;AACZ;AAEO,SAAS,aAAA,CACZ,IAAA,EACA,OAAA,GAA4C,EAAC,EAC1C;AACH,EAAA,MAAM,MAAA,GAAS,eAAe,OAAO,CAAA;AACrC,EAAA,MAAM,SAAc,EAAC;AAErB,EAAA,QAAA,CAAS,IAAA,EAAM,CAAC,IAAA,KAAS;AACrB,IAAA,IAAI,YAAY,IAAA,EAAM,MAAA,CAAO,WAAW,CAAA,CAAE,WAAW,CAAA,EAAG;AACpD,MAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAAA,IACpB;AAAA,EACJ,CAAA,EAAG,OAAO,WAAW,CAAA;AAErB,EAAA,OAAO,MAAA;AACX;AAEA,SAAS,QAAA,CACL,IAAA,EACA,OAAA,EACA,WAAA,EACI;AACJ,EAAA,IAAA,CAAK,OAAA,CAAQ,CAAC,IAAA,KAAS;AACnB,IAAA,OAAA,CAAQ,IAAI,CAAA;AACZ,IAAA,QAAA;AAAA,MACI,WAAA,CAAe,MAAM,WAAW,CAAA;AAAA,MAChC,OAAA;AAAA,MACA;AAAA,KACJ;AAAA,EACJ,CAAC,CAAA;AACL;AAEA,SAAS,WAAA,CACL,MACA,WAAA,EACG;AACH,EAAA,MAAM,QAAA,GAAW,KAAK,WAAW,CAAA;AAEjC,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA,GAAI,WAAkB,EAAC;AACxD;AAEA,SAAS,eAAe,OAAA,EAA6C;AACjE,EAAA,OAAO;AAAA,IACH,GAAG,kBAAA;AAAA,IACH,GAAG;AAAA,GACP;AACJ;;;AC5IA,IAAM,gBAAA,GAAmB,eAAA;AAElB,SAAS,aAAA,CACZ,OAAA,GAA0B,EAAC,EACZ;AA7CnB,EAAA,IAAA,EAAA,EAAA,EAAA;AA8CI,EAAA,MAAM,SAAA,GAAA,CAAY,EAAA,GAAA,OAAA,CAAQ,SAAA,KAAR,IAAA,GAAA,EAAA,GAAqB,gBAAA;AACvC,EAAA,MAAM,OAAA,GAAA,CACF,EAAA,GAAA,OAAA,CAAQ,OAAA,KAAR,IAAA,GAAA,EAAA,GAAmB,kBAAkB,cAAc,CAAA;AAEvD,EAAA,MAAM,aAAa,CAAC,GAAA,KAChB,CAAA,EAAG,SAAS,GAAG,GAAG,CAAA,CAAA;AAEtB,EAAA,MAAM,YAAA,GAAe,CAAC,GAAA,KAClB,GAAA,CAAI,UAAA,CAAW,SAAS,CAAA,GAClB,GAAA,CAAI,KAAA,CAAM,SAAA,CAAU,MAAM,CAAA,GAC1B,GAAA;AAEV,EAAA,MAAM,YAAA,GAAe,CACjB,GAAA,GAAM,OAAA,CAAQ,GAAA,KACE;AAChB,IAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,EAAU,OAAO,IAAA;AAEpC,IAAA,OAAO,KAAK,GAAA,EAAI,GAAI,IAAA,CAAK,GAAA,CAAI,GAAG,GAAG,CAAA;AAAA,EACvC,CAAA;AAEA,EAAA,MAAM,MAAA,GAAS,CAAC,KAAA,KACZ,OAAA,CAAQ,UAAU,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAA;AAE/C,EAAA,MAAM,MAAA,GAAS,CAAC,KAAA,KACZ,OAAA,CAAQ,UAAU,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA,GAAI,KAAA;AAE/C,EAAA,MAAM,UAAA,GAAa,CACf,WAAA,KACqC;AACrC,IAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,OAAA,CAAQ,WAAW,CAAA;AAEvC,IAAA,IAAI,CAAC,KAAK,OAAO,MAAA;AAEjB,IAAA,IAAI;AACA,MAAA,OAAO,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,IACjC,CAAA,CAAA,MAAQ;AACJ,MAAA,OAAA,CAAQ,WAAW,WAAW,CAAA;AAC9B,MAAA,OAAO,MAAA;AAAA,IACX;AAAA,EACJ,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,WAAA,KAA8B;AAClD,IAAA,OAAA,CAAQ,WAAW,WAAW,CAAA;AAAA,EAClC,CAAA;AAEA,EAAA,MAAM,SAAA,GAAY,CACd,MAAA,KAEA,OAAO,MAAA,CAAO,cAAc,QAAA,IAC5B,MAAA,CAAO,SAAA,IAAa,IAAA,CAAK,GAAA,EAAI;AAEjC,EAAA,MAAM,kBAAkB,MAAgB;AACpC,IAAA,MAAMD,QAAiB,EAAC;AAExB,IAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,OAAA,CAAQ,MAAA,EAAQ,SAAS,CAAA,EAAG;AACpD,MAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAA;AAE7B,MAAA,IAAI,GAAA,IAAA,IAAA,GAAA,MAAA,GAAA,GAAA,CAAK,WAAW,SAAA,CAAA,EAAY;AAC5B,QAAAA,KAAAA,CAAK,KAAK,GAAG,CAAA;AAAA,MACjB;AAAA,IACJ;AAEA,IAAA,OAAOA,KAAAA;AAAA,EACX,CAAA;AAEA,EAAA,MAAMC,IAAAA,GAAM,CACR,GAAA,KACgB;AAChB,IAAA,MAAM,WAAA,GAAc,WAAW,GAAG,CAAA;AAClC,IAAA,MAAM,MAAA,GAAS,WAAW,WAAW,CAAA;AAErC,IAAA,IAAI,CAAC,QAAQ,OAAO,MAAA;AAEpB,IAAA,IAAI,SAAA,CAAU,MAAM,CAAA,EAAG;AACnB,MAAA,cAAA,CAAe,WAAW,CAAA;AAC1B,MAAA,OAAO,MAAA;AAAA,IACX;AAEA,IAAA,OAAO,MAAA,CAAO,KAAA;AAAA,EAClB,CAAA;AAEA,EAAA,MAAM,OAAO,MACT,eAAA,GAAkB,MAAA,CAAiB,CAAC,QAAQ,GAAA,KAAQ;AAChD,IAAA,MAAM,MAAA,GAAS,WAAW,GAAG,CAAA;AAE7B,IAAA,IAAI,CAAC,MAAA,IAAU,SAAA,CAAU,MAAM,CAAA,EAAG;AAC9B,MAAA,cAAA,CAAe,GAAG,CAAA;AAClB,MAAA,OAAO,MAAA;AAAA,IACX;AAEA,IAAA,MAAA,CAAO,IAAA,CAAK,YAAA,CAAa,GAAG,CAAC,CAAA;AAC7B,IAAA,OAAO,MAAA;AAAA,EACX,CAAA,EAAG,EAAE,CAAA;AAET,EAAA,OAAO;AAAA,IACH,GAAA,CACI,GAAA,EACA,KAAA,EACA,UAAA,GAAgC,EAAC,EAC7B;AACJ,MAAA,MAAM,MAAA,GAA2B;AAAA,QAC7B,KAAA;AAAA,QACA,SAAA,EAAW,YAAA,CAAa,UAAA,CAAW,GAAG;AAAA,OAC1C;AAEA,MAAA,OAAA,CAAQ,OAAA;AAAA,QACJ,WAAW,GAAG,CAAA;AAAA,QACd,MAAA,CAAO,IAAA,CAAK,SAAA,CAAU,MAAM,CAAC;AAAA,OACjC;AAAA,IACJ,CAAA;AAAA,IAEA,GAAA,EAAAA,IAAAA;AAAA,IAEA,OAAO,GAAA,EAAiC;AACpC,MAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAC,CAAA;AAE3C,MAAA,IAAI,CAAC,KAAK,OAAO,MAAA;AAEjB,MAAA,OAAO,OAAO,GAAG,CAAA;AAAA,IACrB,CAAA;AAAA,IAEA,IAAI,GAAA,EAAsB;AACtB,MAAA,OAAOA,IAAAA,CAAI,GAAG,CAAA,KAAM,MAAA;AAAA,IACxB,CAAA;AAAA,IAEA,OAAO,GAAA,EAAmB;AACtB,MAAA,cAAA,CAAe,UAAA,CAAW,GAAG,CAAC,CAAA;AAAA,IAClC,CAAA;AAAA,IAEA,KAAA,GAAc;AACV,MAAA,eAAA,EAAgB,CAAE,QAAQ,cAAc,CAAA;AAAA,IAC5C,CAAA;AAAA,IAEA,IAAA;AAAA,IAEA,IAAA,GAAe;AACX,MAAA,OAAO,MAAK,CAAE,MAAA;AAAA,IAClB;AAAA,GACJ;AACJ;AAEO,IAAM,aAAa,aAAA,CAAc;AAAA,EACpC,OAAA,EAAS,kBAAkB,cAAc;AAC7C,CAAC;AAEM,IAAM,eAAe,aAAA,CAAc;AAAA,EACtC,SAAA,EAAW,eAAA;AAAA,EACX,OAAA,EAAS,kBAAkB,gBAAgB;AAC/C,CAAC;AAED,SAAS,kBACL,IAAA,EACW;AACX,EAAA,IACI,OAAO,UAAA,KAAe,WAAA,IACtB,IAAA,IAAQ,UAAA,EACV;AACE,IAAA,MAAM,OAAA,GAAU,WACZ,IACJ,CAAA;AAEA,IAAA,IAAI,SAAS,OAAO,OAAA;AAAA,EACxB;AAEA,EAAA,OAAO,mBAAA,EAAoB;AAC/B;AAEA,SAAS,mBAAA,GAAmC;AACxC,EAAA,MAAM,KAAA,uBAAY,GAAA,EAAoB;AAEtC,EAAA,OAAO;AAAA,IACH,IAAI,MAAA,GAAS;AACT,MAAA,OAAO,KAAA,CAAM,IAAA;AAAA,IACjB,CAAA;AAAA,IAEA,IAAI,KAAA,EAAe;AA7N3B,MAAA,IAAA,EAAA;AA8NY,MAAA,OAAA,CAAO,EAAA,GAAA,KAAA,CAAM,KAAK,KAAA,CAAM,IAAA,EAAM,CAAA,CAAE,KAAK,MAA9B,IAAA,GAAA,EAAA,GAAmC,IAAA;AAAA,IAC9C,CAAA;AAAA,IAEA,QAAQ,GAAA,EAAa;AAjO7B,MAAA,IAAA,EAAA;AAkOY,MAAA,OAAA,CAAO,EAAA,GAAA,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA,KAAb,IAAA,GAAA,EAAA,GAAkB,IAAA;AAAA,IAC7B,CAAA;AAAA,IAEA,OAAA,CAAQ,KAAa,KAAA,EAAe;AAChC,MAAA,KAAA,CAAM,GAAA,CAAI,KAAK,KAAK,CAAA;AAAA,IACxB,CAAA;AAAA,IAEA,WAAW,GAAA,EAAa;AACpB,MAAA,KAAA,CAAM,OAAO,GAAG,CAAA;AAAA,IACpB,CAAA;AAAA,IAEA,KAAA,GAAQ;AACJ,MAAA,KAAA,CAAM,KAAA,EAAM;AAAA,IAChB;AAAA,GACJ;AACJ;;;ACrOA,eAAsB,QAAA,CAClB,MACA,OAAA,EACgB;AAfpB,EAAA,IAAA,EAAA,EAAA,EAAA;AAgBI,EAAA,IACI,OAAO,cAAc,WAAA,IACrB,SAAA,CAAU,aACV,OAAO,SAAA,CAAU,SAAA,CAAU,SAAA,KAAc,UAAA,EAC3C;AACE,IAAA,IAAI;AACA,MAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,IAAI,CAAA;AACxC,MAAA,CAAA,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAS,SAAA,KAAT,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,CAAA;AACA,MAAA,OAAO,IAAA;AAAA,IACX,SAAS,KAAA,EAAO;AACZ,MAAA,CAAA,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,YAAT,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAmB,KAAA,CAAA;AACnB,MAAA,OAAO,KAAA;AAAA,IACX;AAAA,EACJ;AAEA,EAAA,OAAO,gBAAA,CAAiB,MAAM,OAAO,CAAA;AACzC;AAEA,SAAS,gBAAA,CACL,MACA,OAAA,EACO;AArCX,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAsCI,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,aAAA,CAAc,UAAU,CAAA;AAClD,EAAA,QAAA,CAAS,KAAA,GAAQ,IAAA;AACjB,EAAA,QAAA,CAAS,MAAM,QAAA,GAAW,OAAA;AAC1B,EAAA,QAAA,CAAS,MAAM,GAAA,GAAM,SAAA;AACrB,EAAA,QAAA,CAAS,MAAM,IAAA,GAAO,SAAA;AACtB,EAAA,QAAA,CAAS,MAAM,OAAA,GAAU,GAAA;AACzB,EAAA,QAAA,CAAS,YAAA,CAAa,YAAY,EAAE,CAAA;AACpC,EAAA,QAAA,CAAS,YAAA,CAAa,eAAe,MAAM,CAAA;AAE3C,EAAA,QAAA,CAAS,IAAA,CAAK,YAAY,QAAQ,CAAA;AAClC,EAAA,QAAA,CAAS,KAAA,EAAM;AACf,EAAA,QAAA,CAAS,MAAA,EAAO;AAEhB,EAAA,IAAI,OAAA,GAAU,KAAA;AAEd,EAAA,IAAI;AACA,IAAA,OAAA,GAAU,QAAA,CAAS,YAAY,MAAM,CAAA;AACrC,IAAA,IAAI,OAAA,EAAS;AACT,MAAA,CAAA,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAS,SAAA,KAAT,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,CAAA;AAAA,IACJ,CAAA,MAAO;AACH,MAAA,CAAA,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAS,OAAA,KAAT,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAmB,IAAI,KAAA,CAAM,oCAAoC,CAAA,CAAA;AAAA,IACrE;AAAA,EACJ,SAAS,KAAA,EAAO;AACZ,IAAA,CAAA,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAS,YAAT,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAmB,KAAA,CAAA;AAAA,EACvB,CAAA,SAAE;AACE,IAAA,QAAA,CAAS,IAAA,CAAK,YAAY,QAAQ,CAAA;AAAA,EACtC;AAEA,EAAA,OAAO,OAAA;AACX;;;ACvDO,SAAS,YAAA,CACZ,IAAA,EACA,OAAA,GAA2B,EAAC,EACxB;AACJ,EAAA,MAAM,EAAE,QAAA,GAAW,UAAA,EAAY,QAAA,EAAS,GAAI,OAAA;AAE5C,EAAA,MAAMC,aAAAA,GAAe,QAAA,GACf,IAAI,IAAA,CAAK,CAAC,IAAI,CAAA,EAAG,EAAE,IAAA,EAAM,QAAA,EAAU,CAAA,GACnC,IAAA;AAEN,EAAA,MAAM,GAAA,GAAM,GAAA,CAAI,eAAA,CAAgBA,aAAY,CAAA;AAC5C,EAAA,eAAA,CAAgB,KAAK,QAAQ,CAAA;AAC7B,EAAA,GAAA,CAAI,gBAAgB,GAAG,CAAA;AAC3B;AAEO,SAAS,YAAA,CACZ,IAAA,EACA,QAAA,GAAW,cAAA,EACP;AACJ,EAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,CAAC,IAAI,CAAA,EAAG,EAAE,IAAA,EAAM,0BAAA,EAA4B,CAAA;AAClE,EAAA,YAAA,CAAa,IAAA,EAAM,EAAE,QAAA,EAAU,CAAA;AACnC;AAEO,SAAS,YAAA,CACZ,IAAA,EACA,QAAA,GAAW,eAAA,EACP;AACJ,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,IAAA,EAAM,MAAM,CAAC,CAAA;AACzC,EAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,CAAC,IAAI,CAAA,EAAG,EAAE,IAAA,EAAM,gCAAA,EAAkC,CAAA;AACxE,EAAA,YAAA,CAAa,IAAA,EAAM,EAAE,QAAA,EAAU,CAAA;AACnC;AAOA,eAAsB,cAAA,CAClB,QAAA,EACA,OAAA,GAAiC,EAAC,EACrB;AApDjB,EAAA,IAAA,EAAA;AAqDI,EAAA,MAAM,EAAE,QAAA,GAAW,UAAA,EAAY,UAAA,EAAY,SAAQ,GAAI,OAAA;AAEvD,EAAA,IAAI;AACA,IAAA,MAAM,aAAA,GAAgB,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,gBAAgB,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,aAAA,GAAgB,QAAA,CAAS,aAAA,EAAe,EAAE,CAAA,GAAI,CAAA;AAC5D,IAAA,MAAM,MAAA,GAAA,CAAS,EAAA,GAAA,QAAA,CAAS,IAAA,KAAT,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAe,SAAA,EAAA;AAE9B,IAAA,IAAI,CAAC,MAAA,EAAQ;AACT,MAAA,MAAM,IAAI,MAAM,+BAA+B,CAAA;AAAA,IACnD;AAEA,IAAA,MAAM,SAAuB,EAAC;AAC9B,IAAA,IAAI,MAAA,GAAS,CAAA;AAEb,IAAA,OAAO,IAAA,EAAM;AACT,MAAA,MAAM,EAAE,IAAA,EAAM,KAAA,EAAM,GAAI,MAAM,OAAO,IAAA,EAAK;AAC1C,MAAA,IAAI,IAAA,EAAM;AAEV,MAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AACjB,MAAA,MAAA,IAAU,KAAA,CAAM,MAAA;AAChB,MAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAa,MAAA,EAAQ,KAAA,CAAA;AAAA,IACzB;AAEA,IAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,MAAoB,CAAA;AAC1C,IAAA,YAAA,CAAa,IAAA,EAAM,EAAE,QAAA,EAAU,CAAA;AAAA,EACnC,SAAS,KAAA,EAAO;AACZ,IAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAU,KAAA,CAAA;AACV,IAAA,MAAM,KAAA;AAAA,EACV;AACJ;AAEA,SAAS,eAAA,CAAgB,KAAa,QAAA,EAAwB;AAC1D,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,aAAA,CAAc,GAAG,CAAA;AACvC,EAAA,IAAA,CAAK,IAAA,GAAO,GAAA;AACZ,EAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,EAAA,IAAA,CAAK,MAAM,OAAA,GAAU,MAAA;AACrB,EAAA,QAAA,CAAS,IAAA,CAAK,YAAY,IAAI,CAAA;AAC9B,EAAA,IAAA,CAAK,KAAA,EAAM;AACX,EAAA,QAAA,CAAS,IAAA,CAAK,YAAY,IAAI,CAAA;AAClC;;;AC5FO,SAAS,aAAa,IAAA,EAA6B;AACtD,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACpC,IAAA,MAAM,MAAA,GAAS,IAAI,UAAA,EAAW;AAC9B,IAAA,MAAA,CAAO,SAAS,MAAM;AAH9B,MAAA,IAAA,EAAA;AAIY,MAAA,MAAM,SAAS,MAAA,CAAO,MAAA;AACtB,MAAA,MAAM,UAAS,EAAA,GAAA,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,MAAnB,IAAA,GAAA,EAAA,GAAwB,MAAA;AACvC,MAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,IAClB,CAAA;AACA,IAAA,MAAA,CAAO,OAAA,GAAU,MAAA;AACjB,IAAA,MAAA,CAAO,cAAc,IAAI,CAAA;AAAA,EAC7B,CAAC,CAAA;AACL;AAEO,SAAS,YAAA,CACZ,MAAA,EACA,QAAA,GAAW,0BAAA,EACP;AACJ,EAAA,MAAM,cAAA,GAAiB,KAAK,MAAM,CAAA;AAClC,EAAA,MAAM,WAAA,GAAc,IAAI,KAAA,CAAM,cAAA,CAAe,MAAM,CAAA;AAEnD,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,cAAA,CAAe,QAAQ,CAAA,EAAA,EAAK;AAC5C,IAAA,WAAA,CAAY,CAAC,CAAA,GAAI,cAAA,CAAe,UAAA,CAAW,CAAC,CAAA;AAAA,EAChD;AAEA,EAAA,MAAM,SAAA,GAAY,IAAI,UAAA,CAAW,WAAW,CAAA;AAC5C,EAAA,OAAO,IAAI,KAAK,CAAC,SAAS,GAAG,EAAE,IAAA,EAAM,UAAU,CAAA;AACnD;AAEO,SAAS,iBAAiB,QAAA,EAA0B;AACvD,EAAA,MAAM,OAAA,GAAU,QAAA,CAAS,WAAA,CAAY,GAAG,CAAA;AACxC,EAAA,OAAO,OAAA,KAAY,KAAK,EAAA,GAAK,QAAA,CAAS,MAAM,OAAA,GAAU,CAAC,EAAE,WAAA,EAAY;AACzE;;;AC/BO,SAAS,UAAa,GAAA,EAAW;AACpC,EAAA,IAAI,GAAA,KAAQ,IAAA,IAAQ,OAAO,GAAA,KAAQ,QAAA,EAAU;AACzC,IAAA,OAAO,GAAA;AAAA,EACX;AAEA,EAAA,IAAI,eAAe,IAAA,EAAM;AACrB,IAAA,OAAO,IAAI,IAAA,CAAK,GAAA,CAAI,OAAA,EAAS,CAAA;AAAA,EACjC;AAEA,EAAA,IAAI,eAAe,KAAA,EAAO;AACtB,IAAA,OAAO,IAAI,GAAA,CAAI,CAAC,IAAA,KAAS,SAAA,CAAU,IAAI,CAAC,CAAA;AAAA,EAC5C;AAEA,EAAA,IAAI,eAAe,MAAA,EAAQ;AACvB,IAAA,MAAM,SAAS,EAAC;AAChB,IAAA,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA,CAAE,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAC9B,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,SAAA,CAAW,GAAA,CAAgC,GAAG,CAAC,CAAA;AAAA,IACjE,CAAC,CAAA;AACD,IAAA,OAAO,MAAA;AAAA,EACX;AAEA,EAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAC3C;AAEO,SAAS,SAAA,CACZ,WACG,OAAA,EACF;AACD,EAAA,IAAI,CAAC,OAAA,CAAQ,MAAA,EAAQ,OAAO,MAAA;AAE5B,EAAA,MAAM,MAAA,GAAS,QAAQ,KAAA,EAAM;AAC7B,EAAA,IAAI,CAAC,QAAQ,OAAO,MAAA;AAEpB,EAAA,KAAA,MAAW,OAAO,MAAA,EAAQ;AACtB,IAAA,IAAI,MAAA,CAAO,GAAG,CAAA,IAAK,OAAO,OAAO,GAAG,CAAA,KAAM,QAAA,IAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AAC/E,MAAA,IAAI,CAAC,OAAO,GAAG,CAAA,IAAK,OAAO,MAAA,CAAO,GAAG,MAAM,QAAA,EAAU;AACjD,QAAC,MAAA,CAAmC,GAAG,CAAA,GAAI,EAAC;AAAA,MAChD;AACA,MAAA,SAAA;AAAA,QACK,OAAmC,GAAG,CAAA;AAAA,QACvC,OAAO,GAAG;AAAA,OACd;AAAA,IACJ,CAAA,MAAO;AACH,MAAC,MAAA,CAAmC,GAAG,CAAA,GAAI,MAAA,CAAO,GAAG,CAAA;AAAA,IACzD;AAAA,EACJ;AAEA,EAAA,OAAO,SAAA,CAAU,MAAA,EAAQ,GAAG,OAAO,CAAA;AACvC;AAEO,SAAS,iBAAA,CACZ,GAAA,EACA,OAAA,GAMI,EAAC,EACK;AACV,EAAA,MAAM;AAAA,IACF,UAAA,GAAa,IAAA;AAAA,IACb,eAAA,GAAkB,IAAA;AAAA,IAClB,iBAAA,GAAoB,KAAA;AAAA,IACpB,gBAAA,GAAmB,KAAA;AAAA,IACnB,iBAAA,GAAoB;AAAA,GACxB,GAAI,OAAA;AAEJ,EAAA,MAAM,SAAS,EAAC;AAEhB,EAAA,KAAA,MAAW,OAAO,GAAA,EAAK;AACnB,IAAA,MAAM,KAAA,GAAQ,IAAI,GAAG,CAAA;AAErB,IAAA,IAAI,eAAA,IAAmB,UAAU,MAAA,EAAW;AAC5C,IAAA,IAAI,UAAA,IAAc,UAAU,IAAA,EAAM;AAClC,IAAA,IAAI,iBAAA,IAAqB,UAAU,EAAA,EAAI;AACvC,IAAA,IAAI,oBAAoB,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,KAAA,CAAM,WAAW,CAAA,EAAG;AACpE,IAAA,IAAI,qBAAqB,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,QAAQ,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,KAAK,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,WAAW,CAAA,EAAG;AAElI,IAAA,MAAA,CAAO,GAAG,CAAA,GAAI,KAAA;AAAA,EAClB;AAEA,EAAA,OAAO,MAAA;AACX;AAEO,SAAS,IAAA,CACZ,KACA,IAAA,EACU;AACV,EAAA,MAAM,SAAS,EAAC;AAEhB,EAAA,IAAA,CAAK,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAClB,IAAA,IAAI,OAAO,GAAA,EAAK;AACZ,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,GAAA,CAAI,GAAG,CAAA;AAAA,IACzB;AAAA,EACJ,CAAC,CAAA;AAED,EAAA,OAAO,MAAA;AACX;AAEO,SAAS,IAAA,CACZ,KACA,IAAA,EACU;AACV,EAAA,MAAM,MAAA,GAAS,EAAE,GAAG,GAAA,EAAI;AAExB,EAAA,IAAA,CAAK,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAClB,IAAA,OAAQ,OAAmC,GAAa,CAAA;AAAA,EAC5D,CAAC,CAAA;AAED,EAAA,OAAO,MAAA;AACX;AAEO,SAAS,QACZ,GAAA,EACA,MAAA,GAAS,EAAA,EACT,MAAA,GAAkC,EAAC,EACZ;AACvB,EAAA,KAAA,MAAW,OAAO,GAAA,EAAK;AACnB,IAAA,MAAM,SAAS,MAAA,GAAS,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,GAAK,GAAA;AAC7C,IAAA,MAAM,KAAA,GAAQ,IAAI,GAAG,CAAA;AAErB,IAAA,IAAI,KAAA,IAAS,OAAO,KAAA,KAAU,QAAA,IAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,EAAE,KAAA,YAAiB,IAAA,CAAA,EAAO;AACzF,MAAA,OAAA,CAAQ,KAAA,EAAkC,QAAQ,MAAM,CAAA;AAAA,IAC5D,CAAA,MAAO;AACH,MAAA,MAAA,CAAO,MAAM,CAAA,GAAI,KAAA;AAAA,IACrB;AAAA,EACJ;AAEA,EAAA,OAAO,MAAA;AACX;AAEO,SAAS,UACZ,GAAA,EACuB;AACvB,EAAA,MAAM,SAAS,EAAC;AAEhB,EAAA,KAAA,MAAW,OAAO,GAAA,EAAK;AACnB,IAAA,MAAM,IAAA,GAAO,GAAA,CAAI,KAAA,CAAM,GAAG,CAAA;AAC1B,IAAA,IAAI,OAAA,GAAU,MAAA;AAEd,IAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,MAAA,GAAS,GAAG,CAAA,EAAA,EAAK;AACtC,MAAA,MAAM,CAAA,GAAI,KAAK,CAAC,CAAA;AAChB,MAAA,IAAI,EAAE,KAAK,OAAA,CAAA,EAAU;AACjB,QAAA,OAAA,CAAQ,CAAC,IAAI,EAAC;AAAA,MAClB;AACA,MAAA,OAAA,GAAU,QAAQ,CAAC,CAAA;AAAA,IACvB;AAEA,IAAA,OAAA,CAAQ,KAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAC,CAAA,GAAI,IAAI,GAAG,CAAA;AAAA,EAC5C;AAEA,EAAA,OAAO,MAAA;AACX;;;ACzJO,SAAS,YAAA,CACZ,GAAA,EACA,KAAA,GAAQ,QAAA,EACL;AACH,EAAA,MAAM,SAAc,EAAC;AAErB,EAAA,KAAA,MAAW,QAAQ,GAAA,EAAK;AACpB,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,IAAK,QAAQ,CAAA,EAAG;AAClC,MAAA,MAAA,CAAO,KAAK,GAAG,YAAA,CAAgB,IAAA,EAAM,KAAA,GAAQ,CAAC,CAAC,CAAA;AAAA,IACnD,CAAA,MAAO;AACH,MAAA,MAAA,CAAO,KAAK,IAAS,CAAA;AAAA,IACzB;AAAA,EACJ;AAEA,EAAA,OAAO,MAAA;AACX;AAEO,SAAS,KAAA,CAAS,KAAU,IAAA,EAAqB;AACpD,EAAA,IAAI,IAAA,IAAQ,CAAA,EAAG,OAAO,EAAC;AAEvB,EAAA,MAAM,SAAgB,EAAC;AACvB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,MAAA,EAAQ,KAAK,IAAA,EAAM;AACvC,IAAA,MAAA,CAAO,KAAK,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,CAAA,GAAI,IAAI,CAAC,CAAA;AAAA,EACtC;AAEA,EAAA,OAAO,MAAA;AACX;AAEO,SAAS,OAAU,GAAA,EAAe;AACrC,EAAA,OAAO,CAAC,GAAG,IAAI,GAAA,CAAI,GAAG,CAAC,CAAA;AAC3B;AAEO,SAAS,QAAA,CACZ,KACA,GAAA,EACG;AACH,EAAA,MAAM,IAAA,uBAAW,GAAA,EAAa;AAC9B,EAAA,OAAO,GAAA,CAAI,MAAA,CAAO,CAAC,IAAA,KAAS;AACxB,IAAA,MAAM,KAAA,GAAQ,OAAO,GAAA,KAAQ,UAAA,GAAa,IAAI,IAAI,CAAA,GAAI,KAAK,GAAG,CAAA;AAC9D,IAAA,IAAI,IAAA,CAAK,GAAA,CAAI,KAAK,CAAA,EAAG,OAAO,KAAA;AAC5B,IAAA,IAAA,CAAK,IAAI,KAAK,CAAA;AACd,IAAA,OAAO,IAAA;AAAA,EACX,CAAC,CAAA;AACL;AAEO,SAAS,OAAA,CACZ,KACA,GAAA,EACmB;AACnB,EAAA,MAAM,SAA8B,EAAC;AAErC,EAAA,GAAA,CAAI,OAAA,CAAQ,CAAC,IAAA,KAAS;AAClB,IAAA,MAAM,KAAA,GAAQ,OAAO,GAAA,KAAQ,UAAA,GAAa,IAAI,IAAI,CAAA,GAAI,KAAK,GAAG,CAAA;AAC9D,IAAA,MAAM,QAAA,GAAW,OAAO,KAAK,CAAA;AAC7B,IAAA,IAAI,CAAC,MAAA,CAAO,QAAQ,CAAA,EAAG;AACnB,MAAA,MAAA,CAAO,QAAQ,IAAI,EAAC;AAAA,IACxB;AACA,IAAA,MAAA,CAAO,QAAQ,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAAA,EAC9B,CAAC,CAAA;AAED,EAAA,OAAO,MAAA;AACX;AAEO,SAAS,YAAA,CAAgB,MAAW,IAAA,EAAgB;AACvD,EAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,EAAA,OAAO,CAAC,GAAG,IAAI,GAAA,CAAI,IAAI,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,IAAA,KAAS,IAAA,CAAK,GAAA,CAAI,IAAI,CAAC,CAAA;AAC7D;AAEO,SAAS,UAAA,CAAc,MAAW,IAAA,EAAgB;AACrD,EAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,EAAA,OAAO,CAAC,GAAG,IAAI,GAAA,CAAI,IAAI,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,IAAA,KAAS,CAAC,IAAA,CAAK,GAAA,CAAI,IAAI,CAAC,CAAA;AAC9D;AAEO,SAAS,QAAW,GAAA,EAAe;AACtC,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,GAAG,CAAA;AACtB,EAAA,KAAA,IAAS,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,CAAA,GAAI,GAAG,CAAA,EAAA,EAAK;AACxC,IAAA,MAAM,IAAI,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,IAAK,IAAI,CAAA,CAAE,CAAA;AACvC,IAAA,CAAC,MAAA,CAAO,CAAC,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC,CAAA,GAAI,CAAC,MAAA,CAAO,CAAC,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,EACvD;AACA,EAAA,OAAO,MAAA;AACX;AAEO,SAAS,MAAA,CACZ,GAAA,EACA,GAAA,EACA,KAAA,GAAwB,KAAA,EACrB;AACH,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,GAAG,CAAA;AACtB,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM;AACzB,IAAA,MAAM,MAAA,GAAS,OAAO,GAAA,KAAQ,UAAA,GAAa,IAAI,CAAC,CAAA,GAAI,EAAE,GAAG,CAAA;AACzD,IAAA,MAAM,MAAA,GAAS,OAAO,GAAA,KAAQ,UAAA,GAAa,IAAI,CAAC,CAAA,GAAI,EAAE,GAAG,CAAA;AAEzD,IAAA,IAAI,MAAA,KAAW,QAAQ,OAAO,CAAA;AAC9B,IAAA,IAAI,MAAA,IAAU,IAAA,EAAM,OAAO,KAAA,KAAU,QAAQ,EAAA,GAAK,CAAA;AAClD,IAAA,IAAI,MAAA,IAAU,IAAA,EAAM,OAAO,KAAA,KAAU,QAAQ,CAAA,GAAI,EAAA;AAEjD,IAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,OAAO,WAAW,QAAA,EAAU;AAC1D,MAAA,MAAM,UAAA,GAAa,MAAA,CAAO,aAAA,CAAc,MAAM,CAAA;AAC9C,MAAA,OAAO,KAAA,KAAU,KAAA,GAAQ,UAAA,GAAa,CAAC,UAAA;AAAA,IAC3C;AAEA,IAAA,MAAM,IAAA,GAAO,OAAO,MAAA,KAAW,QAAA,GAAW,MAAA,GAAS,CAAA;AACnD,IAAA,MAAM,IAAA,GAAO,OAAO,MAAA,KAAW,QAAA,GAAW,MAAA,GAAS,CAAA;AAEnD,IAAA,IAAI,IAAA,GAAO,IAAA,EAAM,OAAO,KAAA,KAAU,QAAQ,EAAA,GAAK,CAAA;AAC/C,IAAA,IAAI,IAAA,GAAO,IAAA,EAAM,OAAO,KAAA,KAAU,QAAQ,CAAA,GAAI,EAAA;AAC9C,IAAA,OAAO,CAAA;AAAA,EACX,CAAC,CAAA;AACL;AAEO,SAAS,IAAI,GAAA,EAAuB;AACvC,EAAA,OAAO,IAAI,MAAA,CAAO,CAAC,KAAK,GAAA,KAAQ,GAAA,GAAM,KAAK,CAAC,CAAA;AAChD;AAEO,SAAS,QAAQ,GAAA,EAAuB;AAC3C,EAAA,IAAI,GAAA,CAAI,MAAA,KAAW,CAAA,EAAG,OAAO,CAAA;AAC7B,EAAA,OAAO,GAAA,CAAI,GAAG,CAAA,GAAI,GAAA,CAAI,MAAA;AAC1B;AAEO,SAAS,KAAA,CACZ,KACA,GAAA,EACa;AACb,EAAA,IAAI,GAAA,CAAI,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAE7B,EAAA,OAAO,GAAA,CAAI,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS;AAC7B,IAAA,MAAM,KAAA,GAAQ,OAAO,GAAA,KAAQ,UAAA,GAAa,IAAI,IAAI,CAAA,GAAK,KAAK,GAAG,CAAA;AAC/D,IAAA,MAAM,QAAA,GAAW,OAAO,GAAA,KAAQ,UAAA,GAAa,IAAI,GAAG,CAAA,GAAK,IAAI,GAAG,CAAA;AAChE,IAAA,OAAO,KAAA,GAAQ,WAAW,IAAA,GAAO,GAAA;AAAA,EACrC,CAAC,CAAA;AACL;AAEO,SAAS,KAAA,CACZ,KACA,GAAA,EACa;AACb,EAAA,IAAI,GAAA,CAAI,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAE7B,EAAA,OAAO,GAAA,CAAI,MAAA,CAAO,CAAC,GAAA,EAAK,IAAA,KAAS;AAC7B,IAAA,MAAM,KAAA,GAAQ,OAAO,GAAA,KAAQ,UAAA,GAAa,IAAI,IAAI,CAAA,GAAK,KAAK,GAAG,CAAA;AAC/D,IAAA,MAAM,QAAA,GAAW,OAAO,GAAA,KAAQ,UAAA,GAAa,IAAI,GAAG,CAAA,GAAK,IAAI,GAAG,CAAA;AAChE,IAAA,OAAO,KAAA,GAAQ,WAAW,IAAA,GAAO,GAAA;AAAA,EACrC,CAAC,CAAA;AACL;AAEO,SAAS,QAAA,CACZ,GAAA,EACA,SAAA,EACA,OAAA,EACG;AACH,EAAA,IACI,SAAA,GAAY,CAAA,IACZ,SAAA,IAAa,GAAA,CAAI,MAAA,IACjB,OAAA,GAAU,CAAA,IACV,OAAA,IAAW,GAAA,CAAI,MAAA,IACf,SAAA,KAAc,OAAA,EAChB;AACE,IAAA,OAAO,CAAC,GAAG,GAAG,CAAA;AAAA,EAClB;AAEA,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,GAAG,CAAA;AACtB,EAAA,MAAM,CAAC,OAAO,CAAA,GAAI,MAAA,CAAO,MAAA,CAAO,WAAW,CAAC,CAAA;AAC5C,EAAA,MAAA,CAAO,MAAA,CAAO,OAAA,EAAS,CAAA,EAAG,OAAO,CAAA;AACjC,EAAA,OAAO,MAAA;AACX;AAEO,SAAS,SAAA,CACZ,GAAA,EACA,MAAA,EACA,MAAA,EACG;AACH,EAAA,IACI,MAAA,GAAS,CAAA,IACT,MAAA,IAAU,GAAA,CAAI,MAAA,IACd,MAAA,GAAS,CAAA,IACT,MAAA,IAAU,GAAA,CAAI,MAAA,IACd,MAAA,KAAW,MAAA,EACb;AACE,IAAA,OAAO,CAAC,GAAG,GAAG,CAAA;AAAA,EAClB;AAEA,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,GAAG,CAAA;AACjB,EAAA,CAAC,MAAA,CAAO,MAAM,CAAA,EAAG,MAAA,CAAO,MAAM,CAAC,CAAA,GAAI,CAAC,MAAA,CAAO,MAAM,CAAA,EAAG,MAAA,CAAO,MAAM,CAAC,CAAA;AACvE,EAAA,OAAO,MAAA;AACX;;;ACxLO,SAAS,QAAQ,GAAA,EAAuB;AAC3C,EAAA,IAAI,GAAA,KAAQ,IAAA,IAAQ,GAAA,KAAQ,MAAA,EAAW,OAAO,IAAA;AAC9C,EAAA,IAAI,OAAO,GAAA,KAAQ,QAAA,EAAU,OAAO,KAAA;AACpC,EAAA,OAAO,GAAA,CAAI,IAAA,EAAK,CAAE,MAAA,KAAW,CAAA;AACjC;AAEO,SAAS,WAAW,GAAA,EAAuB;AAC9C,EAAA,OAAO,CAAC,QAAQ,GAAG,CAAA;AACvB;AAEO,SAAS,WAAW,GAAA,EAAqB;AAC5C,EAAA,IAAI,CAAC,KAAK,OAAO,GAAA;AACjB,EAAA,OAAO,GAAA,CAAI,OAAO,CAAC,CAAA,CAAE,aAAY,GAAI,GAAA,CAAI,MAAM,CAAC,CAAA;AACpD;AAEO,SAAS,aAAa,GAAA,EAAqB;AAC9C,EAAA,IAAI,CAAC,KAAK,OAAO,GAAA;AACjB,EAAA,OAAO,GAAA,CAAI,OAAO,CAAC,CAAA,CAAE,aAAY,GAAI,GAAA,CAAI,MAAM,CAAC,CAAA;AACpD;AAEO,SAAS,UAAU,GAAA,EAAqB;AAC3C,EAAA,OAAO,IACF,OAAA,CAAQ,cAAA,EAAgB,CAAC,CAAA,EAAG,IAAA,KAAU,OAAO,IAAA,CAAK,WAAA,EAAY,GAAI,EAAG,EACrE,OAAA,CAAQ,QAAA,EAAU,CAAC,IAAA,KAAS,IAAA,CAAK,aAAa,CAAA;AACvD;AAEO,SAAS,WAAW,GAAA,EAAqB;AAC5C,EAAA,MAAM,KAAA,GAAQ,UAAU,GAAG,CAAA;AAC3B,EAAA,OAAO,WAAW,KAAK,CAAA;AAC3B;AAEO,SAAS,UAAU,GAAA,EAAqB;AAC3C,EAAA,OAAO,GAAA,CACF,QAAQ,iBAAA,EAAmB,OAAO,EAClC,OAAA,CAAQ,SAAA,EAAW,GAAG,CAAA,CACtB,WAAA,EAAY;AACrB;AAEO,SAAS,UAAU,GAAA,EAAqB;AAC3C,EAAA,OAAO,GAAA,CACF,QAAQ,iBAAA,EAAmB,OAAO,EAClC,OAAA,CAAQ,UAAA,EAAY,GAAG,CAAA,CACvB,WAAA,EAAY;AACrB;AAEO,SAAS,QAAA,CACZ,GAAA,EACA,SAAA,EACA,MAAA,GAAS,KAAA,EACH;AACN,EAAA,IAAI,GAAA,CAAI,MAAA,IAAU,SAAA,EAAW,OAAO,GAAA;AACpC,EAAA,OAAO,IAAI,KAAA,CAAM,CAAA,EAAG,SAAA,GAAY,MAAA,CAAO,MAAM,CAAA,GAAI,MAAA;AACrD;AAEO,SAAS,YAAA,GAAuB;AACnC,EAAA,OAAO,sCAAA,CAAuC,OAAA,CAAQ,OAAA,EAAS,CAAC,IAAA,KAAS;AACrE,IAAA,MAAM,MAAA,GAAU,IAAA,CAAK,MAAA,EAAO,GAAI,EAAA,GAAM,CAAA;AACtC,IAAA,MAAM,KAAA,GAAQ,IAAA,KAAS,GAAA,GAAM,MAAA,GAAU,SAAS,CAAA,GAAO,CAAA;AACvD,IAAA,OAAO,KAAA,CAAM,SAAS,EAAE,CAAA;AAAA,EAC5B,CAAC,CAAA;AACL;AAEO,SAAS,WAAW,GAAA,EAAqB;AAC5C,EAAA,MAAM,WAAA,GAAsC;AAAA,IACxC,GAAA,EAAK,OAAA;AAAA,IACL,GAAA,EAAK,MAAA;AAAA,IACL,GAAA,EAAK,MAAA;AAAA,IACL,GAAA,EAAK,QAAA;AAAA,IACL,GAAA,EAAK;AAAA,GACT;AACA,EAAA,OAAO,IAAI,OAAA,CAAQ,UAAA,EAAY,CAAC,IAAA,KAAS,WAAA,CAAY,IAAI,CAAC,CAAA;AAC9D;AAEO,SAAS,aAAa,GAAA,EAAqB;AAC9C,EAAA,MAAM,aAAA,GAAwC;AAAA,IAC1C,OAAA,EAAS,GAAA;AAAA,IACT,MAAA,EAAQ,GAAA;AAAA,IACR,MAAA,EAAQ,GAAA;AAAA,IACR,QAAA,EAAU,GAAA;AAAA,IACV,OAAA,EAAS;AAAA,GACb;AACA,EAAA,OAAO,IAAI,OAAA,CAAQ,2BAAA,EAA6B,CAAC,MAAA,KAAW,aAAA,CAAc,MAAM,CAAC,CAAA;AACrF;AAEO,SAAS,iBAAiB,GAAA,EAAqC;AAClE,EAAA,MAAM,WAAA,GAAc,GAAA,CAAI,QAAA,CAAS,GAAG,CAAA,GAAI,IAAI,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,GAAI,GAAA;AAC5D,EAAA,MAAM,MAAA,GAAS,IAAI,eAAA,CAAgB,WAAW,CAAA;AAC9C,EAAA,MAAM,SAAiC,EAAC;AAExC,EAAA,MAAA,CAAO,OAAA,CAAQ,CAAC,KAAA,EAAO,GAAA,KAAQ;AAC3B,IAAA,MAAA,CAAO,GAAG,CAAA,GAAI,KAAA;AAAA,EAClB,CAAC,CAAA;AAED,EAAA,OAAO,MAAA;AACX;AAEO,SAAS,qBACZ,MAAA,EACM;AACN,EAAA,MAAM,YAAA,GAAe,IAAI,eAAA,EAAgB;AAEzC,EAAA,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAC7C,IAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AACvC,MAAA,YAAA,CAAa,MAAA,CAAO,GAAA,EAAK,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,IAC1C;AAAA,EACJ,CAAC,CAAA;AAED,EAAA,MAAM,WAAA,GAAc,aAAa,QAAA,EAAS;AAC1C,EAAA,OAAO,WAAA,GAAc,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,GAAK,EAAA;AAC7C;AAEO,SAAS,QAAA,CACZ,SACA,MAAA,EACM;AACN,EAAA,MAAM,WAAA,GAAc,qBAAqB,MAAM,CAAA;AAC/C,EAAkB,QAAQ,QAAA,CAAS,GAAG,IAAI,GAAA,GAAM,WAAA,CAAY,OAAA,CAAQ,GAAA,EAAK,GAAG;AAC5E,EAAA,OAAO,OAAA,IAAW,QAAQ,QAAA,CAAS,GAAG,IAAI,WAAA,CAAY,OAAA,CAAQ,GAAA,EAAK,GAAG,CAAA,GAAI,WAAA,CAAA;AAC9E;;;ACvGO,SAAS,QAAA,CACZ,IAAA,EACA,OAAA,GAA2B,EAAC,EACZ;AAChB,EAAA,MAAM;AAAA,IACF,IAAA,GAAO,CAAA;AAAA,IACP,OAAA,GAAU,KAAA;AAAA,IACV,QAAA,GAAW;AAAA,GACf,GAAI,OAAA;AAEJ,EAAA,IAAI,KAAA,GAA8C,IAAA;AAClD,EAAA,IAAI,QAAA,GAAiC,IAAA;AACrC,EAAA,IAAI,QAAA,GAAoB,IAAA;AACxB,EAAA,IAAI,MAAA;AAEJ,EAAA,SAAS,UAAA,GAAwC;AAC7C,IAAA,MAAM,IAAA,GAAO,QAAA;AACb,IAAA,MAAM,OAAA,GAAU,QAAA;AAEhB,IAAA,QAAA,GAAW,IAAA;AACX,IAAA,QAAA,GAAW,IAAA;AAEX,IAAA,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA;AACjC,IAAA,OAAO,MAAA;AAAA,EACX;AAEA,EAAA,SAAS,aAA4B,IAAA,EAAgD;AACjF,IAAA,MAAM,iBAAA,GAAoB,WAAW,KAAA,KAAU,IAAA;AAE/C,IAAA,QAAA,GAAW,IAAA;AACX,IAAA,QAAA,GAAW,IAAA;AAEX,IAAA,IAAI,UAAU,IAAA,EAAM;AAChB,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACtB;AAEA,IAAA,IAAI,iBAAA,EAAmB;AACnB,MAAA,UAAA,EAAW;AAAA,IACf;AAEA,IAAA,KAAA,GAAQ,WAAW,MAAM;AACrB,MAAA,KAAA,GAAQ,IAAA;AACR,MAAA,IAAI,YAAY,QAAA,EAAU;AACtB,QAAA,UAAA,EAAW;AACX,QAAA;AAAA,MACJ;AACA,MAAA,QAAA,GAAW,IAAA;AACX,MAAA,QAAA,GAAW,IAAA;AAAA,IACf,GAAG,IAAI,CAAA;AAEP,IAAA,OAAO,MAAA;AAAA,EACX;AAEA,EAAA,SAAA,CAAU,SAAS,WAAkB;AACjC,IAAA,IAAI,UAAU,IAAA,EAAM;AAChB,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACtB;AACA,IAAA,QAAA,GAAW,IAAA;AACX,IAAA,QAAA,GAAW,IAAA;AACX,IAAA,KAAA,GAAQ,IAAA;AAAA,EACZ,CAAA;AAEA,EAAA,SAAA,CAAU,QAAQ,WAAuC;AACrD,IAAA,IAAI,UAAU,IAAA,EAAM;AAChB,MAAA,OAAO,MAAA;AAAA,IACX;AACA,IAAA,YAAA,CAAa,KAAK,CAAA;AAClB,IAAA,KAAA,GAAQ,IAAA;AACR,IAAA,IAAI,YAAY,QAAA,EAAU;AACtB,MAAA,OAAO,UAAA,EAAW;AAAA,IACtB;AACA,IAAA,QAAA,GAAW,IAAA;AACX,IAAA,QAAA,GAAW,IAAA;AACX,IAAA,OAAO,MAAA;AAAA,EACX,CAAA;AAEA,EAAA,SAAA,CAAU,UAAU,WAAqB;AACrC,IAAA,OAAO,KAAA,KAAU,IAAA;AAAA,EACrB,CAAA;AAEA,EAAA,OAAO,SAAA;AACX;AAeO,SAAS,QAAA,CACZ,IAAA,EACA,OAAA,GAA2B,EAAC,EACZ;AAChB,EAAA,MAAM;AAAA,IACF,IAAA,GAAO,CAAA;AAAA,IACP,OAAA,GAAU,IAAA;AAAA,IACV,QAAA,GAAW;AAAA,GACf,GAAI,OAAA;AAEJ,EAAA,IAAI,KAAA,GAA8C,IAAA;AAClD,EAAA,IAAI,QAAA,GAAiC,IAAA;AACrC,EAAA,IAAI,QAAA,GAAoB,IAAA;AACxB,EAAA,IAAI,cAAA,GAAgC,IAAA;AACpC,EAAA,IAAI,MAAA;AAEJ,EAAA,SAAS,WAAW,IAAA,EAAyC;AACzD,IAAA,MAAM,IAAA,GAAO,QAAA;AACb,IAAA,MAAM,OAAA,GAAU,QAAA;AAEhB,IAAA,QAAA,GAAW,IAAA;AACX,IAAA,QAAA,GAAW,IAAA;AACX,IAAA,cAAA,GAAiB,IAAA;AACjB,IAAA,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,OAAA,EAAS,IAAI,CAAA;AACjC,IAAA,OAAO,MAAA;AAAA,EACX;AAEA,EAAA,SAAS,cAAc,IAAA,EAAsB;AACzC,IAAA,MAAM,mBAAA,GAAsB,QAAQ,cAAA,IAAA,IAAA,GAAA,cAAA,GAAkB,CAAA,CAAA;AACtD,IAAA,OAAO,IAAA,GAAO,mBAAA;AAAA,EAClB;AAEA,EAAA,SAAS,WAAW,KAAA,EAAqB;AACrC,IAAA,KAAA,GAAQ,WAAW,MAAM;AACrB,MAAA,KAAA,GAAQ,IAAA;AACR,MAAA,IAAI,YAAY,QAAA,EAAU;AACtB,QAAA,UAAA,CAAW,IAAA,CAAK,KAAK,CAAA;AACrB,QAAA;AAAA,MACJ;AACA,MAAA,QAAA,GAAW,IAAA;AACX,MAAA,QAAA,GAAW,IAAA;AAAA,IACf,GAAG,KAAK,CAAA;AAAA,EACZ;AAEA,EAAA,SAAS,aAA4B,IAAA,EAAgD;AACjF,IAAA,MAAM,IAAA,GAAO,KAAK,GAAA,EAAI;AAEtB,IAAA,QAAA,GAAW,IAAA;AACX,IAAA,QAAA,GAAW,IAAA;AAEX,IAAA,IAAI,mBAAmB,IAAA,EAAM;AACzB,MAAA,IAAI,OAAA,EAAS;AACT,QAAA,OAAO,WAAW,IAAI,CAAA;AAAA,MAC1B;AACA,MAAA,cAAA,GAAiB,IAAA;AAAA,IACrB;AAEA,IAAA,MAAM,aAAA,GAAgB,cAAc,IAAI,CAAA;AAExC,IAAA,IAAI,iBAAiB,CAAA,EAAG;AACpB,MAAA,IAAI,UAAU,IAAA,EAAM;AAChB,QAAA,YAAA,CAAa,KAAK,CAAA;AAClB,QAAA,KAAA,GAAQ,IAAA;AAAA,MACZ;AACA,MAAA,OAAO,WAAW,IAAI,CAAA;AAAA,IAC1B;AAEA,IAAA,IAAI,KAAA,KAAU,QAAQ,QAAA,EAAU;AAC5B,MAAA,UAAA,CAAW,aAAa,CAAA;AAAA,IAC5B;AAEA,IAAA,OAAO,MAAA;AAAA,EACX;AAEA,EAAA,SAAA,CAAU,SAAS,WAAkB;AACjC,IAAA,IAAI,UAAU,IAAA,EAAM;AAChB,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACtB;AACA,IAAA,QAAA,GAAW,IAAA;AACX,IAAA,QAAA,GAAW,IAAA;AACX,IAAA,cAAA,GAAiB,IAAA;AACjB,IAAA,KAAA,GAAQ,IAAA;AAAA,EACZ,CAAA;AAEA,EAAA,SAAA,CAAU,QAAQ,WAAuC;AACrD,IAAA,IAAI,UAAU,IAAA,EAAM;AAChB,MAAA,OAAO,MAAA;AAAA,IACX;AACA,IAAA,YAAA,CAAa,KAAK,CAAA;AAClB,IAAA,KAAA,GAAQ,IAAA;AACR,IAAA,IAAI,QAAA,EAAU;AACV,MAAA,OAAO,UAAA,CAAW,IAAA,CAAK,GAAA,EAAK,CAAA;AAAA,IAChC;AACA,IAAA,OAAO,MAAA;AAAA,EACX,CAAA;AAEA,EAAA,SAAA,CAAU,UAAU,WAAqB;AACrC,IAAA,OAAO,KAAA,KAAU,IAAA;AAAA,EACrB,CAAA;AAEA,EAAA,OAAO,SAAA;AACX;;;ACpNO,SAAS,GAAA,CAAa,GAAA,EAAU,IAAA,EAAyB,YAAA,EAAiC;AAC7F,EAAA,IAAI,GAAA,IAAO,MAAM,OAAO,YAAA;AAExB,EAAA,MAAM,IAAA,GAAO,MAAM,OAAA,CAAQ,IAAI,IAAI,IAAA,GAAO,IAAA,CAAK,MAAM,GAAG,CAAA;AAExD,EAAA,IAAI,MAAA,GAAS,GAAA;AACb,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACpB,IAAA,IAAI,UAAU,IAAA,EAAM;AAChB,MAAA,OAAO,YAAA;AAAA,IACX;AACA,IAAA,MAAA,GAAS,OAAO,GAAG,CAAA;AAAA,EACvB;AAEA,EAAA,OAAO,MAAA,KAAW,SAAY,MAAA,GAAS,YAAA;AAC3C","file":"index.js","sourcesContent":["export interface MaskOptions {\n /**\n * Number of characters to keep from the start.\n */\n start?: number\n\n /**\n * Number of characters to keep from the end.\n */\n end?: number\n\n /**\n * Character used to replace hidden content.\n */\n maskChar?: string\n\n /**\n * Fixed mask length. When omitted, the hidden content length is used.\n */\n maskLength?: number\n}\n\nexport function maskByKeepEnds(\n value: string,\n defaults: MaskOptions,\n options: MaskOptions = {}\n): string {\n const start = normalizeCount(\n options.start ?? defaults.start ?? 0\n )\n const end = normalizeCount(\n options.end ?? defaults.end ?? 0\n )\n const maskChar =\n options.maskChar || defaults.maskChar || '*'\n\n if (value.length <= start + end) {\n const hiddenLength = Math.max(\n value.length - start,\n 0\n )\n const maskLength = normalizeCount(\n options.maskLength ??\n defaults.maskLength ??\n hiddenLength\n )\n\n return (\n value.slice(0, start) +\n maskChar.repeat(maskLength)\n )\n }\n\n const hiddenLength = Math.max(\n value.length - start - end,\n 0\n )\n const maskLength = normalizeCount(\n options.maskLength ??\n defaults.maskLength ??\n hiddenLength\n )\n\n return (\n value.slice(0, start) +\n maskChar.repeat(maskLength) +\n (end > 0 ? value.slice(-end) : '')\n )\n}\n\nfunction normalizeCount(value: number): number {\n return Math.max(0, Math.floor(value))\n}\n","import {\n maskByKeepEnds,\n type MaskOptions\n} from './maskOptions'\n\nexport interface UniversalMaskOptions\n extends MaskOptions {\n /**\n * Zero-based range to mask. The end index is not included.\n */\n range?: [number, number]\n\n /**\n * Regular expression used to find content that should be masked.\n */\n pattern?: RegExp\n\n /**\n * Replacement used with pattern. When omitted, every matched\n * character is replaced with maskChar.\n */\n replacement?:\n | string\n | ((match: string) => string)\n}\n\nexport function mask(\n value: string,\n options: UniversalMaskOptions = {}\n): string {\n if (!value) return ''\n\n if (options.pattern) {\n return maskByPattern(value, options)\n }\n\n if (options.range) {\n return maskByRange(value, options)\n }\n\n return maskByKeepEnds(value, {}, options)\n}\n\nfunction maskByPattern(\n value: string,\n options: UniversalMaskOptions\n): string {\n const {\n pattern,\n replacement,\n maskChar = '*'\n } = options\n\n if (!pattern) return value\n\n return value.replace(pattern, (match) => {\n if (typeof replacement === 'function') {\n return replacement(match)\n }\n\n if (typeof replacement === 'string') {\n return replacement\n }\n\n return maskChar.repeat(\n getMaskLength(match.length, options)\n )\n })\n}\n\nfunction maskByRange(\n value: string,\n options: UniversalMaskOptions\n): string {\n const [rawStart, rawEnd] = options.range || [0, 0]\n const start = clampIndex(rawStart, value.length)\n const end = clampIndex(rawEnd, value.length)\n const from = Math.min(start, end)\n const to = Math.max(start, end)\n const maskChar = options.maskChar || '*'\n\n return (\n value.slice(0, from) +\n maskChar.repeat(\n getMaskLength(to - from, options)\n ) +\n value.slice(to)\n )\n}\n\nfunction getMaskLength(\n hiddenLength: number,\n options: UniversalMaskOptions\n): number {\n return Math.max(\n 0,\n Math.floor(\n options.maskLength ?? hiddenLength\n )\n )\n}\n\nfunction clampIndex(\n value: number,\n length: number\n): number {\n return Math.min(\n Math.max(0, Math.floor(value)),\n length\n )\n}\n","import {\n maskByKeepEnds,\n type MaskOptions\n} from './maskOptions'\n\nexport type MaskNameOptions = MaskOptions\n\nexport function maskName(\n name: string,\n options?: MaskNameOptions\n): string {\n if (!name) return ''\n\n return maskByKeepEnds(\n name,\n {\n start: 1,\n end: 1,\n maskChar: '*'\n },\n options\n )\n}\n","/*\n * @Description: \n * @Author: taiyang\n * @Date: 2026-05-13 09:43:32\n * @LastEditTime: 2026-05-13 09:43:41\n * @LastEditors: taiyang\n */\nimport {\n maskByKeepEnds,\n type MaskOptions\n} from './maskOptions'\n\nexport type MaskPhoneOptions = MaskOptions\n\nexport function maskPhone(\n phone: string,\n options?: MaskPhoneOptions\n): string {\n if (!phone) return ''\n\n if (!/^\\d{11}$/.test(phone)) return phone\n\n return maskByKeepEnds(\n phone,\n {\n start: 3,\n end: 4,\n maskChar: '*',\n maskLength: 4\n },\n options\n )\n}\n","import {\n maskByKeepEnds,\n type MaskOptions\n} from './maskOptions'\n\nexport type MaskFixedPhoneOptions = MaskOptions\n\nexport function maskFixedPhone(\n phone: string,\n options?: MaskFixedPhoneOptions\n): string {\n if (!phone) return ''\n\n const normalized = phone.replace(/[\\s-]/g, '')\n\n if (!/^\\d{10,12}$/.test(normalized)) {\n return phone\n }\n\n const areaCodeLength = getAreaCodeLength(\n phone,\n normalized\n )\n\n return maskByKeepEnds(\n normalized,\n {\n start: areaCodeLength,\n end: 4,\n maskChar: '*'\n },\n options\n )\n}\n\nfunction getAreaCodeLength(\n phone: string,\n normalized: string\n): number {\n const areaCodeMatch = phone.match(/^(\\d{3,4})-/)\n\n if (areaCodeMatch) {\n return areaCodeMatch[1].length\n }\n\n if (normalized.length === 10) {\n return 3\n }\n\n return isThreeDigitAreaCode(normalized)\n ? 3\n : 4\n}\n\nfunction isThreeDigitAreaCode(value: string): boolean {\n return /^(010|020|021|022|023|024|025|027|028|029)/.test(\n value\n )\n}\n","/*\n * @Description: \n * @Author: taiyang\n * @Date: 2026-05-13 09:43:55\n * @LastEditTime: 2026-05-13 09:44:01\n * @LastEditors: taiyang\n */\nimport {\n maskByKeepEnds,\n type MaskOptions\n} from './maskOptions'\n\nexport type MaskEmailOptions = Omit<\n MaskOptions,\n 'end'\n>\n\nexport function maskEmail(\n email: string,\n options?: MaskEmailOptions\n): string {\n if (!email) return ''\n\n const [name, domain] = email.split('@')\n\n if (!name || !domain) return email\n\n const masked = maskByKeepEnds(\n name,\n {\n start: 2,\n end: 0,\n maskChar: '*',\n maskLength: 4\n },\n options\n )\n\n return `${masked}@${domain}`\n}\n","/*\n * @Description: \n * @Author: taiyang\n * @Date: 2026-05-13 09:59:07\n * @LastEditTime: 2026-05-13 09:59:14\n * @LastEditors: taiyang\n */\nimport {\n maskByKeepEnds,\n type MaskOptions\n} from './maskOptions'\n\nexport type MaskIdCardOptions = MaskOptions\n\nexport function maskIdCard(\n idCard: string,\n options?: MaskIdCardOptions\n): string {\n if (!idCard) return ''\n\n if (idCard.length <= 8) return idCard\n\n return maskByKeepEnds(\n idCard,\n {\n start: 4,\n end: 4,\n maskChar: '*',\n maskLength: 10\n },\n options\n )\n}\n","import {\n maskByKeepEnds,\n type MaskOptions\n} from './maskOptions'\n\nexport type MaskBankCardOptions = MaskOptions\n\nexport function maskBankCard(\n cardNo: string,\n options?: MaskBankCardOptions\n): string {\n if (!cardNo) return ''\n\n const normalized = cardNo.replace(/[\\s-]/g, '')\n\n if (!/^\\d{10,30}$/.test(normalized)) {\n return cardNo\n }\n\n return maskByKeepEnds(\n normalized,\n {\n start: 6,\n end: 4,\n maskChar: '*'\n },\n options\n )\n}\n","import { type MaskOptions } from './maskOptions'\n\nexport interface MaskAddressOptions\n extends Pick<\n MaskOptions,\n 'maskChar' | 'maskLength'\n > {\n keepLength?: number\n}\n\nexport function maskAddress(\n address: string,\n options: MaskAddressOptions = {}\n): string {\n if (!address) return ''\n\n const keepLength =\n options.keepLength ?? getRegionEndIndex(address)\n const maskChar = options.maskChar || '*'\n const maskLength = Math.max(\n 0,\n Math.floor(options.maskLength ?? 4)\n )\n\n return (\n address.slice(0, keepLength) +\n maskChar.repeat(maskLength)\n )\n}\n\nfunction getRegionEndIndex(address: string): number {\n const regionMatch = address.match(\n /^(.+?(省|自治区|特别行政区))?(.+?(市|自治州|地区|盟))?(.+?(区|县|自治县|旗|自治旗|市))/\n )\n\n if (regionMatch) {\n return regionMatch[0].length\n }\n\n return Math.min(6, address.length)\n}\n","import {\n maskByKeepEnds,\n type MaskOptions\n} from './maskOptions'\n\nexport type MaskPassportOptions = MaskOptions\n\nexport function maskPassport(\n passport: string,\n options?: MaskPassportOptions\n): string {\n if (!passport) return ''\n\n return maskByKeepEnds(\n passport,\n {\n start: 2,\n end: 2,\n maskChar: '*'\n },\n options\n )\n}\n","import {\n maskByKeepEnds,\n type MaskOptions\n} from './maskOptions'\n\nexport type MaskCarPlateOptions = MaskOptions\n\nexport function maskCarPlate(\n plate: string,\n options?: MaskCarPlateOptions\n): string {\n if (!plate) return ''\n\n return maskByKeepEnds(\n plate,\n {\n start: 2,\n end: 1,\n maskChar: '*'\n },\n options\n )\n}\n","import { type MaskOptions } from './maskOptions'\n\nexport interface MaskIpOptions\n extends Pick<MaskOptions, 'maskChar'> {\n segment?: number\n}\n\nexport function maskIp(\n ip: string,\n options: MaskIpOptions = {}\n): string {\n if (!ip) return ''\n\n if (ip.includes(':')) {\n return maskIpv6(ip, options)\n }\n\n return maskIpv4(ip, options)\n}\n\nfunction maskIpv4(\n ip: string,\n options: MaskIpOptions\n): string {\n const segments = ip.split('.')\n\n if (\n segments.length !== 4 ||\n segments.some((segment) => !isIpv4Segment(segment))\n ) {\n return ip\n }\n\n const target = Math.min(\n Math.max(options.segment ?? 3, 0),\n 3\n )\n\n segments[target] = options.maskChar || '*'\n\n return segments.join('.')\n}\n\nfunction maskIpv6(\n ip: string,\n options: MaskIpOptions\n): string {\n const segments = ip.split(':')\n\n if (segments.length < 3) return ip\n\n const target = Math.min(\n Math.max(\n options.segment ?? segments.length - 1,\n 0\n ),\n segments.length - 1\n )\n\n segments[target] = options.maskChar || '*'\n\n return segments.join(':')\n}\n\nfunction isIpv4Segment(segment: string): boolean {\n if (!/^\\d+$/.test(segment)) return false\n\n const value = Number(segment)\n\n return value >= 0 && value <= 255\n}\n","import {\n maskByKeepEnds,\n type MaskOptions\n} from './maskOptions'\n\nexport type MaskAccountOptions = MaskOptions\n\nexport function maskAccount(\n account: string,\n options?: MaskAccountOptions\n): string {\n if (!account) return ''\n\n return maskByKeepEnds(\n account,\n {\n start: 2,\n end: 2,\n maskChar: '*'\n },\n options\n )\n}\n","import {\n maskByKeepEnds,\n type MaskOptions\n} from './maskOptions'\n\nexport type MaskSecretOptions = MaskOptions\n\nexport function maskSecret(\n secret: string,\n options?: MaskSecretOptions\n): string {\n if (!secret) return ''\n\n return maskByKeepEnds(\n secret,\n {\n start: 4,\n end: 4,\n maskChar: '*',\n maskLength: 6\n },\n options\n )\n}\n","export const REGEXP_PHONE = /^1[3-9]\\d{9}$/\n\nexport const REGEXP_FIXED_PHONE =\n /^0\\d{2,3}-?\\d{7,8}$/\n\nexport const REGEXP_EMAIL =\n /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$/\n\nexport const REGEXP_ID_CARD =\n /^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[\\dXx]$/\n\nexport const REGEXP_BANK_CARD = /^\\d{10,30}$/\n\nexport const REGEXP_PASSPORT =\n /^([A-Za-z]\\d{8}|[A-Za-z]{2}\\d{7})$/\n\nexport const REGEXP_CAR_PLATE =\n /^[\\u4e00-\\u9fa5][A-Z][A-Z0-9]{5,6}$/\n\nexport const REGEXP_URL =\n /^https?:\\/\\/[^\\s/$.?#].[^\\s]*$/i\n\nexport const REGEXP_IPV4 =\n /^(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]?\\d)){3}$/\n\nexport const REGEXP_IPV6 =\n /^(([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}|(([0-9A-Fa-f]{1,4}:){1,7}:)|(([0-9A-Fa-f]{1,4}:){1,6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,5}(:[0-9A-Fa-f]{1,4}){1,2})|(([0-9A-Fa-f]{1,4}:){1,4}(:[0-9A-Fa-f]{1,4}){1,3})|(([0-9A-Fa-f]{1,4}:){1,3}(:[0-9A-Fa-f]{1,4}){1,4})|(([0-9A-Fa-f]{1,4}:){1,2}(:[0-9A-Fa-f]{1,4}){1,5})|([0-9A-Fa-f]{1,4}:)((:[0-9A-Fa-f]{1,4}){1,6})|:(:([0-9A-Fa-f]{1,4}){1,7}|:))$/\n\nexport const REGEXP_PORT =\n /^([0-9]|[1-9]\\d{1,3}|[1-5]\\d{4}|6[0-4]\\d{3}|65[0-4]\\d{2}|655[0-2]\\d|6553[0-5])$/\n\nexport const REGEXP_CHINESE = /^[\\u4e00-\\u9fa5]+$/\n\nexport const REGEXP_POSTAL_CODE =\n /^[1-9]\\d{5}$/\n\nexport const REGEXP_QQ = /^[1-9]\\d{4,10}$/\n\nexport const REGEXP_USERNAME =\n /^[A-Za-z][A-Za-z0-9_]{3,19}$/\n\nexport const REGEXP_PASSWORD =\n /^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d\\S]{8,20}$/\n\nexport const REGEXP_STRONG_PASSWORD =\n /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[^\\w\\s]).{8,20}$/\n\nexport const REGEXP_INTEGER = /^-?\\d+$/\n\nexport const REGEXP_POSITIVE_INTEGER =\n /^[1-9]\\d*$/\n\nexport const REGEXP_DECIMAL =\n /^-?(0|[1-9]\\d*)(\\.\\d+)?$/\n\nexport const REGEXP_AMOUNT =\n /^(0|[1-9]\\d*)(\\.\\d{1,2})?$/\n\nexport const regexp = {\n phone: REGEXP_PHONE,\n fixedPhone: REGEXP_FIXED_PHONE,\n email: REGEXP_EMAIL,\n idCard: REGEXP_ID_CARD,\n bankCard: REGEXP_BANK_CARD,\n passport: REGEXP_PASSPORT,\n carPlate: REGEXP_CAR_PLATE,\n url: REGEXP_URL,\n ipv4: REGEXP_IPV4,\n ipv6: REGEXP_IPV6,\n port: REGEXP_PORT,\n chinese: REGEXP_CHINESE,\n postalCode: REGEXP_POSTAL_CODE,\n qq: REGEXP_QQ,\n username: REGEXP_USERNAME,\n password: REGEXP_PASSWORD,\n strongPassword: REGEXP_STRONG_PASSWORD,\n integer: REGEXP_INTEGER,\n positiveInteger: REGEXP_POSITIVE_INTEGER,\n decimal: REGEXP_DECIMAL,\n amount: REGEXP_AMOUNT\n} as const\n\nexport type RegexpKey = keyof typeof regexp\n\nexport function testRegexp(\n value: string,\n pattern: RegExp\n): boolean {\n pattern.lastIndex = 0\n\n return pattern.test(value)\n}\n\nexport const isPhone = (value: string): boolean =>\n testRegexp(value, REGEXP_PHONE)\n\nexport const isFixedPhone = (value: string): boolean =>\n testRegexp(value, REGEXP_FIXED_PHONE)\n\nexport const isEmail = (value: string): boolean =>\n testRegexp(value, REGEXP_EMAIL)\n\nexport const isIdCard = (value: string): boolean =>\n testRegexp(value, REGEXP_ID_CARD)\n\nexport const isBankCard = (value: string): boolean =>\n testRegexp(value, REGEXP_BANK_CARD)\n\nexport const isPassport = (value: string): boolean =>\n testRegexp(value, REGEXP_PASSPORT)\n\nexport const isCarPlate = (value: string): boolean =>\n testRegexp(value, REGEXP_CAR_PLATE)\n\nexport const isUrl = (value: string): boolean =>\n testRegexp(value, REGEXP_URL)\n\nexport const isIpv4 = (value: string): boolean =>\n testRegexp(value, REGEXP_IPV4)\n\nexport const isIpv6 = (value: string): boolean =>\n testRegexp(value, REGEXP_IPV6)\n\nexport const isPort = (value: string): boolean =>\n testRegexp(value, REGEXP_PORT)\n\nexport const isChinese = (value: string): boolean =>\n testRegexp(value, REGEXP_CHINESE)\n\nexport const isPostalCode = (value: string): boolean =>\n testRegexp(value, REGEXP_POSTAL_CODE)\n\nexport const isQq = (value: string): boolean =>\n testRegexp(value, REGEXP_QQ)\n\nexport const isUsername = (value: string): boolean =>\n testRegexp(value, REGEXP_USERNAME)\n\nexport const isPassword = (value: string): boolean =>\n testRegexp(value, REGEXP_PASSWORD)\n\nexport const isStrongPassword = (\n value: string\n): boolean =>\n testRegexp(value, REGEXP_STRONG_PASSWORD)\n\nexport const isInteger = (value: string): boolean =>\n testRegexp(value, REGEXP_INTEGER)\n\nexport const isPositiveInteger = (\n value: string\n): boolean =>\n testRegexp(value, REGEXP_POSITIVE_INTEGER)\n\nexport const isDecimal = (value: string): boolean =>\n testRegexp(value, REGEXP_DECIMAL)\n\nexport const isAmount = (value: string): boolean =>\n testRegexp(value, REGEXP_AMOUNT)\n","export interface CacheStorage {\n length: number\n key(index: number): string | null\n getItem(key: string): string | null\n setItem(key: string, value: string): void\n removeItem(key: string): void\n}\n\nexport interface CacheOptions {\n prefix?: string\n ttl?: number\n storage?: CacheStorage\n}\n\nexport interface CacheSetOptions {\n ttl?: number\n}\n\ninterface CacheRecord<T> {\n value: T\n expiresAt: number | null\n}\n\nexport interface Cache {\n set<T>(\n key: string,\n value: T,\n options?: CacheSetOptions\n ): void\n get<T = unknown>(key: string): T | undefined\n has(key: string): boolean\n remove(key: string): void\n clear(): void\n keys(): string[]\n size(): number\n}\n\nexport function createCache(\n options: CacheOptions = {}\n): Cache {\n const prefix = options.prefix ?? 'szkj:cache:'\n const memory = new Map<string, CacheRecord<unknown>>()\n\n const resolveKey = (key: string): string =>\n `${prefix}${key}`\n\n const unresolveKey = (key: string): string =>\n key.startsWith(prefix)\n ? key.slice(prefix.length)\n : key\n\n const getExpiresAt = (\n ttl = options.ttl\n ): number | null => {\n if (typeof ttl !== 'number') return null\n\n return Date.now() + Math.max(0, ttl)\n }\n\n const read = (\n resolvedKey: string\n ): CacheRecord<unknown> | undefined => {\n if (!options.storage) {\n return memory.get(resolvedKey)\n }\n\n const raw = options.storage.getItem(resolvedKey)\n\n if (!raw) return undefined\n\n try {\n return JSON.parse(raw) as CacheRecord<unknown>\n } catch {\n options.storage.removeItem(resolvedKey)\n return undefined\n }\n }\n\n const write = (\n resolvedKey: string,\n record: CacheRecord<unknown>\n ): void => {\n if (!options.storage) {\n memory.set(resolvedKey, record)\n return\n }\n\n options.storage.setItem(\n resolvedKey,\n JSON.stringify(record)\n )\n }\n\n const removeResolved = (\n resolvedKey: string\n ): void => {\n if (!options.storage) {\n memory.delete(resolvedKey)\n return\n }\n\n options.storage.removeItem(resolvedKey)\n }\n\n const isExpired = (\n record: CacheRecord<unknown>\n ): boolean =>\n typeof record.expiresAt === 'number' &&\n record.expiresAt <= Date.now()\n\n const getResolvedKeys = (): string[] => {\n if (!options.storage) {\n return Array.from(memory.keys()).filter((key) =>\n key.startsWith(prefix)\n )\n }\n\n const keys: string[] = []\n\n for (\n let index = 0;\n index < options.storage.length;\n index += 1\n ) {\n const key = options.storage.key(index)\n\n if (key?.startsWith(prefix)) {\n keys.push(key)\n }\n }\n\n return keys\n }\n\n const get = <T = unknown>(\n key: string\n ): T | undefined => {\n const resolvedKey = resolveKey(key)\n const record = read(resolvedKey)\n\n if (!record) return undefined\n\n if (isExpired(record)) {\n removeResolved(resolvedKey)\n return undefined\n }\n\n return record.value as T\n }\n\n const keys = (): string[] =>\n getResolvedKeys().reduce<string[]>((result, key) => {\n const record = read(key)\n\n if (!record || isExpired(record)) {\n removeResolved(key)\n return result\n }\n\n result.push(unresolveKey(key))\n return result\n }, [])\n\n return {\n set<T>(\n key: string,\n value: T,\n setOptions: CacheSetOptions = {}\n ): void {\n write(resolveKey(key), {\n value,\n expiresAt: getExpiresAt(setOptions.ttl)\n })\n },\n\n get,\n\n has(key: string): boolean {\n return get(key) !== undefined\n },\n\n remove(key: string): void {\n removeResolved(resolveKey(key))\n },\n\n clear(): void {\n getResolvedKeys().forEach(removeResolved)\n },\n\n keys,\n\n size(): number {\n return keys().length\n }\n }\n}\n\nexport const cache = createCache()\n","import CryptoJS from 'crypto-js'\nimport smCrypto from 'sm-crypto'\n\ndeclare const require:\n | ((id: string) => unknown)\n | undefined\n\nconst { sm2, sm4 } = smCrypto\n\nexport interface AesOptions {\n iv?: string\n mode?: 'CBC' | 'CFB' | 'CTR' | 'ECB' | 'OFB'\n padding?:\n | 'Pkcs7'\n | 'Iso97971'\n | 'AnsiX923'\n | 'Iso10126'\n | 'ZeroPadding'\n | 'NoPadding'\n keyMode?: 'utf8' | 'passphrase'\n}\n\nexport interface RsaOptions {\n publicKey?: string\n privateKey?: string\n}\n\nexport interface Sm2Options {\n cipherMode?: 0 | 1\n}\n\nexport interface Sm4Options {\n mode?: 'ecb' | 'cbc'\n iv?: string\n padding?: 'pkcs#5' | 'pkcs#7' | 'none'\n output?: 'string' | 'array'\n}\n\nexport interface CryptoOptions {\n aesKey?: string\n aesOptions?: AesOptions\n rsaPublicKey?: string\n rsaPrivateKey?: string\n sm2PublicKey?: string\n sm2PrivateKey?: string\n sm2Options?: Sm2Options\n sm4Key?: string\n sm4Options?: Sm4Options\n}\n\nexport interface CryptoInstance {\n encrypt(value: string, secret?: string): string\n decrypt(value: string, secret?: string): string\n encryptAes(value: string, secret?: string): string\n decryptAes(value: string, secret?: string): string\n encryptRsa(value: string, publicKey?: string): string\n decryptRsa(value: string, privateKey?: string): string\n encryptSm2(value: string, publicKey?: string): string\n decryptSm2(value: string, privateKey?: string): string\n encryptSm4(\n value: string,\n key?: string\n ): string | number[]\n decryptSm4(\n value: string | number[],\n key?: string\n ): string\n}\n\nexport function createCrypto(\n options: CryptoOptions = {}\n): CryptoInstance {\n return {\n encrypt(value, secret) {\n return encrypt(\n value,\n getRequiredKey(secret ?? options.aesKey, 'AES key'),\n options.aesOptions\n )\n },\n\n decrypt(value, secret) {\n return decrypt(\n value,\n getRequiredKey(secret ?? options.aesKey, 'AES key'),\n options.aesOptions\n )\n },\n\n encryptAes(value, secret) {\n return encryptAes(\n value,\n getRequiredKey(secret ?? options.aesKey, 'AES key'),\n options.aesOptions\n )\n },\n\n decryptAes(value, secret) {\n return decryptAes(\n value,\n getRequiredKey(secret ?? options.aesKey, 'AES key'),\n options.aesOptions\n )\n },\n\n encryptRsa(value, publicKey) {\n return encryptRsa(\n value,\n getRequiredKey(\n publicKey ?? options.rsaPublicKey,\n 'RSA public key'\n )\n )\n },\n\n decryptRsa(value, privateKey) {\n return decryptRsa(\n value,\n getRequiredKey(\n privateKey ?? options.rsaPrivateKey,\n 'RSA private key'\n )\n )\n },\n\n encryptSm2(value, publicKey) {\n return encryptSm2(\n value,\n getRequiredKey(\n publicKey ?? options.sm2PublicKey,\n 'SM2 public key'\n ),\n options.sm2Options\n )\n },\n\n decryptSm2(value, privateKey) {\n return decryptSm2(\n value,\n getRequiredKey(\n privateKey ?? options.sm2PrivateKey,\n 'SM2 private key'\n ),\n options.sm2Options\n )\n },\n\n encryptSm4(value, key) {\n return encryptSm4(\n value,\n getRequiredKey(key ?? options.sm4Key, 'SM4 key'),\n options.sm4Options\n )\n },\n\n decryptSm4(value, key) {\n return decryptSm4(\n value,\n getRequiredKey(key ?? options.sm4Key, 'SM4 key'),\n options.sm4Options\n )\n }\n }\n}\n\nexport function encrypt(\n value: string,\n secret: string,\n options?: AesOptions\n): string {\n return encryptAes(value, secret, options)\n}\n\nexport function decrypt(\n value: string,\n secret: string,\n options?: AesOptions\n): string {\n return decryptAes(value, secret, options)\n}\n\nexport function encryptAes(\n value: string,\n secret: string,\n options?: AesOptions\n): string {\n return CryptoJS.AES.encrypt(\n value,\n getAesKey(secret, options),\n getAesOptions(options)\n ).toString()\n}\n\nexport function decryptAes(\n value: string,\n secret: string,\n options?: AesOptions\n): string {\n return CryptoJS.AES.decrypt(\n value,\n getAesKey(secret, options),\n getAesOptions(options)\n ).toString(CryptoJS.enc.Utf8)\n}\n\nexport function encryptRsa(\n value: string,\n publicKey: string\n): string {\n const rsa = createRsa({\n publicKey\n })\n const encrypted = rsa.encryptLong(value)\n\n if (!encrypted) {\n throw new Error('RSA encrypt failed')\n }\n\n return encrypted\n}\n\nexport function decryptRsa(\n value: string,\n privateKey: string\n): string {\n const rsa = createRsa({\n privateKey\n })\n const decrypted = rsa.decryptLong(value)\n\n if (!decrypted) {\n throw new Error('RSA decrypt failed')\n }\n\n return decrypted\n}\n\nexport function encryptSm2(\n value: string,\n publicKey: string,\n options: Sm2Options = {}\n): string {\n return sm2.doEncrypt(\n value,\n publicKey,\n options.cipherMode ?? 1\n )\n}\n\nexport function decryptSm2(\n value: string,\n privateKey: string,\n options: Sm2Options = {}\n): string {\n return sm2.doDecrypt(\n value,\n privateKey,\n options.cipherMode ?? 1\n )\n}\n\nexport function encryptSm4(\n value: string,\n key: string,\n options: Sm4Options = {}\n): string | number[] {\n return sm4.encrypt(value, key, options)\n}\n\nexport function decryptSm4(\n value: string | number[],\n key: string,\n options: Sm4Options = {}\n): string {\n return sm4.decrypt(value, key, options)\n}\n\nexport function md5(value: string): string {\n return CryptoJS.MD5(value).toString()\n}\n\nexport function sha256(value: string): string {\n return CryptoJS.SHA256(value).toString()\n}\n\nexport function toBase64(value: string): string {\n return CryptoJS.enc.Base64.stringify(\n CryptoJS.enc.Utf8.parse(value)\n )\n}\n\nexport function fromBase64(value: string): string {\n return CryptoJS.enc.Base64.parse(value).toString(\n CryptoJS.enc.Utf8\n )\n}\n\nfunction getAesKey(\n secret: string,\n options?: AesOptions\n): unknown {\n if (options?.keyMode === 'passphrase') {\n return secret\n }\n\n return CryptoJS.enc.Utf8.parse(secret)\n}\n\nfunction getAesOptions(\n options?: AesOptions\n): Record<string, unknown> {\n if (options?.keyMode === 'passphrase') {\n return {}\n }\n\n const aesOptions: Record<string, unknown> = {\n mode: CryptoJS.mode[options?.mode ?? 'ECB'],\n padding: CryptoJS.pad[options?.padding ?? 'Pkcs7']\n }\n\n if (options?.iv) {\n aesOptions.iv = CryptoJS.enc.Utf8.parse(options.iv)\n }\n\n return aesOptions\n}\n\ninterface EncryptLongInstance {\n setPublicKey(publicKey: string): void\n setPrivateKey(privateKey: string): void\n encryptLong(value: string): string | false\n decryptLong(value: string): string | false\n}\n\ninterface EncryptLongConstructor {\n new (): EncryptLongInstance\n}\n\nfunction createRsa(options: RsaOptions): EncryptLongInstance {\n const EncryptLong = getEncryptLong()\n const rsa = new EncryptLong()\n\n if (options.publicKey) {\n rsa.setPublicKey(options.publicKey)\n }\n\n if (options.privateKey) {\n rsa.setPrivateKey(options.privateKey)\n }\n\n return rsa\n}\n\nfunction getEncryptLong(): EncryptLongConstructor {\n if (typeof window === 'undefined') {\n throw new Error('RSA is only available in browser environments')\n }\n\n const requireFn = getRequire()\n\n if (!requireFn) {\n throw new Error('RSA is only available in CommonJS-compatible environments')\n }\n\n const module = requireFn('encryptlong') as {\n default?: EncryptLongConstructor\n } | EncryptLongConstructor\n\n return 'default' in module\n ? module.default as EncryptLongConstructor\n : module as EncryptLongConstructor\n}\n\nfunction getRequire():\n | ((id: string) => unknown)\n | undefined {\n return typeof require === 'function'\n ? require\n : undefined\n}\n\nfunction getRequiredKey(\n key: string | undefined,\n name: string\n): string {\n if (!key) {\n throw new Error(`${name} is required`)\n }\n\n return key\n}\n","export type DateValue = Date | string | number\n\nexport function toDate(value: DateValue): Date {\n if (value instanceof Date) {\n return new Date(value.getTime())\n }\n\n return new Date(value)\n}\n\nexport function isValidDate(value: DateValue): boolean {\n return !Number.isNaN(toDate(value).getTime())\n}\n\nexport function formatDate(\n value: DateValue,\n pattern = 'YYYY-MM-DD HH:mm:ss'\n): string {\n const date = toDate(value)\n\n if (Number.isNaN(date.getTime())) return ''\n\n const tokens: Record<string, string> = {\n YYYY: String(date.getFullYear()),\n YY: String(date.getFullYear()).slice(-2),\n MM: pad(date.getMonth() + 1),\n M: String(date.getMonth() + 1),\n DD: pad(date.getDate()),\n D: String(date.getDate()),\n HH: pad(date.getHours()),\n H: String(date.getHours()),\n mm: pad(date.getMinutes()),\n m: String(date.getMinutes()),\n ss: pad(date.getSeconds()),\n s: String(date.getSeconds()),\n SSS: pad(date.getMilliseconds(), 3)\n }\n\n return pattern.replace(\n /YYYY|YY|SSS|MM|M|DD|D|HH|H|mm|m|ss|s/g,\n (token) => tokens[token]\n )\n}\n\nexport function startOfDay(value: DateValue): Date {\n const date = toDate(value)\n date.setHours(0, 0, 0, 0)\n return date\n}\n\nexport function endOfDay(value: DateValue): Date {\n const date = toDate(value)\n date.setHours(23, 59, 59, 999)\n return date\n}\n\nexport function addDays(\n value: DateValue,\n amount: number\n): Date {\n const date = toDate(value)\n date.setDate(date.getDate() + amount)\n return date\n}\n\nexport function diffDays(\n left: DateValue,\n right: DateValue\n): number {\n return Math.trunc(\n (toDate(left).getTime() - toDate(right).getTime()) /\n 86400000\n )\n}\n\nexport function diffHours(\n left: DateValue,\n right: DateValue\n): number {\n return Math.trunc(\n (toDate(left).getTime() - toDate(right).getTime()) /\n 3600000\n )\n}\n\nexport function fromNow(\n value: DateValue,\n now: DateValue = new Date()\n): string {\n const diff = toDate(value).getTime() - toDate(now).getTime()\n const absDiff = Math.abs(diff)\n const suffix = diff >= 0 ? '后' : '前'\n\n if (absDiff < 60000) return '刚刚'\n\n const units = [\n ['年', 31536000000],\n ['个月', 2592000000],\n ['天', 86400000],\n ['小时', 3600000],\n ['分钟', 60000]\n ] as const\n\n const unit = units.find(([, size]) => absDiff >= size)\n\n if (!unit) return '刚刚'\n\n return `${Math.floor(absDiff / unit[1])}${unit[0]}${suffix}`\n}\n\nfunction pad(value: number, length = 2): string {\n return String(value).padStart(length, '0')\n}\n","export interface FormatMoneyOptions {\n precision?: number\n symbol?: string\n thousand?: string\n decimal?: string\n}\n\nexport interface FormatPercentOptions {\n precision?: number\n multiplier?: number\n}\n\nexport function toFixedSafe(\n value: number,\n precision = 2\n): string {\n const scale = 10 ** precision\n const rounded =\n Math.round((value + Number.EPSILON) * scale) / scale\n\n return rounded.toFixed(precision)\n}\n\nexport function formatThousands(\n value: number | string,\n separator = ','\n): string {\n const [integer, decimal] = String(value).split('.')\n const sign = integer.startsWith('-') ? '-' : ''\n const normalized = sign ? integer.slice(1) : integer\n const formatted = normalized.replace(\n /\\B(?=(\\d{3})+(?!\\d))/g,\n separator\n )\n\n return `${sign}${formatted}${decimal ? `.${decimal}` : ''}`\n}\n\nexport function formatMoney(\n value: number,\n options: FormatMoneyOptions = {}\n): string {\n const {\n precision = 2,\n symbol = '¥',\n thousand = ',',\n decimal = '.'\n } = options\n const fixed = toFixedSafe(value, precision)\n const formatted = formatThousands(fixed, thousand)\n\n return `${symbol}${formatted.replace('.', decimal)}`\n}\n\nexport function formatPercent(\n value: number,\n options: FormatPercentOptions = {}\n): string {\n const {\n precision = 2,\n multiplier = 100\n } = options\n\n return `${toFixedSafe(value * multiplier, precision)}%`\n}\n\nexport function formatFileSize(\n bytes: number,\n precision = 2\n): string {\n if (!Number.isFinite(bytes)) return ''\n if (bytes <= 0) return '0 B'\n\n const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB']\n const index = Math.min(\n Math.floor(Math.log(bytes) / Math.log(1024)),\n units.length - 1\n )\n const value = bytes / 1024 ** index\n\n return `${toFixedSafe(value, index === 0 ? 0 : precision)} ${units[index]}`\n}\n\nexport function clamp(\n value: number,\n min: number,\n max: number\n): number {\n return Math.min(Math.max(value, min), max)\n}\n","export type TreeKey = string | number\n\nexport type TreeNode = Record<string, unknown>\n\nexport interface TreeOptions {\n idKey?: string\n parentKey?: string\n childrenKey?: string\n}\n\nconst defaultTreeOptions = {\n idKey: 'id',\n parentKey: 'parentId',\n childrenKey: 'children'\n}\n\nexport function listToTree<T extends TreeNode>(\n list: T[],\n options: TreeOptions = {}\n): T[] {\n const config = getTreeOptions(options)\n const nodeMap = new Map<unknown, T>()\n const roots: T[] = []\n\n list.forEach((item) => {\n nodeMap.set(item[config.idKey], {\n ...item,\n [config.childrenKey]: []\n } as T)\n })\n\n nodeMap.forEach((node) => {\n const parentId = node[config.parentKey]\n const parent = nodeMap.get(parentId)\n\n if (parent) {\n getChildren(parent, config.childrenKey).push(node)\n return\n }\n\n roots.push(node)\n })\n\n return roots\n}\n\nexport function treeToList<T extends TreeNode>(\n tree: T[],\n options: Pick<TreeOptions, 'childrenKey'> = {}\n): T[] {\n const config = getTreeOptions(options)\n const result: T[] = []\n\n walkTree(tree, (node) => {\n const {\n [config.childrenKey]: _children,\n ...rest\n } = node\n\n result.push(rest as T)\n }, config.childrenKey)\n\n return result\n}\n\nexport function findTreeNode<T extends TreeNode>(\n tree: T[],\n predicate: (node: T) => boolean,\n options: Pick<TreeOptions, 'childrenKey'> = {}\n): T | undefined {\n const config = getTreeOptions(options)\n\n for (const node of tree) {\n if (predicate(node)) return node\n\n const found = findTreeNode(\n getChildren<T>(node, config.childrenKey),\n predicate,\n config\n )\n\n if (found) return found\n }\n\n return undefined\n}\n\nexport function filterTree<T extends TreeNode>(\n tree: T[],\n predicate: (node: T) => boolean,\n options: Pick<TreeOptions, 'childrenKey'> = {}\n): T[] {\n const config = getTreeOptions(options)\n\n return tree.reduce<T[]>((result, node) => {\n const children = filterTree(\n getChildren<T>(node, config.childrenKey),\n predicate,\n config\n )\n\n if (predicate(node) || children.length > 0) {\n result.push({\n ...node,\n [config.childrenKey]: children\n } as T)\n }\n\n return result\n }, [])\n}\n\nexport function getTreePath<T extends TreeNode>(\n tree: T[],\n predicate: (node: T) => boolean,\n options: Pick<TreeOptions, 'childrenKey'> = {}\n): T[] {\n const config = getTreeOptions(options)\n\n for (const node of tree) {\n if (predicate(node)) return [node]\n\n const childPath = getTreePath(\n getChildren<T>(node, config.childrenKey),\n predicate,\n config\n )\n\n if (childPath.length > 0) {\n return [node, ...childPath]\n }\n }\n\n return []\n}\n\nexport function getTreeLeaves<T extends TreeNode>(\n tree: T[],\n options: Pick<TreeOptions, 'childrenKey'> = {}\n): T[] {\n const config = getTreeOptions(options)\n const leaves: T[] = []\n\n walkTree(tree, (node) => {\n if (getChildren(node, config.childrenKey).length === 0) {\n leaves.push(node)\n }\n }, config.childrenKey)\n\n return leaves\n}\n\nfunction walkTree<T extends TreeNode>(\n tree: T[],\n visitor: (node: T) => void,\n childrenKey: string\n): void {\n tree.forEach((node) => {\n visitor(node)\n walkTree(\n getChildren<T>(node, childrenKey),\n visitor,\n childrenKey\n )\n })\n}\n\nfunction getChildren<T extends TreeNode>(\n node: T,\n childrenKey: string\n): T[] {\n const children = node[childrenKey]\n\n return Array.isArray(children) ? children as T[] : []\n}\n\nfunction getTreeOptions(options: TreeOptions): Required<TreeOptions> {\n return {\n ...defaultTreeOptions,\n ...options\n }\n}\n","export interface StorageLike {\n length: number\n key(index: number): string | null\n getItem(key: string): string | null\n setItem(key: string, value: string): void\n removeItem(key: string): void\n clear?(): void\n}\n\nexport interface StorageOptions {\n namespace?: string\n ttl?: number\n storage?: StorageLike\n encrypt?: (value: string) => string\n decrypt?: (value: string) => string\n}\n\nexport interface StorageSetOptions {\n ttl?: number\n}\n\nexport interface StorageInstance {\n set<T>(\n key: string,\n value: T,\n options?: StorageSetOptions\n ): void\n get<T = unknown>(key: string): T | undefined\n getRaw(key: string): string | undefined\n has(key: string): boolean\n remove(key: string): void\n clear(): void\n keys(): string[]\n size(): number\n}\n\ninterface StorageRecord<T> {\n value: T\n expiresAt: number | null\n}\n\nconst defaultNamespace = 'szkj:storage:'\n\nexport function createStorage(\n options: StorageOptions = {}\n): StorageInstance {\n const namespace = options.namespace ?? defaultNamespace\n const storage =\n options.storage ?? getDefaultStorage('localStorage')\n\n const resolveKey = (key: string): string =>\n `${namespace}${key}`\n\n const unresolveKey = (key: string): string =>\n key.startsWith(namespace)\n ? key.slice(namespace.length)\n : key\n\n const getExpiresAt = (\n ttl = options.ttl\n ): number | null => {\n if (typeof ttl !== 'number') return null\n\n return Date.now() + Math.max(0, ttl)\n }\n\n const encode = (value: string): string =>\n options.encrypt ? options.encrypt(value) : value\n\n const decode = (value: string): string =>\n options.decrypt ? options.decrypt(value) : value\n\n const readRecord = (\n resolvedKey: string\n ): StorageRecord<unknown> | undefined => {\n const raw = storage.getItem(resolvedKey)\n\n if (!raw) return undefined\n\n try {\n return JSON.parse(decode(raw)) as StorageRecord<unknown>\n } catch {\n storage.removeItem(resolvedKey)\n return undefined\n }\n }\n\n const removeResolved = (resolvedKey: string): void => {\n storage.removeItem(resolvedKey)\n }\n\n const isExpired = (\n record: StorageRecord<unknown>\n ): boolean =>\n typeof record.expiresAt === 'number' &&\n record.expiresAt <= Date.now()\n\n const getResolvedKeys = (): string[] => {\n const keys: string[] = []\n\n for (let index = 0; index < storage.length; index += 1) {\n const key = storage.key(index)\n\n if (key?.startsWith(namespace)) {\n keys.push(key)\n }\n }\n\n return keys\n }\n\n const get = <T = unknown>(\n key: string\n ): T | undefined => {\n const resolvedKey = resolveKey(key)\n const record = readRecord(resolvedKey)\n\n if (!record) return undefined\n\n if (isExpired(record)) {\n removeResolved(resolvedKey)\n return undefined\n }\n\n return record.value as T\n }\n\n const keys = (): string[] =>\n getResolvedKeys().reduce<string[]>((result, key) => {\n const record = readRecord(key)\n\n if (!record || isExpired(record)) {\n removeResolved(key)\n return result\n }\n\n result.push(unresolveKey(key))\n return result\n }, [])\n\n return {\n set<T>(\n key: string,\n value: T,\n setOptions: StorageSetOptions = {}\n ): void {\n const record: StorageRecord<T> = {\n value,\n expiresAt: getExpiresAt(setOptions.ttl)\n }\n\n storage.setItem(\n resolveKey(key),\n encode(JSON.stringify(record))\n )\n },\n\n get,\n\n getRaw(key: string): string | undefined {\n const raw = storage.getItem(resolveKey(key))\n\n if (!raw) return undefined\n\n return decode(raw)\n },\n\n has(key: string): boolean {\n return get(key) !== undefined\n },\n\n remove(key: string): void {\n removeResolved(resolveKey(key))\n },\n\n clear(): void {\n getResolvedKeys().forEach(removeResolved)\n },\n\n keys,\n\n size(): number {\n return keys().length\n }\n }\n}\n\nexport const localStore = createStorage({\n storage: getDefaultStorage('localStorage')\n})\n\nexport const sessionStore = createStorage({\n namespace: 'szkj:session:',\n storage: getDefaultStorage('sessionStorage')\n})\n\nfunction getDefaultStorage(\n type: 'localStorage' | 'sessionStorage'\n): StorageLike {\n if (\n typeof globalThis !== 'undefined' &&\n type in globalThis\n ) {\n const storage = globalThis[\n type as keyof typeof globalThis\n ] as StorageLike | undefined\n\n if (storage) return storage\n }\n\n return createMemoryStorage()\n}\n\nfunction createMemoryStorage(): StorageLike {\n const store = new Map<string, string>()\n\n return {\n get length() {\n return store.size\n },\n\n key(index: number) {\n return Array.from(store.keys())[index] ?? null\n },\n\n getItem(key: string) {\n return store.get(key) ?? null\n },\n\n setItem(key: string, value: string) {\n store.set(key, value)\n },\n\n removeItem(key: string) {\n store.delete(key)\n },\n\n clear() {\n store.clear()\n }\n }\n}\n","/*\n * @Description: \n * @Author: taiyang\n * @Date: 2026-05-15 11:13:20\n * @LastEditTime: 2026-05-15 11:13:30\n * @LastEditors: taiyang\n */\nexport interface CopyTextOptions {\n onSuccess?: () => void\n onError?: (error: unknown) => void\n}\n\nexport async function copyText(\n text: string,\n options?: CopyTextOptions\n): Promise<boolean> {\n if (\n typeof navigator !== 'undefined' &&\n navigator.clipboard &&\n typeof navigator.clipboard.writeText === 'function'\n ) {\n try {\n await navigator.clipboard.writeText(text)\n options?.onSuccess?.()\n return true\n } catch (error) {\n options?.onError?.(error)\n return false\n }\n }\n\n return fallbackCopyText(text, options)\n}\n\nfunction fallbackCopyText(\n text: string,\n options?: CopyTextOptions\n): boolean {\n const textarea = document.createElement('textarea')\n textarea.value = text\n textarea.style.position = 'fixed'\n textarea.style.top = '-9999px'\n textarea.style.left = '-9999px'\n textarea.style.opacity = '0'\n textarea.setAttribute('readonly', '')\n textarea.setAttribute('aria-hidden', 'true')\n\n document.body.appendChild(textarea)\n textarea.focus()\n textarea.select()\n\n let success = false\n\n try {\n success = document.execCommand('copy')\n if (success) {\n options?.onSuccess?.()\n } else {\n options?.onError?.(new Error('execCommand(\"copy\") returned false'))\n }\n } catch (error) {\n options?.onError?.(error)\n } finally {\n document.body.removeChild(textarea)\n }\n\n return success\n}","/*\n * @Description:\n * @Author: taiyang\n * @Date: 2026-05-15 15:01:40\n * @LastEditTime: 2026-05-15 16:02:45\n * @LastEditors: taiyang\n */\nexport interface DownloadOptions {\n filename?: string\n mimeType?: string\n}\n\nexport function downloadBlob(\n blob: Blob,\n options: DownloadOptions = {}\n): void {\n const { filename = 'download', mimeType } = options\n\n const downloadBlob = mimeType\n ? new Blob([blob], { type: mimeType })\n : blob\n\n const url = URL.createObjectURL(downloadBlob)\n triggerDownload(url, filename)\n URL.revokeObjectURL(url)\n}\n\nexport function downloadText(\n text: string,\n filename = 'download.txt'\n): void {\n const blob = new Blob([text], { type: 'text/plain;charset=utf-8' })\n downloadBlob(blob, { filename })\n}\n\nexport function downloadJSON(\n data: unknown,\n filename = 'download.json'\n): void {\n const text = JSON.stringify(data, null, 2)\n const blob = new Blob([text], { type: 'application/json;charset=utf-8' })\n downloadBlob(blob, { filename })\n}\n\nexport interface DownloadStreamOptions extends DownloadOptions {\n onProgress?: (loaded: number, total: number) => void\n onError?: (error: unknown) => void\n}\n\nexport async function downloadStream(\n response: Response,\n options: DownloadStreamOptions = {}\n): Promise<void> {\n const { filename = 'download', onProgress, onError } = options\n\n try {\n const contentLength = response.headers.get('content-length')\n const total = contentLength ? parseInt(contentLength, 10) : 0\n const reader = response.body?.getReader()\n\n if (!reader) {\n throw new Error('Response body is not readable')\n }\n\n const chunks: Uint8Array[] = []\n let loaded = 0\n\n while (true) {\n const { done, value } = await reader.read()\n if (done) break\n\n chunks.push(value)\n loaded += value.length\n onProgress?.(loaded, total)\n }\n\n const blob = new Blob(chunks as BlobPart[])\n downloadBlob(blob, { filename })\n } catch (error) {\n onError?.(error)\n throw error\n }\n}\n\nfunction triggerDownload(url: string, filename: string): void {\n const link = document.createElement('a')\n link.href = url\n link.download = filename\n link.style.display = 'none'\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n}","export function fileToBase64(file: File): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader()\n reader.onload = () => {\n const result = reader.result as string\n const base64 = result.split(',')[1] ?? result\n resolve(base64)\n }\n reader.onerror = reject\n reader.readAsDataURL(file)\n })\n}\n\nexport function base64ToBlob(\n base64: string,\n mimeType = 'application/octet-stream'\n): Blob {\n const byteCharacters = atob(base64)\n const byteNumbers = new Array(byteCharacters.length)\n\n for (let i = 0; i < byteCharacters.length; i++) {\n byteNumbers[i] = byteCharacters.charCodeAt(i)\n }\n\n const byteArray = new Uint8Array(byteNumbers)\n return new Blob([byteArray], { type: mimeType })\n}\n\nexport function getFileExtension(filename: string): string {\n const lastDot = filename.lastIndexOf('.')\n return lastDot === -1 ? '' : filename.slice(lastDot + 1).toLowerCase()\n}\n","export function deepClone<T>(obj: T): T {\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n if (obj instanceof Date) {\n return new Date(obj.getTime()) as unknown as T\n }\n\n if (obj instanceof Array) {\n return obj.map((item) => deepClone(item)) as unknown as T\n }\n\n if (obj instanceof Object) {\n const cloned = {} as Record<string, unknown>\n Object.keys(obj).forEach((key) => {\n cloned[key] = deepClone((obj as Record<string, unknown>)[key])\n })\n return cloned as T\n }\n\n throw new Error('Unable to copy object')\n}\n\nexport function deepMerge<T extends Record<string, unknown>>(\n target: T,\n ...sources: Array<Partial<Record<string, unknown>>>\n): T {\n if (!sources.length) return target\n\n const source = sources.shift()\n if (!source) return target\n\n for (const key in source) {\n if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {\n if (!target[key] || typeof target[key] !== 'object') {\n (target as Record<string, unknown>)[key] = {} as unknown\n }\n deepMerge(\n (target as Record<string, unknown>)[key] as Record<string, unknown>,\n source[key] as Record<string, unknown>\n )\n } else {\n (target as Record<string, unknown>)[key] = source[key] as unknown\n }\n }\n\n return deepMerge(target, ...sources)\n}\n\nexport function removeEmptyValues<T extends Record<string, unknown>>(\n obj: T,\n options: {\n removeNull?: boolean\n removeUndefined?: boolean\n removeEmptyString?: boolean\n removeEmptyArray?: boolean\n removeEmptyObject?: boolean\n } = {}\n): Partial<T> {\n const {\n removeNull = true,\n removeUndefined = true,\n removeEmptyString = false,\n removeEmptyArray = false,\n removeEmptyObject = false,\n } = options\n\n const result = {} as Partial<T>\n\n for (const key in obj) {\n const value = obj[key]\n\n if (removeUndefined && value === undefined) continue\n if (removeNull && value === null) continue\n if (removeEmptyString && value === '') continue\n if (removeEmptyArray && Array.isArray(value) && value.length === 0) continue\n if (removeEmptyObject && typeof value === 'object' && value !== null && !Array.isArray(value) && Object.keys(value).length === 0) continue\n\n result[key] = value as T[Extract<keyof T, string>]\n }\n\n return result\n}\n\nexport function pick<T extends Record<string, unknown>, K extends keyof T>(\n obj: T,\n keys: K[]\n): Pick<T, K> {\n const result = {} as Pick<T, K>\n\n keys.forEach((key) => {\n if (key in obj) {\n result[key] = obj[key]\n }\n })\n\n return result\n}\n\nexport function omit<T extends Record<string, unknown>, K extends keyof T>(\n obj: T,\n keys: K[]\n): Omit<T, K> {\n const result = { ...obj } as Omit<T, K>\n\n keys.forEach((key) => {\n delete (result as Record<string, unknown>)[key as string]\n })\n\n return result\n}\n\nexport function flatten(\n obj: Record<string, unknown>,\n prefix = '',\n result: Record<string, unknown> = {}\n): Record<string, unknown> {\n for (const key in obj) {\n const newKey = prefix ? `${prefix}.${key}` : key\n const value = obj[key]\n\n if (value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {\n flatten(value as Record<string, unknown>, newKey, result)\n } else {\n result[newKey] = value\n }\n }\n\n return result\n}\n\nexport function unflatten(\n obj: Record<string, unknown>\n): Record<string, unknown> {\n const result = {} as Record<string, unknown>\n\n for (const key in obj) {\n const keys = key.split('.')\n let current = result\n\n for (let i = 0; i < keys.length - 1; i++) {\n const k = keys[i]\n if (!(k in current)) {\n current[k] = {}\n }\n current = current[k] as Record<string, unknown>\n }\n\n current[keys[keys.length - 1]] = obj[key]\n }\n\n return result\n}","export function flattenArray<T>(\n arr: unknown[],\n depth = Infinity\n): T[] {\n const result: T[] = []\n\n for (const item of arr) {\n if (Array.isArray(item) && depth > 0) {\n result.push(...flattenArray<T>(item, depth - 1))\n } else {\n result.push(item as T)\n }\n }\n\n return result\n}\n\nexport function chunk<T>(arr: T[], size: number): T[][] {\n if (size <= 0) return []\n\n const result: T[][] = []\n for (let i = 0; i < arr.length; i += size) {\n result.push(arr.slice(i, i + size))\n }\n\n return result\n}\n\nexport function unique<T>(arr: T[]): T[] {\n return [...new Set(arr)]\n}\n\nexport function uniqueBy<T>(\n arr: T[],\n key: keyof T | ((item: T) => unknown)\n): T[] {\n const seen = new Set<unknown>()\n return arr.filter((item) => {\n const value = typeof key === 'function' ? key(item) : item[key]\n if (seen.has(value)) return false\n seen.add(value)\n return true\n })\n}\n\nexport function groupBy<T>(\n arr: T[],\n key: keyof T | ((item: T) => unknown)\n): Record<string, T[]> {\n const result: Record<string, T[]> = {}\n\n arr.forEach((item) => {\n const value = typeof key === 'function' ? key(item) : item[key]\n const groupKey = String(value)\n if (!result[groupKey]) {\n result[groupKey] = []\n }\n result[groupKey].push(item)\n })\n\n return result\n}\n\nexport function intersection<T>(arr1: T[], arr2: T[]): T[] {\n const set2 = new Set(arr2)\n return [...new Set(arr1)].filter((item) => set2.has(item))\n}\n\nexport function difference<T>(arr1: T[], arr2: T[]): T[] {\n const set2 = new Set(arr2)\n return [...new Set(arr1)].filter((item) => !set2.has(item))\n}\n\nexport function shuffle<T>(arr: T[]): T[] {\n const result = [...arr]\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1))\n ;[result[i], result[j]] = [result[j], result[i]]\n }\n return result\n}\n\nexport function sortBy<T>(\n arr: T[],\n key: keyof T | ((item: T) => unknown),\n order: 'asc' | 'desc' = 'asc'\n): T[] {\n const result = [...arr]\n return result.sort((a, b) => {\n const valueA = typeof key === 'function' ? key(a) : a[key]\n const valueB = typeof key === 'function' ? key(b) : b[key]\n\n if (valueA === valueB) return 0\n if (valueA == null) return order === 'asc' ? -1 : 1\n if (valueB == null) return order === 'asc' ? 1 : -1\n\n if (typeof valueA === 'string' && typeof valueB === 'string') {\n const comparison = valueA.localeCompare(valueB)\n return order === 'asc' ? comparison : -comparison\n }\n\n const numA = typeof valueA === 'number' ? valueA : 0\n const numB = typeof valueB === 'number' ? valueB : 0\n\n if (numA < numB) return order === 'asc' ? -1 : 1\n if (numA > numB) return order === 'asc' ? 1 : -1\n return 0\n })\n}\n\nexport function sum(arr: number[]): number {\n return arr.reduce((acc, val) => acc + val, 0)\n}\n\nexport function average(arr: number[]): number {\n if (arr.length === 0) return 0\n return sum(arr) / arr.length\n}\n\nexport function maxBy<T>(\n arr: T[],\n key: keyof T | ((item: T) => number)\n): T | undefined {\n if (arr.length === 0) return undefined\n\n return arr.reduce((max, item) => {\n const value = typeof key === 'function' ? key(item) : (item[key] as number)\n const maxValue = typeof key === 'function' ? key(max) : (max[key] as number)\n return value > maxValue ? item : max\n })\n}\n\nexport function minBy<T>(\n arr: T[],\n key: keyof T | ((item: T) => number)\n): T | undefined {\n if (arr.length === 0) return undefined\n\n return arr.reduce((min, item) => {\n const value = typeof key === 'function' ? key(item) : (item[key] as number)\n const minValue = typeof key === 'function' ? key(min) : (min[key] as number)\n return value < minValue ? item : min\n })\n}\n\nexport function moveItem<T>(\n arr: T[],\n fromIndex: number,\n toIndex: number\n): T[] {\n if (\n fromIndex < 0 ||\n fromIndex >= arr.length ||\n toIndex < 0 ||\n toIndex >= arr.length ||\n fromIndex === toIndex\n ) {\n return [...arr]\n }\n\n const result = [...arr]\n const [removed] = result.splice(fromIndex, 1)\n result.splice(toIndex, 0, removed)\n return result\n}\n\nexport function swapItems<T>(\n arr: T[],\n index1: number,\n index2: number\n): T[] {\n if (\n index1 < 0 ||\n index1 >= arr.length ||\n index2 < 0 ||\n index2 >= arr.length ||\n index1 === index2\n ) {\n return [...arr]\n }\n\n const result = [...arr]\n ;[result[index1], result[index2]] = [result[index2], result[index1]]\n return result\n}","export function isEmpty(str: unknown): boolean {\n if (str === null || str === undefined) return true\n if (typeof str !== 'string') return false\n return str.trim().length === 0\n}\n\nexport function isNotEmpty(str: unknown): boolean {\n return !isEmpty(str)\n}\n\nexport function capitalize(str: string): string {\n if (!str) return str\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n\nexport function uncapitalize(str: string): string {\n if (!str) return str\n return str.charAt(0).toLowerCase() + str.slice(1)\n}\n\nexport function camelCase(str: string): string {\n return str\n .replace(/[-_\\s]+(.)?/g, (_, char) => (char ? char.toUpperCase() : ''))\n .replace(/^[A-Z]/, (char) => char.toLowerCase())\n}\n\nexport function pascalCase(str: string): string {\n const camel = camelCase(str)\n return capitalize(camel)\n}\n\nexport function kebabCase(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_]+/g, '-')\n .toLowerCase()\n}\n\nexport function snakeCase(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, '$1_$2')\n .replace(/[\\s\\-]+/g, '_')\n .toLowerCase()\n}\n\nexport function truncate(\n str: string,\n maxLength: number,\n suffix = '...'\n): string {\n if (str.length <= maxLength) return str\n return str.slice(0, maxLength - suffix.length) + suffix\n}\n\nexport function generateUUID(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (char) => {\n const random = (Math.random() * 16) | 0\n const value = char === 'x' ? random : (random & 0x3) | 0x8\n return value.toString(16)\n })\n}\n\nexport function escapeHtml(str: string): string {\n const htmlEscapes: Record<string, string> = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n }\n return str.replace(/[&<>\"']/g, (char) => htmlEscapes[char])\n}\n\nexport function unescapeHtml(str: string): string {\n const htmlUnescapes: Record<string, string> = {\n '&amp;': '&',\n '&lt;': '<',\n '&gt;': '>',\n '&quot;': '\"',\n '&#39;': \"'\",\n }\n return str.replace(/&(?:amp|lt|gt|quot|#39);/g, (entity) => htmlUnescapes[entity])\n}\n\nexport function parseQueryString(url: string): Record<string, string> {\n const queryString = url.includes('?') ? url.split('?')[1] : url\n const params = new URLSearchParams(queryString)\n const result: Record<string, string> = {}\n\n params.forEach((value, key) => {\n result[key] = value\n })\n\n return result\n}\n\nexport function stringifyQueryString(\n params: Record<string, string | number | boolean | undefined | null>\n): string {\n const searchParams = new URLSearchParams()\n\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n searchParams.append(key, String(value))\n }\n })\n\n const queryString = searchParams.toString()\n return queryString ? `?${queryString}` : ''\n}\n\nexport function buildUrl(\n baseUrl: string,\n params: Record<string, string | number | boolean | undefined | null>\n): string {\n const queryString = stringifyQueryString(params)\n const separator = baseUrl.includes('?') ? '&' : queryString.replace('?', '?')\n return baseUrl + (baseUrl.includes('?') ? queryString.replace('?', '&') : queryString)\n}","export interface DebounceOptions {\n wait?: number\n leading?: boolean\n trailing?: boolean\n}\n\ntype AnyFunction = (...args: any[]) => any\n\nexport interface DebouncedFunc<T extends AnyFunction> {\n (...args: Parameters<T>): ReturnType<T> | undefined\n cancel: () => void\n flush: () => ReturnType<T> | undefined\n pending: () => boolean\n}\n\nexport function debounce<T extends AnyFunction>(\n func: T,\n options: DebounceOptions = {}\n): DebouncedFunc<T> {\n const {\n wait = 0,\n leading = false,\n trailing = true,\n } = options\n\n let timer: ReturnType<typeof setTimeout> | null = null\n let lastArgs: Parameters<T> | null = null\n let lastThis: unknown = null\n let result: ReturnType<T> | undefined\n\n function invokeFunc(): ReturnType<T> | undefined {\n const args = lastArgs as Parameters<T>\n const thisArg = lastThis\n\n lastArgs = null\n lastThis = null\n\n result = func.apply(thisArg, args) as ReturnType<T>\n return result\n }\n\n function debounced(this: unknown, ...args: Parameters<T>): ReturnType<T> | undefined {\n const shouldCallLeading = leading && timer === null\n\n lastArgs = args\n lastThis = this\n\n if (timer !== null) {\n clearTimeout(timer)\n }\n\n if (shouldCallLeading) {\n invokeFunc()\n }\n\n timer = setTimeout(() => {\n timer = null\n if (trailing && lastArgs) {\n invokeFunc()\n return\n }\n lastArgs = null\n lastThis = null\n }, wait)\n\n return result\n }\n\n debounced.cancel = function (): void {\n if (timer !== null) {\n clearTimeout(timer)\n }\n lastArgs = null\n lastThis = null\n timer = null\n }\n\n debounced.flush = function (): ReturnType<T> | undefined {\n if (timer === null) {\n return result\n }\n clearTimeout(timer)\n timer = null\n if (trailing && lastArgs) {\n return invokeFunc()\n }\n lastArgs = null\n lastThis = null\n return result\n }\n\n debounced.pending = function (): boolean {\n return timer !== null\n }\n\n return debounced as DebouncedFunc<T>\n}\n\nexport interface ThrottleOptions {\n wait?: number\n leading?: boolean\n trailing?: boolean\n}\n\nexport interface ThrottledFunc<T extends AnyFunction> {\n (...args: Parameters<T>): ReturnType<T> | undefined\n cancel: () => void\n flush: () => ReturnType<T> | undefined\n pending: () => boolean\n}\n\nexport function throttle<T extends AnyFunction>(\n func: T,\n options: ThrottleOptions = {}\n): ThrottledFunc<T> {\n const {\n wait = 0,\n leading = true,\n trailing = true,\n } = options\n\n let timer: ReturnType<typeof setTimeout> | null = null\n let lastArgs: Parameters<T> | null = null\n let lastThis: unknown = null\n let lastInvokeTime: number | null = null\n let result: ReturnType<T> | undefined\n\n function invokeFunc(time: number): ReturnType<T> | undefined {\n const args = lastArgs as Parameters<T>\n const thisArg = lastThis\n\n lastArgs = null\n lastThis = null\n lastInvokeTime = time\n result = func.apply(thisArg, args) as ReturnType<T>\n return result\n }\n\n function remainingWait(time: number): number {\n const timeSinceLastInvoke = time - (lastInvokeTime ?? 0)\n return wait - timeSinceLastInvoke\n }\n\n function startTimer(delay: number): void {\n timer = setTimeout(() => {\n timer = null\n if (trailing && lastArgs) {\n invokeFunc(Date.now())\n return\n }\n lastArgs = null\n lastThis = null\n }, delay)\n }\n\n function throttled(this: unknown, ...args: Parameters<T>): ReturnType<T> | undefined {\n const time = Date.now()\n\n lastArgs = args\n lastThis = this\n\n if (lastInvokeTime === null) {\n if (leading) {\n return invokeFunc(time)\n }\n lastInvokeTime = time\n }\n\n const waitRemaining = remainingWait(time)\n\n if (waitRemaining <= 0) {\n if (timer !== null) {\n clearTimeout(timer)\n timer = null\n }\n return invokeFunc(time)\n }\n\n if (timer === null && trailing) {\n startTimer(waitRemaining)\n }\n\n return result\n }\n\n throttled.cancel = function (): void {\n if (timer !== null) {\n clearTimeout(timer)\n }\n lastArgs = null\n lastThis = null\n lastInvokeTime = null\n timer = null\n }\n\n throttled.flush = function (): ReturnType<T> | undefined {\n if (timer === null) {\n return result\n }\n clearTimeout(timer)\n timer = null\n if (lastArgs) {\n return invokeFunc(Date.now())\n }\n return result\n }\n\n throttled.pending = function (): boolean {\n return timer !== null\n }\n\n return throttled as ThrottledFunc<T>\n}\n","export function get<T = any>(obj: any, path: string | string[], defaultValue?: T): T | undefined {\n if (obj == null) return defaultValue\n\n const keys = Array.isArray(path) ? path : path.split('.')\n\n let result = obj\n for (const key of keys) {\n if (result == null) {\n return defaultValue\n }\n result = result[key]\n }\n\n return result !== undefined ? result : defaultValue\n}"]}
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@szkj/utils",
3
+ "version": "0.0.1",
4
+ "license": "MIT",
5
+ "author": "taiyang",
6
+ "type": "module",
7
+ "main": "dist/index.cjs",
8
+ "module": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "sideEffects": false,
14
+ "publishConfig": {
15
+ "access": "public"
16
+ },
17
+ "exports": {
18
+ ".": {
19
+ "types": "./dist/index.d.ts",
20
+ "import": "./dist/index.js",
21
+ "require": "./dist/index.cjs"
22
+ }
23
+ },
24
+ "scripts": {
25
+ "dev": "tsup --watch",
26
+ "build": "tsup",
27
+ "test": "vitest"
28
+ },
29
+ "dependencies": {
30
+ "crypto-js": "^4.2.0",
31
+ "encryptlong": "^3.1.4",
32
+ "sm-crypto": "^0.4.0"
33
+ }
34
+ }