@brew.new/cli 0.5.0 → 0.6.0
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.
- package/dist/bin.js +50 -1
- package/dist/bin.js.map +1 -1
- package/package.json +2 -2
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/errors.ts","../src/lib/confirm.ts","../src/version.ts","../src/lib/config-store.ts","../src/lib/client.ts","../src/lib/output.ts","../src/lib/context.ts","../src/lib/define-command.ts","../src/lib/input.ts","../src/lib/paginate.ts","../src/commands/analytics/automations.ts","../src/commands/analytics/campaigns.ts","../src/commands/analytics/events.ts","../src/commands/analytics/overview.ts","../src/commands/analytics/sends/get.ts","../src/commands/analytics/sends/list.ts","../src/commands/analytics/trigger-instances/list.ts","../src/lib/raw-request.ts","../src/commands/api.ts","../src/commands/api-keys/create.ts","../src/commands/api-keys/delete.ts","../src/commands/api-keys/list.ts","../src/commands/audiences/create.ts","../src/commands/audiences/delete.ts","../src/commands/audiences/duplicate.ts","../src/commands/audiences/from-events.ts","../src/commands/audiences/get.ts","../src/commands/audiences/list.ts","../src/commands/audiences/update.ts","../src/commands/automations/audience-runs/control.ts","../src/commands/automations/audience-runs/list.ts","../src/commands/automations/create.ts","../src/commands/automations/delete.ts","../src/commands/automations/get.ts","../src/commands/automations/list.ts","../src/commands/automations/publish.ts","../src/commands/automations/run.ts","../src/commands/automations/runs/list.ts","../src/commands/automations/test.ts","../src/commands/automations/triggers/contract.ts","../src/commands/automations/triggers/create.ts","../src/commands/automations/triggers/delete.ts","../src/commands/automations/triggers/fire.ts","../src/commands/automations/triggers/list.ts","../src/commands/automations/triggers/ready.ts","../src/commands/automations/triggers/update.ts","../src/commands/automations/unpublish.ts","../src/commands/automations/update.ts","../src/commands/brand/get.ts","../src/commands/brand/get-images.ts","../src/commands/brand/update.ts","../src/commands/brands/create.ts","../src/commands/brands/get.ts","../src/commands/brands/list.ts","../src/commands/chats/get.ts","../src/commands/config.ts","../src/commands/contacts/count.ts","../src/commands/contacts/delete.ts","../src/commands/contacts/delete-many.ts","../src/commands/contacts/get.ts","../src/commands/contacts/import-csv.ts","../src/commands/contacts/search.ts","../src/commands/contacts/update.ts","../src/commands/contacts/upsert.ts","../src/commands/contacts/upsert-many.ts","../src/commands/contacts/validate.ts","../src/commands/content/add-image.ts","../src/commands/content/generate-image.ts","../src/commands/content/gif.ts","../src/commands/content/html-to-png.ts","../src/commands/content/transform.ts","../src/commands/contracts/infer.ts","../src/skip-list.ts","../src/lib/manifest.ts","../src/commands/docs.ts","../src/commands/doctor.ts","../src/commands/domains/add.ts","../src/commands/domains/delete.ts","../src/commands/domains/get.ts","../src/commands/domains/health.ts","../src/commands/domains/list.ts","../src/commands/domains/update.ts","../src/commands/domains/verify.ts","../src/commands/emails/audit.ts","../src/commands/emails/clone.ts","../src/commands/emails/create-inbox-placement-test.ts","../src/commands/emails/delete.ts","../src/commands/emails/edit.ts","../src/commands/emails/export.ts","../src/commands/emails/generate.ts","../src/commands/emails/get.ts","../src/commands/emails/get-inbox-placement-results.ts","../src/commands/emails/groups/create.ts","../src/commands/emails/groups/delete.ts","../src/commands/emails/groups/list.ts","../src/commands/emails/groups/update.ts","../src/commands/emails/import.ts","../src/commands/emails/import-figma.ts","../src/commands/emails/list.ts","../src/commands/emails/preview-clients.ts","../src/commands/emails/restore.ts","../src/commands/emails/send.ts","../src/commands/fields/create.ts","../src/commands/fields/delete.ts","../src/commands/fields/list.ts","../src/commands/health.ts","../src/commands/integrations/list.ts","../src/commands/login.ts","../src/commands/logout.ts","../src/commands/sends/cancel.ts","../src/commands/sends/pause.ts","../src/commands/sends/resume.ts","../src/commands/templates/list.ts","../src/commands/types.ts","../src/commands/usage.ts","../src/commands/whoami.ts","../src/registry.ts","../src/cli.ts","../src/bin.ts"],"names":["readFileSync","parseBool","BrewApiError","parseInlineInput","asString","writeFileSync","ctx"],"mappings":";;;;;;;;;AAGO,IAAM,OAAA,GAAU,CAAA;AAChB,IAAM,YAAA,GAAe,CAAA;AACrB,IAAM,UAAA,GAAa,CAAA;AACnB,IAAM,SAAA,GAAY,CAAA;AAClB,IAAM,YAAA,GAAe,CAAA;AAGrB,IAAM,aAAA,GAAN,cAA4B,KAAA,CAAM;AAAC,CAAA;AAGnC,IAAM,YAAA,GAAN,cAA2B,KAAA,CAAM;AAAA,EAC7B,UAAA;AAAA,EAET,WAAA,CAAY,SAAiB,UAAA,EAAoB;AAC/C,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAAA,EACpB;AACF,CAAA;AAGO,IAAM,mBAAA,GAAN,cAAkC,KAAA,CAAM;AAAC,CAAA;AAMzC,IAAM,WAAA,GAAN,cAA0B,KAAA,CAAM;AAAA,EAC5B,MAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EAET,YAAY,KAAA,EAST;AACD,IAAA,KAAA,CAAM,MAAM,OAAO,CAAA;AACnB,IAAA,IAAA,CAAK,SAAS,KAAA,CAAM,MAAA;AACpB,IAAA,IAAA,CAAK,OAAO,KAAA,CAAM,IAAA;AAClB,IAAA,IAAA,CAAK,OAAO,KAAA,CAAM,IAAA;AAClB,IAAA,IAAA,CAAK,QAAQ,KAAA,CAAM,KAAA;AACnB,IAAA,IAAA,CAAK,aAAa,KAAA,CAAM,UAAA;AACxB,IAAA,IAAA,CAAK,OAAO,KAAA,CAAM,IAAA;AAClB,IAAA,IAAA,CAAK,YAAY,KAAA,CAAM,SAAA;AAAA,EACzB;AACF,CAAA;AAcO,IAAM,yBAAA,GAAN,cAAwC,KAAA,CAAM;AAAA,EAC1C,QAAA;AAAA,EAET,YAAY,QAAA,EAAgC;AAC1C,IAAA,KAAA,CAAM,SAAS,OAAO,CAAA;AACtB,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAAA,EAClB;AACF,CAAA;AAEO,SAAS,WAAW,KAAA,EAAwB;AACjD,EAAA,IAAI,iBAAiB,yBAAA,EAA2B;AAC9C,IAAA,OAAO,YAAA;AAAA,EACT;AACA,EAAA,IAAI,iBAAiB,aAAA,EAAe;AAClC,IAAA,OAAO,UAAA;AAAA,EACT;AACA,EAAA,IAAI,iBAAiB,YAAA,EAAc;AACjC,IAAA,OAAO,SAAA;AAAA,EACT;AACA,EAAA,MAAM,MAAA,GAAS,eAAe,KAAK,CAAA;AACnC,EAAA,IAAI,MAAA,KAAW,GAAA,IAAO,MAAA,KAAW,GAAA,EAAK;AACpC,IAAA,OAAO,SAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAA;AACT;AAaO,SAAS,gBAAgB,KAAA,EAAkC;AAChE,EAAA,IAAI,KAAA,YAAiB,YAAA,IAAgB,KAAA,YAAiB,WAAA,EAAa;AACjE,IAAA,OAAO;AAAA,MACL,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,SAAS,KAAA,CAAM,OAAA;AAAA,MACf,GAAI,MAAM,KAAA,GAAQ,EAAE,OAAO,KAAA,CAAM,KAAA,KAAU,EAAC;AAAA,MAC5C,GAAI,MAAM,UAAA,GAAa,EAAE,YAAY,KAAA,CAAM,UAAA,KAAe,EAAC;AAAA,MAC3D,GAAI,MAAM,IAAA,GAAO,EAAE,MAAM,KAAA,CAAM,IAAA,KAAS,EAAC;AAAA,MACzC,GAAI,MAAM,SAAA,GAAY,EAAE,WAAW,KAAA,CAAM,SAAA,KAAc,EAAC;AAAA,MACxD,QAAQ,KAAA,CAAM;AAAA,KAChB;AAAA,EACF;AACA,EAAA,IAAI,iBAAiB,YAAA,EAAc;AACjC,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,UAAA;AAAA,MACN,IAAA,EAAM,sBAAA;AAAA,MACN,SAAS,KAAA,CAAM,OAAA;AAAA,MACf,YAAY,KAAA,CAAM;AAAA,KACpB;AAAA,EACF;AACA,EAAA,IAAI,iBAAiB,aAAA,EAAe;AAClC,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,WAAA;AAAA,MACN,IAAA,EAAM,iBAAA;AAAA,MACN,SAAS,KAAA,CAAM;AAAA,KACjB;AAAA,EACF;AACA,EAAA,IAAI,cAAA,CAAe,KAAK,CAAA,EAAG;AACzB,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,aAAA;AAAA,MACN,IAAA,EAAM,qBAAA;AAAA,MACN,OAAA,EAAS,iDAAA;AAAA,MACT,UAAA,EACE;AAAA,KACJ;AAAA,EACF;AACA,EAAA,IAAI,iBAAiB,mBAAA,EAAqB;AACxC,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,aAAA;AAAA,MACN,IAAA,EAAM,iBAAA;AAAA,MACN,OAAA,EAAS,KAAA,CAAM,OAAA,KAAY,EAAA,GAAK,aAAa,KAAA,CAAM;AAAA,KACrD;AAAA,EACF;AACA,EAAA,IAAI,UAAU,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AACnE,EAAA,IAAI,KAAA,YAAiB,KAAA,IAAS,KAAA,CAAM,KAAA,KAAU,MAAA,EAAW;AACvD,IAAA,MAAM,KAAA,GACJ,MAAM,KAAA,YAAiB,KAAA,GAAQ,MAAM,KAAA,CAAM,OAAA,GAAU,MAAA,CAAO,KAAA,CAAM,KAAK,CAAA;AACzE,IAAA,OAAA,GAAU,CAAA,EAAG,OAAO,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA,CAAA;AAAA,EAChC;AACA,EAAA,OAAO,EAAE,IAAA,EAAM,gBAAA,EAAkB,IAAA,EAAM,kBAAkB,OAAA,EAAQ;AACnE;AAEO,SAAS,UAAA,CAAW,KAAiB,KAAA,EAAsB;AAChE,EAAA,IAAI,iBAAiB,yBAAA,EAA2B;AAC9C,IAAA,GAAA,CAAI,EAAA,CAAG,OAAO,KAAA,CAAM,CAAA,EAAG,KAAK,SAAA,CAAU,KAAA,CAAM,QAAQ,CAAC;AAAA,CAAI,CAAA;AACzD,IAAA,IAAI,GAAA,CAAI,SAAS,OAAA,EAAS;AACxB,MAAA,GAAA,CAAI,GAAG,MAAA,CAAO,KAAA;AAAA,QACZ,CAAA;AAAA,EAAA,EAA6D,KAAA,CAAM,SAAS,cAAc;AAAA;AAAA,OAC5F;AAAA,IACF;AACA,IAAA;AAAA,EACF;AACA,EAAA,MAAM,QAAA,GAAW,gBAAgB,KAAK,CAAA;AACtC,EAAA,IAAI,GAAA,CAAI,SAAS,MAAA,EAAQ;AACvB,IAAA,GAAA,CAAI,EAAA,CAAG,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,UAAU,EAAE,KAAA,EAAO,QAAA,EAAU,CAAC;AAAA,CAAI,CAAA;AAC9D,IAAA;AAAA,EACF;AACA,EAAA,MAAM,KAAA,GAAQ,CAAC,CAAA,UAAA,EAAa,QAAA,CAAS,OAAO,CAAA,CAAE,CAAA;AAC9C,EAAA,IAAI,SAAS,UAAA,EAAY;AACvB,IAAA,KAAA,CAAM,IAAA,CAAK,SAAS,UAAU,CAAA;AAAA,EAChC;AACA,EAAA,IAAI,SAAS,IAAA,EAAM;AACjB,IAAA,KAAA,CAAM,IAAA,CAAK,CAAA,MAAA,EAAS,QAAA,CAAS,IAAI,CAAA,CAAE,CAAA;AAAA,EACrC;AACA,EAAA,IAAI,SAAS,SAAA,EAAW;AACtB,IAAA,KAAA,CAAM,IAAA,CAAK,CAAA,YAAA,EAAe,QAAA,CAAS,SAAS,CAAA,CAAE,CAAA;AAAA,EAChD;AACA,EAAA,GAAA,CAAI,GAAG,MAAA,CAAO,KAAA,CAAM,GAAG,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC;AAAA,CAAI,CAAA;AAC7C;AAEA,SAAS,eAAe,KAAA,EAAoC;AAC1D,EAAA,IAAI,KAAA,YAAiB,YAAA,IAAgB,KAAA,YAAiB,WAAA,EAAa;AACjE,IAAA,OAAO,KAAA,CAAM,MAAA;AAAA,EACf;AACF;AAEA,SAAS,eAAe,KAAA,EAAyB;AAC/C,EAAA,OACE,OAAO,UAAU,QAAA,IACjB,KAAA,KAAU,QACV,MAAA,IAAU,KAAA,IACV,MAAM,IAAA,KAAS,cAAA;AAEnB;;;AChMA,eAAsB,mBAAA,CACpB,MACA,UAAA,EACe;AACf,EAAA,IAAI,CAAC,KAAK,cAAA,EAAgB;AACxB,IAAA;AAAA,EACF;AACA,EAAA,MAAM,OAAA,GAAU,KAAK,cAAA,CAAe;AAAA,IAClC,MAAM,UAAA,CAAW,IAAA;AAAA,IACjB,OAAO,UAAA,CAAW;AAAA,GACnB,CAAA;AACD,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA;AAAA,EACF;AACA,EAAA,MAAM,EAAE,KAAI,GAAI,UAAA;AAChB,EAAA,IAAI,GAAA,CAAI,QAAQ,GAAA,EAAK;AACnB,IAAA;AAAA,EACF;AACA,EAAA,IAAI,GAAA,CAAI,IAAA,KAAS,OAAA,IAAW,GAAA,CAAI,GAAG,OAAA,EAAS;AAC1C,IAAA,MAAM,SAAS,MAAM,GAAA,CAAI,EAAA,CAAG,QAAA,CAAS,GAAG,OAAO;AAAA,eAAA,CAAmB,CAAA;AAClE,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,IAAA,EAAK,CAAE,WAAA,EAAY;AAC7C,IAAA,IAAI,UAAA,KAAe,GAAA,IAAO,UAAA,KAAe,KAAA,EAAO;AAC9C,MAAA;AAAA,IACF;AACA,IAAA,MAAM,IAAI,oBAAoB,UAAU,CAAA;AAAA,EAC1C;AACA,EAAA,MAAM,IAAI,yBAAA,CAA0B;AAAA,IAClC,oBAAA,EAAsB,IAAA;AAAA,IACtB,OAAA,EAAS,CAAC,UAAA,EAAY,GAAG,KAAK,IAAI,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,IAC5C,OAAA;AAAA,IACA,cAAA,EAAgB,mBAAA,CAAoB,GAAA,CAAI,OAAO;AAAA,GAChD,CAAA;AACH;AAEO,SAAS,oBAAoB,OAAA,EAAoC;AAGtE,EAAA,MAAM,SAAmB,EAAC;AAC1B,EAAA,KAAA,IAAS,QAAQ,CAAA,EAAG,KAAA,GAAQ,OAAA,CAAQ,MAAA,EAAQ,SAAS,CAAA,EAAG;AACtD,IAAA,MAAM,KAAA,GAAQ,QAAQ,KAAK,CAAA;AAC3B,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA;AAAA,IACF;AACA,IAAA,IAAI,UAAU,WAAA,EAAa;AACzB,MAAA,KAAA,IAAS,CAAA;AACT,MAAA;AAAA,IACF;AACA,IAAA,IAAI,KAAA,CAAM,UAAA,CAAW,YAAY,CAAA,EAAG;AAClC,MAAA;AAAA,IACF;AACA,IAAA,MAAA,CAAO,IAAA,CAAK,UAAA,CAAW,KAAK,CAAC,CAAA;AAAA,EAC/B;AACA,EAAA,OAAO,CAAC,UAAA,EAAY,GAAG,QAAQ,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AAClD;AAEA,SAAS,WAAW,KAAA,EAAuB;AACzC,EAAA,IAAI,0BAAA,CAA2B,IAAA,CAAK,KAAK,CAAA,EAAG;AAC1C,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,OAAO,IAAI,KAAA,CAAM,UAAA,CAAW,GAAA,EAAK,MAAA,CAAO,SAAS,CAAC,CAAA,CAAA,CAAA;AACpD;;;ACpEO,IAAM,QAAA,GAAW,UAAA;AAEjB,IAAM,WAAA,GAC2B,OAAA,CAAkB;ACK1D,IAAM,WAAA,GAAc,CAAC,QAAA,EAAU,SAAA,EAAW,QAAQ,CAAA;AAI3C,SAAS,YAAY,KAAA,EAAmC;AAC7D,EAAA,OAAQ,WAAA,CAAkC,SAAS,KAAK,CAAA;AAC1D;AAEO,SAAS,UACd,GAAA,EACQ;AACR,EAAA,MAAM,WAAW,GAAA,CAAI,mBAAA;AACrB,EAAA,IAAI,QAAA,KAAa,MAAA,IAAa,QAAA,KAAa,EAAA,EAAI;AAC7C,IAAA,OAAO,QAAA;AAAA,EACT;AACA,EAAA,MAAM,MAAM,GAAA,CAAI,eAAA;AAChB,EAAA,MAAM,IAAA,GACJ,QAAQ,MAAA,IAAa,GAAA,KAAQ,KAAK,GAAA,GAAM,IAAA,CAAK,OAAA,EAAQ,EAAG,SAAS,CAAA;AACnE,EAAA,OAAO,IAAA,CAAK,MAAM,UAAU,CAAA;AAC9B;AAEO,SAAS,WACd,GAAA,EACQ;AACR,EAAA,OAAO,IAAA,CAAK,SAAA,CAAU,GAAG,CAAA,EAAG,aAAa,CAAA;AAC3C;AAEO,SAAS,WACd,GAAA,EACc;AACd,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,YAAA,CAAa,UAAA,CAAW,GAAG,GAAG,MAAM,CAAA;AAChD,IAAA,MAAM,MAAA,GAAkB,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AACtC,IAAA,IAAI,MAAA,KAAW,IAAA,IAAQ,OAAO,MAAA,KAAW,QAAA,EAAU;AACjD,MAAA,OAAO,EAAC;AAAA,IACV;AACA,IAAA,MAAM,MAAA,GAAS,MAAA;AACf,IAAA,MAAM,SAAiC,EAAC;AACxC,IAAA,KAAA,MAAW,OAAO,WAAA,EAAa;AAC7B,MAAA,MAAM,KAAA,GAAQ,OAAO,GAAG,CAAA;AACxB,MAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,EAAA,EAAI;AAC7C,QAAA,MAAA,CAAO,GAAG,CAAA,GAAI,KAAA;AAAA,MAChB;AAAA,IACF;AACA,IAAA,OAAO,MAAA;AAAA,EACT,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,EAAC;AAAA,EACV;AACF;AAGO,SAAS,WAAA,CACd,KACA,MAAA,EACQ;AACR,EAAA,MAAM,GAAA,GAAM,UAAU,GAAG,CAAA;AACzB,EAAA,SAAA,CAAU,KAAK,EAAE,SAAA,EAAW,IAAA,EAAM,IAAA,EAAM,KAAO,CAAA;AAC/C,EAAA,MAAM,IAAA,GAAO,WAAW,GAAG,CAAA;AAC3B,EAAA,MAAM,UAAkC,EAAC;AACzC,EAAA,KAAA,MAAW,OAAO,WAAA,EAAa;AAC7B,IAAA,MAAM,KAAA,GAAQ,OAAO,GAAG,CAAA;AACxB,IAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,EAAA,EAAI;AACvC,MAAA,OAAA,CAAQ,GAAG,CAAA,GAAI,KAAA;AAAA,IACjB;AAAA,EACF;AACA,EAAA,aAAA,CAAc,MAAM,CAAA,EAAG,IAAA,CAAK,UAAU,OAAA,EAAS,IAAA,EAAM,CAAC,CAAC;AAAA,CAAA,EAAM,EAAE,IAAA,EAAM,GAAA,EAAO,CAAA;AAC5E,EAAA,SAAA,CAAU,MAAM,GAAK,CAAA;AACrB,EAAA,OAAO,IAAA;AACT;AAEO,SAAS,YAAA,CACd,KACA,KAAA,EACQ;AACR,EAAA,MAAM,OAAA,GAA8C,EAAE,GAAG,UAAA,CAAW,GAAG,CAAA,EAAE;AACzE,EAAA,KAAA,MAAW,OAAO,WAAA,EAAa;AAC7B,IAAA,IAAI,OAAO,KAAA,EAAO;AAChB,MAAA,OAAA,CAAQ,GAAG,CAAA,GAAI,KAAA,CAAM,GAAG,CAAA;AAAA,IAC1B;AAAA,EACF;AACA,EAAA,OAAO,WAAA,CAAY,KAAK,OAAO,CAAA;AACjC;;;ACnFO,IAAM,eAAA,GAAkB,sBAAA;AAExB,IAAM,cAAA,GAAiB,+BAAA;AAMvB,IAAM,iBAAA,GAAoB,gBAAA;AAOjC,IAAM,uBAAA,GAA0B;AAAA,EAC9B,YAAA;AAAA,EACA,WAAA;AAAA,EACA,eAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA;AAWO,SAAS,YAAY,KAAA,EAIX;AACf,EAAA,MAAM,EAAE,OAAA,EAAS,GAAA,EAAI,GAAI,KAAA;AACzB,EAAA,MAAM,MAAA,GAAS,WAAW,GAAG,CAAA;AAC7B,EAAA,MAAM,cAAc,OAAA,CAAQ,MAAA;AAC5B,EAAA,MAAM,UAAA,GAAa,YAAA,CAAa,GAAA,CAAI,YAAY,CAAA;AAChD,EAAA,MAAM,gBAAgB,MAAA,CAAO,MAAA;AAC7B,EAAA,MAAM,MAAA,GAAS,eAAe,UAAA,IAAc,aAAA;AAC5C,EAAA,MAAM,MAAA,GACJ,QAAQ,MAAA,IACR,YAAA,CAAa,IAAI,YAAY,CAAA,IAC7B,OAAO,MAAA,IACP,eAAA;AACF,EAAA,MAAM,UACJ,OAAA,CAAQ,KAAA,IAAS,aAAa,GAAA,CAAI,aAAa,KAAK,MAAA,CAAO,OAAA;AAC7D,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,IAAI,KAAA,CAAM,mBAAmB,IAAA,EAAM;AACjC,MAAA,OAAO;AAAA,QACL,MAAA,EAAQ,iBAAA;AAAA,QACR,YAAA,EAAc,WAAA;AAAA,QACd,OAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,IAAI,YAAA;AAAA,MACR,mBAAA;AAAA,MACA,+EAA+E,cAAc,CAAA;AAAA,KAC/F;AAAA,EACF;AACA,EAAA,MAAM,YAAA,GAA2B,WAAA,GAC7B,MAAA,GACA,UAAA,GACE,KAAA,GACA,QAAA;AACN,EAAA,OAAO,EAAE,MAAA,EAAQ,YAAA,EAAc,OAAA,EAAS,MAAA,EAAO;AACjD;AAEO,SAAS,eAAe,IAAA,EAAgC;AAC7D,EAAA,OAAO,gBAAA,CAAiB;AAAA,IACtB,QAAQ,IAAA,CAAK,MAAA;AAAA,IACb,SAAS,IAAA,CAAK,MAAA;AAAA,IACd,SAAA,EAAW,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA;AAAA,IACrC,GAAI,KAAK,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA,EAAS,IAAA,CAAK,OAAA;AAAQ,GAC/D,CAAA;AACH;AAEO,SAAS,eAAe,GAAA,EAAsB;AACnD,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI;AACF,IAAA,QAAA,GAAW,IAAI,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA;AAAA,EAC1B,CAAA,CAAA,MAAQ;AACN,IAAA,QAAA,GAAW,GAAA,CAAI,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,IAAK,GAAA;AAAA,EAClC;AACA,EAAA,MAAM,YAAA,GAAe,QAAA,CAAS,OAAA,CAAQ,MAAM,CAAA;AAC5C,EAAA,IAAI,iBAAiB,EAAA,EAAI;AACvB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,OAAA,GAAU,QAAA,CAAS,KAAA,CAAM,YAAY,CAAA;AAC3C,EAAA,OAAO,uBAAA,CAAwB,IAAA;AAAA,IAC7B,CAAC,WAAW,OAAA,KAAY,MAAA,IAAU,QAAQ,UAAA,CAAW,CAAA,EAAG,MAAM,CAAA,CAAA,CAAG;AAAA,GACnE;AACF;AAEO,SAAS,WAAW,MAAA,EAAwB;AACjD,EAAA,IAAI,MAAA,CAAO,UAAU,EAAA,EAAI;AACvB,IAAA,OAAO,CAAA,EAAG,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,MAAA,CAAA;AAAA,EAC9B;AACA,EAAA,OAAO,CAAA,EAAG,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,CAAC,CAAC,CAAA,MAAA,EAAI,MAAA,CAAO,KAAA,CAAM,EAAE,CAAC,CAAA,CAAA;AAClD;AAEA,SAAS,aAAa,KAAA,EAA+C;AACnE,EAAA,OAAO,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,EAAA,GAAK,KAAA,GAAQ,MAAA;AACvD;;;ACnHO,SAAS,kBAAkB,KAAA,EAGnB;AACb,EAAA,IAAI,MAAM,UAAA,EAAY;AACpB,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,OAAO,KAAA,CAAM,WAAW,OAAA,GAAU,MAAA;AACpC;AAOO,SAAS,SAAA,CACd,GAAA,EACA,IAAA,EACA,KAAA,EACM;AACN,EAAA,IAAI,GAAA,CAAI,SAAS,MAAA,EAAQ;AACvB,IAAA,GAAA,CAAI,GAAG,MAAA,CAAO,KAAA,CAAM,GAAG,IAAA,CAAK,SAAA,CAAU,IAAI,CAAC;AAAA,CAAI,CAAA;AAC/C,IAAA;AAAA,EACF;AACA,EAAA,MAAM,OAAO,KAAA,IAAS,IAAA,CAAK,SAAA,CAAU,IAAA,EAAM,MAAM,CAAC,CAAA;AAClD,EAAA,GAAA,CAAI,EAAA,CAAG,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,IAAI;AAAA,CAAI,CAAA;AACjC;AAGO,SAAS,QAAA,CAAS,KAAiB,OAAA,EAAuB;AAC/D,EAAA,IAAI,GAAA,CAAI,QAAQ,KAAA,EAAO;AACrB,IAAA;AAAA,EACF;AACA,EAAA,GAAA,CAAI,EAAA,CAAG,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,OAAO;AAAA,CAAI,CAAA;AACpC;AAEO,SAAS,WAAA,CACd,MACA,OAAA,EACQ;AACR,EAAA,MAAM,SAAS,OAAA,CAAQ,GAAA;AAAA,IAAI,CAAC,WAC1B,IAAA,CAAK,GAAA;AAAA,MACH,OAAO,MAAA,CAAO,MAAA;AAAA,MACd,GAAG,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,KAAQ,UAAA,CAAW,GAAA,CAAI,MAAA,CAAO,GAAG,CAAC,CAAA,CAAE,MAAM;AAAA;AACzD,GACF;AACA,EAAA,MAAM,OAAO,CAAC,KAAA,KACZ,MACG,GAAA,CAAI,CAAC,MAAM,KAAA,KAAU,IAAA,CAAK,OAAO,MAAA,CAAO,KAAK,KAAK,CAAC,CAAC,EACpD,IAAA,CAAK,IAAI,EACT,OAAA,EAAQ;AACb,EAAA,MAAM,MAAA,GAAS,KAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW,MAAA,CAAO,MAAM,CAAC,CAAA;AAC1D,EAAA,MAAM,OAAO,IAAA,CAAK,GAAA;AAAA,IAAI,CAAC,GAAA,KACrB,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW,UAAA,CAAW,GAAA,CAAI,MAAA,CAAO,GAAG,CAAC,CAAC,CAAC;AAAA,GAC3D;AACA,EAAA,OAAO,CAAC,MAAA,EAAQ,GAAG,IAAI,CAAA,CAAE,KAAK,IAAI,CAAA;AACpC;AAEA,SAAS,WAAW,KAAA,EAAwB;AAC1C,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW;AACzC,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA,OAAO,IAAA,CAAK,UAAU,KAAK,CAAA;AAAA,EAC7B;AACA,EAAA,OAAO,OAAO,KAAK,CAAA;AACrB;;;AC/DO,SAAS,YAAY,KAAA,EAIb;AACb,EAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,KAAA,CAAM,KAAK,CAAA;AAC3C,EAAA,MAAM,OAAO,iBAAA,CAAkB;AAAA,IAC7B,YAAY,OAAA,CAAQ,IAAA;AAAA,IACpB,QAAA,EAAU,MAAM,EAAA,CAAG;AAAA,GACpB,CAAA;AACD,EAAA,MAAM,KAAA,uBAAY,GAAA,EAAwB;AAC1C,EAAA,OAAO;AAAA,IACL,IAAI,KAAA,CAAM,EAAA;AAAA,IACV,IAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAS,KAAA,CAAM,OAAA;AAAA,IACf,MAAA,EAAQ,CAAC,OAAA,KAA4B;AACnC,MAAA,MAAM,GAAA,GAAM,OAAA,EAAS,cAAA,KAAmB,IAAA,GAAO,WAAA,GAAc,QAAA;AAC7D,MAAA,MAAM,QAAA,GAAW,KAAA,CAAM,GAAA,CAAI,GAAG,CAAA;AAC9B,MAAA,IAAI,QAAA,EAAU;AACZ,QAAA,OAAO,QAAA;AAAA,MACT;AACA,MAAA,MAAM,OAAO,WAAA,CAAY;AAAA,QACvB,OAAA;AAAA,QACA,GAAA,EAAK,MAAM,EAAA,CAAG,GAAA;AAAA,QACd,cAAA,EAAgB,SAAS,cAAA,KAAmB;AAAA,OAC7C,CAAA;AACD,MAAA,MAAM,MAAA,GAAS,eAAe,IAAI,CAAA;AAClC,MAAA,KAAA,CAAM,GAAA,CAAI,KAAK,MAAM,CAAA;AACrB,MAAA,OAAO,MAAA;AAAA,IACT;AAAA,GACF;AACF;AAMO,SAAS,mBAAA,CACd,IACA,OAAA,EACY;AACZ,EAAA,MAAM,KAAA,GAAiC;AAAA,IACrC,IAAA,EAAM,OAAA,CAAQ,QAAA,CAAS,QAAQ,CAAA;AAAA,IAC/B,KAAA,EAAO,OAAA,CAAQ,QAAA,CAAS,SAAS;AAAA,GACnC;AACA,EAAA,OAAO,WAAA,CAAY,EAAE,EAAA,EAAI,KAAA,EAAO,SAAS,CAAA;AAC3C;AAEA,SAAS,gBACP,KAAA,EACa;AACb,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,MAAM,IAAA,KAAS,IAAA;AAAA,IACrB,KAAA,EAAO,MAAM,KAAA,KAAU,IAAA;AAAA,IACvB,GAAA,EAAK,MAAM,GAAA,KAAQ,IAAA;AAAA,IACnB,MAAA,EAAQ,cAAA,CAAe,KAAA,CAAM,MAAM,CAAA;AAAA,IACnC,KAAA,EAAO,cAAA,CAAe,KAAA,CAAM,KAAK,CAAA;AAAA,IACjC,MAAA,EAAQ,cAAA,CAAe,KAAA,CAAM,MAAM;AAAA,GACrC;AACF;AAEA,SAAS,eAAe,KAAA,EAAoC;AAC1D,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,KAAK,KAAA,GAAQ,MAAA;AAC7D;;;ACkBO,SAAS,cAAc,IAAA,EAAgC;AAC5D,EAAA,OAAO,IAAA;AACT;AAEO,IAAM,YAAA,GAAoC;AAAA,EAC/C;AAAA,IACE,IAAA,EAAM,QAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA,EACA,EAAE,IAAA,EAAM,SAAA,EAAW,OAAA,EAAS,sCAAA,EAAuC;AAAA,EACnE;AAAA,IACE,IAAA,EAAM,OAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA,EACA;AAAA,IACE,IAAA,EAAM,iBAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA,EACA;AAAA,IACE,IAAA,EAAM,mBAAA;AAAA,IACN,OAAA,EAAS;AAAA,GACX;AAAA,EACA;AAAA,IACE,IAAA,EAAM,iBAAA;AAAA,IACN,OAAA,EAAS;AAAA;AAEb,CAAA;ACvGO,SAAS,WAAc,KAAA,EAAmB;AAC/C,EAAA,OAAO,KAAA;AACT;AAGA,eAAsB,YAAA,CACpB,GAAA,EACA,KAAA,EACA,QAAA,EACkB;AAClB,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA;AAAA,EACF;AACA,EAAA,MAAM,MAAM,KAAA,KAAU,GAAA,GAAM,MAAM,GAAA,CAAI,EAAA,CAAG,WAAU,GAAI,KAAA;AACvD,EAAA,IAAI;AACF,IAAA,OAAO,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,EACvB,CAAA,CAAA,MAAQ;AACN,IAAA,MAAM,IAAI,aAAA;AAAA,MACR,GAAG,QAAQ,CAAA,wCAAA;AAAA,KACb;AAAA,EACF;AACF;AAGA,eAAsB,YAAA,CACpB,GAAA,EACA,KAAA,EACA,QAAA,EAC6B;AAC7B,EAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,IAAA;AAAA,EACF;AACA,EAAA,IAAI,UAAU,GAAA,EAAK;AACjB,IAAA,OAAO,MAAM,GAAA,CAAI,EAAA,CAAG,SAAA,EAAU;AAAA,EAChC;AACA,EAAA,IAAI;AACF,IAAA,OAAOA,YAAAA,CAAa,OAAO,MAAM,CAAA;AAAA,EACnC,CAAA,CAAA,MAAQ;AACN,IAAA,MAAM,IAAI,aAAA,CAAc,CAAA,EAAG,QAAQ,CAAA,oBAAA,EAAuB,KAAK,CAAA,CAAA,CAAG,CAAA;AAAA,EACpE;AACF;AAGO,SAAS,cAAA,CACd,OACA,QAAA,EACoC;AACpC,EAAA,MAAM,KAAA,GAAQ,cAAc,KAAK,CAAA;AACjC,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA;AAAA,EACF;AACA,EAAA,MAAM,SAAiC,EAAC;AACxC,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAClC,IAAA,IAAI,aAAa,CAAA,EAAG;AAClB,MAAA,MAAM,IAAI,aAAA;AAAA,QACR,CAAA,EAAG,QAAQ,CAAA,gCAAA,EAAmC,IAAI,CAAA,CAAA;AAAA,OACpD;AAAA,IACF;AACA,IAAA,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,EAAG,SAAS,CAAC,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,SAAA,GAAY,CAAC,CAAA;AAAA,EAC7D;AACA,EAAA,OAAO,MAAA;AACT;AAMO,SAAS,iBACd,KAAA,EACmD;AACnD,EAAA,MAAM,KAAA,GAAQ,cAAc,KAAK,CAAA;AACjC,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA;AAAA,EACF;AACA,EAAA,OAAO,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACzB,IAAA,MAAM,CAAC,OAAO,QAAA,EAAU,GAAG,IAAI,CAAA,GAAI,IAAA,CAAK,MAAM,GAAG,CAAA;AACjD,IAAA,IAAI,CAAC,KAAA,IAAS,CAAC,QAAA,EAAU;AACvB,MAAA,MAAM,IAAI,aAAA;AAAA,QACR,wDAAwD,IAAI,CAAA,CAAA;AAAA,OAC9D;AAAA,IACF;AACA,IAAA,OAAO;AAAA,MACL,KAAA;AAAA,MACA,QAAA;AAAA,MACA,GAAI,IAAA,CAAK,MAAA,KAAW,CAAA,GAAI,EAAC,GAAI,EAAE,KAAA,EAAO,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA;AAAE,KACvD;AAAA,EACF,CAAC,CAAA;AACH;AAGO,SAAS,UAAA,CACd,MACA,SAAA,EACyB;AACzB,EAAA,IAAI,SAAS,MAAA,KAAc,IAAA,KAAS,IAAA,IAAQ,OAAO,SAAS,QAAA,CAAA,EAAW;AACrE,IAAA,MAAM,IAAI,cAAc,+BAA+B,CAAA;AAAA,EACzD;AACA,EAAA,MAAM,MAAA,GAAkC;AAAA,IACtC,GAAK,QAAgD;AAAC,GACxD;AACA,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,SAAS,CAAA,EAAG;AACpD,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,KAAA;AAAA,IAChB;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,WAAW,KAAA,EAAoC;AAC7D,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,KAAK,KAAA,GAAQ,MAAA;AAC7D;AAEO,SAAS,OAAA,CAAQ,OAAgB,QAAA,EAAsC;AAC5E,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA;AAAA,EACF;AACA,EAAA,MAAM,MAAA,GAAS,OAAO,KAAK,CAAA;AAC3B,EAAA,IAAI,CAAC,MAAA,CAAO,SAAA,CAAU,MAAM,CAAA,IAAK,UAAU,CAAA,EAAG;AAC5C,IAAA,MAAM,IAAI,aAAA,CAAc,CAAA,EAAG,QAAQ,CAAA,2BAAA,CAA6B,CAAA;AAAA,EAClE;AACA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,cAAc,KAAA,EAA+C;AAC3E,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,MAAM,QAAQ,KAAA,CAAM,MAAA;AAAA,MAClB,CAAC,IAAA,KAAyB,OAAO,IAAA,KAAS;AAAA,KAC5C;AACA,IAAA,OAAO,KAAA,CAAM,MAAA,GAAS,CAAA,GAAI,KAAA,GAAQ,MAAA;AAAA,EACpC;AACA,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,CAAC,KAAK,CAAA,GAAI,MAAA;AAC/C;AAGO,SAAS,eACd,KAAA,EACwC;AACxC,EAAA,MAAM,GAAA,GAAM,UAAA,CAAW,KAAA,CAAM,cAAc,CAAA;AAC3C,EAAA,OAAO,GAAA,KAAQ,MAAA,GAAY,MAAA,GAAY,EAAE,gBAAgB,GAAA,EAAI;AAC/D;AAEO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,IAAA,EAAM,yBAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAA;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,IAAA,EAAM,gBAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAA;;;ACjJA,eAAsB,UAAA,CACpB,KACA,SAAA,EAC2B;AAC3B,EAAA,MAAM,OAAY,EAAC;AACnB,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI,SAAA,GAAY,CAAA;AAChB,EAAA,WAAS;AACP,IAAA,MAAM,IAAA,GAAO,MAAM,SAAA,CAAU,MAAM,CAAA;AACnC,IAAA,IAAA,CAAK,IAAA,CAAK,GAAG,IAAA,CAAK,IAAI,CAAA;AACtB,IAAA,SAAA,IAAa,CAAA;AACb,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,UAAA,EAAY,MAAA,IAAU,IAAA;AACxC,IAAA,IAAI,IAAA,KAAS,IAAA,IAAQ,IAAA,KAAS,MAAA,EAAQ;AACpC,MAAA,OAAO,IAAA;AAAA,IACT;AACA,IAAA,MAAA,GAAS,IAAA;AACT,IAAA,QAAA,CAAS,KAAK,CAAA,QAAA,EAAW,IAAA,CAAK,MAAM,CAAA,YAAA,EAAe,SAAS,CAAA,OAAA,CAAI,CAAA;AAAA,EAClE;AACF;AAGO,IAAM,QAAA,GAAW;AAAA,EACtB,IAAA,EAAM,OAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAA;AAEO,IAAM,UAAA,GAAa;AAAA,EACxB,IAAA,EAAM,aAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAA;AAEO,IAAM,WAAA,GAAc;AAAA,EACzB,IAAA,EAAM,mBAAA;AAAA,EACN,OAAA,EAAS;AACX,CAAA;;;ACpCO,IAAM,8BAA8B,aAAA,CAAc;AAAA,EACvD,IAAA,EAAM,CAAC,WAAA,EAAa,aAAa,CAAA;AAAA,EACjC,OAAA,EAAS,8CAAA;AAAA,EACT,SAAA,EAAW,uBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,2BAAA,EAA4B;AAAA,EAC1D,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,oBAAA,EAAsB,OAAA,EAAS,yBAAA,EAA0B;AAAA,IACjE,EAAE,IAAA,EAAM,oBAAA,EAAsB,OAAA,EAAS,uBAAA,EAAwB;AAAA,IAC/D;AAAA,MACE,IAAA,EAAM,6BAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,gCAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,IAAA,EAAM,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC5B,EAAA,EAAI,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC1B,YAAA,EAAc,UAAA,CAAW,KAAA,CAAM,UAAU,CAAA;AAAA,MACzC,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS;AAAA,KACtC,CAAA;AACD,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,GACA,SAAA,CAAU,WAAA,CAAY,UAAA,CAAqC,KAAK,CAAC,CAAA;AACpE,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,oBAAA,CAAqB,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,EAClE;AACF,CAAC,CAAA;AAED,SAAS,qBAAqB,IAAA,EAAsC;AAClE,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,+BAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAY,IAAA,EAAgD;AAAA,IACjE,EAAE,GAAA,EAAK,cAAA,EAAgB,MAAA,EAAQ,YAAA,EAAa;AAAA,IAC5C,EAAE,GAAA,EAAK,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAO;AAAA,IAC9B,EAAE,GAAA,EAAK,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAO;AAAA,IAC9B,EAAE,GAAA,EAAK,WAAA,EAAa,MAAA,EAAQ,WAAA,EAAY;AAAA,IACxC,EAAE,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAS;AAAA,IAClC,EAAE,GAAA,EAAK,UAAA,EAAY,MAAA,EAAQ,WAAA;AAAY,GACxC,CAAA;AACH;;;AC1CO,IAAM,4BAA4B,aAAA,CAAc;AAAA,EACrD,IAAA,EAAM,CAAC,WAAA,EAAa,WAAW,CAAA;AAAA,EAC/B,OAAA,EAAS,6DAAA;AAAA,EACT,SAAA,EAAW,qBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,yBAAA,EAA0B;AAAA,EACxD,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO,CAAC,UAAA,EAAY,WAAA,EAAa,UAAU,UAAU,CAAA;AAAA,EACrD,QAAA,EAAU;AAAA,IACR,8BAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM;AAAA,KAChC,CAAA;AACD,IAAA,MAAM,SAAA,GAAY,GAAA,CAAI,MAAA,EAAO,CAAE,SAAA;AAC/B,IAAA,IAAI,KAAA,CAAM,QAAQ,IAAA,EAAM;AACtB,MAAA,MAAM,OAAO,MAAM,UAAA;AAAA,QAAW,GAAA;AAAA,QAAK,CAAC,WAClC,SAAA,CAAU,SAAA;AAAA,UACR,UAAA,CAAmC;AAAA,YACjC,GAAG,KAAA;AAAA,YACH,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA;AAAO,WAC1C;AAAA;AACH,OACF;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM,EAAE;AAAA,QACjE,KAAA,EAAO,gBAAgB,IAAI;AAAA,OAC7B;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,SAAA,CAAU,SAAA;AAAA,MAC7B,WAAmC,KAAK;AAAA,KAC1C;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,eAAA,CAAgB,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,EAC7D;AACF,CAAC,CAAA;AAED,SAAS,gBAAgB,IAAA,EAAsC;AAC7D,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,6BAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAY,IAAA,EAAgD;AAAA,IACjE,EAAE,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAO;AAAA,IAChC,EAAE,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,OAAA,EAAQ;AAAA,IAChC,EAAE,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAS;AAAA,IAClC,EAAE,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,SAAA;AAAU,GACpC,CAAA;AACH;;;ACjDO,IAAM,yBAAyB,aAAA,CAAc;AAAA,EAClD,IAAA,EAAM,CAAC,WAAA,EAAa,QAAQ,CAAA;AAAA,EAC5B,OAAA,EAAS,8DAAA;AAAA,EACT,SAAA,EAAW,kBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,sBAAA,EAAuB;AAAA,EACrD,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,oBAAA,EAAsB,OAAA,EAAS,yBAAA,EAA0B;AAAA,IACjE,EAAE,IAAA,EAAM,oBAAA,EAAsB,OAAA,EAAS,uBAAA,EAAwB;AAAA,IAC/D,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAA,EAAS,2BAAA,EAA4B;AAAA,IACpE;AAAA,MACE,IAAA,EAAM,qBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,6BAAA,EAA+B,OAAA,EAAS,sBAAA,EAAuB;AAAA,IACvE,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,yBAAA,EAA0B;AAAA,IAC9D,UAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,mEAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,IAAA,EAAM,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC5B,EAAA,EAAI,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC1B,cAAA,EAAgB,UAAA,CAAW,KAAA,CAAM,SAAS,CAAA;AAAA,MAC1C,SAAA,EAAW,UAAA,CAAW,KAAA,CAAM,SAAS,CAAA;AAAA,MACrC,YAAA,EAAc,UAAA,CAAW,KAAA,CAAM,UAAU,CAAA;AAAA,MACzC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA;AAAA,MAC7B,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM;AAAA,KAChC,CAAA;AACD,IAAA,MAAM,SAAA,GAAY,GAAA,CAAI,MAAA,EAAO,CAAE,SAAA;AAC/B,IAAA,IAAI,KAAA,CAAM,QAAQ,IAAA,EAAM;AACtB,MAAA,MAAM,OAAO,MAAM,UAAA;AAAA,QAAW,GAAA;AAAA,QAAK,CAAC,WAClC,SAAA,CAAU,MAAA;AAAA,UACR,UAAA,CAAiC;AAAA,YAC/B,GAAG,KAAA;AAAA,YACH,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA;AAAO,WAC1C;AAAA;AACH,OACF;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM,EAAE;AAAA,QACjE,KAAA,EAAO,aAAa,IAAI;AAAA,OAC1B;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,SAAA,CAAU,MAAA;AAAA,MAC7B,WAAiC,KAAK;AAAA,KACxC;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,YAAA,CAAa,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,EAC1D;AACF,CAAC,CAAA;AAED,SAAS,aAAa,IAAA,EAAsC;AAC1D,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,oBAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAY,IAAA,EAAgD;AAAA,IACjE,EAAE,GAAA,EAAK,YAAA,EAAc,MAAA,EAAQ,UAAA,EAAW;AAAA,IACxC,EAAE,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAS;AAAA,IAClC,EAAE,GAAA,EAAK,WAAA,EAAa,MAAA,EAAQ,OAAA,EAAQ;AAAA,IACpC,EAAE,GAAA,EAAK,gBAAA,EAAkB,MAAA,EAAQ,WAAA;AAAY,GAC9C,CAAA;AACH;;;ACnFO,IAAM,2BAA2B,aAAA,CAAc;AAAA,EACpD,IAAA,EAAM,CAAC,WAAA,EAAa,UAAU,CAAA;AAAA,EAC9B,OAAA,EAAS,iEAAA;AAAA,EACT,SAAA,EAAW,oBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,wBAAA,EAAyB;AAAA,EACvD,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,oBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,oBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,oBAAA;AAAA,MACN,OAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,IAAA,EAAM,uBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,sBAAA,EAAwB,OAAA,EAAS,2BAAA,EAA4B;AAAA,IACrE,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAA,EAAS,8BAAA,EAA+B;AAAA,IACvE;AAAA,MACE,IAAA,EAAM,0BAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,mBAAA,EAAqB,OAAA,EAAS,kCAAA,EAAmC;AAAA,IACzE;AAAA,MACE,IAAA,EAAM,qBAAA;AAAA,MACN,OAAA,EACE;AAAA;AACJ,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,6BAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,MAAO;AAAA,IAC9B,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,GAAS,SAAA,CAAU,QAAA;AAAA,MACjC,UAAA,CAAmC;AAAA,QACjC,IAAA,EAAM,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,QAC5B,EAAA,EAAI,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,QAC1B,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AAAA,QAC/B,YAAA,EAAc,UAAA,CAAW,KAAA,CAAM,YAAY,CAAA;AAAA,QAC3C,OAAA,EAAS,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AAAA,QACjC,UAAA,EAAY,UAAA,CAAW,KAAA,CAAM,UAAU,CAAA;AAAA,QACvC,cAAA,EAAgB,UAAA,CAAW,KAAA,CAAM,cAAc,CAAA;AAAA,QAC/C,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AAAA,QAC/B,SAAA,EAAW,UAAA,CAAW,KAAA,CAAM,SAAS;AAAA,OACtC;AAAA;AACH,GACF;AACF,CAAC,CAAA;;;ACvDM,IAAM,2BAA2B,aAAA,CAAc;AAAA,EACpD,IAAA,EAAM,CAAC,WAAA,EAAa,OAAA,EAAS,KAAK,CAAA;AAAA,EAClC,OAAA,EAAS,sBAAA;AAAA,EACT,SAAA,EAAW,IAAA;AAAA,EACX,WAAA,EAAa,sBAAA;AAAA,EACb,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,qBAAA,EAAsB;AAAA,EACpD,YAAA,EAAc,MAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,QAAA;AAAA,MACN,OAAA,EAAS,gBAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,oBAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,sCAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,MAAA,GAAS,KAAK,MAAA,IAAU,EAAA;AAC9B,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AACxC,IAAA,MAAM,SAAS,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,UAAU,KAAA,CAAM,IAAA;AAAA,MAChD,UAAA,CAA2B;AAAA,QACzB,MAAA;AAAA,QACA,GAAI,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA;AAAQ,OAC5C;AAAA,KACH;AACA,IAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA;AAC1B,IAAA,IAAI,SAAS,MAAA,EAAW;AACtB,MAAA,MAAM,IAAI,WAAA,CAAY;AAAA,QACpB,MAAA,EAAQ,GAAA;AAAA,QACR,IAAA,EAAM,gBAAA;AAAA,QACN,IAAA,EAAM,WAAA;AAAA,QACN,OAAA,EAAS,qBAAqB,MAAM,CAAA,CAAA;AAAA,QACpC,UAAA,EAAY;AAAA,OACb,CAAA;AAAA,IACH;AACA,IAAA,OAAO,EAAE,MAAM,IAAA,EAAK;AAAA,EACtB;AACF,CAAC,CAAA;;;AChCM,IAAM,4BAA4B,aAAA,CAAc;AAAA,EACrD,IAAA,EAAM,CAAC,WAAA,EAAa,OAAA,EAAS,MAAM,CAAA;AAAA,EACnC,OAAA,EAAS,oDAAA;AAAA,EACT,SAAA,EAAW,sBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,qBAAA,EAAsB;AAAA,EACpD,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,kCAAA,EAAmC;AAAA,IACvE,EAAE,IAAA,EAAM,mBAAA,EAAqB,OAAA,EAAS,wBAAA,EAAyB;AAAA,IAC/D;AAAA,MACE,IAAA,EAAM,oBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,mBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,oBAAA,EAAsB,OAAA,EAAS,yBAAA,EAA0B;AAAA,IACjE,EAAE,IAAA,EAAM,oBAAA,EAAsB,OAAA,EAAS,uBAAA,EAAwB;AAAA,IAC/D,UAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,6CAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA;AAAA,MAC7B,OAAA,EAAS,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC/B,OAAA,EAAS,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AAAA,MACjC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AAAA,MAC/B,IAAA,EAAM,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC5B,EAAA,EAAI,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC1B,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM;AAAA,KAChC,CAAA;AACD,IAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,MAAA,EAAO,CAAE,SAAA,CAAU,KAAA;AACrC,IAAA,IAAI,KAAA,CAAM,QAAQ,IAAA,EAAM;AACtB,MAAA,MAAM,OAAO,MAAM,UAAA;AAAA,QAAW,GAAA;AAAA,QAAK,CAAC,WAClC,KAAA,CAAM,IAAA;AAAA,UACJ,UAAA,CAA2B;AAAA,YACzB,GAAG,KAAA;AAAA,YACH,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA;AAAO,WAC1C;AAAA;AACH,OACF;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM,EAAE;AAAA,QACjE,KAAA,EAAO,YAAY,IAAI;AAAA,OACzB;AAAA,IACF;AACA,IAAA,MAAM,SAAS,MAAM,KAAA,CAAM,IAAA,CAAK,UAAA,CAA2B,KAAK,CAAC,CAAA;AACjE,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,WAAA,CAAY,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,EACzD;AACF,CAAC,CAAA;AAED,SAAS,YAAY,IAAA,EAAsC;AACzD,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,iBAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAY,IAAA,EAAgD;AAAA,IACjE,EAAE,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,MAAA,EAAO;AAAA,IAChC,EAAE,GAAA,EAAK,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAO;AAAA,IAC9B,EAAE,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAS;AAAA,IAClC,EAAE,GAAA,EAAK,SAAA,EAAW,MAAA,EAAQ,SAAA;AAAU,GACrC,CAAA;AACH;;;ACtEO,IAAM,uCAAuC,aAAA,CAAc;AAAA,EAChE,IAAA,EAAM,CAAC,WAAA,EAAa,mBAAA,EAAqB,MAAM,CAAA;AAAA,EAC/C,OAAA,EAAS,uDAAA;AAAA,EACT,SAAA,EAAW,iCAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,iCAAA,EAAkC;AAAA,EAChE,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,4BAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,wCAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,6DAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,cAAA,EAAgB,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AAAA,MACxC,iBAAA,EAAmB,UAAA,CAAW,KAAA,CAAM,eAAe,CAAA;AAAA,MACnD,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM;AAAA,KAChC,CAAA;AACD,IAAA,MAAM,gBAAA,GAAmB,GAAA,CAAI,MAAA,EAAO,CAAE,SAAA,CAAU,gBAAA;AAChD,IAAA,IAAI,KAAA,CAAM,QAAQ,IAAA,EAAM;AACtB,MAAA,MAAM,OAAO,MAAM,UAAA;AAAA,QAAW,GAAA;AAAA,QAAK,CAAC,WAClC,gBAAA,CAAiB,IAAA;AAAA,UACf,UAAA,CAAsC;AAAA,YACpC,GAAG,KAAA;AAAA,YACH,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA;AAAO,WAC1C;AAAA;AACH,OACF;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM,EAAE;AAAA,QACjE,KAAA,EAAO,gBAAgB,IAAI;AAAA,OAC7B;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,gBAAA,CAAiB,IAAA;AAAA,MACpC,WAAsC,KAAK;AAAA,KAC7C;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,eAAA,CAAgB,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,EAC7D;AACF,CAAC,CAAA;AAED,SAAS,gBAAgB,IAAA,EAAsC;AAC7D,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,6BAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAY,IAAA,EAAgD;AAAA,IACjE,EAAE,GAAA,EAAK,mBAAA,EAAqB,MAAA,EAAQ,UAAA,EAAW;AAAA,IAC/C,EAAE,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAS;AAAA,IAClC,EAAE,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,OAAA,EAAQ;AAAA,IAChC,EAAE,GAAA,EAAK,YAAA,EAAc,MAAA,EAAQ,UAAA;AAAW,GACzC,CAAA;AACH;;;AClEA,eAAsB,UAAA,CACpB,KACA,OAAA,EASoB;AACpB,EAAA,MAAM,OAAO,WAAA,CAAY;AAAA,IACvB,SAAS,GAAA,CAAI,OAAA;AAAA,IACb,GAAA,EAAK,IAAI,EAAA,CAAG,GAAA;AAAA,IACZ,GAAI,QAAQ,cAAA,KAAmB,IAAA,GAAO,EAAE,cAAA,EAAgB,IAAA,KAAS;AAAC,GACnE,CAAA;AACD,EAAA,MAAM,OAAA,GAAU,QAAQ,IAAA,KAAS,MAAA;AACjC,EAAA,MAAM,cAAA,GAAiB,wBAAA;AAAA,IACrB,OAAA,CAAQ,MAAA;AAAA,IACR,OAAA,CAAQ;AAAA,GACV;AACA,EAAA,MAAM,UAAU,eAAA,CAAgB;AAAA,IAC9B,IAAA;AAAA,IACA,MAAM,OAAA,CAAQ,IAAA;AAAA,IACd,WAAA,EAAa,OAAA;AAAA,IACb;AAAA,GACD,CAAA;AACD,EAAA,MAAM,GAAA,GAAM,IAAI,GAAA,CAAI,CAAA,EAAG,KAAK,MAAM,CAAA,EAAG,OAAA,CAAQ,IAAI,CAAA,CAAE,CAAA;AACnD,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,CAAA,IAAK,MAAA,CAAO,QAAQ,OAAA,CAAQ,KAAA,IAAS,EAAE,CAAA,EAAG;AAC9D,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,GAAA,CAAI,YAAA,CAAa,GAAA,CAAI,GAAA,EAAK,KAAK,CAAA;AAAA,IACjC;AAAA,EACF;AACA,EAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,EAAK;AAAA,IAChC,QAAQ,OAAA,CAAQ,MAAA;AAAA,IAChB,OAAA;AAAA,IACA,GAAI,OAAA,GAAU,EAAE,IAAA,EAAM,IAAA,CAAK,UAAU,OAAA,CAAQ,IAAI,CAAA,EAAE,GAAI,EAAC;AAAA,IACxD,GAAI,QAAQ,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA,EAAQ,OAAA,CAAQ,MAAA;AAAO,GAClE,CAAA;AACD,EAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,EAAA,MAAM,MAAA,GAAS,aAAa,IAAI,CAAA;AAChC,EAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,IAAA,MAAM,kBAAA,CAAmB,UAAU,MAAM,CAAA;AAAA,EAC3C;AACA,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,MAAM,IAAI,WAAA,CAAY;AAAA,MACpB,QAAQ,QAAA,CAAS,MAAA;AAAA,MACjB,IAAA,EAAM,qBAAA;AAAA,MACN,IAAA,EAAM,gBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACV,CAAA;AAAA,EACH;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,wBAAA,CACP,QACA,QAAA,EACoB;AACpB,EAAA,IAAI,QAAA,KAAa,MAAA,IAAa,QAAA,KAAa,EAAA,EAAI;AAC7C,IAAA,OAAO,QAAA;AAAA,EACT;AACA,EAAA,OAAO,MAAA,KAAW,MAAA,GAAS,MAAA,CAAO,UAAA,EAAW,GAAI,MAAA;AACnD;AAEO,SAAS,gBAAgB,KAAA,EAKpB;AACV,EAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ;AAAA,IAC1B,aAAA,EAAe,CAAA,OAAA,EAAU,KAAA,CAAM,IAAA,CAAK,MAAM,CAAA,CAAA;AAAA,IAC1C,YAAA,EAAc,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA;AAAA,IACxC,MAAA,EAAQ;AAAA,GACT,CAAA;AACD,EAAA,IAAI,MAAM,WAAA,EAAa;AACrB,IAAA,OAAA,CAAQ,GAAA,CAAI,gBAAgB,kBAAkB,CAAA;AAAA,EAChD;AACA,EAAA,IAAI,KAAA,CAAM,KAAK,OAAA,KAAY,MAAA,IAAa,CAAC,cAAA,CAAe,KAAA,CAAM,IAAI,CAAA,EAAG;AACnE,IAAA,OAAA,CAAQ,GAAA,CAAI,YAAA,EAAc,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA;AAAA,EAC9C;AACA,EAAA,IAAI,KAAA,CAAM,cAAA,KAAmB,MAAA,IAAa,KAAA,CAAM,mBAAmB,EAAA,EAAI;AACrE,IAAA,OAAA,CAAQ,GAAA,CAAI,iBAAA,EAAmB,KAAA,CAAM,cAAc,CAAA;AAAA,EACrD;AACA,EAAA,OAAO,OAAA;AACT;AAEO,SAAS,kBAAA,CACd,UACA,MAAA,EACa;AACb,EAAA,MAAM,SAAA,GAAY,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,IAAK,MAAA;AAI1D,EAAA,MAAM,SACJ,MAAA,KAAW,IAAA,IAAQ,OAAO,MAAA,KAAW,WAChC,MAAA,GACD,MAAA;AACN,EAAA,MAAM,QAAA,GACJ,MAAA,KAAW,MAAA,IACX,MAAA,CAAO,KAAA,KAAU,IAAA,IACjB,OAAO,MAAA,CAAO,KAAA,KAAU,QAAA,GACnB,MAAA,CAAO,KAAA,GACR,MAAA;AACN,EAAA,MAAM,SAAA,GAAY,CAAC,GAAA,KAAoC;AACrD,IAAA,MAAM,KAAA,GAAQ,WAAW,GAAG,CAAA;AAC5B,IAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,MAAA;AAAA,EAC7C,CAAA;AACA,EAAA,MAAM,KAAA,GAAQ,UAAU,OAAO,CAAA;AAC/B,EAAA,MAAM,UAAA,GAAa,UAAU,YAAY,CAAA;AACzC,EAAA,MAAM,IAAA,GAAO,UAAU,MAAM,CAAA;AAC7B,EAAA,OAAO,IAAI,WAAA,CAAY;AAAA,IACrB,QAAQ,QAAA,CAAS,MAAA;AAAA,IACjB,IAAA,EAAM,SAAA,CAAU,MAAM,CAAA,IAAK,YAAA;AAAA,IAC3B,IAAA,EAAM,SAAA,CAAU,MAAM,CAAA,IAAK,gBAAA;AAAA,IAC3B,SACE,SAAA,CAAU,SAAS,CAAA,IAAK,CAAA,2BAAA,EAA8B,SAAS,MAAM,CAAA,CAAA;AAAA,IACvE,GAAI,KAAA,KAAU,MAAA,GAAY,EAAC,GAAI,EAAE,KAAA,EAAM;AAAA,IACvC,GAAI,UAAA,KAAe,MAAA,GAAY,EAAC,GAAI,EAAE,UAAA,EAAW;AAAA,IACjD,GAAI,IAAA,KAAS,MAAA,GAAY,EAAC,GAAI,EAAE,IAAA,EAAK;AAAA,IACrC,GAAI,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAA;AAAU,GAChD,CAAA;AACH;AAEO,SAAS,aAAa,IAAA,EAAuB;AAClD,EAAA,IAAI;AACF,IAAA,OAAO,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,EACxB,CAAA,CAAA,MAAQ;AAAA,EAAC;AACX;;;AC1IA,IAAM,OAAA,GAAU,CAAC,KAAA,EAAO,MAAA,EAAQ,SAAS,QAAQ,CAAA;AAKjD,IAAM,eAAA,GAAkB,CAAC,YAAA,EAAc,UAAA,EAAY,cAAc,CAAA;AAE1D,IAAM,aAAa,aAAA,CAAc;AAAA,EACtC,IAAA,EAAM,CAAC,KAAK,CAAA;AAAA,EACZ,OAAA,EAAS,uDAAA;AAAA,EACT,SAAA,EAAW,IAAA;AAAA,EACX,YAAA,EAAc,aAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,QAAA;AAAA,MACN,OAAA,EAAS,6BAAA;AAAA,MACT,UAAA,EAAY;AAAA,KACd;AAAA,IACA;AAAA,MACE,IAAA,EAAM,MAAA;AAAA,MACN,OAAA,EAAS,oCAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAA,EAAS,uCAAA,EAAwC;AAAA,IAC1E;AAAA,MACE,IAAA,EAAM,uBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,yBAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,6BAAA;AAAA,IACA,CAAA,gEAAA,CAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,cAAA,EAAgB,CAAC,EAAE,IAAA,EAAK,KAAM;AAC5B,IAAA,MAAM,MAAA,GAAA,CAAU,IAAA,CAAK,MAAA,IAAU,EAAA,EAAI,WAAA,EAAY;AAC/C,IAAA,IAAI,WAAW,KAAA,EAAO;AACpB,MAAA;AAAA,IACF;AACA,IAAA,OAAO,CAAA,WAAA,EAAc,MAAM,CAAA,YAAA,EAAe,IAAA,CAAK,QAAQ,EAAE,CAAA,0CAAA,CAAA;AAAA,EAC3D,CAAA;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,MAAA,GAAS,WAAA,CAAY,IAAA,CAAK,MAAM,CAAA;AACtC,IAAA,MAAM,IAAA,GAAO,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA;AAChC,IAAA,MAAM,WAAW,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,IAAK,IAAA;AACvC,IAAA,MAAM,OAAO,WAAA,CAAY;AAAA,MACvB,SAAS,GAAA,CAAI,OAAA;AAAA,MACb,GAAA,EAAK,IAAI,EAAA,CAAG,GAAA;AAAA,MACZ,cAAA,EAAiB,eAAA,CAAsC,QAAA,CAAS,QAAQ;AAAA,KACzE,CAAA;AACD,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,GAAA,EAAK,MAAM,IAAI,CAAA;AAC3C,IAAA,IAAI,MAAA,KAAW,KAAA,IAAS,IAAA,KAAS,MAAA,EAAW;AAC1C,MAAA,MAAM,IAAI,cAAc,mCAAmC,CAAA;AAAA,IAC7D;AACA,IAAA,MAAM,UAAU,eAAA,CAAgB;AAAA,MAC9B,IAAA;AAAA,MACA,IAAA;AAAA,MACA,aAAa,IAAA,KAAS,MAAA;AAAA,MACtB,gBACE,OAAO,KAAA,CAAM,cAAA,KAAmB,QAAA,GAC5B,MAAM,cAAA,GACN;AAAA,KACP,CAAA;AACD,IAAA,KAAA,MAAW,MAAA,IAAU,eAAA,CAAgB,KAAA,CAAM,MAAM,CAAA,EAAG;AAClD,MAAA,MAAM,SAAA,GAAY,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AACpC,MAAA,IAAI,cAAc,EAAA,EAAI;AACpB,QAAA,MAAM,IAAI,aAAA;AAAA,UACR,8CAA8C,MAAM,CAAA;AAAA,SACtD;AAAA,MACF;AACA,MAAA,OAAA,CAAQ,GAAA;AAAA,QACN,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,SAAS,EAAE,IAAA,EAAK;AAAA,QAChC,MAAA,CAAO,KAAA,CAAM,SAAA,GAAY,CAAC,EAAE,IAAA;AAAK,OACnC;AAAA,IACF;AACA,IAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,CAAA,EAAG,KAAK,MAAM,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI;AAAA,MACpD,MAAA;AAAA,MACA,OAAA;AAAA,MACA,GAAI,IAAA,KAAS,MAAA,GAAY,EAAC,GAAI,EAAE,IAAA;AAAK,KACtC,CAAA;AACD,IAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,IAAA,MAAM,MAAA,GAAS,aAAa,IAAI,CAAA;AAChC,IAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AAChB,MAAA,MAAM,kBAAA,CAAmB,UAAU,MAAM,CAAA;AAAA,IAC3C;AACA,IAAA,IAAI,WAAW,MAAA,EAAW;AACxB,MAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,IACxB;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,KAAA,EAAO,IAAA,EAAK;AAAA,EACnC;AACF,CAAC,CAAA;AAED,SAAS,YAAY,KAAA,EAAsC;AACzD,EAAA,MAAM,MAAA,GAAA,CAAU,KAAA,IAAS,EAAA,EAAI,WAAA,EAAY;AACzC,EAAA,IAAK,OAAA,CAA8B,QAAA,CAAS,MAAM,CAAA,EAAG;AACnD,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,IAAI,aAAA;AAAA,IACR,uBAAuB,KAAA,IAAS,EAAE,uBAAuB,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,GAC7E;AACF;AAEA,SAAS,UAAU,KAAA,EAAmC;AACpD,EAAA,IAAI,UAAU,MAAA,IAAa,CAAC,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,EAAG;AACjD,IAAA,MAAM,IAAI,cAAc,2CAA2C,CAAA;AAAA,EACrE;AACA,EAAA,OAAO,KAAA;AACT;AAEA,eAAe,QAAA,CACb,KACA,IAAA,EAC6B;AAC7B,EAAA,IAAI,OAAO,SAAS,QAAA,EAAU;AAC5B,IAAA;AAAA,EACF;AACA,EAAA,MAAM,MAAM,IAAA,KAAS,GAAA,GAAM,MAAM,GAAA,CAAI,EAAA,CAAG,WAAU,GAAI,IAAA;AACtD,EAAA,IAAI;AACF,IAAA,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,EAChB,CAAA,CAAA,MAAQ;AACN,IAAA,MAAM,IAAI,cAAc,gDAAgD,CAAA;AAAA,EAC1E;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,gBAAgB,KAAA,EAAmC;AAC1D,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,OAAO,MAAM,MAAA,CAAO,CAAC,IAAA,KAAyB,OAAO,SAAS,QAAQ,CAAA;AAAA,EACxE;AACA,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,CAAC,KAAK,IAAI,EAAC;AAChD;;;ACpIO,IAAM,uBAAuB,aAAA,CAAc;AAAA,EAChD,IAAA,EAAM,CAAC,UAAA,EAAY,QAAQ,CAAA;AAAA,EAC3B,OAAA,EACE,2FAAA;AAAA,EACF,SAAA,EAAW,gBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,cAAA,EAAe;AAAA,EAC9C,YAAA,EAAc,OAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAA,EAAS,mBAAA,EAAoB;AAAA,IACtD;AAAA,MACE,IAAA,EAAM,2BAAA;AAAA,MACN,OAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,IAAA,EAAM,sBAAA;AAAA,MACN,OAAA,EACE;AAAA,KACJ;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,iEAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,IAAA,EAAM,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA;AAAA,MAC3B,WAAA,EAAa,aAAA,CAAc,KAAA,CAAM,WAAW,CAAA;AAAA,MAC5C,OAAA,EAAS,UAAA,CAAW,KAAA,CAAM,OAAO;AAAA,KAClC,CAAA;AAID,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,MAAM,GAAA,CACT,MAAA,GACA,OAAA,CAAQ,MAAA;AAAA,QACP,WAA8B,KAAK,CAAA;AAAA,QACnC,eAAe,KAAK;AAAA;AACtB,KACJ;AAAA,EACF;AACF,CAAC,CAAA;;;ACxDM,IAAM,uBAAuB,aAAA,CAAc;AAAA,EAChD,IAAA,EAAM,CAAC,UAAA,EAAY,QAAQ,CAAA;AAAA,EAC3B,OAAA,EAAS,mBAAA;AAAA,EACT,SAAA,EAAW,gBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,MAAM,sBAAA,EAAuB;AAAA,EACxD,YAAA,EAAc,aAAA;AAAA,EACd,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,SAAS,OAAA,EAAS,sBAAA,EAAwB,UAAA,EAAY,IAAA,EAAM,CAAA;AAAA,EAC3E,QAAA,EAAU,CAAC,iEAAiE,CAAA;AAAA,EAC5E,cAAA,EAAgB,CAAC,EAAE,IAAA,OACjB,CAAA,eAAA,EAAkB,IAAA,CAAK,SAAS,EAAE,CAAA,4EAAA,CAAA;AAAA,EACpC,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,MAAO;AAAA,IAC7B,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,OAAA,CAAQ,MAAA,CAAO,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,IAAS,EAAA,EAAI;AAAA,GACrE;AACF,CAAC,CAAA;;;ACZM,IAAM,qBAAqB,aAAA,CAAc;AAAA,EAC9C,IAAA,EAAM,CAAC,UAAA,EAAY,MAAM,CAAA;AAAA,EACzB,OAAA,EACE,qFAAA;AAAA,EACF,SAAA,EAAW,cAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,cAAA,EAAe;AAAA,EAC7C,YAAA,EAAc,MAAA;AAAA,EACd,QAAA,EAAU,CAAC,wBAAA,EAA0B,+BAA+B,CAAA;AAAA,EACpE,GAAA,EAAK,OAAO,EAAE,GAAA,EAAI,KAAM;AACtB,IAAA,MAAM,SAAS,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,QAAQ,IAAA,EAAK;AAC/C,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,aAAA,CAAc,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,EAC3D;AACF,CAAC,CAAA;AAED,SAAS,cAAc,IAAA,EAAsC;AAC3D,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,oBAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAY,IAAA,EAAgD;AAAA,IACjE,EAAE,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,QAAA,EAAS;AAAA,IACjC,EAAE,GAAA,EAAK,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAO;AAAA,IAC9B,EAAE,GAAA,EAAK,YAAA,EAAc,MAAA,EAAQ,aAAA,EAAc;AAAA,IAC3C,EAAE,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAS;AAAA,IAClC,EAAE,GAAA,EAAK,SAAA,EAAW,MAAA,EAAQ,UAAA;AAAW,GACtC,CAAA;AACH;;;ACfO,IAAM,yBAAyB,aAAA,CAAc;AAAA,EAClD,IAAA,EAAM,CAAC,WAAA,EAAa,QAAQ,CAAA;AAAA,EAC5B,OAAA,EAAS,qDAAA;AAAA,EACT,SAAA,EAAW,kBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,eAAA,EAAgB;AAAA,EAC/C,YAAA,EAAc,OAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAA,EAAS,eAAA,EAAgB;AAAA,IAClD,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,CAAA,mJAAA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM,EAAE,MAAM,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA,EAAG,CAAA;AAC/D,IAAA,IAAI,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,IAAY,KAAA,CAAM,SAAS,EAAA,EAAI;AACvD,MAAA,MAAM,IAAI,cAAc,iDAAiD,CAAA;AAAA,IAC3E;AACA,IAAA,IAAI,KAAA,CAAM,YAAY,MAAA,EAAW;AAC/B,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,GACA,SAAA,CAAU,MAAA;AAAA,MACT,WAAgC,KAAK,CAAA;AAAA,MACrC,eAAe,KAAK;AAAA,KACtB;AACF,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;AC5CM,IAAM,yBAAyB,aAAA,CAAc;AAAA,EAClD,IAAA,EAAM,CAAC,WAAA,EAAa,QAAQ,CAAA;AAAA,EAC5B,OAAA,EAAS,gDAAA;AAAA,EACT,SAAA,EAAW,kBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,MAAM,4BAAA,EAA6B;AAAA,EAC9D,YAAA,EAAc,aAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ,EAAE,IAAA,EAAM,YAAA,EAAc,OAAA,EAAS,uBAAA,EAAyB,YAAY,IAAA;AAAK,GAC3E;AAAA,EACA,QAAA,EAAU,CAAC,2CAA2C,CAAA;AAAA,EACtD,cAAA,EAAgB,CAAC,EAAE,IAAA,OACjB,CAAA,gBAAA,EAAmB,IAAA,CAAK,cAAc,EAAE,CAAA,2EAAA,CAAA;AAAA,EAC1C,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,MAAO;AAAA,IAC7B,IAAA,EAAM,MAAM,GAAA,CACT,MAAA,EAAO,CACP,SAAA,CAAU,MAAA,CAAO,EAAE,UAAA,EAAY,IAAA,CAAK,UAAA,IAAc,EAAA,EAAI;AAAA,GAC3D;AACF,CAAC,CAAA;;;ACfM,IAAM,4BAA4B,aAAA,CAAc;AAAA,EACrD,IAAA,EAAM,CAAC,WAAA,EAAa,WAAW,CAAA;AAAA,EAC/B,OAAA,EAAS,0DAAA;AAAA,EACT,SAAA,EAAW,qBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,sCAAA,EAAuC;AAAA,EACtE,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,YAAA;AAAA,MACN,OAAA,EAAS,0BAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA;AAAA,EAEA,KAAA,EAAO,CAAC,gBAAgB,CAAA;AAAA,EACxB,QAAA,EAAU,CAAC,wCAAwC,CAAA;AAAA,EACnD,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,MAAO;AAAA,IACpC,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,GAAS,SAAA,CAAU,SAAA;AAAA,MACjC,UAAA,CAAmC;AAAA,QACjC,UAAA,EAAY,KAAK,UAAA,IAAc;AAAA,OAChC,CAAA;AAAA,MACD,eAAe,KAAK;AAAA;AACtB,GACF;AACF,CAAC,CAAA;;;ACdM,IAAM,6BAA6B,aAAA,CAAc;AAAA,EACtD,IAAA,EAAM,CAAC,WAAA,EAAa,aAAa,CAAA;AAAA,EACjC,OAAA,EACE,uEAAA;AAAA,EACF,SAAA,EAAW,sBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,2BAAA,EAA4B;AAAA,EAC3D,YAAA,EAAc,OAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAA,EAAS,eAAA,EAAgB;AAAA,IAClD;AAAA,MACE,IAAA,EAAM,0BAAA;AAAA,MACN,OAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,IAAA,EAAM,oBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,oBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,oBAAA,EAAsB,OAAA,EAAS,4BAAA,EAA6B;AAAA,IACpE,EAAE,IAAA,EAAM,sBAAA,EAAwB,OAAA,EAAS,2BAAA,EAA4B;AAAA,IACrE,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,uIAAA;AAAA,IACA,CAAA,yIAAA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM,EAAE,MAAM,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA,EAAG,CAAA;AAE/D,IAAA,MAAM,MAAA,GAAS,UAAA,CAAW,KAAA,CAAM,MAAA,EAAQ;AAAA,MACtC,UAAA,EAAY,aAAA,CAAc,KAAA,CAAM,UAAU,CAAA;AAAA,MAC1C,IAAA,EAAM,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC5B,EAAA,EAAI,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC1B,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AAAA,MAC/B,OAAA,EAAS,UAAA,CAAW,KAAA,CAAM,OAAO;AAAA,KAClC,CAAA;AACD,IAAA,IAAI,CAAC,MAAM,OAAA,CAAQ,MAAA,CAAO,UAAU,CAAA,IAAK,MAAA,CAAO,UAAA,CAAW,MAAA,KAAW,CAAA,EAAG;AACvE,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,IAAI,OAAO,MAAA,CAAO,IAAA,KAAS,QAAA,IAAY,MAAA,CAAO,SAAS,EAAA,EAAI;AACzD,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,MAAM,GAAA,CACT,MAAA,GACA,SAAA,CAAU,UAAA;AAAA,QACT,UAAA,CAAoC,EAAE,GAAG,KAAA,EAAO,QAAQ,CAAA;AAAA,QACxD,eAAe,KAAK;AAAA;AACtB,KACJ;AAAA,EACF;AACF,CAAC,CAAA;;;ACvEM,IAAM,sBAAsB,aAAA,CAAc;AAAA,EAC/C,IAAA,EAAM,CAAC,WAAA,EAAa,KAAK,CAAA;AAAA,EACzB,OAAA,EAAS,kCAAA;AAAA,EACT,SAAA,EAAW,IAAA;AAAA,EACX,WAAA,EAAa,gBAAA;AAAA,EACb,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,eAAA,EAAgB;AAAA,EAC9C,YAAA,EAAc,MAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ,EAAE,IAAA,EAAM,YAAA,EAAc,OAAA,EAAS,sBAAA,EAAwB,YAAY,IAAA;AAAK,GAC1E;AAAA,EACA,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,oBAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,QAAA,EAAU,CAAC,kCAAkC,CAAA;AAAA,EAC7C,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,UAAA,GAAa,KAAK,UAAA,IAAc,EAAA;AACtC,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AACxC,IAAA,MAAM,SAAS,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,UAAU,IAAA,CAAK;AAAA,MAC/C,UAAA;AAAA,MACA,GAAI,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA;AAAQ,KAC5C,CAAA;AACD,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA;AAC9B,IAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,MAAA,MAAM,IAAI,WAAA,CAAY;AAAA,QACpB,MAAA,EAAQ,GAAA;AAAA,QACR,IAAA,EAAM,oBAAA;AAAA,QACN,IAAA,EAAM,WAAA;AAAA,QACN,OAAA,EAAS,yBAAyB,UAAU,CAAA,CAAA;AAAA,QAC5C,UAAA,EAAY;AAAA,OACb,CAAA;AAAA,IACH;AACA,IAAA,OAAO,EAAE,MAAM,QAAA,EAAS;AAAA,EAC1B;AACF,CAAC,CAAA;;;ACtBM,IAAM,uBAAuB,aAAA,CAAc;AAAA,EAChD,IAAA,EAAM,CAAC,WAAA,EAAa,MAAM,CAAA;AAAA,EAC1B,OAAA,EAAS,wBAAA;AAAA,EACT,SAAA,EAAW,gBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,eAAA,EAAgB;AAAA,EAC9C,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,oBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,yBAAA;AAAA,IACA,oDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,OAAA,EAAS,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AAAA,MACjC,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM;AAAA,KAChC,CAAA;AACD,IAAA,MAAM,SAAA,GAAY,GAAA,CAAI,MAAA,EAAO,CAAE,SAAA;AAC/B,IAAA,IAAI,KAAA,CAAM,QAAQ,IAAA,EAAM;AACtB,MAAA,MAAM,OAAO,MAAM,UAAA;AAAA,QAAW,GAAA;AAAA,QAAK,CAAC,WAClC,SAAA,CAAU,IAAA;AAAA,UACR,UAAA,CAA+B;AAAA,YAC7B,GAAG,KAAA;AAAA,YACH,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA;AAAO,WAC1C;AAAA;AACH,OACF;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM,EAAE;AAAA,QACjE,KAAA,EAAO,gBAAgB,IAAI;AAAA,OAC7B;AAAA,IACF;AACA,IAAA,MAAM,SAAS,MAAM,SAAA,CAAU,IAAA,CAAK,UAAA,CAA+B,KAAK,CAAC,CAAA;AACzE,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,eAAA,CAAgB,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,EAC7D;AACF,CAAC,CAAA;AAED,SAAS,gBAAgB,IAAA,EAAsC;AAC7D,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,qBAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAY,IAAA,EAAgD;AAAA,IACjE,EAAE,GAAA,EAAK,YAAA,EAAc,MAAA,EAAQ,aAAA,EAAc;AAAA,IAC3C,EAAE,GAAA,EAAK,cAAA,EAAgB,MAAA,EAAQ,MAAA,EAAO;AAAA,IACtC,EAAE,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,UAAA,EAAW;AAAA,IACnC,EAAE,GAAA,EAAK,WAAA,EAAa,MAAA,EAAQ,SAAA;AAAU,GACvC,CAAA;AACH;;;ACjEO,IAAM,yBAAyB,aAAA,CAAc;AAAA,EAClD,IAAA,EAAM,CAAC,WAAA,EAAa,QAAQ,CAAA;AAAA,EAC5B,OAAA,EAAS,kDAAA;AAAA,EACT,SAAA,EAAW,kBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAM,4BAAA,EAA6B;AAAA,EAC7D,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ,EAAE,IAAA,EAAM,YAAA,EAAc,OAAA,EAAS,uBAAA,EAAyB,YAAY,IAAA;AAAK,GAC3E;AAAA,EACA,KAAA,EAAO,CAAC,EAAE,IAAA,EAAM,iBAAiB,OAAA,EAAS,mBAAA,IAAuB,UAAU,CAAA;AAAA,EAC3E,QAAA,EAAU;AAAA,IACR,4DAAA;AAAA,IACA,CAAA,kJAAA;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM,EAAE,MAAM,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA,EAAG,CAAA;AAC/D,IAAA,IAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,WAAW,CAAA,EAAG;AACnC,MAAA,MAAM,IAAI,cAAc,kDAA6C,CAAA;AAAA,IACvE;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAAI,MAAA,GAAS,SAAA,CAAU,MAAA;AAAA,MAC1C,UAAA,CAAgC;AAAA,QAC9B,GAAG,KAAA;AAAA,QACH,UAAA,EAAY,KAAK,UAAA,IAAc;AAAA,OAChC;AAAA,KACH;AACA,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;AClCM,IAAM,wCAAwC,aAAA,CAAc;AAAA,EACjE,IAAA,EAAM,CAAC,aAAA,EAAe,eAAA,EAAiB,SAAS,CAAA;AAAA,EAChD,OAAA,EAAS,2DAAA;AAAA,EACT,SAAA,EAAW,kCAAA;AAAA,EACX,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ,MAAA;AAAA,IACR,IAAA,EAAM;AAAA,GACR;AAAA,EACA,YAAA,EAAc,aAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,eAAA;AAAA,MACN,OAAA,EAAS,4BAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,mBAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,qEAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA,EAEA,cAAA,EAAgB,CAAC,EAAE,IAAA,EAAM,OAAM,KAC7B,UAAA,CAAW,KAAA,CAAM,MAAM,MAAM,QAAA,GACzB,CAAA,oBAAA,EAAuB,IAAA,CAAK,aAAA,IAAiB,EAAE,CAAA,sFAAA,CAAA,GAC/C,MAAA;AAAA,EACN,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,MAAA,GAAS,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AACtC,IAAA,IAAI,WAAW,MAAA,EAAW;AACxB,MAAA,MAAM,IAAI,cAAc,iDAAiD,CAAA;AAAA,IAC3E;AACA,IAAA,OAAO;AAAA,MACL,MAAM,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,YAAY,YAAA,CAAa,OAAA;AAAA,QAChD,UAAA,CAAoC;AAAA,UAClC,aAAA,EAAe,KAAK,aAAA,IAAiB,EAAA;AAAA,UACrC;AAAA,SACD;AAAA;AACH,KACF;AAAA,EACF;AACF,CAAC,CAAA;;;AC9CM,IAAM,qCAAqC,aAAA,CAAc;AAAA,EAC9D,IAAA,EAAM,CAAC,aAAA,EAAe,eAAA,EAAiB,MAAM,CAAA;AAAA,EAC7C,OAAA,EAAS,0CAAA;AAAA,EACT,SAAA,EAAW,+BAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,+BAAA,EAAgC;AAAA,EAC9D,YAAA,EAAc,MAAA;AAAA;AAAA;AAAA,EAGd,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,wBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,sBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,aAAA,EAAe,OAAA,EAAS,8BAAA;AAA+B,GACjE;AAAA,EACA,QAAA,EAAU;AAAA,IACR,yCAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAC5C,IAAA,OAAO;AAAA,MACL,MAAM,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,YAAY,YAAA,CAAa,IAAA;AAAA,QAChD,UAAA,CAAkC;AAAA,UAChC,aAAA,EAAe,UAAA,CAAW,KAAA,CAAM,aAAa,CAAA;AAAA,UAC7C,YAAA,EAAc,UAAA,CAAW,KAAA,CAAM,YAAY,CAAA;AAAA,UAC3C;AAAA,SACD;AAAA;AACH,KACF;AAAA,EACF;AACF,CAAC,CAAA;;;AC1BM,IAAM,2BAA2B,aAAA,CAAc;AAAA,EACpD,IAAA,EAAM,CAAC,aAAA,EAAe,QAAQ,CAAA;AAAA,EAC9B,OAAA,EAAS,6DAAA;AAAA,EACT,SAAA,EAAW,oBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,iBAAA,EAAkB;AAAA,EACjD,YAAA,EAAc,OAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAA,EAAS,iBAAA,EAAkB;AAAA,IACpD,EAAE,IAAA,EAAM,sBAAA,EAAwB,OAAA,EAAS,wBAAA,EAAyB;AAAA,IAClE;AAAA,MACE,IAAA,EAAM,4BAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,+DAAA;AAAA,IACA,CAAA,kHAAA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,IAAI,SAAS,MAAA,EAAW;AACtB,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,IAAA,EAAM,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA;AAAA,MAC3B,WAAA,EAAa,UAAA,CAAW,KAAA,CAAM,WAAW,CAAA;AAAA,MACzC,cAAA,EAAgB,UAAA,CAAW,KAAA,CAAM,OAAO;AAAA,KACzC,CAAA;AACD,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,GACA,WAAA,CAAY,MAAA;AAAA,MACX,WAAkC,KAAK,CAAA;AAAA,MACvC,eAAe,KAAK;AAAA,KACtB;AACF,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;ACnDM,IAAM,2BAA2B,aAAA,CAAc;AAAA,EACpD,IAAA,EAAM,CAAC,aAAA,EAAe,QAAQ,CAAA;AAAA,EAC9B,OAAA,EAAS,wDAAA;AAAA,EACT,SAAA,EAAW,oBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,MAAM,gCAAA,EAAiC;AAAA,EAClE,YAAA,EAAc,aAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,cAAA;AAAA,MACN,OAAA,EAAS,gCAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,QAAA,EAAU,CAAC,0CAA0C,CAAA;AAAA,EACrD,cAAA,EAAgB,CAAC,EAAE,IAAA,OACjB,CAAA,kBAAA,EAAqB,IAAA,CAAK,gBAAgB,EAAE,CAAA,iEAAA,CAAA;AAAA,EAC9C,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,MAAO;AAAA,IAC7B,IAAA,EAAM,MAAM,GAAA,CACT,MAAA,EAAO,CACP,WAAA,CAAY,MAAA,CAAO,EAAE,YAAA,EAAc,IAAA,CAAK,YAAA,IAAgB,EAAA,EAAI;AAAA,GACjE;AACF,CAAC,CAAA;;;ACnBM,IAAM,wBAAwB,aAAA,CAAc;AAAA,EACjD,IAAA,EAAM,CAAC,aAAA,EAAe,KAAK,CAAA;AAAA,EAC3B,OAAA,EAAS,4BAAA;AAAA,EACT,SAAA,EAAW,IAAA;AAAA,EACX,WAAA,EAAa,kBAAA;AAAA,EACb,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,iBAAA,EAAkB;AAAA,EAChD,YAAA,EAAc,MAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,cAAA;AAAA,MACN,OAAA,EAAS,sBAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,oBAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,iCAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,YAAA,GAAe,KAAK,YAAA,IAAgB,EAAA;AAC1C,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AACxC,IAAA,MAAM,SAAS,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,YAAY,IAAA,CAAK;AAAA,MACjD,YAAA;AAAA,MACA,GAAI,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA;AAAQ,KAC5C,CAAA;AACD,IAAA,MAAM,UAAA,GAAa,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA;AAChC,IAAA,IAAI,eAAe,MAAA,EAAW;AAC5B,MAAA,MAAM,IAAI,WAAA,CAAY;AAAA,QACpB,MAAA,EAAQ,GAAA;AAAA,QACR,IAAA,EAAM,sBAAA;AAAA,QACN,IAAA,EAAM,WAAA;AAAA,QACN,OAAA,EAAS,2BAA2B,YAAY,CAAA,CAAA;AAAA,QAChD,UAAA,EAAY;AAAA,OACb,CAAA;AAAA,IACH;AACA,IAAA,OAAO,EAAE,MAAM,UAAA,EAAW;AAAA,EAC5B;AACF,CAAC,CAAA;;;AC7BM,IAAM,yBAAyB,aAAA,CAAc;AAAA,EAClD,IAAA,EAAM,CAAC,aAAA,EAAe,MAAM,CAAA;AAAA,EAC5B,OAAA,EAAS,+DAAA;AAAA,EACT,SAAA,EAAW,kBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,iBAAA,EAAkB;AAAA,EAChD,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO,CAAC,UAAA,EAAY,WAAA,EAAa,UAAU,UAAU,CAAA;AAAA,EACrD,QAAA,EAAU;AAAA,IACR,2BAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM;AAAA,KAChC,CAAA;AACD,IAAA,MAAM,WAAA,GAAc,GAAA,CAAI,MAAA,EAAO,CAAE,WAAA;AACjC,IAAA,IAAI,KAAA,CAAM,QAAQ,IAAA,EAAM;AACtB,MAAA,MAAM,OAAO,MAAM,UAAA;AAAA,QAAW,GAAA;AAAA,QAAK,CAAC,WAClC,WAAA,CAAY,IAAA;AAAA,UACV,UAAA,CAAiC;AAAA,YAC/B,GAAG,KAAA;AAAA,YACH,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA;AAAO,WAC1C;AAAA;AACH,OACF;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM,EAAE;AAAA,QACjE,KAAA,EAAO,kBAAkB,IAAI;AAAA,OAC/B;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,WAAA,CAAY,IAAA;AAAA,MAC/B,WAAiC,KAAK;AAAA,KACxC;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,iBAAA,CAAkB,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,EAC/D;AACF,CAAC,CAAA;AAED,SAAS,kBAAkB,IAAA,EAAsC;AAC/D,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,uBAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAY,IAAA,EAAgD;AAAA,IACjE,EAAE,GAAA,EAAK,cAAA,EAAgB,MAAA,EAAQ,YAAA,EAAa;AAAA,IAC5C,EAAE,GAAA,EAAK,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAO;AAAA,IAC9B,EAAE,GAAA,EAAK,WAAA,EAAa,MAAA,EAAQ,WAAA,EAAY;AAAA,IACxC,EAAE,GAAA,EAAK,SAAA,EAAW,MAAA,EAAQ,SAAA,EAAU;AAAA,IACpC,EAAE,GAAA,EAAK,gBAAA,EAAkB,MAAA,EAAQ,SAAA;AAAU,GAC5C,CAAA;AACH;;;ACjEO,IAAM,4BAA4B,aAAA,CAAc;AAAA,EACrD,IAAA,EAAM,CAAC,aAAA,EAAe,SAAS,CAAA;AAAA,EAC/B,OAAA,EACE,2EAAA;AAAA,EACF,SAAA,EAAW,qBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAM,gCAAA,EAAiC;AAAA,EACjE,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,cAAA;AAAA,MACN,OAAA,EAAS,iCAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,4CAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,qCAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,mBAAA,GAAsB,UAAA,CAAW,KAAA,CAAM,iBAAiB,CAAA;AAC9D,IAAA,MAAM,SAAS,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,YAAY,OAAA,CAAQ;AAAA,MACpD,YAAA,EAAc,KAAK,YAAA,IAAgB,EAAA;AAAA,MACnC,GAAI,mBAAA,KAAwB,MAAA,GAAY,EAAC,GAAI,EAAE,mBAAA;AAAoB,KACpE,CAAA;AACD,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;ACvBM,IAAM,wBAAwB,aAAA,CAAc;AAAA,EACjD,IAAA,EAAM,CAAC,aAAA,EAAe,KAAK,CAAA;AAAA,EAC3B,OAAA,EAAS,kEAAA;AAAA,EACT,SAAA,EAAW,iBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,oCAAA,EAAqC;AAAA,EACpE,YAAA,EAAc,aAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,cAAA;AAAA,MACN,OAAA,EAAS,sCAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,WAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,qBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,6CAAA;AAAA,IACA,yCAAA;AAAA,IACA,CAAA,yNAAA;AAAA,GACF;AAAA,EACA,cAAA,EAAgB,CAAC,EAAE,IAAA,EAAM,OAAM,KAAM;AAGnC,IAAA,MAAM,MAAA,GAAS,gBAAA,CAAiB,KAAA,CAAM,KAAK,CAAA;AAC3C,IAAA,IAAI,KAAA,CAAM,MAAA,KAAW,IAAA,IAAQ,MAAA,EAAQ,YAAY,IAAA,EAAM;AACrD,MAAA;AAAA,IACF;AACA,IAAA,MAAM,aACJ,UAAA,CAAW,KAAA,CAAM,UAAU,CAAA,IAAK,QAAA,CAAS,QAAQ,WAAW,CAAA;AAC9D,IAAA,MAAM,MAAA,GAAS,UAAA,KAAe,MAAA,GAAY,KAAA,GAAQ,MAAM,UAAU,CAAA,CAAA;AAClE,IAAA,OAAO,CAAA,eAAA,EAAkB,IAAA,CAAK,YAAA,IAAgB,EAAE,oCAAoC,MAAM,CAAA,+DAAA,CAAA;AAAA,EAC5F,CAAA;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA;AAAA,MAE7B,OAAA,EAAS,KAAA,CAAM,MAAA,KAAW,IAAA,GAAO,IAAA,GAAO,MAAA;AAAA,MACxC,WAAA,EAAa,UAAA,CAAW,KAAA,CAAM,UAAU;AAAA,KACzC,CAAA;AACD,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,GAAS,WAAA,CAAY,GAAA;AAAA,QACnC,UAAA,CAA+B;AAAA,UAC7B,GAAG,KAAA;AAAA,UACH,YAAA,EAAc,KAAK,YAAA,IAAgB;AAAA,SACpC,CAAA;AAAA,QACD,eAAe,KAAK;AAAA;AACtB,KACF;AAAA,EACF;AACF,CAAC,CAAA;AAGD,SAAS,iBAAiB,KAAA,EAAqD;AAC7E,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,GAAA,EAAK;AAC9C,IAAA;AAAA,EACF;AACA,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAkB,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AACxC,IAAA,OAAO,MAAA,KAAW,IAAA,IAAQ,OAAO,MAAA,KAAW,WACvC,MAAA,GACD,KAAA,CAAA;AAAA,EACN,CAAA,CAAA,MAAQ;AAAA,EAAC;AACX;AAEA,SAAS,SAAS,KAAA,EAAoC;AACpD,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,KAAK,KAAA,GAAQ,MAAA;AAC7D;;;ACtEO,IAAM,6BAA6B,aAAA,CAAc;AAAA,EACtD,IAAA,EAAM,CAAC,aAAA,EAAe,MAAA,EAAQ,MAAM,CAAA;AAAA,EACpC,OAAA,EAAS,4CAAA;AAAA,EACT,SAAA,EAAW,uBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,sBAAA,EAAuB;AAAA,EACrD,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,yBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,oBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,6BAAA,EAA+B,OAAA,EAAS,sBAAA,EAAuB;AAAA,IACvE;AAAA,MACE,IAAA,EAAM,4BAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,wCAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAA,EAAS,2BAAA,EAA4B;AAAA,IACpE;AAAA,MACE,IAAA,EAAM,mBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAA,EAAS,aAAA,EAAc;AAAA,IAChD,EAAE,IAAA,EAAM,oBAAA,EAAsB,OAAA,EAAS,kCAAA,EAAmC;AAAA,IAC1E;AAAA,MACE,IAAA,EAAM,oBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,oEAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,eAAA,EAAiB,UAAA,CAAW,KAAA,CAAM,GAAG,CAAA;AAAA,MACrC,OAAA,EAAS,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AAAA,MACjC,YAAA,EAAc,UAAA,CAAW,KAAA,CAAM,UAAU,CAAA;AAAA,MACzC,cAAA,EAAgB,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AAAA,MACxC,iBAAA,EAAmB,UAAA,CAAW,KAAA,CAAM,eAAe,CAAA;AAAA,MACnD,cAAA,EAAgB,UAAA,CAAW,KAAA,CAAM,SAAS,CAAA;AAAA,MAC1C,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AAAA,MAC/B,IAAA,EAAM,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA;AAAA,MAC3B,IAAA,EAAM,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC5B,EAAA,EAAI,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC1B,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM;AAAA,KAChC,CAAA;AACD,IAAA,MAAM,IAAA,GAAO,GAAA,CAAI,MAAA,EAAO,CAAE,WAAA,CAAY,IAAA;AACtC,IAAA,IAAI,KAAA,CAAM,QAAQ,IAAA,EAAM;AACtB,MAAA,MAAM,OAAO,MAAM,UAAA;AAAA,QAAW,GAAA;AAAA,QAAK,CAAC,WAClC,IAAA,CAAK,IAAA;AAAA,UACH,UAAA,CAAoC;AAAA,YAClC,GAAG,KAAA;AAAA,YACH,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA;AAAO,WAC1C;AAAA;AACH,OACF;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM,EAAE;AAAA,QACjE,KAAA,EAAO,WAAW,IAAI;AAAA,OACxB;AAAA,IACF;AACA,IAAA,MAAM,SAAS,MAAM,IAAA,CAAK,IAAA,CAAK,UAAA,CAAoC,KAAK,CAAC,CAAA;AACzE,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,UAAA,CAAW,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,EACxD;AACF,CAAC,CAAA;AAED,SAAS,WAAW,IAAA,EAAsC;AACxD,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,2BAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAY,IAAA,EAAgD;AAAA,IACjE,EAAE,GAAA,EAAK,iBAAA,EAAmB,MAAA,EAAQ,KAAA,EAAM;AAAA,IACxC,EAAE,GAAA,EAAK,cAAA,EAAgB,MAAA,EAAQ,YAAA,EAAa;AAAA,IAC5C,EAAE,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAS;AAAA,IAClC,EAAE,GAAA,EAAK,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAO;AAAA,IAC9B,EAAE,GAAA,EAAK,gBAAA,EAAkB,MAAA,EAAQ,WAAA;AAAY,GAC9C,CAAA;AACH;;;ACvGO,IAAM,yBAAyB,aAAA,CAAc;AAAA,EAClD,IAAA,EAAM,CAAC,aAAA,EAAe,MAAM,CAAA;AAAA,EAC5B,OAAA,EAAS,2DAAA;AAAA,EACT,SAAA,EAAW,kBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,qCAAA,EAAsC;AAAA,EACrE,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,cAAA;AAAA,MACN,OAAA,EAAS,8BAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO,CAAC,UAAU,CAAA;AAAA,EAClB,QAAA,EAAU;AAAA,IACR,kCAAA;AAAA,IACA,CAAA,2DAAA;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAE3D,IAAA,MAAM,IAAA,GACJ,IAAA,KAAS,MAAA,GACL,KACA,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,QAAQ,SAAA,IAAa,IAAA,GACvD,IAAA,GACD,EAAE,SAAS,IAAA,EAAK;AACxB,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAAI,MAAA,GAAS,WAAA,CAAY,IAAA;AAAA,MAC5C,UAAA,CAAgC;AAAA,QAC9B,GAAG,IAAA;AAAA,QACH,YAAA,EAAc,KAAK,YAAA,IAAgB;AAAA,OACpC;AAAA,KACH;AACA,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;AC1BD,IAAM,WAAA,GAAc;AAAA,EAClB,IAAA,EAAM,mBAAA;AAAA,EACN,OAAA,EACE;AACJ,CAAA;AAEA,IAAM,OAAA,uBAAc,GAAA,CAAI,CAAC,QAAQ,IAAA,EAAM,KAAA,EAAO,YAAA,EAAc,OAAO,CAAC,CAAA;AAEpE,IAAM,oCAAoB,IAAI,GAAA,CAAI,CAAC,KAAA,EAAO,OAAA,EAAS,QAAQ,CAAC,CAAA;AAO5D,IAAM,6CAA6B,IAAI,GAAA,CAAI,CAAC,OAAA,EAAS,QAAQ,CAAC,CAAA;AAE9D,SAAS,YAAY,KAAA,EAAwB;AAC3C,EAAA,MAAM,MAAA,GAAS,WAAW,KAAK,CAAA;AAC/B,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,IAAI,CAAC,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAA,EAAG;AACxB,IAAA,MAAM,IAAI,aAAA;AAAA,MACR,qBAAqB,MAAM,CAAA,kDAAA;AAAA,KAC7B;AAAA,EACF;AACA,EAAA,OAAO,WAAW,MAAM,CAAA,CAAA;AAC1B;AAGA,SAAS,aAAa,IAAA,EAAgD;AACpE,EAAA,OAAO,OAAO,KAAK,OAAA,KAAY,QAAA,GAAW,EAAE,KAAA,EAAO,IAAA,CAAK,OAAA,EAAQ,GAAI,EAAC;AACvE;AAEO,IAAM,wCAAwC,aAAA,CAAc;AAAA,EACjE,IAAA,EAAM,CAAC,aAAA,EAAe,UAAA,EAAY,YAAY,KAAK,CAAA;AAAA,EACnD,OAAA,EACE,oHAAA;AAAA,EACF,SAAA,EAAW,IAAA;AAAA,EACX,cAAA,EAAgB,IAAA;AAAA,EAChB,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ,KAAA;AAAA,IACR,IAAA,EAAM;AAAA,GACR;AAAA,EACA,YAAA,EAAc,MAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,OAAA,EAAS,yDAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO,CAAC,WAAW,CAAA;AAAA,EACnB,QAAA,EAAU;AAAA,IACR,uDAAA;AAAA,IACA,mEAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,IAAA,GAAO,MAAM,UAAA,CAAgC,GAAA,EAAK;AAAA,MACtD,MAAA,EAAQ,KAAA;AAAA,MACR,IAAA,EAAM,CAAA,yBAAA,EAA4B,kBAAA,CAAmB,IAAA,CAAK,cAAA,IAAkB,EAAE,CAAC,CAAA,SAAA,EAAY,WAAA,CAAY,KAAA,CAAM,MAAM,CAAC,CAAA;AAAA,KACrH,CAAA;AACD,IAAA,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,GAAG,YAAA,CAAa,IAAI,CAAA,EAAE;AAAA,EAC7C;AACF,CAAC,CAAA;AAEM,IAAM,wCAAwC,aAAA,CAAc;AAAA,EACjE,IAAA,EAAM,CAAC,aAAA,EAAe,UAAA,EAAY,YAAY,KAAK,CAAA;AAAA,EACnD,OAAA,EACE,mKAAA;AAAA,EACF,SAAA,EAAW,IAAA;AAAA,EACX,cAAA,EAAgB,IAAA;AAAA,EAChB,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ,KAAA;AAAA,IACR,IAAA,EAAM;AAAA,GACR;AAAA,EACA,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,OAAA,EAAS,yBAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,UAAA;AAAA,IACA;AAAA,MACE,IAAA,EAAM,sBAAA;AAAA,MACN,OAAA,EACE;AAAA;AACJ,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,CAAA,4HAAA,CAAA;AAAA,IACA;AAAA,GACF;AAAA;AAAA;AAAA;AAAA,EAIA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,KAAA,GAAQ,UAAA;AAAA,MACZ,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAAA,MAC9C;AAAC,KACH;AAGA,IAAA,IAAI,KAAA,CAAM,WAAW,MAAA,IAAa,CAAC,MAAM,OAAA,CAAQ,KAAA,CAAM,MAAM,CAAA,EAAG;AAC9D,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AAEA,IAAA,MAAM,WAAA,GAAc,UAAA,CAAW,KAAA,CAAM,WAAW,CAAA;AAChD,IAAA,IAAI,gBAAgB,MAAA,IAAa,CAAC,iBAAA,CAAkB,GAAA,CAAI,WAAW,CAAA,EAAG;AACpE,MAAA,MAAM,IAAI,aAAA;AAAA,QACR,0BAA0B,WAAW,CAAA,kCAAA;AAAA,OACvC;AAAA,IACF;AACA,IAAA,MAAM,WAAA,GAAc;AAAA,MAClB,GAAG,KAAA;AAAA,MACH,GAAI,WAAA,KAAgB,MAAA,GAAY,EAAE,WAAA,KAAgB;AAAC,KACrD;AACA,IAAA,IAAI,MAAA,CAAO,IAAA,CAAK,WAAW,CAAA,CAAE,WAAW,CAAA,EAAG;AACzC,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,IAAA,GAAO,MAAM,UAAA,CAAgC,GAAA,EAAK;AAAA,MACtD,MAAA,EAAQ,KAAA;AAAA,MACR,MAAM,CAAA,yBAAA,EAA4B,kBAAA,CAAmB,IAAA,CAAK,cAAA,IAAkB,EAAE,CAAC,CAAA,SAAA,CAAA;AAAA,MAC/E,IAAA,EAAM;AAAA,KACP,CAAA;AACD,IAAA,OAAO,EAAE,MAAM,IAAA,EAAK;AAAA,EACtB;AACF,CAAC,CAAA;AAEM,IAAM,6CAA6C,aAAA,CAAc;AAAA,EACtE,IAAA,EAAM,CAAC,aAAA,EAAe,UAAA,EAAY,YAAY,UAAU,CAAA;AAAA,EACxD,OAAA,EACE,8HAAA;AAAA,EACF,SAAA,EAAW,IAAA;AAAA,EACX,cAAA,EAAgB,IAAA;AAAA,EAChB,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ,MAAA;AAAA,IACR,IAAA,EAAM;AAAA,GACR;AAAA,EACA,YAAA,EAAc,MAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,OAAA,EAAS,yBAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,UAAA;AAAA,IACA;AAAA,MACE,IAAA,EAAM,sBAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,CAAA,6GAAA;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,KAAA,GAAQ,UAAA;AAAA,MACZ,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAAA,MAC9C;AAAC,KACH;AACA,IAAA,MAAM,OAAA,GAAU,MAAM,OAAA,IAAW,KAAA;AACjC,IAAA,MAAM,WAAA,GAAc,UAAA,CAAW,KAAA,CAAM,WAAW,CAAA;AAChD,IAAA,IACE,gBAAgB,MAAA,IAChB,CAAC,0BAAA,CAA2B,GAAA,CAAI,WAAW,CAAA,EAC3C;AACA,MAAA,MAAM,IAAI,aAAA;AAAA,QACR,0BAA0B,WAAW,CAAA,4BAAA;AAAA,OACvC;AAAA,IACF;AACA,IAAA,MAAM,IAAA,GAAO,MAAM,UAAA,CAAqC,GAAA,EAAK;AAAA,MAC3D,MAAA,EAAQ,MAAA;AAAA,MACR,MAAM,CAAA,yBAAA,EAA4B,kBAAA,CAAmB,IAAA,CAAK,cAAA,IAAkB,EAAE,CAAC,CAAA,kBAAA,CAAA;AAAA,MAC/E,IAAA,EAAM;AAAA,QACJ,OAAA;AAAA,QACA,GAAI,WAAA,KAAgB,MAAA,GAAY,EAAE,WAAA,KAAgB;AAAC;AACrD,KACD,CAAA;AACD,IAAA,OAAO,EAAE,MAAM,IAAA,EAAK;AAAA,EACtB;AACF,CAAC,CAAA;;;ACjMM,IAAM,mCAAmC,aAAA,CAAc;AAAA,EAC5D,IAAA,EAAM,CAAC,aAAA,EAAe,UAAA,EAAY,QAAQ,CAAA;AAAA,EAC1C,OAAA,EAAS,uDAAA;AAAA,EACT,SAAA,EAAW,6BAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,0BAAA,EAA2B;AAAA,EAC1D,YAAA,EAAc,OAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,qBAAA,EAAsB;AAAA,IAC1D,EAAE,IAAA,EAAM,sBAAA,EAAwB,OAAA,EAAS,2BAAA,EAA4B;AAAA,IACrE,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,CAAA,kKAAA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,KAAA,EAAO,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC7B,WAAA,EAAa,UAAA,CAAW,KAAA,CAAM,WAAW;AAAA,KAC1C,CAAA;AACD,IAAA,IAAI,OAAO,KAAA,CAAM,KAAA,KAAU,QAAA,IAAY,KAAA,CAAM,UAAU,EAAA,EAAI;AACzD,MAAA,MAAM,IAAI,cAAc,2CAA2C,CAAA;AAAA,IACrE;AACA,IAAA,IAAI,KAAA,CAAM,kBAAkB,MAAA,EAAW;AACrC,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,SAAS,MAAM,GAAA,CAClB,MAAA,EAAO,CACP,YAAY,QAAA,CAAS,MAAA;AAAA,MACpB,WAA+B,KAAK,CAAA;AAAA,MACpC,eAAe,KAAK;AAAA,KACtB;AACF,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;AChDM,IAAM,mCAAmC,aAAA,CAAc;AAAA,EAC5D,IAAA,EAAM,CAAC,aAAA,EAAe,UAAA,EAAY,QAAQ,CAAA;AAAA,EAC1C,OAAA,EAAS,kEAAA;AAAA,EACT,SAAA,EAAW,6BAAA;AAAA,EACX,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ,QAAA;AAAA,IACR,IAAA,EAAM;AAAA,GACR;AAAA,EACA,YAAA,EAAc,aAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,OAAA,EAAS,mCAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,QAAA,EAAU,CAAC,oDAAoD,CAAA;AAAA,EAC/D,cAAA,EAAgB,CAAC,EAAE,IAAA,OACjB,CAAA,qBAAA,EAAwB,IAAA,CAAK,kBAAkB,EAAE,CAAA,6FAAA,CAAA;AAAA,EACnD,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,MAAO;AAAA,IAC7B,MAAM,MAAM,GAAA,CAAI,QAAO,CAAE,WAAA,CAAY,SAAS,MAAA,CAAO;AAAA,MACnD,cAAA,EAAgB,KAAK,cAAA,IAAkB;AAAA,KACxC;AAAA,GACH;AACF,CAAC,CAAA;;;ACfM,IAAM,iCAAiC,aAAA,CAAc;AAAA,EAC1D,IAAA,EAAM,CAAC,aAAA,EAAe,UAAA,EAAY,MAAM,CAAA;AAAA,EACxC,OAAA,EAAS,wDAAA;AAAA,EACT,SAAA,EAAW,2BAAA;AAAA,EACX,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ,MAAA;AAAA,IACR,IAAA,EAAM;AAAA,GACR;AAAA,EACA,YAAA,EAAc,aAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,OAAA,EAAS,iCAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO,CAAC,UAAA,EAAY,gBAAgB,CAAA;AAAA,EACpC,QAAA,EAAU;AAAA,IACR,CAAA,sGAAA;AAAA,GACF;AAAA,EACA,cAAA,EAAgB,CAAC,EAAE,IAAA,OACjB,CAAA,aAAA,EAAgB,IAAA,CAAK,kBAAkB,EAAE,CAAA,uEAAA,CAAA;AAAA,EAC3C,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,IAAI,SAAS,MAAA,EAAW;AACtB,MAAA,MAAM,IAAI,cAAc,sDAAiD,CAAA;AAAA,IAC3E;AAEA,IAAA,MAAM,IAAA,GACJ,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,KAAS,IAAA,IAAQ,SAAA,IAAa,IAAA,GACrD,IAAA,GACD,EAAE,OAAA,EAAS,IAAA,EAAK;AACtB,IAAA,MAAM,SAAS,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,YAAY,QAAA,CAAS,IAAA;AAAA,MACrD,UAAA,CAA6B;AAAA,QAC3B,GAAG,IAAA;AAAA,QACH,cAAA,EAAgB,KAAK,cAAA,IAAkB;AAAA,OACxC,CAAA;AAAA,MACD,eAAe,KAAK;AAAA,KACtB;AACA,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;AClCM,IAAM,iCAAiC,aAAA,CAAc;AAAA,EAC1D,IAAA,EAAM,CAAC,aAAA,EAAe,UAAA,EAAY,MAAM,CAAA;AAAA,EACxC,OAAA,EAAS,yDAAA;AAAA,EACT,SAAA,EAAW,2BAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,0BAAA,EAA2B;AAAA,EACzD,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,4BAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,oCAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,cAAA,EAAgB,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AAAA,MACxC,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM;AAAA,KAChC,CAAA;AACD,IAAA,MAAM,QAAA,GAAW,GAAA,CAAI,MAAA,EAAO,CAAE,WAAA,CAAY,QAAA;AAC1C,IAAA,IAAI,KAAA,CAAM,QAAQ,IAAA,EAAM;AACtB,MAAA,MAAM,OAAO,MAAM,UAAA;AAAA,QAAW,GAAA;AAAA,QAAK,CAAC,WAClC,QAAA,CAAS,IAAA;AAAA,UACP,UAAA,CAA8B;AAAA,YAC5B,GAAG,KAAA;AAAA,YACH,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA;AAAO,WAC1C;AAAA;AACH,OACF;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM,EAAE;AAAA,QACjE,KAAA,EAAO,eAAe,IAAI;AAAA,OAC5B;AAAA,IACF;AACA,IAAA,MAAM,SAAS,MAAM,QAAA,CAAS,IAAA,CAAK,UAAA,CAA8B,KAAK,CAAC,CAAA;AACvE,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,cAAA,CAAe,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,EAC5D;AACF,CAAC,CAAA;AAED,SAAS,eAAe,IAAA,EAAsC;AAC5D,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,0BAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAY,IAAA,EAAgD;AAAA,IACjE,EAAE,GAAA,EAAK,gBAAA,EAAkB,MAAA,EAAQ,SAAA,EAAU;AAAA,IAC3C,EAAE,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,OAAA,EAAQ;AAAA,IAChC,EAAE,GAAA,EAAK,UAAA,EAAY,MAAA,EAAQ,UAAA;AAAW,GACvC,CAAA;AACH;;;ACtEO,IAAM,kCAAkC,aAAA,CAAc;AAAA,EAC3D,IAAA,EAAM,CAAC,aAAA,EAAe,UAAA,EAAY,OAAO,CAAA;AAAA,EACzC,OAAA,EACE,4HAAA;AAAA,EACF,SAAA,EAAW,4BAAA;AAAA,EACX,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ,KAAA;AAAA,IACR,IAAA,EAAM;AAAA,GACR;AAAA,EACA,YAAA,EAAc,MAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,OAAA,EAAS,yDAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,QAAA,EAAU,CAAC,gDAAgD,CAAA;AAAA;AAAA;AAAA;AAAA,EAI3D,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,KAAM;AAC5B,IAAA,MAAM,SAAS,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,YAAY,QAAA,CAAS,KAAA;AAAA,MACrD,UAAA,CAA8B;AAAA,QAC5B,cAAA,EAAgB,KAAK,cAAA,IAAkB;AAAA,OACxC;AAAA,KACH;AACA,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;ACtBM,IAAM,mCAAmC,aAAA,CAAc;AAAA,EAC5D,IAAA,EAAM,CAAC,aAAA,EAAe,UAAA,EAAY,QAAQ,CAAA;AAAA,EAC1C,OAAA,EAAS,6DAAA;AAAA,EACT,SAAA,EAAW,4BAAA;AAAA,EACX,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ,OAAA;AAAA,IACR,IAAA,EAAM;AAAA,GACR;AAAA,EACA,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,OAAA,EAAS,mCAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,WAAA,EAAY;AAAA,IAChD,EAAE,IAAA,EAAM,sBAAA,EAAwB,OAAA,EAAS,iBAAA,EAAkB;AAAA,IAC3D;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,qEAAA;AAAA,IACA,CAAA,sGAAA;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,KAAA,EAAO,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC7B,WAAA,EAAa,UAAA,CAAW,KAAA,CAAM,WAAW;AAAA,KAC1C,CAAA;AACD,IAAA,IAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,WAAW,CAAA,EAAG;AACnC,MAAA,MAAM,IAAI,cAAc,iDAA4C,CAAA;AAAA,IACtE;AACA,IAAA,MAAM,SAAS,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,YAAY,QAAA,CAAS,KAAA;AAAA,MACrD,UAAA,CAA8B;AAAA,QAC5B,GAAG,KAAA;AAAA,QACH,cAAA,EAAgB,KAAK,cAAA,IAAkB;AAAA,OACxC;AAAA,KACH;AACA,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;ACnDM,IAAM,8BAA8B,aAAA,CAAc;AAAA,EACvD,IAAA,EAAM,CAAC,aAAA,EAAe,WAAW,CAAA;AAAA,EACjC,OAAA,EAAS,mEAAA;AAAA,EACT,SAAA,EAAW,uBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAM,gCAAA,EAAiC;AAAA,EACjE,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,cAAA;AAAA,MACN,OAAA,EAAS,mCAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,QAAA,EAAU,CAAC,uCAAuC,CAAA;AAAA,EAClD,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,MAAO;AAAA,IAC7B,IAAA,EAAM,MAAM,GAAA,CACT,MAAA,EAAO,CACP,WAAA,CAAY,SAAA,CAAU,EAAE,YAAA,EAAc,IAAA,CAAK,YAAA,IAAgB,EAAA,EAAI;AAAA,GACpE;AACF,CAAC,CAAA;;;ACVM,IAAM,2BAA2B,aAAA,CAAc;AAAA,EACpD,IAAA,EAAM,CAAC,aAAA,EAAe,QAAQ,CAAA;AAAA,EAC9B,OAAA,EAAS,qDAAA;AAAA,EACT,SAAA,EAAW,mBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAM,gCAAA,EAAiC;AAAA,EACjE,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,cAAA;AAAA,MACN,OAAA,EAAS,gCAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAA,EAAS,UAAA,EAAW;AAAA,IAC7C,EAAE,IAAA,EAAM,sBAAA,EAAwB,OAAA,EAAS,iBAAA,EAAkB;AAAA,IAC3D,EAAE,IAAA,EAAM,4BAAA,EAA8B,OAAA,EAAS,sBAAA,EAAuB;AAAA,IACtE;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,6DAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,IAAA,EAAM,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA;AAAA,MAC3B,WAAA,EAAa,UAAA,CAAW,KAAA,CAAM,WAAW,CAAA;AAAA,MACzC,cAAA,EAAgB,UAAA,CAAW,KAAA,CAAM,OAAO;AAAA,KACzC,CAAA;AACD,IAAA,IAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,WAAW,CAAA,EAAG;AACnC,MAAA,MAAM,IAAI,cAAc,iDAA4C,CAAA;AAAA,IACtE;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAAI,MAAA,GAAS,WAAA,CAAY,KAAA;AAAA,MAC5C,UAAA,CAAiC;AAAA,QAC/B,GAAG,KAAA;AAAA,QACH,YAAA,EAAc,KAAK,YAAA,IAAgB;AAAA,OACpC;AAAA,KACH;AACA,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;ACjDM,IAAM,kBAAkB,aAAA,CAAc;AAAA,EAC3C,IAAA,EAAM,CAAC,OAAA,EAAS,KAAK,CAAA;AAAA,EACrB,OAAA,EAAS,6DAAA;AAAA,EACT,SAAA,EAAW,WAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,WAAA,EAAY;AAAA,EAC1C,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,oBAAA;AAAA,MACN,OAAA,EACE;AAAA;AACJ,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,oBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AACxC,IAAA,MAAM,SAAS,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,MAAM,GAAA,CAAI;AAAA,MAC1C,GAAI,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA;AAAQ,KAC5C,CAAA;AACD,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;ACTM,IAAM,wBAAwB,aAAA,CAAc;AAAA,EACjD,IAAA,EAAM,CAAC,OAAA,EAAS,YAAY,CAAA;AAAA,EAC5B,OAAA,EAAS,yDAAA;AAAA,EACT,SAAA,EAAW,iBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,kBAAA,EAAmB;AAAA,EACjD,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAA,EAAS,0BAAA,EAA2B;AAAA,IAC7D;AAAA,MACE,IAAA,EAAM,wBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,2BAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,CAAA,EAAG,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MACzB,IAAA,EAAM,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA;AAAA,MAC3B,WAAA,EAAa,UAAA,CAAW,KAAA,CAAM,WAAW,CAAA;AAAA,MACzC,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM;AAAA,KAChC,CAAA;AACD,IAAA,MAAM,KAAA,GAAQ,GAAA,CAAI,MAAA,EAAO,CAAE,KAAA;AAC3B,IAAA,IAAI,KAAA,CAAM,QAAQ,IAAA,EAAM;AACtB,MAAA,MAAM,OAAO,MAAM,UAAA;AAAA,QAAW,GAAA;AAAA,QAAK,CAAC,WAClC,KAAA,CAAM,SAAA;AAAA,UACJ,UAAA,CAAiC;AAAA,YAC/B,GAAG,KAAA;AAAA,YACH,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA;AAAO,WAC1C;AAAA;AACH,OACF;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM,EAAE;AAAA,QACjE,KAAA,EAAO,aAAa,IAAI;AAAA,OAC1B;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,KAAA,CAAM,SAAA;AAAA,MACzB,WAAiC,KAAK;AAAA,KACxC;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,YAAA,CAAa,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,EAC1D;AACF,CAAC,CAAA;AAED,SAAS,aAAa,IAAA,EAAsC;AAC1D,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,wBAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAY,IAAA,EAAgD;AAAA,IACjE,EAAE,GAAA,EAAK,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAM;AAAA,IAC5B,EAAE,GAAA,EAAK,UAAA,EAAY,MAAA,EAAQ,UAAA,EAAW;AAAA,IACtC,EAAE,GAAA,EAAK,aAAA,EAAe,MAAA,EAAQ,QAAA;AAAS,GACxC,CAAA;AACH;;;ACzEO,IAAM,qBAAqB,aAAA,CAAc;AAAA,EAC9C,IAAA,EAAM,CAAC,OAAA,EAAS,QAAQ,CAAA;AAAA,EACxB,OAAA,EAAS,6DAAA;AAAA,EACT,SAAA,EAAW,aAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAM,WAAA,EAAY;AAAA,EAC5C,YAAA,EAAc,OAAA;AAAA,EACd,KAAA,EAAO,CAAC,UAAU,CAAA;AAAA,EAClB,QAAA,EAAU;AAAA,IACR,CAAA,4EAAA,CAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,IAAA,EAAM,EAAE,CAAA;AACjC,IAAA,IAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,WAAW,CAAA,EAAG;AACnC,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,GACA,KAAA,CAAM,KAAA,CAAM,UAAA,CAA6B,KAAK,CAAC,CAAA;AAClD,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;ACpBM,IAAM,sBAAsB,aAAA,CAAc;AAAA,EAC/C,IAAA,EAAM,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,EACzB,OAAA,EACE,6GAAA;AAAA,EACF,SAAA,EAAW,eAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,YAAA,EAAa;AAAA,EAC5C,YAAA,EAAc,OAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,aAAA,EAAe,OAAA,EAAS,mCAAA,EAAoC;AAAA,IACpE;AAAA,MACE,IAAA,EAAM,uBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,4BAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,4BAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,sCAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,uCAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,GAAA,EAAK,UAAA,CAAW,KAAA,CAAM,GAAG,CAAA;AAAA,MACzB,YAAA,EAAc,UAAA,CAAW,KAAA,CAAM,YAAY,CAAA;AAAA,MAC3C,YAAA,EAAc,aAAA,CAAc,KAAA,CAAM,YAAY,CAAA;AAAA,MAC9C,YAAA,EAAc,aAAA,CAAc,KAAA,CAAM,YAAY,CAAA;AAAA,MAC9C,iBAAA,EAAmB,aAAA,CAAc,KAAA,CAAM,iBAAiB;AAAA,KACzD,CAAA;AACD,IAAA,IAAI,OAAO,KAAA,CAAM,GAAA,KAAQ,QAAA,IAAY,KAAA,CAAM,QAAQ,EAAA,EAAI;AACrD,MAAA,MAAM,IAAI,cAAc,gDAAgD,CAAA;AAAA,IAC1E;AACA,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,MAAM,GAAA,CACT,MAAA,GACA,MAAA,CAAO,MAAA;AAAA,QACN,WAA6B,KAAK,CAAA;AAAA,QAClC,eAAe,KAAK;AAAA;AACtB,KACJ;AAAA,EACF;AACF,CAAC,CAAA;;;ACjEM,IAAM,mBAAmB,aAAA,CAAc;AAAA,EAC5C,IAAA,EAAM,CAAC,QAAA,EAAU,KAAK,CAAA;AAAA,EACtB,OAAA,EAAS,+DAAA;AAAA,EACT,SAAA,EAAW,YAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,sBAAA,EAAuB;AAAA,EACrD,YAAA,EAAc,MAAA;AAAA,EACd,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,WAAW,OAAA,EAAS,mBAAA,EAAqB,UAAA,EAAY,IAAA,EAAM,CAAA;AAAA,EAC1E,QAAA,EAAU,CAAC,sDAAsD,CAAA;AAAA,EACjE,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,MAAO;AAAA,IAC7B,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,MAAA,CAAO,GAAA,CAAI,EAAE,OAAA,EAAS,IAAA,CAAK,OAAA,IAAW,EAAA,EAAI;AAAA,GACrE;AACF,CAAC,CAAA;;;ACXM,IAAM,oBAAoB,aAAA,CAAc;AAAA,EAC7C,IAAA,EAAM,CAAC,QAAA,EAAU,MAAM,CAAA;AAAA,EACvB,OAAA,EAAS,sCAAA;AAAA,EACT,SAAA,EAAW,aAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,YAAA,EAAa;AAAA,EAC3C,YAAA,EAAc,MAAA;AAAA,EACd,QAAA,EAAU,CAAC,6BAA6B,CAAA;AAAA,EACxC,GAAA,EAAK,OAAO,EAAE,GAAA,EAAI,MAAO;AAAA,IACvB,MAAM,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,OAAO,IAAA;AAAK,GACvC;AACF,CAAC,CAAA;;;ACVM,IAAM,kBAAkB,aAAA,CAAc;AAAA,EAC3C,IAAA,EAAM,CAAC,OAAA,EAAS,KAAK,CAAA;AAAA,EACrB,OAAA,EAAS,kEAAA;AAAA,EACT,SAAA,EAAW,WAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,oBAAA,EAAqB;AAAA,EACnD,YAAA,EAAc,MAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,QAAA;AAAA,MACN,OAAA,EAAS,4CAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,QAAA,EAAU,CAAC,0CAA0C,CAAA;AAAA,EACrD,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,MAAO;AAAA,IAC7B,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,GAAS,KAAA,CAAM,GAAA,CAAI,IAAA,CAAK,MAAA,IAAU,EAAE;AAAA,GACtD;AACF,CAAC,CAAA;;;ACRD,IAAM,aAAA,GAAgB,CAAC,SAAA,EAAW,QAAQ,CAAA;AAEnC,IAAM,oBAAoB,aAAA,CAAc;AAAA,EAC7C,IAAA,EAAM,CAAC,QAAA,EAAU,MAAM,CAAA;AAAA,EACvB,OAAA,EAAS,gDAAA;AAAA,EACT,SAAA,EAAW,IAAA;AAAA,EACX,YAAA,EAAc,MAAA;AAAA,EACd,QAAA,EAAU,CAAC,sBAAsB,CAAA;AAAA,EACjC,GAAA,EAAK,OAAO,EAAE,GAAA,QAAW,EAAE,IAAA,EAAM,YAAA,CAAa,GAAG,CAAA,EAAE;AACrD,CAAC,CAAA;AAEM,IAAM,mBAAmB,aAAA,CAAc;AAAA,EAC5C,IAAA,EAAM,CAAC,QAAA,EAAU,KAAK,CAAA;AAAA,EACtB,OAAA,EAAS,qCAAA;AAAA,EACT,SAAA,EAAW,IAAA;AAAA,EACX,YAAA,EAAc,MAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ,EAAE,IAAA,EAAM,KAAA,EAAO,OAAA,EAAS,2BAAA,EAA6B,YAAY,IAAA;AAAK,GACxE;AAAA,EACA,QAAA,EAAU,CAAC,6BAA6B,CAAA;AAAA,EACxC,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,KAAM;AAC5B,IAAA,MAAM,GAAA,GAAM,eAAA,CAAgB,IAAA,CAAK,GAAG,CAAA;AACpC,IAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,GAAG,CAAA,CAAE,GAAG,CAAA,IAAK,IAAA;AACxC,IAAA,OAAO,EAAE,IAAA,EAAM,EAAE,CAAC,GAAG,GAAG,OAAM,EAAE;AAAA,EAClC;AACF,CAAC,CAAA;AAEM,IAAM,mBAAmB,aAAA,CAAc;AAAA,EAC5C,IAAA,EAAM,CAAC,QAAA,EAAU,KAAK,CAAA;AAAA,EACtB,OAAA,EAAS,iDAAA;AAAA,EACT,SAAA,EAAW,IAAA;AAAA,EACX,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ,EAAE,IAAA,EAAM,KAAA,EAAO,OAAA,EAAS,kBAAA,EAAoB,YAAY,IAAA,EAAK;AAAA,IAC7D,EAAE,IAAA,EAAM,OAAA,EAAS,OAAA,EAAS,oBAAA,EAAsB,YAAY,IAAA;AAAK,GACnE;AAAA,EACA,QAAA,EAAU,CAAC,oCAAoC,CAAA;AAAA,EAC/C,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,KAAM;AAC5B,IAAA,MAAM,GAAA,GAAM,kBAAA,CAAmB,IAAA,CAAK,GAAG,CAAA;AACvC,IAAA,MAAM,KAAA,GAAQ,KAAK,KAAA,IAAS,EAAA;AAC5B,IAAA,IAAI,UAAU,EAAA,EAAI;AAChB,MAAA,MAAM,IAAI,cAAc,gCAAgC,CAAA;AAAA,IAC1D;AACA,IAAA,MAAM,IAAA,GAAO,YAAA,CAAa,GAAA,CAAI,EAAA,CAAG,GAAA,EAAK,EAAE,CAAC,GAAG,GAAG,KAAA,EAAO,CAAA;AACtD,IAAA,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,GAAG,KAAA,EAAO,UAAA,EAAY,IAAA,EAAK,EAAE;AAAA,EACpD;AACF,CAAC,CAAA;AAEM,IAAM,qBAAqB,aAAA,CAAc;AAAA,EAC9C,IAAA,EAAM,CAAC,QAAA,EAAU,OAAO,CAAA;AAAA,EACxB,OAAA,EAAS,yDAAA;AAAA,EACT,SAAA,EAAW,IAAA;AAAA,EACX,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,OAAO,OAAA,EAAS,kBAAA,EAAoB,UAAA,EAAY,IAAA,EAAM,CAAA;AAAA,EACrE,QAAA,EAAU,CAAC,+BAA+B,CAAA;AAAA,EAC1C,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,KAAM;AAC5B,IAAA,MAAM,GAAA,GAAM,kBAAA,CAAmB,IAAA,CAAK,GAAG,CAAA;AACvC,IAAA,MAAM,IAAA,GAAO,YAAA,CAAa,GAAA,CAAI,EAAA,CAAG,GAAA,EAAK,EAAE,CAAC,GAAG,GAAG,MAAA,EAAW,CAAA;AAC1D,IAAA,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,GAAG,IAAA,EAAM,UAAA,EAAY,IAAA,EAAK,EAAE;AAAA,EACnD;AACF,CAAC,CAAA;AAED,SAAS,aAAa,GAAA,EAAqD;AACzE,EAAA,MAAM,MAAA,GAAS,UAAA,CAAW,GAAA,CAAI,EAAA,CAAG,GAAG,CAAA;AACpC,EAAA,OAAO;AAAA,IACL,GAAG,MAAA;AAAA,IACH,GAAI,MAAA,CAAO,MAAA,KAAW,MAAA,GAClB,EAAC,GACD,EAAE,MAAA,EAAQ,UAAA,CAAW,MAAA,CAAO,MAAM,CAAA,EAAE;AAAA,IACxC,UAAA,EAAY,UAAA,CAAW,GAAA,CAAI,EAAA,CAAG,GAAG;AAAA,GACnC;AACF;AAEA,SAAS,gBACP,KAAA,EACiC;AACjC,EAAA,IAAI,KAAA,KAAU,MAAA,IAAa,WAAA,CAAY,KAAK,CAAA,EAAG;AAC7C,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,IAAI,cAAc,mDAAmD,CAAA;AAC7E;AAEA,SAAS,mBAAmB,KAAA,EAAiD;AAC3E,EAAA,IAAI,UAAU,QAAA,EAAU;AACtB,IAAA,MAAM,IAAI,aAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AACA,EAAA,MAAM,GAAA,GAAM,gBAAgB,KAAK,CAAA;AACjC,EAAA,IAAK,aAAA,CAAoC,QAAA,CAAS,GAAG,CAAA,EAAG;AACtD,IAAA,OAAO,GAAA;AAAA,EACT;AACA,EAAA,MAAM,IAAI,cAAc,0CAA0C,CAAA;AACpE;;;AC7FO,IAAM,uBAAuB,aAAA,CAAc;AAAA,EAChD,IAAA,EAAM,CAAC,UAAA,EAAY,OAAO,CAAA;AAAA,EAC1B,OAAA,EAAS,kCAAA;AAAA,EACT,SAAA,EAAW,gBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,qBAAA,EAAsB;AAAA,EACrD,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,kBAAA,EAAmB;AAAA,IACvD;AAAA,MACE,IAAA,EAAM,uBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,yBAAA,EAA2B,OAAA,EAAS,uBAAA,EAAwB;AAAA,IACpE,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,6BAAA,EAA8B;AAAA,IAClE;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,yBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AAAA,MAC/B,OAAA,EAAS,gBAAA,CAAiB,KAAA,CAAM,MAAM,CAAA;AAAA,MACtC,UAAA,EAAY,UAAA,CAAW,KAAA,CAAM,QAAQ,CAAA;AAAA,MACrC,KAAA,EAAO,UAAA,CAAW,KAAA,CAAM,KAAK;AAAA,KAC9B,CAAA;AACD,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,MAAM,GAAA,CACT,MAAA,GACA,QAAA,CAAS,KAAA,CAAM,UAAA,CAA+B,KAAK,CAAC;AAAA,KACzD;AAAA,EACF;AACF,CAAC,CAAA;;;AC3CM,IAAM,wBAAwB,aAAA,CAAc;AAAA,EACjD,IAAA,EAAM,CAAC,UAAA,EAAY,QAAQ,CAAA;AAAA,EAC3B,OAAA,EAAS,0CAAA;AAAA,EACT,SAAA,EAAW,iBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,MAAM,sBAAA,EAAuB;AAAA,EACxD,YAAA,EAAc,aAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,OAAA;AAAA,MACN,OAAA,EAAS,wCAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,QAAA,EAAU,CAAC,iDAAiD,CAAA;AAAA,EAC5D,cAAA,EAAgB,CAAC,EAAE,IAAA,OACjB,CAAA,eAAA,EAAkB,IAAA,CAAK,SAAS,EAAE,CAAA,8CAAA,CAAA;AAAA,EACpC,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,MAAO;AAAA,IAC7B,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,QAAA,CAAS,MAAA,CAAO,EAAE,KAAA,EAAO,IAAA,CAAK,KAAA,IAAS,EAAA,EAAI;AAAA,GACtE;AACF,CAAC,CAAA;;;ACVM,IAAM,4BAA4B,aAAA,CAAc;AAAA,EACrD,IAAA,EAAM,CAAC,UAAA,EAAY,aAAa,CAAA;AAAA,EAChC,OAAA,EAAS,qCAAA;AAAA,EACT,SAAA,EAAW,qBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,2BAAA,EAA4B;AAAA,EAC3D,YAAA,EAAc,aAAA;AAAA,EACd,KAAA,EAAO,CAAC,UAAA,EAAY,gBAAgB,CAAA;AAAA,EACpC,QAAA,EAAU;AAAA,IACR,CAAA,8EAAA,CAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,cAAA,EAAgB,CAAC,EAAE,KAAA,EAAM,KAAM;AAC7B,IAAA,MAAM,KAAA,GAAQ,gBAAA,CAAiB,KAAA,CAAM,KAAK,CAAA;AAC1C,IAAA,OAAO,KAAA,KAAU,MAAA,GACb,+DAAA,GACA,CAAA,OAAA,EAAU,KAAK,CAAA,mCAAA,CAAA;AAAA,EACrB,CAAA;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,IAAI,SAAS,MAAA,EAAW;AACtB,MAAA,MAAM,IAAI,cAAc,4CAA4C,CAAA;AAAA,IACtE;AACA,IAAA,MAAM,KAAA,GAAQ,MAAM,OAAA,CAAQ,IAAI,IAAI,EAAE,MAAA,EAAQ,MAAK,GAAI,IAAA;AACvD,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,GACA,QAAA,CAAS,UAAA;AAAA,MACR,WAAoC,KAAK,CAAA;AAAA,MACzC,eAAe,KAAK;AAAA,KACtB;AACF,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;AAED,SAAS,iBAAiB,KAAA,EAAoC;AAC5D,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,GAAA,EAAK;AAC9C,IAAA;AAAA,EACF;AACA,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAkB,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AACxC,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EAAG;AACzB,MAAA,OAAO,MAAA,CAAO,MAAA;AAAA,IAChB;AACA,IAAA,IACE,MAAA,KAAW,QACX,OAAO,MAAA,KAAW,YAClB,KAAA,CAAM,OAAA,CAAS,MAAA,CAAgC,MAAM,CAAA,EACrD;AACA,MAAA,OAAQ,OAAiC,MAAA,CAAO,MAAA;AAAA,IAClD;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAAC;AACX;;;AC1DO,IAAM,qBAAqB,aAAA,CAAc;AAAA,EAC9C,IAAA,EAAM,CAAC,UAAA,EAAY,KAAK,CAAA;AAAA,EACxB,OAAA,EAAS,4BAAA;AAAA,EACT,SAAA,EAAW,IAAA;AAAA,EACX,WAAA,EAAa,iBAAA;AAAA,EACb,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,qBAAA,EAAsB;AAAA,EACrD,YAAA,EAAc,MAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,OAAA;AAAA,MACN,OAAA,EAAS,8BAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,QAAA,EAAU,CAAC,wCAAwC,CAAA;AAAA,EACnD,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,KAAM;AAC5B,IAAA,MAAM,KAAA,GAAQ,KAAK,KAAA,IAAS,EAAA;AAC5B,IAAA,MAAM,SAAS,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,SAAS,MAAA,CAAO;AAAA,MAChD,OAAA,EAAS,CAAC,EAAE,KAAA,EAAO,SAAS,QAAA,EAAU,QAAA,EAAU,KAAA,EAAO,KAAA,EAAO,CAAA;AAAA,MAC9D,KAAA,EAAO;AAAA,KACR,CAAA;AACD,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA;AAC7B,IAAA,IAAI,YAAY,MAAA,EAAW;AACzB,MAAA,MAAM,IAAI,WAAA,CAAY;AAAA,QACpB,MAAA,EAAQ,GAAA;AAAA,QACR,IAAA,EAAM,mBAAA;AAAA,QACN,IAAA,EAAM,WAAA;AAAA,QACN,OAAA,EAAS,wBAAwB,KAAK,CAAA,CAAA;AAAA,QACtC,UAAA,EACE;AAAA,OACH,CAAA;AAAA,IACH;AACA,IAAA,OAAO,EAAE,MAAM,OAAA,EAAQ;AAAA,EACzB;AACF,CAAC,CAAA;;;ACxBM,IAAM,2BAA2B,aAAA,CAAc;AAAA,EACpD,IAAA,EAAM,CAAC,UAAA,EAAY,YAAY,CAAA;AAAA,EAC/B,OAAA,EAAS,+CAAA;AAAA,EACT,SAAA,EAAW,oBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,yBAAA,EAA0B;AAAA,EACzD,YAAA,EAAc,OAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAA,EAAS,oCAAA,EAAqC;AAAA,IACvE;AAAA,MACE,IAAA,EAAM,sBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,kDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,MAAM,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,MAAM,QAAQ,CAAA;AACxD,IAAA,IAAI,GAAA,KAAQ,MAAA,IAAa,GAAA,CAAI,IAAA,OAAW,EAAA,EAAI;AAC1C,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,OAAA,GAAU,cAAA,CAAe,KAAA,CAAM,OAAA,EAAS,WAAW,CAAA;AACzD,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAAI,MAAA,GAAS,QAAA,CAAS,SAAA;AAAA,MACzC,UAAA,CAAmC;AAAA,QACjC,GAAA;AAAA,QACA,GAAI,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA;AAAQ,OAC5C,CAAA;AAAA,MACD,eAAe,KAAK;AAAA,KACtB;AACA,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;AC7BM,IAAM,wBAAwB,aAAA,CAAc;AAAA,EACjD,IAAA,EAAM,CAAC,UAAA,EAAY,QAAQ,CAAA;AAAA,EAC3B,OAAA,EAAS,6DAAA;AAAA,EACT,SAAA,EAAW,iBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,qBAAA,EAAsB;AAAA,EACrD,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,kBAAA,EAAmB;AAAA,IACvD;AAAA,MACE,IAAA,EAAM,uBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,yBAAA,EAA2B,OAAA,EAAS,uBAAA,EAAwB;AAAA,IACpE,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,6BAAA,EAA8B;AAAA,IAClE,EAAE,IAAA,EAAM,gBAAA,EAAkB,OAAA,EAAS,YAAA,EAAa;AAAA,IAChD,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,wBAAA,EAAyB;AAAA,IAC7D,UAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,iEAAA;AAAA,IACA,mDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AAAA,MAC/B,OAAA,EAAS,gBAAA,CAAiB,KAAA,CAAM,MAAM,CAAA;AAAA,MACtC,UAAA,EAAY,UAAA,CAAW,KAAA,CAAM,QAAQ,CAAA;AAAA,MACrC,KAAA,EAAO,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC7B,IAAA,EAAM,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA;AAAA,MAC3B,KAAA,EAAO,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC7B,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM;AAAA,KAChC,CAAA;AACD,IAAA,MAAM,QAAA,GAAW,GAAA,CAAI,MAAA,EAAO,CAAE,QAAA;AAC9B,IAAA,IAAI,KAAA,CAAM,QAAQ,IAAA,EAAM;AACtB,MAAA,MAAM,OAAO,MAAM,UAAA;AAAA,QAAW,GAAA;AAAA,QAAK,CAAC,WAClC,QAAA,CAAS,MAAA;AAAA,UACP,UAAA,CAAgC;AAAA,YAC9B,GAAG,KAAA;AAAA,YACH,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA;AAAO,WAC1C;AAAA;AACH,OACF;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM,EAAE;AAAA,QACjE,KAAA,EAAO,eAAe,IAAI;AAAA,OAC5B;AAAA,IACF;AACA,IAAA,MAAM,SAAS,MAAM,QAAA,CAAS,MAAA,CAAO,UAAA,CAAgC,KAAK,CAAC,CAAA;AAC3E,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,cAAA,CAAe,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,EAC5D;AACF,CAAC,CAAA;AAED,SAAS,eAAe,IAAA,EAAsC;AAC5D,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,sBAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAY,IAAA,EAAgD;AAAA,IACjE,EAAE,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,OAAA,EAAQ;AAAA,IAChC,EAAE,GAAA,EAAK,WAAA,EAAa,MAAA,EAAQ,OAAA,EAAQ;AAAA,IACpC,EAAE,GAAA,EAAK,UAAA,EAAY,MAAA,EAAQ,MAAA,EAAO;AAAA,IAClC,EAAE,GAAA,EAAK,YAAA,EAAc,MAAA,EAAQ,YAAA;AAAa,GAC3C,CAAA;AACH;;;AC3EO,IAAM,wBAAwB,aAAA,CAAc;AAAA,EACjD,IAAA,EAAM,CAAC,UAAA,EAAY,QAAQ,CAAA;AAAA,EAC3B,OAAA,EAAS,qDAAA;AAAA,EACT,SAAA,EAAW,gBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAM,sBAAA,EAAuB;AAAA,EACvD,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,OAAA;AAAA,MACN,OAAA,EAAS,8BAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAA,EAAS,YAAA,EAAa;AAAA,IACrD,EAAE,IAAA,EAAM,oBAAA,EAAsB,OAAA,EAAS,WAAA,EAAY;AAAA,IACnD;AAAA,MACE,IAAA,EAAM,qBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,kBAAA,EAAoB,OAAA,EAAS,6BAAA,EAA8B;AAAA,IACnE;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,6DAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,MAAA,GAAS,WAAW,IAAA,EAAM;AAAA,MAC9B,SAAA,EAAW,UAAA,CAAW,KAAA,CAAM,SAAS,CAAA;AAAA,MACrC,QAAA,EAAU,UAAA,CAAW,KAAA,CAAM,QAAQ,CAAA;AAAA,MACnC,UAAA,EAAY,SAAA,CAAU,KAAA,CAAM,UAAU,CAAA;AAAA,MACtC,GAAI,cAAA,CAAe,KAAA,CAAM,GAAA,EAAK,OAAO,KAAK;AAAC,KAC5C,CAAA;AACD,IAAA,IAAI,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,CAAE,WAAW,CAAA,EAAG;AACpC,MAAA,MAAM,IAAI,cAAc,iDAA4C,CAAA;AAAA,IACtE;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAAI,MAAA,GAAS,QAAA,CAAS,KAAA;AAAA,MACzC,UAAA,CAA8B;AAAA,QAC5B,KAAA,EAAO,KAAK,KAAA,IAAS,EAAA;AAAA,QACrB;AAAA,OACD;AAAA,KACH;AACA,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;AAED,SAAS,UAAU,KAAA,EAAqC;AACtD,EAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,IAAI,UAAU,OAAA,EAAS;AACrB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA;AAAA,EACF;AACA,EAAA,MAAM,IAAI,cAAc,oCAAoC,CAAA;AAC9D;;;ACzDO,IAAM,wBAAwB,aAAA,CAAc;AAAA,EACjD,IAAA,EAAM,CAAC,UAAA,EAAY,QAAQ,CAAA;AAAA,EAC3B,OAAA,EAAS,uCAAA;AAAA,EACT,SAAA,EAAW,iBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,cAAA,EAAe;AAAA,EAC9C,YAAA,EAAc,OAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,8BAAA,EAA+B;AAAA,IACnE,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAA,EAAS,YAAA,EAAa;AAAA,IACrD,EAAE,IAAA,EAAM,oBAAA,EAAsB,OAAA,EAAS,WAAA,EAAY;AAAA,IACnD;AAAA,MACE,IAAA,EAAM,qBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,qBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,qEAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,KAAA,EAAO,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC7B,SAAA,EAAW,UAAA,CAAW,KAAA,CAAM,SAAS,CAAA;AAAA,MACrC,QAAA,EAAU,UAAA,CAAW,KAAA,CAAM,QAAQ,CAAA;AAAA,MACnC,UAAA,EAAYC,UAAAA,CAAU,KAAA,CAAM,UAAU,CAAA;AAAA,MACtC,YAAA,EAAc,cAAA,CAAe,KAAA,CAAM,MAAA,EAAQ,UAAU;AAAA,KACtD,CAAA;AACD,IAAA,IAAI,OAAO,KAAA,CAAM,KAAA,KAAU,QAAA,IAAY,KAAA,CAAM,UAAU,EAAA,EAAI;AACzD,MAAA,MAAM,IAAI,cAAc,4CAA4C,CAAA;AAAA,IACtE;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,GACA,QAAA,CAAS,MAAA;AAAA,MACR,WAA+B,KAAK,CAAA;AAAA,MACpC,eAAe,KAAK;AAAA,KACtB;AACF,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;AAED,SAASA,WAAU,KAAA,EAAqC;AACtD,EAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,IAAI,UAAU,OAAA,EAAS;AACrB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA;AAAA,EACF;AACA,EAAA,MAAM,IAAI,cAAc,oCAAoC,CAAA;AAC9D;;;AC7DO,IAAM,4BAA4B,aAAA,CAAc;AAAA,EACrD,IAAA,EAAM,CAAC,UAAA,EAAY,aAAa,CAAA;AAAA,EAChC,OAAA,EAAS,2DAAA;AAAA,EACT,SAAA,EAAW,qBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,cAAA,EAAe;AAAA,EAC9C,YAAA,EAAc,OAAA;AAAA,EACd,KAAA,EAAO,CAAC,UAAA,EAAY,gBAAgB,CAAA;AAAA,EACpC,QAAA,EAAU;AAAA,IACR,CAAA,0EAAA,CAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,IAAI,SAAS,MAAA,EAAW;AACtB,MAAA,MAAM,IAAI,cAAc,4CAA4C,CAAA;AAAA,IACtE;AACA,IAAA,MAAM,KAAA,GAAQ,MAAM,OAAA,CAAQ,IAAI,IAAI,EAAE,QAAA,EAAU,MAAK,GAAI,IAAA;AACzD,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,GACA,QAAA,CAAS,UAAA;AAAA,MACR,WAAoC,KAAK,CAAA;AAAA,MACzC,eAAe,KAAK;AAAA,KACtB;AACF,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;ACtBM,IAAM,0BAA0B,aAAA,CAAc;AAAA,EACnD,IAAA,EAAM,CAAC,UAAA,EAAY,UAAU,CAAA;AAAA,EAC7B,OAAA,EAAS,2DAAA;AAAA,EACT,SAAA,EAAW,mBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,uBAAA,EAAwB;AAAA,EACvD,YAAA,EAAc,OAAA;AAAA,EACd,UAAA,EAAY,IAAA;AAAA,EACZ,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,sBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,sEAAA;AAAA,IACA,CAAA,oEAAA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,SAAA,GAAY,aAAA,CAAc,KAAA,CAAM,MAAM,CAAA;AAC5C,IAAA,MAAM,KAAA,GACJ,SAAA,KAAc,MAAA,GACV,KAAA,CAAM,QAAQ,IAAI,CAAA,GAChB,EAAE,MAAA,EAAQ,IAAA,EAAK,GACf,IAAA,GACF,EAAE,QAAQ,SAAA,EAAU;AAC1B,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,MAAM,IAAI,cAAc,2BAA2B,CAAA;AAAA,IACrD;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,GACA,QAAA,CAAS,QAAA;AAAA,MACR,WAAkC,KAAK,CAAA;AAAA,MACvC,eAAe,KAAK;AAAA,KACtB;AACF,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;ACxCM,IAAM,yBAAyB,aAAA,CAAc;AAAA,EAClD,IAAA,EAAM,CAAC,SAAA,EAAW,WAAW,CAAA;AAAA,EAC7B,OAAA,EAAS,mDAAA;AAAA,EACT,SAAA,EAAW,kBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,uBAAA,EAAwB;AAAA,EACvD,YAAA,EAAc,OAAA;AAAA,EACd,UAAA,EAAY,IAAA;AAAA,EACZ,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,aAAA,EAAe,OAAA,EAAS,qBAAA,EAAsB;AAAA,IACtD,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,QAAA,EAAU,UAAA,CAAW,KAAA,CAAM,GAAG;AAAA,KAC/B,CAAA;AACD,IAAA,IAAI,OAAO,KAAA,CAAM,QAAA,KAAa,QAAA,IAAY,KAAA,CAAM,aAAa,EAAA,EAAI;AAC/D,MAAA,MAAM,IAAI,cAAc,8CAA8C,CAAA;AAAA,IACxE;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,GACA,OAAA,CAAQ,QAAA;AAAA,MACP,WAAmC,KAAK,CAAA;AAAA,MACxC,eAAe,KAAK;AAAA,KACtB;AACF,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;AC/BM,IAAM,8BAA8B,aAAA,CAAc;AAAA,EACvD,IAAA,EAAM,CAAC,SAAA,EAAW,gBAAgB,CAAA;AAAA,EAClC,OAAA,EAAS,yCAAA;AAAA,EACT,SAAA,EAAW,uBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,4BAAA,EAA6B;AAAA,EAC5D,YAAA,EAAc,OAAA;AAAA,EACd,UAAA,EAAY,IAAA;AAAA,EACZ,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,kBAAA,EAAmB;AAAA,IACvD,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAA,EAAS,+BAAA,EAAgC;AAAA,IAClE;AAAA,MACE,IAAA,EAAM,wBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,sBAAA,EAAuB;AAAA,IAC3D,EAAE,IAAA,EAAM,gBAAA,EAAkB,OAAA,EAAS,gCAAA,EAAiC;AAAA,IACpE;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AAAA,MAC/B,IAAA,EAAM,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA;AAAA,MAC3B,WAAA,EAAa,UAAA,CAAW,KAAA,CAAM,WAAW,CAAA;AAAA,MACzC,KAAA,EAAO,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC7B,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AAAA,MAC/B,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM;AAAA,KAChC,CAAA;AACD,IAAA,IAAI,OAAO,KAAA,CAAM,MAAA,KAAW,QAAA,IAAY,KAAA,CAAM,WAAW,EAAA,EAAI;AAC3D,MAAA,MAAM,IAAI,cAAc,6CAA6C,CAAA;AAAA,IACvE;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,GACA,OAAA,CAAQ,aAAA;AAAA,MACP,WAAwC,KAAK,CAAA;AAAA,MAC7C,eAAe,KAAK;AAAA,KACtB;AACF,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;AC9CM,IAAM,oBAAoB,aAAA,CAAc;AAAA,EAC7C,IAAA,EAAM,CAAC,SAAA,EAAW,KAAK,CAAA;AAAA,EACvB,OAAA,EAAS,uDAAA;AAAA,EACT,SAAA,EAAW,aAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,iBAAA,EAAkB;AAAA,EACjD,YAAA,EAAc,OAAA;AAAA,EACd,UAAA,EAAY,IAAA;AAAA,EACZ,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,wBAAA,EAAyB;AAAA,IAC7D,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,iBAAA,EAAkB;AAAA,IACtD,EAAE,IAAA,EAAM,mBAAA,EAAqB,OAAA,EAAS,4BAAA,EAA6B;AAAA,IACnE,EAAE,IAAA,EAAM,mBAAA,EAAqB,OAAA,EAAS,4BAAA,EAA6B;AAAA,IACnE,EAAE,IAAA,EAAM,sBAAA,EAAwB,OAAA,EAAS,0BAAA,EAA2B;AAAA,IACpE,EAAE,IAAA,EAAM,WAAA,EAAa,OAAA,EAAS,mBAAA,EAAoB;AAAA,IAClD;AAAA,MACE,IAAA,EAAM,wBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAA,EAAS,4BAAA,EAA6B;AAAA,IAC/D,EAAE,IAAA,EAAM,aAAA,EAAe,OAAA,EAAS,4BAAA,EAA6B;AAAA,IAC7D,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,gEAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,IAAA,EAAM,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA;AAAA,MAC3B,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AAAA,MAC/B,QAAA,EAAU,UAAA,CAAW,KAAA,CAAM,QAAQ,CAAA;AAAA,MACnC,QAAA,EAAU,UAAA,CAAW,KAAA,CAAM,QAAQ,CAAA;AAAA,MACnC,QAAA,EAAU,UAAA,CAAW,KAAA,CAAM,QAAA,EAAU,YAAY,CAAA;AAAA,MACjD,GAAA,EAAK,OAAA,CAAQ,KAAA,CAAM,GAAA,EAAK,OAAO,CAAA;AAAA,MAC/B,WAAA,EAAa,UAAA,CAAW,KAAA,CAAM,WAAW,CAAA;AAAA,MACzC,IAAA,EAAMA,UAAAA,CAAU,KAAA,CAAM,IAAI,CAAA;AAAA,MAC1B,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS;AAAA,KACtC,CAAA;AAGD,IAAA,IAAI,KAAA,CAAM,SAAS,MAAA,EAAW;AAC5B,MAAA,IAAI,OAAO,KAAA,CAAM,QAAA,KAAa,QAAA,EAAU;AACtC,QAAA,KAAA,CAAM,IAAA,GAAO,OAAA;AAAA,MACf,CAAA,MAAA,IAAW,OAAO,KAAA,CAAM,QAAA,KAAa,QAAA,EAAU;AAC7C,QAAA,KAAA,CAAM,IAAA,GAAO,OAAA;AAAA,MACf,CAAA,MAAA,IAAW,OAAO,KAAA,CAAM,MAAA,KAAW,QAAA,EAAU;AAC3C,QAAA,KAAA,CAAM,IAAA,GAAO,QAAA;AAAA,MACf;AAAA,IACF;AACA,IAAA,IAAI,KAAA,CAAM,SAAS,MAAA,EAAW;AAC5B,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,EAAO,CACP,OAAA,CAAQ,GAAA,CAAI,UAAA,CAA8B,KAAK,CAAA,EAAG,cAAA,CAAe,KAAK,CAAC,CAAA;AAC1E,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;AAED,SAASA,WAAU,KAAA,EAAqC;AACtD,EAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,IAAA,OAAO,IAAA;AAAA,EACT;AACA,EAAA,IAAI,UAAU,OAAA,EAAS;AACrB,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA;AAAA,EACF;AACA,EAAA,MAAM,IAAI,cAAc,8BAA8B,CAAA;AACxD;AAEA,SAAS,UAAA,CAAW,OAAgB,QAAA,EAAsC;AACxE,EAAA,IAAI,UAAU,MAAA,EAAW;AACvB,IAAA;AAAA,EACF;AACA,EAAA,MAAM,MAAA,GAAS,OAAO,KAAK,CAAA;AAC3B,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,IAAK,UAAU,CAAA,EAAG;AAC3C,IAAA,MAAM,IAAI,aAAA,CAAc,CAAA,EAAG,QAAQ,CAAA,0BAAA,CAA4B,CAAA;AAAA,EACjE;AACA,EAAA,OAAO,MAAA;AACT;;;ACrFO,IAAM,0BAA0B,aAAA,CAAc;AAAA,EACnD,IAAA,EAAM,CAAC,SAAA,EAAW,aAAa,CAAA;AAAA,EAC/B,OAAA,EAAS,6BAAA;AAAA,EACT,SAAA,EAAW,mBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,yBAAA,EAA0B;AAAA,EACzD,YAAA,EAAc,OAAA;AAAA,EACd,UAAA,EAAY,IAAA;AAAA,EACZ,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,eAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,aAAA,EAAe,OAAA,EAAS,0BAAA,EAA2B;AAAA,IAC3D,EAAE,IAAA,EAAM,kBAAA,EAAoB,OAAA,EAAS,gCAAA,EAAiC;AAAA,IACtE,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,4DAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,MAAM,QAAQ,CAAA;AACzD,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,IAAA;AAAA,MACA,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,SAAA,EAAW,OAAA,CAAQ,KAAA,CAAM,SAAA,EAAW,cAAc;AAAA,KACnD,CAAA;AACD,IAAA,IAAI,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,IAAY,KAAA,CAAM,SAAS,EAAA,EAAI;AACvD,MAAA,MAAM,IAAI,cAAc,gDAAgD,CAAA;AAAA,IAC1E;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,GACA,OAAA,CAAQ,SAAA;AAAA,MACP,WAAoC,KAAK,CAAA;AAAA,MACzC,eAAe,KAAK;AAAA,KACtB;AACF,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;ACxCM,IAAM,0BAA0B,aAAA,CAAc;AAAA,EACnD,IAAA,EAAM,CAAC,SAAA,EAAW,WAAW,CAAA;AAAA,EAC7B,OAAA,EAAS,mCAAA;AAAA,EACT,SAAA,EAAW,mBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,uBAAA,EAAwB;AAAA,EACvD,YAAA,EAAc,OAAA;AAAA,EACd,UAAA,EAAY,IAAA;AAAA,EACZ,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,aAAA,EAAe,OAAA,EAAS,wBAAA,EAAyB;AAAA,IACzD;AAAA,MACE,IAAA,EAAM,kBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,aAAA,EAAe,OAAA,EAAS,uBAAA,EAAwB;AAAA,IACxD,EAAE,IAAA,EAAM,cAAA,EAAgB,OAAA,EAAS,wBAAA,EAAyB;AAAA,IAC1D,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,yBAAA,EAA0B;AAAA,IAC9D,EAAE,IAAA,EAAM,oBAAA,EAAsB,OAAA,EAAS,uBAAA,EAAwB;AAAA,IAC/D;AAAA,MACE,IAAA,EAAM,0BAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,mEAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,SAAA,EAAW,UAAA,CAAW,KAAA,CAAM,SAAS,CAAA;AAAA,MACrC,QAAA,EAAU,UAAA,CAAW,KAAA,CAAM,GAAG,CAAA;AAAA,MAC9B,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,MAAA,EAAQ,OAAA,CAAQ,KAAA,CAAM,MAAA,EAAQ,UAAU,CAAA;AAAA,MACxC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AAAA,MAC/B,UAAA,EAAY,UAAA,CAAW,KAAA,CAAM,UAAU,CAAA;AAAA,MACvC,YAAA,EAAc,UAAA,CAAW,KAAA,CAAM,YAAY;AAAA,KAC5C,CAAA;AACD,IAAA,IAAI,OAAO,KAAA,CAAM,QAAA,KAAa,QAAA,IAAY,KAAA,CAAM,aAAa,EAAA,EAAI;AAC/D,MAAA,MAAM,IAAI,cAAc,8CAA8C,CAAA;AAAA,IACxE;AAIA,IAAA,IAAI,KAAA,CAAM,cAAc,MAAA,EAAW;AACjC,MAAA,MAAM,cAAA,GAAiB;AAAA,QACrB,KAAA,CAAM,KAAA;AAAA,QACN,KAAA,CAAM,MAAA;AAAA,QACN,KAAA,CAAM,MAAA;AAAA,QACN,KAAA,CAAM,UAAA;AAAA,QACN,KAAA,CAAM;AAAA,OACR,CAAE,IAAA,CAAK,CAAC,KAAA,KAAU,UAAU,MAAS,CAAA;AACrC,MAAA,KAAA,CAAM,SAAA,GAAY,iBAAiB,QAAA,GAAW,UAAA;AAAA,IAChD;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,GACA,OAAA,CAAQ,SAAA;AAAA,MACP,WAAoC,KAAK,CAAA;AAAA,MACzC,eAAe,KAAK;AAAA,KACtB;AACF,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;ACpEM,IAAM,wBAAwB,aAAA,CAAc;AAAA,EACjD,IAAA,EAAM,CAAC,WAAA,EAAa,OAAO,CAAA;AAAA,EAC3B,OAAA,EACE,0GAAA;AAAA,EACF,SAAA,EAAW,IAAA;AAAA,EACX,cAAA,EAAgB,IAAA;AAAA,EAChB,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,6BAAA,EAA8B;AAAA,EAC7D,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO,CAAC,UAAU,CAAA;AAAA,EAClB,QAAA,EAAU;AAAA,IACR,CAAA,qFAAA;AAAA,GACF;AAAA;AAAA;AAAA,EAGA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,KAAA,GAAQ,UAAA;AAAA,MACZ,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAAA,MAC9C;AAAC,KACH;AACA,IAAA,MAAM,OAAA,GAAU,MAAM,OAAA,IAAW,KAAA;AACjC,IAAA,IACE,OAAO,OAAA,KAAY,QAAA,IACnB,OAAA,KAAY,QACZ,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,IACrB,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,WAAW,CAAA,EAChC;AACA,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,IAAA,GAAO,MAAM,UAAA,CAAkC,GAAA,EAAK;AAAA,MACxD,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA,EAAM,6BAAA;AAAA,MACN,IAAA,EAAM,EAAE,OAAA;AAAQ,KACjB,CAAA;AACD,IAAA,OAAO,EAAE,MAAM,IAAA,EAAK;AAAA,EACtB;AACF,CAAC,CAAA;;;ACzBM,IAAM,aAAA,GAAoC;AAAA,EAC/C;AAAA,IACE,OAAA,EAAS,oBAAA;AAAA,IACT,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,OAAA,EAAS,qBAAA;AAAA,IACT,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,OAAA,EAAS,yBAAA;AAAA,IACT,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,OAAA,EAAS,oCAAA;AAAA,IACT,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,OAAA,EAAS,cAAA;AAAA,IACT,MAAA,EAAQ;AAAA,GACV;AAAA,EACA;AAAA,IACE,OAAA,EAAS,WAAA;AAAA,IACT,MAAA,EACE;AAAA;AAEN,CAAA;AAMO,IAAM,iBAAsC,EAAC;;;AC3C7C,SAAS,aAAA,GAAyC;AACvD,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,QAAA;AAAA,IACN,OAAA,EAAS,WAAA;AAAA,IACT,cAAA,EAAgB,sBAAA;AAAA,IAChB,GAAA,EAAK;AAAA,MACH,YAAA,EAAc,uDAAA;AAAA,MACd,aAAA,EAAe,uCAAA;AAAA,MACf,YAAA,EAAc,cAAA;AAAA,MACd,mBAAA,EAAqB;AAAA,KACvB;AAAA,IACA,SAAA,EAAW;AAAA,MACT,GAAA,EAAK,SAAA;AAAA,MACL,GAAA,EAAK,sBAAA;AAAA,MACL,GAAA,EAAK,aAAA;AAAA,MACL,GAAA,EAAK,sBAAA;AAAA,MACL,GAAA,EAAK;AAAA,KACP;AAAA,IACA,oBAAA,EAAsB;AAAA,MACpB,QAAA,EAAU,CAAA;AAAA,MACV,QAAA,EAAU;AAAA,QACR,sBAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,WAAA,EAAa,YAAA,CAAa,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,MACvC,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,SAAS,IAAA,CAAK;AAAA,KAChB,CAAE,CAAA;AAAA,IACF,QAAA,EAAU,YAAA,CAAa,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,MACpC,OAAA,EAAS,CAAC,QAAA,EAAU,GAAG,KAAK,IAAI,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,MAC1C,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,OAAO,IAAA,CAAK,YAAA;AAAA,MACZ,GAAI,KAAK,UAAA,KAAe,IAAA,GAAO,EAAE,QAAA,EAAU,IAAA,KAAS,EAAC;AAAA,MACrD,WAAW,IAAA,CAAK,SAAA;AAAA,MAChB,GAAI,KAAK,cAAA,KAAmB,IAAA,GAAO,EAAE,SAAA,EAAW,KAAA,KAAU,EAAC;AAAA,MAC3D,GAAI,KAAK,WAAA,KAAgB,MAAA,GACrB,EAAC,GACD,EAAE,WAAA,EAAa,IAAA,CAAK,WAAA,EAAY;AAAA,MACpC,GAAI,IAAA,CAAK,KAAA,KAAU,MAAA,GACf,KACA,EAAE,KAAA,EAAO,CAAA,EAAG,IAAA,CAAK,MAAM,MAAM,CAAA,CAAA,EAAI,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,CAAA,EAAG;AAAA,MACvD,OAAO,IAAA,CAAK,IAAA,IAAQ,EAAC,EAAG,GAAA,CAAI,CAAC,GAAA,MAAS;AAAA,QACpC,MAAM,GAAA,CAAI,IAAA;AAAA,QACV,SAAS,GAAA,CAAI,OAAA;AAAA,QACb,UAAU,GAAA,CAAI;AAAA,OAChB,CAAE,CAAA;AAAA,MACF,QAAQ,IAAA,CAAK,KAAA,IAAS,EAAC,EAAG,GAAA,CAAI,CAAC,IAAA,MAAU;AAAA,QACvC,MAAM,IAAA,CAAK,IAAA;AAAA,QACX,SAAS,IAAA,CAAK;AAAA,OAChB,CAAE,CAAA;AAAA,MACF,YAAA,EAAc,KAAK,cAAA,KAAmB,MAAA;AAAA,MACtC,UAAU,IAAA,CAAK;AAAA,KACjB,CAAE,CAAA;AAAA,IACF,KAAA,EAAO;AAAA,MACL,GAAA,EAAK,aAAA;AAAA,MACL,IAAA,EAAM;AAAA;AACR,GACF;AACF;;;ACrEA,IAAM,aAAA,GAAgB;AAAA,EACpB,aAAA,EAAe,yBAAA;AAAA,EACf,WAAA,EAAa,6CAAA;AAAA,EACb,UAAA,EAAY,kCAAA;AAAA,EACZ,UAAA,EAAY,8BAAA;AAAA,EACZ,aAAA,EAAe;AACjB,CAAA;AAEO,IAAM,cAAc,aAAA,CAAc;AAAA,EACvC,IAAA,EAAM,CAAC,MAAM,CAAA;AAAA,EACb,OAAA,EAAS,6DAAA;AAAA,EACT,SAAA,EAAW,IAAA;AAAA,EACX,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,SAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,QAAA,EAAU,CAAC,eAAA,EAAiB,uBAAuB,CAAA;AAAA,EACnD,GAAA,EAAK,OAAO,EAAE,KAAA,EAAM,KAAM;AACxB,IAAA,IAAI,KAAA,CAAM,UAAU,IAAA,EAAM;AACxB,MAAA,OAAO,EAAE,IAAA,EAAM,aAAA,EAAc,EAAE;AAAA,IACjC;AACA,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,aAAA;AAAA,MACN,KAAA,EAAO,OAAO,OAAA,CAAQ,aAAa,EAChC,GAAA,CAAI,CAAC,CAAC,GAAA,EAAK,GAAG,MAAM,CAAA,EAAG,GAAA,CAAI,OAAO,EAAE,CAAC,IAAI,GAAG,CAAA,CAAE,CAAA,CAC9C,IAAA,CAAK,IAAI;AAAA,KACd;AAAA,EACF;AACF,CAAC,CAAA;AAEM,IAAM,iBAAiB,aAAA,CAAc;AAAA,EAC1C,IAAA,EAAM,CAAC,MAAA,EAAQ,KAAK,CAAA;AAAA,EACpB,OAAA,EAAS,4DAAA;AAAA,EACT,SAAA,EAAW,UAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,UAAA,EAAW;AAAA,EACzC,YAAA,EAAc,MAAA;AAAA,EACd,QAAA,EAAU,CAAC,0BAA0B,CAAA;AAAA,EACrC,GAAA,EAAK,OAAO,EAAE,GAAA,EAAI,MAAO;AAAA,IACvB,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,CAAO,EAAE,gBAAgB,IAAA,EAAM,CAAA,CAAE,IAAA,CAAK,GAAA;AAAI,GAC5D;AACF,CAAC,CAAA;ACvCD,IAAM,eAAA,mBAAkB,IAAI,GAAA,CAAI,CAAC,kBAAkB,CAAC,CAAA;AAE7C,IAAM,gBAAgB,aAAA,CAAc;AAAA,EACzC,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,OAAA,EACE,0EAAA;AAAA,EACF,SAAA,EAAW,IAAA;AAAA,EACX,YAAA,EAAc,MAAA;AAAA,EACd,QAAA,EAAU,CAAC,iBAAA,EAAmB,wBAAwB,CAAA;AAAA,EACtD,GAAA,EAAK,OAAO,EAAE,GAAA,EAAI,KAAM;AACtB,IAAA,MAAM,OAAO,WAAA,CAAY;AAAA,MACvB,SAAS,GAAA,CAAI,OAAA;AAAA,MACb,GAAA,EAAK,IAAI,EAAA,CAAG,GAAA;AAAA,MACZ,cAAA,EAAgB;AAAA,KACjB,CAAA;AACD,IAAA,MAAM,YAAA,GAAe,KAAK,YAAA,KAAiB,WAAA;AAC3C,IAAA,MAAM,YAAY,GAAA,CAAI,MAAA,CAAO,EAAE,cAAA,EAAgB,MAAM,CAAA;AAErD,IAAA,IAAI,WAAA,GAAc,KAAA;AAClB,IAAA,IAAI,UAAA,GAA4B,IAAA;AAChC,IAAA,IAAI,iBAAA,GAAmC,IAAA;AACvC,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAU,MAAM,SAAA,CAAU,MAAA,CAAO,GAAA,EAAI;AAI3C,MAAA,WAAA,GAAc,OAAO,MAAA,KAAW,IAAA;AAChC,MAAA,UAAA,GAAa,OAAO,OAAA,IAAW,IAAA;AAAA,IACjC,SAAS,KAAA,EAAO;AACd,MAAA,iBAAA,GAAoB,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AAAA,IAC3E;AAEA,IAAA,IAAI,WAAA,GAA8B,IAAA;AAClC,IAAA,IAAI,IAAA,GAAsB,IAAA;AAC1B,IAAA,IAAI,gBAAgB,WAAA,EAAa;AAC/B,MAAA,IAAI;AACF,QAAA,MAAM,QAAS,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,MAAM,GAAA,EAAI;AAG5C,QAAA,WAAA,GAAc,IAAA;AACd,QAAA,IAAA,GAAO,KAAA,CAAM,MAAM,GAAA,IAAO,IAAA;AAAA,MAC5B,SAAS,KAAA,EAAO;AACd,QAAA,IAAA,CACG,KAAA,YAAiBC,gBAAgB,KAAA,YAAiB,WAAA,MAClD,MAAM,MAAA,KAAW,GAAA,IAAO,KAAA,CAAM,MAAA,KAAW,GAAA,CAAA,EAC1C;AACA,UAAA,WAAA,GAAc,KAAA;AAAA,QAChB;AAAA,MAEF;AAAA,IACF;AAEA,IAAA,IAAI,iBAAoC,EAAC;AACzC,IAAA,IAAI,eAAkC,EAAC;AACvC,IAAA,IAAI,gBAAA,GAAmB,KAAA;AACvB,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,IAAI;AACF,QAAA,MAAM,IAAA,GAAQ,MAAM,SAAA,CAAU,IAAA,CAAK,GAAA,EAAI;AAGvC,QAAA,MAAM,UAAU,IAAI,GAAA;AAAA,UAAA,CACjB,IAAA,CAAK,aAAa,EAAC,EACjB,OAAO,CAAC,CAAA,KAAM,CAAA,CAAE,MAAA,KAAW,KAAA,CAAA,IAAa,CAAA,CAAE,SAAS,KAAA,CAAS,CAAA,CAC5D,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,EAAG,EAAE,MAAM,CAAA,CAAA,EAAI,CAAA,CAAE,IAAI,CAAA,CAAE;AAAA,SACvC;AACA,QAAA,MAAM,WAAW,IAAI,GAAA;AAAA,UACnB,YAAA,CAAa,OAAA;AAAA,YAAQ,CAAC,IAAA,KACpB,IAAA,CAAK,KAAA,KAAU,KAAA,CAAA,GACX,EAAC,GACD,CAAC,CAAA,EAAG,IAAA,CAAK,MAAM,MAAM,CAAA,CAAA,EAAI,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,CAAE;AAAA;AAChD,SACF;AACA,QAAA,cAAA,GAAiB,CAAC,GAAG,OAAO,CAAA,CAAE,MAAA;AAAA,UAC5B,CAAC,OAAO,EAAE,QAAA,CAAS,IAAI,EAAE,CAAA,IAAK,eAAA,CAAgB,GAAA,CAAI,EAAE,CAAA;AAAA,SACtD;AACA,QAAA,YAAA,GAAe,CAAC,GAAG,QAAQ,CAAA,CAAE,MAAA,CAAO,CAAC,EAAA,KAAO,CAAC,OAAA,CAAQ,GAAA,CAAI,EAAE,CAAC,CAAA;AAC5D,QAAA,gBAAA,GAAmB,IAAA;AAAA,MACrB,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF;AAEA,IAAA,MAAM,YACJ,WAAA,IACA,WAAA,KAAgB,KAAA,IAChB,gBAAA,IACA,eAAe,MAAA,KAAW,CAAA;AAC5B,IAAA,MAAM,IAAA,GAAO;AAAA,MACX,EAAA,EAAI,SAAA;AAAA,MACJ,QAAQ,IAAA,CAAK,MAAA;AAAA,MACb,UAAA;AAAA,MACA,SAAA,EAAW,WAAA;AAAA,MACX,GAAI,iBAAA,KAAsB,IAAA,GAAO,EAAC,GAAI,EAAE,iBAAA,EAAkB;AAAA,MAC1D,MAAA,EAAQ,YAAA,GAAe,UAAA,CAAW,IAAA,CAAK,MAAM,CAAA,GAAI,IAAA;AAAA,MACjD,YAAA,EAAc,YAAA,GAAe,IAAA,CAAK,YAAA,GAAe,IAAA;AAAA,MACjD,SAAA,EAAW,WAAA;AAAA,MACX,IAAA;AAAA,MACA,OAAA,EAAS,KAAK,OAAA,IAAW,IAAA;AAAA,MACzB,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,gBAAA;AAAA,QACT,UAAU,YAAA,CAAa,MAAA;AAAA,QACvB,cAAA;AAAA,QACA;AAAA;AACF,KACF;AACA,IAAA,MAAM,KAAA,GAAQ;AAAA,MACZ,CAAA,EAAG,cAAc,IAAA,GAAO,MAAM,SAAS,IAAA,CAAK,MAAM,CAAA,EAAA,EAAK,UAAA,IAAc,aAAa,CAAA,CAAA,CAAA;AAAA,MAClF,YAAA,GACI,CAAA,EAAG,WAAA,KAAgB,KAAA,GAAQ,MAAA,GAAS,gBAAgB,IAAA,GAAO,IAAA,GAAO,IAAI,CAAA,OAAA,EAAU,UAAA,CAAW,IAAA,CAAK,MAAM,CAAC,CAAA,KAAA,EAAQ,IAAA,CAAK,YAAY,CAAA,EAAG,IAAA,KAAS,OAAO,EAAA,GAAK,CAAA,EAAA,EAAK,IAAI,CAAA,MAAA,CAAQ,CAAA,CAAA,GACzK,2DAAA;AAAA,MACJ,gBAAA,GACI,cAAA,CAAe,MAAA,KAAW,CAAA,GACxB,CAAA,qBAAA,EAAwB,aAAa,MAAM,CAAA,6BAAA,CAAA,GAC3C,CAAA,oBAAA,EAAuB,cAAA,CAAe,MAAM,CAAA;AAAA,EAAyD,cAAA,CAAe,GAAA,CAAI,CAAC,EAAA,KAAO,CAAA,MAAA,EAAS,EAAE,CAAA,CAAE,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,GAC3J,2CAAA;AAAA,MACJ,GAAI,YAAA,CAAa,MAAA,GAAS,CAAA,GACtB;AAAA,QACE,CAAA,MAAA,EAAS,aAAa,MAAM,CAAA,uEAAA;AAAA,UAE9B;AAAC,KACP;AACA,IAAA,OAAO;AAAA,MACL,IAAA;AAAA,MACA,KAAA,EAAO,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AAAA,MACtB,QAAA,EAAU,YAAY,CAAA,GAAI;AAAA,KAC5B;AAAA,EACF;AACF,CAAC,CAAA;;;AC1HM,IAAM,oBAAoB,aAAA,CAAc;AAAA,EAC7C,IAAA,EAAM,CAAC,SAAA,EAAW,KAAK,CAAA;AAAA,EACvB,OAAA,EAAS,8DAAA;AAAA,EACT,SAAA,EAAW,aAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,aAAA,EAAc;AAAA,EAC7C,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,QAAA;AAAA,MACN,OAAA,EAAS,4CAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,mBAAA,EAAqB,OAAA,EAAS,4BAAA,EAA6B;AAAA,IACnE;AAAA,MACE,IAAA,EAAM,kCAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU,CAAC,uCAAuC,CAAA;AAAA,EAClD,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,MAAM,IAAA,CAAK,MAAA;AAAA,MACX,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AAAA,MAC/B,gBAAA,EAAkB,UAAA,CAAW,KAAA,CAAM,gBAAgB;AAAA,KACpD,CAAA;AACD,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,EAAO,CACP,OAAA,CAAQ,GAAA,CAAI,UAAA,CAA2B,KAAK,CAAA,EAAG,cAAA,CAAe,KAAK,CAAC,CAAA;AACvE,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;AC7CM,IAAM,uBAAuB,aAAA,CAAc;AAAA,EAChD,IAAA,EAAM,CAAC,SAAA,EAAW,QAAQ,CAAA;AAAA,EAC1B,OAAA,EAAS,yBAAA;AAAA,EACT,SAAA,EAAW,gBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,MAAM,wBAAA,EAAyB;AAAA,EAC1D,YAAA,EAAc,aAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ,EAAE,IAAA,EAAM,UAAA,EAAY,OAAA,EAAS,qBAAA,EAAuB,YAAY,IAAA;AAAK,GACvE;AAAA,EACA,QAAA,EAAU,CAAC,yCAAyC,CAAA;AAAA,EACpD,cAAA,EAAgB,CAAC,EAAE,IAAA,OACjB,CAAA,sBAAA,EAAyB,IAAA,CAAK,YAAY,EAAE,CAAA,6FAAA,CAAA;AAAA,EAC9C,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,MAAO;AAAA,IAC7B,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,OAAA,CAAQ,MAAA,CAAO,EAAE,QAAA,EAAU,IAAA,CAAK,QAAA,IAAY,EAAA,EAAI;AAAA,GAC3E;AACF,CAAC,CAAA;;;ACdM,IAAM,oBAAoB,aAAA,CAAc;AAAA,EAC7C,IAAA,EAAM,CAAC,SAAA,EAAW,KAAK,CAAA;AAAA,EACvB,OAAA,EAAS,gCAAA;AAAA,EACT,SAAA,EAAW,IAAA;AAAA,EACX,WAAA,EAAa,cAAA;AAAA,EACb,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,aAAA,EAAc;AAAA,EAC5C,YAAA,EAAc,MAAA;AAAA,EACd,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,YAAY,OAAA,EAAS,oBAAA,EAAsB,UAAA,EAAY,IAAA,EAAM,CAAA;AAAA,EAC5E,QAAA,EAAU,CAAC,gCAAgC,CAAA;AAAA,EAC3C,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,KAAM;AAC5B,IAAA,MAAM,QAAA,GAAW,KAAK,QAAA,IAAY,EAAA;AAClC,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAAI,MAAA,GAAS,OAAA,CAAQ,IAAA,CAAK,EAAE,QAAA,EAAU,CAAA;AAC3D,IAAA,MAAM,MAAA,GAAS,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA;AAC5B,IAAA,IAAI,WAAW,MAAA,EAAW;AACxB,MAAA,MAAM,IAAI,WAAA,CAAY;AAAA,QACpB,MAAA,EAAQ,GAAA;AAAA,QACR,IAAA,EAAM,kBAAA;AAAA,QACN,IAAA,EAAM,WAAA;AAAA,QACN,OAAA,EAAS,uBAAuB,QAAQ,CAAA,CAAA;AAAA,QACxC,UAAA,EAAY;AAAA,OACb,CAAA;AAAA,IACH;AACA,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;ACzBM,IAAM,uBAAuB,aAAA,CAAc;AAAA,EAChD,IAAA,EAAM,CAAC,SAAA,EAAW,QAAQ,CAAA;AAAA,EAC1B,OAAA,EAAS,+DAAA;AAAA,EACT,SAAA,EAAW,gBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,+BAAA,EAAgC;AAAA,EAC9D,YAAA,EAAc,MAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ,EAAE,IAAA,EAAM,UAAA,EAAY,OAAA,EAAS,sBAAA,EAAwB,YAAY,IAAA;AAAK,GACxE;AAAA,EACA,QAAA,EAAU,CAAC,0DAA0D,CAAA;AAAA,EACrE,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,MAAO;AAAA,IAC7B,MAAM,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,QAAQ,MAAA,CAAO;AAAA,MACtC,QAAA,EAAU,KAAK,QAAA,IAAY;AAAA,KAC5B;AAAA,GACH;AACF,CAAC,CAAA;;;ACCM,IAAM,qBAAqB,aAAA,CAAc;AAAA,EAC9C,IAAA,EAAM,CAAC,SAAA,EAAW,MAAM,CAAA;AAAA,EACxB,OAAA,EAAS,8DAAA;AAAA,EACT,SAAA,EAAW,cAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,aAAA,EAAc;AAAA,EAC5C,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,iBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,uBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,YAAA,EAAc,KAAA,CAAM,YAAA,KAAiB,IAAA,GAAO,IAAA,GAAO,MAAA;AAAA,MACnD,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM;AAAA,KAChC,CAAA;AACD,IAAA,MAAM,OAAA,GAAU,GAAA,CAAI,MAAA,EAAO,CAAE,OAAA;AAC7B,IAAA,IAAI,KAAA,CAAM,QAAQ,IAAA,EAAM;AACtB,MAAA,MAAM,OAAO,MAAM,UAAA;AAAA,QAAW,GAAA;AAAA,QAAK,CAAC,WAClC,OAAA,CAAQ,IAAA;AAAA,UACN,UAAA,CAA6B;AAAA,YAC3B,GAAG,KAAA;AAAA,YACH,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA;AAAO,WAC1C;AAAA;AACH,OACF;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM,EAAE;AAAA,QACjE,KAAA,EAAO,cAAc,IAAI;AAAA,OAC3B;AAAA,IACF;AACA,IAAA,MAAM,SAAS,MAAM,OAAA,CAAQ,IAAA,CAAK,UAAA,CAA6B,KAAK,CAAC,CAAA;AACrE,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,aAAA,CAAc,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,EAC3D;AACF,CAAC,CAAA;AAED,SAAS,cAAc,IAAA,EAAsC;AAC3D,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,2BAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAY,IAAA,EAAgD;AAAA,IACjE,EAAE,GAAA,EAAK,UAAA,EAAY,MAAA,EAAQ,WAAA,EAAY;AAAA,IACvC,EAAE,GAAA,EAAK,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAO;AAAA,IAC9B,EAAE,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAS;AAAA,IAClC,EAAE,GAAA,EAAK,UAAA,EAAY,MAAA,EAAQ,UAAA;AAAW,GACvC,CAAA;AACH;;;AChEO,IAAM,uBAAuB,aAAA,CAAc;AAAA,EAChD,IAAA,EAAM,CAAC,SAAA,EAAW,QAAQ,CAAA;AAAA,EAC1B,OAAA,EAAS,6CAAA;AAAA,EACT,SAAA,EAAW,wBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAM,wBAAA,EAAyB;AAAA,EACzD,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ,EAAE,IAAA,EAAM,UAAA,EAAY,OAAA,EAAS,qBAAA,EAAuB,YAAY,IAAA;AAAK,GACvE;AAAA,EACA,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,8BAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,8BAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,kCAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,iBAAA,EAAmB,UAAA,CAAW,KAAA,CAAM,iBAAiB,CAAA;AAAA,MACrD,gBAAA,EAAkB,UAAA,CAAW,KAAA,CAAM,gBAAgB,CAAA;AAAA,MACnD,mBAAA,EAAqB,UAAA,CAAW,KAAA,CAAM,mBAAmB;AAAA,KAC1D,CAAA;AACD,IAAA,IAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,WAAW,CAAA,EAAG;AACnC,MAAA,MAAM,IAAI,cAAc,iDAA4C,CAAA;AAAA,IACtE;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAAI,MAAA,GAAS,OAAA,CAAQ,cAAA;AAAA,MACxC,UAAA,CAAsC;AAAA,QACpC,GAAG,KAAA;AAAA,QACH,QAAA,EAAU,KAAK,QAAA,IAAY;AAAA,OAC5B;AAAA,KACH;AACA,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;ACtDM,IAAM,uBAAuB,aAAA,CAAc;AAAA,EAChD,IAAA,EAAM,CAAC,SAAA,EAAW,QAAQ,CAAA;AAAA,EAC1B,OAAA,EAAS,sDAAA;AAAA,EACT,SAAA,EAAW,gBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,+BAAA,EAAgC;AAAA,EAC/D,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ,EAAE,IAAA,EAAM,UAAA,EAAY,OAAA,EAAS,qBAAA,EAAuB,YAAY,IAAA;AAAK,GACvE;AAAA,EACA,QAAA,EAAU,CAAC,mCAAmC,CAAA;AAAA,EAC9C,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,MAAO;AAAA,IAC7B,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,OAAA,CAAQ,MAAA,CAAO,EAAE,QAAA,EAAU,IAAA,CAAK,QAAA,IAAY,EAAA,EAAI;AAAA,GAC3E;AACF,CAAC,CAAA;ACED,IAAM,mCAAmB,IAAI,GAAA,CAAI,CAAC,WAAA,EAAa,eAAe,CAAC,CAAA;AAI/D,SAAS,aAAa,KAAA,EAAoC;AACxD,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,MAAA;AAC7C;AAEO,IAAM,qBAAqB,aAAA,CAAc;AAAA,EAC9C,IAAA,EAAM,CAAC,QAAA,EAAU,OAAO,CAAA;AAAA,EACxB,OAAA,EACE,4EAAA;AAAA,EACF,SAAA,EAAW,mBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,kBAAA,EAAmB;AAAA,EAClD,YAAA,EAAc,OAAA;AAAA,EACd,UAAA,EAAY,IAAA;AAAA,EACZ,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,eAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,kBAAA,EAAoB,OAAA,EAAS,oBAAA,EAAqB;AAAA,IAC1D;AAAA,MACE,IAAA,EAAM,uBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,6BAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,oGAAA;AAAA,IACA,qGAAA;AAAA,IACA,CAAA,8EAAA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,YAAY,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,MAAM,QAAQ,CAAA;AAC9D,IAAA,MAAM,cAAA,GAAiB,UAAA,CAAW,KAAA,CAAM,cAAc,CAAA;AACtD,IAAA,IAAI,mBAAmB,MAAA,IAAa,CAAC,gBAAA,CAAiB,GAAA,CAAI,cAAc,CAAA,EAAG;AACzE,MAAA,MAAM,IAAI,aAAA;AAAA,QACR,8BAA8B,cAAc,CAAA,uCAAA;AAAA,OAC9C;AAAA,IACF;AACA,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,SAAA;AAAA,MACA,OAAA,EAAS,YAAA,CAAa,KAAA,CAAM,OAAO,CAAA;AAAA,MACnC,WAAA,EAAa,YAAA,CAAa,KAAA,CAAM,WAAW,CAAA;AAAA,MAC3C;AAAA,KACD,CAAA;AACD,IAAA,IAAI,OAAO,MAAM,SAAA,KAAc,QAAA,IAAY,MAAM,SAAA,CAAU,IAAA,OAAW,EAAA,EAAI;AACxE,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAAS,WAAA,CAAY,OAAA,CAAQ,8BAA8B,CAAA;AACjE,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,GACA,MAAA,CAAO,UAAA,CAAW,UAAA,CAA4B,KAAK,CAAA,EAAG;AAAA,QACrD,MAAA;AAAA,QACA,GAAI,cAAA,CAAe,KAAK,CAAA,IAAK;AAAC,OAC/B,CAAA;AACH,MAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,IACxB,SAAS,KAAA,EAAO;AACd,MAAA,IAAI,OAAO,OAAA,EAAS;AAClB,QAAA,MAAM,MAAA,CAAO,MAAA;AAAA,MACf;AACA,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF;AACF,CAAC,CAAA;;;AChFM,IAAM,qBAAqB,aAAA,CAAc;AAAA,EAC9C,IAAA,EAAM,CAAC,QAAA,EAAU,OAAO,CAAA;AAAA,EACxB,OAAA,EAAS,4DAAA;AAAA,EACT,SAAA,EAAW,cAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,4BAAA,EAA6B;AAAA,EAC5D,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,WAAW,OAAA,EAAS,oBAAA,EAAsB,UAAA,EAAY,IAAA,EAAM,CAAA;AAAA,EAC3E,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,yBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,gDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,cAAA,GAAiB,UAAA,CAAW,KAAA,CAAM,cAAc,CAAA;AACtD,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,GAAS,MAAA,CAAO,KAAA;AAAA,QAC9B,UAAA,CAA4B;AAAA,UAC1B,OAAA,EAAS,KAAK,OAAA,IAAW,EAAA;AAAA,UACzB,GAAI,cAAA,KAAmB,MAAA,GAAY,EAAC,GAAI,EAAE,cAAA;AAAe,SAC1D,CAAA;AAAA,QACD,eAAe,KAAK;AAAA;AACtB,KACF;AAAA,EACF;AACF,CAAC,CAAA;;;AC1BM,IAAM,wCAAwC,aAAA,CAAc;AAAA,EACjE,IAAA,EAAM,CAAC,QAAA,EAAU,6BAA6B,CAAA;AAAA,EAC9C,OAAA,EACE,qFAAA;AAAA,EACF,SAAA,EAAW,iCAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,4CAAA,EAA6C;AAAA,EAC5E,YAAA,EAAc,OAAA;AAAA,EACd,UAAA,EAAY,IAAA;AAAA,EACZ,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,WAAW,OAAA,EAAS,mBAAA,EAAqB,UAAA,EAAY,IAAA,EAAM,CAAA;AAAA,EAC1E,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,qBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,kBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,uBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,yBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,0BAAA;AAAA,MACN,OAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,gHAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,QAAA,GAAW,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AACxC,IAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AACxC,IAAA,MAAM,WAAA,GAAc,UAAA,CAAW,KAAA,CAAM,WAAW,CAAA;AAChD,IAAA,MAAM,cAAA,GAAiB,UAAA,CAAW,KAAA,CAAM,cAAc,CAAA;AACtD,IAAA,MAAM,SAAA,GAAY,aAAA,CAAc,KAAA,CAAM,SAAS,CAAA;AAC/C,IAAA,OAAO;AAAA;AAAA;AAAA,MAGL,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,GAAS,MAAA,CAAO,wBAAA;AAAA,QAC9B,UAAA,CAA0C;AAAA,UACxC,OAAA,EAAS,KAAK,OAAA,IAAW,EAAA;AAAA,UACzB,QAAA;AAAA,UACA,GAAI,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA,EAAQ;AAAA,UAC3C,GAAI,WAAA,KAAgB,MAAA,GAAY,EAAC,GAAI,EAAE,WAAA,EAAY;AAAA,UACnD,GAAI,cAAA,KAAmB,MAAA,GAAY,EAAC,GAAI,EAAE,cAAA,EAAe;AAAA,UACzD,GAAI,SAAA,KAAc,MAAA,GAAY,EAAC,GAAI,EAAE,SAAA;AAAU,SAChD,CAAA;AAAA,QACD,eAAe,KAAK;AAAA;AACtB,KACF;AAAA,EACF;AACF,CAAC,CAAA;;;AC7EM,IAAM,sBAAsB,aAAA,CAAc;AAAA,EAC/C,IAAA,EAAM,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,EACzB,OAAA,EAAS,+DAAA;AAAA,EACT,SAAA,EAAW,eAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,MAAM,sBAAA,EAAuB;AAAA,EACxD,YAAA,EAAc,aAAA;AAAA,EACd,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,WAAW,OAAA,EAAS,qBAAA,EAAuB,UAAA,EAAY,IAAA,EAAM,CAAA;AAAA,EAC5E,QAAA,EAAU,CAAC,uDAAuD,CAAA;AAAA,EAClE,cAAA,EAAgB,CAAC,EAAE,IAAA,OACjB,CAAA,yBAAA,EAA4B,IAAA,CAAK,WAAW,EAAE,CAAA,6CAAA,CAAA;AAAA,EAChD,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,MAAO;AAAA,IAC7B,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,MAAA,CAAO,MAAA,CAAO,EAAE,OAAA,EAAS,IAAA,CAAK,OAAA,IAAW,EAAA,EAAI;AAAA,GACxE;AACF,CAAC,CAAA;;;ACFM,IAAM,oBAAoB,aAAA,CAAc;AAAA,EAC7C,IAAA,EAAM,CAAC,QAAA,EAAU,MAAM,CAAA;AAAA,EACvB,OAAA,EACE,6EAAA;AAAA,EACF,SAAA,EAAW,aAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAM,sBAAA,EAAuB;AAAA,EACvD,YAAA,EAAc,OAAA;AAAA,EACd,UAAA,EAAY,IAAA;AAAA,EACZ,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,WAAW,OAAA,EAAS,mBAAA,EAAqB,UAAA,EAAY,IAAA,EAAM,CAAA;AAAA,EAC1E,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,sBAAA,EAAuB;AAAA,IAC3D;AAAA,MACE,IAAA,EAAM,yBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,0BAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,uBAAA;AAAA,MACN,OAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,gFAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AAAA,MAC/B,cAAA,EAAgB,UAAA,CAAW,KAAA,CAAM,cAAc,CAAA;AAAA,MAC/C,WAAA,EAAa,aAAA,CAAc,KAAA,CAAM,WAAW,CAAA;AAAA,MAC5C,WAAA,EAAa,UAAA,CAAW,KAAA,CAAM,WAAW;AAAA,KAC1C,CAAA;AACD,IAAA,MAAM,eAAe,OAAO,KAAA,CAAM,MAAA,KAAW,QAAA,IAAY,MAAM,MAAA,KAAW,EAAA;AAC1E,IAAA,MAAM,iBACJ,OAAO,KAAA,CAAM,WAAA,KAAgB,QAAA,IAAY,MAAM,WAAA,KAAgB,EAAA;AACjE,IAAA,IAAI,EAAE,gBAAgB,cAAA,CAAA,EAAiB;AACrC,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AAGA,IAAA,QAAA;AAAA,MACE,GAAA;AAAA,MACA,eACI,wCAAA,GACA;AAAA,KACN;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,GACA,MAAA,CAAO,IAAA;AAAA,MACN,UAAA,CAA2B,EAAE,GAAG,KAAA,EAAO,SAAS,IAAA,CAAK,OAAA,IAAW,IAAI,CAAA;AAAA,MACpE,EAAE,WAAW,IAAA;AAAQ,KACvB;AACF,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;AC/DM,IAAM,sBAAsB,aAAA,CAAc;AAAA,EAC/C,IAAA,EAAM,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,EACzB,OAAA,EAAS,+DAAA;AAAA,EACT,SAAA,EAAW,eAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,6BAAA,EAA8B;AAAA,EAC7D,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,WAAW,OAAA,EAAS,qBAAA,EAAuB,UAAA,EAAY,IAAA,EAAM,CAAA;AAAA,EAC5E,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,uBAAA;AAAA,MACN,OAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,MACE,IAAA,EAAM,wBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,WAAA;AAAA,MACN,OAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,oEAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,QAAA,GAAW,UAAA,CAAW,KAAA,CAAM,QAAQ,CAAA;AAC1C,IAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,YAAA,GAAe,UAAA,CAAW,KAAA,CAAM,YAAY,CAAA;AAClD,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,GAAS,MAAA,CAAO,MAAA;AAAA,QAC9B,UAAA,CAA6B;AAAA,UAC3B,OAAA,EAAS,KAAK,OAAA,IAAW,EAAA;AAAA,UACzB,QAAA;AAAA,UACA,GAAI,YAAA,KAAiB,MAAA,GAAY,EAAC,GAAI,EAAE,YAAA,EAAa;AAAA;AAAA,UAErD,GAAI,MAAM,MAAA,KAAW,IAAA,GAAO,EAAE,OAAA,EAAS,IAAA,KAAS;AAAC,SAClD,CAAA;AAAA,QACD,eAAe,KAAK;AAAA;AACtB,KACF;AAAA,EACF;AACF,CAAC,CAAA;;;AC9CM,IAAM,wBAAwB,aAAA,CAAc;AAAA,EACjD,IAAA,EAAM,CAAC,QAAA,EAAU,UAAU,CAAA;AAAA,EAC3B,OAAA,EAAS,oDAAA;AAAA,EACT,SAAA,EAAW,iBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,YAAA,EAAa;AAAA,EAC5C,YAAA,EAAc,OAAA;AAAA,EACd,UAAA,EAAY,IAAA;AAAA,EACZ,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,0BAAA,EAA2B;AAAA,IAC/D;AAAA,MACE,IAAA,EAAM,gCAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,0BAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,sBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,uBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,4EAAA;AAAA,IACA,0EAAA;AAAA,IACA,oFAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AAAA,MAC/B,gBAAA,EAAkB,UAAA,CAAW,KAAA,CAAM,gBAAgB,CAAA;AAAA,MACnD,WAAA,EAAa,aAAA,CAAc,KAAA,CAAM,WAAW,CAAA;AAAA,MAC5C,OAAA,EAAS,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AAAA,MACjC,WAAA,EAAa,UAAA,CAAW,KAAA,CAAM,WAAW;AAAA,KAC1C,CAAA;AACD,IAAA,IAAI,OAAO,KAAA,CAAM,MAAA,KAAW,QAAA,IAAY,KAAA,CAAM,WAAW,EAAA,EAAI;AAC3D,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,QAAA,CAAS,KAAK,2CAAsC,CAAA;AACpD,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,GACA,MAAA,CAAO,QAAA,CAAS,UAAA,CAA+B,KAAK,CAAA,EAAG;AAAA,MACtD,SAAA,EAAW,IAAA;AAAA,MACX,GAAI,cAAA,CAAe,KAAK,CAAA,IAAK;AAAC,KAC/B,CAAA;AACH,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;ACpEM,IAAM,mBAAmB,aAAA,CAAc;AAAA,EAC5C,IAAA,EAAM,CAAC,QAAA,EAAU,KAAK,CAAA;AAAA,EACtB,OAAA,EAAS,8BAAA;AAAA,EACT,SAAA,EAAW,IAAA;AAAA,EACX,WAAA,EAAa,aAAA;AAAA,EACb,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,YAAA,EAAa;AAAA,EAC3C,YAAA,EAAc,MAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,SAAA;AAAA,MACN,OAAA,EAAS,8CAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,oBAAA;AAAA,MACN,OAAA,EAAS;AAAA;AACX,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,8CAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,OAAA,GAAU,KAAK,OAAA,IAAW,EAAA;AAChC,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AACxC,IAAA,MAAM,SAAS,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,OAAO,IAAA,CAAK;AAAA,MAC5C,OAAA;AAAA,MACA,GAAI,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA;AAAQ,KAC5C,CAAA;AACD,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,IAAA,CAAK,CAAC,CAAA;AAC3B,IAAA,IAAI,UAAU,MAAA,EAAW;AACvB,MAAA,MAAM,IAAI,WAAA,CAAY;AAAA,QACpB,MAAA,EAAQ,GAAA;AAAA,QACR,IAAA,EAAM,iBAAA;AAAA,QACN,IAAA,EAAM,WAAA;AAAA,QACN,OAAA,EAAS,6BAA6B,OAAO,CAAA,CAAA;AAAA,QAC7C,UAAA,EAAY;AAAA,OACb,CAAA;AAAA,IACH;AACA,IAAA,OAAO,EAAE,MAAM,KAAA,EAAM;AAAA,EACvB;AACF,CAAC,CAAA;;;ACvCM,IAAM,wCAAwC,aAAA,CAAc;AAAA,EACjE,IAAA,EAAM,CAAC,QAAA,EAAU,6BAA6B,CAAA;AAAA,EAC9C,OAAA,EACE,yEAAA;AAAA,EACF,SAAA,EAAW,iCAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,4CAAA,EAA6C;AAAA,EAC3E,YAAA,EAAc,MAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,SAAA;AAAA,MACN,OAAA,EAAS,4BAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,OAAA,EACE;AAAA;AACJ,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,sEAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,MAAO;AAAA,IACpC,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,GAAS,MAAA,CAAO,wBAAA;AAAA,MAC9B,UAAA,CAA0C;AAAA,QACxC,OAAA,EAAS,KAAK,OAAA,IAAW,EAAA;AAAA,QACzB,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM;AAAA,OAChC;AAAA;AACH,GACF;AACF,CAAC,CAAA;;;AC5BM,IAAM,4BAA4B,aAAA,CAAc;AAAA,EACrD,IAAA,EAAM,CAAC,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAA;AAAA,EACnC,OAAA,EAAS,qCAAA;AAAA,EACT,SAAA,EAAW,oBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,kBAAA,EAAmB;AAAA,EAClD,YAAA,EAAc,OAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,eAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU,CAAC,8CAA8C,CAAA;AAAA,EACzD,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM,EAAE,MAAM,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA,EAAG,CAAA;AAC/D,IAAA,IAAI,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,IAAY,KAAA,CAAM,SAAS,EAAA,EAAI;AACvD,MAAA,MAAM,IAAI,cAAc,iDAAiD,CAAA;AAAA,IAC3E;AACA,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,MAAM,GAAA,CACT,MAAA,GACA,WAAA,CAAY,MAAA;AAAA,QACX,WAAkC,KAAK,CAAA;AAAA,QACvC,eAAe,KAAK;AAAA;AACtB,KACJ;AAAA,EACF;AACF,CAAC,CAAA;;;ACvCM,IAAM,4BAA4B,aAAA,CAAc;AAAA,EACrD,IAAA,EAAM,CAAC,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAA;AAAA,EACnC,OAAA,EAAS,8DAAA;AAAA,EACT,SAAA,EAAW,oBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,MAAM,4BAAA,EAA6B;AAAA,EAC9D,YAAA,EAAc,aAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,SAAA;AAAA,MACN,OAAA,EAAS,qDAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,QAAA,EAAU,CAAC,iDAAiD,CAAA;AAAA,EAC5D,cAAA,EAAgB,CAAC,EAAE,IAAA,OACjB,CAAA,mBAAA,EAAsB,IAAA,CAAK,WAAW,EAAE,CAAA,sEAAA,CAAA;AAAA,EAC1C,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,MAAO;AAAA,IAC7B,IAAA,EAAM,MAAM,GAAA,CACT,MAAA,GACA,WAAA,CAAY,MAAA;AAAA,MACX,WAAkC,EAAE,OAAA,EAAS,IAAA,CAAK,OAAA,IAAW,IAAI;AAAA;AACnE,GACJ;AACF,CAAC,CAAA;;;ACTM,IAAM,0BAA0B,aAAA,CAAc;AAAA,EACnD,IAAA,EAAM,CAAC,QAAA,EAAU,QAAA,EAAU,MAAM,CAAA;AAAA,EACjC,OAAA,EAAS,yDAAA;AAAA,EACT,SAAA,EAAW,kBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,kBAAA,EAAmB;AAAA,EACjD,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO,CAAC,UAAA,EAAY,WAAA,EAAa,UAAU,UAAU,CAAA;AAAA,EACrD,QAAA,EAAU;AAAA,IACR,6BAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM;AAAA,KAChC,CAAA;AACD,IAAA,MAAM,YAAY,CAAC,MAAA,KACjB,GAAA,CAAI,MAAA,GAAS,WAAA,CAAY,IAAA;AAAA,MACvB,UAAA,CAAiC;AAAA,QAC/B,GAAG,KAAA;AAAA,QACH,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA;AAAO,OAC1C;AAAA,KACH;AACF,IAAA,IAAI,KAAA,CAAM,QAAQ,IAAA,EAAM;AACtB,MAAA,MAAM,IAAA,GAAO,MAAM,UAAA,CAAW,GAAA,EAAK,SAAS,CAAA;AAC5C,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM,EAAE;AAAA,QACjE,KAAA,EAAO,kBAAkB,IAAI;AAAA,OAC/B;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,SAAA,CAAU,MAAS,CAAA;AACxC,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,iBAAA,CAAkB,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,EAC/D;AACF,CAAC,CAAA;AAED,SAAS,kBAAkB,IAAA,EAAsC;AAC/D,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,wBAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAY,IAAA,EAAgD;AAAA,IACjE,EAAE,GAAA,EAAK,SAAA,EAAW,MAAA,EAAQ,UAAA,EAAW;AAAA,IACrC,EAAE,GAAA,EAAK,WAAA,EAAa,MAAA,EAAQ,OAAA;AAAQ,GACrC,CAAA;AACH;;;ACnDO,IAAM,4BAA4B,aAAA,CAAc;AAAA,EACrD,IAAA,EAAM,CAAC,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAA;AAAA,EACnC,OAAA,EAAS,gCAAA;AAAA,EACT,SAAA,EAAW,oBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,OAAA,EAAS,MAAM,4BAAA,EAA6B;AAAA,EAC7D,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,SAAA;AAAA,MACN,OAAA,EAAS,qDAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAA,EAAS,8BAAA,EAA+B;AAAA,IACjE;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM,EAAE,MAAM,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA,EAAG,CAAA;AAC/D,IAAA,IAAI,OAAO,KAAA,CAAM,IAAA,KAAS,QAAA,IAAY,KAAA,CAAM,SAAS,EAAA,EAAI;AACvD,MAAA,MAAM,IAAI,cAAc,iDAAiD,CAAA;AAAA,IAC3E;AACA,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,GAAS,WAAA,CAAY,MAAA;AAAA,QACnC,UAAA,CAAkC;AAAA,UAChC,GAAG,KAAA;AAAA,UACH,OAAA,EAAS,KAAK,OAAA,IAAW;AAAA,SAC1B;AAAA;AACH,KACF;AAAA,EACF;AACF,CAAC,CAAA;;;AChCM,IAAM,sBAAsB,aAAA,CAAc;AAAA,EAC/C,IAAA,EAAM,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,EACzB,OAAA,EAAS,6DAAA;AAAA,EACT,SAAA,EAAW,eAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,mBAAA,EAAoB;AAAA,EACnD,YAAA,EAAc,OAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,eAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,mBAAA,EAAqB,OAAA,EAAS,kCAAA,EAAmC;AAAA,IACzE,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,cAAA,EAAe;AAAA,IACnD;AAAA,MACE,IAAA,EAAM,kBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,uBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,yFAAA;AAAA,IACA,iGAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,UAAU,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,MAAM,QAAQ,CAAA;AAC5D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,OAAA;AAAA,MACA,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AAAA,MAC/B,KAAA,EAAO,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC7B,OAAA,EAAS,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AAAA,MACjC,WAAA,EAAa,UAAA,CAAW,KAAA,CAAM,WAAW;AAAA,KAC1C,CAAA;AACD,IAAA,IAAI,OAAO,MAAM,OAAA,KAAY,QAAA,IAAY,MAAM,OAAA,CAAQ,IAAA,OAAW,EAAA,EAAI;AACpE,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,IAAI,OAAO,KAAA,CAAM,MAAA,KAAW,QAAA,EAAU;AACpC,MAAA,MAAM,IAAI,cAAc,0CAA0C,CAAA;AAAA,IACpE;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,EAAO,CACP,MAAA,CAAO,MAAA,CAAO,UAAA,CAA6B,KAAK,CAAA,EAAG,cAAA,CAAe,KAAK,CAAC,CAAA;AAC3E,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;ACtDM,IAAM,2BAA2B,aAAA,CAAc;AAAA,EACpD,IAAA,EAAM,CAAC,QAAA,EAAU,cAAc,CAAA;AAAA,EAC/B,OAAA,EACE,uEAAA;AAAA,EACF,SAAA,EAAW,oBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,kBAAA,EAAmB;AAAA,EAClD,YAAA,EAAc,OAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,kBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,iBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,mBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,uBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,6FAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,QAAA,GAAW,UAAA,CAAW,KAAA,CAAM,GAAG,CAAA;AACrC,IAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,KAAA,GAAQ,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AACpC,IAAA,MAAM,MAAA,GAAS,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AACtC,IAAA,MAAM,WAAA,GAAc,UAAA,CAAW,KAAA,CAAM,WAAW,CAAA;AAChD,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,GAAS,MAAA,CAAO,WAAA;AAAA,QAC9B,UAAA,CAA6B;AAAA,UAC3B,QAAA;AAAA,UACA,GAAI,KAAA,KAAU,MAAA,GAAY,EAAC,GAAI,EAAE,KAAA,EAAM;AAAA,UACvC,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA,EAAO;AAAA,UACzC,GAAI,WAAA,KAAgB,MAAA,GAAY,EAAC,GAAI,EAAE,WAAA;AAAY,SACpD,CAAA;AAAA,QACD,eAAe,KAAK;AAAA;AACtB,KACF;AAAA,EACF;AACF,CAAC,CAAA;;;AC9CM,IAAM,oBAAoB,aAAA,CAAc;AAAA,EAC7C,IAAA,EAAM,CAAC,QAAA,EAAU,MAAM,CAAA;AAAA,EACvB,OAAA,EAAS,4CAAA;AAAA,EACT,SAAA,EAAW,aAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,YAAA,EAAa;AAAA,EAC3C,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,mBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,sBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,iBAAA,EAAmB,OAAA,EAAS,wBAAA,EAAyB;AAAA,IAC7D,EAAE,IAAA,EAAM,yBAAA,EAA2B,OAAA,EAAS,2BAAA,EAA4B;AAAA,IACxE,EAAE,IAAA,EAAM,uBAAA,EAAyB,OAAA,EAAS,4BAAA,EAA6B;AAAA,IACvE,EAAE,IAAA,EAAM,yBAAA,EAA2B,OAAA,EAAS,2BAAA,EAA4B;AAAA,IACxE,EAAE,IAAA,EAAM,uBAAA,EAAyB,OAAA,EAAS,4BAAA,EAA6B;AAAA,IACvE,UAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,mDAAA;AAAA,IACA,oEAAA;AAAA,IACA,6DAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AAAA,MAC/B,OAAA,EAAS,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AAAA,MACjC,IAAA,EAAM,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA;AAAA,MAC3B,KAAA,EAAO,UAAA,CAAW,KAAA,CAAM,KAAK,CAAA;AAAA,MAC7B,aAAA,EAAe,UAAA,CAAW,KAAA,CAAM,aAAa,CAAA;AAAA,MAC7C,WAAA,EAAa,UAAA,CAAW,KAAA,CAAM,WAAW,CAAA;AAAA,MACzC,aAAA,EAAe,UAAA,CAAW,KAAA,CAAM,aAAa,CAAA;AAAA,MAC7C,WAAA,EAAa,UAAA,CAAW,KAAA,CAAM,WAAW,CAAA;AAAA,MACzC,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM;AAAA,KAChC,CAAA;AACD,IAAA,MAAM,MAAA,GAAS,GAAA,CAAI,MAAA,EAAO,CAAE,MAAA;AAC5B,IAAA,IAAI,KAAA,CAAM,QAAQ,IAAA,EAAM;AACtB,MAAA,MAAM,OAAO,MAAM,UAAA;AAAA,QAAW,GAAA;AAAA,QAAK,CAAC,WAClC,MAAA,CAAO,IAAA;AAAA,UACL,UAAA,CAA4B;AAAA,YAC1B,GAAG,KAAA;AAAA,YACH,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA;AAAO,WAC1C;AAAA;AACH,OACF;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM,EAAE;AAAA,QACjE,KAAA,EAAO,aAAa,IAAI;AAAA,OAC1B;AAAA,IACF;AACA,IAAA,MAAM,SAAS,MAAM,MAAA,CAAO,IAAA,CAAK,UAAA,CAA4B,KAAK,CAAC,CAAA;AACnE,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,YAAA,CAAa,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,EAC1D;AACF,CAAC,CAAA;AAED,SAAS,aAAa,IAAA,EAAsC;AAC1D,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,yBAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAY,IAAA,EAAgD;AAAA,IACjE,EAAE,GAAA,EAAK,SAAA,EAAW,MAAA,EAAQ,UAAA,EAAW;AAAA,IACrC,EAAE,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,OAAA,EAAQ;AAAA,IAChC,EAAE,GAAA,EAAK,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAS;AAAA,IAClC,EAAE,GAAA,EAAK,WAAA,EAAa,MAAA,EAAQ,OAAA,EAAQ;AAAA,IACpC,EAAE,GAAA,EAAK,WAAA,EAAa,MAAA,EAAQ,SAAA;AAAU,GACvC,CAAA;AACH;;;ACzFO,IAAM,8BAA8B,aAAA,CAAc;AAAA,EACvD,IAAA,EAAM,CAAC,QAAA,EAAU,iBAAiB,CAAA;AAAA,EAClC,OAAA,EAAS,0DAAA;AAAA,EACT,SAAA,EAAW,uBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,sCAAA,EAAuC;AAAA,EACtE,YAAA,EAAc,OAAA;AAAA,EACd,UAAA,EAAY,IAAA;AAAA,EACZ,IAAA,EAAM;AAAA,IACJ,EAAE,IAAA,EAAM,SAAA,EAAW,OAAA,EAAS,sBAAA,EAAwB,YAAY,IAAA;AAAK,GACvE;AAAA,EACA,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,oBAAA;AAAA,MACN,OAAA,EACE;AAAA,KACJ;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,0DAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,OAAA,GAAU,aAAA,CAAc,KAAA,CAAM,OAAO,CAAA;AAC3C,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,GAAS,MAAA,CAAO,cAAA;AAAA,QAC9B,UAAA,CAAqC;AAAA,UACnC,OAAA,EAAS,KAAK,OAAA,IAAW,EAAA;AAAA,UACzB,GAAI,OAAA,KAAY,MAAA,GAAY,EAAC,GAAI,EAAE,OAAA;AAAQ,SAC5C,CAAA;AAAA,QACD,eAAe,KAAK;AAAA;AACtB,KACF;AAAA,EACF;AACF,CAAC,CAAA;;;ACvCM,IAAM,uBAAuB,aAAA,CAAc;AAAA,EAChD,IAAA,EAAM,CAAC,QAAA,EAAU,SAAS,CAAA;AAAA,EAC1B,OAAA,EAAS,gEAAA;AAAA,EACT,SAAA,EAAW,gBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,8BAAA,EAA+B;AAAA,EAC9D,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ,EAAE,IAAA,EAAM,SAAA,EAAW,OAAA,EAAS,sBAAA,EAAwB,YAAY,IAAA;AAAK,GACvE;AAAA;AAAA,EAEA,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,kBAAA,EAAoB,OAAA,EAAS,2BAAA,EAA4B;AAAA,IACjE;AAAA,GACF;AAAA,EACA,QAAA,EAAU,CAAC,iEAAiE,CAAA;AAAA,EAC5E,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,KAAA,CAAM,SAAA,EAAW,cAAc,CAAA;AACvD,IAAA,IAAI,YAAY,MAAA,EAAW;AACzB,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,GACA,MAAA,CAAO,OAAA;AAAA,MACN,EAAE,OAAA,EAAS,IAAA,CAAK,OAAA,IAAW,IAAI,OAAA,EAAQ;AAAA,MACvC,eAAe,KAAK;AAAA,KACtB;AACF,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;ACpBM,IAAM,oBAAoB,aAAA,CAAc;AAAA,EAC7C,IAAA,EAAM,CAAC,QAAA,EAAU,MAAM,CAAA;AAAA,EACvB,OAAA,EAAS,4DAAA;AAAA,EACT,SAAA,EAAW,aAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,WAAA,EAAY;AAAA,EAC3C,YAAA,EAAc,aAAA;AAAA,EACd,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,WAAW,OAAA,EAAS,mBAAA,EAAqB,UAAA,EAAY,IAAA,EAAM,CAAA;AAAA,EAC1E,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,QAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,MACE,IAAA,EAAM,kBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,kBAAA,EAAoB,OAAA,EAAS,cAAA,EAAe;AAAA,IACpD,EAAE,IAAA,EAAM,yBAAA,EAA2B,OAAA,EAAS,2BAAA,EAA4B;AAAA,IACxE,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAA,EAAS,4BAAA,EAA6B;AAAA,IACrE;AAAA,MACE,IAAA,EAAM,qBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,2EAAA;AAAA,IACA,wFAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,cAAA,EAAgB,CAAC,EAAE,IAAA,EAAM,OAAM,KAAM;AAGnC,IAAA,MAAM,MAAA,GAASC,iBAAAA,CAAiB,KAAA,CAAM,KAAK,CAAA;AAC3C,IAAA,MAAM,MAAA,GAAS,KAAA,CAAM,IAAA,KAAS,IAAA,IAAQ,QAAQ,IAAA,KAAS,IAAA;AACvD,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA;AAAA,IACF;AACA,IAAA,MAAM,WAAW,UAAA,CAAW,KAAA,CAAM,QAAQ,CAAA,IAAKC,SAAAA,CAAS,QAAQ,UAAU,CAAA;AAC1E,IAAA,MAAM,aACJ,UAAA,CAAW,KAAA,CAAM,UAAU,CAAA,IAAKA,SAAAA,CAAS,QAAQ,WAAW,CAAA;AAC9D,IAAA,MAAM,aAAa,aAAA,CAAc,KAAA,CAAM,EAAE,CAAA,IAAK,YAAA,CAAa,QAAQ,EAAE,CAAA;AACrE,IAAA,MAAM,MAAA,GACJ,QAAA,KAAa,MAAA,GACT,UAAA,KAAe,SACb,KAAA,CAAM,KAAA,KAAU,GAAA,GACd,mDAAA,GACA,mBACF,CAAA,EAAG,UAAA,CAAW,MAAM,CAAA,oBAAA,CAAA,GACtB,YAAY,QAAQ,CAAA,CAAA;AAC1B,IAAA,MAAM,MAAA,GAAS,UAAA,KAAe,MAAA,GAAY,KAAA,GAAQ,MAAM,UAAU,CAAA,CAAA;AAClE,IAAA,OAAO,cAAc,IAAA,CAAK,OAAA,IAAW,EAAE,CAAA,uBAAA,EAA0B,MAAM,IAAI,MAAM,CAAA,oDAAA,CAAA;AAAA,EACnF,CAAA;AAAA,EACA,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,KAAM;AACnC,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,IAAA,EAAM,KAAA,CAAM,IAAA,KAAS,IAAA,GAAO,IAAA,GAAO,MAAA;AAAA,MACnC,OAAA,EAAS,UAAA,CAAW,KAAA,CAAM,OAAO,CAAA;AAAA,MACjC,EAAA,EAAI,kBAAA,CAAmB,aAAA,CAAc,KAAA,CAAM,EAAE,CAAC,CAAA;AAAA,MAC9C,UAAA,EAAY,UAAA,CAAW,KAAA,CAAM,QAAQ,CAAA;AAAA,MACrC,QAAA,EAAU,UAAA,CAAW,KAAA,CAAM,MAAM,CAAA;AAAA,MACjC,WAAA,EAAa,UAAA,CAAW,KAAA,CAAM,UAAU;AAAA,KACzC,CAAA;AACD,IAAA,IAAI,OAAO,KAAA,CAAM,OAAA,KAAY,QAAA,IAAY,KAAA,CAAM,YAAY,EAAA,EAAI;AAC7D,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,IAAI,KAAA,CAAM,IAAA,KAAS,IAAA,IAAQ,KAAA,CAAM,OAAO,MAAA,EAAW;AACjD,MAAA,MAAM,IAAI,cAAc,qCAAqC,CAAA;AAAA,IAC/D;AACA,IAAA,IAAI,MAAM,IAAA,KAAS,IAAA,IAAQ,OAAO,KAAA,CAAM,aAAa,QAAA,EAAU;AAC7D,MAAA,MAAM,IAAI,aAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,EAAO,CACP,MAAA,CAAO,IAAA,CAAK,UAAA,CAA2B,KAAK,CAAA,EAAG,cAAA,CAAe,KAAK,CAAC,CAAA;AACvE,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;AAED,SAAS,mBACP,MAAA,EACwC;AACxC,EAAA,IAAI,WAAW,MAAA,EAAW;AACxB,IAAA;AAAA,EACF;AACA,EAAA,MAAM,CAAC,KAAK,CAAA,GAAI,MAAA;AAChB,EAAA,OAAO,MAAA,CAAO,MAAA,KAAW,CAAA,IAAK,KAAA,KAAU,SAAY,KAAA,GAAQ,MAAA;AAC9D;AAGA,SAASD,kBAAiB,KAAA,EAAqD;AAC7E,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,GAAA,EAAK;AAC9C,IAAA;AAAA,EACF;AACA,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAkB,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AACxC,IAAA,OAAO,MAAA,KAAW,IAAA,IAAQ,OAAO,MAAA,KAAW,WACvC,MAAA,GACD,KAAA,CAAA;AAAA,EACN,CAAA,CAAA,MAAQ;AAAA,EAAC;AACX;AAEA,SAASC,UAAS,KAAA,EAAoC;AACpD,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,KAAK,KAAA,GAAQ,MAAA;AAC7D;AAEA,SAAS,aAAa,KAAA,EAA+C;AACnE,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,EAAA,EAAI;AAC7C,IAAA,OAAO,CAAC,KAAK,CAAA;AAAA,EACf;AACA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,IAAA,MAAM,QAAQ,KAAA,CAAM,MAAA;AAAA,MAClB,CAAC,IAAA,KAAyB,OAAO,IAAA,KAAS;AAAA,KAC5C;AACA,IAAA,OAAO,KAAA,CAAM,MAAA,GAAS,CAAA,GAAI,KAAA,GAAQ,MAAA;AAAA,EACpC;AACF;;;ACnIA,IAAM,WAAA,GAAc,CAAC,QAAA,EAAU,QAAA,EAAU,QAAQ,MAAM,CAAA;AAEhD,IAAM,sBAAsB,aAAA,CAAc;AAAA,EAC/C,IAAA,EAAM,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,EACzB,OAAA,EAAS,+BAAA;AAAA,EACT,SAAA,EAAW,eAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,YAAA,EAAa;AAAA,EAC5C,YAAA,EAAc,OAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAA,EAAS,wBAAA,EAAyB;AAAA,IAC3D;AAAA,MACE,IAAA,EAAM,eAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU,CAAC,kDAAkD,CAAA;AAAA,EAC7D,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,SAAA,GAAY,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA;AACvC,IAAA,MAAM,SAAA,GAAY,UAAA,CAAW,KAAA,CAAM,IAAI,CAAA;AACvC,IAAA,IAAI,SAAA,KAAc,MAAA,IAAa,SAAA,KAAc,MAAA,EAAW;AACtD,MAAA,MAAM,IAAI,cAAc,iCAAiC,CAAA;AAAA,IAC3D;AACA,IAAA,IAAI,CAAE,WAAA,CAAkC,QAAA,CAAS,SAAS,CAAA,EAAG;AAC3D,MAAA,MAAM,IAAI,aAAA;AAAA,QACR,CAAA,uBAAA,EAA0B,WAAA,CAAY,IAAA,CAAK,IAAI,CAAC,CAAA;AAAA,OAClD;AAAA,IACF;AAGA,IAAA,MAAM,KAAA,GAA0B;AAAA,MAC9B,SAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,GAAA,CAClB,MAAA,EAAO,CACP,OAAO,MAAA,CAAO,KAAA,EAAO,cAAA,CAAe,KAAK,CAAC,CAAA;AAC7C,IAAA,OAAO,EAAE,MAAM,MAAA,EAAO;AAAA,EACxB;AACF,CAAC,CAAA;;;AC1CM,IAAM,sBAAsB,aAAA,CAAc;AAAA,EAC/C,IAAA,EAAM,CAAC,QAAA,EAAU,QAAQ,CAAA;AAAA,EACzB,OAAA,EAAS,kCAAA;AAAA,EACT,SAAA,EAAW,eAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,MAAM,wBAAA,EAAyB;AAAA,EAC1D,YAAA,EAAc,aAAA;AAAA,EACd,IAAA,EAAM;AAAA,IACJ;AAAA,MACE,IAAA,EAAM,WAAA;AAAA,MACN,OAAA,EAAS,6BAAA;AAAA,MACT,UAAA,EAAY;AAAA;AACd,GACF;AAAA,EACA,QAAA,EAAU,CAAC,mCAAmC,CAAA;AAAA,EAC9C,cAAA,EAAgB,CAAC,EAAE,IAAA,OACjB,CAAA,oCAAA,EAAuC,IAAA,CAAK,aAAa,EAAE,CAAA,yBAAA,CAAA;AAAA,EAC7D,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,MAAO;AAAA,IAC7B,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,MAAA,CAAO,MAAA,CAAO,EAAE,SAAA,EAAW,IAAA,CAAK,SAAA,IAAa,EAAA,EAAI;AAAA,GAC5E;AACF,CAAC,CAAA;;;ACnBM,IAAM,oBAAoB,aAAA,CAAc;AAAA,EAC7C,IAAA,EAAM,CAAC,QAAA,EAAU,MAAM,CAAA;AAAA,EACvB,OAAA,EAAS,4BAAA;AAAA,EACT,SAAA,EAAW,aAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,YAAA,EAAa;AAAA,EAC3C,YAAA,EAAc,MAAA;AAAA,EACd,QAAA,EAAU,CAAC,sBAAsB,CAAA;AAAA,EACjC,GAAA,EAAK,OAAO,EAAE,GAAA,EAAI,MAAO,EAAE,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,MAAA,CAAO,MAAK,EAAE;AACpE,CAAC,CAAA;;;ACRM,IAAM,gBAAgB,aAAA,CAAc;AAAA,EACzC,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,OAAA,EAAS,4CAAA;AAAA,EACT,SAAA,EAAW,YAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,YAAA,EAAa;AAAA,EAC3C,YAAA,EAAc,MAAA;AAAA,EACd,QAAA,EAAU,CAAC,iBAAiB,CAAA;AAAA,EAC5B,GAAA,EAAK,OAAO,EAAE,GAAA,EAAI,MAAO;AAAA,IACvB,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,CAAO,EAAE,gBAAgB,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,GAAA;AAAI,GAC9D;AACF,CAAC,CAAA;;;ACTM,IAAM,0BAA0B,aAAA,CAAc;AAAA,EACnD,IAAA,EAAM,CAAC,cAAA,EAAgB,MAAM,CAAA;AAAA,EAC7B,OAAA,EACE,qGAAA;AAAA,EACF,SAAA,EAAW,mBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,kBAAA,EAAmB;AAAA,EACjD,YAAA,EAAc,MAAA;AAAA,EACd,QAAA,EAAU,CAAC,4BAAA,EAA8B,mCAAmC,CAAA;AAAA,EAC5E,GAAA,EAAK,OAAO,EAAE,GAAA,EAAI,KAAM;AACtB,IAAA,MAAM,SAAS,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,aAAa,IAAA,EAAK;AACpD,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,kBAAA,CAAmB,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,EAChE;AACF,CAAC,CAAA;AAED,SAAS,mBAAmB,IAAA,EAAsC;AAChE,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,wBAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAY,IAAA,EAAgD;AAAA,IACjE,EAAE,GAAA,EAAK,UAAA,EAAY,MAAA,EAAQ,UAAA,EAAW;AAAA,IACtC,EAAE,GAAA,EAAK,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAO;AAAA,IAC9B,EAAE,GAAA,EAAK,UAAA,EAAY,MAAA,EAAQ,UAAA,EAAW;AAAA,IACtC,EAAE,GAAA,EAAK,WAAA,EAAa,MAAA,EAAQ,WAAA;AAAY,GACzC,CAAA;AACH;;;ACfA,IAAM,SAAA,GAAY,wBAAA;AAEX,IAAM,eAAe,aAAA,CAAc;AAAA,EACxC,IAAA,EAAM,CAAC,OAAO,CAAA;AAAA,EACd,OAAA,EAAS,+DAAA;AAAA,EACT,SAAA,EAAW,IAAA;AAAA,EACX,YAAA,EAAc,OAAA;AAAA,EACd,QAAA,EAAU;AAAA,IACR,gBAAA;AAAA,IACA,gEAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAI,KAAM;AACtB,IAAA,MAAM,SAAA,GAAY,MAAM,gBAAA,CAAiB,GAAG,CAAA;AAC5C,IAAA,IAAI,CAAC,SAAA,CAAU,IAAA,CAAK,SAAS,CAAA,EAAG;AAC9B,MAAA,QAAA;AAAA,QACE,GAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AACA,IAAA,MAAM,OAAO,WAAA,CAAY;AAAA,MACvB,SAAS,EAAE,GAAG,GAAA,CAAI,OAAA,EAAS,QAAQ,SAAA,EAAU;AAAA,MAC7C,GAAA,EAAK,IAAI,EAAA,CAAG;AAAA,KACb,CAAA;AAED,IAAA,MAAM,cAAA,CAAe,IAAI,CAAA,CAAE,KAAA,CAAM,GAAA,EAAI;AACrC,IAAA,MAAM,IAAA,GAAO,aAAa,GAAA,CAAI,EAAA,CAAG,KAAK,EAAE,MAAA,EAAQ,WAAW,CAAA;AAC3D,IAAA,QAAA,CAAS,GAAA,EAAK,CAAA,yBAAA,EAA4B,IAAI,CAAA,QAAA,CAAU,CAAA;AACxD,IAAA,OAAO;AAAA,MACL,IAAA,EAAM;AAAA,QACJ,QAAA,EAAU,IAAA;AAAA,QACV,MAAA,EAAQ,WAAW,SAAS,CAAA;AAAA,QAC5B,QAAQ,IAAA,CAAK,MAAA;AAAA,QACb,UAAA,EAAY;AAAA;AACd,KACF;AAAA,EACF;AACF,CAAC,CAAA;AAED,eAAe,iBAAiB,GAAA,EAAkC;AAChE,EAAA,IAAI,GAAA,CAAI,OAAA,CAAQ,MAAA,KAAW,MAAA,EAAW;AACpC,IAAA,OAAO,IAAI,OAAA,CAAQ,MAAA;AAAA,EACrB;AACA,EAAA,IAAI,CAAC,GAAA,CAAI,EAAA,CAAG,OAAA,EAAS;AACnB,IAAA,MAAM,SAAS,MAAM,GAAA,CAAI,EAAA,CAAG,SAAA,IAAa,IAAA,EAAK;AAC9C,IAAA,IAAI,UAAU,EAAA,EAAI;AAChB,MAAA,OAAO,KAAA;AAAA,IACT;AACA,IAAA,MAAM,IAAI,aAAA;AAAA,MACR,4EAA4E,cAAc,CAAA;AAAA,KAC5F;AAAA,EACF;AACA,EAAA,QAAA,CAAS,GAAA,EAAK,CAAA,qBAAA,EAAwB,cAAc,CAAA,CAAE,CAAA;AACtD,EAAA,MAAM,UAAU,MAAM,GAAA,CAAI,GAAG,QAAA,CAAS,sBAAsB,GAAG,IAAA,EAAK;AACpE,EAAA,IAAI,WAAW,EAAA,EAAI;AACjB,IAAA,MAAM,IAAI,cAAc,iBAAiB,CAAA;AAAA,EAC3C;AACA,EAAA,OAAO,MAAA;AACT;;;AClEO,IAAM,gBAAgB,aAAA,CAAc;AAAA,EACzC,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,OAAA,EAAS,6CAAA;AAAA,EACT,SAAA,EAAW,IAAA;AAAA,EACX,YAAA,EAAc,OAAA;AAAA,EACd,QAAA,EAAU,CAAC,iBAAiB,CAAA;AAAA,EAC5B,GAAA,EAAK,OAAO,EAAE,GAAA,EAAI,KAAM;AACtB,IAAA,MAAM,SAAS,UAAA,CAAW,GAAA,CAAI,EAAA,CAAG,GAAG,EAAE,MAAA,KAAW,MAAA;AACjD,IAAA,MAAM,IAAA,GAAO,aAAa,GAAA,CAAI,EAAA,CAAG,KAAK,EAAE,MAAA,EAAQ,QAAW,CAAA;AAC3D,IAAA,QAAA,CAAS,GAAA,EAAK,MAAA,GAAS,aAAA,GAAgB,sBAAsB,CAAA;AAC7D,IAAA,OAAO,EAAE,MAAM,EAAE,SAAA,EAAW,MAAM,MAAA,EAAQ,UAAA,EAAY,MAAK,EAAE;AAAA,EAC/D;AACF,CAAC,CAAA;;;ACdM,IAAM,qBAAqB,aAAA,CAAc;AAAA,EAC9C,IAAA,EAAM,CAAC,OAAA,EAAS,QAAQ,CAAA;AAAA,EACxB,OAAA,EAAS,sDAAA;AAAA,EACT,SAAA,EAAW,cAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,2BAAA,EAA4B;AAAA,EAC3D,YAAA,EAAc,aAAA;AAAA,EACd,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,UAAU,OAAA,EAAS,mBAAA,EAAqB,UAAA,EAAY,IAAA,EAAM,CAAA;AAAA,EACzE,QAAA,EAAU,CAAC,uCAAuC,CAAA;AAAA,EAClD,cAAA,EAAgB,CAAC,EAAE,IAAA,OACjB,CAAA,YAAA,EAAe,IAAA,CAAK,UAAU,EAAE,CAAA,gGAAA,CAAA;AAAA,EAClC,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,MAAK,MAAO;AAAA,IAC7B,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,GAAS,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,MAAA,IAAU,EAAE;AAAA,GACzD;AACF,CAAC,CAAA;;;ACZM,IAAM,oBAAoB,aAAA,CAAc;AAAA,EAC7C,IAAA,EAAM,CAAC,OAAA,EAAS,OAAO,CAAA;AAAA,EACvB,OAAA,EAAS,kDAAA;AAAA,EACT,SAAA,EAAW,aAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,0BAAA,EAA2B;AAAA,EAC1D,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,UAAU,OAAA,EAAS,kBAAA,EAAoB,UAAA,EAAY,IAAA,EAAM,CAAA;AAAA,EACxE,KAAA,EAAO,CAAC,gBAAgB,CAAA;AAAA,EACxB,QAAA,EAAU,CAAC,8BAA8B,CAAA;AAAA,EACzC,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,MAAO;AAAA,IACpC,IAAA,EAAM,MAAM,GAAA,CACT,MAAA,EAAO,CACP,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,MAAA,IAAU,EAAA,EAAI,cAAA,CAAe,KAAK,CAAC;AAAA,GACzD;AACF,CAAC,CAAA;;;ACdM,IAAM,qBAAqB,aAAA,CAAc;AAAA,EAC9C,IAAA,EAAM,CAAC,OAAA,EAAS,QAAQ,CAAA;AAAA,EACxB,OAAA,EAAS,6DAAA;AAAA,EACT,SAAA,EAAW,cAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,2BAAA,EAA4B;AAAA,EAC3D,YAAA,EAAc,OAAA;AAAA,EACd,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,UAAU,OAAA,EAAS,mBAAA,EAAqB,UAAA,EAAY,IAAA,EAAM,CAAA;AAAA,EACzE,KAAA,EAAO,CAAC,gBAAgB,CAAA;AAAA,EACxB,QAAA,EAAU,CAAC,+BAA+B,CAAA;AAAA,EAC1C,KAAK,OAAO,EAAE,GAAA,EAAK,IAAA,EAAM,OAAM,MAAO;AAAA,IACpC,IAAA,EAAM,MAAM,GAAA,CACT,MAAA,EAAO,CACP,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,MAAA,IAAU,EAAA,EAAI,cAAA,CAAe,KAAK,CAAC;AAAA,GAC1D;AACF,CAAC,CAAA;;;ACCM,IAAM,uBAAuB,aAAA,CAAc;AAAA,EAChD,IAAA,EAAM,CAAC,WAAA,EAAa,MAAM,CAAA;AAAA,EAC1B,OAAA,EAAS,4DAAA;AAAA,EACT,SAAA,EAAW,gBAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,eAAA,EAAgB;AAAA,EAC9C,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL;AAAA;AAAA,MAEE,IAAA,EAAM,qBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,EAAE,IAAA,EAAM,uBAAA,EAAyB,OAAA,EAAS,oBAAA,EAAqB;AAAA,IAC/D;AAAA,MACE,IAAA,EAAM,mBAAA;AAAA,MACN,OAAA,EAAS;AAAA,KACX;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,4CAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAC7B,IAAA,MAAM,OAAO,MAAM,YAAA,CAAa,GAAA,EAAK,KAAA,CAAM,OAAO,SAAS,CAAA;AAC3D,IAAA,MAAM,KAAA,GAAQ,WAAW,IAAA,EAAM;AAAA,MAC7B,KAAA,EAAO,UAAA,CAAW,KAAA,CAAM,SAAS,CAAA;AAAA,MACjC,QAAA,EAAU,UAAA,CAAW,KAAA,CAAM,QAAQ,CAAA;AAAA,MACnC,QAAA,EAAU,UAAA,CAAW,KAAA,CAAM,QAAQ,CAAA;AAAA,MACnC,KAAA,EAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,EAAO,SAAS,CAAA;AAAA,MACrC,MAAA,EAAQ,UAAA,CAAW,KAAA,CAAM,MAAM;AAAA,KAChC,CAAA;AACD,IAAA,MAAM,SAAA,GAAY,GAAA,CAAI,MAAA,EAAO,CAAE,SAAA;AAC/B,IAAA,IAAI,KAAA,CAAM,QAAQ,IAAA,EAAM;AACtB,MAAA,MAAM,OAAO,MAAM,UAAA;AAAA,QAAW,GAAA;AAAA,QAAK,CAAC,WAClC,SAAA,CAAU,IAAA;AAAA,UACR,UAAA,CAA+B;AAAA,YAC7B,GAAG,KAAA;AAAA,YACH,GAAI,MAAA,KAAW,MAAA,GAAY,EAAC,GAAI,EAAE,MAAA;AAAO,WAC1C;AAAA;AACH,OACF;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,EAAE,IAAA,EAAM,IAAA,EAAM,UAAA,EAAY,EAAE,MAAA,EAAQ,IAAA,EAAM,OAAA,EAAS,KAAA,EAAM,EAAE;AAAA,QACjE,KAAA,EAAO,gBAAgB,IAAI;AAAA,OAC7B;AAAA,IACF;AACA,IAAA,MAAM,SAAS,MAAM,SAAA,CAAU,IAAA,CAAK,UAAA,CAA+B,KAAK,CAAC,CAAA;AACzE,IAAA,OAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,OAAO,eAAA,CAAgB,MAAA,CAAO,IAAI,CAAA,EAAE;AAAA,EAC7D;AACF,CAAC,CAAA;AAED,SAAS,gBAAgB,IAAA,EAAsC;AAC7D,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAO,qBAAA;AAAA,EACT;AACA,EAAA,OAAO,YAAY,IAAA,EAAgD;AAAA,IACjE,EAAE,GAAA,EAAK,SAAA,EAAW,MAAA,EAAQ,UAAA,EAAW;AAAA,IACrC,EAAE,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,OAAA,EAAQ;AAAA,IAChC,EAAE,GAAA,EAAK,UAAA,EAAY,MAAA,EAAQ,UAAA,EAAW;AAAA,IACtC,EAAE,GAAA,EAAK,OAAA,EAAS,MAAA,EAAQ,OAAA;AAAQ,GACjC,CAAA;AACH;AC9DA,IAAM,aAAA,GAAgB,2BAAA;AAUtB,SAAS,WAAW,KAAA,EAAuB;AACzC,EAAA,MAAM,UAAU,KAAA,CAAM,OAAA,CAAQ,gBAAA,EAAkB,GAAG,EAAE,IAAA,EAAK;AAC1D,EAAA,IAAI,YAAY,EAAA,EAAI;AAClB,IAAA,OAAO,UAAA;AAAA,EACT;AACA,EAAA,OAAO,QACJ,KAAA,CAAM,GAAG,EACT,GAAA,CAAI,CAAC,SAAS,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,KAAgB,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA,CAC1D,KAAK,EAAE,CAAA;AACZ;AAEA,SAAS,SAAS,KAAA,EAAuB;AACvC,EAAA,MAAM,IAAA,GAAO,WAAW,KAAK,CAAA;AAC7B,EAAA,IAAI,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA,EAAG;AACvB,IAAA,OAAO,UAAU,IAAI,CAAA,CAAA;AAAA,EACvB;AACA,EAAA,OAAO,KAAK,QAAA,CAAS,SAAS,CAAA,GAAI,IAAA,GAAO,GAAG,IAAI,CAAA,OAAA,CAAA;AAClD;AAEA,IAAM,aAAA,GAAgB,4BAAA;AAEtB,SAAS,YAAY,GAAA,EAAqB;AACxC,EAAA,OAAO,cAAc,IAAA,CAAK,GAAG,IAAI,GAAA,GAAM,IAAA,CAAK,UAAU,GAAG,CAAA;AAC3D;AA2BA,SAAS,YAAA,CAAa,MAAc,IAAA,EAAgC;AAClE,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,QAAA;AACH,MAAA,OAAO,QAAA;AAAA,IACT,KAAK,KAAA;AAAA,IACL,KAAK,OAAA;AACH,MAAA,OAAO,QAAA;AAAA,IACT,KAAK,SAAA;AACH,MAAA,OAAO,SAAA;AAAA,IACT,KAAK,MAAA;AAEH,MAAA,OAAO,QAAA;AAAA,IACT,KAAK,MAAA;AACH,MAAA,OAAO,KAAK,UAAA,IAAc,IAAA,CAAK,WAAW,MAAA,GAAS,CAAA,GAC/C,KAAK,UAAA,CAAW,GAAA,CAAI,CAAC,KAAA,KAAU,KAAK,SAAA,CAAU,KAAK,CAAC,CAAA,CAAE,IAAA,CAAK,KAAK,CAAA,GAChE,QAAA;AAAA,IACN;AACE,MAAA,OAAO,SAAA;AAAA;AAEb;AAEA,SAAS,gBAAA,CAAiB,MAAwB,MAAA,EAAwB;AACxE,EAAA,IAAI,IAAA,CAAK,SAAS,QAAA,EAAU;AAC1B,IAAA,OAAO,oBAAA,CAAqB,IAAA,CAAK,QAAA,IAAY,IAAI,MAAM,CAAA;AAAA,EACzD;AACA,EAAA,IAAI,IAAA,CAAK,SAAS,OAAA,EAAS;AACzB,IAAA,IAAI,IAAA,CAAK,QAAA,IAAY,IAAA,CAAK,QAAA,CAAS,SAAS,CAAA,EAAG;AAC7C,MAAA,OAAO,CAAA,MAAA,EAAS,oBAAA,CAAqB,IAAA,CAAK,QAAA,EAAU,MAAM,CAAC,CAAA,CAAA,CAAA;AAAA,IAC7D;AACA,IAAA,MAAM,UAAU,IAAA,CAAK,QAAA,GACjB,aAAa,IAAA,CAAK,QAAA,EAAU,IAAI,CAAA,GAChC,SAAA;AACJ,IAAA,OAAO,SAAS,OAAO,CAAA,CAAA,CAAA;AAAA,EACzB;AACA,EAAA,OAAO,YAAA,CAAa,IAAA,CAAK,IAAA,EAAM,IAAI,CAAA;AACrC;AASA,SAAS,oBAAA,CACP,OACA,MAAA,EACQ;AACR,EAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AAItB,IAAA,OAAO,MAAA,KAAW,KAAK,uBAAA,GAA0B,yBAAA;AAAA,EACnD;AACA,EAAA,MAAM,KAAA,GAAQ,GAAG,MAAM,CAAA,EAAA,CAAA;AACvB,EAAA,MAAM,KAAA,GAAuB,CAAC,GAAG,CAAA;AACjC,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,QAAA,GAAW,EAAA,GAAK,GAAA;AACtC,IAAA,KAAA,CAAM,IAAA;AAAA,MACJ,CAAA,EAAG,KAAK,CAAA,EAAG,WAAA,CAAY,IAAA,CAAK,GAAG,CAAC,CAAA,EAAG,QAAQ,CAAA,EAAA,EAAK,gBAAA,CAAiB,IAAA,EAAM,KAAK,CAAC,CAAA;AAAA,KAC/E;AAAA,EACF;AACA,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAG,MAAM,CAAA,CAAA,CAAG,CAAA;AACvB,EAAA,OAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AACxB;AAEA,SAAS,eAAA,CAAgB,SAAqB,IAAA,EAAsB;AAClE,EAAA,MAAM,MAAA,GACJ,OAAA,CAAQ,aAAA,EAAe,MAAA,IAAU,EAAC;AACpC,EAAA,OAAO;AAAA,IACL,CAAA,wCAAA,EAA2C,OAAA,CAAQ,cAAc,CAAA,6BAAA,EAA2B,IAAI,CAAA,KAAA,CAAA;AAAA,IAChG,eAAe,IAAI,CAAA,GAAA,EAAM,oBAAA,CAAqB,MAAA,EAAQ,EAAE,CAAC,CAAA;AAAA,GAC3D,CAAE,KAAK,IAAI,CAAA;AACb;AAGA,SAAS,WAAA,CAAY,GAAW,CAAA,EAAmB;AACjD,EAAA,IAAI,IAAI,CAAA,EAAG;AACT,IAAA,OAAO,EAAA;AAAA,EACT;AACA,EAAA,OAAO,CAAA,GAAI,IAAI,CAAA,GAAI,CAAA;AACrB;AAOA,SAAS,YACP,OAAA,EACe;AACf,EAAA,MAAM,KAAA,uBAAY,GAAA,EAAoB;AACtC,EAAA,OAAO,QAAQ,GAAA,CAAI,CAAC,EAAE,KAAA,EAAO,IAAG,KAAM;AACpC,IAAA,IAAI,IAAA,GAAO,SAAS,KAAK,CAAA;AACzB,IAAA,IAAI,KAAA,CAAM,GAAA,CAAI,IAAI,CAAA,EAAG;AACnB,MAAA,MAAM,WAAW,CAAA,EAAG,IAAI,CAAA,EAAG,UAAA,CAAW,EAAE,CAAC,CAAA,CAAA;AACzC,MAAA,IAAA,GAAO,QAAA;AAAA,IACT;AACA,IAAA,OAAO,KAAA,CAAM,GAAA,CAAI,IAAI,CAAA,EAAG;AACtB,MAAA,MAAM,IAAA,GAAA,CAAQ,KAAA,CAAM,GAAA,CAAI,IAAI,KAAK,CAAA,IAAK,CAAA;AACtC,MAAA,KAAA,CAAM,GAAA,CAAI,MAAM,IAAI,CAAA;AACpB,MAAA,IAAA,GAAO,CAAA,EAAG,IAAI,CAAA,EAAG,IAAI,CAAA,CAAA;AAAA,IACvB;AACA,IAAA,KAAA,CAAM,GAAA,CAAI,MAAM,CAAC,CAAA;AACjB,IAAA,OAAO,IAAA;AAAA,EACT,CAAC,CAAA;AACH;AAEA,SAAS,cAAc,IAAA,EAAuD;AAC5E,EAAA,MAAM,QAAA,GAAW,CAAC,GAAG,IAAA,CAAK,QAAQ,CAAA,CAAE,IAAA;AAAA,IAAK,CAAC,CAAA,EAAG,CAAA,KAC3C,YAAY,CAAA,CAAE,cAAA,EAAgB,EAAE,cAAc;AAAA,GAChD;AAGA,EAAA,MAAM,KAAA,GAAQ,WAAA;AAAA,IACZ,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,MAAO,EAAE,EAAA,EAAI,CAAA,CAAE,cAAA,EAAgB,KAAA,EAAO,CAAA,CAAE,KAAA,EAAM,CAAE;AAAA,GAChE;AACA,EAAA,MAAM,gBAAgB,QAAA,CAAS,GAAA;AAAA,IAAI,CAAC,CAAA,EAAG,CAAA,KACrC,eAAA,CAAgB,CAAA,EAAG,KAAA,CAAM,CAAC,CAAA,IAAK,QAAA,CAAS,CAAA,CAAE,KAAK,CAAC;AAAA,GAClD;AACA,EAAA,MAAM,IAAA,GAAO;AAAA,IACX,8DAAA;AAAA,IACA,kEAAA;AAAA,IACA,+CAAA;AAAA,IACA,EAAA;AAAA,IACA,aAAA,CAAc,KAAK,MAAM,CAAA;AAAA,IACzB;AAAA,GACF,CAAE,KAAK,IAAI,CAAA;AACX,EAAA,MAAM,IAAA,GAAO,WAAW,QAAQ,CAAA,CAAE,OAAO,IAAI,CAAA,CAAE,OAAO,KAAK,CAAA;AAC3D,EAAA,OAAO,CAAA,EAAG,aAAa,CAAA,EAAG,IAAI;AAAA,EAAK,IAAI,CAAA,CAAA;AACzC;AAEO,IAAM,eAAe,aAAA,CAAc;AAAA,EACxC,IAAA,EAAM,CAAC,OAAO,CAAA;AAAA,EACd,OAAA,EACE,qKAAA;AAAA,EACF,SAAA,EAAW,IAAA;AAAA,EACX,WAAA,EAAa,2BAAA;AAAA,EACb,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,0BAAA,EAA2B;AAAA,EACzD,YAAA,EAAc,MAAA;AAAA,EACd,KAAA,EAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,cAAA;AAAA,MACN,OAAA,EAAS,yCAAA;AAAA,MACT,YAAA,EAAc;AAAA,KAChB;AAAA,IACA;AAAA,MACE,IAAA,EAAM,SAAA;AAAA,MACN,OAAA,EACE;AAAA;AACJ,GACF;AAAA,EACA,QAAA,EAAU;AAAA,IACR,gBAAA;AAAA,IACA,4CAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,GAAA,EAAK,OAAO,EAAE,GAAA,EAAK,OAAM,KAAM;AAI7B,IAAA,MAAM,WAA8B,EAAC;AACrC,IAAA,IAAI,MAAA,GAAwB,IAAA;AAC5B,IAAA,KAAA,IAAS,IAAA,GAAO,CAAA,EAAG,IAAA,GAAO,EAAA,EAAI,IAAA,EAAA,EAAQ;AACpC,MAAA,MAAM,eAAqC,MAAM,GAAA,CAC9C,MAAA,EAAO,CACP,YAAY,QAAA,CAAS,IAAA;AAAA,QACpB,UAAA,CAA8B;AAAA,UAC5B,KAAA,EAAO,GAAA;AAAA,UACP,GAAI,MAAA,KAAW,IAAA,GAAO,EAAC,GAAI,EAAE,MAAA;AAAO,SACrC;AAAA,OACH;AACF,MAAA,QAAA,CAAS,IAAA,CAAK,GAAI,YAAA,CAAa,IAAA,IAAQ,EAAG,CAAA;AAC1C,MAAA,IACE,CAAC,YAAA,CAAa,UAAA,EAAY,WAC1B,CAAC,YAAA,CAAa,WAAW,MAAA,EACzB;AACA,QAAA;AAAA,MACF;AACA,MAAA,MAAA,GAAS,aAAa,UAAA,CAAW,MAAA;AAAA,IACnC;AACA,IAAA,MAAM,IAAA,GAAO,aAAA,CAAc,EAAE,QAAA,EAAU,CAAA;AACvC,IAAA,MAAM,UACJ,OAAO,KAAA,CAAM,GAAA,KAAQ,QAAA,GAAW,MAAM,GAAA,GAAM,mBAAA;AAE9C,IAAA,IAAI,KAAA,CAAM,UAAU,IAAA,EAAM;AACxB,MAAA,IAAI,QAAA,GAA0B,IAAA;AAC9B,MAAA,IAAI;AACF,QAAA,QAAA,GAAWJ,YAAAA,CAAa,SAAS,MAAM,CAAA;AAAA,MACzC,CAAA,CAAA,MAAQ;AACN,QAAA,QAAA,GAAW,IAAA;AAAA,MACb;AAEA,MAAA,MAAM,YAAY,CAAC,KAAA,KAAkB,KAAA,CAAM,UAAA,CAAW,QAAQ,IAAI,CAAA;AAClE,MAAA,IAAI,aAAa,IAAA,IAAQ,SAAA,CAAU,QAAQ,CAAA,KAAM,SAAA,CAAU,IAAI,CAAA,EAAG;AAChE,QAAA,OAAO;AAAA,UACL,IAAA,EAAM,EAAE,OAAA,EAAS,OAAA,EAAS,UAAU,KAAA,EAAM;AAAA,UAC1C,OACE,QAAA,KAAa,IAAA,GACT,GAAG,OAAO,CAAA,oDAAA,CAAA,GACV,GAAG,OAAO,CAAA,iGAAA,CAAA;AAAA;AAAA,UAEhB,QAAA,EAAU;AAAA,SACZ;AAAA,MACF;AACA,MAAA,OAAO;AAAA,QACL,IAAA,EAAM,EAAE,OAAA,EAAS,OAAA,EAAS,UAAU,IAAA,EAAK;AAAA,QACzC,KAAA,EAAO,GAAG,OAAO,CAAA,eAAA;AAAA,OACnB;AAAA,IACF;AAEA,IAAAK,aAAAA,CAAc,SAAS,IAAI,CAAA;AAC3B,IAAA,OAAO;AAAA,MACL,IAAA,EAAM;AAAA,QACJ,GAAA,EAAK,OAAA;AAAA,QACL,UAAU,QAAA,CAAS;AAAA,OACrB;AAAA,MACA,KAAA,EAAO,CAAA,MAAA,EAAS,OAAO,CAAA,EAAA,EAAK,QAAA,CAAS,MAAM,CAAA,QAAA,EAAW,QAAA,CAAS,MAAA,KAAW,CAAA,GAAI,EAAA,GAAK,GAAG,CAAA,EAAA;AAAA,KACxF;AAAA,EACF;AACF,CAAC,CAAA;;;AC3SM,IAAM,eAAe,aAAA,CAAc;AAAA,EACxC,IAAA,EAAM,CAAC,OAAO,CAAA;AAAA,EACd,OAAA,EAAS,iDAAA;AAAA,EACT,SAAA,EAAW,WAAA;AAAA,EACX,KAAA,EAAO,EAAE,MAAA,EAAQ,KAAA,EAAO,MAAM,WAAA,EAAY;AAAA,EAC1C,YAAA,EAAc,MAAA;AAAA,EACd,QAAA,EAAU,CAAC,gBAAA,EAAkB,uBAAuB,CAAA;AAAA,EACpD,GAAA,EAAK,OAAO,EAAE,GAAA,EAAI,MAAO,EAAE,IAAA,EAAM,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,KAAA,CAAM,KAAI,EAAE;AAClE,CAAC,CAAA;ACLM,IAAM,gBAAgB,aAAA,CAAc;AAAA,EACzC,IAAA,EAAM,CAAC,QAAQ,CAAA;AAAA,EACf,OAAA,EAAS,qDAAA;AAAA,EACT,SAAA,EAAW,IAAA;AAAA,EACX,YAAA,EAAc,MAAA;AAAA,EACd,QAAA,EAAU,CAAC,iBAAA,EAAmB,wBAAwB,CAAA;AAAA,EACtD,GAAA,EAAK,OAAO,EAAE,GAAA,EAAI,KAAM;AACtB,IAAA,MAAM,IAAA,GAAO,WAAA,CAAY,EAAE,OAAA,EAAS,GAAA,CAAI,SAAS,GAAA,EAAK,GAAA,CAAI,EAAA,CAAG,GAAA,EAAK,CAAA;AAGlE,IAAA,IAAI,KAAA,GAAiB,IAAA;AACrB,IAAA,IAAI;AACF,MAAA,KAAA,GAAQ,MAAM,GAAA,CAAI,MAAA,EAAO,CAAE,MAAM,GAAA,EAAI;AAAA,IACvC,SAAS,KAAA,EAAO;AACd,MAAA,IACE,iBAAiBH,YAAAA,KAChB,KAAA,CAAM,WAAW,GAAA,IAAO,KAAA,CAAM,WAAW,GAAA,CAAA,EAC1C;AACA,QAAA,MAAM,KAAA;AAAA,MACR;AACA,MAAA,QAAA;AAAA,QACE,GAAA;AAAA,QACA;AAAA,OACF;AAAA,IACF;AACA,IAAA,OAAO;AAAA,MACL,IAAA,EAAM;AAAA,QACJ,QAAQ,IAAA,CAAK,MAAA;AAAA,QACb,MAAA,EAAQ,UAAA,CAAW,IAAA,CAAK,MAAM,CAAA;AAAA,QAC9B,cAAc,IAAA,CAAK,YAAA;AAAA,QACnB,OAAA,EAAS,KAAK,OAAA,IAAW,IAAA;AAAA,QACzB;AAAA;AACF,KACF;AAAA,EACF;AACF,CAAC,CAAA;;;AC+EM,IAAM,YAAA,GAAuC;AAAA,EAClD,YAAA;AAAA,EACA,aAAA;AAAA,EACA,aAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,qBAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,qBAAA;AAAA,EACA,yBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,yBAAA;AAAA,EACA,uBAAA;AAAA,EACA,wBAAA;AAAA,EACA,iBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,iBAAA;AAAA,EACA,uBAAA;AAAA,EACA,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,yBAAA;AAAA,EACA,gBAAA;AAAA,EACA,qBAAA;AAAA,EACA,mBAAA;AAAA,EACA,wBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,2BAAA;AAAA,EACA,qCAAA;AAAA,EACA,qCAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,YAAA;AAAA,EACA,oBAAA;AAAA,EACA,mBAAA;AAAA,EACA,sBAAA;AAAA,EACA,sBAAA;AAAA,EACA,yBAAA;AAAA,EACA,0BAAA;AAAA,EACA,sBAAA;AAAA,EACA,sBAAA;AAAA,EACA,qBAAA;AAAA,EACA,wBAAA;AAAA,EACA,wBAAA;AAAA,EACA,yBAAA;AAAA,EACA,2BAAA;AAAA,EACA,wBAAA;AAAA,EACA,sBAAA;AAAA,EACA,qBAAA;AAAA,EACA,8BAAA;AAAA,EACA,+BAAA;AAAA,EACA,qCAAA;AAAA,EACA,qCAAA;AAAA,EACA,0CAAA;AAAA,EACA,qBAAA;AAAA,EACA,gCAAA;AAAA,EACA,gCAAA;AAAA,EACA,gCAAA;AAAA,EACA,8BAAA;AAAA,EACA,0BAAA;AAAA,EACA,kCAAA;AAAA,EACA,qCAAA;AAAA,EACA,wBAAA;AAAA,EACA,yBAAA;AAAA,EACA,2BAAA;AAAA,EACA,sBAAA;AAAA,EACA,yBAAA;AAAA,EACA,wBAAA;AAAA,EACA,oCAAA;AAAA,EACA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,qBAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,mBAAA;AAAA,EACA,kBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,oBAAA;AAAA,EACA,2BAAA;AAAA,EACA,iBAAA;AAAA,EACA,uBAAA;AAAA,EACA,uBAAA;AAAA,EACA,sBAAA;AAAA,EACA,oBAAA;AAAA,EACA,uBAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAA;;;ACpNA,IAAM,eAAA,GAAoD;AAAA,EACxD,SAAA,EAAW,sDAAA;AAAA,EACX,UAAA,EAAY,8BAAA;AAAA,EACZ,SAAA,EAAW,0BAAA;AAAA,EACX,WAAA,EAAa,8CAAA;AAAA,EACb,KAAA,EAAO,mDAAA;AAAA,EACP,MAAA,EAAQ,oCAAA;AAAA,EACR,KAAA,EAAO,sCAAA;AAAA,EACP,MAAA,EAAQ,yCAAA;AAAA,EACR,QAAA,EAAU,iBAAA;AAAA,EACV,OAAA,EAAS,2DAAA;AAAA,EACT,IAAA,EAAM,0CAAA;AAAA,EACN,OAAA,EAAS,wBAAA;AAAA,EACT,MAAA,EAAQ,yCAAA;AAAA,EACR,MAAA,EAAQ,8BAAA;AAAA,EACR,MAAA,EAAQ,+BAAA;AAAA,EACR,YAAA,EAAc,wCAAA;AAAA,EACd,KAAA,EAAO,sCAAA;AAAA,EACP,SAAA,EAAW,6BAAA;AAAA,EACX,QAAA,EAAU,+CAAA;AAAA,EACV,SAAA,EAAW,0BAAA;AAAA,EACX,QAAA,EAAU,uBAAA;AAAA,EACV,IAAA,EAAM,wBAAA;AAAA,EACN,mBAAA,EAAqB;AACvB,CAAA;AAEA,IAAM,iBAAA,GAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA,cAAA,EAWV,QAAQ,CAAA;AAAA,CAAA;AAGxB,eAAsB,GAAA,CACpB,IAAA,EACA,EAAA,EACA,QAAA,GAAmC,YAAA,EAClB;AACjB,EAAA,IAAI,aAAA;AACJ,EAAA,IAAI,eAAA;AAIJ,EAAA,MAAM,kBAA4B,EAAC;AACnC,EAAA,MAAM,OAAA,GAAU,YAAA;AAAA,IACd,EAAA;AAAA,IACA,IAAA;AAAA,IACA,CAAC,GAAA,KAAQ;AACP,MAAA,aAAA,GAAgB,GAAA;AAAA,IAClB,CAAA;AAAA,IACA,QAAA;AAAA,IACA,CAAC,IAAA,KAAS;AACR,MAAA,eAAA,CAAgB,KAAK,IAAI,CAAA;AAAA,IAC3B,CAAA;AAAA,IACA,CAAC,IAAA,KAAS;AACR,MAAA,eAAA,GAAkB,IAAA;AAAA,IACpB;AAAA,GACF;AACA,EAAA,MAAM,uBAAuB,MAAY;AACvC,IAAA,KAAA,MAAW,QAAQ,eAAA,EAAiB;AAClC,MAAA,EAAA,CAAG,MAAA,CAAO,MAAM,IAAI,CAAA;AAAA,IACtB;AACA,IAAA,eAAA,CAAgB,MAAA,GAAS,CAAA;AAAA,EAC3B,CAAA;AACA,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,CAAQ,WAAW,CAAC,GAAG,IAAI,CAAA,EAAG,EAAE,IAAA,EAAM,MAAA,EAAQ,CAAA;AACpD,IAAA,oBAAA,EAAqB;AACrB,IAAA,OAAO,eAAA,IAAmB,OAAA;AAAA,EAC5B,SAAS,KAAA,EAAO;AACd,IAAA,IAAI,iBAAiB,cAAA,EAAgB;AACnC,MAAA,MAAMI,IAAAA,GAAM,aAAA,IAAiB,mBAAA,CAAoB,EAAA,EAAI,IAAI,CAAA;AACzD,MAAA,OAAO,oBAAA,CAAqB,KAAA,EAAOA,IAAAA,EAAK,oBAAoB,CAAA;AAAA,IAC9D;AACA,IAAA,oBAAA,EAAqB;AACrB,IAAA,MAAM,GAAA,GAAM,aAAA,IAAiB,mBAAA,CAAoB,EAAA,EAAI,IAAI,CAAA;AACzD,IAAA,UAAA,CAAW,KAAK,KAAK,CAAA;AACrB,IAAA,OAAO,WAAW,KAAK,CAAA;AAAA,EACzB;AACF;AAEA,SAAS,oBAAA,CACP,KAAA,EACA,GAAA,EACA,KAAA,EACQ;AACR,EAAA,MAAM,UAAA,GACJ,KAAA,CAAM,IAAA,KAAS,yBAAA,IAA6B,MAAM,IAAA,KAAS,gBAAA;AAC7D,EAAA,IACE,MAAM,IAAA,KAAS,mBAAA,IACd,UAAA,IAAc,KAAA,CAAM,aAAa,CAAA,EAClC;AACA,IAAA,KAAA,EAAM;AACN,IAAA,OAAO,OAAA;AAAA,EACT;AACA,EAAA,IAAI,UAAA,EAAY;AAEd,IAAA,IAAI,GAAA,CAAI,SAAS,MAAA,EAAQ;AACvB,MAAA,UAAA;AAAA,QACE,GAAA;AAAA,QACA,IAAI,cAAc,+CAA+C;AAAA,OACnE;AAAA,IACF,CAAA,MAAO;AACL,MAAA,KAAA,EAAM;AAAA,IACR;AACA,IAAA,OAAO,UAAA;AAAA,EACT;AACA,EAAA,IAAI,GAAA,CAAI,SAAS,MAAA,EAAQ;AACvB,IAAA,UAAA,CAAW,GAAA,EAAK,IAAI,aAAA,CAAc,KAAA,CAAM,QAAQ,OAAA,CAAQ,UAAA,EAAY,EAAE,CAAC,CAAC,CAAA;AAAA,EAC1E,CAAA,MAAO;AACL,IAAA,KAAA,EAAM;AAAA,EACR;AACA,EAAA,OAAO,UAAA;AACT;AAEO,SAAS,aACd,EAAA,EACA,OAAA,EACA,WACA,QAAA,GAAmC,YAAA,EACnC,SACA,UAAA,EACS;AACT,EAAA,MAAM,WAAW,OAAA,KAAY,CAAC,SAAiB,EAAA,CAAG,MAAA,CAAO,MAAM,IAAI,CAAA,CAAA;AACnE,EAAA,MAAM,UAAU,IAAI,OAAA,CAAQ,QAAQ,CAAA,CACjC,WAAA,CAAY,oDAAoD,CAAA,CAChE,OAAA,CAAQ,WAAA,EAAa,WAAA,EAAa,uBAAuB,CAAA,CACzD,YAAA,GACA,wBAAA,CAAyB,KAAK,EAC9B,eAAA,CAAgB;AAAA,IACf,QAAA,EAAU,CAAC,GAAA,KAAQ;AACjB,MAAA,EAAA,CAAG,MAAA,CAAO,MAAM,GAAG,CAAA;AAAA,IACrB,CAAA;AAAA,IACA,QAAA,EAAU,CAAC,GAAA,KAAQ;AACjB,MAAA,QAAA,CAAS,GAAG,CAAA;AAAA,IACd;AAAA,GACD,CAAA;AACH,EAAA,OAAA,CAAQ,WAAA,CAAY,SAAS,iBAAiB,CAAA;AAI9C,EAAA,KAAA,MAAW,QAAQ,YAAA,EAAc;AAC/B,IAAA,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,OAAO,CAAA;AAAA,EACxC;AACA,EAAA,KAAA,MAAW,QAAQ,QAAA,EAAU;AAC3B,IAAA,eAAA,CAAgB,OAAA,EAAS,IAAA,EAAM,EAAA,EAAI,OAAA,EAAS,WAAW,UAAU,CAAA;AAAA,EACnE;AACA,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,gBACP,OAAA,EACA,IAAA,EACA,EAAA,EACA,OAAA,EACA,WACA,UAAA,EACM;AACN,EAAA,MAAM,MAAA,GAAS,aAAa,OAAA,EAAS,IAAA,CAAK,KAAK,KAAA,CAAM,CAAA,EAAG,EAAE,CAAC,CAAA;AAC3D,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,IAAA,CAAK,EAAA,CAAG,EAAE,CAAA;AAChC,EAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,IAAA,MAAM,IAAI,MAAM,gCAAgC,CAAA;AAAA,EAClD;AACA,EAAA,MAAM,OAAO,MAAA,CAAO,OAAA,CAAQ,QAAQ,CAAA,CAAE,WAAA,CAAY,KAAK,OAAO,CAAA;AAC9D,EAAA,KAAA,MAAW,GAAA,IAAO,IAAA,CAAK,IAAA,IAAQ,EAAC,EAAG;AACjC,IAAA,MAAM,OAAA,GAAU,IAAI,UAAA,GAAa,CAAA,CAAA,EAAI,IAAI,IAAI,CAAA,CAAA,CAAA,GAAM,CAAA,CAAA,EAAI,GAAA,CAAI,IAAI,CAAA,CAAA,CAAA;AAC/D,IAAA,IAAA,CAAK,QAAA,CAAS,OAAA,EAAS,GAAA,CAAI,OAAO,CAAA;AAAA,EACpC;AACA,EAAA,KAAA,MAAW,IAAA,IAAQ,CAAC,GAAI,IAAA,CAAK,SAAS,EAAC,EAAI,GAAG,YAAY,CAAA,EAAG;AAC3D,IAAA,IAAI,IAAA,CAAK,iBAAiB,MAAA,EAAW;AACnC,MAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,OAAO,CAAA;AAAA,IACrC,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,OAAO,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,OAAA,EAAS,KAAK,YAAY,CAAA;AAAA,IACxD;AAAA,EACF;AACA,EAAA,IAAA,CAAK,WAAA,CAAY,OAAA,EAAS,sBAAA,CAAuB,IAAI,CAAC,CAAA;AACtD,EAAA,IAAA,CAAK,MAAA,CAAO,UAAU,UAAA,KAA0B;AAC9C,IAAA,MAAM,OAAA,GAAU,UAAA,CAAW,EAAA,CAAG,EAAE,CAAA;AAGhC,IAAA,MAAM,KAAA,GAAiC;AAAA,MACrC,GAAG,QAAQ,eAAA;AAAyC,KACtD;AACA,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,CAAA,IAAK,MAAA,CAAO,OAAA;AAAA,MAChC,QAAQ,IAAA;AAA8B,KACxC,EAAG;AACD,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,KAAA,CAAM,GAAG,CAAA,GAAI,KAAA;AAAA,MACf;AAAA,IACF;AACA,IAAA,MAAM,UAAA,GAAA,CAAc,IAAA,CAAK,IAAA,IAAQ,EAAC,EAAG,MAAA;AAAA,MACnC,CAAC,GAAA,EAAK,GAAA,EAAK,KAAA,KAAU;AACnB,QAAA,MAAM,KAAA,GAAQ,WAAW,KAAK,CAAA;AAC9B,QAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAG7B,UAAA,IAAI,GAAA,CAAI,UAAA,IAAc,KAAA,CAAM,IAAA,OAAW,EAAA,EAAI;AACzC,YAAA,MAAM,IAAI,aAAA,CAAc,CAAA,CAAA,EAAI,GAAA,CAAI,IAAI,CAAA,oBAAA,CAAsB,CAAA;AAAA,UAC5D;AACA,UAAA,GAAA,CAAI,GAAA,CAAI,IAAI,CAAA,GAAI,KAAA;AAAA,QAClB;AACA,QAAA,OAAO,GAAA;AAAA,MACT,CAAA;AAAA,MACA;AAAC,KACH;AACA,IAAA,MAAM,MAAM,WAAA,CAAY,EAAE,EAAA,EAAI,KAAA,EAAO,SAAS,CAAA;AAC9C,IAAA,SAAA,GAAY,GAAG,CAAA;AACf,IAAA,MAAM,UAAA,GAAa,EAAE,GAAA,EAAK,IAAA,EAAM,YAAY,KAAA,EAAM;AAClD,IAAA,MAAM,mBAAA,CAAoB,MAAM,UAAU,CAAA;AAC1C,IAAA,MAAM,OAAA,GAAU,MAAM,IAAA,CAAK,GAAA,CAAI,UAAU,CAAA;AACzC,IAAA,IAAI,YAAY,MAAA,EAAW;AACzB,MAAA,SAAA,CAAU,GAAA,EAAK,OAAA,CAAQ,IAAA,EAAM,OAAA,CAAQ,KAAK,CAAA;AAC1C,MAAA,IAAI,OAAA,CAAQ,QAAA,KAAa,MAAA,IAAa,OAAA,CAAQ,aAAa,CAAA,EAAG;AAC5D,QAAA,UAAA,GAAa,QAAQ,QAAQ,CAAA;AAAA,MAC/B;AAAA,IACF;AAAA,EACF,CAAC,CAAA;AACH;AAEA,SAAS,YAAA,CAAa,SAAkB,IAAA,EAAkC;AACxE,EAAA,IAAI,OAAA,GAAU,OAAA;AACd,EAAA,KAAA,MAAW,WAAW,IAAA,EAAM;AAC1B,IAAA,MAAM,QAAA,GAAW,QAAQ,QAAA,CAAS,IAAA,CAAK,CAAC,GAAA,KAAQ,GAAA,CAAI,IAAA,EAAK,KAAM,OAAO,CAAA;AACtE,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,OAAA,GAAU,QAAA;AACV,MAAA;AAAA,IACF;AACA,IAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,OAAO,CAAA,IAAK,EAAA;AAC5C,IAAA,OAAA,GAAU,OAAA,CAAQ,OAAA,CAAQ,OAAO,CAAA,CAAE,YAAY,OAAO,CAAA;AAGtD,IAAA,KAAA,MAAW,QAAQ,YAAA,EAAc;AAC/B,MAAA,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,OAAO,CAAA;AAAA,IACxC;AAAA,EACF;AACA,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,uBAAuB,IAAA,EAA2B;AACzD,EAAA,MAAM,KAAA,GAAkB,CAAC,EAAE,CAAA;AAC3B,EAAA,IAAI,KAAK,KAAA,EAAO;AACd,IAAA,KAAA,CAAM,IAAA,CAAK,cAAc,IAAA,CAAK,KAAA,CAAM,MAAM,CAAA,CAAA,EAAI,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,CAAE,CAAA;AAAA,EACjE;AACA,EAAA,IAAI,IAAA,CAAK,iBAAiB,aAAA,EAAe;AACvC,IAAA,KAAA,CAAM,KAAK,0DAA0D,CAAA;AAAA,EACvE;AACA,EAAA,IAAI,IAAA,CAAK,eAAe,IAAA,EAAM;AAC5B,IAAA,KAAA,CAAM,KAAK,gDAAgD,CAAA;AAAA,EAC7D;AACA,EAAA,KAAA,CAAM,IAAA,CAAK,IAAI,WAAW,CAAA;AAC1B,EAAA,KAAA,MAAW,OAAA,IAAW,KAAK,QAAA,EAAU;AACnC,IAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAAA;AAAA,EAC3B;AACA,EAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AACb,EAAA,OAAO,KAAA,CAAM,KAAK,IAAI,CAAA;AACxB;;;AClRA,SAAS,MAAA,GAAgB;AACvB,EAAA,OAAO;AAAA,IACL,QAAQ,OAAA,CAAQ,MAAA;AAAA,IAChB,QAAQ,OAAA,CAAQ,MAAA;AAAA,IAChB,QAAA,EAAU,OAAA,CAAQ,MAAA,CAAO,KAAA,KAAU,IAAA;AAAA,IACnC,OAAA,EAAS,OAAA,CAAQ,KAAA,CAAM,KAAA,KAAU,IAAA;AAAA,IACjC,KAAK,OAAA,CAAQ,GAAA;AAAA,IACb,WAAW,YAAY;AACrB,MAAA,OAAA,CAAQ,KAAA,CAAM,YAAY,MAAM,CAAA;AAChC,MAAA,IAAI,IAAA,GAAO,EAAA;AACX,MAAA,WAAA,MAAiB,KAAA,IAAS,QAAQ,KAAA,EAAO;AACvC,QAAA,IAAA,IAAQ,KAAA;AAAA,MACV;AACA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,IACA,QAAA,EAAU,OAAO,MAAA,KAAmB;AAClC,MAAA,MAAM,KAAK,eAAA,CAAgB;AAAA,QACzB,OAAO,OAAA,CAAQ,KAAA;AAAA,QACf,QAAQ,OAAA,CAAQ;AAAA,OACjB,CAAA;AACD,MAAA,IAAI;AACF,QAAA,OAAO,MAAM,EAAA,CAAG,QAAA,CAAS,MAAM,CAAA;AAAA,MACjC,CAAA,SAAE;AACA,QAAA,EAAA,CAAG,KAAA,EAAM;AAAA,MACX;AAAA,IACF;AAAA,GACF;AACF;AAEA,OAAA,CAAQ,QAAA,GAAW,MAAM,GAAA,CAAI,OAAA,CAAQ,KAAK,KAAA,CAAM,CAAC,CAAA,EAAG,MAAA,EAAQ,CAAA","file":"bin.js","sourcesContent":["import { BrewApiError } from '@brew.new/sdk'\nimport type { CliContext } from './types'\n\nexport const EXIT_OK = 0\nexport const EXIT_RUNTIME = 1\nexport const EXIT_USAGE = 2\nexport const EXIT_AUTH = 3\nexport const EXIT_CONFIRM = 4\n\n/** Bad invocation: malformed input, unusable flag combinations. */\nexport class CliUsageError extends Error {}\n\n/** Missing or unusable credentials, detected before any request is sent. */\nexport class CliAuthError extends Error {\n readonly suggestion: string\n\n constructor(message: string, suggestion: string) {\n super(message)\n this.suggestion = suggestion\n }\n}\n\n/** The user declined an interactive confirmation prompt. */\nexport class CommandAbortedError extends Error {}\n\n/**\n * Error raised by the `api` escape hatch, mirroring the public API error\n * envelope so it renders and exits exactly like a `BrewApiError`.\n */\nexport class CliApiError extends Error {\n readonly status: number\n readonly code: string\n readonly type: string\n readonly param: string | undefined\n readonly suggestion: string | undefined\n readonly docs: string | undefined\n readonly requestId: string | undefined\n\n constructor(input: {\n readonly status: number\n readonly code: string\n readonly type: string\n readonly message: string\n readonly param?: string\n readonly suggestion?: string\n readonly docs?: string\n readonly requestId?: string\n }) {\n super(input.message)\n this.status = input.status\n this.code = input.code\n this.type = input.type\n this.param = input.param\n this.suggestion = input.suggestion\n this.docs = input.docs\n this.requestId = input.requestId\n }\n}\n\nexport type ConfirmationEnvelope = {\n readonly confirmationRequired: true\n readonly command: string\n readonly summary: string\n readonly confirmCommand: string\n}\n\n/**\n * A destructive command ran without --yes in a non-interactive session.\n * The envelope is the command's machine-readable response: the caller\n * shows `summary` to a human and re-runs `confirmCommand` to proceed.\n */\nexport class ConfirmationRequiredError extends Error {\n readonly envelope: ConfirmationEnvelope\n\n constructor(envelope: ConfirmationEnvelope) {\n super(envelope.summary)\n this.envelope = envelope\n }\n}\n\nexport function toExitCode(error: unknown): number {\n if (error instanceof ConfirmationRequiredError) {\n return EXIT_CONFIRM\n }\n if (error instanceof CliUsageError) {\n return EXIT_USAGE\n }\n if (error instanceof CliAuthError) {\n return EXIT_AUTH\n }\n const status = apiErrorStatus(error)\n if (status === 401 || status === 403) {\n return EXIT_AUTH\n }\n return EXIT_RUNTIME\n}\n\nexport type CliErrorEnvelope = {\n readonly code: string\n readonly type: string\n readonly message: string\n readonly param?: string\n readonly suggestion?: string\n readonly docs?: string\n readonly requestId?: string\n readonly status?: number\n}\n\nexport function toErrorEnvelope(error: unknown): CliErrorEnvelope {\n if (error instanceof BrewApiError || error instanceof CliApiError) {\n return {\n code: error.code,\n type: error.type,\n message: error.message,\n ...(error.param ? { param: error.param } : {}),\n ...(error.suggestion ? { suggestion: error.suggestion } : {}),\n ...(error.docs ? { docs: error.docs } : {}),\n ...(error.requestId ? { requestId: error.requestId } : {}),\n status: error.status,\n }\n }\n if (error instanceof CliAuthError) {\n return {\n code: 'CLI_AUTH',\n type: 'authentication_error',\n message: error.message,\n suggestion: error.suggestion,\n }\n }\n if (error instanceof CliUsageError) {\n return {\n code: 'CLI_USAGE',\n type: 'invalid_request',\n message: error.message,\n }\n }\n if (isTimeoutError(error)) {\n return {\n code: 'CLI_TIMEOUT',\n type: 'service_unavailable',\n message: 'The request timed out before the API responded.',\n suggestion:\n 'Retry the request. Reuse the same Idempotency-Key for a POST request.',\n }\n }\n if (error instanceof CommandAbortedError) {\n return {\n code: 'CLI_ABORTED',\n type: 'invalid_request',\n message: error.message === '' ? 'Aborted.' : error.message,\n }\n }\n let message = error instanceof Error ? error.message : String(error)\n if (error instanceof Error && error.cause !== undefined) {\n const cause =\n error.cause instanceof Error ? error.cause.message : String(error.cause)\n message = `${message} (${cause})`\n }\n return { code: 'CLI_UNEXPECTED', type: 'internal_error', message }\n}\n\nexport function printError(ctx: CliContext, error: unknown): void {\n if (error instanceof ConfirmationRequiredError) {\n ctx.io.stdout.write(`${JSON.stringify(error.envelope)}\\n`)\n if (ctx.mode === 'human') {\n ctx.io.stderr.write(\n `Confirmation required. Review, then re-run to proceed:\\n ${error.envelope.confirmCommand}\\n`\n )\n }\n return\n }\n const envelope = toErrorEnvelope(error)\n if (ctx.mode === 'json') {\n ctx.io.stderr.write(`${JSON.stringify({ error: envelope })}\\n`)\n return\n }\n const lines = [`brew-cli: ${envelope.message}`]\n if (envelope.suggestion) {\n lines.push(envelope.suggestion)\n }\n if (envelope.docs) {\n lines.push(`Docs: ${envelope.docs}`)\n }\n if (envelope.requestId) {\n lines.push(`Request id: ${envelope.requestId}`)\n }\n ctx.io.stderr.write(`${lines.join('\\n')}\\n`)\n}\n\nfunction apiErrorStatus(error: unknown): number | undefined {\n if (error instanceof BrewApiError || error instanceof CliApiError) {\n return error.status\n }\n}\n\nfunction isTimeoutError(error: unknown): boolean {\n return (\n typeof error === 'object' &&\n error !== null &&\n 'name' in error &&\n error.name === 'TimeoutError'\n )\n}\n","import type { CommandInvocation, CommandSpec } from './define-command'\nimport { CommandAbortedError, ConfirmationRequiredError } from './errors'\n\n/**\n * The confirmation protocol for destructive commands:\n * - `--yes` proceeds unconditionally.\n * - An interactive human session gets a y/N prompt.\n * - Everything else (agents, pipes, CI) receives exit code 4 and a JSON\n * envelope on stdout whose `confirmCommand` re-runs the call with --yes.\n */\nexport async function enforceConfirmation(\n spec: CommandSpec,\n invocation: CommandInvocation\n): Promise<void> {\n if (!spec.confirmSummary) {\n return\n }\n const summary = spec.confirmSummary({\n args: invocation.args,\n flags: invocation.flags,\n })\n if (summary === undefined) {\n return\n }\n const { ctx } = invocation\n if (ctx.globals.yes) {\n return\n }\n if (ctx.mode === 'human' && ctx.io.isTtyIn) {\n const answer = await ctx.io.readLine(`${summary}\\nProceed? [y/N] `)\n const normalized = answer.trim().toLowerCase()\n if (normalized === 'y' || normalized === 'yes') {\n return\n }\n throw new CommandAbortedError('Aborted.')\n }\n throw new ConfirmationRequiredError({\n confirmationRequired: true,\n command: ['brew-cli', ...spec.path].join(' '),\n summary,\n confirmCommand: buildConfirmCommand(ctx.rawArgv),\n })\n}\n\nexport function buildConfirmCommand(rawArgv: readonly string[]): string {\n // The envelope goes to stdout and into agent transcripts — never echo a\n // raw credential back. The re-run resolves the key from env/config.\n const tokens: string[] = []\n for (let index = 0; index < rawArgv.length; index += 1) {\n const token = rawArgv[index]\n if (token === undefined) {\n continue\n }\n if (token === '--api-key') {\n index += 1\n continue\n }\n if (token.startsWith('--api-key=')) {\n continue\n }\n tokens.push(shellQuote(token))\n }\n return ['brew-cli', ...tokens, '--yes'].join(' ')\n}\n\nfunction shellQuote(token: string): string {\n if (/^[A-Za-z0-9@%+=:,./_-]+$/.test(token)) {\n return token\n }\n return `'${token.replaceAll(\"'\", String.raw`'\\''`)}'`\n}\n","declare const __CLI_VERSION__: string | undefined\n\nexport const CLI_NAME = 'brew-cli'\n\nexport const CLI_VERSION =\n typeof __CLI_VERSION__ === 'string' ? __CLI_VERSION__ : '0.0.0-dev'\n","import { chmodSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'\nimport { homedir } from 'node:os'\nimport { join } from 'node:path'\n\nexport type StoredConfig = {\n readonly apiKey?: string\n readonly brandId?: string\n readonly apiUrl?: string\n}\n\nconst CONFIG_KEYS = ['apiKey', 'brandId', 'apiUrl'] as const\n\nexport type ConfigKey = (typeof CONFIG_KEYS)[number]\n\nexport function isConfigKey(value: string): value is ConfigKey {\n return (CONFIG_KEYS as readonly string[]).includes(value)\n}\n\nexport function configDir(\n env: Readonly<Record<string, string | undefined>>\n): string {\n const override = env.BREW_CLI_CONFIG_DIR\n if (override !== undefined && override !== '') {\n return override\n }\n const xdg = env.XDG_CONFIG_HOME\n const base =\n xdg !== undefined && xdg !== '' ? xdg : join(homedir(), '.config')\n return join(base, 'brew-cli')\n}\n\nexport function configPath(\n env: Readonly<Record<string, string | undefined>>\n): string {\n return join(configDir(env), 'config.json')\n}\n\nexport function readConfig(\n env: Readonly<Record<string, string | undefined>>\n): StoredConfig {\n try {\n const raw = readFileSync(configPath(env), 'utf8')\n const parsed: unknown = JSON.parse(raw)\n if (parsed === null || typeof parsed !== 'object') {\n return {}\n }\n const record = parsed as Record<string, unknown>\n const config: Record<string, string> = {}\n for (const key of CONFIG_KEYS) {\n const value = record[key]\n if (typeof value === 'string' && value !== '') {\n config[key] = value\n }\n }\n return config\n } catch {\n return {}\n }\n}\n\n/** Writes the config file with owner-only permissions (0600 / dir 0700). */\nexport function writeConfig(\n env: Readonly<Record<string, string | undefined>>,\n config: StoredConfig\n): string {\n const dir = configDir(env)\n mkdirSync(dir, { recursive: true, mode: 0o700 })\n const path = configPath(env)\n const compact: Record<string, string> = {}\n for (const key of CONFIG_KEYS) {\n const value = config[key]\n if (value !== undefined && value !== '') {\n compact[key] = value\n }\n }\n writeFileSync(path, `${JSON.stringify(compact, null, 2)}\\n`, { mode: 0o600 })\n chmodSync(path, 0o600)\n return path\n}\n\nexport function updateConfig(\n env: Readonly<Record<string, string | undefined>>,\n patch: Readonly<Partial<Record<ConfigKey, string | undefined>>>\n): string {\n const current: Record<string, string | undefined> = { ...readConfig(env) }\n for (const key of CONFIG_KEYS) {\n if (key in patch) {\n current[key] = patch[key]\n }\n }\n return writeConfig(env, current)\n}\n","import { createBrewClient } from '@brew.new/sdk'\nimport { CLI_NAME, CLI_VERSION } from '../version'\nimport { readConfig } from './config-store'\nimport { CliAuthError } from './errors'\nimport type { GlobalFlags } from './types'\n\nexport type BrewClient = ReturnType<typeof createBrewClient>\n\nexport const DEFAULT_API_URL = 'https://brew.new/api'\n\nexport const LOGIN_KEYS_URL = 'https://brew.new/settings/api'\n\n/**\n * Placeholder key for the unauthenticated endpoints (health, help,\n * llms.txt). The SDK requires a non-empty key; the server ignores it.\n */\nexport const ANONYMOUS_API_KEY = 'brew_anonymous'\n\n/**\n * Organization-level route prefixes. These ride the org transport and must\n * never receive an X-Brand-Id header (the server ignores it there, but the\n * SDK's own withBrand keeps the same discipline).\n */\nconst ORG_LEVEL_PATH_PREFIXES = [\n '/v1/brands',\n '/v1/usage',\n '/v1/templates',\n '/v1/health',\n '/v1/help',\n '/v1/llms.txt',\n '/v1/api-keys',\n] as const\n\nexport type AuthSource = 'anonymous' | 'config' | 'env' | 'flag'\n\nexport type ResolvedAuth = {\n readonly apiKey: string\n readonly apiKeySource: AuthSource\n readonly brandId: string | undefined\n readonly apiUrl: string\n}\n\nexport function resolveAuth(input: {\n readonly globals: GlobalFlags\n readonly env: Readonly<Record<string, string | undefined>>\n readonly allowAnonymous?: boolean\n}): ResolvedAuth {\n const { globals, env } = input\n const stored = readConfig(env)\n const keyFromFlag = globals.apiKey\n const keyFromEnv = readEnvValue(env.BREW_API_KEY)\n const keyFromConfig = stored.apiKey\n const apiKey = keyFromFlag ?? keyFromEnv ?? keyFromConfig\n const apiUrl =\n globals.apiUrl ??\n readEnvValue(env.BREW_API_URL) ??\n stored.apiUrl ??\n DEFAULT_API_URL\n const brandId =\n globals.brand ?? readEnvValue(env.BREW_BRAND_ID) ?? stored.brandId\n if (!apiKey) {\n if (input.allowAnonymous === true) {\n return {\n apiKey: ANONYMOUS_API_KEY,\n apiKeySource: 'anonymous',\n brandId,\n apiUrl,\n }\n }\n throw new CliAuthError(\n 'No API key found.',\n `Run \\`brew-cli login\\`, set BREW_API_KEY, or pass --api-key. Create keys at ${LOGIN_KEYS_URL}`\n )\n }\n const apiKeySource: AuthSource = keyFromFlag\n ? 'flag'\n : keyFromEnv\n ? 'env'\n : 'config'\n return { apiKey, apiKeySource, brandId, apiUrl }\n}\n\nexport function buildSdkClient(auth: ResolvedAuth): BrewClient {\n return createBrewClient({\n apiKey: auth.apiKey,\n baseUrl: auth.apiUrl,\n userAgent: `${CLI_NAME}/${CLI_VERSION}`,\n ...(auth.brandId === undefined ? {} : { brandId: auth.brandId }),\n })\n}\n\nexport function isOrgLevelPath(url: string): boolean {\n let pathname: string\n try {\n pathname = new URL(url).pathname\n } catch {\n pathname = url.split('?')[0] ?? url\n }\n const versionIndex = pathname.indexOf('/v1/')\n if (versionIndex === -1) {\n return false\n }\n const apiPath = pathname.slice(versionIndex)\n return ORG_LEVEL_PATH_PREFIXES.some(\n (prefix) => apiPath === prefix || apiPath.startsWith(`${prefix}/`)\n )\n}\n\nexport function maskApiKey(apiKey: string): string {\n if (apiKey.length <= 12) {\n return `${apiKey.slice(0, 3)}…`\n }\n return `${apiKey.slice(0, 8)}…${apiKey.slice(-3)}`\n}\n\nfunction readEnvValue(value: string | undefined): string | undefined {\n return value !== undefined && value !== '' ? value : undefined\n}\n","import type { CliContext, OutputMode } from './types'\n\nexport function resolveOutputMode(input: {\n readonly isJsonFlag: boolean\n readonly isTtyOut: boolean\n}): OutputMode {\n if (input.isJsonFlag) {\n return 'json'\n }\n return input.isTtyOut ? 'human' : 'json'\n}\n\n/**\n * Command data goes to stdout and nowhere else. JSON mode prints the API\n * payload verbatim (compact, one line) so pipes and agents get the exact\n * SDK envelope; human mode prefers the command's rendering when provided.\n */\nexport function printData(\n ctx: CliContext,\n data: unknown,\n human?: string\n): void {\n if (ctx.mode === 'json') {\n ctx.io.stdout.write(`${JSON.stringify(data)}\\n`)\n return\n }\n const text = human ?? JSON.stringify(data, null, 2)\n ctx.io.stdout.write(`${text}\\n`)\n}\n\n/** Progress and status lines go to stderr and honor --quiet. */\nexport function progress(ctx: CliContext, message: string): void {\n if (ctx.globals.quiet) {\n return\n }\n ctx.io.stderr.write(`${message}\\n`)\n}\n\nexport function renderTable(\n rows: ReadonlyArray<Record<string, unknown>>,\n columns: ReadonlyArray<{ readonly key: string; readonly header: string }>\n): string {\n const widths = columns.map((column) =>\n Math.max(\n column.header.length,\n ...rows.map((row) => formatCell(row[column.key]).length)\n )\n )\n const line = (cells: readonly string[]) =>\n cells\n .map((cell, index) => cell.padEnd(widths[index] ?? 0))\n .join(' ')\n .trimEnd()\n const header = line(columns.map((column) => column.header))\n const body = rows.map((row) =>\n line(columns.map((column) => formatCell(row[column.key])))\n )\n return [header, ...body].join('\\n')\n}\n\nfunction formatCell(value: unknown): string {\n if (value === null || value === undefined) {\n return ''\n }\n if (typeof value === 'object') {\n return JSON.stringify(value)\n }\n return String(value)\n}\n","import type { BrewClient } from './client'\nimport { buildSdkClient, resolveAuth } from './client'\nimport { resolveOutputMode } from './output'\nimport type { CliContext, ClientOptions, CliIo, GlobalFlags } from './types'\n\nexport function makeContext(input: {\n readonly io: CliIo\n readonly flags: Readonly<Record<string, unknown>>\n readonly rawArgv: readonly string[]\n}): CliContext {\n const globals = readGlobalFlags(input.flags)\n const mode = resolveOutputMode({\n isJsonFlag: globals.json,\n isTtyOut: input.io.isTtyOut,\n })\n const cache = new Map<string, BrewClient>()\n return {\n io: input.io,\n mode,\n globals,\n rawArgv: input.rawArgv,\n client: (options?: ClientOptions) => {\n const key = options?.allowAnonymous === true ? 'anonymous' : 'authed'\n const existing = cache.get(key)\n if (existing) {\n return existing\n }\n const auth = resolveAuth({\n globals,\n env: input.io.env,\n allowAnonymous: options?.allowAnonymous === true,\n })\n const client = buildSdkClient(auth)\n cache.set(key, client)\n return client\n },\n }\n}\n\n/**\n * Fallback context for failures that happen before a command action runs\n * (usage errors, help). Only argv can tell us whether --json was intended.\n */\nexport function makeFallbackContext(\n io: CliIo,\n rawArgv: readonly string[]\n): CliContext {\n const flags: Record<string, unknown> = {\n json: rawArgv.includes('--json'),\n quiet: rawArgv.includes('--quiet'),\n }\n return makeContext({ io, flags, rawArgv })\n}\n\nfunction readGlobalFlags(\n flags: Readonly<Record<string, unknown>>\n): GlobalFlags {\n return {\n json: flags.json === true,\n quiet: flags.quiet === true,\n yes: flags.yes === true,\n apiKey: readStringFlag(flags.apiKey),\n brand: readStringFlag(flags.brand),\n apiUrl: readStringFlag(flags.apiUrl),\n }\n}\n\nfunction readStringFlag(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined\n}\n","import type { CliContext } from './types'\n\nexport type HttpMethod = 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT'\n\n/**\n * read — no writes; always safe.\n * write — mutates state but is safe to retry / reversible in-app.\n * destructive — irreversible or outward-facing (sends, deletes); runs the\n * confirmation protocol and must declare `confirmSummary`.\n */\nexport type CommandClass = 'destructive' | 'read' | 'write'\n\nexport type ArgSpec = {\n /** camelCase name, also the key in `invocation.args`. */\n readonly name: string\n readonly summary: string\n readonly isRequired: boolean\n}\n\nexport type FlagSpec = {\n /** commander syntax, e.g. `--limit <n>` or `--test`. */\n readonly flag: string\n readonly summary: string\n readonly defaultValue?: string | boolean\n}\n\nexport type CommandInvocation = {\n readonly ctx: CliContext\n readonly args: Readonly<Record<string, string>>\n readonly flags: Readonly<Record<string, unknown>>\n}\n\nexport type CommandOutcome = {\n /** The payload printed to stdout (verbatim in JSON mode). */\n readonly data: unknown\n /** Optional human rendering (tables, summaries) for TTY output. */\n readonly human?: string\n /**\n * Optional non-zero exit code for commands whose payload IS the result\n * of a check (e.g. doctor): the report prints normally, then the\n * process exits with this code so agents can gate on it.\n */\n readonly exitCode?: number\n}\n\nexport type CommandSpec = {\n /** Command path, e.g. ['automations', 'triggers', 'fire']. */\n readonly path: readonly string[]\n readonly summary: string\n /**\n * Dotted path of the SDK method this command binds (`contacts.upsert`),\n * or null for CLI-native commands. Derived sugar commands set null here\n * and name their backing method in `derivedFrom`.\n */\n readonly sdkMethod: string | null\n readonly derivedFrom?: string\n /** The public API operation behind this command — the spec join key. */\n readonly route?: {\n readonly method: HttpMethod\n readonly path: string\n }\n readonly commandClass: CommandClass\n /** True when the operation consumes Brew credits. */\n readonly isCredited?: boolean\n /**\n * True when the command calls the API through the raw transport because\n * the published SDK does not expose the operation yet. Swap to the SDK\n * method (and drop this marker) when the SDK ships it.\n */\n readonly isRawTransport?: boolean\n readonly args?: readonly ArgSpec[]\n readonly flags?: readonly FlagSpec[]\n /** At least one realistic invocation; shown in help and the manifest. */\n readonly examples: readonly string[]\n /**\n * Destructive commands describe what is about to happen. Returning\n * undefined skips the gate for the given invocation (e.g. a dry run).\n */\n readonly confirmSummary?: (\n invocation: Omit<CommandInvocation, 'ctx'>\n ) => string | undefined\n readonly run: (\n invocation: CommandInvocation\n ) => Promise<CommandOutcome | undefined>\n}\n\n/** Identity helper that pins the spec type at the definition site. */\nexport function defineCommand(spec: CommandSpec): CommandSpec {\n return spec\n}\n\nexport const GLOBAL_FLAGS: readonly FlagSpec[] = [\n {\n flag: '--json',\n summary: 'JSON output (automatic when stdout is not a TTY)',\n },\n { flag: '--quiet', summary: 'Suppress progress messages on stderr' },\n {\n flag: '--yes',\n summary: 'Skip the confirmation gate on destructive commands',\n },\n {\n flag: '--api-key <key>',\n summary: 'Brew API key (else BREW_API_KEY, else stored login)',\n },\n {\n flag: '--brand <brandId>',\n summary: 'Brand id for organization-scoped keys (else BREW_BRAND_ID)',\n },\n {\n flag: '--api-url <url>',\n summary: 'API base URL (else BREW_API_URL, else https://brew.new/api)',\n },\n]\n","import { readFileSync } from 'node:fs'\nimport { CliUsageError } from './errors'\nimport type { CliContext } from './types'\n\n/**\n * The single deliberate boundary cast from user-supplied JSON to an SDK\n * input type. The public API strictly validates every request server-side\n * (the Zod contracts upstream of the OpenAPI spec); the CLI does not\n * duplicate those schemas.\n */\nexport function asSdkInput<T>(value: unknown): T {\n return value as T\n}\n\n/** Reads `--input <json|->`; `-` consumes stdin. */\nexport async function readJsonFlag(\n ctx: CliContext,\n value: unknown,\n flagName: string\n): Promise<unknown> {\n if (typeof value !== 'string') {\n return\n }\n const raw = value === '-' ? await ctx.io.readStdin() : value\n try {\n return JSON.parse(raw) as unknown\n } catch {\n throw new CliUsageError(\n `${flagName} must be valid JSON (or - to read stdin)`\n )\n }\n}\n\n/** Reads `--file <path|->`; `-` consumes stdin. */\nexport async function readTextFlag(\n ctx: CliContext,\n value: unknown,\n flagName: string\n): Promise<string | undefined> {\n if (typeof value !== 'string') {\n return\n }\n if (value === '-') {\n return await ctx.io.readStdin()\n }\n try {\n return readFileSync(value, 'utf8')\n } catch {\n throw new CliUsageError(`${flagName}: cannot read file \"${value}\"`)\n }\n}\n\n/** Parses repeatable `key=value` flag values into a record. */\nexport function parseKeyValues(\n value: unknown,\n flagName: string\n): Record<string, string> | undefined {\n const items = toStringArray(value)\n if (items === undefined) {\n return\n }\n const record: Record<string, string> = {}\n for (const item of items) {\n const separator = item.indexOf('=')\n if (separator <= 0) {\n throw new CliUsageError(\n `${flagName}: expected key=value, received \"${item}\"`\n )\n }\n record[item.slice(0, separator)] = item.slice(separator + 1)\n }\n return record\n}\n\n/**\n * Parses repeatable `--filter field:operator[:value]` values into the\n * API's structured contact filter shape.\n */\nexport function parseFilterFlags(\n value: unknown\n): ReadonlyArray<Record<string, string>> | undefined {\n const items = toStringArray(value)\n if (items === undefined) {\n return\n }\n return items.map((item) => {\n const [field, operator, ...rest] = item.split(':')\n if (!field || !operator) {\n throw new CliUsageError(\n `--filter: expected field:operator[:value], received \"${item}\"`\n )\n }\n return {\n field,\n operator,\n ...(rest.length === 0 ? {} : { value: rest.join(':') }),\n }\n })\n}\n\n/** Merges ergonomic flag overrides over a `--input` JSON body. */\nexport function mergeInput(\n base: unknown,\n overrides: Readonly<Record<string, unknown>>\n): Record<string, unknown> {\n if (base !== undefined && (base === null || typeof base !== 'object')) {\n throw new CliUsageError('--input must be a JSON object')\n }\n const merged: Record<string, unknown> = {\n ...((base as Record<string, unknown> | undefined) ?? {}),\n }\n for (const [key, value] of Object.entries(overrides)) {\n if (value !== undefined) {\n merged[key] = value\n }\n }\n return merged\n}\n\nexport function flagString(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined\n}\n\nexport function flagInt(value: unknown, flagName: string): number | undefined {\n if (value === undefined) {\n return\n }\n const parsed = Number(value)\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new CliUsageError(`${flagName} must be a positive integer`)\n }\n return parsed\n}\n\nexport function toStringArray(value: unknown): readonly string[] | undefined {\n if (Array.isArray(value)) {\n const items = value.filter(\n (item): item is string => typeof item === 'string'\n )\n return items.length > 0 ? items : undefined\n }\n return typeof value === 'string' ? [value] : undefined\n}\n\n/** Per-request SDK options derived from shared mutation flags. */\nexport function requestOptions(\n flags: Readonly<Record<string, unknown>>\n): { idempotencyKey: string } | undefined {\n const key = flagString(flags.idempotencyKey)\n return key === undefined ? undefined : { idempotencyKey: key }\n}\n\nexport const IDEMPOTENCY_FLAG = {\n flag: '--idempotency-key <key>',\n summary: 'Idempotency-Key for safe retries (auto-generated otherwise)',\n} as const\n\nexport const INPUT_FLAG = {\n flag: '--input <json>',\n summary: 'Full JSON request body, or - to read stdin (flags override it)',\n} as const\n","import { progress } from './output'\nimport type { CliContext } from './types'\n\nexport type Page<T> = {\n readonly data: ReadonlyArray<T>\n readonly pagination?: {\n readonly cursor: string | null\n }\n}\n\n/**\n * Drains a cursor-paginated list for `--all`. The API contract keeps\n * `pagination.cursor` string-or-null (never omitted); a repeated cursor\n * aborts the loop as a defense against a server-side pagination bug.\n */\nexport async function collectAll<T>(\n ctx: CliContext,\n fetchPage: (cursor: string | undefined) => Promise<Page<T>>\n): Promise<ReadonlyArray<T>> {\n const rows: T[] = []\n let cursor: string | undefined\n let pageCount = 0\n for (;;) {\n const page = await fetchPage(cursor)\n rows.push(...page.data)\n pageCount += 1\n const next = page.pagination?.cursor ?? null\n if (next === null || next === cursor) {\n return rows\n }\n cursor = next\n progress(ctx, `Fetched ${rows.length} rows (page ${pageCount})…`)\n }\n}\n\n/** The `--all` flag shared by paginated list commands. */\nexport const ALL_FLAG = {\n flag: '--all',\n summary: 'Follow the cursor and return every page as one result',\n} as const\n\nexport const LIMIT_FLAG = {\n flag: '--limit <n>',\n summary: 'Page size, 1-100 (default 100)',\n} as const\n\nexport const CURSOR_FLAG = {\n flag: '--cursor <cursor>',\n summary: 'Opaque pagination cursor from a previous page',\n} as const\n","import type { AutomationAnalyticsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport { LIMIT_FLAG } from '../../lib/paginate'\n\nexport const analyticsAutomationsCommand = defineCommand({\n path: ['analytics', 'automations'],\n summary: 'Windowed per-automation performance + totals',\n sdkMethod: 'analytics.automations',\n route: { method: 'GET', path: '/v1/analytics/automations' },\n commandClass: 'read',\n flags: [\n { flag: '--since <datetime>', summary: 'Window start (ISO-8601)' },\n { flag: '--until <datetime>', summary: 'Window end (ISO-8601)' },\n {\n flag: '--automation <automationId>',\n summary: 'Narrow to one automation',\n },\n LIMIT_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli analytics automations',\n 'brew-cli analytics automations --since 2026-07-01 --until 2026-08-01',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n from: flagString(flags.since),\n to: flagString(flags.until),\n automationId: flagString(flags.automation),\n limit: flagInt(flags.limit, '--limit'),\n })\n const result = await ctx\n .client()\n .analytics.automations(asSdkInput<AutomationAnalyticsInput>(input))\n return { data: result, human: renderAutomationRows(result.data) }\n },\n})\n\nfunction renderAutomationRows(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No automation analytics rows.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'automationId', header: 'AUTOMATION' },\n { key: 'name', header: 'NAME' },\n { key: 'runs', header: 'RUNS' },\n { key: 'completed', header: 'COMPLETED' },\n { key: 'failed', header: 'FAILED' },\n { key: 'openRate', header: 'OPEN RATE' },\n ])\n}\n","import type { CampaignAnalyticsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const analyticsCampaignsCommand = defineCommand({\n path: ['analytics', 'campaigns'],\n summary: 'Lifetime per-campaign KPIs (sent, opened, clicked, bounced)',\n sdkMethod: 'analytics.campaigns',\n route: { method: 'GET', path: '/v1/analytics/campaigns' },\n commandClass: 'read',\n flags: [LIMIT_FLAG, CURSOR_FLAG, ALL_FLAG, INPUT_FLAG],\n examples: [\n 'brew-cli analytics campaigns',\n 'brew-cli analytics campaigns --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const analytics = ctx.client().analytics\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n analytics.campaigns(\n asSdkInput<CampaignAnalyticsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderCampaigns(rows),\n }\n }\n const result = await analytics.campaigns(\n asSdkInput<CampaignAnalyticsInput>(input)\n )\n return { data: result, human: renderCampaigns(result.data) }\n },\n})\n\nfunction renderCampaigns(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No campaign analytics rows.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'sendId', header: 'SEND' },\n { key: 'title', header: 'TITLE' },\n { key: 'status', header: 'STATUS' },\n { key: 'sentAt', header: 'SENT AT' },\n ])\n}\n","import type { EventsAnalyticsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const analyticsEventsCommand = defineCommand({\n path: ['analytics', 'events'],\n summary: 'Unified event explorer (email, automation, trigger, inbound)',\n sdkMethod: 'analytics.events',\n route: { method: 'GET', path: '/v1/analytics/events' },\n commandClass: 'read',\n flags: [\n { flag: '--since <datetime>', summary: 'Window start (ISO-8601)' },\n { flag: '--until <datetime>', summary: 'Window end (ISO-8601)' },\n { flag: '--recipient <email>', summary: 'Filter by recipient email' },\n {\n flag: '--event-type <type>',\n summary: 'Filter by event type (e.g. opened, clicked)',\n },\n { flag: '--automation <automationId>', summary: 'Filter by automation' },\n { flag: '--send <sendId>', summary: 'Filter by campaign send' },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli analytics events --since 2026-08-01 --event-type clicked',\n 'brew-cli analytics events --recipient jane@example.com --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n from: flagString(flags.since),\n to: flagString(flags.until),\n recipientEmail: flagString(flags.recipient),\n eventType: flagString(flags.eventType),\n automationId: flagString(flags.automation),\n sendId: flagString(flags.send),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const analytics = ctx.client().analytics\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n analytics.events(\n asSdkInput<EventsAnalyticsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderEvents(rows),\n }\n }\n const result = await analytics.events(\n asSdkInput<EventsAnalyticsInput>(input)\n )\n return { data: result, human: renderEvents(result.data) }\n },\n})\n\nfunction renderEvents(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No events matched.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'occurredAt', header: 'OCCURRED' },\n { key: 'domain', header: 'DOMAIN' },\n { key: 'eventType', header: 'EVENT' },\n { key: 'recipientEmail', header: 'RECIPIENT' },\n ])\n}\n","import type { AnalyticsOverviewInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, flagString } from '../../lib/input'\n\nexport const analyticsOverviewCommand = defineCommand({\n path: ['analytics', 'overview'],\n summary: 'Brand overview: totals, rates, timeseries (default last 7 days)',\n sdkMethod: 'analytics.overview',\n route: { method: 'GET', path: '/v1/analytics/overview' },\n commandClass: 'read',\n flags: [\n {\n flag: '--since <datetime>',\n summary: 'Window start (ISO-8601, default 7 days ago)',\n },\n {\n flag: '--until <datetime>',\n summary: 'Window end (ISO-8601, default now)',\n },\n {\n flag: '--source <sources>',\n summary:\n 'CSV of send sources: audience, api, automation_manual, automation_integration, automation_custom',\n },\n {\n flag: '--automation-id <ids>',\n summary: 'CSV of automation ids (max 20)',\n },\n { flag: '--email-id <emailId>', summary: 'Scope to one email design' },\n { flag: '--audience-id <ids>', summary: 'CSV of audience ids (max 20)' },\n {\n flag: '--trigger-event-id <ids>',\n summary: 'CSV of integration trigger-event ids (max 10)',\n },\n { flag: '--domain <domain>', summary: 'Sending domain (fromEmail match)' },\n {\n flag: '--recipient <rules>',\n summary:\n 'CSV of recipient rules: full address, @domain, substring; prefix ! to exclude',\n },\n ],\n examples: [\n 'brew-cli analytics overview',\n 'brew-cli analytics overview --since 2026-08-01T00:00:00Z --source audience --json',\n ],\n run: async ({ ctx, flags }) => ({\n data: await ctx.client().analytics.overview(\n asSdkInput<AnalyticsOverviewInput>({\n from: flagString(flags.since),\n to: flagString(flags.until),\n source: flagString(flags.source),\n automationId: flagString(flags.automationId),\n emailId: flagString(flags.emailId),\n audienceId: flagString(flags.audienceId),\n triggerEventId: flagString(flags.triggerEventId),\n domain: flagString(flags.domain),\n recipient: flagString(flags.recipient),\n })\n ),\n }),\n})\n","import type { ListSendsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliApiError } from '../../../lib/errors'\nimport { asSdkInput, flagString } from '../../../lib/input'\n\nexport const analyticsSendsGetCommand = defineCommand({\n path: ['analytics', 'sends', 'get'],\n summary: 'Fetch one send by id',\n sdkMethod: null,\n derivedFrom: 'analytics.sends.list',\n route: { method: 'GET', path: '/v1/analytics/sends' },\n commandClass: 'read',\n args: [\n {\n name: 'sendId',\n summary: 'Id of the send',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: events',\n },\n ],\n examples: [\n 'brew-cli analytics sends get snd_123',\n 'brew-cli analytics sends get snd_123 --include events',\n ],\n run: async ({ ctx, args, flags }) => {\n const sendId = args.sendId ?? ''\n const include = flagString(flags.include)\n const result = await ctx.client().analytics.sends.list(\n asSdkInput<ListSendsInput>({\n sendId,\n ...(include === undefined ? {} : { include }),\n })\n )\n const send = result.data[0]\n if (send === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'SEND_NOT_FOUND',\n type: 'not_found',\n message: `No send found for ${sendId}`,\n suggestion: 'List sends with `brew-cli analytics sends list`.',\n })\n }\n return { data: send }\n },\n})\n","import type { ListSendsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const analyticsSendsListCommand = defineCommand({\n path: ['analytics', 'sends', 'list'],\n summary: 'List campaign/automation sends with delivery stats',\n sdkMethod: 'analytics.sends.list',\n route: { method: 'GET', path: '/v1/analytics/sends' },\n commandClass: 'read',\n flags: [\n { flag: '--send <sendId>', summary: 'Fetch one send (single-row page)' },\n { flag: '--email <emailId>', summary: 'Filter by email design' },\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: events',\n },\n {\n flag: '--status <status>',\n summary: 'scheduled | queued | sending | sent | failed | canceled',\n },\n { flag: '--since <datetime>', summary: 'Window start (ISO-8601)' },\n { flag: '--until <datetime>', summary: 'Window end (ISO-8601)' },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli analytics sends list --status sent',\n 'brew-cli analytics sends list --email em_123 --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n sendId: flagString(flags.send),\n emailId: flagString(flags.email),\n include: flagString(flags.include),\n status: flagString(flags.status),\n from: flagString(flags.since),\n to: flagString(flags.until),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const sends = ctx.client().analytics.sends\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n sends.list(\n asSdkInput<ListSendsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderSends(rows),\n }\n }\n const result = await sends.list(asSdkInput<ListSendsInput>(input))\n return { data: result, human: renderSends(result.data) }\n },\n})\n\nfunction renderSends(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No sends found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'sendId', header: 'SEND' },\n { key: 'kind', header: 'KIND' },\n { key: 'status', header: 'STATUS' },\n { key: 'subject', header: 'SUBJECT' },\n ])\n}\n","import type { ListTriggerInstancesInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const analyticsTriggerInstancesListCommand = defineCommand({\n path: ['analytics', 'trigger-instances', 'list'],\n summary: 'List fired-trigger instances (ingest + match history)',\n sdkMethod: 'analytics.triggerInstances.list',\n route: { method: 'GET', path: '/v1/analytics/trigger-instances' },\n commandClass: 'read',\n flags: [\n {\n flag: '--trigger <triggerEventId>',\n summary: 'Filter by trigger event',\n },\n {\n flag: '--trigger-instance <triggerInstanceId>',\n summary: 'Fetch one instance (single-row page)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli analytics trigger-instances list --trigger tev_123',\n 'brew-cli analytics trigger-instances list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n triggerEventId: flagString(flags.trigger),\n triggerInstanceId: flagString(flags.triggerInstance),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const triggerInstances = ctx.client().analytics.triggerInstances\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n triggerInstances.list(\n asSdkInput<ListTriggerInstancesInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderInstances(rows),\n }\n }\n const result = await triggerInstances.list(\n asSdkInput<ListTriggerInstancesInput>(input)\n )\n return { data: result, human: renderInstances(result.data) }\n },\n})\n\nfunction renderInstances(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No trigger instances found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'triggerInstanceId', header: 'INSTANCE' },\n { key: 'source', header: 'SOURCE' },\n { key: 'state', header: 'STATE' },\n { key: 'receivedAt', header: 'RECEIVED' },\n ])\n}\n","import { CLI_NAME, CLI_VERSION } from '../version'\nimport type { ResolvedAuth } from './client'\nimport { isOrgLevelPath, resolveAuth } from './client'\nimport { CliApiError } from './errors'\nimport type { CliContext } from './types'\n\n/**\n * Minimal typed transport for public-API operations the published SDK does\n * not expose yet. Shares auth resolution, the X-Brand-Id policy, and\n * error-envelope mapping with the `api` escape hatch. Each caller swaps to\n * the SDK method when it ships — the parity-sdk sentinel flags the moment\n * that becomes possible. Unlike the SDK transport, raw calls are\n * single-attempt (no retry loop). POST calls receive an invocation-scoped\n * idempotency key automatically; callers can provide a stable key when they\n * need to replay safely across process restarts.\n */\nexport async function rawRequest<TResponse>(\n ctx: CliContext,\n request: {\n readonly method: 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT'\n readonly path: string\n readonly body?: unknown\n readonly query?: Readonly<Record<string, string | undefined>>\n readonly idempotencyKey?: string | undefined\n readonly allowAnonymous?: boolean\n readonly signal?: AbortSignal\n }\n): Promise<TResponse> {\n const auth = resolveAuth({\n globals: ctx.globals,\n env: ctx.io.env,\n ...(request.allowAnonymous === true ? { allowAnonymous: true } : {}),\n })\n const hasBody = request.body !== undefined\n const idempotencyKey = resolveRawIdempotencyKey(\n request.method,\n request.idempotencyKey\n )\n const headers = buildRawHeaders({\n auth,\n path: request.path,\n hasJsonBody: hasBody,\n idempotencyKey,\n })\n const url = new URL(`${auth.apiUrl}${request.path}`)\n for (const [key, value] of Object.entries(request.query ?? {})) {\n if (value !== undefined) {\n url.searchParams.set(key, value)\n }\n }\n const response = await fetch(url, {\n method: request.method,\n headers,\n ...(hasBody ? { body: JSON.stringify(request.body) } : {}),\n ...(request.signal === undefined ? {} : { signal: request.signal }),\n })\n const text = await response.text()\n const parsed = tryParseJson(text)\n if (!response.ok) {\n throw responseToApiError(response, parsed)\n }\n if (parsed === undefined) {\n throw new CliApiError({\n status: response.status,\n code: 'UNEXPECTED_RESPONSE',\n type: 'internal_error',\n message: 'The API returned a non-JSON success response.',\n })\n }\n return parsed as TResponse\n}\n\nfunction resolveRawIdempotencyKey(\n method: 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT',\n provided: string | undefined\n): string | undefined {\n if (provided !== undefined && provided !== '') {\n return provided\n }\n return method === 'POST' ? crypto.randomUUID() : undefined\n}\n\nexport function buildRawHeaders(input: {\n readonly auth: ResolvedAuth\n readonly path: string\n readonly hasJsonBody: boolean\n readonly idempotencyKey?: string | undefined\n}): Headers {\n const headers = new Headers({\n authorization: `Bearer ${input.auth.apiKey}`,\n 'user-agent': `${CLI_NAME}/${CLI_VERSION}`,\n accept: 'application/json, text/plain;q=0.9',\n })\n if (input.hasJsonBody) {\n headers.set('content-type', 'application/json')\n }\n if (input.auth.brandId !== undefined && !isOrgLevelPath(input.path)) {\n headers.set('x-brand-id', input.auth.brandId)\n }\n if (input.idempotencyKey !== undefined && input.idempotencyKey !== '') {\n headers.set('idempotency-key', input.idempotencyKey)\n }\n return headers\n}\n\nexport function responseToApiError(\n response: Response,\n parsed: unknown\n): CliApiError {\n const requestId = response.headers.get('x-request-id') ?? undefined\n // Standard envelope: { error: {...} }. A few legacy endpoints (e.g.\n // trigger fire) put code/message at the top level instead — fall back\n // to those rather than discarding the body.\n const record =\n parsed !== null && typeof parsed === 'object'\n ? (parsed as Record<string, unknown>)\n : undefined\n const envelope =\n record !== undefined &&\n record.error !== null &&\n typeof record.error === 'object'\n ? (record.error as Record<string, unknown>)\n : record\n const readField = (key: string): string | undefined => {\n const value = envelope?.[key]\n return typeof value === 'string' ? value : undefined\n }\n const param = readField('param')\n const suggestion = readField('suggestion')\n const docs = readField('docs')\n return new CliApiError({\n status: response.status,\n code: readField('code') ?? 'HTTP_ERROR',\n type: readField('type') ?? 'internal_error',\n message:\n readField('message') ?? `Request failed with status ${response.status}`,\n ...(param === undefined ? {} : { param }),\n ...(suggestion === undefined ? {} : { suggestion }),\n ...(docs === undefined ? {} : { docs }),\n ...(requestId === undefined ? {} : { requestId }),\n })\n}\n\nexport function tryParseJson(text: string): unknown {\n try {\n return JSON.parse(text) as unknown\n } catch {}\n}\n","import { resolveAuth } from '../lib/client'\nimport { defineCommand } from '../lib/define-command'\nimport { CliUsageError } from '../lib/errors'\nimport {\n buildRawHeaders,\n responseToApiError,\n tryParseJson,\n} from '../lib/raw-request'\n\nconst METHODS = ['GET', 'POST', 'PATCH', 'DELETE'] as const\n\ntype ApiMethod = (typeof METHODS)[number]\n\n/** Paths the API serves without authentication. */\nconst ANONYMOUS_PATHS = ['/v1/health', '/v1/help', '/v1/llms.txt'] as const\n\nexport const apiCommand = defineCommand({\n path: ['api'],\n summary: 'Raw authenticated request against the Brew public API',\n sdkMethod: null,\n commandClass: 'destructive',\n args: [\n {\n name: 'method',\n summary: 'GET | POST | PATCH | DELETE',\n isRequired: true,\n },\n {\n name: 'path',\n summary: 'API path, e.g. /v1/contacts/search',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--data <json>', summary: 'JSON request body, or - to read stdin' },\n {\n flag: '--header <headers...>',\n summary: 'Extra header(s) as \"Name: value\"',\n },\n {\n flag: '--idempotency-key <key>',\n summary: 'Idempotency-Key header for safe POST retries',\n },\n ],\n examples: [\n 'brew-cli api GET /v1/fields',\n `brew-cli api POST /v1/contacts/search --data '{\"limit\":5}' --yes`,\n 'brew-cli api GET /v1/llms.txt',\n ],\n confirmSummary: ({ args }) => {\n const method = (args.method ?? '').toUpperCase()\n if (method === 'GET') {\n return\n }\n return `Send a raw ${method} request to ${args.path ?? ''}. The CLI cannot assess what this mutates.`\n },\n run: async ({ ctx, args, flags }) => {\n const method = parseMethod(args.method)\n const path = parsePath(args.path)\n const barePath = path.split('?')[0] ?? path\n const auth = resolveAuth({\n globals: ctx.globals,\n env: ctx.io.env,\n allowAnonymous: (ANONYMOUS_PATHS as readonly string[]).includes(barePath),\n })\n const body = await readBody(ctx, flags.data)\n if (method === 'GET' && body !== undefined) {\n throw new CliUsageError('GET requests cannot carry --data.')\n }\n const headers = buildRawHeaders({\n auth,\n path,\n hasJsonBody: body !== undefined,\n idempotencyKey:\n typeof flags.idempotencyKey === 'string'\n ? flags.idempotencyKey\n : undefined,\n })\n for (const header of readHeaderFlags(flags.header)) {\n const separator = header.indexOf(':')\n if (separator === -1) {\n throw new CliUsageError(\n `Invalid --header (expected \"Name: value\"): ${header}`\n )\n }\n headers.set(\n header.slice(0, separator).trim(),\n header.slice(separator + 1).trim()\n )\n }\n const response = await fetch(`${auth.apiUrl}${path}`, {\n method,\n headers,\n ...(body === undefined ? {} : { body }),\n })\n const text = await response.text()\n const parsed = tryParseJson(text)\n if (!response.ok) {\n throw responseToApiError(response, parsed)\n }\n if (parsed !== undefined) {\n return { data: parsed }\n }\n return { data: text, human: text }\n },\n})\n\nfunction parseMethod(value: string | undefined): ApiMethod {\n const method = (value ?? '').toUpperCase()\n if ((METHODS as readonly string[]).includes(method)) {\n return method as ApiMethod\n }\n throw new CliUsageError(\n `Unsupported method \"${value ?? ''}\". Expected one of: ${METHODS.join(', ')}`\n )\n}\n\nfunction parsePath(value: string | undefined): string {\n if (value === undefined || !value.startsWith('/')) {\n throw new CliUsageError('Path must start with \"/\", e.g. /v1/fields')\n }\n return value\n}\n\nasync function readBody(\n ctx: { readonly io: { readonly readStdin: () => Promise<string> } },\n data: unknown\n): Promise<string | undefined> {\n if (typeof data !== 'string') {\n return\n }\n const raw = data === '-' ? await ctx.io.readStdin() : data\n try {\n JSON.parse(raw)\n } catch {\n throw new CliUsageError('--data must be valid JSON (or - to read stdin)')\n }\n return raw\n}\n\nfunction readHeaderFlags(value: unknown): readonly string[] {\n if (Array.isArray(value)) {\n return value.filter((item): item is string => typeof item === 'string')\n }\n return typeof value === 'string' ? [value] : []\n}\n","import type { CreateApiKeyInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const apiKeysCreateCommand = defineCommand({\n path: ['api-keys', 'create'],\n summary:\n 'Mint an API key; the plaintext `key` is returned ONCE — this output is the only copy',\n sdkMethod: 'apiKeys.create',\n route: { method: 'POST', path: '/v1/api-keys' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Label for the key' },\n {\n flag: '--permissions <scopes...>',\n summary:\n 'all | contacts | emails | automations | transactional | domains | sends | audiences | brands (default: all)',\n },\n {\n flag: '--brand-id <brandId>',\n summary:\n 'Bind the NEW key to this brand id (omit for an organization-wide key); not the acting --brand',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli api-keys create --name CI --permissions emails domains',\n 'brew-cli api-keys create --name \"Acme key\" --brand-id kx7b3s7fapqz8mjm12ekz1kxdx87yceg',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n name: flagString(flags.name),\n permissions: toStringArray(flags.permissions),\n brandId: flagString(flags.brandId),\n })\n // The plaintext `key` is never shown again after this call — pass the\n // API response through verbatim (no masking) or the command loses its\n // only purpose.\n return {\n data: await ctx\n .client()\n .apiKeys.create(\n asSdkInput<CreateApiKeyInput>(input),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const apiKeysDeleteCommand = defineCommand({\n path: ['api-keys', 'delete'],\n summary: 'Revoke an API key',\n sdkMethod: 'apiKeys.revoke',\n route: { method: 'DELETE', path: '/v1/api-keys/{keyId}' },\n commandClass: 'destructive',\n args: [{ name: 'keyId', summary: 'API key id to revoke', isRequired: true }],\n examples: ['brew-cli api-keys delete kd7b3s7fapqz8mjm12ekz1kxdx87yceg --yes'],\n confirmSummary: ({ args }) =>\n `Revoke API key ${args.keyId ?? ''}. Anything still using it starts failing immediately. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().apiKeys.revoke({ keyId: args.keyId ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { renderTable } from '../../lib/output'\n\nexport const apiKeysListCommand = defineCommand({\n path: ['api-keys', 'list'],\n summary:\n 'List API keys in the organization (already-redacted `keyPreview`, never the secret)',\n sdkMethod: 'apiKeys.list',\n route: { method: 'GET', path: '/v1/api-keys' },\n commandClass: 'read',\n examples: ['brew-cli api-keys list', 'brew-cli api-keys list --json'],\n run: async ({ ctx }) => {\n const result = await ctx.client().apiKeys.list()\n return { data: result, human: renderApiKeys(result.data) }\n },\n})\n\nfunction renderApiKeys(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No API keys found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'keyId', header: 'KEY ID' },\n { key: 'name', header: 'NAME' },\n { key: 'keyPreview', header: 'KEY PREVIEW' },\n { key: 'status', header: 'STATUS' },\n { key: 'brandId', header: 'BRAND ID' },\n ])\n}\n","import type { CreateAudienceInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const audiencesCreateCommand = defineCommand({\n path: ['audiences', 'create'],\n summary: 'Create an audience segment from a filter definition',\n sdkMethod: 'audiences.create',\n route: { method: 'POST', path: '/v1/audiences' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Audience name' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n `brew-cli audiences create --name VIP --input '{\"filters\":{\"filters\":[{\"field\":\"plan\",\"operator\":\"equals\",\"value\":\"vip\"}],\"logicalOperator\":\"and\"}}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n if (typeof input.name !== 'string' || input.name === '') {\n throw new CliUsageError('--name is required (or provide it via --input).')\n }\n if (input.filters === undefined) {\n throw new CliUsageError(\n 'Audience filters are required — pass the filter definition via --input.'\n )\n }\n const result = await ctx\n .client()\n .audiences.create(\n asSdkInput<CreateAudienceInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const audiencesDeleteCommand = defineCommand({\n path: ['audiences', 'delete'],\n summary: 'Delete an audience segment (contacts are kept)',\n sdkMethod: 'audiences.delete',\n route: { method: 'DELETE', path: '/v1/audiences/{audienceId}' },\n commandClass: 'destructive',\n args: [\n { name: 'audienceId', summary: 'Audience id to delete', isRequired: true },\n ],\n examples: ['brew-cli audiences delete aud_3k9sQ --yes'],\n confirmSummary: ({ args }) =>\n `Delete audience ${args.audienceId ?? ''}. Contacts are kept; the segment definition is gone. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .audiences.delete({ audienceId: args.audienceId ?? '' }),\n }),\n})\n","import type { DuplicateAudienceInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nexport const audiencesDuplicateCommand = defineCommand({\n path: ['audiences', 'duplicate'],\n summary: 'Copy an audience segment (the copy gets a \"(copy)\" name)',\n sdkMethod: 'audiences.duplicate',\n route: { method: 'POST', path: '/v1/audiences/{audienceId}/duplicate' },\n commandClass: 'write',\n args: [\n {\n name: 'audienceId',\n summary: 'Audience id to duplicate',\n isRequired: true,\n },\n ],\n // The operation takes no request body — the API names the copy itself.\n flags: [IDEMPOTENCY_FLAG],\n examples: ['brew-cli audiences duplicate aud_3k9sQ'],\n run: async ({ ctx, args, flags }) => ({\n data: await ctx.client().audiences.duplicate(\n asSdkInput<DuplicateAudienceInput>({\n audienceId: args.audienceId ?? '',\n }),\n requestOptions(flags)\n ),\n }),\n})\n","import type { AudienceFromEventsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const audiencesFromEventsCommand = defineCommand({\n path: ['audiences', 'from-events'],\n summary:\n 'Create a frozen audience snapshot from analytics events (async build)',\n sdkMethod: 'audiences.fromEvents',\n route: { method: 'POST', path: '/v1/audiences/from-events' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Audience name' },\n {\n flag: '--event-types <types...>',\n summary:\n 'Event type(s), repeatable: sent, delivered, delivery_delayed, opened, clicked, bounced, complained, failed, skipped, unsubscribed',\n },\n {\n flag: '--since <datetime>',\n summary: 'Cohort window start (ISO-8601, max 90 days back)',\n },\n {\n flag: '--until <datetime>',\n summary: 'Cohort window end (ISO-8601, default now)',\n },\n { flag: '--send-id <sendId>', summary: 'Scope to one campaign send' },\n { flag: '--email-id <emailId>', summary: 'Scope to one email design' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli audiences from-events --name \"Opened in July\" --event-types opened --since 2026-07-01T00:00:00Z --until 2026-08-01T00:00:00Z',\n 'brew-cli audiences from-events --event-types opened clicked --since 2026-07-01T00:00:00Z --input \\'{\"cohort\":{\"recipient\":[\"@acme.com\"]}}\\'',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n // Scalar flags override the cohort inside an --input body key-by-key.\n const cohort = mergeInput(input.cohort, {\n eventTypes: toStringArray(flags.eventTypes),\n from: flagString(flags.since),\n to: flagString(flags.until),\n sendId: flagString(flags.sendId),\n emailId: flagString(flags.emailId),\n })\n if (!Array.isArray(cohort.eventTypes) || cohort.eventTypes.length === 0) {\n throw new CliUsageError(\n '--event-types is required (or provide cohort.eventTypes via --input).'\n )\n }\n if (typeof cohort.from !== 'string' || cohort.from === '') {\n throw new CliUsageError(\n '--since is required (or provide cohort.from via --input).'\n )\n }\n return {\n data: await ctx\n .client()\n .audiences.fromEvents(\n asSdkInput<AudienceFromEventsInput>({ ...input, cohort }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { CliApiError } from '../../lib/errors'\nimport { flagString } from '../../lib/input'\n\nexport const audiencesGetCommand = defineCommand({\n path: ['audiences', 'get'],\n summary: 'Fetch one audience segment by id',\n sdkMethod: null,\n derivedFrom: 'audiences.list',\n route: { method: 'GET', path: '/v1/audiences' },\n commandClass: 'read',\n args: [\n { name: 'audienceId', summary: 'Audience id to fetch', isRequired: true },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: count',\n },\n ],\n examples: ['brew-cli audiences get aud_3k9sQ'],\n run: async ({ ctx, args, flags }) => {\n const audienceId = args.audienceId ?? ''\n const include = flagString(flags.include)\n const result = await ctx.client().audiences.list({\n audienceId,\n ...(include === undefined ? {} : { include }),\n })\n const audience = result.data[0]\n if (audience === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'AUDIENCE_NOT_FOUND',\n type: 'not_found',\n message: `No audience found for ${audienceId}`,\n suggestion: 'List audiences with `brew-cli audiences list`.',\n })\n }\n return { data: audience }\n },\n})\n","import type { ListAudiencesInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const audiencesListCommand = defineCommand({\n path: ['audiences', 'list'],\n summary: 'List audience segments',\n sdkMethod: 'audiences.list',\n route: { method: 'GET', path: '/v1/audiences' },\n commandClass: 'read',\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: count',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli audiences list',\n 'brew-cli audiences list --include count --limit 10',\n 'brew-cli audiences list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n include: flagString(flags.include),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const audiences = ctx.client().audiences\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n audiences.list(\n asSdkInput<ListAudiencesInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderAudiences(rows),\n }\n }\n const result = await audiences.list(asSdkInput<ListAudiencesInput>(input))\n return { data: result, human: renderAudiences(result.data) }\n },\n})\n\nfunction renderAudiences(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No audiences found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'audienceId', header: 'AUDIENCE ID' },\n { key: 'audienceName', header: 'NAME' },\n { key: 'count', header: 'CONTACTS' },\n { key: 'updatedAt', header: 'UPDATED' },\n ])\n}\n","import type { UpdateAudienceInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const audiencesUpdateCommand = defineCommand({\n path: ['audiences', 'update'],\n summary: 'Update an audience segment (name and/or filters)',\n sdkMethod: 'audiences.update',\n route: { method: 'PATCH', path: '/v1/audiences/{audienceId}' },\n commandClass: 'write',\n args: [\n { name: 'audienceId', summary: 'Audience id to update', isRequired: true },\n ],\n flags: [{ flag: '--name <name>', summary: 'New audience name' }, INPUT_FLAG],\n examples: [\n 'brew-cli audiences update aud_3k9sQ --name \"VIP customers\"',\n `brew-cli audiences update aud_3k9sQ --input '{\"filters\":{\"filters\":[{\"field\":\"plan\",\"operator\":\"equals\",\"value\":\"vip\"}],\"logicalOperator\":\"and\"}}'`,\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n if (Object.keys(input).length === 0) {\n throw new CliUsageError('Nothing to update — pass --name or --input.')\n }\n const result = await ctx.client().audiences.update(\n asSdkInput<UpdateAudienceInput>({\n ...input,\n audienceId: args.audienceId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import type { ControlAudienceRunInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport { asSdkInput, flagString } from '../../../lib/input'\n\nexport const automationsAudienceRunsControlCommand = defineCommand({\n path: ['automations', 'audience-runs', 'control'],\n summary: 'Pause, resume, or cancel an in-flight manual-audience run',\n sdkMethod: 'automations.audienceRuns.control',\n route: {\n method: 'POST',\n path: '/v1/automations/audience-runs/{audienceRunId}/control',\n },\n commandClass: 'destructive',\n args: [\n {\n name: 'audienceRunId',\n summary: 'Audience run id to control',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--action <action>',\n summary: 'pause (resumable) | resume | cancel (final)',\n },\n ],\n examples: [\n 'brew-cli automations audience-runs control arun_01HZ --action pause',\n 'brew-cli automations audience-runs control arun_01HZ --action cancel --yes',\n ],\n // Only cancel is irreversible; pause and resume proceed ungated.\n confirmSummary: ({ args, flags }) =>\n flagString(flags.action) === 'cancel'\n ? `Cancel audience run ${args.audienceRunId ?? ''} for good. Emails already sent are not recalled, and a canceled run cannot be resumed.`\n : undefined,\n run: async ({ ctx, args, flags }) => {\n const action = flagString(flags.action)\n if (action === undefined) {\n throw new CliUsageError('--action is required: pause, resume, or cancel.')\n }\n return {\n data: await ctx.client().automations.audienceRuns.control(\n asSdkInput<ControlAudienceRunInput>({\n audienceRunId: args.audienceRunId ?? '',\n action,\n })\n ),\n }\n },\n})\n","import type { ListAudienceRunsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { asSdkInput, flagInt, flagString } from '../../../lib/input'\n\nexport const automationsAudienceRunsListCommand = defineCommand({\n path: ['automations', 'audience-runs', 'list'],\n summary: 'List manual-audience runs (newest first)',\n sdkMethod: 'automations.audienceRuns.list',\n route: { method: 'GET', path: '/v1/automations/audience-runs' },\n commandClass: 'read',\n // The spec paginates by --limit only: no cursor, and the response carries\n // no pagination envelope, so there is no --all here.\n flags: [\n {\n flag: '--audience-run-id <id>',\n summary: 'Fetch a single audience run by id',\n },\n {\n flag: '--automation-id <id>',\n summary: 'Filter runs to a single automation',\n },\n { flag: '--limit <n>', summary: 'Max rows, 1-200 (default 50)' },\n ],\n examples: [\n 'brew-cli automations audience-runs list',\n 'brew-cli automations audience-runs list --automation-id auto_abc --limit 20',\n ],\n run: async ({ ctx, flags }) => {\n const limit = flagInt(flags.limit, '--limit')\n return {\n data: await ctx.client().automations.audienceRuns.list(\n asSdkInput<ListAudienceRunsInput>({\n audienceRunId: flagString(flags.audienceRunId),\n automationId: flagString(flags.automationId),\n limit,\n })\n ),\n }\n },\n})\n","import type { CreateAutomationInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const automationsCreateCommand = defineCommand({\n path: ['automations', 'create'],\n summary: 'Create an automation from a graph JSON (starts unpublished)',\n sdkMethod: 'automations.create',\n route: { method: 'POST', path: '/v1/automations' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Automation name' },\n { flag: '--description <text>', summary: 'Automation description' },\n {\n flag: '--trigger <triggerEventId>',\n summary: 'Trigger event id that starts the automation',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'cat welcome-flow.json | brew-cli automations create --input -',\n `brew-cli automations create --name \"Welcome flow\" --input '{\"triggerEventId\":\"tev_1\",\"nodes\":[],\"connections\":[]}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n if (base === undefined) {\n throw new CliUsageError(\n '--input is required — the automation graph JSON (name, triggerEventId, nodes, connections).'\n )\n }\n const input = mergeInput(base, {\n name: flagString(flags.name),\n description: flagString(flags.description),\n triggerEventId: flagString(flags.trigger),\n })\n const result = await ctx\n .client()\n .automations.create(\n asSdkInput<CreateAutomationInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const automationsDeleteCommand = defineCommand({\n path: ['automations', 'delete'],\n summary: 'Delete an automation and its version history (cascade)',\n sdkMethod: 'automations.delete',\n route: { method: 'DELETE', path: '/v1/automations/{automationId}' },\n commandClass: 'destructive',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to delete',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations delete am_123 --yes'],\n confirmSummary: ({ args }) =>\n `Delete automation ${args.automationId ?? ''} and its entire version history (cascade). This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .automations.delete({ automationId: args.automationId ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { CliApiError } from '../../lib/errors'\nimport { flagString } from '../../lib/input'\n\nexport const automationsGetCommand = defineCommand({\n path: ['automations', 'get'],\n summary: 'Fetch one automation by id',\n sdkMethod: null,\n derivedFrom: 'automations.list',\n route: { method: 'GET', path: '/v1/automations' },\n commandClass: 'read',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: graph | versions',\n },\n ],\n examples: [\n 'brew-cli automations get am_123',\n 'brew-cli automations get am_123 --include graph,versions',\n ],\n run: async ({ ctx, args, flags }) => {\n const automationId = args.automationId ?? ''\n const include = flagString(flags.include)\n const result = await ctx.client().automations.list({\n automationId,\n ...(include === undefined ? {} : { include }),\n })\n const automation = result.data[0]\n if (automation === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'AUTOMATION_NOT_FOUND',\n type: 'not_found',\n message: `No automation found for ${automationId}`,\n suggestion: 'List automations with `brew-cli automations list`.',\n })\n }\n return { data: automation }\n },\n})\n","import type { ListAutomationsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const automationsListCommand = defineCommand({\n path: ['automations', 'list'],\n summary: 'List automations (lean rows; `automations get` for the graph)',\n sdkMethod: 'automations.list',\n route: { method: 'GET', path: '/v1/automations' },\n commandClass: 'read',\n flags: [LIMIT_FLAG, CURSOR_FLAG, ALL_FLAG, INPUT_FLAG],\n examples: [\n 'brew-cli automations list',\n 'brew-cli automations list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const automations = ctx.client().automations\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n automations.list(\n asSdkInput<ListAutomationsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderAutomations(rows),\n }\n }\n const result = await automations.list(\n asSdkInput<ListAutomationsInput>(input)\n )\n return { data: result, human: renderAutomations(result.data) }\n },\n})\n\nfunction renderAutomations(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No automations found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'automationId', header: 'AUTOMATION' },\n { key: 'name', header: 'NAME' },\n { key: 'published', header: 'PUBLISHED' },\n { key: 'version', header: 'VERSION' },\n { key: 'triggerEventId', header: 'TRIGGER' },\n ])\n}\n","import { defineCommand } from '../../lib/define-command'\nimport { flagString } from '../../lib/input'\n\nexport const automationsPublishCommand = defineCommand({\n path: ['automations', 'publish'],\n summary:\n 'Publish an automation — arms it for live fires; does not itself send',\n sdkMethod: 'automations.publish',\n route: { method: 'PATCH', path: '/v1/automations/{automationId}' },\n commandClass: 'write',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to publish',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--automation-version <automationVersionId>',\n summary: 'Publish a specific historical version (default: latest)',\n },\n ],\n examples: [\n 'brew-cli automations publish am_123',\n 'brew-cli automations publish am_123 --automation-version amv_456',\n ],\n run: async ({ ctx, args, flags }) => {\n const automationVersionId = flagString(flags.automationVersion)\n const result = await ctx.client().automations.publish({\n automationId: args.automationId ?? '',\n ...(automationVersionId === undefined ? {} : { automationVersionId }),\n })\n return { data: result }\n },\n})\n","import type { RunAutomationInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const automationsRunCommand = defineCommand({\n path: ['automations', 'run'],\n summary: 'Run a manual-audience automation (live send; --dry-run previews)',\n sdkMethod: 'automations.run',\n route: { method: 'POST', path: '/v1/automations/{automationId}/run' },\n commandClass: 'destructive',\n args: [\n {\n name: 'automationId',\n summary: 'Manual-audience automation id to run',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--dry-run',\n summary: 'Preview the resolved plan without sending (skips the gate)',\n },\n {\n flag: '--schedule-at <iso>',\n summary: 'Launch at an ISO-8601 time instead of now',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli automations run auto_abc --dry-run',\n 'brew-cli automations run auto_abc --yes',\n 'brew-cli automations run auto_abc --schedule-at 2026-09-01T09:00:00Z --input \\'{\"gradualSend\":{\"startingPercentage\":10,\"incrementPercentage\":20,\"interval\":{\"value\":1,\"unit\":\"day\"},\"timeZone\":\"America/New_York\"}}\\' --yes',\n ],\n confirmSummary: ({ args, flags }) => {\n // The gate must reflect the MERGED request — an inline --input body can\n // carry dry_run/scheduledAt on its own. A dry run never gates.\n const inline = parseInlineInput(flags.input)\n if (flags.dryRun === true || inline?.dry_run === true) {\n return\n }\n const scheduleAt =\n flagString(flags.scheduleAt) ?? asString(inline?.scheduledAt)\n const timing = scheduleAt === undefined ? 'now' : `at ${scheduleAt}`\n return `Run automation ${args.automationId ?? ''} LIVE against its bound audience ${timing}. Real recipients receive mail; preview with --dry-run instead.`\n },\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n // The spec field is snake_case, unlike the rest of the API surface.\n dry_run: flags.dryRun === true ? true : undefined,\n scheduledAt: flagString(flags.scheduleAt),\n })\n return {\n data: await ctx.client().automations.run(\n asSdkInput<RunAutomationInput>({\n ...input,\n automationId: args.automationId ?? '',\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n\n/** Best-effort parse of an inline --input body (stdin `-` stays opaque). */\nfunction parseInlineInput(value: unknown): Record<string, unknown> | undefined {\n if (typeof value !== 'string' || value === '-') {\n return\n }\n try {\n const parsed: unknown = JSON.parse(value)\n return parsed !== null && typeof parsed === 'object'\n ? (parsed as Record<string, unknown>)\n : undefined\n } catch {}\n}\n\nfunction asString(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined\n}\n","import type { ListAutomationRunsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const automationsRunsListCommand = defineCommand({\n path: ['automations', 'runs', 'list'],\n summary: 'List automation runs (live + test history)',\n sdkMethod: 'automations.runs.list',\n route: { method: 'GET', path: '/v1/automations/runs' },\n commandClass: 'read',\n flags: [\n {\n flag: '--run <automationRunId>',\n summary: 'Fetch one run (single-row page)',\n },\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: logs',\n },\n { flag: '--automation <automationId>', summary: 'Filter by automation' },\n {\n flag: '--trigger <triggerEventId>',\n summary: 'Filter by trigger event',\n },\n {\n flag: '--trigger-instance <triggerInstanceId>',\n summary: 'Filter by fired trigger instance',\n },\n { flag: '--recipient <email>', summary: 'Filter by recipient email' },\n {\n flag: '--status <status>',\n summary: 'pending | running | completed | failed | cancelled',\n },\n { flag: '--mode <mode>', summary: 'live | test' },\n { flag: '--since <datetime>', summary: 'Runs started at/after (ISO-8601)' },\n {\n flag: '--until <datetime>',\n summary: 'Runs started at/before (ISO-8601)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations runs list --automation am_123 --status failed',\n 'brew-cli automations runs list --run arun_123 --include logs',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n automationRunId: flagString(flags.run),\n include: flagString(flags.include),\n automationId: flagString(flags.automation),\n triggerEventId: flagString(flags.trigger),\n triggerInstanceId: flagString(flags.triggerInstance),\n recipientEmail: flagString(flags.recipient),\n status: flagString(flags.status),\n mode: flagString(flags.mode),\n from: flagString(flags.since),\n to: flagString(flags.until),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const runs = ctx.client().automations.runs\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n runs.list(\n asSdkInput<ListAutomationRunsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderRuns(rows),\n }\n }\n const result = await runs.list(asSdkInput<ListAutomationRunsInput>(input))\n return { data: result, human: renderRuns(result.data) }\n },\n})\n\nfunction renderRuns(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No automation runs found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'automationRunId', header: 'RUN' },\n { key: 'automationId', header: 'AUTOMATION' },\n { key: 'status', header: 'STATUS' },\n { key: 'mode', header: 'MODE' },\n { key: 'recipientEmail', header: 'RECIPIENT' },\n ])\n}\n","import type { AutomationsResource } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, INPUT_FLAG, readJsonFlag } from '../../lib/input'\n\ntype TestAutomationInput = Parameters<AutomationsResource['test']>[0]\n\nexport const automationsTestCommand = defineCommand({\n path: ['automations', 'test'],\n summary: 'Start a suppression-aware TEST run (no real mail is sent)',\n sdkMethod: 'automations.test',\n route: { method: 'POST', path: '/v1/automations/{automationId}/test' },\n commandClass: 'write',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to test',\n isRequired: true,\n },\n ],\n flags: [INPUT_FLAG],\n examples: [\n 'brew-cli automations test am_123',\n `brew-cli automations test am_123 --input '{\"userId\":\"u_1\"}'`,\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n // A bare object is sugar for the { payload } envelope the API takes.\n const body =\n base === undefined\n ? {}\n : typeof base === 'object' && base !== null && 'payload' in base\n ? (base as Record<string, unknown>)\n : { payload: base }\n const result = await ctx.client().automations.test(\n asSdkInput<TestAutomationInput>({\n ...body,\n automationId: args.automationId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import type { components } from '../../../generated/openapi-types'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { rawRequest } from '../../../lib/raw-request'\n\ntype ContractGetResponse = components['schemas']['PayloadContractGetResponse']\ntype ContractValidateResponse =\n components['schemas']['PayloadContractValidateResponse']\n\nconst FORMAT_FLAG = {\n flag: '--format <format>',\n summary:\n 'Rendering: json (default, the contract object) or ts | zod | jsonschema | skill ({format, content})',\n} as const\n\nconst FORMATS = new Set(['json', 'ts', 'zod', 'jsonschema', 'skill'])\n\nconst ENFORCEMENT_MODES = new Set(['off', 'prune', 'strict'])\n\n/**\n * The validate preview knob is the VALIDATOR's enum — it is only ever\n * consulted once a contract is enforcing, so `off` is not representable\n * (platform `ContractEnforcementMode`).\n */\nconst VALIDATE_ENFORCEMENT_MODES = new Set(['prune', 'strict'])\n\nfunction formatQuery(value: unknown): string {\n const format = flagString(value)\n if (format === undefined) {\n return ''\n }\n if (!FORMATS.has(format)) {\n throw new CliUsageError(\n `Unknown --format '${format}' (expected json | ts | zod | jsonschema | skill).`\n )\n }\n return `?format=${format}`\n}\n\n/** Text formats print `content` raw on a TTY; `--json | jq -r .content` for pipes. */\nfunction contentHuman(body: { content?: string }): { human?: string } {\n return typeof body.content === 'string' ? { human: body.content } : {}\n}\n\nexport const automationsTriggersContractGetCommand = defineCommand({\n path: ['automations', 'triggers', 'contract', 'get'],\n summary:\n 'Read a trigger payload contract: stored when declared, derived otherwise; --format renders ts/zod/jsonschema/skill',\n sdkMethod: null,\n isRawTransport: true,\n route: {\n method: 'GET',\n path: '/v1/automations/triggers/{triggerEventId}/contract',\n },\n commandClass: 'read',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Trigger id (tri_…, or an integration composite id)',\n isRequired: true,\n },\n ],\n flags: [FORMAT_FLAG],\n examples: [\n 'brew-cli automations triggers contract get tri_signup',\n 'brew-cli automations triggers contract get tri_signup --format ts',\n 'brew-cli automations triggers contract get tri_signup --format skill --json | jq -r .content',\n ],\n run: async ({ ctx, args, flags }) => {\n const body = await rawRequest<ContractGetResponse>(ctx, {\n method: 'GET',\n path: `/v1/automations/triggers/${encodeURIComponent(args.triggerEventId ?? '')}/contract${formatQuery(flags.format)}`,\n })\n return { data: body, ...contentHuman(body) }\n },\n})\n\nexport const automationsTriggersContractPutCommand = defineCommand({\n path: ['automations', 'triggers', 'contract', 'put'],\n summary:\n 'Declare (or replace) the stored payload contract for a trigger — tree-validated before any write; omitting --enforcement leaves the stored setting unchanged',\n sdkMethod: null,\n isRawTransport: true,\n route: {\n method: 'PUT',\n path: '/v1/automations/triggers/{triggerEventId}/contract',\n },\n commandClass: 'write',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Trigger id (tri_…)',\n isRequired: true,\n },\n ],\n flags: [\n INPUT_FLAG,\n {\n flag: '--enforcement <mode>',\n summary:\n 'off (advisory, the default) | prune (drop fields not on the list) | strict (reject a payload carrying them)',\n },\n ],\n examples: [\n `brew-cli automations triggers contract put tri_signup --input '{\"fields\":[{\"key\":\"email\",\"type\":\"string\",\"required\":true}]}'`,\n 'brew-cli automations triggers contract put tri_signup --enforcement strict',\n ],\n // Trigger contracts must keep a top-level required `email` string;\n // nested object/array fields need a Liquid-enabled workspace. The\n // response is the same body a follow-up `contract get` returns.\n run: async ({ ctx, args, flags }) => {\n const input = mergeInput(\n await readJsonFlag(ctx, flags.input, '--input'),\n {}\n )\n // The platform PUT takes fields?, name?, enforcement? — each optional,\n // so an enforcement-only (or rename-only) patch is designed usage.\n if (input.fields !== undefined && !Array.isArray(input.fields)) {\n throw new CliUsageError(\n '--input .fields must be an array of contract field nodes.'\n )\n }\n // One knob. Omitting it leaves the stored setting alone.\n const enforcement = flagString(flags.enforcement)\n if (enforcement !== undefined && !ENFORCEMENT_MODES.has(enforcement)) {\n throw new CliUsageError(\n `Unknown --enforcement '${enforcement}' (expected off | prune | strict).`\n )\n }\n const requestBody = {\n ...input,\n ...(enforcement !== undefined ? { enforcement } : {}),\n }\n if (Object.keys(requestBody).length === 0) {\n throw new CliUsageError(\n 'Empty contract body — pass --input (fields and/or name) or --enforcement <mode>.'\n )\n }\n const body = await rawRequest<ContractGetResponse>(ctx, {\n method: 'PUT',\n path: `/v1/automations/triggers/${encodeURIComponent(args.triggerEventId ?? '')}/contract`,\n body: requestBody,\n })\n return { data: body }\n },\n})\n\nexport const automationsTriggersContractValidateCommand = defineCommand({\n path: ['automations', 'triggers', 'contract', 'validate'],\n summary:\n \"Dry-run a payload against a trigger's contract (the fire path's validator) — never fires; invalid payloads still exit 0\",\n sdkMethod: null,\n isRawTransport: true,\n route: {\n method: 'POST',\n path: '/v1/automations/triggers/{triggerEventId}/contract/validate',\n },\n commandClass: 'read',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Trigger id (tri_…)',\n isRequired: true,\n },\n ],\n flags: [\n INPUT_FLAG,\n {\n flag: '--enforcement <mode>',\n summary: 'Preview a mode other than the stored one: prune | strict',\n },\n ],\n examples: [\n `brew-cli automations triggers contract validate tri_signup --input '{\"payload\":{\"email\":\"jane@example.com\"}}'`,\n ],\n run: async ({ ctx, args, flags }) => {\n const input = mergeInput(\n await readJsonFlag(ctx, flags.input, '--input'),\n {}\n )\n const payload = input.payload ?? input\n const enforcement = flagString(flags.enforcement)\n if (\n enforcement !== undefined &&\n !VALIDATE_ENFORCEMENT_MODES.has(enforcement)\n ) {\n throw new CliUsageError(\n `Unknown --enforcement '${enforcement}' (expected prune | strict).`\n )\n }\n const body = await rawRequest<ContractValidateResponse>(ctx, {\n method: 'POST',\n path: `/v1/automations/triggers/${encodeURIComponent(args.triggerEventId ?? '')}/contract/validate`,\n body: {\n payload,\n ...(enforcement !== undefined ? { enforcement } : {}),\n },\n })\n return { data: body }\n },\n})\n","import type { CreateTriggerInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../../lib/input'\n\nexport const automationsTriggersCreateCommand = defineCommand({\n path: ['automations', 'triggers', 'create'],\n summary: 'Create a trigger event (title + typed payload schema)',\n sdkMethod: 'automations.triggers.create',\n route: { method: 'POST', path: '/v1/automations/triggers' },\n commandClass: 'write',\n flags: [\n { flag: '--title <title>', summary: 'Trigger event title' },\n { flag: '--description <text>', summary: 'Trigger event description' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n `brew-cli automations triggers create --title user.signup --input '{\"payloadSchema\":{\"type\":\"object\",\"fields\":[{\"key\":\"userId\",\"type\":\"string\",\"required\":true}]}}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n title: flagString(flags.title),\n description: flagString(flags.description),\n })\n if (typeof input.title !== 'string' || input.title === '') {\n throw new CliUsageError('A title is required (--title or --input).')\n }\n if (input.payloadSchema === undefined) {\n throw new CliUsageError(\n '--input with a payloadSchema is required (the typed contract fires are validated against).'\n )\n }\n const result = await ctx\n .client()\n .automations.triggers.create(\n asSdkInput<CreateTriggerInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../../lib/define-command'\n\nexport const automationsTriggersDeleteCommand = defineCommand({\n path: ['automations', 'triggers', 'delete'],\n summary: 'Delete a trigger event (rejected while automations depend on it)',\n sdkMethod: 'automations.triggers.delete',\n route: {\n method: 'DELETE',\n path: '/v1/automations/triggers/{triggerEventId}',\n },\n commandClass: 'destructive',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Id of the trigger event to delete',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations triggers delete tev_123 --yes'],\n confirmSummary: ({ args }) =>\n `Delete trigger event ${args.triggerEventId ?? ''}. This cannot be undone (the server rejects the delete while automations still depend on it).`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().automations.triggers.delete({\n triggerEventId: args.triggerEventId ?? '',\n }),\n }),\n})\n","import type { FireTriggerInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n readJsonFlag,\n requestOptions,\n} from '../../../lib/input'\n\nexport const automationsTriggersFireCommand = defineCommand({\n path: ['automations', 'triggers', 'fire'],\n summary: 'Fire a trigger event with a payload (starts LIVE runs)',\n sdkMethod: 'automations.triggers.fire',\n route: {\n method: 'POST',\n path: '/v1/automations/triggers/{triggerEventId}/fire',\n },\n commandClass: 'destructive',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Id of the trigger event to fire',\n isRequired: true,\n },\n ],\n flags: [INPUT_FLAG, IDEMPOTENCY_FLAG],\n examples: [\n `brew-cli automations triggers fire tri_signup --input '{\"payload\":{\"email\":\"jane@example.com\"}}' --yes`,\n ],\n confirmSummary: ({ args }) =>\n `Fire trigger ${args.triggerEventId ?? ''} — starts REAL runs on every published automation listening to it.`,\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n if (base === undefined) {\n throw new CliUsageError('--input is required — the trigger payload JSON.')\n }\n // A bare object is sugar for the { payload } envelope the API takes.\n const body =\n typeof base === 'object' && base !== null && 'payload' in base\n ? (base as Record<string, unknown>)\n : { payload: base }\n const result = await ctx.client().automations.triggers.fire(\n asSdkInput<FireTriggerInput>({\n ...body,\n triggerEventId: args.triggerEventId ?? '',\n }),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ListTriggersInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const automationsTriggersListCommand = defineCommand({\n path: ['automations', 'triggers', 'list'],\n summary: 'List trigger events (their payload schemas drive fires)',\n sdkMethod: 'automations.triggers.list',\n route: { method: 'GET', path: '/v1/automations/triggers' },\n commandClass: 'read',\n flags: [\n {\n flag: '--trigger <triggerEventId>',\n summary: 'Fetch one trigger event (single-row page)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations triggers list',\n 'brew-cli automations triggers list --trigger tev_123',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n triggerEventId: flagString(flags.trigger),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const triggers = ctx.client().automations.triggers\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n triggers.list(\n asSdkInput<ListTriggersInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderTriggers(rows),\n }\n }\n const result = await triggers.list(asSdkInput<ListTriggersInput>(input))\n return { data: result, human: renderTriggers(result.data) }\n },\n})\n\nfunction renderTriggers(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No trigger events found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'triggerEventId', header: 'TRIGGER' },\n { key: 'title', header: 'TITLE' },\n { key: 'provider', header: 'PROVIDER' },\n ])\n}\n","import type { TriggerReadyInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { asSdkInput } from '../../../lib/input'\n\nexport const automationsTriggersReadyCommand = defineCommand({\n path: ['automations', 'triggers', 'ready'],\n summary:\n 'Preflight a trigger without firing: key + scope + permissions pass/fail, the payload contract, and what a fire would start',\n sdkMethod: 'automations.triggers.ready',\n route: {\n method: 'GET',\n path: '/v1/automations/triggers/{triggerEventId}/fire',\n },\n commandClass: 'read',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Trigger id (tri_…, or an integration composite id)',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations triggers ready tri_signup'],\n // 200 `status: \"ready\"` means the exact credential in use can fire this\n // trigger; `details.counts.automations: 0` means fires are accepted and\n // logged but start no runs until a wired automation is published.\n run: async ({ ctx, args }) => {\n const result = await ctx.client().automations.triggers.ready(\n asSdkInput<TriggerReadyInput>({\n triggerEventId: args.triggerEventId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import type { PatchTriggerInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\n\nexport const automationsTriggersUpdateCommand = defineCommand({\n path: ['automations', 'triggers', 'update'],\n summary: 'Update a trigger event (title, description, payload schema)',\n sdkMethod: 'automations.triggers.patch',\n route: {\n method: 'PATCH',\n path: '/v1/automations/triggers/{triggerEventId}',\n },\n commandClass: 'write',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Id of the trigger event to update',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--title <title>', summary: 'New title' },\n { flag: '--description <text>', summary: 'New description' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations triggers update tev_123 --title user.signup.v2',\n `brew-cli automations triggers update tev_123 --input '{\"payloadSchema\":{\"type\":\"object\",\"fields\":[]}}'`,\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n title: flagString(flags.title),\n description: flagString(flags.description),\n })\n if (Object.keys(input).length === 0) {\n throw new CliUsageError('Nothing to update — pass flags or --input.')\n }\n const result = await ctx.client().automations.triggers.patch(\n asSdkInput<PatchTriggerInput>({\n ...input,\n triggerEventId: args.triggerEventId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const automationsUnpublishCommand = defineCommand({\n path: ['automations', 'unpublish'],\n summary: 'Unpublish an automation so new trigger fires no longer start runs',\n sdkMethod: 'automations.unpublish',\n route: { method: 'PATCH', path: '/v1/automations/{automationId}' },\n commandClass: 'write',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to unpublish',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations unpublish am_123'],\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .automations.unpublish({ automationId: args.automationId ?? '' }),\n }),\n})\n","import type { PatchAutomationInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const automationsUpdateCommand = defineCommand({\n path: ['automations', 'update'],\n summary: 'Update automation metadata and/or its graph (PATCH)',\n sdkMethod: 'automations.patch',\n route: { method: 'PATCH', path: '/v1/automations/{automationId}' },\n commandClass: 'write',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to update',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--name <name>', summary: 'New name' },\n { flag: '--description <text>', summary: 'New description' },\n { flag: '--trigger <triggerEventId>', summary: 'New trigger event id' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations update am_123 --name \"Welcome flow v2\"',\n 'cat graph.json | brew-cli automations update am_123 --input -',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n name: flagString(flags.name),\n description: flagString(flags.description),\n triggerEventId: flagString(flags.trigger),\n })\n if (Object.keys(input).length === 0) {\n throw new CliUsageError('Nothing to update — pass flags or --input.')\n }\n const result = await ctx.client().automations.patch(\n asSdkInput<PatchAutomationInput>({\n ...input,\n automationId: args.automationId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { flagString } from '../../lib/input'\n\nexport const brandGetCommand = defineCommand({\n path: ['brand', 'get'],\n summary: \"Fetch the key's brand + extraction readiness (`ready` flag)\",\n sdkMethod: 'brand.get',\n route: { method: 'GET', path: '/v1/brand' },\n commandClass: 'read',\n flags: [\n {\n flag: '--include <tokens>',\n summary:\n 'Comma-separated embeds: identity | emailDesign | imageStyle | logos',\n },\n ],\n examples: [\n 'brew-cli brand get',\n 'brew-cli brand get --include identity,logos',\n ],\n run: async ({ ctx, flags }) => {\n const include = flagString(flags.include)\n const result = await ctx.client().brand.get({\n ...(include === undefined ? {} : { include }),\n })\n return { data: result }\n },\n})\n","import type { ListBrandImagesInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const brandGetImagesCommand = defineCommand({\n path: ['brand', 'get-images'],\n summary: \"Browse or semantically search the brand's image library\",\n sdkMethod: 'brand.getImages',\n route: { method: 'GET', path: '/v1/brand/images' },\n commandClass: 'read',\n flags: [\n {\n flag: '--query <text>',\n summary: 'Semantic search over image descriptions',\n },\n { flag: '--type <type>', summary: 'Filter by image category' },\n {\n flag: '--aspect-ratio <ratio>',\n summary: 'Filter by aspect ratio (e.g. 16:9)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli brand get-images',\n 'brew-cli brand get-images --query \"team photo\" --aspect-ratio 16:9',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n q: flagString(flags.query),\n type: flagString(flags.type),\n aspectRatio: flagString(flags.aspectRatio),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const brand = ctx.client().brand\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n brand.getImages(\n asSdkInput<ListBrandImagesInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderImages(rows),\n }\n }\n const result = await brand.getImages(\n asSdkInput<ListBrandImagesInput>(input)\n )\n return { data: result, human: renderImages(result.data) }\n },\n})\n\nfunction renderImages(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No brand images found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'url', header: 'URL' },\n { key: 'category', header: 'CATEGORY' },\n { key: 'aspectRatio', header: 'ASPECT' },\n ])\n}\n","import type { UpdateBrandInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const brandUpdateCommand = defineCommand({\n path: ['brand', 'update'],\n summary: 'Update brand identity and/or design-system markdown (PATCH)',\n sdkMethod: 'brand.patch',\n route: { method: 'PATCH', path: '/v1/brand' },\n commandClass: 'write',\n flags: [INPUT_FLAG],\n examples: [\n `brew-cli brand update --input '{\"identity\":{\"tagline\":\"Brew better email\"}}'`,\n 'cat brand-patch.json | brew-cli brand update --input -',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {})\n if (Object.keys(input).length === 0) {\n throw new CliUsageError(\n '--input is required — at least one of identity, emailDesign, imageStyle.'\n )\n }\n const result = await ctx\n .client()\n .brand.patch(asSdkInput<UpdateBrandInput>(input))\n return { data: result }\n },\n})\n","import type { CreateBrandInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const brandsCreateCommand = defineCommand({\n path: ['brands', 'create'],\n summary:\n 'Create a brand and start async extraction (needs an ORGANIZATION-scoped key); poll `brands get` until ready',\n sdkMethod: 'brands.create',\n route: { method: 'POST', path: '/v1/brands' },\n commandClass: 'write',\n flags: [\n { flag: '--url <url>', summary: 'Website to extract the brand from' },\n {\n flag: '--instructions <text>',\n summary: 'Guidance for the extraction (tone sources, brand color, …)',\n },\n {\n flag: '--include-paths <paths...>',\n summary: 'Site path(s) the crawl must include, repeatable',\n },\n {\n flag: '--exclude-paths <paths...>',\n summary: 'Site path(s) the crawl must skip, repeatable',\n },\n {\n flag: '--exclude-subdomains <subdomains...>',\n summary: 'Subdomain(s) the crawl must skip, repeatable',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli brands create --url acme.com',\n 'brew-cli brands create --url acme.com --instructions \"Primary brand color is the deep navy in the header\"',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n url: flagString(flags.url),\n instructions: flagString(flags.instructions),\n includePaths: toStringArray(flags.includePaths),\n excludePaths: toStringArray(flags.excludePaths),\n excludeSubdomains: toStringArray(flags.excludeSubdomains),\n })\n if (typeof input.url !== 'string' || input.url === '') {\n throw new CliUsageError('--url is required (or provide it via --input).')\n }\n return {\n data: await ctx\n .client()\n .brands.create(\n asSdkInput<CreateBrandInput>(input),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const brandsGetCommand = defineCommand({\n path: ['brands', 'get'],\n summary: \"One brand's lifecycle state (the extraction polling endpoint)\",\n sdkMethod: 'brands.get',\n route: { method: 'GET', path: '/v1/brands/{brandId}' },\n commandClass: 'read',\n args: [{ name: 'brandId', summary: 'Brand id to fetch', isRequired: true }],\n examples: ['brew-cli brands get kx7b3s7fapqz8mjm12ekz1kxdx87yceg'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().brands.get({ brandId: args.brandId ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const brandsListCommand = defineCommand({\n path: ['brands', 'list'],\n summary: 'List every brand in the organization',\n sdkMethod: 'brands.list',\n route: { method: 'GET', path: '/v1/brands' },\n commandClass: 'read',\n examples: ['brew-cli brands list --json'],\n run: async ({ ctx }) => ({\n data: await ctx.client().brands.list(),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const chatsGetCommand = defineCommand({\n path: ['chats', 'get'],\n summary: 'Brand-scoped digest of a Brew chat (artifacts + transcript tail)',\n sdkMethod: 'chats.get',\n route: { method: 'GET', path: '/v1/chats/{chatId}' },\n commandClass: 'read',\n args: [\n {\n name: 'chatId',\n summary: 'Brew chat id (from the chat URL / the app)',\n isRequired: true,\n },\n ],\n examples: ['brew-cli chats get Hk2mZ8t9QbY3sW1vR0pLd'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().chats.get(args.chatId ?? ''),\n }),\n})\n","import { maskApiKey } from '../lib/client'\nimport {\n configPath,\n isConfigKey,\n readConfig,\n updateConfig,\n} from '../lib/config-store'\nimport { defineCommand } from '../lib/define-command'\nimport { CliUsageError } from '../lib/errors'\nimport type { CliContext } from '../lib/types'\n\nconst SETTABLE_KEYS = ['brandId', 'apiUrl'] as const\n\nexport const configListCommand = defineCommand({\n path: ['config', 'list'],\n summary: 'Show the stored configuration (API key masked)',\n sdkMethod: null,\n commandClass: 'read',\n examples: ['brew-cli config list'],\n run: async ({ ctx }) => ({ data: maskedConfig(ctx) }),\n})\n\nexport const configGetCommand = defineCommand({\n path: ['config', 'get'],\n summary: 'Read one stored configuration value',\n sdkMethod: null,\n commandClass: 'read',\n args: [\n { name: 'key', summary: 'brandId | apiUrl | apiKey', isRequired: true },\n ],\n examples: ['brew-cli config get brandId'],\n run: async ({ ctx, args }) => {\n const key = requireKnownKey(args.key)\n const value = maskedConfig(ctx)[key] ?? null\n return { data: { [key]: value } }\n },\n})\n\nexport const configSetCommand = defineCommand({\n path: ['config', 'set'],\n summary: 'Store a configuration value (brandId or apiUrl)',\n sdkMethod: null,\n commandClass: 'write',\n args: [\n { name: 'key', summary: 'brandId | apiUrl', isRequired: true },\n { name: 'value', summary: 'The value to store', isRequired: true },\n ],\n examples: ['brew-cli config set brandId bd_123'],\n run: async ({ ctx, args }) => {\n const key = requireSettableKey(args.key)\n const value = args.value ?? ''\n if (value === '') {\n throw new CliUsageError('A non-empty value is required.')\n }\n const path = updateConfig(ctx.io.env, { [key]: value })\n return { data: { [key]: value, configPath: path } }\n },\n})\n\nexport const configUnsetCommand = defineCommand({\n path: ['config', 'unset'],\n summary: 'Remove a stored configuration value (brandId or apiUrl)',\n sdkMethod: null,\n commandClass: 'write',\n args: [{ name: 'key', summary: 'brandId | apiUrl', isRequired: true }],\n examples: ['brew-cli config unset brandId'],\n run: async ({ ctx, args }) => {\n const key = requireSettableKey(args.key)\n const path = updateConfig(ctx.io.env, { [key]: undefined })\n return { data: { [key]: null, configPath: path } }\n },\n})\n\nfunction maskedConfig(ctx: CliContext): Record<string, string | undefined> {\n const stored = readConfig(ctx.io.env)\n return {\n ...stored,\n ...(stored.apiKey === undefined\n ? {}\n : { apiKey: maskApiKey(stored.apiKey) }),\n configPath: configPath(ctx.io.env),\n }\n}\n\nfunction requireKnownKey(\n value: string | undefined\n): 'apiKey' | 'apiUrl' | 'brandId' {\n if (value !== undefined && isConfigKey(value)) {\n return value\n }\n throw new CliUsageError('Unknown key. Expected brandId, apiUrl, or apiKey.')\n}\n\nfunction requireSettableKey(value: string | undefined): 'apiUrl' | 'brandId' {\n if (value === 'apiKey') {\n throw new CliUsageError(\n 'The API key is managed by `brew-cli login` / `brew-cli logout`.'\n )\n }\n const key = requireKnownKey(value)\n if ((SETTABLE_KEYS as readonly string[]).includes(key)) {\n return key as 'apiUrl' | 'brandId'\n }\n throw new CliUsageError('Unknown key. Expected brandId or apiUrl.')\n}\n","import type { CountContactsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n parseFilterFlags,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const contactsCountCommand = defineCommand({\n path: ['contacts', 'count'],\n summary: 'Count contacts matching a filter',\n sdkMethod: 'contacts.count',\n route: { method: 'POST', path: '/v1/contacts/search' },\n commandClass: 'read',\n flags: [\n { flag: '--search <text>', summary: 'Free-text search' },\n {\n flag: '--filter <filters...>',\n summary: 'Structured filter field:operator[:value], repeatable',\n },\n { flag: '--audience <audienceId>', summary: 'Scope to one audience' },\n { flag: '--logic <logic>', summary: 'Filter combinator: and | or' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli contacts count',\n 'brew-cli contacts count --filter subscribed:equals:true',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n search: flagString(flags.search),\n filters: parseFilterFlags(flags.filter),\n audienceId: flagString(flags.audience),\n logic: flagString(flags.logic),\n })\n return {\n data: await ctx\n .client()\n .contacts.count(asSdkInput<CountContactsInput>(input)),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const contactsDeleteCommand = defineCommand({\n path: ['contacts', 'delete'],\n summary: 'Delete one contact by email (idempotent)',\n sdkMethod: 'contacts.delete',\n route: { method: 'DELETE', path: '/v1/contacts/{email}' },\n commandClass: 'destructive',\n args: [\n {\n name: 'email',\n summary: 'Email address of the contact to delete',\n isRequired: true,\n },\n ],\n examples: ['brew-cli contacts delete jane@example.com --yes'],\n confirmSummary: ({ args }) =>\n `Delete contact ${args.email ?? ''} from the active brand. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().contacts.delete({ email: args.email ?? '' }),\n }),\n})\n","import type { DeleteManyContactsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contactsDeleteManyCommand = defineCommand({\n path: ['contacts', 'delete-many'],\n summary: 'Delete up to 1000 contacts by email',\n sdkMethod: 'contacts.deleteMany',\n route: { method: 'POST', path: '/v1/contacts/batch-delete' },\n commandClass: 'destructive',\n flags: [INPUT_FLAG, IDEMPOTENCY_FLAG],\n examples: [\n `brew-cli contacts delete-many --input '{\"emails\":[\"a@x.com\",\"b@x.com\"]}' --yes`,\n 'cat emails.json | brew-cli contacts delete-many --input - --yes',\n ],\n confirmSummary: ({ flags }) => {\n const count = inlineEmailCount(flags.input)\n return count === undefined\n ? 'Delete the contacts listed in --input. This cannot be undone.'\n : `Delete ${count} contact(s). This cannot be undone.`\n },\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n if (base === undefined) {\n throw new CliUsageError('--input is required (JSON or - for stdin).')\n }\n const input = Array.isArray(base) ? { emails: base } : base\n const result = await ctx\n .client()\n .contacts.deleteMany(\n asSdkInput<DeleteManyContactsInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n\nfunction inlineEmailCount(input: unknown): number | undefined {\n if (typeof input !== 'string' || input === '-') {\n return\n }\n try {\n const parsed: unknown = JSON.parse(input)\n if (Array.isArray(parsed)) {\n return parsed.length\n }\n if (\n parsed !== null &&\n typeof parsed === 'object' &&\n Array.isArray((parsed as { emails?: unknown }).emails)\n ) {\n return (parsed as { emails: unknown[] }).emails.length\n }\n } catch {}\n}\n","import { defineCommand } from '../../lib/define-command'\nimport { CliApiError } from '../../lib/errors'\n\nexport const contactsGetCommand = defineCommand({\n path: ['contacts', 'get'],\n summary: 'Fetch one contact by email',\n sdkMethod: null,\n derivedFrom: 'contacts.search',\n route: { method: 'POST', path: '/v1/contacts/search' },\n commandClass: 'read',\n args: [\n {\n name: 'email',\n summary: 'Email address of the contact',\n isRequired: true,\n },\n ],\n examples: ['brew-cli contacts get jane@example.com'],\n run: async ({ ctx, args }) => {\n const email = args.email ?? ''\n const result = await ctx.client().contacts.search({\n filters: [{ field: 'email', operator: 'equals', value: email }],\n limit: 1,\n })\n const contact = result.data[0]\n if (contact === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'CONTACT_NOT_FOUND',\n type: 'not_found',\n message: `No contact found for ${email}`,\n suggestion:\n 'Check the address, or create the contact with `brew-cli contacts upsert`.',\n })\n }\n return { data: contact }\n },\n})\n","import type { ContactsResource } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n parseKeyValues,\n readTextFlag,\n requestOptions,\n} from '../../lib/input'\n\ntype ImportCsvContactsInput = Parameters<ContactsResource['importCsv']>[0]\n\nexport const contactsImportCsvCommand = defineCommand({\n path: ['contacts', 'import-csv'],\n summary: 'Bulk-import contacts from a CSV file or stdin',\n sdkMethod: 'contacts.importCsv',\n route: { method: 'POST', path: '/v1/contacts/import-csv' },\n commandClass: 'write',\n flags: [\n { flag: '--file <path>', summary: 'CSV file to import, or - for stdin' },\n {\n flag: '--mapping <pairs...>',\n summary: 'Column mapping csvColumn=fieldName, repeatable',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli contacts import-csv --file contacts.csv',\n 'cat contacts.csv | brew-cli contacts import-csv --file - --mapping Email=email',\n ],\n run: async ({ ctx, flags }) => {\n const csv = await readTextFlag(ctx, flags.file, '--file')\n if (csv === undefined || csv.trim() === '') {\n throw new CliUsageError(\n '--file is required (a CSV path, or - for stdin).'\n )\n }\n const mapping = parseKeyValues(flags.mapping, '--mapping')\n const result = await ctx.client().contacts.importCsv(\n asSdkInput<ImportCsvContactsInput>({\n csv,\n ...(mapping === undefined ? {} : { mapping }),\n }),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { SearchContactsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n parseFilterFlags,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const contactsSearchCommand = defineCommand({\n path: ['contacts', 'search'],\n summary: 'Search contacts with structured filters (the contacts read)',\n sdkMethod: 'contacts.search',\n route: { method: 'POST', path: '/v1/contacts/search' },\n commandClass: 'read',\n flags: [\n { flag: '--search <text>', summary: 'Free-text search' },\n {\n flag: '--filter <filters...>',\n summary: 'Structured filter field:operator[:value], repeatable',\n },\n { flag: '--audience <audienceId>', summary: 'Scope to one audience' },\n { flag: '--logic <logic>', summary: 'Filter combinator: and | or' },\n { flag: '--sort <field>', summary: 'Sort field' },\n { flag: '--order <order>', summary: 'Sort order: asc | desc' },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli contacts search --filter email:equals:jane@example.com',\n 'brew-cli contacts search --search jane --limit 10',\n 'brew-cli contacts search --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n search: flagString(flags.search),\n filters: parseFilterFlags(flags.filter),\n audienceId: flagString(flags.audience),\n logic: flagString(flags.logic),\n sort: flagString(flags.sort),\n order: flagString(flags.order),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const contacts = ctx.client().contacts\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n contacts.search(\n asSdkInput<SearchContactsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderContacts(rows),\n }\n }\n const result = await contacts.search(asSdkInput<SearchContactsInput>(input))\n return { data: result, human: renderContacts(result.data) }\n },\n})\n\nfunction renderContacts(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No contacts matched.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'email', header: 'EMAIL' },\n { key: 'firstName', header: 'FIRST' },\n { key: 'lastName', header: 'LAST' },\n { key: 'subscribed', header: 'SUBSCRIBED' },\n ])\n}\n","import type { PatchContactInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n parseKeyValues,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const contactsUpdateCommand = defineCommand({\n path: ['contacts', 'update'],\n summary: 'Partially update one contact (PATCH; never retried)',\n sdkMethod: 'contacts.patch',\n route: { method: 'PATCH', path: '/v1/contacts/{email}' },\n commandClass: 'write',\n args: [\n {\n name: 'email',\n summary: 'Email address of the contact',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--first-name <name>', summary: 'First name' },\n { flag: '--last-name <name>', summary: 'Last name' },\n {\n flag: '--subscribed <bool>',\n summary: 'Subscription state: true | false',\n },\n { flag: '--set <pairs...>', summary: 'Field key=value, repeatable' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli contacts update jane@example.com --first-name Jane',\n 'brew-cli contacts update j@x.com --set plan=enterprise',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const fields = mergeInput(base, {\n firstName: flagString(flags.firstName),\n lastName: flagString(flags.lastName),\n subscribed: parseBool(flags.subscribed),\n ...(parseKeyValues(flags.set, '--set') ?? {}),\n })\n if (Object.keys(fields).length === 0) {\n throw new CliUsageError('Nothing to update — pass flags or --input.')\n }\n const result = await ctx.client().contacts.patch(\n asSdkInput<PatchContactInput>({\n email: args.email ?? '',\n fields,\n })\n )\n return { data: result }\n },\n})\n\nfunction parseBool(value: unknown): boolean | undefined {\n if (value === 'true') {\n return true\n }\n if (value === 'false') {\n return false\n }\n if (value === undefined) {\n return\n }\n throw new CliUsageError('--subscribed must be true or false')\n}\n","import type { UpsertContactInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n parseKeyValues,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contactsUpsertCommand = defineCommand({\n path: ['contacts', 'upsert'],\n summary: 'Create or update one contact by email',\n sdkMethod: 'contacts.upsert',\n route: { method: 'POST', path: '/v1/contacts' },\n commandClass: 'write',\n flags: [\n { flag: '--email <email>', summary: 'Email address (the identity)' },\n { flag: '--first-name <name>', summary: 'First name' },\n { flag: '--last-name <name>', summary: 'Last name' },\n {\n flag: '--subscribed <bool>',\n summary: 'Subscription state: true | false',\n },\n {\n flag: '--custom <pairs...>',\n summary: 'Custom field key=value, repeatable',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli contacts upsert --email jane@example.com --first-name Jane',\n 'brew-cli contacts upsert --email j@x.com --custom plan=pro --custom seats=4',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n email: flagString(flags.email),\n firstName: flagString(flags.firstName),\n lastName: flagString(flags.lastName),\n subscribed: parseBool(flags.subscribed),\n customFields: parseKeyValues(flags.custom, '--custom'),\n })\n if (typeof input.email !== 'string' || input.email === '') {\n throw new CliUsageError('An email is required (--email or --input).')\n }\n const result = await ctx\n .client()\n .contacts.upsert(\n asSdkInput<UpsertContactInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n\nfunction parseBool(value: unknown): boolean | undefined {\n if (value === 'true') {\n return true\n }\n if (value === 'false') {\n return false\n }\n if (value === undefined) {\n return\n }\n throw new CliUsageError('--subscribed must be true or false')\n}\n","import type { UpsertManyContactsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contactsUpsertManyCommand = defineCommand({\n path: ['contacts', 'upsert-many'],\n summary: 'Create or update a batch of contacts (up to 100 per call)',\n sdkMethod: 'contacts.upsertMany',\n route: { method: 'POST', path: '/v1/contacts' },\n commandClass: 'write',\n flags: [INPUT_FLAG, IDEMPOTENCY_FLAG],\n examples: [\n `brew-cli contacts upsert-many --input '{\"contacts\":[{\"email\":\"a@x.com\"}]}'`,\n 'cat contacts.json | brew-cli contacts upsert-many --input -',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n if (base === undefined) {\n throw new CliUsageError('--input is required (JSON or - for stdin).')\n }\n const input = Array.isArray(base) ? { contacts: base } : base\n const result = await ctx\n .client()\n .contacts.upsertMany(\n asSdkInput<UpsertManyContactsInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContactsResource } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\ntype ValidateContactsInput = Parameters<ContactsResource['validate']>[0]\n\nexport const contactsValidateCommand = defineCommand({\n path: ['contacts', 'validate'],\n summary: 'Batch-validate email deliverability (no contacts created)',\n sdkMethod: 'contacts.validate',\n route: { method: 'POST', path: '/v1/contacts/validate' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n {\n flag: '--emails <emails...>',\n summary: 'Email address(es) to validate, repeatable',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli contacts validate --emails jane@example.com bob@example.com',\n `brew-cli contacts validate --input '{\"emails\":[\"jane@example.com\"]}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const fromFlags = toStringArray(flags.emails)\n const input =\n fromFlags === undefined\n ? Array.isArray(base)\n ? { emails: base }\n : base\n : { emails: fromFlags }\n if (input === undefined) {\n throw new CliUsageError('Pass --emails or --input.')\n }\n const result = await ctx\n .client()\n .contacts.validate(\n asSdkInput<ValidateContactsInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContentAddImageRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentAddImageCommand = defineCommand({\n path: ['content', 'add-image'],\n summary: 'Mirror an external image onto Brew-hosted storage',\n sdkMethod: 'content.addImage',\n route: { method: 'POST', path: '/v1/content/add-image' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--url <url>', summary: 'Image URL to mirror' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content add-image --url https://cdn.example.com/logo.png',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n imageUrl: flagString(flags.url),\n })\n if (typeof input.imageUrl !== 'string' || input.imageUrl === '') {\n throw new CliUsageError('An image URL is required (--url or --input).')\n }\n const result = await ctx\n .client()\n .content.addImage(\n asSdkInput<ContentAddImageRequest>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContentGenerateImageRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentGenerateImageCommand = defineCommand({\n path: ['content', 'generate-image'],\n summary: 'Generate or edit an image from a prompt',\n sdkMethod: 'content.generateImage',\n route: { method: 'POST', path: '/v1/content/generate-image' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--prompt <text>', summary: 'What to generate' },\n { flag: '--mode <mode>', summary: 'text-to-image | image-editing' },\n {\n flag: '--aspect-ratio <ratio>',\n summary: 'e.g. 16:9, 3:2, 1:1, 9:16',\n },\n { flag: '--model <model>', summary: 'Image model override' },\n { flag: '--image1 <url>', summary: 'Source image for image-editing' },\n {\n flag: '--image2 <url>',\n summary: 'Second source image for image-editing',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content generate-image --prompt \"hero shot of a ceramic mug\" --aspect-ratio 16:9',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n prompt: flagString(flags.prompt),\n mode: flagString(flags.mode),\n aspectRatio: flagString(flags.aspectRatio),\n model: flagString(flags.model),\n image1: flagString(flags.image1),\n image2: flagString(flags.image2),\n })\n if (typeof input.prompt !== 'string' || input.prompt === '') {\n throw new CliUsageError('A prompt is required (--prompt or --input).')\n }\n const result = await ctx\n .client()\n .content.generateImage(\n asSdkInput<ContentGenerateImageRequest>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContentGifRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentGifCommand = defineCommand({\n path: ['content', 'gif'],\n summary: 'Create an animated GIF from a prompt, image, or video',\n sdkMethod: 'content.gif',\n route: { method: 'POST', path: '/v1/content/gif' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--from <source>', summary: 'prompt | image | video' },\n { flag: '--prompt <text>', summary: 'What to animate' },\n { flag: '--image-url <url>', summary: 'Source image (from: image)' },\n { flag: '--video-url <url>', summary: 'Source video (from: video)' },\n { flag: '--duration <seconds>', summary: 'Clip duration in seconds' },\n { flag: '--fps <n>', summary: 'Frames per second' },\n {\n flag: '--aspect-ratio <ratio>',\n summary: 'e.g. 16:9, 1:1, 9:16',\n },\n { flag: '--loop <bool>', summary: 'Loop the GIF: true | false' },\n { flag: '--width <n>', summary: 'Output width (from: video)' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content gif --prompt \"steam rising from a coffee cup\"',\n 'brew-cli content gif --image-url https://cdn.example.com/mug.png --prompt \"gentle zoom\"',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n from: flagString(flags.from),\n prompt: flagString(flags.prompt),\n imageUrl: flagString(flags.imageUrl),\n videoUrl: flagString(flags.videoUrl),\n duration: flagNumber(flags.duration, '--duration'),\n fps: flagInt(flags.fps, '--fps'),\n aspectRatio: flagString(flags.aspectRatio),\n loop: parseBool(flags.loop),\n width: flagInt(flags.width, '--width'),\n })\n // The API requires the `from` discriminator; infer it from the source\n // that was provided so the obvious invocations just work.\n if (input.from === undefined) {\n if (typeof input.videoUrl === 'string') {\n input.from = 'video'\n } else if (typeof input.imageUrl === 'string') {\n input.from = 'image'\n } else if (typeof input.prompt === 'string') {\n input.from = 'prompt'\n }\n }\n if (input.from === undefined) {\n throw new CliUsageError(\n 'Pass --prompt, --image-url, or --video-url (or --input).'\n )\n }\n const result = await ctx\n .client()\n .content.gif(asSdkInput<ContentGifRequest>(input), requestOptions(flags))\n return { data: result }\n },\n})\n\nfunction parseBool(value: unknown): boolean | undefined {\n if (value === 'true') {\n return true\n }\n if (value === 'false') {\n return false\n }\n if (value === undefined) {\n return\n }\n throw new CliUsageError('--loop must be true or false')\n}\n\nfunction flagNumber(value: unknown, flagName: string): number | undefined {\n if (value === undefined) {\n return\n }\n const parsed = Number(value)\n if (!Number.isFinite(parsed) || parsed <= 0) {\n throw new CliUsageError(`${flagName} must be a positive number`)\n }\n return parsed\n}\n","import type { ContentHtmlToPngRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagInt,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n readTextFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentHtmlToPngCommand = defineCommand({\n path: ['content', 'html-to-png'],\n summary: 'Render HTML to a hosted PNG',\n sdkMethod: 'content.htmlToPng',\n route: { method: 'POST', path: '/v1/content/html-to-png' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n {\n flag: '--file <path>',\n summary: 'HTML file to render, or - for stdin',\n },\n { flag: '--width <n>', summary: 'Viewport width in pixels' },\n { flag: '--max-height <n>', summary: 'Clip the render at this height' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content html-to-png --file email.html --width 600',\n 'cat snippet.html | brew-cli content html-to-png --file -',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const html = await readTextFlag(ctx, flags.file, '--file')\n const input = mergeInput(base, {\n html,\n width: flagInt(flags.width, '--width'),\n maxHeight: flagInt(flags.maxHeight, '--max-height'),\n })\n if (typeof input.html !== 'string' || input.html === '') {\n throw new CliUsageError('HTML is required (--file <path|-> or --input).')\n }\n const result = await ctx\n .client()\n .content.htmlToPng(\n asSdkInput<ContentHtmlToPngRequest>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContentTransformRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentTransformCommand = defineCommand({\n path: ['content', 'transform'],\n summary: 'Optimize or resize a hosted image',\n sdkMethod: 'content.transform',\n route: { method: 'POST', path: '/v1/content/transform' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--url <url>', summary: 'Image URL to transform' },\n {\n flag: '--operation <op>',\n summary: 'optimize | resize (default: optimize)',\n },\n { flag: '--width <n>', summary: 'Target width (resize)' },\n { flag: '--height <n>', summary: 'Target height (resize)' },\n { flag: '--prompt <text>', summary: 'Guidance for the resize' },\n { flag: '--resolution <res>', summary: '1K | 2K | 4K (resize)' },\n {\n flag: '--output-format <format>',\n summary: 'png | jpeg | webp (resize)',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content transform --url https://cdn.example.com/hero.png',\n 'brew-cli content transform --url https://cdn.example.com/hero.png --operation resize --width 1200 --height 630',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n operation: flagString(flags.operation),\n imageUrl: flagString(flags.url),\n width: flagInt(flags.width, '--width'),\n height: flagInt(flags.height, '--height'),\n prompt: flagString(flags.prompt),\n resolution: flagString(flags.resolution),\n outputFormat: flagString(flags.outputFormat),\n })\n if (typeof input.imageUrl !== 'string' || input.imageUrl === '') {\n throw new CliUsageError('An image URL is required (--url or --input).')\n }\n // The API requires the `operation` discriminator. Resize knobs imply\n // resize; the bare-URL case defaults to optimize (which accepts no\n // other fields on the strict schema).\n if (input.operation === undefined) {\n const hasResizeKnobs = [\n input.width,\n input.height,\n input.prompt,\n input.resolution,\n input.outputFormat,\n ].some((value) => value !== undefined)\n input.operation = hasResizeKnobs ? 'resize' : 'optimize'\n }\n const result = await ctx\n .client()\n .content.transform(\n asSdkInput<ContentTransformRequest>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { components } from '../../generated/openapi-types'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport { INPUT_FLAG, mergeInput, readJsonFlag } from '../../lib/input'\nimport { rawRequest } from '../../lib/raw-request'\n\ntype ContractInferResponse =\n components['schemas']['PayloadContractInferResponse']\n\nexport const contractsInferCommand = defineCommand({\n path: ['contracts', 'infer'],\n summary:\n 'Draft a payload contract from a real example payload — nothing is saved; PUT the draft on a trigger',\n sdkMethod: null,\n isRawTransport: true,\n route: { method: 'POST', path: '/v1/payload-contracts/infer' },\n commandClass: 'read',\n flags: [INPUT_FLAG],\n examples: [\n `brew-cli contracts infer --input '{\"email\":\"jane@example.com\",\"order\":{\"total\":9.5}}'`,\n ],\n // Accepts either the bare example object or `{ example: {...} }`.\n // Un-inferable spots (nulls, empty arrays) come back under `issues`.\n run: async ({ ctx, flags }) => {\n const input = mergeInput(\n await readJsonFlag(ctx, flags.input, '--input'),\n {}\n )\n const example = input.example ?? input\n if (\n typeof example !== 'object' ||\n example === null ||\n Array.isArray(example) ||\n Object.keys(example).length === 0\n ) {\n throw new CliUsageError(\n '--input with a non-empty example object is required (the JSON your system sends).'\n )\n }\n const body = await rawRequest<ContractInferResponse>(ctx, {\n method: 'POST',\n path: '/v1/payload-contracts/infer',\n body: { example },\n })\n return { data: body }\n },\n})\n","import type { HttpMethod } from './lib/define-command'\n\n/**\n * The two parity sentinels read these lists. Every entry is a deliberate,\n * reviewed decision — parity tests fail on anything unaccounted for, and\n * on entries that go stale (e.g. after an SDK upgrade closes a gap).\n */\n\nexport type SdkSkip = {\n /** Dotted SDK client path, e.g. `contacts.searchAll`. */\n readonly sdkPath: string\n readonly reason: string\n}\n\nexport type SpecSkip = {\n readonly method: HttpMethod\n readonly path: string\n readonly reason: string\n}\n\n/** SDK methods that intentionally have no dedicated CLI command. */\nexport const SDK_SKIP_LIST: readonly SdkSkip[] = [\n {\n sdkPath: 'contacts.searchAll',\n reason: 'auto-pager covered by `contacts search --all`',\n },\n {\n sdkPath: 'analytics.eventsAll',\n reason: 'auto-pager covered by `analytics events --all`',\n },\n {\n sdkPath: 'analytics.sends.listAll',\n reason: 'auto-pager covered by `analytics sends list --all`',\n },\n {\n sdkPath: 'analytics.triggerInstances.listAll',\n reason: 'auto-pager covered by `analytics trigger-instances list --all`',\n },\n {\n sdkPath: 'brand.update',\n reason: 'SDK alias of brand.patch, exposed as `brand update`',\n },\n {\n sdkPath: 'withBrand',\n reason:\n 'client scoping helper activated by the global `--brand`; not an API command',\n },\n]\n\n/**\n * Spec operations with no CLI command yet. Kept exact: the parity test\n * fails if one of these gains SDK support without gaining a command.\n */\nexport const SPEC_SKIP_LIST: readonly SpecSkip[] = []\n","import { ALL_COMMANDS } from '../registry'\nimport { SDK_SKIP_LIST, SPEC_SKIP_LIST } from '../skip-list'\nimport { CLI_NAME, CLI_VERSION } from '../version'\nimport { GLOBAL_FLAGS } from './define-command'\n\n/**\n * The machine-readable surface contract printed by `brew-cli docs --agent`.\n * Additive-only: tests snapshot this shape, so removals or renames are\n * breaking changes by construction.\n */\nexport function buildManifest(): Record<string, unknown> {\n return {\n name: CLI_NAME,\n version: CLI_VERSION,\n baseUrlDefault: 'https://brew.new/api',\n env: {\n BREW_API_KEY: 'API key (overrides stored login; flags override both)',\n BREW_BRAND_ID: 'Brand id for organization-scoped keys',\n BREW_API_URL: 'API base URL',\n BREW_CLI_CONFIG_DIR: 'Config directory (default ~/.config/brew-cli)',\n },\n exitCodes: {\n '0': 'success',\n '1': 'API or runtime error',\n '2': 'usage error',\n '3': 'authentication error',\n '4': 'confirmation required (re-run with --yes)',\n },\n confirmationProtocol: {\n exitCode: 4,\n envelope: [\n 'confirmationRequired',\n 'command',\n 'summary',\n 'confirmCommand',\n ],\n override: '--yes',\n },\n globalFlags: GLOBAL_FLAGS.map((flag) => ({\n flag: flag.flag,\n summary: flag.summary,\n })),\n commands: ALL_COMMANDS.map((spec) => ({\n command: [CLI_NAME, ...spec.path].join(' '),\n summary: spec.summary,\n class: spec.commandClass,\n ...(spec.isCredited === true ? { credited: true } : {}),\n sdkMethod: spec.sdkMethod,\n ...(spec.isRawTransport === true ? { transport: 'raw' } : {}),\n ...(spec.derivedFrom === undefined\n ? {}\n : { derivedFrom: spec.derivedFrom }),\n ...(spec.route === undefined\n ? {}\n : { route: `${spec.route.method} ${spec.route.path}` }),\n args: (spec.args ?? []).map((arg) => ({\n name: arg.name,\n summary: arg.summary,\n required: arg.isRequired,\n })),\n flags: (spec.flags ?? []).map((flag) => ({\n flag: flag.flag,\n summary: flag.summary,\n })),\n confirmation: spec.confirmSummary !== undefined,\n examples: spec.examples,\n })),\n skips: {\n sdk: SDK_SKIP_LIST,\n spec: SPEC_SKIP_LIST,\n },\n }\n}\n","import { defineCommand } from '../lib/define-command'\nimport { buildManifest } from '../lib/manifest'\n\nconst DOCS_POINTERS = {\n documentation: 'https://docs.getbrew.io',\n openapiSpec: 'https://brew.new/openapi/public-api-v1.yaml',\n agentGuide: 'https://brew.new/api/v1/llms.txt',\n apiCatalog: 'https://brew.new/api/v1/help',\n createApiKeys: 'https://brew.new/settings/api',\n}\n\nexport const docsCommand = defineCommand({\n path: ['docs'],\n summary: 'Documentation pointers; --agent prints the command manifest',\n sdkMethod: null,\n commandClass: 'read',\n flags: [\n {\n flag: '--agent',\n summary: 'Print the machine-readable manifest of every command',\n },\n ],\n examples: ['brew-cli docs', 'brew-cli docs --agent'],\n run: async ({ flags }) => {\n if (flags.agent === true) {\n return { data: buildManifest() }\n }\n return {\n data: DOCS_POINTERS,\n human: Object.entries(DOCS_POINTERS)\n .map(([key, url]) => `${key.padEnd(16)} ${url}`)\n .join('\\n'),\n }\n },\n})\n\nexport const docsApiCommand = defineCommand({\n path: ['docs', 'api'],\n summary: 'Fetch the live machine-readable API catalog (GET /v1/help)',\n sdkMethod: 'help.get',\n route: { method: 'GET', path: '/v1/help' },\n commandClass: 'read',\n examples: ['brew-cli docs api --json'],\n run: async ({ ctx }) => ({\n data: await ctx.client({ allowAnonymous: true }).help.get(),\n }),\n})\n","import { BrewApiError } from '@brew.new/sdk'\nimport { maskApiKey, resolveAuth } from '../lib/client'\nimport { defineCommand } from '../lib/define-command'\nimport { CliApiError } from '../lib/errors'\nimport { ALL_COMMANDS } from '../registry'\n\n/** Discovery endpoints without a dedicated command route. */\nconst NON_COMMAND_OPS = new Set(['GET /v1/llms.txt'])\n\nexport const doctorCommand = defineCommand({\n path: ['doctor'],\n summary:\n 'Trust check: auth, API reachability, and installed-CLI vs live-API drift',\n sdkMethod: null,\n commandClass: 'read',\n examples: ['brew-cli doctor', 'brew-cli doctor --json'],\n run: async ({ ctx }) => {\n const auth = resolveAuth({\n globals: ctx.globals,\n env: ctx.io.env,\n allowAnonymous: true,\n })\n const isKeyPresent = auth.apiKeySource !== 'anonymous'\n const anonymous = ctx.client({ allowAnonymous: true })\n\n let isReachable = false\n let apiVersion: string | null = null\n let reachabilityError: string | null = null\n try {\n const health = (await anonymous.health.get()) as {\n status?: string\n version?: string\n }\n isReachable = health.status === 'ok'\n apiVersion = health.version ?? null\n } catch (error) {\n reachabilityError = error instanceof Error ? error.message : String(error)\n }\n\n let isAuthValid: boolean | null = null\n let plan: string | null = null\n if (isKeyPresent && isReachable) {\n try {\n const usage = (await ctx.client().usage.get()) as {\n plan?: { key?: string }\n }\n isAuthValid = true\n plan = usage.plan?.key ?? null\n } catch (error) {\n if (\n (error instanceof BrewApiError || error instanceof CliApiError) &&\n (error.status === 401 || error.status === 403)\n ) {\n isAuthValid = false\n }\n // Other failures leave auth unknown; reachability already reported.\n }\n }\n\n let missingLocally: readonly string[] = []\n let extraLocally: readonly string[] = []\n let isSurfaceChecked = false\n if (isReachable) {\n try {\n const help = (await anonymous.help.get()) as {\n endpoints?: ReadonlyArray<{ method?: string; path?: string }>\n }\n const liveOps = new Set(\n (help.endpoints ?? [])\n .filter((e) => e.method !== undefined && e.path !== undefined)\n .map((e) => `${e.method} ${e.path}`)\n )\n const localOps = new Set(\n ALL_COMMANDS.flatMap((spec) =>\n spec.route === undefined\n ? []\n : [`${spec.route.method} ${spec.route.path}`]\n )\n )\n missingLocally = [...liveOps].filter(\n (op) => !(localOps.has(op) || NON_COMMAND_OPS.has(op))\n )\n extraLocally = [...localOps].filter((op) => !liveOps.has(op))\n isSurfaceChecked = true\n } catch {\n // /v1/help unavailable — surface check stays unperformed.\n }\n }\n\n const isHealthy =\n isReachable &&\n isAuthValid !== false &&\n isSurfaceChecked &&\n missingLocally.length === 0\n const data = {\n ok: isHealthy,\n apiUrl: auth.apiUrl,\n apiVersion,\n reachable: isReachable,\n ...(reachabilityError === null ? {} : { reachabilityError }),\n apiKey: isKeyPresent ? maskApiKey(auth.apiKey) : null,\n apiKeySource: isKeyPresent ? auth.apiKeySource : null,\n authValid: isAuthValid,\n plan,\n brandId: auth.brandId ?? null,\n surface: {\n checked: isSurfaceChecked,\n commands: ALL_COMMANDS.length,\n missingLocally,\n extraLocally,\n },\n }\n const lines = [\n `${isReachable ? 'ok' : 'FAIL'} api ${auth.apiUrl} (${apiVersion ?? 'unreachable'})`,\n isKeyPresent\n ? `${isAuthValid === false ? 'FAIL' : isAuthValid === true ? 'ok' : '??'} auth ${maskApiKey(auth.apiKey)} via ${auth.apiKeySource}${plan === null ? '' : ` (${plan} plan)`}`\n : '-- no API key (run `brew-cli login` or set BREW_API_KEY)',\n isSurfaceChecked\n ? missingLocally.length === 0\n ? `ok surface in sync (${ALL_COMMANDS.length} commands cover the live API)`\n : `DRIFT live API has ${missingLocally.length} operation(s) this CLI lacks — update @brew.new/cli:\\n${missingLocally.map((op) => ` ${op}`).join('\\n')}`\n : '-- surface not checked (API unreachable)',\n ...(extraLocally.length > 0\n ? [\n `note ${extraLocally.length} local command route(s) unknown to this server (server behind the CLI?)`,\n ]\n : []),\n ]\n return {\n data,\n human: lines.join('\\n'),\n exitCode: isHealthy ? 0 : 1,\n }\n },\n})\n","import type { AddDomainInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const domainsAddCommand = defineCommand({\n path: ['domains', 'add'],\n summary: 'Add a sending domain (response lists the DNS records to set)',\n sdkMethod: 'domains.add',\n route: { method: 'POST', path: '/v1/domains' },\n commandClass: 'write',\n args: [\n {\n name: 'domain',\n summary: 'Domain name to add (e.g. mail.example.com)',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--region <region>', summary: 'Sending region (us-east-1)' },\n {\n flag: '--custom-return-path <subdomain>',\n summary: 'Custom Return-Path subdomain',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: ['brew-cli domains add mail.example.com'],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n name: args.domain,\n region: flagString(flags.region),\n customReturnPath: flagString(flags.customReturnPath),\n })\n const result = await ctx\n .client()\n .domains.add(asSdkInput<AddDomainInput>(input), requestOptions(flags))\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const domainsDeleteCommand = defineCommand({\n path: ['domains', 'delete'],\n summary: 'Delete a sending domain',\n sdkMethod: 'domains.delete',\n route: { method: 'DELETE', path: '/v1/domains/{domainId}' },\n commandClass: 'destructive',\n args: [\n { name: 'domainId', summary: 'Domain id to delete', isRequired: true },\n ],\n examples: ['brew-cli domains delete dom_8s1Kj --yes'],\n confirmSummary: ({ args }) =>\n `Delete sending domain ${args.domainId ?? ''}. Future sends from it will fail until it is re-added and re-verified. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().domains.delete({ domainId: args.domainId ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { CliApiError } from '../../lib/errors'\n\nexport const domainsGetCommand = defineCommand({\n path: ['domains', 'get'],\n summary: 'Fetch one sending domain by id',\n sdkMethod: null,\n derivedFrom: 'domains.list',\n route: { method: 'GET', path: '/v1/domains' },\n commandClass: 'read',\n args: [{ name: 'domainId', summary: 'Domain id to fetch', isRequired: true }],\n examples: ['brew-cli domains get dom_3k9sQ'],\n run: async ({ ctx, args }) => {\n const domainId = args.domainId ?? ''\n const result = await ctx.client().domains.list({ domainId })\n const domain = result.data[0]\n if (domain === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'DOMAIN_NOT_FOUND',\n type: 'not_found',\n message: `No domain found for ${domainId}`,\n suggestion: 'List domains with `brew-cli domains list`.',\n })\n }\n return { data: domain }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const domainsHealthCommand = defineCommand({\n path: ['domains', 'health'],\n summary: 'Deliverability health: verdict, signals, DNS/auth, reputation',\n sdkMethod: 'domains.health',\n route: { method: 'GET', path: '/v1/domains/{domainId}/health' },\n commandClass: 'read',\n args: [\n { name: 'domainId', summary: 'Domain id to inspect', isRequired: true },\n ],\n examples: ['brew-cli domains health kx7bkh53hasmfeh5kd7sqgykt187g8ww'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().domains.health({\n domainId: args.domainId ?? '',\n }),\n }),\n})\n","import type { ListDomainsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const domainsListCommand = defineCommand({\n path: ['domains', 'list'],\n summary: 'List sending domains with verification state and DNS records',\n sdkMethod: 'domains.list',\n route: { method: 'GET', path: '/v1/domains' },\n commandClass: 'read',\n flags: [\n {\n flag: '--sendable-only',\n summary: 'Only domains currently able to send',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli domains list',\n 'brew-cli domains list --sendable-only --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n sendableOnly: flags.sendableOnly === true ? true : undefined,\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const domains = ctx.client().domains\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n domains.list(\n asSdkInput<ListDomainsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderDomains(rows),\n }\n }\n const result = await domains.list(asSdkInput<ListDomainsInput>(input))\n return { data: result, human: renderDomains(result.data) }\n },\n})\n\nfunction renderDomains(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No sending domains found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'domainId', header: 'DOMAIN ID' },\n { key: 'name', header: 'NAME' },\n { key: 'status', header: 'STATUS' },\n { key: 'sendable', header: 'SENDABLE' },\n ])\n}\n","import type { UpdateDomainSettingsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const domainsUpdateCommand = defineCommand({\n path: ['domains', 'update'],\n summary: 'Update default sender settings for a domain',\n sdkMethod: 'domains.updateSettings',\n route: { method: 'PATCH', path: '/v1/domains/{domainId}' },\n commandClass: 'write',\n args: [\n { name: 'domainId', summary: 'Domain id to update', isRequired: true },\n ],\n flags: [\n {\n flag: '--default-sender-name <name>',\n summary: 'Default From display name',\n },\n {\n flag: '--default-from-email <email>',\n summary: 'Default From address on this domain',\n },\n {\n flag: '--default-reply-to-email <email>',\n summary: 'Default Reply-To address',\n },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli domains update dom_8s1Kj --default-sender-name \"Brew Coffee\"',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n defaultSenderName: flagString(flags.defaultSenderName),\n defaultFromEmail: flagString(flags.defaultFromEmail),\n defaultReplyToEmail: flagString(flags.defaultReplyToEmail),\n })\n if (Object.keys(input).length === 0) {\n throw new CliUsageError('Nothing to update — pass flags or --input.')\n }\n const result = await ctx.client().domains.updateSettings(\n asSdkInput<UpdateDomainSettingsInput>({\n ...input,\n domainId: args.domainId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const domainsVerifyCommand = defineCommand({\n path: ['domains', 'verify'],\n summary: 'Re-check DNS records and refresh domain verification',\n sdkMethod: 'domains.verify',\n route: { method: 'POST', path: '/v1/domains/{domainId}/verify' },\n commandClass: 'write',\n args: [\n { name: 'domainId', summary: 'Domain id to verify', isRequired: true },\n ],\n examples: ['brew-cli domains verify dom_8s1Kj'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().domains.verify({ domainId: args.domainId ?? '' }),\n }),\n})\n","import {\n AUDIT_EMAIL_DEFAULT_TIMEOUT_MS,\n type AuditEmailInput,\n} from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n readTextFlag,\n requestOptions,\n} from '../../lib/input'\n\nconst SENDING_PURPOSES = new Set(['marketing', 'transactional'])\n\nexport { AUDIT_EMAIL_DEFAULT_TIMEOUT_MS }\n\nfunction optionalText(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined\n}\n\nexport const emailsAuditCommand = defineCommand({\n path: ['emails', 'audit'],\n summary:\n 'Audit raw email content for production readiness (5 credits when complete)',\n sdkMethod: 'emails.auditEmail',\n route: { method: 'POST', path: '/v1/emails/audit' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n {\n flag: '--file <path>',\n summary: 'Email HTML file to audit, or - for stdin',\n },\n { flag: '--subject <text>', summary: 'Inbox subject line' },\n {\n flag: '--preview-text <text>',\n summary: 'Inbox preview text; an explicit empty value stays empty',\n },\n {\n flag: '--sending-purpose <purpose>',\n summary: 'marketing | transactional (default: marketing)',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails audit --file newsletter.html --subject \"August update\" --sending-purpose marketing',\n 'cat email.html | brew-cli emails audit --file - --subject \"Receipt\" --sending-purpose transactional',\n `brew-cli emails audit --input '{\"emailHtml\":\"<p>Hello</p>\",\"subject\":\"Hello\"}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const emailHtml = await readTextFlag(ctx, flags.file, '--file')\n const sendingPurpose = flagString(flags.sendingPurpose)\n if (sendingPurpose !== undefined && !SENDING_PURPOSES.has(sendingPurpose)) {\n throw new CliUsageError(\n `Unknown --sending-purpose '${sendingPurpose}' (expected marketing | transactional).`\n )\n }\n const input = mergeInput(base, {\n emailHtml,\n subject: optionalText(flags.subject),\n previewText: optionalText(flags.previewText),\n sendingPurpose,\n })\n if (typeof input.emailHtml !== 'string' || input.emailHtml.trim() === '') {\n throw new CliUsageError(\n '--file is required (a path, or - for stdin), or emailHtml via --input.'\n )\n }\n const signal = AbortSignal.timeout(AUDIT_EMAIL_DEFAULT_TIMEOUT_MS)\n try {\n const result = await ctx\n .client()\n .emails.auditEmail(asSdkInput<AuditEmailInput>(input), {\n signal,\n ...(requestOptions(flags) ?? {}),\n })\n return { data: result }\n } catch (error) {\n if (signal.aborted) {\n throw signal.reason\n }\n throw error\n }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n} from '../../lib/input'\n\ntype CloneEmailInput = Parameters<BrewClient['emails']['clone']>[0]\n\nexport const emailsCloneCommand = defineCommand({\n path: ['emails', 'clone'],\n summary: 'Clone a design into a new one (exact snapshot copy, no AI)',\n sdkMethod: 'emails.clone',\n route: { method: 'POST', path: '/v1/emails/{emailId}/clone' },\n commandClass: 'write',\n args: [{ name: 'emailId', summary: 'Design id to clone', isRequired: true }],\n flags: [\n {\n flag: '--email-version-id <id>',\n summary: 'Exact source version to clone (default: latest)',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails clone eml_2SmZOWV3ZQ7W5x6g3m4p',\n 'brew-cli emails clone eml_2SmZOWV3ZQ7W5x6g3m4p --email-version-id emv_9f2kX',\n ],\n run: async ({ ctx, args, flags }) => {\n const emailVersionId = flagString(flags.emailVersionId)\n return {\n data: await ctx.client().emails.clone(\n asSdkInput<CloneEmailInput>({\n emailId: args.emailId ?? '',\n ...(emailVersionId === undefined ? {} : { emailVersionId }),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\ntype CreateInboxPlacementTestInput = Parameters<\n BrewClient['emails']['createInboxPlacementTest']\n>[0]\n\nexport const emailsCreateInboxPlacementTestCommand = defineCommand({\n path: ['emails', 'create-inbox-placement-test'],\n summary:\n 'Seed-test where the design lands (inbox vs spam) via a real small send (10 credits)',\n sdkMethod: 'emails.createInboxPlacementTest',\n route: { method: 'POST', path: '/v1/emails/{emailId}/inbox-placement-tests' },\n commandClass: 'write',\n isCredited: true,\n args: [{ name: 'emailId', summary: 'Design id to test', isRequired: true }],\n flags: [\n {\n flag: '--domain <domainId>',\n summary: 'Verified sending domain id the seed send goes out on',\n },\n {\n flag: '--subject <text>',\n summary: 'Seed-send subject (default: the email title)',\n },\n {\n flag: '--preview-text <text>',\n summary: 'Preheader override for this test',\n },\n {\n flag: '--email-version-id <id>',\n summary: 'Pin a specific design version (default: latest)',\n },\n {\n flag: '--providers <domains...>',\n summary:\n 'Restrict seed mailbox providers, repeatable (e.g. gmail.com outlook.com)',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails create-inbox-placement-test eml_2SmZOWV3ZQ7W5x6g3m4p --domain kx7bkh53hasmfeh5kd7sqgykt187g8ww',\n 'brew-cli emails create-inbox-placement-test eml_2SmZOWV3ZQ7W5x6g3m4p --domain kx7bkh53hasmfeh5kd7sqgykt187g8ww --subject \"Variant B\" --providers gmail.com outlook.com',\n ],\n run: async ({ ctx, args, flags }) => {\n const domainId = flagString(flags.domain)\n if (domainId === undefined) {\n throw new CliUsageError(\n '--domain is required (a verified sending domain id; see `brew-cli domains list`).'\n )\n }\n const subject = flagString(flags.subject)\n const previewText = flagString(flags.previewText)\n const emailVersionId = flagString(flags.emailVersionId)\n const providers = toStringArray(flags.providers)\n return {\n // The API answers 202 with a pending test (status: \"collecting\");\n // poll `emails get-inbox-placement-results --test-id` for the outcome.\n data: await ctx.client().emails.createInboxPlacementTest(\n asSdkInput<CreateInboxPlacementTestInput>({\n emailId: args.emailId ?? '',\n domainId,\n ...(subject === undefined ? {} : { subject }),\n ...(previewText === undefined ? {} : { previewText }),\n ...(emailVersionId === undefined ? {} : { emailVersionId }),\n ...(providers === undefined ? {} : { providers }),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const emailsDeleteCommand = defineCommand({\n path: ['emails', 'delete'],\n summary: 'Hard-delete an email design and all its versions (idempotent)',\n sdkMethod: 'emails.delete',\n route: { method: 'DELETE', path: '/v1/emails/{emailId}' },\n commandClass: 'destructive',\n args: [{ name: 'emailId', summary: 'Design id to delete', isRequired: true }],\n examples: ['brew-cli emails delete eml_2SmZOWV3ZQ7W5x6g3m4p --yes'],\n confirmSummary: ({ args }) =>\n `Hard-delete email design ${args.emailId ?? ''} and ALL its versions. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().emails.delete({ emailId: args.emailId ?? '' }),\n }),\n})\n","import type { EditEmailInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n toStringArray,\n} from '../../lib/input'\nimport { progress } from '../../lib/output'\n\nexport const emailsEditCommand = defineCommand({\n path: ['emails', 'edit'],\n summary:\n 'AI-edit an email design, and/or set its subject line (subject-only is free)',\n sdkMethod: 'emails.edit',\n route: { method: 'PATCH', path: '/v1/emails/{emailId}' },\n commandClass: 'write',\n isCredited: true,\n args: [{ name: 'emailId', summary: 'Design id to edit', isRequired: true }],\n flags: [\n { flag: '--prompt <text>', summary: 'The edit instruction' },\n {\n flag: '--email-version-id <id>',\n summary: 'Edit from a specific version (default: latest); needs --prompt',\n },\n {\n flag: '--content-urls <urls...>',\n summary: 'Page URL(s) to pull copy and imagery from, repeatable',\n },\n {\n flag: '--subject-line <text>',\n summary:\n \"The design's default inbox subject line; alone it skips the AI run\",\n },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli emails edit eml_2SmZOWV3ZQ7W5x6g3m4p --prompt \"Tighten the hero copy\"',\n 'brew-cli emails edit eml_2SmZOWV3ZQ7W5x6g3m4p --subject-line \"Your September roundup\"',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n prompt: flagString(flags.prompt),\n emailVersionId: flagString(flags.emailVersionId),\n contentUrls: toStringArray(flags.contentUrls),\n subjectLine: flagString(flags.subjectLine),\n })\n const isPromptEdit = typeof input.prompt === 'string' && input.prompt !== ''\n const hasSubjectLine =\n typeof input.subjectLine === 'string' && input.subjectLine !== ''\n if (!(isPromptEdit || hasSubjectLine)) {\n throw new CliUsageError(\n '--prompt or --subject-line is required (or provide either via --input).'\n )\n }\n // Subject-only is a deterministic in-place patch server-side: no AI run,\n // no new version, and no credits — so it returns immediately.\n progress(\n ctx,\n isPromptEdit\n ? 'Editing email… (typically 30-90s)'\n : 'Setting the subject line…'\n )\n const result = await ctx\n .client()\n .emails.edit(\n asSdkInput<EditEmailInput>({ ...input, emailId: args.emailId ?? '' }),\n { timeoutMs: 240_000 }\n )\n return { data: result }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n} from '../../lib/input'\n\ntype ExportEmailInput = Parameters<BrewClient['emails']['export']>[0]\n\nexport const emailsExportCommand = defineCommand({\n path: ['emails', 'export'],\n summary: 'Export a design to a connected ESP as a template (not a send)',\n sdkMethod: 'emails.export',\n route: { method: 'POST', path: '/v1/emails/{emailId}/export' },\n commandClass: 'write',\n args: [{ name: 'emailId', summary: 'Design id to export', isRequired: true }],\n flags: [\n {\n flag: '--provider <provider>',\n summary:\n 'Connected ESP: braze, hubspot, klaviyo, mailchimp, iterable, postmark, onesignal, mailgun, sendgrid',\n },\n {\n flag: '--template-name <name>',\n summary: 'Template name in the ESP (default: the email title)',\n },\n {\n flag: '--dry-run',\n summary:\n 'Validate design, ownership, and ESP connection without creating a template',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails export eml_2SmZOWV3ZQ7W5x6g3m4p --provider klaviyo',\n 'brew-cli emails export eml_2SmZOWV3ZQ7W5x6g3m4p --provider mailchimp --template-name \"Fall sale\" --dry-run',\n ],\n run: async ({ ctx, args, flags }) => {\n const provider = flagString(flags.provider)\n if (provider === undefined) {\n throw new CliUsageError(\n '--provider is required: braze, hubspot, klaviyo, mailchimp, iterable, postmark, onesignal, mailgun, or sendgrid.'\n )\n }\n const templateName = flagString(flags.templateName)\n return {\n data: await ctx.client().emails.export(\n asSdkInput<ExportEmailInput>({\n emailId: args.emailId ?? '',\n provider,\n ...(templateName === undefined ? {} : { templateName }),\n // The spec field is snake_case, unlike the rest of the API surface.\n ...(flags.dryRun === true ? { dry_run: true } : {}),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import type { GenerateEmailInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\nimport { progress } from '../../lib/output'\n\nexport const emailsGenerateCommand = defineCommand({\n path: ['emails', 'generate'],\n summary: 'Generate a new on-brand email design from a prompt',\n sdkMethod: 'emails.generate',\n route: { method: 'POST', path: '/v1/emails' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--prompt <text>', summary: 'What the email should be' },\n {\n flag: '--reference-email-id <emailId>',\n summary: 'Existing design or template to base the layout on',\n },\n {\n flag: '--content-urls <urls...>',\n summary: 'Page URL(s) to pull copy and imagery from, repeatable',\n },\n {\n flag: '--group-id <groupId>',\n summary: 'Destination group id; omit or use ungrouped for Ungrouped',\n },\n {\n flag: '--subject-line <text>',\n summary: \"The design's default inbox subject line\",\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails generate --prompt \"Product-launch email for the fall sale\"',\n 'brew-cli emails generate --prompt \"Welcome email\" --group-id grp_welcome',\n 'brew-cli emails generate --prompt \"Welcome email\" --subject-line \"Welcome to Brew\"',\n 'brew-cli emails generate --prompt \"Welcome email\" --content-urls https://example.com/pricing',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n prompt: flagString(flags.prompt),\n referenceEmailId: flagString(flags.referenceEmailId),\n contentUrls: toStringArray(flags.contentUrls),\n groupId: flagString(flags.groupId),\n subjectLine: flagString(flags.subjectLine),\n })\n if (typeof input.prompt !== 'string' || input.prompt === '') {\n throw new CliUsageError(\n '--prompt is required (or provide it via --input).'\n )\n }\n progress(ctx, 'Generating email… (typically 30-90s)')\n const result = await ctx\n .client()\n .emails.generate(asSdkInput<GenerateEmailInput>(input), {\n timeoutMs: 240_000,\n ...(requestOptions(flags) ?? {}),\n })\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { CliApiError } from '../../lib/errors'\nimport { flagString } from '../../lib/input'\n\nexport const emailsGetCommand = defineCommand({\n path: ['emails', 'get'],\n summary: 'Fetch one email design by id',\n sdkMethod: null,\n derivedFrom: 'emails.list',\n route: { method: 'GET', path: '/v1/emails' },\n commandClass: 'read',\n args: [\n {\n name: 'emailId',\n summary: 'Design id returned by emails generate/import',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: html,versions',\n },\n ],\n examples: [\n 'brew-cli emails get eml_2SmZOWV3ZQ7W5x6g3m4p',\n 'brew-cli emails get eml_2SmZOWV3ZQ7W5x6g3m4p --include html,versions',\n ],\n run: async ({ ctx, args, flags }) => {\n const emailId = args.emailId ?? ''\n const include = flagString(flags.include)\n const result = await ctx.client().emails.list({\n emailId,\n ...(include === undefined ? {} : { include }),\n })\n const email = result.data[0]\n if (email === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'EMAIL_NOT_FOUND',\n type: 'not_found',\n message: `No email design found for ${emailId}`,\n suggestion: 'List designs with `brew-cli emails list`.',\n })\n }\n return { data: email }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, flagString } from '../../lib/input'\n\ntype GetInboxPlacementResultsInput = Parameters<\n BrewClient['emails']['getInboxPlacementResults']\n>[0]\n\nexport const emailsGetInboxPlacementResultsCommand = defineCommand({\n path: ['emails', 'get-inbox-placement-results'],\n summary:\n 'Inbox placement results: one test with --test-id, else the recent tests',\n sdkMethod: 'emails.getInboxPlacementResults',\n route: { method: 'GET', path: '/v1/emails/{emailId}/inbox-placement-tests' },\n commandClass: 'read',\n args: [\n {\n name: 'emailId',\n summary: 'Design id the tests ran on',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--test-id <id>',\n summary:\n 'One test: live status + per-provider placement (re-poll ~30s until completed)',\n },\n ],\n examples: [\n 'brew-cli emails get-inbox-placement-results eml_2SmZOWV3ZQ7W5x6g3m4p',\n 'brew-cli emails get-inbox-placement-results eml_2SmZOWV3ZQ7W5x6g3m4p --test-id ibp_2f1c9d8a',\n ],\n run: async ({ ctx, args, flags }) => ({\n data: await ctx.client().emails.getInboxPlacementResults(\n asSdkInput<GetInboxPlacementResultsInput>({\n emailId: args.emailId ?? '',\n testId: flagString(flags.testId),\n })\n ),\n }),\n})\n","import type { CreateEmailGroupInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../../lib/input'\n\nexport const emailsGroupsCreateCommand = defineCommand({\n path: ['emails', 'groups', 'create'],\n summary: 'Create a named email folder (group)',\n sdkMethod: 'emailGroups.create',\n route: { method: 'POST', path: '/v1/email-groups' },\n commandClass: 'write',\n flags: [\n {\n flag: '--name <name>',\n summary: 'Folder label, 1-60 chars (Ungrouped is reserved)',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: ['brew-cli emails groups create --name Welcome'],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n if (typeof input.name !== 'string' || input.name === '') {\n throw new CliUsageError('--name is required (or provide it via --input).')\n }\n return {\n data: await ctx\n .client()\n .emailGroups.create(\n asSdkInput<CreateEmailGroupInput>(input),\n requestOptions(flags)\n ),\n }\n },\n})\n","import type { DeleteEmailGroupInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { asSdkInput } from '../../../lib/input'\n\nexport const emailsGroupsDeleteCommand = defineCommand({\n path: ['emails', 'groups', 'delete'],\n summary: 'Delete an email folder (group); its emails move to Ungrouped',\n sdkMethod: 'emailGroups.delete',\n route: { method: 'DELETE', path: '/v1/email-groups/{groupId}' },\n commandClass: 'destructive',\n args: [\n {\n name: 'groupId',\n summary: 'Named group id (grp_*); Ungrouped cannot be deleted',\n isRequired: true,\n },\n ],\n examples: ['brew-cli emails groups delete grp_welcome --yes'],\n confirmSummary: ({ args }) =>\n `Delete email group ${args.groupId ?? ''}. Its emails move to Ungrouped; the folder itself cannot be recovered.`,\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .emailGroups.delete(\n asSdkInput<DeleteEmailGroupInput>({ groupId: args.groupId ?? '' })\n ),\n }),\n})\n","import type { ListEmailGroupsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const emailsGroupsListCommand = defineCommand({\n path: ['emails', 'groups', 'list'],\n summary: 'List email groups in display order, including Ungrouped',\n sdkMethod: 'emailGroups.list',\n route: { method: 'GET', path: '/v1/email-groups' },\n commandClass: 'read',\n flags: [LIMIT_FLAG, CURSOR_FLAG, ALL_FLAG, INPUT_FLAG],\n examples: [\n 'brew-cli emails groups list',\n 'brew-cli emails groups list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const fetchPage = (cursor: string | undefined) =>\n ctx.client().emailGroups.list(\n asSdkInput<ListEmailGroupsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n if (flags.all === true) {\n const rows = await collectAll(ctx, fetchPage)\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderEmailGroups(rows),\n }\n }\n const result = await fetchPage(undefined)\n return { data: result, human: renderEmailGroups(result.data) }\n },\n})\n\nfunction renderEmailGroups(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No email groups found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'groupId', header: 'GROUP ID' },\n { key: 'groupName', header: 'GROUP' },\n ])\n}\n","import type { UpdateEmailGroupInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\n\nexport const emailsGroupsUpdateCommand = defineCommand({\n path: ['emails', 'groups', 'update'],\n summary: 'Rename an email folder (group)',\n sdkMethod: 'emailGroups.update',\n route: { method: 'PATCH', path: '/v1/email-groups/{groupId}' },\n commandClass: 'write',\n args: [\n {\n name: 'groupId',\n summary: 'Named group id (grp_*); Ungrouped cannot be renamed',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--name <name>', summary: 'New folder label, 1-60 chars' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli emails groups update grp_welcome --name \"Welcome series\"',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n if (typeof input.name !== 'string' || input.name === '') {\n throw new CliUsageError('--name is required (or provide it via --input).')\n }\n return {\n data: await ctx.client().emailGroups.update(\n asSdkInput<UpdateEmailGroupInput>({\n ...input,\n groupId: args.groupId ?? '',\n })\n ),\n }\n },\n})\n","import type { EmailImportInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n readTextFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const emailsImportCommand = defineCommand({\n path: ['emails', 'import'],\n summary: 'Import existing HTML, MJML, or JSX as a new editable design',\n sdkMethod: 'emails.import',\n route: { method: 'POST', path: '/v1/emails/import' },\n commandClass: 'write',\n flags: [\n {\n flag: '--file <path>',\n summary: 'Source file to import, or - for stdin',\n },\n { flag: '--format <format>', summary: 'Source format: html | mjml | jsx' },\n { flag: '--title <title>', summary: 'Design title' },\n {\n flag: '--base-url <url>',\n summary: 'Base URL for resolving relative asset links',\n },\n {\n flag: '--subject-line <text>',\n summary: \"The design's default inbox subject line\",\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails import --file newsletter.html --format html --title \"Legacy newsletter\"',\n 'brew-cli emails import --file newsletter.html --format html --subject-line \"This month at Brew\"',\n 'cat email.html | brew-cli emails import --file - --format html',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const content = await readTextFlag(ctx, flags.file, '--file')\n const input = mergeInput(base, {\n content,\n format: flagString(flags.format),\n title: flagString(flags.title),\n baseUrl: flagString(flags.baseUrl),\n subjectLine: flagString(flags.subjectLine),\n })\n if (typeof input.content !== 'string' || input.content.trim() === '') {\n throw new CliUsageError(\n '--file is required (a path, or - for stdin), or content via --input.'\n )\n }\n if (typeof input.format !== 'string') {\n throw new CliUsageError('--format is required: html | mjml | jsx.')\n }\n const result = await ctx\n .client()\n .emails.import(asSdkInput<EmailImportInput>(input), requestOptions(flags))\n return { data: result }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n} from '../../lib/input'\n\ntype ImportFigmaInput = Parameters<BrewClient['emails']['importFigma']>[0]\n\nexport const emailsImportFigmaCommand = defineCommand({\n path: ['emails', 'import-figma'],\n summary:\n 'Convert one Figma frame into an editable design (deterministic, free)',\n sdkMethod: 'emails.importFigma',\n route: { method: 'POST', path: '/v1/emails/figma' },\n commandClass: 'write',\n flags: [\n {\n flag: '--url <figmaUrl>',\n summary: 'Figma frame link; must include a node-id query parameter',\n },\n {\n flag: '--title <title>',\n summary: 'Design title (default: the Figma frame name)',\n },\n {\n flag: '--format <format>',\n summary: 'Representation returned in content: jsx (default) or html',\n },\n {\n flag: '--subject-line <text>',\n summary: \"The design's default inbox subject line\",\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails import-figma --url \"https://www.figma.com/design/abc123/Launch?node-id=1-2\"',\n 'brew-cli emails import-figma --url \"https://www.figma.com/design/abc123/Launch?node-id=1-2\" --subject-line \"Launch day is here\"',\n ],\n run: async ({ ctx, flags }) => {\n const figmaUrl = flagString(flags.url)\n if (figmaUrl === undefined) {\n throw new CliUsageError(\n '--url is required (a Figma frame link containing node-id).'\n )\n }\n const title = flagString(flags.title)\n const format = flagString(flags.format)\n const subjectLine = flagString(flags.subjectLine)\n return {\n data: await ctx.client().emails.importFigma(\n asSdkInput<ImportFigmaInput>({\n figmaUrl,\n ...(title === undefined ? {} : { title }),\n ...(format === undefined ? {} : { format }),\n ...(subjectLine === undefined ? {} : { subjectLine }),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import type { ListEmailsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const emailsListCommand = defineCommand({\n path: ['emails', 'list'],\n summary: 'List email designs (the single email read)',\n sdkMethod: 'emails.list',\n route: { method: 'GET', path: '/v1/emails' },\n commandClass: 'read',\n flags: [\n {\n flag: '--status <status>',\n summary: 'Filter by status: streaming | complete | error',\n },\n {\n flag: '--group-id <groupId>',\n summary: 'Filter by one group id; use ungrouped for no saved group',\n },\n {\n flag: '--sort <field>',\n summary: 'Sort by updatedAt | createdAt | title',\n },\n { flag: '--order <order>', summary: 'Sort order: asc | desc' },\n { flag: '--created-at-from <iso>', summary: 'Created at or after (ISO)' },\n { flag: '--created-at-to <iso>', summary: 'Created at or before (ISO)' },\n { flag: '--updated-at-from <iso>', summary: 'Updated at or after (ISO)' },\n { flag: '--updated-at-to <iso>', summary: 'Updated at or before (ISO)' },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli emails list --status complete --limit 10',\n 'brew-cli emails list --group-id ungrouped --sort title --order asc',\n 'brew-cli emails list --updated-at-from 2026-08-01T00:00:00Z',\n 'brew-cli emails list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n status: flagString(flags.status),\n groupId: flagString(flags.groupId),\n sort: flagString(flags.sort),\n order: flagString(flags.order),\n createdAtFrom: flagString(flags.createdAtFrom),\n createdAtTo: flagString(flags.createdAtTo),\n updatedAtFrom: flagString(flags.updatedAtFrom),\n updatedAtTo: flagString(flags.updatedAtTo),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const emails = ctx.client().emails\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n emails.list(\n asSdkInput<ListEmailsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderEmails(rows),\n }\n }\n const result = await emails.list(asSdkInput<ListEmailsInput>(input))\n return { data: result, human: renderEmails(result.data) }\n },\n})\n\nfunction renderEmails(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No email designs found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'emailId', header: 'EMAIL ID' },\n { key: 'title', header: 'TITLE' },\n { key: 'status', header: 'STATUS' },\n { key: 'groupName', header: 'GROUP' },\n { key: 'updatedAt', header: 'UPDATED' },\n ])\n}\n","import type { PreviewEmailClientsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const emailsPreviewClientsCommand = defineCommand({\n path: ['emails', 'preview-clients'],\n summary: 'Render the design across real email clients (10 credits)',\n sdkMethod: 'emails.previewClients',\n route: { method: 'POST', path: '/v1/emails/{emailId}/client-previews' },\n commandClass: 'write',\n isCredited: true,\n args: [\n { name: 'emailId', summary: 'Design id to preview', isRequired: true },\n ],\n flags: [\n {\n flag: '--clients <ids...>',\n summary:\n 'Client id(s) to render, repeatable (e.g. applemail16 iphone16_18); default: a popular spread',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails preview-clients eml_2SmZOWV3ZQ7W5x6g3m4p',\n 'brew-cli emails preview-clients eml_2SmZOWV3ZQ7W5x6g3m4p --clients applemail16 outlook2021_win11_lm_dt',\n ],\n run: async ({ ctx, args, flags }) => {\n const clients = toStringArray(flags.clients)\n return {\n data: await ctx.client().emails.previewClients(\n asSdkInput<PreviewEmailClientsInput>({\n emailId: args.emailId ?? '',\n ...(clients === undefined ? {} : { clients }),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport { flagInt, IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nexport const emailsRestoreCommand = defineCommand({\n path: ['emails', 'restore'],\n summary: 'Restore a previous version as the new latest (non-destructive)',\n sdkMethod: 'emails.restore',\n route: { method: 'POST', path: '/v1/emails/{emailId}/restore' },\n commandClass: 'write',\n args: [\n { name: 'emailId', summary: 'Design id to restore', isRequired: true },\n ],\n // --version is taken by the CLI itself, hence --to-version.\n flags: [\n { flag: '--to-version <n>', summary: 'Version number to restore' },\n IDEMPOTENCY_FLAG,\n ],\n examples: ['brew-cli emails restore eml_2SmZOWV3ZQ7W5x6g3m4p --to-version 2'],\n run: async ({ ctx, args, flags }) => {\n const version = flagInt(flags.toVersion, '--to-version')\n if (version === undefined) {\n throw new CliUsageError(\n '--to-version is required (see `brew-cli emails get <emailId> --include versions`).'\n )\n }\n const result = await ctx\n .client()\n .emails.restore(\n { emailId: args.emailId ?? '', version },\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { SendEmailInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const emailsSendCommand = defineCommand({\n path: ['emails', 'send'],\n summary: 'Send an email: a real campaign, or a safe test with --test',\n sdkMethod: 'emails.send',\n route: { method: 'POST', path: '/v1/sends' },\n commandClass: 'destructive',\n args: [{ name: 'emailId', summary: 'Design id to send', isRequired: true }],\n flags: [\n {\n flag: '--test',\n summary: 'Test delivery to --to only; skips the confirmation gate',\n },\n {\n flag: '--to <emails...>',\n summary: 'Recipient(s): required for --test, ad-hoc list for campaigns',\n },\n { flag: '--subject <text>', summary: 'Subject line' },\n { flag: '--audience <audienceId>', summary: 'Campaign audience segment' },\n { flag: '--domain <domainId>', summary: 'Verified sending domain id' },\n {\n flag: '--schedule-at <iso>',\n summary: 'Schedule the campaign for an ISO-8601 time (default: now)',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails send eml_1 --test --to qa@example.com --subject \"Preview\"',\n 'brew-cli emails send eml_1 --subject \"Fall sale\" --domain dom_1 --audience aud_1 --yes',\n 'brew-cli emails send eml_1 --subject \"Fall sale\" --domain dom_1 --audience aud_1 --schedule-at 2026-09-01T09:00:00Z --yes',\n ],\n confirmSummary: ({ args, flags }) => {\n // The gate must describe the MERGED send, not just the flags — an\n // --input body can carry test/audienceId/to/scheduledAt on its own.\n const inline = parseInlineInput(flags.input)\n const isTest = flags.test === true || inline?.test === true\n if (isTest) {\n return\n }\n const audience = flagString(flags.audience) ?? asString(inline?.audienceId)\n const scheduleAt =\n flagString(flags.scheduleAt) ?? asString(inline?.scheduledAt)\n const recipients = toStringArray(flags.to) ?? asRecipients(inline?.to)\n const target =\n audience === undefined\n ? recipients === undefined\n ? flags.input === '-'\n ? 'the recipients named in the --input body on stdin'\n : 'its recipients'\n : `${recipients.length} listed recipient(s)`\n : `audience ${audience}`\n const timing = scheduleAt === undefined ? 'now' : `at ${scheduleAt}`\n return `Send email ${args.emailId ?? ''} as a REAL campaign to ${target} ${timing}. Real recipients receive it; this cannot be undone.`\n },\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n emailId: args.emailId,\n test: flags.test === true ? true : undefined,\n subject: flagString(flags.subject),\n to: collapseRecipients(toStringArray(flags.to)),\n audienceId: flagString(flags.audience),\n domainId: flagString(flags.domain),\n scheduledAt: flagString(flags.scheduleAt),\n })\n if (typeof input.subject !== 'string' || input.subject === '') {\n throw new CliUsageError(\n '--subject is required (or provide it via --input).'\n )\n }\n if (input.test === true && input.to === undefined) {\n throw new CliUsageError('--to is required for a --test send.')\n }\n if (input.test !== true && typeof input.domainId !== 'string') {\n throw new CliUsageError(\n 'Campaign sends require --domain (a verified domain id); use --test for a test delivery.'\n )\n }\n const result = await ctx\n .client()\n .emails.send(asSdkInput<SendEmailInput>(input), requestOptions(flags))\n return { data: result }\n },\n})\n\nfunction collapseRecipients(\n values: readonly string[] | undefined\n): string | readonly string[] | undefined {\n if (values === undefined) {\n return\n }\n const [first] = values\n return values.length === 1 && first !== undefined ? first : values\n}\n\n/** Best-effort parse of an inline --input body (stdin `-` stays opaque). */\nfunction parseInlineInput(value: unknown): Record<string, unknown> | undefined {\n if (typeof value !== 'string' || value === '-') {\n return\n }\n try {\n const parsed: unknown = JSON.parse(value)\n return parsed !== null && typeof parsed === 'object'\n ? (parsed as Record<string, unknown>)\n : undefined\n } catch {}\n}\n\nfunction asString(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined\n}\n\nfunction asRecipients(value: unknown): readonly string[] | undefined {\n if (typeof value === 'string' && value !== '') {\n return [value]\n }\n if (Array.isArray(value)) {\n const items = value.filter(\n (item): item is string => typeof item === 'string'\n )\n return items.length > 0 ? items : undefined\n }\n}\n","import type { CreateFieldInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport { flagString, IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nconst FIELD_TYPES = ['string', 'number', 'date', 'bool'] as const\n\nexport const fieldsCreateCommand = defineCommand({\n path: ['fields', 'create'],\n summary: 'Create a custom contact field',\n sdkMethod: 'fields.create',\n route: { method: 'POST', path: '/v1/fields' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Field name (camelCase)' },\n {\n flag: '--type <type>',\n summary: 'Field type: string | number | date | bool',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: ['brew-cli fields create --name plan --type string'],\n run: async ({ ctx, flags }) => {\n const fieldName = flagString(flags.name)\n const fieldType = flagString(flags.type)\n if (fieldName === undefined || fieldType === undefined) {\n throw new CliUsageError('--name and --type are required.')\n }\n if (!(FIELD_TYPES as readonly string[]).includes(fieldType)) {\n throw new CliUsageError(\n `--type must be one of: ${FIELD_TYPES.join(', ')}`\n )\n }\n // Typed literal on purpose — no asSdkInput cast, so the compiler holds\n // this body to the generated contract (wire names are fieldName/fieldType).\n const input: CreateFieldInput = {\n fieldName,\n fieldType: fieldType as CreateFieldInput['fieldType'],\n }\n const result = await ctx\n .client()\n .fields.create(input, requestOptions(flags))\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const fieldsDeleteCommand = defineCommand({\n path: ['fields', 'delete'],\n summary: 'Delete a custom field definition',\n sdkMethod: 'fields.delete',\n route: { method: 'DELETE', path: '/v1/fields/{fieldName}' },\n commandClass: 'destructive',\n args: [\n {\n name: 'fieldName',\n summary: 'Name of the field to delete',\n isRequired: true,\n },\n ],\n examples: ['brew-cli fields delete plan --yes'],\n confirmSummary: ({ args }) =>\n `Delete the custom field definition \"${args.fieldName ?? ''}\". This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().fields.delete({ fieldName: args.fieldName ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const fieldsListCommand = defineCommand({\n path: ['fields', 'list'],\n summary: 'List custom contact fields',\n sdkMethod: 'fields.list',\n route: { method: 'GET', path: '/v1/fields' },\n commandClass: 'read',\n examples: ['brew-cli fields list'],\n run: async ({ ctx }) => ({ data: await ctx.client().fields.list() }),\n})\n","import { defineCommand } from '../lib/define-command'\n\nexport const healthCommand = defineCommand({\n path: ['health'],\n summary: 'Check Brew API liveness (no auth required)',\n sdkMethod: 'health.get',\n route: { method: 'GET', path: '/v1/health' },\n commandClass: 'read',\n examples: ['brew-cli health'],\n run: async ({ ctx }) => ({\n data: await ctx.client({ allowAnonymous: true }).health.get(),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { renderTable } from '../../lib/output'\n\nexport const integrationsListCommand = defineCommand({\n path: ['integrations', 'list'],\n summary:\n 'List the integration catalog with per-provider connected state (connect via Settings, not this CLI)',\n sdkMethod: 'integrations.list',\n route: { method: 'GET', path: '/v1/integrations' },\n commandClass: 'read',\n examples: ['brew-cli integrations list', 'brew-cli integrations list --json'],\n run: async ({ ctx }) => {\n const result = await ctx.client().integrations.list()\n return { data: result, human: renderIntegrations(result.data) }\n },\n})\n\nfunction renderIntegrations(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No integrations found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'provider', header: 'PROVIDER' },\n { key: 'name', header: 'NAME' },\n { key: 'category', header: 'CATEGORY' },\n { key: 'connected', header: 'CONNECTED' },\n ])\n}\n","import {\n buildSdkClient,\n LOGIN_KEYS_URL,\n maskApiKey,\n resolveAuth,\n} from '../lib/client'\nimport { updateConfig } from '../lib/config-store'\nimport { defineCommand } from '../lib/define-command'\nimport { CliUsageError } from '../lib/errors'\nimport { progress } from '../lib/output'\nimport type { CliContext } from '../lib/types'\n\nconst KEY_SHAPE = /^brew_[a-z0-9]{16,64}$/\n\nexport const loginCommand = defineCommand({\n path: ['login'],\n summary: 'Store an API key for this machine (validated against the API)',\n sdkMethod: null,\n commandClass: 'write',\n examples: [\n 'brew-cli login',\n 'brew-cli login --api-key brew_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',\n 'echo \"$BREW_API_KEY\" | brew-cli login',\n ],\n run: async ({ ctx }) => {\n const candidate = await readCandidateKey(ctx)\n if (!KEY_SHAPE.test(candidate)) {\n progress(\n ctx,\n 'Warning: key does not look like a Brew API key (brew_…); validating anyway.'\n )\n }\n const auth = resolveAuth({\n globals: { ...ctx.globals, apiKey: candidate },\n env: ctx.io.env,\n })\n // Throws a 401 BrewApiError (exit 3) when the key is invalid.\n await buildSdkClient(auth).usage.get()\n const path = updateConfig(ctx.io.env, { apiKey: candidate })\n progress(ctx, `Logged in. Key stored in ${path} (0600).`)\n return {\n data: {\n loggedIn: true,\n apiKey: maskApiKey(candidate),\n apiUrl: auth.apiUrl,\n configPath: path,\n },\n }\n },\n})\n\nasync function readCandidateKey(ctx: CliContext): Promise<string> {\n if (ctx.globals.apiKey !== undefined) {\n return ctx.globals.apiKey\n }\n if (!ctx.io.isTtyIn) {\n const piped = (await ctx.io.readStdin()).trim()\n if (piped !== '') {\n return piped\n }\n throw new CliUsageError(\n `No key provided. Pass --api-key or pipe the key on stdin. Create keys at ${LOGIN_KEYS_URL}`\n )\n }\n progress(ctx, `Create an API key at ${LOGIN_KEYS_URL}`)\n const answer = (await ctx.io.readLine('Paste your API key: ')).trim()\n if (answer === '') {\n throw new CliUsageError('No key entered.')\n }\n return answer\n}\n","import { readConfig, updateConfig } from '../lib/config-store'\nimport { defineCommand } from '../lib/define-command'\nimport { progress } from '../lib/output'\n\nexport const logoutCommand = defineCommand({\n path: ['logout'],\n summary: 'Remove the stored API key from this machine',\n sdkMethod: null,\n commandClass: 'write',\n examples: ['brew-cli logout'],\n run: async ({ ctx }) => {\n const hadKey = readConfig(ctx.io.env).apiKey !== undefined\n const path = updateConfig(ctx.io.env, { apiKey: undefined })\n progress(ctx, hadKey ? 'Logged out.' : 'No stored key found.')\n return { data: { loggedOut: true, hadKey, configPath: path } }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const sendsCancelCommand = defineCommand({\n path: ['sends', 'cancel'],\n summary: 'Cancel a scheduled or queued send before it goes out',\n sdkMethod: 'sends.cancel',\n route: { method: 'POST', path: '/v1/sends/{sendId}/cancel' },\n commandClass: 'destructive',\n args: [{ name: 'sendId', summary: 'Send id to cancel', isRequired: true }],\n examples: ['brew-cli sends cancel snd_9f2kX --yes'],\n confirmSummary: ({ args }) =>\n `Cancel send ${args.sendId ?? ''}. A scheduled or queued campaign will not go out; delivery already in flight cannot be recalled.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().sends.cancel(args.sendId ?? ''),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nexport const sendsPauseCommand = defineCommand({\n path: ['sends', 'pause'],\n summary: 'Pause an in-flight or scheduled send (resumable)',\n sdkMethod: 'sends.pause',\n route: { method: 'POST', path: '/v1/sends/{sendId}/pause' },\n commandClass: 'write',\n args: [{ name: 'sendId', summary: 'Send id to pause', isRequired: true }],\n flags: [IDEMPOTENCY_FLAG],\n examples: ['brew-cli sends pause snd_123'],\n run: async ({ ctx, args, flags }) => ({\n data: await ctx\n .client()\n .sends.pause(args.sendId ?? '', requestOptions(flags)),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nexport const sendsResumeCommand = defineCommand({\n path: ['sends', 'resume'],\n summary: 'Resume a paused gradual send (the unsent tail is re-spread)',\n sdkMethod: 'sends.resume',\n route: { method: 'POST', path: '/v1/sends/{sendId}/resume' },\n commandClass: 'write',\n args: [{ name: 'sendId', summary: 'Send id to resume', isRequired: true }],\n flags: [IDEMPOTENCY_FLAG],\n examples: ['brew-cli sends resume snd_123'],\n run: async ({ ctx, args, flags }) => ({\n data: await ctx\n .client()\n .sends.resume(args.sendId ?? '', requestOptions(flags)),\n }),\n})\n","import type { ListTemplatesInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const templatesListCommand = defineCommand({\n path: ['templates', 'list'],\n summary: 'List public templates (each row carries the rendered html)',\n sdkMethod: 'templates.list',\n route: { method: 'GET', path: '/v1/templates' },\n commandClass: 'read',\n flags: [\n {\n // --brand is taken by the global brand-selection flag.\n flag: '--brand-name <name>',\n summary: 'Filter by gallery brand name',\n },\n { flag: '--category <category>', summary: 'Filter by category' },\n {\n flag: '--semantic <text>',\n summary: 'Semantic search over the gallery',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli templates list --category welcome',\n 'brew-cli templates list --semantic \"minimal product launch\" --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n brand: flagString(flags.brandName),\n category: flagString(flags.category),\n semantic: flagString(flags.semantic),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const templates = ctx.client().templates\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n templates.list(\n asSdkInput<ListTemplatesInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderTemplates(rows),\n }\n }\n const result = await templates.list(asSdkInput<ListTemplatesInput>(input))\n return { data: result, human: renderTemplates(result.data) }\n },\n})\n\nfunction renderTemplates(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No templates found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'emailId', header: 'TEMPLATE' },\n { key: 'title', header: 'TITLE' },\n { key: 'category', header: 'CATEGORY' },\n { key: 'brand', header: 'BRAND' },\n ])\n}\n","import { createHash } from 'node:crypto'\nimport { readFileSync, writeFileSync } from 'node:fs'\n\nimport type {\n ListTriggersInput,\n ListTriggersResponse,\n Trigger,\n} from '@brew.new/sdk'\nimport { defineCommand } from '../lib/define-command'\nimport { asSdkInput } from '../lib/input'\n\ntype TriggerRow = Trigger\n\n/**\n * `brew-cli types` — generate TypeScript payload contracts for this\n * workspace's triggers (declared `payloadSchema`). Deterministic output:\n * same inputs → the same bytes, with a content hash in the header so\n * `--check` works as a CI drift gate (exit 1 when the API's contracts no\n * longer match the committed file).\n */\n\nconst HEADER_PREFIX = '// brew:contracts sha256:'\n\n/**\n * THE canonical type-name rule, mirrored byte-for-byte from the app's\n * `lib/payload-contract/codegen.ts` (`contractTypeName`) so Copy-as, the\n * SKILL.md brief, and this file all mint the SAME identifier for one\n * contract: PascalCase(name || id) + `Payload`, digit-led names prefixed,\n * an existing `…Payload` suffix never doubled, symbol-only names →\n * `ContractPayload`.\n */\nfunction pascalCase(value: string): string {\n const cleaned = value.replace(/[^a-zA-Z0-9]+/g, ' ').trim()\n if (cleaned === '') {\n return 'Contract'\n }\n return cleaned\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join('')\n}\n\nfunction typeName(label: string): string {\n const base = pascalCase(label)\n if (/^[0-9]/.test(base)) {\n return `Payload${base}`\n }\n return base.endsWith('Payload') ? base : `${base}Payload`\n}\n\nconst IDENTIFIER_RE = /^[A-Za-z_$][A-Za-z0-9_$]*$/\n\nfunction propertyKey(key: string): string {\n return IDENTIFIER_RE.test(key) ? key : JSON.stringify(key)\n}\n\n/**\n * The full contract-node lattice the platform can emit — the app's\n * `ContractFieldNode` (lib/payload-contract/types.ts). Deliberately wider\n * than the vendored `TriggerPayloadField` so nested / enum nodes survive\n * a vendored-spec lag: the emitter reads the wire JSON, not the spec.\n */\ntype TriggerFieldNode = {\n key: string\n type: string\n required: boolean\n /** `type: 'enum'` (or an array of enums via `itemType`): allowed values. */\n enumValues?: ReadonlyArray<string>\n /** `object`: properties. `array` with object elements: element properties. */\n children?: ReadonlyArray<TriggerFieldNode>\n /** `array` with scalar elements: the element type. */\n itemType?: string\n}\n\n/**\n * Scalar mapping mirrored from the app's `lib/payload-contract/codegen.ts`\n * (`scalarTsType`): int/float → number, date → ISO string, enum → a\n * literal union when `enumValues` exist. A type this build does not know\n * (including the platform's derived-view `'unknown'`) is honestly\n * `unknown` — never a silently-wrong `string`.\n */\nfunction scalarTsType(type: string, node: TriggerFieldNode): string {\n switch (type) {\n case 'string':\n return 'string'\n case 'int':\n case 'float':\n return 'number'\n case 'boolean':\n return 'boolean'\n case 'date':\n // ISO-8601 date-time string on the wire.\n return 'string'\n case 'enum':\n return node.enumValues && node.enumValues.length > 0\n ? node.enumValues.map((value) => JSON.stringify(value)).join(' | ')\n : 'string'\n default:\n return 'unknown'\n }\n}\n\nfunction triggerFieldType(node: TriggerFieldNode, indent: string): string {\n if (node.type === 'object') {\n return triggerObjectLiteral(node.children ?? [], indent)\n }\n if (node.type === 'array') {\n if (node.children && node.children.length > 0) {\n return `Array<${triggerObjectLiteral(node.children, indent)}>`\n }\n const element = node.itemType\n ? scalarTsType(node.itemType, node)\n : 'unknown'\n return `Array<${element}>`\n }\n return scalarTsType(node.type, node)\n}\n\n/**\n * Nested emission mirrored from the app codegen's `tsObjectLiteral`:\n * field order as given, `?:` from `required`, two-space indent per level.\n * Flat contracts emit byte-identically to the pre-nested emitter (the\n * sha256 header + `--check` gates depend on that stability), which is\n * also why the app's per-field doc comments are NOT ported here.\n */\nfunction triggerObjectLiteral(\n nodes: ReadonlyArray<TriggerFieldNode>,\n indent: string\n): string {\n if (nodes.length === 0) {\n // Top level: zero declared fields means \"send nothing\". A NESTED\n // childless object is different: its inner shape is unknown, not\n // empty.\n return indent === '' ? 'Record<string, never>' : 'Record<string, unknown>'\n }\n const inner = `${indent} `\n const lines: Array<string> = ['{']\n for (const node of nodes) {\n const optional = node.required ? '' : '?'\n lines.push(\n `${inner}${propertyKey(node.key)}${optional}: ${triggerFieldType(node, inner)}`\n )\n }\n lines.push(`${indent}}`)\n return lines.join('\\n')\n}\n\nfunction emitTriggerType(trigger: TriggerRow, name: string): string {\n const fields: ReadonlyArray<TriggerFieldNode> =\n trigger.payloadSchema?.fields ?? []\n return [\n `/** Fire: POST /v1/automations/triggers/${trigger.triggerEventId}/fire — body { payload: ${name} } */`,\n `export type ${name} = ${triggerObjectLiteral(fields, '')}`,\n ].join('\\n')\n}\n\n/** Byte-stable ordering — `localeCompare` varies by host locale. */\nfunction byCodepoint(a: string, b: string): number {\n if (a < b) {\n return -1\n }\n return a > b ? 1 : 0\n}\n\n/**\n * Trigger titles share one flat namespace and carry no uniqueness\n * constraint — colliding names get the trigger id appended (then a\n * numeric suffix as a last resort) so the generated file always compiles.\n */\nfunction uniqueNames(\n entries: ReadonlyArray<{ label: string; id: string }>\n): Array<string> {\n const taken = new Map<string, number>()\n return entries.map(({ label, id }) => {\n let name = typeName(label)\n if (taken.has(name)) {\n const suffixed = `${name}${pascalCase(id)}`\n name = suffixed\n }\n while (taken.has(name)) {\n const bump = (taken.get(name) ?? 1) + 1\n taken.set(name, bump)\n name = `${name}${bump}`\n }\n taken.set(name, 1)\n return name\n })\n}\n\nfunction buildFileText(args: { triggers: ReadonlyArray<TriggerRow> }): string {\n const triggers = [...args.triggers].sort((a, b) =>\n byCodepoint(a.triggerEventId, b.triggerEventId)\n )\n // ONE name pass: same rule as the app (name || id), collisions\n // resolved deterministically.\n const names = uniqueNames(\n triggers.map((t) => ({ id: t.triggerEventId, label: t.title }))\n )\n const triggerBlocks = triggers.map((t, i) =>\n emitTriggerType(t, names[i] ?? typeName(t.title))\n )\n const body = [\n '// Generated by `brew-cli types` — do not edit by hand.',\n '// Re-run `brew-cli types` after changing a trigger schema; gate',\n '// drift in CI with `brew-cli types --check`.',\n '',\n triggerBlocks.join('\\n\\n'),\n '',\n ].join('\\n')\n const hash = createHash('sha256').update(body).digest('hex')\n return `${HEADER_PREFIX}${hash}\\n${body}`\n}\n\nexport const typesCommand = defineCommand({\n path: ['types'],\n summary:\n \"Generate TypeScript payload contracts for this workspace's triggers into your codebase; --check is the CI drift gate (exit 1 on drift). Needs the automations scope\",\n sdkMethod: null,\n derivedFrom: 'automations.triggers.list',\n route: { method: 'GET', path: '/v1/automations/triggers' },\n commandClass: 'read',\n flags: [\n {\n flag: '--out <file>',\n summary: 'Output file (default brew-contracts.ts)',\n defaultValue: 'brew-contracts.ts',\n },\n {\n flag: '--check',\n summary:\n 'Verify the output file is up to date instead of writing; exits 1 on drift',\n },\n ],\n examples: [\n 'brew-cli types',\n 'brew-cli types --out src/brew-contracts.ts',\n 'brew-cli types --check',\n ],\n run: async ({ ctx, flags }) => {\n // Follow the cursor to the end — a silent 100-trigger cap would make\n // `--check` certify an incomplete file (integration catalogs alone\n // can cross 100). The page ceiling is a runaway-loop backstop only.\n const triggers: Array<TriggerRow> = []\n let cursor: string | null = null\n for (let page = 0; page < 50; page++) {\n const listResponse: ListTriggersResponse = await ctx\n .client()\n .automations.triggers.list(\n asSdkInput<ListTriggersInput>({\n limit: 100,\n ...(cursor === null ? {} : { cursor }),\n })\n )\n triggers.push(...(listResponse.data ?? []))\n if (\n !listResponse.pagination?.hasMore ||\n !listResponse.pagination.cursor\n ) {\n break\n }\n cursor = listResponse.pagination.cursor\n }\n const text = buildFileText({ triggers })\n const outPath =\n typeof flags.out === 'string' ? flags.out : 'brew-contracts.ts'\n\n if (flags.check === true) {\n let existing: string | null = null\n try {\n existing = readFileSync(outPath, 'utf8')\n } catch {\n existing = null\n }\n // CRLF-tolerant: an autocrlf checkout must not read as drift.\n const normalize = (value: string) => value.replaceAll('\\r\\n', '\\n')\n if (existing === null || normalize(existing) !== normalize(text)) {\n return {\n data: { checked: outPath, upToDate: false },\n human:\n existing === null\n ? `${outPath} does not exist — run \\`brew-cli types\\` first.`\n : `${outPath} is stale — the workspace's payload contracts changed. Run \\`brew-cli types\\` to regenerate.`,\n // Documented drift contract: exit 1 (not the usage-error 2).\n exitCode: 1,\n }\n }\n return {\n data: { checked: outPath, upToDate: true },\n human: `${outPath} is up to date.`,\n }\n }\n\n writeFileSync(outPath, text)\n return {\n data: {\n out: outPath,\n triggers: triggers.length,\n },\n human: `Wrote ${outPath} (${triggers.length} trigger${triggers.length === 1 ? '' : 's'}).`,\n }\n },\n})\n","import { defineCommand } from '../lib/define-command'\n\nexport const usageCommand = defineCommand({\n path: ['usage'],\n summary: 'Show plan, credit balance, and email-send quota',\n sdkMethod: 'usage.get',\n route: { method: 'GET', path: '/v1/usage' },\n commandClass: 'read',\n examples: ['brew-cli usage', 'brew-cli usage --json'],\n run: async ({ ctx }) => ({ data: await ctx.client().usage.get() }),\n})\n","import { BrewApiError } from '@brew.new/sdk'\nimport { maskApiKey, resolveAuth } from '../lib/client'\nimport { defineCommand } from '../lib/define-command'\nimport { progress } from '../lib/output'\n\nexport const whoamiCommand = defineCommand({\n path: ['whoami'],\n summary: 'Show the resolved credential, brand, and API target',\n sdkMethod: null,\n commandClass: 'read',\n examples: ['brew-cli whoami', 'brew-cli whoami --json'],\n run: async ({ ctx }) => {\n const auth = resolveAuth({ globals: ctx.globals, env: ctx.io.env })\n // Invalid credentials must surface (exit 3), but a server-side outage\n // should not hide the local credential state — degrade to usage: null.\n let usage: unknown = null\n try {\n usage = await ctx.client().usage.get()\n } catch (error) {\n if (\n error instanceof BrewApiError &&\n (error.status === 401 || error.status === 403)\n ) {\n throw error\n }\n progress(\n ctx,\n 'Warning: could not reach /v1/usage — showing local credential state only.'\n )\n }\n return {\n data: {\n apiUrl: auth.apiUrl,\n apiKey: maskApiKey(auth.apiKey),\n apiKeySource: auth.apiKeySource,\n brandId: auth.brandId ?? null,\n usage,\n },\n }\n },\n})\n","import { analyticsAutomationsCommand } from './commands/analytics/automations'\nimport { analyticsCampaignsCommand } from './commands/analytics/campaigns'\nimport { analyticsEventsCommand } from './commands/analytics/events'\nimport { analyticsOverviewCommand } from './commands/analytics/overview'\nimport { analyticsSendsGetCommand } from './commands/analytics/sends/get'\nimport { analyticsSendsListCommand } from './commands/analytics/sends/list'\nimport { analyticsTriggerInstancesListCommand } from './commands/analytics/trigger-instances/list'\nimport { apiCommand } from './commands/api'\nimport { apiKeysCreateCommand } from './commands/api-keys/create'\nimport { apiKeysDeleteCommand } from './commands/api-keys/delete'\nimport { apiKeysListCommand } from './commands/api-keys/list'\nimport { audiencesCreateCommand } from './commands/audiences/create'\nimport { audiencesDeleteCommand } from './commands/audiences/delete'\nimport { audiencesDuplicateCommand } from './commands/audiences/duplicate'\nimport { audiencesFromEventsCommand } from './commands/audiences/from-events'\nimport { audiencesGetCommand } from './commands/audiences/get'\nimport { audiencesListCommand } from './commands/audiences/list'\nimport { audiencesUpdateCommand } from './commands/audiences/update'\nimport { automationsAudienceRunsControlCommand } from './commands/automations/audience-runs/control'\nimport { automationsAudienceRunsListCommand } from './commands/automations/audience-runs/list'\nimport { automationsCreateCommand } from './commands/automations/create'\nimport { automationsDeleteCommand } from './commands/automations/delete'\nimport { automationsGetCommand } from './commands/automations/get'\nimport { automationsListCommand } from './commands/automations/list'\nimport { automationsPublishCommand } from './commands/automations/publish'\nimport { automationsRunCommand } from './commands/automations/run'\nimport { automationsRunsListCommand } from './commands/automations/runs/list'\nimport { automationsTestCommand } from './commands/automations/test'\nimport {\n automationsTriggersContractGetCommand,\n automationsTriggersContractPutCommand,\n automationsTriggersContractValidateCommand,\n} from './commands/automations/triggers/contract'\nimport { automationsTriggersCreateCommand } from './commands/automations/triggers/create'\nimport { automationsTriggersDeleteCommand } from './commands/automations/triggers/delete'\nimport { automationsTriggersFireCommand } from './commands/automations/triggers/fire'\nimport { automationsTriggersListCommand } from './commands/automations/triggers/list'\nimport { automationsTriggersReadyCommand } from './commands/automations/triggers/ready'\nimport { automationsTriggersUpdateCommand } from './commands/automations/triggers/update'\nimport { automationsUnpublishCommand } from './commands/automations/unpublish'\nimport { automationsUpdateCommand } from './commands/automations/update'\nimport { brandGetCommand } from './commands/brand/get'\nimport { brandGetImagesCommand } from './commands/brand/get-images'\nimport { brandUpdateCommand } from './commands/brand/update'\nimport { brandsCreateCommand } from './commands/brands/create'\nimport { brandsGetCommand } from './commands/brands/get'\nimport { brandsListCommand } from './commands/brands/list'\nimport { chatsGetCommand } from './commands/chats/get'\nimport {\n configGetCommand,\n configListCommand,\n configSetCommand,\n configUnsetCommand,\n} from './commands/config'\nimport { contactsCountCommand } from './commands/contacts/count'\nimport { contactsDeleteCommand } from './commands/contacts/delete'\nimport { contactsDeleteManyCommand } from './commands/contacts/delete-many'\nimport { contactsGetCommand } from './commands/contacts/get'\nimport { contactsImportCsvCommand } from './commands/contacts/import-csv'\nimport { contactsSearchCommand } from './commands/contacts/search'\nimport { contactsUpdateCommand } from './commands/contacts/update'\nimport { contactsUpsertCommand } from './commands/contacts/upsert'\nimport { contactsUpsertManyCommand } from './commands/contacts/upsert-many'\nimport { contactsValidateCommand } from './commands/contacts/validate'\nimport { contentAddImageCommand } from './commands/content/add-image'\nimport { contentGenerateImageCommand } from './commands/content/generate-image'\nimport { contentGifCommand } from './commands/content/gif'\nimport { contentHtmlToPngCommand } from './commands/content/html-to-png'\nimport { contentTransformCommand } from './commands/content/transform'\nimport { contractsInferCommand } from './commands/contracts/infer'\nimport { docsApiCommand, docsCommand } from './commands/docs'\nimport { doctorCommand } from './commands/doctor'\nimport { domainsAddCommand } from './commands/domains/add'\nimport { domainsDeleteCommand } from './commands/domains/delete'\nimport { domainsGetCommand } from './commands/domains/get'\nimport { domainsHealthCommand } from './commands/domains/health'\nimport { domainsListCommand } from './commands/domains/list'\nimport { domainsUpdateCommand } from './commands/domains/update'\nimport { domainsVerifyCommand } from './commands/domains/verify'\nimport { emailsAuditCommand } from './commands/emails/audit'\nimport { emailsCloneCommand } from './commands/emails/clone'\nimport { emailsCreateInboxPlacementTestCommand } from './commands/emails/create-inbox-placement-test'\nimport { emailsDeleteCommand } from './commands/emails/delete'\nimport { emailsEditCommand } from './commands/emails/edit'\nimport { emailsExportCommand } from './commands/emails/export'\nimport { emailsGenerateCommand } from './commands/emails/generate'\nimport { emailsGetCommand } from './commands/emails/get'\nimport { emailsGetInboxPlacementResultsCommand } from './commands/emails/get-inbox-placement-results'\nimport { emailsGroupsCreateCommand } from './commands/emails/groups/create'\nimport { emailsGroupsDeleteCommand } from './commands/emails/groups/delete'\nimport { emailsGroupsListCommand } from './commands/emails/groups/list'\nimport { emailsGroupsUpdateCommand } from './commands/emails/groups/update'\nimport { emailsImportCommand } from './commands/emails/import'\nimport { emailsImportFigmaCommand } from './commands/emails/import-figma'\nimport { emailsListCommand } from './commands/emails/list'\nimport { emailsPreviewClientsCommand } from './commands/emails/preview-clients'\nimport { emailsRestoreCommand } from './commands/emails/restore'\nimport { emailsSendCommand } from './commands/emails/send'\nimport { fieldsCreateCommand } from './commands/fields/create'\nimport { fieldsDeleteCommand } from './commands/fields/delete'\nimport { fieldsListCommand } from './commands/fields/list'\nimport { healthCommand } from './commands/health'\nimport { integrationsListCommand } from './commands/integrations/list'\nimport { loginCommand } from './commands/login'\nimport { logoutCommand } from './commands/logout'\nimport { sendsCancelCommand } from './commands/sends/cancel'\nimport { sendsPauseCommand } from './commands/sends/pause'\nimport { sendsResumeCommand } from './commands/sends/resume'\nimport { templatesListCommand } from './commands/templates/list'\nimport { typesCommand } from './commands/types'\nimport { usageCommand } from './commands/usage'\nimport { whoamiCommand } from './commands/whoami'\nimport type { CommandSpec } from './lib/define-command'\n\n/**\n * Every command the CLI exposes, in help-display order. One entry per\n * command file; the parity tests hold this list to the SDK surface and\n * the vendored OpenAPI spec.\n */\nexport const ALL_COMMANDS: readonly CommandSpec[] = [\n loginCommand,\n logoutCommand,\n whoamiCommand,\n configListCommand,\n configGetCommand,\n configSetCommand,\n configUnsetCommand,\n contactsSearchCommand,\n contactsGetCommand,\n contactsCountCommand,\n contactsUpsertCommand,\n contactsUpsertManyCommand,\n contactsUpdateCommand,\n contactsDeleteCommand,\n contactsDeleteManyCommand,\n contactsValidateCommand,\n contactsImportCsvCommand,\n fieldsListCommand,\n fieldsCreateCommand,\n fieldsDeleteCommand,\n emailsListCommand,\n emailsGroupsListCommand,\n emailsGroupsCreateCommand,\n emailsGroupsUpdateCommand,\n emailsGroupsDeleteCommand,\n emailsGetCommand,\n emailsGenerateCommand,\n emailsImportCommand,\n emailsImportFigmaCommand,\n emailsEditCommand,\n emailsCloneCommand,\n emailsRestoreCommand,\n emailsDeleteCommand,\n emailsExportCommand,\n emailsAuditCommand,\n emailsPreviewClientsCommand,\n emailsCreateInboxPlacementTestCommand,\n emailsGetInboxPlacementResultsCommand,\n emailsSendCommand,\n sendsCancelCommand,\n sendsPauseCommand,\n sendsResumeCommand,\n typesCommand,\n audiencesListCommand,\n audiencesGetCommand,\n audiencesCreateCommand,\n audiencesUpdateCommand,\n audiencesDuplicateCommand,\n audiencesFromEventsCommand,\n audiencesDeleteCommand,\n automationsListCommand,\n automationsGetCommand,\n automationsCreateCommand,\n automationsUpdateCommand,\n automationsPublishCommand,\n automationsUnpublishCommand,\n automationsDeleteCommand,\n automationsTestCommand,\n automationsRunCommand,\n automationsTriggersListCommand,\n automationsTriggersReadyCommand,\n automationsTriggersContractGetCommand,\n automationsTriggersContractPutCommand,\n automationsTriggersContractValidateCommand,\n contractsInferCommand,\n automationsTriggersCreateCommand,\n automationsTriggersUpdateCommand,\n automationsTriggersDeleteCommand,\n automationsTriggersFireCommand,\n automationsRunsListCommand,\n automationsAudienceRunsListCommand,\n automationsAudienceRunsControlCommand,\n analyticsOverviewCommand,\n analyticsCampaignsCommand,\n analyticsAutomationsCommand,\n analyticsEventsCommand,\n analyticsSendsListCommand,\n analyticsSendsGetCommand,\n analyticsTriggerInstancesListCommand,\n brandGetCommand,\n brandUpdateCommand,\n brandGetImagesCommand,\n brandsListCommand,\n brandsGetCommand,\n brandsCreateCommand,\n apiKeysListCommand,\n apiKeysCreateCommand,\n apiKeysDeleteCommand,\n domainsListCommand,\n domainsGetCommand,\n domainsAddCommand,\n domainsVerifyCommand,\n domainsHealthCommand,\n domainsUpdateCommand,\n domainsDeleteCommand,\n contentGenerateImageCommand,\n contentGifCommand,\n contentTransformCommand,\n contentHtmlToPngCommand,\n contentAddImageCommand,\n templatesListCommand,\n integrationsListCommand,\n chatsGetCommand,\n healthCommand,\n usageCommand,\n doctorCommand,\n docsCommand,\n docsApiCommand,\n apiCommand,\n]\n","import { Command, CommanderError } from 'commander'\nimport { enforceConfirmation } from './lib/confirm'\nimport { makeContext, makeFallbackContext } from './lib/context'\nimport type { CommandSpec } from './lib/define-command'\nimport { GLOBAL_FLAGS } from './lib/define-command'\nimport {\n CliUsageError,\n EXIT_OK,\n EXIT_USAGE,\n printError,\n toExitCode,\n} from './lib/errors'\nimport { printData } from './lib/output'\nimport type { CliContext, CliIo } from './lib/types'\nimport { ALL_COMMANDS } from './registry'\nimport { CLI_NAME, CLI_VERSION } from './version'\n\nconst GROUP_SUMMARIES: Readonly<Record<string, string>> = {\n analytics: 'Read campaign, automation, send, and event analytics',\n 'api-keys': 'Manage organization API keys',\n audiences: 'Manage audience segments',\n automations: 'Manage automation graphs, triggers, and runs',\n brand: \"Read and update the active brand's design context\",\n brands: 'Organization-level brand lifecycle',\n chats: 'Read Brew chat context for hand-offs',\n config: 'Read and write stored CLI configuration',\n contacts: 'Manage contacts',\n content: 'Credit-metered content generation (images, GIFs, renders)',\n docs: 'Reference material for humans and agents',\n domains: 'Manage sending domains',\n emails: 'Manage email designs and send campaigns',\n fields: 'Manage custom contact fields',\n groups: 'Manage email folders (groups)',\n integrations: 'Read the connected-integration catalog',\n sends: 'Control in-flight or scheduled sends',\n templates: 'Browse the template gallery',\n contract: 'Stored payload contracts (get, put, validate)',\n contracts: 'Payload-contract helpers',\n triggers: 'Manage trigger events',\n runs: 'Automation run history',\n 'trigger-instances': 'Fired trigger instances',\n}\n\nconst AGENT_HELP_FOOTER = `\nEnvironment:\n BREW_API_KEY API key (overrides stored login; flags override both)\n BREW_BRAND_ID Brand id for organization-scoped keys\n BREW_API_URL API base URL (default https://brew.new/api)\n BREW_CLI_CONFIG_DIR Config directory (default ~/.config/brew-cli)\n\nExit codes:\n 0 success · 1 API/runtime error · 2 usage error · 3 auth error\n 4 confirmation required (re-run with --yes)\n\nAgents: run \\`${CLI_NAME} docs --agent\\` for the machine-readable manifest.\n`\n\nexport async function run(\n argv: readonly string[],\n io: CliIo,\n commands: readonly CommandSpec[] = ALL_COMMANDS\n): Promise<number> {\n let activeContext: CliContext | undefined\n let commandExitCode: number | undefined\n // Commander's own stderr (usage errors, error-mode help) is buffered so\n // JSON mode can replace it with a structured envelope instead of mixing\n // free text and JSON on the same stream.\n const commanderStderr: string[] = []\n const program = buildProgram(\n io,\n argv,\n (ctx) => {\n activeContext = ctx\n },\n commands,\n (text) => {\n commanderStderr.push(text)\n },\n (code) => {\n commandExitCode = code\n }\n )\n const flushCommanderStderr = (): void => {\n for (const text of commanderStderr) {\n io.stderr.write(text)\n }\n commanderStderr.length = 0\n }\n try {\n await program.parseAsync([...argv], { from: 'user' })\n flushCommanderStderr()\n return commandExitCode ?? EXIT_OK\n } catch (error) {\n if (error instanceof CommanderError) {\n const ctx = activeContext ?? makeFallbackContext(io, argv)\n return handleCommanderError(error, ctx, flushCommanderStderr)\n }\n flushCommanderStderr()\n const ctx = activeContext ?? makeFallbackContext(io, argv)\n printError(ctx, error)\n return toExitCode(error)\n }\n}\n\nfunction handleCommanderError(\n error: CommanderError,\n ctx: CliContext,\n flush: () => void\n): number {\n const isHelpCode =\n error.code === 'commander.helpDisplayed' || error.code === 'commander.help'\n if (\n error.code === 'commander.version' ||\n (isHelpCode && error.exitCode === 0)\n ) {\n flush()\n return EXIT_OK\n }\n if (isHelpCode) {\n // Error-mode help: a group or bare invocation with no subcommand.\n if (ctx.mode === 'json') {\n printError(\n ctx,\n new CliUsageError('Incomplete command: a subcommand is required.')\n )\n } else {\n flush()\n }\n return EXIT_USAGE\n }\n if (ctx.mode === 'json') {\n printError(ctx, new CliUsageError(error.message.replace(/^error: /, '')))\n } else {\n flush()\n }\n return EXIT_USAGE\n}\n\nexport function buildProgram(\n io: CliIo,\n rawArgv: readonly string[],\n onContext?: (ctx: CliContext) => void,\n commands: readonly CommandSpec[] = ALL_COMMANDS,\n errSink?: (text: string) => void,\n onExitCode?: (code: number) => void\n): Command {\n const writeErr = errSink ?? ((text: string) => io.stderr.write(text))\n const program = new Command(CLI_NAME)\n .description('Agent-first CLI for the Brew public API (brew.new)')\n .version(CLI_VERSION, '--version', 'Print the CLI version')\n .exitOverride()\n .showSuggestionAfterError(false)\n .configureOutput({\n writeOut: (str) => {\n io.stdout.write(str)\n },\n writeErr: (str) => {\n writeErr(str)\n },\n })\n program.addHelpText('after', AGENT_HELP_FOOTER)\n // Global flags register on the root as well as every leaf so agents can\n // place them on either side of the subcommand (`brew-cli --json usage`\n // and `brew-cli usage --json` both work); optsWithGlobals merges them.\n for (const flag of GLOBAL_FLAGS) {\n program.option(flag.flag, flag.summary)\n }\n for (const spec of commands) {\n registerCommand(program, spec, io, rawArgv, onContext, onExitCode)\n }\n return program\n}\n\nfunction registerCommand(\n program: Command,\n spec: CommandSpec,\n io: CliIo,\n rawArgv: readonly string[],\n onContext?: (ctx: CliContext) => void,\n onExitCode?: (code: number) => void\n): void {\n const parent = resolveGroup(program, spec.path.slice(0, -1))\n const leafName = spec.path.at(-1)\n if (leafName === undefined) {\n throw new Error('command spec has an empty path')\n }\n const leaf = parent.command(leafName).description(spec.summary)\n for (const arg of spec.args ?? []) {\n const wrapped = arg.isRequired ? `<${arg.name}>` : `[${arg.name}]`\n leaf.argument(wrapped, arg.summary)\n }\n for (const flag of [...(spec.flags ?? []), ...GLOBAL_FLAGS]) {\n if (flag.defaultValue === undefined) {\n leaf.option(flag.flag, flag.summary)\n } else {\n leaf.option(flag.flag, flag.summary, flag.defaultValue)\n }\n }\n leaf.addHelpText('after', buildCommandHelpFooter(spec))\n leaf.action(async (...actionArgs: unknown[]) => {\n const command = actionArgs.at(-1) as Command\n // optsWithGlobals lets ancestors overwrite the leaf; re-apply the\n // leaf's own parsed values so the flag nearest the subcommand wins.\n const flags: Record<string, unknown> = {\n ...command.optsWithGlobals<Record<string, unknown>>(),\n }\n for (const [key, value] of Object.entries(\n command.opts<Record<string, unknown>>()\n )) {\n if (value !== undefined) {\n flags[key] = value\n }\n }\n const positional = (spec.args ?? []).reduce<Record<string, string>>(\n (acc, arg, index) => {\n const value = actionArgs[index]\n if (typeof value === 'string') {\n // An empty required id would otherwise build a malformed API path\n // (`/v1/x//action`) and surface as a confusing server-side 405.\n if (arg.isRequired && value.trim() === '') {\n throw new CliUsageError(`<${arg.name}> must not be empty.`)\n }\n acc[arg.name] = value\n }\n return acc\n },\n {}\n )\n const ctx = makeContext({ io, flags, rawArgv })\n onContext?.(ctx)\n const invocation = { ctx, args: positional, flags }\n await enforceConfirmation(spec, invocation)\n const outcome = await spec.run(invocation)\n if (outcome !== undefined) {\n printData(ctx, outcome.data, outcome.human)\n if (outcome.exitCode !== undefined && outcome.exitCode !== 0) {\n onExitCode?.(outcome.exitCode)\n }\n }\n })\n}\n\nfunction resolveGroup(program: Command, path: readonly string[]): Command {\n let current = program\n for (const segment of path) {\n const existing = current.commands.find((cmd) => cmd.name() === segment)\n if (existing) {\n current = existing\n continue\n }\n const summary = GROUP_SUMMARIES[segment] ?? ''\n current = current.command(segment).description(summary)\n // Groups accept the global flags too, so `brew-cli contacts --json list`\n // parses instead of failing with a misleading unknown-command error.\n for (const flag of GLOBAL_FLAGS) {\n current.option(flag.flag, flag.summary)\n }\n }\n return current\n}\n\nfunction buildCommandHelpFooter(spec: CommandSpec): string {\n const lines: string[] = ['']\n if (spec.route) {\n lines.push(`API route: ${spec.route.method} ${spec.route.path}`)\n }\n if (spec.commandClass === 'destructive') {\n lines.push('Destructive: requires --yes in non-interactive sessions.')\n }\n if (spec.isCredited === true) {\n lines.push('Credits: this operation consumes Brew credits.')\n }\n lines.push('', 'Examples:')\n for (const example of spec.examples) {\n lines.push(` ${example}`)\n }\n lines.push('')\n return lines.join('\\n')\n}\n","import { createInterface } from 'node:readline/promises'\nimport { run } from './cli'\nimport type { CliIo } from './lib/types'\n\nfunction realIo(): CliIo {\n return {\n stdout: process.stdout,\n stderr: process.stderr,\n isTtyOut: process.stdout.isTTY === true,\n isTtyIn: process.stdin.isTTY === true,\n env: process.env,\n readStdin: async () => {\n process.stdin.setEncoding('utf8')\n let data = ''\n for await (const chunk of process.stdin) {\n data += chunk\n }\n return data\n },\n readLine: async (prompt: string) => {\n const rl = createInterface({\n input: process.stdin,\n output: process.stderr,\n })\n try {\n return await rl.question(prompt)\n } finally {\n rl.close()\n }\n },\n }\n}\n\nprocess.exitCode = await run(process.argv.slice(2), realIo())\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/errors.ts","../src/lib/confirm.ts","../src/version.ts","../src/lib/config-store.ts","../src/lib/client.ts","../src/lib/output.ts","../src/lib/context.ts","../src/lib/define-command.ts","../src/lib/input.ts","../src/lib/paginate.ts","../src/commands/analytics/automations.ts","../src/commands/analytics/campaigns.ts","../src/commands/analytics/events.ts","../src/commands/analytics/overview.ts","../src/commands/analytics/sends/get.ts","../src/commands/analytics/sends/list.ts","../src/commands/analytics/trigger-instances/list.ts","../src/lib/raw-request.ts","../src/commands/api.ts","../src/commands/api-keys/create.ts","../src/commands/api-keys/delete.ts","../src/commands/api-keys/list.ts","../src/commands/audiences/create.ts","../src/commands/audiences/delete.ts","../src/commands/audiences/duplicate.ts","../src/commands/audiences/from-events.ts","../src/commands/audiences/get.ts","../src/commands/audiences/list.ts","../src/commands/audiences/update.ts","../src/commands/automations/audience-runs/control.ts","../src/commands/automations/audience-runs/list.ts","../src/commands/automations/create.ts","../src/commands/automations/delete.ts","../src/commands/automations/get.ts","../src/commands/automations/list.ts","../src/commands/automations/publish.ts","../src/commands/automations/run.ts","../src/commands/automations/runs/list.ts","../src/commands/automations/test.ts","../src/commands/automations/triggers/contract.ts","../src/commands/automations/triggers/create.ts","../src/commands/automations/triggers/delete.ts","../src/commands/automations/triggers/fire.ts","../src/commands/automations/triggers/list.ts","../src/commands/automations/triggers/ready.ts","../src/commands/automations/triggers/update.ts","../src/commands/automations/unpublish.ts","../src/commands/automations/update.ts","../src/commands/brand/get.ts","../src/commands/brand/get-images.ts","../src/commands/brand/update.ts","../src/commands/brands/create.ts","../src/commands/brands/get.ts","../src/commands/brands/list.ts","../src/commands/chats/get.ts","../src/commands/config.ts","../src/commands/contacts/count.ts","../src/commands/contacts/delete.ts","../src/commands/contacts/delete-many.ts","../src/commands/contacts/get.ts","../src/commands/contacts/import-csv.ts","../src/commands/contacts/search.ts","../src/commands/contacts/update.ts","../src/commands/contacts/upsert.ts","../src/commands/contacts/upsert-many.ts","../src/commands/contacts/validate.ts","../src/commands/content/add-image.ts","../src/commands/content/generate-image.ts","../src/commands/content/gif.ts","../src/commands/content/html-to-png.ts","../src/commands/content/transform.ts","../src/commands/contracts/infer.ts","../src/commands/data/run.ts","../src/skip-list.ts","../src/lib/manifest.ts","../src/commands/docs.ts","../src/commands/doctor.ts","../src/commands/domains/add.ts","../src/commands/domains/delete.ts","../src/commands/domains/get.ts","../src/commands/domains/health.ts","../src/commands/domains/list.ts","../src/commands/domains/update.ts","../src/commands/domains/verify.ts","../src/commands/emails/audit.ts","../src/commands/emails/clone.ts","../src/commands/emails/create-inbox-placement-test.ts","../src/commands/emails/delete.ts","../src/commands/emails/edit.ts","../src/commands/emails/export.ts","../src/commands/emails/generate.ts","../src/commands/emails/get.ts","../src/commands/emails/get-inbox-placement-results.ts","../src/commands/emails/groups/create.ts","../src/commands/emails/groups/delete.ts","../src/commands/emails/groups/list.ts","../src/commands/emails/groups/update.ts","../src/commands/emails/import.ts","../src/commands/emails/import-figma.ts","../src/commands/emails/list.ts","../src/commands/emails/preview-clients.ts","../src/commands/emails/restore.ts","../src/commands/emails/send.ts","../src/commands/fields/create.ts","../src/commands/fields/delete.ts","../src/commands/fields/list.ts","../src/commands/health.ts","../src/commands/integrations/list.ts","../src/commands/login.ts","../src/commands/logout.ts","../src/commands/sends/cancel.ts","../src/commands/sends/pause.ts","../src/commands/sends/resume.ts","../src/commands/templates/list.ts","../src/commands/types.ts","../src/commands/usage.ts","../src/commands/whoami.ts","../src/registry.ts","../src/cli.ts","../src/bin.ts"],"names":["readFileSync","parseBool","BrewApiError","parseInlineInput","asString","writeFileSync","ctx"],"mappings":"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","file":"bin.js","sourcesContent":["import { BrewApiError } from '@brew.new/sdk'\nimport type { CliContext } from './types'\n\nexport const EXIT_OK = 0\nexport const EXIT_RUNTIME = 1\nexport const EXIT_USAGE = 2\nexport const EXIT_AUTH = 3\nexport const EXIT_CONFIRM = 4\n\n/** Bad invocation: malformed input, unusable flag combinations. */\nexport class CliUsageError extends Error {}\n\n/** Missing or unusable credentials, detected before any request is sent. */\nexport class CliAuthError extends Error {\n readonly suggestion: string\n\n constructor(message: string, suggestion: string) {\n super(message)\n this.suggestion = suggestion\n }\n}\n\n/** The user declined an interactive confirmation prompt. */\nexport class CommandAbortedError extends Error {}\n\n/**\n * Error raised by the `api` escape hatch, mirroring the public API error\n * envelope so it renders and exits exactly like a `BrewApiError`.\n */\nexport class CliApiError extends Error {\n readonly status: number\n readonly code: string\n readonly type: string\n readonly param: string | undefined\n readonly suggestion: string | undefined\n readonly docs: string | undefined\n readonly requestId: string | undefined\n\n constructor(input: {\n readonly status: number\n readonly code: string\n readonly type: string\n readonly message: string\n readonly param?: string\n readonly suggestion?: string\n readonly docs?: string\n readonly requestId?: string\n }) {\n super(input.message)\n this.status = input.status\n this.code = input.code\n this.type = input.type\n this.param = input.param\n this.suggestion = input.suggestion\n this.docs = input.docs\n this.requestId = input.requestId\n }\n}\n\nexport type ConfirmationEnvelope = {\n readonly confirmationRequired: true\n readonly command: string\n readonly summary: string\n readonly confirmCommand: string\n}\n\n/**\n * A destructive command ran without --yes in a non-interactive session.\n * The envelope is the command's machine-readable response: the caller\n * shows `summary` to a human and re-runs `confirmCommand` to proceed.\n */\nexport class ConfirmationRequiredError extends Error {\n readonly envelope: ConfirmationEnvelope\n\n constructor(envelope: ConfirmationEnvelope) {\n super(envelope.summary)\n this.envelope = envelope\n }\n}\n\nexport function toExitCode(error: unknown): number {\n if (error instanceof ConfirmationRequiredError) {\n return EXIT_CONFIRM\n }\n if (error instanceof CliUsageError) {\n return EXIT_USAGE\n }\n if (error instanceof CliAuthError) {\n return EXIT_AUTH\n }\n const status = apiErrorStatus(error)\n if (status === 401 || status === 403) {\n return EXIT_AUTH\n }\n return EXIT_RUNTIME\n}\n\nexport type CliErrorEnvelope = {\n readonly code: string\n readonly type: string\n readonly message: string\n readonly param?: string\n readonly suggestion?: string\n readonly docs?: string\n readonly requestId?: string\n readonly status?: number\n}\n\nexport function toErrorEnvelope(error: unknown): CliErrorEnvelope {\n if (error instanceof BrewApiError || error instanceof CliApiError) {\n return {\n code: error.code,\n type: error.type,\n message: error.message,\n ...(error.param ? { param: error.param } : {}),\n ...(error.suggestion ? { suggestion: error.suggestion } : {}),\n ...(error.docs ? { docs: error.docs } : {}),\n ...(error.requestId ? { requestId: error.requestId } : {}),\n status: error.status,\n }\n }\n if (error instanceof CliAuthError) {\n return {\n code: 'CLI_AUTH',\n type: 'authentication_error',\n message: error.message,\n suggestion: error.suggestion,\n }\n }\n if (error instanceof CliUsageError) {\n return {\n code: 'CLI_USAGE',\n type: 'invalid_request',\n message: error.message,\n }\n }\n if (isTimeoutError(error)) {\n return {\n code: 'CLI_TIMEOUT',\n type: 'service_unavailable',\n message: 'The request timed out before the API responded.',\n suggestion:\n 'Retry the request. Reuse the same Idempotency-Key for a POST request.',\n }\n }\n if (error instanceof CommandAbortedError) {\n return {\n code: 'CLI_ABORTED',\n type: 'invalid_request',\n message: error.message === '' ? 'Aborted.' : error.message,\n }\n }\n let message = error instanceof Error ? error.message : String(error)\n if (error instanceof Error && error.cause !== undefined) {\n const cause =\n error.cause instanceof Error ? error.cause.message : String(error.cause)\n message = `${message} (${cause})`\n }\n return { code: 'CLI_UNEXPECTED', type: 'internal_error', message }\n}\n\nexport function printError(ctx: CliContext, error: unknown): void {\n if (error instanceof ConfirmationRequiredError) {\n ctx.io.stdout.write(`${JSON.stringify(error.envelope)}\\n`)\n if (ctx.mode === 'human') {\n ctx.io.stderr.write(\n `Confirmation required. Review, then re-run to proceed:\\n ${error.envelope.confirmCommand}\\n`\n )\n }\n return\n }\n const envelope = toErrorEnvelope(error)\n if (ctx.mode === 'json') {\n ctx.io.stderr.write(`${JSON.stringify({ error: envelope })}\\n`)\n return\n }\n const lines = [`brew-cli: ${envelope.message}`]\n if (envelope.suggestion) {\n lines.push(envelope.suggestion)\n }\n if (envelope.docs) {\n lines.push(`Docs: ${envelope.docs}`)\n }\n if (envelope.requestId) {\n lines.push(`Request id: ${envelope.requestId}`)\n }\n ctx.io.stderr.write(`${lines.join('\\n')}\\n`)\n}\n\nfunction apiErrorStatus(error: unknown): number | undefined {\n if (error instanceof BrewApiError || error instanceof CliApiError) {\n return error.status\n }\n}\n\nfunction isTimeoutError(error: unknown): boolean {\n return (\n typeof error === 'object' &&\n error !== null &&\n 'name' in error &&\n error.name === 'TimeoutError'\n )\n}\n","import type { CommandInvocation, CommandSpec } from './define-command'\nimport { CommandAbortedError, ConfirmationRequiredError } from './errors'\n\n/**\n * The confirmation protocol for destructive commands:\n * - `--yes` proceeds unconditionally.\n * - An interactive human session gets a y/N prompt.\n * - Everything else (agents, pipes, CI) receives exit code 4 and a JSON\n * envelope on stdout whose `confirmCommand` re-runs the call with --yes.\n */\nexport async function enforceConfirmation(\n spec: CommandSpec,\n invocation: CommandInvocation\n): Promise<void> {\n if (!spec.confirmSummary) {\n return\n }\n const summary = spec.confirmSummary({\n args: invocation.args,\n flags: invocation.flags,\n })\n if (summary === undefined) {\n return\n }\n const { ctx } = invocation\n if (ctx.globals.yes) {\n return\n }\n if (ctx.mode === 'human' && ctx.io.isTtyIn) {\n const answer = await ctx.io.readLine(`${summary}\\nProceed? [y/N] `)\n const normalized = answer.trim().toLowerCase()\n if (normalized === 'y' || normalized === 'yes') {\n return\n }\n throw new CommandAbortedError('Aborted.')\n }\n throw new ConfirmationRequiredError({\n confirmationRequired: true,\n command: ['brew-cli', ...spec.path].join(' '),\n summary,\n confirmCommand: buildConfirmCommand(ctx.rawArgv),\n })\n}\n\nexport function buildConfirmCommand(rawArgv: readonly string[]): string {\n // The envelope goes to stdout and into agent transcripts — never echo a\n // raw credential back. The re-run resolves the key from env/config.\n const tokens: string[] = []\n for (let index = 0; index < rawArgv.length; index += 1) {\n const token = rawArgv[index]\n if (token === undefined) {\n continue\n }\n if (token === '--api-key') {\n index += 1\n continue\n }\n if (token.startsWith('--api-key=')) {\n continue\n }\n tokens.push(shellQuote(token))\n }\n return ['brew-cli', ...tokens, '--yes'].join(' ')\n}\n\nfunction shellQuote(token: string): string {\n if (/^[A-Za-z0-9@%+=:,./_-]+$/.test(token)) {\n return token\n }\n return `'${token.replaceAll(\"'\", String.raw`'\\''`)}'`\n}\n","declare const __CLI_VERSION__: string | undefined\n\nexport const CLI_NAME = 'brew-cli'\n\nexport const CLI_VERSION =\n typeof __CLI_VERSION__ === 'string' ? __CLI_VERSION__ : '0.0.0-dev'\n","import { chmodSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'\nimport { homedir } from 'node:os'\nimport { join } from 'node:path'\n\nexport type StoredConfig = {\n readonly apiKey?: string\n readonly brandId?: string\n readonly apiUrl?: string\n}\n\nconst CONFIG_KEYS = ['apiKey', 'brandId', 'apiUrl'] as const\n\nexport type ConfigKey = (typeof CONFIG_KEYS)[number]\n\nexport function isConfigKey(value: string): value is ConfigKey {\n return (CONFIG_KEYS as readonly string[]).includes(value)\n}\n\nexport function configDir(\n env: Readonly<Record<string, string | undefined>>\n): string {\n const override = env.BREW_CLI_CONFIG_DIR\n if (override !== undefined && override !== '') {\n return override\n }\n const xdg = env.XDG_CONFIG_HOME\n const base =\n xdg !== undefined && xdg !== '' ? xdg : join(homedir(), '.config')\n return join(base, 'brew-cli')\n}\n\nexport function configPath(\n env: Readonly<Record<string, string | undefined>>\n): string {\n return join(configDir(env), 'config.json')\n}\n\nexport function readConfig(\n env: Readonly<Record<string, string | undefined>>\n): StoredConfig {\n try {\n const raw = readFileSync(configPath(env), 'utf8')\n const parsed: unknown = JSON.parse(raw)\n if (parsed === null || typeof parsed !== 'object') {\n return {}\n }\n const record = parsed as Record<string, unknown>\n const config: Record<string, string> = {}\n for (const key of CONFIG_KEYS) {\n const value = record[key]\n if (typeof value === 'string' && value !== '') {\n config[key] = value\n }\n }\n return config\n } catch {\n return {}\n }\n}\n\n/** Writes the config file with owner-only permissions (0600 / dir 0700). */\nexport function writeConfig(\n env: Readonly<Record<string, string | undefined>>,\n config: StoredConfig\n): string {\n const dir = configDir(env)\n mkdirSync(dir, { recursive: true, mode: 0o700 })\n const path = configPath(env)\n const compact: Record<string, string> = {}\n for (const key of CONFIG_KEYS) {\n const value = config[key]\n if (value !== undefined && value !== '') {\n compact[key] = value\n }\n }\n writeFileSync(path, `${JSON.stringify(compact, null, 2)}\\n`, { mode: 0o600 })\n chmodSync(path, 0o600)\n return path\n}\n\nexport function updateConfig(\n env: Readonly<Record<string, string | undefined>>,\n patch: Readonly<Partial<Record<ConfigKey, string | undefined>>>\n): string {\n const current: Record<string, string | undefined> = { ...readConfig(env) }\n for (const key of CONFIG_KEYS) {\n if (key in patch) {\n current[key] = patch[key]\n }\n }\n return writeConfig(env, current)\n}\n","import { createBrewClient } from '@brew.new/sdk'\nimport { CLI_NAME, CLI_VERSION } from '../version'\nimport { readConfig } from './config-store'\nimport { CliAuthError } from './errors'\nimport type { GlobalFlags } from './types'\n\nexport type BrewClient = ReturnType<typeof createBrewClient>\n\nexport const DEFAULT_API_URL = 'https://brew.new/api'\n\nexport const LOGIN_KEYS_URL = 'https://brew.new/settings/api'\n\n/**\n * Placeholder key for the unauthenticated endpoints (health, help,\n * llms.txt). The SDK requires a non-empty key; the server ignores it.\n */\nexport const ANONYMOUS_API_KEY = 'brew_anonymous'\n\n/**\n * Organization-level route prefixes. These ride the org transport and must\n * never receive an X-Brand-Id header (the server ignores it there, but the\n * SDK's own withBrand keeps the same discipline).\n */\nconst ORG_LEVEL_PATH_PREFIXES = [\n '/v1/brands',\n '/v1/usage',\n '/v1/templates',\n '/v1/health',\n '/v1/help',\n '/v1/llms.txt',\n '/v1/api-keys',\n] as const\n\nexport type AuthSource = 'anonymous' | 'config' | 'env' | 'flag'\n\nexport type ResolvedAuth = {\n readonly apiKey: string\n readonly apiKeySource: AuthSource\n readonly brandId: string | undefined\n readonly apiUrl: string\n}\n\nexport function resolveAuth(input: {\n readonly globals: GlobalFlags\n readonly env: Readonly<Record<string, string | undefined>>\n readonly allowAnonymous?: boolean\n}): ResolvedAuth {\n const { globals, env } = input\n const stored = readConfig(env)\n const keyFromFlag = globals.apiKey\n const keyFromEnv = readEnvValue(env.BREW_API_KEY)\n const keyFromConfig = stored.apiKey\n const apiKey = keyFromFlag ?? keyFromEnv ?? keyFromConfig\n const apiUrl =\n globals.apiUrl ??\n readEnvValue(env.BREW_API_URL) ??\n stored.apiUrl ??\n DEFAULT_API_URL\n const brandId =\n globals.brand ?? readEnvValue(env.BREW_BRAND_ID) ?? stored.brandId\n if (!apiKey) {\n if (input.allowAnonymous === true) {\n return {\n apiKey: ANONYMOUS_API_KEY,\n apiKeySource: 'anonymous',\n brandId,\n apiUrl,\n }\n }\n throw new CliAuthError(\n 'No API key found.',\n `Run \\`brew-cli login\\`, set BREW_API_KEY, or pass --api-key. Create keys at ${LOGIN_KEYS_URL}`\n )\n }\n const apiKeySource: AuthSource = keyFromFlag\n ? 'flag'\n : keyFromEnv\n ? 'env'\n : 'config'\n return { apiKey, apiKeySource, brandId, apiUrl }\n}\n\nexport function buildSdkClient(auth: ResolvedAuth): BrewClient {\n return createBrewClient({\n apiKey: auth.apiKey,\n baseUrl: auth.apiUrl,\n userAgent: `${CLI_NAME}/${CLI_VERSION}`,\n ...(auth.brandId === undefined ? {} : { brandId: auth.brandId }),\n })\n}\n\nexport function isOrgLevelPath(url: string): boolean {\n let pathname: string\n try {\n pathname = new URL(url).pathname\n } catch {\n pathname = url.split('?')[0] ?? url\n }\n const versionIndex = pathname.indexOf('/v1/')\n if (versionIndex === -1) {\n return false\n }\n const apiPath = pathname.slice(versionIndex)\n return ORG_LEVEL_PATH_PREFIXES.some(\n (prefix) => apiPath === prefix || apiPath.startsWith(`${prefix}/`)\n )\n}\n\nexport function maskApiKey(apiKey: string): string {\n if (apiKey.length <= 12) {\n return `${apiKey.slice(0, 3)}…`\n }\n return `${apiKey.slice(0, 8)}…${apiKey.slice(-3)}`\n}\n\nfunction readEnvValue(value: string | undefined): string | undefined {\n return value !== undefined && value !== '' ? value : undefined\n}\n","import type { CliContext, OutputMode } from './types'\n\nexport function resolveOutputMode(input: {\n readonly isJsonFlag: boolean\n readonly isTtyOut: boolean\n}): OutputMode {\n if (input.isJsonFlag) {\n return 'json'\n }\n return input.isTtyOut ? 'human' : 'json'\n}\n\n/**\n * Command data goes to stdout and nowhere else. JSON mode prints the API\n * payload verbatim (compact, one line) so pipes and agents get the exact\n * SDK envelope; human mode prefers the command's rendering when provided.\n */\nexport function printData(\n ctx: CliContext,\n data: unknown,\n human?: string\n): void {\n if (ctx.mode === 'json') {\n ctx.io.stdout.write(`${JSON.stringify(data)}\\n`)\n return\n }\n const text = human ?? JSON.stringify(data, null, 2)\n ctx.io.stdout.write(`${text}\\n`)\n}\n\n/** Progress and status lines go to stderr and honor --quiet. */\nexport function progress(ctx: CliContext, message: string): void {\n if (ctx.globals.quiet) {\n return\n }\n ctx.io.stderr.write(`${message}\\n`)\n}\n\nexport function renderTable(\n rows: ReadonlyArray<Record<string, unknown>>,\n columns: ReadonlyArray<{ readonly key: string; readonly header: string }>\n): string {\n const widths = columns.map((column) =>\n Math.max(\n column.header.length,\n ...rows.map((row) => formatCell(row[column.key]).length)\n )\n )\n const line = (cells: readonly string[]) =>\n cells\n .map((cell, index) => cell.padEnd(widths[index] ?? 0))\n .join(' ')\n .trimEnd()\n const header = line(columns.map((column) => column.header))\n const body = rows.map((row) =>\n line(columns.map((column) => formatCell(row[column.key])))\n )\n return [header, ...body].join('\\n')\n}\n\nfunction formatCell(value: unknown): string {\n if (value === null || value === undefined) {\n return ''\n }\n if (typeof value === 'object') {\n return JSON.stringify(value)\n }\n return String(value)\n}\n","import type { BrewClient } from './client'\nimport { buildSdkClient, resolveAuth } from './client'\nimport { resolveOutputMode } from './output'\nimport type { CliContext, ClientOptions, CliIo, GlobalFlags } from './types'\n\nexport function makeContext(input: {\n readonly io: CliIo\n readonly flags: Readonly<Record<string, unknown>>\n readonly rawArgv: readonly string[]\n}): CliContext {\n const globals = readGlobalFlags(input.flags)\n const mode = resolveOutputMode({\n isJsonFlag: globals.json,\n isTtyOut: input.io.isTtyOut,\n })\n const cache = new Map<string, BrewClient>()\n return {\n io: input.io,\n mode,\n globals,\n rawArgv: input.rawArgv,\n client: (options?: ClientOptions) => {\n const key = options?.allowAnonymous === true ? 'anonymous' : 'authed'\n const existing = cache.get(key)\n if (existing) {\n return existing\n }\n const auth = resolveAuth({\n globals,\n env: input.io.env,\n allowAnonymous: options?.allowAnonymous === true,\n })\n const client = buildSdkClient(auth)\n cache.set(key, client)\n return client\n },\n }\n}\n\n/**\n * Fallback context for failures that happen before a command action runs\n * (usage errors, help). Only argv can tell us whether --json was intended.\n */\nexport function makeFallbackContext(\n io: CliIo,\n rawArgv: readonly string[]\n): CliContext {\n const flags: Record<string, unknown> = {\n json: rawArgv.includes('--json'),\n quiet: rawArgv.includes('--quiet'),\n }\n return makeContext({ io, flags, rawArgv })\n}\n\nfunction readGlobalFlags(\n flags: Readonly<Record<string, unknown>>\n): GlobalFlags {\n return {\n json: flags.json === true,\n quiet: flags.quiet === true,\n yes: flags.yes === true,\n apiKey: readStringFlag(flags.apiKey),\n brand: readStringFlag(flags.brand),\n apiUrl: readStringFlag(flags.apiUrl),\n }\n}\n\nfunction readStringFlag(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined\n}\n","import type { CliContext } from './types'\n\nexport type HttpMethod = 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT'\n\n/**\n * read — no writes; always safe.\n * write — mutates state but is safe to retry / reversible in-app.\n * destructive — irreversible or outward-facing (sends, deletes); runs the\n * confirmation protocol and must declare `confirmSummary`.\n */\nexport type CommandClass = 'destructive' | 'read' | 'write'\n\nexport type ArgSpec = {\n /** camelCase name, also the key in `invocation.args`. */\n readonly name: string\n readonly summary: string\n readonly isRequired: boolean\n}\n\nexport type FlagSpec = {\n /** commander syntax, e.g. `--limit <n>` or `--test`. */\n readonly flag: string\n readonly summary: string\n readonly defaultValue?: string | boolean\n}\n\nexport type CommandInvocation = {\n readonly ctx: CliContext\n readonly args: Readonly<Record<string, string>>\n readonly flags: Readonly<Record<string, unknown>>\n}\n\nexport type CommandOutcome = {\n /** The payload printed to stdout (verbatim in JSON mode). */\n readonly data: unknown\n /** Optional human rendering (tables, summaries) for TTY output. */\n readonly human?: string\n /**\n * Optional non-zero exit code for commands whose payload IS the result\n * of a check (e.g. doctor): the report prints normally, then the\n * process exits with this code so agents can gate on it.\n */\n readonly exitCode?: number\n}\n\nexport type CommandSpec = {\n /** Command path, e.g. ['automations', 'triggers', 'fire']. */\n readonly path: readonly string[]\n readonly summary: string\n /**\n * Dotted path of the SDK method this command binds (`contacts.upsert`),\n * or null for CLI-native commands. Derived sugar commands set null here\n * and name their backing method in `derivedFrom`.\n */\n readonly sdkMethod: string | null\n readonly derivedFrom?: string\n /** The public API operation behind this command — the spec join key. */\n readonly route?: {\n readonly method: HttpMethod\n readonly path: string\n }\n readonly commandClass: CommandClass\n /** True when the operation consumes Brew credits. */\n readonly isCredited?: boolean\n /**\n * True when the command calls the API through the raw transport because\n * the published SDK does not expose the operation yet. Swap to the SDK\n * method (and drop this marker) when the SDK ships it.\n */\n readonly isRawTransport?: boolean\n readonly args?: readonly ArgSpec[]\n readonly flags?: readonly FlagSpec[]\n /** At least one realistic invocation; shown in help and the manifest. */\n readonly examples: readonly string[]\n /**\n * Destructive commands describe what is about to happen. Returning\n * undefined skips the gate for the given invocation (e.g. a dry run).\n */\n readonly confirmSummary?: (\n invocation: Omit<CommandInvocation, 'ctx'>\n ) => string | undefined\n readonly run: (\n invocation: CommandInvocation\n ) => Promise<CommandOutcome | undefined>\n}\n\n/** Identity helper that pins the spec type at the definition site. */\nexport function defineCommand(spec: CommandSpec): CommandSpec {\n return spec\n}\n\nexport const GLOBAL_FLAGS: readonly FlagSpec[] = [\n {\n flag: '--json',\n summary: 'JSON output (automatic when stdout is not a TTY)',\n },\n { flag: '--quiet', summary: 'Suppress progress messages on stderr' },\n {\n flag: '--yes',\n summary: 'Skip the confirmation gate on destructive commands',\n },\n {\n flag: '--api-key <key>',\n summary: 'Brew API key (else BREW_API_KEY, else stored login)',\n },\n {\n flag: '--brand <brandId>',\n summary: 'Brand id for organization-scoped keys (else BREW_BRAND_ID)',\n },\n {\n flag: '--api-url <url>',\n summary: 'API base URL (else BREW_API_URL, else https://brew.new/api)',\n },\n]\n","import { readFileSync } from 'node:fs'\nimport { CliUsageError } from './errors'\nimport type { CliContext } from './types'\n\n/**\n * The single deliberate boundary cast from user-supplied JSON to an SDK\n * input type. The public API strictly validates every request server-side\n * (the Zod contracts upstream of the OpenAPI spec); the CLI does not\n * duplicate those schemas.\n */\nexport function asSdkInput<T>(value: unknown): T {\n return value as T\n}\n\n/** Reads `--input <json|->`; `-` consumes stdin. */\nexport async function readJsonFlag(\n ctx: CliContext,\n value: unknown,\n flagName: string\n): Promise<unknown> {\n if (typeof value !== 'string') {\n return\n }\n const raw = value === '-' ? await ctx.io.readStdin() : value\n try {\n return JSON.parse(raw) as unknown\n } catch {\n throw new CliUsageError(\n `${flagName} must be valid JSON (or - to read stdin)`\n )\n }\n}\n\n/** Reads `--file <path|->`; `-` consumes stdin. */\nexport async function readTextFlag(\n ctx: CliContext,\n value: unknown,\n flagName: string\n): Promise<string | undefined> {\n if (typeof value !== 'string') {\n return\n }\n if (value === '-') {\n return await ctx.io.readStdin()\n }\n try {\n return readFileSync(value, 'utf8')\n } catch {\n throw new CliUsageError(`${flagName}: cannot read file \"${value}\"`)\n }\n}\n\n/** Parses repeatable `key=value` flag values into a record. */\nexport function parseKeyValues(\n value: unknown,\n flagName: string\n): Record<string, string> | undefined {\n const items = toStringArray(value)\n if (items === undefined) {\n return\n }\n const record: Record<string, string> = {}\n for (const item of items) {\n const separator = item.indexOf('=')\n if (separator <= 0) {\n throw new CliUsageError(\n `${flagName}: expected key=value, received \"${item}\"`\n )\n }\n record[item.slice(0, separator)] = item.slice(separator + 1)\n }\n return record\n}\n\n/**\n * Parses repeatable `--filter field:operator[:value]` values into the\n * API's structured contact filter shape.\n */\nexport function parseFilterFlags(\n value: unknown\n): ReadonlyArray<Record<string, string>> | undefined {\n const items = toStringArray(value)\n if (items === undefined) {\n return\n }\n return items.map((item) => {\n const [field, operator, ...rest] = item.split(':')\n if (!field || !operator) {\n throw new CliUsageError(\n `--filter: expected field:operator[:value], received \"${item}\"`\n )\n }\n return {\n field,\n operator,\n ...(rest.length === 0 ? {} : { value: rest.join(':') }),\n }\n })\n}\n\n/** Merges ergonomic flag overrides over a `--input` JSON body. */\nexport function mergeInput(\n base: unknown,\n overrides: Readonly<Record<string, unknown>>\n): Record<string, unknown> {\n if (base !== undefined && (base === null || typeof base !== 'object')) {\n throw new CliUsageError('--input must be a JSON object')\n }\n const merged: Record<string, unknown> = {\n ...((base as Record<string, unknown> | undefined) ?? {}),\n }\n for (const [key, value] of Object.entries(overrides)) {\n if (value !== undefined) {\n merged[key] = value\n }\n }\n return merged\n}\n\nexport function flagString(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined\n}\n\nexport function flagInt(value: unknown, flagName: string): number | undefined {\n if (value === undefined) {\n return\n }\n const parsed = Number(value)\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new CliUsageError(`${flagName} must be a positive integer`)\n }\n return parsed\n}\n\nexport function toStringArray(value: unknown): readonly string[] | undefined {\n if (Array.isArray(value)) {\n const items = value.filter(\n (item): item is string => typeof item === 'string'\n )\n return items.length > 0 ? items : undefined\n }\n return typeof value === 'string' ? [value] : undefined\n}\n\n/** Per-request SDK options derived from shared mutation flags. */\nexport function requestOptions(\n flags: Readonly<Record<string, unknown>>\n): { idempotencyKey: string } | undefined {\n const key = flagString(flags.idempotencyKey)\n return key === undefined ? undefined : { idempotencyKey: key }\n}\n\nexport const IDEMPOTENCY_FLAG = {\n flag: '--idempotency-key <key>',\n summary: 'Idempotency-Key for safe retries (auto-generated otherwise)',\n} as const\n\nexport const INPUT_FLAG = {\n flag: '--input <json>',\n summary: 'Full JSON request body, or - to read stdin (flags override it)',\n} as const\n","import { progress } from './output'\nimport type { CliContext } from './types'\n\nexport type Page<T> = {\n readonly data: ReadonlyArray<T>\n readonly pagination?: {\n readonly cursor: string | null\n }\n}\n\n/**\n * Drains a cursor-paginated list for `--all`. The API contract keeps\n * `pagination.cursor` string-or-null (never omitted); a repeated cursor\n * aborts the loop as a defense against a server-side pagination bug.\n */\nexport async function collectAll<T>(\n ctx: CliContext,\n fetchPage: (cursor: string | undefined) => Promise<Page<T>>\n): Promise<ReadonlyArray<T>> {\n const rows: T[] = []\n let cursor: string | undefined\n let pageCount = 0\n for (;;) {\n const page = await fetchPage(cursor)\n rows.push(...page.data)\n pageCount += 1\n const next = page.pagination?.cursor ?? null\n if (next === null || next === cursor) {\n return rows\n }\n cursor = next\n progress(ctx, `Fetched ${rows.length} rows (page ${pageCount})…`)\n }\n}\n\n/** The `--all` flag shared by paginated list commands. */\nexport const ALL_FLAG = {\n flag: '--all',\n summary: 'Follow the cursor and return every page as one result',\n} as const\n\nexport const LIMIT_FLAG = {\n flag: '--limit <n>',\n summary: 'Page size, 1-100 (default 100)',\n} as const\n\nexport const CURSOR_FLAG = {\n flag: '--cursor <cursor>',\n summary: 'Opaque pagination cursor from a previous page',\n} as const\n","import type { AutomationAnalyticsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport { LIMIT_FLAG } from '../../lib/paginate'\n\nexport const analyticsAutomationsCommand = defineCommand({\n path: ['analytics', 'automations'],\n summary: 'Windowed per-automation performance + totals',\n sdkMethod: 'analytics.automations',\n route: { method: 'GET', path: '/v1/analytics/automations' },\n commandClass: 'read',\n flags: [\n { flag: '--since <datetime>', summary: 'Window start (ISO-8601)' },\n { flag: '--until <datetime>', summary: 'Window end (ISO-8601)' },\n {\n flag: '--automation <automationId>',\n summary: 'Narrow to one automation',\n },\n LIMIT_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli analytics automations',\n 'brew-cli analytics automations --since 2026-07-01 --until 2026-08-01',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n from: flagString(flags.since),\n to: flagString(flags.until),\n automationId: flagString(flags.automation),\n limit: flagInt(flags.limit, '--limit'),\n })\n const result = await ctx\n .client()\n .analytics.automations(asSdkInput<AutomationAnalyticsInput>(input))\n return { data: result, human: renderAutomationRows(result.data) }\n },\n})\n\nfunction renderAutomationRows(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No automation analytics rows.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'automationId', header: 'AUTOMATION' },\n { key: 'name', header: 'NAME' },\n { key: 'runs', header: 'RUNS' },\n { key: 'completed', header: 'COMPLETED' },\n { key: 'failed', header: 'FAILED' },\n { key: 'openRate', header: 'OPEN RATE' },\n ])\n}\n","import type { CampaignAnalyticsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const analyticsCampaignsCommand = defineCommand({\n path: ['analytics', 'campaigns'],\n summary: 'Lifetime per-campaign KPIs (sent, opened, clicked, bounced)',\n sdkMethod: 'analytics.campaigns',\n route: { method: 'GET', path: '/v1/analytics/campaigns' },\n commandClass: 'read',\n flags: [LIMIT_FLAG, CURSOR_FLAG, ALL_FLAG, INPUT_FLAG],\n examples: [\n 'brew-cli analytics campaigns',\n 'brew-cli analytics campaigns --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const analytics = ctx.client().analytics\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n analytics.campaigns(\n asSdkInput<CampaignAnalyticsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderCampaigns(rows),\n }\n }\n const result = await analytics.campaigns(\n asSdkInput<CampaignAnalyticsInput>(input)\n )\n return { data: result, human: renderCampaigns(result.data) }\n },\n})\n\nfunction renderCampaigns(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No campaign analytics rows.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'sendId', header: 'SEND' },\n { key: 'title', header: 'TITLE' },\n { key: 'status', header: 'STATUS' },\n { key: 'sentAt', header: 'SENT AT' },\n ])\n}\n","import type { EventsAnalyticsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const analyticsEventsCommand = defineCommand({\n path: ['analytics', 'events'],\n summary: 'Unified event explorer (email, automation, trigger, inbound)',\n sdkMethod: 'analytics.events',\n route: { method: 'GET', path: '/v1/analytics/events' },\n commandClass: 'read',\n flags: [\n { flag: '--since <datetime>', summary: 'Window start (ISO-8601)' },\n { flag: '--until <datetime>', summary: 'Window end (ISO-8601)' },\n { flag: '--recipient <email>', summary: 'Filter by recipient email' },\n {\n flag: '--event-type <type>',\n summary: 'Filter by event type (e.g. opened, clicked)',\n },\n { flag: '--automation <automationId>', summary: 'Filter by automation' },\n { flag: '--send <sendId>', summary: 'Filter by campaign send' },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli analytics events --since 2026-08-01 --event-type clicked',\n 'brew-cli analytics events --recipient jane@example.com --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n from: flagString(flags.since),\n to: flagString(flags.until),\n recipientEmail: flagString(flags.recipient),\n eventType: flagString(flags.eventType),\n automationId: flagString(flags.automation),\n sendId: flagString(flags.send),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const analytics = ctx.client().analytics\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n analytics.events(\n asSdkInput<EventsAnalyticsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderEvents(rows),\n }\n }\n const result = await analytics.events(\n asSdkInput<EventsAnalyticsInput>(input)\n )\n return { data: result, human: renderEvents(result.data) }\n },\n})\n\nfunction renderEvents(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No events matched.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'occurredAt', header: 'OCCURRED' },\n { key: 'domain', header: 'DOMAIN' },\n { key: 'eventType', header: 'EVENT' },\n { key: 'recipientEmail', header: 'RECIPIENT' },\n ])\n}\n","import type { AnalyticsOverviewInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, flagString } from '../../lib/input'\n\nexport const analyticsOverviewCommand = defineCommand({\n path: ['analytics', 'overview'],\n summary: 'Brand overview: totals, rates, timeseries (default last 7 days)',\n sdkMethod: 'analytics.overview',\n route: { method: 'GET', path: '/v1/analytics/overview' },\n commandClass: 'read',\n flags: [\n {\n flag: '--since <datetime>',\n summary: 'Window start (ISO-8601, default 7 days ago)',\n },\n {\n flag: '--until <datetime>',\n summary: 'Window end (ISO-8601, default now)',\n },\n {\n flag: '--source <sources>',\n summary:\n 'CSV of send sources: audience, api, automation_manual, automation_integration, automation_custom',\n },\n {\n flag: '--automation-id <ids>',\n summary: 'CSV of automation ids (max 20)',\n },\n { flag: '--email-id <emailId>', summary: 'Scope to one email design' },\n { flag: '--audience-id <ids>', summary: 'CSV of audience ids (max 20)' },\n {\n flag: '--trigger-event-id <ids>',\n summary: 'CSV of integration trigger-event ids (max 10)',\n },\n { flag: '--domain <domain>', summary: 'Sending domain (fromEmail match)' },\n {\n flag: '--recipient <rules>',\n summary:\n 'CSV of recipient rules: full address, @domain, substring; prefix ! to exclude',\n },\n ],\n examples: [\n 'brew-cli analytics overview',\n 'brew-cli analytics overview --since 2026-08-01T00:00:00Z --source audience --json',\n ],\n run: async ({ ctx, flags }) => ({\n data: await ctx.client().analytics.overview(\n asSdkInput<AnalyticsOverviewInput>({\n from: flagString(flags.since),\n to: flagString(flags.until),\n source: flagString(flags.source),\n automationId: flagString(flags.automationId),\n emailId: flagString(flags.emailId),\n audienceId: flagString(flags.audienceId),\n triggerEventId: flagString(flags.triggerEventId),\n domain: flagString(flags.domain),\n recipient: flagString(flags.recipient),\n })\n ),\n }),\n})\n","import type { ListSendsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliApiError } from '../../../lib/errors'\nimport { asSdkInput, flagString } from '../../../lib/input'\n\nexport const analyticsSendsGetCommand = defineCommand({\n path: ['analytics', 'sends', 'get'],\n summary: 'Fetch one send by id',\n sdkMethod: null,\n derivedFrom: 'analytics.sends.list',\n route: { method: 'GET', path: '/v1/analytics/sends' },\n commandClass: 'read',\n args: [\n {\n name: 'sendId',\n summary: 'Id of the send',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: events',\n },\n ],\n examples: [\n 'brew-cli analytics sends get snd_123',\n 'brew-cli analytics sends get snd_123 --include events',\n ],\n run: async ({ ctx, args, flags }) => {\n const sendId = args.sendId ?? ''\n const include = flagString(flags.include)\n const result = await ctx.client().analytics.sends.list(\n asSdkInput<ListSendsInput>({\n sendId,\n ...(include === undefined ? {} : { include }),\n })\n )\n const send = result.data[0]\n if (send === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'SEND_NOT_FOUND',\n type: 'not_found',\n message: `No send found for ${sendId}`,\n suggestion: 'List sends with `brew-cli analytics sends list`.',\n })\n }\n return { data: send }\n },\n})\n","import type { ListSendsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const analyticsSendsListCommand = defineCommand({\n path: ['analytics', 'sends', 'list'],\n summary: 'List campaign/automation sends with delivery stats',\n sdkMethod: 'analytics.sends.list',\n route: { method: 'GET', path: '/v1/analytics/sends' },\n commandClass: 'read',\n flags: [\n { flag: '--send <sendId>', summary: 'Fetch one send (single-row page)' },\n { flag: '--email <emailId>', summary: 'Filter by email design' },\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: events',\n },\n {\n flag: '--status <status>',\n summary: 'scheduled | queued | sending | sent | failed | canceled',\n },\n { flag: '--since <datetime>', summary: 'Window start (ISO-8601)' },\n { flag: '--until <datetime>', summary: 'Window end (ISO-8601)' },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli analytics sends list --status sent',\n 'brew-cli analytics sends list --email em_123 --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n sendId: flagString(flags.send),\n emailId: flagString(flags.email),\n include: flagString(flags.include),\n status: flagString(flags.status),\n from: flagString(flags.since),\n to: flagString(flags.until),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const sends = ctx.client().analytics.sends\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n sends.list(\n asSdkInput<ListSendsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderSends(rows),\n }\n }\n const result = await sends.list(asSdkInput<ListSendsInput>(input))\n return { data: result, human: renderSends(result.data) }\n },\n})\n\nfunction renderSends(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No sends found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'sendId', header: 'SEND' },\n { key: 'kind', header: 'KIND' },\n { key: 'status', header: 'STATUS' },\n { key: 'subject', header: 'SUBJECT' },\n ])\n}\n","import type { ListTriggerInstancesInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const analyticsTriggerInstancesListCommand = defineCommand({\n path: ['analytics', 'trigger-instances', 'list'],\n summary: 'List fired-trigger instances (ingest + match history)',\n sdkMethod: 'analytics.triggerInstances.list',\n route: { method: 'GET', path: '/v1/analytics/trigger-instances' },\n commandClass: 'read',\n flags: [\n {\n flag: '--trigger <triggerEventId>',\n summary: 'Filter by trigger event',\n },\n {\n flag: '--trigger-instance <triggerInstanceId>',\n summary: 'Fetch one instance (single-row page)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli analytics trigger-instances list --trigger tev_123',\n 'brew-cli analytics trigger-instances list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n triggerEventId: flagString(flags.trigger),\n triggerInstanceId: flagString(flags.triggerInstance),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const triggerInstances = ctx.client().analytics.triggerInstances\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n triggerInstances.list(\n asSdkInput<ListTriggerInstancesInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderInstances(rows),\n }\n }\n const result = await triggerInstances.list(\n asSdkInput<ListTriggerInstancesInput>(input)\n )\n return { data: result, human: renderInstances(result.data) }\n },\n})\n\nfunction renderInstances(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No trigger instances found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'triggerInstanceId', header: 'INSTANCE' },\n { key: 'source', header: 'SOURCE' },\n { key: 'state', header: 'STATE' },\n { key: 'receivedAt', header: 'RECEIVED' },\n ])\n}\n","import { CLI_NAME, CLI_VERSION } from '../version'\nimport type { ResolvedAuth } from './client'\nimport { isOrgLevelPath, resolveAuth } from './client'\nimport { CliApiError } from './errors'\nimport type { CliContext } from './types'\n\n/**\n * Minimal typed transport for public-API operations the published SDK does\n * not expose yet. Shares auth resolution, the X-Brand-Id policy, and\n * error-envelope mapping with the `api` escape hatch. Each caller swaps to\n * the SDK method when it ships — the parity-sdk sentinel flags the moment\n * that becomes possible. Unlike the SDK transport, raw calls are\n * single-attempt (no retry loop). POST calls receive an invocation-scoped\n * idempotency key automatically; callers can provide a stable key when they\n * need to replay safely across process restarts.\n */\nexport async function rawRequest<TResponse>(\n ctx: CliContext,\n request: {\n readonly method: 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT'\n readonly path: string\n readonly body?: unknown\n readonly query?: Readonly<Record<string, string | undefined>>\n readonly idempotencyKey?: string | undefined\n readonly allowAnonymous?: boolean\n readonly signal?: AbortSignal\n }\n): Promise<TResponse> {\n const auth = resolveAuth({\n globals: ctx.globals,\n env: ctx.io.env,\n ...(request.allowAnonymous === true ? { allowAnonymous: true } : {}),\n })\n const hasBody = request.body !== undefined\n const idempotencyKey = resolveRawIdempotencyKey(\n request.method,\n request.idempotencyKey\n )\n const headers = buildRawHeaders({\n auth,\n path: request.path,\n hasJsonBody: hasBody,\n idempotencyKey,\n })\n const url = new URL(`${auth.apiUrl}${request.path}`)\n for (const [key, value] of Object.entries(request.query ?? {})) {\n if (value !== undefined) {\n url.searchParams.set(key, value)\n }\n }\n const response = await fetch(url, {\n method: request.method,\n headers,\n ...(hasBody ? { body: JSON.stringify(request.body) } : {}),\n ...(request.signal === undefined ? {} : { signal: request.signal }),\n })\n const text = await response.text()\n const parsed = tryParseJson(text)\n if (!response.ok) {\n throw responseToApiError(response, parsed)\n }\n if (parsed === undefined) {\n throw new CliApiError({\n status: response.status,\n code: 'UNEXPECTED_RESPONSE',\n type: 'internal_error',\n message: 'The API returned a non-JSON success response.',\n })\n }\n return parsed as TResponse\n}\n\nfunction resolveRawIdempotencyKey(\n method: 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT',\n provided: string | undefined\n): string | undefined {\n if (provided !== undefined && provided !== '') {\n return provided\n }\n return method === 'POST' ? crypto.randomUUID() : undefined\n}\n\nexport function buildRawHeaders(input: {\n readonly auth: ResolvedAuth\n readonly path: string\n readonly hasJsonBody: boolean\n readonly idempotencyKey?: string | undefined\n}): Headers {\n const headers = new Headers({\n authorization: `Bearer ${input.auth.apiKey}`,\n 'user-agent': `${CLI_NAME}/${CLI_VERSION}`,\n accept: 'application/json, text/plain;q=0.9',\n })\n if (input.hasJsonBody) {\n headers.set('content-type', 'application/json')\n }\n if (input.auth.brandId !== undefined && !isOrgLevelPath(input.path)) {\n headers.set('x-brand-id', input.auth.brandId)\n }\n if (input.idempotencyKey !== undefined && input.idempotencyKey !== '') {\n headers.set('idempotency-key', input.idempotencyKey)\n }\n return headers\n}\n\nexport function responseToApiError(\n response: Response,\n parsed: unknown\n): CliApiError {\n const requestId = response.headers.get('x-request-id') ?? undefined\n // Standard envelope: { error: {...} }. A few legacy endpoints (e.g.\n // trigger fire) put code/message at the top level instead — fall back\n // to those rather than discarding the body.\n const record =\n parsed !== null && typeof parsed === 'object'\n ? (parsed as Record<string, unknown>)\n : undefined\n const envelope =\n record !== undefined &&\n record.error !== null &&\n typeof record.error === 'object'\n ? (record.error as Record<string, unknown>)\n : record\n const readField = (key: string): string | undefined => {\n const value = envelope?.[key]\n return typeof value === 'string' ? value : undefined\n }\n const param = readField('param')\n const suggestion = readField('suggestion')\n const docs = readField('docs')\n return new CliApiError({\n status: response.status,\n code: readField('code') ?? 'HTTP_ERROR',\n type: readField('type') ?? 'internal_error',\n message:\n readField('message') ?? `Request failed with status ${response.status}`,\n ...(param === undefined ? {} : { param }),\n ...(suggestion === undefined ? {} : { suggestion }),\n ...(docs === undefined ? {} : { docs }),\n ...(requestId === undefined ? {} : { requestId }),\n })\n}\n\nexport function tryParseJson(text: string): unknown {\n try {\n return JSON.parse(text) as unknown\n } catch {}\n}\n","import { resolveAuth } from '../lib/client'\nimport { defineCommand } from '../lib/define-command'\nimport { CliUsageError } from '../lib/errors'\nimport {\n buildRawHeaders,\n responseToApiError,\n tryParseJson,\n} from '../lib/raw-request'\n\nconst METHODS = ['GET', 'POST', 'PATCH', 'DELETE'] as const\n\ntype ApiMethod = (typeof METHODS)[number]\n\n/** Paths the API serves without authentication. */\nconst ANONYMOUS_PATHS = ['/v1/health', '/v1/help', '/v1/llms.txt'] as const\n\nexport const apiCommand = defineCommand({\n path: ['api'],\n summary: 'Raw authenticated request against the Brew public API',\n sdkMethod: null,\n commandClass: 'destructive',\n args: [\n {\n name: 'method',\n summary: 'GET | POST | PATCH | DELETE',\n isRequired: true,\n },\n {\n name: 'path',\n summary: 'API path, e.g. /v1/contacts/search',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--data <json>', summary: 'JSON request body, or - to read stdin' },\n {\n flag: '--header <headers...>',\n summary: 'Extra header(s) as \"Name: value\"',\n },\n {\n flag: '--idempotency-key <key>',\n summary: 'Idempotency-Key header for safe POST retries',\n },\n ],\n examples: [\n 'brew-cli api GET /v1/fields',\n `brew-cli api POST /v1/contacts/search --data '{\"limit\":5}' --yes`,\n 'brew-cli api GET /v1/llms.txt',\n ],\n confirmSummary: ({ args }) => {\n const method = (args.method ?? '').toUpperCase()\n if (method === 'GET') {\n return\n }\n return `Send a raw ${method} request to ${args.path ?? ''}. The CLI cannot assess what this mutates.`\n },\n run: async ({ ctx, args, flags }) => {\n const method = parseMethod(args.method)\n const path = parsePath(args.path)\n const barePath = path.split('?')[0] ?? path\n const auth = resolveAuth({\n globals: ctx.globals,\n env: ctx.io.env,\n allowAnonymous: (ANONYMOUS_PATHS as readonly string[]).includes(barePath),\n })\n const body = await readBody(ctx, flags.data)\n if (method === 'GET' && body !== undefined) {\n throw new CliUsageError('GET requests cannot carry --data.')\n }\n const headers = buildRawHeaders({\n auth,\n path,\n hasJsonBody: body !== undefined,\n idempotencyKey:\n typeof flags.idempotencyKey === 'string'\n ? flags.idempotencyKey\n : undefined,\n })\n for (const header of readHeaderFlags(flags.header)) {\n const separator = header.indexOf(':')\n if (separator === -1) {\n throw new CliUsageError(\n `Invalid --header (expected \"Name: value\"): ${header}`\n )\n }\n headers.set(\n header.slice(0, separator).trim(),\n header.slice(separator + 1).trim()\n )\n }\n const response = await fetch(`${auth.apiUrl}${path}`, {\n method,\n headers,\n ...(body === undefined ? {} : { body }),\n })\n const text = await response.text()\n const parsed = tryParseJson(text)\n if (!response.ok) {\n throw responseToApiError(response, parsed)\n }\n if (parsed !== undefined) {\n return { data: parsed }\n }\n return { data: text, human: text }\n },\n})\n\nfunction parseMethod(value: string | undefined): ApiMethod {\n const method = (value ?? '').toUpperCase()\n if ((METHODS as readonly string[]).includes(method)) {\n return method as ApiMethod\n }\n throw new CliUsageError(\n `Unsupported method \"${value ?? ''}\". Expected one of: ${METHODS.join(', ')}`\n )\n}\n\nfunction parsePath(value: string | undefined): string {\n if (value === undefined || !value.startsWith('/')) {\n throw new CliUsageError('Path must start with \"/\", e.g. /v1/fields')\n }\n return value\n}\n\nasync function readBody(\n ctx: { readonly io: { readonly readStdin: () => Promise<string> } },\n data: unknown\n): Promise<string | undefined> {\n if (typeof data !== 'string') {\n return\n }\n const raw = data === '-' ? await ctx.io.readStdin() : data\n try {\n JSON.parse(raw)\n } catch {\n throw new CliUsageError('--data must be valid JSON (or - to read stdin)')\n }\n return raw\n}\n\nfunction readHeaderFlags(value: unknown): readonly string[] {\n if (Array.isArray(value)) {\n return value.filter((item): item is string => typeof item === 'string')\n }\n return typeof value === 'string' ? [value] : []\n}\n","import type { CreateApiKeyInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const apiKeysCreateCommand = defineCommand({\n path: ['api-keys', 'create'],\n summary:\n 'Mint an API key; the plaintext `key` is returned ONCE — this output is the only copy',\n sdkMethod: 'apiKeys.create',\n route: { method: 'POST', path: '/v1/api-keys' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Label for the key' },\n {\n flag: '--permissions <scopes...>',\n summary:\n 'all | contacts | emails | automations | transactional | domains | sends | audiences | brands (default: all)',\n },\n {\n flag: '--brand-id <brandId>',\n summary:\n 'Bind the NEW key to this brand id (omit for an organization-wide key); not the acting --brand',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli api-keys create --name CI --permissions emails domains',\n 'brew-cli api-keys create --name \"Acme key\" --brand-id kx7b3s7fapqz8mjm12ekz1kxdx87yceg',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n name: flagString(flags.name),\n permissions: toStringArray(flags.permissions),\n brandId: flagString(flags.brandId),\n })\n // The plaintext `key` is never shown again after this call — pass the\n // API response through verbatim (no masking) or the command loses its\n // only purpose.\n return {\n data: await ctx\n .client()\n .apiKeys.create(\n asSdkInput<CreateApiKeyInput>(input),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const apiKeysDeleteCommand = defineCommand({\n path: ['api-keys', 'delete'],\n summary: 'Revoke an API key',\n sdkMethod: 'apiKeys.revoke',\n route: { method: 'DELETE', path: '/v1/api-keys/{keyId}' },\n commandClass: 'destructive',\n args: [{ name: 'keyId', summary: 'API key id to revoke', isRequired: true }],\n examples: ['brew-cli api-keys delete kd7b3s7fapqz8mjm12ekz1kxdx87yceg --yes'],\n confirmSummary: ({ args }) =>\n `Revoke API key ${args.keyId ?? ''}. Anything still using it starts failing immediately. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().apiKeys.revoke({ keyId: args.keyId ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { renderTable } from '../../lib/output'\n\nexport const apiKeysListCommand = defineCommand({\n path: ['api-keys', 'list'],\n summary:\n 'List API keys in the organization (already-redacted `keyPreview`, never the secret)',\n sdkMethod: 'apiKeys.list',\n route: { method: 'GET', path: '/v1/api-keys' },\n commandClass: 'read',\n examples: ['brew-cli api-keys list', 'brew-cli api-keys list --json'],\n run: async ({ ctx }) => {\n const result = await ctx.client().apiKeys.list()\n return { data: result, human: renderApiKeys(result.data) }\n },\n})\n\nfunction renderApiKeys(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No API keys found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'keyId', header: 'KEY ID' },\n { key: 'name', header: 'NAME' },\n { key: 'keyPreview', header: 'KEY PREVIEW' },\n { key: 'status', header: 'STATUS' },\n { key: 'brandId', header: 'BRAND ID' },\n ])\n}\n","import type { CreateAudienceInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const audiencesCreateCommand = defineCommand({\n path: ['audiences', 'create'],\n summary: 'Create an audience segment from a filter definition',\n sdkMethod: 'audiences.create',\n route: { method: 'POST', path: '/v1/audiences' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Audience name' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n `brew-cli audiences create --name VIP --input '{\"filters\":{\"filters\":[{\"field\":\"plan\",\"operator\":\"equals\",\"value\":\"vip\"}],\"logicalOperator\":\"and\"}}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n if (typeof input.name !== 'string' || input.name === '') {\n throw new CliUsageError('--name is required (or provide it via --input).')\n }\n if (input.filters === undefined) {\n throw new CliUsageError(\n 'Audience filters are required — pass the filter definition via --input.'\n )\n }\n const result = await ctx\n .client()\n .audiences.create(\n asSdkInput<CreateAudienceInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const audiencesDeleteCommand = defineCommand({\n path: ['audiences', 'delete'],\n summary: 'Delete an audience segment (contacts are kept)',\n sdkMethod: 'audiences.delete',\n route: { method: 'DELETE', path: '/v1/audiences/{audienceId}' },\n commandClass: 'destructive',\n args: [\n { name: 'audienceId', summary: 'Audience id to delete', isRequired: true },\n ],\n examples: ['brew-cli audiences delete aud_3k9sQ --yes'],\n confirmSummary: ({ args }) =>\n `Delete audience ${args.audienceId ?? ''}. Contacts are kept; the segment definition is gone. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .audiences.delete({ audienceId: args.audienceId ?? '' }),\n }),\n})\n","import type { DuplicateAudienceInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nexport const audiencesDuplicateCommand = defineCommand({\n path: ['audiences', 'duplicate'],\n summary: 'Copy an audience segment (the copy gets a \"(copy)\" name)',\n sdkMethod: 'audiences.duplicate',\n route: { method: 'POST', path: '/v1/audiences/{audienceId}/duplicate' },\n commandClass: 'write',\n args: [\n {\n name: 'audienceId',\n summary: 'Audience id to duplicate',\n isRequired: true,\n },\n ],\n // The operation takes no request body — the API names the copy itself.\n flags: [IDEMPOTENCY_FLAG],\n examples: ['brew-cli audiences duplicate aud_3k9sQ'],\n run: async ({ ctx, args, flags }) => ({\n data: await ctx.client().audiences.duplicate(\n asSdkInput<DuplicateAudienceInput>({\n audienceId: args.audienceId ?? '',\n }),\n requestOptions(flags)\n ),\n }),\n})\n","import type { AudienceFromEventsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const audiencesFromEventsCommand = defineCommand({\n path: ['audiences', 'from-events'],\n summary:\n 'Create a frozen audience snapshot from analytics events (async build)',\n sdkMethod: 'audiences.fromEvents',\n route: { method: 'POST', path: '/v1/audiences/from-events' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Audience name' },\n {\n flag: '--event-types <types...>',\n summary:\n 'Event type(s), repeatable: sent, delivered, delivery_delayed, opened, clicked, bounced, complained, failed, skipped, unsubscribed',\n },\n {\n flag: '--since <datetime>',\n summary: 'Cohort window start (ISO-8601, max 90 days back)',\n },\n {\n flag: '--until <datetime>',\n summary: 'Cohort window end (ISO-8601, default now)',\n },\n { flag: '--send-id <sendId>', summary: 'Scope to one campaign send' },\n { flag: '--email-id <emailId>', summary: 'Scope to one email design' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli audiences from-events --name \"Opened in July\" --event-types opened --since 2026-07-01T00:00:00Z --until 2026-08-01T00:00:00Z',\n 'brew-cli audiences from-events --event-types opened clicked --since 2026-07-01T00:00:00Z --input \\'{\"cohort\":{\"recipient\":[\"@acme.com\"]}}\\'',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n // Scalar flags override the cohort inside an --input body key-by-key.\n const cohort = mergeInput(input.cohort, {\n eventTypes: toStringArray(flags.eventTypes),\n from: flagString(flags.since),\n to: flagString(flags.until),\n sendId: flagString(flags.sendId),\n emailId: flagString(flags.emailId),\n })\n if (!Array.isArray(cohort.eventTypes) || cohort.eventTypes.length === 0) {\n throw new CliUsageError(\n '--event-types is required (or provide cohort.eventTypes via --input).'\n )\n }\n if (typeof cohort.from !== 'string' || cohort.from === '') {\n throw new CliUsageError(\n '--since is required (or provide cohort.from via --input).'\n )\n }\n return {\n data: await ctx\n .client()\n .audiences.fromEvents(\n asSdkInput<AudienceFromEventsInput>({ ...input, cohort }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { CliApiError } from '../../lib/errors'\nimport { flagString } from '../../lib/input'\n\nexport const audiencesGetCommand = defineCommand({\n path: ['audiences', 'get'],\n summary: 'Fetch one audience segment by id',\n sdkMethod: null,\n derivedFrom: 'audiences.list',\n route: { method: 'GET', path: '/v1/audiences' },\n commandClass: 'read',\n args: [\n { name: 'audienceId', summary: 'Audience id to fetch', isRequired: true },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: count',\n },\n ],\n examples: ['brew-cli audiences get aud_3k9sQ'],\n run: async ({ ctx, args, flags }) => {\n const audienceId = args.audienceId ?? ''\n const include = flagString(flags.include)\n const result = await ctx.client().audiences.list({\n audienceId,\n ...(include === undefined ? {} : { include }),\n })\n const audience = result.data[0]\n if (audience === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'AUDIENCE_NOT_FOUND',\n type: 'not_found',\n message: `No audience found for ${audienceId}`,\n suggestion: 'List audiences with `brew-cli audiences list`.',\n })\n }\n return { data: audience }\n },\n})\n","import type { ListAudiencesInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const audiencesListCommand = defineCommand({\n path: ['audiences', 'list'],\n summary: 'List audience segments',\n sdkMethod: 'audiences.list',\n route: { method: 'GET', path: '/v1/audiences' },\n commandClass: 'read',\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: count',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli audiences list',\n 'brew-cli audiences list --include count --limit 10',\n 'brew-cli audiences list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n include: flagString(flags.include),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const audiences = ctx.client().audiences\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n audiences.list(\n asSdkInput<ListAudiencesInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderAudiences(rows),\n }\n }\n const result = await audiences.list(asSdkInput<ListAudiencesInput>(input))\n return { data: result, human: renderAudiences(result.data) }\n },\n})\n\nfunction renderAudiences(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No audiences found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'audienceId', header: 'AUDIENCE ID' },\n { key: 'audienceName', header: 'NAME' },\n { key: 'count', header: 'CONTACTS' },\n { key: 'updatedAt', header: 'UPDATED' },\n ])\n}\n","import type { UpdateAudienceInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const audiencesUpdateCommand = defineCommand({\n path: ['audiences', 'update'],\n summary: 'Update an audience segment (name and/or filters)',\n sdkMethod: 'audiences.update',\n route: { method: 'PATCH', path: '/v1/audiences/{audienceId}' },\n commandClass: 'write',\n args: [\n { name: 'audienceId', summary: 'Audience id to update', isRequired: true },\n ],\n flags: [{ flag: '--name <name>', summary: 'New audience name' }, INPUT_FLAG],\n examples: [\n 'brew-cli audiences update aud_3k9sQ --name \"VIP customers\"',\n `brew-cli audiences update aud_3k9sQ --input '{\"filters\":{\"filters\":[{\"field\":\"plan\",\"operator\":\"equals\",\"value\":\"vip\"}],\"logicalOperator\":\"and\"}}'`,\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n if (Object.keys(input).length === 0) {\n throw new CliUsageError('Nothing to update — pass --name or --input.')\n }\n const result = await ctx.client().audiences.update(\n asSdkInput<UpdateAudienceInput>({\n ...input,\n audienceId: args.audienceId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import type { ControlAudienceRunInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport { asSdkInput, flagString } from '../../../lib/input'\n\nexport const automationsAudienceRunsControlCommand = defineCommand({\n path: ['automations', 'audience-runs', 'control'],\n summary: 'Pause, resume, or cancel an in-flight manual-audience run',\n sdkMethod: 'automations.audienceRuns.control',\n route: {\n method: 'POST',\n path: '/v1/automations/audience-runs/{audienceRunId}/control',\n },\n commandClass: 'destructive',\n args: [\n {\n name: 'audienceRunId',\n summary: 'Audience run id to control',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--action <action>',\n summary: 'pause (resumable) | resume | cancel (final)',\n },\n ],\n examples: [\n 'brew-cli automations audience-runs control arun_01HZ --action pause',\n 'brew-cli automations audience-runs control arun_01HZ --action cancel --yes',\n ],\n // Only cancel is irreversible; pause and resume proceed ungated.\n confirmSummary: ({ args, flags }) =>\n flagString(flags.action) === 'cancel'\n ? `Cancel audience run ${args.audienceRunId ?? ''} for good. Emails already sent are not recalled, and a canceled run cannot be resumed.`\n : undefined,\n run: async ({ ctx, args, flags }) => {\n const action = flagString(flags.action)\n if (action === undefined) {\n throw new CliUsageError('--action is required: pause, resume, or cancel.')\n }\n return {\n data: await ctx.client().automations.audienceRuns.control(\n asSdkInput<ControlAudienceRunInput>({\n audienceRunId: args.audienceRunId ?? '',\n action,\n })\n ),\n }\n },\n})\n","import type { ListAudienceRunsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { asSdkInput, flagInt, flagString } from '../../../lib/input'\n\nexport const automationsAudienceRunsListCommand = defineCommand({\n path: ['automations', 'audience-runs', 'list'],\n summary: 'List manual-audience runs (newest first)',\n sdkMethod: 'automations.audienceRuns.list',\n route: { method: 'GET', path: '/v1/automations/audience-runs' },\n commandClass: 'read',\n // The spec paginates by --limit only: no cursor, and the response carries\n // no pagination envelope, so there is no --all here.\n flags: [\n {\n flag: '--audience-run-id <id>',\n summary: 'Fetch a single audience run by id',\n },\n {\n flag: '--automation-id <id>',\n summary: 'Filter runs to a single automation',\n },\n { flag: '--limit <n>', summary: 'Max rows, 1-200 (default 50)' },\n ],\n examples: [\n 'brew-cli automations audience-runs list',\n 'brew-cli automations audience-runs list --automation-id auto_abc --limit 20',\n ],\n run: async ({ ctx, flags }) => {\n const limit = flagInt(flags.limit, '--limit')\n return {\n data: await ctx.client().automations.audienceRuns.list(\n asSdkInput<ListAudienceRunsInput>({\n audienceRunId: flagString(flags.audienceRunId),\n automationId: flagString(flags.automationId),\n limit,\n })\n ),\n }\n },\n})\n","import type { CreateAutomationInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const automationsCreateCommand = defineCommand({\n path: ['automations', 'create'],\n summary: 'Create an automation from a graph JSON (starts unpublished)',\n sdkMethod: 'automations.create',\n route: { method: 'POST', path: '/v1/automations' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Automation name' },\n { flag: '--description <text>', summary: 'Automation description' },\n {\n flag: '--trigger <triggerEventId>',\n summary: 'Trigger event id that starts the automation',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'cat welcome-flow.json | brew-cli automations create --input -',\n `brew-cli automations create --name \"Welcome flow\" --input '{\"triggerEventId\":\"tev_1\",\"nodes\":[],\"connections\":[]}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n if (base === undefined) {\n throw new CliUsageError(\n '--input is required — the automation graph JSON (name, triggerEventId, nodes, connections).'\n )\n }\n const input = mergeInput(base, {\n name: flagString(flags.name),\n description: flagString(flags.description),\n triggerEventId: flagString(flags.trigger),\n })\n const result = await ctx\n .client()\n .automations.create(\n asSdkInput<CreateAutomationInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const automationsDeleteCommand = defineCommand({\n path: ['automations', 'delete'],\n summary: 'Delete an automation and its version history (cascade)',\n sdkMethod: 'automations.delete',\n route: { method: 'DELETE', path: '/v1/automations/{automationId}' },\n commandClass: 'destructive',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to delete',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations delete am_123 --yes'],\n confirmSummary: ({ args }) =>\n `Delete automation ${args.automationId ?? ''} and its entire version history (cascade). This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .automations.delete({ automationId: args.automationId ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { CliApiError } from '../../lib/errors'\nimport { flagString } from '../../lib/input'\n\nexport const automationsGetCommand = defineCommand({\n path: ['automations', 'get'],\n summary: 'Fetch one automation by id',\n sdkMethod: null,\n derivedFrom: 'automations.list',\n route: { method: 'GET', path: '/v1/automations' },\n commandClass: 'read',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: graph | versions',\n },\n ],\n examples: [\n 'brew-cli automations get am_123',\n 'brew-cli automations get am_123 --include graph,versions',\n ],\n run: async ({ ctx, args, flags }) => {\n const automationId = args.automationId ?? ''\n const include = flagString(flags.include)\n const result = await ctx.client().automations.list({\n automationId,\n ...(include === undefined ? {} : { include }),\n })\n const automation = result.data[0]\n if (automation === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'AUTOMATION_NOT_FOUND',\n type: 'not_found',\n message: `No automation found for ${automationId}`,\n suggestion: 'List automations with `brew-cli automations list`.',\n })\n }\n return { data: automation }\n },\n})\n","import type { ListAutomationsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const automationsListCommand = defineCommand({\n path: ['automations', 'list'],\n summary: 'List automations (lean rows; `automations get` for the graph)',\n sdkMethod: 'automations.list',\n route: { method: 'GET', path: '/v1/automations' },\n commandClass: 'read',\n flags: [LIMIT_FLAG, CURSOR_FLAG, ALL_FLAG, INPUT_FLAG],\n examples: [\n 'brew-cli automations list',\n 'brew-cli automations list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const automations = ctx.client().automations\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n automations.list(\n asSdkInput<ListAutomationsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderAutomations(rows),\n }\n }\n const result = await automations.list(\n asSdkInput<ListAutomationsInput>(input)\n )\n return { data: result, human: renderAutomations(result.data) }\n },\n})\n\nfunction renderAutomations(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No automations found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'automationId', header: 'AUTOMATION' },\n { key: 'name', header: 'NAME' },\n { key: 'published', header: 'PUBLISHED' },\n { key: 'version', header: 'VERSION' },\n { key: 'triggerEventId', header: 'TRIGGER' },\n ])\n}\n","import { defineCommand } from '../../lib/define-command'\nimport { flagString } from '../../lib/input'\n\nexport const automationsPublishCommand = defineCommand({\n path: ['automations', 'publish'],\n summary:\n 'Publish an automation — arms it for live fires; does not itself send',\n sdkMethod: 'automations.publish',\n route: { method: 'PATCH', path: '/v1/automations/{automationId}' },\n commandClass: 'write',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to publish',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--automation-version <automationVersionId>',\n summary: 'Publish a specific historical version (default: latest)',\n },\n ],\n examples: [\n 'brew-cli automations publish am_123',\n 'brew-cli automations publish am_123 --automation-version amv_456',\n ],\n run: async ({ ctx, args, flags }) => {\n const automationVersionId = flagString(flags.automationVersion)\n const result = await ctx.client().automations.publish({\n automationId: args.automationId ?? '',\n ...(automationVersionId === undefined ? {} : { automationVersionId }),\n })\n return { data: result }\n },\n})\n","import type { RunAutomationInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const automationsRunCommand = defineCommand({\n path: ['automations', 'run'],\n summary: 'Run a manual-audience automation (live send; --dry-run previews)',\n sdkMethod: 'automations.run',\n route: { method: 'POST', path: '/v1/automations/{automationId}/run' },\n commandClass: 'destructive',\n args: [\n {\n name: 'automationId',\n summary: 'Manual-audience automation id to run',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--dry-run',\n summary: 'Preview the resolved plan without sending (skips the gate)',\n },\n {\n flag: '--schedule-at <iso>',\n summary: 'Launch at an ISO-8601 time instead of now',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli automations run auto_abc --dry-run',\n 'brew-cli automations run auto_abc --yes',\n 'brew-cli automations run auto_abc --schedule-at 2026-09-01T09:00:00Z --input \\'{\"gradualSend\":{\"startingPercentage\":10,\"incrementPercentage\":20,\"interval\":{\"value\":1,\"unit\":\"day\"},\"timeZone\":\"America/New_York\"}}\\' --yes',\n ],\n confirmSummary: ({ args, flags }) => {\n // The gate must reflect the MERGED request — an inline --input body can\n // carry dry_run/scheduledAt on its own. A dry run never gates.\n const inline = parseInlineInput(flags.input)\n if (flags.dryRun === true || inline?.dry_run === true) {\n return\n }\n const scheduleAt =\n flagString(flags.scheduleAt) ?? asString(inline?.scheduledAt)\n const timing = scheduleAt === undefined ? 'now' : `at ${scheduleAt}`\n return `Run automation ${args.automationId ?? ''} LIVE against its bound audience ${timing}. Real recipients receive mail; preview with --dry-run instead.`\n },\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n // The spec field is snake_case, unlike the rest of the API surface.\n dry_run: flags.dryRun === true ? true : undefined,\n scheduledAt: flagString(flags.scheduleAt),\n })\n return {\n data: await ctx.client().automations.run(\n asSdkInput<RunAutomationInput>({\n ...input,\n automationId: args.automationId ?? '',\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n\n/** Best-effort parse of an inline --input body (stdin `-` stays opaque). */\nfunction parseInlineInput(value: unknown): Record<string, unknown> | undefined {\n if (typeof value !== 'string' || value === '-') {\n return\n }\n try {\n const parsed: unknown = JSON.parse(value)\n return parsed !== null && typeof parsed === 'object'\n ? (parsed as Record<string, unknown>)\n : undefined\n } catch {}\n}\n\nfunction asString(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined\n}\n","import type { ListAutomationRunsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const automationsRunsListCommand = defineCommand({\n path: ['automations', 'runs', 'list'],\n summary: 'List automation runs (live + test history)',\n sdkMethod: 'automations.runs.list',\n route: { method: 'GET', path: '/v1/automations/runs' },\n commandClass: 'read',\n flags: [\n {\n flag: '--run <automationRunId>',\n summary: 'Fetch one run (single-row page)',\n },\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: logs',\n },\n { flag: '--automation <automationId>', summary: 'Filter by automation' },\n {\n flag: '--trigger <triggerEventId>',\n summary: 'Filter by trigger event',\n },\n {\n flag: '--trigger-instance <triggerInstanceId>',\n summary: 'Filter by fired trigger instance',\n },\n { flag: '--recipient <email>', summary: 'Filter by recipient email' },\n {\n flag: '--status <status>',\n summary: 'pending | running | completed | failed | cancelled',\n },\n { flag: '--mode <mode>', summary: 'live | test' },\n { flag: '--since <datetime>', summary: 'Runs started at/after (ISO-8601)' },\n {\n flag: '--until <datetime>',\n summary: 'Runs started at/before (ISO-8601)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations runs list --automation am_123 --status failed',\n 'brew-cli automations runs list --run arun_123 --include logs',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n automationRunId: flagString(flags.run),\n include: flagString(flags.include),\n automationId: flagString(flags.automation),\n triggerEventId: flagString(flags.trigger),\n triggerInstanceId: flagString(flags.triggerInstance),\n recipientEmail: flagString(flags.recipient),\n status: flagString(flags.status),\n mode: flagString(flags.mode),\n from: flagString(flags.since),\n to: flagString(flags.until),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const runs = ctx.client().automations.runs\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n runs.list(\n asSdkInput<ListAutomationRunsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderRuns(rows),\n }\n }\n const result = await runs.list(asSdkInput<ListAutomationRunsInput>(input))\n return { data: result, human: renderRuns(result.data) }\n },\n})\n\nfunction renderRuns(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No automation runs found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'automationRunId', header: 'RUN' },\n { key: 'automationId', header: 'AUTOMATION' },\n { key: 'status', header: 'STATUS' },\n { key: 'mode', header: 'MODE' },\n { key: 'recipientEmail', header: 'RECIPIENT' },\n ])\n}\n","import type { AutomationsResource } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, INPUT_FLAG, readJsonFlag } from '../../lib/input'\n\ntype TestAutomationInput = Parameters<AutomationsResource['test']>[0]\n\nexport const automationsTestCommand = defineCommand({\n path: ['automations', 'test'],\n summary: 'Start a suppression-aware TEST run (no real mail is sent)',\n sdkMethod: 'automations.test',\n route: { method: 'POST', path: '/v1/automations/{automationId}/test' },\n commandClass: 'write',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to test',\n isRequired: true,\n },\n ],\n flags: [INPUT_FLAG],\n examples: [\n 'brew-cli automations test am_123',\n `brew-cli automations test am_123 --input '{\"userId\":\"u_1\"}'`,\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n // A bare object is sugar for the { payload } envelope the API takes.\n const body =\n base === undefined\n ? {}\n : typeof base === 'object' && base !== null && 'payload' in base\n ? (base as Record<string, unknown>)\n : { payload: base }\n const result = await ctx.client().automations.test(\n asSdkInput<TestAutomationInput>({\n ...body,\n automationId: args.automationId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import type { components } from '../../../generated/openapi-types'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { rawRequest } from '../../../lib/raw-request'\n\ntype ContractGetResponse = components['schemas']['PayloadContractGetResponse']\ntype ContractValidateResponse =\n components['schemas']['PayloadContractValidateResponse']\n\nconst FORMAT_FLAG = {\n flag: '--format <format>',\n summary:\n 'Rendering: json (default, the contract object) or ts | zod | jsonschema | skill ({format, content})',\n} as const\n\nconst FORMATS = new Set(['json', 'ts', 'zod', 'jsonschema', 'skill'])\n\nconst ENFORCEMENT_MODES = new Set(['off', 'prune', 'strict'])\n\n/**\n * The validate preview knob is the VALIDATOR's enum — it is only ever\n * consulted once a contract is enforcing, so `off` is not representable\n * (platform `ContractEnforcementMode`).\n */\nconst VALIDATE_ENFORCEMENT_MODES = new Set(['prune', 'strict'])\n\nfunction formatQuery(value: unknown): string {\n const format = flagString(value)\n if (format === undefined) {\n return ''\n }\n if (!FORMATS.has(format)) {\n throw new CliUsageError(\n `Unknown --format '${format}' (expected json | ts | zod | jsonschema | skill).`\n )\n }\n return `?format=${format}`\n}\n\n/** Text formats print `content` raw on a TTY; `--json | jq -r .content` for pipes. */\nfunction contentHuman(body: { content?: string }): { human?: string } {\n return typeof body.content === 'string' ? { human: body.content } : {}\n}\n\nexport const automationsTriggersContractGetCommand = defineCommand({\n path: ['automations', 'triggers', 'contract', 'get'],\n summary:\n 'Read a trigger payload contract: stored when declared, derived otherwise; --format renders ts/zod/jsonschema/skill',\n sdkMethod: null,\n isRawTransport: true,\n route: {\n method: 'GET',\n path: '/v1/automations/triggers/{triggerEventId}/contract',\n },\n commandClass: 'read',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Trigger id (tri_…, or an integration composite id)',\n isRequired: true,\n },\n ],\n flags: [FORMAT_FLAG],\n examples: [\n 'brew-cli automations triggers contract get tri_signup',\n 'brew-cli automations triggers contract get tri_signup --format ts',\n 'brew-cli automations triggers contract get tri_signup --format skill --json | jq -r .content',\n ],\n run: async ({ ctx, args, flags }) => {\n const body = await rawRequest<ContractGetResponse>(ctx, {\n method: 'GET',\n path: `/v1/automations/triggers/${encodeURIComponent(args.triggerEventId ?? '')}/contract${formatQuery(flags.format)}`,\n })\n return { data: body, ...contentHuman(body) }\n },\n})\n\nexport const automationsTriggersContractPutCommand = defineCommand({\n path: ['automations', 'triggers', 'contract', 'put'],\n summary:\n 'Declare (or replace) the stored payload contract for a trigger — tree-validated before any write; omitting --enforcement leaves the stored setting unchanged',\n sdkMethod: null,\n isRawTransport: true,\n route: {\n method: 'PUT',\n path: '/v1/automations/triggers/{triggerEventId}/contract',\n },\n commandClass: 'write',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Trigger id (tri_…)',\n isRequired: true,\n },\n ],\n flags: [\n INPUT_FLAG,\n {\n flag: '--enforcement <mode>',\n summary:\n 'off (advisory, the default) | prune (drop fields not on the list) | strict (reject a payload carrying them)',\n },\n ],\n examples: [\n `brew-cli automations triggers contract put tri_signup --input '{\"fields\":[{\"key\":\"email\",\"type\":\"string\",\"required\":true}]}'`,\n 'brew-cli automations triggers contract put tri_signup --enforcement strict',\n ],\n // Trigger contracts must keep a top-level required `email` string;\n // nested object/array fields need a Liquid-enabled workspace. The\n // response is the same body a follow-up `contract get` returns.\n run: async ({ ctx, args, flags }) => {\n const input = mergeInput(\n await readJsonFlag(ctx, flags.input, '--input'),\n {}\n )\n // The platform PUT takes fields?, name?, enforcement? — each optional,\n // so an enforcement-only (or rename-only) patch is designed usage.\n if (input.fields !== undefined && !Array.isArray(input.fields)) {\n throw new CliUsageError(\n '--input .fields must be an array of contract field nodes.'\n )\n }\n // One knob. Omitting it leaves the stored setting alone.\n const enforcement = flagString(flags.enforcement)\n if (enforcement !== undefined && !ENFORCEMENT_MODES.has(enforcement)) {\n throw new CliUsageError(\n `Unknown --enforcement '${enforcement}' (expected off | prune | strict).`\n )\n }\n const requestBody = {\n ...input,\n ...(enforcement !== undefined ? { enforcement } : {}),\n }\n if (Object.keys(requestBody).length === 0) {\n throw new CliUsageError(\n 'Empty contract body — pass --input (fields and/or name) or --enforcement <mode>.'\n )\n }\n const body = await rawRequest<ContractGetResponse>(ctx, {\n method: 'PUT',\n path: `/v1/automations/triggers/${encodeURIComponent(args.triggerEventId ?? '')}/contract`,\n body: requestBody,\n })\n return { data: body }\n },\n})\n\nexport const automationsTriggersContractValidateCommand = defineCommand({\n path: ['automations', 'triggers', 'contract', 'validate'],\n summary:\n \"Dry-run a payload against a trigger's contract (the fire path's validator) — never fires; invalid payloads still exit 0\",\n sdkMethod: null,\n isRawTransport: true,\n route: {\n method: 'POST',\n path: '/v1/automations/triggers/{triggerEventId}/contract/validate',\n },\n commandClass: 'read',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Trigger id (tri_…)',\n isRequired: true,\n },\n ],\n flags: [\n INPUT_FLAG,\n {\n flag: '--enforcement <mode>',\n summary: 'Preview a mode other than the stored one: prune | strict',\n },\n ],\n examples: [\n `brew-cli automations triggers contract validate tri_signup --input '{\"payload\":{\"email\":\"jane@example.com\"}}'`,\n ],\n run: async ({ ctx, args, flags }) => {\n const input = mergeInput(\n await readJsonFlag(ctx, flags.input, '--input'),\n {}\n )\n const payload = input.payload ?? input\n const enforcement = flagString(flags.enforcement)\n if (\n enforcement !== undefined &&\n !VALIDATE_ENFORCEMENT_MODES.has(enforcement)\n ) {\n throw new CliUsageError(\n `Unknown --enforcement '${enforcement}' (expected prune | strict).`\n )\n }\n const body = await rawRequest<ContractValidateResponse>(ctx, {\n method: 'POST',\n path: `/v1/automations/triggers/${encodeURIComponent(args.triggerEventId ?? '')}/contract/validate`,\n body: {\n payload,\n ...(enforcement !== undefined ? { enforcement } : {}),\n },\n })\n return { data: body }\n },\n})\n","import type { CreateTriggerInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../../lib/input'\n\nexport const automationsTriggersCreateCommand = defineCommand({\n path: ['automations', 'triggers', 'create'],\n summary: 'Create a trigger event (title + typed payload schema)',\n sdkMethod: 'automations.triggers.create',\n route: { method: 'POST', path: '/v1/automations/triggers' },\n commandClass: 'write',\n flags: [\n { flag: '--title <title>', summary: 'Trigger event title' },\n { flag: '--description <text>', summary: 'Trigger event description' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n `brew-cli automations triggers create --title user.signup --input '{\"payloadSchema\":{\"type\":\"object\",\"fields\":[{\"key\":\"userId\",\"type\":\"string\",\"required\":true}]}}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n title: flagString(flags.title),\n description: flagString(flags.description),\n })\n if (typeof input.title !== 'string' || input.title === '') {\n throw new CliUsageError('A title is required (--title or --input).')\n }\n if (input.payloadSchema === undefined) {\n throw new CliUsageError(\n '--input with a payloadSchema is required (the typed contract fires are validated against).'\n )\n }\n const result = await ctx\n .client()\n .automations.triggers.create(\n asSdkInput<CreateTriggerInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../../lib/define-command'\n\nexport const automationsTriggersDeleteCommand = defineCommand({\n path: ['automations', 'triggers', 'delete'],\n summary: 'Delete a trigger event (rejected while automations depend on it)',\n sdkMethod: 'automations.triggers.delete',\n route: {\n method: 'DELETE',\n path: '/v1/automations/triggers/{triggerEventId}',\n },\n commandClass: 'destructive',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Id of the trigger event to delete',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations triggers delete tev_123 --yes'],\n confirmSummary: ({ args }) =>\n `Delete trigger event ${args.triggerEventId ?? ''}. This cannot be undone (the server rejects the delete while automations still depend on it).`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().automations.triggers.delete({\n triggerEventId: args.triggerEventId ?? '',\n }),\n }),\n})\n","import type { FireTriggerInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n readJsonFlag,\n requestOptions,\n} from '../../../lib/input'\n\nexport const automationsTriggersFireCommand = defineCommand({\n path: ['automations', 'triggers', 'fire'],\n summary: 'Fire a trigger event with a payload (starts LIVE runs)',\n sdkMethod: 'automations.triggers.fire',\n route: {\n method: 'POST',\n path: '/v1/automations/triggers/{triggerEventId}/fire',\n },\n commandClass: 'destructive',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Id of the trigger event to fire',\n isRequired: true,\n },\n ],\n flags: [INPUT_FLAG, IDEMPOTENCY_FLAG],\n examples: [\n `brew-cli automations triggers fire tri_signup --input '{\"payload\":{\"email\":\"jane@example.com\"}}' --yes`,\n ],\n confirmSummary: ({ args }) =>\n `Fire trigger ${args.triggerEventId ?? ''} — starts REAL runs on every published automation listening to it.`,\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n if (base === undefined) {\n throw new CliUsageError('--input is required — the trigger payload JSON.')\n }\n // A bare object is sugar for the { payload } envelope the API takes.\n const body =\n typeof base === 'object' && base !== null && 'payload' in base\n ? (base as Record<string, unknown>)\n : { payload: base }\n const result = await ctx.client().automations.triggers.fire(\n asSdkInput<FireTriggerInput>({\n ...body,\n triggerEventId: args.triggerEventId ?? '',\n }),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ListTriggersInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const automationsTriggersListCommand = defineCommand({\n path: ['automations', 'triggers', 'list'],\n summary: 'List trigger events (their payload schemas drive fires)',\n sdkMethod: 'automations.triggers.list',\n route: { method: 'GET', path: '/v1/automations/triggers' },\n commandClass: 'read',\n flags: [\n {\n flag: '--trigger <triggerEventId>',\n summary: 'Fetch one trigger event (single-row page)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations triggers list',\n 'brew-cli automations triggers list --trigger tev_123',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n triggerEventId: flagString(flags.trigger),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const triggers = ctx.client().automations.triggers\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n triggers.list(\n asSdkInput<ListTriggersInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderTriggers(rows),\n }\n }\n const result = await triggers.list(asSdkInput<ListTriggersInput>(input))\n return { data: result, human: renderTriggers(result.data) }\n },\n})\n\nfunction renderTriggers(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No trigger events found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'triggerEventId', header: 'TRIGGER' },\n { key: 'title', header: 'TITLE' },\n { key: 'provider', header: 'PROVIDER' },\n ])\n}\n","import type { TriggerReadyInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { asSdkInput } from '../../../lib/input'\n\nexport const automationsTriggersReadyCommand = defineCommand({\n path: ['automations', 'triggers', 'ready'],\n summary:\n 'Preflight a trigger without firing: key + scope + permissions pass/fail, the payload contract, and what a fire would start',\n sdkMethod: 'automations.triggers.ready',\n route: {\n method: 'GET',\n path: '/v1/automations/triggers/{triggerEventId}/fire',\n },\n commandClass: 'read',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Trigger id (tri_…, or an integration composite id)',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations triggers ready tri_signup'],\n // 200 `status: \"ready\"` means the exact credential in use can fire this\n // trigger; `details.counts.automations: 0` means fires are accepted and\n // logged but start no runs until a wired automation is published.\n run: async ({ ctx, args }) => {\n const result = await ctx.client().automations.triggers.ready(\n asSdkInput<TriggerReadyInput>({\n triggerEventId: args.triggerEventId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import type { PatchTriggerInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\n\nexport const automationsTriggersUpdateCommand = defineCommand({\n path: ['automations', 'triggers', 'update'],\n summary: 'Update a trigger event (title, description, payload schema)',\n sdkMethod: 'automations.triggers.patch',\n route: {\n method: 'PATCH',\n path: '/v1/automations/triggers/{triggerEventId}',\n },\n commandClass: 'write',\n args: [\n {\n name: 'triggerEventId',\n summary: 'Id of the trigger event to update',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--title <title>', summary: 'New title' },\n { flag: '--description <text>', summary: 'New description' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations triggers update tev_123 --title user.signup.v2',\n `brew-cli automations triggers update tev_123 --input '{\"payloadSchema\":{\"type\":\"object\",\"fields\":[]}}'`,\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n title: flagString(flags.title),\n description: flagString(flags.description),\n })\n if (Object.keys(input).length === 0) {\n throw new CliUsageError('Nothing to update — pass flags or --input.')\n }\n const result = await ctx.client().automations.triggers.patch(\n asSdkInput<PatchTriggerInput>({\n ...input,\n triggerEventId: args.triggerEventId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const automationsUnpublishCommand = defineCommand({\n path: ['automations', 'unpublish'],\n summary: 'Unpublish an automation so new trigger fires no longer start runs',\n sdkMethod: 'automations.unpublish',\n route: { method: 'PATCH', path: '/v1/automations/{automationId}' },\n commandClass: 'write',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to unpublish',\n isRequired: true,\n },\n ],\n examples: ['brew-cli automations unpublish am_123'],\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .automations.unpublish({ automationId: args.automationId ?? '' }),\n }),\n})\n","import type { PatchAutomationInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const automationsUpdateCommand = defineCommand({\n path: ['automations', 'update'],\n summary: 'Update automation metadata and/or its graph (PATCH)',\n sdkMethod: 'automations.patch',\n route: { method: 'PATCH', path: '/v1/automations/{automationId}' },\n commandClass: 'write',\n args: [\n {\n name: 'automationId',\n summary: 'Id of the automation to update',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--name <name>', summary: 'New name' },\n { flag: '--description <text>', summary: 'New description' },\n { flag: '--trigger <triggerEventId>', summary: 'New trigger event id' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli automations update am_123 --name \"Welcome flow v2\"',\n 'cat graph.json | brew-cli automations update am_123 --input -',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n name: flagString(flags.name),\n description: flagString(flags.description),\n triggerEventId: flagString(flags.trigger),\n })\n if (Object.keys(input).length === 0) {\n throw new CliUsageError('Nothing to update — pass flags or --input.')\n }\n const result = await ctx.client().automations.patch(\n asSdkInput<PatchAutomationInput>({\n ...input,\n automationId: args.automationId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { flagString } from '../../lib/input'\n\nexport const brandGetCommand = defineCommand({\n path: ['brand', 'get'],\n summary: \"Fetch the key's brand + extraction readiness (`ready` flag)\",\n sdkMethod: 'brand.get',\n route: { method: 'GET', path: '/v1/brand' },\n commandClass: 'read',\n flags: [\n {\n flag: '--include <tokens>',\n summary:\n 'Comma-separated embeds: identity | emailDesign | imageStyle | logos',\n },\n ],\n examples: [\n 'brew-cli brand get',\n 'brew-cli brand get --include identity,logos',\n ],\n run: async ({ ctx, flags }) => {\n const include = flagString(flags.include)\n const result = await ctx.client().brand.get({\n ...(include === undefined ? {} : { include }),\n })\n return { data: result }\n },\n})\n","import type { ListBrandImagesInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const brandGetImagesCommand = defineCommand({\n path: ['brand', 'get-images'],\n summary: \"Browse or semantically search the brand's image library\",\n sdkMethod: 'brand.getImages',\n route: { method: 'GET', path: '/v1/brand/images' },\n commandClass: 'read',\n flags: [\n {\n flag: '--query <text>',\n summary: 'Semantic search over image descriptions',\n },\n { flag: '--type <type>', summary: 'Filter by image category' },\n {\n flag: '--aspect-ratio <ratio>',\n summary: 'Filter by aspect ratio (e.g. 16:9)',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli brand get-images',\n 'brew-cli brand get-images --query \"team photo\" --aspect-ratio 16:9',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n q: flagString(flags.query),\n type: flagString(flags.type),\n aspectRatio: flagString(flags.aspectRatio),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const brand = ctx.client().brand\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n brand.getImages(\n asSdkInput<ListBrandImagesInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderImages(rows),\n }\n }\n const result = await brand.getImages(\n asSdkInput<ListBrandImagesInput>(input)\n )\n return { data: result, human: renderImages(result.data) }\n },\n})\n\nfunction renderImages(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No brand images found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'url', header: 'URL' },\n { key: 'category', header: 'CATEGORY' },\n { key: 'aspectRatio', header: 'ASPECT' },\n ])\n}\n","import type { UpdateBrandInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const brandUpdateCommand = defineCommand({\n path: ['brand', 'update'],\n summary: 'Update brand identity and/or design-system markdown (PATCH)',\n sdkMethod: 'brand.patch',\n route: { method: 'PATCH', path: '/v1/brand' },\n commandClass: 'write',\n flags: [INPUT_FLAG],\n examples: [\n `brew-cli brand update --input '{\"identity\":{\"tagline\":\"Brew better email\"}}'`,\n 'cat brand-patch.json | brew-cli brand update --input -',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {})\n if (Object.keys(input).length === 0) {\n throw new CliUsageError(\n '--input is required — at least one of identity, emailDesign, imageStyle.'\n )\n }\n const result = await ctx\n .client()\n .brand.patch(asSdkInput<UpdateBrandInput>(input))\n return { data: result }\n },\n})\n","import type { CreateBrandInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const brandsCreateCommand = defineCommand({\n path: ['brands', 'create'],\n summary:\n 'Create a brand and start async extraction (needs an ORGANIZATION-scoped key); poll `brands get` until ready',\n sdkMethod: 'brands.create',\n route: { method: 'POST', path: '/v1/brands' },\n commandClass: 'write',\n flags: [\n { flag: '--url <url>', summary: 'Website to extract the brand from' },\n {\n flag: '--instructions <text>',\n summary: 'Guidance for the extraction (tone sources, brand color, …)',\n },\n {\n flag: '--include-paths <paths...>',\n summary: 'Site path(s) the crawl must include, repeatable',\n },\n {\n flag: '--exclude-paths <paths...>',\n summary: 'Site path(s) the crawl must skip, repeatable',\n },\n {\n flag: '--exclude-subdomains <subdomains...>',\n summary: 'Subdomain(s) the crawl must skip, repeatable',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli brands create --url acme.com',\n 'brew-cli brands create --url acme.com --instructions \"Primary brand color is the deep navy in the header\"',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n url: flagString(flags.url),\n instructions: flagString(flags.instructions),\n includePaths: toStringArray(flags.includePaths),\n excludePaths: toStringArray(flags.excludePaths),\n excludeSubdomains: toStringArray(flags.excludeSubdomains),\n })\n if (typeof input.url !== 'string' || input.url === '') {\n throw new CliUsageError('--url is required (or provide it via --input).')\n }\n return {\n data: await ctx\n .client()\n .brands.create(\n asSdkInput<CreateBrandInput>(input),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const brandsGetCommand = defineCommand({\n path: ['brands', 'get'],\n summary: \"One brand's lifecycle state (the extraction polling endpoint)\",\n sdkMethod: 'brands.get',\n route: { method: 'GET', path: '/v1/brands/{brandId}' },\n commandClass: 'read',\n args: [{ name: 'brandId', summary: 'Brand id to fetch', isRequired: true }],\n examples: ['brew-cli brands get kx7b3s7fapqz8mjm12ekz1kxdx87yceg'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().brands.get({ brandId: args.brandId ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const brandsListCommand = defineCommand({\n path: ['brands', 'list'],\n summary: 'List every brand in the organization',\n sdkMethod: 'brands.list',\n route: { method: 'GET', path: '/v1/brands' },\n commandClass: 'read',\n examples: ['brew-cli brands list --json'],\n run: async ({ ctx }) => ({\n data: await ctx.client().brands.list(),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const chatsGetCommand = defineCommand({\n path: ['chats', 'get'],\n summary: 'Brand-scoped digest of a Brew chat (artifacts + transcript tail)',\n sdkMethod: 'chats.get',\n route: { method: 'GET', path: '/v1/chats/{chatId}' },\n commandClass: 'read',\n args: [\n {\n name: 'chatId',\n summary: 'Brew chat id (from the chat URL / the app)',\n isRequired: true,\n },\n ],\n examples: ['brew-cli chats get Hk2mZ8t9QbY3sW1vR0pLd'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().chats.get(args.chatId ?? ''),\n }),\n})\n","import { maskApiKey } from '../lib/client'\nimport {\n configPath,\n isConfigKey,\n readConfig,\n updateConfig,\n} from '../lib/config-store'\nimport { defineCommand } from '../lib/define-command'\nimport { CliUsageError } from '../lib/errors'\nimport type { CliContext } from '../lib/types'\n\nconst SETTABLE_KEYS = ['brandId', 'apiUrl'] as const\n\nexport const configListCommand = defineCommand({\n path: ['config', 'list'],\n summary: 'Show the stored configuration (API key masked)',\n sdkMethod: null,\n commandClass: 'read',\n examples: ['brew-cli config list'],\n run: async ({ ctx }) => ({ data: maskedConfig(ctx) }),\n})\n\nexport const configGetCommand = defineCommand({\n path: ['config', 'get'],\n summary: 'Read one stored configuration value',\n sdkMethod: null,\n commandClass: 'read',\n args: [\n { name: 'key', summary: 'brandId | apiUrl | apiKey', isRequired: true },\n ],\n examples: ['brew-cli config get brandId'],\n run: async ({ ctx, args }) => {\n const key = requireKnownKey(args.key)\n const value = maskedConfig(ctx)[key] ?? null\n return { data: { [key]: value } }\n },\n})\n\nexport const configSetCommand = defineCommand({\n path: ['config', 'set'],\n summary: 'Store a configuration value (brandId or apiUrl)',\n sdkMethod: null,\n commandClass: 'write',\n args: [\n { name: 'key', summary: 'brandId | apiUrl', isRequired: true },\n { name: 'value', summary: 'The value to store', isRequired: true },\n ],\n examples: ['brew-cli config set brandId bd_123'],\n run: async ({ ctx, args }) => {\n const key = requireSettableKey(args.key)\n const value = args.value ?? ''\n if (value === '') {\n throw new CliUsageError('A non-empty value is required.')\n }\n const path = updateConfig(ctx.io.env, { [key]: value })\n return { data: { [key]: value, configPath: path } }\n },\n})\n\nexport const configUnsetCommand = defineCommand({\n path: ['config', 'unset'],\n summary: 'Remove a stored configuration value (brandId or apiUrl)',\n sdkMethod: null,\n commandClass: 'write',\n args: [{ name: 'key', summary: 'brandId | apiUrl', isRequired: true }],\n examples: ['brew-cli config unset brandId'],\n run: async ({ ctx, args }) => {\n const key = requireSettableKey(args.key)\n const path = updateConfig(ctx.io.env, { [key]: undefined })\n return { data: { [key]: null, configPath: path } }\n },\n})\n\nfunction maskedConfig(ctx: CliContext): Record<string, string | undefined> {\n const stored = readConfig(ctx.io.env)\n return {\n ...stored,\n ...(stored.apiKey === undefined\n ? {}\n : { apiKey: maskApiKey(stored.apiKey) }),\n configPath: configPath(ctx.io.env),\n }\n}\n\nfunction requireKnownKey(\n value: string | undefined\n): 'apiKey' | 'apiUrl' | 'brandId' {\n if (value !== undefined && isConfigKey(value)) {\n return value\n }\n throw new CliUsageError('Unknown key. Expected brandId, apiUrl, or apiKey.')\n}\n\nfunction requireSettableKey(value: string | undefined): 'apiUrl' | 'brandId' {\n if (value === 'apiKey') {\n throw new CliUsageError(\n 'The API key is managed by `brew-cli login` / `brew-cli logout`.'\n )\n }\n const key = requireKnownKey(value)\n if ((SETTABLE_KEYS as readonly string[]).includes(key)) {\n return key as 'apiUrl' | 'brandId'\n }\n throw new CliUsageError('Unknown key. Expected brandId or apiUrl.')\n}\n","import type { CountContactsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n parseFilterFlags,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const contactsCountCommand = defineCommand({\n path: ['contacts', 'count'],\n summary: 'Count contacts matching a filter',\n sdkMethod: 'contacts.count',\n route: { method: 'POST', path: '/v1/contacts/search' },\n commandClass: 'read',\n flags: [\n { flag: '--search <text>', summary: 'Free-text search' },\n {\n flag: '--filter <filters...>',\n summary: 'Structured filter field:operator[:value], repeatable',\n },\n { flag: '--audience <audienceId>', summary: 'Scope to one audience' },\n { flag: '--logic <logic>', summary: 'Filter combinator: and | or' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli contacts count',\n 'brew-cli contacts count --filter subscribed:equals:true',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n search: flagString(flags.search),\n filters: parseFilterFlags(flags.filter),\n audienceId: flagString(flags.audience),\n logic: flagString(flags.logic),\n })\n return {\n data: await ctx\n .client()\n .contacts.count(asSdkInput<CountContactsInput>(input)),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const contactsDeleteCommand = defineCommand({\n path: ['contacts', 'delete'],\n summary: 'Delete one contact by email (idempotent)',\n sdkMethod: 'contacts.delete',\n route: { method: 'DELETE', path: '/v1/contacts/{email}' },\n commandClass: 'destructive',\n args: [\n {\n name: 'email',\n summary: 'Email address of the contact to delete',\n isRequired: true,\n },\n ],\n examples: ['brew-cli contacts delete jane@example.com --yes'],\n confirmSummary: ({ args }) =>\n `Delete contact ${args.email ?? ''} from the active brand. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().contacts.delete({ email: args.email ?? '' }),\n }),\n})\n","import type { DeleteManyContactsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contactsDeleteManyCommand = defineCommand({\n path: ['contacts', 'delete-many'],\n summary: 'Delete up to 1000 contacts by email',\n sdkMethod: 'contacts.deleteMany',\n route: { method: 'POST', path: '/v1/contacts/batch-delete' },\n commandClass: 'destructive',\n flags: [INPUT_FLAG, IDEMPOTENCY_FLAG],\n examples: [\n `brew-cli contacts delete-many --input '{\"emails\":[\"a@x.com\",\"b@x.com\"]}' --yes`,\n 'cat emails.json | brew-cli contacts delete-many --input - --yes',\n ],\n confirmSummary: ({ flags }) => {\n const count = inlineEmailCount(flags.input)\n return count === undefined\n ? 'Delete the contacts listed in --input. This cannot be undone.'\n : `Delete ${count} contact(s). This cannot be undone.`\n },\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n if (base === undefined) {\n throw new CliUsageError('--input is required (JSON or - for stdin).')\n }\n const input = Array.isArray(base) ? { emails: base } : base\n const result = await ctx\n .client()\n .contacts.deleteMany(\n asSdkInput<DeleteManyContactsInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n\nfunction inlineEmailCount(input: unknown): number | undefined {\n if (typeof input !== 'string' || input === '-') {\n return\n }\n try {\n const parsed: unknown = JSON.parse(input)\n if (Array.isArray(parsed)) {\n return parsed.length\n }\n if (\n parsed !== null &&\n typeof parsed === 'object' &&\n Array.isArray((parsed as { emails?: unknown }).emails)\n ) {\n return (parsed as { emails: unknown[] }).emails.length\n }\n } catch {}\n}\n","import { defineCommand } from '../../lib/define-command'\nimport { CliApiError } from '../../lib/errors'\n\nexport const contactsGetCommand = defineCommand({\n path: ['contacts', 'get'],\n summary: 'Fetch one contact by email',\n sdkMethod: null,\n derivedFrom: 'contacts.search',\n route: { method: 'POST', path: '/v1/contacts/search' },\n commandClass: 'read',\n args: [\n {\n name: 'email',\n summary: 'Email address of the contact',\n isRequired: true,\n },\n ],\n examples: ['brew-cli contacts get jane@example.com'],\n run: async ({ ctx, args }) => {\n const email = args.email ?? ''\n const result = await ctx.client().contacts.search({\n filters: [{ field: 'email', operator: 'equals', value: email }],\n limit: 1,\n })\n const contact = result.data[0]\n if (contact === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'CONTACT_NOT_FOUND',\n type: 'not_found',\n message: `No contact found for ${email}`,\n suggestion:\n 'Check the address, or create the contact with `brew-cli contacts upsert`.',\n })\n }\n return { data: contact }\n },\n})\n","import type { ContactsResource } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n parseKeyValues,\n readTextFlag,\n requestOptions,\n} from '../../lib/input'\n\ntype ImportCsvContactsInput = Parameters<ContactsResource['importCsv']>[0]\n\nexport const contactsImportCsvCommand = defineCommand({\n path: ['contacts', 'import-csv'],\n summary: 'Bulk-import contacts from a CSV file or stdin',\n sdkMethod: 'contacts.importCsv',\n route: { method: 'POST', path: '/v1/contacts/import-csv' },\n commandClass: 'write',\n flags: [\n { flag: '--file <path>', summary: 'CSV file to import, or - for stdin' },\n {\n flag: '--mapping <pairs...>',\n summary: 'Column mapping csvColumn=fieldName, repeatable',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli contacts import-csv --file contacts.csv',\n 'cat contacts.csv | brew-cli contacts import-csv --file - --mapping Email=email',\n ],\n run: async ({ ctx, flags }) => {\n const csv = await readTextFlag(ctx, flags.file, '--file')\n if (csv === undefined || csv.trim() === '') {\n throw new CliUsageError(\n '--file is required (a CSV path, or - for stdin).'\n )\n }\n const mapping = parseKeyValues(flags.mapping, '--mapping')\n const result = await ctx.client().contacts.importCsv(\n asSdkInput<ImportCsvContactsInput>({\n csv,\n ...(mapping === undefined ? {} : { mapping }),\n }),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { SearchContactsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n parseFilterFlags,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const contactsSearchCommand = defineCommand({\n path: ['contacts', 'search'],\n summary: 'Search contacts with structured filters (the contacts read)',\n sdkMethod: 'contacts.search',\n route: { method: 'POST', path: '/v1/contacts/search' },\n commandClass: 'read',\n flags: [\n { flag: '--search <text>', summary: 'Free-text search' },\n {\n flag: '--filter <filters...>',\n summary: 'Structured filter field:operator[:value], repeatable',\n },\n { flag: '--audience <audienceId>', summary: 'Scope to one audience' },\n { flag: '--logic <logic>', summary: 'Filter combinator: and | or' },\n { flag: '--sort <field>', summary: 'Sort field' },\n { flag: '--order <order>', summary: 'Sort order: asc | desc' },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli contacts search --filter email:equals:jane@example.com',\n 'brew-cli contacts search --search jane --limit 10',\n 'brew-cli contacts search --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n search: flagString(flags.search),\n filters: parseFilterFlags(flags.filter),\n audienceId: flagString(flags.audience),\n logic: flagString(flags.logic),\n sort: flagString(flags.sort),\n order: flagString(flags.order),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const contacts = ctx.client().contacts\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n contacts.search(\n asSdkInput<SearchContactsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderContacts(rows),\n }\n }\n const result = await contacts.search(asSdkInput<SearchContactsInput>(input))\n return { data: result, human: renderContacts(result.data) }\n },\n})\n\nfunction renderContacts(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No contacts matched.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'email', header: 'EMAIL' },\n { key: 'firstName', header: 'FIRST' },\n { key: 'lastName', header: 'LAST' },\n { key: 'subscribed', header: 'SUBSCRIBED' },\n ])\n}\n","import type { PatchContactInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n parseKeyValues,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const contactsUpdateCommand = defineCommand({\n path: ['contacts', 'update'],\n summary: 'Partially update one contact (PATCH; never retried)',\n sdkMethod: 'contacts.patch',\n route: { method: 'PATCH', path: '/v1/contacts/{email}' },\n commandClass: 'write',\n args: [\n {\n name: 'email',\n summary: 'Email address of the contact',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--first-name <name>', summary: 'First name' },\n { flag: '--last-name <name>', summary: 'Last name' },\n {\n flag: '--subscribed <bool>',\n summary: 'Subscription state: true | false',\n },\n { flag: '--set <pairs...>', summary: 'Field key=value, repeatable' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli contacts update jane@example.com --first-name Jane',\n 'brew-cli contacts update j@x.com --set plan=enterprise',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const fields = mergeInput(base, {\n firstName: flagString(flags.firstName),\n lastName: flagString(flags.lastName),\n subscribed: parseBool(flags.subscribed),\n ...(parseKeyValues(flags.set, '--set') ?? {}),\n })\n if (Object.keys(fields).length === 0) {\n throw new CliUsageError('Nothing to update — pass flags or --input.')\n }\n const result = await ctx.client().contacts.patch(\n asSdkInput<PatchContactInput>({\n email: args.email ?? '',\n fields,\n })\n )\n return { data: result }\n },\n})\n\nfunction parseBool(value: unknown): boolean | undefined {\n if (value === 'true') {\n return true\n }\n if (value === 'false') {\n return false\n }\n if (value === undefined) {\n return\n }\n throw new CliUsageError('--subscribed must be true or false')\n}\n","import type { UpsertContactInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n parseKeyValues,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contactsUpsertCommand = defineCommand({\n path: ['contacts', 'upsert'],\n summary: 'Create or update one contact by email',\n sdkMethod: 'contacts.upsert',\n route: { method: 'POST', path: '/v1/contacts' },\n commandClass: 'write',\n flags: [\n { flag: '--email <email>', summary: 'Email address (the identity)' },\n { flag: '--first-name <name>', summary: 'First name' },\n { flag: '--last-name <name>', summary: 'Last name' },\n {\n flag: '--subscribed <bool>',\n summary: 'Subscription state: true | false',\n },\n {\n flag: '--custom <pairs...>',\n summary: 'Custom field key=value, repeatable',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli contacts upsert --email jane@example.com --first-name Jane',\n 'brew-cli contacts upsert --email j@x.com --custom plan=pro --custom seats=4',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n email: flagString(flags.email),\n firstName: flagString(flags.firstName),\n lastName: flagString(flags.lastName),\n subscribed: parseBool(flags.subscribed),\n customFields: parseKeyValues(flags.custom, '--custom'),\n })\n if (typeof input.email !== 'string' || input.email === '') {\n throw new CliUsageError('An email is required (--email or --input).')\n }\n const result = await ctx\n .client()\n .contacts.upsert(\n asSdkInput<UpsertContactInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n\nfunction parseBool(value: unknown): boolean | undefined {\n if (value === 'true') {\n return true\n }\n if (value === 'false') {\n return false\n }\n if (value === undefined) {\n return\n }\n throw new CliUsageError('--subscribed must be true or false')\n}\n","import type { UpsertManyContactsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contactsUpsertManyCommand = defineCommand({\n path: ['contacts', 'upsert-many'],\n summary: 'Create or update a batch of contacts (up to 100 per call)',\n sdkMethod: 'contacts.upsertMany',\n route: { method: 'POST', path: '/v1/contacts' },\n commandClass: 'write',\n flags: [INPUT_FLAG, IDEMPOTENCY_FLAG],\n examples: [\n `brew-cli contacts upsert-many --input '{\"contacts\":[{\"email\":\"a@x.com\"}]}'`,\n 'cat contacts.json | brew-cli contacts upsert-many --input -',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n if (base === undefined) {\n throw new CliUsageError('--input is required (JSON or - for stdin).')\n }\n const input = Array.isArray(base) ? { contacts: base } : base\n const result = await ctx\n .client()\n .contacts.upsertMany(\n asSdkInput<UpsertManyContactsInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContactsResource } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\ntype ValidateContactsInput = Parameters<ContactsResource['validate']>[0]\n\nexport const contactsValidateCommand = defineCommand({\n path: ['contacts', 'validate'],\n summary: 'Batch-validate email deliverability (no contacts created)',\n sdkMethod: 'contacts.validate',\n route: { method: 'POST', path: '/v1/contacts/validate' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n {\n flag: '--emails <emails...>',\n summary: 'Email address(es) to validate, repeatable',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli contacts validate --emails jane@example.com bob@example.com',\n `brew-cli contacts validate --input '{\"emails\":[\"jane@example.com\"]}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const fromFlags = toStringArray(flags.emails)\n const input =\n fromFlags === undefined\n ? Array.isArray(base)\n ? { emails: base }\n : base\n : { emails: fromFlags }\n if (input === undefined) {\n throw new CliUsageError('Pass --emails or --input.')\n }\n const result = await ctx\n .client()\n .contacts.validate(\n asSdkInput<ValidateContactsInput>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContentAddImageRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentAddImageCommand = defineCommand({\n path: ['content', 'add-image'],\n summary: 'Mirror an external image onto Brew-hosted storage',\n sdkMethod: 'content.addImage',\n route: { method: 'POST', path: '/v1/content/add-image' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--url <url>', summary: 'Image URL to mirror' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content add-image --url https://cdn.example.com/logo.png',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n imageUrl: flagString(flags.url),\n })\n if (typeof input.imageUrl !== 'string' || input.imageUrl === '') {\n throw new CliUsageError('An image URL is required (--url or --input).')\n }\n const result = await ctx\n .client()\n .content.addImage(\n asSdkInput<ContentAddImageRequest>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContentGenerateImageRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentGenerateImageCommand = defineCommand({\n path: ['content', 'generate-image'],\n summary: 'Generate or edit an image from a prompt',\n sdkMethod: 'content.generateImage',\n route: { method: 'POST', path: '/v1/content/generate-image' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--prompt <text>', summary: 'What to generate' },\n { flag: '--mode <mode>', summary: 'text-to-image | image-editing' },\n {\n flag: '--aspect-ratio <ratio>',\n summary: 'e.g. 16:9, 3:2, 1:1, 9:16',\n },\n { flag: '--model <model>', summary: 'Image model override' },\n { flag: '--image1 <url>', summary: 'Source image for image-editing' },\n {\n flag: '--image2 <url>',\n summary: 'Second source image for image-editing',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content generate-image --prompt \"hero shot of a ceramic mug\" --aspect-ratio 16:9',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n prompt: flagString(flags.prompt),\n mode: flagString(flags.mode),\n aspectRatio: flagString(flags.aspectRatio),\n model: flagString(flags.model),\n image1: flagString(flags.image1),\n image2: flagString(flags.image2),\n })\n if (typeof input.prompt !== 'string' || input.prompt === '') {\n throw new CliUsageError('A prompt is required (--prompt or --input).')\n }\n const result = await ctx\n .client()\n .content.generateImage(\n asSdkInput<ContentGenerateImageRequest>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContentGifRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentGifCommand = defineCommand({\n path: ['content', 'gif'],\n summary: 'Create an animated GIF from a prompt, image, or video',\n sdkMethod: 'content.gif',\n route: { method: 'POST', path: '/v1/content/gif' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--from <source>', summary: 'prompt | image | video' },\n { flag: '--prompt <text>', summary: 'What to animate' },\n { flag: '--image-url <url>', summary: 'Source image (from: image)' },\n { flag: '--video-url <url>', summary: 'Source video (from: video)' },\n { flag: '--duration <seconds>', summary: 'Clip duration in seconds' },\n { flag: '--fps <n>', summary: 'Frames per second' },\n {\n flag: '--aspect-ratio <ratio>',\n summary: 'e.g. 16:9, 1:1, 9:16',\n },\n { flag: '--loop <bool>', summary: 'Loop the GIF: true | false' },\n { flag: '--width <n>', summary: 'Output width (from: video)' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content gif --prompt \"steam rising from a coffee cup\"',\n 'brew-cli content gif --image-url https://cdn.example.com/mug.png --prompt \"gentle zoom\"',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n from: flagString(flags.from),\n prompt: flagString(flags.prompt),\n imageUrl: flagString(flags.imageUrl),\n videoUrl: flagString(flags.videoUrl),\n duration: flagNumber(flags.duration, '--duration'),\n fps: flagInt(flags.fps, '--fps'),\n aspectRatio: flagString(flags.aspectRatio),\n loop: parseBool(flags.loop),\n width: flagInt(flags.width, '--width'),\n })\n // The API requires the `from` discriminator; infer it from the source\n // that was provided so the obvious invocations just work.\n if (input.from === undefined) {\n if (typeof input.videoUrl === 'string') {\n input.from = 'video'\n } else if (typeof input.imageUrl === 'string') {\n input.from = 'image'\n } else if (typeof input.prompt === 'string') {\n input.from = 'prompt'\n }\n }\n if (input.from === undefined) {\n throw new CliUsageError(\n 'Pass --prompt, --image-url, or --video-url (or --input).'\n )\n }\n const result = await ctx\n .client()\n .content.gif(asSdkInput<ContentGifRequest>(input), requestOptions(flags))\n return { data: result }\n },\n})\n\nfunction parseBool(value: unknown): boolean | undefined {\n if (value === 'true') {\n return true\n }\n if (value === 'false') {\n return false\n }\n if (value === undefined) {\n return\n }\n throw new CliUsageError('--loop must be true or false')\n}\n\nfunction flagNumber(value: unknown, flagName: string): number | undefined {\n if (value === undefined) {\n return\n }\n const parsed = Number(value)\n if (!Number.isFinite(parsed) || parsed <= 0) {\n throw new CliUsageError(`${flagName} must be a positive number`)\n }\n return parsed\n}\n","import type { ContentHtmlToPngRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagInt,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n readTextFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentHtmlToPngCommand = defineCommand({\n path: ['content', 'html-to-png'],\n summary: 'Render HTML to a hosted PNG',\n sdkMethod: 'content.htmlToPng',\n route: { method: 'POST', path: '/v1/content/html-to-png' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n {\n flag: '--file <path>',\n summary: 'HTML file to render, or - for stdin',\n },\n { flag: '--width <n>', summary: 'Viewport width in pixels' },\n { flag: '--max-height <n>', summary: 'Clip the render at this height' },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content html-to-png --file email.html --width 600',\n 'cat snippet.html | brew-cli content html-to-png --file -',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const html = await readTextFlag(ctx, flags.file, '--file')\n const input = mergeInput(base, {\n html,\n width: flagInt(flags.width, '--width'),\n maxHeight: flagInt(flags.maxHeight, '--max-height'),\n })\n if (typeof input.html !== 'string' || input.html === '') {\n throw new CliUsageError('HTML is required (--file <path|-> or --input).')\n }\n const result = await ctx\n .client()\n .content.htmlToPng(\n asSdkInput<ContentHtmlToPngRequest>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { ContentTransformRequest } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const contentTransformCommand = defineCommand({\n path: ['content', 'transform'],\n summary: 'Optimize or resize a hosted image',\n sdkMethod: 'content.transform',\n route: { method: 'POST', path: '/v1/content/transform' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--url <url>', summary: 'Image URL to transform' },\n {\n flag: '--operation <op>',\n summary: 'optimize | resize (default: optimize)',\n },\n { flag: '--width <n>', summary: 'Target width (resize)' },\n { flag: '--height <n>', summary: 'Target height (resize)' },\n { flag: '--prompt <text>', summary: 'Guidance for the resize' },\n { flag: '--resolution <res>', summary: '1K | 2K | 4K (resize)' },\n {\n flag: '--output-format <format>',\n summary: 'png | jpeg | webp (resize)',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli content transform --url https://cdn.example.com/hero.png',\n 'brew-cli content transform --url https://cdn.example.com/hero.png --operation resize --width 1200 --height 630',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n operation: flagString(flags.operation),\n imageUrl: flagString(flags.url),\n width: flagInt(flags.width, '--width'),\n height: flagInt(flags.height, '--height'),\n prompt: flagString(flags.prompt),\n resolution: flagString(flags.resolution),\n outputFormat: flagString(flags.outputFormat),\n })\n if (typeof input.imageUrl !== 'string' || input.imageUrl === '') {\n throw new CliUsageError('An image URL is required (--url or --input).')\n }\n // The API requires the `operation` discriminator. Resize knobs imply\n // resize; the bare-URL case defaults to optimize (which accepts no\n // other fields on the strict schema).\n if (input.operation === undefined) {\n const hasResizeKnobs = [\n input.width,\n input.height,\n input.prompt,\n input.resolution,\n input.outputFormat,\n ].some((value) => value !== undefined)\n input.operation = hasResizeKnobs ? 'resize' : 'optimize'\n }\n const result = await ctx\n .client()\n .content.transform(\n asSdkInput<ContentTransformRequest>(input),\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { components } from '../../generated/openapi-types'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport { INPUT_FLAG, mergeInput, readJsonFlag } from '../../lib/input'\nimport { rawRequest } from '../../lib/raw-request'\n\ntype ContractInferResponse =\n components['schemas']['PayloadContractInferResponse']\n\nexport const contractsInferCommand = defineCommand({\n path: ['contracts', 'infer'],\n summary:\n 'Draft a payload contract from a real example payload — nothing is saved; PUT the draft on a trigger',\n sdkMethod: null,\n isRawTransport: true,\n route: { method: 'POST', path: '/v1/payload-contracts/infer' },\n commandClass: 'read',\n flags: [INPUT_FLAG],\n examples: [\n `brew-cli contracts infer --input '{\"email\":\"jane@example.com\",\"order\":{\"total\":9.5}}'`,\n ],\n // Accepts either the bare example object or `{ example: {...} }`.\n // Un-inferable spots (nulls, empty arrays) come back under `issues`.\n run: async ({ ctx, flags }) => {\n const input = mergeInput(\n await readJsonFlag(ctx, flags.input, '--input'),\n {}\n )\n const example = input.example ?? input\n if (\n typeof example !== 'object' ||\n example === null ||\n Array.isArray(example) ||\n Object.keys(example).length === 0\n ) {\n throw new CliUsageError(\n '--input with a non-empty example object is required (the JSON your system sends).'\n )\n }\n const body = await rawRequest<ContractInferResponse>(ctx, {\n method: 'POST',\n path: '/v1/payload-contracts/infer',\n body: { example },\n })\n return { data: body }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\n/**\n * `brew-cli data run '<command>'` — the unified `db …` surface over the\n * brand's data (POST /v1/data): find/agg with --since/--until time\n * ranges + policy-gated writes, composable with jq/grep/sort pipes\n * inside the sandbox. Start with `db ls` and `db schema <table>`.\n *\n * A failed COMMAND is a normal HTTP 200 with `exitCode !== 0` and the\n * message in `output` — the command prints it and exits non-zero so\n * shell scripts compose.\n */\nexport const dataRunCommand = defineCommand({\n path: ['data', 'run'],\n summary: \"Run a `db …` command over the brand's data\",\n sdkMethod: 'data.run',\n route: { method: 'POST', path: '/v1/data' },\n commandClass: 'read',\n args: [\n {\n name: 'command',\n summary: \"The db command line, e.g. 'db find audiences --fields name'\",\n isRequired: true,\n },\n ],\n flags: [],\n examples: [\n \"brew-cli data run 'db ls'\",\n \"brew-cli data run 'db find contacts --since 30d --fields email --limit 20'\",\n \"brew-cli data run 'db agg analyticsEvents --since 7d --group-by eventType --bucket day'\",\n ],\n run: async ({ ctx, args }) => {\n const result = await ctx.client().data.run({\n command: args.command ?? '',\n })\n return {\n data: result,\n human: result.output,\n exitCode: result.exitCode === 0 ? 0 : 1,\n }\n },\n})\n","import type { HttpMethod } from './lib/define-command'\n\n/**\n * The two parity sentinels read these lists. Every entry is a deliberate,\n * reviewed decision — parity tests fail on anything unaccounted for, and\n * on entries that go stale (e.g. after an SDK upgrade closes a gap).\n */\n\nexport type SdkSkip = {\n /** Dotted SDK client path, e.g. `contacts.searchAll`. */\n readonly sdkPath: string\n readonly reason: string\n}\n\nexport type SpecSkip = {\n readonly method: HttpMethod\n readonly path: string\n readonly reason: string\n}\n\n/** SDK methods that intentionally have no dedicated CLI command. */\nexport const SDK_SKIP_LIST: readonly SdkSkip[] = [\n {\n sdkPath: 'automations.triggers.getContract',\n reason:\n 'covered by `automations triggers contract get` (raw route, bound pre-SDK-v9; SDK-method migration tracked separately)',\n },\n {\n sdkPath: 'automations.triggers.putContract',\n reason:\n 'covered by `automations triggers contract put` (raw route, bound pre-SDK-v9)',\n },\n {\n sdkPath: 'automations.triggers.validatePayload',\n reason:\n 'covered by `automations triggers contract validate` (raw route, bound pre-SDK-v9)',\n },\n {\n sdkPath: 'payloadContracts.infer',\n reason: 'covered by `contracts infer` (raw route, bound pre-SDK-v9)',\n },\n {\n sdkPath: 'contacts.searchAll',\n reason: 'auto-pager covered by `contacts search --all`',\n },\n {\n sdkPath: 'analytics.eventsAll',\n reason: 'auto-pager covered by `analytics events --all`',\n },\n {\n sdkPath: 'analytics.sends.listAll',\n reason: 'auto-pager covered by `analytics sends list --all`',\n },\n {\n sdkPath: 'analytics.triggerInstances.listAll',\n reason: 'auto-pager covered by `analytics trigger-instances list --all`',\n },\n {\n sdkPath: 'brand.update',\n reason: 'SDK alias of brand.patch, exposed as `brand update`',\n },\n {\n sdkPath: 'withBrand',\n reason:\n 'client scoping helper activated by the global `--brand`; not an API command',\n },\n]\n\n/**\n * Spec operations with no CLI command yet. Kept exact: the parity test\n * fails if one of these gains SDK support without gaining a command.\n */\nexport const SPEC_SKIP_LIST: readonly SpecSkip[] = []\n","import { ALL_COMMANDS } from '../registry'\nimport { SDK_SKIP_LIST, SPEC_SKIP_LIST } from '../skip-list'\nimport { CLI_NAME, CLI_VERSION } from '../version'\nimport { GLOBAL_FLAGS } from './define-command'\n\n/**\n * The machine-readable surface contract printed by `brew-cli docs --agent`.\n * Additive-only: tests snapshot this shape, so removals or renames are\n * breaking changes by construction.\n */\nexport function buildManifest(): Record<string, unknown> {\n return {\n name: CLI_NAME,\n version: CLI_VERSION,\n baseUrlDefault: 'https://brew.new/api',\n env: {\n BREW_API_KEY: 'API key (overrides stored login; flags override both)',\n BREW_BRAND_ID: 'Brand id for organization-scoped keys',\n BREW_API_URL: 'API base URL',\n BREW_CLI_CONFIG_DIR: 'Config directory (default ~/.config/brew-cli)',\n },\n exitCodes: {\n '0': 'success',\n '1': 'API or runtime error',\n '2': 'usage error',\n '3': 'authentication error',\n '4': 'confirmation required (re-run with --yes)',\n },\n confirmationProtocol: {\n exitCode: 4,\n envelope: [\n 'confirmationRequired',\n 'command',\n 'summary',\n 'confirmCommand',\n ],\n override: '--yes',\n },\n globalFlags: GLOBAL_FLAGS.map((flag) => ({\n flag: flag.flag,\n summary: flag.summary,\n })),\n commands: ALL_COMMANDS.map((spec) => ({\n command: [CLI_NAME, ...spec.path].join(' '),\n summary: spec.summary,\n class: spec.commandClass,\n ...(spec.isCredited === true ? { credited: true } : {}),\n sdkMethod: spec.sdkMethod,\n ...(spec.isRawTransport === true ? { transport: 'raw' } : {}),\n ...(spec.derivedFrom === undefined\n ? {}\n : { derivedFrom: spec.derivedFrom }),\n ...(spec.route === undefined\n ? {}\n : { route: `${spec.route.method} ${spec.route.path}` }),\n args: (spec.args ?? []).map((arg) => ({\n name: arg.name,\n summary: arg.summary,\n required: arg.isRequired,\n })),\n flags: (spec.flags ?? []).map((flag) => ({\n flag: flag.flag,\n summary: flag.summary,\n })),\n confirmation: spec.confirmSummary !== undefined,\n examples: spec.examples,\n })),\n skips: {\n sdk: SDK_SKIP_LIST,\n spec: SPEC_SKIP_LIST,\n },\n }\n}\n","import { defineCommand } from '../lib/define-command'\nimport { buildManifest } from '../lib/manifest'\n\nconst DOCS_POINTERS = {\n documentation: 'https://docs.getbrew.io',\n openapiSpec: 'https://brew.new/openapi/public-api-v1.yaml',\n agentGuide: 'https://brew.new/api/v1/llms.txt',\n apiCatalog: 'https://brew.new/api/v1/help',\n createApiKeys: 'https://brew.new/settings/api',\n}\n\nexport const docsCommand = defineCommand({\n path: ['docs'],\n summary: 'Documentation pointers; --agent prints the command manifest',\n sdkMethod: null,\n commandClass: 'read',\n flags: [\n {\n flag: '--agent',\n summary: 'Print the machine-readable manifest of every command',\n },\n ],\n examples: ['brew-cli docs', 'brew-cli docs --agent'],\n run: async ({ flags }) => {\n if (flags.agent === true) {\n return { data: buildManifest() }\n }\n return {\n data: DOCS_POINTERS,\n human: Object.entries(DOCS_POINTERS)\n .map(([key, url]) => `${key.padEnd(16)} ${url}`)\n .join('\\n'),\n }\n },\n})\n\nexport const docsApiCommand = defineCommand({\n path: ['docs', 'api'],\n summary: 'Fetch the live machine-readable API catalog (GET /v1/help)',\n sdkMethod: 'help.get',\n route: { method: 'GET', path: '/v1/help' },\n commandClass: 'read',\n examples: ['brew-cli docs api --json'],\n run: async ({ ctx }) => ({\n data: await ctx.client({ allowAnonymous: true }).help.get(),\n }),\n})\n","import { BrewApiError } from '@brew.new/sdk'\nimport { maskApiKey, resolveAuth } from '../lib/client'\nimport { defineCommand } from '../lib/define-command'\nimport { CliApiError } from '../lib/errors'\nimport { ALL_COMMANDS } from '../registry'\n\n/** Discovery endpoints without a dedicated command route. */\nconst NON_COMMAND_OPS = new Set(['GET /v1/llms.txt'])\n\nexport const doctorCommand = defineCommand({\n path: ['doctor'],\n summary:\n 'Trust check: auth, API reachability, and installed-CLI vs live-API drift',\n sdkMethod: null,\n commandClass: 'read',\n examples: ['brew-cli doctor', 'brew-cli doctor --json'],\n run: async ({ ctx }) => {\n const auth = resolveAuth({\n globals: ctx.globals,\n env: ctx.io.env,\n allowAnonymous: true,\n })\n const isKeyPresent = auth.apiKeySource !== 'anonymous'\n const anonymous = ctx.client({ allowAnonymous: true })\n\n let isReachable = false\n let apiVersion: string | null = null\n let reachabilityError: string | null = null\n try {\n const health = (await anonymous.health.get()) as {\n status?: string\n version?: string\n }\n isReachable = health.status === 'ok'\n apiVersion = health.version ?? null\n } catch (error) {\n reachabilityError = error instanceof Error ? error.message : String(error)\n }\n\n let isAuthValid: boolean | null = null\n let plan: string | null = null\n if (isKeyPresent && isReachable) {\n try {\n const usage = (await ctx.client().usage.get()) as {\n plan?: { key?: string }\n }\n isAuthValid = true\n plan = usage.plan?.key ?? null\n } catch (error) {\n if (\n (error instanceof BrewApiError || error instanceof CliApiError) &&\n (error.status === 401 || error.status === 403)\n ) {\n isAuthValid = false\n }\n // Other failures leave auth unknown; reachability already reported.\n }\n }\n\n let missingLocally: readonly string[] = []\n let extraLocally: readonly string[] = []\n let isSurfaceChecked = false\n if (isReachable) {\n try {\n const help = (await anonymous.help.get()) as {\n endpoints?: ReadonlyArray<{ method?: string; path?: string }>\n }\n const liveOps = new Set(\n (help.endpoints ?? [])\n .filter((e) => e.method !== undefined && e.path !== undefined)\n .map((e) => `${e.method} ${e.path}`)\n )\n const localOps = new Set(\n ALL_COMMANDS.flatMap((spec) =>\n spec.route === undefined\n ? []\n : [`${spec.route.method} ${spec.route.path}`]\n )\n )\n missingLocally = [...liveOps].filter(\n (op) => !(localOps.has(op) || NON_COMMAND_OPS.has(op))\n )\n extraLocally = [...localOps].filter((op) => !liveOps.has(op))\n isSurfaceChecked = true\n } catch {\n // /v1/help unavailable — surface check stays unperformed.\n }\n }\n\n const isHealthy =\n isReachable &&\n isAuthValid !== false &&\n isSurfaceChecked &&\n missingLocally.length === 0\n const data = {\n ok: isHealthy,\n apiUrl: auth.apiUrl,\n apiVersion,\n reachable: isReachable,\n ...(reachabilityError === null ? {} : { reachabilityError }),\n apiKey: isKeyPresent ? maskApiKey(auth.apiKey) : null,\n apiKeySource: isKeyPresent ? auth.apiKeySource : null,\n authValid: isAuthValid,\n plan,\n brandId: auth.brandId ?? null,\n surface: {\n checked: isSurfaceChecked,\n commands: ALL_COMMANDS.length,\n missingLocally,\n extraLocally,\n },\n }\n const lines = [\n `${isReachable ? 'ok' : 'FAIL'} api ${auth.apiUrl} (${apiVersion ?? 'unreachable'})`,\n isKeyPresent\n ? `${isAuthValid === false ? 'FAIL' : isAuthValid === true ? 'ok' : '??'} auth ${maskApiKey(auth.apiKey)} via ${auth.apiKeySource}${plan === null ? '' : ` (${plan} plan)`}`\n : '-- no API key (run `brew-cli login` or set BREW_API_KEY)',\n isSurfaceChecked\n ? missingLocally.length === 0\n ? `ok surface in sync (${ALL_COMMANDS.length} commands cover the live API)`\n : `DRIFT live API has ${missingLocally.length} operation(s) this CLI lacks — update @brew.new/cli:\\n${missingLocally.map((op) => ` ${op}`).join('\\n')}`\n : '-- surface not checked (API unreachable)',\n ...(extraLocally.length > 0\n ? [\n `note ${extraLocally.length} local command route(s) unknown to this server (server behind the CLI?)`,\n ]\n : []),\n ]\n return {\n data,\n human: lines.join('\\n'),\n exitCode: isHealthy ? 0 : 1,\n }\n },\n})\n","import type { AddDomainInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const domainsAddCommand = defineCommand({\n path: ['domains', 'add'],\n summary: 'Add a sending domain (response lists the DNS records to set)',\n sdkMethod: 'domains.add',\n route: { method: 'POST', path: '/v1/domains' },\n commandClass: 'write',\n args: [\n {\n name: 'domain',\n summary: 'Domain name to add (e.g. mail.example.com)',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--region <region>', summary: 'Sending region (us-east-1)' },\n {\n flag: '--custom-return-path <subdomain>',\n summary: 'Custom Return-Path subdomain',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: ['brew-cli domains add mail.example.com'],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n name: args.domain,\n region: flagString(flags.region),\n customReturnPath: flagString(flags.customReturnPath),\n })\n const result = await ctx\n .client()\n .domains.add(asSdkInput<AddDomainInput>(input), requestOptions(flags))\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const domainsDeleteCommand = defineCommand({\n path: ['domains', 'delete'],\n summary: 'Delete a sending domain',\n sdkMethod: 'domains.delete',\n route: { method: 'DELETE', path: '/v1/domains/{domainId}' },\n commandClass: 'destructive',\n args: [\n { name: 'domainId', summary: 'Domain id to delete', isRequired: true },\n ],\n examples: ['brew-cli domains delete dom_8s1Kj --yes'],\n confirmSummary: ({ args }) =>\n `Delete sending domain ${args.domainId ?? ''}. Future sends from it will fail until it is re-added and re-verified. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().domains.delete({ domainId: args.domainId ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { CliApiError } from '../../lib/errors'\n\nexport const domainsGetCommand = defineCommand({\n path: ['domains', 'get'],\n summary: 'Fetch one sending domain by id',\n sdkMethod: null,\n derivedFrom: 'domains.list',\n route: { method: 'GET', path: '/v1/domains' },\n commandClass: 'read',\n args: [{ name: 'domainId', summary: 'Domain id to fetch', isRequired: true }],\n examples: ['brew-cli domains get dom_3k9sQ'],\n run: async ({ ctx, args }) => {\n const domainId = args.domainId ?? ''\n const result = await ctx.client().domains.list({ domainId })\n const domain = result.data[0]\n if (domain === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'DOMAIN_NOT_FOUND',\n type: 'not_found',\n message: `No domain found for ${domainId}`,\n suggestion: 'List domains with `brew-cli domains list`.',\n })\n }\n return { data: domain }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const domainsHealthCommand = defineCommand({\n path: ['domains', 'health'],\n summary: 'Deliverability health: verdict, signals, DNS/auth, reputation',\n sdkMethod: 'domains.health',\n route: { method: 'GET', path: '/v1/domains/{domainId}/health' },\n commandClass: 'read',\n args: [\n { name: 'domainId', summary: 'Domain id to inspect', isRequired: true },\n ],\n examples: ['brew-cli domains health kx7bkh53hasmfeh5kd7sqgykt187g8ww'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().domains.health({\n domainId: args.domainId ?? '',\n }),\n }),\n})\n","import type { ListDomainsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const domainsListCommand = defineCommand({\n path: ['domains', 'list'],\n summary: 'List sending domains with verification state and DNS records',\n sdkMethod: 'domains.list',\n route: { method: 'GET', path: '/v1/domains' },\n commandClass: 'read',\n flags: [\n {\n flag: '--sendable-only',\n summary: 'Only domains currently able to send',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli domains list',\n 'brew-cli domains list --sendable-only --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n sendableOnly: flags.sendableOnly === true ? true : undefined,\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const domains = ctx.client().domains\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n domains.list(\n asSdkInput<ListDomainsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderDomains(rows),\n }\n }\n const result = await domains.list(asSdkInput<ListDomainsInput>(input))\n return { data: result, human: renderDomains(result.data) }\n },\n})\n\nfunction renderDomains(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No sending domains found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'domainId', header: 'DOMAIN ID' },\n { key: 'name', header: 'NAME' },\n { key: 'status', header: 'STATUS' },\n { key: 'sendable', header: 'SENDABLE' },\n ])\n}\n","import type { UpdateDomainSettingsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\n\nexport const domainsUpdateCommand = defineCommand({\n path: ['domains', 'update'],\n summary: 'Update default sender settings for a domain',\n sdkMethod: 'domains.updateSettings',\n route: { method: 'PATCH', path: '/v1/domains/{domainId}' },\n commandClass: 'write',\n args: [\n { name: 'domainId', summary: 'Domain id to update', isRequired: true },\n ],\n flags: [\n {\n flag: '--default-sender-name <name>',\n summary: 'Default From display name',\n },\n {\n flag: '--default-from-email <email>',\n summary: 'Default From address on this domain',\n },\n {\n flag: '--default-reply-to-email <email>',\n summary: 'Default Reply-To address',\n },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli domains update dom_8s1Kj --default-sender-name \"Brew Coffee\"',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n defaultSenderName: flagString(flags.defaultSenderName),\n defaultFromEmail: flagString(flags.defaultFromEmail),\n defaultReplyToEmail: flagString(flags.defaultReplyToEmail),\n })\n if (Object.keys(input).length === 0) {\n throw new CliUsageError('Nothing to update — pass flags or --input.')\n }\n const result = await ctx.client().domains.updateSettings(\n asSdkInput<UpdateDomainSettingsInput>({\n ...input,\n domainId: args.domainId ?? '',\n })\n )\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const domainsVerifyCommand = defineCommand({\n path: ['domains', 'verify'],\n summary: 'Re-check DNS records and refresh domain verification',\n sdkMethod: 'domains.verify',\n route: { method: 'POST', path: '/v1/domains/{domainId}/verify' },\n commandClass: 'write',\n args: [\n { name: 'domainId', summary: 'Domain id to verify', isRequired: true },\n ],\n examples: ['brew-cli domains verify dom_8s1Kj'],\n run: async ({ ctx, args }) => ({\n data: await ctx.client().domains.verify({ domainId: args.domainId ?? '' }),\n }),\n})\n","import {\n AUDIT_EMAIL_DEFAULT_TIMEOUT_MS,\n type AuditEmailInput,\n} from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n readTextFlag,\n requestOptions,\n} from '../../lib/input'\n\nconst SENDING_PURPOSES = new Set(['marketing', 'transactional'])\n\nexport { AUDIT_EMAIL_DEFAULT_TIMEOUT_MS }\n\nfunction optionalText(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined\n}\n\nexport const emailsAuditCommand = defineCommand({\n path: ['emails', 'audit'],\n summary:\n 'Audit raw email content for production readiness (5 credits when complete)',\n sdkMethod: 'emails.auditEmail',\n route: { method: 'POST', path: '/v1/emails/audit' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n {\n flag: '--file <path>',\n summary: 'Email HTML file to audit, or - for stdin',\n },\n { flag: '--subject <text>', summary: 'Inbox subject line' },\n {\n flag: '--preview-text <text>',\n summary: 'Inbox preview text; an explicit empty value stays empty',\n },\n {\n flag: '--sending-purpose <purpose>',\n summary: 'marketing | transactional (default: marketing)',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails audit --file newsletter.html --subject \"August update\" --sending-purpose marketing',\n 'cat email.html | brew-cli emails audit --file - --subject \"Receipt\" --sending-purpose transactional',\n `brew-cli emails audit --input '{\"emailHtml\":\"<p>Hello</p>\",\"subject\":\"Hello\"}'`,\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const emailHtml = await readTextFlag(ctx, flags.file, '--file')\n const sendingPurpose = flagString(flags.sendingPurpose)\n if (sendingPurpose !== undefined && !SENDING_PURPOSES.has(sendingPurpose)) {\n throw new CliUsageError(\n `Unknown --sending-purpose '${sendingPurpose}' (expected marketing | transactional).`\n )\n }\n const input = mergeInput(base, {\n emailHtml,\n subject: optionalText(flags.subject),\n previewText: optionalText(flags.previewText),\n sendingPurpose,\n })\n if (typeof input.emailHtml !== 'string' || input.emailHtml.trim() === '') {\n throw new CliUsageError(\n '--file is required (a path, or - for stdin), or emailHtml via --input.'\n )\n }\n const signal = AbortSignal.timeout(AUDIT_EMAIL_DEFAULT_TIMEOUT_MS)\n try {\n const result = await ctx\n .client()\n .emails.auditEmail(asSdkInput<AuditEmailInput>(input), {\n signal,\n ...(requestOptions(flags) ?? {}),\n })\n return { data: result }\n } catch (error) {\n if (signal.aborted) {\n throw signal.reason\n }\n throw error\n }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n} from '../../lib/input'\n\ntype CloneEmailInput = Parameters<BrewClient['emails']['clone']>[0]\n\nexport const emailsCloneCommand = defineCommand({\n path: ['emails', 'clone'],\n summary: 'Clone a design into a new one (exact snapshot copy, no AI)',\n sdkMethod: 'emails.clone',\n route: { method: 'POST', path: '/v1/emails/{emailId}/clone' },\n commandClass: 'write',\n args: [{ name: 'emailId', summary: 'Design id to clone', isRequired: true }],\n flags: [\n {\n flag: '--email-version-id <id>',\n summary: 'Exact source version to clone (default: latest)',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails clone eml_2SmZOWV3ZQ7W5x6g3m4p',\n 'brew-cli emails clone eml_2SmZOWV3ZQ7W5x6g3m4p --email-version-id emv_9f2kX',\n ],\n run: async ({ ctx, args, flags }) => {\n const emailVersionId = flagString(flags.emailVersionId)\n return {\n data: await ctx.client().emails.clone(\n asSdkInput<CloneEmailInput>({\n emailId: args.emailId ?? '',\n ...(emailVersionId === undefined ? {} : { emailVersionId }),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\ntype CreateInboxPlacementTestInput = Parameters<\n BrewClient['emails']['createInboxPlacementTest']\n>[0]\n\nexport const emailsCreateInboxPlacementTestCommand = defineCommand({\n path: ['emails', 'create-inbox-placement-test'],\n summary:\n 'Seed-test where the design lands (inbox vs spam) via a real small send (10 credits)',\n sdkMethod: 'emails.createInboxPlacementTest',\n route: { method: 'POST', path: '/v1/emails/{emailId}/inbox-placement-tests' },\n commandClass: 'write',\n isCredited: true,\n args: [{ name: 'emailId', summary: 'Design id to test', isRequired: true }],\n flags: [\n {\n flag: '--domain <domainId>',\n summary: 'Verified sending domain id the seed send goes out on',\n },\n {\n flag: '--subject <text>',\n summary: 'Seed-send subject (default: the email title)',\n },\n {\n flag: '--preview-text <text>',\n summary: 'Preheader override for this test',\n },\n {\n flag: '--email-version-id <id>',\n summary: 'Pin a specific design version (default: latest)',\n },\n {\n flag: '--providers <domains...>',\n summary:\n 'Restrict seed mailbox providers, repeatable (e.g. gmail.com outlook.com)',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails create-inbox-placement-test eml_2SmZOWV3ZQ7W5x6g3m4p --domain kx7bkh53hasmfeh5kd7sqgykt187g8ww',\n 'brew-cli emails create-inbox-placement-test eml_2SmZOWV3ZQ7W5x6g3m4p --domain kx7bkh53hasmfeh5kd7sqgykt187g8ww --subject \"Variant B\" --providers gmail.com outlook.com',\n ],\n run: async ({ ctx, args, flags }) => {\n const domainId = flagString(flags.domain)\n if (domainId === undefined) {\n throw new CliUsageError(\n '--domain is required (a verified sending domain id; see `brew-cli domains list`).'\n )\n }\n const subject = flagString(flags.subject)\n const previewText = flagString(flags.previewText)\n const emailVersionId = flagString(flags.emailVersionId)\n const providers = toStringArray(flags.providers)\n return {\n // The API answers 202 with a pending test (status: \"collecting\");\n // poll `emails get-inbox-placement-results --test-id` for the outcome.\n data: await ctx.client().emails.createInboxPlacementTest(\n asSdkInput<CreateInboxPlacementTestInput>({\n emailId: args.emailId ?? '',\n domainId,\n ...(subject === undefined ? {} : { subject }),\n ...(previewText === undefined ? {} : { previewText }),\n ...(emailVersionId === undefined ? {} : { emailVersionId }),\n ...(providers === undefined ? {} : { providers }),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const emailsDeleteCommand = defineCommand({\n path: ['emails', 'delete'],\n summary: 'Hard-delete an email design and all its versions (idempotent)',\n sdkMethod: 'emails.delete',\n route: { method: 'DELETE', path: '/v1/emails/{emailId}' },\n commandClass: 'destructive',\n args: [{ name: 'emailId', summary: 'Design id to delete', isRequired: true }],\n examples: ['brew-cli emails delete eml_2SmZOWV3ZQ7W5x6g3m4p --yes'],\n confirmSummary: ({ args }) =>\n `Hard-delete email design ${args.emailId ?? ''} and ALL its versions. This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().emails.delete({ emailId: args.emailId ?? '' }),\n }),\n})\n","import type { EditEmailInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n toStringArray,\n} from '../../lib/input'\nimport { progress } from '../../lib/output'\n\nexport const emailsEditCommand = defineCommand({\n path: ['emails', 'edit'],\n summary:\n 'AI-edit an email design, and/or set its subject line (subject-only is free)',\n sdkMethod: 'emails.edit',\n route: { method: 'PATCH', path: '/v1/emails/{emailId}' },\n commandClass: 'write',\n isCredited: true,\n args: [{ name: 'emailId', summary: 'Design id to edit', isRequired: true }],\n flags: [\n { flag: '--prompt <text>', summary: 'The edit instruction' },\n {\n flag: '--email-version-id <id>',\n summary: 'Edit from a specific version (default: latest); needs --prompt',\n },\n {\n flag: '--content-urls <urls...>',\n summary: 'Page URL(s) to pull copy and imagery from, repeatable',\n },\n {\n flag: '--subject-line <text>',\n summary:\n \"The design's default inbox subject line; alone it skips the AI run\",\n },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli emails edit eml_2SmZOWV3ZQ7W5x6g3m4p --prompt \"Tighten the hero copy\"',\n 'brew-cli emails edit eml_2SmZOWV3ZQ7W5x6g3m4p --subject-line \"Your September roundup\"',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n prompt: flagString(flags.prompt),\n emailVersionId: flagString(flags.emailVersionId),\n contentUrls: toStringArray(flags.contentUrls),\n subjectLine: flagString(flags.subjectLine),\n })\n const isPromptEdit = typeof input.prompt === 'string' && input.prompt !== ''\n const hasSubjectLine =\n typeof input.subjectLine === 'string' && input.subjectLine !== ''\n if (!(isPromptEdit || hasSubjectLine)) {\n throw new CliUsageError(\n '--prompt or --subject-line is required (or provide either via --input).'\n )\n }\n // Subject-only is a deterministic in-place patch server-side: no AI run,\n // no new version, and no credits — so it returns immediately.\n progress(\n ctx,\n isPromptEdit\n ? 'Editing email… (typically 30-90s)'\n : 'Setting the subject line…'\n )\n const result = await ctx\n .client()\n .emails.edit(\n asSdkInput<EditEmailInput>({ ...input, emailId: args.emailId ?? '' }),\n { timeoutMs: 240_000 }\n )\n return { data: result }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n} from '../../lib/input'\n\ntype ExportEmailInput = Parameters<BrewClient['emails']['export']>[0]\n\nexport const emailsExportCommand = defineCommand({\n path: ['emails', 'export'],\n summary: 'Export a design to a connected ESP as a template (not a send)',\n sdkMethod: 'emails.export',\n route: { method: 'POST', path: '/v1/emails/{emailId}/export' },\n commandClass: 'write',\n args: [{ name: 'emailId', summary: 'Design id to export', isRequired: true }],\n flags: [\n {\n flag: '--provider <provider>',\n summary:\n 'Connected ESP: braze, hubspot, klaviyo, mailchimp, iterable, postmark, onesignal, mailgun, sendgrid',\n },\n {\n flag: '--template-name <name>',\n summary: 'Template name in the ESP (default: the email title)',\n },\n {\n flag: '--dry-run',\n summary:\n 'Validate design, ownership, and ESP connection without creating a template',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails export eml_2SmZOWV3ZQ7W5x6g3m4p --provider klaviyo',\n 'brew-cli emails export eml_2SmZOWV3ZQ7W5x6g3m4p --provider mailchimp --template-name \"Fall sale\" --dry-run',\n ],\n run: async ({ ctx, args, flags }) => {\n const provider = flagString(flags.provider)\n if (provider === undefined) {\n throw new CliUsageError(\n '--provider is required: braze, hubspot, klaviyo, mailchimp, iterable, postmark, onesignal, mailgun, or sendgrid.'\n )\n }\n const templateName = flagString(flags.templateName)\n return {\n data: await ctx.client().emails.export(\n asSdkInput<ExportEmailInput>({\n emailId: args.emailId ?? '',\n provider,\n ...(templateName === undefined ? {} : { templateName }),\n // The spec field is snake_case, unlike the rest of the API surface.\n ...(flags.dryRun === true ? { dry_run: true } : {}),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import type { GenerateEmailInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\nimport { progress } from '../../lib/output'\n\nexport const emailsGenerateCommand = defineCommand({\n path: ['emails', 'generate'],\n summary: 'Generate a new on-brand email design from a prompt',\n sdkMethod: 'emails.generate',\n route: { method: 'POST', path: '/v1/emails' },\n commandClass: 'write',\n isCredited: true,\n flags: [\n { flag: '--prompt <text>', summary: 'What the email should be' },\n {\n flag: '--reference-email-id <emailId>',\n summary: 'Existing design or template to base the layout on',\n },\n {\n flag: '--content-urls <urls...>',\n summary: 'Page URL(s) to pull copy and imagery from, repeatable',\n },\n {\n flag: '--group-id <groupId>',\n summary: 'Destination group id; omit or use ungrouped for Ungrouped',\n },\n {\n flag: '--subject-line <text>',\n summary: \"The design's default inbox subject line\",\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails generate --prompt \"Product-launch email for the fall sale\"',\n 'brew-cli emails generate --prompt \"Welcome email\" --group-id grp_welcome',\n 'brew-cli emails generate --prompt \"Welcome email\" --subject-line \"Welcome to Brew\"',\n 'brew-cli emails generate --prompt \"Welcome email\" --content-urls https://example.com/pricing',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n prompt: flagString(flags.prompt),\n referenceEmailId: flagString(flags.referenceEmailId),\n contentUrls: toStringArray(flags.contentUrls),\n groupId: flagString(flags.groupId),\n subjectLine: flagString(flags.subjectLine),\n })\n if (typeof input.prompt !== 'string' || input.prompt === '') {\n throw new CliUsageError(\n '--prompt is required (or provide it via --input).'\n )\n }\n progress(ctx, 'Generating email… (typically 30-90s)')\n const result = await ctx\n .client()\n .emails.generate(asSdkInput<GenerateEmailInput>(input), {\n timeoutMs: 240_000,\n ...(requestOptions(flags) ?? {}),\n })\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { CliApiError } from '../../lib/errors'\nimport { flagString } from '../../lib/input'\n\nexport const emailsGetCommand = defineCommand({\n path: ['emails', 'get'],\n summary: 'Fetch one email design by id',\n sdkMethod: null,\n derivedFrom: 'emails.list',\n route: { method: 'GET', path: '/v1/emails' },\n commandClass: 'read',\n args: [\n {\n name: 'emailId',\n summary: 'Design id returned by emails generate/import',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--include <tokens>',\n summary: 'Comma-separated expansions: html,versions',\n },\n ],\n examples: [\n 'brew-cli emails get eml_2SmZOWV3ZQ7W5x6g3m4p',\n 'brew-cli emails get eml_2SmZOWV3ZQ7W5x6g3m4p --include html,versions',\n ],\n run: async ({ ctx, args, flags }) => {\n const emailId = args.emailId ?? ''\n const include = flagString(flags.include)\n const result = await ctx.client().emails.list({\n emailId,\n ...(include === undefined ? {} : { include }),\n })\n const email = result.data[0]\n if (email === undefined) {\n throw new CliApiError({\n status: 404,\n code: 'EMAIL_NOT_FOUND',\n type: 'not_found',\n message: `No email design found for ${emailId}`,\n suggestion: 'List designs with `brew-cli emails list`.',\n })\n }\n return { data: email }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { asSdkInput, flagString } from '../../lib/input'\n\ntype GetInboxPlacementResultsInput = Parameters<\n BrewClient['emails']['getInboxPlacementResults']\n>[0]\n\nexport const emailsGetInboxPlacementResultsCommand = defineCommand({\n path: ['emails', 'get-inbox-placement-results'],\n summary:\n 'Inbox placement results: one test with --test-id, else the recent tests',\n sdkMethod: 'emails.getInboxPlacementResults',\n route: { method: 'GET', path: '/v1/emails/{emailId}/inbox-placement-tests' },\n commandClass: 'read',\n args: [\n {\n name: 'emailId',\n summary: 'Design id the tests ran on',\n isRequired: true,\n },\n ],\n flags: [\n {\n flag: '--test-id <id>',\n summary:\n 'One test: live status + per-provider placement (re-poll ~30s until completed)',\n },\n ],\n examples: [\n 'brew-cli emails get-inbox-placement-results eml_2SmZOWV3ZQ7W5x6g3m4p',\n 'brew-cli emails get-inbox-placement-results eml_2SmZOWV3ZQ7W5x6g3m4p --test-id ibp_2f1c9d8a',\n ],\n run: async ({ ctx, args, flags }) => ({\n data: await ctx.client().emails.getInboxPlacementResults(\n asSdkInput<GetInboxPlacementResultsInput>({\n emailId: args.emailId ?? '',\n testId: flagString(flags.testId),\n })\n ),\n }),\n})\n","import type { CreateEmailGroupInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n} from '../../../lib/input'\n\nexport const emailsGroupsCreateCommand = defineCommand({\n path: ['emails', 'groups', 'create'],\n summary: 'Create a named email folder (group)',\n sdkMethod: 'emailGroups.create',\n route: { method: 'POST', path: '/v1/email-groups' },\n commandClass: 'write',\n flags: [\n {\n flag: '--name <name>',\n summary: 'Folder label, 1-60 chars (Ungrouped is reserved)',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: ['brew-cli emails groups create --name Welcome'],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n if (typeof input.name !== 'string' || input.name === '') {\n throw new CliUsageError('--name is required (or provide it via --input).')\n }\n return {\n data: await ctx\n .client()\n .emailGroups.create(\n asSdkInput<CreateEmailGroupInput>(input),\n requestOptions(flags)\n ),\n }\n },\n})\n","import type { DeleteEmailGroupInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { asSdkInput } from '../../../lib/input'\n\nexport const emailsGroupsDeleteCommand = defineCommand({\n path: ['emails', 'groups', 'delete'],\n summary: 'Delete an email folder (group); its emails move to Ungrouped',\n sdkMethod: 'emailGroups.delete',\n route: { method: 'DELETE', path: '/v1/email-groups/{groupId}' },\n commandClass: 'destructive',\n args: [\n {\n name: 'groupId',\n summary: 'Named group id (grp_*); Ungrouped cannot be deleted',\n isRequired: true,\n },\n ],\n examples: ['brew-cli emails groups delete grp_welcome --yes'],\n confirmSummary: ({ args }) =>\n `Delete email group ${args.groupId ?? ''}. Its emails move to Ungrouped; the folder itself cannot be recovered.`,\n run: async ({ ctx, args }) => ({\n data: await ctx\n .client()\n .emailGroups.delete(\n asSdkInput<DeleteEmailGroupInput>({ groupId: args.groupId ?? '' })\n ),\n }),\n})\n","import type { ListEmailGroupsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\nimport { renderTable } from '../../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../../lib/paginate'\n\nexport const emailsGroupsListCommand = defineCommand({\n path: ['emails', 'groups', 'list'],\n summary: 'List email groups in display order, including Ungrouped',\n sdkMethod: 'emailGroups.list',\n route: { method: 'GET', path: '/v1/email-groups' },\n commandClass: 'read',\n flags: [LIMIT_FLAG, CURSOR_FLAG, ALL_FLAG, INPUT_FLAG],\n examples: [\n 'brew-cli emails groups list',\n 'brew-cli emails groups list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const fetchPage = (cursor: string | undefined) =>\n ctx.client().emailGroups.list(\n asSdkInput<ListEmailGroupsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n if (flags.all === true) {\n const rows = await collectAll(ctx, fetchPage)\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderEmailGroups(rows),\n }\n }\n const result = await fetchPage(undefined)\n return { data: result, human: renderEmailGroups(result.data) }\n },\n})\n\nfunction renderEmailGroups(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No email groups found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'groupId', header: 'GROUP ID' },\n { key: 'groupName', header: 'GROUP' },\n ])\n}\n","import type { UpdateEmailGroupInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../../lib/define-command'\nimport { CliUsageError } from '../../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../../lib/input'\n\nexport const emailsGroupsUpdateCommand = defineCommand({\n path: ['emails', 'groups', 'update'],\n summary: 'Rename an email folder (group)',\n sdkMethod: 'emailGroups.update',\n route: { method: 'PATCH', path: '/v1/email-groups/{groupId}' },\n commandClass: 'write',\n args: [\n {\n name: 'groupId',\n summary: 'Named group id (grp_*); Ungrouped cannot be renamed',\n isRequired: true,\n },\n ],\n flags: [\n { flag: '--name <name>', summary: 'New folder label, 1-60 chars' },\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli emails groups update grp_welcome --name \"Welcome series\"',\n ],\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, { name: flagString(flags.name) })\n if (typeof input.name !== 'string' || input.name === '') {\n throw new CliUsageError('--name is required (or provide it via --input).')\n }\n return {\n data: await ctx.client().emailGroups.update(\n asSdkInput<UpdateEmailGroupInput>({\n ...input,\n groupId: args.groupId ?? '',\n })\n ),\n }\n },\n})\n","import type { EmailImportInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n readTextFlag,\n requestOptions,\n} from '../../lib/input'\n\nexport const emailsImportCommand = defineCommand({\n path: ['emails', 'import'],\n summary: 'Import existing HTML, MJML, or JSX as a new editable design',\n sdkMethod: 'emails.import',\n route: { method: 'POST', path: '/v1/emails/import' },\n commandClass: 'write',\n flags: [\n {\n flag: '--file <path>',\n summary: 'Source file to import, or - for stdin',\n },\n { flag: '--format <format>', summary: 'Source format: html | mjml | jsx' },\n { flag: '--title <title>', summary: 'Design title' },\n {\n flag: '--base-url <url>',\n summary: 'Base URL for resolving relative asset links',\n },\n {\n flag: '--subject-line <text>',\n summary: \"The design's default inbox subject line\",\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails import --file newsletter.html --format html --title \"Legacy newsletter\"',\n 'brew-cli emails import --file newsletter.html --format html --subject-line \"This month at Brew\"',\n 'cat email.html | brew-cli emails import --file - --format html',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const content = await readTextFlag(ctx, flags.file, '--file')\n const input = mergeInput(base, {\n content,\n format: flagString(flags.format),\n title: flagString(flags.title),\n baseUrl: flagString(flags.baseUrl),\n subjectLine: flagString(flags.subjectLine),\n })\n if (typeof input.content !== 'string' || input.content.trim() === '') {\n throw new CliUsageError(\n '--file is required (a path, or - for stdin), or content via --input.'\n )\n }\n if (typeof input.format !== 'string') {\n throw new CliUsageError('--format is required: html | mjml | jsx.')\n }\n const result = await ctx\n .client()\n .emails.import(asSdkInput<EmailImportInput>(input), requestOptions(flags))\n return { data: result }\n },\n})\n","import type { BrewClient } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n requestOptions,\n} from '../../lib/input'\n\ntype ImportFigmaInput = Parameters<BrewClient['emails']['importFigma']>[0]\n\nexport const emailsImportFigmaCommand = defineCommand({\n path: ['emails', 'import-figma'],\n summary:\n 'Convert one Figma frame into an editable design (deterministic, free)',\n sdkMethod: 'emails.importFigma',\n route: { method: 'POST', path: '/v1/emails/figma' },\n commandClass: 'write',\n flags: [\n {\n flag: '--url <figmaUrl>',\n summary: 'Figma frame link; must include a node-id query parameter',\n },\n {\n flag: '--title <title>',\n summary: 'Design title (default: the Figma frame name)',\n },\n {\n flag: '--format <format>',\n summary: 'Representation returned in content: jsx (default) or html',\n },\n {\n flag: '--subject-line <text>',\n summary: \"The design's default inbox subject line\",\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails import-figma --url \"https://www.figma.com/design/abc123/Launch?node-id=1-2\"',\n 'brew-cli emails import-figma --url \"https://www.figma.com/design/abc123/Launch?node-id=1-2\" --subject-line \"Launch day is here\"',\n ],\n run: async ({ ctx, flags }) => {\n const figmaUrl = flagString(flags.url)\n if (figmaUrl === undefined) {\n throw new CliUsageError(\n '--url is required (a Figma frame link containing node-id).'\n )\n }\n const title = flagString(flags.title)\n const format = flagString(flags.format)\n const subjectLine = flagString(flags.subjectLine)\n return {\n data: await ctx.client().emails.importFigma(\n asSdkInput<ImportFigmaInput>({\n figmaUrl,\n ...(title === undefined ? {} : { title }),\n ...(format === undefined ? {} : { format }),\n ...(subjectLine === undefined ? {} : { subjectLine }),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import type { ListEmailsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const emailsListCommand = defineCommand({\n path: ['emails', 'list'],\n summary: 'List email designs (the single email read)',\n sdkMethod: 'emails.list',\n route: { method: 'GET', path: '/v1/emails' },\n commandClass: 'read',\n flags: [\n {\n flag: '--status <status>',\n summary: 'Filter by status: streaming | complete | error',\n },\n {\n flag: '--group-id <groupId>',\n summary: 'Filter by one group id; use ungrouped for no saved group',\n },\n {\n flag: '--sort <field>',\n summary: 'Sort by updatedAt | createdAt | title',\n },\n { flag: '--order <order>', summary: 'Sort order: asc | desc' },\n { flag: '--created-at-from <iso>', summary: 'Created at or after (ISO)' },\n { flag: '--created-at-to <iso>', summary: 'Created at or before (ISO)' },\n { flag: '--updated-at-from <iso>', summary: 'Updated at or after (ISO)' },\n { flag: '--updated-at-to <iso>', summary: 'Updated at or before (ISO)' },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli emails list --status complete --limit 10',\n 'brew-cli emails list --group-id ungrouped --sort title --order asc',\n 'brew-cli emails list --updated-at-from 2026-08-01T00:00:00Z',\n 'brew-cli emails list --all --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n status: flagString(flags.status),\n groupId: flagString(flags.groupId),\n sort: flagString(flags.sort),\n order: flagString(flags.order),\n createdAtFrom: flagString(flags.createdAtFrom),\n createdAtTo: flagString(flags.createdAtTo),\n updatedAtFrom: flagString(flags.updatedAtFrom),\n updatedAtTo: flagString(flags.updatedAtTo),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const emails = ctx.client().emails\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n emails.list(\n asSdkInput<ListEmailsInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderEmails(rows),\n }\n }\n const result = await emails.list(asSdkInput<ListEmailsInput>(input))\n return { data: result, human: renderEmails(result.data) }\n },\n})\n\nfunction renderEmails(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No email designs found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'emailId', header: 'EMAIL ID' },\n { key: 'title', header: 'TITLE' },\n { key: 'status', header: 'STATUS' },\n { key: 'groupName', header: 'GROUP' },\n { key: 'updatedAt', header: 'UPDATED' },\n ])\n}\n","import type { PreviewEmailClientsInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n IDEMPOTENCY_FLAG,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const emailsPreviewClientsCommand = defineCommand({\n path: ['emails', 'preview-clients'],\n summary: 'Render the design across real email clients (10 credits)',\n sdkMethod: 'emails.previewClients',\n route: { method: 'POST', path: '/v1/emails/{emailId}/client-previews' },\n commandClass: 'write',\n isCredited: true,\n args: [\n { name: 'emailId', summary: 'Design id to preview', isRequired: true },\n ],\n flags: [\n {\n flag: '--clients <ids...>',\n summary:\n 'Client id(s) to render, repeatable (e.g. applemail16 iphone16_18); default: a popular spread',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails preview-clients eml_2SmZOWV3ZQ7W5x6g3m4p',\n 'brew-cli emails preview-clients eml_2SmZOWV3ZQ7W5x6g3m4p --clients applemail16 outlook2021_win11_lm_dt',\n ],\n run: async ({ ctx, args, flags }) => {\n const clients = toStringArray(flags.clients)\n return {\n data: await ctx.client().emails.previewClients(\n asSdkInput<PreviewEmailClientsInput>({\n emailId: args.emailId ?? '',\n ...(clients === undefined ? {} : { clients }),\n }),\n requestOptions(flags)\n ),\n }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport { flagInt, IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nexport const emailsRestoreCommand = defineCommand({\n path: ['emails', 'restore'],\n summary: 'Restore a previous version as the new latest (non-destructive)',\n sdkMethod: 'emails.restore',\n route: { method: 'POST', path: '/v1/emails/{emailId}/restore' },\n commandClass: 'write',\n args: [\n { name: 'emailId', summary: 'Design id to restore', isRequired: true },\n ],\n // --version is taken by the CLI itself, hence --to-version.\n flags: [\n { flag: '--to-version <n>', summary: 'Version number to restore' },\n IDEMPOTENCY_FLAG,\n ],\n examples: ['brew-cli emails restore eml_2SmZOWV3ZQ7W5x6g3m4p --to-version 2'],\n run: async ({ ctx, args, flags }) => {\n const version = flagInt(flags.toVersion, '--to-version')\n if (version === undefined) {\n throw new CliUsageError(\n '--to-version is required (see `brew-cli emails get <emailId> --include versions`).'\n )\n }\n const result = await ctx\n .client()\n .emails.restore(\n { emailId: args.emailId ?? '', version },\n requestOptions(flags)\n )\n return { data: result }\n },\n})\n","import type { SendEmailInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport {\n asSdkInput,\n flagString,\n IDEMPOTENCY_FLAG,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n requestOptions,\n toStringArray,\n} from '../../lib/input'\n\nexport const emailsSendCommand = defineCommand({\n path: ['emails', 'send'],\n summary: 'Send an email: a real campaign, or a safe test with --test',\n sdkMethod: 'emails.send',\n route: { method: 'POST', path: '/v1/sends' },\n commandClass: 'destructive',\n args: [{ name: 'emailId', summary: 'Design id to send', isRequired: true }],\n flags: [\n {\n flag: '--test',\n summary: 'Test delivery to --to only; skips the confirmation gate',\n },\n {\n flag: '--to <emails...>',\n summary: 'Recipient(s): required for --test, ad-hoc list for campaigns',\n },\n { flag: '--subject <text>', summary: 'Subject line' },\n { flag: '--audience <audienceId>', summary: 'Campaign audience segment' },\n { flag: '--domain <domainId>', summary: 'Verified sending domain id' },\n {\n flag: '--schedule-at <iso>',\n summary: 'Schedule the campaign for an ISO-8601 time (default: now)',\n },\n INPUT_FLAG,\n IDEMPOTENCY_FLAG,\n ],\n examples: [\n 'brew-cli emails send eml_1 --test --to qa@example.com --subject \"Preview\"',\n 'brew-cli emails send eml_1 --subject \"Fall sale\" --domain dom_1 --audience aud_1 --yes',\n 'brew-cli emails send eml_1 --subject \"Fall sale\" --domain dom_1 --audience aud_1 --schedule-at 2026-09-01T09:00:00Z --yes',\n ],\n confirmSummary: ({ args, flags }) => {\n // The gate must describe the MERGED send, not just the flags — an\n // --input body can carry test/audienceId/to/scheduledAt on its own.\n const inline = parseInlineInput(flags.input)\n const isTest = flags.test === true || inline?.test === true\n if (isTest) {\n return\n }\n const audience = flagString(flags.audience) ?? asString(inline?.audienceId)\n const scheduleAt =\n flagString(flags.scheduleAt) ?? asString(inline?.scheduledAt)\n const recipients = toStringArray(flags.to) ?? asRecipients(inline?.to)\n const target =\n audience === undefined\n ? recipients === undefined\n ? flags.input === '-'\n ? 'the recipients named in the --input body on stdin'\n : 'its recipients'\n : `${recipients.length} listed recipient(s)`\n : `audience ${audience}`\n const timing = scheduleAt === undefined ? 'now' : `at ${scheduleAt}`\n return `Send email ${args.emailId ?? ''} as a REAL campaign to ${target} ${timing}. Real recipients receive it; this cannot be undone.`\n },\n run: async ({ ctx, args, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n emailId: args.emailId,\n test: flags.test === true ? true : undefined,\n subject: flagString(flags.subject),\n to: collapseRecipients(toStringArray(flags.to)),\n audienceId: flagString(flags.audience),\n domainId: flagString(flags.domain),\n scheduledAt: flagString(flags.scheduleAt),\n })\n if (typeof input.subject !== 'string' || input.subject === '') {\n throw new CliUsageError(\n '--subject is required (or provide it via --input).'\n )\n }\n if (input.test === true && input.to === undefined) {\n throw new CliUsageError('--to is required for a --test send.')\n }\n if (input.test !== true && typeof input.domainId !== 'string') {\n throw new CliUsageError(\n 'Campaign sends require --domain (a verified domain id); use --test for a test delivery.'\n )\n }\n const result = await ctx\n .client()\n .emails.send(asSdkInput<SendEmailInput>(input), requestOptions(flags))\n return { data: result }\n },\n})\n\nfunction collapseRecipients(\n values: readonly string[] | undefined\n): string | readonly string[] | undefined {\n if (values === undefined) {\n return\n }\n const [first] = values\n return values.length === 1 && first !== undefined ? first : values\n}\n\n/** Best-effort parse of an inline --input body (stdin `-` stays opaque). */\nfunction parseInlineInput(value: unknown): Record<string, unknown> | undefined {\n if (typeof value !== 'string' || value === '-') {\n return\n }\n try {\n const parsed: unknown = JSON.parse(value)\n return parsed !== null && typeof parsed === 'object'\n ? (parsed as Record<string, unknown>)\n : undefined\n } catch {}\n}\n\nfunction asString(value: unknown): string | undefined {\n return typeof value === 'string' && value !== '' ? value : undefined\n}\n\nfunction asRecipients(value: unknown): readonly string[] | undefined {\n if (typeof value === 'string' && value !== '') {\n return [value]\n }\n if (Array.isArray(value)) {\n const items = value.filter(\n (item): item is string => typeof item === 'string'\n )\n return items.length > 0 ? items : undefined\n }\n}\n","import type { CreateFieldInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport { CliUsageError } from '../../lib/errors'\nimport { flagString, IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nconst FIELD_TYPES = ['string', 'number', 'date', 'bool'] as const\n\nexport const fieldsCreateCommand = defineCommand({\n path: ['fields', 'create'],\n summary: 'Create a custom contact field',\n sdkMethod: 'fields.create',\n route: { method: 'POST', path: '/v1/fields' },\n commandClass: 'write',\n flags: [\n { flag: '--name <name>', summary: 'Field name (camelCase)' },\n {\n flag: '--type <type>',\n summary: 'Field type: string | number | date | bool',\n },\n IDEMPOTENCY_FLAG,\n ],\n examples: ['brew-cli fields create --name plan --type string'],\n run: async ({ ctx, flags }) => {\n const fieldName = flagString(flags.name)\n const fieldType = flagString(flags.type)\n if (fieldName === undefined || fieldType === undefined) {\n throw new CliUsageError('--name and --type are required.')\n }\n if (!(FIELD_TYPES as readonly string[]).includes(fieldType)) {\n throw new CliUsageError(\n `--type must be one of: ${FIELD_TYPES.join(', ')}`\n )\n }\n // Typed literal on purpose — no asSdkInput cast, so the compiler holds\n // this body to the generated contract (wire names are fieldName/fieldType).\n const input: CreateFieldInput = {\n fieldName,\n fieldType: fieldType as CreateFieldInput['fieldType'],\n }\n const result = await ctx\n .client()\n .fields.create(input, requestOptions(flags))\n return { data: result }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const fieldsDeleteCommand = defineCommand({\n path: ['fields', 'delete'],\n summary: 'Delete a custom field definition',\n sdkMethod: 'fields.delete',\n route: { method: 'DELETE', path: '/v1/fields/{fieldName}' },\n commandClass: 'destructive',\n args: [\n {\n name: 'fieldName',\n summary: 'Name of the field to delete',\n isRequired: true,\n },\n ],\n examples: ['brew-cli fields delete plan --yes'],\n confirmSummary: ({ args }) =>\n `Delete the custom field definition \"${args.fieldName ?? ''}\". This cannot be undone.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().fields.delete({ fieldName: args.fieldName ?? '' }),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const fieldsListCommand = defineCommand({\n path: ['fields', 'list'],\n summary: 'List custom contact fields',\n sdkMethod: 'fields.list',\n route: { method: 'GET', path: '/v1/fields' },\n commandClass: 'read',\n examples: ['brew-cli fields list'],\n run: async ({ ctx }) => ({ data: await ctx.client().fields.list() }),\n})\n","import { defineCommand } from '../lib/define-command'\n\nexport const healthCommand = defineCommand({\n path: ['health'],\n summary: 'Check Brew API liveness (no auth required)',\n sdkMethod: 'health.get',\n route: { method: 'GET', path: '/v1/health' },\n commandClass: 'read',\n examples: ['brew-cli health'],\n run: async ({ ctx }) => ({\n data: await ctx.client({ allowAnonymous: true }).health.get(),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { renderTable } from '../../lib/output'\n\nexport const integrationsListCommand = defineCommand({\n path: ['integrations', 'list'],\n summary:\n 'List the integration catalog with per-provider connected state (connect via Settings, not this CLI)',\n sdkMethod: 'integrations.list',\n route: { method: 'GET', path: '/v1/integrations' },\n commandClass: 'read',\n examples: ['brew-cli integrations list', 'brew-cli integrations list --json'],\n run: async ({ ctx }) => {\n const result = await ctx.client().integrations.list()\n return { data: result, human: renderIntegrations(result.data) }\n },\n})\n\nfunction renderIntegrations(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No integrations found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'provider', header: 'PROVIDER' },\n { key: 'name', header: 'NAME' },\n { key: 'category', header: 'CATEGORY' },\n { key: 'connected', header: 'CONNECTED' },\n ])\n}\n","import {\n buildSdkClient,\n LOGIN_KEYS_URL,\n maskApiKey,\n resolveAuth,\n} from '../lib/client'\nimport { updateConfig } from '../lib/config-store'\nimport { defineCommand } from '../lib/define-command'\nimport { CliUsageError } from '../lib/errors'\nimport { progress } from '../lib/output'\nimport type { CliContext } from '../lib/types'\n\nconst KEY_SHAPE = /^brew_[a-z0-9]{16,64}$/\n\nexport const loginCommand = defineCommand({\n path: ['login'],\n summary: 'Store an API key for this machine (validated against the API)',\n sdkMethod: null,\n commandClass: 'write',\n examples: [\n 'brew-cli login',\n 'brew-cli login --api-key brew_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',\n 'echo \"$BREW_API_KEY\" | brew-cli login',\n ],\n run: async ({ ctx }) => {\n const candidate = await readCandidateKey(ctx)\n if (!KEY_SHAPE.test(candidate)) {\n progress(\n ctx,\n 'Warning: key does not look like a Brew API key (brew_…); validating anyway.'\n )\n }\n const auth = resolveAuth({\n globals: { ...ctx.globals, apiKey: candidate },\n env: ctx.io.env,\n })\n // Throws a 401 BrewApiError (exit 3) when the key is invalid.\n await buildSdkClient(auth).usage.get()\n const path = updateConfig(ctx.io.env, { apiKey: candidate })\n progress(ctx, `Logged in. Key stored in ${path} (0600).`)\n return {\n data: {\n loggedIn: true,\n apiKey: maskApiKey(candidate),\n apiUrl: auth.apiUrl,\n configPath: path,\n },\n }\n },\n})\n\nasync function readCandidateKey(ctx: CliContext): Promise<string> {\n if (ctx.globals.apiKey !== undefined) {\n return ctx.globals.apiKey\n }\n if (!ctx.io.isTtyIn) {\n const piped = (await ctx.io.readStdin()).trim()\n if (piped !== '') {\n return piped\n }\n throw new CliUsageError(\n `No key provided. Pass --api-key or pipe the key on stdin. Create keys at ${LOGIN_KEYS_URL}`\n )\n }\n progress(ctx, `Create an API key at ${LOGIN_KEYS_URL}`)\n const answer = (await ctx.io.readLine('Paste your API key: ')).trim()\n if (answer === '') {\n throw new CliUsageError('No key entered.')\n }\n return answer\n}\n","import { readConfig, updateConfig } from '../lib/config-store'\nimport { defineCommand } from '../lib/define-command'\nimport { progress } from '../lib/output'\n\nexport const logoutCommand = defineCommand({\n path: ['logout'],\n summary: 'Remove the stored API key from this machine',\n sdkMethod: null,\n commandClass: 'write',\n examples: ['brew-cli logout'],\n run: async ({ ctx }) => {\n const hadKey = readConfig(ctx.io.env).apiKey !== undefined\n const path = updateConfig(ctx.io.env, { apiKey: undefined })\n progress(ctx, hadKey ? 'Logged out.' : 'No stored key found.')\n return { data: { loggedOut: true, hadKey, configPath: path } }\n },\n})\n","import { defineCommand } from '../../lib/define-command'\n\nexport const sendsCancelCommand = defineCommand({\n path: ['sends', 'cancel'],\n summary: 'Cancel a scheduled or queued send before it goes out',\n sdkMethod: 'sends.cancel',\n route: { method: 'POST', path: '/v1/sends/{sendId}/cancel' },\n commandClass: 'destructive',\n args: [{ name: 'sendId', summary: 'Send id to cancel', isRequired: true }],\n examples: ['brew-cli sends cancel snd_9f2kX --yes'],\n confirmSummary: ({ args }) =>\n `Cancel send ${args.sendId ?? ''}. A scheduled or queued campaign will not go out; delivery already in flight cannot be recalled.`,\n run: async ({ ctx, args }) => ({\n data: await ctx.client().sends.cancel(args.sendId ?? ''),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nexport const sendsPauseCommand = defineCommand({\n path: ['sends', 'pause'],\n summary: 'Pause an in-flight or scheduled send (resumable)',\n sdkMethod: 'sends.pause',\n route: { method: 'POST', path: '/v1/sends/{sendId}/pause' },\n commandClass: 'write',\n args: [{ name: 'sendId', summary: 'Send id to pause', isRequired: true }],\n flags: [IDEMPOTENCY_FLAG],\n examples: ['brew-cli sends pause snd_123'],\n run: async ({ ctx, args, flags }) => ({\n data: await ctx\n .client()\n .sends.pause(args.sendId ?? '', requestOptions(flags)),\n }),\n})\n","import { defineCommand } from '../../lib/define-command'\nimport { IDEMPOTENCY_FLAG, requestOptions } from '../../lib/input'\n\nexport const sendsResumeCommand = defineCommand({\n path: ['sends', 'resume'],\n summary: 'Resume a paused gradual send (the unsent tail is re-spread)',\n sdkMethod: 'sends.resume',\n route: { method: 'POST', path: '/v1/sends/{sendId}/resume' },\n commandClass: 'write',\n args: [{ name: 'sendId', summary: 'Send id to resume', isRequired: true }],\n flags: [IDEMPOTENCY_FLAG],\n examples: ['brew-cli sends resume snd_123'],\n run: async ({ ctx, args, flags }) => ({\n data: await ctx\n .client()\n .sends.resume(args.sendId ?? '', requestOptions(flags)),\n }),\n})\n","import type { ListTemplatesInput } from '@brew.new/sdk'\nimport { defineCommand } from '../../lib/define-command'\nimport {\n asSdkInput,\n flagInt,\n flagString,\n INPUT_FLAG,\n mergeInput,\n readJsonFlag,\n} from '../../lib/input'\nimport { renderTable } from '../../lib/output'\nimport {\n ALL_FLAG,\n CURSOR_FLAG,\n collectAll,\n LIMIT_FLAG,\n} from '../../lib/paginate'\n\nexport const templatesListCommand = defineCommand({\n path: ['templates', 'list'],\n summary: 'List public templates (each row carries the rendered html)',\n sdkMethod: 'templates.list',\n route: { method: 'GET', path: '/v1/templates' },\n commandClass: 'read',\n flags: [\n {\n // --brand is taken by the global brand-selection flag.\n flag: '--brand-name <name>',\n summary: 'Filter by gallery brand name',\n },\n { flag: '--category <category>', summary: 'Filter by category' },\n {\n flag: '--semantic <text>',\n summary: 'Semantic search over the gallery',\n },\n LIMIT_FLAG,\n CURSOR_FLAG,\n ALL_FLAG,\n INPUT_FLAG,\n ],\n examples: [\n 'brew-cli templates list --category welcome',\n 'brew-cli templates list --semantic \"minimal product launch\" --json',\n ],\n run: async ({ ctx, flags }) => {\n const base = await readJsonFlag(ctx, flags.input, '--input')\n const input = mergeInput(base, {\n brand: flagString(flags.brandName),\n category: flagString(flags.category),\n semantic: flagString(flags.semantic),\n limit: flagInt(flags.limit, '--limit'),\n cursor: flagString(flags.cursor),\n })\n const templates = ctx.client().templates\n if (flags.all === true) {\n const rows = await collectAll(ctx, (cursor) =>\n templates.list(\n asSdkInput<ListTemplatesInput>({\n ...input,\n ...(cursor === undefined ? {} : { cursor }),\n })\n )\n )\n return {\n data: { data: rows, pagination: { cursor: null, hasMore: false } },\n human: renderTemplates(rows),\n }\n }\n const result = await templates.list(asSdkInput<ListTemplatesInput>(input))\n return { data: result, human: renderTemplates(result.data) }\n },\n})\n\nfunction renderTemplates(rows: ReadonlyArray<unknown>): string {\n if (rows.length === 0) {\n return 'No templates found.'\n }\n return renderTable(rows as ReadonlyArray<Record<string, unknown>>, [\n { key: 'emailId', header: 'TEMPLATE' },\n { key: 'title', header: 'TITLE' },\n { key: 'category', header: 'CATEGORY' },\n { key: 'brand', header: 'BRAND' },\n ])\n}\n","import { createHash } from 'node:crypto'\nimport { readFileSync, writeFileSync } from 'node:fs'\n\nimport type {\n ListTriggersInput,\n ListTriggersResponse,\n Trigger,\n} from '@brew.new/sdk'\nimport { defineCommand } from '../lib/define-command'\nimport { asSdkInput } from '../lib/input'\n\ntype TriggerRow = Trigger\n\n/**\n * `brew-cli types` — generate TypeScript payload contracts for this\n * workspace's triggers (declared `payloadSchema`). Deterministic output:\n * same inputs → the same bytes, with a content hash in the header so\n * `--check` works as a CI drift gate (exit 1 when the API's contracts no\n * longer match the committed file).\n */\n\nconst HEADER_PREFIX = '// brew:contracts sha256:'\n\n/**\n * THE canonical type-name rule, mirrored byte-for-byte from the app's\n * `lib/payload-contract/codegen.ts` (`contractTypeName`) so Copy-as, the\n * SKILL.md brief, and this file all mint the SAME identifier for one\n * contract: PascalCase(name || id) + `Payload`, digit-led names prefixed,\n * an existing `…Payload` suffix never doubled, symbol-only names →\n * `ContractPayload`.\n */\nfunction pascalCase(value: string): string {\n const cleaned = value.replace(/[^a-zA-Z0-9]+/g, ' ').trim()\n if (cleaned === '') {\n return 'Contract'\n }\n return cleaned\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join('')\n}\n\nfunction typeName(label: string): string {\n const base = pascalCase(label)\n if (/^[0-9]/.test(base)) {\n return `Payload${base}`\n }\n return base.endsWith('Payload') ? base : `${base}Payload`\n}\n\nconst IDENTIFIER_RE = /^[A-Za-z_$][A-Za-z0-9_$]*$/\n\nfunction propertyKey(key: string): string {\n return IDENTIFIER_RE.test(key) ? key : JSON.stringify(key)\n}\n\n/**\n * The full contract-node lattice the platform can emit — the app's\n * `ContractFieldNode` (lib/payload-contract/types.ts). Deliberately wider\n * than the vendored `TriggerPayloadField` so nested / enum nodes survive\n * a vendored-spec lag: the emitter reads the wire JSON, not the spec.\n */\ntype TriggerFieldNode = {\n key: string\n type: string\n required: boolean\n /** `type: 'enum'` (or an array of enums via `itemType`): allowed values. */\n enumValues?: ReadonlyArray<string>\n /** `object`: properties. `array` with object elements: element properties. */\n children?: ReadonlyArray<TriggerFieldNode>\n /** `array` with scalar elements: the element type. */\n itemType?: string\n}\n\n/**\n * Scalar mapping mirrored from the app's `lib/payload-contract/codegen.ts`\n * (`scalarTsType`): int/float → number, date → ISO string, enum → a\n * literal union when `enumValues` exist. A type this build does not know\n * (including the platform's derived-view `'unknown'`) is honestly\n * `unknown` — never a silently-wrong `string`.\n */\nfunction scalarTsType(type: string, node: TriggerFieldNode): string {\n switch (type) {\n case 'string':\n return 'string'\n case 'int':\n case 'float':\n return 'number'\n case 'boolean':\n return 'boolean'\n case 'date':\n // ISO-8601 date-time string on the wire.\n return 'string'\n case 'enum':\n return node.enumValues && node.enumValues.length > 0\n ? node.enumValues.map((value) => JSON.stringify(value)).join(' | ')\n : 'string'\n default:\n return 'unknown'\n }\n}\n\nfunction triggerFieldType(node: TriggerFieldNode, indent: string): string {\n if (node.type === 'object') {\n return triggerObjectLiteral(node.children ?? [], indent)\n }\n if (node.type === 'array') {\n if (node.children && node.children.length > 0) {\n return `Array<${triggerObjectLiteral(node.children, indent)}>`\n }\n const element = node.itemType\n ? scalarTsType(node.itemType, node)\n : 'unknown'\n return `Array<${element}>`\n }\n return scalarTsType(node.type, node)\n}\n\n/**\n * Nested emission mirrored from the app codegen's `tsObjectLiteral`:\n * field order as given, `?:` from `required`, two-space indent per level.\n * Flat contracts emit byte-identically to the pre-nested emitter (the\n * sha256 header + `--check` gates depend on that stability), which is\n * also why the app's per-field doc comments are NOT ported here.\n */\nfunction triggerObjectLiteral(\n nodes: ReadonlyArray<TriggerFieldNode>,\n indent: string\n): string {\n if (nodes.length === 0) {\n // Top level: zero declared fields means \"send nothing\". A NESTED\n // childless object is different: its inner shape is unknown, not\n // empty.\n return indent === '' ? 'Record<string, never>' : 'Record<string, unknown>'\n }\n const inner = `${indent} `\n const lines: Array<string> = ['{']\n for (const node of nodes) {\n const optional = node.required ? '' : '?'\n lines.push(\n `${inner}${propertyKey(node.key)}${optional}: ${triggerFieldType(node, inner)}`\n )\n }\n lines.push(`${indent}}`)\n return lines.join('\\n')\n}\n\nfunction emitTriggerType(trigger: TriggerRow, name: string): string {\n const fields: ReadonlyArray<TriggerFieldNode> =\n trigger.payloadSchema?.fields ?? []\n return [\n `/** Fire: POST /v1/automations/triggers/${trigger.triggerEventId}/fire — body { payload: ${name} } */`,\n `export type ${name} = ${triggerObjectLiteral(fields, '')}`,\n ].join('\\n')\n}\n\n/** Byte-stable ordering — `localeCompare` varies by host locale. */\nfunction byCodepoint(a: string, b: string): number {\n if (a < b) {\n return -1\n }\n return a > b ? 1 : 0\n}\n\n/**\n * Trigger titles share one flat namespace and carry no uniqueness\n * constraint — colliding names get the trigger id appended (then a\n * numeric suffix as a last resort) so the generated file always compiles.\n */\nfunction uniqueNames(\n entries: ReadonlyArray<{ label: string; id: string }>\n): Array<string> {\n const taken = new Map<string, number>()\n return entries.map(({ label, id }) => {\n let name = typeName(label)\n if (taken.has(name)) {\n const suffixed = `${name}${pascalCase(id)}`\n name = suffixed\n }\n while (taken.has(name)) {\n const bump = (taken.get(name) ?? 1) + 1\n taken.set(name, bump)\n name = `${name}${bump}`\n }\n taken.set(name, 1)\n return name\n })\n}\n\nfunction buildFileText(args: { triggers: ReadonlyArray<TriggerRow> }): string {\n const triggers = [...args.triggers].sort((a, b) =>\n byCodepoint(a.triggerEventId, b.triggerEventId)\n )\n // ONE name pass: same rule as the app (name || id), collisions\n // resolved deterministically.\n const names = uniqueNames(\n triggers.map((t) => ({ id: t.triggerEventId, label: t.title }))\n )\n const triggerBlocks = triggers.map((t, i) =>\n emitTriggerType(t, names[i] ?? typeName(t.title))\n )\n const body = [\n '// Generated by `brew-cli types` — do not edit by hand.',\n '// Re-run `brew-cli types` after changing a trigger schema; gate',\n '// drift in CI with `brew-cli types --check`.',\n '',\n triggerBlocks.join('\\n\\n'),\n '',\n ].join('\\n')\n const hash = createHash('sha256').update(body).digest('hex')\n return `${HEADER_PREFIX}${hash}\\n${body}`\n}\n\nexport const typesCommand = defineCommand({\n path: ['types'],\n summary:\n \"Generate TypeScript payload contracts for this workspace's triggers into your codebase; --check is the CI drift gate (exit 1 on drift). Needs the automations scope\",\n sdkMethod: null,\n derivedFrom: 'automations.triggers.list',\n route: { method: 'GET', path: '/v1/automations/triggers' },\n commandClass: 'read',\n flags: [\n {\n flag: '--out <file>',\n summary: 'Output file (default brew-contracts.ts)',\n defaultValue: 'brew-contracts.ts',\n },\n {\n flag: '--check',\n summary:\n 'Verify the output file is up to date instead of writing; exits 1 on drift',\n },\n ],\n examples: [\n 'brew-cli types',\n 'brew-cli types --out src/brew-contracts.ts',\n 'brew-cli types --check',\n ],\n run: async ({ ctx, flags }) => {\n // Follow the cursor to the end — a silent 100-trigger cap would make\n // `--check` certify an incomplete file (integration catalogs alone\n // can cross 100). The page ceiling is a runaway-loop backstop only.\n const triggers: Array<TriggerRow> = []\n let cursor: string | null = null\n for (let page = 0; page < 50; page++) {\n const listResponse: ListTriggersResponse = await ctx\n .client()\n .automations.triggers.list(\n asSdkInput<ListTriggersInput>({\n limit: 100,\n ...(cursor === null ? {} : { cursor }),\n })\n )\n triggers.push(...(listResponse.data ?? []))\n if (\n !listResponse.pagination?.hasMore ||\n !listResponse.pagination.cursor\n ) {\n break\n }\n cursor = listResponse.pagination.cursor\n }\n const text = buildFileText({ triggers })\n const outPath =\n typeof flags.out === 'string' ? flags.out : 'brew-contracts.ts'\n\n if (flags.check === true) {\n let existing: string | null = null\n try {\n existing = readFileSync(outPath, 'utf8')\n } catch {\n existing = null\n }\n // CRLF-tolerant: an autocrlf checkout must not read as drift.\n const normalize = (value: string) => value.replaceAll('\\r\\n', '\\n')\n if (existing === null || normalize(existing) !== normalize(text)) {\n return {\n data: { checked: outPath, upToDate: false },\n human:\n existing === null\n ? `${outPath} does not exist — run \\`brew-cli types\\` first.`\n : `${outPath} is stale — the workspace's payload contracts changed. Run \\`brew-cli types\\` to regenerate.`,\n // Documented drift contract: exit 1 (not the usage-error 2).\n exitCode: 1,\n }\n }\n return {\n data: { checked: outPath, upToDate: true },\n human: `${outPath} is up to date.`,\n }\n }\n\n writeFileSync(outPath, text)\n return {\n data: {\n out: outPath,\n triggers: triggers.length,\n },\n human: `Wrote ${outPath} (${triggers.length} trigger${triggers.length === 1 ? '' : 's'}).`,\n }\n },\n})\n","import { defineCommand } from '../lib/define-command'\n\nexport const usageCommand = defineCommand({\n path: ['usage'],\n summary: 'Show plan, credit balance, and email-send quota',\n sdkMethod: 'usage.get',\n route: { method: 'GET', path: '/v1/usage' },\n commandClass: 'read',\n examples: ['brew-cli usage', 'brew-cli usage --json'],\n run: async ({ ctx }) => ({ data: await ctx.client().usage.get() }),\n})\n","import { BrewApiError } from '@brew.new/sdk'\nimport { maskApiKey, resolveAuth } from '../lib/client'\nimport { defineCommand } from '../lib/define-command'\nimport { progress } from '../lib/output'\n\nexport const whoamiCommand = defineCommand({\n path: ['whoami'],\n summary: 'Show the resolved credential, brand, and API target',\n sdkMethod: null,\n commandClass: 'read',\n examples: ['brew-cli whoami', 'brew-cli whoami --json'],\n run: async ({ ctx }) => {\n const auth = resolveAuth({ globals: ctx.globals, env: ctx.io.env })\n // Invalid credentials must surface (exit 3), but a server-side outage\n // should not hide the local credential state — degrade to usage: null.\n let usage: unknown = null\n try {\n usage = await ctx.client().usage.get()\n } catch (error) {\n if (\n error instanceof BrewApiError &&\n (error.status === 401 || error.status === 403)\n ) {\n throw error\n }\n progress(\n ctx,\n 'Warning: could not reach /v1/usage — showing local credential state only.'\n )\n }\n return {\n data: {\n apiUrl: auth.apiUrl,\n apiKey: maskApiKey(auth.apiKey),\n apiKeySource: auth.apiKeySource,\n brandId: auth.brandId ?? null,\n usage,\n },\n }\n },\n})\n","import { analyticsAutomationsCommand } from './commands/analytics/automations'\nimport { analyticsCampaignsCommand } from './commands/analytics/campaigns'\nimport { analyticsEventsCommand } from './commands/analytics/events'\nimport { analyticsOverviewCommand } from './commands/analytics/overview'\nimport { analyticsSendsGetCommand } from './commands/analytics/sends/get'\nimport { analyticsSendsListCommand } from './commands/analytics/sends/list'\nimport { analyticsTriggerInstancesListCommand } from './commands/analytics/trigger-instances/list'\nimport { apiCommand } from './commands/api'\nimport { apiKeysCreateCommand } from './commands/api-keys/create'\nimport { apiKeysDeleteCommand } from './commands/api-keys/delete'\nimport { apiKeysListCommand } from './commands/api-keys/list'\nimport { audiencesCreateCommand } from './commands/audiences/create'\nimport { audiencesDeleteCommand } from './commands/audiences/delete'\nimport { audiencesDuplicateCommand } from './commands/audiences/duplicate'\nimport { audiencesFromEventsCommand } from './commands/audiences/from-events'\nimport { audiencesGetCommand } from './commands/audiences/get'\nimport { audiencesListCommand } from './commands/audiences/list'\nimport { audiencesUpdateCommand } from './commands/audiences/update'\nimport { automationsAudienceRunsControlCommand } from './commands/automations/audience-runs/control'\nimport { automationsAudienceRunsListCommand } from './commands/automations/audience-runs/list'\nimport { automationsCreateCommand } from './commands/automations/create'\nimport { automationsDeleteCommand } from './commands/automations/delete'\nimport { automationsGetCommand } from './commands/automations/get'\nimport { automationsListCommand } from './commands/automations/list'\nimport { automationsPublishCommand } from './commands/automations/publish'\nimport { automationsRunCommand } from './commands/automations/run'\nimport { automationsRunsListCommand } from './commands/automations/runs/list'\nimport { automationsTestCommand } from './commands/automations/test'\nimport {\n automationsTriggersContractGetCommand,\n automationsTriggersContractPutCommand,\n automationsTriggersContractValidateCommand,\n} from './commands/automations/triggers/contract'\nimport { automationsTriggersCreateCommand } from './commands/automations/triggers/create'\nimport { automationsTriggersDeleteCommand } from './commands/automations/triggers/delete'\nimport { automationsTriggersFireCommand } from './commands/automations/triggers/fire'\nimport { automationsTriggersListCommand } from './commands/automations/triggers/list'\nimport { automationsTriggersReadyCommand } from './commands/automations/triggers/ready'\nimport { automationsTriggersUpdateCommand } from './commands/automations/triggers/update'\nimport { automationsUnpublishCommand } from './commands/automations/unpublish'\nimport { automationsUpdateCommand } from './commands/automations/update'\nimport { brandGetCommand } from './commands/brand/get'\nimport { brandGetImagesCommand } from './commands/brand/get-images'\nimport { brandUpdateCommand } from './commands/brand/update'\nimport { brandsCreateCommand } from './commands/brands/create'\nimport { brandsGetCommand } from './commands/brands/get'\nimport { brandsListCommand } from './commands/brands/list'\nimport { chatsGetCommand } from './commands/chats/get'\nimport {\n configGetCommand,\n configListCommand,\n configSetCommand,\n configUnsetCommand,\n} from './commands/config'\nimport { contactsCountCommand } from './commands/contacts/count'\nimport { contactsDeleteCommand } from './commands/contacts/delete'\nimport { contactsDeleteManyCommand } from './commands/contacts/delete-many'\nimport { contactsGetCommand } from './commands/contacts/get'\nimport { contactsImportCsvCommand } from './commands/contacts/import-csv'\nimport { contactsSearchCommand } from './commands/contacts/search'\nimport { contactsUpdateCommand } from './commands/contacts/update'\nimport { contactsUpsertCommand } from './commands/contacts/upsert'\nimport { contactsUpsertManyCommand } from './commands/contacts/upsert-many'\nimport { contactsValidateCommand } from './commands/contacts/validate'\nimport { contentAddImageCommand } from './commands/content/add-image'\nimport { contentGenerateImageCommand } from './commands/content/generate-image'\nimport { contentGifCommand } from './commands/content/gif'\nimport { contentHtmlToPngCommand } from './commands/content/html-to-png'\nimport { contentTransformCommand } from './commands/content/transform'\nimport { contractsInferCommand } from './commands/contracts/infer'\nimport { dataRunCommand } from './commands/data/run'\nimport { docsApiCommand, docsCommand } from './commands/docs'\nimport { doctorCommand } from './commands/doctor'\nimport { domainsAddCommand } from './commands/domains/add'\nimport { domainsDeleteCommand } from './commands/domains/delete'\nimport { domainsGetCommand } from './commands/domains/get'\nimport { domainsHealthCommand } from './commands/domains/health'\nimport { domainsListCommand } from './commands/domains/list'\nimport { domainsUpdateCommand } from './commands/domains/update'\nimport { domainsVerifyCommand } from './commands/domains/verify'\nimport { emailsAuditCommand } from './commands/emails/audit'\nimport { emailsCloneCommand } from './commands/emails/clone'\nimport { emailsCreateInboxPlacementTestCommand } from './commands/emails/create-inbox-placement-test'\nimport { emailsDeleteCommand } from './commands/emails/delete'\nimport { emailsEditCommand } from './commands/emails/edit'\nimport { emailsExportCommand } from './commands/emails/export'\nimport { emailsGenerateCommand } from './commands/emails/generate'\nimport { emailsGetCommand } from './commands/emails/get'\nimport { emailsGetInboxPlacementResultsCommand } from './commands/emails/get-inbox-placement-results'\nimport { emailsGroupsCreateCommand } from './commands/emails/groups/create'\nimport { emailsGroupsDeleteCommand } from './commands/emails/groups/delete'\nimport { emailsGroupsListCommand } from './commands/emails/groups/list'\nimport { emailsGroupsUpdateCommand } from './commands/emails/groups/update'\nimport { emailsImportCommand } from './commands/emails/import'\nimport { emailsImportFigmaCommand } from './commands/emails/import-figma'\nimport { emailsListCommand } from './commands/emails/list'\nimport { emailsPreviewClientsCommand } from './commands/emails/preview-clients'\nimport { emailsRestoreCommand } from './commands/emails/restore'\nimport { emailsSendCommand } from './commands/emails/send'\nimport { fieldsCreateCommand } from './commands/fields/create'\nimport { fieldsDeleteCommand } from './commands/fields/delete'\nimport { fieldsListCommand } from './commands/fields/list'\nimport { healthCommand } from './commands/health'\nimport { integrationsListCommand } from './commands/integrations/list'\nimport { loginCommand } from './commands/login'\nimport { logoutCommand } from './commands/logout'\nimport { sendsCancelCommand } from './commands/sends/cancel'\nimport { sendsPauseCommand } from './commands/sends/pause'\nimport { sendsResumeCommand } from './commands/sends/resume'\nimport { templatesListCommand } from './commands/templates/list'\nimport { typesCommand } from './commands/types'\nimport { usageCommand } from './commands/usage'\nimport { whoamiCommand } from './commands/whoami'\nimport type { CommandSpec } from './lib/define-command'\n\n/**\n * Every command the CLI exposes, in help-display order. One entry per\n * command file; the parity tests hold this list to the SDK surface and\n * the vendored OpenAPI spec.\n */\nexport const ALL_COMMANDS: readonly CommandSpec[] = [\n loginCommand,\n logoutCommand,\n whoamiCommand,\n configListCommand,\n configGetCommand,\n configSetCommand,\n configUnsetCommand,\n contactsSearchCommand,\n contactsGetCommand,\n contactsCountCommand,\n contactsUpsertCommand,\n contactsUpsertManyCommand,\n contactsUpdateCommand,\n contactsDeleteCommand,\n contactsDeleteManyCommand,\n contactsValidateCommand,\n contactsImportCsvCommand,\n fieldsListCommand,\n fieldsCreateCommand,\n fieldsDeleteCommand,\n emailsListCommand,\n emailsGroupsListCommand,\n emailsGroupsCreateCommand,\n emailsGroupsUpdateCommand,\n emailsGroupsDeleteCommand,\n emailsGetCommand,\n emailsGenerateCommand,\n emailsImportCommand,\n emailsImportFigmaCommand,\n emailsEditCommand,\n emailsCloneCommand,\n emailsRestoreCommand,\n emailsDeleteCommand,\n emailsExportCommand,\n emailsAuditCommand,\n emailsPreviewClientsCommand,\n emailsCreateInboxPlacementTestCommand,\n emailsGetInboxPlacementResultsCommand,\n emailsSendCommand,\n sendsCancelCommand,\n sendsPauseCommand,\n sendsResumeCommand,\n typesCommand,\n audiencesListCommand,\n audiencesGetCommand,\n audiencesCreateCommand,\n audiencesUpdateCommand,\n audiencesDuplicateCommand,\n audiencesFromEventsCommand,\n audiencesDeleteCommand,\n automationsListCommand,\n automationsGetCommand,\n automationsCreateCommand,\n automationsUpdateCommand,\n automationsPublishCommand,\n automationsUnpublishCommand,\n automationsDeleteCommand,\n automationsTestCommand,\n automationsRunCommand,\n automationsTriggersListCommand,\n automationsTriggersReadyCommand,\n automationsTriggersContractGetCommand,\n automationsTriggersContractPutCommand,\n automationsTriggersContractValidateCommand,\n contractsInferCommand,\n dataRunCommand,\n automationsTriggersCreateCommand,\n automationsTriggersUpdateCommand,\n automationsTriggersDeleteCommand,\n automationsTriggersFireCommand,\n automationsRunsListCommand,\n automationsAudienceRunsListCommand,\n automationsAudienceRunsControlCommand,\n analyticsOverviewCommand,\n analyticsCampaignsCommand,\n analyticsAutomationsCommand,\n analyticsEventsCommand,\n analyticsSendsListCommand,\n analyticsSendsGetCommand,\n analyticsTriggerInstancesListCommand,\n brandGetCommand,\n brandUpdateCommand,\n brandGetImagesCommand,\n brandsListCommand,\n brandsGetCommand,\n brandsCreateCommand,\n apiKeysListCommand,\n apiKeysCreateCommand,\n apiKeysDeleteCommand,\n domainsListCommand,\n domainsGetCommand,\n domainsAddCommand,\n domainsVerifyCommand,\n domainsHealthCommand,\n domainsUpdateCommand,\n domainsDeleteCommand,\n contentGenerateImageCommand,\n contentGifCommand,\n contentTransformCommand,\n contentHtmlToPngCommand,\n contentAddImageCommand,\n templatesListCommand,\n integrationsListCommand,\n chatsGetCommand,\n healthCommand,\n usageCommand,\n doctorCommand,\n docsCommand,\n docsApiCommand,\n apiCommand,\n]\n","import { Command, CommanderError } from 'commander'\nimport { enforceConfirmation } from './lib/confirm'\nimport { makeContext, makeFallbackContext } from './lib/context'\nimport type { CommandSpec } from './lib/define-command'\nimport { GLOBAL_FLAGS } from './lib/define-command'\nimport {\n CliUsageError,\n EXIT_OK,\n EXIT_USAGE,\n printError,\n toExitCode,\n} from './lib/errors'\nimport { printData } from './lib/output'\nimport type { CliContext, CliIo } from './lib/types'\nimport { ALL_COMMANDS } from './registry'\nimport { CLI_NAME, CLI_VERSION } from './version'\n\nconst GROUP_SUMMARIES: Readonly<Record<string, string>> = {\n analytics: 'Read campaign, automation, send, and event analytics',\n 'api-keys': 'Manage organization API keys',\n audiences: 'Manage audience segments',\n automations: 'Manage automation graphs, triggers, and runs',\n brand: \"Read and update the active brand's design context\",\n brands: 'Organization-level brand lifecycle',\n chats: 'Read Brew chat context for hand-offs',\n config: 'Read and write stored CLI configuration',\n contacts: 'Manage contacts',\n content: 'Credit-metered content generation (images, GIFs, renders)',\n docs: 'Reference material for humans and agents',\n domains: 'Manage sending domains',\n emails: 'Manage email designs and send campaigns',\n fields: 'Manage custom contact fields',\n groups: 'Manage email folders (groups)',\n integrations: 'Read the connected-integration catalog',\n sends: 'Control in-flight or scheduled sends',\n templates: 'Browse the template gallery',\n contract: 'Stored payload contracts (get, put, validate)',\n contracts: 'Payload-contract helpers',\n triggers: 'Manage trigger events',\n runs: 'Automation run history',\n 'trigger-instances': 'Fired trigger instances',\n}\n\nconst AGENT_HELP_FOOTER = `\nEnvironment:\n BREW_API_KEY API key (overrides stored login; flags override both)\n BREW_BRAND_ID Brand id for organization-scoped keys\n BREW_API_URL API base URL (default https://brew.new/api)\n BREW_CLI_CONFIG_DIR Config directory (default ~/.config/brew-cli)\n\nExit codes:\n 0 success · 1 API/runtime error · 2 usage error · 3 auth error\n 4 confirmation required (re-run with --yes)\n\nAgents: run \\`${CLI_NAME} docs --agent\\` for the machine-readable manifest.\n`\n\nexport async function run(\n argv: readonly string[],\n io: CliIo,\n commands: readonly CommandSpec[] = ALL_COMMANDS\n): Promise<number> {\n let activeContext: CliContext | undefined\n let commandExitCode: number | undefined\n // Commander's own stderr (usage errors, error-mode help) is buffered so\n // JSON mode can replace it with a structured envelope instead of mixing\n // free text and JSON on the same stream.\n const commanderStderr: string[] = []\n const program = buildProgram(\n io,\n argv,\n (ctx) => {\n activeContext = ctx\n },\n commands,\n (text) => {\n commanderStderr.push(text)\n },\n (code) => {\n commandExitCode = code\n }\n )\n const flushCommanderStderr = (): void => {\n for (const text of commanderStderr) {\n io.stderr.write(text)\n }\n commanderStderr.length = 0\n }\n try {\n await program.parseAsync([...argv], { from: 'user' })\n flushCommanderStderr()\n return commandExitCode ?? EXIT_OK\n } catch (error) {\n if (error instanceof CommanderError) {\n const ctx = activeContext ?? makeFallbackContext(io, argv)\n return handleCommanderError(error, ctx, flushCommanderStderr)\n }\n flushCommanderStderr()\n const ctx = activeContext ?? makeFallbackContext(io, argv)\n printError(ctx, error)\n return toExitCode(error)\n }\n}\n\nfunction handleCommanderError(\n error: CommanderError,\n ctx: CliContext,\n flush: () => void\n): number {\n const isHelpCode =\n error.code === 'commander.helpDisplayed' || error.code === 'commander.help'\n if (\n error.code === 'commander.version' ||\n (isHelpCode && error.exitCode === 0)\n ) {\n flush()\n return EXIT_OK\n }\n if (isHelpCode) {\n // Error-mode help: a group or bare invocation with no subcommand.\n if (ctx.mode === 'json') {\n printError(\n ctx,\n new CliUsageError('Incomplete command: a subcommand is required.')\n )\n } else {\n flush()\n }\n return EXIT_USAGE\n }\n if (ctx.mode === 'json') {\n printError(ctx, new CliUsageError(error.message.replace(/^error: /, '')))\n } else {\n flush()\n }\n return EXIT_USAGE\n}\n\nexport function buildProgram(\n io: CliIo,\n rawArgv: readonly string[],\n onContext?: (ctx: CliContext) => void,\n commands: readonly CommandSpec[] = ALL_COMMANDS,\n errSink?: (text: string) => void,\n onExitCode?: (code: number) => void\n): Command {\n const writeErr = errSink ?? ((text: string) => io.stderr.write(text))\n const program = new Command(CLI_NAME)\n .description('Agent-first CLI for the Brew public API (brew.new)')\n .version(CLI_VERSION, '--version', 'Print the CLI version')\n .exitOverride()\n .showSuggestionAfterError(false)\n .configureOutput({\n writeOut: (str) => {\n io.stdout.write(str)\n },\n writeErr: (str) => {\n writeErr(str)\n },\n })\n program.addHelpText('after', AGENT_HELP_FOOTER)\n // Global flags register on the root as well as every leaf so agents can\n // place them on either side of the subcommand (`brew-cli --json usage`\n // and `brew-cli usage --json` both work); optsWithGlobals merges them.\n for (const flag of GLOBAL_FLAGS) {\n program.option(flag.flag, flag.summary)\n }\n for (const spec of commands) {\n registerCommand(program, spec, io, rawArgv, onContext, onExitCode)\n }\n return program\n}\n\nfunction registerCommand(\n program: Command,\n spec: CommandSpec,\n io: CliIo,\n rawArgv: readonly string[],\n onContext?: (ctx: CliContext) => void,\n onExitCode?: (code: number) => void\n): void {\n const parent = resolveGroup(program, spec.path.slice(0, -1))\n const leafName = spec.path.at(-1)\n if (leafName === undefined) {\n throw new Error('command spec has an empty path')\n }\n const leaf = parent.command(leafName).description(spec.summary)\n for (const arg of spec.args ?? []) {\n const wrapped = arg.isRequired ? `<${arg.name}>` : `[${arg.name}]`\n leaf.argument(wrapped, arg.summary)\n }\n for (const flag of [...(spec.flags ?? []), ...GLOBAL_FLAGS]) {\n if (flag.defaultValue === undefined) {\n leaf.option(flag.flag, flag.summary)\n } else {\n leaf.option(flag.flag, flag.summary, flag.defaultValue)\n }\n }\n leaf.addHelpText('after', buildCommandHelpFooter(spec))\n leaf.action(async (...actionArgs: unknown[]) => {\n const command = actionArgs.at(-1) as Command\n // optsWithGlobals lets ancestors overwrite the leaf; re-apply the\n // leaf's own parsed values so the flag nearest the subcommand wins.\n const flags: Record<string, unknown> = {\n ...command.optsWithGlobals<Record<string, unknown>>(),\n }\n for (const [key, value] of Object.entries(\n command.opts<Record<string, unknown>>()\n )) {\n if (value !== undefined) {\n flags[key] = value\n }\n }\n const positional = (spec.args ?? []).reduce<Record<string, string>>(\n (acc, arg, index) => {\n const value = actionArgs[index]\n if (typeof value === 'string') {\n // An empty required id would otherwise build a malformed API path\n // (`/v1/x//action`) and surface as a confusing server-side 405.\n if (arg.isRequired && value.trim() === '') {\n throw new CliUsageError(`<${arg.name}> must not be empty.`)\n }\n acc[arg.name] = value\n }\n return acc\n },\n {}\n )\n const ctx = makeContext({ io, flags, rawArgv })\n onContext?.(ctx)\n const invocation = { ctx, args: positional, flags }\n await enforceConfirmation(spec, invocation)\n const outcome = await spec.run(invocation)\n if (outcome !== undefined) {\n printData(ctx, outcome.data, outcome.human)\n if (outcome.exitCode !== undefined && outcome.exitCode !== 0) {\n onExitCode?.(outcome.exitCode)\n }\n }\n })\n}\n\nfunction resolveGroup(program: Command, path: readonly string[]): Command {\n let current = program\n for (const segment of path) {\n const existing = current.commands.find((cmd) => cmd.name() === segment)\n if (existing) {\n current = existing\n continue\n }\n const summary = GROUP_SUMMARIES[segment] ?? ''\n current = current.command(segment).description(summary)\n // Groups accept the global flags too, so `brew-cli contacts --json list`\n // parses instead of failing with a misleading unknown-command error.\n for (const flag of GLOBAL_FLAGS) {\n current.option(flag.flag, flag.summary)\n }\n }\n return current\n}\n\nfunction buildCommandHelpFooter(spec: CommandSpec): string {\n const lines: string[] = ['']\n if (spec.route) {\n lines.push(`API route: ${spec.route.method} ${spec.route.path}`)\n }\n if (spec.commandClass === 'destructive') {\n lines.push('Destructive: requires --yes in non-interactive sessions.')\n }\n if (spec.isCredited === true) {\n lines.push('Credits: this operation consumes Brew credits.')\n }\n lines.push('', 'Examples:')\n for (const example of spec.examples) {\n lines.push(` ${example}`)\n }\n lines.push('')\n return lines.join('\\n')\n}\n","import { createInterface } from 'node:readline/promises'\nimport { run } from './cli'\nimport type { CliIo } from './lib/types'\n\nfunction realIo(): CliIo {\n return {\n stdout: process.stdout,\n stderr: process.stderr,\n isTtyOut: process.stdout.isTTY === true,\n isTtyIn: process.stdin.isTTY === true,\n env: process.env,\n readStdin: async () => {\n process.stdin.setEncoding('utf8')\n let data = ''\n for await (const chunk of process.stdin) {\n data += chunk\n }\n return data\n },\n readLine: async (prompt: string) => {\n const rl = createInterface({\n input: process.stdin,\n output: process.stderr,\n })\n try {\n return await rl.question(prompt)\n } finally {\n rl.close()\n }\n },\n }\n}\n\nprocess.exitCode = await run(process.argv.slice(2), realIo())\n"]}
|