@undefineds.co/xpod 0.3.55 → 0.3.57
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/api/container/index.js +3 -0
- package/dist/api/container/index.js.map +1 -1
- package/dist/api/container/local.js +53 -13
- package/dist/api/container/local.js.map +1 -1
- package/dist/api/container/types.d.ts +6 -0
- package/dist/api/container/types.js.map +1 -1
- package/dist/api/handlers/AdminHandler.d.ts +15 -0
- package/dist/api/handlers/AdminHandler.js +128 -7
- package/dist/api/handlers/AdminHandler.js.map +1 -1
- package/dist/cli/commands/obj.d.ts +36 -0
- package/dist/cli/commands/obj.js +235 -30
- package/dist/cli/commands/obj.js.map +1 -1
- package/dist/components/components.jsonld +1 -0
- package/dist/components/context.jsonld +36 -0
- package/dist/edge/DdnsManager.d.ts +1 -1
- package/dist/edge/DdnsManager.js.map +1 -1
- package/dist/edge/reachability/P2PRealnetAcceptance.js +4 -3
- package/dist/edge/reachability/P2PRealnetAcceptance.js.map +1 -1
- package/dist/edge/reachability/TcpP2PSignalingSession.js +26 -17
- package/dist/edge/reachability/TcpP2PSignalingSession.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/tunnel/NgrokTunnelProvider.d.ts +46 -0
- package/dist/tunnel/NgrokTunnelProvider.js +344 -0
- package/dist/tunnel/NgrokTunnelProvider.js.map +1 -0
- package/dist/tunnel/NgrokTunnelProvider.jsonld +215 -0
- package/dist/tunnel/TunnelProvider.d.ts +2 -2
- package/dist/tunnel/TunnelProvider.js.map +1 -1
- package/dist/tunnel/index.d.ts +1 -0
- package/dist/tunnel/index.js +3 -1
- package/dist/tunnel/index.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.d.ts +62 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js +197 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/core/pod-database.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.d.ts +62 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js +197 -0
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/core/pod-database.js.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/esm/pod.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/dist/pod.d.ts.map +1 -1
- package/node_modules/@undefineds.co/drizzle-solid/package.json +1 -1
- package/package.json +10 -6
- package/static/app/assets/{index-AaQ1qxhy.js → index-C1yksyT4.js} +28 -28
- package/static/app/assets/inrupt-smoke.js +2 -2
- package/static/app/assets/main.css +1 -1
- package/static/app/assets/main.js +10 -50
- package/static/app/auth.html +1 -1
- package/static/dashboard/assets/dashboard-BssaVKTn.css +1 -0
- package/static/dashboard/assets/dashboard-Ckuadl3C.js +54 -0
- package/static/dashboard/auth.html +1 -1
- package/static/dashboard/dashboard.html +2 -2
- package/static/dashboard/reachability.html +221 -0
- package/static/dashboard/reachability.svg +7 -0
- package/static/dashboard/reachability.webmanifest +18 -0
- package/static/dashboard/signal-pod.html +293 -0
- package/static/landing/index.html +1 -1
- package/static/dashboard/assets/dashboard-CTk9cn1-.js +0 -52
- package/static/dashboard/assets/dashboard-VQRsvXx9.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obj.js","sourceRoot":"","sources":["../../../src/cli/commands/obj.ts"],"names":[],"mappings":";;;AAqSA,wDAMC;AAED,kEAuBC;AAED,gEAEC;AAED,8DAEC;AAED,kEAEC;AAMD,sEAoBC;AAoID,gEAwCC;AArhBD,2BAAiD;AACjD,kDAM+B;AAC/B,sDAA8E;AAC9E,0CAAiG;AACjG,8CAMyB;AACzB,+BAAqE;AAuHrE,SAAS,UAAU,CAAI,KAAW;IAChC,OAAO,KAAK;SACT,MAAM,CAAC,KAAK,EAAE;QACb,KAAK,EAAE,GAAG;QACV,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,0BAA0B;KACxC,CAAC;SACD,MAAM,CAAC,MAAM,EAAE;QACd,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,sBAAsB;KACpC,CAAuB,CAAC;AAC7B,CAAC;AAED,SAAS,eAAe,CAA4B,KAAW;IAC7D,OAAO,UAAU,CAAI,KAAK,CAAC;SACxB,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;SACnF,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kDAAkD,EAAE,CAAC;SACtG,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sDAAsD,EAAE,CAAC;SAC3G,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE,CAAC;SAC7E,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE,CAAC;SAC3F,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+EAA+E,EAAE,CAAC;SAClI,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,wDAAwD,EAAE,CAAC;SAC1H,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC;SACxF,MAAM,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,+CAA+C,EAAE,CAAuB,CAAC;AACxJ,CAAC;AAED,SAAS,iBAAiB,CAAC,IAA+C;IACxE,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,eAAe,CAAC,KAAa,EAAE,IAAY;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAY,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,wBAAe,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,KAAa;IACxC,OAAO,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAA,iBAAY,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,KAAa;IACpC,OAAO,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;SAChC,KAAK,CAAC,QAAQ,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO,MAAwB,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,IAAI,wBAAe,CAAC,eAAe,EAAE,yBAAyB,KAAK,GAAG,CAAC,KAAK,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAClG,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC;AAC9D,CAAC;AAED,SAAS,uBAAuB,CAAC,MAAc;IAC7C,MAAM,KAAK,GAAG,kBAAS,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IACxD,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,OAAO,kBAAS,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAC1C,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,UAAU;QACpD,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,UAAU;QAChE,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,UAAU,CACnE,IAAI,IAAI,CAAC;AACZ,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc;IACvC,MAAM,UAAU,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,wBAAe,CAAC,gBAAgB,EAAE,iDAAiD,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5G,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe,EAAE,IAA4B;IACxE,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC3E,CAAC;AAED,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,wBAAe,CAAC,aAAa,EAAE,6BAA6B,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAC;AAC5C,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,KAA+B;IAClE,IAAI,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC;QAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,wBAAe,CAAC,aAAa,EAAE,8BAA8B,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5D,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,iBAAiB,CAAC,UAA8B,EAAE,MAA+B,EAAE,IAAI,GAAG,eAAe;IAChH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACjF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,wBAAe,CAAC,IAAI,EAAE,sCAAsC,UAAU,CAAC,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpH,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,UAA8B,EAAE,MAA+B;IAC3F,iBAAiB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAClG,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,wBAAe,CAAC,oBAAoB,EAAE,4BAA4B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACvG,CAAC;AACH,CAAC;AAED,SAAgB,sBAAsB,CAAC,UAA8B,EAAE,KAA8B;IACnG,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,KAAK,MAAM,CAAE,GAAG,EAAE,IAAI,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAClD,QAAQ,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAgB,2BAA2B,CAAC,UAA8B,EAAE,OAAe,EAAE,GAAmB;IAC9G,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;IAC9B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;IAC1B,iBAAiB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACrC,oBAAoB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAEtC,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,GAAG,EAAE,CAAC;IACpC,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACzC,IAAI,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,UAAU,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,IAAI,CAC5F,CAAC;IACF,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC3C,eAAe,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,UAAU,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,IAAI,CACvG,CAAC;IACF,MAAM,OAAO,GAAG;QACd,IAAI,OAAO,QAAQ,UAAU,CAAC,KAAK,GAAG;QACtC,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;aACtB,MAAM,CAAC,CAAC,CAAE,KAAK,EAAE,KAAK,CAAE,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;aACpF,GAAG,CAAC,CAAC,CAAE,KAAK,EAAE,KAAK,CAAE,EAAE,EAAE,CAAC,IAAI,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;KAC/G,CAAC;IAEF,OAAO,eAAe,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACvI,CAAC;AAED,SAAgB,0BAA0B,CAAC,UAA8B,EAAE,OAAe,EAAE,GAA4B;IACtH,OAAO,2BAA2B,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,SAAgB,yBAAyB,CAAC,OAAe,EAAE,SAAiB,EAAE,MAAc;IAC1F,OAAO,qBAAqB,OAAO,MAAM,SAAS,KAAK,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;AAClF,CAAC;AAED,SAAgB,2BAA2B,CAAC,OAAe;IACzD,OAAO,gBAAgB,OAAO,6BAA6B,OAAO,cAAc,CAAC;AACnF,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9D,CAAC;AAED,SAAgB,6BAA6B,CAAC,KAA8B;IAM1E,MAAM,OAAO,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAC7B,MAAM,SAAS,GAA2D,EAAE,CAAC;IAE7E,KAAK,MAAM,GAAG,IAAI,CAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAW,EAAE,CAAC;QAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,wBAAe,CAAC,eAAe,EAAE,4BAA4B,GAAG,qBAAqB,EAAE,CAAC,CAAC,CAAC;QACtG,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACvB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAA2B,EAC3B,QAA4B,EAC5B,GAAoC;IAEpC,IAAI,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAC;IAC9B,IAAI,OAAO,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,wBAAe,CAAC,mBAAmB,EAAE,eAAe,GAAG,2BAA2B,EAAE,CAAC,CAAC,CAAC;IACnG,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,cAAc,CAAC,KAAgB;IACtC,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YAC5D,KAAK,MAAM,CAAE,GAAG,EAAE,KAAK,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC9B,MAAM,IAAI,wBAAe,CAAC,kBAAkB,EAAE,mBAAmB,GAAG,wBAAwB,EAAE,CAAC,CAAC,CAAC;gBACnG,CAAC;gBACD,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACzB,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,wBAAe,CAAC,kBAAkB,EAAE,sCAAsC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QACpG,CAAC;QACD,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,IAAI,uBAAuB,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,UAAU,CAAC;IACvD,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IAC1C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,OAAuB,EAAE,OAAe;IAC/E,MAAM,MAAM,GAAG,IAAA,gCAAqB,EAAC,OAAO,EAAE,IAAA,2BAAqB,EAAC,OAAO,CAAC,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,MAAM,IAAA,wBAAa,EAAC,OAAO,EAAE,MAAM,EAAE;QACpD,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE;KACnC,CAAC,CAAC;IACH,IAAA,mBAAQ,EAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,qBAAqB,EAAE,+BAA+B,OAAO,EAAE,CAAC,CAAC;IACrI,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,kBAAS,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAChG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,wBAAe,CAAC,kBAAkB,EAAE,qEAAqE,EAAE,CAAC,EAAE;YACtH,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;SACrD,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,wBAAe,CAAC,iBAAiB,EAAE,iFAAiF,EAAE,CAAC,CAAC,CAAC;AACrI,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,OAAuB,EAAE,IAAqB;IACjF,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACzB,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC3B,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC7B,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IAErB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM;YAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzD,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC5D,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,QAAQ;YAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/D,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI;YAAE,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;IACrD,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACnC,CAAC;IACD,MAAM,EACJ,KAAK,EACL,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,aAAa,EACvB,IAAI,EAAE,SAAS,GAChB,GAAG,6BAA6B,CAAC,WAAW,CAAC,CAAC;IAE/C,OAAO,GAAG,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IAClE,QAAQ,GAAG,qBAAqB,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;IACtE,IAAI,GAAG,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAEtD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,IAAA,gCAAqB,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7F,MAAM,WAAW,GAAG,QAAQ;QAC1B,CAAC,CAAC,IAAA,gCAAqB,EAAC,OAAO,EAAE,IAAA,2BAAqB,EAAC,QAAQ,CAAC,CAAC,CAAC,WAAW;QAC7E,CAAC,CAAC,IAAI;YACJ,CAAC,CAAC,IAAA,gCAAqB,EAAC,OAAO,EAAE,IAAA,2BAAqB,EAAC,IAAI,CAAC,CAAC,CAAC,WAAW;YACzE,CAAC,CAAC,UAAU;gBACV,CAAC,CAAC,IAAA,2BAAqB,EAAC,UAAU,CAAC;gBACnC,CAAC,CAAC,SAAS,CAAC;IAElB,MAAM,UAAU,GAAG,MAAM;QACvB,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC;QAC3B,CAAC,CAAC,UAAU;YACV,CAAC,CAAC,MAAM,yBAAyB,CAAC,OAAO,EAAE,UAAU,CAAC;YACtD,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,wBAAe,CAAC,iBAAiB,EAAE,uGAAuG,EAAE,CAAC,CAAC,CAAC;IAC3J,CAAC;IAED,OAAO;QACL,UAAU;QACV,OAAO,EAAE,UAAU;QACnB,WAAW;QACX,KAAK;QACL,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QACxC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC;QACtD,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,KAAK;KACpD,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAA8B,EAAE,KAAc;IACrE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,SAAgB,0BAA0B,CAAC,QAA6B;IACtE,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACvC,iBAAiB,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,OAAO,GAAG,CAAE,eAAe,UAAU,CAAC,KAAK,KAAK,CAAE,CAAC;IACzD,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,sBAAsB,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,gCAAgC,IAAI,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7J,CAAC;IAED,KAAK,MAAM,CAAE,KAAK,EAAE,eAAe,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,wBAAwB,eAAe,CAAC,SAAS,KAAK,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,MAAM,CAAE,KAAK,EAAE,KAAK,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,eAAe;YAAE,SAAS;QAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,UAAU,QAAQ,CAAC,UAAU,KAAK,EAAE,CAAC,MAAM,eAAe,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACrG,OAAO,CAAC,IAAI,CAAC,aAAa,eAAe,CAAC,SAAS,KAAK,QAAQ,CAAC,UAAU,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3F,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,aAAa,eAAe,CAAC,SAAS,KAAK,eAAe,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACvG,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAE,KAAK,EAAE,SAAS,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACtE,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,wBAAe,CAAC,mBAAmB,EAAE,6CAA6C,UAAU,CAAC,GAAG,KAAK,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7H,CAAC;QACD,IAAI,eAAe,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACnC,MAAM,IAAI,wBAAe,CAAC,wBAAwB,EAAE,qCAAqC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACvG,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,aAAa,eAAe,CAAC,SAAS,KAAK,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzE,OAAO,mBAAmB,SAAS,eAAe,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,QAAQ,CAAC,KAAK,EAAE,CAAC;AACvG,CAAC;AAED,SAAS,cAAc,CAAC,OAAkC,EAAE,KAA8B;IACxF,IAAI,CAAC,OAAO,EAAE,KAAK;QAAE,OAAO,SAAS,CAAC;IACtC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IACjD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;IACvD,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,KAAK,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,KAAK,GAAG,CAAC;IAC3D,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,OAAO,CAAC,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC;AACvB,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAAuB,EAAE,OAA2B;IAC5E,MAAM,KAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC/C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAA,gCAAqB,EAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;gBAClE,MAAM,QAAQ,GAAG,MAAM,IAAA,wBAAa,EAAC,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC1E,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACnF,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;QACnD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,OAAuB,EAAE,QAA6B;IAC1F,MAAM,QAAQ,GAAG,IAAA,2BAAqB,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,IAAA,wBAAa,EAAC,OAAO,EAAE;QAC5C,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,QAAQ;QACrB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,EAAE;QACD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,MAAM,EAAE,iCAAiC;YACzC,cAAc,EAAE,0BAA0B;SAC3C;QACD,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH,IAAA,mBAAQ,EAAC,QAAQ,EAAE,kBAAkB,EAAE,8BAA8B,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;IAChG,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAEpC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QACnE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;QACvC,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACxB,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAE,KAAK,EAAE,eAAe,CAAE,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACpF,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;YACvE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC;YAChE,CAAC;QACH,CAAC;QACD,OAAO,CAAC;gBACN,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG;gBAC/B,OAAO;gBACP,WAAW,EAAE,IAAA,2BAAqB,EAAC,OAAO,CAAC;gBAC3C,MAAM;aACP,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC7B,MAAM,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,OAA2B;IAClD,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;QACtD,KAAK;QACL,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,IAAI;QACV,GAAG,MAAM;KACV,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,KAM3B;IACC,MAAM,MAAM,GAAG,IAAA,gCAAqB,EAAC,KAAK,CAAC,OAAO,EAAE,IAAA,2BAAqB,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1F,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,2BAA2B,EAAE,CAAC;IACxF,IAAI,KAAK,CAAC,OAAO;QAAE,OAAO,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC;IACvD,MAAM,QAAQ,GAAG,MAAM,IAAA,wBAAa,EAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE;QAC1D,MAAM,EAAE,OAAO;QACf,OAAO;QACP,IAAI,EAAE,KAAK,CAAC,MAAM;KACnB,CAAC,CAAC;IACH,IAAA,mBAAQ,EAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,EAAE,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/E,OAAO,IAAA,uBAAY,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,YAAY,CAAC,KASrB;IACC,OAAO;QACL,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO;QAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE;YACT;gBACE,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB;SACF;QACD,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;KACvB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,4BAA4B,CAAC,OAAuB,EAAE,MAA0B,EAAE,OAAe;IAC9G,OAAO,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1F,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,IAAkB;IACnD,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAkB,EAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAA,gCAAqB,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC;IACzE,MAAM,UAAU,GAAG,MAAM,4BAA4B,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrF,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,0BAA0B,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,YAAY,CAAC;QACxB,WAAW,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,EAAE;QACrC,OAAO;QACP,OAAO,EAAE,+BAA+B,UAAU,CAAC,YAAY,EAAE;QACjE,OAAO;QACP,MAAM,EAAE,UAAU,CAAC,GAAG;QACtB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;QACtB,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,CAAE,sBAAsB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAE;KAClD,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,CAAC;IAClB,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;QAClC,OAAO;QACP,OAAO;QACP,MAAM;QACN,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;QACzB,SAAS,EAAE,kBAAkB;KAC9B,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAAiB;IACjD,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAkB,EAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAA,gCAAqB,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC;IACzE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QACtE,CAAC,CAAC,MAAM,4BAA4B,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC;QACnE,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAC/B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,wBAAe,CAAC,mBAAmB,EAAE,+CAA+C,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;QAChH,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,wBAAe,CAAC,wBAAwB,EAAE,qCAAqC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3G,CAAC;QACD,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IAC9B,CAAC;IACD,MAAM,MAAM,GAAG,yBAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,YAAY,CAAC;QACxB,WAAW,EAAE,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE;QACpC,OAAO;QACP,OAAO,EAAE,4CAA4C;QACrD,OAAO;QACP,MAAM,EAAE,UAAU,EAAE,GAAG;QACvB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;QACtB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;KAC3C,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,CAAC;IAClB,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;QAClC,OAAO;QACP,OAAO;QACP,MAAM;QACN,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;QACzB,SAAS,EAAE,iBAAiB;KAC7B,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAAmB;IACrD,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAkB,EAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,IAAA,gCAAqB,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC;IACzE,MAAM,UAAU,GAAG,MAAM,4BAA4B,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrF,MAAM,MAAM,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,YAAY,CAAC;QACxB,WAAW,EAAE,aAAa,IAAI,CAAC,GAAG,EAAE,EAAE;QACtC,OAAO;QACP,OAAO,EAAE,gCAAgC,UAAU,CAAC,YAAY,EAAE;QAClE,OAAO;QACP,MAAM,EAAE,UAAU,CAAC,GAAG;QACtB,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;QACtB,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,CAAC;IAClB,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC;QAClC,OAAO;QACP,OAAO;QACP,MAAM;QACN,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;QACzB,SAAS,EAAE,mBAAmB;KAC/B,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAAuB,EAAE,GAAmB,EAAE,KAAa,EAAE,MAAe;IACvG,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,wBAAe,CAAC,iBAAiB,EAAE,oEAAoE,EAAE,CAAC,CAAC,CAAC;IACxH,CAAC;IACD,MAAM,WAAW,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC;IAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,wBAAe,CAAC,0BAA0B,EAAE,yDAAyD,EAAE,CAAC,CAAC,CAAC;IACtH,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,gCAAqB,EAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAA,2BAAqB,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC9G,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,KAAK;YACL,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,CAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,wBAAe,CAAC,uBAAuB,EAAE,oCAAoC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAClG,CAAC;IAED,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,IAAiC,CAAC;IACtC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpB,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,IAAA,uBAAY,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACjB,OAAO,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;QAChE,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YAChB,OAAO,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,WAAW,IAAI,YAAY,CAAC;QAC5D,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,wBAAe,CAAC,eAAe,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IACD,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;IAEnD,MAAM,QAAQ,GAAG,MAAM,IAAA,wBAAa,EAAC,OAAO,EAAE,MAAM,EAAE;QACpD,MAAM,EAAE,EAAE,CAAC,WAAW,EAAE;QACxB,OAAO;QACP,IAAI;KACL,CAAC,CAAC;IACH,IAAA,mBAAQ,EAAC,QAAQ,EAAE,mBAAmB,EAAE,4BAA4B,KAAK,EAAE,CAAC,CAAC;IAC7E,OAAO;QACL,KAAK;QACL,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,EAAE;QACb,GAAG,IAAA,uBAAY,EAAC,MAAM,EAAE,QAAQ,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,OAAuB,EAAE,GAAmB,EAAE,KAAa,EAAE,MAAe;IAC9G,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAO,CAAC,CAAC;IAClD,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,QAAQ,CAAC;IAC9B,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,wBAAe,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC;QAC/F,CAAC;QACD,MAAM,OAAO,GAAG,IAAA,gCAAqB,EAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC;QACxE,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,0BAA0B,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YACpE,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACxG,CAAC;YACD,OAAO;gBACL,KAAK;gBACL,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;gBACzC,SAAS,EAAE,EAAE;gBACb,MAAM,EAAE,UAAU,CAAC,GAAG;gBACtB,OAAO;gBACP,GAAG,EAAE,sBAAsB,CAAC,UAAU,EAAE,GAAG,CAAC;aAC7C,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBAClC,MAAM,IAAI,wBAAe,CAAC,sBAAsB,EAAE,yCAAyC,EAAE,CAAC,CAAC,CAAC;YAClG,CAAC;YACD,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/C,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;YAC1D,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAClC,MAAM,IAAI,wBAAe,CAAC,wBAAwB,EAAE,qCAAqC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YAC/G,CAAC;YACD,IAAI,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,wBAAe,CAAC,mBAAmB,EAAE,+CAA+C,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YACpH,CAAC;YACD,MAAM,MAAM,GAAG,yBAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACzE,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACvG,CAAC;YACD,OAAO;gBACL,KAAK;gBACL,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;gBACzC,SAAS,EAAE,EAAE;gBACb,MAAM,EAAE,UAAU,CAAC,GAAG;gBACtB,OAAO;gBACP,SAAS;gBACT,MAAM,EAAE,GAAG,CAAC,MAAM;aACnB,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;YACpD,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC;YACzG,CAAC;YACD,OAAO;gBACL,KAAK;gBACL,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;gBACzC,SAAS,EAAE,EAAE;gBACb,MAAM,EAAE,UAAU,CAAC,GAAG;gBACtB,OAAO;aACR,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,wBAAe,CAAC,uBAAuB,EAAE,iCAAiC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,OAAO,GAAG,IAAA,yBAAgB,GAAE,CAAC;IACnC,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,SAAS,EAAE,UAAU,CAAC,GAAG;QACzB,SAAS,EAAE,QAAQ;QACnB,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE;QACtB,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE;KACnB,CAAC,CAAC;IACH,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,wBAAe,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IACtE,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,2BAA2B,CAAC,UAAU,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC;IACzG,CAAC;IAED,OAAO;QACL,KAAK;QACL,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;QACzC,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,UAAU,CAAC,GAAG;QACtB,OAAO;QACP,WAAW,EAAE,IAAA,2BAAqB,EAAC,OAAO,CAAC;QAC3C,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE;QAC1B,KAAK,EAAE,sBAAsB,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1D,GAAG,EAAE,sBAAsB,CAAC,UAAU,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;KACvD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,KAK1B;IACC,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAkB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAE,KAAK,EAAE,WAAW,CAAE,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG;YACV,GAAG,WAAW;YACd,MAAM,EAAE,WAAW,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa;SAClD,CAAC;QACF,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM;gBACrB,CAAC,CAAC,MAAM,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;gBAC/D,CAAC,CAAC,MAAM,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,wBAAe;gBAC1C,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,wBAAe,CAAC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACzF,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,KAAmB;IACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IACjJ,CAAC;AACH,CAAC;AAED,MAAM,aAAa,GAAyC;IAC1D,OAAO,EAAE,eAAe;IACxB,QAAQ,EAAE,qDAAqD;IAC/D,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,UAAU,CAAgB,KAAK,CAAC;SAC7B,UAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC;SAC/G,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,2CAA2C,EAAE,CAAC;SAChG,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;SACpF,KAAK,CAAC,iBAAiB,CAAC;IAC7B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC;gBAC9B,IAAI;gBACJ,IAAI,EAAE,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAChC,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI;aAC7B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;gBAC5C,CAAC,CAAC,iBAAiB,CAAC;YACtB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAA,uBAAc,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC5B,OAAO;YACT,CAAC;YACD,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,uBAAc,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,aAAa,GAAyC;IAC1D,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,qCAAqC;IAC/C,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,UAAU,CAAgB,KAAK,CAAC;SAC7B,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;SACvG,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC;SACzG,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,2CAA2C,EAAE,CAAC;SAChG,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;SACpF,KAAK,CAAC,iBAAiB,CAAC;IAC7B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC;gBAC9B,IAAI;gBACJ,IAAI,EAAE,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;gBAChC,aAAa,EAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG;gBACjD,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,IAAI;aAC7B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;gBAC5C,CAAC,CAAC,iBAAiB,CAAC;YACtB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAA,uBAAc,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBAC5B,OAAO;YACT,CAAC;YACD,UAAU,CAAC,KAAK,CAAC,CAAC;YAClB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,uBAAc,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,WAAW,GAA2C;IAC1D,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,gCAAgC;IAC1C,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,eAAe,CAAkB,KAAK,CAAC;SACpC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;IAC5G,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAkB,EAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAChE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAA,wBAAe,EAAC;oBACd,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG;oBAC/B,OAAO;iBACR,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,uBAAc,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,aAAa,GAA2C;IAC5D,OAAO,EAAE,mBAAmB;IAC5B,QAAQ,EAAE,2CAA2C;IACrD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,eAAe,CAAkB,KAAK,CAAC;SACpC,UAAU,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,wEAAwE,EAAE,CAAC;SACrJ,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAE,OAAO,CAAE,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;SAC1G,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;IACvE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAkB,EAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAChE,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,IAAA,kBAAa,EAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAC1C,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAA,wBAAe,EAAC;oBACd,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,GAAG;oBAC/B,KAAK,EAAE,OAAO,CAAC,MAAM;oBACrB,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI;oBACrB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;iBACjC,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,uBAAc,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,UAAU,GAAsC;IACpD,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,2CAA2C;IACrD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,UAAU,CAAa,KAAK,CAAC;SAC1B,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;SACnF,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;SACpH,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;SAC3E,MAAM,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,+CAA+C,EAAE,CAAC;IACjI,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAkB,EAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE;gBACpD,GAAG,IAAI;gBACP,QAAQ,EAAE,SAAS;gBACnB,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAChE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,wBAAe,CAAC,kBAAkB,EAAE,qBAAqB,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YACxF,CAAC;YACD,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;YACpD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,IAAA,kBAAa,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACzC,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAA,wBAAe,EAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;gBACnG,OAAO;YACT,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,uBAAc,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,YAAY,GAAwC;IACxD,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,8CAA8C;IACxD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,UAAU,CAAe,KAAK,CAAC;SAC5B,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sFAAsF,EAAE,CAAC;SACzI,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;SACpH,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,+CAA+C,EAAE,CAAC;SACnH,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;SACjG,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,yCAAyC,EAAE,CAAC;SAC9F,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;SACzE,KAAK,CAAC,iBAAiB,CAAC;IAC7B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAA,wBAAe,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBACpE,OAAO;YACT,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzI,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,uBAAc,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,WAAW,GAAuC;IACtD,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,kDAAkD;IAC5D,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,UAAU,CAAc,KAAK,CAAC;SAC3B,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uEAAuE,EAAE,CAAC;SAC1H,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;SACpH,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;SAC7G,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;SAC3F,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;SACjG,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,yCAAyC,EAAE,CAAC;SAC9F,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;SACzE,KAAK,CAAC,iBAAiB,CAAC;IAC7B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAA,wBAAe,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBACpE,OAAO;YACT,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxI,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,uBAAc,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,aAAa,GAAyC;IAC1D,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,yDAAyD;IACnE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,UAAU,CAAgB,KAAK,CAAC;SAC7B,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sFAAsF,EAAE,CAAC;SACzI,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;SACpH,MAAM,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;SACjG,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,yCAAyC,EAAE,CAAC;SAC9F,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;SACzE,KAAK,CAAC,iBAAiB,CAAC;IAC7B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAA,wBAAe,EAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;gBACpE,OAAO;YACT,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1I,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,uBAAc,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,YAAY,GAA2C;IAC3D,OAAO,EAAE,kBAAkB;IAC3B,QAAQ,EAAE,4DAA4D;IACtE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,eAAe,CAAkB,KAAK,CAAC;SACpC,UAAU,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,wEAAwE,EAAE,CAAC;SACrJ,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAE,OAAO,CAAE,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC;SAChH,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;IACnG,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,iCAAkB,EAAC,IAAI,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAChE,MAAM,QAAQ,GAAG;gBACf,aAAa,EAAE,KAAK;gBACpB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;gBACzB,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,4FAA4F;aACtG,CAAC;YACF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAA,wBAAe,EAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;gBACzD,OAAO;YACT,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;YAChF,KAAK,MAAM,CAAE,KAAK,EAAE,MAAM,CAAE,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;oBACzB,KAAK;oBACL,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,UAAU;oBAClB,GAAG,MAAM;iBACV,CAAC,CAAC,CAAC;YACN,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,uBAAc,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF,CAAC;AAEW,QAAA,UAAU,GAAmC;IACxD,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,oCAAoC;IAC9C,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAChB,KAAK;SACH,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,UAAU,CAAC;SACnB,OAAO,CAAC,WAAW,CAAC;SACpB,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,YAAY,CAAC;SACrB,OAAO,CAAC,WAAW,CAAC;SACpB,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,YAAY,CAAC;SACrB,aAAa,CAAC,CAAC,EAAE,qCAAqC,CAA8B;IACzF,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;CAClB,CAAC","sourcesContent":["import type { Argv, CommandModule } from 'yargs';\nimport { readFileSync, writeFileSync } from 'fs';\nimport {\n createPodStorage,\n podSchema,\n type PodModelDescriptor,\n type PodModelFieldDescriptor,\n type PodStorageMutationPlan,\n} from '@undefineds.co/models';\nimport { requireAuthContext, type CliAuthContext } from '../lib/auth-context';\nimport { CliCommandError, handleCliError, writeJsonItems, writeJsonResult } from '../lib/output';\nimport {\n ensureOk,\n fetchResource,\n readBodyFile,\n resolveResourceTarget,\n responseData,\n} from '../lib/resource';\nimport { documentResourceInput, resolveSparqlEndpoint } from './rdf';\n\ninterface ObjArgs {\n url?: string;\n json: boolean;\n}\n\ninterface ObjImportArgs extends ObjArgs {\n file: string;\n 'dry-run'?: boolean;\n commit?: boolean;\n}\n\ninterface ObjUpsertArgs extends ObjArgs {\n schema: string;\n from: string;\n 'dry-run'?: boolean;\n commit?: boolean;\n}\n\ninterface ObjSelectorArgs extends ObjArgs {\n selector?: string;\n schema?: string;\n subject?: string;\n resource?: string;\n path?: string;\n where?: string;\n status?: string;\n relation?: string[];\n format: string;\n out?: string;\n limit: number;\n since?: string;\n 'include-metadata': boolean;\n}\n\ninterface ObjGetArgs extends ObjArgs {\n schema?: string;\n subject: string;\n out?: string;\n 'include-metadata': boolean;\n}\n\ninterface ObjPatchArgs extends ObjArgs {\n schema?: string;\n subject: string;\n set: string;\n 'if-match'?: string;\n 'dry-run'?: boolean;\n commit?: boolean;\n}\n\ninterface ObjLinkArgs extends ObjArgs {\n schema?: string;\n subject: string;\n predicate: string;\n object: string;\n 'if-match'?: string;\n 'dry-run'?: boolean;\n commit?: boolean;\n}\n\ninterface ObjDeleteArgs extends ObjArgs {\n schema?: string;\n subject: string;\n 'if-match'?: string;\n 'dry-run'?: boolean;\n commit?: boolean;\n}\n\ninterface ObjMutationRow {\n op?: string;\n schema?: string;\n match?: Record<string, unknown>;\n set?: Record<string, unknown>;\n subject?: string;\n path?: string;\n resource?: string;\n predicate?: string;\n object?: string;\n ifMatch?: string;\n body?: string;\n from?: string;\n contentType?: string;\n}\n\ninterface ResolvedObjSelector {\n descriptor: PodModelDescriptor;\n subject?: string;\n resourceUrl?: string;\n where: Record<string, unknown>;\n relations: Record<string, string>;\n limit: number;\n includeMetadata: boolean;\n}\n\ninterface DescriptorObject {\n schema: string;\n subject: string;\n resourceUrl: string;\n etag?: string | null;\n revision?: string | null;\n object: Record<string, unknown>;\n}\n\ntype SparqlBinding = {\n type?: string;\n value?: string;\n datatype?: string;\n};\n\ntype ItemResult = {\n index: number;\n ok: boolean;\n code: string;\n message?: string;\n [key: string]: unknown;\n};\n\nfunction objOptions<T>(yargs: Argv): Argv<T> {\n return yargs\n .option('url', {\n alias: 'u',\n type: 'string',\n description: 'Server base URL override',\n })\n .option('json', {\n type: 'boolean',\n default: false,\n description: 'Output JSON envelope',\n }) as unknown as Argv<T>;\n}\n\nfunction selectorOptions<T extends ObjSelectorArgs>(yargs: Argv): Argv<T> {\n return objOptions<T>(yargs)\n .option('schema', { type: 'string', description: 'Schema URI or descriptor alias' })\n .option('subject', { type: 'string', description: 'Exact object subject URI or Pod-relative subject' })\n .option('resource', { type: 'string', description: 'Exact RDF document/resource URI or Pod-relative path' })\n .option('path', { type: 'string', description: 'Pod-relative resource path' })\n .option('where', { type: 'string', description: 'JSON object of descriptor field filters' })\n .option('status', { type: 'string', description: 'Shortcut for --where {\"status\": \"...\"} when the descriptor has a status field' })\n .option('relation', { type: 'array', string: true, description: 'Descriptor URI relation filter, field=uri. Repeatable.' })\n .option('limit', { type: 'number', default: 100, description: 'Maximum number of rows' })\n .option('include-metadata', { type: 'boolean', default: true, description: 'Include etag/revision metadata when available' }) as unknown as Argv<T>;\n}\n\nfunction mutationModeCheck(argv: { 'dry-run'?: boolean; commit?: boolean }): true {\n if (argv['dry-run'] === argv.commit) {\n throw new Error('Specify exactly one of --dry-run or --commit.');\n }\n return true;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction parseJsonObject(value: string, code: string): Record<string, unknown> {\n try {\n const parsed = JSON.parse(value) as unknown;\n if (!isRecord(parsed)) {\n throw new Error('Expected a JSON object.');\n }\n return parsed;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new CliCommandError(code, message, 2);\n }\n}\n\nasync function readStdinText(): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of process.stdin) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk)));\n }\n return Buffer.concat(chunks).toString('utf-8');\n}\n\nasync function readTextInput(input: string): Promise<string> {\n return input === '-' ? readStdinText() : readFileSync(input, 'utf-8');\n}\n\nasync function readJsonl(input: string): Promise<ObjMutationRow[]> {\n return (await readTextInput(input))\n .split(/\\r?\\n/u)\n .map((line) => line.trim())\n .filter(Boolean)\n .map((line, index) => {\n try {\n const parsed = JSON.parse(line) as unknown;\n if (!isRecord(parsed)) {\n throw new Error('Expected a JSON object.');\n }\n return parsed as ObjMutationRow;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new CliCommandError('invalid_jsonl', `Invalid JSONL at line ${index + 1}: ${message}`, 2);\n }\n });\n}\n\nfunction descriptorLocalName(value: string): string {\n return value.split(/[\\/#]/u).filter(Boolean).pop() ?? value;\n}\n\nfunction resolveDescriptorOrNull(schema: string): PodModelDescriptor | null {\n const exact = podSchema.describe({ schemaUri: schema });\n if (exact) return exact;\n\n const normalized = schema.trim().toLowerCase();\n return podSchema.list().find((descriptor) =>\n descriptor.resourceKind.toLowerCase() === normalized ||\n descriptorLocalName(descriptor.uri).toLowerCase() === normalized ||\n descriptorLocalName(descriptor.class).toLowerCase() === normalized,\n ) ?? null;\n}\n\nfunction resolveDescriptor(schema: string): PodModelDescriptor {\n const descriptor = resolveDescriptorOrNull(schema);\n if (!descriptor) {\n throw new CliCommandError('schema_unknown', `Schema is not known by @undefineds.co/models: ${schema}`, 2);\n }\n return descriptor;\n}\n\nfunction resourceUrlFromPlan(podRoot: string, plan: PodStorageMutationPlan): string {\n return new URL(plan.resourceUri.replace(/^\\/+/, ''), podRoot).toString();\n}\n\nfunction varName(field: string): string {\n return `v_${field.replace(/[^A-Za-z0-9_]/gu, '_')}`;\n}\n\nfunction fieldVar(field: string): string {\n return `?${varName(field)}`;\n}\n\nfunction sparqlIri(value: string): string {\n if (!/^https?:\\/\\//iu.test(value)) {\n throw new CliCommandError('invalid_uri', `Expected an absolute URI: ${value}`, 2);\n }\n return `<${value.replace(/[<>]/gu, '')}>`;\n}\n\nfunction sparqlValue(value: unknown, field?: PodModelFieldDescriptor): string {\n if (field?.type === 'uri') {\n if (typeof value !== 'string') {\n throw new CliCommandError('invalid_uri', `Field expects a URI value: ${String(value)}`, 2);\n }\n return sparqlIri(value);\n }\n if (typeof value === 'number' || typeof value === 'boolean') {\n return JSON.stringify(value);\n }\n if (field?.type === 'json') {\n return JSON.stringify(JSON.stringify(value));\n }\n return JSON.stringify(String(value));\n}\n\nfunction assertKnownFields(descriptor: PodModelDescriptor, values: Record<string, unknown>, code = 'field_unknown'): void {\n const unknown = Object.keys(values).filter((field) => !descriptor.fields[field]);\n if (unknown.length > 0) {\n throw new CliCommandError(code, `Fields are not known by descriptor ${descriptor.uri}: ${unknown.join(', ')}`, 2);\n }\n}\n\nfunction assertWritableFields(descriptor: PodModelDescriptor, values: Record<string, unknown>): void {\n assertKnownFields(descriptor, values);\n const invalid = Object.keys(values).filter((field) => !descriptor.writableFields.includes(field));\n if (invalid.length > 0) {\n throw new CliCommandError('invalid_set_fields', `Fields are not writable: ${invalid.join(', ')}`, 2);\n }\n}\n\nexport function redactDescriptorObject(descriptor: PodModelDescriptor, value: Record<string, unknown>): Record<string, unknown> {\n const redacted: Record<string, unknown> = {};\n for (const [ key, item ] of Object.entries(value)) {\n redacted[key] = descriptor.fields[key]?.secret ? '[redacted]' : item;\n }\n return redacted;\n}\n\nexport function buildDescriptorUpsertSparql(descriptor: PodModelDescriptor, subject: string, row: ObjMutationRow): string {\n const fields = descriptor.fields;\n const match = row.match ?? {};\n const set = row.set ?? {};\n assertKnownFields(descriptor, match);\n assertWritableFields(descriptor, set);\n\n const merged = { ...match, ...set };\n const deleteFields = Object.keys(set).filter((field) => fields[field]);\n const deletes = deleteFields.map((field) =>\n `<${subject}> <${fields[field].predicate}> ?old_${field.replace(/[^A-Za-z0-9_]/gu, '_')} .`,\n );\n const optionals = deleteFields.map((field) =>\n `OPTIONAL { <${subject}> <${fields[field].predicate}> ?old_${field.replace(/[^A-Za-z0-9_]/gu, '_')} }`,\n );\n const inserts = [\n `<${subject}> a <${descriptor.class}>`,\n ...Object.entries(merged)\n .filter(([ field, value ]) => fields[field] && value !== undefined && value !== null)\n .map(([ field, value ]) => `<${subject}> <${fields[field].predicate}> ${sparqlValue(value, fields[field])}`),\n ];\n\n return `DELETE {\\n ${deletes.join('\\n ')}\\n}\\nINSERT {\\n ${inserts.join(' .\\n ')} .\\n}\\nWHERE {\\n ${optionals.join('\\n ')}\\n}`;\n}\n\nexport function buildDescriptorPatchSparql(descriptor: PodModelDescriptor, subject: string, set: Record<string, unknown>): string {\n return buildDescriptorUpsertSparql(descriptor, subject, { set });\n}\n\nexport function buildDescriptorLinkSparql(subject: string, predicate: string, object: string): string {\n return `INSERT DATA {\\n <${subject}> <${predicate}> ${sparqlIri(object)} .\\n}`;\n}\n\nexport function buildDescriptorDeleteSparql(subject: string): string {\n return `DELETE {\\n <${subject}> ?p ?o .\\n}\\nWHERE {\\n <${subject}> ?p ?o .\\n}`;\n}\n\nfunction parseWhere(where?: string): Record<string, unknown> {\n return where ? parseJsonObject(where, 'invalid_where') : {};\n}\n\nexport function extractReservedWhereSelectors(where: Record<string, unknown>): {\n where: Record<string, unknown>;\n subject?: string;\n resource?: string;\n path?: string;\n} {\n const filters = { ...where };\n const selectors: { subject?: string; resource?: string; path?: string } = {};\n\n for (const key of [ 'subject', 'resource', 'path' ] as const) {\n const value = filters[key];\n if (value === undefined) continue;\n if (typeof value !== 'string') {\n throw new CliCommandError('invalid_where', `Reserved selector field \"${key}\" must be a string.`, 2);\n }\n selectors[key] = value;\n delete filters[key];\n }\n\n return { where: filters, ...selectors };\n}\n\nfunction applyReservedSelector(\n current: string | undefined,\n reserved: string | undefined,\n key: 'subject' | 'resource' | 'path',\n): string | undefined {\n if (!reserved) return current;\n if (current && current !== reserved) {\n throw new CliCommandError('selector_conflict', `Conflicting ${key} selectors were provided.`, 2);\n }\n return reserved;\n}\n\nfunction parseRelations(input?: string[]): Record<string, string> {\n const relations: Record<string, string> = {};\n for (const item of input ?? []) {\n const trimmed = item.trim();\n if (!trimmed) continue;\n if (trimmed.startsWith('{')) {\n const parsed = parseJsonObject(trimmed, 'invalid_relation');\n for (const [ key, value ] of Object.entries(parsed)) {\n if (typeof value !== 'string') {\n throw new CliCommandError('invalid_relation', `Relation filter ${key} must be a URI string.`, 2);\n }\n relations[key] = value;\n }\n continue;\n }\n const eq = trimmed.indexOf('=');\n if (eq <= 0) {\n throw new CliCommandError('invalid_relation', `Relation filter must be field=uri: ${trimmed}`, 2);\n }\n relations[trimmed.slice(0, eq)] = trimmed.slice(eq + 1);\n }\n return relations;\n}\n\nfunction classifySelector(selector: string): 'schema' | 'subject' | 'resource' | 'path' {\n if (resolveDescriptorOrNull(selector)) return 'schema';\n if (selector.includes('#')) return 'subject';\n if (/^https?:\\/\\//iu.test(selector)) return 'resource';\n if (selector.includes('/')) return 'path';\n return 'schema';\n}\n\nasync function inferDescriptorForSubject(context: CliAuthContext, subject: string): Promise<PodModelDescriptor> {\n const target = resolveResourceTarget(context, documentResourceInput(subject));\n const response = await fetchResource(context, target, {\n method: 'GET',\n headers: { Accept: 'text/turtle' },\n });\n ensureOk(response, response.status === 404 ? 'resource_not_found' : 'schema_infer_failed', `Failed to infer schema from ${subject}`);\n const body = await response.text();\n const matches = podSchema.list().filter((descriptor) => body.includes(`<${descriptor.class}>`));\n if (matches.length === 1) {\n return matches[0];\n }\n if (matches.length > 1) {\n throw new CliCommandError('schema_ambiguous', 'Multiple known descriptor classes were found. Re-run with --schema.', 2, {\n schemas: matches.map((descriptor) => descriptor.uri),\n });\n }\n throw new CliCommandError('schema_required', 'Could not infer a known schema from the subject document. Re-run with --schema.', 2);\n}\n\nasync function resolveObjectSelector(context: CliAuthContext, argv: ObjSelectorArgs): Promise<ResolvedObjSelector> {\n let schema = argv.schema;\n let subject = argv.subject;\n let resource = argv.resource;\n let path = argv.path;\n\n if (argv.selector) {\n const kind = classifySelector(argv.selector);\n if (kind === 'schema' && !schema) schema = argv.selector;\n if (kind === 'subject' && !subject) subject = argv.selector;\n if (kind === 'resource' && !resource) resource = argv.selector;\n if (kind === 'path' && !path) path = argv.selector;\n }\n\n const parsedWhere = parseWhere(argv.where);\n if (argv.status !== undefined) {\n parsedWhere.status = argv.status;\n }\n const {\n where,\n subject: whereSubject,\n resource: whereResource,\n path: wherePath,\n } = extractReservedWhereSelectors(parsedWhere);\n\n subject = applyReservedSelector(subject, whereSubject, 'subject');\n resource = applyReservedSelector(resource, whereResource, 'resource');\n path = applyReservedSelector(path, wherePath, 'path');\n\n const subjectUrl = subject ? resolveResourceTarget(context, subject).resourceUrl : undefined;\n const resourceUrl = resource\n ? resolveResourceTarget(context, documentResourceInput(resource)).resourceUrl\n : path\n ? resolveResourceTarget(context, documentResourceInput(path)).resourceUrl\n : subjectUrl\n ? documentResourceInput(subjectUrl)\n : undefined;\n\n const descriptor = schema\n ? resolveDescriptor(schema)\n : subjectUrl\n ? await inferDescriptorForSubject(context, subjectUrl)\n : undefined;\n\n if (!descriptor) {\n throw new CliCommandError('schema_required', 'Object selectors require --schema, a schema selector, or an exact subject with an inferable RDF type.', 2);\n }\n\n return {\n descriptor,\n subject: subjectUrl,\n resourceUrl,\n where,\n relations: parseRelations(argv.relation),\n limit: Math.max(1, Math.min(argv.limit || 100, 10000)),\n includeMetadata: argv['include-metadata'] !== false,\n };\n}\n\nfunction queryFilterTerm(field: PodModelFieldDescriptor, value: unknown): string {\n if (Array.isArray(value)) {\n return value.map((item) => sparqlValue(item, field)).join(' ');\n }\n return sparqlValue(value, field);\n}\n\nexport function buildDescriptorObjectQuery(selector: ResolvedObjSelector): string {\n const descriptor = selector.descriptor;\n assertKnownFields(descriptor, selector.where);\n\n const triples = [ `?subject a <${descriptor.class}> .` ];\n if (selector.subject) {\n triples.push(`VALUES ?subject { <${selector.subject}> }`);\n }\n if (selector.resourceUrl) {\n triples.push(`FILTER(STR(?subject) = ${JSON.stringify(selector.resourceUrl)} || STRSTARTS(STR(?subject), ${JSON.stringify(`${selector.resourceUrl}#`)}))`);\n }\n\n for (const [ field, fieldDescriptor ] of Object.entries(descriptor.fields)) {\n triples.push(`OPTIONAL { ?subject <${fieldDescriptor.predicate}> ${fieldVar(field)} . }`);\n }\n\n for (const [ field, value ] of Object.entries(selector.where)) {\n const descriptorField = descriptor.fields[field];\n if (!descriptorField) continue;\n if (Array.isArray(value)) {\n triples.push(`VALUES ${fieldVar(`filter_${field}`)} { ${queryFilterTerm(descriptorField, value)} }`);\n triples.push(`?subject <${descriptorField.predicate}> ${fieldVar(`filter_${field}`)} .`);\n } else {\n triples.push(`?subject <${descriptorField.predicate}> ${queryFilterTerm(descriptorField, value)} .`);\n }\n }\n\n for (const [ field, objectUri ] of Object.entries(selector.relations)) {\n const descriptorField = descriptor.fields[field];\n if (!descriptorField) {\n throw new CliCommandError('predicate_unknown', `Relation field is not known by descriptor ${descriptor.uri}: ${field}`, 2);\n }\n if (descriptorField.type !== 'uri') {\n throw new CliCommandError('relation_field_not_uri', `Relation field is not URI-valued: ${field}`, 2);\n }\n triples.push(`?subject <${descriptorField.predicate}> ${sparqlIri(objectUri)} .`);\n }\n\n const fieldVars = Object.keys(descriptor.fields).map(fieldVar).join(' ');\n return `SELECT ?subject ${fieldVars} WHERE {\\n ${triples.join('\\n ')}\\n}\\nLIMIT ${selector.limit}`;\n}\n\nfunction bindingToValue(binding: SparqlBinding | undefined, field: PodModelFieldDescriptor): unknown {\n if (!binding?.value) return undefined;\n if (binding.type === 'uri') return binding.value;\n if (field.type === 'number') {\n const number = Number(binding.value);\n return Number.isNaN(number) ? binding.value : number;\n }\n if (field.type === 'boolean') {\n return binding.value === 'true' || binding.value === '1';\n }\n if (field.type === 'json') {\n try {\n return JSON.parse(binding.value);\n } catch {\n return binding.value;\n }\n }\n return binding.value;\n}\n\nasync function applyEtags(context: CliAuthContext, objects: DescriptorObject[]): Promise<void> {\n const cache = new Map<string, string | null>();\n for (const object of objects) {\n if (!cache.has(object.resourceUrl)) {\n try {\n const target = resolveResourceTarget(context, object.resourceUrl);\n const response = await fetchResource(context, target, { method: 'HEAD' });\n cache.set(object.resourceUrl, response.ok ? response.headers.get('etag') : null);\n } catch {\n cache.set(object.resourceUrl, null);\n }\n }\n const etag = cache.get(object.resourceUrl) ?? null;\n object.etag = etag;\n object.revision = etag;\n }\n}\n\nasync function queryDescriptorObjects(context: CliAuthContext, selector: ResolvedObjSelector): Promise<DescriptorObject[]> {\n const endpoint = resolveSparqlEndpoint(context.podRoot);\n const query = buildDescriptorObjectQuery(selector);\n const response = await fetchResource(context, {\n input: endpoint,\n resourceUrl: endpoint,\n webId: context.webId,\n podRoot: context.podRoot,\n baseIri: context.baseIri,\n }, {\n method: 'POST',\n headers: {\n Accept: 'application/sparql-results+json',\n 'Content-Type': 'application/sparql-query',\n },\n body: query,\n });\n ensureOk(response, 'obj_query_failed', `Failed to list objects for ${selector.descriptor.uri}`);\n const result = (await response.json()) as {\n results?: { bindings?: Array<Record<string, SparqlBinding>> };\n };\n\n const objects = (result.results?.bindings ?? []).flatMap((binding) => {\n const subject = binding.subject?.value;\n if (!subject) return [];\n const object: Record<string, unknown> = {};\n for (const [ field, descriptorField ] of Object.entries(selector.descriptor.fields)) {\n const value = bindingToValue(binding[varName(field)], descriptorField);\n if (value !== undefined) {\n object[field] = descriptorField.secret ? '[redacted]' : value;\n }\n }\n return [{\n schema: selector.descriptor.uri,\n subject,\n resourceUrl: documentResourceInput(subject),\n object,\n }];\n });\n\n if (selector.includeMetadata) {\n await applyEtags(context, objects);\n }\n return objects;\n}\n\nfunction jsonlForObjects(objects: DescriptorObject[]): string {\n return `${objects.map((object, index) => JSON.stringify({\n index,\n ok: true,\n code: 'ok',\n ...object,\n })).join('\\n')}${objects.length > 0 ? '\\n' : ''}`;\n}\n\nasync function patchSubject(input: {\n context: CliAuthContext;\n subject: string;\n sparql: string;\n ifMatch?: string;\n errorCode: string;\n}): Promise<ReturnType<typeof responseData>> {\n const target = resolveResourceTarget(input.context, documentResourceInput(input.subject));\n const headers: Record<string, string> = { 'Content-Type': 'application/sparql-update' };\n if (input.ifMatch) headers['If-Match'] = input.ifMatch;\n const response = await fetchResource(input.context, target, {\n method: 'PATCH',\n headers,\n body: input.sparql,\n });\n ensureOk(response, input.errorCode, `Failed to patch object ${input.subject}`);\n return responseData(target, response);\n}\n\nfunction mutationPlan(input: {\n operationId: string;\n context: CliAuthContext;\n summary: string;\n subject: string;\n schema?: string;\n etag?: string;\n change: string;\n diff?: unknown[];\n}): Record<string, unknown> {\n return {\n operationId: input.operationId,\n webId: input.context.webId,\n podRoot: input.context.podRoot,\n summary: input.summary,\n risk: 'normal',\n resources: [\n {\n subject: input.subject,\n schema: input.schema,\n etag: input.etag,\n change: input.change,\n },\n ],\n diff: input.diff ?? [],\n };\n}\n\nasync function resolveDescriptorForMutation(context: CliAuthContext, schema: string | undefined, subject: string): Promise<PodModelDescriptor> {\n return schema ? resolveDescriptor(schema) : inferDescriptorForSubject(context, subject);\n}\n\nasync function executePatchCommand(argv: ObjPatchArgs): Promise<Record<string, unknown>> {\n const context = await requireAuthContext(argv);\n const subject = resolveResourceTarget(context, argv.subject).resourceUrl;\n const descriptor = await resolveDescriptorForMutation(context, argv.schema, subject);\n const set = parseJsonObject(argv.set, 'invalid_set');\n const sparql = buildDescriptorPatchSparql(descriptor, subject, set);\n const plan = mutationPlan({\n operationId: `op_patch_${Date.now()}`,\n context,\n summary: `Patch one descriptor-backed ${descriptor.resourceKind}`,\n subject,\n schema: descriptor.uri,\n etag: argv['if-match'],\n change: 'patch',\n diff: [ redactDescriptorObject(descriptor, set) ],\n });\n if (argv['dry-run']) {\n return { plan };\n }\n const response = await patchSubject({\n context,\n subject,\n sparql,\n ifMatch: argv['if-match'],\n errorCode: 'obj_patch_failed',\n });\n return { ...response, plan };\n}\n\nasync function executeLinkCommand(argv: ObjLinkArgs): Promise<Record<string, unknown>> {\n const context = await requireAuthContext(argv);\n const subject = resolveResourceTarget(context, argv.subject).resourceUrl;\n const descriptor = argv.schema || !/^https?:\\/\\//iu.test(argv.predicate)\n ? await resolveDescriptorForMutation(context, argv.schema, subject)\n : undefined;\n let predicate = argv.predicate;\n if (!/^https?:\\/\\//iu.test(predicate)) {\n if (!descriptor?.fields[predicate]) {\n throw new CliCommandError('predicate_unknown', `Predicate field is not known by descriptor: ${predicate}`, 2);\n }\n const field = descriptor.fields[predicate];\n if (field.type !== 'uri') {\n throw new CliCommandError('relation_field_not_uri', `Relation field is not URI-valued: ${predicate}`, 2);\n }\n predicate = field.predicate;\n }\n const sparql = buildDescriptorLinkSparql(subject, predicate, argv.object);\n const plan = mutationPlan({\n operationId: `op_link_${Date.now()}`,\n context,\n summary: 'Link one descriptor-backed object relation',\n subject,\n schema: descriptor?.uri,\n etag: argv['if-match'],\n change: 'link',\n diff: [{ predicate, object: argv.object }],\n });\n if (argv['dry-run']) {\n return { plan };\n }\n const response = await patchSubject({\n context,\n subject,\n sparql,\n ifMatch: argv['if-match'],\n errorCode: 'obj_link_failed',\n });\n return { ...response, plan };\n}\n\nasync function executeDeleteCommand(argv: ObjDeleteArgs): Promise<Record<string, unknown>> {\n const context = await requireAuthContext(argv);\n const subject = resolveResourceTarget(context, argv.subject).resourceUrl;\n const descriptor = await resolveDescriptorForMutation(context, argv.schema, subject);\n const sparql = buildDescriptorDeleteSparql(subject);\n const plan = mutationPlan({\n operationId: `op_delete_${Date.now()}`,\n context,\n summary: `Delete one descriptor-backed ${descriptor.resourceKind}`,\n subject,\n schema: descriptor.uri,\n etag: argv['if-match'],\n change: 'delete',\n });\n if (argv['dry-run']) {\n return { plan };\n }\n const response = await patchSubject({\n context,\n subject,\n sparql,\n ifMatch: argv['if-match'],\n errorCode: 'obj_delete_failed',\n });\n return { ...response, plan };\n}\n\nasync function executeRawRow(context: CliAuthContext, row: ObjMutationRow, index: number, commit: boolean): Promise<ItemResult> {\n const op = row.op;\n if (!op) {\n throw new CliCommandError('schema_required', 'JSONL row without schema must declare an explicit raw resource op.', 2);\n }\n const targetInput = row.path ?? row.resource ?? row.subject;\n if (!targetInput) {\n throw new CliCommandError('explicit_target_required', 'Raw JSONL rows must declare path, resource, or subject.', 2);\n }\n const target = resolveResourceTarget(context, row.subject ? documentResourceInput(targetInput) : targetInput);\n if (!commit) {\n return {\n index,\n ok: true,\n code: 'plan_ready',\n operation: op,\n resourceUrl: target.resourceUrl,\n webId: context.webId,\n podRoot: context.podRoot,\n };\n }\n if (![ 'put', 'patch', 'delete' ].includes(op)) {\n throw new CliCommandError('unsupported_operation', `Unsupported raw JSONL operation: ${op}`, 2);\n }\n\n const headers: Record<string, string> = {};\n let body: Buffer | string | undefined;\n if (op !== 'delete') {\n if (row.from) {\n const file = readBodyFile(row.from);\n body = file.body;\n headers['Content-Type'] = row.contentType ?? file.contentType;\n } else if (row.body !== undefined) {\n body = row.body;\n headers['Content-Type'] = row.contentType ?? 'text/plain';\n } else {\n throw new CliCommandError('body_required', `Raw ${op} rows require body or from.`, 2);\n }\n }\n if (row.ifMatch) headers['If-Match'] = row.ifMatch;\n\n const response = await fetchResource(context, target, {\n method: op.toUpperCase(),\n headers,\n body,\n });\n ensureOk(response, 'raw_commit_failed', `Failed to commit raw row ${index}`);\n return {\n index,\n ok: true,\n code: 'committed',\n operation: op,\n ...responseData(target, response),\n };\n}\n\nasync function executeDescriptorRow(context: CliAuthContext, row: ObjMutationRow, index: number, commit: boolean): Promise<ItemResult> {\n const descriptor = resolveDescriptor(row.schema!);\n const op = row.op ?? 'upsert';\n if (op !== 'upsert') {\n if (!row.subject) {\n throw new CliCommandError('subject_required', `Object operation ${op} requires subject.`, 2);\n }\n const subject = resolveResourceTarget(context, row.subject).resourceUrl;\n if (op === 'patch') {\n const set = row.set ?? {};\n const sparql = buildDescriptorPatchSparql(descriptor, subject, set);\n if (commit) {\n await patchSubject({ context, subject, sparql, ifMatch: row.ifMatch, errorCode: 'obj_patch_failed' });\n }\n return {\n index,\n ok: true,\n code: commit ? 'committed' : 'plan_ready',\n operation: op,\n schema: descriptor.uri,\n subject,\n set: redactDescriptorObject(descriptor, set),\n };\n }\n if (op === 'link') {\n if (!row.predicate || !row.object) {\n throw new CliCommandError('link_target_required', 'Link rows require predicate and object.', 2);\n }\n const field = descriptor.fields[row.predicate];\n const predicate = field ? field.predicate : row.predicate;\n if (field && field.type !== 'uri') {\n throw new CliCommandError('relation_field_not_uri', `Relation field is not URI-valued: ${row.predicate}`, 2);\n }\n if (!field && !/^https?:\\/\\//iu.test(predicate)) {\n throw new CliCommandError('predicate_unknown', `Predicate field is not known by descriptor: ${row.predicate}`, 2);\n }\n const sparql = buildDescriptorLinkSparql(subject, predicate, row.object);\n if (commit) {\n await patchSubject({ context, subject, sparql, ifMatch: row.ifMatch, errorCode: 'obj_link_failed' });\n }\n return {\n index,\n ok: true,\n code: commit ? 'committed' : 'plan_ready',\n operation: op,\n schema: descriptor.uri,\n subject,\n predicate,\n object: row.object,\n };\n }\n if (op === 'delete') {\n const sparql = buildDescriptorDeleteSparql(subject);\n if (commit) {\n await patchSubject({ context, subject, sparql, ifMatch: row.ifMatch, errorCode: 'obj_delete_failed' });\n }\n return {\n index,\n ok: true,\n code: commit ? 'committed' : 'plan_ready',\n operation: op,\n schema: descriptor.uri,\n subject,\n };\n }\n throw new CliCommandError('unsupported_operation', `Unsupported object operation: ${op}`, 2);\n }\n\n const storage = createPodStorage();\n const validation = storage.validate({\n schemaUri: descriptor.uri,\n operation: 'upsert',\n match: row.match ?? {},\n set: row.set ?? {},\n });\n if (!validation.ok) {\n throw new CliCommandError(validation.error.code, validation.error.message, 2);\n }\n\n const subject = resourceUrlFromPlan(context.podRoot, validation.plan);\n if (commit) {\n const sparql = buildDescriptorUpsertSparql(descriptor, subject, row);\n await patchSubject({ context, subject, sparql, ifMatch: row.ifMatch, errorCode: 'obj_commit_failed' });\n }\n\n return {\n index,\n ok: true,\n code: commit ? 'committed' : 'plan_ready',\n operation: op,\n schema: descriptor.uri,\n subject,\n resourceUrl: documentResourceInput(subject),\n planId: validation.plan.id,\n match: redactDescriptorObject(descriptor, row.match ?? {}),\n set: redactDescriptorObject(descriptor, row.set ?? {}),\n };\n}\n\nasync function executeRows(input: {\n argv: ObjArgs;\n rows: ObjMutationRow[];\n defaultSchema?: string;\n commit: boolean;\n}): Promise<ItemResult[]> {\n const context = await requireAuthContext(input.argv);\n const items: ItemResult[] = [];\n for (const [ index, originalRow ] of input.rows.entries()) {\n const row = {\n ...originalRow,\n schema: originalRow.schema ?? input.defaultSchema,\n };\n try {\n const item = row.schema\n ? await executeDescriptorRow(context, row, index, input.commit)\n : await executeRawRow(context, row, index, input.commit);\n items.push(item);\n } catch (error) {\n const err = error instanceof CliCommandError\n ? error\n : new CliCommandError('error', error instanceof Error ? error.message : String(error));\n items.push({ index, ok: false, code: err.code, message: err.message });\n }\n }\n return items;\n}\n\nfunction printItems(items: ItemResult[]): void {\n for (const item of items) {\n console.log(`${item.index}\\t${item.ok ? item.code : `ERROR ${item.code}`}\\t${String(item.subject ?? item.resourceUrl ?? item.message ?? '')}`);\n }\n}\n\nconst importCommand: CommandModule<object, ObjImportArgs> = {\n command: 'import <file>',\n describe: 'Import descriptor-backed or explicit raw JSONL rows',\n builder: (yargs) =>\n objOptions<ObjImportArgs>(yargs)\n .positional('file', { type: 'string', demandOption: true, description: 'JSONL file to import, or - for stdin' })\n .option('dry-run', { type: 'boolean', description: 'Validate and print a plan without writing' })\n .option('commit', { type: 'boolean', description: 'Commit the validated mutations' })\n .check(mutationModeCheck),\n handler: async (argv) => {\n try {\n const items = await executeRows({\n argv,\n rows: await readJsonl(argv.file),\n commit: argv.commit === true,\n });\n const code = items.every((item) => item.ok)\n ? (argv.commit ? 'committed' : 'plan_ready')\n : 'partial_failure';\n if (argv.json) {\n writeJsonItems(items, code);\n return;\n }\n printItems(items);\n if (!items.every((item) => item.ok)) process.exit(1);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst upsertCommand: CommandModule<object, ObjUpsertArgs> = {\n command: 'upsert',\n describe: 'Upsert descriptor-backed JSONL rows',\n builder: (yargs) =>\n objOptions<ObjUpsertArgs>(yargs)\n .option('schema', { type: 'string', demandOption: true, description: 'Schema URI or descriptor alias' })\n .option('from', { type: 'string', demandOption: true, description: 'JSONL file to read, or - for stdin' })\n .option('dry-run', { type: 'boolean', description: 'Validate and print a plan without writing' })\n .option('commit', { type: 'boolean', description: 'Commit the validated mutations' })\n .check(mutationModeCheck),\n handler: async (argv) => {\n try {\n const items = await executeRows({\n argv,\n rows: await readJsonl(argv.from),\n defaultSchema: resolveDescriptor(argv.schema).uri,\n commit: argv.commit === true,\n });\n const code = items.every((item) => item.ok)\n ? (argv.commit ? 'committed' : 'plan_ready')\n : 'partial_failure';\n if (argv.json) {\n writeJsonItems(items, code);\n return;\n }\n printItems(items);\n if (!items.every((item) => item.ok)) process.exit(1);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst listCommand: CommandModule<object, ObjSelectorArgs> = {\n command: 'list',\n describe: 'List descriptor-backed objects',\n builder: (yargs) =>\n selectorOptions<ObjSelectorArgs>(yargs)\n .option('schema', { type: 'string', demandOption: true, description: 'Schema URI or descriptor alias' }),\n handler: async (argv) => {\n try {\n const context = await requireAuthContext(argv);\n const selector = await resolveObjectSelector(context, argv);\n const objects = await queryDescriptorObjects(context, selector);\n if (argv.json) {\n writeJsonResult({\n webId: context.webId,\n podRoot: context.podRoot,\n schema: selector.descriptor.uri,\n objects,\n });\n return;\n }\n for (const object of objects) {\n console.log(object.subject);\n }\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst exportCommand: CommandModule<object, ObjSelectorArgs> = {\n command: 'export <selector>',\n describe: 'Export descriptor-backed objects as JSONL',\n builder: (yargs) =>\n selectorOptions<ObjSelectorArgs>(yargs)\n .positional('selector', { type: 'string', demandOption: true, description: 'Schema URI/alias, subject, resource URL, or Pod-relative path selector' })\n .option('format', { type: 'string', choices: [ 'jsonl' ], default: 'jsonl', description: 'Export format' })\n .option('out', { type: 'string', description: 'Output file path' }),\n handler: async (argv) => {\n try {\n const context = await requireAuthContext(argv);\n const selector = await resolveObjectSelector(context, argv);\n const objects = await queryDescriptorObjects(context, selector);\n const jsonl = jsonlForObjects(objects);\n if (argv.out) {\n writeFileSync(argv.out, jsonl, 'utf-8');\n }\n if (argv.json) {\n writeJsonResult({\n webId: context.webId,\n podRoot: context.podRoot,\n schema: selector.descriptor.uri,\n count: objects.length,\n out: argv.out ?? null,\n ...(argv.out ? {} : { objects }),\n });\n return;\n }\n if (!argv.out) {\n process.stdout.write(jsonl);\n }\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst getCommand: CommandModule<object, ObjGetArgs> = {\n command: 'get',\n describe: 'Read one descriptor-backed object as JSON',\n builder: (yargs) =>\n objOptions<ObjGetArgs>(yargs)\n .option('schema', { type: 'string', description: 'Schema URI or descriptor alias' })\n .option('subject', { type: 'string', demandOption: true, description: 'Object subject URI or Pod-relative subject' })\n .option('out', { type: 'string', description: 'Write JSON object to file' })\n .option('include-metadata', { type: 'boolean', default: true, description: 'Include etag/revision metadata when available' }),\n handler: async (argv) => {\n try {\n const context = await requireAuthContext(argv);\n const selector = await resolveObjectSelector(context, {\n ...argv,\n selector: undefined,\n limit: 1,\n format: 'jsonl',\n where: undefined,\n relation: undefined,\n status: undefined,\n });\n const objects = await queryDescriptorObjects(context, selector);\n const object = objects[0];\n if (!object) {\n throw new CliCommandError('object_not_found', `Object not found: ${argv.subject}`, 1);\n }\n const body = `${JSON.stringify(object, null, 2)}\\n`;\n if (argv.out) {\n writeFileSync(argv.out, body, 'utf-8');\n }\n if (argv.json) {\n writeJsonResult({ webId: context.webId, podRoot: context.podRoot, object, out: argv.out ?? null });\n return;\n }\n if (!argv.out) {\n process.stdout.write(body);\n }\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst patchCommand: CommandModule<object, ObjPatchArgs> = {\n command: 'patch',\n describe: 'Patch one descriptor-backed object field set',\n builder: (yargs) =>\n objOptions<ObjPatchArgs>(yargs)\n .option('schema', { type: 'string', description: 'Schema URI or descriptor alias. Required if the subject document cannot be inferred.' })\n .option('subject', { type: 'string', demandOption: true, description: 'Object subject URI or Pod-relative subject' })\n .option('set', { type: 'string', demandOption: true, description: 'JSON object of descriptor field values to set' })\n .option('if-match', { type: 'string', description: 'If-Match header for stale-write protection' })\n .option('dry-run', { type: 'boolean', description: 'Print the mutation plan without writing' })\n .option('commit', { type: 'boolean', description: 'Commit the mutation' })\n .check(mutationModeCheck),\n handler: async (argv) => {\n try {\n const data = await executePatchCommand(argv);\n if (argv.json) {\n writeJsonResult(data, argv['dry-run'] ? 'plan_ready' : 'committed');\n return;\n }\n console.log(argv['dry-run'] ? JSON.stringify(data.plan, null, 2) : `PATCH ${String(data.resourceUrl)} -> HTTP ${String(data.status)}`);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst linkCommand: CommandModule<object, ObjLinkArgs> = {\n command: 'link',\n describe: 'Link one descriptor-backed object to another URI',\n builder: (yargs) =>\n objOptions<ObjLinkArgs>(yargs)\n .option('schema', { type: 'string', description: 'Schema URI or descriptor alias when --predicate is a descriptor field' })\n .option('subject', { type: 'string', demandOption: true, description: 'Object subject URI or Pod-relative subject' })\n .option('predicate', { type: 'string', demandOption: true, description: 'Predicate URI or descriptor field' })\n .option('object', { type: 'string', demandOption: true, description: 'Object URI to link' })\n .option('if-match', { type: 'string', description: 'If-Match header for stale-write protection' })\n .option('dry-run', { type: 'boolean', description: 'Print the mutation plan without writing' })\n .option('commit', { type: 'boolean', description: 'Commit the mutation' })\n .check(mutationModeCheck),\n handler: async (argv) => {\n try {\n const data = await executeLinkCommand(argv);\n if (argv.json) {\n writeJsonResult(data, argv['dry-run'] ? 'plan_ready' : 'committed');\n return;\n }\n console.log(argv['dry-run'] ? JSON.stringify(data.plan, null, 2) : `LINK ${String(data.resourceUrl)} -> HTTP ${String(data.status)}`);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst deleteCommand: CommandModule<object, ObjDeleteArgs> = {\n command: 'delete',\n describe: 'Delete triples for one descriptor-backed object subject',\n builder: (yargs) =>\n objOptions<ObjDeleteArgs>(yargs)\n .option('schema', { type: 'string', description: 'Schema URI or descriptor alias. Required if the subject document cannot be inferred.' })\n .option('subject', { type: 'string', demandOption: true, description: 'Object subject URI or Pod-relative subject' })\n .option('if-match', { type: 'string', description: 'If-Match header for stale-write protection' })\n .option('dry-run', { type: 'boolean', description: 'Print the mutation plan without writing' })\n .option('commit', { type: 'boolean', description: 'Commit the mutation' })\n .check(mutationModeCheck),\n handler: async (argv) => {\n try {\n const data = await executeDeleteCommand(argv);\n if (argv.json) {\n writeJsonResult(data, argv['dry-run'] ? 'plan_ready' : 'committed');\n return;\n }\n console.log(argv['dry-run'] ? JSON.stringify(data.plan, null, 2) : `DELETE ${String(data.resourceUrl)} -> HTTP ${String(data.status)}`);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst watchCommand: CommandModule<object, ObjSelectorArgs> = {\n command: 'watch <selector>',\n describe: 'Stream descriptor-backed object changes as JSONL snapshots',\n builder: (yargs) =>\n selectorOptions<ObjSelectorArgs>(yargs)\n .positional('selector', { type: 'string', demandOption: true, description: 'Schema URI/alias, subject, resource URL, or Pod-relative path selector' })\n .option('format', { type: 'string', choices: [ 'jsonl' ], default: 'jsonl', description: 'Watch stream format' })\n .option('since', { type: 'string', description: 'Opaque cursor from a previous watch stream' }),\n handler: async (argv) => {\n try {\n const context = await requireAuthContext(argv);\n const selector = await resolveObjectSelector(context, argv);\n const objects = await queryDescriptorObjects(context, selector);\n const metadata = {\n cursorDurable: false,\n since: argv.since ?? null,\n cursor: null,\n message: 'Durable object cursors are not available; reconcile with a fresh obj list/export snapshot.',\n };\n if (argv.json) {\n writeJsonResult({ metadata, objects }, 'watch_snapshot');\n return;\n }\n console.log(JSON.stringify({ ok: true, code: 'cursor_unavailable', metadata }));\n for (const [ index, object ] of objects.entries()) {\n console.log(JSON.stringify({\n index,\n ok: true,\n code: 'snapshot',\n change: 'snapshot',\n ...object,\n }));\n }\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nexport const objCommand: CommandModule<object, ObjArgs> = {\n command: 'obj',\n describe: 'Descriptor-backed object transport',\n builder: (yargs) =>\n (yargs\n .command(exportCommand)\n .command(importCommand)\n .command(getCommand)\n .command(listCommand)\n .command(upsertCommand)\n .command(patchCommand)\n .command(linkCommand)\n .command(deleteCommand)\n .command(watchCommand)\n .demandCommand(1, 'Please specify an object subcommand') as unknown as Argv<ObjArgs>),\n handler: () => {},\n};\n"]}
|
|
1
|
+
{"version":3,"file":"obj.js","sourceRoot":"","sources":["../../../src/cli/commands/obj.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Argv, CommandModule } from 'yargs';\nimport { appendFileSync, mkdirSync, readFileSync, writeFileSync } from 'fs';\nimport { dirname, join } from 'path';\nimport {\n createPodModelDescriptorRegistry,\n createPodStorage,\n podSchema,\n type PodModelDescriptor,\n type PodModelFieldDescriptor,\n type PodStorageMutationPlan,\n} from '@undefineds.co/models';\nimport { normalizeBaseUrl, requireAuthContext, type CliAuthContext } from '../lib/auth-context';\nimport { getSolidHomeDir } from '../lib/credentials-store';\nimport { CliCommandError, handleCliError, writeJsonItems, writeJsonResult } from '../lib/output';\nimport {\n ensureOk,\n fetchResource,\n readBodyFile,\n resolveResourceTarget,\n responseData,\n} from '../lib/resource';\nimport { documentResourceInput, resolveSparqlEndpoint } from './rdf';\n\ninterface ObjArgs {\n url?: string;\n json: boolean;\n}\n\ninterface ObjImportArgs extends ObjArgs {\n file: string;\n 'dry-run'?: boolean;\n commit?: boolean;\n}\n\ninterface ObjUpsertArgs extends ObjArgs {\n schema: string;\n from: string;\n 'dry-run'?: boolean;\n commit?: boolean;\n}\n\ninterface ObjSchemasArgs extends ObjArgs {\n domain?: string;\n}\n\ninterface ObjDescribeArgs extends ObjArgs {\n schema: string;\n}\n\ninterface ObjSelectorArgs extends ObjArgs {\n selector?: string;\n schema?: string;\n subject?: string;\n resource?: string;\n path?: string;\n where?: string;\n status?: string;\n relation?: string[];\n format: string;\n out?: string;\n limit: number;\n since?: string;\n 'include-metadata': boolean;\n}\n\ninterface ObjGetArgs extends ObjArgs {\n schema?: string;\n subject: string;\n out?: string;\n 'include-metadata': boolean;\n}\n\ninterface ObjPatchArgs extends ObjArgs {\n schema?: string;\n subject: string;\n set: string;\n 'if-match'?: string;\n 'dry-run'?: boolean;\n commit?: boolean;\n}\n\ninterface ObjLinkArgs extends ObjArgs {\n schema?: string;\n subject: string;\n predicate: string;\n object: string;\n 'if-match'?: string;\n 'dry-run'?: boolean;\n commit?: boolean;\n}\n\ninterface ObjDeleteArgs extends ObjArgs {\n schema?: string;\n subject: string;\n 'if-match'?: string;\n 'dry-run'?: boolean;\n commit?: boolean;\n}\n\ninterface ObjMutationRow {\n op?: string;\n schema?: string;\n match?: Record<string, unknown>;\n set?: Record<string, unknown>;\n subject?: string;\n path?: string;\n resource?: string;\n predicate?: string;\n object?: string;\n ifMatch?: string;\n body?: string;\n from?: string;\n contentType?: string;\n}\n\ninterface ResolvedObjSelector {\n descriptor: PodModelDescriptor;\n subject?: string;\n resourceUrl?: string;\n where: Record<string, unknown>;\n relations: Record<string, string>;\n limit: number;\n includeMetadata: boolean;\n}\n\ninterface DescriptorObject {\n schema: string;\n subject: string;\n resourceUrl: string;\n etag?: string | null;\n revision?: string | null;\n object: Record<string, unknown>;\n}\n\ntype SparqlBinding = {\n type?: string;\n value?: string;\n datatype?: string;\n};\n\ntype ItemResult = {\n index: number;\n ok: boolean;\n code: string;\n message?: string;\n [key: string]: unknown;\n};\ntype ObjMutationContext = CliAuthContext & {\n planningOnly?: boolean;\n planningWarning?: string;\n pendingOnly?: boolean;\n pendingWarning?: string;\n outboxPath?: string;\n};\n\ntype DiscoveryDescriptor = PodModelDescriptor & {\n aliases?: string[];\n domains?: string[];\n idSemantics?: Record<string, unknown>;\n relationFields?: string[];\n documentPathPolicy?: Record<string, unknown>;\n exampleInput?: Record<string, unknown>;\n};\n\nfunction objOptions<T>(yargs: Argv): Argv<T> {\n return yargs\n .option('url', {\n alias: 'u',\n type: 'string',\n description: 'Server base URL override',\n })\n .option('json', {\n type: 'boolean',\n default: false,\n description: 'Output JSON envelope',\n }) as unknown as Argv<T>;\n}\n\nfunction selectorOptions<T extends ObjSelectorArgs>(yargs: Argv): Argv<T> {\n return objOptions<T>(yargs)\n .option('schema', { type: 'string', description: 'Schema URI or descriptor alias' })\n .option('subject', { type: 'string', description: 'Exact object subject URI or Pod-relative subject' })\n .option('resource', { type: 'string', description: 'Exact RDF document/resource URI or Pod-relative path' })\n .option('path', { type: 'string', description: 'Pod-relative resource path' })\n .option('where', { type: 'string', description: 'JSON object of descriptor field filters' })\n .option('status', { type: 'string', description: 'Shortcut for --where {\"status\": \"...\"} when the descriptor has a status field' })\n .option('relation', { type: 'array', string: true, description: 'Descriptor URI relation filter, field=uri. Repeatable.' })\n .option('limit', { type: 'number', default: 100, description: 'Maximum number of rows' })\n .option('include-metadata', { type: 'boolean', default: true, description: 'Include etag/revision metadata when available' }) as unknown as Argv<T>;\n}\n\nfunction mutationModeCheck(argv: { 'dry-run'?: boolean; commit?: boolean }): true {\n if (argv['dry-run'] === argv.commit) {\n throw new Error('Specify exactly one of --dry-run or --commit.');\n }\n return true;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction parseJsonObject(value: string, code: string): Record<string, unknown> {\n try {\n const parsed = JSON.parse(value) as unknown;\n if (!isRecord(parsed)) {\n throw new Error('Expected a JSON object.');\n }\n return parsed;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new CliCommandError(code, message, 2);\n }\n}\n\nasync function readStdinText(): Promise<string> {\n const chunks: Buffer[] = [];\n for await (const chunk of process.stdin) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(String(chunk)));\n }\n return Buffer.concat(chunks).toString('utf-8');\n}\n\nasync function readTextInput(input: string): Promise<string> {\n return input === '-' ? readStdinText() : readFileSync(input, 'utf-8');\n}\n\nasync function readJsonl(input: string): Promise<ObjMutationRow[]> {\n return (await readTextInput(input))\n .split(/\\r?\\n/u)\n .map((line) => line.trim())\n .filter(Boolean)\n .map((line, index) => {\n try {\n const parsed = JSON.parse(line) as unknown;\n if (!isRecord(parsed)) {\n throw new Error('Expected a JSON object.');\n }\n return parsed as ObjMutationRow;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new CliCommandError('invalid_jsonl', `Invalid JSONL at line ${index + 1}: ${message}`, 2);\n }\n });\n}\n\nfunction descriptorLocalName(value: string): string {\n return value.split(/[\\/#]/u).filter(Boolean).pop() ?? value;\n}\n\nfunction normalizeDescriptorAlias(value: string): string {\n return value.toLowerCase().replace(/[^a-z0-9]+/gu, '');\n}\n\nfunction descriptorAliases(descriptor: PodModelDescriptor): string[] {\n const discovery = descriptor as DiscoveryDescriptor;\n return discovery.aliases?.length ? discovery.aliases : [ descriptorLocalName(descriptor.class) ];\n}\n\nfunction descriptorMatchesRef(descriptor: PodModelDescriptor, ref: string): boolean {\n const normalized = normalizeDescriptorAlias(ref);\n return descriptor.uri === ref ||\n descriptor.class === ref ||\n descriptor.resourceKind.toLowerCase() === ref.trim().toLowerCase() ||\n normalizeDescriptorAlias(descriptorLocalName(descriptor.uri)) === normalized ||\n normalizeDescriptorAlias(descriptorLocalName(descriptor.class)) === normalized ||\n descriptorAliases(descriptor).some((alias) => normalizeDescriptorAlias(alias) === normalized);\n}\n\nfunction resolveDescriptorOrNull(schema: string): PodModelDescriptor | null {\n const exact = podSchema.describe({ schemaUri: schema }) ??\n (podSchema as unknown as { describe(input: { alias: string }): PodModelDescriptor | null }).describe?.({ alias: schema });\n if (exact) return exact;\n\n return podSchema.list().find((descriptor) => descriptorMatchesRef(descriptor, schema)) ?? null;\n}\n\nfunction resolveDescriptor(schema: string): PodModelDescriptor {\n const descriptor = resolveDescriptorOrNull(schema);\n if (!descriptor) {\n throw new CliCommandError('schema_unknown', `Schema is not known by @undefineds.co/models: ${schema}`, 2);\n }\n return descriptor;\n}\n\nfunction resourceUrlFromPlan(podRoot: string, plan: PodStorageMutationPlan): string {\n return new URL(plan.resourceUri.replace(/^\\/+/, ''), podRoot).toString();\n}\n\nexport async function resolveObjMutationContext(argv: ObjArgs, commit: boolean): Promise<ObjMutationContext> {\n try {\n return await requireAuthContext(argv);\n } catch (error) {\n const podRoot = normalizeBaseUrl(argv.url ?? 'https://pod.local/');\n const outboxPath = getObjLocalOutboxPath();\n return {\n baseUrl: podRoot,\n webId: 'urn:xpod:unauthenticated',\n podRoot,\n baseIri: podRoot,\n accessToken: '',\n credentials: {\n url: podRoot,\n webId: 'urn:xpod:unauthenticated',\n authType: 'client_credentials',\n secrets: {\n clientId: '',\n clientSecret: '',\n },\n },\n ...(commit\n ? {\n pendingOnly: true,\n outboxPath,\n pendingWarning: `No Solid credentials found; mutation was written to local xpod outbox at ${outboxPath} and was not saved to a Pod.`,\n }\n : {\n planningOnly: true,\n planningWarning: 'No Solid credentials found; this is an offline dry-run plan and was not saved to a Pod.',\n }),\n };\n }\n}\n\nexport function getObjLocalOutboxPath(): string {\n return join(getSolidHomeDir(), 'apps', 'xpod', 'outbox', 'obj-mutations.jsonl');\n}\n\nfunction appendObjLocalOutbox(entry: Record<string, unknown>, outboxPath = getObjLocalOutboxPath()): void {\n mkdirSync(dirname(outboxPath), { recursive: true });\n appendFileSync(outboxPath, `${JSON.stringify(entry)}\\n`, 'utf-8');\n}\n\nfunction varName(field: string): string {\n return `v_${field.replace(/[^A-Za-z0-9_]/gu, '_')}`;\n}\n\nfunction fieldVar(field: string): string {\n return `?${varName(field)}`;\n}\n\nfunction sparqlIri(value: string): string {\n if (!/^https?:\\/\\//iu.test(value)) {\n throw new CliCommandError('invalid_uri', `Expected an absolute URI: ${value}`, 2);\n }\n return `<${value.replace(/[<>]/gu, '')}>`;\n}\n\nfunction sparqlValue(value: unknown, field?: PodModelFieldDescriptor): string {\n if (field?.type === 'uri') {\n if (typeof value !== 'string') {\n throw new CliCommandError('invalid_uri', `Field expects a URI value: ${String(value)}`, 2);\n }\n return sparqlIri(value);\n }\n if (typeof value === 'number' || typeof value === 'boolean') {\n return JSON.stringify(value);\n }\n if (field?.type === 'json') {\n return JSON.stringify(JSON.stringify(value));\n }\n return JSON.stringify(String(value));\n}\n\nfunction assertKnownFields(descriptor: PodModelDescriptor, values: Record<string, unknown>, code = 'field_unknown'): void {\n const unknown = Object.keys(values).filter((field) => !descriptor.fields[field]);\n if (unknown.length > 0) {\n throw new CliCommandError(code, `Fields are not known by descriptor ${descriptor.uri}: ${unknown.join(', ')}`, 2);\n }\n}\n\nfunction assertWritableFields(descriptor: PodModelDescriptor, values: Record<string, unknown>): void {\n assertKnownFields(descriptor, values);\n const invalid = Object.keys(values).filter((field) => !descriptor.writableFields.includes(field));\n if (invalid.length > 0) {\n throw new CliCommandError('invalid_set_fields', `Fields are not writable: ${invalid.join(', ')}`, 2);\n }\n}\n\nexport function redactDescriptorObject(descriptor: PodModelDescriptor, value: Record<string, unknown>): Record<string, unknown> {\n const redacted: Record<string, unknown> = {};\n for (const [ key, item ] of Object.entries(value)) {\n redacted[key] = descriptor.fields[key]?.secret ? '[redacted]' : item;\n }\n return redacted;\n}\n\nexport function serializeSchemaDescriptor(descriptor: PodModelDescriptor): Record<string, unknown> {\n const discovery = descriptor as DiscoveryDescriptor;\n return {\n schema: descriptor.uri,\n uri: descriptor.uri,\n alias: descriptorAliases(descriptor)[0] ?? descriptor.resourceKind,\n aliases: descriptorAliases(descriptor),\n domains: discovery.domains ?? [],\n version: descriptor.version,\n source: descriptor.source,\n trustLevel: descriptor.trustLevel,\n namespace: descriptor.namespace,\n class: descriptor.class,\n resourceKind: descriptor.resourceKind,\n description: descriptor.description,\n storage: descriptor.storage,\n idSemantics: discovery.idSemantics ?? null,\n relationFields: discovery.relationFields ?? Object.entries(descriptor.fields)\n .filter(([, field]) => field.type === 'uri')\n .map(([ field ]) => field),\n documentPathPolicy: discovery.documentPathPolicy ?? null,\n fields: descriptor.fields,\n requiredFields: Object.entries(descriptor.fields)\n .filter(([, field]) => field.required)\n .map(([ field ]) => field),\n uniqueBy: descriptor.uniqueBy,\n writableFields: descriptor.writableFields,\n mergePolicy: descriptor.mergePolicy,\n exampleInput: discovery.exampleInput ?? descriptor.examples[0] ?? null,\n examples: descriptor.examples,\n };\n}\n\nexport function listSchemaDescriptors(\n input: { domain?: string } = {},\n descriptors: readonly PodModelDescriptor[] = podSchema.list(),\n): Record<string, unknown>[] {\n return descriptors\n .filter((descriptor) => !input.domain || ((descriptor as DiscoveryDescriptor).domains ?? []).includes(input.domain))\n .map(serializeSchemaDescriptor);\n}\n\nexport function describeSchemaDescriptor(\n schemaOrAlias: string,\n descriptors: readonly PodModelDescriptor[] = podSchema.list(),\n): Record<string, unknown> | null {\n const descriptor = descriptors.find((item) => descriptorMatchesRef(item, schemaOrAlias));\n return descriptor ? serializeSchemaDescriptor(descriptor) : null;\n}\n\nexport function buildDescriptorUpsertSparql(descriptor: PodModelDescriptor, subject: string, row: ObjMutationRow): string {\n const fields = descriptor.fields;\n const match = row.match ?? {};\n const set = row.set ?? {};\n assertKnownFields(descriptor, match);\n assertWritableFields(descriptor, set);\n\n const merged = { ...match, ...set };\n const deleteFields = Object.keys(set).filter((field) => fields[field]);\n const deletes = deleteFields.map((field) =>\n `<${subject}> <${fields[field].predicate}> ?old_${field.replace(/[^A-Za-z0-9_]/gu, '_')} .`,\n );\n const optionals = deleteFields.map((field) =>\n `OPTIONAL { <${subject}> <${fields[field].predicate}> ?old_${field.replace(/[^A-Za-z0-9_]/gu, '_')} }`,\n );\n const inserts = [\n `<${subject}> a <${descriptor.class}>`,\n ...Object.entries(merged)\n .filter(([ field, value ]) => fields[field] && value !== undefined && value !== null)\n .map(([ field, value ]) => `<${subject}> <${fields[field].predicate}> ${sparqlValue(value, fields[field])}`),\n ];\n\n return `DELETE {\\n ${deletes.join('\\n ')}\\n}\\nINSERT {\\n ${inserts.join(' .\\n ')} .\\n}\\nWHERE {\\n ${optionals.join('\\n ')}\\n}`;\n}\n\nexport function buildDescriptorPatchSparql(descriptor: PodModelDescriptor, subject: string, set: Record<string, unknown>): string {\n return buildDescriptorUpsertSparql(descriptor, subject, { set });\n}\n\nexport function buildDescriptorLinkSparql(subject: string, predicate: string, object: string): string {\n return `INSERT DATA {\\n <${subject}> <${predicate}> ${sparqlIri(object)} .\\n}`;\n}\n\nexport function buildDescriptorDeleteSparql(subject: string): string {\n return `DELETE {\\n <${subject}> ?p ?o .\\n}\\nWHERE {\\n <${subject}> ?p ?o .\\n}`;\n}\n\nfunction parseWhere(where?: string): Record<string, unknown> {\n return where ? parseJsonObject(where, 'invalid_where') : {};\n}\n\nexport function extractReservedWhereSelectors(where: Record<string, unknown>): {\n where: Record<string, unknown>;\n subject?: string;\n resource?: string;\n path?: string;\n} {\n const filters = { ...where };\n const selectors: { subject?: string; resource?: string; path?: string } = {};\n\n for (const key of [ 'subject', 'resource', 'path' ] as const) {\n const value = filters[key];\n if (value === undefined) continue;\n if (typeof value !== 'string') {\n throw new CliCommandError('invalid_where', `Reserved selector field \"${key}\" must be a string.`, 2);\n }\n selectors[key] = value;\n delete filters[key];\n }\n\n return { where: filters, ...selectors };\n}\n\nfunction applyReservedSelector(\n current: string | undefined,\n reserved: string | undefined,\n key: 'subject' | 'resource' | 'path',\n): string | undefined {\n if (!reserved) return current;\n if (current && current !== reserved) {\n throw new CliCommandError('selector_conflict', `Conflicting ${key} selectors were provided.`, 2);\n }\n return reserved;\n}\n\nfunction parseRelations(input?: string[]): Record<string, string> {\n const relations: Record<string, string> = {};\n for (const item of input ?? []) {\n const trimmed = item.trim();\n if (!trimmed) continue;\n if (trimmed.startsWith('{')) {\n const parsed = parseJsonObject(trimmed, 'invalid_relation');\n for (const [ key, value ] of Object.entries(parsed)) {\n if (typeof value !== 'string') {\n throw new CliCommandError('invalid_relation', `Relation filter ${key} must be a URI string.`, 2);\n }\n relations[key] = value;\n }\n continue;\n }\n const eq = trimmed.indexOf('=');\n if (eq <= 0) {\n throw new CliCommandError('invalid_relation', `Relation filter must be field=uri: ${trimmed}`, 2);\n }\n relations[trimmed.slice(0, eq)] = trimmed.slice(eq + 1);\n }\n return relations;\n}\n\nfunction classifySelector(selector: string): 'schema' | 'subject' | 'resource' | 'path' {\n if (resolveDescriptorOrNull(selector)) return 'schema';\n if (selector.includes('#')) return 'subject';\n if (/^https?:\\/\\//iu.test(selector)) return 'resource';\n if (selector.includes('/')) return 'path';\n return 'schema';\n}\n\nasync function inferDescriptorForSubject(context: CliAuthContext, subject: string): Promise<PodModelDescriptor> {\n const target = resolveResourceTarget(context, documentResourceInput(subject));\n const response = await fetchResource(context, target, {\n method: 'GET',\n headers: { Accept: 'text/turtle' },\n });\n ensureOk(response, response.status === 404 ? 'resource_not_found' : 'schema_infer_failed', `Failed to infer schema from ${subject}`);\n const body = await response.text();\n const matches = podSchema.list().filter((descriptor) => body.includes(`<${descriptor.class}>`));\n if (matches.length === 1) {\n return matches[0];\n }\n if (matches.length > 1) {\n throw new CliCommandError('schema_ambiguous', 'Multiple known descriptor classes were found. Re-run with --schema.', 2, {\n schemas: matches.map((descriptor) => descriptor.uri),\n });\n }\n throw new CliCommandError('schema_required', 'Could not infer a known schema from the subject document. Re-run with --schema.', 2);\n}\n\nasync function resolveObjectSelector(context: CliAuthContext, argv: ObjSelectorArgs): Promise<ResolvedObjSelector> {\n let schema = argv.schema;\n let subject = argv.subject;\n let resource = argv.resource;\n let path = argv.path;\n\n if (argv.selector) {\n const kind = classifySelector(argv.selector);\n if (kind === 'schema' && !schema) schema = argv.selector;\n if (kind === 'subject' && !subject) subject = argv.selector;\n if (kind === 'resource' && !resource) resource = argv.selector;\n if (kind === 'path' && !path) path = argv.selector;\n }\n\n const parsedWhere = parseWhere(argv.where);\n if (argv.status !== undefined) {\n parsedWhere.status = argv.status;\n }\n const {\n where,\n subject: whereSubject,\n resource: whereResource,\n path: wherePath,\n } = extractReservedWhereSelectors(parsedWhere);\n\n subject = applyReservedSelector(subject, whereSubject, 'subject');\n resource = applyReservedSelector(resource, whereResource, 'resource');\n path = applyReservedSelector(path, wherePath, 'path');\n\n const subjectUrl = subject ? resolveResourceTarget(context, subject).resourceUrl : undefined;\n const resourceUrl = resource\n ? resolveResourceTarget(context, documentResourceInput(resource)).resourceUrl\n : path\n ? resolveResourceTarget(context, documentResourceInput(path)).resourceUrl\n : subjectUrl\n ? documentResourceInput(subjectUrl)\n : undefined;\n\n const descriptor = schema\n ? resolveDescriptor(schema)\n : subjectUrl\n ? await inferDescriptorForSubject(context, subjectUrl)\n : undefined;\n\n if (!descriptor) {\n throw new CliCommandError('schema_required', 'Object selectors require --schema, a schema selector, or an exact subject with an inferable RDF type.', 2);\n }\n\n return {\n descriptor,\n subject: subjectUrl,\n resourceUrl,\n where,\n relations: parseRelations(argv.relation),\n limit: Math.max(1, Math.min(argv.limit || 100, 10000)),\n includeMetadata: argv['include-metadata'] !== false,\n };\n}\n\nfunction queryFilterTerm(field: PodModelFieldDescriptor, value: unknown): string {\n if (Array.isArray(value)) {\n return value.map((item) => sparqlValue(item, field)).join(' ');\n }\n return sparqlValue(value, field);\n}\n\nexport function buildDescriptorObjectQuery(selector: ResolvedObjSelector): string {\n const descriptor = selector.descriptor;\n assertKnownFields(descriptor, selector.where);\n\n const triples = [ `?subject a <${descriptor.class}> .` ];\n if (selector.subject) {\n triples.push(`VALUES ?subject { <${selector.subject}> }`);\n }\n if (selector.resourceUrl) {\n triples.push(`FILTER(STR(?subject) = ${JSON.stringify(selector.resourceUrl)} || STRSTARTS(STR(?subject), ${JSON.stringify(`${selector.resourceUrl}#`)}))`);\n }\n\n for (const [ field, fieldDescriptor ] of Object.entries(descriptor.fields)) {\n triples.push(`OPTIONAL { ?subject <${fieldDescriptor.predicate}> ${fieldVar(field)} . }`);\n }\n\n for (const [ field, value ] of Object.entries(selector.where)) {\n const descriptorField = descriptor.fields[field];\n if (!descriptorField) continue;\n if (Array.isArray(value)) {\n triples.push(`VALUES ${fieldVar(`filter_${field}`)} { ${queryFilterTerm(descriptorField, value)} }`);\n triples.push(`?subject <${descriptorField.predicate}> ${fieldVar(`filter_${field}`)} .`);\n } else {\n triples.push(`?subject <${descriptorField.predicate}> ${queryFilterTerm(descriptorField, value)} .`);\n }\n }\n\n for (const [ field, objectUri ] of Object.entries(selector.relations)) {\n const descriptorField = descriptor.fields[field];\n if (!descriptorField) {\n throw new CliCommandError('predicate_unknown', `Relation field is not known by descriptor ${descriptor.uri}: ${field}`, 2);\n }\n if (descriptorField.type !== 'uri') {\n throw new CliCommandError('relation_field_not_uri', `Relation field is not URI-valued: ${field}`, 2);\n }\n triples.push(`?subject <${descriptorField.predicate}> ${sparqlIri(objectUri)} .`);\n }\n\n const fieldVars = Object.keys(descriptor.fields).map(fieldVar).join(' ');\n return `SELECT ?subject ${fieldVars} WHERE {\\n ${triples.join('\\n ')}\\n}\\nLIMIT ${selector.limit}`;\n}\n\nfunction bindingToValue(binding: SparqlBinding | undefined, field: PodModelFieldDescriptor): unknown {\n if (!binding?.value) return undefined;\n if (binding.type === 'uri') return binding.value;\n if (field.type === 'number') {\n const number = Number(binding.value);\n return Number.isNaN(number) ? binding.value : number;\n }\n if (field.type === 'boolean') {\n return binding.value === 'true' || binding.value === '1';\n }\n if (field.type === 'json') {\n try {\n return JSON.parse(binding.value);\n } catch {\n return binding.value;\n }\n }\n return binding.value;\n}\n\nasync function applyEtags(context: CliAuthContext, objects: DescriptorObject[]): Promise<void> {\n const cache = new Map<string, string | null>();\n for (const object of objects) {\n if (!cache.has(object.resourceUrl)) {\n try {\n const target = resolveResourceTarget(context, object.resourceUrl);\n const response = await fetchResource(context, target, { method: 'HEAD' });\n cache.set(object.resourceUrl, response.ok ? response.headers.get('etag') : null);\n } catch {\n cache.set(object.resourceUrl, null);\n }\n }\n const etag = cache.get(object.resourceUrl) ?? null;\n object.etag = etag;\n object.revision = etag;\n }\n}\n\nasync function queryDescriptorObjects(context: CliAuthContext, selector: ResolvedObjSelector): Promise<DescriptorObject[]> {\n const endpoint = resolveSparqlEndpoint(context.podRoot);\n const query = buildDescriptorObjectQuery(selector);\n const response = await fetchResource(context, {\n input: endpoint,\n resourceUrl: endpoint,\n webId: context.webId,\n podRoot: context.podRoot,\n baseIri: context.baseIri,\n }, {\n method: 'POST',\n headers: {\n Accept: 'application/sparql-results+json',\n 'Content-Type': 'application/sparql-query',\n },\n body: query,\n });\n ensureOk(response, 'obj_query_failed', `Failed to list objects for ${selector.descriptor.uri}`);\n const result = (await response.json()) as {\n results?: { bindings?: Array<Record<string, SparqlBinding>> };\n };\n\n const objects = (result.results?.bindings ?? []).flatMap((binding) => {\n const subject = binding.subject?.value;\n if (!subject) return [];\n const object: Record<string, unknown> = {};\n for (const [ field, descriptorField ] of Object.entries(selector.descriptor.fields)) {\n const value = bindingToValue(binding[varName(field)], descriptorField);\n if (value !== undefined) {\n object[field] = descriptorField.secret ? '[redacted]' : value;\n }\n }\n return [{\n schema: selector.descriptor.uri,\n subject,\n resourceUrl: documentResourceInput(subject),\n object,\n }];\n });\n\n if (selector.includeMetadata) {\n await applyEtags(context, objects);\n }\n return objects;\n}\n\nfunction jsonlForObjects(objects: DescriptorObject[]): string {\n return `${objects.map((object, index) => JSON.stringify({\n index,\n ok: true,\n code: 'ok',\n ...object,\n })).join('\\n')}${objects.length > 0 ? '\\n' : ''}`;\n}\n\nasync function patchSubject(input: {\n context: CliAuthContext;\n subject: string;\n sparql: string;\n ifMatch?: string;\n errorCode: string;\n}): Promise<ReturnType<typeof responseData>> {\n const target = resolveResourceTarget(input.context, documentResourceInput(input.subject));\n const headers: Record<string, string> = { 'Content-Type': 'application/sparql-update' };\n if (input.ifMatch) headers['If-Match'] = input.ifMatch;\n const response = await fetchResource(input.context, target, {\n method: 'PATCH',\n headers,\n body: input.sparql,\n });\n ensureOk(response, input.errorCode, `Failed to patch object ${input.subject}`);\n return responseData(target, response);\n}\n\nfunction mutationPlan(input: {\n operationId: string;\n context: CliAuthContext;\n summary: string;\n subject: string;\n schema?: string;\n etag?: string;\n change: string;\n diff?: unknown[];\n}): Record<string, unknown> {\n return {\n operationId: input.operationId,\n webId: input.context.webId,\n podRoot: input.context.podRoot,\n summary: input.summary,\n risk: 'normal',\n resources: [\n {\n subject: input.subject,\n schema: input.schema,\n etag: input.etag,\n change: input.change,\n },\n ],\n diff: input.diff ?? [],\n };\n}\n\nasync function resolveDescriptorForMutation(context: CliAuthContext, schema: string | undefined, subject: string): Promise<PodModelDescriptor> {\n return schema ? resolveDescriptor(schema) : inferDescriptorForSubject(context, subject);\n}\n\nasync function executePatchCommand(argv: ObjPatchArgs): Promise<Record<string, unknown>> {\n const context = await requireAuthContext(argv);\n const subject = resolveResourceTarget(context, argv.subject).resourceUrl;\n const descriptor = await resolveDescriptorForMutation(context, argv.schema, subject);\n const set = parseJsonObject(argv.set, 'invalid_set');\n const sparql = buildDescriptorPatchSparql(descriptor, subject, set);\n const plan = mutationPlan({\n operationId: `op_patch_${Date.now()}`,\n context,\n summary: `Patch one descriptor-backed ${descriptor.resourceKind}`,\n subject,\n schema: descriptor.uri,\n etag: argv['if-match'],\n change: 'patch',\n diff: [ redactDescriptorObject(descriptor, set) ],\n });\n if (argv['dry-run']) {\n return { plan };\n }\n const response = await patchSubject({\n context,\n subject,\n sparql,\n ifMatch: argv['if-match'],\n errorCode: 'obj_patch_failed',\n });\n return { ...response, plan };\n}\n\nasync function executeLinkCommand(argv: ObjLinkArgs): Promise<Record<string, unknown>> {\n const context = await requireAuthContext(argv);\n const subject = resolveResourceTarget(context, argv.subject).resourceUrl;\n const descriptor = argv.schema || !/^https?:\\/\\//iu.test(argv.predicate)\n ? await resolveDescriptorForMutation(context, argv.schema, subject)\n : undefined;\n let predicate = argv.predicate;\n if (!/^https?:\\/\\//iu.test(predicate)) {\n if (!descriptor?.fields[predicate]) {\n throw new CliCommandError('predicate_unknown', `Predicate field is not known by descriptor: ${predicate}`, 2);\n }\n const field = descriptor.fields[predicate];\n if (field.type !== 'uri') {\n throw new CliCommandError('relation_field_not_uri', `Relation field is not URI-valued: ${predicate}`, 2);\n }\n predicate = field.predicate;\n }\n const sparql = buildDescriptorLinkSparql(subject, predicate, argv.object);\n const plan = mutationPlan({\n operationId: `op_link_${Date.now()}`,\n context,\n summary: 'Link one descriptor-backed object relation',\n subject,\n schema: descriptor?.uri,\n etag: argv['if-match'],\n change: 'link',\n diff: [{ predicate, object: argv.object }],\n });\n if (argv['dry-run']) {\n return { plan };\n }\n const response = await patchSubject({\n context,\n subject,\n sparql,\n ifMatch: argv['if-match'],\n errorCode: 'obj_link_failed',\n });\n return { ...response, plan };\n}\n\nasync function executeDeleteCommand(argv: ObjDeleteArgs): Promise<Record<string, unknown>> {\n const context = await requireAuthContext(argv);\n const subject = resolveResourceTarget(context, argv.subject).resourceUrl;\n const descriptor = await resolveDescriptorForMutation(context, argv.schema, subject);\n const sparql = buildDescriptorDeleteSparql(subject);\n const plan = mutationPlan({\n operationId: `op_delete_${Date.now()}`,\n context,\n summary: `Delete one descriptor-backed ${descriptor.resourceKind}`,\n subject,\n schema: descriptor.uri,\n etag: argv['if-match'],\n change: 'delete',\n });\n if (argv['dry-run']) {\n return { plan };\n }\n const response = await patchSubject({\n context,\n subject,\n sparql,\n ifMatch: argv['if-match'],\n errorCode: 'obj_delete_failed',\n });\n return { ...response, plan };\n}\n\nasync function executeRawRow(context: CliAuthContext, row: ObjMutationRow, index: number, commit: boolean): Promise<ItemResult> {\n const op = row.op;\n if (!op) {\n throw new CliCommandError('schema_required', 'JSONL row without schema must declare an explicit raw resource op.', 2);\n }\n const targetInput = row.path ?? row.resource ?? row.subject;\n if (!targetInput) {\n throw new CliCommandError('explicit_target_required', 'Raw JSONL rows must declare path, resource, or subject.', 2);\n }\n const target = resolveResourceTarget(context, row.subject ? documentResourceInput(targetInput) : targetInput);\n if (!commit) {\n return {\n index,\n ok: true,\n code: 'plan_ready',\n operation: op,\n resourceUrl: target.resourceUrl,\n webId: context.webId,\n podRoot: context.podRoot,\n };\n }\n if (![ 'put', 'patch', 'delete' ].includes(op)) {\n throw new CliCommandError('unsupported_operation', `Unsupported raw JSONL operation: ${op}`, 2);\n }\n\n const headers: Record<string, string> = {};\n let body: Buffer | string | undefined;\n if (op !== 'delete') {\n if (row.from) {\n const file = readBodyFile(row.from);\n body = file.body;\n headers['Content-Type'] = row.contentType ?? file.contentType;\n } else if (row.body !== undefined) {\n body = row.body;\n headers['Content-Type'] = row.contentType ?? 'text/plain';\n } else {\n throw new CliCommandError('body_required', `Raw ${op} rows require body or from.`, 2);\n }\n }\n if (row.ifMatch) headers['If-Match'] = row.ifMatch;\n\n const response = await fetchResource(context, target, {\n method: op.toUpperCase(),\n headers,\n body,\n });\n ensureOk(response, 'raw_commit_failed', `Failed to commit raw row ${index}`);\n return {\n index,\n ok: true,\n code: 'committed',\n operation: op,\n ...responseData(target, response),\n };\n}\n\nasync function executeDescriptorRow(context: CliAuthContext, row: ObjMutationRow, index: number, commit: boolean): Promise<ItemResult> {\n const descriptor = resolveDescriptor(row.schema!);\n const op = row.op ?? 'upsert';\n if (op !== 'upsert') {\n if (!row.subject) {\n throw new CliCommandError('subject_required', `Object operation ${op} requires subject.`, 2);\n }\n const subject = resolveResourceTarget(context, row.subject).resourceUrl;\n if (op === 'patch') {\n const set = row.set ?? {};\n const sparql = buildDescriptorPatchSparql(descriptor, subject, set);\n if (commit) {\n await patchSubject({ context, subject, sparql, ifMatch: row.ifMatch, errorCode: 'obj_patch_failed' });\n }\n return {\n index,\n ok: true,\n code: commit ? 'committed' : 'plan_ready',\n operation: op,\n schema: descriptor.uri,\n subject,\n set: redactDescriptorObject(descriptor, set),\n };\n }\n if (op === 'link') {\n if (!row.predicate || !row.object) {\n throw new CliCommandError('link_target_required', 'Link rows require predicate and object.', 2);\n }\n const field = descriptor.fields[row.predicate];\n const predicate = field ? field.predicate : row.predicate;\n if (field && field.type !== 'uri') {\n throw new CliCommandError('relation_field_not_uri', `Relation field is not URI-valued: ${row.predicate}`, 2);\n }\n if (!field && !/^https?:\\/\\//iu.test(predicate)) {\n throw new CliCommandError('predicate_unknown', `Predicate field is not known by descriptor: ${row.predicate}`, 2);\n }\n const sparql = buildDescriptorLinkSparql(subject, predicate, row.object);\n if (commit) {\n await patchSubject({ context, subject, sparql, ifMatch: row.ifMatch, errorCode: 'obj_link_failed' });\n }\n return {\n index,\n ok: true,\n code: commit ? 'committed' : 'plan_ready',\n operation: op,\n schema: descriptor.uri,\n subject,\n predicate,\n object: row.object,\n };\n }\n if (op === 'delete') {\n const sparql = buildDescriptorDeleteSparql(subject);\n if (commit) {\n await patchSubject({ context, subject, sparql, ifMatch: row.ifMatch, errorCode: 'obj_delete_failed' });\n }\n return {\n index,\n ok: true,\n code: commit ? 'committed' : 'plan_ready',\n operation: op,\n schema: descriptor.uri,\n subject,\n };\n }\n throw new CliCommandError('unsupported_operation', `Unsupported object operation: ${op}`, 2);\n }\n\n const item = descriptorUpsertPlanItem({\n descriptor,\n index,\n commit,\n podRoot: context.podRoot,\n row,\n });\n const subject = String(item.subject);\n if (commit) {\n const sparql = buildDescriptorUpsertSparql(descriptor, subject, row);\n await patchSubject({ context, subject, sparql, ifMatch: row.ifMatch, errorCode: 'obj_commit_failed' });\n }\n\n return item;\n}\n\nexport function descriptorUpsertPlanItem(input: {\n descriptor: PodModelDescriptor;\n index: number;\n commit: boolean;\n podRoot: string;\n row: ObjMutationRow;\n}): ItemResult {\n const storage = createPodStorage(createPodModelDescriptorRegistry([ input.descriptor ]));\n const validation = storage.validate({\n schemaUri: input.descriptor.uri,\n operation: 'upsert',\n match: input.row.match ?? {},\n set: input.row.set ?? {},\n });\n if (!validation.ok) {\n throw new CliCommandError(validation.error.code, validation.error.message, 2);\n }\n\n const discovery = input.descriptor as DiscoveryDescriptor;\n const subject = resourceUrlFromPlan(input.podRoot, validation.plan);\n return {\n index: input.index,\n ok: true,\n code: input.commit ? 'committed' : 'plan_ready',\n operation: input.row.op ?? 'upsert',\n schema: input.descriptor.uri,\n subject,\n resourceUrl: documentResourceInput(subject),\n planId: validation.plan.id,\n resourceId: validation.plan.resourceId,\n resourceUri: validation.plan.resourceUri,\n documentPathPolicy: discovery.documentPathPolicy ?? null,\n match: redactDescriptorObject(input.descriptor, input.row.match ?? {}),\n set: redactDescriptorObject(input.descriptor, input.row.set ?? {}),\n };\n}\n\nexport async function executeRows(input: {\n argv: ObjArgs;\n rows: ObjMutationRow[];\n defaultSchema?: string;\n commit: boolean;\n}): Promise<ItemResult[]> {\n const context = await resolveObjMutationContext(input.argv, input.commit);\n const items: ItemResult[] = [];\n for (const [ index, originalRow ] of input.rows.entries()) {\n const row = {\n ...originalRow,\n schema: originalRow.schema ?? input.defaultSchema,\n };\n try {\n const shouldCommitToPod = input.commit && !context.pendingOnly;\n const item = row.schema\n ? await executeDescriptorRow(context, row, index, shouldCommitToPod)\n : await executeRawRow(context, row, index, shouldCommitToPod);\n if (context.pendingOnly && input.commit) {\n const outboxPath = context.outboxPath ?? getObjLocalOutboxPath();\n appendObjLocalOutbox({\n kind: 'xpod.obj.mutation',\n version: 1,\n status: 'pending',\n createdAt: new Date().toISOString(),\n webId: context.webId,\n podRoot: context.podRoot,\n row,\n item,\n }, outboxPath);\n items.push({\n ...item,\n code: 'pending_local',\n pendingLocal: true,\n outboxPath,\n warnings: [\n ...((Array.isArray(item.warnings) ? item.warnings : []) as unknown[]),\n context.pendingWarning,\n ],\n });\n continue;\n }\n items.push(context.planningOnly\n ? {\n ...item,\n planningOnly: true,\n warnings: [\n ...((Array.isArray(item.warnings) ? item.warnings : []) as unknown[]),\n context.planningWarning,\n ],\n }\n : item);\n } catch (error) {\n const err = error instanceof CliCommandError\n ? error\n : new CliCommandError('error', error instanceof Error ? error.message : String(error));\n items.push({ index, ok: false, code: err.code, message: err.message });\n }\n }\n return items;\n}\n\nexport function mutationItemsResultCode(items: ItemResult[], commit: boolean): 'plan_ready' | 'committed' | 'pending_local' | 'partial_failure' {\n if (!items.every((item) => item.ok)) return 'partial_failure';\n if (items.some((item) => item.code === 'pending_local')) return 'pending_local';\n return commit ? 'committed' : 'plan_ready';\n}\n\nfunction printItems(items: ItemResult[]): void {\n for (const item of items) {\n console.log(`${item.index}\\t${item.ok ? item.code : `ERROR ${item.code}`}\\t${String(item.subject ?? item.resourceUrl ?? item.message ?? '')}`);\n }\n}\n\nconst schemasCommand: CommandModule<object, ObjSchemasArgs> = {\n command: 'schemas',\n describe: 'List model-backed object schemas available to AI tools',\n builder: (yargs) =>\n objOptions<ObjSchemasArgs>(yargs)\n .option('domain', { type: 'string', description: 'Filter schemas by domain such as capture or symphony' }),\n handler: async (argv) => {\n try {\n const schemas = listSchemaDescriptors({ domain: argv.domain });\n if (argv.json) {\n writeJsonResult({ schemas }, 'schemas');\n return;\n }\n for (const descriptor of schemas) {\n console.log(`${String(descriptor.alias)}\\t${String(descriptor.schema)}\\t${String(descriptor.resourceKind)}`);\n }\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst describeCommand: CommandModule<object, ObjDescribeArgs> = {\n command: 'describe <schema>',\n describe: 'Describe one model-backed object schema by URI or alias',\n builder: (yargs) =>\n objOptions<ObjDescribeArgs>(yargs)\n .positional('schema', { type: 'string', demandOption: true, description: 'Schema URI or descriptor alias' }),\n handler: async (argv) => {\n try {\n const descriptor = describeSchemaDescriptor(argv.schema);\n if (!descriptor) {\n throw new CliCommandError('schema_unknown', `Schema is not known by @undefineds.co/models: ${argv.schema}`, 2);\n }\n if (argv.json) {\n writeJsonResult({ descriptor }, 'schema');\n return;\n }\n console.log(JSON.stringify(descriptor, null, 2));\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst importCommand: CommandModule<object, ObjImportArgs> = {\n command: 'import <file>',\n describe: 'Import descriptor-backed or explicit raw JSONL rows',\n builder: (yargs) =>\n objOptions<ObjImportArgs>(yargs)\n .positional('file', { type: 'string', demandOption: true, description: 'JSONL file to import, or - for stdin' })\n .option('dry-run', { type: 'boolean', description: 'Validate and print a plan without writing' })\n .option('commit', { type: 'boolean', description: 'Commit the validated mutations' })\n .check(mutationModeCheck),\n handler: async (argv) => {\n try {\n const items = await executeRows({\n argv,\n rows: await readJsonl(argv.file),\n commit: argv.commit === true,\n });\n const code = mutationItemsResultCode(items, argv.commit === true);\n if (argv.json) {\n writeJsonItems(items, code);\n return;\n }\n printItems(items);\n if (!items.every((item) => item.ok)) process.exit(1);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst upsertCommand: CommandModule<object, ObjUpsertArgs> = {\n command: 'upsert',\n describe: 'Upsert descriptor-backed JSONL rows',\n builder: (yargs) =>\n objOptions<ObjUpsertArgs>(yargs)\n .option('schema', { type: 'string', demandOption: true, description: 'Schema URI or descriptor alias' })\n .option('from', { type: 'string', demandOption: true, description: 'JSONL file to read, or - for stdin' })\n .nargs('from', 1)\n .option('dry-run', { type: 'boolean', description: 'Validate and print a plan without writing' })\n .option('commit', { type: 'boolean', description: 'Commit the validated mutations' })\n .check(mutationModeCheck),\n handler: async (argv) => {\n try {\n const items = await executeRows({\n argv,\n rows: await readJsonl(argv.from),\n defaultSchema: resolveDescriptor(argv.schema).uri,\n commit: argv.commit === true,\n });\n const code = mutationItemsResultCode(items, argv.commit === true);\n if (argv.json) {\n writeJsonItems(items, code);\n return;\n }\n printItems(items);\n if (!items.every((item) => item.ok)) process.exit(1);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst listCommand: CommandModule<object, ObjSelectorArgs> = {\n command: 'list',\n describe: 'List descriptor-backed objects',\n builder: (yargs) =>\n selectorOptions<ObjSelectorArgs>(yargs)\n .option('schema', { type: 'string', demandOption: true, description: 'Schema URI or descriptor alias' }),\n handler: async (argv) => {\n try {\n const context = await requireAuthContext(argv);\n const selector = await resolveObjectSelector(context, argv);\n const objects = await queryDescriptorObjects(context, selector);\n if (argv.json) {\n writeJsonResult({\n webId: context.webId,\n podRoot: context.podRoot,\n schema: selector.descriptor.uri,\n objects,\n });\n return;\n }\n for (const object of objects) {\n console.log(object.subject);\n }\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst exportCommand: CommandModule<object, ObjSelectorArgs> = {\n command: 'export <selector>',\n describe: 'Export descriptor-backed objects as JSONL',\n builder: (yargs) =>\n selectorOptions<ObjSelectorArgs>(yargs)\n .positional('selector', { type: 'string', demandOption: true, description: 'Schema URI/alias, subject, resource URL, or Pod-relative path selector' })\n .option('format', { type: 'string', choices: [ 'jsonl' ], default: 'jsonl', description: 'Export format' })\n .option('out', { type: 'string', description: 'Output file path' }),\n handler: async (argv) => {\n try {\n const context = await requireAuthContext(argv);\n const selector = await resolveObjectSelector(context, argv);\n const objects = await queryDescriptorObjects(context, selector);\n const jsonl = jsonlForObjects(objects);\n if (argv.out) {\n writeFileSync(argv.out, jsonl, 'utf-8');\n }\n if (argv.json) {\n writeJsonResult({\n webId: context.webId,\n podRoot: context.podRoot,\n schema: selector.descriptor.uri,\n count: objects.length,\n out: argv.out ?? null,\n ...(argv.out ? {} : { objects }),\n });\n return;\n }\n if (!argv.out) {\n process.stdout.write(jsonl);\n }\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst getCommand: CommandModule<object, ObjGetArgs> = {\n command: 'get',\n describe: 'Read one descriptor-backed object as JSON',\n builder: (yargs) =>\n objOptions<ObjGetArgs>(yargs)\n .option('schema', { type: 'string', description: 'Schema URI or descriptor alias' })\n .option('subject', { type: 'string', demandOption: true, description: 'Object subject URI or Pod-relative subject' })\n .option('out', { type: 'string', description: 'Write JSON object to file' })\n .option('include-metadata', { type: 'boolean', default: true, description: 'Include etag/revision metadata when available' }),\n handler: async (argv) => {\n try {\n const context = await requireAuthContext(argv);\n const selector = await resolveObjectSelector(context, {\n ...argv,\n selector: undefined,\n limit: 1,\n format: 'jsonl',\n where: undefined,\n relation: undefined,\n status: undefined,\n });\n const objects = await queryDescriptorObjects(context, selector);\n const object = objects[0];\n if (!object) {\n throw new CliCommandError('object_not_found', `Object not found: ${argv.subject}`, 1);\n }\n const body = `${JSON.stringify(object, null, 2)}\\n`;\n if (argv.out) {\n writeFileSync(argv.out, body, 'utf-8');\n }\n if (argv.json) {\n writeJsonResult({ webId: context.webId, podRoot: context.podRoot, object, out: argv.out ?? null });\n return;\n }\n if (!argv.out) {\n process.stdout.write(body);\n }\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst patchCommand: CommandModule<object, ObjPatchArgs> = {\n command: 'patch',\n describe: 'Patch one descriptor-backed object field set',\n builder: (yargs) =>\n objOptions<ObjPatchArgs>(yargs)\n .option('schema', { type: 'string', description: 'Schema URI or descriptor alias. Required if the subject document cannot be inferred.' })\n .option('subject', { type: 'string', demandOption: true, description: 'Object subject URI or Pod-relative subject' })\n .option('set', { type: 'string', demandOption: true, description: 'JSON object of descriptor field values to set' })\n .option('if-match', { type: 'string', description: 'If-Match header for stale-write protection' })\n .option('dry-run', { type: 'boolean', description: 'Print the mutation plan without writing' })\n .option('commit', { type: 'boolean', description: 'Commit the mutation' })\n .check(mutationModeCheck),\n handler: async (argv) => {\n try {\n const data = await executePatchCommand(argv);\n if (argv.json) {\n writeJsonResult(data, argv['dry-run'] ? 'plan_ready' : 'committed');\n return;\n }\n console.log(argv['dry-run'] ? JSON.stringify(data.plan, null, 2) : `PATCH ${String(data.resourceUrl)} -> HTTP ${String(data.status)}`);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst linkCommand: CommandModule<object, ObjLinkArgs> = {\n command: 'link',\n describe: 'Link one descriptor-backed object to another URI',\n builder: (yargs) =>\n objOptions<ObjLinkArgs>(yargs)\n .option('schema', { type: 'string', description: 'Schema URI or descriptor alias when --predicate is a descriptor field' })\n .option('subject', { type: 'string', demandOption: true, description: 'Object subject URI or Pod-relative subject' })\n .option('predicate', { type: 'string', demandOption: true, description: 'Predicate URI or descriptor field' })\n .option('object', { type: 'string', demandOption: true, description: 'Object URI to link' })\n .option('if-match', { type: 'string', description: 'If-Match header for stale-write protection' })\n .option('dry-run', { type: 'boolean', description: 'Print the mutation plan without writing' })\n .option('commit', { type: 'boolean', description: 'Commit the mutation' })\n .check(mutationModeCheck),\n handler: async (argv) => {\n try {\n const data = await executeLinkCommand(argv);\n if (argv.json) {\n writeJsonResult(data, argv['dry-run'] ? 'plan_ready' : 'committed');\n return;\n }\n console.log(argv['dry-run'] ? JSON.stringify(data.plan, null, 2) : `LINK ${String(data.resourceUrl)} -> HTTP ${String(data.status)}`);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst deleteCommand: CommandModule<object, ObjDeleteArgs> = {\n command: 'delete',\n describe: 'Delete triples for one descriptor-backed object subject',\n builder: (yargs) =>\n objOptions<ObjDeleteArgs>(yargs)\n .option('schema', { type: 'string', description: 'Schema URI or descriptor alias. Required if the subject document cannot be inferred.' })\n .option('subject', { type: 'string', demandOption: true, description: 'Object subject URI or Pod-relative subject' })\n .option('if-match', { type: 'string', description: 'If-Match header for stale-write protection' })\n .option('dry-run', { type: 'boolean', description: 'Print the mutation plan without writing' })\n .option('commit', { type: 'boolean', description: 'Commit the mutation' })\n .check(mutationModeCheck),\n handler: async (argv) => {\n try {\n const data = await executeDeleteCommand(argv);\n if (argv.json) {\n writeJsonResult(data, argv['dry-run'] ? 'plan_ready' : 'committed');\n return;\n }\n console.log(argv['dry-run'] ? JSON.stringify(data.plan, null, 2) : `DELETE ${String(data.resourceUrl)} -> HTTP ${String(data.status)}`);\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nconst watchCommand: CommandModule<object, ObjSelectorArgs> = {\n command: 'watch <selector>',\n describe: 'Stream descriptor-backed object changes as JSONL snapshots',\n builder: (yargs) =>\n selectorOptions<ObjSelectorArgs>(yargs)\n .positional('selector', { type: 'string', demandOption: true, description: 'Schema URI/alias, subject, resource URL, or Pod-relative path selector' })\n .option('format', { type: 'string', choices: [ 'jsonl' ], default: 'jsonl', description: 'Watch stream format' })\n .option('since', { type: 'string', description: 'Opaque cursor from a previous watch stream' }),\n handler: async (argv) => {\n try {\n const context = await requireAuthContext(argv);\n const selector = await resolveObjectSelector(context, argv);\n const objects = await queryDescriptorObjects(context, selector);\n const metadata = {\n cursorDurable: false,\n since: argv.since ?? null,\n cursor: null,\n message: 'Durable object cursors are not available; reconcile with a fresh obj list/export snapshot.',\n };\n if (argv.json) {\n writeJsonResult({ metadata, objects }, 'watch_snapshot');\n return;\n }\n console.log(JSON.stringify({ ok: true, code: 'cursor_unavailable', metadata }));\n for (const [ index, object ] of objects.entries()) {\n console.log(JSON.stringify({\n index,\n ok: true,\n code: 'snapshot',\n change: 'snapshot',\n ...object,\n }));\n }\n } catch (error) {\n handleCliError(error, argv.json);\n }\n },\n};\n\nexport const objCommand: CommandModule<object, ObjArgs> = {\n command: 'obj',\n describe: 'Descriptor-backed object transport',\n builder: (yargs) =>\n (yargs\n .command(schemasCommand)\n .command(describeCommand)\n .command(exportCommand)\n .command(importCommand)\n .command(getCommand)\n .command(listCommand)\n .command(upsertCommand)\n .command(patchCommand)\n .command(linkCommand)\n .command(deleteCommand)\n .command(watchCommand)\n .demandCommand(1, 'Please specify an object subcommand') as unknown as Argv<ObjArgs>),\n handler: () => {},\n};\n"]}
|
|
@@ -85,6 +85,7 @@
|
|
|
85
85
|
"undefineds:dist/ai/service/CredentialReaderImpl.jsonld",
|
|
86
86
|
"undefineds:dist/tunnel/CloudflareTunnelProvider.jsonld",
|
|
87
87
|
"undefineds:dist/tunnel/LocalTunnelProvider.jsonld",
|
|
88
|
+
"undefineds:dist/tunnel/NgrokTunnelProvider.jsonld",
|
|
88
89
|
"undefineds:dist/util/identifiers/MultiDomainIdentifierStrategy.jsonld",
|
|
89
90
|
"undefineds:dist/util/identifiers/SubdomainPodIdentifierStrategy.jsonld",
|
|
90
91
|
"undefineds:dist/identity/oidc/DisabledOidcHandler.jsonld",
|
|
@@ -2249,6 +2249,42 @@
|
|
|
2249
2249
|
}
|
|
2250
2250
|
}
|
|
2251
2251
|
},
|
|
2252
|
+
"NgrokTunnelProvider": {
|
|
2253
|
+
"@id": "undefineds:dist/tunnel/NgrokTunnelProvider.jsonld#NgrokTunnelProvider",
|
|
2254
|
+
"@prefix": true,
|
|
2255
|
+
"@context": {
|
|
2256
|
+
"options_authtoken": {
|
|
2257
|
+
"@id": "undefineds:dist/tunnel/NgrokTunnelProvider.jsonld#NgrokTunnelProvider_options_authtoken"
|
|
2258
|
+
},
|
|
2259
|
+
"options_url": {
|
|
2260
|
+
"@id": "undefineds:dist/tunnel/NgrokTunnelProvider.jsonld#NgrokTunnelProvider_options_url"
|
|
2261
|
+
},
|
|
2262
|
+
"options_ngrokPath": {
|
|
2263
|
+
"@id": "undefineds:dist/tunnel/NgrokTunnelProvider.jsonld#NgrokTunnelProvider_options_ngrokPath"
|
|
2264
|
+
},
|
|
2265
|
+
"options_agentApiUrl": {
|
|
2266
|
+
"@id": "undefineds:dist/tunnel/NgrokTunnelProvider.jsonld#NgrokTunnelProvider_options_agentApiUrl"
|
|
2267
|
+
},
|
|
2268
|
+
"options_connectTimeoutMs": {
|
|
2269
|
+
"@id": "undefineds:dist/tunnel/NgrokTunnelProvider.jsonld#NgrokTunnelProvider_options_connectTimeoutMs"
|
|
2270
|
+
},
|
|
2271
|
+
"authtoken": {
|
|
2272
|
+
"@id": "undefineds:dist/tunnel/NgrokTunnelProvider.jsonld#NgrokTunnelProvider_options_authtoken"
|
|
2273
|
+
},
|
|
2274
|
+
"url": {
|
|
2275
|
+
"@id": "undefineds:dist/tunnel/NgrokTunnelProvider.jsonld#NgrokTunnelProvider_options_url"
|
|
2276
|
+
},
|
|
2277
|
+
"ngrokPath": {
|
|
2278
|
+
"@id": "undefineds:dist/tunnel/NgrokTunnelProvider.jsonld#NgrokTunnelProvider_options_ngrokPath"
|
|
2279
|
+
},
|
|
2280
|
+
"agentApiUrl": {
|
|
2281
|
+
"@id": "undefineds:dist/tunnel/NgrokTunnelProvider.jsonld#NgrokTunnelProvider_options_agentApiUrl"
|
|
2282
|
+
},
|
|
2283
|
+
"connectTimeoutMs": {
|
|
2284
|
+
"@id": "undefineds:dist/tunnel/NgrokTunnelProvider.jsonld#NgrokTunnelProvider_options_connectTimeoutMs"
|
|
2285
|
+
}
|
|
2286
|
+
}
|
|
2287
|
+
},
|
|
2252
2288
|
"MultiDomainIdentifierStrategy": {
|
|
2253
2289
|
"@id": "undefineds:dist/util/identifiers/MultiDomainIdentifierStrategy.jsonld#MultiDomainIdentifierStrategy",
|
|
2254
2290
|
"@prefix": true,
|
|
@@ -17,7 +17,7 @@ export interface DdnsManagerOptions {
|
|
|
17
17
|
localPort?: number;
|
|
18
18
|
intervalMs?: number;
|
|
19
19
|
autoAllocate?: boolean;
|
|
20
|
-
tunnelProvider?: 'cloudflare' | 'sakura_frp' | 'none';
|
|
20
|
+
tunnelProvider?: 'cloudflare' | 'sakura_frp' | 'ngrok' | 'none';
|
|
21
21
|
}
|
|
22
22
|
export declare class DdnsManager {
|
|
23
23
|
private readonly logger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DdnsManager.js","sourceRoot":"","sources":["../../src/edge/DdnsManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * DDNS Manager for Local Managed Mode\n *\n * Responsibilities (Local managed mode):\n * - Allocate a managed domain on Cloud (subdomain -> fqdn)\n * - Keep the record updated when network changes\n *\n * Note: if the machine has no public IP, we assume tunnel mode and let Cloud\n * point the managed domain to the configured tunnel provider.\n */\n\nimport { getLoggerFor } from 'global-logger-factory';\nimport type { SubdomainClient } from '../subdomain/SubdomainClient';\nimport type { EdgeNodeCapabilityDetector } from './EdgeNodeCapabilityDetector';\n\nexport interface DdnsManagerOptions {\n client: SubdomainClient;\n detector: EdgeNodeCapabilityDetector;\n subdomain: string;\n localPort?: number;\n intervalMs?: number;\n autoAllocate?: boolean;\n\n // Local tunnel provider preference (best-effort hint for Cloud).\n tunnelProvider?: 'cloudflare' | 'sakura_frp' | 'none';\n}\n\nexport class DdnsManager {\n private readonly logger = getLoggerFor(this);\n private readonly client: SubdomainClient;\n private readonly detector: EdgeNodeCapabilityDetector;\n private readonly subdomain: string;\n private readonly localPort?: number;\n private readonly intervalMs: number;\n private readonly autoAllocate: boolean;\n private readonly tunnelProvider: 'cloudflare' | 'sakura_frp' | 'none';\n\n private interval?: NodeJS.Timeout;\n private allocated = false;\n private fqdn?: string;\n private lastIpv4?: string;\n private lastIpv6?: string;\n private lastMode: 'direct' | 'tunnel' | 'unknown' = 'unknown';\n\n public constructor(options: DdnsManagerOptions) {\n this.client = options.client;\n this.detector = options.detector;\n this.subdomain = options.subdomain;\n this.localPort = options.localPort;\n this.intervalMs = options.intervalMs ?? 60_000;\n this.autoAllocate = options.autoAllocate ?? true;\n this.tunnelProvider = options.tunnelProvider ?? 'none';\n }\n\n public async start(): Promise<void> {\n if (this.interval) {\n return;\n }\n\n this.logger.info(`Starting DDNS manager for subdomain: ${this.subdomain}`);\n\n await this.runCycle();\n this.interval = setInterval(() => void this.runCycle(), this.intervalMs);\n }\n\n public stop(): void {\n if (this.interval) {\n clearInterval(this.interval);\n this.interval = undefined;\n }\n this.logger.info('DDNS manager stopped');\n }\n\n public getFqdn(): string | undefined {\n return this.allocated ? this.fqdn : undefined;\n }\n\n public isAllocated(): boolean {\n return this.allocated;\n }\n\n public getStatus(): {\n allocated: boolean;\n fqdn?: string;\n ipv4?: string;\n ipv6?: string;\n mode: 'direct' | 'tunnel' | 'unknown';\n tunnelProvider: string;\n } {\n return {\n allocated: this.allocated,\n fqdn: this.fqdn,\n ipv4: this.lastIpv4,\n ipv6: this.lastIpv6,\n mode: this.lastMode,\n tunnelProvider: this.tunnelProvider,\n };\n }\n\n public async runOnce(): Promise<void> {\n await this.runCycle();\n }\n\n private async runCycle(): Promise<void> {\n try {\n const netInfo = await this.detector.detectNetworkAddresses();\n\n const ipv4Public = netInfo.ipv4Public;\n const ipv6Public = netInfo.ipv6Public;\n const hasPublicIp = Boolean(ipv4Public || ipv6Public);\n\n this.lastMode = hasPublicIp ? 'direct' : 'tunnel';\n\n const ipv4 = ipv4Public ?? netInfo.ipv4;\n const ipv6 = ipv6Public ?? netInfo.ipv6;\n\n if (!this.allocated && this.autoAllocate) {\n await this.allocateSubdomain(ipv4, ipv6);\n }\n\n if (this.allocated) {\n const ipChanged = ipv4 !== this.lastIpv4 || ipv6 !== this.lastIpv6;\n if (ipChanged || this.lastMode === 'tunnel') {\n await this.updateDdns(ipv4, ipv6);\n }\n }\n } catch (error: unknown) {\n this.logger.error(`DDNS cycle failed: ${(error as Error).message}`);\n }\n }\n\n private async allocateSubdomain(ipv4?: string, ipv6?: string): Promise<void> {\n const existing = await this.client.getDdns(this.subdomain);\n if (existing) {\n this.logger.info(`DDNS subdomain already allocated: ${existing.fqdn}`);\n this.allocated = true;\n this.fqdn = existing.fqdn;\n this.lastIpv4 = existing.ipAddress;\n this.lastIpv6 = existing.ipv6Address;\n return;\n }\n\n this.logger.info(`Allocating DDNS subdomain: ${this.subdomain}`);\n\n const result = await this.client.allocateDdns({\n subdomain: this.subdomain,\n ipAddress: this.lastMode === 'direct' ? ipv4 : undefined,\n ipv6Address: this.lastMode === 'direct' ? ipv6 : undefined,\n mode: this.lastMode === 'tunnel' ? 'tunnel' : 'direct',\n tunnelProvider: this.tunnelProvider,\n localPort: this.localPort,\n });\n\n if (result.success) {\n this.logger.info(`DDNS allocated: ${result.fqdn}`);\n this.allocated = true;\n this.fqdn = result.fqdn;\n this.lastIpv4 = this.lastMode === 'direct' ? ipv4 : undefined;\n this.lastIpv6 = this.lastMode === 'direct' ? ipv6 : undefined;\n }\n }\n\n private async updateDdns(ipv4?: string, ipv6?: string): Promise<void> {\n if (this.lastMode === 'direct' && !ipv4 && !ipv6) {\n this.logger.debug('No IP address to update in direct mode');\n return;\n }\n\n\n this.logger.info(\n `Updating DDNS: ${this.subdomain} mode=${this.lastMode} ipv4=${ipv4 ?? 'none'} ipv6=${ipv6 ?? 'none'} tunnel=${this.tunnelProvider}`,\n );\n\n const result = await this.client.updateDdns(this.subdomain, {\n ipAddress: this.lastMode === 'direct' ? ipv4 : undefined,\n ipv6Address: this.lastMode === 'direct' ? ipv6 : undefined,\n mode: this.lastMode === 'tunnel' ? 'tunnel' : 'direct',\n tunnelProvider: this.tunnelProvider,\n localPort: this.localPort,\n });\n\n if (result.success) {\n this.fqdn = result.fqdn;\n this.lastIpv4 = this.lastMode === 'direct' ? ipv4 : undefined;\n this.lastIpv6 = this.lastMode === 'direct' ? ipv6 : undefined;\n this.logger.info(`DDNS updated: ${result.fqdn}`);\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DdnsManager.js","sourceRoot":"","sources":["../../src/edge/DdnsManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * DDNS Manager for Local Managed Mode\n *\n * Responsibilities (Local managed mode):\n * - Allocate a managed domain on Cloud (subdomain -> fqdn)\n * - Keep the record updated when network changes\n *\n * Note: if the machine has no public IP, we assume tunnel mode and let Cloud\n * point the managed domain to the configured tunnel provider.\n */\n\nimport { getLoggerFor } from 'global-logger-factory';\nimport type { SubdomainClient } from '../subdomain/SubdomainClient';\nimport type { EdgeNodeCapabilityDetector } from './EdgeNodeCapabilityDetector';\n\nexport interface DdnsManagerOptions {\n client: SubdomainClient;\n detector: EdgeNodeCapabilityDetector;\n subdomain: string;\n localPort?: number;\n intervalMs?: number;\n autoAllocate?: boolean;\n\n // Local tunnel provider preference (best-effort hint for Cloud).\n tunnelProvider?: 'cloudflare' | 'sakura_frp' | 'ngrok' | 'none';\n}\n\nexport class DdnsManager {\n private readonly logger = getLoggerFor(this);\n private readonly client: SubdomainClient;\n private readonly detector: EdgeNodeCapabilityDetector;\n private readonly subdomain: string;\n private readonly localPort?: number;\n private readonly intervalMs: number;\n private readonly autoAllocate: boolean;\n private readonly tunnelProvider: 'cloudflare' | 'sakura_frp' | 'ngrok' | 'none';\n\n private interval?: NodeJS.Timeout;\n private allocated = false;\n private fqdn?: string;\n private lastIpv4?: string;\n private lastIpv6?: string;\n private lastMode: 'direct' | 'tunnel' | 'unknown' = 'unknown';\n\n public constructor(options: DdnsManagerOptions) {\n this.client = options.client;\n this.detector = options.detector;\n this.subdomain = options.subdomain;\n this.localPort = options.localPort;\n this.intervalMs = options.intervalMs ?? 60_000;\n this.autoAllocate = options.autoAllocate ?? true;\n this.tunnelProvider = options.tunnelProvider ?? 'none';\n }\n\n public async start(): Promise<void> {\n if (this.interval) {\n return;\n }\n\n this.logger.info(`Starting DDNS manager for subdomain: ${this.subdomain}`);\n\n await this.runCycle();\n this.interval = setInterval(() => void this.runCycle(), this.intervalMs);\n }\n\n public stop(): void {\n if (this.interval) {\n clearInterval(this.interval);\n this.interval = undefined;\n }\n this.logger.info('DDNS manager stopped');\n }\n\n public getFqdn(): string | undefined {\n return this.allocated ? this.fqdn : undefined;\n }\n\n public isAllocated(): boolean {\n return this.allocated;\n }\n\n public getStatus(): {\n allocated: boolean;\n fqdn?: string;\n ipv4?: string;\n ipv6?: string;\n mode: 'direct' | 'tunnel' | 'unknown';\n tunnelProvider: string;\n } {\n return {\n allocated: this.allocated,\n fqdn: this.fqdn,\n ipv4: this.lastIpv4,\n ipv6: this.lastIpv6,\n mode: this.lastMode,\n tunnelProvider: this.tunnelProvider,\n };\n }\n\n public async runOnce(): Promise<void> {\n await this.runCycle();\n }\n\n private async runCycle(): Promise<void> {\n try {\n const netInfo = await this.detector.detectNetworkAddresses();\n\n const ipv4Public = netInfo.ipv4Public;\n const ipv6Public = netInfo.ipv6Public;\n const hasPublicIp = Boolean(ipv4Public || ipv6Public);\n\n this.lastMode = hasPublicIp ? 'direct' : 'tunnel';\n\n const ipv4 = ipv4Public ?? netInfo.ipv4;\n const ipv6 = ipv6Public ?? netInfo.ipv6;\n\n if (!this.allocated && this.autoAllocate) {\n await this.allocateSubdomain(ipv4, ipv6);\n }\n\n if (this.allocated) {\n const ipChanged = ipv4 !== this.lastIpv4 || ipv6 !== this.lastIpv6;\n if (ipChanged || this.lastMode === 'tunnel') {\n await this.updateDdns(ipv4, ipv6);\n }\n }\n } catch (error: unknown) {\n this.logger.error(`DDNS cycle failed: ${(error as Error).message}`);\n }\n }\n\n private async allocateSubdomain(ipv4?: string, ipv6?: string): Promise<void> {\n const existing = await this.client.getDdns(this.subdomain);\n if (existing) {\n this.logger.info(`DDNS subdomain already allocated: ${existing.fqdn}`);\n this.allocated = true;\n this.fqdn = existing.fqdn;\n this.lastIpv4 = existing.ipAddress;\n this.lastIpv6 = existing.ipv6Address;\n return;\n }\n\n this.logger.info(`Allocating DDNS subdomain: ${this.subdomain}`);\n\n const result = await this.client.allocateDdns({\n subdomain: this.subdomain,\n ipAddress: this.lastMode === 'direct' ? ipv4 : undefined,\n ipv6Address: this.lastMode === 'direct' ? ipv6 : undefined,\n mode: this.lastMode === 'tunnel' ? 'tunnel' : 'direct',\n tunnelProvider: this.tunnelProvider,\n localPort: this.localPort,\n });\n\n if (result.success) {\n this.logger.info(`DDNS allocated: ${result.fqdn}`);\n this.allocated = true;\n this.fqdn = result.fqdn;\n this.lastIpv4 = this.lastMode === 'direct' ? ipv4 : undefined;\n this.lastIpv6 = this.lastMode === 'direct' ? ipv6 : undefined;\n }\n }\n\n private async updateDdns(ipv4?: string, ipv6?: string): Promise<void> {\n if (this.lastMode === 'direct' && !ipv4 && !ipv6) {\n this.logger.debug('No IP address to update in direct mode');\n return;\n }\n\n\n this.logger.info(\n `Updating DDNS: ${this.subdomain} mode=${this.lastMode} ipv4=${ipv4 ?? 'none'} ipv6=${ipv6 ?? 'none'} tunnel=${this.tunnelProvider}`,\n );\n\n const result = await this.client.updateDdns(this.subdomain, {\n ipAddress: this.lastMode === 'direct' ? ipv4 : undefined,\n ipv6Address: this.lastMode === 'direct' ? ipv6 : undefined,\n mode: this.lastMode === 'tunnel' ? 'tunnel' : 'direct',\n tunnelProvider: this.tunnelProvider,\n localPort: this.localPort,\n });\n\n if (result.success) {\n this.fqdn = result.fqdn;\n this.lastIpv4 = this.lastMode === 'direct' ? ipv4 : undefined;\n this.lastIpv6 = this.lastMode === 'direct' ? ipv6 : undefined;\n this.logger.info(`DDNS updated: ${result.fqdn}`);\n }\n }\n}\n"]}
|