@codesys/mcp-toolkit 1.5.7 → 2.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +153 -183
- package/LICENSE +21 -21
- package/README.md +224 -107
- package/dist/actions.d.ts +28 -0
- package/dist/actions.js +98 -0
- package/dist/actions.js.map +1 -0
- package/dist/bridge/bridge.d.ts +105 -0
- package/dist/bridge/bridge.js +400 -0
- package/dist/bridge/bridge.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +196 -0
- package/dist/cli.js.map +1 -0
- package/dist/codesys/cache.d.ts +48 -0
- package/dist/codesys/cache.js +82 -0
- package/dist/codesys/cache.js.map +1 -0
- package/dist/codesys/changes.d.ts +57 -0
- package/dist/codesys/changes.js +133 -0
- package/dist/codesys/changes.js.map +1 -0
- package/dist/codesys/decl.d.ts +45 -0
- package/dist/codesys/decl.js +251 -0
- package/dist/codesys/decl.js.map +1 -0
- package/dist/codesys/devices.d.ts +34 -0
- package/dist/codesys/devices.js +82 -0
- package/dist/codesys/devices.js.map +1 -0
- package/dist/codesys/diff.d.ts +13 -0
- package/dist/codesys/diff.js +61 -0
- package/dist/codesys/diff.js.map +1 -0
- package/dist/codesys/install.d.ts +40 -0
- package/dist/codesys/install.js +144 -0
- package/dist/codesys/install.js.map +1 -0
- package/dist/codesys/library-browse.d.ts +19 -0
- package/dist/codesys/library-browse.js +57 -0
- package/dist/codesys/library-browse.js.map +1 -0
- package/dist/codesys/outline.d.ts +32 -0
- package/dist/codesys/outline.js +219 -0
- package/dist/codesys/outline.js.map +1 -0
- package/dist/codesys/simulation.d.ts +34 -0
- package/dist/codesys/simulation.js +57 -0
- package/dist/codesys/simulation.js.map +1 -0
- package/dist/codesys/st.d.ts +36 -0
- package/dist/codesys/st.js +69 -0
- package/dist/codesys/st.js.map +1 -0
- package/dist/daemon.d.ts +46 -0
- package/dist/daemon.js +173 -0
- package/dist/daemon.js.map +1 -0
- package/dist/driver.d.ts +25 -0
- package/dist/driver.js +33 -0
- package/dist/driver.js.map +1 -0
- package/dist/panel/sim-panel.html +357 -0
- package/dist/panel/viewer.html +126 -0
- package/dist/panel-types.d.ts +20 -0
- package/dist/panel-types.js +3 -0
- package/dist/panel-types.js.map +1 -0
- package/dist/panel.d.ts +27 -0
- package/dist/panel.js +208 -0
- package/dist/panel.js.map +1 -0
- package/dist/server.d.ts +5 -0
- package/dist/server.js +33 -941
- package/dist/server.js.map +1 -0
- package/dist/tools.d.ts +103 -0
- package/dist/tools.js +793 -0
- package/dist/tools.js.map +1 -0
- package/dist/viewer.d.ts +14 -0
- package/dist/viewer.js +125 -0
- package/dist/viewer.js.map +1 -0
- package/package.json +37 -21
- package/watcher/mcp_compat.py +147 -0
- package/watcher/mcp_ops.py +1178 -0
- package/watcher/mcp_sim.py +246 -0
- package/watcher/watcher.py +255 -0
- package/.claude/settings.local.json +0 -29
- package/CLAUDE.md +0 -26
- package/CONTRIBUTING.md +0 -72
- package/README.md.enhanced +0 -155
- package/codesys-mcp-toolkit-1.2.0.tgz +0 -0
- package/codesys-mcp-toolkit-1.2.1.tgz +0 -0
- package/codesys-mcp-toolkit-1.5.7.tgz +0 -0
- package/dist/bin.js +0 -75
- package/dist/check_session_paths.js +0 -149
- package/dist/codesys_interop.js +0 -435
- package/dist/direct_session_command.js +0 -293
- package/dist/scriptLoader.js +0 -165
- package/dist/scripts/check_status.py +0 -21
- package/dist/scripts/compile_project.py +0 -65
- package/dist/scripts/create_method.py +0 -80
- package/dist/scripts/create_pou.py +0 -102
- package/dist/scripts/create_project.py +0 -116
- package/dist/scripts/create_property.py +0 -78
- package/dist/scripts/ensure_project_open.py +0 -154
- package/dist/scripts/find_object_by_path.py +0 -111
- package/dist/scripts/get_pou_code.py +0 -91
- package/dist/scripts/get_project_structure.py +0 -72
- package/dist/scripts/open_project.py +0 -25
- package/dist/scripts/save_project.py +0 -29
- package/dist/scripts/session_status.py +0 -281
- package/dist/scripts/set_pou_code.py +0 -109
- package/dist/scripts/start_session.py +0 -809
- package/dist/scripts/stop_session.py +0 -324
- package/dist/sessionManager.js +0 -798
- package/docs/configuration.md +0 -141
- package/docs/index.md +0 -26
- package/docs/installation.md +0 -84
- package/docs/session_management.md +0 -110
- package/examples/README.md +0 -78
- package/examples/sample_config.json +0 -32
- package/replacements_session_status.txt +0 -16
- package/scriptDoc.txt +0 -8679
- package/scripts/build.js +0 -25
- package/scripts/fix_fstrings.py +0 -76
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAoC,MAAM,cAAc,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AAErE,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAsB,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAoB,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,aAAa,EAAmB,MAAM,sBAAsB,CAAC;AAC1G,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAqC,MAAM,sBAAsB,CAAC;AACtH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAA2C,MAAM,6BAA6B,CAAC;AACvJ,OAAO,EAAE,kBAAkB,EAAwB,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAe,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAkC,MAAM,iBAAiB,CAAC;AAgC7G,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,OAAO,GAAG,KAAK,EAAc,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAErI,KAAK,UAAU,GAAG,CAAC,GAAe,EAAE,EAAyB;IAC3D,IAAI,CAAC;QACH,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;YACnD,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzF,OAAO,IAAI,CACT,8BAA8B,IAAI,kGAAkG,EACpI,IAAI,CACL,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,WAAW;YAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,UAAW,CAAW,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6IAA6I,CAAC,CAAC;AAEnL,SAAS,OAAO,CAAC,GAAe,EAAE,CAAS;IACzC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,YAAY,CAAC,CAAgC;IACpD,IAAI,CAAC,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3D,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAC,CAAC,WAAW,CAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACtH,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC,CAAC,cAAc,CAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;SAC1H,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE,sDAAsD,CAAC,CAAC;IACtH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,cAAc,GAAiE;IACnF,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE;IACxC,cAAc,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,EAAE;IACtD,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE;IAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1B,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;IAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1B,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;IAChC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IACpB,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IACpB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CAC3B,CAAC;AAeF,qGAAqG;AACrG,MAAM,UAAU,qBAAqB,CAAC,CAAc,EAAE,YAAqB;IACzE,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,YAAY,EAAE,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7F,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,IAAI,QAAQ,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,yBAAyB,KAAK,sEAAsE,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;;YACjO,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,qBAAqB,KAAK,kEAAkE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9K,CAAC;IACD,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9E,IAAI,CAAC,CAAC,eAAe,EAAE,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7F,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,iHAAiH;AACjH,MAAM,UAAU,WAAW,CAAC,YAAqB,EAAE,SAAkB,EAAE,QAAiB;IACtF,OAAO,CAAC,YAAY,EAAE,SAAS,IAAI,aAAa,SAAS,EAAE,EAAE,QAAQ,IAAI,YAAY,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/H,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC9C,IAAI,IAAI,GAAG,GAAG,CAAC;IACf,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAE,CAAC,CAAC,CAAE,CAAC;QAC5D,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,IAAI;SACR,OAAO,CAAC,kCAAkC,EAAE,EAAE,CAAC;SAC/C,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,IAAI,EAAE,CAAC;AACZ,CAAC;AAeD,mEAAmE;AACnE,MAAM,UAAU,YAAY,CAAC,CAAW;IACtC,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3I,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACrN,OAAO,CACL,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,GAAG,GAAG,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7H,GAAG,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAC/I,CAAC;AACJ,CAAC;AAcD,MAAM,UAAU,WAAW,CAAC,QAAwB;IAClD,MAAM,KAAK,GAAG,CAAC,CAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,CAAC,CAAe,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,CAAC,CAAe,EAAE,EAAE;QAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5G,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,CAAC,UAAU,IAAI,CAAC,MAAM,cAAc,KAAK,CAAC,MAAM,cAAc,CAAC,CAAC;IAC5E,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,4FAA4F,CAAC,CAAC;IACzH,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAiB,EAAE,GAAe;IAC9D,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;IACrB,uFAAuF;IACvF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,qBAAqB,CAAC,CAAC,CAAC;IACvW,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,MAAM,GAAG,GAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE;QAC/C,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE;YAChB,GAAG,MAAM;YACT,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAClB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI;oBAAE,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;gBACzF,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iDAAiD;gBACzE,OAAO,EAAE,CAAC,IAAa,CAAC,CAAC;YAC3B,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,4DAA4D;IAC5D,MAAM,WAAW,GAAG,KAAK,IAAyB,EAAE;QAClD,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAwB,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAChG,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,sEAAsE;IACtE,MAAM,OAAO,GAAG,KAAK,EAAE,IAAY,EAAE,MAAqC,EAAE,EAAE;QAC5E,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAiD,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACvH,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;gBAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,8BAA8B;QAChC,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC;IACF;;;OAGG;IACH,MAAM,YAAY,GAAG,KAAK,EAAE,OAAe,EAAmB,EAAE;QAC9D,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACtB,6FAA6F;QAC7F,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,+FAA+F,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5K,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QACzC,IAAI,KAAiB,CAAC;QACtB,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,WAAW,EAAE,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;QACzE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,+EAA+E,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;IAChH,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,CAAC,CAAsB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC;IAEpI,GAAG,CACD,gBAAgB,EAChB;QACE,WAAW,EAAE,0IAA0I;QACvJ,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;KAC1B,EACD,KAAK,IAAI,EAAE;QACT,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG;YACZ,YAAY,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,cAAc,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE;YACnJ,WAAW,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,QAAQ,aAAa;SAC/L,CAAC;QACF,IAAI,CAAC,CAAC,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,eAAe,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QACpK,IAAI,CAAC,CAAC,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,GAAG,CAAC,OAAO,CAAC,IAAI,iBAAiB,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,MAAM,IAAI,qBAAqB,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC;QAC5N,IAAI,CAAC,CAAC,UAAU;YAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC,CACF,CAAC;IAEF,GAAG,CACD,cAAc,EACd;QACE,WAAW,EACT,mUAAmU;QACrU,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uFAAuF,CAAC;YAClH,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gFAAgF,CAAC;SAC5H,CAAC;KACH,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,EAAE,CAC5C,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CACpB,cAAc,EACd,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,cAAc,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAC9H,EAAE,SAAS,EAAE,OAAO,EAAE,CACvB,CAAC;QACF,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,yBAAyB,CAAC,CAAC,WAAW,IAAI,MAAM,IAAI,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;IAC1K,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,gBAAgB,EAChB;QACE,WAAW,EAAE,4SAA4S;QACzT,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACnD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;SACnG,CAAC;KACH,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAC3B,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAClC,IAAI,UAAU,CAAC,MAAM,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;QAC1E,MAAM,CAAC,GAAG,QAAQ,IAAI,UAAU,CAAC;QACjC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAyC,sBAAsB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YACjI,GAAG,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3D,MAAM,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,yBAAyB,CAAC,CAAC,IAAI,GAAG,CAAC;QAC5C,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtH,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,IAAI,8DAA8D,qEAAqE,CAAC,CAAC;QACjN,MAAM,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC5B,oFAAoF;QACpF,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAA4C,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QACpK,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,WAAW,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,yBAAyB,CAAC,CAAC,WAAW,IAAI,MAAM,IAAI,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,EAAE,yDAAyD,CAAC;IAC5S,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,cAAc,EACd;QACE,WAAW,EAAE,mJAAmJ;QAChK,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC,EAAE,CAAC;KACjH,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CACpB,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAqC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QACtJ,OAAO,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACjF,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,eAAe,EACf;QACE,WAAW,EAAE,+FAA+F;QAC5G,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;KAClE,EACD,KAAK,EAAE,EAAE,cAAc,EAAE,EAAE,EAAE,CAC3B,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAsB,eAAe,EAAE,EAAE,eAAe,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;QACpG,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC;QACxB,KAAK,EAAE,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAC/D,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,kBAAkB,EAClB;QACE,WAAW,EAAE,sLAAsL;QACnM,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;YACvF,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;YACtH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;SAC7C,CAAC;KACH,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,EAAE,CACzC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAA8C,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;QAClJ,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc,IAAI,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,WAAW,IAAI,GAAG,8BAA8B,CAAC;QAC/I,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChL,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,cAAc,EACd;QACE,WAAW,EACT,sQAAsQ;QACxQ,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;KAClE,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAClB,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAiD,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAClG,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;gBAAE,IAAI,CAAC,CAAC,CAAC,KAAK;oBAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,IAAI;gBAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzF,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;QACtC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAqF,aAAa,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACvM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;gBAAE,IAAI,CAAC,CAAC,GAAG;oBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzH,CAAC;QACD,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,uDAAuD,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChK,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,cAAc,EACd;QACE,WAAW,EAAE,8PAA8P;QAC3Q,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAClC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACrC,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;SACxH,CAAC;KACH,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,EAAE,EAAE,CAC/D,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,IAAI,WAAW,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC1H,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,eAAe,EAAE,CAAC;YAClD,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAiD,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACzH,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,IAAI,aAAa,IAAI,EAAE,CAAC,CAAC;YAC1E,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAC3E,IAAI,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAkD,cAAc,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1I,MAAM,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,WAAW,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,aAAa,EAAE,cAAc,KAAK,SAAS,IAAI,gBAAgB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7K,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,eAAe,EACf;QACE,WAAW,EACT,kSAAkS;QACpS,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+FAA+F,CAAC;YACpI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC5H,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;YAC/E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACjC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;YAChE,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;YACzG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAClC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SACtC,CAAC;KACH,EACD,KAAK,EAAE,CAAC,EAAE,EAAE,CACV,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;YACvE,IAAI,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAkD,eAAe,EAAE;YACvF,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,UAAU;YACzB,QAAQ,EAAE,CAAC,CAAC,OAAO;YACnB,eAAe,EAAE,CAAC,CAAC,cAAc;YACjC,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,GAAG,IAAI,EAAE;SACV,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChC,OAAO,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,eAAe,EACf,EAAE,WAAW,EAAE,sCAAsC,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,EACjG,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CACjB,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAoC,eAAe,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;QAChG,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/B,OAAO,WAAW,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,eAAe,EACf;QACE,WAAW,EAAE,sGAAsG;QACnH,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC;KAChG,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAC1B,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAoC,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;QACnH,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QACjD,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC/B,OAAO,cAAc,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,aAAa,EACb;QACE,WAAW,EAAE,qHAAqH;QAClI,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YAC7B,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;SACxD,CAAC;KACH,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,EAAE,CACtD,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClH,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,WAAW,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,UAAU,IAAI,EAAE,CAAC;QAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACxB,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,cAAc,CAAC,CAAU,EAAE,CAAC;gBAC1F,IAAI,CAAC,IAAI;oBAAE,SAAS;gBACpB,aAAa,CAAC,IAAI,CAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBAChD,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;wBACf,KAAK,EAAE,CAAC;wBACR,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK;4BAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChG,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,IAAI,CAAC,KAAK;YAAE,OAAO,kBAAkB,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;QAC9F,OAAO,CAAC,GAAG,KAAK,aAAa,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7G,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,SAAS,EACT;QACE,WAAW,EAAE;YACX,mFAAmF;YACnF,2JAA2J;YAC3J,2GAA2G;SAC5G,CAAC,IAAI,CAAC,GAAG,CAAC;QACX,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;YAC1F,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAC3E,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;SAChG,CAAC;KACH,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CACnC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAiD,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QACxK,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5E,KAAK,CAAC,UAAU,CAAC;gBACf,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC5B,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,QAAQ,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM;gBACnC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;aAC9P,CAAC,CAAC;QACL,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3G,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC9F,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,gBAAgB,EAChB,EAAE,WAAW,EAAE,qEAAqE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EACjH,KAAK,IAAI,EAAE,CACT,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAiH,gBAAgB,CAAC,CAAC;QACzJ,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM;YAAE,OAAO,0BAA0B,CAAC;QAC3D,OAAO,CAAC,CAAC,SAAS;aACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;aACpL,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,gBAAgB,EAChB;QACE,WAAW,EAAE,qJAAqJ;QAClK,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;KACnD,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CACjB,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAuC,kBAAkB,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;QACtG,OAAO,mBAAmB,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,aAAa,EACb;QACE,WAAW,EAAE,gPAAgP;QAC7P,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC,EAAE,CAAC;KACtJ,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAC1B,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAqC,eAAe,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC;QAClI,OAAO,iBAAiB,CAAC,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,YAAY,EACZ,EAAE,WAAW,EAAE,mFAAmF,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAC/H,KAAK,IAAI,EAAE,CACT,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAwB,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,iDAAiD,CAAC;QAC9E,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,gBAAgB,EAChB;QACE,WAAW,EAAE;YACX,+FAA+F;YAC/F,iHAAiH;YACjH,uIAAuI;YACvI,gIAAgI;YAChI,mEAAmE;SACpE,CAAC,IAAI,CAAC,GAAG,CAAC;QACX,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YAC9D,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;YAC3G,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;YACxF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YACvF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YAC/F,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACpF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;YAClG,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YAChD,QAAQ,EAAE,CAAC;iBACR,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;iBACrK,QAAQ,EAAE;YACb,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;YACnH,YAAY,EAAE,CAAC;iBACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACxB,QAAQ,EAAE;iBACV,QAAQ,CAAC,uJAAuJ,CAAC;SACrK,CAAC;KACH,EACD,KAAK,EAAE,CAAC,EAAE,EAAE,CACV,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAmD,gBAAgB,EAAE;YACzF,GAAG,CAAC;YACJ,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9H,GAAG,IAAI,EAAE;SACV,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,OAAO;YAAE,MAAM,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,0BAA0B;QACrF,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACrD,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,SAAS,YAAY,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACvF,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,aAAa,EACb;QACE,WAAW,EACT,gXAAgX;QAClX,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iFAAiF,CAAC;SACrH,CAAC;KACH,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CACjB,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,WAAW,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,IAAI,CAA2B,YAAY,CAAC,CAAC,CAAC;QACtG,OAAO,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,aAAa,EACb;QACE,WAAW,EACT,+MAA+M;QACjN,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;KACzD,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CACnB,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,WAAW,EAAE,EAAE,CAAC;QACzC,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YAC/B,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrG,CAAC;QACD,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,KAAa,EAAE,EAAE;YACzC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC;YAC/C,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC,MAAM,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvK,CAAC,CAAC;QACF,mEAAmE;QACnE,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAA4B,cAAc,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvJ,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC7G,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrH,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,2BAA2B,MAAM,IAAI,CAAC,CAAC,CAAC,4EAA4E,CAAC;QACvK,MAAM,YAAY,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;QAC5D,OAAO;YACL,GAAG,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC;YAC3B,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC;YAC7B,GAAG,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAC5B,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,8BAA8B,MAAM,CAAC,MAAM,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7O,GAAG,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,uDAAuD,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACpH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,aAAa,EACb;QACE,WAAW,EACT,uPAAuP;QACzP,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC,EAAE,CAAC;KACtG,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CACf,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAA4B,cAAc,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9G,OAAO,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC,CACL,CAAC;IAKF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,iGAAiG;IACjG,MAAM,WAAW,GAAG,KAAK,EAAE,IAAY,EAAE,OAAgB,EAAmB,EAAE;QAC5E,IAAI,GAAuB,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,GAAG,GAAG,MAAM,CAAC,CAAC,IAAI,CAAS,aAAa,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YAC9E,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,CAAC,CAAC,YAAY,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;oBAAE,MAAM,CAAC,CAAC,CAAC,iDAAiD;YACvH,CAAC;QACH,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ;YAAE,OAAO,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACvH,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,CAA0D,cAAc,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1J,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,GAAI,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,GAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QAC9L,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACjE,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7L,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,yBAAyB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;IAClL,CAAC,CAAC;IACF,GAAG,CACD,iBAAiB,EACjB;QACE,WAAW,EACT,kZAAkZ;QACpZ,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YACvE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;YACxG,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8FAA8F,CAAC;SACxI,CAAC;KACH,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAClC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC;QACrD,IAAI,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACvC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAClJ,IAAI,GAAG,CAAC,MAAM;YAAE,OAAO,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChE,IAAI,GAAG,CAAC,QAAQ;YAAE,OAAO,GAAG,IAAI,2BAA2B,GAAG,CAAC,IAAI,2HAA2H,CAAC;QAC/L,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACxI,IAAI,CAAC,GAAG;gBAAE,OAAO,GAAG,IAAI,mBAAmB,MAAM,IAAI,CAAC;YACtD,OAAO,GAAG,IAAI,KAAK,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QACvE,CAAC;QACD,OAAO,GAAG,IAAI,KAAK,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IACtE,CAAC,CAAC,CACL,CAAC;IAEF,2EAA2E;IAE3E,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClF,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3D,CAAC,CAAC;IAEF,GAAG,CACD,YAAY,EACZ;QACE,WAAW,EACT,sOAAsO;QACxO,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,mBAAmB,EAAE,wBAAwB,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;KAC5G,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CACjB,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;QACxH,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,EAAE,CAAC,CAAC;QAC5D,OAAO,eAAe,IAAI,YAAY,EAAE,CAAC,OAAO,CAAC,MAAM,YAAY,CAAC;IACtE,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,aAAa,EACb;QACE,WAAW,EACT,qOAAqO;QACvO,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;KAClF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CACxB,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;QAClB,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,IAAI,eAAe,CAAC;QACtC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,kBAAkB,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,iBAAiB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAChH,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC;QAC1C,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACnD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC;YACjE,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,CAAC;YAC1D,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG;gBAAE,OAAO,cAAc,IAAI,gBAAgB,IAAI,IAAI,CAAC;YACpE,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,IAAI,IAAI,GAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,WAAW,IAAI,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YACxH,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI;gBAC3B,CAAC,aAAa,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,CAAC;gBACnD,CAAC,gBAAgB,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,CAAC;aACpD,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,aAAa,CAAC,EAAE,IAAI,EAAE,CAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;gBAChH,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC;oBAAE,SAAS;gBAC7C,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,EAAE,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC9C,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,qBAAqB,IAAI,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC;QACrE,MAAM,MAAM,GAAG,CAAC,CAAmC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO;YACL,GAAG,OAAO,CAAC,MAAM,qBAAqB,IAAI,MAAM,EAAE,CAAC,EAAE,IAAI;YACzD,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACnB,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC7E,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,eAAe,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,kBAAkB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3K,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,MAAM,EAAE,CAAC;YAClD,CAAC,CAAC;YACF,iEAAiE;SAClE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CACL,CAAC;IAEF,GAAG,CACD,eAAe,EACf;QACE,WAAW,EACT,gPAAgP;QAClP,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;KACpE,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,eAAe,CAAC,CAAC,CACvF,CAAC;IAEF,GAAG,CACD,MAAM,EACN;QACE,WAAW,EAAE,oKAAoK;QACjL,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,2CAA2C,CAAC,EAAE,CAAC;KACzH,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC,CACF,CAAC;IAEF,GAAG,CACD,gBAAgB,EAChB;QACE,WAAW,EAAE,gMAAgM;QAC7M,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;KAC1B,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,sDAAsD,EAAE,IAAI,CAAC,CAAC;QAC3F,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC,4DAA4D,GAAG,CAAC,MAAM,CAAC,GAAG,+CAA+C,CAAC,CAAC;IACzI,CAAC,CACF,CAAC;IAEF,kBAAkB,CAAC,GAAG,EAAE;QACtB,GAAG;QACH,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;QACzB,aAAa,EAAE,KAAK,IAAI,EAAE;YACxB,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAA+B,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAClH,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACvC,CAAC;KACF,CAAC,CAAC;IAEH,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAe,EAAE,IAAY,EAAE,IAAY;IAC5E,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrE,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClF,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;IACtB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;IACjC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;IACrB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;QAC7B,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAwB,QAAQ,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAChG,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,IAAI,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAC7G,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,gBAAgB,IAAI,IAAI,CAAC,CAAC;IAC5F,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAU,CAAC,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAU,CAAC,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,CAAU,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnJ,0EAA0E;IAC1E,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAClE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,CAAC;YAAE,SAAS;QAC7F,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,wEAAwE;IACxE,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7F,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,CAAC;IAC1F,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAAE,SAAS,CAAC,sCAAsC;QAC5F,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;YAC3B,wFAAwF;YACxF,IAAI,CAAC,CAAC,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,0CAA0C,IAAI,2FAA2F,CAAC,CAAC;YAChL,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3F,MAAM,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YAC/F,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,mCAAmC,CAAC,CAAC;YAClE,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC1B,kDAAkD;YACpD,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC3F,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;gBACtD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC1F,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE;oBAC5B,MAAM;oBACN,IAAI;oBACJ,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,WAAW,EAAE,MAAM,CAAC,UAAU;oBAC9B,QAAQ,EAAE,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;oBAC9C,eAAe,EAAE,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;oBACxD,WAAW,EAAE,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;oBAC5D,cAAc,EAAE,CAAC,CAAC,cAAc;oBAChC,IAAI,EAAE,KAAK;iBACZ,CAAC,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjC,SAAS;YACX,CAAC;QACH,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,SAAS;QAClC,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACpE,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,WAAW,CAAC;YAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;QAC5G,IAAI,CAAC,CAAC,cAAc,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,GAAG,EAAE,cAAc,CAAC;YAAE,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,CAAC;QAC3H,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;YAAE,SAAS;QAClF,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,GAAG,IAAI,6BAA6B,IAAI,IAAI,CAAC;IACtE,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,MAAM,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7B,KAAK,GAAG,iBAAiB,CAAC;IAC5B,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC3C,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,YAAY,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;AACjF,CAAC"}
|
package/dist/viewer.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AppContext } from "./tools.js";
|
|
2
|
+
/** Tools the viewer page may call: the panel's reads and the user's actions. */
|
|
3
|
+
export declare function viewerMayCall(name: string): boolean;
|
|
4
|
+
export interface Viewer {
|
|
5
|
+
url: string;
|
|
6
|
+
/** Open the viewer in the default browser (once per process unless forced). */
|
|
7
|
+
open(force?: boolean): boolean;
|
|
8
|
+
close(): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export declare function startViewer(ctx: AppContext, o?: {
|
|
11
|
+
port?: number;
|
|
12
|
+
log?: (m: string) => void;
|
|
13
|
+
openBrowser?: (url: string) => void;
|
|
14
|
+
}): Promise<Viewer>;
|
package/dist/viewer.js
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The browser viewer: the live panel in an ordinary browser window, served by
|
|
3
|
+
* this MCP server on 127.0.0.1. For chats that can't show MCP Apps inline
|
|
4
|
+
* (and for a second screen). The page talks to an in-process MCP connection
|
|
5
|
+
* that shares the server's context, so it sees exactly what Claude's tools do.
|
|
6
|
+
*
|
|
7
|
+
* Only the panel's own tools are reachable (open/get_ and ui_ ones), and every
|
|
8
|
+
* request needs the random token that is in the URL.
|
|
9
|
+
*/
|
|
10
|
+
import { spawn } from "node:child_process";
|
|
11
|
+
import { randomUUID } from "node:crypto";
|
|
12
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
13
|
+
import http from "node:http";
|
|
14
|
+
import { dirname, join } from "node:path";
|
|
15
|
+
import { fileURLToPath } from "node:url";
|
|
16
|
+
import { Client } from "@modelcontextprotocol/client";
|
|
17
|
+
import { InMemoryTransport } from "@modelcontextprotocol/server";
|
|
18
|
+
import { RESOURCE_MIME_TYPE } from "@modelcontextprotocol/ext-apps/server";
|
|
19
|
+
import { createServer } from "./server.js";
|
|
20
|
+
import { panelHtml, VIEWER_CLIENT } from "./panel.js";
|
|
21
|
+
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
22
|
+
function viewerHtml() {
|
|
23
|
+
for (const p of [join(HERE, "panel", "viewer.html"), join(HERE, "..", "dist", "panel", "viewer.html"), join(HERE, "..", "..", "dist", "panel", "viewer.html")]) {
|
|
24
|
+
if (existsSync(p))
|
|
25
|
+
return readFileSync(p, "utf8");
|
|
26
|
+
}
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
/** Tools the viewer page may call: the panel's reads and the user's actions. */
|
|
30
|
+
export function viewerMayCall(name) {
|
|
31
|
+
return /^(get_[a-z_]+|ui_[a-z_]+)$/.test(name);
|
|
32
|
+
}
|
|
33
|
+
export async function startViewer(ctx, o = {}) {
|
|
34
|
+
const token = randomUUID();
|
|
35
|
+
const server = createServer(ctx);
|
|
36
|
+
const [a, b] = InMemoryTransport.createLinkedPair();
|
|
37
|
+
await server.connect(a);
|
|
38
|
+
const client = new Client({ name: VIEWER_CLIENT, version: "1" }, { capabilities: { extensions: { "io.modelcontextprotocol/ui": { mimeTypes: [RESOURCE_MIME_TYPE] } } } });
|
|
39
|
+
await client.connect(b);
|
|
40
|
+
const body = (req) => new Promise((res, rej) => {
|
|
41
|
+
let s = "";
|
|
42
|
+
req.on("data", (d) => {
|
|
43
|
+
s += d;
|
|
44
|
+
if (s.length > 1_000_000)
|
|
45
|
+
rej(new Error("too large"));
|
|
46
|
+
});
|
|
47
|
+
req.on("end", () => res(s));
|
|
48
|
+
req.on("error", rej);
|
|
49
|
+
});
|
|
50
|
+
const httpServer = http.createServer(async (req, res) => {
|
|
51
|
+
try {
|
|
52
|
+
const u = new URL(req.url ?? "/", "http://127.0.0.1");
|
|
53
|
+
const send = (status, type, text) => {
|
|
54
|
+
res.writeHead(status, { "content-type": type, "cache-control": "no-store", "x-content-type-options": "nosniff", "referrer-policy": "no-referrer" });
|
|
55
|
+
res.end(text);
|
|
56
|
+
};
|
|
57
|
+
if (req.method === "GET" && u.pathname === "/") {
|
|
58
|
+
if (u.searchParams.get("t") !== token)
|
|
59
|
+
return send(403, "text/plain; charset=utf-8", "This link is out of date. Ask Claude to open the workspace again.");
|
|
60
|
+
const html = viewerHtml();
|
|
61
|
+
return html ? send(200, "text/html; charset=utf-8", html) : send(500, "text/plain", "The viewer is not built. Run npm run build.");
|
|
62
|
+
}
|
|
63
|
+
if (req.method === "GET" && u.pathname === "/panel.html") {
|
|
64
|
+
if (u.searchParams.get("t") !== token)
|
|
65
|
+
return send(403, "text/plain", "forbidden");
|
|
66
|
+
return send(200, "text/html; charset=utf-8", panelHtml());
|
|
67
|
+
}
|
|
68
|
+
if (req.method === "POST" && u.pathname === "/call") {
|
|
69
|
+
// A custom header forces a CORS preflight, which this server never grants,
|
|
70
|
+
// so other web pages can't call in even if they guess the port.
|
|
71
|
+
if (req.headers["x-viewer-token"] !== token)
|
|
72
|
+
return send(403, "text/plain", "forbidden");
|
|
73
|
+
const { name, arguments: args } = JSON.parse(await body(req));
|
|
74
|
+
if (!viewerMayCall(String(name)))
|
|
75
|
+
return send(403, "text/plain", `the viewer may not call ${name}`);
|
|
76
|
+
const r = await client.callTool({ name, arguments: args ?? {} });
|
|
77
|
+
return send(200, "application/json", JSON.stringify(r));
|
|
78
|
+
}
|
|
79
|
+
send(404, "text/plain", "not found");
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
res.writeHead(500, { "content-type": "text/plain" });
|
|
83
|
+
res.end(e.message);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
// Prefer a stable port so a bookmarked tab keeps working; fall back to the next free ones.
|
|
87
|
+
const base = o.port ?? 5180;
|
|
88
|
+
const port = await new Promise((resolve, reject) => {
|
|
89
|
+
const tryPort = (p) => {
|
|
90
|
+
httpServer.once("error", (e) => {
|
|
91
|
+
if (e.code === "EADDRINUSE" && p < base + 20 && base !== 0)
|
|
92
|
+
tryPort(p + 1);
|
|
93
|
+
else
|
|
94
|
+
reject(e);
|
|
95
|
+
});
|
|
96
|
+
httpServer.listen(p, "127.0.0.1", () => resolve(httpServer.address().port));
|
|
97
|
+
};
|
|
98
|
+
tryPort(base);
|
|
99
|
+
});
|
|
100
|
+
const url = `http://127.0.0.1:${port}/?t=${token}`;
|
|
101
|
+
o.log?.(`viewer on http://127.0.0.1:${port}/`);
|
|
102
|
+
let opened = false;
|
|
103
|
+
const openBrowser = o.openBrowser ??
|
|
104
|
+
((target) => {
|
|
105
|
+
const cmd = process.platform === "win32" ? ["cmd", ["/c", "start", '""', `"${target}"`]] : process.platform === "darwin" ? ["open", [target]] : ["xdg-open", [target]];
|
|
106
|
+
const child = spawn(cmd[0], cmd[1], { detached: true, stdio: "ignore", windowsVerbatimArguments: process.platform === "win32" });
|
|
107
|
+
child.on("error", (e) => o.log?.(`could not open the browser: ${e.message}`));
|
|
108
|
+
child.unref();
|
|
109
|
+
});
|
|
110
|
+
return {
|
|
111
|
+
url,
|
|
112
|
+
open(force = false) {
|
|
113
|
+
if (opened && !force)
|
|
114
|
+
return false;
|
|
115
|
+
opened = true;
|
|
116
|
+
openBrowser(url);
|
|
117
|
+
return true;
|
|
118
|
+
},
|
|
119
|
+
async close() {
|
|
120
|
+
await new Promise((r) => httpServer.close(() => r()));
|
|
121
|
+
await client.close().catch(() => undefined);
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=viewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewer.js","sourceRoot":"","sources":["../src/viewer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,28 +1,43 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codesys/mcp-toolkit",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.0.0-alpha.0",
|
|
4
|
+
"description": "MCP server for CODESYS V3.5: read, write and compile Structured Text through a persistent CODESYS session",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"main": "dist/server.js",
|
|
6
7
|
"bin": {
|
|
7
|
-
"codesys-mcp-tool": "
|
|
8
|
+
"codesys-mcp-tool": "dist/cli.js"
|
|
8
9
|
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/",
|
|
12
|
+
"watcher/",
|
|
13
|
+
"README.md",
|
|
14
|
+
"LICENSE",
|
|
15
|
+
"CHANGELOG.md"
|
|
16
|
+
],
|
|
9
17
|
"scripts": {
|
|
10
|
-
"
|
|
11
|
-
"build": "tsc && node scripts/build.
|
|
12
|
-
"
|
|
18
|
+
"clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
19
|
+
"build": "npm run clean && tsc -p tsconfig.json && node scripts/build-panel.mjs",
|
|
20
|
+
"typecheck": "tsc -p tsconfig.json --noEmit && tsc -p panel/tsconfig.json",
|
|
21
|
+
"test": "vitest run",
|
|
22
|
+
"test:live": "vitest run test/live",
|
|
23
|
+
"start": "node dist/cli.js",
|
|
24
|
+
"build:panel": "node scripts/build-panel.mjs",
|
|
13
25
|
"prepublishOnly": "npm run build"
|
|
14
26
|
},
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public",
|
|
29
|
+
"tag": "next"
|
|
30
|
+
},
|
|
15
31
|
"keywords": [
|
|
16
32
|
"codesys",
|
|
17
33
|
"mcp",
|
|
18
34
|
"modelcontextprotocol",
|
|
19
35
|
"plc",
|
|
20
|
-
"
|
|
21
|
-
"
|
|
36
|
+
"iec-61131-3",
|
|
37
|
+
"structured-text"
|
|
22
38
|
],
|
|
23
|
-
"author": "
|
|
39
|
+
"author": "Johannes Pettersson",
|
|
24
40
|
"license": "MIT",
|
|
25
|
-
"type": "commonjs",
|
|
26
41
|
"repository": {
|
|
27
42
|
"type": "git",
|
|
28
43
|
"url": "git+https://github.com/johannesPettersson80/codesys-mcp-toolkit.git"
|
|
@@ -32,20 +47,21 @@
|
|
|
32
47
|
"url": "https://github.com/johannesPettersson80/codesys-mcp-toolkit/issues"
|
|
33
48
|
},
|
|
34
49
|
"engines": {
|
|
35
|
-
"node": ">=
|
|
50
|
+
"node": ">=20.0.0"
|
|
36
51
|
},
|
|
52
|
+
"os": [
|
|
53
|
+
"win32"
|
|
54
|
+
],
|
|
37
55
|
"dependencies": {
|
|
38
|
-
"@modelcontextprotocol/
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"uuid": "^9.0.0",
|
|
42
|
-
"yargs": "^17.7.2",
|
|
43
|
-
"zod": "^3.24.3"
|
|
56
|
+
"@modelcontextprotocol/ext-apps": "^2.0.4",
|
|
57
|
+
"@modelcontextprotocol/server": "^2.4.0",
|
|
58
|
+
"zod": "^4.2.0"
|
|
44
59
|
},
|
|
45
60
|
"devDependencies": {
|
|
46
|
-
"@
|
|
47
|
-
"@types/
|
|
48
|
-
"
|
|
49
|
-
"typescript": "^
|
|
61
|
+
"@modelcontextprotocol/client": "^2.4.0",
|
|
62
|
+
"@types/node": "^22.0.0",
|
|
63
|
+
"esbuild": "^0.28.2",
|
|
64
|
+
"typescript": "^7.0.2",
|
|
65
|
+
"vitest": "^5.1.0"
|
|
50
66
|
}
|
|
51
67
|
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Python 2.7 (IronPython, inside CODESYS) / Python 3 (tests) compatibility.
|
|
3
|
+
# Keep this file ASCII-only.
|
|
4
|
+
from __future__ import print_function
|
|
5
|
+
|
|
6
|
+
import codecs
|
|
7
|
+
import json
|
|
8
|
+
import os
|
|
9
|
+
import sys
|
|
10
|
+
import time
|
|
11
|
+
|
|
12
|
+
PY2 = sys.version_info[0] == 2
|
|
13
|
+
|
|
14
|
+
if PY2:
|
|
15
|
+
text_type = unicode # noqa: F821
|
|
16
|
+
string_types = (str, unicode) # noqa: F821
|
|
17
|
+
else:
|
|
18
|
+
text_type = str
|
|
19
|
+
string_types = (str,)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def to_text(value):
|
|
23
|
+
"""Best-effort conversion of anything (including .NET strings/enums) to text."""
|
|
24
|
+
if value is None:
|
|
25
|
+
return None
|
|
26
|
+
if isinstance(value, text_type):
|
|
27
|
+
return value
|
|
28
|
+
if PY2 and isinstance(value, str):
|
|
29
|
+
for enc in ("utf-8", "mbcs", "latin-1"):
|
|
30
|
+
try:
|
|
31
|
+
return value.decode(enc)
|
|
32
|
+
except Exception:
|
|
33
|
+
continue
|
|
34
|
+
try:
|
|
35
|
+
return text_type(value)
|
|
36
|
+
except Exception:
|
|
37
|
+
return repr(value)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def read_json(path):
|
|
41
|
+
f = codecs.open(path, "r", "utf-8-sig")
|
|
42
|
+
try:
|
|
43
|
+
return json.loads(f.read())
|
|
44
|
+
finally:
|
|
45
|
+
f.close()
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def _replace(src, dst):
|
|
49
|
+
if hasattr(os, "replace"):
|
|
50
|
+
os.replace(src, dst)
|
|
51
|
+
return
|
|
52
|
+
try:
|
|
53
|
+
import System.IO # IronPython
|
|
54
|
+
if System.IO.File.Exists(dst):
|
|
55
|
+
System.IO.File.Replace(src, dst, None)
|
|
56
|
+
else:
|
|
57
|
+
System.IO.File.Move(src, dst)
|
|
58
|
+
return
|
|
59
|
+
except ImportError:
|
|
60
|
+
pass
|
|
61
|
+
if os.path.exists(dst):
|
|
62
|
+
os.remove(dst)
|
|
63
|
+
os.rename(src, dst)
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
FS_RETRY_S = 3.0
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def retry_fs(fn, *args):
|
|
70
|
+
"""Run a file operation, retrying while Windows reports the file as in use.
|
|
71
|
+
|
|
72
|
+
On Windows, replacing or removing a file fails with "access denied" (WinError 5,
|
|
73
|
+
or IOException in .NET) while another process holds it open: the server polling
|
|
74
|
+
heartbeat.json, an antivirus scan, the search indexer. That lasts milliseconds,
|
|
75
|
+
so retry for up to FS_RETRY_S before giving up and raising the last error.
|
|
76
|
+
"""
|
|
77
|
+
deadline = time.time() + FS_RETRY_S
|
|
78
|
+
delay = 0.005
|
|
79
|
+
while True:
|
|
80
|
+
try:
|
|
81
|
+
return fn(*args)
|
|
82
|
+
except Exception:
|
|
83
|
+
if time.time() + delay > deadline:
|
|
84
|
+
raise
|
|
85
|
+
time.sleep(delay)
|
|
86
|
+
delay = min(delay * 2, 0.1)
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def write_json_atomic(path, obj):
|
|
90
|
+
tmp = path + ".tmp"
|
|
91
|
+
data = json.dumps(obj, ensure_ascii=False, indent=None, separators=(",", ":"))
|
|
92
|
+
f = retry_fs(codecs.open, tmp, "w", "utf-8")
|
|
93
|
+
try:
|
|
94
|
+
f.write(to_text(data))
|
|
95
|
+
finally:
|
|
96
|
+
f.close()
|
|
97
|
+
retry_fs(_replace, tmp, path)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def remove_file(path):
|
|
101
|
+
retry_fs(os.remove, path)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def current_pid():
|
|
105
|
+
try:
|
|
106
|
+
import System.Diagnostics # IronPython
|
|
107
|
+
return int(System.Diagnostics.Process.GetCurrentProcess().Id)
|
|
108
|
+
except ImportError:
|
|
109
|
+
return os.getpid()
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def pid_alive(pid):
|
|
113
|
+
if not pid:
|
|
114
|
+
return True
|
|
115
|
+
try:
|
|
116
|
+
import System.Diagnostics # IronPython
|
|
117
|
+
try:
|
|
118
|
+
p = System.Diagnostics.Process.GetProcessById(int(pid))
|
|
119
|
+
return not p.HasExited
|
|
120
|
+
except Exception:
|
|
121
|
+
return False
|
|
122
|
+
except ImportError:
|
|
123
|
+
pass
|
|
124
|
+
if os.name == "nt":
|
|
125
|
+
import ctypes
|
|
126
|
+
PROCESS_QUERY_LIMITED_INFORMATION = 0x1000
|
|
127
|
+
STILL_ACTIVE = 259
|
|
128
|
+
k32 = ctypes.windll.kernel32
|
|
129
|
+
h = k32.OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, False, int(pid))
|
|
130
|
+
if not h:
|
|
131
|
+
return False
|
|
132
|
+
try:
|
|
133
|
+
code = ctypes.c_ulong()
|
|
134
|
+
if not k32.GetExitCodeProcess(h, ctypes.byref(code)):
|
|
135
|
+
return False
|
|
136
|
+
return code.value == STILL_ACTIVE
|
|
137
|
+
finally:
|
|
138
|
+
k32.CloseHandle(h)
|
|
139
|
+
try:
|
|
140
|
+
os.kill(int(pid), 0)
|
|
141
|
+
return True
|
|
142
|
+
except OSError:
|
|
143
|
+
return False
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def now():
|
|
147
|
+
return time.time()
|