@asteby/storefront-react 0.25.0 → 0.26.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.
Files changed (54) hide show
  1. package/README.md +35 -2
  2. package/dist/account-server.cjs +128 -19
  3. package/dist/account-server.cjs.map +1 -1
  4. package/dist/account-server.d.cts +67 -4
  5. package/dist/account-server.d.ts +67 -4
  6. package/dist/account-server.js +125 -20
  7. package/dist/account-server.js.map +1 -1
  8. package/dist/account.cjs +252 -7
  9. package/dist/account.cjs.map +1 -1
  10. package/dist/account.css +91 -0
  11. package/dist/account.d.cts +130 -6
  12. package/dist/account.d.ts +130 -6
  13. package/dist/account.js +247 -8
  14. package/dist/account.js.map +1 -1
  15. package/dist/checkout.cjs +162 -8
  16. package/dist/checkout.cjs.map +1 -1
  17. package/dist/checkout.d.cts +104 -4
  18. package/dist/checkout.d.ts +104 -4
  19. package/dist/checkout.js +158 -10
  20. package/dist/checkout.js.map +1 -1
  21. package/dist/chunk-Z4C4LKXF.js +25 -0
  22. package/dist/chunk-Z4C4LKXF.js.map +1 -0
  23. package/dist/fiscal-server.cjs +27 -2
  24. package/dist/fiscal-server.cjs.map +1 -1
  25. package/dist/fiscal-server.d.cts +10 -1
  26. package/dist/fiscal-server.d.ts +10 -1
  27. package/dist/fiscal-server.js +26 -3
  28. package/dist/fiscal-server.js.map +1 -1
  29. package/dist/fit-key-B9sYQVwG.d.cts +49 -0
  30. package/dist/fit-key-B9sYQVwG.d.ts +49 -0
  31. package/dist/fitment.cjs +54 -9
  32. package/dist/fitment.cjs.map +1 -1
  33. package/dist/fitment.d.cts +20 -2
  34. package/dist/fitment.d.ts +20 -2
  35. package/dist/fitment.js +54 -10
  36. package/dist/fitment.js.map +1 -1
  37. package/dist/settings-types-jxFQFFqP.d.cts +77 -0
  38. package/dist/settings-types-jxFQFFqP.d.ts +77 -0
  39. package/dist/subjects-server.cjs +248 -0
  40. package/dist/subjects-server.cjs.map +1 -0
  41. package/dist/subjects-server.d.cts +130 -0
  42. package/dist/subjects-server.d.ts +130 -0
  43. package/dist/subjects-server.js +217 -0
  44. package/dist/subjects-server.js.map +1 -0
  45. package/dist/subjects.cjs +501 -0
  46. package/dist/subjects.cjs.map +1 -0
  47. package/dist/subjects.css +166 -0
  48. package/dist/subjects.d.cts +178 -0
  49. package/dist/subjects.d.ts +178 -0
  50. package/dist/subjects.js +465 -0
  51. package/dist/subjects.js.map +1 -0
  52. package/package.json +23 -2
  53. package/dist/types-D7pVK0GK.d.cts +0 -39
  54. package/dist/types-D7pVK0GK.d.ts +0 -39
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/account/account-auth.tsx","../src/account/post-purchase-prompt.tsx","../src/account/orders-messages.ts","../src/account/orders-ui.tsx","../src/account/order-lines.tsx","../src/account/progress.tsx","../src/account/order-list.tsx","../src/account/shipment.tsx","../src/account/invoices.tsx","../src/account/pending.tsx","../src/account/payment-method.ts","../src/account/refunds.tsx","../src/account/hooks.ts"],"names":["ES","EN","useRef","jsxs","jsx","Fragment","useState","useEffect","deriveProgress","deriveNextAction","isTestShipment","safeTrackingUrl","useId","useCallback"],"mappings":";;;;;;;;;;;;;AAqCA,IAAM,EAAA,GAA0B;AAAA,EAC9B,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,oBAAA;AAAA,IACP,QAAA,EAAU,kBAAA;AAAA,IACV,MAAA,EAAQ,oBAAA;AAAA,IACR,WAAA,EAAa,yBAAA;AAAA,IACb,GAAA,EAAK,sBAAA;AAAA,IACL,MAAA,EAAQ,yBAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,KAAA,EAAO,uBAAA;AAAA,EACP,QAAA,EAAU,eAAA;AAAA,EACV,WAAA,EAAa,qBAAA;AAAA,EACb,YAAA,EAAc,4BAAA;AAAA,EACd,SAAA,EAAW,QAAA;AAAA,EACX,QAAA,EAAU,UAAA;AAAA,EACV,IAAA,EAAM,WAAA;AAAA,EACN,UAAA,EAAY,0DAAA;AAAA,EACZ,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,QAAA;AAAA,IACP,QAAA,EAAU,cAAA;AAAA,IACV,MAAA,EAAQ,WAAA;AAAA,IACR,WAAA,EAAa,uBAAA;AAAA,IACb,GAAA,EAAK,QAAA;AAAA,IACL,MAAA,EAAQ,uBAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,MAAA,EAAQ,oBAAA;AAAA,EACR,UAAA,EAAY,iCAAA;AAAA,EACZ,YAAA,EAAc,kBAAA;AAAA,EACd,SAAA,EAAW,iBAAA;AAAA,EACX,OAAA,EAAS,oCAAA;AAAA,EACT,WAAA,EAAa,mCAAA;AAAA,EACb,gBAAA,EAAkB,oDAAA;AAAA,EAClB,MAAA,EAAQ;AAAA,IACN,mBAAA,EAAqB,4CAAA;AAAA,IACrB,YAAA,EAAc,8CAAA;AAAA,IACd,WAAA,EAAa,0EAAA;AAAA,IACb,YAAA,EAAc,mEAAA;AAAA,IACd,UAAA,EAAY,2CAAA;AAAA,IACZ,WAAA,EAAa,4DAAA;AAAA,IACb,mBAAA,EAAqB,qIAAA;AAAA,IACrB,WAAA,EAAa;AAAA;AAEjB,CAAA;AAEA,IAAM,EAAA,GAA0B;AAAA,EAC9B,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,mBAAA;AAAA,IACV,MAAA,EAAQ,oBAAA;AAAA,IACR,WAAA,EAAa,qBAAA;AAAA,IACb,GAAA,EAAK,iBAAA;AAAA,IACL,MAAA,EAAQ,qBAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,KAAA,EAAO,OAAA;AAAA,EACP,QAAA,EAAU,UAAA;AAAA,EACV,WAAA,EAAa,cAAA;AAAA,EACb,YAAA,EAAc,gCAAA;AAAA,EACd,SAAA,EAAW,YAAA;AAAA,EACX,QAAA,EAAU,WAAA;AAAA,EACV,IAAA,EAAM,MAAA;AAAA,EACN,UAAA,EAAY,kDAAA;AAAA,EACZ,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,gBAAA;AAAA,IACV,MAAA,EAAQ,SAAA;AAAA,IACR,WAAA,EAAa,mBAAA;AAAA,IACb,GAAA,EAAK,SAAA;AAAA,IACL,MAAA,EAAQ,mBAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,MAAA,EAAQ,aAAA;AAAA,EACR,UAAA,EAAY,uBAAA;AAAA,EACZ,YAAA,EAAc,mBAAA;AAAA,EACd,SAAA,EAAW,2BAAA;AAAA,EACX,OAAA,EAAS,8BAAA;AAAA,EACT,WAAA,EAAa,0BAAA;AAAA,EACb,gBAAA,EAAkB,mDAAA;AAAA,EAClB,MAAA,EAAQ;AAAA,IACN,mBAAA,EAAqB,sCAAA;AAAA,IACrB,YAAA,EAAc,uCAAA;AAAA,IACd,WAAA,EAAa,4EAAA;AAAA,IACb,YAAA,EAAc,sDAAA;AAAA,IACd,UAAA,EAAY,kCAAA;AAAA,IACZ,WAAA,EAAa,wDAAA;AAAA,IACb,mBAAA,EAAqB,0IAAA;AAAA,IACrB,WAAA,EAAa;AAAA;AAEjB,CAAA;AAGO,SAAS,mBAAA,CAAoB,QAAwB,SAAA,EAA0E;AACpI,EAAA,MAAM,IAAA,GAAA,CAAQ,UAAU,OAAA,EAAS,WAAA,GAAc,UAAA,CAAW,IAAI,IAAI,EAAA,GAAK,EAAA;AACvE,EAAA,IAAI,CAAC,WAAW,OAAO,IAAA;AACvB,EAAA,OAAO;AAAA,IACL,GAAG,IAAA;AAAA,IACH,GAAI,SAAA;AAAA,IACJ,QAAQ,EAAE,GAAG,KAAK,MAAA,EAAQ,GAAG,UAAU,MAAA,EAAO;AAAA,IAC9C,QAAQ,EAAE,GAAG,KAAK,MAAA,EAAQ,GAAG,UAAU,MAAA,EAAO;AAAA,IAC9C,QAAQ,EAAE,GAAG,KAAK,MAAA,EAAQ,GAAG,UAAU,MAAA;AAAO,GAChD;AACF;AA0CA,IAAM,SAAA,GAAY,CAAC,IAAA,EAA4B,WAAA,KAC7C,WAAA,KAAgB,IAAA,CAAK,QAAA,GAAW,OAAA,GAAU,IAAA,CAAK,YAAA,CAAa,QAAA,CAAS,OAAO,IAAI,WAAA,GAAc,OAAA,CAAA;AAMzF,SAAS,YAAY,EAAE,YAAA,EAAc,MAAM,IAAA,EAAM,OAAA,GAAU,OAAO,WAAA,EAAa,IAAA,EAAM,UAAU,MAAA,EAAQ,MAAA,EAAQ,QAAQ,QAAA,EAAU,UAAA,EAAY,KAAK,EAAC,EAAG,QAAO,EAAqB;AACvL,EAAA,MAAM,CAAA,GAAI,mBAAA,CAAoB,MAAA,EAAQ,QAAQ,CAAA;AAC9C,EAAA,MAAM,aAAa,YAAA,CAAa,QAAA;AAChC,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,YAAA,CAAa,QAAA,CAAS,OAAO,CAAA;AACxD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,QAAA,CAA0B,MAAM,IAAA,EAAM,IAAA,IAAQ,SAAA,CAAU,YAAA,EAAc,WAAW,CAAC,CAAA;AAC1G,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,IAAI,QAAA,CAAS,IAAA,EAAM,SAAS,EAAE,CAAA;AACpD,EAAA,MAAM,GAAA,GAAM,OAAwB,IAAI,CAAA;AACxC,EAAA,MAAM,YAAA,GAAe,MAAM,KAAA,EAAO,KAAA,GAAQ,CAAC,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,GAAI,IAAA;AAC/D,EAAA,MAAM,SAAA,GAAY,MAAM,KAAA,GAAQ,CAAA,CAAE,OAAO,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,GAAI,IAAA;AAC5D,EAAA,MAAM,CAAA,GAAI,cAAA,CAAe,GAAA,EAAK,EAAE,GAAI,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAC,EAAI,YAAA,EAAc,cAAA,EAAgB,MAAM,KAAA,EAAO,KAAA,IAAS,SAAA,GAAY,EAAE,CAAC,IAAA,CAAK,KAAA,CAAM,KAAK,GAAG,SAAA,EAAU,GAAI,IAAA,EAAM,CAAA;AAGzK,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,IAAA,EAAM,IAAA,EAAM,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA;AACjC,IAAA,IAAI,IAAA,EAAM,KAAA,EAAO,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA;AAAA,EACtC,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,EAAA,GAAK,CAAC,EAAA,KAAwB;AAClC,IAAA,CAAA,CAAE,KAAA,EAAM;AACR,IAAA,OAAA,CAAQ,EAAE,CAAA;AAAA,EACZ,CAAA;AACA,EAAA,MAAM,UAAA,GAAa,EAAE,UAAA,EAAY,EAAA,CAAG,KAAA,EAAO,GAAI,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAC,EAAG;AACzE,EAAA,MAAM,UAAA,mBACJ,GAAA,CAAC,aAAA,EAAA,EAAe,GAAG,UAAA,EAAY,IAAA,EAAK,OAAA,EAAQ,IAAA,EAAK,OAAA,EAAQ,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,cAAa,OAAA,EAAQ,SAAA,EAAU,OAAA,EAAQ,KAAA,EAAO,KAAA,EAAO,QAAA,EAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,aAAA,CAAc,KAAK,CAAA,EAAG,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,SAAS,IAAA,EAAM,CAAA;AAEjN,EAAA,MAAM,SAAA,uBACH,aAAA,EAAA,EAAe,GAAG,YAAY,IAAA,EAAK,MAAA,EAAO,OAAO,CAAA,CAAE,IAAA,EAAM,cAAa,eAAA,EAAgB,SAAA,EAAU,WAAU,OAAA,EAAQ,QAAA,EAAS,OAAO,CAAA,CAAE,MAAA,CAAO,QAAQ,IAAA,EAAM,CAAA;AAE5J,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,EAAe,YAAA,EAAsB,WAAA,qBAC1D,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACE,GAAG,UAAA;AAAA,MACJ,IAAA,EAAK,UAAA;AAAA,MACL,IAAA,EAAK,UAAA;AAAA,MACL,KAAA;AAAA,MACA,YAAA;AAAA,MACA,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,QAAA,IAAY,IAAA;AAAA,MAC3B,GAAI,WAAA,GAAc,EAAE,SAAA,EAAW,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK,IAAA,EAAM,CAAA,CAAE,YAAA,EAAa,GAAI;AAAC;AAAA,GAChF;AAEF,EAAA,MAAM,OAAO,CAAC,EAAA,EAAqB,yBACjC,GAAA,CAAC,QAAA,EAAA,EAAO,MAAK,QAAA,EAAS,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,wBAAsB,EAAA,EAAI,OAAA,EAAS,MAAM,EAAA,CAAG,EAAE,GACrF,QAAA,EAAA,IAAA,EACH,CAAA;AAGF,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI,KAAA,GAAmB,IAAA;AACvB,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,UAAA;AACH,MAAA,IAAA,mBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,aAAA,EAAA,EAAe,GAAG,UAAA,EAAY,IAAA,EAAK,YAAA,EAAa,KAAA,EAAO,CAAA,CAAE,SAAA,EAAW,YAAA,EAAa,YAAA,EAAa,QAAA,EAAQ,IAAA,EAAC,CAAA;AAAA,wBACxG,GAAA,CAAC,aAAA,EAAA,EAAe,GAAG,UAAA,EAAY,IAAA,EAAK,WAAA,EAAY,KAAA,EAAO,CAAA,CAAE,QAAA,EAAU,YAAA,EAAa,aAAA,EAAc,QAAA,EAAQ,IAAA,EAAC,CAAA;AAAA,QACtG,UAAA;AAAA,QACA,aAAA,CAAc,CAAA,CAAE,QAAA,EAAU,cAAA,EAAgB,IAAI;AAAA,OAAA,EACjD,CAAA;AAEF,MAAA,KAAA,GAAQ,IAAA,CAAK,OAAA,EAAS,CAAA,CAAE,SAAS,CAAA;AACjC,MAAA;AAAA,IACF,KAAK,QAAA;AAAA,IACL,KAAK,KAAA;AACH,MAAA,IAAA,mBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,wBAAA,EAAsB,IAAA,EAC5C,QAAA,EAAA,CAAA,CAAE,UAAA,CAAW,OAAA,CAAQ,SAAA,EAAW,KAAK,CAAA,EACxC,CAAA;AAAA,4BACC,OAAA,EAAA,EAAM,IAAA,EAAK,UAAS,IAAA,EAAK,OAAA,EAAQ,OAAO,KAAA,EAAO,CAAA;AAAA,QAC/C;AAAA,OAAA,EACH,CAAA;AAEF,MAAA,KAAA,mBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,IAAA,KAAS,wBACR,GAAA,CAAC,QAAA,EAAA,EAAO,MAAK,QAAA,EAAS,IAAA,EAAK,UAAS,KAAA,EAAM,aAAA,EAAc,cAAA,EAAc,IAAA,EAAC,WAAW,EAAA,CAAG,IAAA,EAAM,wBAAqB,QAAA,EAC7G,QAAA,EAAA,CAAA,CAAE,QACL,CAAA,GACE,IAAA;AAAA,QACH,IAAA,CAAK,OAAA,EAAS,CAAA,CAAE,WAAW;AAAA,OAAA,EAC9B,CAAA;AAEF,MAAA;AAAA,IACF,KAAK,WAAA;AAAA,IACL,KAAK,QAAA;AACH,MAAA,IAAA,GAAO,UAAA;AACP,MAAA,KAAA,GAAQ,IAAA,CAAK,OAAA,EAAS,CAAA,CAAE,WAAW,CAAA;AACnC,MAAA;AAAA,IACF,KAAK,OAAA;AACH,MAAA,IAAA,mBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,wBAAA,EAAsB,IAAA,EAC5C,QAAA,EAAA,CAAA,CAAE,UAAA,CAAW,OAAA,CAAQ,SAAA,EAAW,KAAK,CAAA,EACxC,CAAA;AAAA,4BACC,OAAA,EAAA,EAAM,IAAA,EAAK,UAAS,IAAA,EAAK,OAAA,EAAQ,OAAO,KAAA,EAAO,CAAA;AAAA,QAC/C,SAAA;AAAA,QACA,aAAA,CAAc,CAAA,CAAE,WAAA,EAAa,cAAA,EAAgB,IAAI;AAAA,OAAA,EACpD,CAAA;AAEF,MAAA,KAAA,GAAQ,IAAA,CAAK,OAAA,EAAS,CAAA,CAAE,WAAW,CAAA;AACnC,MAAA;AAAA,IACF;AACE,MAAA,IAAA,mBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,UAAA;AAAA,QACA,aAAA,CAAc,CAAA,CAAE,QAAA,EAAU,kBAAA,EAAoB,KAAK;AAAA,OAAA,EACtD,CAAA;AAEF,MAAA,KAAA,mBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,KAAA,GAAQ,IAAA,CAAK,QAAA,EAAU,CAAA,CAAE,UAAU,CAAA,GAAI,IAAA;AAAA,QACvC,IAAA,CAAK,UAAA,EAAY,CAAA,CAAE,YAAY,CAAA;AAAA,QAC/B,KAAA,GAAQ,IAAA,CAAK,WAAA,EAAa,CAAA,CAAE,OAAO,CAAA,GAAI;AAAA,OAAA,EAC1C,CAAA;AAAA;AAIN,EAAA,MAAM,SAAS,EAAE,KAAA,EAAO,OAAA,EAAS,QAAA,EAAU,YAAY,MAAA,EAAQ,QAAA,EAAU,WAAA,EAAa,aAAA,EAAe,KAAK,WAAA,EAAa,MAAA,EAAQ,UAAU,KAAA,EAAO,OAAA,GAAU,IAAI,CAAA;AAE9J,EAAA,MAAM,SAAA,GAAY,IAAA,KAAS,OAAA,IAAW,IAAA,KAAS,UAAA,IAAc,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,OAAA,IAAW,IAAA,KAAS,QAAA,GAAW,UAAA,GAAa,KAAA;AACvI,EAAA,MAAM,WAAA,GAAc,CAAC,IAAA,EAAM,KAAA,EAAO,KAAA;AAClC,EAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,IAAI,CAAA;AAC3B,EAAA,IAAI,CAAC,SAAA,IAAa,CAAC,UAAA,IAAc,CAAC,KAAA,EAAO;AACvC,IAAA,uBACE,GAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,wBAAoB,IAAA,EAAC,sBAAA,EAAqB,aAAA,EACrE,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,MAAA,EAAQ,IAAA,EAAK,QAAA,EAC3B,QAAA,EAAA,YAAA,CAAa,kBAAA,KAAuB,eAAA,GAAkB,EAAE,MAAA,CAAO,mBAAA,GAAsB,CAAA,CAAE,gBAAA,EAC1F,CAAA,EACF,CAAA;AAAA,EAEJ;AACA,EAAA,uBACE,IAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,wBAAoB,IAAA,EAAC,sBAAA,EAAsB,IAAA,EAAM,iBAAA,EAAgB,kBAAA,EAC3F,QAAA,EAAA;AAAA,IAAA,MAAA;AAAA,wBACA,IAAA,EAAA,EAAG,EAAA,EAAG,oBAAmB,SAAA,EAAW,EAAA,CAAG,OACrC,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,yBACC,OAAA,EAAA,EAAQ,GAAA,EAAmB,MAAA,EAAO,MAAA,EAAQ,GAAI,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAC,EAAI,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,wBAAoB,IAAA,EAChH,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,CAAA,CAAE,OAAA,EAAS,QAAA,EAAU,CAAA,CAAE,UAAA,EAAa,GAAI,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAC,EAAI,CAAA;AAAA,MACvF,SAAA,IAAa,WAAA,mBACZ,GAAA,CAAC,GAAA,EAAA,EAAE,MAAK,OAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,uBAAA,EAAuB,IAAA,CAAM,KAAA,CAAO,IAAA,EACtE,qBACH,CAAA,GACE,IAAA;AAAA,MACH,IAAA,uBAAQ,OAAA,EAAA,EAAM,IAAA,EAAK,UAAS,IAAA,EAAK,MAAA,EAAO,KAAA,EAAO,IAAA,EAAM,CAAA,GAAK,IAAA;AAAA,MAC1D,IAAA;AAAA,sBACD,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,OAAA,EACjB,8BAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,IAAA,EAAK,QAAA,EAAS,KAAA,EAAO,QAAQ,QAAA,EAAU,OAAA,EAAS,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,wBAAA,EAAsB,MAC/G,QAAA,EAAA,CAAA,CAAE,MAAA,CAAO,IAAI,CAAA,EAChB,CAAA,EACF,CAAA;AAAA,0BACC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,KAAA,EAAO,uBAAA,EAAqB,MAC5C,QAAA,EAAA,KAAA,EACH;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AChTA,IAAMA,GAAAA,GAAwC;AAAA,EAC5C,KAAA,EAAO,sCAAA;AAAA,EACP,OAAA,EAAS,kKAAA;AAAA,EACT,YAAA,EAAc,sEAAA;AAAA,EACd,UAAA,EAAY,qBAAA;AAAA,EACZ,QAAA,EAAU,eAAA;AAAA,EACV,YAAA,EAAc,4BAAA;AAAA,EACd,IAAA,EAAM,WAAA;AAAA,EACN,UAAA,EAAY,0DAAA;AAAA,EACZ,MAAA,EAAQ,cAAA;AAAA,EACR,SAAA,EAAW,uBAAA;AAAA,EACX,UAAA,EAAY,WAAA;AAAA,EACZ,QAAA,EAAU,4EAAA;AAAA,EACV,SAAA,EAAW,iBAAA;AAAA,EACX,MAAA,EAAQ;AAAA,IACN,mBAAA,EAAqB,4CAAA;AAAA,IACrB,YAAA,EAAc,8CAAA;AAAA,IACd,WAAA,EAAa,iEAAA;AAAA,IACb,YAAA,EAAc,mEAAA;AAAA,IACd,UAAA,EAAY,2CAAA;AAAA,IACZ,WAAA,EAAa,iDAAA;AAAA,IACb,mBAAA,EAAqB,sGAAA;AAAA,IACrB,WAAA,EAAa;AAAA;AAEjB,CAAA;AAEA,IAAMC,GAAAA,GAAwC;AAAA,EAC5C,KAAA,EAAO,0CAAA;AAAA,EACP,OAAA,EAAS,qJAAA;AAAA,EACT,YAAA,EAAc,oDAAA;AAAA,EACd,UAAA,EAAY,qBAAA;AAAA,EACZ,QAAA,EAAU,UAAA;AAAA,EACV,YAAA,EAAc,gCAAA;AAAA,EACd,IAAA,EAAM,MAAA;AAAA,EACN,UAAA,EAAY,kDAAA;AAAA,EACZ,MAAA,EAAQ,gBAAA;AAAA,EACR,SAAA,EAAW,iBAAA;AAAA,EACX,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,kFAAA;AAAA,EACV,SAAA,EAAW,2BAAA;AAAA,EACX,MAAA,EAAQ;AAAA,IACN,mBAAA,EAAqB,sCAAA;AAAA,IACrB,YAAA,EAAc,uCAAA;AAAA,IACd,WAAA,EAAa,uEAAA;AAAA,IACb,YAAA,EAAc,sDAAA;AAAA,IACd,UAAA,EAAY,kCAAA;AAAA,IACZ,WAAA,EAAa,wDAAA;AAAA,IACb,mBAAA,EAAqB,gGAAA;AAAA,IACrB,WAAA,EAAa;AAAA;AAEjB,CAAA;AAKO,SAAS,iCAAA,CAAkC,QAAwB,SAAA,EAAsG;AAC9K,EAAA,MAAM,IAAA,GAAA,CAAQ,UAAU,OAAA,EAAS,WAAA,GAAc,UAAA,CAAW,IAAI,IAAIA,GAAAA,GAAKD,GAAAA;AACvE,EAAA,IAAI,CAAC,WAAW,OAAO,IAAA;AACvB,EAAA,OAAO,EAAE,GAAG,IAAA,EAAM,GAAI,SAAA,EAA0D,MAAA,EAAQ,EAAE,GAAG,IAAA,CAAK,MAAA,EAAQ,GAAG,SAAA,CAAU,QAAO,EAAE;AAClI;AAgCA,IAAM,UAAA,GAAa,CAAC,CAAA,KAA8C,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,CAAE,MAAA,IAAU,GAAA,IAAO,4BAAA,CAA6B,IAAA,CAAK,CAAA,CAAE,MAAM,CAAA;AAKjJ,SAAS,yBAAA,CAA0B;AAAA,EACxC,KAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,MAAM,OAAA,GAAU,MAAA;AAAA,EAChB,MAAA;AAAA,EACA,YAAA,GAAe,CAAA;AAAA,EACf,SAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA,EAAY,KAAK,EAAC;AAAA,EAClB;AACF,CAAA,EAAmC;AACjC,EAAA,MAAM,CAAA,GAAI,iCAAA,CAAkC,MAAA,EAAQ,QAAQ,CAAA;AAC5D,EAAA,MAAM,GAAA,GAAME,OAAwB,IAAI,CAAA;AACxC,EAAA,MAAM,aAAa,YAAA,CAAa,QAAA;AAChC,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,YAAA,CAAa,QAAA,CAAS,OAAO,CAAA;AACxD,EAAA,MAAM,SAAA,GAAY,MAAM,KAAA,GAAQ,CAAA,CAAE,OAAO,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,GAAI,IAAA;AAC5D,EAAA,MAAM,IAAI,cAAA,CAAe,GAAA,EAAK,EAAE,GAAI,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAC,EAAI,cAAc,IAAA,EAAM,KAAA,EAAO,UAAU,MAAA,IAAU,IAAA,EAAM,OAAO,KAAA,KAAU,UAAA,GAAa,CAAC,IAAA,CAAK,MAAM,KAAK,CAAA,GAAI,MAAM,cAAA,EAAgB,IAAA,EAAM,OAAO,KAAA,IAAS,SAAA,GAAY,EAAE,CAAC,KAAK,KAAA,CAAM,KAAK,GAAG,SAAA,EAAU,GAAI,MAAM,CAAA;AACzQ,EAAA,IAAI,CAAC,WAAW,KAAK,CAAA,IAAM,CAAC,UAAA,IAAc,CAAC,OAAQ,OAAO,IAAA;AAE1D,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,IAAA,EAAK,CAAE,WAAA,EAAY;AACzC,EAAA,MAAM,IAAA,GAAO,MAAM,IAAA,KAAS,QAAA,IAAY,MAAM,IAAA,KAAS,KAAA,GAAQ,KAAK,IAAA,GAAO,IAAA;AAC3E,EAAA,MAAM,IAAA,GAAO,IAAA,KAAS,UAAA,GAAa,UAAA,GAAa,aAAA,CAAA;AAChD,EAAA,MAAM,MAAA,GAAS,SAAS,QAAA,GAAW,QAAA,GAAW,SAAS,KAAA,GAAQ,WAAA,GAAc,aAAa,UAAA,GAAa,aAAA;AACvG,EAAA,MAAM,KAAA,GAAQ,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,KAAA,GAAQ,CAAA,CAAE,UAAA,GAAa,IAAA,KAAS,aAAA,GAAgB,CAAA,CAAE,SAAA,GAAY,CAAA,CAAE,MAAA;AAC5G,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,MAAM,UAAA,GAAa,EAAE,UAAA,EAAY,EAAA,CAAG,KAAA,EAAO,GAAI,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAC,EAAG;AAEzE,EAAA,MAAM,SAAA,GAAY,aAAa,EAAE,IAAA,EAAM,OAAO,KAAA,KAAU,MAAA,IAAU,IAAA,EAAM,KAAA,EAAO,KAAA,KAAU,UAAA,CAAA;AAEzF,EAAA,MAAM,OAAA,GAAA,CAAW,aAAa,kBAAA,GAAqB,CAAA,CAAE,UAAU,CAAA,CAAE,YAAA,EAAc,OAAA,CAAQ,SAAA,EAAW,OAAO,CAAA;AAEzG,EAAA,uBACEC,IAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,aAAA,EAAW,IAAA,EAAC,kBAAA,EAAkB,IAAA,EAAM,iBAAA,EAAgB,cAAA,EAC/E,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,WAAQ,EAAA,EAAG,cAAA,EAAe,WAAW,EAAA,CAAG,KAAA,EACtC,YAAE,KAAA,EACL,CAAA;AAAA,oBACAA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,IAAA,EAAM,qBAAA,EAAmB,MACvC,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,oBACAD,IAAAA,CAAC,OAAA,EAAA,EAAQ,GAAA,EAAmB,MAAA,EAAO,QAAQ,GAAI,MAAA,GAAS,EAAE,MAAA,KAAW,EAAC,EAAI,WAAW,EAAA,CAAG,IAAA,EAAM,oBAAgB,IAAA,EAC5G,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,CAAA,CAAE,SAAS,QAAA,EAAU,CAAA,CAAE,UAAA,EAAa,GAAI,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAC,EAAI,CAAA;AAAA,MACvF,SAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,MAAK,OAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,mBAAA,EAAmB,IAAA,CAAM,KAAA,CAAO,IAAA,EAClE,qBACH,CAAA,GACE,IAAA;AAAA,sBACJA,IAAC,OAAA,EAAA,EAAM,IAAA,EAAK,UAAS,IAAA,EAAK,OAAA,EAAQ,OAAO,OAAA,EAAS,CAAA;AAAA,MACjD,IAAA,mBAAOA,GAAAA,CAAC,OAAA,EAAA,EAAM,IAAA,EAAK,UAAS,IAAA,EAAK,MAAA,EAAO,KAAA,EAAO,IAAA,EAAM,CAAA,GAAK,IAAA;AAAA,sBAC3DA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,mBAAA,EAAiB,IAAA,EACtC,QAAA,EAAA,CAAA,CAAE,UAAA,CAAW,OAAA,CAAQ,SAAA,EAAW,OAAO,CAAA,EAC1C,CAAA;AAAA,MACC,IAAA,mBACCD,IAAAA,CAAAE,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,QAAQ,IAAA,EAAK,QAAA,EAAS,oBAAA,EAAkB,IAAA,EACtD,QAAA,EAAA,CAAA,CAAE,UAAA,CAAW,OAAA,CAAQ,SAAA,EAAW,OAAO,CAAA,EAC1C,CAAA;AAAA,wBACAA,IAAC,aAAA,EAAA,EAAe,GAAG,YAAY,IAAA,EAAK,MAAA,EAAO,OAAO,CAAA,CAAE,IAAA,EAAM,cAAa,eAAA,EAAgB,SAAA,EAAU,WAAU,OAAA,EAAQ,QAAA,EAAS,OAAO,CAAA,CAAE,MAAA,CAAO,QAAQ,IAAA,EAAM;AAAA,OAAA,EAC5J,CAAA,GACE,UAAA,mBACFA,GAAAA,CAAC,aAAA,EAAA,EAAe,GAAG,UAAA,EAAY,IAAA,EAAK,UAAA,EAAW,IAAA,EAAK,UAAA,EAAW,KAAA,EAAO,CAAA,CAAE,QAAA,EAAU,YAAA,EAAa,cAAA,EAAe,SAAA,EAAW,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK,IAAA,EAAM,CAAA,CAAE,YAAA,EAAc,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,QAAA,IAAY,IAAA,EAAM,CAAA,GACnM,IAAA;AAAA,sBACJA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,OAAA,EACjB,QAAA,kBAAAA,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,MAAK,QAAA,EAAS,KAAA,EAAO,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,SAAA,EAAW,GAAG,MAAA,EAAQ,oBAAA,EAAkB,IAAA,EAC3G,QAAA,EAAA,KAAA,EACH,CAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBACAD,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,IAAA,EAAM,oBAAgB,IAAA,EACpC,QAAA,EAAA;AAAA,MAAA,CAAA,CAAE,QAAA;AAAA,MACF,SAAA,mBACCA,IAAAA,CAAAE,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,GAAA;AAAA,wBACDD,GAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAM,SAAA,EAAW,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,mBAAA,EAAiB,IAAA,EACtD,QAAA,EAAA,CAAA,CAAE,SAAA,EACL;AAAA,OAAA,EACF,CAAA,GACE;AAAA,KAAA,EACN,CAAA;AAAA,IACC;AAAA,GAAA,EACH,CAAA;AAEJ;;;ACnNA,IAAMJ,GAAAA,GAAK;AAAA;AAAA,EAET,cAAA,EAAgB,iBAAA;AAAA,EAChB,cAAA,EAAgB,qBAAA;AAAA,EAChB,aAAA,EAAe,OAAA;AAAA,EACf,YAAA,EAAc,YAAA;AAAA,EACd,iBAAA,EAAmB,qBAAA;AAAA,EACnB,mBAAA,EAAqB,sBAAA;AAAA,EACrB,aAAA,EAAe,yBAAA;AAAA,EACf,qBAAA,EAAuB,cAAA;AAAA,EACvB,iBAAA,EAAmB,aAAA;AAAA,EACnB,wBAAA,EAA0B,wBAAA;AAAA,EAC1B,oBAAA,EAAsB,cAAA;AAAA,EACtB,cAAA,EAAgB,6BAAA;AAAA,EAChB,iBAAA,EAAmB,aAAA;AAAA,EACnB,eAAA,EAAiB,sBAAA;AAAA,EACjB,gBAAA,EAAkB,oBAAA;AAAA,EAClB,mBAAA,EAAqB,gBAAA;AAAA,EACrB,aAAA,EAAe,8DAAA;AAAA,EACf,aAAA,EAAe,YAAA;AAAA,EACf,kBAAA,EAAoB,0BAAA;AAAA,EACpB,iBAAA,EAAmB,0EAAA;AAAA,EACnB,kBAAA,EAAoB,+EAAA;AAAA;AAAA,EAEpB,uBAAA,EAAyB,gBAAA;AAAA,EACzB,YAAA,EAAc,QAAA;AAAA,EACd,iBAAA,EAAmB,mBAAA;AAAA,EACnB,wBAAA,EAA0B,oBAAA;AAAA,EAC1B,eAAA,EAAiB,SAAA;AAAA,EACjB,kBAAA,EAAoB,WAAA;AAAA,EACpB,wBAAA,EAA0B,YAAA;AAAA,EAC1B,iBAAA,EAAmB,WAAA;AAAA,EACnB,iBAAA,EAAmB,WAAA;AAAA,EACnB,gBAAA,EAAkB,aAAA;AAAA,EAClB,eAAA,EAAiB,YAAA;AAAA;AAAA,EAEjB,gBAAA,EAAkB,qBAAA;AAAA,EAClB,WAAA,EAAa,QAAA;AAAA,EACb,gBAAA,EAAkB,mBAAA;AAAA,EAClB,cAAA,EAAgB,SAAA;AAAA,EAChB,iBAAA,EAAmB,WAAA;AAAA,EACnB,uBAAA,EAAyB,oBAAA;AAAA,EACzB,gBAAA,EAAkB,WAAA;AAAA,EAClB,cAAA,EAAgB,gBAAA;AAAA,EAChB,gBAAA,EAAkB,YAAA;AAAA,EAClB,mBAAA,EAAqB,aAAA;AAAA,EACrB,mBAAA,EAAqB,WAAA;AAAA,EACrB,mBAAA,EAAqB,gBAAA;AAAA,EACrB,4BAAA,EAA8B,0EAAA;AAAA,EAC9B,kBAAA,EAAoB,qFAAA;AAAA,EACpB,cAAA,EAAgB,4DAAA;AAAA,EAChB,wBAAA,EAA0B,wDAAA;AAAA,EAC1B,iBAAA,EAAmB,uDAAA;AAAA,EACnB,oBAAA,EAAsB,4BAAA;AAAA,EACtB,mBAAA,EAAqB,8BAAA;AAAA;AAAA,EAErB,YAAA,EAAc,aAAA;AAAA,EACd,cAAA,EAAgB,mBAAA;AAAA,EAChB,eAAA,EAAiB,qBAAA;AAAA,EACjB,yBAAA,EAA2B,mBAAA;AAAA,EAC3B,wBAAA,EAA0B,mBAAA;AAAA,EAC1B,6BAAA,EAA+B,kCAAA;AAAA,EAC/B,sBAAA,EAAwB,uBAAA;AAAA,EACxB,gBAAA,EAAkB,aAAA;AAAA,EAClB,eAAA,EAAiB,mCAAA;AAAA,EACjB,cAAA,EAAgB,2BAAA;AAAA;AAAA,EAEhB,gBAAA,EAAkB,UAAA;AAAA,EAClB,iBAAA,EAAmB,eAAA;AAAA,EACnB,kBAAA,EAAoB,eAAA;AAAA,EACpB,kBAAA,EAAoB,UAAA;AAAA,EACpB,iBAAA,EAAmB,sBAAA;AAAA,EACnB,eAAA,EAAiB,QAAA;AAAA,EACjB,iBAAA,EAAmB,SAAA;AAAA,EACnB,qBAAA,EAAuB,yCAAA;AAAA,EACvB,gBAAA,EAAkB,wBAAA;AAAA,EAClB,uBAAA,EAAyB,mBAAA;AAAA,EACzB,mBAAA,EAAqB,iCAAA;AAAA,EACrB,oBAAA,EAAsB,qBAAA;AAAA,EACtB,kBAAA,EAAoB,mBAAA;AAAA,EACpB,iBAAA,EAAmB,aAAA;AAAA,EACnB,mBAAA,EAAqB,yEAAA;AAAA,EACrB,kBAAA,EAAoB,oBAAA;AAAA,EACpB,mBAAA,EAAqB,WAAA;AAAA,EACrB,sBAAA,EAAwB,0BAAA;AAAA,EACxB,eAAA,EAAiB,WAAA;AAAA,EACjB,mBAAA,EAAqB,6CAAA;AAAA,EACrB,oBAAA,EAAsB,wBAAA;AAAA,EACtB,yBAAA,EAA2B,qBAAA;AAAA,EAC3B,+BAAA,EAAiC,kBAAA;AAAA,EACjC,4BAAA,EAA8B,WAAA;AAAA,EAC9B,kCAAA,EAAoC,YAAA;AAAA,EACpC,2BAAA,EAA6B,WAAA;AAAA,EAC7B,2BAAA,EAA6B,0BAAA;AAAA,EAC7B,0BAAA,EAA4B,sBAAA;AAAA,EAC5B,sBAAA,EAAwB,YAAA;AAAA,EACxB,2BAAA,EAA6B,WAAA;AAAA,EAC7B,yBAAA,EAA2B,YAAA;AAAA,EAC3B,oBAAA,EAAsB,YAAA;AAAA;AAAA,EAEtB,eAAA,EAAiB,UAAA;AAAA,EACjB,iBAAA,EAAmB,SAAA;AAAA,EACnB,oBAAA,EAAsB,oBAAA;AAAA,EACtB,sBAAA,EAAwB,4BAAA;AAAA,EACxB,eAAA,EAAiB,cAAA;AAAA,EACjB,gBAAA,EAAkB,eAAA;AAAA,EAClB,gBAAA,EAAkB,mBAAA;AAAA,EAClB,eAAA,EAAiB,OAAA;AAAA,EACjB,aAAA,EAAe,eAAA;AAAA,EACf,aAAA,EAAe,eAAA;AAAA,EACf,oBAAA,EAAsB,yBAAA;AAAA,EACtB,cAAA,EAAgB,wCAAA;AAAA,EAChB,cAAA,EAAgB,gCAAA;AAAA,EAChB,uBAAA,EAAyB,SAAA;AAAA,EACzB,wBAAA,EAA0B,YAAA;AAAA,EAC1B,0BAAA,EAA4B,WAAA;AAAA,EAC5B,sBAAA,EAAwB,mBAAA;AAAA,EACxB,wBAAA,EAA0B,YAAA;AAAA,EAC1B,4BAAA,EAA8B,2DAAA;AAAA,EAC9B,0BAAA,EAA4B,uCAAA;AAAA,EAC5B,8BAAA,EAAgC,mDAAA;AAAA;AAAA,EAEhC,eAAA,EAAiB,oBAAA;AAAA,EACjB,eAAA,EAAiB,0FAAA;AAAA,EACjB,iBAAA,EAAmB,gBAAA;AAAA,EACnB,iBAAA,EAAmB,SAAA;AAAA,EACnB,mBAAA,EAAqB,YAAA;AAAA,EACrB,eAAA,EAAiB,OAAA;AAAA,EACjB,iBAAA,EAAmB,iBAAA;AAAA,EACnB,mBAAA,EAAqB,qBAAA;AAAA,EACrB,eAAA,EAAiB,OAAA;AAAA,EACjB,uBAAA,EAAyB,mBAAA;AAAA,EACzB,mBAAA,EAAqB,cAAA;AAAA,EACrB,gBAAA,EAAkB,SAAA;AAAA,EAClB,oBAAA,EAAsB,yCAAA;AAAA,EACtB,eAAA,EAAiB,sBAAA;AAAA,EACjB,kBAAA,EAAoB,iBAAA;AAAA,EACpB,qBAAA,EAAuB,wDAAA;AAAA,EACvB,iBAAA,EAAmB,4BAAA;AAAA,EACnB,qBAAA,EAAuB,MAAA;AAAA,EACvB,qBAAA,EAAuB,oBAAA;AAAA,EACvB,8BAAA,EAAgC,wBAAA;AAAA,EAChC,6BAAA,EAA+B,sBAAA;AAAA,EAC/B,qBAAA,EAAuB,kBAAA;AAAA,EACvB,wBAAA,EAA0B,kBAAA;AAAA;AAAA,EAE1B,cAAA,EAAgB,YAAA;AAAA,EAChB,yBAAA,EAA2B,YAAA;AAAA,EAC3B,0BAAA,EAA4B,YAAA;AAAA,EAC5B,yBAAA,EAA2B,YAAA;AAAA,EAC3B,sBAAA,EAAwB,sBAAA;AAAA,EACxB,uBAAA,EAAyB,YAAA;AAAA,EACzB,kBAAA,EAAoB,sBAAA;AAAA,EACpB,kBAAA,EAAoB,sBAAA;AAAA,EACpB,aAAA,EAAe,kCAAA;AAAA,EACf,eAAA,EAAiB,OAAA;AAAA,EACjB,qBAAA,EAAuB,QAAA;AAAA,EACvB,wBAAA,EAA0B,WAAA;AAAA,EAC1B,uBAAA,EAAyB,SAAA;AAAA,EACzB,yBAAA,EAA2B,aAAA;AAAA,EAC3B,mCAAA,EAAqC,0BAAA;AAAA,EACrC,wBAAA,EAA0B,YAAA;AAAA,EAC1B,gBAAA,EAAkB,kBAAA;AAAA,EAClB,qBAAA,EAAuB,SAAA;AAAA,EACvB,4BAAA,EAA8B,uBAAA;AAAA,EAC9B,2BAAA,EAA6B,sBAAA;AAAA,EAC7B,6BAAA,EAA+B,mDAAA;AAAA,EAC/B,qBAAA,EAAuB,kBAAA;AAAA,EACvB,qBAAA,EAAuB,oBAAA;AAAA,EACvB,yBAAA,EAA2B,wBAAA;AAAA,EAC3B,6BAAA,EAA+B,sBAAA;AAAA,EAC/B,uBAAA,EAAyB,mBAAA;AAAA,EACzB,qBAAA,EAAuB,UAAA;AAAA,EACvB,sBAAA,EAAwB,oBAAA;AAAA,EACxB,wBAAA,EAA0B,eAAA;AAAA;AAAA,EAE1B,eAAA,EAAiB,oCAAA;AAAA,EACjB,eAAA,EAAiB,YAAA;AAAA,EACjB,iBAAA,EAAmB;AACrB,CAAA;AAKA,IAAMC,GAAAA,GAAsB;AAAA,EAC1B,cAAA,EAAgB,gBAAA;AAAA,EAChB,cAAA,EAAgB,kBAAA;AAAA,EAChB,aAAA,EAAe,OAAA;AAAA,EACf,YAAA,EAAc,YAAA;AAAA,EACd,iBAAA,EAAmB,cAAA;AAAA,EACnB,mBAAA,EAAqB,eAAA;AAAA,EACrB,aAAA,EAAe,qBAAA;AAAA,EACf,qBAAA,EAAuB,cAAA;AAAA,EACvB,iBAAA,EAAmB,cAAA;AAAA,EACnB,wBAAA,EAA0B,qBAAA;AAAA,EAC1B,oBAAA,EAAsB,cAAA;AAAA,EACtB,cAAA,EAAgB,6BAAA;AAAA,EAChB,iBAAA,EAAmB,aAAA;AAAA,EACnB,eAAA,EAAiB,qBAAA;AAAA,EACjB,gBAAA,EAAkB,kBAAA;AAAA,EAClB,mBAAA,EAAqB,eAAA;AAAA,EACrB,aAAA,EAAe,yDAAA;AAAA,EACf,aAAA,EAAe,WAAA;AAAA,EACf,kBAAA,EAAoB,wBAAA;AAAA,EACpB,iBAAA,EAAmB,wEAAA;AAAA,EACnB,kBAAA,EAAoB,oEAAA;AAAA,EACpB,uBAAA,EAAyB,qBAAA;AAAA,EACzB,YAAA,EAAc,MAAA;AAAA,EACd,iBAAA,EAAmB,gBAAA;AAAA,EACnB,wBAAA,EAA0B,kBAAA;AAAA,EAC1B,eAAA,EAAiB,SAAA;AAAA,EACjB,kBAAA,EAAoB,YAAA;AAAA,EACpB,wBAAA,EAA0B,kBAAA;AAAA,EAC1B,iBAAA,EAAmB,WAAA;AAAA,EACnB,iBAAA,EAAmB,WAAA;AAAA,EACnB,gBAAA,EAAkB,UAAA;AAAA,EAClB,eAAA,EAAiB,aAAA;AAAA,EACjB,gBAAA,EAAkB,gBAAA;AAAA,EAClB,WAAA,EAAa,MAAA;AAAA,EACb,gBAAA,EAAkB,gBAAA;AAAA,EAClB,cAAA,EAAgB,SAAA;AAAA,EAChB,iBAAA,EAAmB,YAAA;AAAA,EACnB,uBAAA,EAAyB,kBAAA;AAAA,EACzB,gBAAA,EAAkB,WAAA;AAAA,EAClB,cAAA,EAAgB,WAAA;AAAA,EAChB,gBAAA,EAAkB,WAAA;AAAA,EAClB,mBAAA,EAAqB,cAAA;AAAA,EACrB,mBAAA,EAAqB,SAAA;AAAA,EACrB,mBAAA,EAAqB,eAAA;AAAA,EACrB,4BAAA,EAA8B,iFAAA;AAAA,EAC9B,kBAAA,EAAoB,2EAAA;AAAA,EACpB,cAAA,EAAgB,qEAAA;AAAA,EAChB,wBAAA,EAA0B,oDAAA;AAAA,EAC1B,iBAAA,EAAmB,8CAAA;AAAA,EACnB,oBAAA,EAAsB,2BAAA;AAAA,EACtB,mBAAA,EAAqB,0BAAA;AAAA,EACrB,YAAA,EAAc,SAAA;AAAA,EACd,cAAA,EAAgB,gBAAA;AAAA,EAChB,eAAA,EAAiB,kBAAA;AAAA,EACjB,yBAAA,EAA2B,kBAAA;AAAA,EAC3B,wBAAA,EAA0B,iBAAA;AAAA,EAC1B,6BAAA,EAA+B,qBAAA;AAAA,EAC/B,sBAAA,EAAwB,mBAAA;AAAA,EACxB,gBAAA,EAAkB,cAAA;AAAA,EAClB,eAAA,EAAiB,sBAAA;AAAA,EACjB,cAAA,EAAgB,wBAAA;AAAA,EAChB,gBAAA,EAAkB,UAAA;AAAA,EAClB,iBAAA,EAAmB,QAAA;AAAA,EACnB,kBAAA,EAAoB,SAAA;AAAA,EACpB,kBAAA,EAAoB,SAAA;AAAA,EACpB,iBAAA,EAAmB,iBAAA;AAAA,EACnB,eAAA,EAAiB,MAAA;AAAA,EACjB,iBAAA,EAAmB,QAAA;AAAA,EACnB,qBAAA,EAAuB,qCAAA;AAAA,EACvB,gBAAA,EAAkB,sBAAA;AAAA,EAClB,uBAAA,EAAyB,gBAAA;AAAA,EACzB,mBAAA,EAAqB,mBAAA;AAAA,EACrB,oBAAA,EAAsB,qBAAA;AAAA,EACtB,kBAAA,EAAoB,mBAAA;AAAA,EACpB,iBAAA,EAAmB,SAAA;AAAA,EACnB,mBAAA,EAAqB,2EAAA;AAAA,EACrB,kBAAA,EAAoB,oBAAA;AAAA,EACpB,mBAAA,EAAqB,WAAA;AAAA,EACrB,sBAAA,EAAwB,cAAA;AAAA,EACxB,eAAA,EAAiB,MAAA;AAAA,EACjB,mBAAA,EAAqB,2CAAA;AAAA,EACrB,oBAAA,EAAsB,yBAAA;AAAA,EACtB,yBAAA,EAA2B,oBAAA;AAAA,EAC3B,+BAAA,EAAiC,eAAA;AAAA,EACjC,4BAAA,EAA8B,YAAA;AAAA,EAC9B,kCAAA,EAAoC,kBAAA;AAAA,EACpC,2BAAA,EAA6B,WAAA;AAAA,EAC7B,2BAAA,EAA6B,kBAAA;AAAA,EAC7B,0BAAA,EAA4B,uBAAA;AAAA,EAC5B,sBAAA,EAAwB,MAAA;AAAA,EACxB,2BAAA,EAA6B,WAAA;AAAA,EAC7B,yBAAA,EAA2B,aAAA;AAAA,EAC3B,oBAAA,EAAsB,YAAA;AAAA,EACtB,eAAA,EAAiB,UAAA;AAAA,EACjB,iBAAA,EAAmB,SAAA;AAAA,EACnB,oBAAA,EAAsB,aAAA;AAAA,EACtB,sBAAA,EAAwB,0BAAA;AAAA,EACxB,eAAA,EAAiB,WAAA;AAAA,EACjB,gBAAA,EAAkB,mBAAA;AAAA,EAClB,gBAAA,EAAkB,kBAAA;AAAA,EAClB,eAAA,EAAiB,OAAA;AAAA,EACjB,aAAA,EAAe,cAAA;AAAA,EACf,aAAA,EAAe,cAAA;AAAA,EACf,oBAAA,EAAsB,yBAAA;AAAA,EACtB,cAAA,EAAgB,2CAAA;AAAA,EAChB,cAAA,EAAgB,yBAAA;AAAA,EAChB,uBAAA,EAAyB,QAAA;AAAA,EACzB,wBAAA,EAA0B,aAAA;AAAA,EAC1B,0BAAA,EAA4B,WAAA;AAAA,EAC5B,sBAAA,EAAwB,qBAAA;AAAA,EACxB,wBAAA,EAA0B,aAAA;AAAA,EAC1B,4BAAA,EAA8B,8DAAA;AAAA,EAC9B,0BAAA,EAA4B,kCAAA;AAAA,EAC5B,8BAAA,EAAgC,oDAAA;AAAA,EAChC,eAAA,EAAiB,qBAAA;AAAA,EACjB,eAAA,EAAiB,kGAAA;AAAA,EACjB,iBAAA,EAAmB,qBAAA;AAAA,EACnB,iBAAA,EAAmB,SAAA;AAAA,EACnB,mBAAA,EAAqB,WAAA;AAAA,EACrB,eAAA,EAAiB,OAAA;AAAA,EACjB,iBAAA,EAAmB,mBAAA;AAAA,EACnB,mBAAA,EAAqB,mBAAA;AAAA,EACrB,eAAA,EAAiB,OAAA;AAAA,EACjB,uBAAA,EAAyB,gBAAA;AAAA,EACzB,mBAAA,EAAqB,YAAA;AAAA,EACrB,gBAAA,EAAkB,QAAA;AAAA,EAClB,oBAAA,EAAsB,qCAAA;AAAA,EACtB,eAAA,EAAiB,wBAAA;AAAA,EACjB,kBAAA,EAAoB,kBAAA;AAAA,EACpB,qBAAA,EAAuB,0DAAA;AAAA,EACvB,iBAAA,EAAmB,gBAAA;AAAA,EACnB,qBAAA,EAAuB,MAAA;AAAA,EACvB,qBAAA,EAAuB,eAAA;AAAA,EACvB,8BAAA,EAAgC,eAAA;AAAA,EAChC,6BAAA,EAA+B,cAAA;AAAA,EAC/B,qBAAA,EAAuB,cAAA;AAAA,EACvB,wBAAA,EAA0B,cAAA;AAAA,EAC1B,cAAA,EAAgB,SAAA;AAAA,EAChB,yBAAA,EAA2B,WAAA;AAAA,EAC3B,0BAAA,EAA4B,aAAA;AAAA,EAC5B,yBAAA,EAA2B,WAAA;AAAA,EAC3B,sBAAA,EAAwB,wBAAA;AAAA,EACxB,uBAAA,EAAyB,aAAA;AAAA,EACzB,kBAAA,EAAoB,qBAAA;AAAA,EACpB,kBAAA,EAAoB,qBAAA;AAAA,EACpB,aAAA,EAAe,4BAAA;AAAA,EACf,eAAA,EAAiB,UAAA;AAAA,EACjB,qBAAA,EAAuB,MAAA;AAAA,EACvB,wBAAA,EAA0B,SAAA;AAAA,EAC1B,uBAAA,EAAyB,QAAA;AAAA,EACzB,yBAAA,EAA2B,UAAA;AAAA,EAC3B,mCAAA,EAAqC,oBAAA;AAAA,EACrC,wBAAA,EAA0B,aAAA;AAAA,EAC1B,gBAAA,EAAkB,gBAAA;AAAA,EAClB,qBAAA,EAAuB,MAAA;AAAA,EACvB,4BAAA,EAA8B,aAAA;AAAA,EAC9B,2BAAA,EAA6B,YAAA;AAAA,EAC7B,6BAAA,EAA+B,+CAAA;AAAA,EAC/B,qBAAA,EAAuB,cAAA;AAAA,EACvB,qBAAA,EAAuB,eAAA;AAAA,EACvB,yBAAA,EAA2B,eAAA;AAAA,EAC3B,6BAAA,EAA+B,cAAA;AAAA,EAC/B,uBAAA,EAAyB,gBAAA;AAAA,EACzB,qBAAA,EAAuB,MAAA;AAAA,EACvB,sBAAA,EAAwB,sBAAA;AAAA,EACxB,wBAAA,EAA0B,gBAAA;AAAA,EAC1B,eAAA,EAAiB,iCAAA;AAAA,EACjB,eAAA,EAAiB,WAAA;AAAA,EACjB,iBAAA,EAAmB;AACrB,CAAA;AAGO,SAAS,eAAA,CAAgB,QAAwB,SAAA,EAA8D;AACpH,EAAA,MAAM,IAAA,GAAA,CAAyB,UAAU,OAAA,EAAS,WAAA,GAAc,UAAA,CAAW,IAAI,IAAIA,GAAAA,GAAKD,GAAAA;AACxF,EAAA,OAAO,YAAY,EAAE,GAAG,IAAA,EAAM,GAAG,WAAU,GAAI,IAAA;AACjD;AAGO,SAAS,QAAA,CAAS,CAAA,EAAoB,KAAA,EAAe,KAAA,EAAwB;AAClF,EAAA,MAAM,GAAA,GAAM,GAAG,KAAK,CAAA,CAAA,EAAI,OAAO,KAAA,KAAU,QAAA,GAAW,QAAQ,EAAE,CAAA,CAAA;AAC9D,EAAA,OAAO,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,CAAA,EAAG,GAAG,CAAA,GAAI,CAAA,CAAE,GAAG,CAAA,GAAI,CAAA,CAAE,CAAA,EAAG,KAAK,CAAA,QAAA,CAA+B,CAAA;AAC1G;AClXA,IAAM,OAAA,GAAyB;AAAA,EAC7B,QAAA,EAAU,UAAA;AAAA,EACV,KAAA,EAAO,CAAA;AAAA,EACP,MAAA,EAAQ,CAAA;AAAA,EACR,OAAA,EAAS,CAAA;AAAA,EACT,MAAA,EAAQ,EAAA;AAAA,EACR,QAAA,EAAU,QAAA;AAAA,EACV,IAAA,EAAM,eAAA;AAAA,EACN,UAAA,EAAY,QAAA;AAAA,EACZ,MAAA,EAAQ;AACV,CAAA;AAOO,SAAS,IAAI,CAAA,EAA2B;AAC7C,EAAA,IAAI,OAAO,CAAA,KAAM,QAAA,EAAU,OAAO,MAAA,CAAO,SAAS,CAAC,CAAA,GAAI,MAAA,CAAO,CAAC,CAAA,GAAI,IAAA;AACnE,EAAA,IAAI,OAAO,CAAA,KAAM,QAAA,EAAU,OAAO,IAAA;AAClC,EAAA,MAAM,CAAA,GAAI,EAAE,IAAA,EAAK;AACjB,EAAA,OAAO,IAAI,CAAA,GAAI,IAAA;AACjB;AAGO,SAAS,SAAA,CAAU,GAAY,MAAA,EAA+B;AACnE,EAAA,IAAI,CAAC,CAAA,IAAK,OAAO,CAAA,KAAM,UAAU,OAAO,IAAA;AACxC,EAAA,MAAM,EAAE,MAAA,EAAQ,aAAA,EAAc,GAAI,CAAA;AAClC,EAAA,MAAM,IAAI,OAAO,MAAA,KAAW,QAAA,GAAW,MAAA,CAAO,MAAM,CAAA,GAAI,MAAA;AACxD,EAAA,IAAI,OAAO,MAAM,QAAA,IAAY,CAAC,EAAE,IAAA,EAAK,IAAK,CAAC,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,CAAC,CAAC,CAAA,IAAK,OAAO,aAAA,KAAkB,QAAA,IAAY,CAAC,eAAA,CAAgB,IAAA,CAAK,aAAa,CAAA,EAAG,OAAO,IAAA;AAC3J,EAAA,OAAO,WAAA,CAAY,EAAE,MAAA,EAAQ,CAAA,CAAE,IAAA,EAAK,EAAG,aAAA,EAAe,aAAA,CAAc,WAAA,EAAY,EAAE,EAAG,MAAM,CAAA;AAC7F;AAGO,SAAS,MAAA,CAAO,EAAE,QAAA,EAAS,EAA4B;AAC5D,EAAA,uBAAOI,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,SAAU,QAAA,EAAS,CAAA;AACzC;AAYO,SAAS,cAAA,CAAe,EAAE,MAAA,EAAQ,QAAA,EAAU,UAAS,EAAqB;AAC/E,EAAA,MAAM,QAAA,GAAW,kBAAkB,MAAM,CAAA;AACzC,EAAA,MAAM,CAAA,GAAI,eAAA,CAAgB,QAAA,EAAU,QAAQ,CAAA;AAC5C,EAAA,MAAM,IAAA,GAAO,CAAC,GAAA,EAAgC,KAAA,GAA6B,WAA0B,UAAA,CAAW,GAAA,EAAK,QAAA,EAAU,KAAA,EAAO,QAAQ,CAAA;AAC9I,EAAA,MAAM,CAAA,GAAI,CAAC,GAAA,EAA4B,IAAA,KAAoD,IAAA,GAAO,IAAA,CAAK,CAAA,CAAE,GAAG,CAAA,EAAG,IAAI,CAAA,GAAI,CAAA,CAAE,GAAG,CAAA;AAC5H,EAAA,OAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,CAAA,EAAG,CAAA,EAAG,MAAM,QAAA,EAAS;AAClD;AAGO,SAAS,UAAA,CAAW,GAAA,EAAgC,MAAA,EAAgB,KAAA,GAA6B,QAAQ,QAAA,EAAkC;AAChJ,EAAA,IAAI,CAAC,GAAA,IAAO,OAAO,GAAA,KAAQ,UAAU,OAAO,IAAA;AAC5C,EAAA,MAAM,OAAA,GAAU,qBAAA,CAAsB,IAAA,CAAK,GAAG,CAAA;AAC9C,EAAA,MAAM,IAAI,IAAI,IAAA,CAAK,UAAU,CAAA,EAAG,GAAG,eAAe,GAAG,CAAA;AACrD,EAAA,IAAI,OAAO,KAAA,CAAM,CAAA,CAAE,OAAA,EAAS,GAAG,OAAO,IAAA;AACtC,EAAA,MAAM,IAAA,GAAO,UAAU,KAAA,GAAQ,QAAA;AAC/B,EAAA,IAAI;AACF,IAAA,OAAO,IAAI,IAAA,CAAK,cAAA,CAAe,MAAA,EAAQ,EAAE,SAAA,EAAW,MAAA,EAAQ,GAAI,KAAA,KAAU,UAAA,IAAc,CAAC,OAAA,GAAU,EAAE,SAAA,EAAW,OAAA,EAAQ,GAAI,EAAC,EAAI,GAAI,IAAA,GAAO,EAAE,QAAA,EAAU,IAAA,EAAK,GAAI,EAAC,EAAI,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,EAClL,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,CAAA,CAAE,WAAA,EAAY,CAAE,KAAA,CAAM,GAAG,EAAE,CAAA;AAAA,EACpC;AACF;AAGO,SAAS,IAAA,CAAK,EAAE,KAAA,EAAO,IAAA,EAAM,WAAU,EAA8F;AAC1I,EAAA,IAAI,CAAC,KAAA,IAAS,CAAC,IAAA,EAAM,OAAO,IAAA;AAC5B,EAAA,uBACEA,IAAC,MAAA,EAAA,EAAK,QAAA,EAAU,OAAO,SAAA,EAAsB,wBAAA,EAAwB,MAClE,QAAA,EAAA,IAAA,EACH,CAAA;AAEJ;AAGO,SAAS,MAAA,CAAO,CAAA,EAAoB,IAAA,EAAqB,KAAA,EAAuB;AACrF,EAAA,OAAO,IAAA,CAA+B,KAAA,KAAU,CAAA,GAAI,CAAA,CAAE,iBAAiB,CAAA,GAAI,CAAA,CAAE,mBAAmB,CAAA,EAAG,EAAE,OAAO,CAAA;AAC9G;AAiBO,SAAS,UAAA,CAAW,EAAE,KAAA,EAAO,KAAA,EAAO,WAAA,EAAa,aAAa,SAAA,EAAW,SAAA,EAAW,GAAG,IAAA,EAAK,EAAoB;AACrH,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIE,SAAuC,MAAM,CAAA;AACvE,EAAA,MAAM,KAAA,GAAQJ,OAAkD,MAAS,CAAA;AACzE,EAAAK,SAAAA,CAAU,MAAM,MAAM,YAAA,CAAa,MAAM,OAAO,CAAA,EAAG,EAAE,CAAA;AACrD,EAAA,MAAM,IAAA,GAAO,YAAY,YAAY;AACnC,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,KAAK,CAAA;AACzC,MAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,IACnB,CAAA,CAAA,MAAQ;AACN,MAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,IACnB;AACA,IAAA,YAAA,CAAa,MAAM,OAAO,CAAA;AAC1B,IAAA,KAAA,CAAM,UAAU,UAAA,CAAW,MAAM,QAAA,CAAS,MAAM,GAAG,GAAI,CAAA;AAAA,EACzD,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AACV,EAAA,uBACEJ,IAAAA,CAAAE,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAD,IAAC,QAAA,EAAA,EAAO,IAAA,EAAK,UAAS,OAAA,EAAS,IAAA,EAAM,WAAsB,YAAA,EAAY,SAAA,EAAW,gBAAc,IAAA,CAAK,cAAc,KAAK,EAAA,EAAI,YAAA,EAAY,OACrI,QAAA,EAAA,KAAA,KAAU,QAAA,GAAW,cAAc,KAAA,EACtC,CAAA;AAAA,oBACAA,IAAC,MAAA,EAAA,EAAK,IAAA,EAAK,UAAS,WAAA,EAAU,QAAA,EAAS,uBAAmB,IAAA,EAAC,KAAA,EAAO,UAAU,QAAA,GAAW,MAAA,GAAY,SAChG,QAAA,EAAA,KAAA,KAAU,QAAA,GAAW,cAAc,KAAA,KAAU,QAAA,GAAW,cAAc,EAAA,EACzE;AAAA,GAAA,EACF,CAAA;AAEJ;ACtHO,SAAS,UAAU,IAAA,EAAuE;AAC/F,EAAA,MAAM,MAAM,IAAA,EAAM,KAAA;AAClB,EAAA,IAAI,CAAC,GAAA,IAAO,OAAO,GAAA,KAAQ,UAAU,OAAO,IAAA;AAC5C,EAAA,MAAM,GAAA,GAAM,GAAA,CAAK,GAAA,CAA0B,GAAG,CAAA;AAC9C,EAAA,IAAI,CAAC,KAAK,OAAO,IAAA;AACjB,EAAA,MAAM,GAAA,GAAM,GAAA,CAAK,GAAA,CAA0B,GAAG,CAAA;AAC9C,EAAA,MAAM,CAAA,GAAI,MAAA,CAAQ,GAAA,CAA4B,KAAK,CAAA;AACnD,EAAA,MAAM,CAAA,GAAI,MAAA,CAAQ,GAAA,CAA6B,MAAM,CAAA;AACrD,EAAA,OAAO,EAAE,GAAA,EAAK,GAAA,EAAK,GAAI,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,IAAK,CAAA,GAAI,CAAA,GAAI,EAAE,KAAA,EAAO,CAAA,EAAE,GAAI,EAAC,EAAI,GAAI,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,IAAK,CAAA,GAAI,CAAA,GAAI,EAAE,MAAA,EAAQ,CAAA,EAAE,GAAI,EAAC,EAAG;AACjI;AAEA,SAAS,WAAW,KAAA,EAAgE;AAClF,EAAA,OAAA,CAAQ,MAAM,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,GAAI,MAAM,KAAA,GAAQ,EAAC,EAAG,MAAA,CAAO,CAAC,CAAA,KAAsB,CAAC,CAAC,CAAA,IAAK,OAAO,MAAM,QAAQ,CAAA;AACnH;AAeO,SAAS,UAAA,CAAW,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,GAAO,EAAA,EAAI,KAAA,EAAO,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,GAAG,MAAK,EAAoB;AAC/G,EAAA,MAAM,EAAE,CAAA,EAAG,MAAA,EAAO,GAAI,eAAe,IAAI,CAAA;AACzC,EAAA,MAAM,KAAA,GAAQ,WAAW,KAAK,CAAA;AAC9B,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAC/B,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,MAAM,qBAAA,EAAoB,EAAA,EAC3C,QAAA,kBAAAA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,GAAG,IAAA,EAAM,YAAA,EAAY,KAAA,IAAS,CAAA,CAAE,aAAa,CAAA,EAAG,0BAAA,EAAyB,EAAA,EACrF,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AACnB,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,QAAA,CAAS,CAAA,CAAE,QAAQ,KAAK,CAAA,CAAE,QAAA,GAAW,CAAA,GAAI,CAAA,CAAE,QAAA,GAAW,CAAA;AACzE,IAAA,MAAM,IAAA,GAAO,SAAA,CAAU,CAAA,CAAE,IAAA,EAAM,MAAM,CAAA;AACrC,IAAA,MAAM,OAAA,GAAU,GAAA,CAAI,CAAA,CAAE,aAAa,CAAA;AACnC,IAAA,uBACEA,IAAC,IAAA,EAAA,EAAoC,SAAA,EAAW,GAAG,IAAA,EAAM,oBAAA,EAAmB,IAC1E,QAAA,kBAAAA,GAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,UAAU,CAAC,CAAA;AAAA,QAClB,IAAA,EAAM,GAAA,CAAI,CAAA,CAAE,KAAK,CAAA,IAAK,EAAA;AAAA,QACtB,SAAS,OAAA,IAAW,CAAC,sBAAsB,IAAA,CAAK,OAAO,IAAI,OAAA,GAAU,IAAA;AAAA,QACrE,GAAA,EAAK,GAAA,CAAI,CAAA,CAAE,GAAG,CAAA;AAAA,QACd,QAAA,EAAU,GAAA;AAAA,QACV,aAAA,EAAe,EAAE,qBAAqB,CAAA;AAAA,QACtC,gBAAA,EAAkB,EAAE,wBAAwB,CAAA;AAAA,QAC5C,SAAA,EAAW,IAAA,GAAO,IAAA,CAAK,CAAA,CAAE,iBAAiB,GAAG,EAAE,KAAA,EAAO,IAAA,EAAM,CAAA,GAAI,IAAA;AAAA,QAChE,KAAA,EAAO,SAAA,CAAU,CAAA,CAAE,KAAA,EAAO,MAAM,CAAA;AAAA,QAChC,IAAA,EAAM,QAAA,GAAW,CAAC,CAAA,IAAK,IAAA;AAAA,QACvB,IAAA;AAAA,QACC,GAAI,GAAG,OAAA,GAAU,EAAE,YAAY,EAAA,CAAG,OAAA,KAAY;AAAC;AAAA,KAClD,EAAA,EAdO,GAAG,GAAA,CAAI,CAAA,CAAE,GAAG,CAAA,IAAK,EAAE,CAAA,CAAA,EAAI,CAAC,CAAA,CAejC,CAAA;AAAA,EAEJ,CAAC,GACH,CAAA,EACF,CAAA;AAEJ;AAGO,SAAS,kBAAA,CAAmB,EAAE,KAAA,EAAO,IAAA,GAAO,EAAA,EAAI,MAAM,CAAA,EAAG,SAAA,EAAW,GAAG,IAAA,EAAK,EAAwG;AACzL,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,CAAe,IAAI,CAAA;AACjC,EAAA,MAAM,KAAA,GAAQ,WAAW,KAAK,CAAA;AAC9B,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAC/B,EAAA,uBACEA,GAAAA;AAAA,IAAC,iBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,KAAA,CAAM,GAAA,CAAI,CAAC,OAAO,EAAE,KAAA,EAAO,SAAA,CAAU,CAAC,GAAG,IAAA,EAAM,GAAA,CAAI,CAAA,CAAE,KAAK,GAAE,CAAE,CAAA;AAAA,MACrE,IAAA;AAAA,MACA,GAAA;AAAA,MACA,SAAA,EAAW,EAAE,oBAAoB,CAAA;AAAA,MAChC,GAAI,SAAA,GAAY,EAAE,SAAA,KAAc;AAAC;AAAA,GACpC;AAEJ;AC9EA,IAAM,WAAA,uBAAkB,GAAA,CAAI,CAAC,QAAQ,SAAA,EAAW,SAAA,EAAW,SAAS,CAAC,CAAA;AACrE,IAAM,SAAA,GAAY,CAAC,CAAA,KAA4D,OAAO,CAAA,KAAM,YAAY,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,GAAK,CAAA,GAAe,SAAA;AAG7I,IAAM,KAAA,GAAQ,EAAE,IAAA,EAAM,QAAA,EAAK,SAAS,QAAA,EAAK,OAAA,EAAS,QAAA,EAAK,OAAA,EAAS,GAAA,EAAI;AAK7D,SAAS,SAAA,CAAU,OAAe,OAAA,EAA8B;AACrE,EAAA,IAAI,SAAS,OAAO,SAAA;AACpB,EAAA,IAAI,KAAA,KAAU,aAAa,OAAO,MAAA;AAClC,EAAA,IAAI,KAAA,KAAU,WAAA,IAAe,KAAA,KAAU,UAAA,EAAY,OAAO,OAAA;AAC1D,EAAA,IAAI,CAAC,iBAAA,EAAmB,MAAA,EAAQ,WAAA,EAAa,kBAAA,EAAoB,SAAA,EAAW,YAAA,EAAc,kBAAkB,CAAA,CAAE,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,SAAA;AACtI,EAAA,OAAO,OAAA;AACT;AAWO,SAAS,iBAAiB,EAAE,KAAA,EAAO,UAAU,SAAA,EAAW,GAAG,MAAK,EAA0B;AAC/F,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,CAAe,IAAI,CAAA;AACjC,EAAA,MAAM,CAAA,GAAI,QAAA,KAAa,KAAA,GAAQI,aAAA,CAAe,KAAK,CAAA,GAAI,IAAA,CAAA;AACvD,EAAA,IAAI,CAAC,GAAG,OAAO,IAAA;AACf,EAAA,uBACEL,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAsB,uBAAmB,IAAA,EAAC,eAAA,EAAe,CAAA,CAAE,KAAA,EAAO,gBAAc,SAAA,CAAU,CAAA,CAAE,KAAA,EAAO,CAAA,CAAE,OAAO,CAAA,EAC/G,QAAA,EAAA;AAAA,IAAA,QAAA,CAAS,CAAA,EAAG,OAAA,EAAS,CAAA,CAAE,KAAK,CAAA;AAAA,IAC5B,CAAA,CAAE,OAAA,mBAAUC,GAAAA,CAAC,MAAA,EAAA,EAAQ,eAAK,CAAA,CAAE,mBAAmB,CAAC,CAAA,CAAA,EAAG,CAAA,GAAY;AAAA,GAAA,EAClE,CAAA;AAEJ;AAkBO,SAAS,aAAA,CAAc,EAAE,KAAA,EAAO,QAAA,EAAU,OAAA,GAAU,MAAA,EAAQ,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,GAAG,IAAA,EAAK,EAAuB;AACrH,EAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAG,IAAA,EAAK,GAAI,eAAe,IAAI,CAAA;AAC1C,EAAA,MAAM,CAAA,GAAI,QAAA,KAAa,KAAA,GAAQI,aAAA,CAAe,KAAK,CAAA,GAAI,IAAA,CAAA;AACvD,EAAA,IAAI,CAAC,GAAG,OAAO,IAAA;AACf,EAAA,MAAM,QAA6B,KAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,KAAK,IAAI,CAAA,CAAE,KAAA,CAAM,MAAA,CAAO,CAAC,MAAM,CAAA,IAAK,OAAO,CAAA,KAAM,QAAQ,IAAI,EAAC;AACjH,EAAA,MAAM,YAAY,CAAC,CAAA,KAAyB,SAAS,CAAA,EAAG,MAAA,EAAQ,EAAE,GAAG,CAAA;AAErE,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,IAAK,CAAA,CAAE,UAAU,WAAA,IAAe,CAAA,CAAE,UAAU,UAAA,EAAY;AAC3E,IAAA,MAAM,OAAO,CAAA,CAAE,KAAA,KAAU,WAAA,GAAc,CAAA,CAAE,oBAAoB,CAAA,GAAI,CAAA,CAAE,KAAA,KAAU,UAAA,GAAa,EAAE,mBAAmB,CAAA,GAAI,SAAS,CAAA,EAAG,OAAA,EAAS,EAAE,KAAK,CAAA;AAC/I,IAAA,uBACEJ,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,IAAA,EAAM,kBAAA,EAAgB,IAAA,EAAC,eAAA,EAAe,CAAA,CAAE,KAAA,EAAO,mBAAiB,OAAA,EACjF,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,QAAA,EAAU,2BAAA,EAAyB,IAAA,EACjD,QAAA,EAAA,IAAA,EACH,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,IAAI,YAAY,SAAA,EAAW;AACzB,IAAA,MAAM,KAAK,IAAA,CAAK,GAAA,CAAI,GAAG,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA,KAAM,SAAA,CAAU,CAAA,CAAE,KAAK,MAAM,SAAA,IAAa,SAAA,CAAU,EAAE,KAAK,CAAA,KAAM,SAAS,CAAC,CAAA;AACnH,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,SAAA,CAAU,CAAA,CAAE,KAAK,CAAA,KAAM,SAAA,IAAa,SAAA,CAAU,CAAA,CAAE,KAAK,CAAA,KAAM,SAAS,CAAA,GAAI,EAAA,GAAK,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA,KAAM,SAAA,CAAU,CAAA,CAAE,KAAK,CAAA,KAAM,MAAM,CAAA,GAAI,KAAA,CAAM,SAAS,CAAA,GAAI,CAAA;AACpL,IAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,MAAM,kBAAA,EAAgB,IAAA,EAAC,eAAA,EAAe,CAAA,CAAE,OAAO,iBAAA,EAAgB,SAAA,EAChF,0BAAAA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,KAAA,EAAO,0BAAA,EAAwB,IAAA,EAC7C,YAAE,cAAA,EAAgB,EAAE,CAAA,EAAG,KAAA,GAAQ,GAAG,KAAA,EAAO,KAAA,CAAM,MAAA,EAAQ,IAAA,EAAM,UAAU,KAAA,CAAM,KAAK,CAAE,CAAA,EAAG,GAC1F,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,kBAAA,EAAgB,IAAA,EAAC,eAAA,EAAe,CAAA,CAAE,KAAA,EAAO,iBAAA,EAAgB,MAAA,EAChF,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,MAAM,YAAA,EAAY,CAAA,CAAE,gBAAgB,CAAA,EAAG,yBAAqB,IAAA,EAC3E,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AACnB,MAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,CAAA,CAAE,KAAK,CAAA;AAC/B,MAAA,uBACED,IAAAA,CAAC,IAAA,EAAA,EAAyB,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,cAAA,EAAc,OAAO,CAAA,CAAE,GAAA,KAAQ,QAAA,GAAW,CAAA,CAAE,GAAA,GAAM,WAAW,oBAAA,EAAoB,KAAA,EAAQ,GAAI,KAAA,KAAU,SAAA,IAAa,KAAA,KAAU,SAAA,GAAY,EAAE,cAAA,EAAgB,MAAA,EAAgB,GAAI,EAAC,EAC7N,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,aAAA,EAAY,MAAA,EAAO,qBAAA,EAAmB,IAAA,EAC/D,QAAA,EAAA,KAAA,CAAM,KAAK,CAAA,EACd,CAAA;AAAA,wBACAD,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,EAAA,CAAG,KAAA,EAAO,sBAAkB,IAAA,EAC1C,QAAA,EAAA;AAAA,UAAA,SAAA,CAAU,CAAC,CAAA;AAAA,0BACZC,IAAC,MAAA,EAAA,EAAQ,QAAA,EAAA,CAAA,EAAA,EAAK,EAAE,CAAA,UAAA,EAAa,KAAK,CAAA,CAAE,CAAC,CAAA,CAAA,EAAG;AAAA,SAAA,EAC1C,CAAA;AAAA,wBACAA,GAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,CAAA,CAAE,EAAA,EAAI,IAAA,EAAM,IAAA,CAAK,CAAA,CAAE,EAAE,CAAA,EAAG,SAAA,EAAW,GAAG,IAAA,EAAM;AAAA,OAAA,EAAA,EARlD,CAAA,EAAG,CAAA,CAAE,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAStB,CAAA;AAAA,IAEJ,CAAC,CAAA,EACH,CAAA;AAAA,IACC,CAAA,CAAE,OAAA,mBACDA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,OAAA,EAAS,0BAAA,EAA0B,OAAO,CAAA,CAAE,OAAA,CAAQ,SAAS,QAAA,GAAW,CAAA,CAAE,OAAA,CAAQ,IAAA,GAAO,SAAA,EACvG,QAAA,EAAA,QAAA,CAAS,CAAA,EAAG,SAAA,EAAW,CAAA,CAAE,OAAA,CAAQ,IAAI,CAAA,EACxC,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;AA4BO,SAAS,aAAA,CAAc,EAAE,KAAA,EAAO,MAAA,EAAQ,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,GAAG,MAAK,EAAuB;AAC/H,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,CAAe,IAAI,CAAA;AACjC,EAAA,MAAM,CAAA,GAAI,MAAA,KAAW,KAAA,GAAQK,UAAA,CAAiB,KAAK,CAAA,GAAI,IAAA,CAAA;AACvD,EAAA,IAAI,CAAC,CAAA,IAAK,CAAA,CAAE,IAAA,KAAS,MAAA,SAAe,SAAA,mBAAYL,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,IAAA,EAAM,oBAAA,EAAkB,IAAA,EAAE,qBAAU,CAAA,GAAS,IAAA;AAChH,EAAA,MAAM,OAAA,GAAU,CAAA,CAAE,IAAA,KAAS,OAAA,IAAW,CAAA,CAAE,SAAS,QAAA,GAAW,eAAA,CAAgB,CAAA,CAAE,IAAI,CAAA,GAAI,IAAA;AACtF,EAAA,MAAM,IAAA,GAAO,OAAA,GAAU,CAAC,CAAA,IAAK,OAAA;AAC7B,EAAA,MAAM,WAAW,CAAC,CAAC,IAAA,IAAQ,cAAA,CAAe,KAAK,IAAI,CAAA;AACnD,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,CAAA,EAAG,QAAA,EAAU,EAAE,IAAI,CAAA;AAC1C,EAAA,MAAM,MAAA,GAAS,EAAE,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,gBAAA,EAAkB,OAAO,CAAA,CAAE,IAAA,KAAS,QAAA,GAAW,CAAA,CAAE,IAAA,GAAO,SAAA,EAAU;AAC1G,EAAA,IAAI,OAAA,GAAU,IAAA;AACd,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,OAAA,mBACED,IAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAa,GAAG,QAAS,GAAI,QAAA,GAAW,EAAE,MAAA,EAAQ,QAAA,EAAU,GAAA,EAAK,uBAAsB,GAAI,EAAC,EAAI,OAAA,EAAS,QAAA,GAAW,CAAC,MAAM,QAAA,CAAS,CAAA,EAAG,CAAC,CAAA,GAAI,MAAA,EAC5I,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MACA,QAAA,mBAAWA,IAAAA,CAAC,MAAA,EAAA,EAAO,QAAA,EAAA;AAAA,QAAA,GAAA;AAAA,QAAE,EAAE,eAAe;AAAA,OAAA,EAAE,CAAA,GAAY;AAAA,KAAA,EACvD,CAAA;AAAA,EAEJ,WAAW,QAAA,EAAU;AACnB,IAAA,OAAA,mBACEC,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,UAAU,GAAG,MAAA,EAAQ,OAAA,EAAS,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,EAAG,CAAC,GAC5D,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,EAEJ;AACA,EAAA,IAAI,CAAC,OAAA,IAAW,CAAC,SAAA,EAAW,OAAO,IAAA;AACnC,EAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,IAAA,EAAK,OAAA,EAAQ,YAAA,EAAY,CAAA,CAAE,cAAc,CAAA,EAAG,sBAAkB,IAAA,EACpF,QAAA,EAAA;AAAA,IAAA,OAAA;AAAA,IACA;AAAA,GAAA,EACH,CAAA;AAEJ;ACrJO,SAAS,SAAA,CAAU,EAAE,KAAA,EAAO,SAAA,EAAW,YAAY,QAAA,EAAU,YAAA,GAAe,CAAA,EAAG,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,GAAG,MAAK,EAAmB;AACpI,EAAA,MAAM,EAAE,CAAA,EAAG,IAAA,EAAM,MAAA,EAAO,GAAI,eAAe,IAAI,CAAA;AAC/C,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,MAAM,QAAA,GAAWK,cAAe,KAAK,CAAA;AACrC,EAAA,MAAM,KAAA,GAAA,CAAS,MAAM,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,GAAI,KAAA,CAAM,KAAA,GAAQ,EAAC,EAAG,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,IAAK,MAAA,CAAO,QAAA,CAAS,CAAA,EAAG,QAAQ,CAAA,GAAI,CAAA,CAAE,QAAA,GAAW,CAAA,CAAA,EAAI,CAAC,CAAA;AACrI,EAAA,MAAM,OAAA,GAAU,MAAM,iBAAA,IAAqB,OAAO,MAAM,iBAAA,KAAsB,QAAA,GAAW,MAAM,iBAAA,GAAoB,IAAA;AACnH,EAAA,MAAM,SAAA,GAAY,MAAM,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAA,GAAI,KAAA,CAAM,YAAY,EAAC;AACtE,EAAA,MAAM,YAAA,GAAe,CAAC,CAAC,OAAA,IAAW,OAAO,OAAA,CAAQ,KAAA,KAAU,QAAA,IAAY,OAAA,CAAQ,KAAA,GAAQ,CAAA,IAAK,EAAE,SAAA,CAAU,MAAA,GAAS,CAAA,IAAK,SAAA,CAAU,KAAA,CAAM,cAAc,CAAA,CAAA,IAAM,CAAC,CAAC,iBAAA,EAAmB,WAAA,EAAa,UAAU,CAAA,CAAE,QAAA,CAAS,QAAA,CAAS,KAAK,CAAA;AAC/N,EAAA,MAAM,MAAA,GAASC,WAAiB,KAAK,CAAA;AACrC,EAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,KAAA,CAAM,KAAA,EAAO,MAAM,CAAA;AAC3C,EAAA,MAAM,OAAA,GAAU,OAAA,GAAU,GAAA,CAAI,OAAA,CAAQ,OAAO,CAAA,GAAI,IAAA;AACjD,EAAA,uBACEN,IAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,eAAA,EAAa,IAAA,EAAC,sBAAA,EAAsB,QAAA,CAAS,KAAA,EAAO,kBAAA,EAAkB,MAAM,EAAA,EACvG,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,EAAA,CAAG,MAAA,EACpB,QAAA,EAAA;AAAA,sBAAAC,IAAC,OAAA,EAAA,EAAQ,SAAA,EAAW,GAAG,MAAA,EAAQ,sBAAA,EAAoB,MACjD,QAAA,kBAAAA,GAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAM,UAAU,KAAK,CAAA,EAAG,WAAW,EAAA,CAAG,IAAA,EAAM,sBAAkB,IAAA,EAC9D,QAAA,EAAA,IAAA,CAAK,CAAA,CAAE,cAAc,GAAG,EAAE,MAAA,EAAQ,IAAI,KAAA,CAAM,MAAM,MAAM,GAAA,CAAI,KAAA,CAAM,EAAE,CAAA,IAAK,IAAI,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,EAAG,GAC7F,CAAA,EACF,CAAA;AAAA,sBACAA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,QAAA,EAAqB,GAAG,IAAA,EAAO,GAAI,EAAA,CAAG,KAAA,GAAQ,EAAE,SAAA,EAAW,EAAA,CAAG,KAAA,EAAM,GAAI,EAAC,EAAI;AAAA,KAAA,EACjG,CAAA;AAAA,oBACAD,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,IAAA,EAAM,sBAAkB,IAAA,EACvC,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,QAAK,KAAA,EAAO,KAAA,CAAM,YAAY,IAAA,EAAM,IAAA,CAAK,KAAA,CAAM,UAAU,CAAA,GAAI,IAAA,CAAK,EAAE,cAAc,CAAA,EAAG,EAAE,IAAA,EAAM,IAAA,CAAK,MAAM,UAAU,CAAA,EAAI,CAAA,GAAI,IAAA,EAAM,CAAA;AAAA,MAChI,KAAA,GAAQ,CAAA,mBAAID,IAAAA,CAAAE,UAAA,EAAE,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAAI,MAAA,CAAO,CAAA,EAAG,aAAA,EAAe,KAAK;AAAA,OAAA,EAAE,CAAA,GAAM;AAAA,KAAA,EAC3D,CAAA;AAAA,IACC,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,IAAK,MAAM,KAAA,CAAM,MAAA,GAAS,CAAA,mBAClDD,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,QAAA,EAAU,wBAAA,EAAsB,IAAA,EACjD,QAAA,kBAAAA,GAAAA,CAAC,sBAAmB,KAAA,EAAe,GAAG,IAAA,EAAM,CAAA,EAC9C,CAAA,GACE,IAAA;AAAA,oBACJD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,OAAA,EAAS,yBAAqB,IAAA,EAC/C,QAAA,EAAA;AAAA,sBAAAC,IAAC,aAAA,EAAA,EAAc,QAAA,EAAoB,OAAA,EAAQ,SAAA,EAAW,GAAG,IAAA,EAAO,GAAI,EAAA,CAAG,QAAA,GAAW,EAAE,UAAA,EAAY,EAAA,CAAG,QAAA,EAAS,GAAI,EAAC,EAAI,CAAA;AAAA,MACpH,YAAA,mBACCD,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,QAAA,EAAU,0BAAsB,IAAA,EAC9C,QAAA,EAAA;AAAA,QAAA,OAAA,mBAAUA,IAAAA,CAAAE,QAAAA,EAAA,EAAG,QAAA,EAAA;AAAA,UAAA,OAAA;AAAA,UAAQ;AAAA,SAAA,EAAG,CAAA,GAAM,IAAA;AAAA,QAC9B,QAAA,CAAS,CAAA,EAAG,iBAAA,EAAmB,OAAA,CAAS,MAAM;AAAA,OAAA,EACjD,CAAA,GACE;AAAA,KAAA,EACN,CAAA;AAAA,oBACAF,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,MAAA,EAChB,QAAA,EAAA;AAAA,MAAA,KAAA,mBACCA,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,KAAA,EAAO,uBAAmB,IAAA,EACzC,QAAA,EAAA;AAAA,wBAAAA,KAAC,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,UAAA,CAAA,CAAE,aAAa,CAAA;AAAA,UAAE;AAAA,SAAA,EAAE,CAAA;AAAA,wBAC1BC,GAAAA,CAAC,QAAA,EAAA,EAAQ,QAAA,EAAA,KAAA,EAAM;AAAA,OAAA,EACjB,CAAA,GACE,IAAA;AAAA,sBACJA,GAAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,MAAA;AAAA,UACC,GAAG,IAAA;AAAA,UACJ,SAAS,CAAC,CAAA,KAAM,UAAA,GAAa,CAAA,EAAG,KAAK,CAAA,IAAK,MAAA;AAAA,UACzC,GAAI,QAAA,GAAW,EAAE,QAAA,EAAU,CAAC,CAAA,KAAkB,QAAA,CAAS,CAAA,EAAG,KAAK,CAAA,EAAE,GAAI,EAAC;AAAA,UACvE,YAAY,EAAE,GAAI,EAAA,CAAG,OAAA,GAAU,EAAE,IAAA,EAAM,EAAA,CAAG,OAAA,EAAQ,GAAI,EAAC,EAAI,GAAI,EAAA,CAAG,MAAA,IAAU,EAAC;AAAG;AAAA;AAClF,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAuBO,SAAS,SAAA,CAAU,EAAE,MAAA,EAAQ,MAAA,GAAS,OAAA,EAAS,YAAY,CAAA,EAAG,OAAA,EAAS,OAAA,EAAS,WAAA,EAAa,UAAA,EAAY,WAAA,EAAa,YAAY,IAAA,EAAM,SAAA,EAAW,UAAA,EAAY,QAAA,EAAU,YAAA,GAAe,CAAA,EAAG,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,GAAG,IAAA,EAAK,EAAmB;AAChP,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,CAAe,IAAI,CAAA;AACjC,EAAA,MAAM,IAAA,GAAA,CAAQ,MAAM,OAAA,CAAQ,MAAM,IAAI,MAAA,GAAS,IAAI,MAAA,CAAO,CAAC,MAAkB,CAAC,CAAC,KAAK,OAAO,CAAA,KAAM,YAAY,OAAO,CAAA,CAAE,OAAO,QAAQ,CAAA;AAErI,EAAA,IAAI,MAAA,KAAW,SAAA,IAAa,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG;AAC7C,IAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,IAAA,EAAK,QAAA,EAAS,WAAA,EAAU,MAAA,EAAO,gBAAA,EAAc,IAAA,EAAC,wBAAqB,SAAA,EAC1F,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,MAAA,EAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EAAE,CAAA;AAAA,sBAC5BA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,aAAA,EAAY,MAAA,EACjC,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,KAAK,GAAA,CAAI,CAAA,EAAG,SAAS,CAAA,EAAE,EAAG,CAAC,CAAA,EAAG,CAAA,qBAClDA,GAAAA,CAAC,IAAA,EAAA,EAAW,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,kBAAA,EAAgB,IAAA,EAAA,EAA3C,CAA4C,CACtD,CAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AACA,EAAA,IAAI,MAAA,KAAW,OAAA,IAAW,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG;AAC3C,IAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,IAAA,EAAM,kBAAc,IAAA,EAAC,sBAAA,EAAqB,SAC3D,QAAA,kBAAAD,IAAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,OAAO,IAAA,EAAK,OAAA,EAAQ,wBAAoB,IAAA,EACzD,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,CAAA,CAAE,aAAa,CAAA,EAAE,CAAA;AAAA,MACpB,0BACCA,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,UAAS,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,OAAA,EAAS,SAAS,eAAA,EAAa,IAAA,EACvE,QAAA,EAAA,CAAA,CAAE,aAAa,GAClB,CAAA,GACE;AAAA,KAAA,EACN,CAAA,EACF,CAAA;AAAA,EAEJ;AACA,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,MAAM,gBAAA,EAAc,IAAA,EAAC,sBAAA,EAAqB,OAAA,EAC3D,0BAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,KAAA,EAAO,wBAAoB,IAAA,EAC5C,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,UAAA,EACf,QAAA,kBAAAA,GAAAA,CAAC,QAAA,EAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,kBAAkB,CAAA,EAAE,CAAA,EACjC,CAAA;AAAA,sBACAA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,SAAA,EAAY,QAAA,EAAA,CAAA,CAAE,iBAAiB,CAAA,EAAE,CAAA;AAAA,MACjD,SAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,2BAAA,EAAyB,IAAA,EACnD,QAAA,EAAA,CAAA,CAAE,kBAAkB,CAAA,EACvB,CAAA,GACE,IAAA;AAAA,MACH;AAAA,KAAA,EACH,CAAA,EACF,CAAA;AAAA,EAEJ;AACA,EAAA,uBACED,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,IAAA,EAAM,gBAAA,EAAc,IAAA,EAAC,sBAAA,EAAqB,OAAA,EAC3D,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,YAAA,EAAY,CAAA,CAAE,iBAAiB,CAAA,EAAG,qBAAA,EAAmB,IAAA,EAC1E,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,qBACTA,GAAAA,CAAC,IAAA,EAAA,EAAc,SAAA,EAAW,EAAA,CAAG,IAAA,EAC3B,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAO,CAAA,EAAG,SAAA,EAAuB,GAAI,UAAA,GAAa,EAAE,UAAA,EAAW,GAAI,EAAC,EAAK,GAAI,QAAA,GAAW,EAAE,QAAA,EAAS,GAAI,EAAC,EAAI,YAAA,EAA6B,GAAG,IAAA,EAAO,GAAI,EAAA,CAAG,IAAA,GAAO,EAAE,UAAA,EAAY,EAAA,CAAG,IAAA,EAAK,GAAI,EAAC,EAAI,CAAA,EAAA,EADpM,CAAA,CAAE,EAEX,CACD,CAAA,EACH,CAAA;AAAA,IACC,MAAA,KAAW,OAAA,mBACVD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,sBAAA,EAAoB,IAAA,EACzD,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,CAAA,CAAE,aAAa,CAAA,EAAE,CAAA;AAAA,MACpB,0BACCA,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,UAAS,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,OAAA,EAAS,SAAS,eAAA,EAAa,IAAA,EACvE,QAAA,EAAA,CAAA,CAAE,aAAa,GAClB,CAAA,GACE;AAAA,KAAA,EACN,CAAA,GACE,IAAA;AAAA,IACH,OAAA,IAAW,UAAA,mBACVA,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,OAAA,EAAS,UAAA,EAAY,QAAA,EAAU,aAAa,eAAA,EAAe,WAAA,IAAe,MAAA,EAAW,qBAAA,EAAmB,IAAA,EAC/I,QAAA,EAAA,WAAA,GAAc,CAAA,CAAE,mBAAmB,CAAA,GAAI,CAAA,CAAE,gBAAgB,CAAA,EAC5D,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;ACnJO,SAAS,aAAa,EAAE,QAAA,EAAU,QAAA,GAAW,MAAA,EAAQ,gBAAgB,CAAA,EAAG,iBAAA,EAAmB,SAAA,EAAW,YAAA,GAAe,GAAG,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,GAAG,MAAK,EAAsB;AAChL,EAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAG,IAAA,EAAK,GAAI,eAAe,IAAI,CAAA;AAC1C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIE,SAAS,KAAK,CAAA;AACtC,EAAA,MAAM,EAAA,GAAK,KAAA,EAAM,CAAE,OAAA,CAAQ,MAAM,EAAE,CAAA;AACnC,EAAA,IAAI,CAAC,QAAA,IAAY,OAAO,QAAA,KAAa,UAAU,OAAO,IAAA;AACtD,EAAA,MAAM,IAAA,GAAOI,eAAe,QAAQ,CAAA;AACpC,EAAA,IAAI,IAAA,IAAQ,QAAA,KAAa,MAAA,EAAQ,OAAO,IAAA;AAExC,EAAA,MAAM,QAAA,GAAW,SAAS,IAAA,KAAS,QAAA;AACnC,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,MAAM,UAAA,GAAa,CAAA,CAAA,EAAI,YAAA,GAAe,CAAC,CAAA,CAAA;AACvC,EAAA,MAAM,OAAA,GAAU,GAAA,CAAI,QAAA,CAAS,OAAO,CAAA;AACpC,EAAA,MAAM,OAAA,GAAU,IAAA,GAAO,IAAA,GAAO,GAAA,CAAI,SAAS,OAAO,CAAA;AAClD,EAAA,MAAM,MAAA,GAAS,IAAA,GAAO,IAAA,GAAO,GAAA,CAAI,SAAS,eAAe,CAAA;AACzD,EAAA,MAAM,QAAA,GAAW,IAAA,GAAO,IAAA,GAAOC,eAAAA,CAAgB,SAAS,YAAY,CAAA;AACpE,EAAA,MAAM,WAAW,QAAA,IAAY,CAAC,OAAOA,eAAAA,CAAgB,QAAA,CAAS,SAAS,CAAA,GAAI,IAAA;AAC3E,EAAA,MAAM,SAAS,IAAA,GAAO,EAAC,GAAI,kBAAA,CAAmB,SAAS,MAAM,CAAA;AAC7D,EAAA,MAAM,KAAA,GAAQ,IAAA,GAAO,MAAA,GAAS,MAAA,CAAO,KAAA,CAAM,GAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,aAAa,CAAC,CAAA;AACxE,EAAA,MAAM,MAAA,GAAS,OAAO,CAAA,CAAE,oBAAoB,IAAI,QAAA,CAAS,CAAA,EAAG,iBAAA,EAAmB,QAAA,CAAS,MAAM,CAAA;AAC9F,EAAA,MAAM,QAAA,GAAW,CAAC,IAAA,IAAQ,QAAA,CAAS,WAAW,WAAA,GAAc,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA,GAAI,IAAA;AACzF,EAAA,MAAM,YAAY,CAAC,IAAA,GAAO,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,GAAI,IAAA;AACxD,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,IAAQ,CAAC,YAAY,IAAA,CAAK,QAAA,CAAS,UAAU,CAAA,GAAI,IAAA;AAClE,EAAA,MAAM,OAAA,GAAU,UAAU,EAAE,CAAA,CAAA;AAC5B,EAAA,MAAM,QAAA,GAAW,aAAa,EAAE,CAAA,CAAA;AAEhC,EAAA,uBACER,IAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,iBAAA,EAAiB,OAAA,EAAS,kBAAA,EAAgB,IAAA,EAAC,yBAAA,EAAyB,IAAA,GAAO,SAAS,OAAO,QAAA,CAAS,MAAA,KAAW,QAAA,GAAW,QAAA,CAAS,MAAA,GAAS,SAAA,EAAW,uBAAA,EAAuB,WAAW,QAAA,GAAW,UAAA,EAAa,GAAI,IAAA,GAAO,EAAE,cAAA,EAAgB,EAAA,EAAG,GAAI,EAAC,EACjR,QAAA,EAAA;AAAA,oBAAAA,KAAC,QAAA,EAAA,EAAO,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,2BAAuB,IAAA,EAClD,QAAA,EAAA;AAAA,MAAA,iBAAA,IAAqB,CAAC,IAAA,mBAAOC,GAAAA,CAAC,MAAA,EAAA,EAAK,yBAAqB,IAAA,EAAE,QAAA,EAAA,iBAAA,CAAkB,QAAQ,CAAA,EAAE,CAAA,GAAU,IAAA;AAAA,sBACjGD,KAAC,OAAA,EAAA,EAAQ,EAAA,EAAI,SAAS,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,wBAAA,EAAsB,IAAA,EAChE,QAAA,EAAA;AAAA,QAAA,OAAA,IAAW,CAAC,IAAA,mBACXA,IAAAA,CAAC,MAAA,EAAA,EAAK,4BAAwB,IAAA,EAC3B,QAAA,EAAA;AAAA,UAAA,CAAA,CAAE,kBAAkB,CAAA;AAAA,0BACrBC,GAAAA,CAAC,MAAA,EAAA,EAAO,QAAA,EAAA,IAAA,EAAE;AAAA,SAAA,EACZ,CAAA,GACE,IAAA;AAAA,QACH,WAAW,CAAA,CAAE,iBAAiB,CAAA,GAAK,OAAA,IAAW,EAAE,gBAAgB,CAAA;AAAA,QAChE,QAAA,IAAY,OAAA,mBAAUD,IAAAA,CAAAE,UAAA,EAAE,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UAAI;AAAA,SAAA,EAAQ,CAAA,GAAM;AAAA,OAAA,EAC7C,CAAA;AAAA,sBACAD,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,MAAA,EAAQ,wBAAA,EAAsB,MAC/C,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,MACC,IAAA,mBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,uBAAA,EAAqB,IAAA,EAC5C,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EACpB,CAAA,GACE;AAAA,KAAA,EACN,CAAA;AAAA,IACC,IAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,4BAAA,EAA0B,IAAA,EAC9C,QAAA,EAAA,CAAA,CAAE,mBAAmB,CAAA,EACxB,CAAA,GACE,IAAA;AAAA,IACH,OAAA,mBACCD,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,IAAA,EAAM,4BAAwB,IAAA,EAC5C,QAAA,EAAA;AAAA,MAAA,CAAA,CAAE,kBAAkB,CAAA;AAAA,MAAE,IAAA;AAAA,MAAG;AAAA,KAAA,EAC5B,CAAA,GACE,IAAA;AAAA,IACH,MAAA,mBACCA,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,MAAA,EAAQ,2BAAuB,IAAA,EAC9C,QAAA,EAAA;AAAA,sBAAAA,KAAC,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,QAAA,CAAA,CAAE,iBAAiB,CAAA;AAAA,QAAE;AAAA,OAAA,EAAE,CAAA;AAAA,sBAC9BC,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,MAAQ,GAAA;AAAA,sBACtBA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,CAAA,CAAE,eAAe,CAAA,EAAG,WAAA,EAAa,CAAA,CAAE,iBAAiB,GAAG,WAAA,EAAa,CAAA,CAAE,qBAAqB,CAAA,EAAG,SAAA,EAAW,CAAA,EAAG,CAAA,CAAE,eAAe,CAAC,CAAA,CAAA,EAAI,CAAA,CAAE,iBAAiB,CAAC,CAAA,CAAA,EAAI,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,gBAAa,UAAA,EAAW;AAAA,KAAA,EAC1O,CAAA,GACE,IAAA;AAAA,IACH,QAAA,IAAY,SAAA,IAAa,OAAA,mBACxBA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,wBAAA,EAAsB,IAAA,EAC1C,QAAA,EAAA,SAAA,mBACCA,GAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,QAAA,CAAS,YAAA,EAAc,IAAA,EAAM,CAAA,CAAE,oBAAA,EAAsB,EAAE,IAAA,EAAM,SAAA,EAAW,CAAA,EAAG,CAAA,GACtF,QAAA,mBACFA,GAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,QAAA,CAAS,WAAA,EAAa,IAAA,EAAM,CAAA,CAAE,mBAAA,EAAqB,EAAE,IAAA,EAAM,QAAA,EAAU,CAAA,EAAG,CAAA,mBAErFA,GAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,QAAA,CAAS,UAAA,EAAY,IAAA,EAAM,CAAA,CAAE,kBAAA,EAAoB,EAAE,IAAA,EAAM,OAAA,IAAW,EAAA,EAAI,CAAA,EAAG,CAAA,EAE5F,CAAA,GACE,IAAA;AAAA,IACH,QAAA,IAAY,2BACXD,IAAAA,CAAC,OAAE,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,0BAAA,EAAwB,IAAA,EAC/C,QAAA,EAAA;AAAA,MAAA,QAAA,mBACCA,IAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAM,QAAA,EAAU,MAAA,EAAO,QAAA,EAAS,GAAA,EAAI,qBAAA,EAAsB,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,0BAAsB,IAAA,EACpG,QAAA,EAAA;AAAA,QAAA,OAAA,GAAU,EAAE,gBAAA,EAAkB,EAAE,SAAS,CAAA,GAAI,EAAE,uBAAuB,CAAA;AAAA,wBACvEA,KAAC,MAAA,EAAA,EAAO,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UAAE,EAAE,eAAe;AAAA,SAAA,EAAE;AAAA,OAAA,EAC/B,CAAA,GACE,IAAA;AAAA,MACH,QAAA,mBACCA,IAAAA,CAAC,GAAA,EAAA,EAAE,MAAM,QAAA,EAAU,MAAA,EAAO,QAAA,EAAS,GAAA,EAAI,qBAAA,EAAsB,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,0BAAsB,IAAA,EACpG,QAAA,EAAA;AAAA,QAAA,CAAA,CAAE,sBAAsB,CAAA;AAAA,wBACzBA,KAAC,MAAA,EAAA,EAAO,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UAAE,EAAE,eAAe;AAAA,SAAA,EAAE;AAAA,OAAA,EAC/B,CAAA,GACE;AAAA,KAAA,EACN,CAAA,GACE,IAAA;AAAA,IACH,SAAA,IAAa,CAAC,IAAA,IAAQ,QAAA,CAAS,sBAC9BC,GAAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,KAAK,2BAAA,EAAyB,IAAA,EAC9C,oBAAU,EAAE,QAAA,EAAU,KAAK,QAAA,CAAS,GAAA,EAAK,CAAA,EAC5C,CAAA,GACE,IAAA;AAAA,IACH,CAAC,OACA,MAAA,CAAO,MAAA,KAAW,oBAChBA,GAAAA,CAAC,OAAE,SAAA,EAAW,EAAA,CAAG,OAAO,wBAAA,EAAsB,IAAA,EAC3C,YAAE,mBAAmB,CAAA,EACxB,oBAEAD,IAAAA,CAAC,KAAA,EAAA,EAAI,8BAAA,EAA4B,IAAA,EAC/B,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,cAAW,SAAA,EAAW,EAAA,CAAG,MAAM,+BAAA,EAA6B,IAAA,EAC1D,QAAA,EAAA,CAAA,CAAE,iBAAiB,CAAA,EACtB,CAAA;AAAA,sBACAA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,GAAG,MAAA,EAAQ,EAAA,EAAI,QAAA,EAAU,yBAAA,EAAuB,IAAA,EAC5D,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AACnB,QAAA,MAAM,WAAA,GAAc,GAAA,CAAI,CAAA,CAAE,WAAW,CAAA;AACrC,QAAA,MAAM,QAAA,GAAW,GAAA,CAAI,CAAA,CAAE,QAAQ,CAAA;AAC/B,QAAA,uBACAD,IAAAA,CAAC,IAAA,EAAA,EAAmC,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,sBAAA,EAAsB,OAAO,CAAA,CAAE,MAAA,KAAW,QAAA,GAAW,CAAA,CAAE,SAAS,SAAA,EACvH,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,UAAK,qBAAA,EAAmB,IAAA,EAAE,mBAAS,CAAA,EAAG,iBAAA,EAAmB,CAAA,CAAE,MAAM,CAAA,EAAE,CAAA;AAAA,UACnE,WAAA,mBAAcD,IAAAA,CAAC,MAAA,EAAA,EAAK,6BAAyB,IAAA,EAAC,QAAA,EAAA;AAAA,YAAA,QAAA;AAAA,YAAI;AAAA,WAAA,EAAY,CAAA,GAAU,IAAA;AAAA,UACxE,QAAA,mBAAWA,IAAAA,CAAC,MAAA,EAAA,EAAK,0BAAsB,IAAA,EAAC,QAAA,EAAA;AAAA,YAAA,QAAA;AAAA,YAAI;AAAA,WAAA,EAAS,CAAA,GAAU,IAAA;AAAA,UAAM,GAAA;AAAA,0BACtEC,GAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,CAAA,CAAE,WAAA,EAAa,IAAA,EAAM,IAAA,CAAK,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA,EAAG;AAAA,SAAA,EAAA,EAJ5D,CAAA,EAAG,IAAI,CAAA,CAAE,EAAE,KAAK,EAAE,CAAA,CAAA,EAAI,CAAC,CAAA,CAKhC,CAAA;AAAA,MAEF,CAAC,CAAA,EACH,CAAA;AAAA,MACC,OAAO,MAAA,GAAS,IAAA,CAAK,IAAI,CAAA,EAAG,aAAa,oBACxCA,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,UAAS,SAAA,EAAW,EAAA,CAAG,QAAQ,eAAA,EAAe,IAAA,EAAM,iBAAe,QAAA,EAAU,OAAA,EAAS,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA,EAAG,yBAAA,EAAuB,MACjJ,QAAA,EAAA,IAAA,GAAO,CAAA,CAAE,mBAAmB,CAAA,GAAI,CAAA,CAAE,oBAAoB,EAAE,KAAA,EAAO,OAAO,MAAA,EAAQ,GACjF,CAAA,GACE;AAAA,KAAA,EACN,CAAA,GAEA;AAAA,GAAA,EACN,CAAA;AAEJ;AC7HA,IAAM,KAAA,GAAQ,CAAC,CAAA,KAAkE,CAAA,KAAM,YAAY,CAAA,KAAM,SAAA,IAAa,CAAA,KAAM,WAAA,IAAe,CAAA,KAAM,OAAA;AAE1I,SAAS,WAAA,CAAY,EAAE,QAAA,EAAU,OAAA,EAAS,eAAe,QAAA,EAAU,UAAA,EAAY,UAAU,OAAA,EAAS,QAAA,GAAW,QAAQ,YAAA,GAAe,CAAA,EAAG,UAAU,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,GAAG,MAAK,EAAqB;AACxM,EAAA,MAAM,EAAE,CAAA,EAAM,MAAM,MAAA,EAAO,GAAI,eAAe,IAAI,CAAA;AAClD,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,MAAM,UAAU,CAAA,YAAA,EAAeQ,KAAAA,GAAQ,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AACxD,EAAA,MAAM,GAAA,GAAA,CAAO,MAAM,OAAA,CAAQ,QAAQ,IAAI,QAAA,GAAW,IAAI,MAAA,CAAO,CAAC,MAAuB,CAAC,CAAC,KAAK,OAAO,CAAA,KAAM,YAAY,OAAO,CAAA,CAAE,OAAO,QAAQ,CAAA;AAC7I,EAAA,MAAM,IAAA,GAAO,QAAA,KAAa,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,aAAA,CAAc,CAAC,CAAC,CAAA,GAAI,GAAA;AAC1E,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAQ,GAAI,iBAAiB,IAAI,CAAA;AAEjD,EAAA,MAAM,SAAA,GAAY,CAAC,GAAA,EAAiB,MAAA,KAAwB;AAC1D,IAAA,MAAM,IAAA,GAAO,cAAc,GAAG,CAAA;AAC9B,IAAA,MAAM,SAAS,KAAA,CAAM,GAAA,CAAI,MAAM,CAAA,GAAI,IAAI,MAAA,GAAS,SAAA;AAChD,IAAA,MAAM,SAAA,GAAY,IAAI,IAAA,KAAS,aAAA,GAAgB,EAAE,oBAAoB,CAAA,GAAI,EAAE,iBAAiB,CAAA;AAC5F,IAAA,MAAM,UAAU,CAAC,CAAA,KAAkB,CAAC,GAAA,CAAI,EAAE,MAAM,CAAA,EAAG,GAAA,CAAI,CAAA,CAAE,YAAY,CAAC,CAAA,CAAE,OAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAChG,IAAA,MAAM,IAAA,GAAO,QAAQ,GAAG,CAAA;AACxB,IAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,GAAA,CAAI,KAAK,CAAA;AAC3B,IAAA,MAAM,WAAA,GAAc,MAAA,KAAW,QAAA,IAAY,CAAC,IAAA;AAC5C,IAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AACzC,IAAA,MAAM,IAAA,GAAO,CAAC,IAAA,KAA0B;AACtC,MAAA,MAAM,QAAQ,IAAA,KAAS,KAAA,GAAQ,EAAE,aAAa,CAAA,GAAI,EAAE,aAAa,CAAA;AACjE,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,CAAA,CAAE,oBAAoB,CAAA,EAAG,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,SAAA,CAAU,WAAA,EAAY,EAAG,IAAA,EAAM,QAAQ,KAAA,IAAS,EAAA,EAAI,CAAA,CAAE,OAAA,CAAQ,OAAA,EAAS,GAAG,CAAA,CAAE,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA,CAAE,IAAA,EAAK;AACxK,MAAA,MAAM,IAAA,GAAO,QAAA,GAAW,GAAA,EAAK,IAAI,CAAA;AACjC,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,uBACER,GAAAA,CAAC,GAAA,EAAA,EAAa,IAAA,EAAY,UAAQ,IAAA,EAAC,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,YAAA,EAAY,IAAA,EAAM,0BAAA,EAA0B,IAAA,EACpG,mBADK,IAER,CAAA;AAAA,MAEJ;AACA,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,uBACEA,GAAAA,CAAC,QAAA,EAAA,EAAkB,MAAK,QAAA,EAAS,SAAA,EAAW,GAAG,QAAA,EAAU,YAAA,EAAY,MAAM,OAAA,EAAS,MAAM,WAAW,GAAA,EAAK,IAAI,GAAG,0BAAA,EAA0B,IAAA,EACxI,mBADU,IAEb,CAAA;AAAA,MAEJ;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AACA,IAAA,uBACED,IAAAA,CAAC,IAAA,EAAA,EAAgB,SAAA,EAAW,GAAG,GAAA,EAAK,qBAAA,EAAmB,IAAA,EAAC,sBAAA,EAAsB,IAAI,IAAA,KAAS,aAAA,GAAgB,aAAA,GAAgB,SAAA,EAAW,0BAAwB,MAAA,EAC5J,QAAA,EAAA;AAAA,sBAAAA,KAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,2BAAuB,IAAA,EAC9C,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,YAAQ,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,QAClB,IAAA,mBAAOD,IAAAA,CAAAE,QAAAA,EAAA,EAAE,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UAAE;AAAA,SAAA,EAAK,CAAA,GAAM,IAAA;AAAA,QAAK,QAAA;AAAA,wBAAGD,GAAAA,CAAC,MAAA,EAAA,EAAK,uBAAA,EAAqB,IAAA,EAAE,mBAAS,CAAA,EAAG,gBAAA,EAAkB,GAAA,CAAI,MAAM,CAAA,EAAE,CAAA;AAAA,QACrG,IAAA,mBACCD,IAAAA,CAAAE,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,0BACDD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,MAAM,sBAAA,EAAoB,IAAA,EAC3C,QAAA,EAAA,CAAA,CAAE,cAAc,CAAA,EACnB;AAAA,SAAA,EACF,CAAA,GACE;AAAA,OAAA,EACN,CAAA;AAAA,MACC,MAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,wBAAA,EAAsB,IAAA,EAC1C,QAAA,EAAA,IAAA,CAAK,CAAA,CAAE,sBAAsB,CAAA,EAAG,EAAE,KAAA,EAAO,OAAA,CAAQ,MAAM,CAAA,IAAK,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA,IAAK,EAAA,EAAI,CAAA,CAAE,IAAA,EAAK,EAC/F,CAAA,GACE,IAAA;AAAA,MACH,KAAA,IAAS,CAAC,IAAA,mBACTD,IAAAA,CAAC,OAAE,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,uBAAA,EAAqB,IAAA,EACzC,QAAA,EAAA;AAAA,QAAA,CAAA,CAAE,eAAe,CAAA;AAAA,QAAE,IAAA;AAAA,wBAAEC,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,EAAM;AAAA,OAAA,EACrC,CAAA,GACE,IAAA;AAAA,sBACJD,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,IAAA,EACd,QAAA,EAAA;AAAA,QAAA,GAAA,CAAI,SAAA,mBAAYC,GAAAA,CAAC,IAAA,EAAA,EAAK,OAAO,GAAA,CAAI,SAAA,EAAW,MAAM,IAAA,CAAK,CAAA,CAAE,gBAAgB,CAAA,EAAG,EAAE,MAAM,IAAA,CAAK,GAAA,CAAI,SAAS,CAAA,IAAK,EAAA,EAAI,CAAA,EAAG,CAAA,GAAK,IAAA;AAAA,QACvH,KAAA,mBAAQD,IAAAA,CAAAE,QAAAA,EAAA,EAAE,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UAAI,EAAE,eAAe,CAAA;AAAA,UAAE,IAAA;AAAA,UAAG;AAAA,SAAA,EAAM,CAAA,GAAM;AAAA,OAAA,EACnD,CAAA;AAAA,MACC,WAAW,SAAA,IAAa,MAAA,KAAW,WAAW,MAAA,KAAW,WAAA,mBACxDD,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,IAAA,EAAM,wBAAoB,IAAA,EACxC,QAAA,EAAA,CAAA,CAAE,sBAAsB,MAAM,CAAA,CAAE,GACnC,CAAA,GACE,IAAA;AAAA,MACH,WAAA,KAAgB,QAAA,IAAY,UAAA,CAAA,mBAC3BD,IAAAA,CAAC,OAAE,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,yBAAA,EAAuB,IAAA,EAC9C,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,KAAK,CAAA;AAAA,QACV,KAAK,KAAK;AAAA,OAAA,EACb,CAAA,GACE;AAAA,KAAA,EAAA,EArCG,IAAI,EAsCb,CAAA;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,MAAA,GAAS,OAAA,CAAQ,MAAA,GAAS,CAAA;AACjD,EAAA,uBACEA,KAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,GAAG,IAAA,EAAM,iBAAA,EAAiB,OAAA,EAAS,kBAAA,EAAgB,IAAA,EACrE,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,WAAQ,EAAA,EAAI,OAAA,EAAS,WAAW,EAAA,CAAG,KAAA,EACjC,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EACpB,CAAA;AAAA,IACC,QAAA,mBACCD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,KAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,uBAAA,EAAsB,UAAA,EAC3D,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EAAE,CAAA;AAAA,MACtB,OAAA,mBACCD,IAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,eAAA,EAAa,IAAA,EACvE,QAAA,EAAA;AAAA,QAAA,CAAA,CAAE,eAAe,CAAA;AAAA,wBAClBA,KAAC,MAAA,EAAA,EAAO,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UAAE,EAAE,eAAe;AAAA,SAAA,EAAE;AAAA,OAAA,EAC/B,CAAA,GACE;AAAA,KAAA,EACN,IACE,OAAA,mBACFA,IAAAA,CAAC,IAAA,EAAA,EAAG,wBAAoB,IAAA,EACrB,QAAA,EAAA;AAAA,MAAA,MAAA,CAAO,GAAA,CAAI,CAAC,EAAE,OAAA,EAAS,WAAA,EAAY,qBAClCA,IAAAA,CAAC,IAAA,EAAA,EAAoB,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,yBAAqB,IAAA,EAC7D,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,IAAA,EAAA,EAAI,QAAA,EAAA,SAAA,CAAU,OAAO,CAAA,EAAE,CAAA;AAAA,QACvB,YAAY,MAAA,mBACXA,IAAC,IAAA,EAAA,EAAG,SAAA,EAAW,GAAG,WAAA,EAAa,8BAAA,EAA4B,MACxD,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,EAAA,KAAO,SAAA,CAAU,IAAI,OAAO,CAAC,GACjD,CAAA,GACE;AAAA,OAAA,EAAA,EANG,OAAA,CAAQ,EAOjB,CACD,CAAA;AAAA,MACA,OAAA,CAAQ,IAAI,CAAC,EAAA,qBACZA,GAAAA,CAAC,IAAA,EAAA,EAAe,WAAW,EAAA,CAAG,KAAA,EAAO,yBAAqB,IAAA,EACxD,QAAA,kBAAAA,IAAC,IAAA,EAAA,EAAI,QAAA,EAAA,SAAA,CAAU,EAAE,CAAA,EAAE,CAAA,EAAA,EADZ,EAAA,CAAG,EAEZ,CACD;AAAA,KAAA,EACH,CAAA,GACE,WAAW,aAAA,mBACbA,IAAC,KAAA,EAAA,EAAI,yBAAA,EAAuB,IAAA,EAAE,QAAA,EAAA,aAAA,CAAc,OAAO,CAAA,EAAE,oBAErDA,GAAAA,CAAC,OAAE,SAAA,EAAW,EAAA,CAAG,OAAO,uBAAA,EAAqB,IAAA,EAC1C,QAAA,EAAA,CAAA,CAAE,cAAc,CAAA,EACnB,CAAA;AAAA,IAED;AAAA,GAAA,EACH,CAAA;AAEJ;ACtJO,SAAS,QAAQ,EAAE,KAAA,EAAO,OAAO,MAAA,GAAS,EAAA,EAAI,WAAU,EAAiB;AAC9E,EAAA,MAAM,CAAA,GAAI,OAAA,CAAQ,MAAM,eAAA,CAAgB,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAA,EAAG,CAAC,KAAA,EAAO,MAAM,CAAC,CAAA;AAC3E,EAAA,IAAI,CAAC,GAAG,OAAO,IAAA;AACf,EAAA,uBACEA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAsB,SAAS,CAAA,IAAA,EAAO,CAAA,CAAE,KAAK,CAAA,CAAA,EAAI,CAAA,CAAE,MAAM,IAAI,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAQ,MAAK,KAAA,EAAM,YAAA,EAAY,KAAA,EAAO,cAAA,EAAe,YAAA,EAAa,IAAA,EAAK,QAAO,6BAAA,EAA2B,IAAA,EAClM,YAAE,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,qBACZA,GAAAA,CAAC,MAAA,EAAA,EAAe,CAAA,EAAG,CAAA,CAAE,GAAG,CAAA,EAAG,CAAA,EAAG,KAAA,EAAO,CAAA,CAAE,CAAA,EAAG,MAAA,EAAQ,EAAE,MAAA,EAAA,EAAzC,CAAA,CAAE,CAA+C,CAC7D,CAAA,EACH,CAAA;AAEJ;AAiBA,eAAe,YAAA,CAAa,OAAA,EAAyB,IAAA,EAA4B,IAAA,EAAwF;AACvK,EAAA,MAAM,CAAA,GAAI,UAAU,OAAO,CAAA;AAC3B,EAAA,IAAI,CAAC,CAAA,EAAG;AACR,EAAA,MAAM,EAAE,qBAAA,EAAsB,GAAI,MAAM,OAAO,gCAAuB,CAAA;AACtE,EAAA,MAAM,IAAA,GAAO,qBAAA,CAAsB,CAAA,EAAG,EAAE,QAAQ,IAAA,CAAK,MAAA,EAAQ,GAAI,IAAA,CAAK,QAAA,GAAW,EAAE,QAAA,EAAU,IAAA,CAAK,UAAS,GAAI,EAAC,EAAI,GAAI,IAAA,CAAK,QAAA,GAAW,EAAE,QAAA,EAAU,KAAK,QAAA,EAAS,GAAI,EAAC,EAAI,aAAa,IAAA,KAAS,OAAA,EAAS,SAAA,EAAW,IAAA,KAAS,SAAS,CAAA;AACvO,EAAA,MAAM,GAAA,GAAM,GAAA,CAAI,eAAA,CAAgB,IAAI,IAAA,CAAK,CAAC,IAAI,CAAA,EAAG,EAAE,IAAA,EAAM,yBAAA,EAA2B,CAAC,CAAA;AACrF,EAAA,MAAM,WAAW,MAAM;AACrB,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,aAAA,CAAc,GAAG,CAAA;AACpC,IAAA,CAAA,CAAE,IAAA,GAAO,GAAA;AACT,IAAA,CAAA,CAAE,QAAA,GAAW,oBAAA;AACb,IAAA,CAAA,CAAE,KAAA,EAAM;AAAA,EACV,CAAA;AACA,EAAA,IAAI,SAAS,OAAA,EAAS;AAEpB,IAAA,MAAM,CAAA,GAAI,MAAA,CAAO,IAAA,CAAK,GAAA,EAAK,QAAQ,CAAA;AACnC,IAAA,IAAI,CAAA,IAAK,MAAA,GAAS,IAAA;AAAA,SACb,QAAA,EAAS;AAAA,EAChB,OAAO,QAAA,EAAS;AAChB,EAAA,UAAA,CAAW,MAAM,GAAA,CAAI,eAAA,CAAgB,GAAG,GAAG,GAAM,CAAA;AACnD;AAEO,SAAS,kBAAA,CAAmB,EAAE,OAAA,EAAS,WAAA,EAAa,UAAU,YAAA,GAAe,CAAA,EAAG,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,QAAA,EAAU,GAAG,MAAK,EAA4B;AACxJ,EAAA,MAAM,EAAE,GAAM,IAAA,EAAM,QAAQ,QAAA,EAAS,GAAI,eAAe,IAAI,CAAA;AAC5D,EAAA,MAAM,UAAU,CAAA,WAAA,EAAcQ,KAAAA,GAAQ,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AACvD,EAAA,MAAM,CAAA,GAAI,UAAU,OAAO,CAAA;AAC3B,EAAA,IAAI,CAAC,GAAG,OAAO,IAAA;AACf,EAAA,MAAM,OAAA,GAAU,QAAQ,MAAA,KAAW,SAAA;AACnC,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,MAAM,IAAA,GAAO,aAAa,CAAC,CAAA;AAC3B,EAAA,MAAM,cAAc,QAAA,CAAS,CAAA,EAAG,kBAAkB,CAAA,CAAE,MAAA,EAAQ,aAAa,CAAA;AACzE,EAAA,MAAM,KAAA,GAAQ,UAAU,OAAA,CAAQ,KAAA,EAAO,MAAM,CAAA,IAAK,SAAA,CAAU,CAAA,CAAE,MAAA,EAAQ,MAAM,CAAA;AAC5E,EAAA,MAAM,SAAA,GAAY,CAAA,CAAE,SAAA,IAAa,CAAA,CAAE,KAAA;AACnC,EAAA,MAAM,UAAU,IAAA,CAAK,CAAA,CAAE,UAAA,IAAc,OAAA,CAAQ,YAAY,UAAU,CAAA;AAEnE,EAAA,uBACET,IAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,iBAAA,EAAiB,OAAA,EAAS,iBAAA,EAAe,IAAA,EAAC,wBAAA,EAAwB,OAAA,GAAU,YAAY,iBAAA,EACnH,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,EAAA,CAAG,MAAA,EACpB,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,WAAQ,EAAA,EAAI,OAAA,EAAS,WAAW,EAAA,CAAG,MAAA,EAAQ,wBAAA,EAAsB,IAAA,EAC/D,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,sBACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,EAAA,CAAG,KAAA,EAAO,yBAAqB,IAAA,EAAC,cAAA,EAAc,OAAA,GAAU,OAAA,GAAU,WAChF,QAAA,EAAA,OAAA,GAAU,CAAA,CAAE,iBAAiB,CAAA,GAAI,CAAA,CAAE,iBAAiB,CAAA,EACvD;AAAA,KAAA,EACF,CAAA;AAAA,IACC,CAAA,CAAE,4BACDD,IAAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,2BAAA,EAAyB,IAAA,EACjD,QAAA,EAAA;AAAA,sBAAAC,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,KAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,mBAAmB,CAAA,EAAE,CAAA;AAAA,sBAChDA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,KAAA,EAAO,uBAAA,EAAqB,IAAA,EAC1C,QAAA,EAAA,CAAA,CAAE,SAAA,EACL;AAAA,KAAA,EACF,CAAA,GACE,IAAA;AAAA,IACH,CAAA,CAAE,wBACDD,IAAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,uBAAA,EAAqB,IAAA,EAC7C,QAAA,EAAA;AAAA,sBAAAC,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,KAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EAAE,CAAA;AAAA,sBAC5CA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,KAAA,EAAO,uBAAA,EAAqB,IAAA,EAC1C,QAAA,EAAA,CAAA,CAAE,KAAA,EACL;AAAA,KAAA,EACF,CAAA,GACE,IAAA;AAAA,IACH,IAAA,IAAQ,CAAC,OAAA,mBACRA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,yBAAA,EAAuB,IAAA,EACjD,QAAA,kBAAAA,GAAAA,CAAC,WAAQ,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,IAAA,CAAK,CAAA,CAAE,iBAAiB,CAAA,EAAG,EAAE,IAAA,EAAM,CAAA,EAAG,CAAA,EACrE,CAAA,GACE,IAAA;AAAA,IACH,OAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,wBAAA,EAAsB,IAAA,EAC7C,QAAA,kBAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,OAAO,CAAA,CAAE,UAAA,IAAc,OAAA,CAAQ,UAAA,EAAY,IAAA,EAAM,IAAA,CAAK,CAAA,CAAE,OAAA,GAAU,mBAAA,GAAsB,iBAAiB,CAAA,EAAG,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA,EAAG,GACxI,CAAA,GACE,IAAA;AAAA,IACH,KAAA,mBACCD,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,KAAA,EAAO,yBAAqB,IAAA,EAC3C,QAAA,EAAA;AAAA,sBAAAA,KAAC,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,QAAA,CAAA,CAAE,eAAe,CAAA;AAAA,QAAE;AAAA,OAAA,EAAE,CAAA;AAAA,sBAC5BC,GAAAA,CAAC,QAAA,EAAA,EAAQ,QAAA,EAAA,KAAA,EAAM;AAAA,KAAA,EACjB,CAAA,GACE,IAAA;AAAA,IACH,OAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,IAAA,EAAM,gCAA4B,IAAA,EAChD,QAAA,EAAA,CAAA,CAAE,qBAAqB,CAAA,EAC1B,CAAA,mBAEAD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,OAAA,EAAS,2BAAuB,IAAA,EAChD,QAAA,EAAA;AAAA,MAAA,WAAA,mBACCA,IAAAA,CAAAE,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAAF,KAAC,GAAA,EAAA,EAAE,IAAA,EAAM,YAAY,OAAA,EAAS,EAAE,UAAU,KAAA,EAAO,CAAA,EAAG,MAAA,EAAO,UAAS,GAAA,EAAI,UAAA,EAAW,WAAW,EAAA,CAAG,OAAA,EAAS,yBAAqB,IAAA,EAC5H,QAAA,EAAA;AAAA,UAAA,CAAA,CAAE,eAAe,CAAA;AAAA,0BAClBA,KAAC,MAAA,EAAA,EAAO,QAAA,EAAA;AAAA,YAAA,GAAA;AAAA,YAAE,EAAE,eAAe;AAAA,WAAA,EAAE;AAAA,SAAA,EAC/B,CAAA;AAAA,wBACAC,IAAC,GAAA,EAAA,EAAE,IAAA,EAAM,YAAY,OAAA,EAAS,EAAE,UAAU,IAAA,EAAM,GAAG,QAAA,EAAQ,IAAA,EAAC,WAAW,EAAA,CAAG,SAAA,EAAW,4BAAwB,IAAA,EAC1G,QAAA,EAAA,CAAA,CAAE,kBAAkB,CAAA,EACvB;AAAA,OAAA,EACF,CAAA,mBAEAD,IAAAA,CAAAE,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,YAAO,IAAA,EAAK,QAAA,EAAS,WAAW,EAAA,CAAG,OAAA,EAAS,OAAA,EAAS,MAAM,KAAK,YAAA,CAAa,SAAS,OAAA,EAAS,EAAE,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAU,GAAG,uBAAA,EAAqB,IAAA,EACnJ,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EACpB,CAAA;AAAA,wBACAA,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,WAAW,EAAA,CAAG,SAAA,EAAW,OAAA,EAAS,MAAM,KAAK,YAAA,CAAa,SAAS,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAU,GAAG,0BAAA,EAAwB,IAAA,EAC3J,QAAA,EAAA,CAAA,CAAE,kBAAkB,CAAA,EACvB;AAAA,OAAA,EACF,CAAA;AAAA,MAED,SAAA,mBACCA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,CAAA,CAAE,SAAA,GAAY,CAAA,CAAE,uBAAuB,CAAA,GAAI,CAAA,CAAE,mBAAmB,CAAA,EAAG,WAAA,EAAa,CAAA,CAAE,gBAAgB,CAAA,EAAG,WAAA,EAAa,CAAA,CAAE,oBAAoB,CAAA,EAAG,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,cAAA,EAAa,SAAA,EAAU,CAAA,GAC9N;AAAA,KAAA,EACN,CAAA;AAAA,IAED;AAAA,GAAA,EACH,CAAA;AAEJ;AAWO,SAAS,kBAAA,CAAmB,EAAE,QAAA,EAAU,WAAA,EAAa,UAAU,UAAA,EAAY,cAAA,EAAgB,EAAA,GAAK,EAAC,EAAG,YAAA,GAAe,CAAA,EAAG,GAAG,MAAK,EAA4B;AAC/J,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,CAAe,IAAI,CAAA;AACjC,EAAA,MAAM,UAAU,CAAA,WAAA,EAAcQ,KAAAA,GAAQ,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AACvD,EAAA,MAAM,KAAA,GAAA,CAAS,KAAA,CAAM,OAAA,CAAQ,QAAQ,IAAI,QAAA,GAAW,EAAC,EAAG,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,CAAC,SAAA,CAAU,CAAC,CAAC,CAAA;AACpF,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAC/B,EAAA,MAAM,SAAS,CAAC,GAAG,MAAM,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,MAAA,KAAW,SAAS,CAAA,EAAG,GAAG,MAAM,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,MAAA,KAAW,SAAS,CAAC,CAAA;AAC9G,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,MAAM,cAAe,YAAA,GAAe,CAAA;AACpC,EAAA,uBACET,KAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,GAAG,IAAA,EAAM,iBAAA,EAAiB,OAAA,EAAS,iBAAA,EAAe,IAAA,EACpE,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,WAAQ,EAAA,EAAI,OAAA,EAAS,WAAW,EAAA,CAAG,KAAA,EACjC,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EACpB,CAAA;AAAA,oBACAA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,KAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EAAE,CAAA;AAAA,oBAC5CA,IAAC,IAAA,EAAA,EAAG,SAAA,EAAW,GAAG,IAAA,EACf,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,qBACXA,IAAC,IAAA,EAAA,EAAc,SAAA,EAAW,EAAA,CAAG,IAAA,EAC3B,QAAA,kBAAAA,GAAAA,CAAC,sBAAmB,OAAA,EAAS,CAAA,EAAI,GAAI,WAAA,GAAc,EAAE,WAAA,KAAgB,EAAC,EAAK,GAAI,QAAA,GAAW,EAAE,UAAS,GAAI,EAAC,EAAK,GAAI,UAAA,GAAa,EAAE,YAAW,GAAI,EAAC,EAAI,YAAA,EAAc,WAAA,EAAc,GAAG,MAAM,CAAA,EAAA,EADpL,CAAA,CAAE,EAEX,CACD,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;;;ACpLA,IAAM,MAAA,GAA2C;AAAA,EAC/C,IAAA,EAAM,MAAA;AAAA,EACN,WAAA,EAAa,aAAA;AAAA,EACb,UAAA,EAAY,YAAA;AAAA,EACZ,YAAA,EAAc,cAAA;AAAA,EACd,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,QAAA,EAAU,UAAA;AAAA,EACV,aAAA,EAAe,UAAA;AAAA,EACf,YAAA,EAAc,cAAA;AAAA,EACd,MAAA,EAAQ,QAAA;AAAA,EACR,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO;AACT,CAAA;AAGA,IAAM,QAAA,GAAyC;AAAA,EAC7C,CAAC,QAAQ,MAAM,CAAA;AAAA,EACf,CAAC,QAAQ,MAAM,CAAA;AAAA,EACf,CAAC,YAAY,YAAY,CAAA;AAAA,EACzB,CAAC,aAAa,aAAa,CAAA;AAAA,EAC3B,CAAC,gBAAgB,MAAM,CAAA;AAAA,EACvB,CAAC,uBAAuB,cAAc,CAAA;AAAA,EACtC,CAAC,YAAY,UAAU,CAAA;AAAA,EACvB,CAAC,gEAAgE,QAAQ,CAAA;AAAA,EACzE,CAAC,uDAAuD,cAAc,CAAA;AAAA,EACtE,CAAC,iBAAiB,MAAM;AAC1B,CAAA;AAEA,IAAM,MAAA,GAAiC,EAAE,IAAA,EAAM,MAAA,EAAQ,YAAY,YAAA,EAAc,MAAA,EAAQ,YAAA,EAAc,IAAA,EAAM,oBAAoB,gBAAA,EAAkB,kBAAA,EAAoB,MAAA,EAAQ,QAAA,EAAU,UAAU,UAAA,EAAW;AAG9M,IAAM,GAAA,GAAM,0CAAA;AAGL,SAAS,iBAAiB,CAAA,EAAyC;AACxE,EAAA,OAAO,MAAM,CAAC,CAAA;AAChB;AAEA,SAAS,MAAM,CAAA,EAAyC;AACtD,EAAA,MAAM,GAAA,GAAM,OAAO,CAAA,CAAE,MAAA,KAAW,WAAW,CAAA,CAAE,MAAA,CAAO,aAAY,GAAI,EAAA;AACpE,EAAA,MAAM,UAAU,MAA+B;AAC7C,IAAA,MAAM,KAAA,GAAQ,OAAO,CAAA,CAAE,YAAA,KAAiB,QAAA,GAAW,CAAA,CAAE,YAAA,CAAa,WAAA,EAAY,CAAE,OAAA,CAAQ,QAAA,EAAU,GAAG,CAAA,GAAI,EAAA;AACzG,IAAA,KAAA,MAAW,CAAC,EAAA,EAAI,GAAG,CAAA,IAAK,QAAA,MAAc,EAAA,CAAG,IAAA,CAAK,KAAK,CAAA,EAAG,OAAO,GAAA;AAC7D,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AACA,EAAA,IAAI,GAAA,IAAO,GAAA,KAAQ,OAAA,IAAW,MAAA,CAAO,GAAG,CAAA,EAAG;AAEzC,IAAA,MAAM,IAAI,OAAA,EAAQ;AAClB,IAAA,OAAO,GAAA,KAAQ,WAAW,CAAA,KAAM,aAAA,IAAiB,MAAM,YAAA,CAAA,GAAgB,CAAA,GAAI,OAAO,GAAG,CAAA;AAAA,EACvF;AACA,EAAA,OAAO,OAAA,EAAQ,KAAM,GAAA,KAAQ,OAAA,GAAU,OAAA,GAAU,IAAA,CAAA;AACnD;AAYO,SAAS,YAAA,CAAa,CAAA,EAAgB,CAAA,EAAoB,OAAA,GAA+B,EAAC,EAAW;AAC1G,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,QAAA,GAAW,CAAC,CAAA;AACnC,EAAA,IAAI,OAAO,WAAW,QAAA,IAAY,MAAA,CAAO,MAAK,EAAG,OAAO,OAAO,IAAA,EAAK;AACpE,EAAA,MAAM,GAAA,GAAM,OAAO,CAAA,CAAE,YAAA,KAAiB,WAAW,CAAA,CAAE,YAAA,CAAa,MAAK,GAAI,EAAA;AACzE,EAAA,MAAM,GAAA,GAAM,MAAM,CAAC,CAAA;AACnB,EAAA,MAAM,KAAA,GAAQ,GAAA,IAAO,CAAC,GAAA,CAAI,KAAK,GAAG,CAAA;AAElC,EAAA,IAAI,KAAA,IAAS,OAAA,CAAQ,IAAA,CAAK,GAAG,GAAG,OAAO,GAAA;AACvC,EAAA,IAAI,GAAA,EAAK;AACP,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,CAAA,eAAA,EAAkB,GAAG,CAAA,CAAW,CAAA;AAC/C,IAAA,IAAI,GAAA,KAAQ,MAAA,IAAU,GAAA,KAAQ,aAAA,IAAiB,GAAA,KAAQ,cAAc,OAAO,KAAA,IAAS,GAAA,KAAQ,OAAA,GAAU,GAAA,GAAM,IAAA;AAC7G,IAAA,MAAM,QAAA,GAAW,OAAO,CAAA,CAAE,KAAA,KAAU,WAAW,CAAA,CAAE,KAAA,CAAM,MAAK,GAAI,EAAA;AAChE,IAAA,MAAM,KAAA,GAAQ,QAAA,GAAY,MAAA,CAAO,QAAA,CAAS,WAAA,EAAY,CAAE,OAAA,CAAQ,OAAA,EAAS,GAAG,CAAC,CAAA,IAAK,QAAA,GAAY,EAAA;AAC9F,IAAA,MAAM,KAAA,GAAQ,OAAO,CAAA,CAAE,KAAA,KAAU,YAAY,WAAA,CAAY,IAAA,CAAK,CAAA,CAAE,KAAA,CAAM,MAAM,CAAA,GAAI,CAAA,CAAE,KAAA,CAAM,MAAK,GAAI,EAAA;AACjG,IAAA,OAAO,CAAA,EAAG,IAAI,CAAA,EAAG,KAAA,GAAQ,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,GAAK,EAAE,CAAA,EAAG,KAAA,GAAQ,CAAA,0BAAA,EAAS,KAAK,KAAK,EAAE,CAAA,CAAA;AAAA,EAC3E;AACA,EAAA,OAAO,KAAA,GAAQ,GAAA,GAAM,CAAA,CAAE,wBAAwB,CAAA;AACjD;ACvEA,IAAM,IAAA,GAAO,CAAC,CAAA,KAAgB,CAAA,KAAM,cAAc,MAAA,GAAS,CAAA,KAAM,WAAW,SAAA,GAAY,SAAA;AAEjF,SAAS,UAAA,CAAW,EAAE,OAAA,EAAS,SAAA,GAAY,OAAO,QAAA,EAAU,OAAA,EAAS,YAAA,GAAe,CAAA,EAAG,YAAY,EAAA,GAAK,EAAC,EAAG,GAAG,MAAK,EAAoB;AAC7I,EAAA,MAAM,EAAE,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK,GAAI,eAAe,IAAI,CAAA;AAC/C,EAAA,MAAM,UAAU,CAAA,WAAA,EAAcQ,KAAAA,GAAQ,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AACvD,EAAA,MAAM,KAAA,GAAA,CAAS,MAAM,OAAA,CAAQ,OAAO,IAAI,OAAA,GAAU,IAAI,MAAA,CAAO,CAAC,MAAmB,CAAC,CAAC,KAAK,OAAO,CAAA,KAAM,YAAY,OAAO,CAAA,CAAE,OAAO,QAAQ,CAAA;AACzI,EAAA,IAAI,CAAC,QAAA,IAAY,KAAA,CAAM,WAAW,CAAA,IAAK,CAAC,WAAW,OAAO,IAAA;AAC1D,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,uBACET,KAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,GAAG,IAAA,EAAM,iBAAA,EAAiB,OAAA,EAAS,iBAAA,EAAe,IAAA,EACpE,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,WAAQ,EAAA,EAAI,OAAA,EAAS,WAAW,EAAA,CAAG,KAAA,EACjC,QAAA,EAAA,CAAA,CAAE,cAAc,CAAA,EACnB,CAAA;AAAA,IACC,QAAA,mBACCD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,KAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,uBAAA,EAAsB,SAAA,EAC3D,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EAAE,CAAA;AAAA,MACtB,OAAA,mBACCD,IAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,eAAA,EAAa,IAAA,EACvE,QAAA,EAAA;AAAA,QAAA,CAAA,CAAE,eAAe,CAAA;AAAA,wBAClBA,KAAC,MAAA,EAAA,EAAO,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UAAE,EAAE,cAAc;AAAA,SAAA,EAAE;AAAA,OAAA,EAC9B,CAAA,GACE;AAAA,KAAA,EACN,IACE,KAAA,CAAM,MAAA,KAAW,CAAA,mBACnBC,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,KAAA,EAAQ,YAAE,aAAa,CAAA,EAAE,oBAE1CA,GAAAA,CAAC,QAAG,SAAA,EAAW,EAAA,CAAG,IAAA,EACf,QAAA,EAAA,KAAA,CAAM,IAAI,CAAC,CAAA,qBACVD,IAAAA,CAAC,IAAA,EAAA,EAAc,WAAW,EAAA,CAAG,IAAA,EAAM,gBAAA,EAAc,IAAA,EAAC,yBAAuB,OAAO,CAAA,CAAE,WAAW,QAAA,GAAW,CAAA,CAAE,SAAS,SAAA,EACjH,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,uBAAA,EAAqB,IAAA,EAC9C,QAAA,EAAA,SAAA,CAAU,CAAA,CAAE,MAAA,EAAQ,MAAM,CAAA,IAAK,EAAA,EAClC,CAAA;AAAA,MAAQ,GAAA;AAAA,sBACRA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,QAAQ,cAAA,EAAc,IAAA,CAAK,CAAA,CAAE,MAAM,GACpD,QAAA,EAAA,QAAA,CAAS,CAAA,EAAG,eAAA,EAAiB,CAAA,CAAE,MAAM,CAAA,EACxC,CAAA;AAAA,sBACAD,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,IAAA,EACjB,QAAA,EAAA;AAAA,QAAA,GAAA,CAAI,EAAE,YAAY,CAAA,mBAAIA,IAAAA,CAAAE,UAAA,EAAE,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UAAI,YAAA,CAAa,EAAE,YAAA,EAAc,CAAA,CAAE,YAAA,IAAgB,EAAA,EAAI,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,EAAG,CAAC;AAAA,SAAA,EAAE,CAAA,GAAM,IAAA;AAAA,QAC5H,CAAA,CAAE,YAAA,mBACDF,IAAAA,CAAAE,UAAA,EACG,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,0BACDD,GAAAA,CAAC,IAAA,EAAA,EAAK,OAAO,CAAA,CAAE,YAAA,EAAc,MAAM,IAAA,CAAK,CAAA,CAAE,kBAAkB,CAAA,EAAG,EAAE,MAAM,IAAA,CAAK,CAAA,CAAE,YAAY,CAAA,IAAK,EAAA,EAAI,CAAA,EAAG;AAAA,SAAA,EACxG,IACE,CAAA,CAAE,UAAA,mBACJD,IAAAA,CAAAE,UAAA,EACG,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,0BACDD,GAAAA,CAAC,IAAA,EAAA,EAAK,OAAO,CAAA,CAAE,UAAA,EAAY,MAAM,IAAA,CAAK,CAAA,CAAE,kBAAkB,CAAA,EAAG,EAAE,MAAM,IAAA,CAAK,CAAA,CAAE,UAAU,CAAA,IAAK,EAAA,EAAI,CAAA,EAAG;AAAA,SAAA,EACpG,CAAA,GACE;AAAA,OAAA,EACN;AAAA,KAAA,EAAA,EApBO,CAAA,CAAE,EAqBX,CACD,CAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAWO,SAAS,cAAA,CAAe,EAAE,QAAA,EAAU,YAAA,GAAe,CAAA,EAAG,WAAA,EAAa,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,GAAG,IAAA,EAAK,EAAwB;AAC7H,EAAA,MAAM,EAAE,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK,GAAI,eAAe,IAAI,CAAA;AAC/C,EAAA,MAAM,UAAU,CAAA,YAAA,EAAeQ,KAAAA,GAAQ,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AACxD,EAAA,MAAM,KAAA,GAAA,CAAS,MAAM,OAAA,CAAQ,QAAQ,IAAI,QAAA,GAAW,IAAI,MAAA,CAAO,CAAC,MAAwB,CAAC,CAAC,KAAK,OAAO,CAAA,KAAM,YAAY,OAAO,CAAA,CAAE,iBAAiB,QAAQ,CAAA;AAC1J,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAC/B,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,uBACET,KAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,GAAG,IAAA,EAAM,iBAAA,EAAiB,OAAA,EAAS,kBAAA,EAAgB,IAAA,EACrE,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,WAAQ,EAAA,EAAI,OAAA,EAAS,WAAW,EAAA,CAAG,KAAA,EACjC,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EACpB,CAAA;AAAA,oBACAA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,IAAA,EACf,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBACbD,KAAC,IAAA,EAAA,EAAkC,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,iBAAA,EAAe,IAAA,EAAC,4BAAA,EAA4B,gBAAA,CAAiB,CAAC,CAAA,IAAK,SAAA,EAAW,wBAAA,EAAwB,OAAO,CAAA,CAAE,MAAA,KAAW,QAAA,GAAW,CAAA,CAAE,SAAS,SAAA,EACrM,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,wBAAA,EAAsB,IAAA,EAAE,uBAAa,CAAA,EAAG,CAAA,EAAG,WAAA,GAAc,EAAE,QAAA,EAAU,WAAA,EAAY,GAAI,EAAE,CAAA,EAAE,CAAA;AAAA,MAC9F,SAAA,CAAU,EAAE,MAAA,EAAQ,MAAM,oBAAID,IAAAA,CAAAE,UAAA,EAAE,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBAAGD,GAAAA,CAAC,MAAA,EAAA,EAAM,oBAAU,CAAA,CAAE,MAAA,EAAQ,MAAM,CAAA,EAAE;AAAA,OAAA,EAAO,CAAA,GAAM,IAAA;AAAA,MAAK,OAAA;AAAA,MAAG,GAAA;AAAA,sBAC5FA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,MAAA,EAAQ,cAAA,EAAc,EAAE,MAAA,KAAW,QAAA,GAAW,YAAY,CAAA,CAAE,MAAA,KAAW,SAAS,MAAA,GAAS,SAAA,EAC1G,mBAAS,CAAA,EAAG,gBAAA,EAAkB,CAAA,CAAE,MAAM,CAAA,EACzC,CAAA;AAAA,MACC,EAAE,OAAA,mBACDD,KAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,IAAA,EACjB,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACDC,GAAAA,CAAC,IAAA,EAAA,EAAK,OAAO,CAAA,CAAE,OAAA,EAAS,MAAM,IAAA,CAAK,CAAA,CAAE,gBAAgB,CAAA,EAAG,EAAE,MAAM,IAAA,CAAK,CAAA,CAAE,OAAO,CAAA,IAAK,EAAA,EAAI,CAAA,EAAG;AAAA,OAAA,EAC5F,CAAA,GACE;AAAA,KAAA,EAAA,EAXG,GAAG,CAAA,CAAE,YAAY,IAAI,CAAC,CAAA,CAY/B,CACD,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;ACtGA,SAAS,UAAU,MAAA,EAA2D;AAC5E,EAAA,MAAM,MAAM,qBAAA,EAAsB;AAClC,EAAA,OAAO,MAAA,IAAU,KAAK,MAAA,IAAU,IAAA;AAClC;AAEA,IAAM,OAAA,GAAU,CAAC,CAAA,KAAuB,CAAA,YAAa,QAAQ,CAAA,GAAI,IAAI,MAAM,gBAAgB,CAAA;AAG3F,IAAM,GAAA,uBAAU,OAAA,EAAwB;AACxC,IAAI,GAAA,GAAM,CAAA;AACV,SAAS,UAAU,CAAA,EAAoC;AACrD,EAAA,IAAI,CAAC,GAAG,OAAO,MAAA;AACf,EAAA,IAAI,CAAA,GAAI,GAAA,CAAI,GAAA,CAAI,CAAC,CAAA;AACjB,EAAA,IAAI,CAAC,GAAG,GAAA,CAAI,GAAA,CAAI,GAAI,CAAA,GAAI,CAAA,CAAA,EAAI,EAAE,GAAG,CAAA,CAAG,CAAA;AACpC,EAAA,OAAO,CAAA;AACT;AAqBA,SAAS,aAAA,CAAiB,SAAA,EAAuG,MAAA,EAAiC,OAAA,EAA2C,GAAA,EAAqC;AAGhP,EAAA,MAAM,QAAQ,CAAA,EAAG,SAAA,CAAU,MAAM,CAAC,IAAI,GAAG,CAAA,CAAA;AACzC,EAAA,MAAM,QAAQ,CAAC,MAAA,MAA8D,EAAE,MAAA,EAAQ,OAAO,EAAC,EAAG,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,MAAM,KAAA,EAAM,CAAA;AAChK,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIE,QAAAA;AAAA,IAA6B,MACrD,OAAA,GACI,EAAE,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,OAAA,CAAQ,KAAA,IAAS,EAAC,EAAG,KAAA,EAAO,IAAA,EAAM,QAAQ,OAAA,CAAQ,SAAA,EAAW,UAAA,IAAc,IAAA,EAAM,OAAA,EAAS,CAAC,CAAC,OAAA,CAAQ,SAAA,EAAW,aAAA,EAAe,KAAA,EAAO,OAAA,CAAQ,WAAA,IAAe,IAAA,EAAM,KAAA,EAAM,GAClM,MAAM,SAAS;AAAA,GACrB;AACA,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,KAAA,GAAQJ,OAA+B,IAAI,CAAA;AACjD,EAAA,MAAM,IAAA,GAAOA,OAA+B,IAAI,CAAA;AAChD,EAAA,MAAM,QAAA,GAAWA,OAAO,SAAS,CAAA;AACjC,EAAA,QAAA,CAAS,OAAA,GAAU,SAAA;AAEnB,EAAA,MAAM,KAAA,GAAQW,YAAY,MAAM;AAC9B,IAAA,KAAA,CAAM,SAAS,KAAA,EAAM;AACrB,IAAA,IAAA,CAAK,SAAS,KAAA,EAAM;AACpB,IAAA,cAAA,CAAe,KAAK,CAAA;AACpB,IAAA,IAAI,CAAC,MAAA,EAAQ;AAEX,MAAA,QAAA,CAAS,KAAA,CAAM,SAAS,CAAC,CAAA;AACzB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,GAAA,GAAM,IAAI,eAAA,EAAgB;AAChC,IAAA,KAAA,CAAM,OAAA,GAAU,GAAA;AAChB,IAAA,QAAA,CAAS,CAAC,CAAA,KAAO,CAAA,CAAE,KAAA,KAAU,KAAA,IAAS,EAAE,KAAA,CAAM,MAAA,GAAS,EAAE,GAAG,GAAG,KAAA,EAAO,IAAA,EAAK,GAAI,KAAA,CAAM,SAAS,CAAE,CAAA;AAChG,IAAA,QAAA,CAAS,OAAA,CAAQ,MAAA,EAAQ,IAAA,EAAM,GAAA,CAAI,MAAM,CAAA,CAAE,IAAA;AAAA,MACzC,CAAC,IAAA,KAAS,CAAC,GAAA,CAAI,OAAO,OAAA,IAAW,QAAA,CAAS,EAAE,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,CAAK,SAAA,EAAW,UAAA,IAAc,IAAA,EAAM,SAAS,CAAC,CAAC,IAAA,CAAK,SAAA,EAAW,eAAe,KAAA,EAAO,IAAA,CAAK,WAAA,IAAe,IAAA,EAAM,OAAO,CAAA;AAAA,MACjO,CAAC,CAAA,KAAe,CAAC,GAAA,CAAI,MAAA,CAAO,OAAA,IAAW,QAAA,CAAS,CAAC,CAAA,KAAO,CAAA,CAAE,KAAA,KAAU,KAAA,GAAQ,EAAE,GAAG,CAAA,EAAG,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,OAAA,CAAQ,CAAC,CAAA,KAAM,EAAE,GAAG,KAAA,CAAM,OAAO,CAAA,EAAG,KAAA,EAAO,OAAA,CAAQ,CAAC,GAAI;AAAA,KACtK;AAAA,EAEF,CAAA,EAAG,CAAC,MAAA,EAAQ,KAAK,CAAC,CAAA;AAElB,EAAAN,UAAU,MAAM;AACd,IAAA,IAAI,EAAE,OAAA,IAAW,KAAA,CAAM,KAAA,KAAU,QAAQ,KAAA,EAAM;AAC/C,IAAA,OAAO,MAAM;AACX,MAAA,KAAA,CAAM,SAAS,KAAA,EAAM;AACrB,MAAA,IAAA,CAAK,SAAS,KAAA,EAAM;AAAA,IACtB,CAAA;AAAA,EAGF,CAAA,EAAG,CAAC,KAAA,EAAO,KAAK,CAAC,CAAA;AAEjB,EAAA,MAAM,QAAA,GAAWM,YAAY,MAAM;AACjC,IAAA,IAAI,CAAC,UAAU,KAAA,CAAM,KAAA,KAAU,SAAS,CAAC,KAAA,CAAM,WAAW,WAAA,EAAa;AACvE,IAAA,MAAM,GAAA,GAAM,IAAI,eAAA,EAAgB;AAChC,IAAA,IAAA,CAAK,OAAA,GAAU,GAAA;AACf,IAAA,cAAA,CAAe,IAAI,CAAA;AACnB,IAAA,QAAA,CAAS,QAAQ,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAQ,GAAA,CAAI,MAAM,CAAA,CAAE,IAAA;AAAA,MACjD,CAAC,IAAA,KAAS;AAER,QAAA,IAAI,GAAA,CAAI,OAAO,OAAA,EAAS;AACxB,QAAA,cAAA,CAAe,KAAK,CAAA;AACpB,QAAA,QAAA,CAAS,CAAC,CAAA,KAAO,CAAA,CAAE,KAAA,KAAU,KAAA,GAAQ,IAAI,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,CAAC,GAAG,CAAA,CAAE,OAAO,GAAI,IAAA,CAAK,SAAS,EAAG,CAAA,EAAG,MAAA,EAAQ,KAAK,SAAA,EAAW,UAAA,IAAc,IAAA,EAAM,OAAA,EAAS,CAAC,CAAC,IAAA,CAAK,SAAA,EAAW,aAAA,EAAe,OAAO,IAAA,CAAK,WAAA,IAAe,EAAE,KAAA,EAAO,KAAA,EAAO,MAAO,CAAA;AAAA,MACvO,CAAA;AAAA,MACA,CAAC,CAAA,KAAe;AACd,QAAA,IAAI,GAAA,CAAI,OAAO,OAAA,EAAS;AACxB,QAAA,cAAA,CAAe,KAAK,CAAA;AACpB,QAAA,QAAA,CAAS,CAAC,CAAA,KAAO,CAAA,CAAE,KAAA,KAAU,KAAA,GAAQ,CAAA,GAAI,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,OAAA,CAAQ,CAAC,GAAI,CAAA;AAAA,MACvE;AAAA,KACF;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,KAAA,CAAM,OAAA,EAAS,KAAA,CAAM,MAAA,EAAQ,WAAW,CAAC,CAAA;AAEzE,EAAA,MAAM,OAAO,KAAA,CAAM,KAAA,KAAU,KAAA,GAAQ,KAAA,GAAQ,MAAM,SAAS,CAAA;AAC5D,EAAA,OAAO,EAAE,QAAQ,IAAA,CAAK,MAAA,EAAQ,OAAO,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,KAAA,EAAO,OAAA,EAAS,KAAK,OAAA,EAAS,WAAA,EAAa,KAAA,CAAM,KAAA,KAAU,KAAA,IAAS,WAAA,EAAa,YAAY,IAAA,CAAK,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,QAAA,EAAS;AAChM;AAWO,SAAS,iBAAA,CAAkB,EAAE,MAAA,EAAQ,KAAA,GAAQ,IAAI,OAAA,EAAQ,GAA8B,EAAC,EAA+B;AAC5H,EAAA,OAAO,aAAA,CAAqB,CAAC,CAAA,EAAG,KAAA,EAAO,MAAA,KAAW,CAAA,CAAE,QAAA,CAAS,MAAA,CAAO,EAAE,KAAA,EAAO,GAAI,KAAA,GAAQ,EAAE,KAAA,EAAM,GAAI,EAAC,EAAG,EAAG,EAAE,MAAA,EAAQ,CAAA,EAAG,SAAA,CAAU,MAAM,CAAA,EAAG,OAAA,EAAS,CAAA,OAAA,EAAU,KAAK,CAAA,CAAE,CAAA;AACxK;AAKO,SAAS,kBAAA,CAAmB,EAAE,MAAA,EAAQ,KAAA,GAAQ,IAAI,OAAA,EAAQ,GAA+B,EAAC,EAAwC;AACvI,EAAA,OAAO,aAAA,CAA8B,CAAC,CAAA,EAAG,KAAA,EAAO,MAAA,KAAW,CAAA,CAAE,QAAA,CAAS,eAAA,CAAgB,EAAE,KAAA,EAAO,GAAI,KAAA,GAAQ,EAAE,KAAA,EAAM,GAAI,EAAC,EAAG,EAAG,EAAE,MAAA,EAAQ,CAAA,EAAG,SAAA,CAAU,MAAM,CAAA,EAAG,OAAA,EAAS,CAAA,QAAA,EAAW,KAAK,CAAA,CAAE,CAAA;AAC3L;AA4BO,SAAS,gBAAA,CAAiB,IAA+B,EAAE,MAAA,EAAQ,SAAS,IAAA,EAAK,GAA6B,EAAC,EAA2B;AAC/I,EAAA,MAAM,CAAA,GAAI,UAAU,MAAM,CAAA;AAC1B,EAAA,MAAM,QAAQ,OAAA,KAAY,MAAA;AAE1B,EAAA,MAAM,QAAQ,CAAA,EAAG,SAAA,CAAU,CAAC,CAAC,CAAA,CAAA,EAAI,MAAM,EAAE,CAAA,CAAA;AACzC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIP,QAAAA,CAA6F,MAAO,KAAA,GAAQ,EAAE,MAAA,EAAQ,OAAA,GAAU,OAAA,GAAU,WAAA,EAAa,KAAA,EAAO,SAAS,KAAA,EAAO,IAAA,EAAM,KAAA,EAAM,GAAI,EAAE,MAAA,EAAQ,SAAA,EAAW,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,KAAA,EAAQ,CAAA;AAC/Q,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,MAAA,GAASJ,OAA+B,IAAI,CAAA;AAClD,EAAA,MAAM,YAAA,GAAeA,MAAAA,CAAO,KAAA,GAAQ,KAAA,GAAQ,IAAI,CAAA;AAEhD,EAAA,MAAM,IAAA,GAAOW,WAAAA;AAAA,IACX,CAAC,MAAA,KAAoB;AACnB,MAAA,MAAA,CAAO,SAAS,KAAA,EAAM;AACtB,MAAA,aAAA,CAAc,KAAK,CAAA;AACnB,MAAA,IAAI,CAAC,CAAA,IAAK,CAAC,EAAA,EAAI;AACb,QAAA,QAAA,CAAS,EAAE,QAAQ,SAAA,EAAW,KAAA,EAAO,MAAM,KAAA,EAAO,IAAA,EAAM,OAAO,CAAA;AAC/D,QAAA;AAAA,MACF;AACA,MAAA,MAAM,GAAA,GAAM,IAAI,eAAA,EAAgB;AAChC,MAAA,MAAA,CAAO,OAAA,GAAU,GAAA;AACjB,MAAA,IAAI,MAAA,gBAAsB,IAAI,CAAA;AAAA,WACzB,QAAA,CAAS,CAAC,CAAA,KAAO,CAAA,CAAE,UAAU,KAAA,IAAS,CAAA,CAAE,KAAA,GAAQ,EAAE,GAAG,CAAA,EAAG,OAAO,IAAA,EAAK,GAAI,EAAE,MAAA,EAAQ,SAAA,EAAW,OAAO,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,KAAA,EAAQ,CAAA;AACpI,MAAA,CAAA,CAAE,QAAA,CAAS,MAAM,EAAA,EAAI,EAAE,QAAQ,GAAA,CAAI,MAAA,EAAQ,CAAA,CAAE,IAAA;AAAA,QAC3C,CAAC,CAAA,KAAM;AACL,UAAA,IAAI,GAAA,CAAI,OAAO,OAAA,EAAS;AACxB,UAAA,aAAA,CAAc,KAAK,CAAA;AACnB,UAAA,QAAA,CAAS,IAAI,EAAE,MAAA,EAAQ,SAAS,KAAA,EAAO,CAAA,EAAG,OAAO,IAAA,EAAM,KAAA,EAAM,GAAI,EAAE,QAAQ,WAAA,EAAa,KAAA,EAAO,MAAM,KAAA,EAAO,IAAA,EAAM,OAAO,CAAA;AAAA,QAC3H,CAAA;AAAA,QACA,CAAC,CAAA,KAAe;AACd,UAAA,IAAI,GAAA,CAAI,OAAO,OAAA,EAAS;AACxB,UAAA,aAAA,CAAc,KAAK,CAAA;AAEnB,UAAA,QAAA,CAAS,CAAC,CAAA,KAAO,CAAA,CAAE,KAAA,KAAU,KAAA,IAAS,EAAE,KAAA,GAAQ,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,OAAA,CAAQ,CAAC,CAAA,EAAE,GAAI,EAAE,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,OAAA,CAAQ,CAAC,CAAA,EAAG,KAAA,EAAQ,CAAA;AAAA,QAC3I;AAAA,OACF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,CAAA,EAAG,EAAA,EAAI,KAAK;AAAA,GACf;AAEA,EAAAN,UAAU,MAAM;AACd,IAAA,IAAI,YAAA,CAAa,OAAA,KAAY,KAAA,EAAO,IAAA,CAAK,KAAK,CAAA;AAC9C,IAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AACvB,IAAA,OAAO,MAAM,MAAA,CAAO,OAAA,EAAS,KAAA,EAAM;AAAA,EAErC,CAAA,EAAG,CAAC,IAAA,EAAM,KAAK,CAAC,CAAA;AAEhB,EAAA,MAAM,IAAA,GAAO,MAAM,KAAA,KAAU,KAAA;AAC7B,EAAA,MAAM,KAAA,GAAQ,IAAA,GAAO,KAAA,CAAM,KAAA,GAAQ,IAAA;AACnC,EAAA,MAAM,WAAA,GAAc,CAAC,CAAC,IAAA,IAAQ,CAAC,CAAC,KAAA,IAAS,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AACzD,EAAA,MAAM,OAAA,GAAU,MAAM,OAAA,IAAW,GAAA;AACjC,EAAA,MAAM,KAAA,GAAQ,MAAM,KAAA,IAAS,GAAA;AAC7B,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,WAAA,EAAa;AAClB,IAAA,MAAM,EAAA,GAAK,KAAK,GAAA,EAAI;AACpB,IAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,MAAA,IAAI,KAAK,GAAA,EAAI,GAAI,EAAA,IAAM,KAAA,gBAAqB,KAAK,CAAA;AAAA,gBACvC,IAAI,CAAA;AAAA,IAChB,GAAG,OAAO,CAAA;AACV,IAAA,OAAO,MAAM,cAAc,KAAK,CAAA;AAAA,EAClC,GAAG,CAAC,WAAA,EAAa,OAAA,EAAS,KAAA,EAAO,IAAI,CAAC,CAAA;AAEtC,EAAA,MAAM,WAAW,KAAA,KAAU,IAAA;AAC3B,EAAA,MAAM,MAAA,GAASM,YAAY,MAAM,IAAA,CAAK,QAAQ,CAAA,EAAG,CAAC,IAAA,EAAM,QAAQ,CAAC,CAAA;AACjE,EAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,GAAO,KAAA,CAAM,SAAS,SAAA,EAAW,KAAA,EAAO,KAAA,EAAO,IAAA,GAAO,MAAM,KAAA,GAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,IAAQ,YAAY,MAAA,EAAO;AACpI","file":"account.js","sourcesContent":["/**\n * The account screen: sign in with password, create an account, verify the emailed code, sign in with a code and\n * recover a forgotten password, in one `<form method=\"post\">` driven by `createAuthAction` (`./server`). What the store\n * offers comes from `loadAuthCapabilities`; the form shows only that. Plain HTML: it works without JavaScript for the\n * password sign-in and the steps the action sends back; the view switches (links) need JavaScript.\n *\n * Styling: `data-sf-account-*` attributes and `classNames` slots, fields reuse `CheckoutField` (and `checkout.css`);\n * `account.css` is an optional neutral sheet. Texts are Spanish by default, English with `locale=\"en\"`, any with `messages`.\n */\nimport { useEffect, useRef, useState, type ComponentType, type ReactNode } from 'react'\nimport type { CustomerCapabilities } from '@asteby/storefront'\nimport { CheckoutField, ErrorSummary, useFieldErrors, type CheckoutFieldClassNames } from '../checkout/fields.js'\nimport type { AuthActionData, AuthErrorCode, AuthStep } from './types.js'\n\nexport type AccountAuthView = 'login' | 'register' | 'otp-email' | 'forgot' | AuthStep\n\nexport type AccountAuthMessages = {\n titles: Record<AccountAuthView, string>\n email: string\n password: string\n newPassword: string\n passwordHint: string\n firstName: string\n lastName: string\n code: string\n codeSentTo: string\n submit: Record<AccountAuthView, string>\n resend: string\n forgotLink: string\n registerLink: string\n loginLink: string\n otpLink: string\n backToLogin: string\n nothingAvailable: string\n errors: Record<AuthErrorCode, string>\n}\n\nconst ES: AccountAuthMessages = {\n titles: {\n login: 'Entrar a tu cuenta',\n register: 'Crear una cuenta',\n verify: 'Confirma tu correo',\n 'otp-email': 'Entrar con un código',\n otp: 'Escribe tu código',\n forgot: 'Recuperar contraseña',\n reset: 'Elige una contraseña nueva',\n },\n email: 'Correo electrónico',\n password: 'Contraseña',\n newPassword: 'Contraseña nueva',\n passwordHint: 'Entre 10 y 128 caracteres.',\n firstName: 'Nombre',\n lastName: 'Apellido',\n code: 'Código',\n codeSentTo: 'Enviamos un código a {email}. Puede tardar un minuto.',\n submit: {\n login: 'Entrar',\n register: 'Crear cuenta',\n verify: 'Confirmar',\n 'otp-email': 'Enviarme el código',\n otp: 'Entrar',\n forgot: 'Enviarme el código',\n reset: 'Guardar y entrar',\n },\n resend: 'Reenviar código',\n forgotLink: '¿Olvidaste tu contraseña?',\n registerLink: 'Crear una cuenta',\n loginLink: 'Ya tengo cuenta',\n otpLink: 'Entrar con un código por correo',\n backToLogin: 'Volver a entrar con contraseña',\n nothingAvailable: 'Esta tienda no admite iniciar sesión por ahora.',\n errors: {\n invalid_credentials: 'El correo o la contraseña no coinciden.',\n invalid_code: 'El código no es válido o ya venció.',\n email_taken: 'Ya existe una cuenta con este correo. Entra o recupera tu contraseña.',\n rate_limited: 'Demasiados intentos. Espera unos minutos e inténtalo de nuevo.',\n validation: 'Revisa los datos e inténtalo de nuevo.',\n unsupported: 'Esta forma de entrar no está disponible en esta tienda.',\n store_misconfigured: 'No pudimos crear tu cuenta por un problema de configuración de la tienda. Puedes comprar como invitado; ya avisamos a la tienda.',\n unavailable: 'No pudimos completar la acción. Inténtalo de nuevo en un momento.',\n },\n}\n\nconst EN: AccountAuthMessages = {\n titles: {\n login: 'Sign in',\n register: 'Create an account',\n verify: 'Confirm your email',\n 'otp-email': 'Sign in with a code',\n otp: 'Enter your code',\n forgot: 'Reset your password',\n reset: 'Choose a new password',\n },\n email: 'Email',\n password: 'Password',\n newPassword: 'New password',\n passwordHint: 'Between 10 and 128 characters.',\n firstName: 'First name',\n lastName: 'Last name',\n code: 'Code',\n codeSentTo: 'We sent a code to {email}. It can take a minute.',\n submit: {\n login: 'Sign in',\n register: 'Create account',\n verify: 'Confirm',\n 'otp-email': 'Email me the code',\n otp: 'Sign in',\n forgot: 'Email me the code',\n reset: 'Save and sign in',\n },\n resend: 'Resend code',\n forgotLink: 'Forgot your password?',\n registerLink: 'Create an account',\n loginLink: 'I already have an account',\n otpLink: 'Sign in with an emailed code',\n backToLogin: 'Back to password sign-in',\n nothingAvailable: 'This store does not support signing in right now.',\n errors: {\n invalid_credentials: 'The email and password do not match.',\n invalid_code: 'The code is not valid or has expired.',\n email_taken: 'An account with this email already exists. Sign in or reset your password.',\n rate_limited: 'Too many attempts. Wait a few minutes and try again.',\n validation: 'Check the details and try again.',\n unsupported: 'This way of signing in is not available in this store.',\n store_misconfigured: 'We could not create your account because of a store configuration problem. You can check out as a guest; we have already told the store.',\n unavailable: 'We could not complete that. Try again in a moment.',\n },\n}\n\n/** Messages for a locale (`es*` default, `en*`), with optional overrides (nested `titles`/`submit`/`errors` merge). */\nexport function accountAuthMessages(locale?: string | null, overrides?: DeepPartial<AccountAuthMessages> | null): AccountAuthMessages {\n const base = (locale ?? 'es-MX').toLowerCase().startsWith('en') ? EN : ES\n if (!overrides) return base\n return {\n ...base,\n ...(overrides as Partial<AccountAuthMessages>),\n titles: { ...base.titles, ...overrides.titles },\n submit: { ...base.submit, ...overrides.submit },\n errors: { ...base.errors, ...overrides.errors },\n }\n}\n\ntype DeepPartial<T> = { [K in keyof T]?: T[K] extends Record<string, string> ? Partial<T[K]> : T[K] }\n\nexport type AccountAuthClassNames = Partial<Record<'root' | 'title' | 'form' | 'notice' | 'error' | 'actions' | 'submit' | 'links' | 'link', string>> & {\n field?: CheckoutFieldClassNames\n}\n\n/** What `<AccountAuth>` passes to its `form` component: the few props a router `Form` and the HTML `<form>` both accept. */\nexport type AccountFormProps = {\n method?: 'post'\n action?: string\n className?: string\n children?: ReactNode\n /** Loose on purpose: a router `Form` types its ref with its own copy of `@types/react`. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref?: any\n 'data-sf-account-form'?: boolean | string\n}\n\nexport type AccountAuthProps = {\n /** From `loadAuthCapabilities` (the loader). */\n capabilities: CustomerCapabilities\n /** What the action returned (`useActionData()`); drives the next screen and the errors. */\n data?: AuthActionData | null\n /** Where to go after signing in (sent as `next`; the server validates it). */\n next?: string | null\n /** A submit is in flight (`navigation.state !== 'idle'`): disables the buttons. */\n pending?: boolean\n /** First screen. Default `login`, or `otp-email` when the store has no password sign-in. */\n initialView?: AccountAuthView\n /** Form component, e.g. React Router's `Form`, to submit without a reload. It must forward `ref` to the `<form>` (React 19: a prop). Default: the HTML `<form>`. */\n form?: 'form' | ComponentType<AccountFormProps>\n /** `action` of the form (default: the current URL). */\n action?: string\n locale?: string\n messages?: DeepPartial<AccountAuthMessages>\n classNames?: AccountAuthClassNames\n /** Shown above the form (a logo, a welcome text). */\n header?: ReactNode\n}\n\nconst initialOf = (caps: CustomerCapabilities, initialView?: AccountAuthView): AccountAuthView =>\n initialView ?? (caps.password ? 'login' : caps.otp_channels.includes('email') ? 'otp-email' : 'login')\n\n/**\n * The whole account screen. Headless enough to restyle, complete enough to drop in:\n * `export default function Account() { return <AccountAuth capabilities={useLoaderData()} data={useActionData()} form={Form} /> }`.\n */\nexport function AccountAuth({ capabilities, data, next, pending = false, initialView, form: FormTag = 'form', action, locale, messages, classNames: cx = {}, header }: AccountAuthProps) {\n const m = accountAuthMessages(locale, messages)\n const passwordOn = capabilities.password\n const otpOn = capabilities.otp_channels.includes('email')\n const [view, setView] = useState<AccountAuthView>(() => data?.step ?? initialOf(capabilities, initialView))\n const [email, setEmail] = useState(data?.email ?? '')\n const ref = useRef<HTMLFormElement>(null)\n const serverFields = data?.error?.field ? [data.error.field] : null\n const errorText = data?.error ? m.errors[data.error.code] : null\n const v = useFieldErrors(ref, { ...(locale ? { locale } : {}), serverFields, serverMessages: data?.error?.field && errorText ? { [data.error.field]: errorText } : null })\n\n // The action decides the next screen; the email it carries survives it.\n useEffect(() => {\n if (data?.step) setView(data.step)\n if (data?.email) setEmail(data.email)\n }, [data])\n\n const go = (to: AccountAuthView) => {\n v.clear()\n setView(to)\n }\n const fieldProps = { classNames: cx.field, ...(locale ? { locale } : {}) }\n const emailField = (\n <CheckoutField {...fieldProps} name=\"email\" type=\"email\" label={m.email} autoComplete=\"email\" inputMode=\"email\" value={email} onChange={(e) => setEmail(e.currentTarget.value)} error={v.errors.email ?? null} />\n )\n const codeField = (\n <CheckoutField {...fieldProps} name=\"code\" label={m.code} autoComplete=\"one-time-code\" inputMode=\"numeric\" pattern=\"[0-9]*\" error={v.errors.code ?? null} />\n )\n const passwordField = (label: string, autoComplete: string, newPassword: boolean) => (\n <CheckoutField\n {...fieldProps}\n name=\"password\"\n type=\"password\"\n label={label}\n autoComplete={autoComplete}\n error={v.errors.password ?? null}\n {...(newPassword ? { minLength: 10, maxLength: 128, hint: m.passwordHint } : {})}\n />\n )\n const link = (to: AccountAuthView, text: string) => (\n <button type=\"button\" className={cx.link} data-sf-account-link={to} onClick={() => go(to)}>\n {text}\n </button>\n )\n\n let body: ReactNode\n let links: ReactNode = null\n switch (view) {\n case 'register':\n body = (\n <>\n <CheckoutField {...fieldProps} name=\"first_name\" label={m.firstName} autoComplete=\"given-name\" optional />\n <CheckoutField {...fieldProps} name=\"last_name\" label={m.lastName} autoComplete=\"family-name\" optional />\n {emailField}\n {passwordField(m.password, 'new-password', true)}\n </>\n )\n links = link('login', m.loginLink)\n break\n case 'verify':\n case 'otp':\n body = (\n <>\n <p className={cx.notice} data-sf-account-notice>\n {m.codeSentTo.replace('{email}', email)}\n </p>\n <input type=\"hidden\" name=\"email\" value={email} />\n {codeField}\n </>\n )\n links = (\n <>\n {view === 'otp' ? (\n <button type=\"submit\" name=\"intent\" value=\"otp-request\" formNoValidate className={cx.link} data-sf-account-link=\"resend\">\n {m.resend}\n </button>\n ) : null}\n {link('login', m.backToLogin)}\n </>\n )\n break\n case 'otp-email':\n case 'forgot':\n body = emailField\n links = link('login', m.backToLogin)\n break\n case 'reset':\n body = (\n <>\n <p className={cx.notice} data-sf-account-notice>\n {m.codeSentTo.replace('{email}', email)}\n </p>\n <input type=\"hidden\" name=\"email\" value={email} />\n {codeField}\n {passwordField(m.newPassword, 'new-password', true)}\n </>\n )\n links = link('login', m.backToLogin)\n break\n default:\n body = (\n <>\n {emailField}\n {passwordField(m.password, 'current-password', false)}\n </>\n )\n links = (\n <>\n {otpOn ? link('forgot', m.forgotLink) : null}\n {link('register', m.registerLink)}\n {otpOn ? link('otp-email', m.otpLink) : null}\n </>\n )\n }\n\n const intent = { login: 'login', register: 'register', verify: 'verify', 'otp-email': 'otp-request', otp: 'otp-login', forgot: 'forgot', reset: 'reset' }[view]\n // Without password accounts the password views do not exist; only the code sign-in does.\n const available = view === 'login' || view === 'register' || view === 'forgot' || view === 'reset' || view === 'verify' ? passwordOn : otpOn\n const showSummary = !data?.error?.field\n const title = m.titles[view]\n if (!available && !passwordOn && !otpOn) {\n return (\n <section className={cx.root} data-sf-account-auth data-sf-account-view=\"unavailable\">\n <p className={cx.notice} role=\"status\">\n {capabilities.unavailable_reason === 'missing_scope' ? m.errors.store_misconfigured : m.nothingAvailable}\n </p>\n </section>\n )\n }\n return (\n <section className={cx.root} data-sf-account-auth data-sf-account-view={view} aria-labelledby=\"sf-account-title\">\n {header}\n <h1 id=\"sf-account-title\" className={cx.title}>\n {title}\n </h1>\n <FormTag ref={ref as never} method=\"post\" {...(action ? { action } : {})} className={cx.form} data-sf-account-form>\n <ErrorSummary items={v.summary} focusKey={v.summaryKey} {...(locale ? { locale } : {})} />\n {errorText && showSummary ? (\n <p role=\"alert\" className={cx.error} data-sf-account-error={data!.error!.code}>\n {errorText}\n </p>\n ) : null}\n {next ? <input type=\"hidden\" name=\"next\" value={next} /> : null}\n {body}\n <div className={cx.actions}>\n <button type=\"submit\" name=\"intent\" value={intent} disabled={pending} className={cx.submit} data-sf-account-submit>\n {m.submit[view]}\n </button>\n </div>\n <div className={cx.links} data-sf-account-links>\n {links}\n </div>\n </FormTag>\n </section>\n )\n}\n","/**\n * Post-purchase invitation to create an account, for the thank-you page (`/pagar/gracias`). Headless: no styles of its\n * own, `data-sf-ppa-*` hooks and `classNames` slots. It reuses the account action (`createAuthAction`, `./server`):\n * the form posts `register` (or `otp-request` in a store without passwords) with the buyer's email, so the verification,\n * the session cookie and the errors are exactly the ones of `<AccountAuth>`; nothing about addresses or phones is asked.\n *\n * Privacy: the email is the one of the receipt the SERVER read from the buyer's own session (the `email` prop); it is\n * sent as a hidden field and never editable here, so the form cannot be used to probe other addresses. With email\n * verification the action answers the same whether or not the address already has an account (no enumeration); the\n * guest orders of that address show up in the order history once the mailbox is verified (the store's addon scopes by\n * VERIFIED email). Without verification the account is created unverified and its history does not include guest\n * orders: the text then promises nothing about the order.\n *\n * Texts are Spanish by default, English with `locale=\"en\"`, any with `messages`.\n */\nimport { useRef, type ComponentType, type ReactNode } from 'react'\nimport type { CustomerCapabilities } from '@asteby/storefront'\nimport { CheckoutField, ErrorSummary, useFieldErrors, type CheckoutFieldClassNames } from '../checkout/fields.js'\nimport type { AccountFormProps } from './account-auth.js'\nimport type { AuthActionData, AuthErrorCode } from './types.js'\n\nexport type PostPurchaseAccountPromptMessages = {\n title: string\n /** Why, when the email is verified and the guest order will appear in the history. `{email}` is replaced. */\n benefit: string\n /** Why, when it will not (no email verification in the store). */\n benefitBasic: string\n accountFor: string\n password: string\n passwordHint: string\n code: string\n codeSentTo: string\n submit: string\n submitOtp: string\n submitCode: string\n skipNote: string\n loginLink: string\n errors: Record<AuthErrorCode, string>\n}\n\nconst ES: PostPurchaseAccountPromptMessages = {\n title: 'Crea tu cuenta para seguir tu pedido',\n benefit: 'Con {email} verás aquí tu pedido y su envío, y la próxima compra será más rápida. No te pedimos tu dirección ni tu teléfono otra vez.',\n benefitBasic: 'Guarda tus datos para que la próxima compra sea más rápida.',\n accountFor: 'Cuenta para {email}',\n password: 'Contraseña',\n passwordHint: 'Entre 10 y 128 caracteres.',\n code: 'Código',\n codeSentTo: 'Enviamos un código a {email}. Puede tardar un minuto.',\n submit: 'Crear cuenta',\n submitOtp: 'Enviarme un código',\n submitCode: 'Confirmar',\n skipNote: 'Si no quieres cuenta, no pasa nada: te avisaremos por correo de tu pedido.',\n loginLink: 'Ya tengo cuenta',\n errors: {\n invalid_credentials: 'El correo o la contraseña no coinciden.',\n invalid_code: 'El código no es válido o ya venció.',\n email_taken: 'Ya existe una cuenta con este correo. Entra para ver tu pedido.',\n rate_limited: 'Demasiados intentos. Espera unos minutos e inténtalo de nuevo.',\n validation: 'Revisa los datos e inténtalo de nuevo.',\n unsupported: 'Esta tienda no permite crear cuentas por ahora.',\n store_misconfigured: 'No pudimos crear tu cuenta por un problema de configuración de la tienda. Tu pedido sigue en pie.',\n unavailable: 'No pudimos completar la acción. Inténtalo de nuevo en un momento.',\n },\n}\n\nconst EN: PostPurchaseAccountPromptMessages = {\n title: 'Create your account to follow your order',\n benefit: 'With {email} you will see your order and its shipment here, and your next purchase will be faster. We will not ask for your address or phone again.',\n benefitBasic: 'Save your details so your next purchase is faster.',\n accountFor: 'Account for {email}',\n password: 'Password',\n passwordHint: 'Between 10 and 128 characters.',\n code: 'Code',\n codeSentTo: 'We sent a code to {email}. It can take a minute.',\n submit: 'Create account',\n submitOtp: 'Email me a code',\n submitCode: 'Confirm',\n skipNote: 'If you do not want an account, that is fine: we will email you about your order.',\n loginLink: 'I already have an account',\n errors: {\n invalid_credentials: 'The email and password do not match.',\n invalid_code: 'The code is not valid or has expired.',\n email_taken: 'An account with this email already exists. Sign in to see your order.',\n rate_limited: 'Too many attempts. Wait a few minutes and try again.',\n validation: 'Check the details and try again.',\n unsupported: 'This store does not allow creating accounts right now.',\n store_misconfigured: 'We could not create your account because of a store configuration problem. Your order is safe.',\n unavailable: 'We could not complete that. Try again in a moment.',\n },\n}\n\ntype DeepPartial<T> = { [K in keyof T]?: T[K] extends Record<string, string> ? Partial<T[K]> : T[K] }\n\n/** Messages for a locale (`es*` default, `en*`), with optional overrides (`errors` merges). */\nexport function postPurchaseAccountPromptMessages(locale?: string | null, overrides?: DeepPartial<PostPurchaseAccountPromptMessages> | null): PostPurchaseAccountPromptMessages {\n const base = (locale ?? 'es-MX').toLowerCase().startsWith('en') ? EN : ES\n if (!overrides) return base\n return { ...base, ...(overrides as Partial<PostPurchaseAccountPromptMessages>), errors: { ...base.errors, ...overrides.errors } }\n}\n\nexport type PostPurchaseAccountPromptClassNames = Partial<Record<'root' | 'title' | 'text' | 'email' | 'form' | 'notice' | 'error' | 'actions' | 'submit' | 'note' | 'link', string>> & {\n field?: CheckoutFieldClassNames\n}\n\nexport type PostPurchaseAccountPromptProps = {\n /** The buyer's email from the receipt of THIS session (read on the server). Without it nothing renders. */\n email?: string | null\n /** From `loadAuthCapabilities`. Without password nor email codes nothing renders. */\n capabilities: CustomerCapabilities\n /** What the account action returned (`useActionData()`); drives the code step and the errors. */\n data?: AuthActionData | null\n /** Where to go after the account is ready (sent as `next`; the server validates it). E.g. the order history. */\n next?: string | null\n /** A submit is in flight: disables the button. */\n pending?: boolean\n /** Form component, e.g. React Router's `Form`. Default: the HTML `<form>`. */\n form?: 'form' | ComponentType<AccountFormProps>\n /** `action` of the form: the route that mounts `createAuthAction`. Default: the current URL. */\n action?: string\n /** Heading level of the title (default 2). */\n headingLevel?: 2 | 3 | 4\n /** Where \"I already have an account\" goes (e.g. `/cuenta/entrar?next=...`). Omitted: no link. */\n loginHref?: string | null\n locale?: string\n messages?: DeepPartial<PostPurchaseAccountPromptMessages>\n classNames?: PostPurchaseAccountPromptClassNames\n /** Extra content under the form. */\n children?: ReactNode\n}\n\nconst validEmail = (v: string | null | undefined): v is string => typeof v === 'string' && v.length <= 254 && /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(v.trim())\n\n/**\n * `<PostPurchaseAccountPrompt email={receipt.email} capabilities={caps} data={actionData} form={Form} next=\"/cuenta/pedidos\" />`\n */\nexport function PostPurchaseAccountPrompt({\n email,\n capabilities,\n data,\n next,\n pending = false,\n form: FormTag = 'form',\n action,\n headingLevel = 2,\n loginHref,\n locale,\n messages,\n classNames: cx = {},\n children,\n}: PostPurchaseAccountPromptProps) {\n const m = postPurchaseAccountPromptMessages(locale, messages)\n const ref = useRef<HTMLFormElement>(null)\n const passwordOn = capabilities.password\n const otpOn = capabilities.otp_channels.includes('email')\n const errorText = data?.error ? m.errors[data.error.code] : null\n const v = useFieldErrors(ref, { ...(locale ? { locale } : {}), serverFields: data?.error?.field === 'code' || data?.error?.field === 'password' ? [data.error.field] : null, serverMessages: data?.error?.field && errorText ? { [data.error.field]: errorText } : null })\n if (!validEmail(email) || (!passwordOn && !otpOn)) return null\n\n const address = email.trim().toLowerCase()\n const step = data?.step === 'verify' || data?.step === 'otp' ? data.step : null\n const view = step ?? (passwordOn ? 'register' : 'otp-request')\n const intent = step === 'verify' ? 'verify' : step === 'otp' ? 'otp-login' : passwordOn ? 'register' : 'otp-request'\n const label = view === 'verify' || view === 'otp' ? m.submitCode : view === 'otp-request' ? m.submitOtp : m.submit\n const Heading = `h${headingLevel}` as 'h2'\n const fieldProps = { classNames: cx.field, ...(locale ? { locale } : {}) }\n // Only the errors with no field of their own go in the alert; the others are inline.\n const showAlert = errorText && !(data?.error?.field === 'code' || data?.error?.field === 'password')\n // Only a verified mailbox earns the guest order in the history (storefront_customers scopes by verified email).\n const benefit = (capabilities.email_verification ? m.benefit : m.benefitBasic).replace('{email}', address)\n\n return (\n <section className={cx.root} data-sf-ppa data-sf-ppa-view={view} aria-labelledby=\"sf-ppa-title\">\n <Heading id=\"sf-ppa-title\" className={cx.title}>\n {m.title}\n </Heading>\n <p className={cx.text} data-sf-ppa-benefit>\n {benefit}\n </p>\n <FormTag ref={ref as never} method=\"post\" {...(action ? { action } : {})} className={cx.form} data-sf-ppa-form>\n <ErrorSummary items={v.summary} focusKey={v.summaryKey} {...(locale ? { locale } : {})} />\n {showAlert ? (\n <p role=\"alert\" className={cx.error} data-sf-ppa-error={data!.error!.code}>\n {errorText}\n </p>\n ) : null}\n <input type=\"hidden\" name=\"email\" value={address} />\n {next ? <input type=\"hidden\" name=\"next\" value={next} /> : null}\n <p className={cx.email} data-sf-ppa-email>\n {m.accountFor.replace('{email}', address)}\n </p>\n {step ? (\n <>\n <p className={cx.notice} role=\"status\" data-sf-ppa-notice>\n {m.codeSentTo.replace('{email}', address)}\n </p>\n <CheckoutField {...fieldProps} name=\"code\" label={m.code} autoComplete=\"one-time-code\" inputMode=\"numeric\" pattern=\"[0-9]*\" error={v.errors.code ?? null} />\n </>\n ) : passwordOn ? (\n <CheckoutField {...fieldProps} name=\"password\" type=\"password\" label={m.password} autoComplete=\"new-password\" minLength={10} maxLength={128} hint={m.passwordHint} error={v.errors.password ?? null} />\n ) : null}\n <div className={cx.actions}>\n <button type=\"submit\" name=\"intent\" value={intent} disabled={pending} className={cx.submit} data-sf-ppa-submit>\n {label}\n </button>\n </div>\n </FormTag>\n <p className={cx.note} data-sf-ppa-note>\n {m.skipNote}\n {loginHref ? (\n <>\n {' '}\n <a href={loginHref} className={cx.link} data-sf-ppa-login>\n {m.loginLink}\n </a>\n </>\n ) : null}\n </p>\n {children}\n </section>\n )\n}\n","/**\n * Texts of the order screens (`OrderList`, `OrderProgress`, `NextActionBar`, `ShipmentCard`, `InvoiceList`,\n * `PendingPaymentCard`, `RefundList`). Spanish (es-MX) by default, English with `en*`, anything with `messages`.\n * Server enums are open: every group has a `*.unknown` text so a value this SDK has never seen reads as plain words,\n * never as a raw code.\n */\nimport { fill } from '../fiscal/messages.js'\n\nexport { fill }\n\nconst ES = {\n // order list\n 'order.number': 'Pedido {number}',\n 'order.placed': 'Realizado el {date}',\n 'order.total': 'Total',\n 'order.view': 'Ver pedido',\n 'order.items.one': '{count} artículo',\n 'order.items.other': '{count} artículos',\n 'order.lines': 'Artículos del pedido',\n 'order.line.quantity': 'Cantidad {n}',\n 'order.line.each': '{price} c/u',\n 'order.line.unavailable': 'Producto no disponible',\n 'order.productsMore': 'y {n} más',\n 'order.stepOf': 'Paso {n} de {total}: {step}',\n 'order.listLabel': 'Tus pedidos',\n 'order.loading': 'Cargando tus pedidos',\n 'order.loadMore': 'Ver más pedidos',\n 'order.loadingMore': 'Cargando…',\n 'order.error': 'No pudimos cargar tus pedidos. Tus compras están a salvo.',\n 'order.retry': 'Reintentar',\n 'order.emptyTitle': 'Aún no tienes pedidos',\n 'order.emptyBody': 'Cuando compres, aquí verás el estado y el envío de cada pedido.',\n 'order.emptyGuest': '¿Compraste como invitado? Verifica tu correo para ver aquí tus pedidos.',\n // stage (order status)\n 'stage.pending_payment': 'Esperando pago',\n 'stage.paid': 'Pagado',\n 'stage.preparing': 'En preparación',\n 'stage.ready_for_pickup': 'Listo para recoger',\n 'stage.shipped': 'Enviado',\n 'stage.in_transit': 'En camino',\n 'stage.out_for_delivery': 'En reparto',\n 'stage.delivered': 'Entregado',\n 'stage.cancelled': 'Cancelado',\n 'stage.refunded': 'Reembolsado',\n 'stage.unknown': 'En proceso',\n // progress\n 'progress.label': 'Progreso del pedido',\n 'step.paid': 'Pagado',\n 'step.preparing': 'En preparación',\n 'step.shipped': 'Enviado',\n 'step.in_transit': 'En camino',\n 'step.ready_for_pickup': 'Listo para recoger',\n 'step.delivered': 'Entregado',\n 'step.unknown': 'Siguiente paso',\n 'stepState.done': 'completado',\n 'stepState.current': 'paso actual',\n 'stepState.pending': 'pendiente',\n 'stepState.problem': 'con incidencia',\n 'problem.delivery_exception': 'Hubo un problema con la entrega. Contacta a la tienda si no se resuelve.',\n 'problem.returned': 'El paquete regresó a la tienda. Contáctanos para coordinar un nuevo envío.',\n 'problem.lost': 'No encontramos tu paquete. Contáctanos y lo resolvemos.',\n 'problem.payment_failed': 'El pago no se completó. Puedes intentarlo de nuevo.',\n 'problem.unknown': 'Tu pedido tiene una incidencia. Contacta a la tienda.',\n 'progress.cancelled': 'Este pedido fue cancelado.',\n 'progress.refunded': 'Este pedido fue reembolsado.',\n // next action\n 'action.pay': 'Pagar ahora',\n 'action.track': 'Rastrear envío',\n 'action.pickup': 'Recoger en sucursal',\n 'action.download_invoice': 'Descargar factura',\n 'action.request_invoice': 'Solicitar factura',\n 'action.correct_invoice_data': 'Corregir datos de facturación',\n 'action.contact_store': 'Contactar a la tienda',\n 'action.unknown': 'Ver detalle',\n 'action.newTab': '(se abre en una pestaña nueva)',\n 'action.label': 'Siguiente paso del pedido',\n // shipment\n 'shipment.title': 'Envío',\n 'shipment.return': 'Devolución',\n 'shipment.carrier': 'Paquetería',\n 'shipment.service': 'Servicio',\n 'shipment.number': 'Número de guía',\n 'shipment.copy': 'Copiar',\n 'shipment.copied': 'Copiado',\n 'shipment.copyFailed': 'No pudimos copiar; selecciona el texto.',\n 'shipment.track': 'Rastrear con {carrier}',\n 'shipment.trackGeneric': 'Rastrear envío',\n 'shipment.promised': 'Llega a más tardar el {date}',\n 'shipment.delivered': 'Entregado el {date}',\n 'shipment.shipped': 'Enviado el {date}',\n 'shipment.events': 'Movimientos',\n 'shipment.noEvents': 'La paquetería aún no registra movimientos; suele tardar 24 horas.',\n 'shipment.showAll': 'Ver todo ({count})',\n 'shipment.showLess': 'Ver menos',\n 'shipment.returnLabel': 'Guía de devolución',\n 'shipment.test': 'De prueba',\n 'shipment.testNote': 'Envío de prueba: no es un envío real.',\n 'shipment.preparing': 'Preparando tu envío',\n 'shipment.status.pending': 'Preparando envío',\n 'shipment.status.label_created': 'Guía generada',\n 'shipment.status.in_transit': 'En camino',\n 'shipment.status.out_for_delivery': 'En reparto',\n 'shipment.status.delivered': 'Entregado',\n 'shipment.status.exception': 'Incidencia en la entrega',\n 'shipment.status.returned': 'Devuelto a la tienda',\n 'shipment.status.lost': 'Extraviado',\n 'shipment.status.cancelled': 'Cancelado',\n 'shipment.status.unknown': 'En proceso',\n 'shipment.eventFrom': '{location}',\n // invoices\n 'invoice.title': 'Facturas',\n 'invoice.invoice': 'Factura',\n 'invoice.creditNote': 'Nota de crédito',\n 'invoice.creditNoteOf': 'Corrige la factura {folio}',\n 'invoice.folio': 'Folio fiscal',\n 'invoice.series': 'Serie y folio',\n 'invoice.issued': 'Emitida el {date}',\n 'invoice.total': 'Total',\n 'invoice.pdf': 'Descargar PDF',\n 'invoice.xml': 'Descargar XML',\n 'invoice.downloadOf': '{action}, {kind} {name}',\n 'invoice.none': 'Aún no hay facturas de este pedido.',\n 'invoice.test': 'Factura de prueba, sin validez',\n 'invoice.status.issued': 'Emitida',\n 'invoice.status.pending': 'En proceso',\n 'invoice.status.cancelled': 'Cancelada',\n 'invoice.status.error': 'No se pudo emitir',\n 'invoice.status.unknown': 'En proceso',\n 'invoice.statusNote.pending': 'La estamos generando; te avisaremos cuando esté lista.',\n 'invoice.statusNote.error': 'Contacta a la tienda para resolverlo.',\n 'invoice.statusNote.cancelled': 'Esta factura fue cancelada y ya no tiene validez.',\n // pending payment\n 'pending.title': 'Pendientes de pago',\n 'pending.intro': 'Tu pedido se genera en cuanto confirmamos el pago. Paga con la ficha antes de que venza.',\n 'pending.waiting': 'Esperando pago',\n 'pending.expired': 'Vencida',\n 'pending.reference': 'Referencia',\n 'pending.clabe': 'CLABE',\n 'pending.expires': 'Vence el {date}',\n 'pending.expiredOn': 'Venció el {date}',\n 'pending.total': 'Total',\n 'pending.copyReference': 'Copiar referencia',\n 'pending.copyClabe': 'Copiar CLABE',\n 'pending.copied': 'Copiada',\n 'pending.copyFailed': 'No pudimos copiar; selecciona el texto.',\n 'pending.print': 'Ver e imprimir ficha',\n 'pending.download': 'Descargar ficha',\n 'pending.expiredNote': 'Esta ficha ya no es válida. Haz tu pedido de nuevo.',\n 'pending.barcode': 'Código de barras {code}',\n 'pending.method.oxxo': 'OXXO',\n 'pending.method.spei': 'Transferencia SPEI',\n 'pending.method.bank_transfer': 'Transferencia bancaria',\n 'pending.method.bank_deposit': 'Depósito bancario',\n 'pending.method.cash': 'Pago en efectivo',\n 'pending.method.unknown': 'Pago en efectivo',\n // refunds & payments\n 'refund.title': 'Reembolsos',\n 'refund.status.requested': 'Solicitado',\n 'refund.status.processing': 'En proceso',\n 'refund.status.completed': 'Completado',\n 'refund.status.failed': 'No se pudo completar',\n 'refund.status.unknown': 'En proceso',\n 'refund.requested': 'Solicitado el {date}',\n 'refund.completed': 'Completado el {date}',\n 'refund.none': 'Este pedido no tiene reembolsos.',\n 'payment.title': 'Pagos',\n 'payment.status.paid': 'Pagado',\n 'payment.status.pending': 'Pendiente',\n 'payment.status.failed': 'Fallido',\n 'payment.status.refunded': 'Reembolsado',\n 'payment.status.partially_refunded': 'Reembolsado parcialmente',\n 'payment.status.unknown': 'En proceso',\n 'payment.paidOn': 'Pagado el {date}',\n 'payment.method.card': 'Tarjeta',\n 'payment.method.credit_card': 'Tarjeta de crédito',\n 'payment.method.debit_card': 'Tarjeta de débito',\n 'payment.method.cash_voucher': 'Efectivo con ficha (OXXO, tienda de conveniencia)',\n 'payment.method.oxxo': 'Efectivo en OXXO',\n 'payment.method.spei': 'Transferencia SPEI',\n 'payment.method.transfer': 'Transferencia bancaria',\n 'payment.method.bank_deposit': 'Depósito bancario',\n 'payment.method.wallet': 'Billetera digital',\n 'payment.method.cash': 'Efectivo',\n 'payment.method.other': 'Otro medio de pago',\n 'payment.method.unknown': 'Medio de pago',\n // sections\n 'section.error': 'No pudimos cargar esta sección.',\n 'section.retry': 'Reintentar',\n 'section.loading': 'Cargando',\n} as const\n\nexport type AccountMessageKey = keyof typeof ES\nexport type AccountMessages = Record<AccountMessageKey, string>\n\nconst EN: AccountMessages = {\n 'order.number': 'Order {number}',\n 'order.placed': 'Placed on {date}',\n 'order.total': 'Total',\n 'order.view': 'View order',\n 'order.items.one': '{count} item',\n 'order.items.other': '{count} items',\n 'order.lines': 'Items in this order',\n 'order.line.quantity': 'Quantity {n}',\n 'order.line.each': '{price} each',\n 'order.line.unavailable': 'Product unavailable',\n 'order.productsMore': 'and {n} more',\n 'order.stepOf': 'Step {n} of {total}: {step}',\n 'order.listLabel': 'Your orders',\n 'order.loading': 'Loading your orders',\n 'order.loadMore': 'Show more orders',\n 'order.loadingMore': 'Loading…',\n 'order.error': 'We could not load your orders. Your purchases are safe.',\n 'order.retry': 'Try again',\n 'order.emptyTitle': 'You have no orders yet',\n 'order.emptyBody': 'When you buy, you will see the status and shipment of each order here.',\n 'order.emptyGuest': 'Did you buy as a guest? Verify your email to see your orders here.',\n 'stage.pending_payment': 'Waiting for payment',\n 'stage.paid': 'Paid',\n 'stage.preparing': 'Being prepared',\n 'stage.ready_for_pickup': 'Ready for pickup',\n 'stage.shipped': 'Shipped',\n 'stage.in_transit': 'On its way',\n 'stage.out_for_delivery': 'Out for delivery',\n 'stage.delivered': 'Delivered',\n 'stage.cancelled': 'Cancelled',\n 'stage.refunded': 'Refunded',\n 'stage.unknown': 'In progress',\n 'progress.label': 'Order progress',\n 'step.paid': 'Paid',\n 'step.preparing': 'Being prepared',\n 'step.shipped': 'Shipped',\n 'step.in_transit': 'On its way',\n 'step.ready_for_pickup': 'Ready for pickup',\n 'step.delivered': 'Delivered',\n 'step.unknown': 'Next step',\n 'stepState.done': 'completed',\n 'stepState.current': 'current step',\n 'stepState.pending': 'pending',\n 'stepState.problem': 'has a problem',\n 'problem.delivery_exception': 'There was a problem with the delivery. Contact the store if it is not resolved.',\n 'problem.returned': 'The package went back to the store. Contact us to arrange a new shipment.',\n 'problem.lost': 'We could not find your package. Contact us and we will sort it out.',\n 'problem.payment_failed': 'The payment did not go through. You can try again.',\n 'problem.unknown': 'Your order has a problem. Contact the store.',\n 'progress.cancelled': 'This order was cancelled.',\n 'progress.refunded': 'This order was refunded.',\n 'action.pay': 'Pay now',\n 'action.track': 'Track shipment',\n 'action.pickup': 'Pick up in store',\n 'action.download_invoice': 'Download invoice',\n 'action.request_invoice': 'Request invoice',\n 'action.correct_invoice_data': 'Fix billing details',\n 'action.contact_store': 'Contact the store',\n 'action.unknown': 'View details',\n 'action.newTab': '(opens in a new tab)',\n 'action.label': 'Next step of the order',\n 'shipment.title': 'Shipment',\n 'shipment.return': 'Return',\n 'shipment.carrier': 'Carrier',\n 'shipment.service': 'Service',\n 'shipment.number': 'Tracking number',\n 'shipment.copy': 'Copy',\n 'shipment.copied': 'Copied',\n 'shipment.copyFailed': 'We could not copy; select the text.',\n 'shipment.track': 'Track with {carrier}',\n 'shipment.trackGeneric': 'Track shipment',\n 'shipment.promised': 'Arrives by {date}',\n 'shipment.delivered': 'Delivered on {date}',\n 'shipment.shipped': 'Shipped on {date}',\n 'shipment.events': 'Updates',\n 'shipment.noEvents': 'The carrier has not reported any movement yet; it usually takes 24 hours.',\n 'shipment.showAll': 'Show all ({count})',\n 'shipment.showLess': 'Show less',\n 'shipment.returnLabel': 'Return label',\n 'shipment.test': 'Test',\n 'shipment.testNote': 'Test shipment: it is not a real shipment.',\n 'shipment.preparing': 'Preparing your shipment',\n 'shipment.status.pending': 'Preparing shipment',\n 'shipment.status.label_created': 'Label created',\n 'shipment.status.in_transit': 'On its way',\n 'shipment.status.out_for_delivery': 'Out for delivery',\n 'shipment.status.delivered': 'Delivered',\n 'shipment.status.exception': 'Delivery problem',\n 'shipment.status.returned': 'Returned to the store',\n 'shipment.status.lost': 'Lost',\n 'shipment.status.cancelled': 'Cancelled',\n 'shipment.status.unknown': 'In progress',\n 'shipment.eventFrom': '{location}',\n 'invoice.title': 'Invoices',\n 'invoice.invoice': 'Invoice',\n 'invoice.creditNote': 'Credit note',\n 'invoice.creditNoteOf': 'Corrects invoice {folio}',\n 'invoice.folio': 'Tax folio',\n 'invoice.series': 'Series and number',\n 'invoice.issued': 'Issued on {date}',\n 'invoice.total': 'Total',\n 'invoice.pdf': 'Download PDF',\n 'invoice.xml': 'Download XML',\n 'invoice.downloadOf': '{action}, {kind} {name}',\n 'invoice.none': 'There are no invoices for this order yet.',\n 'invoice.test': 'Test invoice, not valid',\n 'invoice.status.issued': 'Issued',\n 'invoice.status.pending': 'In progress',\n 'invoice.status.cancelled': 'Cancelled',\n 'invoice.status.error': 'Could not be issued',\n 'invoice.status.unknown': 'In progress',\n 'invoice.statusNote.pending': 'We are generating it; we will let you know when it is ready.',\n 'invoice.statusNote.error': 'Contact the store to resolve it.',\n 'invoice.statusNote.cancelled': 'This invoice was cancelled and is no longer valid.',\n 'pending.title': 'Waiting for payment',\n 'pending.intro': 'Your order is created as soon as we confirm the payment. Pay with the voucher before it expires.',\n 'pending.waiting': 'Waiting for payment',\n 'pending.expired': 'Expired',\n 'pending.reference': 'Reference',\n 'pending.clabe': 'CLABE',\n 'pending.expires': 'Expires on {date}',\n 'pending.expiredOn': 'Expired on {date}',\n 'pending.total': 'Total',\n 'pending.copyReference': 'Copy reference',\n 'pending.copyClabe': 'Copy CLABE',\n 'pending.copied': 'Copied',\n 'pending.copyFailed': 'We could not copy; select the text.',\n 'pending.print': 'View and print voucher',\n 'pending.download': 'Download voucher',\n 'pending.expiredNote': 'This voucher is no longer valid. Place your order again.',\n 'pending.barcode': 'Barcode {code}',\n 'pending.method.oxxo': 'OXXO',\n 'pending.method.spei': 'SPEI transfer',\n 'pending.method.bank_transfer': 'Bank transfer',\n 'pending.method.bank_deposit': 'Bank deposit',\n 'pending.method.cash': 'Cash payment',\n 'pending.method.unknown': 'Cash payment',\n 'refund.title': 'Refunds',\n 'refund.status.requested': 'Requested',\n 'refund.status.processing': 'In progress',\n 'refund.status.completed': 'Completed',\n 'refund.status.failed': 'Could not be completed',\n 'refund.status.unknown': 'In progress',\n 'refund.requested': 'Requested on {date}',\n 'refund.completed': 'Completed on {date}',\n 'refund.none': 'This order has no refunds.',\n 'payment.title': 'Payments',\n 'payment.status.paid': 'Paid',\n 'payment.status.pending': 'Pending',\n 'payment.status.failed': 'Failed',\n 'payment.status.refunded': 'Refunded',\n 'payment.status.partially_refunded': 'Partially refunded',\n 'payment.status.unknown': 'In progress',\n 'payment.paidOn': 'Paid on {date}',\n 'payment.method.card': 'Card',\n 'payment.method.credit_card': 'Credit card',\n 'payment.method.debit_card': 'Debit card',\n 'payment.method.cash_voucher': 'Cash with a voucher (OXXO, convenience store)',\n 'payment.method.oxxo': 'Cash at OXXO',\n 'payment.method.spei': 'SPEI transfer',\n 'payment.method.transfer': 'Bank transfer',\n 'payment.method.bank_deposit': 'Bank deposit',\n 'payment.method.wallet': 'Digital wallet',\n 'payment.method.cash': 'Cash',\n 'payment.method.other': 'Other payment method',\n 'payment.method.unknown': 'Payment method',\n 'section.error': 'We could not load this section.',\n 'section.retry': 'Try again',\n 'section.loading': 'Loading',\n}\n\n/** Messages for a locale (`es*` default, `en*`), with optional per-key overrides. */\nexport function accountMessages(locale?: string | null, overrides?: Partial<AccountMessages> | null): AccountMessages {\n const base: AccountMessages = (locale ?? 'es-MX').toLowerCase().startsWith('en') ? EN : ES\n return overrides ? { ...base, ...overrides } : base\n}\n\n/** Text for an open enum: `<group>.<value>` when this SDK knows it, else `<group>.unknown`. Never the raw value. */\nexport function enumText(m: AccountMessages, group: string, value: unknown): string {\n const key = `${group}.${typeof value === 'string' ? value : ''}` as AccountMessageKey\n return Object.prototype.hasOwnProperty.call(m, key) ? m[key] : m[`${group}.unknown` as AccountMessageKey]\n}\n","/** Small shared pieces of the order screens: date formatting, hidden text, copy button, text resolution. */\nimport { formatMoney } from '@asteby/storefront'\nimport { useCallback, useEffect, useRef, useState, type CSSProperties, type ReactNode } from 'react'\nimport { useResolvedLocale } from '../locale.js'\nimport { accountMessages, fill, type AccountMessages } from './orders-messages.js'\n\nconst SR_ONLY: CSSProperties = {\n position: 'absolute',\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n whiteSpace: 'nowrap',\n border: 0,\n}\n\n/**\n * Text the server (or the carrier through it) sent, ready to render: a trimmed non-empty string, a finite number as\n * text, else `null`. Every free-text field passes here, so an object or a number where a string was expected never\n * reaches React as a child (which throws) and never prints as `[object Object]`.\n */\nexport function str(v: unknown): string | null {\n if (typeof v === 'number') return Number.isFinite(v) ? String(v) : null\n if (typeof v !== 'string') return null\n const s = v.trim()\n return s ? s : null\n}\n\n/** A `Money` formatted, or `null` when it is missing or malformed (never a made-up `$0.00`). */\nexport function moneyText(v: unknown, locale: string): string | null {\n if (!v || typeof v !== 'object') return null\n const { amount, currency_code } = v as Record<string, unknown>\n const a = typeof amount === 'number' ? String(amount) : amount\n if (typeof a !== 'string' || !a.trim() || !Number.isFinite(Number(a)) || typeof currency_code !== 'string' || !/^[A-Za-z]{3}$/.test(currency_code)) return null\n return formatMoney({ amount: a.trim(), currency_code: currency_code.toUpperCase() }, locale)\n}\n\n/** Visually hidden text for screen readers. */\nexport function Hidden({ children }: { children: ReactNode }) {\n return <span style={SR_ONLY}>{children}</span>\n}\n\nexport type AccountTextProps = {\n /** BCP 47; defaults to the provider's, then `es-MX`. */\n locale?: string\n /** Per-key text overrides (a store's own words). */\n messages?: Partial<AccountMessages>\n /** IANA time zone for dates (`America/Mexico_City`). Pass the store's own to get the same text on server and browser. */\n timeZone?: string\n}\n\n/** The texts and the date formatter of a component. */\nexport function useAccountText({ locale, messages, timeZone }: AccountTextProps) {\n const resolved = useResolvedLocale(locale)\n const m = accountMessages(resolved, messages)\n const date = (iso: string | null | undefined, style: 'date' | 'datetime' = 'date'): string | null => formatDate(iso, resolved, style, timeZone)\n const t = (key: keyof AccountMessages, vars?: Record<string, string | number>): string => (vars ? fill(m[key], vars) : m[key])\n return { locale: resolved, m, t, date, timeZone }\n}\n\n/** `\"12 de agosto de 2026\"`; `null` for a missing or invalid value. A bare `YYYY-MM-DD` is a calendar day, not an instant. */\nexport function formatDate(iso: string | null | undefined, locale: string, style: 'date' | 'datetime' = 'date', timeZone?: string): string | null {\n if (!iso || typeof iso !== 'string') return null\n const dayOnly = /^\\d{4}-\\d{2}-\\d{2}$/.test(iso)\n const d = new Date(dayOnly ? `${iso}T12:00:00Z` : iso)\n if (Number.isNaN(d.getTime())) return null\n const zone = dayOnly ? 'UTC' : timeZone\n try {\n return new Intl.DateTimeFormat(locale, { dateStyle: 'long', ...(style === 'datetime' && !dayOnly ? { timeStyle: 'short' } : {}), ...(zone ? { timeZone: zone } : {}) }).format(d)\n } catch {\n return d.toISOString().slice(0, 10)\n }\n}\n\n/** A `<time>` with its machine value. Server and browser may disagree on the zone: the text is allowed to differ. */\nexport function Time({ value, text, className }: { value: string | null | undefined; text: string | null; className?: string | undefined }) {\n if (!value || !text) return null\n return (\n <time dateTime={value} className={className} suppressHydrationWarning>\n {text}\n </time>\n )\n}\n\n/** Plural by count (`one` for 1) with the `{count}` template. */\nexport function plural(m: AccountMessages, base: 'order.items', count: number): string {\n return fill(base === 'order.items' && count === 1 ? m['order.items.one'] : m['order.items.other'], { count })\n}\n\nexport type CopyButtonProps = {\n value: string\n label: string\n copiedLabel: string\n failedLabel: string\n className?: string | undefined\n /** Accessible name when the visible label is generic (\"Copiar\" for the tracking number). */\n ariaLabel?: string | undefined\n 'data-sf-copy'?: string\n}\n\n/**\n * Copies `value` to the clipboard. The result is announced in a polite live region (visible text or not) so it is\n * heard; when the browser refuses (no permission, insecure context) the buyer is told to select the text instead.\n */\nexport function CopyButton({ value, label, copiedLabel, failedLabel, className, ariaLabel, ...rest }: CopyButtonProps) {\n const [state, setState] = useState<'idle' | 'copied' | 'failed'>('idle')\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n useEffect(() => () => clearTimeout(timer.current), [])\n const copy = useCallback(async () => {\n try {\n await navigator.clipboard.writeText(value)\n setState('copied')\n } catch {\n setState('failed')\n }\n clearTimeout(timer.current)\n timer.current = setTimeout(() => setState('idle'), 3000)\n }, [value])\n return (\n <>\n <button type=\"button\" onClick={copy} className={className} aria-label={ariaLabel} data-sf-copy={rest['data-sf-copy'] ?? ''} data-state={state}>\n {state === 'copied' ? copiedLabel : label}\n </button>\n <span role=\"status\" aria-live=\"polite\" data-sf-copy-status style={state === 'failed' ? undefined : SR_ONLY}>\n {state === 'copied' ? copiedLabel : state === 'failed' ? failedLabel : ''}\n </span>\n </>\n )\n}\n","/**\n * Lines of an order, as the customer recognises them: picture, name, variant, SKU, quantity and the line total.\n * Headless (`data-sf-order-lines`), built on the shared `ProductPreview`. A line without picture or whose product no\n * longer exists is still a complete row (designed placeholder, \"Producto no disponible\"), and a malformed line from\n * the server is skipped instead of breaking the page.\n */\nimport type { Order, OrderLine } from '@asteby/storefront'\nimport { ProductPreview, ProductThumbStack, type ProductPreviewClassNames, type ProductThumbImage } from '../ui/product-preview.js'\nimport { fill } from './orders-messages.js'\nimport { moneyText, str, useAccountText, type AccountTextProps } from './orders-ui.js'\n\n/** The picture of a line when it carries a usable URL. */\nexport function lineImage(line: Partial<OrderLine> | null | undefined): ProductThumbImage | null {\n const img = line?.image\n if (!img || typeof img !== 'object') return null\n const url = str((img as { url?: unknown }).url)\n if (!url) return null\n const alt = str((img as { alt?: unknown }).alt)\n const w = Number((img as { width?: unknown }).width)\n const h = Number((img as { height?: unknown }).height)\n return { url, alt, ...(Number.isFinite(w) && w > 0 ? { width: w } : {}), ...(Number.isFinite(h) && h > 0 ? { height: h } : {}) }\n}\n\nfunction validLines(order: Pick<Order, 'lines'> | { lines?: unknown }): OrderLine[] {\n return (Array.isArray(order.lines) ? order.lines : []).filter((l): l is OrderLine => !!l && typeof l === 'object')\n}\n\nexport type OrderLinesClassNames = Partial<Record<'root' | 'list' | 'item', string>> & { preview?: ProductPreviewClassNames }\n\nexport type OrderLinesProps = AccountTextProps & {\n order: Pick<Order, 'lines'>\n /** Product page of a line (return `null` for none). */\n lineHref?: (line: OrderLine) => string | null | undefined\n /** Thumb side in px. Default 64. */\n size?: number\n /** Heading of the list for screen readers. */\n label?: string\n classNames?: OrderLinesClassNames\n}\n\nexport function OrderLines({ order, lineHref, size = 64, label, classNames: cx = {}, ...text }: OrderLinesProps) {\n const { m, locale } = useAccountText(text)\n const lines = validLines(order)\n if (lines.length === 0) return null\n return (\n <div className={cx.root} data-sf-order-lines=\"\">\n <ul className={cx.list} aria-label={label ?? m['order.lines']} data-sf-order-lines-list=\"\">\n {lines.map((l, i) => {\n const qty = Number.isFinite(l.quantity) && l.quantity > 0 ? l.quantity : 1\n const unit = moneyText(l.unit, locale)\n const variant = str(l.variant_title)\n return (\n <li key={`${str(l.sku) ?? ''}-${i}`} className={cx.item} data-sf-order-line=\"\">\n <ProductPreview\n image={lineImage(l)}\n name={str(l.title) ?? ''}\n variant={variant && !/^default( title)?$/i.test(variant) ? variant : null}\n sku={str(l.sku)}\n quantity={qty}\n quantityLabel={m['order.line.quantity']}\n unavailableLabel={m['order.line.unavailable']}\n unitPrice={unit ? fill(m['order.line.each'], { price: unit }) : null}\n total={moneyText(l.total, locale)}\n href={lineHref?.(l) ?? null}\n size={size}\n {...(cx.preview ? { classNames: cx.preview } : {})}\n />\n </li>\n )\n })}\n </ul>\n </div>\n )\n}\n\n/** The products of an order as overlapped pictures with \"+N\": the glance of an order card. */\nexport function OrderProductsStack({ order, size = 44, max = 4, className, ...text }: AccountTextProps & { order: Pick<Order, 'lines'>; size?: number; max?: number; className?: string }) {\n const { m } = useAccountText(text)\n const lines = validLines(order)\n if (lines.length === 0) return null\n return (\n <ProductThumbStack\n items={lines.map((l) => ({ image: lineImage(l), name: str(l.title) }))}\n size={size}\n max={max}\n moreLabel={m['order.productsMore']}\n {...(className ? { className } : {})}\n />\n )\n}\n","/**\n * The unified timeline of an order (`OrderProgress`), the status badge and the next-action button. Headless: no styles,\n * `data-sf-*` hooks and `classNames` slots. Reads `order.progress` / `order.next_action` (or derives them for an older\n * OPS) and never invents a state: an unknown stage, step or problem code renders as a generic text.\n */\nimport type { NextAction, Order, OrderProgress as OrderProgressData, OrderProgressStep } from '@asteby/storefront'\nimport { nextAction as deriveNextAction, orderProgress as deriveProgress, safeTrackingUrl } from '@asteby/storefront'\nimport type { MouseEvent, ReactNode } from 'react'\nimport { enumText } from './orders-messages.js'\nimport { Hidden, Time, useAccountText, type AccountTextProps } from './orders-ui.js'\n\nconst STEP_STATES = new Set(['done', 'current', 'pending', 'problem'])\nconst stepState = (s: unknown): 'done' | 'current' | 'pending' | 'problem' => (typeof s === 'string' && STEP_STATES.has(s) ? (s as 'done') : 'pending')\n\n/** A shape per state so the state never depends on color alone. */\nconst GLYPH = { done: '✓', current: '●', pending: '○', problem: '!' } as const\n\nexport type OrderTone = 'done' | 'current' | 'problem' | 'muted'\n\n/** Tone of a stage for the store's own colors (`data-sf-tone`). */\nexport function stageTone(stage: string, problem?: unknown): OrderTone {\n if (problem) return 'problem'\n if (stage === 'delivered') return 'done'\n if (stage === 'cancelled' || stage === 'refunded') return 'muted'\n if (['pending_payment', 'paid', 'preparing', 'ready_for_pickup', 'shipped', 'in_transit', 'out_for_delivery'].includes(stage)) return 'current'\n return 'muted'\n}\n\nexport type OrderStatusBadgeProps = AccountTextProps & {\n /** The order (its `progress` or a derived one is used) ... */\n order?: Order\n /** ... or the progress itself. */\n progress?: OrderProgressData\n className?: string\n}\n\n/** Status in words with a semantic tone: `<span data-sf-order-badge data-sf-tone=\"current\">En camino</span>`. */\nexport function OrderStatusBadge({ order, progress, className, ...text }: OrderStatusBadgeProps) {\n const { m } = useAccountText(text)\n const p = progress ?? (order ? deriveProgress(order) : null)\n if (!p) return null\n return (\n <span className={className} data-sf-order-badge data-sf-stage={p.stage} data-sf-tone={stageTone(p.stage, p.problem)}>\n {enumText(m, 'stage', p.stage)}\n {p.problem ? <Hidden>{`, ${m['stepState.problem']}`}</Hidden> : null}\n </span>\n )\n}\n\nexport type OrderProgressClassNames = Partial<Record<'root' | 'list' | 'step' | 'marker' | 'label' | 'time' | 'problem' | 'terminal', string>>\n\nexport type OrderProgressProps = AccountTextProps & {\n /** Pass the order (progress is read or derived) ... */\n order?: Order\n /** ... or the progress. */\n progress?: OrderProgressData\n /** `compact`: only the current step and \"step 3 of 5\", for a list card. */\n variant?: 'full' | 'compact'\n classNames?: OrderProgressClassNames\n}\n\n/**\n * `<ol>` with the steps paid → preparing → shipped → on its way → delivered (or pickup). The current step carries\n * `aria-current=\"step\"`; every state also has text for screen readers, and a problem is written out below the list.\n */\nexport function OrderProgress({ order, progress, variant = 'full', classNames: cx = {}, ...text }: OrderProgressProps) {\n const { m, t, date } = useAccountText(text)\n const p = progress ?? (order ? deriveProgress(order) : null)\n if (!p) return null\n const steps: OrderProgressStep[] = Array.isArray(p.steps) ? p.steps.filter((s) => s && typeof s === 'object') : []\n const stepLabel = (s: OrderProgressStep) => enumText(m, 'step', s.key)\n\n if (steps.length === 0 || p.stage === 'cancelled' || p.stage === 'refunded') {\n const note = p.stage === 'cancelled' ? m['progress.cancelled'] : p.stage === 'refunded' ? m['progress.refunded'] : enumText(m, 'stage', p.stage)\n return (\n <div className={cx.root} data-sf-progress data-sf-stage={p.stage} data-sf-variant={variant}>\n <p className={cx.terminal} data-sf-progress-terminal>\n {note}\n </p>\n </div>\n )\n }\n\n if (variant === 'compact') {\n const at = Math.max(0, steps.findIndex((s) => stepState(s.state) === 'current' || stepState(s.state) === 'problem'))\n const index = steps.some((s) => stepState(s.state) === 'current' || stepState(s.state) === 'problem') ? at : steps.every((s) => stepState(s.state) === 'done') ? steps.length - 1 : 0\n return (\n <div className={cx.root} data-sf-progress data-sf-stage={p.stage} data-sf-variant=\"compact\">\n <p className={cx.label} data-sf-progress-summary>\n {t('order.stepOf', { n: index + 1, total: steps.length, step: stepLabel(steps[index]!) })}\n </p>\n </div>\n )\n }\n\n return (\n <div className={cx.root} data-sf-progress data-sf-stage={p.stage} data-sf-variant=\"full\">\n <ol className={cx.list} aria-label={m['progress.label']} data-sf-progress-list>\n {steps.map((s, i) => {\n const state = stepState(s.state)\n return (\n <li key={`${s.key}-${i}`} className={cx.step} data-sf-step={typeof s.key === 'string' ? s.key : 'unknown'} data-sf-step-state={state} {...(state === 'current' || state === 'problem' ? { 'aria-current': 'step' as const } : {})}>\n <span className={cx.marker} aria-hidden=\"true\" data-sf-step-marker>\n {GLYPH[state]}\n </span>\n <span className={cx.label} data-sf-step-label>\n {stepLabel(s)}\n <Hidden>{`, ${m[`stepState.${state}`]}`}</Hidden>\n </span>\n <Time value={s.at} text={date(s.at)} className={cx.time} />\n </li>\n )\n })}\n </ol>\n {p.problem ? (\n <p className={cx.problem} data-sf-progress-problem={typeof p.problem.code === 'string' ? p.problem.code : 'unknown'}>\n {enumText(m, 'problem', p.problem.code)}\n </p>\n ) : null}\n </div>\n )\n}\n\nexport type NextActionBarClassNames = Partial<Record<'root' | 'primary' | 'secondary', string>>\n\nexport type NextActionBarProps = AccountTextProps & {\n /** The order (its `next_action` is read or derived) ... */\n order?: Order\n /** ... or the action itself. */\n action?: NextAction | null\n /**\n * Where each action goes in YOUR store: `pay` → the voucher/checkout, `download_invoice` → your invoice-file route,\n * `request_invoice` / `correct_invoice_data` → your invoice form, `contact_store` → your contact page. `track` and\n * `pickup` default to the action's own `https` link. Return `null` when there is nowhere to go: the bar then renders\n * a button only if `onAction` handles it, and nothing otherwise.\n */\n hrefFor?: (action: NextAction) => string | null | undefined\n /** Click handler for actions with no link (`pay` opening a dialog...). Called with the action. */\n onAction?: (action: NextAction, event: MouseEvent<HTMLElement>) => void\n /** Secondary buttons next to the primary one (copy tracking number, request return...). */\n secondary?: ReactNode\n classNames?: NextActionBarClassNames\n}\n\n/**\n * ONE primary call to action: \"Rastrear envío\", \"Descargar factura\", \"Pagar ahora\"... Links that leave the store carry\n * `rel=\"noopener noreferrer\"` and a hidden \"(opens in a new tab)\". Nothing renders for `none` or an action with no\n * way to act.\n */\nexport function NextActionBar({ order, action, hrefFor, onAction, secondary, classNames: cx = {}, ...text }: NextActionBarProps) {\n const { m } = useAccountText(text)\n const a = action ?? (order ? deriveNextAction(order) : null)\n if (!a || a.kind === 'none') return secondary ? <div className={cx.root} data-sf-action-bar>{secondary}</div> : null\n const fromApi = a.kind === 'track' || a.kind === 'pickup' ? safeTrackingUrl(a.href) : null\n const href = hrefFor?.(a) ?? fromApi\n const external = !!href && /^https:\\/\\//i.test(href)\n const label = enumText(m, 'action', a.kind)\n const common = { className: cx.primary, 'data-sf-action': typeof a.kind === 'string' ? a.kind : 'unknown' } as const\n let primary = null\n if (href) {\n primary = (\n <a href={href} {...common} {...(external ? { target: '_blank', rel: 'noopener noreferrer' } : {})} onClick={onAction ? (e) => onAction(a, e) : undefined}>\n {label}\n {external ? <Hidden> {m['action.newTab']}</Hidden> : null}\n </a>\n )\n } else if (onAction) {\n primary = (\n <button type=\"button\" {...common} onClick={(e) => onAction(a, e)}>\n {label}\n </button>\n )\n }\n if (!primary && !secondary) return null\n return (\n <div className={cx.root} role=\"group\" aria-label={m['action.label']} data-sf-action-bar>\n {primary}\n {secondary}\n </div>\n )\n}\n","/**\n * \"Mis pedidos\": a list of order cards with status in words, a compact progress, the shipment summary, the total and\n * the one next action. Headless (`data-sf-order*`, `classNames`). Every state of the list is a real state of the\n * component: `loading` (fixed-height skeletons, no layout shift), `error` (recoverable, says purchases are safe),\n * `empty` (useful text and your own call to action) and `ready`.\n */\nimport type { NextAction, Order } from '@asteby/storefront'\nimport { nextAction as deriveNextAction, orderProgress as deriveProgress, isTestShipment } from '@asteby/storefront'\nimport type { ReactNode } from 'react'\nimport { enumText, fill } from './orders-messages.js'\nimport { OrderProductsStack } from './order-lines.js'\nimport { Hidden, Time, moneyText, plural, str, useAccountText, type AccountTextProps } from './orders-ui.js'\nimport { NextActionBar, OrderProgress, OrderStatusBadge, type NextActionBarClassNames, type OrderProgressClassNames } from './progress.js'\n\nexport type OrderCardClassNames = Partial<Record<'root' | 'header' | 'products' | 'number' | 'link' | 'meta' | 'badge' | 'summary' | 'shipment' | 'footer' | 'total' | 'actions', string>> & {\n progress?: OrderProgressClassNames\n action?: NextActionBarClassNames\n}\n\nexport type OrderCardProps = AccountTextProps & {\n order: Order\n /** Where the order detail lives in your store. The whole card is reached through the number's link. */\n orderHref: (order: Order) => string\n /** Where each next action goes (see `NextActionBar.hrefFor`). */\n actionHref?: (action: NextAction, order: Order) => string | null | undefined\n onAction?: (action: NextAction, order: Order) => void\n /** Heading level of the order number (default 3). */\n headingLevel?: 2 | 3 | 4\n classNames?: OrderCardClassNames\n}\n\nexport function OrderCard({ order, orderHref, actionHref, onAction, headingLevel = 3, classNames: cx = {}, ...text }: OrderCardProps) {\n const { m, date, locale } = useAccountText(text)\n const Heading = `h${headingLevel}` as 'h3'\n const progress = deriveProgress(order)\n const items = (Array.isArray(order.lines) ? order.lines : []).reduce((n, l) => n + (Number.isFinite(l?.quantity) ? l.quantity : 0), 0)\n const summary = order.shipments_summary && typeof order.shipments_summary === 'object' ? order.shipments_summary : null\n const shipments = Array.isArray(order.shipments) ? order.shipments : []\n const showShipment = !!summary && typeof summary.count === 'number' && summary.count > 0 && !(shipments.length > 0 && shipments.every(isTestShipment)) && !['pending_payment', 'cancelled', 'refunded'].includes(progress.stage)\n const action = deriveNextAction(order)\n const total = moneyText(order.total, locale)\n const carrier = summary ? str(summary.carrier) : null\n return (\n <article className={cx.root} data-sf-order data-sf-order-status={progress.stage} data-sf-order-id={order.id}>\n <header className={cx.header}>\n <Heading className={cx.number} data-sf-order-number>\n <a href={orderHref(order)} className={cx.link} data-sf-order-link>\n {fill(m['order.number'], { number: str(order.number) ?? (str(order.id) ?? '').slice(0, 8) })}\n </a>\n </Heading>\n <OrderStatusBadge progress={progress} {...text} {...(cx.badge ? { className: cx.badge } : {})} />\n </header>\n <p className={cx.meta} data-sf-order-meta>\n <Time value={order.created_at} text={date(order.created_at) ? fill(m['order.placed'], { date: date(order.created_at)! }) : null} />\n {items > 0 ? <> · {plural(m, 'order.items', items)}</> : null}\n </p>\n {Array.isArray(order.lines) && order.lines.length > 0 ? (\n <div className={cx.products} data-sf-order-products>\n <OrderProductsStack order={order} {...text} />\n </div>\n ) : null}\n <div className={cx.summary} data-sf-order-summary>\n <OrderProgress progress={progress} variant=\"compact\" {...text} {...(cx.progress ? { classNames: cx.progress } : {})} />\n {showShipment ? (\n <p className={cx.shipment} data-sf-order-shipment>\n {carrier ? <>{carrier} · </> : null}\n {enumText(m, 'shipment.status', summary!.status)}\n </p>\n ) : null}\n </div>\n <div className={cx.footer}>\n {total ? (\n <p className={cx.total} data-sf-order-total>\n <span>{m['order.total']}: </span>\n <strong>{total}</strong>\n </p>\n ) : null}\n <NextActionBar\n action={action}\n {...text}\n hrefFor={(a) => actionHref?.(a, order) ?? undefined}\n {...(onAction ? { onAction: (a: NextAction) => onAction(a, order) } : {})}\n classNames={{ ...(cx.actions ? { root: cx.actions } : {}), ...(cx.action ?? {}) }}\n />\n </div>\n </article>\n )\n}\n\nexport type OrderListClassNames = Partial<Record<'root' | 'list' | 'item' | 'skeleton' | 'empty' | 'emptyTitle' | 'emptyBody' | 'emptyGuest' | 'error' | 'retry' | 'more', string>> & {\n card?: OrderCardClassNames\n}\n\nexport type OrderListProps = AccountTextProps &\n Pick<OrderCardProps, 'orderHref' | 'actionHref' | 'onAction' | 'headingLevel'> & {\n orders?: readonly Order[] | null\n status?: 'loading' | 'ready' | 'error'\n /** Skeleton cards while loading (default 3). */\n skeletons?: number\n onRetry?: () => void\n hasMore?: boolean\n loadingMore?: boolean\n onLoadMore?: () => void\n /** Your call to action in the empty state (\"Ver catálogo\"). */\n emptyAction?: ReactNode\n /** Show \"bought as a guest? verify your email\" in the empty state (default true). */\n guestHint?: boolean\n classNames?: OrderListClassNames\n }\n\nexport function OrderList({ orders, status = 'ready', skeletons = 3, onRetry, hasMore, loadingMore, onLoadMore, emptyAction, guestHint = true, orderHref, actionHref, onAction, headingLevel = 3, classNames: cx = {}, ...text }: OrderListProps) {\n const { m } = useAccountText(text)\n const list = (Array.isArray(orders) ? orders : []).filter((o): o is Order => !!o && typeof o === 'object' && typeof o.id === 'string')\n\n if (status === 'loading' && list.length === 0) {\n return (\n <div className={cx.root} role=\"status\" aria-busy=\"true\" data-sf-orders data-sf-orders-state=\"loading\">\n <Hidden>{m['order.loading']}</Hidden>\n <ul className={cx.list} aria-hidden=\"true\">\n {Array.from({ length: Math.max(1, skeletons) }, (_, i) => (\n <li key={i} className={cx.skeleton} data-sf-skeleton />\n ))}\n </ul>\n </div>\n )\n }\n if (status === 'error' && list.length === 0) {\n return (\n <div className={cx.root} data-sf-orders data-sf-orders-state=\"error\">\n <div className={cx.error} role=\"alert\" data-sf-orders-error>\n <p>{m['order.error']}</p>\n {onRetry ? (\n <button type=\"button\" className={cx.retry} onClick={onRetry} data-sf-retry>\n {m['order.retry']}\n </button>\n ) : null}\n </div>\n </div>\n )\n }\n if (list.length === 0) {\n return (\n <div className={cx.root} data-sf-orders data-sf-orders-state=\"empty\">\n <div className={cx.empty} data-sf-orders-empty>\n <p className={cx.emptyTitle}>\n <strong>{m['order.emptyTitle']}</strong>\n </p>\n <p className={cx.emptyBody}>{m['order.emptyBody']}</p>\n {guestHint ? (\n <p className={cx.emptyGuest} data-sf-orders-guest-hint>\n {m['order.emptyGuest']}\n </p>\n ) : null}\n {emptyAction}\n </div>\n </div>\n )\n }\n return (\n <div className={cx.root} data-sf-orders data-sf-orders-state=\"ready\">\n <ul className={cx.list} aria-label={m['order.listLabel']} data-sf-orders-list>\n {list.map((o) => (\n <li key={o.id} className={cx.item}>\n <OrderCard order={o} orderHref={orderHref} {...(actionHref ? { actionHref } : {})} {...(onAction ? { onAction } : {})} headingLevel={headingLevel} {...text} {...(cx.card ? { classNames: cx.card } : {})} />\n </li>\n ))}\n </ul>\n {status === 'error' ? (\n <div className={cx.error} role=\"alert\" data-sf-orders-error>\n <p>{m['order.error']}</p>\n {onRetry ? (\n <button type=\"button\" className={cx.retry} onClick={onRetry} data-sf-retry>\n {m['order.retry']}\n </button>\n ) : null}\n </div>\n ) : null}\n {hasMore && onLoadMore ? (\n <button type=\"button\" className={cx.more} onClick={onLoadMore} disabled={loadingMore} aria-disabled={loadingMore || undefined} data-sf-orders-more>\n {loadingMore ? m['order.loadingMore'] : m['order.loadMore']}\n </button>\n ) : null}\n </div>\n )\n}\n","/**\n * One shipment as the buyer sees it: carrier, status in words, tracking number (copy) and `https` link, promised date\n * and the carrier's events newest first. Headless (`data-sf-shipment-*`, `classNames`). Privacy rules enforced here\n * too, not only on the server: only a RETURN shipment may show its label link, a sandbox (`test_mode`) shipment is\n * hidden or marked \"test\" (never shown with a tracking number or link as if it were real), links must be `https`.\n *\n * The map is NOT here: `renderMap` is the slot the map component fills (it receives the approximate points; the event\n * list below is always rendered and is the text equivalent of the map).\n */\nimport type { Shipment, ShipmentMap } from '@asteby/storefront'\nimport { isTestShipment, safeTrackingUrl, sortTrackingEvents } from '@asteby/storefront'\nimport { useId, useState, type ReactNode } from 'react'\nimport { enumText } from './orders-messages.js'\nimport { CopyButton, Hidden, Time, str, useAccountText, type AccountTextProps } from './orders-ui.js'\n\nexport type ShipmentCardClassNames = Partial<\n Record<'root' | 'header' | 'carrier' | 'status' | 'meta' | 'number' | 'actions' | 'link' | 'copy' | 'events' | 'event' | 'toggle' | 'empty' | 'test' | 'map', string>\n>\n\n/** What `renderMap` receives. */\nexport type ShipmentMapSlotProps = { shipment: Shipment; map: ShipmentMap }\n\nexport type ShipmentCardProps = AccountTextProps & {\n shipment: Shipment\n /** A sandbox shipment: `hide` (default) renders nothing; `mark` shows it labelled \"test\", without number or link. */\n testMode?: 'hide' | 'mark'\n /** How many events show before \"Show all\". Default 3. */\n eventsPreview?: number\n /** The carrier's logo/brand mark (e.g. `<BrandMark brand={shipment.carrier_logo_key} />` from `/checkout`); kept out of this bundle on purpose. */\n renderCarrierMark?: (shipment: Shipment) => ReactNode\n /** Slot for the map (F7). Called only when the shipment has a `map`. */\n renderMap?: (props: ShipmentMapSlotProps) => ReactNode\n /** Heading level of the title (default 3). */\n headingLevel?: 2 | 3 | 4 | 5\n classNames?: ShipmentCardClassNames\n}\n\nexport function ShipmentCard({ shipment, testMode = 'hide', eventsPreview = 3, renderCarrierMark, renderMap, headingLevel = 3, classNames: cx = {}, ...text }: ShipmentCardProps) {\n const { m, t, date } = useAccountText(text)\n const [open, setOpen] = useState(false)\n const id = useId().replace(/:/g, '')\n if (!shipment || typeof shipment !== 'object') return null\n const test = isTestShipment(shipment)\n if (test && testMode === 'hide') return null\n\n const isReturn = shipment.kind === 'return'\n const Heading = `h${headingLevel}` as 'h3'\n const SubHeading = `h${headingLevel + 1}` as 'h4'\n const carrier = str(shipment.carrier)\n const service = test ? null : str(shipment.service)\n const number = test ? null : str(shipment.tracking_number)\n const trackUrl = test ? null : safeTrackingUrl(shipment.tracking_url)\n const labelUrl = isReturn && !test ? safeTrackingUrl(shipment.label_url) : null\n const events = test ? [] : sortTrackingEvents(shipment.events)\n const shown = open ? events : events.slice(0, Math.max(1, eventsPreview))\n const status = test ? m['shipment.preparing'] : enumText(m, 'shipment.status', shipment.status)\n const promised = !test && shipment.status !== 'delivered' ? date(shipment.promised_by) : null\n const delivered = !test ? date(shipment.delivered_at) : null\n const shipped = !test && !delivered ? date(shipment.shipped_at) : null\n const titleId = `sf-shp-${id}`\n const eventsId = `sf-shp-ev-${id}`\n\n return (\n <article className={cx.root} aria-labelledby={titleId} data-sf-shipment data-sf-shipment-status={test ? 'test' : typeof shipment.status === 'string' ? shipment.status : 'unknown'} data-sf-shipment-kind={isReturn ? 'return' : 'outbound'} {...(test ? { 'data-sf-test': '' } : {})}>\n <header className={cx.header} data-sf-shipment-header>\n {renderCarrierMark && !test ? <span data-sf-shipment-mark>{renderCarrierMark(shipment)}</span> : null}\n <Heading id={titleId} className={cx.carrier} data-sf-shipment-title>\n {carrier && !test ? (\n <span data-sf-shipment-eyebrow>\n {m['shipment.carrier']}\n <Hidden>: </Hidden>\n </span>\n ) : null}\n {isReturn ? m['shipment.return'] : (carrier ?? m['shipment.title'])}\n {isReturn && carrier ? <> · {carrier}</> : null}\n </Heading>\n <span className={cx.status} data-sf-shipment-state>\n {status}\n </span>\n {test ? (\n <span className={cx.test} data-sf-shipment-test>\n {m['shipment.test']}\n </span>\n ) : null}\n </header>\n {test ? (\n <p className={cx.meta} data-sf-shipment-test-note>\n {m['shipment.testNote']}\n </p>\n ) : null}\n {service ? (\n <p className={cx.meta} data-sf-shipment-service>\n {m['shipment.service']}: {service}\n </p>\n ) : null}\n {number ? (\n <p className={cx.number} data-sf-shipment-number>\n <span>{m['shipment.number']}: </span>\n <code>{number}</code>{' '}\n <CopyButton value={number} label={m['shipment.copy']} copiedLabel={m['shipment.copied']} failedLabel={m['shipment.copyFailed']} ariaLabel={`${m['shipment.copy']} ${m['shipment.number']}`} className={cx.copy} data-sf-copy=\"tracking\" />\n </p>\n ) : null}\n {promised || delivered || shipped ? (\n <p className={cx.meta} data-sf-shipment-dates>\n {delivered ? (\n <Time value={shipment.delivered_at} text={t('shipment.delivered', { date: delivered })} />\n ) : promised ? (\n <Time value={shipment.promised_by} text={t('shipment.promised', { date: promised })} />\n ) : (\n <Time value={shipment.shipped_at} text={t('shipment.shipped', { date: shipped ?? '' })} />\n )}\n </p>\n ) : null}\n {trackUrl || labelUrl ? (\n <p className={cx.actions} data-sf-shipment-actions>\n {trackUrl ? (\n <a href={trackUrl} target=\"_blank\" rel=\"noopener noreferrer\" className={cx.link} data-sf-shipment-track>\n {carrier ? t('shipment.track', { carrier }) : m['shipment.trackGeneric']}\n <Hidden> {m['action.newTab']}</Hidden>\n </a>\n ) : null}\n {labelUrl ? (\n <a href={labelUrl} target=\"_blank\" rel=\"noopener noreferrer\" className={cx.link} data-sf-shipment-label>\n {m['shipment.returnLabel']}\n <Hidden> {m['action.newTab']}</Hidden>\n </a>\n ) : null}\n </p>\n ) : null}\n {renderMap && !test && shipment.map ? (\n <div className={cx.map} data-sf-shipment-map-slot>\n {renderMap({ shipment, map: shipment.map })}\n </div>\n ) : null}\n {!test ? (\n events.length === 0 ? (\n <p className={cx.empty} data-sf-shipment-empty>\n {m['shipment.noEvents']}\n </p>\n ) : (\n <div data-sf-shipment-events-wrap>\n <SubHeading className={cx.meta} data-sf-shipment-events-title>\n {m['shipment.events']}\n </SubHeading>\n <ol className={cx.events} id={eventsId} data-sf-shipment-events>\n {shown.map((e, i) => {\n const description = str(e.description)\n const location = str(e.location)\n return (\n <li key={`${str(e.id) ?? ''}-${i}`} className={cx.event} data-sf-event-status={typeof e.status === 'string' ? e.status : 'unknown'}>\n <span data-sf-event-state>{enumText(m, 'shipment.status', e.status)}</span>\n {description ? <span data-sf-event-description> · {description}</span> : null}\n {location ? <span data-sf-event-location> · {location}</span> : null}{' '}\n <Time value={e.occurred_at} text={date(e.occurred_at, 'datetime')} />\n </li>\n )\n })}\n </ol>\n {events.length > Math.max(1, eventsPreview) ? (\n <button type=\"button\" className={cx.toggle} aria-expanded={open} aria-controls={eventsId} onClick={() => setOpen((v) => !v)} data-sf-shipment-toggle>\n {open ? m['shipment.showLess'] : t('shipment.showAll', { count: events.length })}\n </button>\n ) : null}\n </div>\n )\n ) : null}\n </article>\n )\n}\n","/**\n * The invoices and credit notes of an order. Headless (`data-sf-invoice-*`, `classNames`). A credit note is listed\n * under the invoice it corrects. Downloads go ONLY through YOUR authenticated route (`fileHref`, backed by\n * `invoiceFileResponse` in `/account/server`) or a handler (`onDownload`): this component never prints a link it did\n * not get from the store, so a PAC URL can never end up in the page. An invoice from a sandbox PAC (`test_mode`) is\n * hidden or marked \"test, not valid\" and gets no download.\n *\n * With no documents it hands the order's `invoice` summary (not requested, needs data, being generated...) to\n * `renderSummary`; the usual one is `(s) => <InvoiceStatusCard invoice={s} ... />` from `@asteby/storefront-react/fiscal`\n * (a slot, so this bundle does not carry the fiscal texts for stores that never request invoices from here).\n */\nimport type { InvoiceDoc, InvoiceFileKind, InvoiceSummary } from '@asteby/storefront'\nimport { groupInvoiceDocs, isTestInvoice } from '@asteby/storefront'\nimport { useId, type ReactNode } from 'react'\nimport { enumText, fill } from './orders-messages.js'\nimport { Hidden, Time, moneyText, str, useAccountText, type AccountTextProps } from './orders-ui.js'\n\nexport type InvoiceListClassNames = Partial<\n Record<'root' | 'title' | 'group' | 'doc' | 'status' | 'meta' | 'note' | 'actions' | 'download' | 'creditNotes' | 'test' | 'error' | 'retry' | 'empty', string>\n>\n\nexport type InvoiceListProps = AccountTextProps & {\n invoices?: readonly InvoiceDoc[] | null\n /** The order's invoice summary, handed to `renderSummary` when there are no documents. */\n summary?: InvoiceSummary | null\n /** Draws the summary (request, needs data, being generated...): `(s) => <InvoiceStatusCard invoice={s} requestHref=\"/factura\" />`. */\n renderSummary?: (summary: InvoiceSummary) => ReactNode\n /** Your authenticated download route for a file of a document, e.g. `/cuenta/pedidos/${order}/facturas/${doc.id}.${kind}`. */\n fileHref?: (doc: InvoiceDoc, kind: InvoiceFileKind) => string | null | undefined\n /** Alternative to `fileHref`: a handler (opens your own download flow). */\n onDownload?: (doc: InvoiceDoc, kind: InvoiceFileKind) => void\n /** The server could not read the invoices (`order.degraded` has `invoices`): shows a recoverable error. */\n degraded?: boolean\n onRetry?: () => void\n /** A sandbox invoice: `mark` (default) shows it labelled and with no download; `hide` removes it. */\n testMode?: 'hide' | 'mark'\n /** Money formatter is `Intl`; the order's currency comes with each total. */\n headingLevel?: 2 | 3 | 4\n /** Content under the list (e.g. a \"Request invoice\" button). */\n children?: ReactNode\n classNames?: InvoiceListClassNames\n}\n\nconst known = (s: unknown): s is 'issued' | 'pending' | 'cancelled' | 'error' => s === 'issued' || s === 'pending' || s === 'cancelled' || s === 'error'\n\nexport function InvoiceList({ invoices, summary, renderSummary, fileHref, onDownload, degraded, onRetry, testMode = 'mark', headingLevel = 3, children, classNames: cx = {}, ...text }: InvoiceListProps) {\n const { m, t, date, locale } = useAccountText(text)\n const Heading = `h${headingLevel}` as 'h3'\n const titleId = `sf-invoices-${useId().replace(/:/g, '')}`\n const all = (Array.isArray(invoices) ? invoices : []).filter((d): d is InvoiceDoc => !!d && typeof d === 'object' && typeof d.id === 'string')\n const docs = testMode === 'hide' ? all.filter((d) => !isTestInvoice(d)) : all\n const { groups, orphans } = groupInvoiceDocs(docs)\n\n const renderDoc = (doc: InvoiceDoc, parent?: InvoiceDoc) => {\n const test = isTestInvoice(doc)\n const status = known(doc.status) ? doc.status : 'unknown'\n const kindLabel = doc.kind === 'credit_note' ? m['invoice.creditNote'] : m['invoice.invoice']\n const docName = (d: InvoiceDoc) => [str(d.series), str(d.folio_number)].filter(Boolean).join('-')\n const name = docName(doc)\n const folio = str(doc.folio)\n const canDownload = status === 'issued' && !test\n const total = moneyText(doc.total, locale)\n const link = (kind: InvoiceFileKind) => {\n const label = kind === 'pdf' ? m['invoice.pdf'] : m['invoice.xml']\n const aria = fill(m['invoice.downloadOf'], { action: label, kind: kindLabel.toLowerCase(), name: name || folio || '' }).replace(/\\s+,/g, ',').replace(/,\\s*$/, '').trim()\n const href = fileHref?.(doc, kind)\n if (href) {\n return (\n <a key={kind} href={href} download className={cx.download} aria-label={aria} data-sf-invoice-download={kind}>\n {label}\n </a>\n )\n }\n if (onDownload) {\n return (\n <button key={kind} type=\"button\" className={cx.download} aria-label={aria} onClick={() => onDownload(doc, kind)} data-sf-invoice-download={kind}>\n {label}\n </button>\n )\n }\n return null\n }\n return (\n <li key={doc.id} className={cx.doc} data-sf-invoice-doc data-sf-invoice-kind={doc.kind === 'credit_note' ? 'credit_note' : 'invoice'} data-sf-invoice-status={status}>\n <p className={cx.status} data-sf-invoice-heading>\n <strong>{kindLabel}</strong>\n {name ? <> {name}</> : null} · <span data-sf-invoice-state>{enumText(m, 'invoice.status', doc.status)}</span>\n {test ? (\n <>\n {' '}\n <span className={cx.test} data-sf-invoice-test>\n {m['invoice.test']}\n </span>\n </>\n ) : null}\n </p>\n {parent ? (\n <p className={cx.meta} data-sf-invoice-parent>\n {fill(m['invoice.creditNoteOf'], { folio: docName(parent) || str(parent.folio) || '' }).trim()}\n </p>\n ) : null}\n {folio && !test ? (\n <p className={cx.meta} data-sf-invoice-folio>\n {m['invoice.folio']}: <code>{folio}</code>\n </p>\n ) : null}\n <p className={cx.meta}>\n {doc.issued_at ? <Time value={doc.issued_at} text={fill(m['invoice.issued'], { date: date(doc.issued_at) ?? '' })} /> : null}\n {total ? <> · {m['invoice.total']}: {total}</> : null}\n </p>\n {status === 'pending' || status === 'error' || status === 'cancelled' ? (\n <p className={cx.note} data-sf-invoice-note>\n {m[`invoice.statusNote.${status}`]}\n </p>\n ) : null}\n {canDownload && (fileHref || onDownload) ? (\n <p className={cx.actions} data-sf-invoice-actions>\n {link('pdf')}\n {link('xml')}\n </p>\n ) : null}\n </li>\n )\n }\n\n const hasDocs = groups.length + orphans.length > 0\n return (\n <section className={cx.root} aria-labelledby={titleId} data-sf-invoices>\n <Heading id={titleId} className={cx.title}>\n {m['invoice.title']}\n </Heading>\n {degraded ? (\n <div className={cx.error} role=\"alert\" data-sf-section-error=\"invoices\">\n <p>{m['section.error']}</p>\n {onRetry ? (\n <button type=\"button\" className={cx.retry} onClick={onRetry} data-sf-retry>\n {m['section.retry']}\n <Hidden> {m['invoice.title']}</Hidden>\n </button>\n ) : null}\n </div>\n ) : hasDocs ? (\n <ul data-sf-invoice-list>\n {groups.map(({ invoice, creditNotes }) => (\n <li key={invoice.id} className={cx.group} data-sf-invoice-group>\n <ul>{renderDoc(invoice)}</ul>\n {creditNotes.length ? (\n <ul className={cx.creditNotes} data-sf-invoice-credit-notes>\n {creditNotes.map((nc) => renderDoc(nc, invoice))}\n </ul>\n ) : null}\n </li>\n ))}\n {orphans.map((nc) => (\n <li key={nc.id} className={cx.group} data-sf-invoice-group>\n <ul>{renderDoc(nc)}</ul>\n </li>\n ))}\n </ul>\n ) : summary && renderSummary ? (\n <div data-sf-invoice-summary>{renderSummary(summary)}</div>\n ) : (\n <p className={cx.empty} data-sf-invoice-empty>\n {m['invoice.none']}\n </p>\n )}\n {children}\n </section>\n )\n}\n","/**\n * Cash voucher of a payment that is still waiting (OXXO, SPEI, deposit): reference / CLABE with a copy button, the\n * Code 128 barcode drawn as SVG, the expiry, and print / download. Ported from the ProtekAuto store (#84) so no store\n * keeps its own copy. Headless (`data-sf-voucher-*`, `classNames`), texts es/en.\n *\n * Print / download: pass `voucherHref` to serve the voucher from YOUR server route (`pendingVoucherResponse` in\n * `/account/server`, the right choice for the account page: ownership is re-checked on each request), or leave it out\n * and the card builds the document in the browser from the data it already has (thank-you page: guests have no\n * account to go back to). The document generator is a separate chunk, fetched only when the buyer taps.\n */\nimport type { PendingPayment } from '@asteby/storefront'\nimport { useId, useMemo, type ReactNode } from 'react'\nimport { enumText, fill } from './orders-messages.js'\nimport { CopyButton, Hidden, Time, moneyText, useAccountText, type AccountTextProps } from './orders-ui.js'\nimport { barcodeGeometry, barcodeValue, voucherOf } from './voucher.js'\n\nexport type BarcodeProps = { value: string; label: string; height?: number; className?: string }\n\n/** Code 128 as an inline `<svg role=\"img\">` (no HTML injection). `null` when the value cannot be encoded. */\nexport function Barcode({ value, label, height = 56, className }: BarcodeProps) {\n const g = useMemo(() => barcodeGeometry(value, { height }), [value, height])\n if (!g) return null\n return (\n <svg className={className} viewBox={`0 0 ${g.width} ${g.height}`} width={g.width} height={g.height} role=\"img\" aria-label={label} shapeRendering=\"crispEdges\" fill=\"#000\" data-sf-voucher-barcode-svg>\n {g.rects.map((r) => (\n <rect key={r.x} x={r.x} y={0} width={r.w} height={g.height} />\n ))}\n </svg>\n )\n}\n\nexport type PendingPaymentCardClassNames = Partial<\n Record<'root' | 'header' | 'method' | 'badge' | 'field' | 'label' | 'value' | 'barcode' | 'expiry' | 'total' | 'note' | 'actions' | 'primary' | 'secondary', string>\n>\n\nexport type PendingPaymentCardProps = AccountTextProps & {\n payment: PendingPayment\n /** Server route that serves the printable voucher: `(payment, { download })`. Without it the browser builds it. */\n voucherHref?: (payment: PendingPayment, opts: { download: boolean }) => string\n /** Store name printed on the document built in the browser. */\n shopName?: string\n headingLevel?: 2 | 3 | 4\n classNames?: PendingPaymentCardClassNames\n children?: ReactNode\n}\n\nasync function openDocument(payment: PendingPayment, mode: 'print' | 'download', opts: { locale: string; shopName?: string | undefined; timeZone?: string | undefined }) {\n const v = voucherOf(payment)\n if (!v) return\n const { renderVoucherDocument } = await import('./voucher-document.js')\n const html = renderVoucherDocument(v, { locale: opts.locale, ...(opts.shopName ? { shopName: opts.shopName } : {}), ...(opts.timeZone ? { timeZone: opts.timeZone } : {}), printButton: mode === 'print', autoPrint: mode === 'print' })\n const url = URL.createObjectURL(new Blob([html], { type: 'text/html;charset=utf-8' }))\n const download = () => {\n const a = document.createElement('a')\n a.href = url\n a.download = 'ficha-de-pago.html'\n a.click()\n }\n if (mode === 'print') {\n // (`noopener` in the features would make `open` return null, which is how a blocked pop-up is told apart.)\n const w = window.open(url, '_blank')\n if (w) w.opener = null\n else download()\n } else download()\n setTimeout(() => URL.revokeObjectURL(url), 60_000)\n}\n\nexport function PendingPaymentCard({ payment, voucherHref, shopName, headingLevel = 3, classNames: cx = {}, children, ...text }: PendingPaymentCardProps) {\n const { m, t, date, locale, timeZone } = useAccountText(text)\n const titleId = `sf-voucher-${useId().replace(/:/g, '')}`\n const v = voucherOf(payment)\n if (!v) return null\n const expired = payment.status === 'expired'\n const Heading = `h${headingLevel}` as 'h3'\n const code = barcodeValue(v)\n const methodLabel = enumText(m, 'pending.method', v.method?.toLowerCase())\n const total = moneyText(payment.total, locale) ?? moneyText(v.amount, locale)\n const copyValue = v.reference ?? v.clabe\n const expires = date(v.expires_at ?? payment.expires_at, 'datetime')\n\n return (\n <article className={cx.root} aria-labelledby={titleId} data-sf-voucher data-sf-voucher-status={expired ? 'expired' : 'pending_payment'}>\n <header className={cx.header}>\n <Heading id={titleId} className={cx.method} data-sf-voucher-method>\n {methodLabel}\n </Heading>\n <span className={cx.badge} data-sf-voucher-badge data-sf-tone={expired ? 'muted' : 'current'}>\n {expired ? m['pending.expired'] : m['pending.waiting']}\n </span>\n </header>\n {v.reference ? (\n <div className={cx.field} data-sf-voucher-reference>\n <p className={cx.label}>{m['pending.reference']}</p>\n <p className={cx.value} data-sf-voucher-value>\n {v.reference}\n </p>\n </div>\n ) : null}\n {v.clabe ? (\n <div className={cx.field} data-sf-voucher-clabe>\n <p className={cx.label}>{m['pending.clabe']}</p>\n <p className={cx.value} data-sf-voucher-value>\n {v.clabe}\n </p>\n </div>\n ) : null}\n {code && !expired ? (\n <div className={cx.barcode} data-sf-voucher-barcode>\n <Barcode value={code} label={fill(m['pending.barcode'], { code })} />\n </div>\n ) : null}\n {expires ? (\n <p className={cx.expiry} data-sf-voucher-expiry>\n <Time value={v.expires_at ?? payment.expires_at} text={fill(m[expired ? 'pending.expiredOn' : 'pending.expires'], { date: expires })} />\n </p>\n ) : null}\n {total ? (\n <p className={cx.total} data-sf-voucher-total>\n <span>{m['pending.total']}: </span>\n <strong>{total}</strong>\n </p>\n ) : null}\n {expired ? (\n <p className={cx.note} data-sf-voucher-expired-note>\n {m['pending.expiredNote']}\n </p>\n ) : (\n <div className={cx.actions} data-sf-voucher-actions>\n {voucherHref ? (\n <>\n <a href={voucherHref(payment, { download: false })} target=\"_blank\" rel=\"noopener\" className={cx.primary} data-sf-voucher-print>\n {m['pending.print']}\n <Hidden> {m['action.newTab']}</Hidden>\n </a>\n <a href={voucherHref(payment, { download: true })} download className={cx.secondary} data-sf-voucher-download>\n {m['pending.download']}\n </a>\n </>\n ) : (\n <>\n <button type=\"button\" className={cx.primary} onClick={() => void openDocument(payment, 'print', { locale, shopName, timeZone })} data-sf-voucher-print>\n {m['pending.print']}\n </button>\n <button type=\"button\" className={cx.secondary} onClick={() => void openDocument(payment, 'download', { locale, shopName, timeZone })} data-sf-voucher-download>\n {m['pending.download']}\n </button>\n </>\n )}\n {copyValue ? (\n <CopyButton value={copyValue} label={v.reference ? m['pending.copyReference'] : m['pending.copyClabe']} copiedLabel={m['pending.copied']} failedLabel={m['pending.copyFailed']} className={cx.secondary} data-sf-copy=\"voucher\" />\n ) : null}\n </div>\n )}\n {children}\n </article>\n )\n}\n\nexport type PendingPaymentListProps = AccountTextProps &\n Pick<PendingPaymentCardProps, 'voucherHref' | 'shopName' | 'classNames'> & {\n payments?: readonly PendingPayment[] | null\n headingLevel?: 2 | 3\n /** Classes of the section itself. */\n listClassNames?: Partial<Record<'root' | 'title' | 'intro' | 'list' | 'item', string>>\n }\n\n/** \"Pendientes de pago\": the valid vouchers first, then the expired ones. Renders nothing when there are none. */\nexport function PendingPaymentList({ payments, voucherHref, shopName, classNames, listClassNames: lc = {}, headingLevel = 2, ...text }: PendingPaymentListProps) {\n const { m } = useAccountText(text)\n const titleId = `sf-pending-${useId().replace(/:/g, '')}`\n const items = (Array.isArray(payments) ? payments : []).filter((p) => !!voucherOf(p))\n if (items.length === 0) return null\n const sorted = [...items.filter((p) => p.status !== 'expired'), ...items.filter((p) => p.status === 'expired')]\n const Heading = `h${headingLevel}` as 'h2'\n const cardHeading = (headingLevel + 1) as 3 | 4\n return (\n <section className={lc.root} aria-labelledby={titleId} data-sf-pending>\n <Heading id={titleId} className={lc.title}>\n {m['pending.title']}\n </Heading>\n <p className={lc.intro}>{m['pending.intro']}</p>\n <ul className={lc.list}>\n {sorted.map((p) => (\n <li key={p.id} className={lc.item}>\n <PendingPaymentCard payment={p} {...(voucherHref ? { voucherHref } : {})} {...(shopName ? { shopName } : {})} {...(classNames ? { classNames } : {})} headingLevel={cardHeading} {...text} />\n </li>\n ))}\n </ul>\n </section>\n )\n}\n","/**\n * The friendly name of how an order was paid. The server sends `family` (a short enum) and `method_label` (its own\n * text, which an older or English-locale server may fill with the provider's raw word: `Card`, `credit_card`, `oxxo`).\n * The buyer never reads a raw provider key: the label is built from the SDK's texts (es/en), extended by the store.\n */\nimport type { PaymentInfo } from '@asteby/storefront'\nimport type { AccountMessages } from './orders-messages.js'\n\nexport type PaymentMethodKey = 'card' | 'credit_card' | 'debit_card' | 'cash_voucher' | 'oxxo' | 'spei' | 'transfer' | 'bank_deposit' | 'wallet' | 'cash' | 'other'\n\nconst FAMILY: Record<string, PaymentMethodKey> = {\n card: 'card',\n credit_card: 'credit_card',\n debit_card: 'debit_card',\n cash_voucher: 'cash_voucher',\n oxxo: 'oxxo',\n spei: 'spei',\n transfer: 'transfer',\n bank_transfer: 'transfer',\n bank_deposit: 'bank_deposit',\n wallet: 'wallet',\n cash: 'cash',\n other: 'other',\n}\n\n/** Words of a provider's label, in order of specificity (debit before card, oxxo before voucher). */\nconst KEYWORDS: [RegExp, PaymentMethodKey][] = [\n [/oxxo/, 'oxxo'],\n [/spei/, 'spei'],\n [/d[eé]bit/, 'debit_card'],\n [/cr[eé]dit/, 'credit_card'],\n [/card|tarjeta/, 'card'],\n [/deposit|dep[oó]sito/, 'bank_deposit'],\n [/transfer/, 'transfer'],\n [/wallet|billetera|paypal|mercado ?pago|apple ?pay|google ?pay/, 'wallet'],\n [/voucher|ficha|convenience|conveniencia|store|tienda/, 'cash_voucher'],\n [/cash|efectivo/, 'cash'],\n]\n\nconst BRANDS: Record<string, string> = { visa: 'Visa', mastercard: 'Mastercard', master: 'Mastercard', amex: 'American Express', american_express: 'American Express', carnet: 'Carnet', discover: 'Discover' }\n\n/** A label that is a provider key or a bare English word, not a sentence a person wrote (\"Tarjeta Visa terminada en 4242\"). */\nconst RAW = /^[A-Za-z0-9_.:-]+(?: [A-Za-z0-9_.:-]+)?$/\n\n/** The method family of a payment (`card`, `oxxo`, `spei`...), for the store's own icon or styling; `null` when unknown. */\nexport function paymentMethodKey(p: PaymentInfo): PaymentMethodKey | null {\n return keyOf(p)\n}\n\nfunction keyOf(p: PaymentInfo): PaymentMethodKey | null {\n const fam = typeof p.family === 'string' ? p.family.toLowerCase() : ''\n const byLabel = (): PaymentMethodKey | null => {\n const label = typeof p.method_label === 'string' ? p.method_label.toLowerCase().replace(/[_-]+/g, ' ') : ''\n for (const [re, key] of KEYWORDS) if (re.test(label)) return key\n return null\n }\n if (fam && fam !== 'other' && FAMILY[fam]) {\n // `card` family + a label that says credit/debit is more precise.\n const l = byLabel()\n return fam === 'card' && (l === 'credit_card' || l === 'debit_card') ? l : FAMILY[fam]!\n }\n return byLabel() ?? (fam === 'other' ? 'other' : null)\n}\n\nexport type PaymentLabelOptions = {\n /** The store's own words for a payment (by organization, provider...). Return a string to use it; `null`/`undefined` falls through to the SDK's. */\n override?: (payment: PaymentInfo) => string | null | undefined\n}\n\n/**\n * `Tarjeta Visa •••• 1234`, `Efectivo con ficha (OXXO…)`, `Transferencia SPEI`… in the buyer's language. A label the\n * server already wrote as a sentence (it carries its own detail) is kept; a raw key becomes a readable text and never\n * shows as it came; with nothing to go on, a neutral \"Medio de pago\".\n */\nexport function paymentLabel(p: PaymentInfo, m: AccountMessages, options: PaymentLabelOptions = {}): string {\n const custom = options.override?.(p)\n if (typeof custom === 'string' && custom.trim()) return custom.trim()\n const raw = typeof p.method_label === 'string' ? p.method_label.trim() : ''\n const key = keyOf(p)\n const human = raw && !RAW.test(raw)\n // A server sentence with its own detail wins (and the structured brand/last4 are not repeated on top of it).\n if (human && /\\d{4}/.test(raw)) return raw\n if (key) {\n const base = m[`payment.method.${key}` as const]\n if (key !== 'card' && key !== 'credit_card' && key !== 'debit_card') return human && key === 'other' ? raw : base\n const brandRaw = typeof p.brand === 'string' ? p.brand.trim() : ''\n const brand = brandRaw ? (BRANDS[brandRaw.toLowerCase().replace(/[ -]/g, '_')] ?? brandRaw) : ''\n const last4 = typeof p.last4 === 'string' && /^\\d{2,4}$/.test(p.last4.trim()) ? p.last4.trim() : ''\n return `${base}${brand ? ` ${brand}` : ''}${last4 ? ` •••• ${last4}` : ''}`\n }\n return human ? raw : m['payment.method.unknown']\n}\n","/** Refunds and payments of an order. Headless (`data-sf-refund-*`, `data-sf-payment-*`, `classNames`). */\nimport type { PaymentInfo, Refund } from '@asteby/storefront'\nimport { useId } from 'react'\nimport { enumText, fill } from './orders-messages.js'\nimport { paymentLabel, paymentMethodKey, type PaymentLabelOptions } from './payment-method.js'\nimport { Hidden, Time, moneyText, str, useAccountText, type AccountTextProps } from './orders-ui.js'\n\nexport type RefundListClassNames = Partial<Record<'root' | 'title' | 'list' | 'item' | 'amount' | 'status' | 'meta' | 'empty' | 'error' | 'retry', string>>\n\nexport type RefundListProps = AccountTextProps & {\n refunds?: readonly Refund[] | null\n /** Show the \"no refunds\" text when empty (default: render nothing, the usual case). */\n showEmpty?: boolean\n /** The server could not read refunds (`order.degraded`): recoverable error. */\n degraded?: boolean\n onRetry?: () => void\n headingLevel?: 2 | 3 | 4\n classNames?: RefundListClassNames\n}\n\nconst tone = (s: unknown) => (s === 'completed' ? 'done' : s === 'failed' ? 'problem' : 'current')\n\nexport function RefundList({ refunds, showEmpty = false, degraded, onRetry, headingLevel = 3, classNames: cx = {}, ...text }: RefundListProps) {\n const { m, locale, date } = useAccountText(text)\n const titleId = `sf-refunds-${useId().replace(/:/g, '')}`\n const items = (Array.isArray(refunds) ? refunds : []).filter((r): r is Refund => !!r && typeof r === 'object' && typeof r.id === 'string')\n if (!degraded && items.length === 0 && !showEmpty) return null\n const Heading = `h${headingLevel}` as 'h3'\n return (\n <section className={cx.root} aria-labelledby={titleId} data-sf-refunds>\n <Heading id={titleId} className={cx.title}>\n {m['refund.title']}\n </Heading>\n {degraded ? (\n <div className={cx.error} role=\"alert\" data-sf-section-error=\"refunds\">\n <p>{m['section.error']}</p>\n {onRetry ? (\n <button type=\"button\" className={cx.retry} onClick={onRetry} data-sf-retry>\n {m['section.retry']}\n <Hidden> {m['refund.title']}</Hidden>\n </button>\n ) : null}\n </div>\n ) : items.length === 0 ? (\n <p className={cx.empty}>{m['refund.none']}</p>\n ) : (\n <ul className={cx.list}>\n {items.map((r) => (\n <li key={r.id} className={cx.item} data-sf-refund data-sf-refund-status={typeof r.status === 'string' ? r.status : 'unknown'}>\n <span className={cx.amount} data-sf-refund-amount>\n {moneyText(r.amount, locale) ?? ''}\n </span>{' '}\n <span className={cx.status} data-sf-tone={tone(r.status)}>\n {enumText(m, 'refund.status', r.status)}\n </span>\n <span className={cx.meta}>\n {str(r.method_label) ? <> · {paymentLabel({ method_label: r.method_label ?? '', status: 'paid', amount: r.amount }, m)}</> : null}\n {r.completed_at ? (\n <>\n {' · '}\n <Time value={r.completed_at} text={fill(m['refund.completed'], { date: date(r.completed_at) ?? '' })} />\n </>\n ) : r.created_at ? (\n <>\n {' · '}\n <Time value={r.created_at} text={fill(m['refund.requested'], { date: date(r.created_at) ?? '' })} />\n </>\n ) : null}\n </span>\n </li>\n ))}\n </ul>\n )}\n </section>\n )\n}\n\nexport type PaymentSummaryProps = AccountTextProps & {\n payments?: readonly PaymentInfo[] | null\n headingLevel?: 2 | 3 | 4\n /** The store's own name for a payment (by organization, provider...); `null` falls through to the SDK's es/en text. */\n methodLabel?: PaymentLabelOptions['override']\n classNames?: Partial<Record<'root' | 'title' | 'list' | 'item' | 'status' | 'meta', string>>\n}\n\n/** What the buyer paid with (card, voucher...) and its status. Renders nothing when the order has no payments. */\nexport function PaymentSummary({ payments, headingLevel = 3, methodLabel, classNames: cx = {}, ...text }: PaymentSummaryProps) {\n const { m, locale, date } = useAccountText(text)\n const titleId = `sf-payments-${useId().replace(/:/g, '')}`\n const items = (Array.isArray(payments) ? payments : []).filter((p): p is PaymentInfo => !!p && typeof p === 'object' && typeof p.method_label === 'string')\n if (items.length === 0) return null\n const Heading = `h${headingLevel}` as 'h3'\n return (\n <section className={cx.root} aria-labelledby={titleId} data-sf-payments>\n <Heading id={titleId} className={cx.title}>\n {m['payment.title']}\n </Heading>\n <ul className={cx.list}>\n {items.map((p, i) => (\n <li key={`${p.method_label}-${i}`} className={cx.item} data-sf-payment data-sf-payment-method-key={paymentMethodKey(p) ?? 'unknown'} data-sf-payment-status={typeof p.status === 'string' ? p.status : 'unknown'}>\n <span data-sf-payment-method>{paymentLabel(p, m, methodLabel ? { override: methodLabel } : {})}</span>\n {moneyText(p.amount, locale) ? <> · <span>{moneyText(p.amount, locale)}</span></> : null} ·{' '}\n <span className={cx.status} data-sf-tone={p.status === 'failed' ? 'problem' : p.status === 'paid' ? 'done' : 'current'}>\n {enumText(m, 'payment.status', p.status)}\n </span>\n {p.paid_at ? (\n <span className={cx.meta}>\n {' · '}\n <Time value={p.paid_at} text={fill(m['payment.paidOn'], { date: date(p.paid_at) ?? '' })} />\n </span>\n ) : null}\n </li>\n ))}\n </ul>\n </section>\n )\n}\n","/**\n * Data hooks of the account screens. They talk to the client of the `StorefrontProvider` (or `client`), which must carry\n * the buyer's session (`withCustomerToken`); on a store that renders on the server, pass what the loader read as\n * `initial` and nothing is fetched until the buyer asks (`reload`, `loadMore`) or a poll tick fires.\n *\n * They never throw: a failure is `status: 'error'` with the `StorefrontError` in `error`, and `reload()` is the retry.\n * A 404 on one order is `status: 'not_found'` (also when it belongs to someone else: the server does not tell).\n */\nimport type { Connection, Order, PendingPayment, StorefrontClient } from '@asteby/storefront'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { useOptionalStorefront } from '../context.js'\n\nexport type AccountStatus = 'loading' | 'ready' | 'error' | 'not_found'\n\nfunction useClient(client?: StorefrontClient | null): StorefrontClient | null {\n const ctx = useOptionalStorefront()\n return client ?? ctx?.client ?? null\n}\n\nconst asError = (e: unknown): Error => (e instanceof Error ? e : new Error('Request failed'))\n\n// A stable id per client object (one per buyer session with `withCustomerToken`), to tell whose data a hook holds.\nconst ids = new WeakMap<object, string>()\nlet seq = 0\nfunction clientKey(c: StorefrontClient | null): string {\n if (!c) return 'none'\n let k = ids.get(c)\n if (!k) ids.set(c, (k = `c${++seq}`))\n return k\n}\n\n// ---------------------------------------------------------------------------\n// Lists (orders, pending payments)\n// ---------------------------------------------------------------------------\n\nexport type UseConnectionResult<T> = {\n status: Exclude<AccountStatus, 'not_found'>\n nodes: T[]\n error: Error | null\n hasMore: boolean\n loadingMore: boolean\n totalCount: number | null\n /** Fetches the first page again (the retry). Keeps showing the current list meanwhile. */\n reload: () => void\n /** Appends the next page. */\n loadMore: () => void\n}\n\ntype ConnectionState<T> = { status: UseConnectionResult<T>['status']; nodes: T[]; error: Error | null; cursor: string | null; hasMore: boolean; total: number | null; owner: string }\n\nfunction useConnection<T>(fetchPage: (c: StorefrontClient, after: string | null, signal: AbortSignal) => Promise<Connection<T>>, client: StorefrontClient | null, initial: Connection<T> | null | undefined, key: string): UseConnectionResult<T> {\n // What the list belongs to: this client (a buyer's session) and this query. Data of another owner is never returned,\n // so the next buyer on a shared device never sees the previous one's orders, not even while his own load.\n const owner = `${clientKey(client)}|${key}`\n const empty = (status: ConnectionState<T>['status']): ConnectionState<T> => ({ status, nodes: [], error: null, cursor: null, hasMore: false, total: null, owner })\n const [state, setState] = useState<ConnectionState<T>>(() =>\n initial\n ? { status: 'ready', nodes: initial.nodes ?? [], error: null, cursor: initial.page_info?.end_cursor ?? null, hasMore: !!initial.page_info?.has_next_page, total: initial.total_count ?? null, owner }\n : empty('loading'),\n )\n const [loadingMore, setLoadingMore] = useState(false)\n const alive = useRef<AbortController | null>(null)\n const more = useRef<AbortController | null>(null)\n const fetchRef = useRef(fetchPage)\n fetchRef.current = fetchPage\n\n const first = useCallback(() => {\n alive.current?.abort()\n more.current?.abort()\n setLoadingMore(false)\n if (!client) {\n // No session (yet, or signed out): nothing is fetched and nothing of a previous session is kept.\n setState(empty('loading'))\n return\n }\n const ctl = new AbortController()\n alive.current = ctl\n setState((s) => (s.owner === owner && s.nodes.length ? { ...s, error: null } : empty('loading')))\n fetchRef.current(client, null, ctl.signal).then(\n (page) => !ctl.signal.aborted && setState({ status: 'ready', nodes: page.nodes ?? [], error: null, cursor: page.page_info?.end_cursor ?? null, hasMore: !!page.page_info?.has_next_page, total: page.total_count ?? null, owner }),\n (e: unknown) => !ctl.signal.aborted && setState((s) => (s.owner === owner ? { ...s, status: 'error', error: asError(e) } : { ...empty('error'), error: asError(e) })),\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [client, owner])\n\n useEffect(() => {\n if (!(initial && state.owner === owner)) first()\n return () => {\n alive.current?.abort()\n more.current?.abort()\n }\n // `owner` restarts the load when the session or what is asked for changes (page size, filter).\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [first, owner])\n\n const loadMore = useCallback(() => {\n if (!client || state.owner !== owner || !state.hasMore || loadingMore) return\n const ctl = new AbortController()\n more.current = ctl\n setLoadingMore(true)\n fetchRef.current(client, state.cursor, ctl.signal).then(\n (page) => {\n // A reload or another session since this page was asked: it belongs to a list that no longer exists.\n if (ctl.signal.aborted) return\n setLoadingMore(false)\n setState((s) => (s.owner !== owner ? s : { ...s, nodes: [...s.nodes, ...(page.nodes ?? [])], cursor: page.page_info?.end_cursor ?? null, hasMore: !!page.page_info?.has_next_page, total: page.total_count ?? s.total, error: null }))\n },\n (e: unknown) => {\n if (ctl.signal.aborted) return\n setLoadingMore(false)\n setState((s) => (s.owner !== owner ? s : { ...s, error: asError(e) }))\n },\n )\n }, [client, owner, state.owner, state.hasMore, state.cursor, loadingMore])\n\n const view = state.owner === owner ? state : empty('loading')\n return { status: view.status, nodes: view.nodes, error: view.error, hasMore: view.hasMore, loadingMore: state.owner === owner && loadingMore, totalCount: view.total, reload: first, loadMore }\n}\n\nexport type UseCustomerOrdersOptions = {\n client?: StorefrontClient | null\n /** Page size (default 20). */\n first?: number\n /** First page already read on the server: renders at once, nothing is fetched. */\n initial?: Connection<Order> | null\n}\n\n/** The buyer's orders (summaries), newest first, with `loadMore`. */\nexport function useCustomerOrders({ client, first = 20, initial }: UseCustomerOrdersOptions = {}): UseConnectionResult<Order> {\n return useConnection<Order>((c, after, signal) => c.customer.orders({ first, ...(after ? { after } : {}) }, { signal }), useClient(client), initial, `orders:${first}`)\n}\n\nexport type UsePendingPaymentsOptions = UseCustomerOrdersOptions & { initial?: Connection<PendingPayment> | null }\n\n/** Cash vouchers still waiting for payment. A failure of this section never blocks the orders: it is its own `status`. */\nexport function usePendingPayments({ client, first = 20, initial }: UsePendingPaymentsOptions = {}): UseConnectionResult<PendingPayment> {\n return useConnection<PendingPayment>((c, after, signal) => c.customer.pendingPayments({ first, ...(after ? { after } : {}) }, { signal }), useClient(client), initial, `pending:${first}`)\n}\n\n// ---------------------------------------------------------------------------\n// One order\n// ---------------------------------------------------------------------------\n\nexport type UseCustomerOrderOptions = {\n client?: StorefrontClient | null\n /** The order already read on the server (`null` = the server found none: `not_found`). */\n initial?: Order | null\n /**\n * Re-reads the order every `everyMs` (default 10 s) for at most `forMs` (default 60 s) while `while(order)` is true,\n * e.g. an invoice being generated: `{ while: (o) => ['queued','issuing'].includes(o.invoice?.stage ?? '') }`.\n * Polling is silent: the order stays on screen and `refreshing` flips.\n */\n poll?: { while: (order: Order) => boolean; everyMs?: number; forMs?: number }\n}\n\nexport type UseCustomerOrderResult = {\n status: AccountStatus\n order: Order | null\n error: Error | null\n /** A silent re-read is in flight (retry or poll): keep showing `order`. */\n refreshing: boolean\n reload: () => void\n}\n\n/** One order with its detail (shipments, invoices, payments, refunds, `degraded`). */\nexport function useCustomerOrder(id: string | null | undefined, { client, initial, poll }: UseCustomerOrderOptions = {}): UseCustomerOrderResult {\n const c = useClient(client)\n const given = initial !== undefined\n // Whose order this is: the session and the id. A change of either never shows the previous order meanwhile.\n const owner = `${clientKey(c)}|${id ?? ''}`\n const [state, setState] = useState<{ status: AccountStatus; order: Order | null; error: Error | null; owner: string }>(() => (given ? { status: initial ? 'ready' : 'not_found', order: initial, error: null, owner } : { status: 'loading', order: null, error: null, owner }))\n const [refreshing, setRefreshing] = useState(false)\n const ctlRef = useRef<AbortController | null>(null)\n const initialOwner = useRef(given ? owner : null)\n\n const load = useCallback(\n (silent: boolean) => {\n ctlRef.current?.abort()\n setRefreshing(false)\n if (!c || !id) {\n setState({ status: 'loading', order: null, error: null, owner })\n return\n }\n const ctl = new AbortController()\n ctlRef.current = ctl\n if (silent) setRefreshing(true)\n else setState((s) => (s.owner === owner && s.order ? { ...s, error: null } : { status: 'loading', order: null, error: null, owner }))\n c.customer.order(id, { signal: ctl.signal }).then(\n (o) => {\n if (ctl.signal.aborted) return\n setRefreshing(false)\n setState(o ? { status: 'ready', order: o, error: null, owner } : { status: 'not_found', order: null, error: null, owner })\n },\n (e: unknown) => {\n if (ctl.signal.aborted) return\n setRefreshing(false)\n // A failed silent read keeps the order on screen; only a first load turns into an error.\n setState((s) => (s.owner === owner && s.order ? { ...s, error: asError(e) } : { status: 'error', order: null, error: asError(e), owner }))\n },\n )\n },\n [c, id, owner],\n )\n\n useEffect(() => {\n if (initialOwner.current !== owner) load(false)\n initialOwner.current = null\n return () => ctlRef.current?.abort()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [load, owner])\n\n const mine = state.owner === owner\n const order = mine ? state.order : null\n const keepPolling = !!poll && !!order && poll.while(order)\n const everyMs = poll?.everyMs ?? 10_000\n const forMs = poll?.forMs ?? 60_000\n useEffect(() => {\n if (!keepPolling) return\n const t0 = Date.now()\n const timer = setInterval(() => {\n if (Date.now() - t0 >= forMs) clearInterval(timer)\n else load(true)\n }, everyMs)\n return () => clearInterval(timer)\n }, [keepPolling, everyMs, forMs, load])\n\n const hasOrder = order !== null\n const reload = useCallback(() => load(hasOrder), [load, hasOrder])\n return { status: mine ? state.status : 'loading', order, error: mine ? state.error : null, refreshing: mine && refreshing, reload }\n}\n"]}
1
+ {"version":3,"sources":["../src/account/account-auth.tsx","../src/account/post-purchase-prompt.tsx","../src/account/orders-messages.ts","../src/account/orders-ui.tsx","../src/account/order-lines.tsx","../src/account/progress.tsx","../src/account/order-list.tsx","../src/account/shipment.tsx","../src/account/invoices.tsx","../src/account/pending.tsx","../src/account/payment-method.ts","../src/account/refunds.tsx","../src/account/hooks.ts","../src/account/settings-messages.ts","../src/account/settings-ui.tsx","../src/account/sessions.tsx","../src/account/preferences.tsx"],"names":["errorText","ES","EN","useRef","jsxs","jsx","Fragment","useState","useEffect","deriveProgress","deriveNextAction","isTestShipment","safeTrackingUrl","useId","useCallback"],"mappings":";;;;;;;;;;;;;AAqCA,IAAM,EAAA,GAA0B;AAAA,EAC9B,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,oBAAA;AAAA,IACP,QAAA,EAAU,kBAAA;AAAA,IACV,MAAA,EAAQ,oBAAA;AAAA,IACR,WAAA,EAAa,yBAAA;AAAA,IACb,GAAA,EAAK,sBAAA;AAAA,IACL,MAAA,EAAQ,yBAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,KAAA,EAAO,uBAAA;AAAA,EACP,QAAA,EAAU,eAAA;AAAA,EACV,WAAA,EAAa,qBAAA;AAAA,EACb,YAAA,EAAc,4BAAA;AAAA,EACd,SAAA,EAAW,QAAA;AAAA,EACX,QAAA,EAAU,UAAA;AAAA,EACV,IAAA,EAAM,WAAA;AAAA,EACN,UAAA,EAAY,0DAAA;AAAA,EACZ,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,QAAA;AAAA,IACP,QAAA,EAAU,cAAA;AAAA,IACV,MAAA,EAAQ,WAAA;AAAA,IACR,WAAA,EAAa,uBAAA;AAAA,IACb,GAAA,EAAK,QAAA;AAAA,IACL,MAAA,EAAQ,uBAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,MAAA,EAAQ,oBAAA;AAAA,EACR,UAAA,EAAY,iCAAA;AAAA,EACZ,YAAA,EAAc,kBAAA;AAAA,EACd,SAAA,EAAW,iBAAA;AAAA,EACX,OAAA,EAAS,oCAAA;AAAA,EACT,WAAA,EAAa,mCAAA;AAAA,EACb,gBAAA,EAAkB,oDAAA;AAAA,EAClB,MAAA,EAAQ;AAAA,IACN,mBAAA,EAAqB,4CAAA;AAAA,IACrB,YAAA,EAAc,8CAAA;AAAA,IACd,WAAA,EAAa,0EAAA;AAAA,IACb,YAAA,EAAc,mEAAA;AAAA,IACd,UAAA,EAAY,2CAAA;AAAA,IACZ,WAAA,EAAa,4DAAA;AAAA,IACb,mBAAA,EAAqB,qIAAA;AAAA,IACrB,WAAA,EAAa;AAAA;AAEjB,CAAA;AAEA,IAAM,EAAA,GAA0B;AAAA,EAC9B,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,mBAAA;AAAA,IACV,MAAA,EAAQ,oBAAA;AAAA,IACR,WAAA,EAAa,qBAAA;AAAA,IACb,GAAA,EAAK,iBAAA;AAAA,IACL,MAAA,EAAQ,qBAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,KAAA,EAAO,OAAA;AAAA,EACP,QAAA,EAAU,UAAA;AAAA,EACV,WAAA,EAAa,cAAA;AAAA,EACb,YAAA,EAAc,gCAAA;AAAA,EACd,SAAA,EAAW,YAAA;AAAA,EACX,QAAA,EAAU,WAAA;AAAA,EACV,IAAA,EAAM,MAAA;AAAA,EACN,UAAA,EAAY,kDAAA;AAAA,EACZ,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,QAAA,EAAU,gBAAA;AAAA,IACV,MAAA,EAAQ,SAAA;AAAA,IACR,WAAA,EAAa,mBAAA;AAAA,IACb,GAAA,EAAK,SAAA;AAAA,IACL,MAAA,EAAQ,mBAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,MAAA,EAAQ,aAAA;AAAA,EACR,UAAA,EAAY,uBAAA;AAAA,EACZ,YAAA,EAAc,mBAAA;AAAA,EACd,SAAA,EAAW,2BAAA;AAAA,EACX,OAAA,EAAS,8BAAA;AAAA,EACT,WAAA,EAAa,0BAAA;AAAA,EACb,gBAAA,EAAkB,mDAAA;AAAA,EAClB,MAAA,EAAQ;AAAA,IACN,mBAAA,EAAqB,sCAAA;AAAA,IACrB,YAAA,EAAc,uCAAA;AAAA,IACd,WAAA,EAAa,4EAAA;AAAA,IACb,YAAA,EAAc,sDAAA;AAAA,IACd,UAAA,EAAY,kCAAA;AAAA,IACZ,WAAA,EAAa,wDAAA;AAAA,IACb,mBAAA,EAAqB,0IAAA;AAAA,IACrB,WAAA,EAAa;AAAA;AAEjB,CAAA;AAGO,SAAS,mBAAA,CAAoB,QAAwB,SAAA,EAA0E;AACpI,EAAA,MAAM,IAAA,GAAA,CAAQ,UAAU,OAAA,EAAS,WAAA,GAAc,UAAA,CAAW,IAAI,IAAI,EAAA,GAAK,EAAA;AACvE,EAAA,IAAI,CAAC,WAAW,OAAO,IAAA;AACvB,EAAA,OAAO;AAAA,IACL,GAAG,IAAA;AAAA,IACH,GAAI,SAAA;AAAA,IACJ,QAAQ,EAAE,GAAG,KAAK,MAAA,EAAQ,GAAG,UAAU,MAAA,EAAO;AAAA,IAC9C,QAAQ,EAAE,GAAG,KAAK,MAAA,EAAQ,GAAG,UAAU,MAAA,EAAO;AAAA,IAC9C,QAAQ,EAAE,GAAG,KAAK,MAAA,EAAQ,GAAG,UAAU,MAAA;AAAO,GAChD;AACF;AA0CA,IAAM,SAAA,GAAY,CAAC,IAAA,EAA4B,WAAA,KAC7C,WAAA,KAAgB,IAAA,CAAK,QAAA,GAAW,OAAA,GAAU,IAAA,CAAK,YAAA,CAAa,QAAA,CAAS,OAAO,IAAI,WAAA,GAAc,OAAA,CAAA;AAMzF,SAAS,YAAY,EAAE,YAAA,EAAc,MAAM,IAAA,EAAM,OAAA,GAAU,OAAO,WAAA,EAAa,IAAA,EAAM,UAAU,MAAA,EAAQ,MAAA,EAAQ,QAAQ,QAAA,EAAU,UAAA,EAAY,KAAK,EAAC,EAAG,QAAO,EAAqB;AACvL,EAAA,MAAM,CAAA,GAAI,mBAAA,CAAoB,MAAA,EAAQ,QAAQ,CAAA;AAC9C,EAAA,MAAM,aAAa,YAAA,CAAa,QAAA;AAChC,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,YAAA,CAAa,QAAA,CAAS,OAAO,CAAA;AACxD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,QAAA,CAA0B,MAAM,IAAA,EAAM,IAAA,IAAQ,SAAA,CAAU,YAAA,EAAc,WAAW,CAAC,CAAA;AAC1G,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,IAAI,QAAA,CAAS,IAAA,EAAM,SAAS,EAAE,CAAA;AACpD,EAAA,MAAM,GAAA,GAAM,OAAwB,IAAI,CAAA;AACxC,EAAA,MAAM,YAAA,GAAe,MAAM,KAAA,EAAO,KAAA,GAAQ,CAAC,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,GAAI,IAAA;AAC/D,EAAA,MAAMA,UAAAA,GAAY,MAAM,KAAA,GAAQ,CAAA,CAAE,OAAO,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,GAAI,IAAA;AAC5D,EAAA,MAAM,CAAA,GAAI,cAAA,CAAe,GAAA,EAAK,EAAE,GAAI,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAC,EAAI,YAAA,EAAc,cAAA,EAAgB,MAAM,KAAA,EAAO,KAAA,IAASA,UAAAA,GAAY,EAAE,CAAC,IAAA,CAAK,KAAA,CAAM,KAAK,GAAGA,UAAAA,EAAU,GAAI,IAAA,EAAM,CAAA;AAGzK,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,IAAA,EAAM,IAAA,EAAM,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA;AACjC,IAAA,IAAI,IAAA,EAAM,KAAA,EAAO,QAAA,CAAS,IAAA,CAAK,KAAK,CAAA;AAAA,EACtC,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA;AAET,EAAA,MAAM,EAAA,GAAK,CAAC,EAAA,KAAwB;AAClC,IAAA,CAAA,CAAE,KAAA,EAAM;AACR,IAAA,OAAA,CAAQ,EAAE,CAAA;AAAA,EACZ,CAAA;AACA,EAAA,MAAM,UAAA,GAAa,EAAE,UAAA,EAAY,EAAA,CAAG,KAAA,EAAO,GAAI,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAC,EAAG;AACzE,EAAA,MAAM,UAAA,mBACJ,GAAA,CAAC,aAAA,EAAA,EAAe,GAAG,UAAA,EAAY,IAAA,EAAK,OAAA,EAAQ,IAAA,EAAK,OAAA,EAAQ,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,cAAa,OAAA,EAAQ,SAAA,EAAU,OAAA,EAAQ,KAAA,EAAO,KAAA,EAAO,QAAA,EAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,aAAA,CAAc,KAAK,CAAA,EAAG,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,SAAS,IAAA,EAAM,CAAA;AAEjN,EAAA,MAAM,SAAA,uBACH,aAAA,EAAA,EAAe,GAAG,YAAY,IAAA,EAAK,MAAA,EAAO,OAAO,CAAA,CAAE,IAAA,EAAM,cAAa,eAAA,EAAgB,SAAA,EAAU,WAAU,OAAA,EAAQ,QAAA,EAAS,OAAO,CAAA,CAAE,MAAA,CAAO,QAAQ,IAAA,EAAM,CAAA;AAE5J,EAAA,MAAM,aAAA,GAAgB,CAAC,KAAA,EAAe,YAAA,EAAsB,WAAA,qBAC1D,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACE,GAAG,UAAA;AAAA,MACJ,IAAA,EAAK,UAAA;AAAA,MACL,IAAA,EAAK,UAAA;AAAA,MACL,KAAA;AAAA,MACA,YAAA;AAAA,MACA,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,QAAA,IAAY,IAAA;AAAA,MAC3B,GAAI,WAAA,GAAc,EAAE,SAAA,EAAW,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK,IAAA,EAAM,CAAA,CAAE,YAAA,EAAa,GAAI;AAAC;AAAA,GAChF;AAEF,EAAA,MAAM,OAAO,CAAC,EAAA,EAAqB,yBACjC,GAAA,CAAC,QAAA,EAAA,EAAO,MAAK,QAAA,EAAS,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,wBAAsB,EAAA,EAAI,OAAA,EAAS,MAAM,EAAA,CAAG,EAAE,GACrF,QAAA,EAAA,IAAA,EACH,CAAA;AAGF,EAAA,IAAI,IAAA;AACJ,EAAA,IAAI,KAAA,GAAmB,IAAA;AACvB,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,UAAA;AACH,MAAA,IAAA,mBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,aAAA,EAAA,EAAe,GAAG,UAAA,EAAY,IAAA,EAAK,YAAA,EAAa,KAAA,EAAO,CAAA,CAAE,SAAA,EAAW,YAAA,EAAa,YAAA,EAAa,QAAA,EAAQ,IAAA,EAAC,CAAA;AAAA,wBACxG,GAAA,CAAC,aAAA,EAAA,EAAe,GAAG,UAAA,EAAY,IAAA,EAAK,WAAA,EAAY,KAAA,EAAO,CAAA,CAAE,QAAA,EAAU,YAAA,EAAa,aAAA,EAAc,QAAA,EAAQ,IAAA,EAAC,CAAA;AAAA,QACtG,UAAA;AAAA,QACA,aAAA,CAAc,CAAA,CAAE,QAAA,EAAU,cAAA,EAAgB,IAAI;AAAA,OAAA,EACjD,CAAA;AAEF,MAAA,KAAA,GAAQ,IAAA,CAAK,OAAA,EAAS,CAAA,CAAE,SAAS,CAAA;AACjC,MAAA;AAAA,IACF,KAAK,QAAA;AAAA,IACL,KAAK,KAAA;AACH,MAAA,IAAA,mBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,wBAAA,EAAsB,IAAA,EAC5C,QAAA,EAAA,CAAA,CAAE,UAAA,CAAW,OAAA,CAAQ,SAAA,EAAW,KAAK,CAAA,EACxC,CAAA;AAAA,4BACC,OAAA,EAAA,EAAM,IAAA,EAAK,UAAS,IAAA,EAAK,OAAA,EAAQ,OAAO,KAAA,EAAO,CAAA;AAAA,QAC/C;AAAA,OAAA,EACH,CAAA;AAEF,MAAA,KAAA,mBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,IAAA,KAAS,wBACR,GAAA,CAAC,QAAA,EAAA,EAAO,MAAK,QAAA,EAAS,IAAA,EAAK,UAAS,KAAA,EAAM,aAAA,EAAc,cAAA,EAAc,IAAA,EAAC,WAAW,EAAA,CAAG,IAAA,EAAM,wBAAqB,QAAA,EAC7G,QAAA,EAAA,CAAA,CAAE,QACL,CAAA,GACE,IAAA;AAAA,QACH,IAAA,CAAK,OAAA,EAAS,CAAA,CAAE,WAAW;AAAA,OAAA,EAC9B,CAAA;AAEF,MAAA;AAAA,IACF,KAAK,WAAA;AAAA,IACL,KAAK,QAAA;AACH,MAAA,IAAA,GAAO,UAAA;AACP,MAAA,KAAA,GAAQ,IAAA,CAAK,OAAA,EAAS,CAAA,CAAE,WAAW,CAAA;AACnC,MAAA;AAAA,IACF,KAAK,OAAA;AACH,MAAA,IAAA,mBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,wBAAA,EAAsB,IAAA,EAC5C,QAAA,EAAA,CAAA,CAAE,UAAA,CAAW,OAAA,CAAQ,SAAA,EAAW,KAAK,CAAA,EACxC,CAAA;AAAA,4BACC,OAAA,EAAA,EAAM,IAAA,EAAK,UAAS,IAAA,EAAK,OAAA,EAAQ,OAAO,KAAA,EAAO,CAAA;AAAA,QAC/C,SAAA;AAAA,QACA,aAAA,CAAc,CAAA,CAAE,WAAA,EAAa,cAAA,EAAgB,IAAI;AAAA,OAAA,EACpD,CAAA;AAEF,MAAA,KAAA,GAAQ,IAAA,CAAK,OAAA,EAAS,CAAA,CAAE,WAAW,CAAA;AACnC,MAAA;AAAA,IACF;AACE,MAAA,IAAA,mBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,UAAA;AAAA,QACA,aAAA,CAAc,CAAA,CAAE,QAAA,EAAU,kBAAA,EAAoB,KAAK;AAAA,OAAA,EACtD,CAAA;AAEF,MAAA,KAAA,mBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,KAAA,GAAQ,IAAA,CAAK,QAAA,EAAU,CAAA,CAAE,UAAU,CAAA,GAAI,IAAA;AAAA,QACvC,IAAA,CAAK,UAAA,EAAY,CAAA,CAAE,YAAY,CAAA;AAAA,QAC/B,KAAA,GAAQ,IAAA,CAAK,WAAA,EAAa,CAAA,CAAE,OAAO,CAAA,GAAI;AAAA,OAAA,EAC1C,CAAA;AAAA;AAIN,EAAA,MAAM,SAAS,EAAE,KAAA,EAAO,OAAA,EAAS,QAAA,EAAU,YAAY,MAAA,EAAQ,QAAA,EAAU,WAAA,EAAa,aAAA,EAAe,KAAK,WAAA,EAAa,MAAA,EAAQ,UAAU,KAAA,EAAO,OAAA,GAAU,IAAI,CAAA;AAE9J,EAAA,MAAM,SAAA,GAAY,IAAA,KAAS,OAAA,IAAW,IAAA,KAAS,UAAA,IAAc,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,OAAA,IAAW,IAAA,KAAS,QAAA,GAAW,UAAA,GAAa,KAAA;AACvI,EAAA,MAAM,WAAA,GAAc,CAAC,IAAA,EAAM,KAAA,EAAO,KAAA;AAClC,EAAA,MAAM,KAAA,GAAQ,CAAA,CAAE,MAAA,CAAO,IAAI,CAAA;AAC3B,EAAA,IAAI,CAAC,SAAA,IAAa,CAAC,UAAA,IAAc,CAAC,KAAA,EAAO;AACvC,IAAA,uBACE,GAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,wBAAoB,IAAA,EAAC,sBAAA,EAAqB,aAAA,EACrE,QAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,MAAA,EAAQ,IAAA,EAAK,QAAA,EAC3B,QAAA,EAAA,YAAA,CAAa,kBAAA,KAAuB,eAAA,GAAkB,EAAE,MAAA,CAAO,mBAAA,GAAsB,CAAA,CAAE,gBAAA,EAC1F,CAAA,EACF,CAAA;AAAA,EAEJ;AACA,EAAA,uBACE,IAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,wBAAoB,IAAA,EAAC,sBAAA,EAAsB,IAAA,EAAM,iBAAA,EAAgB,kBAAA,EAC3F,QAAA,EAAA;AAAA,IAAA,MAAA;AAAA,wBACA,IAAA,EAAA,EAAG,EAAA,EAAG,oBAAmB,SAAA,EAAW,EAAA,CAAG,OACrC,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,yBACC,OAAA,EAAA,EAAQ,GAAA,EAAmB,MAAA,EAAO,MAAA,EAAQ,GAAI,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAC,EAAI,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,wBAAoB,IAAA,EAChH,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,CAAA,CAAE,OAAA,EAAS,QAAA,EAAU,CAAA,CAAE,UAAA,EAAa,GAAI,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAC,EAAI,CAAA;AAAA,MACvFA,UAAAA,IAAa,WAAA,mBACZ,GAAA,CAAC,GAAA,EAAA,EAAE,MAAK,OAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,yBAAuB,IAAA,CAAM,KAAA,CAAO,IAAA,EACtE,QAAA,EAAAA,YACH,CAAA,GACE,IAAA;AAAA,MACH,IAAA,uBAAQ,OAAA,EAAA,EAAM,IAAA,EAAK,UAAS,IAAA,EAAK,MAAA,EAAO,KAAA,EAAO,IAAA,EAAM,CAAA,GAAK,IAAA;AAAA,MAC1D,IAAA;AAAA,sBACD,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,OAAA,EACjB,8BAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,IAAA,EAAK,QAAA,EAAS,KAAA,EAAO,QAAQ,QAAA,EAAU,OAAA,EAAS,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,wBAAA,EAAsB,MAC/G,QAAA,EAAA,CAAA,CAAE,MAAA,CAAO,IAAI,CAAA,EAChB,CAAA,EACF,CAAA;AAAA,0BACC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,KAAA,EAAO,uBAAA,EAAqB,MAC5C,QAAA,EAAA,KAAA,EACH;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AChTA,IAAMC,GAAAA,GAAwC;AAAA,EAC5C,KAAA,EAAO,sCAAA;AAAA,EACP,OAAA,EAAS,kKAAA;AAAA,EACT,YAAA,EAAc,sEAAA;AAAA,EACd,UAAA,EAAY,qBAAA;AAAA,EACZ,QAAA,EAAU,eAAA;AAAA,EACV,YAAA,EAAc,4BAAA;AAAA,EACd,IAAA,EAAM,WAAA;AAAA,EACN,UAAA,EAAY,0DAAA;AAAA,EACZ,MAAA,EAAQ,cAAA;AAAA,EACR,SAAA,EAAW,uBAAA;AAAA,EACX,UAAA,EAAY,WAAA;AAAA,EACZ,QAAA,EAAU,4EAAA;AAAA,EACV,SAAA,EAAW,iBAAA;AAAA,EACX,MAAA,EAAQ;AAAA,IACN,mBAAA,EAAqB,4CAAA;AAAA,IACrB,YAAA,EAAc,8CAAA;AAAA,IACd,WAAA,EAAa,iEAAA;AAAA,IACb,YAAA,EAAc,mEAAA;AAAA,IACd,UAAA,EAAY,2CAAA;AAAA,IACZ,WAAA,EAAa,iDAAA;AAAA,IACb,mBAAA,EAAqB,sGAAA;AAAA,IACrB,WAAA,EAAa;AAAA;AAEjB,CAAA;AAEA,IAAMC,GAAAA,GAAwC;AAAA,EAC5C,KAAA,EAAO,0CAAA;AAAA,EACP,OAAA,EAAS,qJAAA;AAAA,EACT,YAAA,EAAc,oDAAA;AAAA,EACd,UAAA,EAAY,qBAAA;AAAA,EACZ,QAAA,EAAU,UAAA;AAAA,EACV,YAAA,EAAc,gCAAA;AAAA,EACd,IAAA,EAAM,MAAA;AAAA,EACN,UAAA,EAAY,kDAAA;AAAA,EACZ,MAAA,EAAQ,gBAAA;AAAA,EACR,SAAA,EAAW,iBAAA;AAAA,EACX,UAAA,EAAY,SAAA;AAAA,EACZ,QAAA,EAAU,kFAAA;AAAA,EACV,SAAA,EAAW,2BAAA;AAAA,EACX,MAAA,EAAQ;AAAA,IACN,mBAAA,EAAqB,sCAAA;AAAA,IACrB,YAAA,EAAc,uCAAA;AAAA,IACd,WAAA,EAAa,uEAAA;AAAA,IACb,YAAA,EAAc,sDAAA;AAAA,IACd,UAAA,EAAY,kCAAA;AAAA,IACZ,WAAA,EAAa,wDAAA;AAAA,IACb,mBAAA,EAAqB,gGAAA;AAAA,IACrB,WAAA,EAAa;AAAA;AAEjB,CAAA;AAKO,SAAS,iCAAA,CAAkC,QAAwB,SAAA,EAAsG;AAC9K,EAAA,MAAM,IAAA,GAAA,CAAQ,UAAU,OAAA,EAAS,WAAA,GAAc,UAAA,CAAW,IAAI,IAAIA,GAAAA,GAAKD,GAAAA;AACvE,EAAA,IAAI,CAAC,WAAW,OAAO,IAAA;AACvB,EAAA,OAAO,EAAE,GAAG,IAAA,EAAM,GAAI,SAAA,EAA0D,MAAA,EAAQ,EAAE,GAAG,IAAA,CAAK,MAAA,EAAQ,GAAG,SAAA,CAAU,QAAO,EAAE;AAClI;AAgCA,IAAM,UAAA,GAAa,CAAC,CAAA,KAA8C,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,CAAE,MAAA,IAAU,GAAA,IAAO,4BAAA,CAA6B,IAAA,CAAK,CAAA,CAAE,MAAM,CAAA;AAKjJ,SAAS,yBAAA,CAA0B;AAAA,EACxC,KAAA;AAAA,EACA,YAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,MAAM,OAAA,GAAU,MAAA;AAAA,EAChB,MAAA;AAAA,EACA,YAAA,GAAe,CAAA;AAAA,EACf,SAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA,EAAY,KAAK,EAAC;AAAA,EAClB;AACF,CAAA,EAAmC;AACjC,EAAA,MAAM,CAAA,GAAI,iCAAA,CAAkC,MAAA,EAAQ,QAAQ,CAAA;AAC5D,EAAA,MAAM,GAAA,GAAME,OAAwB,IAAI,CAAA;AACxC,EAAA,MAAM,aAAa,YAAA,CAAa,QAAA;AAChC,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,YAAA,CAAa,QAAA,CAAS,OAAO,CAAA;AACxD,EAAA,MAAMH,UAAAA,GAAY,MAAM,KAAA,GAAQ,CAAA,CAAE,OAAO,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,GAAI,IAAA;AAC5D,EAAA,MAAM,IAAI,cAAA,CAAe,GAAA,EAAK,EAAE,GAAI,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAC,EAAI,cAAc,IAAA,EAAM,KAAA,EAAO,UAAU,MAAA,IAAU,IAAA,EAAM,OAAO,KAAA,KAAU,UAAA,GAAa,CAAC,IAAA,CAAK,MAAM,KAAK,CAAA,GAAI,MAAM,cAAA,EAAgB,IAAA,EAAM,OAAO,KAAA,IAASA,UAAAA,GAAY,EAAE,CAAC,KAAK,KAAA,CAAM,KAAK,GAAGA,UAAAA,EAAU,GAAI,MAAM,CAAA;AACzQ,EAAA,IAAI,CAAC,WAAW,KAAK,CAAA,IAAM,CAAC,UAAA,IAAc,CAAC,OAAQ,OAAO,IAAA;AAE1D,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,IAAA,EAAK,CAAE,WAAA,EAAY;AACzC,EAAA,MAAM,IAAA,GAAO,MAAM,IAAA,KAAS,QAAA,IAAY,MAAM,IAAA,KAAS,KAAA,GAAQ,KAAK,IAAA,GAAO,IAAA;AAC3E,EAAA,MAAM,IAAA,GAAO,IAAA,KAAS,UAAA,GAAa,UAAA,GAAa,aAAA,CAAA;AAChD,EAAA,MAAM,MAAA,GAAS,SAAS,QAAA,GAAW,QAAA,GAAW,SAAS,KAAA,GAAQ,WAAA,GAAc,aAAa,UAAA,GAAa,aAAA;AACvG,EAAA,MAAM,KAAA,GAAQ,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,KAAA,GAAQ,CAAA,CAAE,UAAA,GAAa,IAAA,KAAS,aAAA,GAAgB,CAAA,CAAE,SAAA,GAAY,CAAA,CAAE,MAAA;AAC5G,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,MAAM,UAAA,GAAa,EAAE,UAAA,EAAY,EAAA,CAAG,KAAA,EAAO,GAAI,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAC,EAAG;AAEzE,EAAA,MAAM,SAAA,GAAYA,cAAa,EAAE,IAAA,EAAM,OAAO,KAAA,KAAU,MAAA,IAAU,IAAA,EAAM,KAAA,EAAO,KAAA,KAAU,UAAA,CAAA;AAEzF,EAAA,MAAM,OAAA,GAAA,CAAW,aAAa,kBAAA,GAAqB,CAAA,CAAE,UAAU,CAAA,CAAE,YAAA,EAAc,OAAA,CAAQ,SAAA,EAAW,OAAO,CAAA;AAEzG,EAAA,uBACEI,IAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,aAAA,EAAW,IAAA,EAAC,kBAAA,EAAkB,IAAA,EAAM,iBAAA,EAAgB,cAAA,EAC/E,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,WAAQ,EAAA,EAAG,cAAA,EAAe,WAAW,EAAA,CAAG,KAAA,EACtC,YAAE,KAAA,EACL,CAAA;AAAA,oBACAA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,IAAA,EAAM,qBAAA,EAAmB,MACvC,QAAA,EAAA,OAAA,EACH,CAAA;AAAA,oBACAD,IAAAA,CAAC,OAAA,EAAA,EAAQ,GAAA,EAAmB,MAAA,EAAO,QAAQ,GAAI,MAAA,GAAS,EAAE,MAAA,KAAW,EAAC,EAAI,WAAW,EAAA,CAAG,IAAA,EAAM,oBAAgB,IAAA,EAC5G,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,CAAA,CAAE,SAAS,QAAA,EAAU,CAAA,CAAE,UAAA,EAAa,GAAI,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAC,EAAI,CAAA;AAAA,MACvF,SAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,MAAK,OAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,qBAAmB,IAAA,CAAM,KAAA,CAAO,IAAA,EAClE,QAAA,EAAAL,YACH,CAAA,GACE,IAAA;AAAA,sBACJK,IAAC,OAAA,EAAA,EAAM,IAAA,EAAK,UAAS,IAAA,EAAK,OAAA,EAAQ,OAAO,OAAA,EAAS,CAAA;AAAA,MACjD,IAAA,mBAAOA,GAAAA,CAAC,OAAA,EAAA,EAAM,IAAA,EAAK,UAAS,IAAA,EAAK,MAAA,EAAO,KAAA,EAAO,IAAA,EAAM,CAAA,GAAK,IAAA;AAAA,sBAC3DA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,mBAAA,EAAiB,IAAA,EACtC,QAAA,EAAA,CAAA,CAAE,UAAA,CAAW,OAAA,CAAQ,SAAA,EAAW,OAAO,CAAA,EAC1C,CAAA;AAAA,MACC,IAAA,mBACCD,IAAAA,CAAAE,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,QAAQ,IAAA,EAAK,QAAA,EAAS,oBAAA,EAAkB,IAAA,EACtD,QAAA,EAAA,CAAA,CAAE,UAAA,CAAW,OAAA,CAAQ,SAAA,EAAW,OAAO,CAAA,EAC1C,CAAA;AAAA,wBACAA,IAAC,aAAA,EAAA,EAAe,GAAG,YAAY,IAAA,EAAK,MAAA,EAAO,OAAO,CAAA,CAAE,IAAA,EAAM,cAAa,eAAA,EAAgB,SAAA,EAAU,WAAU,OAAA,EAAQ,QAAA,EAAS,OAAO,CAAA,CAAE,MAAA,CAAO,QAAQ,IAAA,EAAM;AAAA,OAAA,EAC5J,CAAA,GACE,UAAA,mBACFA,GAAAA,CAAC,aAAA,EAAA,EAAe,GAAG,UAAA,EAAY,IAAA,EAAK,UAAA,EAAW,IAAA,EAAK,UAAA,EAAW,KAAA,EAAO,CAAA,CAAE,QAAA,EAAU,YAAA,EAAa,cAAA,EAAe,SAAA,EAAW,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK,IAAA,EAAM,CAAA,CAAE,YAAA,EAAc,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,QAAA,IAAY,IAAA,EAAM,CAAA,GACnM,IAAA;AAAA,sBACJA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,OAAA,EACjB,QAAA,kBAAAA,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,MAAK,QAAA,EAAS,KAAA,EAAO,MAAA,EAAQ,QAAA,EAAU,OAAA,EAAS,SAAA,EAAW,GAAG,MAAA,EAAQ,oBAAA,EAAkB,IAAA,EAC3G,QAAA,EAAA,KAAA,EACH,CAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBACAD,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,IAAA,EAAM,oBAAgB,IAAA,EACpC,QAAA,EAAA;AAAA,MAAA,CAAA,CAAE,QAAA;AAAA,MACF,SAAA,mBACCA,IAAAA,CAAAE,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,QAAA,GAAA;AAAA,wBACDD,GAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAM,SAAA,EAAW,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,mBAAA,EAAiB,IAAA,EACtD,QAAA,EAAA,CAAA,CAAE,SAAA,EACL;AAAA,OAAA,EACF,CAAA,GACE;AAAA,KAAA,EACN,CAAA;AAAA,IACC;AAAA,GAAA,EACH,CAAA;AAEJ;;;ACnNA,IAAMJ,GAAAA,GAAK;AAAA;AAAA,EAET,cAAA,EAAgB,iBAAA;AAAA,EAChB,cAAA,EAAgB,qBAAA;AAAA,EAChB,aAAA,EAAe,OAAA;AAAA,EACf,YAAA,EAAc,YAAA;AAAA,EACd,iBAAA,EAAmB,qBAAA;AAAA,EACnB,mBAAA,EAAqB,sBAAA;AAAA,EACrB,aAAA,EAAe,yBAAA;AAAA,EACf,qBAAA,EAAuB,cAAA;AAAA,EACvB,iBAAA,EAAmB,aAAA;AAAA,EACnB,wBAAA,EAA0B,wBAAA;AAAA,EAC1B,oBAAA,EAAsB,cAAA;AAAA,EACtB,cAAA,EAAgB,6BAAA;AAAA,EAChB,iBAAA,EAAmB,aAAA;AAAA,EACnB,eAAA,EAAiB,sBAAA;AAAA,EACjB,gBAAA,EAAkB,oBAAA;AAAA,EAClB,mBAAA,EAAqB,gBAAA;AAAA,EACrB,aAAA,EAAe,8DAAA;AAAA,EACf,aAAA,EAAe,YAAA;AAAA,EACf,kBAAA,EAAoB,0BAAA;AAAA,EACpB,iBAAA,EAAmB,0EAAA;AAAA,EACnB,kBAAA,EAAoB,+EAAA;AAAA;AAAA,EAEpB,uBAAA,EAAyB,gBAAA;AAAA,EACzB,YAAA,EAAc,QAAA;AAAA,EACd,iBAAA,EAAmB,mBAAA;AAAA,EACnB,wBAAA,EAA0B,oBAAA;AAAA,EAC1B,eAAA,EAAiB,SAAA;AAAA,EACjB,kBAAA,EAAoB,WAAA;AAAA,EACpB,wBAAA,EAA0B,YAAA;AAAA,EAC1B,iBAAA,EAAmB,WAAA;AAAA,EACnB,iBAAA,EAAmB,WAAA;AAAA,EACnB,gBAAA,EAAkB,aAAA;AAAA,EAClB,eAAA,EAAiB,YAAA;AAAA;AAAA,EAEjB,gBAAA,EAAkB,qBAAA;AAAA,EAClB,WAAA,EAAa,QAAA;AAAA,EACb,gBAAA,EAAkB,mBAAA;AAAA,EAClB,cAAA,EAAgB,SAAA;AAAA,EAChB,iBAAA,EAAmB,WAAA;AAAA,EACnB,uBAAA,EAAyB,oBAAA;AAAA,EACzB,gBAAA,EAAkB,WAAA;AAAA,EAClB,cAAA,EAAgB,gBAAA;AAAA,EAChB,gBAAA,EAAkB,YAAA;AAAA,EAClB,mBAAA,EAAqB,aAAA;AAAA,EACrB,mBAAA,EAAqB,WAAA;AAAA,EACrB,mBAAA,EAAqB,gBAAA;AAAA,EACrB,4BAAA,EAA8B,0EAAA;AAAA,EAC9B,kBAAA,EAAoB,qFAAA;AAAA,EACpB,cAAA,EAAgB,4DAAA;AAAA,EAChB,wBAAA,EAA0B,wDAAA;AAAA,EAC1B,iBAAA,EAAmB,uDAAA;AAAA,EACnB,oBAAA,EAAsB,4BAAA;AAAA,EACtB,mBAAA,EAAqB,8BAAA;AAAA;AAAA,EAErB,YAAA,EAAc,aAAA;AAAA,EACd,cAAA,EAAgB,mBAAA;AAAA,EAChB,eAAA,EAAiB,qBAAA;AAAA,EACjB,yBAAA,EAA2B,mBAAA;AAAA,EAC3B,wBAAA,EAA0B,mBAAA;AAAA,EAC1B,6BAAA,EAA+B,kCAAA;AAAA,EAC/B,sBAAA,EAAwB,uBAAA;AAAA,EACxB,gBAAA,EAAkB,aAAA;AAAA,EAClB,eAAA,EAAiB,mCAAA;AAAA,EACjB,cAAA,EAAgB,2BAAA;AAAA;AAAA,EAEhB,gBAAA,EAAkB,UAAA;AAAA,EAClB,iBAAA,EAAmB,eAAA;AAAA,EACnB,kBAAA,EAAoB,eAAA;AAAA,EACpB,kBAAA,EAAoB,UAAA;AAAA,EACpB,iBAAA,EAAmB,sBAAA;AAAA,EACnB,eAAA,EAAiB,QAAA;AAAA,EACjB,iBAAA,EAAmB,SAAA;AAAA,EACnB,qBAAA,EAAuB,yCAAA;AAAA,EACvB,gBAAA,EAAkB,wBAAA;AAAA,EAClB,uBAAA,EAAyB,mBAAA;AAAA,EACzB,mBAAA,EAAqB,iCAAA;AAAA,EACrB,oBAAA,EAAsB,qBAAA;AAAA,EACtB,kBAAA,EAAoB,mBAAA;AAAA,EACpB,iBAAA,EAAmB,aAAA;AAAA,EACnB,mBAAA,EAAqB,yEAAA;AAAA,EACrB,kBAAA,EAAoB,oBAAA;AAAA,EACpB,mBAAA,EAAqB,WAAA;AAAA,EACrB,sBAAA,EAAwB,0BAAA;AAAA,EACxB,eAAA,EAAiB,WAAA;AAAA,EACjB,mBAAA,EAAqB,6CAAA;AAAA,EACrB,oBAAA,EAAsB,wBAAA;AAAA,EACtB,yBAAA,EAA2B,qBAAA;AAAA,EAC3B,+BAAA,EAAiC,kBAAA;AAAA,EACjC,4BAAA,EAA8B,WAAA;AAAA,EAC9B,kCAAA,EAAoC,YAAA;AAAA,EACpC,2BAAA,EAA6B,WAAA;AAAA,EAC7B,2BAAA,EAA6B,0BAAA;AAAA,EAC7B,0BAAA,EAA4B,sBAAA;AAAA,EAC5B,sBAAA,EAAwB,YAAA;AAAA,EACxB,2BAAA,EAA6B,WAAA;AAAA,EAC7B,yBAAA,EAA2B,YAAA;AAAA,EAC3B,oBAAA,EAAsB,YAAA;AAAA;AAAA,EAEtB,eAAA,EAAiB,UAAA;AAAA,EACjB,iBAAA,EAAmB,SAAA;AAAA,EACnB,oBAAA,EAAsB,oBAAA;AAAA,EACtB,sBAAA,EAAwB,4BAAA;AAAA,EACxB,eAAA,EAAiB,cAAA;AAAA,EACjB,gBAAA,EAAkB,eAAA;AAAA,EAClB,gBAAA,EAAkB,mBAAA;AAAA,EAClB,eAAA,EAAiB,OAAA;AAAA,EACjB,aAAA,EAAe,eAAA;AAAA,EACf,aAAA,EAAe,eAAA;AAAA,EACf,oBAAA,EAAsB,yBAAA;AAAA,EACtB,cAAA,EAAgB,wCAAA;AAAA,EAChB,cAAA,EAAgB,gCAAA;AAAA,EAChB,uBAAA,EAAyB,SAAA;AAAA,EACzB,wBAAA,EAA0B,YAAA;AAAA,EAC1B,0BAAA,EAA4B,WAAA;AAAA,EAC5B,sBAAA,EAAwB,mBAAA;AAAA,EACxB,wBAAA,EAA0B,YAAA;AAAA,EAC1B,4BAAA,EAA8B,2DAAA;AAAA,EAC9B,0BAAA,EAA4B,uCAAA;AAAA,EAC5B,8BAAA,EAAgC,mDAAA;AAAA;AAAA,EAEhC,eAAA,EAAiB,oBAAA;AAAA,EACjB,eAAA,EAAiB,0FAAA;AAAA,EACjB,iBAAA,EAAmB,gBAAA;AAAA,EACnB,iBAAA,EAAmB,SAAA;AAAA,EACnB,mBAAA,EAAqB,YAAA;AAAA,EACrB,eAAA,EAAiB,OAAA;AAAA,EACjB,iBAAA,EAAmB,iBAAA;AAAA,EACnB,mBAAA,EAAqB,qBAAA;AAAA,EACrB,eAAA,EAAiB,OAAA;AAAA,EACjB,uBAAA,EAAyB,mBAAA;AAAA,EACzB,mBAAA,EAAqB,cAAA;AAAA,EACrB,gBAAA,EAAkB,SAAA;AAAA,EAClB,oBAAA,EAAsB,yCAAA;AAAA,EACtB,eAAA,EAAiB,sBAAA;AAAA,EACjB,kBAAA,EAAoB,iBAAA;AAAA,EACpB,qBAAA,EAAuB,wDAAA;AAAA,EACvB,iBAAA,EAAmB,4BAAA;AAAA,EACnB,qBAAA,EAAuB,MAAA;AAAA,EACvB,qBAAA,EAAuB,oBAAA;AAAA,EACvB,8BAAA,EAAgC,wBAAA;AAAA,EAChC,6BAAA,EAA+B,sBAAA;AAAA,EAC/B,qBAAA,EAAuB,kBAAA;AAAA,EACvB,wBAAA,EAA0B,kBAAA;AAAA;AAAA,EAE1B,cAAA,EAAgB,YAAA;AAAA,EAChB,yBAAA,EAA2B,YAAA;AAAA,EAC3B,0BAAA,EAA4B,YAAA;AAAA,EAC5B,yBAAA,EAA2B,YAAA;AAAA,EAC3B,sBAAA,EAAwB,sBAAA;AAAA,EACxB,uBAAA,EAAyB,YAAA;AAAA,EACzB,kBAAA,EAAoB,sBAAA;AAAA,EACpB,kBAAA,EAAoB,sBAAA;AAAA,EACpB,aAAA,EAAe,kCAAA;AAAA,EACf,eAAA,EAAiB,OAAA;AAAA,EACjB,qBAAA,EAAuB,QAAA;AAAA,EACvB,wBAAA,EAA0B,WAAA;AAAA,EAC1B,uBAAA,EAAyB,SAAA;AAAA,EACzB,yBAAA,EAA2B,aAAA;AAAA,EAC3B,mCAAA,EAAqC,0BAAA;AAAA,EACrC,wBAAA,EAA0B,YAAA;AAAA,EAC1B,gBAAA,EAAkB,kBAAA;AAAA,EAClB,qBAAA,EAAuB,SAAA;AAAA,EACvB,4BAAA,EAA8B,uBAAA;AAAA,EAC9B,2BAAA,EAA6B,sBAAA;AAAA,EAC7B,6BAAA,EAA+B,mDAAA;AAAA,EAC/B,qBAAA,EAAuB,kBAAA;AAAA,EACvB,qBAAA,EAAuB,oBAAA;AAAA,EACvB,yBAAA,EAA2B,wBAAA;AAAA,EAC3B,6BAAA,EAA+B,sBAAA;AAAA,EAC/B,uBAAA,EAAyB,mBAAA;AAAA,EACzB,qBAAA,EAAuB,UAAA;AAAA,EACvB,sBAAA,EAAwB,oBAAA;AAAA,EACxB,wBAAA,EAA0B,eAAA;AAAA;AAAA,EAE1B,eAAA,EAAiB,oCAAA;AAAA,EACjB,eAAA,EAAiB,YAAA;AAAA,EACjB,iBAAA,EAAmB;AACrB,CAAA;AAKA,IAAMC,GAAAA,GAAsB;AAAA,EAC1B,cAAA,EAAgB,gBAAA;AAAA,EAChB,cAAA,EAAgB,kBAAA;AAAA,EAChB,aAAA,EAAe,OAAA;AAAA,EACf,YAAA,EAAc,YAAA;AAAA,EACd,iBAAA,EAAmB,cAAA;AAAA,EACnB,mBAAA,EAAqB,eAAA;AAAA,EACrB,aAAA,EAAe,qBAAA;AAAA,EACf,qBAAA,EAAuB,cAAA;AAAA,EACvB,iBAAA,EAAmB,cAAA;AAAA,EACnB,wBAAA,EAA0B,qBAAA;AAAA,EAC1B,oBAAA,EAAsB,cAAA;AAAA,EACtB,cAAA,EAAgB,6BAAA;AAAA,EAChB,iBAAA,EAAmB,aAAA;AAAA,EACnB,eAAA,EAAiB,qBAAA;AAAA,EACjB,gBAAA,EAAkB,kBAAA;AAAA,EAClB,mBAAA,EAAqB,eAAA;AAAA,EACrB,aAAA,EAAe,yDAAA;AAAA,EACf,aAAA,EAAe,WAAA;AAAA,EACf,kBAAA,EAAoB,wBAAA;AAAA,EACpB,iBAAA,EAAmB,wEAAA;AAAA,EACnB,kBAAA,EAAoB,oEAAA;AAAA,EACpB,uBAAA,EAAyB,qBAAA;AAAA,EACzB,YAAA,EAAc,MAAA;AAAA,EACd,iBAAA,EAAmB,gBAAA;AAAA,EACnB,wBAAA,EAA0B,kBAAA;AAAA,EAC1B,eAAA,EAAiB,SAAA;AAAA,EACjB,kBAAA,EAAoB,YAAA;AAAA,EACpB,wBAAA,EAA0B,kBAAA;AAAA,EAC1B,iBAAA,EAAmB,WAAA;AAAA,EACnB,iBAAA,EAAmB,WAAA;AAAA,EACnB,gBAAA,EAAkB,UAAA;AAAA,EAClB,eAAA,EAAiB,aAAA;AAAA,EACjB,gBAAA,EAAkB,gBAAA;AAAA,EAClB,WAAA,EAAa,MAAA;AAAA,EACb,gBAAA,EAAkB,gBAAA;AAAA,EAClB,cAAA,EAAgB,SAAA;AAAA,EAChB,iBAAA,EAAmB,YAAA;AAAA,EACnB,uBAAA,EAAyB,kBAAA;AAAA,EACzB,gBAAA,EAAkB,WAAA;AAAA,EAClB,cAAA,EAAgB,WAAA;AAAA,EAChB,gBAAA,EAAkB,WAAA;AAAA,EAClB,mBAAA,EAAqB,cAAA;AAAA,EACrB,mBAAA,EAAqB,SAAA;AAAA,EACrB,mBAAA,EAAqB,eAAA;AAAA,EACrB,4BAAA,EAA8B,iFAAA;AAAA,EAC9B,kBAAA,EAAoB,2EAAA;AAAA,EACpB,cAAA,EAAgB,qEAAA;AAAA,EAChB,wBAAA,EAA0B,oDAAA;AAAA,EAC1B,iBAAA,EAAmB,8CAAA;AAAA,EACnB,oBAAA,EAAsB,2BAAA;AAAA,EACtB,mBAAA,EAAqB,0BAAA;AAAA,EACrB,YAAA,EAAc,SAAA;AAAA,EACd,cAAA,EAAgB,gBAAA;AAAA,EAChB,eAAA,EAAiB,kBAAA;AAAA,EACjB,yBAAA,EAA2B,kBAAA;AAAA,EAC3B,wBAAA,EAA0B,iBAAA;AAAA,EAC1B,6BAAA,EAA+B,qBAAA;AAAA,EAC/B,sBAAA,EAAwB,mBAAA;AAAA,EACxB,gBAAA,EAAkB,cAAA;AAAA,EAClB,eAAA,EAAiB,sBAAA;AAAA,EACjB,cAAA,EAAgB,wBAAA;AAAA,EAChB,gBAAA,EAAkB,UAAA;AAAA,EAClB,iBAAA,EAAmB,QAAA;AAAA,EACnB,kBAAA,EAAoB,SAAA;AAAA,EACpB,kBAAA,EAAoB,SAAA;AAAA,EACpB,iBAAA,EAAmB,iBAAA;AAAA,EACnB,eAAA,EAAiB,MAAA;AAAA,EACjB,iBAAA,EAAmB,QAAA;AAAA,EACnB,qBAAA,EAAuB,qCAAA;AAAA,EACvB,gBAAA,EAAkB,sBAAA;AAAA,EAClB,uBAAA,EAAyB,gBAAA;AAAA,EACzB,mBAAA,EAAqB,mBAAA;AAAA,EACrB,oBAAA,EAAsB,qBAAA;AAAA,EACtB,kBAAA,EAAoB,mBAAA;AAAA,EACpB,iBAAA,EAAmB,SAAA;AAAA,EACnB,mBAAA,EAAqB,2EAAA;AAAA,EACrB,kBAAA,EAAoB,oBAAA;AAAA,EACpB,mBAAA,EAAqB,WAAA;AAAA,EACrB,sBAAA,EAAwB,cAAA;AAAA,EACxB,eAAA,EAAiB,MAAA;AAAA,EACjB,mBAAA,EAAqB,2CAAA;AAAA,EACrB,oBAAA,EAAsB,yBAAA;AAAA,EACtB,yBAAA,EAA2B,oBAAA;AAAA,EAC3B,+BAAA,EAAiC,eAAA;AAAA,EACjC,4BAAA,EAA8B,YAAA;AAAA,EAC9B,kCAAA,EAAoC,kBAAA;AAAA,EACpC,2BAAA,EAA6B,WAAA;AAAA,EAC7B,2BAAA,EAA6B,kBAAA;AAAA,EAC7B,0BAAA,EAA4B,uBAAA;AAAA,EAC5B,sBAAA,EAAwB,MAAA;AAAA,EACxB,2BAAA,EAA6B,WAAA;AAAA,EAC7B,yBAAA,EAA2B,aAAA;AAAA,EAC3B,oBAAA,EAAsB,YAAA;AAAA,EACtB,eAAA,EAAiB,UAAA;AAAA,EACjB,iBAAA,EAAmB,SAAA;AAAA,EACnB,oBAAA,EAAsB,aAAA;AAAA,EACtB,sBAAA,EAAwB,0BAAA;AAAA,EACxB,eAAA,EAAiB,WAAA;AAAA,EACjB,gBAAA,EAAkB,mBAAA;AAAA,EAClB,gBAAA,EAAkB,kBAAA;AAAA,EAClB,eAAA,EAAiB,OAAA;AAAA,EACjB,aAAA,EAAe,cAAA;AAAA,EACf,aAAA,EAAe,cAAA;AAAA,EACf,oBAAA,EAAsB,yBAAA;AAAA,EACtB,cAAA,EAAgB,2CAAA;AAAA,EAChB,cAAA,EAAgB,yBAAA;AAAA,EAChB,uBAAA,EAAyB,QAAA;AAAA,EACzB,wBAAA,EAA0B,aAAA;AAAA,EAC1B,0BAAA,EAA4B,WAAA;AAAA,EAC5B,sBAAA,EAAwB,qBAAA;AAAA,EACxB,wBAAA,EAA0B,aAAA;AAAA,EAC1B,4BAAA,EAA8B,8DAAA;AAAA,EAC9B,0BAAA,EAA4B,kCAAA;AAAA,EAC5B,8BAAA,EAAgC,oDAAA;AAAA,EAChC,eAAA,EAAiB,qBAAA;AAAA,EACjB,eAAA,EAAiB,kGAAA;AAAA,EACjB,iBAAA,EAAmB,qBAAA;AAAA,EACnB,iBAAA,EAAmB,SAAA;AAAA,EACnB,mBAAA,EAAqB,WAAA;AAAA,EACrB,eAAA,EAAiB,OAAA;AAAA,EACjB,iBAAA,EAAmB,mBAAA;AAAA,EACnB,mBAAA,EAAqB,mBAAA;AAAA,EACrB,eAAA,EAAiB,OAAA;AAAA,EACjB,uBAAA,EAAyB,gBAAA;AAAA,EACzB,mBAAA,EAAqB,YAAA;AAAA,EACrB,gBAAA,EAAkB,QAAA;AAAA,EAClB,oBAAA,EAAsB,qCAAA;AAAA,EACtB,eAAA,EAAiB,wBAAA;AAAA,EACjB,kBAAA,EAAoB,kBAAA;AAAA,EACpB,qBAAA,EAAuB,0DAAA;AAAA,EACvB,iBAAA,EAAmB,gBAAA;AAAA,EACnB,qBAAA,EAAuB,MAAA;AAAA,EACvB,qBAAA,EAAuB,eAAA;AAAA,EACvB,8BAAA,EAAgC,eAAA;AAAA,EAChC,6BAAA,EAA+B,cAAA;AAAA,EAC/B,qBAAA,EAAuB,cAAA;AAAA,EACvB,wBAAA,EAA0B,cAAA;AAAA,EAC1B,cAAA,EAAgB,SAAA;AAAA,EAChB,yBAAA,EAA2B,WAAA;AAAA,EAC3B,0BAAA,EAA4B,aAAA;AAAA,EAC5B,yBAAA,EAA2B,WAAA;AAAA,EAC3B,sBAAA,EAAwB,wBAAA;AAAA,EACxB,uBAAA,EAAyB,aAAA;AAAA,EACzB,kBAAA,EAAoB,qBAAA;AAAA,EACpB,kBAAA,EAAoB,qBAAA;AAAA,EACpB,aAAA,EAAe,4BAAA;AAAA,EACf,eAAA,EAAiB,UAAA;AAAA,EACjB,qBAAA,EAAuB,MAAA;AAAA,EACvB,wBAAA,EAA0B,SAAA;AAAA,EAC1B,uBAAA,EAAyB,QAAA;AAAA,EACzB,yBAAA,EAA2B,UAAA;AAAA,EAC3B,mCAAA,EAAqC,oBAAA;AAAA,EACrC,wBAAA,EAA0B,aAAA;AAAA,EAC1B,gBAAA,EAAkB,gBAAA;AAAA,EAClB,qBAAA,EAAuB,MAAA;AAAA,EACvB,4BAAA,EAA8B,aAAA;AAAA,EAC9B,2BAAA,EAA6B,YAAA;AAAA,EAC7B,6BAAA,EAA+B,+CAAA;AAAA,EAC/B,qBAAA,EAAuB,cAAA;AAAA,EACvB,qBAAA,EAAuB,eAAA;AAAA,EACvB,yBAAA,EAA2B,eAAA;AAAA,EAC3B,6BAAA,EAA+B,cAAA;AAAA,EAC/B,uBAAA,EAAyB,gBAAA;AAAA,EACzB,qBAAA,EAAuB,MAAA;AAAA,EACvB,sBAAA,EAAwB,sBAAA;AAAA,EACxB,wBAAA,EAA0B,gBAAA;AAAA,EAC1B,eAAA,EAAiB,iCAAA;AAAA,EACjB,eAAA,EAAiB,WAAA;AAAA,EACjB,iBAAA,EAAmB;AACrB,CAAA;AAGO,SAAS,eAAA,CAAgB,QAAwB,SAAA,EAA8D;AACpH,EAAA,MAAM,IAAA,GAAA,CAAyB,UAAU,OAAA,EAAS,WAAA,GAAc,UAAA,CAAW,IAAI,IAAIA,GAAAA,GAAKD,GAAAA;AACxF,EAAA,OAAO,YAAY,EAAE,GAAG,IAAA,EAAM,GAAG,WAAU,GAAI,IAAA;AACjD;AAGO,SAAS,QAAA,CAAS,CAAA,EAAoB,KAAA,EAAe,KAAA,EAAwB;AAClF,EAAA,MAAM,GAAA,GAAM,GAAG,KAAK,CAAA,CAAA,EAAI,OAAO,KAAA,KAAU,QAAA,GAAW,QAAQ,EAAE,CAAA,CAAA;AAC9D,EAAA,OAAO,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,CAAA,EAAG,GAAG,CAAA,GAAI,CAAA,CAAE,GAAG,CAAA,GAAI,CAAA,CAAE,CAAA,EAAG,KAAK,CAAA,QAAA,CAA+B,CAAA;AAC1G;AClXA,IAAM,OAAA,GAAyB;AAAA,EAC7B,QAAA,EAAU,UAAA;AAAA,EACV,KAAA,EAAO,CAAA;AAAA,EACP,MAAA,EAAQ,CAAA;AAAA,EACR,OAAA,EAAS,CAAA;AAAA,EACT,MAAA,EAAQ,EAAA;AAAA,EACR,QAAA,EAAU,QAAA;AAAA,EACV,IAAA,EAAM,eAAA;AAAA,EACN,UAAA,EAAY,QAAA;AAAA,EACZ,MAAA,EAAQ;AACV,CAAA;AAOO,SAAS,IAAI,CAAA,EAA2B;AAC7C,EAAA,IAAI,OAAO,CAAA,KAAM,QAAA,EAAU,OAAO,MAAA,CAAO,SAAS,CAAC,CAAA,GAAI,MAAA,CAAO,CAAC,CAAA,GAAI,IAAA;AACnE,EAAA,IAAI,OAAO,CAAA,KAAM,QAAA,EAAU,OAAO,IAAA;AAClC,EAAA,MAAM,CAAA,GAAI,EAAE,IAAA,EAAK;AACjB,EAAA,OAAO,IAAI,CAAA,GAAI,IAAA;AACjB;AAGO,SAAS,SAAA,CAAU,GAAY,MAAA,EAA+B;AACnE,EAAA,IAAI,CAAC,CAAA,IAAK,OAAO,CAAA,KAAM,UAAU,OAAO,IAAA;AACxC,EAAA,MAAM,EAAE,MAAA,EAAQ,aAAA,EAAc,GAAI,CAAA;AAClC,EAAA,MAAM,IAAI,OAAO,MAAA,KAAW,QAAA,GAAW,MAAA,CAAO,MAAM,CAAA,GAAI,MAAA;AACxD,EAAA,IAAI,OAAO,MAAM,QAAA,IAAY,CAAC,EAAE,IAAA,EAAK,IAAK,CAAC,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,CAAC,CAAC,CAAA,IAAK,OAAO,aAAA,KAAkB,QAAA,IAAY,CAAC,eAAA,CAAgB,IAAA,CAAK,aAAa,CAAA,EAAG,OAAO,IAAA;AAC3J,EAAA,OAAO,WAAA,CAAY,EAAE,MAAA,EAAQ,CAAA,CAAE,IAAA,EAAK,EAAG,aAAA,EAAe,aAAA,CAAc,WAAA,EAAY,EAAE,EAAG,MAAM,CAAA;AAC7F;AAGO,SAAS,MAAA,CAAO,EAAE,QAAA,EAAS,EAA4B;AAC5D,EAAA,uBAAOI,GAAAA,CAAC,MAAA,EAAA,EAAK,KAAA,EAAO,SAAU,QAAA,EAAS,CAAA;AACzC;AAYO,SAAS,cAAA,CAAe,EAAE,MAAA,EAAQ,QAAA,EAAU,UAAS,EAAqB;AAC/E,EAAA,MAAM,QAAA,GAAW,kBAAkB,MAAM,CAAA;AACzC,EAAA,MAAM,CAAA,GAAI,eAAA,CAAgB,QAAA,EAAU,QAAQ,CAAA;AAC5C,EAAA,MAAM,IAAA,GAAO,CAAC,GAAA,EAAgC,KAAA,GAA6B,WAA0B,UAAA,CAAW,GAAA,EAAK,QAAA,EAAU,KAAA,EAAO,QAAQ,CAAA;AAC9I,EAAA,MAAM,CAAA,GAAI,CAAC,GAAA,EAA4B,IAAA,KAAoD,IAAA,GAAO,IAAA,CAAK,CAAA,CAAE,GAAG,CAAA,EAAG,IAAI,CAAA,GAAI,CAAA,CAAE,GAAG,CAAA;AAC5H,EAAA,OAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,CAAA,EAAG,CAAA,EAAG,MAAM,QAAA,EAAS;AAClD;AAGO,SAAS,UAAA,CAAW,GAAA,EAAgC,MAAA,EAAgB,KAAA,GAA6B,QAAQ,QAAA,EAAkC;AAChJ,EAAA,IAAI,CAAC,GAAA,IAAO,OAAO,GAAA,KAAQ,UAAU,OAAO,IAAA;AAC5C,EAAA,MAAM,OAAA,GAAU,qBAAA,CAAsB,IAAA,CAAK,GAAG,CAAA;AAC9C,EAAA,MAAM,IAAI,IAAI,IAAA,CAAK,UAAU,CAAA,EAAG,GAAG,eAAe,GAAG,CAAA;AACrD,EAAA,IAAI,OAAO,KAAA,CAAM,CAAA,CAAE,OAAA,EAAS,GAAG,OAAO,IAAA;AACtC,EAAA,MAAM,IAAA,GAAO,UAAU,KAAA,GAAQ,QAAA;AAC/B,EAAA,IAAI;AACF,IAAA,OAAO,IAAI,IAAA,CAAK,cAAA,CAAe,MAAA,EAAQ,EAAE,SAAA,EAAW,MAAA,EAAQ,GAAI,KAAA,KAAU,UAAA,IAAc,CAAC,OAAA,GAAU,EAAE,SAAA,EAAW,OAAA,EAAQ,GAAI,EAAC,EAAI,GAAI,IAAA,GAAO,EAAE,QAAA,EAAU,IAAA,EAAK,GAAI,EAAC,EAAI,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,EAClL,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,CAAA,CAAE,WAAA,EAAY,CAAE,KAAA,CAAM,GAAG,EAAE,CAAA;AAAA,EACpC;AACF;AAGO,SAAS,IAAA,CAAK,EAAE,KAAA,EAAO,IAAA,EAAM,WAAU,EAA8F;AAC1I,EAAA,IAAI,CAAC,KAAA,IAAS,CAAC,IAAA,EAAM,OAAO,IAAA;AAC5B,EAAA,uBACEA,IAAC,MAAA,EAAA,EAAK,QAAA,EAAU,OAAO,SAAA,EAAsB,wBAAA,EAAwB,MAClE,QAAA,EAAA,IAAA,EACH,CAAA;AAEJ;AAGO,SAAS,MAAA,CAAO,CAAA,EAAoB,IAAA,EAAqB,KAAA,EAAuB;AACrF,EAAA,OAAO,IAAA,CAA+B,KAAA,KAAU,CAAA,GAAI,CAAA,CAAE,iBAAiB,CAAA,GAAI,CAAA,CAAE,mBAAmB,CAAA,EAAG,EAAE,OAAO,CAAA;AAC9G;AAiBO,SAAS,UAAA,CAAW,EAAE,KAAA,EAAO,KAAA,EAAO,WAAA,EAAa,aAAa,SAAA,EAAW,SAAA,EAAW,GAAG,IAAA,EAAK,EAAoB;AACrH,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIE,SAAuC,MAAM,CAAA;AACvE,EAAA,MAAM,KAAA,GAAQJ,OAAkD,MAAS,CAAA;AACzE,EAAAK,SAAAA,CAAU,MAAM,MAAM,YAAA,CAAa,MAAM,OAAO,CAAA,EAAG,EAAE,CAAA;AACrD,EAAA,MAAM,IAAA,GAAO,YAAY,YAAY;AACnC,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,KAAK,CAAA;AACzC,MAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,IACnB,CAAA,CAAA,MAAQ;AACN,MAAA,QAAA,CAAS,QAAQ,CAAA;AAAA,IACnB;AACA,IAAA,YAAA,CAAa,MAAM,OAAO,CAAA;AAC1B,IAAA,KAAA,CAAM,UAAU,UAAA,CAAW,MAAM,QAAA,CAAS,MAAM,GAAG,GAAI,CAAA;AAAA,EACzD,CAAA,EAAG,CAAC,KAAK,CAAC,CAAA;AACV,EAAA,uBACEJ,IAAAA,CAAAE,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAD,IAAC,QAAA,EAAA,EAAO,IAAA,EAAK,UAAS,OAAA,EAAS,IAAA,EAAM,WAAsB,YAAA,EAAY,SAAA,EAAW,gBAAc,IAAA,CAAK,cAAc,KAAK,EAAA,EAAI,YAAA,EAAY,OACrI,QAAA,EAAA,KAAA,KAAU,QAAA,GAAW,cAAc,KAAA,EACtC,CAAA;AAAA,oBACAA,IAAC,MAAA,EAAA,EAAK,IAAA,EAAK,UAAS,WAAA,EAAU,QAAA,EAAS,uBAAmB,IAAA,EAAC,KAAA,EAAO,UAAU,QAAA,GAAW,MAAA,GAAY,SAChG,QAAA,EAAA,KAAA,KAAU,QAAA,GAAW,cAAc,KAAA,KAAU,QAAA,GAAW,cAAc,EAAA,EACzE;AAAA,GAAA,EACF,CAAA;AAEJ;ACtHO,SAAS,UAAU,IAAA,EAAuE;AAC/F,EAAA,MAAM,MAAM,IAAA,EAAM,KAAA;AAClB,EAAA,IAAI,CAAC,GAAA,IAAO,OAAO,GAAA,KAAQ,UAAU,OAAO,IAAA;AAC5C,EAAA,MAAM,GAAA,GAAM,GAAA,CAAK,GAAA,CAA0B,GAAG,CAAA;AAC9C,EAAA,IAAI,CAAC,KAAK,OAAO,IAAA;AACjB,EAAA,MAAM,GAAA,GAAM,GAAA,CAAK,GAAA,CAA0B,GAAG,CAAA;AAC9C,EAAA,MAAM,CAAA,GAAI,MAAA,CAAQ,GAAA,CAA4B,KAAK,CAAA;AACnD,EAAA,MAAM,CAAA,GAAI,MAAA,CAAQ,GAAA,CAA6B,MAAM,CAAA;AACrD,EAAA,OAAO,EAAE,GAAA,EAAK,GAAA,EAAK,GAAI,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,IAAK,CAAA,GAAI,CAAA,GAAI,EAAE,KAAA,EAAO,CAAA,EAAE,GAAI,EAAC,EAAI,GAAI,MAAA,CAAO,QAAA,CAAS,CAAC,CAAA,IAAK,CAAA,GAAI,CAAA,GAAI,EAAE,MAAA,EAAQ,CAAA,EAAE,GAAI,EAAC,EAAG;AACjI;AAEA,SAAS,WAAW,KAAA,EAAgE;AAClF,EAAA,OAAA,CAAQ,MAAM,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,GAAI,MAAM,KAAA,GAAQ,EAAC,EAAG,MAAA,CAAO,CAAC,CAAA,KAAsB,CAAC,CAAC,CAAA,IAAK,OAAO,MAAM,QAAQ,CAAA;AACnH;AAeO,SAAS,UAAA,CAAW,EAAE,KAAA,EAAO,QAAA,EAAU,IAAA,GAAO,EAAA,EAAI,KAAA,EAAO,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,GAAG,MAAK,EAAoB;AAC/G,EAAA,MAAM,EAAE,CAAA,EAAG,MAAA,EAAO,GAAI,eAAe,IAAI,CAAA;AACzC,EAAA,MAAM,KAAA,GAAQ,WAAW,KAAK,CAAA;AAC9B,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAC/B,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,MAAM,qBAAA,EAAoB,EAAA,EAC3C,QAAA,kBAAAA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,GAAG,IAAA,EAAM,YAAA,EAAY,KAAA,IAAS,CAAA,CAAE,aAAa,CAAA,EAAG,0BAAA,EAAyB,EAAA,EACrF,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,KAAM;AACnB,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,QAAA,CAAS,CAAA,CAAE,QAAQ,KAAK,CAAA,CAAE,QAAA,GAAW,CAAA,GAAI,CAAA,CAAE,QAAA,GAAW,CAAA;AACzE,IAAA,MAAM,IAAA,GAAO,SAAA,CAAU,CAAA,CAAE,IAAA,EAAM,MAAM,CAAA;AACrC,IAAA,MAAM,OAAA,GAAU,GAAA,CAAI,CAAA,CAAE,aAAa,CAAA;AACnC,IAAA,uBACEA,IAAC,IAAA,EAAA,EAAoC,SAAA,EAAW,GAAG,IAAA,EAAM,oBAAA,EAAmB,IAC1E,QAAA,kBAAAA,GAAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,UAAU,CAAC,CAAA;AAAA,QAClB,IAAA,EAAM,GAAA,CAAI,CAAA,CAAE,KAAK,CAAA,IAAK,EAAA;AAAA,QACtB,SAAS,OAAA,IAAW,CAAC,sBAAsB,IAAA,CAAK,OAAO,IAAI,OAAA,GAAU,IAAA;AAAA,QACrE,GAAA,EAAK,GAAA,CAAI,CAAA,CAAE,GAAG,CAAA;AAAA,QACd,QAAA,EAAU,GAAA;AAAA,QACV,aAAA,EAAe,EAAE,qBAAqB,CAAA;AAAA,QACtC,gBAAA,EAAkB,EAAE,wBAAwB,CAAA;AAAA,QAC5C,SAAA,EAAW,IAAA,GAAO,IAAA,CAAK,CAAA,CAAE,iBAAiB,GAAG,EAAE,KAAA,EAAO,IAAA,EAAM,CAAA,GAAI,IAAA;AAAA,QAChE,KAAA,EAAO,SAAA,CAAU,CAAA,CAAE,KAAA,EAAO,MAAM,CAAA;AAAA,QAChC,IAAA,EAAM,QAAA,GAAW,CAAC,CAAA,IAAK,IAAA;AAAA,QACvB,IAAA;AAAA,QACC,GAAI,GAAG,OAAA,GAAU,EAAE,YAAY,EAAA,CAAG,OAAA,KAAY;AAAC;AAAA,KAClD,EAAA,EAdO,GAAG,GAAA,CAAI,CAAA,CAAE,GAAG,CAAA,IAAK,EAAE,CAAA,CAAA,EAAI,CAAC,CAAA,CAejC,CAAA;AAAA,EAEJ,CAAC,GACH,CAAA,EACF,CAAA;AAEJ;AAGO,SAAS,kBAAA,CAAmB,EAAE,KAAA,EAAO,IAAA,GAAO,EAAA,EAAI,MAAM,CAAA,EAAG,SAAA,EAAW,GAAG,IAAA,EAAK,EAAwG;AACzL,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,CAAe,IAAI,CAAA;AACjC,EAAA,MAAM,KAAA,GAAQ,WAAW,KAAK,CAAA;AAC9B,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAC/B,EAAA,uBACEA,GAAAA;AAAA,IAAC,iBAAA;AAAA,IAAA;AAAA,MACC,KAAA,EAAO,KAAA,CAAM,GAAA,CAAI,CAAC,OAAO,EAAE,KAAA,EAAO,SAAA,CAAU,CAAC,GAAG,IAAA,EAAM,GAAA,CAAI,CAAA,CAAE,KAAK,GAAE,CAAE,CAAA;AAAA,MACrE,IAAA;AAAA,MACA,GAAA;AAAA,MACA,SAAA,EAAW,EAAE,oBAAoB,CAAA;AAAA,MAChC,GAAI,SAAA,GAAY,EAAE,SAAA,KAAc;AAAC;AAAA,GACpC;AAEJ;AC9EA,IAAM,WAAA,uBAAkB,GAAA,CAAI,CAAC,QAAQ,SAAA,EAAW,SAAA,EAAW,SAAS,CAAC,CAAA;AACrE,IAAM,SAAA,GAAY,CAAC,CAAA,KAA4D,OAAO,CAAA,KAAM,YAAY,WAAA,CAAY,GAAA,CAAI,CAAC,CAAA,GAAK,CAAA,GAAe,SAAA;AAG7I,IAAM,KAAA,GAAQ,EAAE,IAAA,EAAM,QAAA,EAAK,SAAS,QAAA,EAAK,OAAA,EAAS,QAAA,EAAK,OAAA,EAAS,GAAA,EAAI;AAK7D,SAAS,SAAA,CAAU,OAAe,OAAA,EAA8B;AACrE,EAAA,IAAI,SAAS,OAAO,SAAA;AACpB,EAAA,IAAI,KAAA,KAAU,aAAa,OAAO,MAAA;AAClC,EAAA,IAAI,KAAA,KAAU,WAAA,IAAe,KAAA,KAAU,UAAA,EAAY,OAAO,OAAA;AAC1D,EAAA,IAAI,CAAC,iBAAA,EAAmB,MAAA,EAAQ,WAAA,EAAa,kBAAA,EAAoB,SAAA,EAAW,YAAA,EAAc,kBAAkB,CAAA,CAAE,QAAA,CAAS,KAAK,CAAA,EAAG,OAAO,SAAA;AACtI,EAAA,OAAO,OAAA;AACT;AAWO,SAAS,iBAAiB,EAAE,KAAA,EAAO,UAAU,SAAA,EAAW,GAAG,MAAK,EAA0B;AAC/F,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,CAAe,IAAI,CAAA;AACjC,EAAA,MAAM,CAAA,GAAI,QAAA,KAAa,KAAA,GAAQI,aAAA,CAAe,KAAK,CAAA,GAAI,IAAA,CAAA;AACvD,EAAA,IAAI,CAAC,GAAG,OAAO,IAAA;AACf,EAAA,uBACEL,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAsB,uBAAmB,IAAA,EAAC,eAAA,EAAe,CAAA,CAAE,KAAA,EAAO,gBAAc,SAAA,CAAU,CAAA,CAAE,KAAA,EAAO,CAAA,CAAE,OAAO,CAAA,EAC/G,QAAA,EAAA;AAAA,IAAA,QAAA,CAAS,CAAA,EAAG,OAAA,EAAS,CAAA,CAAE,KAAK,CAAA;AAAA,IAC5B,CAAA,CAAE,OAAA,mBAAUC,GAAAA,CAAC,MAAA,EAAA,EAAQ,eAAK,CAAA,CAAE,mBAAmB,CAAC,CAAA,CAAA,EAAG,CAAA,GAAY;AAAA,GAAA,EAClE,CAAA;AAEJ;AAkBO,SAAS,aAAA,CAAc,EAAE,KAAA,EAAO,QAAA,EAAU,OAAA,GAAU,MAAA,EAAQ,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,GAAG,IAAA,EAAK,EAAuB;AACrH,EAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAG,IAAA,EAAK,GAAI,eAAe,IAAI,CAAA;AAC1C,EAAA,MAAM,CAAA,GAAI,QAAA,KAAa,KAAA,GAAQI,aAAA,CAAe,KAAK,CAAA,GAAI,IAAA,CAAA;AACvD,EAAA,IAAI,CAAC,GAAG,OAAO,IAAA;AACf,EAAA,MAAM,QAA6B,KAAA,CAAM,OAAA,CAAQ,CAAA,CAAE,KAAK,IAAI,CAAA,CAAE,KAAA,CAAM,MAAA,CAAO,CAAC,MAAM,CAAA,IAAK,OAAO,CAAA,KAAM,QAAQ,IAAI,EAAC;AACjH,EAAA,MAAM,YAAY,CAAC,CAAA,KAAyB,SAAS,CAAA,EAAG,MAAA,EAAQ,EAAE,GAAG,CAAA;AAErE,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,IAAK,CAAA,CAAE,UAAU,WAAA,IAAe,CAAA,CAAE,UAAU,UAAA,EAAY;AAC3E,IAAA,MAAM,OAAO,CAAA,CAAE,KAAA,KAAU,WAAA,GAAc,CAAA,CAAE,oBAAoB,CAAA,GAAI,CAAA,CAAE,KAAA,KAAU,UAAA,GAAa,EAAE,mBAAmB,CAAA,GAAI,SAAS,CAAA,EAAG,OAAA,EAAS,EAAE,KAAK,CAAA;AAC/I,IAAA,uBACEJ,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,IAAA,EAAM,kBAAA,EAAgB,IAAA,EAAC,eAAA,EAAe,CAAA,CAAE,KAAA,EAAO,mBAAiB,OAAA,EACjF,QAAA,kBAAAA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,QAAA,EAAU,2BAAA,EAAyB,IAAA,EACjD,QAAA,EAAA,IAAA,EACH,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,IAAI,YAAY,SAAA,EAAW;AACzB,IAAA,MAAM,KAAK,IAAA,CAAK,GAAA,CAAI,GAAG,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA,KAAM,SAAA,CAAU,CAAA,CAAE,KAAK,MAAM,SAAA,IAAa,SAAA,CAAU,EAAE,KAAK,CAAA,KAAM,SAAS,CAAC,CAAA;AACnH,IAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,CAAC,CAAA,KAAM,SAAA,CAAU,CAAA,CAAE,KAAK,CAAA,KAAM,SAAA,IAAa,SAAA,CAAU,CAAA,CAAE,KAAK,CAAA,KAAM,SAAS,CAAA,GAAI,EAAA,GAAK,KAAA,CAAM,KAAA,CAAM,CAAC,CAAA,KAAM,SAAA,CAAU,CAAA,CAAE,KAAK,CAAA,KAAM,MAAM,CAAA,GAAI,KAAA,CAAM,SAAS,CAAA,GAAI,CAAA;AACpL,IAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,MAAM,kBAAA,EAAgB,IAAA,EAAC,eAAA,EAAe,CAAA,CAAE,OAAO,iBAAA,EAAgB,SAAA,EAChF,0BAAAA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,KAAA,EAAO,0BAAA,EAAwB,IAAA,EAC7C,YAAE,cAAA,EAAgB,EAAE,CAAA,EAAG,KAAA,GAAQ,GAAG,KAAA,EAAO,KAAA,CAAM,MAAA,EAAQ,IAAA,EAAM,UAAU,KAAA,CAAM,KAAK,CAAE,CAAA,EAAG,GAC1F,CAAA,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,kBAAA,EAAgB,IAAA,EAAC,eAAA,EAAe,CAAA,CAAE,KAAA,EAAO,iBAAA,EAAgB,MAAA,EAChF,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,MAAM,YAAA,EAAY,CAAA,CAAE,gBAAgB,CAAA,EAAG,yBAAqB,IAAA,EAC3E,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AACnB,MAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,CAAA,CAAE,KAAK,CAAA;AAC/B,MAAA,uBACED,IAAAA,CAAC,IAAA,EAAA,EAAyB,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,cAAA,EAAc,OAAO,CAAA,CAAE,GAAA,KAAQ,QAAA,GAAW,CAAA,CAAE,GAAA,GAAM,WAAW,oBAAA,EAAoB,KAAA,EAAQ,GAAI,KAAA,KAAU,SAAA,IAAa,KAAA,KAAU,SAAA,GAAY,EAAE,cAAA,EAAgB,MAAA,EAAgB,GAAI,EAAC,EAC7N,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,aAAA,EAAY,MAAA,EAAO,qBAAA,EAAmB,IAAA,EAC/D,QAAA,EAAA,KAAA,CAAM,KAAK,CAAA,EACd,CAAA;AAAA,wBACAD,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,EAAA,CAAG,KAAA,EAAO,sBAAkB,IAAA,EAC1C,QAAA,EAAA;AAAA,UAAA,SAAA,CAAU,CAAC,CAAA;AAAA,0BACZC,IAAC,MAAA,EAAA,EAAQ,QAAA,EAAA,CAAA,EAAA,EAAK,EAAE,CAAA,UAAA,EAAa,KAAK,CAAA,CAAE,CAAC,CAAA,CAAA,EAAG;AAAA,SAAA,EAC1C,CAAA;AAAA,wBACAA,GAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,CAAA,CAAE,EAAA,EAAI,IAAA,EAAM,IAAA,CAAK,CAAA,CAAE,EAAE,CAAA,EAAG,SAAA,EAAW,GAAG,IAAA,EAAM;AAAA,OAAA,EAAA,EARlD,CAAA,EAAG,CAAA,CAAE,GAAG,CAAA,CAAA,EAAI,CAAC,CAAA,CAStB,CAAA;AAAA,IAEJ,CAAC,CAAA,EACH,CAAA;AAAA,IACC,CAAA,CAAE,OAAA,mBACDA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,OAAA,EAAS,0BAAA,EAA0B,OAAO,CAAA,CAAE,OAAA,CAAQ,SAAS,QAAA,GAAW,CAAA,CAAE,OAAA,CAAQ,IAAA,GAAO,SAAA,EACvG,QAAA,EAAA,QAAA,CAAS,CAAA,EAAG,SAAA,EAAW,CAAA,CAAE,OAAA,CAAQ,IAAI,CAAA,EACxC,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;AA4BO,SAAS,aAAA,CAAc,EAAE,KAAA,EAAO,MAAA,EAAQ,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,GAAG,MAAK,EAAuB;AAC/H,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,CAAe,IAAI,CAAA;AACjC,EAAA,MAAM,CAAA,GAAI,MAAA,KAAW,KAAA,GAAQK,UAAA,CAAiB,KAAK,CAAA,GAAI,IAAA,CAAA;AACvD,EAAA,IAAI,CAAC,CAAA,IAAK,CAAA,CAAE,IAAA,KAAS,MAAA,SAAe,SAAA,mBAAYL,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,IAAA,EAAM,oBAAA,EAAkB,IAAA,EAAE,qBAAU,CAAA,GAAS,IAAA;AAChH,EAAA,MAAM,OAAA,GAAU,CAAA,CAAE,IAAA,KAAS,OAAA,IAAW,CAAA,CAAE,SAAS,QAAA,GAAW,eAAA,CAAgB,CAAA,CAAE,IAAI,CAAA,GAAI,IAAA;AACtF,EAAA,MAAM,IAAA,GAAO,OAAA,GAAU,CAAC,CAAA,IAAK,OAAA;AAC7B,EAAA,MAAM,WAAW,CAAC,CAAC,IAAA,IAAQ,cAAA,CAAe,KAAK,IAAI,CAAA;AACnD,EAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,CAAA,EAAG,QAAA,EAAU,EAAE,IAAI,CAAA;AAC1C,EAAA,MAAM,MAAA,GAAS,EAAE,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,gBAAA,EAAkB,OAAO,CAAA,CAAE,IAAA,KAAS,QAAA,GAAW,CAAA,CAAE,IAAA,GAAO,SAAA,EAAU;AAC1G,EAAA,IAAI,OAAA,GAAU,IAAA;AACd,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,OAAA,mBACED,IAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAa,GAAG,QAAS,GAAI,QAAA,GAAW,EAAE,MAAA,EAAQ,QAAA,EAAU,GAAA,EAAK,uBAAsB,GAAI,EAAC,EAAI,OAAA,EAAS,QAAA,GAAW,CAAC,MAAM,QAAA,CAAS,CAAA,EAAG,CAAC,CAAA,GAAI,MAAA,EAC5I,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MACA,QAAA,mBAAWA,IAAAA,CAAC,MAAA,EAAA,EAAO,QAAA,EAAA;AAAA,QAAA,GAAA;AAAA,QAAE,EAAE,eAAe;AAAA,OAAA,EAAE,CAAA,GAAY;AAAA,KAAA,EACvD,CAAA;AAAA,EAEJ,WAAW,QAAA,EAAU;AACnB,IAAA,OAAA,mBACEC,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,UAAU,GAAG,MAAA,EAAQ,OAAA,EAAS,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,EAAG,CAAC,GAC5D,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,EAEJ;AACA,EAAA,IAAI,CAAC,OAAA,IAAW,CAAC,SAAA,EAAW,OAAO,IAAA;AACnC,EAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,IAAA,EAAK,OAAA,EAAQ,YAAA,EAAY,CAAA,CAAE,cAAc,CAAA,EAAG,sBAAkB,IAAA,EACpF,QAAA,EAAA;AAAA,IAAA,OAAA;AAAA,IACA;AAAA,GAAA,EACH,CAAA;AAEJ;ACrJO,SAAS,SAAA,CAAU,EAAE,KAAA,EAAO,SAAA,EAAW,YAAY,QAAA,EAAU,YAAA,GAAe,CAAA,EAAG,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,GAAG,MAAK,EAAmB;AACpI,EAAA,MAAM,EAAE,CAAA,EAAG,IAAA,EAAM,MAAA,EAAO,GAAI,eAAe,IAAI,CAAA;AAC/C,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,MAAM,QAAA,GAAWK,cAAe,KAAK,CAAA;AACrC,EAAA,MAAM,KAAA,GAAA,CAAS,MAAM,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,GAAI,KAAA,CAAM,KAAA,GAAQ,EAAC,EAAG,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,IAAK,MAAA,CAAO,QAAA,CAAS,CAAA,EAAG,QAAQ,CAAA,GAAI,CAAA,CAAE,QAAA,GAAW,CAAA,CAAA,EAAI,CAAC,CAAA;AACrI,EAAA,MAAM,OAAA,GAAU,MAAM,iBAAA,IAAqB,OAAO,MAAM,iBAAA,KAAsB,QAAA,GAAW,MAAM,iBAAA,GAAoB,IAAA;AACnH,EAAA,MAAM,SAAA,GAAY,MAAM,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAA,GAAI,KAAA,CAAM,YAAY,EAAC;AACtE,EAAA,MAAM,YAAA,GAAe,CAAC,CAAC,OAAA,IAAW,OAAO,OAAA,CAAQ,KAAA,KAAU,QAAA,IAAY,OAAA,CAAQ,KAAA,GAAQ,CAAA,IAAK,EAAE,SAAA,CAAU,MAAA,GAAS,CAAA,IAAK,SAAA,CAAU,KAAA,CAAM,cAAc,CAAA,CAAA,IAAM,CAAC,CAAC,iBAAA,EAAmB,WAAA,EAAa,UAAU,CAAA,CAAE,QAAA,CAAS,QAAA,CAAS,KAAK,CAAA;AAC/N,EAAA,MAAM,MAAA,GAASC,WAAiB,KAAK,CAAA;AACrC,EAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,KAAA,CAAM,KAAA,EAAO,MAAM,CAAA;AAC3C,EAAA,MAAM,OAAA,GAAU,OAAA,GAAU,GAAA,CAAI,OAAA,CAAQ,OAAO,CAAA,GAAI,IAAA;AACjD,EAAA,uBACEN,IAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,eAAA,EAAa,IAAA,EAAC,sBAAA,EAAsB,QAAA,CAAS,KAAA,EAAO,kBAAA,EAAkB,MAAM,EAAA,EACvG,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,EAAA,CAAG,MAAA,EACpB,QAAA,EAAA;AAAA,sBAAAC,IAAC,OAAA,EAAA,EAAQ,SAAA,EAAW,GAAG,MAAA,EAAQ,sBAAA,EAAoB,MACjD,QAAA,kBAAAA,GAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAM,UAAU,KAAK,CAAA,EAAG,WAAW,EAAA,CAAG,IAAA,EAAM,sBAAkB,IAAA,EAC9D,QAAA,EAAA,IAAA,CAAK,CAAA,CAAE,cAAc,GAAG,EAAE,MAAA,EAAQ,IAAI,KAAA,CAAM,MAAM,MAAM,GAAA,CAAI,KAAA,CAAM,EAAE,CAAA,IAAK,IAAI,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,EAAG,GAC7F,CAAA,EACF,CAAA;AAAA,sBACAA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,QAAA,EAAqB,GAAG,IAAA,EAAO,GAAI,EAAA,CAAG,KAAA,GAAQ,EAAE,SAAA,EAAW,EAAA,CAAG,KAAA,EAAM,GAAI,EAAC,EAAI;AAAA,KAAA,EACjG,CAAA;AAAA,oBACAD,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,IAAA,EAAM,sBAAkB,IAAA,EACvC,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,QAAK,KAAA,EAAO,KAAA,CAAM,YAAY,IAAA,EAAM,IAAA,CAAK,KAAA,CAAM,UAAU,CAAA,GAAI,IAAA,CAAK,EAAE,cAAc,CAAA,EAAG,EAAE,IAAA,EAAM,IAAA,CAAK,MAAM,UAAU,CAAA,EAAI,CAAA,GAAI,IAAA,EAAM,CAAA;AAAA,MAChI,KAAA,GAAQ,CAAA,mBAAID,IAAAA,CAAAE,UAAA,EAAE,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAAI,MAAA,CAAO,CAAA,EAAG,aAAA,EAAe,KAAK;AAAA,OAAA,EAAE,CAAA,GAAM;AAAA,KAAA,EAC3D,CAAA;AAAA,IACC,KAAA,CAAM,OAAA,CAAQ,KAAA,CAAM,KAAK,CAAA,IAAK,MAAM,KAAA,CAAM,MAAA,GAAS,CAAA,mBAClDD,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,QAAA,EAAU,wBAAA,EAAsB,IAAA,EACjD,QAAA,kBAAAA,GAAAA,CAAC,sBAAmB,KAAA,EAAe,GAAG,IAAA,EAAM,CAAA,EAC9C,CAAA,GACE,IAAA;AAAA,oBACJD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,OAAA,EAAS,yBAAqB,IAAA,EAC/C,QAAA,EAAA;AAAA,sBAAAC,IAAC,aAAA,EAAA,EAAc,QAAA,EAAoB,OAAA,EAAQ,SAAA,EAAW,GAAG,IAAA,EAAO,GAAI,EAAA,CAAG,QAAA,GAAW,EAAE,UAAA,EAAY,EAAA,CAAG,QAAA,EAAS,GAAI,EAAC,EAAI,CAAA;AAAA,MACpH,YAAA,mBACCD,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,QAAA,EAAU,0BAAsB,IAAA,EAC9C,QAAA,EAAA;AAAA,QAAA,OAAA,mBAAUA,IAAAA,CAAAE,QAAAA,EAAA,EAAG,QAAA,EAAA;AAAA,UAAA,OAAA;AAAA,UAAQ;AAAA,SAAA,EAAG,CAAA,GAAM,IAAA;AAAA,QAC9B,QAAA,CAAS,CAAA,EAAG,iBAAA,EAAmB,OAAA,CAAS,MAAM;AAAA,OAAA,EACjD,CAAA,GACE;AAAA,KAAA,EACN,CAAA;AAAA,oBACAF,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,MAAA,EAChB,QAAA,EAAA;AAAA,MAAA,KAAA,mBACCA,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,KAAA,EAAO,uBAAmB,IAAA,EACzC,QAAA,EAAA;AAAA,wBAAAA,KAAC,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,UAAA,CAAA,CAAE,aAAa,CAAA;AAAA,UAAE;AAAA,SAAA,EAAE,CAAA;AAAA,wBAC1BC,GAAAA,CAAC,QAAA,EAAA,EAAQ,QAAA,EAAA,KAAA,EAAM;AAAA,OAAA,EACjB,CAAA,GACE,IAAA;AAAA,sBACJA,GAAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,MAAA;AAAA,UACC,GAAG,IAAA;AAAA,UACJ,SAAS,CAAC,CAAA,KAAM,UAAA,GAAa,CAAA,EAAG,KAAK,CAAA,IAAK,MAAA;AAAA,UACzC,GAAI,QAAA,GAAW,EAAE,QAAA,EAAU,CAAC,CAAA,KAAkB,QAAA,CAAS,CAAA,EAAG,KAAK,CAAA,EAAE,GAAI,EAAC;AAAA,UACvE,YAAY,EAAE,GAAI,EAAA,CAAG,OAAA,GAAU,EAAE,IAAA,EAAM,EAAA,CAAG,OAAA,EAAQ,GAAI,EAAC,EAAI,GAAI,EAAA,CAAG,MAAA,IAAU,EAAC;AAAG;AAAA;AAClF,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAuBO,SAAS,SAAA,CAAU,EAAE,MAAA,EAAQ,MAAA,GAAS,OAAA,EAAS,YAAY,CAAA,EAAG,OAAA,EAAS,OAAA,EAAS,WAAA,EAAa,UAAA,EAAY,WAAA,EAAa,YAAY,IAAA,EAAM,SAAA,EAAW,UAAA,EAAY,QAAA,EAAU,YAAA,GAAe,CAAA,EAAG,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,GAAG,IAAA,EAAK,EAAmB;AAChP,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,CAAe,IAAI,CAAA;AACjC,EAAA,MAAM,IAAA,GAAA,CAAQ,MAAM,OAAA,CAAQ,MAAM,IAAI,MAAA,GAAS,IAAI,MAAA,CAAO,CAAC,MAAkB,CAAC,CAAC,KAAK,OAAO,CAAA,KAAM,YAAY,OAAO,CAAA,CAAE,OAAO,QAAQ,CAAA;AAErI,EAAA,IAAI,MAAA,KAAW,SAAA,IAAa,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG;AAC7C,IAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,IAAA,EAAK,QAAA,EAAS,WAAA,EAAU,MAAA,EAAO,gBAAA,EAAc,IAAA,EAAC,wBAAqB,SAAA,EAC1F,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,MAAA,EAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EAAE,CAAA;AAAA,sBAC5BA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,aAAA,EAAY,MAAA,EACjC,QAAA,EAAA,KAAA,CAAM,IAAA,CAAK,EAAE,MAAA,EAAQ,KAAK,GAAA,CAAI,CAAA,EAAG,SAAS,CAAA,EAAE,EAAG,CAAC,CAAA,EAAG,CAAA,qBAClDA,GAAAA,CAAC,IAAA,EAAA,EAAW,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,kBAAA,EAAgB,IAAA,EAAA,EAA3C,CAA4C,CACtD,CAAA,EACH;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AACA,EAAA,IAAI,MAAA,KAAW,OAAA,IAAW,IAAA,CAAK,MAAA,KAAW,CAAA,EAAG;AAC3C,IAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,IAAA,EAAM,kBAAc,IAAA,EAAC,sBAAA,EAAqB,SAC3D,QAAA,kBAAAD,IAAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,OAAO,IAAA,EAAK,OAAA,EAAQ,wBAAoB,IAAA,EACzD,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,CAAA,CAAE,aAAa,CAAA,EAAE,CAAA;AAAA,MACpB,0BACCA,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,UAAS,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,OAAA,EAAS,SAAS,eAAA,EAAa,IAAA,EACvE,QAAA,EAAA,CAAA,CAAE,aAAa,GAClB,CAAA,GACE;AAAA,KAAA,EACN,CAAA,EACF,CAAA;AAAA,EAEJ;AACA,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,MAAM,gBAAA,EAAc,IAAA,EAAC,sBAAA,EAAqB,OAAA,EAC3D,0BAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,KAAA,EAAO,wBAAoB,IAAA,EAC5C,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,UAAA,EACf,QAAA,kBAAAA,GAAAA,CAAC,QAAA,EAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,kBAAkB,CAAA,EAAE,CAAA,EACjC,CAAA;AAAA,sBACAA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,SAAA,EAAY,QAAA,EAAA,CAAA,CAAE,iBAAiB,CAAA,EAAE,CAAA;AAAA,MACjD,SAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,UAAA,EAAY,2BAAA,EAAyB,IAAA,EACnD,QAAA,EAAA,CAAA,CAAE,kBAAkB,CAAA,EACvB,CAAA,GACE,IAAA;AAAA,MACH;AAAA,KAAA,EACH,CAAA,EACF,CAAA;AAAA,EAEJ;AACA,EAAA,uBACED,KAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,IAAA,EAAM,gBAAA,EAAc,IAAA,EAAC,sBAAA,EAAqB,OAAA,EAC3D,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,YAAA,EAAY,CAAA,CAAE,iBAAiB,CAAA,EAAG,qBAAA,EAAmB,IAAA,EAC1E,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,qBACTA,GAAAA,CAAC,IAAA,EAAA,EAAc,SAAA,EAAW,EAAA,CAAG,IAAA,EAC3B,QAAA,kBAAAA,GAAAA,CAAC,SAAA,EAAA,EAAU,KAAA,EAAO,CAAA,EAAG,SAAA,EAAuB,GAAI,UAAA,GAAa,EAAE,UAAA,EAAW,GAAI,EAAC,EAAK,GAAI,QAAA,GAAW,EAAE,QAAA,EAAS,GAAI,EAAC,EAAI,YAAA,EAA6B,GAAG,IAAA,EAAO,GAAI,EAAA,CAAG,IAAA,GAAO,EAAE,UAAA,EAAY,EAAA,CAAG,IAAA,EAAK,GAAI,EAAC,EAAI,CAAA,EAAA,EADpM,CAAA,CAAE,EAEX,CACD,CAAA,EACH,CAAA;AAAA,IACC,MAAA,KAAW,OAAA,mBACVD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,sBAAA,EAAoB,IAAA,EACzD,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,CAAA,CAAE,aAAa,CAAA,EAAE,CAAA;AAAA,MACpB,0BACCA,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,UAAS,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,OAAA,EAAS,SAAS,eAAA,EAAa,IAAA,EACvE,QAAA,EAAA,CAAA,CAAE,aAAa,GAClB,CAAA,GACE;AAAA,KAAA,EACN,CAAA,GACE,IAAA;AAAA,IACH,OAAA,IAAW,UAAA,mBACVA,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,OAAA,EAAS,UAAA,EAAY,QAAA,EAAU,aAAa,eAAA,EAAe,WAAA,IAAe,MAAA,EAAW,qBAAA,EAAmB,IAAA,EAC/I,QAAA,EAAA,WAAA,GAAc,CAAA,CAAE,mBAAmB,CAAA,GAAI,CAAA,CAAE,gBAAgB,CAAA,EAC5D,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;ACnJO,SAAS,aAAa,EAAE,QAAA,EAAU,QAAA,GAAW,MAAA,EAAQ,gBAAgB,CAAA,EAAG,iBAAA,EAAmB,SAAA,EAAW,YAAA,GAAe,GAAG,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,GAAG,MAAK,EAAsB;AAChL,EAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAG,IAAA,EAAK,GAAI,eAAe,IAAI,CAAA;AAC1C,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIE,SAAS,KAAK,CAAA;AACtC,EAAA,MAAM,EAAA,GAAK,KAAA,EAAM,CAAE,OAAA,CAAQ,MAAM,EAAE,CAAA;AACnC,EAAA,IAAI,CAAC,QAAA,IAAY,OAAO,QAAA,KAAa,UAAU,OAAO,IAAA;AACtD,EAAA,MAAM,IAAA,GAAOI,eAAe,QAAQ,CAAA;AACpC,EAAA,IAAI,IAAA,IAAQ,QAAA,KAAa,MAAA,EAAQ,OAAO,IAAA;AAExC,EAAA,MAAM,QAAA,GAAW,SAAS,IAAA,KAAS,QAAA;AACnC,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,MAAM,UAAA,GAAa,CAAA,CAAA,EAAI,YAAA,GAAe,CAAC,CAAA,CAAA;AACvC,EAAA,MAAM,OAAA,GAAU,GAAA,CAAI,QAAA,CAAS,OAAO,CAAA;AACpC,EAAA,MAAM,OAAA,GAAU,IAAA,GAAO,IAAA,GAAO,GAAA,CAAI,SAAS,OAAO,CAAA;AAClD,EAAA,MAAM,MAAA,GAAS,IAAA,GAAO,IAAA,GAAO,GAAA,CAAI,SAAS,eAAe,CAAA;AACzD,EAAA,MAAM,QAAA,GAAW,IAAA,GAAO,IAAA,GAAOC,eAAAA,CAAgB,SAAS,YAAY,CAAA;AACpE,EAAA,MAAM,WAAW,QAAA,IAAY,CAAC,OAAOA,eAAAA,CAAgB,QAAA,CAAS,SAAS,CAAA,GAAI,IAAA;AAC3E,EAAA,MAAM,SAAS,IAAA,GAAO,EAAC,GAAI,kBAAA,CAAmB,SAAS,MAAM,CAAA;AAC7D,EAAA,MAAM,KAAA,GAAQ,IAAA,GAAO,MAAA,GAAS,MAAA,CAAO,KAAA,CAAM,GAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,aAAa,CAAC,CAAA;AACxE,EAAA,MAAM,MAAA,GAAS,OAAO,CAAA,CAAE,oBAAoB,IAAI,QAAA,CAAS,CAAA,EAAG,iBAAA,EAAmB,QAAA,CAAS,MAAM,CAAA;AAC9F,EAAA,MAAM,QAAA,GAAW,CAAC,IAAA,IAAQ,QAAA,CAAS,WAAW,WAAA,GAAc,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA,GAAI,IAAA;AACzF,EAAA,MAAM,YAAY,CAAC,IAAA,GAAO,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,GAAI,IAAA;AACxD,EAAA,MAAM,OAAA,GAAU,CAAC,IAAA,IAAQ,CAAC,YAAY,IAAA,CAAK,QAAA,CAAS,UAAU,CAAA,GAAI,IAAA;AAClE,EAAA,MAAM,OAAA,GAAU,UAAU,EAAE,CAAA,CAAA;AAC5B,EAAA,MAAM,QAAA,GAAW,aAAa,EAAE,CAAA,CAAA;AAEhC,EAAA,uBACER,IAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,iBAAA,EAAiB,OAAA,EAAS,kBAAA,EAAgB,IAAA,EAAC,yBAAA,EAAyB,IAAA,GAAO,SAAS,OAAO,QAAA,CAAS,MAAA,KAAW,QAAA,GAAW,QAAA,CAAS,MAAA,GAAS,SAAA,EAAW,uBAAA,EAAuB,WAAW,QAAA,GAAW,UAAA,EAAa,GAAI,IAAA,GAAO,EAAE,cAAA,EAAgB,EAAA,EAAG,GAAI,EAAC,EACjR,QAAA,EAAA;AAAA,oBAAAA,KAAC,QAAA,EAAA,EAAO,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,2BAAuB,IAAA,EAClD,QAAA,EAAA;AAAA,MAAA,iBAAA,IAAqB,CAAC,IAAA,mBAAOC,GAAAA,CAAC,MAAA,EAAA,EAAK,yBAAqB,IAAA,EAAE,QAAA,EAAA,iBAAA,CAAkB,QAAQ,CAAA,EAAE,CAAA,GAAU,IAAA;AAAA,sBACjGD,KAAC,OAAA,EAAA,EAAQ,EAAA,EAAI,SAAS,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,wBAAA,EAAsB,IAAA,EAChE,QAAA,EAAA;AAAA,QAAA,OAAA,IAAW,CAAC,IAAA,mBACXA,IAAAA,CAAC,MAAA,EAAA,EAAK,4BAAwB,IAAA,EAC3B,QAAA,EAAA;AAAA,UAAA,CAAA,CAAE,kBAAkB,CAAA;AAAA,0BACrBC,GAAAA,CAAC,MAAA,EAAA,EAAO,QAAA,EAAA,IAAA,EAAE;AAAA,SAAA,EACZ,CAAA,GACE,IAAA;AAAA,QACH,WAAW,CAAA,CAAE,iBAAiB,CAAA,GAAK,OAAA,IAAW,EAAE,gBAAgB,CAAA;AAAA,QAChE,QAAA,IAAY,OAAA,mBAAUD,IAAAA,CAAAE,UAAA,EAAE,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UAAI;AAAA,SAAA,EAAQ,CAAA,GAAM;AAAA,OAAA,EAC7C,CAAA;AAAA,sBACAD,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,MAAA,EAAQ,wBAAA,EAAsB,MAC/C,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,MACC,IAAA,mBACCA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,uBAAA,EAAqB,IAAA,EAC5C,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EACpB,CAAA,GACE;AAAA,KAAA,EACN,CAAA;AAAA,IACC,IAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,4BAAA,EAA0B,IAAA,EAC9C,QAAA,EAAA,CAAA,CAAE,mBAAmB,CAAA,EACxB,CAAA,GACE,IAAA;AAAA,IACH,OAAA,mBACCD,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,IAAA,EAAM,4BAAwB,IAAA,EAC5C,QAAA,EAAA;AAAA,MAAA,CAAA,CAAE,kBAAkB,CAAA;AAAA,MAAE,IAAA;AAAA,MAAG;AAAA,KAAA,EAC5B,CAAA,GACE,IAAA;AAAA,IACH,MAAA,mBACCA,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,MAAA,EAAQ,2BAAuB,IAAA,EAC9C,QAAA,EAAA;AAAA,sBAAAA,KAAC,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,QAAA,CAAA,CAAE,iBAAiB,CAAA;AAAA,QAAE;AAAA,OAAA,EAAE,CAAA;AAAA,sBAC9BC,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,MAAQ,GAAA;AAAA,sBACtBA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,CAAA,CAAE,eAAe,CAAA,EAAG,WAAA,EAAa,CAAA,CAAE,iBAAiB,GAAG,WAAA,EAAa,CAAA,CAAE,qBAAqB,CAAA,EAAG,SAAA,EAAW,CAAA,EAAG,CAAA,CAAE,eAAe,CAAC,CAAA,CAAA,EAAI,CAAA,CAAE,iBAAiB,CAAC,CAAA,CAAA,EAAI,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,gBAAa,UAAA,EAAW;AAAA,KAAA,EAC1O,CAAA,GACE,IAAA;AAAA,IACH,QAAA,IAAY,SAAA,IAAa,OAAA,mBACxBA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,wBAAA,EAAsB,IAAA,EAC1C,QAAA,EAAA,SAAA,mBACCA,GAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,QAAA,CAAS,YAAA,EAAc,IAAA,EAAM,CAAA,CAAE,oBAAA,EAAsB,EAAE,IAAA,EAAM,SAAA,EAAW,CAAA,EAAG,CAAA,GACtF,QAAA,mBACFA,GAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,QAAA,CAAS,WAAA,EAAa,IAAA,EAAM,CAAA,CAAE,mBAAA,EAAqB,EAAE,IAAA,EAAM,QAAA,EAAU,CAAA,EAAG,CAAA,mBAErFA,GAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,QAAA,CAAS,UAAA,EAAY,IAAA,EAAM,CAAA,CAAE,kBAAA,EAAoB,EAAE,IAAA,EAAM,OAAA,IAAW,EAAA,EAAI,CAAA,EAAG,CAAA,EAE5F,CAAA,GACE,IAAA;AAAA,IACH,QAAA,IAAY,2BACXD,IAAAA,CAAC,OAAE,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,0BAAA,EAAwB,IAAA,EAC/C,QAAA,EAAA;AAAA,MAAA,QAAA,mBACCA,IAAAA,CAAC,GAAA,EAAA,EAAE,IAAA,EAAM,QAAA,EAAU,MAAA,EAAO,QAAA,EAAS,GAAA,EAAI,qBAAA,EAAsB,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,0BAAsB,IAAA,EACpG,QAAA,EAAA;AAAA,QAAA,OAAA,GAAU,EAAE,gBAAA,EAAkB,EAAE,SAAS,CAAA,GAAI,EAAE,uBAAuB,CAAA;AAAA,wBACvEA,KAAC,MAAA,EAAA,EAAO,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UAAE,EAAE,eAAe;AAAA,SAAA,EAAE;AAAA,OAAA,EAC/B,CAAA,GACE,IAAA;AAAA,MACH,QAAA,mBACCA,IAAAA,CAAC,GAAA,EAAA,EAAE,MAAM,QAAA,EAAU,MAAA,EAAO,QAAA,EAAS,GAAA,EAAI,qBAAA,EAAsB,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,0BAAsB,IAAA,EACpG,QAAA,EAAA;AAAA,QAAA,CAAA,CAAE,sBAAsB,CAAA;AAAA,wBACzBA,KAAC,MAAA,EAAA,EAAO,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UAAE,EAAE,eAAe;AAAA,SAAA,EAAE;AAAA,OAAA,EAC/B,CAAA,GACE;AAAA,KAAA,EACN,CAAA,GACE,IAAA;AAAA,IACH,SAAA,IAAa,CAAC,IAAA,IAAQ,QAAA,CAAS,sBAC9BC,GAAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,KAAK,2BAAA,EAAyB,IAAA,EAC9C,oBAAU,EAAE,QAAA,EAAU,KAAK,QAAA,CAAS,GAAA,EAAK,CAAA,EAC5C,CAAA,GACE,IAAA;AAAA,IACH,CAAC,OACA,MAAA,CAAO,MAAA,KAAW,oBAChBA,GAAAA,CAAC,OAAE,SAAA,EAAW,EAAA,CAAG,OAAO,wBAAA,EAAsB,IAAA,EAC3C,YAAE,mBAAmB,CAAA,EACxB,oBAEAD,IAAAA,CAAC,KAAA,EAAA,EAAI,8BAAA,EAA4B,IAAA,EAC/B,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,cAAW,SAAA,EAAW,EAAA,CAAG,MAAM,+BAAA,EAA6B,IAAA,EAC1D,QAAA,EAAA,CAAA,CAAE,iBAAiB,CAAA,EACtB,CAAA;AAAA,sBACAA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,GAAG,MAAA,EAAQ,EAAA,EAAI,QAAA,EAAU,yBAAA,EAAuB,IAAA,EAC5D,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,GAAG,CAAA,KAAM;AACnB,QAAA,MAAM,WAAA,GAAc,GAAA,CAAI,CAAA,CAAE,WAAW,CAAA;AACrC,QAAA,MAAM,QAAA,GAAW,GAAA,CAAI,CAAA,CAAE,QAAQ,CAAA;AAC/B,QAAA,uBACAD,IAAAA,CAAC,IAAA,EAAA,EAAmC,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,sBAAA,EAAsB,OAAO,CAAA,CAAE,MAAA,KAAW,QAAA,GAAW,CAAA,CAAE,SAAS,SAAA,EACvH,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,UAAK,qBAAA,EAAmB,IAAA,EAAE,mBAAS,CAAA,EAAG,iBAAA,EAAmB,CAAA,CAAE,MAAM,CAAA,EAAE,CAAA;AAAA,UACnE,WAAA,mBAAcD,IAAAA,CAAC,MAAA,EAAA,EAAK,6BAAyB,IAAA,EAAC,QAAA,EAAA;AAAA,YAAA,QAAA;AAAA,YAAI;AAAA,WAAA,EAAY,CAAA,GAAU,IAAA;AAAA,UACxE,QAAA,mBAAWA,IAAAA,CAAC,MAAA,EAAA,EAAK,0BAAsB,IAAA,EAAC,QAAA,EAAA;AAAA,YAAA,QAAA;AAAA,YAAI;AAAA,WAAA,EAAS,CAAA,GAAU,IAAA;AAAA,UAAM,GAAA;AAAA,0BACtEC,GAAAA,CAAC,IAAA,EAAA,EAAK,KAAA,EAAO,CAAA,CAAE,WAAA,EAAa,IAAA,EAAM,IAAA,CAAK,CAAA,CAAE,WAAA,EAAa,UAAU,CAAA,EAAG;AAAA,SAAA,EAAA,EAJ5D,CAAA,EAAG,IAAI,CAAA,CAAE,EAAE,KAAK,EAAE,CAAA,CAAA,EAAI,CAAC,CAAA,CAKhC,CAAA;AAAA,MAEF,CAAC,CAAA,EACH,CAAA;AAAA,MACC,OAAO,MAAA,GAAS,IAAA,CAAK,IAAI,CAAA,EAAG,aAAa,oBACxCA,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,UAAS,SAAA,EAAW,EAAA,CAAG,QAAQ,eAAA,EAAe,IAAA,EAAM,iBAAe,QAAA,EAAU,OAAA,EAAS,MAAM,OAAA,CAAQ,CAAC,CAAA,KAAM,CAAC,CAAC,CAAA,EAAG,yBAAA,EAAuB,MACjJ,QAAA,EAAA,IAAA,GAAO,CAAA,CAAE,mBAAmB,CAAA,GAAI,CAAA,CAAE,oBAAoB,EAAE,KAAA,EAAO,OAAO,MAAA,EAAQ,GACjF,CAAA,GACE;AAAA,KAAA,EACN,CAAA,GAEA;AAAA,GAAA,EACN,CAAA;AAEJ;AC7HA,IAAM,KAAA,GAAQ,CAAC,CAAA,KAAkE,CAAA,KAAM,YAAY,CAAA,KAAM,SAAA,IAAa,CAAA,KAAM,WAAA,IAAe,CAAA,KAAM,OAAA;AAE1I,SAAS,WAAA,CAAY,EAAE,QAAA,EAAU,OAAA,EAAS,eAAe,QAAA,EAAU,UAAA,EAAY,UAAU,OAAA,EAAS,QAAA,GAAW,QAAQ,YAAA,GAAe,CAAA,EAAG,UAAU,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,GAAG,MAAK,EAAqB;AACxM,EAAA,MAAM,EAAE,CAAA,EAAM,MAAM,MAAA,EAAO,GAAI,eAAe,IAAI,CAAA;AAClD,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,MAAM,UAAU,CAAA,YAAA,EAAeQ,KAAAA,GAAQ,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AACxD,EAAA,MAAM,GAAA,GAAA,CAAO,MAAM,OAAA,CAAQ,QAAQ,IAAI,QAAA,GAAW,IAAI,MAAA,CAAO,CAAC,MAAuB,CAAC,CAAC,KAAK,OAAO,CAAA,KAAM,YAAY,OAAO,CAAA,CAAE,OAAO,QAAQ,CAAA;AAC7I,EAAA,MAAM,IAAA,GAAO,QAAA,KAAa,MAAA,GAAS,GAAA,CAAI,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,aAAA,CAAc,CAAC,CAAC,CAAA,GAAI,GAAA;AAC1E,EAAA,MAAM,EAAE,MAAA,EAAQ,OAAA,EAAQ,GAAI,iBAAiB,IAAI,CAAA;AAEjD,EAAA,MAAM,SAAA,GAAY,CAAC,GAAA,EAAiB,MAAA,KAAwB;AAC1D,IAAA,MAAM,IAAA,GAAO,cAAc,GAAG,CAAA;AAC9B,IAAA,MAAM,SAAS,KAAA,CAAM,GAAA,CAAI,MAAM,CAAA,GAAI,IAAI,MAAA,GAAS,SAAA;AAChD,IAAA,MAAM,SAAA,GAAY,IAAI,IAAA,KAAS,aAAA,GAAgB,EAAE,oBAAoB,CAAA,GAAI,EAAE,iBAAiB,CAAA;AAC5F,IAAA,MAAM,UAAU,CAAC,CAAA,KAAkB,CAAC,GAAA,CAAI,EAAE,MAAM,CAAA,EAAG,GAAA,CAAI,CAAA,CAAE,YAAY,CAAC,CAAA,CAAE,OAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAChG,IAAA,MAAM,IAAA,GAAO,QAAQ,GAAG,CAAA;AACxB,IAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,GAAA,CAAI,KAAK,CAAA;AAC3B,IAAA,MAAM,WAAA,GAAc,MAAA,KAAW,QAAA,IAAY,CAAC,IAAA;AAC5C,IAAA,MAAM,KAAA,GAAQ,SAAA,CAAU,GAAA,CAAI,KAAA,EAAO,MAAM,CAAA;AACzC,IAAA,MAAM,IAAA,GAAO,CAAC,IAAA,KAA0B;AACtC,MAAA,MAAM,QAAQ,IAAA,KAAS,KAAA,GAAQ,EAAE,aAAa,CAAA,GAAI,EAAE,aAAa,CAAA;AACjE,MAAA,MAAM,IAAA,GAAO,IAAA,CAAK,CAAA,CAAE,oBAAoB,CAAA,EAAG,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,SAAA,CAAU,WAAA,EAAY,EAAG,IAAA,EAAM,QAAQ,KAAA,IAAS,EAAA,EAAI,CAAA,CAAE,OAAA,CAAQ,OAAA,EAAS,GAAG,CAAA,CAAE,OAAA,CAAQ,OAAA,EAAS,EAAE,CAAA,CAAE,IAAA,EAAK;AACxK,MAAA,MAAM,IAAA,GAAO,QAAA,GAAW,GAAA,EAAK,IAAI,CAAA;AACjC,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,uBACER,GAAAA,CAAC,GAAA,EAAA,EAAa,IAAA,EAAY,UAAQ,IAAA,EAAC,SAAA,EAAW,EAAA,CAAG,QAAA,EAAU,YAAA,EAAY,IAAA,EAAM,0BAAA,EAA0B,IAAA,EACpG,mBADK,IAER,CAAA;AAAA,MAEJ;AACA,MAAA,IAAI,UAAA,EAAY;AACd,QAAA,uBACEA,GAAAA,CAAC,QAAA,EAAA,EAAkB,MAAK,QAAA,EAAS,SAAA,EAAW,GAAG,QAAA,EAAU,YAAA,EAAY,MAAM,OAAA,EAAS,MAAM,WAAW,GAAA,EAAK,IAAI,GAAG,0BAAA,EAA0B,IAAA,EACxI,mBADU,IAEb,CAAA;AAAA,MAEJ;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AACA,IAAA,uBACED,IAAAA,CAAC,IAAA,EAAA,EAAgB,SAAA,EAAW,GAAG,GAAA,EAAK,qBAAA,EAAmB,IAAA,EAAC,sBAAA,EAAsB,IAAI,IAAA,KAAS,aAAA,GAAgB,aAAA,GAAgB,SAAA,EAAW,0BAAwB,MAAA,EAC5J,QAAA,EAAA;AAAA,sBAAAA,KAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,2BAAuB,IAAA,EAC9C,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,YAAQ,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,QAClB,IAAA,mBAAOD,IAAAA,CAAAE,QAAAA,EAAA,EAAE,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UAAE;AAAA,SAAA,EAAK,CAAA,GAAM,IAAA;AAAA,QAAK,QAAA;AAAA,wBAAGD,GAAAA,CAAC,MAAA,EAAA,EAAK,uBAAA,EAAqB,IAAA,EAAE,mBAAS,CAAA,EAAG,gBAAA,EAAkB,GAAA,CAAI,MAAM,CAAA,EAAE,CAAA;AAAA,QACrG,IAAA,mBACCD,IAAAA,CAAAE,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,0BACDD,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,MAAM,sBAAA,EAAoB,IAAA,EAC3C,QAAA,EAAA,CAAA,CAAE,cAAc,CAAA,EACnB;AAAA,SAAA,EACF,CAAA,GACE;AAAA,OAAA,EACN,CAAA;AAAA,MACC,MAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,wBAAA,EAAsB,IAAA,EAC1C,QAAA,EAAA,IAAA,CAAK,CAAA,CAAE,sBAAsB,CAAA,EAAG,EAAE,KAAA,EAAO,OAAA,CAAQ,MAAM,CAAA,IAAK,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA,IAAK,EAAA,EAAI,CAAA,CAAE,IAAA,EAAK,EAC/F,CAAA,GACE,IAAA;AAAA,MACH,KAAA,IAAS,CAAC,IAAA,mBACTD,IAAAA,CAAC,OAAE,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,uBAAA,EAAqB,IAAA,EACzC,QAAA,EAAA;AAAA,QAAA,CAAA,CAAE,eAAe,CAAA;AAAA,QAAE,IAAA;AAAA,wBAAEC,GAAAA,CAAC,MAAA,EAAA,EAAM,QAAA,EAAA,KAAA,EAAM;AAAA,OAAA,EACrC,CAAA,GACE,IAAA;AAAA,sBACJD,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,IAAA,EACd,QAAA,EAAA;AAAA,QAAA,GAAA,CAAI,SAAA,mBAAYC,GAAAA,CAAC,IAAA,EAAA,EAAK,OAAO,GAAA,CAAI,SAAA,EAAW,MAAM,IAAA,CAAK,CAAA,CAAE,gBAAgB,CAAA,EAAG,EAAE,MAAM,IAAA,CAAK,GAAA,CAAI,SAAS,CAAA,IAAK,EAAA,EAAI,CAAA,EAAG,CAAA,GAAK,IAAA;AAAA,QACvH,KAAA,mBAAQD,IAAAA,CAAAE,QAAAA,EAAA,EAAE,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UAAI,EAAE,eAAe,CAAA;AAAA,UAAE,IAAA;AAAA,UAAG;AAAA,SAAA,EAAM,CAAA,GAAM;AAAA,OAAA,EACnD,CAAA;AAAA,MACC,WAAW,SAAA,IAAa,MAAA,KAAW,WAAW,MAAA,KAAW,WAAA,mBACxDD,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,IAAA,EAAM,wBAAoB,IAAA,EACxC,QAAA,EAAA,CAAA,CAAE,sBAAsB,MAAM,CAAA,CAAE,GACnC,CAAA,GACE,IAAA;AAAA,MACH,WAAA,KAAgB,QAAA,IAAY,UAAA,CAAA,mBAC3BD,IAAAA,CAAC,OAAE,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,yBAAA,EAAuB,IAAA,EAC9C,QAAA,EAAA;AAAA,QAAA,IAAA,CAAK,KAAK,CAAA;AAAA,QACV,KAAK,KAAK;AAAA,OAAA,EACb,CAAA,GACE;AAAA,KAAA,EAAA,EArCG,IAAI,EAsCb,CAAA;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,MAAA,GAAS,OAAA,CAAQ,MAAA,GAAS,CAAA;AACjD,EAAA,uBACEA,KAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,GAAG,IAAA,EAAM,iBAAA,EAAiB,OAAA,EAAS,kBAAA,EAAgB,IAAA,EACrE,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,WAAQ,EAAA,EAAI,OAAA,EAAS,WAAW,EAAA,CAAG,KAAA,EACjC,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EACpB,CAAA;AAAA,IACC,QAAA,mBACCD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,KAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,uBAAA,EAAsB,UAAA,EAC3D,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EAAE,CAAA;AAAA,MACtB,OAAA,mBACCD,IAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,eAAA,EAAa,IAAA,EACvE,QAAA,EAAA;AAAA,QAAA,CAAA,CAAE,eAAe,CAAA;AAAA,wBAClBA,KAAC,MAAA,EAAA,EAAO,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UAAE,EAAE,eAAe;AAAA,SAAA,EAAE;AAAA,OAAA,EAC/B,CAAA,GACE;AAAA,KAAA,EACN,IACE,OAAA,mBACFA,IAAAA,CAAC,IAAA,EAAA,EAAG,wBAAoB,IAAA,EACrB,QAAA,EAAA;AAAA,MAAA,MAAA,CAAO,GAAA,CAAI,CAAC,EAAE,OAAA,EAAS,WAAA,EAAY,qBAClCA,IAAAA,CAAC,IAAA,EAAA,EAAoB,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,yBAAqB,IAAA,EAC7D,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,IAAA,EAAA,EAAI,QAAA,EAAA,SAAA,CAAU,OAAO,CAAA,EAAE,CAAA;AAAA,QACvB,YAAY,MAAA,mBACXA,IAAC,IAAA,EAAA,EAAG,SAAA,EAAW,GAAG,WAAA,EAAa,8BAAA,EAA4B,MACxD,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,EAAA,KAAO,SAAA,CAAU,IAAI,OAAO,CAAC,GACjD,CAAA,GACE;AAAA,OAAA,EAAA,EANG,OAAA,CAAQ,EAOjB,CACD,CAAA;AAAA,MACA,OAAA,CAAQ,IAAI,CAAC,EAAA,qBACZA,GAAAA,CAAC,IAAA,EAAA,EAAe,WAAW,EAAA,CAAG,KAAA,EAAO,yBAAqB,IAAA,EACxD,QAAA,kBAAAA,IAAC,IAAA,EAAA,EAAI,QAAA,EAAA,SAAA,CAAU,EAAE,CAAA,EAAE,CAAA,EAAA,EADZ,EAAA,CAAG,EAEZ,CACD;AAAA,KAAA,EACH,CAAA,GACE,WAAW,aAAA,mBACbA,IAAC,KAAA,EAAA,EAAI,yBAAA,EAAuB,IAAA,EAAE,QAAA,EAAA,aAAA,CAAc,OAAO,CAAA,EAAE,oBAErDA,GAAAA,CAAC,OAAE,SAAA,EAAW,EAAA,CAAG,OAAO,uBAAA,EAAqB,IAAA,EAC1C,QAAA,EAAA,CAAA,CAAE,cAAc,CAAA,EACnB,CAAA;AAAA,IAED;AAAA,GAAA,EACH,CAAA;AAEJ;ACtJO,SAAS,QAAQ,EAAE,KAAA,EAAO,OAAO,MAAA,GAAS,EAAA,EAAI,WAAU,EAAiB;AAC9E,EAAA,MAAM,CAAA,GAAI,OAAA,CAAQ,MAAM,eAAA,CAAgB,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAA,EAAG,CAAC,KAAA,EAAO,MAAM,CAAC,CAAA;AAC3E,EAAA,IAAI,CAAC,GAAG,OAAO,IAAA;AACf,EAAA,uBACEA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAsB,SAAS,CAAA,IAAA,EAAO,CAAA,CAAE,KAAK,CAAA,CAAA,EAAI,CAAA,CAAE,MAAM,IAAI,KAAA,EAAO,CAAA,CAAE,KAAA,EAAO,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAQ,MAAK,KAAA,EAAM,YAAA,EAAY,KAAA,EAAO,cAAA,EAAe,YAAA,EAAa,IAAA,EAAK,QAAO,6BAAA,EAA2B,IAAA,EAClM,YAAE,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,qBACZA,GAAAA,CAAC,MAAA,EAAA,EAAe,CAAA,EAAG,CAAA,CAAE,GAAG,CAAA,EAAG,CAAA,EAAG,KAAA,EAAO,CAAA,CAAE,CAAA,EAAG,MAAA,EAAQ,EAAE,MAAA,EAAA,EAAzC,CAAA,CAAE,CAA+C,CAC7D,CAAA,EACH,CAAA;AAEJ;AAiBA,eAAe,YAAA,CAAa,OAAA,EAAyB,IAAA,EAA4B,IAAA,EAAwF;AACvK,EAAA,MAAM,CAAA,GAAI,UAAU,OAAO,CAAA;AAC3B,EAAA,IAAI,CAAC,CAAA,EAAG;AACR,EAAA,MAAM,EAAE,qBAAA,EAAsB,GAAI,MAAM,OAAO,gCAAuB,CAAA;AACtE,EAAA,MAAM,IAAA,GAAO,qBAAA,CAAsB,CAAA,EAAG,EAAE,QAAQ,IAAA,CAAK,MAAA,EAAQ,GAAI,IAAA,CAAK,QAAA,GAAW,EAAE,QAAA,EAAU,IAAA,CAAK,UAAS,GAAI,EAAC,EAAI,GAAI,IAAA,CAAK,QAAA,GAAW,EAAE,QAAA,EAAU,KAAK,QAAA,EAAS,GAAI,EAAC,EAAI,aAAa,IAAA,KAAS,OAAA,EAAS,SAAA,EAAW,IAAA,KAAS,SAAS,CAAA;AACvO,EAAA,MAAM,GAAA,GAAM,GAAA,CAAI,eAAA,CAAgB,IAAI,IAAA,CAAK,CAAC,IAAI,CAAA,EAAG,EAAE,IAAA,EAAM,yBAAA,EAA2B,CAAC,CAAA;AACrF,EAAA,MAAM,WAAW,MAAM;AACrB,IAAA,MAAM,CAAA,GAAI,QAAA,CAAS,aAAA,CAAc,GAAG,CAAA;AACpC,IAAA,CAAA,CAAE,IAAA,GAAO,GAAA;AACT,IAAA,CAAA,CAAE,QAAA,GAAW,oBAAA;AACb,IAAA,CAAA,CAAE,KAAA,EAAM;AAAA,EACV,CAAA;AACA,EAAA,IAAI,SAAS,OAAA,EAAS;AAEpB,IAAA,MAAM,CAAA,GAAI,MAAA,CAAO,IAAA,CAAK,GAAA,EAAK,QAAQ,CAAA;AACnC,IAAA,IAAI,CAAA,IAAK,MAAA,GAAS,IAAA;AAAA,SACb,QAAA,EAAS;AAAA,EAChB,OAAO,QAAA,EAAS;AAChB,EAAA,UAAA,CAAW,MAAM,GAAA,CAAI,eAAA,CAAgB,GAAG,GAAG,GAAM,CAAA;AACnD;AAEO,SAAS,kBAAA,CAAmB,EAAE,OAAA,EAAS,WAAA,EAAa,UAAU,YAAA,GAAe,CAAA,EAAG,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,QAAA,EAAU,GAAG,MAAK,EAA4B;AACxJ,EAAA,MAAM,EAAE,GAAM,IAAA,EAAM,QAAQ,QAAA,EAAS,GAAI,eAAe,IAAI,CAAA;AAC5D,EAAA,MAAM,UAAU,CAAA,WAAA,EAAcQ,KAAAA,GAAQ,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AACvD,EAAA,MAAM,CAAA,GAAI,UAAU,OAAO,CAAA;AAC3B,EAAA,IAAI,CAAC,GAAG,OAAO,IAAA;AACf,EAAA,MAAM,OAAA,GAAU,QAAQ,MAAA,KAAW,SAAA;AACnC,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,MAAM,IAAA,GAAO,aAAa,CAAC,CAAA;AAC3B,EAAA,MAAM,cAAc,QAAA,CAAS,CAAA,EAAG,kBAAkB,CAAA,CAAE,MAAA,EAAQ,aAAa,CAAA;AACzE,EAAA,MAAM,KAAA,GAAQ,UAAU,OAAA,CAAQ,KAAA,EAAO,MAAM,CAAA,IAAK,SAAA,CAAU,CAAA,CAAE,MAAA,EAAQ,MAAM,CAAA;AAC5E,EAAA,MAAM,SAAA,GAAY,CAAA,CAAE,SAAA,IAAa,CAAA,CAAE,KAAA;AACnC,EAAA,MAAM,UAAU,IAAA,CAAK,CAAA,CAAE,UAAA,IAAc,OAAA,CAAQ,YAAY,UAAU,CAAA;AAEnE,EAAA,uBACET,IAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,iBAAA,EAAiB,OAAA,EAAS,iBAAA,EAAe,IAAA,EAAC,wBAAA,EAAwB,OAAA,GAAU,YAAY,iBAAA,EACnH,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAW,EAAA,CAAG,MAAA,EACpB,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,WAAQ,EAAA,EAAI,OAAA,EAAS,WAAW,EAAA,CAAG,MAAA,EAAQ,wBAAA,EAAsB,IAAA,EAC/D,QAAA,EAAA,WAAA,EACH,CAAA;AAAA,sBACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,WAAW,EAAA,CAAG,KAAA,EAAO,yBAAqB,IAAA,EAAC,cAAA,EAAc,OAAA,GAAU,OAAA,GAAU,WAChF,QAAA,EAAA,OAAA,GAAU,CAAA,CAAE,iBAAiB,CAAA,GAAI,CAAA,CAAE,iBAAiB,CAAA,EACvD;AAAA,KAAA,EACF,CAAA;AAAA,IACC,CAAA,CAAE,4BACDD,IAAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,2BAAA,EAAyB,IAAA,EACjD,QAAA,EAAA;AAAA,sBAAAC,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,KAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,mBAAmB,CAAA,EAAE,CAAA;AAAA,sBAChDA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,KAAA,EAAO,uBAAA,EAAqB,IAAA,EAC1C,QAAA,EAAA,CAAA,CAAE,SAAA,EACL;AAAA,KAAA,EACF,CAAA,GACE,IAAA;AAAA,IACH,CAAA,CAAE,wBACDD,IAAAA,CAAC,SAAI,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,uBAAA,EAAqB,IAAA,EAC7C,QAAA,EAAA;AAAA,sBAAAC,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,KAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EAAE,CAAA;AAAA,sBAC5CA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,KAAA,EAAO,uBAAA,EAAqB,IAAA,EAC1C,QAAA,EAAA,CAAA,CAAE,KAAA,EACL;AAAA,KAAA,EACF,CAAA,GACE,IAAA;AAAA,IACH,IAAA,IAAQ,CAAC,OAAA,mBACRA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,OAAA,EAAS,yBAAA,EAAuB,IAAA,EACjD,QAAA,kBAAAA,GAAAA,CAAC,WAAQ,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,IAAA,CAAK,CAAA,CAAE,iBAAiB,CAAA,EAAG,EAAE,IAAA,EAAM,CAAA,EAAG,CAAA,EACrE,CAAA,GACE,IAAA;AAAA,IACH,OAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,wBAAA,EAAsB,IAAA,EAC7C,QAAA,kBAAAA,GAAAA,CAAC,IAAA,EAAA,EAAK,OAAO,CAAA,CAAE,UAAA,IAAc,OAAA,CAAQ,UAAA,EAAY,IAAA,EAAM,IAAA,CAAK,CAAA,CAAE,OAAA,GAAU,mBAAA,GAAsB,iBAAiB,CAAA,EAAG,EAAE,IAAA,EAAM,OAAA,EAAS,CAAA,EAAG,GACxI,CAAA,GACE,IAAA;AAAA,IACH,KAAA,mBACCD,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,KAAA,EAAO,yBAAqB,IAAA,EAC3C,QAAA,EAAA;AAAA,sBAAAA,KAAC,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,QAAA,CAAA,CAAE,eAAe,CAAA;AAAA,QAAE;AAAA,OAAA,EAAE,CAAA;AAAA,sBAC5BC,GAAAA,CAAC,QAAA,EAAA,EAAQ,QAAA,EAAA,KAAA,EAAM;AAAA,KAAA,EACjB,CAAA,GACE,IAAA;AAAA,IACH,OAAA,mBACCA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,IAAA,EAAM,gCAA4B,IAAA,EAChD,QAAA,EAAA,CAAA,CAAE,qBAAqB,CAAA,EAC1B,CAAA,mBAEAD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,OAAA,EAAS,2BAAuB,IAAA,EAChD,QAAA,EAAA;AAAA,MAAA,WAAA,mBACCA,IAAAA,CAAAE,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAAF,KAAC,GAAA,EAAA,EAAE,IAAA,EAAM,YAAY,OAAA,EAAS,EAAE,UAAU,KAAA,EAAO,CAAA,EAAG,MAAA,EAAO,UAAS,GAAA,EAAI,UAAA,EAAW,WAAW,EAAA,CAAG,OAAA,EAAS,yBAAqB,IAAA,EAC5H,QAAA,EAAA;AAAA,UAAA,CAAA,CAAE,eAAe,CAAA;AAAA,0BAClBA,KAAC,MAAA,EAAA,EAAO,QAAA,EAAA;AAAA,YAAA,GAAA;AAAA,YAAE,EAAE,eAAe;AAAA,WAAA,EAAE;AAAA,SAAA,EAC/B,CAAA;AAAA,wBACAC,IAAC,GAAA,EAAA,EAAE,IAAA,EAAM,YAAY,OAAA,EAAS,EAAE,UAAU,IAAA,EAAM,GAAG,QAAA,EAAQ,IAAA,EAAC,WAAW,EAAA,CAAG,SAAA,EAAW,4BAAwB,IAAA,EAC1G,QAAA,EAAA,CAAA,CAAE,kBAAkB,CAAA,EACvB;AAAA,OAAA,EACF,CAAA,mBAEAD,IAAAA,CAAAE,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAAD,GAAAA,CAAC,YAAO,IAAA,EAAK,QAAA,EAAS,WAAW,EAAA,CAAG,OAAA,EAAS,OAAA,EAAS,MAAM,KAAK,YAAA,CAAa,SAAS,OAAA,EAAS,EAAE,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAU,GAAG,uBAAA,EAAqB,IAAA,EACnJ,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EACpB,CAAA;AAAA,wBACAA,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,WAAW,EAAA,CAAG,SAAA,EAAW,OAAA,EAAS,MAAM,KAAK,YAAA,CAAa,SAAS,UAAA,EAAY,EAAE,MAAA,EAAQ,QAAA,EAAU,QAAA,EAAU,GAAG,0BAAA,EAAwB,IAAA,EAC3J,QAAA,EAAA,CAAA,CAAE,kBAAkB,CAAA,EACvB;AAAA,OAAA,EACF,CAAA;AAAA,MAED,SAAA,mBACCA,GAAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,CAAA,CAAE,SAAA,GAAY,CAAA,CAAE,uBAAuB,CAAA,GAAI,CAAA,CAAE,mBAAmB,CAAA,EAAG,WAAA,EAAa,CAAA,CAAE,gBAAgB,CAAA,EAAG,WAAA,EAAa,CAAA,CAAE,oBAAoB,CAAA,EAAG,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,cAAA,EAAa,SAAA,EAAU,CAAA,GAC9N;AAAA,KAAA,EACN,CAAA;AAAA,IAED;AAAA,GAAA,EACH,CAAA;AAEJ;AAWO,SAAS,kBAAA,CAAmB,EAAE,QAAA,EAAU,WAAA,EAAa,UAAU,UAAA,EAAY,cAAA,EAAgB,EAAA,GAAK,EAAC,EAAG,YAAA,GAAe,CAAA,EAAG,GAAG,MAAK,EAA4B;AAC/J,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,cAAA,CAAe,IAAI,CAAA;AACjC,EAAA,MAAM,UAAU,CAAA,WAAA,EAAcQ,KAAAA,GAAQ,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AACvD,EAAA,MAAM,KAAA,GAAA,CAAS,KAAA,CAAM,OAAA,CAAQ,QAAQ,IAAI,QAAA,GAAW,EAAC,EAAG,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,CAAC,SAAA,CAAU,CAAC,CAAC,CAAA;AACpF,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAC/B,EAAA,MAAM,SAAS,CAAC,GAAG,MAAM,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,MAAA,KAAW,SAAS,CAAA,EAAG,GAAG,MAAM,MAAA,CAAO,CAAC,MAAM,CAAA,CAAE,MAAA,KAAW,SAAS,CAAC,CAAA;AAC9G,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,MAAM,cAAe,YAAA,GAAe,CAAA;AACpC,EAAA,uBACET,KAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,GAAG,IAAA,EAAM,iBAAA,EAAiB,OAAA,EAAS,iBAAA,EAAe,IAAA,EACpE,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,WAAQ,EAAA,EAAI,OAAA,EAAS,WAAW,EAAA,CAAG,KAAA,EACjC,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EACpB,CAAA;AAAA,oBACAA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,KAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EAAE,CAAA;AAAA,oBAC5CA,IAAC,IAAA,EAAA,EAAG,SAAA,EAAW,GAAG,IAAA,EACf,QAAA,EAAA,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,qBACXA,IAAC,IAAA,EAAA,EAAc,SAAA,EAAW,EAAA,CAAG,IAAA,EAC3B,QAAA,kBAAAA,GAAAA,CAAC,sBAAmB,OAAA,EAAS,CAAA,EAAI,GAAI,WAAA,GAAc,EAAE,WAAA,KAAgB,EAAC,EAAK,GAAI,QAAA,GAAW,EAAE,UAAS,GAAI,EAAC,EAAK,GAAI,UAAA,GAAa,EAAE,YAAW,GAAI,EAAC,EAAI,YAAA,EAAc,WAAA,EAAc,GAAG,MAAM,CAAA,EAAA,EADpL,CAAA,CAAE,EAEX,CACD,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;;;ACpLA,IAAM,MAAA,GAA2C;AAAA,EAC/C,IAAA,EAAM,MAAA;AAAA,EACN,WAAA,EAAa,aAAA;AAAA,EACb,UAAA,EAAY,YAAA;AAAA,EACZ,YAAA,EAAc,cAAA;AAAA,EACd,IAAA,EAAM,MAAA;AAAA,EACN,IAAA,EAAM,MAAA;AAAA,EACN,QAAA,EAAU,UAAA;AAAA,EACV,aAAA,EAAe,UAAA;AAAA,EACf,YAAA,EAAc,cAAA;AAAA,EACd,MAAA,EAAQ,QAAA;AAAA,EACR,IAAA,EAAM,MAAA;AAAA,EACN,KAAA,EAAO;AACT,CAAA;AAGA,IAAM,QAAA,GAAyC;AAAA,EAC7C,CAAC,QAAQ,MAAM,CAAA;AAAA,EACf,CAAC,QAAQ,MAAM,CAAA;AAAA,EACf,CAAC,YAAY,YAAY,CAAA;AAAA,EACzB,CAAC,aAAa,aAAa,CAAA;AAAA,EAC3B,CAAC,gBAAgB,MAAM,CAAA;AAAA,EACvB,CAAC,uBAAuB,cAAc,CAAA;AAAA,EACtC,CAAC,YAAY,UAAU,CAAA;AAAA,EACvB,CAAC,gEAAgE,QAAQ,CAAA;AAAA,EACzE,CAAC,uDAAuD,cAAc,CAAA;AAAA,EACtE,CAAC,iBAAiB,MAAM;AAC1B,CAAA;AAEA,IAAM,MAAA,GAAiC,EAAE,IAAA,EAAM,MAAA,EAAQ,YAAY,YAAA,EAAc,MAAA,EAAQ,YAAA,EAAc,IAAA,EAAM,oBAAoB,gBAAA,EAAkB,kBAAA,EAAoB,MAAA,EAAQ,QAAA,EAAU,UAAU,UAAA,EAAW;AAG9M,IAAM,GAAA,GAAM,0CAAA;AAGL,SAAS,iBAAiB,CAAA,EAAyC;AACxE,EAAA,OAAO,MAAM,CAAC,CAAA;AAChB;AAEA,SAAS,MAAM,CAAA,EAAyC;AACtD,EAAA,MAAM,GAAA,GAAM,OAAO,CAAA,CAAE,MAAA,KAAW,WAAW,CAAA,CAAE,MAAA,CAAO,aAAY,GAAI,EAAA;AACpE,EAAA,MAAM,UAAU,MAA+B;AAC7C,IAAA,MAAM,KAAA,GAAQ,OAAO,CAAA,CAAE,YAAA,KAAiB,QAAA,GAAW,CAAA,CAAE,YAAA,CAAa,WAAA,EAAY,CAAE,OAAA,CAAQ,QAAA,EAAU,GAAG,CAAA,GAAI,EAAA;AACzG,IAAA,KAAA,MAAW,CAAC,EAAA,EAAI,GAAG,CAAA,IAAK,QAAA,MAAc,EAAA,CAAG,IAAA,CAAK,KAAK,CAAA,EAAG,OAAO,GAAA;AAC7D,IAAA,OAAO,IAAA;AAAA,EACT,CAAA;AACA,EAAA,IAAI,GAAA,IAAO,GAAA,KAAQ,OAAA,IAAW,MAAA,CAAO,GAAG,CAAA,EAAG;AAEzC,IAAA,MAAM,IAAI,OAAA,EAAQ;AAClB,IAAA,OAAO,GAAA,KAAQ,WAAW,CAAA,KAAM,aAAA,IAAiB,MAAM,YAAA,CAAA,GAAgB,CAAA,GAAI,OAAO,GAAG,CAAA;AAAA,EACvF;AACA,EAAA,OAAO,OAAA,EAAQ,KAAM,GAAA,KAAQ,OAAA,GAAU,OAAA,GAAU,IAAA,CAAA;AACnD;AAYO,SAAS,YAAA,CAAa,CAAA,EAAgB,CAAA,EAAoB,OAAA,GAA+B,EAAC,EAAW;AAC1G,EAAA,MAAM,MAAA,GAAS,OAAA,CAAQ,QAAA,GAAW,CAAC,CAAA;AACnC,EAAA,IAAI,OAAO,WAAW,QAAA,IAAY,MAAA,CAAO,MAAK,EAAG,OAAO,OAAO,IAAA,EAAK;AACpE,EAAA,MAAM,GAAA,GAAM,OAAO,CAAA,CAAE,YAAA,KAAiB,WAAW,CAAA,CAAE,YAAA,CAAa,MAAK,GAAI,EAAA;AACzE,EAAA,MAAM,GAAA,GAAM,MAAM,CAAC,CAAA;AACnB,EAAA,MAAM,KAAA,GAAQ,GAAA,IAAO,CAAC,GAAA,CAAI,KAAK,GAAG,CAAA;AAElC,EAAA,IAAI,KAAA,IAAS,OAAA,CAAQ,IAAA,CAAK,GAAG,GAAG,OAAO,GAAA;AACvC,EAAA,IAAI,GAAA,EAAK;AACP,IAAA,MAAM,IAAA,GAAO,CAAA,CAAE,CAAA,eAAA,EAAkB,GAAG,CAAA,CAAW,CAAA;AAC/C,IAAA,IAAI,GAAA,KAAQ,MAAA,IAAU,GAAA,KAAQ,aAAA,IAAiB,GAAA,KAAQ,cAAc,OAAO,KAAA,IAAS,GAAA,KAAQ,OAAA,GAAU,GAAA,GAAM,IAAA;AAC7G,IAAA,MAAM,QAAA,GAAW,OAAO,CAAA,CAAE,KAAA,KAAU,WAAW,CAAA,CAAE,KAAA,CAAM,MAAK,GAAI,EAAA;AAChE,IAAA,MAAM,KAAA,GAAQ,QAAA,GAAY,MAAA,CAAO,QAAA,CAAS,WAAA,EAAY,CAAE,OAAA,CAAQ,OAAA,EAAS,GAAG,CAAC,CAAA,IAAK,QAAA,GAAY,EAAA;AAC9F,IAAA,MAAM,KAAA,GAAQ,OAAO,CAAA,CAAE,KAAA,KAAU,YAAY,WAAA,CAAY,IAAA,CAAK,CAAA,CAAE,KAAA,CAAM,MAAM,CAAA,GAAI,CAAA,CAAE,KAAA,CAAM,MAAK,GAAI,EAAA;AACjG,IAAA,OAAO,CAAA,EAAG,IAAI,CAAA,EAAG,KAAA,GAAQ,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,GAAK,EAAE,CAAA,EAAG,KAAA,GAAQ,CAAA,0BAAA,EAAS,KAAK,KAAK,EAAE,CAAA,CAAA;AAAA,EAC3E;AACA,EAAA,OAAO,KAAA,GAAQ,GAAA,GAAM,CAAA,CAAE,wBAAwB,CAAA;AACjD;ACvEA,IAAM,IAAA,GAAO,CAAC,CAAA,KAAgB,CAAA,KAAM,cAAc,MAAA,GAAS,CAAA,KAAM,WAAW,SAAA,GAAY,SAAA;AAEjF,SAAS,UAAA,CAAW,EAAE,OAAA,EAAS,SAAA,GAAY,OAAO,QAAA,EAAU,OAAA,EAAS,YAAA,GAAe,CAAA,EAAG,YAAY,EAAA,GAAK,EAAC,EAAG,GAAG,MAAK,EAAoB;AAC7I,EAAA,MAAM,EAAE,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK,GAAI,eAAe,IAAI,CAAA;AAC/C,EAAA,MAAM,UAAU,CAAA,WAAA,EAAcQ,KAAAA,GAAQ,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AACvD,EAAA,MAAM,KAAA,GAAA,CAAS,MAAM,OAAA,CAAQ,OAAO,IAAI,OAAA,GAAU,IAAI,MAAA,CAAO,CAAC,MAAmB,CAAC,CAAC,KAAK,OAAO,CAAA,KAAM,YAAY,OAAO,CAAA,CAAE,OAAO,QAAQ,CAAA;AACzI,EAAA,IAAI,CAAC,QAAA,IAAY,KAAA,CAAM,WAAW,CAAA,IAAK,CAAC,WAAW,OAAO,IAAA;AAC1D,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,uBACET,KAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,GAAG,IAAA,EAAM,iBAAA,EAAiB,OAAA,EAAS,iBAAA,EAAe,IAAA,EACpE,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,WAAQ,EAAA,EAAI,OAAA,EAAS,WAAW,EAAA,CAAG,KAAA,EACjC,QAAA,EAAA,CAAA,CAAE,cAAc,CAAA,EACnB,CAAA;AAAA,IACC,QAAA,mBACCD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,GAAG,KAAA,EAAO,IAAA,EAAK,OAAA,EAAQ,uBAAA,EAAsB,SAAA,EAC3D,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,GAAA,EAAA,EAAG,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EAAE,CAAA;AAAA,MACtB,OAAA,mBACCD,IAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,OAAA,EAAS,OAAA,EAAS,eAAA,EAAa,IAAA,EACvE,QAAA,EAAA;AAAA,QAAA,CAAA,CAAE,eAAe,CAAA;AAAA,wBAClBA,KAAC,MAAA,EAAA,EAAO,QAAA,EAAA;AAAA,UAAA,GAAA;AAAA,UAAE,EAAE,cAAc;AAAA,SAAA,EAAE;AAAA,OAAA,EAC9B,CAAA,GACE;AAAA,KAAA,EACN,IACE,KAAA,CAAM,MAAA,KAAW,CAAA,mBACnBC,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,KAAA,EAAQ,YAAE,aAAa,CAAA,EAAE,oBAE1CA,GAAAA,CAAC,QAAG,SAAA,EAAW,EAAA,CAAG,IAAA,EACf,QAAA,EAAA,KAAA,CAAM,IAAI,CAAC,CAAA,qBACVD,IAAAA,CAAC,IAAA,EAAA,EAAc,WAAW,EAAA,CAAG,IAAA,EAAM,gBAAA,EAAc,IAAA,EAAC,yBAAuB,OAAO,CAAA,CAAE,WAAW,QAAA,GAAW,CAAA,CAAE,SAAS,SAAA,EACjH,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,uBAAA,EAAqB,IAAA,EAC9C,QAAA,EAAA,SAAA,CAAU,CAAA,CAAE,MAAA,EAAQ,MAAM,CAAA,IAAK,EAAA,EAClC,CAAA;AAAA,MAAQ,GAAA;AAAA,sBACRA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,QAAQ,cAAA,EAAc,IAAA,CAAK,CAAA,CAAE,MAAM,GACpD,QAAA,EAAA,QAAA,CAAS,CAAA,EAAG,eAAA,EAAiB,CAAA,CAAE,MAAM,CAAA,EACxC,CAAA;AAAA,sBACAD,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,IAAA,EACjB,QAAA,EAAA;AAAA,QAAA,GAAA,CAAI,EAAE,YAAY,CAAA,mBAAIA,IAAAA,CAAAE,UAAA,EAAE,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UAAI,YAAA,CAAa,EAAE,YAAA,EAAc,CAAA,CAAE,YAAA,IAAgB,EAAA,EAAI,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,EAAG,CAAC;AAAA,SAAA,EAAE,CAAA,GAAM,IAAA;AAAA,QAC5H,CAAA,CAAE,YAAA,mBACDF,IAAAA,CAAAE,UAAA,EACG,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,0BACDD,GAAAA,CAAC,IAAA,EAAA,EAAK,OAAO,CAAA,CAAE,YAAA,EAAc,MAAM,IAAA,CAAK,CAAA,CAAE,kBAAkB,CAAA,EAAG,EAAE,MAAM,IAAA,CAAK,CAAA,CAAE,YAAY,CAAA,IAAK,EAAA,EAAI,CAAA,EAAG;AAAA,SAAA,EACxG,IACE,CAAA,CAAE,UAAA,mBACJD,IAAAA,CAAAE,UAAA,EACG,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,0BACDD,GAAAA,CAAC,IAAA,EAAA,EAAK,OAAO,CAAA,CAAE,UAAA,EAAY,MAAM,IAAA,CAAK,CAAA,CAAE,kBAAkB,CAAA,EAAG,EAAE,MAAM,IAAA,CAAK,CAAA,CAAE,UAAU,CAAA,IAAK,EAAA,EAAI,CAAA,EAAG;AAAA,SAAA,EACpG,CAAA,GACE;AAAA,OAAA,EACN;AAAA,KAAA,EAAA,EApBO,CAAA,CAAE,EAqBX,CACD,CAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ;AAWO,SAAS,cAAA,CAAe,EAAE,QAAA,EAAU,YAAA,GAAe,CAAA,EAAG,WAAA,EAAa,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,GAAG,IAAA,EAAK,EAAwB;AAC7H,EAAA,MAAM,EAAE,CAAA,EAAG,MAAA,EAAQ,IAAA,EAAK,GAAI,eAAe,IAAI,CAAA;AAC/C,EAAA,MAAM,UAAU,CAAA,YAAA,EAAeQ,KAAAA,GAAQ,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAC,CAAA,CAAA;AACxD,EAAA,MAAM,KAAA,GAAA,CAAS,MAAM,OAAA,CAAQ,QAAQ,IAAI,QAAA,GAAW,IAAI,MAAA,CAAO,CAAC,MAAwB,CAAC,CAAC,KAAK,OAAO,CAAA,KAAM,YAAY,OAAO,CAAA,CAAE,iBAAiB,QAAQ,CAAA;AAC1J,EAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAC/B,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,uBACET,KAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,GAAG,IAAA,EAAM,iBAAA,EAAiB,OAAA,EAAS,kBAAA,EAAgB,IAAA,EACrE,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,WAAQ,EAAA,EAAI,OAAA,EAAS,WAAW,EAAA,CAAG,KAAA,EACjC,QAAA,EAAA,CAAA,CAAE,eAAe,CAAA,EACpB,CAAA;AAAA,oBACAA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,EAAA,CAAG,IAAA,EACf,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,EAAG,CAAA,qBACbD,KAAC,IAAA,EAAA,EAAkC,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,iBAAA,EAAe,IAAA,EAAC,4BAAA,EAA4B,gBAAA,CAAiB,CAAC,CAAA,IAAK,SAAA,EAAW,wBAAA,EAAwB,OAAO,CAAA,CAAE,MAAA,KAAW,QAAA,GAAW,CAAA,CAAE,SAAS,SAAA,EACrM,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,wBAAA,EAAsB,IAAA,EAAE,uBAAa,CAAA,EAAG,CAAA,EAAG,WAAA,GAAc,EAAE,QAAA,EAAU,WAAA,EAAY,GAAI,EAAE,CAAA,EAAE,CAAA;AAAA,MAC9F,SAAA,CAAU,EAAE,MAAA,EAAQ,MAAM,oBAAID,IAAAA,CAAAE,UAAA,EAAE,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBAAGD,GAAAA,CAAC,MAAA,EAAA,EAAM,oBAAU,CAAA,CAAE,MAAA,EAAQ,MAAM,CAAA,EAAE;AAAA,OAAA,EAAO,CAAA,GAAM,IAAA;AAAA,MAAK,OAAA;AAAA,MAAG,GAAA;AAAA,sBAC5FA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,MAAA,EAAQ,cAAA,EAAc,EAAE,MAAA,KAAW,QAAA,GAAW,YAAY,CAAA,CAAE,MAAA,KAAW,SAAS,MAAA,GAAS,SAAA,EAC1G,mBAAS,CAAA,EAAG,gBAAA,EAAkB,CAAA,CAAE,MAAM,CAAA,EACzC,CAAA;AAAA,MACC,EAAE,OAAA,mBACDD,KAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,IAAA,EACjB,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,wBACDC,GAAAA,CAAC,IAAA,EAAA,EAAK,OAAO,CAAA,CAAE,OAAA,EAAS,MAAM,IAAA,CAAK,CAAA,CAAE,gBAAgB,CAAA,EAAG,EAAE,MAAM,IAAA,CAAK,CAAA,CAAE,OAAO,CAAA,IAAK,EAAA,EAAI,CAAA,EAAG;AAAA,OAAA,EAC5F,CAAA,GACE;AAAA,KAAA,EAAA,EAXG,GAAG,CAAA,CAAE,YAAY,IAAI,CAAC,CAAA,CAY/B,CACD,CAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;ACtGA,SAAS,UAAU,MAAA,EAA2D;AAC5E,EAAA,MAAM,MAAM,qBAAA,EAAsB;AAClC,EAAA,OAAO,MAAA,IAAU,KAAK,MAAA,IAAU,IAAA;AAClC;AAEA,IAAM,OAAA,GAAU,CAAC,CAAA,KAAuB,CAAA,YAAa,QAAQ,CAAA,GAAI,IAAI,MAAM,gBAAgB,CAAA;AAG3F,IAAM,GAAA,uBAAU,OAAA,EAAwB;AACxC,IAAI,GAAA,GAAM,CAAA;AACV,SAAS,UAAU,CAAA,EAAoC;AACrD,EAAA,IAAI,CAAC,GAAG,OAAO,MAAA;AACf,EAAA,IAAI,CAAA,GAAI,GAAA,CAAI,GAAA,CAAI,CAAC,CAAA;AACjB,EAAA,IAAI,CAAC,GAAG,GAAA,CAAI,GAAA,CAAI,GAAI,CAAA,GAAI,CAAA,CAAA,EAAI,EAAE,GAAG,CAAA,CAAG,CAAA;AACpC,EAAA,OAAO,CAAA;AACT;AAqBA,SAAS,aAAA,CAAiB,SAAA,EAAuG,MAAA,EAAiC,OAAA,EAA2C,GAAA,EAAqC;AAGhP,EAAA,MAAM,QAAQ,CAAA,EAAG,SAAA,CAAU,MAAM,CAAC,IAAI,GAAG,CAAA,CAAA;AACzC,EAAA,MAAM,QAAQ,CAAC,MAAA,MAA8D,EAAE,MAAA,EAAQ,OAAO,EAAC,EAAG,KAAA,EAAO,IAAA,EAAM,QAAQ,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,KAAA,EAAO,MAAM,KAAA,EAAM,CAAA;AAChK,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIE,QAAAA;AAAA,IAA6B,MACrD,OAAA,GACI,EAAE,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,OAAA,CAAQ,KAAA,IAAS,EAAC,EAAG,KAAA,EAAO,IAAA,EAAM,QAAQ,OAAA,CAAQ,SAAA,EAAW,UAAA,IAAc,IAAA,EAAM,OAAA,EAAS,CAAC,CAAC,OAAA,CAAQ,SAAA,EAAW,aAAA,EAAe,KAAA,EAAO,OAAA,CAAQ,WAAA,IAAe,IAAA,EAAM,KAAA,EAAM,GAClM,MAAM,SAAS;AAAA,GACrB;AACA,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,KAAA,GAAQJ,OAA+B,IAAI,CAAA;AACjD,EAAA,MAAM,IAAA,GAAOA,OAA+B,IAAI,CAAA;AAChD,EAAA,MAAM,QAAA,GAAWA,OAAO,SAAS,CAAA;AACjC,EAAA,QAAA,CAAS,OAAA,GAAU,SAAA;AAEnB,EAAA,MAAM,KAAA,GAAQW,YAAY,MAAM;AAC9B,IAAA,KAAA,CAAM,SAAS,KAAA,EAAM;AACrB,IAAA,IAAA,CAAK,SAAS,KAAA,EAAM;AACpB,IAAA,cAAA,CAAe,KAAK,CAAA;AACpB,IAAA,IAAI,CAAC,MAAA,EAAQ;AAEX,MAAA,QAAA,CAAS,KAAA,CAAM,SAAS,CAAC,CAAA;AACzB,MAAA;AAAA,IACF;AACA,IAAA,MAAM,GAAA,GAAM,IAAI,eAAA,EAAgB;AAChC,IAAA,KAAA,CAAM,OAAA,GAAU,GAAA;AAChB,IAAA,QAAA,CAAS,CAAC,CAAA,KAAO,CAAA,CAAE,KAAA,KAAU,KAAA,IAAS,EAAE,KAAA,CAAM,MAAA,GAAS,EAAE,GAAG,GAAG,KAAA,EAAO,IAAA,EAAK,GAAI,KAAA,CAAM,SAAS,CAAE,CAAA;AAChG,IAAA,QAAA,CAAS,OAAA,CAAQ,MAAA,EAAQ,IAAA,EAAM,GAAA,CAAI,MAAM,CAAA,CAAE,IAAA;AAAA,MACzC,CAAC,IAAA,KAAS,CAAC,GAAA,CAAI,OAAO,OAAA,IAAW,QAAA,CAAS,EAAE,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,KAAA,EAAO,IAAA,EAAM,MAAA,EAAQ,IAAA,CAAK,SAAA,EAAW,UAAA,IAAc,IAAA,EAAM,SAAS,CAAC,CAAC,IAAA,CAAK,SAAA,EAAW,eAAe,KAAA,EAAO,IAAA,CAAK,WAAA,IAAe,IAAA,EAAM,OAAO,CAAA;AAAA,MACjO,CAAC,CAAA,KAAe,CAAC,GAAA,CAAI,MAAA,CAAO,OAAA,IAAW,QAAA,CAAS,CAAC,CAAA,KAAO,CAAA,CAAE,KAAA,KAAU,KAAA,GAAQ,EAAE,GAAG,CAAA,EAAG,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,OAAA,CAAQ,CAAC,CAAA,KAAM,EAAE,GAAG,KAAA,CAAM,OAAO,CAAA,EAAG,KAAA,EAAO,OAAA,CAAQ,CAAC,GAAI;AAAA,KACtK;AAAA,EAEF,CAAA,EAAG,CAAC,MAAA,EAAQ,KAAK,CAAC,CAAA;AAElB,EAAAN,UAAU,MAAM;AACd,IAAA,IAAI,EAAE,OAAA,IAAW,KAAA,CAAM,KAAA,KAAU,QAAQ,KAAA,EAAM;AAC/C,IAAA,OAAO,MAAM;AACX,MAAA,KAAA,CAAM,SAAS,KAAA,EAAM;AACrB,MAAA,IAAA,CAAK,SAAS,KAAA,EAAM;AAAA,IACtB,CAAA;AAAA,EAGF,CAAA,EAAG,CAAC,KAAA,EAAO,KAAK,CAAC,CAAA;AAEjB,EAAA,MAAM,QAAA,GAAWM,YAAY,MAAM;AACjC,IAAA,IAAI,CAAC,UAAU,KAAA,CAAM,KAAA,KAAU,SAAS,CAAC,KAAA,CAAM,WAAW,WAAA,EAAa;AACvE,IAAA,MAAM,GAAA,GAAM,IAAI,eAAA,EAAgB;AAChC,IAAA,IAAA,CAAK,OAAA,GAAU,GAAA;AACf,IAAA,cAAA,CAAe,IAAI,CAAA;AACnB,IAAA,QAAA,CAAS,QAAQ,MAAA,EAAQ,KAAA,CAAM,MAAA,EAAQ,GAAA,CAAI,MAAM,CAAA,CAAE,IAAA;AAAA,MACjD,CAAC,IAAA,KAAS;AAER,QAAA,IAAI,GAAA,CAAI,OAAO,OAAA,EAAS;AACxB,QAAA,cAAA,CAAe,KAAK,CAAA;AACpB,QAAA,QAAA,CAAS,CAAC,CAAA,KAAO,CAAA,CAAE,KAAA,KAAU,KAAA,GAAQ,IAAI,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,CAAC,GAAG,CAAA,CAAE,OAAO,GAAI,IAAA,CAAK,SAAS,EAAG,CAAA,EAAG,MAAA,EAAQ,KAAK,SAAA,EAAW,UAAA,IAAc,IAAA,EAAM,OAAA,EAAS,CAAC,CAAC,IAAA,CAAK,SAAA,EAAW,aAAA,EAAe,OAAO,IAAA,CAAK,WAAA,IAAe,EAAE,KAAA,EAAO,KAAA,EAAO,MAAO,CAAA;AAAA,MACvO,CAAA;AAAA,MACA,CAAC,CAAA,KAAe;AACd,QAAA,IAAI,GAAA,CAAI,OAAO,OAAA,EAAS;AACxB,QAAA,cAAA,CAAe,KAAK,CAAA;AACpB,QAAA,QAAA,CAAS,CAAC,CAAA,KAAO,CAAA,CAAE,KAAA,KAAU,KAAA,GAAQ,CAAA,GAAI,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,OAAA,CAAQ,CAAC,GAAI,CAAA;AAAA,MACvE;AAAA,KACF;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,KAAA,EAAO,KAAA,CAAM,KAAA,EAAO,KAAA,CAAM,OAAA,EAAS,KAAA,CAAM,MAAA,EAAQ,WAAW,CAAC,CAAA;AAEzE,EAAA,MAAM,OAAO,KAAA,CAAM,KAAA,KAAU,KAAA,GAAQ,KAAA,GAAQ,MAAM,SAAS,CAAA;AAC5D,EAAA,OAAO,EAAE,QAAQ,IAAA,CAAK,MAAA,EAAQ,OAAO,IAAA,CAAK,KAAA,EAAO,KAAA,EAAO,IAAA,CAAK,KAAA,EAAO,OAAA,EAAS,KAAK,OAAA,EAAS,WAAA,EAAa,KAAA,CAAM,KAAA,KAAU,KAAA,IAAS,WAAA,EAAa,YAAY,IAAA,CAAK,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,QAAA,EAAS;AAChM;AAWO,SAAS,iBAAA,CAAkB,EAAE,MAAA,EAAQ,KAAA,GAAQ,IAAI,OAAA,EAAQ,GAA8B,EAAC,EAA+B;AAC5H,EAAA,OAAO,aAAA,CAAqB,CAAC,CAAA,EAAG,KAAA,EAAO,MAAA,KAAW,CAAA,CAAE,QAAA,CAAS,MAAA,CAAO,EAAE,KAAA,EAAO,GAAI,KAAA,GAAQ,EAAE,KAAA,EAAM,GAAI,EAAC,EAAG,EAAG,EAAE,MAAA,EAAQ,CAAA,EAAG,SAAA,CAAU,MAAM,CAAA,EAAG,OAAA,EAAS,CAAA,OAAA,EAAU,KAAK,CAAA,CAAE,CAAA;AACxK;AAKO,SAAS,kBAAA,CAAmB,EAAE,MAAA,EAAQ,KAAA,GAAQ,IAAI,OAAA,EAAQ,GAA+B,EAAC,EAAwC;AACvI,EAAA,OAAO,aAAA,CAA8B,CAAC,CAAA,EAAG,KAAA,EAAO,MAAA,KAAW,CAAA,CAAE,QAAA,CAAS,eAAA,CAAgB,EAAE,KAAA,EAAO,GAAI,KAAA,GAAQ,EAAE,KAAA,EAAM,GAAI,EAAC,EAAG,EAAG,EAAE,MAAA,EAAQ,CAAA,EAAG,SAAA,CAAU,MAAM,CAAA,EAAG,OAAA,EAAS,CAAA,QAAA,EAAW,KAAK,CAAA,CAAE,CAAA;AAC3L;AA4BO,SAAS,gBAAA,CAAiB,IAA+B,EAAE,MAAA,EAAQ,SAAS,IAAA,EAAK,GAA6B,EAAC,EAA2B;AAC/I,EAAA,MAAM,CAAA,GAAI,UAAU,MAAM,CAAA;AAC1B,EAAA,MAAM,QAAQ,OAAA,KAAY,MAAA;AAE1B,EAAA,MAAM,QAAQ,CAAA,EAAG,SAAA,CAAU,CAAC,CAAC,CAAA,CAAA,EAAI,MAAM,EAAE,CAAA,CAAA;AACzC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIP,QAAAA,CAA6F,MAAO,KAAA,GAAQ,EAAE,MAAA,EAAQ,OAAA,GAAU,OAAA,GAAU,WAAA,EAAa,KAAA,EAAO,SAAS,KAAA,EAAO,IAAA,EAAM,KAAA,EAAM,GAAI,EAAE,MAAA,EAAQ,SAAA,EAAW,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,KAAA,EAAQ,CAAA;AAC/Q,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,MAAA,GAASJ,OAA+B,IAAI,CAAA;AAClD,EAAA,MAAM,YAAA,GAAeA,MAAAA,CAAO,KAAA,GAAQ,KAAA,GAAQ,IAAI,CAAA;AAEhD,EAAA,MAAM,IAAA,GAAOW,WAAAA;AAAA,IACX,CAAC,MAAA,KAAoB;AACnB,MAAA,MAAA,CAAO,SAAS,KAAA,EAAM;AACtB,MAAA,aAAA,CAAc,KAAK,CAAA;AACnB,MAAA,IAAI,CAAC,CAAA,IAAK,CAAC,EAAA,EAAI;AACb,QAAA,QAAA,CAAS,EAAE,QAAQ,SAAA,EAAW,KAAA,EAAO,MAAM,KAAA,EAAO,IAAA,EAAM,OAAO,CAAA;AAC/D,QAAA;AAAA,MACF;AACA,MAAA,MAAM,GAAA,GAAM,IAAI,eAAA,EAAgB;AAChC,MAAA,MAAA,CAAO,OAAA,GAAU,GAAA;AACjB,MAAA,IAAI,MAAA,gBAAsB,IAAI,CAAA;AAAA,WACzB,QAAA,CAAS,CAAC,CAAA,KAAO,CAAA,CAAE,UAAU,KAAA,IAAS,CAAA,CAAE,KAAA,GAAQ,EAAE,GAAG,CAAA,EAAG,OAAO,IAAA,EAAK,GAAI,EAAE,MAAA,EAAQ,SAAA,EAAW,OAAO,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,KAAA,EAAQ,CAAA;AACpI,MAAA,CAAA,CAAE,QAAA,CAAS,MAAM,EAAA,EAAI,EAAE,QAAQ,GAAA,CAAI,MAAA,EAAQ,CAAA,CAAE,IAAA;AAAA,QAC3C,CAAC,CAAA,KAAM;AACL,UAAA,IAAI,GAAA,CAAI,OAAO,OAAA,EAAS;AACxB,UAAA,aAAA,CAAc,KAAK,CAAA;AACnB,UAAA,QAAA,CAAS,IAAI,EAAE,MAAA,EAAQ,SAAS,KAAA,EAAO,CAAA,EAAG,OAAO,IAAA,EAAM,KAAA,EAAM,GAAI,EAAE,QAAQ,WAAA,EAAa,KAAA,EAAO,MAAM,KAAA,EAAO,IAAA,EAAM,OAAO,CAAA;AAAA,QAC3H,CAAA;AAAA,QACA,CAAC,CAAA,KAAe;AACd,UAAA,IAAI,GAAA,CAAI,OAAO,OAAA,EAAS;AACxB,UAAA,aAAA,CAAc,KAAK,CAAA;AAEnB,UAAA,QAAA,CAAS,CAAC,CAAA,KAAO,CAAA,CAAE,KAAA,KAAU,KAAA,IAAS,EAAE,KAAA,GAAQ,EAAE,GAAG,CAAA,EAAG,KAAA,EAAO,OAAA,CAAQ,CAAC,CAAA,EAAE,GAAI,EAAE,MAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,OAAA,CAAQ,CAAC,CAAA,EAAG,KAAA,EAAQ,CAAA;AAAA,QAC3I;AAAA,OACF;AAAA,IACF,CAAA;AAAA,IACA,CAAC,CAAA,EAAG,EAAA,EAAI,KAAK;AAAA,GACf;AAEA,EAAAN,UAAU,MAAM;AACd,IAAA,IAAI,YAAA,CAAa,OAAA,KAAY,KAAA,EAAO,IAAA,CAAK,KAAK,CAAA;AAC9C,IAAA,YAAA,CAAa,OAAA,GAAU,IAAA;AACvB,IAAA,OAAO,MAAM,MAAA,CAAO,OAAA,EAAS,KAAA,EAAM;AAAA,EAErC,CAAA,EAAG,CAAC,IAAA,EAAM,KAAK,CAAC,CAAA;AAEhB,EAAA,MAAM,IAAA,GAAO,MAAM,KAAA,KAAU,KAAA;AAC7B,EAAA,MAAM,KAAA,GAAQ,IAAA,GAAO,KAAA,CAAM,KAAA,GAAQ,IAAA;AACnC,EAAA,MAAM,WAAA,GAAc,CAAC,CAAC,IAAA,IAAQ,CAAC,CAAC,KAAA,IAAS,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AACzD,EAAA,MAAM,OAAA,GAAU,MAAM,OAAA,IAAW,GAAA;AACjC,EAAA,MAAM,KAAA,GAAQ,MAAM,KAAA,IAAS,GAAA;AAC7B,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,WAAA,EAAa;AAClB,IAAA,MAAM,EAAA,GAAK,KAAK,GAAA,EAAI;AACpB,IAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,MAAA,IAAI,KAAK,GAAA,EAAI,GAAI,EAAA,IAAM,KAAA,gBAAqB,KAAK,CAAA;AAAA,gBACvC,IAAI,CAAA;AAAA,IAChB,GAAG,OAAO,CAAA;AACV,IAAA,OAAO,MAAM,cAAc,KAAK,CAAA;AAAA,EAClC,GAAG,CAAC,WAAA,EAAa,OAAA,EAAS,KAAA,EAAO,IAAI,CAAC,CAAA;AAEtC,EAAA,MAAM,WAAW,KAAA,KAAU,IAAA;AAC3B,EAAA,MAAM,MAAA,GAASM,YAAY,MAAM,IAAA,CAAK,QAAQ,CAAA,EAAG,CAAC,IAAA,EAAM,QAAQ,CAAC,CAAA;AACjE,EAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,GAAO,KAAA,CAAM,SAAS,SAAA,EAAW,KAAA,EAAO,KAAA,EAAO,IAAA,GAAO,MAAM,KAAA,GAAQ,IAAA,EAAM,UAAA,EAAY,IAAA,IAAQ,YAAY,MAAA,EAAO;AACpI;;;AC7NA,IAAMb,GAAAA,GAAK;AAAA;AAAA,EAET,gBAAA,EAAkB,+BAAA;AAAA,EAClB,gCAAA,EAAkC,mEAAA;AAAA,EAClC,mCAAA,EAAqC,yFAAA;AAAA,EACrC,gCAAA,EAAkC,6EAAA;AAAA,EAClC,6BAAA,EAA+B,mEAAA;AAAA,EAC/B,gCAAA,EAAkC,8DAAA;AAAA,EAClC,2BAAA,EAA6B,2CAAA;AAAA,EAC7B,+BAAA,EAAiC,8DAAA;AAAA,EACjC,yCAAA,EAA2C,0EAAA;AAAA,EAC3C,4BAAA,EAA8B,iDAAA;AAAA,EAC9B,4BAAA,EAA8B,yEAAA;AAAA;AAAA,EAE9B,YAAA,EAAc,QAAA;AAAA,EACd,YAAA,EAAc,wBAAA;AAAA,EACd,cAAA,EAAgB,iBAAA;AAAA,EAChB,WAAA,EAAa,gBAAA;AAAA;AAAA,EAEb,aAAA,EAAe,QAAA;AAAA,EACf,aAAA,EAAe,wCAAA;AAAA,EACf,2BAAA,EAA6B,8BAAA;AAAA,EAC7B,sBAAA,EAAwB,wBAAA;AAAA,EACxB,qBAAA,EAAuB,8BAAA;AAAA,EACvB,qBAAA,EAAuB,cAAA;AAAA,EACvB,qBAAA,EAAuB,QAAA;AAAA,EACvB,wBAAA,EAA0B,UAAA;AAAA,EAC1B,uBAAA,EAAyB,YAAA;AAAA,EACzB,gBAAA,EAAkB,iGAAA;AAAA,EAClB,YAAA,EAAc,gBAAA;AAAA,EACd,mBAAA,EAAqB,yBAAA;AAAA;AAAA,EAErB,gBAAA,EAAkB,oCAAA;AAAA,EAClB,gBAAA,EAAkB,6GAAA;AAAA,EAClB,kBAAA,EAAoB,kBAAA;AAAA,EACpB,mBAAA,EAAqB,uBAAA;AAAA,EACrB,mBAAA,EAAqB,6BAAA;AAAA,EACrB,uBAAA,EAAyB,0BAAA;AAAA,EACzB,uBAAA,EAAyB,2BAAA;AAAA,EACzB,0BAAA,EAA4B,mBAAA;AAAA,EAC5B,yBAAA,EAA2B,qBAAA;AAAA,EAC3B,iBAAA,EAAmB,kBAAA;AAAA,EACnB,sBAAA,EAAwB,iCAAA;AAAA,EACxB,uBAAA,EAAyB,8BAAA;AAAA,EACzB,kBAAA,EAAoB,wBAAA;AAAA,EACpB,wBAAA,EAA0B,iCAAA;AAAA,EAC1B,eAAA,EAAiB,iCAAA;AAAA,EACjB,gBAAA,EAAkB,yEAAA;AAAA,EAClB,kBAAA,EAAoB,2BAAA;AAAA,EACpB,oBAAA,EAAsB;AACxB,CAAA;AAKA,IAAMC,GAAAA,GAAuB;AAAA,EAC3B,gBAAA,EAAkB,+BAAA;AAAA,EAClB,gCAAA,EAAkC,kDAAA;AAAA,EAClC,mCAAA,EAAqC,yEAAA;AAAA,EACrC,gCAAA,EAAkC,uEAAA;AAAA,EAClC,6BAAA,EAA+B,sDAAA;AAAA,EAC/B,gCAAA,EAAkC,gDAAA;AAAA,EAClC,2BAAA,EAA6B,kCAAA;AAAA,EAC7B,+BAAA,EAAiC,4EAAA;AAAA,EACjC,yCAAA,EAA2C,0EAAA;AAAA,EAC3C,4BAAA,EAA8B,kDAAA;AAAA,EAC9B,4BAAA,EAA8B,oDAAA;AAAA,EAC9B,YAAA,EAAc,UAAA;AAAA,EACd,YAAA,EAAc,2BAAA;AAAA,EACd,cAAA,EAAgB,kBAAA;AAAA,EAChB,WAAA,EAAa,eAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA,EACf,aAAA,EAAe,uCAAA;AAAA,EACf,2BAAA,EAA6B,0BAAA;AAAA,EAC7B,sBAAA,EAAwB,uBAAA;AAAA,EACxB,qBAAA,EAAuB,8BAAA;AAAA,EACvB,qBAAA,EAAuB,eAAA;AAAA,EACvB,qBAAA,EAAuB,OAAA;AAAA,EACvB,wBAAA,EAA0B,UAAA;AAAA,EAC1B,uBAAA,EAAyB,eAAA;AAAA,EACzB,gBAAA,EAAkB,oFAAA;AAAA,EAClB,YAAA,EAAc,cAAA;AAAA,EACd,mBAAA,EAAqB,6BAAA;AAAA,EACrB,gBAAA,EAAkB,mBAAA;AAAA,EAClB,gBAAA,EAAkB,kGAAA;AAAA,EAClB,kBAAA,EAAoB,aAAA;AAAA,EACpB,mBAAA,EAAqB,mBAAA;AAAA,EACrB,mBAAA,EAAqB,mBAAA;AAAA,EACrB,uBAAA,EAAyB,oBAAA;AAAA,EACzB,uBAAA,EAAyB,kBAAA;AAAA,EACzB,0BAAA,EAA4B,iBAAA;AAAA,EAC5B,yBAAA,EAA2B,SAAA;AAAA,EAC3B,iBAAA,EAAmB,UAAA;AAAA,EACnB,sBAAA,EAAwB,mBAAA;AAAA,EACxB,uBAAA,EAAyB,+BAAA;AAAA,EACzB,kBAAA,EAAoB,4BAAA;AAAA,EACpB,wBAAA,EAA0B,kCAAA;AAAA,EAC1B,eAAA,EAAiB,uCAAA;AAAA,EACjB,gBAAA,EAAkB,kDAAA;AAAA,EAClB,kBAAA,EAAoB,sBAAA;AAAA,EACpB,oBAAA,EAAsB;AACxB,CAAA;AAGO,SAAS,gBAAA,CAAiB,QAAwB,SAAA,EAAgE;AACvH,EAAA,MAAM,IAAA,GAAA,CAA0B,UAAU,OAAA,EAAS,WAAA,GAAc,UAAA,CAAW,IAAI,IAAIA,GAAAA,GAAKD,GAAAA;AACzF,EAAA,OAAO,YAAY,EAAE,GAAG,IAAA,EAAM,GAAG,WAAU,GAAI,IAAA;AACjD;AAGO,SAAS,gBAAA,CAAiB,CAAA,EAAqB,KAAA,EAAe,KAAA,EAAwB;AAC3F,EAAA,MAAM,GAAA,GAAM,GAAG,KAAK,CAAA,CAAA,EAAI,OAAO,KAAA,KAAU,QAAA,GAAW,QAAQ,EAAE,CAAA,CAAA;AAC9D,EAAA,OAAO,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,CAAA,EAAG,GAAG,CAAA,GAAI,CAAA,CAAE,GAAG,CAAA,GAAI,CAAA,CAAE,CAAA,EAAG,KAAK,CAAA,QAAA,CAAgC,CAAA;AAC3G;;;AC1GO,SAAS,eAAA,CAAgB,EAAE,MAAA,EAAQ,QAAA,EAAU,UAAS,EAAsB;AACjF,EAAA,MAAM,QAAA,GAAW,kBAAkB,MAAM,CAAA;AACzC,EAAA,MAAM,CAAA,GAAI,gBAAA,CAAiB,QAAA,EAAU,QAAQ,CAAA;AAC7C,EAAA,MAAM,CAAA,GAAI,CAAC,GAAA,EAAyB,IAAA,KAAoD,IAAA,GAAO,IAAA,CAAK,CAAA,CAAE,GAAG,CAAA,EAAG,IAAI,CAAA,GAAI,CAAA,CAAE,GAAG,CAAA;AACzH,EAAA,MAAM,OAAO,CAAC,GAAA,KAAkD,WAAW,GAAA,EAAK,QAAA,EAAU,YAAY,QAAQ,CAAA;AAC9G,EAAA,OAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,CAAA,EAAG,GAAG,IAAA,EAAK;AACxC;AAGO,SAAS,SAAA,CAAU,GAAqB,KAAA,EAAgE;AAC7G,EAAA,IAAI,KAAA,CAAM,SAAS,cAAA,IAAkB,OAAO,MAAM,UAAA,KAAe,QAAA,IAAY,KAAA,CAAM,UAAA,GAAa,CAAA,EAAG;AACjG,IAAA,OAAO,KAAK,CAAA,CAAE,gCAAgC,CAAA,EAAG,EAAE,SAAS,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,KAAK,KAAA,CAAM,UAAA,GAAa,EAAE,CAAC,GAAG,CAAA;AAAA,EAC7G;AACA,EAAA,MAAM,GAAA,GAAM,CAAA,eAAA,EAAkB,KAAA,CAAM,IAAI,CAAA,CAAA;AACxC,EAAA,OAAO,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,CAAA,EAAG,GAAG,CAAA,GAAI,CAAA,CAAE,GAAG,CAAA,GAAI,CAAA,CAAE,4BAA4B,CAAA;AAC/F;AAGO,SAAS,SAAA,CAAU,SAAuD,OAAA,EAA6D;AAC5I,EAAA,OAAO,IAAA,IAAQ,KAAK,MAAA,IAAU,OAAA,CAAQ,SAAS,IAAA,CAAK,MAAM,IAAI,IAAA,GAAO,IAAA;AACvE;ACGA,SAAS,UAAA,CAAW,GAAqB,MAAA,EAAyB;AAChE,EAAA,OAAO,gBAAA,CAAiB,CAAA,EAAG,iBAAA,EAAmB,MAAM,CAAA;AACtD;AAEO,SAAS,aAAa,EAAE,QAAA,EAAU,MAAM,OAAA,GAAU,KAAA,EAAO,MAAM,OAAA,GAAU,MAAA,EAAQ,QAAQ,YAAA,GAAe,CAAA,EAAG,YAAY,EAAA,GAAK,IAAI,QAAA,EAAU,GAAG,MAAK,EAAsB;AAC7K,EAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAG,IAAA,EAAK,GAAI,gBAAgB,IAAI,CAAA;AAC3C,EAAA,MAAM,UAAUY,KAAAA,EAAM;AACtB,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,IAAA,EAAM,gBAAA,EAAkB,uBAAuB,CAAA;AACxE,EAAA,MAAM,IAAA,GAAA,CAAQ,QAAA,IAAY,EAAC,EAAG,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,IAAK,OAAO,CAAA,CAAE,EAAA,KAAO,QAAA,IAAY,EAAE,EAAE,CAAA;AACjF,EAAA,MAAM,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,KAAM,CAAC,EAAE,OAAO,CAAA;AAC5C,EAAA,MAAM,SAAA,GAAY,EAAE,MAAA,EAAQ,MAAA,EAAiB,GAAI,SAAS,EAAE,MAAA,EAAO,GAAI,EAAC,EAAG;AAE3E,EAAA,uBACET,IAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,GAAG,IAAA,EAAM,iBAAA,EAAiB,OAAA,EAAS,kBAAA,EAAgB,IAAA,EAAC,YAAA,EAAY,QAAA,KAAa,IAAA,GAAO,aAAa,OAAA,EACnH,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,WAAQ,EAAA,EAAI,OAAA,EAAS,WAAW,EAAA,CAAG,KAAA,EACjC,QAAA,EAAA,CAAA,CAAE,gBAAgB,CAAA,EACrB,CAAA;AAAA,IACC,aAAa,IAAA,mBACZA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,KAAA,EAAO,IAAA,EAAK,UAAS,2BAAA,EAAyB,IAAA,EAC5D,YAAE,gBAAgB,CAAA,EACrB,oBAEAD,IAAAA,CAAAE,UAAA,EACE,QAAA,EAAA;AAAA,sBAAAD,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,KAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,gBAAgB,CAAA,EAAE,CAAA;AAAA,MAC5C,QAAQ,EAAA,mBACPA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,MAAA,EAAQ,IAAA,EAAK,QAAA,EAAS,yBAAA,EAAuB,MAC3D,QAAA,EAAA,MAAA,CAAO,MAAA,KAAW,0BAA0B,CAAA,CAAE,wBAAwB,IAAI,CAAA,CAAE,kBAAkB,CAAA,EACjG,CAAA,GACE,QAAQ,KAAA,mBACVA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,KAAA,EAAO,IAAA,EAAK,SAAQ,wBAAA,EAAwB,MAAA,CAAO,MAAM,IAAA,EACvE,QAAA,EAAA,SAAA,CAAU,GAAG,MAAA,CAAO,KAAK,GAC5B,CAAA,GACE,IAAA;AAAA,sBACJA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,GAAG,IAAA,EAAM,YAAA,EAAY,CAAA,CAAE,oBAAoB,GAAG,uBAAA,EAAqB,IAAA,EAC/E,QAAA,EAAA,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM;AACf,QAAA,MAAM,SAAS,GAAA,CAAI,CAAA,CAAE,YAAY,CAAA,IAAK,EAAE,yBAAyB,CAAA;AACjE,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,CAAA,CAAE,YAAA,IAAgB,IAAI,CAAA;AACxC,QAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,CAAA,CAAE,UAAU,CAAA;AAC/B,QAAA,uBACED,IAAAA,CAAC,IAAA,EAAA,EAAc,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,iBAAA,EAAe,IAAA,EAAC,cAAA,EAAc,CAAA,CAAE,OAAA,GAAU,MAAA,GAAS,OAAA,EACpF,QAAA,EAAA;AAAA,0BAAAA,KAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,0BAAsB,IAAA,EAC5C,QAAA,EAAA;AAAA,YAAA,MAAA;AAAA,YACA,CAAA,CAAE,0BACDA,IAAAA,CAAC,UAAK,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,yBAAA,EAAuB,IAAA,EAC/C,QAAA,EAAA;AAAA,cAAA,GAAA;AAAA,cACA,EAAE,kBAAkB;AAAA,aAAA,EACvB,CAAA,GACE;AAAA,WAAA,EACN,CAAA;AAAA,0BACAA,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,IAAA,EAAM,wBAAoB,IAAA,EACxC,QAAA,EAAA;AAAA,YAAA,UAAA,CAAW,CAAA,EAAG,EAAE,YAAY,CAAA;AAAA,YAC5B,OAAO,CAAA,MAAA,EAAM,CAAA,CAAE,qBAAqB,EAAE,IAAA,EAAM,MAAM,CAAC,KAAK,KAAA,GAAQ,CAAA,MAAA,EAAM,EAAE,mBAAA,EAAqB,EAAE,MAAM,KAAA,EAAO,CAAC,CAAA,CAAA,GAAK;AAAA,WAAA,EACrH,CAAA;AAAA,UACC,CAAA,CAAE,UAAU,IAAA,mBACXA,KAAC,OAAA,EAAA,EAAS,GAAG,SAAA,EAAW,sBAAA,EAAqB,EAAA,EAC3C,QAAA,EAAA;AAAA,4BAAAC,GAAAA,CAAC,WAAM,IAAA,EAAK,QAAA,EAAS,MAAK,YAAA,EAAa,KAAA,EAAO,EAAE,EAAA,EAAI,CAAA;AAAA,4BACpDA,GAAAA,CAAC,QAAA,EAAA,EAAO,IAAA,EAAK,QAAA,EAAS,MAAK,QAAA,EAAS,KAAA,EAAM,gBAAA,EAAiB,QAAA,EAAU,OAAA,EAAS,SAAA,EAAW,GAAG,MAAA,EAAQ,YAAA,EAAY,CAAA,CAAE,sBAAA,EAAwB,EAAE,MAAA,EAAQ,CAAA,EAAG,wBAAA,EAAsB,IAAA,EAC1K,QAAA,EAAA,CAAA,CAAE,iBAAiB,CAAA,EACtB;AAAA,WAAA,EACF;AAAA,SAAA,EAAA,EApBK,EAAE,EAsBX,CAAA;AAAA,MAEJ,CAAC,CAAA,EACH,CAAA;AAAA,MACC,OAAO,MAAA,KAAW,CAAA,mBACjBA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,KAAA,EAAO,wBAAA,EAAsB,IAAA,EAC3C,YAAE,eAAe,CAAA,EACpB,oBAEAA,GAAAA,CAAC,WAAS,GAAG,SAAA,EAAW,sBAAA,EAAqB,EAAA,EAC3C,0BAAAA,GAAAA,CAAC,QAAA,EAAA,EAAO,MAAK,QAAA,EAAS,IAAA,EAAK,UAAS,KAAA,EAAM,uBAAA,EAAwB,UAAU,OAAA,EAAS,SAAA,EAAW,GAAG,YAAA,EAAc,+BAAA,EAA6B,MAC3I,QAAA,EAAA,CAAA,CAAE,uBAAuB,GAC5B,CAAA,EACF;AAAA,KAAA,EAEJ,CAAA;AAAA,IAED;AAAA,GAAA,EACH,CAAA;AAEJ;ACnGO,IAAM,mBAAA,GAAsB,CAAC,eAAA,EAAiB,UAAA,EAAY,SAAS;AA2B1E,SAAS,YAAA,CAAa,KAAa,QAAA,EAA0B;AAC3D,EAAA,IAAI;AACF,IAAA,MAAM,IAAA,GAAO,IAAI,IAAA,CAAK,YAAA,CAAa,CAAC,QAAQ,CAAA,EAAG,EAAE,IAAA,EAAM,YAAY,eAAA,EAAiB,SAAA,EAAW,CAAA,CAAE,GAAG,GAAG,CAAA;AACvG,IAAA,OAAO,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,CAAE,iBAAA,CAAkB,QAAQ,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,GAAI,GAAA;AAAA,EAC7E,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,GAAA;AAAA,EACT;AACF;AAEO,SAAS,kBAAA,CAAmB,EAAE,OAAA,EAAS,KAAA,EAAO,MAAM,OAAA,GAAU,KAAA,EAAO,MAAM,OAAA,GAAU,MAAA,EAAQ,QAAQ,YAAA,GAAe,CAAA,EAAG,YAAY,EAAA,GAAK,IAAI,QAAA,EAAU,GAAG,MAAK,EAA4B;AAC/L,EAAA,MAAM,EAAE,CAAA,EAAG,MAAA,EAAO,GAAI,gBAAgB,IAAI,CAAA;AAC1C,EAAA,MAAM,UAAUQ,KAAAA,EAAM;AACtB,EAAA,MAAM,WAAWA,KAAAA,EAAM;AACvB,EAAA,MAAM,WAAW,OAAA,IAAW,EAAC,EAC1B,GAAA,CAAI,CAAC,CAAA,KAAO,OAAO,CAAA,KAAM,QAAA,GAAW,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,MAAA,KAAc,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,EAAO,OAAO,CAAA,EAAG,KAAA,EAAQ,CAAA,CAC1G,OAAO,CAAC,CAAA,KAAyD,OAAO,CAAA,CAAE,UAAU,QAAA,IAAY,yCAAA,CAA0C,IAAA,CAAK,CAAA,CAAE,KAAK,CAAC,CAAA;AAC1J,EAAA,IAAI,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG,OAAO,IAAA;AAC/B,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,IAAA,EAAM,QAAQ,CAAA;AACvC,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,KAAA,CAAM,WAAA,EAAY,KAAA,CAAO,KAAA,IAAS,EAAA,EAAI,WAAA,EAAa,GAAG,KAAA,IAAS,EAAA;AAErG,EAAA,uBACET,KAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,GAAG,IAAA,EAAM,iBAAA,EAAiB,OAAA,EAAS,cAAA,EAAY,IAAA,EACjE,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,WAAQ,EAAA,EAAI,OAAA,EAAS,WAAW,EAAA,CAAG,KAAA,EACjC,QAAA,EAAA,CAAA,CAAE,YAAY,CAAA,EACjB,CAAA;AAAA,oBACAD,IAAAA,CAAC,OAAA,EAAA,EAAQ,MAAA,EAAO,MAAA,EAAQ,GAAI,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAC,EAAI,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,wBAAqB,EAAA,EAC7F,QAAA,EAAA;AAAA,MAAA,MAAA,EAAQ,KAAA,mBACPC,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,MAAA,EAAQ,IAAA,EAAK,QAAA,EAAS,uBAAmB,IAAA,EACvD,QAAA,EAAA,CAAA,CAAE,gBAAgB,CAAA,EACrB,IACE,MAAA,EAAQ,KAAA,mBACVA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,MAAK,OAAA,EAAQ,oBAAA,EAAoB,MAAA,CAAO,KAAA,CAAM,MACnE,QAAA,EAAA,SAAA,CAAU,CAAA,EAAG,MAAA,CAAO,KAAK,GAC5B,CAAA,GACE,IAAA;AAAA,sBACJA,GAAAA,CAAC,OAAA,EAAA,EAAM,OAAA,EAAS,QAAA,EAAU,WAAW,EAAA,CAAG,KAAA,EACrC,QAAA,EAAA,CAAA,CAAE,YAAY,CAAA,EACjB,CAAA;AAAA,sBACAD,IAAAA,CAAC,QAAA,EAAA,EAAO,EAAA,EAAI,QAAA,EAAU,IAAA,EAAK,QAAA,EAAS,YAAA,EAAc,OAAA,EAAS,SAAA,EAAW,EAAA,CAAG,MAAA,EAAQ,uBAAmB,IAAA,EAClG,QAAA,EAAA;AAAA,wBAAAC,IAAC,QAAA,EAAA,EAAO,KAAA,EAAM,EAAA,EAAI,QAAA,EAAA,CAAA,CAAE,cAAc,CAAA,EAAE,CAAA;AAAA,QACnC,OAAA,CAAQ,IAAI,CAAC,CAAA,qBACZA,GAAAA,CAAC,QAAA,EAAA,EAAqB,OAAO,CAAA,CAAE,KAAA,EAC5B,cAAI,CAAA,CAAE,KAAK,KAAK,YAAA,CAAa,CAAA,CAAE,OAAO,MAAM,CAAA,EAAA,EADlC,CAAA,CAAE,KAEf,CACD;AAAA,OAAA,EACH,CAAA;AAAA,sBACAA,GAAAA,CAAC,QAAA,EAAA,EAAO,MAAK,QAAA,EAAS,IAAA,EAAK,UAAS,KAAA,EAAM,QAAA,EAAS,QAAA,EAAU,OAAA,EAAS,WAAW,EAAA,CAAG,MAAA,EAAQ,uBAAmB,IAAA,EAC5G,QAAA,EAAA,CAAA,CAAE,WAAW,CAAA,EAChB;AAAA,KAAA,EACF,CAAA;AAAA,IACC;AAAA,GAAA,EACH,CAAA;AAEJ;AAkBA,IAAM,KAAA,GAAQ,wBAAA;AAEP,SAAS,uBAAA,CAAwB,EAAE,QAAA,EAAU,WAAA,EAAa,SAAS,mBAAA,EAAqB,IAAA,EAAM,OAAA,GAAU,KAAA,EAAO,IAAA,EAAM,OAAA,GAAU,QAAQ,MAAA,EAAQ,YAAA,GAAe,GAAG,UAAA,EAAY,EAAA,GAAK,EAAC,EAAG,QAAA,EAAU,GAAG,IAAA,EAAK,EAAiC;AAC9O,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,eAAA,CAAgB,IAAI,CAAA;AAClC,EAAA,MAAM,UAAUQ,KAAAA,EAAM;AACtB,EAAA,MAAM,OAAO,KAAA,CAAM,IAAA,CAAK,IAAI,GAAA,CAAA,CAAK,QAAA,IAAY,EAAC,EAAG,MAAA,CAAO,CAAC,CAAA,KAAmB,OAAO,MAAM,QAAA,IAAY,KAAA,CAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACpH,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,IAAA,CAAK,IAAI,IAAI,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,KAAM,KAAA,CAAM,IAAA,CAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AACpE,EAAA,IAAI,KAAK,MAAA,KAAW,CAAA,IAAK,IAAA,CAAK,MAAA,KAAW,GAAG,OAAO,IAAA;AACnD,EAAA,MAAM,OAAA,GAAU,IAAI,YAAY,CAAA,CAAA;AAChC,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,IAAA,EAAM,eAAe,CAAA;AAC9C,EAAA,MAAM,EAAA,GAAK,CAAC,KAAA,EAAe,OAAA,KAA6B,aAAa,aAAA,GAAgB,KAAK,CAAA,GAAI,OAAO,CAAA,KAAM,KAAA;AAE3G,EAAA,uBACET,KAAC,SAAA,EAAA,EAAQ,SAAA,EAAW,GAAG,IAAA,EAAM,iBAAA,EAAiB,OAAA,EAAS,eAAA,EAAa,IAAA,EAClE,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,WAAQ,EAAA,EAAI,OAAA,EAAS,WAAW,EAAA,CAAG,KAAA,EACjC,QAAA,EAAA,CAAA,CAAE,aAAa,CAAA,EAClB,CAAA;AAAA,oBACAA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAW,GAAG,KAAA,EAAQ,QAAA,EAAA,CAAA,CAAE,aAAa,CAAA,EAAE,CAAA;AAAA,oBAC1CD,IAAAA,CAAC,OAAA,EAAA,EAAQ,MAAA,EAAO,MAAA,EAAQ,GAAI,MAAA,GAAS,EAAE,MAAA,EAAO,GAAI,EAAC,EAAI,SAAA,EAAW,EAAA,CAAG,IAAA,EAAM,wBAAqB,EAAA,EAC7F,QAAA,EAAA;AAAA,MAAA,MAAA,EAAQ,KAAA,mBACPC,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAW,EAAA,CAAG,MAAA,EAAQ,IAAA,EAAK,QAAA,EAAS,wBAAoB,IAAA,EACxD,QAAA,EAAA,CAAA,CAAE,gBAAgB,CAAA,EACrB,IACE,MAAA,EAAQ,KAAA,mBACVA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,MAAK,OAAA,EAAQ,qBAAA,EAAqB,MAAA,CAAO,KAAA,CAAM,MACpE,QAAA,EAAA,SAAA,CAAU,CAAA,EAAG,MAAA,CAAO,KAAK,GAC5B,CAAA,GACE,IAAA;AAAA,sBACJD,IAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,YAAA,EAAY,CAAA,CAAE,mBAAmB,CAAA,EAAG,qBAAA,EAAmB,IAAA,EACjF,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAAD,IAAAA,CAAC,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAM,KAAA,EACR,QAAA,kBAAAA,IAAC,MAAA,EAAA,EAAK,KAAA,EAAO,EAAE,QAAA,EAAU,UAAA,EAAY,KAAA,EAAO,GAAG,MAAA,EAAQ,CAAA,EAAG,QAAA,EAAU,QAAA,EAAU,IAAA,EAAM,eAAA,EAAiB,UAAA,EAAY,QAAA,EAAS,EAAI,QAAA,EAAA,CAAA,CAAE,aAAa,CAAA,EAAE,CAAA,EACjJ,CAAA;AAAA,UACC,IAAA,CAAK,IAAI,CAAC,CAAA,qBACTA,GAAAA,CAAC,IAAA,EAAA,EAAW,OAAM,KAAA,EAAM,SAAA,EAAW,GAAG,OAAA,EAAS,uBAAA,EAAuB,GACnE,QAAA,EAAA,gBAAA,CAAiB,CAAA,EAAG,iBAAiB,CAAC,CAAA,EAAA,EADhC,CAET,CACD;AAAA,SAAA,EACH,CAAA,EACF,CAAA;AAAA,wBACAA,GAAAA,CAAC,OAAA,EAAA,EACE,QAAA,EAAA,IAAA,CAAK,IAAI,CAAC,CAAA,qBACTD,IAAAA,CAAC,IAAA,EAAA,EAAW,SAAA,EAAW,EAAA,CAAG,GAAA,EAAK,qBAAmB,CAAA,EAChD,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,IAAA,EAAA,EAAG,KAAA,EAAM,KAAA,EAAM,SAAA,EAAW,EAAA,CAAG,KAAA,EAC3B,QAAA,EAAA,gBAAA,CAAiB,CAAA,EAAG,aAAA,EAAe,CAAC,CAAA,EACvC,CAAA;AAAA,UACC,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM;AACf,YAAA,MAAM,EAAA,GAAK,CAAA,EAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;AACpB,YAAA,uBACED,KAAC,IAAA,EAAA,EAEC,QAAA,EAAA;AAAA,8BAAAC,IAAC,OAAA,EAAA,EAAM,IAAA,EAAK,UAAS,IAAA,EAAK,YAAA,EAAa,OAAO,EAAA,EAAI,CAAA;AAAA,8BAClDA,GAAAA,CAAC,OAAA,EAAA,EAAM,IAAA,EAAK,UAAA,EAAW,IAAA,EAAK,MAAA,EAAO,KAAA,EAAO,EAAA,EAAI,cAAA,EAAgB,EAAA,CAAG,CAAA,EAAG,CAAC,CAAA,EAAG,SAAA,EAAW,EAAA,CAAG,KAAA,EAAO,YAAA,EAAY,CAAA,EAAG,gBAAA,CAAiB,CAAA,EAAG,aAAA,EAAe,CAAC,CAAC,CAAA,MAAA,EAAM,gBAAA,CAAiB,CAAA,EAAG,eAAA,EAAiB,CAAC,CAAC,CAAA,CAAA,EAAI;AAAA,aAAA,EAAA,EAH3L,CAIT,CAAA;AAAA,UAEJ,CAAC;AAAA,SAAA,EAAA,EAbM,CAcT,CACD,CAAA,EACH;AAAA,OAAA,EACF,CAAA;AAAA,sBACAA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,EAAA,CAAG,UAAU,wBAAA,EAAsB,IAAA,EAC9C,QAAA,EAAA,CAAA,CAAE,gBAAgB,CAAA,EACrB,CAAA;AAAA,sBACAA,GAAAA,CAAC,QAAA,EAAA,EAAO,MAAK,QAAA,EAAS,IAAA,EAAK,UAAS,KAAA,EAAM,eAAA,EAAgB,QAAA,EAAU,OAAA,EAAS,WAAW,EAAA,CAAG,MAAA,EAAQ,wBAAoB,IAAA,EACpH,QAAA,EAAA,CAAA,CAAE,YAAY,CAAA,EACjB;AAAA,KAAA,EACF,CAAA;AAAA,IACC;AAAA,GAAA,EACH,CAAA;AAEJ","file":"account.js","sourcesContent":["/**\n * The account screen: sign in with password, create an account, verify the emailed code, sign in with a code and\n * recover a forgotten password, in one `<form method=\"post\">` driven by `createAuthAction` (`./server`). What the store\n * offers comes from `loadAuthCapabilities`; the form shows only that. Plain HTML: it works without JavaScript for the\n * password sign-in and the steps the action sends back; the view switches (links) need JavaScript.\n *\n * Styling: `data-sf-account-*` attributes and `classNames` slots, fields reuse `CheckoutField` (and `checkout.css`);\n * `account.css` is an optional neutral sheet. Texts are Spanish by default, English with `locale=\"en\"`, any with `messages`.\n */\nimport { useEffect, useRef, useState, type ComponentType, type ReactNode } from 'react'\nimport type { CustomerCapabilities } from '@asteby/storefront'\nimport { CheckoutField, ErrorSummary, useFieldErrors, type CheckoutFieldClassNames } from '../checkout/fields.js'\nimport type { AuthActionData, AuthErrorCode, AuthStep } from './types.js'\n\nexport type AccountAuthView = 'login' | 'register' | 'otp-email' | 'forgot' | AuthStep\n\nexport type AccountAuthMessages = {\n titles: Record<AccountAuthView, string>\n email: string\n password: string\n newPassword: string\n passwordHint: string\n firstName: string\n lastName: string\n code: string\n codeSentTo: string\n submit: Record<AccountAuthView, string>\n resend: string\n forgotLink: string\n registerLink: string\n loginLink: string\n otpLink: string\n backToLogin: string\n nothingAvailable: string\n errors: Record<AuthErrorCode, string>\n}\n\nconst ES: AccountAuthMessages = {\n titles: {\n login: 'Entrar a tu cuenta',\n register: 'Crear una cuenta',\n verify: 'Confirma tu correo',\n 'otp-email': 'Entrar con un código',\n otp: 'Escribe tu código',\n forgot: 'Recuperar contraseña',\n reset: 'Elige una contraseña nueva',\n },\n email: 'Correo electrónico',\n password: 'Contraseña',\n newPassword: 'Contraseña nueva',\n passwordHint: 'Entre 10 y 128 caracteres.',\n firstName: 'Nombre',\n lastName: 'Apellido',\n code: 'Código',\n codeSentTo: 'Enviamos un código a {email}. Puede tardar un minuto.',\n submit: {\n login: 'Entrar',\n register: 'Crear cuenta',\n verify: 'Confirmar',\n 'otp-email': 'Enviarme el código',\n otp: 'Entrar',\n forgot: 'Enviarme el código',\n reset: 'Guardar y entrar',\n },\n resend: 'Reenviar código',\n forgotLink: '¿Olvidaste tu contraseña?',\n registerLink: 'Crear una cuenta',\n loginLink: 'Ya tengo cuenta',\n otpLink: 'Entrar con un código por correo',\n backToLogin: 'Volver a entrar con contraseña',\n nothingAvailable: 'Esta tienda no admite iniciar sesión por ahora.',\n errors: {\n invalid_credentials: 'El correo o la contraseña no coinciden.',\n invalid_code: 'El código no es válido o ya venció.',\n email_taken: 'Ya existe una cuenta con este correo. Entra o recupera tu contraseña.',\n rate_limited: 'Demasiados intentos. Espera unos minutos e inténtalo de nuevo.',\n validation: 'Revisa los datos e inténtalo de nuevo.',\n unsupported: 'Esta forma de entrar no está disponible en esta tienda.',\n store_misconfigured: 'No pudimos crear tu cuenta por un problema de configuración de la tienda. Puedes comprar como invitado; ya avisamos a la tienda.',\n unavailable: 'No pudimos completar la acción. Inténtalo de nuevo en un momento.',\n },\n}\n\nconst EN: AccountAuthMessages = {\n titles: {\n login: 'Sign in',\n register: 'Create an account',\n verify: 'Confirm your email',\n 'otp-email': 'Sign in with a code',\n otp: 'Enter your code',\n forgot: 'Reset your password',\n reset: 'Choose a new password',\n },\n email: 'Email',\n password: 'Password',\n newPassword: 'New password',\n passwordHint: 'Between 10 and 128 characters.',\n firstName: 'First name',\n lastName: 'Last name',\n code: 'Code',\n codeSentTo: 'We sent a code to {email}. It can take a minute.',\n submit: {\n login: 'Sign in',\n register: 'Create account',\n verify: 'Confirm',\n 'otp-email': 'Email me the code',\n otp: 'Sign in',\n forgot: 'Email me the code',\n reset: 'Save and sign in',\n },\n resend: 'Resend code',\n forgotLink: 'Forgot your password?',\n registerLink: 'Create an account',\n loginLink: 'I already have an account',\n otpLink: 'Sign in with an emailed code',\n backToLogin: 'Back to password sign-in',\n nothingAvailable: 'This store does not support signing in right now.',\n errors: {\n invalid_credentials: 'The email and password do not match.',\n invalid_code: 'The code is not valid or has expired.',\n email_taken: 'An account with this email already exists. Sign in or reset your password.',\n rate_limited: 'Too many attempts. Wait a few minutes and try again.',\n validation: 'Check the details and try again.',\n unsupported: 'This way of signing in is not available in this store.',\n store_misconfigured: 'We could not create your account because of a store configuration problem. You can check out as a guest; we have already told the store.',\n unavailable: 'We could not complete that. Try again in a moment.',\n },\n}\n\n/** Messages for a locale (`es*` default, `en*`), with optional overrides (nested `titles`/`submit`/`errors` merge). */\nexport function accountAuthMessages(locale?: string | null, overrides?: DeepPartial<AccountAuthMessages> | null): AccountAuthMessages {\n const base = (locale ?? 'es-MX').toLowerCase().startsWith('en') ? EN : ES\n if (!overrides) return base\n return {\n ...base,\n ...(overrides as Partial<AccountAuthMessages>),\n titles: { ...base.titles, ...overrides.titles },\n submit: { ...base.submit, ...overrides.submit },\n errors: { ...base.errors, ...overrides.errors },\n }\n}\n\ntype DeepPartial<T> = { [K in keyof T]?: T[K] extends Record<string, string> ? Partial<T[K]> : T[K] }\n\nexport type AccountAuthClassNames = Partial<Record<'root' | 'title' | 'form' | 'notice' | 'error' | 'actions' | 'submit' | 'links' | 'link', string>> & {\n field?: CheckoutFieldClassNames\n}\n\n/** What `<AccountAuth>` passes to its `form` component: the few props a router `Form` and the HTML `<form>` both accept. */\nexport type AccountFormProps = {\n method?: 'post'\n action?: string\n className?: string\n children?: ReactNode\n /** Loose on purpose: a router `Form` types its ref with its own copy of `@types/react`. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref?: any\n 'data-sf-account-form'?: boolean | string\n}\n\nexport type AccountAuthProps = {\n /** From `loadAuthCapabilities` (the loader). */\n capabilities: CustomerCapabilities\n /** What the action returned (`useActionData()`); drives the next screen and the errors. */\n data?: AuthActionData | null\n /** Where to go after signing in (sent as `next`; the server validates it). */\n next?: string | null\n /** A submit is in flight (`navigation.state !== 'idle'`): disables the buttons. */\n pending?: boolean\n /** First screen. Default `login`, or `otp-email` when the store has no password sign-in. */\n initialView?: AccountAuthView\n /** Form component, e.g. React Router's `Form`, to submit without a reload. It must forward `ref` to the `<form>` (React 19: a prop). Default: the HTML `<form>`. */\n form?: 'form' | ComponentType<AccountFormProps>\n /** `action` of the form (default: the current URL). */\n action?: string\n locale?: string\n messages?: DeepPartial<AccountAuthMessages>\n classNames?: AccountAuthClassNames\n /** Shown above the form (a logo, a welcome text). */\n header?: ReactNode\n}\n\nconst initialOf = (caps: CustomerCapabilities, initialView?: AccountAuthView): AccountAuthView =>\n initialView ?? (caps.password ? 'login' : caps.otp_channels.includes('email') ? 'otp-email' : 'login')\n\n/**\n * The whole account screen. Headless enough to restyle, complete enough to drop in:\n * `export default function Account() { return <AccountAuth capabilities={useLoaderData()} data={useActionData()} form={Form} /> }`.\n */\nexport function AccountAuth({ capabilities, data, next, pending = false, initialView, form: FormTag = 'form', action, locale, messages, classNames: cx = {}, header }: AccountAuthProps) {\n const m = accountAuthMessages(locale, messages)\n const passwordOn = capabilities.password\n const otpOn = capabilities.otp_channels.includes('email')\n const [view, setView] = useState<AccountAuthView>(() => data?.step ?? initialOf(capabilities, initialView))\n const [email, setEmail] = useState(data?.email ?? '')\n const ref = useRef<HTMLFormElement>(null)\n const serverFields = data?.error?.field ? [data.error.field] : null\n const errorText = data?.error ? m.errors[data.error.code] : null\n const v = useFieldErrors(ref, { ...(locale ? { locale } : {}), serverFields, serverMessages: data?.error?.field && errorText ? { [data.error.field]: errorText } : null })\n\n // The action decides the next screen; the email it carries survives it.\n useEffect(() => {\n if (data?.step) setView(data.step)\n if (data?.email) setEmail(data.email)\n }, [data])\n\n const go = (to: AccountAuthView) => {\n v.clear()\n setView(to)\n }\n const fieldProps = { classNames: cx.field, ...(locale ? { locale } : {}) }\n const emailField = (\n <CheckoutField {...fieldProps} name=\"email\" type=\"email\" label={m.email} autoComplete=\"email\" inputMode=\"email\" value={email} onChange={(e) => setEmail(e.currentTarget.value)} error={v.errors.email ?? null} />\n )\n const codeField = (\n <CheckoutField {...fieldProps} name=\"code\" label={m.code} autoComplete=\"one-time-code\" inputMode=\"numeric\" pattern=\"[0-9]*\" error={v.errors.code ?? null} />\n )\n const passwordField = (label: string, autoComplete: string, newPassword: boolean) => (\n <CheckoutField\n {...fieldProps}\n name=\"password\"\n type=\"password\"\n label={label}\n autoComplete={autoComplete}\n error={v.errors.password ?? null}\n {...(newPassword ? { minLength: 10, maxLength: 128, hint: m.passwordHint } : {})}\n />\n )\n const link = (to: AccountAuthView, text: string) => (\n <button type=\"button\" className={cx.link} data-sf-account-link={to} onClick={() => go(to)}>\n {text}\n </button>\n )\n\n let body: ReactNode\n let links: ReactNode = null\n switch (view) {\n case 'register':\n body = (\n <>\n <CheckoutField {...fieldProps} name=\"first_name\" label={m.firstName} autoComplete=\"given-name\" optional />\n <CheckoutField {...fieldProps} name=\"last_name\" label={m.lastName} autoComplete=\"family-name\" optional />\n {emailField}\n {passwordField(m.password, 'new-password', true)}\n </>\n )\n links = link('login', m.loginLink)\n break\n case 'verify':\n case 'otp':\n body = (\n <>\n <p className={cx.notice} data-sf-account-notice>\n {m.codeSentTo.replace('{email}', email)}\n </p>\n <input type=\"hidden\" name=\"email\" value={email} />\n {codeField}\n </>\n )\n links = (\n <>\n {view === 'otp' ? (\n <button type=\"submit\" name=\"intent\" value=\"otp-request\" formNoValidate className={cx.link} data-sf-account-link=\"resend\">\n {m.resend}\n </button>\n ) : null}\n {link('login', m.backToLogin)}\n </>\n )\n break\n case 'otp-email':\n case 'forgot':\n body = emailField\n links = link('login', m.backToLogin)\n break\n case 'reset':\n body = (\n <>\n <p className={cx.notice} data-sf-account-notice>\n {m.codeSentTo.replace('{email}', email)}\n </p>\n <input type=\"hidden\" name=\"email\" value={email} />\n {codeField}\n {passwordField(m.newPassword, 'new-password', true)}\n </>\n )\n links = link('login', m.backToLogin)\n break\n default:\n body = (\n <>\n {emailField}\n {passwordField(m.password, 'current-password', false)}\n </>\n )\n links = (\n <>\n {otpOn ? link('forgot', m.forgotLink) : null}\n {link('register', m.registerLink)}\n {otpOn ? link('otp-email', m.otpLink) : null}\n </>\n )\n }\n\n const intent = { login: 'login', register: 'register', verify: 'verify', 'otp-email': 'otp-request', otp: 'otp-login', forgot: 'forgot', reset: 'reset' }[view]\n // Without password accounts the password views do not exist; only the code sign-in does.\n const available = view === 'login' || view === 'register' || view === 'forgot' || view === 'reset' || view === 'verify' ? passwordOn : otpOn\n const showSummary = !data?.error?.field\n const title = m.titles[view]\n if (!available && !passwordOn && !otpOn) {\n return (\n <section className={cx.root} data-sf-account-auth data-sf-account-view=\"unavailable\">\n <p className={cx.notice} role=\"status\">\n {capabilities.unavailable_reason === 'missing_scope' ? m.errors.store_misconfigured : m.nothingAvailable}\n </p>\n </section>\n )\n }\n return (\n <section className={cx.root} data-sf-account-auth data-sf-account-view={view} aria-labelledby=\"sf-account-title\">\n {header}\n <h1 id=\"sf-account-title\" className={cx.title}>\n {title}\n </h1>\n <FormTag ref={ref as never} method=\"post\" {...(action ? { action } : {})} className={cx.form} data-sf-account-form>\n <ErrorSummary items={v.summary} focusKey={v.summaryKey} {...(locale ? { locale } : {})} />\n {errorText && showSummary ? (\n <p role=\"alert\" className={cx.error} data-sf-account-error={data!.error!.code}>\n {errorText}\n </p>\n ) : null}\n {next ? <input type=\"hidden\" name=\"next\" value={next} /> : null}\n {body}\n <div className={cx.actions}>\n <button type=\"submit\" name=\"intent\" value={intent} disabled={pending} className={cx.submit} data-sf-account-submit>\n {m.submit[view]}\n </button>\n </div>\n <div className={cx.links} data-sf-account-links>\n {links}\n </div>\n </FormTag>\n </section>\n )\n}\n","/**\n * Post-purchase invitation to create an account, for the thank-you page (`/pagar/gracias`). Headless: no styles of its\n * own, `data-sf-ppa-*` hooks and `classNames` slots. It reuses the account action (`createAuthAction`, `./server`):\n * the form posts `register` (or `otp-request` in a store without passwords) with the buyer's email, so the verification,\n * the session cookie and the errors are exactly the ones of `<AccountAuth>`; nothing about addresses or phones is asked.\n *\n * Privacy: the email is the one of the receipt the SERVER read from the buyer's own session (the `email` prop); it is\n * sent as a hidden field and never editable here, so the form cannot be used to probe other addresses. With email\n * verification the action answers the same whether or not the address already has an account (no enumeration); the\n * guest orders of that address show up in the order history once the mailbox is verified (the store's addon scopes by\n * VERIFIED email). Without verification the account is created unverified and its history does not include guest\n * orders: the text then promises nothing about the order.\n *\n * Texts are Spanish by default, English with `locale=\"en\"`, any with `messages`.\n */\nimport { useRef, type ComponentType, type ReactNode } from 'react'\nimport type { CustomerCapabilities } from '@asteby/storefront'\nimport { CheckoutField, ErrorSummary, useFieldErrors, type CheckoutFieldClassNames } from '../checkout/fields.js'\nimport type { AccountFormProps } from './account-auth.js'\nimport type { AuthActionData, AuthErrorCode } from './types.js'\n\nexport type PostPurchaseAccountPromptMessages = {\n title: string\n /** Why, when the email is verified and the guest order will appear in the history. `{email}` is replaced. */\n benefit: string\n /** Why, when it will not (no email verification in the store). */\n benefitBasic: string\n accountFor: string\n password: string\n passwordHint: string\n code: string\n codeSentTo: string\n submit: string\n submitOtp: string\n submitCode: string\n skipNote: string\n loginLink: string\n errors: Record<AuthErrorCode, string>\n}\n\nconst ES: PostPurchaseAccountPromptMessages = {\n title: 'Crea tu cuenta para seguir tu pedido',\n benefit: 'Con {email} verás aquí tu pedido y su envío, y la próxima compra será más rápida. No te pedimos tu dirección ni tu teléfono otra vez.',\n benefitBasic: 'Guarda tus datos para que la próxima compra sea más rápida.',\n accountFor: 'Cuenta para {email}',\n password: 'Contraseña',\n passwordHint: 'Entre 10 y 128 caracteres.',\n code: 'Código',\n codeSentTo: 'Enviamos un código a {email}. Puede tardar un minuto.',\n submit: 'Crear cuenta',\n submitOtp: 'Enviarme un código',\n submitCode: 'Confirmar',\n skipNote: 'Si no quieres cuenta, no pasa nada: te avisaremos por correo de tu pedido.',\n loginLink: 'Ya tengo cuenta',\n errors: {\n invalid_credentials: 'El correo o la contraseña no coinciden.',\n invalid_code: 'El código no es válido o ya venció.',\n email_taken: 'Ya existe una cuenta con este correo. Entra para ver tu pedido.',\n rate_limited: 'Demasiados intentos. Espera unos minutos e inténtalo de nuevo.',\n validation: 'Revisa los datos e inténtalo de nuevo.',\n unsupported: 'Esta tienda no permite crear cuentas por ahora.',\n store_misconfigured: 'No pudimos crear tu cuenta por un problema de configuración de la tienda. Tu pedido sigue en pie.',\n unavailable: 'No pudimos completar la acción. Inténtalo de nuevo en un momento.',\n },\n}\n\nconst EN: PostPurchaseAccountPromptMessages = {\n title: 'Create your account to follow your order',\n benefit: 'With {email} you will see your order and its shipment here, and your next purchase will be faster. We will not ask for your address or phone again.',\n benefitBasic: 'Save your details so your next purchase is faster.',\n accountFor: 'Account for {email}',\n password: 'Password',\n passwordHint: 'Between 10 and 128 characters.',\n code: 'Code',\n codeSentTo: 'We sent a code to {email}. It can take a minute.',\n submit: 'Create account',\n submitOtp: 'Email me a code',\n submitCode: 'Confirm',\n skipNote: 'If you do not want an account, that is fine: we will email you about your order.',\n loginLink: 'I already have an account',\n errors: {\n invalid_credentials: 'The email and password do not match.',\n invalid_code: 'The code is not valid or has expired.',\n email_taken: 'An account with this email already exists. Sign in to see your order.',\n rate_limited: 'Too many attempts. Wait a few minutes and try again.',\n validation: 'Check the details and try again.',\n unsupported: 'This store does not allow creating accounts right now.',\n store_misconfigured: 'We could not create your account because of a store configuration problem. Your order is safe.',\n unavailable: 'We could not complete that. Try again in a moment.',\n },\n}\n\ntype DeepPartial<T> = { [K in keyof T]?: T[K] extends Record<string, string> ? Partial<T[K]> : T[K] }\n\n/** Messages for a locale (`es*` default, `en*`), with optional overrides (`errors` merges). */\nexport function postPurchaseAccountPromptMessages(locale?: string | null, overrides?: DeepPartial<PostPurchaseAccountPromptMessages> | null): PostPurchaseAccountPromptMessages {\n const base = (locale ?? 'es-MX').toLowerCase().startsWith('en') ? EN : ES\n if (!overrides) return base\n return { ...base, ...(overrides as Partial<PostPurchaseAccountPromptMessages>), errors: { ...base.errors, ...overrides.errors } }\n}\n\nexport type PostPurchaseAccountPromptClassNames = Partial<Record<'root' | 'title' | 'text' | 'email' | 'form' | 'notice' | 'error' | 'actions' | 'submit' | 'note' | 'link', string>> & {\n field?: CheckoutFieldClassNames\n}\n\nexport type PostPurchaseAccountPromptProps = {\n /** The buyer's email from the receipt of THIS session (read on the server). Without it nothing renders. */\n email?: string | null\n /** From `loadAuthCapabilities`. Without password nor email codes nothing renders. */\n capabilities: CustomerCapabilities\n /** What the account action returned (`useActionData()`); drives the code step and the errors. */\n data?: AuthActionData | null\n /** Where to go after the account is ready (sent as `next`; the server validates it). E.g. the order history. */\n next?: string | null\n /** A submit is in flight: disables the button. */\n pending?: boolean\n /** Form component, e.g. React Router's `Form`. Default: the HTML `<form>`. */\n form?: 'form' | ComponentType<AccountFormProps>\n /** `action` of the form: the route that mounts `createAuthAction`. Default: the current URL. */\n action?: string\n /** Heading level of the title (default 2). */\n headingLevel?: 2 | 3 | 4\n /** Where \"I already have an account\" goes (e.g. `/cuenta/entrar?next=...`). Omitted: no link. */\n loginHref?: string | null\n locale?: string\n messages?: DeepPartial<PostPurchaseAccountPromptMessages>\n classNames?: PostPurchaseAccountPromptClassNames\n /** Extra content under the form. */\n children?: ReactNode\n}\n\nconst validEmail = (v: string | null | undefined): v is string => typeof v === 'string' && v.length <= 254 && /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(v.trim())\n\n/**\n * `<PostPurchaseAccountPrompt email={receipt.email} capabilities={caps} data={actionData} form={Form} next=\"/cuenta/pedidos\" />`\n */\nexport function PostPurchaseAccountPrompt({\n email,\n capabilities,\n data,\n next,\n pending = false,\n form: FormTag = 'form',\n action,\n headingLevel = 2,\n loginHref,\n locale,\n messages,\n classNames: cx = {},\n children,\n}: PostPurchaseAccountPromptProps) {\n const m = postPurchaseAccountPromptMessages(locale, messages)\n const ref = useRef<HTMLFormElement>(null)\n const passwordOn = capabilities.password\n const otpOn = capabilities.otp_channels.includes('email')\n const errorText = data?.error ? m.errors[data.error.code] : null\n const v = useFieldErrors(ref, { ...(locale ? { locale } : {}), serverFields: data?.error?.field === 'code' || data?.error?.field === 'password' ? [data.error.field] : null, serverMessages: data?.error?.field && errorText ? { [data.error.field]: errorText } : null })\n if (!validEmail(email) || (!passwordOn && !otpOn)) return null\n\n const address = email.trim().toLowerCase()\n const step = data?.step === 'verify' || data?.step === 'otp' ? data.step : null\n const view = step ?? (passwordOn ? 'register' : 'otp-request')\n const intent = step === 'verify' ? 'verify' : step === 'otp' ? 'otp-login' : passwordOn ? 'register' : 'otp-request'\n const label = view === 'verify' || view === 'otp' ? m.submitCode : view === 'otp-request' ? m.submitOtp : m.submit\n const Heading = `h${headingLevel}` as 'h2'\n const fieldProps = { classNames: cx.field, ...(locale ? { locale } : {}) }\n // Only the errors with no field of their own go in the alert; the others are inline.\n const showAlert = errorText && !(data?.error?.field === 'code' || data?.error?.field === 'password')\n // Only a verified mailbox earns the guest order in the history (storefront_customers scopes by verified email).\n const benefit = (capabilities.email_verification ? m.benefit : m.benefitBasic).replace('{email}', address)\n\n return (\n <section className={cx.root} data-sf-ppa data-sf-ppa-view={view} aria-labelledby=\"sf-ppa-title\">\n <Heading id=\"sf-ppa-title\" className={cx.title}>\n {m.title}\n </Heading>\n <p className={cx.text} data-sf-ppa-benefit>\n {benefit}\n </p>\n <FormTag ref={ref as never} method=\"post\" {...(action ? { action } : {})} className={cx.form} data-sf-ppa-form>\n <ErrorSummary items={v.summary} focusKey={v.summaryKey} {...(locale ? { locale } : {})} />\n {showAlert ? (\n <p role=\"alert\" className={cx.error} data-sf-ppa-error={data!.error!.code}>\n {errorText}\n </p>\n ) : null}\n <input type=\"hidden\" name=\"email\" value={address} />\n {next ? <input type=\"hidden\" name=\"next\" value={next} /> : null}\n <p className={cx.email} data-sf-ppa-email>\n {m.accountFor.replace('{email}', address)}\n </p>\n {step ? (\n <>\n <p className={cx.notice} role=\"status\" data-sf-ppa-notice>\n {m.codeSentTo.replace('{email}', address)}\n </p>\n <CheckoutField {...fieldProps} name=\"code\" label={m.code} autoComplete=\"one-time-code\" inputMode=\"numeric\" pattern=\"[0-9]*\" error={v.errors.code ?? null} />\n </>\n ) : passwordOn ? (\n <CheckoutField {...fieldProps} name=\"password\" type=\"password\" label={m.password} autoComplete=\"new-password\" minLength={10} maxLength={128} hint={m.passwordHint} error={v.errors.password ?? null} />\n ) : null}\n <div className={cx.actions}>\n <button type=\"submit\" name=\"intent\" value={intent} disabled={pending} className={cx.submit} data-sf-ppa-submit>\n {label}\n </button>\n </div>\n </FormTag>\n <p className={cx.note} data-sf-ppa-note>\n {m.skipNote}\n {loginHref ? (\n <>\n {' '}\n <a href={loginHref} className={cx.link} data-sf-ppa-login>\n {m.loginLink}\n </a>\n </>\n ) : null}\n </p>\n {children}\n </section>\n )\n}\n","/**\n * Texts of the order screens (`OrderList`, `OrderProgress`, `NextActionBar`, `ShipmentCard`, `InvoiceList`,\n * `PendingPaymentCard`, `RefundList`). Spanish (es-MX) by default, English with `en*`, anything with `messages`.\n * Server enums are open: every group has a `*.unknown` text so a value this SDK has never seen reads as plain words,\n * never as a raw code.\n */\nimport { fill } from '../fiscal/messages.js'\n\nexport { fill }\n\nconst ES = {\n // order list\n 'order.number': 'Pedido {number}',\n 'order.placed': 'Realizado el {date}',\n 'order.total': 'Total',\n 'order.view': 'Ver pedido',\n 'order.items.one': '{count} artículo',\n 'order.items.other': '{count} artículos',\n 'order.lines': 'Artículos del pedido',\n 'order.line.quantity': 'Cantidad {n}',\n 'order.line.each': '{price} c/u',\n 'order.line.unavailable': 'Producto no disponible',\n 'order.productsMore': 'y {n} más',\n 'order.stepOf': 'Paso {n} de {total}: {step}',\n 'order.listLabel': 'Tus pedidos',\n 'order.loading': 'Cargando tus pedidos',\n 'order.loadMore': 'Ver más pedidos',\n 'order.loadingMore': 'Cargando…',\n 'order.error': 'No pudimos cargar tus pedidos. Tus compras están a salvo.',\n 'order.retry': 'Reintentar',\n 'order.emptyTitle': 'Aún no tienes pedidos',\n 'order.emptyBody': 'Cuando compres, aquí verás el estado y el envío de cada pedido.',\n 'order.emptyGuest': '¿Compraste como invitado? Verifica tu correo para ver aquí tus pedidos.',\n // stage (order status)\n 'stage.pending_payment': 'Esperando pago',\n 'stage.paid': 'Pagado',\n 'stage.preparing': 'En preparación',\n 'stage.ready_for_pickup': 'Listo para recoger',\n 'stage.shipped': 'Enviado',\n 'stage.in_transit': 'En camino',\n 'stage.out_for_delivery': 'En reparto',\n 'stage.delivered': 'Entregado',\n 'stage.cancelled': 'Cancelado',\n 'stage.refunded': 'Reembolsado',\n 'stage.unknown': 'En proceso',\n // progress\n 'progress.label': 'Progreso del pedido',\n 'step.paid': 'Pagado',\n 'step.preparing': 'En preparación',\n 'step.shipped': 'Enviado',\n 'step.in_transit': 'En camino',\n 'step.ready_for_pickup': 'Listo para recoger',\n 'step.delivered': 'Entregado',\n 'step.unknown': 'Siguiente paso',\n 'stepState.done': 'completado',\n 'stepState.current': 'paso actual',\n 'stepState.pending': 'pendiente',\n 'stepState.problem': 'con incidencia',\n 'problem.delivery_exception': 'Hubo un problema con la entrega. Contacta a la tienda si no se resuelve.',\n 'problem.returned': 'El paquete regresó a la tienda. Contáctanos para coordinar un nuevo envío.',\n 'problem.lost': 'No encontramos tu paquete. Contáctanos y lo resolvemos.',\n 'problem.payment_failed': 'El pago no se completó. Puedes intentarlo de nuevo.',\n 'problem.unknown': 'Tu pedido tiene una incidencia. Contacta a la tienda.',\n 'progress.cancelled': 'Este pedido fue cancelado.',\n 'progress.refunded': 'Este pedido fue reembolsado.',\n // next action\n 'action.pay': 'Pagar ahora',\n 'action.track': 'Rastrear envío',\n 'action.pickup': 'Recoger en sucursal',\n 'action.download_invoice': 'Descargar factura',\n 'action.request_invoice': 'Solicitar factura',\n 'action.correct_invoice_data': 'Corregir datos de facturación',\n 'action.contact_store': 'Contactar a la tienda',\n 'action.unknown': 'Ver detalle',\n 'action.newTab': '(se abre en una pestaña nueva)',\n 'action.label': 'Siguiente paso del pedido',\n // shipment\n 'shipment.title': 'Envío',\n 'shipment.return': 'Devolución',\n 'shipment.carrier': 'Paquetería',\n 'shipment.service': 'Servicio',\n 'shipment.number': 'Número de guía',\n 'shipment.copy': 'Copiar',\n 'shipment.copied': 'Copiado',\n 'shipment.copyFailed': 'No pudimos copiar; selecciona el texto.',\n 'shipment.track': 'Rastrear con {carrier}',\n 'shipment.trackGeneric': 'Rastrear envío',\n 'shipment.promised': 'Llega a más tardar el {date}',\n 'shipment.delivered': 'Entregado el {date}',\n 'shipment.shipped': 'Enviado el {date}',\n 'shipment.events': 'Movimientos',\n 'shipment.noEvents': 'La paquetería aún no registra movimientos; suele tardar 24 horas.',\n 'shipment.showAll': 'Ver todo ({count})',\n 'shipment.showLess': 'Ver menos',\n 'shipment.returnLabel': 'Guía de devolución',\n 'shipment.test': 'De prueba',\n 'shipment.testNote': 'Envío de prueba: no es un envío real.',\n 'shipment.preparing': 'Preparando tu envío',\n 'shipment.status.pending': 'Preparando envío',\n 'shipment.status.label_created': 'Guía generada',\n 'shipment.status.in_transit': 'En camino',\n 'shipment.status.out_for_delivery': 'En reparto',\n 'shipment.status.delivered': 'Entregado',\n 'shipment.status.exception': 'Incidencia en la entrega',\n 'shipment.status.returned': 'Devuelto a la tienda',\n 'shipment.status.lost': 'Extraviado',\n 'shipment.status.cancelled': 'Cancelado',\n 'shipment.status.unknown': 'En proceso',\n 'shipment.eventFrom': '{location}',\n // invoices\n 'invoice.title': 'Facturas',\n 'invoice.invoice': 'Factura',\n 'invoice.creditNote': 'Nota de crédito',\n 'invoice.creditNoteOf': 'Corrige la factura {folio}',\n 'invoice.folio': 'Folio fiscal',\n 'invoice.series': 'Serie y folio',\n 'invoice.issued': 'Emitida el {date}',\n 'invoice.total': 'Total',\n 'invoice.pdf': 'Descargar PDF',\n 'invoice.xml': 'Descargar XML',\n 'invoice.downloadOf': '{action}, {kind} {name}',\n 'invoice.none': 'Aún no hay facturas de este pedido.',\n 'invoice.test': 'Factura de prueba, sin validez',\n 'invoice.status.issued': 'Emitida',\n 'invoice.status.pending': 'En proceso',\n 'invoice.status.cancelled': 'Cancelada',\n 'invoice.status.error': 'No se pudo emitir',\n 'invoice.status.unknown': 'En proceso',\n 'invoice.statusNote.pending': 'La estamos generando; te avisaremos cuando esté lista.',\n 'invoice.statusNote.error': 'Contacta a la tienda para resolverlo.',\n 'invoice.statusNote.cancelled': 'Esta factura fue cancelada y ya no tiene validez.',\n // pending payment\n 'pending.title': 'Pendientes de pago',\n 'pending.intro': 'Tu pedido se genera en cuanto confirmamos el pago. Paga con la ficha antes de que venza.',\n 'pending.waiting': 'Esperando pago',\n 'pending.expired': 'Vencida',\n 'pending.reference': 'Referencia',\n 'pending.clabe': 'CLABE',\n 'pending.expires': 'Vence el {date}',\n 'pending.expiredOn': 'Venció el {date}',\n 'pending.total': 'Total',\n 'pending.copyReference': 'Copiar referencia',\n 'pending.copyClabe': 'Copiar CLABE',\n 'pending.copied': 'Copiada',\n 'pending.copyFailed': 'No pudimos copiar; selecciona el texto.',\n 'pending.print': 'Ver e imprimir ficha',\n 'pending.download': 'Descargar ficha',\n 'pending.expiredNote': 'Esta ficha ya no es válida. Haz tu pedido de nuevo.',\n 'pending.barcode': 'Código de barras {code}',\n 'pending.method.oxxo': 'OXXO',\n 'pending.method.spei': 'Transferencia SPEI',\n 'pending.method.bank_transfer': 'Transferencia bancaria',\n 'pending.method.bank_deposit': 'Depósito bancario',\n 'pending.method.cash': 'Pago en efectivo',\n 'pending.method.unknown': 'Pago en efectivo',\n // refunds & payments\n 'refund.title': 'Reembolsos',\n 'refund.status.requested': 'Solicitado',\n 'refund.status.processing': 'En proceso',\n 'refund.status.completed': 'Completado',\n 'refund.status.failed': 'No se pudo completar',\n 'refund.status.unknown': 'En proceso',\n 'refund.requested': 'Solicitado el {date}',\n 'refund.completed': 'Completado el {date}',\n 'refund.none': 'Este pedido no tiene reembolsos.',\n 'payment.title': 'Pagos',\n 'payment.status.paid': 'Pagado',\n 'payment.status.pending': 'Pendiente',\n 'payment.status.failed': 'Fallido',\n 'payment.status.refunded': 'Reembolsado',\n 'payment.status.partially_refunded': 'Reembolsado parcialmente',\n 'payment.status.unknown': 'En proceso',\n 'payment.paidOn': 'Pagado el {date}',\n 'payment.method.card': 'Tarjeta',\n 'payment.method.credit_card': 'Tarjeta de crédito',\n 'payment.method.debit_card': 'Tarjeta de débito',\n 'payment.method.cash_voucher': 'Efectivo con ficha (OXXO, tienda de conveniencia)',\n 'payment.method.oxxo': 'Efectivo en OXXO',\n 'payment.method.spei': 'Transferencia SPEI',\n 'payment.method.transfer': 'Transferencia bancaria',\n 'payment.method.bank_deposit': 'Depósito bancario',\n 'payment.method.wallet': 'Billetera digital',\n 'payment.method.cash': 'Efectivo',\n 'payment.method.other': 'Otro medio de pago',\n 'payment.method.unknown': 'Medio de pago',\n // sections\n 'section.error': 'No pudimos cargar esta sección.',\n 'section.retry': 'Reintentar',\n 'section.loading': 'Cargando',\n} as const\n\nexport type AccountMessageKey = keyof typeof ES\nexport type AccountMessages = Record<AccountMessageKey, string>\n\nconst EN: AccountMessages = {\n 'order.number': 'Order {number}',\n 'order.placed': 'Placed on {date}',\n 'order.total': 'Total',\n 'order.view': 'View order',\n 'order.items.one': '{count} item',\n 'order.items.other': '{count} items',\n 'order.lines': 'Items in this order',\n 'order.line.quantity': 'Quantity {n}',\n 'order.line.each': '{price} each',\n 'order.line.unavailable': 'Product unavailable',\n 'order.productsMore': 'and {n} more',\n 'order.stepOf': 'Step {n} of {total}: {step}',\n 'order.listLabel': 'Your orders',\n 'order.loading': 'Loading your orders',\n 'order.loadMore': 'Show more orders',\n 'order.loadingMore': 'Loading…',\n 'order.error': 'We could not load your orders. Your purchases are safe.',\n 'order.retry': 'Try again',\n 'order.emptyTitle': 'You have no orders yet',\n 'order.emptyBody': 'When you buy, you will see the status and shipment of each order here.',\n 'order.emptyGuest': 'Did you buy as a guest? Verify your email to see your orders here.',\n 'stage.pending_payment': 'Waiting for payment',\n 'stage.paid': 'Paid',\n 'stage.preparing': 'Being prepared',\n 'stage.ready_for_pickup': 'Ready for pickup',\n 'stage.shipped': 'Shipped',\n 'stage.in_transit': 'On its way',\n 'stage.out_for_delivery': 'Out for delivery',\n 'stage.delivered': 'Delivered',\n 'stage.cancelled': 'Cancelled',\n 'stage.refunded': 'Refunded',\n 'stage.unknown': 'In progress',\n 'progress.label': 'Order progress',\n 'step.paid': 'Paid',\n 'step.preparing': 'Being prepared',\n 'step.shipped': 'Shipped',\n 'step.in_transit': 'On its way',\n 'step.ready_for_pickup': 'Ready for pickup',\n 'step.delivered': 'Delivered',\n 'step.unknown': 'Next step',\n 'stepState.done': 'completed',\n 'stepState.current': 'current step',\n 'stepState.pending': 'pending',\n 'stepState.problem': 'has a problem',\n 'problem.delivery_exception': 'There was a problem with the delivery. Contact the store if it is not resolved.',\n 'problem.returned': 'The package went back to the store. Contact us to arrange a new shipment.',\n 'problem.lost': 'We could not find your package. Contact us and we will sort it out.',\n 'problem.payment_failed': 'The payment did not go through. You can try again.',\n 'problem.unknown': 'Your order has a problem. Contact the store.',\n 'progress.cancelled': 'This order was cancelled.',\n 'progress.refunded': 'This order was refunded.',\n 'action.pay': 'Pay now',\n 'action.track': 'Track shipment',\n 'action.pickup': 'Pick up in store',\n 'action.download_invoice': 'Download invoice',\n 'action.request_invoice': 'Request invoice',\n 'action.correct_invoice_data': 'Fix billing details',\n 'action.contact_store': 'Contact the store',\n 'action.unknown': 'View details',\n 'action.newTab': '(opens in a new tab)',\n 'action.label': 'Next step of the order',\n 'shipment.title': 'Shipment',\n 'shipment.return': 'Return',\n 'shipment.carrier': 'Carrier',\n 'shipment.service': 'Service',\n 'shipment.number': 'Tracking number',\n 'shipment.copy': 'Copy',\n 'shipment.copied': 'Copied',\n 'shipment.copyFailed': 'We could not copy; select the text.',\n 'shipment.track': 'Track with {carrier}',\n 'shipment.trackGeneric': 'Track shipment',\n 'shipment.promised': 'Arrives by {date}',\n 'shipment.delivered': 'Delivered on {date}',\n 'shipment.shipped': 'Shipped on {date}',\n 'shipment.events': 'Updates',\n 'shipment.noEvents': 'The carrier has not reported any movement yet; it usually takes 24 hours.',\n 'shipment.showAll': 'Show all ({count})',\n 'shipment.showLess': 'Show less',\n 'shipment.returnLabel': 'Return label',\n 'shipment.test': 'Test',\n 'shipment.testNote': 'Test shipment: it is not a real shipment.',\n 'shipment.preparing': 'Preparing your shipment',\n 'shipment.status.pending': 'Preparing shipment',\n 'shipment.status.label_created': 'Label created',\n 'shipment.status.in_transit': 'On its way',\n 'shipment.status.out_for_delivery': 'Out for delivery',\n 'shipment.status.delivered': 'Delivered',\n 'shipment.status.exception': 'Delivery problem',\n 'shipment.status.returned': 'Returned to the store',\n 'shipment.status.lost': 'Lost',\n 'shipment.status.cancelled': 'Cancelled',\n 'shipment.status.unknown': 'In progress',\n 'shipment.eventFrom': '{location}',\n 'invoice.title': 'Invoices',\n 'invoice.invoice': 'Invoice',\n 'invoice.creditNote': 'Credit note',\n 'invoice.creditNoteOf': 'Corrects invoice {folio}',\n 'invoice.folio': 'Tax folio',\n 'invoice.series': 'Series and number',\n 'invoice.issued': 'Issued on {date}',\n 'invoice.total': 'Total',\n 'invoice.pdf': 'Download PDF',\n 'invoice.xml': 'Download XML',\n 'invoice.downloadOf': '{action}, {kind} {name}',\n 'invoice.none': 'There are no invoices for this order yet.',\n 'invoice.test': 'Test invoice, not valid',\n 'invoice.status.issued': 'Issued',\n 'invoice.status.pending': 'In progress',\n 'invoice.status.cancelled': 'Cancelled',\n 'invoice.status.error': 'Could not be issued',\n 'invoice.status.unknown': 'In progress',\n 'invoice.statusNote.pending': 'We are generating it; we will let you know when it is ready.',\n 'invoice.statusNote.error': 'Contact the store to resolve it.',\n 'invoice.statusNote.cancelled': 'This invoice was cancelled and is no longer valid.',\n 'pending.title': 'Waiting for payment',\n 'pending.intro': 'Your order is created as soon as we confirm the payment. Pay with the voucher before it expires.',\n 'pending.waiting': 'Waiting for payment',\n 'pending.expired': 'Expired',\n 'pending.reference': 'Reference',\n 'pending.clabe': 'CLABE',\n 'pending.expires': 'Expires on {date}',\n 'pending.expiredOn': 'Expired on {date}',\n 'pending.total': 'Total',\n 'pending.copyReference': 'Copy reference',\n 'pending.copyClabe': 'Copy CLABE',\n 'pending.copied': 'Copied',\n 'pending.copyFailed': 'We could not copy; select the text.',\n 'pending.print': 'View and print voucher',\n 'pending.download': 'Download voucher',\n 'pending.expiredNote': 'This voucher is no longer valid. Place your order again.',\n 'pending.barcode': 'Barcode {code}',\n 'pending.method.oxxo': 'OXXO',\n 'pending.method.spei': 'SPEI transfer',\n 'pending.method.bank_transfer': 'Bank transfer',\n 'pending.method.bank_deposit': 'Bank deposit',\n 'pending.method.cash': 'Cash payment',\n 'pending.method.unknown': 'Cash payment',\n 'refund.title': 'Refunds',\n 'refund.status.requested': 'Requested',\n 'refund.status.processing': 'In progress',\n 'refund.status.completed': 'Completed',\n 'refund.status.failed': 'Could not be completed',\n 'refund.status.unknown': 'In progress',\n 'refund.requested': 'Requested on {date}',\n 'refund.completed': 'Completed on {date}',\n 'refund.none': 'This order has no refunds.',\n 'payment.title': 'Payments',\n 'payment.status.paid': 'Paid',\n 'payment.status.pending': 'Pending',\n 'payment.status.failed': 'Failed',\n 'payment.status.refunded': 'Refunded',\n 'payment.status.partially_refunded': 'Partially refunded',\n 'payment.status.unknown': 'In progress',\n 'payment.paidOn': 'Paid on {date}',\n 'payment.method.card': 'Card',\n 'payment.method.credit_card': 'Credit card',\n 'payment.method.debit_card': 'Debit card',\n 'payment.method.cash_voucher': 'Cash with a voucher (OXXO, convenience store)',\n 'payment.method.oxxo': 'Cash at OXXO',\n 'payment.method.spei': 'SPEI transfer',\n 'payment.method.transfer': 'Bank transfer',\n 'payment.method.bank_deposit': 'Bank deposit',\n 'payment.method.wallet': 'Digital wallet',\n 'payment.method.cash': 'Cash',\n 'payment.method.other': 'Other payment method',\n 'payment.method.unknown': 'Payment method',\n 'section.error': 'We could not load this section.',\n 'section.retry': 'Try again',\n 'section.loading': 'Loading',\n}\n\n/** Messages for a locale (`es*` default, `en*`), with optional per-key overrides. */\nexport function accountMessages(locale?: string | null, overrides?: Partial<AccountMessages> | null): AccountMessages {\n const base: AccountMessages = (locale ?? 'es-MX').toLowerCase().startsWith('en') ? EN : ES\n return overrides ? { ...base, ...overrides } : base\n}\n\n/** Text for an open enum: `<group>.<value>` when this SDK knows it, else `<group>.unknown`. Never the raw value. */\nexport function enumText(m: AccountMessages, group: string, value: unknown): string {\n const key = `${group}.${typeof value === 'string' ? value : ''}` as AccountMessageKey\n return Object.prototype.hasOwnProperty.call(m, key) ? m[key] : m[`${group}.unknown` as AccountMessageKey]\n}\n","/** Small shared pieces of the order screens: date formatting, hidden text, copy button, text resolution. */\nimport { formatMoney } from '@asteby/storefront'\nimport { useCallback, useEffect, useRef, useState, type CSSProperties, type ReactNode } from 'react'\nimport { useResolvedLocale } from '../locale.js'\nimport { accountMessages, fill, type AccountMessages } from './orders-messages.js'\n\nconst SR_ONLY: CSSProperties = {\n position: 'absolute',\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: 'hidden',\n clip: 'rect(0 0 0 0)',\n whiteSpace: 'nowrap',\n border: 0,\n}\n\n/**\n * Text the server (or the carrier through it) sent, ready to render: a trimmed non-empty string, a finite number as\n * text, else `null`. Every free-text field passes here, so an object or a number where a string was expected never\n * reaches React as a child (which throws) and never prints as `[object Object]`.\n */\nexport function str(v: unknown): string | null {\n if (typeof v === 'number') return Number.isFinite(v) ? String(v) : null\n if (typeof v !== 'string') return null\n const s = v.trim()\n return s ? s : null\n}\n\n/** A `Money` formatted, or `null` when it is missing or malformed (never a made-up `$0.00`). */\nexport function moneyText(v: unknown, locale: string): string | null {\n if (!v || typeof v !== 'object') return null\n const { amount, currency_code } = v as Record<string, unknown>\n const a = typeof amount === 'number' ? String(amount) : amount\n if (typeof a !== 'string' || !a.trim() || !Number.isFinite(Number(a)) || typeof currency_code !== 'string' || !/^[A-Za-z]{3}$/.test(currency_code)) return null\n return formatMoney({ amount: a.trim(), currency_code: currency_code.toUpperCase() }, locale)\n}\n\n/** Visually hidden text for screen readers. */\nexport function Hidden({ children }: { children: ReactNode }) {\n return <span style={SR_ONLY}>{children}</span>\n}\n\nexport type AccountTextProps = {\n /** BCP 47; defaults to the provider's, then `es-MX`. */\n locale?: string\n /** Per-key text overrides (a store's own words). */\n messages?: Partial<AccountMessages>\n /** IANA time zone for dates (`America/Mexico_City`). Pass the store's own to get the same text on server and browser. */\n timeZone?: string\n}\n\n/** The texts and the date formatter of a component. */\nexport function useAccountText({ locale, messages, timeZone }: AccountTextProps) {\n const resolved = useResolvedLocale(locale)\n const m = accountMessages(resolved, messages)\n const date = (iso: string | null | undefined, style: 'date' | 'datetime' = 'date'): string | null => formatDate(iso, resolved, style, timeZone)\n const t = (key: keyof AccountMessages, vars?: Record<string, string | number>): string => (vars ? fill(m[key], vars) : m[key])\n return { locale: resolved, m, t, date, timeZone }\n}\n\n/** `\"12 de agosto de 2026\"`; `null` for a missing or invalid value. A bare `YYYY-MM-DD` is a calendar day, not an instant. */\nexport function formatDate(iso: string | null | undefined, locale: string, style: 'date' | 'datetime' = 'date', timeZone?: string): string | null {\n if (!iso || typeof iso !== 'string') return null\n const dayOnly = /^\\d{4}-\\d{2}-\\d{2}$/.test(iso)\n const d = new Date(dayOnly ? `${iso}T12:00:00Z` : iso)\n if (Number.isNaN(d.getTime())) return null\n const zone = dayOnly ? 'UTC' : timeZone\n try {\n return new Intl.DateTimeFormat(locale, { dateStyle: 'long', ...(style === 'datetime' && !dayOnly ? { timeStyle: 'short' } : {}), ...(zone ? { timeZone: zone } : {}) }).format(d)\n } catch {\n return d.toISOString().slice(0, 10)\n }\n}\n\n/** A `<time>` with its machine value. Server and browser may disagree on the zone: the text is allowed to differ. */\nexport function Time({ value, text, className }: { value: string | null | undefined; text: string | null; className?: string | undefined }) {\n if (!value || !text) return null\n return (\n <time dateTime={value} className={className} suppressHydrationWarning>\n {text}\n </time>\n )\n}\n\n/** Plural by count (`one` for 1) with the `{count}` template. */\nexport function plural(m: AccountMessages, base: 'order.items', count: number): string {\n return fill(base === 'order.items' && count === 1 ? m['order.items.one'] : m['order.items.other'], { count })\n}\n\nexport type CopyButtonProps = {\n value: string\n label: string\n copiedLabel: string\n failedLabel: string\n className?: string | undefined\n /** Accessible name when the visible label is generic (\"Copiar\" for the tracking number). */\n ariaLabel?: string | undefined\n 'data-sf-copy'?: string\n}\n\n/**\n * Copies `value` to the clipboard. The result is announced in a polite live region (visible text or not) so it is\n * heard; when the browser refuses (no permission, insecure context) the buyer is told to select the text instead.\n */\nexport function CopyButton({ value, label, copiedLabel, failedLabel, className, ariaLabel, ...rest }: CopyButtonProps) {\n const [state, setState] = useState<'idle' | 'copied' | 'failed'>('idle')\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n useEffect(() => () => clearTimeout(timer.current), [])\n const copy = useCallback(async () => {\n try {\n await navigator.clipboard.writeText(value)\n setState('copied')\n } catch {\n setState('failed')\n }\n clearTimeout(timer.current)\n timer.current = setTimeout(() => setState('idle'), 3000)\n }, [value])\n return (\n <>\n <button type=\"button\" onClick={copy} className={className} aria-label={ariaLabel} data-sf-copy={rest['data-sf-copy'] ?? ''} data-state={state}>\n {state === 'copied' ? copiedLabel : label}\n </button>\n <span role=\"status\" aria-live=\"polite\" data-sf-copy-status style={state === 'failed' ? undefined : SR_ONLY}>\n {state === 'copied' ? copiedLabel : state === 'failed' ? failedLabel : ''}\n </span>\n </>\n )\n}\n","/**\n * Lines of an order, as the customer recognises them: picture, name, variant, SKU, quantity and the line total.\n * Headless (`data-sf-order-lines`), built on the shared `ProductPreview`. A line without picture or whose product no\n * longer exists is still a complete row (designed placeholder, \"Producto no disponible\"), and a malformed line from\n * the server is skipped instead of breaking the page.\n */\nimport type { Order, OrderLine } from '@asteby/storefront'\nimport { ProductPreview, ProductThumbStack, type ProductPreviewClassNames, type ProductThumbImage } from '../ui/product-preview.js'\nimport { fill } from './orders-messages.js'\nimport { moneyText, str, useAccountText, type AccountTextProps } from './orders-ui.js'\n\n/** The picture of a line when it carries a usable URL. */\nexport function lineImage(line: Partial<OrderLine> | null | undefined): ProductThumbImage | null {\n const img = line?.image\n if (!img || typeof img !== 'object') return null\n const url = str((img as { url?: unknown }).url)\n if (!url) return null\n const alt = str((img as { alt?: unknown }).alt)\n const w = Number((img as { width?: unknown }).width)\n const h = Number((img as { height?: unknown }).height)\n return { url, alt, ...(Number.isFinite(w) && w > 0 ? { width: w } : {}), ...(Number.isFinite(h) && h > 0 ? { height: h } : {}) }\n}\n\nfunction validLines(order: Pick<Order, 'lines'> | { lines?: unknown }): OrderLine[] {\n return (Array.isArray(order.lines) ? order.lines : []).filter((l): l is OrderLine => !!l && typeof l === 'object')\n}\n\nexport type OrderLinesClassNames = Partial<Record<'root' | 'list' | 'item', string>> & { preview?: ProductPreviewClassNames }\n\nexport type OrderLinesProps = AccountTextProps & {\n order: Pick<Order, 'lines'>\n /** Product page of a line (return `null` for none). */\n lineHref?: (line: OrderLine) => string | null | undefined\n /** Thumb side in px. Default 64. */\n size?: number\n /** Heading of the list for screen readers. */\n label?: string\n classNames?: OrderLinesClassNames\n}\n\nexport function OrderLines({ order, lineHref, size = 64, label, classNames: cx = {}, ...text }: OrderLinesProps) {\n const { m, locale } = useAccountText(text)\n const lines = validLines(order)\n if (lines.length === 0) return null\n return (\n <div className={cx.root} data-sf-order-lines=\"\">\n <ul className={cx.list} aria-label={label ?? m['order.lines']} data-sf-order-lines-list=\"\">\n {lines.map((l, i) => {\n const qty = Number.isFinite(l.quantity) && l.quantity > 0 ? l.quantity : 1\n const unit = moneyText(l.unit, locale)\n const variant = str(l.variant_title)\n return (\n <li key={`${str(l.sku) ?? ''}-${i}`} className={cx.item} data-sf-order-line=\"\">\n <ProductPreview\n image={lineImage(l)}\n name={str(l.title) ?? ''}\n variant={variant && !/^default( title)?$/i.test(variant) ? variant : null}\n sku={str(l.sku)}\n quantity={qty}\n quantityLabel={m['order.line.quantity']}\n unavailableLabel={m['order.line.unavailable']}\n unitPrice={unit ? fill(m['order.line.each'], { price: unit }) : null}\n total={moneyText(l.total, locale)}\n href={lineHref?.(l) ?? null}\n size={size}\n {...(cx.preview ? { classNames: cx.preview } : {})}\n />\n </li>\n )\n })}\n </ul>\n </div>\n )\n}\n\n/** The products of an order as overlapped pictures with \"+N\": the glance of an order card. */\nexport function OrderProductsStack({ order, size = 44, max = 4, className, ...text }: AccountTextProps & { order: Pick<Order, 'lines'>; size?: number; max?: number; className?: string }) {\n const { m } = useAccountText(text)\n const lines = validLines(order)\n if (lines.length === 0) return null\n return (\n <ProductThumbStack\n items={lines.map((l) => ({ image: lineImage(l), name: str(l.title) }))}\n size={size}\n max={max}\n moreLabel={m['order.productsMore']}\n {...(className ? { className } : {})}\n />\n )\n}\n","/**\n * The unified timeline of an order (`OrderProgress`), the status badge and the next-action button. Headless: no styles,\n * `data-sf-*` hooks and `classNames` slots. Reads `order.progress` / `order.next_action` (or derives them for an older\n * OPS) and never invents a state: an unknown stage, step or problem code renders as a generic text.\n */\nimport type { NextAction, Order, OrderProgress as OrderProgressData, OrderProgressStep } from '@asteby/storefront'\nimport { nextAction as deriveNextAction, orderProgress as deriveProgress, safeTrackingUrl } from '@asteby/storefront'\nimport type { MouseEvent, ReactNode } from 'react'\nimport { enumText } from './orders-messages.js'\nimport { Hidden, Time, useAccountText, type AccountTextProps } from './orders-ui.js'\n\nconst STEP_STATES = new Set(['done', 'current', 'pending', 'problem'])\nconst stepState = (s: unknown): 'done' | 'current' | 'pending' | 'problem' => (typeof s === 'string' && STEP_STATES.has(s) ? (s as 'done') : 'pending')\n\n/** A shape per state so the state never depends on color alone. */\nconst GLYPH = { done: '✓', current: '●', pending: '○', problem: '!' } as const\n\nexport type OrderTone = 'done' | 'current' | 'problem' | 'muted'\n\n/** Tone of a stage for the store's own colors (`data-sf-tone`). */\nexport function stageTone(stage: string, problem?: unknown): OrderTone {\n if (problem) return 'problem'\n if (stage === 'delivered') return 'done'\n if (stage === 'cancelled' || stage === 'refunded') return 'muted'\n if (['pending_payment', 'paid', 'preparing', 'ready_for_pickup', 'shipped', 'in_transit', 'out_for_delivery'].includes(stage)) return 'current'\n return 'muted'\n}\n\nexport type OrderStatusBadgeProps = AccountTextProps & {\n /** The order (its `progress` or a derived one is used) ... */\n order?: Order\n /** ... or the progress itself. */\n progress?: OrderProgressData\n className?: string\n}\n\n/** Status in words with a semantic tone: `<span data-sf-order-badge data-sf-tone=\"current\">En camino</span>`. */\nexport function OrderStatusBadge({ order, progress, className, ...text }: OrderStatusBadgeProps) {\n const { m } = useAccountText(text)\n const p = progress ?? (order ? deriveProgress(order) : null)\n if (!p) return null\n return (\n <span className={className} data-sf-order-badge data-sf-stage={p.stage} data-sf-tone={stageTone(p.stage, p.problem)}>\n {enumText(m, 'stage', p.stage)}\n {p.problem ? <Hidden>{`, ${m['stepState.problem']}`}</Hidden> : null}\n </span>\n )\n}\n\nexport type OrderProgressClassNames = Partial<Record<'root' | 'list' | 'step' | 'marker' | 'label' | 'time' | 'problem' | 'terminal', string>>\n\nexport type OrderProgressProps = AccountTextProps & {\n /** Pass the order (progress is read or derived) ... */\n order?: Order\n /** ... or the progress. */\n progress?: OrderProgressData\n /** `compact`: only the current step and \"step 3 of 5\", for a list card. */\n variant?: 'full' | 'compact'\n classNames?: OrderProgressClassNames\n}\n\n/**\n * `<ol>` with the steps paid → preparing → shipped → on its way → delivered (or pickup). The current step carries\n * `aria-current=\"step\"`; every state also has text for screen readers, and a problem is written out below the list.\n */\nexport function OrderProgress({ order, progress, variant = 'full', classNames: cx = {}, ...text }: OrderProgressProps) {\n const { m, t, date } = useAccountText(text)\n const p = progress ?? (order ? deriveProgress(order) : null)\n if (!p) return null\n const steps: OrderProgressStep[] = Array.isArray(p.steps) ? p.steps.filter((s) => s && typeof s === 'object') : []\n const stepLabel = (s: OrderProgressStep) => enumText(m, 'step', s.key)\n\n if (steps.length === 0 || p.stage === 'cancelled' || p.stage === 'refunded') {\n const note = p.stage === 'cancelled' ? m['progress.cancelled'] : p.stage === 'refunded' ? m['progress.refunded'] : enumText(m, 'stage', p.stage)\n return (\n <div className={cx.root} data-sf-progress data-sf-stage={p.stage} data-sf-variant={variant}>\n <p className={cx.terminal} data-sf-progress-terminal>\n {note}\n </p>\n </div>\n )\n }\n\n if (variant === 'compact') {\n const at = Math.max(0, steps.findIndex((s) => stepState(s.state) === 'current' || stepState(s.state) === 'problem'))\n const index = steps.some((s) => stepState(s.state) === 'current' || stepState(s.state) === 'problem') ? at : steps.every((s) => stepState(s.state) === 'done') ? steps.length - 1 : 0\n return (\n <div className={cx.root} data-sf-progress data-sf-stage={p.stage} data-sf-variant=\"compact\">\n <p className={cx.label} data-sf-progress-summary>\n {t('order.stepOf', { n: index + 1, total: steps.length, step: stepLabel(steps[index]!) })}\n </p>\n </div>\n )\n }\n\n return (\n <div className={cx.root} data-sf-progress data-sf-stage={p.stage} data-sf-variant=\"full\">\n <ol className={cx.list} aria-label={m['progress.label']} data-sf-progress-list>\n {steps.map((s, i) => {\n const state = stepState(s.state)\n return (\n <li key={`${s.key}-${i}`} className={cx.step} data-sf-step={typeof s.key === 'string' ? s.key : 'unknown'} data-sf-step-state={state} {...(state === 'current' || state === 'problem' ? { 'aria-current': 'step' as const } : {})}>\n <span className={cx.marker} aria-hidden=\"true\" data-sf-step-marker>\n {GLYPH[state]}\n </span>\n <span className={cx.label} data-sf-step-label>\n {stepLabel(s)}\n <Hidden>{`, ${m[`stepState.${state}`]}`}</Hidden>\n </span>\n <Time value={s.at} text={date(s.at)} className={cx.time} />\n </li>\n )\n })}\n </ol>\n {p.problem ? (\n <p className={cx.problem} data-sf-progress-problem={typeof p.problem.code === 'string' ? p.problem.code : 'unknown'}>\n {enumText(m, 'problem', p.problem.code)}\n </p>\n ) : null}\n </div>\n )\n}\n\nexport type NextActionBarClassNames = Partial<Record<'root' | 'primary' | 'secondary', string>>\n\nexport type NextActionBarProps = AccountTextProps & {\n /** The order (its `next_action` is read or derived) ... */\n order?: Order\n /** ... or the action itself. */\n action?: NextAction | null\n /**\n * Where each action goes in YOUR store: `pay` → the voucher/checkout, `download_invoice` → your invoice-file route,\n * `request_invoice` / `correct_invoice_data` → your invoice form, `contact_store` → your contact page. `track` and\n * `pickup` default to the action's own `https` link. Return `null` when there is nowhere to go: the bar then renders\n * a button only if `onAction` handles it, and nothing otherwise.\n */\n hrefFor?: (action: NextAction) => string | null | undefined\n /** Click handler for actions with no link (`pay` opening a dialog...). Called with the action. */\n onAction?: (action: NextAction, event: MouseEvent<HTMLElement>) => void\n /** Secondary buttons next to the primary one (copy tracking number, request return...). */\n secondary?: ReactNode\n classNames?: NextActionBarClassNames\n}\n\n/**\n * ONE primary call to action: \"Rastrear envío\", \"Descargar factura\", \"Pagar ahora\"... Links that leave the store carry\n * `rel=\"noopener noreferrer\"` and a hidden \"(opens in a new tab)\". Nothing renders for `none` or an action with no\n * way to act.\n */\nexport function NextActionBar({ order, action, hrefFor, onAction, secondary, classNames: cx = {}, ...text }: NextActionBarProps) {\n const { m } = useAccountText(text)\n const a = action ?? (order ? deriveNextAction(order) : null)\n if (!a || a.kind === 'none') return secondary ? <div className={cx.root} data-sf-action-bar>{secondary}</div> : null\n const fromApi = a.kind === 'track' || a.kind === 'pickup' ? safeTrackingUrl(a.href) : null\n const href = hrefFor?.(a) ?? fromApi\n const external = !!href && /^https:\\/\\//i.test(href)\n const label = enumText(m, 'action', a.kind)\n const common = { className: cx.primary, 'data-sf-action': typeof a.kind === 'string' ? a.kind : 'unknown' } as const\n let primary = null\n if (href) {\n primary = (\n <a href={href} {...common} {...(external ? { target: '_blank', rel: 'noopener noreferrer' } : {})} onClick={onAction ? (e) => onAction(a, e) : undefined}>\n {label}\n {external ? <Hidden> {m['action.newTab']}</Hidden> : null}\n </a>\n )\n } else if (onAction) {\n primary = (\n <button type=\"button\" {...common} onClick={(e) => onAction(a, e)}>\n {label}\n </button>\n )\n }\n if (!primary && !secondary) return null\n return (\n <div className={cx.root} role=\"group\" aria-label={m['action.label']} data-sf-action-bar>\n {primary}\n {secondary}\n </div>\n )\n}\n","/**\n * \"Mis pedidos\": a list of order cards with status in words, a compact progress, the shipment summary, the total and\n * the one next action. Headless (`data-sf-order*`, `classNames`). Every state of the list is a real state of the\n * component: `loading` (fixed-height skeletons, no layout shift), `error` (recoverable, says purchases are safe),\n * `empty` (useful text and your own call to action) and `ready`.\n */\nimport type { NextAction, Order } from '@asteby/storefront'\nimport { nextAction as deriveNextAction, orderProgress as deriveProgress, isTestShipment } from '@asteby/storefront'\nimport type { ReactNode } from 'react'\nimport { enumText, fill } from './orders-messages.js'\nimport { OrderProductsStack } from './order-lines.js'\nimport { Hidden, Time, moneyText, plural, str, useAccountText, type AccountTextProps } from './orders-ui.js'\nimport { NextActionBar, OrderProgress, OrderStatusBadge, type NextActionBarClassNames, type OrderProgressClassNames } from './progress.js'\n\nexport type OrderCardClassNames = Partial<Record<'root' | 'header' | 'products' | 'number' | 'link' | 'meta' | 'badge' | 'summary' | 'shipment' | 'footer' | 'total' | 'actions', string>> & {\n progress?: OrderProgressClassNames\n action?: NextActionBarClassNames\n}\n\nexport type OrderCardProps = AccountTextProps & {\n order: Order\n /** Where the order detail lives in your store. The whole card is reached through the number's link. */\n orderHref: (order: Order) => string\n /** Where each next action goes (see `NextActionBar.hrefFor`). */\n actionHref?: (action: NextAction, order: Order) => string | null | undefined\n onAction?: (action: NextAction, order: Order) => void\n /** Heading level of the order number (default 3). */\n headingLevel?: 2 | 3 | 4\n classNames?: OrderCardClassNames\n}\n\nexport function OrderCard({ order, orderHref, actionHref, onAction, headingLevel = 3, classNames: cx = {}, ...text }: OrderCardProps) {\n const { m, date, locale } = useAccountText(text)\n const Heading = `h${headingLevel}` as 'h3'\n const progress = deriveProgress(order)\n const items = (Array.isArray(order.lines) ? order.lines : []).reduce((n, l) => n + (Number.isFinite(l?.quantity) ? l.quantity : 0), 0)\n const summary = order.shipments_summary && typeof order.shipments_summary === 'object' ? order.shipments_summary : null\n const shipments = Array.isArray(order.shipments) ? order.shipments : []\n const showShipment = !!summary && typeof summary.count === 'number' && summary.count > 0 && !(shipments.length > 0 && shipments.every(isTestShipment)) && !['pending_payment', 'cancelled', 'refunded'].includes(progress.stage)\n const action = deriveNextAction(order)\n const total = moneyText(order.total, locale)\n const carrier = summary ? str(summary.carrier) : null\n return (\n <article className={cx.root} data-sf-order data-sf-order-status={progress.stage} data-sf-order-id={order.id}>\n <header className={cx.header}>\n <Heading className={cx.number} data-sf-order-number>\n <a href={orderHref(order)} className={cx.link} data-sf-order-link>\n {fill(m['order.number'], { number: str(order.number) ?? (str(order.id) ?? '').slice(0, 8) })}\n </a>\n </Heading>\n <OrderStatusBadge progress={progress} {...text} {...(cx.badge ? { className: cx.badge } : {})} />\n </header>\n <p className={cx.meta} data-sf-order-meta>\n <Time value={order.created_at} text={date(order.created_at) ? fill(m['order.placed'], { date: date(order.created_at)! }) : null} />\n {items > 0 ? <> · {plural(m, 'order.items', items)}</> : null}\n </p>\n {Array.isArray(order.lines) && order.lines.length > 0 ? (\n <div className={cx.products} data-sf-order-products>\n <OrderProductsStack order={order} {...text} />\n </div>\n ) : null}\n <div className={cx.summary} data-sf-order-summary>\n <OrderProgress progress={progress} variant=\"compact\" {...text} {...(cx.progress ? { classNames: cx.progress } : {})} />\n {showShipment ? (\n <p className={cx.shipment} data-sf-order-shipment>\n {carrier ? <>{carrier} · </> : null}\n {enumText(m, 'shipment.status', summary!.status)}\n </p>\n ) : null}\n </div>\n <div className={cx.footer}>\n {total ? (\n <p className={cx.total} data-sf-order-total>\n <span>{m['order.total']}: </span>\n <strong>{total}</strong>\n </p>\n ) : null}\n <NextActionBar\n action={action}\n {...text}\n hrefFor={(a) => actionHref?.(a, order) ?? undefined}\n {...(onAction ? { onAction: (a: NextAction) => onAction(a, order) } : {})}\n classNames={{ ...(cx.actions ? { root: cx.actions } : {}), ...(cx.action ?? {}) }}\n />\n </div>\n </article>\n )\n}\n\nexport type OrderListClassNames = Partial<Record<'root' | 'list' | 'item' | 'skeleton' | 'empty' | 'emptyTitle' | 'emptyBody' | 'emptyGuest' | 'error' | 'retry' | 'more', string>> & {\n card?: OrderCardClassNames\n}\n\nexport type OrderListProps = AccountTextProps &\n Pick<OrderCardProps, 'orderHref' | 'actionHref' | 'onAction' | 'headingLevel'> & {\n orders?: readonly Order[] | null\n status?: 'loading' | 'ready' | 'error'\n /** Skeleton cards while loading (default 3). */\n skeletons?: number\n onRetry?: () => void\n hasMore?: boolean\n loadingMore?: boolean\n onLoadMore?: () => void\n /** Your call to action in the empty state (\"Ver catálogo\"). */\n emptyAction?: ReactNode\n /** Show \"bought as a guest? verify your email\" in the empty state (default true). */\n guestHint?: boolean\n classNames?: OrderListClassNames\n }\n\nexport function OrderList({ orders, status = 'ready', skeletons = 3, onRetry, hasMore, loadingMore, onLoadMore, emptyAction, guestHint = true, orderHref, actionHref, onAction, headingLevel = 3, classNames: cx = {}, ...text }: OrderListProps) {\n const { m } = useAccountText(text)\n const list = (Array.isArray(orders) ? orders : []).filter((o): o is Order => !!o && typeof o === 'object' && typeof o.id === 'string')\n\n if (status === 'loading' && list.length === 0) {\n return (\n <div className={cx.root} role=\"status\" aria-busy=\"true\" data-sf-orders data-sf-orders-state=\"loading\">\n <Hidden>{m['order.loading']}</Hidden>\n <ul className={cx.list} aria-hidden=\"true\">\n {Array.from({ length: Math.max(1, skeletons) }, (_, i) => (\n <li key={i} className={cx.skeleton} data-sf-skeleton />\n ))}\n </ul>\n </div>\n )\n }\n if (status === 'error' && list.length === 0) {\n return (\n <div className={cx.root} data-sf-orders data-sf-orders-state=\"error\">\n <div className={cx.error} role=\"alert\" data-sf-orders-error>\n <p>{m['order.error']}</p>\n {onRetry ? (\n <button type=\"button\" className={cx.retry} onClick={onRetry} data-sf-retry>\n {m['order.retry']}\n </button>\n ) : null}\n </div>\n </div>\n )\n }\n if (list.length === 0) {\n return (\n <div className={cx.root} data-sf-orders data-sf-orders-state=\"empty\">\n <div className={cx.empty} data-sf-orders-empty>\n <p className={cx.emptyTitle}>\n <strong>{m['order.emptyTitle']}</strong>\n </p>\n <p className={cx.emptyBody}>{m['order.emptyBody']}</p>\n {guestHint ? (\n <p className={cx.emptyGuest} data-sf-orders-guest-hint>\n {m['order.emptyGuest']}\n </p>\n ) : null}\n {emptyAction}\n </div>\n </div>\n )\n }\n return (\n <div className={cx.root} data-sf-orders data-sf-orders-state=\"ready\">\n <ul className={cx.list} aria-label={m['order.listLabel']} data-sf-orders-list>\n {list.map((o) => (\n <li key={o.id} className={cx.item}>\n <OrderCard order={o} orderHref={orderHref} {...(actionHref ? { actionHref } : {})} {...(onAction ? { onAction } : {})} headingLevel={headingLevel} {...text} {...(cx.card ? { classNames: cx.card } : {})} />\n </li>\n ))}\n </ul>\n {status === 'error' ? (\n <div className={cx.error} role=\"alert\" data-sf-orders-error>\n <p>{m['order.error']}</p>\n {onRetry ? (\n <button type=\"button\" className={cx.retry} onClick={onRetry} data-sf-retry>\n {m['order.retry']}\n </button>\n ) : null}\n </div>\n ) : null}\n {hasMore && onLoadMore ? (\n <button type=\"button\" className={cx.more} onClick={onLoadMore} disabled={loadingMore} aria-disabled={loadingMore || undefined} data-sf-orders-more>\n {loadingMore ? m['order.loadingMore'] : m['order.loadMore']}\n </button>\n ) : null}\n </div>\n )\n}\n","/**\n * One shipment as the buyer sees it: carrier, status in words, tracking number (copy) and `https` link, promised date\n * and the carrier's events newest first. Headless (`data-sf-shipment-*`, `classNames`). Privacy rules enforced here\n * too, not only on the server: only a RETURN shipment may show its label link, a sandbox (`test_mode`) shipment is\n * hidden or marked \"test\" (never shown with a tracking number or link as if it were real), links must be `https`.\n *\n * The map is NOT here: `renderMap` is the slot the map component fills (it receives the approximate points; the event\n * list below is always rendered and is the text equivalent of the map).\n */\nimport type { Shipment, ShipmentMap } from '@asteby/storefront'\nimport { isTestShipment, safeTrackingUrl, sortTrackingEvents } from '@asteby/storefront'\nimport { useId, useState, type ReactNode } from 'react'\nimport { enumText } from './orders-messages.js'\nimport { CopyButton, Hidden, Time, str, useAccountText, type AccountTextProps } from './orders-ui.js'\n\nexport type ShipmentCardClassNames = Partial<\n Record<'root' | 'header' | 'carrier' | 'status' | 'meta' | 'number' | 'actions' | 'link' | 'copy' | 'events' | 'event' | 'toggle' | 'empty' | 'test' | 'map', string>\n>\n\n/** What `renderMap` receives. */\nexport type ShipmentMapSlotProps = { shipment: Shipment; map: ShipmentMap }\n\nexport type ShipmentCardProps = AccountTextProps & {\n shipment: Shipment\n /** A sandbox shipment: `hide` (default) renders nothing; `mark` shows it labelled \"test\", without number or link. */\n testMode?: 'hide' | 'mark'\n /** How many events show before \"Show all\". Default 3. */\n eventsPreview?: number\n /** The carrier's logo/brand mark (e.g. `<BrandMark brand={shipment.carrier_logo_key} />` from `/checkout`); kept out of this bundle on purpose. */\n renderCarrierMark?: (shipment: Shipment) => ReactNode\n /** Slot for the map (F7). Called only when the shipment has a `map`. */\n renderMap?: (props: ShipmentMapSlotProps) => ReactNode\n /** Heading level of the title (default 3). */\n headingLevel?: 2 | 3 | 4 | 5\n classNames?: ShipmentCardClassNames\n}\n\nexport function ShipmentCard({ shipment, testMode = 'hide', eventsPreview = 3, renderCarrierMark, renderMap, headingLevel = 3, classNames: cx = {}, ...text }: ShipmentCardProps) {\n const { m, t, date } = useAccountText(text)\n const [open, setOpen] = useState(false)\n const id = useId().replace(/:/g, '')\n if (!shipment || typeof shipment !== 'object') return null\n const test = isTestShipment(shipment)\n if (test && testMode === 'hide') return null\n\n const isReturn = shipment.kind === 'return'\n const Heading = `h${headingLevel}` as 'h3'\n const SubHeading = `h${headingLevel + 1}` as 'h4'\n const carrier = str(shipment.carrier)\n const service = test ? null : str(shipment.service)\n const number = test ? null : str(shipment.tracking_number)\n const trackUrl = test ? null : safeTrackingUrl(shipment.tracking_url)\n const labelUrl = isReturn && !test ? safeTrackingUrl(shipment.label_url) : null\n const events = test ? [] : sortTrackingEvents(shipment.events)\n const shown = open ? events : events.slice(0, Math.max(1, eventsPreview))\n const status = test ? m['shipment.preparing'] : enumText(m, 'shipment.status', shipment.status)\n const promised = !test && shipment.status !== 'delivered' ? date(shipment.promised_by) : null\n const delivered = !test ? date(shipment.delivered_at) : null\n const shipped = !test && !delivered ? date(shipment.shipped_at) : null\n const titleId = `sf-shp-${id}`\n const eventsId = `sf-shp-ev-${id}`\n\n return (\n <article className={cx.root} aria-labelledby={titleId} data-sf-shipment data-sf-shipment-status={test ? 'test' : typeof shipment.status === 'string' ? shipment.status : 'unknown'} data-sf-shipment-kind={isReturn ? 'return' : 'outbound'} {...(test ? { 'data-sf-test': '' } : {})}>\n <header className={cx.header} data-sf-shipment-header>\n {renderCarrierMark && !test ? <span data-sf-shipment-mark>{renderCarrierMark(shipment)}</span> : null}\n <Heading id={titleId} className={cx.carrier} data-sf-shipment-title>\n {carrier && !test ? (\n <span data-sf-shipment-eyebrow>\n {m['shipment.carrier']}\n <Hidden>: </Hidden>\n </span>\n ) : null}\n {isReturn ? m['shipment.return'] : (carrier ?? m['shipment.title'])}\n {isReturn && carrier ? <> · {carrier}</> : null}\n </Heading>\n <span className={cx.status} data-sf-shipment-state>\n {status}\n </span>\n {test ? (\n <span className={cx.test} data-sf-shipment-test>\n {m['shipment.test']}\n </span>\n ) : null}\n </header>\n {test ? (\n <p className={cx.meta} data-sf-shipment-test-note>\n {m['shipment.testNote']}\n </p>\n ) : null}\n {service ? (\n <p className={cx.meta} data-sf-shipment-service>\n {m['shipment.service']}: {service}\n </p>\n ) : null}\n {number ? (\n <p className={cx.number} data-sf-shipment-number>\n <span>{m['shipment.number']}: </span>\n <code>{number}</code>{' '}\n <CopyButton value={number} label={m['shipment.copy']} copiedLabel={m['shipment.copied']} failedLabel={m['shipment.copyFailed']} ariaLabel={`${m['shipment.copy']} ${m['shipment.number']}`} className={cx.copy} data-sf-copy=\"tracking\" />\n </p>\n ) : null}\n {promised || delivered || shipped ? (\n <p className={cx.meta} data-sf-shipment-dates>\n {delivered ? (\n <Time value={shipment.delivered_at} text={t('shipment.delivered', { date: delivered })} />\n ) : promised ? (\n <Time value={shipment.promised_by} text={t('shipment.promised', { date: promised })} />\n ) : (\n <Time value={shipment.shipped_at} text={t('shipment.shipped', { date: shipped ?? '' })} />\n )}\n </p>\n ) : null}\n {trackUrl || labelUrl ? (\n <p className={cx.actions} data-sf-shipment-actions>\n {trackUrl ? (\n <a href={trackUrl} target=\"_blank\" rel=\"noopener noreferrer\" className={cx.link} data-sf-shipment-track>\n {carrier ? t('shipment.track', { carrier }) : m['shipment.trackGeneric']}\n <Hidden> {m['action.newTab']}</Hidden>\n </a>\n ) : null}\n {labelUrl ? (\n <a href={labelUrl} target=\"_blank\" rel=\"noopener noreferrer\" className={cx.link} data-sf-shipment-label>\n {m['shipment.returnLabel']}\n <Hidden> {m['action.newTab']}</Hidden>\n </a>\n ) : null}\n </p>\n ) : null}\n {renderMap && !test && shipment.map ? (\n <div className={cx.map} data-sf-shipment-map-slot>\n {renderMap({ shipment, map: shipment.map })}\n </div>\n ) : null}\n {!test ? (\n events.length === 0 ? (\n <p className={cx.empty} data-sf-shipment-empty>\n {m['shipment.noEvents']}\n </p>\n ) : (\n <div data-sf-shipment-events-wrap>\n <SubHeading className={cx.meta} data-sf-shipment-events-title>\n {m['shipment.events']}\n </SubHeading>\n <ol className={cx.events} id={eventsId} data-sf-shipment-events>\n {shown.map((e, i) => {\n const description = str(e.description)\n const location = str(e.location)\n return (\n <li key={`${str(e.id) ?? ''}-${i}`} className={cx.event} data-sf-event-status={typeof e.status === 'string' ? e.status : 'unknown'}>\n <span data-sf-event-state>{enumText(m, 'shipment.status', e.status)}</span>\n {description ? <span data-sf-event-description> · {description}</span> : null}\n {location ? <span data-sf-event-location> · {location}</span> : null}{' '}\n <Time value={e.occurred_at} text={date(e.occurred_at, 'datetime')} />\n </li>\n )\n })}\n </ol>\n {events.length > Math.max(1, eventsPreview) ? (\n <button type=\"button\" className={cx.toggle} aria-expanded={open} aria-controls={eventsId} onClick={() => setOpen((v) => !v)} data-sf-shipment-toggle>\n {open ? m['shipment.showLess'] : t('shipment.showAll', { count: events.length })}\n </button>\n ) : null}\n </div>\n )\n ) : null}\n </article>\n )\n}\n","/**\n * The invoices and credit notes of an order. Headless (`data-sf-invoice-*`, `classNames`). A credit note is listed\n * under the invoice it corrects. Downloads go ONLY through YOUR authenticated route (`fileHref`, backed by\n * `invoiceFileResponse` in `/account/server`) or a handler (`onDownload`): this component never prints a link it did\n * not get from the store, so a PAC URL can never end up in the page. An invoice from a sandbox PAC (`test_mode`) is\n * hidden or marked \"test, not valid\" and gets no download.\n *\n * With no documents it hands the order's `invoice` summary (not requested, needs data, being generated...) to\n * `renderSummary`; the usual one is `(s) => <InvoiceStatusCard invoice={s} ... />` from `@asteby/storefront-react/fiscal`\n * (a slot, so this bundle does not carry the fiscal texts for stores that never request invoices from here).\n */\nimport type { InvoiceDoc, InvoiceFileKind, InvoiceSummary } from '@asteby/storefront'\nimport { groupInvoiceDocs, isTestInvoice } from '@asteby/storefront'\nimport { useId, type ReactNode } from 'react'\nimport { enumText, fill } from './orders-messages.js'\nimport { Hidden, Time, moneyText, str, useAccountText, type AccountTextProps } from './orders-ui.js'\n\nexport type InvoiceListClassNames = Partial<\n Record<'root' | 'title' | 'group' | 'doc' | 'status' | 'meta' | 'note' | 'actions' | 'download' | 'creditNotes' | 'test' | 'error' | 'retry' | 'empty', string>\n>\n\nexport type InvoiceListProps = AccountTextProps & {\n invoices?: readonly InvoiceDoc[] | null\n /** The order's invoice summary, handed to `renderSummary` when there are no documents. */\n summary?: InvoiceSummary | null\n /** Draws the summary (request, needs data, being generated...): `(s) => <InvoiceStatusCard invoice={s} requestHref=\"/factura\" />`. */\n renderSummary?: (summary: InvoiceSummary) => ReactNode\n /** Your authenticated download route for a file of a document, e.g. `/cuenta/pedidos/${order}/facturas/${doc.id}.${kind}`. */\n fileHref?: (doc: InvoiceDoc, kind: InvoiceFileKind) => string | null | undefined\n /** Alternative to `fileHref`: a handler (opens your own download flow). */\n onDownload?: (doc: InvoiceDoc, kind: InvoiceFileKind) => void\n /** The server could not read the invoices (`order.degraded` has `invoices`): shows a recoverable error. */\n degraded?: boolean\n onRetry?: () => void\n /** A sandbox invoice: `mark` (default) shows it labelled and with no download; `hide` removes it. */\n testMode?: 'hide' | 'mark'\n /** Money formatter is `Intl`; the order's currency comes with each total. */\n headingLevel?: 2 | 3 | 4\n /** Content under the list (e.g. a \"Request invoice\" button). */\n children?: ReactNode\n classNames?: InvoiceListClassNames\n}\n\nconst known = (s: unknown): s is 'issued' | 'pending' | 'cancelled' | 'error' => s === 'issued' || s === 'pending' || s === 'cancelled' || s === 'error'\n\nexport function InvoiceList({ invoices, summary, renderSummary, fileHref, onDownload, degraded, onRetry, testMode = 'mark', headingLevel = 3, children, classNames: cx = {}, ...text }: InvoiceListProps) {\n const { m, t, date, locale } = useAccountText(text)\n const Heading = `h${headingLevel}` as 'h3'\n const titleId = `sf-invoices-${useId().replace(/:/g, '')}`\n const all = (Array.isArray(invoices) ? invoices : []).filter((d): d is InvoiceDoc => !!d && typeof d === 'object' && typeof d.id === 'string')\n const docs = testMode === 'hide' ? all.filter((d) => !isTestInvoice(d)) : all\n const { groups, orphans } = groupInvoiceDocs(docs)\n\n const renderDoc = (doc: InvoiceDoc, parent?: InvoiceDoc) => {\n const test = isTestInvoice(doc)\n const status = known(doc.status) ? doc.status : 'unknown'\n const kindLabel = doc.kind === 'credit_note' ? m['invoice.creditNote'] : m['invoice.invoice']\n const docName = (d: InvoiceDoc) => [str(d.series), str(d.folio_number)].filter(Boolean).join('-')\n const name = docName(doc)\n const folio = str(doc.folio)\n const canDownload = status === 'issued' && !test\n const total = moneyText(doc.total, locale)\n const link = (kind: InvoiceFileKind) => {\n const label = kind === 'pdf' ? m['invoice.pdf'] : m['invoice.xml']\n const aria = fill(m['invoice.downloadOf'], { action: label, kind: kindLabel.toLowerCase(), name: name || folio || '' }).replace(/\\s+,/g, ',').replace(/,\\s*$/, '').trim()\n const href = fileHref?.(doc, kind)\n if (href) {\n return (\n <a key={kind} href={href} download className={cx.download} aria-label={aria} data-sf-invoice-download={kind}>\n {label}\n </a>\n )\n }\n if (onDownload) {\n return (\n <button key={kind} type=\"button\" className={cx.download} aria-label={aria} onClick={() => onDownload(doc, kind)} data-sf-invoice-download={kind}>\n {label}\n </button>\n )\n }\n return null\n }\n return (\n <li key={doc.id} className={cx.doc} data-sf-invoice-doc data-sf-invoice-kind={doc.kind === 'credit_note' ? 'credit_note' : 'invoice'} data-sf-invoice-status={status}>\n <p className={cx.status} data-sf-invoice-heading>\n <strong>{kindLabel}</strong>\n {name ? <> {name}</> : null} · <span data-sf-invoice-state>{enumText(m, 'invoice.status', doc.status)}</span>\n {test ? (\n <>\n {' '}\n <span className={cx.test} data-sf-invoice-test>\n {m['invoice.test']}\n </span>\n </>\n ) : null}\n </p>\n {parent ? (\n <p className={cx.meta} data-sf-invoice-parent>\n {fill(m['invoice.creditNoteOf'], { folio: docName(parent) || str(parent.folio) || '' }).trim()}\n </p>\n ) : null}\n {folio && !test ? (\n <p className={cx.meta} data-sf-invoice-folio>\n {m['invoice.folio']}: <code>{folio}</code>\n </p>\n ) : null}\n <p className={cx.meta}>\n {doc.issued_at ? <Time value={doc.issued_at} text={fill(m['invoice.issued'], { date: date(doc.issued_at) ?? '' })} /> : null}\n {total ? <> · {m['invoice.total']}: {total}</> : null}\n </p>\n {status === 'pending' || status === 'error' || status === 'cancelled' ? (\n <p className={cx.note} data-sf-invoice-note>\n {m[`invoice.statusNote.${status}`]}\n </p>\n ) : null}\n {canDownload && (fileHref || onDownload) ? (\n <p className={cx.actions} data-sf-invoice-actions>\n {link('pdf')}\n {link('xml')}\n </p>\n ) : null}\n </li>\n )\n }\n\n const hasDocs = groups.length + orphans.length > 0\n return (\n <section className={cx.root} aria-labelledby={titleId} data-sf-invoices>\n <Heading id={titleId} className={cx.title}>\n {m['invoice.title']}\n </Heading>\n {degraded ? (\n <div className={cx.error} role=\"alert\" data-sf-section-error=\"invoices\">\n <p>{m['section.error']}</p>\n {onRetry ? (\n <button type=\"button\" className={cx.retry} onClick={onRetry} data-sf-retry>\n {m['section.retry']}\n <Hidden> {m['invoice.title']}</Hidden>\n </button>\n ) : null}\n </div>\n ) : hasDocs ? (\n <ul data-sf-invoice-list>\n {groups.map(({ invoice, creditNotes }) => (\n <li key={invoice.id} className={cx.group} data-sf-invoice-group>\n <ul>{renderDoc(invoice)}</ul>\n {creditNotes.length ? (\n <ul className={cx.creditNotes} data-sf-invoice-credit-notes>\n {creditNotes.map((nc) => renderDoc(nc, invoice))}\n </ul>\n ) : null}\n </li>\n ))}\n {orphans.map((nc) => (\n <li key={nc.id} className={cx.group} data-sf-invoice-group>\n <ul>{renderDoc(nc)}</ul>\n </li>\n ))}\n </ul>\n ) : summary && renderSummary ? (\n <div data-sf-invoice-summary>{renderSummary(summary)}</div>\n ) : (\n <p className={cx.empty} data-sf-invoice-empty>\n {m['invoice.none']}\n </p>\n )}\n {children}\n </section>\n )\n}\n","/**\n * Cash voucher of a payment that is still waiting (OXXO, SPEI, deposit): reference / CLABE with a copy button, the\n * Code 128 barcode drawn as SVG, the expiry, and print / download. Ported from the ProtekAuto store (#84) so no store\n * keeps its own copy. Headless (`data-sf-voucher-*`, `classNames`), texts es/en.\n *\n * Print / download: pass `voucherHref` to serve the voucher from YOUR server route (`pendingVoucherResponse` in\n * `/account/server`, the right choice for the account page: ownership is re-checked on each request), or leave it out\n * and the card builds the document in the browser from the data it already has (thank-you page: guests have no\n * account to go back to). The document generator is a separate chunk, fetched only when the buyer taps.\n */\nimport type { PendingPayment } from '@asteby/storefront'\nimport { useId, useMemo, type ReactNode } from 'react'\nimport { enumText, fill } from './orders-messages.js'\nimport { CopyButton, Hidden, Time, moneyText, useAccountText, type AccountTextProps } from './orders-ui.js'\nimport { barcodeGeometry, barcodeValue, voucherOf } from './voucher.js'\n\nexport type BarcodeProps = { value: string; label: string; height?: number; className?: string }\n\n/** Code 128 as an inline `<svg role=\"img\">` (no HTML injection). `null` when the value cannot be encoded. */\nexport function Barcode({ value, label, height = 56, className }: BarcodeProps) {\n const g = useMemo(() => barcodeGeometry(value, { height }), [value, height])\n if (!g) return null\n return (\n <svg className={className} viewBox={`0 0 ${g.width} ${g.height}`} width={g.width} height={g.height} role=\"img\" aria-label={label} shapeRendering=\"crispEdges\" fill=\"#000\" data-sf-voucher-barcode-svg>\n {g.rects.map((r) => (\n <rect key={r.x} x={r.x} y={0} width={r.w} height={g.height} />\n ))}\n </svg>\n )\n}\n\nexport type PendingPaymentCardClassNames = Partial<\n Record<'root' | 'header' | 'method' | 'badge' | 'field' | 'label' | 'value' | 'barcode' | 'expiry' | 'total' | 'note' | 'actions' | 'primary' | 'secondary', string>\n>\n\nexport type PendingPaymentCardProps = AccountTextProps & {\n payment: PendingPayment\n /** Server route that serves the printable voucher: `(payment, { download })`. Without it the browser builds it. */\n voucherHref?: (payment: PendingPayment, opts: { download: boolean }) => string\n /** Store name printed on the document built in the browser. */\n shopName?: string\n headingLevel?: 2 | 3 | 4\n classNames?: PendingPaymentCardClassNames\n children?: ReactNode\n}\n\nasync function openDocument(payment: PendingPayment, mode: 'print' | 'download', opts: { locale: string; shopName?: string | undefined; timeZone?: string | undefined }) {\n const v = voucherOf(payment)\n if (!v) return\n const { renderVoucherDocument } = await import('./voucher-document.js')\n const html = renderVoucherDocument(v, { locale: opts.locale, ...(opts.shopName ? { shopName: opts.shopName } : {}), ...(opts.timeZone ? { timeZone: opts.timeZone } : {}), printButton: mode === 'print', autoPrint: mode === 'print' })\n const url = URL.createObjectURL(new Blob([html], { type: 'text/html;charset=utf-8' }))\n const download = () => {\n const a = document.createElement('a')\n a.href = url\n a.download = 'ficha-de-pago.html'\n a.click()\n }\n if (mode === 'print') {\n // (`noopener` in the features would make `open` return null, which is how a blocked pop-up is told apart.)\n const w = window.open(url, '_blank')\n if (w) w.opener = null\n else download()\n } else download()\n setTimeout(() => URL.revokeObjectURL(url), 60_000)\n}\n\nexport function PendingPaymentCard({ payment, voucherHref, shopName, headingLevel = 3, classNames: cx = {}, children, ...text }: PendingPaymentCardProps) {\n const { m, t, date, locale, timeZone } = useAccountText(text)\n const titleId = `sf-voucher-${useId().replace(/:/g, '')}`\n const v = voucherOf(payment)\n if (!v) return null\n const expired = payment.status === 'expired'\n const Heading = `h${headingLevel}` as 'h3'\n const code = barcodeValue(v)\n const methodLabel = enumText(m, 'pending.method', v.method?.toLowerCase())\n const total = moneyText(payment.total, locale) ?? moneyText(v.amount, locale)\n const copyValue = v.reference ?? v.clabe\n const expires = date(v.expires_at ?? payment.expires_at, 'datetime')\n\n return (\n <article className={cx.root} aria-labelledby={titleId} data-sf-voucher data-sf-voucher-status={expired ? 'expired' : 'pending_payment'}>\n <header className={cx.header}>\n <Heading id={titleId} className={cx.method} data-sf-voucher-method>\n {methodLabel}\n </Heading>\n <span className={cx.badge} data-sf-voucher-badge data-sf-tone={expired ? 'muted' : 'current'}>\n {expired ? m['pending.expired'] : m['pending.waiting']}\n </span>\n </header>\n {v.reference ? (\n <div className={cx.field} data-sf-voucher-reference>\n <p className={cx.label}>{m['pending.reference']}</p>\n <p className={cx.value} data-sf-voucher-value>\n {v.reference}\n </p>\n </div>\n ) : null}\n {v.clabe ? (\n <div className={cx.field} data-sf-voucher-clabe>\n <p className={cx.label}>{m['pending.clabe']}</p>\n <p className={cx.value} data-sf-voucher-value>\n {v.clabe}\n </p>\n </div>\n ) : null}\n {code && !expired ? (\n <div className={cx.barcode} data-sf-voucher-barcode>\n <Barcode value={code} label={fill(m['pending.barcode'], { code })} />\n </div>\n ) : null}\n {expires ? (\n <p className={cx.expiry} data-sf-voucher-expiry>\n <Time value={v.expires_at ?? payment.expires_at} text={fill(m[expired ? 'pending.expiredOn' : 'pending.expires'], { date: expires })} />\n </p>\n ) : null}\n {total ? (\n <p className={cx.total} data-sf-voucher-total>\n <span>{m['pending.total']}: </span>\n <strong>{total}</strong>\n </p>\n ) : null}\n {expired ? (\n <p className={cx.note} data-sf-voucher-expired-note>\n {m['pending.expiredNote']}\n </p>\n ) : (\n <div className={cx.actions} data-sf-voucher-actions>\n {voucherHref ? (\n <>\n <a href={voucherHref(payment, { download: false })} target=\"_blank\" rel=\"noopener\" className={cx.primary} data-sf-voucher-print>\n {m['pending.print']}\n <Hidden> {m['action.newTab']}</Hidden>\n </a>\n <a href={voucherHref(payment, { download: true })} download className={cx.secondary} data-sf-voucher-download>\n {m['pending.download']}\n </a>\n </>\n ) : (\n <>\n <button type=\"button\" className={cx.primary} onClick={() => void openDocument(payment, 'print', { locale, shopName, timeZone })} data-sf-voucher-print>\n {m['pending.print']}\n </button>\n <button type=\"button\" className={cx.secondary} onClick={() => void openDocument(payment, 'download', { locale, shopName, timeZone })} data-sf-voucher-download>\n {m['pending.download']}\n </button>\n </>\n )}\n {copyValue ? (\n <CopyButton value={copyValue} label={v.reference ? m['pending.copyReference'] : m['pending.copyClabe']} copiedLabel={m['pending.copied']} failedLabel={m['pending.copyFailed']} className={cx.secondary} data-sf-copy=\"voucher\" />\n ) : null}\n </div>\n )}\n {children}\n </article>\n )\n}\n\nexport type PendingPaymentListProps = AccountTextProps &\n Pick<PendingPaymentCardProps, 'voucherHref' | 'shopName' | 'classNames'> & {\n payments?: readonly PendingPayment[] | null\n headingLevel?: 2 | 3\n /** Classes of the section itself. */\n listClassNames?: Partial<Record<'root' | 'title' | 'intro' | 'list' | 'item', string>>\n }\n\n/** \"Pendientes de pago\": the valid vouchers first, then the expired ones. Renders nothing when there are none. */\nexport function PendingPaymentList({ payments, voucherHref, shopName, classNames, listClassNames: lc = {}, headingLevel = 2, ...text }: PendingPaymentListProps) {\n const { m } = useAccountText(text)\n const titleId = `sf-pending-${useId().replace(/:/g, '')}`\n const items = (Array.isArray(payments) ? payments : []).filter((p) => !!voucherOf(p))\n if (items.length === 0) return null\n const sorted = [...items.filter((p) => p.status !== 'expired'), ...items.filter((p) => p.status === 'expired')]\n const Heading = `h${headingLevel}` as 'h2'\n const cardHeading = (headingLevel + 1) as 3 | 4\n return (\n <section className={lc.root} aria-labelledby={titleId} data-sf-pending>\n <Heading id={titleId} className={lc.title}>\n {m['pending.title']}\n </Heading>\n <p className={lc.intro}>{m['pending.intro']}</p>\n <ul className={lc.list}>\n {sorted.map((p) => (\n <li key={p.id} className={lc.item}>\n <PendingPaymentCard payment={p} {...(voucherHref ? { voucherHref } : {})} {...(shopName ? { shopName } : {})} {...(classNames ? { classNames } : {})} headingLevel={cardHeading} {...text} />\n </li>\n ))}\n </ul>\n </section>\n )\n}\n","/**\n * The friendly name of how an order was paid. The server sends `family` (a short enum) and `method_label` (its own\n * text, which an older or English-locale server may fill with the provider's raw word: `Card`, `credit_card`, `oxxo`).\n * The buyer never reads a raw provider key: the label is built from the SDK's texts (es/en), extended by the store.\n */\nimport type { PaymentInfo } from '@asteby/storefront'\nimport type { AccountMessages } from './orders-messages.js'\n\nexport type PaymentMethodKey = 'card' | 'credit_card' | 'debit_card' | 'cash_voucher' | 'oxxo' | 'spei' | 'transfer' | 'bank_deposit' | 'wallet' | 'cash' | 'other'\n\nconst FAMILY: Record<string, PaymentMethodKey> = {\n card: 'card',\n credit_card: 'credit_card',\n debit_card: 'debit_card',\n cash_voucher: 'cash_voucher',\n oxxo: 'oxxo',\n spei: 'spei',\n transfer: 'transfer',\n bank_transfer: 'transfer',\n bank_deposit: 'bank_deposit',\n wallet: 'wallet',\n cash: 'cash',\n other: 'other',\n}\n\n/** Words of a provider's label, in order of specificity (debit before card, oxxo before voucher). */\nconst KEYWORDS: [RegExp, PaymentMethodKey][] = [\n [/oxxo/, 'oxxo'],\n [/spei/, 'spei'],\n [/d[eé]bit/, 'debit_card'],\n [/cr[eé]dit/, 'credit_card'],\n [/card|tarjeta/, 'card'],\n [/deposit|dep[oó]sito/, 'bank_deposit'],\n [/transfer/, 'transfer'],\n [/wallet|billetera|paypal|mercado ?pago|apple ?pay|google ?pay/, 'wallet'],\n [/voucher|ficha|convenience|conveniencia|store|tienda/, 'cash_voucher'],\n [/cash|efectivo/, 'cash'],\n]\n\nconst BRANDS: Record<string, string> = { visa: 'Visa', mastercard: 'Mastercard', master: 'Mastercard', amex: 'American Express', american_express: 'American Express', carnet: 'Carnet', discover: 'Discover' }\n\n/** A label that is a provider key or a bare English word, not a sentence a person wrote (\"Tarjeta Visa terminada en 4242\"). */\nconst RAW = /^[A-Za-z0-9_.:-]+(?: [A-Za-z0-9_.:-]+)?$/\n\n/** The method family of a payment (`card`, `oxxo`, `spei`...), for the store's own icon or styling; `null` when unknown. */\nexport function paymentMethodKey(p: PaymentInfo): PaymentMethodKey | null {\n return keyOf(p)\n}\n\nfunction keyOf(p: PaymentInfo): PaymentMethodKey | null {\n const fam = typeof p.family === 'string' ? p.family.toLowerCase() : ''\n const byLabel = (): PaymentMethodKey | null => {\n const label = typeof p.method_label === 'string' ? p.method_label.toLowerCase().replace(/[_-]+/g, ' ') : ''\n for (const [re, key] of KEYWORDS) if (re.test(label)) return key\n return null\n }\n if (fam && fam !== 'other' && FAMILY[fam]) {\n // `card` family + a label that says credit/debit is more precise.\n const l = byLabel()\n return fam === 'card' && (l === 'credit_card' || l === 'debit_card') ? l : FAMILY[fam]!\n }\n return byLabel() ?? (fam === 'other' ? 'other' : null)\n}\n\nexport type PaymentLabelOptions = {\n /** The store's own words for a payment (by organization, provider...). Return a string to use it; `null`/`undefined` falls through to the SDK's. */\n override?: (payment: PaymentInfo) => string | null | undefined\n}\n\n/**\n * `Tarjeta Visa •••• 1234`, `Efectivo con ficha (OXXO…)`, `Transferencia SPEI`… in the buyer's language. A label the\n * server already wrote as a sentence (it carries its own detail) is kept; a raw key becomes a readable text and never\n * shows as it came; with nothing to go on, a neutral \"Medio de pago\".\n */\nexport function paymentLabel(p: PaymentInfo, m: AccountMessages, options: PaymentLabelOptions = {}): string {\n const custom = options.override?.(p)\n if (typeof custom === 'string' && custom.trim()) return custom.trim()\n const raw = typeof p.method_label === 'string' ? p.method_label.trim() : ''\n const key = keyOf(p)\n const human = raw && !RAW.test(raw)\n // A server sentence with its own detail wins (and the structured brand/last4 are not repeated on top of it).\n if (human && /\\d{4}/.test(raw)) return raw\n if (key) {\n const base = m[`payment.method.${key}` as const]\n if (key !== 'card' && key !== 'credit_card' && key !== 'debit_card') return human && key === 'other' ? raw : base\n const brandRaw = typeof p.brand === 'string' ? p.brand.trim() : ''\n const brand = brandRaw ? (BRANDS[brandRaw.toLowerCase().replace(/[ -]/g, '_')] ?? brandRaw) : ''\n const last4 = typeof p.last4 === 'string' && /^\\d{2,4}$/.test(p.last4.trim()) ? p.last4.trim() : ''\n return `${base}${brand ? ` ${brand}` : ''}${last4 ? ` •••• ${last4}` : ''}`\n }\n return human ? raw : m['payment.method.unknown']\n}\n","/** Refunds and payments of an order. Headless (`data-sf-refund-*`, `data-sf-payment-*`, `classNames`). */\nimport type { PaymentInfo, Refund } from '@asteby/storefront'\nimport { useId } from 'react'\nimport { enumText, fill } from './orders-messages.js'\nimport { paymentLabel, paymentMethodKey, type PaymentLabelOptions } from './payment-method.js'\nimport { Hidden, Time, moneyText, str, useAccountText, type AccountTextProps } from './orders-ui.js'\n\nexport type RefundListClassNames = Partial<Record<'root' | 'title' | 'list' | 'item' | 'amount' | 'status' | 'meta' | 'empty' | 'error' | 'retry', string>>\n\nexport type RefundListProps = AccountTextProps & {\n refunds?: readonly Refund[] | null\n /** Show the \"no refunds\" text when empty (default: render nothing, the usual case). */\n showEmpty?: boolean\n /** The server could not read refunds (`order.degraded`): recoverable error. */\n degraded?: boolean\n onRetry?: () => void\n headingLevel?: 2 | 3 | 4\n classNames?: RefundListClassNames\n}\n\nconst tone = (s: unknown) => (s === 'completed' ? 'done' : s === 'failed' ? 'problem' : 'current')\n\nexport function RefundList({ refunds, showEmpty = false, degraded, onRetry, headingLevel = 3, classNames: cx = {}, ...text }: RefundListProps) {\n const { m, locale, date } = useAccountText(text)\n const titleId = `sf-refunds-${useId().replace(/:/g, '')}`\n const items = (Array.isArray(refunds) ? refunds : []).filter((r): r is Refund => !!r && typeof r === 'object' && typeof r.id === 'string')\n if (!degraded && items.length === 0 && !showEmpty) return null\n const Heading = `h${headingLevel}` as 'h3'\n return (\n <section className={cx.root} aria-labelledby={titleId} data-sf-refunds>\n <Heading id={titleId} className={cx.title}>\n {m['refund.title']}\n </Heading>\n {degraded ? (\n <div className={cx.error} role=\"alert\" data-sf-section-error=\"refunds\">\n <p>{m['section.error']}</p>\n {onRetry ? (\n <button type=\"button\" className={cx.retry} onClick={onRetry} data-sf-retry>\n {m['section.retry']}\n <Hidden> {m['refund.title']}</Hidden>\n </button>\n ) : null}\n </div>\n ) : items.length === 0 ? (\n <p className={cx.empty}>{m['refund.none']}</p>\n ) : (\n <ul className={cx.list}>\n {items.map((r) => (\n <li key={r.id} className={cx.item} data-sf-refund data-sf-refund-status={typeof r.status === 'string' ? r.status : 'unknown'}>\n <span className={cx.amount} data-sf-refund-amount>\n {moneyText(r.amount, locale) ?? ''}\n </span>{' '}\n <span className={cx.status} data-sf-tone={tone(r.status)}>\n {enumText(m, 'refund.status', r.status)}\n </span>\n <span className={cx.meta}>\n {str(r.method_label) ? <> · {paymentLabel({ method_label: r.method_label ?? '', status: 'paid', amount: r.amount }, m)}</> : null}\n {r.completed_at ? (\n <>\n {' · '}\n <Time value={r.completed_at} text={fill(m['refund.completed'], { date: date(r.completed_at) ?? '' })} />\n </>\n ) : r.created_at ? (\n <>\n {' · '}\n <Time value={r.created_at} text={fill(m['refund.requested'], { date: date(r.created_at) ?? '' })} />\n </>\n ) : null}\n </span>\n </li>\n ))}\n </ul>\n )}\n </section>\n )\n}\n\nexport type PaymentSummaryProps = AccountTextProps & {\n payments?: readonly PaymentInfo[] | null\n headingLevel?: 2 | 3 | 4\n /** The store's own name for a payment (by organization, provider...); `null` falls through to the SDK's es/en text. */\n methodLabel?: PaymentLabelOptions['override']\n classNames?: Partial<Record<'root' | 'title' | 'list' | 'item' | 'status' | 'meta', string>>\n}\n\n/** What the buyer paid with (card, voucher...) and its status. Renders nothing when the order has no payments. */\nexport function PaymentSummary({ payments, headingLevel = 3, methodLabel, classNames: cx = {}, ...text }: PaymentSummaryProps) {\n const { m, locale, date } = useAccountText(text)\n const titleId = `sf-payments-${useId().replace(/:/g, '')}`\n const items = (Array.isArray(payments) ? payments : []).filter((p): p is PaymentInfo => !!p && typeof p === 'object' && typeof p.method_label === 'string')\n if (items.length === 0) return null\n const Heading = `h${headingLevel}` as 'h3'\n return (\n <section className={cx.root} aria-labelledby={titleId} data-sf-payments>\n <Heading id={titleId} className={cx.title}>\n {m['payment.title']}\n </Heading>\n <ul className={cx.list}>\n {items.map((p, i) => (\n <li key={`${p.method_label}-${i}`} className={cx.item} data-sf-payment data-sf-payment-method-key={paymentMethodKey(p) ?? 'unknown'} data-sf-payment-status={typeof p.status === 'string' ? p.status : 'unknown'}>\n <span data-sf-payment-method>{paymentLabel(p, m, methodLabel ? { override: methodLabel } : {})}</span>\n {moneyText(p.amount, locale) ? <> · <span>{moneyText(p.amount, locale)}</span></> : null} ·{' '}\n <span className={cx.status} data-sf-tone={p.status === 'failed' ? 'problem' : p.status === 'paid' ? 'done' : 'current'}>\n {enumText(m, 'payment.status', p.status)}\n </span>\n {p.paid_at ? (\n <span className={cx.meta}>\n {' · '}\n <Time value={p.paid_at} text={fill(m['payment.paidOn'], { date: date(p.paid_at) ?? '' })} />\n </span>\n ) : null}\n </li>\n ))}\n </ul>\n </section>\n )\n}\n","/**\n * Data hooks of the account screens. They talk to the client of the `StorefrontProvider` (or `client`), which must carry\n * the buyer's session (`withCustomerToken`); on a store that renders on the server, pass what the loader read as\n * `initial` and nothing is fetched until the buyer asks (`reload`, `loadMore`) or a poll tick fires.\n *\n * They never throw: a failure is `status: 'error'` with the `StorefrontError` in `error`, and `reload()` is the retry.\n * A 404 on one order is `status: 'not_found'` (also when it belongs to someone else: the server does not tell).\n */\nimport type { Connection, Order, PendingPayment, StorefrontClient } from '@asteby/storefront'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { useOptionalStorefront } from '../context.js'\n\nexport type AccountStatus = 'loading' | 'ready' | 'error' | 'not_found'\n\nfunction useClient(client?: StorefrontClient | null): StorefrontClient | null {\n const ctx = useOptionalStorefront()\n return client ?? ctx?.client ?? null\n}\n\nconst asError = (e: unknown): Error => (e instanceof Error ? e : new Error('Request failed'))\n\n// A stable id per client object (one per buyer session with `withCustomerToken`), to tell whose data a hook holds.\nconst ids = new WeakMap<object, string>()\nlet seq = 0\nfunction clientKey(c: StorefrontClient | null): string {\n if (!c) return 'none'\n let k = ids.get(c)\n if (!k) ids.set(c, (k = `c${++seq}`))\n return k\n}\n\n// ---------------------------------------------------------------------------\n// Lists (orders, pending payments)\n// ---------------------------------------------------------------------------\n\nexport type UseConnectionResult<T> = {\n status: Exclude<AccountStatus, 'not_found'>\n nodes: T[]\n error: Error | null\n hasMore: boolean\n loadingMore: boolean\n totalCount: number | null\n /** Fetches the first page again (the retry). Keeps showing the current list meanwhile. */\n reload: () => void\n /** Appends the next page. */\n loadMore: () => void\n}\n\ntype ConnectionState<T> = { status: UseConnectionResult<T>['status']; nodes: T[]; error: Error | null; cursor: string | null; hasMore: boolean; total: number | null; owner: string }\n\nfunction useConnection<T>(fetchPage: (c: StorefrontClient, after: string | null, signal: AbortSignal) => Promise<Connection<T>>, client: StorefrontClient | null, initial: Connection<T> | null | undefined, key: string): UseConnectionResult<T> {\n // What the list belongs to: this client (a buyer's session) and this query. Data of another owner is never returned,\n // so the next buyer on a shared device never sees the previous one's orders, not even while his own load.\n const owner = `${clientKey(client)}|${key}`\n const empty = (status: ConnectionState<T>['status']): ConnectionState<T> => ({ status, nodes: [], error: null, cursor: null, hasMore: false, total: null, owner })\n const [state, setState] = useState<ConnectionState<T>>(() =>\n initial\n ? { status: 'ready', nodes: initial.nodes ?? [], error: null, cursor: initial.page_info?.end_cursor ?? null, hasMore: !!initial.page_info?.has_next_page, total: initial.total_count ?? null, owner }\n : empty('loading'),\n )\n const [loadingMore, setLoadingMore] = useState(false)\n const alive = useRef<AbortController | null>(null)\n const more = useRef<AbortController | null>(null)\n const fetchRef = useRef(fetchPage)\n fetchRef.current = fetchPage\n\n const first = useCallback(() => {\n alive.current?.abort()\n more.current?.abort()\n setLoadingMore(false)\n if (!client) {\n // No session (yet, or signed out): nothing is fetched and nothing of a previous session is kept.\n setState(empty('loading'))\n return\n }\n const ctl = new AbortController()\n alive.current = ctl\n setState((s) => (s.owner === owner && s.nodes.length ? { ...s, error: null } : empty('loading')))\n fetchRef.current(client, null, ctl.signal).then(\n (page) => !ctl.signal.aborted && setState({ status: 'ready', nodes: page.nodes ?? [], error: null, cursor: page.page_info?.end_cursor ?? null, hasMore: !!page.page_info?.has_next_page, total: page.total_count ?? null, owner }),\n (e: unknown) => !ctl.signal.aborted && setState((s) => (s.owner === owner ? { ...s, status: 'error', error: asError(e) } : { ...empty('error'), error: asError(e) })),\n )\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [client, owner])\n\n useEffect(() => {\n if (!(initial && state.owner === owner)) first()\n return () => {\n alive.current?.abort()\n more.current?.abort()\n }\n // `owner` restarts the load when the session or what is asked for changes (page size, filter).\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [first, owner])\n\n const loadMore = useCallback(() => {\n if (!client || state.owner !== owner || !state.hasMore || loadingMore) return\n const ctl = new AbortController()\n more.current = ctl\n setLoadingMore(true)\n fetchRef.current(client, state.cursor, ctl.signal).then(\n (page) => {\n // A reload or another session since this page was asked: it belongs to a list that no longer exists.\n if (ctl.signal.aborted) return\n setLoadingMore(false)\n setState((s) => (s.owner !== owner ? s : { ...s, nodes: [...s.nodes, ...(page.nodes ?? [])], cursor: page.page_info?.end_cursor ?? null, hasMore: !!page.page_info?.has_next_page, total: page.total_count ?? s.total, error: null }))\n },\n (e: unknown) => {\n if (ctl.signal.aborted) return\n setLoadingMore(false)\n setState((s) => (s.owner !== owner ? s : { ...s, error: asError(e) }))\n },\n )\n }, [client, owner, state.owner, state.hasMore, state.cursor, loadingMore])\n\n const view = state.owner === owner ? state : empty('loading')\n return { status: view.status, nodes: view.nodes, error: view.error, hasMore: view.hasMore, loadingMore: state.owner === owner && loadingMore, totalCount: view.total, reload: first, loadMore }\n}\n\nexport type UseCustomerOrdersOptions = {\n client?: StorefrontClient | null\n /** Page size (default 20). */\n first?: number\n /** First page already read on the server: renders at once, nothing is fetched. */\n initial?: Connection<Order> | null\n}\n\n/** The buyer's orders (summaries), newest first, with `loadMore`. */\nexport function useCustomerOrders({ client, first = 20, initial }: UseCustomerOrdersOptions = {}): UseConnectionResult<Order> {\n return useConnection<Order>((c, after, signal) => c.customer.orders({ first, ...(after ? { after } : {}) }, { signal }), useClient(client), initial, `orders:${first}`)\n}\n\nexport type UsePendingPaymentsOptions = UseCustomerOrdersOptions & { initial?: Connection<PendingPayment> | null }\n\n/** Cash vouchers still waiting for payment. A failure of this section never blocks the orders: it is its own `status`. */\nexport function usePendingPayments({ client, first = 20, initial }: UsePendingPaymentsOptions = {}): UseConnectionResult<PendingPayment> {\n return useConnection<PendingPayment>((c, after, signal) => c.customer.pendingPayments({ first, ...(after ? { after } : {}) }, { signal }), useClient(client), initial, `pending:${first}`)\n}\n\n// ---------------------------------------------------------------------------\n// One order\n// ---------------------------------------------------------------------------\n\nexport type UseCustomerOrderOptions = {\n client?: StorefrontClient | null\n /** The order already read on the server (`null` = the server found none: `not_found`). */\n initial?: Order | null\n /**\n * Re-reads the order every `everyMs` (default 10 s) for at most `forMs` (default 60 s) while `while(order)` is true,\n * e.g. an invoice being generated: `{ while: (o) => ['queued','issuing'].includes(o.invoice?.stage ?? '') }`.\n * Polling is silent: the order stays on screen and `refreshing` flips.\n */\n poll?: { while: (order: Order) => boolean; everyMs?: number; forMs?: number }\n}\n\nexport type UseCustomerOrderResult = {\n status: AccountStatus\n order: Order | null\n error: Error | null\n /** A silent re-read is in flight (retry or poll): keep showing `order`. */\n refreshing: boolean\n reload: () => void\n}\n\n/** One order with its detail (shipments, invoices, payments, refunds, `degraded`). */\nexport function useCustomerOrder(id: string | null | undefined, { client, initial, poll }: UseCustomerOrderOptions = {}): UseCustomerOrderResult {\n const c = useClient(client)\n const given = initial !== undefined\n // Whose order this is: the session and the id. A change of either never shows the previous order meanwhile.\n const owner = `${clientKey(c)}|${id ?? ''}`\n const [state, setState] = useState<{ status: AccountStatus; order: Order | null; error: Error | null; owner: string }>(() => (given ? { status: initial ? 'ready' : 'not_found', order: initial, error: null, owner } : { status: 'loading', order: null, error: null, owner }))\n const [refreshing, setRefreshing] = useState(false)\n const ctlRef = useRef<AbortController | null>(null)\n const initialOwner = useRef(given ? owner : null)\n\n const load = useCallback(\n (silent: boolean) => {\n ctlRef.current?.abort()\n setRefreshing(false)\n if (!c || !id) {\n setState({ status: 'loading', order: null, error: null, owner })\n return\n }\n const ctl = new AbortController()\n ctlRef.current = ctl\n if (silent) setRefreshing(true)\n else setState((s) => (s.owner === owner && s.order ? { ...s, error: null } : { status: 'loading', order: null, error: null, owner }))\n c.customer.order(id, { signal: ctl.signal }).then(\n (o) => {\n if (ctl.signal.aborted) return\n setRefreshing(false)\n setState(o ? { status: 'ready', order: o, error: null, owner } : { status: 'not_found', order: null, error: null, owner })\n },\n (e: unknown) => {\n if (ctl.signal.aborted) return\n setRefreshing(false)\n // A failed silent read keeps the order on screen; only a first load turns into an error.\n setState((s) => (s.owner === owner && s.order ? { ...s, error: asError(e) } : { status: 'error', order: null, error: asError(e), owner }))\n },\n )\n },\n [c, id, owner],\n )\n\n useEffect(() => {\n if (initialOwner.current !== owner) load(false)\n initialOwner.current = null\n return () => ctlRef.current?.abort()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [load, owner])\n\n const mine = state.owner === owner\n const order = mine ? state.order : null\n const keepPolling = !!poll && !!order && poll.while(order)\n const everyMs = poll?.everyMs ?? 10_000\n const forMs = poll?.forMs ?? 60_000\n useEffect(() => {\n if (!keepPolling) return\n const t0 = Date.now()\n const timer = setInterval(() => {\n if (Date.now() - t0 >= forMs) clearInterval(timer)\n else load(true)\n }, everyMs)\n return () => clearInterval(timer)\n }, [keepPolling, everyMs, forMs, load])\n\n const hasOrder = order !== null\n const reload = useCallback(() => load(hasOrder), [load, hasOrder])\n return { status: mine ? state.status : 'loading', order, error: mine ? state.error : null, refreshing: mine && refreshing, reload }\n}\n","/**\n * Texts of the account settings screens (`SessionsList`, and the other sections). Spanish (es-MX) by default,\n * English with `en*`, anything with `messages`. Server errors are codes (`SettingsErrorCode`); the words are here.\n */\nimport { fill } from '../fiscal/messages.js'\n\nexport { fill }\n\nconst ES = {\n // shared\n 'settings.saved': 'Listo, guardamos tus cambios.',\n 'settings.error.session_expired': 'Tu sesión venció. Inicia sesión de nuevo para continuar.',\n 'settings.error.invalid_credential': 'No pudimos verificarte. Revisa tu contraseña o el código e inténtalo de nuevo.',\n 'settings.error.reauth_required': 'Por seguridad, confirma tu contraseña o un código antes de continuar.',\n 'settings.error.rate_limited': 'Demasiados intentos. Espera unos minutos e inténtalo de nuevo.',\n 'settings.error.rate_limited_in': 'Demasiados intentos. Inténtalo de nuevo en {minutes} min.',\n 'settings.error.validation': 'Revisa los datos e inténtalo de nuevo.',\n 'settings.error.blocked_orders': 'Tienes un pedido en camino. Podrás hacerlo cuando llegue.',\n 'settings.error.blocked_pending_payments': 'Tienes un pago pendiente. Págalo o espera a que venza para continuar.',\n 'settings.error.unsupported': 'Esta tienda no ofrece esta opción por ahora.',\n 'settings.error.unavailable': 'No pudimos completar la acción. Inténtalo de nuevo en un momento.',\n // language\n 'lang.title': 'Idioma',\n 'lang.label': 'Idioma de tus mensajes',\n 'lang.default': 'El de la tienda',\n 'lang.save': 'Guardar idioma',\n // notifications\n 'notif.title': 'Avisos',\n 'notif.intro': 'Elige cómo quieres que te avisemos.',\n 'notif.event.order_updates': 'Actualizaciones de tu pedido',\n 'notif.event.shipping': 'Envío y seguimiento',\n 'notif.event.restock': 'Producto otra vez disponible',\n 'notif.event.unknown': 'Otros avisos',\n 'notif.channel.email': 'Correo',\n 'notif.channel.whatsapp': 'WhatsApp',\n 'notif.channel.unknown': 'Otro canal',\n 'notif.required': 'La confirmación de tu pedido, tus pagos y tus facturas siempre se envían: son necesarios.',\n 'notif.save': 'Guardar avisos',\n 'notif.matrixLabel': 'Avisos por tipo y canal',\n // sessions\n 'sessions.title': 'Dispositivos con sesión abierta',\n 'sessions.intro': 'Estos son los dispositivos donde tu cuenta tiene la sesión abierta. Si no reconoces alguno, ciérralo.',\n 'sessions.current': 'Este dispositivo',\n 'sessions.lastUsed': 'Último uso: {date}',\n 'sessions.signedIn': 'Inicio de sesión: {date}',\n 'sessions.method.email': 'Con código por correo',\n 'sessions.method.phone': 'Con código por mensaje',\n 'sessions.method.password': 'Con contraseña',\n 'sessions.method.unknown': 'Inicio de sesión',\n 'sessions.revoke': 'Cerrar sesión',\n 'sessions.revokeLabel': 'Cerrar la sesión de {device}',\n 'sessions.revokeOthers': 'Cerrar las demás sesiones',\n 'sessions.revoked': 'Cerramos la sesión.',\n 'sessions.revokedOthers': 'Cerramos las demás sesiones.',\n 'sessions.none': 'No hay otras sesiones abiertas.',\n 'sessions.error': 'No pudimos cargar tus dispositivos. Inténtalo de nuevo más tarde.',\n 'sessions.loading': 'Cargando tus dispositivos',\n 'sessions.listLabel': 'Dispositivos con sesión abierta',\n}\n\nexport type SettingsMessageKey = keyof typeof ES\nexport type SettingsMessages = Record<SettingsMessageKey, string>\n\nconst EN: SettingsMessages = {\n 'settings.saved': 'Done, your changes are saved.',\n 'settings.error.session_expired': 'Your session expired. Sign in again to continue.',\n 'settings.error.invalid_credential': 'We could not verify you. Check your password or the code and try again.',\n 'settings.error.reauth_required': 'For your security, confirm your password or a code before continuing.',\n 'settings.error.rate_limited': 'Too many attempts. Wait a few minutes and try again.',\n 'settings.error.rate_limited_in': 'Too many attempts. Try again in {minutes} min.',\n 'settings.error.validation': 'Check the details and try again.',\n 'settings.error.blocked_orders': 'You have an order on its way. You will be able to do this once it arrives.',\n 'settings.error.blocked_pending_payments': 'You have a pending payment. Pay it or wait for it to expire to continue.',\n 'settings.error.unsupported': 'This store does not offer this option right now.',\n 'settings.error.unavailable': 'We could not complete that. Try again in a moment.',\n 'lang.title': 'Language',\n 'lang.label': 'Language of your messages',\n 'lang.default': 'The store’s',\n 'lang.save': 'Save language',\n 'notif.title': 'Notices',\n 'notif.intro': 'Choose how you want us to notify you.',\n 'notif.event.order_updates': 'Updates about your order',\n 'notif.event.shipping': 'Shipping and tracking',\n 'notif.event.restock': 'A product is available again',\n 'notif.event.unknown': 'Other notices',\n 'notif.channel.email': 'Email',\n 'notif.channel.whatsapp': 'WhatsApp',\n 'notif.channel.unknown': 'Other channel',\n 'notif.required': 'Your order confirmation, payments and invoices are always sent: they are required.',\n 'notif.save': 'Save notices',\n 'notif.matrixLabel': 'Notices by type and channel',\n 'sessions.title': 'Devices signed in',\n 'sessions.intro': 'These are the devices where your account is signed in. If you do not recognize one, sign it out.',\n 'sessions.current': 'This device',\n 'sessions.lastUsed': 'Last used: {date}',\n 'sessions.signedIn': 'Signed in: {date}',\n 'sessions.method.email': 'With an email code',\n 'sessions.method.phone': 'With a text code',\n 'sessions.method.password': 'With a password',\n 'sessions.method.unknown': 'Sign-in',\n 'sessions.revoke': 'Sign out',\n 'sessions.revokeLabel': 'Sign out {device}',\n 'sessions.revokeOthers': 'Sign out of all other devices',\n 'sessions.revoked': 'We signed that device out.',\n 'sessions.revokedOthers': 'We signed out the other devices.',\n 'sessions.none': 'There are no other signed-in devices.',\n 'sessions.error': 'We could not load your devices. Try again later.',\n 'sessions.loading': 'Loading your devices',\n 'sessions.listLabel': 'Devices signed in',\n}\n\n/** Messages for a locale (`es*` default, `en*`), with optional per-key overrides. */\nexport function settingsMessages(locale?: string | null, overrides?: Partial<SettingsMessages> | null): SettingsMessages {\n const base: SettingsMessages = (locale ?? 'es-MX').toLowerCase().startsWith('en') ? EN : ES\n return overrides ? { ...base, ...overrides } : base\n}\n\n/** The text of an open enum (`<group>.<value>`), else `<group>.unknown`. Never the raw value. */\nexport function settingsEnumText(m: SettingsMessages, group: string, value: unknown): string {\n const key = `${group}.${typeof value === 'string' ? value : ''}` as SettingsMessageKey\n return Object.prototype.hasOwnProperty.call(m, key) ? m[key] : m[`${group}.unknown` as SettingsMessageKey]\n}\n","/** Small shared pieces of the settings screens: texts, dates and the error line. */\nimport { useResolvedLocale } from '../locale.js'\nimport { formatDate } from './orders-ui.js'\nimport { fill, settingsMessages, type SettingsMessageKey, type SettingsMessages } from './settings-messages.js'\nimport type { AccountSettingsActionData, SettingsIntent } from './settings-types.js'\n\nexport type SettingsTextProps = {\n /** BCP 47; defaults to the provider's, then `es-MX`. */\n locale?: string\n /** Per-key text overrides (a store's own words). */\n messages?: Partial<SettingsMessages>\n /** IANA time zone for dates. Pass the store's own to get the same text on server and browser. */\n timeZone?: string\n}\n\nexport function useSettingsText({ locale, messages, timeZone }: SettingsTextProps) {\n const resolved = useResolvedLocale(locale)\n const m = settingsMessages(resolved, messages)\n const t = (key: SettingsMessageKey, vars?: Record<string, string | number>): string => (vars ? fill(m[key], vars) : m[key])\n const date = (iso: string | null | undefined): string | null => formatDate(iso, resolved, 'datetime', timeZone)\n return { locale: resolved, m, t, date }\n}\n\n/** The sentence for an error code (never the raw code, never a server message). */\nexport function errorText(m: SettingsMessages, error: NonNullable<AccountSettingsActionData['error']>): string {\n if (error.code === 'rate_limited' && typeof error.retryAfter === 'number' && error.retryAfter > 0) {\n return fill(m['settings.error.rate_limited_in'], { minutes: Math.max(1, Math.ceil(error.retryAfter / 60)) })\n }\n const key = `settings.error.${error.code}` as SettingsMessageKey\n return Object.prototype.hasOwnProperty.call(m, key) ? m[key] : m['settings.error.unavailable']\n}\n\n/** The result of the action when it answers THIS form (`intents`), else `null`. */\nexport function resultFor(data: AccountSettingsActionData | null | undefined, ...intents: SettingsIntent[]): AccountSettingsActionData | null {\n return data && data.intent && intents.includes(data.intent) ? data : null\n}\n\n","/**\n * «Devices»: the sessions the buyer has open, with a button to close each one and one to close all the others.\n * Headless: no styles of its own, `data-sf-session*` hooks and `classNames` slots. Every button is a real form\n * submit (`intent` = `session-revoke` | `session-revoke-others`), so it works without JavaScript and is answered by\n * `createAccountSettingsAction` (`@asteby/storefront-react/account/server`). The list comes from `loadAccountSessions`.\n *\n * Degradation: `sessions={null}` (the store could not list them, or its server is older than contract 1.9) renders a\n * calm notice instead of an error page, and the rest of the settings keeps working. The server sends no address and\n * no token, so there is nothing sensitive to leak here; the device label is plain text (never HTML).\n */\nimport type { CustomerSessionInfo } from '@asteby/storefront'\nimport { useId, type ComponentType, type ReactNode } from 'react'\nimport type { AccountFormProps } from './account-auth.js'\nimport { str } from './orders-ui.js'\nimport { settingsEnumText, type SettingsMessages } from './settings-messages.js'\nimport type { AccountSettingsActionData } from './settings-types.js'\nimport { errorText, resultFor, useSettingsText, type SettingsTextProps } from './settings-ui.js'\n\nexport type SessionsListClassNames = Partial<Record<'root' | 'title' | 'intro' | 'list' | 'item' | 'device' | 'badge' | 'meta' | 'revoke' | 'revokeOthers' | 'notice' | 'error' | 'empty', string>>\n\nexport type SessionsListProps = SettingsTextProps & {\n /** From `loadAccountSessions`. `null` = could not be loaded (the section degrades). */\n sessions: CustomerSessionInfo[] | null\n /** What the settings action returned (`useActionData()`); drives the confirmation and the errors. */\n data?: AccountSettingsActionData | null\n /** A submit is in flight: disables the buttons. */\n pending?: boolean\n /** Form component, e.g. React Router's `Form`. Default: the HTML `<form>`. */\n form?: 'form' | ComponentType<AccountFormProps>\n /** `action` of the forms: the route that mounts `createAccountSettingsAction`. Default: the current URL. */\n action?: string\n /** Heading level of the title (default 3). */\n headingLevel?: 2 | 3 | 4\n classNames?: SessionsListClassNames\n /** Extra content under the list. */\n children?: ReactNode\n}\n\nfunction methodText(m: SettingsMessages, method: unknown): string {\n return settingsEnumText(m, 'sessions.method', method)\n}\n\nexport function SessionsList({ sessions, data, pending = false, form: FormTag = 'form', action, headingLevel = 3, classNames: cx = {}, children, ...text }: SessionsListProps) {\n const { m, t, date } = useSettingsText(text)\n const titleId = useId()\n const Heading = `h${headingLevel}` as 'h3'\n const result = resultFor(data, 'session-revoke', 'session-revoke-others')\n const list = (sessions ?? []).filter((s) => s && typeof s.id === 'string' && s.id)\n const others = list.filter((s) => !s.current)\n const formProps = { method: 'post' as const, ...(action ? { action } : {}) }\n\n return (\n <section className={cx.root} aria-labelledby={titleId} data-sf-sessions data-state={sessions === null ? 'degraded' : 'ready'}>\n <Heading id={titleId} className={cx.title}>\n {m['sessions.title']}\n </Heading>\n {sessions === null ? (\n <p className={cx.error} role=\"status\" data-sf-sessions-degraded>\n {m['sessions.error']}\n </p>\n ) : (\n <>\n <p className={cx.intro}>{m['sessions.intro']}</p>\n {result?.ok ? (\n <p className={cx.notice} role=\"status\" data-sf-sessions-notice>\n {result.intent === 'session-revoke-others' ? m['sessions.revokedOthers'] : m['sessions.revoked']}\n </p>\n ) : result?.error ? (\n <p className={cx.error} role=\"alert\" data-sf-sessions-error={result.error.code}>\n {errorText(m, result.error)}\n </p>\n ) : null}\n <ul className={cx.list} aria-label={m['sessions.listLabel']} data-sf-sessions-list>\n {list.map((s) => {\n const device = str(s.device_label) ?? m['sessions.method.unknown']\n const last = date(s.last_used_at ?? null)\n const since = date(s.created_at)\n return (\n <li key={s.id} className={cx.item} data-sf-session data-current={s.current ? 'true' : 'false'}>\n <p className={cx.device} data-sf-session-device>\n {device}\n {s.current ? (\n <span className={cx.badge} data-sf-session-current>\n {' '}\n {m['sessions.current']}\n </span>\n ) : null}\n </p>\n <p className={cx.meta} data-sf-session-meta>\n {methodText(m, s.login_method)}\n {last ? ` · ${t('sessions.lastUsed', { date: last })}` : since ? ` · ${t('sessions.signedIn', { date: since })}` : ''}\n </p>\n {s.current ? null : (\n <FormTag {...formProps} data-sf-account-form=\"\">\n <input type=\"hidden\" name=\"session_id\" value={s.id} />\n <button type=\"submit\" name=\"intent\" value=\"session-revoke\" disabled={pending} className={cx.revoke} aria-label={t('sessions.revokeLabel', { device })} data-sf-session-revoke>\n {m['sessions.revoke']}\n </button>\n </FormTag>\n )}\n </li>\n )\n })}\n </ul>\n {others.length === 0 ? (\n <p className={cx.empty} data-sf-sessions-empty>\n {m['sessions.none']}\n </p>\n ) : (\n <FormTag {...formProps} data-sf-account-form=\"\">\n <button type=\"submit\" name=\"intent\" value=\"session-revoke-others\" disabled={pending} className={cx.revokeOthers} data-sf-session-revoke-others>\n {m['sessions.revokeOthers']}\n </button>\n </FormTag>\n )}\n </>\n )}\n {children}\n </section>\n )\n}\n","/**\n * Language and notification preferences of the buyer. Headless: no styles of its own, `data-sf-lang*` /\n * `data-sf-notif*` hooks and `classNames` slots. Both are real form submits answered by\n * `createAccountSettingsAction` (`intent` = `locale` | `notifications`), so they work without JavaScript.\n *\n * Degradation: nothing to choose, nothing rendered. `<LanguagePreference>` needs at least two languages;\n * `<NotificationPreferences>` needs at least one channel the store can deliver on (`capabilities.notifications\n * .channels`; absent on a server older than contract 1.9). A store that composes the page does not need an `if`.\n *\n * What is NOT here on purpose: the confirmation of the order, the payments and the invoices cannot be turned off, so\n * they are not boxes to uncheck, and the page says so. Marketing is a consent (it has a legal record), not a box here.\n */\nimport type { CustomerPreferences } from '@asteby/storefront'\nimport { useId, type ComponentType, type ReactNode } from 'react'\nimport type { AccountFormProps } from './account-auth.js'\nimport { str } from './orders-ui.js'\nimport { settingsEnumText } from './settings-messages.js'\nimport type { AccountSettingsActionData } from './settings-types.js'\nimport { errorText, resultFor, useSettingsText, type SettingsTextProps } from './settings-ui.js'\n\n/** The optional events the server accepts (anything else is refused by it). */\nexport const NOTIFICATION_EVENTS = ['order_updates', 'shipping', 'restock'] as const\n\ntype SectionProps = SettingsTextProps & {\n data?: AccountSettingsActionData | null\n pending?: boolean\n /** Form component, e.g. React Router's `Form`. Default: the HTML `<form>`. */\n form?: 'form' | ComponentType<AccountFormProps>\n /** `action` of the form: the route that mounts `createAccountSettingsAction`. Default: the current URL. */\n action?: string\n headingLevel?: 2 | 3 | 4\n children?: ReactNode\n}\n\n// ---------------------------------------------------------------------------\n// Language\n// ---------------------------------------------------------------------------\n\nexport type LanguagePreferenceClassNames = Partial<Record<'root' | 'title' | 'form' | 'label' | 'select' | 'submit' | 'notice' | 'error', string>>\n\nexport type LanguagePreferenceProps = SectionProps & {\n /** The languages the store offers (`shop.locales`), as BCP 47 tags or `{ value, label }`. Fewer than two renders nothing. */\n locales: ReadonlyArray<string | { value: string; label?: string }> | null | undefined\n /** The buyer's current language (`customer.locale`); `null` = the store's own. */\n value?: string | null\n classNames?: LanguagePreferenceClassNames\n}\n\nfunction languageName(tag: string, inLocale: string): string {\n try {\n const name = new Intl.DisplayNames([inLocale], { type: 'language', languageDisplay: 'dialect' }).of(tag)\n return name ? name.charAt(0).toLocaleUpperCase(inLocale) + name.slice(1) : tag\n } catch {\n return tag\n }\n}\n\nexport function LanguagePreference({ locales, value, data, pending = false, form: FormTag = 'form', action, headingLevel = 3, classNames: cx = {}, children, ...text }: LanguagePreferenceProps) {\n const { m, locale } = useSettingsText(text)\n const titleId = useId()\n const selectId = useId()\n const options = (locales ?? [])\n .map((l) => (typeof l === 'string' ? { value: l, label: undefined } : { value: l?.value, label: l?.label }))\n .filter((o): o is { value: string; label: string | undefined } => typeof o.value === 'string' && /^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8}){0,2}$/.test(o.value))\n if (options.length < 2) return null\n const Heading = `h${headingLevel}` as 'h3'\n const result = resultFor(data, 'locale')\n const current = options.find((o) => o.value.toLowerCase() === (value ?? '').toLowerCase())?.value ?? ''\n\n return (\n <section className={cx.root} aria-labelledby={titleId} data-sf-lang>\n <Heading id={titleId} className={cx.title}>\n {m['lang.title']}\n </Heading>\n <FormTag method=\"post\" {...(action ? { action } : {})} className={cx.form} data-sf-account-form=\"\">\n {result?.saved ? (\n <p className={cx.notice} role=\"status\" data-sf-lang-notice>\n {m['settings.saved']}\n </p>\n ) : result?.error ? (\n <p className={cx.error} role=\"alert\" data-sf-lang-error={result.error.code}>\n {errorText(m, result.error)}\n </p>\n ) : null}\n <label htmlFor={selectId} className={cx.label}>\n {m['lang.label']}\n </label>\n <select id={selectId} name=\"locale\" defaultValue={current} className={cx.select} data-sf-lang-select>\n <option value=\"\">{m['lang.default']}</option>\n {options.map((o) => (\n <option key={o.value} value={o.value}>\n {str(o.label) ?? languageName(o.value, locale)}\n </option>\n ))}\n </select>\n <button type=\"submit\" name=\"intent\" value=\"locale\" disabled={pending} className={cx.submit} data-sf-lang-submit>\n {m['lang.save']}\n </button>\n </FormTag>\n {children}\n </section>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Notifications\n// ---------------------------------------------------------------------------\n\nexport type NotificationPreferencesClassNames = Partial<Record<'root' | 'title' | 'intro' | 'form' | 'table' | 'row' | 'event' | 'channel' | 'check' | 'required' | 'submit' | 'notice' | 'error', string>>\n\nexport type NotificationPreferencesProps = SectionProps & {\n /** `capabilities.notifications.channels`: the channels the store can deliver on. Empty or absent renders nothing. */\n channels: ReadonlyArray<string> | null | undefined\n /** `customer.preferences`. A choice never made counts as on (what the store sends today). */\n preferences?: CustomerPreferences | null\n /** Events to offer (default: all the optional ones). */\n events?: ReadonlyArray<string>\n classNames?: NotificationPreferencesClassNames\n}\n\nconst TOKEN = /^[a-z][a-z0-9_]{0,31}$/\n\nexport function NotificationPreferences({ channels, preferences, events = NOTIFICATION_EVENTS, data, pending = false, form: FormTag = 'form', action, headingLevel = 3, classNames: cx = {}, children, ...text }: NotificationPreferencesProps) {\n const { m } = useSettingsText(text)\n const titleId = useId()\n const cols = Array.from(new Set((channels ?? []).filter((c): c is string => typeof c === 'string' && TOKEN.test(c))))\n const rows = Array.from(new Set(events.filter((e) => TOKEN.test(e))))\n if (cols.length === 0 || rows.length === 0) return null\n const Heading = `h${headingLevel}` as 'h3'\n const result = resultFor(data, 'notifications')\n const on = (event: string, channel: string): boolean => preferences?.notifications?.[event]?.[channel] !== false\n\n return (\n <section className={cx.root} aria-labelledby={titleId} data-sf-notif>\n <Heading id={titleId} className={cx.title}>\n {m['notif.title']}\n </Heading>\n <p className={cx.intro}>{m['notif.intro']}</p>\n <FormTag method=\"post\" {...(action ? { action } : {})} className={cx.form} data-sf-account-form=\"\">\n {result?.saved ? (\n <p className={cx.notice} role=\"status\" data-sf-notif-notice>\n {m['settings.saved']}\n </p>\n ) : result?.error ? (\n <p className={cx.error} role=\"alert\" data-sf-notif-error={result.error.code}>\n {errorText(m, result.error)}\n </p>\n ) : null}\n <table className={cx.table} aria-label={m['notif.matrixLabel']} data-sf-notif-table>\n <thead>\n <tr>\n <th scope=\"col\">\n <span style={{ position: 'absolute', width: 1, height: 1, overflow: 'hidden', clip: 'rect(0 0 0 0)', whiteSpace: 'nowrap' }}>{m['notif.title']}</span>\n </th>\n {cols.map((c) => (\n <th key={c} scope=\"col\" className={cx.channel} data-sf-notif-channel={c}>\n {settingsEnumText(m, 'notif.channel', c)}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((e) => (\n <tr key={e} className={cx.row} data-sf-notif-row={e}>\n <th scope=\"row\" className={cx.event}>\n {settingsEnumText(m, 'notif.event', e)}\n </th>\n {cols.map((c) => {\n const id = `${e}:${c}`\n return (\n <td key={c}>\n {/* Every box shown is listed, so an unchecked one (which a browser does not send) is still read as «off». */}\n <input type=\"hidden\" name=\"pref_shown\" value={id} />\n <input type=\"checkbox\" name=\"pref\" value={id} defaultChecked={on(e, c)} className={cx.check} aria-label={`${settingsEnumText(m, 'notif.event', e)} · ${settingsEnumText(m, 'notif.channel', c)}`} />\n </td>\n )\n })}\n </tr>\n ))}\n </tbody>\n </table>\n <p className={cx.required} data-sf-notif-required>\n {m['notif.required']}\n </p>\n <button type=\"submit\" name=\"intent\" value=\"notifications\" disabled={pending} className={cx.submit} data-sf-notif-submit>\n {m['notif.save']}\n </button>\n </FormTag>\n {children}\n </section>\n )\n}\n"]}